PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJmciIgeG1sOmxhbmc9ImZyIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5Db21waWxhdGlvbiBldCBpbnN0YWxsYXRpb24gLSBTZXJ2ZXVyIEFwYWNoZSBIVFRQIFZlcnNpb24gMi41PC90aXRsZT4KPGxpbmsgaHJlZj0iLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keSBpZD0ibWFudWFsLXBhZ2UiPjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuL21vZC9xdWlja3JlZmVyZW5jZS5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FpcmU8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlBsYW4gZHUgc2l0ZTwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPlNlcnZldXIgQXBhY2hlIEhUVFAgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+U2VydmV1ciBIVFRQPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5WZXJzaW9uIDIuNTwvYT48L2Rpdj48ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPjxkaXYgaWQ9InByZWFtYmxlIj48aDE+Q29tcGlsYXRpb24gZXQgaW5zdGFsbGF0aW9uPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkxhbmd1ZXMgRGlzcG9uaWJsZXM6IDwvc3Bhbj48YSBocmVmPSIuL2RlL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vaW5zdGFsbC5odG1sIiBocmVmbGFuZz0iZW4iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9lcy9pbnN0YWxsLmh0bWwiIGhyZWZsYW5nPSJlcyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFc3Bh8W9sIj4mbmJzcDtlcyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2ZyL2luc3RhbGwuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2tvL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi90ci9pbnN0YWxsLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+CgoKICAgIDxwPkNlIGRvY3VtZW50IGNvdXZyZSBsJ2luc3RhbGxhdGlvbiBldCBsYSBjb21waWxhdGlvbiBkdSBzZXJ2ZXVyCiAgICBIVFRQIEFwYWNoZQogICAgc3VyIGxlcyBzeXN06G1lcyBVbml4IGV0IHNpbWlsYWlyZXMgc2V1bGVtZW50LiBQb3VyIGxhIGNvbXBpbGF0aW9uIGV0CiAgICBsJ2luc3RhbGxhdGlvbiBzb3VzIFdpbmRvd3MsIHZvaXIgPGEgaHJlZj0icGxhdGZvcm0vd2luZG93cy5odG1sIj5VdGlsaXNlciBsZSBzZXJ2ZXVyIEhUVFAgQXBhY2hlIGF2ZWMgTWljcm9zb2Z0CiAgICBXaW5kb3dzPC9hPiBldCA8YSBocmVmPSJwbGF0Zm9ybS93aW5fY29tcGlsaW5nLmh0bWwiPkNvbXBpbGF0aW9uCiAgICBkJ0FwYWNoZSBzb3VzIE1pY3Jvc29mdCBXaW5kb3dzPC9hPi4gUG91ciBsZXMgYXV0cmVzIHBsYXRlZm9ybWVzLCBzZQogICAgculm6XJlciDgIGxhIGRvY3VtZW50YXRpb24gcGFyCiAgICAgPGEgaHJlZj0icGxhdGZvcm0vIj5wbGF0ZWZvcm1lPC9hPi48L3A+CgogICAgPHA+QXBhY2hlIGh0dHBkIHV0aWxpc2UgPGNvZGU+bGlidG9vbDwvY29kZT4gZXQgPGNvZGU+YXV0b2NvbmY8L2NvZGU+CiAgICBhZmluIGRlIGNy6WVyIHVuIGVudmlyb25uZW1lbnQgZGUgY29uc3RydWN0aW9uIHNpbWlsYWlyZSDgIGxhIHBsdXBhcnQKICAgIGRlcyBwcm9qZXRzIE9wZW4gU291cmNlIC48L3A+CgogICAgPHA+U2kgdm91cyBlZmZlY3R1ZXogdW5lIG1pc2Ug4CBqb3VyIGRlcHVpcyB1bmUgdmVyc2lvbiBtaW5ldXJlIHZlcnMKICAgIGxhIHN1aXZhbnRlIChwYXIgZXhlbXBsZSwgMi40Ljgg4CAyLjQuOSksIHZldWlsbGV6IHBhc3NlciDgIGxhIHNlY3Rpb24KICAgIDxhIGhyZWY9IiN1cGdyYWRpbmciPm1pc2Ug4CBqb3VyPC9hPi48L3A+Cgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48dWwgaWQ9InRvYyI+PGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvdmVydmlldyI+QXBlcud1IHBvdXIgbGVzIHBsdXMgcHJlc3PpczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlcXVpcmVtZW50cyI+UHLpcmVxdWlzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZG93bmxvYWQiPlTpbOljaGFyZ2VtZW50PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZXh0cmFjdCI+RXh0cmFjdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbmZpZ3VyZSI+Q29uZmlndXJhdGlvbiBkZSBsJ2FyYm9yZXNjZW5jZSBkZXMgc291cmNlczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbXBpbGUiPkNvbnN0cnVjdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2luc3RhbGwiPkluc3RhbGxhdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2N1c3RvbWl6ZSI+UGVyc29ubmFsaXNhdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Rlc3QiPlRlc3Q8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN1cGdyYWRpbmciPk1pc2Ug4CBqb3VyPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdGhpcmRwIj5QYXF1ZXRzIHRpZXJzPC9hPjwvbGk+CjwvdWw+PGgzPlZvaXIgYXVzc2k8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9InByb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5Db25maWd1cmF0aW9uIGRlIGwnYXJib3Jlc2NlbmNlCglkZXMgc291cmNlczwvYT48L2xpPjxsaT48YSBocmVmPSJpbnZva2luZy5odG1sIj5E6W1hcnJlciBBcGFjaGUgaHR0cGQ8L2E+PC9saT48bGk+PGEgaHJlZj0ic3RvcHBpbmcuaHRtbCI+QXJy6nQgZXQgcmVk6W1hcnJhZ2U8L2E+PC9saT48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3ZlcnZpZXciIGlkPSJvdmVydmlldyI+QXBlcud1IHBvdXIgbGVzIHBsdXMgcHJlc3PpczwvYT48L2gyPgoKICAgIDx0YWJsZT4KICAgICAgCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGEgaHJlZj0iI2Rvd25sb2FkIj5U6WzpY2hhcmdlbWVudDwvYT48L3RkPgoKICAgICAgICA8dGQ+PGNvZGU+JCBseW54IGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2Rvd25sb2FkLmNnaTwvY29kZT4KICAgICAgICA8L3RkPgogICAgICA8L3RyPgoKICAgICAgPHRyPgogICAgICAgIDx0ZD48YSBocmVmPSIjZXh0cmFjdCI+RXh0cmFjdGlvbjwvYT48L3RkPgoKICAgICAgICA8dGQ+PGNvZGU+JCBnemlwIC1kIGh0dHBkLTxlbT5OTjwvZW0+LnRhci5nejxiciAvPgogICAgICAgICAkIHRhciB4dmYgaHR0cGQtPGVtPk5OPC9lbT4udGFyPGJyIC8+CiAgICAgICAgICQgY2QgaHR0cGQtPGVtPk5OPC9lbT48L2NvZGU+PC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGEgaHJlZj0iI2NvbmZpZ3VyZSI+Q29uZmlndXJhdGlvbjwvYT48L3RkPgoKICAgICAgICA8dGQ+PGNvZGU+JCAuL2NvbmZpZ3VyZSAtLXByZWZpeD08ZW0+UFJFRklYPC9lbT48L2NvZGU+CiAgICAgICAgPC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGEgaHJlZj0iI2NvbXBpbGUiPkNvbXBpbGF0aW9uPC9hPjwvdGQ+CgogICAgICAgIDx0ZD48Y29kZT4kIG1ha2U8L2NvZGU+IDwvdGQ+CiAgICAgIDwvdHI+CgogICAgICA8dHI+CiAgICAgICAgPHRkPjxhIGhyZWY9IiNpbnN0YWxsIj5JbnN0YWxsYXRpb248L2E+PC90ZD4KCiAgICAgICAgPHRkPjxjb2RlPiQgbWFrZSBpbnN0YWxsPC9jb2RlPiA8L3RkPgogICAgICA8L3RyPgoKICAgICAgPHRyPgogICAgICAgIDx0ZD48YSBocmVmPSIjY3VzdG9taXplIj5QZXJzb25uYWxpc2F0aW9uPC9hPjwvdGQ+CgogICAgICAgIDx0ZD48Y29kZT4kIHZpIDxlbT5QUkVGSVg8L2VtPi9jb25mL2h0dHBkLmNvbmY8L2NvZGU+IDwvdGQ+CiAgICAgIDwvdHI+CgogICAgICA8dHI+CiAgICAgICAgPHRkPjxhIGhyZWY9IiN0ZXN0Ij5UZXN0PC9hPjwvdGQ+CgogICAgICAgIDx0ZD48Y29kZT4kIDxlbT5QUkVGSVg8L2VtPi9iaW4vYXBhY2hlY3RsIC1rIHN0YXJ0PC9jb2RlPgogICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CiAgICA8L3RhYmxlPgoKICAgIDxwPjxlbT5OTjwvZW0+IGRvaXQg6nRyZSByZW1wbGFj6SBwYXIgbGUgbnVt6XJvIGRlIHZlcnNpb24gY291cmFudCwKICAgIGV0IDxlbT5QUkVGSVg8L2VtPiBwYXIgbGUKICAgIGNoZW1pbiBkdSBy6XBlcnRvaXJlIGQnaW5zdGFsbGF0aW9uLiBTaQogICAgPGVtPlBSRUZJWDwvZW0+IG4nZXN0IHBhcyBzcOljaWZp6SwgbGUgY2hlbWluIGR1IHLpcGVydG9pcmUKICAgIGQnaW5zdGFsbGF0aW9uIHByZW5kcmEgc2EgdmFsZXVyIHBhciBk6WZhdXQsIOAgc2F2b2lyCiAgICA8Y29kZT4vdXNyL2xvY2FsL2FwYWNoZTI8L2NvZGU+LjwvcD4KCiAgICA8cD5DaGFxdWUg6XRhcGUgZHUgcHJvY2Vzc3VzIGRlIGNvbXBpbGF0aW9uIGV0IGQnaW5zdGFsbGF0aW9uIGVzdAogICAgZOljcml0ZSBwbHVzIGVuIGTpdGFpbHMgY2ktZGVzc291cywg4CBjb21tZW5jZXIgcGFyIGxlcyBwculyZXF1aXMKICAgIHBvdXIgY29tcGlsZXIgZXQgaW5zdGFsbGVyIEFwYWNoZSBodHRwZC48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0icmVxdWlyZW1lbnRzIiBpZD0icmVxdWlyZW1lbnRzIj5QculyZXF1aXM8L2E+PC9oMj4KCiAgICA8cD5MZXMgcHLpcmVxdWlzIHBvdXIgbGEgY29uc3RydWN0aW9uIGQnQXBhY2hlIGh0dHBkIHNvbnQgbGVzIHN1aXZhbnRzOjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD5BUFIgZXQgQVBSLVV0aWw8L2R0PgogICAgICA8ZGQ+QVBSIGV0IEFQUi1VdGlsIGRvaXZlbnQg6nRyZSBk6WrgIGluc3RhbGzpcyBzdXIgdm90cmUgc3lzdOhtZS4KICAgICAgU2kgY2Ugbidlc3QgcGFzIGxlIGNhcywgb3Ugc2kgdm91cyBwculm6XJleiBuZSBwYXMgdXRpbGlzZXIgbGVzCiAgICAgIHZlcnNpb25zIGZvdXJuaWVzIHBhciBsZSBzeXN06G1lLCB06WzpY2hhcmdleiBsZXMgZGVybmnocmVzCiAgICAgIHZlcnNpb25zIGQnQVBSIGV0IEFQUi1VdGlsIGRlcHVpcyA8YSBocmVmPSJodHRwOi8vYXByLmFwYWNoZS5vcmcvIj5BcGFjaGUgQVBSPC9hPiwgZOljb21wcmVzc2V6LWxlcwogICAgICByZXNwZWN0aXZlbWVudCBkYW5zIDxjb2RlPi9yYWNpbmVfc291cmNlc19odHRwZC9zcmNsaWIvYXByPC9jb2RlPiBldAogICAgICA8Y29kZT4vcmFjaW5lX3NvdXJjZXNfaHR0cGQvc3JjbGliL2Fwci11dGlsPC9jb2RlPiAobGVzIG5vbXMgZGVzIHLpcGVydG9pcmVzIG5lCiAgICAgIGRvaXZlbnQgcGFzIGNvbXBvcnRlciBkZSBudW3pcm9zIGRlIHZlcnNpb25zIDsgcGFyIGV4ZW1wbGUsIGxhCiAgICAgIGRpc3RyaWJ1dGlvbiBkJ0FQUiBkb2l0IHNlIHRyb3V2ZXIgZGFucyAvcmFjaW5lX3NvdXJjZXNfaHR0cGQvc3JjbGliL2Fwci8pLCBldAogICAgICB1dGlsaXNleiBsJ29wdGlvbiA8Y29kZT4tLXdpdGgtaW5jbHVkZWQtYXByPC9jb2RlPiBkdSBzY3JpcHQKICAgICAgPGNvZGU+Li9jb25maWd1cmU8L2NvZGU+LiBTdXIgY2VydGFpbmVzIHBsYXRlZm9ybWVzLCB2b3VzIGRldnJlegogICAgICBwZXV0Lep0cmUgaW5zdGFsbGVyIGxlcyBwYXF1ZXRzIDxjb2RlPi1kZXY8L2NvZGU+IGNvcnJlc3BvbmRhbnRzCiAgICAgIHBvdXIgcGVybWV0dHJlIGxhIGNvbXBpbGF0aW9uIGRlIGh0dHBkIGF2ZWMgbGVzIHZlcnNpb25zCiAgICAgIGluc3RhbGzpZXMgZCdBUFIgZXQgQVBSLVV0aWwuPC9kZD4KCiAgICAgIDxkdD5CaWJsaW90aOhxdWUgZCdleHByZXNzaW9ucyByYXRpb25uZWxsZXMgY29tcGF0aWJsZXMgUGVybAogICAgICAoUENSRSk8L2R0PgogICAgICA8ZGQ+Q2V0dGUgYmlibGlvdGjocXVlIGVzdCBu6WNlc3NhaXJlIG1haXMgbidlc3QgcGx1cyBmb3VybmllIGF2ZWMgbGEKICAgICAgZGlzdHJpYnV0aW9uIGRlIGh0dHBkLiBU6WzpY2hhcmdleiBsZSBjb2RlIHNvdXJjZSBkZXB1aXMgPGEgaHJlZj0iaHR0cDovL3d3dy5wY3JlLm9yZy8iPmh0dHA6Ly93d3cucGNyZS5vcmc8L2E+IG91IGluc3RhbGxlegogICAgICB1biBwb3J0YWdlIGR1IHBhcXVldC4gU2kgdm90cmUgc3VpdGUgZGUgY29tcGlsYXRpb24gbmUgdHJvdXZlIHBhcwogICAgICBsZSBzY3JpcHQgcGNyZS1jb25maWcgaW5zdGFsbOkgYXUgY291cnMgZHUgcHJvY2Vzc3VzIGRlCiAgICAgIGNvbnN0cnVjdGlvbiBkZSBQQ1JFLCBpbmRpcXVleiBzb24gY2hlbWluIHZpYSBsJ29wdGlvbgogICAgICA8Y29kZT4tLXdpdGgtcGNyZTwvY29kZT4gZHUgc2NyaXB0IDxjb2RlPi4vY29uZmlndXJlPC9jb2RlPi4gU3VyCiAgICAgIGNlcnRhaW5lcyBwbGF0ZWZvcm1lcywgdm91cyBkZXZyZXoKICAgICAgcGV1dC3qdHJlIGluc3RhbGxlciBsZXMgcGFxdWV0cyA8Y29kZT4tZGV2PC9jb2RlPiBjb3JyZXNwb25kYW50cwogICAgICBwb3VyIHBlcm1ldHRyZSBsYSBjb21waWxhdGlvbiBkZSBodHRwZCBhdmVjIGxhIHZlcnNpb24KICAgICAgaW5zdGFsbOllIGRlIFBDUkUuPC9kZD4KCiAgICAgIDxkdD5Fc3BhY2UgZGlzcXVlPC9kdD4KICAgICAgPGRkPkFzc3VyZXotdm91cyBkJ2F2b2lyIGF1IG1vaW5zIDUwIE1vIGQnZXNwYWNlIGRpc3F1ZSBkaXNwb25pYmxlCiAgICAgIHRlbXBvcmFpcmUuIEFwcuhzIGwnaW5zdGFsbGF0aW9uIGxlIHNlcnZldXIgb2NjdXBlCiAgICAgIGFwcHJveGltYXRpdmVtZW50IDEwIE1vIGQnZXNwYWNlIGRpc3F1ZS4gTCdlc3BhY2UgZGlzcXVlIHLpZWxsZW1lbnQKICAgICAgbuljZXNzYWlyZSB2YSB2YXJpZXIgY29uc2lk6XJhYmxlbWVudCBlbiBmb25jdGlvbiBkZSB2b3Mgb3B0aW9ucwogICAgICBkZSBjb25maWd1cmF0aW9uLCBkZSBsYSBwculzZW5jZSDpdmVudHVlbGxlIGRlCiAgICAgIG1vZHVsZXMgdGllcnMsIGV0IGJpZW4gZW50ZW5kdSBkZSBsYSB0YWlsbGUgZGUgdm90cmUgc2l0ZSB3ZWIgZXQKICAgICAgZGVzIHNpdGVzIHF1ZSB2b3VzIGjpYmVyZ2V6IHN1ciB2b3RyZSBzZXJ2ZXVyLjwvZGQ+CgogICAgICA8ZHQ+Q29tcGlsYXRldXIgQU5TSS1DIGV0IHN5c3TobWUgZGUgY29uc3RydWN0aW9uPC9kdD4KICAgICAgPGRkPlZvdXMgZGV2ZXogZGlzcG9zZXIgZCd1biBjb21waWxhdGV1ciBBTlNJLUMuIExlIGNvbXBpbGF0ZXVyIDxhIGhyZWY9Imh0dHA6Ly9nY2MuZ251Lm9yZy8iPkdOVSBDIChHQ0MpPC9hPiBkZSBsYSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvIj5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEZTRik8L2E+CiAgICAgIGVzdCByZWNvbW1hbmTpLiBTaSB2b3VzIG5lIHBvc3PpZGV6IHBhcyBHQ0MsCiAgICAgIGFzc3VyZXotdm91cyBhdSBtb2lucyBxdWUgdm90cmUgY29tcGlsYXRldXIgc29pdCBjb21wYXRpYmxlIEFOU0kuCiAgICAgIEVuIG91dHJlLCB2b3RyZSA8Y29kZT5QQVRIPC9jb2RlPiBkb2l0IGNvbnRlbmlyCiAgICAgIGxlcyBvdXRpbHMgZGUgY29uc3RydWN0aW9uIGRlIGJhc2UgdGVscyBxdWUgPGNvZGU+bWFrZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD5Db25uYWlzc2FuY2UgZGUgbCdoZXVyZSBleGFjdGU8L2R0PgogICAgICA8ZGQ+TGVzIOls6W1lbnRzIGR1IHByb3RvY29sZSBIVFRQIGZvbnQgculm6XJlbmNlIOAgbCdoZXVyZSBkdSBqb3VyLgogICAgICBQYXIgY29uc+lxdWVudCwgaWwgZXN0IG7pY2Vzc2FpcmUgZCfpcXVpcGVyIHZvdHJlIHN5c3TobWUgZCd1bgogICAgICBkaXNwb3NpdGlmIGRlIHN5bmNocm9uaXNhdGlvbiBkdSB0ZW1wcy4gTGVzIHByb2dyYW1tZXMKICAgICAgPGNvZGU+bnRwZGF0ZTwvY29kZT4gb3UgPGNvZGU+eG50cGQ8L2NvZGU+LCBiYXPpcyBzdXIgbGUgcHJvdG9jb2xlIE5UUCwKICAgICAgc29udCBjb3VyYW1tZW50IHV0aWxpc+lzIOAgY2V0IGVmZmV0LgogICAgICBWb2lyIGxhIDxhIGhyZWY9Imh0dHA6Ly93d3cubnRwLm9yZyI+cGFnZSBkJ2FjY3VlaWwgZGUgTlRQPC9hPgogICAgICBwb3VyIHBsdXMgZGUgZOl0YWlscyDgIHByb3BvcyBkdSBsb2dpY2llbCBOVFAgZXQgZGVzIHNlcnZldXJzCiAgICAgIGRlIHRlbXBzIHB1YmxpY3MuPC9kZD4KCiAgICAgIDxkdD48YSBocmVmPSJodHRwOi8vd3d3LnBlcmwub3JnLyI+UGVybCA1PC9hPgogICAgICBbT1BUSU9OTkVMXTwvZHQ+CiAgICAgIDxkZD5MJ2ludGVycHLpdGV1ciBQZXJsIDUgKGxlcyB2ZXJzaW9ucyA1LjAwMyBvdSBzdXDpcmlldXJlcyBjb252aWVubmVudCkKICAgICAgZXN0IG7pY2Vzc2FpcmUgcG91ciBsJ2V46WN1dGlvbiBkZSBjZXJ0YWlucyBzY3JpcHRzIGNvbW1lCiAgICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2FweHMuaHRtbCI+YXB4czwvYT48L2NvZGU+IG91IDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2RibW1hbmFnZS5odG1sIj5kYm1tYW5hZ2U8L2E+PC9jb2RlPgogICAgICAocXVpIHNvbnQg6WNyaXRzIGVuIFBlcmwpLiAKICAgICAgU2kgbGUgc2NyaXB0IDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiBuZSB0cm91dmUgcGFzIGQnaW50ZXJwcul0ZXVyCiAgICAgIFBlcmwgNSwgdm91cyBuZSBwb3VycmV6IHBhcyB1dGlsaXNlciBsZXMgc2NyaXB0cyBxdWkgZW4gb250IGJlc29pbi4KICAgICAgQmllbiBlbnRlbmR1LCB2b3VzIHBvdXJyZXogdG91dCBkZSBt6m1lIGNvbnN0cnVpcmUgZXQgdXRpbGlzZXIKICAgICAgQXBhY2hlIGh0dHBkLjwvZGQ+CgogICAgPC9kbD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJkb3dubG9hZCIgaWQ9ImRvd25sb2FkIj5U6WzpY2hhcmdlbWVudDwvYT48L2gyPgoKICAgIDxwPkxlIHNlcnZldXIgSFRUUCBBcGFjaGUgcGV1dCDqdHJlIHTpbOljaGFyZ+kg4CBwYXJ0aXIgZHUKICAgIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2Rvd25sb2FkLmNnaSI+c2l0ZSBkZSB06WzpY2hhcmdlbWVudAogICAgZHUgc2VydmV1ciBIVFRQIEFwYWNoZTwvYT4sIHF1aSBmb3Vybml0IGxhIGxpc3RlIGRlIG5vbWJyZXV4IG1pcm9pcnMuCiAgICBJbCBzZXJhIHBsdXMgY29tbW9kZSDgIGxhIHBsdXBhcnQgZGVzIHV0aWxpc2F0ZXVycyBkJ0FwYWNoZSBzdXIgbGVzCiAgICBzeXN06G1lcyBVTklYIG91IHNpbWlsYWlyZXMgZGUgdOls6WNoYXJnZXIgZXQgZGUgY29tcGlsZXIKICAgIGxhIHZlcnNpb24gc291cmNlcy4gIExlIHByb2Nlc3N1cyBkZSBjb25zdHJ1Y3Rpb24gKGTpY3JpdCBjaS1kZXNzb3VzKSBlc3QKICAgIHNpbXBsZSwgZXQgdm91cyBwZXJtZXQgZGUgcGVyc29ubmFsaXNlciB2b3RyZSBzZXJ2ZXVyIHNlbG9uIHZvcyBiZXNvaW5zLgogICAgRW4gb3V0cmUsIGxlcyB2ZXJzaW9ucyBiaW5haXJlcyBzb250IHNvdXZlbnQgcGx1cyBhbmNpZW5uZXMgcXVlIGxlcwogICAgZGVybmnocmVzIHZlcnNpb25zIHNvdXJjZXMuIFNpIHZvdXMgdOls6WNoYXJnZXogdW5lIHZlcnNpb24gYmluYWlyZSwKICAgIHN1aXZleiBsZXMgaW5zdHJ1Y3Rpb25zIGTpY3JpdGVzIGRhbnMgbGUgZmljaGllcgogICAgPGNvZGU+SU5TVEFMTC5iaW5kaXN0PC9jb2RlPiBpbmNsdXMgZGFucyBsYSBkaXN0cmlidXRpb24uPC9wPgoKICAgIDxwPkFwcuhzIGxlIHTpbOljaGFyZ2VtZW50LCBpbCBlc3QgaW1wb3J0YW50IGRlIHbpcmlmaWVyIHF1ZSB2b3VzCiAgICBkaXNwb3NleiBkJ3VuZSB2ZXJzaW9uIGNvbXBs6HRlIGV0IG5vbiBtb2RpZmnpZSBkdSBzZXJ2ZXVyIEhUVFAgQXBhY2hlLgogICAgVm91cyBwb3V2ZXogbGUgZmFpcmUgZW4gdGVzdGFudCBsJ2FyY2hpdmUgdOls6WNoYXJn6WUg4CBsJ2FpZGUgZGUKICAgIGxhIHNpZ25hdHVyZSBQR1AuIFZvdXMgdHJvdXZlcmV6IGxlcyBk6XRhaWxzIGRlIGNldHRlIG9w6XJhdGlvbiBzdXIgbGEgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG93bmxvYWQuY2dpI3ZlcmlmeSI+cGFnZSBkZSB06WzpY2hhcmdlbWVudDwvYT4gYWluc2kgcXUndW4gZXhlbXBsZSBwculjaXMgZOljcml2YW50IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2Rldi92ZXJpZmljYXRpb24uaHRtbCI+bCd1dGlsaXNhdGlvbiBkZQogICAgUEdQPC9hPi48L3A+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4dHJhY3QiIGlkPSJleHRyYWN0Ij5FeHRyYWN0aW9uPC9hPjwvaDI+CgogICAgPHA+TCdleHRyYWN0aW9uIGRlcyBzb3VyY2VzIGRlcHVpcyBsJ2FyY2hpdmUgZHUgc2VydmV1ciBIVFRQIEFwYWNoZSBjb25zaXN0ZQogICAgc2ltcGxlbWVudCDgIGTpY29tcHJlc3NlciBldCDgIGTpc2FyY2hpdmVyIGNldHRlIGRlcm5p6HJlIDo8L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KJCBnemlwIC1kIGh0dHBkLTxlbT5OTjwvZW0+LnRhci5nejxiciAvPgokIHRhciB4dmYgaHR0cGQtPGVtPk5OPC9lbT4udGFyCjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+Q2VjaSBjcullcmEsIGRhbnMgbGUgculwZXJ0b2lyZSBjb3VyYW50LCB1biBub3V2ZWF1IHLpcGVydG9pcmUKICAgIGNvbnRlbmFudCBsZSBjb2RlIHNvdXJjZSBkZSBsYSBkaXN0cmlidXRpb24uIFZvdXMgZGV2cmV6IHZvdXMgcG9zaXRpb25uZXIKICAgIGRhbnMgY2UgculwZXJ0b2lyZSBhdmFudCBkZSBwcm9j6WRlciDgIGxhIGNvbXBpbGF0aW9uIGR1IHNlcnZldXIuPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNvbmZpZ3VyZSIgaWQ9ImNvbmZpZ3VyZSI+Q29uZmlndXJhdGlvbiBkZSBsJ2FyYm9yZXNjZW5jZSBkZXMgc291cmNlczwvYT48L2gyPgoKICAgIDxwPkwn6XRhcGUgc3VpdmFudGUgY29uc2lzdGUg4CBjb25maWd1cmVyIGwnYXJib3Jlc2NlbmNlIGRlcyBzb3VyY2VzCiAgICBkJ0FwYWNoZSBlbiBmb25jdGlvbiBkZSB2b3RyZSBwbGF0ZWZvcm1lIGV0IGRlIHZvcyBiZXNvaW5zIHBlcnNvbm5lbHMuCiAgICBMZSBzY3JpcHQgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiwgc2l0dekg4CBsYSByYWNpbmUgZHUKICAgIHLpcGVydG9pcmUgZGUgbGEgZGlzdHJpYnV0aW9uLCBhIOl06SBjb27ndSDgIGNldCBlZmZldAogICAgKExlcyBk6XZlbG9wcGV1cnMgcXVpIHTpbOljaGFyZ2VudAogICAgdW5lIHZlcnNpb24gbm9uIG9mZmljaWVsbGUgZGUgbCdhcmJvcmVzY2VuY2UgZGVzIHNvdXJjZXMgZCdBcGFjaGUKICAgIGRldnJvbnQgZGlzcG9zZXIgZGUKICAgIDxjb2RlPmF1dG9jb25mPC9jb2RlPiBldCA8Y29kZT5saWJ0b29sPC9jb2RlPiBldAogICAgZXjpY3V0ZXIgPGNvZGU+YnVpbGRjb25mPC9jb2RlPiBhdmFudCBkZSBwYXNzZXIg4CBsJ+l0YXBlIHN1aXZhbnRlLAogICAgY2UgcXVpIG4nZXN0IHBhcyBu6WNlc3NhaXJlIHBvdXIgbGVzIHZlcnNpb25zIG9mZmljaWVsbGVzKS48L3A+CgogICAgPHA+UG91ciBjb25maWd1cmVyIGwnYXJib3Jlc2NlbmNlIGRlcyBzb3VyY2VzIGF2ZWMgbGVzIHZhbGV1cnMgcGFyIGTpZmF1dAogICAgcG91ciB0b3V0ZXMgbGVzIG9wdGlvbnMsIGVudHJleiBzaW1wbGVtZW50IDxjb2RlPi4vY29uZmlndXJlPC9jb2RlPi4KICAgIFBvdXIgbW9kaWZpZXIgbGVzIHZhbGV1cnMgZGVzIG9wdGlvbnMsIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPgogICAgYWNjZXB0ZSB0b3V0ZSB1bmUgdmFyael06SBkZSB2YXJpYWJsZXMgZXQKICAgIGQnb3B0aW9ucyBkZSBsaWduZSBkZSBjb21tYW5kZS48L3A+CgogICAgPHA+TCdvcHRpb24gbGEgcGx1cyBpbXBvcnRhbnRlIDxjb2RlPi0tcHJlZml4PC9jb2RlPiBlc3QgbGUgY2hlbWluCiAgICBkdSBy6XBlcnRvaXJlIGQnaW5zdGFsbGF0aW9uIGQnQXBhY2hlLCBjYXIgQXBhY2hlIGRvaXQg6nRyZSBjb25maWd1cukKICAgIGVuIGZvbmN0aW9uIGRlIGNlIGNoZW1pbiBwb3VyIHBvdXZvaXIgZm9uY3Rpb25uZXIgY29ycmVjdGVtZW50LgogICAgSWwgZXN0IHBvc3NpYmxlIGRlIGTpZmluaXIgcGx1cyBmaW5lbWVudCBsZSBjaGVtaW4gZCdpbnN0YWxsYXRpb24gZGVzIGZpY2hpZXJzCiAgICDgIGwnYWlkZSBkJzxhIGhyZWY9InByb2dyYW1zL2NvbmZpZ3VyZS5odG1sI2luc3RhbGxhdGlvbmRpcmVjdG9yaWVzIj5vcHRpb25zCiAgICBzdXBwbOltZW50YWlyZXMgZGUgY29uZmlndXJlPC9hPi48L3A+CgogICAgPHA+wCBjZSBuaXZlYXUsIHZvdXMgcG91dmV6IGF1c3NpIHNw6WNpZmllciBkZSBxdWVsbGVzIDxhIGhyZWY9InByb2dyYW1zL2NvbmZpZ3VyZS5odG1sI29wdGlvbmFsZmVhdHVyZXMiPmZvbmN0aW9ubmFsaXTpczwvYT4gdm91cwogICAgdm91bGV6IGRpc3Bvc2VyIGRhbnMgQXBhY2hlIGVuIGFjdGl2YW50IG91IGTpc2FjdGl2YW50IGRlcyA8YSBocmVmPSJtb2QvIj5tb2R1bGVzPC9hPi4gIEFwYWNoZSBlc3QgZm91cm5pIGF2ZWMgdW4gZ3JhbmQgbm9tYnJlIGRlCiAgICBtb2R1bGVzIGluY2x1cyBwYXIgZOlmYXV0LiBJbHMgc2Vyb250IGNvbXBpbOlzIGVuIHRhbnQgcXUnPGEgaHJlZj0iZHNvLmh0bWwiPm9iamV0cyBwYXJ0YWfpcyAoRFNPcyk8L2E+IHF1aSBwb3Vycm9udCDqdHJlIGNoYXJn6XMKICAgIG91IGTpY2hhcmfpcyDgIGwnZXjpY3V0aW9uLiBWb3VzIHBvdXZleiBhdXNzaSBjaG9pc2lyIGRlIGNvbXBpbGVyCiAgICBsZXMgbW9kdWxlcyBzdGF0aXF1ZW1lbnQgdmlhIGwnb3B0aW9uCiAgICA8Y29kZT4tLWVuYWJsZS08dmFyPm1vZHVsZTwvdmFyPj1zdGF0aWM8L2NvZGU+LjwvcD4KICAgIDxwPkRlcyBtb2R1bGVzIHN1cHBs6W1lbnRhaXJlcyBwZXV2ZW50IOp0cmUgYWN0aXbpcyDgIGwnYWlkZSBkZSBsJ29wdGlvbgogICAgPGNvZGU+LS1lbmFibGUtPHZhcj5tb2R1bGU8L3Zhcj48L2NvZGU+LCBv+QogICAgPHZhcj5tb2R1bGU8L3Zhcj4gZXN0IGxlIG5vbSBkdSBtb2R1bGUgc2FucyBsYSBjaGHubmUKICAgIDxjb2RlPm1vZF88L2NvZGU+IGV0IG/5IHRvdXQgY2FyYWN06HJlIGRlIHNvdWxpZ25lbWVudCBlc3QgY29udmVydGkKICAgIGVuIHRpcmV0LiBEJ3VuZSBtYW5p6HJlIHNpbWlsYWlyZSwKICAgIHZvdXMgcG91dmV6IGTpc2FjdGl2ZXIgZGVzIG1vZHVsZXMg4CBsJ2FpZGUgZGUgbCdvcHRpb24KICAgIDxjb2RlPi0tZGlzYWJsZS08dmFyPm1vZHVsZTwvdmFyPjwvY29kZT4uICBGYWl0ZXMgdHLocyBhdHRlbnRpb24KICAgIGVuIHV0aWxpc2FudCBjZXMgb3B0aW9ucywgY2FyIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiBuJ2VzdCBwYXMgZW4KICAgIG1lc3VyZSBkZSB2b3VzIGF2ZXJ0aXIgc2kgbGUgbW9kdWxlIHF1ZSB2b3VzIGF2ZXogc3DpY2lmaekgbidleGlzdGUgcGFzOwogICAgaWwgaWdub3JlcmEgdG91dCBzaW1wbGVtZW50IGwnb3B0aW9uLjwvcD4KCiAgICA8cD5FbiBvdXRyZSwgdm91cyBkZXZyZXogcGV1dC3qdHJlIGZvdXJuaXIgYXUgc2NyaXB0CiAgICA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi9wcm9ncmFtcy9jb25maWd1cmUuaHRtbCI+Y29uZmlndXJlPC9hPjwvY29kZT4gZGVzIGluZm9ybWF0aW9ucyBzdXBwbOltZW50YWlyZXMgc3VyCiAgICBsZSBjaGVtaW4gZGUgdm90cmUgY29tcGlsYXRldXIsIGRlIHZvcyBiaWJsaW90aOhxdWVzLCBvdSBkZSB2b3MgZmljaGllcnMKICAgIGQnZW4tdOp0ZXMuICBBIGNldCBlZmZldCwgdm91cyBwb3V2ZXogcGFzc2VyIGRlcyBvcHRpb25zIGRlIGxpZ25lIGRlCiAgICBjb21tYW5kZSBvdSBkZXMgdmFyaWFibGVzIGQnZW52aXJvbm5lbWVudCBhdSBzY3JpcHQKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPi4gUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLCB2b2lyIGxhCiAgICBwYWdlIGRlIG1hbnVlbCBkZSA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi9wcm9ncmFtcy9jb25maWd1cmUuaHRtbCI+Y29uZmlndXJlPC9hPjwvY29kZT4sIG91IGxhbmNleiBsZSBzY3JpcHQKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiBhdmVjIGwnb3B0aW9uIDxjb2RlPi0taGVscDwvY29kZT4uCiAgICA8L3A+CgogICAgPHA+UG91ciB2b3VzIGZhaXJlIHVuZSBpZOllIGRlcyBwb3NzaWJpbGl06XMgcXVpIHMnb2ZmcmVudCDgIHZvdXMsIHZvaWNpCiAgICB1biBleGVtcGxlIHR5cGlxdWUgZGUgY29tcGlsYXRpb24gZCdBcGFjaGUgYXZlYyBsZSBy6XBlcnRvaXJlCiAgICBkJ2luc3RhbGxhdGlvbiA8Y29kZT4vc3cvcGtnL2FwYWNoZTwvY29kZT4sIHVuIGNvbXBpbGF0ZXVyIGV0IGRlcyBkcmFwZWF1eAogICAgcGFydGljdWxpZXJzIGV0IGxlcyBkZXV4IG1vZHVsZXMgYWRkaXRpb25uZWxzIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9sZGFwLmh0bWwiPm1vZF9sZGFwPC9hPjwvY29kZT4KICAgIGV0IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9sdWEuaHRtbCI+bW9kX2x1YTwvYT48L2NvZGU+IDo8L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgJCBDQz0icGdjYyIgQ0ZMQUdTPSItTzIiIFw8YnIgLz4KICAgICAgIC4vY29uZmlndXJlIC0tcHJlZml4PS9zdy9wa2cvYXBhY2hlIFw8YnIgLz4KICAgICAgIC0tZW5hYmxlLWxkYXA9c2hhcmVkIFw8YnIgLz4KICAgICAgIC0tZW5hYmxlLWx1YT1zaGFyZWQKPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5QbHVzaWV1cnMgbWludXRlcyBwZXV2ZW50IOp0cmUgbuljZXNzYWlyZXMg4AogICAgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4vcHJvZ3JhbXMvY29uZmlndXJlLmh0bWwiPmNvbmZpZ3VyZTwvYT48L2NvZGU+IHBvdXIgdGVzdGVyIGxhIGRpc3BvbmliaWxpdOkgZGVzCiAgICBmb25jdGlvbm5hbGl06XMKICAgIGF1IHNlaW4gZGUgdm90cmUgc3lzdOhtZSwgZXQgY29uc3RydWlyZSBsZXMgTWFrZWZpbGVzIHF1aSBzZXJvbnQgdXRpbGlz6XMKICAgIHBhciBsYSBzdWl0ZSBwb3VyIGNvbXBpbGVyIGxlIHNlcnZldXIuPC9wPgoKICAgIDxwPlZvdXMgdHJvdXZlcmV6IHVuZSBkZXNjcmlwdGlvbiBk6XRhaWxs6WUgZGVzIG9wdGlvbnMgZGUKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiBkYW5zIHNhIHBhZ2UgZGUgbWFudWVsLjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJjb21waWxlIiBpZD0iY29tcGlsZSI+Q29uc3RydWN0aW9uPC9hPjwvaDI+CgogICAgPHA+Vm91cyBwb3V2ZXogbWFpbnRlbmFudCBjb25zdHJ1aXJlIGxlcyBkaWZm6XJlbnRzIOls6W1lbnRzIHF1aQogICAgY29tcG9zZW50IGxlIHBhcXVldCBBcGFjaGUgZW4gbGFu52FudCB0b3V0IHNpbXBsZW1lbnQgbGEgY29tbWFuZGUgOjwvcD4KCjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPiQgbWFrZTwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+Vm91cyBkZXZleiDqdHJlIHBhdGllbnQsIGNhciBpbCBmYXV0IHBsdXNpZXVycyBtaW51dGVzIHBvdXIgY29tcGlsZXIKICAgIHVuZSBjb25maWd1cmF0aW9uIGRlIGJhc2UsIGV0IGNldHRlIGR1cullIHBldXQgdmFyaWVyIGNvbnNpZOlyYWJsZW1lbnQKICAgIGVuIGZvbmN0aW9uIGRlIHZvdHJlIG1hdOlyaWVsIGV0IGR1IG5vbWJyZSBkZSBtb2R1bGVzIHF1ZSB2b3VzIGF2ZXogYWN0aXbpcy48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaW5zdGFsbCIgaWQ9Imluc3RhbGwiPkluc3RhbGxhdGlvbjwvYT48L2gyPgoKICAgIDxwPklsIGVzdCB0ZW1wcyBtYWludGVuYW50IGQnaW5zdGFsbGVyIGxlIHBhcXVldCBkYW5zIGxlIHLpcGVydG9pcmUKICAgIGQnaW5zdGFsbGF0aW9uIGTpZmluaSBwYXIgPGVtPlBSRUZJWDwvZW0+ICh2b2lyIHBsdXMgaGF1dCBsJ29wdGlvbgogICAgPGNvZGU+LS1wcmVmaXg8L2NvZGU+KSBlbiBsYW7nYW50OjwvcD4KCjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPiQgbWFrZSBpbnN0YWxsPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5DZXR0ZSDpdGFwZSBu6WNlc3NpdGUgaGFiaXR1ZWxsZW1lbnQgbGVzIHByaXZpbOhnZXMKICAgIGRlIHJvb3QsIGNhciA8ZW0+UFJFRklYPC9lbT4gZXN0IGVuIGfpbulyYWwgdW4KICAgIHLpcGVydG9pcmUgcG9zc+hkYW50IGRlcyBkcm9pdHMgZW4g6WNyaXR1cmUKICAgIHJlc3RyZWludHMuPC9wPgoKICAgIDxwPlNpIHZvdXMgZWZmZWN0dWV6IHVuZSBtaXNlIOAgam91ciwgbCdpbnN0YWxsYXRpb24gbifpY3Jhc2VyYSBwYXMKICAgIHZvcyBmaWNoaWVycyBkZSBjb25maWd1cmF0aW9uIG91IGF1dHJlcyBkb2N1bWVudHMuPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImN1c3RvbWl6ZSIgaWQ9ImN1c3RvbWl6ZSI+UGVyc29ubmFsaXNhdGlvbjwvYT48L2gyPgoKICAgIDxwPkVuc3VpdGUsIHZvdXMgcG91cnJleiBwZXJzb25uYWxpc2VyIHZvdHJlIFNlcnZldXIgSFRUUCBBcGFjaGUgZW4KICAgIOlkaXRhbnQgbGVzIDxhIGhyZWY9ImNvbmZpZ3VyaW5nLmh0bWwiPmZpY2hpZXJzIGRlIGNvbmZpZ3VyYXRpb248L2E+CiAgICBzaXR16XMgZGFucyA8Y29kZT48ZW0+UFJFRklYPC9lbT4vY29uZi88L2NvZGU+LjwvcD4KCjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPiQgdmkgPGVtPlBSRUZJWDwvZW0+L2NvbmYvaHR0cGQuY29uZjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+Q29uc3VsdGV6IGxlIG1hbnVlbCBkJ0FwYWNoZSBzaXR16SBkYW5zCiAgICA8Y29kZT48ZW0+UFJFRklYPC9lbT4vZG9jcy9tYW51YWwvPC9jb2RlPiBvdQogICAgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy90cnVuay8iPmh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvdHJ1bmsvPC9hPiBwb3VyIGxhIHZlcnNpb24gbGEgcGx1cwogICAgculjZW50ZSBkZSBjZSBtYW51ZWwgZXQgbGEgbGlzdGUgY29tcGzodGUgZGVzIDxhIGhyZWY9Im1vZC9kaXJlY3RpdmVzLmh0bWwiPmRpcmVjdGl2ZXMgZGUgY29uZmlndXJhdGlvbjwvYT4gZGlzcG9uaWJsZXMuPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InRlc3QiIGlkPSJ0ZXN0Ij5UZXN0PC9hPjwvaDI+CgogICAgPHA+Vm91cyBwb3V2ZXogbWFpbnRlbmFudCA8YSBocmVmPSJpbnZva2luZy5odG1sIj5k6W1hcnJlcjwvYT4gdm90cmUKICAgIHNlcnZldXIgSFRUUCBBcGFjaGUgZW4gbGFu52FudDo8L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4kIDxlbT5QUkVGSVg8L2VtPi9iaW4vYXBhY2hlY3RsIC1rIHN0YXJ0PC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5Wb3VzIGRldnJpZXogYWxvcnMgcG91dm9pciByZXF16XJpciB2b3RyZSBwcmVtaWVyIGRvY3VtZW50CiAgICDgIGwnYWlkZSBkZSBsJ1VSTCA8Y29kZT5odHRwOi8vbG9jYWxob3N0LzwvY29kZT4uIExhIHBhZ2Ugd2ViIHF1ZSB2b3VzCiAgICB2b3lleiBlc3Qgc2l0dellIGRhbnMgbGUgculwZXJ0b2lyZSBk6WZpbmkgcGFyIGxhIGRpcmVjdGl2ZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvY29yZS5odG1sI2RvY3VtZW50cm9vdCI+RG9jdW1lbnRSb290PC9hPjwvY29kZT4sCiAgICBxdWkgZXN0IGfpbulyYWxlbWVudCA8Y29kZT48ZW0+UFJFRklYPC9lbT4vaHRkb2NzLzwvY29kZT4uCiAgICBQb3VyIDxhIGhyZWY9InN0b3BwaW5nLmh0bWwiPmFycup0ZXI8L2E+IGxlIHNlcnZldXIsIGxhbmNlejo8L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4kIDxlbT5QUkVGSVg8L2VtPi9iaW4vYXBhY2hlY3RsIC1rIHN0b3A8L2NvZGU+PC9wPjwvZGl2Pgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InVwZ3JhZGluZyIgaWQ9InVwZ3JhZGluZyI+TWlzZSDgIGpvdXI8L2E+PC9oMj4KCiAgICA8cD5MYSBwcmVtaehyZSDpdGFwZSBkJ3VuZSBtaXNlIOAgam91ciBjb25zaXN0ZSDgIGxpcmUgbCdhbm5vbmNlIGRlIGxhCiAgICBzb3J0aWUgZGUgbGEgbm91dmVsbGUgdmVyc2lvbiBldCBsZSBmaWNoaWVyIDxjb2RlPkNIQU5HRVM8L2NvZGU+CiAgICBkYW5zIGxhIGRpc3RyaWJ1dGlvbiBkZXMgc291cmNlcyBhZmluIGRlIGTpY2VsZXIgdG91dGVzIGxlcyBtb2RpZmljYXRpb25zCiAgICBxdWkgcG91cnJhaWVudCBhZmZlY3RlciB2b3RyZSBzaXRlLiBMb3JzIGQndW4gY2hhbmdlbWVudCBtYWpldXIgZGUgdmVyc2lvbgogICAgKHBhciBleGVtcGxlIGRlIDIuMCDgIDIuMiBvdSBkZSAyLjIg4CAyLjQpLAogICAgaWwgeSBhdXJhIGNlcnRhaW5lbWVudCBkZXMgZGlmZulyZW5jZXMgaW1wb3J0YW50ZXMgcXVhbnQg4CBsYQogICAgY29uZmlndXJhdGlvbiBkZSBsYSBjb21waWxhdGlvbiBldCBkZSBsJ2V46WN1dGlvbiBxdWkgbuljZXNzaXRlcm9udCBkZXMKICAgIGFqdXN0ZW1lbnRzIG1hbnVlbHMuICBUb3VzIGxlcwogICAgbW9kdWxlcyBkZXZyb250IGF1c3NpIOp0cmUgbWlzIOAgam91ciBwb3VyIHF1J2lscyBzJ2FkYXB0ZW50IGF1eAogICAgY2hhbmdlbWVudHMgZGUgbCdBUEkgZGVzIG1vZHVsZXMuPC9wPgoKICAgIDxwPkxhIG1pc2Ug4CBqb3VyIGQndW5lIHZlcnNpb24gbWluZXVyZSDgIGxhIHN1aXZhbnRlIChwYXIgZXhlbXBsZSwgZGUKICAgIDIuMi41NSDgIDIuMi41NykgZXN0IHBsdXMgYWlz6WUuICBMZSBwcm9jZXNzdXMgPGNvZGU+bWFrZSBpbnN0YWxsPC9jb2RlPgogICAgbifpY3Jhc2VyYSBhdWN1biBkZSB2b3MgZG9jdW1lbnRzIGV4aXN0YW50cywgZmljaGllcnMgZGUgbG9nLAogICAgb3UgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbi4gIERlIHBsdXMsIGxlcyBk6XZlbG9wcGV1cnMgZm9udCB0b3V0CiAgICBsZXVyIHBvc3NpYmxlIHBvdXIg6XZpdGVyIGxlcyBjaGFuZ2VtZW50cyBlbnRyYe5uYW50IHVuZQogICAgaW5jb21wYXRpYmlsaXTpIGRhbnMgbGVzIG9wdGlvbnMgZGUKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiwgbGEgY29uZmlndXJhdGlvbiBkZSBsJ2V46WN1dGlvbiwgb3UgbCdBUEkKICAgIGRlcyBtb2R1bGVzIGQndW5lIHZlcnNpb24gbWluZXVyZSDgIGwnYXV0cmUuICBEYW5zIGxhIHBsdXBhcnQgZGVzIGNhcywKICAgIHZvdXMgcG91cnJleiB1dGlsaXNlciB1bmUgbGlnbmUgZGUgY29tbWFuZGUKICAgIDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuL3Byb2dyYW1zL2NvbmZpZ3VyZS5odG1sIj5jb25maWd1cmU8L2E+PC9jb2RlPiBpZGVudGlxdWUsIGxlIG3qbWUgZmljaGllciBkZSBjb25maWd1cmF0aW9uLAogICAgZXQgdG91cyB2b3MgbW9kdWxlcyBjb250aW51ZXJvbnQgZGUgZm9uY3Rpb25uZXIuPC9wPgoKICAgIDxwPlBvdXIgZWZmZWN0dWVyIHVuZSBtaXNlIOAgam91ciBlbnRyZSBkZXV4IHZlcnNpb25zIG1pbmV1cmVzLAogICAgY29tbWVuY2V6IHBhciB0cm91dmVyIGxlIGZpY2hpZXIKICAgIDxjb2RlPmNvbmZpZy5uaWNlPC9jb2RlPiBkYW5zIGxlIHLpcGVydG9pcmUgZGUgPGNvZGU+Y29uc3RydWN0aW9uPC9jb2RlPgogICAgZGUgdm90cmUgc2VydmV1ciBpbnN0YWxs6SBvdSDgIGxhIHJhY2luZSBkZSBsJ2FyYm9yZXNjZW5jZSBkZXMgc291cmNlcwogICAgZGUgdm90cmUgYW5jaWVubmUgaW5zdGFsbGF0aW9uLiAgSWwgY29udGllbnQgbGEgcmVwcm9kdWN0aW9uIGV4YWN0ZSBkZSBsYQogICAgbGlnbmUgZGUgY29tbWFuZGUgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4vcHJvZ3JhbXMvY29uZmlndXJlLmh0bWwiPmNvbmZpZ3VyZTwvYT48L2NvZGU+IHF1ZSB2b3VzIGF2ZXogdXRpbGlz6WUgcG91cgogICAgY29uZmlndXJlciBsJ2FyYm9yZXNjZW5jZSBkZXMgc291cmNlcy4gIEVuc3VpdGUsIHBvdXIgbWV0dHJlIOAgam91cgogICAgbCdhbmNpZW5uZSB2ZXJzaW9uIHZlcnMgbGEgbm91dmVsbGUsCiAgICBpbCB2b3VzIHN1ZmZpdCBkZSBjb3BpZXIgbGUgZmljaGllciA8Y29kZT5jb25maWcubmljZTwvY29kZT4gZGFucwogICAgbCdhcmJvcmVzY2VuY2UgZGVzIHNvdXJjZXMgZGUgbGEgbm91dmVsbGUgdmVyc2lvbiwgZGUgbCfpZGl0ZXIgcG91cgogICAgZWZmZWN0dWVyIHRvdXRlIG1vZGlmaWNhdGlvbiBzb3VoYWl06WUsIGV0IGRlIGxhbmNlciA6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgJCAuL2NvbmZpZy5uaWNlPGJyIC8+CiAgICAkIG1ha2U8YnIgLz4KICAgICQgbWFrZSBpbnN0YWxsPGJyIC8+CiAgICAkIDxlbT5QUkVGSVg8L2VtPi9iaW4vYXBhY2hlY3RsIC1rIGdyYWNlZnVsLXN0b3A8YnIgLz4KICAgICQgPGVtPlBSRUZJWDwvZW0+L2Jpbi9hcGFjaGVjdGwgLWsgc3RhcnQ8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0id2FybmluZyI+Vm91cyBkZXZleiB0b3Vqb3VycyBlZmZlY3R1ZXIgdW4gdGVzdCBkZSBsYSBub3V2ZWxsZQogICAgdmVyc2lvbiBkYW5zIHZvdHJlIGVudmlyb25uZW1lbnQgYXZhbnQgZGUgbGEgbWV0dHJlIGVuIHByb2R1Y3Rpb24uCiAgICBQYXIgZXhlbXBsZSwgdm91cyBwb3V2ZXogaW5zdGFsbGVyIGV0IGV46WN1dGVyIGxhIG5vdXZlbGxlIHZlcnNpb24KICAgIGVuIHBhcmFsbOhsZSBhdmVjIGwnYW5jaWVubmUgZW4gdXRpbGlzYW50IHVuZSBvcHRpb24KICAgIDxjb2RlPi0tcHJlZml4PC9jb2RlPiBldCB1biBwb3J0IGRpZmbpcmVudHMgKGVuIGFqdXN0YW50IGxhIGRpcmVjdGl2ZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvbXBtX2NvbW1vbi5odG1sI2xpc3RlbiI+TGlzdGVuPC9hPjwvY29kZT4pIGFmaW4gZGUgZOljZWxlciB0b3V0ZQogICAgaW5jb21wYXRpYmlsaXTpIGF2YW50IGQnZWZmZWN0dWVyIGxhIG1pc2Ug4CBqb3VyIGTpZmluaXRpdmUuPC9kaXY+CgogICAgPHA+Vm91cyBwb3V2ZXogYWpvdXRlciBkZXMgYXJndW1lbnRzIHN1cHBs6W1lbnRhaXJlcyDgCiAgICA8Y29kZT5jb25maWcubmljZTwvY29kZT4gOyBpbHMgc2Vyb250IGFsb3JzIGFqb3V06XMgYXV4IG9wdGlvbnMgZGUKICAgIHZvdHJlIHNjcmlwdCA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi9wcm9ncmFtcy9jb25maWd1cmUuaHRtbCI+Y29uZmlndXJlPC9hPjwvY29kZT4gb3JpZ2luYWwgOjwvcD4KCiAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgJCAuL2NvbmZpZy5uaWNlIC0tcHJlZml4PS9ob21lL3Rlc3QvYXBhY2hlIC0td2l0aC1wb3J0PTkwCiAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InRoaXJkcCIgaWQ9InRoaXJkcCI+UGFxdWV0cyB0aWVyczwvYT48L2gyPgoKICAgIDxwPkRlIG5vbWJyZXV4IHRpZXJzIGZvdXJuaXNzZW50IGxldXIgcHJvcHJlIGRpc3RyaWJ1dGlvbiBkdQogICAgc2VydmV1ciBIVFRQIEFwYWNoZSDgIGluc3RhbGxlciBzdXIgdW5lIHBsYXRlLWZvcm1lIHBhcnRpY3VsaehyZS4gT24KICAgIHBldXQgY2l0ZXIgbGVzIGRpZmbpcmVudGVzIGRpc3RyaWJ1dGlvbnMgTGludXgsIGRpdmVycwogICAgcGFxdWV0cyB0aWVycyBXaW5kb3dzLCBNYWMgT1MgWCwgU29sYXJpcyBldCBkZSBub21icmV1eCBhdXRyZXMuPC9wPgoKICAgIDxwPk5vdHJlIGxpY2Vuc2UgbG9naWNpZWxsZSBub24gc2V1bGVtZW50IHBlcm1ldCwgbWFpcyBhdXNzaQogICAgZW5jb3VyYWdlIGNlIGdlbnJlIGRlIHJlZGlzdHJpYnV0aW9uLiBDZXBlbmRhbnQsIGNlY2kgY29uZHVpdCDgIHVuZQogICAgc2l0dWF0aW9uIG91IGwnb3JnYW5pc2F0aW9uIGRlIGxhIGNvbmZpZ3VyYXRpb24gZXQgbGVzIHZhbGV1cnMgcGFyCiAgICBk6WZhdXQgZGUgdm90cmUgaW5zdGFsbGF0aW9uIGR1IHNlcnZldXIgcGV1dmVudCBuZSBwYXMgY29ycmVzcG9uZHJlCiAgICDgIGNlIHF1aSBlc3Qg6WNyaXQgZGFucyBsYSBkb2N1bWVudGF0aW9uLiBCaWVuIHF1ZSBm4mNoZXVzZSwgY2V0dGUKICAgIHNpdHVhdGlvbiBuJ2VzdCBwYXMgYXBwZWzpZSDgIOl2b2x1ZXIgZGUgc2l09HQuPC9wPgoKICAgIDxwPlVuZSAgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9EaXN0cm9zRGVmYXVsdExheW91dCI+ZGVzY3JpcHRpb24KICAgIGRlIGNlcyBkaXN0cmlidXRpb25zIHRpZXJjZXM8L2E+IGVzdCBtYWludGVudWUgZGFucyBsZSB3aWtpIGR1CiAgICBzZXJ2ZXVyIEhUVFAsIGV0IGRvaXQgZW4gcmVmbOl0ZXIgbCfpdGF0IGFjdHVlbC4gVm91cyBkZXZyZXoKICAgIGNlcGVuZGFudCB2b3VzIGZhbWlsaWFyaXNlciBwYXIgdm91cy1t6m1lIGF2ZWMgbGEgZ2VzdGlvbiBkdSBwYXF1ZXQKICAgIGRlIHZvdHJlIHBsYXRlLWZvcm1lIHBhcnRpY3VsaehyZSBldCBsZXMgcHJvY+lkdXJlcyBkJ2luc3RhbGxhdGlvbi48L3A+Cgo8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkxhbmd1ZXMgRGlzcG9uaWJsZXM6IDwvc3Bhbj48YSBocmVmPSIuL2RlL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImRlIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vaW5zdGFsbC5odG1sIiBocmVmbGFuZz0iZW4iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9lcy9pbnN0YWxsLmh0bWwiIGhyZWZsYW5nPSJlcyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFc3Bh8W9sIj4mbmJzcDtlcyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2ZyL2luc3RhbGwuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2tvL2luc3RhbGwuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi90ci9pbnN0YWxsLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL3RydW5rL2luc3RhbGwuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkF1dG9yaXPpIHNvdXMgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuL21vZC9xdWlja3JlZmVyZW5jZS5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FpcmU8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlBsYW4gZHUgc2l0ZTwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=