PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYXV0aHpfb3duZXIgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2F1dGh6X293bmVyPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGh6X293bmVyLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGh6X293bmVyLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9hdXRoel9vd25lci5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYXV0aHpfb3duZXIuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkF1dGhvcml6YXRpb24gYmFzZWQgb24gZmlsZSBvd25lcnNoaXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmF1dGh6X293bmVyX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aHpfb3duZXIuYzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiBBcGFjaGUgMi4xIGFuZCBsYXRlcjwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+VGhpcyBtb2R1bGUgYXV0aG9yaXplcyBhY2Nlc3MgdG8gZmlsZXMgYnkgY29tcGFyaW5nIHRoZSB1c2VyaWQgdXNlZAogICAgZm9yIEhUVFAgYXV0aGVudGljYXRpb24gKHRoZSB3ZWIgdXNlcmlkKSB3aXRoIHRoZSBmaWxlLXN5c3RlbSBvd25lciBvcgogICAgZ3JvdXAgb2YgdGhlIHJlcXVlc3RlZCBmaWxlLiBUaGUgc3VwcGxpZWQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkCiAgICBtdXN0IGJlIGFscmVhZHkgcHJvcGVybHkgdmVyaWZpZWQgYnkgYW4gYXV0aGVudGljYXRpb24gbW9kdWxlLAogICAgc3VjaCBhcyA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhfYmFzaWMuaHRtbCI+bW9kX2F1dGhfYmFzaWM8L2E+PC9jb2RlPiBvcgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sIj5tb2RfYXV0aF9kaWdlc3Q8L2E+PC9jb2RlPi4gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9vd25lci5odG1sIj5tb2RfYXV0aHpfb3duZXI8L2E+PC9jb2RlPgogICAgcmVjb2duaXplcyB0d28gYXJndW1lbnRzIGZvciB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9jb3JlLmh0bWwjcmVxdWlyZSI+UmVxdWlyZTwvYT48L2NvZGU+IGRpcmVjdGl2ZSwgPGNvZGU+ZmlsZS1vd25lcjwvY29kZT4gYW5kCiAgICA8Y29kZT5maWxlLWdyb3VwPC9jb2RlPiwgYXMgZm9sbG93czo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+ZmlsZS1vd25lcjwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIHN1cHBsaWVkIHdlYi11c2VybmFtZSBtdXN0IG1hdGNoIHRoZSBzeXN0ZW0ncyBuYW1lIGZvciB0aGUKICAgICAgb3duZXIgb2YgdGhlIGZpbGUgYmVpbmcgcmVxdWVzdGVkLiBUaGF0IGlzLCBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbQogICAgICBzYXlzIHRoZSByZXF1ZXN0ZWQgZmlsZSBpcyBvd25lZCBieSA8Y29kZT5qb25lczwvY29kZT4sIHRoZW4gdGhlCiAgICAgIHVzZXJuYW1lIHVzZWQgdG8gYWNjZXNzIGl0IHRocm91Z2ggdGhlIHdlYiBtdXN0IGJlIDxjb2RlPmpvbmVzPC9jb2RlPgogICAgICBhcyB3ZWxsLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+ZmlsZS1ncm91cDwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIG5hbWUgb2YgdGhlIHN5c3RlbSBncm91cCB0aGF0IG93bnMgdGhlIGZpbGUgbXVzdCBiZSBwcmVzZW50CiAgICAgIGluIGEgZ3JvdXAgZGF0YWJhc2UsIHdoaWNoIGlzIHByb3ZpZGVkLCBmb3IgZXhhbXBsZSwgYnkgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9ncm91cGZpbGUuaHRtbCI+bW9kX2F1dGh6X2dyb3VwZmlsZTwvYT48L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aHpfZGJtLmh0bWwiPm1vZF9hdXRoel9kYm08L2E+PC9jb2RlPiwKICAgICAgYW5kIHRoZSB3ZWItdXNlcm5hbWUgbXVzdCBiZSBhIG1lbWJlciBvZiB0aGF0IGdyb3VwLiBGb3IgZXhhbXBsZSwgaWYKICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gc2F5cyB0aGUgcmVxdWVzdGVkIGZpbGUgaXMgb3duZWQgYnkgKHN5c3RlbSkKICAgICAgZ3JvdXAgPGNvZGU+YWNjb3VudHM8L2NvZGU+LCB0aGUgZ3JvdXAgPGNvZGU+YWNjb3VudHM8L2NvZGU+IG11c3QKICAgICAgYXBwZWFyIGluIHRoZSBncm91cCBkYXRhYmFzZSBhbmQgdGhlIHdlYi11c2VybmFtZSB1c2VkIGluIHRoZSByZXF1ZXN0CiAgICAgIG11c3QgYmUgYSBtZW1iZXIgb2YgdGhhdCBncm91cC48L2RkPgogICAgPC9kbD4KCiAgICA8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+CiAgICAgIDxwPklmIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aHpfb3duZXIuaHRtbCI+bW9kX2F1dGh6X293bmVyPC9hPjwvY29kZT4gaXMgdXNlZCBpbiBvcmRlciB0byBhdXRob3JpemUKICAgICAgYSByZXNvdXJjZSB0aGF0IGlzIG5vdCBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBmaWxlc3lzdGVtCiAgICAgICg8ZW0+aS5lLjwvZW0+IGEgdmlydHVhbCByZXNvdXJjZSksIGl0IHdpbGwgZGVueSB0aGUgYWNjZXNzLjwvcD4KCiAgICAgIDxwPlBhcnRpY3VsYXJseSBpdCB3aWxsIG5ldmVyIGF1dGhvcml6ZSA8YSBocmVmPSIuLi9jb250ZW50LW5lZ290aWF0aW9uLmh0bWwjbXVsdGl2aWV3cyI+Y29udGVudCBuZWdvdGlhdGVkCiAgICAgICJNdWx0aVZpZXdzIjwvYT4gcmVzb3VyY2VzLjwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlcyI+Q29uZmlndXJhdGlvbiBFeGFtcGxlczwvYT48L2xpPgo8L3VsPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIG5vCiAgICAgICAgICAgIGRpcmVjdGl2ZXMuPC9wPgo8aDM+QnVnZml4IGNoZWNrbGlzdDwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2h0dHBkL0NIQU5HRVNfMi40Ij5odHRwZCBjaGFuZ2Vsb2c8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9X19vcGVuX18mYW1wO2xpc3RfaWQ9MTQ0NTMyJmFtcDtwcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO3F1ZXJ5X2Zvcm1hdD1zcGVjaWZpYyZhbXA7b3JkZXI9Y2hhbmdlZGRhdGUlMjBERVNDJTJDcHJpb3JpdHklMkNidWdfc2V2ZXJpdHkmYW1wO2NvbXBvbmVudD1tb2RfYXV0aHpfb3duZXIiPktub3duIGlzc3VlczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO2NvbXBvbmVudD1tb2RfYXV0aHpfb3duZXIiPlJlcG9ydCBhIGJ1ZzwvYT48L2xpPjwvdWw+PGgzPlNlZSBhbHNvPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aHpfY29yZS5odG1sI3JlcXVpcmUiPlJlcXVpcmU8L2E+PC9jb2RlPjwvbGk+CjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleGFtcGxlcyIgaWQ9ImV4YW1wbGVzIj5Db25maWd1cmF0aW9uIEV4YW1wbGVzPC9hPjwvaDI+CgogICAgPGgzPjxhIG5hbWU9ImV4YW1wbGVzLmZpbGUtb3duZXIiIGlkPSJleGFtcGxlcy5maWxlLW93bmVyIj5SZXF1aXJlIGZpbGUtb3duZXI8L2E+PC9oMz4KICAgICAgPHA+Q29uc2lkZXIgYSBtdWx0aS11c2VyIHN5c3RlbSBydW5uaW5nIHRoZSBBcGFjaGUgV2ViIHNlcnZlciwgd2l0aAogICAgICBlYWNoIHVzZXIgaGF2aW5nIGhpcyBvciBoZXIgb3duIGZpbGVzIGluIDxjb2RlPn4vcHVibGljX2h0bWwvcHJpdmF0ZTwvY29kZT4uIEFzc3VtaW5nIHRoYXQgdGhlcmUgaXMgYSBzaW5nbGUKICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9kYm0uaHRtbCNhdXRoZGJtdXNlcmZpbGUiPkF1dGhEQk1Vc2VyRmlsZTwvYT48L2NvZGU+IGRhdGFiYXNlCiAgICAgIHRoYXQgbGlzdHMgYWxsIG9mIHRoZWlyIHdlYi11c2VybmFtZXMsIGFuZCB0aGF0IHRoZXNlIHVzZXJuYW1lcyBtYXRjaAogICAgICB0aGUgc3lzdGVtJ3MgdXNlcm5hbWVzIHRoYXQgYWN0dWFsbHkgb3duIHRoZSBmaWxlcyBvbiB0aGUgc2VydmVyLCB0aGVuCiAgICAgIHRoZSBmb2xsb3dpbmcgc3RhbnphIHdvdWxkIGFsbG93IG9ubHkgdGhlIHVzZXIgaGltc2VsZiBhY2Nlc3MgdG8gaGlzCiAgICAgIG93biBmaWxlcy4gVXNlciA8Y29kZT5qb25lczwvY29kZT4gd291bGQgbm90IGJlIGFsbG93ZWQgdG8gYWNjZXNzCiAgICAgIGZpbGVzIGluIDxjb2RlPi9ob21lL3NtaXRoL3B1YmxpY19odG1sL3ByaXZhdGU8L2NvZGU+IHVubGVzcyB0aGV5CiAgICAgIHdlcmUgb3duZWQgYnkgPGNvZGU+am9uZXM8L2NvZGU+IGluc3RlYWQgb2YgPGNvZGU+c21pdGg8L2NvZGU+LjwvcD4KCiAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7RGlyZWN0b3J5ICIvaG9tZS8qL3B1YmxpY19odG1sL3ByaXZhdGUiJmd0OwogICAgQXV0aFR5cGUgQmFzaWMKICAgIEF1dGhOYW1lIE15UHJpdmF0ZUZpbGVzCiAgICBBdXRoQmFzaWNQcm92aWRlciBkYm0KICAgIEF1dGhEQk1Vc2VyRmlsZSAiL3Vzci9sb2NhbC9hcGFjaGUyL2V0Yy8uaHRkYm0tYWxsIgogICAgUmVxdWlyZSBmaWxlLW93bmVyCiZsdDsvRGlyZWN0b3J5Jmd0OzwvcHJlPgoKICAgIAoKICAgIDxoMz48YSBuYW1lPSJleGFtcGxlcy5maWxlLWdyb3VwIiBpZD0iZXhhbXBsZXMuZmlsZS1ncm91cCI+UmVxdWlyZSBmaWxlLWdyb3VwPC9hPjwvaDM+CiAgICAgIDxwPkNvbnNpZGVyIGEgc3lzdGVtIHNpbWlsYXIgdG8gdGhlIG9uZSBkZXNjcmliZWQgYWJvdmUsIGJ1dCB3aXRoCiAgICAgIHNvbWUgdXNlcnMgdGhhdCBzaGFyZSB0aGVpciBwcm9qZWN0IGZpbGVzIGluCiAgICAgIDxjb2RlPn4vcHVibGljX2h0bWwvcHJvamVjdC1mb288L2NvZGU+LiBUaGUgZmlsZXMgYXJlIG93bmVkIGJ5IHRoZQogICAgICBzeXN0ZW0gZ3JvdXAgPGNvZGU+Zm9vPC9jb2RlPiBhbmQgdGhlcmUgaXMgYSBzaW5nbGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9kYm0uaHRtbCNhdXRoZGJtZ3JvdXBmaWxlIj5BdXRoREJNR3JvdXBGaWxlPC9hPjwvY29kZT4gZGF0YWJhc2UgdGhhdAogICAgICBjb250YWlucyBhbGwgb2YgdGhlIHdlYi11c2VybmFtZXMgYW5kIHRoZWlyIGdyb3VwIG1lbWJlcnNoaXAsCiAgICAgIDxlbT5pLmUuPC9lbT4gdGhleSBtdXN0IGJlIGF0IGxlYXN0IG1lbWJlciBvZiBhIGdyb3VwIG5hbWVkCiAgICAgIDxjb2RlPmZvbzwvY29kZT4uIFNvIGlmIDxjb2RlPmpvbmVzPC9jb2RlPiBhbmQgPGNvZGU+c21pdGg8L2NvZGU+CiAgICAgIGFyZSBib3RoIG1lbWJlciBvZiB0aGUgZ3JvdXAgPGNvZGU+Zm9vPC9jb2RlPiwgdGhlbiBib3RoIHdpbGwgYmUKICAgICAgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhlIDxjb2RlPnByb2plY3QtZm9vPC9jb2RlPiBkaXJlY3RvcmllcyBvZgogICAgICBlYWNoIG90aGVyLjwvcD4KCiAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7RGlyZWN0b3J5ICIvaG9tZS8qL3B1YmxpY19odG1sL3Byb2plY3QtZm9vIiZndDsKICAgIEF1dGhUeXBlIEJhc2ljCiAgICBBdXRoTmFtZSAiUHJvamVjdCBGb28gRmlsZXMiCiAgICBBdXRoQmFzaWNQcm92aWRlciBkYm0KICAgIAogICAgIyBjb21iaW5lZCB1c2VyL2dyb3VwIGRhdGFiYXNlCiAgICBBdXRoREJNVXNlckZpbGUgICIvdXNyL2xvY2FsL2FwYWNoZTIvZXRjLy5odGRibS1hbGwiCiAgICBBdXRoREJNR3JvdXBGaWxlICIvdXNyL2xvY2FsL2FwYWNoZTIvZXRjLy5odGRibS1hbGwiCiAgICAKICAgIFNhdGlzZnkgQWxsCiAgICBSZXF1aXJlIGZpbGUtZ3JvdXAKJmx0Oy9EaXJlY3RvcnkmZ3Q7PC9wcmU+CgogICAgCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGh6X293bmVyLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGh6X293bmVyLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9hdXRoel9vd25lci5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYXV0aHpfb3duZXIuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfYXV0aHpfb3duZXIuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=