ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggQSAtIFAgciBvIHggeQogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51ZWwgZGUgculm6XJlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgCQkgICAgICB2ZXJzaW9uIDEuMi41CgkJCSAgICAgIHdpbGx5IHRhcnJlYXUKCQkJICAgICAgICAyMDA1LzA0LzI0Cgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEEtUHJveHkgZXN0IHVuIHJlbGFpcyBUQ1AvSFRUUCBvZmZyYW50IGRlcyBmYWNpbGl06XMgZCdpbnTpZ3JhdGlvbiBlbgplbnZpcm9ubmVtZW50IGhhdXRlbWVudCBkaXNwb25pYmxlLiBFbiBlZmZldCwgaWwgZXN0IGNhcGFibGUgZGUgOgogIC0gZWZmZWN0dWVyIHVuIGFpZ3VpbGxhZ2Ugc3RhdGlxdWUgZOlmaW5pIHBhciBkZXMgY29va2llcyA7CiAgLSBlZmZlY3R1ZXIgdW5lIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBhdmVjIGNy6WF0aW9uIGRlIGNvb2tpZXMgcG91ciBhc3N1cmVyIGxhCiAgICBwZXJzaXN0ZW5jZSBkZSBzZXNzaW9uIDsgCiAgLSBmb3VybmlyIHVuZSB2aXNpYmlsaXTpIGV4dGVybmUgZGUgc29uIOl0YXQgZGUgc2FudOkgOwogIC0gcydhcnLqdGVyIGVuIGRvdWNldXIgc2FucyBwZXJ0ZSBicnV0YWxlIGRlIHNlcnZpY2UgOwogIC0gbW9kaWZpZXIvYWpvdXRlci9zdXBwcmltZXIgZGVzIGVudOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgoKSWwgcmVxdWllcnQgcGV1IGRlIHJlc3NvdXJjZXMsIGV0IHNvbiBhcmNoaXRlY3R1cmUg6XbpbmVtZW50aWVsbGUgbW9uby1wcm9jZXNzdXMKbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHN1cgpwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAtTiA8bm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHk+CiAgICAtZCBhY3RpdmUgbGUgbW9kZSBkZWJ1ZwogICAgLUQgcGFzc2UgZW4gZGFlbW9uCiAgICAtcSBk6XNhY3RpdmUgbCdhZmZpY2hhZ2UgZGUgbWVzc2FnZXMgc3VyIGxhIHNvcnRpZSBzdGFuZGFyZC4KICAgIC1WIGFmZmljaGUgbGVzIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQsIG3qbWUgc2kgLXEgb3UgJ3F1aWV0JyBzb250CiAgICAgICBzcOljaWZp6XMuCiAgICAtYyB26XJpZmllIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBwdWlzIHF1aXR0ZSBhdmVjIHVuIGNvZGUgZGUgcmV0b3VyIDAKICAgICAgIHNpIGF1Y3VuZSBlcnJldXIgbidhIOl06SB0cm91dullLCBvdSAxIHNpIHVuZSBlcnJldXIgZGUgc3ludGF4ZSBhIOl06QogICAgICAgZOl0ZWN06WUuCiAgICAtcCA8ZmljaGllcj4gaW5kaXF1ZSBhdSBwcm9jZXNzdXMgcOhyZSBxdSdpbCBkb2l0IOljcmlyZSBsZXMgUElEcyBkZSBzZXMKICAgICAgIGZpbHMgZGFucyBjZSBmaWNoaWVyIGVuIG1vZGUgZOltb24uCiAgICAtcyBhZmZpY2hlIGxlcyBzdGF0aXN0aXF1ZXMgKHNpIG9wdGlvbiBjb21waWzpZSkKICAgIC1sIGFqb3V0ZSBkZXMgaW5mb3JtYXRpb25zIGF1eCBzdGF0aXN0aXF1ZXMKCkxlIG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbiBzaW11bHRhbullcyBwYXIgcHJveHkgZXN0IGxlIHBhcmFt6HRyZSBwYXIgZOlmYXV0CnBvdXIgbGVzIHByb3hpZXMgcG91ciBsZXNxdWVscyBjZSBwYXJhbeh0cmUgbidlc3QgcGFzIHBy6WNpc+kgZGFucyBsZSBmaWNoaWVyIGRlCmNvbmZpZ3VyYXRpb24uIElsIHMnYWdpdCBkdSBwYXJhbeh0cmUgJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nLgoKTGUgbm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBsaW1pdGUgbGUgbm9tYnJlIGRlIGNvbm5leGlvbnMKVENQIHV0aWxpc2FibGVzIOAgdW4gaW5zdGFudCBkb25u6SBwYXIgbGUgcHJvY2Vzc3VzLCB0b3VzIHByb3hpZXMgY29uZm9uZHVzLiBDZQpwYXJhbeh0cmUgcmVtcGxhY2UgbGUgcGFyYW3odHJlICdtYXhjb25uJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLgoKTGUgbW9kZSBkZWJ1ZyBjb3JyZXNwb25kIOAgbCdvcHRpb24gJ2RlYnVnJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLiBEYW5zIGNlCm1vZGUsIHRvdXRlcyBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zLCBldCB0b3VzIGxlcyDpY2hhbmdlcyBkJ2VudOp0ZXMgSFRUUApzb250IGFmZmljaOlzLgoKTGVzIHN0YXRpc3RpcXVlcyBuZSBzb250IGRpc3BvbmlibGVzIHF1ZSBzaSBsZSBwcm9ncmFtbWUgYSDpdOkgY29tcGls6SBhdmVjCmwnb3B0aW9uICJTVEFUVElNRSIuIElsIHMnYWdpdCBwcmluY2lwYWxlbWVudCBkZSBkb25u6WVzIGJydXRlcyBuJ2F5YW50CmQndXRpbGl06SBxdWUgbG9ycyBkZSBiZW5jaG1hcmtzIHBhciBleGVtcGxlLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdHJ1Y3R1cmUKPT09PT09PT09CgpMJ2FuYWx5c2V1ciBkdSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gaWdub3JlIGRlcyBsaWduZXMgdmlkZXMsIGxlcyBlc3BhY2VzLApsZXMgdGFidWxhdGlvbnMsIGV0IHRvdXQgY2UgcXVpIGVzdCBjb21wcmlzIGVudHJlIGxlIHN5bWJvbGUgJyMnIChzJ2lsIG4nZXN0IHBhcwpwculj6WTpIGQndW4gJ1wnKSwgZXQgbGEgZmluIGRlIGxhIGxpZ25lLCBjZSBxdWkgY29uc3RpdHVlIHVuIGNvbW1lbnRhaXJlLgoKTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVzdCBk6WNvdXDpIGVuIHNlY3Rpb25zIHLpcOly6WVzIHBhciBkZXMgbW90cyBjbOlzCnRlbHMgcXVlIDoKCiAgLSAnZ2xvYmFsJwogIC0gJ2xpc3RlbicKICAtICdkZWZhdWx0cycKClRvdXMgbGVzIHBhcmFt6HRyZXMgZm9udCBy6WbpcmVuY2Ug4CBsYSBzZWN0aW9uIGTpZmluaWUgcGFyIGxlIGRlcm5pZXIgbW90IGNs6QpyZWNvbm51LgoKCjEpIFBhcmFt6HRyZXMgZ2xvYmF1eAo9PT09PT09PT09PT09PT09PT09PT0KCklsIHMnYWdpdCBkZXMgcGFyYW3odHJlcyBhZ2lzc2FudCBzdXIgbGUgcHJvY2Vzc3VzLCBvdSBiaWVuIHN1ciBsJ2Vuc2VtYmxlIGRlcwpwcm94aWVzLiBJbHMgc29udCB0b3VzIHNw6WNpZmnpcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIExlcyBwYXJhbeh0cmVzCnN1cHBvcnTpcyBzb250IDoKCiAgLSBsb2cgPGFkcmVzc2U+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQogIC0gbWF4Y29ubiA8bm9tYnJlPgogIC0gdWlkIDxpZGVudGlmaWFudD4KICAtIGdpZCA8aWRlbnRpZmlhbnQ+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIHF1aWV0CiAgLSBwaWRmaWxlIDxmaWNoaWVyPgoKMS4xKSBKb3VybmFsaXNhdGlvbiBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHBsdXBhcnQgZGVzIOl26W5lbWVudHMgc29udCBqb3VybmFsaXPpcyA6IGTpbWFycmFnZXMsIGFycup0cywgZGlzcGFyaXRpb24gZXQKYXBwYXJpdGlvbiBkZSBzZXJ2ZXVycywgY29ubmV4aW9ucywgZXJyZXVycy4gVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuCnN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXA+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQoKTGVzIGNvbm5leGlvbnMgc29udCBlbnZveellcyBlbiBuaXZlYXUgImluZm8iLiBMZXMgZOltYXJyYWdlcyBkZSBzZXJ2aWNlIGV0IGRlCnNlcnZldXJzIHNlcm9udCBlbnZveelzIGVuICJub3RpY2UiLCBsZXMgc2lnbmF1eCBkJ2Fycup0cyBlbiAid2FybmluZyIgZXQgbGVzCmFycup0cyBk6WZpbml0aWZzIGRlIHNlcnZpY2VzIGV0IGRlIHNlcnZldXJzIGVuICJhbGVydCIuIENlY2kgZXN0IHZhbGFibGUgYXVzc2kKYmllbiBwb3VyIGxlcyBwcm94aWVzIHF1ZSBwb3VyIGxlcyBzZXJ2ZXVycyB0ZXN06XMgcGFyIGxlcyBwcm94aWVzLiBMZSBwYXJhbeh0cmUKb3B0aW9ubmVsIDxuaXZlYXVfbWF4PiBk6WZpbml0IGxlIG5pdmVhdSBtYXhpbWFsIGRlIHRyYWNlcyDpbWlzZXMgcGFybWkgbGVzIDgKdmFsZXVycyBzdWl2YW50ZXMgIDoKICAgIGVtZXJnLCBhbGVydCwgY3JpdCwgZXJyLCB3YXJuaW5nLCBub3RpY2UsIGluZm8sIGRlYnVnCgpQYXIgY29tcGF0aWJpbGl06SBhdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgYW506XJpZXVyZXMsIGxhIHZhbGV1ciBwYXIgZOlmYXV0CmVzdCAiZGVidWciIHNpIGwnb3B0aW9uIG4nZXN0IHBhcyBwculjaXPpZS4KCkxlcyBjYXTpZ29yaWVzIHBvc3NpYmxlcyBzb250IDoKICAgIGtlcm4sIHVzZXIsIG1haWwsIGRhZW1vbiwgYXV0aCwgc3lzbG9nLCBscHIsIG5ld3MsCiAgICB1dWNwLCBjcm9uLCBhdXRoMiwgZnRwLCBudHAsIGF1ZGl0LCBhbGVydCwgY3JvbjIsCiAgICBsb2NhbDAsIGxvY2FsMSwgbG9jYWwyLCBsb2NhbDMsIGxvY2FsNCwgbG9jYWw1LCBsb2NhbDYsIGxvY2FsNwoKQ29uZm9ybeltZW50IOAgbGEgUkZDMzE2NCwgbGVzIG1lc3NhZ2VzIOltaXMgc29udCBsaW1pdOlzIOAgMTAyNCBjYXJhY3TocmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCglsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCWxvZyAxMjcuMC4wLjEgICAgIGxvY2FsNCBub3RpY2UKCjEuMikgbGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGV0IGNvbnNlaWxs6SBkZSBsaW1pdGVyIGxlIG5vbWJyZSBnbG9iYWwgZGUgY29ubmV4aW9ucyBwYXIKcHJvY2Vzc3VzLiBMZXMgY29ubmV4aW9ucyBzb250IGNvbXByaXNlcyBhdSBzZW5zICdhY2NlcHRhdGlvbiBkZSBjb25uZXhpb24nLApkb25jIGlsIGZhdXQgcydhdHRlbmRyZSBlbiBy6GdsZSBn6W7pcmFsIOAgYXZvaXIgdW4gcGV1IHBsdXMgZHUgZG91YmxlIGRlCnNlc3Npb25zIFRDUCBxdWUgbGUgbWF4aW11bSBkZSBjb25uZXhpb25zIGZpeOkuIEMnZXN0IGltcG9ydGFudCBwb3VyIGZpeGVyIGxlCnBhcmFt6HRyZSAndWxpbWl0IC1uJyBhdmFudCBkZSBsYW5jZXIgbGUgcHJveHkuIFBvdXIgY29tcHRhYmlsaXNlciBsZSBub21icmUKZGUgc29ja2V0cyBu6WNlc3NhaXJlcywgaWwgZmF1dCBwcmVuZHJlIGVuIGNvbXB0ZSBjZXMgcGFyYW3odHJlcyA6CiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsIHBvc2l0aW9ubmVyCmxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIERhbnMgdW5lIGZ1dHVyZSB2ZXJzaW9uLCBoYXByb3h5IHNlcmEKY2FwYWJsZSBkZSBwb3NpdGlvbm5lciBsdWktbeptZSBjZXR0ZSBsaW1pdGUuCgoxLjMpIERpbWludXRpb24gZGVzIHByaXZpbOhnZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkFmaW4gZGUgculkdWlyZSBsZXMgcmlzcXVlcyBkJ2F0dGFxdWVzIGRhbnMgbGUgY2FzIG/5IHVuZSBmYWlsbGUgbm9uIGlkZW50aWZp6WUKc2VyYWl0IGV4cGxvaXTpZSwgaWwgZXN0IHBvc3NpYmxlIGRlIGRpbWludWVyIGxlcyBwcml2aWzoZ2VzIGR1IHByb2Nlc3N1cywgZXQKZGUgbCdpc29sZXIgZGFucyB1biBy6XBlcnRvaXJlIHNhbnMgcmlzcXVlLgoKRGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLCBsZSBwYXJhbeh0cmUgJ3VpZCcgcGVybWV0IGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgZCd1dGlsaXNhdGV1ci4gTGEgdmFsZXVyIDAsIGNvcnJlc3BvbmRhbnQgbm9ybWFsZW1lbnQgYXUgc3VwZXItCnV0aWxpc2F0ZXVyLCBwb3Nz6GRlIGljaSB1bmUgc2lnbmlmaWNhdGlvbiBwYXJ0aWN1bGnocmUgY2FyIGVsbGUgaW5kaXF1ZSBxdWUKbCdvbiBuZSBzb3VoYWl0ZSBwYXMgY2hhbmdlciBjZXQgaWRlbnRpZmlhbnQgZXQgY29uc2VydmVyIGxhIHZhbGV1ciBjb3VyYW50ZS4KQydlc3QgbGEgdmFsZXVyIHBhciBk6WZhdXQuIERlIGxhIG3qbWUgbWFuaehyZSwgbGUgcGFyYW3odHJlICdnaWQnIGNvcnJlc3BvbmQg4Ap1biBpZGVudGlmaWFudCBkZSBncm91cGUsIGV0IHV0aWxpc2UgcGFyIGTpZmF1dCBsYSB2YWxldXIgMCBwb3VyIG5lIHJpZW4KY2hhbmdlci4gSWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgZOljb25zZWlsbOkgZCd1dGlsaXNlciBkZXMgY29tcHRlcyBn6W7pcmlxdWVzCnRlbHMgcXVlICdub2JvZHknIGNhciBjZXR0ZSBwcmF0aXF1ZSByZXZpZW50IOAgdXRpbGlzZXIgJ3Jvb3QnIHNpIGQnYXV0cmVzCnByb2Nlc3N1cyB1dGlsaXNlbnQgbGVzIG3qbWVzIGlkZW50aWZpYW50cy4KCkxlIHBhcmFt6HRyZSAnY2hyb290JyBhdXRvcmlzZSDgIGNoYW5nZXIgbGEgcmFjaW5lIGR1IHByb2Nlc3N1cyB1bmUgZm9pcyBsZQpwcm9ncmFtbWUgbGFuY+ksIGRlIHNvcnRlIHF1ZSBuaSBsZSBwcm9jZXNzdXMsIG5pIGwndW4gZGUgc2VzIGRlc2NlbmRhbnRzIG5lCnB1aXNzZW50IHJlbW9udGVyIGRlIG5vdXZlYXUg4CBsYSByYWNpbmUuIENlIHR5cGUgZGUgY2xvaXNvbm5lbWVudCAoY2hyb290KSBlc3QKZ+lu6XJhbGVtZW50IGNvbnRvdXJuYWJsZSBzdXIgY2VydGFpbnMgT1MgKExpbnV4LCBTb2xhcmlzKSBwb3VyIHBldSBxdWUKbCdhdHRhcXVhbnQgcG9zc+hkZSBkZXMgZHJvaXRzICdyb290JyBldCBzb2l0IGVuIG1lc3VyZSBkJ3V0aWxpc2VyIG91IGRlIGNy6WVyCnVuIHLpcGVydG9pcmUuIEF1c3NpLCBpbCBlc3QgaW1wb3J0YW50IGQndXRpbGlzZXIgdW4gculwZXJ0b2lyZSBzcOljaWZpcXVlIGF1CnNlcnZpY2UgcG91ciBjZXQgdXNhZ2UsIGV0IGRlIG5lIHBhcyBtdXR1YWxpc2VyIHVuIG3qbWUgculwZXJ0b2lyZSBwb3VyCnBsdXNpZXVycyBzZXJ2aWNlcyBkZSBuYXR1cmUgZGlmZulyZW50ZS4gUG91ciByZW5kcmUgbCdpc29sZW1lbnQgcGx1cyByb2J1c3RlLAppbCBlc3QgY29uc2VpbGzpIGQndXRpbGlzZXIgdW4gculwZXJ0b2lyZSB2aWRlLCBzYW5zIGF1Y3VuIGRyb2l0LCBldCBkZSBjaGFuZ2VyCmwndWlkIGR1IHByb2Nlc3N1cyBkZSBzb3J0ZSBxdSdpbCBuZSBwdWlzc2UgcmllbiBmYWlyZSBkYW5zIGxlZGl0IHLpcGVydG9pcmUuCgpSZW1hcnF1ZTogZGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQKcHJvYmFibGUgcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyIGVuCmVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbiB1dGlsZQpkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUgcHJvYmzobWUsIHZpYQpsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91ciBkZXMgcmFpc29ucyBkZQpz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1biBjaGFuZ2VtZW50CmQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlIHByb2Nlc3N1cyDgCnBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudCBwYXMgZWZmZWN0dWVyCmxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzICh1aWQgMCkuIERhbnMgY2UKY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlIGxhbmNlbWVudCwgc29pdCBkYW5zIGxlCnLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcyBvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlCnBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZSBsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAoJdWlkCTMwMDAwCglnaWQJMzAwMDAKCWNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKMS40KSBNb2RlcyBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHBsdXNpZXVycyBtb2RlcyA6CiAgLSBhdmFudC0gLyBhcnJp6HJlLXBsYW4KICAtIHNpbGVuY2lldXggLyBub3JtYWwgLyBkZWJ1ZwoKTGUgbW9kZSBwYXIgZOlmYXV0IGVzdCBub3JtYWwsIGF2YW50LXBsYW4sIGMnZXN0IOAgZGlyZSBxdWUgbGUgcHJvZ3JhbW1lIG5lIHJlbmQKcGFzIGxhIG1haW4gdW5lIGZvaXMgbGFuY+kuIElsIG5lIGZhdXQgc3VydG91dCBwYXMgbGUgbGFuY2VyIGNvbW1lIGNlY2kgZGFucyB1bgpzY3JpcHQgZGUgZOltYXJyYWdlIGR1IHN5c3TobWUsIHNpbm9uIGxlIHN5c3TobWUgbmUgZmluaXJhaXQgcGFzIHNvbgppbml0aWFsaXNhdGlvbi4gSWwgZmF1dCBsZSBtZXR0cmUgZW4gYXJyaehyZS1wbGFuLCBkZSBzb3J0ZSBxdSdpbCByZW5kZSBsYSBtYWluCmF1IHByb2Nlc3N1cyBhcHBlbGFudC4gQydlc3QgY2UgcXVlIGZhaXQgbCdvcHRpb24gJ2RhZW1vbicgZGUgbGEgc2VjdGlvbgonZ2xvYmFsJywgZXQgcXVpIGVzdCBsJ+lxdWl2YWxlbnQgZHUgcGFyYW3odHJlICctRCcgZGUgbGEgbGlnbmUgZGUgY29tbWFuZGUuCgpQYXIgYWlsbGV1cnMsIGNlcnRhaW5zIG1lc3NhZ2VzIGQnYWxlcnRlIHNvbnQgdG91am91cnMgZW52b3npcyBzdXIgbGEgc29ydGllCnN0YW5kYXJkLCBt6m1lIGVuIG1vZGUgJ2RhZW1vbicuIFBvdXIgbmUgcGx1cyBsZXMgdm9pciBhaWxsZXVycyBxdWUgZGFucyBsZXMKbG9ncywgaWwgc3VmZml0IGRlIHBhc3NlciBlbiBtb2RlIHNpbGVuY2lldXggcGFyIGwnYWpvdXQgZGUgbCdvcHRpb24gJ3F1aWV0Jy4KQ2V0dGUgb3B0aW9uIG4nYSBwYXMgZCfpcXVpdmFsZW50IGVuIGxpZ25lIGRlIGNvbW1hbmRlLgoKRW5maW4sIGxlIG1vZGUgJ2RlYnVnJyBwZXJtZXQgZGUgZGlhZ25vc3RpcXVlciBsZXMgb3JpZ2luZXMgZGUgY2VydGFpbnMKcHJvYmzobWVzIGVuIGFmZmljaGFudCBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zIGV0IOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUAplbnRyZSBsZXMgY2xpZW50cyBldCBsZXMgc2VydmV1cnMuIENlIG1vZGUgZXN0IGluY29tcGF0aWJsZSBhdmVjIGxlcyBvcHRpb25zCidkYWVtb24nIGV0ICdxdWlldCcgcG91ciBkZXMgcmFpc29ucyBkZSBib24gc2Vucy4KCjEuNSkgQWNjcm9pc3NlbWVudCBkZSBsYSBjYXBhY2l06SBkZSB0cmFpdGVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1ciBkZXMgbWFjaGluZXMgbXVsdGktcHJvY2Vzc2V1cnMsIGlsIHBldXQgc2VtYmxlciBn4mNo6SBkZSBuJ3V0aWxpc2VyIHF1J3VuCnByb2Nlc3NldXIgcG91ciBlZmZlY3R1ZXIgbGVzIHTiY2hlcyBkZSByZWxheWFnZSwgbeptZSBzaSBsZXMgY2hhcmdlcwpu6WNlc3NhaXJlcyDgIHNhdHVyZXIgdW4gcHJvY2Vzc2V1ciBhY3R1ZWwgc29udCBiaWVuIGF1LWRlbOAgZGVzIG9yZHJlcyBkZQpncmFuZGV1ciBjb3VyYW1tZW50IHJlbmNvbnRy6XMuIENlcGVuZGFudCwgcG91ciBkZXMgYmVzb2lucyBwYXJ0aWN1bGllcnMsIGxlCnByb2dyYW1tZSBzYWl0IGTpbWFycmVyIHBsdXNpZXVycyBwcm9jZXNzdXMgc2UgculwYXJ0aXNzYW50IGxhIGNoYXJnZSBkZQp0cmF2YWlsLiBDZSBub21icmUgZGUgcHJvY2Vzc3VzIGVzdCBzcOljaWZp6SBwYXIgbGUgcGFyYW3odHJlICduYnByb2MnIGRlIGxhCnNlY3Rpb24gJ2dsb2JhbCcuIFNhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCBuYXR1cmVsbGVtZW50IDEuIENlY2kgbmUgZm9uY3Rpb25uZQpxdSdlbiBtb2RlICdkYWVtb24nLiBVbiB1c2FnZSBk6WrgIHJlbmNvbnRy6SBwb3VyIGNlIHBhcmFt6HRyZSBmdXQgZGUgZOlwYXNzZXIKbGEgbGltaXRlIGRlIG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgYWxsb3XpZSBwYXIgcHJvY2Vzc3VzIHNvdXMKU29sYXJpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKCWRhZW1vbgoJcXVpZXQKCW5icHJvYwkyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgoKMikgROlmaW5pdGlvbiBkJ3VuIHNlcnZpY2UgZW4g6WNvdXRlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIHNlY3Rpb25zIGRlIHNlcnZpY2UgZOlidXRlbnQgcGFyIGxlIG1vdCBjbOkgImxpc3RlbiIgOgoKICAgIGxpc3RlbiA8bm9tX2luc3RhbmNlPiBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCi0gPG5vbV9pbnN0YW5jZT4gZXN0IGxlIG5vbSBkZSBsJ2luc3RhbmNlIGTpY3JpdGUuIENlIG5vbSBzZXJhIGVudm956SBkYW5zIGxlcwogIGxvZ3MsIGRvbmMgaWwgZXN0IHNvdWhhaXRhYmxlIGQndXRpbGlzZXIgdW4gbm9tIHJlbGF0aWYgYXUgc2VydmljZSByZWxheekuIEF1Y3VuCiAgdGVzdCBuJ2VzdCBlZmZlY3R16SBjb25jZXJuYW50IGwndW5pY2l06SBkZSBjZSBub20sIHF1aSBuJ2VzdCBwYXMgb2JsaWdhdG9pcmUsCiAgbWFpcyBmb3J0ZW1lbnQgcmVjb21tYW5k6WUuCgotIDxhZHJlc3NlX0lQPiBlc3QgbCdhZHJlc3NlIElQIHN1ciBsYXF1ZWxsZSBsZSByZWxhaXMgYXR0ZW5kIHNlcyBjb25uZXhpb25zLgogIEwnYWJzZW5jZSBkJ2FkcmVzc2UgYWluc2kgcXVlIGwnYWRyZXNzZSAwLjAuMC4wIHNpZ25pZmllbnQgcXVlIGxlcyBjb25uZXhpb25zCiAgcG91cnJvbnQgcydlZmZlY3R1ZXIgc3VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgZGUgbGEgbWFjaGluZS4KCi0gPHBsYWdlX3BvcnRzPiBjb3JyZXNwb25kIHNvaXQg4CB1biBwb3J0LCBzb2l0IOAgdW5lIHBsYWdlIGRlIHBvcnRzIHN1cgogIGxlc3F1ZWxzIGxlIHJlbGFpcyBhY2NlcHRlcmEgZGVzIGNvbm5leGlvbnMgcG91ciBsJ2FkcmVzc2UgSVAgc3DpY2lmaellLgogIENldHRlIHBsYWdlIHBldXQg6nRyZSA6CiAgICAtIHNvaXQgdW4gcG9ydCBudW3pcmlxdWUgKGV4OiAnODAnKQogICAgLSBzb2l0IHVuZSBwbGFnZSBjb25zdGl0dellIGRlIGRldXggdmFsZXVycyBz6XBhcullcyBwYXIgdW4gdGlyZXQKICAgICAgKGV4OiAnMjAwMC0yMTAwJykgcmVwculzZW50YW50IGxlcyBleHRy6W1pdOlzIGluY2x1c2VzIGRhbnMgbGEKICAgICAgcGxhZ2UuCiAgSWwgZmF1dCBmYWlyZSBhdHRlbnRpb24g4CBsJ3VzYWdlIGRlcyBwbGFnZXMsIGNhciBjaGFxdWUgY29tYmluYWlzb24KICA8YWRyZXNzZV9JUD46PHBvcnQ+IGNvbnNvbW1lIHVuZSBzb2NrZXQsIGRvbmMgdW4gZGVzY3JpcHRldXIgZGUgZmljaGllci4KICBMZSBjb3VwbGUgPGFkcmVzc2VfSVA+Ojxwb3J0PiBkb2l0IOp0cmUgdW5pcXVlIHBvdXIgdG91dGVzIGxlcyAgaW5zdGFuY2VzCiAgZCd1bmUgbeptZSBtYWNoaW5lLiBMJ2F0dGFjaGVtZW50IOAgdW4gcG9ydCBpbmbpcmlldXIg4CAxMDI0IG7pY2Vzc2l0ZSB1bgogIG5pdmVhdSBkZSBwcml2aWzoZ2UgcGFydGljdWxpZXIgbG9ycyBkdSBsYW5jZW1lbnQgZHUgcHJvZ3JhbW1lIChpbmTpcGVuZGFtbWVudAogIGR1IHBhcmFt6HRyZSAndWlkJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnKS4KCi0gbGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+IHBldXQg6nRyZSBy6XDpdOkgaW5k6WZpbmltZW50IHBvdXIKICBkZW1hbmRlciBhdSByZWxhaXMgZCfpY291dGVyIOlnYWxlbWVudCBzdXIgZCdhdXRyZXMgYWRyZXNzZXMgZXQvb3UgZCdhdXRyZXMKICBwbGFnZXMgZGUgcG9ydHMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGRlIHPpcGFyZXIgbGVzIGNvdXBsZXMgcGFyIHVuZSB2aXJndWxlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgbGlzdGVuIHgxMV9wcm94eSAxMjcuMC4wLjE6NjAwMC02MDA5CiAgICBsaXN0ZW4gc210cF9wcm94eSAxMjcuMC4wLjE6MjUsMTI3LjAuMC4xOjU4NwogICAgbGlzdGVuIGxkYXBfcHJveHkgOjM4OSw6NjYzCgpTaSB0b3V0ZXMgbGVzIGFkcmVzc2VzIG5lIHRpZW5uZW50IHBhcyBzdXIgdW5lIGxpZ25lLCBpbCBlc3QgcG9zc2libGUgZCdlbgpyYWpvdXRlciDgIGwnYWlkZSBkdSBtb3QgY2zpICdiaW5kJy4gRGFucyBjZSBjYXMsIGlsIG4nZXN0IG3qbWUgcGFzIG7pY2Vzc2FpcmUKZGUgc3DpY2lmaWVyIGxhIHByZW1p6HJlIGFkcmVzc2Ugc3VyIGxhIGxpZ25lIGxpc3RlbiwgY2UgcXVpIGZhY2lsaXRlIHBhcmZvaXMKbCfpY3JpdHVyZSBkZSBjb25maWd1cmF0aW9ucyA6CgogICAgYmluZCBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCgliaW5kIDEwLjAuMC4xOjEwMDgwLDEwLjAuMC4xOjEwNDQzCgoyLjEpIEluaGliaXRpb24gZCd1biBzZXJ2aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IOp0cmUgZOlzYWN0aXbpIHBvdXIgZGVzIGJlc29pbnMgZGUgbWFpbnRlbmFuY2UsIHNhbnMgYXZvaXIg4Apjb21tZW50ZXIgdG91dGUgdW5lIHBhcnRpZSBkdSBmaWNoaWVyLiBJbCBzdWZmaXQgZGUgcG9zaXRpb25uZXIgbGUgbW90IGNs6QoiZGlzYWJsZWQiIGRhbnMgc2Egc2VjdGlvbiA6CgogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQoJZGlzYWJsZWQKClJlbWFycXVlOiBsZSBtb3QgY2zpICdlbmFibGVkJyBwZXJtZXQgZGUgculhY3RpdmVyIHVuIHNlcnZpY2UgcHLpYWxhYmxlbWVudAoJICBk6XNhY3RpdukgcGFyIGxlIG1vdCBjbOkgJ2Rpc2FibGVkJywgcGFyIGV4ZW1wbGUg4CBjYXVzZSBkJ3VuZQoJICBjb25maWd1cmF0aW9uIHBhciBk6WZhdXQuCgoyLjIpIE1vZGUgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHRyb2lzIG1vZGVzIGRpZmbpcmVudHMgOgogIC0gVENQCiAgLSBIVFRQCiAgLSBzdXBlcnZpc2lvbgoKTW9kZSBUQ1AKLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSwgZOhzIGxldXIg6XRhYmxpc3NlbWVudCwgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMKdW4gb3UgcGx1c2lldXJzIHNlcnZldXJzLiBBdWN1biB0cmFpdGVtZW50IG4nZXN0IGVmZmVjdHXpIHN1ciBsZSBmbHV4LiBJbCBzJ2FnaXQKc2ltcGxlbWVudCBkJ3VuZSBhc3NvY2lhdGlvbiBzb3VyY2U8YWRyZXNzZTpwb3J0PiAtPiBkZXN0aW5hdGlvbjxhZHJlc3NlOnBvcnQ+LgpQb3VyIGwndXRpbGlzZXIsIHBy6WNpc2VyIGxlIG1vZGUgVENQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQoJbW9kZSB0Y3AKCk1vZGUgSFRUUAotLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSBsZXMgY29ubmV4aW9ucyBUQ1AgdmVycyB1biBvdSBwbHVzaWV1cnMKc2VydmV1cnMsIHVuZSBmb2lzIHF1J2lsIGRpc3Bvc2UgZCdhc3NleiBkJ2luZm9ybWF0aW9ucyBwb3VyIGVuIHByZW5kcmUgbGEKZOljaXNpb24uIExlcyBlbnTqdGVzIEhUVFAgc29udCBhbmFseXPpcyBwb3VyIHkgdHJvdXZlciB1biDpdmVudHVlbCBjb29raWUsIGV0CmNlcnRhaW5zIGQnZW50cmUtZXV4IHBldXZlbnQg6nRyZSBtb2RpZmnpcyBwYXIgbGUgYmlhaXMgZCdleHByZXNzaW9ucwpy6Wd1bGnocmVzLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIgbGUgbW9kZSBIVFRQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUKcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAoJbW9kZSBodHRwCgpNb2RlIHN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0KSWwgcydhZ2l0IGQndW4gbW9kZSBvZmZyYW50IOAgdW4gY29tcG9zYW50IGV4dGVybmUgdW5lIHZpc2liaWxpdOkgZGUgbCfpdGF0IGRlCnNhbnTpIGR1IHNlcnZpY2UuIElsIHNlIGNvbnRlbnRlIGRlIHJldG91cm5lciAiT0siIOAgdG91dCBjbGllbnQgc2UgY29ubmVjdGFudApzdXIgc29uIHBvcnQuIElsIHBldXQg6nRyZSB1dGlsaXPpIGF2ZWMgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2Ug6XZvbHXpcyBwb3VyCmTpdGVybWluZXIgcXVlbHMgc29udCBsZXMgc2VydmljZXMgdXRpbGlzYWJsZXMuIFNpIGwnb3B0aW9uICdodHRwY2hrJyBlc3QKYWN0aXbpZSwgYWxvcnMgbGEgculwb25zZSBjaGFuZ2VyYSBlbiAnSFRUUC8xLjAgMjAwIE9LJyBwb3VyIHNhdGlzZmFpcmUgbGVzCmF0dGVudGVzIGRlIGNvbXBvc2FudHMgc2FjaGFudCB0ZXN0ZXIgZW4gSFRUUC4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyCmxlIG1vZGUgSEVBTFRIIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBy6XBvbnNlIHNpbXBsZSA6ICdPSycKICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAoJbW9kZSBoZWFsdGgKCiAgICAjIHLpcG9uc2UgSFRUUCA6ICdIVFRQLzEuMCAyMDAgT0snCiAgICBsaXN0ZW4gaHR0cF9oZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMQoJbW9kZSBoZWFsdGgKCW9wdGlvbiBodHRwY2hrCgoKMi4zKSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBwYXJhbeh0cmUgIm1heGNvbm4iIHBlcm1ldCBkZSBmaXhlciBsYSBsaW1pdGUgYWNjZXB0YWJsZSBlbiBub21icmUgZGUKY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHkuIENoYXF1ZSBwcm94eSBxdWkgYXR0ZWludCBjZXR0ZSB2YWxldXIgY2Vzc2UKZCfpY291dGVyIGp1c3F1J+AgbGli6XJhdGlvbiBkJ3VuZSBjb25uZXhpb24uIFZvaXIgcGx1cyBsb2luIGNvbmNlcm5hbnQgbGVzCmxpbWl0YXRpb25zIGxp6WVzIGF1IHN5c3TobWUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gdGlueV9zZXJ2ZXIgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAKCgoyLjQpIEFycup0IGVuIGRvdWNldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkJ2Fycup0ZXIgbGVzIHNlcnZpY2VzIGVuIGRvdWNldXIgZW4gZW52b3lhbnQgdW4gc2lnbmFsIFNJR19VU1IxCmF1IHByb2Nlc3N1cyByZWxhaXMuIFRvdXMgbGVzIHNlcnZpY2VzIHNlcm9udCBhbG9ycyBtaXMgZW4gcGhhc2UgZCdhcnLqdCwgbWFpcwpwb3Vycm9udCBjb250aW51ZXIgZCdhY2NlcHRlciBkZXMgY29ubmV4aW9ucyBwZW5kYW50IHVuIHRlbXBzIGTpZmluaSBwYXIgbGUKcGFyYW3odHJlICdncmFjZScgKGVuIG1pbGxpc2Vjb25kZXMpLiBDZWxhIHBlcm1ldCBwYXIgZXhlbXBsZSwgZGUgZmFpcmUgc2F2b2lyCnJhcGlkZW1lbnQg4CB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgcXUnaWwgbmUgZG9pdCBwbHVzIHV0aWxpc2VyIHVuIHJlbGFpcywKdG91dCBlbiBjb250aW51YW50IGQnYXNzdXJlciBsZSBzZXJ2aWNlIGxlIHRlbXBzIHF1J2lsIHMnZW4gcmVuZGUgY29tcHRlLgpSZW1hcnF1ZSA6IGxlcyBjb25uZXhpb25zIGFjdGl2ZXMgbmUgc29udCBqYW1haXMgY2Fzc+llcy4gRGFucyBsZSBwaXJlIGRlcyBjYXMsCmlsIGZhdWRyYSBhdHRlbmRyZSBlbiBwbHVzIGxldXIgZXhwaXJhdGlvbiBhdmFudCBsJ2Fycup0IHRvdGFsIGR1IHByb2Nlc3N1cy4gTGEKdmFsZXVyIHBhciBk6WZhdXQgZXN0IDAgKHBhcyBkZSBncuJjZSwgYXJy6nQgaW1t6WRpYXQgZGUgbCfpY291dGUpLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBhcnLqdGVyIGVuIGRvdWNldXIgcGFyICdraWxsYWxsIC1VU1IxIGhhcHJveHknCiAgICAjIGxlIHNlcnZpY2UgdG91cm5lcmEgZW5jb3JlIDEwIHNlY29uZGVzIGFwcuhzIGxhIGRlbWFuZGUgZCdhcnLqdAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAoJbW9kZSBodHRwCglncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAoJbW9kZSBoZWFsdGgKCWdyYWNlIDAKCgoyLjUpIFRlbXBzIGQnZXhwaXJhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgcGFyYW3pdHJlciBjZXJ0YWluZXMgZHVy6WVzIGQnZXhwaXJhdGlvbiBhdSBuaXZlYXUgZGVzCmNvbm5leGlvbnMgVENQLiBUcm9pcyB0ZW1wcyBpbmTpcGVuZGFudHMgc29udCBjb25maWd1cmFibGVzIGV0IGFjY2VwdGVudCBkZXMKdmFsZXVycyBlbiBtaWxsaXNlY29uZGVzLiBTaSBsJ3VuZSBkZSBjZXMgdHJvaXMgdGVtcG9yaXNhdGlvbnMgZXN0IGTpcGFzc+llLCBsYQpzZXNzaW9uIGVzdCB0ZXJtaW7pZSDgIGNoYXF1ZSBleHRy6W1pdOkuCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IGNsaWVudCwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogImNsaXRpbWVvdXQiIDoKCgkjIHRpbWUtb3V0IGNsaWVudCDgIDJtbjMwLgoJY2xpdGltZW91dAkxNTAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogInNydnRpbWVvdXQiIDoKCgkjIHRpbWUtb3V0IHNlcnZldXIg4CAzMHMuCglzcnZ0aW1lb3V0CTMwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyCiAgICAiY29udGltZW91dCIgOgoKICAgICAgICAjIG9uIGFiYW5kb25uZSBzaSBsYSBjb25uZXhpb24gbidlc3QgcGFzIOl0YWJsaWUgYXBy6HMgNCBzZWNvbmRlcwoJY29udGltZW91dAk0MDAwCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gImNvbnRpbWVvdXQiIGV0ICJzcnZ0aW1lb3V0IiBuJ29udCBwYXMgZCd1dGlsaXTpIGRhbnMgbGUgY2FzIGR1IHNlcnZldXIgZGUKICAgIHR5cGUgImhlYWx0aCIuCiAgLSBzb3VzIGRlIGZvcnRlcyBjaGFyZ2VzLCBvdSBzdXIgdW4gculzZWF1IHNhdHVy6SBvdSBk6WZlY3R1ZXV4LCBpbCBlc3QKICAgIHBvc3NpYmxlIGRlIHBlcmRyZSBkZXMgcGFxdWV0cy4gRHUgZmFpdCBxdWUgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24gVENQCiAgICBuJ2FpdCBsaWV1IHF1J2F1IGJvdXQgZGUgMyBzZWNvdWRlcywgZml4ZXIgdW4gdGltZW91dCBkZSBjb25uZXhpb24gaW5m6XJpZXVyCiAgICDgIDMgc2Vjb25kZXMgbmUgcGVybWV0IHBhcyBkZSBzZSByYXR0cmFwZXIgc3VyIGxhIHBlcnRlIGRlIHBhcXVldHMgY2FyIGxhCiAgICBzZXNzaW9uIGF1cmEg6XTpIGFiYW5kb25u6WUgYXZhbnQgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24uIFVuZSB2YWxldXIgZGUKICAgIDQgc2Vjb25kZXMgculkdWlyYSBjb25zaWTpcmFibGVtZW50IGxlIG5vbWJyZSBkJ+ljaGVjcyBkZSBjb25uZXhpb24uCgoyLjYpIFRlbnRhdGl2ZXMgZGUgcmVjb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxvcnMgZCd1biDpY2hlYyBkZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUKcmV0ZW50ZXIgKHBvdGVudGllbGxlbWVudCB2ZXJzIHVuIGF1dHJlIHNlcnZldXIsIGVuIGNhcyBkZSBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UpLiBMZSBub21icmUgZGUgbm91dmVsbGVzIHRlbnRhdGl2ZXMgaW5mcnVjdHVldXNlcyBhdmFudAphYmFuZG9uIGVzdCBmb3VybmkgcGFyIGxlIHBhcmFt6HRyZSAicmV0cmllcyIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgkjIG9uIGVzc2FpZSBlbmNvcmUgdHJvaXMgZm9pcyBtYXhpCglyZXRyaWVzIDMKCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+llcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgZXN0IGTpZmluaSBwYXIKbGUgcGFyYW3odHJlICJkaXNwYXRjaCIgc291cyBsYSBmb3JtZSA8YWRyZXNzZV9pcD46PHBvcnQ+LiBJbCBjb3JyZXNwb25kIOAgdW4Kc2VydmV1ciBkJ2Fzc2lnbmF0aW9uIGRlIGNvb2tpZSBkYW5zIGxlIGNhcyBv+SBsZSBzZXJ2aWNlIGNvbnNpc3RlIOAgYXNzdXJlcgp1bmlxdWVtZW50IHVuZSBwZXJzaXN0ZW5jZSBIVFRQLCBvdSBiaWVuIHNpbXBsZW1lbnQgYXUgc2VydmV1ciBkZXN0aW5hdGlvbiBkYW5zCmxlIGNhcyBkZSByZWxheWFnZSBUQ1Agc2ltcGxlLiBDZXQgYW5jaWVuIG1vZGUgbmUgcGVybWV0IHBhcyBkZSB0ZXN0ZXIgbCfpdGF0CmR1IHNlcnZldXIgZGlzdGFudCwgZXQgaWwgZXN0IG1haW50ZW5hbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGRlIHBy6WbpcmVuY2UKbGUgbW9kZSAnYmFsYW5jZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgIAkjIG9uIGVudm9pZSB0b3V0ZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGljaQoJZGlzcGF0Y2ggMTkyLjE2OC4xLjI6ODAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpDZSBwYXJhbeh0cmUgbidhIHBhcyBkJ3V0aWxpdOkgcG91ciB1biBzZXJ2ZXVyIGVuIG1vZGUgJ2hlYWx0aCcsIG5pIGVuIG1vZGUKJ2JhbGFuY2UnLgoKCjIuOCkgQWRyZXNzZSBkZSBzb3J0aWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZm9yY2VyIGwnYWRyZXNzZSB1dGlsaXPpZSBwb3VyIOl0YWJsaXIgbGVzIGNvbm5leGlvbnMgdmVycwpsZXMgc2VydmV1cnMg4CBsJ2FpZGUgZHUgcGFyYW3odHJlICJzb3VyY2UiLiBJbCBlc3QgbeptZSBwb3NzaWJsZSBkZSBmb3JjZXIgbGUKcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzIHNw6WNpZmlxdWVzLgpDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIGNhcyBkJ2FkcmVzc2FnZSBtdWx0aXBsZSwgZXQgcGx1cyBn6W7pcmFsZW1lbnQKcG91ciBwZXJtZXR0cmUgYXV4IHNlcnZldXJzIGRlIHRyb3V2ZXIgbGUgY2hlbWluIGRlIHJldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMgZGUKcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0ICcwLjAuMC4wJyBvdSAnKicgb3UgdmlkZSwgZWxsZSBzZXJhIGNob2lzaWUKbGlicmVtZW50IHBhciBsZSBzeXN0ZW1lLiBTaSBsZSBwb3J0IGVzdCAnMCcgb3UgdmlkZSwgaWwgc2VyYSBjaG9pc2kgbGlicmVtZW50CnBhciBsZSBzeXN06G1lLiBJbCBlc3Qg4CBub3RlciBxdWUgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE4LCBsZXMgdGVzdHMgZGUgYm9uCmZvbmN0aW9ubmVtZW50IGRlcyBzZXJ2ZXVycyBzZXJvbnQgYXVzc2kgZWZmZWN0delzIOAgcGFydGlyIGRlIGxhIHNvdXJjZQpzcOljaWZp6WUgcGFyIGNlIHBhcmFt6HRyZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgKjo4MAogICAJIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKCXNvdXJjZSAxOTIuMTY4LjEuMjAwOjAKCiAgICBsaXN0ZW4gcmxvZ2luX3Byb3h5ICo6NTEzCiAgIAkjIHV0aWxpc2VyIGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwIGV0IGxlIHBvcnQgculzZXJ26SA5MDAKCXNvdXJjZSAxOTIuMTY4LjEuMjAwOjkwMAoKCjIuOSkgROlmaW5pdGlvbiBkdSBub20gZHUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlY2hlcmNoZXIgbGEgdmFsZXVyIGQndW4gY29va2llIHBvdXIgc2F2b2lyCnZlcnMgcXVlbCBzZXJ2ZXVyIGFpZ3VpbGxlciBsYSByZXF16nRlIHV0aWxpc2F0ZXVyLiBMZSBub20gZHUgY29va2llIGVzdCBkb25u6QpwYXIgbGUgcGFyYW3odHJlICJjb29raWUiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRAoKT24gcGV1dCBtb2RpZmllciBsJ3V0aWxpc2F0aW9uIGR1IGNvb2tpZSBwb3VyIGxhIHJlbmRyZSBwbHVzIGludGVsbGlnZW50ZQp2aXMt4C12aXMgZGVzIGFwcGxpY2F0aW9ucyByZWxheellcy4gSWwgZXN0IHBvc3NpYmxlLCBub3RhbW1lbnQgZGUgc3VwcHJpbWVyIG91CnLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KY29va2llIGRhbnMgdW5lIHLpcG9uc2UgSFRUUCBhZHJlc3PpZSDgIHVuIHNlcnZldXIgc+lsZWN0aW9ubukgZW4gculwYXJ0aXRpb24KZGUgY2hhcmdlLCBldCBt6m1lIGRlIHNpZ25hbGVyIGF1eCBwcm94aWVzIGFtb250IGRlIG5lIHBhcyBjYWNoZXIgbGUgY29va2llCmluc+ly6S4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKUG91ciBuZSBjb25zZXJ2ZXIgbGUgY29va2llIHF1J2VuIGFjY+hzIGluZGlyZWN0LCBkb25jIOAgdHJhdmVycyBsZQpkaXNwYXRjaGV1ciwgZXQgc3VwcHJpbWVyIHRvdXRlcyBzZXMg6XZlbnR1ZWxsZXMgb2NjdXJlbmNlcyBsb3JzIGRlcyBhY2PocwpkaXJlY3RzIDoKCgljb29raWUgU0VSVkVSSUQgaW5kaXJlY3QKClBvdXIgcmVtcGxhY2VyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBleGlzdGFudCBwYXIgY2VsbGUgYXR0cmlidellIOAgdW4gc2VydmV1ciwKbG9ycyBkJ3VuIGFjY+hzIGRpcmVjdCA6CgoJY29va2llIFNFUlZFUklEIHJld3JpdGUKClBvdXIgY3LpZXIgdW4gY29va2llIGNvbXBvcnRhbnQgbGEgdmFsZXVyIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIgbG9ycyBkJ3VuIGFjY+hzCmVuIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBEYW5zIGNlIGNhcywgaWwgZXN0IHNvdWhhaXRhYmxlIHF1ZSB0b3VzIGxlcwpzZXJ2ZXVycyBhaWVudCB1biBjb29raWUgcmVuc2VpZ27pLiBVbiBzZXJ2ZXVyIG5vbiBhc3NpZ27pIGQndW4gY29va2llCnJldG91cm5lcmEgdW4gY29va2llIHZpZGUgKGNvb2tpZSBkZSBzdXBwcmVzc2lvbikgOgoKCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQKClBvdXIgcul1dGlsaXNlciB1biBjb29raWUgYXBwbGljYXRpZiBldCBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLApwdWlzIGxlIHN1cHByaW1lciBkYW5zIGxlcyByZXF16nRlcyBzdWl2YW50ZXMsIHV0aWxpc2VyIGwnb3B0aW9uICdwcmVmaXgnLiBFbGxlCnBlcm1ldCBkJ2luc+lyZXIgdW5lIGluc3RhbmNlIGRlIGhhcHJveHkgZGV2YW50IHVuZSBhcHBsaWNhdGlvbiBzYW5zIHJpc3F1ZXIKZCdpbmNvbXBhdGliaWxpdOlzIGT7ZXMg4CBkZXMgY2xpZW50cyBxdWkgbmUgc3VwcG9ydGVyYWllbnQgcGFzIGQnYXBwcmVuZHJlCnBsdXMgZCd1biBjb29raWUgOgoKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSwgZW4gcydhc3N1cmFudCBxdSd1biBjYWNoZSBlbiBhbW9udCBuZSBsZSBzdG9ja2VyYSBwYXMsCmFqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgoKCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZQoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSBzZXVsZW1lbnQgc3VpdGUgYXV4IHJlcXXqdGVzIGRlIHR5cGUgUE9TVCwgYWpvdXRlciBsZSBtb3QKY2zpICdwb3N0b25seScgYXBy6HMgJ2luc2VydCcgOgoKCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgcG9zdG9ubHkKCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQotIElsIGVzdCBwb3NzaWJsZSBkZSBjb21iaW5lciAnaW5zZXJ0JyBhdmVjICdpbmRpcmVjdCcgb3UgJ3Jld3JpdGUnIHBvdXIgcydhZGFwdGVyCiAg4CBkZXMgYXBwbGljYXRpb25zIGfpbulyYW50IGTpauAgbGUgY29va2llLCBhdmVjIHVuIGNvbnRlbnUgaW52YWxpZGUuIElsIHN1ZmZpdAogIHBvdXIgY2VsYSBkZSBsZXMgc3DpY2lmaWVyIHN1ciBsYSBt6m1lIGxpZ25lLgoKLSBkYW5zIGxlIGNhcyBv+SAnaW5zZXJ0JyBldCAnaW5kaXJlY3QnIHNvbnQgc3DpY2lmaelzLCBsZSBjb29raWUgbidlc3QgamFtYWlzCiAgdHJhbnNtaXMgYXUgc2VydmV1ciB2dSBxdSdpbCBuJ2VuIGEgcGFzIGNvbm5haXNzYW5jZSBldCBuZSBwb3VycmFpdCBwYXMgbGUKICBjb21wcmVuZHJlLgoKLSBpbCBlc3QgcGFydGljdWxp6HJlbWVudCByZWNvbW1hbmTpIGQndXRpbGlzZXIgJ25vY2FjaGUnIGVuIG1vZGUgaW5zZXJ0aW9uIHNpCiAgZGVzIGNhY2hlcyBwZXV2ZW50IHNlIHRyb3V2ZXIgZW50cmUgbGVzIGNsaWVudHMgZXQgbCdpbnN0YW5jZSBkdSBwcm94eS4gRGFucwogIGxlIGNhcyBjb250cmFpcmUsIHVuIGNhY2hlIEhUVFAgMS4wIHBvdXJyYWl0IGNhY2hlciBsYSBy6XBvbnNlLCBpbmNsdWFudCBsZQogIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBpbnPpcuksIGRvbmMgcHJvdm9xdWVyIGRlcyBjaGFuZ2VtZW50cyBkZSBzZXJ2ZXVycyBwb3VyCiAgZGVzIGNsaWVudHMgcGFydGFnZWFudCBsZSBt6m1lIGNhY2hlLgoKLSBsZSBtb2RlICdwcmVmaXgnIG5lIG7pY2Vzc2l0ZSBwYXMgZCd1dGlsaXNlciAnaW5kaXJlY3QnLCAnbm9jYWNoZScsIG5pCiAgJ3Bvc3Rvbmx5JywgY2FyIHRvdXQgY29tbWUgbGUgbW9kZSAncmV3cml0ZScsIGlsIHMnYXBwdWllIHN1ciB1biBjb29raWUKICBwculzZW506SBwYXIgbCdhcHBsaWNhdGlvbiBxdWkgZXN0IGNlbnPpZSBzYXZvaXIg4CBxdWVsIG1vbWVudCBpbCBwZXV0CiAg6nRyZSDpbWlzIHNhbnMgcmlzcXVlLiBUb3V0ZWZvaXMsIGNvbW1lIGlsIG7pY2Vzc2l0ZSBkZSByZWN0aWZpZXIgbGUgY29va2llCiAgcHLpc2VudOkgcGFyIGxlIGNsaWVudCBkYW5zIGNoYXF1ZSByZXF16nRlIHVsdOlyaWV1cmUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlCiAgZGUgcydhc3N1cmVyIHF1ZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ciBjb21tdW5pcXVlcm9udCBzYW5zICJrZWVwLWFsaXZlCiAgSFRUUCIuIERhbnMgbGUgZG91dGUsIGlsIGVzdCByZWNvbW1hbmTpIGQndXRpbGlzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIuCgotIGxvcnNxdWUgbCdhcHBsaWNhdGlvbiBlc3QgYmllbiBjb25udWUsIGV0IHF1ZSBsZXMgcGFydGllcyBu6WNlc3NpdGFudCBkZSBsYQogIHBlcnNpc3RlbmNlIHNvbnQgc3lzdOltYXRpcXVlbWVudCBhY2PpZOllcyBwYXIgdW4gZm9ybXVsYWlyZSBlbiBtb2RlIFBPU1QsCiAgaWwgZXN0IHBsdXMgZWZmaWNhY2UgZW5jb3JlIGRlIGNvbWJpbmVyIGxlIG1vdCBjbOkgInBvc3Rvbmx5IiBhdmVjICJpbnNlcnQiCiAgZXQgImluZGlyZWN0IiwgY2FyIGxhIHBhZ2UgZCdhY2N1ZWlsIHJlc3RlIGNhY2hhYmxlLCBldCBjJ2VzdCBsJ2FwcGxpY2F0aW9uCiAgcXVpIGfocmUgbGUgJ2NhY2hlLWNvbnRyb2wnLgoKMi4xMCkgQXNzaWduYXRpb24gZCd1biBzZXJ2ZXVyIOAgdW5lIHZhbGV1ciBkZSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkJ2Fzc29jaWVyIGRlcyB2YWxldXJzIGRlIGNvb2tpZSDgIGRlcyBzZXJ2ZXVycwpwYXIgbGUgcGFyYW3odHJlICdzZXJ2ZXInLiBMYSBzeW50YXhlIGVzdCA6CgogICAgc2VydmVyIDxpZGVudGlmaWFudD4gPGFkcmVzc2VfaXA+Ojxwb3J0PiBjb29raWUgPHZhbGV1cj4KCi0gPGlkZW50aWZpYW50PiBlc3QgdW4gbm9tIHF1ZWxjb25xdWUgZGUgc2VydmV1ciB1dGlsaXPpIHBvdXIgbCdpZGVudGlmaWVyIGRhbnMgbGEKICBjb25maWd1cmF0aW9uIGV0IGxlcyBsb2dzLgotIDxhZHJlc3NlX2lwPjo8cG9ydD4gZXN0IGxlIGNvdXBsZSBhZHJlc3NlLXBvcnQgc3VyIGxlcXVlbCBsZSBzZXJ2ZXVyIOljb3V0ZS4KLSA8dmFsZXVyPiBlc3QgbGEgdmFsZXVyIOAgcmVjb25uYe50cmUgb3UgcG9zaXRpb25uZXIgZGFucyBsZSBjb29raWUuCgpFeGVtcGxlIDogbGUgY29va2llIFNFUlZFUklEIHBldXQgY29udGVuaXIgc2VydmVyMDEgb3Ugc2VydmVyMDIKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECglkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gRW4gdmVyc2lvbiAxLjEuOSwKc2V1bCAncm91bmRyb2JpbicgZXN0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyIGTpZmF1dC4gSWwKZXN0IOl2aWRlbnQgcXUnZW4gY2FzIGQndXRpbGlzYXRpb24gZHUgculwYXJ0aXRldXIgaW50ZXJuZSwgaWwgbmUgZmF1ZHJhIHBhcwpzcOljaWZpZXIgZCdhZHJlc3NlIGRlIGRpc3BhdGNoLCBldCBxdSdpbCBmYXVkcmEgYXUgbW9pbnMgdW4gc2VydmV1ci4KCkV4ZW1wbGUgOiBt6m1lIHF1ZSBwculj6WRlbW1lbnQgZW4gculwYXJ0aXRpb24gaW50ZXJuZQotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2Ugc2ltdWx0YW7pIGRlcyBwb3J0cyA4MCBldCA4MSBldCA4MDgwLTgwODkKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAsOjgxLDo4MDgwLTgwODkKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIFRDUCBkZXMgcG9ydHMgMjUsIDM4OSBldCA2NjMgdmVycyBsZXMgcG9ydHMgMTAyNSwgMTM4OSBldCAxNjYzCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDozODksOjY2MwoJbW9kZSB0Y3AKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzEwMDAKCXNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOisxMDAwCgoKMy4xKSBTdXJ2ZWlsbGFuY2UgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgdGVzdGVyIGwn6XRhdCBkZXMgc2VydmV1cnMgcGFyIOl0YWJsaXNzZW1lbnQgZGUgY29ubmV4aW9uIFRDUApvdSBwYXIgZW52b2kgZCd1bmUgcmVxdep0ZSBIVFRQLiBVbiBzZXJ2ZXVyIGhvcnMgZCd1c2FnZSBuZSBzZXJhIHBhcyB1dGlsaXPpCmRhbnMgbGUgcHJvY2Vzc3VzIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBQb3VyIGFjdGl2ZXIgbGEgc3VydmVpbGxhbmNlLApham91dGVyIGxlIG1vdCBjbOkgJ2NoZWNrJyDgIGxhIGZpbiBkZSBsYSBk6WNsYXJhdGlvbiBkdSBzZXJ2ZXVyLiBJbCBlc3QKcG9zc2libGUgZGUgc3DpY2lmaWVyIGwnaW50ZXJ2YWxsZSAoZW4gbWlsbGlzZWNvbmRlcykgc+lwYXJhbnQgZGV1eCB0ZXN0cyBkdQpzZXJ2ZXVyIHBhciBsZSBwYXJhbeh0cmUgImludGVyIiwgbGUgbm9tYnJlIGQn6WNoZWNzIGFjY2VwdOlzIHBhciBsZSBwYXJhbeh0cmUKImZhbGwiLCBldCBsZSBub21icmUgZGUgc3VjY+hzIGF2YW50IHJlcHJpc2UgcGFyIGxlIHBhcmFt6HRyZSAicmlzZSIuIExlcwpwYXJhbeh0cmVzIG5vbiBwculjaXPpcyBwcmVubmVudCBsZXMgdmFsZXVycyBzdWl2YW50ZXMgcGFyIGTpZmF1dCA6CiAtIGludGVyIDogMjAwMAogLSByaXNlICA6IDIKIC0gZmFsbCAgOiAzCiAtIHBvcnQgIDogcG9ydCBkZSBjb25uZXhpb24gZHUgc2VydmV1cgoKTGUgbW9kZSBwYXIgZOlmYXV0IGNvbnNpc3RlIOAg6XRhYmxpciBkZXMgY29ubmV4aW9ucyBUQ1AgdW5pcXVlbWVudC4gRGFucwpjZXJ0YWlucyBjYXMgZGUgcGFubmVzLCBkZXMgc2VydmV1cnMgcGV1dmVudCBjb250aW51ZXIg4CBhY2NlcHRlciBsZXMgY29ubmV4aW9ucwpzYW5zIGxlcyB0cmFpdGVyLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTYsIGhhcHJveHkgZXN0IGVuIG1lc3VyZSBkJ2Vudm95ZXIgZGVzCnJlcXXqdGVzIEhUVFAgY291cnRlcyBldCB0cuhzIHBldSBjb/t0ZXVzZXMuIExlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgMS4xLjE3CnV0aWxpc2VudCAiT1BUSU9OUyAvIEhUVFAvMS4wIi4gRGFucyBsZXMgdmVyc2lvbnMgMS4xLjE4IOAgMS4xLjIwLCBsZXMgcmVxdep0ZXMKb250IOl06SBjaGFuZ+llcyBlbiAiT1BUSU9OUyAqIEhUVFAvMS4wIiBwb3VyIGRlcyByYWlzb25zIGRlIGNvbnRy9GxlIGQnYWNj6HMgYXV4CnJlc3NvdXJjZXMuIENlcGVuZGFudCwgY2V0dGUgcmVxdep0ZSBkb2N1bWVudOllIGRhbnMgbGEgUkZDMjA2OCBuJ2VzdCBwYXMKY29tcHJpc2UgcGFyIHRvdXMgbGVzIHNlcnZldXJzLiBEb25jIOAgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4xLjIxLCBsYSByZXF16nRlCnBhciBk6WZhdXQgZXN0IHJldmVudWUg4CAiT1BUSU9OUyAvIEhUVFAvMS4wIiwgbWFpcyBpbCBlc3QgcG9zc2libGUgZGUKcGFyYW3pdHJlciBsYSBwYXJ0aWUgVVJJLiBMZXMgcmVxdep0ZXMgT1BUSU9OUyBwculzZW50ZW50IGwnYXZhbnRhZ2UgZCfqdHJlCmZhY2lsZW1lbnQgZXh0cmFjdGlibGVzIGRlcyBsb2dzLCBldCBkZSBuZSBwYXMgaW5kdWlyZSBkJ2FjY+hzIGF1eCBmaWNoaWVycyBj9HTpCnNlcnZldXIuIFNldWxlcyBsZXMgculwb25zZXMgMnh4IGV0IDN4eCBzb250IGNvbnNpZOly6WVzIHZhbGlkZXMsIGxlcyBhdXRyZXMgKHkKY29tcHJpcyBub24tculwb25zZXMpIGFib3V0aXNzZW50IOAgdW4g6WNoZWMuIExlIHRlbXBzIG1heGltYWwgaW1wYXJ0aSBwb3VyIHVuZQpy6XBvbnNlIGVzdCDpZ2FsIOAgbCdpbnRlcnZhbGxlIGVudHJlIGRldXggdGVzdHMgKHBhcmFt6HRyZSAiaW50ZXIiKS4gUG91cgphY3RpdmVyIGNlIG1vZGUsIHNw6WNpZmllciBsJ29wdGlvbiAiaHR0cGNoayIsIOl2ZW50dWVsbGVtZW50IHN1aXZpZSBkJ3VuZQpt6XRob2RlIGV0IGQndW5lIFVSSS4gTCdvcHRpb24gImh0dHBjaGsiIGFjY2VwdGUgZG9uYyA0IGZvcm1lcyA6CiAgLSBvcHRpb24gaHR0cGNoayAgICAgICAgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgVVJJICAgICAgICAgICAtPiBPUFRJT05TIDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSAgICAgIC0+IDxNRVRIPiA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KVm9pciBsZXMgZXhlbXBsZXMgY2ktYXBy6HMuCQoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3Vycy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycwpwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMgZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsCmlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlciBkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZQpyZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3TpcyBk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlCmRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlIHF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsCmNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50IGwn6XRhdApjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR0hVUCBhdQpwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdCBlbnZveekgZGFucwpsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaSBlbGxlIGVzdAphY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MgbG9jYWwgZW4Kbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkRlcHVpcyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBwbHVzaWV1cnMgc2VydmV1cnMgcGV1dmVudCBwYXJ0YWdlciBsYQpt6m1lIHZhbGV1ciBkZSBjb29raWUuIEMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gbW9kZSBiYWNrdXAsIHBvdXIKc+lsZWN0aW9ubmVyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzIHBvdXIgdW4gc2VydmV1ciBkb25u6SwgcG91ciBtZXR0cmUgZW4Kb2V1dnJlIGwnYXJy6nQgZW4gZG91Y2V1ciBkJ3VuIHNlcnZldXIsIG91IHBvdXIgZGlyaWdlciBsZXMgY2xpZW50cwp0ZW1wb3JhaXJlbWVudCB2ZXJzIHVuZSBwYWdlIGQnZXJyZXVyIGVuIGF0dGVuZGFudCBsZSByZWTpbWFycmFnZSBkJ3VuZQphcHBsaWNhdGlvbi4gTGUgcHJpbmNpcGUgZXN0IHF1ZSBsb3JzcXUndW4gc2VydmV1ciBlc3QgZOl0ZWN06SBjb21tZSBpbm9w6XJhbnQsCmxlIHByb3h5IGNoZXJjaGVyYSBsZSBwcm9jaGFpbiBzZXJ2ZXVyIHBvc3PpZGFudCBsYSBt6m1lIHZhbGV1ciBkZSBjb29raWUgcG91cgpjaGFxdWUgY2xpZW50IHF1aSBsZSBkZW1hbmRlcmEuIFMnaWwgbmUgdHJvdXZlIHBhcyBkZSBzZXJ2ZXVyIG5vcm1hbCwgYWxvcnMgaWwKbGUgY2hlcmNoZXJhIHBhcm1pIGxlcyBzZXJ2ZXVycyBkZSBiYWNrdXAuIENvbnN1bHRlciBsZSBndWlkZSBkJ2FyY2hpdGVjdHVyZQpwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KIyBjb25mIGR1IHBhcmFncmFwaGUgMykgYXZlYyBzdXJ2ZWlsbGFuY2UgVENQCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRAoJYmFsYW5jZSByb3VuZHJvYmluCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgLyBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCW9wdGlvbiBodHRwY2hrCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgL2luZGV4Lmh0bWwgSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRAoJYmFsYW5jZSByb3VuZHJvYmluCglvcHRpb24gaHR0cGNoayAvaW5kZXguaHRtbAoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgaWRlbSBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0OiB3d3cnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRAoJYmFsYW5jZSByb3VuZHJvYmluCglvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIHLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UgYmFz6WUgc3VyIGxlIHBy6WZpeGUgZGUgY29va2llLCBldCBhcnLqdCBlbgojIGRvdWNldXIgdXRpbGlzYW50IHVuIHNlY29uZCBwb3J0ICg4MSkganVzdGUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgc2VydmVyIHdlYjEtbm9ybSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjItbm9ybSAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjEtc3RvcCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MCBiYWNrdXAKICAgICAgIHNlcnZlciB3ZWIyLXN0b3AgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODAgYmFja3VwCgojIEluc2VydGlvbiBhdXRvbWF0aXF1ZSBkZSBjb29raWUgZGFucyBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGV0IHN1cHByZXNzaW9uCiMgYXV0b21hdGlxdWUgZGFucyBsYSByZXF16nRlLCB0b3V0IGVuIGluZGlxdWFudCBhdXggY2FjaGVzIGRlIG5lIHBhcyBnYXJkZXIKIyBjZSBjb29raWUuCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCiMgaWRlbSBhdmVjIHNlcnZldXIgYXBwbGljYXRpZiBkZSBzZWNvdXJzIHN1ciBhdXRyZSBzaXRlLCBldCBzZXJ2ZXVyIGRlIHBhZ2VzIGQnZXJyZXVycwogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCglzZXJ2ZXIgd2ViLWJhY2t1cCAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDMgY2hlY2sgYmFja3VwCglzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCiMgcmVsYXlhZ2UgU01UUCtUTFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjU4NwoJbW9kZSB0Y3AKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCglzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCgozLjIpIFJlY29ubmV4aW9uIHZlcnMgdW4gculwYXJ0aXRldXIgZW4gY2FzIGQn6WNoZWMgZGlyZWN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBzaSB1biBzZXJ2ZXVyIGTpZmluaSBwYXIgdW4gY29va2llIG5lIHLpcG9uZCBwbHVzLCBsZXMgY2xpZW50cwpzZXJvbnQgZOlmaW5pdGl2ZW1lbnQgYWlndWlsbOlzIGRlc3N1cyDgIGNhdXNlIGRlIGxldXIgY29va2llLCBldCBkZSBjZSBmYWl0LApk6WZpbml0aXZlbWVudCBwcml26XMgZGUgc2VydmljZS4gTGEgc3DpY2lmaWNhdGlvbiBkdSBwYXJhbeh0cmUgJ3JlZGlzcGF0Y2gnCmF1dG9yaXNlIGRhbnMgY2UgY2FzIOAgcmVudm95ZXIgbGVzIGNvbm5leGlvbnMg6WNob3XpZXMgdmVycyBsZSBy6XBhcnRpdGV1cgooZXh0ZXJuZSBvdSBpbnRlcm5lKSBhZmluIGQnYXNzaWduZXIgdW4gbm91dmVhdSBzZXJ2ZXVyIOAgY2VzIGNsaWVudHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRAoJZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCXJlZGlzcGF0Y2ggIyByZW52b3llciB2ZXJzIGRpc3BhdGNoIHNpIHJlZnVzIGRlIGNvbm5leGlvbi4KClBhciBk6WZhdXQgKGV0IGRhbnMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcyksIGxlIHBhcmFt6HRyZSByZWRpc3BhdGNoCm5lIHMnYXBwbGlxdWUgcXUnYXV4IOljaGVjcyBkZSBjb25uZXhpb24gYXUgc2VydmV1ci4gRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LAppbCBzJ2FwcGxpcXVlIGF1c3NpIGF1eCBjb25uZXhpb25zIGRlc3RpbullcyDgIGRlcyBzZXJ2ZXVycyBpZGVudGlmaelzIGNvbW1lCmhvcnMgZCd1c2FnZSBwYXIgbGEgc3VydmVpbGxhbmNlLiBTaSBsJ29uIHNvdWhhaXRlIG1hbGdy6SB0b3V0IHF1J3VuIGNsaWVudApkaXNwb3NhbnQgZCd1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgZOlmZWN0dWV1eCB0ZW50ZSBkZSBzJ3kKY29ubmVjdGVyLCBpbCBmYXV0IHBy6WNpc2VyIGwnb3B0aW9uICJwZXJzaXN0IiA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAoJbW9kZSBodHRwCglvcHRpb24gcGVyc2lzdAoJY29va2llIFNFUlZFUklECglkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoJcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgc2VydmV1ciBIUy4KCgo0KSBGb25jdGlvbm5hbGl06XMgYWRkaXRpb25uZWxsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpEJ2F1dHJlcyBmb25jdGlvbm5hbGl06XMgZCd1c2FnZSBtb2lucyBjb3VyYW50IHNvbnQgZGlzcG9uaWJsZXMuIElsIHMnYWdpdApwcmluY2lwYWxlbWVudCBkdSBtb2RlIHRyYW5zcGFyZW50LCBkZSBsYSBqb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucywgZXQgZGUKbGEgcunpY3JpdHVyZSBkZXMgZW506nRlcy4KCjQuMSkgRm9uY3Rpb25uYWxpdOlzIHLpc2VhdQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4xLjEpIEZvbmN0aW9ubmVtZW50IGVuIG1vZGUgdHJhbnNwYXJlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgbGUgbW90IGNs6SAndHJhbnNwYXJlbnQnIHBlcm1ldCBkJ2ludGVyY2VwdGVyIGRlcyBzZXNzaW9ucyByb3V06WVzCuAgdHJhdmVycyBsYSBtYWNoaW5lIGjpYmVyZ2VhbnQgbGUgcHJveHkuIERhbnMgY2UgbW9kZSwgb24gbmUgcHLpY2lzZSBwYXMKbCdhZHJlc3NlIGRlIHLpcGFydGl0aW9uICdkaXNwYXRjaCcsIGNhciBjZWxsZS1jaSBlc3QgdGly6WUgZGUgbCdhZHJlc3NlCmRlc3RpbmF0aW9uIGRlIGxhIHNlc3Npb24gZOl0b3VybullLiBMZSBzeXN06G1lIGRvaXQgcGVybWV0dHJlIGRlIHJlZGlyaWdlciBsZXMKcGFxdWV0cyB2ZXJzIHVuIHByb2Nlc3N1cyBsb2NhbC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKCW1vZGUgaHR0cAoJdHJhbnNwYXJlbnQKCWNvb2tpZSBTRVJWRVJJRAoJc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCglzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpTaSBsZSBwb3J0IG4nZXN0IHBhcyBzcOljaWZp6SBzdXIgbGUgc2VydmV1ciwgYydlc3QgbGUgcG9ydCBhdXF1ZWwgcydlc3QgYWRyZXNz6QpsZSBjbGllbnQgcXVpIHNlcmEgdXRpbGlz6S4gQ2VsYSBwZXJtZXQgZGUgcmVsYXllciB0b3VzIGxlcyBwb3J0cyBUQ1AgZCd1bmUgbeptZQphZHJlc3NlIGF2ZWMgdW5lIG3qbWUgaW5zdGFuY2UgZXQgc2FucyB1dGlsaXNlciBkaXJlY3RlbWVudCBsZSBtb2RlIHRyYW5zcGFyZW50LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAoJbW9kZSB0Y3AKCXNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCglzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjIgY2hlY2sgcG9ydCA2MDAwMAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKCgo0LjEuMikgQ2hvaXggZCd1bmUgYWRyZXNzZSBzb3VyY2UgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgaWwgZGV2aWVudCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW5lIGFkcmVzc2UKSVAgc291cmNlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1ci4gQydlc3QgdXRpbGUgcG91ciBqb2luZHJlIGRlcyBzZXJ2ZXVycyBkZQpiYWNrdXAg4CBwYXJ0aXIgZCd1biBMQU4gZGlmZulyZW50LCBvdSBwb3VyIHV0aWxpc2VyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzCnBvdXIgam9pbmRyZSBsZSBt6m1lIHNlcnZldXIuIEMnZXN0IOlnYWxlbWVudCB1dGlsaXNhYmxlIHBvdXIgZmFjaWxpdGVyIHVuZQpy6XBhcnRpdGlvbiBkZSBjaGFyZ2Ugc2Vsb24gbCdhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGRlcyBjb25uZXhpb25zIHNvcnRhbnRlcy4KQmllbiBlbnRlbmR1LCBsYSBt6m1lIGFkcmVzc2UgZXN0IHV0aWxpc+llIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgbGVzIDIgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xMwoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjEuMQogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMi4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmYWlyZSB1bmUgculwYXJ0aXRpb24gZCdhZHJlc3NlIHNvdXJjZXMgcG91ciBqb2luZHJlIGxlIG3qbWUgcHJveHkg4AogICAgIyB0cmF2ZXJzIGRldXggbGllbnMgV0FOIAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MSAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjIuMQogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkyIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMy4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZvcmNlciB1bmUgY29ubmV4aW9uIFRDUCDgIHMnYXR0YWNoZXIg4CB1biBwb3J0IHBhcnRpY3VsaWVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjIwMDAKICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+IDxjYXTpZ29yaWVfMj4gW25pdmVhdV9tYXhfMl0Kb3UKICAgIGxvZyBnbG9iYWwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMYSBzeW50YXhlIHNw6WNpZmlxdWUgJ2xvZyBnbG9iYWwnIGluZGlxdWUgcXVlIGwnb24gc291aGFpdGUgdXRpbGlzZXIgbGVzCnBhcmFt6HRyZXMgZGUgam91cm5hbGlzYXRpb24gZOlmaW5pcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoJbG9nIDE5Mi4xNjguMi4yMDEgbG9jYWw0Cgo0LjIuMikgRm9ybWF0IGRlcyBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyIGTpZmF1dCwgbGVzIGNvbm5leGlvbnMgc29udCBqb3VybmFsaXPpZXMgYXUgbml2ZWF1IFRDUCBk6HMgbCfpdGFibGlzc2VtZW50CmRlIGxhIHNlc3Npb24gZW50cmUgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4gRW4gcHLpY2lzYW50IGwnb3B0aW9uICd0Y3Bsb2cnLApsYSBjb25uZXhpb24gbmUgc2VyYSBqb3VybmFsaXPpZSBxdSdlbiBmaW4gZGUgc2Vzc2lvbiwgYWpvdXRhbnQgZGVzIHBy6WNpc2lvbnMKc3VyIHNvbiDpdGF0IGxvcnMgZGUgbGEgZOljb25uZXhpb24sIGFpbnNpIHF1ZSBsZSB0ZW1wcyBkZSBjb25uZXhpb24gZXQgbGEKZHVy6WUgdG90YWxlIGRlIGxhIHNlc3Npb24uCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKCW1vZGUgdGNwCglvcHRpb24gdGNwbG9nCglsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIC0tCgpVbmUgYXV0cmUgb3B0aW9uLCAnaHR0cGxvZycsIGZvdXJuaXQgcGx1cyBkZSBk6XRhaWxzIHN1ciBsZSBwcm90b2NvbGUgSFRUUCwKbm90YW1tZW50IGxhIHJlcXXqdGUgZXQgbCfpdGF0IGRlcyBjb29raWVzLiBEYW5zIGxlcyBjYXMgb/kgdW4gbeljYW5pc21lIGRlCnN1cnZlaWxsYW5jZSBlZmZlY3R1YW50IGRlcyBjb25uZXhpb25zIGV0IGTpY29ubmV4aW9ucyBmculxdWVudGVzLCBwb2xsdWVyYWl0CmxlcyBsb2dzLCBpbCBzdWZmaXQgZCdham91dGVyIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIHBvdXIgbmUgcGx1cyBvYnRlbmlyIHVuZQpsaWduZSBkZSBsb2cgcG91ciBsZXMgc2Vzc2lvbnMgbidheWFudCBwYXMgZG9ubukgbGlldSDgIHVuIOljaGFuZ2UgZGUgZG9ubullcwoocmVxdep0ZSBvdSBy6XBvbnNlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJb3B0aW9uIGh0dHBsb2cKCW9wdGlvbiBkb250bG9nbnVsbAoJbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNDcvNzIzIDIwMCAyNDMgLSAtIC0tLS0gIkhFQUQgLyBIVFRQLzEuMCIKCkxlIHByb2Js6G1lIGRlIGxvZ3VlciB1bmlxdWVtZW50IGVuIGZpbiBkZSBzZXNzaW9uLCBjJ2VzdCBxdSdpbCBlc3QgaW1wb3NzaWJsZQpkZSBzYXZvaXIgY2UgcXVpIHNlIHBhc3NlIGR1cmFudCBkZSBncm9zIHRyYW5zZmVydHMgb3UgZGVzIHNlc3Npb25zIGxvbmd1ZXMuClBvdXIgcGFsbGllciDgIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgb3B0aW9uICdsb2dhc2FwJyBhIOl06SBpbnRyb2R1aXRlIGRhbnMKbGEgdmVyc2lvbiAxLjEuMjggKDEuMi4xKS4gTG9yc3F1J2VsbGUgZXN0IGFjdGl26WUsIGxlIHByb3h5IGxvZ3VlcmEgbGUgcGx1cyB09HQKcG9zc2libGUsIGMnZXN0IOAgZGlyZSBqdXN0ZSBhdmFudCBxdWUgbmUgZOlidXRlbnQgbGVzIHRyYW5zZmVydHMgZGUgZG9ubullcy4KQ2VsYSBzaWduaWZpZSwgZGFucyBsZSBjYXMgZHUgVENQLCBxdSdpbCBsb2d1ZXJhIHRvdWpvdXJzIGxlIHLpc3VsdGF0IGRlIGxhCmNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGRhbnMgbGUgY2FzIEhUVFAsIHF1J2lsIGxvZ3VlcmEgZW4gZmluIGRlCnRyYWl0ZW1lbnQgZGVzIGVudOp0ZXMgZGUgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBhdXF1ZWwgY2FzIGxlIG5vbWJyZSBkJ29jdGV0cwpyZXBy6XNlbnRlcmEgbGEgdGFpbGxlIGRlcyBlbnTqdGVzIHJldG91cm7pcyBhdSBjbGllbnQuCgpBZmluIGQn6XZpdGVyIHRvdXRlIGNvbmZ1c2lvbiBhdmVjIGxlcyBsb2dzIG5vcm1hdXgsIGxlIHRlbXBzIHRvdGFsIGRlIHRyYW5zZmVydApldCBsZSBub21icmUgZCdvY3RldHMgdHJhbnNm6XLpcyBzb250IHBy6WZpeOlzIGQndW4gc2lnbmUgJysnIHJhcHBlbGVhbnQgcXVlIGxlcwp2YWxldXJzIHLpZWxsZXMgc29udCBjZXJ0YWluZW1lbnQgcGx1cyDpbGV26WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJb3B0aW9uIGh0dHBsb2cKCW9wdGlvbiBkb250bG9nbnVsbAoJb3B0aW9uIGxvZ2FzYXAKCWxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKCgo0LjIuMykgQ2hyb25vbel0cmFnZSBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQb3VyIGTpY2VsZXIgZGVzIHByb2Js6G1lcyBy6XNlYXUsIGxlcyBtZXN1cmVzIGR1IHRlbXBzIOljb3Vs6SBlbnRyZSBjZXJ0YWlucwrpduluZW1lbnRzIHNvbnQgZCd1bmUgdHLocyBncmFuZGUgdXRpbGl06S4gVG91cyBsZXMgdGVtcHMgc29udCBtZXN1culzIGVuCm1pbGxpc2Vjb25kZXMgKG1zKS4gRW4gbW9kZSBIVFRQLCBxdWF0cmUgcG9pbnRzIGRlIG1lc3VyZSBzb250IHJhcHBvcnTpcyBzb3VzCmxhIGZvcm1lIFRxL1RjL1RyL1R0IDoKCiAgLSBUcTogdGVtcHMgdG90YWwgZGUgculjZXB0aW9uIGRlIGxhIHJlcXXqdGUgSFRUUCBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KICAgIEMnZXN0IGxlIHRlbXBzIHF1aSBzJ2VzdCDpY291bOkgZW50cmUgbGUgbW9tZW50IG/5IGxlIGNsaWVudCBhIOl0YWJsaQogICAgc2EgY29ubmV4aW9uIHZlcnMgbGUgcmVsYWlzLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBhIHJl53UgbGUgZGVybmllcgogICAgZW4tdOp0ZSBIVFRQIHZhbGlkYW50IGxhIGZpbiBkZSBsYSByZXF16nRlLiBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUKICAgIHF1ZSBsYSByZXF16nRlIGNvbXBs6HRlIG4nYSBqYW1haXMg6XTpIHJl53VlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW506nRlcyBIVFRQIOAgcGFydGlyIGR1IG1vbWVudCBv+SBpbCBhIGFjcXVpdHTpCiAgICBsYSBjb25uZXhpb24uIENhIHJlcHLpc2VudGUgZXhhY3RlbWVudCBsZSB0ZW1wcyBkZSB0cmFpdGVtZW50IGRlIGxhCiAgICB0cmFuc2FjdGlvbiBzYW5zIGxlIHRyYW5zZmVydCBkZXMgZG9ubullcyBhc3NvY2npZXMuIFVuZSB2YWxldXIgJy0xJwogICAgaW5kaXF1ZSBxdWUgbGUgc2VydmV1ciBuJ2EgcGFzIGVudm956SBsYSB0b3RhbGl06SBkZSBsJ2VudOp0ZSBIVFRQLgoKICAtIFR0OiBkdXLpZSBkZSB2aWUgdG90YWxlIGRlIGxhIHNlc3Npb24sIGVudHJlIGxlIG1vbWVudCBv+SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gZHUgY2xpZW50IGEg6XTpIGFjcXVpdHTpZSBldCBsZSBtb21lbnQgb/kgbGEgY29ubmV4aW9uIGEg6XTpCiAgICByZWZlcm3pZSBhdXggZGV1eCBleHRy6W1pdOlzIChjbGllbnQgZXQgc2VydmV1cikuIExhIHNpZ25pZmljYXRpb24gY2hhbmdlCiAgICB1biBwZXUgc2kgbCdvcHRpb24gJ2xvZ2FzYXAnIGVzdCBwculzZW50ZS4gRGFucyBjZSBjYXMsIGxlIHRlbXBzIGNvcnJlc3BvbmQKICAgIHVuaXF1ZW1lbnQg4CAoVHEgKyBUYyArIFRyKSwgZXQgc2UgdHJvdXZlIHBy6WZpeOkgZCd1biBzaWduZSAnKycuIE9uIHBldXQKICAgIGRvbmMgZOlkdWlyZSBUZCwgbGUgdGVtcHMgZGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLCBlbiBleGNsdWFudCBsZXMgYXV0cmVzCiAgICB0ZW1wcyA6CgogICAgICAgIFRkID0gVHQgLSAoVHEgKyBUYyArIFRyKQoKICAgIExlcyB0ZW1wcyByYXBwb3J06XMg4CAnLTEnIHNvbnQgc2ltcGxlbWVudCDgIOlsaW1pbmVyIGRlIGNldHRlIOlxdWF0aW9uLgoKRW4gbW9kZSBUQ1AgKCdvcHRpb24gdGNwbG9nJyksIHNldWxzIGxlcyBkZXV4IGluZGljYXRldXJzIFRjIGV0IFR0IHNvbnQKcmFwcG9ydOlzLgoKQ2VzIHRlbXBzIGZvdXJuaXNzZW50IGRlIHBy6WNpZXV4IHJlbnNlaWduZW1lbnQgc3VyIGRlcyBjYXVzZXMgcHJvYmFibGVzIGRlCnByb2Js6G1lcy4gRHUgZmFpdCBxdWUgbGUgcHJvdG9jb2xlIFRDUCBk6WZpbmlzc2UgZGVzIHRlbXBzIGRlIHJldHJhbnNtaXNzaW9uCmRlIDMgc2Vjb25kZXMsIHB1aXMgNiwgMTIsIGV0Yy4uLiwgbCdvYnNlcnZhdGlvbiBkZSB0ZW1wcyBwcm9jaGVzIGRlIG11bHRpcGxlcwpkZSAzIHNlY29uZGVzIGluZGlxdWUgcHJhdGlxdWVtZW50IHRvdWpvdXJzIGRlcyBwZXJ0ZXMgZGUgcGFxdWV0cyBsaelzIOAgdW4KcHJvYmzobWUgculzZWF1IChj4mJsZSBvdSBu6WdvY2lhdGlvbikuIERlIHBsdXMsIHNpIDxUdD4gZXN0IHByb2NoZSBkJ3VuZQp2YWxldXIgZGUgdGltZS1vdXQgZGFucyBsYSBjb25maWd1cmF0aW9uLCBjJ2VzdCBzb3V2ZW50IHF1J3VuZSBzZXNzaW9uIGEg6XTpCmFiYW5kb25u6WUgc3VyIGV4cGlyYXRpb24gZCd1biB0aW1lLW91dC4KCkNhcyBsZXMgcGx1cyBmculxdWVudHMgOgoKICAtIFNpIFRxIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLgogIC0gU2kgVGMgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyIGR1cmFudCBsYSBwaGFzZSBkZSBjb25uZXhpb24uIENldCBpbmRpY2F0ZXVyCiAgICBkZXZyYWl0IG5vcm1hbGVtZW50IHRvdWpvdXJzIOp0cmUgdHLocyBiYXMgKG1vaW5zIGRlIHF1ZWxxdWVzIGRpemFpbmVzKS4KICAtIFNpIFRyIGVzdCBwcmVzcXVlIHRvdWpvdXJzIGluZulyaWV1ciDgIDMwMDAsIGV0IHF1ZSBjZXJ0YWluZXMgdmFsZXVycwogICAgc2VtYmxlbnQgcHJvY2hlcyBkZSBsYSB2YWxldXIgbW95ZW5uZSBtYWpvcullIGRlIDMwMDAsIGlsIHkgYSBwZXV0Lep0cmUKICAgIGRlIHBlcnRlcyBlbnRyZSBsZSByZWxhaXMgZXQgbGUgc2VydmV1ci4KICAtIFNpIFR0IGVzdCBs6WfocmVtZW50IHN1cOlyaWV1ciBhdSB0aW1lLW91dCwgYydlc3Qgc291dmVudCBwYXJjZSBxdWUgbGUKICAgIGNsaWVudCBldCBsZSBzZXJ2ZXVyIHV0aWxpc2VudCBkdSBrZWVwLWFsaXZlIEhUVFAgZW50cmUgZXV4IGV0IHF1ZSBsYQogICAgc2Vzc2lvbiBlc3QgbWFpbnRlbnVlIGFwcuhzIGxhIGZpbiBkZXMg6WNoYW5nZXMuIFZvaXIgcGx1cyBsb2luIHBvdXIKICAgIHNhdm9pciBjb21tZW50IGTpc2FjdGl2ZXIgbGUga2VlcC1hbGl2ZSBIVFRQLgoKQXV0cmVzIGNhcyAoJ3h4JyByZXBy6XNlbnRhbnQgdW5lIHZhbGV1ciBxdWVsY29ucXVlIOAgaWdub3JlcikgOgogICAgLTEveHgveHgvVHQgOiBsZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBkYW5zIGxlIHRlbXBzIGltcGFydGkgb3UKCQkgIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gc2FucyBjb21wbOl0ZXIgbGEgcmVxdep0ZS4KICAgIFRxLy0xL3h4L1R0IDogbGEgY29ubmV4aW9uIG4nYSBwYXMgcHUgcyfpdGFibGlyIHZlcnMgbGUgc2VydmV1ciAocmVmdXMgb3UKICAgICAgICAgICAgICAgICAgdGltZS1vdXQgYXUgYm91dCBkZSBUdC1UcSBtcykuCiAgICBUcS9UYy8tMS9UdCA6IGxlIHNlcnZldXIgYSBhY2NlcHTpIGxhIGNvbm5leGlvbiBtYWlzIG4nYSBwYXMgculwb25kdSBkYW5zCgkJICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CgkJICBkZSBUdC0oVHErVGMpIG1zLgogICAgIAo0LjIuNCkgQ29uZGl0aW9ucyBkZSBk6WNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgbG9ncyBUQ1AgZXQgSFRUUCBmb3Vybmlzc2VudCB1biBpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgZGUgbGEgc2Vzc2lvbi4KQydlc3QgdW4gY2hhbXAgZGUgNCBjYXJhY3TocmVzICgyIGVuIFRDUCkgcHLpY+lkYW50IGxhIHJlcXXqdGUgSFRUUCwgaW5kaXF1YW50IDoKICAtIHN1ciBsZSBwcmVtaWVyIGNhcmFjdOhyZSwgdW4gY29kZSBwculjaXNhbnQgbGUgcHJlbWllciDpduluZW1lbnQgcXVpIGEgY2F1c+kKICAgIGxhIHRlcm1pbmFpc29uIGRlIGxhIHNlc3Npb24gOgoKICAgICAgICBDIDogZmVybWV0dXJlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50CglTIDogZmVybWV0dXJlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgcmVmdXMgZGUgY29ubmV4aW9uCglQIDogdGVybWluYWlzb24gcHLpbWF0dXLpZSBkZXMgc2Vzc2lvbnMgcGFyIGxlIHByb3h5LCBwb3VyIGNhcyBkJ2VycmV1cgoJICAgIGludGVybmUsIGRlIGNvbmZpZ3VyYXRpb24gKGV4OiBmaWx0cmUgZCdVUkwpLCBvdSBwYXJjZSBxdSd1bgoJICAgIGNvbnRy9GxlIGRlIHPpY3VyaXTpIGEgZOl0ZWN06SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CgkgICAgc2VydmV1ci4KCWMgOiBleHBpcmF0aW9uIGR1IGTpbGFpIGQnYXR0ZW50ZSBj9HTpIGNsaWVudCA6IGNsaXRpbWVvdXQKCXMgOiBleHBpcmF0aW9uIGR1IGTpbGFpIGQnYXR0ZW50ZSBj9HTpIHNlcnZldXI6IHNydnRpbWVvdXQgZXQgY29udGltZW91dAoJLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUuCgogIC0gc3VyIGxlIHNlY29uZCBjYXJhY3TocmUsIGwn6XRhdCBkJ2F2YW5jZW1lbnQgZGUgbGEgc2Vzc2lvbiBIVFRQIGxvcnMgZGUgbGEKICAgIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiB0ZXJtaW5haXNvbiBlbiBhdHRlbmRhbnQgbGEgculjZXB0aW9uIHRvdGFsZSBkZSBsYSByZXF16nRlIGR1IGNsaWVudAoJQyA6IHRlcm1pbmFpc29uIGVuIGF0dGVuZGFudCBsYSBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyCglIIDogdGVybWluYWlzb24gZW4gdHJhaXRhbnQgbGVzIGVudOp0ZXMgZHUgc2VydmV1cgoJRCA6IHRlcm1pbmFpc29uIGR1cmFudCBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgZHUgc2VydmV1ciB2ZXJzIGxlIGNsaWVudAoJTCA6IHRlcm1pbmFpc29uIGR1cmFudCBsZSB0cmFuc2ZlcnQgZGVzIGRlcm5p6HJlcyBkb25u6WVzIGR1IHByb3h5IHZlcnMKCSAgICBsZSBjbGllbnQsIGFsb3JzIHF1ZSBsZSBzZXJ2ZXVyIGEgZOlq4CBmaW5pLgoJLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUsIGFwcuhzIGZpbiBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMKCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLgoJSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4gc2VydmV1cgoJICAgIGNvbm51LgoJRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCgkgICAgZCd1c2FnZS4gU3VpdmFudCBsJ29wdGlvbiAncGVyc2lzdCcsIGlsIGEg6XTpIHJlbnZveekgdmVycyB1bgoJICAgIGF1dHJlIHNlcnZldXIgb3UgYSB0b3V0IGRlIG3qbWUgdGVudOkgZGUgc2UgY29ubmVjdGVyIHN1ciBjZWx1aQoJICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoJViA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSB2YWxpZGUgZXQgYSBwdSBzZSBjb25uZWN0ZXIgYXUKCSAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgktIDogbm9uIGFwcGxpcXVhYmxlCgogIC0gbGUgZGVybmllciBjYXJhY3TocmUgaW5kaXF1ZSBsJ+l2ZW50dWVsIHRyYWl0ZW1lbnQgZWZmZWN0dekgc3VyIHVuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgcmV0cm91cm7pIHBhciBsZSBzZXJ2ZXVyICh1bmlxdWVtZW50IGVuIG1vZGUgSFRUUCkgOgoKICAgICAgICBOIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLgogICAgICAgIFAgOiB1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyIGV0IHRyYW5zbWlzCgkgICAgdGVsIHF1ZWwuCglJIDogYXVjdW4gY29va2llIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBpbCBhIOl06SBpbnPpcukgcGFyIGxlCgkgICAgcHJveHkuCglEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIHN1cHByaW3pIHBhciBsZSBwcm94eSBwb3VyCgkgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoJUiA6IGxlIGNvb2tpZSByZXRvdXJu6SBwYXIgbGUgc2VydmV1ciBhIOl06SBtb2RpZmnpIHBhciBsZSBwcm94eS4KCS0gOiBub24gYXBwbGlxdWFibGUKCkxlIG1vdCBjbOkgImNhcHR1cmUiIHBlcm1ldCBkJ2Fqb3V0ZXIgZGFucyBkZXMgbG9ncyBIVFRQIGRlcyBpbmZvcm1hdGlvbnMKY2FwdHVy6WVzIGRhbnMgbGVzIOljaGFuZ2VzLiBMYSB2ZXJzaW9uIDEuMS4xNyBzdXBwb3J0ZSB1bmlxdWVtZW50IHVuZSBjYXB0dXJlCmRlIGNvb2tpZXMgY2xpZW50IGV0IHNlcnZldXIsIGNlIHF1aSBwZXJtZXQgZGFucyBiaWVuIGRlcyBjYXMsIGRlIHJlY29uc3RpdHVlcgpsYSBzZXNzaW9uIGQndW4gdXRpbGlzYXRldXIuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIGNvb2tpZSA8cHLpZml4ZV9jb29raWU+IGxlbiA8bG9uZ3VldXJfY2FwdHVyZT4KCkxlIHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlcmEgcGFyIDxwculmaXhlX2Nvb2tpZT4gc2VyYSBjYXB0dXLpLCBldAp0cmFuc21pcyBzb3VzIGxhIGZvcm1lICJOT009dmFsZXVyIiwgc2FucyB0b3V0ZWZvaXMsIGV4Y+lkZXIgPGxvbmd1ZXVyX2NhcHR1cmU+CmNhcmFjdOhyZXMgKDY0IGF1IG1heGltdW0pLiBMb3JzcXVlIGxlIG5vbSBkdSBjb29raWUgZXN0IGZpeGUgZXQgY29ubnUsIG9uIHBldXQKbGUgc3VmZml4ZXIgZHUgc2lnbmUgIj0iIHBvdXIgcydhc3N1cmVyIHF1J2F1Y3VuIGF1dHJlIGNvb2tpZSBuZSBwcmVuZHJhIHNhCnBsYWNlIGRhbnMgbGVzIGxvZ3MuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZSBwYXIgIkFTUFNFU1NJT04iCiAgICBjYXB0dXJlIGNvb2tpZSBBU1BTRVNTSU9OIGxlbiAzMgoKICAgICMgY2FwdHVyZSBkdSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBlc3QgZXhhY3RlbWVudCAidmdudmlzaXRvciIKICAgIGNhcHR1cmUgY29va2llIHZnbnZpc2l0b3I9IGxlbiAzMgoKRGFucyBsZXMgbG9ncywgbGUgY2hhbXAgcHLpY+lkYW50IGwnaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGNvbnRpZW50IGxlIGNvb2tpZQpwb3NpdGlvbm7pIHBhciBsZSBzZXJ2ZXVyLCBwculj6WTpIGR1IGNvb2tpZSBwb3NpdGlvbm7pIHBhciBsZSBjbGllbnQuIENoYWN1biBkZQpjZXMgY2hhbXBzIGVzdCByZW1wbGFj6SBwYXIgbGUgc2lnbmUgIi0iIGxvcnNxdSdhdWN1biBjb29raWUgbidlc3QgZm91cm5pIHBhciBsZQpjbGllbnQgb3UgbGUgc2VydmV1ci4KCjQuMi41KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvNy8xNDcvNjcyMyAyMDAgMjQzIC0gLSAtLS0tICJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBsb25ndWUgKDYuNXMpIHNhaXNpZSDgIGxhIG1haW4gYXZlYyB1biBjbGllbnQgdGVsbmV0LiBMZSBzZXJ2ZXVyIGEKICAgICBy6XBvbmR1IGVuIDE0NyBtcyBldCBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullIG5vcm1hbGVtZW50ICgnLS0tLScpCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKICA9PiByZXF16nRlIHBvdXIgdW4gbG9uZyB0cmFuc2ZlcnQuIEwnb3B0aW9uICdsb2dhc2FwJyDpdGFpdCBzcOljaWZp6WUgZG9uYyBsZQogICAgIGxvZyBhIOl06SBn6W7pcukganVzdGUgYXZhbnQgbGUgdHJhbnNmZXJ0IGRlIGRvbm7pZXMuIExlIHNlcnZldXIgYSBy6XBvbmR1CiAgICAgZW4gMTQgbXMsIDI0MyBvY3RldHMgZCdlbnTqdGVzIG9udCDpdOkgdHJhbnNm6XLpcyBhdSBjbGllbnQsIGV0IGxlIHRlbXBzCiAgICAgdG90YWwgZW50cmUgbCdhY2NlcHQoKSBldCBsZSBwcmVtaWVyIG9jdGV0IGRlIGRvbm7pZSBlc3QgZGUgMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAiR0VUIC9jZ2ktYmluL2J1Zy5jZ2k/IEhUVFAvMS4wIgogID0+IGxlIHByb3h5IGEgYmxvcXXpIHVuZSBy6XBvbnNlIGR1IHNlcnZldXIgc29pdCDgIGNhdXNlIGQndW4gZmlsdHJlICdyc3BkZW55JwogICAgIG91ICdyc3BpZGVueScsIHNvaXQgcGFyY2UgcXUnaWwgYSBk6XRlY3TpIHVuIHJpc3F1ZSBkZSBmdWl0ZSBzZW5zaWJsZQogICAgIGQnaW5mb3JtYXRpb25zIHJpc3F1YW50IGQn6nRyZSBjYWNo6WVzLiBEYW5zIGNlIGNhcywgbGEgculwb25zZSBlc3QKICAgICByZW1wbGFj6WUgcGFyICc1MDIgYmFkIGdhdGV3YXknLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ4IFsxNS9PY3QvMjAwMzoxNToxODo1NV0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS84NDkwIC0xIDAgLSAtIENSLS0gIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgYSByZWZlcm3pIGxhIGNvbm5leGlvbiBsdWktbeptZQogICAgICgnQy0tLScpIGF1IGJvdXQgZGUgOC41cywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbnTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBzb24gdGltZS1vdXQgYSBleHBpcukgKCdjLS0tJykgYXUKICAgICBib3V0IGRlIDUwcywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbnTqdGUgKCctUi0tJykuIEF1Y3VuZQogICAgIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLCBtYWlzIGxlIHJlbGFpcyBhIHRvdXQgZGUgbeptZQogICAgIHB1IHJlbnZveWVyIHVuIG1lc3NhZ2UgNDA4IGF1IGNsaWVudC4KCi0gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzUwMDcgMCBjRCAKICA9PiBsb2cgZW4gbW9kZSAndGNwbG9nJy4gRXhwaXJhdGlvbiBkdSB0aW1lLW91dCBj9HTpIGNsaWVudCAoJ2MtLS0tJykgYXUgYm91dAogICAgIGRlIDVzLgoKLSBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdSBjbGllbnQuCgo0LjIuNikgQ2FyYWN06HJlcyBub24taW1wcmltYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yOSwgbGVzIGNhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzIG5lIHNvbnQgcGx1cyBlbnZveelzCnRlbHMgcXVlbHMgZGFucyBsZXMgbGlnbmVzIGRlIGxvZ3MsIG1haXMgaW5zY3JpdHMgc291cyBsYSBmb3JtZSBkZSBkZXV4IGNoaWZmcmVzCmhleGFk6WNpbWF1eCwgcHLpZml46XMgZHUgY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnLiBMZXMgc2V1bHMgY2FyYWN06HJlcwpkb3LpbmF2YW50IGxvZ3XpcyB0ZWxzIHF1ZWxzIHNvbnQgY29tcHJpcyBlbnRyZSAzMiBldCAxMjYuIEJpZW4g6XZpZGVtbWVudCwgbGUKY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnIGVzdCBsdWktbeptZSBlbmNvZOkgYWZpbiBkZSBsZXZlciBsJ2FtYmlndWl06S4gSWwgZW4KZXN0IGRlIG3qbWUgcG91ciBsZSBjYXJhY3TocmUgJyInLCBhaW5zaSBxdWUgbGVzIGNhcmFjdOhyZXMgJ3snLCAnfCcgZXQgJ30nIHBvdXIKbGVzIGVuLXTqdGVzLgoKNC4yLjcpIEpvdXJuYWxpc2F0aW9uIGQnZW4tdOp0ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGVwdWlzIGxhIHZlcnNpb24gMS4xLjI5LCBpbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIGNvbnNlcnZlciBkZXMgZXh0cmFpdHMKZCdlbi106nRlcyBIVFRQIGRhbnMgbGVzIGxvZ3MuIE9uIHBldXQgYXVzc2kgYmllbiBleHRyYWlyZSBkZXMgZW4tdOp0ZXMgZGUgbGEKcmVxdep0ZSBxdWUgZGUgbGEgculwb25zZS4gQydlc3QgcGFydGljdWxp6HJlbWVudCBwcmF0aXF1ZSBwb3VyIHNhdm9pciDgIHF1ZWwKc2VydmV1ciB2aXJ0dWVsIHVuZSByZXF16nRlIHMnYWRyZXNzYWl0LCBwb3VyIGNvbm5haXRyZSBsYSBsb25ndWV1ciBkZXMgZG9ubullcwrpbWlzZXMgbG9ycyBkJ3VuIFBPU1QsIG91IGVuY29yZSBsb2d1ZXIgdW4gaWRlbnRpZmlhbnQgdW5pcXVlIGRlIHJlcXXqdGUKcG9zaXRpb25u6SBlbiBhbW9udC4gRGFucyBsYSBy6XBvbnNlLCBvbiBwZXV0IGNoZXJjaGVyIOlnYWxlbWVudCDgIGNvbnNlcnZlciBkZXMKaW5mb3JtYXRpb25zIHJlbGF0aXZlcyDgIGxhIHRhaWxsZSBhbm5vbmPpZSBkZSBsYSBy6XBvbnNlLCBsZSBmb25jdGlvbm5lbWVudAphdHRlbmR1IGR1IGNhY2hlLCBvdSBlbmNvcmUgbGEgbG9jYWxpc2F0aW9uIGQndW4gb2JqZXQgZW4gY2FzIGRlIHJlZGlyZWN0aW9uLgpMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KCk5vdGU6IExlcyBub21zIGQnZW4tdOp0ZXMgbmUgc29udCBwYXMgc2Vuc2libGVzIOAgbGEgY2Fzc2UuCgpFeGVtcGxlczoKLS0tLS0tLS0tCiAgICAjIGNvbnNlcnZlciBsZSBub20gZHUgc2VydmV1ciB2aXJ0dWVsIGFjY+lk6SBwYXIgbGUgY2xpZW50CiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgIyBub3RlciBsYSBsb25ndWV1ciBkZXMgZG9ubullcyBlbnZveellcyBkYW5zIHVuIFBPU1QKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAoKICAgICMgbm90ZXIgbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSBwYXIgbGUgc2VydmV1cgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgIyBub3RlciBsJ1VSTCBkZSByZWRpcmVjdGlvbgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgpMZXMgZW4tdOp0ZXMgbm9uIHRyb3V26XMgc29udCBsb2d16XMg4CB2aWRlLCBldCBzaSB1biBlbi106nRlIGFwcGFyYWl0IHBsdXNpZXVycwpmb2lzLCBzZXVsZSBsYSBkZXJuaehyZSBvY2N1cmVuY2Ugc2VyYSBjb25zZXJ26WUuIExlcyBlbi106nRlcyBkZSByZXF16nRlIHNvbnQKcmVncm91cOlzIGVudHJlIGRldXggYWNjb2xhZGVzICd7JyBldCAnfScgZGFucyBsJ29yZHJlIGRlIGxldXIgZOljbGFyYXRpb24sIGV0CmNoYWN1biBz6XBhculzIHBhciB1bmUgYmFycmUgdmVydGljYWxlICd8Jywgc2FucyBhdWN1biBlc3BhY2UuIExlcyBlbi106nRlcyBkZQpy6XBvbnNlIHNvbnQgcHLpc2VudOlzIGRlIGxhIG3qbWUgbWFuaehyZSwgbWFpcyBhcHLocyB1biBlc3BhY2Ugc3VpdmFudCBsZSBibG9jCmQnZW4tdOp0ZSBkZSByZXF16nRlLiBMZSB0b3V0IHBy6WPoZGUgbGEgcmVxdep0ZSBIVFRQLiBFeGVtcGxlIDoKCkNvbmZpZzoKCiAgICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBSZWZlcmVyIGxlbiAyMAogICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKICAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKTG9nIDoKCkF1ZyAgOSAyMDoyNjowOSBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDE0IFswOS9BdWcvMjAwNDoyMDoyNjowOV0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzE2Mi8rMTYyIDIwMCArMzUwIC0gLSAtLS0tIHtmci5hZHNlcnZlci55YWhvby5jb3x8aHR0cDovL2ZyLmY0MTYubWFpbC59IHt8ODY0fHByaXZhdGV8fH0gIkdFVCBodHRwOi8vZnIuYWRzZXJ2ZXIueWFob28uY29tLyIKQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMTgyLysxODIgMjAwICsyNzkgLSAtIC0tLS0ge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCkF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDI4IFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8yLzEyNi8rMTI4IDIwMCArMjIzIC0gLSAtLS0tIHt3d3cuaW5mb3RyYWZpYy5jb218fGh0dHA6Ly93Lm9kcy5vcmcvc3l0fSB7QXBhY2hlLzIuMC40MCAoUmVkIEh8OTA2OHx8fH0gIkdFVCBodHRwOi8vd3d3LmluZm90cmFmaWMuY29tL2ltYWdlcy9saXZlL2NhcnRlc2lkZi9ncmFuZGVzL2lkZl9uZS5wbmcgSFRUUC8xLjEiIAoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVudOp0ZXMgSFRUUAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCB1bmlxdWVtZW50LCBpbCBlc3QgcG9zc2libGUgZGUgcmVtcGxhY2VyIGNlcnRhaW5zIGVuLXTqdGVzIGRhbnMgbGEKcmVxdep0ZSBldC9vdSBsYSBy6XBvbnNlIOAgcGFydGlyIGQnZXhwcmVzc2lvbnMgculndWxp6HJlcy4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkZSBibG9xdWVyIGNlcnRhaW5lcyByZXF16nRlcyBlbiBmb25jdGlvbiBkdSBjb250ZW51IGRlcyBlbi106nRlcyBvdSBkZQpsYSByZXF16nRlLiBVbmUgbGltaXRhdGlvbiBjZXBlbmRhbnQgOiBsZXMgZW4tdOp0ZXMgZm91cm5pcyBhdSBtaWxpZXUgZGUKY29ubmV4aW9ucyBwZXJzaXN0ZW50ZXMgKGtlZXAtYWxpdmUpIG5lIHNvbnQgcGFzIHZ1cyBjYXIgaWxzIHNvbnQgY29uc2lk6XLpcwpjb21tZSBmYWlzYW50IHBhcnRpZSBkZXMg6WNoYW5nZXMgZGUgZG9ubullcyBjb25z6WN1dGlmcyDgIGxhIHByZW1p6HJlIHJlcXXqdGUuCkxlcyBkb25u6WVzIG5lIHNvbnQgcGFzIGFmZmVjdOllcywgY2VjaSBuZSBzJ2FwcGxpcXVlIHF1J2F1eCBlbi106nRlcy4gCgpMYSBzeW50YXhlIGVzdCA6CiAgIHJlcWFkZCAgICA8c3RyaW5nPiAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxcmVwICAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIHBvdXIgbW9kaWZpZXIgbGEgcmVxdep0ZQogICByZXFpcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZWwgICAgPHNlYXJjaD4gICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxaWRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciBsYSByZXF16nRlIHNpIHVuIGVudOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWFsbG93IDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVueSAgIDxzZWFyY2g+ICAgICAgICAgICAgIGludGVyZGlyZSBsYSByZXF16nRlIHNpIHVuIGVudOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVudOp0ZXMgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXBhc3MgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCiAgIHJzcGFkZCAgIDxzdHJpbmc+ICAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIHBvdXIgbW9kaWZpZXIgbGEgculwb25zZQogICByc3BpcmVwICA8c2VhcmNoPiA8cmVwbGFjZT4gICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByc3BkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwaWRlbCAgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgIHJlbXBsYWNlIGxhIHLpcG9uc2UgcGFyIHVuIEhUVFAgNTAyIHNpIHVuCgkJCQkgIGVudOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAxIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6S4gSWwgZXN0IOlnYWxlbWVudCBwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbgppbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpIGluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlCmhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVudOp0ZXMgaW51dGlsZXMgYXZhbnQgbGVzIGFqb3V0cy4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNDAzIGZvcmJpZGRlbiIgdGFuZGlzIHF1J3VuZQogICAgculwb25zZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDUwMiBCYWQgZ2F0ZXdheSIuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCSMjIyMjIyBhIGZldyBleGFtcGxlcyAjIyMjIyMKCgkjIHJld3JpdGUgJ29ubGluZS5mcicgaW5zdGVhZCBvZiAnZnJlZS5mcicgZm9yIEdFVCBhbmQgUE9TVCByZXF1ZXN0cwoJcmVxcmVwCV4oR0VUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwoJcmVxcmVwCV4oUE9TVFwgLiopKC5mcmVlLmZyKSguKikgXDEub25saW5lLmZyXDMKCgkjIGZvcmNlIHByb3h5IGNvbm5lY3Rpb25zIHRvIGNsb3NlCglyZXFpcmVwCV5Qcm94eS1Db25uZWN0aW9uOi4qCVByb3h5LUNvbm5lY3Rpb246XCBjbG9zZQoJIyByZXdyaXRlIGxvY2F0aW9ucwoJcnNwaXJlcAleKExvY2F0aW9uOlwgKShbXjpdKjovL1teL10qKSguKikgXDFcMwoKCSMjIyMjIyBBIGZ1bGwgY29uZmlndXJhdGlvbiBiZWluZyB1c2VkIG9uIHByb2R1Y3Rpb24gIyMjIyMjCgogICAgICAgICMgRXZlcnkgaGVhZGVyIHNob3VsZCBlbmQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZS4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpbXCBdKiQKCiAgICAgICAgIyBibG9jayBBcGFjaGUgY2h1bmsgZXhwbG9pdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeVHJhbnNmZXItRW5jb2Rpbmc6W1wgXSpjaHVua2VkCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5Ib3N0OlwgYXBhY2hlLQoKICAgICAgICAjIGJsb2NrIGFubm95aW5nIHdvcm1zIHRoYXQgZmlsbCB0aGUgbG9ncy4uLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiooXC58JTJlKShcLnwlMmUpKCUyZnwlNWN8L3xcXFxcKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgKFteXCBdKlwgW15cIF0qXCB8LiolMDApCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKjxzY3JpcHQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qLyhyb290XC5leGVcP3xjbWRcLmV4ZVw/fGRlZmF1bHRcLmlkYVw/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQoJb3B0aW9uCQlodHRwY2xvcwoKCSMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuCgpFbmZpbiwgbCdvcHRpb24gJ2h0dHBjbG9zZScgYXBwYXJ1ZSBkYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xIHN1cHByaW1lIHRvdXQKZW506nRlIGRlIHR5cGUgJ0Nvbm5lY3Rpb246JyBldCBham91dGUgJ0Nvbm5lY3Rpb246IGNsb3NlJyBkYW5zIGxlcyBkZXV4IHNlbnMuCkNlY2kgc2ltcGxpZmllIGxhIGTpc2FjdGl2YXRpb24gZHUga2VlcC1hbGl2ZSBIVFRQIHBhciByYXBwb3J0IOAgbCdhbmNpZW5uZQpt6XRob2RlIGltcGxpcXVhbnQgNCBy6GdsZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWxvZyAgZ2xvYmFsCglvcHRpb24gaHR0cGxvZwoJb3B0aW9uIGRvbnRsb2dudWxsCglvcHRpb24gZm9yd2FyZGZvcgoJb3B0aW9uIGh0dHBjbG9zZQoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawoJc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgpMJ2F1dHJlIHNvbHV0aW9uIGFwcG9ydOllIHBhciBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zIGVzdCBkZSBy6XV0aWxpc2VyIHVuCmNvb2tpZSBlbiBwcm92ZW5hbmNlIGR1IHNlcnZldXIgZXQgZGUgbHVpIHBy6WZpeGVyIGwnaWRlbnRpZmlhbnQgZHUgc2VydmV1ci4KRGFucyBjZSBjYXMsIG5lIHBhcyBvdWJsaWVyIGRlIGZvcmNlciBsZSBtb2RlICJodHRwY2xvc2UiIHBvdXIgZW1w6mNoZXIgbGUKY2xpZW50IGV0IGxlIHNlcnZldXIgZGUgdHJhdmFpbGxlciBlbiBtb2RlICJrZWVwLWFsaXZlIiBhZmluIHF1ZSBsZSBwcm94eQpwdWlzc2UgY29ycmlnZXIgbGUgbm9tIGR1IGNvb2tpZSBkYW5zIHRvdXRlcyBsZXMgZnV0dXJlcyByZXF16nRlcy4KCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNydjEgY2hlY2sKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzcnYyIGNoZWNrCiAgICAgICBvcHRpb24gaHR0cGNsb3NlCgoKNC41KSBQcm90ZWN0aW9uIGNvbnRyZSBsZXMgZnVpdGVzIGQnaW5mb3JtYXRpb25zIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZXMgdmVyc2lvbnMgMS4xLjI4IGV0IDEuMi4xLCB1bmUgbm91dmVsbGUgb3B0aW9uICdjaGVja2NhY2hlJyBhIOl06SBjcunpZS4KRWxsZSBzZXJ0IOAgaW5zcGVjdGVyIG1pbnV0aWV1c2VtZW50IGxlcyBlbnTqdGVzICdDYWNoZS1jb250cm9sJywgJ1ByYWdtYScsIGV0CidTZXQtY29va2llJyBkYW5zIGxlcyBy6XBvbnNlcyBzZXJ2ZXVyIHBvdXIgZOl0ZXJtaW5lciBzJ2lsIHkgYSB1biByaXNxdWUgZGUKY2FjaGVyIHVuIGNvb2tpZSBzdXIgdW4gcHJveHkgY/R06SBjbGllbnQuIFF1YW5kIGNldHRlIG9wdGlvbiBlc3QgYWN0aXbpZSwgbGVzCnNldWxlcyBy6XBvbnNlcyBxdWkgcGV1dmVudCDqdHJlIHJldG91cm7pZXMgYXUgY2xpZW50IHNvbnQgOgogIC0gdG91dGVzIGNlbGxlcyBxdWkgbidvbnQgcGFzIGQnZW506nRlICdTZXQtY29va2llJyA7CiAgLSB0b3V0ZXMgY2VsbGVzIHF1aSBvbnQgdW4gY29kZSBkZSByZXRvdXIgYXV0cmUgcXVlIDIwMCwgMjAzLCAyMDYsIDMwMCwgMzAxLCAKICAgIDQxMCwgc2F1ZiBzaSBsZSBzZXJ2ZXIgYSBwb3NpdGlvbm7pIHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIGZvbnQgc3VpdGUg4CB1bmUgcmVxdep0ZSBQT1NULCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pCiAgICB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdQcmFnbWE6IG5vLWNhY2hlJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IHByaXZhdGUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLXN0b3JlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBtYXgtYWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogcy1tYXhhZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSInIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUsJwogICAgKGF1dG9yaXNhbnQgZCdhdXRyZXMgY2hhbXBzIGFwcuhzIHNldC1jb29raWUpLgoKU2kgdW5lIHLpcG9uc2UgbmUgcmVzcGVjdGUgcGFzIGNlcyBwcuktcmVxdWlzLCBhbG9ycyBlbGxlIHNlcmEgYmxvcXXpZSBkZSBsYQpt6m1lIG1hbmnocmUgcXVlIHMnaWwgcydhZ2lzc2FpdCBkJ3VuIGZpbHRyZSAncnNwZGVueScsIGF2ZWMgZW4gcmV0b3VyIHVuCm1lc3NhZ2UgIkhUVFAgNTAyIGJhZCBnYXRld2F5Ii4gTCfpdGF0IGRlIHNlc3Npb24gbW9udHJlICJQSC0tIiBjZSBxdWkgdmV1dApkaXJlIHF1ZSBjJ2VzdCBsZSBwcm94eSBxdWkgYSBibG9xdekgbGEgculwb25zZSBkdXJhbnQgbGUgdHJhaXRlbWVudCBkZXMKZW506nRlcy4gRGUgcGx1cywgdW4gbWVzc2FnZSBkJ2FsZXJ0ZSBzZXJhIGVudm956SBkYW5zIGxlcyBsb2dzIGRlIHNvcnRlIHF1ZQpsJ2FkbWluaXN0cmF0ZXVyIHNhY2hlIHF1J2lsIHkgYSB1bmUgYWN0aW9uIGNvcnJlY3RyaWNlIOAgZW50cmVwcmVuZHJlLgoKNC42KSBQZXJzb25hbGlzYXRpb24gZGVzIGVycmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbmVzIHNpdHVhdGlvbnMgY29uZHVpc2VudCDgIHJldG91cm5lciB1bmUgZXJyZXVyIEhUVFAgYXUgY2xpZW50IDoKICAtIHJlcXXqdGUgaW52YWxpZGUgb3UgdHJvcCBsb25ndWUgPT4gY29kZSBIVFRQIDQwMAogIC0gcmVxdep0ZSBtZXR0YW50IHRyb3AgZGUgdGVtcHMg4CB2ZW5pciA9PiBjb2RlIEhUVFAgNDA4CiAgLSByZXF16nRlIGludGVyZGl0ZSAoYmxvcXXpZSBwYXIgdW4gcmVxaWRlbnkpID0+IGNvZGUgSFRUUCA0MDMKICAtIGVycmV1ciBpbnRlcm5lIGR1IHByb3h5ID0+IGNvZGUgSFRUUCA1MDAKICAtIGxlIHNlcnZldXIgYSByZXRvdXJu6SB1bmUgculwb25zZSBpbmNvbXBs6HRlIG91IGludmFsaWRlID0+IGNvZGUgSFRUUCA1MDIKICAtIGF1Y3VuIHNlcnZldXIgZGlzcG9uaWJsZSBwb3VyIGNldHRlIHJlcXXqdGUgPT4gY29kZSBIVFRQIDUwMwogIC0gbGUgc2VydmV1ciBuJ2EgcGFzIHLpcG9uZHUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpID0+IGNvZGUgSFRUUCA1MDQKClVuIG1lc3NhZ2UgZCdlcnJldXIgc3VjY2ludCB0aXLpIGRlIGxhIFJGQyBhY2NvbXBhZ25lIGNlcyBjb2RlcyBkZSByZXRvdXIuCkNlcGVuZGFudCwgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjbGllbnTobGUsIG9uIHBldXQgcHLpZulyZXIgcmV0b3VybmVyIGRlcwpwYWdlcyBwZXJzb25uYWxpc+llcy4gQ2VjaSBlc3QgcG9zc2libGUgcGFyIGxlIGJpYWlzIGRlIGxhIGNvbW1hbmRlICJlcnJvcmxvYyIgOgoKICAgIGVycm9ybG9jIDxjb2RlX0hUVFA+IDxsb2NhdGlvbj4KCkF1IGxpZXUgZGUgZ+lu6XJlciB1bmUgZXJyZXVyIEhUVFAgPGNvZGVfSFRUUD4gcGFybWkgbGVzIGNvZGVzIGNpdOlzIGNpLWRlc3N1cywKbGUgcHJveHkgZ+lu6HJlcmEgdW4gY29kZSBkZSByZWRpcmVjdGlvbiB0ZW1wb3JhaXJlIChIVFRQIDMwMikgdmVycyBsJ2FkcmVzc2UKZCd1bmUgcGFnZSBwculjaXPpZSBkYW5zIDxsb2NhdGlvbj4uIENldHRlIGFkcmVzc2UgcGV1dCDqdHJlIHJlbGF0aXZlIGF1IHNpdGUsCm91IGFic29sdWUuIENvbW1lIGNldHRlIHLpcG9uc2UgZXN0IHRyYe506WUgcGFyIGxlIG5hdmlnYXRldXIgZHUgY2xpZW50Cmx1aS1t6m1lLCBpbCBlc3QgaW5kaXNwZW5zYWJsZSBxdWUgbCdhZHJlc3NlIGZvdXJuaWUgbHVpIHNvaXQgYWNjZXNzaWJsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgZXJyb3Jsb2MgNDAwIC9iYWRyZXF1ZXN0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDMgL2ZvcmJpZGRlbi5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDA4IC90b29sb25nLmh0bWwKCWVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxhIHZlcnNpb24gMS4yLjUgYXBwb3J0ZSBkZXV4IG5vdXZlbGxlcyBjb21tYW5kZXMgdmlzYW50IOAKcmVtcGxhY2VyICdlcnJvcmxvYycgOiAnZXJyb3Jsb2MzMDInIGV0ICdlcnJvcmxvYzMwMycuCgpMZXVyIHVzYWdlIG5vbiBhbWJpZ/wgZXN0IHJlY29tbWFuZOkg4CBsYSBwbGFjZSBkZSBsYSBjb21tYW5kZSAnZXJyb3Jsb2MnIChxdWkKdXRpbGlzZSB0b3Vqb3VycyAzMDIpLiBEYW5zIGxlIGRvdXRlLCBwculm6XJleiBsJ3V0aWxpc2F0aW9uIGRlICdlcnJvcmxvYzMwMycKZOhzIHF1ZSB2b3VzIHNhdmV6IHF1ZSB2b3MgY2xpZW50cyBzdXBwb3J0ZW50IGxlIGNvZGUgZGUgcmV0b3VyIEhUVFAgMzAzLgoKNC43KSBDaGFuZ2VtZW50IGRlcyB2YWxldXJzIHBhciBk6WZhdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsYSB2ZXJzaW9uIDEuMS4yMiBlc3QgYXBwYXJ1ZSBsYSBub3Rpb24gZGUgdmFsZXVycyBwYXIgZOlmYXV0LCBjZSBxdWkg6XZpdGUKZGUgculw6XRlciBkZXMgcGFyYW3odHJlcyBjb21tdW5zIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMsIHRlbHMgcXVlIGxlcyB0aW1lb3V0cywKYWRyZXNzZXMgZGUgbG9nLCBtb2RlcyBkZSBmb25jdGlvbm5lbWVudCwgZXRjLgoKTGVzIHZhbGV1cnMgcGFyIGTpZmF1dCBzb250IHBvc2l0aW9ubullcyBkYW5zIGxhIGRlcm5p6HJlIHNlY3Rpb24gJ2RlZmF1bHRzJwpwculj6WRlbnQgbCdpbnN0YW5jZSBxdWkgbGVzIHV0aWxpc2VyYS4gT24gcGV1dCBkb25jIG1ldHRyZSBhdXRhbnQgZGUgc2VjdGlvbnMKJ2RlZmF1bHRzJyBxdWUgbCdvbiB2ZXV0LiBJbCBmYXV0IGp1c3RlIHNlIHJhcHBlbGVyIHF1ZSBsYSBwculzZW5jZSBkJ3VuZSB0ZWxsZQpzZWN0aW9uIGltcGxpcXVlIHVuZSBhbm51bGF0aW9uIGRlIHRvdXMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3NpdGlvbm7pcwpwculj6WRlbW1lbnQsIGRhbnMgbGUgYnV0IGRlIGxlcyByZW1wbGFjZXIuCgpMYSBzZWN0aW9uICdkZWZhdWx0cycgdXRpbGlzZSBsYSBt6m1lIHN5bnRheGUgcXVlIGxhIHNlY3Rpb24gJ2xpc3RlbicsIGF1eApwYXJhbeh0cmVzIHBy6HMgcXVpIG5lIHNvbnQgcGFzIHN1cHBvcnTpcy4gTGUgbW90IGNs6SAnZGVmYXVsdHMnIHBldXQgYWNjZXB0ZXIKdW4gY29tbWVudGFpcmUgZW4gZ3Vpc2UgcGFyYW3odHJlLgoKRGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSwgc2V1bHMgbGVzIHBhcmFt6HRyZXMgc3VpdmFudHMgcGV1dmVudCDqdHJlCnBvc2l0aW9ubulzIGRhbnMgdW5lIHNlY3Rpb24gJ2RlZmF1bHRzJyA6CiAgLSBsb2cgKGxlIHByZW1pZXIgZXQgbGUgc2Vjb25kKQogIC0gbW9kZSB7IHRjcCwgaHR0cCwgaGVhbHRoIH0KICAtIGJhbGFuY2UgeyByb3VuZHJvYmluIH0KICAtIGRpc2FibGVkIChwb3VyIGTpc2FjdGl2ZXIgdG91dGVzIGxlcyBpbnN0YW5jZXMgcXVpIHN1aXZlbnQpCiAgLSBlbmFibGVkIChwb3VyIGZhaXJlIGwnb3DpcmF0aW9uIGludmVyc2UsIG1haXMgYydlc3QgbGUgY2FzIHBhciBk6WZhdXQpCiAgLSBjb250aW1lb3V0LCBjbGl0aW1lb3V0LCBzcnZ0aW1lb3V0LCBncmFjZSwgcmV0cmllcywgbWF4Y29ubgogIC0gb3B0aW9uIHsgcmVkaXNwYXRjaCwgdHJhbnNwYXJlbnQsIGtlZXBhbGl2ZSwgZm9yd2FyZGZvciwgbG9nYXNhcCwgaHR0cGNsb3NlLAogICAgICAgICAgICAgY2hlY2tjYWNoZSwgaHR0cGxvZywgdGNwbG9nLCBkb250bG9nbnVsbCwgcGVyc2lzdCwgaHR0cGNoayB9CiAgLSByZWRpc3BhdGNoLCByZWRpc3AsIHRyYW5zcGFyZW50LCBzb3VyY2UgeyBhZGRyOnBvcnQgfQogIC0gY29va2llLCBjYXB0dXJlCiAgLSBlcnJvcmxvYwoKTmUgc29udCBwYXMgc3VwcG9ydOlzIGRhbnMgY2V0dGUgdmVyc2lvbiwgbGVzIGFkcmVzc2VzIGRlIGRpc3BhdGNoIGV0IGxlcwpjb25maWd1cmF0aW9ucyBkZSBzZXJ2ZXVycywgYWluc2kgcXVlIHRvdXMgbGVzIGZpbHRyZXMgYmFz6XMgc3VyIGxlcwpleHByZXNzaW9ucyBy6Wd1bGnocmVzIDoKICAtIGRpc3BhdGNoLCBzZXJ2ZXIsCiAgLSByZXEqLCByc3AqCgpFbmZpbiwgaWwgbid5IGEgcGFzIGxlIG1veWVuLCBwb3VyIGxlIG1vbWVudCwgZCdpbnZhbGlkZXIgdW4gcGFyYW3odHJlIGJvb2zpZW4KcG9zaXRpb25u6SBwYXIgZOlmYXV0LiBEb25jIHNpIHVuZSBvcHRpb24gZXN0IHNw6WNpZmnpZSBkYW5zIGxlcyBwYXJhbeh0cmVzIHBhcgpk6WZhdXQsIGxlIHNldWwgbW95ZW4gZGUgbGEgZOlzYWN0aXZlciBwb3VyIHVuZSBpbnN0YW5jZSwgYydlc3QgZGUgY2hhbmdlciBsZXMKcGFyYW3odHJlcyBwYXIgZOlmYXV0IGF2YW50IGxhIGTpY2xhcmF0aW9uIGRlIGwnaW5zdGFuY2UuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBUQ1AKCWxvZyBnbG9iYWwKCW1vZGUgdGNwCgliYWxhbmNlIHJvdW5kcm9iaW4KCWNsaXRpbWVvdXQgMTgwMDAwCglzcnZ0aW1lb3V0IDE4MDAwMAoJY29udGltZW91dCA0MDAwCglyZXRyaWVzIDMKCXJlZGlzcGF0Y2gKCiAgICBsaXN0ZW4gYXBwX3RjcDEgMTAuMC4wLjE6NjAwMC02MDYzCglzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKCXNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKCXNlcnZlciBzcnYxIDE5Mi4xNjguMi4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAoJc2VydmVyIHNydjIgMTkyLjE2OC4yLjIgYmFja3VwCiAgICAKICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBIVFRQCglsb2cgZ2xvYmFsCgltb2RlIGh0dHAKCW9wdGlvbiBodHRwbG9nCglvcHRpb24gZm9yd2FyZGZvcgoJb3B0aW9uIGRvbnRsb2dudWxsCgliYWxhbmNlIHJvdW5kcm9iaW4KCWNsaXRpbWVvdXQgMjAwMDAKCXNydnRpbWVvdXQgMjAwMDAKCWNvbnRpbWVvdXQgNDAwMAoJcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQoJY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAoJY2FwdHVyZSBjb29raWUgdXNlcmlkPSBsZW4gMTAKCXNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCglzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjorODAwMCBjb29raWUgc3J2MiBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAoKICAgIGRlZmF1bHRzCgkjIHNlY3Rpb24gdmlkZSBxdWkgYW5udWxlIHRvdXMgbGVzIHBhcmFt6HRlcyBwYXIgZOlmYXV0LgoKPT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbel0cmFnZSBzeXN06G1lIHwKPT09PT09PT09PT09PT09PT09PT09PT0KClNvdXMgTGludXggMi40Cj09PT09PT09PT09PT09CgotLSBjdXQgaGVyZSAtLQojIS9iaW4vc2gKIyBzZXQgdGhpcyB0byBhYm91dCAyNTYvNE0gKDE2Mzg0IGZvciAyNTZNIG1hY2hpbmUpCk1BWEZJTEVTPTE2Mzg0CmVjaG8gJE1BWEZJTEVTID4gL3Byb2Mvc3lzL2ZzL2ZpbGUtbWF4CnVsaW1pdCAtbiAkTUFYRklMRVMKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXggXTsgdGhlbgoJZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgoJIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKCWVjaG8gMzAwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQKCWVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CgllY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQoJZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX291dF9vZl93aW5kb3cKZmkKCmVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCmVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CmVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfdHdfYnVja2V0cwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X29ycGhhbnMKZWNobyAzMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2tlZXBhbGl2ZV90aW1lCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdHdfcmVjeWNsZQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3RpbWVzdGFtcHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9lY24KZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9zYWNrCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZHNhY2sKCiMgYXV0by10dW5lZCBvbiAyLjQKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fbWF4CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX2RlZmF1bHQKCmVjaG8gMTYzODQgNjU1MzYgNTI0Mjg4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9ybWVtCmVjaG8gMTYzODQgMzQ5NTIwIDY5OTA0MCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfd21lbQoKLS0gY3V0IGhlcmUgLS0KClNvdXMgRnJlZUJTRAo9PT09PT09PT09PT0KClVuIHBvcnQgZGUgSEEtUHJveHkgc291cyBGcmVlQlNEIGVzdCBk6XNvcm1haXMgZGlzcG9uaWJsZSwgZ3LiY2Ug4ApDbGVtZW50IExhZm9yZXQgPHNoZWVwa2lsbGVyQGN1bHRkZWFkc2hlZXAub3JnPi4KClBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyA6Cmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3VybC5jZ2k/cG9ydHMvbmV0L2hhcHJveHkvcGtnLWRlc2NyCmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvcG9ydHMvbmV0L2hhcHJveHkvCmh0dHA6Ly93d3cuZnJlc2hwb3J0cy5vcmcvbmV0L2hhcHJveHkKCgotLSBmaW4gLS0K