PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJkZSIgeG1sOmxhbmc9ImRlIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT53b3JrZXIgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGU8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPkRpcmVrdGl2ZW48L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2VpdGVuaW5kZXg8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQLVNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9rdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi41PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGU8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+QXBhY2hlLU1QTSB3b3JrZXI8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+VmVyZvxnYmFyZSBTcHJhY2hlbjogPC9zcGFuPjxhIGhyZWY9Ii4uL2RlL21vZC93b3JrZXIuaHRtbCIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2VuL21vZC93b3JrZXIuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC93b3JrZXIuaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2Qvd29ya2VyLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vdHIvbW9kL3dvcmtlci5odG1sIiBocmVmbGFuZz0idHIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iVPxya+dlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJvdXRvZmRhdGUiPkRpZXNlINxiZXJzZXR6dW5nIGlzdCBt9mdsaWNoZXJ3ZWlzZQogICAgICAgICAgICBuaWNodCBtZWhyIGFrdHVlbGwuIEJpdHRlIHBy/GZlbiBTaWUgZGllIGVuZ2xpc2NoZSBWZXJzaW9uIGF1ZgogICAgICAgICAgICBkaWUgbmV1ZXN0ZW4gxG5kZXJ1bmdlbi48L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+QmVzY2hyZWlidW5nOjwvYT48L3RoPjx0ZD5NdWx0aS1Qcm9jZXNzaW5nLU1vZHVsLCBkYXMgZWluZW4gSHlicmlkLVdlYnNlcnZlciBtaXQKICBNdWx0aS1UaHJlYWQgdW5kIE11bHRpLVByb3plc3MtVW50ZXJzdPx0enVuZyBpbXBsZW1lbnRpZXJ0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPk1QTTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsYmV6ZWljaG5lcjo8L2E+PC90aD48dGQ+bXBtX3dvcmtlcl9tb2R1bGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTb3VyY2VGaWxlIj5RdWVsbHRleHQtRGF0ZWk6PC9hPjwvdGg+PHRkPndvcmtlci5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5adXNhbW1lbmZhc3N1bmc8L2gzPgoKICAgIDxwPkRpZXNlcyBNdWx0aS1Qcm9jZXNzaW5nLU1vZHVsIChNUE0pIGltcGxlbWVudGllcnQgZWluZW4gSHlicmlkLVNlcnZlcgogICAgbWl0IE11bHRpLVRocmVhZCB1bmQgTXVsdGktUHJvemVzcy1VbnRlcnN0/HR6dW5nLiBEdXJjaCBkaWUgVmVyd2VuZHVuZwogICAgdm9uIFRocmVhZHMgZvxyIGRpZSBCZWRpZW51bmcgdm9uIEFuZnJhZ2VuIGlzdCBlciBpbiBkZXIgTGFnZSwKICAgIGVpbmUgZ3Jv32UgQW56YWhsIHZvbiBBbmZyYWdlbiBtaXQgd2VuaWdlciBTeXN0ZW1yZXNzb3VyY2VuIGFscwogICAgZWluIFByb3plc3MtYmFzaWVydGVyIFNlcnZlciB6dSBiZWRpZW5lbi4gRXIgYmVo5Gx0IGplZG9jaCB2aWVsIHZvbgogICAgZGVyIFN0YWJpbGl05HQgZWluZXMgUHJvemVzcy1iYXNpZXJ0ZW4gU2VydmVycyBiZWksIGluZGVtIGVyCiAgICBtZWhyZXJlIFByb3plc3NlIHZlcmb8Z2JhciBo5Gx0LCBqZWRlbiBtaXQgZXRsaWNoZW4gVGhyZWFkcy48L3A+CgogICAgPHA+RGllIHdpY2h0aWdzdGVuIERpcmVrdGl2ZW4genVyIFN0ZXVlcnVuZyBkZXMgTVBNcyBzaW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjdGhyZWFkc3BlcmNoaWxkIj5UaHJlYWRzUGVyQ2hpbGQ8L2E+PC9jb2RlPiwgd2VsY2hlIGRpZSBBbnphaGwKICAgIGRlciBUaHJlYWRzIGJlZWluZmx1c3N0LCBkaWUgdm9uIGplZGVtIEtpbmRwcm96ZXNzIHZlcndlbmRldCB3ZXJkZW4sIHVuZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9jb21tb24uaHRtbCNtYXhjbGllbnRzIj5NYXhDbGllbnRzPC9hPjwvY29kZT4sIHdlbGNoZSBkaWUKICAgIG1heGltYWxlIEdlc2FtdHphaGwgYW4gVGhyZWFkcyByZWdlbHQsIGRpZSBnZXN0YXJ0ZXQgd2VyZGVuCiAgICBr9m5uZW4uPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDM+VGhlbWVuPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNob3ctaXQtd29ya3MiPkFyYmVpdHN3ZWlzZTwvYT48L2xpPgo8L3VsPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWt0aXZlbjwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL3JpZ2h0LmdpZiIgLz4gPGEgaHJlZj0ibXBtX2NvbW1vbi5odG1sI2NvcmVkdW1wZGlyZWN0b3J5Ij5Db3JlRHVtcERpcmVjdG9yeTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjZW5hYmxlZXhjZXB0aW9uaG9vayI+RW5hYmxlRXhjZXB0aW9uSG9vazwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtb2RfdW5peGQuaHRtbCNncm91cCI+R3JvdXA8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL3JpZ2h0LmdpZiIgLz4gPGEgaHJlZj0ibXBtX2NvbW1vbi5odG1sI2xpc3RlbiI+TGlzdGVuPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNsaXN0ZW5iYWNrbG9nIj5MaXN0ZW5CYWNrbG9nPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNtYXhjb25uZWN0aW9uc3BlcmNoaWxkIj5NYXhDb25uZWN0aW9uc1BlckNoaWxkPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNtYXhtZW1mcmVlIj5NYXhNZW1GcmVlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNtYXhyZXF1ZXN0d29ya2VycyI+TWF4UmVxdWVzdFdvcmtlcnM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL3JpZ2h0LmdpZiIgLz4gPGEgaHJlZj0ibXBtX2NvbW1vbi5odG1sI21heHNwYXJldGhyZWFkcyI+TWF4U3BhcmVUaHJlYWRzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNtaW5zcGFyZXRocmVhZHMiPk1pblNwYXJlVGhyZWFkczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjcGlkZmlsZSI+UGlkRmlsZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjcmVjZWl2ZWJ1ZmZlcnNpemUiPlJlY2VpdmVCdWZmZXJTaXplPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNzY29yZWJvYXJkZmlsZSI+U2NvcmVCb2FyZEZpbGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL3JpZ2h0LmdpZiIgLz4gPGEgaHJlZj0ibXBtX2NvbW1vbi5odG1sI3NlbmRidWZmZXJzaXplIj5TZW5kQnVmZmVyU2l6ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjc2VydmVybGltaXQiPlNlcnZlckxpbWl0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCNzdGFydHNlcnZlcnMiPlN0YXJ0U2VydmVyczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjdGhyZWFkbGltaXQiPlRocmVhZExpbWl0PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9yaWdodC5naWYiIC8+IDxhIGhyZWY9Im1wbV9jb21tb24uaHRtbCN0aHJlYWRzcGVyY2hpbGQiPlRocmVhZHNQZXJDaGlsZDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvcmlnaHQuZ2lmIiAvPiA8YSBocmVmPSJtcG1fY29tbW9uLmh0bWwjdGhyZWFkc3RhY2tzaXplIj5UaHJlYWRTdGFja1NpemU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL3JpZ2h0LmdpZiIgLz4gPGEgaHJlZj0ibW9kX3VuaXhkLmh0bWwjdXNlciI+VXNlcjwvYT48L2xpPgo8L3VsPgo8aDM+QnVnZml4IGNoZWNrbGlzdDwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2h0dHBkL0NIQU5HRVNfMi40Ij5odHRwZCBjaGFuZ2Vsb2c8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9X19vcGVuX18mYW1wO2xpc3RfaWQ9MTQ0NTMyJmFtcDtwcm9kdWN0PUFwYWNoZSUyMGh0dHBkLTImYW1wO3F1ZXJ5X2Zvcm1hdD1zcGVjaWZpYyZhbXA7b3JkZXI9Y2hhbmdlZGRhdGUlMjBERVNDJTJDcHJpb3JpdHklMkNidWdfc2V2ZXJpdHkmYW1wO2NvbXBvbmVudD1tcG1fd29ya2VyIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bXBtX3dvcmtlciI+UmVwb3J0IGEgYnVnPC9hPjwvbGk+PC91bD48aDM+U2llaGUgYXVjaDwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48YSBocmVmPSIuLi9iaW5kLmh0bWwiPkJlc3RpbW1lbiBkZXIgdm9tIEFwYWNoZSB2ZXJ3ZW5kZXRlbiBBZHJlc3NlbgogIHVuZCBQb3J0czwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPktvbW1lbnRhcmU8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJob3ctaXQtd29ya3MiIGlkPSJob3ctaXQtd29ya3MiPkFyYmVpdHN3ZWlzZTwvYT4gPGEgdGl0bGU9IlBlcm1hbmVudCBsaW5rIiBocmVmPSIjaG93LWl0LXdvcmtzIiBjbGFzcz0icGVybWFsaW5rIj4mcGFyYTs8L2E+PC9oMj4KICAgIDxwPkVpbiBlaW56ZWxuZXIgU3RldWVycHJvemVzcyAoZGVyIEVsdGVybnByb3plc3MpIGlzdCBm/HIgZGVuCiAgICBTdGFydCBkZXIgS2luZHByb3plc3NlIHZlcmFudHdvcnRsaWNoLiBKZWRlciBLaW5kcHJvemVzcyBlcnN0ZWxsdCBlaW5lCiAgICBmZXN0ZSBBbnphaGwgdm9uIFNlcnZlci1UaHJlYWRzLCB3aWUgZHVyY2ggZGllIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjdGhyZWFkc3BlcmNoaWxkIj5UaHJlYWRzUGVyQ2hpbGQ8L2E+PC9jb2RlPi1EaXJla3RpdmUKICAgIGFuZ2VnZWJlbiwgc293aWUgZWluZW4gIkxpc3RlbmVyLVRocmVhZCIsIGRlciBhdWYgVmVyYmluZHVuZ2VuIHdhcnRldCB1bmQKICAgIGRpZXNlIGFuIGVpbmVuIFNlcnZlci1UaHJlYWQgenVyIEJlYXJiZWl0dW5nIHdlaXRlcnJlaWNodCwgc29iYWxkIHNpZQogICAgZWludHJlZmZlbi48L3A+CgogICAgPHA+RGVyIEFwYWNoZSB2ZXJzdWNodCBpbW1lciwgZWluZW4gVm9ycmF0IHZvbiA8ZGZuPmZyZWllbjwvZGZuPiBvZGVyCiAgICB1bmJlc2No5GZ0aWd0ZW4gVGhyZWFkcyB6dSB2ZXJ3YWx0ZW4sIGRpZSB6dXIgQmVkaWVudW5nCiAgICBoZXJlaW5rb21tZW5kZXIgQW5mcmFnZW4gYmVyZWl0IHN0ZWhlbi4gQXVmIGRpZXNlIFdlaXNlIGJyYXVjaGVuCiAgICBDbGllbnRzIG5pY2h0IGF1ZiBkaWUgRXJzdGVsbHVuZyBlaW5lcyBuZXVlbiBUaHJlYWRzIG9kZXIgUHJvemVzc2VzCiAgICB6dSB3YXJ0ZW4sIGJldm9yIGlocmUgQW5mcmFnZSBiZWRpZW50IHdlcmRlbiBrYW5uLiBEaWUgQW56YWhsIGRlcgogICAgUHJvemVzc2UsIGRpZSBhbmZhbmdzIGdlc3RhcnRldCB3aXJkLCB3aXJkIG1pdCBkZXIgRGlyZWt0aXZlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI3N0YXJ0c2VydmVycyI+U3RhcnRTZXJ2ZXJzPC9hPjwvY29kZT4gZmVzdGdlbGVndC4KICAgIERhbm4sIHfkaHJlbmQgZGVzIEJldHJpZWJlcywgYmVyZWNobmV0IGRlciBBcGFjaGUgZGllIEdlc2FtdHphaGwKICAgIGRlciB1bmJlc2No5GZ0aWd0ZW4gVGhyZWFkcyB1bmQgZm9ya3Qgb2RlciBiZWVuZGV0IFByb3plc3NlLCB1bSBkaWVzZQogICAgQW56YWhsIGlubmVyaGFsYiBkZXIgZHVyY2ggPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9jb21tb24uaHRtbCNtaW5zcGFyZXRocmVhZHMiPk1pblNwYXJlVGhyZWFkczwvYT48L2NvZGU+IHVuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI21heHNwYXJldGhyZWFkcyI+TWF4U3BhcmVUaHJlYWRzPC9hPjwvY29kZT4gYW5nZWdlYmVuZW4gR3JlbnplbgogICAgenUgaGFsdGVuLiBEYSBkaWVzZXIgUHJvemVzcyBzZWhyIHNlbGJzdHJlZ3VsaWVyZW5kIGlzdCwgaXN0IGVzIG51ciBzZWx0ZW4KICAgIG5vdHdlbmRpZywgZGllIFZvcmVpbnN0ZWxsdW5nIGRpZXNlciBEaXJla3RpdmVuIHp1IORuZGVybi4gRGllCiAgICBtYXhpbWFsZSBBbnphaGwgQ2xpZW50cywgZGllIGdsZWljaHplaXRpZyBiZWRpZW50IHdlcmRlbiBrYW5uIChkLmguCiAgICBkaWUgbWF4aW1hbGUgR2VzYW10emFobCBkZXIgVGhyZWFkcyBpbiBhbGxlbiBQcm96ZXNzZW4pLCB3aXJkIG1pdCBkZXIKICAgIERpcmVrdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI21heGNsaWVudHMiPk1heENsaWVudHM8L2E+PC9jb2RlPgogICAgZmVzdGdlbGVndC4gRGllIG1heGltYWxlIEFuemFobCBkZXIgYWt0aXZlbiBLaW5kcHJvemVzc2UgZXJnaWJ0IHNpY2ggYXVzCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI21heGNsaWVudHMiPk1heENsaWVudHM8L2E+PC9jb2RlPiBkaXZpZGllcnQgZHVyY2gKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjdGhyZWFkc3BlcmNoaWxkIj5UaHJlYWRzUGVyQ2hpbGQ8L2E+PC9jb2RlPi48L3A+CgogICAgPHA+WndlaSBEaXJla3RpdmVuIGxlZ2VuIGhhcnRlIExpbWl0cyBm/HIgZGllIEFuemFobCBkZXIgYWt0aXZlbgogICAgS2luZHByb3plc3NlIGZlc3QgdW5kIGv2bm5lbiBudXIgZ2XkbmRlcnQgd2VyZGVuLCBpbmRlbSBkZXIgU2VydmVyCiAgICBrb21wbGV0dCBnZXN0b3BwdCB1bmQgZGFubiB3aWVkZXIgbmV1IGdlc3RhcnRldCB3aXJkLiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI3NlcnZlcmxpbWl0Ij5TZXJ2ZXJMaW1pdDwvYT48L2NvZGU+IHN0ZWxsdCBkaWUgb2JlcmUgR3JlbnplIGb8cgogICAgZGllIEFuemFobCBkZXIgYWt0aXZlbiBLaW5kcHJvemVzc2UgZGFyIHVuZCBtdXNzIGdy9t9lciBvZGVyCiAgICBnbGVpY2ggZGVtIFF1b3RpZW50ZW4gYXVzIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbWF4Y2xpZW50cyI+TWF4Q2xpZW50czwvYT48L2NvZGU+IHVuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI3RocmVhZHNwZXJjaGlsZCI+VGhyZWFkc1BlckNoaWxkPC9hPjwvY29kZT4gc2Vpbi4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9jb21tb24uaHRtbCN0aHJlYWRsaW1pdCI+VGhyZWFkTGltaXQ8L2E+PC9jb2RlPiBpc3QgZGllIG9iZXJlIEdyZW56ZSBm/HIKICAgIGRpZSBBbnphaGwgZGVyIFNlcnZlci1UaHJlYWRzIHVuZCBtdXNzIGdy9t9lciBvZGVyIGdsZWljaAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9jb21tb24uaHRtbCN0aHJlYWRzcGVyY2hpbGQiPlRocmVhZHNQZXJDaGlsZDwvYT48L2NvZGU+IHNlaW4uIFNvZmVybiBm/HIKICAgIGRpZXNlIERpcmVrdGl2ZW4ga2VpbmUgVm9yZWluc3RlbGx1bmdlbiB2ZXJ3ZW5kZXQgd2VyZGVuLCBzb2xsdGVuIHNpZSB2b3IKICAgIGFsbGVuIGFuZGVyZW4gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL3dvcmtlci5odG1sIj53b3JrZXI8L2E+PC9jb2RlPi1EaXJla3RpdmVuIHBsYXR6aWVydCB3ZXJkZW4uPC9wPgoKICAgIDxwPk5lYmVuIGRlbiBub3JtYWxlbiBha3RpdmVuIEtpbmRwcm96ZXNzZW4gZ2lidCBlcyBt9mdsaWNoZXJ3ZWlzZSBub2NoCiAgICB6dXPkdHpsaWNoZSBLaW5kcHJvemVzc2UsIHdlbGNoZSBnZXJhZGUgYmVlbmRldCB3ZXJkZW4sIHdvIGFsbGVyZGluZ3MKICAgIHp1bWluZGVzdCBub2NoIGVpbiBTZXJ2ZXItVGhyZWFkIGVpbmUgZXhpc3RpZXJlbmRlIFZlcmJpbmR1bmcgYmVhcmJlaXRldC4KICAgIE9id29obCBkaWUgdGF0c+RjaGxpY2ggenUgZXJ3YXJ0ZW5kZSBBbnphaGwgZGV1dGxpY2gga2xlaW5lciBpc3QsCiAgICBr9m5uZW4gYmlzIHp1IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbWF4Y2xpZW50cyI+TWF4Q2xpZW50czwvYT48L2NvZGU+CiAgICBzb2xjaGVyIFByb3plc3NlIGF1ZnRyZXRlbi4gRGllc2VzIFZlcmhhbHRlbiBr9m5uZW4gU2llIHZlcm1laWRlbiwKICAgIGluZGVtIFNpZSBkaWUgVGVybWluaWVydW5nIGVpbnplbG5lciBLaW5kcHJvemVzc2Ugd2llIGZvbGd0IGFic2NoYWx0ZW46PC9wPgoKICAgIDx1bD4KICAgICAgIDxsaT5zZXR6ZW4gU2llIGRlbiBXZXJ0IHZvbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI21heHJlcXVlc3RzcGVyY2hpbGQiPk1heFJlcXVlc3RzUGVyQ2hpbGQ8L2E+PC9jb2RlPiBhdWYgTnVsbDwvbGk+CgogICAgICAgPGxpPnNldHplbiBTaWUgZGVuIFdlcnQgdm9uIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbWF4c3BhcmV0aHJlYWRzIj5NYXhTcGFyZVRocmVhZHM8L2E+PC9jb2RlPiBhdWYgZGVuIGdsZWljaGVuIFdlcnQgd2llIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbWF4Y2xpZW50cyI+TWF4Q2xpZW50czwvYT48L2NvZGU+PC9saT4KICAgIDwvdWw+CgogICAgPHA+RWluZSB0eXBpc2NoZSBLb25maWd1cmF0aW9uIGRlciBQcm96ZXNzLVRocmVhZC1TdGV1ZXJ1bmcgZvxyCiAgICBkYXMgTVBNIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC93b3JrZXIuaHRtbCI+d29ya2VyPC9hPjwvY29kZT4ga/ZubnRlIHdpZSBmb2xndCBhdXNzZWhlbjo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIFNlcnZlckxpbWl0ICAgICAgICAgMTY8YnIgLz4KICAgICAgU3RhcnRTZXJ2ZXJzICAgICAgICAgMjxiciAvPgogICAgICBNYXhDbGllbnRzICAgICAgICAgMTUwPGJyIC8+CiAgICAgIE1pblNwYXJlVGhyZWFkcyAgICAgMjU8YnIgLz4KICAgICAgTWF4U3BhcmVUaHJlYWRzICAgICA3NTxiciAvPgogICAgICBUaHJlYWRzUGVyQ2hpbGQgICAgIDI1CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlfkaHJlbmQgZGVyIEVsdGVybnByb3plc3MgdW50ZXIgVW5peCBub3JtYWxlcndlaXNlIGFscwogICAgPGNvZGU+cm9vdDwvY29kZT4gZ2VzdGFydGV0IHdpcmQsIHVtIHNpY2ggYW4gUG9ydCA4MCBiaW5kZW4genUga/ZubmVuLAogICAgd2VyZGVuIGRpZSBLaW5kcHJvemVzc2UgdW5kIFRocmVhZHMgdW50ZXIgZWluZW0gd2VuaWdlciBwcml2aWxlZ2llcnRlbgogICAgQmVudXR6ZXIgZ2VzdGFydGV0LiBEaWUgRGlyZWt0aXZlbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbXBtX2NvbW1vbi5odG1sI3VzZXIiPlVzZXI8L2E+PC9jb2RlPiB1bmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21wbV9jb21tb24uaHRtbCNncm91cCI+R3JvdXA8L2E+PC9jb2RlPiB3ZXJkZW4gZGF6dSB2ZXJ3ZW5kZXQsIGRpZQogICAgUHJpdmlsZWdpZW4gZGVyIEFwYWNoZS1LaW5kcHJvemVzc2UgZmVzdHp1bGVnZW4uIERpZSBLaW5kcHJvemVzc2UKICAgIG38c3NlbiBpbiBkZXIgTGFnZSBzZWluLCBhbGxlIEluaGFsdGUgenUgbGVzZW4sIGRpZSBzaWUgYXVzbGllZmVybgogICAgc29sbGVuLCBzb2xsdGVuIGRhcvxiZXIgaGluYXVzIGplZG9jaCBzbyB3ZW5pZyB3aWUgbfZnbGljaCBSZWNodGUKICAgIGJlc2l0emVuLiBadXPkdHpsaWNoLCBzb2xhbmdlIG5pY2h0IDxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9zdWV4ZWMuaHRtbCI+c3VleGVjPC9hPjwvY29kZT4gdmVyd2VuZGV0IHdpcmQsIGxlZ2VuIGRpZXNlCiAgICBEaXJla3RpdmVuIGF1Y2ggZGllIFByaXZpbGVnaWVuIGZlc3QsIGRpZSB2b24gQ0dJLVNrcmlwdHMKICAgIGdlZXJidCB3ZXJkZW4uPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tcG1fY29tbW9uLmh0bWwjbWF4cmVxdWVzdHNwZXJjaGlsZCI+TWF4UmVxdWVzdHNQZXJDaGlsZDwvYT48L2NvZGU+CiAgICBiZXN0aW1tdCwgd2llIGjkdWZpZyBkZXIgU2VydmVyIFByb3plc3NlIGVybmV1ZXJ0LCBpbmRlbSBlciBhbHRlCiAgICBiZWVuZGV0IHVuZCBuZXVlIHN0YXJ0ZXQuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5WZXJm/GdiYXJlIFNwcmFjaGVuOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL3dvcmtlci5odG1sIiB0aXRsZT0iRGV1dHNjaCI+Jm5ic3A7ZGUmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZW4vbW9kL3dvcmtlci5odG1sIiBocmVmbGFuZz0iZW4iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvbW9kL3dvcmtlci5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL21vZC93b3JrZXIuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci9tb2Qvd29ya2VyLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Lb21tZW50YXJlPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIExpYmVyYS5jaGF0LCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL3RydW5rL21vZC93b3JrZXIuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMjMgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpemVuemllcnQgdW50ZXIgZGVyIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGU8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPkRpcmVrdGl2ZW48L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2VpdGVuaW5kZXg8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+