PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2Rfc2Vzc2lvbl9jcnlwdG8gLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX3Nlc3Npb25fY3J5cHRvPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX3Nlc3Npb25fY3J5cHRvLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX3Nlc3Npb25fY3J5cHRvLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNlc3Npb24gZW5jcnlwdGlvbiBzdXBwb3J0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4cGVyaW1lbnRhbDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPk1vZHVsZaBJZGVudGlmaWVyOjwvYT48L3RoPjx0ZD5zZXNzaW9uX2NyeXB0b19tb2R1bGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTb3VyY2VGaWxlIj5Tb3VyY2WgRmlsZTo8L2E+PC90aD48dGQ+bW9kX3Nlc3Npb25fY3J5cHRvLmM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gQXBhY2hlIDIuMyBhbmQgbGF0ZXI8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgoKICAgIDxkaXYgY2xhc3M9Indhcm5pbmciPjxoMz5XYXJuaW5nPC9oMz4KICAgICAgPHA+VGhlIHNlc3Npb24gbW9kdWxlcyBtYWtlIHVzZSBvZiBIVFRQIGNvb2tpZXMsIGFuZCBhcyBzdWNoIGNhbiBmYWxsCiAgICAgIHZpY3RpbSB0byBDcm9zcyBTaXRlIFNjcmlwdGluZyBhdHRhY2tzLCBvciBleHBvc2UgcG90ZW50aWFsbHkgcHJpdmF0ZQogICAgICBpbmZvcm1hdGlvbiB0byBjbGllbnRzLiBQbGVhc2UgZW5zdXJlIHRoYXQgdGhlIHJlbGV2YW50IHJpc2tzIGhhdmUKICAgICAgYmVlbiB0YWtlbiBpbnRvIGFjY291bnQgYmVmb3JlIGVuYWJsaW5nIHRoZSBzZXNzaW9uIGZ1bmN0aW9uYWxpdHkgb24KICAgICAgeW91ciBzZXJ2ZXIuPC9wPgogICAgPC9kaXY+CgogICAgPHA+VGhpcyBzdWJtb2R1bGUgb2YgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zZXNzaW9uLmh0bWwiPm1vZF9zZXNzaW9uPC9hPjwvY29kZT4gcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlCiAgICBlbmNyeXB0aW9uIG9mIHVzZXIgc2Vzc2lvbnMgYmVmb3JlIGJlaW5nIHdyaXR0ZW4gdG8gYSBsb2NhbCBkYXRhYmFzZSwgb3IKICAgIHdyaXR0ZW4gdG8gYSByZW1vdGUgYnJvd3NlciB2aWEgYW4gSFRUUCBjb29raWUuPC9wPgoKICAgIDxwPlRoaXMgY2FuIGhlbHAgcHJvdmlkZSBwcml2YWN5IHRvIHVzZXIgc2Vzc2lvbnMgd2hlcmUgdGhlIGNvbnRlbnRzIG9mCiAgICB0aGUgc2Vzc2lvbiBzaG91bGQgYmUga2VwdCBwcml2YXRlIGZyb20gdGhlIHVzZXIsIG9yIHdoZXJlIHByb3RlY3Rpb24gaXMKICAgIG5lZWRlZCBhZ2FpbnN0IHRoZSBlZmZlY3RzIG9mIGNyb3NzIHNpdGUgc2NyaXB0aW5nIGF0dGFja3MuPC9wPgoKICAgIDxwPkZvciBtb3JlIGRldGFpbHMgb24gdGhlIHNlc3Npb24gaW50ZXJmYWNlLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAgICB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zZXNzaW9uLmh0bWwiPm1vZF9zZXNzaW9uPC9hPjwvY29kZT4gbW9kdWxlLjwvcD4KCjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2Jhc2ljdXNhZ2UiPkJhc2ljIFVzYWdlPC9hPjwvbGk+CjwvdWw+PGgzIGNsYXNzPSJkaXJlY3RpdmVzIj5EaXJlY3RpdmVzPC9oMz4KPHVsIGlkPSJ0b2MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzZXNzaW9uY3J5cHRvY2lwaGVyIj5TZXNzaW9uQ3J5cHRvQ2lwaGVyPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Nlc3Npb25jcnlwdG9kcml2ZXIiPlNlc3Npb25DcnlwdG9Ecml2ZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc2Vzc2lvbmNyeXB0b3Bhc3NwaHJhc2UiPlNlc3Npb25DcnlwdG9QYXNzcGhyYXNlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3Nlc3Npb25jcnlwdG9wYXNzcGhyYXNlZmlsZSI+U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2VGaWxlPC9hPjwvbGk+CjwvdWw+CjxoMz5CdWdmaXggY2hlY2tsaXN0PC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvaHR0cGQvQ0hBTkdFU18yLjQiPmh0dHBkIGNoYW5nZWxvZzwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1fX29wZW5fXyZhbXA7bGlzdF9pZD0xNDQ1MzImYW1wO3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7cXVlcnlfZm9ybWF0PXNwZWNpZmljJmFtcDtvcmRlcj1jaGFuZ2VkZGF0ZSUyMERFU0MlMkNwcmlvcml0eSUyQ2J1Z19zZXZlcml0eSZhbXA7Y29tcG9uZW50PW1vZF9zZXNzaW9uX2NyeXB0byI+S25vd24gaXNzdWVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7Y29tcG9uZW50PW1vZF9zZXNzaW9uX2NyeXB0byI+UmVwb3J0IGEgYnVnPC9hPjwvbGk+PC91bD48aDM+U2VlIGFsc288L2gzPgo8dWwgY2xhc3M9InNlZWFsc28iPgo8bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zZXNzaW9uLmh0bWwiPm1vZF9zZXNzaW9uPC9hPjwvY29kZT48L2xpPgo8bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zZXNzaW9uX2Nvb2tpZS5odG1sIj5tb2Rfc2Vzc2lvbl9jb29raWU8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Nlc3Npb25fZGJkLmh0bWwiPm1vZF9zZXNzaW9uX2RiZDwvYT48L2NvZGU+PC9saT4KPGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImJhc2ljdXNhZ2UiIGlkPSJiYXNpY3VzYWdlIj5CYXNpYyBVc2FnZTwvYT48L2gyPgoKICAgICAgPHA+VG8gY3JlYXRlIGEgc2ltcGxlIGVuY3J5cHRlZCBzZXNzaW9uIGFuZCBzdG9yZSBpdCBpbiBhIGNvb2tpZSBjYWxsZWQKICAgICAgPHZhcj5zZXNzaW9uPC92YXI+LCBjb25maWd1cmUgdGhlIHNlc3Npb24gYXMgZm9sbG93czo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+QnJvd3NlciBiYXNlZCBlbmNyeXB0ZWQgc2Vzc2lvbjwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlNlc3Npb24gT24KU2Vzc2lvbkNvb2tpZU5hbWUgc2Vzc2lvbiBwYXRoPS8KU2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2Ugc2VjcmV0PC9wcmU+CjwvZGl2PgoKICAgICAgPHA+VGhlIHNlc3Npb24gd2lsbCBiZSBlbmNyeXB0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LiBEaWZmZXJlbnQgc2VydmVycyBjYW4KICAgICAgYmUgY29uZmlndXJlZCB0byBzaGFyZSBzZXNzaW9ucyBieSBlbnN1cmluZyB0aGUgc2FtZSBlbmNyeXB0aW9uIGtleSBpcyB1c2VkCiAgICAgIG9uIGVhY2ggc2VydmVyLjwvcD4KCiAgICAgIDxwPklmIHRoZSBlbmNyeXB0aW9uIGtleSBpcyBjaGFuZ2VkLCBzZXNzaW9ucyB3aWxsIGJlIGludmFsaWRhdGVkCiAgICAgIGF1dG9tYXRpY2FsbHkuPC9wPgoKICAgICAgPHA+Rm9yIGRvY3VtZW50YXRpb24gb24gaG93IHRoZSBzZXNzaW9uIGNhbiBiZSB1c2VkIHRvIHN0b3JlIHVzZXJuYW1lCiAgICAgIGFuZCBwYXNzd29yZCBkZXRhaWxzLCBzZWUgdGhlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9mb3JtLmh0bWwiPm1vZF9hdXRoX2Zvcm08L2E+PC9jb2RlPiBtb2R1bGUuPC9wPgoKICAgIDwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTZXNzaW9uQ3J5cHRvQ2lwaGVyIiBpZD0iU2Vzc2lvbkNyeXB0b0NpcGhlciI+U2Vzc2lvbkNyeXB0b0NpcGhlcjwvYT4gPGEgbmFtZT0ic2Vzc2lvbmNyeXB0b2NpcGhlciIgaWQ9InNlc3Npb25jcnlwdG9jaXBoZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRoZSBjcnlwdG8gY2lwaGVyIHRvIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgc2Vzc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TZXNzaW9uQ3J5cHRvQ2lwaGVyIDx2YXI+bmFtZTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5hZXMyNTY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHBlcmltZW50YWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX3Nlc3Npb25fY3J5cHRvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIEFwYWNoZSAyLjMuMCBhbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2Vzc2lvbkNyeXB0b0NpcGhlcjwvY29kZT4gZGlyZWN0aXZlIGFsbG93cyB0aGUgY2lwaGVyIHRvCiAgICBiZSB1c2VkIGR1cmluZyBlbmNyeXB0aW9uLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgY2lwaGVyIGRlZmF1bHRzIHRvCiAgICA8Y29kZT5hZXMyNTY8L2NvZGU+LjwvcD4KCiAgICA8cD5Qb3NzaWJsZSB2YWx1ZXMgZGVwZW5kIG9uIHRoZSBjcnlwdG8gZHJpdmVyIGluIHVzZSwgYW5kIGNvdWxkIGJlIG9uZSBvZjo8L3A+CgogICAgPHVsPjxsaT4zZGVzMTkyPC9saT48bGk+YWVzMTI4PC9saT48bGk+YWVzMTkyPC9saT48bGk+YWVzMjU2PC9saT48L3VsPgoKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTZXNzaW9uQ3J5cHRvRHJpdmVyIiBpZD0iU2Vzc2lvbkNyeXB0b0RyaXZlciI+U2Vzc2lvbkNyeXB0b0RyaXZlcjwvYT4gPGEgbmFtZT0ic2Vzc2lvbmNyeXB0b2RyaXZlciIgaWQ9InNlc3Npb25jcnlwdG9kcml2ZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlRoZSBjcnlwdG8gZHJpdmVyIHRvIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgc2Vzc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TZXNzaW9uQ3J5cHRvRHJpdmVyIDx2YXI+bmFtZTwvdmFyPiA8dmFyPltwYXJhbVs9dmFsdWVdXTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5ub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXhwZXJpbWVudGFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9zZXNzaW9uX2NyeXB0bzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiBBcGFjaGUgMi4zLjAgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlNlc3Npb25DcnlwdG9Ecml2ZXI8L2NvZGU+IGRpcmVjdGl2ZSBzcGVjaWZpZXMgdGhlIG5hbWUgb2YKICAgIHRoZSBjcnlwdG8gZHJpdmVyIHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpb24uIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkcml2ZXIgZGVmYXVsdHMKICAgIHRvIHRoZSByZWNvbW1lbmRlZCBkcml2ZXIgY29tcGlsZWQgaW50byBBUFItdXRpbC48L3A+CgogICAgPHA+VGhlIDx2YXI+TlNTPC92YXI+IGNyeXB0byBkcml2ZXIgcmVxdWlyZXMgc29tZSBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmF0aW9uLAogICAgd2hpY2ggYXJlIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXJzIHdpdGggb3B0aW9uYWwgdmFsdWVzIGFmdGVyIHRoZSBkcml2ZXIgbmFtZS48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPk5TUyB3aXRob3V0IGEgY2VydGlmaWNhdGUgZGF0YWJhc2U8L2gzPjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5TZXNzaW9uQ3J5cHRvRHJpdmVyIG5zczwvcHJlPgo8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+TlNTIHdpdGggY2VydGlmaWNhdGUgZGF0YWJhc2U8L2gzPjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5TZXNzaW9uQ3J5cHRvRHJpdmVyIG5zcyBkaXI9Y2VydHM8L3ByZT4KPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPk5TUyB3aXRoIGNlcnRpZmljYXRlIGRhdGFiYXNlIGFuZCBwYXJhbWV0ZXJzPC9oMz48cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+U2Vzc2lvbkNyeXB0b0RyaXZlciBuc3MgZGlyPWNlcnRzIGtleTM9a2V5My5kYiBjZXJ0Nz1jZXJ0Ny5kYiBzZWNtb2Q9c2VjbW9kPC9wcmU+CjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5OU1Mgd2l0aCBwYXRocyBjb250YWluaW5nIHNwYWNlczwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlNlc3Npb25DcnlwdG9Ecml2ZXIgbnNzICJkaXI9TXkgQ2VydHMiIGtleTM9a2V5My5kYiBjZXJ0Nz1jZXJ0Ny5kYiBzZWNtb2Q9c2VjbW9kPC9wcmU+CjwvZGl2PgoKICAgIDxwPlRoZSA8dmFyPk5TUzwvdmFyPiBjcnlwdG8gZHJpdmVyIG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuCiAgICBjb25maWd1cmVkIGJ5IGFub3RoZXIgcGFydCBvZiB0aGUgc2VydmVyLCBmb3IgZXhhbXBsZSBmcm9tCiAgICA8Y29kZT5tb2RfbnNzPC9jb2RlPiBvciA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPi4gSWYgZm91bmQgdG8KICAgIGhhdmUgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQsIGEgd2FybmluZyB3aWxsIGJlIGxvZ2dlZCwgYW5kIHRoZQogICAgZXhpc3RpbmcgY29uZmlndXJhdGlvbiB3aWxsIGhhdmUgdGFrZW4gYWZmZWN0LiAgVG8gYXZvaWQgdGhpcwogICAgd2FybmluZywgdXNlIHRoZSBub2luaXQgcGFyYW1ldGVyIGFzIGZvbGxvd3MuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5OU1Mgd2l0aCBjZXJ0aWZpY2F0ZSBkYXRhYmFzZTwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlNlc3Npb25DcnlwdG9Ecml2ZXIgbnNzIG5vaW5pdDwvcHJlPgo8L2Rpdj4KCiAgICA8cD5UbyBwcmV2ZW50IGNvbmZ1c2lvbiwgZW5zdXJlIHRoYXQgYWxsIG1vZHVsZXMgcmVxdWlyaW5nIE5TUyBhcmUgY29uZmlndXJlZCB3aXRoCiAgICBpZGVudGljYWwgcGFyYW1ldGVycy48L3A+CgogICAgPHA+VGhlIDx2YXI+b3BlbnNzbDwvdmFyPiBjcnlwdG8gZHJpdmVyIHN1cHBvcnRzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5CiAgICB0aGUgZW5naW5lIHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpb24uPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5PcGVuU1NMIHdpdGggZW5naW5lIHN1cHBvcnQ8L2gzPjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5TZXNzaW9uQ3J5cHRvRHJpdmVyIG9wZW5zc2wgZW5naW5lPW5hbWU8L3ByZT4KPC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlNlc3Npb25DcnlwdG9QYXNzcGhyYXNlIiBpZD0iU2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2UiPlNlc3Npb25DcnlwdG9QYXNzcGhyYXNlPC9hPiA8YSBuYW1lPSJzZXNzaW9uY3J5cHRvcGFzc3BocmFzZSIgaWQ9InNlc3Npb25jcnlwdG9wYXNzcGhyYXNlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5UaGUga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgc2Vzc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TZXNzaW9uQ3J5cHRvUGFzc3BocmFzZSA8dmFyPnNlY3JldDwvdmFyPiBbIDx2YXI+c2VjcmV0PC92YXI+IC4uLiBdIDwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5ub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXhwZXJpbWVudGFsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9zZXNzaW9uX2NyeXB0bzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiBBcGFjaGUgMi4zLjAgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlNlc3Npb25DcnlwdG9QYXNzcGhyYXNlPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoZSBrZXlzCiAgICB0byBiZSB1c2VkIHRvIGVuYWJsZSBzeW1tZXRyaWNhbCBlbmNyeXB0aW9uIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgc2Vzc2lvbiBiZWZvcmUKICAgIHdyaXRpbmcgdGhlIHNlc3Npb24sIG9yIGRlY3J5cHRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBzZXNzaW9uIGFmdGVyIHJlYWRpbmcgdGhlCiAgICBzZXNzaW9uLjwvcD4KCiAgICA8cD5LZXlzIGFyZSBtb3JlIHNlY3VyZSB3aGVuIHRoZXkgYXJlIGxvbmcsIGFuZCBjb25zaXN0IG9mIHRydWx5IHJhbmRvbSBjaGFyYWN0ZXJzLgogICAgQ2hhbmdpbmcgdGhlIGtleSBvbiBhIHNlcnZlciBoYXMgdGhlIGVmZmVjdCBvZiBpbnZhbGlkYXRpbmcgYWxsIGV4aXN0aW5nIHNlc3Npb25zLjwvcD4KCiAgICA8cD5NdWx0aXBsZSBrZXlzIGNhbiBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gc3VwcG9ydCBrZXkgcm90YXRpb24uIFRoZSBmaXJzdCBrZXkKICAgIGxpc3RlZCB3aWxsIGJlIHVzZWQgZm9yIGVuY3J5cHRpb24sIHdoaWxlIGFsbCBrZXlzIGxpc3RlZCB3aWxsIGJlIGF0dGVtcHRlZCBmb3IKICAgIGRlY3J5cHRpb24uIFRvIHJvdGF0ZSBrZXlzIGFjcm9zcyBtdWx0aXBsZSBzZXJ2ZXJzIG92ZXIgYSBwZXJpb2Qgb2YgdGltZSwgYWRkIGEgbmV3CiAgICBzZWNyZXQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCwgYW5kIG9uY2Ugcm9sbGVkIG91dCBjb21wbGV0ZWx5IHRvIGFsbCBzZXJ2ZXJzLCByZW1vdmUKICAgIHRoZSBmaXJzdCBrZXkgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3QuPC9wPgoKICAgIDxwPkFzIG9mIHZlcnNpb24gMi40LjcgaWYgdGhlIHZhbHVlIGJlZ2lucyB3aXRoIDx2YXI+ZXhlYzo8L3Zhcj4gdGhlIHJlc3VsdGluZyBjb21tYW5kCiAgICB3aWxsIGJlIGV4ZWN1dGVkIGFuZCB0aGUgZmlyc3QgbGluZSByZXR1cm5lZCB0byBzdGFuZGFyZCBvdXRwdXQgYnkgdGhlIHByb2dyYW0gd2lsbCBiZQogICAgdXNlZCBhcyB0aGUga2V5LjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHByZT4ja2V5IHVzZWQgYXMtaXMKU2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2Ugc2VjcmV0CgojUnVuIC9wYXRoL3RvL3Byb2dyYW0gdG8gZ2V0IGtleQpTZXNzaW9uQ3J5cHRvUGFzc3BocmFzZSBleGVjOi9wYXRoL3RvL3Byb2dyYW0KCiNSdW4gL3BhdGgvdG8vb3RoZXJQcm9ncmFtIGFuZCBwcm92aWRlIGFyZ3VtZW50cwpTZXNzaW9uQ3J5cHRvUGFzc3BocmFzZSAiZXhlYzovcGF0aC90by9vdGhlclByb2dyYW0gYXJndW1lbnQxIjwvcHJlPjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTZXNzaW9uQ3J5cHRvUGFzc3BocmFzZUZpbGUiIGlkPSJTZXNzaW9uQ3J5cHRvUGFzc3BocmFzZUZpbGUiPlNlc3Npb25DcnlwdG9QYXNzcGhyYXNlRmlsZTwvYT4gPGEgbmFtZT0ic2Vzc2lvbmNyeXB0b3Bhc3NwaHJhc2VmaWxlIiBpZD0ic2Vzc2lvbmNyeXB0b3Bhc3NwaHJhc2VmaWxlIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5GaWxlIGNvbnRhaW5pbmcga2V5cyB1c2VkIHRvIGVuY3J5cHQgdGhlIHNlc3Npb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2VGaWxlIDx2YXI+ZmlsZW5hbWU8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHBlcmltZW50YWw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX3Nlc3Npb25fY3J5cHRvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIEFwYWNoZSAyLjMuMCBhbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2VGaWxlPC9jb2RlPiBkaXJlY3RpdmUgc3BlY2lmaWVzIHRoZQogICAgbmFtZSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWluaW5nIHRoZSBrZXlzIHRvIHVzZSBmb3IgZW5jcnlwdGluZyBvciBkZWNyeXB0aW5nCiAgICB0aGUgc2Vzc2lvbiwgc3BlY2lmaWVkIG9uZSBwZXIgbGluZS4gVGhlIGZpbGUgaXMgcmVhZCBvbiBzZXJ2ZXIgc3RhcnQsIGFuZCBhIGdyYWNlZnVsCiAgICByZXN0YXJ0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvciBodHRwZCB0byBwaWNrIHVwIGNoYW5nZXMgdG8gdGhlIGtleXMuPC9wPgoKICAgIDxwPlVubGlrZSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2Vzc2lvbkNyeXB0b1Bhc3NwaHJhc2U8L2NvZGU+IGRpcmVjdGl2ZSwgdGhlIGtleXMgYXJlCiAgICBub3QgZXhwb3NlZCB3aXRoaW4gdGhlIGh0dHBkIGNvbmZpZ3VyYXRpb24gYW5kIGNhbiBiZSBoaWRkZW4gYnkgcHJvdGVjdGluZyB0aGUgZmlsZQogICAgYXBwcm9wcmlhdGVseS48L3A+CgogICAgPHA+TXVsdGlwbGUga2V5cyBjYW4gYmUgc3BlY2lmaWVkIGluIG9yZGVyIHRvIHN1cHBvcnQga2V5IHJvdGF0aW9uLiBUaGUgZmlyc3Qga2V5CiAgICBsaXN0ZWQgd2lsbCBiZSB1c2VkIGZvciBlbmNyeXB0aW9uLCB3aGlsZSBhbGwga2V5cyBsaXN0ZWQgd2lsbCBiZSBhdHRlbXB0ZWQgZm9yCiAgICBkZWNyeXB0aW9uLiBUbyByb3RhdGUga2V5cyBhY3Jvc3MgbXVsdGlwbGUgc2VydmVycyBvdmVyIGEgcGVyaW9kIG9mIHRpbWUsIGFkZCBhIG5ldwogICAgc2VjcmV0IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QsIGFuZCBvbmNlIHJvbGxlZCBvdXQgY29tcGxldGVseSB0byBhbGwgc2VydmVycywgcmVtb3ZlCiAgICB0aGUgZmlyc3Qga2V5IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LjwvcD4KCgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9zZXNzaW9uX2NyeXB0by5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvbW9kL21vZF9zZXNzaW9uX2NyeXB0by5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50czwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Nlc3Npb25fY3J5cHRvLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsgCiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj5Db21tZW50cyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgcGFnZSBhdCB0aGUgbW9tZW50LjxcL2Rpdj4nKTsKICAgIH0KfSkod2luZG93LCBkb2N1bWVudCk7Ci8vLS0+PCFdXT48L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMjAxNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+