DQpUcmFjZWFseXplciBUcmFjZSBSZWNvcmRlciBMaWJyYXJ5DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpQZXJjZXBpbyBBQg0Kd3d3LnBlcmNlcGlvLmNvbQ0KDQpUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgYSBnZW5lcmljIHRyYWNlIHJlY29yZGVyIGxpYnJhcnkgZm9yIFRyYWNlYWx5emVyIHYyLjcuIA0KDQpGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVwbG9hZCB0aGUgdHJhY2UgZGF0YSBmcm9tIHlvdXIgdGFyZ2V0IHN5c3RlbSBSQU0gdG8gDQpUcmFjZWFseXplciwgc2VlIHRoZSBVc2VyIE1hbnVhbCAoZS5nLiwgaHR0cDovL3BlcmNlcGlvLmNvbS9kb2NzL0ZyZWVSVE9TL21hbnVhbC9SZWNvcmRlci5odG1sKQ0KDQpGaWxlcyBpbmNsdWRlZA0KLS0tLS0tLS0tLS0tLS0NCi0gdHJjQ29uZmlnLmggICAgICAgICAgICAgCQktIFRoZSByZWNvcmRlcidzIGNvbmZpZ3VyYXRpb24gZmlsZSwgc2V0IHlvdXIgcmVjb3JkZXIgY29uZmlndXJhdGlvbiBoZXJlIQ0KLSB0cmNVc2VyLmMvLmggICAgICAgICAgICAJCS0gVGhlIG1haW4gQVBJIHRvd2FyZHMgdGhlIGFwcGxpY2F0aW9uICh0cmNVc2VyLmggaW4gdGhlIG9ubHkgaW5jbHVkZSBuZWNlc3NhcnkpLg0KLSB0cmNLZXJuZWwuYy8uaCAgICAgICAgICAJCS0gSW50ZXJuYWwgcm91dGluZXMgZm9yIHN0b3Jpbmcga2VybmVsIGV2ZW50cy4NCi0gdHJjQmFzZS5jLy5oICAgICAgICAgICAgCQktIEludGVybmFsIHJvdXRpbmVzIGZvciBtYW5pcHVsYXRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgY2FsY3VsYXRpbmcgdGltZXN0YW1wcy4NCi0gdHJjSGFyZHdhcmVQb3J0LmMvLmggICAgCQktIFRoZSBoYXJkd2FyZSBpbnRlcmZhY2UsIGVzcGVjaWFsbHkgZm9yIHRpbWVzdGFtcGluZy4NCi0gdHJjS2VybmVsUG9ydC5oICAJCQkJLSBXcmFwcGVyIGZvciB0cmNLZXJuZWxQb3J0RnJlZVJUT1MuaCAoZm9yIHBvcnRhYmlsaXR5KS4NCi0gdHJjS2VybmVsUG9ydEZyZWVSVE9TLmMvLmggIAktIEZyZWVSVE9TLXNwZWNpZmljIHRyYWNlIG1hY3JvcyBhbmQgaGVscGVyIGZ1bmN0aW9ucy4NCi0gdHJjS2VybmVsSG9va3MuaCAgICAgICAgCQktIEdlbmVyaWMgdHJhY2UgbWFjcm9zIChPUyBpbmRlcGVuZGVudCksIHVzZWQgYnkgdHJjS2VybmVsUG9ydEZyZWVSVE9TLg0KLSB0cmNUeXBlcy5oICAgICAgICAgICAgICAJCS0gVHlwZSBkZWZpbml0aW9ucyB1c2VkLg0KDQpIYXJkd2FyZSBUaW1lciBQb3J0cw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRoaXMgcmVsZWFzZSBjb250YWlucyBoYXJkd2FyZSB0aW1lciBwb3J0cyBmb3IgdGhlIGZvbGxvd2luZyBoYXJkd2FyZSBhcmNoaXRlY3R1cmVzOg0KDQotIEFSTSBDb3J0ZXggTTMvTTQvTTAvTTArIChhbGwgYnJhbmRzLCBzdWNoIGFzIEF0bWVsIFNBTTN4L1NBTTR4L1NBTSBEMjAsIE5YUCAxN3h4LCAxOHh4LCA0M3h4LCBTVE0zMiwgRnJlZXNjYWxlIEtpbmV0aXMsIC4uLikNCi0gQXRtZWwgQVQ5MVNBTTd4DQotIEF0bWVsIEFUMzJVQzMgKEFWUjMyKQ0KLSBSZW5lc2FzIFJYNjAwIChlLmcuLCBSWDYyTikNCi0gTWljcm9jaGlwIGRzUElDL1BJQzI0DQotIE1pY3JvY2hpcCBQSUMzMk1YDQotIE1pY3JvY2hpcCBQSUMzMk1aDQotIE5YUCBMUEMyMTA2DQotIFRleGFzIEluc3RydW1lbnRzIFRNUzU3MCAoQ29ydGV4LVI0KQ0KLSBUZXhhcyBJbnN0cnVtZW50cyBNU1A0MzANCi0gWGlsaW54IFBvd2VyUEMgNDA1DQotIFhpbGlueCBQb3dlclBDIDQ0MA0KLSBYaWxpbnggTWljcm9ibGF6ZQ0KLSBBUk0gQ29ydGV4LUE5DQoNClRoZXNlIGFyZSBkZWZpbmVkIGluIHRyY0hhcmR3YXJlUG9ydC5oLiBTb21lIG9mIHRoZXNlIGFyZSAidW5vZmZpY2lhbCIgcG9ydHMsIHByb3ZpZGVkIGJ5IGV4dGVybmFsIGNvbnRyaWJ1dG9ycy4NCkJ5IHVub2ZmaWNpYWwsIGl0IG1lYW5zIHRoYXQgdGhleSBhcmUgbm90IHlldCB2ZXJpZmllZCBieSBQZXJjZXBpbyBBQi4gUGxlYXNlIHJlZmVyIHRvIHRyY0hhcmR3YXJlUG9ydC5oIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbi4gDQpJZiB5b3UgdXNlIGFuIHVub2ZmaWNpYWwgcG9ydCBhbmQgYmVsaWV2ZSBpdCBpcyBpbmNvcnJlY3QsIHBsZWFzZSBsZXQgdXMga25vdyEgKHN1cHBvcnRAcGVyY2VwaW8uY29tKQ0KDQpJbiBjYXNlIHlvdXIgTUNVIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGRpcmVjdGx5LCBkZXZlbG9waW5nIGEgbmV3IHBvcnQgaXMgcXVpdGUgZWFzeSwganVzdCBhIG1hdHRlciBvZiBkZWZpbmluZyBhIGZldyBtYWNyb3MNCmFjY29yZGluZyB0byB5b3VyIHNwZWNpZmljIE1DVS4gU2VlIHRyY0hhcmR3YXJlUG9ydC5oIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLg0KDQpJbiBjYXNlIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHN1cHBvcnRAcGVyY2VwaW8uY29tDQoNClBlcmNlcGlvIEFCDQpL9nBtYW5nYXRhbiAxQQ0KNzIyMTUgVuRzdGVy5XMNClN3ZWRlbg0KDQp3d3cucGVyY2VwaW8uY29t