PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPHRpdGxlPkFyY2hpdmEgQmFzZSA6OiBQcm94eSAtIFRlYW0gbGlzdDwvdGl0bGU+DQogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIj4NCiAgICAgIEBpbXBvcnQgdXJsKCIuL2Nzcy9tYXZlbi1iYXNlLmNzcyIpOw0KICAgICAgQGltcG9ydCB1cmwoIi4vY3NzL21hdmVuLXRoZW1lLmNzcyIpOw0KICAgICAgQGltcG9ydCB1cmwoIi4vY3NzL3NpdGUuY3NzIik7DQogICAgPC9zdHlsZT4NCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4vY3NzL3ByaW50LmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCIgLz4NCiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIGdhSnNIb3N0ID0gKCgiaHR0cHM6IiA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkgPyAiaHR0cHM6Ly9zc2wuIiA6ICJodHRwOi8vd3d3LiIpOwpkb2N1bWVudC53cml0ZSh1bmVzY2FwZSgiJTNDc2NyaXB0IHNyYz0nIiArIGdhSnNIb3N0ICsgImdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnJTNFJTNDL3NjcmlwdCUzRSIpKTs8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRyYWNrZXIoIlVBLTE0MDg3OS01Iik7CnBhZ2VUcmFja2VyLl9pbml0RGF0YSgpOwpwYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOzwvc2NyaXB0Pg0KICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+DQogIDxib2R5IGNsYXNzPSJjb21wb3NpdGUiPg0KICAgIDxkaXYgaWQ9ImJhbm5lciI+DQogICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi8iIGlkPSJiYW5uZXJMZWZ0Ij4NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uLy4uL2ltYWdlcy9hcmNoaXZhLnBuZyIgYWx0PSIiIC8+DQogICAgDQogICAgICAgICAgICA8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIiBpZD0iYmFubmVyUmlnaHQiPg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9pbWFnZXMvYXNmX2xvZ29fd2lkZS5wbmciIGFsdD0iIiAvPg0KICAgIA0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xlYXIiPg0KICAgICAgICA8aHIvPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPGRpdiBpZD0iYnJlYWRjcnVtYnMiPg0KICAgICAgICAgIA0KICANCg0KICANCiAgICANCiAgDQogIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ieGxlZnQiPg0KICAgICAgICAgIA0KICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4NCiAgICAgICAgICAgICAgJmd0Ow0KICAgICAgDQogICAgICAgICAgPGEgaHJlZj0iLi4vLi4vIj5BcmNoaXZhPC9hPg0KICAgICAgICAgICAgICAmZ3Q7DQogICAgICANCiAgICAgICAgICA8YSBocmVmPSIuLi8uLi8iPkFyY2hpdmEgOjogTW9kdWxlczwvYT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InhyaWdodCI+ICAgICAgDQogIA0KDQogIA0KICAgIA0KICANCiAgDQogICAgICAgICAgICAmbmJzcDt8IExhc3QgUHVibGlzaGVkOiAyNyBNYXkgMjAxMQ0KICAgICAgICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJjbGVhciI+DQogICAgICAgIDxoci8+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJsZWZ0Q29sdW1uIj4NCiAgICAgIDxkaXYgaWQ9Im5hdmNvbHVtbiI+DQogICAgICAgICAgIA0KICANCg0KICANCiAgICANCiAgDQogIA0KICAgICAgICAgICAgICAgICAgIDxoNT5Qcm9qZWN0IERvY3VtZW50YXRpb248L2g1Pg0KICAgICAgICA8dWw+DQogICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgICANCiAgICAgICAgICAgIDxsaSBjbGFzcz0iZXhwYW5kZWQiPg0KICAgICAgICAgICAgICA8YSBocmVmPSJwcm9qZWN0LWluZm8uaHRtbCI+UHJvamVjdCBJbmZvcm1hdGlvbjwvYT4NCiAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICANCiAgICA8bGkgY2xhc3M9Im5vbmUiPg0KICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5odG1sIj5BYm91dDwvYT4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgIA0KICAgIDxsaSBjbGFzcz0ibm9uZSI+DQogICAgICAgICAgICAgIDxhIGhyZWY9ImludGVncmF0aW9uLmh0bWwiPkNvbnRpbnVvdXMgSW50ZWdyYXRpb248L2E+DQogICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICANCiAgICA8bGkgY2xhc3M9Im5vbmUiPg0KICAgICAgICAgICAgICA8YSBocmVmPSJkZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPg0KICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgDQogICAgPGxpIGNsYXNzPSJub25lIj4NCiAgICAgICAgICAgICAgPGEgaHJlZj0iZGVwZW5kZW5jeS1jb252ZXJnZW5jZS5odG1sIj5EZXBlbmRlbmN5IENvbnZlcmdlbmNlPC9hPg0KICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgDQogICAgPGxpIGNsYXNzPSJub25lIj4NCiAgICAgICAgICAgICAgPGEgaHJlZj0iZGVwZW5kZW5jeS1tYW5hZ2VtZW50Lmh0bWwiPkRlcGVuZGVuY3kgTWFuYWdlbWVudDwvYT4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgIA0KICAgIDxsaSBjbGFzcz0ibm9uZSI+DQogICAgICAgICAgICAgIDxhIGhyZWY9Imlzc3VlLXRyYWNraW5nLmh0bWwiPklzc3VlIFRyYWNraW5nPC9hPg0KICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgDQogICAgPGxpIGNsYXNzPSJub25lIj4NCiAgICAgICAgICAgICAgPGEgaHJlZj0ibWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPg0KICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgDQogICAgPGxpIGNsYXNzPSJub25lIj4NCiAgICAgICAgICAgICAgPGEgaHJlZj0icGx1Z2luLW1hbmFnZW1lbnQuaHRtbCI+UGx1Z2luIE1hbmFnZW1lbnQ8L2E+DQogICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICANCiAgICA8bGkgY2xhc3M9Im5vbmUiPg0KICAgICAgICAgICAgICA8YSBocmVmPSJsaWNlbnNlLmh0bWwiPlByb2plY3QgTGljZW5zZTwvYT4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgIA0KICAgIDxsaSBjbGFzcz0ibm9uZSI+DQogICAgICAgICAgICAgIDxhIGhyZWY9InBsdWdpbnMuaHRtbCI+UHJvamVjdCBQbHVnaW5zPC9hPg0KICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgICAgDQogICAgPGxpIGNsYXNzPSJub25lIj4NCiAgICAgICAgICAgICAgPGEgaHJlZj0icHJvamVjdC1zdW1tYXJ5Lmh0bWwiPlByb2plY3QgU3VtbWFyeTwvYT4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgIA0KICAgIDxsaSBjbGFzcz0ibm9uZSI+DQogICAgICAgICAgICAgIDxzdHJvbmc+UHJvamVjdCBUZWFtPC9zdHJvbmc+DQogICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICANCiAgICA8bGkgY2xhc3M9Im5vbmUiPg0KICAgICAgICAgICAgICA8YSBocmVmPSJzb3VyY2UtcmVwb3NpdG9yeS5odG1sIj5Tb3VyY2UgUmVwb3NpdG9yeTwvYT4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICANCiAgICAgIA0KICAgICAgICAgICAgDQogICAgICANCiAgICAgICAgICAgIA0KICAgICAgDQogICAgICAgICAgICAgIA0KICAgICAgICA8bGkgY2xhc3M9ImNvbGxhcHNlZCI+DQogICAgICAgICAgICAgIDxhIGhyZWY9InByb2plY3QtcmVwb3J0cy5odG1sIj5Qcm9qZWN0IFJlcG9ydHM8L2E+DQogICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnLyIgdGl0bGU9IkJ1aWx0IGJ5IE1hdmVuIiBpZD0icG93ZXJlZEJ5Ij4NCiAgICAgICAgICAgIDxpbWcgYWx0PSJCdWlsdCBieSBNYXZlbiIgc3JjPSIuL2ltYWdlcy9sb2dvcy9tYXZlbi1mZWF0aGVyLnBuZyI+PC9pbWc+DQogICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICANCiAgDQoNCiAgDQogICAgDQogIA0KICANCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPGRpdiBpZD0iYm9keUNvbHVtbiI+DQogICAgICA8ZGl2IGlkPSJjb250ZW50Qm94Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPlRoZSBUZWFtPC9oMj48cD5BIHN1Y2Nlc3NmdWwgcHJvamVjdCByZXF1aXJlcyBtYW55IHBlb3BsZSB0byBwbGF5IG1hbnkgcm9sZXMuIFNvbWUgbWVtYmVycyB3cml0ZSBjb2RlIG9yIGRvY3VtZW50YXRpb24sIHdoaWxlIG90aGVycyBhcmUgdmFsdWFibGUgYXMgdGVzdGVycywgc3VibWl0dGluZyBwYXRjaGVzIGFuZCBzdWdnZXN0aW9ucy48L3A+PHA+VGhlIHRlYW0gaXMgY29tcHJpc2VkIG9mIE1lbWJlcnMgYW5kIENvbnRyaWJ1dG9ycy4gTWVtYmVycyBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHNvdXJjZSBvZiBhIHByb2plY3QgYW5kIGFjdGl2ZWx5IGV2b2x2ZSB0aGUgY29kZS1iYXNlLiBDb250cmlidXRvcnMgaW1wcm92ZSB0aGUgcHJvamVjdCB0aHJvdWdoIHN1Ym1pc3Npb24gb2YgcGF0Y2hlcyBhbmQgc3VnZ2VzdGlvbnMgdG8gdGhlIE1lbWJlcnMuIFRoZSBudW1iZXIgb2YgQ29udHJpYnV0b3JzIHRvIHRoZSBwcm9qZWN0IGlzIHVuYm91bmRlZC4gR2V0IGludm9sdmVkIHRvZGF5LiBBbGwgY29udHJpYnV0aW9ucyB0byB0aGUgcHJvamVjdCBhcmUgZ3JlYXRseSBhcHByZWNpYXRlZC48L3A+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgzPk1lbWJlcnM8L2gzPjxwPlRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIGRldmVsb3BlcnMgd2l0aCBjb21taXQgcHJpdmlsZWdlcyB0aGF0IGhhdmUgZGlyZWN0bHkgY29udHJpYnV0ZWQgdG8gdGhlIHByb2plY3QgaW4gb25lIHdheSBvciBhbm90aGVyLjwvcD48dGFibGUgY2xhc3M9ImJvZHlUYWJsZSI+PHRyIGNsYXNzPSJhIj48dGg+SWQ8L3RoPjx0aD5OYW1lPC90aD48dGg+RW1haWw8L3RoPjx0aD5Pcmdhbml6YXRpb248L3RoPjx0aD5Pcmdhbml6YXRpb24gVVJMPC90aD48dGg+Um9sZXM8L3RoPjx0aD5UaW1lIFpvbmU8L3RoPjx0aD5BY3R1YWwgVGltZSAoR01UKTwvdGg+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD48YSBuYW1lPSJvY2hpbmciPjwvYT5vY2hpbmc8L3RkPjx0ZD5NYXJpYSBPZGVhIEIuIENoaW5nPC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOm9jaGluZ0BhcGFjaGUub3JnIj5vY2hpbmdAYXBhY2hlLm9yZzwvYT48L3RkPjx0ZD4tPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBDaGFpcjwvdGQ+PHRkPis4PC90ZD48dGQ+PHNwYW4gaWQ9ImRldmVsb3Blci0wIj4rODwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+PGEgbmFtZT0iYWhlcml0aWVyIj48L2E+YWhlcml0aWVyPC90ZD48dGQ+QXJuYXVkIEhlcml0aWVyPC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOmFoZXJpdGllckBhcGFjaGUub3JnIj5haGVyaXRpZXJAYXBhY2hlLm9yZzwvYT48L3RkPjx0ZD5PQ1RPIFRlY2hub2xvZ3k8L3RkPjx0ZD48YSBocmVmPSJodHRwOi8vd3d3Lm9jdG8uY29tIj5odHRwOi8vd3d3Lm9jdG8uY29tPC9hPjwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4rMTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMSI+KzE8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPjxhIG5hbWU9ImJlbGxpbmdhcmQiPjwvYT5iZWxsaW5nYXJkPC90ZD48dGQ+RmFicmljZSBCZWxsaW5nYXJkPC90ZD48dGQ+LTwvdGQ+PHRkPi08L3RkPjx0ZD4tPC90ZD48dGQ+UE1DIE1lbWJlcjwvdGQ+PHRkPi08L3RkPjx0ZD48c3BhbiBpZD0iZGV2ZWxvcGVyLTIiPi08L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPjxhIG5hbWU9ImJyZXR0Ij48L2E+YnJldHQ8L3RkPjx0ZD5CcmV0dCBQb3J0ZXI8L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86YnJldHRAYXBhY2hlLm9yZyI+YnJldHRAYXBhY2hlLm9yZzwvYT48L3RkPjx0ZD5BU0Y8L3RkPjx0ZD4tPC90ZD48dGQ+UE1DIE1lbWJlcjwvdGQ+PHRkPisxMDwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMyI+KzEwPC9zcGFuPjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD48YSBuYW1lPSJjYXJsb3MiPjwvYT5jYXJsb3M8L3RkPjx0ZD5DYXJsb3MgU2FuY2hlejwvdGQ+PHRkPjxhIGhyZWY9Im1haWx0bzpjYXJsb3NAYXBhY2hlLm9yZyI+Y2FybG9zQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+QVNGPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4rMTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItNCI+KzE8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPjxhIG5hbWU9ImVwdW56YWxhbiI+PC9hPmVwdW56YWxhbjwvdGQ+PHRkPkVkd2luIFB1bnphbGFuPC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOmVwdW56YWxhbkBhcGFjaGUub3JnIj5lcHVuemFsYW5AYXBhY2hlLm9yZzwvYT48L3RkPjx0ZD4tPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4tODwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItNSI+LTg8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPjxhIG5hbWU9ImV2ZW5pc3NlIj48L2E+ZXZlbmlzc2U8L3RkPjx0ZD5FbW1hbnVlbCBWZW5pc3NlPC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOmV2ZW5pc3NlQGFwYWNoZS5vcmciPmV2ZW5pc3NlQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+QVNGPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4rMTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItNiI+KzE8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPjxhIG5hbWU9ImpkdW1heSI+PC9hPmpkdW1heTwvdGQ+PHRkPkphbWVzIFdpbGxpYW0gRHVtYXk8L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86amFtZXNAYXRsYXNzaWFuLmNvbSI+amFtZXNAYXRsYXNzaWFuLmNvbTwvYT48L3RkPjx0ZD5BdGxhc3NpYW48L3RkPjx0ZD4tPC90ZD48dGQ+UE1DIE1lbWJlcjwvdGQ+PHRkPisxMTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItNyI+KzExPC9zcGFuPjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD48YSBuYW1lPSJqb2FraW1lIj48L2E+am9ha2ltZTwvdGQ+PHRkPkpvYWtpbSBFcmRmZWx0PC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOmpvYWtpbWVAYXBhY2hlLm9yZyI+am9ha2ltZUBhcGFjaGUub3JnPC9hPjwvdGQ+PHRkPkFTRjwvdGQ+PHRkPi08L3RkPjx0ZD5FbWVyaXR1czwvdGQ+PHRkPi01PC90ZD48dGQ+PHNwYW4gaWQ9ImRldmVsb3Blci04Ij4tNTwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+PGEgbmFtZT0ianRvbGVudGlubyI+PC9hPmp0b2xlbnRpbm88L3RkPjx0ZD5Fcm5lc3RvIFRvbGVudGlubyBKci48L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86anRvbGVudGlub0BhcGFjaGUub3JnIj5qdG9sZW50aW5vQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+QVNGPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4rODwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItOSI+Kzg8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPjxhIG5hbWU9ImptY2Nvbm5lbGwiPjwvYT5qbWNjb25uZWxsPC90ZD48dGQ+SmVzc2UgTWNDb25uZWxsPC90ZD48dGQ+PGEgaHJlZj0ibWFpbHRvOmptY2Nvbm5lbGxAYXBhY2hlLm9yZyI+am1jY29ubmVsbEBhcGFjaGUub3JnPC9hPjwvdGQ+PHRkPkFTRjwvdGQ+PHRkPi08L3RkPjx0ZD5QTUMgTWVtYmVyPC90ZD48dGQ+LTY8L3RkPjx0ZD48c3BhbiBpZD0iZGV2ZWxvcGVyLTEwIj4tNjwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+PGEgbmFtZT0ibmljb2xhcyI+PC9hPm5pY29sYXM8L3RkPjx0ZD5OaWNvbGFzIERlIExvb2Y8L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86bmljb2xhc0BhcGFjaGUub3JnIj5uaWNvbGFzQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+Q2FwZ2VtaW5pPC90ZD48dGQ+LTwvdGQ+PHRkPlBNQyBNZW1iZXI8L3RkPjx0ZD4rMTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMTEiPisxPC9zcGFuPjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD48YSBuYW1lPSJ3c21vYWsiPjwvYT53c21vYWs8L3RkPjx0ZD5XZW5keSBTbW9hazwvdGQ+PHRkPjxhIGhyZWY9Im1haWx0bzp3c21vYWtAYXBhY2hlLm9yZyI+d3Ntb2FrQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+LTwvdGQ+PHRkPi08L3RkPjx0ZD5QTUMgTWVtYmVyPC90ZD48dGQ+LTc8L3RkPjx0ZD48c3BhbiBpZD0iZGV2ZWxvcGVyLTEyIj4tNzwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+PGEgbmFtZT0iZGVubmlzbCI+PC9hPmRlbm5pc2w8L3RkPjx0ZD5EZW5uaXMgTHVuZGJlcmc8L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86ZGVubmlzbEBhcGFjaGUub3JnIj5kZW5uaXNsQGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+QVNGPC90ZD48dGQ+LTwvdGQ+PHRkPkNvbW1pdHRlcjwvdGQ+PHRkPisxPC90ZD48dGQ+PHNwYW4gaWQ9ImRldmVsb3Blci0xMyI+KzE8L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPjxhIG5hbWU9Im1hcnRpbmMiPjwvYT5tYXJ0aW5jPC90ZD48dGQ+TWFydGluIENvb3BlcjwvdGQ+PHRkPjxhIGhyZWY9Im1haWx0bzptYXJ0aW5jQGFwYWNoZS5vcmciPm1hcnRpbmNAYXBhY2hlLm9yZzwvYT48L3RkPjx0ZD5BU0Y8L3RkPjx0ZD4tPC90ZD48dGQ+Q29tbWl0dGVyPC90ZD48dGQ+LTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMTQiPi08L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPjxhIG5hbWU9Im1iYWNsYXkiPjwvYT5tYmFjbGF5PC90ZD48dGQ+TWFyZWNvciBNLiBCYWNsYXk8L3RkPjx0ZD48YSBocmVmPSJtYWlsdG86bWJhY2xheUBhcGFjaGUub3JnIj5tYmFjbGF5QGFwYWNoZS5vcmc8L2E+PC90ZD48dGQ+LTwvdGQ+PHRkPi08L3RkPjx0ZD5Db21taXR0ZXI8L3RkPjx0ZD4rODwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMTUiPis4PC9zcGFuPjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD48YSBuYW1lPSJqenVyYmFubyI+PC9hPmp6dXJiYW5vPC90ZD48dGQ+SmV2aWNhIEFyaWFubmUgQi4gWnVyYmFubzwvdGQ+PHRkPjxhIGhyZWY9Im1haWx0bzpqenVyYmFub0BhcGFjaGUub3JnIj5qenVyYmFub0BhcGFjaGUub3JnPC9hPjwvdGQ+PHRkPi08L3RkPjx0ZD4tPC90ZD48dGQ+Q29tbWl0dGVyPC90ZD48dGQ+Kzg8L3RkPjx0ZD48c3BhbiBpZD0iZGV2ZWxvcGVyLTE2Ij4rODwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+PGEgbmFtZT0ianZhbnp5bCI+PC9hPmp2YW56eWw8L3RkPjx0ZD5KYXNvbiB2YW4gWnlsPC90ZD48dGQ+LTwvdGQ+PHRkPi08L3RkPjx0ZD4tPC90ZD48dGQ+RW1lcml0dXM8L3RkPjx0ZD4tPC90ZD48dGQ+PHNwYW4gaWQ9ImRldmVsb3Blci0xNyI+LTwvc3Bhbj48L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+PGEgbmFtZT0iYmF5YXJkIj48L2E+YmF5YXJkPC90ZD48dGQ+SGVucmkgWWFuZGVsbDwvdGQ+PHRkPi08L3RkPjx0ZD4tPC90ZD48dGQ+LTwvdGQ+PHRkPkVtZXJpdHVzPC90ZD48dGQ+LTwvdGQ+PHRkPjxzcGFuIGlkPSJkZXZlbG9wZXItMTgiPi08L3NwYW4+PC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPjxhIG5hbWU9Imtlbm5leSI+PC9hPmtlbm5leTwvdGQ+PHRkPktlbm5leSBXZXN0ZXJob2Y8L3RkPjx0ZD4tPC90ZD48dGQ+LTwvdGQ+PHRkPi08L3RkPjx0ZD5FbWVyaXR1czwvdGQ+PHRkPi08L3RkPjx0ZD48c3BhbiBpZD0iZGV2ZWxvcGVyLTE5Ij4tPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMz5Db250cmlidXRvcnM8L2gzPjxwPlRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIHByb2plY3QgdGhyb3VnaCB0aGUgd2F5IG9mIHN1Z2dlc3Rpb25zLCBwYXRjaGVzIG9yIGRvY3VtZW50YXRpb24uPC9wPjx0YWJsZSBjbGFzcz0iYm9keVRhYmxlIj48dHIgY2xhc3M9ImIiPjx0aD5OYW1lPC90aD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPlN0ZWZmZW4gR3J1bndhbGQ8L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+U3RlZmFuIFByYW5nZTwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5Kb2huIE1pY2hhZWwgTHV5PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPk1hcnRpbiBI9mxsZXI8L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+U3RlcGhlbiBHYXJnYW48L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+RGFyaW8gT2xpdmVyb3M8L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+amFtZXMgYWhsYm9ybjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5KaW0gSmFja3NvbjwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5EYW5pZWwgSGFydmV5PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPkFsZWtzYW5kciBUYXJ1dGluPC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPlRlb2Rvcm8gQ3VlIEpyLjwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5KYW4gQW5jYWphczwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5KZW5zIE38aGxlbmhvZmY8L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+RGF3biBBbmdlbGl0bzwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5OYXAgUmFtaXJlejwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5IZW5yeSBJc2lkcm88L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+QW50b2luZSBWZXJldDwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5DaHJpc3RpYW4gR3J1YmVyPC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPkFsbGFuIFJhbWlyZXo8L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+UGV0ZSBNYXJ2aW4gS2luZzwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5Kb2VsIFN1ZGlhY2FsPC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPk1pbG9zIEtsZWludDwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5OaWNrIEdvbnphbGV6PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPk1hcmlhIENhdGhlcmluZSBUYW48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+RGFuIFRyYW48L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+R3dlbiBIYXJvbGQgQXV0ZW5jaW88L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+TWFyayBKZWZmZXJ5PC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPkZhYnJpY2UgRGF1Z2FuPC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPkRvcm9uIFNvbG9tb248L3RkPjwvdHI+PHRyIGNsYXNzPSJiIj48dGQ+TWljaGFsIFN0b2NobWlhbGVrPC90ZD48L3RyPjx0ciBjbGFzcz0iYSI+PHRkPkp1bGllbiBIZW5yeTwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5BbmRyZWFzIEJhdW1hbm48L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+QWRlbGl0YSBMLiBQYWRpbGxhPC90ZD48L3RyPjx0ciBjbGFzcz0iYiI+PHRkPkRhbmllbCBUcmlwaGF1czwvdGQ+PC90cj48dHIgY2xhc3M9ImEiPjx0ZD5QYXR0aSBBcmFjaGNoaWdlIEVzaGFuIFN1ZGhhcmFrYTwvdGQ+PC90cj48dHIgY2xhc3M9ImIiPjx0ZD5TaGluc3VrZSBTdWdheWE8L3RkPjwvdHI+PHRyIGNsYXNzPSJhIj48dGQ+TWFyY3VzIERpbWFuZDwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gb2Zmc2V0RGF0ZShpZCwgb2Zmc2V0KSB7CiAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgIHZhciBub3dUaW1lID0gbm93LmdldFRpbWUoKTsKICAgIHZhciBsb2NhbE9mZnNldCA9IG5vdy5nZXRUaW1lem9uZU9mZnNldCgpOwogICAgdmFyIGRldmVsb3BlclRpbWUgPSBub3dUaW1lICsgKCBvZmZzZXQgKiA2MCAqIDYwICogMTAwMCApKyAoIGxvY2FsT2Zmc2V0ICogNjAgKiAxMDAwICk7CiAgICB2YXIgZGV2ZWxvcGVyRGF0ZSA9IG5ldyBEYXRlKGRldmVsb3BlclRpbWUpOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5pbm5lckhUTUwgPSBkZXZlbG9wZXJEYXRlOwp9CgpmdW5jdGlvbiBpbml0KCl7CiAgICBvZmZzZXREYXRlKCdkZXZlbG9wZXItMCcsICcrOCcpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTEnLCAnKzEnKTsKICAgIG9mZnNldERhdGUoJ2RldmVsb3Blci0zJywgJysxMCcpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTQnLCAnKzEnKTsKICAgIG9mZnNldERhdGUoJ2RldmVsb3Blci01JywgJy04Jyk7CiAgICBvZmZzZXREYXRlKCdkZXZlbG9wZXItNicsICcrMScpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTcnLCAnKzExJyk7CiAgICBvZmZzZXREYXRlKCdkZXZlbG9wZXItOCcsICctNScpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTknLCAnKzgnKTsKICAgIG9mZnNldERhdGUoJ2RldmVsb3Blci0xMCcsICctNicpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTExJywgJysxJyk7CiAgICBvZmZzZXREYXRlKCdkZXZlbG9wZXItMTInLCAnLTcnKTsKICAgIG9mZnNldERhdGUoJ2RldmVsb3Blci0xMycsICcrMScpOwogICAgb2Zmc2V0RGF0ZSgnZGV2ZWxvcGVyLTE1JywgJys4Jyk7CiAgICBvZmZzZXREYXRlKCdkZXZlbG9wZXItMTYnLCAnKzgnKTsKfQoKd2luZG93Lm9uTG9hZCA9IGluaXQoKTsKPC9zY3JpcHQ+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjbGVhciI+DQogICAgICA8aHIvPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgaWQ9ImZvb3RlciI+DQogICAgICA8ZGl2IGNsYXNzPSJ4cmlnaHQiPiYjMTY5OyAgDQogICAgICAgICAgMjAwNi0yMDExDQogICAgDQogICAgICAgICAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQogICAgICAgICAgDQogIA0KDQogIA0KICAgIA0KICANCiAgDQogIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iY2xlYXIiPg0KICAgICAgICA8aHIvPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvYm9keT4NCjwvaHRtbD4NCg==