PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+QXhpczIgQ29uZmlndXJhdGlvbiBEb2N1bWVudHM8L3RpdGxlPg0KPC9oZWFkPg0KPGJvZHk+DQo8cD5JbiBBeGlzMiB0aGVyZSBhcmUgdGhyZWUga2luZHMgb2YgY29uZmlndXJhdGlvbiBmaWxlcyB0byBjb25maWd1cmUgdGhlIHN5c3RlbS4gDQpGaXJzdCBvbmUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRvIGNvbmZpZ3VyZSB3aG9sZSBzeXN0ZW0sIHNlY29uZCBvbmUgaXMgdG8gDQpjb25maWd1cmUgYSBzZXJ2aWNlIGFuZCB0aGUgdGhpcmQgb25lIGlzIHRvIGNvbmZpZ3VyZSBhIG1vZHVsZS4gDQo8dWw+DQo8bGk+PGEgaHJlZj0iI2dsb2JhbCI+R2xvYmFsIENvbmZpZ3VyYXRpb24gKGF4aXMyLnhtbCk8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjc2VydmljZSI+U2VydmljZSBDb25maWd1cmF0aW9uIChzZXJ2aWNlcy54bWwpPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI21vZHVsZSI+TW9kdWxlIENvbmZpZ3VyYXRpb24gKG1vZHVsZS54bWwpPC9hPjwvbGk+DQo8L3VsPg0KPC9wPg0KPGJyPg0KDQo8Zm9udCBjb2xvcj0iYmx1ZSI+PGI+R2xvYmFsIENvbmZpZ3VyYXRpb24gPC9iPjwvZm9udD4NCjxsaT48YSBuYW1lPSJnbG9iYWwiPjwvYT5Xcml0aW5nIGF4aXMyLnhtbDwvbGk+DQo8cD4NCiAgQWxsIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgcmVxdWlyZXMgc3RhcnRpbmcgYXhpczIgaXMgb2J0YWluZWQgZnJvbSBheGlzMi54bWwuIA0KCVRoZSB3YXkgb2Ygc3BlY2lmeWluZyB0aGVtIGlzIHZlcnkgc2ltcGxlIGFuZCBlYXN5LiBUaGUgZG9jdW1lbnQgaXMgYWxsIGFib3V0IA0KCXRoZSBwcm9wZXIgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb25zIGluIGF4aXMyLnhtbC4NCglUaGVyZSBhcmUgc2l4IHRvcCBsZXZlbCBlbGVtZW50cyB0aGF0IGNhbiBiZSBzZWVuIGluIHRoZSBjb25maWd1cmF0aW9uIA0KCWZpbGUgYW5kIHRob3NlIGNhbiBiZSBsaXN0ZWQgYXMgZm9sbG93czsNCjwvcD4NCjx1bD4NCjxsaT5QYXJhbWV0ZXI8L2xpPg0KPGxpPlRyYW5zcG9ydCBSZWNlaXZlcjwvbGk+DQo8bGk+VHJhbnNwb3J0IFNlbmRlcjwvbGk+DQo8bGk+UGhhc2UgT3JkZXI8L2xpPg0KPGxpPk1vZHVsZSBSZWZlcmVuY2VzPC9saT4NCjxsaT5MaXN0ZW5lcnMgKE9ic2VydmVycyk8L2xpPg0KPC91bD4NCg0KPHA+PGI+UGFyYW1ldGVyIDwvYj4NCjxicj4NCkluIGF4aXMyIGEgcGFyYW1ldGVyIGlzIG5vdGhpbmcgYnV0IG5hbWUgdmFsdWUgcGFpciwgZWFjaCBhbmQgZXZlcnkgdG9wIGxldmVsIA0KcGFyYW1ldGVyIGF2YWlsYWJsZSBpbiB0aGUgYXhpczIueG1sIChkaXJlY3Qgc3ViIGVsZW1lbnRzIG9mIHJvb3QgZWxlbWVudCkgd2lsbCANCmJlIHRyYW5zZm9ybWVkIGludG8gcHJvcGVydGllcyBpbiBBeGlzQ29uZmlndXJhdGlvbi4gVGhlcmVmb3JlIHRoZSB0b3AgbGV2ZWwgDQpwYXJhbWV0ZXJzIGluIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnQgY2FuIGJlIGFjY2Vzc2VkIHZpYSBBeGlzQ29uZmlndXJhdGlvbiBpbiANCnRoZSBydW5uaW5nIHN5c3RlbS4gVGhlIGNvcnJlY3Qgd2F5IG9mIGRlZmluaW5nIGEgcGFyYW1ldGVyIGxvb2tzIGxpa2Ugd2hhdCBpcyBzaG93biBiZWxvdzsNCjxzb3VyY2U+PHByZT4gDQogICZsdDtwYXJhbWV0ZXIgbmFtZT0ibmFtZSBvZiB0aGUgcGFyYW1ldGVyIiAmZ3Q7cGFyYW1ldGVyIHZhbHVlICZsdDsvcGFyYW1ldGVyJmd0Ow0KPC9wcmU+PC9zb3VyY2U+DQo8L3A+DQo8cD4NCjxiPlRyYW5zcG9ydCBSZWNlaXZlcjwvYj48YnI+DQpEZXBlbmRpbmcgb24gdGhlIHVuZGVybGluZSB0cmFuc3BvcnQgdGhhdCBheGlzIGdvaW5nIHRvIGJlIHJ1biAsIA0KbmVlZCB0byBoYXZlIGRpZmZlcmVudCB0cmFuc3BvcnQgcmVjZWl2ZXJzIHNvIHRoZSB3YXkgb2YgYWRkaW5nIA0KdGhlbSB0byB0aGUgc3lzdGVtIGNhbiBiZSBkb25lIGFzIGZvbGxvd3M7DQo8c291cmNlPjxwcmU+IA0KJmx0O3RyYW5zcG9ydFJlY2VpdmVyIG5hbWU9Imh0dHAiIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLlNpbXBsZUhUVFBTZXJ2ZXIiJmd0Ow0KICAgICAgICAmbHQ7cGFyYW1ldGVyIG5hbWU9InBvcnQiICZndDs2MDYwJmx0Oy9wYXJhbWV0ZXImZ3Q7DQogJmx0Oy90cmFuc3BvcnRSZWNlaXZlciZndDsgDQogPC9wcmU+PC9zb3VyY2U+DQoNClRoZSBhYm92ZSBlbGVtZW50cyBzaG93cyB0aGUgd2F5IG9mIGRlZmluaW5nIHRyYW5zcG9ydCByZWNlaXZlcnMgaW4gYXhpczIueG1sICwgDQpoZXJlIG5hbWUgYXR0cmlidXRlIG9mIHRoZSAndHJhbnNwb3J0UmVjZWl2ZXInIGVsZW1lbnQgaXMgdGhlIG5hbWUgb2YgdHJhbnNwb3J0DQppdCBjYW4gYmUgaHR0cCwgdGNwICwgc210cCAsIGNvbW1vbnNodHRwIHN0YyAsIGFuZCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHVwIG9yIA0Kd2hlbiBzZXR0aW5nIHRyYW5zcG9ydCBhdCB0aGUgY2xpZW50IHNpZGUgb25lIGNhbiB1c2UgdGhlc2UgdHJhbnNwb3J0IG5hbWVzIHRvDQogbG9hZCB0aGUgYXBwcm9wcmlhdGUgdHJhbnNwb3J0LiBDbGFzcyBhdHRyaWJ1dGUgaXMgdG8gc3BlY2lmeSBhY3R1YWwgamF2YSANCiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJlcXVpcmVkIGludGVyZmFjZXMgZm9yIHRoZSB0cmFuc3BvcnQuIEFueSB0cmFuc3BvcnQgDQogY2FuIGhhdmUgemVybyBvciBtb3JlIHBhcmFtZXRlcnMsIGFuZCBpZiB0aGVyZSBhcmUgYW55LCB0aGVuIHRob3NlIHBhcmFtZXRlcnMgDQogY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgY29ycmVzcG9uZGluZyB0cmFuc3BvcnQgcmVjZWl2ZXIuIA0KPC9wPg0KDQo8cD4NCjxiPlRyYW5zcG9ydCBTZW5kZXJzPC9iPjxicj4NCkFzIHNhbWUgYXMgdHJhbnNwb3J0IHJlY2VpdmVycyBpdCBpcyBwb3NzaWJsZSB0byByZWdpc3RlciB0cmFuc3BvcnQgc2VuZGVycyBpbiB0aGUgDQpzeXN0ZW0sIGFuZCBsYXR0ZXIgYXQgdGhlIHJ1biB0aW1lIHRob3NlIHNlbmRlcnMgY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgbWVzc2FnZXMuIA0KQXMgYW4gZXhhbXBsZSBjb25zaWRlciBBeGlzMiBydW5uaW5nIHVuZGVyIHRvbWNhdCwgdGhlbiBheGlzIGNhbiB1c2UgVENQIHRyYW5zcG9ydCANCnNlbmRlcnMgdG8gc2VuZCBtZXNzYWdlIHJhdGhlciB0aGFuIEhUVFAuIFRoZSB3YXkgb2Ygc3BlY2lmeWluZyB0cmFuc3BvcnQgc2VuZGVycyBpcyBhcyBmb2xsb3dzOg0KPHNvdXJjZT48cHJlPiANCiZsdDt0cmFuc3BvcnRTZW5kZXIgbmFtZT0iaHR0cCIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuQ29tbW9uc0hUVFBUcmFuc3BvcnRTZW5kZXIiJmd0Ow0KICAgICAgICAmbHQ7cGFyYW1ldGVyIG5hbWU9IlBST1RPQ09MIiBsb2NrZWQ9InhzZDpmYWxzZSImZ3Q7SFRUUC8xLjAmbHQ7L3BhcmFtZXRlciZndDsNCiAmbHQ7L3RyYW5zcG9ydFNlbmRlciZndDsgDQogPC9wcmU+PC9zb3VyY2U+DQpuYW1lOiBOYW1lIG9mIHRoZSB0cmFuc3BvcnQgKGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgaHR0cCBhbmQgaHR0cDEgYXMgdHJhbnNwb3J0IG5hbWUpDQpDbGFzczogSW1wbGVtZW50YXRpb24gY2xhc3Mgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNwb3J0LiANCg0KQXMgc2FtZSBhcyB0cmFuc3BvcnQgcmVjZWl2ZXJzLCB0cmFuc3BvcnQgc2VuZGVycyBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgcGFyYW1ldGVycywgDQphbmQgaWYgdGhlcmUgaXMgYW55IHRoZW4gaXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSBjb3JyZXNwb25kaW5nIHRyYW5zcG9ydCBzZW5kZXIuIA0KPC9wPg0KPHA+DQo8Yj5QaGFzZSBPcmRlcjwvYj48YnI+IA0KVGhlIHNwZWNpZnlpbmcgb3JkZXIgb2YgcGhhc2VzIGluIGV4ZWN1dGlvbiBjaGFpbiBoYXMgdG8gYmUgZG9uZSB1c2luZyBwaGFzZSANCm9yZGVyIGVsZW1lbnQgYW5kIGl0IHdpbGwgYmUgbG9vayBsaWtlIGJlbG93Ow0KPHNvdXJjZT48cHJlPg0KJmx0O3BoYXNlT3JkZXIgdHlwZT0iaW5mbG93IiZndDsNCiAgICAgICAgICZsdDtwaGFzZSBuYW1lPSJUcmFuc3BvcnRJbiIvJmd0Ow0KICAgICAgICAghYWFhYWFhYWFhYWFhQ0KICAgICAgICAghYWFhYWFhYWFhYWFhYUuDQombHQ7L3BoYXNlT3JkZXImZ3Q7ICAgDQo8L3ByZT48L3NvdXJjZT4NCg0KVGhlIG1vc3QgaW50ZXJlc3RpbmcgdGhpbmcgaXMgdGhhdCB5b3UgY2FuIGFkZCBoYW5kbGVycyBoZXJlIGFzIHdlbGwgLCBpZiB5b3Ugd2FudCB0byBhZGQgYSBoYW5kbGVyIHdoaWNoIHNob3VsZCBnbyBpbiB0byB0aGF0IHBoYXNlIHlvdSBjYW4gZGlyZWN0bHkgZG8gdGhhdCBieSBhZGRpbmcgYSBoYW5kbGVyIGVsZW1lbnQgaW50byBpdCAuIEluIGFkZGl0aW9uIHRvIHRoYXQgdGhlcmUgaXMgbm8gYW55IGhhcmQgY29kaW5nIHN0dWZmcyBmb3IgaGFuZGxlciAgY2hhaW4gaW4gYW55d2hlcmUgaW4gQXhpczIgKGF0IGFueSBBeGlzKikgLCBzbyBhbGwgdGhvc2UgY29uZmlndXJhdGlvbiBhcmUgYWxzbyBkb25lIGhlcmUgaW4gcGhhc2Ugb3JkZXIgZWxlbWVudC4gVGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gd2lsbCBsb29rIGxpa2UgYXMgZm9sbG93czsNCg0KPHNvdXJjZT48cHJlPg0KJmx0O3BoYXNlT3JkZXIgdHlwZT0iaW5mbG93IiImZ3Q7DQogICAgICAgICZsdDshLS0gIFN5c3RlbSBwcmUgZGVmaW5lZCBwaGFzZXMgICAgICAgLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0iVHJhbnNwb3J0SW4iLyImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJQcmVEaXNwYXRjaCIvIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9IkRpc3BhdGNoIiImZ3Q7DQogICAgICAgICAgICAmbHQ7aGFuZGxlciBuYW1lPSJBZGRyZXNzaW5nQmFzZWREaXNwYXRjaGVyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLkFkZHJlc3NpbmdCYXNlZERpc3BhdGNoZXIiIiZndDsNCiAgICAgICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9IkRpc3BhdGNoIi8iJmd0Ow0KICAgICAgICAgICAgJmx0Oy9oYW5kbGVyIiZndDsNCiAgICAgICAgICAgICAmbHQ7aGFuZGxlciBuYW1lPSJSZXF1ZXN0VVJJQmFzZWREaXNwYXRjaGVyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLlJlcXVlc3RVUklCYXNlZERpc3BhdGNoZXIiIiZndDsNCiAgICAgICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9IkRpc3BhdGNoIi8iJmd0Ow0KICAgICAgICAgICAgJmx0Oy9oYW5kbGVyIiZndDsNCiAgICAgICAgICAgICAmbHQ7aGFuZGxlciBuYW1lPSJTT0FQQWN0aW9uQmFzZWREaXNwYXRjaGVyIg0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLlNPQVBBY3Rpb25CYXNlZERpc3BhdGNoZXIiIiZndDsNCiAgICAgICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9IkRpc3BhdGNoIi8iJmd0Ow0KICAgICAgICAgICAgJmx0Oy9oYW5kbGVyIiZndDsNCiAgICAgICAgICAgICAmbHQ7aGFuZGxlciBuYW1lPSJTT0FQTWVzc2FnZUJvZHlCYXNlZERpc3BhdGNoZXIiDQogICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5lbmdpbmUuU09BUE1lc3NhZ2VCb2R5QmFzZWREaXNwYXRjaGVyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJEaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICZsdDsvcGhhc2UiJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0iUG9zdERpc3BhdGNoIiImZ3Q7DQogICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iRGlzcGF0Y2hQb3N0Q29uZGl0aW9uc0V2YWx1YXRvciINCiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmVuZ2luZS5EaXNwYXRjaGluZ0NoZWNrZXIiIiZndDsNCiAgICAgICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9IlBvc3REaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICAgICAmbHQ7aGFuZGxlciBuYW1lPSJJbnN0YW5jZURpc3BhdGNoZXIiDQogICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5lbmdpbmUuSW5zdGFuY2VEaXNwYXRjaGVyIiImZ3Q7DQogICAgICAgICAgICAgICAgJmx0O29yZGVyIHBoYXNlPSJQb3N0RGlzcGF0Y2giLyImZ3Q7DQogICAgICAgICAgICAmbHQ7L2hhbmRsZXIiJmd0Ow0KICAgICAgICAgICAgJmx0O2hhbmRsZXIgbmFtZT0iU09BUFByb2Nlc3NpbmdNb2RlbENoZWNrZXIiDQogICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5lbmdpbmUuU09BUFByb2Nlc3NpbmdNb2RlbENoZWNrZXIiIiZndDsNCiAgICAgICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9IlBvc3REaXNwYXRjaCIvIiZndDsNCiAgICAgICAgICAgICZsdDsvaGFuZGxlciImZ3Q7DQogICAgICAgICZsdDsvcGhhc2UiJmd0Ow0KICAgICAgICAmbHQ7IS0tICBTeXN0ZW0gcHJlIGRlZmluZWQgcGhhc2VzICAgICAgIC0tIiZndDsNCiAgICAgICAgJmx0OyEtLSAgIEFmdGVyIFBvc3RkaXNwYXRjaCBwaGFzZSBtb2R1bGUgYXV0aG9yIG9yIG9yIHNlcnZpY2UgYXV0aG9yIGNhbiBhZGQgYW55IHBoYXNlIGhlIHdhbnQgICAgICAtLSImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJ1c2VycGhhc2UxIi8iJmd0Ow0KICAgICZsdDsvcGhhc2VPcmRlciImZ3Q7DQogICAgJmx0O3BoYXNlT3JkZXIgdHlwZT0ib3V0ZmxvdyIiJmd0Ow0KICAgICAgICAmbHQ7IS0tICAgICAgdXNlciBjYW4gYWRkIGhpcyBvd24gcGhhc2VzIHRvIHRoaXMgYXJlYSAgLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0idXNlcnBoYXNlMSIvIiZndDsNCiAgICAgICAgJmx0OyEtLXN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlLS0iJmd0Ow0KICAgICAgICAmbHQ7IS0tdGhlc2UgcGhhc2Ugd2lsbCBydW4gaXJyZXNwZWN0aXZlIG9mIHRoZSBzZXJ2aWNlLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0iUG9saWN5RGV0ZXJtaW5hdGlvbiIvIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9Ik1lc3NhZ2VPdXQiLyImZ3Q7DQogICAgJmx0Oy9waGFzZU9yZGVyIiZndDsNCiAgICAmbHQ7cGhhc2VPcmRlciB0eXBlPSJJTmZhdWx0ZmxvdyIiJmd0Ow0KICAgICAgICAmbHQ7IS0tICAgICAgdXNlciBjYW4gYWRkIGhpcyBvd24gcGhhc2VzIHRvIHRoaXMgYXJlYSAgLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0idXNlcnBoYXNlMSIvIiZndDsNCiAgICAmbHQ7L3BoYXNlT3JkZXIiJmd0Ow0KICAgICZsdDtwaGFzZU9yZGVyIHR5cGU9Ik91dGZhdWx0ZmxvdyIiJmd0Ow0KICAgICAgICAmbHQ7IS0tICAgICAgdXNlciBjYW4gYWRkIGhpcyBvd24gcGhhc2VzIHRvIHRoaXMgYXJlYSAgLS0iJmd0Ow0KICAgICAgICAmbHQ7cGhhc2UgbmFtZT0idXNlcnBoYXNlMSIvIiZndDsNCiAgICAgICAgJmx0O3BoYXNlIG5hbWU9IlBvbGljeURldGVybWluYXRpb24iLyImZ3Q7DQogICAgICAgICZsdDtwaGFzZSBuYW1lPSJNZXNzYWdlT3V0Ii8iJmd0Ow0KICAgICZsdDsvcGhhc2VPcmRlciImZ3Q7DQo8L3ByZT48L3NvdXJjZT4NCg0KdHlwZTogdGhlIGF0dHJpYnV0ZSByZXByZXNlbnQgdHlwZSBvZiB0aGUgZmxvdyBhbmQgd2hpY2ggY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcNCjwvcD4NCjx1bD4NCjxsaT5pbmZsb3c8L2xpPg0KPGxpPm91dGZsb3c8L2xpPg0KPGxpPklOZmF1bHRmbG93PC9saT4NCjxsaT5PdXRmYXVsdGZsb3c8L2xpPg0KPC91bD4NCg0KPHA+SW4gYWRkaXRpb24gdG8gdGhhdCBvbmx5IGNoaWxkIGVsZW1lbnQgYWxsb3dlZCBpbnNpZGUgcGFoc2VPcmRlciBpcyBwaGFzZSANCmVsZW1lbnQsIHdoaWNoIHJlcHJlc2VudHMgYXZhaWxhYmxlIHBoYXNlcyBpbiB0aGUgZXhlY3V0aW9uIGNoYWluLiAgDQpUaGUgd2F5IG9mIHNwZWNpZnlpbmcgcGhhc2UgaW5zaWRlIHBoYXNlT3JkZXIgaGFzIHRvIGJlIGRvbmUgYXMgZm9sbG93czsNCjxzb3VyY2U+PHByZT4NCiAmbHQ7cGhhc2UgbmFtZT0iVHJhbnNwb3J0SW4iLyZndDsNCjwvcHJlPjwvc291cmNlPg0KbmFtZTogTmFtZSBvZiB0aGUgcGhhc2UuDQo8YnI+DQpUaGVyZSBhcmUgbnVtYmVyIG9mIHRoaW5ncyB0aGF0IG9uZSBoYXMgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY2hhbmdpbmcgcGFoc2VPcmRlciwgDQo8dWw+DQo8b2w+dGhlcmUgYXJlIHBoYXNlcyBjYWxsZWQgc3lzdGVtIHByZS1kZWZpbmVkIHBoYXNlcyBpbiBhbGwgZm91ciBmbG93czs8L29sPg0KPG9sPllvdSBhcmUgbm90IGFsbG93ZWQgY2hhbmdlIHRob3NlICAsIGFuZCB5b3UgY2FuIGFkZCBuZXcgcGhhc2UgYWZ0ZXIgc3lzdGVtIHByZS1kZWZpbmVkIHBoYXNlPC9vbA0KPG9sPklmIHlvdSBjbG9zZWx5IGxvb2sgYXQgdGhlIGRlZmF1bHQgYXhpczIueG1sIGNhbiBjbGVhcmx5IGlkZW50aWZ5IHRoYXQuICA8L29sPg0KPC91bD4NCjwvcD4NCjxwPg0KPGI+TW9kdWxlIFJlZmVyZW5jZXM8L2I+PGJyPg0KSWYgeW91IHdhbnQgdG8gZW5nYWdlIGEgbW9kdWxlIHN5c3RlbSB3aWRlIHlvdSBjYW4gZG8gaXQgYnkgYWRkaW5nIHRvcCANCmxldmVsIG1vZHVsZSBlbGVtZW50IGluIGF4aXMyLnhtbC4gIEl0IHNob3VsZCBiZSBsb29rIGxpa2UgZm9sbG93aW5nOg0KPHNvdXJjZT48cHJlPg0KJmx0O21vZHVsZSByZWY9ImFkZHJlc3NpbmciLyZndDsgIA0KPC9wcmU+PC9zb3VyY2U+DQpyZWY6IHRoZSBtb2R1bGUgbmFtZSB3aGljaCBpcyBnb2luZyB0byBiZSBlbmdhZ2UsIHN5c3RlbSB3aWRlLg0KDQpMaXN0ZW5lcnMgKE9ic2VydmVycykNCkluIEF4aXMyIEF4aXNDb25maWd1cmF0aW9uIGlzIG9ic2VydmFibGUgc28gdGhhdCBvbmUgY2FuIHJlZ2lzdGVyIG9ic2VydmVycyBpbnRvIA0KdGhhdCwgYW5kIHRoZXkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluZm9ybWVkIHdoZW5ldmVyIGEgY2hhbmdlIG9jY3VycyBpbiANCkF4aXNDb25maXVyYXRpb24uIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZSBvYnNlcnZlcnMgYXJlIGluZm9ybWVkIG9mIHRoZSBmb2xsb3dpbmcgZXZlbnRzDQoNCjx1bD4NCjxsaT5EZXBsb3lpbmcgYSBTZXJ2aWNlPC9saT4NCjxsaT5SZW1vdmluZyBhIHNlcnZpY2U8L2xpPg0KPGxpPkNoYW5naW5nIGEgc2VydmljZTwvbGk+IA0KPC91bD4NClJlZ2lzdGVyaW5nIE9ic2VydmVycyBpcyB2ZXJ5IHVzZWZ1bCBmb3IgYWRkaXRpb25hbCBmZWF0dXJlcyBzdWNoIGFzIFJTUyBmZWVkIA0KZ2VuZXJhdGlvbiB3aGljaCB3aWxsIHByb3ZpZGUgc2VydmljZSBpbmZvcm1hdGlvbiB0byBzdWJzY3JpYmVycy4gVGhlIGNvcnJlY3QNCiB3YXkgb2YgcmVnaXN0ZXJpbmcgb2JzZXJ2ZXJzIHNob3VsZCBiZSBsaWtlIGJlbG93Ow0KPHNvdXJjZT48cHJlPg0KJmx0O2xpc3RlbmVyIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLk9ic2VydmVySU1QTCImZ3Q7DQogICAgJmx0O3BhcmFtZXRlciBuYW1lPSJSU1NfVVJMIiAmZ3Q7aHR0cDovLzEyNy4wLjAuMS9yc3MmbHQ7L3BhcmFtZXRlciZndDsNCiAgJmx0Oy9saXN0ZW5lciZndDsNCjwvcHJlPjwvc291cmNlPg0KY2xhc3M6IFJlcHJlc2VudCBhbiBJbXBsZW1lbnRhdGlvbiBjbGFzcyBvZiBvYnNlcnZlciwgYW5kIGl0IHNob3VsZCBiZSBub3RlDQogdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3Mgc2hvdWxkIGltcGxlbWVudCBBeGlzT2JzZXJ2ZXIgaW50ZXJmYWNlLA0KICBhbmQgdGhlIGNsYXNzIGhhcyB0byBiZSBhdmFpbGFibGUgaW4gdGhlIGNsYXNzcGF0aC4gDQo8L3A+DQoNCjxicj4NCg0KPGZvbnQgY29sb3I9ImJsdWUiPjxiPlNlcnZpY2UgQ29uZmlndXJhdGlvbjwvYj48L2ZvbnQ+DQo8bGk+PGEgbmFtZT0ic2VydmljZSI+PC9hPldyaXRpbmcgc2VydmljZXMueG1sPC9saT4NCjxwPg0KVGhlIGRlc2NyaXB0aW9uIG9mIHNlcnZpY2UgaXMgc3BlY2lmaWVkIHVzaW5nIHNlcnZpY2VzLnhtbCwgZWFjaCBzZXJ2aWNlIGFyY2hpdmUgDQpmaWxlIG5lZWQgdG8gaGF2ZSBzZXJ2aWNlcy54bWwgaW4gb3JkZXIgdG8gYmUgYSB2YWxpZCBzZXJ2aWNlLiBBbmQgd2hpY2ggaGFzIHRvIGJlIA0KYXZhaWxhYmxlIGluIE1FVEEtSU5GIGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2ZSBmaWxlLiANCjxicj4NCkEgdmVyeSBzaW1wbGUgc2VydmljZXMueG1sIGlzIHNob3duIGJlbG93Og0KPHNvdXJjZT48cHJlPg0KJmx0O3NlcnZpY2UgJmd0Ow0KICAgICZsdDtkZXNjcmlwdGlvbiZndDsgVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXJ2aWNlICAmbHQ7L2Rlc2NyaXB0aW9uJmd0Ow0KDQogICAgJmx0O3BhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiICAgICBsb2NrZWQ9InhzZDpmYWxzZSImZ3Q7b3JnLmFwYWNoZS5heGlzMi5zYW1wbGUuZWNoby5FY2hvSW1wbCZsdDsvcGFyYW1ldGVyJmd0Ow0KICAgIA0KICAgICZsdDtvcGVyYXRpb24gbmFtZT0iZWNob1N0cmluZyImZ3Q7DQogICAgICAgICZsdDttb2R1bGUgcmVmPSIgYSBtb2R1bGUgbmFtZSAiLyZndDsNCiAgICAgICAgJmx0O21lc3NhZ2VSZWNlaXZlciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5yZWNlaXZlcnMuUmF3WE1MSU5PdXRNZXNzYWdlUmVjZWl2ZXIiLyZndDsNCiAgICAmbHQ7L29wZXJhdGlvbiZndDsNCiAgJmx0Oy9zZXJ2aWNlJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQoNCnNlcnZpY2UgbmFtZTogdGhlIHNlcnZpY2UgbmFtZSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZpbGUuDQo8YnI+DQpkZXNjcmlwdGlvbjogVGhpcyBpcyBhbiBvcHRpb25hbCBlbGVtZW50IGlmIHlvdSB3YW50IHRvIGRpc3BsYXkgYW55IGRlc2NyaXB0aW9uIA0KYWJvdXQgdGhlIHNlcnZpY2UgdmlhIEF4aXMyIHdlYi1hZG1pbiBtb2R1bGUgdGhlbiB0aGUgZGVzY3JpcHRpb24gY2FuIGJlIHNwZWNpZmllZCBoZXJlLiANCjwvcD4NCjxwPg0KPGI+UGFyYW1ldGVyOjwvYj48YnI+DQpzZXJ2aWNlcy54bWwgY2FuIGhhdmUgYW55IG51bWJlciBvZiB0b3AgbGV2ZWwgcGFyYW1ldGVycyBhbmQgYWxsIHRoZSBzcGVjaWZpZWQgDQpwYXJhbWV0ZXJzIHdpbGwgYmUgdHJhbnNmb3JtZWQgaW50byBzZXJ2aWNlIHByb3BlcnRpZXMgaW4gY29ycmVzcG9uZGluZyBTZXJ2aWNlRGVzY3JwdGlvbi4gDQpUaGVyZSBpcyBhIGNvbXB1bHNvcnkgcGFyYW1ldGVyIGluIGEgc2VydmljZXMueG1sIGNhbGxlZCBTZXJ2aWNlQ2xhc3Mgd2hpY2ggc3BlY2lmeSB0aGUgDQpqYXZhIGNsYXNzIHdoaWNoIHJlYWxseSBkb2VzIHRoZSBqb2IgYW5kIHRoZSBjbGFzcyB3aWxsIGJlIGxvYWRlZCBieSBNZXNzYWdlUmVjZWl2ZXIuDQo8L3A+DQo8cD4NCjxiPkhhbmRsZXI8L2I+PGJyPg0KSGFuZGxlciBlbGVtZW50IGNvbnNpc3RzIG9mIGNvbXB1bHNvcnkgYW5kIG9wdGlvbmFsIGF0dHJpYnV0ZSBhbmQgdGhlIHdheSBvZiBkZWZpbmluZyBhIGhhbmRsZXIgd2lsbCBiZSBsb29rIGxpa2UgZm9sbG93czsNCjxzb3VyY2U+PHByZT4NCiZsdDtoYW5kbGVyIG5hbWU9ImhhbmRsZXIxIiBjbGFzcz0iaGFuZGxlckNsYXNzICImZ3Q7DQogICAgICAgICAgICAmbHQ7b3JkZXIgcGhhc2U9InVzZXJwaGFzZTEiIC8mZ3Q7DQogJmx0Oy9oYW5kbGVyJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQoNCjxiPjxpPkNvbXB1bHNvcnkgYXR0cmlidXRlczwvaT48L2I+IDxicj4NCm5hbWU6IG5hbWUgb2YgdGhlIGhhbmRsZXI8YnI+DQpubGFzczogaGFuZGxlciBpbXBsZW1lbnRhdGlvbiBjbGFzczxicj4NCnBoYXNlOiBuYW1lIG9mIHRoZSBwaGFzZSB0aGF0IHRoZSBoYW5kbGVyIHNob3VsZCBzdGF5IGluIHRoZSBleGVjdXRpb24gY2hhaW4NCjxicj48YnI+DQo8aT48Yj5PcHRpb25hbCBhdHRyaWJ1dGVzIDo8L2I+PC9pPjxicj4NCnBoYXNlTGFzdDogdG8gaW5kaWNhdGUgdGhlIGhhbmRsZXIgaXMgbGFzdCBoYW5kbGVyIG9mIHRoZSBwaGFzZTxicj4NCnBoYXNlRmlyc3Q6IHRvIGluZGljYXRlIHRoZSBoYW5kbGVyIGlzIGZpcnN0IGhhbmRsZXIgb2YgdGhlIHBoYXNlLjxicj4NCmJlZm9yZSA6IHRoZSBoYW5kbGVyIHNob3VsZCBiZSBpbnZva2VkIGJlZm9yZSB0aGUgaGFuZGxlciBzcGVjaWZpZWQgYnkgYmVmb3JlIGhhbmRsZXI8YnI+DQphZnRlcjogIHRoZSBoYW5kbGVyIHNob3VsZCBiZSBpbnZva2VkIGFmdGVyIHRoZSBoYW5kbGVyIHNwZWNpZmllZCBieSBhZnRlciBoYW5kbGVyPGJyPg0KPC9wPg0KPHA+DQo8Yj5PcGVyYXRpb25zPC9iPjxicj4NCkFsbCB0aGUgb3BlcmF0aW9ucyB5b3UgYXJlIGdvaW5nIHRvIGV4cG9zZWJ5IHRoZSBzZXJ2aWNlIGhhcyB0byBiZSBpbmRpY2F0ZWQgaW4gdGhlIHNlcnZpY2VzLnhtbCBhbmQgdGhlIGNvcnJlY3Qgd2F5IG9mIHNwZWNpZnlpbmcgdGhhdCBzaG91bGQgYmUgYXMgZm9sbG93czoNCiA8c291cmNlPjxwcmU+DQogICAgJmx0O29wZXJhdGlvbiBuYW1lPSJlY2hvU3RyaW5nIiZndDsNCiAgICAgICAgJmx0O21vZHVsZSByZWY9IiBhIG1vZHVsZSBuYW1lICIvJmd0Ow0KICAgICAgICAmbHQ7bWVzc2FnZVJlY2VpdmVyIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJlY2VpdmVycy5SYXdYTUxJTk91dE1lc3NhZ2VSZWNlaXZlciIvJmd0Ow0KICAgICZsdDsvb3BlcmF0aW9uJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQpPbmx5IGNvbXB1bHNvcnkgYXR0cmlidXRlIGhlcmUgaXMgbmFtZSwgd2hpY2ggcmVwcmVzZW50IHRoZSBvcGVyYXRpb24gbmFtZSB0aGF0IGlzIGdvaW5nIHRvIGJlIGV4cG9zZWQuIEFueSBvcGVyYXRpb24gY2FuIGNvbnRhaW5zIG1vZHVsZSByZWZlcmVuY2VzLCBhbnkgbnVtYmVyIG9mIHBhcmFtZXRlcnMuIFRoZSBtb3N0IGludGVyZXN0aW5nIGlzIHRoYXQgb25lIGNhbiByZWdpc3RlciBjdXN0b20gbWVzc2FnZSByZWNlaXZlciBwZXIgb3BlcmF0aW9uLCB0aGVuIHRoZSByZWdpc3RlcmVkIG1lc3NhZ2UgcmVjZWl2ZXIgd2lsbCBiZSB0aGUgbWVzc2FnZSByZWNlaXZlciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uLiBJZiBvbmUgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbWVzc2FnZSByZWNlaXZlciB0aGVuIHRoZSBkZWZhdWx0IG1lc3NhZ2UgcmVjZWl2ZXIgd2lsbCBkbyB0aGUgam9iLiANCjwvcD4NCjxicj4NCg0KPGZvbnQgY29sb3I9ImJsdWUiPjxiPk1vZHVsZSBDb25maWd1cmF0aW9uPC9iPjwvZm9udD4NCjxsaT48YSBuYW1lPSJtb2R1bGUiPjwvYT5Xcml0aW5nIG1vZHVsZS54bWw8L2xpPg0KPHA+DQpUaGUgZGVzY3JpcHRpb24gb2YgbW9kdWxlIGlzIHNwZWNpZmllZCB1c2luZyBtb2R1bGUueG1sLCBlYWNoIG1vZHVsZSBhcmNoaXZlIGZpbGUgbmVlZCB0byBoYXZlIG1vZHVsZS54bWwgaW4gb3JkZXIgdG8gYmUgYSB2YWxpZCBtb2R1bGUuIEFuZCB3aGljaCBoYXMgdG8gYmUgYXZhaWxhYmxlIGluIE1FVEEtSU5GIGRpcmVjdG9yeSBvZiB0aGUgYXJjaGl2ZSBmaWxlLiANCjxicj4NCkEgdmVyeSBzaW1wbGUgbW9kdWxlLnhtbCBpcyBzaG93biBiZWxvdzoNCjxzb3VyY2U+PHByZT4NCiZsdDttb2R1bGUgbmFtZT0ibW9kdWxlMSIgY2xhc3M9Im9yZy5hcGFjaGUubW9kdWxlLk1vZHVsZTFJbXBsIiZndDsNCiAgICAmbHQ7aW5mbG93Jmd0Ow0KICAgICAgICCFhYWFhYWFhS4NCiAgICAmbHQ7L2luZmxvdyZndDsNCiAgICAmbHQ7b3V0ZmxvdyZndDsNCiAgICAgICCFhYWFhYWFhYUNCiAgICAmbHQ7L291dGZsb3cmZ3Q7DQoNCiAgICAmbHQ7T3V0ZmF1bHRmbG93Jmd0Ow0KICAgICAgIIWFhYWFhYWFhS4uDQogICAgJmx0Oy9PdXRmYXVsdGZsb3cmZ3Q7DQoNCiAgICAmbHQ7SU5mYXVsdGZsb3cmZ3Q7DQogICAgICCFhYWFhYWFhYWFLg0KICAgICZsdDsvSU5mYXVsdGZsb3cmZ3Q7DQoNCiAgICAmbHQ7b3BlcmF0aW9uIG5hbWU9ImNyZWF0U2VxIiBtZXA9Ik1FUF9VUklfSU5fT1VUIiZndDsNCiAgICAgICAgJmx0O21lc3NhZ2VSZWNlaXZlciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5yZWNlaXZlcnMuUmF3WE1MSU5PdXRNZXNzYWdlUmVjZWl2ZXIiLyZndDsNCiAgICAgICAgJmx0O3BhcmFtZXRlciBuYW1lPSJwYXJhMSIgbG9ja2VkPSJ4c2Q6dHJ1ZSImZ3Q7MTAmbHQ7L3BhcmFtZXRlciZndDsNCiAgICAmbHQ7L29wZXJhdGlvbiZndDsNCiZsdDsvbW9kdWxlJmd0Ow0KPC9zb3VyY2U+PC9wcmU+DQoNCm5hbWU6IFRoaXMgaXMgYSBjb21wdWxzb3J5IGF0dHJpYnV0ZSBhbmQgd2hpY2ggaW5kaWNhdGVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUNCjxicj4NCmNsYXNzOiBUaGlzIGlzIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSB3aGljaCBpbmRpY2F0ZSBtb2R1bGUgaW1wbGVtZW50YXRpb24gY2xhc3MsIGEgbW9kdWxlIG1heSBvciBtYXkgbm90IGNvbnRhaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uIGNsYXNzIHNpbmNlIHRoZSBtb2R1bGUgY2FuIGFsc28gYmUgYSBjb2xsZWN0aW9uIG9mIGhhbmRsZXJzLiBJZiBhIG1vZHVsZSBjb250YWlucyBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBvcmcuYXBhY2hlLmF4aXMyLm1vZHVsZXMuTW9kdWxlIGludGVmYWNlIHdoZXJlIGF0IHRoZSBkZXBsb3ltZW50IHRpbWUgaXRzIGluaXQoKTsgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiANCjwvcD4NCg0KPHA+DQo8Yj5wYXJhbWV0ZXI6PC9iPg0KTW9kdWxlIGNhbiBjb250YWlucyBhbnkgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYW5kIGFsbCB0aGUgbGlzdGVkIHBhcmFtZXRlcnMgaW4gdGhlIG1vZHVsZS54bWwgd2lsbCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGNvcnJlc3BvbmRpbmcgTW9kdWxlRGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZS4gDQo8L3ANCjxwPg0KPGI+RmxvdyA6PC9iPjxicj4NCkl0IGlzIHBvc3NpYmxlIHRvIGFkZCBoYW5kbGVycyBpbnRvIGEgZmxvdyBkaXJlY3RseSBmb3JtIHNlcnZpY2VzLnhtbCByYXRoZXIgdGhhbiANCmVuZ2FnaW5nIGEgbW9kdWxlcyBhbmQgdGhlIHdheSBvZiBkb2luZyB0aGF0IGlzIHRocm91Z2ggZmxvdyBlbGVtZW50cy4gDQpJdCBpcyBwb3NzaWJsZSB0byBhZGQgYW55IG51bWJlciBvZiBoYW5kbGVycyBpbnRvIGEgZmxvdyBhbmQgdGhvc2UgaGFuZGxlcnMgDQp3aWxsIGJlIGF2YWlsYWJsZSBpbiBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbnMgZmxvd3MgaW4gdGhlIHNlcnZpY2UgDQooaW5mbG93IGNvbnNpc3Qgb2YgdHdvIHBhcnRzLCBvbmUgcGFydCBpcyB1cCB0byBwb3N0IGRpc3BhdGNoIHBoYXNlIGFuZCBvdGhlciANCnBhcnQgaXMgY29uc2lzdGluZyBvZiBvcGVyYXRpb24gaGFuZGxlcnMpICANCjxicj4NClRoZXJlIGFyZSBmb3VyIHR5cGVzIG9mIHZhbGlkIGZsb3dzIHRoYXQgY2FuIGJlIGF2YWlsYWJsZSBpbiBzZXJ2aWNlcy54bWwsDQogYW5kIHRoZSBhZGRpbmcgdGhlIGhhbmRsZXMgaW50byB0aGVtIGNhbiBiZSBkb25lIGJ5IGZvbGxvd2luZyB0aGUgYWJvdmUgcHJvY2VkdXJlLiANCjxicj4NClZhbGlkIGZsb3dzOg0KPHVsPg0KPGxpPkluZmxvdzwvbGk+DQo8bGk+b3V0ZmxvdzwvbGk+DQo8bGk+SU5mYXVsdGZsb3c8L2xpPg0KPGxpPk91dGZhdWx0ZmxvdzwvbGk+DQo8L3VsPg0KPC9wPg0KDQo8cD4NCjxiPm9wZXJhdGlvbnM8L2I+DQpJZiBhIG1vZHVsZSB3YW50cyB0byBhZGQgYW4gb3BlcmF0aW9uIHdoZW4gaXQgaXMgZW5nYWdlZCBpbnRvIGEgc2VydmljZSBpdCBjYW4gYmUgZG9uZSBieSBhZGRpbmcgb3BlcmF0aW9uIHRhZyBpbiBtb2R1bGUueG1sIGFuZCB0aGUgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIG9wZXJhdGlvbiBpcyBzYW1lIGFzIG9wZXJhdGlvbiBpbiBzZXJ2aWNlcy54bWwuICANCg0KPC9wPg0KPGJyPg0KDQoNCjwvYm9keT4NCjwvaHRtbD4NCg==