ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggQSAtIFAgciBvIHggeQogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51ZWwgZGUgculm6XJlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAxLjIuOQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxseSB0YXJyZWF1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwNi8wMy8wMQoKPT09PT09PT09PT09PT09PQp8IEludHJvZHVjdGlvbiB8Cj09PT09PT09PT09PT09PT0KCkhBLVByb3h5IGVzdCB1biByZWxhaXMgVENQL0hUVFAgb2ZmcmFudCBkZXMgZmFjaWxpdOlzIGQnaW506WdyYXRpb24gZW4KZW52aXJvbm5lbWVudCBoYXV0ZW1lbnQgZGlzcG9uaWJsZS4gRW4gZWZmZXQsIGlsIGVzdCBjYXBhYmxlIGRlIDoKICAtIGVmZmVjdHVlciB1biBhaWd1aWxsYWdlIHN0YXRpcXVlIGTpZmluaSBwYXIgZGVzIGNvb2tpZXMgOwogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgYXZlYyBjculhdGlvbiBkZSBjb29raWVzIHBvdXIgYXNzdXJlcgogICAgbGEgcGVyc2lzdGVuY2UgZGUgc2Vzc2lvbiA7IAogIC0gZm91cm5pciB1bmUgdmlzaWJpbGl06SBleHRlcm5lIGRlIHNvbiDpdGF0IGRlIHNhbnTpIDsKICAtIHMnYXJy6nRlciBlbiBkb3VjZXVyIHNhbnMgcGVydGUgYnJ1dGFsZSBkZSBzZXJ2aWNlIDsKICAtIG1vZGlmaWVyL2Fqb3V0ZXIvc3VwcHJpbWVyIGRlcyBlbi106nRlcyBkYW5zIGxhIHJlcXXqdGUgZXQgbGEgculwb25zZSA7CiAgLSBpbnRlcmRpcmUgZGVzIHJlcXXqdGVzIHF1aSB26XJpZmllbnQgY2VydGFpbmVzIGNvbmRpdGlvbnMgOwogIC0gdXRpbGlzZXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgbG9yc3F1ZSBsZXMgc2VydmV1cnMgcHJpbmNpcGF1eCBzb250IGhvcnMKICAgIGQndXNhZ2UuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAtTiA8bm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHk+CiAgICAtZCBhY3RpdmUgbGUgbW9kZSBkZWJ1ZwogICAgLUQgcGFzc2UgZW4gZGFlbW9uCiAgICAtcSBk6XNhY3RpdmUgbCdhZmZpY2hhZ2UgZGUgbWVzc2FnZXMgc3VyIGxhIHNvcnRpZSBzdGFuZGFyZC4KICAgIC1WIGFmZmljaGUgbGVzIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQsIG3qbWUgc2kgLXEgb3UgJ3F1aWV0JyBzb250CiAgICAgICBzcOljaWZp6XMuCiAgICAtYyB26XJpZmllIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBwdWlzIHF1aXR0ZSBhdmVjIHVuIGNvZGUgZGUgcmV0b3VyIDAKICAgICAgIHNpIGF1Y3VuZSBlcnJldXIgbidhIOl06SB0cm91dullLCBvdSAxIHNpIHVuZSBlcnJldXIgZGUgc3ludGF4ZSBhIOl06QogICAgICAgZOl0ZWN06WUuCiAgICAtcCA8ZmljaGllcj4gaW5kaXF1ZSBhdSBwcm9jZXNzdXMgcOhyZSBxdSdpbCBkb2l0IOljcmlyZSBsZXMgUElEcyBkZSBzZXMKICAgICAgIGZpbHMgZGFucyBjZSBmaWNoaWVyIGVuIG1vZGUgZOltb24uCiAgICAtcyBhZmZpY2hlIGxlcyBzdGF0aXN0aXF1ZXMgKHNpIG9wdGlvbiBjb21waWzpZSkKICAgIC1sIGFqb3V0ZSBkZXMgaW5mb3JtYXRpb25zIGF1eCBzdGF0aXN0aXF1ZXMKICAgIC1kZSBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpCiAgICAtZHAgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgcG9sbCgpCgpMZSBub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb24gc2ltdWx0YW7pZXMgcGFyIHByb3h5IGVzdCBsZSBwYXJhbeh0cmUgcGFyCmTpZmF1dCBwb3VyIGxlcyBwcm94aWVzIHBvdXIgbGVzcXVlbHMgY2UgcGFyYW3odHJlIG4nZXN0IHBhcyBwculjaXPpIGRhbnMgbGUKZmljaGllciBkZSBjb25maWd1cmF0aW9uLiBJbCBzJ2FnaXQgZHUgcGFyYW3odHJlICdtYXhjb25uJyBkYW5zIGxlcyBzZWN0aW9ucwonbGlzdGVuJy4KCkxlIG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbGltaXRlIGxlIG5vbWJyZSBkZQpjb25uZXhpb25zIFRDUCB1dGlsaXNhYmxlcyDgIHVuIGluc3RhbnQgZG9ubukgcGFyIGxlIHByb2Nlc3N1cywgdG91cyBwcm94aWVzCmNvbmZvbmR1cy4gQ2UgcGFyYW3odHJlIHJlbXBsYWNlIGxlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4KCkxlIG1vZGUgZGVidWcgY29ycmVzcG9uZCDgIGwnb3B0aW9uICdkZWJ1ZycgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gRGFucyBjZQptb2RlLCB0b3V0ZXMgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucywgZXQgdG91cyBsZXMg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCnNvbnQgYWZmaWNo6XMuCgpMZXMgc3RhdGlzdGlxdWVzIG5lIHNvbnQgZGlzcG9uaWJsZXMgcXVlIHNpIGxlIHByb2dyYW1tZSBhIOl06SBjb21waWzpIGF2ZWMKbCdvcHRpb24gIlNUQVRUSU1FIi4gSWwgcydhZ2l0IHByaW5jaXBhbGVtZW50IGRlIGRvbm7pZXMgYnJ1dGVzIG4nYXlhbnQKZCd1dGlsaXTpIHF1ZSBsb3JzIGRlIGJlbmNobWFya3MgcGFyIGV4ZW1wbGUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0cnVjdHVyZQo9PT09PT09PT0KCkwnYW5hbHlzZXVyIGR1IGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBpZ25vcmUgZGVzIGxpZ25lcyB2aWRlcywgbGVzIGVzcGFjZXMsCmxlcyB0YWJ1bGF0aW9ucywgZXQgdG91dCBjZSBxdWkgZXN0IGNvbXByaXMgZW50cmUgbGUgc3ltYm9sZSAnIycgKHMnaWwgbidlc3QKcGFzIHBy6WPpZOkgZCd1biAnXCcpLCBldCBsYSBmaW4gZGUgbGEgbGlnbmUsIGNlIHF1aSBjb25zdGl0dWUgdW4gY29tbWVudGFpcmUuCgpMZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGTpY291cOkgZW4gc2VjdGlvbnMgculw6XLpZXMgcGFyIGRlcyBtb3RzIGNs6XMKdGVscyBxdWUgOgoKICAtICdnbG9iYWwnCiAgLSAnbGlzdGVuJwogIC0gJ2RlZmF1bHRzJwoKVG91cyBsZXMgcGFyYW3odHJlcyBmb250IHLpZulyZW5jZSDgIGxhIHNlY3Rpb24gZOlmaW5pZSBwYXIgbGUgZGVybmllciBtb3QgY2zpCnJlY29ubnUuCgoKMSkgUGFyYW3odHJlcyBnbG9iYXV4Cj09PT09PT09PT09PT09PT09PT09PQoKSWwgcydhZ2l0IGRlcyBwYXJhbeh0cmVzIGFnaXNzYW50IHN1ciBsZSBwcm9jZXNzdXMsIG91IGJpZW4gc3VyIGwnZW5zZW1ibGUgZGVzCnByb3hpZXMuIElscyBzb250IHRvdXMgc3DpY2lmaelzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gTGVzIHBhcmFt6HRyZXMKc3VwcG9ydOlzIHNvbnQgOgoKICAtIGxvZyA8YWRyZXNzZT4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCiAgLSBtYXhjb25uIDxub21icmU+CiAgLSB1aWQgPGlkZW50aWZpYW50PgogIC0gZ2lkIDxpZGVudGlmaWFudD4KICAtIGNocm9vdCA8culwZXJ0b2lyZT4KICAtIG5icHJvYyA8bm9tYnJlPgogIC0gZGFlbW9uCiAgLSBkZWJ1ZwogIC0gbm9lcG9sbAogIC0gbm9wb2xsCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KICAtIHVsaW1pdC1uIDxub21icmU+CgoKMS4xKSBKb3VybmFsaXNhdGlvbiBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHBsdXBhcnQgZGVzIOl26W5lbWVudHMgc29udCBqb3VybmFsaXPpcyA6IGTpbWFycmFnZXMsIGFycup0cywgZGlzcGFyaXRpb24gZXQKYXBwYXJpdGlvbiBkZSBzZXJ2ZXVycywgY29ubmV4aW9ucywgZXJyZXVycy4gVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuCnN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXA+IDxjYXTpZ29yaWU+IFtuaXZlYXVfbWF4XQoKTGVzIGNvbm5leGlvbnMgc29udCBlbnZveellcyBlbiBuaXZlYXUgImluZm8iLiBMZXMgZOltYXJyYWdlcyBkZSBzZXJ2aWNlIGV0IGRlCnNlcnZldXJzIHNlcm9udCBlbnZveelzIGVuICJub3RpY2UiLCBsZXMgc2lnbmF1eCBkJ2Fycup0cyBlbiAid2FybmluZyIgZXQgbGVzCmFycup0cyBk6WZpbml0aWZzIGRlIHNlcnZpY2VzIGV0IGRlIHNlcnZldXJzIGVuICJhbGVydCIuIENlY2kgZXN0IHZhbGFibGUgYXVzc2kKYmllbiBwb3VyIGxlcyBwcm94aWVzIHF1ZSBwb3VyIGxlcyBzZXJ2ZXVycyB0ZXN06XMgcGFyIGxlcyBwcm94aWVzLiBMZQpwYXJhbeh0cmUgb3B0aW9ubmVsIDxuaXZlYXVfbWF4PiBk6WZpbml0IGxlIG5pdmVhdSBtYXhpbWFsIGRlIHRyYWNlcyDpbWlzZXMKcGFybWkgbGVzIDggdmFsZXVycyBzdWl2YW50ZXMgIDoKICAgIGVtZXJnLCBhbGVydCwgY3JpdCwgZXJyLCB3YXJuaW5nLCBub3RpY2UsIGluZm8sIGRlYnVnCgpQYXIgY29tcGF0aWJpbGl06SBhdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMTYgZXQgYW506XJpZXVyZXMsIGxhIHZhbGV1ciBwYXIgZOlmYXV0CmVzdCAiZGVidWciIHNpIGwnb3B0aW9uIG4nZXN0IHBhcyBwculjaXPpZS4KCkxlcyBjYXTpZ29yaWVzIHBvc3NpYmxlcyBzb250IDoKICAgIGtlcm4sIHVzZXIsIG1haWwsIGRhZW1vbiwgYXV0aCwgc3lzbG9nLCBscHIsIG5ld3MsCiAgICB1dWNwLCBjcm9uLCBhdXRoMiwgZnRwLCBudHAsIGF1ZGl0LCBhbGVydCwgY3JvbjIsCiAgICBsb2NhbDAsIGxvY2FsMSwgbG9jYWwyLCBsb2NhbDMsIGxvY2FsNCwgbG9jYWw1LCBsb2NhbDYsIGxvY2FsNwoKQ29uZm9ybeltZW50IOAgbGEgUkZDMzE2NCwgbGVzIG1lc3NhZ2VzIOltaXMgc29udCBsaW1pdOlzIOAgMTAyNCBjYXJhY3TocmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCiAgICAgICAgbG9nIDEyNy4wLjAuMSAgICAgbG9jYWw0IG5vdGljZQoKMS4yKSBsaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZXQgY29uc2VpbGzpIGRlIGxpbWl0ZXIgbGUgbm9tYnJlIGdsb2JhbCBkZSBjb25uZXhpb25zIHBhcgpwcm9jZXNzdXMg4CBsJ2FpZGUgZHUgbW90IGNs6SBnbG9iYWwgJ21heGNvbm4nLiBMZXMgY29ubmV4aW9ucyBzb250IGNvbXByaXNlcwphdSBzZW5zICdhY2NlcHRhdGlvbiBkZSBjb25uZXhpb24nLCBkb25jIGlsIGZhdXQgcydhdHRlbmRyZSBlbiBy6GdsZSBn6W7pcmFsIOAKYXZvaXIgdW4gcGV1IHBsdXMgZHUgZG91YmxlIGRlIHNlc3Npb25zIFRDUCBxdWUgbGUgbWF4aW11bSBkZSBjb25uZXhpb25zIGZpeOkuCkMnZXN0IGltcG9ydGFudCBwb3VyIGZpeGVyIGxlIHBhcmFt6HRyZSAndWxpbWl0IC1uJyBhdmFudCBkZSBsYW5jZXIgbGUgcHJveHkuClBvdXIgY29tcHRhYmlsaXNlciBsZSBub21icmUgZGUgc29ja2V0cyBu6WNlc3NhaXJlcywgaWwgZmF1dCBwcmVuZHJlIGVuIGNvbXB0ZQpjZXMgcGFyYW3odHJlcyA6CgogIC0gMSBzb2NrZXQgcGFyIGNvbm5leGlvbiBlbnRyYW50ZQogIC0gMSBzb2NrZXQgcGFyIGNvbm5leGlvbiBzb3J0YW50ZQogIC0gMSBzb2NrZXQgcGFyIGNvdXBsZSBhZHJlc3NlL3BvcnQgZCfpY291dGUgcGFyIHByb3h5CiAgLSAxIHNvY2tldCBwb3VyIGNoYXF1ZSBzZXJ2ZXVyIGVuIGNvdXJzIGRlIGhlYWx0aC1jaGVjawogIC0gMSBzb2NrZXQgcG91ciBsZXMgbG9ncyAodG91cyBzZXJ2ZXVycyBjb25mb25kdXMpCgpEYW5zIGxlIGNhcyBv+SBjaGFxdWUgcHJveHkgbifpY291dGUgcXVlIHN1ciB1biBjb3VwbGUgYWRyZXNzZS9wb3J0LApwb3NpdGlvbm5lciBsYSBsaW1pdGUgZHUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyAodWxpbWl0IC1uKSDgIAooMiAqIG1heGNvbm4gKyBuYnByb3h5ICsgbmJzZXJ2ZXVycyArIDEpLiBBIHBhcnRpciBkZXMgdmVyc2lvbnMgMS4xLjMyLzEuMi42LAppbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIGNldHRlIGxpbWl0ZSBkYW5zIGxhIGNvbmZpZ3VyYXRpb24g4CBsJ2FpZGUgZHUKbW90LWNs6SBnbG9iYWwgJ3VsaW1pdC1uJywg4CBjb25kaXRpb24gYmllbiBlbnRlbmR1IHF1ZSBsZSBwcm94eSBhaXQg6XTpCmTpbWFycukgc291cyBsZSBjb21wdGUgcm9vdCAob3UgYXZlYyBkZXMgZHJvaXRzIHN1ZmZpc2FudHMgcG91ciDpbGV2ZXIgbGUKbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycykuIENldHRlIHNvbHV0aW9uIG1ldCB1biB0ZXJtZSBhdSBwcm9ibOhtZQpy6WN1cnJlbnQgZCdpbmNlcnRpdHVkZSBkZSBsJ2Fk6XF1YXRpb24gZW50cmUgbGVzIGxpbWl0ZXMgc3lzdOhtZXMgbG9ycyBkZSBsYQpkZXJuaehyZSByZWxhbmNlIGR1IHByb3hlc3N1cyBldCBsZXMgbGltaXRlcyBlbiBub21icmUgZGUgY29ubmV4aW9ucy4gTm90ZXIgcXVlCmNldHRlIGxpbWl0ZSBzJ2FwcGxpcXVlIHBhciBwcm9jZXNzdXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBtYXhjb25uIDMyMDAwCiAgICAgICAgdWxpbWl0LW4gNjU1MzYKCgoxLjMpIERpbWludXRpb24gZGVzIHByaXZpbOhnZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkFmaW4gZGUgculkdWlyZSBsZXMgcmlzcXVlcyBkJ2F0dGFxdWVzIGRhbnMgbGUgY2FzIG/5IHVuZSBmYWlsbGUgbm9uIGlkZW50aWZp6WUKc2VyYWl0IGV4cGxvaXTpZSwgaWwgZXN0IHBvc3NpYmxlIGRlIGRpbWludWVyIGxlcyBwcml2aWzoZ2VzIGR1IHByb2Nlc3N1cywgZXQKZGUgbCdpc29sZXIgZGFucyB1biBy6XBlcnRvaXJlIHNhbnMgcmlzcXVlLgoKRGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLCBsZSBwYXJhbeh0cmUgJ3VpZCcgcGVybWV0IGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgZCd1dGlsaXNhdGV1ci4gTGEgdmFsZXVyIDAsIGNvcnJlc3BvbmRhbnQgbm9ybWFsZW1lbnQgYXUgc3VwZXItCnV0aWxpc2F0ZXVyLCBwb3Nz6GRlIGljaSB1bmUgc2lnbmlmaWNhdGlvbiBwYXJ0aWN1bGnocmUgY2FyIGVsbGUgaW5kaXF1ZSBxdWUKbCdvbiBuZSBzb3VoYWl0ZSBwYXMgY2hhbmdlciBjZXQgaWRlbnRpZmlhbnQgZXQgY29uc2VydmVyIGxhIHZhbGV1ciBjb3VyYW50ZS4KQydlc3QgbGEgdmFsZXVyIHBhciBk6WZhdXQuIERlIGxhIG3qbWUgbWFuaehyZSwgbGUgcGFyYW3odHJlICdnaWQnIGNvcnJlc3BvbmQg4Ap1biBpZGVudGlmaWFudCBkZSBncm91cGUsIGV0IHV0aWxpc2UgcGFyIGTpZmF1dCBsYSB2YWxldXIgMCBwb3VyIG5lIHJpZW4KY2hhbmdlci4gSWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgZOljb25zZWlsbOkgZCd1dGlsaXNlciBkZXMgY29tcHRlcyBn6W7pcmlxdWVzCnRlbHMgcXVlICdub2JvZHknIGNhciBjZXR0ZSBwcmF0aXF1ZSByZXZpZW50IOAgdXRpbGlzZXIgJ3Jvb3QnIHNpIGQnYXV0cmVzCnByb2Nlc3N1cyB1dGlsaXNlbnQgbGVzIG3qbWVzIGlkZW50aWZpYW50cy4KCkxlIHBhcmFt6HRyZSAnY2hyb290JyBhdXRvcmlzZSDgIGNoYW5nZXIgbGEgcmFjaW5lIGR1IHByb2Nlc3N1cyB1bmUgZm9pcyBsZQpwcm9ncmFtbWUgbGFuY+ksIGRlIHNvcnRlIHF1ZSBuaSBsZSBwcm9jZXNzdXMsIG5pIGwndW4gZGUgc2VzIGRlc2NlbmRhbnRzIG5lCnB1aXNzZW50IHJlbW9udGVyIGRlIG5vdXZlYXUg4CBsYSByYWNpbmUuIENlIHR5cGUgZGUgY2xvaXNvbm5lbWVudCAoY2hyb290KSBlc3QKZ+lu6XJhbGVtZW50IGNvbnRvdXJuYWJsZSBzdXIgY2VydGFpbnMgT1MgKExpbnV4LCBTb2xhcmlzKSBwb3VyIHBldSBxdWUKbCdhdHRhcXVhbnQgcG9zc+hkZSBkZXMgZHJvaXRzICdyb290JyBldCBzb2l0IGVuIG1lc3VyZSBkJ3V0aWxpc2VyIG91IGRlIGNy6WVyCnVuIHLpcGVydG9pcmUuIEF1c3NpLCBpbCBlc3QgaW1wb3J0YW50IGQndXRpbGlzZXIgdW4gculwZXJ0b2lyZSBzcOljaWZpcXVlIGF1CnNlcnZpY2UgcG91ciBjZXQgdXNhZ2UsIGV0IGRlIG5lIHBhcyBtdXR1YWxpc2VyIHVuIG3qbWUgculwZXJ0b2lyZSBwb3VyCnBsdXNpZXVycyBzZXJ2aWNlcyBkZSBuYXR1cmUgZGlmZulyZW50ZS4gUG91ciByZW5kcmUgbCdpc29sZW1lbnQgcGx1cyByb2J1c3RlLAppbCBlc3QgY29uc2VpbGzpIGQndXRpbGlzZXIgdW4gculwZXJ0b2lyZSB2aWRlLCBzYW5zIGF1Y3VuIGRyb2l0LCBldCBkZSBjaGFuZ2VyCmwndWlkIGR1IHByb2Nlc3N1cyBkZSBzb3J0ZSBxdSdpbCBuZSBwdWlzc2UgcmllbiBmYWlyZSBkYW5zIGxlZGl0IHLpcGVydG9pcmUuCgpSZW1hcnF1ZSBpbXBvcnRhbnRlIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGUgY2FzIG/5IHVuZSB0ZWxsZSBmYWlsbGUgc2VyYWl0IG1pc2UgZW4g6XZpZGVuY2UsIGlsIGVzdCBmb3J0IHByb2JhYmxlCnF1ZSBsZXMgcHJlbWnocmVzIHRlbnRhdGl2ZXMgZGUgc29uIGV4cGxvaXRhdGlvbiBwcm92b3F1ZW50IHVuIGFycup0IGR1CnByb2dyYW1tZSwg4CBjYXVzZSBkJ3VuIHNpZ25hbCBkZSB0eXBlICdTZWdtZW50YXRpb24gRmF1bHQnLCAnQnVzIEVycm9yJyBvdQplbmNvcmUgJ0lsbGVnYWwgSW5zdHJ1Y3Rpb24nLiBN6m1lIHMnaWwgZXN0IHZyYWkgcXVlIGZhaXJlIHRvdXJuZXIgbGUgc2VydmV1cgplbiBlbnZpcm9ubmVtZW50IGxpbWl06SBy6WR1aXQgbGVzIHJpc3F1ZXMgZCdpbnRydXNpb24sIGlsIGVzdCBwYXJmb2lzIGJpZW4KdXRpbGUgZGFucyBjZXMgY2lyY29uc3RhbmNlcyBkZSBjb25uYe50cmUgbGVzIGNvbmRpdGlvbnMgZCdhcHBhcml0aW9uIGR1CnByb2Js6G1lLCB2aWEgbCdvYnRlbnRpb24gZCd1biBmaWNoaWVyICdjb3JlJy4gTGEgcGx1cGFydCBkZXMgc3lzdOhtZXMsIHBvdXIKZGVzIHJhaXNvbnMgZGUgc+ljdXJpdOksIGTpc2FjdGl2ZW50IGxhIGfpbulyYXRpb24gZHUgZmljaGllciAnY29yZScgYXBy6HMgdW4KY2hhbmdlbWVudCBkJ2lkZW50aWZpYW50IHBvdXIgbGUgcHJvY2Vzc3VzLiBJbCBmYXVkcmEgZG9uYyBzb2l0IGxhbmNlciBsZQpwcm9jZXNzdXMg4CBwYXJ0aXIgZCd1biBjb21wdGUgdXRpbGlzYXRldXIgYXV4IGRyb2l0cyBy6WR1aXRzIChtYWlzIG5lIHBvdXZhbnQKcGFzIGVmZmVjdHVlciBsZSBjaHJvb3QpLCBvdSBiaWVuIGxlIGZhaXJlIGVuIHJvb3Qgc2FucyBy6WR1Y3Rpb24gZGVzIGRyb2l0cwoodWlkIDApLiBEYW5zIGNlIGNhcywgbGUgZmljaGllciBzZSB0cm91dmVyYSBzb2l0IGRhbnMgbGUgculwZXJ0b2lyZSBkZQpsYW5jZW1lbnQsIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIHNw6WNpZmnpIGFwcuhzIGwnb3B0aW9uICdjaHJvb3QnLiBOZSBwYXMKb3VibGllciBsYSBjb21tYW5kZSBzdWl2YW50ZSBwb3VyIGF1dG9yaXNlciBsYSBn6W7pcmF0aW9uIGR1IGZpY2hpZXIgYXZhbnQgZGUKbGFuY2VyIGxlIHByb2dyYW1tZSA6CgojIHVsaW1pdCAtYyB1bmxpbWl0ZWQKCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKMS40KSBNb2RlcyBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHBsdXNpZXVycyBtb2RlcyA6CiAgLSBhdmFudC0gLyBhcnJp6HJlLXBsYW4KICAtIHNpbGVuY2lldXggLyBub3JtYWwgLyBkZWJ1ZwoKTGUgbW9kZSBwYXIgZOlmYXV0IGVzdCBub3JtYWwsIGF2YW50LXBsYW4sIGMnZXN0IOAgZGlyZSBxdWUgbGUgcHJvZ3JhbW1lIG5lCnJlbmQgcGFzIGxhIG1haW4gdW5lIGZvaXMgbGFuY+kuIElsIG5lIGZhdXQgc3VydG91dCBwYXMgbGUgbGFuY2VyIGNvbW1lIGNlY2kKZGFucyB1biBzY3JpcHQgZGUgZOltYXJyYWdlIGR1IHN5c3TobWUsIHNpbm9uIGxlIHN5c3TobWUgbmUgZmluaXJhaXQgcGFzIHNvbgppbml0aWFsaXNhdGlvbi4gSWwgZmF1dCBsZSBtZXR0cmUgZW4gYXJyaehyZS1wbGFuLCBkZSBzb3J0ZSBxdSdpbCByZW5kZSBsYSBtYWluCmF1IHByb2Nlc3N1cyBhcHBlbGFudC4gQydlc3QgY2UgcXVlIGZhaXQgbCdvcHRpb24gJ2RhZW1vbicgZGUgbGEgc2VjdGlvbgonZ2xvYmFsJywgZXQgcXVpIGVzdCBsJ+lxdWl2YWxlbnQgZHUgcGFyYW3odHJlICctRCcgZGUgbGEgbGlnbmUgZGUgY29tbWFuZGUuCgpQYXIgYWlsbGV1cnMsIGNlcnRhaW5zIG1lc3NhZ2VzIGQnYWxlcnRlIHNvbnQgdG91am91cnMgZW52b3npcyBzdXIgbGEgc29ydGllCnN0YW5kYXJkLCBt6m1lIGVuIG1vZGUgJ2RhZW1vbicuIFBvdXIgbmUgcGx1cyBsZXMgdm9pciBhaWxsZXVycyBxdWUgZGFucyBsZXMKbG9ncywgaWwgc3VmZml0IGRlIHBhc3NlciBlbiBtb2RlIHNpbGVuY2lldXggcGFyIGwnYWpvdXQgZGUgbCdvcHRpb24gJ3F1aWV0Jy4KQ2V0dGUgb3B0aW9uIG4nYSBwYXMgZCfpcXVpdmFsZW50IGVuIGxpZ25lIGRlIGNvbW1hbmRlLgoKRW5maW4sIGxlIG1vZGUgJ2RlYnVnJyBwZXJtZXQgZGUgZGlhZ25vc3RpcXVlciBsZXMgb3JpZ2luZXMgZGUgY2VydGFpbnMKcHJvYmzobWVzIGVuIGFmZmljaGFudCBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zIGV0IOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUAplbnRyZSBsZXMgY2xpZW50cyBldCBsZXMgc2VydmV1cnMuIENlIG1vZGUgZXN0IGluY29tcGF0aWJsZSBhdmVjIGxlcyBvcHRpb25zCidkYWVtb24nIGV0ICdxdWlldCcgcG91ciBkZXMgcmFpc29ucyBkZSBib24gc2Vucy4KCjEuNSkgQWNjcm9pc3NlbWVudCBkZSBsYSBjYXBhY2l06SBkZSB0cmFpdGVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1ciBkZXMgbWFjaGluZXMgbXVsdGktcHJvY2Vzc2V1cnMsIGlsIHBldXQgc2VtYmxlciBn4mNo6SBkZSBuJ3V0aWxpc2VyIHF1J3VuCnByb2Nlc3NldXIgcG91ciBlZmZlY3R1ZXIgbGVzIHTiY2hlcyBkZSByZWxheWFnZSwgbeptZSBzaSBsZXMgY2hhcmdlcwpu6WNlc3NhaXJlcyDgIHNhdHVyZXIgdW4gcHJvY2Vzc2V1ciBhY3R1ZWwgc29udCBiaWVuIGF1LWRlbOAgZGVzIG9yZHJlcyBkZQpncmFuZGV1ciBjb3VyYW1tZW50IHJlbmNvbnRy6XMuIENlcGVuZGFudCwgcG91ciBkZXMgYmVzb2lucyBwYXJ0aWN1bGllcnMsIGxlCnByb2dyYW1tZSBzYWl0IGTpbWFycmVyIHBsdXNpZXVycyBwcm9jZXNzdXMgc2UgculwYXJ0aXNzYW50IGxhIGNoYXJnZSBkZQp0cmF2YWlsLiBDZSBub21icmUgZGUgcHJvY2Vzc3VzIGVzdCBzcOljaWZp6SBwYXIgbGUgcGFyYW3odHJlICduYnByb2MnIGRlIGxhCnNlY3Rpb24gJ2dsb2JhbCcuIFNhIHZhbGV1ciBwYXIgZOlmYXV0IGVzdCBuYXR1cmVsbGVtZW50IDEuIENlY2kgbmUgZm9uY3Rpb25uZQpxdSdlbiBtb2RlICdkYWVtb24nLiBVbiB1c2FnZSBk6WrgIHJlbmNvbnRy6SBwb3VyIGNlIHBhcmFt6HRyZSBmdXQgZGUgZOlwYXNzZXIKbGEgbGltaXRlIGRlIG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgYWxsb3XpZSBwYXIgcHJvY2Vzc3VzIHNvdXMKU29sYXJpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAgICAgICAgMgoKMS42KSBTaW1wbGlmaWNhdGlvbiBkZSBsYSBnZXN0aW9uIGRlcyBwcm9jZXNzdXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSGFwcm94eSBzdXBwb3J0ZSBkb3LpbmF2YW50IGxhIG5vdGlvbiBkZSBmaWNoaWVycyBkZSBwaWQgKC0+IHBpZGZpbGVzKS4gU2kgbGUKcGFyYW3odHJlICctcCcgZGUgbGlnbmUgZGUgY29tbWFuZGUsIG91IGwnb3B0aW9uIGdsb2JhbGUgJ3BpZGZpbGUnIHNvbnQgc3VpdmlzCmQndW4gbm9tIGRlIGZpY2hpZXIsIGFsb3JzIGNlIGZpY2hpZXIgc2VyYSBzdXBwcmlt6SBwdWlzIHJlY3Lp6SBldCBjb250aWVuZHJhCmxlIG51belybyBkZSBQSUQgZGVzIHByb2Nlc3N1cyBmaWxzLCDgIHJhaXNvbiBkJ3VuIHBhciBsaWduZSAodmFsYWJsZQp1bmlxdWVtZW50IGVuIG1vZGUgZOltb24pLiBDZSBmaWNoaWVyIG4nZXN0IFBBUyByZWxhdGlmIGF1IGNsb2lzb25uZW1lbnQgY2hyb290CmFmaW4gZGUgcmVzdGVyIGNvbXBhdGlibGUgYXZlYyB1biBy6XBlcnRvaXJlIHByb3TpZ+kgZW4gbGVjdHVyZSBzZXVsZS4gSWwKYXBwYXJ0aWVuZHJhIOAgbCd1dGlsaXNhdGV1ciBheWFudCBsYW5j6SBsZSBwcm9jZXNzdXMsIGV0IGRpc3Bvc2VyYSBkZXMgZHJvaXRzCjA2NDQuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgMgogICAgICAgIHBpZGZpbGUgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZAoKICAgICMgcG91ciBzdG9wcGVyIHNldWxlbWVudCBjZXMgcHJvY2Vzc3VzIHBhcm1pIGQnYXV0cmVzIDoKICAgICMga2lsbCAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKCjEuNykgTeljYW5pc21lcyBkZSB0cmFpdGVtZW50cyBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuNSwgaGFwcm94eSBzdXBwb3J0ZSBsZXMgbeljYW5pc21lcyBwb2xsKCkgZXQKZXBvbGwoKS4gU3VyIGxlcyBzeXN0ZW1zIG/5IHNlbGVjdCgpIGVzdCBsaW1pdOkgcGFyIEZEX1NFVFNJWkUgKGNvbW1lIFNvbGFyaXMpLApwb2xsKCkgcGV1dCDqdHJlIHVuZSBhbHRlcm5hdGl2ZSBpbnTpcmVzc2FudGUuIERlcyB0ZXN0cyBkZSBwZXJmb3JtYW5jZQptb250cmVudCBxdWUgbGVzIHBlcmZvcm1hbmNlcyBkZSBwb2xsKCkgbmUgZOljcm9pc3NlbnQgcGFzIGF1c3NpIHZpdGUgcXVlIGxlCm5vbWJyZSBkZSBzb2NrZXRzIGF1Z21lbnRlLCBjZSBxdWkgZW4gZmFpdCB1bmUgc29sdXRpb24gc/tyZSBwb3VyIGxlcyBmb3J0ZXMKY2hhcmdlcy4gQ2VsYSBkaXQsIFNvYWxyaXMgdXRpbGlzZSBk6WrgIHBvbGwoKSBwb3VyIOltdWxlciBzZWxlY3QoKSwgZG9uYyB0YW50CnF1ZSBsZSBub21icmUgZGUgc29ja2V0cyBuZSBk6XBhc3NlIHBhcyBGRF9TRVRTSVpFLCBwb2xsKCkgbmUgZGV2cmFpdCBwYXMKYXBwb3J0ZXIgZGUgcGVyZm9ybWFuY2VzIHN1cHBs6W1lbnRhaXJlcy4gU3VyIGxlcyBzeXN06G1lcyDgIGJhc2UgTGludXgKaW5jbHVhbnQgbGUgcGF0Y2ggZXBvbGwoKSAob3UgdG91cyBsZXMgTGludXggMi42KSwgaGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKQpxdWkgZXN0IGV4dHLobWVtZW50IHJhcGlkZSBpbmTpcGVuZGFtbWVudCBkdSBub21icmUgZGUgc29ja2V0cy4gTGVzIHRlc3RzIHN1cgpoYXByb3h5IG9udCBtb250cukgdW5lIHBlcmZvcm1hbmNlIGNvbnN0YW50ZSBkZSAxIOAgNDAwMDAgc2Vzc2lvbnMgc2ltdWx0YW7pZXMuCgpIYXByb3h5IHV0aWxpc2VyYSBlcG9sbCgpIGxvcnNxdSdpbCBlc3QgZGlzcG9uaWJsZSwgZXQgc2UgcmVwbGllcmEgc3VyIHBvbGwoKSwKcHVpcyBlbiBkZXJuaWVyIGxpZXUgc3VyIHNlbGVjdCgpLiBDZXBlbmRhbnQsIHNpIHBvdXIgdW5lIHJhaXNvbiBxdWVsY29ucXVlIGlsCnMnYXbpcmFpdCBu6WNlc3NhaXJlIGRlIGTpc2FjdGl2ZXIgZXBvbGwoKSBvdSBwb2xsKCkgKHAuZXg6IOAgY2F1c2UgZCd1biBidWcgb3UKanVzdGUgcG91ciBjb21wYXJlciBsZXMgcGVyZm9ybWFuY2VzKSwgZGV1eCBub3V2ZWxsZXMgb3B0aW9ucyBnbG9iYWxlcyBvbnQg6XTpCmFqb3V06WVzIGRhbnMgY2UgYnV0IDogJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgIyB1dGlsaXNlciBzZXVsZW1lbnQgc2VsZWN0KCkKICAgICAgICBub2Vwb2xsCiAgICAgICAgbm9wb2xsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KRGFucyBsZSBidXQgZCdhc3N1cmVyIHVuZSBwb3J0YWJpbGl06SBtYXhpbWFsZSBkZXMgY29uZmlndXJhdGlvbnMsIGNlcyBvcHRpb25zCnNvbnQgYWNjZXB06WVzIGV0IGlnbm9y6WVzIHNpIGxlcyBt6WNhbmlzbWVzIHBvbGwoKSBvdSBlcG9sbCgpIG4nb250IHBhcyDpdOkKYWN0aXbpcyBsb3JzIGRlIGxhIGNvbXBpbGF0aW9uLgoKQWZpbiBkZSBzaW1wbGlmaWVyIGxhIHLpc29sdXRpb24gZGUgcHJvYmzobWVzLCBsZSBwYXJhbeh0cmUgJy1kZScgZW4gbGlnbmUgZGUKY29tbWFuZGUgZOlzYWN0aXZlIGVwb2xsKCkgZXQgbGUgcGFyYW3odHJlICctZHAnIGTpc2FjdGl2ZSBwb2xsKCkuIElscyBzb250CnJlc3BlY3RpdmVtZW50IOlxdWl2YWxlbnRzIOAgJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKCjIpIETpZmluaXRpb24gZCd1biBzZXJ2aWNlIGVuIOljb3V0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBzZWN0aW9ucyBkZSBzZXJ2aWNlIGTpYnV0ZW50IHBhciBsZSBtb3QgY2zpICJsaXN0ZW4iIDoKCiAgICBsaXN0ZW4gPG5vbV9pbnN0YW5jZT4gWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgotIDxub21faW5zdGFuY2U+IGVzdCBsZSBub20gZGUgbCdpbnN0YW5jZSBk6WNyaXRlLiBDZSBub20gc2VyYSBlbnZveekgZGFucyBsZXMKICBsb2dzLCBkb25jIGlsIGVzdCBzb3VoYWl0YWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSByZWxhdGlmIGF1IHNlcnZpY2UgcmVsYXnpLgogIEF1Y3VuIHRlc3Qgbidlc3QgZWZmZWN0dekgY29uY2VybmFudCBsJ3VuaWNpdOkgZGUgY2Ugbm9tLCBxdWkgbidlc3QgcGFzCiAgb2JsaWdhdG9pcmUsIG1haXMgZm9ydGVtZW50IHJlY29tbWFuZOllLgoKLSA8YWRyZXNzZV9JUD4gZXN0IGwnYWRyZXNzZSBJUCBzdXIgbGFxdWVsbGUgbGUgcmVsYWlzIGF0dGVuZCBzZXMgY29ubmV4aW9ucy4KICBMJ2Fic2VuY2UgZCdhZHJlc3NlIGFpbnNpIHF1ZSBsJ2FkcmVzc2UgMC4wLjAuMCBzaWduaWZpZW50IHF1ZSBsZXMgY29ubmV4aW9ucwogIHBvdXJyb250IHMnZWZmZWN0dWVyIHN1ciB0b3V0ZXMgbGVzIGFkcmVzc2VzIGRlIGxhIG1hY2hpbmUuCgotIDxwbGFnZV9wb3J0cz4gY29ycmVzcG9uZCBzb2l0IOAgdW4gcG9ydCwgc29pdCDgIHVuZSBwbGFnZSBkZSBwb3J0cyBzdXIKICBsZXNxdWVscyBsZSByZWxhaXMgYWNjZXB0ZXJhIGRlcyBjb25uZXhpb25zIHBvdXIgbCdhZHJlc3NlIElQIHNw6WNpZmnpZS4KICBDZXR0ZSBwbGFnZSBwZXV0IOp0cmUgOgogICAgLSBzb2l0IHVuIHBvcnQgbnVt6XJpcXVlIChleDogJzgwJykKICAgIC0gc29pdCB1bmUgcGxhZ2UgY29uc3RpdHXpZSBkZSBkZXV4IHZhbGV1cnMgc+lwYXLpZXMgcGFyIHVuIHRpcmV0CiAgICAgIChleDogJzIwMDAtMjEwMCcpIHJlcHLpc2VudGFudCBsZXMgZXh0cultaXTpcyBpbmNsdXNlcyBkYW5zIGxhCiAgICAgIHBsYWdlLgogIElsIGZhdXQgZmFpcmUgYXR0ZW50aW9uIOAgbCd1c2FnZSBkZXMgcGxhZ2VzLCBjYXIgY2hhcXVlIGNvbWJpbmFpc29uCiAgPGFkcmVzc2VfSVA+Ojxwb3J0PiBjb25zb21tZSB1bmUgc29ja2V0LCBkb25jIHVuIGRlc2NyaXB0ZXVyIGRlIGZpY2hpZXIuCiAgTGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cG9ydD4gZG9pdCDqdHJlIHVuaXF1ZSBwb3VyIHRvdXRlcyBsZXMgIGluc3RhbmNlcwogIGQndW5lIG3qbWUgbWFjaGluZS4gTCdhdHRhY2hlbWVudCDgIHVuIHBvcnQgaW5m6XJpZXVyIOAgMTAyNCBu6WNlc3NpdGUgdW4KICBuaXZlYXUgZGUgcHJpdmls6GdlIHBhcnRpY3VsaWVyIGxvcnMgZHUgbGFuY2VtZW50IGR1IHByb2dyYW1tZQogIChpbmTpcGVuZGFtbWVudCBkdSBwYXJhbeh0cmUgJ3VpZCcgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJykuCgotIGxlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPiBwZXV0IOp0cmUgculw6XTpIGluZOlmaW5pbWVudCBwb3VyCiAgZGVtYW5kZXIgYXUgcmVsYWlzIGQn6WNvdXRlciDpZ2FsZW1lbnQgc3VyIGQnYXV0cmVzIGFkcmVzc2VzIGV0L291IGQnYXV0cmVzCiAgcGxhZ2VzIGRlIHBvcnRzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkZSBz6XBhcmVyIGxlcyBjb3VwbGVzIHBhciB1bmUgdmlyZ3VsZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgIGxpc3RlbiB4MTFfcHJveHkgMTI3LjAuMC4xOjYwMDAtNjAwOQogICAgbGlzdGVuIHNtdHBfcHJveHkgMTI3LjAuMC4xOjI1LDEyNy4wLjAuMTo1ODcKICAgIGxpc3RlbiBsZGFwX3Byb3h5IDozODksOjY2MwoKU2kgdG91dGVzIGxlcyBhZHJlc3NlcyBuZSB0aWVubmVudCBwYXMgc3VyIHVuZSBsaWduZSwgaWwgZXN0IHBvc3NpYmxlIGQnZW4KcmFqb3V0ZXIg4CBsJ2FpZGUgZHUgbW90IGNs6SAnYmluZCcuIERhbnMgY2UgY2FzLCBpbCBuJ2VzdCBt6m1lIHBhcyBu6WNlc3NhaXJlCmRlIHNw6WNpZmllciBsYSBwcmVtaehyZSBhZHJlc3NlIHN1ciBsYSBsaWduZSBsaXN0ZW4sIGNlIHF1aSBmYWNpbGl0ZSBwYXJmb2lzCmwn6WNyaXR1cmUgZGUgY29uZmlndXJhdGlvbnMgOgoKICAgIGJpbmQgWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIGJpbmQgMTAuMC4wLjE6MTAwODAsMTAuMC4wLjE6MTA0NDMKCjIuMSkgSW5oaWJpdGlvbiBkJ3VuIHNlcnZpY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQg6nRyZSBk6XNhY3RpdukgcG91ciBkZXMgYmVzb2lucyBkZSBtYWludGVuYW5jZSwgc2FucyBhdm9pciDgCmNvbW1lbnRlciB0b3V0ZSB1bmUgcGFydGllIGR1IGZpY2hpZXIuIElsIHN1ZmZpdCBkZSBwb3NpdGlvbm5lciBsZSBtb3QgY2zpCiJkaXNhYmxlZCIgZGFucyBzYSBzZWN0aW9uIDoKCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgZGlzYWJsZWQKClJlbWFycXVlOiBsZSBtb3QgY2zpICdlbmFibGVkJyBwZXJtZXQgZGUgculhY3RpdmVyIHVuIHNlcnZpY2UgcHLpYWxhYmxlbWVudAogICAgICAgICAgZOlzYWN0aXbpIHBhciBsZSBtb3QgY2zpICdkaXNhYmxlZCcsIHBhciBleGVtcGxlIOAgY2F1c2UgZCd1bmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dC4KCjIuMikgTW9kZSBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgdHJvaXMgbW9kZXMgZGlmZulyZW50cyA6CiAgLSBUQ1AKICAtIEhUVFAKICAtIHN1cGVydmlzaW9uCgpNb2RlIFRDUAotLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllLCBk6HMgbGV1ciDpdGFibGlzc2VtZW50LCBsZXMgY29ubmV4aW9ucyBUQ1AKdmVycyB1biBvdSBwbHVzaWV1cnMgc2VydmV1cnMuIEF1Y3VuIHRyYWl0ZW1lbnQgbidlc3QgZWZmZWN0dekgc3VyIGxlIGZsdXguIElsCnMnYWdpdCBzaW1wbGVtZW50IGQndW5lIGFzc29jaWF0aW9uCiAgICAgc291cmNlPGFkcmVzc2U6cG9ydD4gLT4gZGVzdGluYXRpb248YWRyZXNzZTpwb3J0Pi4KUG91ciBsJ3V0aWxpc2VyLCBwculjaXNlciBsZSBtb2RlIFRDUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBtb2RlIHRjcAoKTW9kZSBIVFRQCi0tLS0tLS0tLQpEYW5zIGNlIG1vZGUsIGxlIHNlcnZpY2UgcmVsYXllIGxlcyBjb25uZXhpb25zIFRDUCB2ZXJzIHVuIG91IHBsdXNpZXVycwpzZXJ2ZXVycywgdW5lIGZvaXMgcXUnaWwgZGlzcG9zZSBkJ2Fzc2V6IGQnaW5mb3JtYXRpb25zIHBvdXIgZW4gcHJlbmRyZSBsYQpk6WNpc2lvbi4gTGVzIGVuLXTqdGVzIEhUVFAgc29udCBhbmFseXPpcyBwb3VyIHkgdHJvdXZlciB1biDpdmVudHVlbCBjb29raWUsIGV0CmNlcnRhaW5zIGQnZW50cmUtZXV4IHBldXZlbnQg6nRyZSBtb2RpZmnpcyBwYXIgbGUgYmlhaXMgZCdleHByZXNzaW9ucwpy6Wd1bGnocmVzLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIgbGUgbW9kZSBIVFRQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUKcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAoKTW9kZSBzdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tCklsIHMnYWdpdCBkJ3VuIG1vZGUgb2ZmcmFudCDgIHVuIGNvbXBvc2FudCBleHRlcm5lIHVuZSB2aXNpYmlsaXTpIGRlIGwn6XRhdCBkZQpzYW506SBkdSBzZXJ2aWNlLiBJbCBzZSBjb250ZW50ZSBkZSByZXRvdXJuZXIgIk9LIiDgIHRvdXQgY2xpZW50IHNlIGNvbm5lY3RhbnQKc3VyIHNvbiBwb3J0LiBJbCBwZXV0IOp0cmUgdXRpbGlz6SBhdmVjIGRlcyBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIOl2b2x16XMgcG91cgpk6XRlcm1pbmVyIHF1ZWxzIHNvbnQgbGVzIHNlcnZpY2VzIHV0aWxpc2FibGVzLiBTaSBsJ29wdGlvbiAnaHR0cGNoaycgZXN0CmFjdGl26WUsIGFsb3JzIGxhIHLpcG9uc2UgY2hhbmdlcmEgZW4gJ0hUVFAvMS4wIDIwMCBPSycgcG91ciBzYXRpc2ZhaXJlIGxlcwphdHRlbnRlcyBkZSBjb21wb3NhbnRzIHNhY2hhbnQgdGVzdGVyIGVuIEhUVFAuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlcgpsZSBtb2RlIEhFQUxUSCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1IHJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgculwb25zZSBzaW1wbGUgOiAnT0snCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAoKICAgICMgculwb25zZSBIVFRQIDogJ0hUVFAvMS4wIDIwMCBPSycKICAgIGxpc3RlbiBodHRwX2hlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAxCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBvcHRpb24gaHR0cGNoawoKCkxlcyB2ZXJzaW9ucyAxLjEuMzIgZXQgMS4yLjYgYXBwb3J0ZW50IHVuZSBub3V2ZWxsZSBzb2x1dGlvbiBwb3VyIHZhbGlkZXIgbGUKYm9uIGZvbmN0aW9ubmVtZW50IGR1IHByb3h5IHNhbnMgcGVydHVyYmVyIGxlIHNlcnZpY2UuIExlIG1vdC1jbOkgJ21vbml0b3ItbmV0JwphIOl06SBjcunpIGRhbnMgbGUgYnV0ZCBkZSBzcOljaWZpZXIgdW4gculzZWF1IGQn6XF1aXBlbWVudHMgcXVpIG5lIFBFVVZFTlQgUEFTCnV0aWxpc2VyIGxlIHNlcnZpY2UgcG91ciBhdXRyZSBjaG9zZSBxdWUgZGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50LiBDJ2VzdApwYXJ0aWN1bGnocmVtZW50IGFkYXB06SBhdXggcHJveGllcyBUQ1AsIGNhciBjZWxhIGVtcOpjaGUgbGUgcHJveHkgZGUgcmVsYXllcgpkZXMg6XRhYmxpc3NlbWVudHMgZGUgY29ubmV4aW9uIOltaXMgcGFyIHVuIG91dGlsIGRlIHN1cnZlaWxsYW5jZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgVENQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllIHB1aXMgcmVmZXJt6WUKZXQgcmllbiBuJ2VzdCBsb2d16S4gQydlc3Qgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIGVuIGFtb250CmTpdGVjdGUgcXVlIGxlIHNlcnZpY2UgZXN0IGRpc3BvbmlibGUuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IEhUVFAsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUsIHJpZW4gbidlc3QKbG9ndeksIHB1aXMgbGEgculwb25zZSBzdWl2YW50ZSBlc3QgZW52b3npZSBldCBsYSBzZXNzaW9uIHJlZmVybellIDoKIkhUVFAvMS4wIDIwMCBPSyIuIEMnZXN0IG5vcm1hbGVtZW50IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZQpIVFRQIGVuIGFtb250IGTpdGVjdGUgbGUgc2VydmljZSBjb21tZSBvcOlyYXRpb25uZWwsIGF1c3NpIGJpZW4g4CB0cmF2ZXJzIGRlcwp0ZXN0cyBUQ1AgcXVlIEhUVFAuCgpMZXMgcHJveGllcyB1dGlsaXNhbnQgbGUgbW90LWNs6SAnbW9uaXRvci1uZXQnIHBldXZlbnQgYWNjZXNzb2lyZW1lbnQgc2UgcGFzc2VyCmRlIGwnb3B0aW9uICdkb250bG9nbnVsbCcsIGNlIHF1aSBwZXJtZXR0cmEgZGUgbG9ndWVyIGxlcyBjb25uZXhpb25zIHZpZGVzCultaXNlcyBkZXB1aXMgZCdhdXRyZXMgYWRyZXNzZXMgcXVlIGNlbGxlcyBkdSBy6XNlYXUgZGUgdGVzdHMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIHRzZS1wcm94eQogICAgICAgYmluZCA6MzM4OSw6MTQ5NCw6NTkwMCAgIyBUU0UsIElDQSBhbmQgVk5DIGF0IG9uY2UuCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgdHNlLWZhcm0gMTkyLjE2OC4xLjEwCiAgICAgICBtb25pdG9yLW5ldCAxOTIuMTY4LjEuMjUyLzMxICAgIyBMNCBsb2FkLWJhbGFuY2VycyBvbiAuMjUyIGFuZCAuMjUzCgoKMi4zKSBMaW1pdGF0aW9uIGR1IG5vbWJyZSBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBwYXJhbeh0cmUgIm1heGNvbm4iIHBlcm1ldCBkZSBmaXhlciBsYSBsaW1pdGUgYWNjZXB0YWJsZSBlbiBub21icmUgZGUKY29ubmV4aW9ucyBzaW11bHRhbullcyBwYXIgcHJveHkuIENoYXF1ZSBwcm94eSBxdWkgYXR0ZWludCBjZXR0ZSB2YWxldXIgY2Vzc2UKZCfpY291dGVyIGp1c3F1J+AgbGli6XJhdGlvbiBkJ3VuZSBjb25uZXhpb24uIFZvaXIgcGx1cyBsb2luIGNvbmNlcm5hbnQgbGVzCmxpbWl0YXRpb25zIGxp6WVzIGF1IHN5c3TobWUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gdGlueV9zZXJ2ZXIgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAKCgoyLjQpIEFycup0IGVuIGRvdWNldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkJ2Fycup0ZXIgbGVzIHNlcnZpY2VzIGVuIGRvdWNldXIgZW4gZW52b3lhbnQgdW4gc2lnbmFsClNJR1VTUjEgYXUgcHJvY2Vzc3VzIHJlbGFpcy4gVG91cyBsZXMgc2VydmljZXMgc2Vyb250IGFsb3JzIG1pcyBlbiBwaGFzZQpkJ2Fycup0LCBtYWlzIHBvdXJyb250IGNvbnRpbnVlciBkJ2FjY2VwdGVyIGRlcyBjb25uZXhpb25zIHBlbmRhbnQgdW4gdGVtcHMKZOlmaW5pIHBhciBsZSBwYXJhbeh0cmUgJ2dyYWNlJyAoZW4gbWlsbGlzZWNvbmRlcykuIENlbGEgcGVybWV0IHBhciBleGVtcGxlLApkZSBmYWlyZSBzYXZvaXIgcmFwaWRlbWVudCDgIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBxdSdpbCBuZSBkb2l0IHBsdXMKdXRpbGlzZXIgdW4gcmVsYWlzLCB0b3V0IGVuIGNvbnRpbnVhbnQgZCdhc3N1cmVyIGxlIHNlcnZpY2UgbGUgdGVtcHMgcXUnaWwKcydlbiByZW5kZSBjb21wdGUuCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgYWN0aXZlcyBuZSBzb250IGphbWFpcyBjYXNz6WVzLiBEYW5zIGxlIHBpcmUgZGVzIGNhcywgaWwgZmF1ZHJhCmF0dGVuZHJlIGVuIHBsdXMgbGV1ciBleHBpcmF0aW9uIGF2YW50IGwnYXJy6nQgdG90YWwgZHUgcHJvY2Vzc3VzLCBvdSBiaWVuIHR1ZXIKbWFudWVsbGVtZW50IGxlIHByb2Nlc3N1cyBwYXIgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdURVJNLiBMYSB2YWxldXIgcGFyIGTpZmF1dApkdSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgMCAocGFzIGRlIGdy4mNlLCBhcnLqdCBpbW3pZGlhdCBkZSBsJ+ljb3V0ZSkuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGFycup0ZXIgZW4gZG91Y2V1ciBwYXIgJ2tpbGxhbGwgLVVTUjEgaGFwcm94eScKICAgICMgbGUgc2VydmljZSB0b3VybmVyYSBlbmNvcmUgMTAgc2Vjb25kZXMgYXBy6HMgbGEgZGVtYW5kZSBkJ2Fycup0CiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgZ3JhY2UgMTAwMDAKCiAgICAjIGNlIHBvcnQgbidlc3QgdGVzdOkgcXVlIHBhciB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UuCiAgICBsaXN0ZW4gaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDAKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIGdyYWNlIDAKCkEgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjgsIHVuIG5vdXZlYXUgbeljYW5pc21lIGRlIHJlY29uZmlndXJhdGlvbiDgIGNoYXVkCmEg6XTpIGludHJvZHVpdC4gSWwgZXN0IGTpc29ybWFpcyBwb3NzaWJsZSBkZSBtZXR0cmUgbGVzIHByb3hpZXMgZW4gInBhdXNlIiBlbgplbnZveWFudCB1biBzaWduYWwgU0lHVFRPVSBhdXggcHJvY2Vzc3VzLiBDZWxhIGTpc2FjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlCnNhbnMgY2Fzc2VyIGxlcyBzZXNzaW9ucyBleGlzdGFudGVzLiBTdWl0ZSDgIGNlbGEsIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVFRJTgpy6WFjdGl2ZXJhIGxlcyBzb2NrZXRzIGQn6WNvdXRlLiBDZWNpIGVzdCB0cuhzIHByYXRpcXVlIHBvdXIgdGVudGVyIGRlIGNoYXJnZXIKdW5lIG5vdXZlbGxlIGNvbmZpZ3VyYXRpb24gb3UgbeptZSB1bmUgbm91dmVsbGUgdmVyc2lvbiBkZSBoYXByb3h5IHNhbnMgY2Fzc2VyCmxlcyBjb25uZXhpb25zIGV4aXN0YW50ZXMuIFNpIGxlIHJlY2hhcmdlbWVudCBzJ2VmZmVjdHVlIGNvcnJlY3RlbWVudCwgaWwgbmUKcmVzdGUgcGx1cyBxdSfgIGVudm95ZXIgdW4gc2lnbmFsIFNJR1VTUjEgYXV4IGFuY2llbnMgcHJvY2Vzc3VzLCBjZSBxdWkKcHJvdm9xdWVyYSBsZXVyIGFycup0IGltbelkaWF0IGTocyBxdWUgbGV1cnMgY29ubmV4aW9ucyBzZXJvbnQgdGVybWlu6WVzIDsgZW4KcmV2YW5jaGUsIHNpIGxlIHJlY2hhcmdlbWVudCDpY2hvdWUsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsIFNJR1RUSU4gcG91cgpyZW1ldHRyZSBsZXMgcG9ydHMgZW4g6WNvdXRlIGV0IHLpdGFibGlyIGxlIHNlcnZpY2UgaW1t6WRpYXRlbWVudC4gVmV1aWxsZXoKbm90ZXIgcXVlIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCBpZ25vcukgcG91ciBsZSBzaWduYWwgU0lHVFRPVSBhaW5zaSBxdWUgbGUKc2lnbmFsIFNJR1VTUjEgdW5lIGZvaXMgbGUgcHJvY2Vzc3VzIGVuIHBhdXNlLiBBdXNzaSwgaWwgcGV1dCBzJ2F26XJlciB0cuhzCnV0aWxlIGRlIHNhdXZlciBsZSBmaWNoaWVyIGRlIHBpZCBhdmFudCBkZSBk6W1hcnJlciB1bmUgbm91dmVsbGUgaW5zdGFuY2UuCgoKMi41KSBUZW1wcyBkJ2V4cGlyYXRpb24gZGVzIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgY2VydGFpbmVzIGR1cullcyBkJ2V4cGlyYXRpb24gYXUgbml2ZWF1IGRlcwpjb25uZXhpb25zIFRDUC4gVHJvaXMgdGVtcHMgaW5k6XBlbmRhbnRzIHNvbnQgY29uZmlndXJhYmxlcyBldCBhY2NlcHRlbnQgZGVzCnZhbGV1cnMgZW4gbWlsbGlzZWNvbmRlcy4gU2kgbCd1bmUgZGUgY2VzIHRyb2lzIHRlbXBvcmlzYXRpb25zIGVzdCBk6XBhc3PpZSwgbGEKc2Vzc2lvbiBlc3QgdGVybWlu6WUg4CBjaGFxdWUgZXh0cultaXTpLgoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBjbGllbnQsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJjbGl0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgY2xpZW50IOAgMm1uMzAuCiAgICAgICAgY2xpdGltZW91dCAgICAgICAgMTUwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91IGRlIGxhCiAgICBwb3NzaWJpbGl06SBkZSBsdWkgZW52b3llciBkZXMgZG9ubullcyA6ICJzcnZ0aW1lb3V0IiA6CgogICAgICAgICMgdGltZS1vdXQgc2VydmV1ciDgIDMwcy4KICAgICAgICBzcnZ0aW1lb3V0ICAgICAgICAzMDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1cgogICAgImNvbnRpbWVvdXQiIDoKCiAgICAgICAgIyBvbiBhYmFuZG9ubmUgc2kgbGEgY29ubmV4aW9uIG4nZXN0IHBhcyDpdGFibGllIGFwcuhzIDQgc2Vjb25kZXMKICAgICAgICBjb250aW1lb3V0ICAgICAgICA0MDAwCgpSZW1hcnF1ZXMgOgotLS0tLS0tLS0tLQogIC0gImNvbnRpbWVvdXQiIGV0ICJzcnZ0aW1lb3V0IiBuJ29udCBwYXMgZCd1dGlsaXTpIGRhbnMgbGUgY2FzIGR1IHNlcnZldXIgZGUKICAgIHR5cGUgImhlYWx0aCIuCiAgLSBzb3VzIGRlIGZvcnRlcyBjaGFyZ2VzLCBvdSBzdXIgdW4gculzZWF1IHNhdHVy6SBvdSBk6WZlY3R1ZXV4LCBpbCBlc3QKICAgIHBvc3NpYmxlIGRlIHBlcmRyZSBkZXMgcGFxdWV0cy4gRHUgZmFpdCBxdWUgbGEgcHJlbWnocmUgcmV0cmFuc21pc3Npb24KICAgIFRDUCBuJ2FpdCBsaWV1IHF1J2F1IGJvdXQgZGUgMyBzZWNvdWRlcywgZml4ZXIgdW4gdGltZW91dCBkZSBjb25uZXhpb24KICAgIGluZulyaWV1ciDgIDMgc2Vjb25kZXMgbmUgcGVybWV0IHBhcyBkZSBzZSByYXR0cmFwZXIgc3VyIGxhIHBlcnRlCiAgICBkZSBwYXF1ZXRzIGNhciBsYSBzZXNzaW9uIGF1cmEg6XTpIGFiYW5kb25u6WUgYXZhbnQgbGEgcHJlbWnocmUKICAgIHJldHJhbnNtaXNzaW9uLiBVbmUgdmFsZXVyIGRlIDQgc2Vjb25kZXMgculkdWlyYSBjb25zaWTpcmFibGVtZW50CiAgICBsZSBub21icmUgZCfpY2hlY3MgZGUgY29ubmV4aW9uLgoKMi42KSBUZW50YXRpdmVzIGRlIHJlY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMb3JzIGQndW4g6WNoZWMgZGUgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ciwgaWwgZXN0IHBvc3NpYmxlIGRlCnJldGVudGVyIChwb3RlbnRpZWxsZW1lbnQgdmVycyB1biBhdXRyZSBzZXJ2ZXVyLCBlbiBjYXMgZGUgculwYXJ0aXRpb24KZGUgY2hhcmdlKS4gTGUgbm9tYnJlIGRlIG5vdXZlbGxlcyB0ZW50YXRpdmVzIGluZnJ1Y3R1ZXVzZXMgYXZhbnQKYWJhbmRvbiBlc3QgZm91cm5pIHBhciBsZSBwYXJhbeh0cmUgInJldHJpZXMiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgICAgICMgb24gZXNzYWllIGVuY29yZSB0cm9pcyBmb2lzIG1heGkKICAgICAgICByZXRyaWVzIDMKCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+llcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgZXN0IGTpZmluaSBwYXIKbGUgcGFyYW3odHJlICJkaXNwYXRjaCIgc291cyBsYSBmb3JtZSA8YWRyZXNzZV9pcD46PHBvcnQ+LiBJbCBjb3JyZXNwb25kIOAgdW4Kc2VydmV1ciBkJ2Fzc2lnbmF0aW9uIGRlIGNvb2tpZSBkYW5zIGxlIGNhcyBv+SBsZSBzZXJ2aWNlIGNvbnNpc3RlIOAgYXNzdXJlcgp1bmlxdWVtZW50IHVuZSBwZXJzaXN0ZW5jZSBIVFRQLCBvdSBiaWVuIHNpbXBsZW1lbnQgYXUgc2VydmV1ciBkZXN0aW5hdGlvbiBkYW5zCmxlIGNhcyBkZSByZWxheWFnZSBUQ1Agc2ltcGxlLiBDZXQgYW5jaWVuIG1vZGUgbmUgcGVybWV0IHBhcyBkZSB0ZXN0ZXIgbCfpdGF0CmR1IHNlcnZldXIgZGlzdGFudCwgZXQgaWwgZXN0IG1haW50ZW5hbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGRlIHBy6WbpcmVuY2UKbGUgbW9kZSAnYmFsYW5jZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgICAgIyBvbiBlbnZvaWUgdG91dGVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBpY2kKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMjo4MAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkNlIHBhcmFt6HRyZSBuJ2EgcGFzIGQndXRpbGl06SBwb3VyIHVuIHNlcnZldXIgZW4gbW9kZSAnaGVhbHRoJywgbmkgZW4gbW9kZQonYmFsYW5jZScuCgoKMi44KSBBZHJlc3NlIGRlIHNvcnRpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBmb3JjZXIgbCdhZHJlc3NlIHV0aWxpc+llIHBvdXIg6XRhYmxpciBsZXMgY29ubmV4aW9ucyB2ZXJzCmxlcyBzZXJ2ZXVycyDgIGwnYWlkZSBkdSBwYXJhbeh0cmUgInNvdXJjZSIuIElsIGVzdCBt6m1lIHBvc3NpYmxlIGRlIGZvcmNlciBsZQpwb3J0LCBiaWVuIHF1ZSBjZXR0ZSBmb25jdGlvbm5hbGl06SBzZSBsaW1pdGUg4CBkZXMgdXNhZ2VzIHRy6HMgc3DpY2lmaXF1ZXMuCkMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gY2FzIGQnYWRyZXNzYWdlIG11bHRpcGxlLCBldCBwbHVzIGfpbulyYWxlbWVudApwb3VyIHBlcm1ldHRyZSBhdXggc2VydmV1cnMgZGUgdHJvdXZlciBsZSBjaGVtaW4gZGUgcmV0b3VyIGRhbnMgZGVzIGNvbnRleHRlcwpkZSByb3V0YWdlIGRpZmZpY2lsZXMuIFNpIGwnYWRyZXNzZSBlc3QgJzAuMC4wLjAnIG91ICcqJyBvdSB2aWRlLCBlbGxlIHNlcmEKY2hvaXNpZSBsaWJyZW1lbnQgcGFyIGxlIHN5c3RlbWUuIFNpIGxlIHBvcnQgZXN0ICcwJyBvdSB2aWRlLCBpbCBzZXJhIGNob2lzaQpsaWJyZW1lbnQgcGFyIGxlIHN5c3TobWUuIElsIGVzdCDgIG5vdGVyIHF1ZSBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTgsIGxlcwp0ZXN0cyBkZSBib24gZm9uY3Rpb25uZW1lbnQgZGVzIHNlcnZldXJzIHNlcm9udCBhdXNzaSBlZmZlY3R16XMg4CBwYXJ0aXIgZGUgbGEKc291cmNlIHNw6WNpZmnpZSBwYXIgY2UgcGFyYW3odHJlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAqOjgwCiAgICAgICAgICAgIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDowCgogICAgbGlzdGVuIHJsb2dpbl9wcm94eSAqOjUxMwogICAgICAgICAgICMgdXRpbGlzZXIgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAgZXQgbGUgcG9ydCBy6XNlcnbpIDkwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjkwMAoKCjIuOSkgROlmaW5pdGlvbiBkdSBub20gZHUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlY2hlcmNoZXIgbGEgdmFsZXVyIGQndW4gY29va2llIHBvdXIgc2F2b2lyCnZlcnMgcXVlbCBzZXJ2ZXVyIGFpZ3VpbGxlciBsYSByZXF16nRlIHV0aWxpc2F0ZXVyLiBMZSBub20gZHUgY29va2llIGVzdCBkb25u6QpwYXIgbGUgcGFyYW3odHJlICJjb29raWUiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECgpPbiBwZXV0IG1vZGlmaWVyIGwndXRpbGlzYXRpb24gZHUgY29va2llIHBvdXIgbGEgcmVuZHJlIHBsdXMgaW50ZWxsaWdlbnRlCnZpcy3gLXZpcyBkZXMgYXBwbGljYXRpb25zIHJlbGF56WVzLiBJbCBlc3QgcG9zc2libGUsIG5vdGFtbWVudCBkZSBzdXBwcmltZXIgb3UKcunpY3JpcmUgdW4gY29va2llIHJldG91cm7pIHBhciB1biBzZXJ2ZXVyIGFjY+lk6SBlbiBkaXJlY3QsIGV0IGQnaW5z6XJlciB1bgpjb29raWUgZGFucyB1bmUgculwb25zZSBIVFRQIGFkcmVzc+llIOAgdW4gc2VydmV1ciBz6WxlY3Rpb25u6SBlbiBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UsIGV0IG3qbWUgZGUgc2lnbmFsZXIgYXV4IHByb3hpZXMgYW1vbnQgZGUgbmUgcGFzIGNhY2hlciBsZSBjb29raWUKaW5z6XLpLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgpQb3VyIG5lIGNvbnNlcnZlciBsZSBjb29raWUgcXUnZW4gYWNj6HMgaW5kaXJlY3QsIGRvbmMg4CB0cmF2ZXJzIGxlCmRpc3BhdGNoZXVyLCBldCBzdXBwcmltZXIgdG91dGVzIHNlcyDpdmVudHVlbGxlcyBvY2N1cmVuY2VzIGxvcnMgZGVzIGFjY+hzCmRpcmVjdHMgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5kaXJlY3QKClBvdXIgcmVtcGxhY2VyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBleGlzdGFudCBwYXIgY2VsbGUgYXR0cmlidellIOAgdW4gc2VydmV1ciwKbG9ycyBkJ3VuIGFjY+hzIGRpcmVjdCA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCByZXdyaXRlCgpQb3VyIGNy6WVyIHVuIGNvb2tpZSBjb21wb3J0YW50IGxhIHZhbGV1ciBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyIGxvcnMgZCd1bgphY2PocyBlbiBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBzb3VoYWl0YWJsZSBxdWUKdG91cyBsZXMgc2VydmV1cnMgYWllbnQgdW4gY29va2llIHJlbnNlaWdu6S4gVW4gc2VydmV1ciBub24gYXNzaWdu6SBkJ3VuIGNvb2tpZQpyZXRvdXJuZXJhIHVuIGNvb2tpZSB2aWRlIChjb29raWUgZGUgc3VwcHJlc3Npb24pIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydAoKUG91ciBy6XV0aWxpc2VyIHVuIGNvb2tpZSBhcHBsaWNhdGlmIGV0IGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIsCnB1aXMgbGUgc3VwcHJpbWVyIGRhbnMgbGVzIHJlcXXqdGVzIHN1aXZhbnRlcywgdXRpbGlzZXIgbCdvcHRpb24gJ3ByZWZpeCcuIEVsbGUKcGVybWV0IGQnaW5z6XJlciB1bmUgaW5zdGFuY2UgZGUgaGFwcm94eSBkZXZhbnQgdW5lIGFwcGxpY2F0aW9uIHNhbnMgcmlzcXVlcgpkJ2luY29tcGF0aWJpbGl06XMgZPtlcyDgIGRlcyBjbGllbnRzIHF1aSBuZSBzdXBwb3J0ZXJhaWVudCBwYXMgZCdhcHByZW5kcmUKcGx1cyBkJ3VuIGNvb2tpZSA6CgogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CgpQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKYWpvdXRlciBsZSBtb3QgY2zpICdub2NhY2hlJyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZQoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSBzZXVsZW1lbnQgc3VpdGUgYXV4IHJlcXXqdGVzIGRlIHR5cGUgUE9TVCwgYWpvdXRlciBsZQptb3QgY2zpICdwb3N0b25seScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IHBvc3Rvbmx5CgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KLSBJbCBlc3QgcG9zc2libGUgZGUgY29tYmluZXIgJ2luc2VydCcgYXZlYyAnaW5kaXJlY3QnIG91ICdyZXdyaXRlJyBwb3VyCiAgcydhZGFwdGVyIOAgZGVzIGFwcGxpY2F0aW9ucyBn6W7pcmFudCBk6WrgIGxlIGNvb2tpZSwgYXZlYyB1biBjb250ZW51CiAgaW52YWxpZGUuIElsIHN1ZmZpdCBwb3VyIGNlbGEgZGUgbGVzIHNw6WNpZmllciBzdXIgbGEgbeptZSBsaWduZS4KCi0gZGFucyBsZSBjYXMgb/kgJ2luc2VydCcgZXQgJ2luZGlyZWN0JyBzb250IHNw6WNpZmnpcywgbGUgY29va2llIG4nZXN0IGphbWFpcwogIHRyYW5zbWlzIGF1IHNlcnZldXIgdnUgcXUnaWwgbidlbiBhIHBhcyBjb25uYWlzc2FuY2UgZXQgbmUgcG91cnJhaXQgcGFzIGxlCiAgY29tcHJlbmRyZS4KCi0gaWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyICdub2NhY2hlJyBlbiBtb2RlIGluc2VydGlvbiBzaQogIGRlcyBjYWNoZXMgcGV1dmVudCBzZSB0cm91dmVyIGVudHJlIGxlcyBjbGllbnRzIGV0IGwnaW5zdGFuY2UgZHUgcHJveHkuIERhbnMKICBsZSBjYXMgY29udHJhaXJlLCB1biBjYWNoZSBIVFRQIDEuMCBwb3VycmFpdCBjYWNoZXIgbGEgculwb25zZSwgaW5jbHVhbnQgbGUKICBjb29raWUgZGUgcGVyc2lzdGVuY2UgaW5z6XLpLCBkb25jIHByb3ZvcXVlciBkZXMgY2hhbmdlbWVudHMgZGUgc2VydmV1cnMgcG91cgogIGRlcyBjbGllbnRzIHBhcnRhZ2VhbnQgbGUgbeptZSBjYWNoZS4KCi0gbGUgbW9kZSAncHJlZml4JyBuZSBu6WNlc3NpdGUgcGFzIGQndXRpbGlzZXIgJ2luZGlyZWN0JywgJ25vY2FjaGUnLCBuaQogICdwb3N0b25seScsIGNhciB0b3V0IGNvbW1lIGxlIG1vZGUgJ3Jld3JpdGUnLCBpbCBzJ2FwcHVpZSBzdXIgdW4gY29va2llCiAgcHLpc2VudOkgcGFyIGwnYXBwbGljYXRpb24gcXVpIGVzdCBjZW5z6WUgc2F2b2lyIOAgcXVlbCBtb21lbnQgaWwgcGV1dAogIOp0cmUg6W1pcyBzYW5zIHJpc3F1ZS4gVG91dGVmb2lzLCBjb21tZSBpbCBu6WNlc3NpdGUgZGUgcmVjdGlmaWVyIGxlIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsZSBjbGllbnQgZGFucyBjaGFxdWUgcmVxdep0ZSB1bHTpcmlldXJlLCBpbCBlc3QgaW5kaXNwZW5zYWJsZQogIGRlIHMnYXNzdXJlciBxdWUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIgY29tbXVuaXF1ZXJvbnQgc2FucyAia2VlcC1hbGl2ZQogIEhUVFAiLiBEYW5zIGxlIGRvdXRlLCBpbCBlc3QgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLgoKLSBsb3JzcXVlIGwnYXBwbGljYXRpb24gZXN0IGJpZW4gY29ubnVlLCBldCBxdWUgbGVzIHBhcnRpZXMgbuljZXNzaXRhbnQgZGUgbGEKICBwZXJzaXN0ZW5jZSBzb250IHN5c3TpbWF0aXF1ZW1lbnQgYWNj6WTpZXMgcGFyIHVuIGZvcm11bGFpcmUgZW4gbW9kZSBQT1NULAogIGlsIGVzdCBwbHVzIGVmZmljYWNlIGVuY29yZSBkZSBjb21iaW5lciBsZSBtb3QgY2zpICJwb3N0b25seSIgYXZlYyAiaW5zZXJ0IgogIGV0ICJpbmRpcmVjdCIsIGNhciBsYSBwYWdlIGQnYWNjdWVpbCByZXN0ZSBjYWNoYWJsZSwgZXQgYydlc3QgbCdhcHBsaWNhdGlvbgogIHF1aSBn6HJlIGxlICdjYWNoZS1jb250cm9sJy4KCjIuMTApIEFzc2lnbmF0aW9uIGQndW4gc2VydmV1ciDgIHVuZSB2YWxldXIgZGUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZCdhc3NvY2llciBkZXMgdmFsZXVycyBkZSBjb29raWUg4CBkZXMgc2VydmV1cnMKcGFyIGxlIHBhcmFt6HRyZSAnc2VydmVyJy4gTGEgc3ludGF4ZSBlc3QgOgoKICAgIHNlcnZlciA8aWRlbnRpZmlhbnQ+IDxhZHJlc3NlX2lwPjo8cG9ydD4gY29va2llIDx2YWxldXI+CgotIDxpZGVudGlmaWFudD4gZXN0IHVuIG5vbSBxdWVsY29ucXVlIGRlIHNlcnZldXIgdXRpbGlz6SBwb3VyIGwnaWRlbnRpZmllciBkYW5zIGxhCiAgY29uZmlndXJhdGlvbiBldCBsZXMgbG9ncy4KLSA8YWRyZXNzZV9pcD46PHBvcnQ+IGVzdCBsZSBjb3VwbGUgYWRyZXNzZS1wb3J0IHN1ciBsZXF1ZWwgbGUgc2VydmV1ciDpY291dGUuCi0gPHZhbGV1cj4gZXN0IGxhIHZhbGV1ciDgIHJlY29ubmHudHJlIG91IHBvc2l0aW9ubmVyIGRhbnMgbGUgY29va2llLgoKRXhlbXBsZSA6IGxlIGNvb2tpZSBTRVJWRVJJRCBwZXV0IGNvbnRlbmlyIHNlcnZlcjAxIG91IHNlcnZlcjAyCi0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gRW4gdmVyc2lvbiAxLjEuOSwKc2V1bCAncm91bmRyb2JpbicgZXN0IGfpcuksIGV0IGMnZXN0IGF1c3NpIGxhIHZhbGV1ciBpbXBsaWNpdGUgcGFyIGTpZmF1dC4gSWwKZXN0IOl2aWRlbnQgcXUnZW4gY2FzIGQndXRpbGlzYXRpb24gZHUgculwYXJ0aXRldXIgaW50ZXJuZSwgaWwgbmUgZmF1ZHJhIHBhcwpzcOljaWZpZXIgZCdhZHJlc3NlIGRlIGRpc3BhdGNoLCBldCBxdSdpbCBmYXVkcmEgYXUgbW9pbnMgdW4gc2VydmV1ci4KCkV4ZW1wbGUgOiBt6m1lIHF1ZSBwculj6WRlbW1lbnQgZW4gculwYXJ0aXRpb24gaW50ZXJuZQotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIKCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGRlIGTpdGVybWluZXIgYXV0b21hdGlxdWVtZW50IGxlIHBvcnQKZHUgc2VydmV1ciB2ZXJzIGxlcXVlbCBzZXJhIGVudm956WUgbGEgY29ubmV4aW9uLCBlbiBmb25jdGlvbiBkdSBwb3J0IGQn6WNvdXRlCnN1ciBsZXF1ZWwgbGUgY2xpZW50IHMnZXN0IGNvbm5lY3TpLiBFbiBlZmZldCwgaWwgeSBhIDQgcG9zc2liaWxpdOlzIHBvdXIgbGUKY2hhbXAgPHBvcnQ+IGRlIGwnYWRyZXNzZSBzZXJ2ZXVyIDoKCiAgLSBub24gc3DpY2lmaekgb3UgbnVsIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbi4KCiAgLSB2YWxldXIgbnVt6XJpcXVlIChzZXVsIGNhcyBzdXBwb3J06SBwb3VyIGxlcyB2ZXJzaW9ucyBhbnTpcmlldXJlcykgOgogICAgbGUgc2VydmV1ciByZWNldnJhIGxhIGNvbm5leGlvbiBzdXIgbGUgcG9ydCBk6XNpZ27pLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgcHLpY+lk6WUgZCd1biBzaWduZSAnKycgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLCBhdXF1ZWwgb24gYWpvdXRlIGxhIHZhbGV1ciBk6XNpZ27pZS4KICAgIAogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICctJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGR1cXVlbCBvbiBzb3VzdHJhaXQgbGEgdmFsZXVyCiAgICBk6XNpZ27pZS4KICAgIApFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KCiMgbeptZSBxdWUgcHLpY+lkZW1tZW50CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIHNpbXVsdGFu6SBkZXMgcG9ydHMgODAgZXQgODEgZXQgODA4MC04MDg5CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwLDo4MSw6ODA4MC04MDg5CiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIgY29va2llIHNlcnZlcjAyCgojIHJlbGF5YWdlIFRDUCBkZXMgcG9ydHMgMjUsIDM4OSBldCA2NjMgdmVycyBsZXMgcG9ydHMgMTAyNSwgMTM4OSBldCAxNjYzCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjI1LDozODksOjY2MwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjorMTAwMAoKCjMuMSkgU3VydmVpbGxhbmNlIGRlcyBzZXJ2ZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGRlIHRlc3RlciBsJ+l0YXQgZGVzIHNlcnZldXJzIHBhciDpdGFibGlzc2VtZW50IGRlIGNvbm5leGlvbgpUQ1Agb3UgcGFyIGVudm9pIGQndW5lIHJlcXXqdGUgSFRUUC4gVW4gc2VydmV1ciBob3JzIGQndXNhZ2UgbmUgc2VyYSBwYXMKdXRpbGlz6SBkYW5zIGxlIHByb2Nlc3N1cyBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gUG91ciBhY3RpdmVyIGxhCnN1cnZlaWxsYW5jZSwgYWpvdXRlciBsZSBtb3QgY2zpICdjaGVjaycg4CBsYSBmaW4gZGUgbGEgZOljbGFyYXRpb24gZHUgc2VydmV1ci4KSWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBsJ2ludGVydmFsbGUgKGVuIG1pbGxpc2Vjb25kZXMpIHPpcGFyYW50IGRldXgKdGVzdHMgZHUgc2VydmV1ciBwYXIgbGUgcGFyYW3odHJlICJpbnRlciIsIGxlIG5vbWJyZSBkJ+ljaGVjcyBhY2NlcHTpcyBwYXIgbGUKcGFyYW3odHJlICJmYWxsIiwgZXQgbGUgbm9tYnJlIGRlIHN1Y2PocyBhdmFudCByZXByaXNlIHBhciBsZSBwYXJhbeh0cmUgInJpc2UiLgpMZXMgcGFyYW3odHJlcyBub24gcHLpY2lz6XMgcHJlbm5lbnQgbGVzIHZhbGV1cnMgc3VpdmFudGVzIHBhciBk6WZhdXQgOgogLSBpbnRlciA6IDIwMDAKIC0gcmlzZSAgOiAyCiAtIGZhbGwgIDogMwogLSBwb3J0ICA6IHBvcnQgZGUgY29ubmV4aW9uIGR1IHNlcnZldXIKCkxlIG1vZGUgcGFyIGTpZmF1dCBjb25zaXN0ZSDgIOl0YWJsaXIgZGVzIGNvbm5leGlvbnMgVENQIHVuaXF1ZW1lbnQuIERhbnMKY2VydGFpbnMgY2FzIGRlIHBhbm5lcywgZGVzIHNlcnZldXJzIHBldXZlbnQgY29udGludWVyIOAgYWNjZXB0ZXIgbGVzCmNvbm5leGlvbnMgc2FucyBsZXMgdHJhaXRlci4gRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE2LCBoYXByb3h5IGVzdCBlbiBtZXN1cmUKZCdlbnZveWVyIGRlcyByZXF16nRlcyBIVFRQIGNvdXJ0ZXMgZXQgdHLocyBwZXUgY2/7dGV1c2VzLiBMZXMgdmVyc2lvbnMgMS4xLjE2CmV0IDEuMS4xNyB1dGlsaXNlbnQgIk9QVElPTlMgLyBIVFRQLzEuMCIuIERhbnMgbGVzIHZlcnNpb25zIDEuMS4xOCDgIDEuMS4yMCwKbGVzIHJlcXXqdGVzIG9udCDpdOkgY2hhbmfpZXMgZW4gIk9QVElPTlMgKiBIVFRQLzEuMCIgcG91ciBkZXMgcmFpc29ucyBkZQpjb250cvRsZSBkJ2FjY+hzIGF1eCByZXNzb3VyY2VzLiBDZXBlbmRhbnQsIGNldHRlIHJlcXXqdGUgZG9jdW1lbnTpZSBkYW5zIGxhClJGQzIwNjggbidlc3QgcGFzIGNvbXByaXNlIHBhciB0b3VzIGxlcyBzZXJ2ZXVycy4gRG9uYyDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uCjEuMS4yMSwgbGEgcmVxdep0ZSBwYXIgZOlmYXV0IGVzdCByZXZlbnVlIOAgIk9QVElPTlMgLyBIVFRQLzEuMCIsIG1haXMgaWwgZXN0CnBvc3NpYmxlIGRlIHBhcmFt6XRyZXIgbGEgcGFydGllIFVSSS4gTGVzIHJlcXXqdGVzIE9QVElPTlMgcHLpc2VudGVudApsJ2F2YW50YWdlIGQn6nRyZSBmYWNpbGVtZW50IGV4dHJhY3RpYmxlcyBkZXMgbG9ncywgZXQgZGUgbmUgcGFzIGluZHVpcmUKZCdhY2PocyBhdXggZmljaGllcnMgY/R06SBzZXJ2ZXVyLiBTZXVsZXMgbGVzIHLpcG9uc2VzIDJ4eCBldCAzeHggc29udApjb25zaWTpcullcyB2YWxpZGVzLCBsZXMgYXV0cmVzICh5IGNvbXByaXMgbm9uLXLpcG9uc2VzKSBhYm91dGlzc2VudCDgIHVuCuljaGVjLiBMZSB0ZW1wcyBtYXhpbWFsIGltcGFydGkgcG91ciB1bmUgculwb25zZSBlc3Qg6WdhbCDgIGwnaW50ZXJ2YWxsZSBlbnRyZQpkZXV4IHRlc3RzIChwYXJhbeh0cmUgImludGVyIikuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBzcOljaWZpZXIgbCdvcHRpb24KImh0dHBjaGsiLCDpdmVudHVlbGxlbWVudCBzdWl2aWUgZCd1bmUgbel0aG9kZSBldCBkJ3VuZSBVUkkuIEwnb3B0aW9uICJodHRwY2hrIgphY2NlcHRlIGRvbmMgNCBmb3JtZXMgOgogIC0gb3B0aW9uIGh0dHBjaGsgICAgICAgICAgICAgICAtPiBPUFRJT05TIC8gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIFVSSSAgICAgICAgICAgLT4gT1BUSU9OUyA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgICAgICAtPiA8TUVUSD4gPFVSST4gSFRUUC8xLjAKICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJIFZFUiAgLT4gPE1FVEg+IDxVUkk+IDxWRVI+ClZvaXIgbGVzIGV4ZW1wbGVzIGNpLWFwcuhzLiAgICAgICAgCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6WZpbmlyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzLAp1dGlsaXPpcyB1bmlxdWVtZW50IGxvcnNxdSdhdWN1biBkZXMgYXV0cmVzIHNlcnZldXJzIG5lIGZvbmN0aW9ubmUuIFBvdXIgY2VsYSwKYWpvdXRlciBsZSBtb3QgY2zpICJiYWNrdXAiIHN1ciBsYSBsaWduZSBkZSBk6WZpbml0aW9uIGR1IHNlcnZldXIuIFVuIHNlcnZldXIKZGUgc2Vjb3VycyBuJ2VzdCBhcHBlbOkgcXVlIGxvcnNxdWUgdG91cyBsZXMgc2VydmV1cnMgbm9ybWF1eCwgYWluc2kgcXVlIHRvdXMKbGVzIHNlcnZldXJzIGRlIHNlY291cnMgcXVpIGxlIHBy6WPoZGVudCBzb250IGhvcnMgZCd1c2FnZS4gSWwgbid5IGEgZG9uYyBwYXMKZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHBhciBk6WZhdXQuIEEgcGFydGlyCmRlIGxhIHZlcnNpb24gMS4yLjksIGlsIGVzdCBwb3NzaWJsZSBkZSBsZXMgdXRpbGlzZXIgc2ltdWx0YW7pbWVudCBncuJjZSDgCmwnb3B0aW9uICdhbGxiYWNrdXBzJy4gQ2UgdHlwZSBkZSBzZXJ2ZXVycyBwZXV0IHNlcnZpciDgIHJldG91cm5lciBkZXMgcGFnZXMKZCdpbmRpc3BvbmliaWxpdOkgZGUgc2VydmljZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBwculm6XJhYmxlIGRlIG5lIHBhcyBhZmZlY3RlcgpkZSBjb29raWUsIGFmaW4gcXVlIGxlcyBjbGllbnRzIHF1aSBsZSByZW5jb250cmVudCBuJ3kgc29pZW50IHBhcyBhZmZlY3Tpcwpk6WZpbml0aXZlbWVudC4gTGUgZmFpdCBkZSBuZSBwYXMgbWV0dHJlIGRlIGNvb2tpZSBlbnZvaWUgdW4gY29va2llIHZpZGUsIGNlCnF1aSBhIHBvdXIgZWZmZXQgZGUgc3VwcHJpbWVyIHVuIOl2ZW50dWVsIGNvb2tpZSBhZmZlY3TpIHBy6WPpZGVtbWVudC4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yMiwgaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQKdmVycyB1biBwb3J0IGRpZmbpcmVudCBkZSBjZWx1aSBkZSBzZXJ2aWNlLiBDJ2VzdCBu6WNlc3NhaXJlIHByaW5jaXBhbGVtZW50CnBvdXIgbGVzIGNvbmZpZ3VyYXRpb25zIG/5IGxlIHNlcnZldXIgbidhIHBhcyBkZSBwb3J0IHBy6WTpZmluaSwgcGFyIGV4ZW1wbGUKbG9yc3F1J2lsIGVzdCBk6WR1aXQgZHUgcG9ydCBkJ2FjY2VwdGF0aW9uIGRlIGxhIGNvbm5leGlvbi4gUG91ciBjZWxhLCB1dGlsaXNlcgpsZSBwYXJhbeh0cmUgJ3BvcnQnIHN1aXZpIGR1IG51belybyBkZSBwb3J0IGRldmFudCBy6XBvbmRyZSBhdXggcmVxdep0ZXMuCgpFbmZpbiwgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgdmlzdWFsaXNlciByYXBpZGVtZW50Cmwn6XRhdCBjb3VyYW50IGRlIHRvdXMgbGVzIHNlcnZldXJzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkJ2Vudm95ZXIgdW4gc2lnbmFsClNJR0hVUCBhdSBwcm9jZXNzdXMgcHJveHkuIEwn6XRhdCBkZSB0b3VzIGxlcyBzZXJ2ZXVycyBkZSB0b3VzIGxlcyBwcm94aWVzIGVzdAplbnZveekgZGFucyBsZXMgbG9ncyBlbiBuaXZlYXUgIm5vdGljZSIsIGFpbnNpIHF1ZSBzdXIgbGEgc29ydGllIGQnZXJyZXVycyBzaQplbGxlIGVzdCBhY3RpdmUuIEMnZXN0IHVuZSBib25uZSByYWlzb24gcG91ciBhdm9pciBhdSBtb2lucyB1biBzZXJ2ZXVyIGRlIGxvZ3MKbG9jYWwgZW4gbml2ZWF1IG5vdGljZS4KCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xOCAoZXQgMS4yLjEpLCB1biBtZXNzYWdlIGQndXJnZW5jZSBlc3QgZW52b3npIGRhbnMgbGVzCmxvZ3MgZW4gbml2ZWF1ICdlbWVyZycgc2kgdG91cyBsZXMgc2VydmV1cnMgZCd1bmUgbeptZSBpbnN0YW5jZSBzb250IHRvbWLpcywKYWZpbiBkZSBub3RpZmllciBsJ2FkbWluaXN0cmF0ZXVyIHF1J2lsIGZhdXQgcHJlbmRyZSB1bmUgYWN0aW9uIGltbelkaWF0ZS4KCkRlcHVpcyBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zLCBwbHVzaWV1cnMgc2VydmV1cnMgcGV1dmVudCBwYXJ0YWdlciBsYQpt6m1lIHZhbGV1ciBkZSBjb29raWUuIEMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gbW9kZSBiYWNrdXAsIHBvdXIKc+lsZWN0aW9ubmVyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzIHBvdXIgdW4gc2VydmV1ciBkb25u6SwgcG91ciBtZXR0cmUgZW4Kb2V1dnJlIGwnYXJy6nQgZW4gZG91Y2V1ciBkJ3VuIHNlcnZldXIsIG91IHBvdXIgZGlyaWdlciBsZXMgY2xpZW50cwp0ZW1wb3JhaXJlbWVudCB2ZXJzIHVuZSBwYWdlIGQnZXJyZXVyIGVuIGF0dGVuZGFudCBsZSByZWTpbWFycmFnZSBkJ3VuZQphcHBsaWNhdGlvbi4gTGUgcHJpbmNpcGUgZXN0IHF1ZSBsb3JzcXUndW4gc2VydmV1ciBlc3QgZOl0ZWN06SBjb21tZSBpbm9w6XJhbnQsCmxlIHByb3h5IGNoZXJjaGVyYSBsZSBwcm9jaGFpbiBzZXJ2ZXVyIHBvc3PpZGFudCBsYSBt6m1lIHZhbGV1ciBkZSBjb29raWUgcG91cgpjaGFxdWUgY2xpZW50IHF1aSBsZSBkZW1hbmRlcmEuIFMnaWwgbmUgdHJvdXZlIHBhcyBkZSBzZXJ2ZXVyIG5vcm1hbCwgYWxvcnMgaWwKbGUgY2hlcmNoZXJhIHBhcm1pIGxlcyBzZXJ2ZXVycyBkZSBiYWNrdXAuIENvbnN1bHRlciBsZSBndWlkZSBkJ2FyY2hpdGVjdHVyZQpwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KIyBjb25mIGR1IHBhcmFncmFwaGUgMykgYXZlYyBzdXJ2ZWlsbGFuY2UgVENQCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvIEhUVFAvMS4wJwogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIG3qbWUgcXVlIHBy6WPpZGVtbWVudCBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnT1BUSU9OUyAvaW5kZXguaHRtbCBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayAvaW5kZXguaHRtbAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBpZGVtIGF2ZWMgc3VydmVpbGxhbmNlIEhUVFAgcGFyICdIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6IHd3dycKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoayBIRUFEIC9pbmRleC5qc3A/IEhUVFAvMS4xXHJcbkhvc3Q6XCB3d3cKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgculwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZSBiYXPpZSBzdXIgbGUgcHLpZml4ZSBkZSBjb29raWUsIGV0IGFycup0IGVuCiMgZG91Y2V1ciB1dGlsaXNhbnQgdW4gc2Vjb25kIHBvcnQgKDgxKSBqdXN0ZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICBzZXJ2ZXIgd2ViMS1ub3JtIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMi1ub3JtIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiBjaGVjayBwb3J0IDgxCiAgICAgICBzZXJ2ZXIgd2ViMS1zdG9wIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjayBwb3J0IDgwIGJhY2t1cAogICAgICAgc2VydmVyIHdlYjItc3RvcCAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MCBiYWNrdXAKCiMgSW5zZXJ0aW9uIGF1dG9tYXRpcXVlIGRlIGNvb2tpZSBkYW5zIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgZXQgc3VwcHJlc3Npb24KIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUsIHRvdXQgZW4gaW5kaXF1YW50IGF1eCBjYWNoZXMgZGUgbmUgcGFzIGdhcmRlcgojIGNlIGNvb2tpZS4KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgojIGlkZW0gYXZlYyBzZXJ2ZXVyIGFwcGxpY2F0aWYgZGUgc2Vjb3VycyBzdXIgYXV0cmUgc2l0ZSwgZXQgc2VydmV1ciBkZSBwYWdlcyBkJ2VycmV1cnMKICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjAzIGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKIyByZWxheWFnZSBTTVRQK1RMUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDoyNSw6NTg3CiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDI1IGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgVXRpbGlzYXRpb24gZCd1biBncm91cGUgZGUgc2VydmV1cnMgcG91ciBsZSBiYWNrdXAgKG7pY2Vzc2l0ZSBoYXByb3h5IDEuMi45KQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIGluc3QxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIGNoZWNrCiAgICAgICAgc2VydmVyIGJhY2sxIDE5Mi4xNjguMS4xMDo4MCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgYmFjazIgMTkyLjE2OC4xLjExOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIG9wdGlvbiBhbGxiYWNrdXBzICAjIGFsbCBiYWNrdXBzIHdpbGwgYmUgdXNlZAoKCjMuMikgUmVjb25uZXhpb24gdmVycyB1biBy6XBhcnRpdGV1ciBlbiBjYXMgZCfpY2hlYyBkaXJlY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIHNpIHVuIHNlcnZldXIgZOlmaW5pIHBhciB1biBjb29raWUgbmUgculwb25kIHBsdXMsIGxlcyBjbGllbnRzCnNlcm9udCBk6WZpbml0aXZlbWVudCBhaWd1aWxs6XMgZGVzc3VzIOAgY2F1c2UgZGUgbGV1ciBjb29raWUsIGV0IGRlIGNlIGZhaXQsCmTpZmluaXRpdmVtZW50IHByaXbpcyBkZSBzZXJ2aWNlLiBMYSBzcOljaWZpY2F0aW9uIGR1IHBhcmFt6HRyZSAncmVkaXNwYXRjaCcKYXV0b3Jpc2UgZGFucyBjZSBjYXMg4CByZW52b3llciBsZXMgY29ubmV4aW9ucyDpY2hvdellcyB2ZXJzIGxlIHLpcGFydGl0ZXVyCihleHRlcm5lIG91IGludGVybmUpIGFmaW4gZCdhc3NpZ25lciB1biBub3V2ZWF1IHNlcnZldXIg4CBjZXMgY2xpZW50cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgcmVmdXMgZGUgY29ubmV4aW9uLgoKUGFyIGTpZmF1dCAoZXQgZGFucyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzKSwgbGUgcGFyYW3odHJlCnJlZGlzcGF0Y2ggbmUgcydhcHBsaXF1ZSBxdSdhdXgg6WNoZWNzIGRlIGNvbm5leGlvbiBhdSBzZXJ2ZXVyLiBEZXB1aXMgbGEKdmVyc2lvbiAxLjEuMTcsIGlsIHMnYXBwbGlxdWUgYXVzc2kgYXV4IGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgZGVzIHNlcnZldXJzCmlkZW50aWZp6XMgY29tbWUgaG9ycyBkJ3VzYWdlIHBhciBsYSBzdXJ2ZWlsbGFuY2UuIFNpIGwnb24gc291aGFpdGUgbWFsZ3LpCnRvdXQgcXUndW4gY2xpZW50IGRpc3Bvc2FudCBkJ3VuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBk6WZlY3R1ZXV4CnRlbnRlIGRlIHMneSBjb25uZWN0ZXIsIGlsIGZhdXQgcHLpY2lzZXIgbCdvcHRpb24gInBlcnNpc3QiIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIHBlcnNpc3QKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgc2VydmV1ciBIUy4KCgo0KSBGb25jdGlvbm5hbGl06XMgYWRkaXRpb25uZWxsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpEJ2F1dHJlcyBmb25jdGlvbm5hbGl06XMgZCd1c2FnZSBtb2lucyBjb3VyYW50IHNvbnQgZGlzcG9uaWJsZXMuIElsIHMnYWdpdApwcmluY2lwYWxlbWVudCBkdSBtb2RlIHRyYW5zcGFyZW50LCBkZSBsYSBqb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucywgZXQgZGUKbGEgcunpY3JpdHVyZSBkZXMgZW4tdOp0ZXMuCgo0LjEpIEZvbmN0aW9ubmFsaXTpcyBy6XNlYXUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMS4xKSBGb25jdGlvbm5lbWVudCBlbiBtb2RlIHRyYW5zcGFyZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGxlIG1vdCBjbOkgJ3RyYW5zcGFyZW50JyBwZXJtZXQgZCdpbnRlcmNlcHRlciBkZXMgc2Vzc2lvbnMKcm91dOllcyDgIHRyYXZlcnMgbGEgbWFjaGluZSBo6WJlcmdlYW50IGxlIHByb3h5LiBEYW5zIGNlIG1vZGUsIG9uIG5lIHBy6WNpc2UKcGFzIGwnYWRyZXNzZSBkZSBy6XBhcnRpdGlvbiAnZGlzcGF0Y2gnLCBjYXIgY2VsbGUtY2kgZXN0IHRpcullIGRlIGwnYWRyZXNzZQpkZXN0aW5hdGlvbiBkZSBsYSBzZXNzaW9uIGTpdG91cm7pZS4gTGUgc3lzdOhtZSBkb2l0IHBlcm1ldHRyZSBkZSByZWRpcmlnZXIgbGVzCnBhcXVldHMgdmVycyB1biBwcm9jZXNzdXMgbG9jYWwuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgdHJhbnNwYXJlbnQKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpTaSBsZSBwb3J0IG4nZXN0IHBhcyBzcOljaWZp6SBzdXIgbGUgc2VydmV1ciwgYydlc3QgbGUgcG9ydCBhdXF1ZWwgcydlc3QKYWRyZXNz6SBsZSBjbGllbnQgcXVpIHNlcmEgdXRpbGlz6S4gQ2VsYSBwZXJtZXQgZGUgcmVsYXllciB0b3VzIGxlcyBwb3J0cyBUQ1AKZCd1bmUgbeptZSBhZHJlc3NlIGF2ZWMgdW5lIG3qbWUgaW5zdGFuY2UgZXQgc2FucyB1dGlsaXNlciBkaXJlY3RlbWVudCBsZSBtb2RlCnRyYW5zcGFyZW50LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMDAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjIgY2hlY2sgcG9ydCA2MDAwMAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKCgo0LjEuMikgQ2hvaXggZCd1bmUgYWRyZXNzZSBzb3VyY2UgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgaWwgZGV2aWVudCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW5lIGFkcmVzc2UKSVAgc291cmNlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1ci4gQydlc3QgdXRpbGUgcG91ciBqb2luZHJlIGRlcyBzZXJ2ZXVycyBkZQpiYWNrdXAg4CBwYXJ0aXIgZCd1biBMQU4gZGlmZulyZW50LCBvdSBwb3VyIHV0aWxpc2VyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzCnBvdXIgam9pbmRyZSBsZSBt6m1lIHNlcnZldXIuIEMnZXN0IOlnYWxlbWVudCB1dGlsaXNhYmxlIHBvdXIgZmFjaWxpdGVyIHVuZQpy6XBhcnRpdGlvbiBkZSBjaGFyZ2Ugc2Vsb24gbCdhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGRlcyBjb25uZXhpb25zIHNvcnRhbnRlcy4KQmllbiBlbnRlbmR1LCBsYSBt6m1lIGFkcmVzc2UgZXN0IHV0aWxpc+llIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgbGVzIDIgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xMwoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjEuMQogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMi4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmYWlyZSB1bmUgculwYXJ0aXRpb24gZCdhZHJlc3NlIHNvdXJjZXMgcG91ciBqb2luZHJlIGxlIG3qbWUgcHJveHkg4AogICAgIyB0cmF2ZXJzIGRldXggbGllbnMgV0FOIAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MSAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjIuMQogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkyIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMy4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZvcmNlciB1bmUgY29ubmV4aW9uIFRDUCDgIHMnYXR0YWNoZXIg4CB1biBwb3J0IHBhcnRpY3VsaWVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjIwMDAKICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCgo0LjEuMykgTWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgKGtlZXAtYWxpdmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi43LCBpbCBkZXZpZW50IHBvc3NpYmxlIGQnYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uClRDUCAoVENQIGtlZXAtYWxpdmUpIOAgbGEgZm9pcyBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIuIENlbGEgcGVybWV0CmQnZW1w6mNoZXIgZGVzIHNlc3Npb25zIGxvbmd1ZXMgZCdleHBpcmVyIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQKZXh0ZXJuZXMgdGVscyBxdWUgZGVzIGZpcmV3YWxscyBvdSBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZS4gQ2VsYSBwZXJtZXQKYXVzc2kgYXUgc3lzdOhtZSBkZSBk6XRlY3RlciBldCB0ZXJtaW5lciBkZXMgc2Vzc2lvbnMgZmln6WVzIGxvcnNxdSdhdWN1bgp0aW1lLW91dCBuJ2Eg6XTpIHBvc2l0aW9ubukgKGZvcnRlbWVudCBk6WNvbnNlaWxs6SkuIExlIHByb3h5IG5lIHBldXQgcGFzCnBvc2l0aW9ubmVyIGwnaW50ZXJ2YWxsZSBlbnRyZSBsZXMgYW5ub25jZXMgbmkgbGUgbm9tYnJlIG1heGltYWwsIHZldWlsbGV6CnZvdXMgculm6XJlciBhdSBtYW51ZWwgZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBwb3VyIGNlbGEuIElsIGV4aXN0ZSAzIG9wdGlvbnMKcG91ciBhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24gVENQIDoKCglvcHRpb24gdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIKCW9wdGlvbiBjbGl0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50CglvcHRpb24gc3J2dGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIHNlcnZldXIKCgo0LjIpIEpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkwndW4gZGVzIHBvaW50cyBmb3J0cyBkZSBIQVByb3h5IGVzdCBpbmTpbmlhYmxlbWVudCBsYSBwculjaXNpb24gZGUgc2VzIGxvZ3MuCklsIGZvdXJuaXQgcHJvYmFibGVtZW50IGxlIHBsdXMgZmluIG5pdmVhdSBkJ2luZm9ybWF0aW9uIGRpc3BvbmlibGUgcG91ciB1bgp0ZWwgb3V0aWwsIGNlIHF1aSBlc3QgdHLocyBpbXBvcnRhbnQgcG91ciBsZXMgZGlhZ25vc3RpY3MgZW4gZW52aXJvbm5lbWVudHMKY29tcGxleGVzLiBFbiBzdGFuZGFyZCwgbGVzIGluZm9ybWF0aW9ucyBqb3VybmFsaXPpZXMgaW5jbHVlbnQgbGUgcG9ydCBjbGllbnQsCmxlcyBjaHJvbm9t6XRyYWdlcyBkZXMg6XRhdHMgVENQL0hUVFAsIGRlcyDpdGF0cyBkZSBzZXNzaW9uIHBy6WNpcyBhdSBtb21lbnQgZGUKbGEgdGVybWluYWlzb24gZXQgc2EgY2F1c2UsIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlcyBk6WNpc2lvbnMgZCdhaWd1aWxsYWdlIGR1CnRyYWZpYyB2ZXJzIHVuIHNlcnZldXIsIGV0IGJpZW4gc/tyIGxhIHBvc3NpYmlsaXTpIGRlIGNhcHR1cmVyIGRlcyBlbi106nRlcwphcmJpdHJhaXJlcy4KCkRhbnMgbGUgYnV0IGQnYW3pbGlvcmVyIGxhIHLpYWN0aXZpdOkgZGVzIGFkbWluaXN0cmF0ZXVycywgaWwgb2ZmcmUgdW5lIGdyYW5kZQp0cmFuc3BhcmVuY2Ugc3VyIGxlcyBwcm9ibOhtZXMgcmVuY29udHLpcywg4CBsYSBmb2lzIGludGVybmVzIGV0IGV4dGVybmVzLCBldAppbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyBsb2dzIHZlcnMgZGVzIHNlcnZldXJzIGRpZmbpcmVudHMgZW4gbeptZSB0ZW1wcwphdmVjIGRlcyBuaXZlYXV4IGRlIGZpbHRyYWdlIGRpZmbpcmVudHMgOgoKICAtIGxvZ3MgZ2xvYmF1eCBhdSBuaXZlYXUgcHJvY2Vzc3VzIChlcnJldXJzIHN5c3TobWUsIGFycup0cy9k6W1hcnJhZ2VzLCAuLi4pCiAgLSBlcnJldXJzIHN5c3TobWUgZXQgaW50ZXJuZXMgcGFyIGluc3RhbmNlIChtYW5xdWUgZGUgcmVzc291cmNlcywgYnVncywgLi4uKQogIC0gcHJvYmzobWVzIGV4dGVybmVzIHBhciBpbnN0YW5jZSAoYXJy6nRzL3JlbGFuY2Ugc2VydmV1cnMsIGxpbWl0ZXMsIC4uLikKICAtIGFjdGl2aXTpIHBhciBpbnN0YW5jZSAoY29ubmV4aW9ucyBjbGllbnRzKSwgYXVzc2kgYmllbiBsb3JzIGRlIGxldXIKICAgIOl0YWJsaXNzZW1lbnQgcXUn4CBsZXVyIHRlcm1pbmFpc29uLgoKTGEgcG9zc2liaWxpdOkgZGUgZGlzdHJpYnVlciBkaWZm6XJlbnRzIG5pdmVhdXggZGUgbG9ncyDgIGRpZmbpcmVudHMgc2VydmV1cnMKcGVybWV0IOAgcGx1c2lldXJzIOlxdWlwZXMgZGUgcHJvZHVjdGlvbiBkJ2ludOlyYWdpciBldCBkZSBjb3JyaWdlciBsZXVycwpwcm9ibOhtZXMgbGUgcGx1cyB09HQgcG9zc2libGUuIFBhciBleGVtcGxlLCBsJ+lxdWlwZSBzeXN06G1lIHBldXQgc3VydmVpbGxlcgpvY2Nhc2lvbm5lbGxlbWVudCBsZXMgZXJyZXVycyBzeXN06G1lLCBwZW5kYW50IHF1ZSBsJ+lxdWlwZSBhcHBsaWNhdGlvbgpzdXJ2ZWlsbGUgbGVzIGFsZXJ0ZXMgZCdhcnLqdHMvZOltYXJyYWdlcyBkZSBzZXMgc2VydmV1cnMgZW4gdGVtcHMgcullbCwgZXQKcXVlIGwn6XF1aXBlIHPpY3VyaXTpIGFuYWx5c2UgbCdhY3Rpdml06SBlbiBkaWZm6XLpIGQndW5lIGhldXJlLgoKCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+IDxjYXTpZ29yaWVfMj4gW25pdmVhdV9tYXhfMl0Kb3UKICAgIGxvZyBnbG9iYWwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMYSBzeW50YXhlIHNw6WNpZmlxdWUgJ2xvZyBnbG9iYWwnIGluZGlxdWUgcXVlIGwnb24gc291aGFpdGUgdXRpbGlzZXIgbGVzCnBhcmFt6HRyZXMgZGUgam91cm5hbGlzYXRpb24gZOlmaW5pcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDEgbG9jYWw0Cgo0LjIuMikgRm9ybWF0IGRlcyBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyIGTpZmF1dCwgbGVzIGNvbm5leGlvbnMgc29udCBqb3VybmFsaXPpZXMgYXUgbml2ZWF1IFRDUCBk6HMgbCfpdGFibGlzc2VtZW50CmRlIGxhIHNlc3Npb24gZW50cmUgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4gRW4gcHLpY2lzYW50IGwnb3B0aW9uICd0Y3Bsb2cnLApsYSBjb25uZXhpb24gbmUgc2VyYSBqb3VybmFsaXPpZSBxdSdlbiBmaW4gZGUgc2Vzc2lvbiwgYWpvdXRhbnQgZGVzIHBy6WNpc2lvbnMKc3VyIHNvbiDpdGF0IGxvcnMgZGUgbGEgZOljb25uZXhpb24sIGFpbnNpIHF1ZSBsZSB0ZW1wcyBkZSBjb25uZXhpb24gZXQgbGEKZHVy6WUgdG90YWxlIGRlIGxhIHNlc3Npb24uCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIFRDUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiByZWxhaXMtdGNwIDAuMC4wLjA6ODAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgb3B0aW9uIHRjcGxvZwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC81MDA3IDAgLS0gMS8xCiAgCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICBFeGVtcGxlCiAgICAgIAogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAxMjcuMC4wLjE6MzQ1NTAKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy10Y3AKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICB0ZW1wc19jb25uZWN0ICcvJyB0ZW1wc190b3RhbCAgICAgICAgIDAvNTAwNwogICAgICAgIDcgIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDggIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgLS0KICAgICAgICA5ICBjb25uc19pbnN0YW5jZSAnLycgY29ubnNfcHJvY2Vzc3VzICAgIDEvMQoKVW5lIGF1dHJlIG9wdGlvbiwgJ2h0dHBsb2cnLCBmb3Vybml0IHBsdXMgZGUgZOl0YWlscyBzdXIgbGUgcHJvdG9jb2xlIEhUVFAsCm5vdGFtbWVudCBsYSByZXF16nRlIGV0IGwn6XRhdCBkZXMgY29va2llcy4gRGFucyBsZXMgY2FzIG/5IHVuIG3pY2FuaXNtZSBkZQpzdXJ2ZWlsbGFuY2UgZWZmZWN0dWFudCBkZXMgY29ubmV4aW9ucyBldCBk6WNvbm5leGlvbnMgZnLpcXVlbnRlcywgcG9sbHVlcmFpdApsZXMgbG9ncywgaWwgc3VmZml0IGQnYWpvdXRlciBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBwb3VyIG5lIHBsdXMgb2J0ZW5pciB1bmUKbGlnbmUgZGUgbG9nIHBvdXIgbGVzIHNlc3Npb25zIG4nYXlhbnQgcGFzIGRvbm7pIGxpZXUg4CB1biDpY2hhbmdlIGRlIGRvbm7pZXMKKHJlcXXqdGUgb3Ugculwb25zZSkuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIEhUVFAgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNDcvNzIzIDIwMCAyNDMgLSAtIC0tLS0gMy8zICJIRUFEIC8gSFRUUC8xLjAiCgpFeGVtcGxlIHBsdXMgY29tcGxldCA6CgogICAgaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDIwMi8yMDUge3cub2RzLm9yZ3xNb3ppbGxhfSB7fSAiSEVBRCAvIEhUVFAvMS4wIiAKCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICBFeGVtcGxlCiAgICAgIAogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAxMC4wLjAuMTozNDU1MgogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI2OjMxXQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLWh0dHAKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICBUcSAnLycgVGMgJy8nIFRyICcvJyBUdCAgICAgICAgICAgICAgIDMxODMvLTEvLTEvMTEyMTUKICAgICAgICA3ICBDb2RlX3JldG91cl9IVFRQICAgICAgICAgICAgICAgICAgICAgIDUwMwogICAgICAgIDggIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDkgIGNvb2tpZXNfcmVxdep0ZV9jYXB0dXLpcyAgICAgICAgICAgICAgLQogICAgICAgMTAgIGNvb2tpZXNfcmVwb25zZV9jYXB0dXLpcyAgICAgICAgICAgICAgLQogICAgICAgMTEgIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgU0MtLQogICAgICAgMTIgIGNvbm5zX2luc3RhbmNlICcvJyBjb25uc19wcm9jZXNzdXMgICAgMjAyLzIwNQogICAgICAgMTMgICd7JyBlbnRldGVzX3JlcXXqdGVfY2FwdHVy6XMgJ30nICAgICAge3cub2RzLm9yZ3xNb3ppbGxhfQogICAgICAgMTQgICd7JyBlbnRldGVzX3JlcG9uc2VfY2FwdHVy6XMgJ30nICAgICAge30KICAgICAgIDE1ICAnIicgcmVxdep0ZV9IVFRQICciJyAgICAgICAgICAgICAgICAgICJIRUFEIC8gSFRUUC8xLjAiCiAgCk5vdGUgcG91ciBsZXMgYW5hbHlzZXVycyBkZSBsb2dzIDogbCdVUkkgZXN0IFRPVUpPVVJTIGxlIGRlcm5pZXIgY2hhbXAgZGUgbGEgbGlnbmUsIGV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVuY2UgcGFyIHVuIGd1aWxsZW1ldCAnIicuCgpMZSBwcm9ibOhtZSBkZSBsb2d1ZXIgdW5pcXVlbWVudCBlbiBmaW4gZGUgc2Vzc2lvbiwgYydlc3QgcXUnaWwgZXN0IGltcG9zc2libGUKZGUgc2F2b2lyIGNlIHF1aSBzZSBwYXNzZSBkdXJhbnQgZGUgZ3JvcyB0cmFuc2ZlcnRzIG91IGRlcyBzZXNzaW9ucyBsb25ndWVzLgpQb3VyIHBhbGxpZXIg4CBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnbG9nYXNhcCcgYSDpdOkgaW50cm9kdWl0ZSBkYW5zCmxhIHZlcnNpb24gMS4xLjI4ICgxLjIuMSkuIExvcnNxdSdlbGxlIGVzdCBhY3RpdullLCBsZSBwcm94eSBsb2d1ZXJhIGxlIHBsdXMKdPR0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUganVzdGUgYXZhbnQgcXVlIG5lIGTpYnV0ZW50IGxlcyB0cmFuc2ZlcnRzIGRlCmRvbm7pZXMuIENlbGEgc2lnbmlmaWUsIGRhbnMgbGUgY2FzIGR1IFRDUCwgcXUnaWwgbG9ndWVyYSB0b3Vqb3VycyBsZSBy6XN1bHRhdApkZSBsYSBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBkYW5zIGxlIGNhcyBIVFRQLCBxdSdpbCBsb2d1ZXJhIGVuIGZpbiBkZQp0cmFpdGVtZW50IGRlcyBlbi106nRlcyBkZSBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGF1cXVlbCBjYXMgbGUgbm9tYnJlIGQnb2N0ZXRzCnJlcHLpc2VudGVyYSBsYSB0YWlsbGUgZGVzIGVuLXTqdGVzIHJldG91cm7pcyBhdSBjbGllbnQuCgpBZmluIGQn6XZpdGVyIHRvdXRlIGNvbmZ1c2lvbiBhdmVjIGxlcyBsb2dzIG5vcm1hdXgsIGxlIHRlbXBzIHRvdGFsIGRlCnRyYW5zZmVydCBldCBsZSBub21icmUgZCdvY3RldHMgdHJhbnNm6XLpcyBzb250IHBy6WZpeOlzIGQndW4gc2lnbmUgJysnCnJhcHBlbGFudCBxdWUgbGVzIHZhbGV1cnMgcullbGxlcyBzb250IGNlcnRhaW5lbWVudCBwbHVzIOlsZXbpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGxvZ2FzYXAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgoKCjQuMi4zKSBDaHJvbm9t6XRyYWdlIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBvdXIgZOljZWxlciBkZXMgcHJvYmzobWVzIHLpc2VhdSwgbGVzIG1lc3VyZXMgZHUgdGVtcHMg6WNvdWzpIGVudHJlIGNlcnRhaW5zCul26W5lbWVudHMgc29udCBkJ3VuZSB0cuhzIGdyYW5kZSB1dGlsaXTpLiBUb3VzIGxlcyB0ZW1wcyBzb250IG1lc3Vy6XMgZW4KbWlsbGlzZWNvbmRlcyAobXMpLiBFbiBtb2RlIEhUVFAsIHF1YXRyZSBwb2ludHMgZGUgbWVzdXJlIHNvbnQgcmFwcG9ydOlzIHNvdXMKbGEgZm9ybWUgVHEvVGMvVHIvVHQgOgoKICAtIFRxOiB0ZW1wcyB0b3RhbCBkZSBy6WNlcHRpb24gZGUgbGEgcmVxdep0ZSBIVFRQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgogICAgQydlc3QgbGUgdGVtcHMgcXVpIHMnZXN0IOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb/kgbGUgY2xpZW50IGEg6XRhYmxpCiAgICBzYSBjb25uZXhpb24gdmVycyBsZSByZWxhaXMsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGEgcmXndSBsZSBkZXJuaWVyCiAgICBlbi106nRlIEhUVFAgdmFsaWRhbnQgbGEgZmluIGRlIGxhIHJlcXXqdGUuIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZQogICAgcXVlIGxhIHJlcXXqdGUgY29tcGzodGUgbidhIGphbWFpcyDpdOkgcmXndWUuCgogIC0gVGM6IHRlbXBzIGQn6XRhYmxpc3NlbWVudCBkZSBsYSBjb25uZXhpb24gVENQIGR1IHJlbGFpcyB2ZXJzIGxlIHNlcnZldXIuCiAgICBDJ2VzdCBsZSB0ZW1wcyDpY291bOkgZW50cmUgbGUgbW9tZW50IG91IGxlIHJlbGFpcyBhIGluaXRp6SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBsJ2EgYWNxdWl0dOllLCBjJ2VzdAogICAg4CBkaXJlIGxlIHRlbXBzIGVudHJlIGwnZW52b2kgZHUgcGFxdWV0IFRDUCBTWU4gbGEgculjZXB0aW9uIGR1IFNZTi9BQ0suCiAgICBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUgcXVlIGxhIGNvbm5leGlvbiBuJ2EgamFtYWlzIHB1IOp0cmUg6XRhYmxpZQogICAgdmVycyBsZSBzZXJ2ZXVyLgoKICAtIFRyOiB0ZW1wcyBkZSBy6XBvbnNlIGR1IHNlcnZldXIuIEMnZXN0IGxlIHRlbXBzIHF1ZSBsZSBzZXJ2ZXVyIGEgbWlzIHBvdXIKICAgIHJlbnZveWVyIGxhIHRvdGFsaXTpIGRlcyBlbi106nRlcyBIVFRQIOAgcGFydGlyIGR1IG1vbWVudCBv+SBpbCBhIGFjcXVpdHTpCiAgICBsYSBjb25uZXhpb24uIENhIHJlcHLpc2VudGUgZXhhY3RlbWVudCBsZSB0ZW1wcyBkZSB0cmFpdGVtZW50IGRlIGxhCiAgICB0cmFuc2FjdGlvbiBzYW5zIGxlIHRyYW5zZmVydCBkZXMgZG9ubullcyBhc3NvY2npZXMuIFVuZSB2YWxldXIgJy0xJwogICAgaW5kaXF1ZSBxdWUgbGUgc2VydmV1ciBuJ2EgcGFzIGVudm956SBsYSB0b3RhbGl06SBkZSBsJ2VuLXTqdGUgSFRUUC4KCiAgLSBUdDogZHVy6WUgZGUgdmllIHRvdGFsZSBkZSBsYSBzZXNzaW9uLCBlbnRyZSBsZSBtb21lbnQgb/kgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIGR1IGNsaWVudCBhIOl06SBhY3F1aXR06WUgZXQgbGUgbW9tZW50IG/5IGxhIGNvbm5leGlvbiBhIOl06QogICAgcmVmZXJt6WUgYXV4IGRldXggZXh0cultaXTpcyAoY2xpZW50IGV0IHNlcnZldXIpLiBMYSBzaWduaWZpY2F0aW9uIGNoYW5nZQogICAgdW4gcGV1IHNpIGwnb3B0aW9uICdsb2dhc2FwJyBlc3QgcHLpc2VudGUuIERhbnMgY2UgY2FzLCBsZSB0ZW1wcyBjb3JyZXNwb25kCiAgICB1bmlxdWVtZW50IOAgKFRxICsgVGMgKyBUciksIGV0IHNlIHRyb3V2ZSBwculmaXjpIGQndW4gc2lnbmUgJysnLiBPbiBwZXV0CiAgICBkb25jIGTpZHVpcmUgVGQsIGxlIHRlbXBzIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcywgZW4gZXhjbHVhbnQgbGVzIGF1dHJlcwogICAgdGVtcHMgOgoKICAgICAgICBUZCA9IFR0IC0gKFRxICsgVGMgKyBUcikKCiAgICBMZXMgdGVtcHMgcmFwcG9ydOlzIOAgJy0xJyBzb250IHNpbXBsZW1lbnQg4CDpbGltaW5lciBkZSBjZXR0ZSDpcXVhdGlvbi4KCkVuIG1vZGUgVENQICgnb3B0aW9uIHRjcGxvZycpLCBzZXVscyBsZXMgZGV1eCBpbmRpY2F0ZXVycyBUYyBldCBUdCBzb250CnJhcHBvcnTpcy4KCkNlcyB0ZW1wcyBmb3Vybmlzc2VudCBkZSBwculjaWV1eCByZW5zZWlnbmVtZW50IHN1ciBkZXMgY2F1c2VzIHByb2JhYmxlcyBkZQpwcm9ibOhtZXMuIER1IGZhaXQgcXVlIGxlIHByb3RvY29sZSBUQ1AgZOlmaW5pc3NlIGRlcyB0ZW1wcyBkZSByZXRyYW5zbWlzc2lvbgpkZSAzIHNlY29uZGVzLCBwdWlzIDYsIDEyLCBldGMuLi4sIGwnb2JzZXJ2YXRpb24gZGUgdGVtcHMgcHJvY2hlcyBkZSBtdWx0aXBsZXMKZGUgMyBzZWNvbmRlcyBpbmRpcXVlIHByYXRpcXVlbWVudCB0b3Vqb3VycyBkZXMgcGVydGVzIGRlIHBhcXVldHMgbGnpcyDgIHVuCnByb2Js6G1lIHLpc2VhdSAoY+JibGUgb3Ugbulnb2NpYXRpb24pLiBEZSBwbHVzLCBzaSA8VHQ+IGVzdCBwcm9jaGUgZCd1bmUKdmFsZXVyIGRlIHRpbWUtb3V0IGRhbnMgbGEgY29uZmlndXJhdGlvbiwgYydlc3Qgc291dmVudCBxdSd1bmUgc2Vzc2lvbiBhIOl06QphYmFuZG9ubullIHN1ciBleHBpcmF0aW9uIGQndW4gdGltZS1vdXQuCgpDYXMgbGVzIHBsdXMgZnLpcXVlbnRzIDoKCiAgLSBTaSBUcSBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4KICAtIFNpIFRjIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSByZWxhaXMgZXQgbGUgc2VydmV1ciBkdXJhbnQgbGEgcGhhc2UgZGUgY29ubmV4aW9uLiBDZXQgaW5kaWNhdGV1cgogICAgZGV2cmFpdCBub3JtYWxlbWVudCB0b3Vqb3VycyDqdHJlIHRy6HMgYmFzIChtb2lucyBkZSBxdWVscXVlcyBkaXphaW5lcykuCiAgLSBTaSBUciBlc3QgcHJlc3F1ZSB0b3Vqb3VycyBpbmbpcmlldXIg4CAzMDAwLCBldCBxdWUgY2VydGFpbmVzIHZhbGV1cnMKICAgIHNlbWJsZW50IHByb2NoZXMgZGUgbGEgdmFsZXVyIG1veWVubmUgbWFqb3LpZSBkZSAzMDAwLCBpbCB5IGEgcGV1dC3qdHJlCiAgICBkZSBwZXJ0ZXMgZW50cmUgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIuCiAgLSBTaSBUdCBlc3QgbOln6HJlbWVudCBzdXDpcmlldXIgYXUgdGltZS1vdXQsIGMnZXN0IHNvdXZlbnQgcGFyY2UgcXVlIGxlCiAgICBjbGllbnQgZXQgbGUgc2VydmV1ciB1dGlsaXNlbnQgZHUga2VlcC1hbGl2ZSBIVFRQIGVudHJlIGV1eCBldCBxdWUgbGEKICAgIHNlc3Npb24gZXN0IG1haW50ZW51ZSBhcHLocyBsYSBmaW4gZGVzIOljaGFuZ2VzLiBWb2lyIHBsdXMgbG9pbiBwb3VyCiAgICBzYXZvaXIgY29tbWVudCBk6XNhY3RpdmVyIGxlIGtlZXAtYWxpdmUgSFRUUC4KCkF1dHJlcyBjYXMgKCd4eCcgcmVwculzZW50YW50IHVuZSB2YWxldXIgcXVlbGNvbnF1ZSDgIGlnbm9yZXIpIDoKICAgIC0xL3h4L3h4L1R0IDogbGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpIG91CiAgICAgICAgICAgICAgICAgIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gc2FucyBjb21wbOl0ZXIgbGEgcmVxdep0ZS4KICAgIFRxLy0xL3h4L1R0IDogbGEgY29ubmV4aW9uIG4nYSBwYXMgcHUgcyfpdGFibGlyIHZlcnMgbGUgc2VydmV1ciAocmVmdXMgb3UKICAgICAgICAgICAgICAgICAgdGltZS1vdXQgYXUgYm91dCBkZSBUdC1UcSBtcykuCiAgICBUcS9UYy8tMS9UdCA6IGxlIHNlcnZldXIgYSBhY2NlcHTpIGxhIGNvbm5leGlvbiBtYWlzIG4nYSBwYXMgculwb25kdSBkYW5zCiAgICAgICAgICAgICAgICAgIGxlcyB0ZW1wcyBvdSBiaWVuIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gdHJvcCB09HQsIGF1IGJvdXQKICAgICAgICAgICAgICAgICAgZGUgVHQtKFRxK1RjKSBtcy4KICAgICAKNC4yLjQpIENvbmRpdGlvbnMgZGUgZOljb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGxvZ3MgVENQIGV0IEhUVFAgZm91cm5pc3NlbnQgdW4gaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGRlIGxhIHNlc3Npb24gZGFucwpsZSBjaGFtcCAnZXRhdF90ZXJtaW5haXNvbicsIGp1c3RlIGF2YW50IGxlIG5vbWJyZSBkZSBjb25uZXhpb25zIGFjdGl2ZXMuIEMnZXN0CnVuIGNoYW1wIGxvbmcgZGUgMiBjYXJhY3TocmVzIGVuIFRDUCBldCBkZSA0IGNhcmFjdOhyZXMgZW4gSFRUUCwgY2hhY3VuIGF5YW50CnVuZSBzaWduaWZpY2F0aW9uIHBy6WNpc2UgOgoKICAtIHN1ciBsZSBwcmVtaWVyIGNhcmFjdOhyZSwgdW4gY29kZSBwculjaXNhbnQgbGUgcHJlbWllciDpduluZW1lbnQgcXVpIGEgY2F1c+kKICAgIGxhIHRlcm1pbmFpc29uIGRlIGxhIHNlc3Npb24gOgoKICAgICAgICBDIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBjbGllbnQuCgogICAgICAgIFMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91CiAgICAgICAgICAgIHJlZnVzIGV4cGxpY2l0ZSBkZSBjb25uZXhpb24gZGUgbGEgcGFydCBkZSBjZSBkZXJuaWVyLgoKICAgICAgICBQIDogdGVybWluYWlzb24gcHLpbWF0dXLpZSBkZXMgc2Vzc2lvbnMgcGFyIGxlIHByb3h5LCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGQnaW1wb3NpdGlvbiBkJ3VuZSBsaW1pdGUgc3VyIGxlIG5vbWJyZSBkZSBjb25uZXhpb25zLCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGRlIGNvbmZpZ3VyYXRpb24gKGV4OiBmaWx0cmUgZCdVUkwpLCBvdSBwYXJjZSBxdSd1biBjb250cvRsZSBkZQogICAgICAgICAgICBz6WN1cml06SBhIGTpdGVjdOkgZXQgYmxvcXXpIHVuZSBhbm9tYWxpZSBkYW5zIGxhIHLpcG9uc2UgZHUKICAgICAgICAgICAgc2VydmV1ciBxdWkgYXVyYWl0IHB1IGNhdXNlciB1bmUgZnVpdGUgZCdpbmZvcm1hdGlvbnMgKHBhciBleGVtcGxlLAogICAgICAgICAgICB1biBjb29raWUgY2FjaGFibGUpLgoKICAgICAgICBSIDogdW5lIHJlc3NvdXJjZSBzdXIgbGUgcHJveHkgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMKICAgICAgICAgICAgc291cmNlLCAuLi4pLiBH6W7pcmFsZW1lbnQsIGNlbGEgYXJyaXZlIGF1IGNvdXJzIGRlIGwn6XRhYmxpc3NlbWVudAogICAgICAgICAgICBkJ3VuZSBjb25uZXhpb24sIGV0IGxlcyBsb2dzIHN5c3TobWUgZG9pdmVudCBjb250ZW5pciB1bmUgY29waWUgZGUKICAgICAgICAgICAgbCfpcnJldXIgcHLpY2lzZS4KCiAgICAgICAgSSA6IHVuZSBlcnJldXIgaW50ZXJuZSBhIOl06SBpZGVudGlmaellIHBhciBsZSBwcm94eSDgIGxhIHN1aXRlIGQndW4KICAgICAgICAgICAgYXV0by1jb250cvRsZS4gQ2VjaSBuZSBkb2l0IEpBTUFJUyBhcnJpdmVyLCBldCB2b3VzIOp0ZXMgZW5jb3VyYWfpcwogICAgICAgICAgICDgIHJlbW9udGVyIG4naW1wb3J0ZSBxdWVsIGxvZyBjb250ZW5hbnQgY2VjaSBjYXIgaWwgcydhZ2lyYSB1biBidWcuCgogICAgICAgIGMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBjbGllbnQgYSBleHBpcukgKGNsaXRpbWVvdXQpLgoKICAgICAgICBzIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgc2VydmV1ciBhIGV4cGly6SAoc3J2dGltZW91dCBldCBjb250aW1lb3V0KQoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSBkZSBzZXNzaW9uLgoKICAtIHN1ciBsZSBzZWNvbmQgY2FyYWN06HJlLCBsJ+l0YXQgZCdhdmFuY2VtZW50IGRlIGxhIHNlc3Npb24gVENQL0hUVFAgbG9ycyBkZQogICAgbGEgZmVybWV0dXJlIDoKCiAgICAgICAgUiA6IGF0dGVudGUgZCd1bmUgUkVRVUVURSBIVFRQIGNvbXBs6HRlIGRlIGxhIHBhcnQgZHUgY2xpZW50LiBSaWVuIG4nYQogICAgICAgICAgICDpdOkgdHJhbnNtaXMgYXUgc2VydmV1ci4KCiAgICAgICAgQyA6IGF0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIENPTk5FWElPTiB2ZXJzIGxlIHNlcnZldXIuIExlCiAgICAgICAgICAgIHNlcnZldXIgcGV1dCBhdSBwbHVzIGF2b2lyIHZ1IGxhIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24sIG1haXMKICAgICAgICAgICAgYXVjdW5lIGRvbm7pZSBuJ2Eg6XTpIOljaGFuZ+llLgoKICAgICAgICBIIDogYXR0ZW50ZSwgculjZXB0aW9uIG91IHRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIEhUVFAgKCJIRUFERVJTIikuCgogICAgICAgIEQgOiB0cmFuc2ZlcnQgZGVzIERPTk5FRVMgZHUgc2VydmV1ciB2ZXJzIGxlIGNsaWVudC4KCiAgICAgICAgTCA6IHRyYW5zZmVydCBkZXMgZGVybmnocmVzICgiTEFTVCIpIGRvbm7pZXMgZHUgcHJveHkgdmVycyBsZSBjbGllbnQsCiAgICAgICAgICAgIGFsb3JzIHF1ZSBsZSBzZXJ2ZXVyIGEgZOlq4CBmaW5pLgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBTSCAgTGUgc2VydmV1ciBhIGFib3J06SBicnV0YWxlbWVudCBhbG9ycyBxdSdpbCBkZXZhaXQgZW52b3llciBzZXMKICAgICAgICAgIGVuLXTqdGVzLiBFbiBn6W7pcmFsLCBjZWxhIGluZGlxdWUgcXUnaWwgYSBjcmFzaOkuCgogICAgICBzSCAgTGUgc2VydmV1ciBuJ2EgcGFzIHB1IHLpcG9uZHJlIGR1cmFudCBsZSB0ZW1wcyBpbXBhcnRpLCBjZSBxdWkgbW9udHJlCiAgICAgICAgICBkZXMgdHJhbnNhY3Rpb25zIHRyb3AgbG9uZ3VlcywgcHJvYmFibGVtZW50IGNhdXPpZXMgcGFyIHVuIGJhY2stZW5kCiAgICAgICAgICBzYXR1cukuIExlcyBzZXVsZXMgc29sdXRpb25zIHNvbnQgZGUgY29ycmlnZXIgbGUgcHJvYmzobWUgc3VyCiAgICAgICAgICBsJ2FwcGxpY2F0aW9uLCBkJ2FjY3Jv7nRyZSBsZSBwYXJhbeh0cmUgJ3NydnRpbWVvdXQnIHBvdXIgc3VwcG9ydGVyCiAgICAgICAgICBkZXMgYXR0ZW50ZXMgcGx1cyBsb25ndWVzIGF1IHJpc3F1ZSBxdWUgbGVzIGNsaWVudHMgYWJhbmRvbm5lbnQg4AogICAgICAgICAgbGV1ciB0b3VyLCBvdSBiaWVuIGQnYWpvdXRlciBkZXMgc2VydmV1cnMuCiAgICAgIAogICAgICBQUiAgTGUgcHJveHkgYSBibG9xdekgdW5lIHJlcXXqdGUgZHUgY2xpZW50LCBzb2l0IOAgY2F1c2UgZCd1bmUgc3ludGF4ZQogICAgICAgICAgSFRUUCBpbnZhbGlkZSwgYXVxdWVsIGNhcyBpbCBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMCBhdSBjbGllbnQsCiAgICAgICAgICBzb2l0IOAgY2F1c2UgZCd1bmUgcmVxdep0ZSB2YWxpZGFudCB1biBmaWx0cmUgZCdpbnRlcmRpY3Rpb24sIGF1cXVlbAogICAgICAgICAgY2FzIGxlIHByb3h5IGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAzLgoKICAgICAgUEggIExlIHByb3h5IGEgYmxvcXXpIGxhIHLpcG9uc2UgZHUgc2VydmV1ciBwYXJjZSBxdSdlbGxlIOl0YWl0IGludmFsaWRlLAogICAgICAgICAgaW5jb21wbOh0ZSwgZGFuZ2VyZXVzZSAoJ2NhY2hlIGNvbnRyb2wnKSwgb3UgcGFyY2UgcXUnZWxsZSB2YWxpZGFpdAogICAgICAgICAgdW4gZmlsdHJlIGRlIHPpY3VyaXTpLiBEYW5zIHRvdXMgbGVzIGNhcywgdW5lIGVycmV1ciBIVFRQIDUwMiBlc3QKICAgICAgICAgIHJlbnZveellIGF1IGNsaWVudC4KCiAgICAgIGNEICBMZSBjbGllbnQgbidhIHBhcyBsdSBkZSBkb25u6WVzIHBlbmRhbnQgbGUgdGVtcHMgcXVpIGx1aSDpdGFpdAogICAgICAgICAgaW1wYXJ0aS4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHByb2Js6G1lcyBy6XNlYXUgY/R06SBjbGllbnQuCgogICAgICBDRCAgTGUgY2xpZW50IGEgYWJvcnTpIHNhIGNvbm5lY3Rpb24gZGUgbWFuaehyZSBpbmF0dGVuZHVlIHBlbmRhbnQgbGUKICAgICAgICAgIHRyYW5zZmVydCBkZXMgZG9ubullcy4gQ2VjaSBlc3QgcHJvdm9xdekgc29pdCBwYXIgbGUgY3Jhc2ggZCd1bgogICAgICAgICAgbmF2aWdhdGV1ciwgb3UgcGFyIHVuZSBzZXNzaW9uIGVuIEhUVFAga2VlcC1hbGl2ZSBlbnRyZSBsZSBzZXJ2ZXVyCiAgICAgICAgICBldCBsZSBjbGllbnQgdGVybWlu6WUgZW4gcHJlbWllciBwYXIgbGUgY2xpZW50LgoKICAgICAgc0QgIExlIHNlcnZldXIgbidhIHJpZW4gZmFpdCBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSBwYXIgbGUgcGFyYW3odHJlCiAgICAgICAgICAnc3J2dGltZW91dCcuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyB0aW1lb3V0cyB0cm9wIGNvdXJ0cwogICAgICAgICAgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNCAoZmlyZXdhbGxzLCBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlKQogICAgICAgICAgc2l0delzIGVudHJlIGxlIHByb3h5IGV0IGxlIHNlcnZldXIuCgo0LjIuNSkgQ2FyYWN06HJlcyBub24taW1wcmltYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yOSwgbGVzIGNhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzIG5lIHNvbnQgcGx1cyBlbnZveelzCnRlbHMgcXVlbHMgZGFucyBsZXMgbGlnbmVzIGRlIGxvZ3MsIG1haXMgaW5zY3JpdHMgc291cyBsYSBmb3JtZSBkZSBkZXV4IGNoaWZmcmVzCmhleGFk6WNpbWF1eCwgcHLpZml46XMgZHUgY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnLiBMZXMgc2V1bHMgY2FyYWN06HJlcwpkb3LpbmF2YW50IGxvZ3XpcyB0ZWxzIHF1ZWxzIHNvbnQgY29tcHJpcyBlbnRyZSAzMiBldCAxMjYuIEJpZW4g6XZpZGVtbWVudCwgbGUKY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnIGVzdCBsdWktbeptZSBlbmNvZOkgYWZpbiBkZSBsZXZlciBsJ2FtYmlndWl06S4gSWwgZW4KZXN0IGRlIG3qbWUgcG91ciBsZSBjYXJhY3TocmUgJyInLCBhaW5zaSBxdWUgbGVzIGNhcmFjdOhyZXMgJ3snLCAnfCcgZXQgJ30nIHBvdXIKbGVzIGVuLXTqdGVzLgoKNC4yLjYpIENhcHR1cmUgZCdlbi106nRlcyBIVFRQIGV0IGRlIGNvb2tpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgdmVyc2lvbiAxLjEuMjMgYSBhcHBvcnTpIGxhIGNhcHR1cmUgZGVzIGNvb2tpZXMsIGV0IGxhIHZlcnNpb24gMS4xLjI5IGxhCmNhcHR1cmUgZCdlbi106nRlcy4gVG91dCBjZWNpIGVzdCBlZmZlY3R16SBlbiB1dGlsaXNhbnQgbGUgbW90LWNs6SAnY2FwdHVyZScuCgpMZXMgY2FwdHVyZXMgZGUgY29va2llcyBmYWNpbGl0ZW50IGxlIHN1aXZpIGV0IGxhIHJlY29uc3RpdHV0aW9uIGQndW5lIHNlc3Npb24KdXRpbGlzYXRldXIuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIGNvb2tpZSA8cHLpZml4ZV9jb29raWU+IGxlbiA8bG9uZ3VldXJfY2FwdHVyZT4KCkNlY2kgYWN0aXZlcmEgbGEgY2FwdHVyZSBkZSBjb29raWVzIOAgbGEgZm9pcyBkYW5zIGxlcyByZXF16nRlcyBldCBkYW5zIGxlcwpy6XBvbnNlcy4gRGUgY2V0dGUgbWFuaehyZSwgaWwgZGV2aWVudCBmYWNpbGUgZGUgZOl0ZWN0ZXIgbG9yc3F1J3VuIHV0aWxpc2F0ZXVyCmJhc2N1bGUgc3VyIHVuZSBub3V2ZWxsZSBzZXNzaW9uIHBhciBleGVtcGxlLCBjYXIgbGUgc2VydmV1ciBsdWkgculhc3NpZ25lcmEgdW4Kbm91dmVhdSBjb29raWUuCgpMZSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZXJhIHBhciA8cHLpZml4ZV9jb29raWU+IHNlcmEgY2FwdHVy6SwgZXQKdHJhbnNtaXMgc291cyBsYSBmb3JtZSAiTk9NPXZhbGV1ciIsIHNhbnMgdG91dGVmb2lzLCBleGPpZGVyIDxsb25ndWV1cl9jYXB0dXJlPgpjYXJhY3TocmVzICg2NCBhdSBtYXhpbXVtKS4gTG9yc3F1ZSBsZSBub20gZHUgY29va2llIGVzdCBmaXhlIGV0IGNvbm51LCBvbiBwZXV0CmxlIHN1ZmZpeGVyIGR1IHNpZ25lICI9IiBwb3VyIHMnYXNzdXJlciBxdSdhdWN1biBhdXRyZSBjb29raWUgbmUgcHJlbmRyYSBzYQpwbGFjZSBkYW5zIGxlcyBsb2dzLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2UgcGFyICJBU1BTRVNTSU9OIgogICAgY2FwdHVyZSBjb29raWUgQVNQU0VTU0lPTiBsZW4gMzIKCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gZXN0IGV4YWN0ZW1lbnQgInZnbnZpc2l0b3IiCiAgICBjYXB0dXJlIGNvb2tpZSB2Z252aXNpdG9yPSBsZW4gMzIKCkRhbnMgbGVzIGxvZ3MsIGxlIGNoYW1wIHBy6WPpZGFudCBsJ2luZGljYXRldXIgZGUgY29tcGzpdHVkZSBjb250aWVudCBsZSBjb29raWUKcG9zaXRpb25u6SBwYXIgbGUgc2VydmV1ciwgcHLpY+lk6SBkdSBjb29raWUgcG9zaXRpb25u6SBwYXIgbGUgY2xpZW50LiBDaGFjdW4KZGUgY2VzIGNoYW1wcyBlc3QgcmVtcGxhY+kgcGFyIGxlIHNpZ25lICItIiBsb3JzcXUnYXVjdW4gY29va2llIG4nZXN0IGZvdXJuaQpwYXIgbGUgY2xpZW50IG91IGxlIHNlcnZldXIsIG91IGxvcnNxdWUgbCdvcHRpb24gZXN0IGTpc2FjdGl26WUuLgoKTGVzIGNhcHR1cmVzIGQnZW4tdOp0ZXMgb250IHVuIHL0bGUgY29tcGzodGVtZW50IGRpZmbpcmVudC4gRWxsZXMgc29udCB1dGlsZXMKcG91ciBzdWl2cmUgdW4gaWRlbnRpZmlhbnQgZGUgcmVxdep0ZSBnbG9iYWxlbWVudCB1bmlxdWUgcG9zaXRpb25u6SBwYXIgdW4KYXV0cmUgcHJveHkgZW4gYW1vbnQsIHBvdXIgam91cm5hbGlzZXIgbGVzIG5vbXMgZGUgc2VydmV1cnMgdmlydHVlbHMsIGxlcyB0eXBlcwpkZSBjbGllbnRzIHdlYiwgbGEgbG9uZ3VldXIgZGVzIFBPU1QsIGxlcyAncmVmZXJyZXJzJywgZXRjLiBEYW5zIGxhIHLpcG9uc2UsIG9uCnBldXQgY2hlcmNoZXIgZGVzIGluZm9ybWF0aW9ucyByZWxhdGl2ZXMg4CBsYSBsb25ndWV1ciBhbm5vbmPpZSBkZSBsYSBy6XBvbnNlLApsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlLCBvdSBlbmNvcmUgbGEgbG9jYWxpc2F0aW9uIGQndW4gb2JqZXQgZW4gY2FzCmRlIHJlZGlyZWN0aW9uLiBUb3V0IGNvbW1lIHBvdXIgbGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMsIGlsIGVzdCBwb3NzaWJsZQpkJ2luY2x1cmUgbGVzIGVuLXTqdGVzIGRlIHJlcXXqdGVzIGV0IGRlIHLpcG9uc2Ugc2ltdWx0YW7pbWVudC4gTGEgc3ludGF4ZSBlc3QKbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CgpOb3RlOiBMZXMgbm9tcyBkJ2VuLXTqdGVzIG5lIHNvbnQgcGFzIHNlbnNpYmxlcyDgIGxhIGNhc3NlLgoKRXhlbXBsZXM6Ci0tLS0tLS0tLQogICAgIyBjb25zZXJ2ZXIgbGUgbm9tIGR1IHNlcnZldXIgdmlydHVlbCBhY2PpZOkgcGFyIGxlIGNsaWVudAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgICMgbm90ZXIgbGEgbG9uZ3VldXIgZGVzIGRvbm7pZXMgZW52b3npZXMgZGFucyB1biBQT1NUCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKCiAgICAjIG5vdGVyIGxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUgcGFyIGxlIHNlcnZldXIKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgICMgbm90ZXIgbCdVUkwgZGUgcmVkaXJlY3Rpb24KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKTGVzIGVuLXTqdGVzIG5vbiB0cm91dulzIHNvbnQgbG9ndelzIOAgdmlkZSwgZXQgc2kgdW4gZW4tdOp0ZSBhcHBhcmFpdCBwbHVzaWV1cnMKZm9pcywgc2V1bGUgbGEgZGVybmnocmUgb2NjdXJlbmNlIHNlcmEgY29uc2VydullLiBMZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZSBzb250CnJlZ3JvdXDpcyBlbnRyZSBkZXV4IGFjY29sYWRlcyAneycgZXQgJ30nIGRhbnMgbCdvcmRyZSBkZSBsZXVyIGTpY2xhcmF0aW9uLCBldApjaGFjdW4gc+lwYXLpcyBwYXIgdW5lIGJhcnJlIHZlcnRpY2FsZSAnfCcsIHNhbnMgYXVjdW4gZXNwYWNlLiBMZXMgZW4tdOp0ZXMgZGUKculwb25zZSBzb250IHBy6XNlbnTpcyBkZSBsYSBt6m1lIG1hbmnocmUsIG1haXMgYXBy6HMgdW4gZXNwYWNlIHN1aXZhbnQgbGUgYmxvYwpkJ2VuLXTqdGUgZGUgcmVxdep0ZS4gTGUgdG91dCBwculj6GRlIGxhIHJlcXXqdGUgSFRUUC4gRXhlbXBsZSA6CgogIENvbmZpZzoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBSZWZlcmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgU2VydmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBWaWEgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCiAgTG9nIDoKCiAgICBBdWcgIDkgMjA6MjY6MDkgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAxNCBbMDkvQXVnLzIwMDQ6MjA6MjY6MDldIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8xNjIvKzE2MiAyMDAgKzM1MCAtIC0gLS0tLSB7ZnIuYWRzZXJ2ZXIueWFob28uY298fGh0dHA6Ly9mci5mNDE2Lm1haWwufSB7fDg2NHxwcml2YXRlfHx9ICJHRVQgaHR0cDovL2ZyLmFkc2VydmVyLnlhaG9vLmNvbS8iCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyMCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8xODIvKzE4MiAyMDAgKzI3OSAtIC0gLS0tLSB7dy5vZHMub3JnfHx9IHtGb3JtaWx1eC8wLjEuOHwzNDk1fHx8fSAiR0VUIGh0dHA6Ly93Lm9kcy5vcmcvc3l0YWRpbi5odG1sIEhUVFAvMS4xIiAKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDI4IFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8yLzEyNi8rMTI4IDIwMCArMjIzIC0gLSAtLS0tIHt3d3cuaW5mb3RyYWZpYy5jb218fGh0dHA6Ly93Lm9kcy5vcmcvc3l0fSB7QXBhY2hlLzIuMC40MCAoUmVkIEh8OTA2OHx8fH0gIkdFVCBodHRwOi8vd3d3LmluZm90cmFmaWMuY29tL2ltYWdlcy9saXZlL2NhcnRlc2lkZi9ncmFuZGVzL2lkZl9uZS5wbmcgSFRUUC8xLjEiIAoKNC4yLjcpIEV4ZW1wbGVzIGRlIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS83LzE0Ny82NzIzIDIwMCAyNDMgLSAtIC0tLS0gMy81ICJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBsb25ndWUgKDYuNXMpIHNhaXNpZSDgIGxhIG1haW4gYXZlYyB1biBjbGllbnQgdGVsbmV0LiBMZSBzZXJ2ZXVyIGEKICAgICBy6XBvbmR1IGVuIDE0NyBtcyBldCBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullIG5vcm1hbGVtZW50ICgnLS0tLScpCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDMvMyAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBwb3VyIHVuIGxvbmcgdHJhbnNmZXJ0LiBMJ29wdGlvbiAnbG9nYXNhcCcg6XRhaXQgc3DpY2lmaellIGRvbmMgbGUKICAgICBsb2cgYSDpdOkgZ+lu6XLpIGp1c3RlIGF2YW50IGxlIHRyYW5zZmVydCBkZSBkb25u6WVzLiBMZSBzZXJ2ZXVyIGEgculwb25kdQogICAgIGVuIDE0IG1zLCAyNDMgb2N0ZXRzIGQnZW4tdOp0ZXMgb250IOl06SB0cmFuc2bpculzIGF1IGNsaWVudCwgZXQgbGUgdGVtcHMKICAgICB0b3RhbCBlbnRyZSBsJ2FjY2VwdCgpIGV0IGxlIHByZW1pZXIgb2N0ZXQgZGUgZG9ubullIGVzdCBkZSAzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvNy8xNC8zMCA1MDIgMjQzIC0gLSBQSC0tIDIvMyAiR0VUIC9jZ2ktYmluL2J1Zy5jZ2k/IEhUVFAvMS4wIgogID0+IGxlIHByb3h5IGEgYmxvcXXpIHVuZSBy6XBvbnNlIGR1IHNlcnZldXIgc29pdCDgIGNhdXNlIGQndW4gZmlsdHJlICdyc3BkZW55JwogICAgIG91ICdyc3BpZGVueScsIHNvaXQgcGFyY2UgcXUnaWwgYSBk6XRlY3TpIHVuIHJpc3F1ZSBkZSBmdWl0ZSBzZW5zaWJsZQogICAgIGQnaW5mb3JtYXRpb25zIHJpc3F1YW50IGQn6nRyZSBjYWNo6WVzLiBEYW5zIGNlIGNhcywgbGEgculwb25zZSBlc3QKICAgICByZW1wbGFj6WUgcGFyICc1MDIgYmFkIGdhdGV3YXknLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ4IFsxNS9PY3QvMjAwMzoxNToxODo1NV0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS84NDkwIC0xIDAgLSAtIENSLS0gMi8yICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IGEgcmVmZXJt6SBsYSBjb25uZXhpb24gbHVpLW3qbWUKICAgICAoJ0MtLS0nKSBhdSBib3V0IGRlIDguNXMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4KICAgICBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDkgWzE1L09jdC8yMDAzOjE1OjE5OjA2XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLzUwMDAxIDQwOCAwIC0gLSBjUi0tIDIvMiAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBzb24gdGltZS1vdXQgYSBleHBpcukgKCdjLS0tJykgYXUKICAgICBib3V0IGRlIDUwcywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLiBBdWN1bmUKICAgICBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ciwgbWFpcyBsZSByZWxhaXMgYSB0b3V0IGRlIG3qbWUKICAgICBwdSByZW52b3llciB1biBtZXNzYWdlIDQwOCBhdSBjbGllbnQuCgotIGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC81MDA3IDAgY0QKICA9PiBsb2cgZW4gbW9kZSAndGNwbG9nJy4gRXhwaXJhdGlvbiBkdSB0aW1lLW91dCBj9HTpIGNsaWVudCAoJ2NEJykgYXUgYm91dCBkZQogICAgIDVzLgoKLSBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMjAyLzIwNSAiSEVBRCAvIEhUVFAvMS4wIiAKICA9PiBMYSByZXF16nRlIGNsaWVudCBtZXQgM3Mg4CBlbnRyZXIgKHBldXQt6nRyZSB1biBwcm9ibOhtZSBy6XNlYXUpLCBldCBsYQogICAgIGNvbm5leGlvbiAoJ1NDLS0nKSB2ZXJzIGxlIHNlcnZldXIg6WNob3VlIGF1IGJvdXQgZGUgNCB0ZW50YXRpdmVzIGRlIDIKICAgICBzZWNvbmRlcyAocmV0cmllcyAzIGRhbnMgbGEgY29uZiksIHB1aXMgdW4gY29kZSA1MDMgZXN0IHJldG91cm7pIGF1IGNsaWVudC4KICAgICBJbCB5IGF2YWl0IDIwMiBjb25uZXhpb25zIHN1ciBjZXR0ZSBpbnN0YW5jZSwgZXQgMjA1IHN1ciBsJ2Vuc2VtYmxlIGRlcwogICAgIGluc3RhbmNlcyBwb3VyIGNlIHByb2Nlc3N1cy4gSWwgZXN0IHBvc3NpYmxlIHF1ZSBsZSBzZXJ2ZXVyIGFpdCByZWZ1c+kgbGEKICAgICBjb25uZXhpb24gcGFyY2UgcXUnaWwgeSBlbiBhdmFpdCBk6WrgIHRyb3AgZCfpdGFibGllcy4KCgo0LjMpIE1vZGlmaWNhdGlvbiBkZXMgZW4tdOp0ZXMgSFRUUAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCB1bmlxdWVtZW50LCBpbCBlc3QgcG9zc2libGUgZGUgcmVtcGxhY2VyIGNlcnRhaW5zIGVuLXTqdGVzIGRhbnMgbGEKcmVxdep0ZSBldC9vdSBsYSBy6XBvbnNlIOAgcGFydGlyIGQnZXhwcmVzc2lvbnMgculndWxp6HJlcy4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkZSBibG9xdWVyIGNlcnRhaW5lcyByZXF16nRlcyBlbiBmb25jdGlvbiBkdSBjb250ZW51IGRlcyBlbi106nRlcyBvdQpkZSBsYSByZXF16nRlLiBVbmUgbGltaXRhdGlvbiBjZXBlbmRhbnQgOiBsZXMgZW4tdOp0ZXMgZm91cm5pcyBhdSBtaWxpZXUgZGUKY29ubmV4aW9ucyBwZXJzaXN0ZW50ZXMgKGtlZXAtYWxpdmUpIG5lIHNvbnQgcGFzIHZ1cyBjYXIgaWxzIHNvbnQgY29uc2lk6XLpcwpjb21tZSBmYWlzYW50IHBhcnRpZSBkZXMg6WNoYW5nZXMgZGUgZG9ubullcyBjb25z6WN1dGlmcyDgIGxhIHByZW1p6HJlIHJlcXXqdGUuCkxlcyBkb25u6WVzIG5lIHNvbnQgcGFzIGFmZmVjdOllcywgY2VjaSBuZSBzJ2FwcGxpcXVlIHF1J2F1eCBlbi106nRlcy4gCgpMYSBzeW50YXhlIGVzdCA6CiAgIHJlcWFkZCAgICA8c3RyaW5nPiAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxcmVwICAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIHBvdXIgbW9kaWZpZXIgbGEgcmVxdep0ZQogICByZXFpcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZWwgICAgPHNlYXJjaD4gICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxaWRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlhbGxvdyA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbnkgICA8c2VhcmNoPiAgICAgICAgICAgICBpbnRlcmRpcmUgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFwYXNzICAgPHNlYXJjaD4gICAgICAgICAgICAgaW5oaWJlIGNlcyBhY3Rpb25zIHN1ciBsZXMgZW4tdOp0ZXMgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXBhc3MgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCiAgIHJzcGFkZCAgIDxzdHJpbmc+ICAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIHBvdXIgbW9kaWZpZXIgbGEgculwb25zZQogICByc3BpcmVwICA8c2VhcmNoPiA8cmVwbGFjZT4gICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByc3BkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHLpcG9uc2UKICAgcnNwaWRlbCAgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgIHJlbXBsYWNlIGxhIHLpcG9uc2UgcGFyIHVuIEhUVFAgNTAyIHNpIHVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByc3BpZGVueSA8c2VhcmNoPiAgICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwoKCjxzZWFyY2g+IGVzdCB1bmUgZXhwcmVzc2lvbiBy6Wd1bGnocmUgY29tcGF0aWJsZSBQT1NJWCByZWdleHAgc3VwcG9ydGFudCBsZQpncm91cGFnZSBwYXIgcGFyZW50aOhzZXMgKHNhbnMgbGVzICdcJykuIExlcyBlc3BhY2VzIGV0IGF1dHJlcyBz6XBhcmF0ZXVycwpkb2l2ZW50IOp0cmVzIHBy6WPpZOlzIGQndW4gJ1wnIHBvdXIgbmUgcGFzIOp0cmUgY29uZm9uZHVzIGF2ZWMgbGEgZmluIGRlIGxhCmNoYe5uZS4gRGUgcGx1cywgY2VydGFpbnMgY2FyYWN06HJlcyBzcOljaWF1eCBwZXV2ZW50IOp0cmUgcHLpY+lk6XMgZCd1bgpiYWNrc2xhY2ggKCdcJykgOgoKICBcdCAgIHBvdXIgdW5lIHRhYnVsYXRpb24KICBcciAgIHBvdXIgdW4gcmV0b3VyIGNoYXJyaW90CiAgXG4gICBwb3VyIHVuIHNhdXQgZGUgbGlnbmUKICBcICAgIHBvdXIgZGlmZulyZW5jaWVyIHVuIGVzcGFjZSBkJ3VuIHPpcGFyYXRldXIKICBcIyAgIHBvdXIgZGlmZulyZW5jaWVyIHVuIGRp6HNlIGQndW4gY29tbWVudGFpcmUKICBcXCAgIHBvdXIgdXRpbGlzZXIgdW4gYmFja3NsYXNoIGRhbnMgbGEgcmVnZXgKICBcXFxcIHBvdXIgdXRpbGlzZXIgdW4gYmFja3NsYXNoIGRhbnMgbGUgdGV4dGUKICBceFhYIHBvdXIgdW4gY2FyYWN06HJlIHNw6WNpZmlxdWUgWFggKGNvbW1lIGVuIEMpCgoKPHJlcGxhY2U+IGNvbnRpZW50IGxhIGNoYe5uZSByZW1wbGHnYW50IGxhIHBvcnRpb24gdulyaWZp6WUgcGFyIGwnZXhwcmVzc2lvbi4KRWxsZSBwZXV0IGluY2x1cmUgbGVzIGNhcmFjdOhyZXMgc3DpY2lhdXggY2ktZGVzc3VzLCBmYWlyZSBy6WbpcmVuY2Ug4CB1bgpncm91cGUgZOlsaW1pdOkgcGFyIGRlcyBwYXJlbnRo6HNlcyBkYW5zIGwnZXhwcmVzc2lvbiBy6Wd1bGnocmUsIHBhciBzYQpwb3NpdGlvbiBudW3pcmFsZS4gTGVzIHBvc2l0aW9ucyB2b250IGRlIDEg4CA5LCBldCBzb250IGNvZOllcyBwYXIgdW4gJ1wnCnN1aXZpIGR1IGNoaWZmcmUgZOlzaXLpLiBJbCBlc3Qg6WdhbGVtZW50IHBvc3NpYmxlIGQnaW5z6XJlciB1biBjYXJhY3TocmUgbm9uCmltcHJpbWFibGUgKHV0aWxlIHBvdXIgbGUgc2F1dCBkZSBsaWduZSkgaW5zY3JpdmFudCAnXHgnIHN1aXZpIGR1IGNvZGUKaGV4YWTpY2ltYWwgZGUgY2UgY2FyYWN06HJlIChjb21tZSBlbiBDKS4KCjxzdHJpbmc+IHJlcHLpc2VudGUgdW5lIGNoYe5uZSBxdWkgc2VyYSBham91dOllIHN5c3TpbWF0aXF1ZW1lbnQgYXBy6HMgbGEKZGVybmnocmUgbGlnbmUgZCdlbi106nRlLgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtIGxhIHByZW1p6HJlIGxpZ25lIGRlIGxhIHJlcXXqdGUgZXQgY2VsbGUgZGUgbGEgculwb25zZSBzb250IHRyYWl06WVzIGNvbW1lCiAgICBkZXMgZW4tdOp0ZXMsIGNlIHF1aSBwZXJtZXQgZGUgcunpY3JpcmUgZGVzIFVSTCBldCBkZXMgY29kZXMgZCdlcnJldXIuCiAgLSAncmVxcmVwJyBlc3QgbCfpcXVpdmFsZW50IGRlICdjbGlleHAnIGVuIHZlcnNpb24gMS4wLCBldCAncnNwcmVwJyBjZWx1aSBkZQogICAgJ3NydmV4cCcuIENlcyBub21zIHNvbnQgdG91am91cnMgc3VwcG9ydOlzIG1haXMgZOljb25zZWlsbOlzLgogIC0gcG91ciBkZXMgcmFpc29ucyBkZSBwZXJmb3JtYW5jZXMsIGxlIG5vbWJyZSB0b3RhbCBkZSBjYXJhY3TocmVzIGFqb3V06XMgc3VyCiAgICB1bmUgcmVxdep0ZSBvdSB1bmUgculwb25zZSBlc3QgbGltaXTpIOAgNDA5NiBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuNSAoY2V0dGUKICAgIGxpbWl0ZSDpdGFpdCDgIDI1NiBhdXBhcmF2YW50KS4gQ2V0dGUgdmFsZXVyIGVzdCBtb2RpZmlhYmxlIGRhbnMgbGUgY29kZS4KICAgIFBvdXIgdW4gdXNhZ2UgdGVtcG9yYWlyZSwgb24gcGV1dCBnYWduZXIgZGUgbGEgcGxhY2UgZW4gc3VwcHJpbWFudCBxdWVscXVlcwogICAgZW4tdOp0ZXMgaW51dGlsZXMgYXZhbnQgbGVzIGFqb3V0cy4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNDAzIGZvcmJpZGRlbiIgdGFuZGlzIHF1J3VuZQogICAgculwb25zZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDUwMiBCYWQgZ2F0ZXdheSIuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgICAgICAjIyMjIyMgYSBmZXcgZXhhbXBsZXMgIyMjIyMjCgogICAgICAgICMgcmV3cml0ZSAnb25saW5lLmZyJyBpbnN0ZWFkIG9mICdmcmVlLmZyJyBmb3IgR0VUIGFuZCBQT1NUIHJlcXVlc3RzCiAgICAgICAgcmVxcmVwICAgICAgICBeKEdFVFwgLiopKC5mcmVlLmZyKSguKikgXDEub25saW5lLmZyXDMKICAgICAgICByZXFyZXAgICAgICAgIF4oUE9TVFwgLiopKC5mcmVlLmZyKSguKikgXDEub25saW5lLmZyXDMKCiAgICAgICAgIyBmb3JjZSBwcm94eSBjb25uZWN0aW9ucyB0byBjbG9zZQogICAgICAgIHJlcWlyZXAgICAgICAgIF5Qcm94eS1Db25uZWN0aW9uOi4qICAgICAgICBQcm94eS1Db25uZWN0aW9uOlwgY2xvc2UKICAgICAgICAjIHJld3JpdGUgbG9jYXRpb25zCiAgICAgICAgcnNwaXJlcCAgICAgICAgXihMb2NhdGlvbjpcICkoW146XSo6Ly9bXi9dKikoLiopIFwxXDMKCiAgICAgICAgIyMjIyMjIEEgZnVsbCBjb25maWd1cmF0aW9uIGJlaW5nIHVzZWQgb24gcHJvZHVjdGlvbiAjIyMjIyMKCiAgICAgICAgIyBFdmVyeSBoZWFkZXIgc2hvdWxkIGVuZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgb25lIHNwYWNlLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKltcIF0qJAoKICAgICAgICAjIGJsb2NrIEFwYWNoZSBjaHVuayBleHBsb2l0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5UcmFuc2Zlci1FbmNvZGluZzpbXCBdKmNodW5rZWQKICAgICAgICByZXFpZGVueSAgICAgICAgXkhvc3Q6XCBhcGFjaGUtCgogICAgICAgICMgYmxvY2sgYW5ub3lpbmcgd29ybXMgdGhhdCBmaWxsIHRoZSBsb2dzLi4uCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKihcLnwlMmUpKFwufCUyZSkoJTJmfCU1Y3wvfFxcXFwpCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAoW15cIF0qXCBbXlwgXSpcIHwuKiUwMCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qPHNjcmlwdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiovKHJvb3RcLmV4ZVw/fGNtZFwuZXhlXD98ZGVmYXVsdFwuaWRhXD8pCgogICAgICAgICMgYWxsb3cgb3RoZXIgc3ludGFjdGljYWxseSB2YWxpZCByZXF1ZXN0cywgYW5kIGJsb2NrIGFueSBvdGhlciBtZXRob2QKICAgICAgICByZXFpcGFzcyAgICAgICAgXihHRVR8UE9TVHxIRUFEfE9QVElPTlMpXCAvLipcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpcGFzcyAgICAgICAgXk9QVElPTlNcIFxcKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgCgogICAgICAgICMgZm9yY2UgY29ubmVjdGlvbjpjbG9zZSwgdGh1cyBkaXNhYmxpbmcgSFRUUCBrZWVwLWFsaXZlCiAgICAgICAgb3B0aW9uICAgICAgICAgICAgICAgIGh0dHBjbG9zCgogICAgICAgICMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuCgpFbmZpbiwgbCdvcHRpb24gJ2h0dHBjbG9zZScgYXBwYXJ1ZSBkYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xIHN1cHByaW1lIHRvdXQKZW4tdOp0ZSBkZSB0eXBlICdDb25uZWN0aW9uOicgZXQgYWpvdXRlICdDb25uZWN0aW9uOiBjbG9zZScgZGFucyBsZXMgZGV1eCBzZW5zLgpDZWNpIHNpbXBsaWZpZSBsYSBk6XNhY3RpdmF0aW9uIGR1IGtlZXAtYWxpdmUgSFRUUCBwYXIgcmFwcG9ydCDgIGwnYW5jaWVubmUKbel0aG9kZSBpbXBsaXF1YW50IDQgcuhnbGVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCk5vdG9ucyBxdWUgY2VydGFpbnMgc2VydmV1cnMgSFRUUCBuZSByZWZlcm1lbnQgcGFzIG7pY2Vzc2FpcmVtZW50IGxhIHNlc3Npb24KVENQIGVuIGZpbiBkZSB0cmFpdGVtZW50IGxvcnNxdSdpbHMgcmXnb2l2ZW50IHVuIGVudOp0ZSAnQ29ubmVjdGlvbjogY2xvc2UnLApjZSBxdWkgc2UgdHJhZHVpdCBwYXIgZGVzIGdyYW5kcyBub21icmVzIGRlIHNlc3Npb25zIOl0YWJsaWVzIGV0IGRlcyB0ZW1wcwpnbG9iYXV4IHRy6HMgbG9uZ3Mgc3VyIGxlcyByZXF16nRlcy4gUG91ciBjb250b3VybmVyIGNlIHByb2Js6G1lLCBsYSB2ZXJzaW9uCjEuMi45IGFwcG9ydGUgdW5lIG5vdXZlbGxlIG9wdGlvbiAnZm9yY2VjbG9zZScgcXVpIHJlZmVybWUgbGEgY29ubmV4aW9uIHNvcnRhbnQKdmVycyBsZSBzZXJ2ZXVyIGTocyBxdSdpbCBjb21tZW5jZSDgIHLpcG9uZHJlIGV0IHNldWxlbWVudCBzaSBsZSB0YW1wb24gZGUKcmVxdep0ZSBlc3QgdmlkZS4gQXR0ZW50aW9uIHRvdXRlZm9pcyDgIG5lIFBBUyB1dGlsaXNlciBjZXR0ZSBvcHRpb24gc2kgZGVzCm3pdGhvZGVzIENPTk5FQ1Qgc29udCBhdHRlbmR1ZXMgZW50cmUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIuIEwnb3B0aW9uCidmb3JjZWNsb3NlJyBpbXBsaXF1ZSBsJ29wdGlvbiAnaHR0cGNsb3NlJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gZm9yY2VjbG9zZQoKCjQuNCkgUulwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgY29tYmluYWlzb24gZGUgbCdpbnNlcnRpb24gZGUgY29va2llIGF2ZWMgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUKcGVybWV0IGQnYXNzdXJlciB1bmUgcGVyc2lzdGVuY2UgZGFucyBsZXMgc2Vzc2lvbnMgSFRUUCBkJ3VuZSBtYW5p6HJlCnByYXRpcXVlbWVudCB0cmFuc3BhcmVudGUgcG91ciBsZXMgYXBwbGljYXRpb25zLiBMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDoKICAtIGF0dHJpYnVlciB1bmUgdmFsZXVyIGQndW4gY29va2llIOAgY2hhcXVlIHNlcnZldXIKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gaW50ZXJuZQogIC0gaW5z6XJlciB1biBjb29raWUgZGFucyBsZXMgculwb25zZXMgaXNzdWVzIGQndW5lIHLpcGFydGl0aW9uIHVuaXF1ZW1lbnQsCiAgICBldCBmYWlyZSBlbiBzb3J0ZSBxdWUgZGVzIGNhY2hlcyBuZSBt6W1vcmlzZW50IHBhcyBjZSBjb29raWUuCiAgLSBjYWNoZXIgY2UgY29va2llIOAgbCdhcHBsaWNhdGlvbiBsb3JzIGRlcyByZXF16nRlcyB1bHTpcmlldXJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgpMJ2F1dHJlIHNvbHV0aW9uIGFwcG9ydOllIHBhciBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zIGVzdCBkZSBy6XV0aWxpc2VyIHVuCmNvb2tpZSBlbiBwcm92ZW5hbmNlIGR1IHNlcnZldXIgZXQgZGUgbHVpIHBy6WZpeGVyIGwnaWRlbnRpZmlhbnQgZHUgc2VydmV1ci4KRGFucyBjZSBjYXMsIG5lIHBhcyBvdWJsaWVyIGRlIGZvcmNlciBsZSBtb2RlICJodHRwY2xvc2UiIHBvdXIgZW1w6mNoZXIgbGUKY2xpZW50IGV0IGxlIHNlcnZldXIgZGUgdHJhdmFpbGxlciBlbiBtb2RlICJrZWVwLWFsaXZlIiBhZmluIHF1ZSBsZSBwcm94eQpwdWlzc2UgY29ycmlnZXIgbGUgbm9tIGR1IGNvb2tpZSBkYW5zIHRvdXRlcyBsZXMgZnV0dXJlcyByZXF16nRlcy4KCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNydjEgY2hlY2sKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzcnYyIGNoZWNrCiAgICAgICBvcHRpb24gaHR0cGNsb3NlCgoKNC41KSBQcm90ZWN0aW9uIGNvbnRyZSBsZXMgZnVpdGVzIGQnaW5mb3JtYXRpb25zIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZXMgdmVyc2lvbnMgMS4xLjI4IGV0IDEuMi4xLCB1bmUgbm91dmVsbGUgb3B0aW9uICdjaGVja2NhY2hlJyBhIOl06QpjcunpZS4gRWxsZSBzZXJ0IOAgaW5zcGVjdGVyIG1pbnV0aWV1c2VtZW50IGxlcyBlbi106nRlcyAnQ2FjaGUtY29udHJvbCcsCidQcmFnbWEnLCBldCAnU2V0LWNvb2tpZScgZGFucyBsZXMgculwb25zZXMgc2VydmV1ciBwb3VyIGTpdGVybWluZXIgcydpbCB5IGEKdW4gcmlzcXVlIGRlIGNhY2hlciB1biBjb29raWUgc3VyIHVuIHByb3h5IGP0dOkgY2xpZW50LiBRdWFuZCBjZXR0ZSBvcHRpb24gZXN0CmFjdGl26WUsIGxlcyBzZXVsZXMgculwb25zZXMgcXVpIHBldXZlbnQg6nRyZSByZXRvdXJu6WVzIGF1IGNsaWVudCBzb250IDoKICAtIHRvdXRlcyBjZWxsZXMgcXVpIG4nb250IHBhcyBkJ2VuLXTqdGUgJ1NldC1jb29raWUnIDsKICAtIHRvdXRlcyBjZWxsZXMgcXVpIG9udCB1biBjb2RlIGRlIHJldG91ciBhdXRyZSBxdWUgMjAwLCAyMDMsIDIwNiwgMzAwLCAzMDEsIAogICAgNDEwLCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBmb250IHN1aXRlIOAgdW5lIHJlcXXqdGUgUE9TVCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6QogICAgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdQcmFnbWE6IG5vLWNhY2hlJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwcml2YXRlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tc3RvcmUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBtYXgtYWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHMtbWF4YWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSInIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llLCcKICAgIChhdXRvcmlzYW50IGQnYXV0cmVzIGNoYW1wcyBhcHLocyBzZXQtY29va2llKS4KClNpIHVuZSBy6XBvbnNlIG5lIHJlc3BlY3RlIHBhcyBjZXMgcHLpLXJlcXVpcywgYWxvcnMgZWxsZSBzZXJhIGJsb3F16WUgZGUgbGEKbeptZSBtYW5p6HJlIHF1ZSBzJ2lsIHMnYWdpc3NhaXQgZCd1biBmaWx0cmUgJ3JzcGRlbnknLCBhdmVjIGVuIHJldG91ciB1bgptZXNzYWdlICJIVFRQIDUwMiBiYWQgZ2F0ZXdheSIuIEwn6XRhdCBkZSBzZXNzaW9uIG1vbnRyZSAiUEgtLSIgY2UgcXVpIHZldXQKZGlyZSBxdWUgYydlc3QgbGUgcHJveHkgcXVpIGEgYmxvcXXpIGxhIHLpcG9uc2UgZHVyYW50IGxlIHRyYWl0ZW1lbnQgZGVzCmVuLXTqdGVzLiBEZSBwbHVzLCB1biBtZXNzYWdlIGQnYWxlcnRlIHNlcmEgZW52b3npIGRhbnMgbGVzIGxvZ3MgZGUgc29ydGUgcXVlCmwnYWRtaW5pc3RyYXRldXIgc2FjaGUgcXUnaWwgeSBhIHVuZSBhY3Rpb24gY29ycmVjdHJpY2Ug4CBlbnRyZXByZW5kcmUuCgo0LjYpIFBlcnNvbmFsaXNhdGlvbiBkZXMgZXJyZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDZXJ0YWluZXMgc2l0dWF0aW9ucyBjb25kdWlzZW50IOAgcmV0b3VybmVyIHVuZSBlcnJldXIgSFRUUCBhdSBjbGllbnQgOgogIC0gcmVxdep0ZSBpbnZhbGlkZSBvdSB0cm9wIGxvbmd1ZSA9PiBjb2RlIEhUVFAgNDAwCiAgLSByZXF16nRlIG1ldHRhbnQgdHJvcCBkZSB0ZW1wcyDgIHZlbmlyID0+IGNvZGUgSFRUUCA0MDgKICAtIHJlcXXqdGUgaW50ZXJkaXRlIChibG9xdellIHBhciB1biByZXFpZGVueSkgPT4gY29kZSBIVFRQIDQwMwogIC0gZXJyZXVyIGludGVybmUgZHUgcHJveHkgPT4gY29kZSBIVFRQIDUwMAogIC0gbGUgc2VydmV1ciBhIHJldG91cm7pIHVuZSBy6XBvbnNlIGluY29tcGzodGUgb3UgaW52YWxpZGUgPT4gY29kZSBIVFRQIDUwMgogIC0gYXVjdW4gc2VydmV1ciBkaXNwb25pYmxlIHBvdXIgY2V0dGUgcmVxdep0ZSA9PiBjb2RlIEhUVFAgNTAzCiAgLSBsZSBzZXJ2ZXVyIG4nYSBwYXMgculwb25kdSBkYW5zIGxlIHRlbXBzIGltcGFydGkgPT4gY29kZSBIVFRQIDUwNAoKVW4gbWVzc2FnZSBkJ2VycmV1ciBzdWNjaW50IHRpcukgZGUgbGEgUkZDIGFjY29tcGFnbmUgY2VzIGNvZGVzIGRlIHJldG91ci4KQ2VwZW5kYW50LCBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNsaWVudOhsZSwgb24gcGV1dCBwculm6XJlciByZXRvdXJuZXIgZGVzCnBhZ2VzIHBlcnNvbm5hbGlz6WVzLiBDZWNpIGVzdCBwb3NzaWJsZSBwYXIgbGUgYmlhaXMgZGUgbGEgY29tbWFuZGUgImVycm9ybG9jIjoKCiAgICBlcnJvcmxvYyA8Y29kZV9IVFRQPiA8bG9jYXRpb24+CgpBdSBsaWV1IGRlIGfpbulyZXIgdW5lIGVycmV1ciBIVFRQIDxjb2RlX0hUVFA+IHBhcm1pIGxlcyBjb2RlcyBjaXTpcyBjaS1kZXNzdXMsCmxlIHByb3h5IGfpbuhyZXJhIHVuIGNvZGUgZGUgcmVkaXJlY3Rpb24gdGVtcG9yYWlyZSAoSFRUUCAzMDIpIHZlcnMgbCdhZHJlc3NlCmQndW5lIHBhZ2UgcHLpY2lz6WUgZGFucyA8bG9jYXRpb24+LiBDZXR0ZSBhZHJlc3NlIHBldXQg6nRyZSByZWxhdGl2ZSBhdSBzaXRlLApvdSBhYnNvbHVlLiBDb21tZSBjZXR0ZSBy6XBvbnNlIGVzdCB0cmHudOllIHBhciBsZSBuYXZpZ2F0ZXVyIGR1IGNsaWVudApsdWktbeptZSwgaWwgZXN0IGluZGlzcGVuc2FibGUgcXVlIGwnYWRyZXNzZSBmb3VybmllIGx1aSBzb2l0IGFjY2Vzc2libGUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIGVycm9ybG9jIDQwMCAvYmFkcmVxdWVzdC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDAzIC9mb3JiaWRkZW4uaHRtbAogICAgICAgIGVycm9ybG9jIDQwOCAvdG9vbG9uZy5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAwIGh0dHA6Ly9oYXByb3h5LmRvbWFpbi5uZXQvYnVncmVwb3J0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDIgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDMgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDQgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKCk5vdGU6IGxhIFJGQzI2MTYgc3RpcHVsZSBxdSd1biBjbGllbnQgZG9pdCBy6XV0aWxpc2VyIGxhIG3qbWUgbel0aG9kZSBwb3VyCmFjY+lkZXIg4CBsJ1VSTCBkZSByZWRpcmVjdGlvbiBxdWUgY2VsbGUgcXVpIGwnYSByZXRvdXJu6WUsIGNlIHF1aSBwb3NlIGRlcwpwcm9ibOhtZXMgYXZlYyBsZXMgcmVxdep0ZXMgUE9TVC4gTGUgY29kZSBkZSByZXRvdXIgMzAzIGEg6XTpIGNy6ekgZXhwcuhzIHBvdXIKculnbGVyIGNlIHByb2Js6G1lLCBpbmRpcXVhbnQgYXUgY2xpZW50IHF1J2lsIGRvaXQgYWNj6WRlciDgIGwnVVJMIHJldG91cm7pZQpkYW5zIGxlIGNoYW1wIExvY2F0aW9uIGF2ZWMgbGEgbel0aG9kZSBHRVQgdW5pcXVlbWVudC4gU2V1bGVtZW50LCBjZXJ0YWlucwpuYXZpZ2F0ZXVycyBhbnTpcmlldXJzIOAgSFRUUC8xLjEgbmUgY29ubmFpc3NlbnQgcGFzIGNlIGNvZGUgZGUgcmV0b3VyLiBEZQpwbHVzLCBsYSBwbHVwYXJ0IGRlcyBuYXZpZ2F0ZXVycyBzZSBjb21wb3J0ZW50IGTpauAgYXZlYyBsZSBjb2RlIDMwMiBjb21tZSBpbHMKZGV2cmFpZW50IGxlIGZhaXJlIGF2ZWMgbGUgMzAzLiBEb25jLCBkYW5zIGxlIGJ1dCBkZSBsYWlzc2VyIGxlIGNob2l4IOAKbCd1dGlsaXNhdGV1ciwgbGVzIHZlcnNpb25zIDEuMS4zMSBldCAxLjIuNSBhcHBvcnRlbnQgZGV1eCBub3V2ZWxsZXMgY29tbWFuZGVzCnZpc2FudCDgIHJlbXBsYWNlciAnZXJyb3Jsb2MnIDogJ2Vycm9ybG9jMzAyJyBldCAnZXJyb3Jsb2MzMDMnLgoKTGV1ciB1c2FnZSBub24gYW1iaWf8IGVzdCByZWNvbW1hbmTpIOAgbGEgcGxhY2UgZGUgbGEgY29tbWFuZGUgJ2Vycm9ybG9jJyAocXVpCnV0aWxpc2UgdG91am91cnMgMzAyKS4gRGFucyBsZSBkb3V0ZSwgcHLpZulyZXogbCd1dGlsaXNhdGlvbiBkZSAnZXJyb3Jsb2MzMDMnCmTocyBxdWUgdm91cyBzYXZleiBxdWUgdm9zIGNsaWVudHMgc3VwcG9ydGVudCBsZSBjb2RlIGRlIHJldG91ciBIVFRQIDMwMy4KCjQuNykgQ2hhbmdlbWVudCBkZXMgdmFsZXVycyBwYXIgZOlmYXV0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjIgZXN0IGFwcGFydWUgbGEgbm90aW9uIGRlIHZhbGV1cnMgcGFyIGTpZmF1dCwgY2UgcXVpCul2aXRlIGRlIHLpcOl0ZXIgZGVzIHBhcmFt6HRyZXMgY29tbXVucyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzLCB0ZWxzIHF1ZSBsZXMKdGltZW91dHMsIGFkcmVzc2VzIGRlIGxvZywgbW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQsIGV0Yy4KCkxlcyB2YWxldXJzIHBhciBk6WZhdXQgc29udCBwb3NpdGlvbm7pZXMgZGFucyBsYSBkZXJuaehyZSBzZWN0aW9uICdkZWZhdWx0cycKcHLpY+lkZW50IGwnaW5zdGFuY2UgcXVpIGxlcyB1dGlsaXNlcmEuIE9uIHBldXQgZG9uYyBtZXR0cmUgYXV0YW50IGRlIHNlY3Rpb25zCidkZWZhdWx0cycgcXVlIGwnb24gdmV1dC4gSWwgZmF1dCBqdXN0ZSBzZSByYXBwZWxlciBxdWUgbGEgcHLpc2VuY2UgZCd1bmUgdGVsbGUKc2VjdGlvbiBpbXBsaXF1ZSB1bmUgYW5udWxhdGlvbiBkZSB0b3VzIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgcG9zaXRpb25u6XMKcHLpY+lkZW1tZW50LCBkYW5zIGxlIGJ1dCBkZSBsZXMgcmVtcGxhY2VyLgoKTGEgc2VjdGlvbiAnZGVmYXVsdHMnIHV0aWxpc2UgbGEgbeptZSBzeW50YXhlIHF1ZSBsYSBzZWN0aW9uICdsaXN0ZW4nLCBhdXgKcGFyYW3odHJlcyBwcuhzIHF1aSBuZSBzb250IHBhcyBzdXBwb3J06XMuIExlIG1vdCBjbOkgJ2RlZmF1bHRzJyBwZXV0IGFjY2VwdGVyCnVuIGNvbW1lbnRhaXJlIGVuIGd1aXNlIHBhcmFt6HRyZS4KCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjgvMS4yLjEsIHNldWxzIGxlcyBwYXJhbeh0cmVzIHN1aXZhbnRzIHBldXZlbnQg6nRyZQpwb3NpdGlvbm7pcyBkYW5zIHVuZSBzZWN0aW9uICdkZWZhdWx0cycgOgogIC0gbG9nIChsZSBwcmVtaWVyIGV0IGxlIHNlY29uZCkKICAtIG1vZGUgeyB0Y3AsIGh0dHAsIGhlYWx0aCB9CiAgLSBiYWxhbmNlIHsgcm91bmRyb2JpbiB9CiAgLSBkaXNhYmxlZCAocG91ciBk6XNhY3RpdmVyIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHF1aSBzdWl2ZW50KQogIC0gZW5hYmxlZCAocG91ciBmYWlyZSBsJ29w6XJhdGlvbiBpbnZlcnNlLCBtYWlzIGMnZXN0IGxlIGNhcyBwYXIgZOlmYXV0KQogIC0gY29udGltZW91dCwgY2xpdGltZW91dCwgc3J2dGltZW91dCwgZ3JhY2UsIHJldHJpZXMsIG1heGNvbm4KICAtIG9wdGlvbiB7IHJlZGlzcGF0Y2gsIHRyYW5zcGFyZW50LCBrZWVwYWxpdmUsIGZvcndhcmRmb3IsIGxvZ2FzYXAsIGh0dHBjbG9zZSwKICAgICAgICAgICAgIGNoZWNrY2FjaGUsIGh0dHBsb2csIHRjcGxvZywgZG9udGxvZ251bGwsIHBlcnNpc3QsIGh0dHBjaGsgfQogIC0gcmVkaXNwYXRjaCwgcmVkaXNwLCB0cmFuc3BhcmVudCwgc291cmNlIHsgYWRkcjpwb3J0IH0KICAtIGNvb2tpZSwgY2FwdHVyZQogIC0gZXJyb3Jsb2MKCk5lIHNvbnQgcGFzIHN1cHBvcnTpcyBkYW5zIGNldHRlIHZlcnNpb24sIGxlcyBhZHJlc3NlcyBkZSBkaXNwYXRjaCBldCBsZXMKY29uZmlndXJhdGlvbnMgZGUgc2VydmV1cnMsIGFpbnNpIHF1ZSB0b3VzIGxlcyBmaWx0cmVzIGJhc+lzIHN1ciBsZXMKZXhwcmVzc2lvbnMgculndWxp6HJlcyA6CiAgLSBkaXNwYXRjaCwgc2VydmVyLAogIC0gcmVxKiwgcnNwKgoKRW5maW4sIGlsIG4neSBhIHBhcyBsZSBtb3llbiwgcG91ciBsZSBtb21lbnQsIGQnaW52YWxpZGVyIHVuIHBhcmFt6HRyZSBib29s6WVuCnBvc2l0aW9ubukgcGFyIGTpZmF1dC4gRG9uYyBzaSB1bmUgb3B0aW9uIGVzdCBzcOljaWZp6WUgZGFucyBsZXMgcGFyYW3odHJlcyBwYXIKZOlmYXV0LCBsZSBzZXVsIG1veWVuIGRlIGxhIGTpc2FjdGl2ZXIgcG91ciB1bmUgaW5zdGFuY2UsIGMnZXN0IGRlIGNoYW5nZXIgbGVzCnBhcmFt6HRyZXMgcGFyIGTpZmF1dCBhdmFudCBsYSBk6WNsYXJhdGlvbiBkZSBsJ2luc3RhbmNlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgVENQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAxODAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDE4MDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwogICAgICAgIHJlZGlzcGF0Y2gKCiAgICBsaXN0ZW4gYXBwX3RjcDEgMTAuMC4wLjE6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgogICAgbGlzdGVuIGFwcF90Y3AyIDEwLjAuMC4yOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMi4yIGJhY2t1cAogICAgCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgSFRUUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAyMDAwMAogICAgICAgIHNydnRpbWVvdXQgMjAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKCiAgICBsaXN0ZW4gYXBwX2h0dHAxIDEwLjAuMC4xOjgwLTgxCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIGNhcHR1cmUgY29va2llIHVzZXJpZD0gbGVuIDEwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzgwMDAgY29va2llIHNydjEgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjorODAwMCBjb29raWUgc3J2MiBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAoKICAgIGRlZmF1bHRzCiAgICAgICAgIyBzZWN0aW9uIHZpZGUgcXVpIGFubnVsZSB0b3VzIGxlcyBwYXJhbeh0ZXMgcGFyIGTpZmF1dC4KCj09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3pdHJhZ2Ugc3lzdOhtZSB8Cj09PT09PT09PT09PT09PT09PT09PT09CgpTb3VzIExpbnV4IDIuNAo9PT09PT09PT09PT09PQoKLS0gY3V0IGhlcmUgLS0KIyEvYmluL3NoCiMgc2V0IHRoaXMgdG8gYWJvdXQgMjU2LzRNICgxNjM4NCBmb3IgMjU2TSBtYWNoaW5lKQpNQVhGSUxFUz0xNjM4NAplY2hvICRNQVhGSUxFUyA+IC9wcm9jL3N5cy9mcy9maWxlLW1heAp1bGltaXQgLW4gJE1BWEZJTEVTCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4IF07IHRoZW4KICAgICAgICBlY2hvIDY1NTM2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXgKZmkKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdCBdOyB0aGVuCiAgICAgICAgIyAzMCBzZWNvbmRzIGZvciBmaW4sIDE1IGZvciB0aW1lIHdhaXQKICAgICAgICBlY2hvIDMwMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0CiAgICAgICAgZWNobyAxNTAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF90aW1lX3dhaXQKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfaW52YWxpZF9zY2FsZQogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19vdXRfb2Zfd2luZG93CmZpCgplY2hvIDEwMjQgNjA5OTkgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfbG9jYWxfcG9ydF9yYW5nZQplY2hvIDMwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9maW5fdGltZW91dAplY2hvIDQwOTYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9zeW5fYmFja2xvZwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3R3X2J1Y2tldHMKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9vcnBoYW5zCmVjaG8gMzAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9rZWVwYWxpdmVfdGltZQplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3R3X3JlY3ljbGUKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90aW1lc3RhbXBzCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZWNuCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfc2FjawplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2RzYWNrCgojIGF1dG8tdHVuZWQgb24gMi40CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX21heAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9kZWZhdWx0CgplY2hvIDE2Mzg0IDY1NTM2IDUyNDI4OCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfcm1lbQplY2hvIDE2Mzg0IDM0OTUyMCA2OTkwNDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3dtZW0KCi0tIGN1dCBoZXJlIC0tCgpTb3VzIEZyZWVCU0QKPT09PT09PT09PT09CgpVbiBwb3J0IGRlIEhBLVByb3h5IHNvdXMgRnJlZUJTRCBlc3QgZOlzb3JtYWlzIGRpc3BvbmlibGUsIGdy4mNlIOAKQ2xlbWVudCBMYWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz4uCgpQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgOgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS91cmwuY2dpP3BvcnRzL25ldC9oYXByb3h5L3BrZy1kZXNjcgpodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3BvcnRzL25ldC9oYXByb3h5LwpodHRwOi8vd3d3LmZyZXNocG9ydHMub3JnL25ldC9oYXByb3h5CgoKLS0gZmluIC0tCg==