TW9ja0Z0cFNlcnZlciBDaGFuZ2UgTG9nDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAyLjMgKDA1IEp1biAyMDExKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEZFQVRVUkUgIzI5OTY3Mzk6IFVzZSBhIGR5bmFtaWNhbGx5IGNob3NlbiBmcmVlIHBvcnQgbnVtYmVyICgiZXBoZW1lcmFsIilmb3IgdGhlIHNlcnZlciBjb250cm9sIHBvcnQNCiAgaWYgeW91IHNwZWNpZnkgMCBmb3IgdGhlIHNlcnZlckNvbnRyb2xQb3J0IHByb3BlcnR5IG9mIEZha2VGdHBTZXJ2ZXIgb3IgU3R1YkZ0cFNlcnZlci4gVGhlbiBjYWxsDQogIGdldFNlcnZlckNvbnRyb2xQb3J0KCkgQUZURVIgc3RhcnQoKSBoYXMgYmVlbiBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgYmVpbmcgdXNlZC4NCiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSBydW5uaW5nIG9uIGEgc3lzdGVtIHdoZXJlIHRoZSBkZWZhdWx0IHBvcnQgKDIxKSBpcyBhbHJlYWR5IGluIHVzZSBvciBjYW5ub3QNCiAgYmUgYm91bmQgZnJvbSBhIHVzZXIgcHJvY2VzcyAoc3VjaCBhcyBVbml4KS4NCi0gRkVBVFVSRSAjMzMwNDg0OTogQWRkIGEgbmV3IHJlYWREYXRhKGludCBudW1CeXRlcykgdG8gU2Vzc2lvbg0KLSBCVUcgIzMxMDMxMzI6IHNodXR0aW5nIGRvd24gdGFrZXMgdG9vIGxvbmcuDQogDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAyLjIgKDIzIE1hciAyMDEwKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEZha2VGdHBTZXJ2ZXI6IFN1cHBvcnQgcmVuYW1pbmcgb2YgZGlyZWN0b3JpZXMuDQogICAgKiBCVUcgRklYOiAjMjgyMzUxOSAiVGhlIFJuZnJDb21tYW5kSGFuZGxlciBpcyBjdXJyZW50bHkgc2V0IHRvIG9ubHkgc3VwcG9ydCByZW5hbWluZyBvZiBmaWxlcyI6IGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwNjUzMyZhaWQ9MjgyMzUxOSZncm91cF9pZD0yMDg2NDcuDQogICAgKiBDaGFuZ2UgZmFrZSBSTlRPIGFuZCBSTkZSIENvbW1hbmRIYW5kbGVycyB0byBhbGxvdyByZW5hbWluZyBkaXJlY3Rvcmllcy4NCi0gQlVHIEZJWDogIzI4MjgzNjI6ICJVbml0IHRlc3RzIHVzaW5nIEZha2VGdHBTZXJ2ZXIgYXJlIHNsb3ciIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwNjUzMyZhaWQ9MjgyODM2MiZncm91cF9pZD0yMDg2NDcuIERlZmF1bHRTZXNzaW9uLnJlYWRDb21tYW5kKCkuDQogICAgKiBSZWR1Y2UgZGVmYXVsdCBzb2NrZXQgcmVhZCBpbnRlcnZhbCB0aW1lIHRvIDIwbXMuDQotIEJVRyBGSVg6ICMyOTUzMzkyOiAiQWJzdHJhY3RGdHBTZXJ2ZXIgd2FpdHMgZW5kbGVzcyBpZiBiaW5kaW5nIHRvIHBvcnQgZmFpbHMiIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwNjUzMyZhaWQ9Mjk1MzM5MiZncm91cF9pZD0yMDg2NDcuDQotIEZha2VGdHBTZXJ2ZXIgKEFic3RyYWN0RmFrZUZpbGVTeXN0ZW0pOiBDaGFuZ2UgcmVuYW1lKCkgdG8gZmFpbCBpZiB0aGUgVE8gZmlsZSBhbHJlYWR5IGV4aXN0cy4NCi0gQWRkIHNhbXBsZSBkaXJlY3RvcnkgbGlzdGluZyhzKSB0byBvbmxpbmUgZG9jcyBmb3IgU3R1YkZ0cFNlcnZlciBMaXN0Q29tbWFuZEhhbmRsZXIuIFVwZGF0ZSBvbmxpbmUgZG9jcy9qYXZhZG9jIGRlc2NyaWJpbmcgdGhhdCBtdWx0aXBsZSBkaXJlY3RvcnkgZW50cmllcyBpbiBhIGZpbGUgbGlzdGluZyBjYW4gYmUgc2ltdWxhdGVkLg0KLSBQYXR0ZXJuVXRpbDogU3VwcG9ydCBwbHVzIHNpZ24gKCcrJykgd2l0aGluIHdpbGRjYXJkIHN0cmluZ3MuIFNlZSBjb252ZXJ0U3RyaW5nV2l0aFdpbGRjYXJkc1RvUmVnZXgoKS4NCi0gVEVTVFM6IFJlbmFtZSBBYnN0cmFjdFRlc3QgdG8gQWJzdHJhY3RUZXN0Q2FzZSBhbmQgQWJzdHJhY3RHcm9vdnlUZXN0IHRvIEFic3RyYWN0R3Jvb3Z5VGVzdENhc2UuDQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMSAoMTYgSnVuIDIwMDkpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQWRkZWQgc3VwcG9ydCBmb3IgSVB2NiAoRVBSVCBhbmQgRVBTViBjb21tYW5kcykgdG8gRmFrZUZ0cFNlcnZlciBhbmQgU3R1YkZ0cFNlcnZlci4gVGhhbmtzIHRvIEZlcm5hbmRvIE1hcnRpbmV6IGZvciB0ZXN0aW5nLg0KLSBCVUcgRklYOiAjMjY5Njg5ODogk1dpbmRvd3NGYWtlRmlsZXN5c3RlbSBEaXJlY3RvcnlFbnRyeSBjYXNlIHNlbnNpdGl2aXR5lCAoaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYXRpZD0xMDA2NTMzJmFpZD0yNjk2ODk4Jmdyb3VwX2lkPTIwODY0NykuDQotIEJVRyBGSVg6ICMyNzk3OTgwOiCTVW5peEZha2VGaWxlU3lzdGVtIElzVmFsaWROYW1lIFJlZ2V4IGluY29ycmVjdJQgKGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwNjUzMyZhaWQ9Mjc5Nzk4MCZncm91cF9pZD0yMDg2NDcpLg0KLSBBZGQgZ2V0U2VydmVyQ29udHJvbFBvcnQoKSB0byBBYnN0cmFjdEZ0cFNlcnZlci4NCi0gQ3JlYXRlIEhvc3RBbmRQb3J0IGNsYXNzLiBSZWZhY3RvciBib3RoIFBvcnRDb21tYW5kSGFuZGxlcihzKSBhbmQgdGhlIFBvcnRQYXJzZXIgY2xhc3NlcyB0byB1c2UgSG9zdEFuZFBvcnQuDQotIFRFU1RTOiBDb252ZXJ0IFBvcnRQYXJzZXJUZXN0IHRvIEdyb292eS4NCg0KDQpDaGFuZ2VzIGluIHZlcnNpb24gMi4wLjIgKDA5IE1hciAyMDA5KQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEJVRyBGSVg6ICMyNjU0NTc3OiAnbW9udGgnIGluIFVuaXhEaXJlY3RvcnlMaXN0aW5nRm9ybWF0dGVyIGlzIExvY2FsZSBzcGVjaWZpYy4gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyL2luZGV4LnBocD9mdW5jPWRldGFpbCZhaWQ9MjY1NDU3NyZncm91cF9pZD0yMDg2NDcmYXRpZD0xMDA2NTMzLg0KLSBCVUcgRklYOiAjMjY1MzYyNjogQ2Fubm90IHN0YXJ0KCkgc2VydmVyIGFmdGVyIGNhbGxpbmcgc3RvcCgpLiBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyMi9pbmRleC5waHA/ZnVuYz1kZXRhaWwmYWlkPTI2NTM2MjYmZ3JvdXBfaWQ9MjA4NjQ3JmF0aWQ9MTAwNjUzMy4NCg0KDQpDaGFuZ2VzIGluIHZlcnNpb24gMi4wLjEgKDA5IEZlYiAyMDA5KQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEJVRyBGSVg6ICMyNTQzMTkzIJMiY2QgLi4iIGFuZCAicHdkIiBkb24ndCB3b3JrIHByb3Blcmx5IHRvZ2V0aGVylCAoaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlcjIvP2Z1bmM9ZGV0YWlsJmFpZD0yNTQzMTkzJmdyb3VwX2lkPTIwODY0NyZhdGlkPTEwMDY1MzMpLg0KLSBCVUcgRklYOiAjMjU0MDU0OCCTTWlzc2luZyBuZXcgbGluZSBvbiBkaXJlY3RvcnkgbGlzdGluZ5QgKGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIyLz9mdW5jPWRldGFpbCZhaWQ9MjU0MDU0OCZncm91cF9pZD0yMDg2NDcmYXRpZD0xMDA2NTMzKS4NCi0gQlVHIEZJWDogIzI1NDAzNjYgk0ZpbGVFbnRyeS5zZXRDb250ZW50cyggYnl0ZSBbXSBjb250ZW50cyApIGNoYW5nZSB0aGUgY29udGVudJQgKGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIyLz9mdW5jPWRldGFpbCZhaWQ9MjU0MDM2NiZncm91cF9pZD0yMDg2NDcmYXRpZD0xMDA2NTMzKS4NCiAtIEFic3RyYWN0RnRwU2VydmVyOiBVc2UgZW50cnlTZXQoKSB0byBpdGVyYXRlIHRocm91Z2ggc2Vzc2lvbnMgKEZyb20gUmlqayB2YW4gSGFhZnRlbikuDQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMCAoMDMgSmFuIDIwMDkpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQlVHIEZJWDogIzI0NjI3OTQgZmlsZXN5c3RlbS5wYXRoRG9lc05vdEV4aXN0IGtleSBpcyBtaXNzaW5nIGZyb20gdGhlIFJlcGx5VGV4dCByZXNvdXJjZSBidW5kbGUuIFNlZSBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyMi8/ZnVuYz1kZXRhaWwmYWlkPTI0NjI3OTQmZ3JvdXBfaWQ9MjA4NjQ3JmF0aWQ9MTAwNjUzMw0KLSBCVUcgRklYOiAjMjQ2Mjk3MyBGaWxlRW50cnkuY2xvbmVXaXRoTmV3UGF0aCBkb2Vzbid0IGNsb25lIG91dCBmaWVsZC4gU2VlIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvaW5kZXgucGhwP2Z1bmM9ZGV0YWlsJmFpZD0yNDYyOTczJmdyb3VwX2lkPTIwODY0NyZhdGlkPTEwMDY1MzMNCi0gQWRkIG5vdGUgdG8gb25saW5lIGRvYyBhYm91dCByZXF1aXJpbmcgTG9nNEogY29uZmlndXJhdGlvbiBmaWxlIGlmIHlvdSB3YW50IHRvIHNlZSBsb2cgb3V0cHV0Lg0KDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAyLjAtcmMzICgxNCBEZWMgMjAwOCkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBCVUcgRklYOiBDbGFzc0Nhc3RFeGNlcHRpb24gaW4gQWJzdHJhY3RGdHBTZXJ2ZXIgZHVyaW5nIHNlcnZlciBjbGVhbnVwLg0KLSBSZW9yZ2FuaXplIHNhbXBsZSBjb2RlIGFuZCBpbmNsdWRlIGluIG9ubGluZSBkb2MuDQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMC1yYzIgKDEyIERlYyAyMDA4KQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEJVRyBGSVg6IEFic3RyYWN0RnRwU2VydmVyOiBGaXggYnVnIHdoZW4gaXRlcmF0aW5nIHRocm91Z2ggc2Vzc2lvbnMuDQotIFtCUkVBS0lORyBDSEFOR0VdIE1vdmUgQ29ubmVjdENvbW1hbmRIYW5kbGVyIGludG8gY29yZSBwYWNrYWdlLg0KLSBbQlJFQUtJTkcgQ0hBTkdFXSBVbmlmeSBGYWtlIGFuZCBTdHViIENvbW1hbmRIYW5kbGVycy4gQ2hhbmdlIFNlcnZlckNvbmZpZ3VyYXRpb24gdG8gcmVtb3ZlIGdldFJlcGx5VGV4dEJ1bmRsZSgpOyBtYWtlIEFic3RyYWN0RmFrZUNvbW1hbmRIYW5kbGVyIGltcGxlbWVudCBSZXBseVRleHRCdW5kbGVBd2FyZSBpbnN0ZWFkLiBDaGFuZ2UgRmFrZUZ0cFNlcnZlciB0byBjaGVjayBmb3IgUmVwbHlUZXh0QnVuZGxlQXdhcmUgYW5kIHNldCByZXBseVRleHRCdW5kbGUuIFB1bGwgY29tbW9uIGZyb20gc3R1Yi9mYWtlIGludG8gQWJzdHJhY3RDb21tYW5kSGFuZGxlci4NCi0gW0JSRUFLSU5HIENIQU5HRV0gUmVuYW1lIEFic3RyYWN0Q29tbWFuZEhhbmRsZXIgdG8gQWJzdHJhY3RUcmFja2luZ0NvbW1hbmRIYW5kbGVyLg0KLSBDcmVhdGUgQWJzdHJhY3RTdGF0aWNSZXBseUNvbW1hbmRIYW5kbGVyLCBhbmQgbWFrZSBib3RoIEFic3RyYWN0U3R1YkNvbW1hbmRIYW5kbGVyIGFuZCBTdGF0aWNSZXBseUNvbW1hbmRIYW5kbGVyIHN1YmNsYXNzZXMuDQotIENyZWF0ZSBuZXcgVW5yZWNvZ25pemVkQ29tbWFuZEhhbmRsZXIsIGFuZCB1c2UgdG8gcmV0dXJuIDUwMiByZXBseSBmcm9tIEZha2VGdHBTZXJ2ZXIgYW5kIFN0dWJGdHBTZXJ2ZXIgd2hlbiBhIHJlcXVlc3RlZCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQuDQotIEFkZCBzdXBwb3J0IGZvciBTVEFUIGNvbW1hbmQ7IEFkZCBzeXN0ZW1TdGF0dXMgcHJvcGVydHkgdG8gRmFrZUZ0cFNlcnZlci4NCi0gQWRkIHN1cHBvcnQgZm9yIFNNTlQgY29tbWFuZCB0byBGYWtlRnRwU2VydmVyOw0KLSBBYnN0cmFjdEZ0cFNlcnZlcjogQWRkIGNyZWF0ZVNlc3Npb24oKSBtZXRob2QuIE1ha2Ugc29tZSBhdHRyaWJ1dGVzIHByb3RlY3RlZC4NCi0gU3R1YkZ0cFNlcnZlcjogSW50cm9kdWNlIEFic3RyYWN0U3RvckNvbW1hbmRIYW5kbGVyLiBSZW1vdmUgZmluYWwgZnJvbSBzdHViIENvbW1hbmRIYW5kbGVyIGNsYXNzZXMuDQotIENsZWFudXAgY29kZSBhbmQgamF2YWRvYw0KLSBET0NTOglBZGQgk1JlcXVpcmVtZW50c5Qgc2VjdGlvbiB0byBtYWluIChpbmRleCkgcGFnZS4gQWxzbyCTTWF2ZW6UIHNlY3Rpb24uDQotIERPQ1M6IEFkZCAiQ29uZmlndXJpbmcgQ29tbWFuZEhhbmRsZXIgZm9yIE5ldyAoVW5zdXBwb3J0ZWQpIENvbW1hbmQiIGFuZCCTQ3JlYXRpbmcgWW91ciBPd24gQ3VzdG9tIENvbW1hbmRIYW5kbGVyIENsYXNzlCBzZWN0aW9ucyB0byBTdHViRnRwU2VydmVyIEdldHRpbmcgU3RhcnRlZCBHdWlkZS4NCi0gRE9DUzogQWRkICJDb25maWd1cmluZyBDdXN0b20gQ29tbWFuZEhhbmRsZXJzIiBzZWN0aW9uIHRvIEdldHRpbmcgU3RhcnRlZCBHdWlkZSAoRmFrZUZ0cFNlcnZlcikuDQotIFRFU1RTOiBNb3ZlIEFic3RyYWN0Q29tbWFuZEhhbmRsZXJUZXN0IGludG8gY29yZSBwYWNrYWdlLg0KLSBURVNUUzogQ3JlYXRlIHNhbXBsZSB0ZXN0IG9mIEZha2VGdHBTZXJ2ZXIgd2l0aCBTdGF0aWNSZXBseUNvbW1hbmRIYW5kbGVyIGNvbW1hbmQgaGFuZGxlcihzKS4NCi0gQ3JlYXRlIHNvdXJjZSBqYXIgZHVyaW5nIHBhY2thZ2UgYW5kIGluY2x1ZGUgd2l0aGluIGFzc2VtYmxpZXMuDQotIENoYW5nZSAiYXNzZW1ibHkueG1sIiB0byBpbmNsdWRlICJmYWtlZnRwc2VydmVyKi54bWwiIGZpbGVzLg0KDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAyLjAtcmMxICgyMyBOb3YgMjAwOCkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTkVXIEZha2VGdHBTZXJ2ZXIuDQogIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgIm1vY2siIEZUUCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIEZha2VGdHBTZXJ2ZXIgcHJvdmlkZXMgYSBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb24NCiAgdGhhbiBTdHViRnRwU2VydmVyLiBZb3UgZGVmaW5lIGEgdmlydHVhbCBmaWxlIHN5c3RlbSwgaW5jbHVkaW5nIGRpcmVjdG9yaWVzIGFuZCBmaWxlcywgYXMgd2VsbCBhcyBhIHNldCBvZg0KICB2YWxpZCB1c2VyIGFjY291bnRzIGFuZCBjcmVkZW50aWFscy4gVGhlIEZha2VGdHBTZXJ2ZXIgdGhlbiByZXNwb25kcyB3aXRoIGFwcHJvcHJpYXRlIHJlcGxpZXMgYW5kIHJlcGx5DQogIGNvZGVzIGJhc2VkIG9uIHRoYXQgY29uZmlndXJhdGlvbi4gU2VlIG9ubGluZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KU3R1YkZ0cFNlcnZlcg0KLSBTdHViRnRwU2VydmVyOiBSZWZhY3RvcmVkIHRvIGluaGVyaXQgZnJvbSBjb21tb24gQWJzdHJhY3RGdHBTZXJ2ZXIgc3VwZXJjbGFzcy4NCi0gQ2hhbmdlIGRlZmF1bHQgb3JnLm1vY2tmdHBzZXJ2ZXIuc3R1Yi5jb21tYW5kLkNkdXBDb21tYW5kSGFuZGxlciBDRFVQIHJlcGx5IGNvZGUgZnJvbSAyNTAgdG8gMjAwLg0KLSBSZW5hbWUgUmVwbHlDb2Rlcy5TRU5EX0RBVEFfSU5JVElBTF9PSyBhbmQgU0VORF9EQVRBX0ZJTkFMX09LIHRvIFRSQU5TRkVSX0RBVEFfLi4gaW5kaWNhdGUgYmktZGlyZWN0aW9uYWxpdHkuDQotIFJlbmFtZSBDb21tYW5kLmdldFJlcXVpcmVkU3RyaW5nKGludCkgdG8gZ2V0UmVxdWlyZWRQYXJhbWV0ZXIoaW50KS4NCi0gQ2hhbmdlIFN0dWJGdHBTZXJ2ZXIgQ29tbWFuZEhhbmRsZXJzIHRvIHJlcGx5IHdpdGggNTAxIGlmIHJlcXVpcmVkIGNvbW1hbmQgcGFyYW1ldGVycyBhcmUgbWlzc2luZy4gQ2hhbmdlZCBBYnN0cmFjdENvbW1hbmRIYW5kbGVyIGFuZCBBYnN0cmFjdENvbW1hbmRIYW5kbGVyVGVzdC4NCi0gUmVmYWN0b3IgKFN0dWIpUG9ydENvbW1hbmRIYW5kbGVyIC0gcHVsbCBvdXQgY29tbW9uIGxvZ2ljIGludG8gUG9ydFBhcnNlciB1dGlsIGNsYXNzLg0KDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAxLjIuNCAoMDEgU2VwIDIwMDgpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQlVHIEZJWDogU3R1YkZ0cFNlcnZlcjogT25seSBleGVjdXRlIHNlcnZlclNvY2tldC5jbG9zZSgpIGlmIHNlcnZlclNvY2tldCAhPSBudWxsLg0KLSBCVUcgRklYOiBUZXJtaW5hdGUgcmVwbGllcyB3aXRoIDxDUkxGPiAoXHJcbikuDQotIERPQ1M6IEZpeCBHZXR0aW5nIFN0YXJ0ZWQgR3VpZGUgY29kZSBleGFtcGxlOiBzZXRPdmVycmlkZUZpbmFsUmVwbHlDb2RlKCkgdG8gc2V0RmluYWxSZXBseUNvZGUoKS4NCi0gRE9DUzogQWRkIG5vdGUgdG8gR2V0dGluZyBTdGFydGVkIEd1aWRlIGFib3V0IGNhbGxpbmcgc2V0U2VydmVyQ29udHJvbFBvcnQoKSBpZiBvbiBVbml4IHN5c3RlbS4NCg0KDQpDaGFuZ2VzIGluIHZlcnNpb24gMS4yLjMgKDEzIEF1ZyAyMDA4KQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEJVRyBGSVg6IFRyYWNrZXIgaXRlbSAjMjA0NzM1NS4gUGFyc2UgaG9zdCBJUCBudW1iZXJzIGFzIHVuc2lnbmVkIGJ5dGVzLg0KICBTZWUgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci9pbmRleC5waHA/ZnVuYz1kZXRhaWwmYWlkPTIwNDczNTUmZ3JvdXBfaWQ9MjA4NjQ3JmF0aWQ9MTAwNjUzMw0KDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAxLjIuMiAoMjcgTWF5IDIwMDgpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQlVHIEZJWDogTW92ZSBzZXJ2ZXJUaHJlYWQuc3RhcnQoKSBpbnRvIHN5bmNocm9uaXplZCBibG9jayB0byBhdm9pZCBzZXJ2ZXIgaGFuZyBpZg0KICBzZXJ2ZXIgdGhyZWFkIHJ1bnMgZmFzdGVyIHRoYW4gbWFpbiB0aHJlYWQuDQogIFNlZSBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTEwMDY1MzMmYWlkPTE5MjU1OTAmZ3JvdXBfaWQ9MjA4NjQ3DQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi4xICgxMCBNYXIgMjAwOCkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBDaGFuZ2UgTWF2ZW4gUE9NIChwb20ueG1sKSB0byBlbmFibGUgc3luYy1pbmcgd2l0aCBjZW50cmFsIE1hdmVuIHJlcG9zaXRvcnkgKGliaWJsaW8pLg0KDQpDaGFuZ2VzIGluIHZlcnNpb24gMS4yICgyOSBGZWIgMjAwOCkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBCVUcgRklYOiBTdHViRnRwU2VydmVyOiBBZGQgd2FpdC9ub3RpZnkgdG8gZW5zdXJlIHRoYXQgdGhlIHNlcnZlciBzdGFydHMgdXAgYW5kIG9wZW5zIHRoZSBzZXJ2ZXIgDQogIGNvbnRyb2wgcG9ydCBiZWZvcmUgdGhlIHN0YXJ0KCkgbWV0aG9kIHJldHVybnMuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24sIHdoaWNoDQogIHNob3dzIHVwIG9uIHNvbWUgTGludXggc3lzdGVtcy4gKFRoYW5rcyB0byBBYXNtYW4gQmFqYWogZm9yIGlkZW50aWZ5aW5nIHRoZSBwcm9ibGVtIGFuZCBwcm92aWRpbmcgdGhlIGZpeCkNCi0gTW9kaWZ5IHRlc3RzIHRvIG1ha2Ugc2VydmVyIHBvcnQgY29uZmlndXJhYmxlICh0aHJvdWdoICJmdHAuc2VydmVyLnBvcnQiIHN5c3RlbSBwcm9wZXJ0eSksIGFsbG93aW5nIA0KICB0ZXN0cyB0byBydW4gb24gbm9uLVdpbmRvd3Mgc3lzdGVtcy4gDQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMSAoMjAgRmViIDIwMDgpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gU3R1YkZ0cFNlcnZlcjogQWxsb3cgY29uZmlndXJpbmcgc2VydmVyIGNvbnRyb2wgY29ubmVjdGlvbiBwb3J0IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgKDIxKS4NCi0gQWJzdHJhY3RUZXN0OiBBZGQgc29tZSB0ZXN0IGNvbnZlbmllbmNlIG1ldGhvZHMuDQoNCg0KQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMCBmaW5hbCAoMTEgRGVjIDIwMDcpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gSW1wbGVtZW50IGRlZmF1bHQgQ29tbWFuZEhhbmRsZXJzIGZvciBOTFNULCBSRUlOLCBTTU5ULCBTSVRFLCBBQk9SIGFuZCBBTExPIGNvbW1hbmRzLg0KLSBIYW5kbGUgY29tbWFuZCBuYW1lcyBpbiBhbnkgY2FzZS4NCi0gQ3dkQ29tbWFuZEhhbmRsZXI6IEZpeCBQQVRITkFNRV9LRVkgY29uc3RhbnQgdmFsdWU7IGNoYW5nZSB0byAicGF0aG5hbWUiLg0KDQoNCkNoYW5nZXMgaW4gdmVyc2lvbiAxLjAtUkMxICgxIE5vdiAyMDA3KQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJbml0aWFsIHJlbGVhc2Uu