MjAwMzA5MjMKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbl0gQnVnICM2NDQ6IEZpeCAibWFrZSBjbGVhbiIgZm9yIG91dC1vZi10cmVlCiAgIGJ1aWxkcy4gIFBvcnRhYmlsaXR5IGNvcnJlY3Rpb25zIGZyb20gdGltQC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjU1OiB1aWQgc3dhcHBpbmcgaXNzdWVzIG9uIE1hYyBPUyBYLgogICBQYXRjaCBmcm9tIG1heCBhdCBxdWVuZGkuZGUuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzY1NzogdWlkIHN3YXBwaW5nIGlzc3VlcyBvbiBCU0RpLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM2NTM6IHVpZCBzd2FwcGluZyBpc3N1ZXMgb24gVHJ1NjQuCgoyMDAzMDkxOQogLSAoZGptKSBCdWcgIzY4MzogUmVtb3ZlIHJlZmVyZW5jZSB0byAtLXdpdGgtaXB2NC1kZWZhdWx0IGZyb20gSU5TVEFMTDsKICAgZGphc3QgQVQgY3MudG9yb250by5lZHUKIC0gKGRqbSkgQnVnICM2NjE6IFJlbW92ZSBkdXBsaWNhdGUgY2hlY2sgZm9yIGJhc2VuYW1lOyBmcm9tIAogICBidWd6aWxsYS1vcGVuc3NoIEFUIHRoZXdyaXR0ZW53b3JkLmNvbQogLSAoZGptKSBCdWcgIzY0MTogQWxsb3cgUmVkSGF0IFJQTSBidWlsZGluZyB3aXRob3V0IEdUSy0yOyBQYXRjaCBmcm9tCiAgIGphc29uIEFUIGRldnJhbmRvbS5vcmcKIC0gKGRqbSkgQnVnICM2NDY6IEZpeCBsb2NhdGlvbiBvZiB4MTEtc3NoLWFza3Bhc3M7IEppbQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmhdIEJ1ZyAjNjQwOiBEb24ndCBpbmNsdWRlIGF1ZGl0LmgKICAgdW5sZXNzIHJlcXVpcmVkLiAgUmVvcmRlciB0byByZWR1Y2Ugd2FybmluZ3MuCiAtIChkdHVja2VyKSBbc2Vzc2lvbi5jXSBCdWcgIzY0MzogRml4IHNpemVfdCAtPiB1X2ludCBhbmQgZml4IG51bGwgZGVyZWYKICAgd2hlbiAvZXRjL2RlZmF1bHQvbG9naW4gZG9lc24ndCBleGlzdCBvciBpc24ndCByZWFkYWJsZS4gIEZpeGVzIGZyb20KICAganBhcnNvbnMtbGlzdHMgYXQgc2FmZnJvbi5uZXQgYW5kIGdlb3JnLm9wcGVuYmVyZyBhdCBkZXUgbWNpIGNvbS4KIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oXSBVcGRhdGVkIGJhc2VuYW1lIHRlc3QgbmVlZHMgSEFWRV9CQVNFTkFNRQoKMjAwMzA5MTgKIC0gKGRqbSkgQnVnICM2NTI6IEZpeCBlbXB0eSBwYXNzd29yZCBhdXRoCgoyMDAzMDkxNwogLSAoZGptKSBTeW5jIHdpdGggVl8zXzcgYnJhbmNoCiAtIChkam0pIE9wZW5CU0QgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8xNiAyMTowMjo0MAogICAgIFtidWZmZXIuYyBjaGFubmVscy5jIHZlcnNpb24uaF0KICAgICBtb3JlIG1hbGxvYy9mYXRhbCBmaXhlczsgb2sgbWlsbGVydC9kZXJhYWR0OyBnaHVkc29uIGF0IE1JVC5FRFUKIC0gKGRqbSkgQ3JhbmsgUlBNIHNwZWMgZmlsZSB2ZXJzaW9ucwogLSAodGltKSBbb3BlbmJzZC1jb21wYXQvaW5ldF9udG9hLmNdIDIwMDMwOTE3ICJTeW5jIHdpdGggVl8zXzcgYnJhbmNoIiB1bmRpZAogICAyMDAzMDkxNiAiTWlzc2VkIGRlYWQgaGVhZGVyIGluIGluZXRfbnRvYS5jIgogCjIwMDMwOTE2CiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgZGVmaW5lcy5oIHNlc3Npb24uY10gQnVnICMyNTI6IFJldHJpZXZlCiAgIFBBVEggKG9yIFNVUEFUSCkgYW5kIFVNQVNLIGZyb20gL2V0Yy9kZWZhdWx0L2xvZ2luIG9uIHBsYXRmb3JtcyB0aGF0IGhhdmUgaXQKICAgKGVnIFNvbGFyaXMsIFJlbGlhbnQgVW5peCkuICBQYXRjaCBmcm9tIFJvYmVydC5EYWhsZW0gYXQgc2llbWVucy5jb20uICAKICAgb2sgZGptQAogLSAoYmFsKSBPcGVuQlNEIFN5bmMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE2IDAzOjAzOjQ3CiAgICAgW2J1ZmZlci5jXQogICAgIGRvIG5vdCBleHBhbmQgYnVmZmVyIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJlYWxsb2NhdGUgaXQ7IG1hcmt1cyBvawogLSAodGltKSBbY29uZmlndXJlLmFjXSBGaXggcG9ydGFiaWxpdHkgaXNzdWVzLgogLSAoYmFsKSBNaXNzZWQgZGVhZCBoZWFkZXIgaW4gaW5ldF9udG9hLmMKCjIwMDMwOTE0CiAtIChkdHVja2VyKSBbTWFrZWZpbGUgcmVncmVzcy9NYWtlZmlsZV0gRml4IHBvcnRhYmlsaXR5IGlzc3VlcyBwcmV2ZW50aW5nCiAgIHRoZSByZWdyZXNzaW9uIHRlc3RzIGZyb20gcnVubmluZyB3aXRoIFNvbGFyaXMnIG1ha2UuICBQYXRjaCBmcm9tIEJyaWFuCiAgIFBvb2xlIChyYWogYXQgY2VyaWFzLnB1cmR1ZS5lZHUpLgogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvTWFrZWZpbGVdIEFJWCdzIG1ha2UgZG9lc24ndCBsaWtlICIgKz0iLCBzbyByZXBsYWNlCiAgIHdpdGggdmFuaWxsYSAiPSIuCgoyMDAzMDkxMwogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvYWdlbnQtdGltZW91dC5zaF0gVGltZW91dCBvZiA1IHNlYyBpcyBib3JkZXJsaW5lIGZvcgogICBzbG93ZXIgaG9zdHMsIGluY3JlYXNlIHRvIDEwIHNlYy4KIC0gKGR0dWNrZXIpIFthdXRoLXBhc3N3ZC5jXSBPbiBBSVgsIGNhbGwgc2V0YXV0aGRiKCkgYmVmb3JlIGxvZ2luc3VjY2VzcygpLAogICByZXF1aXJlZCB0byBjb3JyZWN0bHkgcmVzZXQgZmFpbGVkIGxvZ2luIGNvdW50IHdoZW4gdXNpbmcgYSBwYXNzd29yZAogICByZWdpc3RyeSBvdGhlciB0aGFuICJmaWxlcyIgKGVnIExEQVAsIHNlZSBidWcgIzU0MykuCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIGRlZmluZSBXSVRIX0FCQlJFVl9OT19UVFkgZm9yIFNDTy4KICAgUmVwb3J0IGJ5IFJvZ2VyIENvcm5lbGl1cy4KIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBVc2UgU1NIRF9QQU1fU0VSVklDRSBmb3IgUEFNIHNlcnZpY2UgbmFtZSwgcGF0Y2gKICAgZnJvbSBjandhdHNvbiBhdCBkZWJpYW4ub3JnLgoKMjAwMzA5MTIKIC0gKHRpbSkgW3JlZ3Jlc3MvYWdlbnQtcHRyYWNlLnNoXSBzaCBkb2Vzbid0IGxpa2UgImlmICEgc2hlbGxfZnVuY3Rpb247IHRoZW4iLgogLSAodGltKSBbTWFrZWZpbGUuaW5dIG9ubHkgbWtkaXIgcmVncmVzcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIC0gKHRpbSkgW3JlZ3Jlc3MveWVzLWhlYWQuc2hdIHNoZWxsIHBvcnRhYmlsaXR5IGZpeC4KCjIwMDMwOTExCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzU4OCwgIzYxNTogTW92ZSBvdGhlciBsaWJnZW4gdGVzdHMgdG8gYWZ0ZXIKICAgdGhlIGRpcm5hbWUgdGVzdCwgdG8gYWxsb3cgYSBicm9rZW4gZGlybmFtZSB0byBiZSBkZXRlY3RlZCBjb3JyZWN0bHkuCiAgIEJhc2VkIHBhcnRpYWxseSBvbiBwYXRjaCBzdXBwbGllZCBieSBhbGV4LmtpZXJuYW4gYXQgdGh1cy5uZXQuICBvayBkam1ACiAtICh0aW0pIFtjb25maWd1cmUuYWNdIE1vdmUgbGliZ2VuIHRlc3RzIHRvIGJlZm9yZSBsaWJ3cmFwIHRvIHVuYnJlYWsKICAgVW5peFdhcmUgMi4wMyB1c2luZyAtLXdpdGgtdGNwLXdyYXBwZXJzLgogLSAodGltKSBbY29uZmlndXJlLmFjXSBQcmVmZXIgc2V0dWlkL3NldGdpZCBvbiBVbml4V2FyZSBhbmQgT3BlbiBTZXJ2ZXIuCiAtICh0aW0pIFtyZWdyZXNzL2FnZW50LXB0cmFjZS5zaCByZWdyZXNzL2R5bmFtaWMtZm9yd2FyZC5zaAogICByZWdyZXNzL3NmdHAtY21kcy5zaCByZWdyZXNzL3N0ZGVyci1hZnRlci1lb2Yuc2ggcmVncmVzcy90ZXN0LWV4ZWMuc2hdCiAgIG5vIGxvbmdlciBkZXBlbmRzIG9uIHdoaWNoKDEpLiBwYXRjaCBieSBkdHVja2VyQAoKMjAwMzA5MTAKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjM2OiBBZGQgc3VwcG9ydCBmb3IgQ3JheSdzIG5ldyBYMSBtYWNoaW5lLgogICBQYXRjaCBmcm9tIHdlbmR5cCBhdCBjcmF5LmNvbS4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFBhcnQgb2YgYnVnICM2MTU6IHRjc2VuZGJyZWFrIG1pZ2h0IGJlIGEgbWFjcm8uCiAtIChkdHVja2VyKSBbcmVncmVzc2gveWVzLWhlYWQuc2hdIFNvbWUgcGxhdGZvcm1zIChlZyBTb2xhcmlzKSBkb24ndCBoYXZlCiAgICJ5ZXMiLgoKMjAwMzA5MDkKIC0gKHRpbSkgW3JlZ3Jlc3MvTWFrZWZpbGVdIEZpeGVzIGZvciBidWlsZGluZyBvdXRzaWRlIG9mIGEgcmVhZC1vbmx5CiAgIHNvdXJjZSB0cmVlLgogLSAodGltKSBbcmVncmVzcy9hZ2VudC10aW1lb3V0LnNoXSBzL1RJTUVPVVQvU1NIQUdFTlRfVElNRU9VVC8gRml4ZXMgY29uZmxpY3QKICAgd2l0aCBzaGVsbCByZWFkLW9ubHkgdmFyaWFibGUuCiAtICh0aW0pIFtyZWdyZXNzL3NmdHAtYmFkY21kcy5zaCByZWdyZXNzL3NmdHAtY21kcy5zaF0gRml4IGVycm9ycyBsaWtlCiAgIFVYOnJtOiBFUlJPUjogQ2Fubm90IHJlbW92ZSAnLicgb3IgJy4uJwoKMjAwMzA5MDgKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hYyBvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSB3cmFwIF9nZXRzaG9ydCBhbmQKICAgX2dldGxvbmcgaW4gI2lmbmRlZgogLSAodGltKSBbY29uZmlndXJlLmFjIGFjY29uZmlnLmggb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuY10gdGVzdCBmb3IKICAgSEVBREVSLmFkIGluIGFycGEvbmFtZXNlci5oCiAtICh0aW0pIFtzc2gta2V5Z2VuLmNdIHMvUEFUSF9NQVgvTUFYUEFUSExFTi8gb2sgbW91cmluZ0AKCjIwMDMwOTA3CiAtIChkdHVja2VyKSBbYWdlbnQtcHRyYWNlLnNoIGR5bmFtaWMtZm9yd2FyZC5zaCAoYWxsIHJlZ3Jlc3MvKV0KICAgUHV0ICJ3aGljaCIgaW5zaWRlIHF1b3Rlcy4KIC0gKGR0dWNrZXIpIFtkeW5hbWljLWZvcndhcmQuc2ggZm9yd2FyZGluZy5zaCBzZnRwLWJhdGNoLnNoIChhbGwgcmVncmVzcy8pXQogICBBZGQgJHtFWEVFWFR9OiByZXF1aXJlZCB0byB3b3JrIG9uIEN5Z3dpbi4KIC0gKGR0dWNrZXIpIFtyZWdyZXNzL3NmdHAtYmF0Y2guc2hdIE1ha2UgdGVtcG9yYXJ5IGJhdGNoIGZpbGUgbmFtZSBtb3JlCiAgIGRpc3RpbmN0aXZlLCBzbyAicm0gJHtCQVRDSH0uKiIgZG9lc24ndCBtYXRjaCB0aGUgc2NyaXB0IGl0c2VsZi4KIC0gKGR0dWNrZXIpIFtyZWdyZXNzL3NmdHAtY21kcy5zaF0gU2tpcCBxdW90ZWQgZmlsZSB0ZXN0IG9uIEN5Z3dpbi4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC94Y3J5cHQuY10gI2Vsc2lmIC0+ICNlbGlmCiAtIChkdHVja2VyKSBbYWNjb25maWcuaF0gVHlwby4KIC0gKGR0dWNrZXIpIFtDUkVESVRTIE1ha2VmaWxlLmluIGNvbmZpZ3VyZS5hYyBtZG9jMm1hbi5hd2sgbWRvYzJtYW4ucGxdCiAgIFJlcGxhY2UgbWRvYzJtYW4ucGwgd2l0aCBtZG9jMm1hbi5hd2ssIHByb3ZpZGVkIGJ5IFBldGVyIFN0dWdlLgoKMjAwMzA5MDYKIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oIGNvbmZpZ3VyZS5hYyB1aWRzd2FwLmNdIFByZWZlciBzZXR1aWQvc2V0Z2lkIG9uIEFJWC4KCjIwMDMwOTA1CiAtIChkdHVja2VyKSBbTWFrZWZpbGUuaW5dIEFkZCBkaXN0Y2xlYW4gdGFyZ2V0IGZvciByZWdyZXNzLywgZml4IGNsZWFuIHRhcmdldC4KCjIwMDMwOTA0CiAtIChkdHVja2VyKSBQb3J0YWJsaXplIHJlZ3Jlc3Npb24gdGVzdHMuICBQYXJ0cyBjb250cmlidXRlZCBieSBSb3VtZW4KICAgUGV0cm92LCBEYXZpZCBNLiBXaWxsaWFtcyBhbmQgQ29yaW5uYSBWaW5zY2hlbi4KICAgLSBbTWFrZWZpbGUuaW5dIEFkZCAibWFrZSB0ZXN0cyIgdGFyZ2V0IGFuZCAibWFrZSBjbGVhbiIgaG9va3MuCiAgIC0gW3JlZ3Jlc3MvYWdlbnQtZ2V0cGVlcmVpZC5zaF0gU2tpcCB0ZXN0IG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQKICAgICBnZXRwZWVyZWlkLgogICAtIFtyZWdyZXNzL2FnZW50LXB0cmFjZS5zaF0gU2tpcCB0ZXN0cyBpZiBwbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgaXQgb3IKICAgICBnZGIgY2Fubm90IGJlIGZvdW5kLgogICAtIFtyZWdyZXNzL3JlY29uZmlndXJlL3NoXSBNYWtlIHBhdGggdG8gc3NoZCBmdWxseSBxdWFsaWZpZWQgaWYgcmVxdWlyZWQuCiAgIC0gW3JlZ3Jlc3MvcmVrZXkuc2hdIFJlbW92ZSBkZXBlbmRlbmNlIG9uIC9kZXYvemVybyAobm90IGFsbCBwbGF0Zm9ybXMgaGF2ZQogICAgIGl0KS4gIFRoZSBzcGFyc2UgZmlsZSB3aWxsIHRha2UgbGVzcyBkaXNrIHNwYWNlIHRvby4KICAgLSBbcmVncmVzcy9zZnRwLWNtZHMuc2hdIEVuc3VyZSBmaWxlcyB1c2VkIGZvciB0ZXN0IGFyZSByZWFkYWJsZS4KICAgLSBbcmVncmVzcy9zdGRlcnItYWZ0ZXItZW9mLnNoXSBTZWFyY2ggZm9yIGEgdXNhYmxlIGNoZWNrc3VtIHByb2dyYW0uCiAgIC0gW3JlZ3Jlc3Mvc2Z0cC1iYWRjbWRzLnNoIHJlZ3Jlc3Mvc2Z0cC1jbWRzLnNoIHJlZ3Jlc3Mvc2Z0cC5zaAogICAgIHJlZ3Jlc3Mvc3NoLWNvbS1jbGllbnQuc2ggcmVncmVzcy9zc2gtY29tLXNmdHAuc2ggcmVncmVzcy9zdGRlcnItZGF0YS5zaAogICAgIHJlZ3Jlc3MvdHJhbnNmZXIuc2hdIFVzZSAke0VYRUVYVH0gd2hlcmUgYXBwcm9wcmlhdGUuCiAgIC0gW3JlZ3Jlc3Mvc2Z0cC5zaCByZWdyZXNzL3NzaC1jb20tc2Z0cC5zaF0gUmVtb3ZlIGRlcGVuZGVuY3kgb24gL2Rldi9zdGRpbi4KICAgLSBbcmVncmVzcy9hZ2VudC1wdHJhY2Uuc2ggcmVncmVzcy9hZ2VudC10aW1lb3V0LnNoXQogICAgICJncmVwIC1xIiAtPiAiZ3JlcCA+L2Rldi9udWxsIgogICAtIFtyZWdyZXNzL2FnZW50LnNoIHJlZ3Jlc3MvcHJvdG8tdmVyc2lvbi5zaCByZWdyZXNzL3NzaC1jb20uc2gKICAgICByZWdyZXNzL3Rlc3QtZXhlYy5zaF0gSGFuZGxlIGRpZmZlcmVudCB3YXlzIG9mIGVjaG9pbmcgd2l0aG91dCBuZXdsaW5lcy4KICAgLSBbcmVncmVzcy9keW5hbWljLWZvcndhcmQuc2hdIFNvbWUgIndoaWNoIiBwcm9ncmFtcyBvdXRwdXQgb24gc3RkZXJyLgogICAtIFtyZWdyZXNzL3NmdHAtY21kcy5zaF0gVXNlIHBvcnRhYmxlICJ0ZXN0IiBvcHRpb24uCiAgIC0gW3JlZ3Jlc3MvdGVzdC1leGVjLnNoXSBVc2Ugc3Vkbywgc2VhcmNoIGZvciAid2hvYW1pIiBlcXVpdmFsZW50LCBhbHdheXMKICAgICB1c2UgU3RyaWN0bW9kZXMgbm8sIHdhaXQgbG9uZ2VyIGZvciBzc2hkIHN0YXJ0dXAuCiAgIC0gW3JlZ3Jlc3MvTWFrZWZpbGVdIFJlbW92ZSBCU0Rpc21zLgogICAtIFtyZWdyZXNzL1JFQURNRS5yZWdyZXNzXSBBZGQgYSBiYXNpYyByZWFkbWUuCiAgIC0gW01ha2VmaWxlLmluIHJlZ3Jlc3MvYWdlbnQtZ2V0cGVlcmVpZC5zaF0gY29uZmlnLmggaXMgbm93IGluICRCVUlMRERJUgogICAgIG5vdCAkT0JKLgogICAtIFtNYWtlZmlsZS5pbiByZWdyZXNzL2FnZW50LXB0cmFjZV0gRml4IG1pbm9yIHJlZ3Jlc3MgaXNzdWVzIG9uIEN5Z3dpbi4KCjIwMDMwOTAzCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjYgMDk6NTg6NDMKICAgICBbYXV0aC1wYXNzd2QuYyBhdXRoLmMgYXV0aC5oIGF1dGgxLmMgYXV0aDItbm9uZS5jIGF1dGgyLXBhc3N3ZC5jXQogICAgIFthdXRoMi5jIG1vbml0b3IuY10KICAgICBmaXggcGFzc3dkIGF1dGggZm9yICd1c2VybmFtZSBsZWFrcyB2aWEgdGltaW5nJzsgd2l0aCBkam1ALCBvcmlnaW5hbCAKICAgICBwYXRjaGVzIGZyb20gc29sYXIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjggMTI6NTQ6MzQKICAgICBbYXV0aC5oXQogICAgIHJlbW92ZSBrZXJiZXJvcyBzdXBwb3J0IGZyb20gc3NoMSwgc2luY2UgaXQgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBHU1NBUEk7CiAgICAgYnV0IGtlZXAga2VyYmVyb3MgcGFzc3dkIGF1dGggZm9yIHNzaDEgYW5kIDI7IG9rIGRqbSwgaGluLCBoZW5uaW5nLCAuLi4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDIgMTY6NDA6MjkKICAgICBbdmVyc2lvbi5oXQogICAgIGVudGVyIDMuNwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8wMiAxODo1MDowNgogICAgIFtzZnRwLjEgc3NoX2NvbmZpZy41XQogICAgIGVzY2FwZSBwdW5jdHVhdGlvbjsKICAgICBvayBkZXJhYWR0QAoKMjAwMzA5MDIKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjQgMTc6MzY6NTEKICAgICBbYXV0aDItZ3NzLmNdCiAgICAgNjQgYml0IGNsZWFudXBzOyBtYXJrdXMgb2sKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjggMTI6NTQ6MzQKICAgICBbYXV0aC1rcmI1LmMgYXV0aC5oIGF1dGgxLmMgbW9uaXRvci5jIG1vbml0b3IuaCBtb25pdG9yX3dyYXAuY10KICAgICBbbW9uaXRvcl93cmFwLmggcmVhZGNvbmYuYyBzZXJ2Y29uZi5jIHNlc3Npb24uYyBzc2hfY29uZmlnLjVdCiAgICAgW3NzaGNvbm5lY3QxLmMgc3NoZC5jIHNzaGRfY29uZmlnIHNzaGRfY29uZmlnLjVdCiAgICAgcmVtb3ZlIGtlcmJlcm9zIHN1cHBvcnQgZnJvbSBzc2gxLCBzaW5jZSBpdCBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEdTU0FQSTsKICAgICBidXQga2VlcCBrZXJiZXJvcyBwYXNzd2QgYXV0aCBmb3Igc3NoMSBhbmQgMjsgb2sgZGptLCBoaW4sIGhlbm5pbmcsIC4uLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yOSAxMDowMzoxNQogICAgIFtjb21wYXQuYyBjb21wYXQuaF0KICAgICBTU0hfQlVHX0s1VVNFUiBpcyB1bnVzZWQ7IG9rIGhlbm5pbmdACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzI5IDEwOjA0OjM2CiAgICAgW2NoYW5uZWxzLmMgbmNoYW4uY10KICAgICBiZSBsZXNzIGNoYXR0eTsgZGVidWcgLT4gZGVidWcyLCBjbGVhbnVwOyBvayBoZW5uaW5nQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8zMSAxMDoyNjowNAogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgcGFzcyBmaWxlX3NpemUgKyAxIHRvIHNucHJpbnRmOiBmaXhlcyBwcmludGluZyBvZiB0cnVuY2F0ZWQKICAgICBmaWxlIG5hbWVzOyBmaXggYmFzZWQgb24gcGF0Y2gvcmVwb3J0IGZyb20gc3R1cm1AOwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8zMSAxMjoxNDoyMgogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgZG8gd3JpdGUgdG8gYnVmWy0xXQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8zMSAxMzoyOTowNQogICAgIFtzZXNzaW9uLmNdCiAgICAgY2FsbCBzc2hfZ3NzYXBpX3N0b3JlY3JlZHMgY29uZGl0aW9uYWxseSBmcm9tIGRvX2V4ZWMoKTsgCiAgICAgd2l0aCBzeHdAaW5mLmVkLmFjLnVrCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzMxIDEzOjMwOjE4CiAgICAgW2dzcy1zZXJ2LmNdCiAgICAgY29ycmVjdCBzdHJpbmcgdGVybWluYXRpb24gaW4gcGFyc2VfZW5hbWUoKTsgc3h3QGluZi5lZC5hYy51awogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8zMSAxMzozMTo1NwogICAgIFtnc3Mtc2Vydi5jXQogICAgIHdoaXRzcGFjZSBLTkYKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDEgMDk6NTA6MDQKICAgICBbc3NoZF9jb25maWcuNV0KICAgICBnc3Mga2V4IGlzIG5vdCBzdXBwb3J0ZWQ7IHN4d0BpbmYuZWQuYWMudWsKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDEgMTI6NTA6NDYKICAgICBbcmVhZGNvbmYuY10KICAgICBybSBnc3NhcGlkZWxlZ2F0ZWNyZWRzIGFsaWFzOyBuZXZlciBzdXBwb3J0ZWQgYmVmb3JlCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzAxIDEzOjUyOjE4CiAgICAgW3NzaC5oXQogICAgIHJtIHdoaXRlc3BhY2UKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDEgMTg6MTU6NTAKICAgICBbcmVhZGNvbmYuYyByZWFkY29uZi5oIHNlcnZjb25mLmMgc2VydmNvbmYuaCBzc2guY10KICAgICByZW1vdmUgdW51c2VkIGtlcmJlcm9zIGNvZGU7IG9rIGhlbm5pbmdACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzAxIDIwOjQ0OjU0CiAgICAgW2F1dGgyLWdzcy5jXQogICAgIGZpeCBsZWFrCiAtIChkam0pIERvbid0IGluaXRpYWxpc2UgcGFtX2NvbnYgc3RydWN0dXJlcyBpbmxpbmUuIEF2b2lkcyBIUC9VWCBjb21waWxlcgogICBlcnJvci4gUGFydCBvZiBCdWcgIzQyMywgcGF0Y2ggZnJvbSAgbWljaGFlbF9zdGVmZmVucyBBVCBocC5jb20KIC0gKGRqbSkgQnVnICM0MjM6IHJlb3JkZXIgc2V0dGluZyBvZiBQQU1fVFRZIGFuZCBjYWxsaW5nIG9mIFBBTSBzZXNzaW9uIAogICBtYW5hZ2VtZW50IChub3cgZG9uZSBpbiBkb19zZXR1c2VyY29udGV4dCkuIExhcmdlbHkgZnJvbSAKICAgbWljaGFlbF9zdGVmZmVucyBBVCBocC5jb20KIC0gKGRqbSkgRml4IG9wZW5ic2QtY29tcGF0LyBhZ2FpbiAtIHJlbW92ZSByZWZlcmVuY2VzIHRvIHN0cmwoY3B5fGNhdCkuaCAKIAoyMDAzMDgyOQogLSAoYmFsKSBvcGVuYnNkLWNvbXBhdC8gY2xlYW4gdXAuICBDb25zaWRhdGUgaGVhZGVycywgYWRkIGluIElkIG9uIG91cgogICBmaWxlcywgYW5kIGFkZGVkIG1pc3NpbmcgbGljZW5zZSB0byBoZWFkZXIuCgoyMDAzMDgyNgogLSAoZGptKSBCdWcgIzYyOTogTWFyayBzc2hfY29uZmlnIG9wdGlvbiAicGFtYXV0aGVudGljYXRpb252aWFrYmRpbnQiCiAgIGFzIGRlcHJlY2F0ZWQuIFJlbW92ZSBtZW50aW9uIGZyb20gUkVBRE1FLnByaXZzZXAuIFBhdGNoIGZyb20gCiAgIGFldCBBVCBjYy5odXQuZmkKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjIgMTA6NTY6MDkKICAgICBbYXV0aDIuYyBhdXRoMi1nc3MuYyBhdXRoLmggY29tcGF0LmMgY29tcGF0LmggZ3NzLWdlbnIuYyBnc3Mtc2Vydi1rcmI1LmMKICAgICBnc3Mtc2Vydi5jIG1vbml0b3IuYyBtb25pdG9yLmggbW9uaXRvcl93cmFwLmMgbW9uaXRvcl93cmFwLmggcmVhZGNvbmYuYwogICAgIHJlYWRjb25mLmggc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNlc3Npb24uYyBzZXNzaW9uLmggc3NoLWdzcy5oCiAgICAgc3NoX2NvbmZpZy41IHNzaGNvbm5lY3QyLmMgc3NoZF9jb25maWcgc3NoZF9jb25maWcuNV0KICAgICBzdXBwb3J0IEdTUyBBUEkgdXNlciBhdXRoZW50aWNhdGlvbjsgcGF0Y2hlcyBmcm9tIFNpbW9uIFdpbGtpbnNvbiwKICAgICBzdHJpcHBlZCBkb3duIGFuZCB0ZXN0ZWQgYnkgSmFrb2IgYW5kIG15c2VsZi4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjIgMTM6MjA6MDMKICAgICBbc3NoY29ubmVjdDIuY10KICAgICByZW1vdmUgc3VwcG9ydCBmb3IgImtlcmJlcm9zLTJAc3NoLmNvbSIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjIgMTM6MjI6MjcKICAgICBbYXV0aDIuY10gKGF1dGgyLWtyYjUuYyByZW1vdmVkKQogICAgIG51a2UgImtlcmJlcm9zLTJAc3NoLmNvbSIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjIgMjA6NTU6MDYKICAgICBbTElDRU5DRV0KICAgICBhZGQgU2ltb24gV2lsa2luc29uCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yNCAxNzozNjo1MgogICAgIFttb25pdG9yLmMgbW9uaXRvcl93cmFwLmMgc3NoY29ubmVjdDIuY10KICAgICA2NCBiaXQgY2xlYW51cHM7IG1hcmt1cyBvawogICAtIGZnc2NoQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzI1IDA4OjEzOjA5CiAgICAgW3NmdHAtaW50LmNdCiAgICAgZml4IGRpdiBieSB6ZXJvIHdoZW4gbGlzdGluZyBmb3IgZmlsZW5hbWUgbGVuZ3RocyBsb25nZXIgdGhhbiB3aWR0aC4KICAgICBtYXJrdXNAIG9rLgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yNSAxMDozMzozMwogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIGZwcmludGYtPmxvZ2l0IHRvIHNpbGVuY2UgbG9naW4gYmFubmVyIHdpdGggInNzaCAtcSI7IG9rIG1hcmt1c0AKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbiBhY2NvbmZpZy5oIGF1dGgta3JiNS5jIGF1dGgtcGFtLmMgYXV0aC1wYW0uaAogICBjb25maWd1cmUuYWMgZGVmaW5lcy5oIGdzcy1zZXJ2LWtyYjUuYyBzZXNzaW9uLmMgc3NoLWdzcy5oIHNzaGNvbm5lY3QxLmMKICAgc3NoY29ubmVjdDIuY10gQWRkIFBvcnRhYmxlIEdTU0FQSSBzdXBwb3J0LCBwYXRjaCBieSBTaW1vbiBXaWxraW5zb24uCiAtIChkdHVja2VyKSBbTWFrZWZpbGUuaW5dIFJlbW92ZSBhdXRoMi1rcmI1LgogLSAoZHR1Y2tlcikgW2NvbnRyaWIvYWl4L2ludmVudG9yeS5zaF0gQWRkIHB1YmxpYyBkb21haW4gbm90aWNlLiAgb2sgbW91cmluZ0AKICAgKHRoZSBvcmlnaW5hbCBhdXRob3IpCiAtIChkdHVja2VyKSBbYXV0aC5jXSBEbyBub3QgY2hlY2sgZm9yIGxvY2tlZCBhY2NvdW50cyB3aGVuIFBBTSBpcyBlbmFibGVkLgoKMjAwMzA4MjUKIC0gKGRqbSkgQnVnICM2MjE6IFNlbGVjdCBPcGVuU0Mga2V5cyBieSB1c2FnZSBhdHRyaWJ1dGVzLiBQYXRjaCBmcm9tIAogICBsYXJzY2hAdHJ1c3RjZW50ZXIuZGUKIC0gKGJhbCkgb3BlbmJzZC1jb21wYXQvIE9wZW5CU0QgdXBkYXRlcy4gIE1vc3RseSBsaWNlbnNpbmcsIGFuc2lmaWNhdGlvbnMKICAgYW5kIG1pbm9yIGZpeGVzLiBPSyBkam1ACiAtIChiYWwpIHJlZG8gaG93IHdlIGhhbmRsZSAnbXlzaWduYWwoKScuICBNb3ZlIGl0IHRvIAogICBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jLCBzL215c2lnbmFsL3NpZ25hbC8gYW5kICNkZWZpbmUgc2lnbmFsIHRvCiAgIGJlIG91ciAnbXlzaWduYWwnIGJ5IGRlZmF1bHQuICBPSyBkam1ACiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBhdXRoLmMgY29uZmlndXJlLmFjIHNzaGQuOF0gQnVnICM0MjIgYWdhaW46IGRlbnkKICAgYW55IGFjY2VzcyB0byBsb2NrZWQgYWNjb3VudHMuICBvayBkam1ACiAtIChkam0pIEJ1ZyAjNTY0OiBQZXJmb3JtIFBBTSBhY2NvdW50IGNoZWNrcyBmb3IgYWxsIGF1dGhlbnRpY2F0aW9ucyB3aGVuCiAgIFVzZVBBTT15ZXM7IG9rIGR0dWNrZXIKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNTMzLCAjNTUxOiBkZWZpbmUgQlJPS0VOX0dFVEFERFJJTkZPIG9uCiAgIFRydTY0LCBzb2x2ZXMgZ2V0bmFtZWluZm8gYW5kICJiYWQgYWRkciBvciBob3N0IiBlcnJvcnMuICBvayBkam1ACiAtIChkdHVja2VyKSBbUkVBRE1FIGJ1aWxkYmZmLnNoIGludmVudG9yeS5zaF0gKGFsbCBpbiBjb250cmliL2FpeCkKICAgVXBkYXRlIHBhY2thZ2UgYnVpbGRlcjogY29ycmVjdGx5IGhhbmRsZSBjb25maWcgdmFyaWFibGVzLCB1c2UgbHN1c2VyCiAgIHJhdGhlciB0aGFuIC9ldGMvcGFzc3dkLCBmaXggdHlwb3MsIGFkZCBJZCdzLgoKMjAwMzA4MjIKIC0gKGRqbSkgcy9nZXRfcHJvZ25hbWUvc3NoX2dldF9wcm9nbmFtZS9nIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggSGVpbWRhbCAKICAgLWxicm9rZW47IG9rIGR0dWNrZXIgCiAtIChkdHVja2VyKSBbY29udHJpYi9jeWd3aW4vc3NoLXVzZXItY29uZmlnXSBQdXQga2V5cyBpbiBhdXRob3JpemVkX2tleXMKICAgcmF0aGVyIHRoYXQgYXV0aG9yaXplZF9rZXlzMi4gIFBhdGNoIGZyb20gdmluc2NoZW5AcmVkaGF0LmNvbS4KCjIwMDMwODIxCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzE0IDE2OjA4OjU4CiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBleGl0IGFmdGVyIHByaW1ldGVzdCwgb2sgZGptQAogLSAoZHR1Y2tlcikgW2RlZmluZXMuaF0gUHV0IENNU0dfREFUQSwgQ01TR19GSVJTVEhEUiB3aXRoIG90aGVyIENNU0cqIG1hY3JvcywKICAgY2hhbmdlIENNU0dfREFUQSB0byB1c2UgX19DTVNHX0FMSUdOIChhbmQgdGh1cyB3b3JrIHByb3Blcmx5KSwgcmVmb3JtYXQgZm9yCiAgIGNvbnNpc3RlbmN5LgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gTW92ZSBvcGVucHR5L2N0dHkgdGVzdCBvdXRzaWRlIG9mIGNhc2Ugc3RhdGVtZW50CiAgIGFuZCBhZnRlciBub3JtYWwgb3BlbnB0eSB0ZXN0LgoKMjAwMzA4MTMKIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIFJlbW92ZSAjaWZkZWYgVElPQ1NCUksga2x1ZGdlLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8xMyAwODozMzowMgogICAgIFtzZXNzaW9uLmNdCiAgICAgdXNlIG1vcmUgcG9ydGFibGUgdGNzZW5kYnJlYWsoMykgYW5kIGlnbm9yZSBicmVha19sZW5ndGg7CiAgICAgb2sgZGVyYWFkdCwgbWlsbGVydAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8xMyAwODo0NjozMQogICAgIFthdXRoMS5jIHJlYWRjb25mLmMgcmVhZGNvbmYuaCBzZXJ2Y29uZi5jIHNlcnZjb25mLmggc3NoLmMgc3NoX2NvbmZpZwogICAgIHNzaF9jb25maWcuNSBzc2hjb25uZWN0MS5jIHNzaGQuOCBzc2hkLmMgc3NoZF9jb25maWcgc3NoZF9jb25maWcuNV0KICAgICByZW1vdmUgUmhvc3RzQXV0aGVudGljYXRpb247IHN1Z2dlc3RlZCBieSBkam1AIGJlZm9yZTsgb2sgZGptQCwgZGVyYWFkdEAsCiAgICAgZmdzY2hALCBtaW9kQCwgaGVubmluZ0AsIGpha29iQCBhbmQgb3RoZXJzCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzEzIDA5OjA3OjEwCiAgICAgW3JlYWRjb25mLmMgc3NoLmNdCiAgICAgc29ja3M0LT5zb2Nrcywgc2luY2Ugd2l0aCBzdXBwb3J0IGJvdGggNCBhbmQgNTsgZHR1Y2tlckB6aXAuY29tLmF1CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjIG9wZW5ic2QtY29tcGF0L2JzZC1taXNjLmMgb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaF0KICAgQWRkIGEgdGNzZW5kYnJlYWsgZnVuY3Rpb24gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgb25lLCBiYXNlZCBvbiB0aGUKICAgb25lIGZyb20gT3BlbkJTRC4KCjIwMDMwODExCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgICh0aGFua3MgdG8gU2ltb24gV2lsa2luc29uIGZvciBoZWxwIHdpdGggdGhpcyAtZHQpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzE2IDE1OjAyOjA2CiAgICAgW2F1dGgta3JiNS5jXQogICAgIG1jYyAtPiBmY2M7IGZyb20gTG92ZSBI9nJucXVpc3QgxXN0cmFuZCA8bGhhQGl0LnN1LnNlPgogICAgIG90aGVyd2lzZSB0aGUga2VyYmVyb3MgY3JlZGVudGluYWwgaXMgc3RvcmVkIGluIGEgbWVtb3J5IGNhY2hlCiAgICAgaW4gdGhlIHByaXZpbGVnZWQgc3NoZC4gb2sgamFib2JALCBoaW5AIChzb21lIHRpbWUgYWdvKQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3hjcnlwdC5jXSBSZW1vdmUgQ3lnd2luICNpZmRlZiBibG9jayAoZHVwbGljYXRlCiAgIGluIGJzZC1jeWd3aW5fdXRpbC5oKS4KCjIwMDMwODA4CiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZmFrZS1yZmMyNTUzLmhdIE9sZGVyIExpbnV4ZXMgaGF2ZSBBSV9QQVNTSVZFIGFuZAogICBBSV9DQU5PTk5BTUUgaW4gbmV0ZGIuaCBidXQgbm90IEFJX05VTUVSSUNIT1NULCBzbyBjaGVjayBlYWNoIGRlZmluaXRpb24KICAgc2VwYXJhdGVseSBiZWZvcmUgZGVmaW5pbmcgdGhlbS4KIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBEb24ndCBzZXQgUEFNX1RUWSBpZiB0dHkgaXMgbnVsbC4gIG9rIGRqbUAKCjIwMDMwODA3CiAtIChkdHVja2VyKSBbc2Vzc2lvbi5jXSBIYXZlIHNlc3Npb25fYnJlYWtfcmVxIG5vdCBhdHRlbXB0IHRvIHNlbmQgYSBicmVhawogICBpZiBUSU9DU0JSSyBhbmQgVElPQ0NCUksgYXJlIG5vdCBkZWZpbmVkIChlZyBDeWd3aW4pLgogLSAoZHR1Y2tlcikgW2Nhbm9ob3N0LmNdIEJ1ZyAjMzM2OiBPbmx5IGNoZWNrIGlwIG9wdGlvbnMgaWYgSVBfT1BUSU9OUyBpcwogICBkZWZpbmVkIChmaXhlcyBjb21waWxlIGVycm9yIG9uIHJlYWxseSBvbGQgTGludXhlcykuCiAtIChkdHVja2VyKSBbZGVmaW5lcy5oXSBCdWcgIzMzNjogQWRkIENNU0dfREFUQSBhbmQgQ01TR19GSVJTVEhEUiBtYWNyb3MgaWYKICAgbm90IGFscmVhZHkgZGVmaW5lZCAoZWcgTGludXggd2l0aCBzb21lIHZlcnNpb25zIG9mIGxpYmM1KSwgYmFzZWQgb24gdGhvc2UKICAgZnJvbSBPcGVuQlNELgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1jeWd3aW5fdXRpbC5jIG9wZW5ic2QtY29tcGF0L2JzZC1jeWd3aW5fdXRpbC5oXQogICBSZW1vdmUgaW5jb3JyZWN0IGZpbGVuYW1lcyBmcm9tIGNvbW1lbnRzIChmaWxlIG5hbWVzIGFyZSBpbiBJZCB0YWdzKS4KIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmMgb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmhdIE1vdmUgQ3lnd2luCiAgIHNwZWNpZmljIGRlZmluZXMgYW5kIGluY2x1ZGVzIHRvIGJzZC1jeWd3aW5fdXRpbC5oLiAgRml4ZXMgYnVpbGQgZXJyb3IgdG9vLgoKMjAwMzA4MDIKIC0gKGR0dWNrZXIpIFttb25pdG9yLmggbW9uaXRvcl93cmFwLmhdIFJlbW92ZSBleGNlc3MgaWRlbnQgdGFncy4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMjIgMTM6MzU6MjIKICAgICBbYXV0aDEuYyBhdXRoLmggYXV0aC1wYXNzd2QuYyBtb25pdG9yLmMgbW9uaXRvci5oIG1vbml0b3Jfd3JhcC5jCiAgICAgbW9uaXRvcl93cmFwLmggcmVhZGNvbmYuYyByZWFkY29uZi5oIHNlcnZjb25mLmMgc2VydmNvbmYuaCBzZXNzaW9uLmMgc3NoLjEKICAgICBzc2guYyBzc2hfY29uZmlnLjUgc3NoY29ubmVjdDEuYyBzc2hkLmMgc3NoZF9jb25maWcuNSBzc2guaF0KICAgICByZW1vdmUgKGFscmVhZHkgZGlzYWJsZWQpIEtSQjQvQUZTIHN1cHBvcnQsIHJlLWVuYWJsZSAtayBpbiBzc2goMSk7CiAgICAgdGVzdCtvayBoZW5uaW5nQAogLSAoZHR1Y2tlcikgW01ha2VmaWxlLmluIGFjY29uZmlnLmggY29uZmlndXJlLmFjXSBSZW1vdmUgS1JCNC9BRlMgc3VwcG9ydC4KIC0gKGR0dWNrZXIpIFthdXRoLWtyYjQuYyByYWRpeC5jIHJhZGl4LmhdIFJlbW92ZSBLUkI0L0FGUyBzcGVjaWZpYyBmaWxlcy4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMjMgMDc6NDI6NDMKICAgICBbc3NoZF9jb25maWddCiAgICAgcmVtb3ZlIEFGUzsgaXRvanVuQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8yOCAwOTo0OTo1NgogICAgIFtzc2gta2V5Z2VuLjEgc3NoLWtleWdlbi5jXQogICAgIFN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgRGlmZmllLUhlbGxtYW4gZ3JvdXBzICgvZXRjL21vZHVsaSkgZnJvbSBzc2gta2V5Z2VuLgogICAgIEJhc2VkIG9uIGNvZGUgZnJvbSBQaGlsIEthcm4sIFdpbGxpYW0gQWxsZW4gU2ltcHNvbiBhbmQgTmllbHMgUHJvdm9zLgogICAgIG9rIG1hcmt1c0AsIHRoYW5rcyBqbWNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzI5IDE4OjI0OjAwCiAgICAgW0xJQ0VOQ0UgcHJvZ3Jlc3NtZXRlci5jXQogICAgIHJlcGxhY2UgNCBjbGF1c2UgQlNEIGxpY2Vuc2VkIHByb2dyZXNzbWV0ZXIgY29kZSB3aXRoIGEgcmVwbGFjZW1lbnQKICAgICBmcm9tIE5pbHMgTm9yZG1hbiBhbmQgbXlzZWxmOyBvayBkZXJhYWR0QAogICAgIChjb3BpZWQgZnJvbSBPcGVuQlNEIGFuIHJlLWFwcGxpZWQgcG9ydGFibGUgY2hhbmdlcykKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMjkgMTg6MjY6NDYKICAgICBbcHJvZ3Jlc3NtZXRlci5jXQogICAgIGZpeCBsZW5ndGggZm9yICItIHN0YWxsZWQgLSIgKGluY2x1ZGVkIHdpdGggcHJldmlvdXMgaW1wb3J0KQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8zMCAwNzo0NDoxNAogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgdXNlIG9ubHkgNCBkaWdpdHMgaW4gZm9ybWF0X3NpemUgKGluY2x1ZGVkIHdpdGggcHJldmlvdXMgaW1wb3J0KQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8zMCAwNzo1MzoyNwogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgd2hpdGVzcGFjZSAoaW5jbHVkZWQgd2l0aCBwcmV2aW91cyBpbXBvcnQpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzMxIDA5OjIxOjAyCiAgICAgW2F1dGgyLW5vbmUuY10KICAgICBjaGVjayB3aGV0aGVyIHBhc3N3ZCBhdXRoIGlzIGFsbG93ZCwgc2ltaWxhciB0byBwcm90byAxOyByb2JAcGl0bWFuLmNvLnphCiAgICAgb2sgaGVubmluZwogICAtIGF2c21AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMzEgMTU6NTA6MTYKICAgICBbYXRvbWljaW8uY10KICAgICBjb3JyZWN0IGNvbW1lbnQ6IGF0b21pY2lvIHRha2VzIHZ3cml0ZSwgbm90IHdyaXRlOyBkZXJhYWR0QCBvawogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8zMSAyMjozNDowMwogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgcHJpbnQgcmF0ZSBzaW1pbGFyIG9sZCB2ZXJzaW9uOyByb3VuZCBpbnN0ZWFkIHRydW5jYXRlOwogICAgIChpbmNsdWRlZCBpbiBwcmV2aW91cyBwcm9ncmVzc21ldGVyLmMgY29tbWl0KQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1taXNjLmMgb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaF0KICAgQWRkIGEgdGNnZXRwZ3JwIGZ1bmN0aW9uLgogLSAoZHR1Y2tlcikgW01ha2VmaWxlLmluIG1vZHVsaS5jIG1vZHVsaS5oXSBBZGQgbmV3IGZpbGVzIGFuZCB0byBNYWtlZmlsZS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jXSBGaXggY3V0LWFuZC1wYXN0ZSBidWcgaW4gdGNnZXRwZ3JwLgoKMjAwMzA3MzAKIC0gKGRqbSkgW2F1dGgtcGFtLmNdIERvbid0IHVzZSBjcmFwcHkgQVBJcyBsaWtlIHNwcmludGYuIFRoYW5rcyBiYWwKCjIwMDMwNzI2CiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQveGNyeXB0LmNdIEZpeCB0eXBvOiBESVNBQkxFRF9TSEFET1cgLT4KICAgRElTQUJMRV9TSEFET1cuICBGaXhlcyBIUC1VWCBjb21waWxlIGVycm9yLgoKMjAwMzA3MjQKIC0gKGJhbCkgW2F1dGgtcGFzc3dkLmMgb3BlbmJzZC1jb21wYXQvTWFrZWZpbGUuaW4gb3BlbmJzZC1jb21wYXQveGNyeXB0LmMgCiAgICBvcGVuYnNkLWNvbXBhdC94Y3J5cHQuaF0gU3BsaXQgb2ZmIGVuY3J5cHRpb24gaW50byB4Y3J5cHQoKSBpbnRlcmZhY2UsCiAgICBhbmQgaXNvbGF0ZSBzaGFkb3cgcGFzc3dvcmQgZnVuY3Rpb25zLiAgVGVzdGVkIGluIFNvbGFyaXMsIGJ1dCBzaG91bGQKICAgIG5vdCBicmVhayBvdGhlciBwbGF0Zm9ybXMgdG9vIGJhZGx5IChleGNlcHQgbWF5YmUgSFAgPSkuICBBbHNvIGJyaW5ncwogICAgYXV0aC1wYXNzd2QuYyBpbnRvIGZ1bGwgc3luYyB3aXRoIE9wZW5CU0QgdHJlZS4KCjIwMDMwNzIzCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCYWNrIG91dCBjaGFuZ2UgZm9yIGJ1ZyAjNjIwLgoKMjAwMzA3MTkKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjIwOiBEZWZpbmUgQlJPS0VOX0dFVEFERFJJTkZPIGZvcgogICBTb2xhcmlzL3g4Ni4gIFBhdGNoIGZyb20ganJoZXR0IGF0IGlzaXRlLm5ldC4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTQgMTI6MzY6MzcKICAgICBbc3NoZC5jXQogICAgIHJlbW92ZSB1bmRvY3VtZW50ZWQgLVYgb3B0aW9uLiB3b3VsZCBiZSBvbmx5IHVzZWZ1bCBpZiBvcGVuc3NoIGlzIHVzZWQKICAgICBhcyBzc2ggdjEgc2VydmVyIGZvciBzc2guY29tJ3Mgc3NoIHYyLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8xNiAxMDozNDo1MwogICAgIFtzc2guYyBzc2hkLmNdCiAgICAgZG9uJ3QgZXhpdCBvbiBtdWx0aXBsZSAtdiBvciAtZDsgb2sgZGVyYWFkdEAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTYgMTA6MzY6MjgKICAgICBbc3NodHR5LmNdCiAgICAgY2xlYXIgSVVDTEMgaW4gZW50ZXJfcmF3X21vZGU7IGZyb20gcm9iQHBpdG1hbi5jby56YTsgb2sgZGVyYWFkdEAsIGZnc0AKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzE4IDAxOjU0OjI1CiAgICAgW3NjcC5jXQogICAgIHVzZXJpZCBpcyB1bnNpZ25lZCwgYnV0IHdlbGwsIGZvcmNlIGl0IGFueXdheXM7IGFuZHJ1c2hvY2tAa29yb3Zpbm8ubmV0CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzE5IDAwOjQ1OjUzCiAgICAgW3NmdHAtaW50LmNdCiAgICAgZml4IHNmdHAgZmlsZW5hbWUgcGFyc2luZyBmb3IgYXJndW1lbnRzIHdpdGggZXNjYXBlZCBxdW90ZXMuIGJ6ICM1MTc7CiAgICAgb2sgbWFya3VzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzE5IDAwOjQ2OjMxCiAgICAgW3JlZ3Jlc3Mvc2Z0cC1jbWRzLnNoXQogICAgIHJlZ3Jlc3MgdGVzdCBmb3Igc2Z0cCBhcmd1bWVudHMgd2l0aCBlc2NhcGVkIHF1b3Rlczsgb2sgbWFya3VzCgoyMDAzMDcxNAogLSAoZHR1Y2tlcikgW2FjY29uZmlnLmggY29uZmlndXJlLmFjIHBvcnQtYWl4LmNdIE9sZGVyIEFJWGVzIGRvbid0IGRlY2xhcmUKICAgbG9naW5mYWlsZWQgYXQgYWxsLCBzbyBhc3N1bWUgMy1hcmcgbG9naW5mYWlsZWQgaWYgbm90IGRlY2xhcmVkLgogLSAoZHR1Y2tlcikgW3BvcnQtYWl4LmhdIFdvcmsgYXJvdW5kIG5hbWUgY29sbGlzaW9uIG9uIEFJWCBmb3Igcl90eXBlIGJ5CiAgIHVuZGVmJ2luZyBpdC4KIC0gKGR0dWNrZXIpIEJ1ZyAjNTQzOiBbY29uZmlndXJlLmFjIHBvcnQtYWl4LmMgcG9ydC1haXguaF0KICAgQ2FsbCBzZXRhdXRoZGIoKSBiZWZvcmUgbG9naW5mYWlsZWQoKSwgd2hpY2ggbWF5IGxvYWQgcGFzc3dvcmQgcmVnaXN0cnktCiAgIHNwZWNpZmljIGZ1bmN0aW9ucy4gIEJhc2VkIG9uIHBhdGNoIGJ5IGNhd2xmaWVsIGF0IHVzLmlibS5jb20uCiAtIChkdHVja2VyKSBbcG9ydC1haXguaF0gRml4IHByb3RvdHlwZXMuCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gYXZzbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8wOSAxMzo1ODoxOQogICAgIFtrZXkuY10KICAgICBtaW5vciB0d2Vhazogd2hlbiBnZW5lcmF0aW5nIHRoZSBoZXggZmluZ2VycHJpbnQsIGdpdmUgc3RybGNhdCB0aGUgZnVsbAogICAgIGJvdW5kIHRvIHRoZSBidWZmZXIsIGFuZCBhZGQgYSBjb21tZW50IGJlbG93IGV4cGxhaW5pbmcgd2h5IHRoZQogICAgIHplcm8tdGVybWluYXRpb24gaXMgb25lIGxlc3MgdGhhbiB0aGUgYm91bmQuICBtYXJrdXNAIG9rCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzEwIDE0OjQyOjI4CiAgICAgW3BhY2tldC5jXQogICAgIHRoZSAyXihibG9ja3NpemUqMikgcmVrZXlpbmcgbGltaXQgaXMgdG9vIGV4cGVuc2l2ZSBmb3IgM0RFUywKICAgICBibG93ZmlzaCwgZXRjLCBzbyBlbmZvcmNlIGEgMUdCIGxpbWl0IGZvciBzbWFsbCBibG9ja3NpemVzLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8xMCAyMDowNTo1NQogICAgIFtzZnRwLmNdCiAgICAgc3luYyB1c2FnZSB3aXRoIG1hbnBhZ2UsIGFkZCBtaXNzaW5nIC1SCgoyMDAzMDcwOAogLSAoZHR1Y2tlcikgW2FjY29uZmlnLmggYXV0aC1wYXNzd2QuYyBjb25maWd1cmUuYWMgc2Vzc2lvbi5jIHBvcnQtYWl4LltjaF1dCiAgIEluY2x1ZGUgQUlYIGhlYWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucyBhbmQgbWFrZSBjYWxscyBtYXRjaAogICBwcm90b3R5cGVzLiAgVGVzdCBmb3IgYW5kIGhhbmRsZSAzLWFyZyBhbmQgNC1hcmcgdmFyaWFudHMgb2YgbG9naW5mYWlsZWQuCiAtIChkdHVja2VyKSBbc2Vzc2lvbi5jXSBDaGVjayByZXR1cm4gdmFsdWUgb2Ygc2V0cGNyZWQoKS4KIC0gKGR0dWNrZXIpIFthdXRoLXBhc3N3ZC5jIGF1dGguYyBzZXNzaW9uLmMgc3NoZC5jIHBvcnQtYWl4LmMgcG9ydC1haXguaF0KICAgQ29udmVydCBhaXhsb2dpbm1zZyBpbnRvIHBsYXRmb3JtLWluZGVwZW5kYW50IEJ1ZmZlciBsb2dpbm1zZy4KCjIwMDMwNzA3CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzYwMDogQ2hlY2sgdGhhdCBnZXRydXNhZ2UgaXMgZGVjbGFyZWQgYmVmb3JlCiAgIHNlYXJjaGluZyBsaWJyYXJpZXMgZm9yIGl0LiAgRml4ZXMgYnVpbGQgZXJyb3JzIG9uIE5DUiBNUC1SQVMuCgoyMDAzMDcwNgogLSAoZHR1Y2tlcikgW3NzaC1yYW5kLWhlbHBlci5jIGxvZ2lucmVjLmNdCiAgIEFwcGx5IGF0b21pY2lvIHR5cGluZyBjaGFuZ2UgdG8gdGhlc2UgdG9vLgoKMjAwMzA3MDMKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjggMDc6NDg6MTAKICAgICBbc3NoZC5jXQogICAgIHJlcG9ydCBwaWRmaWxlIGNyZWF0aW9uIGVycm9ycywgYmFzZWQgb24gcGF0Y2ggZnJvbSBSb3VtZW4gUGV0cm92OwogICAgIG9rIG1hcmt1c0AKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzI4IDE2OjIzOjA2CiAgICAgW2F0b21pY2lvLmMgYXRvbWljaW8uaCBhdXRoZmQuYyBjbGllbnRsb29wLmMgbW9uaXRvcl93cmFwLmMgbXNnLmMKICAgICBwcm9ncmVzc21ldGVyLmMgc2NwLmMgc2Z0cC1jbGllbnQuYyBzc2gta2V5c2Nhbi5jIHNzaC5oIHNzaGNvbm5lY3QuYwogICAgIHNzaGQuY10KICAgICBkZWFsIHdpdGggdHlwaW5nIG9mIHdyaXRlIHZzIHJlYWQgaW4gYXRvbWljaW8KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjkgMTI6NDQ6MzgKICAgICBbc3NoY29ubmVjdC5jXQogICAgIG1lbXNldCAwLCBub3QgXDA7IGFuZHJ1c2hvY2tAa29yb3Zpbm8ubmV0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzAyIDEyOjU2OjM0CiAgICAgW2NoYW5uZWxzLmNdCiAgICAgZGVueSBkeW5hbWljIGZvcndhcmRpbmcgd2l0aCAtUiBmb3IgdjEsIHRvbzsgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8wMiAxNDo1MToxNgogICAgIFtjaGFubmVscy5jIHNzaC4xIHNzaF9jb25maWcuNV0KICAgICAocmUpYWRkIHNvY2tzNSBzdXBwcG9ydCB0byAtRDsgb2sgZGptQAogICAgIG5vdyBzc2goMSkgY2FuIGFjdCBib3RoIGFzIGEgc29ja3MgNCBhbmQgc29ja3MgNSBzZXJ2ZXIgYW5kCiAgICAgZHluYW1pY2FsbHkgZm9yd2FyZCBwb3J0cy4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMDIgMjA6Mzc6NDgKICAgICBbc3NoLmNdCiAgICAgY29udmVydCBob3N0a2V5YWxpYXMgdG8gbG93ZXJjYXNlLCBvdGhlcndpc2UgdXBwZXJjYXNlIGFsaWFzZXMgd2lsbAogICAgIG5vdCBtYXRjaCBhdCBhbGw7IG9rIGhlbm5pbmdACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzAzIDA4OjIxOjQ2CiAgICAgW3JlZ3Jlc3MvZHluYW1pYy1mb3J3YXJkLnNoXQogICAgIGFkZCBzb2NrczU7IHNwZWVkdXA7IHJlZm9ybWF0OyBiYXNlZCBvbiBwYXRjaCBmcm9tIGR0dWNrZXJAemlwLmNvbS5hdQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8wMyAwODoyNDoxMwogICAgIFtyZWdyZXNzL01ha2VmaWxlXQogICAgIGVuYWJsZSB0ZXN0cyBmb3IgZHluYW1pYyBmd2QgdmlhIHNvY2tzICgtRCksIHVzZXMgbmMoMSkKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMDMgMDg6MDk6MDYKICAgICBbcmVhZGNvbmYuYyByZWFkY29uZi5oIHNzaC1rZXlzaWduLmMgc3NoLmNdCiAgICAgZml4IEFkZHJlc3NGYW1pbHkgb3B0aW9uIGluIGNvbmZpZyBmaWxlLCBmcm9tIGJyZW50QGdyYXZlbGFuZC5uZXQ7CiAgICAgb2sgbWFya3VzQAoKMjAwMzA2MzAKIC0gKGRqbSkgU2VhcmNoIGZvciBzdXBwb3J0IGZ1bmN0aW9ucyBuZWNlc3NhcnkgdG8gYnVpbGQgb3VyIAogICBnZXRycnNldGJ5bmFtZSgpIHJlcGxhY2VtZW50LiBQYXRjaCBmcm9tIFJvdW1lbiBQZXRyb3YgCgoyMDAzMDYyOQogLSAoZHR1Y2tlcikgW2luY2x1ZGVzLmhdIEJ1ZyAjNjAyOiBtb3ZlICNpbmNsdWRlIG9mIG5ldGRiLmggdG8gYWZ0ZXIgaW4uaAogICAoZml4ZXMgY29tcGlsZXIgd2FybmluZ3Mgb24gU29sYXJpcyAyLjUuMSkuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBBZGQgc2FuaXR5IHRlc3QgYWZ0ZXIgc3lzdGVtLWRlcGVuZGFudCBjb21waWxlcgogICBmbGFnIG1vZGlmaWNhdGlvbnMuCiAgIAoyMDAzMDYyOAogLSAoZGptKSBCdWcgIzU5MTogdXNlIFBLQ1MjMTUgcHJpdmF0ZSBrZXkgbGFiZWwgYXMgYSBjb21tZW50IGluIGNhc2UgCiAgIG9mIE9wZW5TQy4gUmVwb3J0IGFuZCBwYXRjaCBmcm9tIGxhcnNjaEB0cnVzdGNlbnRlci5kZQogLSAoZGptKSBCdWcgIzU5MzogU2FuaXR5IGNoZWNrIE9wZW5TQyBjYXJkIHJlYWRlciBudW1iZXI7IHBhdGNoIGZyb20gCiAgIGFqQGR1bmdlb24uaW5rYS5kZQogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yMyAwOTowMjo0NAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgZG9jdW1lbnQgRW5hYmxlU1NIS2V5c2lnbjsgYnVnemlsbGEgIzU5OTsgb2sgZGVyYWFkdEAsIGptY0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjQgMDg6MjM6NDYKICAgICBbYXV0aDItaG9zdGJhc2VkLmMgYXV0aDItcHVia2V5LmMgYXV0aDIuYyBjaGFubmVscy5jIGtleS5jIGtleS5oCiAgICAgIG1vbml0b3IuYyBwYWNrZXQuYyBwYWNrZXQuaCBzZXJ2ZXJsb29wLmMgc3NoY29ubmVjdDIuYyBzc2hkLmNdCiAgICAgaW50IC0+IHVfaW50OyBvayBkam1ALCBkZXJhYWR0QCwgbW91cmluZ0AKICAgLSBtaW9kQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzI1IDIyOjM5OjM2CiAgICAgW3NmdHAtc2VydmVyLmNdCiAgICAgVHlwbyBwb2xpY2U6IGF0dHJpYnV0ZSBpcyBiZXR0ZXIgd3JpdHRlbiB3aXRoIGFuICdyJy4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjYgMjA6MDg6MzMKICAgICBbcmVhZGNvbmYuY10KICAgICBkbyBub3QgZHVtcCBjb3JlIGZvciAnc3NoIC1vIHByb3h5Y29tbWFuZCBob3N0Jzsgb2sgZGVyYWFkdEAKIC0gKGR0dWNrZXIpIFtyZWdyZXNzL2R5bmFtaWMtZm9yd2FyZC5zaF0gSW1wb3J0IG5ldyByZWdyZXNzaW9uIHRlc3QuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzU3MDogSGF2ZSAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1GRUFUVVJFIAogICBhY3R1YWxseSBlbmFibGUgdGhlIGZlYXR1cmUsIGZvciB0aG9zZSBub3JtYWxseSBkaXNhYmxlZC4gIFBhdGNoIGJ5CiAgIG9wZW5zc2ggKGF0KSByb3VtZW5wZXRyb3YuaW5mby4KCjIwMDMwNjI0CiAtIChkdHVja2VyKSBIYXZlIGNvbmZpZ3VyZSByZWZlciB0aGUgdXNlciB0byBjb25maWcubG9nIGFuZAogICBjb250cmliL2ZpbmRzc2wuc2ggZm9yIE9wZW5TU0wgaGVhZGVyL2xpYnJhcnkgbWlzbWF0Y2hlcy4KCjIwMDMwNjIyCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzIxIDA5OjE0OjA1CiAgICAgW3JlZ3Jlc3MvcmVjb25maWd1cmUuc2hdCiAgICAgbWlzc2luZyAkU1VETzsgZnJvbSBkdHVja2VyQHppcC5jb20uYXUKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTggMTE6Mjg6MTEKICAgICBbc3NoLXJzYS5jXQogICAgIGJhY2tvdXQgbGFzdCBjaGFuZ2UsIHNpbmNlIGl0IHZpb2xhdGVzIHBrY3MjMQogICAgIHN3aXRjaCB0byBzaGFyZS9taXNjL2xpY2Vuc2UudGVtcGxhdGUKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjAgMDU6NDc6NTgKICAgICBbc3NoZF9jb25maWcuNV0KICAgICBzeW5jIGRlc2NyaXB0aW9uIG9mIHByb3RvY29sIDIgY2lwaGVyIHByb3Bvc2FsOyBvayBtYXJrdXMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjAgMDU6NDg6MjEKICAgICBbc3NoZF9jb25maWddCiAgICAgc3luYyBzb21lIGltcGxlbWVudGVkIG9wdGlvbnM7IG9rIG1hcmt1c0AKIC0gKGR0dWNrZXIpIFtyZWdyZXNzL2F1dGhvcml6ZWRfa2V5c19yb290XSBSZW1vdmUgdGVtcCBkYXRhIGZpbGUgZnJvbSBDVlMuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvc2V0cHJvY3RpdGxlLmNdIEVuc3VyZSBTUFRfVFlQRSBpcyBkZWZpbmVkIGJlZm9yZQogICB0ZXN0aW5nIGl0cyB2YWx1ZS4KCjIwMDMwNjE4CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTIgMDc6NTc6MzgKICAgICBbbW9uaXRvci5jIHNzaGxvZ2luLmMgc3NocHR5LmNdCiAgICAgdHlwb3M7IGR0dWNrZXIgYXQgemlwLmNvbS5hdQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMiAxMjoyMjo0NwogICAgIFtMSUNFTkNFXQogICAgIG1lbnRpb24gbW9yZSBjb3B5cmlnaHQgaG9sZGVyczsgb2sgbWFya3VzQAogICAtIG5pbm9AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTIgMTU6MzQ6MDkKICAgICBbc2NwLmNdCiAgICAgVHlwby4gT2sgbWFya3VzQC4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTIgMTk6MTI6MDMKICAgICBbc2NhcmQuYyBzY2FyZC5oIHNzaC1hZ2VudC5jIHNzaC5jXQogICAgIGFkZCBzY19nZXRfa2V5X2xhYmVsOyBsYXJzY2ggYXQgdHJ1c3RjZW50ZXIuZGU7IGJ1Z3ppbGxhIzU5MQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xNiAwODoyMjozNQogICAgIFtzc2gtcnNhLmNdCiAgICAgbWFrZSBzdXJlIHRoZSBzaWduYXR1cmUgaGFzIGF0IGxlYXN0IHRoZSBleHBlY3RlZCBsZW5ndGggKGRvbid0CiAgICAgaW5zaXN0IG9uIGxlbiA9PSBobGVuICsgb2lkbGVuLCBzaW5jZSB0aGlzIGJyZWFrcyBzb21lIHNtYXJ0Y2FyZHMpCiAgICAgYnVnemlsbGEgIzU5Mjsgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xNiAxMDoyMjo0NQogICAgIFtzc2gtYWRkLmNdCiAgICAgcHJpbnQgb3V0IGtleSBjb21tZW50IG9uIGVhY2ggcHJvbXB0OyBtYWtlIHNzaC1hc2twYXNzIG1vcmUgdXNlYWJsZTsgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xNyAxODoxNDoyMwogICAgIFtjaXBoZXItY3RyLmNdCiAgICAgdXNlIGxpY2Vuc2UgZnJvbSAvdXNyL3NoYXJlL21pc2MvbGljZW5zZS50ZW1wbGF0ZSBmb3IgbmV3IGNvZGUKIC0gKGR0dWNrZXIpIFtyZWNvbmZpZ3VyZS5zaCByZWtleS5zaCBzZnRwLWJhZGNtZHMuc2hdCiAgIEltcG9ydCBuZXcgcmVncmVzc2lvbiB0ZXN0cyBmcm9tIE9wZW5CU0QKIC0gKGR0dWNrZXIpIFtyZWdyZXNzL2NvcHkuMSByZWdyZXNzL2NvcHkuMl0gUmVtb3ZlIHRlbXAgZGF0YSBmaWxlcyBmcm9tIENWUy4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMgKHJlZ3Jlc3MvKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMiAxMjoyMToxMwogICAgIFtNYWtlZmlsZV0KICAgICBlbmFibGUgcmVrZXkgdGVzdAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wNCAwOTozNDoyMgogICAgIFtNYWtlZmlsZSBzZnRwLWNtZHMuc2hdCiAgICAgTW9yZSByZWdyZXNzaW9uIHRlc3RzLCBpbmNsdWRpbmcgcmVjZW50IGRpcmVjdG9yeSByZW5hbWUgYnVnOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE0IDIyOjA4OjI3CiAgICAgW3NzaC1jb20tY2xpZW50LnNoIHNzaC1jb20ta2V5Z2VuLnNoIHNzaC1jb20tc2Z0cC5zaCBzc2gtY29tLnNoXQogICAgIHRlc3QgYWdhaW5zdCBzb21lIG5ldyBjb21tZXJpY2FsIHZlcnNpb25zCiAgIC0gbW91cmluZ0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwNDowNzoxMgogICAgIFtzZnRwLWNtZHMuc2hdCiAgICAgQWR2YW5jZWQgcHV0L2dldCB0ZXN0aW5nIGZvciBzZnRwLiAgT0sgQGRqbQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMiAxNTo0MDowMQogICAgIFt0cnktY2lwaGVycy5zaF0KICAgICBhZGQgY3RyCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzEyIDE1OjQzOjMyCiAgICAgW01ha2VmaWxlXQogICAgIHRlc3QgLUhVUDsgZHR1Y2tlciBhdCB6aXAuY29tLmF1CgoyMDAzMDYxNAogLSAoZGptKSBVcGRhdGUgbGljZW5zZSBvbiBmYWtlLXJmYzI1NTMuW2NoXTsgb2sgaXRvanVuQAoKMjAwMzA2MTEKIC0gKGRqbSkgTWVudGlvbiBwb3J0YWJsZSBjb3B5cmlnaHQgaG9sZGVycyBpbiBMSUNFTlNFCiAtIChkam0pIFB1dCBsaWNlbnNlcyBvbiBzdWJzdGFudGlhbCBoZWFkZXIgZmlsZXMKIC0gKGRqbSkgU3luYyBMSUNFTlNFIGFnYWluc3QgT3BlbkJTRAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzEwIDA5OjEyOjExCiAgICAgW3NjcC4xIHNmdHAtc2VydmVyLjggc3NoLjEgc3NoLWFkZC4xIHNzaC1hZ2VudC4xIHNzaF9jb25maWcuNV0KICAgICBbc3NoZC44IHNzaGRfY29uZmlnLjUgc3NoLWtleWdlbi4xIHNzaC1rZXlzY2FuLjEgc3NoLWtleXNpZ24uOF0KICAgICAtIHNlY3Rpb24gcmVvcmRlcgogICAgIC0gQ09NUEFUSUJJTElUWSBtZXJnZQogICAgIC0gbWFjcm8gY2xlYW51cAogICAgIC0ga2lsbCB3aGl0ZXNwYWNlIGF0IEVPTAogICAgIC0gbmV3IHNlbnRlbmNlLCBuZXcgbGluZQogICAgIHNzaCBwYWdlcyBvayBtYXJrdXNACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMCAyMjoyMDo1MgogICAgIFtwYWNrZXQuYyBwcm9ncmVzc21ldGVyLmNdCiAgICAgbW9zdGx5IGFuc2kgY2xlYW51cDsgcHZhbCBvawogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzExIDEwOjE2OjE2CiAgICAgW3NzaGNvbm5lY3QuY10KICAgICBjbGVhbiB1cCBjaGVja19ob3N0X2tleSgpIGFuZCBpbXByb3ZlIFNTSEZQIGZlZWRiYWNrLiBvayBtYXJrdXNACiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTEgMTA6MTg6NDcKICAgICBbZG5zLmNdCiAgICAgc3luYyB3aXRoIGNoZWNrX2hvc3Rfa2V5KCkgY2hhbmdlCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzExIDExOjE4OjM4CiAgICAgW2F1dGhmZC5jIGF1dGhmZC5oIHNzaC1hZGQuYyBzc2gtYWdlbnQuY10KICAgICBtYWtlIGFnZW50IGNvbnN0cmFpbnRzIChsaWZldGltZSwgY29uZmlybSkgd29yayB3aXRoIHNtYXJ0Y2FyZCBrZXlzOyAKICAgICBvayBtYXJrdXNACgoKMjAwMzA2MDkKIC0gKGRqbSkgU3luYyBSRUFETUUuc21hcnRjYXJkIHdpdGggT3BlbkJTRCAtY3VycmVudAogLSAoZGptKSBSZS1tZXJnZSBPcGVuU0MgaW5mbyBpbnRvIFJFQURNRS5zbWFydGNhcmQKCjIwMDMwNjA2CiAtIChkdHVja2VyKSBbdWlkc3dhcC5jXSBGaXggc2V0cmV1aWQgYW5kIGFkZCBtaXNzaW5nIGFyZ3MgdG8gZmF0YWwoKS4gb2sgZGptQAoKMjAwMzA2MDUKIC0gKGRqbSkgU3VwcG9ydCBBSV9OVU1FUklDSE9TVCBpbiBmYWtlLWdldGFkZHJpbmZvLmMuIE5lZWRlZCBmb3IgcmVjZW50CiAgIGNhbm9ob3N0LmMgY2hhbmdlcy4KIC0gKGRqbSkgSW1wbGVtZW50IHBhcmFub2lkIHByaXYgZHJvcHBpbmcgY2hlY2tzLCBiYXNlZCBvbjoKICAgIlNldFVJRCBkZW15c3RpZmllZCIgLSBIYW8gQ2hlbiwgRGF2aWQgV2FnbmVyIGFuZCBEcmV3IERlYW4KICAgUHJvY2VlZGluZ3Mgb2YgVVNFTklYIFNlY3VyaXR5IFN5bXBvc2l1bSAyMDAyCiAtIChkam0pIERvbid0IHVzZSB4bWFsbG9jKCkgb3IgcHVsbCBpbiB0b3BsZXZlbCBoZWFkZXJzIGluIGZha2UtKiBjb2RlCiAtIChkam0pIE1lcmdlIGFsbCB0aGUgb3BlbmJzZC9mYWtlLSogaW50byBmYWtlLXJmYzI1NTMuW2NoXQogLSAoZGptKSBCdWcgIzU4OCAtIEFkZCBzY2FyZC1vcGVuc2MubyBiYWNrIHRvIE1ha2VmaWxlLmluCiAgIFBhdGNoIGZyb20gbGFyc2NoQHRydXN0Y2VudGVyLmRlCiAtIChkam0pIEJ1ZyAjNTg5IC0gc2NhcmQtb3BlbnNjOiBsb2FkIG9ubHkga2V5cyB3aXRoIGEgcHJpdmF0ZSBrZXlzCiAgIFBhdGNoIGZyb20gbGFyc2NoQHRydXN0Y2VudGVyLmRlCiAtIChkdHVja2VyKSBBZGQgaW5jbHVkZXMuaCB0byBmYWtlLXJmYzI1NTMuYyBzbyBpdCB3aWxsIGJ1aWxkLgogLSAoZHR1Y2tlcikgRGVmaW5lIEVBSV9OT05BTUUgaW4gZmFrZS1yZmMyNTUzLmggKHVzZWQgYnkgZmFrZS1yZmMyNTUzLmMpLgoKMjAwMzA2MDQKIC0gKGRqbSkgQnVnICM1NzMgLSBSZW1vdmUgdW5uZWVkZWQgS3JiIGhlYWRlcnMgYW5kIGNvbXBhdCBnb29wLiBQYXRjaCBmcm9tCiAgIHNpbW9uQHN4dy5vcmcudWsgKEFsc28gbWF0Y2hlcyBhIGNoYW5nZSBpbiBPcGVuQlNEIGEgd2hpbGUgYWdvKQogLSAoZGptKSBCdWcgIzU3NyAtIHdyb25nIGZsYWcgaW4gc2NhcmQtb3BlbnNjLmMgc2NfcHJpdmF0ZV9kZWNyeXB0LiAKICAgUGF0Y2ggZnJvbSBsYXJzY2hAdHJ1c3RjZW50ZXIuZGU7IG9rIG1hcmt1c0AKIC0gKGRqbSkgQnVnICM1ODQ6IHNjYXJkLW9wZW5zYy5jIGRvZXNuJ3Qgd29yayB3aXRob3V0IFBJTi4gUGF0Y2ggZnJvbSAKICAgbGFyc2NoQHRydXN0Y2VudGVyLmRlOyBvayBtYXJrdXNACiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMDQgMDg6MjU6MTgKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGRpc2FibGUgY2hhbGxlbmdlL3Jlc3BvbnNlIGFuZCBrZXlib2FyZC1pbnRlcmFjdGl2ZSBhdXRoIG1ldGhvZHMgCiAgICAgdXBvbiBob3N0a2V5IG1pc21hdGNoLiBiYXNlZCBvbiBwYXRjaCBmcm9tIGZjdXNhY2sgQVQgZmN1c2Fjay5jb20uIAogICAgIGJ6ICM1ODA7IG9rIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMDQgMTA6MjM6NDgKICAgICBbc3NoZC5jXQogICAgIHJlbW92ZSBkdXBsaWNhdGVkIGdyb3VwLWRyb3BwaW5nIGNvZGU7IG9rIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMDQgMTI6MDM6NTkKICAgICBbc2VydmVybG9vcC5jXQogICAgIHJlbW92ZSBiaXRyb3R0ZW4gY29tbWV0OyBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzA0IDEyOjE4OjQ5CiAgICAgW3NjcC5jXQogICAgIGFuc2lmeTsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wNCAxMjo0MDozOQogICAgIFtzY3AuY10KICAgICBraWxsIHNzaCBwcm9jZXNzIHVwb24gcmVjZWlwdCBvZiBzaWduYWwsIGJ6ICMyNDEuCiAgICAgYmFzZWQgb24gcGF0Y2ggZnJvbSBlc2IgQVQgaGF3YWlpLmVkdTsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wNCAxMjo0MToyMgogICAgIFtzZnRwLmNdCiAgICAga2lsbCBzc2ggcHJvY2VzcyBvbiByZWNlaXB0IG9mIHNpZ25hbDsgb2sgbWFya3VzQAogLSAoZGptKSBVcGRhdGUgdG8gZml4IG9mIGJ1ZyAjNTg0OiBsb2NrIGNhcmQgYmVmb3JlIHJldHVybi4gCiAgIEZyb20gbGFyc2NoQHRydXN0Y2VudGVyLmRlCiAtIChkam0pIEFsd2F5cyB1c2UgbXlzaWduYWwoKSBmb3IgU0lHQUxSTQoKMjAwMzA2MDMKIC0gKGRqbSkgUmVwbGFjZSBzZXRwcm9jdGl0bGUgcmVwbGFjZW1lbnQgd2l0aCBjb2RlIGRlcml2ZWQgZnJvbSAKICAgVUNCIHNlbmRtYWlsCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMDIgMDk6MTc6MzQKICAgICBbYXV0aDItaG9zdGJhc2VkLmMgYXV0aC5jIGF1dGgtb3B0aW9ucy5jIGF1dGgtcmhvc3RzLmMgYXV0aC1yaC1yc2EuY10KICAgICBbY2Fub2hvc3QuYyBtb25pdG9yLmMgc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNlc3Npb24uYyBzc2hkX2NvbmZpZ10KICAgICBbc3NoZF9jb25maWcuNV0KICAgICBkZXByZWNhdGUgVmVyaWZ5UmV2ZXJzZU1hcHBpbmcgc2luY2UgaXQncyBkYW5nZXJvdXMgaWYgY29tYmluZWQKICAgICB3aXRoIElQIGJhc2VkIGFjY2VzcyBjb250cm9sIGFzIG5vdGVkIGJ5IE1pa2UgSGFyZGluZzsgcmVwbGFjZSB3aXRoCiAgICAgYSBVc2VETlMgb3B0aW9uLCBVc2VETlMgaXMgb24gYnkgZGVmYXVsdCBhbmQgaW5jbHVkZXMgdGhlCiAgICAgVmVyaWZ5UmV2ZXJzZU1hcHBpbmcgY2hlY2s7IHdpdGggaXRvanVuQCwgcHJvdm9zQCwgamFrb2JAIGFuZCBkZXJhYWR0QAogICAgIG9rIGRlcmFhZHRALCBkam1ACiAgIC0gbWlsbGVydEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wMyAwMjo1NjoxNgogICAgIFtzY3AuY10KICAgICBSZW1vdmUgdGhlIGFkdmVydGlzaW5nIGNsYXVzZSBpbiB0aGUgVUNCIGxpY2Vuc2Ugd2hpY2ggQmVya2VsZXkKICAgICByZXNjaW5kZWQgMjIgSnVseSAxOTk5LiAgUHJvb2ZlZCBieSBteXNlbGYgYW5kIFRoZW8uCiAtIChkam0pIEZpeCBwb3J0YWJsZS1zcGVjaWZpYyB1c2VzIG9mIHZlcmlmeV9yZXZlcnNlX21hcHBpbmcgdG9vCiAtIChkam0pIFN5bmMgb3BlbmJzZC1jb21wYXQgd2l0aCBPcGVuQlNEIENWUy4gCiAgICAtIE5vIG1vcmUgNC10ZXJtIEJTRCBsaWNlbnNlcyBpbiBsaW5rZWQgY29kZQogLSAoZHR1Y2tlcikgW3BvcnQtYWl4LmMgYnNkLWNyYXkuY10gRml4IHVzZXMgb2YgdmVyaWZ5X3JldmVyc2VfbWFwcGluZy4KCjIwMDMwNjAyCiAtIChkam0pIEZpeCBzZWd2IGZyb20gYmFkIHJlb3JkZXJpbmcgaW4gYXV0aC1wYW0uYwogLSAoZGptKSBBbHdheXMgdXNlIHNhdmVkX2FyZ3YgaW4gc3NoZC5jIGFzIGNvbXBhdF9pbml0X3NldHByb2N0aXRsZSBtYXkgCiAgIGNsb2JiZXIKIC0gKHRpbSkgb3BlbmJzZC1jb21wYXQveG1tYXAuW2NoXSBMaWNlbnNlIGNsYXJpZmljYXRpb25zLiBBZGQgbWlzc2luZwogICBDVlMgSUQuCiAtIChkam0pIFJlbW92ZSAibm9pcDYiIG9wdGlvbiBmcm9tIFJlZEhhdCBzcGVjIGZpbGUuIFRoaXMgbWF5IG5vdyBiZSAKICAgc2V0IGF0IHJ1bnRpbWUgdXNpbmcgQWRkcmVzc0ZhbWlseSBvcHRpb24uCiAtIChkam0pIEZpeCB1c2Ugb2YgbWFjcm8gYmVmb3JlICNkZWZpbmUgaW4gY2lwaGVyLWFlcy5jCiAtIChkam0pIFN5bmMgbGljZW5zZSBvbiBvcGVuYnNkLWNvbXBhdC9iaW5kcmVzdnBvcnQuYyB3aXRoIE9wZW5CU0QgQ1ZTCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMjYgMTI6NTQ6NDAKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGZpeCBmb3JtYXQgc3RyaW5nczsgb2sgbWFya3VzQAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMjkgMTY6NTg6NDUKICAgICBbc3NoZC5jIHVpZHN3YXAuY10KICAgICBzZXRldWlkIGFuZCBzZXRlZ2lkOyBtYXJrdXMgb2sKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wMiAwODozMToxMAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgVmVyaWZ5SG9zdEtleUROUyBpcyB2MiBvbmx5LiBvayBtYXJrdXNACgoyMDAzMDUzMAogLSAoZHR1Y2tlcikgQWRkIG1pc3Npbmcgc2VtaWNvbG9uIGluIG1kNWNyeXB0LmMsIHBhdGNoIGZyb20gb3BlbnNzaCBhdAogICByb3VtZW5wZXRyb3YuaW5mbwogLSAoZHR1Y2tlcikgRGVmaW5lIFNTSERfQUNRVUlSRVNfQ1RUWSBmb3IgTkNSIE1QLVJBUyBhbmQgUmVsaWFudCBVbml4LgoKMjAwMzA1MjYKIC0gKGRqbSkgQXZvaWQgYXV0aDItY2hhbGwuYyB3YXJuaW5nIHdoZW4gY29tcGlsaW5nIHdpdGhvdXQgCiAgIFBBTSwgQlNEX0FVVEggYW5kIFNLRVkKCjIwMDMwNTI1Ci0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yNCAwOTowMjoyMgogICAgIFtsb2cuY10KICAgICBwYXNzIGxvZ2dlZCBkYXRhIHRocm91Z2ggc3RybnZpczsgb2sgbWFya3VzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzI0IDA5OjMwOjQwCiAgICAgW2F1dGhmaWxlLmMgbW9uaXRvci5jIHNmdHAtY29tbW9uLmMgc3NocHR5LmNdCiAgICAgY2FzdCBzb21lIHR5cGVzIGZvciBwcmludGluZzsgb2sgbWFya3VzQAoKMjAwMzA1MjQKIC0gKGR0dWNrZXIpIENvcnJlY3QgLS1vc2ZzaWEgaW4gSU5TVEFMTC4gIFBhdGNoIGJ5IHNrZWxldGVuIGF0IHNoaWxsZXN0Lm5ldAoKMjAwMzA1MjMKIC0gKGRqbSkgVXNlIFZJU19TQUZFIG9uIGxvZ2dlZCBzdHJpbmdzIHJhdGhlciB0aGFuIGRlZmF1bHQgc3RybnZpcyAKICAgZW5jb2RpbmcgKHdoaWNoIGVuY29kZXMgbWFueSBtb3JlIGNoYXJhY3RlcnMpCiAtIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMjAgMTI6MDM6MzUKICAgICBbc2Z0cC4xXQogICAgIC0gbmV3IHNlbnRlbmNlLCBuZXcgbGluZQogICAgIC0gYWRkZWQgLlhyJ3MKICAgICAtIHR5cG9zCiAgICAgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yMCAxMjowOTozMQogICAgIFtzc2guMSBzc2hfY29uZmlnLjUgc3NoZC44IHNzaGRfY29uZmlnLjUgc3NoLWtleWdlbi4xXQogICAgIG5ldyBzZW50ZW5jZSwgbmV3IGxpbmUKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMjMgMDg6Mjk6MzAKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGZpeCBsZWFrOyBvayBtYXJrdXNACgoyMDAzMDUyMAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xOCAyMzoyMjowMQogICAgIFtsb2cuY10KICAgICB1c2Ugc3lzbG9nX3IoKSBpbiBhIHNpZ25hbCBoYW5kbGVyIGNhbGxlZCBwbGFjZTsgbWFya3VzIG9rCiAtIChkam0pIENvbmZpZ3VyZSBsb2dpYyB0byBkZXRlY3Qgc3lzbG9nX3IgYW5kIGZyaWVuZHMKCjIwMDMwNTE5CiAtIChkam0pIFN5bmMgYXV0aC1wYW0uaCB3aXRoIHdoYXQgd2UgYWN0dWFsbHkgaW1wbGVtZW50CgoyMDAzMDUxOAogLSAoZGptKSBSZXR1cm4gb2YgdGhlIGRyZWFkZWQgUEFNX1RUWV9LTFVER0UsIHdoaWNoIHdlbnQgbWlzc2luZyBpbiAKICAgcmVjZW50IG1lcmdlCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTYgMDM6Mjc6MTIKICAgICBbcmVhZGNvbmYuYyBzc2hfY29uZmlnIHNzaF9jb25maWcuNSBzc2gta2V5c2lnbi5jXQogICAgIGFkZCBBZGRyZXNzRmFtaWx5IG9wdGlvbiB0byBzc2hfY29uZmlnIChsaWtlIC00LCAtNiBvbiBjb21tYW5kbGluZSkuCiAgICAgUG9ydGFibGUgYnVnICM1MzQ7IG9rIG1hcmt1c0AKICAgLSBpdG9qdW5AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTcgMDM6MjU6NTgKICAgICBbYXV0aC1yaG9zdHMuY10KICAgICBqdXN0IGluIGNhc2UsIHB1dCBudW1iZXJzIHRvIHNzY2FuZiAlcyBhcmcuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE3IDA0OjI3OjUyCiAgICAgW2NpcGhlci5jIGNpcGhlci1jdHIuYyBteXByb3Bvc2FsLmhdCiAgICAgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGFlcy1jdHIgbW9kZXMgZnJvbQogICAgIGh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWlldGYtc2Vjc2gtbmV3bW9kZXMtMDAudHh0CiAgICAgb2sgZGptQAogLSAoZGptKSBSZW1vdmUgSVB2NCBieSBkZWZhdWx0IGhhY2sgbm93IHRoYXQgd2UgY2FuIHNwZWNpZnkgQUYgaW4gY29uZmlnCiAtIChkam0pIFRpZHkgYW5kIHRyaW0gVE9ETwogLSAoZGptKSBTeW5jIG9wZW5ic2QtY29tcGF0LyB3aXRoIE9wZW5CU0QgQ1ZTIGhlYWQKIC0gKGRqbSkgQmlnIEtORiBvbiBvcGVuYnNkLWNvbXBhdC8KIC0gKGRqbSkgS05GIG9uIG1kNWNyeXB0LltjaF0KIC0gKGRqbSkgS05GIG9uIGF1dGgtc2lhLltjaF0KCjIwMDMwNTE3CiAtIChiYWwpIHN0cmNhdCAtPiBzdHJsY2F0IG9uIG9wZW5ic2QtY29tcGF0L3JlYWxwYXRoLmMgKHJldiAxLjggT3BlbkJTRCkKCjIwMDMwNTE2CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMTM6NTI6MTAKICAgICBbc3NoLmNdCiAgICAgTWFrZSAic3NoIC1WIiBwcmludCB0aGUgT3BlblNTTCB2ZXJzaW9uIGluIGEgaHVtYW4gcmVhZGFibGUgZm9ybS4gUGF0Y2gKICAgICBmcm9tIENyYWlnIExlcmVzIChtaW5kcm90IGF0IGVlLmxibC5nb3YpOyBvayBtYXJrdXNACiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMTQ6MDI6NDcKICAgICBbcmVhZGNvbmYuYyBzZXJ2Y29uZi5jXQogICAgIHdhcm4gZm9yIHVuc3VwcG9ydGVkIGNvbmZpZyBvcHRpb24uIG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMTQ6MDk6MjEKICAgICBbYXV0aDIta3JiNS5jXQogICAgIGZpeCA2NGJpdCBpc3N1ZTsgcmVwb3J0IGl0b2p1bkAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMTQ6NTU6MjUKICAgICBbcmVhZGNvbmYuYyByZWFkY29uZi5oIHNzaF9jb25maWcgc3NoX2NvbmZpZy41IHNzaGNvbm5lY3QuY10KICAgICBhZGQgYSBDb25uZWN0VGltZW91dCBvcHRpb24gdG8gc3NoLCBiYXNlZCBvbiBwYXRjaCBmcm9tCiAgICAgSmVhbi1DaGFybGVzIExvbmd1ZXQgKGpjbG9uZ3VldCBhdCBmcmVlLmZyKTsgcG9ydGFibGUgIzIwNyBvayBtYXJrdXNACiAtIChkam0pIEFkZCB3YXJuaW5nIGZvciBVc2VQQU0gd2hlbiBidWlsdCB3aXRob3V0IFBBTSBzdXBwb3J0CiAtIChkam0pIEEgZmV3IHR5cGUgbWlzbWF0Y2ggZml4ZXMgZnJvbSBCdWcgIzU2NQogLSAoZGptKSBHdWFyZCBmcmVlX3BhbV9lbnZpcm9ubWVudCBhZ2FpbnN0IE5VTEwgYXJndW1lbnQuIFdvcmtzIGFyb3VuZAogICBIUC9VWCBQQU0gcHJvYmxlbXMgZGVidWdnZWQgYnkgZHR1Y2tlcgoKMjAwMzA1MTUKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNCAxMzoxMTo1NgogICAgIFtzc2gtYWdlbnQuMV0KICAgICBzZXR1cCAtPiBzZXQgdXA7CiAgICAgZnJvbSB3aXpAbmV0YnNkCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMTg6MTY6MjAKICAgICBba2V5LmMga2V5LmggcmVhZGNvbmYuYyByZWFkY29uZi5oIHNzaF9jb25maWcuNSBzc2hjb25uZWN0LmNdCiAgICAgW2Rucy5jIGRucy5oIFJFQURNRS5kbnMgc3NoLWtleWdlbi4xIHNzaC1rZXlnZW4uY10KICAgICBhZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHZlcmlmeWluZyBob3Mga2V5cyB1c2luZyBETlMgYXMgZGVzY3JpYmVkCiAgICAgaW4gZHJhZnQtaWV0Zi1zZWNzaC1kbnMteHgudHh0LiBtb3JlIGluZm9ybWF0aW9uIGluIFJFQURNRS5kbnMuCiAgICAgb2sgbWFya3VzQCBhbmQgaGVubmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMjI6MjQ6NDIKICAgICBbY2xpZW50bG9vcC5jIHNlc3Npb24uYyBzc2guMV0KICAgICBhbGxvdyB0byBzZW5kIGEgQlJFQUsgdG8gdGhlIHJlbW90ZSBzeXN0ZW07IG9rIHZhcmlvdXMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDA6Mjg6MjgKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBjbGVhbnVwIHVucmVnaXN0ZXIgb2YgcGVyLW1ldGhvZCBwYWNrZXQgaGFuZGxlcnM7IG9rIGRqbUAKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwMTo0ODoxMAogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc2VydmNvbmYuYyBzZXJ2Y29uZi5oXQogICAgIGFsd2F5cyBwYXJzZSBrZXJiZXJvcyBvcHRpb25zLiBvayBkam1AIG1hcmt1c0AKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwMjoyNzoxNQogICAgIFtkbnMuY10KICAgICBhZGQgbWlzc2luZyBmcmVlcnJzZXQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDM6MDg6MjkKICAgICBbY2lwaGVyLmMgY2lwaGVyLWJmMS5jIGNpcGhlci1hZXMuYyBjaXBoZXItM2RlczEuY10KICAgICBzcGxpdCBvdXQgY3VzdG9tIEVWUCBjaXBoZXJzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDAzOjEwOjUyCiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBhdm9pZCB3YXJuaW5nOyBvayBqYWtvYkAKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDAzOjM5OjA3CiAgICAgW3NmdHAtaW50LmNdCiAgICAgTWFrZSBwdXQvZ2V0IChnbG9iZWQgYW5kIG5vbmdsb2JlZCkgY29kZSBtb3JlIGNvbnNpc3RhbnQuIE9LIGRqbUAKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDAzOjQzOjU5CiAgICAgW3NmdHAtaW50LmMgc2Z0cC5jXQogICAgIFRlYWNoIGxzIGhvdyB0byBkaXNwbGF5IG11bHRpcGxlIGNvbHVtbiBkaXNwbGF5IGFuZCBhbGxvdyB1c2VycyAKICAgICB0byByZXR1cm4gdG8gc2luZ2xlIGNvbHVtbiBmb3JtYXQgdmlhICdscyAtMScuICBPSyBAZGptCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDQ6MDg6NDQKICAgICBbcmVhZGNvbmYuYyBzZXJ2Y29uZi5jXQogICAgIGRpc2FibGUga2VyYmVyb3Mgd2hlbiBub3Qgc3VwcG9ydGVkLiBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDA0OjA4OjQxCiAgICAgW3NzaC4xXQogICAgIH5CIGlzIHNzaDIgb25seQogLSAoZGptKSBBbHdheXMgcGFyc2UgVXNlUEFNCiAtIChkam0pIENvbmZpZ3VyZSBnbHVlIGZvciBETlMgc3VwcG9ydCAoY29kZSBkb2Vzbid0IHdvcmsgaW4gcG9ydGFibGUgeWV0KQogLSAoZGptKSBJbXBvcnQgZ2V0cnJzZXRieW5hbWUoKSBmdW5jdGlvbiBmcm9tIE9wZW5CU0QgbGliYyAoZm9yIEROUyBzdXBwb3J0KQogLSAoZGptKSBUaWR5IE1ha2VmaWxlIGNsZWFuIHRhcmdldHMKIC0gKGRqbSkgQWRhcHQgUkVBRE1FLmRucyBmb3IgcG9ydGFibGUKIC0gKGRqbSkgQXZvaWQgdXVlbmNvZGUuYyB3YXJuaW5ncwogLSAoZGptKSBFbmFibGUgVXNlUEFNIHdoZW4gYnVpbHQgLS13aXRoLXBhbQogLSAoZGptKSBPbmx5IGJ1aWxkIGdldHJyc2V0YnluYW1lIHJlcGxhY2VtZW50IHdoZW4gdXNpbmcgLS13aXRoLWRucwogLSAoZGptKSBCdWcgIzUyOTogc3NoZCBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IGFmdGVyIFNJR0hVUCAoY29weSBhcmd2IAogICAgICAgICBjb3JyZWN0bHkpCiAtIChkam0pIEJ1ZyAjNDQ0OiBXcm9uZyBwYXRocyBhZnRlciByZWNvbmZpZ3VyZQogLSAoZHR1Y2tlcikgSFAtVVggbmVlZHMgdG8gaW5jbHVkZSA8c3lzL3N0cnRpby5oPiBmb3IgVElPQ1NCUksKCjIwMDMwNTE0CiAtIChkam0pIEJ1ZyAjMTE3OiBEb24ndCBsaWUgdG8gUEFNIGFib3V0IHVzZXJuYW1lCiAtIChkam0pIFJDU0lEIHN5bmMgdy8gT3BlbkJTRAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzA5IDEyOjAwOjM3CiAgICAgW3JlYWRjb25mLmNdCiAgICAgc3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIGNvbmZpZyBsaW5lcyBiZWZvcmUgcGFyc2luZy4gCiAgICAgRml4ZXMgYnogNTI4OyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzEyIDEwOjEzOjU3CiAgICAgW2NpcGhlci5jXQogICAgIGhpZGUgY2lwaGVyIGRldGFpbHM7IG9rIGRqbUAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMTIgMTA6MTU6MzYKICAgICBbbWlzYy5jXQogICAgIGRlYnVnLT5kZWJ1ZzIKICAgLSBuYWRkeUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8xMiAxMTo0MDoxNQogICAgIFtzc2guMV0KICAgICBkb2N1bWVudCAtViBzd2l0Y2gsIGZpeCB3b3JkaW5nOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzE0IDE0OjE3OjUwCiAgICAgW2NoYW5uZWxzLmMgc3NoY29ubmVjdC5jIHNzaGQuYyBzc2gta2V5c2Nhbi5jXQogICAgIGF2b2lkIGhhcmRjb2RlZCBTT0NLX3h4OyB3aXRoIGl0b2p1bkA7IHNob3VsZCBhbGxvdyBzc2ggb3ZlciBTQ1RQCiAgIC0gbW91cmluZ0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8xNCAyMTozMToyNwogICAgIFtzZnRwLWludC5jXQogICAgIE1pc3NpbmcgZ2xvYmZyZWUoJmcpIGluIHByb2Nlc3NfcHV0KCkgc3BvdHRlZCBieSBWaW5jZSBCcmltaGFsbAogICAgIDxWQnJpbWhhbGxAbm92ZWxsLmNvbT4uICBva0AgVGhlbwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8xNiAxNDozNToyNwogICAgIFthdXRoLmhdCiAgICAgZG9jdW1lbnQgc3RydWN0IEF1dGhjdHh0OyB3aXRoIHNvbGFyCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8yNiAwNDoyOTo0OQogICAgIFtzc2gta2V5c2Nhbi5jXQogICAgIC10IGluIHVzYWdlKCk7IHJvZ2llckBxdWFhay5vcmcKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzMwIDAxOjE2OjIwCiAgICAgW3NzaGQuOCBzc2hkX2NvbmZpZy41XQogICAgIEVzY2FwZSA/LCAqIGFuZCAhIGluIC5RbCBmb3IgbnJvZmYgY29tcGF0aWJpbGl0eS4gIE9wZW5TU0ggUG9ydGFibGUgCiAgICAgQnVnICM1NTAgYW5kICogZXNjYXBpbmcgc3VnZ2VzdGVkIGJ5IGptY0AuCiAgIC0gZGF2aWRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMzAgMjA6NDE6MDcKICAgICBbc3NoZC44XQogICAgIGZpeCBpbnZhbGlkIC5QZiBtYWNybyB1c2FnZSBpbnRyb2R1Y2VkIGluIHByZXZpb3VzIGNvbW1pdAogICAgIG9rIGptY0AgbW91cmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTEgMTY6NTY6NDgKICAgICBbYXV0aGZpbGUuYyBzc2gta2V5Z2VuLmNdCiAgICAgY2hhbmdlIGtleV9sb2FkX3B1YmxpYyB0byB0cnkgdG8gcmVhZCBhIHB1YmxpYyBmcm9tOgogICAgIHJzYTEgcHJpdmF0ZSBvciByc2ExIHB1YmxpYyBhbmQgc3NoMiBrZXlzLgogICAgIHRoaXMgbWFrZXMgc3NoLWtleWdlbiAtZSBmYWlsIGZvciBzc2gxIGtleXMgbW9yZSBncmFjZWZ1bGx5CiAgICAgZm9yIGV4YW1wbGU7IHJlcG9ydCBmcm9tIGl0b2p1biAobmV0YnNkIHByIDIwNTUwKS4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTEgMjA6MzA6MjUKICAgICBbY2hhbm5lbHMuYyBjbGllbnRsb29wLmMgc2VydmVybG9vcC5jIHNlc3Npb24uYyBzc2guY10KICAgICBtYWtlIGNoYW5uZWxfbmV3KCkgc3RyZHVwIHRoZSAncmVtb3RlX25hbWUnIChub3QgdGhlIGNhbGxlcik7IG9rIHRoZW8KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTIgMTY6NTU6MzcKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBmb3IgcHVia2V5IGF1dGhlbnRpY2F0aW9uIHRyeSB0aGUgdXNlciBrZXlzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CiAgICAgICAgMS4gYWdlbnQga2V5cyB0aGF0IGFyZSBmb3VuZCBpbiB0aGUgY29uZmlnIGZpbGUKICAgICAgICAyLiBvdGhlciBhZ2VudCBrZXlzCiAgICAgICAgMy4ga2V5cyB0aGF0IGFyZSBvbmx5IGxpc3RlZCBpbiB0aGUgY29uZmlnIGZpbGUKICAgICB0aGlzIGhlbHBzIHdoZW4gYW4gYWdlbnQgaGFzIG1hbnkga2V5cywgd2hlcmUgdGhlIHNlcnZlciBtaWdodAogICAgIGNsb3NlIHRoZSBjb25uZWN0aW9uIGJlZm9yZSB0aGUgY29ycmVjdCBrZXkgaXMgdXNlZC4gcmVwb3J0ICYgb2sgcGJACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzEyIDE4OjM1OjE4CiAgICAgW3NzaC1rZXlzY2FuLjFdCiAgICAgdHlwbzogRFNBIGtleXMgYXJlIG9mIHR5cGUgc3NoLWRzczsgQnJpYW4gUG9vbGUKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMDA6NTI6NTkKICAgICBbc3NoMi5oXQogICAgIHJhbmdlcyBmb3IgcGVyIGF1dGggbWV0aG9kIG1lc3NhZ2VzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE0IDAxOjAwOjQ0CiAgICAgW3NmdHAuMV0KICAgICBlbXBoYXNpc2UgdGhlIGJhdGNobW9kZSBmdW5jdGlvbmFsaXR5IGFuZCBtYWtlIHJlZmVyZW5jZSB0byBwdWJrZXkgYXV0aCwKICAgICBib3RoIG9mIHdoaWNoIGFyZSBGQVFzOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE0IDAyOjE1OjQ3CiAgICAgW2F1dGgyLmMgbW9uaXRvci5jIHNzaGNvbm5lY3QyLmMgYXV0aDIta3JiNS5jXQogICAgIGltcGxlbWVudCBrZXJiZXJvcyBvdmVyIHNzaDIgKCJrZXJiZXJvcy0yQHNzaC5jb20iKTsgdGVzdGVkIHdpdGggamFrb2JACiAgICAgc2VydmVyIGludGVyb3BzIHdpdGggY29tbWVyY2lhbCBjbGllbnQ7IG9rIGpha29iQCBkam1ACiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE0IDA4OjI1OjM5CiAgICAgW3NmdHAuMV0KICAgICAtIGJldHRlciBmb3JtYXR0aW5nIGluIFNZTk9QU0lTCiAgICAgLSB3aGl0ZXNwYWNlIGF0IEVPTAogICAgIG9rIGRqbUAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMDg6NTc6NDkKICAgICBbbW9uaXRvci5jXQogICAgIGh0dHA6Ly9idWd6aWxsYS5taW5kcm90Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwCiAgICAgUHJpdnNlcCBjaGlsZCBjb250aW51ZXMgdG8gcnVuIGFmdGVyIG1vbml0b3Iga2lsbGVkLgogICAgIFBhc3MgbW9uaXRvciBzaWduYWxzIHRocm91Z2ggdG8gY2hpbGQ7IERhcnJlbiBUdWNrZXIKIC0gKGRqbSkgTWFrZSBwb3J0YWJsZSBidWlsZCB3aXRoIE1JVCBrcmI1IChzb21lIGlzc3VlcyByZW1haW4pCiAtIChkam0pIEFkZCBuZXcgVXNlUEFNIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHRvIGFsbG93IHJ1bnRpbWUgY29udHJvbAogICBvdmVyIHVzYWdlIG9mIFBBTS4gVGhpcyBhbGxvd3Mgbm9uLXJvb3QgdXNlIG9mIHNzaGQgd2hlbiBidWlsdCB3aXRoCiAgIC0td2l0aC1wYW0KIC0gKGRqbSkgRGllIHNjcmVhbWluZyBpZiBzdGFydF9wYW0oKSBpcyBjYWxsZWQgd2hlbiBVc2VQQU09bm8KIC0gKGRqbSkgQXZvaWQgS3JiViBsZWFrIGZvciBNSVQgS2VyYmVyb3MKIC0gKGR0dWNrZXIpIFNldCBhaV9zb2NrdHlwZSBhbmQgYWlfcHJvdG9jb2wgaW4gZmFrZS1nZXRhZGRyaW5mby5jLiBvayBkam1ACiAtIChkam0pIEJ1ZyAjMjU4OiBzc2NhbmYoIlswLTldIikgLT4gc3NjYW5mKCJbMDEyMzQ1Njc4OV0iKSBmb3IgcG9ydGFiaWxpdHkKCjIwMDMwNTEyCiAtIChkam0pIFJlZGhhdCBzcGVjOiBEb24ndCBpbnN0YWxsIHByb2ZpbGUuZCBzY3JpcHRzIHdoZW4gbm90IAogICBidWlsZGluZyB3aXRoIEdOT01FL0dUSyBhc2twYXNzIChwYXRjaCBmcm9tIGJldEByYWh1bC5uZXQpCgoyMDAzMDUxMAogLSAoZHR1Y2tlcikgQnVnICMzMTg6IENyZWF0ZSBzc2hfcHJuZ19jbWRzLm91dCBkdXJpbmcgIm1ha2UiIHJhdGhlciB0aGFuCiAgICJtYWtlIGluc3RhbGwiLiAgUGF0Y2ggYnkgcm90aEBmZWVwLm5ldC4KIC0gKGR0dWNrZXIpIEJ1ZyAjNTM2OiBUZXN0IGZvciBhbmQgd29yayBhcm91bmQgb3BlbnB0eS9jb250cm9sbGluZyB0dHkKICAgcHJvYmxlbSBvbiBMaW51eCAoZml4ZXMgImNvdWxkIG5vdCBzZXQgY29udHJvbGxpbmcgdHR5IiBlcnJvcnMpLgogLSAoZGptKSBNZXJnZSBGcmVlQlNEIFBBTSBjb2RlOiByZXBsYWNlcyBQQU0gcGFzc3dvcmQgYXV0aCBrbHVkZ2Ugd2l0aCAKICAgcHJvcGVyIGNoYWxsZW5nZS1yZXNwb25zZSBtb2R1bGUKIC0gKGRqbSkgMi1jbGF1c2UgbGljZW5zZSBvbiBsb2dpbnJlYy5jLCB3aXRoIHBlcm1pc3Npb24gZnJvbQogICBhbmRyZUBhZS0zNS5jb20KCjIwMDMwNTA0CiAtIChkdHVja2VyKSBCdWcgIzQ5NzogTW92ZSAjaW5jbHVkZSBvZiBic2QtY3lnd2luX3V0aWwuaCB0byBvcGVuYnNkLWNvbXBhdC5oLgogICBQYXRjaCBmcm9tIHZpbnNjaGVuQHJlZGhhdC5jb20uCgoyMDAzMDUwMwogLSAoZHR1Y2tlcikgQWRkIG1pc3NpbmcgInZvaWQiIHRvIHJlY29yZF9mYWlsZWRfbG9naW4gaW4gYnNkLWNyYXkuYy4gIE5vdGVkCiAgIGJ5IHdlbmR5cEBjcmF5LmNvbS4KCjIwMDMwNTAyCiAtIChkdHVja2VyKSBCdWcgIzU0NDogaWdub3JlIGludmFsaWQgY21zZ190eXBlIG9uIExpbnV4IDIuMCBrZXJuZWxzLAogICBwcml2c2VwIHNob3VsZCBub3cgd29yay4KIC0gKGR0dWNrZXIpIE1vdmUgaGFuZGxpbmcgb2YgYmFkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9ucyBpbnRvIGEgcGxhdGZvcm0KICAgc3BlY2lmaWMgcmVjb3JkX2ZhaWxlZF9sb2dpbigpIGZ1bmN0aW9uIChhZmZlY3RzIEFJWCAmIFVuaWNvcykuIG9rIG1vdXJpbmdACgoyMDAzMDQyOQogLSAoZGptKSBBZGQgYmFjayByYWRpeC5vICh1c2VkIGJ5IEFGUyBzdXBwb3J0KSwgYWZ0ZXIgaXQgd2VudCBtaXNzaW5nIGZyb20KICAgTWFrZWZpbGUgbWFueSBtb29ucyBhZ28KIC0gKGRqbSkgQXBwbHkgIm93bC1hbHdheXMtYXV0aCIgcGF0Y2ggZnJvbSBPcGVud2FsbC9Tb2xhciBEZXNpZ25lcgogLSAoZGptKSBGaXggYmxpYnBhdGggc3BlY2lmaWNhdGlvbiBmb3IgQUlYL2djYwogLSAoZGptKSBTb21lIHN5c3RlbXMgaGF2ZSBiYXNlbmFtZSBpbiAtbGdlbi4gRml4IGZyb20gYXlhbXVyYUBheWFtdXJhLm9yZwoKMjAwMzA0MjgKIC0gKGJhbCkgW2RlZmluZXMuaCBwcm9ncmVzc21ldGVyLmMgc2NwLmNdIFNvbWUgbW9yZSBjdWxsaW5nIG9mIG5vbiA2NGJpdCAKICAgaGFja2VkIGNvZGUuCgoyMDAzMDQyNwogLSAoYmFsKSBCdWcgIzU0MTogcmV0dXJuOyB3YXMgZHJvcHBlZCBieSBtaXN0YWtlLiAgUmVwb3J0ZWQgYnkgCiAgIGZ1cnJpZXJAaWdsb3UuY29tCiAtIChiYWwpIFNpbmNlIHdlIGRvbid0IHN1cHBvcnQgcGxhdGZvcm1zIGxhY2tpbmcgdV9pbnRfNjQuICBXZSBtYXkKICAgYXMgd2VsbCBjbGVhbiBvdXQgc29tZSBvZiB0aG9zZSBldmlsICNpZmRlZnMKIC0gKGJhbCkgYXV0aDEuYyBtaW5vciByZXN5bmMgd2hpbGUgbG9va2luZyBhdCB0aGUgY29kZS4KIC0gKGJhbCkgYXV0aDIuYyBzYW1lIGNoYW5nZWQgYXMgYWJvdmUuCgoyMDAzMDQwOQogLSAoZGptKSBCdWcgIzUzOTogU3BlY2lmeSBjcmVhdGlvbiBtb2RlIHdpdGggT19DUkVBVCBmb3IgbGFzdGxvZy4gUmVwb3J0IAogICBmcm9tIG1hdHRoQGVlY3MuYmVya2VsZXkuZWR1CiAtIChkam0pIE1ha2UgdGhlIHNwZWMgd29yayB3aXRoIFJlZGhhdCA5LjAgKHdoaWNoIHJlbmFtZXMgc2hhcnV0aWxzKQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzAyIDA5OjQ4OjA3CiAgICAgW2NsaWVudGxvb3AuYyBtb25pdG9yLmMgbW9uaXRvcl93cmFwLmMgcGFja2V0LmMgcGFja2V0LmggcmVhZGNvbmYuY10KICAgICBbcmVhZGNvbmYuaCBzZXJ2ZXJsb29wLmMgc3NoY29ubmVjdDIuY10KICAgICByZWFwcGx5IHJla2V5aW5nIGNoYWdlLCB0ZXN0ZWQgYnkgaGVubmluZ0AsIG9rIGRqbUAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDIgMTQ6MzY6MjYKICAgICBbc3NoLWtleXNpZ24uY10KICAgICBwb3RlbnRpYWwgc2VnZmF1bHQgaWYgS0VZX1VOU1BFQzsgY2p3YXRzb25AZGViaWFuLm9yZzsgYnVnICM1MjYKICAgLSBpdG9qdW5AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDMgMDc6MjU6MjcKICAgICBbcHJvZ3Jlc3NtZXRlci5jXQogICAgICRPcGVuQlNEJAogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMyAxMDoxNzozNQogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgcmVtb3ZlICRPcGVuQlNEJCwgYXMgb3RoZXIgKi5jIGRvZXMgbm90IGhhdmUgaXQuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzA3IDA4OjI5OjU3CiAgICAgW21vbml0b3Jfd3JhcC5jXQogICAgIHR5cG86IGdldCBjb3JyZWN0IGNvdW50ZXJzOyBpbnRyb2R1Y2VkIGR1cmluZyByZWtleWluZyBjaGFuZ2UuCiAgIC0gbWlsbGVydEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wNyAyMTo1ODowNQogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgVGhlIFVDQiBjb3B5cmlnaHQgaGVyZSBpcyBpbmNvcnJlY3QuICBUaGlzIGNvZGUgZGlkIG5vdCBvcmlnaW5hdGUKICAgICBhdCBVQ0IsIGl0IHdhcyB3cml0dGVuIGJ5IEx1a2UgTWV3YnVybi4gIFVwZGF0ZWQgdGhlIGNvcHlyaWdodCBhdAogICAgIHRoZSBhdXRob3IncyByZXF1ZXN0LiAgbWFya3VzQCBPSwogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wOCAyMDoyMToyOQogICAgIFsqLmMgKi5oXQogICAgIHJlbmFtZSBsb2coKSBpbnRvIGxvZ2l0KCkgdG8gYXZvaWQgbmFtZSBjb25mbGljdC4gIG1hcmt1cyBvaywgZnJvbQogICAgIG5ldGJzZAogICAgIC0gKGRqbSkgWFhYIC0gUGVyZm9ybWVkIGxvY2FsbHkgdXNpbmc6CiAgICAgICAicGVybCAtcCAtaSAtZSAncy8oXHN8Xilsb2dcKC8kMWxvZ2l0XCgvZycgKi5jICouaCIKICAgLSBoaW5AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDkgMDg6MjM6NTIKICAgICBbc2VydmNvbmYuY10KICAgICBEb24ndCBpbmNsdWRlIDxrcmIuaD4gd2hlbiBjb21waWxpbmcgd2l0aCBLZXJiZXJvcyA1IHN1cHBvcnQKICAgLSAoZGptKSBGaXggdXAgbWlzc2luZyBpbmNsdWRlIGZvciBwYWNrZXQuYwogICAtIChkam0pIEZpeCBtaXNzZWQgbG9nID0+IGxvZ2l0IG9jY3VyYW5jZSAocmVmZXJlbmNlIGJ5IGZ1bmN0aW9uIHBvaW50ZXIpCgoyMDAzMDQwMgogLSAoYmFsKSBpZiBJUF9UT1MgaXMgbm90IGZvdW5kIG9yIGJyb2tlbiBkb24ndCB0cnkgdG8gY29tcGlsZSBpbgogICBwYWNrZXRfc2V0X3RvcygpIGZ1bmN0aW9uIGNhbGwuICBidWcgIzUyNwoKMjAwMzA0MDEKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wMy8yOCAxMDoxMTo0MwogICAgIFtzY3AuMSBzZnRwLjEgc3NoLjEgc3NoLWFkZC4xIHNzaC1hZ2VudC4xIHNzaF9jb25maWcuNSBzc2hkX2NvbmZpZy41XQogICAgIFtzc2gta2V5Z2VuLjEgc3NoLWtleXNjYW4uMSBzc2gta2V5c2lnbi44XQogICAgIC0ga2lsbGVkIHdoaXRlc3BhY2UKICAgICAtIG5ldyBzZW50ZW5jZSBuZXcgbGluZQogICAgIC0gLkJrIGZvciBhcmd1bWVudHMKICAgICBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzAxIDEwOjEwOjIzCiAgICAgW2NsaWVudGxvb3AuYyBtb25pdG9yLmMgbW9uaXRvcl93cmFwLmMgcGFja2V0LmMgcGFja2V0LmggcmVhZGNvbmYuY10KICAgICBbcmVhZGNvbmYuaCBzZXJ2ZXJsb29wLmMgc3NoY29ubmVjdDIuY10KICAgICByZWtleWluZyBidWdmaXhlcyBhbmQgYXV0b21hdGljIHJla2V5aW5nOgogICAgICogYm90aCBjbGllbnQgYW5kIHNlcnZlciByZWtleSBfYXV0b21hdGljYWxseV8KICAgICAgICAgICAoYSkgYWZ0ZXIgMl4zMSBwYWNrZXRzLCBiZWNhdXNlIGFmdGVyIDJeMzIgcGFja2V0cwogICAgICAgICAgICAgICB0aGUgc2VxdWVuY2UgbnVtYmVyIGZvciBwYWNrZXRzIHdyYXBzCiAgICAgICAgICAgKGIpIGFmdGVyIDJeKGJsb2Nrc2l6ZV9pbl9iaXRzLzQpIGJsb2NrcwogICAgICAgKHNlZTogZHJhZnQtaWV0Zi1zZWNzaC1uZXdtb2Rlcy0wMC50eHQpCiAgICAgICAoYSkgYW5kIChiKSBhcmUgX2VuYWJsZWRfIGJ5IGRlZmF1bHQsIGFuZCBvbmx5IGRpc2FibGVkIGZvciBrbm93bgogICAgICAgb3BlbnNzaCB2ZXJzaW9ucywgdGhhdCBkb24ndCBzdXBwb3J0IHJla2V5aW5nIHByb3Blcmx5LgogICAgICogY2xpZW50IG9wdGlvbiAnUmVrZXlMaW1pdCcKICAgICAqIGRvIG5vdCByZXBseSB0byByZXF1ZXN0cyBkdXJpbmcgcmVrZXlpbmcKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDEgMTA6MjI6MjEKICAgICBbY2xpZW50bG9vcC5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBwYWNrZXQuaCByZWFkY29uZi5jXQogICAgIFtyZWFkY29uZi5oIHNlcnZlcmxvb3AuYyBzc2hjb25uZWN0Mi5jXQogICAgIGJhY2tvdXQgcmVrZXlpbmcgY2hhbmdlcyAoZm9yIDMuNi4xKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMSAxMDozMToyNgogICAgIFtjb21wYXQuYyBjb21wYXQuaCBrZXguY10KICAgICBidWdmaXggY2F1c2VzIHN0YWxsZWQgY29ubmVjdGlvbnMgZm9yIHNzaC5jb20gPCAzLjA7IG5vdGljZWQgYnkgaG9AOyAKICAgICB0ZXN0ZWQgYnkgaG9AIGFuZCBteXNlbGYKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDEgMTA6NTY6NDYKICAgICBbdmVyc2lvbi5oXQogICAgIDMuNi4xCiAtIChkam0pIENyYW5rIHNwZWMgZmlsZSB2ZXJzaW9ucwogLSAoZGptKSBSZWxlYXNlIDMuNi4xcDEKCjIwMDMwMzI2CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzAzLzI2IDA0OjAyOjUxCiAgICAgW3NmdHAtc2VydmVyLmNdCiAgICAgb25lIGxhc3QgZml4IHRvIHRoZSB0cmVlOiByYWNlIGZpeCBicm9rZSBzdHVmZjsgcHIgMzE2OTsgCiAgICAgc3JwQHNycGFyaXNoLm5ldCwgaGVscCBmcm9tIGRqbQoKMjAwMzAzMjUKIC0gKGRqbSkgRml4IGdldHBlZXJpZCBzdXBwb3J0IGZvciA2NCBiaXQgQkUgc3lzdGVtcy4gRnJvbSAKICAgIEFybmQgQmVyZ21hbm4gPGFybmRiQGRlLmlibS5jb20+CgoyMDAzMDMyNAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzAzLzIzIDE5OjAyOjAwCiAgICAgW21vbml0b3IuY10KICAgICB1bmJyZWFrIHJla2V5aW5nIGZvciBwcml2c2VwOyBvayBtaWxsZXJ0QAogLSBSZWxlYXNlIDMuNnAxCiAtIEZpeCBzc2hkIEJpbmRBZGRyZXNzIGFuZCAtYiBvcHRpb25zIGZvciBzeXN0ZW1zIHVzaW5nIGZha2UtZ2V0YWRkcmluZm8uCiAgIFJlcG9ydCBmcm9tIG11cnBsZUBtdXJwbGUubmV0LCBkaWFnbm9zaXMgZnJvbSBkdHVja2VyQHppcC5jb20uYXUKCiRJZDogQ2hhbmdlTG9nLHYgMS4zMDEzIDIwMDMvMDkvMjIgMDE6MjY6MTYgZHR1Y2tlciBFeHAgJAo=