PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2Rfdmhvc3RfYWxpYXMgLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjQ8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIucG5nIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX3Zob3N0X2FsaWFzPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX3Zob3N0X2FsaWFzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9tb2QvbW9kX3Zob3N0X2FsaWFzLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vdHIvbW9kL21vZF92aG9zdF9hbGlhcy5odG1sIiBocmVmbGFuZz0idHIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iVPxya+dlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+UHJvdmlkZXMgZm9yIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZWQgbWFzcyB2aXJ0dWFsCmhvc3Rpbmc8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPnZob3N0X2FsaWFzX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2Rfdmhvc3RfYWxpYXMuYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+VGhpcyBtb2R1bGUgY3JlYXRlcyBkeW5hbWljYWxseSBjb25maWd1cmVkIHZpcnR1YWwgaG9zdHMsIGJ5CiAgICBhbGxvd2luZyB0aGUgSVAgYWRkcmVzcyBhbmQvb3IgdGhlIDxjb2RlPkhvc3Q6PC9jb2RlPiBoZWFkZXIgb2YKICAgIHRoZSBIVFRQIHJlcXVlc3QgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXRobmFtZSB0bwogICAgZGV0ZXJtaW5lIHdoYXQgZmlsZXMgdG8gc2VydmUuIFRoaXMgYWxsb3dzIGZvciBlYXN5IHVzZSBvZiBhCiAgICBodWdlIG51bWJlciBvZiB2aXJ0dWFsIGhvc3RzIHdpdGggc2ltaWxhciBjb25maWd1cmF0aW9ucy48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk5vdGU8L2gzPgogICAgICA8cD5JZiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2FsaWFzLmh0bWwiPm1vZF9hbGlhczwvYT48L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfdXNlcmRpci5odG1sIj5tb2RfdXNlcmRpcjwvYT48L2NvZGU+IGFyZQogICAgICB1c2VkIGZvciB0cmFuc2xhdGluZyBVUklzIHRvIGZpbGVuYW1lcywgdGhleSB3aWxsIG92ZXJyaWRlIHRoZQogICAgICBkaXJlY3RpdmVzIG9mIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfdmhvc3RfYWxpYXMuaHRtbCI+bW9kX3Zob3N0X2FsaWFzPC9hPjwvY29kZT4gZGVzY3JpYmVkIGJlbG93LiBGb3IKICAgICAgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHdpbGwgbWFwIDxjb2RlPgogICAgICAvY2dpLWJpbi9zY3JpcHQucGw8L2NvZGU+IHRvIDxjb2RlPgogICAgICAvdXNyL2xvY2FsL2FwYWNoZTIvY2dpLWJpbi9zY3JpcHQucGw8L2NvZGU+IGluIGFsbCBjYXNlczo8L3A+CgogICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+U2NyaXB0QWxpYXMgIi9jZ2ktYmluLyIgIi91c3IvbG9jYWwvYXBhY2hlMi9jZ2ktYmluLyIKVmlydHVhbFNjcmlwdEFsaWFzICIvbmV2ZXIvZm91bmQvJTAvY2dpLWJpbi8iPC9wcmU+CgogICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ludGVycG9sIj5EaXJlY3RvcnkgTmFtZSBJbnRlcnBvbGF0aW9uPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPgo8L3VsPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjdmlydHVhbGRvY3VtZW50cm9vdCI+VmlydHVhbERvY3VtZW50Um9vdDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN2aXJ0dWFsZG9jdW1lbnRyb290aXAiPlZpcnR1YWxEb2N1bWVudFJvb3RJUDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN2aXJ0dWFsc2NyaXB0YWxpYXMiPlZpcnR1YWxTY3JpcHRBbGlhczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN2aXJ0dWFsc2NyaXB0YWxpYXNpcCI+VmlydHVhbFNjcmlwdEFsaWFzSVA8L2E+PC9saT4KPC91bD4KPGgzPkJ1Z2ZpeCBjaGVja2xpc3Q8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9odHRwZC9DSEFOR0VTXzIuNCI+aHR0cGQgY2hhbmdlbG9nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9idWdfc3RhdHVzPV9fb3Blbl9fJmFtcDtsaXN0X2lkPTE0NDUzMiZhbXA7cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtxdWVyeV9mb3JtYXQ9c3BlY2lmaWMmYW1wO29yZGVyPWNoYW5nZWRkYXRlJTIwREVTQyUyQ3ByaW9yaXR5JTJDYnVnX3NldmVyaXR5JmFtcDtjb21wb25lbnQ9bW9kX3Zob3N0X2FsaWFzIj5Lbm93biBpc3N1ZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9iei5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BcGFjaGUlMjBodHRwZC0yJmFtcDtjb21wb25lbnQ9bW9kX3Zob3N0X2FsaWFzIj5SZXBvcnQgYSBidWc8L2E+PC9saT48L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI3VzZWNhbm9uaWNhbG5hbWUiPlVzZUNhbm9uaWNhbE5hbWU8L2E+PC9jb2RlPjwvbGk+CjxsaT48YSBocmVmPSIuLi92aG9zdHMvbWFzcy5odG1sIj5EeW5hbWljYWxseSBjb25maWd1cmVkIG1hc3MKICAgIHZpcnR1YWwgaG9zdGluZzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaW50ZXJwb2wiIGlkPSJpbnRlcnBvbCI+RGlyZWN0b3J5IE5hbWUgSW50ZXJwb2xhdGlvbjwvYT48L2gyPgogICAgCgogICAgPHA+QWxsIHRoZSBkaXJlY3RpdmVzIGluIHRoaXMgbW9kdWxlIGludGVycG9sYXRlIGEgc3RyaW5nIGludG8KICAgIGEgcGF0aG5hbWUuIFRoZSBpbnRlcnBvbGF0ZWQgc3RyaW5nIChoZW5jZWZvcnRoIGNhbGxlZCB0aGUKICAgICJuYW1lIikgbWF5IGJlIGVpdGhlciB0aGUgc2VydmVyIG5hbWUgKHNlZSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCN1c2VjYW5vbmljYWxuYW1lIj5Vc2VDYW5vbmljYWxOYW1lPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSBmb3IgZGV0YWlscyBvbiBob3cgdGhpcyBpcyBkZXRlcm1pbmVkKSBvciB0aGUgSVAKICAgIGFkZHJlc3Mgb2YgdGhlIHZpcnR1YWwgaG9zdCBvbiB0aGUgc2VydmVyIGluIGRvdHRlZC1xdWFkCiAgICBmb3JtYXQuIFRoZSBpbnRlcnBvbGF0aW9uIGlzIGNvbnRyb2xsZWQgYnkgc3BlY2lmaWVycyBpbnNwaXJlZAogICAgYnkgPGNvZGU+cHJpbnRmPC9jb2RlPiB3aGljaCBoYXZlIGEgbnVtYmVyIG9mIGZvcm1hdHM6PC9wPgoKPHRhYmxlPgoKPHRyPjx0ZD48Y29kZT4lJTwvY29kZT48L3RkPgo8dGQ+aW5zZXJ0IGEgPGNvZGU+JTwvY29kZT48L3RkPjwvdHI+Cgo8dHI+PHRkPjxjb2RlPiVwPC9jb2RlPjwvdGQ+Cjx0ZD5pbnNlcnQgdGhlIHBvcnQgbnVtYmVyIG9mIHRoZSB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cgo8dHI+PHRkPjxjb2RlPiVOLk08L2NvZGU+PC90ZD4KPHRkPmluc2VydCAocGFydCBvZikgdGhlIG5hbWU8L3RkPjwvdHI+Cgo8L3RhYmxlPgoKICAgIDxwPjxjb2RlPk48L2NvZGU+IGFuZCA8Y29kZT5NPC9jb2RlPiBhcmUgdXNlZCB0byBzcGVjaWZ5CiAgICBzdWJzdHJpbmdzIG9mIHRoZSBuYW1lLiA8Y29kZT5OPC9jb2RlPiBzZWxlY3RzIGZyb20gdGhlCiAgICBkb3Qtc2VwYXJhdGVkIGNvbXBvbmVudHMgb2YgdGhlIG5hbWUsIGFuZCA8Y29kZT5NPC9jb2RlPgogICAgc2VsZWN0cyBjaGFyYWN0ZXJzIHdpdGhpbiB3aGF0ZXZlciA8Y29kZT5OPC9jb2RlPiBoYXMgc2VsZWN0ZWQuCiAgICA8Y29kZT5NPC9jb2RlPiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gemVybyBpZiBpdCBpc24ndAogICAgcHJlc2VudDsgdGhlIGRvdCBtdXN0IGJlIHByZXNlbnQgaWYgYW5kIG9ubHkgaWYgPGNvZGU+TTwvY29kZT4KICAgIGlzIHByZXNlbnQuIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBhcyBmb2xsb3dzOjwvcD4KCiAgICA8dGFibGU+CiAgICAgIAogICAgICA8dHI+PHRkPjxjb2RlPjA8L2NvZGU+PC90ZD4KICAgICAgPHRkPnRoZSB3aG9sZSBuYW1lPC90ZD48L3RyPgoKICAgICAgPHRyPjx0ZD48Y29kZT4xPC9jb2RlPjwvdGQ+CiAgICAgIDx0ZD50aGUgZmlyc3QgcGFydDwvdGQ+PC90cj4KCiAgICAgIDx0cj48dGQ+PGNvZGU+MjwvY29kZT48L3RkPgogICAgICA8dGQ+dGhlIHNlY29uZCBwYXJ0PC90ZD48L3RyPgoKICAgICAgPHRyPjx0ZD48Y29kZT4tMTwvY29kZT48L3RkPgogICAgICA8dGQ+dGhlIGxhc3QgcGFydDwvdGQ+PC90cj4KCiAgICAgIDx0cj48dGQ+PGNvZGU+LTI8L2NvZGU+PC90ZD4KICAgICAgPHRkPnRoZSBwZW51bHRpbWF0ZSBwYXJ0PC90ZD48L3RyPgoKICAgICAgPHRyPjx0ZD48Y29kZT4yKzwvY29kZT48L3RkPgogICAgICA8dGQ+dGhlIHNlY29uZCBhbmQgYWxsIHN1YnNlcXVlbnQgcGFydHM8L3RkPjwvdHI+CgogICAgICA8dHI+PHRkPjxjb2RlPi0yKzwvY29kZT48L3RkPgogICAgICA8dGQ+dGhlIHBlbnVsdGltYXRlIGFuZCBhbGwgcHJlY2VkaW5nIHBhcnRzPC90ZD48L3RyPgoKICAgICAgPHRyPjx0ZD48Y29kZT4xKzwvY29kZT4gYW5kIDxjb2RlPi0xKzwvY29kZT48L3RkPgogICAgICA8dGQ+dGhlIHNhbWUgYXMgPGNvZGU+MDwvY29kZT48L3RkPjwvdHI+CiAgICA8L3RhYmxlPgoKICAgIDxwPklmIDxjb2RlPk48L2NvZGU+IG9yIDxjb2RlPk08L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyCiAgICBvZiBwYXJ0cyBhdmFpbGFibGUgYSBzaW5nbGUgdW5kZXJzY29yZSBpcyBpbnRlcnBvbGF0ZWQuIDwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4YW1wbGVzIiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvaDI+CiAgICAKCiAgICA8cD5Gb3Igc2ltcGxlIG5hbWUtYmFzZWQgdmlydHVhbCBob3N0cyB5b3UgbWlnaHQgdXNlIHRoZQogICAgZm9sbG93aW5nIGRpcmVjdGl2ZXMgaW4geW91ciBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlOjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+VXNlQ2Fub25pY2FsTmFtZSAgICBPZmYKVmlydHVhbERvY3VtZW50Um9vdCAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUwIjwvcHJlPgoKCiAgICA8cD5BIHJlcXVlc3QgZm9yCiAgICA8Y29kZT5odHRwOi8vd3d3LmV4YW1wbGUuY29tL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+IHdpbGwgYmUKICAgIHNhdGlzZmllZCBieSB0aGUgZmlsZQogICAgPGNvZGU+L3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzL3d3dy5leGFtcGxlLmNvbS9kaXJlY3RvcnkvZmlsZS5odG1sPC9jb2RlPi4KICAgIDwvcD4KCiAgICA8cD5Gb3IgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiB2aXJ0dWFsIGhvc3RzIGl0IGlzIGEgZ29vZCBpZGVhCiAgICB0byBhcnJhbmdlIHRoZSBmaWxlcyB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlCiAgICA8Y29kZT52aG9zdHM8L2NvZGU+IGRpcmVjdG9yeS4gVG8gZG8gdGhpcyB5b3UgbWlnaHQgdXNlIHRoZQogICAgZm9sbG93aW5nIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlOjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+VXNlQ2Fub25pY2FsTmFtZSAgICBPZmYKVmlydHVhbERvY3VtZW50Um9vdCAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUzKy8lMi4xLyUyLjIvJTIuMy8lMiI8L3ByZT4KCgogICAgPHA+QSByZXF1ZXN0IGZvcgogICAgPGNvZGU+aHR0cDovL3d3dy5kb21haW4uZXhhbXBsZS5jb20vZGlyZWN0b3J5L2ZpbGUuaHRtbDwvY29kZT4KICAgIHdpbGwgYmUgc2F0aXNmaWVkIGJ5IHRoZSBmaWxlCiAgICA8Y29kZT4vdXNyL2xvY2FsL2FwYWNoZS92aG9zdHMvZXhhbXBsZS5jb20vZC9vL20vZG9tYWluL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+LjwvcD4KCiAgICA8cD5BIG1vcmUgZXZlbiBzcHJlYWQgb2YgZmlsZXMgY2FuIGJlIGFjaGlldmVkIGJ5IGhhc2hpbmcgZnJvbSB0aGUKICAgIGVuZCBvZiB0aGUgbmFtZSwgZm9yIGV4YW1wbGU6IDwvcD4KCjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5WaXJ0dWFsRG9jdW1lbnRSb290ICIvdXNyL2xvY2FsL2FwYWNoZS92aG9zdHMvJTMrLyUyLi0xLyUyLi0yLyUyLi0zLyUyIjwvcHJlPgoKCiAgICA8cD5UaGUgZXhhbXBsZSByZXF1ZXN0IHdvdWxkIGNvbWUgZnJvbQogICAgPGNvZGU+L3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzL2V4YW1wbGUuY29tL24vaS9hL2RvbWFpbi9kaXJlY3RvcnkvZmlsZS5odG1sPC9jb2RlPi48L3A+CgogICAgPHA+QWx0ZXJuYXRpdmVseSB5b3UgbWlnaHQgdXNlOiA8L3A+Cgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+VmlydHVhbERvY3VtZW50Um9vdCAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUzKy8lMi4xLyUyLjIvJTIuMy8lMi40KyI8L3ByZT4KCgogICAgPHA+VGhlIGV4YW1wbGUgcmVxdWVzdCB3b3VsZCBjb21lIGZyb20KICAgIDxjb2RlPi91c3IvbG9jYWwvYXBhY2hlL3Zob3N0cy9leGFtcGxlLmNvbS9kL28vbS9haW4vZGlyZWN0b3J5L2ZpbGUuaHRtbDwvY29kZT4uPC9wPgoKPHA+IEEgdmVyeSBjb21tb24gcmVxdWVzdCBieSB1c2VycyBpcyB0aGUgYWJpbGl0eSB0byBwb2ludCBtdWx0aXBsZSBkb21haW5zIHRvIG11bHRpcGxlIApkb2N1bWVudCByb290cyB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCB0aGUgbGVuZ3RoIG9yIG51bWJlciBvZiBwYXJ0cyBvZiB0aGUgCmhvc3RuYW1lIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhlIHJlcXVlc3RlZCBob3N0bmFtZSBpcyA8Y29kZT5zdWIud3d3LmRvbWFpbi5leGFtcGxlLmNvbTwvY29kZT4KIGluc3RlYWQgb2Ygc2ltcGx5IDxjb2RlPnd3dy5kb21haW4uZXhhbXBsZS5jb208L2NvZGU+LCB0aGVuIHVzaW5nICUzKyB3aWxsIHJlc3VsdCBpbiB0aGUgZG9jdW1lbnQKcm9vdCBiZWluZyA8Y29kZT4vdXNyL2xvY2FsL2FwYWNoZS92aG9zdHMvZG9tYWluLmV4YW1wbGUuY29tLy4uLjwvY29kZT4gaW5zdGVhZCBvZiB0aGUKaW50ZW5kZWQgPGNvZGU+ZXhhbXBsZS5jb208L2NvZGU+IGRpcmVjdG9yeS4gSW4gc3VjaCBjYXNlcywgaXQgY2FuIGJlIGJlbmVmaWNpYWwgdG8gdXNlIAp0aGUgY29tYmluYXRpb24gPGNvZGU+JS0yLjAuJS0xLjA8L2NvZGU+LCB3aGljaCB3aWxsIGFsd2F5cyB5aWVsZCB0aGUgZG9tYWluIG5hbWUgYW5kIHRoZSAKdGxkLCBmb3IgZXhhbXBsZSA8Y29kZT5leGFtcGxlLmNvbTwvY29kZT4gcmVnYXJkbGVzcyBvZiB0aGUgbnVtYmVyIG9mIHN1YmRvbWFpbnMgYXBwZW5kZWQgCnRvIHRoZSBob3N0bmFtZS4gQXMgc3VjaCwgb25lIGNhbiBtYWtlIGEgY29uZmlndXJhdGlvbiB0aGF0IHdpbGwgZGlyZWN0IGFsbCBmaXJzdCwgc2Vjb25kIApvciB0aGlyZCBsZXZlbCBzdWJkb21haW5zIHRvIHRoZSBzYW1lIGRpcmVjdG9yeToKPC9wPgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+VmlydHVhbERvY3VtZW50Um9vdCAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUtMi4wLiUtMS4wIjwvcHJlPgoKPHA+CkluIHRoZSBleGFtcGxlIGFib3ZlLCBib3RoIDxjb2RlPnd3dy5leGFtcGxlLmNvbTwvY29kZT4gYXMgd2VsbCBhcyA8Y29kZT53d3cuc3ViLmV4YW1wbGUuY29tPC9jb2RlPgpvciA8Y29kZT5leGFtcGxlLmNvbTwvY29kZT4gd2lsbCBhbGwgcG9pbnQgdG8gPGNvZGU+L3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzL2V4YW1wbGUuY29tPC9jb2RlPi4KPC9wPgoKICAgIDxwPkZvciBJUC1iYXNlZCB2aXJ0dWFsIGhvc3RpbmcgeW91IG1pZ2h0IHVzZSB0aGUgZm9sbG93aW5nIGluCiAgICB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZTo8L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlVzZUNhbm9uaWNhbE5hbWUgRE5TClZpcnR1YWxEb2N1bWVudFJvb3RJUCAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUxLyUyLyUzLyU0L2RvY3MiClZpcnR1YWxTY3JpcHRBbGlhc0lQICAiL3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzLyUxLyUyLyUzLyU0L2NnaS1iaW4iPC9wcmU+CgoKICAgIDxwPkEgcmVxdWVzdCBmb3IKICAgIDxjb2RlPmh0dHA6Ly93d3cuZG9tYWluLmV4YW1wbGUuY29tL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+CiAgICB3b3VsZCBiZSBzYXRpc2ZpZWQgYnkgdGhlIGZpbGUKICAgIDxjb2RlPi91c3IvbG9jYWwvYXBhY2hlL3Zob3N0cy8xMC8yMC8zMC80MC9kb2NzL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+CiAgICBpZiB0aGUgSVAgYWRkcmVzcyBvZiA8Y29kZT53d3cuZG9tYWluLmV4YW1wbGUuY29tPC9jb2RlPiB3ZXJlCiAgICAxMC4yMC4zMC40MC4gQSByZXF1ZXN0IGZvcgogICAgPGNvZGU+aHR0cDovL3d3dy5kb21haW4uZXhhbXBsZS5jb20vY2dpLWJpbi9zY3JpcHQucGw8L2NvZGU+IHdvdWxkCiAgICBiZSBzYXRpc2ZpZWQgYnkgZXhlY3V0aW5nIHRoZSBwcm9ncmFtCiAgICA8Y29kZT4vdXNyL2xvY2FsL2FwYWNoZS92aG9zdHMvMTAvMjAvMzAvNDAvY2dpLWJpbi9zY3JpcHQucGw8L2NvZGU+LjwvcD4KCiAgICA8cD5JZiB5b3Ugd2FudCB0byBpbmNsdWRlIHRoZSA8Y29kZT4uPC9jb2RlPiBjaGFyYWN0ZXIgaW4gYQogICAgPGNvZGU+VmlydHVhbERvY3VtZW50Um9vdDwvY29kZT4gZGlyZWN0aXZlLCBidXQgaXQgY2xhc2hlcyB3aXRoCiAgICBhIDxjb2RlPiU8L2NvZGU+IGRpcmVjdGl2ZSwgeW91IGNhbiB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbSBpbgogICAgdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoKPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlZpcnR1YWxEb2N1bWVudFJvb3QgIi91c3IvbG9jYWwvYXBhY2hlL3Zob3N0cy8lMi4wLiUzLjAiPC9wcmU+CgoKICAgIDxwPkEgcmVxdWVzdCBmb3IKICAgIDxjb2RlPmh0dHA6Ly93d3cuZG9tYWluLmV4YW1wbGUuY29tL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+CiAgICB3aWxsIGJlIHNhdGlzZmllZCBieSB0aGUgZmlsZQogICAgPGNvZGU+L3Vzci9sb2NhbC9hcGFjaGUvdmhvc3RzL2RvbWFpbi5leGFtcGxlL2RpcmVjdG9yeS9maWxlLmh0bWw8L2NvZGU+LjwvcD4KCiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9sb2dfY29uZmlnLmh0bWwjbG9nZm9ybWF0Ij5Mb2dGb3JtYXQ8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlcyA8Y29kZT4lVjwvY29kZT4gYW5kIDxjb2RlPiVBPC9jb2RlPiBhcmUgdXNlZnVsCiAgICBpbiBjb25qdW5jdGlvbiB3aXRoIHRoaXMgbW9kdWxlLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlZpcnR1YWxEb2N1bWVudFJvb3QiIGlkPSJWaXJ0dWFsRG9jdW1lbnRSb290Ij5WaXJ0dWFsRG9jdW1lbnRSb290PC9hPiA8YSBuYW1lPSJ2aXJ0dWFsZG9jdW1lbnRyb290IiBpZD0idmlydHVhbGRvY3VtZW50cm9vdCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RHluYW1pY2FsbHkgY29uZmlndXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZG9jdW1lbnQgcm9vdApmb3IgYSBnaXZlbiB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+VmlydHVhbERvY3VtZW50Um9vdCA8ZW0+aW50ZXJwb2xhdGVkLWRpcmVjdG9yeTwvZW0+fG5vbmU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+VmlydHVhbERvY3VtZW50Um9vdCBub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5FeHRlbnNpb248L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX3Zob3N0X2FsaWFzPC90ZD48L3RyPgo8L3RhYmxlPgoKICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5WaXJ0dWFsRG9jdW1lbnRSb290PC9jb2RlPiBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0bwogICAgZGV0ZXJtaW5lIHdoZXJlIEFwYWNoZSBIVFRQIFNlcnZlciB3aWxsIGZpbmQgeW91ciBkb2N1bWVudHMgYmFzZWQgb24gdGhlCiAgICB2YWx1ZSBvZiB0aGUgc2VydmVyIG5hbWUuIFRoZSByZXN1bHQgb2YgZXhwYW5kaW5nCiAgICA8ZW0+aW50ZXJwb2xhdGVkLWRpcmVjdG9yeTwvZW0+IGlzIHVzZWQgYXMgdGhlIHJvb3Qgb2YgdGhlCiAgICBkb2N1bWVudCB0cmVlIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjZG9jdW1lbnRyb290Ij5Eb2N1bWVudFJvb3Q8L2E+PC9jb2RlPiBkaXJlY3RpdmUncyBhcmd1bWVudC4KICAgIElmIDxlbT5pbnRlcnBvbGF0ZWQtZGlyZWN0b3J5PC9lbT4gaXMgPGNvZGU+bm9uZTwvY29kZT4gdGhlbgogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VmlydHVhbERvY3VtZW50Um9vdDwvY29kZT4gaXMgdHVybmVkIG9mZi4gVGhpcyBkaXJlY3RpdmUKICAgIGNhbm5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvbnRleHQgYXMgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3ZpcnR1YWxkb2N1bWVudHJvb3RpcCI+VmlydHVhbERvY3VtZW50Um9vdElQPC9hPjwvY29kZT4uPC9wPgoKPGRpdiBjbGFzcz0id2FybmluZyI+PGgzPk5vdGU8L2gzPgo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5WaXJ0dWFsRG9jdW1lbnRSb290PC9jb2RlPiB3aWxsIG92ZXJyaWRlIGFueSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2RvY3VtZW50cm9vdCI+RG9jdW1lbnRSb290PC9hPjwvY29kZT4gZGlyZWN0aXZlcyB5b3UgbWF5IGhhdmUgcHV0IGluIHRoZSBzYW1lIApjb250ZXh0IG9yIGNoaWxkIGNvbnRleHRzLiBQdXR0aW5nIGEgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VmlydHVhbERvY3VtZW50Um9vdDwvY29kZT4gCmluIHRoZSBnbG9iYWwgc2VydmVyIHNjb3BlIHdpbGwgZWZmZWN0aXZlbHkgb3ZlcnJpZGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkb2N1bWVudHJvb3QiPkRvY3VtZW50Um9vdDwvYT48L2NvZGU+IGRpcmVjdGl2ZXMgaW4gYW55IHZpcnR1YWwgaG9zdHMgZGVmaW5lZCBsYXRlciAKb24sIHVubGVzcyB5b3Ugc2V0IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlZpcnR1YWxEb2N1bWVudFJvb3Q8L2NvZGU+IHRvIDxjb2RlPk5vbmU8L2NvZGU+IAppbiBlYWNoIHZpcnR1YWwgaG9zdC4KPC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlZpcnR1YWxEb2N1bWVudFJvb3RJUCIgaWQ9IlZpcnR1YWxEb2N1bWVudFJvb3RJUCI+VmlydHVhbERvY3VtZW50Um9vdElQPC9hPiA8YSBuYW1lPSJ2aXJ0dWFsZG9jdW1lbnRyb290aXAiIGlkPSJ2aXJ0dWFsZG9jdW1lbnRyb290aXAiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgbG9jYXRpb24gb2YgdGhlIGRvY3VtZW50IHJvb3QKZm9yIGEgZ2l2ZW4gdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlZpcnR1YWxEb2N1bWVudFJvb3RJUCA8ZW0+aW50ZXJwb2xhdGVkLWRpcmVjdG9yeTwvZW0+fG5vbmU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+VmlydHVhbERvY3VtZW50Um9vdElQIG5vbmU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2Rfdmhvc3RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+Cgo8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VmlydHVhbERvY3VtZW50Um9vdElQPC9jb2RlPiBkaXJlY3RpdmUgaXMgbGlrZSB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN2aXJ0dWFsZG9jdW1lbnRyb290Ij5WaXJ0dWFsRG9jdW1lbnRSb290PC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyIGVuZAogICAgb2YgdGhlIGNvbm5lY3Rpb24gZm9yIGRpcmVjdG9yeSBpbnRlcnBvbGF0aW9uIGluc3RlYWQgb2YgdGhlIHNlcnZlcgogICAgbmFtZS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iVmlydHVhbFNjcmlwdEFsaWFzIiBpZD0iVmlydHVhbFNjcmlwdEFsaWFzIj5WaXJ0dWFsU2NyaXB0QWxpYXM8L2E+IDxhIG5hbWU9InZpcnR1YWxzY3JpcHRhbGlhcyIgaWQ9InZpcnR1YWxzY3JpcHRhbGlhcyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RHluYW1pY2FsbHkgY29uZmlndXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgQ0dJIGRpcmVjdG9yeSBmb3IKYSBnaXZlbiB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+VmlydHVhbFNjcmlwdEFsaWFzIDxlbT5pbnRlcnBvbGF0ZWQtZGlyZWN0b3J5PC9lbT58bm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5WaXJ0dWFsU2NyaXB0QWxpYXMgbm9uZTwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+RXh0ZW5zaW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF92aG9zdF9hbGlhczwvdGQ+PC90cj4KPC90YWJsZT4KCiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+VmlydHVhbFNjcmlwdEFsaWFzPC9jb2RlPiBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0bwogICAgZGV0ZXJtaW5lIHdoZXJlIEFwYWNoZSBodHRwZCB3aWxsIGZpbmQgQ0dJIHNjcmlwdHMgaW4gYSBzaW1pbGFyCiAgICBtYW5uZXIgdG8gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3ZpcnR1YWxkb2N1bWVudHJvb3QiPlZpcnR1YWxEb2N1bWVudFJvb3Q8L2E+PC9jb2RlPiBkb2VzIGZvciBvdGhlciBkb2N1bWVudHMuIEl0IG1hdGNoZXMKICAgIHJlcXVlc3RzIGZvciBVUklzIHN0YXJ0aW5nIDxjb2RlPi9jZ2ktYmluLzwvY29kZT4sIG11Y2ggbGlrZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2FsaWFzLmh0bWwjc2NyaXB0YWxpYXMiPlNjcmlwdEFsaWFzPC9hPjwvY29kZT4KICAgIDxjb2RlPi9jZ2ktYmluLzwvY29kZT4gd291bGQuPC9wPgoKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJWaXJ0dWFsU2NyaXB0QWxpYXNJUCIgaWQ9IlZpcnR1YWxTY3JpcHRBbGlhc0lQIj5WaXJ0dWFsU2NyaXB0QWxpYXNJUDwvYT4gPGEgbmFtZT0idmlydHVhbHNjcmlwdGFsaWFzaXAiIGlkPSJ2aXJ0dWFsc2NyaXB0YWxpYXNpcCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RHluYW1pY2FsbHkgY29uZmlndXJlIHRoZSBsb2NhdGlvbiBvZiB0aGUgQ0dJIGRpcmVjdG9yeSBmb3IKYSBnaXZlbiB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+VmlydHVhbFNjcmlwdEFsaWFzSVAgPGVtPmludGVycG9sYXRlZC1kaXJlY3Rvcnk8L2VtPnxub25lPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlZpcnR1YWxTY3JpcHRBbGlhc0lQIG5vbmU8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkV4dGVuc2lvbjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2Rfdmhvc3RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlZpcnR1YWxTY3JpcHRBbGlhc0lQPC9jb2RlPiBkaXJlY3RpdmUgaXMgbGlrZSB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiN2aXJ0dWFsc2NyaXB0YWxpYXMiPlZpcnR1YWxTY3JpcHRBbGlhczwvYT48L2NvZGU+CiAgICBkaXJlY3RpdmUsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciBlbmQKICAgIG9mIHRoZSBjb25uZWN0aW9uIGZvciBkaXJlY3RvcnkgaW50ZXJwb2xhdGlvbiBpbnN0ZWFkIG9mIHRoZSBzZXJ2ZXIKICAgIG5hbWUuPC9wPgoKICAgIAo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF92aG9zdF9hbGlhcy5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvbW9kL21vZF92aG9zdF9hbGlhcy5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL21vZC9tb2Rfdmhvc3RfYWxpYXMuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2Rfdmhvc3RfYWxpYXMuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=