Tm90ZQo9PT09CgpUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcGVvcGxlIHdobyBhcmUgcGVybWl0dGVkIHRvIG1ha2UKY2hhbmdlcyB0byB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjb21waWxlciBhbmQgYXNzb2NpYXRlZCBsaWJyYXJpZXMuCgpQbGVhc2UgZG8gbm90IGNvbnRhY3QgdGhlIHBlb3BsZSBpbiB0aGlzIGZpbGUgZGlyZWN0bHkgdG8gcmVwb3J0CnByb2JsZW1zIGluIEdDQy4KCkZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IEdDQywgcGxlYXNlIHZpc2l0OgoKICBodHRwOi8vZ2NjLmdudS5vcmcKClRvIHJlcG9ydCBwcm9ibGVtcyBpbiBHQ0MsIHBsZWFzZSB2aXNpdDoKCiAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbAoKTWFpbnRhaW5lcnMKPT09PT09PT09PT0KCgkJCUJsYW5rZXQgV3JpdGUgUHJpdnMuCgpKb2huIENhcnIJCQkJCWpmY0BtaXQuZWR1ClJpY2hhcmQgRWFybnNoYXcJCQkJcmVhcm5zaGFAYXJtLmNvbQpSaWNoYXJkIEhlbmRlcnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGhAcmVkaGF0LmNvbQpHZW9mZnJleSBLZWF0aW5nCQkJCWdlb2Zma0ByZWRoYXQuY29tClJpY2hhcmQgS2VubmVyCQkJCQlrZW5uZXJAbnl1LmVkdQpKZWZmIExhdwkJCQkJbGF3QHJlZGhhdC5jb20KSmFzb24gTWVycmlsbAkJCQkJamFzb25AcmVkaGF0LmNvbQpNaWNoYWVsIE1laXNzbmVyCQkJCW1laXNzbmVyQHJlZGhhdC5jb20KRGF2aWQgUy4gTWlsbGVyCQkJCQlkYXZlbUByZWRoYXQuY29tCk1hcmsgTWl0Y2hlbGwJCQkJCW1hcmtAY29kZXNvdXJjZXJ5LmNvbQpCZXJuZCBTY2htaWR0CQkJCQliZXJuZHNAcmVkaGF0LmNvbQpKaW0gV2lsc29uCQkJCQl3aWxzb25AcmVkaGF0LmNvbQoKCgkJCUNQVSBQb3J0IE1haW50YWluZXJzCShDUFUgYWxwaGFiZXRpY2FsIG9yZGVyKQoKYWxwaGEgcG9ydAkJUmljaGFyZCBIZW5kZXJzb24JcnRoQHJlZGhhdC5jb20KYXJjIHBvcnQJCVJpY2hhcmQgS2VubmVyCQlrZW5uZXJAbnl1LmVkdQphcm0gcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCmFybSBwb3J0CQlSaWNoYXJkIEVhcm5zaGF3CXJlYXJuc2hhQGFybS5jb20KYXZyIHBvcnQJCURlbmlzIENoZXJ0eWtvdgkJZGVuaXNjQG92ZXJ0YS5ydQphdnIgcG9ydAkJTWFyZWsgTWljaGFsa2lld2ljegltYXJla21AbGludXgub3JnLnBsCmM0eCBwb3J0CQlNaWNoYWVsIEhheWVzCQltLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uegpjcmlzIHBvcnQJCUhhbnMtUGV0ZXIgTmlsc3NvbglocEBheGlzLmNvbQpmcjMwIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmljbGNAcmVkaGF0LmNvbQpoOCBwb3J0CQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmg4IHBvcnQJCQlLYXp1IEhpcmF0YQkJa2F6dUBoeGkuY29tCmhwcGEgcG9ydAkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmhwcGEgcG9ydAkJRGF2ZSBBbmdsaW4JCWRhdmUuYW5nbGluQG5yYy5jYQppMzg2IHBvcnQJCVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCmk4NjAgcG9ydAkJSmFzb24gRWNraGFyZHQJCWpsZUByZWRoYXQuY29tCmk5NjAgcG9ydAkJSmltIFdpbHNvbgkJd2lsc29uQHJlZGhhdC5jb20KaWE2NCBwb3J0CQlKaW0gV2lsc29uCQl3aWxzb25AcmVkaGF0LmNvbQptMzJyIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQptMzJyIHBvcnQJCU1pY2hhZWwgTWVpc3NuZXIJbWVpc3NuZXJAcmVkaGF0LmNvbQptNjhoYzExIHBvcnQJCVN0ZXBoYW5lIENhcnJlegkJU3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyCm02OGsgcG9ydCAoPykJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQptNjhrLW1vdG9yb2xhLXN5c3YgcG9ydAlQaGlsaXBwZSBEZSBNdXl0ZXIJcGhkbUBtYWNxZWwuYmUKbWNvcmUgcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCm1pcHMgcG9ydCAgICAgICAgICAgICAgIEVyaWMgQ2hyaXN0b3BoZXIgICAgICAgIGVjaHJpc3RvQHJlZGhhdC5jb20KbW1peCBwb3J0CQlIYW5zLVBldGVyIE5pbHNzb24JaHBAYml0cmFuZ2UuY29tCm1uMTAyMDAgcG9ydAkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCm1uMTAzMDAgcG9ydAkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCm1uMTAzMDAgcG9ydAkJQWxleGFuZHJlIE9saXZhCQlhb2xpdmFAcmVkaGF0LmNvbQpyczYwMDAgcG9ydAkJR2VvZmYgS2VhdGluZwkJZ2VvZmZrQHJlZGhhdC5jb20KcnM2MDAwIHBvcnQJCURhdmlkIEVkZWxzb2huCQlkamVAd2F0c29uLmlibS5jb20KczM5MCBwb3J0CQlIYXJ0bXV0IFBlbm5lcgkJaHBlbm5lckBkZS5pYm0uY29tCnMzOTAgcG9ydAkJVWxyaWNoIFdlaWdhbmQJCXV3ZWlnYW5kQGRlLmlibS5jb20Kc2ggcG9ydAkJCUpvZXJuIFJlbm5lY2tlCQlqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tCnNoIHBvcnQJCQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCnNwYXJjIHBvcnQJCVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCnNwYXJjIHBvcnQJCURhdmlkIFMuIE1pbGxlcgkJZGF2ZW1AcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlKYWt1YiBKZWxpbmVrCQlqYWt1YkByZWRoYXQuY29tCnY4NTAgcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCnY4NTAgcG9ydAkJTWljaGFlbCBNZWlzc25lcgltZWlzc25lckByZWRoYXQuY29tCnZheCBwb3J0CQlEYXZlIEFuZ2xpbgkJZGF2ZS5hbmdsaW5AbnJjLmNhCng4Ni02NCBwb3J0CQlKYW4gSHViaWNrYQkJamhAc3VzZS5jegp4c3Rvcm15MTYgcG9ydAkJR2VvZmZyZXkgS2VhdGluZwlnZW9mZmtAcmVkaGF0LmNvbQp4dGVuc2EgcG9ydAkJQm9iIFdpbHNvbgkJYm9iLndpbHNvbkBhY20ub3JnCgoJCQlPUyBQb3J0IE1haW50YWluZXJzCShPUyBhbHBoYWJldGljYWwgb3JkZXIpCgpkYXJ3aW4gcG9ydAkJU3RhbiBTaGVicwkJc2hlYnNAYXBwbGUuY29tCm5ldGJzZAkJCUphc29uIFRob3JwZQkJdGhvcnBlakB3YXNhYmlzeXN0ZW1zLmNvbQpzY281LCB1bml4d2FyZSwgc2NvIHVkawlSb2JlcnQgTGlwZQkJcm9iZXJ0bGlwZUB1c2EubmV0CgoJCQlWYXJpb3VzIE1haW50YWluZXJzCgpDIGZyb250IGVuZC9JU08gQzk5CUpvc2VwaCBNeWVycwkJanNtMjhAY2FtLmFjLnVrCkMgZnJvbnQgZW5kL0lTTyBDOTkJUmljaGFyZCBIZW5kZXJzb24JcnRoQHJlZGhhdC5jb20KQWRhIGZyb250IGVuZAkJR2VlcnQgQm9zY2gJCWJvc2NoQGduYXQuY29tCkFkYSBmcm9udCBlbmQJCVJvYmVydCBEZXdhcgkJZGV3YXJAZ25hdC5jb20KZm9ydHJhbgkJCVJpY2hhcmQgSGVuZGVyc29uCXJ0aEByZWRoYXQuY29tCmZvcnRyYW4JCQlUb29uIE1vZW5lCQl0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sCmMrKwkJCUphc29uIE1lcnJpbGwJCWphc29uQHJlZGhhdC5jb20KYysrICAgICAgICAgICAgICAgICAgICAgTWFyayBNaXRjaGVsbAkJbWFya0Bjb2Rlc291cmNlcnkuY29tCmNwcGxpYgkJCURhdmUgQnJvbGxleQkJYnJvbGxleUByZWRoYXQuY29tCmNwcGxpYgkJCVBlciBCb3RobmVyCQlwZXJAYm90aG5lci5jb20KY3BwbGliCQkJWmFjayBXZWluYmVyZwkJemFja0Bjb2Rlc291cmNlcnkuY29tCmNwcGxpYgkJCU5laWwgQm9vdGgJCW5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrCmphdmEJCQlQZXIgQm90aG5lcgkJcGVyQGJvdGhuZXIuY29tCmphdmEJCQlBbGV4YW5kcmUgUGV0aXQtQmlhbmNvCWFwYmlhbmNvQHJlZGhhdC5jb20KbWVyY3VyeQkJCUZlcmd1cyBIZW5kZXJzb24JZmpoQGNzLm11Lm96LmF1Cm9iamVjdGl2ZS1jCQlTdGFuIFNoZWJzCQlzaGVic0BhcHBsZS5jb20Kb2JqZWN0aXZlLWMJCU92aWRpdSBQcmVkZXNjdQkJb3ZpZGl1QGN1cC5ocC5jb20KYWxpYXMgYW5hbHlzaXMJCUpvaG4gQ2FycgkJamZjQG1pdC5lZHUKbG9vcCB1bnJvbGxpbmcJCUppbSBXaWxzb24JCXdpbHNvbkByZWRoYXQuY29tCmxvb3AgZGlzY292ZXJ5CQlNaWNoYWVsIEhheWVzCQltLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uegpzY2hlZHVsZXIgKCsgaGFpZmEpCUppbSBXaWxzb24JCXdpbHNvbkByZWRoYXQuY29tCnNjaGVkdWxlciAoKyBoYWlmYSkJTWljaGFlbCBNZWlzc25lcgltZWlzc25lckByZWRoYXQuY29tCnNjaGVkdWxlciAoKyBoYWlmYSkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCnJlb3JnCQkJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmNhbGxlci1zYXZlLmMJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpkZWJ1Z2dpbmcgY29kZQkJSmltIFdpbHNvbgkJd2lsc29uQHJlZGhhdC5jb20KZHdhcmYgZGVidWdnaW5nIGNvZGUJSmFzb24gTWVycmlsbAkJamFzb25AcmVkaGF0LmNvbQpjKysgcnVudGltZSBsaWJzICAgICAgICBHYWJyaWVsIERvcyBSZWlzICAgICAgICBkb3NyZWlzQGNtbGEuZW5zLWNhY2hhbi5mcgpjKysgcnVudGltZSBsaWJzCVVscmljaCBEcmVwcGVyCQlkcmVwcGVyQHJlZGhhdC5jb20KYysrIHJ1bnRpbWUgbGlicwlQaGlsIEVkd2FyZHMJCXBtZUBnY2MuZ251Lm9yZwpjKysgcnVudGltZSBsaWJzCUJlbmphbWluIEtvc25pawkJYmtvekByZWRoYXQuY29tCipzeW50aGV0aWMgbXVsdGlwbHkJVG9yYmpvcm4gR3Jhbmx1bmQJdGVnZUBzd294LmNvbQoqYy10b3J0dXJlCQlUb3Jiam9ybiBHcmFubHVuZAl0ZWdlQHN3b3guY29tCmZpeGluY2x1ZGVzCQlCcnVjZSBLb3JiCQlia29yYkBnbnUub3JnCmdjc2UuYyAJCQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KZ2xvYmFsIG9wdCBmcmFtZXdvcmsJSmVmZiBMYXcJCWxhd0ByZWRoYXQuY29tCmp1bXAuYwkJCURhdmlkIFMuIE1pbGxlcgkJZGF2ZW1AcmVkaGF0LmNvbQp3ZWIgcGFnZXMJCUdlcmFsZCBQZmVpZmVyCQlwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0CmNvbmZpZy5zdWIvY29uZmlnLmd1ZXNzCUJlbiBFbGxpc3RvbgkJY29uZmlnLXBhdGNoZXNAZ251Lm9yZwpiYXNpYyBibG9jayByZW9yZGVyaW5nCUphc29uIEVja2hhcmR0CQlqbGVAcmVkaGF0LmNvbQppMThuCQkJUGhpbGlwcCBUaG9tYXMJCXB0aG9tYXNAc3VzZS5kZQpkaWFnbm9zdGljIG1lc3NhZ2VzCUdhYnJpZWwgRG9zIFJlaXMJZ2RyQGNvZGVzb3VyY2VyeS5jb20Kd2luZG93cywgY3lnd2luLCBtaW5ndwlDaHJpc3RvcGhlciBGYXlsb3IJY2dmQHJlZGhhdC5jb20Kd2luZG93cywgY3lnd2luLCBtaW5ndwlESiBEZWxvcmllCQlkakByZWRoYXQuY29tCkRKR1BQCQkJREogRGVsb3JpZQkJZGpAZGVsb3JpZS5jb20KbGliaWJlcnR5CQlESiBEZWxvcmllCQlkakByZWRoYXQuY29tCmJ1aWxkIG1hY2hpbmVyeSAoKi5pbikJREogRGVsb3JpZQkJZGpAcmVkaGF0LmNvbQpidWlsZCBtYWNoaW5lcnkgKCouaW4pCUFsZXhhbmRyZSBPbGl2YQkJYW9saXZhQHJlZGhhdC5jb20KZG9jcyBjby1tYWludGFpbmVyCUdlcmFsZCBQZmVpZmVyCQlwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0CmRvY3MgY28tbWFpbnRhaW5lcglKb3NlcGggTXllcnMJCWpzbTI4QGNhbS5hYy51awpQaWNvLUphdmEgcG9ydAkJU3RldmUgQ2hhbWJlcmxhaW4Jc2FjQHRyYW5zbWV0YS5jb20KUlRFTVMgUG9ydHMJCUpvZWwgU2hlcnJpbGwKcHJlZGljdC5kZWYJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CmNvbnRyaWIvcmVncmVzc2lvbglHZW9mZiBLZWF0aW5nCQlnZW9mZmtAcmVkaGF0LmNvbQoKTm90ZSBpbmRpdmlkdWFscyB3aG8gbWFpbnRhaW4gcGFydHMgb2YgdGhlIGNvbXBpbGVyIG5lZWQgYXBwcm92YWwgdG8gY2hlY2sKaW4gY2hhbmdlcyBvdXRzaWRlIG9mIHRoZSBwYXJ0cyBvZiB0aGUgY29tcGlsZXIgdGhleSBtYWludGFpbi4KCgoJCQlXcml0ZSBBZnRlciBBcHByb3ZhbAkobGFzdCBuYW1lIGFscGhhYmV0aWNhbCBvcmRlcikKU2NvdHQgQmFtYnJvdWdoCQkJCQlzY290dGJAbmV0d2luZGVyLm9yZwpEYW5pZWwgQmVybGluCQkJCQlkYW5AZGJlcmxpbi5vcmcKRGF2aWQgQmlsbGluZ2h1cnN0CQkJCURhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20KTGF1cnluYXMgQml2ZWluaXMJCQkJbGF1cmFzQHNvZnRob21lLm5ldApKaW0gQmxhbmR5CQkJCQlqaW1iQHJlZGhhdC5jb20KUGhpbCBCbHVuZGVsbAkJCQkJcGJAZnV0dXJldHYuY29tCkhhbnMgQm9laG0JCQkJCWhib2VobUBnY2MuZ251Lm9yZwpBbmRyZXcgQ2FnbmV5CQkJCQljYWduZXlAcmVkaGF0LmNvbQpQYW9sbyBDYXJsaW5pCQkJCQlwY2FybGluaUB1bml0dXMuaXQKQ2hhbmRyYSBDaGF2dmEJCQkJCWNjaGF2dmFAcmVkaGF0LmNvbQpXaWxsaWFtIENvaGVuCQkJCQl3Y29oZW5AcmVkaGF0LmNvbQpDaHJpcyBEZW1ldHJpb3UJCQkJCWNnZEBicm9hZGNvbS5jb20KKlBhdWwgRWdnZXJ0CQkJCQllZ2dlcnRAdHdpbnN1bi5jb20KQmVuIEVsbGlzdG9uCQkJCQliamVAcmVkaGF0LmNvbQpNYXJjIEVzcGllCQkJCQllc3BpZUBjdnMub3BlbmJzZC5vcmcKRG91ZyBFdmFucwkJCQkJZGV2YW5zQHRyYW5zbWV0YS5jb20KS2F2ZWggR2hhemkJCQkJCWdoYXppQGNhaXAucnV0Z2Vycy5lZHUKTWF0dGhldyBHaW5nZWxsCQkJCQlnaW5nZWxsQGduYXQuY29tCkFudGhvbnkgR3JlZW4JCQkJCWdyZWVuQHJlZGhhdC5jb20KU3R1IEdyb3NzbWFuCQkJCQlncm9zc21hbkByZWRoYXQuY29tCkxhdXJlbnQgR3VlcmJ5CQkJCQlndWVyYnlAYWNtLm9yZwpBbmRyZXcgSGFsZXkJCQkJCWFwaEByZWRoYXQuY29tCkFsZHkgSGVybmFuZGV6CQkJCQlhbGR5aEByZWRoYXQuY29tCk1hdHRoZXcgSGlsbGVyCQkJCQloaWxsZXJAcmVkaGF0LmNvbQpNYW5mcmVkIEhvbGxzdGVpbgkJCQltaG9sbHN0ZWluQHJlZGhhdC5jb20KQW5kcmVhcyBKYWVnZXIJCQkJCWFqQHN1c2UuZGUKSmFrdWIgSmVsaW5lawkJCQkJamFrdWJAcmVkaGF0LmNvbQpEYWxlIEpvaGFubmVzZW4gCQkJCWRhbGVqQGFwcGxlLmNvbQpKYW5pcyBKb2huc29uCQkJCQlqYW5pczE4N0B1cy5pYm0uY29tCktsYXVzIEthZW1wZgkJCQkJa2thZW1wZkBwcm9naXMuZGUKQnJlbmRhbiBLZWhvZQkJCQkJYnJlbmRhbkB6ZW4ub3JnCk11bWl0IEtoYW4JCQkJCWtoYW5AeHJheWxpdGgud2lzYy5lZHUKTWF0dGhpYXMgS2xvc2UJCQkJCWRva29AZGViaWFuLm9yZwpKZWZmIEtuYWdncwkJCQkJamtuYWdnc0ByZWRoYXQuY29tCk1hdHQgS3JhYWkJCQkJCWtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHUKWmllbW93aXQgTGFza2kJCQkJCXpsYXNraUBhcHBsZS5jb20KTWFyYyBMZWhtYW5uCQkJCQlwY2dAZ29vZi5jb20KQWxhbiBMZWhvdHNreQkJCQkJYXBsQGFsdW0ubWl0LmVkdQpXYXJyZW4gTGV2eQkJCQkJd2FycmVubEByZWRoYXQuY29tCktyaWFuZyBMZXJkc3V3YW5ha2lqCQkJCWxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldApEb24gTGluZHNheQkJCQkJZGxpbmRzYXlAcmVkaGF0LmNvbQpEYXZlIExvdmUJCQkJCWQubG92ZUBkbC5hYy51awpNYXJ0aW4gdi4gTPZ3aXMJCQkJCWxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZQoqSEogTHUJCQkJCQloamxAbHVjb24ub3JnCkFuZHJldyBNYWNsZW9kCQkJCQlhbWFjbGVvZEByZWRoYXQuY29tClZsYWRpbWlyIE1ha2Fyb3YJCQkJdm1ha2Fyb3ZAcmVkaGF0LmNvbQpNaWNoYWVsIE1hdHoJCQkJCW1hdHpAc3VzZS5kZQpHcmVnIE1jR2FyeQkJCQkJZ2ttQGdudS5vcmcKQnJ5Y2UgTWNLaW5sYXkJCQkJCWJyeWNlQGdjYy5nbnUub3JnCkFkYW0gTWVnYWN6CQkJCQlhZGFtQHh3dC5vcmcKQWxhbiBNb2RyYQkJCQkJYW1vZHJhQGJpZ3BvbmQubmV0LmF1ClRvb24gTW9lbmUJCQkJCXRvb25AbW9lbmUuaW5kaXYubmx1dWcubmwKQ2F0aGVyaW5lIE1vb3JlCQkJCQljbG1AcmVkaGF0LmNvbQpEaWVnbyBOb3ZpbGxvCQkJCQlkbm92aWxsb0ByZWRoYXQuY29tCkRhdmlkIE8nQnJpZW4JCQkJCW9icmllbkBGcmVlQlNELm9yZwpUdXJseSBPJ0Nvbm5vcgkJCQkJdHVybHlAYXBwbGUuY29tCkplZmZyZXkgRC4gT2xkaGFtCQkJCW9sZGhhbUBjb2Rlc291cmNlcnkuY29tClJhaW5lciBPcnRoCQkJCQlyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREUKTmljb2xhIFBlcm8JCQkJCW4ucGVyb0BtaS5mbGFzaG5ldC5pdApBbGV4YW5kcmUgUGV0aXQtQmlhbmNvCQkJCWFwYmlhbmNvQHJlZGhhdC5jb20KQ2xpbnRvbiBQb3BldHoJCQkJCWNwb3BldHpAY3BvcGV0ei5jb20KS2VuIFJhZWJ1cm4JCQkJCXJhZWJ1cm5AcmVkaGF0LmNvbQpSb2xmIFJhc211c3NlbgkJCQkJcm9sZndyQGdjYy5nbnUub3JnCkdhYnJpZWwgRG9zIFJlaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvc3JlaXNAY21sYS5lbnMtY2FjaGFuLmZyCkxvcmVuIEouIFJpdHRsZQkJCQkJbGpyaXR0bGVAYWNtLm9yZwpUb20gUml4CQkJCQkJdHJpeEByZWRoYXQuY29tCkNyYWlnIFJvZHJpZ3VlcwkJCQkJcm9kcmlnY0BnY2MuZ251Lm9yZwpHYXZpbiBSb21pZy1Lb2NoCQkJCWdhdmluQHJlZGhhdC5jb20KSXJhIFJ1YmVuCQkJCQlpcmFAYXBwbGUuY29tCkFsZXggU2FtdWVsCQkJCQlzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbQpSaWNoYXJkIFNhbmRpZm9yZAkJCQlyc2FuZGlmb0ByZWRoYXQuY29tClJvZ2VyIFNheWxlCQkJCQlyb2dlckBleWVzb3Blbi5jb20KQmVybmQgU2NobWlkdAkJCQkJYmVybmRzQHJlZGhhdC5jb20KQW5kcmVhcyBTY2h3YWIJCQkJCXNjaHdhYkBzdXNlLmRlClN0YW4gU2hlYnMJCQkJCXNoZWJzQGFwcGxlLmNvbQpOYXRoYW4gU2lkd2VsbAkJCQkJbmF0aGFuQGFjbS5vcmcKRnJhbnogU2lybAkJCQkJZnJhbnouc2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20KRGFubnkgU21pdGgJCQkJCWRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0Ck1pY2hhZWwgU29rb2xvdgkJCQkJbXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHClJpY2hhcmQgU3RhbGxtYW4JCQkJcm1zQGdudS5vcmcKR3JhaGFtIFN0b3R0CQkJCQlncmFoYW1zQHJlZGhhdC5jb20KTWlrZSBTdHVtcAkJCQkJbXJzQHdpbmRyaXZlci5jb20KSWFuIFRheWxvcgkJCQkJaWFuQHplbWJ1LmNvbQpNaWNoYWVsIFRpZW1hbm4JCQkJCXRpZW1hbm5AcmVkaGF0LmNvbQpQaGlsaXBwIFRob21hcwkJCQkJcHRob21hc0BzdXNlLmRlCktyZXN0ZW4gS3JhYiBUaG9ydXAJCQkJa3JhYkBnY2MuZ251Lm9yZwpUb20gVHJvbWV5CQkJCQl0cm9tZXlAcmVkaGF0LmNvbQpKb2huIFdlaGxlCQkJCQlqb2huQGZlaXRoLmNvbQpGbG9yaWFuIFdlaW1lcgkJCQkJZndAZGVuZWIuZW55by5kZQpNYXJrIFdpZWxhYXJkCQkJCQltYXJrQGdjYy5nbnUub3JnCgpHTkFUUyBvbmx5IGFjY291bnRzClBldGVyIEJpZW5zdG1hbig/KQpCZW5qYW1pbiBDaGVsZig/KQpKYW1lcyBEZW5uZXR0KD8pCk1hcmsgR2FsYXNzaSg/KQpKZWZmIFN0cnVtKD8pCg==