JElkOiBSRUxFQVNFLU5PVEVTLnR4dCAxNTU1NTI0IDIwMTQtMDEtMDUgMTU6MjQ6NDlaIGJyaXR0ZXIgJAoKICAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAgIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAogICB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiAgIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAgICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCiAgIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBDb21tb25zIExhbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMy4yLjEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcwoKCklOVFJPRFVDVElPTjoKClRoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSAzLjIuMSB2ZXJzaW9uIG9mIApBcGFjaGUgQ29tbW9ucyBMYW5nLiBDb21tb25zIExhbmcgaXMgYSBzZXQgb2YgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHJldXNhYmxlIApjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG9mIHVzZSBpbiBhbnkgSmF2YSBlbnZpcm9ubWVudC4gQ29tbW9ucyBMYW5nIDMuMi4xCmF0IGxlYXN0IHJlcXVpcmVzIEphdmEgNi4wLgoKRm9yIHRoZSBhZHZpY2Ugb24gdXBncmFkaW5nIGZyb20gMi54IHRvIDMueCwgc2VlIHRoZSBmb2xsb3dpbmcgcGFnZTogCgogICAgaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9sYW5nL2FydGljbGUzXzAuaHRtbAoKQlVHIEZJWEVTCj09PT09PT09PT09CgpvIExBTkctOTM3OiAgRml4IG1pc3NpbmcgSGFtY3Jlc3QgZGVwZW5kZW5jeSBpbiBBbnQgQnVpbGQKbyBMQU5HLTk0MTogIFRlc3QgZmFpbHVyZSBpbiBMb2NhbGVVdGlsc1Rlc3Qgd2hlbiBidWlsZGluZyB3aXRoIEpESyA4Cm8gTEFORy05NDI6ICBUZXN0IGZhaWx1cmUgaW4gRmFzdERhdGVQYXJzZXJUZXN0IGFuZCBGYXN0RGF0ZUZvcm1hdF9QYXJzZXJUZXN0CiAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHdpdGggSkRLOC4gVGhhbmtzIHRvIEJydW5vIFAuIEtpbm9zaGl0YSwKICAgICAgICAgICAgIEhlbnJpIFlhbmRlbGwuCm8gTEFORy05Mzg6ICBCdWlsZCBmYWlscyB3aXRoIHRlc3QgZmFpbHVyZXMgd2hlbiBidWlsZGluZyB3aXRoIEpESyA4IAoKICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcyBmb3IgdmVyc2lvbiAzLjIKCkNPTVBBVElCSUxJVFkgV0lUSCAzLjEKPT09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIHJlbGVhc2UgaW50cm9kdWNlcyBiYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgaW4gCm9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy50aW1lLkZhc3REYXRlRm9ybWF0OgpvIE1ldGhvZCAncHJvdGVjdGVkIGphdmEudXRpbC5MaXN0IHBhcnNlUGF0dGVybigpJyBoYXMgYmVlbiByZW1vdmVkCm8gTWV0aG9kICdwcm90ZWN0ZWQgamF2YS5sYW5nLlN0cmluZyBwYXJzZVRva2VuKGphdmEubGFuZy5TdHJpbmcsIGludFtdKScgaGFzCiAgYmVlbiByZW1vdmVkCm8gTWV0aG9kICdwcm90ZWN0ZWQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRpbWUuRmFzdERhdGVGb3JtYXQkTnVtYmVyUnVsZQogIHNlbGVjdE51bWJlclJ1bGUoaW50LCBpbnQpJyBoYXMgYmVlbiByZW1vdmVkCgpUaGVzZSBjaGFuZ2VzIHdlcmUgdGhlIHJlc3VsdCBvZiBbTEFORy00NjJdLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBjaGFuZ2UgCndpbGwgbm90IGJyZWFrIGNsaWVudHMgYXMgQ2hhcmxlcyBIb250b24gcG9pbnRlZCBvdXQgb24gMjUvSmFuLzEyOgoiCiAxLiBNZXRob2RzICJGYXN0RGF0ZUZvcm1hdCROdW1iZXJSdWxlIHNlbGVjdE51bWJlclJ1bGUoaW50LCBpbnQpIiBhbmQgCiAgICAiTGlzdDxSdWxlPiBwYXJzZVBhdHRlcm4oKSIgY291bGRuJ3QgaGF2ZSBiZWVuIG92ZXJyaWRkZW4gYmVjYXVzZQogICAgTnVtYmVyUnVsZSBhbmQgUnVsZSB3ZXJlIHByaXZhdGUgdG8gRmFzdERhdGVGb3JtYXQuCiAyLiBEdWUgdG8gdGhlIGZhY3RvcnkgcGF0dGVybiB1c2VkLCBpdCdzIHVubGlrZWx5IG90aGVyIHR3byBtZXRob2RzIHdvdWxkIGhhdmUgCiAgICBiZWVuIG92ZXJyaWRkZW4uCiAzLiBUaGUgZm91ciBtZXRob2RzIGFyZSBoaWdobHkgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMuIEkgY29uc2lkZXIgaXQgYSAKICAgIG1pc3Rha2UgdGhhdCB0aGUgbWV0aG9kcyB3ZXJlIGV4cG9zZWQuCiIKRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTEFORy00NjIuCgpORVcgRkVBVFVSRVMKPT09PT09PT09PT09PT0KCm8gTEFORy05MzQ6ICBBZGQgcmVtb3ZlRmluYWxNb2RpZmllciB0byBGaWVsZFV0aWxzCm8gTEFORy04NjM6ICBNZXRob2QgcmV0dXJucyBudW1iZXIgb2YgaW5oZXJpdGFuY2UgaG9wcyBiZXR3ZWVuIHBhcmVudCBhbmQKICAgICAgICAgICAgIHN1YmNsYXNzLiBUaGFua3MgdG8gRGFuZWVsIFMuIFlhaXRza292LgpvIExBTkctNzc0OiAgQWRkZWQgaXNTdGFydGVkLCBpc1N1c3BlbmRlZCBhbmQgaXNTdG9wcGVkIHRvIFN0b3BXYXRjaC4KICAgICAgICAgICAgIFRoYW5rcyB0byBFcmhhbiBCYWdkZW1pci4KbyBMQU5HLTg0ODogIEFkZGVkIFN0cmluZ1V0aWxzLmlzQmxhbmsvaXNFbXB0eSBDaGFyU2VxdWVuY2UuLi4gbWV0aG9kcy4KICAgICAgICAgICAgIFRoYW5rcyB0byBBbGV4YW5kZXIgTXV0aG1hbm4uCm8gTEFORy05MjY6ICBBZGRlZCBBcnJheVV0aWxzLnJldmVyc2UoYXJyYXksIGZyb20sIHRvKSBtZXRob2RzLgpvIExBTkctNzk1OiAgU3RyaW5nVXRpbHMudG9TdHJpbmcoYnl0ZVtdLCBTdHJpbmcpIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGEgbmV3CiAgICAgICAgICAgICBTdHJpbmdVdGlscy50b1N0cmluZyhieXRlW10sIENoYXJTZXQpLiBUaGFua3MgdG8gQWFyb24gRGlndWxsYS4KbyBMQU5HLTg5MzogIFN0clN1YnN0aXR1dG9yIG5vdyBzdXBwb3J0cyBkZWZhdWx0IHZhbHVlcyBmb3IgdmFyaWFibGVzLgogICAgICAgICAgICAgVGhhbmtzIHRvIFdvb25zYW4gS28uCm8gTEFORy05MTM6ICBBZGRpbmcgLmdpdGlnbm9yZSB0byBjb21tb25zLWxhbmcuIFRoYW5rcyB0byBBbGxvbiBNdXJlaW5pay4KbyBMQU5HLTgzNzogIEFkZCBPYmplY3RVdGlscy50b0lkZW50aXR5U3RyaW5nIG1ldGhvZHMgdGhhdCBzdXBwb3J0CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyLCBTdHJCdWlsZGVyLCBhbmQgQXBwZW5kYWJsZS4KbyBMQU5HLTg4NjogIEFkZGVkIENoYXJTZXRVdGlscy5jb250YWluc0FueShTdHJpbmcsIFN0cmluZykuCm8gTEFORy03OTc6ICBBZGRlZCBlc2NhcGUvdW5lc2NhcGVKc29uIHRvIFN0cmluZ0VzY2FwZVV0aWxzLgpvIExBTkctODc1OiAgQWRkZWQgYXBwZW5kSWZNaXNzaW5nIGFuZCBwcmVwZW5kSWZNaXNzaW5nIG1ldGhvZHMgdG8gU3RyaW5nVXRpbHMuCm8gTEFORy04NzA6ICBBZGQgU3RyaW5nVXRpbHMuTEYgYW5kIFN0cmluZ1V0aWxzLkNSIHZhbHVlcy4KbyBMQU5HLTg3MzogIEFkZCBGaWVsZFV0aWxzIGdldEFsbEZpZWxkcygpIHRvIHJldHVybiBhbGwgdGhlIGZpZWxkcyBkZWZpbmVkIGluCiAgICAgICAgICAgICB0aGUgZ2l2ZW4gY2xhc3MgYW5kIHN1cGVyIGNsYXNzZXMuCm8gTEFORy04MzU6ICBTdHJCdWlsZGVyIHNob3VsZCBzdXBwb3J0IFN0cmluZ0J1aWxkZXIgYXMgYW4gaW5wdXQgcGFyYW1ldGVyLgpvIExBTkctODU3OiAgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpbiBDaGFyU2VxdWVuY2VUcmFuc2xhdG9yLgpvIExBTkctODU2OiAgQ29kZSByZWZhY3RvcmluZyBpbiBOdW1iZXJVdGlscy4KbyBMQU5HLTg1NTogIE51bWJlclV0aWxzI2NyZWF0ZUJpZ0ludGVnZXIgZG9lcyBub3QgYWxsb3cgZm9yIGhleCBhbmQgb2N0YWwKICAgICAgICAgICAgIG51bWJlcnMuCm8gTEFORy04NTQ6ICBOdW1iZXJVdGlscyNjcmVhdGVOdW1iZXIgLSBkb2VzIG5vdCBhbGxvdyBmb3IgaGV4IG51bWJlcnMgdG8gYmUKICAgICAgICAgICAgIGxhcmdlciB0aGFuIExvbmcuIApvIExBTkctODUzOiAgU3RyaW5nVXRpbHMgam9pbiBBUElzIGZvciBwcmltaXRpdmVzLiAKbyBMQU5HLTg0MTogIEFkZCBTdHJpbmdVdGlscyBBUEkgdG8gY2FsbCBTdHJpbmcucmVwbGFjZUFsbCBpbiBET1RBTEwgYS5rLmEuCiAgICAgICAgICAgICBzaW5nbGUtbGluZSBtb2RlLiAKbyBMQU5HLTgyNTogIENyZWF0ZSBTdHJCdWlsZGVyIEFQSXMgc2ltaWxhciB0bwogICAgICAgICAgICAgU3RyaW5nLmZvcm1hdChTdHJpbmcsIE9iamVjdC4uLikuCm8gTEFORy02NzU6ICBBZGQgVHJpcGxlIGNsYXNzICh0ZXJuYXJ5IHZlcnNpb24gb2YgUGFpcikuCm8gTEFORy00NjI6ICBGYXN0RGF0ZUZvcm1hdCBzdXBwb3J0cyBwYXJzZSBtZXRob2RzLgoKQlVHIEZJWEVTCj09PT09PT09PT09CgpvIExBTkctOTMyOiAgU3BlbGxpbmcgZml4ZXMuIFRoYW5rcyB0byBWaWxsZSBTa3l0dOQuCm8gTEFORy05Mjk6ICBPY3RhbFVuZXNjYXBlciB0cmllZCB0byBwYXJzZSBhbGwgb2YgXDI3OS4KbyBMQU5HLTkyODogIE9jdGFsVW5lc2NhcGVyIGhhZCBidWdzIHdoZW4gcGFyc2luZyBvY3RhbHMgc3RhcnRpbmcgd2l0aCBhIHplcm8uCm8gTEFORy05MDU6ICBFcXVhbHNCdWlsZGVyIHJldHVybmVkIHRydWUgd2hlbiBjb21wYXJpbmcgYXJyYXlzLCBldmVuIHdoZW4gdGhlCiAgICAgICAgICAgICBlbGVtZW50cyBhcmUgZGlmZmVyZW50LgpvIExBTkctOTE3OiAgRml4ZWQgZXhjZXB0aW9uIHdoZW4gY29tYmluaW5nIGN1c3RvbSBhbmQgY2hvaWNlIGZvcm1hdCBpbgogICAgICAgICAgICAgRXh0ZW5kZWRNZXNzYWdlRm9ybWF0LiBUaGFua3MgdG8gQXJuZSBCdXJtZWlzdGVyLgpvIExBTkctOTAyOiAgUmFuZG9tU3RyaW5nVXRpbHMucmFuZG9tIGphdmFkb2Mgd2FzIGluY29ycmVjdGx5IHByb21pc2luZyBsZXR0ZXJzCiAgICAgICAgICAgICBhbmQgbnVtYmVycyB3b3VsZCwgYXMgb3Bwb3NlZCB0byBtYXksIGFwcGVhciAgSXNzdWU6LiBUaGFua3MgdG8KICAgICAgICAgICAgIEFuZHJ6ZWogV2lubmlja2kuCm8gTEFORy05MjE6ICBCb29sZWFuVXRpbHMueG9yKGJvb2xlYW4uLi4pIHByb2R1Y2VzIHdyb25nIHJlc3VsdHMuCm8gTEFORy04OTY6ICBCb29sZWFuVXRpbHMudG9Cb29sZWFuKFN0cmluZyBzdHIpIGphdmFkb2MgaXMgbm90IHVwZGF0ZWQuIFRoYW5rcwogICAgICAgICAgICAgdG8gTWFyayBCcnlhbiBZdS4KbyBMQU5HLTg3OTogIExvY2FsZVV0aWxzIHRlc3QgZmFpbHMgd2l0aCBuZXcgTG9jYWxlICJqYV9KUF9KUF8jdS1jYS1qYXBhbmVzZSIKICAgICAgICAgICAgIG9mIEpESzcuCm8gTEFORy04MzY6ICBTdHJTdWJzdGl0dXRvciBkb2VzIG5vdCBzdXBwb3J0IFN0cmluZ0J1aWxkZXIgb3IgQ2hhclNlcXVlbmNlLgogICAgICAgICAgICAgVGhhbmtzIHRvIEFybmF1ZCBCcnVuZXQuCm8gTEFORy02OTM6ICBNZXRob2QgY3JlYXRlTnVtYmVyIGZyb20gTnVtYmVyVXRpbHMgZG9lc24ndCB3b3JrIGZvciBmbG9hdGluZwogICAgICAgICAgICAgcG9pbnQgbnVtYmVycyBvdGhlciB0aGFuIEZsb2F0ICBJc3N1ZTogTEFORy02OTMuIFRoYW5rcyB0bwogICAgICAgICAgICAgQ2FsdmluIEVjaG9scy4KbyBMQU5HLTg4NzogIEZhc3REYXRlRm9ybWF0IGRvZXMgbm90IHVzZSB0aGUgbG9jYWxlIHNwZWNpZmljIGNhY2hlIGNvcnJlY3RseS4KbyBMQU5HLTc1NDogIENsYXNzVXRpbHMuZ2V0U2hvcnROYW1lKFN0cmluZykgd2lsbCBub3cgb25seSBkbyBhIHJldmVyc2UgbG9va3VwCiAgICAgICAgICAgICBmb3IgYXJyYXkgdHlwZXMuCm8gTEFORy04ODE6ICBOdW1iZXJVdGlscy5jcmVhdGVOdW1iZXIoKSBKYXZhZG9jIHNheXMgaXQgZG9lcyBub3Qgd29yayBmb3Igb2N0YWwKICAgICAgICAgICAgIG51bWJlcnMuCm8gTEFORy04NjU6ICBMb2NhbGVVdGlscy50b0xvY2FsZSBkb2VzIG5vdCBwYXJzZSBzdHJpbmdzIHN0YXJ0aW5nIHdpdGggYW4KICAgICAgICAgICAgIHVuZGVyc2NvcmUuCm8gTEFORy04NTg6ICBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKCkgYW5kIGVzY2FwZUVjbWFTY3JpcHQoKSBkbyBub3QKICAgICAgICAgICAgIG91dHB1dCB0aGUgZXNjYXBlZCBzdXJyb2dhdGUgcGFpcnMgdGhhdCBhcmUgSmF2YSBwYXJzYWJsZS4KbyBMQU5HLTg0OTogIEZhc3REYXRlRm9ybWF0IGFuZCBGYXN0RGF0ZVByaW50ZXIgZ2VuZXJhdGVzIERhdGUgb2JqZWN0cyAKICAgICAgICAgICAgIHdhc3RlZnVsbHkuCm8gTEFORy04NDU6ICBTcGVsbGluZyBmaXhlcy4KbyBMQU5HLTg0NDogIEZpeCBleGFtcGxlcyBjb250YWluZWQgaW4gamF2YWRvYyBvZiBTdHJpbmdVdGlscy5jZW50ZXIgbWV0aG9kcy4KbyBMQU5HLTgzMjogIEZhc3REYXRlUGFyc2VyIGRvZXMgbm90IGhhbmRsZSB1bnRlcm1pbmF0ZWQgcXVvdGVzIGNvcnJlY3RseS4KbyBMQU5HLTgzMTogIEZhc3REYXRlUGFyc2VyIGRvZXMgbm90IGhhbmRsZSB3aGl0ZS1zcGFjZSBwcm9wZXJseS4KbyBMQU5HLTgzMDogIEZhc3REYXRlUGFyc2VyIGNvdWxkIHVzZSBcUSBcRSB0byBxdW90ZSByZWdleGVzLgpvIExBTkctODI4OiAgRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIG5vbi1HcmVnb3JpYW4gY2FsZW5kYXJzIHByb3Blcmx5LgpvIExBTkctODI2OiAgRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIG5vbi1BU0NJSSBkaWdpdHMgY29ycmVjdGx5LgpvIExBTkctODIyOiAgTnVtYmVyVXRpbHMjY3JlYXRlTnVtYmVyIC0gYmFkIGJlaGF2aW91ciBmb3IgbGVhZGluZyAiLS0iLgpvIExBTkctODE4OiAgRmFzdERhdGVGb3JtYXQncyAieiIgcGF0dGVybiBkb2VzIG5vdCByZXNwZWN0IHRpbWV6b25lIG9mIENhbGVuZGFyCiAgICAgICAgICAgICBpbnN0YW5jZXMgcGFzc2VkIHRvIGZvcm1hdCgpLgpvIExBTkctODE3OiAgQWRkIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TeXN0ZW1VdGlscy5JU19PU19XSU5ET1dTXzguCm8gTEFORy04MTM6ICBTdHJpbmdVdGlscy5lcXVhbHNJZ25vcmVDYXNlIGRvZXNuJ3QgY2hlY2sgc3RyaW5nIHJlZmVyZW5jZQogICAgICAgICAgICAgZXF1YWxpdHkuCm8gTEFORy04MTA6ICBTdHJpbmdVdGlscy5qb2luKCkgZW5kSW5kZXgsIGJ1Z2dlZCBmb3IgbG9vcC4KbyBMQU5HLTgwNzogIFJhbmRvbVN0cmluZ1V0aWxzIHRocm93cyBjb25mdXNpbmcgSUFFIHdoZW4gZW5kIDw9IHN0YXJ0LgpvIExBTkctODA1OiAgUmFuZG9tU3RyaW5nVXRpbHMucmFuZG9tKGNvdW50LCAwLCAwLCBmYWxzZSwgZmFsc2UsIHVuaXZlcnNlLAogICAgICAgICAgICAgcmFuZG9tKSBhbHdheXMgdGhyb3dzIGphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uCm8gTEFORy04MDI6ICBMb2NhbGVVdGlscyAtIHVubmVjZXNzYXJ5IHJlY3Vyc2l2ZSBjYWxsIGluIFN5bmNBdm9pZCBjbGFzcy4KbyBMQU5HLTgwMDogIEphdmFkb2MgYnVnIGluIERhdGVVdGlscyNjZWlsaW5nIGZvciBDYWxlbmRhciBhbmQgT2JqZWN0IHZlcnNpb25zLgpvIExBTkctNzg4OiAgU2VyaWFsaXphdGlvblV0aWxzIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHdoZW4gY2xvbmluZyAKICAgICAgICAgICAgIHByaW1pdGl2ZSBjbGFzc2VzLgpvIExBTkctNzg2OiAgU3RyaW5nVXRpbHMgZXF1YWxzKCkgcmVsaWVzIG9uIHVuZGVmaW5lZCBiZWhhdmlvci4KbyBMQU5HLTc4MzogIERvY3VtZW50YXRpb24gYnVnOiBTdHJpbmdVdGlscy5zcGxpdC4KbyBMQU5HLTc3NzogIGphciBjb250YWlucyB2ZWxvY2l0eSB0ZW1wbGF0ZSBvZiByZWxlYXNlIG5vdGVzLgpvIExBTkctNzc2OiAgVHlwZVV0aWxzVGVzdCBjb250YWlucyBpbmNvcnJlY3QgdHlwZSBhc3NpZ25hYmlsaXR5IGFzc2VydGlvbi4KbyBMQU5HLTc3NTogIFR5cGVVdGlscy5nZXRUeXBlQXJndW1lbnRzKCkgbWlzc2VzIHR5cGUgYXJndW1lbnRzIGZvcgogICAgICAgICAgICAgcGFydGlhbGx5LWFzc2lnbmVkIGNsYXNzZXMuCm8gTEFORy03NzM6ICBJbW11dGFibGVQYWlyIGRvYyBjb250YWlucyBub25zZW5zZSB0ZXh0LgpvIExBTkctNzcyOiAgQ2xhc3NVdGlscy5QQUNLQUdFX1NFUEFSQVRPUiBKYXZhZG9jIGNvbnRhaW5zIGdhcmJhZ2UgdGV4dC4KbyBMQU5HLTc2NTogIEV2ZW50TGlzdGVuZXJTdXBwb3J0LlByb3h5SW52b2NhdGlvbkhhbmRsZXIgbm8gbG9uZ2VyIGRlZmluZXMgCiAgICAgICAgICAgICBzZXJpYWxWZXJzaW9uVUlELgpvIExBTkctNzY0OiAgU3RyQnVpbGRlciBpcyBub3cgc2VyaWFsaXphYmxlLgpvIExBTkctNzYxOiAgRml4IEphdmFkb2MgQW50IHdhcm5pbmdzLgpvIExBTkctNzQ3OiAgTnVtYmVyVXRpbHMgZG9lcyBub3QgaGFuZGxlIExvbmcgSGV4IG51bWJlcnMuCm8gTEFORy03NDM6ICBKYXZhZG9jIGJ1ZyBpbiBzdGF0aWMgaW5uZXIgY2xhc3MgRGF0ZUl0ZXJhdG9yLgoKQ0hBTkdFUwo9PT09PT09PT0KCm8gTEFORy05MzE6ICBNaXNsZWFkaW5nIEphdmFkb2MgY29tbWVudCBpbiBTdHJCdWlsZGVyUmVhZGVyIGNsYXNzLiBUaGFua3MKICAgICAgICAgICAgIHRvIENocmlzdG9waCBTY2huZWVnYW5zLgpvIExBTkctOTEwOiAgU3RyaW5nVXRpbHMubm9ybWFsaXplU3BhY2Ugbm93IGhhbmRsZXMgbm9uLWJyZWFraW5nIHNwYWNlcwogICAgICAgICAgICAgKFVuaWNvZGUgMDBBMCkuIFRoYW5rcyB0byBUaW11ciBZYXJvc2guCm8gTEFORy04MDQ6ICBSZWR1bmRhbnQgY2hlY2sgZm9yIHplcm8gaW4gSGFzaENvZGVCdWlsZGVyIGN0b3IuIFRoYW5rcyB0byAKICAgICAgICAgICAgIEFsbG9uIE11cmVpbmlrLgpvIExBTkctODg0OiAgU2ltcGxpZnkgRmFzdERhdGVGb3JtYXQ7IGVsaW1pbmF0ZSBib3hpbmcuCm8gTEFORy04ODI6ICBMb29rdXBUcmFuc2xhdG9yIG5vdyB3b3JrcyB3aXRoIGltcGxlbWVudGF0aW9ucyBvZiBDaGFyU2VxdWVuY2UKICAgICAgICAgICAgIG90aGVyIHRoYW4gU3RyaW5nLgpvIExBTkctODQ2OiAgUHJvdmlkZSBDaGFyU2VxdWVuY2VVdGlscy5yZWdpb25NYXRjaGVzIHdpdGggYSBwcm9wZXIgZ3JlZW4KICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgaW5lZmZpY2llbnRseSBjb252ZXJ0aW5nIHRvIFN0cmluZ3MuCm8gTEFORy04Mzk6ICBBcnJheVV0aWxzIHJlbW92ZUVsZW1lbnRzIG1ldGhvZHMgdXNlIHVubmVjZXNzYXJ5IEhhc2hTZXQuCm8gTEFORy04Mzg6ICBBcnJheVV0aWxzIHJlbW92ZUVsZW1lbnRzIG1ldGhvZHMgY2xvbmUgdGVtcG9yYXJ5IGluZGV4IGFycmF5cwogICAgICAgICAgICAgdW5uZWNlc3NhcmlseS4KbyBMQU5HLTc5OTogIERhdGVVdGlscyNwYXJzZURhdGUgdXNlcyBkZWZhdWx0IGxvY2FsZTsgYWRkIExvY2FsZSBzdXBwb3J0LgpvIExBTkctNzk4OiAgVXNlIGdlbmVyaWNzIGluIFNlcmlhbGl6YXRpb25VdGlscy4KCkNIQU5HRVMgV0lUSE9VVCBUSUNLRVQKPT09PT09PT09PT09PT09PT09PT09PT09CgpvIEZpeGVkIFVSTHMgaW4gamF2YWRvYyB0byBwb2ludCB0byBuZXcgb3JhY2xlLmNvbSBwYWdlcwoKCiAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy4xCgpORVcgRkVBVFVSRVMKPT09PT09PT09PT09PT0KCm8gTEFORy04MDE6ICBBZGQgQ29udmVyc2lvbiB1dGlsaXR5IHRvIGNvbnZlcnQgYmV0d2VlbiBkYXRhIHR5cGVzIG9uIGJ5dGUgbGV2ZWwKbyBMQU5HLTc2MDogIEFkZCBBUEkgU3RyaW5nVXRpbHMudG9TdHJpbmcoYnl0ZVtdIGludHB1dCwgU3RyaW5nIGNoYXJzZXROYW1lKQpvIExBTkctNzU2OiAgQWRkIEFQSXMgQ2xhc3NVdGlscy5pc1ByaW1pdGl2ZVdyYXBwZXIoQ2xhc3M8Pz4pIGFuZCAKICAgICAgICAgICAgIGlzUHJpbWl0aXZlT3JXcmFwcGVyKENsYXNzPD8+KQpvIExBTkctNjk1OiAgU3lzdGVtVXRpbHMuSVNfT1NfVU5JWCBkb2Vzbid0IHJlY29nbml6ZSBGcmVlQlNEIGFzIGEgVW5peCBzeXN0ZW0KCkJVRyBGSVhFUwo9PT09PT09PT09PQoKbyBMQU5HLTc0OTogIEluY29ycmVjdCBCdW5kbGUtU3ltYm9saWNOYW1lIGluIE1hbmlmZXN0Cm8gTEFORy03NDY6ICBOdW1iZXJVdGlscyBkb2VzIG5vdCBoYW5kbGUgdXBwZXItY2FzZSBoZXg6IDBYIGFuZCAtMFgKbyBMQU5HLTc0NDogIFN0cmluZ1V0aWxzIHRocm93cyBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24gb24gR29vZ2xlCiAgICAgICAgICAgICBBcHAgRW5naW5lCm8gTEFORy03NDE6ICBBbnQgYnVpbGQgaGFzIHdyb25nIGNvbXBvbmVudC5uYW1lCm8gTEFORy02OTg6ICBEb2N1bWVudCB0aGF0IHRoZSBNdXRhYmxlIG51bWJlcnMgZG9uJ3Qgd29yayBhcyBleHBlY3RlZCB3aXRoCiAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0CgpDSEFOR0VTCj09PT09PT09PQoKbyBMQU5HLTc1ODogIEFkZCBhbiBleGFtcGxlIHdpdGggd2hpdGVzcGFjZSBpbiBTdHJpbmdVdGlscy5kZWZhdWx0SWZFbXB0eQpvIExBTkctNzUyOiAgRml4IGNyZWF0ZUxvbmcoKSBzbyBpdCBiZWhhdmVzIGxpa2UgY3JlYXRlSW50ZWdlcigpCm8gTEFORy03NTE6ICBJbmNsdWRlIHRoZSBhY3R1YWwgdHlwZSBpbiB0aGUgVmFsaWRhdGUuaXNJbnN0YW5jZSBhbmQKICAgICAgICAgICAgIGlzQXNzaWduYWJsZUZyb20gZXhjZXB0aW9uIG1lc3NhZ2VzCm8gTEFORy03NDg6ICBEZXByZWNhdGluZyBjaG9tcChTdHJpbmcsIFN0cmluZykKbyBMQU5HLTczNjogIENoYXJVdGlscyBzdGF0aWMgZmluYWwgYXJyYXkgQ0hBUl9TVFJJTkcgaXMgbm90IG5lZWRlZCB0byBjb21wdXRlCiAgICAgICAgICAgICBDSEFSX1NUUklOR19BUlJBWQoKCiAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy4wCgpBRERJVElPTlMKPT09PT09PT09PT0KCm8gTEFORy0yNzY6ICBNdXRhYmxlQmlnRGVjaW1hbCBhbmQgTXV0YWJsZUJpZ0ludGVnZXIuCm8gTEFORy0yODU6ICBXaXNoIDogbWV0aG9kIHVuYWNjZW50LgpvIExBTkctMzU4OiAgT2JqZWN0VXRpbHMuY29hbGVzY2UuCm8gTEFORy0zODY6ICBMZWZ0T2YvUmlnaHRPZk51bWJlciBpbiBSYW5nZSBjb252ZW5pZW5jZSBtZXRob2RzIG5lY2Vzc2FyeS4KbyBMQU5HLTQzNTogIEFkZCBDbGFzc1V0aWxzLmlzQXNzaWduYWJsZSgpIHZhcmlhbnRzIHdpdGggYXV0b2JveGluZy4KbyBMQU5HLTQ0NDogIFN0cmluZ1V0aWxzLmVtcHR5VG9OdWxsLgpvIExBTkctNDgyOiAgRW5oYW5jZSBTdHJTdWJzdGl0dXRvciB0byBzdXBwb3J0IG5lc3RlZCAke3Zhci0ke3N1YnZyfX0gZXhwYW5zaW9uCm8gTEFORy00ODI6ICBTdHJTdWJzdGl0dXRvciBub3cgc3VwcG9ydHMgc3Vic3RpdHV0aW9uIGluIHZhcmlhYmxlIG5hbWVzLgpvIExBTkctNDk2OiAgQSBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXp5IGluaXRpYWxpemF0aW9uIHBhdHRlcm4uCm8gTEFORy00OTc6ICBBZGRpdGlvbiBvZiBDb250ZXh0ZWRFeGNlcHRpb24gYW5kIENvbnRleHRlZFJ1bnRpbWVFeGNlcHRpb24uCm8gTEFORy00OTg6ICBBZGQgU3RyaW5nRXNjYXBlVXRpbHMuZXNjYXBlVGV4dCgpIG1ldGhvZHMuCm8gTEFORy00OTk6ICBBZGQgc3VwcG9ydCBmb3IgdGhlIGhhbmRsaW5nIG9mIEV4ZWN1dGlvbkV4Y2VwdGlvbnMuCm8gTEFORy01MDE6ICBBZGQgc3VwcG9ydCBmb3IgYmFja2dyb3VuZCBpbml0aWFsaXphdGlvbi4KbyBMQU5HLTUyOTogIEFkZCBhIGNvbmN1cnJlbnQgcGFja2FnZS4KbyBMQU5HLTUzMzogIFZhbGlkYXRlOiBzdXBwb3J0IGZvciB2YWxpZGF0aW5nIGJsYW5rIHN0cmluZ3MuCm8gTEFORy01Mzc6ICBBZGQgQXJyYXlVdGlscy50b0FycmF5IHRvIGNyZWF0ZSBnZW5lcmljIGFycmF5cy4KbyBMQU5HLTU0NTogIEFkZCBhYmlsaXR5IHRvIGNyZWF0ZSBhIEZ1dHVyZSBmb3IgYSBjb25zdGFudC4KbyBMQU5HLTU0NjogIEFkZCBtZXRob2RzIHRvIFZhbGlkYXRlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGluZGV4IGlzIHZhbGlkIGZvcgogICAgICAgICAgICAgdGhlIGFycmF5L2xpc3Qvc3RyaW5nLgpvIExBTkctNTUzOiAgQWRkIFR5cGVVdGlscyBjbGFzcyB0byBwcm92aWRlIHV0aWxpdHkgY29kZSBmb3Igd29ya2luZyB3aXRoIGdlbmVyaWMKICAgICAgICAgICAgIHR5cGVzLgpvIExBTkctNTU5OiAgQWRkZWQgaXNBc3NpZ25hYmxlRnJvbSBhbmQgaXNJbnN0YW5jZU9mIHZhbGlkYXRpb24gbWV0aG9kcy4KbyBMQU5HLTU1OTogIEFkZGVkIHZhbGlkU3RhdGUgdmFsaWRhdGlvbiBtZXRob2QuCm8gTEFORy01NjA6ICBOZXcgVGltZWRTZW1hcGhvcmUgY2xhc3MuCm8gTEFORy01ODI6ICBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUaHJlYWRGYWN0b3J5IGludGVyZmFjZS4KbyBMQU5HLTU4ODogIENyZWF0ZSBhIGJhc2ljIFBhaXI8TCwgUj4gY2xhc3MuCm8gTEFORy01OTQ6ICBEYXRlVXRpbHMgZXF1YWwgJiBjb21wYXJlIGZ1bmN0aW9ucyB1cCB0byBtb3N0IHNpZ25pZmljYW50IGZpZWxkLgpvIExBTkctNjAxOiAgQWRkIEJ1aWxkZXIgSW50ZXJmYWNlIC8gVXBkYXRlIEJ1aWxkZXJzIHRvIEltcGxlbWVudCBJdC4KbyBMQU5HLTYwOTogIFN1cHBvcnQgbGF6eSBpbml0aWFsaXphdGlvbiB1c2luZyBhdG9taWMgdmFyaWFibGVzCm8gTEFORy02MTA6ICBFeHRlbmQgZXhjZXB0aW9uIGhhbmRsaW5nIGluIENvbmN1cnJlbnRVdGlscyB0byBydW50aW1lIGV4Y2VwdGlvbnMuCm8gTEFORy02MTQ6ICBTdHJpbmdVdGlscy5lbmRzV2l0aEFueSBtZXRob2QKbyBMQU5HLTY0MDogIEFkZCBub3JtYWxpemVTcGFjZSB0byBTdHJpbmdVdGlscwpvIExBTkctNjQ0OiAgUHJvdmlkZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBuZXcgY29uY3VycmVudCBwYWNrYWdlCm8gTEFORy02NDk6ICBCb29sZWFuVXRpbHMudG9Cb29sZWFuT2JqZWN0IHRvIHN1cHBvcnQgc2luZ2xlIGNoYXJhY3RlciBpbnB1dApvIExBTkctNjUxOiAgQWRkIEFubm90YXRpb25VdGlscwpvIExBTkctNjUzOiAgUHJvdmlkZSBhIHZlcnkgYmFzaWMgQ29uY3VycmVudEluaXRpYWxpemVyIGltcGxlbWVudGF0aW9uCm8gTEFORy02NTU6ICBBZGQgU3RyaW5nVXRpbHMuZGVmYXVsdElmQmxhbmsoKQpvIExBTkctNjY3OiAgQWRkIGEgTnVsbC1zYWZlIGNvbXBhcmUoKSBtZXRob2QgdG8gT2JqZWN0VXRpbHMKbyBMQU5HLTY3NjogIERvY3VtZW50ZWQgcG90ZW50aWFsIE5QRSBpZiBhdXRvLWJveGluZyBvY2N1cnMgZm9yIHNvbWUgQm9vbGVhblV0aWxzCiAgICAgICAgICAgICBtZXRob2RzCm8gTEFORy02Nzg6ICBBZGQgc3VwcG9ydCBmb3IgQ29uY3VycmVudE1hcC5wdXRJZkFic2VudCgpCm8gTEFORy02OTI6ICBBZGQgaGFzaENvZGVNdWx0aSB2YXJhcmdzIG1ldGhvZApvIExBTkctNjk3OiAgQWRkIEZvcm1hdHRhYmxlVXRpbHMgY2xhc3MKbyBMQU5HLTY4NDogIExldmVuc2h0ZWluIERpc3RhbmNlIFdpdGhpbiBhIEdpdmVuIFRocmVzaG9sZAoKUkVNT1ZBTFMKPT09PT09PT09PQoKbyBMQU5HLTQzODogIFJlbW92ZSBAZGVwcmVjYXRlZHMuCm8gTEFORy00OTI6ICBSZW1vdmUgY29kZSBoYW5kbGVkIG5vdyBieSB0aGUgSkRLLgpvIExBTkctNDkzOiAgUmVtb3ZlIGNvZGUgdGhhdCBkb2VzIG5vdCBob2xkIGVub3VnaCB2YWx1ZSB0byByZW1haW4uCm8gTEFORy01OTA6ICBSZW1vdmUgSkRLIDEuMi8xLjMgYnVnIGhhbmRsaW5nIGluIAogICAgICAgICAgICAgU3RyaW5nVXRpbHMuaW5kZXhPZihTdHJpbmcsIFN0cmluZywgaW50KS4KbyBMQU5HLTY3MzogIFdvcmRVdGlscy5hYmJyZXZpYXRlKCkgcmVtb3ZlZApvIExBTkctNjkxOiAgUmVtb3ZlZCBEYXRlVXRpbHMuVVRDX1RJTUVfWk9ORQoKSU1QUk9WRU1FTlRTCj09PT09PT09PT09PT09CgpvIExBTkctMjkwOiAgRW51bVV0aWxzIGZvciBKREsgNS4wLgpvIExBTkctMzM2OiAgRmluYWxseSBzdGFydCB1c2luZyBnZW5lcmljcy4KbyBMQU5HLTM1NTogIFN0ckJ1aWxkZXIgc2hvdWxkIGltcGxlbWVudCBDaGFyU2VxdWVuY2UgYW5kIEFwcGVuZGFibGUuCm8gTEFORy0zOTY6ICBJbnZlc3RpZ2F0ZSBmb3IgdmFyYXJnIHVzYWdlcy4KbyBMQU5HLTQyNDogIEltcHJvdmUgSmF2YWRvYyBmb3IgU3RyaW5nVXRpbHMgY2xhc3MuCm8gTEFORy00NTg6ICBSZWZhY3RvciBWYWxpZGF0ZS5qYXZhIHRvIGVsaW1pbmF0ZSBjb2RlIHJlZHVuZGFuY3kuCm8gTEFORy00Nzk6ICBEb2N1bWVudCB3aGVyZSBpbiBTVk4gdHJ1bmsgaXMuCm8gTEFORy01MDQ6ICBicmluZyBBcnJheVV0aWxzLmlzRW1wdHkgdG8gdGhlIGdlbmVyaWNzIHdvcmxkLgpvIExBTkctNTA1OiAgUmV3cml0ZSBTdHJpbmdFc2NhcGVVdGlscy4KbyBMQU5HLTUwNzogIFN0cmluZ0VzY2FwZVV0aWxzLnVuZXNjYXBlSmF2YSBzaG91bGQgc3VwcG9ydCBcdSsgbm90YXRpb24uCm8gTEFORy01MTA6ICBDb252ZXJ0IFN0cmluZ1V0aWxzIEFQSSB0byB0YWtlIENoYXJTZXF1ZW5jZS4KbyBMQU5HLTUxMzogIEJldHRlciBFbnVtVXRpbHMuCm8gTEFORy01Mjg6ICBNdXRhYmxlIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBhbiBhcHByb3ByaWF0ZWx5IHR5cGVkIE11dGFibGUKICAgICAgICAgICAgIGludGVyZmFjZS4KbyBMQU5HLTUzOTogIENvbXBpbGUgY29tbW9ucy5sYW5nIGZvciBDREMgMS4xL0ZvdW5kYXRpb24gMS4xLgpvIExBTkctNTQwOiAgTWFrZSBOdW1lcmljRW50aXR5RXNjYXBlciBpbW11dGFibGUuCm8gTEFORy01NDE6ICBSZXBsYWNlIFN0cmluZ0J1ZmZlciB3aXRoIFN0cmluZ0J1aWxkZXIuCm8gTEFORy01NDg6ICBVc2UgSXRlcmFibGUgb24gQVBJIGluc3RlYWQgb2YgQ29sbGVjdGlvbi4KbyBMQU5HLTU1MTogIFJlcGxhY2UgUmFuZ2UgY2xhc3NlcyB3aXRoIGdlbmVyaWMgdmVyc2lvbi4KbyBMQU5HLTU2MjogIENoYW5nZSBNYXZlbiBncm91cElkLgpvIExBTkctNTYzOiAgQ2hhbmdlIEphdmEgcGFja2FnZSBuYW1lLgpvIExBTkctNTcwOiAgRG8gdGhlIHRlc3QgY2FzZXMgcmVhbGx5IHN0aWxsIHJlcXVpcmUgbWFpbigpIGFuZCBzdWl0ZSgpIG1ldGhvZHM/Cm8gTEFORy01Nzk6ICBBZGQgbmV3IFZhbGlkYXRlIG1ldGhvZHMuCm8gTEFORy01OTk6ICBDbGFzc1V0aWxzLmdldENsYXNzKCk6IEFsbG93IERvdHMgYXMgSW5uZXIgQ2xhc3MgU2VwYXJhdG9ycy4KbyBMQU5HLTYwNTogIERlZmF1bHRFeGNlcHRpb25Db250ZXh0IG92ZXJ3cml0ZXMgdmFsdWVzIGluIHJlY3Vyc2l2ZSBzaXR1YXRpb25zLgpvIExBTkctNjY4OiAgQ2hhbmdlIE9iamVjdFV0aWxzIG1pbigpICYgbWF4KCkgZnVuY3Rpb25zIHRvIHVzZSB2YXJhcmdzIHJhdGhlcgogICAgICAgICAgICAgdGhhbiBqdXN0IHR3byBwYXJhbWV0ZXJzCm8gTEFORy02ODE6ICBQdXNoIGRvd24gV29yZFV0aWxzIHRvICJ0ZXh0IiBzdWItcGFja2FnZS4KbyBMQU5HLTcxMTogIEFkZCBpbmNsdWRlYW50cnVudGltZT1mYWxzZSB0byBqYXZhYyB0YXJnZXRzIHRvIHF1ZWxsIHdhcm5pbmdzIGluCiAgICAgICAgICAgICBhbnQgMS44LjEgYW5kIGJldHRlciAoYW5kIG1vZGVzdCBwZXJmb3JtYW5jZSBnYWluKS4KbyBMQU5HLTcxMzogIEluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgRmllbGRVdGlscyByZWFkIG1ldGhvZHMgYW5kIHR3ZWFrCiAgICAgICAgICAgICBqYXZhZG9jLgpvIExBTkctNzE4OiAgYnVpbGQueG1sIEphdmEgMS41KyB1cGRhdGVzLgoKQlVHIEZJWEVTCj09PT09PT09PT09CgpvIExBTkctMTE6ICAgRGVwZW5kIG9uIEpESyAxLjUrLgpvIExBTkctMzAyOiAgU3RyQnVpbGRlciBkb2VzIG5vdCBpbXBsZW1lbnQgY2xvbmUoKS4KbyBMQU5HLTMzOTogIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUh0bWwoKSBlc2NhcGVzIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGxpa2UKICAgICAgICAgICAgIENoaW5lc2UsIEphcGFuZXNlLCBldGMuCm8gTEFORy0zNjk6ICBFeGNlcHRpb25VdGlscyBub3QgdGhyZWFkLXNhZmUuCm8gTEFORy00MTg6ICBKYXZhZG9jIGluY29ycmVjdCBmb3IgU3RyaW5nVXRpbHMuZW5kc1dpdGhJZ25vcmVDYXNlLgpvIExBTkctNDI4OiAgU3RyaW5nVXRpbHMuaXNBbHBoYSwgaXNBbHBoYW51bWVyaWMgYW5kIGlzTnVtZXJpYyBub3cgcmV0dXJuIGZhbHNlCiAgICAgICAgICAgICBmb3IgIiIKbyBMQU5HLTQzOTogIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUhUTUwoKSBkb2VzIG5vdCBlc2NhcGUgY2hhcnMgKDB4MDAtMHgyMCkuCm8gTEFORy00NDg6ICBMb3dlciBBc2NpaSBDaGFyYWN0ZXJzIGRvbid0IGdldCBlbmNvZGVkIGJ5IEVudGl0aWVzLmphdmEuCm8gTEFORy00Njg6ICBKREsgMS41IGJ1aWxkL3J1bnRpbWUgZmFpbHVyZSBvbiBMQU5HLTM5MyAoRXF1YWxzQnVpbGRlcikuCm8gTEFORy00NzQ6ICBGaXhlcyBmb3IgdGhyZWFkIHNhZmV0eS4KbyBMQU5HLTQ3ODogIFN0b3BXYXRjaCBkb2VzIG5vdCByZXNpc3QgdG8gc3lzdGVtIHRpbWUgY2hhbmdlcy4KbyBMQU5HLTQ4MDogIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUh0bWwgaW5jb3JyZWN0bHkgY29udmVydHMgdW5pY29kZQogICAgICAgICAgICAgY2hhcmFjdGVycyBhYm92ZSBVKzAwRkZGRiBpbnRvIDIgY2hhcmFjdGVycy4KbyBMQU5HLTQ4MTogIFBvc3NpYmxlIHJhY2UtY29uZGl0aW9ucyBpbiBoYXNoQ29kZSBvZiB0aGUgcmFuZ2UgY2xhc3Nlcy4KbyBMQU5HLTU2NDogIEltcHJvdmUgU3RyTG9va3VwIEFQSSBkb2N1bWVudGF0aW9uLgpvIExBTkctNTY4OiAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpIGlzIHVzZWQgdG9vIGdlbmVyYWxseS4KbyBMQU5HLTU3MTogIEFycmF5VXRpbHMuYWRkKFRbOiAgYXJyYXksIFQgZWxlbWVudCkgY2FuIGNyZWF0ZSB1bmV4cGVjdGVkCiAgICAgICAgICAgICBDbGFzc0Nhc3RFeGNlcHRpb24uCm8gTEFORy01ODU6ICBleGNlcHRpb24uRGVmYXVsdEV4Y2VwdGlvbkNvbnRleHQuZ2V0Rm9ybWF0dGVkRXhjZXB0aW9uTWVzc2FnZQogICAgICAgICAgICAgY2F0Y2hlcyBUaHJvd2FibGUuCm8gTEFORy01OTY6ICBTdHJTdWJzdGl0dXRvciBzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcyBvZiBhCiAgICAgICAgICAgICBqYXZhLnV0aWwuUHJvcGVydGllcyBjbGFzcwpvIExBTkctNjAwOiAgSmF2YWRvYyBpcyBpbmNvcnJlY3QgZm9yIHB1YmxpYyBzdGF0aWMgaW50IAogICAgICAgICAgICAgbGFzdEluZGV4T2YoU3RyaW5nIHN0ciwgU3RyaW5nIHNlYXJjaFN0cikuCm8gTEFORy02MDI6ICBDb250ZXh0ZWRSdW50aW1lRXhjZXB0aW9uIG5vIGxvbmdlciBhbiAndW5jaGVja2VkJyBleGNlcHRpb24uCm8gTEFORy02MDY6ICBFcXVhbHNCdWlsZGVyIGNhdXNlcyBTdGFja092ZXJmbG93RXhjZXB0aW9uLgpvIExBTkctNjA4OiAgU29tZSBTdHJpbmdVdGlscyBtZXRob2RzIHNob3VsZCB0YWtlIGFuIGludCBjaGFyYWN0ZXIgaW5zdGVhZCBvZgogICAgICAgICAgICAgY2hhciB0byB1c2UgU3RyaW5nIEFQSSBmZWF0dXJlcy4KbyBMQU5HLTYxNzogIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZVhNTCgpIGNhbid0IHByb2Nlc3MgVVRGLTE2IHN1cHBsZW1lbnRhcnkKICAgICAgICAgICAgIGNoYXJhY3RlcnMKbyBMQU5HLTYyNDogIFN5c3RlbVV0aWxzLmdldEphdmFWZXJzaW9uQXNGbG9hdCB0aHJvd3MgCiAgICAgICAgICAgICBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIG9uIEFuZHJvaWQgcnVudGltZS9EYWx2aWsgVk0KbyBMQU5HLTYyOTogIENoYXJzZXQgbWF5IG5vdCBiZSB0aHJlYWRzYWZlLCBiZWNhdXNlIHRoZSBIYXNoU2V0IGlzIG5vdCBzeW5jaC4KbyBMQU5HLTYzODogIE51bWJlclV0aWxzIGNyZWF0ZU51bWJlciB0aHJvd3MgYSBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uCiAgICAgICAgICAgICB3aGVuIGFyZ3VtZW50IGNvbnRhaW5pbmcgImUiIGFuZCAiRSIgaXMgcGFzc2VkIGluCm8gTEFORy02NDM6ICBKYXZhZG9jIFN0cmluZ1V0aWxzLmxlZnQoKSBjbGFpbXMgdG8gdGhyb3cgb24gbmVnYXRpdmUgbGVuLCBidXQKICAgICAgICAgICAgIGRvZXNuJ3QKbyBMQU5HLTY0NTogIEZhc3REYXRlRm9ybWF0LmZvcm1hdCgpIG91dHB1dHMgaW5jb3JyZWN0IHdlZWsgb2YgeWVhciBiZWNhdXNlCiAgICAgICAgICAgICBsb2NhbGUgaXNuJ3QgcmVzcGVjdGVkCm8gTEFORy02NDY6ICBTdHJpbmdFc2NhcGVVdGlscy51bmVzY2FwZUphdmEgZG9lc24ndCBoYW5kbGUgb2N0YWwgZXNjYXBlcyBhbmQKICAgICAgICAgICAgIFVuaWNvZGUgd2l0aCBleHRyYSB1Cm8gTEFORy02NTY6ICBFeGFtcGxlIFN0cmluZ1V0aWxzLmluZGV4T2ZBbnlCdXQoInp6YWJ5eWNkeHgiLCAnJykgPSAwIGluY29ycmVjdApvIExBTkctNjU4OiAgU29tZSBFbnRpdHlzIGxpa2UgJk91bWw7IGFyZSBub3QgbWF0Y2hlZCBwcm9wZXJseSBhZ2FpbnN0IGl0cwogICAgICAgICAgICAgSVNPODg1OS0xIHJlcHJlc2VudGF0aW9uCm8gTEFORy02NTk6ICBFbnRpdHlBcnJheXMgdHlwbzogeyJcdTIxMjIiLCAiJm1pbnVzOyJ9LCAvLyBtaW51cyBzaWduLCBVKzIyMTIKICAgICAgICAgICAgIElTT3RlY2gKbyBMQU5HLTY2OiAgIFN0cmluZ0VzY2FwZXIuZXNjYXBlWG1sKCkgZXNjYXBlcyBjaGFyYWN0ZXJzID4gMHg3Zi4KbyBMQU5HLTY2MjogIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5tYXRoLkZyYWN0aW9uIGRvZXMgbm90IHJlZHVjZQogICAgICAgICAgICAgKEludGVnZXIuTUlOX1ZBTFVFLCAyXmspCm8gTEFORy02NjM6ICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMubWF0aC5GcmFjdGlvbiBkb2VzIG5vdCBhbHdheXMgc3VjY2VlZCBpbgogICAgICAgICAgICAgbXVsdGlwbHlCeSBhbmQgZGl2aWRlQnkKbyBMQU5HLTY2NDogIE51bWJlclV0aWxzLmlzTnVtYmVyKFN0cmluZykgaXMgbm90IHJpZ2h0IHdoZW4gdGhlIFN0cmluZyBpcwogICAgICAgICAgICAgIjEuMUwiCm8gTEFORy02NzI6ICBEb2MgYnVnIGluIERhdGVVdGlscyNjZWlsaW5nCm8gTEFORy02Nzc6ICBEYXRlVXRpbHMuaXNTYW1lTG9jYWxUaW1lIGNvbXBhcmVzIHVzaW5nIDEyIGhvdXIgY2xvY2sgYW5kIG5vdAogICAgICAgICAgICAgMjQgaG91cgpvIExBTkctNjg1OiAgRXF1YWxzQnVpbGRlciBzeW5jaHJvbml6ZXMgb24gSGFzaENvZGVCdWlsZGVyLgpvIExBTkctNzAzOiAgU3RyaW5nVXRpbHMuam9pbiB0aHJvd3MgTlBFIHdoZW4gdG9TdHJpbmcgcmV0dXJucyBudWxsIGZvciBvbmUgb2YKICAgICAgICAgICAgIG9iamVjdHMgaW4gY29sbGVjdGlvbgpvIExBTkctNzEwOiAgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgdW5lc2NhcGVIdG1sNCgiJiMwMyIpCm8gTEFORy03MTQ6ICBTdHJpbmdVdGlscyBkb2MvY29tbWVudCBzcGVsbGluZyBmaXhlcy4KbyBMQU5HLTcxNTogIENoYXJTZXRVdGlscy5zcXVlZXplKCkgc3BlZWR1cC4KbyBMQU5HLTcxNjogIHN3YXBDYXNlIGFuZCAqY2FwaXRhbGl6ZSBzcGVlZHVwcy4KCgpIaXN0b3JpY2FsIGxpc3Qgb2YgY2hhbmdlczogaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9sYW5nL2NoYW5nZXMtcmVwb3J0Lmh0bWwKCkZvciBjb21wbGV0ZSBpbmZvcm1hdGlvbiBvbiBDb21tb25zIExhbmcsIGluY2x1ZGluZyBpbnN0cnVjdGlvbnMgb24gaG93IHRvCnN1Ym1pdCBidWcgcmVwb3J0cywgcGF0Y2hlcywgb3Igc3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50LCBzZWUgdGhlIApBcGFjaGUgQ29tbW9ucyBMYW5nIHdlYnNpdGU6CgpodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvCgpIYXZlIGZ1biEKLUFwYWNoZSBDb21tb25zIExhbmcgdGVhbQoK