CiAgICAgICAgIAkJICAgICBIIEEgLSBQIHIgbyB4IHkKICAgICAgICAgCQkgICAgIC0tLS0tLS0tLS0tLS0tLQogICAgICAgICAJCSAgICAgIHZlcnNpb24gMS4yLjIKCQkJICAgICAgd2lsbHkgdGFycmVhdQoJCQkgICAgICAgMjAwNC8xMC8xOAoKPT09PT09PT09PT09PT09PQp8IEludHJvZHVjdGlvbiB8Cj09PT09PT09PT09PT09PT0KCkhBLVByb3h5IGVzdCB1biByZWxhaXMgVENQL0hUVFAgb2ZmcmFudCBkZXMgZmFjaWxpdOlzIGQnaW506WdyYXRpb24gZW4KZW52aXJvbm5lbWVudCBoYXV0ZW1lbnQgZGlzcG9uaWJsZS4gRW4gZWZmZXQsIGlsIGVzdCBjYXBhYmxlIGRlIDoKICAtIGVmZmVjdHVlciB1biBhaWd1aWxsYWdlIHN0YXRpcXVlIGTpZmluaSBwYXIgZGVzIGNvb2tpZXMgOwogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgYXZlYyBjculhdGlvbiBkZSBjb29raWVzIHBvdXIgYXNzdXJlciBsYQogICAgcGVyc2lzdGVuY2UgZGUgc2Vzc2lvbiA7IAogIC0gZm91cm5pciB1bmUgdmlzaWJpbGl06SBleHRlcm5lIGRlIHNvbiDpdGF0IGRlIHNhbnTpIDsKICAtIHMnYXJy6nRlciBlbiBkb3VjZXVyIHNhbnMgcGVydGUgYnJ1dGFsZSBkZSBzZXJ2aWNlIDsKICAtIG1vZGlmaWVyL2Fqb3V0ZXIvc3VwcHJpbWVyIGRlcyBlbnTqdGVzIGRhbnMgbGEgcmVxdep0ZSBldCBsYSBy6XBvbnNlIDsKICAtIGludGVyZGlyZSBkZXMgcmVxdep0ZXMgcXVpIHbpcmlmaWVudCBjZXJ0YWluZXMgY29uZGl0aW9ucyA7CiAgLSB1dGlsaXNlciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBsb3JzcXVlIGxlcyBzZXJ2ZXVycyBwcmluY2lwYXV4IHNvbnQgaG9ycwogICAgZCd1c2FnZS4KCklsIHJlcXVpZXJ0IHBldSBkZSByZXNzb3VyY2VzLCBldCBzb24gYXJjaGl0ZWN0dXJlIOl26W5lbWVudGllbGxlIG1vbm8tcHJvY2Vzc3VzCmx1aSBwZXJtZXQgZmFjaWxlbWVudCBkZSBn6XJlciBwbHVzaWV1cnMgbWlsbGllcnMgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBzdXIKcGx1c2lldXJzIHJlbGFpcyBzYW5zIGVmZm9uZHJlciBsZSBzeXN06G1lLgoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6HRyZXMgZGUgbGFuY2VtZW50IHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgb3B0aW9ucyBkZSBsYW5jZW1lbnQgc29udCBwZXUgbm9tYnJldXNlcyA6CgogICAgLWYgPGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbj4KICAgIC1uIDxub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzPgogICAgLU4gPG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5PgogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyIGTpZmF1dApwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUgZmljaGllciBkZQpjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucyAnbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZSBjb25uZXhpb25zClRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzIGNvbmZvbmR1cy4gQ2UKcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbnTqdGVzIEhUVFAKc29udCBhZmZpY2jpcy4KCkxlcyBzdGF0aXN0aXF1ZXMgbmUgc29udCBkaXNwb25pYmxlcyBxdWUgc2kgbGUgcHJvZ3JhbW1lIGEg6XTpIGNvbXBpbOkgYXZlYwpsJ29wdGlvbiAiU1RBVFRJTUUiLiBJbCBzJ2FnaXQgcHJpbmNpcGFsZW1lbnQgZGUgZG9ubullcyBicnV0ZXMgbidheWFudApkJ3V0aWxpdOkgcXVlIGxvcnMgZGUgYmVuY2htYXJrcyBwYXIgZXhlbXBsZS4KCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgRmljaGllciBkZSBjb25maWd1cmF0aW9uIHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU3RydWN0dXJlCj09PT09PT09PQoKTCdhbmFseXNldXIgZHUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGlnbm9yZSBkZXMgbGlnbmVzIHZpZGVzLCBsZXMgZXNwYWNlcywKbGVzIHRhYnVsYXRpb25zLCBldCB0b3V0IGNlIHF1aSBlc3QgY29tcHJpcyBlbnRyZSBsZSBzeW1ib2xlICcjJyAocydpbCBuJ2VzdCBwYXMKcHLpY+lk6SBkJ3VuICdcJyksIGV0IGxhIGZpbiBkZSBsYSBsaWduZSwgY2UgcXVpIGNvbnN0aXR1ZSB1biBjb21tZW50YWlyZS4KCkxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBlc3QgZOljb3Vw6SBlbiBzZWN0aW9ucyBy6XDpcullcyBwYXIgZGVzIG1vdHMgY2zpcwp0ZWxzIHF1ZSA6CgogIC0gJ2dsb2JhbCcKICAtICdsaXN0ZW4nCiAgLSAnZGVmYXVsdHMnCgpUb3VzIGxlcyBwYXJhbeh0cmVzIGZvbnQgculm6XJlbmNlIOAgbGEgc2VjdGlvbiBk6WZpbmllIHBhciBsZSBkZXJuaWVyIG1vdCBjbOkKcmVjb25udS4KCgoxKSBQYXJhbeh0cmVzIGdsb2JhdXgKPT09PT09PT09PT09PT09PT09PT09CgpJbCBzJ2FnaXQgZGVzIHBhcmFt6HRyZXMgYWdpc3NhbnQgc3VyIGxlIHByb2Nlc3N1cywgb3UgYmllbiBzdXIgbCdlbnNlbWJsZSBkZXMKcHJveGllcy4gSWxzIHNvbnQgdG91cyBzcOljaWZp6XMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLiBMZXMgcGFyYW3odHJlcwpzdXBwb3J06XMgc29udCA6CgogIC0gbG9nIDxhZHJlc3NlPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KICAtIG1heGNvbm4gPG5vbWJyZT4KICAtIHVpZCA8aWRlbnRpZmlhbnQ+CiAgLSBnaWQgPGlkZW50aWZpYW50PgogIC0gY2hyb290IDxy6XBlcnRvaXJlPgogIC0gbmJwcm9jIDxub21icmU+CiAgLSBkYWVtb24KICAtIGRlYnVnCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KCjEuMSkgSm91cm5hbGlzYXRpb24gZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBwbHVwYXJ0IGRlcyDpduluZW1lbnRzIHNvbnQgam91cm5hbGlz6XMgOiBk6W1hcnJhZ2VzLCBhcnLqdHMsIGRpc3Bhcml0aW9uIGV0CmFwcGFyaXRpb24gZGUgc2VydmV1cnMsIGNvbm5leGlvbnMsIGVycmV1cnMuIFRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbgpzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KCkxlcyBjb25uZXhpb25zIHNvbnQgZW52b3npZXMgZW4gbml2ZWF1ICJpbmZvIi4gTGVzIGTpbWFycmFnZXMgZGUgc2VydmljZSBldCBkZQpzZXJ2ZXVycyBzZXJvbnQgZW52b3npcyBlbiAibm90aWNlIiwgbGVzIHNpZ25hdXggZCdhcnLqdHMgZW4gIndhcm5pbmciIGV0IGxlcwphcnLqdHMgZOlmaW5pdGlmcyBkZSBzZXJ2aWNlcyBldCBkZSBzZXJ2ZXVycyBlbiAiYWxlcnQiLiBDZWNpIGVzdCB2YWxhYmxlIGF1c3NpCmJpZW4gcG91ciBsZXMgcHJveGllcyBxdWUgcG91ciBsZXMgc2VydmV1cnMgdGVzdOlzIHBhciBsZXMgcHJveGllcy4gTGUgcGFyYW3odHJlCm9wdGlvbm5lbCA8bml2ZWF1X21heD4gZOlmaW5pdCBsZSBuaXZlYXUgbWF4aW1hbCBkZSB0cmFjZXMg6W1pc2VzIHBhcm1pIGxlcyA4CnZhbGV1cnMgc3VpdmFudGVzICA6CiAgICBlbWVyZywgYWxlcnQsIGNyaXQsIGVyciwgd2FybmluZywgbm90aWNlLCBpbmZvLCBkZWJ1ZwoKUGFyIGNvbXBhdGliaWxpdOkgYXZlYyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzLCBsYSB2YWxldXIgcGFyIGTpZmF1dAplc3QgImRlYnVnIiBzaSBsJ29wdGlvbiBuJ2VzdCBwYXMgcHLpY2lz6WUuCgpMZXMgY2F06WdvcmllcyBwb3NzaWJsZXMgc29udCA6CiAgICBrZXJuLCB1c2VyLCBtYWlsLCBkYWVtb24sIGF1dGgsIHN5c2xvZywgbHByLCBuZXdzLAogICAgdXVjcCwgY3JvbiwgYXV0aDIsIGZ0cCwgbnRwLCBhdWRpdCwgYWxlcnQsIGNyb24yLAogICAgbG9jYWwwLCBsb2NhbDEsIGxvY2FsMiwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwgbG9jYWw2LCBsb2NhbDcKCkNvbmZvcm3pbWVudCDgIGxhIFJGQzMxNjQsIGxlcyBtZXNzYWdlcyDpbWlzIHNvbnQgbGltaXTpcyDgIDEwMjQgY2FyYWN06HJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAoJbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCglsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cy4gTGVzIGNvbm5leGlvbnMgc29udCBjb21wcmlzZXMgYXUgc2VucyAnYWNjZXB0YXRpb24gZGUgY29ubmV4aW9uJywKZG9uYyBpbCBmYXV0IHMnYXR0ZW5kcmUgZW4gcuhnbGUgZ+lu6XJhbCDgIGF2b2lyIHVuIHBldSBwbHVzIGR1IGRvdWJsZSBkZQpzZXNzaW9ucyBUQ1AgcXVlIGxlIG1heGltdW0gZGUgY29ubmV4aW9ucyBmaXjpLiBDJ2VzdCBpbXBvcnRhbnQgcG91ciBmaXhlciBsZQpwYXJhbeh0cmUgJ3VsaW1pdCAtbicgYXZhbnQgZGUgbGFuY2VyIGxlIHByb3h5LiBQb3VyIGNvbXB0YWJpbGlzZXIgbGUgbm9tYnJlCmRlIHNvY2tldHMgbuljZXNzYWlyZXMsIGlsIGZhdXQgcHJlbmRyZSBlbiBjb21wdGUgY2VzIHBhcmFt6HRyZXMgOgogIC0gMSBzb2NrZXQgcGFyIGNvbm5leGlvbiBlbnRyYW50ZQogIC0gMSBzb2NrZXQgcGFyIGNvbm5leGlvbiBzb3J0YW50ZQogIC0gMSBzb2NrZXQgcGFyIGNvdXBsZSBhZHJlc3NlL3BvcnQgZCfpY291dGUgcGFyIHByb3h5CiAgLSAxIHNvY2tldCBwb3VyIGNoYXF1ZSBzZXJ2ZXVyIGVuIGNvdXJzIGRlIGhlYWx0aC1jaGVjawogIC0gMSBzb2NrZXQgcG91ciBsZXMgbG9ncyAodG91cyBzZXJ2ZXVycyBjb25mb25kdXMpCgpEYW5zIGxlIGNhcyBv+SBjaGFxdWUgcHJveHkgbifpY291dGUgcXVlIHN1ciB1biBjb3VwbGUgYWRyZXNzZS9wb3J0LCBwb3NpdGlvbm5lcgpsYSBsaW1pdGUgZHUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyAodWxpbWl0IC1uKSDgIAooMiAqIG1heGNvbm4gKyBuYnByb3h5ICsgbmJzZXJ2ZXVycyArIDEpLiBEYW5zIHVuZSBmdXR1cmUgdmVyc2lvbiwgaGFwcm94eSBzZXJhCmNhcGFibGUgZGUgcG9zaXRpb25uZXIgbHVpLW3qbWUgY2V0dGUgbGltaXRlLgoKMS4zKSBEaW1pbnV0aW9uIGRlcyBwcml2aWzoZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZmluIGRlIHLpZHVpcmUgbGVzIHJpc3F1ZXMgZCdhdHRhcXVlcyBkYW5zIGxlIGNhcyBv+SB1bmUgZmFpbGxlIG5vbiBpZGVudGlmaellCnNlcmFpdCBleHBsb2l06WUsIGlsIGVzdCBwb3NzaWJsZSBkZSBkaW1pbnVlciBsZXMgcHJpdmls6GdlcyBkdSBwcm9jZXNzdXMsIGV0CmRlIGwnaXNvbGVyIGRhbnMgdW4gculwZXJ0b2lyZSBzYW5zIHJpc3F1ZS4KCkRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJywgbGUgcGFyYW3odHJlICd1aWQnIHBlcm1ldCBkZSBzcOljaWZpZXIgdW4gaWRlbnRpZmlhbnQKbnVt6XJpcXVlIGQndXRpbGlzYXRldXIuIExhIHZhbGV1ciAwLCBjb3JyZXNwb25kYW50IG5vcm1hbGVtZW50IGF1IHN1cGVyLQp1dGlsaXNhdGV1ciwgcG9zc+hkZSBpY2kgdW5lIHNpZ25pZmljYXRpb24gcGFydGljdWxp6HJlIGNhciBlbGxlIGluZGlxdWUgcXVlCmwnb24gbmUgc291aGFpdGUgcGFzIGNoYW5nZXIgY2V0IGlkZW50aWZpYW50IGV0IGNvbnNlcnZlciBsYSB2YWxldXIgY291cmFudGUuCkMnZXN0IGxhIHZhbGV1ciBwYXIgZOlmYXV0LiBEZSBsYSBt6m1lIG1hbmnocmUsIGxlIHBhcmFt6HRyZSAnZ2lkJyBjb3JyZXNwb25kIOAKdW4gaWRlbnRpZmlhbnQgZGUgZ3JvdXBlLCBldCB1dGlsaXNlIHBhciBk6WZhdXQgbGEgdmFsZXVyIDAgcG91ciBuZSByaWVuCmNoYW5nZXIuIElsIGVzdCBwYXJ0aWN1bGnocmVtZW50IGTpY29uc2VpbGzpIGQndXRpbGlzZXIgZGVzIGNvbXB0ZXMgZ+lu6XJpcXVlcwp0ZWxzIHF1ZSAnbm9ib2R5JyBjYXIgY2V0dGUgcHJhdGlxdWUgcmV2aWVudCDgIHV0aWxpc2VyICdyb290JyBzaSBkJ2F1dHJlcwpwcm9jZXNzdXMgdXRpbGlzZW50IGxlcyBt6m1lcyBpZGVudGlmaWFudHMuCgpMZSBwYXJhbeh0cmUgJ2Nocm9vdCcgYXV0b3Jpc2Ug4CBjaGFuZ2VyIGxhIHJhY2luZSBkdSBwcm9jZXNzdXMgdW5lIGZvaXMgbGUKcHJvZ3JhbW1lIGxhbmPpLCBkZSBzb3J0ZSBxdWUgbmkgbGUgcHJvY2Vzc3VzLCBuaSBsJ3VuIGRlIHNlcyBkZXNjZW5kYW50cyBuZQpwdWlzc2VudCByZW1vbnRlciBkZSBub3V2ZWF1IOAgbGEgcmFjaW5lLiBDZSB0eXBlIGRlIGNsb2lzb25uZW1lbnQgKGNocm9vdCkgZXN0CmfpbulyYWxlbWVudCBjb250b3VybmFibGUgc3VyIGNlcnRhaW5zIE9TIChMaW51eCwgU29sYXJpcykgcG91ciBwZXUgcXVlCmwnYXR0YXF1YW50IHBvc3PoZGUgZGVzIGRyb2l0cyAncm9vdCcgZXQgc29pdCBlbiBtZXN1cmUgZCd1dGlsaXNlciBvdSBkZSBjcullcgp1biBy6XBlcnRvaXJlLiBBdXNzaSwgaWwgZXN0IGltcG9ydGFudCBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgc3DpY2lmaXF1ZSBhdQpzZXJ2aWNlIHBvdXIgY2V0IHVzYWdlLCBldCBkZSBuZSBwYXMgbXV0dWFsaXNlciB1biBt6m1lIHLpcGVydG9pcmUgcG91cgpwbHVzaWV1cnMgc2VydmljZXMgZGUgbmF0dXJlIGRpZmbpcmVudGUuIFBvdXIgcmVuZHJlIGwnaXNvbGVtZW50IHBsdXMgcm9idXN0ZSwKaWwgZXN0IGNvbnNlaWxs6SBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgdmlkZSwgc2FucyBhdWN1biBkcm9pdCwgZXQgZGUgY2hhbmdlcgpsJ3VpZCBkdSBwcm9jZXNzdXMgZGUgc29ydGUgcXUnaWwgbmUgcHVpc3NlIHJpZW4gZmFpcmUgZGFucyBsZWRpdCBy6XBlcnRvaXJlLgoKUmVtYXJxdWU6IGRhbnMgbGUgY2FzIG/5IHVuZSB0ZWxsZSBmYWlsbGUgc2VyYWl0IG1pc2UgZW4g6XZpZGVuY2UsIGlsIGVzdCBmb3J0CnByb2JhYmxlIHF1ZSBsZXMgcHJlbWnocmVzIHRlbnRhdGl2ZXMgZGUgc29uIGV4cGxvaXRhdGlvbiBwcm92b3F1ZW50IHVuIGFycup0IGR1CnByb2dyYW1tZSwg4CBjYXVzZSBkJ3VuIHNpZ25hbCBkZSB0eXBlICdTZWdtZW50YXRpb24gRmF1bHQnLCAnQnVzIEVycm9yJyBvdQplbmNvcmUgJ0lsbGVnYWwgSW5zdHJ1Y3Rpb24nLiBN6m1lIHMnaWwgZXN0IHZyYWkgcXVlIGZhaXJlIHRvdXJuZXIgbGUgc2VydmV1ciBlbgplbnZpcm9ubmVtZW50IGxpbWl06SBy6WR1aXQgbGVzIHJpc3F1ZXMgZCdpbnRydXNpb24sIGlsIGVzdCBwYXJmb2lzIGJpZW4gdXRpbGUKZGFucyBjZXMgY2lyY29uc3RhbmNlcyBkZSBjb25uYe50cmUgbGVzIGNvbmRpdGlvbnMgZCdhcHBhcml0aW9uIGR1IHByb2Js6G1lLCB2aWEKbCdvYnRlbnRpb24gZCd1biBmaWNoaWVyICdjb3JlJy4gTGEgcGx1cGFydCBkZXMgc3lzdOhtZXMsIHBvdXIgZGVzIHJhaXNvbnMgZGUKc+ljdXJpdOksIGTpc2FjdGl2ZW50IGxhIGfpbulyYXRpb24gZHUgZmljaGllciAnY29yZScgYXBy6HMgdW4gY2hhbmdlbWVudApkJ2lkZW50aWZpYW50IHBvdXIgbGUgcHJvY2Vzc3VzLiBJbCBmYXVkcmEgZG9uYyBzb2l0IGxhbmNlciBsZSBwcm9jZXNzdXMg4ApwYXJ0aXIgZCd1biBjb21wdGUgdXRpbGlzYXRldXIgYXV4IGRyb2l0cyBy6WR1aXRzIChtYWlzIG5lIHBvdXZhbnQgcGFzIGVmZmVjdHVlcgpsZSBjaHJvb3QpLCBvdSBiaWVuIGxlIGZhaXJlIGVuIHJvb3Qgc2FucyBy6WR1Y3Rpb24gZGVzIGRyb2l0cyAodWlkIDApLiBEYW5zIGNlCmNhcywgbGUgZmljaGllciBzZSB0cm91dmVyYSBzb2l0IGRhbnMgbGUgculwZXJ0b2lyZSBkZSBsYW5jZW1lbnQsIHNvaXQgZGFucyBsZQpy6XBlcnRvaXJlIHNw6WNpZmnpIGFwcuhzIGwnb3B0aW9uICdjaHJvb3QnLiBOZSBwYXMgb3VibGllciBsYSBjb21tYW5kZSBzdWl2YW50ZQpwb3VyIGF1dG9yaXNlciBsYSBn6W7pcmF0aW9uIGR1IGZpY2hpZXIgYXZhbnQgZGUgbGFuY2VyIGxlIHByb2dyYW1tZSA6CgojIHVsaW1pdCAtYyB1bmxpbWl0ZWQKCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKCXVpZAkzMDAwMAoJZ2lkCTMwMDAwCgljaHJvb3QgIC92YXIvY2hyb290L2hhcHJveHkKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZSByZW5kCnBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpIGRhbnMgdW4Kc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKUGFyIGFpbGxldXJzLCBjZXJ0YWlucyBtZXNzYWdlcyBkJ2FsZXJ0ZSBzb250IHRvdWpvdXJzIGVudm956XMgc3VyIGxhIHNvcnRpZQpzdGFuZGFyZCwgbeptZSBlbiBtb2RlICdkYWVtb24nLiBQb3VyIG5lIHBsdXMgbGVzIHZvaXIgYWlsbGV1cnMgcXVlIGRhbnMgbGVzCmxvZ3MsIGlsIHN1ZmZpdCBkZSBwYXNzZXIgZW4gbW9kZSBzaWxlbmNpZXV4IHBhciBsJ2Fqb3V0IGRlIGwnb3B0aW9uICdxdWlldCcuCkNldHRlIG9wdGlvbiBuJ2EgcGFzIGQn6XF1aXZhbGVudCBlbiBsaWduZSBkZSBjb21tYW5kZS4KCkVuZmluLCBsZSBtb2RlICdkZWJ1ZycgcGVybWV0IGRlIGRpYWdub3N0aXF1ZXIgbGVzIG9yaWdpbmVzIGRlIGNlcnRhaW5zCnByb2Js6G1lcyBlbiBhZmZpY2hhbnQgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucyBldCDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKZW50cmUgbGVzIGNsaWVudHMgZXQgbGVzIHNlcnZldXJzLiBDZSBtb2RlIGVzdCBpbmNvbXBhdGlibGUgYXZlYyBsZXMgb3B0aW9ucwonZGFlbW9uJyBldCAncXVpZXQnIHBvdXIgZGVzIHJhaXNvbnMgZGUgYm9uIHNlbnMuCgoxLjUpIEFjY3JvaXNzZW1lbnQgZGUgbGEgY2FwYWNpdOkgZGUgdHJhaXRlbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdXIgZGVzIG1hY2hpbmVzIG11bHRpLXByb2Nlc3NldXJzLCBpbCBwZXV0IHNlbWJsZXIgZ+JjaOkgZGUgbid1dGlsaXNlciBxdSd1bgpwcm9jZXNzZXVyIHBvdXIgZWZmZWN0dWVyIGxlcyB04mNoZXMgZGUgcmVsYXlhZ2UsIG3qbWUgc2kgbGVzIGNoYXJnZXMKbuljZXNzYWlyZXMg4CBzYXR1cmVyIHVuIHByb2Nlc3NldXIgYWN0dWVsIHNvbnQgYmllbiBhdS1kZWzgIGRlcyBvcmRyZXMgZGUKZ3JhbmRldXIgY291cmFtbWVudCByZW5jb250culzLiBDZXBlbmRhbnQsIHBvdXIgZGVzIGJlc29pbnMgcGFydGljdWxpZXJzLCBsZQpwcm9ncmFtbWUgc2FpdCBk6W1hcnJlciBwbHVzaWV1cnMgcHJvY2Vzc3VzIHNlIHLpcGFydGlzc2FudCBsYSBjaGFyZ2UgZGUKdHJhdmFpbC4gQ2Ugbm9tYnJlIGRlIHByb2Nlc3N1cyBlc3Qgc3DpY2lmaekgcGFyIGxlIHBhcmFt6HRyZSAnbmJwcm9jJyBkZSBsYQpzZWN0aW9uICdnbG9iYWwnLiBTYSB2YWxldXIgcGFyIGTpZmF1dCBlc3QgbmF0dXJlbGxlbWVudCAxLiBDZWNpIG5lIGZvbmN0aW9ubmUKcXUnZW4gbW9kZSAnZGFlbW9uJy4gVW4gdXNhZ2UgZOlq4CByZW5jb250cukgcG91ciBjZSBwYXJhbeh0cmUgZnV0IGRlIGTpcGFzc2VyCmxhIGxpbWl0ZSBkZSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzIGFsbG916WUgcGFyIHByb2Nlc3N1cyBzb3VzClNvbGFyaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCglkYWVtb24KCXF1aWV0CgluYnByb2MJMgoKMS42KSBTaW1wbGlmaWNhdGlvbiBkZSBsYSBnZXN0aW9uIGRlcyBwcm9jZXNzdXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSGFwcm94eSBzdXBwb3J0ZSBkb3LpbmF2YW50IGxhIG5vdGlvbiBkZSBmaWNoaWVycyBkZSBwaWQgKC0+IHBpZGZpbGVzKS4gU2kgbGUKcGFyYW3odHJlICctcCcgZGUgbGlnbmUgZGUgY29tbWFuZGUsIG91IGwnb3B0aW9uIGdsb2JhbGUgJ3BpZGZpbGUnIHNvbnQgc3VpdmlzCmQndW4gbm9tIGRlIGZpY2hpZXIsIGFsb3JzIGNlIGZpY2hpZXIgc2VyYSBzdXBwcmlt6SBwdWlzIHJlY3Lp6SBldCBjb250aWVuZHJhCmxlIG51belybyBkZSBQSUQgZGVzIHByb2Nlc3N1cyBmaWxzLCDgIHJhaXNvbiBkJ3VuIHBhciBsaWduZSAodmFsYWJsZQp1bmlxdWVtZW50IGVuIG1vZGUgZOltb24pLiBDZSBmaWNoaWVyIG4nZXN0IFBBUyByZWxhdGlmIGF1IGNsb2lzb25uZW1lbnQgY2hyb290CmFmaW4gZGUgcmVzdGVyIGNvbXBhdGlibGUgYXZlYyB1biBy6XBlcnRvaXJlIHByb3TpZ+kgZW4gbGVjdHVyZSBzZXVsZS4gSWwKYXBwYXJ0aWVuZHJhIOAgbCd1dGlsaXNhdGV1ciBheWFudCBsYW5j6SBsZSBwcm9jZXNzdXMsIGV0IGRpc3Bvc2VyYSBkZXMgZHJvaXRzCjA2NDQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgMgogICAgICAgIHBpZGZpbGUgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZAoKICAgICMgcG91ciBzdG9wcGVyIHNldWxlbWVudCBjZXMgcHJvY2Vzc3VzIHBhcm1pIGQnYXV0cmVzIDoKICAgICMga2lsbCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKCjIpIETpZmluaXRpb24gZCd1biBzZXJ2aWNlIGVuIOljb3V0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBzZWN0aW9ucyBkZSBzZXJ2aWNlIGTpYnV0ZW50IHBhciBsZSBtb3QgY2zpICJsaXN0ZW4iIDoKCiAgICBsaXN0ZW4gPG5vbV9pbnN0YW5jZT4gWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgotIDxub21faW5zdGFuY2U+IGVzdCBsZSBub20gZGUgbCdpbnN0YW5jZSBk6WNyaXRlLiBDZSBub20gc2VyYSBlbnZveekgZGFucyBsZXMKICBsb2dzLCBkb25jIGlsIGVzdCBzb3VoYWl0YWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSByZWxhdGlmIGF1IHNlcnZpY2UgcmVsYXnpLiBBdWN1bgogIHRlc3Qgbidlc3QgZWZmZWN0dekgY29uY2VybmFudCBsJ3VuaWNpdOkgZGUgY2Ugbm9tLCBxdWkgbidlc3QgcGFzIG9ibGlnYXRvaXJlLAogIG1haXMgZm9ydGVtZW50IHJlY29tbWFuZOllLgoKLSA8YWRyZXNzZV9JUD4gZXN0IGwnYWRyZXNzZSBJUCBzdXIgbGFxdWVsbGUgbGUgcmVsYWlzIGF0dGVuZCBzZXMgY29ubmV4aW9ucy4KICBMJ2Fic2VuY2UgZCdhZHJlc3NlIGFpbnNpIHF1ZSBsJ2FkcmVzc2UgMC4wLjAuMCBzaWduaWZpZW50IHF1ZSBsZXMgY29ubmV4aW9ucwogIHBvdXJyb250IHMnZWZmZWN0dWVyIHN1ciB0b3V0ZXMgbGVzIGFkcmVzc2VzIGRlIGxhIG1hY2hpbmUuCgotIDxwbGFnZV9wb3J0cz4gY29ycmVzcG9uZCBzb2l0IOAgdW4gcG9ydCwgc29pdCDgIHVuZSBwbGFnZSBkZSBwb3J0cyBzdXIKICBsZXNxdWVscyBsZSByZWxhaXMgYWNjZXB0ZXJhIGRlcyBjb25uZXhpb25zIHBvdXIgbCdhZHJlc3NlIElQIHNw6WNpZmnpZS4KICBDZXR0ZSBwbGFnZSBwZXV0IOp0cmUgOgogICAgLSBzb2l0IHVuIHBvcnQgbnVt6XJpcXVlIChleDogJzgwJykKICAgIC0gc29pdCB1bmUgcGxhZ2UgY29uc3RpdHXpZSBkZSBkZXV4IHZhbGV1cnMgc+lwYXLpZXMgcGFyIHVuIHRpcmV0CiAgICAgIChleDogJzIwMDAtMjEwMCcpIHJlcHLpc2VudGFudCBsZXMgZXh0cultaXTpcyBpbmNsdXNlcyBkYW5zIGxhCiAgICAgIHBsYWdlLgogIElsIGZhdXQgZmFpcmUgYXR0ZW50aW9uIOAgbCd1c2FnZSBkZXMgcGxhZ2VzLCBjYXIgY2hhcXVlIGNvbWJpbmFpc29uCiAgPGFkcmVzc2VfSVA+Ojxwb3J0PiBjb25zb21tZSB1bmUgc29ja2V0LCBkb25jIHVuIGRlc2NyaXB0ZXVyIGRlIGZpY2hpZXIuCiAgTGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cG9ydD4gZG9pdCDqdHJlIHVuaXF1ZSBwb3VyIHRvdXRlcyBsZXMgIGluc3RhbmNlcwogIGQndW5lIG3qbWUgbWFjaGluZS4gTCdhdHRhY2hlbWVudCDgIHVuIHBvcnQgaW5m6XJpZXVyIOAgMTAyNCBu6WNlc3NpdGUgdW4KICBuaXZlYXUgZGUgcHJpdmls6GdlIHBhcnRpY3VsaWVyIGxvcnMgZHUgbGFuY2VtZW50IGR1IHByb2dyYW1tZSAoaW5k6XBlbmRhbW1lbnQKICBkdSBwYXJhbeh0cmUgJ3VpZCcgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJykuCgotIGxlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPiBwZXV0IOp0cmUgculw6XTpIGluZOlmaW5pbWVudCBwb3VyCiAgZGVtYW5kZXIgYXUgcmVsYWlzIGQn6WNvdXRlciDpZ2FsZW1lbnQgc3VyIGQnYXV0cmVzIGFkcmVzc2VzIGV0L291IGQnYXV0cmVzCiAgcGxhZ2VzIGRlIHBvcnRzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkZSBz6XBhcmVyIGxlcyBjb3VwbGVzIHBhciB1bmUgdmlyZ3VsZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgIGxpc3RlbiB4MTFfcHJveHkgMTI3LjAuMC4xOjYwMDAtNjAwOQogICAgbGlzdGVuIHNtdHBfcHJveHkgMTI3LjAuMC4xOjI1LDEyNy4wLjAuMTo1ODcKICAgIGxpc3RlbiBsZGFwX3Byb3h5IDozODksOjY2MwoKU2kgdG91dGVzIGxlcyBhZHJlc3NlcyBuZSB0aWVubmVudCBwYXMgc3VyIHVuZSBsaWduZSwgaWwgZXN0IHBvc3NpYmxlIGQnZW4KcmFqb3V0ZXIg4CBsJ2FpZGUgZHUgbW90IGNs6SAnYmluZCcuIERhbnMgY2UgY2FzLCBpbCBuJ2VzdCBt6m1lIHBhcyBu6WNlc3NhaXJlCmRlIHNw6WNpZmllciBsYSBwcmVtaehyZSBhZHJlc3NlIHN1ciBsYSBsaWduZSBsaXN0ZW4sIGNlIHF1aSBmYWNpbGl0ZSBwYXJmb2lzCmwn6WNyaXR1cmUgZGUgY29uZmlndXJhdGlvbnMgOgoKICAgIGJpbmQgWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwoJYmluZCAxMC4wLjAuMToxMDA4MCwxMC4wLjAuMToxMDQ0MwoKMi4xKSBJbmhpYml0aW9uIGQndW4gc2VydmljZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCDqdHJlIGTpc2FjdGl26SBwb3VyIGRlcyBiZXNvaW5zIGRlIG1haW50ZW5hbmNlLCBzYW5zIGF2b2lyIOAKY29tbWVudGVyIHRvdXRlIHVuZSBwYXJ0aWUgZHUgZmljaGllci4gSWwgc3VmZml0IGRlIHBvc2l0aW9ubmVyIGxlIG1vdCBjbOkKImRpc2FibGVkIiBkYW5zIHNhIHNlY3Rpb24gOgoKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKCWRpc2FibGVkCgpSZW1hcnF1ZTogbGUgbW90IGNs6SAnZW5hYmxlZCcgcGVybWV0IGRlIHLpYWN0aXZlciB1biBzZXJ2aWNlIHBy6WFsYWJsZW1lbnQKCSAgZOlzYWN0aXbpIHBhciBsZSBtb3QgY2zpICdkaXNhYmxlZCcsIHBhciBleGVtcGxlIOAgY2F1c2UgZCd1bmUKCSAgY29uZmlndXJhdGlvbiBwYXIgZOlmYXV0LgoKMi4yKSBNb2RlIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyB0cm9pcyBtb2RlcyBkaWZm6XJlbnRzIDoKICAtIFRDUAogIC0gSFRUUAogIC0gc3VwZXJ2aXNpb24KCk1vZGUgVENQCi0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUsIGTocyBsZXVyIOl0YWJsaXNzZW1lbnQsIGxlcyBjb25uZXhpb25zIFRDUCB2ZXJzCnVuIG91IHBsdXNpZXVycyBzZXJ2ZXVycy4gQXVjdW4gdHJhaXRlbWVudCBuJ2VzdCBlZmZlY3R16SBzdXIgbGUgZmx1eC4gSWwgcydhZ2l0CnNpbXBsZW1lbnQgZCd1bmUgYXNzb2NpYXRpb24gc291cmNlPGFkcmVzc2U6cG9ydD4gLT4gZGVzdGluYXRpb248YWRyZXNzZTpwb3J0Pi4KUG91ciBsJ3V0aWxpc2VyLCBwculjaXNlciBsZSBtb2RlIFRDUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKCW1vZGUgdGNwCgpNb2RlIEhUVFAKLS0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMgdW4gb3UgcGx1c2lldXJzCnNlcnZldXJzLCB1bmUgZm9pcyBxdSdpbCBkaXNwb3NlIGQnYXNzZXogZCdpbmZvcm1hdGlvbnMgcG91ciBlbiBwcmVuZHJlIGxhCmTpY2lzaW9uLiBMZXMgZW506nRlcyBIVFRQIHNvbnQgYW5hbHlz6XMgcG91ciB5IHRyb3V2ZXIgdW4g6XZlbnR1ZWwgY29va2llLCBldApjZXJ0YWlucyBkJ2VudHJlLWV1eCBwZXV2ZW50IOp0cmUgbW9kaWZp6XMgcGFyIGxlIGJpYWlzIGQnZXhwcmVzc2lvbnMKculndWxp6HJlcy4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyIGxlIG1vZGUgSFRUUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1CnJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoKTW9kZSBzdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tCklsIHMnYWdpdCBkJ3VuIG1vZGUgb2ZmcmFudCDgIHVuIGNvbXBvc2FudCBleHRlcm5lIHVuZSB2aXNpYmlsaXTpIGRlIGwn6XRhdCBkZQpzYW506SBkdSBzZXJ2aWNlLiBJbCBzZSBjb250ZW50ZSBkZSByZXRvdXJuZXIgIk9LIiDgIHRvdXQgY2xpZW50IHNlIGNvbm5lY3RhbnQKc3VyIHNvbiBwb3J0LiBJbCBwZXV0IOp0cmUgdXRpbGlz6SBhdmVjIGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIOl2b2x16XMgcG91cgpk6XRlcm1pbmVyIHF1ZWxzIHNvbnQgbGVzIHNlcnZpY2VzIHV0aWxpc2FibGVzLiBTaSBsJ29wdGlvbiAnaHR0cGNoaycgZXN0CmFjdGl26WUsIGFsb3JzIGxhIHLpcG9uc2UgY2hhbmdlcmEgZW4gJ0hUVFAvMS4wIDIwMCBPSycgcG91ciBzYXRpc2ZhaXJlIGxlcwphdHRlbnRlcyBkZSBjb21wb3NhbnRzIHNhY2hhbnQgdGVzdGVyIGVuIEhUVFAuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlcgpsZSBtb2RlIEhFQUxUSCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgculwb25zZSBzaW1wbGUgOiAnT0snCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKCW1vZGUgaGVhbHRoCgogICAgIyBy6XBvbnNlIEhUVFAgOiAnSFRUUC8xLjAgMjAwIE9LJwogICAgbGlzdGVuIGh0dHBfaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDEKCW1vZGUgaGVhbHRoCglvcHRpb24gaHR0cGNoawoKCjIuMykgTGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgcGFyYW3odHJlICJtYXhjb25uIiBwZXJtZXQgZGUgZml4ZXIgbGEgbGltaXRlIGFjY2VwdGFibGUgZW4gbm9tYnJlIGRlCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5LiBDaGFxdWUgcHJveHkgcXVpIGF0dGVpbnQgY2V0dGUgdmFsZXVyIGNlc3NlCmQn6WNvdXRlciBqdXNxdSfgIGxpYulyYXRpb24gZCd1bmUgY29ubmV4aW9uLiBWb2lyIHBsdXMgbG9pbiBjb25jZXJuYW50IGxlcwpsaW1pdGF0aW9ucyBsaellcyBhdSBzeXN06G1lLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHRpbnlfc2VydmVyIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwCgoKMi40KSBBcnLqdCBlbiBkb3VjZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZCdhcnLqdGVyIGxlcyBzZXJ2aWNlcyBlbiBkb3VjZXVyIGVuIGVudm95YW50IHVuIHNpZ25hbCBTSUdfVVNSMQphdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlIGQnYXJy6nQsIG1haXMKcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcyBk6WZpbmkgcGFyIGxlCnBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsIGRlIGZhaXJlIHNhdm9pcgpyYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cyB1dGlsaXNlciB1biByZWxhaXMsCnRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbCBzJ2VuIHJlbmRlIGNvbXB0ZS4KUmVtYXJxdWUgOiBsZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLAppbCBmYXVkcmEgYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMuIExhCnZhbGV1ciBwYXIgZOlmYXV0IGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJZ3JhY2UgMTAwMDAKCiAgICAjIGNlIHBvcnQgbidlc3QgdGVzdOkgcXVlIHBhciB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UuCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKCW1vZGUgaGVhbHRoCglncmFjZSAwCgoKMi41KSBUZW1wcyBkJ2V4cGlyYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgY2VydGFpbmVzIGR1cullcyBkJ2V4cGlyYXRpb24gYXUgbml2ZWF1IGRlcwpjb25uZXhpb25zIFRDUC4gVHJvaXMgdGVtcHMgaW5k6XBlbmRhbnRzIHNvbnQgY29uZmlndXJhYmxlcyBldCBhY2NlcHRlbnQgZGVzCnZhbGV1cnMgZW4gbWlsbGlzZWNvbmRlcy4gU2kgbCd1bmUgZGUgY2VzIHRyb2lzIHRlbXBvcmlzYXRpb25zIGVzdCBk6XBhc3PpZSwgbGEKc2Vzc2lvbiBlc3QgdGVybWlu6WUg4CBjaGFxdWUgZXh0cultaXTpLgoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBjbGllbnQsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJjbGl0aW1lb3V0IiA6CgoJIyB0aW1lLW91dCBjbGllbnQg4CAybW4zMC4KCWNsaXRpbWVvdXQJMTUwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJzcnZ0aW1lb3V0IiA6CgoJIyB0aW1lLW91dCBzZXJ2ZXVyIOAgMzBzLgoJc3J2dGltZW91dAkzMDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1cgogICAgImNvbnRpbWVvdXQiIDoKCiAgICAgICAgIyBvbiBhYmFuZG9ubmUgc2kgbGEgY29ubmV4aW9uIG4nZXN0IHBhcyDpdGFibGllIGFwcuhzIDQgc2Vjb25kZXMKCWNvbnRpbWVvdXQJNDAwMAoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtICJjb250aW1lb3V0IiBldCAic3J2dGltZW91dCIgbidvbnQgcGFzIGQndXRpbGl06SBkYW5zIGxlIGNhcyBkdSBzZXJ2ZXVyIGRlCiAgICB0eXBlICJoZWFsdGgiLgogIC0gc291cyBkZSBmb3J0ZXMgY2hhcmdlcywgb3Ugc3VyIHVuIHLpc2VhdSBzYXR1cukgb3UgZOlmZWN0dWV1eCwgaWwgZXN0CiAgICBwb3NzaWJsZSBkZSBwZXJkcmUgZGVzIHBhcXVldHMuIER1IGZhaXQgcXVlIGxhIHByZW1p6HJlIHJldHJhbnNtaXNzaW9uIFRDUAogICAgbidhaXQgbGlldSBxdSdhdSBib3V0IGRlIDMgc2Vjb3VkZXMsIGZpeGVyIHVuIHRpbWVvdXQgZGUgY29ubmV4aW9uIGluZulyaWV1cgogICAg4CAzIHNlY29uZGVzIG5lIHBlcm1ldCBwYXMgZGUgc2UgcmF0dHJhcGVyIHN1ciBsYSBwZXJ0ZSBkZSBwYXF1ZXRzIGNhciBsYQogICAgc2Vzc2lvbiBhdXJhIOl06SBhYmFuZG9ubullIGF2YW50IGxhIHByZW1p6HJlIHJldHJhbnNtaXNzaW9uLiBVbmUgdmFsZXVyIGRlCiAgICA0IHNlY29uZGVzIHLpZHVpcmEgY29uc2lk6XJhYmxlbWVudCBsZSBub21icmUgZCfpY2hlY3MgZGUgY29ubmV4aW9uLgoKMi42KSBUZW50YXRpdmVzIGRlIHJlY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMb3JzIGQndW4g6WNoZWMgZGUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ciwgaWwgZXN0IHBvc3NpYmxlIGRlCnJldGVudGVyIChwb3RlbnRpZWxsZW1lbnQgdmVycyB1biBhdXRyZSBzZXJ2ZXVyLCBlbiBjYXMgZGUgculwYXJ0aXRpb24KZGUgY2hhcmdlKS4gTGUgbm9tYnJlIGRlIG5vdXZlbGxlcyB0ZW50YXRpdmVzIGluZnJ1Y3R1ZXVzZXMgYXZhbnQKYWJhbmRvbiBlc3QgZm91cm5pIHBhciBsZSBwYXJhbeh0cmUgInJldHJpZXMiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoJIyBvbiBlc3NhaWUgZW5jb3JlIHRyb2lzIGZvaXMgbWF4aQoJcmV0cmllcyAzCgoKMi43KSBBZHJlc3NlIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzb250IHJlZGlyaWfpZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGVzdCBk6WZpbmkgcGFyCmxlIHBhcmFt6HRyZSAiZGlzcGF0Y2giIHNvdXMgbGEgZm9ybWUgPGFkcmVzc2VfaXA+Ojxwb3J0Pi4gSWwgY29ycmVzcG9uZCDgIHVuCnNlcnZldXIgZCdhc3NpZ25hdGlvbiBkZSBjb29raWUgZGFucyBsZSBjYXMgb/kgbGUgc2VydmljZSBjb25zaXN0ZSDgIGFzc3VyZXIKdW5pcXVlbWVudCB1bmUgcGVyc2lzdGVuY2UgSFRUUCwgb3UgYmllbiBzaW1wbGVtZW50IGF1IHNlcnZldXIgZGVzdGluYXRpb24gZGFucwpsZSBjYXMgZGUgcmVsYXlhZ2UgVENQIHNpbXBsZS4gQ2V0IGFuY2llbiBtb2RlIG5lIHBlcm1ldCBwYXMgZGUgdGVzdGVyIGwn6XRhdApkdSBzZXJ2ZXVyIGRpc3RhbnQsIGV0IGlsIGVzdCBtYWludGVuYW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciBkZSBwculm6XJlbmNlCmxlIG1vZGUgJ2JhbGFuY2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAJIyBvbiBlbnZvaWUgdG91dGVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBpY2kKCWRpc3BhdGNoIDE5Mi4xNjguMS4yOjgwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KQ2UgcGFyYW3odHJlIG4nYSBwYXMgZCd1dGlsaXTpIHBvdXIgdW4gc2VydmV1ciBlbiBtb2RlICdoZWFsdGgnLCBuaSBlbiBtb2RlCidiYWxhbmNlJy4KCgoyLjgpIEFkcmVzc2UgZGUgc29ydGllCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIGZvcmNlciBsJ2FkcmVzc2UgdXRpbGlz6WUgcG91ciDpdGFibGlyIGxlcyBjb25uZXhpb25zIHZlcnMKbGVzIHNlcnZldXJzIOAgbCdhaWRlIGR1IHBhcmFt6HRyZSAic291cmNlIi4gSWwgZXN0IG3qbWUgcG9zc2libGUgZGUgZm9yY2VyIGxlCnBvcnQsIGJpZW4gcXVlIGNldHRlIGZvbmN0aW9ubmFsaXTpIHNlIGxpbWl0ZSDgIGRlcyB1c2FnZXMgdHLocyBzcOljaWZpcXVlcy4KQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBjYXMgZCdhZHJlc3NhZ2UgbXVsdGlwbGUsIGV0IHBsdXMgZ+lu6XJhbGVtZW50CnBvdXIgcGVybWV0dHJlIGF1eCBzZXJ2ZXVycyBkZSB0cm91dmVyIGxlIGNoZW1pbiBkZSByZXRvdXIgZGFucyBkZXMgY29udGV4dGVzIGRlCnJvdXRhZ2UgZGlmZmljaWxlcy4gU2kgbCdhZHJlc3NlIGVzdCAnMC4wLjAuMCcgb3UgJyonIG91IHZpZGUsIGVsbGUgc2VyYSBjaG9pc2llCmxpYnJlbWVudCBwYXIgbGUgc3lzdGVtZS4gU2kgbGUgcG9ydCBlc3QgJzAnIG91IHZpZGUsIGlsIHNlcmEgY2hvaXNpIGxpYnJlbWVudApwYXIgbGUgc3lzdOhtZS4gSWwgZXN0IOAgbm90ZXIgcXVlIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCwgbGVzIHRlc3RzIGRlIGJvbgpmb25jdGlvbm5lbWVudCBkZXMgc2VydmV1cnMgc2Vyb250IGF1c3NpIGVmZmVjdHXpcyDgIHBhcnRpciBkZSBsYSBzb3VyY2UKc3DpY2lmaellIHBhciBjZSBwYXJhbeh0cmUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5ICo6ODAKICAgCSMgdG91dGVzIGxlcyBjb25uZXhpb25zIHByZW5uZW50IGwnYWRyZXNzZSAxOTIuMTY4LjEuMjAwCglzb3VyY2UgMTkyLjE2OC4xLjIwMDowCgogICAgbGlzdGVuIHJsb2dpbl9wcm94eSAqOjUxMwogICAJIyB1dGlsaXNlciBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMCBldCBsZSBwb3J0IHLpc2VydukgOTAwCglzb3VyY2UgMTkyLjE2OC4xLjIwMDo5MDAKCgoyLjkpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgp2ZXJzIHF1ZWwgc2VydmV1ciBhaWd1aWxsZXIgbGEgcmVxdep0ZSB1dGlsaXNhdGV1ci4gTGUgbm9tIGR1IGNvb2tpZSBlc3QgZG9ubukKcGFyIGxlIHBhcmFt6HRyZSAiY29va2llIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQKCk9uIHBldXQgbW9kaWZpZXIgbCd1dGlsaXNhdGlvbiBkdSBjb29raWUgcG91ciBsYSByZW5kcmUgcGx1cyBpbnRlbGxpZ2VudGUKdmlzLeAtdmlzIGRlcyBhcHBsaWNhdGlvbnMgcmVsYXnpZXMuIElsIGVzdCBwb3NzaWJsZSwgbm90YW1tZW50IGRlIHN1cHByaW1lciBvdQpy6eljcmlyZSB1biBjb29raWUgcmV0b3VybukgcGFyIHVuIHNlcnZldXIgYWNj6WTpIGVuIGRpcmVjdCwgZXQgZCdpbnPpcmVyIHVuCmNvb2tpZSBkYW5zIHVuZSBy6XBvbnNlIEhUVFAgYWRyZXNz6WUg4CB1biBzZXJ2ZXVyIHPpbGVjdGlvbm7pIGVuIHLpcGFydGl0aW9uCmRlIGNoYXJnZSwgZXQgbeptZSBkZSBzaWduYWxlciBhdXggcHJveGllcyBhbW9udCBkZSBuZSBwYXMgY2FjaGVyIGxlIGNvb2tpZQppbnPpcukuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KClBvdXIgbmUgY29uc2VydmVyIGxlIGNvb2tpZSBxdSdlbiBhY2PocyBpbmRpcmVjdCwgZG9uYyDgIHRyYXZlcnMgbGUKZGlzcGF0Y2hldXIsIGV0IHN1cHByaW1lciB0b3V0ZXMgc2VzIOl2ZW50dWVsbGVzIG9jY3VyZW5jZXMgbG9ycyBkZXMgYWNj6HMKZGlyZWN0cyA6CgoJY29va2llIFNFUlZFUklEIGluZGlyZWN0CgpQb3VyIHJlbXBsYWNlciBsYSB2YWxldXIgZCd1biBjb29raWUgZXhpc3RhbnQgcGFyIGNlbGxlIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIsCmxvcnMgZCd1biBhY2PocyBkaXJlY3QgOgoKCWNvb2tpZSBTRVJWRVJJRCByZXdyaXRlCgpQb3VyIGNy6WVyIHVuIGNvb2tpZSBjb21wb3J0YW50IGxhIHZhbGV1ciBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyIGxvcnMgZCd1biBhY2PocwplbiBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBzb3VoYWl0YWJsZSBxdWUgdG91cyBsZXMKc2VydmV1cnMgYWllbnQgdW4gY29va2llIHJlbnNlaWdu6S4gVW4gc2VydmV1ciBub24gYXNzaWdu6SBkJ3VuIGNvb2tpZQpyZXRvdXJuZXJhIHVuIGNvb2tpZSB2aWRlIChjb29raWUgZGUgc3VwcHJlc3Npb24pIDoKCgljb29raWUgU0VSVkVSSUQgaW5zZXJ0CgpQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKYWpvdXRlciBsZSBtb3QgY2zpICdub2NhY2hlJyBhcHLocyAnaW5zZXJ0JyA6CgoJY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlCgpQb3VyIGluc+lyZXIgdW4gY29va2llIHNldWxlbWVudCBzdWl0ZSBhdXggcmVxdep0ZXMgZGUgdHlwZSBQT1NULCBham91dGVyIGxlIG1vdApjbOkgJ3Bvc3Rvbmx5JyBhcHLocyAnaW5zZXJ0JyA6CgoJY29va2llIFNFUlZFUklEIGluc2VydCBwb3N0b25seQoKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCi0gSWwgZXN0IHBvc3NpYmxlIGRlIGNvbWJpbmVyICdpbnNlcnQnIGF2ZWMgJ2luZGlyZWN0JyBvdSAncmV3cml0ZScgcG91ciBzJ2FkYXB0ZXIKICDgIGRlcyBhcHBsaWNhdGlvbnMgZ+lu6XJhbnQgZOlq4CBsZSBjb29raWUsIGF2ZWMgdW4gY29udGVudSBpbnZhbGlkZS4gSWwgc3VmZml0CiAgcG91ciBjZWxhIGRlIGxlcyBzcOljaWZpZXIgc3VyIGxhIG3qbWUgbGlnbmUuCgotIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICB0cmFuc21pcyBhdSBzZXJ2ZXVyIHZ1IHF1J2lsIG4nZW4gYSBwYXMgY29ubmFpc3NhbmNlIGV0IG5lIHBvdXJyYWl0IHBhcyBsZQogIGNvbXByZW5kcmUuCgotIGlsIGVzdCBwYXJ0aWN1bGnocmVtZW50IHJlY29tbWFuZOkgZCd1dGlsaXNlciAnbm9jYWNoZScgZW4gbW9kZSBpbnNlcnRpb24gc2kKICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCiAgbGUgY2FzIGNvbnRyYWlyZSwgdW4gY2FjaGUgSFRUUCAxLjAgcG91cnJhaXQgY2FjaGVyIGxhIHLpcG9uc2UsIGluY2x1YW50IGxlCiAgY29va2llIGRlIHBlcnNpc3RlbmNlIGluc+ly6SwgZG9uYyBwcm92b3F1ZXIgZGVzIGNoYW5nZW1lbnRzIGRlIHNlcnZldXJzIHBvdXIKICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCgotIGxvcnNxdWUgbCdhcHBsaWNhdGlvbiBlc3QgYmllbiBjb25udWUsIGV0IHF1ZSBsZXMgcGFydGllcyBu6WNlc3NpdGFudCBkZSBsYQogIHBlcnNpc3RlbmNlIHNvbnQgc3lzdOltYXRpcXVlbWVudCBhY2PpZOllcyBwYXIgdW4gZm9ybXVsYWlyZSBlbiBtb2RlIFBPU1QsCiAgaWwgZXN0IHBsdXMgZWZmaWNhY2UgZW5jb3JlIGRlIGNvbWJpbmVyIGxlIG1vdCBjbOkgInBvc3Rvbmx5IiBhdmVjICJpbnNlcnQiCiAgZXQgImluZGlyZWN0IiwgY2FyIGxhIHBhZ2UgZCdhY2N1ZWlsIHJlc3RlIGNhY2hhYmxlLCBldCBjJ2VzdCBsJ2FwcGxpY2F0aW9uCiAgcXVpIGfocmUgbGUgJ2NhY2hlLWNvbnRyb2wnLgoKMi4xMCkgQXNzaWduYXRpb24gZCd1biBzZXJ2ZXVyIOAgdW5lIHZhbGV1ciBkZSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkJ2Fzc29jaWVyIGRlcyB2YWxldXJzIGRlIGNvb2tpZSDgIGRlcyBzZXJ2ZXVycwpwYXIgbGUgcGFyYW3odHJlICdzZXJ2ZXInLiBMYSBzeW50YXhlIGVzdCA6CgogICAgc2VydmVyIDxpZGVudGlmaWFudD4gPGFkcmVzc2VfaXA+Ojxwb3J0PiBjb29raWUgPHZhbGV1cj4KCi0gPGlkZW50aWZpYW50PiBlc3QgdW4gbm9tIHF1ZWxjb25xdWUgZGUgc2VydmV1ciB1dGlsaXPpIHBvdXIgbCdpZGVudGlmaWVyIGRhbnMgbGEKICBjb25maWd1cmF0aW9uIGV0IGxlcyBsb2dzLgotIDxhZHJlc3NlX2lwPjo8cG9ydD4gZXN0IGxlIGNvdXBsZSBhZHJlc3NlLXBvcnQgc3VyIGxlcXVlbCBsZSBzZXJ2ZXVyIOljb3V0ZS4KLSA8dmFsZXVyPiBlc3QgbGEgdmFsZXVyIOAgcmVjb25uYe50cmUgb3UgcG9zaXRpb25uZXIgZGFucyBsZSBjb29raWUuCgpFeGVtcGxlIDogbGUgY29va2llIFNFUlZFUklEIHBldXQgY29udGVuaXIgc2VydmVyMDEgb3Ugc2VydmVyMDIKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECglkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gRW4gdmVyc2lvbiAxLjEuOSwKc2V1bCAncm91bmRyb2JpbicgZXN0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyIGTpZmF1dC4gSWwKZXN0IOl2aWRlbnQgcXUnZW4gY2FzIGQndXRpbGlzYXRpb24gZHUgculwYXJ0aXRldXIgaW50ZXJuZSwgaWwgbmUgZmF1ZHJhIHBhcwpzcOljaWZpZXIgZCdhZHJlc3NlIGRlIGRpc3BhdGNoLCBldCBxdSdpbCBmYXVkcmEgYXUgbW9pbnMgdW4gc2VydmV1ci4KCkV4ZW1wbGUgOiBt6m1lIHF1ZSBwculj6WRlbW1lbnQgZW4gculwYXJ0aXRpb24gaW50ZXJuZQotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2Ugc2ltdWx0YW7pIGRlcyBwb3J0cyA4MCBldCA4MSBldCA4MDgwLTgwODkKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAsOjgxLDo4MDgwLTgwODkKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIFRDUCBkZXMgcG9ydHMgMjUsIDM4OSBldCA2NjMgdmVycyBsZXMgcG9ydHMgMTAyNSwgMTM4OSBldCAxNjYzCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDozODksOjY2MwoJbW9kZSB0Y3AKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzEwMDAKCXNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOisxMDAwCgoKMy4xKSBTdXJ2ZWlsbGFuY2UgZGVzIHNlcnZldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgdGVzdGVyIGwn6XRhdCBkZXMgc2VydmV1cnMgcGFyIOl0YWJsaXNzZW1lbnQgZGUgY29ubmV4aW9uIFRDUApvdSBwYXIgZW52b2kgZCd1bmUgcmVxdep0ZSBIVFRQLiBVbiBzZXJ2ZXVyIGhvcnMgZCd1c2FnZSBuZSBzZXJhIHBhcyB1dGlsaXPpCmRhbnMgbGUgcHJvY2Vzc3VzIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBQb3VyIGFjdGl2ZXIgbGEgc3VydmVpbGxhbmNlLApham91dGVyIGxlIG1vdCBjbOkgJ2NoZWNrJyDgIGxhIGZpbiBkZSBsYSBk6WNsYXJhdGlvbiBkdSBzZXJ2ZXVyLiBJbCBlc3QKcG9zc2libGUgZGUgc3DpY2lmaWVyIGwnaW50ZXJ2YWxsZSAoZW4gbWlsbGlzZWNvbmRlcykgc+lwYXJhbnQgZGV1eCB0ZXN0cyBkdQpzZXJ2ZXVyIHBhciBsZSBwYXJhbeh0cmUgImludGVyIiwgbGUgbm9tYnJlIGQn6WNoZWNzIGFjY2VwdOlzIHBhciBsZSBwYXJhbeh0cmUKImZhbGwiLCBldCBsZSBub21icmUgZGUgc3VjY+hzIGF2YW50IHJlcHJpc2UgcGFyIGxlIHBhcmFt6HRyZSAicmlzZSIuIExlcwpwYXJhbeh0cmVzIG5vbiBwculjaXPpcyBwcmVubmVudCBsZXMgdmFsZXVycyBzdWl2YW50ZXMgcGFyIGTpZmF1dCA6CiAtIGludGVyIDogMjAwMAogLSByaXNlICA6IDIKIC0gZmFsbCAgOiAzCiAtIHBvcnQgIDogcG9ydCBkZSBjb25uZXhpb24gZHUgc2VydmV1cgoKTGUgbW9kZSBwYXIgZOlmYXV0IGNvbnNpc3RlIOAg6XRhYmxpciBkZXMgY29ubmV4aW9ucyBUQ1AgdW5pcXVlbWVudC4gRGFucwpjZXJ0YWlucyBjYXMgZGUgcGFubmVzLCBkZXMgc2VydmV1cnMgcGV1dmVudCBjb250aW51ZXIg4CBhY2NlcHRlciBsZXMgY29ubmV4aW9ucwpzYW5zIGxlcyB0cmFpdGVyLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTYsIGhhcHJveHkgZXN0IGVuIG1lc3VyZSBkJ2Vudm95ZXIgZGVzCnJlcXXqdGVzIEhUVFAgY291cnRlcyBldCB0cuhzIHBldSBjb/t0ZXVzZXMuIExlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgMS4xLjE3CnV0aWxpc2VudCAiT1BUSU9OUyAvIEhUVFAvMS4wIi4gRGFucyBsZXMgdmVyc2lvbnMgMS4xLjE4IOAgMS4xLjIwLCBsZXMgcmVxdep0ZXMKb250IOl06SBjaGFuZ+llcyBlbiAiT1BUSU9OUyAqIEhUVFAvMS4wIiBwb3VyIGRlcyByYWlzb25zIGRlIGNvbnRy9GxlIGQnYWNj6HMgYXV4CnJlc3NvdXJjZXMuIENlcGVuZGFudCwgY2V0dGUgcmVxdep0ZSBkb2N1bWVudOllIGRhbnMgbGEgUkZDMjA2OCBuJ2VzdCBwYXMKY29tcHJpc2UgcGFyIHRvdXMgbGVzIHNlcnZldXJzLiBEb25jIOAgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4xLjIxLCBsYSByZXF16nRlCnBhciBk6WZhdXQgZXN0IHJldmVudWUg4CAiT1BUSU9OUyAvIEhUVFAvMS4wIiwgbWFpcyBpbCBlc3QgcG9zc2libGUgZGUKcGFyYW3pdHJlciBsYSBwYXJ0aWUgVVJJLiBMZXMgcmVxdep0ZXMgT1BUSU9OUyBwculzZW50ZW50IGwnYXZhbnRhZ2UgZCfqdHJlCmZhY2lsZW1lbnQgZXh0cmFjdGlibGVzIGRlcyBsb2dzLCBldCBkZSBuZSBwYXMgaW5kdWlyZSBkJ2FjY+hzIGF1eCBmaWNoaWVycyBj9HTpCnNlcnZldXIuIFNldWxlcyBsZXMgculwb25zZXMgMnh4IGV0IDN4eCBzb250IGNvbnNpZOly6WVzIHZhbGlkZXMsIGxlcyBhdXRyZXMgKHkKY29tcHJpcyBub24tculwb25zZXMpIGFib3V0aXNzZW50IOAgdW4g6WNoZWMuIExlIHRlbXBzIG1heGltYWwgaW1wYXJ0aSBwb3VyIHVuZQpy6XBvbnNlIGVzdCDpZ2FsIOAgbCdpbnRlcnZhbGxlIGVudHJlIGRldXggdGVzdHMgKHBhcmFt6HRyZSAiaW50ZXIiKS4gUG91cgphY3RpdmVyIGNlIG1vZGUsIHNw6WNpZmllciBsJ29wdGlvbiAiaHR0cGNoayIsIOl2ZW50dWVsbGVtZW50IHN1aXZpZSBkJ3VuZQpt6XRob2RlIGV0IGQndW5lIFVSSS4gTCdvcHRpb24gImh0dHBjaGsiIGFjY2VwdGUgZG9uYyA0IGZvcm1lcyA6CiAgLSBvcHRpb24gaHR0cGNoayAgICAgICAgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgVVJJICAgICAgICAgICAtPiBPUFRJT05TIDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSAgICAgIC0+IDxNRVRIPiA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KVm9pciBsZXMgZXhlbXBsZXMgY2ktYXBy6HMuCQoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3Vycy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycwpwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMgZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsCmlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlciBkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZQpyZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3TpcyBk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlCmRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlIHF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsCmNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50IGwn6XRhdApjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR0hVUCBhdQpwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdCBlbnZveekgZGFucwpsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaSBlbGxlIGVzdAphY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MgbG9jYWwgZW4Kbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQojIGNvbmYgZHUgcGFyYWdyYXBoZSAzKSBhdmVjIHN1cnZlaWxsYW5jZSBUQ1AKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQKCWJhbGFuY2Ugcm91bmRyb2JpbgoJb3B0aW9uIGh0dHBjaGsKCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvaW5kZXguaHRtbCBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCW9wdGlvbiBodHRwY2hrIC9pbmRleC5odG1sCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBpZGVtIGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6IHd3dycKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECgliYWxhbmNlIHJvdW5kcm9iaW4KCW9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgSW5zZXJ0aW9uIGF1dG9tYXRpcXVlIGRlIGNvb2tpZSBkYW5zIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgZXQgc3VwcHJlc3Npb24KIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUsIHRvdXQgZW4gaW5kaXF1YW50IGF1eCBjYWNoZXMgZGUgbmUgcGFzIGdhcmRlcgojIGNlIGNvb2tpZS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAoJYmFsYW5jZSByb3VuZHJvYmluCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKIyBpZGVtIGF2ZWMgc2VydmV1ciBhcHBsaWNhdGlmIGRlIHNlY291cnMgc3VyIGF1dHJlIHNpdGUsIGV0IHNlcnZldXIgZGUgcGFnZXMgZCdlcnJldXJzCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAoJbW9kZSBodHRwCgljb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKCWJhbGFuY2Ugcm91bmRyb2JpbgoJc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCglzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCXNlcnZlciB3ZWItYmFja3VwIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwMyBjaGVjayBiYWNrdXAKCXNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKIyByZWxheWFnZSBTTVRQK1RMUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6NTg3Cgltb2RlIHRjcAoJYmFsYW5jZSByb3VuZHJvYmluCglzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDI1IGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKCXNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKCjMuMikgUmVjb25uZXhpb24gdmVycyB1biBy6XBhcnRpdGV1ciBlbiBjYXMgZCfpY2hlYyBkaXJlY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIHNpIHVuIHNlcnZldXIgZOlmaW5pIHBhciB1biBjb29raWUgbmUgculwb25kIHBsdXMsIGxlcyBjbGllbnRzCnNlcm9udCBk6WZpbml0aXZlbWVudCBhaWd1aWxs6XMgZGVzc3VzIOAgY2F1c2UgZGUgbGV1ciBjb29raWUsIGV0IGRlIGNlIGZhaXQsCmTpZmluaXRpdmVtZW50IHByaXbpcyBkZSBzZXJ2aWNlLiBMYSBzcOljaWZpY2F0aW9uIGR1IHBhcmFt6HRyZSAncmVkaXNwYXRjaCcKYXV0b3Jpc2UgZGFucyBjZSBjYXMg4CByZW52b3llciBsZXMgY29ubmV4aW9ucyDpY2hvdellcyB2ZXJzIGxlIHLpcGFydGl0ZXVyCihleHRlcm5lIG91IGludGVybmUpIGFmaW4gZCdhc3NpZ25lciB1biBub3V2ZWF1IHNlcnZldXIg4CBjZXMgY2xpZW50cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklECglkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCglzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKCXNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoJcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgcmVmdXMgZGUgY29ubmV4aW9uLgoKUGFyIGTpZmF1dCAoZXQgZGFucyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzKSwgbGUgcGFyYW3odHJlIHJlZGlzcGF0Y2gKbmUgcydhcHBsaXF1ZSBxdSdhdXgg6WNoZWNzIGRlIGNvbm5leGlvbiBhdSBzZXJ2ZXVyLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsCmlsIHMnYXBwbGlxdWUgYXVzc2kgYXV4IGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgZGVzIHNlcnZldXJzIGlkZW50aWZp6XMgY29tbWUKaG9ycyBkJ3VzYWdlIHBhciBsYSBzdXJ2ZWlsbGFuY2UuIFNpIGwnb24gc291aGFpdGUgbWFsZ3LpIHRvdXQgcXUndW4gY2xpZW50CmRpc3Bvc2FudCBkJ3VuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBk6WZlY3R1ZXV4IHRlbnRlIGRlIHMneQpjb25uZWN0ZXIsIGlsIGZhdXQgcHLpY2lzZXIgbCdvcHRpb24gInBlcnNpc3QiIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCW9wdGlvbiBwZXJzaXN0Cgljb29raWUgU0VSVkVSSUQKCWRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKCXNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQoJc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCglyZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSBzZXJ2ZXVyIEhTLgoKCjQpIEZvbmN0aW9ubmFsaXTpcyBhZGRpdGlvbm5lbGxlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkQnYXV0cmVzIGZvbmN0aW9ubmFsaXTpcyBkJ3VzYWdlIG1vaW5zIGNvdXJhbnQgc29udCBkaXNwb25pYmxlcy4gSWwgcydhZ2l0CnByaW5jaXBhbGVtZW50IGR1IG1vZGUgdHJhbnNwYXJlbnQsIGRlIGxhIGpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zLCBldCBkZQpsYSBy6eljcml0dXJlIGRlcyBlbnTqdGVzLgoKNC4xKSBGb25jdGlvbm5lbWVudCBlbiBtb2RlIHRyYW5zcGFyZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGxlIG1vdCBjbOkgJ3RyYW5zcGFyZW50JyBwZXJtZXQgZCdpbnRlcmNlcHRlciBkZXMgc2Vzc2lvbnMgcm91dOllcwrgIHRyYXZlcnMgbGEgbWFjaGluZSBo6WJlcmdlYW50IGxlIHByb3h5LiBEYW5zIGNlIG1vZGUsIG9uIG5lIHBy6WNpc2UgcGFzCmwnYWRyZXNzZSBkZSBy6XBhcnRpdGlvbiAnZGlzcGF0Y2gnLCBjYXIgY2VsbGUtY2kgZXN0IHRpcullIGRlIGwnYWRyZXNzZQpkZXN0aW5hdGlvbiBkZSBsYSBzZXNzaW9uIGTpdG91cm7pZS4gTGUgc3lzdOhtZSBkb2l0IHBlcm1ldHRyZSBkZSByZWRpcmlnZXIgbGVzCnBhcXVldHMgdmVycyB1biBwcm9jZXNzdXMgbG9jYWwuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCgltb2RlIGh0dHAKCXRyYW5zcGFyZW50Cgljb29raWUgU0VSVkVSSUQKCXNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MAoJc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0IGFkcmVzc+kKbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQIGQndW5lIG3qbWUKYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZSB0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKCW1vZGUgdGNwCglzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwMAoJc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+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/KQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQoJb3B0aW9uCQlodHRwY2xvcwoKCSMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuCgpFbmZpbiwgbCdvcHRpb24gJ2h0dHBjbG9zZScgYXBwYXJ1ZSBkYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xIHN1cHByaW1lIHRvdXQKZW506nRlIGRlIHR5cGUgJ0Nvbm5lY3Rpb246JyBldCBham91dGUgJ0Nvbm5lY3Rpb246IGNsb3NlJyBkYW5zIGxlcyBkZXV4IHNlbnMuCkNlY2kgc2ltcGxpZmllIGxhIGTpc2FjdGl2YXRpb24gZHUga2VlcC1hbGl2ZSBIVFRQIHBhciByYXBwb3J0IOAgbCdhbmNpZW5uZQpt6XRob2RlIGltcGxpcXVhbnQgNCBy6GdsZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCgltb2RlIGh0dHAKCWxvZyAgZ2xvYmFsCglvcHRpb24gaHR0cGxvZwoJb3B0aW9uIGRvbnRsb2dudWxsCglvcHRpb24gZm9yd2FyZGZvcgoJb3B0aW9uIGh0dHBjbG9zZQoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKCW1vZGUgaHR0cAoJY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CgliYWxhbmNlIHJvdW5kcm9iaW4KCXNlcnZlciAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKCXNlcnZlciAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCjQuNSkgUHJvdGVjdGlvbiBjb250cmUgbGVzIGZ1aXRlcyBkJ2luZm9ybWF0aW9ucyBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGVzIHZlcnNpb25zIDEuMS4yOCBldCAxLjIuMSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnY2hlY2tjYWNoZScgYSDpdOkgY3Lp6WUuCkVsbGUgc2VydCDgIGluc3BlY3RlciBtaW51dGlldXNlbWVudCBsZXMgZW506nRlcyAnQ2FjaGUtY29udHJvbCcsICdQcmFnbWEnLCBldAonU2V0LWNvb2tpZScgZGFucyBsZXMgculwb25zZXMgc2VydmV1ciBwb3VyIGTpdGVybWluZXIgcydpbCB5IGEgdW4gcmlzcXVlIGRlCmNhY2hlciB1biBjb29raWUgc3VyIHVuIHByb3h5IGP0dOkgY2xpZW50LiBRdWFuZCBjZXR0ZSBvcHRpb24gZXN0IGFjdGl26WUsIGxlcwpzZXVsZXMgculwb25zZXMgcXVpIHBldXZlbnQg6nRyZSByZXRvdXJu6WVzIGF1IGNsaWVudCBzb250IDoKICAtIHRvdXRlcyBjZWxsZXMgcXVpIG4nb250IHBhcyBkJ2VudOp0ZSAnU2V0LWNvb2tpZScgOwogIC0gdG91dGVzIGNlbGxlcyBxdWkgb250IHVuIGNvZGUgZGUgcmV0b3VyIGF1dHJlIHF1ZSAyMDAsIDIwMywgMjA2LCAzMDAsIDMwMSwgCiAgICA0MTAsIHNhdWYgc2kgbGUgc2VydmVyIGEgcG9zaXRpb25u6SB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBmb250IHN1aXRlIOAgdW5lIHJlcXXqdGUgUE9TVCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6QogICAgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnUHJhZ21hOiBuby1jYWNoZScgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBwcml2YXRlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW506nRlICdDYWNoZS1jb250cm9sOiBuby1zdG9yZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogbWF4LWFnZT0wJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IHMtbWF4YWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVudOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUiJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbnTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llLCcKICAgIChhdXRvcmlzYW50IGQnYXV0cmVzIGNoYW1wcyBhcHLocyBzZXQtY29va2llKS4KClNpIHVuZSBy6XBvbnNlIG5lIHJlc3BlY3RlIHBhcyBjZXMgcHLpLXJlcXVpcywgYWxvcnMgZWxsZSBzZXJhIGJsb3F16WUgZGUgbGEKbeptZSBtYW5p6HJlIHF1ZSBzJ2lsIHMnYWdpc3NhaXQgZCd1biBmaWx0cmUgJ3JzcGRlbnknLCBhdmVjIGVuIHJldG91ciB1bgptZXNzYWdlICJIVFRQIDUwMiBiYWQgZ2F0ZXdheSIuIEwn6XRhdCBkZSBzZXNzaW9uIG1vbnRyZSAiUEgtLSIgY2UgcXVpIHZldXQKZGlyZSBxdWUgYydlc3QgbGUgcHJveHkgcXVpIGEgYmxvcXXpIGxhIHLpcG9uc2UgZHVyYW50IGxlIHRyYWl0ZW1lbnQgZGVzCmVudOp0ZXMuIERlIHBsdXMsIHVuIG1lc3NhZ2UgZCdhbGVydGUgc2VyYSBlbnZveekgZGFucyBsZXMgbG9ncyBkZSBzb3J0ZSBxdWUKbCdhZG1pbmlzdHJhdGV1ciBzYWNoZSBxdSdpbCB5IGEgdW5lIGFjdGlvbiBjb3JyZWN0cmljZSDgIGVudHJlcHJlbmRyZS4KCjQuNikgUGVyc29uYWxpc2F0aW9uIGRlcyBlcnJldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5lcyBzaXR1YXRpb25zIGNvbmR1aXNlbnQg4CByZXRvdXJuZXIgdW5lIGVycmV1ciBIVFRQIGF1IGNsaWVudCA6CiAgLSByZXF16nRlIGludmFsaWRlIG91IHRyb3AgbG9uZ3VlID0+IGNvZGUgSFRUUCA0MDAKICAtIHJlcXXqdGUgbWV0dGFudCB0cm9wIGRlIHRlbXBzIOAgdmVuaXIgPT4gY29kZSBIVFRQIDQwOAogIC0gcmVxdep0ZSBpbnRlcmRpdGUgKGJsb3F16WUgcGFyIHVuIHJlcWlkZW55KSA9PiBjb2RlIEhUVFAgNDAzCiAgLSBlcnJldXIgaW50ZXJuZSBkdSBwcm94eSA9PiBjb2RlIEhUVFAgNTAwCiAgLSBsZSBzZXJ2ZXVyIGEgcmV0b3VybukgdW5lIHLpcG9uc2UgaW5jb21wbOh0ZSBvdSBpbnZhbGlkZSA9PiBjb2RlIEhUVFAgNTAyCiAgLSBhdWN1biBzZXJ2ZXVyIGRpc3BvbmlibGUgcG91ciBjZXR0ZSByZXF16nRlID0+IGNvZGUgSFRUUCA1MDMKICAtIGxlIHNlcnZldXIgbidhIHBhcyBy6XBvbmR1IGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSA9PiBjb2RlIEhUVFAgNTA0CgpVbiBtZXNzYWdlIGQnZXJyZXVyIHN1Y2NpbnQgdGly6SBkZSBsYSBSRkMgYWNjb21wYWduZSBjZXMgY29kZXMgZGUgcmV0b3VyLgpDZXBlbmRhbnQsIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2xpZW506GxlLCBvbiBwZXV0IHBy6WbpcmVyIHJldG91cm5lciBkZXMKcGFnZXMgcGVyc29ubmFsaXPpZXMuIENlY2kgZXN0IHBvc3NpYmxlIHBhciBsZSBiaWFpcyBkZSBsYSBjb21tYW5kZSAiZXJyb3Jsb2MiIDoKCiAgICBlcnJvcmxvYyA8Y29kZV9IVFRQPiA8bG9jYXRpb24+CgpBdSBsaWV1IGRlIGfpbulyZXIgdW5lIGVycmV1ciBIVFRQIDxjb2RlX0hUVFA+IHBhcm1pIGxlcyBjb2RlcyBjaXTpcyBjaS1kZXNzdXMsCmxlIHByb3h5IGfpbuhyZXJhIHVuIGNvZGUgZGUgcmVkaXJlY3Rpb24gdGVtcG9yYWlyZSAoSFRUUCAzMDIpIHZlcnMgbCdhZHJlc3NlCmQndW5lIHBhZ2UgcHLpY2lz6WUgZGFucyA8bG9jYXRpb24+LiBDZXR0ZSBhZHJlc3NlIHBldXQg6nRyZSByZWxhdGl2ZSBhdSBzaXRlLApvdSBhYnNvbHVlLiBDb21tZSBjZXR0ZSBy6XBvbnNlIGVzdCB0cmHudOllIHBhciBsZSBuYXZpZ2F0ZXVyIGR1IGNsaWVudApsdWktbeptZSwgaWwgZXN0IGluZGlzcGVuc2FibGUgcXVlIGwnYWRyZXNzZSBmb3VybmllIGx1aSBzb2l0IGFjY2Vzc2libGUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIGVycm9ybG9jIDQwMCAvYmFkcmVxdWVzdC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDAzIC9mb3JiaWRkZW4uaHRtbAogICAgICAgIGVycm9ybG9jIDQwOCAvdG9vbG9uZy5odG1sCgllcnJvcmxvYyA1MDAgaHR0cDovL2hhcHJveHkuZG9tYWluLm5ldC9idWdyZXBvcnQuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMiBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwMyBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAogICAgICAgIGVycm9ybG9jIDUwNCBodHRwOi8vMTkyLjE2OC4xMTQuNTgvZXJyb3I1MHguaHRtbAoKNC43KSBDaGFuZ2VtZW50IGRlcyB2YWxldXJzIHBhciBk6WZhdXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsYSB2ZXJzaW9uIDEuMS4yMiBlc3QgYXBwYXJ1ZSBsYSBub3Rpb24gZGUgdmFsZXVycyBwYXIgZOlmYXV0LCBjZSBxdWkg6XZpdGUKZGUgculw6XRlciBkZXMgcGFyYW3odHJlcyBjb21tdW5zIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMsIHRlbHMgcXVlIGxlcyB0aW1lb3V0cywKYWRyZXNzZXMgZGUgbG9nLCBtb2RlcyBkZSBmb25jdGlvbm5lbWVudCwgZXRjLgoKTGVzIHZhbGV1cnMgcGFyIGTpZmF1dCBzb250IHBvc2l0aW9ubullcyBkYW5zIGxhIGRlcm5p6HJlIHNlY3Rpb24gJ2RlZmF1bHRzJwpwculj6WRlbnQgbCdpbnN0YW5jZSBxdWkgbGVzIHV0aWxpc2VyYS4gT24gcGV1dCBkb25jIG1ldHRyZSBhdXRhbnQgZGUgc2VjdGlvbnMKJ2RlZmF1bHRzJyBxdWUgbCdvbiB2ZXV0LiBJbCBmYXV0IGp1c3RlIHNlIHJhcHBlbGVyIHF1ZSBsYSBwculzZW5jZSBkJ3VuZSB0ZWxsZQpzZWN0aW9uIGltcGxpcXVlIHVuZSBhbm51bGF0aW9uIGRlIHRvdXMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBwb3NpdGlvbm7pcwpwculj6WRlbW1lbnQsIGRhbnMgbGUgYnV0IGRlIGxlcyByZW1wbGFjZXIuCgpMYSBzZWN0aW9uICdkZWZhdWx0cycgdXRpbGlzZSBsYSBt6m1lIHN5bnRheGUgcXVlIGxhIHNlY3Rpb24gJ2xpc3RlbicsIGF1eApwYXJhbeh0cmVzIHBy6HMgcXVpIG5lIHNvbnQgcGFzIHN1cHBvcnTpcy4gTGUgbW90IGNs6SAnZGVmYXVsdHMnIHBldXQgYWNjZXB0ZXIKdW4gY29tbWVudGFpcmUgZW4gZ3Vpc2UgcGFyYW3odHJlLgoKRGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSwgc2V1bHMgbGVzIHBhcmFt6HRyZXMgc3VpdmFudHMgcGV1dmVudCDqdHJlCnBvc2l0aW9ubulzIGRhbnMgdW5lIHNlY3Rpb24gJ2RlZmF1bHRzJyA6CiAgLSBsb2cgKGxlIHByZW1pZXIgZXQgbGUgc2Vjb25kKQogIC0gbW9kZSB7IHRjcCwgaHR0cCwgaGVhbHRoIH0KICAtIGJhbGFuY2UgeyByb3VuZHJvYmluIH0KICAtIGRpc2FibGVkIChwb3VyIGTpc2FjdGl2ZXIgdG91dGVzIGxlcyBpbnN0YW5jZXMgcXVpIHN1aXZlbnQpCiAgLSBlbmFibGVkIChwb3VyIGZhaXJlIGwnb3DpcmF0aW9uIGludmVyc2UsIG1haXMgYydlc3QgbGUgY2FzIHBhciBk6WZhdXQpCiAgLSBjb250aW1lb3V0LCBjbGl0aW1lb3V0LCBzcnZ0aW1lb3V0LCBncmFjZSwgcmV0cmllcywgbWF4Y29ubgogIC0gb3B0aW9uIHsgcmVkaXNwYXRjaCwgdHJhbnNwYXJlbnQsIGtlZXBhbGl2ZSwgZm9yd2FyZGZvciwgbG9nYXNhcCwgaHR0cGNsb3NlLAogICAgICAgICAgICAgY2hlY2tjYWNoZSwgaHR0cGxvZywgdGNwbG9nLCBkb250bG9nbnVsbCwgcGVyc2lzdCwgaHR0cGNoayB9CiAgLSByZWRpc3BhdGNoLCByZWRpc3AsIHRyYW5zcGFyZW50LCBzb3VyY2UgeyBhZGRyOnBvcnQgfQogIC0gY29va2llLCBjYXB0dXJlCiAgLSBlcnJvcmxvYwoKTmUgc29udCBwYXMgc3VwcG9ydOlzIGRhbnMgY2V0dGUgdmVyc2lvbiwgbGVzIGFkcmVzc2VzIGRlIGRpc3BhdGNoIGV0IGxlcwpjb25maWd1cmF0aW9ucyBkZSBzZXJ2ZXVycywgYWluc2kgcXVlIHRvdXMgbGVzIGZpbHRyZXMgYmFz6XMgc3VyIGxlcwpleHByZXNzaW9ucyBy6Wd1bGnocmVzIDoKICAtIGRpc3BhdGNoLCBzZXJ2ZXIsCiAgLSByZXEqLCByc3AqCgpFbmZpbiwgaWwgbid5IGEgcGFzIGxlIG1veWVuLCBwb3VyIGxlIG1vbWVudCwgZCdpbnZhbGlkZXIgdW4gcGFyYW3odHJlIGJvb2zpZW4KcG9zaXRpb25u6SBwYXIgZOlmYXV0LiBEb25jIHNpIHVuZSBvcHRpb24gZXN0IHNw6WNpZmnpZSBkYW5zIGxlcyBwYXJhbeh0cmVzIHBhcgpk6WZhdXQsIGxlIHNldWwgbW95ZW4gZGUgbGEgZOlzYWN0aXZlciBwb3VyIHVuZSBpbnN0YW5jZSwgYydlc3QgZGUgY2hhbmdlciBsZXMKcGFyYW3odHJlcyBwYXIgZOlmYXV0IGF2YW50IGxhIGTpY2xhcmF0aW9uIGRlIGwnaW5zdGFuY2UuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBUQ1AKCWxvZyBnbG9iYWwKCW1vZGUgdGNwCgliYWxhbmNlIHJvdW5kcm9iaW4KCWNsaXRpbWVvdXQgMTgwMDAwCglzcnZ0aW1lb3V0IDE4MDAwMAoJY29udGltZW91dCA0MDAwCglyZXRyaWVzIDMKCXJlZGlzcGF0Y2gKCiAgICBsaXN0ZW4gYXBwX3RjcDEgMTAuMC4wLjE6NjAwMC02MDYzCglzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKCXNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKCXNlcnZlciBzcnYxIDE5Mi4xNjguMi4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAoJc2VydmVyIHNydjIgMTkyLjE2OC4yLjIgYmFja3VwCiAgICAKICAgIGRlZmF1bHRzIGFwcGxpY2F0aW9ucyBIVFRQCglsb2cgZ2xvYmFsCgltb2RlIGh0dHAKCW9wdGlvbiBodHRwbG9nCglvcHRpb24gZm9yd2FyZGZvcgoJb3B0aW9uIGRvbnRsb2dudWxsCgliYWxhbmNlIHJvdW5kcm9iaW4KCWNsaXRpbWVvdXQgMjAwMDAKCXNydnRpbWVvdXQgMjAwMDAKCWNvbnRpbWVvdXQgNDAwMAoJcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQoJY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAoJY2FwdHVyZSBjb29raWUgdXNlcmlkPSBsZW4gMTAKCXNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCglzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjorODAwMCBjb29raWUgc3J2MiBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAoKICAgIGRlZmF1bHRzCgkjIHNlY3Rpb24gdmlkZSBxdWkgYW5udWxlIHRvdXMgbGVzIHBhcmFt6HRlcyBwYXIgZOlmYXV0LgoKPT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbel0cmFnZSBzeXN06G1lIHwKPT09PT09PT09PT09PT09PT09PT09PT0KClNvdXMgTGludXggMi40Cj09PT09PT09PT09PT09CgotLSBjdXQgaGVyZSAtLQojIS9iaW4vc2gKIyBzZXQgdGhpcyB0byBhYm91dCAyNTYvNE0gKDE2Mzg0IGZvciAyNTZNIG1hY2hpbmUpCk1BWEZJTEVTPTE2Mzg0CmVjaG8gJE1BWEZJTEVTID4gL3Byb2Mvc3lzL2ZzL2ZpbGUtbWF4CnVsaW1pdCAtbiAkTUFYRklMRVMKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXggXTsgdGhlbgoJZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgoJIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKCWVjaG8gMzAwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQKCWVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CgllY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQoJZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX291dF9vZl93aW5kb3cKZmkKCmVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCmVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CmVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfdHdfYnVja2V0cwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X29ycGhhbnMKZWNobyAzMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2tlZXBhbGl2ZV90aW1lCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdHdfcmVjeWNsZQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3RpbWVzdGFtcHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9lY24KZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9zYWNrCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZHNhY2sKCiMgYXV0by10dW5lZCBvbiAyLjQKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fbWF4CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX2RlZmF1bHQKCmVjaG8gMTYzODQgNjU1MzYgNTI0Mjg4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9ybWVtCmVjaG8gMTYzODQgMzQ5NTIwIDY5OTA0MCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfd21lbQoKLS0gY3V0IGhlcmUgLS0KClNvdXMgRnJlZUJTRAo9PT09PT09PT09PT0KClVuIHBvcnQgZGUgSEEtUHJveHkgc291cyBGcmVlQlNEIGVzdCBk6XNvcm1haXMgZGlzcG9uaWJsZSwgZ3LiY2Ug4ApDbGVtZW50IExhZm9yZXQgPHNoZWVwa2lsbGVyQGN1bHRkZWFkc2hlZXAub3JnPi4KClBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyA6Cmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3VybC5jZ2k/cG9ydHMvbmV0L2hhcHJveHkvcGtnLWRlc2NyCmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvcG9ydHMvbmV0L2hhcHJveHkvCmh0dHA6Ly93d3cuZnJlc2hwb3J0cy5vcmcvbmV0L2hhcHJveHkKCgotLSBmaW4gLS0K