ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgoKICEhISEgIE5PVEU6IENFIERPQ1VNRU5UIEVTVCBQRVJJTUUgICEhISEKCiBWZXVpbGxleiB1dGlsaXNlciBsZSBmaWNoaWVyICJjb25maWd1cmF0aW9uLnR4dCIgc2l0dekgZGFucyBsZSBt6m1lCiBy6XBlcnRvaXJlLCBvdSB06WzpY2hhcmdlciB1bmUgdmVyc2lvbiDgIGpvdXIg4CBsJ2VtcGxhY2VtZW50IGNpLWRlc3NvdXMgOgoKICAgICAgICBodHRwOi8vaGFwcm94eS4xd3QuZXUvZG93bmxvYWQvMS40L2RvYy9jb25maWd1cmF0aW9uLnR4dAoKCj09PT09PT09PT09PT09PT0KfCBJbnRyb2R1Y3Rpb24gfAo9PT09PT09PT09PT09PT09CgpIQVByb3h5IGVzdCB1biByZWxhaXMgVENQL0hUVFAgb2ZmcmFudCBkZXMgZmFjaWxpdOlzIGQnaW506WdyYXRpb24gZW4KZW52aXJvbm5lbWVudCBoYXV0ZW1lbnQgZGlzcG9uaWJsZS4gRW4gZWZmZXQsIGlsIGVzdCBjYXBhYmxlIGRlIDoKICAtIGVmZmVjdHVlciB1biBhaWd1aWxsYWdlIHN0YXRpcXVlIGTpZmluaSBwYXIgZGVzIGNvb2tpZXMgOwogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgYXZlYyBjculhdGlvbiBkZSBjb29raWVzIHBvdXIgYXNzdXJlcgogICAgbGEgcGVyc2lzdGVuY2UgZGUgc2Vzc2lvbiA7IAogIC0gZm91cm5pciB1bmUgdmlzaWJpbGl06SBleHRlcm5lIGRlIHNvbiDpdGF0IGRlIHNhbnTpIDsKICAtIHMnYXJy6nRlciBlbiBkb3VjZXVyIHNhbnMgcGVydGUgYnJ1dGFsZSBkZSBzZXJ2aWNlIDsKICAtIG1vZGlmaWVyL2Fqb3V0ZXIvc3VwcHJpbWVyIGRlcyBlbi106nRlcyBkYW5zIGxhIHJlcXXqdGUgZXQgbGEgculwb25zZSA7CiAgLSBpbnRlcmRpcmUgZGVzIHJlcXXqdGVzIHF1aSB26XJpZmllbnQgY2VydGFpbmVzIGNvbmRpdGlvbnMgOwogIC0gdXRpbGlzZXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgbG9yc3F1ZSBsZXMgc2VydmV1cnMgcHJpbmNpcGF1eCBzb250IGhvcnMKICAgIGQndXNhZ2UuCiAgLSBtYWludGVuaXIgZGVzIGNsaWVudHMgc3VyIGxlIGJvbiBzZXJ2ZXVyIHNlcnZldXIgZCdhcHBsaWNhdGlvbiBlbiBmb25jdGlvbgogICAgZGUgY29va2llcyBhcHBsaWNhdGlmcy4KICAtIGZvdXJuaXIgZGVzIHJhcHBvcnRzIGQn6XRhdCBlbiBIVE1MIOAgZGVzIHV0aWxpc2F0ZXVycyBhdXRoZW50aWZp6XMsIOAKICAgIHRyYXZlcnMgZGVzIFVSSSBkZSBsJ2FwcGxpY2F0aW9uIGludGVyY2VwdOllcy4KCklsIHJlcXVpZXJ0IHBldSBkZSByZXNzb3VyY2VzLCBldCBzb24gYXJjaGl0ZWN0dXJlIOl26W5lbWVudGllbGxlIG1vbm8tCnByb2Nlc3N1cyBsdWkgcGVybWV0IGZhY2lsZW1lbnQgZGUgZ+lyZXIgcGx1c2lldXJzIG1pbGxpZXJzIGRlIGNvbm5leGlvbnMKc2ltdWx0YW7pZXMgc3VyIHBsdXNpZXVycyByZWxhaXMgc2FucyBlZmZvbmRyZXIgbGUgc3lzdOhtZS4KCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbeh0cmVzIGRlIGxhbmNlbWVudCB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIG9wdGlvbnMgZGUgbGFuY2VtZW50IHNvbnQgcGV1IG5vbWJyZXVzZXMgOgoKICAgIC1mIDxmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24+CiAgICAtbiA8bm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcz4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJwogICAgLU4gPG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIGluc3RhbmNlPgogICAgICAgPSAnbWF4Y29ubicgZGFucyBsZXMgc2VjdGlvbnMgJ2xpc3Rlbicgb3UgJ2RlZmF1bHQnCiAgICAtZCBhY3RpdmUgbGUgbW9kZSBkZWJ1ZwogICAgLUQgcGFzc2UgZW4gZGFlbW9uCiAgICAtRHMgcGFzc2UgZW4gZGFlbW9uIHN5c3RlbWQKICAgIC1xIGTpc2FjdGl2ZSBsJ2FmZmljaGFnZSBkZSBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLgogICAgLVYgYWZmaWNoZSBsZXMgbWVzc2FnZXMgc3VyIGxhIHNvcnRpZSBzdGFuZGFyZCwgbeptZSBzaSAtcSBvdSAncXVpZXQnIHNvbnQKICAgICAgIHNw6WNpZmnpcy4KICAgIC1jIHbpcmlmaWUgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIHB1aXMgcXVpdHRlIGF2ZWMgdW4gY29kZSBkZSByZXRvdXIgMAogICAgICAgc2kgYXVjdW5lIGVycmV1ciBuJ2Eg6XTpIHRyb3V26WUsIG91IDEgc2kgdW5lIGVycmV1ciBkZSBzeW50YXhlIGEg6XTpCiAgICAgICBk6XRlY3TpZS4KICAgIC1wIDxmaWNoaWVyPiBpbmRpcXVlIGF1IHByb2Nlc3N1cyBw6HJlIHF1J2lsIGRvaXQg6WNyaXJlIGxlcyBQSURzIGRlIHNlcwogICAgICAgZmlscyBkYW5zIGNlIGZpY2hpZXIgZW4gbW9kZSBk6W1vbi4KICAgIC1zZiBzcGVjaWZpZSB1bmUgbGlzdGUgZGUgUElEcyBhdXhxdWVscyBlbnZveWVyIHVuIHNpZ25hbCBGSU5JU0gKICAgIC1zdCBzcGVjaWZpZSB1bmUgbGlzdGUgZGUgUElEcyBhdXhxdWVscyBlbnZveWVyIHVuIHNpZ25hbCBURVJNSU5BVEUKICAgIC1zIGFmZmljaGUgbGVzIHN0YXRpc3RpcXVlcyAoc2kgb3B0aW9uIGNvbXBpbOllKQogICAgLWwgYWpvdXRlIGRlcyBpbmZvcm1hdGlvbnMgYXV4IHN0YXRpc3RpcXVlcwogICAgLWRrIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIGtxdWV1ZSgpCiAgICAtZHMgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKSBzcGVjdWxhdGlmCiAgICAtZGUgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgZXBvbGwoKQogICAgLWRwIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIHBvbGwoKQogICAgLWRiIGTpc2FjdGl2ZSBsYSBtaXNlIGVuIGFycmnocmUtcGxhbiAodXRpbGUgcG91ciBk6WJ1Z2dlcikKICAgIC1tIDxtZWdzPiBhcHBsaXF1ZSB1bmUgbGltaXRhdGlvbiBkZSA8bWVncz4gTW8gZCd1dGlsaXNhdGlvbiBt6W1vaXJlCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyCmTpZmF1dCBwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUKZmljaGllciBkZSBjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucwonbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZQpjb25uZXhpb25zIFRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzCmNvbmZvbmR1cy4gQ2UgcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCnNvbnQgYWZmaWNo6XMuCgpQb3VyIGRlYnVnZ2VyLCBsJ29wdGlvbiAnLWRiJyBlc3QgdHLocyBwcmF0aXF1ZSBjYXIgZWxsZSBk6XNhY3RpdmUKdGVtcG9yYWlyZW1lbnQgbGUgbW9kZSBkYWVtb24gZXQgbGUgbW9kZSBtdWx0aS1wcm9jZXNzdXMuIExlIHNlcnZpY2UgcGV1dCBhbG9ycwrqdHJlIGFycup06SBwYXIgdW4gc2ltcGxlIGFwcHVpIHN1ciBDdHJsLUMsIHNhbnMgYXZvaXIg4CBtb2RpZmllciBsYQpjb25maWd1cmF0aW9uIG5pIOAgYWN0aXZlciBsZSBtb2RlIGRlYnVnIGNvbXBsZXQuCgpMZXMgc3RhdGlzdGlxdWVzIG5lIHNvbnQgZGlzcG9uaWJsZXMgcXVlIHNpIGxlIHByb2dyYW1tZSBhIOl06SBjb21waWzpIGF2ZWMKbCdvcHRpb24gIlNUQVRUSU1FIi4gSWwgcydhZ2l0IHByaW5jaXBhbGVtZW50IGRlIGRvbm7pZXMgYnJ1dGVzIG4nYXlhbnQKZCd1dGlsaXTpIHF1ZSBsb3JzIGRlIGJlbmNobWFya3MgcGFyIGV4ZW1wbGUsIGV0IHNvbnQgYW1lbullcyDgIGRpc3BhcmFpdHJlLgoKTGVzIHBhcmFt6HRyZXMgJy1zdCcgZXQgJy1zZicgc29udCB1dGlsaXPpcyBwb3VyIGxhIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkLgpWb2lyIGxhIHNlY3Rpb24g4CBjZSBzdWpldC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBGaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdHJ1Y3R1cmUKPT09PT09PT09CgpMJ2FuYWx5c2V1ciBkdSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gaWdub3JlIGRlcyBsaWduZXMgdmlkZXMsIGxlcyBlc3BhY2VzLApsZXMgdGFidWxhdGlvbnMsIGV0IHRvdXQgY2UgcXVpIGVzdCBjb21wcmlzIGVudHJlIGxlIHN5bWJvbGUgJyMnIChzJ2lsIG4nZXN0CnBhcyBwculj6WTpIGQndW4gJ1wnKSwgZXQgbGEgZmluIGRlIGxhIGxpZ25lLCBjZSBxdWkgY29uc3RpdHVlIHVuIGNvbW1lbnRhaXJlLgoKTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGVzdCBk6WNvdXDpIGVuIHNlY3Rpb25zIHLpcOly6WVzIHBhciBkZXMgbW90cyBjbOlzCnRlbHMgcXVlIDoKCiAgLSAnZ2xvYmFsJwogIC0gJ2xpc3RlbicKICAtICdkZWZhdWx0cycKClRvdXMgbGVzIHBhcmFt6HRyZXMgZm9udCBy6WbpcmVuY2Ug4CBsYSBzZWN0aW9uIGTpZmluaWUgcGFyIGxlIGRlcm5pZXIgbW90IGNs6QpyZWNvbm51LgoKCjEpIFBhcmFt6HRyZXMgZ2xvYmF1eAo9PT09PT09PT09PT09PT09PT09PT0KCklsIHMnYWdpdCBkZXMgcGFyYW3odHJlcyBhZ2lzc2FudCBzdXIgbGUgcHJvY2Vzc3VzLCBvdSBiaWVuIHN1ciBsJ2Vuc2VtYmxlIGRlcwpwcm94aWVzLiBJbHMgc29udCB0b3VzIHNw6WNpZmnpcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIExlcyBwYXJhbeh0cmVzCnN1cHBvcnTpcyBzb250IDoKCiAgLSBsb2cgPGFkcmVzc2U+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQogIC0gbWF4Y29ubiA8bm9tYnJlPgogIC0gdWlkIDxpZGVudGlmaWFudD4KICAtIGdpZCA8aWRlbnRpZmlhbnQ+CiAgLSB1c2VyIDxub20gZCd1dGlsaXNhdGV1cj4KICAtIGdyb3VwIDxub20gZGUgZ3JvdXBlPgogIC0gY2hyb290IDxy6XBlcnRvaXJlPgogIC0gbmJwcm9jIDxub21icmU+CiAgLSBkYWVtb24KICAtIGRlYnVnCiAgLSBub2txdWV1ZQogIC0gbm9lcG9sbAogIC0gbm9wb2xsCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KICAtIHVsaW1pdC1uIDxub21icmU+CiAgLSB0dW5lLm1heHBvbGxldmVudHMgPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgcG91ciBsJ3VpZCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBub20gZCd1dGlsaXNhdGV1ciBhcHLocwpsZSBtb3QtY2zpICd1c2VyJy4gRGUgbGEgbeptZSBtYW5p6HJlLCBpbCBlc3QgcG9zc2libGUgZGUgcHLpY2lzZXIgdW4gbm9tIGRlCmdyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCgpJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMgdGVscyBxdWUKJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCnV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgICMgd2l0aCB1aWQvZ2lkCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKICAgICMgd2l0aCB1c2VyL2dyb3VwCiAgICBnbG9iYWwKICAgICAgICB1c2VyICAgIGhhcHJveHkKICAgICAgICBncm91cCAgIHB1YmxpYwogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCAtc2YgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCjEuNykgTeljYW5pc21lcyBkZSB0cmFpdGVtZW50cyBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuNSwgaGFwcm94eSBzdXBwb3J0ZSBsZXMgbeljYW5pc21lcyBwb2xsKCkgZXQKZXBvbGwoKS4gU3VyIGxlcyBzeXN0ZW1zIG/5IHNlbGVjdCgpIGVzdCBsaW1pdOkgcGFyIEZEX1NFVFNJWkUgKGNvbW1lIFNvbGFyaXMpLApwb2xsKCkgcGV1dCDqdHJlIHVuZSBhbHRlcm5hdGl2ZSBpbnTpcmVzc2FudGUuIERlcyB0ZXN0cyBkZSBwZXJmb3JtYW5jZQptb250cmVudCBxdWUgbGVzIHBlcmZvcm1hbmNlcyBkZSBwb2xsKCkgbmUgZOljcm9pc3NlbnQgcGFzIGF1c3NpIHZpdGUgcXVlIGxlCm5vbWJyZSBkZSBzb2NrZXRzIGF1Z21lbnRlLCBjZSBxdWkgZW4gZmFpdCB1bmUgc29sdXRpb24gc/tyZSBwb3VyIGxlcyBmb3J0ZXMKY2hhcmdlcy4gQ2VsYSBkaXQsIFNvYWxyaXMgdXRpbGlzZSBk6WrgIHBvbGwoKSBwb3VyIOltdWxlciBzZWxlY3QoKSwgZG9uYyB0YW50CnF1ZSBsZSBub21icmUgZGUgc29ja2V0cyBuZSBk6XBhc3NlIHBhcyBGRF9TRVRTSVpFLCBwb2xsKCkgbmUgZGV2cmFpdCBwYXMKYXBwb3J0ZXIgZGUgcGVyZm9ybWFuY2VzIHN1cHBs6W1lbnRhaXJlcy4gU3VyIGxlcyBzeXN06G1lcyDgIGJhc2UgTGludXgKaW5jbHVhbnQgbGUgcGF0Y2ggZXBvbGwoKSAob3UgdG91cyBsZXMgTGludXggMi42KSwgaGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKQpxdWkgZXN0IGV4dHLobWVtZW50IHJhcGlkZSBpbmTpcGVuZGFtbWVudCBkdSBub21icmUgZGUgc29ja2V0cy4gTGVzIHRlc3RzIHN1cgpoYXByb3h5IG9udCBtb250cukgdW5lIHBlcmZvcm1hbmNlIGNvbnN0YW50ZSBkZSAxIOAgNDAwMDAgc2Vzc2lvbnMgc2ltdWx0YW7pZXMuCkxhIHZlcnNpb24gMS4zLjkgYSBpbnRyb2R1aXQgbGUgc3VwcG9ydCBkZSBrcXVldWUoKSBwb3VyIEZyZWVCU0QvT3BlbkJTRCwgYWluc2kKcXUndW5lIHZhcmlhbnRlIGFwcGVs6WUgInNwZWN1bGF0aXZlIGVwb2xsKCkiIGNvbnNpc3RhbnQg4CB0ZW50ZXIgZCdlZmZlY3R1ZXIKbGVzIG9w6XJhdGlvbnMgZCdlbnRy6WVzL3NvcnRpZXMgYXZhbnQgZGUgY2hh7m5lciBsZXMg6XbpbmVtZW50cyBwYXIgbGVzIGFwcGVscwpzeXN06G1lLgoKQWZpbiBkJ29wdGltaXNlciBsYSBsYXRlbmNlLCBpbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIGxpbWl0ZXIgbGUgbm9tYnJlCmQn6XbpbmVtZW50cyByZW1vbnTpcyDgIGNoYXF1ZSBhcHBlbC4gTGEgbGltaXRlIHBhciBk6WZhdXQgZXN0IGZpeOllIOAgMjAwLiBTaQp1bmUgbGF0ZW5jZSBwbHVzIHBldGl0ZSBlc3QgcmVjaGVyY2jpZSwgaWwgcGV1dCDqdHJlIGp1c3RpZmnpIGQnYWJhaXNzZXIgY2V0dGUKbGltaXRlIHBhciBsJ3V0aWxpc2F0aW9uIGR1IHBhcmFt6HRyZSAndHVuZS5tYXhwb2xsZXZlbnRzJyBkYW5zIGxhIHNlY3Rpb24KJ2dsb2JhbCcuIEwnYXVnbWVudGVyIHBlcm1ldHRyYSBkJ+ljb25vbWlzZXIgdW4gcGV1IGxlIHByb2Nlc3NldXIgZW4gcHLpc2VuY2UKZGUgdHLocyBncmFuZHMgbm9tYnJlcyBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEga3F1ZXVlKCkgb3Ugc3BlY3VsYXRpdmUgZXBvbGwoKSBsb3JzcXVlIGNlIHNlcmEgZGlzcG9uaWJsZSwKcHVpcyBlcG9sbCgpLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLCBwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuCkNlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwgcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlcgplcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdSBqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcwpwZXJmb3JtYW5jZXMpLCBkZSBub3V2ZWxsZXMgb3B0aW9ucyBnbG9iYWxlcyBvbnQg6XTpIGFqb3V06WVzIGRhbnMgY2UgYnV0IDoKJ25va3F1ZXVlJywgJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgIyB1dGlsaXNlciBzZXVsZW1lbnQgc2VsZWN0KCkKICAgICAgICBub2Vwb2xsCiAgICAgICAgbm9wb2xsCiAgICAgICAgdHVuZS5tYXhwb2xsZXZlbnRzIDEwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpLCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKSwgJy1kaycga3F1ZXVlKCkKZXQgJy1kcycgZOlzYWN0aXZlIHNwZWN1bGF0aXZlIGVwb2xsKCkuIElscyBzb250IHJlc3BlY3RpdmVtZW50IOlxdWl2YWxlbnRzIOAKJ25vZXBvbGwnLCAnbm9wb2xsJywgZXQgJ25va3F1ZXVlJy4KCgoyKSBE6WZpbml0aW9uIGQndW4gc2VydmljZSBlbiDpY291dGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZXMgc2VjdGlvbnMgZGUgc2VydmljZSBk6WJ1dGVudCBwYXIgbGUgbW90IGNs6SAibGlzdGVuIiA6CgogICAgbGlzdGVuIDxub21faW5zdGFuY2U+IFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKLSA8bm9tX2luc3RhbmNlPiBlc3QgbGUgbm9tIGRlIGwnaW5zdGFuY2UgZOljcml0ZS4gQ2Ugbm9tIHNlcmEgZW52b3npIGRhbnMgbGVzCiAgbG9ncywgZG9uYyBpbCBlc3Qgc291aGFpdGFibGUgZCd1dGlsaXNlciB1biBub20gcmVsYXRpZiBhdSBzZXJ2aWNlIHJlbGF56S4KICBBdWN1biB0ZXN0IG4nZXN0IGVmZmVjdHXpIGNvbmNlcm5hbnQgbCd1bmljaXTpIGRlIGNlIG5vbSwgcXVpIG4nZXN0IHBhcwogIG9ibGlnYXRvaXJlLCBtYWlzIGZvcnRlbWVudCByZWNvbW1hbmTpZS4KCi0gPGFkcmVzc2VfSVA+IGVzdCBsJ2FkcmVzc2UgSVAgc3VyIGxhcXVlbGxlIGxlIHJlbGFpcyBhdHRlbmQgc2VzIGNvbm5leGlvbnMuCiAgTCdhYnNlbmNlIGQnYWRyZXNzZSBhaW5zaSBxdWUgbCdhZHJlc3NlIDAuMC4wLjAgc2lnbmlmaWVudCBxdWUgbGVzIGNvbm5leGlvbnMKICBwb3Vycm9udCBzJ2VmZmVjdHVlciBzdXIgdG91dGVzIGxlcyBhZHJlc3NlcyBkZSBsYSBtYWNoaW5lLgoKLSA8cGxhZ2VfcG9ydHM+IGNvcnJlc3BvbmQgc29pdCDgIHVuIHBvcnQsIHNvaXQg4CB1bmUgcGxhZ2UgZGUgcG9ydHMgc3VyCiAgbGVzcXVlbHMgbGUgcmVsYWlzIGFjY2VwdGVyYSBkZXMgY29ubmV4aW9ucyBwb3VyIGwnYWRyZXNzZSBJUCBzcOljaWZp6WUuCiAgQ2V0dGUgcGxhZ2UgcGV1dCDqdHJlIDoKICAgIC0gc29pdCB1biBwb3J0IG51belyaXF1ZSAoZXg6ICc4MCcpCiAgICAtIHNvaXQgdW5lIHBsYWdlIGNvbnN0aXR16WUgZGUgZGV1eCB2YWxldXJzIHPpcGFy6WVzIHBhciB1biB0aXJldAogICAgICAoZXg6ICcyMDAwLTIxMDAnKSByZXBy6XNlbnRhbnQgbGVzIGV4dHLpbWl06XMgaW5jbHVzZXMgZGFucyBsYQogICAgICBwbGFnZS4KICBJbCBmYXV0IGZhaXJlIGF0dGVudGlvbiDgIGwndXNhZ2UgZGVzIHBsYWdlcywgY2FyIGNoYXF1ZSBjb21iaW5haXNvbgogIDxhZHJlc3NlX0lQPjo8cG9ydD4gY29uc29tbWUgdW5lIHNvY2tldCwgZG9uYyB1biBkZXNjcmlwdGV1ciBkZSBmaWNoaWVyLgogIExlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBvcnQ+IGRvaXQg6nRyZSB1bmlxdWUgcG91ciB0b3V0ZXMgbGVzICBpbnN0YW5jZXMKICBkJ3VuZSBt6m1lIG1hY2hpbmUuIEwnYXR0YWNoZW1lbnQg4CB1biBwb3J0IGluZulyaWV1ciDgIDEwMjQgbuljZXNzaXRlIHVuCiAgbml2ZWF1IGRlIHByaXZpbOhnZSBwYXJ0aWN1bGllciBsb3JzIGR1IGxhbmNlbWVudCBkdSBwcm9ncmFtbWUKICAoaW5k6XBlbmRhbW1lbnQgZHUgcGFyYW3odHJlICd1aWQnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcpLgoKLSBsZSBjb3VwbGUgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz4gcGV1dCDqdHJlIHLpcOl06SBpbmTpZmluaW1lbnQgcG91cgogIGRlbWFuZGVyIGF1IHJlbGFpcyBkJ+ljb3V0ZXIg6WdhbGVtZW50IHN1ciBkJ2F1dHJlcyBhZHJlc3NlcyBldC9vdSBkJ2F1dHJlcwogIHBsYWdlcyBkZSBwb3J0cy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZGUgc+lwYXJlciBsZXMgY291cGxlcyBwYXIgdW5lIHZpcmd1bGUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICBsaXN0ZW4geDExX3Byb3h5IDEyNy4wLjAuMTo2MDAwLTYwMDkKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDEyNy4wLjAuMToyNSwxMjcuMC4wLjE6NTg3CiAgICBsaXN0ZW4gbGRhcF9wcm94eSA6Mzg5LDo2NjMKClNpIHRvdXRlcyBsZXMgYWRyZXNzZXMgbmUgdGllbm5lbnQgcGFzIHN1ciB1bmUgbGlnbmUsIGlsIGVzdCBwb3NzaWJsZSBkJ2VuCnJham91dGVyIOAgbCdhaWRlIGR1IG1vdCBjbOkgJ2JpbmQnLiBEYW5zIGNlIGNhcywgaWwgbidlc3QgbeptZSBwYXMgbuljZXNzYWlyZQpkZSBzcOljaWZpZXIgbGEgcHJlbWnocmUgYWRyZXNzZSBzdXIgbGEgbGlnbmUgbGlzdGVuLCBjZSBxdWkgZmFjaWxpdGUgcGFyZm9pcwpsJ+ljcml0dXJlIGRlIGNvbmZpZ3VyYXRpb25zIDoKCiAgICBiaW5kIFsgPGFkcmVzc2VfSVA+OjxwbGFnZV9wb3J0cz5bLC4uLl0gXQoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBiaW5kIDEwLjAuMC4xOjEwMDgwLDEwLjAuMC4xOjEwNDQzCgoyLjEpIEluaGliaXRpb24gZCd1biBzZXJ2aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IOp0cmUgZOlzYWN0aXbpIHBvdXIgZGVzIGJlc29pbnMgZGUgbWFpbnRlbmFuY2UsIHNhbnMgYXZvaXIg4Apjb21tZW50ZXIgdG91dGUgdW5lIHBhcnRpZSBkdSBmaWNoaWVyLiBJbCBzdWZmaXQgZGUgcG9zaXRpb25uZXIgbGUgbW90IGNs6QoiZGlzYWJsZWQiIGRhbnMgc2Egc2VjdGlvbiA6CgogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIGRpc2FibGVkCgpSZW1hcnF1ZTogbGUgbW90IGNs6SAnZW5hYmxlZCcgcGVybWV0IGRlIHLpYWN0aXZlciB1biBzZXJ2aWNlIHBy6WFsYWJsZW1lbnQKICAgICAgICAgIGTpc2FjdGl26SBwYXIgbGUgbW90IGNs6SAnZGlzYWJsZWQnLCBwYXIgZXhlbXBsZSDgIGNhdXNlIGQndW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uIHBhciBk6WZhdXQuCgoyLjIpIE1vZGUgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHRyb2lzIG1vZGVzIGRpZmbpcmVudHMgOgogIC0gVENQCiAgLSBIVFRQCiAgLSDpdGF0IGRlIHNhbnTpCgpNb2RlIFRDUAotLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllLCBk6HMgbGV1ciDpdGFibGlzc2VtZW50LCBsZXMgY29ubmV4aW9ucyBUQ1AKdmVycyB1biBvdSBwbHVzaWV1cnMgc2VydmV1cnMuIEF1Y3VuIHRyYWl0ZW1lbnQgbidlc3QgZWZmZWN0dekgc3VyIGxlIGZsdXguIElsCnMnYWdpdCBzaW1wbGVtZW50IGQndW5lIGFzc29jaWF0aW9uCiAgICAgc291cmNlPGFkcmVzc2U6cG9ydD4gLT4gZGVzdGluYXRpb248YWRyZXNzZTpwb3J0Pi4KUG91ciBsJ3V0aWxpc2VyLCBwculjaXNlciBsZSBtb2RlIFRDUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBtb2RlIHRjcAoKTW9kZSBIVFRQCi0tLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllIGxlcyBjb25uZXhpb25zIFRDUCB2ZXJzIHVuIG91IHBsdXNpZXVycwpzZXJ2ZXVycywgdW5lIGZvaXMgcXUnaWwgZGlzcG9zZSBkJ2Fzc2V6IGQnaW5mb3JtYXRpb25zIHBvdXIgZW4gcHJlbmRyZSBsYQpk6WNpc2lvbi4gTGVzIGVuLXTqdGVzIEhUVFAgc29udCBhbmFseXPpcyBwb3VyIHkgdHJvdXZlciB1biDpdmVudHVlbCBjb29raWUsIGV0CmNlcnRhaW5zIGQnZW50cmUtZXV4IHBldXZlbnQg6nRyZSBtb2RpZmnpcyBwYXIgbGUgYmlhaXMgZCdleHByZXNzaW9ucwpy6Wd1bGnocmVzLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIgbGUgbW9kZSBIVFRQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUKcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAoKTW9kZSBzdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tCklsIHMnYWdpdCBkJ3VuIG1vZGUgb2ZmcmFudCDgIHVuIGNvbXBvc2FudCBleHRlcm5lIHVuZSB2aXNpYmlsaXTpIGRlIGwn6XRhdCBkZQpzYW506SBkdSBzZXJ2aWNlLiBJbCBzZSBjb250ZW50ZSBkZSByZXRvdXJuZXIgIk9LIiDgIHRvdXQgY2xpZW50IHNlIGNvbm5lY3RhbnQKc3VyIHNvbiBwb3J0LiBJbCBwZXV0IOp0cmUgdXRpbGlz6SBhdmVjIGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIOl2b2x16XMgcG91cgpk6XRlcm1pbmVyIHF1ZWxzIHNvbnQgbGVzIHNlcnZpY2VzIHV0aWxpc2FibGVzLiBTaSBsJ29wdGlvbiAnaHR0cGNoaycgZXN0CmFjdGl26WUsIGFsb3JzIGxhIHLpcG9uc2UgY2hhbmdlcmEgZW4gJ0hUVFAvMS4wIDIwMCBPSycgcG91ciBzYXRpc2ZhaXJlIGxlcwphdHRlbnRlcyBkZSBjb21wb3NhbnRzIHNhY2hhbnQgdGVzdGVyIGVuIEhUVFAuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlcgpsZSBtb2RlIEhFQUxUSCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgculwb25zZSBzaW1wbGUgOiAnT0snCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAoKICAgICMgculwb25zZSBIVFRQIDogJ0hUVFAvMS4wIDIwMCBPSycKICAgIGxpc3RlbiBodHRwX2hlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAxCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBvcHRpb24gaHR0cGNoawoKCjIuMi4xIFN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0tCkxlcyB2ZXJzaW9ucyAxLjEuMzIgZXQgMS4yLjYgYXBwb3J0ZW50IHVuZSBub3V2ZWxsZSBzb2x1dGlvbiBwb3VyIHZhbGlkZXIgbGUKYm9uIGZvbmN0aW9ubmVtZW50IGR1IHByb3h5IHNhbnMgcGVydHVyYmVyIGxlIHNlcnZpY2UuIExlIG1vdC1jbOkgJ21vbml0b3ItbmV0JwphIOl06SBjcunpIGRhbnMgbGUgYnV0ZCBkZSBzcOljaWZpZXIgdW4gculzZWF1IGQn6XF1aXBlbWVudHMgcXVpIG5lIFBFVVZFTlQgUEFTCnV0aWxpc2VyIGxlIHNlcnZpY2UgcG91ciBhdXRyZSBjaG9zZSBxdWUgZGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50LiBDJ2VzdApwYXJ0aWN1bGnocmVtZW50IGFkYXB06SBhdXggcHJveGllcyBUQ1AsIGNhciBjZWxhIGVtcOpjaGUgbGUgcHJveHkgZGUgcmVsYXllcgpkZXMg6XRhYmxpc3NlbWVudHMgZGUgY29ubmV4aW9uIOltaXMgcGFyIHVuIG91dGlsIGRlIHN1cnZlaWxsYW5jZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgVENQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllIHB1aXMgcmVmZXJt6WUKZXQgcmllbiBuJ2VzdCBsb2d16S4gQydlc3Qgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIGVuIGFtb250CmTpdGVjdGUgcXVlIGxlIHNlcnZpY2UgZXN0IGRpc3BvbmlibGUuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IEhUVFAsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUsIHJpZW4gbidlc3QKbG9ndeksIHB1aXMgbGEgculwb25zZSBzdWl2YW50ZSBlc3QgZW52b3npZSBldCBsYSBzZXNzaW9uIHJlZmVybellIDoKIkhUVFAvMS4wIDIwMCBPSyIuIEMnZXN0IG5vcm1hbGVtZW50IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZQpIVFRQIGVuIGFtb250IGTpdGVjdGUgbGUgc2VydmljZSBjb21tZSBvcOlyYXRpb25uZWwsIGF1c3NpIGJpZW4g4CB0cmF2ZXJzIGRlcwp0ZXN0cyBUQ1AgcXVlIEhUVFAuCgpMZXMgcHJveGllcyB1dGlsaXNhbnQgbGUgbW90LWNs6SAnbW9uaXRvci1uZXQnIHBldXZlbnQgYWNjZXNzb2lyZW1lbnQgc2UgcGFzc2VyCmRlIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIGNlIHF1aSBwZXJtZXR0cmEgZGUgbG9ndWVyIGxlcyBjb25uZXhpb25zIHZpZGVzCultaXNlcyBkZXB1aXMgZCdhdXRyZXMgYWRyZXNzZXMgcXVlIGNlbGxlcyBkdSBy6XNlYXUgZGUgdGVzdHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHRzZS1wcm94eQogICAgICAgYmluZCA6MzM4OSw6MTQ5NCw6NTkwMCAgIyBUU0UsIElDQSBhbmQgVk5DIGF0IG9uY2UuCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgdHNlLWZhcm0gMTkyLjE2OC4xLjEwCiAgICAgICBtb25pdG9yLW5ldCAxOTIuMTY4LjEuMjUyLzMxICAgIyBMNCBsb2FkLWJhbGFuY2VycyBvbiAuMjUyIGFuZCAuMjUzCgoKTG9yc3F1ZSBsZSBzeXN06G1lIGVmZmVjdHVhbnQgbGVzIHRlc3RzIGVzdCBzaXR16SBkZXJyaehyZSB1biBwcm94eSwgbGUgbW90LWNs6QonbW9uaXRvci1uZXQnIG4nZXN0IHBhcyB1dGlsaXNhYmxlIGR1IGZhaXQgcXVlIGhhcHJveHkgdmVycmEgdG91am91cnMgbGEgbeptZQphZHJlc3NlIHBvdXIgbGUgcHJveHkuIFBvdXIgcGFsbGllciDgIGNldHRlIGxpbWl0YXRpb24sIGxhIHZlcnNpb24gMS4yLjE1IGEKYXBwb3J06SBsZSBtb3QtY2zpICdtb25pdG9yLXVyaScuIElsIGTpZmluaXQgdW5lIFVSSSBxdWkgbmUgc2VyYSBuaSByZXRyYW5zbWlzZQpuaSBsb2fpZSwgbWFpcyBwb3VyIGxhcXVlbGxlIGhhcHJveHkgcmV0b3VybmVyYSBpbW3pZGlhdGVtZW50IHVuZSBy6XBvbnNlCiJIVFRQLzEuMCAyMDAgT0siLiBDZWxhIHJlbmQgcG9zc2libGVzIGxlcyB0ZXN0cyBkZSB2YWxpZGl06SBkJ3VuZSBjaGHubmUKcmV2ZXJzZS1wcm94eS0+aGFwcm94eSBlbiB1bmUgcmVxdep0ZSBIVFRQLiBDZWxhIHBldXQg6nRyZSB1dGlsaXPpIHBvdXIgdmFsaWRlcgp1bmUgY29tYmluYWlzaW9uIGRlIHN0dW5uZWwraGFwcm94eSDgIGwnYWlkZSBkZSB0ZXN0cyBIVFRQUyBwYXIgZXhlbXBsZS4gQmllbgplbnRlbmR1LCBjZSBtb3QtY2zpIG4nZXN0IHZhbGlkZSBxdSdlbiBtb2RlIEhUVFAsIHNpbm9uIGlsIG4neSBhIHBhcyBkZSBub3Rpb24KZCdVUkkuIE5vdGVyIHF1ZSBsYSBt6XRob2RlIGV0IGxhIHZlcnNpb24gSFRUUCBzb250IHNpbXBsZW1lbnQgaWdub3LpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHN0dW5uZWxfYmFja2VuZCA6ODA4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xMDo4MCBjaGVjawogICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjExOjgwIGNoZWNrCiAgICAgICBtb25pdG9yLXVyaSAvaGFwcm94eV90ZXN0CgoKMi4zKSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBwYXJhbeh0cmUgIm1heGNvbm4iIHBlcm1ldCBkZSBmaXhlciBsYSBsaW1pdGUgYWNjZXB0YWJsZSBlbiBub21icmUgZGUKY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHkuIENoYXF1ZSBwcm94eSBxdWkgYXR0ZWludCBjZXR0ZSB2YWxldXIgY2Vzc2UKZCfpY291dGVyIGp1c3F1J+AgbGli6XJhdGlvbiBkJ3VuZSBjb25uZXhpb24uIFZvaXIgcGx1cyBsb2luIGNvbmNlcm5hbnQgbGVzCmxpbWl0YXRpb25zIGxp6WVzIGF1IHN5c3TobWUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gdGlueV9zZXJ2ZXIgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAKCgoyLjQpIEFycup0IGVuIGRvdWNldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkJ2Fycup0ZXIgbGVzIHNlcnZpY2VzIGVuIGRvdWNldXIgZW4gZW52b3lhbnQgdW4gc2lnbmFsClNJR1VTUjEgYXUgcHJvY2Vzc3VzIHJlbGFpcy4gVG91cyBsZXMgc2VydmljZXMgc2Vyb250IGFsb3JzIG1pcyBlbiBwaGFzZQpkJ2Fycup0LCBtYWlzIHBvdXJyb250IGNvbnRpbnVlciBkJ2FjY2VwdGVyIGRlcyBjb25uZXhpb25zIHBlbmRhbnQgdW4gdGVtcHMKZOlmaW5pIHBhciBsZSBwYXJhbeh0cmUgJ2dyYWNlJyAoZW4gbWlsbGlzZWNvbmRlcykuIENlbGEgcGVybWV0IHBhciBleGVtcGxlLApkZSBmYWlyZSBzYXZvaXIgcmFwaWRlbWVudCDgIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBxdSdpbCBuZSBkb2l0IHBsdXMKdXRpbGlzZXIgdW4gcmVsYWlzLCB0b3V0IGVuIGNvbnRpbnVhbnQgZCdhc3N1cmVyIGxlIHNlcnZpY2UgbGUgdGVtcHMgcXUnaWwKcydlbiByZW5kZSBjb21wdGUuCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgYWN0aXZlcyBuZSBzb250IGphbWFpcyBjYXNz6WVzLiBEYW5zIGxlIHBpcmUgZGVzIGNhcywgaWwgZmF1ZHJhCmF0dGVuZHJlIGVuIHBsdXMgbGV1ciBleHBpcmF0aW9uIGF2YW50IGwnYXJy6nQgdG90YWwgZHUgcHJvY2Vzc3VzLCBvdSBiaWVuIHR1ZXIKbWFudWVsbGVtZW50IGxlIHByb2Nlc3N1cyBwYXIgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdURVJNLiBMYSB2YWxldXIgcGFyIGTpZmF1dApkdSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgMCAocGFzIGRlIGdy4mNlLCBhcnLqdCBpbW3pZGlhdCBkZSBsJ+ljb3V0ZSkuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGFycup0ZXIgZW4gZG91Y2V1ciBwYXIgJ2tpbGxhbGwgLVVTUjEgaGFwcm94eScKICAgICMgbGUgc2VydmljZSB0b3VybmVyYSBlbmNvcmUgMTAgc2Vjb25kZXMgYXBy6HMgbGEgZGVtYW5kZSBkJ2Fycup0CiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgZ3JhY2UgMTAwMDAKCiAgICAjIGNlIHBvcnQgbidlc3QgdGVzdOkgcXVlIHBhciB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UuCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIGdyYWNlIDAKCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjgsIHVuIG5vdXZlYXUgbeljYW5pc21lIGRlIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkCmEg6XTpIGludHJvZHVpdC4gSWwgZXN0IGTpc29ybWFpcyBwb3NzaWJsZSBkZSBtZXR0cmUgbGVzIHByb3hpZXMgZW4gInBhdXNlIiBlbgplbnZveWFudCB1biBzaWduYWwgU0lHVFRPVSBhdXggcHJvY2Vzc3VzLiBDZWxhIGTpc2FjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlCnNhbnMgY2Fzc2VyIGxlcyBzZXNzaW9ucyBleGlzdGFudGVzLiBTdWl0ZSDgIGNlbGEsIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVFRJTgpy6WFjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlLiBDZWNpIGVzdCB0cuhzIHByYXRpcXVlIHBvdXIgdGVudGVyIGRlIGNoYXJnZXIKdW5lIG5vdXZlbGxlIGNvbmZpZ3VyYXRpb24gb3UgbeptZSB1bmUgbm91dmVsbGUgdmVyc2lvbiBkZSBoYXByb3h5IHNhbnMgY2Fzc2VyCmxlcyBjb25uZXhpb25zIGV4aXN0YW50ZXMuIFNpIGxlIHJlY2hhcmdlbWVudCBzJ2VmZmVjdHVlIGNvcnJlY3RlbWVudCwgaWwgbmUKcmVzdGUgcGx1cyBxdSfgIGVudm95ZXIgdW4gc2lnbmFsIFNJR1VTUjEgYXV4IGFuY2llbnMgcHJvY2Vzc3VzLCBjZSBxdWkKcHJvdm9xdWVyYSBsZXVyIGFycup0IGltbelkaWF0IGTocyBxdWUgbGV1cnMgY29ubmV4aW9ucyBzZXJvbnQgdGVybWlu6WVzIDsgZW4KcmV2YW5jaGUsIHNpIGxlIHJlY2hhcmdlbWVudCDpY2hvdWUsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR1RUSU4gcG91cgpyZW1ldHRyZSBsZXMgcG9ydHMgZW4g6WNvdXRlIGV0IHLpdGFibGlyIGxlIHNlcnZpY2UgaW1t6WRpYXRlbWVudC4gVmV1aWxsZXoKbm90ZXIgcXVlIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCBpZ25vcukgcG91ciBsZSBzaWduYWwgU0lHVFRPVSBhaW5zaSBxdWUgbGUKc2lnbmFsIFNJR1VTUjEgdW5lIGZvaXMgbGUgcHJvY2Vzc3VzIGVuIHBhdXNlLiBBdXNzaSwgaWwgcGV1dCBzJ2F26XJlciB0cuhzCnV0aWxlIGRlIHNhdXZlciBsZSBmaWNoaWVyIGRlIHBpZCBhdmFudCBkZSBk6W1hcnJlciB1bmUgbm91dmVsbGUgaW5zdGFuY2UuCgpDZSBt6WNhbmlzbWUgZXN0IHBsZWluZW1lbnQgZXhwbG9pdOkg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuMTEgYXZlYyBsZXMKb3B0aW9ucyAnLXN0JyBldCAnLXNmJyAodm9pciBjaS1kZXNzb3VzKS4KCjIuNCkgUmVjb25maWd1cmF0aW9uIOAgY2hhdWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgaW5mb3JtZXIgZGVzIHByb2Nlc3N1cwpleGlzdGFudHMgcXVlIGxhIGNvbmZpZ3VyYXRpb24gdmEg6nRyZSByZWNoYXJn6WUuIElscyByZWNldnJvbnQgbGUgc2lnbmFsClNJR1RUT1UsIGxldXIgZGVtYW5kYW50IGRlIGxpYulyZXIgbGVzIHBvcnRzIGVuIOljb3V0ZSBhZmluIHF1ZSBsZSBub3V2ZWF1CnByb2Nlc3N1cyBwdWlzc2UgbGVzIHByZW5kcmUuIFNpIHF1b2kgcXVlIGNlIHNvaXQgc2UgcGFzc2UgbWFsLCBsZSBub3V2ZWF1CnByb2Nlc3N1cyBsZXVyIGVudmVycmEgdW4gc2lnbmFsIFNJR1RUSU4gcG91ciBsZXVyIGluZGlxdWVyIHF1J2lscyBwZXV2ZW50CnNlIHJlbWV0dHJlIGVuIOljb3V0ZSBldCBjb250aW51ZXIgbGV1ciB0cmF2YWlsLiBFbiByZXZhbmNoZSwgc2kgbGEKY29uZmlndXJhdGlvbiBzZSBjaGFyZ2UgY29ycmVjdGVtZW50LCBhbG9ycyBpbHMgcmVjZXZyb250IHVuIHNpZ25hbCBkZSBkZW1hbmRlCmRlIGZpbiBkZSB0cmF2YWlsIGVuIGRvdWNldXIgKC1zZiksIG91IGRlIHRlcm1pbmFpc29uIGltbelkaWF0ZSAoLXN0KSBxdWkKY291cGVyYSBsZXMgc2Vzc2lvbnMgZW4gY291cnMuIFVuIHVzYWdlIHR5cGlxdWUgdGVsIHF1ZSBjZWx1aS1jaSBwZXJtZXQgZGUKcmVjaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIHNhbnMgaW50ZXJydXB0aW9uIGRlIHNlcnZpY2UgOgoKICMgaGFwcm94eSAtcCAvdmFyL3J1bi9oYXByb3h5LnBpZCAtc2YgJChjYXQgL3Zhci9ydW4vaGFwcm94eS5waWQpCgoKMi41KSBUZW1wcyBkJ2V4cGlyYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgY2VydGFpbmVzIGR1cullcyBkJ2V4cGlyYXRpb24gYXUgbml2ZWF1IGRlcwpjb25uZXhpb25zIFRDUC4gVHJvaXMgdGVtcHMgaW5k6XBlbmRhbnRzIHNvbnQgY29uZmlndXJhYmxlcyBldCBhY2NlcHRlbnQgZGVzCnZhbGV1cnMgZW4gbWlsbGlzZWNvbmRlcy4gU2kgbCd1bmUgZGUgY2VzIHRyb2lzIHRlbXBvcmlzYXRpb25zIGVzdCBk6XBhc3PpZSwgbGEKc2Vzc2lvbiBlc3QgdGVybWlu6WUg4CBjaGFxdWUgZXh0cultaXTpLgoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBjbGllbnQsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJjbGl0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgY2xpZW50IOAgMm1uMzAuCiAgICAgICAgY2xpdGltZW91dCAgICAgICAgMTUwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJzcnZ0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgc2VydmV1ciDgIDMwcy4KICAgICAgICBzcnZ0aW1lb3V0ICAgICAgICAzMDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1cgogICAgImNvbnRpbWVvdXQiIDoKCiAgICAgICAgIyBvbiBhYmFuZG9ubmUgc2kgbGEgY29ubmV4aW9uIG4nZXN0IHBhcyDpdGFibGllIGFwcuhzIDQgc2Vjb25kZXMKICAgICAgICBjb250aW1lb3V0ICAgICAgICA0MDAwCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gImNvbnRpbWVvdXQiIGV0ICJzcnZ0aW1lb3V0IiBuJ29udCBwYXMgZCd1dGlsaXTpIGRhbnMgbGUgY2FzIGR1IHNlcnZldXIgZGUKICAgIHR5cGUgImhlYWx0aCIuCiAgLSBzb3VzIGRlIGZvcnRlcyBjaGFyZ2VzLCBvdSBzdXIgdW4gculzZWF1IHNhdHVy6SBvdSBk6WZlY3R1ZXV4LCBpbCBlc3QKICAgIHBvc3NpYmxlIGRlIHBlcmRyZSBkZXMgcGFxdWV0cy4gRHUgZmFpdCBxdWUgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24KICAgIFRDUCBuJ2FpdCBsaWV1IHF1J2F1IGJvdXQgZGUgMyBzZWNvdWRlcywgZml4ZXIgdW4gdGltZW91dCBkZSBjb25uZXhpb24KICAgIGluZulyaWV1ciDgIDMgc2Vjb25kZXMgbmUgcGVybWV0IHBhcyBkZSBzZSByYXR0cmFwZXIgc3VyIGxhIHBlcnRlCiAgICBkZSBwYXF1ZXRzIGNhciBsYSBzZXNzaW9uIGF1cmEg6XTpIGFiYW5kb25u6WUgYXZhbnQgbGEgcHJlbWnocmUKICAgIHJldHJhbnNtaXNzaW9uLiBVbmUgdmFsZXVyIGRlIDQgc2Vjb25kZXMgculkdWlyYSBjb25zaWTpcmFibGVtZW50CiAgICBsZSBub21icmUgZCfpY2hlY3MgZGUgY29ubmV4aW9uLgogIC0gQSBjb21wdGVyIGRlIGxhIHZlcnNpb24gMS4zLjE0LCBpbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIGxlcyBkdXLpZXMKICAgIGQnZXhwaXJhdGlvbiBkYW5zIGRlcyB1bml06XMgZGUgdGVtcHMgYXJiaXRyYWlyZXMg4CBjaG9pc2lyIHBhcm1pCiAgICB7IHVzLCBtcywgcywgbSwgaCwgZCB9LiBQb3VyIGNlbGEsIGxhIHZhbGV1ciBlbnRp6HJlIGRvaXQg6nRyZSBzdWZmaXjpZQogICAgZGUgbCd1bml06S4KCjIuNikgVGVudGF0aXZlcyBkZSByZWNvbm5leGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTG9ycyBkJ3VuIOljaGVjIGRlIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIsIGlsIGVzdCBwb3NzaWJsZSBkZQpyZXRlbnRlciAocG90ZW50aWVsbGVtZW50IHZlcnMgdW4gYXV0cmUgc2VydmV1ciwgZW4gY2FzIGRlIHLpcGFydGl0aW9uCmRlIGNoYXJnZSkuIExlIG5vbWJyZSBkZSBub3V2ZWxsZXMgdGVudGF0aXZlcyBpbmZydWN0dWV1c2VzIGF2YW50CmFiYW5kb24gZXN0IGZvdXJuaSBwYXIgbGUgcGFyYW3odHJlICJyZXRyaWVzIi4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICAjIG9uIGVzc2FpZSBlbmNvcmUgdHJvaXMgZm9pcyBtYXhpCiAgICAgICAgcmV0cmllcyAzCgpJbCBlc3Qg4CBub3RlciBxdWUgbGEgdGVudGF0aXZlIGRlIHJlY29ubmV4aW9uIHBldXQgYW1lbmVyIOAgdXRpbGlzZXIgdW4gYXV0cmUKc2VydmV1ciBzaSBsZSBwcmVtaWVyIGEgZGlzcGFydSBlbnRyZSBkZXV4IHRlbnRhdGl2ZXMgZGUgY29ubmV4aW9uLgoKCjIuNykgQWRyZXNzZSBkdSBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHNlcnZldXIgdmVycyBsZXF1ZWwgc29udCByZWRpcmln6WVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBlc3QgZOlmaW5pIHBhcgpsZSBwYXJhbeh0cmUgImRpc3BhdGNoIiBzb3VzIGxhIGZvcm1lIDxhZHJlc3NlX2lwPjo8cG9ydD4uIElsIGNvcnJlc3BvbmQg4CB1bgpzZXJ2ZXVyIGQnYXNzaWduYXRpb24gZGUgY29va2llIGRhbnMgbGUgY2FzIG/5IGxlIHNlcnZpY2UgY29uc2lzdGUg4CBhc3N1cmVyCnVuaXF1ZW1lbnQgdW5lIHBlcnNpc3RlbmNlIEhUVFAsIG91IGJpZW4gc2ltcGxlbWVudCBhdSBzZXJ2ZXVyIGRlc3RpbmF0aW9uIGRhbnMKbGUgY2FzIGRlIHJlbGF5YWdlIFRDUCBzaW1wbGUuIENldCBhbmNpZW4gbW9kZSBuZSBwZXJtZXQgcGFzIGRlIHRlc3RlciBsJ+l0YXQKZHUgc2VydmV1ciBkaXN0YW50LCBldCBpbCBlc3QgbWFpbnRlbmFudCByZWNvbW1hbmTpIGQndXRpbGlzZXIgZGUgcHLpZulyZW5jZQpsZSBtb2RlICdiYWxhbmNlJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICAgICAjIG9uIGVudm9pZSB0b3V0ZXMgbGVzIG5vdXZlbGxlcyBjb25uZXhpb25zIGljaQogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4yOjgwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KQ2UgcGFyYW3odHJlIG4nYSBwYXMgZCd1dGlsaXTpIHBvdXIgdW4gc2VydmV1ciBlbiBtb2RlICdoZWFsdGgnLCBuaSBlbiBtb2RlCidiYWxhbmNlJy4KCgoyLjgpIEFkcmVzc2UgZGUgc29ydGllCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIGZvcmNlciBsJ2FkcmVzc2UgdXRpbGlz6WUgcG91ciDpdGFibGlyIGxlcyBjb25uZXhpb25zIHZlcnMKbGVzIHNlcnZldXJzIOAgbCdhaWRlIGR1IHBhcmFt6HRyZSAic291cmNlIi4gSWwgZXN0IG3qbWUgcG9zc2libGUgZGUgZm9yY2VyIGxlCnBvcnQsIGJpZW4gcXVlIGNldHRlIGZvbmN0aW9ubmFsaXTpIHNlIGxpbWl0ZSDgIGRlcyB1c2FnZXMgdHLocyBzcOljaWZpcXVlcy4KQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBjYXMgZCdhZHJlc3NhZ2UgbXVsdGlwbGUsIGV0IHBsdXMgZ+lu6XJhbGVtZW50CnBvdXIgcGVybWV0dHJlIGF1eCBzZXJ2ZXVycyBkZSB0cm91dmVyIGxlIGNoZW1pbiBkZSByZXRvdXIgZGFucyBkZXMgY29udGV4dGVzCmRlIHJvdXRhZ2UgZGlmZmljaWxlcy4gU2kgbCdhZHJlc3NlIGVzdCAnMC4wLjAuMCcgb3UgJyonIG91IHZpZGUsIGVsbGUgc2VyYQpjaG9pc2llIGxpYnJlbWVudCBwYXIgbGUgc3lzdGVtZS4gU2kgbGUgcG9ydCBlc3QgJzAnIG91IHZpZGUsIGlsIHNlcmEgY2hvaXNpCmxpYnJlbWVudCBwYXIgbGUgc3lzdOhtZS4gSWwgZXN0IOAgbm90ZXIgcXVlIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCwgbGVzCnRlc3RzIGRlIGJvbiBmb25jdGlvbm5lbWVudCBkZXMgc2VydmV1cnMgc2Vyb250IGF1c3NpIGVmZmVjdHXpcyDgIHBhcnRpciBkZSBsYQpzb3VyY2Ugc3DpY2lmaellIHBhciBjZSBwYXJhbeh0cmUuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5ICo6ODAKICAgICAgICAgICAjIHRvdXRlcyBsZXMgY29ubmV4aW9ucyBwcmVubmVudCBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjAKCiAgICBsaXN0ZW4gcmxvZ2luX3Byb3h5ICo6NTEzCiAgICAgICAgICAgIyB1dGlsaXNlciBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMCBldCBsZSBwb3J0IHLpc2VydukgOTAwCiAgICAgICAgc291cmNlIDE5Mi4xNjguMS4yMDA6OTAwCgoKMi45KSBE6WZpbml0aW9uIGR1IG5vbSBkdSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZGUgcmVjaGVyY2hlciBsYSB2YWxldXIgZCd1biBjb29raWUgcG91ciBzYXZvaXIKdmVycyBxdWVsIHNlcnZldXIgYWlndWlsbGVyIGxhIHJlcXXqdGUgdXRpbGlzYXRldXIuIExlIG5vbSBkdSBjb29raWUgZXN0IGRvbm7pCnBhciBsZSBwYXJhbeh0cmUgImNvb2tpZSIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKCk9uIHBldXQgbW9kaWZpZXIgbCd1dGlsaXNhdGlvbiBkdSBjb29raWUgcG91ciBsYSByZW5kcmUgcGx1cyBpbnRlbGxpZ2VudGUKdmlzLeAtdmlzIGRlcyBhcHBsaWNhdGlvbnMgcmVsYXnpZXMuIElsIGVzdCBwb3NzaWJsZSwgbm90YW1tZW50IGRlIHN1cHByaW1lciBvdQpy6eljcmlyZSB1biBjb29raWUgcmV0b3VybukgcGFyIHVuIHNlcnZldXIgYWNj6WTpIGVuIGRpcmVjdCwgZXQgZCdpbnPpcmVyIHVuCmNvb2tpZSBkYW5zIHVuZSBy6XBvbnNlIEhUVFAgYWRyZXNz6WUg4CB1biBzZXJ2ZXVyIHPpbGVjdGlvbm7pIGVuIHLpcGFydGl0aW9uCmRlIGNoYXJnZSwgZXQgbeptZSBkZSBzaWduYWxlciBhdXggcHJveGllcyBhbW9udCBkZSBuZSBwYXMgY2FjaGVyIGxlIGNvb2tpZQppbnPpcukuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KClBvdXIgbmUgY29uc2VydmVyIGxlIGNvb2tpZSBxdSdlbiBhY2PocyBpbmRpcmVjdCwgZG9uYyDgIHRyYXZlcnMgbGUKZGlzcGF0Y2hldXIsIGV0IHN1cHByaW1lciB0b3V0ZXMgc2VzIOl2ZW50dWVsbGVzIG9jY3VyZW5jZXMgbG9ycyBkZXMgYWNj6HMKZGlyZWN0cyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbmRpcmVjdAoKUG91ciByZW1wbGFjZXIgbGEgdmFsZXVyIGQndW4gY29va2llIGV4aXN0YW50IHBhciBjZWxsZSBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyLApsb3JzIGQndW4gYWNj6HMgZGlyZWN0IDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIHJld3JpdGUKClBvdXIgY3LpZXIgdW4gY29va2llIGNvbXBvcnRhbnQgbGEgdmFsZXVyIGF0dHJpYnXpZSDgIHVuIHNlcnZldXIgbG9ycyBkJ3VuCmFjY+hzIGVuIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBpbnRlcm5lLiBEYW5zIGNlIGNhcywgaWwgZXN0IHNvdWhhaXRhYmxlIHF1ZQp0b3VzIGxlcyBzZXJ2ZXVycyBhaWVudCB1biBjb29raWUgcmVuc2VpZ27pLiBVbiBzZXJ2ZXVyIG5vbiBhc3NpZ27pIGQndW4gY29va2llCnJldG91cm5lcmEgdW4gY29va2llIHZpZGUgKGNvb2tpZSBkZSBzdXBwcmVzc2lvbikgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0CgpQb3VyIHLpdXRpbGlzZXIgdW4gY29va2llIGFwcGxpY2F0aWYgZXQgbHVpIHBy6WZpeGVyIGwnaWRlbnRpZmlhbnQgZHUgc2VydmV1ciwKcHVpcyBsZSBzdXBwcmltZXIgZGFucyBsZXMgcmVxdep0ZXMgc3VpdmFudGVzLCB1dGlsaXNlciBsJ29wdGlvbiAncHJlZml4Jy4gRWxsZQpwZXJtZXQgZCdpbnPpcmVyIHVuZSBpbnN0YW5jZSBkZSBoYXByb3h5IGRldmFudCB1bmUgYXBwbGljYXRpb24gc2FucyByaXNxdWVyCmQnaW5jb21wYXRpYmlsaXTpcyBk+2VzIOAgZGVzIGNsaWVudHMgcXVpIG5lIHN1cHBvcnRlcmFpZW50IHBhcyBkJ2FwcHJlbmRyZQpwbHVzIGQndW4gY29va2llIDoKCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKClBvdXIgaW5z6XJlciB1biBjb29raWUsIGVuIHMnYXNzdXJhbnQgcXUndW4gY2FjaGUgZW4gYW1vbnQgbmUgbGUgc3RvY2tlcmEgcGFzLApham91dGVyIGxlIG1vdCBjbOkgJ25vY2FjaGUnIGFwcuhzICdpbnNlcnQnIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlCgpQb3VyIGluc+lyZXIgdW4gY29va2llIHNldWxlbWVudCBzdWl0ZSBhdXggcmVxdep0ZXMgZGUgdHlwZSBQT1NULCBham91dGVyIGxlCm1vdCBjbOkgJ3Bvc3Rvbmx5JyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgcG9zdG9ubHkKCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQotIElsIGVzdCBwb3NzaWJsZSBkZSBjb21iaW5lciAnaW5zZXJ0JyBhdmVjICdpbmRpcmVjdCcgb3UgJ3Jld3JpdGUnIHBvdXIKICBzJ2FkYXB0ZXIg4CBkZXMgYXBwbGljYXRpb25zIGfpbulyYW50IGTpauAgbGUgY29va2llLCBhdmVjIHVuIGNvbnRlbnUKICBpbnZhbGlkZS4gSWwgc3VmZml0IHBvdXIgY2VsYSBkZSBsZXMgc3DpY2lmaWVyIHN1ciBsYSBt6m1lIGxpZ25lLgoKLSBkYW5zIGxlIGNhcyBv+SAnaW5zZXJ0JyBldCAnaW5kaXJlY3QnIHNvbnQgc3DpY2lmaelzLCBsZSBjb29raWUgbidlc3QgamFtYWlzCiAgdHJhbnNtaXMgYXUgc2VydmV1ciB2dSBxdSdpbCBuJ2VuIGEgcGFzIGNvbm5haXNzYW5jZSBldCBuZSBwb3VycmFpdCBwYXMgbGUKICBjb21wcmVuZHJlLgoKLSBpbCBlc3QgcGFydGljdWxp6HJlbWVudCByZWNvbW1hbmTpIGQndXRpbGlzZXIgJ25vY2FjaGUnIGVuIG1vZGUgaW5zZXJ0aW9uIHNpCiAgZGVzIGNhY2hlcyBwZXV2ZW50IHNlIHRyb3V2ZXIgZW50cmUgbGVzIGNsaWVudHMgZXQgbCdpbnN0YW5jZSBkdSBwcm94eS4gRGFucwogIGxlIGNhcyBjb250cmFpcmUsIHVuIGNhY2hlIEhUVFAgMS4wIHBvdXJyYWl0IGNhY2hlciBsYSBy6XBvbnNlLCBpbmNsdWFudCBsZQogIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBpbnPpcuksIGRvbmMgcHJvdm9xdWVyIGRlcyBjaGFuZ2VtZW50cyBkZSBzZXJ2ZXVycyBwb3VyCiAgZGVzIGNsaWVudHMgcGFydGFnZWFudCBsZSBt6m1lIGNhY2hlLgoKLSBsZSBtb2RlICdwcmVmaXgnIG5lIG7pY2Vzc2l0ZSBwYXMgZCd1dGlsaXNlciAnaW5kaXJlY3QnLCAnbm9jYWNoZScsIG5pCiAgJ3Bvc3Rvbmx5JywgY2FyIHRvdXQgY29tbWUgbGUgbW9kZSAncmV3cml0ZScsIGlsIHMnYXBwdWllIHN1ciB1biBjb29raWUKICBwculzZW506SBwYXIgbCdhcHBsaWNhdGlvbiBxdWkgZXN0IGNlbnPpZSBzYXZvaXIg4CBxdWVsIG1vbWVudCBpbCBwZXV0CiAg6nRyZSDpbWlzIHNhbnMgcmlzcXVlLiBUb3V0ZWZvaXMsIGNvbW1lIGlsIG7pY2Vzc2l0ZSBkZSByZWN0aWZpZXIgbGUgY29va2llCiAgcHLpc2VudOkgcGFyIGxlIGNsaWVudCBkYW5zIGNoYXF1ZSByZXF16nRlIHVsdOlyaWV1cmUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlCiAgZGUgcydhc3N1cmVyIHF1ZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ciBjb21tdW5pcXVlcm9udCBzYW5zICJrZWVwLWFsaXZlCiAgSFRUUCIuIERhbnMgbGUgZG91dGUsIGlsIGVzdCByZWNvbW1hbmTpIGQndXRpbGlzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIuCgotIGxvcnNxdWUgbCdhcHBsaWNhdGlvbiBlc3QgYmllbiBjb25udWUsIGV0IHF1ZSBsZXMgcGFydGllcyBu6WNlc3NpdGFudCBkZSBsYQogIHBlcnNpc3RlbmNlIHNvbnQgc3lzdOltYXRpcXVlbWVudCBhY2PpZOllcyBwYXIgdW4gZm9ybXVsYWlyZSBlbiBtb2RlIFBPU1QsCiAgaWwgZXN0IHBsdXMgZWZmaWNhY2UgZW5jb3JlIGRlIGNvbWJpbmVyIGxlIG1vdCBjbOkgInBvc3Rvbmx5IiBhdmVjICJpbnNlcnQiCiAgZXQgImluZGlyZWN0IiwgY2FyIGxhIHBhZ2UgZCdhY2N1ZWlsIHJlc3RlIGNhY2hhYmxlLCBldCBjJ2VzdCBsJ2FwcGxpY2F0aW9uCiAgcXVpIGfocmUgbGUgJ2NhY2hlLWNvbnRyb2wnLgoKMi4xMCkgQXNzaWduYXRpb24gZCd1biBzZXJ2ZXVyIOAgdW5lIHZhbGV1ciBkZSBjb29raWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkJ2Fzc29jaWVyIGRlcyB2YWxldXJzIGRlIGNvb2tpZSDgIGRlcyBzZXJ2ZXVycwpwYXIgbGUgcGFyYW3odHJlICdzZXJ2ZXInLiBMYSBzeW50YXhlIGVzdCA6CgogICAgc2VydmVyIDxpZGVudGlmaWFudD4gPGFkcmVzc2VfaXA+Ojxwb3J0PiBjb29raWUgPHZhbGV1cj4KCi0gPGlkZW50aWZpYW50PiBlc3QgdW4gbm9tIHF1ZWxjb25xdWUgZGUgc2VydmV1ciB1dGlsaXPpIHBvdXIgbCdpZGVudGlmaWVyIGRhbnMgbGEKICBjb25maWd1cmF0aW9uIGV0IGxlcyBsb2dzLgotIDxhZHJlc3NlX2lwPjo8cG9ydD4gZXN0IGxlIGNvdXBsZSBhZHJlc3NlLXBvcnQgc3VyIGxlcXVlbCBsZSBzZXJ2ZXVyIOljb3V0ZS4KLSA8dmFsZXVyPiBlc3QgbGEgdmFsZXVyIOAgcmVjb25uYe50cmUgb3UgcG9zaXRpb25uZXIgZGFucyBsZSBjb29raWUuCgpFeGVtcGxlIDogbGUgY29va2llIFNFUlZFUklEIHBldXQgY29udGVuaXIgc2VydmVyMDEgb3Ugc2VydmVyMDIKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpBdHRlbnRpb24gOiBsYSBzeW50YXhlIGEgY2hhbmfpIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMC4KLS0tLS0tLS0tLS0KCjMpIFLpcGFydGl0ZXVyIGRlIGNoYXJnZSBhdXRvbm9tZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlIHJlbGFpcyBwZXV0IGVmZmVjdHVlciBsdWktbeptZSBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgbGVzIGRpZmbpcmVudHMKc2VydmV1cnMgZOlmaW5pcyBwb3VyIHVuIHNlcnZpY2UgZG9ubuksIGVuIG1vZGUgVENQIGNvbW1lIGVuIG1vZGUgSFRUUC4gUG91cgpjZWxhLCBvbiBwculjaXNlIGxlIG1vdCBjbOkgJ2JhbGFuY2UnIGRhbnMgbGEgZOlmaW5pdGlvbiBkdSBzZXJ2aWNlLArpdmVudHVlbGxlbWVudCBzdWl2aSBkdSBub20gZCd1biBhbGdvcml0aG1lIGRlIHLpcGFydGl0aW9uLiBKdXNxdSfgIGxhIHZlcnNpb24KMS4yLjExLCBzZXVsICdyb3VuZHJvYmluJyDpdGFpdCBn6XLpLCBldCBjJ2VzdCBhdXNzaSBsYSB2YWxldXIgaW1wbGljaXRlIHBhcgpk6WZhdXQuIEF2ZWMgbGEgdmVyc2lvbiAxLjIuMTIsIGxlIG5vdXZlYXUgbW90IGNs6SAnc291cmNlJyBlc3QgYXBwYXJ1LiBMYQp2ZXJzaW9uIDEuMy4xMCBhIOlnYWxlbWVudCBhcHBvcnTpIGxlIG1vdCBjbOkgJ3VyaScuIElsIGVzdCDpdmlkZW50IHF1J2VuIGNhcwpkJ3V0aWxpc2F0aW9uIGR1IHLpcGFydGl0ZXVyIGludGVybmUsIGlsIG5lIGZhdWRyYSBwYXMgc3DpY2lmaWVyIGQnYWRyZXNzZSBkZQpkaXNwYXRjaCwgZXQgcXUnaWwgZmF1ZHJhIGF1IG1vaW5zIHVuIHNlcnZldXIuCgpFeGVtcGxlIDogbeptZSBxdWUgcHLpY+lkZW1tZW50IGVuIHLpcGFydGl0aW9uIGludGVybmUKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6XRlcm1pbmVyIGF1dG9tYXRpcXVlbWVudCBsZSBwb3J0CmR1IHNlcnZldXIgdmVycyBsZXF1ZWwgc2VyYSBlbnZveellIGxhIGNvbm5leGlvbiwgZW4gZm9uY3Rpb24gZHUgcG9ydCBkJ+ljb3V0ZQpzdXIgbGVxdWVsIGxlIGNsaWVudCBzJ2VzdCBjb25uZWN06S4gRW4gZWZmZXQsIGlsIHkgYSA0IHBvc3NpYmlsaXTpcyBwb3VyIGxlCmNoYW1wIDxwb3J0PiBkZSBsJ2FkcmVzc2Ugc2VydmV1ciA6CgogIC0gbm9uIHNw6WNpZmnpIG91IG51bCA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24uCgogIC0gdmFsZXVyIG51belyaXF1ZSAoc2V1bCBjYXMgc3VwcG9ydOkgcG91ciBsZXMgdmVyc2lvbnMgYW506XJpZXVyZXMpIDoKICAgIGxlIHNlcnZldXIgcmVjZXZyYSBsYSBjb25uZXhpb24gc3VyIGxlIHBvcnQgZOlzaWdu6S4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJysnIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgYXVxdWVsIG9uIGFqb3V0ZSBsYSB2YWxldXIgZOlzaWdu6WUuCiAgICAKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnLScgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBkdXF1ZWwgb24gc291c3RyYWl0IGxhIHZhbGV1cgogICAgZOlzaWdu6WUuCiAgICAKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBzaW11bHRhbukgZGVzIHBvcnRzIDgwIGV0IDgxIGV0IDgwODAtODA4OQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MCw6ODEsOjgwODAtODA4OQogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKIyByZWxheWFnZSBUQ1AgZGVzIHBvcnRzIDI1LCAzODkgZXQgNjYzIHZlcnMgbGVzIHBvcnRzIDEwMjUsIDEzODkgZXQgMTY2MwoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6Mzg5LDo2NjMKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOisxMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6KzEwMDAKCkNvbW1lIGluZGlxdekgcHLpY+lkZW1tZW50LCBsYSB2ZXJzaW9uIDEuMi4xMiBhcHBvcnRhIGxlIG5vdXZlYXUgbW90IGNs6Qonc291cmNlJy4gTG9yc3F1ZSBjZWx1aS1jaSBlc3QgdXRpbGlz6SwgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBlc3QgaGFjaOllIGV0CmRpc3RyaWJ16WUgZGUgbWFuaehyZSBob21vZ+huZSBwYXJtaSBsZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMsIGRlIHNvcnRlIHF1J3VuZQpt6m1lIGFkcmVzc2UgSVAgYWlsbGUgdG91am91cnMgc3VyIGxlIG3qbWUgc2VydmV1ciB0YW50IHF1J2lsIG4neSBhIGF1Y3VuCmNoYW5nZW1lbnQgZGFucyBsZSBub21icmUgZGUgc2VydmV1cnMgZGlzcG9uaWJsZXMuIENlY2kgcGV1dCDqdHJlIHV0aWxpc+kgcGFyCmV4ZW1wbGUgcG91ciBhdHRhY2hlciBsZSBIVFRQIGV0IGxlIEhUVFBTIHN1ciB1biBt6m1lIHNlcnZldXIgcG91ciB1biBt6m1lCmNsaWVudC4gQ2VsYSBwZXV0IOlnYWxlbWVudCDqdHJlIHV0aWxpc+kgcG91ciBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UKbG9yc3F1J3VuZSBwYXJ0aWUgZGUgbGEgcG9wdWxhdGlvbiBkZXMgY2xpZW50cyBuJ2FjY2VwdGUgcGFzIGxlcyBjb29raWVzLiBEYW5zCmNlIGNhcywgc2V1bHMgY2VzIGRlcm5pZXJzIHNlcm9udCBwZXJ0dXJi6XMgcGFyIGxhIHBlcnRlIGQndW4gc2VydmV1ci4KCk5PVEU6IGlsIGVzdCBpbXBvcnRhbnQgZGUgcHJlbmRyZSBlbiBjb21wdGUgbGUgZmFpdCBxdWUgYmVhdWNvdXAgZCdpbnRlcm5hdXRlcwogICAgICBuYXZpZ3VlbnQg4CB0cmF2ZXJzIGRlcyBmZXJtZXMgZGUgcHJveGllcyBxdWkgYXNzaWduZW50IGRlcyBhZHJlc3NlcyBJUAogICAgICBkaWZm6XJlbnRlcyDgIGNoYXF1ZSByZXF16nRlLiBEJ2F1dHJlcyBpbnRlcm5hdXRlcyB1dGlsaXNlbnQgZGVzIGxpZW5zIOAKICAgICAgbGEgZGVtYW5kZSBldCBvYnRpZW5uZW50IHVuZSBhZHJlc3NlIElQIGRpZmbpcmVudGUg4CBjaGFxdWUgY29ubmV4aW9uLiBEZQogICAgICBjZSBmYWl0LCBsZSBwYXJhbeh0cmUgJ3NvdXJjZScgZG9pdCDqdHJlIHV0aWxpc+kgYXZlYyB1bmUgZXh0cuhtZQogICAgICBwculjYXV0aW9uLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgojIGFzc3VyZXIgcXUndW5lIG3qbWUgYWRyZXNzZSBJUCBpcmEgc3VyIGxlIG3qbWUgc2VydmV1ciBwb3VyIHRvdXQgc2VydmljZQoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugc291cmNlCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMgoKIyBhbelsaW9yZXIgbGEgcGVyc2lzdGFuY2UgcGFyIGwndXRpbGlzYXRpb24gZGUgbGEgc291cmNlIGVuIHBsdXMgZHUgY29va2llIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yIGNvb2tpZSBzZXJ2ZXIwMgoKRGUgcGx1cywgdGVsIHF1J2luZGlxdekgY2ktZGVzc3VzLCBsYSB2ZXJzaW9uIDEuMy4xMCBhIGludHJvZHVpdCBsZSBtb3QgY2zpCid1cmknLiBJbCBlc3QgdHLocyBwcmF0aXF1ZSBkYW5zIGxlIGNhcyBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgZW50cmUgZGVzCnJldmVyc2UtcHJveHktY2FjaGVzLCBwYXJjZSBxdSdpbCB1dGlsaXNlcmEgbGUgculzdWx0YXQgZCd1biBoYWNoYWdlIGRlIGwnVVJJCnBvdXIgY2hvaXNpciB1biBzZXJ2ZXVyLCBjZSBxdWkgYXVyYSBwb3VyIGVmZmV0IGQnb3B0aW1pc2VyIGxlIHRhdXggZGUgY2FjaGUKZHUgZmFpdCBxdWUgbGEgbeptZSBVUkkgc2VyYSB0b3Vqb3VycyBlbnZveellIGF1IG3qbWUgY2FjaGUuIENlIG1vdC1jbOkgbidlc3QKYXV0b3Jpc+kgcXUnZW4gbW9kZSBIVFRQLgoKRXhhbXBsZSA6Ci0tLS0tLS0tLQoKIyBFbnZvaWUgdG91am91cnMgdW5lIFVSSSBkb25u6WUgYXUgbeptZSBzZXJ2ZXVyCgogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDozMTI4CiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSB1cmkKICAgICAgICBzZXJ2ZXIgc3F1aWQxIDE5Mi4xNjguMS4xCiAgICAgICAgc2VydmVyIHNxdWlkMiAxOTIuMTY4LjEuMgoKTGEgdmVyc2lvbiAxLjMuMTQgYSBhcHBvcnTpIHVuZSBub3V2ZWxsZSBt6XRob2RlICdiYWxhbmNlIHVybF9wYXJhbScuIEVsbGUKY29uc2lzdGUg4CBzZSBiYXNlciBzdXIgdW4gcGFyYW3odHJlIHBhc3PpIGRhbnMgbCdVUkwgcG91ciBlZmZlY3R1ZXIgdW4gaGFjaGFnZQp1dGlsaXPpIHBvdXIgZOl0ZXJtaW5lciBsZSBzZXJ2ZXVyIOAgdXRpbGlzZXIuIENlY2kgZXN0IHByaW5jaXBhbGVtZW50IHV0aWxlCnBvdXIgZGVzIGFwcGxpY2F0aW9ucyBuJ2F5YW50IHBhcyB1bmUgZXhpZ2VuY2Ugc3RyaWN0ZSBkZSBwZXJzaXN0YW5jZSwgbWFpcwpwb3VyIGxlc3F1ZWxsZXMgZWxsZSBwcm9jdXJlIHVuIGdhaW4gZGUgcGVyZm9ybWFuY2Ugbm90YWJsZSBkYW5zIGRlcwplbnZpcm9ubmVtZW50cyBv+SBpbCBuJ2VzdCBwYXMgdG91am91cnMgcG9zc2libGUgZCd1dGlsaXNlciBkZXMgY29va2llcy4gRW4gY2FzCmQnYWJzZW5jZSBkdSBwYXJhbeh0cmUgZGFucyBsJ1VSTCwgYWxvcnMgdW5lIHLpcGFydGl0aW9uIGRlIHR5cGUgJ3JvdW5kIHJvYmluJwplc3QgZWZmZWN0dellLgoKRXhhbXBsZSA6Ci0tLS0tLS0tLQoKIyBoYWNoZSBsZSBwYXJhbeh0cmUgImJhc2tldF9pZCIgZGFucyBsJ1VSTCBwb3VyIGTpdGVybWluZXIgbGUgc2VydmV1cgoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6MzEyOAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2UgdXJsX3BhcmFtIGJhc2tldF9pZAogICAgICAgIHNlcnZlciBlYml6MSAxOTIuMTY4LjEuMQogICAgICAgIHNlcnZlciBlYml6MiAxOTIuMTY4LjEuMgoKCjMuMSkgU3VydmVpbGxhbmNlIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHRlc3RlciBsJ+l0YXQgZGVzIHNlcnZldXJzIHBhciDpdGFibGlzc2VtZW50IGRlIGNvbm5leGlvbgpUQ1Agb3UgcGFyIGVudm9pIGQndW5lIHJlcXXqdGUgSFRUUC4gVW4gc2VydmV1ciBob3JzIGQndXNhZ2UgbmUgc2VyYSBwYXMKdXRpbGlz6SBkYW5zIGxlIHByb2Nlc3N1cyBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gUG91ciBhY3RpdmVyIGxhCnN1cnZlaWxsYW5jZSwgYWpvdXRlciBsZSBtb3QgY2zpICdjaGVjaycg4CBsYSBmaW4gZGUgbGEgZOljbGFyYXRpb24gZHUgc2VydmV1ci4KSWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBsJ2ludGVydmFsbGUgKGVuIG1pbGxpc2Vjb25kZXMpIHPpcGFyYW50IGRldXgKdGVzdHMgZHUgc2VydmV1ciBwYXIgbGUgcGFyYW3odHJlICJpbnRlciIsIGxlIG5vbWJyZSBkJ+ljaGVjcyBhY2NlcHTpcyBwYXIgbGUKcGFyYW3odHJlICJmYWxsIiwgZXQgbGUgbm9tYnJlIGRlIHN1Y2PocyBhdmFudCByZXByaXNlIHBhciBsZSBwYXJhbeh0cmUgInJpc2UiLgpMZXMgcGFyYW3odHJlcyBub24gcHLpY2lz6XMgcHJlbm5lbnQgbGVzIHZhbGV1cnMgc3VpdmFudGVzIHBhciBk6WZhdXQgOgoKIC0gaW50ZXIgOiAyMDAwCiAtIHJpc2UgIDogMgogLSBmYWxsICA6IDMKIC0gcG9ydCAgOiBwb3J0IGRlIGNvbm5leGlvbiBkdSBzZXJ2ZXVyCiAtIGFkZHIgIDogYWRyZXNzZSBkZSBjb25uZXhpb24gZHUgc2VydmV1ciAocGFyIGRlZmF1dDogYWRyZXNzZSBkdSBzZXJ2ZXVyKQogCkxlIG1vZGUgcGFyIGTpZmF1dCBjb25zaXN0ZSDgIOl0YWJsaXIgZGVzIGNvbm5leGlvbnMgVENQIHVuaXF1ZW1lbnQuIERhbnMKY2VydGFpbnMgY2FzIGRlIHBhbm5lcywgZGVzIHNlcnZldXJzIHBldXZlbnQgY29udGludWVyIOAgYWNjZXB0ZXIgbGVzCmNvbm5leGlvbnMgc2FucyBsZXMgdHJhaXRlci4gRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE2LCBoYXByb3h5IGVzdCBlbiBtZXN1cmUKZCdlbnZveWVyIGRlcyByZXF16nRlcyBIVFRQIGNvdXJ0ZXMgZXQgdHLocyBwZXUgY2/7dGV1c2VzLiBMZXMgdmVyc2lvbnMgMS4xLjE2CmV0IDEuMS4xNyB1dGlsaXNlbnQgIk9QVElPTlMgLyBIVFRQLzEuMCIuIERhbnMgbGVzIHZlcnNpb25zIDEuMS4xOCDgIDEuMS4yMCwKbGVzIHJlcXXqdGVzIG9udCDpdOkgY2hhbmfpZXMgZW4gIk9QVElPTlMgKiBIVFRQLzEuMCIgcG91ciBkZXMgcmFpc29ucyBkZQpjb250cvRsZSBkJ2FjY+hzIGF1eCByZXNzb3VyY2VzLiBDZXBlbmRhbnQsIGNldHRlIHJlcXXqdGUgZG9jdW1lbnTpZSBkYW5zIGxhClJGQzIwNjggbidlc3QgcGFzIGNvbXByaXNlIHBhciB0b3VzIGxlcyBzZXJ2ZXVycy4gRG9uYyDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uCjEuMS4yMSwgbGEgcmVxdep0ZSBwYXIgZOlmYXV0IGVzdCByZXZlbnVlIOAgIk9QVElPTlMgLyBIVFRQLzEuMCIsIG1haXMgaWwgZXN0CnBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgbGEgcGFydGllIFVSSS4gTGVzIHJlcXXqdGVzIE9QVElPTlMgcHLpc2VudGVudApsJ2F2YW50YWdlIGQn6nRyZSBmYWNpbGVtZW50IGV4dHJhY3RpYmxlcyBkZXMgbG9ncywgZXQgZGUgbmUgcGFzIGluZHVpcmUKZCdhY2PocyBhdXggZmljaGllcnMgY/R06SBzZXJ2ZXVyLiBTZXVsZXMgbGVzIHLpcG9uc2VzIDJ4eCBldCAzeHggc29udApjb25zaWTpcullcyB2YWxpZGVzLCBsZXMgYXV0cmVzICh5IGNvbXByaXMgbm9uLXLpcG9uc2VzKSBhYm91dGlzc2VudCDgIHVuCuljaGVjLiBMZSB0ZW1wcyBtYXhpbWFsIGltcGFydGkgcG91ciB1bmUgculwb25zZSBlc3Qg6WdhbCDgIGwnaW50ZXJ2YWxsZSBlbnRyZQpkZXV4IHRlc3RzIChwYXJhbeh0cmUgImludGVyIikuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBzcOljaWZpZXIgbCdvcHRpb24KImh0dHBjaGsiLCDpdmVudHVlbGxlbWVudCBzdWl2aWUgZCd1bmUgbel0aG9kZSBldCBkJ3VuZSBVUkkuIEwnb3B0aW9uICJodHRwY2hrIgphY2NlcHRlIGRvbmMgNCBmb3JtZXMgOgoKICAtIG9wdGlvbiBodHRwY2hrICAgICAgICAgICAgICAgLT4gT1BUSU9OUyAvIEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBVUkkgICAgICAgICAgIC0+IE9QVElPTlMgPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJICAgICAgLT4gPE1FVEg+IDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSBWRVIgIC0+IDxNRVRIPiA8VVJJPiA8VkVSPgoKSEFQcm94eSBlc3Qgc291dmVudCB1dGlsaXPpIHBvdXIgcmVsYXllciBkaXZlcnMgcHJvdG9jb2xlcyByZXBvc2FudCBzdXIgVENQLAp0ZWxzIHF1ZSBIVFRQUywgU01UUCBvdSBMREFQLCBsZSBwbHVzIGNvbW11biDpdGFudCBIVFRQUy4gVW4gcHJvYmzobWUgYXNzZXoKY291cmFtbWVudCByZW5jb250cukgZGFucyBsZXMgZGF0YSBjZW50ZXJzIGVzdCBsZSBiZXNvaW4gZGUgcmVsYXllciBkdSB0cmFmaWMKdmVycyBkZXMgc2VydmV1cnMgbG9pbnRhaW5zIHRvdXQgZW4gbWFpbnRlbmFudCBsYSBwb3NzaWJpbGl06SBkZSBiYXNjdWxlciBzdXIKdW4gc2VydmV1ciBkZSBzZWNvdXJzLiBMZXMgdGVzdHMgcHVyZW1lbnQgVENQIG5lIHN1ZmZpc2VudCBwYXMgdG91am91cnMgZGFucwpjZXMgc2l0dWF0aW9ucyBjYXIgbCdvbiB0cm91dmUgc291dmVudCwgZGFucyBsYSBjaGHubmUsIGRlcyBwcm94aWVzLCBmaXJld2FsbHMKb3UgculwYXJ0aXRldXJzIGRlIGNoYXJnZSBxdWkgcGV1dmVudCBhY3F1aXR0ZXIgbGEgY29ubmV4aW9uIGF2YW50IHF1J2VsbGUKbidhdHRlaWduZSBsZSBzZXJ2ZXVyLiBMYSBzZXVsZSBzb2x1dGlvbiDgIGNlIHByb2Js6G1lIGVzdCBkJ2Vudm95ZXIgZGVzIHRlc3RzCmFwcGxpY2F0aWZzLiBDb21tZSBsYSBkZW1hbmRlIHBvdXIgbGVzIHRlc3RzIEhUVFBTIGVzdCDpbGV26WUsIGNlIHRlc3QgYSDpdOkKaW1wbOltZW506SBlbiB2ZXJzaW9uIDEuMi4xNSBzdXIgbGEgYmFzZSBkZSBtZXNzYWdlcyBTU0x2MyBDTElFTlQgSEVMTE8uIFBvdXIKbCdhY3RpdmVyLCB1dGlsaXNlciAib3B0aW9uIHNzbC1oZWxsby1jaGsiLiBDZWNpIGVudmVycmEgZGVzIG1lc3NhZ2VzIFNTTHYzCkNMSUVOVCBIRUxMTyBhdXggc2VydmV1cnMsIGVuIGFubm9u52FudCB1biBzdXBwb3J0IHBvdXIgbGEgbWFqb3JpdOkgZGVzCmFsZ29yaXRobWVzIGRlIGNoaWZmcmVtZW50LiBTaSBlbiByZXRvdXIsIGxlIHNlcnZldXIgZW52b2llIGNlIHF1aSByZXNzZW1ibGUg4Ap1bmUgculwb25zZSBTU0x2MyBTRVJWRVIgSEVMTE8gb3UgQUxFUlQgKHJlZnVzIGRlcyBhbGdvcml0aG1lcyksIGFsb3JzIGxhCnLpcG9uc2Ugc2VyYSBjb25zaWTpcullIGNvbW1lIHZhbGlkZS4gTm90ZXIgcXUnQXBhY2hlIG5lIHByb2R1aXQgcGFzIGRlIGxvZwpsb3JzcXUnaWwgcmXnb2l0IGRlcyBtZXNzYWdlcyBIRUxMTywgY2UgcXVpIGVuIGZhaXQgdW4gdHlwZSBkZSBtZXNzYWdlCnBhcmZhaXRlbWVudCBhZGFwdOkg4CBjZSBiZXNvaW4uCgpMYSB2ZXJzaW9uIDEuMy4xMCBlc3QgYWNjb21wYWdu6WUgZCd1biBub3V2ZWF1IHRlc3QgZCfpdGF0IHBvdXIgbGUgU01UUC4gUGFyCmTpZmF1dCwgaWwgY29uc2lzdGUg4CBlbnZveWVyICJIRUxPIGxvY2FsaG9zdCIgYXV4IHNlcnZldXJzLCBldCDgIGF0dGVuZHJlIGxlCm1lc3NhZ2UgIjI1MCIgZW4gcmV0b3VyLiBOb3RleiBxdSdpbCBwZXV0IGF1c3NpIGVudm95ZXIgdW5lIHJlcXXqdGUgcGx1cwpzcOljaWZpcXVlIDoKCiAgLSBvcHRpb24gc210cGNoayAgICAgICAgICAgICAgICAgICAgICAgICAtPiBlbnZvaWUgIkhFTE8gbG9jYWxob3N0IgogIC0gb3B0aW9uIHNtdHBjaGsgRUhMTyBtYWlsLm15ZG9tYWluLmNvbSAgLT4gZW52b2llIGNlIG1lc3NhZ2UgRVNNVFAKClZvaXIgbGVzIGV4ZW1wbGVzIGNpLWFwcuhzLiAgICAgICAgCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6WZpbmlyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzLAp1dGlsaXPpcyB1bmlxdWVtZW50IGxvcnNxdSdhdWN1biBkZXMgYXV0cmVzIHNlcnZldXJzIG5lIGZvbmN0aW9ubmUuIFBvdXIgY2VsYSwKYWpvdXRlciBsZSBtb3QgY2zpICJiYWNrdXAiIHN1ciBsYSBsaWduZSBkZSBk6WZpbml0aW9uIGR1IHNlcnZldXIuIFVuIHNlcnZldXIKZGUgc2Vjb3VycyBuJ2VzdCBhcHBlbOkgcXVlIGxvcnNxdWUgdG91cyBsZXMgc2VydmV1cnMgbm9ybWF1eCwgYWluc2kgcXVlIHRvdXMKbGVzIHNlcnZldXJzIGRlIHNlY291cnMgcXVpIGxlIHBy6WPoZGVudCBzb250IGhvcnMgZCd1c2FnZS4gSWwgbid5IGEgZG9uYyBwYXMKZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHBhciBk6WZhdXQuIEEgcGFydGlyCmRlIGxhIHZlcnNpb24gMS4yLjksIGlsIGVzdCBwb3NzaWJsZSBkZSBsZXMgdXRpbGlzZXIgc2ltdWx0YW7pbWVudCBncuJjZSDgCmwnb3B0aW9uICdhbGxiYWNrdXBzJy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycyBwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMKZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlcgpkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZSByZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3Tpcwpk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlIGRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlCnF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsIGNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuIElsCmVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50IHZlcnMgdW5lIGFkcmVzc2UgZGlmZulyZW50ZSAKZGUgY2VsbGUgZGUgc2VydmljZS4gQ2VsYSBwZXJtZXQgZCd1dGlsaXNlciwgc3VyIGxhIG1hY2hpbmUgZmFpc2FudCBmb25jdGlvbm5lcgpIQXByb3h5LCB1biBk6W1vbiBwZXJtZXR0YW50IGRlcyB0ZXN0cyBzcGVjaWZpcXVlcyAoIFJFR0VYIHN1ciB1biBy6XN1bHRhdCBldApiYXNjdWxlbWVudCBkZSBwbHVzaWV1cnMgZmVybWVzIGVuIGNhcyBkJ2VycmV1ciBzdXIgbCd1bmUgZCdlbGxlcykuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50Cmwn6XRhdCBjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsClNJR0hVUCBhdSBwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdAplbnZveekgZGFucyBsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaQplbGxlIGVzdCBhY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MKbG9jYWwgZW4gbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkRlcHVpcyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBwbHVzaWV1cnMgc2VydmV1cnMgcGV1dmVudCBwYXJ0YWdlciBsYQpt6m1lIHZhbGV1ciBkZSBjb29raWUuIEMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gbW9kZSBiYWNrdXAsIHBvdXIKc+lsZWN0aW9ubmVyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzIHBvdXIgdW4gc2VydmV1ciBkb25u6SwgcG91ciBtZXR0cmUgZW4Kb2V1dnJlIGwnYXJy6nQgZW4gZG91Y2V1ciBkJ3VuIHNlcnZldXIsIG91IHBvdXIgZGlyaWdlciBsZXMgY2xpZW50cwp0ZW1wb3JhaXJlbWVudCB2ZXJzIHVuZSBwYWdlIGQnZXJyZXVyIGVuIGF0dGVuZGFudCBsZSByZWTpbWFycmFnZSBkJ3VuZQphcHBsaWNhdGlvbi4gTGUgcHJpbmNpcGUgZXN0IHF1ZSBsb3JzcXUndW4gc2VydmV1ciBlc3QgZOl0ZWN06SBjb21tZSBpbm9w6XJhbnQsCmxlIHByb3h5IGNoZXJjaGVyYSBsZSBwcm9jaGFpbiBzZXJ2ZXVyIHBvc3PpZGFudCBsYSBt6m1lIHZhbGV1ciBkZSBjb29raWUgcG91cgpjaGFxdWUgY2xpZW50IHF1aSBsZSBkZW1hbmRlcmEuIFMnaWwgbmUgdHJvdXZlIHBhcyBkZSBzZXJ2ZXVyIG5vcm1hbCwgYWxvcnMgaWwKbGUgY2hlcmNoZXJhIHBhcm1pIGxlcyBzZXJ2ZXVycyBkZSBiYWNrdXAuIENvbnN1bHRlciBsZSBndWlkZSBkJ2FyY2hpdGVjdHVyZQpwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KIyBjb25mIGR1IHBhcmFncmFwaGUgMykgYXZlYyBzdXJ2ZWlsbGFuY2UgVENQCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvaW5kZXguaHRtbCBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayAvaW5kZXguaHRtbAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBpZGVtIGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6IHd3dycKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgculwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZSBiYXPpZSBzdXIgbGUgcHLpZml4ZSBkZSBjb29raWUsIGV0IGFycup0IGVuCiMgZG91Y2V1ciB1dGlsaXNhbnQgdW4gc2Vjb25kIHBvcnQgKDgxKSBqdXN0ZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICBzZXJ2ZXIgd2ViMS1ub3JtIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMi1ub3JtIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMS1zdG9wIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgwIGJhY2t1cAogICAgICAgc2VydmVyIHdlYjItc3RvcCAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MCBiYWNrdXAKCiMgSW5zZXJ0aW9uIGF1dG9tYXRpcXVlIGRlIGNvb2tpZSBkYW5zIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgZXQgc3VwcHJlc3Npb24KIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUsIHRvdXQgZW4gaW5kaXF1YW50IGF1eCBjYWNoZXMgZGUgbmUgcGFzIGdhcmRlcgojIGNlIGNvb2tpZS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgojIGlkZW0gYXZlYyBzZXJ2ZXVyIGFwcGxpY2F0aWYgZGUgc2Vjb3VycyBzdXIgYXV0cmUgc2l0ZSwgZXQgc2VydmV1ciBkZSBwYWdlcyBkJ2VycmV1cnMKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjAzIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKIyByZWxheWFnZSBTTVRQK1RMUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6NTg3CiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDI1IGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgcmVsYXlhZ2UgSFRUUFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6NDQzCiAgICAgICAgbW9kZSB0Y3AKCW9wdGlvbiBzc2wtaGVsbG8tY2hrCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKIyBVdGlsaXNhdGlvbiBkJ3VuIGdyb3VwZSBkZSBzZXJ2ZXVycyBwb3VyIGxlIGJhY2t1cCAobuljZXNzaXRlIGhhcHJveHkgMS4yLjkpCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKICAgICAgICBzZXJ2ZXIgaW5zdDEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIGNoZWNrCiAgICAgICAgc2VydmVyIGluc3QyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgY2hlY2sKICAgICAgICBzZXJ2ZXIgYmFjazEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciBiYWNrMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sgYmFja3VwCiAgICAgICAgb3B0aW9uIGFsbGJhY2t1cHMgICMgYWxsIGJhY2t1cHMgd2lsbCBiZSB1c2VkCgoKMy4yKSBSZWNvbm5leGlvbiB2ZXJzIHVuIHLpcGFydGl0ZXVyIGVuIGNhcyBkJ+ljaGVjIGRpcmVjdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgc2kgdW4gc2VydmV1ciBk6WZpbmkgcGFyIHVuIGNvb2tpZSBuZSBy6XBvbmQgcGx1cywgbGVzIGNsaWVudHMKc2Vyb250IGTpZmluaXRpdmVtZW50IGFpZ3VpbGzpcyBkZXNzdXMg4CBjYXVzZSBkZSBsZXVyIGNvb2tpZSwgZXQgZGUgY2UgZmFpdCwKZOlmaW5pdGl2ZW1lbnQgcHJpdulzIGRlIHNlcnZpY2UuIExhIHNw6WNpZmljYXRpb24gZHUgcGFyYW3odHJlICdyZWRpc3BhdGNoJwphdXRvcmlzZSBkYW5zIGNlIGNhcyDgIHJlbnZveWVyIGxlcyBjb25uZXhpb25zIOljaG916WVzIHZlcnMgbGUgculwYXJ0aXRldXIKKGV4dGVybmUgb3UgaW50ZXJuZSkgYWZpbiBkJ2Fzc2lnbmVyIHVuIG5vdXZlYXUgc2VydmV1ciDgIGNlcyBjbGllbnRzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSByZWZ1cyBkZSBjb25uZXhpb24uCgpQYXIgZOlmYXV0IChldCBkYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgYW506XJpZXVyZXMpLCBsZSBwYXJhbeh0cmUKcmVkaXNwYXRjaCBuZSBzJ2FwcGxpcXVlIHF1J2F1eCDpY2hlY3MgZGUgY29ubmV4aW9uIGF1IHNlcnZldXIuIERlcHVpcyBsYQp2ZXJzaW9uIDEuMS4xNywgaWwgcydhcHBsaXF1ZSBhdXNzaSBhdXggY29ubmV4aW9ucyBkZXN0aW7pZXMg4CBkZXMgc2VydmV1cnMKaWRlbnRpZmnpcyBjb21tZSBob3JzIGQndXNhZ2UgcGFyIGxhIHN1cnZlaWxsYW5jZS4gU2kgbCdvbiBzb3VoYWl0ZSBtYWxncukKdG91dCBxdSd1biBjbGllbnQgZGlzcG9zYW50IGQndW4gY29va2llIGNvcnJlc3BvbmRhbnQg4CB1biBzZXJ2ZXVyIGTpZmVjdHVldXgKdGVudGUgZGUgcyd5IGNvbm5lY3RlciwgaWwgZmF1dCBwculjaXNlciBsJ29wdGlvbiAicGVyc2lzdCIgOgoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gcGVyc2lzdAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGRpc3BhdGNoIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKICAgICAgICByZWRpc3BhdGNoICMgcmVudm95ZXIgdmVycyBkaXNwYXRjaCBzaSBzZXJ2ZXVyIEhTLgoKCjMuMykgQXNzaWduYXRpb24gZGUgcG9pZHMgZGlmZulyZW50cyDgIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyZm9pcyBpbCBhcnJpdmUgZCdham91dGVyIGRlIG5vdXZlYXV4IHNlcnZldXJzIHBvdXIgYWNjcm/udHJlIGxhIGNhcGFjaXTpCmQndW5lIGZlcm1lIGRlIHNlcnZldXIsIG1haXMgbGUgbm91dmVhdSBzZXJ2ZXVyIGVzdCBzb2l0IGJlYXVjb3VwIHBsdXMgcGV0aXQKcXVlIGxlcyBhdXRyZXMgKGRhbnMgbGUgY2FzIGQndW4gYWpvdXQgZCd1cmdlbmNlIGRlIG1hdOlyaWVsIGRlIHLpY3Vw6XJhdGlvbiksCnNvaXQgcGx1cyBwdWlzc2FudCAobG9ycyBkJ3VuIGludmVzdGlzc2VtZW50IGRhbnMgZHUgbWF06XJpZWwgbmV1ZikuIFBvdXIgY2V0dGUKcmFpc29uLCBpbCBzZW1ibGUgcGFyZm9pcyBqdWRpY2lldXggZGUgcG91dm9pciBlbnZveWVyIHBsdXMgZGUgY2xpZW50cyB2ZXJzIGxlcwpwbHVzIGdyb3Mgc2VydmV1cnMuIEp1c3F1J+AgbGEgdmVyc2lvbiAxLjIuMTEsIGlsIOl0YWl0IG7pY2Vzc2FpcmUgZGUgculwbGlxdWVyCnBsdXNpZXVycyBmb2lzIGxlcyBk6WZpbml0aW9ucyBkZXMgc2VydmV1cnMgcG91ciBhdWdtZW50ZXIgbGV1ciBwb2lkcy4gRGVwdWlzCmxhIHZlcnNpb24gMS4yLjEyLCBsJ29wdGlvbiAnd2VpZ2h0JyBlc3QgZGlzcG9uaWJsZS4gSEFQcm94eSBjb25zdHJ1aXQgYWxvcnMKdW5lIHZ1ZSBkZXMgc2VydmV1cnMgZGlzcG9uaWJsZXMgbGEgcGx1cyBob21vZ+huZSBwb3NzaWJsZSBlbiBzZSBiYXNhbnQgc3VyCmxldXIgcG9pZHMgZGUgc29ydGUgcXVlIGxhIGNoYXJnZSBzZSBkaXN0cmlidWUgZGUgbGEgbWFuaehyZSBsYSBwbHVzIGxpc3NlCnBvc3NpYmxlLiBMZSBwb2lkcyBjb21wcmlzIGVudHJlIDEgZXQgMjU2IGRvaXQgcmVmbOl0ZXIgbGEgY2FwYWNpdOkgZCd1bgpzZXJ2ZXVyIHBhciByYXBwb3J0IGF1eCBhdXRyZXMuIExlIHBvaWRzIGRlIDEgZG9ubmUgbGEgZnLpcXVlbmNlIGQnYXBwYXJpdGlvbgpsYSBwbHVzIGZhaWJsZSwgZXQgMjU2IGxhIGZy6XF1ZW5jZSBsYSBwbHVzIOlsZXbpZS4gRGUgY2V0dGUgbWFuaehyZSwgc2kgdW4Kc2VydmV1ciBkaXNwYXJhaXQsIGxlcyBjYXBhY2l06XMgcmVzdGFudGVzIHNvbnQgdG91am91cnMgcmVzcGVjdOllcy4KCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiMgZGlzdHJpYnV0aW9uIOlxdWl0YWJsZSBzdXIgMiBvcHRlcm9uIGFuZCB1biBhbmNpZW4gcGVudGl1bTMKCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIHdlaWdodCAgOCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIHdlaWdodCAyMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHNlcnZlcjAzIHdlaWdodCAyNCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgc2VydmVyMDQgY2hlY2sgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxvcnNxdWUgbGUgcG9pZHMgbidlc3QgcGFzIHNw6WNpZmnpLCBsYSB2YWxldXIgcGFyIGTpZmF1dCBlc3Qg4CAxCgogIC0gbGUgcG9pZHMgbidpbXBhY3RlIHBhcyBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQgKGhlYWx0aCBjaGVja3MpLCBkb25jIGlsCiAgICBlc3QgcGx1cyBwcm9wcmUgZCd1dGlsaXNlciBsZXMgcG9pZHMgcXVlIGRlIHLpcGxpcXVlciBsZSBt6m1lIHNlcnZldXIKICAgIHBsdXNpZXVycyBmb2lzLgoKICAtIGxlcyBwb2lkcyBzJ2FwcGxpcXVlbnQg6WdhbGVtZW50IGF1eCBzZXJ2ZXVycyBkZSBiYWNrdXAgc2kgbCdvcHRpb24KICAgICdhbGxiYWNrdXBzJyBlc3QgcG9zaXRpb25u6WUuCgogIC0gbGUgcG9pZHMgcydhcHBsaXF1ZSBhdXNzaSDgIGxhIHLpcGFydGl0aW9uIHNlbG9uIGxhIHNvdXJjZQogICAgKCdiYWxhbmNlIHNvdXJjZScpLgoKICAtIHF1ZWxzIHF1ZSBzb2llbnQgbGVzIHBvaWRzLCBsZSBwcmVtaWVyIHNlcnZldXIgc2VyYSB0b3Vqb3VycyBhc3NpZ27pIGVuCiAgICBwcmVtaWVyLiBDZXR0ZSBy6GdsZSBmYWNpbGl0ZSBsZXMgZGlhZ25vc3RpY3MuCgogIC0gcG91ciBsZXMgcHVyaXN0ZXMsIGwnYWxnb3JpdGhtZSBkZSBjYWxjdWxhdGlvbiBkZSBsYSB2dWUgZGVzIHNlcnZldXJzIGRvbm5lCiAgICB1bmUgcHJpb3JpdOkgYXV4IHByZW1pZXJzIHNlcnZldXJzLCBkb25jIGxhIHZ1ZSBlc3QgbGEgcGx1cyB1bmlmb3JtZSBzaSBsZXMKICAgIHNlcnZldXJzIHNvbnQgZOljbGFy6XMgZGFucyBsJ29yZHJlIGNyb2lzc2FudCBkZSBsZXVycyBwb2lkcy4KCkxhIGRpc3RyaWJ1dGlvbiBkdSB0cmFmaWMgc3VpdnJhIGV4YWN0ZW1lbnQgbGUgc+lxdWVuY2VtZW50IHN1aXZhbnQgOgoKICAgICAgICBSZXF1ZXN0fCAgICAgICAgICAgICAgICAgICAxIDEgMSAxCiAgICAgICAgbnVtYmVyIHwgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMwogICAgICAgLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgcDMtODAwIHwgWCAuIC4gLiAuIC4gLiBYIC4gLiAuIC4gLgogICAgICAgIG9wdC0yMCB8IC4gWCAuIFggLiBYIC4gLiAuIFggLiBYIC4KICAgICAgICBvcHQtMjQgfCAuIC4gWCAuIFggLiBYIC4gWCAuIFggLiBYCgoKMy40KSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2VydGFpbnMgc2VydmV1cnMgd2ViIG11bHRpLXByb2Nlc3N1cyB0ZWxzIHF1J0FwYWNoZSBzb3VmZnJlbnQgZOhzIHF1J2lsIHkgYQp0cm9wIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcywgcGFyY2UgcXUnaWwgZXN0IHRy6HMgY2/7dGV1eCBkZSBmYWlyZQpmb25jdGlvbm5lciBkZXMgY2VudGFpbmVzIG91IGRlcyBtaWxsaWVycyBkZSBwcm9jZXNzdXMgc3VyIHVuIHN5c3TobWUuIFVuZQpzb2x1dGlvbiBjb25zaXN0ZSDgIGF1Z21lbnRlciBsZSBub21icmUgZGUgc2VydmV1cnMgZXQgZGUgculwYXJ0aXIgbGEgY2hhcmdlCmVudHJlIGV1eCwgbWFpcyBjZWxhIHBvc2UgdW4gcHJvYmzobWUgbG9yc3F1ZSBsZSBidXQgZXN0IHVuaXF1ZW1lbnQgZGUgculzaXN0ZXIK4CBkZXMgcGljcyBkZSBjaGFyZ2Ugb2NjYXNpb25uZWxzLgoKUG91ciBy6XNvdWRyZSBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIGZvbmN0aW9ubmFsaXTpIGEg6XTpIGltcGzpbWVudOllIGRhbnMKSEFQcm94eSAxLjIuMTMuIElsIHMnYWdpdCBkJ3VuZSBsaW1pdGUgIm1heGNvbm4iIHBhciBzZXJ2ZXVyLCBhc3NvY2npZSDgIHVuZQpmaWxlIGQnYXR0ZW50ZSBwYXIgc2VydmV1ciBldCBwYXIgcHJveHkuIENlY2kgdHJhbnNmb3JtZSBIQVByb3h5IGVuIHVuIHRhbXBvbgplbnRyZSBkZXMgbWlsbGllcnMgZGUgY2xpZW50cyBldCBxdWVscXVlcyBzZXJ2ZXVycy4gRGFucyBiaWVuIGRlcyBjYXMsIGxlIGZhaXQKZGUgZGltaW51ZXIgbGEgdmFsZXVyIG1heGNvbm4gYW3pbGlvcmVyYSBub3RhYmxlbWVudCBsZXMgcGVyZm9ybWFuY2VzIGRlcwpzZXJ2ZXVycyBldCBkaW1pbnVlcmEgbGVzIHRlbXBzIGRlIHLpcG9uc2Ugc2ltcGxlbWVudCBwYXJjZSBxdWUgbGVzIHNlcnZldXJzCnNlcm9udCBtb2lucyBjb25nZXN0aW9ubulzLgoKUXVhbmQgdW5lIHJlcXXqdGUgY2hlcmNoZSDgIGpvaW5kcmUgbidpbXBvcnRlIHF1ZWwgc2VydmV1ciwgbGUgcHJlbWllciBzZXJ2ZXVyCm5vbiBzYXR1cukgZXN0IHV0aWxpc+ksIGVuIHJlc3BlY3RhbnQgbCdhbGdvcml0aG1lIGRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZS4gU2kKdG91cyBsZXMgc2VydmV1cnMgc29udCBzYXR1culzLCBhbG9ycyBsYSByZXF16nRlIHNlcmEgbWlzZSBkYW5zIGxhIGZpbGUKZCdhdHRlbnRlIGdsb2JhbGUgZGUgbCdpbnN0YW5jZS4gRWxsZSBzb3J0aXJhIGRlIGNldHRlIGZpbGUgZCdhdHRlbnRlIGxvcnNxdWUKdG91dGVzIGxlcyByZXF16nRlcyBwculj6WRlbnRlcyBhdXJvbnQg6XTpIGxpYuly6WVzIGV0IHF1J3VuIHNlcnZldXIgYXVyYSDpdOkKbGli6XLpIGQndW5lIGNvbm5leGlvbiBwb3VyIGxhIHRyYWl0ZXIuCgpTaSB1bmUgcmVxdep0ZSBmYWl0IHLpZulyZW5jZSDgIHVuIHNlcnZldXIgZW4gcGFydGljdWxpZXIgKHAuZXg6IGhhY2hhZ2UgZCdJUApzb3VyY2UsIG91IHBlcnNpc3RhbmNlIHBhciBjb29raWUpLCBldCBxdWUgY2Ugc2VydmVyIGVzdCBzYXR1cuksIGFsb3JzIGxhCnJlcXXqdGUgc2VyYSBtaXNlIGRhbnMgbGEgZmlsZSBkJ2F0dGVudGUgZOlkaellIOAgY2Ugc2VydmV1ci4gQ2V0dGUgZmlsZQpkJ2F0dGVudGUgZXN0IHByaW9yaXRhaXJlIHN1ciBsYSBmaWxlIGQnYXR0ZW50ZSBnbG9iYWxlLCBkZSBzb3J0ZSBxdSdpbCBzb2l0CnBsdXMgZmFjaWxlIGQnYXR0ZWluZHJlIGxlIHNpdGUgcG91ciBsZXMgdXRpbGlzYXRldXJzIHF1aSBzJ3kgdHJvdXZlbnQgZOlq4ApxdWUgcG91ciBsZXMgbm91dmVhdXggdXRpbGlzYXRldXJzLgoKUG91ciBjZWxhLCBsZXMgbG9ncyBvbnQgZPsg6nRyZSBlbnJpY2hpcyBwb3VyIGluZGlxdWVyIGxlIG5vbWJyZSBkZSBzZXNzaW9ucwpwYXIgc2VydmV1ciwgbGEgcG9zaXRpb24gZGUgbGEgcmVxdep0ZSBkYW5zIGxlcyBmaWxlcyBkJ2F0dGVudGVzLCBldCBsZSB0ZW1wcwpwYXNz6SBlbiBmaWxlIGQnYXR0ZW50ZS4gQ2VjaSBhaWRlIGNvbnNpZOlyYWJsZW1lbnQg4CBmYWlyZSBkZSBsYSBwcul2aXNpb24gZGUKY2FwYWNpdOkuIFZvaXIgbGEgc2VjdGlvbiAnbG9ncycgcGx1cyBiYXMgcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBQcmVuZHJlIHNvaW4gZHUgUDMgcXVpIG4nYSBxdWUgMjU2IE1vIGRlIFJBTS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAyMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwMSAxOTIuMTY4LjIuMTo4MCBjb29raWUgczQgY2hlY2sgbWF4Y29ubiAyMDAgYmFja3VwCiAgICAgICAgc2VydmVyIHdlYi1leGN1c2UgMTkyLjE2OC4zLjE6ODAgY2hlY2sgYmFja3VwCgpDZXR0ZSBvcHRpb24gc2UgbW9udHJhIHNpIGVmZmljYWNlIHBvdXIgculkdWlyZSBsZXMgdGVtcHMgZGUgculwb25zZSBkZXMKc2VydmV1cnMgcXVlIGNlcnRhaW5zIHV0aWxpc2F0ZXVycyB2b3VsYWllbnQgdXRpbGlzZXIgZGVzIHZhbGV1cnMgdHJvcCBiYXNzZXMKcG91ciBhbelsaW9yZXIgbGVzIHBlcmZvcm1hbmNlcyBkZSBsZXVycyBzZXJ2ZXVycy4gU2V1bGVtZW50LCBpbHMgbifpdGFpZW50CmFsb3JzIHBsdXMgZW4gbWVzdXJlIGRlIHN1cHBvcnRlciBkZSB0cuhzIGZvcnRlcyBjaGFyZ2VzIHBhcmNlIHF1J2lsIG4n6XRhaXQKcGx1cyBwb3NzaWJsZSBkZSBsZXMgc2F0dXJlci4gUG91ciBjZXR0ZSByYWlzb24sIGxhIHZlcnNpb24gMS4yLjE0IGEgYXBwb3J06SBsYQpsaW1pdGF0aW9uIGR5bmFtaXF1ZSBkZSBjb25uZXhpb25zIGF2ZWMgbCdhZGRpdGlvbiBkdSBwYXJhbeh0cmUgIm1pbmNvbm4iLgpMb3JzcXVlIGNlIHBhcmFt6HRyZSBlc3QgYXNzb2Np6SDgICJtYXhjb25uIiwgaWwgYWN0aXZlIGxhIGxpbWl0YXRpb24gZHluYW1pcXVlCmJhc+llIHN1ciBsYSBjaGFyZ2UgZGUgbCdpbnN0YW5jZS4gTGUgbm9tYnJlIG1heGltYWwgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzCnN1ciB1biBzZXJ2ZXVyIGRldmllbnQgYWxvcnMgcHJvcG9ydGlvbm5lbCBhdSBub21icmUgZGUgc2Vzc2lvbnMgZGUgbCdpbnN0YW5jZQpwYXIgcmFwcG9ydCDgIHNvbiAnbWF4Y29ubicuIFVuIG1pbmltdW0gZGUgPG1pbmNvbm4+IHNlc3Npb25zIHNlcmEgdG91am91cnMKcGVybWlzIHF1ZWxsZSBxdWUgc29pdCBsYSBjaGFyZ2UuIENlY2kgYXNzdXJlcmEgcXVlIGxlcyBzZXJ2ZXVycyB0cmF2YWlsbGVyb250CmF1IG1laWxsZXVyIGRlIGxldXJzIHBlcmZvcm1hbmNlcyBzb3VzIGRlcyBjaGFyZ2VzIG5vcm1hbGVzLCBldCBxdSdpbHMgc2Vyb250CnRvdXQgZGUgbeptZSBjYXBhYmxlcyBkZSBzdXBwb3J0ZXIgZGUgZm9ydGVzIHBvaW50ZXMgbG9yc3F1ZSBu6WNlc3NhaXJlLiBMYQpsaW1pdGUgZHluYW1pcXVlIGVzdCBjYWxjdWzpZSBjb21tZSBjZWNpIDoKCiAgICBzcnYuZHluX2xpbWl0ID0gbWF4KHNydi5taW5jb25uLCBzcnYubWF4Y29ubiAqIGluc3Quc2VzcyAvIGluc3QubWF4Y29ubikKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgUHJlbmRyZSBzb2luIGR1IFAzIHF1aSBuJ2EgcXVlIDI1NiBNbyBkZSBSQU0uCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWluY29ubiAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAyMCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKRGFucyBsJ2V4ZW1wbGUgY2ktZGVzc3VzLCBsZSBzZXJ2ZXVyICJwZW50aXVtMy04MDAnIHJlY2V2cmEgYXUgcGx1cyAxMDAKY29ubmV4aW9ucyBzaW11bHRhbullcyBsb3JzcXVlIGwnaW5zdGFuY2UgZHUgcHJveHkgZW4gYXR0ZWluZHJhIDEwMDAwLCBldApyZWNldnJhIHNldWxlbWVudCAxMCBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHRhbnQgcXVlIGxlIHByb3h5IHNlcmEgc291cyBsZXMgMTAwMApzZXNzaW9ucy4KCklsIGVzdCBwb3NzaWJsZSBkZSBsaW1pdGVyIGxhIHRhaWxsZSBkZSBsYSBmaWxlIGQnYXR0ZW50ZSBkYW5zIGxlIGJ1dCBkZQpyZWRpc3RyaWJ1ZXIgbGVzIGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgdW4gc2VydmV1ciBlbiBwYXJ0aWN1bGllciBxdWkgc29udCB0cm9wCmxvaW4gcG91ciBhdm9pciB1bmUgY2hhbmNlIGQn6nRyZSBzZXJ2aWVzIGVuIHVuIHRlbXBzIHJhaXNvbm5hYmxlLiBDZWNpIG4nZXN0CmFjY2VwdGFibGUgcXVlIGRhbnMgbGUgY2FzIG/5IGwnYWZmaW5pdOkgZW50cmUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIgbidlc3QKcGFzIG9ibGlnYXRvaXJlLCBtYWlzIG1vdGl26WUgdW5pcXVlbWVudCBwYXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBwYXIKZXhlbXBsZSwgcGFyIGwndXRpbGlzYXRpb24gZCd1biBjYWNoZSBsb2NhbCBhdSBzZXJ2ZXVyLiBMJ29wdGlvbiAnbWF4cXVldWUnCnBlcm1ldCBkZSBwculjaXNlciBsYSBsaW1pdGUgcGFyIHNlcnZldXIsIHRlbCBxdWUgZGFucyBsJ2V4ZW1wbGUgY2ktZGVzc291cyA6CgouLi4gKG3qbWUgZXhlbXBsZSBxdWUgcHLpY+lkZW1tZW50KQogICAgICAgIHNlcnZlciBwZW50aXVtMy04MDAgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAgOCBtaW5jb25uIDEwIG1heGNvbm4gMTAwIGNoZWNrIG1heHF1ZXVlIDUwCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi4wRyAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDIwIG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sgbWF4cXVldWUgMjAwCiAgICAgICAgc2VydmVyIG9wdGVyb24tMi40RyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDI0IG1pbmNvbm4gMzAgbWF4Y29ubiAzMDAgY2hlY2sKCkVuIGwnYWJzZW5jZSBkdSBwYXJhbeh0cmUgJ21heHF1ZXVlJywgbGEgZmlsZSBkJ3VuIHNlcnZldXIgbidhIHBhcyBkZSBsaW1pdGUKZOlmaW5pZS4gRGFucyBsZSBjYXMgY29udHJhaXJlLCBsb3JzcXVlIGxhIGZpbGUgYXR0ZWludCBsYSBsaW1pdGUgZml46WUgcGFyCidtYXhxdWV1ZScsIGxlcyBjbGllbnRzIHNvbnQgZOlwbGFj6XMgdmVycyBsYSBmaWxlIGdsb2JhbGUuCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxhIHJlcXXqdGUgbmUgcmVzdGVyYSBwYXMgaW5k6WZpbmltZW50IGVuIGZpbGUgZCdhdHRlbnRlLCBlbGxlIGVzdAogICAgYXNzdWrpdGllIGF1IHBhcmFt6HRyZSAnY29udGltZW91dCcsIGV0IHNpIHVuZSByZXF16nRlIG5lIHBldXQgcGFzCiAgICBzb3J0aXIgZGUgbGEgZmlsZSBhdmFudCBjZSB0aW1lLW91dCwgc29pdCBwYXJjZSBxdWUgbGUgc2VydmV1ciBlc3QKICAgIHNhdHVy6Swgc29pdCBwYXJjZSBxdSdpbCB5IGEgdHJvcCBkZSByZXF16nRlcyBlbiBmaWxlIGQnYXR0ZW50ZSwKICAgIGFsb3JzIGVsbGUgZXhwaXJlcmEgYXZlYyB1bmUgZXJyZXVyIDUwMy4KCiAgLSBzaSBzZXVsIDxtaW5jb25uPiBlc3Qgc3DpY2lmaeksIGlsIGEgbGUgbeptZSBlZmZldCBxdWUgPG1heGNvbm4+CgogIC0gcG9zaXRpb25uZXIgZGVzIHZhbGV1cnMgdHJvcCBiYXNzZXMgcG91ciAnbWF4Y29ubicgcGV1dCBhbelsaW9yZXIgbGVzCiAgICBwZXJmb3JtYW5jZXMgbWFpcyBhdXNzaSBwZXJtZXR0cmUg4CBkZXMgdXRpbGlzYXRldXJzIHRyb3AgbGVudHMgZGUgYmxvcXVlcgogICAgdW4gc2VydmV1ciBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKCjMuNSkgQWJhbmRvbiBkZXMgcmVxdep0ZXMgYWJvcnTpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBwculzZW5jZSBkZSB0cuhzIGZvcnRlcyBjaGFyZ2VzLCBsZXMgc2VydmV1cnMgbWV0dHJvbnQgdW4gY2VydGFpbiB0ZW1wcyDgCnLpcG9uZHJlLiBMYSBmaWxlIGQnYXR0ZW50ZSBkdSBwcm94eSBzZSByZW1wbGlyYSwgZXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UKc3VpdnJvbnQgdW5lIGNyb2lzc2FuY2UgcHJvcG9ydGlvbm5lbGxlIOAgbGEgdGFpbGxlIGRlIGZpbGUgZCdhdHRlbnRlIGZvaXMKbGUgdGVtcHMgbW95ZW4gZGUgculwb25zZSBwYXIgc2Vzc2lvbi4gTG9yc3F1ZSBsZXMgY2xpZW50cyBhdHRlbmRyb250IHBsdXMgZGUKcXVlbHF1ZXMgc2Vjb25kZXMsIGlscyBjbGlxdWVyb250IHNvdXZlbnQgc3VyIGxlIGJvdXRvbiAnU1RPUCcgZGUgbGV1cgpuYXZpZ2F0ZXVyLCBsYWlzc2FudCBkZXMgcmVxdep0ZXMgaW51dGlsZXMgZW4gZmlsZSBkJ2F0dGVudGUgZXQgcmFsZW50aXNzYW50CmRvbmMgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgpDb21tZSBpbCBuJ3kgYSBhdWN1biBtb3llbiBkZSBkaXN0aW5ndWVyIHVuIHZyYWkgY2xpYyBzdXIgU1RPUCBkJ3VuZSBzaW1wbGUKZmVybWV0dXJlIGR1IGNhbmFsIGRlIHNvcnRpZSBzdXIgbGUgY2xpZW50IChzaHV0ZG93bihTSFVUX1dSKSksIGxlcyBhZ2VudHMgSFRUUApkb2l2ZW50IOp0cmUgY29uc2VydmF0ZXVycyBldCBjb25zaWTpcmVyIHF1ZSBsZSBjbGllbnQgbidhIHByb2JhYmxlbWVudCBmZXJt6QpxdWUgbGUgY2FuYWwgZGUgc29ydGllIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBUb3V0ZWZvaXMsIGNlY2kgaW50cm9kdWl0IGRlcwpyaXNxdWVzIGRlIGNvbmdlc3Rpb24gbG9yc3F1ZSBiZWF1Y291cCBkJ3V0aWxpc2F0ZXVycyBmb250IGRlIG3qbWUsIGV0IHMnYXbocmUKYXVqb3VyZCdodWkgY29tcGzodGVtZW50IGludXRpbGUgY2FyIHByb2JhYmxlbWVudCBhdWN1biBjbGllbnQgbmUgcmVmZXJtZSBsYQpzZXNzaW9uIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBDZXJ0YWlucyBhZ2VudHMgSFRUUCBzdXBwb3J0ZW50IGNlY2kgKFNxdWlkLApBcGFjaGUsIEhBUHJveHkpLCBldCBkJ2F1dHJlcyBuZSBsZSBzdXBwb3J0ZW50IHBhcyAoVFVYLCBldCBsYSBwbHVwYXJ0IGRlcwpy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIG1hdOlyaWVscykuIERvbmMgbGEgcHJvYmFiaWxpdOkgcG91ciBxdSd1bmUgbm90aWZpY2F0aW9uCmRlIGZlcm1ldHVyZSBkJ3VuIGNhbmFsIGQnZW50cullIGP0dOkgY2xpZW50IHJlcHLpc2VudGUgdW4gdXRpbGlzYXRldXIgY2xpcXVhbnQKc3VyICdTVE9QJyBlc3QgcHJvY2hlIGRlIDEwMCUsIGV0IGlsIGVzdCB2cmFpbWVudCB0ZW50YW50IGQnYWJhbmRvbm5lciBsYQpyZXF16nRlIHBy6W1hdHVy6W1lbnQgc2FucyBwb2xsdWVyIGxlcyBzZXJ2ZXVycy4KClBvdXIgY2V0dGUgcmFpc29uLCB1bmUgbm91dmVsbGUgb3B0aW9uICJhYm9ydG9uY2xvc2UiIGEg6XTpIGludHJvZHVpdGUgZW4KdmVyc2lvbiAxLjIuMTQuIFBhciBk6WZhdXQgKHNhbnMgbCdvcHRpb24pLCBsZSBjb21wb3J0ZW1lbnQgcmVzdGUgY29uZm9ybWUg4ApIVFRQLiBNYWlzIGxvcnNxdWUgbCdvcHRpb24gZXN0IHNw6WNpZmnpZSwgdW5lIHNlc3Npb24gZG9udCBsZSBjYW5hbCBlbnRyYW50CmVzdCBmZXJt6SBzZXJhIGFib3J06WUgc2kgY2VsYSBlc3QgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBxdWUgbGEgcmVxdep0ZSBlc3QKc29pdCBlbiBmaWxlIGQnYXR0ZW50ZSwgc29pdCBlbiB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLiBDZWNpIHLpZHVpdApjb25zaWTpcmFibGVtZW50IGxhIGxvbmd1ZXVyIGRlcyBmaWxlcyBkJ2F0dGVudGVzIGV0IGxhIGNoYXJnZSBzdXIgbGVzIHNlcnZldXJzCnNhdHVy6XMgbG9yc3F1ZSBsZXMgdXRpbGlzYXRldXJzIHNvbnQgdGVudOlzIGRlIGNsaXF1ZXIgc3VyICdTVE9QJywgY2UgcXVpIOAKc29uIHRvdXIsIHLpZHVpdCBsZXMgdGVtcHMgZGUgculwb25zZSBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIGJjazEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIG9wdGlvbiBhYm9ydG9uY2xvc2UKCgo0KSBGb25jdGlvbm5hbGl06XMgYWRkaXRpb25uZWxsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpEJ2F1dHJlcyBmb25jdGlvbm5hbGl06XMgZCd1c2FnZSBtb2lucyBjb3VyYW50IHNvbnQgZGlzcG9uaWJsZXMuIElsIHMnYWdpdApwcmluY2lwYWxlbWVudCBkdSBtb2RlIHRyYW5zcGFyZW50LCBkZSBsYSBqb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucywgZGUgbGEKcunpY3JpdHVyZSBkZXMgZW4tdOp0ZXMsIGV0IGR1IHN0YXR1dCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTC4KCgo0LjEpIEZvbmN0aW9ubmFsaXTpcyBy6XNlYXUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMS4xKSBGb25jdGlvbm5lbWVudCBlbiBtb2RlIHRyYW5zcGFyZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGxlIG1vdCBjbOkgJ3RyYW5zcGFyZW50JyBwZXJtZXQgZCdpbnRlcmNlcHRlciBkZXMgc2Vzc2lvbnMKcm91dOllcyDgIHRyYXZlcnMgbGEgbWFjaGluZSBo6WJlcmdlYW50IGxlIHByb3h5LiBEYW5zIGNlIG1vZGUsIG9uIG5lIHBy6WNpc2UKcGFzIGwnYWRyZXNzZSBkZSBy6XBhcnRpdGlvbiAnZGlzcGF0Y2gnLCBjYXIgY2VsbGUtY2kgZXN0IHRpcullIGRlIGwnYWRyZXNzZQpkZXN0aW5hdGlvbiBkZSBsYSBzZXNzaW9uIGTpdG91cm7pZS4gTGUgc3lzdOhtZSBkb2l0IHBlcm1ldHRyZSBkZSByZWRpcmlnZXIgbGVzCnBhcXVldHMgdmVycyB1biBwcm9jZXNzdXMgbG9jYWwuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgdHJhbnNwYXJlbnQKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpTaSBsZSBwb3J0IG4nZXN0IHBhcyBzcOljaWZp6SBzdXIgbGUgc2VydmV1ciwgYydlc3QgbGUgcG9ydCBhdXF1ZWwgcydlc3QKYWRyZXNz6SBsZSBjbGllbnQgcXVpIHNlcmEgdXRpbGlz6S4gQ2VsYSBwZXJtZXQgZGUgcmVsYXllciB0b3VzIGxlcyBwb3J0cyBUQ1AKZCd1bmUgbeptZSBhZHJlc3NlIGF2ZWMgdW5lIG3qbWUgaW5zdGFuY2UgZXQgc2FucyB1dGlsaXNlciBkaXJlY3RlbWVudCBsZSBtb2RlCnRyYW5zcGFyZW50LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMDAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjIgY2hlY2sgcG9ydCA2MDAwMAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKCgo0LjEuMikgQ2hvaXggZCd1bmUgYWRyZXNzZSBzb3VyY2UgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgaWwgZGV2aWVudCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW5lIGFkcmVzc2UKSVAgc291cmNlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1ci4gQydlc3QgdXRpbGUgcG91ciBqb2luZHJlIGRlcyBzZXJ2ZXVycyBkZQpiYWNrdXAg4CBwYXJ0aXIgZCd1biBMQU4gZGlmZulyZW50LCBvdSBwb3VyIHV0aWxpc2VyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzCnBvdXIgam9pbmRyZSBsZSBt6m1lIHNlcnZldXIuIEMnZXN0IOlnYWxlbWVudCB1dGlsaXNhYmxlIHBvdXIgZmFjaWxpdGVyIHVuZQpy6XBhcnRpdGlvbiBkZSBjaGFyZ2Ugc2Vsb24gbCdhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGRlcyBjb25uZXhpb25zIHNvcnRhbnRlcy4KQmllbiBlbnRlbmR1LCBsYSBt6m1lIGFkcmVzc2UgZXN0IHV0aWxpc+llIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgbGVzIDIgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xMwoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjEuMQogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMi4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmYWlyZSB1bmUgculwYXJ0aXRpb24gZCdhZHJlc3NlIHNvdXJjZXMgcG91ciBqb2luZHJlIGxlIG3qbWUgcHJveHkg4AogICAgIyB0cmF2ZXJzIGRldXggbGllbnMgV0FOIAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MSAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjIuMQogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkyIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMy4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZvcmNlciB1bmUgY29ubmV4aW9uIFRDUCDgIHMnYXR0YWNoZXIg4CB1biBwb3J0IHBhcnRpY3VsaWVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjIwMDAKICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCgo0LjEuMykgTWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgKGtlZXAtYWxpdmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi43LCBpbCBkZXZpZW50IHBvc3NpYmxlIGQnYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uClRDUCAoVENQIGtlZXAtYWxpdmUpIOAgbGEgZm9pcyBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIuIENlbGEgcGVybWV0CmQnZW1w6mNoZXIgZGVzIHNlc3Npb25zIGxvbmd1ZXMgZCdleHBpcmVyIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQKZXh0ZXJuZXMgdGVscyBxdWUgZGVzIGZpcmV3YWxscyBvdSBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZS4gQ2VsYSBwZXJtZXQKYXVzc2kgYXUgc3lzdOhtZSBkZSBk6XRlY3RlciBldCB0ZXJtaW5lciBkZXMgc2Vzc2lvbnMgZmln6WVzIGxvcnNxdSdhdWN1bgp0aW1lLW91dCBuJ2Eg6XTpIHBvc2l0aW9ubukgKGZvcnRlbWVudCBk6WNvbnNlaWxs6SkuIExlIHByb3h5IG5lIHBldXQgcGFzCnBvc2l0aW9ubmVyIGwnaW50ZXJ2YWxsZSBlbnRyZSBsZXMgYW5ub25jZXMgbmkgbGUgbm9tYnJlIG1heGltYWwsIHZldWlsbGV6CnZvdXMgculm6XJlciBhdSBtYW51ZWwgZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBwb3VyIGNlbGEuIElsIGV4aXN0ZSAzIG9wdGlvbnMKcG91ciBhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24gVENQIDoKCglvcHRpb24gdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIKCW9wdGlvbiBjbGl0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50CglvcHRpb24gc3J2dGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIHNlcnZldXIKCjQuMS40KSBS6W1hbmVuY2UgZGVzIGRvbm7pZXMgVENQIChsaW5nZXJpbmcpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBk6XNhY3RpdmVyIGxhIGNvbnNlcnZhdGlvbiBkZSBkb25u6WVzIG5vbiBhY3F1aXR06WVzIHBhciB1bgpjbGllbnQg4CBsYSBmaW4gZCd1bmUgc2Vzc2lvbi4gQ2VsYSBwZXV0IHBhcmZvaXMgcydhdulyZXIgbuljZXNzYWlyZSBsb3JzcXVlCmhhcHJveHkgZXN0IHV0aWxpc+kgZW4gZmFjZSBkJ3VuIGdyYW5kIG5vbWJyZSBkZSBjbGllbnRzIG5vbiBmaWFibGVzIGV0IHF1J3VuCm5vbWJyZSDpbGV26SBkZSBzb2NrZXRzIGVuIOl0YXQgRklOX1dBSVQgZXN0IG9ic2Vydukgc3VyIGxhIG1hY2hpbmUuIEwnb3B0aW9uCnBldXQg6nRyZSB1dGlsaXPpZSBkYW5zIHVuIGZyb250ZW5kIHBvdXIgYWp1c3RlciBsZXMgY29ubmV4aW9ucyB2ZXJzIGxlcwpjbGllbnRzLCBldCBkYW5zIHVuIGJhY2tlbmQgcG91ciBhanVzdGVyIGxlcyBjb25uZXhpb25zIHZlcnMgbGVzIHNlcnZldXJzIDoKCglvcHRpb24gbm9saW5nZXIJIyBk6XNhY3RpdmUgbGEgY29uc2VydmF0aW9uIGRlIGRvbm7pZXMKCgo0LjIpIEpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkwndW4gZGVzIHBvaW50cyBmb3J0cyBkZSBIQVByb3h5IGVzdCBpbmTpbmlhYmxlbWVudCBsYSBwculjaXNpb24gZGUgc2VzIGxvZ3MuCklsIGZvdXJuaXQgcHJvYmFibGVtZW50IGxlIHBsdXMgZmluIG5pdmVhdSBkJ2luZm9ybWF0aW9uIGRpc3BvbmlibGUgcG91ciB1bgp0ZWwgb3V0aWwsIGNlIHF1aSBlc3QgdHLocyBpbXBvcnRhbnQgcG91ciBsZXMgZGlhZ25vc3RpY3MgZW4gZW52aXJvbm5lbWVudHMKY29tcGxleGVzLiBFbiBzdGFuZGFyZCwgbGVzIGluZm9ybWF0aW9ucyBqb3VybmFsaXPpZXMgaW5jbHVlbnQgbGUgcG9ydCBjbGllbnQsCmxlcyBjaHJvbm9t6XRyYWdlcyBkZXMg6XRhdHMgVENQL0hUVFAsIGRlcyDpdGF0cyBkZSBzZXNzaW9uIHBy6WNpcyBhdSBtb21lbnQgZGUKbGEgdGVybWluYWlzb24gZXQgc2EgY2F1c2UsIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlcyBk6WNpc2lvbnMgZCdhaWd1aWxsYWdlIGR1CnRyYWZpYyB2ZXJzIHVuIHNlcnZldXIsIGV0IGJpZW4gc/tyIGxhIHBvc3NpYmlsaXTpIGRlIGNhcHR1cmVyIGRlcyBlbi106nRlcwphcmJpdHJhaXJlcy4KCkRhbnMgbGUgYnV0IGQnYW3pbGlvcmVyIGxhIHLpYWN0aXZpdOkgZGVzIGFkbWluaXN0cmF0ZXVycywgaWwgb2ZmcmUgdW5lIGdyYW5kZQp0cmFuc3BhcmVuY2Ugc3VyIGxlcyBwcm9ibOhtZXMgcmVuY29udHLpcywg4CBsYSBmb2lzIGludGVybmVzIGV0IGV4dGVybmVzLCBldAppbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyBsb2dzIHZlcnMgZGVzIHNlcnZldXJzIGRpZmbpcmVudHMgZW4gbeptZSB0ZW1wcwphdmVjIGRlcyBuaXZlYXV4IGRlIGZpbHRyYWdlIGRpZmbpcmVudHMgOgoKICAtIGxvZ3MgZ2xvYmF1eCBhdSBuaXZlYXUgcHJvY2Vzc3VzIChlcnJldXJzIHN5c3TobWUsIGFycup0cy9k6W1hcnJhZ2VzLCAuLi4pCiAgLSBlcnJldXJzIHN5c3TobWUgZXQgaW50ZXJuZXMgcGFyIGluc3RhbmNlIChtYW5xdWUgZGUgcmVzc291cmNlcywgYnVncywgLi4uKQogIC0gcHJvYmzobWVzIGV4dGVybmVzIHBhciBpbnN0YW5jZSAoYXJy6nRzL3JlbGFuY2Ugc2VydmV1cnMsIGxpbWl0ZXMsIC4uLikKICAtIGFjdGl2aXTpIHBhciBpbnN0YW5jZSAoY29ubmV4aW9ucyBjbGllbnRzKSwgYXVzc2kgYmllbiBsb3JzIGRlIGxldXIKICAgIOl0YWJsaXNzZW1lbnQgcXUn4CBsZXVyIHRlcm1pbmFpc29uLgoKTGEgcG9zc2liaWxpdOkgZGUgZGlzdHJpYnVlciBkaWZm6XJlbnRzIG5pdmVhdXggZGUgbG9ncyDgIGRpZmbpcmVudHMgc2VydmV1cnMKcGVybWV0IOAgcGx1c2lldXJzIOlxdWlwZXMgZGUgcHJvZHVjdGlvbiBkJ2ludOlyYWdpciBldCBkZSBjb3JyaWdlciBsZXVycwpwcm9ibOhtZXMgbGUgcGx1cyB09HQgcG9zc2libGUuIFBhciBleGVtcGxlLCBsJ+lxdWlwZSBzeXN06G1lIHBldXQgc3VydmVpbGxlcgpvY2Nhc2lvbm5lbGxlbWVudCBsZXMgZXJyZXVycyBzeXN06G1lLCBwZW5kYW50IHF1ZSBsJ+lxdWlwZSBhcHBsaWNhdGlvbgpzdXJ2ZWlsbGUgbGVzIGFsZXJ0ZXMgZCdhcnLqdHMvZOltYXJyYWdlcyBkZSBzZXMgc2VydmV1cnMgZW4gdGVtcHMgcullbCwgZXQKcXVlIGwn6XF1aXBlIHPpY3VyaXTpIGFuYWx5c2UgbCdhY3Rpdml06SBlbiBkaWZm6XLpIGQndW5lIGhldXJlLgoKCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+IDxjYXTpZ29yaWVfMj4gW25pdmVhdV9tYXhfMl0Kb3UKICAgIGxvZyBnbG9iYWwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMYSBzeW50YXhlIHNw6WNpZmlxdWUgJ2xvZyBnbG9iYWwnIGluZGlxdWUgcXVlIGwnb24gc291aGFpdGUgdXRpbGlzZXIgbGVzCnBhcmFt6HRyZXMgZGUgam91cm5hbGlzYXRpb24gZOlmaW5pcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDEgbG9jYWw0Cgo0LjIuMikgRm9ybWF0IGRlcyBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyIGTpZmF1dCwgbGVzIGNvbm5leGlvbnMgc29udCBqb3VybmFsaXPpZXMgYXUgbml2ZWF1IFRDUCBk6HMgbCfpdGFibGlzc2VtZW50CmRlIGxhIHNlc3Npb24gZW50cmUgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4gRW4gcHLpY2lzYW50IGwnb3B0aW9uICd0Y3Bsb2cnLApsYSBjb25uZXhpb24gbmUgc2VyYSBqb3VybmFsaXPpZSBxdSdlbiBmaW4gZGUgc2Vzc2lvbiwgYWpvdXRhbnQgZGVzIHBy6WNpc2lvbnMKc3VyIHNvbiDpdGF0IGxvcnMgZGUgbGEgZOljb25uZXhpb24sIGFpbnNpIHF1ZSBsZSB0ZW1wcyBkZSBjb25uZXhpb24gZXQgbGEKZHVy6WUgdG90YWxlIGRlIGxhIHNlc3Npb24uIExlIG5vbWJyZSBkZSBzZXNzaW9ucyByZXN0YW50ZXMgYXBy6HMgbGEKZOljb25uZXhpb24gZXN0IOlnYWxlbWVudCBpbmRpcXXpIChwb3VyIGxlIHNlcnZldXIsIGwnaW5zdGFuY2UgZXQgbGUgcHJvY2VzcykuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIFRDUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiByZWxhaXMtdGNwIDAuMC4wLjA6ODAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgb3B0aW9uIHRjcGxvZwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC8wLzUwMDcgMCAtLSAxLzEvMSAwLzAKICAKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEyNy4wLjAuMTozNDU1MAogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy10Y3AKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIHRlbXBzX2ZpbGUgJy8nIHRlbXBzX2Nvbm5lY3QgJy8nIHRlbXBzX3RvdGFsICAwLzAvNTAwNwogICAgICAgIDcgIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOCAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICAgICAgOSAgY29ubl9zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgIDEvMS8xCiAgICAgICAxMCAgcG9zaXRpb24gZW4gZmlsZSBkJ2F0dGVudGUgc3J2ICcvJyBnbG9iYWxlICAgIDAvMAoKVW5lIGF1dHJlIG9wdGlvbiwgJ2h0dHBsb2cnLCBmb3Vybml0IHBsdXMgZGUgZOl0YWlscyBzdXIgbGUgcHJvdG9jb2xlIEhUVFAsCm5vdGFtbWVudCBsYSByZXF16nRlIGV0IGwn6XRhdCBkZXMgY29va2llcy4gRGFucyBsZXMgY2FzIG/5IHVuIG3pY2FuaXNtZSBkZQpzdXJ2ZWlsbGFuY2UgZWZmZWN0dWFudCBkZXMgY29ubmV4aW9ucyBldCBk6WNvbm5leGlvbnMgZnLpcXVlbnRlcywgcG9sbHVlcmFpdApsZXMgbG9ncywgaWwgc3VmZml0IGQnYWpvdXRlciBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBwb3VyIG5lIHBsdXMgb2J0ZW5pciB1bmUKbGlnbmUgZGUgbG9nIHBvdXIgbGVzIHNlc3Npb25zIG4nYXlhbnQgcGFzIGRvbm7pIGxpZXUg4CB1biDpY2hhbmdlIGRlIGRvbm7pZXMKKHJlcXXqdGUgb3Ugculwb25zZSkuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIEhUVFAgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0Ny83MjMgMjAwIDI0MyAtIC0gLS0tLSAyLzMvMyAwLzAgIkhFQUQgLyBIVFRQLzEuMCIKCkV4ZW1wbGUgcGx1cyBjb21wbGV0IDoKCiAgICBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMTM3LzIwMi8yMDUgMC8wIHt3Lm9kcy5vcmd8TW96aWxsYX0ge30gIkhFQUQgLyBIVFRQLzEuMCIgCgogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVtcGxlCgogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgICAgICAgICBoYXByb3h5WzE4OTg5XToKICAgICAgICAyICBpcF9jbGllbnQgJzonIHBvcnRfY2xpZW50ICAgICAgICAgICAgICAgICAgICAgMTAuMC4wLjE6MzQ1NTIKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI2OjMxXQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtaHR0cAogICAgICAgIDUgIG5vbV9zZXJ2ZXVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgVHEgJy8nIFR3ICcvJyBUYyAnLycgVHIgJy8nIFR0ICAgICAgICAgICAgICAgIDMxODMvLTEvLTEvLTEvMTEyMTUKICAgICAgICA3ICBDb2RlX3JldG91cl9IVFRQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAzCiAgICAgICAgOCAgb2N0ZXRzIGx1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA5ICBjb29raWVzX3JlcXXqdGVfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTAgIGNvb2tpZXNfcmVwb25zZV9jYXB0dXLpcyAgICAgICAgICAgICAgICAgICAgICAtCiAgICAgICAxMSAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDLS0KICAgICAgIDEyICBjb25uc19zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgMTM3LzIwMi8yMDUKICAgICAgIDEzICBwb3NpdGlvbiBmaWxlIHNlcnZldXIgJy8nIGdsb2JhbGUgICAgICAgICAgICAgMC8wCiAgICAgICAxNCAgJ3snIGVudGV0ZXNfcmVxdep0ZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt3Lm9kcy5vcmd8TW96aWxsYX0KICAgICAgIDE1ICAneycgZW50ZXRlc19yZXBvbnNlX2NhcHR1culzICd9JyAgICAgICAgICAgICAge30KICAgICAgIDE2ICAnIicgcmVxdep0ZV9IVFRQICciJyAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQUQgLyBIVFRQLzEuMCIKICAKTm90ZSBwb3VyIGxlcyBhbmFseXNldXJzIGRlIGxvZ3MgOiBsJ1VSSSBlc3QgVE9VSk9VUlMgbGUgZGVybmllciBjaGFtcCBkZSBsYSBsaWduZSwgZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW5jZSBwYXIgdW4gZ3VpbGxlbWV0ICciJy4KCkxlIHByb2Js6G1lIGRlIGxvZ3VlciB1bmlxdWVtZW50IGVuIGZpbiBkZSBzZXNzaW9uLCBjJ2VzdCBxdSdpbCBlc3QgaW1wb3NzaWJsZQpkZSBzYXZvaXIgY2UgcXVpIHNlIHBhc3NlIGR1cmFudCBkZSBncm9zIHRyYW5zZmVydHMgb3UgZGVzIHNlc3Npb25zIGxvbmd1ZXMuClBvdXIgcGFsbGllciDgIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgb3B0aW9uICdsb2dhc2FwJyBhIOl06SBpbnRyb2R1aXRlIGRhbnMKbGEgdmVyc2lvbiAxLjEuMjggKDEuMi4xKS4gTG9yc3F1J2VsbGUgZXN0IGFjdGl26WUsIGxlIHByb3h5IGxvZ3VlcmEgbGUgcGx1cwp09HQgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBqdXN0ZSBhdmFudCBxdWUgbmUgZOlidXRlbnQgbGVzIHRyYW5zZmVydHMgZGUKZG9ubullcy4gQ2VsYSBzaWduaWZpZSwgZGFucyBsZSBjYXMgZHUgVENQLCBxdSdpbCBsb2d1ZXJhIHRvdWpvdXJzIGxlIHLpc3VsdGF0CmRlIGxhIGNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGRhbnMgbGUgY2FzIEhUVFAsIHF1J2lsIGxvZ3VlcmEgZW4gZmluIGRlCnRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIGRlIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgYXVxdWVsIGNhcyBsZSBub21icmUgZCdvY3RldHMKcmVwculzZW50ZXJhIGxhIHRhaWxsZSBkZXMgZW4tdOp0ZXMgcmV0b3VybulzIGF1IGNsaWVudC4KCkFmaW4gZCfpdml0ZXIgdG91dGUgY29uZnVzaW9uIGF2ZWMgbGVzIGxvZ3Mgbm9ybWF1eCwgbGUgdGVtcHMgdG90YWwgZGUKdHJhbnNmZXJ0IGV0IGxlIG5vbWJyZSBkJ29jdGV0cyB0cmFuc2bpculzIHNvbnQgcHLpZml46XMgZCd1biBzaWduZSAnKycKcmFwcGVsYW50IHF1ZSBsZXMgdmFsZXVycyBy6WVsbGVzIHNvbnQgY2VydGFpbmVtZW50IHBsdXMg6Wxldullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gbG9nYXNhcAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDMvMyAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCgoKNC4yLjMpIENocm9ub23pdHJhZ2UgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUG91ciBk6WNlbGVyIGRlcyBwcm9ibOhtZXMgculzZWF1LCBsZXMgbWVzdXJlcyBkdSB0ZW1wcyDpY291bOkgZW50cmUgY2VydGFpbnMK6XbpbmVtZW50cyBzb250IGQndW5lIHRy6HMgZ3JhbmRlIHV0aWxpdOkuIFRvdXMgbGVzIHRlbXBzIHNvbnQgbWVzdXLpcyBlbgptaWxsaXNlY29uZGVzIChtcykuIEVuIG1vZGUgSFRUUCwgcXVhdHJlIHBvaW50cyBkZSBtZXN1cmUgc29udCByYXBwb3J06XMgc291cwpsYSBmb3JtZSBUcS9Udy9UYy9Uci9UdCA6CgogIC0gVHE6IHRlbXBzIHRvdGFsIGRlIHLpY2VwdGlvbiBkZSBsYSByZXF16nRlIEhUVFAgZGUgbGEgcGFydCBkdSBjbGllbnQuCiAgICBDJ2VzdCBsZSB0ZW1wcyBxdWkgcydlc3Qg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBv+SBsZSBjbGllbnQgYSDpdGFibGkKICAgIHNhIGNvbm5leGlvbiB2ZXJzIGxlIHJlbGFpcywgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgYSByZed1IGxlIGRlcm5pZXIKICAgIGVuLXTqdGUgSFRUUCB2YWxpZGFudCBsYSBmaW4gZGUgbGEgcmVxdep0ZS4gVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlCiAgICBxdWUgbGEgcmVxdep0ZSBjb21wbOh0ZSBuJ2EgamFtYWlzIOl06SByZed1ZS4KCiAgLSBUdzogdGVtcHMgdG90YWwgcGFzc+kgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlIGF2YW50IGQnb2J0ZW5pciB1bmUgcGxhY2UKICAgIHZlcnMgdW4gc2VydmV1ci4gQ2VjaSB0aWVudCBjb21wdGUg4CBsYSBmb2lzIGRlIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUKICAgIGV0IGRlIGNlbGxlIGR1IHNlcnZldXIsIGV0IGTpcGVuZCBkdSBub21icmUgZGUgcmVxdep0ZXMgZGFucyBsYSBmaWxlIGV0IGR1CiAgICB0ZW1wcyBu6WNlc3NhaXJlIGF1IHNlcnZldXIgcG91ciBjb21wbOl0ZXIgbGVzIHNlc3Npb25zIHBy6WPpZGVudGVzLiBMYQogICAgdmFsZXVyICctMScgaW5kaXF1ZSBxdWUgbGEgcmVxdep0ZSBhIOl06SBk6XRydWl0ZSBhdmFudCBkJ2F0dGVpbmRyZSB1bmUKICAgIGZpbGUuCgogIC0gVGM6IHRlbXBzIGQn6XRhYmxpc3NlbWVudCBkZSBsYSBjb25uZXhpb24gVENQIGR1IHJlbGFpcyB2ZXJzIGxlIHNlcnZldXIuCiAgICBDJ2VzdCBsZSB0ZW1wcyDpY291bOkgZW50cmUgbGUgbW9tZW50IG91IGxlIHJlbGFpcyBhIGluaXRp6SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBsJ2EgYWNxdWl0dOllLCBjJ2VzdAogICAg4CBkaXJlIGxlIHRlbXBzIGVudHJlIGwnZW52b2kgZHUgcGFxdWV0IFRDUCBTWU4gbGEgculjZXB0aW9uIGR1IFNZTi9BQ0suCiAgICBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUgcXVlIGxhIGNvbm5leGlvbiBuJ2EgamFtYWlzIHB1IOp0cmUg6XRhYmxpZQogICAgdmVycyBsZSBzZXJ2ZXVyLgoKICAtIFRyOiB0ZW1wcyBkZSBy6XBvbnNlIGR1IHNlcnZldXIuIEMnZXN0IGxlIHRlbXBzIHF1ZSBsZSBzZXJ2ZXVyIGEgbWlzIHBvdXIKICAgIHJlbnZveWVyIGxhIHRvdGFsaXTpIGRlcyBlbi106nRlcyBIVFRQIOAgcGFydGlyIGR1IG1vbWVudCBv+SBpbCBhIGFjcXVpdHTpCiAgICBsYSBjb25uZXhpb24uIENhIHJlcHLpc2VudGUgZXhhY3RlbWVudCBsZSB0ZW1wcyBkZSB0cmFpdGVtZW50IGRlIGxhCiAgICB0cmFuc2FjdGlvbiBzYW5zIGxlIHRyYW5zZmVydCBkZXMgZG9ubullcyBhc3NvY2npZXMuIFVuZSB2YWxldXIgJy0xJwogICAgaW5kaXF1ZSBxdWUgbGUgc2VydmV1ciBuJ2EgcGFzIGVudm956SBsYSB0b3RhbGl06SBkZSBsJ2VuLXTqdGUgSFRUUC4KCiAgLSBUdDogZHVy6WUgZGUgdmllIHRvdGFsZSBkZSBsYSBzZXNzaW9uLCBlbnRyZSBsZSBtb21lbnQgb/kgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIGR1IGNsaWVudCBhIOl06SBhY3F1aXR06WUgZXQgbGUgbW9tZW50IG/5IGxhIGNvbm5leGlvbiBhIOl06QogICAgcmVmZXJt6WUgYXV4IGRldXggZXh0cultaXTpcyAoY2xpZW50IGV0IHNlcnZldXIpLiBMYSBzaWduaWZpY2F0aW9uIGNoYW5nZQogICAgdW4gcGV1IHNpIGwnb3B0aW9uICdsb2dhc2FwJyBlc3QgcHLpc2VudGUuIERhbnMgY2UgY2FzLCBsZSB0ZW1wcyBjb3JyZXNwb25kCiAgICB1bmlxdWVtZW50IOAgKFRxICsgVHcgKyBUYyArIFRyKSwgZXQgc2UgdHJvdXZlIHBy6WZpeOkgZCd1biBzaWduZSAnKycuIE9uCiAgICBwZXV0IGRvbmMgZOlkdWlyZSBUZCwgbGUgdGVtcHMgZGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLCBlbiBleGNsdWFudCBsZXMKICAgIGF1dHJlcyB0ZW1wcyA6CgogICAgICAgIFRkID0gVHQgLSAoVHEgKyBUdyArIFRjICsgVHIpCgogICAgTGVzIHRlbXBzIHJhcHBvcnTpcyDgICctMScgc29udCBzaW1wbGVtZW50IOAg6WxpbWluZXIgZGUgY2V0dGUg6XF1YXRpb24uCgpFbiBtb2RlIFRDUCAoJ29wdGlvbiB0Y3Bsb2cnKSwgc2V1bHMgbGVzIGRldXggaW5kaWNhdGV1cnMgVHcsIFRjIGV0IFR0IHNvbnQKcmFwcG9ydOlzLgoKQ2VzIHRlbXBzIGZvdXJuaXNzZW50IGRlIHBy6WNpZXV4IHJlbnNlaWduZW1lbnQgc3VyIGRlcyBjYXVzZXMgcHJvYmFibGVzIGRlCnByb2Js6G1lcy4gRHUgZmFpdCBxdWUgbGUgcHJvdG9jb2xlIFRDUCBk6WZpbmlzc2UgZGVzIHRlbXBzIGRlIHJldHJhbnNtaXNzaW9uCmRlIDMgc2Vjb25kZXMsIHB1aXMgNiwgMTIsIGV0Yy4uLiwgbCdvYnNlcnZhdGlvbiBkZSB0ZW1wcyBwcm9jaGVzIGRlIG11bHRpcGxlcwpkZSAzIHNlY29uZGVzIGluZGlxdWUgcHJhdGlxdWVtZW50IHRvdWpvdXJzIGRlcyBwZXJ0ZXMgZGUgcGFxdWV0cyBsaelzIOAgdW4KcHJvYmzobWUgculzZWF1IChj4mJsZSBvdSBu6WdvY2lhdGlvbikuIERlIHBsdXMsIHNpIDxUdD4gZXN0IHByb2NoZSBkJ3VuZQp2YWxldXIgZGUgdGltZS1vdXQgZGFucyBsYSBjb25maWd1cmF0aW9uLCBjJ2VzdCBzb3V2ZW50IHF1J3VuZSBzZXNzaW9uIGEg6XTpCmFiYW5kb25u6WUgc3VyIGV4cGlyYXRpb24gZCd1biB0aW1lLW91dC4KCkNhcyBsZXMgcGx1cyBmculxdWVudHMgOgoKICAtIFNpIFRxIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLgogIC0gU2kgVGMgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyIGR1cmFudCBsYSBwaGFzZSBkZSBjb25uZXhpb24uIENldCBpbmRpY2F0ZXVyCiAgICBkZXZyYWl0IG5vcm1hbGVtZW50IHRvdWpvdXJzIOp0cmUgdHLocyBiYXMgKG1vaW5zIGRlIHF1ZWxxdWVzIGRpemFpbmVzKS4KICAtIFNpIFRyIGVzdCBwcmVzcXVlIHRvdWpvdXJzIGluZulyaWV1ciDgIDMwMDAsIGV0IHF1ZSBjZXJ0YWluZXMgdmFsZXVycwogICAgc2VtYmxlbnQgcHJvY2hlcyBkZSBsYSB2YWxldXIgbW95ZW5uZSBtYWpvcullIGRlIDMwMDAsIGlsIHkgYSBwZXV0Lep0cmUKICAgIGRlIHBlcnRlcyBlbnRyZSBsZSByZWxhaXMgZXQgbGUgc2VydmV1ci4KICAtIFNpIFR0IGVzdCBs6WfocmVtZW50IHN1cOlyaWV1ciBhdSB0aW1lLW91dCwgYydlc3Qgc291dmVudCBwYXJjZSBxdWUgbGUKICAgIGNsaWVudCBldCBsZSBzZXJ2ZXVyIHV0aWxpc2VudCBkdSBrZWVwLWFsaXZlIEhUVFAgZW50cmUgZXV4IGV0IHF1ZSBsYQogICAgc2Vzc2lvbiBlc3QgbWFpbnRlbnVlIGFwcuhzIGxhIGZpbiBkZXMg6WNoYW5nZXMuIFZvaXIgcGx1cyBsb2luIHBvdXIKICAgIHNhdm9pciBjb21tZW50IGTpc2FjdGl2ZXIgbGUga2VlcC1hbGl2ZSBIVFRQLgoKQXV0cmVzIGNhcyAoJ3h4JyByZXBy6XNlbnRhbnQgdW5lIHZhbGV1ciBxdWVsY29ucXVlIOAgaWdub3JlcikgOgogIC0xL3h4L3h4L3h4L1R0OiBsZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBkYW5zIGxlIHRlbXBzIGltcGFydGkgb3UKICAgICAgICAgICAgICAgICAgYSByZWZlcm3pIHNhIGNvbm5leGlvbiBzYW5zIGNvbXBs6XRlciBsYSByZXF16nRlLgogIFRxLy0xL3h4L3h4L1R0OiBJbCBuJ+l0YWl0IHBhcyBwb3NzaWJsZSBkZSB0cmFpdGVyIGxhIHJlcXVlc3QsIHByb2JhYmxlbWVudAogICAgICAgICAgICAgICAgICBwYXJjZSBxdWUgdG91cyBsZXMgc2VydmV1cnMg6XRhaWVudCBob3JzIGQndXNhZ2UuCiAgVHEvVHcvLTEveHgvVHQ6IGxhIGNvbm5leGlvbiBuJ2EgcGFzIHB1IHMn6XRhYmxpciB2ZXJzIGxlIHNlcnZldXIgKHJlZnVzIG91CiAgICAgICAgICAgICAgICAgIHRpbWUtb3V0IGF1IGJvdXQgZGUgVHQtKFRxK1R3KSBtcykuCiAgVHEvVHcvVGMvLTEvVHQ6IGxlIHNlcnZldXIgYSBhY2NlcHTpIGxhIGNvbm5leGlvbiBtYWlzIG4nYSBwYXMgculwb25kdSBkYW5zCiAgICAgICAgICAgICAgICAgIGxlcyB0ZW1wcyBvdSBiaWVuIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gdHJvcCB09HQsIGF1IGJvdXQKICAgICAgICAgICAgICAgICAgZGUgVHQtKFRxK1R3K1RjKSBtcy4KICAgICAKNC4yLjQpIENvbmRpdGlvbnMgZGUgZOljb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGxvZ3MgVENQIGV0IEhUVFAgZm91cm5pc3NlbnQgdW4gaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGRlIGxhIHNlc3Npb24gZGFucwpsZSBjaGFtcCAnZXRhdF90ZXJtaW5haXNvbicsIGp1c3RlIGF2YW50IGxlIG5vbWJyZSBkZSBjb25uZXhpb25zIGFjdGl2ZXMuIEMnZXN0CnVuIGNoYW1wIGxvbmcgZGUgMiBjYXJhY3TocmVzIGVuIFRDUCBldCBkZSA0IGNhcmFjdOhyZXMgZW4gSFRUUCwgY2hhY3VuIGF5YW50CnVuZSBzaWduaWZpY2F0aW9uIHBy6WNpc2UgOgoKICAtIHN1ciBsZSBwcmVtaWVyIGNhcmFjdOhyZSwgdW4gY29kZSBwculjaXNhbnQgbGUgcHJlbWllciDpduluZW1lbnQgcXVpIGEgY2F1c+kKICAgIGxhIHRlcm1pbmFpc29uIGRlIGxhIHNlc3Npb24gOgoKICAgICAgICBDIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBjbGllbnQuCgogICAgICAgIFMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91CiAgICAgICAgICAgIHJlZnVzIGV4cGxpY2l0ZSBkZSBjb25uZXhpb24gZGUgbGEgcGFydCBkZSBjZSBkZXJuaWVyLgoKICAgICAgICBQIDogdGVybWluYWlzb24gcHLpbWF0dXLpZSBkZXMgc2Vzc2lvbnMgcGFyIGxlIHByb3h5LCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGQnaW1wb3NpdGlvbiBkJ3VuZSBsaW1pdGUgc3VyIGxlIG5vbWJyZSBkZSBjb25uZXhpb25zLCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGRlIGNvbmZpZ3VyYXRpb24gKGV4OiBmaWx0cmUgZCdVUkwpLCBvdSBwYXJjZSBxdSd1biBjb250cvRsZSBkZQogICAgICAgICAgICBz6WN1cml06SBhIGTpdGVjdOkgZXQgYmxvcXXpIHVuZSBhbm9tYWxpZSBkYW5zIGxhIHLpcG9uc2UgZHUKICAgICAgICAgICAgc2VydmV1ciBxdWkgYXVyYWl0IHB1IGNhdXNlciB1bmUgZnVpdGUgZCdpbmZvcm1hdGlvbnMgKHBhciBleGVtcGxlLAogICAgICAgICAgICB1biBjb29raWUgY2FjaGFibGUpLgoKICAgICAgICBSIDogdW5lIHJlc3NvdXJjZSBzdXIgbGUgcHJveHkgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMKICAgICAgICAgICAgc291cmNlLCAuLi4pLiBH6W7pcmFsZW1lbnQsIGNlbGEgYXJyaXZlIGF1IGNvdXJzIGRlIGwn6XRhYmxpc3NlbWVudAogICAgICAgICAgICBkJ3VuZSBjb25uZXhpb24sIGV0IGxlcyBsb2dzIHN5c3TobWUgZG9pdmVudCBjb250ZW5pciB1bmUgY29waWUgZGUKICAgICAgICAgICAgbCfpcnJldXIgcHLpY2lzZS4KCiAgICAgICAgSSA6IHVuZSBlcnJldXIgaW50ZXJuZSBhIOl06SBpZGVudGlmaellIHBhciBsZSBwcm94eSDgIGxhIHN1aXRlIGQndW4KICAgICAgICAgICAgYXV0by1jb250cvRsZS4gQ2VjaSBuZSBkb2l0IEpBTUFJUyBhcnJpdmVyLCBldCB2b3VzIOp0ZXMgZW5jb3VyYWfpcwogICAgICAgICAgICDgIHJlbW9udGVyIG4naW1wb3J0ZSBxdWVsIGxvZyBjb250ZW5hbnQgY2VjaSBjYXIgaWwgcydhZ2lyYSB1biBidWcuCgogICAgICAgIGMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBjbGllbnQgYSBleHBpcukgKGNsaXRpbWVvdXQpLgoKICAgICAgICBzIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgc2VydmV1ciBhIGV4cGly6SAoc3J2dGltZW91dCBldCBjb250aW1lb3V0KQoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSBkZSBzZXNzaW9uLgoKICAtIHN1ciBsZSBzZWNvbmQgY2FyYWN06HJlLCBsJ+l0YXQgZCdhdmFuY2VtZW50IGRlIGxhIHNlc3Npb24gVENQL0hUVFAgbG9ycyBkZQogICAgbGEgZmVybWV0dXJlIDoKCiAgICAgICAgUiA6IGF0dGVudGUgZCd1bmUgUkVRVUVURSBIVFRQIGNvbXBs6HRlIGRlIGxhIHBhcnQgZHUgY2xpZW50LiBSaWVuIG4nYQogICAgICAgICAgICDpdOkgdHJhbnNtaXMgYXUgc2VydmV1ci4KCiAgICAgICAgUSA6IGF0dGVudGUgZW4gZmlsZSBkJ2F0dGVudGUgKFFVRVVFKSBkJ3VuZSBwbGFjZSBwb3VyIGF2b2lyIHVuZQogICAgICAgICAgICBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLiBOZSBwZXV0IGFwcGFyYe50cmUgcXVlIHN1ciB1biBzZXJ2ZXVyCiAgICAgICAgICAgIHBvc3PpZGFudCB1biBwYXJhbeh0cmUgJ21heGNvbm4nLiBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZQogICAgICAgICAgICBhdSBzZXJ2ZXVyLgoKICAgICAgICBDIDogYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgQ09OTkVYSU9OIHZlcnMgbGUgc2VydmV1ci4gTGUKICAgICAgICAgICAgc2VydmV1ciBwZXV0IGF1IHBsdXMgYXZvaXIgdnUgbGEgdGVudGF0aXZlIGRlIGNvbm5leGlvbiwgbWFpcwogICAgICAgICAgICBhdWN1bmUgZG9ubullIG4nYSDpdOkg6WNoYW5n6WUuCgogICAgICAgIEggOiBhdHRlbnRlLCBy6WNlcHRpb24gb3UgdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgSFRUUCAoIkhFQURFUlMiKS4KCiAgICAgICAgRCA6IHRyYW5zZmVydCBkZXMgRE9OTkVFUyBkdSBzZXJ2ZXVyIHZlcnMgbGUgY2xpZW50LgoKICAgICAgICBMIDogdHJhbnNmZXJ0IGRlcyBkZXJuaehyZXMgKCJMQVNUIikgZG9ubullcyBkdSBwcm94eSB2ZXJzIGxlIGNsaWVudCwKICAgICAgICAgICAgYWxvcnMgcXVlIGxlIHNlcnZldXIgYSBk6WrgIGZpbmkuCgogICAgICAgIFQgOiByZXF16nRlIGJsb3F16WUgZW4gbW9kZSAidGFycGl0IiBwYXIgbGUgcHJveHkuIEVsbGUgYSDpdOkgbWFpbnRlbnVlCiAgICAgICAgICAgIG91dmVydGUgdmVycyBsZSBjbGllbnQgcGVuZGFudCB0b3V0ZSBsYSBkdXLpZSBkdSBjb250aW1lb3V0IG91CiAgICAgICAgICAgIGp1c3F1J+AgbCdhYmFuZG9uIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBDSCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1J2lsIGF0dGVuZGFpdCB1biBk6WJ1dCBkZSBy6XBvbnNlIGRlIGxhCiAgICAgICAgICBwYXJ0IGR1IHNlcnZldXIuIENlbGEgcGV1dCDqdHJlIGNhdXPpIHBhciBsZSBzZXJ2ZXVyIHF1aSBtZXR0YWl0IHRyb3AKICAgICAgICAgIGRlIHRlbXBzIOAgculwb25kcmUsIG91IHBhciB1biBjbGllbnQgY2xpcXVhbnQgcHLpY2lwaXRhbW1lbnQgc3VyIGxlCiAgICAgICAgICBib3V0b24gJ1N0b3AnLgoKICAgICAgQ1EgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBtaXNlIGVuIGZpbGUKICAgICAgICAgIGQnYXR0ZW50ZSBwb3VyIG9idGVuaXIgdW4gc2VydmV1ciBhdmVjIHN1ZmZpc2FtbWVudCBkZSBjb25uZXhpb25zCiAgICAgICAgICBsaWJyZXMgcG91ciBsJ2FjY2VwdGVyLiBDZWxhIHNpZ25pZmllIHNvaXQgcXVlIGwnZW5zZW1ibGUgZGVzCiAgICAgICAgICBzZXJ2ZXVycyDpdGFpZW50IHNhdHVy6XMsIHNvaXQgcXVlIGxlIHNlcnZldXIgYXNzaWdu6SBhIG1pcyB0cm9wIGRlCiAgICAgICAgICB0ZW1wcyDgIHLpcG9uZHJlLgoKICAgICAgQ1QgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBibG9xdellIGVuIG1vZGUKICAgICAgICAgIHRhcnBpdC4KCiAgICAgIHNRICBMYSBzZXNzaW9uIGEgYXR0ZW5kdSB0cm9wIGxvbmd0ZW1wcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCBhIOl06QogICAgICAgICAgZXhwaXLpZS4KCiAgICAgIFNIICBMZSBzZXJ2ZXVyIGEgYWJvcnTpIGJydXRhbGVtZW50IGFsb3JzIHF1J2lsIGRldmFpdCBlbnZveWVyIHNlcwogICAgICAgICAgZW4tdOp0ZXMuIEVuIGfpbulyYWwsIGNlbGEgaW5kaXF1ZSBxdSdpbCBhIGNyYXNo6S4KCiAgICAgIHNIICBMZSBzZXJ2ZXVyIG4nYSBwYXMgcHUgculwb25kcmUgZHVyYW50IGxlIHRlbXBzIGltcGFydGksIGNlIHF1aSBtb250cmUKICAgICAgICAgIGRlcyB0cmFuc2FjdGlvbnMgdHJvcCBsb25ndWVzLCBwcm9iYWJsZW1lbnQgY2F1c+llcyBwYXIgdW4gYmFjay1lbmQKICAgICAgICAgIHNhdHVy6S4gTGVzIHNldWxlcyBzb2x1dGlvbnMgc29udCBkZSBjb3JyaWdlciBsZSBwcm9ibOhtZSBzdXIKICAgICAgICAgIGwnYXBwbGljYXRpb24sIGQnYWNjcm/udHJlIGxlIHBhcmFt6HRyZSAnc3J2dGltZW91dCcgcG91ciBzdXBwb3J0ZXIKICAgICAgICAgIGRlcyBhdHRlbnRlcyBwbHVzIGxvbmd1ZXMgYXUgcmlzcXVlIHF1ZSBsZXMgY2xpZW50cyBhYmFuZG9ubmVudCDgCiAgICAgICAgICBsZXVyIHRvdXIsIG91IGJpZW4gZCdham91dGVyIGRlcyBzZXJ2ZXVycy4KICAgICAgCiAgICAgIFBSICBMZSBwcm94eSBhIGJsb3F16SB1bmUgcmVxdep0ZSBkdSBjbGllbnQsIHNvaXQg4CBjYXVzZSBkJ3VuZSBzeW50YXhlCiAgICAgICAgICBIVFRQIGludmFsaWRlLCBhdXF1ZWwgY2FzIGlsIGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAwIGF1IGNsaWVudCwKICAgICAgICAgIHNvaXQg4CBjYXVzZSBkJ3VuZSByZXF16nRlIHZhbGlkYW50IHVuIGZpbHRyZSBkJ2ludGVyZGljdGlvbiwgYXVxdWVsCiAgICAgICAgICBjYXMgbGUgcHJveHkgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDMuCgogICAgICBQSCAgTGUgcHJveHkgYSBibG9xdekgbGEgculwb25zZSBkdSBzZXJ2ZXVyIHBhcmNlIHF1J2VsbGUg6XRhaXQgaW52YWxpZGUsCiAgICAgICAgICBpbmNvbXBs6HRlLCBkYW5nZXJldXNlICgnY2FjaGUgY29udHJvbCcpLCBvdSBwYXJjZSBxdSdlbGxlIHZhbGlkYWl0CiAgICAgICAgICB1biBmaWx0cmUgZGUgc+ljdXJpdOkuIERhbnMgdG91cyBsZXMgY2FzLCB1bmUgZXJyZXVyIEhUVFAgNTAyIGVzdAogICAgICAgICAgcmVudm956WUgYXUgY2xpZW50LgoKICAgICAgUFQgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCBldCBhIG1haW50ZW51IHNhIGNvbm5lY3Rpb24KICAgICAgICAgIG91dmVydGUgYXZhbnQgZGUgbHVpIHJldG91cm5lciB1bmUgZXJyZXVyICI1MDAgc2VydmVyIGVycm9yIi4gUmllbgogICAgICAgICAgbidhIOl06SBlbnZveekgYXUgc2VydmV1ci4KCiAgICAgIGNEICBMZSBjbGllbnQgbidhIHBhcyBsdSBkZSBkb25u6WVzIHBlbmRhbnQgbGUgdGVtcHMgcXVpIGx1aSDpdGFpdAogICAgICAgICAgaW1wYXJ0aS4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHByb2Js6G1lcyBy6XNlYXUgY/R06SBjbGllbnQuCgogICAgICBDRCAgTGUgY2xpZW50IGEgYWJvcnTpIHNhIGNvbm5lY3Rpb24gZGUgbWFuaehyZSBpbmF0dGVuZHVlIHBlbmRhbnQgbGUKICAgICAgICAgIHRyYW5zZmVydCBkZXMgZG9ubullcy4gQ2VjaSBlc3QgcHJvdm9xdekgc29pdCBwYXIgbGUgY3Jhc2ggZCd1bgogICAgICAgICAgbmF2aWdhdGV1ciwgb3UgcGFyIHVuZSBzZXNzaW9uIGVuIEhUVFAga2VlcC1hbGl2ZSBlbnRyZSBsZSBzZXJ2ZXVyCiAgICAgICAgICBldCBsZSBjbGllbnQgdGVybWlu6WUgZW4gcHJlbWllciBwYXIgbGUgY2xpZW50LgoKICAgICAgc0QgIExlIHNlcnZldXIgbidhIHJpZW4gZmFpdCBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSBwYXIgbGUgcGFyYW3odHJlCiAgICAgICAgICAnc3J2dGltZW91dCcuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyB0aW1lb3V0cyB0cm9wIGNvdXJ0cwogICAgICAgICAgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNCAoZmlyZXdhbGxzLCBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlKQogICAgICAgICAgc2l0delzIGVudHJlIGxlIHByb3h5IGV0IGxlIHNlcnZldXIuCgo0LjIuNSkgQ2FyYWN06HJlcyBub24taW1wcmltYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yOSwgbGVzIGNhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzIG5lIHNvbnQgcGx1cyBlbnZveelzCnRlbHMgcXVlbHMgZGFucyBsZXMgbGlnbmVzIGRlIGxvZ3MsIG1haXMgaW5zY3JpdHMgc291cyBsYSBmb3JtZSBkZSBkZXV4IGNoaWZmcmVzCmhleGFk6WNpbWF1eCwgcHLpZml46XMgZHUgY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnLiBMZXMgc2V1bHMgY2FyYWN06HJlcwpkb3LpbmF2YW50IGxvZ3XpcyB0ZWxzIHF1ZWxzIHNvbnQgY29tcHJpcyBlbnRyZSAzMiBldCAxMjYuIEJpZW4g6XZpZGVtbWVudCwgbGUKY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnIGVzdCBsdWktbeptZSBlbmNvZOkgYWZpbiBkZSBsZXZlciBsJ2FtYmlndWl06S4gSWwgZW4KZXN0IGRlIG3qbWUgcG91ciBsZSBjYXJhY3TocmUgJyInLCBhaW5zaSBxdWUgbGVzIGNhcmFjdOhyZXMgJ3snLCAnfCcgZXQgJ30nIHBvdXIKbGVzIGVuLXTqdGVzLgoKNC4yLjYpIENhcHR1cmUgZCdlbi106nRlcyBIVFRQIGV0IGRlIGNvb2tpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgdmVyc2lvbiAxLjEuMjMgYSBhcHBvcnTpIGxhIGNhcHR1cmUgZGVzIGNvb2tpZXMsIGV0IGxhIHZlcnNpb24gMS4xLjI5IGxhCmNhcHR1cmUgZCdlbi106nRlcy4gVG91dCBjZWNpIGVzdCBlZmZlY3R16SBlbiB1dGlsaXNhbnQgbGUgbW90LWNs6SAnY2FwdHVyZScuCgpMZXMgY2FwdHVyZXMgZGUgY29va2llcyBmYWNpbGl0ZW50IGxlIHN1aXZpIGV0IGxhIHJlY29uc3RpdHV0aW9uIGQndW5lIHNlc3Npb24KdXRpbGlzYXRldXIuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIGNvb2tpZSA8cHLpZml4ZV9jb29raWU+IGxlbiA8bG9uZ3VldXJfY2FwdHVyZT4KCkNlY2kgYWN0aXZlcmEgbGEgY2FwdHVyZSBkZSBjb29raWVzIOAgbGEgZm9pcyBkYW5zIGxlcyByZXF16nRlcyBldCBkYW5zIGxlcwpy6XBvbnNlcy4gRGUgY2V0dGUgbWFuaehyZSwgaWwgZGV2aWVudCBmYWNpbGUgZGUgZOl0ZWN0ZXIgbG9yc3F1J3VuIHV0aWxpc2F0ZXVyCmJhc2N1bGUgc3VyIHVuZSBub3V2ZWxsZSBzZXNzaW9uIHBhciBleGVtcGxlLCBjYXIgbGUgc2VydmV1ciBsdWkgculhc3NpZ25lcmEgdW4Kbm91dmVhdSBjb29raWUuCgpMZSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZXJhIHBhciA8cHLpZml4ZV9jb29raWU+IHNlcmEgY2FwdHVy6SwgZXQKdHJhbnNtaXMgc291cyBsYSBmb3JtZSAiTk9NPXZhbGV1ciIsIHNhbnMgdG91dGVmb2lzLCBleGPpZGVyIDxsb25ndWV1cl9jYXB0dXJlPgpjYXJhY3TocmVzICg2NCBhdSBtYXhpbXVtKS4gTG9yc3F1ZSBsZSBub20gZHUgY29va2llIGVzdCBmaXhlIGV0IGNvbm51LCBvbiBwZXV0CmxlIHN1ZmZpeGVyIGR1IHNpZ25lICI9IiBwb3VyIHMnYXNzdXJlciBxdSdhdWN1biBhdXRyZSBjb29raWUgbmUgcHJlbmRyYSBzYQpwbGFjZSBkYW5zIGxlcyBsb2dzLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2UgcGFyICJBU1BTRVNTSU9OIgogICAgY2FwdHVyZSBjb29raWUgQVNQU0VTU0lPTiBsZW4gMzIKCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gZXN0IGV4YWN0ZW1lbnQgInZnbnZpc2l0b3IiCiAgICBjYXB0dXJlIGNvb2tpZSB2Z252aXNpdG9yPSBsZW4gMzIKCkRhbnMgbGVzIGxvZ3MsIGxlIGNoYW1wIHBy6WPpZGFudCBsJ2luZGljYXRldXIgZGUgY29tcGzpdHVkZSBjb250aWVudCBsZSBjb29raWUKcG9zaXRpb25u6SBwYXIgbGUgc2VydmV1ciwgcHLpY+lk6SBkdSBjb29raWUgcG9zaXRpb25u6SBwYXIgbGUgY2xpZW50LiBDaGFjdW4KZGUgY2VzIGNoYW1wcyBlc3QgcmVtcGxhY+kgcGFyIGxlIHNpZ25lICItIiBsb3JzcXUnYXVjdW4gY29va2llIG4nZXN0IGZvdXJuaQpwYXIgbGUgY2xpZW50IG91IGxlIHNlcnZldXIsIG91IGxvcnNxdWUgbCdvcHRpb24gZXN0IGTpc2FjdGl26WUuLgoKTGVzIGNhcHR1cmVzIGQnZW4tdOp0ZXMgb250IHVuIHL0bGUgY29tcGzodGVtZW50IGRpZmbpcmVudC4gRWxsZXMgc29udCB1dGlsZXMKcG91ciBzdWl2cmUgdW4gaWRlbnRpZmlhbnQgZGUgcmVxdep0ZSBnbG9iYWxlbWVudCB1bmlxdWUgcG9zaXRpb25u6SBwYXIgdW4KYXV0cmUgcHJveHkgZW4gYW1vbnQsIHBvdXIgam91cm5hbGlzZXIgbGVzIG5vbXMgZGUgc2VydmV1cnMgdmlydHVlbHMsIGxlcyB0eXBlcwpkZSBjbGllbnRzIHdlYiwgbGEgbG9uZ3VldXIgZGVzIFBPU1QsIGxlcyAncmVmZXJyZXJzJywgZXRjLiBEYW5zIGxhIHLpcG9uc2UsIG9uCnBldXQgY2hlcmNoZXIgZGVzIGluZm9ybWF0aW9ucyByZWxhdGl2ZXMg4CBsYSBsb25ndWV1ciBhbm5vbmPpZSBkZSBsYSBy6XBvbnNlLApsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlLCBvdSBlbmNvcmUgbGEgbG9jYWxpc2F0aW9uIGQndW4gb2JqZXQgZW4gY2FzCmRlIHJlZGlyZWN0aW9uLiBUb3V0IGNvbW1lIHBvdXIgbGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMsIGlsIGVzdCBwb3NzaWJsZQpkJ2luY2x1cmUgbGVzIGVuLXTqdGVzIGRlIHJlcXXqdGVzIGV0IGRlIHLpcG9uc2Ugc2ltdWx0YW7pbWVudC4gTGEgc3ludGF4ZSBlc3QKbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CgpOb3RlOiBMZXMgbm9tcyBkJ2VuLXTqdGVzIG5lIHNvbnQgcGFzIHNlbnNpYmxlcyDgIGxhIGNhc3NlLgoKRXhlbXBsZXM6Ci0tLS0tLS0tLQogICAgIyBjb25zZXJ2ZXIgbGUgbm9tIGR1IHNlcnZldXIgdmlydHVlbCBhY2PpZOkgcGFyIGxlIGNsaWVudAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgICMgbm90ZXIgbGEgbG9uZ3VldXIgZGVzIGRvbm7pZXMgZW52b3npZXMgZGFucyB1biBQT1NUCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKCiAgICAjIG5vdGVyIGxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUgcGFyIGxlIHNlcnZldXIKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgICMgbm90ZXIgbCdVUkwgZGUgcmVkaXJlY3Rpb24KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKTGVzIGVuLXTqdGVzIG5vbiB0cm91dulzIHNvbnQgbG9ndelzIOAgdmlkZSwgZXQgc2kgdW4gZW4tdOp0ZSBhcHBhcmFpdCBwbHVzaWV1cnMKZm9pcywgc2V1bGUgbGEgZGVybmnocmUgb2NjdXJlbmNlIHNlcmEgY29uc2VydullLiBMZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZSBzb250CnJlZ3JvdXDpcyBlbnRyZSBkZXV4IGFjY29sYWRlcyAneycgZXQgJ30nIGRhbnMgbCdvcmRyZSBkZSBsZXVyIGTpY2xhcmF0aW9uLCBldApjaGFjdW4gc+lwYXLpcyBwYXIgdW5lIGJhcnJlIHZlcnRpY2FsZSAnfCcsIHNhbnMgYXVjdW4gZXNwYWNlLiBMZXMgZW4tdOp0ZXMgZGUKculwb25zZSBzb250IHBy6XNlbnTpcyBkZSBsYSBt6m1lIG1hbmnocmUsIG1haXMgYXBy6HMgdW4gZXNwYWNlIHN1aXZhbnQgbGUgYmxvYwpkJ2VuLXTqdGUgZGUgcmVxdep0ZS4gTGUgdG91dCBwculj6GRlIGxhIHJlcXXqdGUgSFRUUC4gRXhlbXBsZSA6CgogIENvbmZpZzoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBSZWZlcmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgU2VydmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBWaWEgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCiAgTG9nIDoKCiAgICBBdWcgIDkgMjA6MjY6MDkgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAxNCBbMDkvQXVnLzIwMDQ6MjA6MjY6MDldIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE2Mi8rMTYyIDIwMCArMzUwIC0gLSAtLS0tIDAvMC8wIDAvMCB7ZnIuYWRzZXJ2ZXIueWFob28uY298fGh0dHA6Ly9mci5mNDE2Lm1haWwufSB7fDg2NHxwcml2YXRlfHx9ICJHRVQgaHR0cDovL2ZyLmFkc2VydmVyLnlhaG9vLmNvbS8iCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyMCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE4Mi8rMTgyIDIwMCArMjc5IC0gLSAtLS0tIDAvMC8wIDAvMCB7dy5vZHMub3JnfHx9IHtGb3JtaWx1eC8wLjEuOHwzNDk1fHx8fSAiR0VUIGh0dHA6Ly93Lm9kcy5vcmcvc3l0YWRpbi5odG1sIEhUVFAvMS4xIiAKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDI4IFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzIvMTI2LysxMjggMjAwICsyMjMgLSAtIC0tLS0gMC8wLzAgMC8wIHt3d3cuaW5mb3RyYWZpYy5jb218fGh0dHA6Ly93Lm9kcy5vcmcvc3l0fSB7QXBhY2hlLzIuMC40MCAoUmVkIEh8OTA2OHx8fH0gIkdFVCBodHRwOi8vd3d3LmluZm90cmFmaWMuY29tL2ltYWdlcy9saXZlL2NhcnRlc2lkZi9ncmFuZGVzL2lkZl9uZS5wbmcgSFRUUC8xLjEiIAoKNC4yLjcpIEV4ZW1wbGVzIGRlIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS8wLzcvMTQ3LzY3MjMgMjAwIDI0MyAtIC0gLS0tLSAxLzMvNSAgMC8wIkhFQUQgLyBIVFRQLzEuMCIKICA9PiByZXF16nRlIGxvbmd1ZSAoNi41cykgc2Fpc2llIOAgbGEgbWFpbiBhdmVjIHVuIGNsaWVudCB0ZWxuZXQuIExlIHNlcnZldXIgYQogICAgIHLpcG9uZHUgZW4gMTQ3IG1zIGV0IGxhIHNlc3Npb24gcydlc3QgdGVybWlu6WUgbm9ybWFsZW1lbnQgKCctLS0tJykKCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMTIzMC83LzE0Ny82ODcwIDIwMCAyNDMgLSAtIC0tLS0gOTkvMjM5LzMyNCAwLzkgIkhFQUQgLyBIVFRQLzEuMCIKICA9PiBJZGVtLCBtYWlzIGxhIHJlcXXqdGUgYSDpdOkgbWlzZSBlbiBhdHRlbnRlIGRhbnMgbGEgZmlsZSBnbG9iYWxlIGRlcnJp6HJlCiAgICAgOSBhdXRyZXMgcmVxdep0ZXMgZOlq4CBwculzZW50ZXMsIGV0IHkgYSBhdHRlbmR1IDEyMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMS8zLzMgMC8wICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKICA9PiByZXF16nRlIHBvdXIgdW4gbG9uZyB0cmFuc2ZlcnQuIEwnb3B0aW9uICdsb2dhc2FwJyDpdGFpdCBzcOljaWZp6WUgZG9uYyBsZQogICAgIGxvZyBhIOl06SBn6W7pcukganVzdGUgYXZhbnQgbGUgdHJhbnNmZXJ0IGRlIGRvbm7pZXMuIExlIHNlcnZldXIgYSBy6XBvbmR1CiAgICAgZW4gMTQgbXMsIDI0MyBvY3RldHMgZCdlbi106nRlcyBvbnQg6XTpIHRyYW5zZuly6XMgYXUgY2xpZW50LCBldCBsZSB0ZW1wcwogICAgIHRvdGFsIGVudHJlIGwnYWNjZXB0KCkgZXQgbGUgcHJlbWllciBvY3RldCBkZSBkb25u6WUgZXN0IGRlIDMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAwLzIvMyAwLzAgIkdFVCAvY2dpLWJpbi9idWcuY2dpPyBIVFRQLzEuMCIKICA9PiBsZSBwcm94eSBhIGJsb3F16SB1bmUgculwb25zZSBkdSBzZXJ2ZXVyIHNvaXQg4CBjYXVzZSBkJ3VuIGZpbHRyZSAncnNwZGVueScKICAgICBvdSAncnNwaWRlbnknLCBzb2l0IHBhcmNlIHF1J2lsIGEgZOl0ZWN06SB1biByaXNxdWUgZGUgZnVpdGUgc2Vuc2libGUKICAgICBkJ2luZm9ybWF0aW9ucyByaXNxdWFudCBkJ+p0cmUgY2FjaOllcy4gRGFucyBjZSBjYXMsIGxhIHLpcG9uc2UgZXN0CiAgICAgcmVtcGxhY+llIHBhciAnNTAyIGJhZCBnYXRld2F5Jy4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OCBbMTUvT2N0LzIwMDM6MTU6MTg6NTVdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvODQ5MCAtMSAwIC0gLSBDUi0tIDAvMi8yIDAvMCAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBhIHJlZmVybekgbGEgY29ubmV4aW9uIGx1aS1t6m1lCiAgICAgKCdDLS0tJykgYXUgYm91dCBkZSA4LjVzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgc29uIHRpbWUtb3V0IGEgZXhwaXLpICgnYy0tLScpIGF1CiAgICAgYm91dCBkZSA1MHMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4gQXVjdW5lCiAgICAgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIsIG1haXMgbGUgcmVsYWlzIGEgdG91dCBkZSBt6m1lCiAgICAgcHUgcmVudm95ZXIgdW4gbWVzc2FnZSA0MDggYXUgY2xpZW50LgoKLSBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIGNECiAgPT4gbG9nIGVuIG1vZGUgJ3RjcGxvZycuIEV4cGlyYXRpb24gZHUgdGltZS1vdXQgY/R06SBjbGllbnQgKCdjRCcpIGF1IGJvdXQgZGUKICAgICA1cy4KCi0gaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDExNS8yMDIvMjA1IDAvMCAiSEVBRCAvIEhUVFAvMS4wIiAKICA9PiBMYSByZXF16nRlIGNsaWVudCBtZXQgM3Mg4CBlbnRyZXIgKHBldXQt6nRyZSB1biBwcm9ibOhtZSBy6XNlYXUpLCBldCBsYQogICAgIGNvbm5leGlvbiAoJ1NDLS0nKSB2ZXJzIGxlIHNlcnZldXIg6WNob3VlIGF1IGJvdXQgZGUgNCB0ZW50YXRpdmVzIGRlIDIKICAgICBzZWNvbmRlcyAocmV0cmllcyAzIGRhbnMgbGEgY29uZiksIHB1aXMgdW4gY29kZSA1MDMgZXN0IHJldG91cm7pIGF1CiAgICAgY2xpZW50LiBJbCB5IGF2YWl0IDExNSBjb25uZXhpb25zIHN1ciBjZSBzZXJ2ZXVyLCAyMDIgY29ubmV4aW9ucyBzdXIgY2V0dGUKICAgICBpbnN0YW5jZSwgZXQgMjA1IHN1ciBsJ2Vuc2VtYmxlIGRlcyBpbnN0YW5jZXMgcG91ciBjZSBwcm9jZXNzdXMuIElsIGVzdAogICAgIHBvc3NpYmxlIHF1ZSBsZSBzZXJ2ZXVyIGFpdCByZWZ1c+kgbGEgY29ubmV4aW9uIHBhcmNlIHF1J2lsIHkgZW4gYXZhaXQKICAgICBk6WrgIHRyb3AgZCfpdGFibGllcy4KCgo0LjMpIE1vZGlmaWNhdGlvbiBkZXMgZW4tdOp0ZXMgSFRUUAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCB1bmlxdWVtZW50LCBpbCBlc3QgcG9zc2libGUgZGUgcmVtcGxhY2VyIGNlcnRhaW5zIGVuLXTqdGVzIGRhbnMgbGEKcmVxdep0ZSBldC9vdSBsYSBy6XBvbnNlIOAgcGFydGlyIGQnZXhwcmVzc2lvbnMgculndWxp6HJlcy4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkZSBibG9xdWVyIGNlcnRhaW5lcyByZXF16nRlcyBlbiBmb25jdGlvbiBkdSBjb250ZW51IGRlcyBlbi106nRlcyBvdQpkZSBsYSByZXF16nRlLiBVbmUgbGltaXRhdGlvbiBjZXBlbmRhbnQgOiBsZXMgZW4tdOp0ZXMgZm91cm5pcyBhdSBtaWxpZXUgZGUKY29ubmV4aW9ucyBwZXJzaXN0ZW50ZXMgKGtlZXAtYWxpdmUpIG5lIHNvbnQgcGFzIHZ1cyBjYXIgaWxzIHNvbnQgY29uc2lk6XLpcwpjb21tZSBmYWlzYW50IHBhcnRpZSBkZXMg6WNoYW5nZXMgZGUgZG9ubullcyBjb25z6WN1dGlmcyDgIGxhIHByZW1p6HJlIHJlcXXqdGUuCkxlcyBkb25u6WVzIG5lIHNvbnQgcGFzIGFmZmVjdOllcywgY2VjaSBuZSBzJ2FwcGxpcXVlIHF1J2F1eCBlbi106nRlcy4gCgpMYSBzeW50YXhlIGVzdCA6CiAgIHJlcWFkZCAgICA8c3RyaW5nPiAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxcmVwICAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIHBvdXIgbW9kaWZpZXIgbGEgcmVxdep0ZQogICByZXFpcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZWwgICAgPHNlYXJjaD4gICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxaWRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlhbGxvdyA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbnkgICA8c2VhcmNoPiAgICAgICAgICAgICBpbnRlcmRpcmUgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFwYXNzICAgPHNlYXJjaD4gICAgICAgICAgICAgaW5oaWJlIGNlcyBhY3Rpb25zIHN1ciBsZXMgZW4tdOp0ZXMgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXBhc3MgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxdGFycGl0IDxzZWFyY2g+ICAgICAgICAgICAgIGJsb3F1ZXIgZXQgbWFpbnRlbmlyIHVuZSByZXF1ZXN0IHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWl0YXJwaXQgPHNlYXJjaD4gICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAwIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6SAoMCBk6XNpZ25hbnQgbGEgbGlnbmUgY29tcGzodGUpLiBJbCBlc3Qg6WdhbGVtZW50CnBvc3NpYmxlIGQnaW5z6XJlciB1biBjYXJhY3TocmUgbm9uIGltcHJpbWFibGUgKHV0aWxlIHBvdXIgbGUgc2F1dCBkZSBsaWduZSkKaW5zY3JpdmFudCAnXHgnIHN1aXZpIGR1IGNvZGUgaGV4YWTpY2ltYWwgZGUgY2UgY2FyYWN06HJlIChjb21tZSBlbiBDKS4KCjxzdHJpbmc+IHJlcHLpc2VudGUgdW5lIGNoYe5uZSBxdWkgc2VyYSBham91dOllIHN5c3TpbWF0aXF1ZW1lbnQgYXBy6HMgbGEKZGVybmnocmUgbGlnbmUgZCdlbi106nRlLgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtIGxhIHByZW1p6HJlIGxpZ25lIGRlIGxhIHJlcXXqdGUgZXQgY2VsbGUgZGUgbGEgculwb25zZSBzb250IHRyYWl06WVzIGNvbW1lCiAgICBkZXMgZW4tdOp0ZXMsIGNlIHF1aSBwZXJtZXQgZGUgcunpY3JpcmUgZGVzIFVSTCBldCBkZXMgY29kZXMgZCdlcnJldXIuCiAgLSAncmVxcmVwJyBlc3QgbCfpcXVpdmFsZW50IGRlICdjbGlleHAnIGVuIHZlcnNpb24gMS4wLCBldCAncnNwcmVwJyBjZWx1aSBkZQogICAgJ3NydmV4cCcuIENlcyBub21zIHNvbnQgdG91am91cnMgc3VwcG9ydOlzIG1haXMgZOljb25zZWlsbOlzLgogIC0gcG91ciBkZXMgcmFpc29ucyBkZSBwZXJmb3JtYW5jZXMsIGxlIG5vbWJyZSB0b3RhbCBkZSBjYXJhY3TocmVzIGFqb3V06XMgc3VyCiAgICB1bmUgcmVxdep0ZSBvdSB1bmUgculwb25zZSBlc3QgbGltaXTpIOAgNDA5NiBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuNSAoY2V0dGUKICAgIGxpbWl0ZSDpdGFpdCDgIDI1NiBhdXBhcmF2YW50KS4gQ2V0dGUgdmFsZXVyIGVzdCBtb2RpZmlhYmxlIGRhbnMgbGUgY29kZS4KICAgIFBvdXIgdW4gdXNhZ2UgdGVtcG9yYWlyZSwgb24gcGV1dCBnYWduZXIgZGUgbGEgcGxhY2UgZW4gc3VwcHJpbWFudCBxdWVscXVlcwogICAgZW4tdOp0ZXMgaW51dGlsZXMgYXZhbnQgbGVzIGFqb3V0cy4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNDAzIGZvcmJpZGRlbiIgdGFuZGlzIHF1J3VuZQogICAgculwb25zZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDUwMiBCYWQgZ2F0ZXdheSIuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHBhciAncmVxdGFycGl0JyBzZXJhIG1haW50ZW51ZSBwZW5kYW50IHVuZSBkdXLpZSDpZ2FsZQogICAgYXUgcGFyYW3odHJlICdjb250aW1lb3V0Jywgb3UganVzcXUn4CBsJ2FiYW5kb24gZHUgY2xpZW50LiBSaWVuIG5lIHNlcmEKICAgIGVudm956SBhdSBzZXJ2ZXVyLiBMb3JzcXVlIGxlIHRlbXBzIGFsbG916SBleHBpcmUsIGxlIHByb3h5IHLpcG9uZHJhIGF2ZWMKICAgIHVuZSBy6XBvbnNlICI1MDAgc2VydmVyIGVycm9yIiBkZSBzb3J0ZSBxdWUgbCdhdHRhcXVhbnQgbmUgc3VzcGVjdGUgcGFzCiAgICBxdSdpbCBhaXQg6XTpIGJsb3F16S4gTGVzIGxvZ3MgcmFwcG9ydGVyb250IGF1c3NpIGNlIGNvZGUgNTAwLCBtYWlzIGxlcwogICAgZmxhZ3MgZGUgdGVybWluYWlzb24gaW5kaXF1ZXJvbnQgIlBUIi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgICAgICMjIyMjIyBhIGZldyBleGFtcGxlcyAjIyMjIyMKCiAgICAgICAgIyByZXdyaXRlICdvbmxpbmUuZnInIGluc3RlYWQgb2YgJ2ZyZWUuZnInIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMKICAgICAgICByZXFyZXAgICAgICAgIF4oR0VUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwogICAgICAgIHJlcXJlcCAgICAgICAgXihQT1NUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwoKICAgICAgICAjIGZvcmNlIHByb3h5IGNvbm5lY3Rpb25zIHRvIGNsb3NlCiAgICAgICAgcmVxaXJlcCAgICAgICAgXlByb3h5LUNvbm5lY3Rpb246LiogICAgICAgIFByb3h5LUNvbm5lY3Rpb246XCBjbG9zZQogICAgICAgICMgcmV3cml0ZSBsb2NhdGlvbnMKICAgICAgICByc3BpcmVwICAgICAgICBeKExvY2F0aW9uOlwgKShbXjpdKjovL1teL10qKSguKikgXDFcMwoKICAgICAgICAjIyMjIyMgQSBmdWxsIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZCBvbiBwcm9kdWN0aW9uICMjIyMjIwoKICAgICAgICAjIEV2ZXJ5IGhlYWRlciBzaG91bGQgZW5kIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSBvbmUgc3BhY2UuCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qW1wgXSokCgogICAgICAgICMgYmxvY2sgQXBhY2hlIGNodW5rIGV4cGxvaXQKICAgICAgICByZXFpZGVueSAgICAgICAgXlRyYW5zZmVyLUVuY29kaW5nOltcIF0qY2h1bmtlZAogICAgICAgIHJlcWlkZW55ICAgICAgICBeSG9zdDpcIGFwYWNoZS0KCiAgICAgICAgIyBibG9jayBhbm5veWluZyB3b3JtcyB0aGF0IGZpbGwgdGhlIGxvZ3MuLi4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qKFwufCUyZSkoXC58JTJlKSglMmZ8JTVjfC98XFxcXCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIChbXlwgXSpcIFteXCBdKlwgfC4qJTAwKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLio8c2NyaXB0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKi8ocm9vdFwuZXhlXD98Y21kXC5leGVcP3xkZWZhdWx0XC5pZGFcPykKCgkjIHRhcnBpdCBhdHRhY2tzIG9uIHRoZSBsb2dpbiBwYWdlLgogICAgICAgIHJlcXRhcnBpdCAgICAgXlteOlwgXSpcIC4qXC5waHA/bG9naW49W14wLTldCgogICAgICAgICMgYWxsb3cgb3RoZXIgc3ludGFjdGljYWxseSB2YWxpZCByZXF1ZXN0cywgYW5kIGJsb2NrIGFueSBvdGhlciBtZXRob2QKICAgICAgICByZXFpcGFzcyAgICAgICAgXihHRVR8UE9TVHxIRUFEfE9QVElPTlMpXCAvLipcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpcGFzcyAgICAgICAgXk9QVElPTlNcIFxcKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgCgogICAgICAgICMgZm9yY2UgY29ubmVjdGlvbjpjbG9zZSwgdGh1cyBkaXNhYmxpbmcgSFRUUCBrZWVwLWFsaXZlCiAgICAgICAgb3B0aW9uICAgICAgICAgICAgICAgIGh0dHBjbG9zCgogICAgICAgICMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMy44LCBpbCBlc3QKcG9zc2libGUgZGUgcHLpY2lzZXIgbGUgbW90LWNs6SAiZXhjZXB0IiBzdWl2aSBkJ3VuZSBhZHJlc3NlIG91IHVuIHLpc2VhdQpJUCBzb3VyY2UgcG91ciBsZXF1ZWwgbCdlbnTqdGUgbmUgc2VyYSBwYXMgYWpvdXTpLiBDJ2VzdCB0cuhzIHByYXRpcXVlIGRhbnMgbGUKY2FzIG/5IHVuIGF1dHJlIHJldmVyc2UtcHJveHkgYWpvdXRhbnQgZOlq4CBsJ2VudOp0ZSBlc3QgaW5zdGFsbOkgc3VyIGxhIG3qbWUKbWFjaGluZSBvdSBkYW5zIHVuZSBETVogY29ubnVlLiBMZSBjYXMgbGUgcGx1cyBmculxdWVudCBlc3QgbGnpIOAgbCd1dGlsaXNhdGlvbgpkZSBzdHVubmVsIGVuIGxvY2FsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IgZXhjZXB0IDEyNy4wLjAuMS84CiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKTm90b25zIHF1ZSBjZXJ0YWlucyBzZXJ2ZXVycyBIVFRQIG5lIHJlZmVybWVudCBwYXMgbuljZXNzYWlyZW1lbnQgbGEgc2Vzc2lvbgpUQ1AgZW4gZmluIGRlIHRyYWl0ZW1lbnQgbG9yc3F1J2lscyByZedvaXZlbnQgdW4gZW506nRlICdDb25uZWN0aW9uOiBjbG9zZScsCmNlIHF1aSBzZSB0cmFkdWl0IHBhciBkZXMgZ3JhbmRzIG5vbWJyZXMgZGUgc2Vzc2lvbnMg6XRhYmxpZXMgZXQgZGVzIHRlbXBzCmdsb2JhdXggdHLocyBsb25ncyBzdXIgbGVzIHJlcXXqdGVzLiBQb3VyIGNvbnRvdXJuZXIgY2UgcHJvYmzobWUsIGxhIHZlcnNpb24KMS4yLjkgYXBwb3J0ZSB1bmUgbm91dmVsbGUgb3B0aW9uICdmb3JjZWNsb3NlJyBxdWkgcmVmZXJtZSBsYSBjb25uZXhpb24gc29ydGFudAp2ZXJzIGxlIHNlcnZldXIgZOhzIHF1J2lsIGNvbW1lbmNlIOAgculwb25kcmUgZXQgc2V1bGVtZW50IHNpIGxlIHRhbXBvbiBkZQpyZXF16nRlIGVzdCB2aWRlLiBBdHRlbnRpb24gdG91dGVmb2lzIOAgbmUgUEFTIHV0aWxpc2VyIGNldHRlIG9wdGlvbiBzaSBkZXMKbel0aG9kZXMgQ09OTkVDVCBzb250IGF0dGVuZHVlcyBlbnRyZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ci4gTCdvcHRpb24KJ2ZvcmNlY2xvc2UnIGltcGxpcXVlIGwnb3B0aW9uICdodHRwY2xvc2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBmb3JjZWNsb3NlCgoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCkwnYXV0cmUgc29sdXRpb24gYXBwb3J06WUgcGFyIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMgZXN0IGRlIHLpdXRpbGlzZXIgdW4KY29va2llIGVuIHByb3ZlbmFuY2UgZHUgc2VydmV1ciBldCBkZSBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLgpEYW5zIGNlIGNhcywgbmUgcGFzIG91YmxpZXIgZGUgZm9yY2VyIGxlIG1vZGUgImh0dHBjbG9zZSIgcG91ciBlbXDqY2hlciBsZQpjbGllbnQgZXQgbGUgc2VydmV1ciBkZSB0cmF2YWlsbGVyIGVuIG1vZGUgImtlZXAtYWxpdmUiIGFmaW4gcXVlIGxlIHByb3h5CnB1aXNzZSBjb3JyaWdlciBsZSBub20gZHUgY29va2llIGRhbnMgdG91dGVzIGxlcyBmdXR1cmVzIHJlcXXqdGVzLgoKICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc3J2MSBjaGVjawogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNydjIgY2hlY2sKICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCgo0LjUpIFByb3RlY3Rpb24gY29udHJlIGxlcyBmdWl0ZXMgZCdpbmZvcm1hdGlvbnMgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMjggZXQgMS4yLjEsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2NoZWNrY2FjaGUnIGEg6XTpCmNy6ellLiBFbGxlIHNlcnQg4CBpbnNwZWN0ZXIgbWludXRpZXVzZW1lbnQgbGVzIGVuLXTqdGVzICdDYWNoZS1jb250cm9sJywKJ1ByYWdtYScsIGV0ICdTZXQtY29va2llJyBkYW5zIGxlcyBy6XBvbnNlcyBzZXJ2ZXVyIHBvdXIgZOl0ZXJtaW5lciBzJ2lsIHkgYQp1biByaXNxdWUgZGUgY2FjaGVyIHVuIGNvb2tpZSBzdXIgdW4gcHJveHkgY/R06SBjbGllbnQuIFF1YW5kIGNldHRlIG9wdGlvbiBlc3QKYWN0aXbpZSwgbGVzIHNldWxlcyBy6XBvbnNlcyBxdWkgcGV1dmVudCDqdHJlIHJldG91cm7pZXMgYXUgY2xpZW50IHNvbnQgOgogIC0gdG91dGVzIGNlbGxlcyBxdWkgbidvbnQgcGFzIGQnZW4tdOp0ZSAnU2V0LWNvb2tpZScgOwogIC0gdG91dGVzIGNlbGxlcyBxdWkgb250IHVuIGNvZGUgZGUgcmV0b3VyIGF1dHJlIHF1ZSAyMDAsIDIwMywgMjA2LCAzMDAsIDMwMSwgCiAgICA0MTAsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIGZvbnQgc3VpdGUg4CB1bmUgcmVxdep0ZSBQT1NULCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pCiAgICB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ1ByYWdtYTogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHByaXZhdGUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1zdG9yZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcy1tYXhhZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llIicgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUsJwogICAgKGF1dG9yaXNhbnQgZCdhdXRyZXMgY2hhbXBzIGFwcuhzIHNldC1jb29raWUpLgoKU2kgdW5lIHLpcG9uc2UgbmUgcmVzcGVjdGUgcGFzIGNlcyBwcuktcmVxdWlzLCBhbG9ycyBlbGxlIHNlcmEgYmxvcXXpZSBkZSBsYQpt6m1lIG1hbmnocmUgcXVlIHMnaWwgcydhZ2lzc2FpdCBkJ3VuIGZpbHRyZSAncnNwZGVueScsIGF2ZWMgZW4gcmV0b3VyIHVuCm1lc3NhZ2UgIkhUVFAgNTAyIGJhZCBnYXRld2F5Ii4gTCfpdGF0IGRlIHNlc3Npb24gbW9udHJlICJQSC0tIiBjZSBxdWkgdmV1dApkaXJlIHF1ZSBjJ2VzdCBsZSBwcm94eSBxdWkgYSBibG9xdekgbGEgculwb25zZSBkdXJhbnQgbGUgdHJhaXRlbWVudCBkZXMKZW4tdOp0ZXMuIERlIHBsdXMsIHVuIG1lc3NhZ2UgZCdhbGVydGUgc2VyYSBlbnZveekgZGFucyBsZXMgbG9ncyBkZSBzb3J0ZSBxdWUKbCdhZG1pbmlzdHJhdGV1ciBzYWNoZSBxdSdpbCB5IGEgdW5lIGFjdGlvbiBjb3JyZWN0cmljZSDgIGVudHJlcHJlbmRyZS4KCjQuNikgUGVyc29uYWxpc2F0aW9uIGRlcyBlcnJldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5lcyBzaXR1YXRpb25zIGNvbmR1aXNlbnQg4CByZXRvdXJuZXIgdW5lIGVycmV1ciBIVFRQIGF1IGNsaWVudCA6CiAgLSByZXF16nRlIGludmFsaWRlIG91IHRyb3AgbG9uZ3VlID0+IGNvZGUgSFRUUCA0MDAKICAtIHJlcXXqdGUgbWV0dGFudCB0cm9wIGRlIHRlbXBzIOAgdmVuaXIgPT4gY29kZSBIVFRQIDQwOAogIC0gcmVxdep0ZSBpbnRlcmRpdGUgKGJsb3F16WUgcGFyIHVuIHJlcWlkZW55KSA9PiBjb2RlIEhUVFAgNDAzCiAgLSBlcnJldXIgaW50ZXJuZSBkdSBwcm94eSA9PiBjb2RlIEhUVFAgNTAwCiAgLSBsZSBzZXJ2ZXVyIGEgcmV0b3VybukgdW5lIHLpcG9uc2UgaW5jb21wbOh0ZSBvdSBpbnZhbGlkZSA9PiBjb2RlIEhUVFAgNTAyCiAgLSBhdWN1biBzZXJ2ZXVyIGRpc3BvbmlibGUgcG91ciBjZXR0ZSByZXF16nRlID0+IGNvZGUgSFRUUCA1MDMKICAtIGxlIHNlcnZldXIgbidhIHBhcyBy6XBvbmR1IGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSA9PiBjb2RlIEhUVFAgNTA0CgpVbiBtZXNzYWdlIGQnZXJyZXVyIHN1Y2NpbnQgdGly6SBkZSBsYSBSRkMgYWNjb21wYWduZSBjZXMgY29kZXMgZGUgcmV0b3VyLgpDZXBlbmRhbnQsIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2xpZW506GxlLCBvbiBwZXV0IHBy6WbpcmVyIHJldG91cm5lciBkZXMKcGFnZXMgcGVyc29ubmFsaXPpZXMuIENlY2kgZXN0IHBvc3NpYmxlIGRlIGRldXggbWFuaehyZXMsIGwndW5lIHJlcG9zYW50IHN1cgp1bmUgcmVkaXJlY3Rpb24gdmVycyB1biBzZXJ2ZXVyIGNvbm51LCBldCBsJ2F1dHJlIGNvbnNpc3RhbnQg4CByZXRvdXJuZXIgdW4KZmljaGllciBsb2NhbC4KCjQuNi4xKSBSZWRpcmVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0KVW5lIHJlZGlyZWN0aW9uIGQnZXJyZXVyIGVzdCBhc3N1cullIHBhciBsZSBiaWFpcyBkZSBsYSBjb21tYW5kZSAiZXJyb3Jsb2MiIDoKCiAgICBlcnJvcmxvYyA8Y29kZV9IVFRQPiA8bG9jYXRpb24+CgpBdSBsaWV1IGRlIGfpbulyZXIgdW5lIGVycmV1ciBIVFRQIDxjb2RlX0hUVFA+IHBhcm1pIGxlcyBjb2RlcyBjaXTpcyBjaS1kZXNzdXMsCmxlIHByb3h5IGfpbuhyZXJhIHVuIGNvZGUgZGUgcmVkaXJlY3Rpb24gdGVtcG9yYWlyZSAoSFRUUCAzMDIpIHZlcnMgbCdhZHJlc3NlCmQndW5lIHBhZ2UgcHLpY2lz6WUgZGFucyA8bG9jYXRpb24+LiBDZXR0ZSBhZHJlc3NlIHBldXQg6nRyZSByZWxhdGl2ZSBhdSBzaXRlLApvdSBhYnNvbHVlLiBDb21tZSBjZXR0ZSBy6XBvbnNlIGVzdCB0cmHudOllIHBhciBsZSBuYXZpZ2F0ZXVyIGR1IGNsaWVudApsdWktbeptZSwgaWwgZXN0IGluZGlzcGVuc2FibGUgcXVlIGwnYWRyZXNzZSBmb3VybmllIGx1aSBzb2l0IGFjY2Vzc2libGUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIGVycm9ybG9jIDQwMCAvYmFkcmVxdWVzdC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDAzIC9mb3JiaWRkZW4uaHRtbAogICAgICAgIGVycm9ybG9jIDQwOCAvdG9vbG9uZy5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAwIGh0dHA6Ly9oYXByb3h5LmRvbWFpbi5uZXQvYnVncmVwb3J0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDIgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDMgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDQgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKCk5vdGU6IGxhIFJGQzI2MTYgc3RpcHVsZSBxdSd1biBjbGllbnQgZG9pdCBy6XV0aWxpc2VyIGxhIG3qbWUgbel0aG9kZSBwb3VyCmFjY+lkZXIg4CBsJ1VSTCBkZSByZWRpcmVjdGlvbiBxdWUgY2VsbGUgcXVpIGwnYSByZXRvdXJu6WUsIGNlIHF1aSBwb3NlIGRlcwpwcm9ibOhtZXMgYXZlYyBsZXMgcmVxdep0ZXMgUE9TVC4gTGUgY29kZSBkZSByZXRvdXIgMzAzIGEg6XTpIGNy6ekgZXhwcuhzIHBvdXIKculnbGVyIGNlIHByb2Js6G1lLCBpbmRpcXVhbnQgYXUgY2xpZW50IHF1J2lsIGRvaXQgYWNj6WRlciDgIGwnVVJMIHJldG91cm7pZQpkYW5zIGxlIGNoYW1wIExvY2F0aW9uIGF2ZWMgbGEgbel0aG9kZSBHRVQgdW5pcXVlbWVudC4gU2V1bGVtZW50LCBjZXJ0YWlucwpuYXZpZ2F0ZXVycyBhbnTpcmlldXJzIOAgSFRUUC8xLjEgbmUgY29ubmFpc3NlbnQgcGFzIGNlIGNvZGUgZGUgcmV0b3VyLiBEZQpwbHVzLCBsYSBwbHVwYXJ0IGRlcyBuYXZpZ2F0ZXVycyBzZSBjb21wb3J0ZW50IGTpauAgYXZlYyBsZSBjb2RlIDMwMiBjb21tZSBpbHMKZGV2cmFpZW50IGxlIGZhaXJlIGF2ZWMgbGUgMzAzLiBEb25jLCBkYW5zIGxlIGJ1dCBkZSBsYWlzc2VyIGxlIGNob2l4IOAKbCd1dGlsaXNhdGV1ciwgbGVzIHZlcnNpb25zIDEuMS4zMSBldCAxLjIuNSBhcHBvcnRlbnQgZGV1eCBub3V2ZWxsZXMgY29tbWFuZGVzCnZpc2FudCDgIHJlbXBsYWNlciAnZXJyb3Jsb2MnIDogJ2Vycm9ybG9jMzAyJyBldCAnZXJyb3Jsb2MzMDMnLgoKTGV1ciB1c2FnZSBub24gYW1iaWf8IGVzdCByZWNvbW1hbmTpIOAgbGEgcGxhY2UgZGUgbGEgY29tbWFuZGUgJ2Vycm9ybG9jJyAocXVpCnV0aWxpc2UgdG91am91cnMgMzAyKS4gRGFucyBsZSBkb3V0ZSwgcHLpZulyZXogbCd1dGlsaXNhdGlvbiBkZSAnZXJyb3Jsb2MzMDMnCmTocyBxdWUgdm91cyBzYXZleiBxdWUgdm9zIGNsaWVudHMgc3VwcG9ydGVudCBsZSBjb2RlIGRlIHJldG91ciBIVFRQIDMwMy4KCjQuNi4yKSBGaWNoaWVycyBsb2NhdXgKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXJmb2lzIGlsIGVzdCBzb3VoYWl0YWJsZSBkZSBjaGFuZ2VyIGwnZXJyZXVyIHJldG91cm7pZSBzYW5zIHJlY291cmlyIOAgZGVzCnJlZGlyZWN0aW9ucy4gTGEgc2Vjb25kZSBt6XRob2RlIGNvbnNpc3RlIOAgY2hhcmdlciBkZXMgZmljaGllcnMgbG9jYXV4IGxvcnMKZHUgZOltYXJyYWdlIGV0IOAgbGVzIGVudm95ZXIgZW4gZ3Vpc2UgZGUgcHVyIGNvbnRlbnUgSFRUUCBlbiBjYXMgZCdlcnJldXIuCkMnZXN0IGNlIHF1ZSBmYWl0IGxlIG1vdCBjbOkgJ2Vycm9yZmlsZScuCgpBdHRlbnRpb24sIGlsIHkgYSBkZXMgcGnoZ2VzIOAgcHJlbmRyZSBlbiBjb21wdGUgOgogLSBsZXMgZmljaGllcnMgc29udCBjaGFyZ+lzIGR1cmFudCBsJ2FuYWx5c2UgZGUgbGEgY29uZmlndXJhdGlvbiwgYXZhbnQgZGUKICAgZmFpcmUgbGUgY2hyb290KCkuIERvbmMgaWxzIHNvbnQgcmVsYXRpZnMgYXUgc3lzdOhtZSBkZSBmaWNoaWVycyBy6WVsLiBQb3VyCiAgIGNldHRlIHJhaXNvbiwgaWwgZXN0IHJlY29tbWFuZOkgZGUgdG91am91cnMgcGFzc2VyIHVuIGNoZW1pbiBhYnNvbHUgdmVycyBjZXMKICAgZmljaGllcnMuCgogLSBsZSBjb250ZW51IGRlIGNlcyBmaWNoaWVycyBuJ2VzdCBwYXMgZHUgSFRNTCBtYWlzIHZyYWltZW50IGR1IHByb3RvY29sZSBIVFRQCiAgIGF2ZWMgcG90ZW50aWVsbGVtZW50IHVuIGNvcnBzIEhUTUwuIERvbmMgbGEgcHJlbWnocmUgbGlnbmUgZXQgbGVzIGVuLXTqdGVzCiAgIHNvbnQgb2JsaWdhdG9pcmVzLiBJZOlhbGVtZW50LCBjaGFxdWUgbGlnbmUgZGFucyBsYSBwYXJ0aWUgSFRUUCBkZXZyYWl0IHNlCiAgIHRlcm1pbmVyIHBhciB1biBDUi1MRiBwb3VyIHVuIG1heGltdW0gZGUgY29tcGF0aWJpbGl06S4KCiAtIGxlcyBy6XBvbnNlcyBzb250IGxpbWl06WVzIOAgdW5lIHRhaWxsZSBkZSBidWZmZXIgKEJVRlNJWkUpLCBn6W7pcmFsZW1lbnQgOAogICBvdSAxNiBrby4KCiAtIGxlcyBy6XBvbnNlcyBuZSBkZXZyYWllbnQgcGFzIGluY2x1cmUgZGUgculm6XJlbmNlcyBhdXggc2VydmV1cnMgbG9jYXV4LAogICBhZmluIGRlIG5lIHBhcyByaXNxdWVyIGRlIGNy6WVyIGRlcyBib3VjbGVzIGluZmluaWVzIHN1ciBsZSBuYXZpZ2F0ZXVyIGRhbnMKICAgbGUgY2FzIGQndW5lIHBhbm5lIGxvY2FsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICBlcnJvcmZpbGUgNDAwIC9ldGMvaGFwcm94eS9lcnJvcmZpbGVzLzQwMGJhZHJlcS5odHRwCiAgICAgICAgZXJyb3JmaWxlIDQwMyAvZXRjL2hhcHJveHkvZXJyb3JmaWxlcy80MDNmb3JiaWQuaHR0cAogICAgICAgIGVycm9yZmlsZSA1MDMgL2V0Yy9oYXByb3h5L2Vycm9yZmlsZXMvNTAzc29ycnkuaHR0cAoKCjQuNykgQ2hhbmdlbWVudCBkZXMgdmFsZXVycyBwYXIgZOlmYXV0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjIgZXN0IGFwcGFydWUgbGEgbm90aW9uIGRlIHZhbGV1cnMgcGFyIGTpZmF1dCwgY2UgcXVpCul2aXRlIGRlIHLpcOl0ZXIgZGVzIHBhcmFt6HRyZXMgY29tbXVucyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzLCB0ZWxzIHF1ZSBsZXMKdGltZW91dHMsIGFkcmVzc2VzIGRlIGxvZywgbW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQsIGV0Yy4KCkxlcyB2YWxldXJzIHBhciBk6WZhdXQgc29udCBwb3NpdGlvbm7pZXMgZGFucyBsYSBkZXJuaehyZSBzZWN0aW9uICdkZWZhdWx0cycKcHLpY+lkZW50IGwnaW5zdGFuY2UgcXVpIGxlcyB1dGlsaXNlcmEuIE9uIHBldXQgZG9uYyBtZXR0cmUgYXV0YW50IGRlIHNlY3Rpb25zCidkZWZhdWx0cycgcXVlIGwnb24gdmV1dC4gSWwgZmF1dCBqdXN0ZSBzZSByYXBwZWxlciBxdWUgbGEgcHLpc2VuY2UgZCd1bmUgdGVsbGUKc2VjdGlvbiBpbXBsaXF1ZSB1bmUgYW5udWxhdGlvbiBkZSB0b3VzIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgcG9zaXRpb25u6XMKcHLpY+lkZW1tZW50LCBkYW5zIGxlIGJ1dCBkZSBsZXMgcmVtcGxhY2VyLgoKTGEgc2VjdGlvbiAnZGVmYXVsdHMnIHV0aWxpc2UgbGEgbeptZSBzeW50YXhlIHF1ZSBsYSBzZWN0aW9uICdsaXN0ZW4nLCBhdXgKcGFyYW3odHJlcyBwcuhzIHF1aSBuZSBzb250IHBhcyBzdXBwb3J06XMuIExlIG1vdCBjbOkgJ2RlZmF1bHRzJyBwZXV0IGFjY2VwdGVyCnVuIGNvbW1lbnRhaXJlIGVuIGd1aXNlIHBhcmFt6HRyZS4KCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjgvMS4yLjEsIHNldWxzIGxlcyBwYXJhbeh0cmVzIHN1aXZhbnRzIHBldXZlbnQg6nRyZQpwb3NpdGlvbm7pcyBkYW5zIHVuZSBzZWN0aW9uICdkZWZhdWx0cycgOgogIC0gbG9nIChsZSBwcmVtaWVyIGV0IGxlIHNlY29uZCkKICAtIG1vZGUgeyB0Y3AsIGh0dHAsIGhlYWx0aCB9CiAgLSBiYWxhbmNlIHsgcm91bmRyb2JpbiB9CiAgLSBkaXNhYmxlZCAocG91ciBk6XNhY3RpdmVyIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHF1aSBzdWl2ZW50KQogIC0gZW5hYmxlZCAocG91ciBmYWlyZSBsJ29w6XJhdGlvbiBpbnZlcnNlLCBtYWlzIGMnZXN0IGxlIGNhcyBwYXIgZOlmYXV0KQogIC0gY29udGltZW91dCwgY2xpdGltZW91dCwgc3J2dGltZW91dCwgZ3JhY2UsIHJldHJpZXMsIG1heGNvbm4KICAtIG9wdGlvbiB7IHJlZGlzcGF0Y2gsIHRyYW5zcGFyZW50LCBrZWVwYWxpdmUsIGZvcndhcmRmb3IsIGxvZ2FzYXAsIGh0dHBjbG9zZSwKICAgICAgICAgICAgIGNoZWNrY2FjaGUsIGh0dHBsb2csIHRjcGxvZywgZG9udGxvZ251bGwsIHBlcnNpc3QsIGh0dHBjaGsgfQogIC0gcmVkaXNwYXRjaCwgcmVkaXNwLCB0cmFuc3BhcmVudCwgc291cmNlIHsgYWRkcjpwb3J0IH0KICAtIGNvb2tpZSwgY2FwdHVyZQogIC0gZXJyb3Jsb2MKCk5lIHNvbnQgcGFzIHN1cHBvcnTpcyBkYW5zIGNldHRlIHZlcnNpb24sIGxlcyBhZHJlc3NlcyBkZSBkaXNwYXRjaCBldCBsZXMKY29uZmlndXJhdGlvbnMgZGUgc2VydmV1cnMsIGFpbnNpIHF1ZSB0b3VzIGxlcyBmaWx0cmVzIGJhc+lzIHN1ciBsZXMKZXhwcmVzc2lvbnMgculndWxp6HJlcyA6CiAgLSBkaXNwYXRjaCwgc2VydmVyLAogIC0gcmVxKiwgcnNwKgoKRW5maW4sIGlsIG4neSBhIHBhcyBsZSBtb3llbiwgcG91ciBsZSBtb21lbnQsIGQnaW52YWxpZGVyIHVuIHBhcmFt6HRyZSBib29s6WVuCnBvc2l0aW9ubukgcGFyIGTpZmF1dC4gRG9uYyBzaSB1bmUgb3B0aW9uIGVzdCBzcOljaWZp6WUgZGFucyBsZXMgcGFyYW3odHJlcyBwYXIKZOlmYXV0LCBsZSBzZXVsIG1veWVuIGRlIGxhIGTpc2FjdGl2ZXIgcG91ciB1bmUgaW5zdGFuY2UsIGMnZXN0IGRlIGNoYW5nZXIgbGVzCnBhcmFt6HRyZXMgcGFyIGTpZmF1dCBhdmFudCBsYSBk6WNsYXJhdGlvbiBkZSBsJ2luc3RhbmNlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgVENQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAxODAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDE4MDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwogICAgICAgIHJlZGlzcGF0Y2gKCiAgICBsaXN0ZW4gYXBwX3RjcDEgMTAuMC4wLjE6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgogICAgbGlzdGVuIGFwcF90Y3AyIDEwLjAuMC4yOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMi4yIGJhY2t1cAogICAgCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgSFRUUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAyMDAwMAogICAgICAgIHNydnRpbWVvdXQgMjAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKCiAgICBsaXN0ZW4gYXBwX2h0dHAxIDEwLjAuMC4xOjgwLTgxCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIGNhcHR1cmUgY29va2llIHVzZXJpZD0gbGVuIDEwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzgwMDAgY29va2llIHNydjEgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjorODAwMCBjb29raWUgc3J2MiBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAoKICAgIGRlZmF1bHRzCiAgICAgICAgIyBzZWN0aW9uIHZpZGUgcXVpIGFubnVsZSB0b3VzIGxlcyBwYXJhbeh0ZXMgcGFyIGTpZmF1dC4KCgo0LjgpIFJhcHBvcnQgZCfpdGF0IHNvdXMgZm9ybWUgZGUgcGFnZSBIVE1MCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi4xNCwgaWwgZGV2aWVudCBwb3NzaWJsZSBwb3VyIGhhcHJveHkgZCdpbnRlcmNlcHRyZSBkZXMKcmVxdep0ZXMgcG91ciB1bmUgVVJJIHBhcnRpY3VsaehyZSBldCBkZSByZXRvdXJuZXIgdW4gcmFwcG9ydCBjb21wbGV0IGQn6XRhdCBkZQpsJ2FjdGl2aXTpIGR1IHByb3h5LCBldCBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgc2VydmV1cnMuIENlY2kgZXN0IGRpc3BvbmlibGUKdmlhIGxlIG1vdCBjbOkgInN0YXRzIiBhc3NvY2npIOAgbidpbXBvcnRlIGxhcXVlbGxlIGRlIGNlcyBvcHRpb25zIDoKCiAgIC0gc3RhdHMgZW5hYmxlCiAgIC0gc3RhdHMgdXJpIDx1cmkgcHJlZml4PgogICAtIHN0YXRzIHJlYWxtIDxhdXRoZW50aWNhdGlvbiByZWFsbT4KICAgLSBzdGF0cyBhdXRoIDx1c2VyOnBhc3N3b3JkPgogICAtIHN0YXRzIHNjb3BlIDxwcm94eV9pZD4gfCAnLicKCgpQYXIgZOlmYXV0LCBsZSByYXBwb3J0IGVzdCBk6XNhY3RpdukuIExlIGZhaXQgZGUgc3DpY2lmaWVyIHVuZSBkZXMgY29tYmluYWlzaW9uCmNpLWRlc3N1cyBhY3RpdmUgbGUgcmFwcG9ydCBwb3VyIGwnaW5zdGFuY2UgZGUgcHJveHkgcXVpIGxlIHLpZulyZW5jZS4gTGEKc29sdXRpb24gbGEgcGx1cyBzaW1wbGUgZXN0IGQndXRpbGlzZXIgInN0YXRzIGVuYWJsZSIgcXVpIGFjdGl2ZXJhIGxlIHJhcHBvcnQKYXZlYyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHN1aXZhbnQgOgoKICAgLSBkZWZhdWx0IFVSSSAgIDogIi9oYXByb3h5P3N0YXRzIiAgICAgICAgKENPTkZJR19TVEFUU19ERUZBVUxUX1VSSSkKICAgLSBkZWZhdWx0IGF1dGggIDogbm9uIHNw6WNpZmnpIChwYXMgZCdhdXRoZW50aWNhdGlvbikKICAgLSBkZWZhdWx0IHJlYWxtIDogIkhBUHJveHkgU3RhdGlzdGljcyIgICAgKENPTkZJR19TVEFUU19ERUZBVUxUX1JFQUxNKQogICAtIGRlZmF1bHQgc2NvcGUgOiBub24gc3BlY2lmaekgKGFjY+hzIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMpCgpMJ29wdGlvbiAic3RhdHMgdXJpIDx1cmlfcHJlZml4PiIgcGVybWV0IGQnaW50ZXJjZXB0ZXIgdW4gYXV0cmUgcHLpZml4ZSBkJ1VSSQpxdWUgY2VsdWkgcGFyIGTpZmF1dC4gTm90ZXIgcXVlIG4naW1wb3J0ZSBxdWVsbGUgVVJJIHF1aSBDT01NRU5DRSBhdmVjIGNldHRlCmNoYe5uZSBzZXJhIHZhbGlk6WUuIFBhciBleGVtcGxlLCB1bmUgaW5zdGFuY2UgcG91cnJhaXQg6nRyZSBk6WRp6WUg4CBsYSBwYWdlCmQn6XRhdCBzZXVsZW1lbnQgZXQgculwb25kcmUg4CB0b3V0ZSBVUkkuCgpFeGFtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGludGVyY2VwdGUgbidpbXBvcnRlIHF1ZWxsZSBVUkkgZXQgcmV0b3VybmUgbGEgcGFnZSBkJ+l0YXQuCiAgICBsaXN0ZW4gc3RhdHMgOjgwODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBzdGF0cyB1cmkgLwoKCkwnb3B0aW9uICJzdGF0cyBhdXRoIDx1c2VyOnBhc3N3b3JkPiIgYWN0aXZlIGwnYXV0aGVudGlmaWNhdGlvbiAiQmFzaWMiIGV0CmFqb3V0ZSB1biBjb3VwbGUgInVzZXI6cGFzc3dvcmQiIHZhbGlkZSDgIGxhIGxpc3RlIGRlcyBjb21wdGVzIGF1dG9yaXPpcy4KTCd1dGlsaXNhdGV1ciA8dXNlcj4gZXQgbGUgbW90IGRlIHBhc3NlIDxwYXNzd29yZD4gZG9pdmVudCDqdHJlIHBy6WNpc+lzCmVuIGNsYWlyIGRhbnMgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uLCBldCBjb21tZSBjZWNpIGVzdCBkZQpsJ2F1dGhlbnRpZmljYXRpb24gSFRUUCAiQmFzaWMiLCBpbCBmYXV0IOp0cmUgY29uc2NpZW50IHF1J2lscyB0cmFuc2l0ZW50IGVuCmNsYWlyIHN1ciBsZSBy6XNlYXUsIGRvbmMgaWwgbmUgZmF1dCBwYXMgdXRpbGlzZXIgZGUgY29tcHRlIHNlbnNpYmxlLiBMYSBsaXN0ZQplc3QgaWxsaW1pdOllIGRhbnMgbGUgYnV0IGRlIHBvdXZvaXIgZm91cm5pciBkZXMgYWNj6HMgZmFjaWxlbWVudCDgIGRlcwpk6XZlbG9wcGV1cnMgb3Ug4CBkZXMgY2xpZW50cy4KCkwnb3B0aW9uICJzdGF0cyByZWFsbSA8cmVhbG0+IiBk6WZpbml0IGxlICJkb21haW5lIiAoInJlYWxtIikgZGUgdmFsaWRpdOkgZHUKbW90IGRlIHBhc3NlIHF1aSBzZXJhIHBy6XNlbnTpIGRhbnMgbGEgYm/udGUgZGUgZGlhbG9ndWUgZHUgbmF2aWdhdGV1cgpsb3JzcXUnaWwgZGVtYW5kZXJhIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ciBldCB1biBtb3QgZGUgcGFzc2UuIElsIGVzdCBpbXBvcnRhbnQKZGUgcydhc3N1cmVyIHF1ZSBjZWx1aS1jaSBzb2l0IGRpZmbpcmVudCBkZSBjZXV4IHV0aWxpc+lzIHBhciBsJ2FwcGxpY2F0aW9uLAphdXRyZW1lbnQgbGUgbmF2aWdhdGV1ciB0ZW50ZXJhIGQnZW4gdXRpbGlzZXIgdW4gY2FjaOkgZGVwdWlzIGwnYXBwbGljYXRpb24uCk5vdGVyIHF1ZSBsZXMgZXNwYWNlcyBkYW5zIGxlIG5vbSBkZSAicmVhbG0iIGRvaXZlbnQg6nRyZSBwcm906WfpcyBwYXIgdW4KYmFja3NsYXNoICgnXCcpLgoKTCdvcHRpb24gInN0YXRzIHNjb3BlIDxwcm94eV9pZD4iIGxpbWl0ZSBsYSBwb3J06WUgZHUgcmFwcG9ydCBkJ+l0YXQuIFBhcgpk6WZhdXQsIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHByb3h5IHNvbnQgbGlzdOllcy4gTWFpcyBkYW5zIGNlcnRhaW5lcwpjaXJjb25zdGFuY2VzLCBpbCBzZXJhaXQgcHLpZulyYWJsZSBkZSBuZSBsaXN0ZXIgcXVlIGNlcnRhaW5zIHByb3hpZXMgb3UKc2ltcGxlbWVudCBsZSBwcm94eSBjb3VyYW50LiBDJ2VzdCBjZSBxdWUgZmFpdCBjZXR0ZSBvcHRpb24uIExlIG5vbSBzcOljaWFsICIuIgoodW4gc2ltcGxlIHBvaW50KSBy6WbpcmVuY2UgbGUgcHJveHkgY291cmFudC4gQ2V0dGUgb3B0aW9uIHBldXQg6nRyZSBy6XDpdOllCmF1dGFudCBkZSBmb2lzIHF1ZSBu6WNlc3NhaXJlIHBvdXIgYXV0b3Jpc2VyIGQnYXV0cmVzIHByb3hpZXMsIG3qbWUgcG91ciBkZXMKbm9tcyBy6WbpcmVuY+lzIHBsdXMgbG9pbiBkYW5zIGxhIGNvbmZpZ3VyYXRpb24gb3UgYmllbiBkZXMgbm9tcyBxdWkgbidleGlzdGVudApwYXMgZW5jb3JlLiBMZSBub20gcHLpY2lz6SBlc3QgY2VsdWkgcXVpIGFwcGFyYWl0IGFwcuhzIGxlIG1vdCBjbOkgImxpc3RlbiIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHNpbXBsZSBhcHBsaWNhdGlvbiBlbWJhcnF1YW50IGxhIHBhZ2UgZCfpdGF0IGF1dGhlbnRpZmnpZQogICAgbGlzdGVuIGFwcDEgMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODA4MCBjb29raWUgc3J2MSBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6ODA4MCBjb29raWUgc3J2MiBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIFN0YXRpc3RpY3NcIGZvclwgTXlBcHAxLTIKICAgICAgICBzdGF0cyBhdXRoIGd1ZXN0Omd1ZXN0CiAgICAgICAgc3RhdHMgYXV0aCBhZG1pbjpBZE1pTjEyMwogICAgICAgIHN0YXRzIHNjb3BlIC4KICAgICAgICBzdGF0cyBzY29wZSBhcHAyCgogICAgIyBzaW1wbGUgYXBwbGljYXRpb24gZW1iYXJxdWFudCBsYSBwYWdlIGQn6XRhdCBzYW5zIGF1dGhlbnRpZmljYXRpb24KICAgIGxpc3RlbiBhcHAyIDE5Mi4xNjguMi4xMDA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4xOjgwODAgY29va2llIHNydjEgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4yOjgwODAgY29va2llIHNydjIgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBTdGF0aXN0aWNzXCBmb3JcIE15QXBwMgogICAgICAgIHN0YXRzIHNjb3BlIC4KCiAgICBsaXN0ZW4gYWRtaW5fcGFnZSA6ODA4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBHbG9iYWxcIHN0YXRpc3RpY3MKICAgICAgICBzdGF0cyBhdXRoIGFkbWluOkFkTWlOMTIzCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxlcyBvcHRpb25zICJzdGF0cyIgcGV1dmVudCBhdXNzaSDqdHJlIHNw6WNpZmnpZXMgZGFucyB1bmUgc2VjdGlvbgogICAgImRlZmF1bHRzIiwgYXVxdWVsIGNhcyBsYSBt6m1lIGNvbmZpZ3VyYXRpb24gZXhhY3RlbWVudCBzZXJhIGZvdXJuaWUg4AogICAgdG91dGVzIGxlcyBpbnN0YW5jZXMgc3VpdmFudGVzLCBkJ2/5IGwndXRpbGl06SBkdSBzY29wZSAiLiIuIFRvdXRlZm9pcywgc2kKICAgIHVuZSBpbnN0YW5jZSByZWTpZmluaXQgbidpbXBvcnRlIHF1ZWwgcGFyYW3odHJlICJzdGF0cyIsIGFsb3JzIGxlcyBk6WZhdXRzCiAgICBuZSBsdWkgc2Vyb250IHBhcyBhcHBsaXF16XMuCgogIC0gbCdhdXRoZW50aWZpY2F0aW9uICJCYXNpYyIgZXN0IHRy6HMgc2ltcGxpc3RlIGV0IG5vbiBz6WN1cmlz6WUgY29udHJlIGxhCiAgICBjYXB0dXJlIHLpc2VhdS4gQXVjdW4gbW90IGRlIHBhc3NlIHNlbnNpYmxlIG5lIGRvaXQg6nRyZSB1dGlsaXPpLCBldCBpbAogICAgZXN0IGJvbiBkZSBzYXZvaXIgcXUnaWwgbidleGlzdGUgcGFzIGRlIG1veWVuIGRlIGxlIHN1cHByaW1lciBkdSBuYXZpZ2F0ZXVyCiAgICBhcHLocyB1c2FnZSwgZG9uYyBpbCBzZXJhIGVudm956SB0ZWwgcXVlbCDgIGwnYXBwbGljYXRpb24gYXUgY291cnMgZGVzCiAgICBhY2PocyBzdWNjZXNzaWZzLgoKICAtIElsIGVzdCB0cuhzIGltcG9ydGFudCBkZSBwculjaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIiwgc2lub24gbGUgcHJveHkgbmUKICAgIHNlcmEgcGFzIGVuIG1lc3VyZSBkZSBk6XRlY3RlciBsZXMgVVJJIGRhbnMgbGVzIHNlc3Npb25zIGtlZXAtYWxpdmUKICAgIG1haW50ZW51ZXMgZW50cmUgbGUgbmF2aWdhdGV1ciBldCBsZXMgc2VydmV1cnMsIGRvbmMgbGVzIFVSSSBkZSBzdGF0cwogICAgc2Vyb250IHRyYW5zbWlzZXMgdGVsbGVzIHF1ZWxsZXMgYXV4IHNlcnZldXJzIGNvbW1lIHNpIGwnb3B0aW9uIG4n6XRhaXQKICAgIHBhcyBwculjaXPpZS4KCgo1KSBMaXN0ZXMgZCdhY2Pocwo9PT09PT09PT09PT09PT09PQoKQXZlYyBsYSB2ZXJzaW9uIDEuMy4xMCwgdW4gbm91dmVhdSBjb25jZXB0IGRlIGxpc3RlcyBkJ2FjY+hzIChBQ0wpIGEgdnUgbGUKam91ci4gQ29tbWUgaWwgbifpdGFpdCBwYXMgbuljZXNzYWlyZSBkZSBy6WludmVudGVyIGxhIHJvdWUsIGV0IGR1IGZhaXQgcXVlCnRvdXRlcyBsZXMgculmbGV4aW9ucyBwYXNz6WVzIGFib3V0aXNzYWllbnQg4CBkZXMgcHJvcG9zaXRpb25zIG5vbgpzYXRpc2ZhaXNhbnRlcywgaWwgYSBmaW5hbGVtZW50IOl06SBk6WNpZOkgcXVlIHF1ZWxxdWUgY2hvc2UgZGUgcHJvY2hlIGRlIGNlCnF1ZSBTcXVpZCBvZmZyZSBzZXJhaXQgdW4gYm9uIGNvbXByb21pcyBlbnRyZSB1bmUgcmljaGVzc2UgZm9uY3Rpb25uZWxsZSBldCB1bmUKZmFjaWxpdOkgZCd1dGlsaXNhdGlvbgoKTGUgcHJpbmNpcGUgZXN0IHRy6HMgc2ltcGxlIDogbGVzIEFDTHMgc29udCBk6WNsYXLpZXMgYXZlYyB1biBub20sIHVuIHRlc3QgZXQKdW5lIGxpc3RlIGRlIHZhbGV1cnMgdmFsaWRlcyDgIHRlc3Rlci4gRGVzIGNvbmRpdGlvbnMgc29udCBhcHBsaXF16WVzIHN1cgpkaXZlcnNlcyBhY3Rpb25zLCBldCBjZXMgY29uZGl0aW9ucyBlZmZlY3R1ZW50IHVuIEVUIGxvZ2lxdWUgZW50cmUgbGVzIEFDTHMuIExhCmNvbmRpdGlvbiBuJ2VzdCBkb25jIHZhbGlk6WUgcXVlIHNpIHRvdXRlcyBsZXMgQUNMcyBzb250IHZyYWllcy4KCklsIGVzdCDpZ2FsZW1lbnQgcG9zc2libGUgZCd1dGlsaXNlciBsZSBtb3QgculzZXJ26SAiT1IiIGRhbnMgbGVzIGNvbmRpdGlvbnMsCmV0IGlsIGVzdCBwb3NzaWJsZSBwb3VyIHVuZSBBQ0wgZCfqdHJlIHNw6WNpZmnpZSBwbHVzaWV1cnMgZm9pcywgbeptZSBhdmVjIGRlcwp0ZXN0cyBkaWZm6XJlbnRzLCBhdXF1ZWwgY2FzIGxlIHByZW1pZXIgdGVzdCBy6XVzc2kgdmFsaWRlcmEgbCdBQ0wuCgpBdSBzdGFkZSBkZSBsYSB2ZXJzaW9uIDEuMy4xMiwgc2V1bHMgbGVzIHRlc3RzIHN1aXZhbnRzIG9udCDpdOkgaW1wbOltZW506XMgOgoKICAgTml2ZWF1eCAzLzQgOgogICAgIHNyYyAgICAgICA8aXB2NF9hZGRyZXNzPlsvbWFza10gLi4uIDogbWF0Y2ggSVB2NCBzb3VyY2UgYWRkcmVzcwogICAgIGRzdCAgICAgICA8aXB2NF9hZGRyZXNzPlsvbWFza10gLi4uIDogbWF0Y2ggSVB2NCBkZXN0aW5hdGlvbiBhZGRyZXNzCiAgICAgc3JjX3BvcnQgIDxyYW5nZT4gLi4uICAgICAgICAgICAgICAgOiBtYXRjaCBzb3VyY2UgcG9ydCByYW5nZQogICAgIGRzdF9wb3J0ICA8cmFuZ2U+IC4uLiAgICAgICAgICAgICAgIDogbWF0Y2ggZGVzdGluYXRpb24gcG9ydCByYW5nZQogICAgIGRzdF9jb25uICA8cmFuZ2U+IC4uLiAgICAgICAgICAgICAgIDogbWF0Y2ggI2Nvbm5lY3Rpb25zIG9uIGZyb250ZW5kCgogICBOaXZlYXUgNyA6CiAgICAgbWV0aG9kICAgIDxIVFRQIG1ldGhvZD4gLi4uICA6IG1hdGNoIEhUVFAgbWV0aG9kCiAgICAgcmVxX3ZlciAgIDwxLjB8MS4xPiAuLi4gICAgICA6IG1hdGNoIEhUVFAgcmVxdWVzdCB2ZXJzaW9uCiAgICAgcmVzcF92ZXIgIDwxLjB8MS4xPiAuLi4gICAgICA6IG1hdGNoIEhUVFAgcmVzcG9uc2UgdmVyc2lvbgogICAgIHN0YXR1cyAgICA8cmFuZ2U+IC4uLiAgICAgICAgOiBtYXRjaCBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGluIHJhbmdlCiAgICAgdXJsICAgICAgIDxzdHJpbmc+IC4uLiA6IGV4YWN0IHN0cmluZyBtYXRjaCBvbiBVUkkKICAgICB1cmxfcmVnICAgPHJlZ2V4PiAgLi4uIDogcmVnZXggc3RyaW5nIG1hdGNoIG9uIFVSSQogICAgIHVybF9iZWcgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBiZWdpbnMgd2l0aCA8c3RyaW5nPgogICAgIHVybF9lbmQgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBlbmRzIHdpdGggPHN0cmluZz4KICAgICB1cmxfc3ViICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgY29udGFpbnMgPHN0cmluZz4KICAgICB1cmxfZGlyICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgY29udGFpbnMgPHN0cmluZz4gYmV0d2VlbiBzbGFzaGVzCiAgICAgdXJsX2RvbSAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGNvbnRhaW5zIDxzdHJpbmc+IGJldHdlZW4gc2xhc2hlcyBvciBkb3RzCgpVbmUgcGxhZ2UgKCdyYW5nZScpIGVzdCBjb25zdGl0dellIGQndW4gb3UgZGV1eCBlbnRpZXJzIHF1aSBwZXV2ZW50IOp0cmUKcHLpZml46XMgZCd1biBvcOlyYXRldXIuIExhIHN5bnRheGUgZXN0IDoKCiAgWzxvcD5dIDxtaW4+Wzo8bWF4Pl0KCkF2ZWMgPG9wPiBwb3V2YW50IOp0cmUgOgogICdlcScgOiBsYSB2YWxldXIgZG9pdCDpZ2FsZXIgPG1pbj4gb3Ug6nRyZSBjb21wcmlzZSBlbnRyZSA8bWluPiBldCA8bWF4PgogICdsZScgOiBsYSB2YWxldXIgZG9pdCDqdHJlIGluZulyaWV1cmUgb3Ug6WdhbGUg4CA8bWluPgogICdsdCcgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN0cmljdGVtZW50IGluZulyaWV1cmUg4CA8bWluPgogICdnZScgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN1cOlyaWV1cmUgb3Ug6WdhbGUg4CA8bWluPgogICdndCcgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN0cmljdGVtZW50IHN1cOlyaWV1cmUg4CA8bWluPgoKTG9yc3F1J2F1Y3VuIG9w6XJhdGV1ciBuJ2VzdCBk6WZpbmksICdlcScgZXN0IGVtcGxveekuIE5vdGVyIHF1ZSBsb3JzcXUndW4Kb3DpcmF0ZXVyIGVzdCBzcOljaWZp6SwgaWwgcydhcHBsaXF1ZSDgIHRvdXRlcyBsZXMgcGxhZ2VzIGRlIHZhbGV1cnMgc3VpdmFudGVzCmp1c3F1J+AgbGEgZmluIGRlIGxhIGxpZ25lIG91IGJpZW4ganVzcXUn4CBjZSBxdSd1biBub3V2ZWwgb3DpcmF0ZXVyIHNvaXQKcHLpY2lz6S4gRXhlbXBsZSA6CgogIGFjbCBzdGF0dXNfZXJyb3IgIHN0YXR1cyAgIDQwMDo1OTkKICBhY2wgc2F0dXJhdGVkX2ZydCBkc3RfY29ubiBnZSAxMDAwCiAgYWNsIGludmFsaWRfcG9ydHMgc3JjX3BvcnQgbHQgNTEyIGdlIDY1NTM1CgpEJ2F1dHJlcyB0ZXN0cyBhcnJpdmVudCAoZW506nRlcywgY29va2llcywgaGV1cmUsIGF1dGhlbnRpZmljYXRpb24pLCBjJ2VzdApqdXN0ZSB1bmUgcXVlc3Rpb24gZGUgdGVtcHMuIElsIGVzdCBhdXNzaSBwcul2dSBkZSBwZXJtZXR0cmUgZGUgbGlyZSBsZXMKdmFsZXVycyBkZXB1aXMgdW4gZmljaGllciwgYWluc2kgcXVlIGQnaWdub3JlciBsYSBjYXNzZSBwb3VyIGNlcnRhaW5zIHRlc3RzLgoKTGEgc2V1bGUgY29tbWFuZGUgc3VwcG9ydGFudCBsZXMgY29uZGl0aW9ucyBkJ0FDTCDgIGNlIGpvdXIgZXN0IGxhIG5vdXZlbGxlCmNvbW1hbmRlICJibG9jayIgcXVpIGJsb3F1ZSB1bmUgcmVxdep0ZSBldCByZXRvdXJuZSB1biBzdGF0dXQgNDAzIHNpIHNhCmNvbmRpdGlvbiBlc3QgdmFsaWTpZSAoY2FzIGR1ICJpZiIpIG91IGludmFsaWTpZSAoY2FzIGR1ICJ1bmxlc3MiKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBhY2wgb3B0aW9uc191cmlzICB1cmwgKgogICAgYWNsIG1ldGhfb3B0aW9uICAgbWV0aG9kIE9QVElPTlMKICAgIGFjbCBodHRwXzEuMSAgICAgIHJlcV92ZXIgMS4xCiAgICBhY2wgYWxsb3dlZF9tZXRoICBtZXRob2QgR0VUIEhFQUQgUE9TVCBPUFRJT05TIENPTk5FQ1QKICAgIGFjbCBjb25uZWN0X21ldGggIG1ldGhvZCBDT05ORUNUCiAgICBhY2wgcHJveHlfdXJsICAgICB1cmxfYmVnIGh0dHA6Ly8KCiAgICAjIGJsb2NrIGlmIHJlc2VydmVkIFVSSSAiKiIgdXNlZCB3aXRoIGEgbWV0aG9kIG90aGVyIHRoYW4gIk9QVElPTlMiCiAgICBibG9jayBpZiBvcHRpb25zX3VyaXMgIW1ldGhfb3B0aW9uCgogICAgIyBibG9jayBpZiB0aGUgT1BUSU9OUyBtZXRob2QgaXMgdXNlZCB3aXRoIEhUVFAgMS4wCiAgICBibG9jayBpZiBtZXRoX29wdGlvbiAhaHR0cF8xLjEKCiAgICAjIGFsbG93IG5vbi1wcm94eSB1cmwgd2l0aCBhbnl0aGluZyBidXQgdGhlIENPTk5FQ1QgbWV0aG9kCiAgICBibG9jayBpZiAhY29ubmVjdF9tZXRoICFwcm94eV91cmwKCiAgICAjIGJsb2NrIGFsbCB1bmtub3duIG1ldGhvZHMKICAgIGJsb2NrIHVubGVzcyBhbGxvd2VkX21ldGgKCk5vdGU6IENldHRlIGRvY3VtZW50YXRpb24gZXN0IGVtYnJ5b25uYWlyZSBtYWlzIGRvaXQgcGVybWV0dHJlIGRlIGTpbWFycmVyIGV0CnN1cnRvdXQgZCdhdmFuY2VyIHN1ciBsZSBwcm9qZXQgc2FucyDqdHJlIHRyb3AgcmFsZW50aSBwYXIgbGEgZG9jdW1lbnRhdGlvbi4KCgo9PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6XRyYWdlIHN5c3TobWUgfAo9PT09PT09PT09PT09PT09PT09PT09PQoKU291cyBMaW51eCAyLjQKPT09PT09PT09PT09PT0KCi0tIGN1dCBoZXJlIC0tCiMhL2Jpbi9zaAojIHNldCB0aGlzIHRvIGFib3V0IDI1Ni80TSAoMTYzODQgZm9yIDI1Nk0gbWFjaGluZSkKTUFYRklMRVM9MTYzODQKZWNobyAkTUFYRklMRVMgPiAvcHJvYy9zeXMvZnMvZmlsZS1tYXgKdWxpbWl0IC1uICRNQVhGSUxFUwoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heCBdOyB0aGVuCiAgICAgICAgZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgogICAgICAgICMgMzAgc2Vjb25kcyBmb3IgZmluLCAxNSBmb3IgdGltZSB3YWl0CiAgICAgICAgZWNobyAzMDAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdAogICAgICAgIGVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX2ludmFsaWRfc2NhbGUKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfb3V0X29mX3dpbmRvdwpmaQoKZWNobyAxMDI0IDYwOTk5ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2xvY2FsX3BvcnRfcmFuZ2UKZWNobyAzMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZmluX3RpbWVvdXQKZWNobyA0MDk2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfc3luX2JhY2tsb2cKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF90d19idWNrZXRzCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfb3JwaGFucwplY2hvIDMwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfa2VlcGFsaXZlX3RpbWUKZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90d19yZWN5Y2xlCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdGltZXN0YW1wcwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2VjbgplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3NhY2sKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9kc2FjawoKIyBhdXRvLXR1bmVkIG9uIDIuNAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9tYXgKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fZGVmYXVsdAoKZWNobyAxNjM4NCA2NTUzNiA1MjQyODggPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3JtZW0KZWNobyAxNjM4NCAzNDk1MjAgNjk5MDQwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF93bWVtCgotLSBjdXQgaGVyZSAtLQoKU291cyBGcmVlQlNECj09PT09PT09PT09PQoKVW4gcG9ydCBkZSBIQS1Qcm94eSBzb3VzIEZyZWVCU0QgZXN0IGTpc29ybWFpcyBkaXNwb25pYmxlLCBncuJjZSDgCkNsZW1lbnQgTGFmb3JldCA8c2hlZXBraWxsZXJAY3VsdGRlYWRzaGVlcC5vcmc+LgoKUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zIDoKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvdXJsLmNnaT9wb3J0cy9uZXQvaGFwcm94eS9wa2ctZGVzY3IKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9wb3J0cy9uZXQvaGFwcm94eS8KaHR0cDovL3d3dy5mcmVzaHBvcnRzLm9yZy9uZXQvaGFwcm94eQoKCi0tIGZpbiAtLQo=