PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYXV0aG56X2xkYXAgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2F1dGhuel9sZGFwPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFsbG93cyBhbiBMREFQIGRpcmVjdG9yeSB0byBiZSB1c2VkIHRvIHN0b3JlIHRoZSBkYXRhYmFzZQpmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmF1dGhuel9sZGFwX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXAuYzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiB2ZXJzaW9uIDIuMSBhbmQgbGF0ZXI8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgoKICAgIDxwPlRoaXMgbW9kdWxlIGFsbG93cyBhdXRoZW50aWNhdGlvbiBmcm9udC1lbmRzIHN1Y2ggYXMKICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+IHRvIGF1dGhlbnRpY2F0ZSB1c2VycyB0aHJvdWdoCiAgICBhbiBsZGFwIGRpcmVjdG9yeS48L3A+CgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOjwvcD4KCiAgICA8dWw+CiAgICAgIDxsaT5Lbm93biB0byBzdXBwb3J0IHRoZSA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZy8iPk9wZW5MREFQIFNESzwvYT4gKGJvdGggMS54CiAgICAgIGFuZCAyLngpLCA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVyLm5vdmVsbC5jb20vbmRrL2NsZGFwLmh0bSI+CiAgICAgIE5vdmVsbCBMREFQIFNESzwvYT4gYW5kIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmlwbGFuZXQuY29tL2Rvd25sb2Fkcy9kZXZlbG9wZXIvIj5pUGxhbmV0CiAgICAgIChOZXRzY2FwZSk8L2E+IFNESy48L2xpPgoKICAgICAgPGxpPkNvbXBsZXggYXV0aG9yaXphdGlvbiBwb2xpY2llcyBjYW4gYmUgaW1wbGVtZW50ZWQgYnkKICAgICAgcmVwcmVzZW50aW5nIHRoZSBwb2xpY3kgd2l0aCBMREFQIGZpbHRlcnMuPC9saT4KCiAgICAgIDxsaT5Vc2VzIGV4dGVuc2l2ZSBjYWNoaW5nIG9mIExEQVAgb3BlcmF0aW9ucyB2aWEgPGEgaHJlZj0ibW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+LjwvbGk+CgogICAgICA8bGk+U3VwcG9ydCBmb3IgTERBUCBvdmVyIFNTTCAocmVxdWlyZXMgdGhlIE5ldHNjYXBlIFNESykgb3IKICAgICAgVExTIChyZXF1aXJlcyB0aGUgT3BlbkxEQVAgMi54IFNESyBvciBOb3ZlbGwgTERBUCBTREspLjwvbGk+CiAgICA8L3VsPgoKICAgIDxwPldoZW4gdXNpbmcgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2Jhc2ljLmh0bWwiPm1vZF9hdXRoX2Jhc2ljPC9hPjwvY29kZT4sIHRoaXMgbW9kdWxlIGlzIGludm9rZWQKICAgIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2Jhc2ljLmh0bWwjYXV0aGJhc2ljcHJvdmlkZXIiPkF1dGhCYXNpY1Byb3ZpZGVyPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSB3aXRoIHRoZSA8Y29kZT5sZGFwPC9jb2RlPiB2YWx1ZS48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbnRlbnRzIj5Db250ZW50czwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNnY2F2ZWF0cyI+R2VuZXJhbCBjYXZlYXRzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI29wZXJhdGlvbiI+T3BlcmF0aW9uPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlcXVpcmVkaXJlY3RpdmVzIj5UaGUgUmVxdWlyZSBEaXJlY3RpdmVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN1c2luZ3RscyI+VXNpbmcgVExTPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3VzaW5nc3NsIj5Vc2luZyBTU0w8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZXhwb3NlZCI+RXhwb3NpbmcgTG9naW4gSW5mb3JtYXRpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWN0aXZlZGlyZWN0b3J5Ij5Vc2luZyBBY3RpdmUgRGlyZWN0b3J5PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2Zyb250cGFnZSI+VXNpbmcgTWljcm9zb2Z0CiAgICBGcm9udFBhZ2Ugd2l0aCBtb2RfYXV0aG56X2xkYXA8L2E+PC9saT4KPC91bD48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhsZGFwYXV0aG9yaXplcHJlZml4Ij5BdXRoTERBUEF1dGhvcml6ZVByZWZpeDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcGJpbmRhdXRob3JpdGF0aXZlIj5BdXRoTERBUEJpbmRBdXRob3JpdGF0aXZlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2F1dGhsZGFwYmluZGRuIj5BdXRoTERBUEJpbmRETjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcGJpbmRwYXNzd29yZCI+QXV0aExEQVBCaW5kUGFzc3dvcmQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBjaGFyc2V0Y29uZmlnIj5BdXRoTERBUENoYXJzZXRDb25maWc8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBjb21wYXJlYXN1c2VyIj5BdXRoTERBUENvbXBhcmVBc1VzZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBjb21wYXJlZG5vbnNlcnZlciI+QXV0aExEQVBDb21wYXJlRE5PblNlcnZlcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcGRlcmVmZXJlbmNlYWxpYXNlcyI+QXV0aExEQVBEZXJlZmVyZW5jZUFsaWFzZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBncm91cGF0dHJpYnV0ZSI+QXV0aExEQVBHcm91cEF0dHJpYnV0ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcGdyb3VwYXR0cmlidXRlaXNkbiI+QXV0aExEQVBHcm91cEF0dHJpYnV0ZUlzRE48L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBpbml0aWFsYmluZGFzdXNlciI+QXV0aExEQVBJbml0aWFsQmluZEFzVXNlcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcGluaXRpYWxiaW5kcGF0dGVybiI+QXV0aExEQVBJbml0aWFsQmluZFBhdHRlcm48L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBtYXhzdWJncm91cGRlcHRoIj5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGg8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXByZW1vdGV1c2VyYXR0cmlidXRlIj5BdXRoTERBUFJlbW90ZVVzZXJBdHRyaWJ1dGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXByZW1vdGV1c2VyaXNkbiI+QXV0aExEQVBSZW1vdGVVc2VySXNETjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcHNlYXJjaGFzdXNlciI+QXV0aExEQVBTZWFyY2hBc1VzZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYXV0aGxkYXBzdWJncm91cGF0dHJpYnV0ZSI+QXV0aExEQVBTdWJHcm91cEF0dHJpYnV0ZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcHN1Ymdyb3VwY2xhc3MiPkF1dGhMREFQU3ViR3JvdXBDbGFzczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhdXRobGRhcHVybCI+QXV0aExEQVBVcmw8L2E+PC9saT4KPC91bD4KPGgzPkJ1Z2ZpeCBjaGVja2xpc3Q8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9odHRwZC9DSEFOR0VTXzIuNCI+aHR0cGQgY2hhbmdlbG9nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9idWdfc3RhdHVzPV9fb3Blbl9fJmFtcDtsaXN0X2lkPTE0NDUzMiZhbXA7cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtxdWVyeV9mb3JtYXQ9c3BlY2lmaWMmYW1wO29yZGVyPWNoYW5nZWRkYXRlJTIwREVTQyUyQ3ByaW9yaXR5JTJDYnVnX3NldmVyaXR5JmFtcDtjb21wb25lbnQ9bW9kX2F1dGhuel9sZGFwIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bW9kX2F1dGhuel9sZGFwIj5SZXBvcnQgYSBidWc8L2E+PC9saT48L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhfYmFzaWMuaHRtbCI+bW9kX2F1dGhfYmFzaWM8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X3VzZXIuaHRtbCI+bW9kX2F1dGh6X3VzZXI8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2dyb3VwZmlsZS5odG1sIj5tb2RfYXV0aHpfZ3JvdXBmaWxlPC9hPjwvY29kZT48L2xpPgo8bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iY29udGVudHMiIGlkPSJjb250ZW50cyI+Q29udGVudHM8L2E+PC9oMj4KCiAgICA8dWw+CiAgICAgIDxsaT4gPGEgaHJlZj0iI2djYXZlYXRzIj5HZW5lcmFsIGNhdmVhdHM8L2E+IDwvbGk+CiAgICAgIDxsaT4gPGEgaHJlZj0iI29wZXJhdGlvbiI+T3BlcmF0aW9uPC9hPgoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+PGEgaHJlZj0iI2F1dGhlbnBoYXNlIj5UaGUgQXV0aGVudGljYXRpb24KICAgICAgICAgIFBoYXNlPC9hPjwvbGk+CgogICAgICAgICAgPGxpPjxhIGhyZWY9IiNhdXRob3JwaGFzZSI+VGhlIEF1dGhvcml6YXRpb24KICAgICAgICAgIFBoYXNlPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9saT4KCiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIjcmVxdWlyZWRpcmVjdGl2ZXMiPlRoZSBSZXF1aXJlIERpcmVjdGl2ZXM8L2E+CgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT48YSBocmVmPSIjcmVxdXNlciI+UmVxdWlyZSBsZGFwLXVzZXI8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBocmVmPSIjcmVxZ3JvdXAiPlJlcXVpcmUgbGRhcC1ncm91cDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9IiNyZXFkbiI+UmVxdWlyZSBsZGFwLWRuPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgaHJlZj0iI3JlcWF0dHJpYnV0ZSI+UmVxdWlyZSBsZGFwLWF0dHJpYnV0ZTwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9IiNyZXFmaWx0ZXIiPlJlcXVpcmUgbGRhcC1maWx0ZXI8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgoKICAgICAgPGxpPjxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiN1c2luZ3RscyI+VXNpbmcgVExTPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIjdXNpbmdzc2wiPlVzaW5nIFNTTDwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI2V4cG9zZWQiPkV4cG9zaW5nIExvZ2luIEluZm9ybWF0aW9uPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIjYWN0aXZlZGlyZWN0b3J5Ij5Vc2luZyBBY3RpdmUgRGlyZWN0b3J5PC9hPjwvbGk+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSIjZnJvbnRwYWdlIj5Vc2luZyBNaWNyb3NvZnQgRnJvbnRQYWdlIHdpdGgKICAgICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+PC9hPgoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+PGEgaHJlZj0iI2hvd2l0d29ya3MiPkhvdyBJdCBXb3JrczwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9IiNmcGNhdmVhdHMiPkNhdmVhdHM8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgogICAgPC91bD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZ2NhdmVhdHMiIGlkPSJnY2F2ZWF0cyI+R2VuZXJhbCBjYXZlYXRzPC9hPjwvaDI+CjxwPiBUaGlzIG1vZHVsZSBjYWNoZXMgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gcmVzdWx0cyBiYXNlZApvbiB0aGUgY29uZmlndXJhdGlvbiBvZiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPi4gQ2hhbmdlcwptYWRlIHRvIHRoZSBiYWNraW5nIExEQVAgc2VydmVyIHdpbGwgbm90IGJlIGltbWVkaWF0ZWx5IHJlZmxlY3RlZCBvbiB0aGUKSFRUUCBTZXJ2ZXIsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdXNlciBsb2Nrb3V0cy9yZXZvY2F0aW9ucywgCnBhc3N3b3JkIGNoYW5nZXMsIG9yIGNoYW5nZXMgdG8gZ3JvdXAgbWVtYmVyc2hpcHMuICBDb25zdWx0IHRoZSBkaXJlY3RpdmVzIAppbiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPiBmb3IgZGV0YWlscyBvZiB0aGUgY2FjaGUgdHVuYWJsZXMuCjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3BlcmF0aW9uIiBpZD0ib3BlcmF0aW9uIj5PcGVyYXRpb248L2E+PC9oMj4KCiAgICA8cD5UaGVyZSBhcmUgdHdvIHBoYXNlcyBpbiBncmFudGluZyBhY2Nlc3MgdG8gYSB1c2VyLiBUaGUgZmlyc3QKICAgIHBoYXNlIGlzIGF1dGhlbnRpY2F0aW9uLCBpbiB3aGljaCB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPgogICAgYXV0aGVudGljYXRpb24gcHJvdmlkZXIgdmVyaWZpZXMgdGhhdCB0aGUgdXNlcidzIGNyZWRlbnRpYWxzIGFyZSB2YWxpZC4KICAgIFRoaXMgaXMgYWxzbyBjYWxsZWQgdGhlIDxlbT5zZWFyY2gvYmluZDwvZW0+IHBoYXNlLiBUaGUgc2Vjb25kIHBoYXNlIGlzCiAgICBhdXRob3JpemF0aW9uLCBpbiB3aGljaCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGRldGVybWluZXMKICAgIGlmIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgYWxsb3dlZCBhY2Nlc3MgdG8gdGhlIHJlc291cmNlIGluCiAgICBxdWVzdGlvbi4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSA8ZW0+Y29tcGFyZTwvZW0+CiAgICBwaGFzZS48L3A+CgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiByZWdpc3RlcnMgYm90aCBhbiBhdXRobl9sZGFwIGF1dGhlbnRpY2F0aW9uCiAgICBwcm92aWRlciBhbmQgYW4gYXV0aHpfbGRhcCBhdXRob3JpemF0aW9uIGhhbmRsZXIuICBUaGUgYXV0aG5fbGRhcAogICAgYXV0aGVudGljYXRpb24gcHJvdmlkZXIgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sI2F1dGhiYXNpY3Byb3ZpZGVyIj5BdXRoQmFzaWNQcm92aWRlcjwvYT48L2NvZGU+IGRpcmVjdGl2ZQogICAgdXNpbmcgdGhlIDxjb2RlPmxkYXA8L2NvZGU+IHZhbHVlLiBUaGUgYXV0aHpfbGRhcCBoYW5kbGVyIGV4dGVuZHMgdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2NvcmUuaHRtbCNyZXF1aXJlIj5SZXF1aXJlPC9hPjwvY29kZT4gZGlyZWN0aXZlJ3MgYXV0aG9yaXphdGlvbiB0eXBlcwogICAgYnkgYWRkaW5nIDxjb2RlPmxkYXAtdXNlcjwvY29kZT4sIDxjb2RlPmxkYXAtZG48L2NvZGU+IGFuZCA8Y29kZT5sZGFwLWdyb3VwPC9jb2RlPgogICAgdmFsdWVzLjwvcD4KCjxoMz48YSBuYW1lPSJhdXRoZW5waGFzZSIgaWQ9ImF1dGhlbnBoYXNlIj5UaGUgQXV0aGVudGljYXRpb24KICAgIFBoYXNlPC9hPjwvaDM+CgogICAgPHA+RHVyaW5nIHRoZSBhdXRoZW50aWNhdGlvbiBwaGFzZSwgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPgogICAgc2VhcmNoZXMgZm9yIGFuIGVudHJ5IGluIHRoZSBkaXJlY3RvcnkgdGhhdCBtYXRjaGVzIHRoZSB1c2VybmFtZQogICAgdGhhdCB0aGUgSFRUUCBjbGllbnQgcGFzc2VzLiBJZiBhIHNpbmdsZSB1bmlxdWUgbWF0Y2ggaXMgZm91bmQsCiAgICB0aGVuIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4gYXR0ZW1wdHMgdG8gYmluZCB0byB0aGUKICAgIGRpcmVjdG9yeSBzZXJ2ZXIgdXNpbmcgdGhlIEROIG9mIHRoZSBlbnRyeSBwbHVzIHRoZSBwYXNzd29yZAogICAgcHJvdmlkZWQgYnkgdGhlIEhUVFAgY2xpZW50LiBCZWNhdXNlIGl0IGRvZXMgYSBzZWFyY2gsIHRoZW4gYQogICAgYmluZCwgaXQgaXMgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgdGhlIHNlYXJjaC9iaW5kIHBoYXNlLiBIZXJlIGFyZQogICAgdGhlIHN0ZXBzIHRha2VuIGR1cmluZyB0aGUgc2VhcmNoL2JpbmQgcGhhc2UuPC9wPgoKICAgIDxvbD4KICAgICAgPGxpPkdlbmVyYXRlIGEgc2VhcmNoIGZpbHRlciBieSBjb21iaW5pbmcgdGhlIGF0dHJpYnV0ZSBhbmQKICAgICAgZmlsdGVyIHByb3ZpZGVkIGluIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXB1cmwiPkF1dGhMREFQVVJMPC9hPjwvY29kZT4gZGlyZWN0aXZlIHdpdGgKICAgICAgdGhlIHVzZXJuYW1lIHBhc3NlZCBieSB0aGUgSFRUUCBjbGllbnQuPC9saT4KCiAgICAgIDxsaT5TZWFyY2ggdGhlIGRpcmVjdG9yeSB1c2luZyB0aGUgZ2VuZXJhdGVkIGZpbHRlci4gSWYgdGhlCiAgICAgIHNlYXJjaCBkb2VzIG5vdCByZXR1cm4gZXhhY3RseSBvbmUgZW50cnksIGRlbnkgb3IgZGVjbGluZQogICAgICBhY2Nlc3MuPC9saT4KCiAgICAgIDxsaT5GZXRjaCB0aGUgZGlzdGluZ3Vpc2hlZCBuYW1lIG9mIHRoZSBlbnRyeSByZXRyaWV2ZWQgZnJvbQogICAgICB0aGUgc2VhcmNoIGFuZCBhdHRlbXB0IHRvIGJpbmQgdG8gdGhlIExEQVAgc2VydmVyIHVzaW5nIHRoYXQKICAgICAgRE4gYW5kIHRoZSBwYXNzd29yZCBwYXNzZWQgYnkgdGhlIEhUVFAgY2xpZW50LiBJZiB0aGUgYmluZCBpcwogICAgICB1bnN1Y2Nlc3NmdWwsIGRlbnkgb3IgZGVjbGluZSBhY2Nlc3MuPC9saT4KICAgIDwvb2w+CgogICAgPHA+VGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIGFyZSB1c2VkIGR1cmluZyB0aGUgc2VhcmNoL2JpbmQKICAgIHBoYXNlPC9wPgoKICAgIDx0YWJsZT4KICAgICAgCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwdXJsIj5BdXRoTERBUFVSTDwvYT48L2NvZGU+PC90ZD4KCiAgICAgICAgPHRkPlNwZWNpZmllcyB0aGUgTERBUCBzZXJ2ZXIsIHRoZQogICAgICAgIGJhc2UgRE4sIHRoZSBhdHRyaWJ1dGUgdG8gdXNlIGluIHRoZSBzZWFyY2gsIGFzIHdlbGwgYXMgdGhlCiAgICAgICAgZXh0cmEgc2VhcmNoIGZpbHRlciB0byB1c2UuPC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwYmluZGRuIj5BdXRoTERBUEJpbmRETjwvYT48L2NvZGU+PC90ZD4KCiAgICAgICAgPHRkPkFuIG9wdGlvbmFsIEROIHRvIGJpbmQgd2l0aAogICAgICAgIGR1cmluZyB0aGUgc2VhcmNoIHBoYXNlLjwvdGQ+CiAgICAgIDwvdHI+CgogICAgICA8dHI+CiAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcGJpbmRwYXNzd29yZCI+QXV0aExEQVBCaW5kUGFzc3dvcmQ8L2E+PC9jb2RlPjwvdGQ+CgogICAgICAgIDx0ZD5BbiBvcHRpb25hbCBwYXNzd29yZCB0byBiaW5kCiAgICAgICAgd2l0aCBkdXJpbmcgdGhlIHNlYXJjaCBwaGFzZS48L3RkPgogICAgICA8L3RyPgogICAgPC90YWJsZT4KCgo8aDM+PGEgbmFtZT0iYXV0aG9ycGhhc2UiIGlkPSJhdXRob3JwaGFzZSI+VGhlIEF1dGhvcml6YXRpb24gUGhhc2U8L2E+PC9oMz4KCiAgICA8cD5EdXJpbmcgdGhlIGF1dGhvcml6YXRpb24gcGhhc2UsIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4KICAgIGF0dGVtcHRzIHRvIGRldGVybWluZSBpZiB0aGUgdXNlciBpcyBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUKICAgIHJlc291cmNlLiAgTWFueSBvZiB0aGVzZSBjaGVja3MgcmVxdWlyZQogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiB0byBkbyBhIGNvbXBhcmUgb3BlcmF0aW9uIG9uIHRoZQogICAgTERBUCBzZXJ2ZXIuIFRoaXMgaXMgd2h5IHRoaXMgcGhhc2UgaXMgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgdGhlCiAgICBjb21wYXJlIHBoYXNlLiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGFjY2VwdHMgdGhlCiAgICBmb2xsb3dpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9jb3JlLmh0bWwjcmVxdWlyZSI+UmVxdWlyZTwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmVzIHRvIGRldGVybWluZSBpZiB0aGUgY3JlZGVudGlhbHMgYXJlIGFjY2VwdGFibGU6PC9wPgoKICAgIDx1bD4KICAgICAgPGxpPkdyYW50IGFjY2VzcyBpZiB0aGVyZSBpcyBhIDxhIGhyZWY9IiNyZXFncm91cCI+PGNvZGU+UmVxdWlyZSBsZGFwLXVzZXI8L2NvZGU+PC9hPiBkaXJlY3RpdmUsIGFuZCB0aGUKICAgICAgdXNlcm5hbWUgaW4gdGhlIGRpcmVjdGl2ZSBtYXRjaGVzIHRoZSB1c2VybmFtZSBwYXNzZWQgYnkgdGhlCiAgICAgIGNsaWVudC48L2xpPgoKICAgICAgPGxpPkdyYW50IGFjY2VzcyBpZiB0aGVyZSBpcyBhIDxhIGhyZWY9IiNyZXFkbiI+PGNvZGU+UmVxdWlyZQogICAgICBsZGFwLWRuPC9jb2RlPjwvYT4gZGlyZWN0aXZlLCBhbmQgdGhlIEROIGluIHRoZSBkaXJlY3RpdmUgbWF0Y2hlcwogICAgICB0aGUgRE4gZmV0Y2hlZCBmcm9tIHRoZSBMREFQIGRpcmVjdG9yeS48L2xpPgoKICAgICAgPGxpPkdyYW50IGFjY2VzcyBpZiB0aGVyZSBpcyBhIDxhIGhyZWY9IiNyZXFncm91cCI+PGNvZGU+UmVxdWlyZSBsZGFwLWdyb3VwPC9jb2RlPjwvYT4gZGlyZWN0aXZlLCBhbmQKICAgICAgdGhlIEROIGZldGNoZWQgZnJvbSB0aGUgTERBUCBkaXJlY3RvcnkgKG9yIHRoZSB1c2VybmFtZQogICAgICBwYXNzZWQgYnkgdGhlIGNsaWVudCkgb2NjdXJzIGluIHRoZSBMREFQIGdyb3VwIG9yLCBwb3RlbnRpYWxseSwgaW4KICAgICAgb25lIG9mIGl0cyBzdWItZ3JvdXBzLjwvbGk+CgogICAgICA8bGk+R3JhbnQgYWNjZXNzIGlmIHRoZXJlIGlzIGEgPGEgaHJlZj0iI3JlcWF0dHJpYnV0ZSI+CiAgICAgIDxjb2RlPlJlcXVpcmUgbGRhcC1hdHRyaWJ1dGU8L2NvZGU+PC9hPgogICAgICBkaXJlY3RpdmUsIGFuZCB0aGUgYXR0cmlidXRlIGZldGNoZWQgZnJvbSB0aGUgTERBUCBkaXJlY3RvcnkKICAgICAgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsdWUuPC9saT4KCiAgICAgIDxsaT5HcmFudCBhY2Nlc3MgaWYgdGhlcmUgaXMgYSA8YSBocmVmPSIjcmVxZmlsdGVyIj4KICAgICAgPGNvZGU+UmVxdWlyZSBsZGFwLWZpbHRlcjwvY29kZT48L2E+CiAgICAgIGRpcmVjdGl2ZSwgYW5kIHRoZSBzZWFyY2ggZmlsdGVyIHN1Y2Nlc3NmdWxseSBmaW5kcyBhIHNpbmdsZSB1c2VyCiAgICAgIG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIGRuIG9mIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIuPC9saT4KCiAgICAgIDxsaT5vdGhlcndpc2UsIGRlbnkgb3IgZGVjbGluZSBhY2Nlc3M8L2xpPgogICAgPC91bD4KCiAgICA8cD5PdGhlciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2NvcmUuaHRtbCNyZXF1aXJlIj5SZXF1aXJlPC9hPjwvY29kZT4gdmFsdWVzIG1heSBhbHNvCiAgICBiZSB1c2VkIHdoaWNoIG1heSByZXF1aXJlIGxvYWRpbmcgYWRkaXRpb25hbCBhdXRob3JpemF0aW9uIG1vZHVsZXMuPC9wPgoKICAgIDx1bD4KICAgICAgICA8bGk+R3JhbnQgYWNjZXNzIHRvIGFsbCBzdWNjZXNzZnVsbHkgYXV0aGVudGljYXRlZCB1c2VycyBpZgogICAgICAgIHRoZXJlIGlzIGEgPGEgaHJlZj0iI3JlcXVzZXIiPjxjb2RlPlJlcXVpcmUgdmFsaWQtdXNlcjwvY29kZT48L2E+CiAgICAgICAgZGlyZWN0aXZlLiAocmVxdWlyZXMgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel91c2VyLmh0bWwiPm1vZF9hdXRoel91c2VyPC9hPjwvY29kZT4pPC9saT4KCiAgICAgICAgPGxpPkdyYW50IGFjY2VzcyBpZiB0aGVyZSBpcyBhIDxhIGhyZWY9IiNyZXFncm91cCI+PGNvZGU+UmVxdWlyZSBncm91cDwvY29kZT48L2E+IGRpcmVjdGl2ZSwgYW5kCiAgICAgICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9ncm91cGZpbGUuaHRtbCI+bW9kX2F1dGh6X2dyb3VwZmlsZTwvYT48L2NvZGU+IGhhcyBiZWVuIGxvYWRlZCB3aXRoIHRoZQogICAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aHpfZ3JvdXBmaWxlLmh0bWwjYXV0aGdyb3VwZmlsZSI+QXV0aEdyb3VwRmlsZTwvYT48L2NvZGU+CiAgICAgICAgZGlyZWN0aXZlIHNldC48L2xpPgoKICAgICAgICA8bGk+b3RoZXJzLi4uPC9saT4KICAgICA8L3VsPgoKCiAgICA8cD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHVzZXMgdGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIGR1cmluZyB0aGUKICAgIGNvbXBhcmUgcGhhc2U6PC9wPgoKICAgIDx0YWJsZT4KICAgICAgCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwdXJsIj5BdXRoTERBUFVSTDwvYT48L2NvZGU+IDwvdGQ+CgogICAgICAgIDx0ZD5UaGUgYXR0cmlidXRlIHNwZWNpZmllZCBpbiB0aGUKICAgICAgICBVUkwgaXMgdXNlZCBpbiBjb21wYXJlIG9wZXJhdGlvbnMgZm9yIHRoZSA8Y29kZT5SZXF1aXJlCiAgICAgICAgbGRhcC11c2VyPC9jb2RlPiBvcGVyYXRpb24uPC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwY29tcGFyZWRub25zZXJ2ZXIiPkF1dGhMREFQQ29tcGFyZUROT25TZXJ2ZXI8L2E+PC9jb2RlPjwvdGQ+CgogICAgICAgIDx0ZD5EZXRlcm1pbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUKICAgICAgICA8Y29kZT5SZXF1aXJlIGxkYXAtZG48L2NvZGU+IGRpcmVjdGl2ZS48L3RkPgogICAgICA8L3RyPgoKICAgICAgPHRyPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBncm91cGF0dHJpYnV0ZSI+QXV0aExEQVBHcm91cEF0dHJpYnV0ZTwvYT48L2NvZGU+PC90ZD4KCiAgICAgICAgPHRkPkRldGVybWluZXMgdGhlIGF0dHJpYnV0ZSB0bwogICAgICAgIHVzZSBmb3IgY29tcGFyaXNvbnMgaW4gdGhlIDxjb2RlPlJlcXVpcmUgbGRhcC1ncm91cDwvY29kZT4KICAgICAgICBkaXJlY3RpdmUuPC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwZ3JvdXBhdHRyaWJ1dGVpc2RuIj5BdXRoTERBUEdyb3VwQXR0cmlidXRlSXNETjwvYT48L2NvZGU+PC90ZD4KCiAgICAgICAgPHRkPlNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSB0aGUKICAgICAgICB1c2VyIEROIG9yIHRoZSB1c2VybmFtZSB3aGVuIGRvaW5nIGNvbXBhcmlzb25zIGZvciB0aGUKICAgICAgICA8Y29kZT5SZXF1aXJlIGxkYXAtZ3JvdXA8L2NvZGU+IGRpcmVjdGl2ZS48L3RkPgogICAgICA8L3RyPgoKICAgICAgPHRyPgogICAgICAgIDx0ZD48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBtYXhzdWJncm91cGRlcHRoIj5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGg8L2E+PC9jb2RlPjwvdGQ+CgogICAgICAgIDx0ZD5EZXRlcm1pbmVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIHN1Yi1ncm91cHMgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZAogICAgICAgIGR1cmluZyBjb21wYXJpc29ucyBpbiB0aGUgPGNvZGU+UmVxdWlyZSBsZGFwLWdyb3VwPC9jb2RlPiBkaXJlY3RpdmUuPC90ZD4KICAgICAgPC90cj4KCiAgICAgIDx0cj4KICAgICAgICA8dGQ+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwc3ViZ3JvdXBhdHRyaWJ1dGUiPkF1dGhMREFQU3ViR3JvdXBBdHRyaWJ1dGU8L2E+PC9jb2RlPjwvdGQ+CgogICAgICAgIDx0ZD5EZXRlcm1pbmVzIHRoZSBhdHRyaWJ1dGUgdG8gdXNlIHdoZW4gb2J0YWluaW5nIHN1Yi1ncm91cCBtZW1iZXJzCiAgICAgICAgb2YgdGhlIGN1cnJlbnQgZ3JvdXAgZHVyaW5nIGNvbXBhcmlzb25zIGluIHRoZSA8Y29kZT5SZXF1aXJlIGxkYXAtZ3JvdXA8L2NvZGU+CiAgICAgICAgZGlyZWN0aXZlLjwvdGQ+CiAgICAgIDwvdHI+CgogICAgICA8dHI+CiAgICAgICAgPHRkPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHN1Ymdyb3VwY2xhc3MiPkF1dGhMREFQU3ViR3JvdXBDbGFzczwvYT48L2NvZGU+PC90ZD4KCiAgICAgICAgPHRkPlNwZWNpZmllcyB0aGUgTERBUCBvYmplY3RDbGFzcyB2YWx1ZXMgdXNlZCB0byBpZGVudGlmeSBpZiBxdWVyaWVkIGRpcmVjdG9yeQogICAgICAgIG9iamVjdHMgcmVhbGx5IGFyZSBncm91cCBvYmplY3RzIChhcyBvcHBvc2VkIHRvIHVzZXIgb2JqZWN0cykgZHVyaW5nIHRoZQogICAgICAgIDxjb2RlPlJlcXVpcmUgbGRhcC1ncm91cDwvY29kZT4gZGlyZWN0aXZlJ3Mgc3ViLWdyb3VwIHByb2Nlc3NpbmcuPC90ZD4KICAgICAgPC90cj4KICAgIDwvdGFibGU+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJyZXF1aXJlZGlyZWN0aXZlcyIgaWQ9InJlcXVpcmVkaXJlY3RpdmVzIj5UaGUgUmVxdWlyZSBEaXJlY3RpdmVzPC9hPjwvaDI+CgogICAgPHA+QXBhY2hlJ3MgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9jb3JlLmh0bWwjcmVxdWlyZSI+UmVxdWlyZTwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmVzIGFyZSB1c2VkIGR1cmluZyB0aGUgYXV0aG9yaXphdGlvbiBwaGFzZSB0byBlbnN1cmUgdGhhdAogICAgYSB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzIGEgcmVzb3VyY2UuICBtb2RfYXV0aG56X2xkYXAgZXh0ZW5kcyB0aGUKICAgIGF1dGhvcml6YXRpb24gdHlwZXMgd2l0aCA8Y29kZT5sZGFwLXVzZXI8L2NvZGU+LCA8Y29kZT5sZGFwLWRuPC9jb2RlPiwKICAgIDxjb2RlPmxkYXAtZ3JvdXA8L2NvZGU+LCA8Y29kZT5sZGFwLWF0dHJpYnV0ZTwvY29kZT4gYW5kCiAgICA8Y29kZT5sZGFwLWZpbHRlcjwvY29kZT4uICBPdGhlciBhdXRob3JpemF0aW9uIHR5cGVzIG1heSBhbHNvIGJlCiAgICB1c2VkIGJ1dCBtYXkgcmVxdWlyZSB0aGF0IGFkZGl0aW9uYWwgYXV0aG9yaXphdGlvbiBtb2R1bGVzIGJlIGxvYWRlZC48L3A+CgogICAgPHA+U2luY2UgdjIuNC44LCA8YSBocmVmPSIuLi9leHByLmh0bWwiPmV4cHJlc3Npb25zPC9hPiBhcmUgc3VwcG9ydGVkCiAgICB3aXRoaW4gdGhlIExEQVAgcmVxdWlyZSBkaXJlY3RpdmVzLjwvcD4KCjxoMz48YSBuYW1lPSJyZXF1c2VyIiBpZD0icmVxdXNlciI+UmVxdWlyZSBsZGFwLXVzZXI8L2E+PC9oMz4KCiAgICA8cD5UaGUgPGNvZGU+UmVxdWlyZSBsZGFwLXVzZXI8L2NvZGU+IGRpcmVjdGl2ZSBzcGVjaWZpZXMgd2hhdAogICAgdXNlcm5hbWVzIGNhbiBhY2Nlc3MgdGhlIHJlc291cmNlLiBPbmNlCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGhhcyByZXRyaWV2ZWQgYSB1bmlxdWUgRE4gZnJvbSB0aGUKICAgIGRpcmVjdG9yeSwgaXQgZG9lcyBhbiBMREFQIGNvbXBhcmUgb3BlcmF0aW9uIHVzaW5nIHRoZSB1c2VybmFtZQogICAgc3BlY2lmaWVkIGluIHRoZSA8Y29kZT5SZXF1aXJlIGxkYXAtdXNlcjwvY29kZT4gdG8gc2VlIGlmIHRoYXQgdXNlcm5hbWUKICAgIGlzIHBhcnQgb2YgdGhlIGp1c3QtZmV0Y2hlZCBMREFQIGVudHJ5LiAgTXVsdGlwbGUgdXNlcnMgY2FuIGJlCiAgICBncmFudGVkIGFjY2VzcyBieSBwdXR0aW5nIG11bHRpcGxlIHVzZXJuYW1lcyBvbiB0aGUgbGluZSwKICAgIHNlcGFyYXRlZCB3aXRoIHNwYWNlcy4gSWYgYSB1c2VybmFtZSBoYXMgYSBzcGFjZSBpbiBpdCwgdGhlbiBpdAogICAgbXVzdCBiZSBzdXJyb3VuZGVkIHdpdGggZG91YmxlIHF1b3Rlcy4gTXVsdGlwbGUgdXNlcnMgY2FuIGFsc28gYmUKICAgIGdyYW50ZWQgYWNjZXNzIGJ5IHVzaW5nIG11bHRpcGxlIDxjb2RlPlJlcXVpcmUgbGRhcC11c2VyPC9jb2RlPgogICAgZGlyZWN0aXZlcywgd2l0aCBvbmUgdXNlciBwZXIgbGluZS4gRm9yIGV4YW1wbGUsIHdpdGggYSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXB1cmwiPkF1dGhMREFQVVJMPC9hPjwvY29kZT4gb2YKICAgIDxjb2RlPmxkYXA6Ly9sZGFwL289RXhhbXBsZT9jbjwvY29kZT4gKGkuZS4sIDxjb2RlPmNuPC9jb2RlPiBpcwogICAgdXNlZCBmb3Igc2VhcmNoZXMpLCB0aGUgZm9sbG93aW5nIFJlcXVpcmUgZGlyZWN0aXZlcyBjb3VsZCBiZSB1c2VkCiAgICB0byByZXN0cmljdCBhY2Nlc3M6PC9wPgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+UmVxdWlyZSBsZGFwLXVzZXIgIkJhcmJhcmEgSmVuc29uIgpSZXF1aXJlIGxkYXAtdXNlciAiRnJlZCBVc2VyIgpSZXF1aXJlIGxkYXAtdXNlciAiSm9lIE1hbmFnZXIiPC9wcmU+CgoKICAgIDxwPkJlY2F1c2Ugb2YgdGhlIHdheSB0aGF0IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4gaGFuZGxlcyB0aGlzCiAgICBkaXJlY3RpdmUsIEJhcmJhcmEgSmVuc29uIGNvdWxkIHNpZ24gb24gYXMgPGVtPkJhcmJhcmEKICAgIEplbnNvbjwvZW0+LCA8ZW0+QmFicyBKZW5zb248L2VtPiBvciBhbnkgb3RoZXIgPGNvZGU+Y248L2NvZGU+IHRoYXQKICAgIHNoZSBoYXMgaW4gaGVyIExEQVAgZW50cnkuIE9ubHkgdGhlIHNpbmdsZSA8Y29kZT5SZXF1aXJlCiAgICBsZGFwLXVzZXI8L2NvZGU+IGxpbmUgaXMgbmVlZGVkIHRvIHN1cHBvcnQgYWxsIHZhbHVlcyBvZiB0aGUgYXR0cmlidXRlCiAgICBpbiB0aGUgdXNlcidzIGVudHJ5LjwvcD4KCiAgICA8cD5JZiB0aGUgPGNvZGU+dWlkPC9jb2RlPiBhdHRyaWJ1dGUgd2FzIHVzZWQgaW5zdGVhZCBvZiB0aGUKICAgIDxjb2RlPmNuPC9jb2RlPiBhdHRyaWJ1dGUgaW4gdGhlIFVSTCBhYm92ZSwgdGhlIGFib3ZlIHRocmVlIGxpbmVzCiAgICBjb3VsZCBiZSBjb25kZW5zZWQgdG88L3A+CjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5SZXF1aXJlIGxkYXAtdXNlciBiamVuc29uIGZ1c2VyIGptYW5hZ2VyPC9wcmU+CgoKCjxoMz48YSBuYW1lPSJyZXFncm91cCIgaWQ9InJlcWdyb3VwIj5SZXF1aXJlIGxkYXAtZ3JvdXA8L2E+PC9oMz4KCiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzcGVjaWZpZXMgYW4gTERBUCBncm91cCB3aG9zZSBtZW1iZXJzIGFyZQogICAgYWxsb3dlZCBhY2Nlc3MuIEl0IHRha2VzIHRoZSBkaXN0aW5ndWlzaGVkIG5hbWUgb2YgdGhlIExEQVAKICAgIGdyb3VwLiBOb3RlOiBEbyBub3Qgc3Vycm91bmQgdGhlIGdyb3VwIG5hbWUgd2l0aCBxdW90ZXMuCiAgICBGb3IgZXhhbXBsZSwgYXNzdW1lIHRoYXQgdGhlIGZvbGxvd2luZyBlbnRyeSBleGlzdGVkIGluCiAgICB0aGUgTERBUCBkaXJlY3Rvcnk6PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cHJlPmRuOiBjbj1BZG1pbmlzdHJhdG9ycywgbz1FeGFtcGxlCm9iamVjdENsYXNzOiBncm91cE9mVW5pcXVlTmFtZXMKdW5pcXVlTWVtYmVyOiBjbj1CYXJiYXJhIEplbnNvbiwgbz1FeGFtcGxlCnVuaXF1ZU1lbWJlcjogY249RnJlZCBVc2VyLCBvPUV4YW1wbGU8L3ByZT48L2Rpdj4KCiAgICA8cD5UaGUgZm9sbG93aW5nIGRpcmVjdGl2ZSB3b3VsZCBncmFudCBhY2Nlc3MgdG8gYm90aCBGcmVkIGFuZAogICAgQmFyYmFyYTo8L3A+CjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5SZXF1aXJlIGxkYXAtZ3JvdXAgY249QWRtaW5pc3RyYXRvcnMsIG89RXhhbXBsZTwvcHJlPgoKCiAgICA8cD5NZW1iZXJzIGNhbiBhbHNvIGJlIGZvdW5kIHdpdGhpbiBzdWItZ3JvdXBzIG9mIGEgc3BlY2lmaWVkIExEQVAgZ3JvdXAKICAgIGlmIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcG1heHN1Ymdyb3VwZGVwdGgiPkF1dGhMREFQTWF4U3ViR3JvdXBEZXB0aDwvYT48L2NvZGU+CiAgICBpcyBzZXQgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gMC4gRm9yIGV4YW1wbGUsIGFzc3VtZSB0aGUgZm9sbG93aW5nIGVudHJpZXMKICAgIGV4aXN0IGluIHRoZSBMREFQIGRpcmVjdG9yeTo8L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwcmU+ZG46IGNuPUVtcGxveWVlcywgbz1FeGFtcGxlCm9iamVjdENsYXNzOiBncm91cE9mVW5pcXVlTmFtZXMKdW5pcXVlTWVtYmVyOiBjbj1NYW5hZ2Vycywgbz1FeGFtcGxlCnVuaXF1ZU1lbWJlcjogY249QWRtaW5pc3RyYXRvcnMsIG89RXhhbXBsZQp1bmlxdWVNZW1iZXI6IGNuPVVzZXJzLCBvPUV4YW1wbGUKCmRuOiBjbj1NYW5hZ2Vycywgbz1FeGFtcGxlCm9iamVjdENsYXNzOiBncm91cE9mVW5pcXVlTmFtZXMKdW5pcXVlTWVtYmVyOiBjbj1Cb2IgRWxsaXMsIG89RXhhbXBsZQp1bmlxdWVNZW1iZXI6IGNuPVRvbSBKYWNrc29uLCBvPUV4YW1wbGUKCmRuOiBjbj1BZG1pbmlzdHJhdG9ycywgbz1FeGFtcGxlCm9iamVjdENsYXNzOiBncm91cE9mVW5pcXVlTmFtZXMKdW5pcXVlTWVtYmVyOiBjbj1CYXJiYXJhIEplbnNvbiwgbz1FeGFtcGxlCnVuaXF1ZU1lbWJlcjogY249RnJlZCBVc2VyLCBvPUV4YW1wbGUKCmRuOiBjbj1Vc2Vycywgbz1FeGFtcGxlCm9iamVjdENsYXNzOiBncm91cE9mVW5pcXVlTmFtZXMKdW5pcXVlTWVtYmVyOiBjbj1BbGxhbiBKZWZmZXJzb24sIG89RXhhbXBsZQp1bmlxdWVNZW1iZXI6IGNuPVBhdWwgVGlsbGV5LCBvPUV4YW1wbGUKdW5pcXVlTWVtYmVyOiBjbj1UZW1wb3JhcnkgRW1wbG95ZWVzLCBvPUV4YW1wbGUKCmRuOiBjbj1UZW1wb3JhcnkgRW1wbG95ZWVzLCBvPUV4YW1wbGUKb2JqZWN0Q2xhc3M6IGdyb3VwT2ZVbmlxdWVOYW1lcwp1bmlxdWVNZW1iZXI6IGNuPUppbSBTd2Vuc29uLCBvPUV4YW1wbGUKdW5pcXVlTWVtYmVyOiBjbj1FbGxpb3QgUmhvZGVzLCBvPUV4YW1wbGU8L3ByZT48L2Rpdj4KCiAgICA8cD5UaGUgZm9sbG93aW5nIGRpcmVjdGl2ZXMgd291bGQgYWxsb3cgYWNjZXNzIGZvciBCb2IgRWxsaXMsIFRvbSBKYWNrc29uLAogICAgQmFyYmFyYSBKZW5zb24sIEZyZWQgVXNlciwgQWxsYW4gSmVmZmVyc29uLCBhbmQgUGF1bCBUaWxsZXkgYnV0IHdvdWxkIG5vdAogICAgYWxsb3cgYWNjZXNzIGZvciBKaW0gU3dlbnNvbiwgb3IgRWxsaW90IFJob2RlcyAoc2luY2UgdGhleSBhcmUgYXQgYQogICAgc3ViLWdyb3VwIGRlcHRoIG9mIDIpOjwvcD4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlJlcXVpcmUgbGRhcC1ncm91cCBjbj1FbXBsb3llZXMsIG89RXhhbXBsZQpBdXRoTERBUE1heFN1Ykdyb3VwRGVwdGggMTwvcHJlPgoKCiAgICA8cD5CZWhhdmlvciBvZiB0aGlzIGRpcmVjdGl2ZSBpcyBtb2RpZmllZCBieSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwZ3JvdXBhdHRyaWJ1dGUiPkF1dGhMREFQR3JvdXBBdHRyaWJ1dGU8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwZ3JvdXBhdHRyaWJ1dGVpc2RuIj5BdXRoTERBUEdyb3VwQXR0cmlidXRlSXNETjwvYT48L2NvZGU+LCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBtYXhzdWJncm91cGRlcHRoIj5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGg8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwc3ViZ3JvdXBhdHRyaWJ1dGUiPkF1dGhMREFQU3ViR3JvdXBBdHRyaWJ1dGU8L2E+PC9jb2RlPiwgYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHN1Ymdyb3VwY2xhc3MiPkF1dGhMREFQU3ViR3JvdXBDbGFzczwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmVzLjwvcD4KCgo8aDM+PGEgbmFtZT0icmVxZG4iIGlkPSJyZXFkbiI+UmVxdWlyZSBsZGFwLWRuPC9hPjwvaDM+CgogICAgPHA+VGhlIDxjb2RlPlJlcXVpcmUgbGRhcC1kbjwvY29kZT4gZGlyZWN0aXZlIGFsbG93cyB0aGUgYWRtaW5pc3RyYXRvcgogICAgdG8gZ3JhbnQgYWNjZXNzIGJhc2VkIG9uIGRpc3Rpbmd1aXNoZWQgbmFtZXMuIEl0IHNwZWNpZmllcyBhIEROCiAgICB0aGF0IG11c3QgbWF0Y2ggZm9yIGFjY2VzcyB0byBiZSBncmFudGVkLiBJZiB0aGUgZGlzdGluZ3Vpc2hlZAogICAgbmFtZSB0aGF0IHdhcyByZXRyaWV2ZWQgZnJvbSB0aGUgZGlyZWN0b3J5IHNlcnZlciBtYXRjaGVzIHRoZQogICAgZGlzdGluZ3Vpc2hlZCBuYW1lIGluIHRoZSA8Y29kZT5SZXF1aXJlIGxkYXAtZG48L2NvZGU+LCB0aGVuCiAgICBhdXRob3JpemF0aW9uIGlzIGdyYW50ZWQuIE5vdGU6IGRvIG5vdCBzdXJyb3VuZCB0aGUgZGlzdGluZ3Vpc2hlZAogICAgbmFtZSB3aXRoIHF1b3Rlcy48L3A+CgogICAgPHA+VGhlIGZvbGxvd2luZyBkaXJlY3RpdmUgd291bGQgZ3JhbnQgYWNjZXNzIHRvIGEgc3BlY2lmaWMKICAgIEROOjwvcD4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlJlcXVpcmUgbGRhcC1kbiBjbj1CYXJiYXJhIEplbnNvbiwgbz1FeGFtcGxlPC9wcmU+CgoKICAgIDxwPkJlaGF2aW9yIG9mIHRoaXMgZGlyZWN0aXZlIGlzIG1vZGlmaWVkIGJ5IHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBjb21wYXJlZG5vbnNlcnZlciI+QXV0aExEQVBDb21wYXJlRE5PblNlcnZlcjwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmUuPC9wPgoKCjxoMz48YSBuYW1lPSJyZXFhdHRyaWJ1dGUiIGlkPSJyZXFhdHRyaWJ1dGUiPlJlcXVpcmUgbGRhcC1hdHRyaWJ1dGU8L2E+PC9oMz4KCiAgICA8cD5UaGUgPGNvZGU+UmVxdWlyZSBsZGFwLWF0dHJpYnV0ZTwvY29kZT4gZGlyZWN0aXZlIGFsbG93cyB0aGUKICAgIGFkbWluaXN0cmF0b3IgdG8gZ3JhbnQgYWNjZXNzIGJhc2VkIG9uIGF0dHJpYnV0ZXMgb2YgdGhlIGF1dGhlbnRpY2F0ZWQKICAgIHVzZXIgaW4gdGhlIExEQVAgZGlyZWN0b3J5LiAgSWYgdGhlIGF0dHJpYnV0ZSBpbiB0aGUgZGlyZWN0b3J5CiAgICBtYXRjaGVzIHRoZSB2YWx1ZSBnaXZlbiBpbiB0aGUgY29uZmlndXJhdGlvbiwgYWNjZXNzIGlzIGdyYW50ZWQuPC9wPgoKICAgIDxwPlRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlIHdvdWxkIGdyYW50IGFjY2VzcyB0byBhbnlvbmUgd2l0aAogICAgdGhlIGF0dHJpYnV0ZSBlbXBsb3llZVR5cGUgPSBhY3RpdmU8L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlJlcXVpcmUgbGRhcC1hdHRyaWJ1dGUgImVtcGxveWVlVHlwZT1hY3RpdmUiPC9wcmU+CgoKICAgIDxwPk11bHRpcGxlIGF0dHJpYnV0ZS92YWx1ZSBwYWlycyBjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGxpbmUKICAgIHNlcGFyYXRlZCBieSBzcGFjZXMgb3IgdGhleSBjYW4gYmUgc3BlY2lmaWVkIGluIG11bHRpcGxlCiAgICA8Y29kZT5SZXF1aXJlIGxkYXAtYXR0cmlidXRlPC9jb2RlPiBkaXJlY3RpdmVzLiBUaGUgZWZmZWN0IG9mIGxpc3RpbmcKICAgIG11bHRpcGxlIGF0dHJpYnV0ZS92YWx1ZXMgcGFpcnMgaXMgYW4gT1Igb3BlcmF0aW9uLiBBY2Nlc3Mgd2lsbCBiZQogICAgZ3JhbnRlZCBpZiBhbnkgb2YgdGhlIGxpc3RlZCBhdHRyaWJ1dGUgdmFsdWVzIG1hdGNoIHRoZSB2YWx1ZSBvZiB0aGUKICAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGluIHRoZSB1c2VyIG9iamVjdC4gSWYgdGhlIHZhbHVlIG9mIHRoZQogICAgYXR0cmlidXRlIGNvbnRhaW5zIGEgc3BhY2UsIG9ubHkgdGhlIHZhbHVlIG11c3QgYmUgd2l0aGluIGRvdWJsZSBxdW90ZXMuPC9wPgoKICAgIDxwPlRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlIHdvdWxkIGdyYW50IGFjY2VzcyB0byBhbnlvbmUgd2l0aAogICAgdGhlIGNpdHkgYXR0cmlidXRlIGVxdWFsIHRvICJTYW4gSm9zZSIgb3Igc3RhdHVzIGVxdWFsIHRvICJBY3RpdmUiPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5SZXF1aXJlIGxkYXAtYXR0cmlidXRlIGNpdHk9IlNhbiBKb3NlIiAic3RhdHVzPWFjdGl2ZSI8L3ByZT4KCgoKCjxoMz48YSBuYW1lPSJyZXFmaWx0ZXIiIGlkPSJyZXFmaWx0ZXIiPlJlcXVpcmUgbGRhcC1maWx0ZXI8L2E+PC9oMz4KCiAgICA8cD5UaGUgPGNvZGU+UmVxdWlyZSBsZGFwLWZpbHRlcjwvY29kZT4gZGlyZWN0aXZlIGFsbG93cyB0aGUKICAgIGFkbWluaXN0cmF0b3IgdG8gZ3JhbnQgYWNjZXNzIGJhc2VkIG9uIGEgY29tcGxleCBMREFQIHNlYXJjaCBmaWx0ZXIuCiAgICBJZiB0aGUgZG4gcmV0dXJuZWQgYnkgdGhlIGZpbHRlciBzZWFyY2ggbWF0Y2hlcyB0aGUgYXV0aGVudGljYXRlZCB1c2VyCiAgICBkbiwgYWNjZXNzIGlzIGdyYW50ZWQuPC9wPgoKICAgIDxwPlRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlIHdvdWxkIGdyYW50IGFjY2VzcyB0byBhbnlvbmUgaGF2aW5nIGEgY2VsbCBwaG9uZQogICAgYW5kIGlzIGluIHRoZSBtYXJrZXRpbmcgZGVwYXJ0bWVudDwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+UmVxdWlyZSBsZGFwLWZpbHRlciAiJmFtcDsoY2VsbD0qKShkZXBhcnRtZW50PW1hcmtldGluZykiPC9wcmU+CgoKICAgIDxwPlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIDxjb2RlPlJlcXVpcmUgbGRhcC1maWx0ZXI8L2NvZGU+IGRpcmVjdGl2ZSBhbmQgdGhlCiAgICA8Y29kZT5SZXF1aXJlIGxkYXAtYXR0cmlidXRlPC9jb2RlPiBkaXJlY3RpdmUgaXMgdGhhdCA8Y29kZT5sZGFwLWZpbHRlcjwvY29kZT4KICAgIHBlcmZvcm1zIGEgc2VhcmNoIG9wZXJhdGlvbiBvbiB0aGUgTERBUCBkaXJlY3RvcnkgdXNpbmcgdGhlIHNwZWNpZmllZCBzZWFyY2gKICAgIGZpbHRlciByYXRoZXIgdGhhbiBhIHNpbXBsZSBhdHRyaWJ1dGUgY29tcGFyaXNvbi4gSWYgYSBzaW1wbGUgYXR0cmlidXRlCiAgICBjb21wYXJpc29uIGlzIGFsbCB0aGF0IGlzIHJlcXVpcmVkLCB0aGUgY29tcGFyaXNvbiBvcGVyYXRpb24gcGVyZm9ybWVkIGJ5CiAgICA8Y29kZT5sZGFwLWF0dHJpYnV0ZTwvY29kZT4gd2lsbCBiZSBmYXN0ZXIgdGhhbiB0aGUgc2VhcmNoIG9wZXJhdGlvbgogICAgdXNlZCBieSA8Y29kZT5sZGFwLWZpbHRlcjwvY29kZT4gZXNwZWNpYWxseSB3aXRoaW4gYSBsYXJnZSBkaXJlY3RvcnkuPC9wPgoKCgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleGFtcGxlcyIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvYT48L2gyPgoKICAgIDx1bD4KICAgICAgPGxpPgogICAgICAgIEdyYW50IGFjY2VzcyB0byBhbnlvbmUgd2hvIGV4aXN0cyBpbiB0aGUgTERBUCBkaXJlY3RvcnksCiAgICAgICAgdXNpbmcgdGhlaXIgVUlEIGZvciBzZWFyY2hlcy4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPkF1dGhMREFQVVJMICJsZGFwOi8vbGRhcDEuZXhhbXBsZS5jb206Mzg5L291PVBlb3BsZSwgbz1FeGFtcGxlP3VpZD9zdWI/KG9iamVjdENsYXNzPSopIgpSZXF1aXJlIHZhbGlkLXVzZXI8L3ByZT4KCiAgICAgIDwvbGk+CgogICAgICA8bGk+CiAgICAgICAgVGhlIG5leHQgZXhhbXBsZSBpcyB0aGUgc2FtZSBhcyBhYm92ZTsgYnV0IHdpdGggdGhlIGZpZWxkcwogICAgICAgIHRoYXQgaGF2ZSB1c2VmdWwgZGVmYXVsdHMgb21pdHRlZC4gQWxzbywgbm90ZSB0aGUgdXNlIG9mIGEKICAgICAgICByZWR1bmRhbnQgTERBUCBzZXJ2ZXIuCjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5BdXRoTERBUFVSTCAibGRhcDovL2xkYXAxLmV4YW1wbGUuY29tIGxkYXAyLmV4YW1wbGUuY29tL291PVBlb3BsZSwgbz1FeGFtcGxlIgpSZXF1aXJlIHZhbGlkLXVzZXI8L3ByZT4KCiAgICAgIDwvbGk+CgogICAgICA8bGk+CiAgICAgICAgVGhlIG5leHQgZXhhbXBsZSBpcyBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvbmUsIGJ1dCBpdAogICAgICAgIHVzZXMgdGhlIGNvbW1vbiBuYW1lIGluc3RlYWQgb2YgdGhlIFVJRC4gTm90ZSB0aGF0IHRoaXMKICAgICAgICBjb3VsZCBiZSBwcm9ibGVtYXRpY2FsIGlmIG11bHRpcGxlIHBlb3BsZSBpbiB0aGUgZGlyZWN0b3J5CiAgICAgICAgc2hhcmUgdGhlIHNhbWUgPGNvZGU+Y248L2NvZGU+LCBiZWNhdXNlIGEgc2VhcmNoIG9uIDxjb2RlPmNuPC9jb2RlPgogICAgICAgIDxzdHJvbmc+bXVzdDwvc3Ryb25nPiByZXR1cm4gZXhhY3RseSBvbmUgZW50cnkuIFRoYXQncyB3aHkKICAgICAgICB0aGlzIGFwcHJvYWNoIGlzIG5vdCByZWNvbW1lbmRlZDogaXQncyBhIGJldHRlciBpZGVhIHRvCiAgICAgICAgY2hvb3NlIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGd1YXJhbnRlZWQgdW5pcXVlIGluIHlvdXIKICAgICAgICBkaXJlY3RvcnksIHN1Y2ggYXMgPGNvZGU+dWlkPC9jb2RlPi4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPkF1dGhMREFQVVJMICJsZGFwOi8vbGRhcC5leGFtcGxlLmNvbS9vdT1QZW9wbGUsIG89RXhhbXBsZT9jbiIKUmVxdWlyZSB2YWxpZC11c2VyPC9wcmU+CgogICAgICA8L2xpPgoKICAgICAgPGxpPgogICAgICAgIEdyYW50IGFjY2VzcyB0byBhbnlib2R5IGluIHRoZSBBZG1pbmlzdHJhdG9ycyBncm91cC4gVGhlCiAgICAgICAgdXNlcnMgbXVzdCBhdXRoZW50aWNhdGUgdXNpbmcgdGhlaXIgVUlELgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aExEQVBVUkwgbGRhcDovL2xkYXAuZXhhbXBsZS5jb20vbz1FeGFtcGxlP3VpZApSZXF1aXJlIGxkYXAtZ3JvdXAgY249QWRtaW5pc3RyYXRvcnMsIG89RXhhbXBsZTwvcHJlPgoKICAgICAgPC9saT4KCiAgICAgIDxsaT4KICAgICAgICBHcmFudCBhY2Nlc3MgdG8gYW55Ym9keSBpbiB0aGUgZ3JvdXAgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZQogICAgICAgIGhvc3RuYW1lIG9mIHRoZSB2aXJ0dWFsIGhvc3QuIEluIHRoaXMgZXhhbXBsZSBhbgogICAgICAgIDxhIGhyZWY9Ii4uL2V4cHIuaHRtbCI+ZXhwcmVzc2lvbjwvYT4gaXMgdXNlZCB0byBidWlsZCB0aGUgZmlsdGVyLgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aExEQVBVUkwgbGRhcDovL2xkYXAuZXhhbXBsZS5jb20vbz1FeGFtcGxlP3VpZApSZXF1aXJlIGxkYXAtZ3JvdXAgY249JXtTRVJWRVJfTkFNRX0sIG89RXhhbXBsZTwvcHJlPgoKICAgICAgPC9saT4KCiAgICAgIDxsaT4KICAgICAgICBUaGUgbmV4dCBleGFtcGxlIGFzc3VtZXMgdGhhdCBldmVyeW9uZSBhdCBFeGFtcGxlIHdobwogICAgICAgIGNhcnJpZXMgYW4gYWxwaGFudW1lcmljIHBhZ2VyIHdpbGwgaGF2ZSBhbiBMREFQIGF0dHJpYnV0ZQogICAgICAgIG9mIDxjb2RlPnFwYWdlUGFnZXJJRDwvY29kZT4uIFRoZSBleGFtcGxlIHdpbGwgZ3JhbnQgYWNjZXNzCiAgICAgICAgb25seSB0byBwZW9wbGUgKGF1dGhlbnRpY2F0ZWQgdmlhIHRoZWlyIFVJRCkgd2hvIGhhdmUKICAgICAgICBhbHBoYW51bWVyaWMgcGFnZXJzOgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aExEQVBVUkwgbGRhcDovL2xkYXAuZXhhbXBsZS5jb20vbz1FeGFtcGxlP3VpZD8/KHFwYWdlUGFnZXJJRD0qKQpSZXF1aXJlIHZhbGlkLXVzZXI8L3ByZT4KCiAgICAgIDwvbGk+CgogICAgICA8bGk+CiAgICAgICAgPHA+VGhlIG5leHQgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhlIHBvd2VyIG9mIHVzaW5nIGZpbHRlcnMKICAgICAgICB0byBhY2NvbXBsaXNoIGNvbXBsaWNhdGVkIGFkbWluaXN0cmF0aXZlIHJlcXVpcmVtZW50cy4KICAgICAgICBXaXRob3V0IGZpbHRlcnMsIGl0IHdvdWxkIGhhdmUgYmVlbiBuZWNlc3NhcnkgdG8gY3JlYXRlIGEKICAgICAgICBuZXcgTERBUCBncm91cCBhbmQgZW5zdXJlIHRoYXQgdGhlIGdyb3VwJ3MgbWVtYmVycyByZW1haW4KICAgICAgICBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgcGFnZXIgdXNlcnMuIFRoaXMgYmVjb21lcyB0cml2aWFsCiAgICAgICAgd2l0aCBmaWx0ZXJzLiBUaGUgZ29hbCBpcyB0byBncmFudCBhY2Nlc3MgdG8gYW55b25lIHdobyBoYXMKICAgICAgICBhIHBhZ2VyLCBwbHVzIGdyYW50IGFjY2VzcyB0byBKb2UgTWFuYWdlciwgd2hvIGRvZXNuJ3QKICAgICAgICBoYXZlIGEgcGFnZXIsIGJ1dCBkb2VzIG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lCiAgICAgICAgcmVzb3VyY2U6PC9wPgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aExEQVBVUkwgbGRhcDovL2xkYXAuZXhhbXBsZS5jb20vbz1FeGFtcGxlP3VpZD8/KHwocXBhZ2VQYWdlcklEPSopKHVpZD1qbWFuYWdlcikpClJlcXVpcmUgdmFsaWQtdXNlcjwvcHJlPgoKCiAgICAgICAgPHA+VGhpcyBsYXN0IG1heSBsb29rIGNvbmZ1c2luZyBhdCBmaXJzdCwgc28gaXQgaGVscHMgdG8KICAgICAgICBldmFsdWF0ZSB3aGF0IHRoZSBzZWFyY2ggZmlsdGVyIHdpbGwgbG9vayBsaWtlIGJhc2VkIG9uIHdobwogICAgICAgIGNvbm5lY3RzLCBhcyBzaG93biBiZWxvdy4gIElmCiAgICAgICAgRnJlZCBVc2VyIGNvbm5lY3RzIGFzIDxjb2RlPmZ1c2VyPC9jb2RlPiwgdGhlIGZpbHRlciB3b3VsZCBsb29rCiAgICAgICAgbGlrZTwvcD4KCiAgICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+KCZhbXA7KHwocXBhZ2VQYWdlcklEPSopKHVpZD1qbWFuYWdlcikpKHVpZD1mdXNlcikpPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgICAgPHA+VGhlIGFib3ZlIHNlYXJjaCB3aWxsIG9ubHkgc3VjY2VlZCBpZiA8ZW0+ZnVzZXI8L2VtPiBoYXMgYQogICAgICAgIHBhZ2VyLiBXaGVuIEpvZSBNYW5hZ2VyIGNvbm5lY3RzIGFzIDxlbT5qbWFuYWdlcjwvZW0+LCB0aGUKICAgICAgICBmaWx0ZXIgbG9va3MgbGlrZTwvcD4KCiAgICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+KCZhbXA7KHwocXBhZ2VQYWdlcklEPSopKHVpZD1qbWFuYWdlcikpKHVpZD1qbWFuYWdlcikpPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgICAgPHA+VGhlIGFib3ZlIHNlYXJjaCB3aWxsIHN1Y2NlZWQgd2hldGhlciA8ZW0+am1hbmFnZXI8L2VtPgogICAgICAgIGhhcyBhIHBhZ2VyIG9yIG5vdC48L3A+CiAgICAgIDwvbGk+CiAgICA8L3VsPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJ1c2luZ3RscyIgaWQ9InVzaW5ndGxzIj5Vc2luZyBUTFM8L2E+PC9oMj4KCiAgICA8cD5UbyB1c2UgVExTLCBzZWUgdGhlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+IGRpcmVjdGl2ZXMgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwjbGRhcHRydXN0ZWRjbGllbnRjZXJ0Ij5MREFQVHJ1c3RlZENsaWVudENlcnQ8L2E+PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwjbGRhcHRydXN0ZWRnbG9iYWxjZXJ0Ij5MREFQVHJ1c3RlZEdsb2JhbENlcnQ8L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwjbGRhcHRydXN0ZWRtb2RlIj5MREFQVHJ1c3RlZE1vZGU8L2E+PC9jb2RlPi48L3A+CgogICAgPHA+QW4gb3B0aW9uYWwgc2Vjb25kIHBhcmFtZXRlciBjYW4gYmUgYWRkZWQgdG8gdGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXB1cmwiPkF1dGhMREFQVVJMPC9hPjwvY29kZT4gdG8gb3ZlcnJpZGUKICAgIHRoZSBkZWZhdWx0IGNvbm5lY3Rpb24gdHlwZSBzZXQgYnkgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sZGFwLmh0bWwjbGRhcHRydXN0ZWRtb2RlIj5MREFQVHJ1c3RlZE1vZGU8L2E+PC9jb2RlPi4KICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCBieSBhbiA8ZW0+bGRhcDovLzwvZW0+IFVybAogICAgdG8gYmUgdXBncmFkZWQgdG8gYSBzZWN1cmUgY29ubmVjdGlvbiBvbiB0aGUgc2FtZSBwb3J0LjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0idXNpbmdzc2wiIGlkPSJ1c2luZ3NzbCI+VXNpbmcgU1NMPC9hPjwvaDI+CgogICAgPHA+VG8gdXNlIFNTTCwgc2VlIHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2xkYXAuaHRtbCI+bW9kX2xkYXA8L2E+PC9jb2RlPiBkaXJlY3RpdmVzIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sI2xkYXB0cnVzdGVkY2xpZW50Y2VydCI+TERBUFRydXN0ZWRDbGllbnRDZXJ0PC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sI2xkYXB0cnVzdGVkZ2xvYmFsY2VydCI+TERBUFRydXN0ZWRHbG9iYWxDZXJ0PC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sI2xkYXB0cnVzdGVkbW9kZSI+TERBUFRydXN0ZWRNb2RlPC9hPjwvY29kZT4uPC9wPgoKICAgIDxwPlRvIHNwZWNpZnkgYSBzZWN1cmUgTERBUCBzZXJ2ZXIsIHVzZSA8ZW0+bGRhcHM6Ly88L2VtPiBpbiB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHVybCI+QXV0aExEQVBVUkw8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlLCBpbnN0ZWFkIG9mIDxlbT5sZGFwOi8vPC9lbT4uPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleHBvc2VkIiBpZD0iZXhwb3NlZCI+RXhwb3NpbmcgTG9naW4gSW5mb3JtYXRpb248L2E+PC9oMj4KCiAgICA8cD53aGVuIHRoaXMgbW9kdWxlIHBlcmZvcm1zIDxlbT5hdXRoZW50aWNhdGlvbjwvZW0+LCBsZGFwIGF0dHJpYnV0ZXMgc3BlY2lmaWVkCiAgICBpbiB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwdXJsIj5hdXRobGRhcHVybDwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmUgYXJlIHBsYWNlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCB0aGUgcHJlZml4ICJBVVRIRU5USUNBVEVfIi48L3A+CgogICAgPHA+d2hlbiB0aGlzIG1vZHVsZSBwZXJmb3JtcyA8ZW0+YXV0aG9yaXphdGlvbjwvZW0+LCBsZGFwIGF0dHJpYnV0ZXMgc3BlY2lmaWVkCiAgICBpbiB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwdXJsIj5hdXRobGRhcHVybDwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmUgYXJlIHBsYWNlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCB0aGUgcHJlZml4ICJBVVRIT1JJWkVfIi48L3A+CgogICAgPHA+SWYgdGhlIGF0dHJpYnV0ZSBmaWVsZCBjb250YWlucyB0aGUgdXNlcm5hbWUsIGNvbW1vbiBuYW1lCiAgICBhbmQgdGVsZXBob25lIG51bWJlciBvZiBhIHVzZXIsIGEgQ0dJIHByb2dyYW0gd2lsbCBoYXZlIGFjY2VzcyB0bwogICAgdGhpcyBpbmZvcm1hdGlvbiB3aXRob3V0IHRoZSBuZWVkIHRvIG1ha2UgYSBzZWNvbmQgaW5kZXBlbmRlbnQgTERBUAogICAgcXVlcnkgdG8gZ2F0aGVyIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+CgogICAgPHA+VGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBkcmFtYXRpY2FsbHkgc2ltcGxpZnkgdGhlIGNvZGluZyBhbmQKICAgIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgaW4gc29tZSB3ZWIgYXBwbGljYXRpb25zLjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImFjdGl2ZWRpcmVjdG9yeSIgaWQ9ImFjdGl2ZWRpcmVjdG9yeSI+VXNpbmcgQWN0aXZlIERpcmVjdG9yeTwvYT48L2gyPgoKICAgIDxwPkFuIEFjdGl2ZSBEaXJlY3RvcnkgaW5zdGFsbGF0aW9uIG1heSBzdXBwb3J0IG11bHRpcGxlIGRvbWFpbnMgYXQgdGhlCiAgICBzYW1lIHRpbWUuIFRvIGRpc3Rpbmd1aXNoIHVzZXJzIGJldHdlZW4gZG9tYWlucywgYW4gaWRlbnRpZmllciBjYWxsZWQKICAgIGEgVXNlciBQcmluY2lwbGUgTmFtZSAoVVBOKSBjYW4gYmUgYWRkZWQgdG8gYSB1c2VyJ3MgZW50cnkgaW4gdGhlCiAgICBkaXJlY3RvcnkuIFRoaXMgVVBOIHVzdWFsbHkgdGFrZXMgdGhlIGZvcm0gb2YgdGhlIHVzZXIncyBhY2NvdW50CiAgICBuYW1lLCBmb2xsb3dlZCBieSB0aGUgZG9tYWluIGNvbXBvbmVudHMgb2YgdGhlIHBhcnRpY3VsYXIgZG9tYWluLAogICAgZm9yIGV4YW1wbGUgPGVtPnNvbWVib2R5QG56LmV4YW1wbGUuY29tPC9lbT4uPC9wPgoKICAgIDxwPllvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgdGhlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4KICAgIG1vZHVsZSB0byBhdXRoZW50aWNhdGUgdXNlcnMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIGRvbWFpbnMgbWFraW5nIHVwCiAgICB0aGUgQWN0aXZlIERpcmVjdG9yeSBmb3Jlc3QuIEluIHRoaXMgd2F5IGJvdGgKICAgIDxlbT5zb21lYm9keUBuei5leGFtcGxlLmNvbTwvZW0+IGFuZCA8ZW0+c29tZW9uZUBhdS5leGFtcGxlLmNvbTwvZW0+CiAgICBjYW4gYmUgYXV0aGVudGljYXRlZCB1c2luZyB0aGUgc2FtZSBxdWVyeSBhdCB0aGUgc2FtZSB0aW1lLjwvcD4KCiAgICA8cD5UbyBtYWtlIHRoaXMgcHJhY3RpY2FsLCBBY3RpdmUgRGlyZWN0b3J5IHN1cHBvcnRzIHRoZSBjb25jZXB0IG9mCiAgICBhIEdsb2JhbCBDYXRhbG9nLiBUaGlzIEdsb2JhbCBDYXRhbG9nIGlzIGEgcmVhZCBvbmx5IGNvcHkgb2Ygc2VsZWN0ZWQKICAgIGF0dHJpYnV0ZXMgb2YgYWxsIHRoZSBBY3RpdmUgRGlyZWN0b3J5IHNlcnZlcnMgd2l0aGluIHRoZSBBY3RpdmUKICAgIERpcmVjdG9yeSBmb3Jlc3QuIFF1ZXJ5aW5nIHRoZSBHbG9iYWwgQ2F0YWxvZyBhbGxvd3MgYWxsIHRoZSBkb21haW5zCiAgICB0byBiZSBxdWVyaWVkIGluIGEgc2luZ2xlIHF1ZXJ5LCB3aXRob3V0IHRoZSBxdWVyeSBzcGFubmluZyBzZXJ2ZXJzCiAgICBvdmVyIHBvdGVudGlhbGx5IHNsb3cgbGlua3MuPC9wPgoKICAgIDxwPklmIGVuYWJsZWQsIHRoZSBHbG9iYWwgQ2F0YWxvZyBpcyBhbiBpbmRlcGVuZGVudCBkaXJlY3Rvcnkgc2VydmVyCiAgICB0aGF0IHJ1bnMgb24gcG9ydCAzMjY4ICgzMjY5IGZvciBTU0wpLiBUbyBzZWFyY2ggZm9yIGEgdXNlciwgZG8gYQogICAgc3VidHJlZSBzZWFyY2ggZm9yIHRoZSBhdHRyaWJ1dGUgPGVtPnVzZXJQcmluY2lwYWxOYW1lPC9lbT4sIHdpdGgKICAgIGFuIGVtcHR5IHNlYXJjaCByb290LCBsaWtlIHNvOjwvcD4KCjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5BdXRoTERBUEJpbmRETiBhcGFjaGVAZXhhbXBsZS5jb20KQXV0aExEQVBCaW5kUGFzc3dvcmQgcGFzc3dvcmQKQXV0aExEQVBVUkwgbGRhcDovLzEwLjAuMC4xOjMyNjgvP3VzZXJQcmluY2lwYWxOYW1lP3N1YjwvcHJlPgoKCiAgICA8cD5Vc2VycyB3aWxsIG5lZWQgdG8gZW50ZXIgdGhlaXIgVXNlciBQcmluY2lwYWwgTmFtZSBhcyBhIGxvZ2luLCBpbgogICAgdGhlIGZvcm0gPGVtPnNvbWVib2R5QG56LmV4YW1wbGUuY29tPC9lbT4uPC9wPgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZnJvbnRwYWdlIiBpZD0iZnJvbnRwYWdlIj5Vc2luZyBNaWNyb3NvZnQKICAgIEZyb250UGFnZSB3aXRoIG1vZF9hdXRobnpfbGRhcDwvYT48L2gyPgoKICAgIDxwPk5vcm1hbGx5LCBGcm9udFBhZ2UgdXNlcyBGcm9udFBhZ2Utd2ViLXNwZWNpZmljIHVzZXIvZ3JvdXAKICAgIGZpbGVzIChpLmUuLCB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9maWxlLmh0bWwiPm1vZF9hdXRobl9maWxlPC9hPjwvY29kZT4gYW5kCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2dyb3VwZmlsZS5odG1sIj5tb2RfYXV0aHpfZ3JvdXBmaWxlPC9hPjwvY29kZT4gbW9kdWxlcykgdG8gaGFuZGxlIGFsbAogICAgYXV0aGVudGljYXRpb24uIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdXN0CiAgICBjaGFuZ2UgdG8gTERBUCBhdXRoZW50aWNhdGlvbiBieSBhZGRpbmcgdGhlIHByb3BlciBkaXJlY3RpdmVzLAogICAgYmVjYXVzZSBpdCB3aWxsIGJyZWFrIHRoZSA8ZW0+UGVybWlzc2lvbnM8L2VtPiBmb3JtcyBpbgogICAgdGhlIEZyb250UGFnZSBjbGllbnQsIHdoaWNoIGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBzdGFuZGFyZAogICAgdGV4dC1iYXNlZCBhdXRob3JpemF0aW9uIGZpbGVzLjwvcD4KCiAgICA8cD5PbmNlIGEgRnJvbnRQYWdlIHdlYiBoYXMgYmVlbiBjcmVhdGVkLCBhZGRpbmcgTERBUAogICAgYXV0aGVudGljYXRpb24gdG8gaXQgaXMgYSBtYXR0ZXIgb2YgYWRkaW5nIHRoZSBmb2xsb3dpbmcKICAgIGRpcmVjdGl2ZXMgdG8gPGVtPmV2ZXJ5PC9lbT4gPGNvZGU+Lmh0YWNjZXNzPC9jb2RlPiBmaWxlCiAgICB0aGF0IGdldHMgY3JlYXRlZCBpbiB0aGUgd2ViPC9wPgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QXV0aExEQVBVUkwgICAgICAgInRoZSB1cmwiCkF1dGhHcm91cEZpbGUgICAgICJteWdyb3VwZmlsZSIKUmVxdWlyZSBncm91cCAgICAgIm15Z3JvdXBmaWxlIjwvcHJlPgoKCjxoMz48YSBuYW1lPSJob3dpdHdvcmtzIiBpZD0iaG93aXR3b3JrcyI+SG93IEl0IFdvcmtzPC9hPjwvaDM+CgogICAgPHA+RnJvbnRQYWdlIHJlc3RyaWN0cyBhY2Nlc3MgdG8gYSB3ZWIgYnkgYWRkaW5nIHRoZSA8Y29kZT5SZXF1aXJlCiAgICB2YWxpZC11c2VyPC9jb2RlPiBkaXJlY3RpdmUgdG8gdGhlIDxjb2RlPi5odGFjY2VzczwvY29kZT4KICAgIGZpbGVzLiBUaGUgPGNvZGU+UmVxdWlyZSB2YWxpZC11c2VyPC9jb2RlPiBkaXJlY3RpdmUgd2lsbCBzdWNjZWVkIGZvcgogICAgYW55IHVzZXIgd2hvIGlzIHZhbGlkIDxlbT5hcyBmYXIgYXMgTERBUCBpcwogICAgY29uY2VybmVkPC9lbT4uIFRoaXMgbWVhbnMgdGhhdCBhbnlib2R5IHdobyBoYXMgYW4gZW50cnkgaW4KICAgIHRoZSBMREFQIGRpcmVjdG9yeSBpcyBjb25zaWRlcmVkIGEgdmFsaWQgdXNlciwgd2hlcmVhcyBGcm9udFBhZ2UKICAgIGNvbnNpZGVycyBvbmx5IHRob3NlIHBlb3BsZSBpbiB0aGUgbG9jYWwgdXNlciBmaWxlIHRvIGJlCiAgICB2YWxpZC4gQnkgc3Vic3RpdHV0aW5nIHRoZSBsZGFwLWdyb3VwIHdpdGggZ3JvdXAgZmlsZSBhdXRob3JpemF0aW9uLAogICAgQXBhY2hlIGlzIGFsbG93ZWQgdG8gY29uc3VsdCB0aGUgbG9jYWwgdXNlciBmaWxlICh3aGljaCBpcyBtYW5hZ2VkIGJ5CiAgICBGcm9udFBhZ2UpIC0gaW5zdGVhZCBvZiBMREFQIC0gd2hlbiBoYW5kbGluZyBhdXRob3JpemluZyB0aGUgdXNlci48L3A+CgogICAgPHA+T25jZSBkaXJlY3RpdmVzIGhhdmUgYmVlbiBhZGRlZCBhcyBzcGVjaWZpZWQgYWJvdmUsCiAgICBGcm9udFBhZ2UgdXNlcnMgd2lsbCBiZSBhYmxlIHRvIHBlcmZvcm0gYWxsIG1hbmFnZW1lbnQKICAgIG9wZXJhdGlvbnMgZnJvbSB0aGUgRnJvbnRQYWdlIGNsaWVudC48L3A+CgoKPGgzPjxhIG5hbWU9ImZwY2F2ZWF0cyIgaWQ9ImZwY2F2ZWF0cyI+Q2F2ZWF0czwvYT48L2gzPgoKICAgIDx1bD4KICAgICAgPGxpPldoZW4gY2hvb3NpbmcgdGhlIExEQVAgVVJMLCB0aGUgYXR0cmlidXRlIHRvIHVzZSBmb3IKICAgICAgYXV0aGVudGljYXRpb24gc2hvdWxkIGJlIHNvbWV0aGluZyB0aGF0IHdpbGwgYWxzbyBiZSB2YWxpZAogICAgICBmb3IgcHV0dGluZyBpbnRvIGEgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9maWxlLmh0bWwiPm1vZF9hdXRobl9maWxlPC9hPjwvY29kZT4gdXNlciBmaWxlLgogICAgICBUaGUgdXNlciBJRCBpcyBpZGVhbCBmb3IgdGhpcy48L2xpPgoKICAgICAgPGxpPldoZW4gYWRkaW5nIHVzZXJzIHZpYSBGcm9udFBhZ2UsIEZyb250UGFnZSBhZG1pbmlzdHJhdG9ycwogICAgICBzaG91bGQgY2hvb3NlIHVzZXJuYW1lcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhlIExEQVAKICAgICAgZGlyZWN0b3J5IChmb3Igb2J2aW91cyByZWFzb25zKS4gQWxzbywgdGhlIHBhc3N3b3JkIHRoYXQgdGhlCiAgICAgIGFkbWluaXN0cmF0b3IgZW50ZXJzIGludG8gdGhlIGZvcm0gaXMgaWdub3JlZCwgc2luY2UgQXBhY2hlCiAgICAgIHdpbGwgYWN0dWFsbHkgYmUgYXV0aGVudGljYXRpbmcgYWdhaW5zdCB0aGUgcGFzc3dvcmQgaW4gdGhlCiAgICAgIExEQVAgZGF0YWJhc2UsIGFuZCBub3QgYWdhaW5zdCB0aGUgcGFzc3dvcmQgaW4gdGhlIGxvY2FsIHVzZXIKICAgICAgZmlsZS4gVGhpcyBjb3VsZCBjYXVzZSBjb25mdXNpb24gZm9yIHdlYiBhZG1pbmlzdHJhdG9ycy48L2xpPgoKICAgICAgCiAgICAgIDxsaT5BcGFjaGUgbXVzdCBiZSBjb21waWxlZCB3aXRoIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+LAogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuX2ZpbGUuaHRtbCI+bW9kX2F1dGhuX2ZpbGU8L2E+PC9jb2RlPiBhbmQKICAgICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9ncm91cGZpbGUuaHRtbCI+bW9kX2F1dGh6X2dyb3VwZmlsZTwvYT48L2NvZGU+IGluIG9yZGVyIHRvCiAgICAgIHVzZSBGcm9udFBhZ2Ugc3VwcG9ydC4gVGhpcyBpcyBiZWNhdXNlIEFwYWNoZSB3aWxsIHN0aWxsIHVzZQogICAgICB0aGUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoel9ncm91cGZpbGUuaHRtbCI+bW9kX2F1dGh6X2dyb3VwZmlsZTwvYT48L2NvZGU+IGdyb3VwIGZpbGUgZm9yIGRldGVybWluZQogICAgICB0aGUgZXh0ZW50IG9mIGEgdXNlcidzIGFjY2VzcyB0byB0aGUgRnJvbnRQYWdlIHdlYi48L2xpPgoKICAgICAgPGxpPlRoZSBkaXJlY3RpdmVzIG11c3QgYmUgcHV0IGluIHRoZSA8Y29kZT4uaHRhY2Nlc3M8L2NvZGU+CiAgICAgIGZpbGVzLiBBdHRlbXB0aW5nIHRvIHB1dCB0aGVtIGluc2lkZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2xvY2F0aW9uIj4mbHQ7TG9jYXRpb24mZ3Q7PC9hPjwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4gZGlyZWN0aXZlcyB3b24ndCB3b3JrLiBUaGlzCiAgICAgIGlzIGJlY2F1c2UgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiBoYXMgdG8gYmUgYWJsZSB0byBncmFiCiAgICAgIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGh6X2dyb3VwZmlsZS5odG1sI2F1dGhncm91cGZpbGUiPkF1dGhHcm91cEZpbGU8L2E+PC9jb2RlPgogICAgICBkaXJlY3RpdmUgdGhhdCBpcyBmb3VuZCBpbiBGcm9udFBhZ2UgPGNvZGU+Lmh0YWNjZXNzPC9jb2RlPgogICAgICBmaWxlcyBzbyB0aGF0IGl0IGtub3dzIHdoZXJlIHRvIGxvb2sgZm9yIHRoZSB2YWxpZCB1c2VyIGxpc3QuIElmCiAgICAgIHRoZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGRpcmVjdGl2ZXMgYXJlbid0IGluIHRoZSBzYW1lCiAgICAgIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZSBhcyB0aGUgRnJvbnRQYWdlIGRpcmVjdGl2ZXMsIHRoZW4KICAgICAgdGhlIGhhY2sgd29uJ3Qgd29yaywgYmVjYXVzZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwKICAgICAgbmV2ZXIgZ2V0IGEgY2hhbmNlIHRvIHByb2Nlc3MgdGhlIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZSwKICAgICAgYW5kIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgRnJvbnRQYWdlLW1hbmFnZWQgdXNlciBmaWxlLjwvbGk+CiAgICA8L3VsPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQQXV0aG9yaXplUHJlZml4IiBpZD0iQXV0aExEQVBBdXRob3JpemVQcmVmaXgiPkF1dGhMREFQQXV0aG9yaXplUHJlZml4PC9hPiA8YSBuYW1lPSJhdXRobGRhcGF1dGhvcml6ZXByZWZpeCIgaWQ9ImF1dGhsZGFwYXV0aG9yaXplcHJlZml4Ij5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TcGVjaWZpZXMgdGhlIHByZWZpeCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBkdXJpbmcKYXV0aG9yaXphdGlvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEF1dGhvcml6ZVByZWZpeCA8ZW0+cHJlZml4PC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBBdXRob3JpemVQcmVmaXggQVVUSE9SSVpFXzwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjYgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgcHJlZml4IHVzZWQgZm9yIGVudmlyb25tZW50CiAgICB2YXJpYWJsZXMgc2V0IGR1cmluZyBMREFQIGF1dGhvcml6YXRpb24uICBJZiA8ZW0+QVVUSEVOVElDQVRFXzwvZW0+IGlzCiAgICBzcGVjaWZpZWQsIGNvbnN1bWVycyBvZiB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2VlIHRoZSBzYW1lIGluZm9ybWF0aW9uCiAgICB3aGV0aGVyIExEQVAgaGFzIHBlcmZvcm1lZCBhdXRoZW50aWNhdGlvbiwgYXV0aG9yaXphdGlvbiwgb3IgYm90aC48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgTm8gYXV0aG9yaXphdGlvbiB2YXJpYWJsZXMgYXJlIHNldCB3aGVuIGEgdXNlciBpcyBhdXRob3JpemVkIG9uIHRoZSBiYXNpcyBvZgogICAgPGNvZGU+UmVxdWlyZSB2YWxpZC11c2VyPC9jb2RlPi4KICAgIDwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQQmluZEF1dGhvcml0YXRpdmUiIGlkPSJBdXRoTERBUEJpbmRBdXRob3JpdGF0aXZlIj5BdXRoTERBUEJpbmRBdXRob3JpdGF0aXZlPC9hPiA8YSBuYW1lPSJhdXRobGRhcGJpbmRhdXRob3JpdGF0aXZlIiBpZD0iYXV0aGxkYXBiaW5kYXV0aG9yaXRhdGl2ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGV0ZXJtaW5lcyBpZiBvdGhlciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMgYXJlIHVzZWQgd2hlbiBhIHVzZXIgY2FuIGJlIG1hcHBlZCB0byBhIEROIGJ1dCB0aGUgc2VydmVyIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmluZCB3aXRoIHRoZSB1c2VyJ3MgY3JlZGVudGlhbHMuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQmluZEF1dGhvcml0YXRpdmUgb2ZmfG9uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQmluZEF1dGhvcml0YXRpdmUgb248L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkJ5IGRlZmF1bHQsIHN1YnNlcXVlbnQgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzIGFyZSBvbmx5IHF1ZXJpZWQgaWYgYQogICAgdXNlciBjYW5ub3QgYmUgbWFwcGVkIHRvIGEgRE4sIGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuIGJlIG1hcHBlZCB0byBhIEROIGFuZCB0aGVpcgogICAgcGFzc3dvcmQgY2Fubm90IGJlIHZlcmlmaWVkIHdpdGggYW4gTERBUCBiaW5kLgogICAgSWYgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aExEQVBCaW5kQXV0aG9yaXRhdGl2ZTwvY29kZT4KICAgIGlzIHNldCB0byA8ZW0+b2ZmPC9lbT4sIG90aGVyIGNvbmZpZ3VyZWQgYXV0aGVudGljYXRpb24gbW9kdWxlcyB3aWxsIGhhdmUKICAgIGEgY2hhbmNlIHRvIHZhbGlkYXRlIHRoZSB1c2VyIGlmIHRoZSBMREFQIGJpbmQgKHdpdGggdGhlIGN1cnJlbnQgdXNlcidzIGNyZWRlbnRpYWxzKQogICAgZmFpbHMgZm9yIGFueSByZWFzb24uPC9wPgogICAgPHA+IFRoaXMgYWxsb3dzIHVzZXJzIHByZXNlbnQgaW4gYm90aCBMREFQIGFuZAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobl9maWxlLmh0bWwjYXV0aHVzZXJmaWxlIj5BdXRoVXNlckZpbGU8L2E+PC9jb2RlPiB0byBhdXRoZW50aWNhdGUKICAgIHdoZW4gdGhlIExEQVAgc2VydmVyIGlzIGF2YWlsYWJsZSBidXQgdGhlIHVzZXIncyBhY2NvdW50IGlzIGxvY2tlZCBvciBwYXNzd29yZAogICAgaXMgb3RoZXJ3aXNlIHVudXNhYmxlLjwvcD4KCjxoMz5TZWUgYWxzbzwvaDM+Cjx1bD4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG5fZmlsZS5odG1sI2F1dGh1c2VyZmlsZSI+QXV0aFVzZXJGaWxlPC9hPjwvY29kZT48L2xpPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRoX2Jhc2ljLmh0bWwjYXV0aGJhc2ljcHJvdmlkZXIiPkF1dGhCYXNpY1Byb3ZpZGVyPC9hPjwvY29kZT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aExEQVBCaW5kRE4iIGlkPSJBdXRoTERBUEJpbmRETiI+QXV0aExEQVBCaW5kRE48L2E+IDxhIG5hbWU9ImF1dGhsZGFwYmluZGRuIiBpZD0iYXV0aGxkYXBiaW5kZG4iPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk9wdGlvbmFsIEROIHRvIHVzZSBpbiBiaW5kaW5nIHRvIHRoZSBMREFQIHNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEJpbmRETiA8ZW0+ZGlzdGluZ3Vpc2hlZC1uYW1lPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkFuIG9wdGlvbmFsIEROIHVzZWQgdG8gYmluZCB0byB0aGUgc2VydmVyIHdoZW4gc2VhcmNoaW5nIGZvcgogICAgZW50cmllcy4gSWYgbm90IHByb3ZpZGVkLCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwgdXNlCiAgICBhbiBhbm9ueW1vdXMgYmluZC48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aExEQVBCaW5kUGFzc3dvcmQiIGlkPSJBdXRoTERBUEJpbmRQYXNzd29yZCI+QXV0aExEQVBCaW5kUGFzc3dvcmQ8L2E+IDxhIG5hbWU9ImF1dGhsZGFwYmluZHBhc3N3b3JkIiBpZD0iYXV0aGxkYXBiaW5kcGFzc3dvcmQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlBhc3N3b3JkIHVzZWQgaW4gY29uanVjdGlvbiB3aXRoIHRoZSBiaW5kIEROPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQmluZFBhc3N3b3JkIDxlbT5wYXNzd29yZDwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD48ZW0+ZXhlYzo8L2VtPiB3YXMgYWRkZWQgaW4gMi40LjUuPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+QSBiaW5kIHBhc3N3b3JkIHRvIHVzZSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBiaW5kIEROLiBOb3RlCiAgICB0aGF0IHRoZSBiaW5kIHBhc3N3b3JkIGlzIHByb2JhYmx5IHNlbnNpdGl2ZSBkYXRhLCBhbmQgc2hvdWxkIGJlCiAgICBwcm9wZXJseSBwcm90ZWN0ZWQuIFlvdSBzaG91bGQgb25seSB1c2UgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcGJpbmRkbiI+QXV0aExEQVBCaW5kRE48L2E+PC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aExEQVBCaW5kUGFzc3dvcmQ8L2NvZGU+IGlmIHlvdQogICAgYWJzb2x1dGVseSBuZWVkIHRoZW0gdG8gc2VhcmNoIHRoZSBkaXJlY3RvcnkuPC9wPgoKICAgIDxwPklmIHRoZSB2YWx1ZSBiZWdpbnMgd2l0aCBleGVjOiB0aGUgcmVzdWx0aW5nIGNvbW1hbmQgd2lsbCBiZQogICAgZXhlY3V0ZWQgYW5kIHRoZSBmaXJzdCBsaW5lIHJldHVybmVkIHRvIHN0YW5kYXJkIG91dHB1dCBieSB0aGUKICAgIHByb2dyYW0gd2lsbCBiZSB1c2VkIGFzIHRoZSBwYXNzd29yZC48L3A+CjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jUGFzc3dvcmQgdXNlZCBhcy1pcwpBdXRoTERBUEJpbmRQYXNzd29yZCBzZWNyZXQKCiNSdW4gL3BhdGgvdG8vcHJvZ3JhbSB0byBnZXQgbXkgcGFzc3dvcmQKQXV0aExEQVBCaW5kUGFzc3dvcmQgZXhlYzovcGF0aC90by9wcm9ncmFtCgojUnVuIC9wYXRoL3RvL290aGVyUHJvZ3JhbSBhbmQgcHJvdmlkZSBhcmd1bWVudHMKQXV0aExEQVBCaW5kUGFzc3dvcmQgImV4ZWM6L3BhdGgvdG8vb3RoZXJQcm9ncmFtIGFyZ3VtZW50MSI8L3ByZT4KCgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQQ2hhcnNldENvbmZpZyIgaWQ9IkF1dGhMREFQQ2hhcnNldENvbmZpZyI+QXV0aExEQVBDaGFyc2V0Q29uZmlnPC9hPiA8YSBuYW1lPSJhdXRobGRhcGNoYXJzZXRjb25maWciIGlkPSJhdXRobGRhcGNoYXJzZXRjb25maWciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkxhbmd1YWdlIHRvIGNoYXJzZXQgY29udmVyc2lvbiBjb25maWd1cmF0aW9uIGZpbGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBDaGFyc2V0Q29uZmlnIDxlbT5maWxlLXBhdGg8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aExEQVBDaGFyc2V0Q29uZmlnPC9jb2RlPiBkaXJlY3RpdmUgc2V0cyB0aGUgbG9jYXRpb24KICAgIG9mIHRoZSBsYW5ndWFnZSB0byBjaGFyc2V0IGNvbnZlcnNpb24gY29uZmlndXJhdGlvbiBmaWxlLiA8dmFyPkZpbGUtcGF0aDwvdmFyPiBpcyByZWxhdGl2ZQogICAgdG8gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2VydmVycm9vdCI+U2VydmVyUm9vdDwvYT48L2NvZGU+LiBUaGlzIGZpbGUgc3BlY2lmaWVzCiAgICB0aGUgbGlzdCBvZiBsYW5ndWFnZSBleHRlbnNpb25zIHRvIGNoYXJhY3RlciBzZXRzLgogICAgTW9zdCBhZG1pbmlzdHJhdG9ycyB1c2UgdGhlIHByb3ZpZGVkIDxjb2RlPmNoYXJzZXQuY29udjwvY29kZT4KICAgIGZpbGUsIHdoaWNoIGFzc29jaWF0ZXMgY29tbW9uIGxhbmd1YWdlIGV4dGVuc2lvbnMgdG8gY2hhcmFjdGVyIHNldHMuPC9wPgoKICAgIDxwPlRoZSBmaWxlIGNvbnRhaW5zIGxpbmVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgPHZhcj5MYW5ndWFnZS1FeHRlbnNpb248L3Zhcj4gPHZhcj5jaGFyc2V0PC92YXI+IFs8dmFyPkxhbmd1YWdlLVN0cmluZzwvdmFyPl0gLi4uCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSBjYXNlIG9mIHRoZSBleHRlbnNpb24gZG9lcyBub3QgbWF0dGVyLiBCbGFuayBsaW5lcywgYW5kIGxpbmVzCiAgICBiZWdpbm5pbmcgd2l0aCBhIGhhc2ggY2hhcmFjdGVyICg8Y29kZT4jPC9jb2RlPikgYXJlIGlnbm9yZWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQQ29tcGFyZUFzVXNlciIgaWQ9IkF1dGhMREFQQ29tcGFyZUFzVXNlciI+QXV0aExEQVBDb21wYXJlQXNVc2VyPC9hPiA8YSBuYW1lPSJhdXRobGRhcGNvbXBhcmVhc3VzZXIiIGlkPSJhdXRobGRhcGNvbXBhcmVhc3VzZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlVzZSB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgY3JlZGVudGlhbHMgdG8gcGVyZm9ybSBhdXRob3JpemF0aW9uIGNvbXBhcmlzb25zPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQ29tcGFyZUFzVXNlciBvbnxvZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBDb21wYXJlQXNVc2VyIG9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjYgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+V2hlbiBzZXQsIGFuZCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGhhcyBhdXRoZW50aWNhdGVkIHRoZQogICAgdXNlciwgTERBUCBjb21wYXJpc29ucyBmb3IgYXV0aG9yaXphdGlvbiB1c2UgdGhlIHF1ZXJpZWQgZGlzdGluZ3Vpc2hlZCBuYW1lIChETikKICAgIGFuZCBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkIG9mIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIgaW5zdGVhZCBvZgogICAgdGhlIHNlcnZlcnMgY29uZmlndXJlZCBjcmVkZW50aWFscy48L3A+CgogICAgPHA+IFRoZSA8ZW0+bGRhcC1hdHRyaWJ1dGU8L2VtPiwgPGVtPmxkYXAtdXNlcjwvZW0+LCBhbmQgPGVtPmxkYXAtZ3JvdXA8L2VtPiAoc2luZ2xlLWxldmVsIG9ubHkpCiAgICBhdXRob3JpemF0aW9uIGNoZWNrcyB1c2UgY29tcGFyaXNvbnMuPC9wPgoKICAgIDxwPlRoaXMgZGlyZWN0aXZlIG9ubHkgaGFzIGVmZmVjdCBvbiB0aGUgY29tcGFyaXNvbnMgcGVyZm9ybWVkIGR1cmluZwogICAgbmVzdGVkIGdyb3VwIHByb2Nlc3Npbmcgd2hlbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBzZWFyY2hhc3VzZXIiPgogICAgQXV0aExEQVBTZWFyY2hBc1VzZXI8L2E+PC9jb2RlPiBpcyBhbHNvIGVuYWJsZWQuPC9wPgoKICAgIDxwPiBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4geW91ciBMREFQIHNlcnZlciBkb2Vzbid0CiAgICAgICAgYWNjZXB0IGFub255bW91cyBjb21wYXJpc29ucyBhbmQgeW91IGNhbm5vdCB1c2UgYSBkZWRpY2F0ZWQKICAgICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBiaW5kZG4iPkF1dGhMREFQQmluZEROPC9hPjwvY29kZT4uCiAgICA8L3A+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBpbml0aWFsYmluZGFzdXNlciI+QXV0aExEQVBJbml0aWFsQmluZEFzVXNlcjwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHNlYXJjaGFzdXNlciI+QXV0aExEQVBTZWFyY2hBc1VzZXI8L2E+PC9jb2RlPjwvbGk+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUENvbXBhcmVETk9uU2VydmVyIiBpZD0iQXV0aExEQVBDb21wYXJlRE5PblNlcnZlciI+QXV0aExEQVBDb21wYXJlRE5PblNlcnZlcjwvYT4gPGEgbmFtZT0iYXV0aGxkYXBjb21wYXJlZG5vbnNlcnZlciIgaWQ9ImF1dGhsZGFwY29tcGFyZWRub25zZXJ2ZXIiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlVzZSB0aGUgTERBUCBzZXJ2ZXIgdG8gY29tcGFyZSB0aGUgRE5zPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQ29tcGFyZUROT25TZXJ2ZXIgb258b2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQQ29tcGFyZUROT25TZXJ2ZXIgb248L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPldoZW4gc2V0LCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwgdXNlIHRoZSBMREFQCiAgICBzZXJ2ZXIgdG8gY29tcGFyZSB0aGUgRE5zLiBUaGlzIGlzIHRoZSBvbmx5IGZvb2xwcm9vZiB3YXkgdG8KICAgIGNvbXBhcmUgRE5zLiAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiB3aWxsIHNlYXJjaCB0aGUKICAgIGRpcmVjdG9yeSBmb3IgdGhlIEROIHNwZWNpZmllZCB3aXRoIHRoZSA8YSBocmVmPSIjcmVxZG4iPjxjb2RlPlJlcXVpcmUgZG48L2NvZGU+PC9hPiBkaXJlY3RpdmUsIHRoZW4sCiAgICByZXRyaWV2ZSB0aGUgRE4gYW5kIGNvbXBhcmUgaXQgd2l0aCB0aGUgRE4gcmV0cmlldmVkIGZyb20gdGhlIHVzZXIKICAgIGVudHJ5LiBJZiB0aGlzIGRpcmVjdGl2ZSBpcyBub3Qgc2V0LAogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiBzaW1wbHkgZG9lcyBhIHN0cmluZyBjb21wYXJpc29uLiBJdAogICAgaXMgcG9zc2libGUgdG8gZ2V0IGZhbHNlIG5lZ2F0aXZlcyB3aXRoIHRoaXMgYXBwcm9hY2gsIGJ1dCBpdCBpcwogICAgbXVjaCBmYXN0ZXIuIE5vdGUgdGhlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+IGNhY2hlIGNhbiBzcGVlZCB1cAogICAgRE4gY29tcGFyaXNvbiBpbiBtb3N0IHNpdHVhdGlvbnMuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQRGVyZWZlcmVuY2VBbGlhc2VzIiBpZD0iQXV0aExEQVBEZXJlZmVyZW5jZUFsaWFzZXMiPkF1dGhMREFQRGVyZWZlcmVuY2VBbGlhc2VzPC9hPiA8YSBuYW1lPSJhdXRobGRhcGRlcmVmZXJlbmNlYWxpYXNlcyIgaWQ9ImF1dGhsZGFwZGVyZWZlcmVuY2VhbGlhc2VzIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5XaGVuIHdpbGwgdGhlIG1vZHVsZSBkZS1yZWZlcmVuY2UgYWxpYXNlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUERlcmVmZXJlbmNlQWxpYXNlcyBuZXZlcnxzZWFyY2hpbmd8ZmluZGluZ3xhbHdheXM8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBEZXJlZmVyZW5jZUFsaWFzZXMgYWx3YXlzPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBzcGVjaWZpZXMgd2hlbiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwKICAgIGRlLXJlZmVyZW5jZSBhbGlhc2VzIGR1cmluZyBMREFQIG9wZXJhdGlvbnMuIFRoZSBkZWZhdWx0IGlzCiAgICA8Y29kZT5hbHdheXM8L2NvZGU+LjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUEdyb3VwQXR0cmlidXRlIiBpZD0iQXV0aExEQVBHcm91cEF0dHJpYnV0ZSI+QXV0aExEQVBHcm91cEF0dHJpYnV0ZTwvYT4gPGEgbmFtZT0iYXV0aGxkYXBncm91cGF0dHJpYnV0ZSIgaWQ9ImF1dGhsZGFwZ3JvdXBhdHRyaWJ1dGUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkxEQVAgYXR0cmlidXRlcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSB1c2VyIG1lbWJlcnMgb2YKZ3JvdXBzLjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEdyb3VwQXR0cmlidXRlIDxlbT5hdHRyaWJ1dGU8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEdyb3VwQXR0cmlidXRlIG1lbWJlciB1bmlxdWVtZW1iZXI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlIHNwZWNpZmllcyB3aGljaCBMREFQIGF0dHJpYnV0ZXMgYXJlIHVzZWQgdG8KICAgIGNoZWNrIGZvciB1c2VyIG1lbWJlcnMgd2l0aGluIGdyb3Vwcy4gTXVsdGlwbGUgYXR0cmlidXRlcyBjYW4gYmUgdXNlZAogICAgYnkgc3BlY2lmeWluZyB0aGlzIGRpcmVjdGl2ZSBtdWx0aXBsZSB0aW1lcy4gSWYgbm90IHNwZWNpZmllZCwKICAgIHRoZW4gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiB1c2VzIHRoZSA8Y29kZT5tZW1iZXI8L2NvZGU+IGFuZAogICAgPGNvZGU+dW5pcXVlbWVtYmVyPC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUEdyb3VwQXR0cmlidXRlSXNETiIgaWQ9IkF1dGhMREFQR3JvdXBBdHRyaWJ1dGVJc0ROIj5BdXRoTERBUEdyb3VwQXR0cmlidXRlSXNETjwvYT4gPGEgbmFtZT0iYXV0aGxkYXBncm91cGF0dHJpYnV0ZWlzZG4iIGlkPSJhdXRobGRhcGdyb3VwYXR0cmlidXRlaXNkbiI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlIHRoZSBETiBvZiB0aGUgY2xpZW50IHVzZXJuYW1lIHdoZW4gY2hlY2tpbmcgZm9yCmdyb3VwIG1lbWJlcnNoaXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBHcm91cEF0dHJpYnV0ZUlzRE4gb258b2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQR3JvdXBBdHRyaWJ1dGVJc0ROIG9uPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5XaGVuIHNldCA8Y29kZT5vbjwvY29kZT4sIHRoaXMgZGlyZWN0aXZlIHNheXMgdG8gdXNlIHRoZQogICAgZGlzdGluZ3Vpc2hlZCBuYW1lIG9mIHRoZSBjbGllbnQgdXNlcm5hbWUgd2hlbiBjaGVja2luZyBmb3IgZ3JvdXAKICAgIG1lbWJlcnNoaXAuICBPdGhlcndpc2UsIHRoZSB1c2VybmFtZSB3aWxsIGJlIHVzZWQuIEZvciBleGFtcGxlLAogICAgYXNzdW1lIHRoYXQgdGhlIGNsaWVudCBzZW50IHRoZSB1c2VybmFtZSA8Y29kZT5iamVuc29uPC9jb2RlPiwKICAgIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBMREFQIEROIDxjb2RlPmNuPUJhYnMgSmVuc29uLAogICAgbz1FeGFtcGxlPC9jb2RlPi4gSWYgdGhpcyBkaXJlY3RpdmUgaXMgc2V0LAogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiB3aWxsIGNoZWNrIGlmIHRoZSBncm91cCBoYXMKICAgIDxjb2RlPmNuPUJhYnMgSmVuc29uLCBvPUV4YW1wbGU8L2NvZGU+IGFzIGEgbWVtYmVyLiBJZiB0aGlzCiAgICBkaXJlY3RpdmUgaXMgbm90IHNldCwgdGhlbiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwKICAgIGNoZWNrIGlmIHRoZSBncm91cCBoYXMgPGNvZGU+YmplbnNvbjwvY29kZT4gYXMgYSBtZW1iZXIuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQSW5pdGlhbEJpbmRBc1VzZXIiIGlkPSJBdXRoTERBUEluaXRpYWxCaW5kQXNVc2VyIj5BdXRoTERBUEluaXRpYWxCaW5kQXNVc2VyPC9hPiA8YSBuYW1lPSJhdXRobGRhcGluaXRpYWxiaW5kYXN1c2VyIiBpZD0iYXV0aGxkYXBpbml0aWFsYmluZGFzdXNlciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RGV0ZXJtaW5lcyBpZiB0aGUgc2VydmVyIGRvZXMgdGhlIGluaXRpYWwgRE4gbG9va3VwIHVzaW5nIHRoZSBiYXNpYyBhdXRoZW50aWNhdGlvbiB1c2VycycKb3duIHVzZXJuYW1lLCBpbnN0ZWFkIG9mIGFub255bW91c2x5IG9yIHdpdGggaGFyZC1jb2RlZCBjcmVkZW50aWFscyBmb3IgdGhlIHNlcnZlcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEluaXRpYWxCaW5kQXNVc2VyIG9mZnxvbjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEluaXRpYWxCaW5kQXNVc2VyIG9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjYgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+QnkgZGVmYXVsdCwgdGhlIHNlcnZlciBlaXRoZXIgYW5vbnltb3VzbHksIG9yIHdpdGggYSBkZWRpY2F0ZWQgdXNlciBhbmQKICAgICBwYXNzd29yZCwgY29udmVydHMgdGhlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lIGludG8gYW4gTERBUAogICAgIGRpc3Rpbmd1aXNoZWQgbmFtZSAoRE4pLiAgVGhpcyBkaXJlY3RpdmUgZm9yY2VzIHRoZSBzZXJ2ZXIgdG8gdXNlIHRoZSB2ZXJiYXRpbSB1c2VybmFtZQogICAgIGFuZCBwYXNzd29yZCBwcm92aWRlZCBieSB0aGUgaW5jb21pbmcgdXNlciB0byBwZXJmb3JtIHRoZSBpbml0aWFsIEROCiAgICAgc2VhcmNoLjwvcD4KCiAgICAgPHA+IElmIHRoZSB2ZXJiYXRpbSB1c2VybmFtZSBjYW4ndCBkaXJlY3RseSBiaW5kLCBidXQgbmVlZHMgc29tZQogICAgIGNvc21ldGljIHRyYW5zZm9ybWF0aW9uLCBzZWUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwaW5pdGlhbGJpbmRwYXR0ZXJuIj4KICAgICBBdXRoTERBUEluaXRpYWxCaW5kUGF0dGVybjwvYT48L2NvZGU+LjwvcD4KCiAgICAgPHA+IFRoaXMgZGlyZWN0aXZlIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB5b3VyIExEQVAgc2VydmVyIGRvZXNuJ3QKICAgICAgICAgYWNjZXB0IGFub255bW91cyBzZWFyY2hlcyBhbmQgeW91IGNhbm5vdCB1c2UgYSBkZWRpY2F0ZWQKICAgICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwYmluZGRuIj5BdXRoTERBUEJpbmRETjwvYT48L2NvZGU+LgogICAgIDwvcD4KCiAgICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdCBhdmFpbGFibGUgd2l0aCBhdXRob3JpemF0aW9uLW9ubHk8L2gzPgogICAgICAgICBUaGlzIGRpcmVjdGl2ZSBjYW4gb25seSBiZSB1c2VkIGlmIHRoaXMgbW9kdWxlIGF1dGhlbnRpY2F0ZXMgdGhlIHVzZXIsIGFuZAogICAgICAgICBoYXMgbm8gZWZmZWN0IHdoZW4gdGhpcyBtb2R1bGUgaXMgdXNlZCBleGNsdXNpdmVseSBmb3IgYXV0aG9yaXphdGlvbi4KICAgICA8L2Rpdj4KCjxoMz5TZWUgYWxzbzwvaDM+Cjx1bD4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcGluaXRpYWxiaW5kcGF0dGVybiI+QXV0aExEQVBJbml0aWFsQmluZFBhdHRlcm48L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBiaW5kZG4iPkF1dGhMREFQQmluZEROPC9hPjwvY29kZT48L2xpPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwY29tcGFyZWFzdXNlciI+QXV0aExEQVBDb21wYXJlQXNVc2VyPC9hPjwvY29kZT48L2xpPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwc2VhcmNoYXN1c2VyIj5BdXRoTERBUFNlYXJjaEFzVXNlcjwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQSW5pdGlhbEJpbmRQYXR0ZXJuIiBpZD0iQXV0aExEQVBJbml0aWFsQmluZFBhdHRlcm4iPkF1dGhMREFQSW5pdGlhbEJpbmRQYXR0ZXJuPC9hPiA8YSBuYW1lPSJhdXRobGRhcGluaXRpYWxiaW5kcGF0dGVybiIgaWQ9ImF1dGhsZGFwaW5pdGlhbGJpbmRwYXR0ZXJuIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TcGVjaWZpZXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBiYXNpYyBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSB0byBiZSB1c2VkIHdoZW4gYmluZGluZyB0byB0aGUgTERBUCBzZXJ2ZXIKdG8gcGVyZm9ybSBhIEROIGxvb2t1cDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUEluaXRpYWxCaW5kUGF0dGVybiA8ZW0+PHZhcj5yZWdleDwvdmFyPiA8dmFyPnN1YnN0aXR1dGlvbjwvdmFyPjwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQSW5pdGlhbEJpbmRQYXR0ZXJuICguKikgJDEgKHJlbW90ZSB1c2VybmFtZSB1c2VkIHZlcmJhdGltKTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjYgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+SWYgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwaW5pdGlhbGJpbmRhc3VzZXIiPkF1dGhMREFQSW5pdGlhbEJpbmRBc1VzZXI8L2E+PC9jb2RlPiBpcyBzZXQgdG8KICAgICAgIDxlbT5PTjwvZW0+LCB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgd2lsbCBiZSB0cmFuc2Zvcm1lZCBhY2NvcmRpbmcgdG8gdGhlCiAgICAgICByZWd1bGFyIGV4cHJlc3Npb24gYW5kIHN1YnN0aXR1dGlvbiBhcmd1bWVudHMuPC9wPgoKICAgIDxwPiBUaGUgcmVndWxhciBleHByZXNzaW9uIGFyZ3VtZW50IGlzIGNvbXBhcmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUuCiAgICAgICAgVGhlIHN1YnN0aXR1dGlvbiBhcmd1bWVudCBtYXkgY29udGFpbiBiYWNrcmVmZXJlbmNlcywgYnV0IGhhcyBubyBvdGhlciB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uLjwvcD4KCiAgICA8cD4gVGhpcyBkaXJlY3RpdmUgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHlvdXIgTERBUCBzZXJ2ZXIgZG9lc24ndAogICAgICAgIGFjY2VwdCBhbm9ueW1vdXMgc2VhcmNoZXMgYW5kIHlvdSBjYW5ub3QgdXNlIGEgZGVkaWNhdGVkCiAgICAgICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwYmluZGRuIj5BdXRoTERBUEJpbmRETjwvYT48L2NvZGU+LgogICAgPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5BdXRoTERBUEluaXRpYWxCaW5kUGF0dGVybiAoLispICQxQGV4YW1wbGUuY29tPC9wcmU+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPkF1dGhMREFQSW5pdGlhbEJpbmRQYXR0ZXJuICguKykgY249JDEsZGM9ZXhhbXBsZSxkYz1jb208L3ByZT4KCgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdCBhdmFpbGFibGUgd2l0aCBhdXRob3JpemF0aW9uLW9ubHk8L2gzPgogICAgICAgIFRoaXMgZGlyZWN0aXZlIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhpcyBtb2R1bGUgYXV0aGVudGljYXRlcyB0aGUgdXNlciwgYW5kCiAgICAgICAgaGFzIG5vIGVmZmVjdCB3aGVuIHRoaXMgbW9kdWxlIGlzIHVzZWQgZXhjbHVzaXZlbHkgZm9yIGF1dGhvcml6YXRpb24uCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5kZWJ1Z2dpbmc8L2gzPgogICAgICAgIFRoZSBzdWJzdGl0dXRlZCBETiBpcyByZWNvcmRlZCBpbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgICA8ZW0+TERBUF9CSU5EQVNVU0VSPC9lbT4uICBJZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBpbnB1dCwKICAgICAgICB0aGUgdmVyYmF0aW0gdXNlcm5hbWUgaXMgdXNlZC4KICAgIDwvZGl2PgoKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwaW5pdGlhbGJpbmRhc3VzZXIiPkF1dGhMREFQSW5pdGlhbEJpbmRBc1VzZXI8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBiaW5kZG4iPkF1dGhMREFQQmluZEROPC9hPjwvY29kZT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aExEQVBNYXhTdWJHcm91cERlcHRoIiBpZD0iQXV0aExEQVBNYXhTdWJHcm91cERlcHRoIj5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGg8L2E+IDxhIG5hbWU9ImF1dGhsZGFwbWF4c3ViZ3JvdXBkZXB0aCIgaWQ9ImF1dGhsZGFwbWF4c3ViZ3JvdXBkZXB0aCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U3BlY2lmaWVzIHRoZSBtYXhpbXVtIHN1Yi1ncm91cCBuZXN0aW5nIGRlcHRoIHRoYXQgd2lsbCBiZQpldmFsdWF0ZWQgYmVmb3JlIHRoZSB1c2VyIHNlYXJjaCBpcyBkaXNjb250aW51ZWQuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQTWF4U3ViR3JvdXBEZXB0aCA8dmFyPk51bWJlcjwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGggMTA8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiB2ZXJzaW9uIDIuMy4wIGFuZCBsYXRlcjwvdGQ+PC90cj4KPC90YWJsZT4KICAgPHA+V2hlbiB0aGlzIGRpcmVjdGl2ZSBpcyBzZXQgdG8gYSBub24temVybyB2YWx1ZSA8Y29kZT5YPC9jb2RlPgogICBjb21iaW5lZCB3aXRoIHVzZSBvZiB0aGUgPGNvZGU+UmVxdWlyZSBsZGFwLWdyb3VwIHNvbWVHcm91cEROPC9jb2RlPgogICBkaXJlY3RpdmUsIHRoZSBwcm92aWRlZCB1c2VyIGNyZWRlbnRpYWxzIHdpbGwgYmUgc2VhcmNoZWQgZm9yCiAgIGFzIGEgbWVtYmVyIG9mIHRoZSA8Y29kZT5zb21lR3JvdXBETjwvY29kZT4gZGlyZWN0b3J5IG9iamVjdCBvciBvZgogICBhbnkgZ3JvdXAgbWVtYmVyIG9mIHRoZSBjdXJyZW50IGdyb3VwIHVwIHRvIHRoZSBtYXhpbXVtIG5lc3RpbmcKICAgbGV2ZWwgPGNvZGU+WDwvY29kZT4gc3BlY2lmaWVkIGJ5IHRoaXMgZGlyZWN0aXZlLjwvcD4KICAgPHA+U2VlIHRoZSA8YSBocmVmPSIjcmVxZ3JvdXAiPjxjb2RlPlJlcXVpcmUgbGRhcC1ncm91cDwvY29kZT48L2E+CiAgIHNlY3Rpb24gZm9yIGEgbW9yZSBkZXRhaWxlZCBleGFtcGxlLjwvcD4KCiAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5OZXN0ZWQgZ3JvdXBzIHBlcmZvcm1hbmNlPC9oMz4KICAgPHA+IFdoZW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aExEQVBTdWJHcm91cEF0dHJpYnV0ZTwvY29kZT4gb3ZlcmxhcHMgd2l0aAogICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoTERBUEdyb3VwQXR0cmlidXRlPC9jb2RlPiAoYXMgaXQgZG9lcyBieSBkZWZhdWx0IGFuZAogICBhcyByZXF1aXJlZCBieSBjb21tb24gTERBUCBzY2hlbWFzKSwgdW5jYWNoZWQgc2VhcmNoaW5nIGZvciBzdWJncm91cHMgaW4gCiAgIGxhcmdlIGdyb3VwcyBjYW4gYmUgdmVyeSBzbG93LiBJZiB5b3UgdXNlIGxhcmdlLCBub24tbmVzdGVkIGdyb3Vwcywgc2V0IAogICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BdXRoTERBUE1heFN1Ykdyb3VwRGVwdGg8L2NvZGU+IHRvIHplcm8uPC9wPgogICA8L2Rpdj4KCgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iQXV0aExEQVBSZW1vdGVVc2VyQXR0cmlidXRlIiBpZD0iQXV0aExEQVBSZW1vdGVVc2VyQXR0cmlidXRlIj5BdXRoTERBUFJlbW90ZVVzZXJBdHRyaWJ1dGU8L2E+IDxhIG5hbWU9ImF1dGhsZGFwcmVtb3RldXNlcmF0dHJpYnV0ZSIgaWQ9ImF1dGhsZGFwcmVtb3RldXNlcmF0dHJpYnV0ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHJldHVybmVkIGR1cmluZyB0aGUgdXNlcgpxdWVyeSB0byBzZXQgdGhlIFJFTU9URV9VU0VSIGVudmlyb25tZW50IHZhcmlhYmxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQUmVtb3RlVXNlckF0dHJpYnV0ZSB1aWQ8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+SWYgdGhpcyBkaXJlY3RpdmUgaXMgc2V0LCB0aGUgdmFsdWUgb2YgdGhlCiAgICA8Y29kZT5SRU1PVEVfVVNFUjwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBiZSBzZXQgdG8gdGhlCiAgICB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHNwZWNpZmllZC4gTWFrZSBzdXJlIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMKICAgIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgaW4gdGhlIEF1dGhMREFQVXJsIGRlZmluaXRpb24sCiAgICBvdGhlcndpc2UgdGhpcyBkaXJlY3RpdmUgd2lsbCBoYXZlIG5vIGVmZmVjdC4gVGhpcyBkaXJlY3RpdmUsIGlmCiAgICBwcmVzZW50LCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwcmVtb3RldXNlcmlzZG4iPkF1dGhMREFQUmVtb3RlVXNlcklzRE48L2E+PC9jb2RlPi4gVGhpcwogICAgZGlyZWN0aXZlIGlzIHVzZWZ1bCBzaG91bGQgeW91IHdhbnQgcGVvcGxlIHRvIGxvZyBpbnRvIGEgd2Vic2l0ZQogICAgdXNpbmcgYW4gZW1haWwgYWRkcmVzcywgYnV0IGEgYmFja2VuZCBhcHBsaWNhdGlvbiBleHBlY3RzIHRoZQogICAgdXNlcm5hbWUgYXMgYSB1c2VyaWQuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQUmVtb3RlVXNlcklzRE4iIGlkPSJBdXRoTERBUFJlbW90ZVVzZXJJc0ROIj5BdXRoTERBUFJlbW90ZVVzZXJJc0ROPC9hPiA8YSBuYW1lPSJhdXRobGRhcHJlbW90ZXVzZXJpc2RuIiBpZD0iYXV0aGxkYXByZW1vdGV1c2VyaXNkbiI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlIHRoZSBETiBvZiB0aGUgY2xpZW50IHVzZXJuYW1lIHRvIHNldCB0aGUgUkVNT1RFX1VTRVIKZW52aXJvbm1lbnQgdmFyaWFibGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBSZW1vdGVVc2VySXNETiBvbnxvZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBSZW1vdGVVc2VySXNETiBvZmY8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+ZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkF1dGhDb25maWc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hdXRobnpfbGRhcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPklmIHRoaXMgZGlyZWN0aXZlIGlzIHNldCB0byBvbiwgdGhlIHZhbHVlIG9mIHRoZQogICAgPGNvZGU+UkVNT1RFX1VTRVI8L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvIHRoZSBmdWxsCiAgICBkaXN0aW5ndWlzaGVkIG5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlciwgcmF0aGVyIHRoYW4ganVzdAogICAgdGhlIHVzZXJuYW1lIHRoYXQgd2FzIHBhc3NlZCBieSB0aGUgY2xpZW50LiBJdCBpcyB0dXJuZWQgb2ZmIGJ5CiAgICBkZWZhdWx0LjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUFNlYXJjaEFzVXNlciIgaWQ9IkF1dGhMREFQU2VhcmNoQXNVc2VyIj5BdXRoTERBUFNlYXJjaEFzVXNlcjwvYT4gPGEgbmFtZT0iYXV0aGxkYXBzZWFyY2hhc3VzZXIiIGlkPSJhdXRobGRhcHNlYXJjaGFzdXNlciI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VXNlIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIncyBjcmVkZW50aWFscyB0byBwZXJmb3JtIGF1dGhvcml6YXRpb24gc2VhcmNoZXM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBTZWFyY2hBc1VzZXIgb258b2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkF1dGhMREFQU2VhcmNoQXNVc2VyIG9mZjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjYgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+V2hlbiBzZXQsIGFuZCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IGhhcyBhdXRoZW50aWNhdGVkIHRoZQogICAgdXNlciwgTERBUCBzZWFyY2hlcyBmb3IgYXV0aG9yaXphdGlvbiB1c2UgdGhlIHF1ZXJpZWQgZGlzdGluZ3Vpc2hlZCBuYW1lIChETikKICAgIGFuZCBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkIG9mIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIgaW5zdGVhZCBvZgogICAgdGhlIHNlcnZlcnMgY29uZmlndXJlZCBjcmVkZW50aWFscy48L3A+CgogICAgPHA+IFRoZSA8ZW0+bGRhcC1maWx0ZXI8L2VtPiBhbmQgPGVtPmxkYXAtZG48L2VtPiBhdXRob3JpemF0aW9uCiAgICBjaGVja3MgdXNlIHNlYXJjaGVzLjwvcD4KCiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBvbmx5IGhhcyBlZmZlY3Qgb24gdGhlIGNvbXBhcmlzb25zIHBlcmZvcm1lZCBkdXJpbmcKICAgIG5lc3RlZCBncm91cCBwcm9jZXNzaW5nIHdoZW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2F1dGhsZGFwY29tcGFyZWFzdXNlciI+CiAgICBBdXRoTERBUENvbXBhcmVBc1VzZXI8L2E+PC9jb2RlPiBpcyBhbHNvIGVuYWJsZWQuPC9wPgoKICAgIDxwPiBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4geW91ciBMREFQIHNlcnZlciBkb2Vzbid0CiAgICAgICAgYWNjZXB0IGFub255bW91cyBzZWFyY2hlcyBhbmQgeW91IGNhbm5vdCB1c2UgYSBkZWRpY2F0ZWQKICAgICAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBiaW5kZG4iPkF1dGhMREFQQmluZEROPC9hPjwvY29kZT4uCiAgICA8L3A+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYXV0aGxkYXBpbml0aWFsYmluZGFzdXNlciI+QXV0aExEQVBJbml0aWFsQmluZEFzVXNlcjwvYT48L2NvZGU+PC9saT4KPGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcGNvbXBhcmVhc3VzZXIiPkF1dGhMREFQQ29tcGFyZUFzVXNlcjwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IkF1dGhMREFQU3ViR3JvdXBBdHRyaWJ1dGUiIGlkPSJBdXRoTERBUFN1Ykdyb3VwQXR0cmlidXRlIj5BdXRoTERBUFN1Ykdyb3VwQXR0cmlidXRlPC9hPiA8YSBuYW1lPSJhdXRobGRhcHN1Ymdyb3VwYXR0cmlidXRlIiBpZD0iYXV0aGxkYXBzdWJncm91cGF0dHJpYnV0ZSI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgbGFiZWxzLCBvbmUgdmFsdWUgcGVyCmRpcmVjdGl2ZSBsaW5lLCB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZSBtZW1iZXJzIG9mIHRoZSBjdXJyZW50IGdyb3VwIHRoYXQKYXJlIGdyb3Vwcy48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBTdWJHcm91cEF0dHJpYnV0ZSA8ZW0+YXR0cmlidXRlPC9lbT48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBTdWJncm91cEF0dHJpYnV0ZSBtZW1iZXIgdW5pcXVlbWVtYmVyPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbiAyLjMuMCBhbmQgbGF0ZXI8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5BbiBMREFQIGdyb3VwIG9iamVjdCBtYXkgY29udGFpbiBtZW1iZXJzIHRoYXQgYXJlIHVzZXJzIGFuZAogICAgbWVtYmVycyB0aGF0IGFyZSBncm91cHMgKGNhbGxlZCBuZXN0ZWQgb3Igc3ViIGdyb3VwcykuIFRoZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+QXV0aExEQVBTdWJHcm91cEF0dHJpYnV0ZTwvY29kZT4gZGlyZWN0aXZlIGlkZW50aWZpZXMgdGhlCiAgICBsYWJlbHMgb2YgZ3JvdXAgbWVtYmVycyBhbmQgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcGdyb3VwYXR0cmlidXRlIj5BdXRoTERBUEdyb3VwQXR0cmlidXRlPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSBpZGVudGlmaWVzIHRoZSBsYWJlbHMgb2YgdGhlIHVzZXIgbWVtYmVycy4gTXVsdGlwbGUKICAgIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYnkgc3BlY2lmeWluZyB0aGlzIGRpcmVjdGl2ZSBtdWx0aXBsZSB0aW1lcy4KICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZW4gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPiB1c2VzIHRoZQogICAgPGNvZGU+bWVtYmVyPC9jb2RlPiBhbmQgPGNvZGU+dW5pcXVlTWVtYmVyPC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUFN1Ykdyb3VwQ2xhc3MiIGlkPSJBdXRoTERBUFN1Ykdyb3VwQ2xhc3MiPkF1dGhMREFQU3ViR3JvdXBDbGFzczwvYT4gPGEgbmFtZT0iYXV0aGxkYXBzdWJncm91cGNsYXNzIiBpZD0iYXV0aGxkYXBzdWJncm91cGNsYXNzIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TcGVjaWZpZXMgd2hpY2ggTERBUCBvYmplY3RDbGFzcyB2YWx1ZXMgaWRlbnRpZnkgZGlyZWN0b3J5Cm9iamVjdHMgdGhhdCBhcmUgZ3JvdXBzIGR1cmluZyBzdWItZ3JvdXAgcHJvY2Vzc2luZy48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBTdWJHcm91cENsYXNzIDxlbT5MZGFwT2JqZWN0Q2xhc3M8L2VtPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5BdXRoTERBUFN1Ykdyb3VwQ2xhc3MgZ3JvdXBPZk5hbWVzIGdyb3VwT2ZVbmlxdWVOYW1lczwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5kaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QXV0aENvbmZpZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2F1dGhuel9sZGFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4zLjAgYW5kIGxhdGVyPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+QW4gTERBUCBncm91cCBvYmplY3QgbWF5IGNvbnRhaW4gbWVtYmVycyB0aGF0IGFyZSB1c2VycyBhbmQKICAgIG1lbWJlcnMgdGhhdCBhcmUgZ3JvdXBzIChjYWxsZWQgbmVzdGVkIG9yIHN1YiBncm91cHMpLiBUaGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHN1Ymdyb3VwYXR0cmlidXRlIj5BdXRoTERBUFN1Ykdyb3VwQXR0cmlidXRlPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSBpZGVudGlmaWVzIHRoZQogICAgbGFiZWxzIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmUgc3ViLWdyb3VwcyBvZiB0aGUgY3VycmVudCBncm91cAogICAgKGFzIG9wcG9zZWQgdG8gdXNlciBtZW1iZXJzKS4gVGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkF1dGhMREFQU3ViR3JvdXBDbGFzczwvY29kZT4KICAgIGRpcmVjdGl2ZSBzcGVjaWZpZXMgdGhlIExEQVAgb2JqZWN0Q2xhc3MgdmFsdWVzIHVzZWQgaW4gdmVyaWZ5aW5nIHRoYXQKICAgIHRoZXNlIHBvdGVudGlhbCBzdWItZ3JvdXBzIGFyZSBpbiBmYWN0IGdyb3VwIG9iamVjdHMuIFZlcmlmaWVkIHN1Yi1ncm91cHMKICAgIGNhbiB0aGVuIGJlIHNlYXJjaGVkIGZvciBtb3JlIHVzZXIgb3Igc3ViLWdyb3VwIG1lbWJlcnMuIE11bHRpcGxlCiAgICBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGJ5IHNwZWNpZnlpbmcgdGhpcyBkaXJlY3RpdmUgbXVsdGlwbGUgdGltZXMuCiAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGVuIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCI+bW9kX2F1dGhuel9sZGFwPC9hPjwvY29kZT4gdXNlcyB0aGUKICAgIDxjb2RlPmdyb3VwT2ZOYW1lczwvY29kZT4gYW5kIDxjb2RlPmdyb3VwT2ZVbmlxdWVOYW1lczwvY29kZT4gdmFsdWVzLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBdXRoTERBUFVybCIgaWQ9IkF1dGhMREFQVXJsIj5BdXRoTERBUFVybDwvYT4gPGEgbmFtZT0iYXV0aGxkYXB1cmwiIGlkPSJhdXRobGRhcHVybCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+VVJMIHNwZWNpZnlpbmcgdGhlIExEQVAgc2VhcmNoIHBhcmFtZXRlcnM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+QXV0aExEQVBVcmwgPGVtPnVybCBbTk9ORXxTU0x8VExTfFNUQVJUVExTXTwvZW0+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPmRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5BdXRoQ29uZmlnPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYXV0aG56X2xkYXA8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5BbiBSRkMgMjI1NSBVUkwgd2hpY2ggc3BlY2lmaWVzIHRoZSBMREFQIHNlYXJjaCBwYXJhbWV0ZXJzCiAgICB0byB1c2UuIFRoZSBzeW50YXggb2YgdGhlIFVSTCBpczwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+bGRhcDovL2hvc3Q6cG9ydC9iYXNlZG4/YXR0cmlidXRlP3Njb3BlP2ZpbHRlcjwvY29kZT48L3A+PC9kaXY+CiAgICA8cD5JZiB5b3Ugd2FudCB0byBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgTERBUCBVUkwgdGhhdCBBcGFjaGUgc2hvdWxkIHRyeSBpbiB0dXJuLCB0aGUgc3ludGF4IGlzOjwvcD4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPkF1dGhMREFQVXJsICJsZGFwOi8vbGRhcDEuZXhhbXBsZS5jb20gbGRhcDIuZXhhbXBsZS5jb20vZGM9Li4uIjwvcHJlPgoKPHA+PGVtPjxzdHJvbmc+Q2F2ZWF0OiA8L3N0cm9uZz5JZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBzZXJ2ZXJzLCB5b3UgbmVlZCB0byBlbmNsb3NlIHRoZSBlbnRpcmUgVVJMIHN0cmluZyBpbiBxdW90ZXM7Cm90aGVyd2lzZSB5b3Ugd2lsbCBnZXQgYW4gZXJyb3I6ICJBdXRoTERBUFVSTCB0YWtlcyBvbmUgYXJndW1lbnQsIFVSTCB0byBkZWZpbmUgTERBUCBjb25uZWN0aW9uLi4iIDwvZW0+CllvdSBjYW4gb2YgY291cnNlIHVzZSBzZWFyY2ggcGFyYW1ldGVycyBvbiBlYWNoIG9mIHRoZXNlLjwvcD4KCjxkbD4KPGR0PmxkYXA8L2R0PgoKICAgICAgICA8ZGQ+Rm9yIHJlZ3VsYXIgbGRhcCwgdXNlIHRoZQogICAgICAgIHN0cmluZyA8Y29kZT5sZGFwPC9jb2RlPi4gRm9yIHNlY3VyZSBMREFQLCB1c2UgPGNvZGU+bGRhcHM8L2NvZGU+CiAgICAgICAgaW5zdGVhZC4gU2VjdXJlIExEQVAgaXMgb25seSBhdmFpbGFibGUgaWYgQXBhY2hlIHdhcyBsaW5rZWQKICAgICAgICB0byBhbiBMREFQIGxpYnJhcnkgd2l0aCBTU0wgc3VwcG9ydC48L2RkPgoKPGR0Pmhvc3Q6cG9ydDwvZHQ+CgogICAgICAgIDxkZD4KICAgICAgICAgIDxwPlRoZSBuYW1lL3BvcnQgb2YgdGhlIGxkYXAgc2VydmVyIChkZWZhdWx0cyB0bwogICAgICAgICAgPGNvZGU+bG9jYWxob3N0OjM4OTwvY29kZT4gZm9yIDxjb2RlPmxkYXA8L2NvZGU+LCBhbmQKICAgICAgICAgIDxjb2RlPmxvY2FsaG9zdDo2MzY8L2NvZGU+IGZvciA8Y29kZT5sZGFwczwvY29kZT4pLiBUbwogICAgICAgICAgc3BlY2lmeSBtdWx0aXBsZSwgcmVkdW5kYW50IExEQVAgc2VydmVycywganVzdCBsaXN0IGFsbAogICAgICAgICAgc2VydmVycywgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hdXRobnpfbGRhcC5odG1sIj5tb2RfYXV0aG56X2xkYXA8L2E+PC9jb2RlPgogICAgICAgICAgd2lsbCB0cnkgY29ubmVjdGluZyB0byBlYWNoIHNlcnZlciBpbiB0dXJuLCB1bnRpbCBpdCBtYWtlcyBhCiAgICAgICAgICBzdWNjZXNzZnVsIGNvbm5lY3Rpb24uIElmIG11bHRpcGxlIGxkYXAgc2VydmVycyBhcmUgc3BlY2lmaWVkLAogICAgICAgICAgdGhlbiBlbnRpcmUgTERBUCBVUkwgbXVzdCBiZSBlbmNhcHN1bGF0ZWQgaW4gZG91YmxlIHF1b3Rlcy48L3A+CgogICAgICAgICAgPHA+T25jZSBhIGNvbm5lY3Rpb24gaGFzIGJlZW4gbWFkZSB0byBhIHNlcnZlciwgdGhhdAogICAgICAgICAgY29ubmVjdGlvbiByZW1haW5zIGFjdGl2ZSBmb3IgdGhlIGxpZmUgb2YgdGhlCiAgICAgICAgICA8Y29kZSBjbGFzcz0icHJvZ3JhbSI+PGEgaHJlZj0iLi4vcHJvZ3JhbXMvaHR0cGQuaHRtbCI+aHR0cGQ8L2E+PC9jb2RlPiBwcm9jZXNzLCBvciB1bnRpbCB0aGUgTERBUCBzZXJ2ZXIgZ29lcwogICAgICAgICAgZG93bi48L3A+CgogICAgICAgICAgPHA+SWYgdGhlIExEQVAgc2VydmVyIGdvZXMgZG93biBhbmQgYnJlYWtzIGFuIGV4aXN0aW5nCiAgICAgICAgICBjb25uZWN0aW9uLCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiPm1vZF9hdXRobnpfbGRhcDwvYT48L2NvZGU+IHdpbGwgYXR0ZW1wdCB0bwogICAgICAgICAgcmUtY29ubmVjdCwgc3RhcnRpbmcgd2l0aCB0aGUgcHJpbWFyeSBzZXJ2ZXIsIGFuZCB0cnlpbmcKICAgICAgICAgIGVhY2ggcmVkdW5kYW50IHNlcnZlciBpbiB0dXJuLiBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQKICAgICAgICAgIHRoYW4gYSB0cnVlIHJvdW5kLXJvYmluIHNlYXJjaC48L3A+CiAgICAgICAgPC9kZD4KCjxkdD5iYXNlZG48L2R0PgoKICAgICAgICA8ZGQ+VGhlIEROIG9mIHRoZSBicmFuY2ggb2YgdGhlCiAgICAgICAgZGlyZWN0b3J5IHdoZXJlIGFsbCBzZWFyY2hlcyBzaG91bGQgc3RhcnQgZnJvbS4gQXQgdGhlIHZlcnkKICAgICAgICBsZWFzdCwgdGhpcyBtdXN0IGJlIHRoZSB0b3Agb2YgeW91ciBkaXJlY3RvcnkgdHJlZSwgYnV0CiAgICAgICAgY291bGQgYWxzbyBzcGVjaWZ5IGEgc3VidHJlZSBpbiB0aGUgZGlyZWN0b3J5LjwvZGQ+Cgo8ZHQ+YXR0cmlidXRlPC9kdD4KCiAgICAgICAgPGRkPlRoZSBhdHRyaWJ1dGUgdG8gc2VhcmNoIGZvci4KICAgICAgICBBbHRob3VnaCBSRkMgMjI1NSBhbGxvd3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgogICAgICAgIGF0dHJpYnV0ZXMsIG9ubHkgdGhlIGZpcnN0IGF0dHJpYnV0ZSB3aWxsIGJlIHVzZWQsIG5vCiAgICAgICAgbWF0dGVyIGhvdyBtYW55IGFyZSBwcm92aWRlZC4gSWYgbm8gYXR0cmlidXRlcyBhcmUKICAgICAgICBwcm92aWRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIDxjb2RlPnVpZDwvY29kZT4uIEl0J3MgYSBnb29kCiAgICAgICAgaWRlYSB0byBjaG9vc2UgYW4gYXR0cmlidXRlIHRoYXQgd2lsbCBiZSB1bmlxdWUgYWNyb3NzIGFsbAogICAgICAgIGVudHJpZXMgaW4gdGhlIHN1YnRyZWUgeW91IHdpbGwgYmUgdXNpbmcuICBBbGwgYXR0cmlidXRlcwogICAgICAgIGxpc3RlZCB3aWxsIGJlIHB1dCBpbnRvIHRoZSBlbnZpcm9ubWVudCB3aXRoIGFuIEFVVEhFTlRJQ0FURV8gcHJlZml4CiAgICAgICAgZm9yIHVzZSBieSBvdGhlciBtb2R1bGVzLjwvZGQ+Cgo8ZHQ+c2NvcGU8L2R0PgoKICAgICAgICA8ZGQ+VGhlIHNjb3BlIG9mIHRoZSBzZWFyY2guIENhbiBiZSBlaXRoZXIgPGNvZGU+b25lPC9jb2RlPiBvcgogICAgICAgIDxjb2RlPnN1YjwvY29kZT4uIE5vdGUgdGhhdCBhIHNjb3BlIG9mIDxjb2RlPmJhc2U8L2NvZGU+IGlzCiAgICAgICAgYWxzbyBzdXBwb3J0ZWQgYnkgUkZDIDIyNTUsIGJ1dCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMKICAgICAgICBtb2R1bGUuIElmIHRoZSBzY29wZSBpcyBub3QgcHJvdmlkZWQsIG9yIGlmIDxjb2RlPmJhc2U8L2NvZGU+IHNjb3BlCiAgICAgICAgaXMgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgYSBzY29wZSBvZgogICAgICAgIDxjb2RlPnN1YjwvY29kZT4uPC9kZD4KCjxkdD5maWx0ZXI8L2R0PgoKICAgICAgICA8ZGQ+QSB2YWxpZCBMREFQIHNlYXJjaCBmaWx0ZXIuIElmCiAgICAgICAgbm90IHByb3ZpZGVkLCBkZWZhdWx0cyB0byA8Y29kZT4ob2JqZWN0Q2xhc3M9Kik8L2NvZGU+LCB3aGljaAogICAgICAgIHdpbGwgc2VhcmNoIGZvciBhbGwgb2JqZWN0cyBpbiB0aGUgdHJlZS4gRmlsdGVycyBhcmUKICAgICAgICBsaW1pdGVkIHRvIGFwcHJveGltYXRlbHkgODAwMCBjaGFyYWN0ZXJzICh0aGUgZGVmaW5pdGlvbiBvZgogICAgICAgIDxjb2RlPk1BWF9TVFJJTkdfTEVOPC9jb2RlPiBpbiB0aGUgQXBhY2hlIHNvdXJjZSBjb2RlKS4gVGhpcwogICAgICAgIHNob3VsZCBiZSBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3IgYW55IGFwcGxpY2F0aW9uLiBJbiAyLjQuMTAgYW5kIGxhdGVyLAogICAgICAgIHRoZSBrZXl3b3JkIDxjb2RlPm5vbmU8L2NvZGU+IGRpc2FibGVzIHRoZSB1c2Ugb2YgYSBmaWx0ZXI7IHRoaXMgaXMKICAgICAgICByZXF1aXJlZCBieSBzb21lIHByaW1pdGl2ZSBMREFQIHNlcnZlcnMuPC9kZD4KPC9kbD4KCiAgICA8cD5XaGVuIGRvaW5nIHNlYXJjaGVzLCB0aGUgYXR0cmlidXRlLCBmaWx0ZXIgYW5kIHVzZXJuYW1lIHBhc3NlZAogICAgYnkgdGhlIEhUVFAgY2xpZW50IGFyZSBjb21iaW5lZCB0byBjcmVhdGUgYSBzZWFyY2ggZmlsdGVyIHRoYXQKICAgIGxvb2tzIGxpa2UKICAgIDxjb2RlPigmYW1wOyg8ZW0+ZmlsdGVyPC9lbT4pKDxlbT5hdHRyaWJ1dGU8L2VtPj08ZW0+dXNlcm5hbWU8L2VtPikpPC9jb2RlPi48L3A+CgogICAgPHA+Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIGFuIFVSTCBvZgogICAgPGNvZGU+bGRhcDovL2xkYXAuZXhhbXBsZS5jb20vbz1FeGFtcGxlP2NuP3N1Yj8ocG9zaXhpZD0qKTwvY29kZT4uIFdoZW4KICAgIGEgY2xpZW50IGF0dGVtcHRzIHRvIGNvbm5lY3QgdXNpbmcgYSB1c2VybmFtZSBvZiA8Y29kZT5CYWJzCiAgICBKZW5zb248L2NvZGU+LCB0aGUgcmVzdWx0aW5nIHNlYXJjaCBmaWx0ZXIgd2lsbCBiZQogICAgPGNvZGU+KCZhbXA7KHBvc2l4aWQ9KikoY249QmFicyBKZW5zb24pKTwvY29kZT4uPC9wPgoKICAgIDxwPkFuIG9wdGlvbmFsIHBhcmFtZXRlciBjYW4gYmUgYWRkZWQgdG8gYWxsb3cgdGhlIExEQVAgVXJsIHRvIG92ZXJyaWRlCiAgICB0aGUgY29ubmVjdGlvbiB0eXBlLiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOjwvcD4KCjxkbD4KICAgIDxkdD5OT05FPC9kdD4KICAgICAgICA8ZGQ+RXN0YWJsaXNoIGFuIHVuc2VjdXJlIGNvbm5lY3Rpb24gb24gdGhlIGRlZmF1bHQgTERBUCBwb3J0LiBUaGlzCiAgICAgICAgaXMgdGhlIHNhbWUgYXMgPGNvZGU+bGRhcDovLzwvY29kZT4gb24gcG9ydCAzODkuPC9kZD4KICAgIDxkdD5TU0w8L2R0PgogICAgICAgIDxkZD5Fc3RhYmxpc2ggYSBzZWN1cmUgY29ubmVjdGlvbiBvbiB0aGUgZGVmYXVsdCBzZWN1cmUgTERBUCBwb3J0LgogICAgICAgIFRoaXMgaXMgdGhlIHNhbWUgYXMgPGNvZGU+bGRhcHM6Ly88L2NvZGU+PC9kZD4KICAgIDxkdD5UTFMgfCBTVEFSVFRMUzwvZHQ+CiAgICAgICAgPGRkPkVzdGFibGlzaCBhbiB1cGdyYWRlZCBzZWN1cmUgY29ubmVjdGlvbiBvbiB0aGUgZGVmYXVsdCBMREFQIHBvcnQuCiAgICAgICAgVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgaW5pdGlhdGVkIG9uIHBvcnQgMzg5IGJ5IGRlZmF1bHQgYW5kIHRoZW4KICAgICAgICB1cGdyYWRlZCB0byBhIHNlY3VyZSBjb25uZWN0aW9uIG9uIHRoZSBzYW1lIHBvcnQuPC9kZD4KPC9kbD4KCiAgICA8cD5TZWUgYWJvdmUgZm9yIGV4YW1wbGVzIG9mIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhdXRobGRhcHVybCI+QXV0aExEQVBVcmw8L2E+PC9jb2RlPiBVUkxzLjwvcD4KCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX2F1dGhuel9sZGFwLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfYXV0aG56X2xkYXAuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=