TW9uIE1hciAxMSAwMDoyMDowMCAyMDAyIFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJKiBNYWpvciByZXdyaXRlIGZvciB1c2Ugb2YgTkxTCgpUdWUgT2N0IDEyIDIwOjMxOjAwIDE5OTkgIEd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KCSogW1B0LnJjXSBbTWFrZWZpbGUuaW5dCglBZGRlZCBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgpGcmkgTWFyICA1IDIyOjE0OjEzIDE5OTkgIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KICAgICAgICAqIE5FVyBbc2VhcmNoLmNdCiAgICAgICAgLSBBZGRlZCBCb3llci1Nb29yZSB0ZXh0IHNlYXJjaAogICAgICAgIApTYXQgRmViICA2IDIwOjI1OjI1IDE5OTkgIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KICAgICAgICAtIEFkZGVkIG5ldyBJRFNfTk9UU0FWRUQgcmVzc291cmNlIChuZWVkcyB0cmFuc2xhdGlvbiBpbiAqLnJjKQogICAgICAgIC0gSW1wcm92ZWQgcHJpbnRpbmcgc3VwcG9ydCAobm90IHlldCBjb21wbGV0ZSkKICAgICAgICAtIEltcHJvdmVkIGZpbGUgZHJhZyBhbmQgZHJvcCAoc2hvdWxkIG5vdyB3b3JrKQogICAgICAgIC0gR2VuZXJhbCBjb2RlIGNsZWFudXAKClRodSBKYW4gMjggMTg6MTc6MDggMTk5OSAgSnVra2EgSWl2b25lbiAgPGlpdm9uZW5AaWtpLmZpPgoKICAgICAgICAqIFtGaS5yY10gW21haW4uY10gW01ha2VmaWxlLmluXQogICAgICAgIC0gQWRkZWQgRmlubmlzaCBsYW5ndWFnZSBzdXBwb3J0LgogICAgICAgIApTdW4gT2N0IDE4IDE0OjExOjQyIDE5OTggIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KCiAgICAgICAgKiBbPz8ucmNdLCBbVE9ET10sIFtkaWFsb2cuY10sIFtkaWFsb2cuaF0sIFtsYW5ndWFnZS5jXSwKICAgICAgICBbbGFuZ3VhZ2UuaF0sIFtsaWNlbnNlLmNdLCBbbGljZW5zZS5oXSwgW21haW4uY10sIFttYWluLmhdLAogICAgICAgIFtub3RlcGFkLnJjXToKCiAgICAgICAgLSBGaXhlZCBHZXRPcGVuRmlsZU5hbWUgYW5kIEdldFNhdmVGaWxlTmFtZSBkaWFsb2dzLgogICAgICAgIC0gRml4ZWQgUHJpbnQgZGlhbG9nIGFuZCBpbnRyb2R1Y2VkIFByaW50ZXJTZXR1cCBkaWFsb2cuCiAgICAgICAgLSBGaXhlZCBQYWdlU2V0dXAgZGlhbG9nOiB2YWx1ZXMgYXJlIG5vdyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQKICAgICAgICAgIChoYWQgdG8gY2hhbmdlIGFsbCAqLnJjIGZpbGVzKQogICAgICAgIC0gUHJlbGltaW5hcnkgZmlsZSBkcmFnIGFuZCBkcm9wIHN1cHBvcnQuCgpGcmkgSnVuIDEyIDIzOjI5OjQ0IDE5OTggIE1hcmNlbCBCYXVyICA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAgLSBGaXhlZCBHZXREYXRlRm9ybWF0KCktPkdldFRpbWVGb3JtYXQoKSBmb3IgbG9jYWxlIHRpbWUuCgpNb24gTWF5IDI1IDE0OjMwOjAwIDE5OTggIEhlbnJpayBPbHNlbiA8aGVucmlrQGlhZXN0ZS5kaz4KICAgICAgICAqIFtEYS5yY10KICAgICAgICAtIEFkZGVkIERhbmlzaCBsYW5ndWFnZSBzdXBwb3J0LgoKRnJpIE1heSAxNSAyMzo1OToyMiAxOTk4ICBNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CiAgICAgICAgLSBEYXRlL1RpbWUgbm93IHVzZXMgbG9jYWxlLXNwZWNpZmljIGZvcm1hdHMKICAgICAgICAtIExhbmd1YWdlLXNwZWNpZmljIHdpbmRvdyBjYXB0aW9uLCBkaXNwbGF5cyBmaWxlIGJlaW5nIGVkaXRlZC4KICAgICAgICAtIFN0YXJ0ZWQgd2l0aCBwYXJzaW5nIG9mIGNvbW1hbmQgbGluZSBzZXR0aW5ncwogICAgICAgIC0gU3RhcnRlZCB3aXRoIERvT3BlbkZpbGUsIERvQ2xvc2VGaWxlLCBEb1NhdmVGaWxlIGxvZ2ljcwogICAgICAgIC0gUHJvbXB0IHVzZXIgdG8gc2F2ZSBzZXR0aW5ncyB3aGVuIGNsb3NpbmcgYSBmaWxlCiAgICAgICAgICAtPiBJbnRyb2R1Y2VkIGEgbmV3IG1lc3NhZ2UgYm94IChub3QgeWV0IGZpbmlzaGVkKQogICAgICAgIC0gRml4ZWQgbWlub3IgZmVhdHVyZXMgKG1pc3NpbmcgSURTIGluIG1haW4uaCwgLi4uKQoKU3VuIE1hciAyOSAyMDoyOTo0MSAxOTk4ICBMYXVyZW50IEJ1ZmZsZXIgPGxhdXJlbnRAYmx1ZXdpbi5jaD4KICAgICAgICAqIFtGci5yY10KICAgICAgICAtIEFkZGVkIEZyZW5jaCBsYW5ndWFnZSBzdXBwb3J0LgoKRnJpIEZlYiAyNyAyMTowMzozNyAxOTk4ICBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAgICAgICAgLSBGaXhlZCBzb21lIG1pbm9yIGZlYXR1cmVzLgoKU2F0IEZlYiAxNCAxNzo0MjoyOSAxOTk4ICBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAgICAgICAgKiBORVcgW2xhbmd1YWdlLmNdIFtsYW5ndWFnZS5oXQogICAgICAgIC0gVGFrZXMgY2FyZSBvZiBhbGwgbGFuZ3VhZ2UgcmVsYXRlZCBzdHVmZi4KICAgICAgICAtIEEgbmV3IFtwcm9ncmFtc10gaW4gLndpbmVyYyBpcyBpbiB1c2UuCgpUdWUgRmViIDEwIDIzOjM0OjA4IDE5OTggIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KICAgICAgICAtIEZpeGVkIGJyb2tlbiBsYW5ndWFnZSBtZW51cwoKRnJpIEZlYiAwNiAyMy41NC4zNSAxOTk4ICBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAgICAgICAgKiBbbWFpbi5jXSBbbWFpbi5oXSBbbm90ZXBhZC5yY10KICAgICAgICAtIEZpeGVkIGxhbmd1YWdlIHN1cHBvcnQgZm9yIG1lbnVzLiAgICAgCiAgICAgICAgKiBORVcgW2RpYWxvZy5jXSBbZGlhbG9nLmhdCiAgICAgICAgLSBNb3ZlZCBhbGwgbWVudSBhbmQgZGlhbG9nIHJlbGF0ZWQgc3R1ZmYgaGVyZS4KClN1biBKYW4gMTggMjM6MDU6MDQgMTk5OCAgS2FybCBCYWNrc3Ry9m0gPGthcmxfYkBnZW9jaXRpZXMuY29tPgogICAgICAgICogW1N3LnJjXQogICAgICAgIC0gQWRkZWQvdXBkYXRlZCBTd2VkaXNoIGxhbmd1YWdlIHN1cHBvcnQuCgpUdWUgRGVjIDIzIDIzOjM1OjA0IDE5OTcgIE1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KICAgICAgICAtIEZpeGVkIGxvdHMgb2YgYnVncyB3LyByZXNvdXJjZXMgaW4gKi5yYwogICAgICAgIC0gbW92ZWQgW25vdGVwYWQuY10gaW50byBbbWFpbi5jXQogICAgICAgIC0gbW92ZWQgW25vdGVwYWQuaF0gaW50byBbbWFpbi5oXQogICAgICAgCkZyaSBEZWMgMDUgMjA6NTE6NTUgMTk5NyAgTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogICAgICAgICogW25vdGVwYWQuY10gW25vdGVwYWQuaF0gW25vdGVwYWQucmNdIFtFbi5yY10gW0RlLnJjXQogICAgICAgICAgW2xpY2Vuc2UuY10gW2xpY2Vuc2UuaF0gW0xpY2Vuc2VfRW4uY10KICAgICAgICAgIFtSRUFETUVdIFtUT0RPXSBbQ2hhbmdlTG9nXQogICAgICAgIC0gT3JpZ2luYWxzIGJ5IE1hcmNlbCBCYXVyCgoK