Content-Type: multipart/related; start=; boundary=----------QQo2awhRl3KeUZRR72vsx4
Content-Location: http://support.microsoft.com/kb/323527/es
Subject: =?utf-8?Q?C=C3=B3mo=20usar=20el=20Administrador=20de=20tareas=20de=20Windows?=
MIME-Version: 1.0
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=es.htm
Content-Type: text/html; charset=utf-8; name=es.htm
Content-ID:
Content-Location: http://support.microsoft.com/kb/323527/es
Content-Transfer-Encoding: Base64
DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBU
cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+DQo8aHRtbCBkaXI9Imx0ciIgbGFu
Zz0iZXMtRVMiPg0KPGhlYWQ+PHRpdGxlPg0KCUPDs21vIHVzYXIgZWwgQWRtaW5p
c3RyYWRvciBkZSB0YXJlYXMgZGUgV2luZG93cw0KPC90aXRsZT48bWV0YSBodHRw
LWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+PG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiIC8+PG1ldGEgaWQ9ImN0bDAwX2N0bDAwX1d0Q2FtcGFp
Z25JZCIgbmFtZT0iRENTZXh0Lnd0X2xpbmtpZCIgLz48bWV0YSBpZD0iY3RsMDBf
Y3RsMDBfV3RUYXJnZXQiIG5hbWU9IkRDU2V4dC53dF90YXJnZXQiIC8+PG1ldGEg
aWQ9ImN0bDAwX2N0bDAwX1d0U3AiIG5hbWU9IldULnNwIiAvPjxtZXRhIG5hbWU9
IkRDU2Rpci5nVHJhY2tFeGNlcHRpb25zIiBjb250ZW50PSJuby10cmFjayIgLz4N
CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIvU3R5bGVzL29uZU1zY29tTWFzdGVyLmNzcyIgLz4NCiAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc2NyaXB0cy9vbmVNc2NvbU1hc3Rl
ci5qcyI+PC9zY3JpcHQ+DQogICAgDQogICAgPGxpbmsgdGl0bGU9IkLDunNxdWVk
YSBkZSBTb3BvcnRlIGRlIE1pY3Jvc29mdCIgdHlwZT0iYXBwbGljYXRpb24vb3Bl
bnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgcmVsPSJzZWFyY2giIGhyZWY9Ii9jb21t
b24vb3BlbnNlYXJjaGRlc2NyaXB0b3IuYXNweD9sbj1lcy1lcyIgLz48bWV0YSBu
YW1lPSJtcy5nc2Z4dmVyc2lvbiIgY29udGVudD0iOC4xLjEuMCIgLz48bWV0YSBu
YW1lPSJtcy5zdXBfY2lkIiBjb250ZW50PSIzMjM1MjciIC8+PG1ldGEgbmFtZT0i
bXMuc3VwX2NsbiIgY29udGVudD0iZXMiIC8+PG1ldGEgbmFtZT0ibXMuc3VwX2N0
IiBjb250ZW50PSJrYiIgLz48bWV0YSBuYW1lPSJtcy5zdXBfbG4iIGNvbnRlbnQ9
ImVzLWVzIiAvPjxtZXRhIG5hbWU9Im1zLnN1cF9zZCIgY29udGVudD0iZ24iIC8+
PG1ldGEgbmFtZT0iRENTZXh0LnN1cF9jaWQiIGNvbnRlbnQ9IjMyMzUyNyIgLz48
bWV0YSBuYW1lPSJEQ1NleHQuc3VwX2NsbiIgY29udGVudD0iZXMiIC8+PG1ldGEg
bmFtZT0iRENTZXh0LnN1cF9jdCIgY29udGVudD0ia2IiIC8+PG1ldGEgbmFtZT0i
RENTZXh0LnN1cF9sbiIgY29udGVudD0iZXMtZXMiIC8+PG1ldGEgbmFtZT0iRENT
ZXh0LnN1cF9zZCIgY29udGVudD0iZ24iIC8+PHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPnZhciBnQ29va2llRG9tYWluPSdzdXBwb3J0Lm1pY3Jvc29mdC5j
b20nOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Imh0dHA6Ly9hamF4LmFzcG5ldGNkbi5jb20vYWpheC9qUXVlcnkvanF1ZXJ5LTEu
Ny4xLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIvY29tbW9uL3NjcmlwdC9nc2Z4L2RlZmF1bHQuanM/NzYiPjwvc2NyaXB0
PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zZXRjb29raWV2YWwoImdz
c1NJVEUiLCJnbiIsJycsdHJ1ZSk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPnNldGNvb2tpZXZhbCgiZ3NzVEhFTUUiLCJnbiIsJycsdHJ1
ZSk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnNldGNv
b2tpZXZhbCgiZ3NzVE9PTEJBUiIsImduIiwnJyx0cnVlKTs8L3NjcmlwdD48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIGdfY3VycmVudENvbnRlbnQ9
J2tiXHgzYmVzXHgzYjMyMzUyNyc7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1vbi9zY3JpcHQvZngvc3VydmV5LmpzPzc2
Ij48L3NjcmlwdD48bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9IiIgLz48bWV0
YSBuYW1lPSJTZWFyY2gubGNpZCIgY29udGVudD0iMTAzNCIgLz48bWV0YSBuYW1l
PSJTZWFyY2guS2V5V29yZHMiIGNvbnRlbnQ9ImtiaG93dG9tYXN0ZXIgS0IzMjM1
MjciIC8+PG1ldGEgbmFtZT0iU2VhcmNoLkRhdGVNb2RpZmllZCIgY29udGVudD0i
MjAwNi0xMS0wMlQxNjoyMzowMCIgLz48bWV0YSBuYW1lPSJTZWFyY2guRGVzY3Jp
cHRpb24iIGNvbnRlbnQ9IkVuIGVzdGUgYXJ0w61jdWxvIHNlIGRlc2NyaWJlIGPD
s21vIHV0aWxpemFyIGVsIEFkbWluaXN0cmFkb3IgZGUgdGFyZWFzIGRlIFdpbmRv
d3MuIFRhbWJpw6luIHNlIGV4cGxpY2EgY8OzbW8gcmVhbGl6YXIgYWxndW5vcyBw
cm9jZWRpbWllbnRvcyB1dGlsaXphZG9zIGNvbiBmcmVjdWVuY2lhLCBjb21vIGlu
aWNpYXIgcHJvZ3JhbWFzLCBmaW5hbGl6YXIgcHJvY2Vzb3MgeSBzdXBlcnZpc2Fy
IGVsIHJlbmRpbWllbnRvIGRlbCBlcXVpcG8uIEVsLi4uIiAvPjxtZXRhIG5hbWU9
IlNlYXJjaC5LQlBhcmVudHMiIGNvbnRlbnQ9IjU4ODcgMzE5OCAxMTYzIDU4OTEg
NzM0MSA3Mjc0IDExMzEgNzk0MCA3MDE3IDU3MzIgMzA3MSA2NzI4IDMyMjMgMTE3
MyA1OTE3IDMyMjEiIC8+PG1ldGEgbmFtZT0iU2VhcmNoLkFzc2V0cyIgY29udGVu
dD0iMSIgLz48bWV0YSBuYW1lPSJTZWFyY2guUmV0aXJlIiBjb250ZW50PSIwIiAv
PjxtZXRhIG5hbWU9IlNlYXJjaC5Qcm9kdWN0cyIgY29udGVudD0iNDIyMDQgNDIy
MDggMjQxNjIzIDI3NTMyOCA0MjA3MCAxODU4MTIgNDIyMzIiIC8+PG1ldGEgbmFt
ZT0iU2VhcmNoLlF1ZXJ5V29yZHMiIGNvbnRlbnQ9IiIgLz48bWV0YSBuYW1lPSJT
ZWFyY2guQ29udGVudElEIiBjb250ZW50PSIzMjM1MjciIC8+PG1ldGEgbmFtZT0i
U2VhcmNoLkF1ZGllbmNlcyIgY29udGVudD0ia2JBdWRJVFBybyIgLz48bWV0YSBu
YW1lPSJTZWFyY2guVGl0bGUiIGNvbnRlbnQ9IkPDs21vIHVzYXIgZWwgQWRtaW5p
c3RyYWRvciBkZSB0YXJlYXMgZGUgV2luZG93cyIgLz48bWV0YSBuYW1lPSJLQlBh
cmVudHMiIGNvbnRlbnQ9IjU4ODcgMzE5OCAxMTYzIDU4OTEgNzM0MSA3Mjc0IDEx
MzEgNzk0MCA3MDE3IDU3MzIgMzA3MSA2NzI4IDMyMjMgMTE3MyA1OTE3IDMyMjEi
IC8+PG1ldGEgbmFtZT0iU2VhcmNoLkNvbnRlbnRUeXBlIiBjb250ZW50PSJrYiIg
Lz48bWV0YSBuYW1lPSJTZWFyY2guc2NpZCIgY29udGVudD0ia2I7ZXM7MzIzNTI3
IiAvPjxtZXRhIG5hbWU9IlNlYXJjaC5NVCIgY29udGVudD0iMCIgLz48bWV0YSBu
YW1lPSJTZWFyY2guS0IzIiBjb250ZW50PSIwIiAvPjxtZXRhIG5hbWU9IktleXdv
cmRzIiBjb250ZW50PSJrYmhvd3RvbWFzdGVyIEtCMzIzNTI3IiAvPjxtZXRhIG5h
bWU9IkRlc2NyaXB0aW9uIiBjb250ZW50PSJFbiBlc3RlIGFydMOtY3VsbyBzZSBk
ZXNjcmliZSBjw7NtbyB1dGlsaXphciBlbCBBZG1pbmlzdHJhZG9yIGRlIHRhcmVh
cyBkZSBXaW5kb3dzLiBUYW1iacOpbiBzZSBleHBsaWNhIGPDs21vIHJlYWxpemFy
IGFsZ3Vub3MgcHJvY2VkaW1pZW50b3MgdXRpbGl6YWRvcyBjb24gZnJlY3VlbmNp
YSwgY29tbyBpbmljaWFyIHByb2dyYW1hcywgZmluYWxpemFyIHByb2Nlc29zIHkg
c3VwZXJ2aXNhciBlbCByZW5kaW1pZW50byBkZWwgZXF1aXBvLiBFbC4uLiIgLz48
bWV0YSBuYW1lPSJNUy5MT0NBTEUiIGNvbnRlbnQ9ImVzIiAvPjxtZXRhIGh0dHAt
ZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04IiAvPjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtbGFuZ3VhZ2UiIGNv
bnRlbnQ9ImVzLUVTIiAvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52
YXIgdXJsX2V4YWN0TWF0Y2g9Jy9zZWxlY3QvRGVmYXVsdC5hc3B4P3RhcmdldD1h
c3Npc3RhbmNlJzs8L3NjcmlwdD48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBocmVmPSIvY29tbW9uL2Nzcy9kZWZhdWx0L2RlZmF1bHQuY3Nz
Pzc2IiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii9jb21tb24vY3NzL2RlZmF1bHQvWG1sQ29udGVudC5jc3M/NzYiIC8+PHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2NvbW1vbi9zY3JpcHQv
Z3NmeC9rYi5qcz83NiI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2NvbW1vbi9jc3MvZGVmYXVsdC9sYW5ndWFn
ZXMvbG9uZ1dvcmRMYW5nLmNzcz83NiIgLz48bGluayByZWw9InN0eWxlc2hlZXQi
IHR5cGU9InRleHQvY3NzIiBocmVmPSIvY29tbW9uL2Nzcy9kZWZhdWx0L2JyYW5k
aW5nLmNzcz83NiIgLz4KPCEtLSBSRVNHOiA5LzEvMjAxMiA5OjU1OjU1IEFNIC0g
UkVTWDogMS8xLzAwMDEgMTI6MDA6MDAgQU0gLS0+CjwhLS0gKGMpIDIwMTIgTWlj
cm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkIC0tPgo8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPmh0bWwgYm9keSwgaHRtbCBzZWxlY3QsIGh0bWwg
aW5wdXQsIGh0bWwgZm9ybSwgaHRtbCB0ZXh0YXJlYXtmb250LWZhbWlseSA6IFNl
Z29lIFVJLCBBcmlhbCwgVmVyZGFuYSwgVGFob21hLCBzYW5zLXNlcmlmO308L3N0
eWxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgUGVyc29uYWxp
emF0aW9uSW5mbz0nYTJJek1qTTFNamNJWlhNSVE4T3piVzhnZFhOaGNpQmxiQ0JC
WkcxcGJtbHpkSEpoWkc5eSc7PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2NvbW1vbi9jc3MvZngvc3VydmV5dHJp
Z2dlci5jc3M/NzYiID48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIvY29tbW9uL3NjcmlwdC9meC9zdXJ2ZXljb29raWV1dGlsLmpzPzc2Ij48L3Nj
cmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY29tbW9u
L3NjcmlwdC9meC9zdXJ2ZXl0cmlnZ2VyLmpzPzc2Ij48L3NjcmlwdD48c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY29tbW9uL3NjcmlwdC9nc2Z4
L3NlYXJjaC5qcz83NiI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iL2NvbW1vbi9zY3JpcHQvZ3NmeC9hYy5qcz83NiI+PC9zY3Jp
cHQ+ICAgIA0KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgICNn
c2Z4X2JybmRfUGFnZVdyYXBwZXINCiAgICAgICAgew0KICAgICAgICAgICAgZmxv
YXQ6IGxlZnQ7DQogICAgICAgIH0gICAgICAgIA0KICAgICAgICBkaXYuc3RhZ2Us
IGRpdi5tc3RIZHINCiAgICAgICAgew0KICAgICAgICAgICAgd2lkdGg6IDEwMjRw
eDsNCiAgICAgICAgfQ0KICAgICAgICBkaXYuc2VhcmNoLW5hdmlnYXRpb24NCiAg
ICAgICAgew0KICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OyAgICANCiAg
ICAgICAgfQ0KICAgICAgICAjY29udGVudEFyZWENCiAgICAgICAgew0KICAgICAg
ICAgICAgYm9yZGVyLWJvdHRvbTogMHB4OyAgICAgICANCiAgICAgICAgfSAgICAg
ICAgDQogICAgPC9zdHlsZT4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoNCiAg
IGJvZHkgDQogICAgew0KICAgICAgICBjb2xvcjogIzAwMDsNCiAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2VjZWNlYzsNCiAgICAgICANCiAgICB9DQoNCiAgICBi
b2R5LCBpbnB1dCANCiAgICB7DQogICAgICAgIGZvbnQtc2l6ZTogMTAwJTsNCiAg
ICB9DQoNCiAgICBib2R5LCBzZWxlY3QgDQogICAgew0KICAgICAgICBmb250LWZh
bWlseTogU2Vnb2UgVUksQXJpYWwsVmVyZGFuYSxUYWhvbWEsc2Fucy1zZXJpZjsN
CiAgICB9DQoNCiAgICAucG5nLWltZyBzcGFuIA0KICAgIHsNCiAgICAgICAgbGVm
dDogLTk5OTlweDsNCiAgICB9DQoNCiAgICANCg0KICAgIGRpdi5mb3JtLWJvdHRv
bS1pbm5lciANCiAgICB7DQogICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2VjZWM7
DQogICAgICAgIGxlZnQ6IDA7DQogICAgfQ0KICAgIA0KICAgIGRpdi5zdGFnZS1i
Zy10b3AgDQogICAgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0K
ICAgICAgICBsZWZ0OiAwOw0KICAgIH0NCg0KICAgIGRpdi5zdGFnZS1iZy1taWQg
DQogICAgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICAgICAg
ICBsZWZ0OiAwOw0KICAgIH0NCg0KICAgIGRpdi5zdGFnZS1iZy1ib3QgDQogICAg
ew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOw0KICAgICAgICBsZWZ0
OiAwOw0KICAgIH0NCiAgICANCiAgICBkaXYubWFpbi1icmFuZCBkaXYNCiAgICB7
DQogICAgICAgIGZsb2F0OiBsZWZ0Ow0KICAgIH0NCiAgICBkaXYubWFpbi1icmFu
ZCBkaXYuYnJhbmRMb2dvVGV4dCBhDQogICAgew0KICAgICAgICBjb2xvcjogIzRm
NGY0ZjsNCiAgICAgICAgZm9udC1zaXplOiAxODglOw0KICAgIH0NCg0KICAgIGRp
di5tYWluLWJyYW5kIGRpdi5icmFuZFRhZ0xpbmVUZXh0IGENCiAgICB7DQogICAg
ICAgIGNvbG9yOiAjNGY0ZjRmOw0KICAgICAgICBmb250LXNpemU6IDgwJTsNCiAg
ICB9DQogICAgDQogICAgIDwhLS1baWYgIUlFIDddPg0KICAgIC5wbmctaW1nIGRp
diANCiAgICB7DQogICAgICAgIGxlZnQ6IDA7DQogICAgfQ0KICAgICAgPCFbZW5k
aWZdLS0+DQogICAgDQo8L3N0eWxlPjwvaGVhZD4NCjxib2R5IGJpOnR5cGU9Im9u
ZU1zY29tTWFzdGVyIj4NCiAgICA8IS0tZHluYW1pYyBzdHlsZS0tPg0KICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gICAgICAgIGlmICh0eXBlb2Yg
V1RPcHRpbWl6ZSAhPSAndW5kZWZpbmVkJykgV1RPcHRpbWl6ZS5zZXR1cCgpOzwv
c2NyaXB0Pg0KICAgIA0KDQo8ZGl2IGlkPSJvbmVNc2NvbUpzQ3NzTG9hZGVyIj4N
Cg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii9TdHlsZXMvb25lbXNjb21jb21wb25lbnRzLmNzcyIgLz4NCiAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvU3R5bGVz
L29uZU1zY29tTGlzdExheW91dC5jc3MiIC8+DQoNCiAgICANCiAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvU3R5bGVzL29u
ZU1zY29tQmxhZGUuY3NzIiAvPg0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ii9zY3JpcHRzL29uZU1zY29tQmxhZGUuanMiPjwvc2NyaXB0
Pg0KICAgIA0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIGhyZWY9Ii9TdHlsZXMvb25lbXNjb21mb290ZXIuY3NzIiAvPg0KICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zY3JpcHRzL29uZW1z
Y29tZm9vdGVyLmpzIj48L3NjcmlwdD4NCiAgICANCiAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvU3R5bGVzL29uZU1zY29t
TmF2LmNzcyIgLz4NCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIvc2NyaXB0cy9vbmVNc2NvbU5hdi5qcyI+PC9zY3JpcHQ+DQogICAgPGRp
diBpZD0iY3RsMDBfY3RsMDBfSnNDc3NMb2FkZXJDdGxfb25lTXNjb21Mb2FkZWRD
b21wb25lbnQiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+b25lTXNjb21CbGFkZSxv
bmVNc29tTmF2LG9uZU1zY29tRm9vdGVyLDwvZGl2Pg0KICAgIDxkaXYgaWQ9ImN0
bDAwX2N0bDAwX0pzQ3NzTG9hZGVyQ3RsX29uZU1zY29tQ29tcG9uZW50RHluYW1p
Y1N0eWxlIj4NCiAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICAg
ICAgICAgIA0KICAgICAgICAubXN0SGRyIHtmb250LWZhbWlseTpTZWdvZSBVSSxB
cmlhbCxWZXJkYW5hLFRhaG9tYSxzYW5zLXNlcmlmO30ubXN0SGRyIC5tc3RIZHJf
UHJpUm93Qmcge2JhY2tncm91bmQtY29sb3I6IzQ2NDY0NjtvcGFjaXR5OjE7Zmls
dGVyOmFscGhhKG9wYWNpdHk9MTAwKTtfb3BhY2l0eToxO19maWx0ZXI6YWxwaGEo
b3BhY2l0eT0xMDApO30ubXN0SGRyIC5tc3RIZHJfUHJpUm93IHtfYmFja2dyb3Vu
ZC1jb2xvcjojNDY0NjQ2O30ubXN0SGRyIC5tc3RIZHJfUHJpUm93LCAubXN0SGRy
IC5tc3RIZHJfUHJpUm93IGE6bGluaywgLm1zdEhkciAubXN0SGRyX1ByaVJvdyBh
OnZpc2l0ZWQsIC5tc3RIZHIgLm1zdEhkcl9QcmlSb3cgYTphY3RpdmUsIC5tc3RI
ZHIgLm1zdEhkcl9QcmlSb3cgYTpob3ZlciB7Y29sb3I6I2ZmZmZmZjt9Lm1zdEhk
ciAubXN0SGRyX1N0YXRpY1NlYzExLC5tc3RIZHIgLm1zdEhkcl9TdGF0aWNTZWMx
MiwubXN0SGRyIC5tc3RIZHJfU3RhdGljU2VjMTMsIC5tc3RIZHIgLm1zdEhkcl9T
dGF0aWNTZWMyMiB7ZmxvYXQ6bGVmdDt9Lm1zdEhkciAubXN0SGRyX1N0YXRpY1Nl
YzE0LC5tc3RIZHIgLm1zdEhkcl9TdGF0aWNTZWMyMSB7ZmxvYXQ6cmlnaHQ7fS5t
c3RIZHIgLm1zdEhkcl9TdGF0aWNTZWNMZWZ0QWxpZ24ge2Zsb2F0OmxlZnQ7fS5t
c3RIZHIgLm1zdEhkcl9TdGF0aWNTZWNSaWdodEFsaWduIHtmbG9hdDpyaWdodDt9
Lm1zdEhkciAubXN0SGRyX0ZseW91dFBvcyB7bGVmdDogMDt9Lm1zdEhkciAubXN0
SGRyX1ByaVJvdyAubXN0SGRyX0ZseW91dCB7YmFja2dyb3VuZC1jb2xvcjojNDY0
NjQ2O30ubXN0SGRyIC5tc3RIZHJfUHJpUm93IC5tc3RIZHJfRmx5b3V0LCAubXN0
SGRyIC5tc3RIZHJfUHJpUm93IC5tc3RIZHJfRmx5b3V0IGE6bGluaywgLm1zdEhk
ciAubXN0SGRyX1ByaVJvdyAubXN0SGRyX0ZseW91dCBhOnZpc2l0ZWQsIC5tc3RI
ZHIgLm1zdEhkcl9QcmlSb3cgLm1zdEhkcl9GbHlvdXQgYTphY3RpdmUsIC5tc3RI
ZHIgLm1zdEhkcl9QcmlSb3cgLm1zdEhkcl9GbHlvdXQgYTpob3ZlciB7Y29sb3I6
I2ZmZmZmZjt9Lm1zdEhkciAubXN0TGNwIC5tc3RMY3BfSGVhZCB7bWFyZ2luLWxl
ZnQ6IDVweDt9Lm1zdEhkciAubXN0TGNwX0hlYWRpbmcgaDMge2ZvbnQtZmFtaWx5
OiBTZWdvZSBVSSBMaWdodCxTZWdvZSBVSSxBcmlhbCxWZXJkYW5hLFRhaG9tYSxz
YW5zLXNlcmlmO2NvbG9yOiNmZmZmZmY7fS5tc3RIZHIgLm1zdExjcF9MYW5nTGlu
a3MgdWwubXN0TGNwX0NvbCB7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDogNnB4O30u
bXN0SGRyIC5tc3RMY3BfTGFuZ0xpbmtzIHVsLm1zdExjcF9Db2wubXN0TGNwX0Mw
IHttYXJnaW4tbGVmdDogMDt9Lm1zdEhkciAubXN0TGNwX0xhbmdMaW5rcyB1bC5t
c3RMY3BfQ29sIGxpIHttYXJnaW4tbGVmdDogNXB4O30ubXN0SGRyIC5tc3RMY3Bf
TGFuZ0xpbmtzIHVsLm1zdExjcF9Db2wubXN0TGNwX0MwIGxpIHttYXJnaW4tbGVm
dDogMDt9Lm1zdEhkciAubXN0TGNwX0xhbmdMaW5rcyBhOmxpbmssLm1zdEhkciAu
bXN0TGNwX0xhbmdMaW5rcyBhOnZpc2l0ZWQsLm1zdEhkciAubXN0TGNwX1dvcmxk
d2lkZUxpbmsgYTpsaW5rLC5tc3RIZHIgLm1zdExjcF9Xb3JsZHdpZGVMaW5rIGE6
dmlzaXRlZCB7Y29sb3I6I2ZmZmZmZjt9Lm1zdEhkciAubXN0TGNwX0xhbmdMaW5r
cyBsaS5tc3RMY3BfSGlkZSBhIHtjb2xvcjojZTNlM2UzICFpbXBvcnRhbnQ7fS5t
c3RIZHIgLm1zdExjcF9Xb3JsZHdpZGVMaW5rIGEge2Zsb2F0OmxlZnQ7fS5tc3RI
ZHIgLm1zdEhkcl9GbHlvdXQgLm1zdEhkcl9QcmRMYXlvdXRBIHtwYWRkaW5nLXRv
cDogMzBweDttaW4taGVpZ2h0OiAyODBweDtfaGVpZ2h0OiAyODBweDtfd2lkdGg6
IDk2MHB4O30ubXN0SGRyIC5tc3RIZHJfRmx5b3V0IC5tc3RIZHJfUHJkTGF5b3V0
QSAubXN0SGRyX1ByZFNlY3Rpb24zMSB7ZmxvYXQ6bGVmdDtwYWRkaW5nLWxlZnQ6
IDQwcHg7fS5tc3RIZHIgLm1zdEhkcl9GbHlvdXQgLm1zdEhkcl9QcmRMYXlvdXRB
IC5tc3RIZHJfUHJkU2VjdGlvbjMxIC5tc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdl
IHtmbG9hdDpsZWZ0O30ubXN0SGRyIC5tc3RIZHJfRmx5b3V0IC5tc3RIZHJfUHJk
TGF5b3V0QSAubXN0SGRyX1ByZFNlY3Rpb24zMSAubXN0SGRyX1ByZFNlY3Rpb24z
MV9JdGVtIC5tc3RIZHJfUHJkU2VjdGlvbjMxX1RleHQge2Zsb2F0OmxlZnQ7bWFy
Z2luLWxlZnQ6IDIwcHg7fS5tc3RIZHIgLm1zdEhkcl9GbHlvdXQgLm1zdEhkcl9Q
cmRTZWN0aW9uMzIge2Zsb2F0OmxlZnQ7d2lkdGg6MjMwcHg7fS5tc3RIZHIgLm1z
dEhkcl9GbHlvdXQgLm1zdEhkcl9QcmRTZWN0aW9uMzMge2Zsb2F0OmxlZnQ7fS5t
c3RIZHIgLm1zdEhkcl9BbmltYXRlRGVzYyBkaXYubXN0SGRyX01lbnVMaW5rRGVz
YyB7cGFkZGluZy1sZWZ0OiAzcHg7fS5tc3RIZHIgLm1zdEhkcl9TZWNSb3d7YmFj
a2dyb3VuZC1jb2xvcjo7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7fS5tc3RI
ZHIgLm1zdEhkcl9NZW51TGluaywubXN0SGRyIC5tc3RIZHJfU2lnbkluT3V0e2Zv
bnQtc2l6ZTo2Mi41JTtfZm9udC1zaXplOjU3LjUlO30ubXN0SGRyIC5tc3RIZHJf
Q3BzQVN0YXRpY1NlY0xlZnRBbGlnbiB7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO30u
bXN0SGRyIC5kaXZBIHtib3JkZXItcmlnaHQ6IHNvbGlkIDFweCBibGFjazt9Lm9u
ZU1zY29tTmF2IHtjb2xvcjojMDAwO30ub25lTXNjb21OYXYsLm9uZU1zY29tTmF2
IGlucHV0IHtmb250LXNpemU6MTAwJTt9Lm9uZU1zY29tTmF2LC5vbmVNc2NvbU5h
diBzZWxlY3Qge2ZvbnQtZmFtaWx5OlNlZ29lIFVJLEFyaWFsLFZlcmRhbmEsVGFo
b21hLHNhbnMtc2VyaWY7fWRpdi5vbmVNc2NvbU5hdiAuTmF2X3Nob3duIHtkaXNw
bGF5OiBibG9jaztyaWdodDpub25lO30ub25lTXNjb21OYXYgZGl2Lm5hdmlnYXRp
b24tNGxldmVsLXN0cmlwIHtmbG9hdDpsZWZ0O31kaXYub25lTXNjb21OYXYgLm5h
dmlnYXRpb24tc2VjdGlvbiB7dGV4dC1hbGlnbjpsZWZ0O31kaXYub25lTXNjb21O
YXYgLm5hdmlnYXRpb24taXRlbSB7ZmxvYXQ6bGVmdDt9fWRpdi5vbmVNc2NvbU5h
diAubmF2aWdhdGlvbi1pdGVtLWZseW91dC1jb250ZW50IC5uYXZpZ2F0aW9uLWl0
ZW0ge2Zsb2F0OmxlZnQ7fWRpdi5vbmVNc2NvbU5hdiBkaXYubmF2aWdhdGlvbi1p
dGVtLWZseW91dC1jb250ZW50LXNob3duIHtyaWdodDogMDt9Lm9uZU1zY29tTmF2
IGRpdi5uYXZpZ2F0aW9uLXN1YiB7ZmxvYXQ6bGVmdDt9ZGl2Lm5hdmlnYXRpb24t
c3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVtIHtmbG9hdDpsZWZ0O31kaXYubmF2aWdh
dGlvbi1zdWIgLnNlbGVjdGVkIC5maXJzdCB7Ym9yZGVyLWxlZnQ6IDA7fWRpdi5u
YXZpZ2F0aW9uLXN1YiAubmF2aWdhdGlvbi1zdWItaXRlbS1mbHlvdXQtY29udGVu
dCAubmF2aWdhdGlvbi1zdWItaXRlbSB7ZmxvYXQ6bGVmdDt9ZGl2Lm5hdmlnYXRp
b24tc3ViIGRpdi5uYXZpZ2F0aW9uLXN1Yi1pdGVtLWZseW91dC1jb250ZW50LXNo
b3duIHtyaWdodDogMDt9ZGl2Lm5hdmlnYXRpb24tc3ViIC5saW5rcyB7bWFyZ2lu
LWxlZnQ6IDAuNWVtO31kaXYub25lTXNjb21OYXYgLm5hdmlnYXRpb24taXRlbS10
YWIge3Bvc2l0aW9uOiByZWxhdGl2ZTtjb2xvcjojNGY0ZjRmO2ZvbnQtc2l6ZTo4
MCU7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci13aWR0aDogMHB4IDFw
eCAwcHggMXB4O31kaXYubmF2aWdhdGlvbi1zdWIgLm5hdmlnYXRpb24tc3ViLWl0
ZW0tdGFiIHtwb3NpdGlvbjogcmVsYXRpdmU7Y29sb3I6IzRmNGY0Zjtmb250LXNp
emU6ODAlO2JvcmRlci13aWR0aDogMHB4IDFweCAwcHggMXB4O30ub25lTXNjb21O
YXYgZGl2Lm5hdk1lbnUge2ZvbnQtZmFtaWx5OlNlZ29lIFVJLEFyaWFsLFZlcmRh
bmEsVGFob21hLHNhbnMtc2VyaWY7fWRpdi5vbmVNc2NvbU5hdiAubmF2aWdhdGlv
bi1iZyB7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O31kaXYub25lTXNjb21OYXYg
LnNlbGVjdGVkIC5uYXZpZ2F0aW9uLWl0ZW0tdGFiIHtiYWNrZ3JvdW5kLWNvbG9y
OiNmZmZmZmY7Y29sb3I6IzRmNGY0Zjtib3JkZXItY29sb3I6I2ZmZmZmZjt6LWlu
ZGV4OiA5OTY7fWRpdi5vbmVNc2NvbU5hdiAuc2VsZWN0ZWQgLm5hdmlnYXRpb24t
aXRlbS10YWIgYTpsaW5rLGRpdi5vbmVNc2NvbU5hdiAuc2VsZWN0ZWQgLm5hdmln
YXRpb24taXRlbS10YWIgYTp2aXNpdGVkLGRpdi5vbmVNc2NvbU5hdiAuc2VsZWN0
ZWQgLm5hdmlnYXRpb24taXRlbS10YWIgYTphY3RpdmUge2NvbG9yOiM0ZjRmNGY7
fWRpdi5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLXRhYiBhIHtib3JkZXIt
Y29sb3I6I2Y4ZjhmODt9ZGl2Lm9uZU1zY29tTmF2IC5zZWxlY3RlZCAubmF2aWdh
dGlvbi1pdGVtLXRhYiBhOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7
Y29sb3I6IzRmNGY0Zjtib3JkZXItY29sb3I6I2ZmZmZmZjt9ZGl2Lm9uZU1zY29t
TmF2IC5uYXZpZ2F0aW9uLWl0ZW0tdGFiIGE6bGluayxkaXYub25lTXNjb21OYXYg
Lm5hdmlnYXRpb24taXRlbS10YWIgYTp2aXNpdGVkLGRpdi5vbmVNc2NvbU5hdiAu
bmF2aWdhdGlvbi1pdGVtLXRhYiBhOmFjdGl2ZSB7Y29sb3I6IzRmNGY0Zjt9ZGl2
Lm9uZU1zY29tTmF2IC5uYXZpZ2F0aW9uLWl0ZW0tdGFiIGE6aG92ZXIge2NvbG9y
OiM0ZjRmNGY7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O2JvcmRlci1jb2xvcjoj
ZjhmOGY4O31kaXYub25lTXNjb21OYXYgLm5hdmlnYXRpb24taXRlbS1mbHlvdXQg
Lm5hdmlnYXRpb24tbGV2ZWwyIHtib3JkZXI6I2UwZTBlMCAxcHggc29saWQ7YmFj
a2dyb3VuZC1jb2xvcjojRkZGRkZGO2ZvbnQtc2l6ZTo4MCU7fWRpdi5vbmVNc2Nv
bU5hdiAubmF2aWdhdGlvbi1pdGVtLWZseW91dCAubmF2aWdhdGlvbi1sZXZlbDIg
LmxpbmtzIHt3aWR0aDoxNzhweDtmbG9hdDpsZWZ0O31kaXYub25lTXNjb21OYXYg
Lm5hdmlnYXRpb24taXRlbS1mbHlvdXQgLnZlcnRpY2FsX3NwbGl0IHtib3JkZXIt
cmlnaHQ6IHNvbGlkIDFweCAjRTNFM0UzO31kaXYub25lTXNjb21OYXYgLm5hdmln
YXRpb24taXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tbGV2ZWwyIC5saW5rcyBhLGRp
di5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLWZseW91dCAubmF2aWdhdGlv
bi1sZXZlbDIgLmxpbmtzIGE6bGluayxkaXYub25lTXNjb21OYXYgLm5hdmlnYXRp
b24taXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tbGV2ZWwyIC5saW5rcyBhOnZpc2l0
ZWQsZGl2Lm9uZU1zY29tTmF2IC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZp
Z2F0aW9uLWxldmVsMiAubGlua3MgYTphY3RpdmUge2NvbG9yOiM0ZjRmNGY7fWRp
di5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLWZseW91dCAubmF2aWdhdGlv
bi1sZXZlbDIgLmxpbmtzIGE6aG92ZXIge2NvbG9yOiM0ZjRmNGY7YmFja2dyb3Vu
ZC1jb2xvcjojZWNlY2VjO31kaXYub25lTXNjb21OYXYgLm5hdmlnYXRpb24taXRl
bS1mbHlvdXQgLm5hdmlnYXRpb24tbGV2ZWwzIHtib3JkZXI6I2UwZTBlMCAxcHgg
c29saWQ7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGO31kaXYub25lTXNjb21OYXYg
Lm5hdmlnYXRpb24taXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tbGV2ZWwzIC5saW5r
cyB7d2lkdGg6MTc4cHg7ZmxvYXQ6bGVmdDt9ZGl2Lm9uZU1zY29tTmF2IC5uYXZp
Z2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLWxldmVsMyAubGlua3MgLmxp
bmstZ3JvdXAgYSxkaXYub25lTXNjb21OYXYgLm5hdmlnYXRpb24taXRlbS1mbHlv
dXQgLm5hdmlnYXRpb24tbGV2ZWwzIC5saW5rcyAubGluay1ncm91cCBhOmxpbmss
ZGl2Lm9uZU1zY29tTmF2IC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0
aW9uLWxldmVsMyAubGlua3MgLmxpbmstZ3JvdXAgYTp2aXNpdGVkLGRpdi5vbmVN
c2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLWZseW91dCAubmF2aWdhdGlvbi1sZXZl
bDMgLmxpbmtzIC5saW5rLWdyb3VwIGE6aG92ZXIsZGl2Lm9uZU1zY29tTmF2IC5u
YXZpZ2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLWxldmVsMyAubGlua3Mg
LmxpbmstZ3JvdXAgYTphY3RpdmUge2NvbG9yOiM0ZjRmNGY7YmFja2dyb3VuZC1j
b2xvcjojRkZGRkZGO2ZvbnQtc2l6ZTo4MCU7fWRpdi5vbmVNc2NvbU5hdiAubmF2
aWdhdGlvbi1pdGVtLWZseW91dCAubmF2aWdhdGlvbi1sZXZlbDMgLmxpbmstZ3Jv
dXAgYSB7Zm9udC1zaXplOjgwJTtjb2xvcjojNGY0ZjRmO31kaXYub25lTXNjb21O
YXYgLmxpbmstZ3JvdXAtYm90dG9tLWJvcmRlciB7Ym9yZGVyLWJvdHRvbTogc29s
aWQgMXB4ICNlM2UzZTM7fWRpdi5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVt
LWZseW91dCAubmF2aWdhdGlvbi1sZXZlbDMgLmxpbmtzIGEsZGl2Lm9uZU1zY29t
TmF2IC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLWxldmVsMyAu
bGlua3MgYTpsaW5rLGRpdi5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLWZs
eW91dCAubmF2aWdhdGlvbi1sZXZlbDMgLmxpbmtzIGE6dmlzaXRlZCxkaXYub25l
TXNjb21OYXYgLm5hdmlnYXRpb24taXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tbGV2
ZWwzIC5saW5rcyBhOmFjdGl2ZSB7Y29sb3I6IzRmNGY0Zjt9ZGl2Lm9uZU1zY29t
TmF2IC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLWxldmVsMyAu
bGlua3MgYTpob3ZlciB7Y29sb3I6IzRmNGY0ZjtiYWNrZ3JvdW5kLWNvbG9yOiNl
Y2VjZWM7fWRpdi5vbmVNc2NvbU5hdiAubmF2aWdhdGlvbi1pdGVtLWZseW91dCAu
bmF2aWdhdGlvbi1sZXZlbDMgLmxpbmtzIGEge2ZvbnQtc2l6ZTo4MCU7Y29sb3I6
IzRmNGY0Zjt9ZGl2Lm9uZU1zY29tTmF2IC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0
IC5uYXZpZ2F0aW9uLWxldmVsNCB7Ym9yZGVyOiNlMGUwZTAgMXB4IHNvbGlkO31k
aXYubmF2aWdhdGlvbi1zdWIgLm5hdmlnYXRpb24tc3ViLWJnIHtiYWNrZ3JvdW5k
LWNvbG9yOiM0ZjRmNGY7fWRpdi5uYXZpZ2F0aW9uLXN1YiAuc2VsZWN0ZWQgLm5h
dmlnYXRpb24tc3ViLWl0ZW0tdGFiIHtiYWNrZ3JvdW5kLWNvbG9yOiM0ZjRmNGY7
Y29sb3I6IzRmNGY0Zjtib3JkZXItY29sb3I6I2VjZWNlYzt9ZGl2Lm5hdmlnYXRp
b24tc3ViIC5zZWxlY3RlZCAubmF2aWdhdGlvbi1zdWItaXRlbS10YWIgYTpsaW5r
LGRpdi5uYXZpZ2F0aW9uLXN1YiAuc2VsZWN0ZWQgLm5hdmlnYXRpb24tc3ViLWl0
ZW0tdGFiIGE6dmlzaXRlZCxkaXYubmF2aWdhdGlvbi1zdWIgLnNlbGVjdGVkIC5u
YXZpZ2F0aW9uLXN1Yi1pdGVtLXRhYiBhOmFjdGl2ZSB7Y29sb3I6IzRmNGY0Zjt9
ZGl2Lm5hdmlnYXRpb24tc3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVtLXRhYiBhOmxp
bmssZGl2Lm5hdmlnYXRpb24tc3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVtLXRhYiBh
OnZpc2l0ZWQsZGl2Lm5hdmlnYXRpb24tc3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVt
LXRhYiBhOmFjdGl2ZSB7Y29sb3I6IzRmNGY0Zjt9ZGl2Lm5hdmlnYXRpb24tc3Vi
IC5uYXZpZ2F0aW9uLXN1Yi1pdGVtLXRhYiBhOmhvdmVyIHtjb2xvcjojNGY0ZjRm
O2JhY2tncm91bmQtY29sb3I6IzRmNGY0Zjt9ZGl2Lm9uZU1zY29tTmF2IC5uYXZp
Z2F0aW9uLXN1Yi1pdGVtLWZseW91dCAubmF2aWdhdGlvbi1zdWItbGV2ZWwzIHti
b3JkZXI6I2VjZWNlYyAxcHggc29saWQ7fWRpdi5uYXZpZ2F0aW9uLXN1YiAubmF2
aWdhdGlvbi1zdWItaXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tc3ViLWxldmVsMyB7
YmFja2dyb3VuZC1jb2xvcjojNGY0ZjRmO31kaXYubmF2aWdhdGlvbi1zdWIgLm5h
dmlnYXRpb24tc3ViLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLXN1Yi1sZXZlbDMg
LmxpbmstZ3JvdXAgYSxkaXYubmF2aWdhdGlvbi1zdWIgLm5hdmlnYXRpb24tc3Vi
LWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLXN1Yi1sZXZlbDMgLmxpbmstZ3JvdXAg
YTpsaW5rLGRpdi5uYXZpZ2F0aW9uLXN1YiAubmF2aWdhdGlvbi1zdWItaXRlbS1m
bHlvdXQgLm5hdmlnYXRpb24tc3ViLWxldmVsMyAubGluay1ncm91cCBhOnZpc2l0
ZWQsZGl2Lm5hdmlnYXRpb24tc3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVtLWZseW91
dCAubmF2aWdhdGlvbi1zdWItbGV2ZWwzIC5saW5rLWdyb3VwIGE6aG92ZXIsZGl2
Lm5hdmlnYXRpb24tc3ViIC5uYXZpZ2F0aW9uLXN1Yi1pdGVtLWZseW91dCAubmF2
aWdhdGlvbi1zdWItbGV2ZWwzIC5saW5rLWdyb3VwIGE6YWN0aXZlIHtjb2xvcjoj
NGY0ZjRmO31kaXYubmF2aWdhdGlvbi1zdWIgLm5hdmlnYXRpb24tc3ViLWl0ZW0t
Zmx5b3V0IC5uYXZpZ2F0aW9uLXN1Yi1sZXZlbDMgLmxpbmstZ3JvdXAge2ZvbnQt
c2l6ZTo4MCU7Y29sb3I6IzRmNGY0Zjt9ZGl2Lm5hdmlnYXRpb24tc3ViIC5uYXZp
Z2F0aW9uLXN1Yi1pdGVtLWZseW91dCAubmF2aWdhdGlvbi1zdWItbGV2ZWwzIC5s
aW5rcyBhLGRpdi5uYXZpZ2F0aW9uLXN1YiAubmF2aWdhdGlvbi1zdWItaXRlbS1m
bHlvdXQgLm5hdmlnYXRpb24tc3ViLWxldmVsMyAubGlua3MgYTpsaW5rLGRpdi5u
YXZpZ2F0aW9uLXN1YiAubmF2aWdhdGlvbi1zdWItaXRlbS1mbHlvdXQgLm5hdmln
YXRpb24tc3ViLWxldmVsMyAubGlua3MgYTp2aXNpdGVkLGRpdi5uYXZpZ2F0aW9u
LXN1YiAubmF2aWdhdGlvbi1zdWItaXRlbS1mbHlvdXQgLm5hdmlnYXRpb24tc3Vi
LWxldmVsMyAubGlua3MgYTpob3ZlcixkaXYubmF2aWdhdGlvbi1zdWIgLm5hdmln
YXRpb24tc3ViLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLXN1Yi1sZXZlbDMgLmxp
bmtzIGE6YWN0aXZlIHtjb2xvcjojMDA2MGE2O31kaXYubmF2aWdhdGlvbi1zdWIg
Lm5hdmlnYXRpb24tc3ViLWl0ZW0tZmx5b3V0IC5uYXZpZ2F0aW9uLXN1Yi1sZXZl
bDMgLmxpbmtzIHtmb250LXNpemU6ODAlO2NvbG9yOiMwMDYwYTY7fWRpdi5vbmVN
c2NvbU5hdiAubmF2TWVudXtib3JkZXItY29sb3I6I2Y4ZjhmODt9Lm9uZU1zY29t
Rm9vdGVyIHsgY29sb3I6IzAwMDt9Lm9uZU1zY29tRm9vdGVyLCAub25lTXNjb21G
b290ZXIgaW5wdXQge2ZvbnQtc2l6ZToxMDAlO30ub25lTXNjb21Gb290ZXIsIC5v
bmVNc2NvbUZvb3RlciBzZWxlY3Qge2ZvbnQtZmFtaWx5OlNlZ29lIFVJLEFyaWFs
LFZlcmRhbmEsVGFob21hLHNhbnMtc2VyaWY7fS5vbmVNc2NvbUZvb3RlciAuZGVm
YXVsdExpbmtzIC5zZW9DYXRlcmdvcnkgbGksLm9uZU1zY29tRm9vdGVyIC5zZW9M
aW5rcyBsaSBhLC5vbmVNc2NvbUZvb3RlciAuZGVmYXVsdExpbmtzIGxpIGEge2Nv
bG9yOmJsYWNrO30ub25lTXNjb21Gb290ZXIgLmN1c3RvbUxpbmtzIGxpIGEge2Nv
bG9yOmJsYWNrO30ub25lTXNjb21Gb290ZXIgLmNvcHlyaWdodCB7Y29sb3I6Ymxh
Y2s7fS5vbmVNc2NvbUZvb3RlciAubXNMb2dvIHtmbG9hdDpyaWdodDtwYWRkaW5n
LXJpZ2h0OiAxNXB4O30ub25lTXNjb21Gb290ZXIgLmNvcHlyaWdodCB7Zm9udC1m
YW1pbHk6U2Vnb2UgVUksQXJpYWwsVmVyZGFuYSxUYWhvbWEsc2Fucy1zZXJpZjtj
b2xvcjpibGFjazt9Lm9uZU1zY29tRm9vdGVyIC5saW5rcyB7ZmxvYXQ6cmlnaHQ7
bWFyZ2luLXJpZ2h0OiA2cHg7fS5vbmVNc2NvbUZvb3RlciB1bC5jdXN0b21MaW5r
cywgLm9uZU1zY29tRm9vdGVyIHVsLmRlZmF1bHRMaW5rcyB7ZmxvYXQ6cmlnaHQ7
fS5vbmVNc2NvbUZvb3RlciB1bCBsaSBhLC5vbmVNc2NvbUZvb3RlciB1bC5zZW9M
aW5rcyBsaSBhIHtib3JkZXItcmlnaHQtY29sb3I6YmxhY2s7Zm9udC1mYW1pbHk6
U2Vnb2UgVUksQXJpYWwsVmVyZGFuYSxUYWhvbWEsc2Fucy1zZXJpZjt9Lm9uZU1z
Y29tRm9vdGVyIC5zZW9MaW5rc3tmbG9hdDpsZWZ0O30ub25lTXNjb21Gb290ZXIg
dWwuc2VvTGlua3MgbGl7ZmxvYXQ6bGVmdDt9Lm9uZU1zY29tRm9vdGVyIGxpLnNl
bGVjdGVkLC5vbmVNc2NvbUZvb3RlciAuc2VsZWN0ZWQgLnNlby1pdGVtLXRhYiBh
LC5vbmVNc2NvbUZvb3RlciAuc2VvLWl0ZW0tZmx5b3V0LWNvbnRlbnR7Ym9yZGVy
LWNvbG9yOiNlMGUwZTA7X2JvcmRlci1jb2xvcjojZTBlMGUwO30ub25lTXNjb21G
b290ZXIgLnNlby1pdGVtIC5wbmctaW1ne3BhZGRpbmctbGVmdDo0cHg7fS5vbmVN
c2NvbUZvb3RlciB1bCBsaS5sYXN0TGluayBhLC5vbmVNc2NvbUZvb3RlciB1bCBs
aS5zaW5nbGVMaW5rIGF7Ym9yZGVyLXJpZ2h0OiAwO30ub25lTXNjb21Gb290ZXIg
LnNlbGVjdGVkIC5zZW8taXRlbS10YWIgYSB7YmFja2dyb3VuZC1jb2xvcjogI2Zm
Zjt9Lm9uZU1zY29tRm9vdGVyIC5iZy1pbWcsLm9uZU1zY29tRm9vdGVyIC5zZW8t
aXRlbSAucG5nLWltZyAuYmctaW1ne2JhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0
cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9vbmVtc2NvbXNldHRpbmdzL3B1
Ymxpc2hpbmdpbWFnZXMvZm9vdGVyaW1hZ2VzL3Nlb19kb3duYXJyb3cucG5nIik7
fS5vbmVNc2NvbUZvb3RlciAuc2VvLWl0ZW0gLnBuZy1pbWcgLmZpbHRlci1pbWd7
ZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJ
bWFnZUxvYWRlcihzcmM9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9nbG9iYWwv
b25lbXNjb21zZXR0aW5ncy9wdWJsaXNoaW5naW1hZ2VzL2Zvb3RlcmltYWdlcy9z
ZW9fZG93bmFycm93LnBuZyIsIHNpemluZ01ldGhvZD0ic2NhbGUiKTt9PC9zdHls
ZT4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9Kc0Nzc0xv
YWRlckN0bF9vbmVNc2NvbUdsb2JhbFNldHRpbmdzIiBzdHlsZT0iZGlzcGxheTog
bm9uZTsiPjwvZGl2Pg0KICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9Kc0Nzc0xv
YWRlckN0bF9vbmVNc2NvbVRoZW1lU2V0dGluZ3MiIHN0eWxlPSJkaXNwbGF5OiBu
b25lOyI+PC9kaXY+DQogICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSnNDc3NMb2Fk
ZXJDdGxfb25lTXNjb21Mb2NhbGVTZXR0aW5ncyIgc3R5bGU9ImRpc3BsYXk6IG5v
bmU7Ij48L2Rpdj4NCiAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9Kc0Nzc0xvYWRl
ckN0bF9vbmVNc2NvbVNpdGVTZXR0aW5ncyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7
Ij48L2Rpdj4NCjwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0ic3RhZ2UiPg0KICAg
ICAgICA8ZGl2IGNsYXNzPSJ1dGlsaXR5LWJhciI+DQogICAgICAgICAgICANCiAg
ICANCg0KPGRpdiBjbGFzcz0ib25lTXNjb21Db21wIG1zdEhkcl9GbHlvdXRSZWdp
b24tbHRyIiBkaXI9Imx0ciINCiAgICBiaTp0eXBlPSJvbmVNc2NvbUJsYWRlIj4N
CiAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9I
ZWFkZXIiIGNsYXNzPSJtc3RIZHIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtc3RI
ZHJfUHJpUm93Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdEhkcl9QcmlS
b3dCZyI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImNzc0NsZWFyIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibXN0SGRyX1N0YXRpY1NlYzExIj4NCiAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJtc3RIZHJfU3RhdGljU2VjTGVmdEFsaWduIj4NCiAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8
ZGl2IGNsYXNzPSJtc3RIZHJfTWVudUl0ZW0iIA0KICAgIGlkPSJtdGhkcjAxIiAg
Ymk6dHlwZT0ib25lTXNjb21IZWFkZXJMaW5rIj4NCiAgICA8ZGl2IGlkPSJjdGww
MF9jdGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9TdGF0aWNTZWMxMV9SZXBlYXRl
cl9jdGwwMF9jdGwwMF9NZW51TGluayIgY2xhc3M9Im1zdEhkcl9NZW51TGluayI+
DQogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9lcy9l
cy9kZWZhdWx0LmFzcHg/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfVG9w
LUxldmVsX01TSG9tZSIgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJs
YWRlX1N0YXRpY1NlYzExX1JlcGVhdGVyX2N0bDAwX2N0bDAwX01lbnVMaW5rQW5j
aG9yIiBjbGFzcz0ibXN0SGRyX01lbnVMaW5rQW5jaG9yIj4NCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1z
Y29tQmxhZGVfU3RhdGljU2VjMTFfUmVwZWF0ZXJfY3RsMDBfY3RsMDBfTWVudUxp
bmtJbWFnZSIgY2xhc3M9Im1zdEhkcl9NZW51TGlua0ltZyBwbmctaW1nIiB0aXRs
ZT0iUMOhZ2luYSBkZSBpbmljaW8gZGUgTWljcm9zb2Z0IiBzdHlsZT0icGFkZGlu
Zy10b3A6NXB4O3BhZGRpbmctYm90dG9tOjZweDsiPg0KICAgICAgICAgICAgICAg
IDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRp
Y1NlYzExX1JlcGVhdGVyX2N0bDAwX2N0bDAwX01lbnVMaW5rSW1hZ2VCZyIgY2xh
c3M9ImJnLWltZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCYjMzk7aHR0
cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9vbmVtc2NvbXNldHRpbmdzL3B1
Ymxpc2hpbmdpbWFnZXMvaGVhZGVyaW1hZ2VzL21pY3Jvc29mdGxvZ28uZ2lmJiMz
OTspO3dpZHRoOjc1cHg7aGVpZ2h0OjE1cHg7Ij48L2Rpdj4NCiAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9T
dGF0aWNTZWMxMV9SZXBlYXRlcl9jdGwwMF9jdGwwMF9NZW51TGlua0ltYWdlRmls
dGVyIiBjbGFzcz0iZmlsdGVyLWltZyIgc3R5bGU9ImZpbHRlcjpwcm9naWQ6RFhJ
bWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9JnF1
b3Q7aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9vbmVtc2NvbXNldHRp
bmdzL3B1Ymxpc2hpbmdpbWFnZXMvaGVhZGVyaW1hZ2VzL21pY3Jvc29mdGxvZ28u
Z2lmJnF1b3Q7LCBzaXppbmdNZXRob2Q9JnF1b3Q7c2NhbGUmcXVvdDspO3dpZHRo
Ojc1cHg7aGVpZ2h0OjE1cHg7Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0K
ICAgICAgICAgICAgDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjc3NDbGVhciI+
DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0K
ICAgIA0KPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCjxkaXYgY2xhc3M9Im1zdEhkcl9NZW51SXRl
bSIgDQogICAgaWQ9Im10aGRyMDIiICBiaTp0eXBlPSJvbmVNc2NvbUhlYWRlckxp
bmsiPg0KICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJs
YWRlX1N0YXRpY1NlYzExX1JlcGVhdGVyX2N0bDAxX2N0bDAwX01lbnVMaW5rIiBj
bGFzcz0ibXN0SGRyX01lbnVMaW5rIG1zdEhkcl9GbHlvdXRMaW5rIG1zdEhkcl9I
aWRlTWVudUxpbmsgbXN0SGRyX0FuaW1hdGVEZXNjIiBzdHlsZT0id2lkdGg6OyI+
DQogICAgICAgIDxhIGhyZWY9Ii9kZWZhdWx0LmFzcHgva2IvMzIzNTI3L2VzP2hk
ckZvPW10aGRyMDIiIGlkPSJjdGwwMF9jdGwwMF9IZWFkZXJfb25lTXNjb21CbGFk
ZV9TdGF0aWNTZWMxMV9SZXBlYXRlcl9jdGwwMV9jdGwwMF9NZW51TGlua0FuY2hv
ciIgY2xhc3M9Im1zdEhkcl9NZW51TGlua0FuY2hvciBtc3RIZHJfTWVudUxpbmtC
b3RoIiBiaTp0cmFjaz0iZmFsc2UiPg0KICAgICAgICAgICAgPGRpdiBpZD0iY3Rs
MDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTFfUmVwZWF0
ZXJfY3RsMDFfY3RsMDBfTWVudUxpbmtUZXh0IiBjbGFzcz0ibXN0SGRyX01lbnVM
aW5rVHh0Ij5QUk9EVUNUT1M8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImN0
bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzExX1JlcGVh
dGVyX2N0bDAxX2N0bDAwX01lbnVMaW5rSW1hZ2UiIGNsYXNzPSJtc3RIZHJfTWVu
dUxpbmtJbWcgcG5nLWltZyIgdGl0bGU9Ik1lbsO6IiBzdHlsZT0icGFkZGluZy10
b3A6NXB4O3BhZGRpbmctYm90dG9tOjZweDsiPg0KICAgICAgICAgICAgICAgIDxk
aXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1Nl
YzExX1JlcGVhdGVyX2N0bDAxX2N0bDAwX01lbnVMaW5rSW1hZ2VCZyIgY2xhc3M9
ImJnLWltZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCYjMzk7aHR0cDov
L3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9vbmVtc2NvbXNldHRpbmdzL3B1Ymxp
c2hpbmdpbWFnZXMvaGVhZGVyaW1hZ2VzL3Byb2R1Y3RzX2Ryb3Bkb3duLnBuZyYj
Mzk7KTt3aWR0aDoxNXB4O2hlaWdodDoxNXB4OyI+PC9kaXY+DQogICAgICAgICAg
ICAgICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVf
U3RhdGljU2VjMTFfUmVwZWF0ZXJfY3RsMDFfY3RsMDBfTWVudUxpbmtJbWFnZUZp
bHRlciIgY2xhc3M9ImZpbHRlci1pbWciIHN0eWxlPSJmaWx0ZXI6cHJvZ2lkOkRY
SW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoc3JjPSZx
dW90O2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9nbG9iYWwvb25lbXNjb21zZXR0
aW5ncy9wdWJsaXNoaW5naW1hZ2VzL2hlYWRlcmltYWdlcy9wcm9kdWN0c19kcm9w
ZG93bi5wbmcmcXVvdDssIHNpemluZ01ldGhvZD0mcXVvdDtzY2FsZSZxdW90Oyk7
d2lkdGg6MTVweDtoZWlnaHQ6MTVweDsiPjwvZGl2Pg0KICAgICAgICAgICAgPC9k
aXY+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNzc0Ns
ZWFyIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2E+DQogICAgPC9k
aXY+DQogICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxh
ZGVfU3RhdGljU2VjMTFfUmVwZWF0ZXJfY3RsMDFfY3RsMDBfSGVhZGVyRmx5b3V0
UG9zIiBjbGFzcz0ibXN0SGRyX0ZseW91dFBvcyI+DQogICAgICAgIDxkaXYgY2xh
c3M9Im1zdEhkcl9GbHlvdXQiPg0KICAgICAgICAgICAgPGRpdiBpZD0iY3RsMDBf
Y3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTFfUmVwZWF0ZXJf
Y3RsMDFfY3RsMDBfSGVhZGVyRmx5b3V0Q29udGVudCIgYmk6dHlwZT0ib25lTXNj
b21Qcm9kdWN0IiBjbGFzcz0ibXN0SGRyX1Nob3dGbHlvdXRBIj48ZGl2IGlkPSJQ
cm9kdWN0TGF5b3V0QSIgY2xhc3M9Im1zdEhkcl9QcmRMYXlvdXRBIj48ZGl2IGNs
YXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxIj48dWw+PGxpIGlkPSJtdGhkcjA5Ij48
ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0l0ZW0iPjxhIGNsYXNzPSJt
c3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlIiBocmVmPSJodHRwOi8vd2luZG93cy5t
aWNyb3NvZnQuY29tL2VzLWVzL3dpbmRvd3MvaG9tZT9XVC5tY19pZD1NU0NPTV9F
U19FU192MkhlYWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVzX1dpbmRvd3MiID48ZGl2
IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlX0lubmVyIiBhbGlnbj0i
Y2VudGVyIiAgdGl0bGU9IldpbmRvd3MiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRT
ZWN0aW9uMzFfSW1hZ2VTaXplIj48aW1nIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEw
MCUiIGFsdD0iV2luZG93cyIgc3JjPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
Z2xvYmFsL29uZW1zY29tc2V0dGluZ3MvcHVibGlzaGluZ2ltYWdlcy9oZWFkZXJp
bWFnZXMvd2luZG93c2xvZ28ucG5nIj48L2ltZz48L2Rpdj48L2Rpdj48L2E+PGRp
diBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9UZXh0Ij48YSAgSHJlZj0iaHR0
cDovL3dpbmRvd3MubWljcm9zb2Z0LmNvbS9lcy1lcy93aW5kb3dzL2hvbWU/V1Qu
bWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGFyZ2VUaWxlc19X
aW5kb3dzIj48c3Bhbj5XaW5kb3dzPC9zcGFuPjwvYT48L2Rpdj48L2Rpdj48ZGl2
IGNsYXNzPSJjc3NDbGVhciI+PC9kaXY+PC9saT48L3VsPjx1bD48bGkgaWQ9Im10
aGRyMTAiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSXRlbSI+PGEg
Y2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSW1hZ2UiIGhyZWY9Imh0dHA6Ly9v
ZmZpY2UubWljcm9zb2Z0LmNvbS9lcy1lcy8/V1QubWNfaWQ9TVNDT01fRVNfRVNf
djJIZWFkZXJfRHJvcGRvd24tTGFyZ2VUaWxlc19PZmZpY2UiID48ZGl2IGNsYXNz
PSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlX0lubmVyIiBhbGlnbj0iY2VudGVy
IiAgdGl0bGU9Ik9mZmljZSI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24z
MV9JbWFnZVNpemUiPjxpbWcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgYWx0
PSJPZmZpY2UiIHNyYz0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9v
bmVtc2NvbXNldHRpbmdzL3B1Ymxpc2hpbmdpbWFnZXMvaGVhZGVyaW1hZ2VzL29m
ZmljZWxvZ28ucG5nIj48L2ltZz48L2Rpdj48L2Rpdj48L2E+PGRpdiBjbGFzcz0i
bXN0SGRyX1ByZFNlY3Rpb24zMV9UZXh0Ij48YSAgSHJlZj0iaHR0cDovL29mZmlj
ZS5taWNyb3NvZnQuY29tL2VzLWVzLz9XVC5tY19pZD1NU0NPTV9FU19FU192Mkhl
YWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVzX09mZmljZSI+PHNwYW4+T2ZmaWNlPC9z
cGFuPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjc3NDbGVhciI+PC9kaXY+
PC9saT48L3VsPjx1bD48bGkgaWQ9Im10aGRyMTEiPjxkaXYgY2xhc3M9Im1zdEhk
cl9QcmRTZWN0aW9uMzFfSXRlbSI+PGEgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9u
MzFfSW1hZ2UiIGhyZWY9Imh0dHA6Ly93d3cueGJveC5jb20vZXMtRVMvP1dULm1j
X2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxhcmdlVGlsZXNfWGJv
eCIgPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSW1hZ2VfSW5uZXIi
IGFsaWduPSJjZW50ZXIiICB0aXRsZT0ieGJveCI+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zMV9JbWFnZVNpemUiPjxpbWcgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgYWx0PSJ4Ym94IiBzcmM9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNv
bS9nbG9iYWwvb25lbXNjb21zZXR0aW5ncy9wdWJsaXNoaW5naW1hZ2VzL2hlYWRl
cmltYWdlcy94Ym94bG9nby5wbmciPjwvaW1nPjwvZGl2PjwvZGl2PjwvYT48ZGl2
IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX1RleHQiPjxhICBIcmVmPSJodHRw
Oi8vd3d3Lnhib3guY29tL2VzLUVTLz9XVC5tY19pZD1NU0NPTV9FU19FU192Mkhl
YWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVzX1hib3giPjxzcGFuPlhib3g8L3NwYW4+
PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNzc0NsZWFyIj48L2Rpdj48L2xp
PjwvdWw+PHVsPjxsaSBpZD0ibXRoZHIxMiI+PGRpdiBjbGFzcz0ibXN0SGRyX1By
ZFNlY3Rpb24zMV9JdGVtIj48YSBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9J
bWFnZSIgaHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3dpbmRvd3NwaG9u
ZS9lcy1lcy9kZWZhdWx0LmFzcHg/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFk
ZXJfRHJvcGRvd24tTGFyZ2VUaWxlc19XaW5kb3dzUGhvbmUiID48ZGl2IGNsYXNz
PSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlX0lubmVyIiBhbGlnbj0iY2VudGVy
IiAgdGl0bGU9IldpbmRvd1Bob25lIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2Vj
dGlvbjMxX0ltYWdlU2l6ZSI+PGltZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAl
IiBhbHQ9IldpbmRvd1Bob25lIiBzcmM9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNv
bS9nbG9iYWwvb25lbXNjb21zZXR0aW5ncy9wdWJsaXNoaW5naW1hZ2VzL2hlYWRl
cmltYWdlcy9waG9uZWxvZ28ucG5nIj48L2ltZz48L2Rpdj48L2Rpdj48L2E+PGRp
diBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9UZXh0Ij48YSAgSHJlZj0iaHR0
cDovL3d3dy5taWNyb3NvZnQuY29tL3dpbmRvd3NwaG9uZS9lcy1lcy9kZWZhdWx0
LmFzcHg/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGFy
Z2VUaWxlc19XaW5kb3dzUGhvbmUiPjxzcGFuPldpbmRvd3MgUGhvbmU8L3NwYW4+
PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNzc0NsZWFyIj48L2Rpdj48L2xp
PjwvdWw+PHVsPjxsaSBpZD0ibXRoZHIxMyI+PGRpdiBjbGFzcz0ibXN0SGRyX1By
ZFNlY3Rpb24zMV9JdGVtIj48YSBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9J
bWFnZSIgaHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3NwYWluL2ludGVy
bmV0LWV4cGxvcmVyP1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bk
b3duLUxhcmdlVGlsZXNfSUUiID48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlv
bjMxX0ltYWdlX0lubmVyIiBhbGlnbj0iY2VudGVyIiAgdGl0bGU9IklFIj48ZGl2
IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlU2l6ZSI+PGltZyB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBhbHQ9IklFIiBzcmM9Imh0dHA6Ly93d3cu
bWljcm9zb2Z0LmNvbS9nbG9iYWwvb25lbXNjb21zZXR0aW5ncy9wdWJsaXNoaW5n
aW1hZ2VzL2hlYWRlcmltYWdlcy9pZWxvZ28ucG5nIj48L2ltZz48L2Rpdj48L2Rp
dj48L2E+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9UZXh0Ij48YSAg
SHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3NwYWluL2ludGVybmV0LWV4
cGxvcmVyP1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxh
cmdlVGlsZXNfSUUiPjxzcGFuPkludGVybmV0IEV4cGxvcmVyPC9zcGFuPjwvYT48
L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjc3NDbGVhciI+PC9kaXY+PC9saT48L3Vs
PjwvZGl2PjxkaXYgaWQ9IkhlYWRlclByb2R1Y3RTZWN0aW9uMzIiIGNsYXNzPSJt
c3RIZHJfUHJkU2VjdGlvbjMyIj48dWw+PGxpIGlkPSJtdGhkcjE1Ij48ZGl2IGNs
YXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMyX0dyb3VwSGVhZGVyIj48YSAgSHJlZj0i
amF2YXNjcmlwdDp2b2lkKDApOyI+PHNwYW4+SG9nYXI8L3NwYW4+PC9hPjwvZGl2
PjwvbGk+PGxpIGlkPSJtdGhkcjE2Ij48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2Vj
dGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0
LmNvbS9lcy1lcy9zZWN1cml0eV9lc3NlbnRpYWxzL2RlZmF1bHQuYXNweD9XVC5t
Y19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1MaW5rc19TZWN1cml0
eS1Fc3NlbnRpYWxzIj48c3Bhbj5TZWN1cml0eSBFc3NlbnRpYWxzPC9zcGFuPjwv
YT48L2Rpdj48L2xpPjxsaSBpZD0ibXRoZHIxNyI+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zMl9Hcm91cEl0ZW0iPjxhICBIcmVmPSJodHRwOi8vd3d3LnVw
ZGF0ZS5taWNyb3NvZnQuY29tL21pY3Jvc29mdHVwZGF0ZS92Ni92aXN0YWRlZmF1
bHQuYXNweD9sbj1lcy1lcz9XVC5tY19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9E
cm9wZG93bi1MaW5rc19NU1VwZGF0ZSI+PHNwYW4+TWljcm9zb2Z0IFVwZGF0ZTwv
c3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMTgiPjxkaXYgY2xhc3M9
Im1zdEhkcl9QcmRTZWN0aW9uMzJfR3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0cDov
L3d3dy5taWNyb3NvZnQuY29tL3NwYWluL2hhcmR3YXJlLz9XVC5tY19pZD1NU0NP
TV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1MaW5rc19QQ0hhcmR3YXJlIj48c3Bh
bj5IYXJkd2FyZTwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMTki
PjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzJfR3JvdXBJdGVtIj48YSAg
SHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3NwYWluL2p1ZWdvcy8/V1Qu
bWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGlua3NfUENHYW1p
bmciPjxzcGFuPkp1ZWdvczwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10
aGRyOTkiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzJfR3JvdXBJdGVt
Ij48YSAgSHJlZj0iaHR0cDovL2VzLm1zbi5jb20vIj48c3Bhbj5NU048L3NwYW4+
PC9hPjwvZGl2PjwvbGk+PC91bD48dWw+PGxpIGlkPSJtdGhkcjIwIj48ZGl2IGNs
YXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMyX0dyb3VwSGVhZGVyIj48YSAgSHJlZj0i
amF2YXNjcmlwdDp2b2lkKDApOyI+PHNwYW4+RW1wcmVzYTwvc3Bhbj48L2E+PC9k
aXY+PC9saT48bGkgaWQ9Im10aGRyMjEiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRT
ZWN0aW9uMzJfR3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0cDovL3d3dy5taWNyb3Nv
ZnQuY29tL2J1c2luZXNzL2VzLWVzLz9XVC5tY19pZD1NU0NPTV9FU19FU192Mkhl
YWRlcl9Ecm9wZG93bi1MaW5rc19TTUIiPjxzcGFuPlB5bWVzIHkgYXV0w7Nub21v
czwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMjIiPjxkaXYgY2xh
c3M9Im1zdEhkcl9QcmRTZWN0aW9uMzJfR3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0
cDovL3BpbnBvaW50Lm1pY3Jvc29mdC5jb20vZXMtRVMvZGVmYXVsdC5hc3B4P1dU
Lm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxpbmtzX0lUU3Bl
Y2lhbGlzdExvY2F0b3IiPjxzcGFuPkVuY3VlbnRyZSB1biBwYXJ0bmVyIGRlIHNv
bHVjaW9uZXM8L3NwYW4+PC9hPjwvZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjIzIj48
ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhy
ZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9zcGFpbi9lbnRlcnByaXNlLz9X
VC5tY19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1MaW5rc19FbnRl
cnByaXNlIj48c3Bhbj5HcmFuZGVzIGVtcHJlc2FzPC9zcGFuPjwvYT48L2Rpdj48
L2xpPjxsaSBpZD0ibXRoZHIyNCI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rp
b24zMl9Hcm91cEl0ZW0iPjxhICBIcmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5j
b20vc3BhaW4vc2Vydmlkb3Jlcy9kZWZhdWx0Lm1zcHg/V1QubWNfaWQ9TVNDT01f
RVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGlua3NfU2VydmVyLUNsb3VkIj48c3Bh
bj5TZXJ2aWRvcmVzIHkgU2VydmljaW9zIGVuIGxhIG51YmU8L3NwYW4+PC9hPjwv
ZGl2PjwvbGk+PC91bD48L2Rpdj48ZGl2IGlkPSJIZWFkZXJQcm9kdWN0U2VjdGlv
bjMzIiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMyI+PHVsPjxsaSBpZD0ibXRo
ZHIyNSI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zM19Hcm91cEhlYWRl
ciI+PGEgIEhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiPjxzcGFuPkVubGFjZXMg
cmVjb21lbmRhZG9zPC9zcGFuPjwvYT48L2Rpdj48L2xpPjxsaSBpZD0ibXRoZHIy
NiI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zM19Hcm91cEl0ZW0iPjxh
ICBIcmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2VzLWVz
L2RlZmF1bHQuYXNweD9XVC5tY19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9w
ZG93bi1UaWxlVGVybXNfRExDIj48c3Bhbj5Ub2RhcyBsYXMgZGVzY2FyZ2FzIGRl
IE1pY3Jvc29mdDwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMjci
PjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzNfR3JvdXBJdGVtIj48YSAg
SHJlZj0iaHR0cDovL2VtZWEubWljcm9zb2Z0c3RvcmUuY29tL2VzL2VzLUVTP1dU
Lm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLVRpbGVUZXJtc19T
dG9yZSI+PHNwYW4+TWljcm9zb2Z0IFN0b3JlPC9zcGFuPjwvYT48L2Rpdj48L2xp
PjxsaSBpZD0ibXRoZHIyOCI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24z
M19Hcm91cEl0ZW0iPjxhICBIcmVmPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQu
Y29tLz9sbj1lcy1lcz9XVC5tY19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9w
ZG93bi1UaWxlVGVybXNfTVNTdXBwb3J0Ij48c3Bhbj5Tb3BvcnRlPC9zcGFuPjwv
YT48L2Rpdj48L2xpPjxsaSBpZD0ibXRoZHIyOSI+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zM19Hcm91cEl0ZW0iPjxhICBIcmVmPSJodHRwOi8vd3d3Lm1p
Y3Jvc29mdC5lcy8iPjxzcGFuPlDDoWdpbmEgZGUgaW5pY2lvIGRlIE1pY3Jvc29m
dDwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMzAiPjxkaXYgY2xh
c3M9Im1zdEhkcl9QcmRTZWN0aW9uMzNfR3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0
cDovL3d3dy5taWNyb3NvZnQuY29tL2VzL2VzL3NpdGVtYXAuYXNweD9XVC5tY19p
ZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1UaWxlVGVybXNfQWxsTVNT
aXRlcyI+PHNwYW4+VG9kb3MgbG9zIHNpdGlvcyBkZSBNaWNyb3NvZnQ8L3NwYW4+
PC9hPjwvZGl2PjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJjc3NDbGVhciI+
PC9kaXY+PC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXN0
SGRyX1ByZEJvdHRvbVN0cmlwIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAg
ICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rp
dj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdEhkcl9TdGF0aWNTZWMxMiI+
DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXN0SGRyX1N0YXRpY1NlY0xl
ZnRBbGlnbiI+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICBkaXYu
Z3NmeF9ic3JjaF9jb250YWluZXINCiAgICB7DQogICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IG5vbmU7DQogICAgICAgIG1hcmdpbjogMHB4DQogICAgICAgIGZsb2F0
OiBub25lOw0KICAgICAgICBoZWlnaHQ6IDI0cHg7DQogICAgICAgIHdpZHRoOiAz
MzBweDsNCiAgICB9DQogICAgI2dzZnhfYnNyY2hfZGl2UXVlcnkNCiAgICB7DQog
ICAgICAgIG1hcmdpbjogMHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkZGRkZGOw0KICAgICAgICBoZWlnaHQ6IDIycHg7DQogICAgICAgIGJvcmRlcjog
MXB4IHNvbGlkICM5OTk5OTk7DQogICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAg
IH0NCiAgICAjZ3NmeF9ic3JjaF9kaXZRdWVyeSAjZ3NmeF9ic3JjaF9xdWVyeQ0K
ICAgIHsNCiAgICAgICAgbWFyZ2luLXRvcDogMHB4Ow0KICAgICAgICBmb250LXNp
emU6IDc1JTsNCiAgICAgICAgcGFkZGluZzogMnB4IDJweCAwcHggMnB4Ow0KICAg
ICAgICBtYXJnaW46IDJweCAycHggMHB4IDJweDsNCiAgICAgICAgdmVydGljYWwt
YWxpZ246IHRvcDsNCiAgICAgICAgaGVpZ2h0OiAxNnB4Ow0KICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Ow0KICAgIH0NCiAgICAjZ3NmeF9ic3Jj
aF9kaXZRdWVyeSAjZ3NmeF9ic3JjaF9idG5pbWcNCiAgICB7DQogICAgICAgIG1h
cmdpbi10b3A6IDFweDsNCiAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDsNCiAgICAg
ICAgdmVydGljYWwtYWxpZ246IHRvcDsNCiAgICB9DQogICAgI2dzZnhfY2F0X3Nl
bA0KICAgIHsNCiAgICAgICAgbWFyZ2luLXRvcDogMHB4Ow0KICAgICAgICBtYXJn
aW4tcmlnaHQ6IDBweDsNCiAgICAgICAgd2lkdGg6IDEzcHg7DQogICAgfQ0KICAg
ICNnc2Z4X2JzcmNoX2xvZ28NCiAgICB7DQogICAgICAgIGN1cnNvcjogYXV0bzsN
CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsNCiAgICAgICAgbWFyZ2luLXRv
cDogMXB4Ow0KICAgIH0NCiAgICAjZ3NmeF9ic3JjaF9sb2dvX2Rpdg0KICAgIHsN
CiAgICAgICAgbWFyZ2luLXRvcDogMHB4Ow0KICAgICAgICBtYXJnaW4tcmlnaHQ6
IDVweDsNCiAgICB9DQogICAgZGl2LnNlYXJjaC1uYXZpZ2F0aW9uIC5zZWFyY2gN
CiAgICB7DQogICAgICAgIHdpZHRoOiAzMjhweDsNCiAgICB9DQogICAgLmdzZnhf
c3JjaHNpdGVuYW1lX2NvdG5yDQogICAgew0KICAgICAgICB3aWR0aDogMjkzcHg7
DQogICAgICAgIGZsb2F0OiByaWdodDsNCiAgICB9DQogICAgLmdzZnhfc3JjaG9w
dGltZ19jb3Rucg0KICAgIHsNCiAgICAgICAgd2lkdGg6IDE1cHg7DQogICAgfQ0K
ICAgICNhY0xpc3RXcmFwcGVyZ3NmeF9ic3JjaF9xdWVyeQ0KICAgIHsNCiAgICAg
ICAgdG9wOjBweDsNCiAgICAgICAgKnRvcDotM3B4Ow0KICAgIH0NCjwvc3R5bGU+
DQo8Zm9ybSBpZD0iZnJtc3JjaCIgYWN0aW9uPSIvc2VhcmNoL2RlZmF1bHQuYXNw
eCIgbWV0aG9kPSJnZXQiIG9uc3VibWl0PSJyZXR1cm4gU2F2ZVNpbXBsZVNlYXJj
aCgpOyI+DQo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+c2V0QUNTdGFy
dENoYXJzKCc0OjQ6Jyk7PC9zY3JpcHQ+DQo8ZGl2IGlkPSJnc2Z4X2JzcmNoX2Jn
IiBjbGFzcz0iZ3NmeF9ic3JjaF9jb250YWluZXIiPg0KICAgIDxkaXYgaWQ9Imdz
ZnhfYnNyY2hfZGl2UXVlcnkiIHN0eWxlPSJ3aWR0aDogMzExcHgiPg0KICAgICAg
ICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImdzZnhfYnNyY2hfcXVlcnkiIHN0eWxl
PSJ3aWR0aDogMjMycHgiIG5hbWU9InF1ZXJ5Ig0KICAgICAgICAgICAgbWF4bGVu
Z3RoPSIyMDAiIHZhbHVlPSIiIGNsYXNzPSJzaXRlc2VsdHh0IiBhdXRvY29tcGxl
dGU9Im9mZiIgLz48c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOypk
aXNwbGF5OmlubGluZTsgaGVpZ2h0OiAyMnB4OyB3aWR0aDogNDBweDttYXJnaW4t
bGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjVweDsiPjxpbWcgdGl0bGU9IiIgYWx0PSIi
IGNsYXNzPSJnc2Z4X2ltZ19wbmciIGlkPSJ0b3BTZWFyY2hCaW5nTG9nbyIgc3R5
bGU9IndpZHRoOiA0MHB4O2hlaWdodDogMjFweDsiIHNyYz0iL2xpYnJhcnkvaW1h
Z2VzL3N1cHBvcnQvQ04vYmluZ19sb2dvX3doaXRlX2JsYW5rLnBuZyIgb25jbGlj
az0iSGFuZGxlQmluZ0NsaWNrKCkiIC8+PCEtLVtpZiBsdGUgSUUgNl0+PGRpdiBh
bHQ9IiIgY2xhc3M9ImdzZnhfZGl2X3BuZyIgaWQ9InRvcFNlYXJjaEJpbmdMb2dv
IiBzdHlsZT0id2lkdGg6NDBweDtoZWlnaHQ6MjFweDtmaWx0ZXI6cHJvZ2lkOkRY
SW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoc3JjPScv
bGlicmFyeS9pbWFnZXMvc3VwcG9ydC9DTi9iaW5nX2xvZ29fd2hpdGVfYmxhbmsu
cG5nJywgc2l6aW5nTWV0aG9kPSdzY2FsZScpOyIgb25jbGljaz0iSGFuZGxlQmlu
Z0NsaWNrKCkiPjwvZGl2PjwhW2VuZGlmXS0tPjwvc3Bhbj48aW5wdXQgdHlwZT0i
aW1hZ2UiIHRpdGxlPSIiIGFsdD0iIiBjbGFzcz0iZ3NmeF9pbWdfcG5nIiBzdHls
ZT0id2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4OyIgc3JjPSIvbGlicmFyeS9pbWFn
ZXMvc3VwcG9ydC9DTi9zc19saXZlX2J1dHRvbi5wbmciIG9uY2xpY2s9InJldHVy
biBTYXZlU2ltcGxlU2VhcmNoKCk7IiBpZD0iZ3NmeF9ic3JjaF9idG5pbWciIC8+
PCEtLVtpZiBsdGUgSUUgNl0+PGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Ii9saWJy
YXJ5L2ltYWdlcy9zdXBwb3J0L2NuL29uZXBpeC5naWYiIGFsdD0iIiBjbGFzcz0i
Z3NmeF9kaXZfcG5nIiBzdHlsZT0id2lkdGg6MjBweDtoZWlnaHQ6MjBweDtmaWx0
ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VM
b2FkZXIoc3JjPScvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9DTi9zc19saXZlX2J1
dHRvbi5wbmcnLCBzaXppbmdNZXRob2Q9J3NjYWxlJyk7IiBvbmNsaWNrPSJyZXR1
cm4gU2F2ZVNpbXBsZVNlYXJjaCgpOyIgaWQ9ImdzZnhfYnNyY2hfYnRuaW1nIiAv
PjwhW2VuZGlmXS0tPjwvZGl2Pg0KICAgICAgICA8ZGl2IGlkPSJnc2Z4X2NhdF9z
ZWwiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgPGEgaWQ9Imdz
ZnhfY2F0X3NlbF9idG4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+DQogICAg
ICAgICAgICAgICAgPGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2Nu
L3NzX2RkX3NlbGVjdDEucG5nIiBob3Zlci1zcmM9Ii9saWJyYXJ5L2ltYWdlcy9z
dXBwb3J0L2NuL3NzX2RkX3NlbGVjdDIucG5nIiBhbHQ9IlNlbGVjdCIvPjwvYT4N
CiAgICAgICAgDQogICAgICAgIDxkaXYgaWQ9J2dzZnhfY2F0X3NlbF9jbnRucic+
DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxub3NjcmlwdD4NCiAgICAgICAg
ICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY2F0YWxvZyIgbmFtZT0i
Y2F0YWxvZyIgdmFsdWU9IkxDSUQ9MTAzNCIgLz4NCiAgICAgICAgICAgICAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICAgICAgICAgICAgICAjZ3Nm
eF9jYXRfc2VsDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgI2dzZnhfYnNyY2hfZGl2UXVlcnkNCiAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6
IDMyNHB4ICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgI2dzZnhfYnNyY2hfcXVlcnkNCiAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0NXB4ICFp
bXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICA8L3N0eWxlPg0KICAgICAgICAgICAgPC9ub3NjcmlwdD4NCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgPGEgY2xhc3M9ImdzZnhfb3B0c3ViX2NvdG5yIiBpZD0i
Z3NmeF9jYXRfc2VsX2RpdjAiIG9uY2xpY2s9ImdzZnhfYnNyY2hfY2hhbmdlQ2F0
U2VsZWN0aW9uKDApO2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY0xpc3RX
cmFwcGVyZ3NmeF9ic3JjaF9xdWVyeScpKXtjaGFuZ2VMY2lkRm9yU2VsZWN0KHRo
aXMsICdnc2Z4X2JzcmNoX3F1ZXJ5JywgJ0xDSUQ9MTAzNCcsICcwJyk7fSIgaHJl
Zj0iamF2YXNjcmlwdDp2b2lkKDApOyI+DQogICAgICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9ImdzZnhfY2F0b3B0aW1nX2NvdG5yIiBpZD0iZ3NmeF9jYXRPcHRTZWxf
MCI+DQogICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImdzZnhfYnNyY2hf
Y2hraW1nIiBpZD0iZ3NmeF9jYXRfc2VsX2ltZzAiIHNyYz0iL2xpYnJhcnkvaW1h
Z2VzL3N1cHBvcnQvY24vc3NfY2hlY2sucG5nIiAvPg0KICAgICAgICAgICAgICAg
IDwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3NmeF9jYXRv
cHR0eHRfY290bnIiIGlkPSJnc2Z4X2NhdF8wIiBvbmNsaWNrPSJnc2Z4X2JzcmNo
X2NoYW5nZUNhdFNlbGVjdGlvbigwKTtpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWNMaXN0V3JhcHBlcmdzZnhfYnNyY2hfcXVlcnknKSl7Y2hhbmdlTGNpZEZv
clNlbGVjdCh0aGlzLCAnZ3NmeF9ic3JjaF9xdWVyeScsICdMQ0lEPTEwMzQnLCAn
MCcpO30iPg0KICAgICAgICAgICAgICAgICAgICBFc3Bhw7FvbA0KICAgICAgICAg
ICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgPGEgY2xhc3M9ImdzZnhfb3B0c3ViX2NvdG5yIiBpZD0iZ3Nm
eF9jYXRfc2VsX2RpdjEiIG9uY2xpY2s9ImdzZnhfYnNyY2hfY2hhbmdlQ2F0U2Vs
ZWN0aW9uKDEpO2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY0xpc3RXcmFw
cGVyZ3NmeF9ic3JjaF9xdWVyeScpKXtjaGFuZ2VMY2lkRm9yU2VsZWN0KHRoaXMs
ICdnc2Z4X2JzcmNoX3F1ZXJ5JywgJ0xDSUQ9MTAzMycsICcxJyk7fSIgaHJlZj0i
amF2YXNjcmlwdDp2b2lkKDApOyI+DQogICAgICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImdzZnhfY2F0b3B0aW1nX2NvdG5yIiBpZD0iZ3NmeF9jYXRPcHRTZWxfMSI+
DQogICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImdzZnhfYnNyY2hfY2hr
aW1nIiBpZD0iZ3NmeF9jYXRfc2VsX2ltZzEiIHNyYz0iL2xpYnJhcnkvaW1hZ2Vz
L3N1cHBvcnQvY24vc3NfY2hlY2sucG5nIiAvPg0KICAgICAgICAgICAgICAgIDwv
c3Bhbj4NCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3NmeF9jYXRvcHR0
eHRfY290bnIiIGlkPSJnc2Z4X2NhdF8xIiBvbmNsaWNrPSJnc2Z4X2JzcmNoX2No
YW5nZUNhdFNlbGVjdGlvbigxKTtpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWNMaXN0V3JhcHBlcmdzZnhfYnNyY2hfcXVlcnknKSl7Y2hhbmdlTGNpZEZvclNl
bGVjdCh0aGlzLCAnZ3NmeF9ic3JjaF9xdWVyeScsICdMQ0lEPTEwMzMnLCAnMScp
O30iPg0KICAgICAgICAgICAgICAgICAgICBJbmdsw6lzDQogICAgICAgICAgICAg
ICAgPC9zcGFuPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgDQogICAg
ICAgIDwvZGl2Pg0KICAgICAgICANCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnRyeXtNUy5TdXBwb3J0LkFDLk1ha2VB
dXRvQ29tcGxldGUoe2lkOidnc2Z4X2JzcmNoX3F1ZXJ5JywgbGNpZDonMTAzNCcs
IGFjVVJMOidodHRwOi8vYXV0b2NvbXBsZXRlLnN1cHBvcnQubWljcm9zb2Z0LmNv
bScsIHN0YXRzT2JqOlN0YXRzRG90TmV0LCBzdGFydENoYXI6JzQnLCBidWJibGVz
aWRlOidsZWZ0J30pO31jYXRjaChlKXt9PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnPnN1cHBvcnRlZFNpdGVzLnB1c2gobmV3IFNpdGUoJ0J1
c2NhciBlbiBTb3BvcnRlJywgJ1x4MmZzZWFyY2hceDJmZGVmYXVsdC5hc3B4Jywg
dHJ1ZSkpO3N1cHBvcnRlZFNpdGVzLnB1c2gobmV3IFNpdGUoJ1RvZG8gTWljcm9z
b2Z0LmNvbScsICdodHRwXHgzYVx4MmZceDJmc2VhcmNoLm1pY3Jvc29mdC5jb21c
eDJmcmVzdWx0cy5hc3B4XHgzZnZpZXdceDNkZXMtZXMnLCBmYWxzZSkpO3N1cHBv
cnRlZFNpdGVzLnB1c2gobmV3IFNpdGUoJ1RvZG8gSW50ZXJuZXQnLCAnaHR0cFx4
M2FceDJmXHgyZnd3dy5iaW5nLmNvbVx4MmZzZWFyY2hceDNmZm9ybVx4M2RNU1NT
VVBceDI2bWt0XHgzZGVzLWVzXHgyNnFceDNkJywgZmFsc2UpKTthdmxDYXRhbG9n
cy5wdXNoKG5ldyBDYXRhbG9nKCdFc3BhXHUwMGYxb2wnLCAnTENJRFx4M2QxMDM0
JywgdHJ1ZSkpO2F2bENhdGFsb2dzLnB1c2gobmV3IENhdGFsb2coJ0luZ2xcdTAw
ZTlzJywgJ0xDSURceDNkMTAzMycsIGZhbHNlKSk7PC9zY3JpcHQ+DQo8ZGl2IGNs
YXNzPSJoaWRkZW5mb3JtZWxzIj4NCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJtb2RlIiB2YWx1ZT0iciIgLz4NCjwvZGl2Pg0KPG5vc2NyaXB0Pg0KICAg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgICNnc2Z4X2JzcmNoX2Nh
dHNlbCBhDQogICAgICAgIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7DQog
ICAgICAgIH0NCiAgICAgICAgI2dzZnhfYnNyY2hfd2Vic3JjaA0KICAgICAgICB7
DQogICAgICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQogICAgICAg
ICNnc2Z4X2JzcmNoX3F1ZXJ5DQogICAgICAgIHsNCiAgICAgICAgICAgIGZvbnQt
c3R5bGU6IG5vcm1hbDsNCiAgICAgICAgICAgIGNvbG9yOiBCbGFjazsNCiAgICAg
ICAgfQ0KICAgIDwvc3R5bGU+DQo8L25vc2NyaXB0Pg0KPC9mb3JtPg0KDQogICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAg
ICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXN0SGRy
X1N0YXRpY1NlYzE0Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtc3RI
ZHJfU3RhdGljU2VjUmlnaHRBbGlnbiI+DQogICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPGRpdiBjbGFzcz0ibXN0SGRy
X01lbnVJdGVtIG1zdEhkcl9NZW51SXRlbUxjcCIgDQogICAgaWQ9Im10aGRyMDci
ICBiaTp0eXBlPSJvbmVNc2NvbUhlYWRlckxpbmsiPg0KICAgIDxkaXYgaWQ9ImN0
bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzE0X1JlcGVh
dGVyX2N0bDAwX2N0bDAwX01lbnVMaW5rIiBjbGFzcz0ibXN0SGRyX01lbnVMaW5r
IG1zdEhkcl9GbHlvdXRMaW5rIj4NCiAgICAgICAgPHNwYW4gaWQ9ImN0bDAwX2N0
bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzE0X1JlcGVhdGVyX2N0
bDAwX2N0bDAwX01lbnVMaW5rU3BhbiI+PGEgaHJlZj0iL2RlZmF1bHQuYXNweC9r
Yi8zMjM1MjcvZXM/aGRyRm89bXRoZHIwNyIgaWQ9ImN0bDAwX2N0bDAwX0hlYWRl
cl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzE0X1JlcGVhdGVyX2N0bDAwX2N0bDAw
X01lbnVMaW5rQW5jaG9yIiBjbGFzcz0ibXN0SGRyX01lbnVMaW5rQW5jaG9yIG1z
dExjcF9NZW51TGlua0FuY2hvck5vcm1hbCIgYmk6dHJhY2s9ImZhbHNlIj4NCiAg
ICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJs
YWRlX1N0YXRpY1NlYzE0X1JlcGVhdGVyX2N0bDAwX2N0bDAwX01lbnVMaW5rVGV4
dCIgY2xhc3M9Im1zdEhkcl9NZW51TGlua1R4dCI+RXNwYSYjMjQxO2EgPC9kaXY+
DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNzc0NsZWFy
Ij4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2E+PC9zcGFuPg0KICAg
IDwvZGl2Pg0KICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2Nv
bUJsYWRlX1N0YXRpY1NlYzE0X1JlcGVhdGVyX2N0bDAwX2N0bDAwX0hlYWRlckZs
eW91dFBvcyIgY2xhc3M9Im1zdEhkcl9GbHlvdXRQb3MiPg0KICAgICAgICA8ZGl2
IGNsYXNzPSJtc3RIZHJfRmx5b3V0Ij4NCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3Rh
dGljU2VjMTRfUmVwZWF0ZXJfY3RsMDBfY3RsMDAiIGNsYXNzPSJtc3RMY3AiPg0K
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1z
dExjcF9IZWFkIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXN0
TGNwX0hlYWRpbmciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPSJj
dGwwMF9jdGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9TdGF0aWNTZWMxNF9SZXBl
YXRlcl9jdGwwMF9jdGwwMF9TaXRlSW5PdGhlckxhbmd1YWdlcyI+T3Ryb3MgcGEm
IzIzNztzZXM8L2gzPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAg
ICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJt
c3RMY3BfTGFuZ0xpbmtzIG1zdExjcF9Db2xzNSI+DQogICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im1zdExjcF9Db2wg
bXN0TGNwX0MwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49ZnItYWwiID4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ2VyaWEgLSBGcmFuw6dhaXM8L3Nw
YW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPWVzLWFyIiA+DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdlbnRpbmEgLSBFc3Bhw7FvbDwv
c3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49ZW4tYXUiID4NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1c3RyYWxpYSAtIEVuZ2xpc2g8
L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPW5sLWJlIiA+DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZWxnacOrIC0gTmVkZXJsYW5k
czwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49ZnItYmUiID4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlbGdpcXVlIC0gRnJhbsOn
YWlzPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1lcy1ibyIg
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9saXZpYSAtIEVzcGHD
sW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1oci1iYSIg
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9zbmEgaSBIZXJjZWdv
dmluYSAgLSBIcnZhdHNraTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9
Ii8/bG49cHQtYnIiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bh
biBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJy
YXNpbCAtIFBvcnR1Z3XDqnM8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIvP2xuPWVuLWNhIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
YW5hZGEgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0i
Lz9sbj1mci1jYSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fu
YWRhIC0gRnJhbsOnYWlzPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0i
Lz9sbj1jcyIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRp
cj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgxIxlc2vD
oSBSZXB1Ymxpa2EgLSDEjGXFoXRpbmE8L3NwYW4+PC9hPjwvbGk+DQogICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSIvP2xuPWVzLWNsIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDaGlsZSAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEg
aHJlZj0iLz9sbj1lcy1jbyIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29sb21iaWEgLSBFc3Bhw7FvbDwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxh
IGhyZWY9Ii8/bG49ZXMtY3IiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvc3RhIFJpY2EgLSBFc3Bhw7FvbDwvc3Bhbj48L2E+PC9saT4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxp
PjxhIGhyZWY9Ii8/bG49c3ItbWUiID4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENybmEgR29yYSAtIFNycHNraTwvc3Bhbj48L2E+PC9saT4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxp
PjxhIGhyZWY9Ii8/bG49ZGEiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERhbm1hcmsgLSBEYW5zazwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhy
ZWY9Ii8/bG49ZGUiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bh
biBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl
dXRzY2hsYW5kIOKAkyBEZXV0c2NoPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9
Im1zdExjcF9Db2wgbXN0TGNwX0MxIj4NCiAgICAgICAgICAgICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49ZXMt
ZG8iID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9Imx0
ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbWluaWNhbiBS
ZXB1YmxpYyAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJl
Zj0iLz9sbj1lcy1lYyIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz
cGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RWN1YWRvciAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJl
Zj0iLz9sbj1ldCIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWVz
dGkgLSBFZXN0aTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49
ZXMtc3YiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9
Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsIFNhbHZh
ZG9yIC0gRXNwYcOxb2w8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIv
P2xuPWZyIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGly
PSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFuY2Ug
LSBGcmFuw6dhaXM8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xu
PWVzLWd0IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGly
PSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWF0ZW1h
bGEgLSBFc3Bhw7FvbDwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/
bG49ZW4taGsiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBk
aXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvbmcg
S29uZyBTQVIgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJl
Zj0iLz9sbj1ociIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHJ2
YXRza2EgLSBIcnZhdHNraTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9
Ii8/bG49ZW4taW4iID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bh
biBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
ZGlhIC0gRW5nbGlzaDwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/
bG49aWQtaWQiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBk
aXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZG9u
ZXNpYSAoQmFoYXNhKSAtIEJhaGFzYTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxh
IGhyZWY9Ii8/bG49ZW4taWQiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEluZG9uZXNpYSAoRW5nbGlzaCkgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xp
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICA8bGk+PGEgaHJlZj0iLz9sbj1lbi1pZSIgPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXJlbGFuZCAtIEVuZ2xpc2g8L3NwYW4+PC9hPjwvbGk+
DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgIDxsaT48YSBocmVmPSIvP2xuPWlzLWlzIiA+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICDDjXNsYW5kIC0gw41zbGVuc2thPC9zcGFuPjwvYT48L2xp
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICA8bGk+PGEgaHJlZj0iLz9sbj1pdCIgPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSXRhbGlhIC0gSXRhbGlhbm88L3NwYW4+PC9hPjwvbGk+DQog
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
IDxsaT48YSBocmVmPSIvP2xuPWVzLWxhIiA+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYXRpbm9hbcOpcmljYSAtIEVzcGHDsW9sPC9zcGFuPjwvYT48
L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1sdiIgPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTGF0dmlqYSAtIExhdHZpZcWhdTwvc3Bhbj48L2E+PC9s
aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAg
ICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49bHQiID4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExpZXR1dmEgLSBMaWV0dXZpxbM8L3NwYW4+PC9hPjwvbGk+
DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
PC91bD4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
IDx1bCBjbGFzcz0ibXN0TGNwX0NvbCBtc3RMY3BfQzIiPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJl
Zj0iLz9sbj1mci1sdSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz
cGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
THV4ZW1ib3VyZyAtIEZyYW7Dp2FpcyA8L3NwYW4+PC9hPjwvbGk+DQogICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSIvP2xuPWh1IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYWd5YXJvcnN6w6FnIC0gTWFneWFyPC9zcGFuPjwvYT48L2xpPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+
PGEgaHJlZj0iLz9sbj1lbi1teSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWFsYXlzaWEgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xpPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+
PGEgaHJlZj0iLz9sbj1lcy1teCIgPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTcOpeGljbyAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+
PGEgaHJlZj0iLz9sbj1lbi1tZSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWlkZGxlIEVhc3QgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xpPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8
bGk+PGEgaHJlZj0iLz9sbj1mci1tbyIgPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTW9ycm9jY28gLSBGcmFuw6dhaXM8L3NwYW4+PC9hPjwvbGk+DQog
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
IDxsaT48YSBocmVmPSIvP2xuPW5sIiA+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZWRlcmxhbmQgLSBOZWRlcmxhbmRzPC9zcGFuPjwvYT48L2xpPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGEgaHJlZj0iLz9sbj1lbi1ueiIgPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV3IFplYWxhbmQgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xp
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICA8bGk+PGEgaHJlZj0iLz9sbj1ubyIgPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9yZ2UgLSBCb2ttw6VsPC9zcGFuPjwvYT48L2xpPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8
bGk+PGEgaHJlZj0iLz9sbj1kZS1hdCIgPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgw5ZzdGVycmVpY2ggLSBEZXV0c2NoPC9zcGFuPjwvYT48L2xpPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGEgaHJlZj0iLz9sbj1lcy1wYSIgPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFuYW3DoSAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICA8bGk+PGEgaHJlZj0iLz9sbj1lcy1weSIgPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFyYWd1YXkgLSBFc3Bhw7FvbDwvc3Bhbj48L2E+PC9saT4N
CiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg
ICAgPGxpPjxhIGhyZWY9Ii8/bG49ZXMtcGUiID4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBlcsO6IC0gRXNwYcOxb2w8L3NwYW4+PC9hPjwvbGk+DQog
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
IDxsaT48YSBocmVmPSIvP2xuPWVuLXBoIiA+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQaGlsaXBwaW5lcyAtIEVuZ2xpc2g8L3NwYW4+PC9hPjwvbGk+
DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgIDxsaT48YSBocmVmPSIvP2xuPXBsIiA+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQb2xza2EgLSBQb2xza2k8L3NwYW4+PC9hPjwvbGk+DQogICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48YSBocmVmPSIvP2xuPXB0IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQb3J0dWdhbCAtIFBvcnR1Z3XDqnM8L3NwYW4+PC9hPjwvbGk+DQogICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48YSBocmVmPSIvP2xuPWVzLXByIiA+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQdWVydG8gUmljbyAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwv
dWw+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8
dWwgY2xhc3M9Im1zdExjcF9Db2wgbXN0TGNwX0MzIj4NCiAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9
Ii8/bG49cm8iID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBk
aXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbcOi
bmlhIC0gUm9tw6JuxIM8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSI/
bG49ZGUtY2giID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBk
aXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaHdl
aXogLSBEZXV0c2NoPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9s
bj1lbi1zZyIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRp
cj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2Fw
b3JlIC0gRW5nbGlzaDwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/
bG49c2wiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9
Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3Zlbmlq
YSAtIFNsb3ZlbsWhxI1pbmE8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIvP2xuPXNrIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4g
ZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG92
ZW5za28gLSBTbG92ZW7EjWluYTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhy
ZWY9Ii8/bG49ZW4temEiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
c3BhbiBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNvdXRoIEFmcmljYSAtIEVuZ2xpc2g8L3NwYW4+PC9hPjwvbGk+DQogICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSIvP2xuPXNyIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTcmJpamEgLSBTcnBza2k8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIvP2xuPWZyLWNoIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dWlzc2UgLSBGcmFuw6dhaXM8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIvP2xuPWZpIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4g
ZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdW9t
aSAtIFN1b21pPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1z
diIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRy
Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ZlcmlnZSAtIFN2
ZW5za2E8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPWZyLXR1
IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIi
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUdW5pc2lhIC0gRnJh
bsOnYWlzPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj10ciIg
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVMO8cmtpeWUgLSBUw7xy
a8OnZTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49ZW4tZ2Ii
ID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9Imx0ciI+
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXRlZCBLaW5nZG9t
IC0gRW5nbGlzaDwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49
ZW4tdXMiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9
Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXRlZCBT
dGF0ZXMgLSBFbmdsaXNoPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0i
Lz9sbj1lcy11eSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXJ1
Z3VheSAtIEVzcGHDsW9sPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0i
Lz9sbj1lcy12ZSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVu
ZXp1ZWxhIC0gRXNwYcOxb2w8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVm
PSIvP2xuPXZpLXZuIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
aeG7h3QgTmFtIC0gVGnDqsyBbmcgdmnhu4d0PC9zcGFuPjwvYT48L2xpPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwvdWw+
DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dWwg
Y2xhc3M9Im1zdExjcF9Db2wgbXN0TGNwX0M0Ij4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/
bG49ZWwiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9
Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIM6VzrvOu86s
zrTOsSAtIM6VzrvOu863zr3Ouc66zqw8L3NwYW4+PC9hPjwvbGk+DQogICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48
YSBocmVmPSIvP2xuPWJnIiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICDQkdGK0LvQs9Cw0YDQuNGPIC0g0JHRitC70LPQsNGA0YHQutC4PC9zcGFuPjwv
YT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1ray1reiIgPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAg0JrQsNC30LDRhdGB0YLQsNC9IC0g0KDRg9GB
0YHQutC40Lk8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPXJ1
IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIi
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQoNC+0YHRgdC40Y8g
LSDQoNGD0YHRgdC60LjQuTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9
Ii8/bG49dWstdWEiID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bh
biBkaXI9Imx0ciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCj
0LrRgNCw0ZfQvdCwIC0g0KPQutGA0LDRl9C90YHRjNC60LA8L3NwYW4+PC9hPjwv
bGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgIDxsaT48YSBocmVmPSIvP2xuPWhlIiA+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gZGlyPSJydGwiPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICDXmdep16jXkNecIC0g16LXkdeo15nXqjwvc3Bhbj48L2E+
PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
ICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/bG49YXItYWUiID4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8c3BhbiBkaXI9InJ0bCI+DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgINin2YTYpdmF2KfYsdin2Kog2KfZhNi52LHYqNmK
2Kkg2KfZhNmF2KrYrdiv2KkgLSDYp9mE2LnYsdio2YrYqSA8L3NwYW4+PC9hPjwv
bGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgIDxsaT48YSBocmVmPSIvP2xuPWFyIiA+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gZGlyPSJydGwiPg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICDYp9mE2LTYsdmCINin2YTYp9mI2LPYtyAgLSDYp9mE2LnY
sdio2YrYqSAtINin2YTYudix2KjZitipPC9zcGFuPjwvYT48L2xpPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+
PGEgaHJlZj0iLz9sbj1hci1zYSIgPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAg2KfZhNmF2YXZhNmD2Kkg2KfZhNi52LHYqNmK2Kkg2KfZhNiz2LnZiNiv
2YrYqSAtINin2YTYudix2KjZitipPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEg
aHJlZj0iLz9sbj1hci1lZyIgPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxzcGFuIGRpcj0icnRsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAg2YXYtdixIC0g2KfZhNi52LHYqNmK2Kk8L3NwYW4+PC9hPjwvbGk+DQogICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48YSBocmVmPSIvP2xuPWhpLWluIiA+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICDgpK3gpL7gpLDgpKQgLSDgpLngpL/gpILgpKbgpYA8L3NwYW4+PC9h
PjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPXRoIiA+DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICDguYTguJfguKIgLSDguYTguJfguKI8L3NwYW4+PC9h
PjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPWtvIiA+DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICDrjIDtlZzrr7zqta0gLSDtlZzqta3slrQ8L3NwYW4+
PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2xuPXpoLWNuIiA+DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGlyPSJsdHIiPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICDkuK3lm70gIC0g566A5L2T5Lit5paHPC9z
cGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj16aC10dyIgPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAg5Y+w54GjIC0g57mB6auU5Lit5paH
PC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj1qYSIgPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pysIC0g5pel5pys6KqePC9z
cGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9sbj16aC1oayIgPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRpcj0ibHRyIj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAg6aaZ5riv54m55Yil6KGM5pS/5Y2A
IC0g57mB6auU5Lit5paHPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjc3ND
bGVhciI+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAg
ICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdExjcF9X
b3JsZHdpZGVMaW5rIG1zdExjcF9Db2xzNSI+DQogICAgICAgICAgICAgICAgICAg
IDxhIGhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS93b3JsZHdpZGUvIiAg
Ymk6R2xvYmFsV29ybGR3aWRlTGlua0tleT0iR2xvYmFsV29ybGR3aWRlTGlua1Zh
bCI+PHNwYW4+SW50ZXJuYWNpb25hbDwvc3Bhbj48L2E+DQogICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImNzc0NsZWFyIj48L2Rpdj4NCiAgICAgICAgICAg
ICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRp
diBjbGFzcz0ibXN0SGRyX0ZseW91dEJvdFN0cmlwIj48L2Rpdj4NCiAgICAgICAg
PC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rp
dj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdEhkcl9TdGF0aWNTZWMxMyI+
DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXN0SGRyX1N0YXRpY1NlY0xl
ZnRBbGlnbiI+DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KPGRpdiBjbGFzcz0ibXN0SGRyX01lbnVJdGVtIiANCiAg
ICBpZD0ibXRoZHIwMiIgIGJpOnR5cGU9Im9uZU1zY29tSGVhZGVyTGluayI+DQog
ICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3Rh
dGljU2VjMTNfUmVwZWF0ZXJfY3RsMDBfY3RsMDBfTWVudUxpbmsiIGNsYXNzPSJt
c3RIZHJfTWVudUxpbmsgbXN0SGRyX0ZseW91dExpbmsiPg0KICAgICAgICA8YSBo
cmVmPSIvZGVmYXVsdC5hc3B4L2tiLzMyMzUyNy9lcz9oZHJGbz1tdGhkcjAyIiBp
ZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTNf
UmVwZWF0ZXJfY3RsMDBfY3RsMDBfTWVudUxpbmtBbmNob3IiIGNsYXNzPSJtc3RI
ZHJfTWVudUxpbmtBbmNob3IgbXN0SGRyX01lbnVMaW5rQm90aCIgYmk6dHJhY2s9
ImZhbHNlIj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRl
cl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1JlcGVhdGVyX2N0bDAwX2N0bDAw
X01lbnVMaW5rVGV4dCIgY2xhc3M9Im1zdEhkcl9NZW51TGlua1R4dCI+UFJPRFVD
VE9TPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9IZWFk
ZXJfb25lTXNjb21CbGFkZV9TdGF0aWNTZWMxM19SZXBlYXRlcl9jdGwwMF9jdGww
MF9NZW51TGlua0ltYWdlIiBjbGFzcz0ibXN0SGRyX01lbnVMaW5rSW1nIHBuZy1p
bWciIHRpdGxlPSJNZW7DuiIgc3R5bGU9InBhZGRpbmctdG9wOjVweDtwYWRkaW5n
LWJvdHRvbTo2cHg7Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9j
dGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9TdGF0aWNTZWMxM19SZXBlYXRlcl9j
dGwwMF9jdGwwMF9NZW51TGlua0ltYWdlQmciIGNsYXNzPSJiZy1pbWciIHN0eWxl
PSJiYWNrZ3JvdW5kLWltYWdlOnVybCgmIzM5O2h0dHA6Ly93d3cubWljcm9zb2Z0
LmNvbS9nbG9iYWwvb25lbXNjb21zZXR0aW5ncy9wdWJsaXNoaW5naW1hZ2VzL2hl
YWRlcmltYWdlcy9wcm9kdWN0c19kcm9wZG93bi5wbmcmIzM5Oyk7d2lkdGg6MTVw
eDtoZWlnaHQ6MTVweDsiPjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9
ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1Jl
cGVhdGVyX2N0bDAwX2N0bDAwX01lbnVMaW5rSW1hZ2VGaWx0ZXIiIGNsYXNzPSJm
aWx0ZXItaW1nIiBzdHlsZT0iZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3Jt
Lk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKHNyYz0mcXVvdDtodHRwOi8vd3d3
Lm1pY3Jvc29mdC5jb20vZ2xvYmFsL29uZW1zY29tc2V0dGluZ3MvcHVibGlzaGlu
Z2ltYWdlcy9oZWFkZXJpbWFnZXMvcHJvZHVjdHNfZHJvcGRvd24ucG5nJnF1b3Q7
LCBzaXppbmdNZXRob2Q9JnF1b3Q7c2NhbGUmcXVvdDspO3dpZHRoOjE1cHg7aGVp
Z2h0OjE1cHg7Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAg
ICAgDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjc3NDbGVhciI+DQogICAgICAg
ICAgICA8L2Rpdj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYg
aWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEz
X1JlcGVhdGVyX2N0bDAwX2N0bDAwX0hlYWRlckZseW91dFBvcyIgY2xhc3M9Im1z
dEhkcl9GbHlvdXRQb3MiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtc3RIZHJfRmx5
b3V0Ij4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9v
bmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1JlcGVhdGVyX2N0bDAwX2N0bDAwX0hl
YWRlckZseW91dENvbnRlbnQiIGJpOnR5cGU9Im9uZU1zY29tUHJvZHVjdCIgY2xh
c3M9Im1zdEhkcl9TaG93Rmx5b3V0QSI+PGRpdiBpZD0iUHJvZHVjdExheW91dEEi
IGNsYXNzPSJtc3RIZHJfUHJkTGF5b3V0QSI+PGRpdiBjbGFzcz0ibXN0SGRyX1By
ZFNlY3Rpb24zMSI+PHVsPjxsaSBpZD0ibXRoZHIwOSI+PGRpdiBjbGFzcz0ibXN0
SGRyX1ByZFNlY3Rpb24zMV9JdGVtIj48YSBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rp
b24zMV9JbWFnZSIgaHJlZj0iaHR0cDovL3dpbmRvd3MubWljcm9zb2Z0LmNvbS9l
cy1lcy93aW5kb3dzL2hvbWU/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJf
RHJvcGRvd24tTGFyZ2VUaWxlc19XaW5kb3dzIiA+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zMV9JbWFnZV9Jbm5lciIgYWxpZ249ImNlbnRlciIgIHRpdGxl
PSJXaW5kb3dzIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdl
U2l6ZSI+PGltZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBhbHQ9IldpbmRv
d3MiIHNyYz0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbC9vbmVtc2Nv
bXNldHRpbmdzL3B1Ymxpc2hpbmdpbWFnZXMvaGVhZGVyaW1hZ2VzL3dpbmRvd3Ns
b2dvLnBuZyI+PC9pbWc+PC9kaXY+PC9kaXY+PC9hPjxkaXYgY2xhc3M9Im1zdEhk
cl9QcmRTZWN0aW9uMzFfVGV4dCI+PGEgIEhyZWY9Imh0dHA6Ly93aW5kb3dzLm1p
Y3Jvc29mdC5jb20vZXMtZXMvd2luZG93cy9ob21lP1dULm1jX2lkPU1TQ09NX0VT
X0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxhcmdlVGlsZXNfV2luZG93cyI+PHNwYW4+
V2luZG93czwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY3NzQ2xl
YXIiPjwvZGl2PjwvbGk+PC91bD48dWw+PGxpIGlkPSJtdGhkcjEwIj48ZGl2IGNs
YXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0l0ZW0iPjxhIGNsYXNzPSJtc3RIZHJf
UHJkU2VjdGlvbjMxX0ltYWdlIiBocmVmPSJodHRwOi8vb2ZmaWNlLm1pY3Jvc29m
dC5jb20vZXMtZXMvP1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bk
b3duLUxhcmdlVGlsZXNfT2ZmaWNlIiA+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNl
Y3Rpb24zMV9JbWFnZV9Jbm5lciIgYWxpZ249ImNlbnRlciIgIHRpdGxlPSJPZmZp
Y2UiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSW1hZ2VTaXplIj48
aW1nIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGFsdD0iT2ZmaWNlIiBzcmM9
Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9nbG9iYWwvb25lbXNjb21zZXR0aW5n
cy9wdWJsaXNoaW5naW1hZ2VzL2hlYWRlcmltYWdlcy9vZmZpY2Vsb2dvLnBuZyI+
PC9pbWc+PC9kaXY+PC9kaXY+PC9hPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0
aW9uMzFfVGV4dCI+PGEgIEhyZWY9Imh0dHA6Ly9vZmZpY2UubWljcm9zb2Z0LmNv
bS9lcy1lcy8/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24t
TGFyZ2VUaWxlc19PZmZpY2UiPjxzcGFuPk9mZmljZTwvc3Bhbj48L2E+PC9kaXY+
PC9kaXY+PGRpdiBjbGFzcz0iY3NzQ2xlYXIiPjwvZGl2PjwvbGk+PC91bD48dWw+
PGxpIGlkPSJtdGhkcjExIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMx
X0l0ZW0iPjxhIGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlIiBocmVm
PSJodHRwOi8vd3d3Lnhib3guY29tL2VzLUVTLz9XVC5tY19pZD1NU0NPTV9FU19F
U192MkhlYWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVzX1hib3giID48ZGl2IGNsYXNz
PSJtc3RIZHJfUHJkU2VjdGlvbjMxX0ltYWdlX0lubmVyIiBhbGlnbj0iY2VudGVy
IiAgdGl0bGU9Inhib3giPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFf
SW1hZ2VTaXplIj48aW1nIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGFsdD0i
eGJveCIgc3JjPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsL29uZW1z
Y29tc2V0dGluZ3MvcHVibGlzaGluZ2ltYWdlcy9oZWFkZXJpbWFnZXMveGJveGxv
Z28ucG5nIj48L2ltZz48L2Rpdj48L2Rpdj48L2E+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zMV9UZXh0Ij48YSAgSHJlZj0iaHR0cDovL3d3dy54Ym94LmNv
bS9lcy1FUy8/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24t
TGFyZ2VUaWxlc19YYm94Ij48c3Bhbj5YYm94PC9zcGFuPjwvYT48L2Rpdj48L2Rp
dj48ZGl2IGNsYXNzPSJjc3NDbGVhciI+PC9kaXY+PC9saT48L3VsPjx1bD48bGkg
aWQ9Im10aGRyMTIiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSXRl
bSI+PGEgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSW1hZ2UiIGhyZWY9Imh0
dHA6Ly93d3cubWljcm9zb2Z0LmNvbS93aW5kb3dzcGhvbmUvZXMtZXMvZGVmYXVs
dC5hc3B4P1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxh
cmdlVGlsZXNfV2luZG93c1Bob25lIiA+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNl
Y3Rpb24zMV9JbWFnZV9Jbm5lciIgYWxpZ249ImNlbnRlciIgIHRpdGxlPSJXaW5k
b3dQaG9uZSI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9JbWFnZVNp
emUiPjxpbWcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgYWx0PSJXaW5kb3dQ
aG9uZSIgc3JjPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsL29uZW1z
Y29tc2V0dGluZ3MvcHVibGlzaGluZ2ltYWdlcy9oZWFkZXJpbWFnZXMvcGhvbmVs
b2dvLnBuZyI+PC9pbWc+PC9kaXY+PC9kaXY+PC9hPjxkaXYgY2xhc3M9Im1zdEhk
cl9QcmRTZWN0aW9uMzFfVGV4dCI+PGEgIEhyZWY9Imh0dHA6Ly93d3cubWljcm9z
b2Z0LmNvbS93aW5kb3dzcGhvbmUvZXMtZXMvZGVmYXVsdC5hc3B4P1dULm1jX2lk
PU1TQ09NX0VTX0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxhcmdlVGlsZXNfV2luZG93
c1Bob25lIj48c3Bhbj5XaW5kb3dzIFBob25lPC9zcGFuPjwvYT48L2Rpdj48L2Rp
dj48ZGl2IGNsYXNzPSJjc3NDbGVhciI+PC9kaXY+PC9saT48L3VsPjx1bD48bGkg
aWQ9Im10aGRyMTMiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSXRl
bSI+PGEgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfSW1hZ2UiIGhyZWY9Imh0
dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9zcGFpbi9pbnRlcm5ldC1leHBsb3Jlcj9X
VC5tY19pZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVz
X0lFIiA+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMV9JbWFnZV9Jbm5l
ciIgYWxpZ249ImNlbnRlciIgIHRpdGxlPSJJRSI+PGRpdiBjbGFzcz0ibXN0SGRy
X1ByZFNlY3Rpb24zMV9JbWFnZVNpemUiPjxpbWcgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgYWx0PSJJRSIgc3JjPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
Z2xvYmFsL29uZW1zY29tc2V0dGluZ3MvcHVibGlzaGluZ2ltYWdlcy9oZWFkZXJp
bWFnZXMvaWVsb2dvLnBuZyI+PC9pbWc+PC9kaXY+PC9kaXY+PC9hPjxkaXYgY2xh
c3M9Im1zdEhkcl9QcmRTZWN0aW9uMzFfVGV4dCI+PGEgIEhyZWY9Imh0dHA6Ly93
d3cubWljcm9zb2Z0LmNvbS9zcGFpbi9pbnRlcm5ldC1leHBsb3Jlcj9XVC5tY19p
ZD1NU0NPTV9FU19FU192MkhlYWRlcl9Ecm9wZG93bi1MYXJnZVRpbGVzX0lFIj48
c3Bhbj5JbnRlcm5ldCBFeHBsb3Jlcjwvc3Bhbj48L2E+PC9kaXY+PC9kaXY+PGRp
diBjbGFzcz0iY3NzQ2xlYXIiPjwvZGl2PjwvbGk+PC91bD48L2Rpdj48ZGl2IGlk
PSJIZWFkZXJQcm9kdWN0U2VjdGlvbjMyIiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rp
b24zMiI+PHVsPjxsaSBpZD0ibXRoZHIxNSI+PGRpdiBjbGFzcz0ibXN0SGRyX1By
ZFNlY3Rpb24zMl9Hcm91cEhlYWRlciI+PGEgIEhyZWY9ImphdmFzY3JpcHQ6dm9p
ZCgwKTsiPjxzcGFuPkhvZ2FyPC9zcGFuPjwvYT48L2Rpdj48L2xpPjxsaSBpZD0i
bXRoZHIxNiI+PGRpdiBjbGFzcz0ibXN0SGRyX1ByZFNlY3Rpb24zMl9Hcm91cEl0
ZW0iPjxhICBIcmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZXMtZXMvc2Vj
dXJpdHlfZXNzZW50aWFscy9kZWZhdWx0LmFzcHg/V1QubWNfaWQ9TVNDT01fRVNf
RVNfdjJIZWFkZXJfRHJvcGRvd24tTGlua3NfU2VjdXJpdHktRXNzZW50aWFscyI+
PHNwYW4+U2VjdXJpdHkgRXNzZW50aWFsczwvc3Bhbj48L2E+PC9kaXY+PC9saT48
bGkgaWQ9Im10aGRyMTciPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzJf
R3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0cDovL3d3dy51cGRhdGUubWljcm9zb2Z0
LmNvbS9taWNyb3NvZnR1cGRhdGUvdjYvdmlzdGFkZWZhdWx0LmFzcHg/bG49ZXMt
ZXM/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGlua3Nf
TVNVcGRhdGUiPjxzcGFuPk1pY3Jvc29mdCBVcGRhdGU8L3NwYW4+PC9hPjwvZGl2
PjwvbGk+PGxpIGlkPSJtdGhkcjE4Ij48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2Vj
dGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0
LmNvbS9zcGFpbi9oYXJkd2FyZS8/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFk
ZXJfRHJvcGRvd24tTGlua3NfUENIYXJkd2FyZSI+PHNwYW4+SGFyZHdhcmU8L3Nw
YW4+PC9hPjwvZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjE5Ij48ZGl2IGNsYXNzPSJt
c3RIZHJfUHJkU2VjdGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly93
d3cubWljcm9zb2Z0LmNvbS9zcGFpbi9qdWVnb3MvP1dULm1jX2lkPU1TQ09NX0VT
X0VTX3YySGVhZGVyX0Ryb3Bkb3duLUxpbmtzX1BDR2FtaW5nIj48c3Bhbj5KdWVn
b3M8L3NwYW4+PC9hPjwvZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjk5Ij48ZGl2IGNs
YXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0
dHA6Ly9lcy5tc24uY29tLyI+PHNwYW4+TVNOPC9zcGFuPjwvYT48L2Rpdj48L2xp
PjwvdWw+PHVsPjxsaSBpZD0ibXRoZHIyMCI+PGRpdiBjbGFzcz0ibXN0SGRyX1By
ZFNlY3Rpb24zMl9Hcm91cEhlYWRlciI+PGEgIEhyZWY9ImphdmFzY3JpcHQ6dm9p
ZCgwKTsiPjxzcGFuPkVtcHJlc2E8L3NwYW4+PC9hPjwvZGl2PjwvbGk+PGxpIGlk
PSJtdGhkcjIxIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJkU2VjdGlvbjMyX0dyb3Vw
SXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9idXNpbmVz
cy9lcy1lcy8/V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24t
TGlua3NfU01CIj48c3Bhbj5QeW1lcyB5IGF1dMOzbm9tb3M8L3NwYW4+PC9hPjwv
ZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjIyIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJk
U2VjdGlvbjMyX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly9waW5wb2ludC5t
aWNyb3NvZnQuY29tL2VzLUVTL2RlZmF1bHQuYXNweD9XVC5tY19pZD1NU0NPTV9F
U19FU192MkhlYWRlcl9Ecm9wZG93bi1MaW5rc19JVFNwZWNpYWxpc3RMb2NhdG9y
Ij48c3Bhbj5FbmN1ZW50cmUgdW4gcGFydG5lciBkZSBzb2x1Y2lvbmVzPC9zcGFu
PjwvYT48L2Rpdj48L2xpPjxsaSBpZD0ibXRoZHIyMyI+PGRpdiBjbGFzcz0ibXN0
SGRyX1ByZFNlY3Rpb24zMl9Hcm91cEl0ZW0iPjxhICBIcmVmPSJodHRwOi8vd3d3
Lm1pY3Jvc29mdC5jb20vc3BhaW4vZW50ZXJwcmlzZS8/V1QubWNfaWQ9TVNDT01f
RVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tTGlua3NfRW50ZXJwcmlzZSI+PHNwYW4+
R3JhbmRlcyBlbXByZXNhczwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10
aGRyMjQiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzJfR3JvdXBJdGVt
Ij48YSAgSHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3NwYWluL3NlcnZp
ZG9yZXMvZGVmYXVsdC5tc3B4P1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVy
X0Ryb3Bkb3duLUxpbmtzX1NlcnZlci1DbG91ZCI+PHNwYW4+U2Vydmlkb3JlcyB5
IFNlcnZpY2lvcyBlbiBsYSBudWJlPC9zcGFuPjwvYT48L2Rpdj48L2xpPjwvdWw+
PC9kaXY+PGRpdiBpZD0iSGVhZGVyUHJvZHVjdFNlY3Rpb24zMyIgY2xhc3M9Im1z
dEhkcl9QcmRTZWN0aW9uMzMiPjx1bD48bGkgaWQ9Im10aGRyMjUiPjxkaXYgY2xh
c3M9Im1zdEhkcl9QcmRTZWN0aW9uMzNfR3JvdXBIZWFkZXIiPjxhICBIcmVmPSJq
YXZhc2NyaXB0OnZvaWQoMCk7Ij48c3Bhbj5FbmxhY2VzIHJlY29tZW5kYWRvczwv
c3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRyMjYiPjxkaXYgY2xhc3M9
Im1zdEhkcl9QcmRTZWN0aW9uMzNfR3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0cDov
L3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9lcy1lcy9kZWZhdWx0LmFzcHg/
V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tVGlsZVRlcm1z
X0RMQyI+PHNwYW4+VG9kYXMgbGFzIGRlc2NhcmdhcyBkZSBNaWNyb3NvZnQ8L3Nw
YW4+PC9hPjwvZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjI3Ij48ZGl2IGNsYXNzPSJt
c3RIZHJfUHJkU2VjdGlvbjMzX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly9l
bWVhLm1pY3Jvc29mdHN0b3JlLmNvbS9lcy9lcy1FUz9XVC5tY19pZD1NU0NPTV9F
U19FU192MkhlYWRlcl9Ecm9wZG93bi1UaWxlVGVybXNfU3RvcmUiPjxzcGFuPk1p
Y3Jvc29mdCBTdG9yZTwvc3Bhbj48L2E+PC9kaXY+PC9saT48bGkgaWQ9Im10aGRy
MjgiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzNfR3JvdXBJdGVtIj48
YSAgSHJlZj0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS8/bG49ZXMtZXM/
V1QubWNfaWQ9TVNDT01fRVNfRVNfdjJIZWFkZXJfRHJvcGRvd24tVGlsZVRlcm1z
X01TU3VwcG9ydCI+PHNwYW4+U29wb3J0ZTwvc3Bhbj48L2E+PC9kaXY+PC9saT48
bGkgaWQ9Im10aGRyMjkiPjxkaXYgY2xhc3M9Im1zdEhkcl9QcmRTZWN0aW9uMzNf
R3JvdXBJdGVtIj48YSAgSHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuZXMvIj48
c3Bhbj5Qw6FnaW5hIGRlIGluaWNpbyBkZSBNaWNyb3NvZnQ8L3NwYW4+PC9hPjwv
ZGl2PjwvbGk+PGxpIGlkPSJtdGhkcjMwIj48ZGl2IGNsYXNzPSJtc3RIZHJfUHJk
U2VjdGlvbjMzX0dyb3VwSXRlbSI+PGEgIEhyZWY9Imh0dHA6Ly93d3cubWljcm9z
b2Z0LmNvbS9lcy9lcy9zaXRlbWFwLmFzcHg/V1QubWNfaWQ9TVNDT01fRVNfRVNf
djJIZWFkZXJfRHJvcGRvd24tVGlsZVRlcm1zX0FsbE1TU2l0ZXMiPjxzcGFuPlRv
ZG9zIGxvcyBzaXRpb3MgZGUgTWljcm9zb2Z0PC9zcGFuPjwvYT48L2Rpdj48L2xp
PjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iY3NzQ2xlYXIiPjwvZGl2PjwvZGl2Pjwv
ZGl2Pg0KICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdEhkcl9QcmRCb3R0b21T
dHJpcCI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAg
PC9kaXY+DQo8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KPGRpdiBjbGFzcz0ibXN0SGRyX01lbnVJ
dGVtIiANCiAgICBpZD0ibXRoZHIwNCIgIGJpOnR5cGU9Im9uZU1zY29tSGVhZGVy
TGluayI+DQogICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29t
QmxhZGVfU3RhdGljU2VjMTNfUmVwZWF0ZXJfY3RsMDFfY3RsMDBfTWVudUxpbmsi
IGNsYXNzPSJtc3RIZHJfTWVudUxpbmsiPg0KICAgICAgICA8YSBocmVmPSJodHRw
Oi8vZW1lYS5taWNyb3NvZnRzdG9yZS5jb20vZXMvZXMtRVM/V1QubWNfaWQ9TVND
T01fRVNfRVNfdjJIZWFkZXJfVG9wLUxldmVsX1N0b3JlIiBpZD0iY3RsMDBfY3Rs
MDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTNfUmVwZWF0ZXJfY3Rs
MDFfY3RsMDBfTWVudUxpbmtBbmNob3IiIGNsYXNzPSJtc3RIZHJfTWVudUxpbmtB
bmNob3IiPg0KICAgICAgICAgICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVy
X29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTNfUmVwZWF0ZXJfY3RsMDFfY3RsMDBf
TWVudUxpbmtUZXh0IiBjbGFzcz0ibXN0SGRyX01lbnVMaW5rVHh0Ij5NSUNST1NP
RlQgU1RPUkU8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJjc3NDbGVhciI+DQogICAgICAgICAgICA8L2Rp
dj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIA0KPC9kaXY+DQogICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCjxkaXYgY2xhc3M9Im1zdEhkcl9NZW51SXRlbSIgDQogICAgaWQ9Im10aGRy
MDUiICBiaTp0eXBlPSJvbmVNc2NvbUhlYWRlckxpbmsiPg0KICAgIDxkaXYgaWQ9
ImN0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1Jl
cGVhdGVyX2N0bDAyX2N0bDAwX01lbnVMaW5rIiBjbGFzcz0ibXN0SGRyX01lbnVM
aW5rIj4NCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
L2Rvd25sb2Fkcy9lcy1lcy9kZWZhdWx0LmFzcHg/V1QubWNfaWQ9TVNDT01fRVNf
RVNfdjJIZWFkZXJfVG9wLUxldmVsX0Rvd25sb2FkcyIgaWQ9ImN0bDAwX2N0bDAw
X0hlYWRlcl9vbmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1JlcGVhdGVyX2N0bDAy
X2N0bDAwX01lbnVMaW5rQW5jaG9yIiBjbGFzcz0ibXN0SGRyX01lbnVMaW5rQW5j
aG9yIj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX0hlYWRlcl9v
bmVNc2NvbUJsYWRlX1N0YXRpY1NlYzEzX1JlcGVhdGVyX2N0bDAyX2N0bDAwX01l
bnVMaW5rVGV4dCIgY2xhc3M9Im1zdEhkcl9NZW51TGlua1R4dCI+REVTQ0FSR0FT
PC9kaXY+DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY3NzQ2xlYXIiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAg
ICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICANCjwvZGl2Pg0KICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8ZGl2
IGNsYXNzPSJtc3RIZHJfTWVudUl0ZW0iIA0KICAgIGlkPSJtdGhkcjA2IiAgYmk6
dHlwZT0ib25lTXNjb21IZWFkZXJMaW5rIj4NCiAgICA8ZGl2IGlkPSJjdGwwMF9j
dGwwMF9IZWFkZXJfb25lTXNjb21CbGFkZV9TdGF0aWNTZWMxM19SZXBlYXRlcl9j
dGwwM19jdGwwMF9NZW51TGluayIgY2xhc3M9Im1zdEhkcl9NZW51TGluayI+DQog
ICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vP2xu
PWVzLWVzP1dULm1jX2lkPU1TQ09NX0VTX0VTX3YySGVhZGVyX1RvcC1MZXZlbF9T
dXBwb3J0IiBpZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3Rh
dGljU2VjMTNfUmVwZWF0ZXJfY3RsMDNfY3RsMDBfTWVudUxpbmtBbmNob3IiIGNs
YXNzPSJtc3RIZHJfTWVudUxpbmtBbmNob3IiPg0KICAgICAgICAgICAgPGRpdiBp
ZD0iY3RsMDBfY3RsMDBfSGVhZGVyX29uZU1zY29tQmxhZGVfU3RhdGljU2VjMTNf
UmVwZWF0ZXJfY3RsMDNfY3RsMDBfTWVudUxpbmtUZXh0IiBjbGFzcz0ibXN0SGRy
X01lbnVMaW5rVHh0Ij5TT1BPUlRFPC9kaXY+DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3NzQ2xlYXIiPg0KICAg
ICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICAN
CjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImNzc0NsZWFyIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8
L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0ibXN0SGRyX1NlY1JvdyI+DQogICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJtc3RIZHJfU2VjUm93QmciPg0KICAgICAgICAg
ICAgPC9kaXY+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9
Im1zdEhkcl9TdGF0aWNTZWMyMSI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibXN0SGRyX1N0YXRpY1NlY1JpZ2h0QWxpZ24iPg0KICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAg
ICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtc3RIZHJfU3RhdGlj
U2VjMjIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1zdEhkcl9DcHNB
U3RhdGljU2VjTGVmdEFsaWduIj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNzc0NsZWFyIj4NCiAgICAgICAgICAgIDwvZGl2Pg0K
ICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPg0KICAgIGlmICh0eXBlb2YgJCAhPSAidW5kZWZpbmVkIikg
ew0KICAgICAgICAkKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmIChNc3Qg
JiYgTXN0LkZseW91dE1lbnUpIHsNCiAgICAgICAgICAgICAgICB2YXIgQmxhZGVD
bGljazsNCiAgICAgICAgICAgICAgICB2YXIgQmxhZGVDbG9zZTsNCiAgICAgICAg
ICAgICAgICBpZiAoJC5iaSAmJiAkLmJpLmRhdGFSZXRyaWV2ZXJzLnN0cnVjdHVy
ZSkgew0KICAgICAgICAgICAgICAgICAgICBCbGFkZUNsaWNrID0gZnVuY3Rpb24g
KGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5ldyBGdW5jdGlvbmFs
aXR5Ki8NCiAgICAgICAgICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAg
ICAgICAgICAgICAxLiBHcmFiIGFsbCB0aGUgbGlua3MgaW4gdGhlIHBvcHVwcw0K
ICAgICAgICAgICAgICAgICAgICAgICAgMi4gRm9yIGVhY2ggbGluayBjb2xsYXRl
IHRoZSBiaSBwYXJhbWV0ZXJzDQogICAgICAgICAgICAgICAgICAgICAgICAqLw0K
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSAkKGUudGFyZ2V0
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9ICQoZS50
YXJnZXQpLnBhcmVudHMoJy5tc3RIZHJfTWVudUl0ZW0nKS5maW5kKCcubXN0SGRy
X0ZseW91dCBhLC5tc3RIZHJfRmx5b3V0Jyk7DQoNCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIE1lcmdlIFBhcmFtcyBmcm9tIHRoZSBhZGRpdGlvbmFsUGFyYW1z
Ki8NCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5rQ3V0b21QYXJhbXMg
PSAkLmJpLmdldEF0dHJEYXRhKCQoZS50YXJnZXQpLnBhcmVudHMoJy5tc3RIZHJf
TWVudUl0ZW0nKS5maW5kKCdhLm1zdEhkcl9NZW51TGlua0FuY2hvcicpKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBtZXJnZWRiaURhdGEgPSAkLmJpLmdl
dEF0dHJEYXRhKGVsZW1lbnRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBjdXN0b21QYXJhbXMgPSAkLmV4dGVuZCh7fSwgbGlua0N1dG9tUGFyYW1zLCB7
IHRpdGxlOiAkLnRyaW0oJChlbGVtZW50KS50ZXh0KCkpIH0pOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkLmV4dGVuZChjdXN0b21QYXJhbXMsICQuYmkuYmFzZURhdGEoKSwgJC5iaS5k
YXRhUmV0cmlldmVycy5zdHJ1Y3R1cmUuZ2V0RGF0YShlbGVtZW50KSk7DQogICAg
ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IH0NCg0KICAgICAgICAg
ICAgICAgICAgICAgICAgLyogT3BlbiBCaSBFdmVudA0KICAgICAgICAgICAgICAg
ICAgICAgICAgSW50ZXJhY3Rpb25UeXBlPTk7SW5pdGlhbD0wO1RpdGxlPUJsYWRl
SXRlbTtQYXJlbnRUeXBlU3RydWN0dXJlO1BhcmVudEluZGV4U3RydWN0dXJlKHNh
bWUpKi8NCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcGVuQklQYXJhbXMg
PSAkLmV4dGVuZCh7fSwgY3VzdG9tUGFyYW1zLCB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdGlhbDogKCQoZS50YXJnZXQpLmRhdGEoJ2JpYmxhZGVv
cGVuJykgIT09IHVuZGVmaW5lZCA/ICQoZS50YXJnZXQpLmRhdGEoJ2JpYmxhZGVv
cGVuJykgOiAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCBpbnRlcmFjdGlvbnR5cGU6IDkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgaW5kZXg6IGN1c3RvbVBhcmFtc1sncGFyZW50aW5kZXhzdHJ1
Y3R1cmUnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
YXJlbnRpbmRleHN0cnVjdHVyZTogJycNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgJy1iaS1kZXNjcmlwdGlvbi1pZ25vcmUtJzogJ2JsYWRl
LW9wZW4nDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAg
ICAgICAgICAgICAgICAgJChlLnRhcmdldCkuZGF0YSgnYmlibGFkZW9wZW4nLCAx
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJsYWRlIEluZGV4IGlzIElu
ZGV4Ki8NCiAgICAgICAgICAgICAgICAgICAgICAgICQuYmkucXVldWUucHVzaChv
cGVuQklQYXJhbXMpOw0KDQogICAgICAgICAgICAgICAgICAgIH07DQogICAgICAg
ICAgICAgICAgICAgIEJsYWRlQ2xvc2UgPSBmdW5jdGlvbiAoJGZseW91dExpbmsp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCbGFkZSBDbG9zZSBGdW5j
dGlvbiBJbnRlcmFjdGlvblR5cGUgPSAxMDtJbml0aWFsID0gMC8xO1RpdGxlO1Bh
cmVudFR5cGVTdHJ1Y3R1cmU7SW5kZXhTdHJ1Y3R1cmU7IFJlbW92ZSA6IFBhcmVu
dFRpdGxlU3RydWN0dXJlICovDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIg
YmlJZCA9ICRmbHlvdXRMaW5rLmF0dHIoJ2lkJyk7DQogICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgY3VzdG9tUGFyYW1zID0ge307DQogICAgICAgICAgICAgICAg
ICAgICAgICAkLmV4dGVuZChjdXN0b21QYXJhbXMsICQuYmkuYmFzZURhdGEoKSwg
JC5iaS5kYXRhUmV0cmlldmVycy5zdHJ1Y3R1cmUuZ2V0SW5kZXhHcmlkVHlwZVN0
cnVjdHVyZSgkZmx5b3V0TGluaykpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
JC5leHRlbmQoY3VzdG9tUGFyYW1zLCB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5pdGlhbDogJGZseW91dExpbmsuZGF0YSgnYmlibGFkZWNsb3NlJykg
IT09IHVuZGVmaW5lZCA/ICRmbHlvdXRMaW5rLmRhdGEoJ2JpYmxhZGVjbG9zZScp
IDogMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbnRl
cmFjdGlvbnR5cGU6IDEwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAsIHRpdGxlOiAkLnRyaW0oJGZseW91dExpbmsudGV4dCgpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbmRleDogY3VzdG9tUGFy
YW1zWydwYXJlbnRpbmRleHN0cnVjdHVyZSddDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAsIHBhcmVudGluZGV4c3RydWN0dXJlOiAnJw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJy1iaS1kZXNjcmlw
dGlvbi1pZ25vcmUtJzogJ2JsYWRlLWNsb3NlJw0KICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRmbHlvdXRMaW5r
LmRhdGEoJ2JpYmxhZGVjbG9zZScsIDEpOw0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAkLmJpLnF1ZXVlLnB1c2goY3VzdG9tUGFyYW1zKTsgLyogQ2xvc2UgUmVj
b3JkKi8NCg0KICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB2YXIgYmxhZGUgPSBuZXcgTXN0LkZseW91dE1l
bnUoJ2N0bDAwX2N0bDAwX0hlYWRlcl9vbmVNc2NvbUJsYWRlX0hlYWRlcicsICJt
c3RIZHIiLCAibXN0SGRyX01lbnVJdGVtIiwgIm1zdEhkcl9GbHlvdXRMaW5rIiwg
Im1zdEhkcl9NZW51TGluayIsICJtc3RIZHJfRmx5b3V0IiwgIm1zdEhkcl9GbHlv
dXRSZWdpb24tbHRyIiwgQmxhZGVDbGljaywgQmxhZGVDbG9zZSk7DQogICAgICAg
ICAgICAgICANCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KPC9z
Y3JpcHQ+DQoNCg0KPC9kaXY+DQoNCg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAg
PGRpdiBjbGFzcz0ic3RhZ2UtY29udGVudCI+DQogICAgICAgICAgICA8ZGl2IGNs
YXNzPSJtYWluLWJyYW5kIj4NCiAgICAgICAgICAgICAgICA8dGFibGU+DQogICAg
ICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAg
IDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/bG49ZXMtZXMiIGlk
PSJjdGwwMF9jdGwwMF9CcmFuZExvZ28iPjx0YWJsZT48dGJvZHk+PHRyPjx0ZCBj
bGFzcz0iYnJhbmRMb2dvVGV4dENlbGwiPjxkaXY+PGltZyBzcmM9Imh0dHBzOi8v
c3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMt
ZXMvbWljcm9zb2Z0X3N1cHBvcnRfbG9nb19lc19lcy5wbmciIGFsdD0iTWljcm9z
b2Z0IiAvPjwvZGl2PjwvdGQ+PHRkIGNsYXNzPSJicmFuZExvZ29UZXh0Q2VsbCI+
PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2E+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+
DQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAg
PC90YWJsZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic2VhcmNoLW5hdmlnYXRpb24iPg0KICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InNlYXJjaC1uYXZpZ2F0aW9uLWJnIj4NCiAgICAgICAgICAgICAgICA8
L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uIj4N
CiAgICAgICAgICAgICAgICAgICAgDQogICAgDQo8ZGl2IGNsYXNzPSJvbmVNc2Nv
bUNvbXAgb25lTXNjb21OYXYgbmF2aWdhdGlvbi1mbHlvdXQtcmVnaW9uIiBiaTp0
eXBlPSJvbmVNc2NvbU5hdiI+DQogICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2
aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9OYXZpZ2F0aW9uTWVudUl0ZW1zIiBj
bGFzcz0ibmF2TWVudSI+DQogICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24t
YmciPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPHVsIGNsYXNzPSJuYXZpZ2F0
aW9uLXNlY3Rpb24iIGJpOnR5cGU9Im9uZU1zY29tTWVudSI+DQogICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJjdGwwMF9jdGwwMF9OYXZp
Z2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDBfTmF2
aWdhdGlvbkxpc3RJdGVtIiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtIj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAwX05hdmlnYXRp
b25fb25lTXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRlcl9jdGwwMF9OYXZpZ2F0
aW9udGFiIiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtLXRhYiI+DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLz9sbj1lcy1lcyIgaWQ9ImN0bDAw
X2N0bDAwX05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRl
cl9jdGwwMF9OYXZpZ2F0aW9uTGluayIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10
YWItdGV4dCBuYXZpZ2F0aW9uLWxpbmsiIGJpOkhvbWUxPSJIb21lVmFsMSIgYmk6
SG9tZTI9IkhvbWVWYWwyIj48c3BhbiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtLXRl
eHQiPlDDoWdpbmEgZGUgaW5pY2lvPC9zcGFuPjxkaXYgc3R5bGU9ImNsZWFyOiBi
b3RoOyAiID48L2Rpdj48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2N0bDAw
X05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRlcl9jdGww
MF9OYXZpZ2F0aW9uRmx5b3V0IiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtLWZseW91
dCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY3RsMDBf
Y3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVy
X2N0bDAwX05hdmlnYXRpb25GbHlvdXRDb250ZW50IiBjbGFzcz0ibmF2aWdhdGlv
bi1pdGVtLWZseW91dC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAg
ICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICA8bGkgaWQ9ImN0bDAwX2N0bDAwX05hdmlnYXRpb25fb25l
TXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRlcl9jdGwwMV9OYXZpZ2F0aW9uTGlz
dEl0ZW0iIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0iPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2Nv
bU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVyX2N0bDAxX05hdmlnYXRpb250YWIiIGNs
YXNzPSJuYXZpZ2F0aW9uLWl0ZW0tdGFiIj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8YSBocmVmPSIvZ3AvaHVibGlzdC9lcy1lcyIgaWQ9ImN0bDAwX2N0
bDAwX05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRlcl9j
dGwwMV9OYXZpZ2F0aW9uTGluayIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10YWIt
dGV4dCBuYXZpZ2F0aW9uLWxpbmsiPjxzcGFuIGNsYXNzPSJuYXZpZ2F0aW9uLWl0
ZW0tdGV4dCI+Q2VudHJvIGRlIHNvbHVjaW9uZXM8L3NwYW4+PGRpdiBzdHlsZT0i
Y2xlYXI6IGJvdGg7ICIgPjwvZGl2PjwvYT4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY3Rs
MDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVh
dGVyX2N0bDAxX05hdmlnYXRpb25GbHlvdXQiIGNsYXNzPSJuYXZpZ2F0aW9uLWl0
ZW0tZmx5b3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1z
UmVwZWF0ZXJfY3RsMDFfTmF2aWdhdGlvbkZseW91dENvbnRlbnQiIGNsYXNzPSJu
YXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQiPg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iY3RsMDBfY3RsMDBfTmF2aWdh
dGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVyX2N0bDAyX05hdmln
YXRpb25MaXN0SXRlbSIgY2xhc3M9Im5hdmlnYXRpb24taXRlbSI+DQogICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9u
X29uZU1zY29tTmF2X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDJfTmF2aWdhdGlv
bnRhYiIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10YWIiPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9zZWFyY2gvP2Fkdj0xIiBpZD0iY3Rs
MDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVh
dGVyX2N0bDAyX05hdmlnYXRpb25MaW5rIiBjbGFzcz0ibmF2aWdhdGlvbi1pdGVt
LXRhYi10ZXh0IG5hdmlnYXRpb24tbGluayI+PHNwYW4gY2xhc3M9Im5hdmlnYXRp
b24taXRlbS10ZXh0Ij5Cw7pzcXVlZGEgYXZhbnphZGE8L3NwYW4+PGRpdiBzdHls
ZT0iY2xlYXI6IGJvdGg7ICIgPjwvZGl2PjwvYT4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
Y3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1Jl
cGVhdGVyX2N0bDAyX05hdmlnYXRpb25GbHlvdXQiIGNsYXNzPSJuYXZpZ2F0aW9u
LWl0ZW0tZmx5b3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0
ZW1zUmVwZWF0ZXJfY3RsMDJfTmF2aWdhdGlvbkZseW91dENvbnRlbnQiIGNsYXNz
PSJuYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQiPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iY3RsMDBfY3RsMDBfTmF2
aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVyX2N0bDAzX05h
dmlnYXRpb25MaXN0SXRlbSIgY2xhc3M9Im5hdmlnYXRpb24taXRlbSI+DQogICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0
aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDNfTmF2aWdh
dGlvbnRhYiIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10YWIiPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9ncC9jb21tbmV3cy9lcy1lcyIg
aWQ9ImN0bDAwX2N0bDAwX05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRl
bXNSZXBlYXRlcl9jdGwwM19OYXZpZ2F0aW9uTGluayIgY2xhc3M9Im5hdmlnYXRp
b24taXRlbS10YWItdGV4dCBuYXZpZ2F0aW9uLWxpbmsiPjxzcGFuIGNsYXNzPSJu
YXZpZ2F0aW9uLWl0ZW0tdGV4dCI+Q29tdW5pZGFkZXM8L3NwYW4+PGRpdiBzdHls
ZT0iY2xlYXI6IGJvdGg7ICIgPjwvZGl2PjwvYT4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
Y3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1Jl
cGVhdGVyX2N0bDAzX05hdmlnYXRpb25GbHlvdXQiIGNsYXNzPSJuYXZpZ2F0aW9u
LWl0ZW0tZmx5b3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0
ZW1zUmVwZWF0ZXJfY3RsMDNfTmF2aWdhdGlvbkZseW91dENvbnRlbnQiIGNsYXNz
PSJuYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQiPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iY3RsMDBfY3RsMDBfTmF2
aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVyX2N0bDA0X05h
dmlnYXRpb25MaXN0SXRlbSIgY2xhc3M9Im5hdmlnYXRpb24taXRlbSI+DQogICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0
aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDRfTmF2aWdh
dGlvbnRhYiIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10YWIiPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9lbWVhLm1pY3Jvc29m
dHN0b3JlLmNvbS9lcy8/V1QubWNfaWQ9U01DQkFSX0VTRVNfVEVYVF9CVVkiIGlk
PSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1z
UmVwZWF0ZXJfY3RsMDRfTmF2aWdhdGlvbkxpbmsiIGNsYXNzPSJuYXZpZ2F0aW9u
LWl0ZW0tdGFiLXRleHQgbmF2aWdhdGlvbi1saW5rIj48c3BhbiBjbGFzcz0ibmF2
aWdhdGlvbi1pdGVtLXRleHQiPkNvbXByYXIgcHJvZHVjdG9zPC9zcGFuPjxkaXYg
c3R5bGU9ImNsZWFyOiBib3RoOyAiID48L2Rpdj48L2E+DQogICAgICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
aWQ9ImN0bDAwX2N0bDAwX05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRl
bXNSZXBlYXRlcl9jdGwwNF9OYXZpZ2F0aW9uRmx5b3V0IiBjbGFzcz0ibmF2aWdh
dGlvbi1pdGVtLWZseW91dCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGww
MF9JdGVtc1JlcGVhdGVyX2N0bDA0X05hdmlnYXRpb25GbHlvdXRDb250ZW50IiBj
bGFzcz0ibmF2aWdhdGlvbi1pdGVtLWZseW91dC1jb250ZW50Ij4NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9ImN0bDAwX2N0bDAw
X05hdmlnYXRpb25fb25lTXNjb21OYXZfY3RsMDBfSXRlbXNSZXBlYXRlcl9jdGww
NV9OYXZpZ2F0aW9uTGlzdEl0ZW0iIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0iPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2
aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVyX2N0bDA1X05h
dmlnYXRpb250YWIiIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0tdGFiIj4NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvY29udGFjdHVzLz93cz1z
dXBwb3J0IiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9j
dGwwMF9JdGVtc1JlcGVhdGVyX2N0bDA1X05hdmlnYXRpb25MaW5rIiBjbGFzcz0i
bmF2aWdhdGlvbi1pdGVtLXRhYi10ZXh0IG5hdmlnYXRpb24tbGluayI+PHNwYW4g
Y2xhc3M9Im5hdmlnYXRpb24taXRlbS10ZXh0Ij5Db250w6FjdGVub3M8L3NwYW4+
PGRpdiBzdHlsZT0iY2xlYXI6IGJvdGg7ICIgPjwvZGl2PjwvYT4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGww
MF9JdGVtc1JlcGVhdGVyX2N0bDA1X05hdmlnYXRpb25GbHlvdXQiIGNsYXNzPSJu
YXZpZ2F0aW9uLWl0ZW0tZmx5b3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2
X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDVfTmF2aWdhdGlvbkZseW91dENvbnRl
bnQiIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQiPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iY3RsMDBf
Y3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9JdGVtc1JlcGVhdGVy
X2N0bDA2X05hdmlnYXRpb25MaXN0SXRlbSIgY2xhc3M9Im5hdmlnYXRpb24taXRl
bSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jdGww
MF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3Rs
MDZfTmF2aWdhdGlvbnRhYiIgY2xhc3M9Im5hdmlnYXRpb24taXRlbS10YWIiPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9ncC9zaXRlbWFw
L2VzLWVzIiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9j
dGwwMF9JdGVtc1JlcGVhdGVyX2N0bDA2X05hdmlnYXRpb25MaW5rIiBjbGFzcz0i
bmF2aWdhdGlvbi1pdGVtLXRhYi10ZXh0IG5hdmlnYXRpb24tbGluayI+PHNwYW4g
Y2xhc3M9Im5hdmlnYXRpb24taXRlbS10ZXh0Ij5NYXBhIGRlbCB3ZWI8L3NwYW4+
PGRpdiBzdHlsZT0iY2xlYXI6IGJvdGg7ICIgPjwvZGl2PjwvYT4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGww
MF9JdGVtc1JlcGVhdGVyX2N0bDA2X05hdmlnYXRpb25GbHlvdXQiIGNsYXNzPSJu
YXZpZ2F0aW9uLWl0ZW0tZmx5b3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2
X2N0bDAwX0l0ZW1zUmVwZWF0ZXJfY3RsMDZfTmF2aWdhdGlvbkZseW91dENvbnRl
bnQiIGNsYXNzPSJuYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQiPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAg
ICAgICAgICAgICAgDQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRp
diBpZD0iY3RsMDBfY3RsMDBfTmF2aWdhdGlvbl9vbmVNc2NvbU5hdl9jdGwwMF9z
dWJTdHJpcCIgY2xhc3M9Im5hdmlnYXRpb24tNGxldmVsLXN0cmlwIj48L2Rpdj4N
CiAgICANCjwvZGl2Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0K
ICAgIGlmICh0eXBlb2YgJCAhPSAidW5kZWZpbmVkIikgew0KICAgICAgICAkKGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmIChNc3QgJiYgTXN0LkZseW91dE5h
dmlnYXRpb25NZW51KSB7DQogICAgICAgICAgICAgICAgdmFyIE5hdkNsaWNrOw0K
ICAgICAgICAgICAgICAgIHZhciBOYXZDbG9zZTsNCiAgICAgICAgICAgICAgICBp
ZiAoJC5iaSAmJiAkLmJpLmRhdGFSZXRyaWV2ZXJzLnN0cnVjdHVyZSkgew0KICAg
ICAgICAgICAgICAgICAgICBOYXZDbGljayA9IGZ1bmN0aW9uIChlKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAvKiBOZXcgRnVuY3Rpb25hbGl0eSovDQogICAg
ICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAg
MS4gR3JhYiBhbGwgdGhlIGxpbmtzIGluIHRoZSBwb3B1cHMNCiAgICAgICAgICAg
ICAgICAgICAgICAgIDIuIEZvciBlYWNoIGxpbmsgY29sbGF0ZSB0aGUgYmkgcGFy
YW1ldGVycw0KICAgICAgICAgICAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gJChlLnRhcmdldCk7DQogICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSAkKGUudGFyZ2V0KS5wYXJl
bnRzKCcubmF2aWdhdGlvbi1pdGVtJykuZmluZCgnLm5hdmlnYXRpb24taXRlbS1m
bHlvdXQtY29udGVudCBhLC5uYXZpZ2F0aW9uLWl0ZW0tZmx5b3V0LWNvbnRlbnQn
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1lcmdlIFBhcmFtcyBmcm9t
IHRoZSBhZGRpdGlvbmFsUGFyYW1zKi8NCiAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBtZXJnZWRiaURhdGEgPSAkLmJpLmdldEF0dHJEYXRhKGVsZW1lbnRzKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXN0b21QYXJhbXMgPSB7IHRp
dGxlOiAkLnRyaW0oJChlbGVtZW50KS50ZXh0KCkpIH07DQogICAgICAgICAgICAg
ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQu
ZXh0ZW5kKGN1c3RvbVBhcmFtcywgJC5iaS5iYXNlRGF0YSgpLCAkLmJpLmRhdGFS
ZXRyaWV2ZXJzLnN0cnVjdHVyZS5nZXREYXRhKGVsZW1lbnQpKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfQ0KDQogICAgICAgICAgICAg
ICAgICAgICAgICAvKiBPcGVuIEJpIEV2ZW50DQogICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlcmFjdGlvblR5cGU9OTtJbml0aWFsPTA7VGl0bGU9QmxhZGVJdGVt
O1BhcmVudFR5cGVTdHJ1Y3R1cmU7UGFyZW50SW5kZXhTdHJ1Y3R1cmUoc2FtZSkq
Lw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wZW5CSVBhcmFtcyA9ICQu
ZXh0ZW5kKHt9LCBjdXN0b21QYXJhbXMsIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbml0aWFsOiAoJChlLnRhcmdldCkuZGF0YSgnYmluYXZvcGVuJykg
IT09IHVuZGVmaW5lZCA/ICQoZS50YXJnZXQpLmRhdGEoJ2JpbmF2b3BlbicpIDog
MCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaW50ZXJh
Y3Rpb250eXBlOiA5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIGluZGV4OiBjdXN0b21QYXJhbXNbJ3BhcmVudGluZGV4c3RydWN0dXJlJ10N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcGFyZW50aW5k
ZXhzdHJ1Y3R1cmU6ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAsICctYmktZGVzY3JpcHRpb24taWdub3JlLSc6ICduYXYtb3BlbicNCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAkKGUudGFyZ2V0KS5kYXRhKCdiaW5hdm9wZW4nLCAxKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEJsYWRlIEluZGV4IGlzIEluZGV4Ki8NCiAgICAg
ICAgICAgICAgICAgICAgICAgICQuYmkucXVldWUucHVzaChvcGVuQklQYXJhbXMp
Ow0KDQoNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAg
ICAgTmF2Q2xvc2UgPSBmdW5jdGlvbiAoJGZseW91dExpbmspIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIC8qICBCbGFkZSBDbG9zZSBGdW5jdGlvbiBJbnRlcmFj
dGlvblR5cGUgPSAxMDtJbml0aWFsID0gMC8xO1RpdGxlO1BhcmVudFR5cGVTdHJ1
Y3R1cmU7SW5kZXhTdHJ1Y3R1cmU7IFJlbW92ZSA6IFBhcmVudFRpdGxlU3RydWN0
dXJlICovDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmlJZCA9ICRmbHlv
dXRMaW5rLmF0dHIoJ2lkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIg
Y3VzdG9tUGFyYW1zID0ge307DQogICAgICAgICAgICAgICAgICAgICAgICAkLmV4
dGVuZChjdXN0b21QYXJhbXMsICQuYmkuYmFzZURhdGEoKSwgJC5iaS5kYXRhUmV0
cmlldmVycy5zdHJ1Y3R1cmUuZ2V0SW5kZXhHcmlkVHlwZVN0cnVjdHVyZSgkZmx5
b3V0TGluaykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQoY3Vz
dG9tUGFyYW1zLCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlh
bDogJGZseW91dExpbmsuZGF0YSgnYmluYXZjbG9zZScpICE9PSB1bmRlZmluZWQg
PyAkZmx5b3V0TGluay5kYXRhKCdiaWJsYWRlY2xvc2UnKSA6IDANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaW50ZXJhY3Rpb250eXBlOiAx
MA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB0aXRsZTog
JC50cmltKCRmbHlvdXRMaW5rLnRleHQoKSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgaW5kZXg6IGN1c3RvbVBhcmFtc1sncGFyZW50aW5k
ZXhzdHJ1Y3R1cmUnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBwYXJlbnRpbmRleHN0cnVjdHVyZTogJycNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsICctYmktZGVzY3JpcHRpb24taWdub3JlLSc6
ICduYXYtY2xvc2UnDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGZseW91dExpbmsuZGF0YSgnYmluYXZjbG9z
ZScsIDEpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkLmJpLnF1ZXVlLnB1
c2goY3VzdG9tUGFyYW1zKTsgLyogQ2xvc2UgUmVjb3JkKi8NCg0KICAgICAgICAg
ICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICB2YXIgTmF2aWdhdGlvbk1lbnUgPSBuZXcgTXN0LkZseW91dE5hdmlnYXRpb25N
ZW51KCdjdGwwMF9jdGwwMF9OYXZpZ2F0aW9uX29uZU1zY29tTmF2X2N0bDAwX05h
dmlnYXRpb25NZW51SXRlbXMnLCAibmF2TWVudSIsICJuYXZpZ2F0aW9uLWl0ZW0i
LCAibmF2aWdhdGlvbi1mbHlvdXQtbGluayIsICJuYXZpZ2F0aW9uLWxpbmsiLCAi
bmF2aWdhdGlvbi1pdGVtLWZseW91dC1jb250ZW50IiwgIm5hdmlnYXRpb24tZmx5
b3V0LXJlZ2lvbiIsICJuYXZpZ2F0aW9uLXNlY3Rpb24iLCBOYXZDbGljaywgTmF2
Q2xvc2UsIGZhbHNlLCAibmF2aWdhdGlvbi1zdWItaXRlbS1mbHlvdXQtY29udGVu
dCIsICJuYXZpZ2F0aW9uLXN1Yi1pdGVtIik7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0pOw0KICAgIH0NCjwvc2NyaXB0Pg0KDQoNCiAgICAgICAgICAgICAgICA8
L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFz
cz0ibWFpbi1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICANCiAgICA8ZGl2IGlk
PSJnc2Z4X2JybmRfUGFnZVdyYXBwZXIiPg0KICAgICAgICA8ZGl2IGlkPSJnc2Z4
X2JybmRfUGFnZUNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGlkPSJnc2Z4
X2JybmRfQ29udGVudENvbnRhaW5lciIgY2xhc3M9ImdzZnhfYnJuZF9UcmFuc0JH
Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjb250ZW50QXJlYSI+DQogICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1haW5Sb3ciPjxkaXYgY2xhc3M9InBy
aW1hcnlUYWJsZSI+PHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0i
MCIgY2xhc3M9InByaW1hcnlUYWJsZSI+PHRyPjx0ZCBjbGFzcz0icHJpbWFyeU1h
aW5Db2x1bW4iPjxkaXYgaWQ9Im1haW5Db2x1bW4iIGxhbmc9ImVzIj48ZGl2IGlk
PSJrYiIgY2xhc3M9ImtiIj48ZGl2IGlkPSJrYl9kZWZhdWx0IiBjbGFzcz0ia2Jf
ZGVmYXVsdCBsdHIiPjwhLS0gLSAtS0IgMyBzdGFydC0gLSAtLT48YSBpZD0idG9w
Ij48L2E+PGgxIGNsYXNzPSJ0aXRsZSIgaWQ9Im10X3RpdGxlIj5Dw7NtbyB1c2Fy
IGVsIEFkbWluaXN0cmFkb3IgZGUgdGFyZWFzIGRlIFdpbmRvd3M8L2gxPjxkaXYg
Y2xhc3M9ImFydGljbGVQcm9wZXJ0eSIgaWQ9Im10X2FydGljbGVfcHJvcGVydGll
cyIgdHJhbnNsYXRlPSJmYWxzZSI+SWQuIGRlIGFydMOtY3VsbzogMzIzNTI3IC0g
PGEgaHJlZj0iI2FwcGxpZXN0byIgb25jbGljaz0icmV0dXJuIFNjcm9sbFRvU2Vj
dGlvbignLmFydGljbGVQcm9wZXJ0aWVzJyk7Ij5WZXIgbG9zIHByb2R1Y3RvcyBh
IGxvcyBxdWUgc2UgYXBsaWNhIGVzdGUgYXJ0w61jdWxvPC9hPjwvZGl2PjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5pZiAoIWxvYWRUT0NOb2RlKSB7dmFy
IGxvYWRUT0NOb2RlID0gZnVuY3Rpb24oKXt9fTwvc2NyaXB0PjxkaXYgaWQ9Imti
X3NlY3Rpb24iIGNsYXNzPSJzZWN0aW9uIj48ZGl2IGlkPSJrYl9leHBhbmRjb2xs
YXBzZWFsbCIgY2xhc3M9ImV4cGFuZGNvbGxhcHNlYWxsIiB0cmFuc2xhdGU9ImZh
bHNlIj48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0iZXhwYW5k
YWxsdGV4dCIgaWQ9ImV4cGFuZEFsbCI+RXhwYW5kaXIgdG9kbzwvYT4gfCA8YSBo
cmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0iY29sbGFwc2VhbGx0ZXh0
IiBpZD0iY29sbGFwc2VBbGwiPkNvbnRyYWVyIHRvZG88L2E+PHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgaWYgKGtiX3BhZ2Vfb2JqZWN0
KQogICAgICAgICAgewogICAgICAgICAga2JfcGFnZV9vYmplY3Qua2JfaW1hZ2VF
eHBhbmRIb3ZlclRleHQgPSAnSGFnYSBjbGljIHBhcmEgYW1wbGlhciBlc3RhIGlt
YWdlbic7CiAgICAgICAgICB9CiAgICAgICAgPC9zY3JpcHQ+PC9kaXY+PGgyIGNs
YXNzPSJzdWJUaXRsZSIgaWQ9InRvY0hlYWRSZWYiIHRyYW5zbGF0ZT0iZmFsc2Ui
PjxzcGFuPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiPlJlc3VtZW48L2E+
PC9zcGFuPjwvaDI+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAg
ICAgICAgICAgIGxvYWRUT0NOb2RlKDEsICdzdW1tYXJ5Jyk7CiAgICAgICAgICAg
IDwvc2NyaXB0PjxkaXYgY2xhc3M9InNib2R5IiBpZD0ibXQiPiBFbiBlc3RlIGFy
dMOtY3VsbyBzZSBkZXNjcmliZSBjw7NtbyB1dGlsaXphciBlbCBBZG1pbmlzdHJh
ZG9yDQoJCSAgZGUgdGFyZWFzIGRlIFdpbmRvd3MuIFRhbWJpw6luIHNlIGV4cGxp
Y2EgY8OzbW8gcmVhbGl6YXIgYWxndW5vcyBwcm9jZWRpbWllbnRvcw0KCQkgIHV0
aWxpemFkb3MgY29uIGZyZWN1ZW5jaWEsIGNvbW8gaW5pY2lhciBwcm9ncmFtYXMs
IGZpbmFsaXphciBwcm9jZXNvcyB5DQoJCSAgc3VwZXJ2aXNhciBlbCByZW5kaW1p
ZW50byBkZWwgZXF1aXBvLiA8YnI+PGJyPiBFbCBBZG1pbmlzdHJhZG9yIGRlIHRh
cmVhcw0KCQkgIG11ZXN0cmEgaW5mb3JtYWNpw7NuIGFjZXJjYSBkZWwgcmVuZGlt
aWVudG8gZGVsIGVxdWlwbyB5IGRlIGxvcyBwcm9ncmFtYXMgeQ0KCQkgIHByb2Nl
c29zIHF1ZSBzZSBlamVjdXRhbiBlbiBlbCBlcXVpcG8uIFB1ZWRlIHV0aWxpemFy
IGVsIEFkbWluaXN0cmFkb3IgZGUNCgkJICB0YXJlYXMgcGFyYSBpbmljaWFyIHBy
b2dyYW1hcywgaW5pY2lhciBvIGZpbmFsaXphciBwcm9jZXNvcyB5IHZlciB1bmEN
CgkJICBwcmVzZW50YWNpw7NuIGRpbsOhbWljYSBkZWwgcmVuZGltaWVudG8gZGVs
IGVxdWlwby4gPGJyPjxicj48aDQgaWQ9InRvY0hlYWRSZWYiPjxzcGFuIGlkPSJt
dCI+PGEgaWQ9IjIiPjwvYT48L3NwYW4+Q8OzbW8gaW5pY2lhciBlbCBBZG1pbmlz
dHJhZG9yIGRlIHRhcmVhczwvaDQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgogICAgICBsb2FkVE9DTm9kZSgzLCAnc3VtbWFyeScpOwogICAgPC9zY3Jp
cHQ+IFBhcmEgaW5pY2lhciBlbCBBZG1pbmlzdHJhZG9yIGRlIHRhcmVhcywgcmVh
bGljZSB1bmEgZGUgbGFzDQoJCSAgYWNjaW9uZXMgc2lndWllbnRlczogDQoJCSAg
PHVsPjxsaT5QcmVzaW9uZSBDVFJMK0FMVCtTVVBSIHkgaGFnYSBjbGljIGVuIDxi
PkFkbWluaXN0cmFkb3IgZGUgdGFyZWFzPC9iPi4gPGJyPjxicj5PIGJpZW4gPC9s
aT48bGk+UHJlc2lvbmUgQ1RSTCtNQVnDmlMrRVNDLiA8YnI+PGJyPk8gYmllbiA8
L2xpPjxsaT5IYWdhIGNsaWMgY29uIGVsIGJvdMOzbiBzZWN1bmRhcmlvIGVuIHVu
IMOhcmVhIHZhY8OtYSBkZSBsYQ0KCQkJCWJhcnJhIGRlIHRhcmVhcyB5LCBkZXNw
dcOpcywgaGFnYSBjbGljIGVuIDxiPkFkbWluaXN0cmFkb3IgZGUgdGFyZWFzPC9i
Pi48L2xpPjwvdWw+PGg0IGlkPSJ0b2NIZWFkUmVmIj48c3BhbiBpZD0ibXQiPjxh
IGlkPSIzIj48L2E+PC9zcGFuPkPDs21vIHNhbGlyLCBjYW1iaWFyIGEgbyBpbmlj
aWFyIHVuIHByb2dyYW1hPC9oND48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CiAgICAgIGxvYWRUT0NOb2RlKDMsICdzdW1tYXJ5Jyk7CiAgICA8L3Njcmlw
dD4gTGEgZmljaGEgPGI+QXBsaWNhY2lvbmVzPC9iPiBtdWVzdHJhIGVsIGVzdGFk
byBkZSBsb3MgcHJvZ3JhbWFzIHF1ZSBlc3TDoW4gZWplY3V0w6FuZG9zZSBlbiBl
bA0KCQkgIGVxdWlwby4gUGFyYSBzYWxpciwgY2FtYmlhciBhIG8gaW5pY2lhciB1
biBwcm9ncmFtYSwgc2lnYSBlc3RvcyBwYXNvczogDQoJCSAgPG9sPjxsaT5IYWdh
IGNsaWMgZW4gbGEgZmljaGEgPGI+QXBsaWNhY2lvbmVzPC9iPi48L2xpPjxsaT5S
ZWFsaWNlIHVuYSBkZSBsYXMgYWNjaW9uZXMgc2lndWllbnRlcywgZGVwZW5kaWVu
ZG8gZGUgbGENCgkJCQlhY2Npw7NuIHF1ZSBkZXNlZSByZWFsaXphcjogDQoJCQkJ
PHVsPjxsaT48Yj5TYWxpciBkZSB1biBwcm9ncmFtYS48L2I+PGJyPjxicj4gUGFy
YSBjZXJyYXIgdW4gcHJvZ3JhbWEsIGhhZ2EgY2xpYyBlbiBlbCBwcm9ncmFtYSBx
dWUNCgkJCQkJIGRlc2VhIGNlcnJhciB5LCBhIGNvbnRpbnVhY2nDs24sIGhhZ2Eg
Y2xpYyBlbiA8Yj5GaW5hbGl6YXIgdGFyZWE8L2I+LiA8YnI+PGJyPjxiPk5PVEE8
YnI+PC9iPiBBbCBzYWxpciBkZSB1biBwcm9ncmFtYSBkZSBlc3RhIG1hbmVyYSwg
c2UgcGVyZGVyw6FuIGxvcyBkYXRvcyBubw0KCQkJCQkgZ3VhcmRhZG9zIGVuIGVz
ZSBwcm9ncmFtYS48L2xpPjxsaT48Yj5DYW1iaWFyIGEgb3RybyBwcm9ncmFtYS48
L2I+PGJyPjxicj4gUGFyYSBjYW1iaWFyIGEgb3RybyBwcm9ncmFtYSwgaGFnYSBj
bGljIGVuIGVsIHByb2dyYW1hDQoJCQkJCSBhbCBxdWUgZGVzZWUgY2FtYmlhciB5
LCBhIGNvbnRpbnVhY2nDs24sIGhhZ2EgY2xpYyBlbiA8Yj5QYXNhciBhPC9iPi48
L2xpPjxsaT48Yj5JbmljaWFyIHVuIHByb2dyYW1hLjwvYj48YnI+PGJyPiBQYXJh
IGluaWNpYXIgdW4gcHJvZ3JhbWEsIGhhZ2EgY2xpYyBlbiA8Yj5UYXJlYSBudWV2
YTwvYj4uIEVuIGVsIGN1YWRybyBkZSBkacOhbG9nbyA8Yj5DcmVhIHVuYSB0YXJl
YSBudWV2YTwvYj4sIGhhZ2EgY2xpYyBlbiA8Yj5FeGFtaW5hcjwvYj4sIGJ1c3F1
ZSB5IHNlbGVjY2lvbmUgZWwgcHJvZ3JhbWEgcXVlIGRlc2VhIGluaWNpYXIsIGhh
Z2EgY2xpYyBlbiA8Yj5BYnJpcjwvYj4geSwgYSBjb250aW51YWNpw7NuLCBoYWdh
IGNsaWMgZW4gPGI+QWNlcHRhcjwvYj4uIDxicj48YnI+PGI+Tk9UQTxicj48L2I+
IEVzdGUgcHJvY2VkaW1pZW50byBlcyBiYXN0YW50ZSBzaW1pbGFyIGFsIGluaWNp
byBkZSB1biBwcm9ncmFtYQ0KCQkJCQkgdXRpbGl6YW5kbyBlbCBjb21hbmRvIDxi
PkVqZWN1dGFyPC9iPiBkZWwgbWVuw7ogPGI+SW5pY2lvPC9iPi4gPC9saT48L3Vs
PjwvbGk+PC9vbD48aDQgaWQ9InRvY0hlYWRSZWYiPjxzcGFuIGlkPSJtdCI+PGEg
aWQ9IjQiPjwvYT48L3NwYW4+Q8OzbW8gZmluYWxpemFyIHVuIHByb2Nlc288L2g0
PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgbG9hZFRPQ05v
ZGUoMywgJ3N1bW1hcnknKTsKICAgIDwvc2NyaXB0PiBMYSBmaWNoYSA8Yj5Qcm9j
ZXNvczwvYj4gbXVlc3RyYSBpbmZvcm1hY2nDs24gYWNlcmNhIGRlIGxvcyBwcm9j
ZXNvcyBxdWUgZXN0w6FuIGVqZWN1dMOhbmRvc2UNCgkJICBlbiBlbCBlcXVpcG8u
IFBhcmEgZmluYWxpemFyIHVuIHByb2Nlc28sIHNpZ2EgZXN0b3MgcGFzb3MuIDxi
cj48YnI+PGI+Tk9UQTxicj48L2I+IFRlbmdhIGN1aWRhZG8gY3VhbmRvIGZpbmFs
aWNlIHVuIHByb2Nlc28uIFNpIHNhbGUgZGUgdW4gcHJvZ3JhbWENCgkJICBkZSBl
c3RhIG1hbmVyYSwgc2UgcGVyZGVyw6FuIGxvcyBkYXRvcyBxdWUgbm8gc2UgaGF5
YW4gZ3VhcmRhZG8uIFNpIGZpbmFsaXphIHVuDQoJCSAgcHJvY2VzbyBkZWwgc2lz
dGVtYSwgcHVlZGUgcXVlIHVuIGNvbXBvbmVudGUgZGVsIHNpc3RlbWEgZGVqZSBk
ZSBmdW5jaW9uYXINCgkJICBjb3JyZWN0YW1lbnRlLiANCgkJICA8b2w+PGxpPkhh
Z2EgY2xpYyBlbiBsYSBmaWNoYSA8Yj5Qcm9jZXNvczwvYj4uPC9saT48bGk+UmVh
bGljZSB1bmEgZGUgbGFzIGFjY2lvbmVzIHNpZ3VpZW50ZXMsIGRlcGVuZGllbmRv
IGRlIGxhDQoJCQkJYWNjacOzbiBxdWUgZGVzZWUgcmVhbGl6YXI6IA0KCQkJCTx1
bD48bGk+U2kgZGVzZWEgZmluYWxpemFyIHVuIMO6bmljbyBwcm9jZXNvLCBoYWdh
IGNsaWMgZW4gZWwNCgkJCQkJIHByb2Nlc28gcXVlIGRlc2VhIGZpbmFsaXphciB5
LCBhIGNvbnRpbnVhY2nDs24sIGhhZ2EgY2xpYyBlbiA8Yj5UZXJtaW5hciBwcm9j
ZXNvPC9iPi4gPGJyPjxicj5PIGJpZW4gPC9saT48bGk+U2kgZGVzZWEgZmluYWxp
emFyIHVuIHByb2Nlc28geSB0b2RvcyBsb3MgcHJvY2Vzb3MNCgkJCQkJIHJlbGFj
aW9uYWRvcyBkaXJlY3RhIG8gaW5kaXJlY3RhbWVudGUgY29uIMOpbCwgaGFnYSBj
bGljIGNvbiBlbCBib3TDs24gc2VjdW5kYXJpbw0KCQkJCQkgZW4gZWwgcHJvY2Vz
byBxdWUgZGVzZWUgZmluYWxpemFyIHksIGEgY29udGludWFjacOzbiwgaGFnYSBj
bGljIGVuIDxiPkZpbmFsaXphciBlbCDDoXJib2wgZGUgcHJvY2Vzb3M8L2I+Ljwv
bGk+PC91bD48L2xpPjwvb2w+PGg0IGlkPSJ0b2NIZWFkUmVmIj48c3BhbiBpZD0i
bXQiPjxhIGlkPSI1Ij48L2E+PC9zcGFuPkPDs21vIHN1cGVydmlzYXIgZWwgcmVu
ZGltaWVudG8gZGVsIGVxdWlwbzwvaDQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogICAgICBsb2FkVE9DTm9kZSgzLCAnc3VtbWFyeScpOwogICAgPC9z
Y3JpcHQ+IEhhZ2EgY2xpYyBlbiBsYSBmaWNoYSA8Yj5SZW5kaW1pZW50bzwvYj4g
cGFyYSB2ZXIgdW5hIHJlcHJlc2VudGFjacOzbiBkaW7DoW1pY2EgZGVsIHJlbmRp
bWllbnRvIGRlbCBlcXVpcG8sDQoJCSAgaW5jbHV5ZW5kbyBsYXMgbWVkaWRhcyBz
aWd1aWVudGVzOiANCgkJICA8dWw+PGxpPkdyw6FmaWNvcyBwYXJhIGVsIHVzbyBk
ZSBDUFUgeSBkZSBtZW1vcmlhLjwvbGk+PGxpPkVsIG7Dum1lcm8gdG90YWwgZGUg
aWRlbnRpZmljYWRvcmVzLCBzdWJwcm9jZXNvcyB5IHByb2Nlc29zDQoJCQkJcXVl
IGVzdMOhbiBlamVjdXTDoW5kb3NlLjwvbGk+PGxpPkVsIG7Dum1lcm8gdG90YWwg
ZGUga2lsb2J5dGVzIChLQikgdXRpbGl6YWRvcyBwYXJhIGxhDQoJCQkJbWVtb3Jp
YSBmw61zaWNhLCBkZWwgbsO6Y2xlbyB5IGRlIGNvbmZpcm1hY2nDs24uPC9saT48
L3VsPjxzcGFuIGlkPSJtdCI+PGEgaWQ9IjYiPjwvYT48L3NwYW4+PC9kaXY+PGgy
IGNsYXNzPSJzdWJUaXRsZSIgaWQ9InRvY0hlYWRSZWYiIHRyYW5zbGF0ZT0iZmFs
c2UiPjxzcGFuPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiPlJlZmVyZW5j
aWFzPC9hPjwvc3Bhbj48L2gyPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KICAgICAgICAgICAgICBsb2FkVE9DTm9kZSgxLCAncmVmZXJlbmNlcycpOwog
ICAgICAgICAgICA8L3NjcmlwdD48ZGl2IGNsYXNzPSJzYm9keSIgaWQ9Im10Ij4g
UGFyYSBvYnRlbmVyIG3DoXMgaW5mb3JtYWNpw7NuIGFjZXJjYSBkZWwgQWRtaW5p
c3RyYWRvciBkZQ0KCQkgIHRhcmVhcywgdmVhIGxhIEF5dWRhIGRlbCBBZG1pbmlz
dHJhZG9yIGRlIHRhcmVhcy4gUGFyYSBlbGxvLCBpbmljaWUgZWwNCgkJICBBZG1p
bmlzdHJhZG9yIGRlIHRhcmVhcyB5IGhhZ2EgY2xpYyBlbiA8c3Ryb25nIGNsYXNz
PSJ1aXRlcm0iPlRlbWFzIGRlIEF5dWRhIGRlbCBBZG1pbmlzdHJhZG9yDQoJCSAg
ZGUgdGFyZWFzPC9zdHJvbmc+IGVuIGVsIG1lbsO6IDxiPkF5dWRhPC9iPi4gPGJy
Pjxicj48L2Rpdj48aDIgY2xhc3M9InN1YlRpdGxlIGFydGljbGVQcm9wZXJ0aWVz
IiBpZD0idG9jSGVhZFJlZiIgdHJhbnNsYXRlPSJmYWxzZSI+PHNwYW4+PGEgaHJl
Zj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9Im10X3Byb3BlcnR5SGVhZCI+UHJv
cGllZGFkZXM8L2E+PC9zcGFuPjwvaDI+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogICAgICBsb2FkVE9DTm9kZSgxLCAnUHJvcGllZGFkZXMnKTsKICAg
IDwvc2NyaXB0PjxkaXYgY2xhc3M9InNib2R5IiB0cmFuc2xhdGU9ImZhbHNlIj48
ZGl2IGNsYXNzPSJhcnRpY2xlUHJvcGVydHlCb3R0b20iPklkLiBkZSBhcnTDrWN1
bG86IDMyMzUyNyAtIMOabHRpbWEgcmV2aXNpw7NuOiBqdWV2ZXMsIDAyIGRlIG5v
dmllbWJyZSBkZSAyMDA2IC0gVmVyc2nDs246IDMuMjwvZGl2PjxkaXYgY2xhc3M9
ImFwcGxpZXNUbyI+PGEgaWQ9ImFwcGxpZXN0byI+PC9hPjxoNT5MYSBpbmZvcm1h
Y2nDs24gZGUgZXN0ZSBhcnTDrWN1bG8gc2UgcmVmaWVyZSBhOjwvaDU+PHVsPjxs
aT5NaWNyb3NvZnQgV2luZG93cyBTZXJ2ZXIgMjAwMywgRW50ZXJwcmlzZSBFZGl0
aW9uICgzMi1iaXQgeDg2KTwvbGk+PGxpPk1pY3Jvc29mdCBXaW5kb3dzIFNlcnZl
ciAyMDAzLCBTdGFuZGFyZCBFZGl0aW9uICgzMi1iaXQgeDg2KTwvbGk+PGxpPk1p
Y3Jvc29mdCBXaW5kb3dzIDIwMDAgU2VydmVyPC9saT48bGk+TWljcm9zb2Z0IFdp
bmRvd3MgMjAwMCBBZHZhbmNlZCBTZXJ2ZXI8L2xpPjxsaT5NaWNyb3NvZnQgV2lu
ZG93cyAyMDAwIFByb2Zlc3Npb25hbCBFZGl0aW9uPC9saT48bGk+TWljcm9zb2Z0
IFdpbmRvd3MgWFAgUHJvZmVzc2lvbmFsPC9saT48bGk+TWljcm9zb2Z0IFdpbmRv
d3MgWFAgSG9tZSBFZGl0aW9uPC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9Imtl
eXdvcmRzIj48dGFibGU+PHRyPjx0ZCBjbGFzcz0iaGVhZGVyIj48aDU+UGFsYWJy
YXMgY2xhdmU6wqANCiAgICAgICAgICAgICAgPC9oNT48L3RkPjx0ZCBjbGFzcz0i
dGV4dCI+a2Job3d0b21hc3RlciBLQjMyMzUyNzwvdGQ+PC90cj48L3RhYmxlPjwv
ZGl2PjxkaXYgY2xhc3M9InRvcE9mUGFnZSIgdHJhbnNsYXRlPSJmYWxzZSI+PGEg
aHJlZj0iI3RvcCI+PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2Vu
LXVzL3VwYXJyb3cuZ2lmIiBhbHQ9IiI+PHNwYW4+Vm9sdmVyIGFsIHByaW5jaXBp
bzwvc3Bhbj48L2E+PGZvbnQgY2xhc3M9Im5vU2hvdyI+IHwgPC9mb250PjxhIGhy
ZWY9IiNzdXJ2ZXkiIGNsYXNzPSJub1Nob3ciIG9uY2xpY2s9InJldHVybiBTY3Jv
bGxUb1NlY3Rpb24oJy5rYmZlZWRiYWNrJyk7Ij5Qcm9wb2Npb25hciBjb21lbnRh
cmlvczwvYT48L2Rpdj48L2Rpdj48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+YWRkTXRTcGFuKCk7PC9zY3JpcHQ+PCEtLSAtIC1LQiAzIGVuZC0g
LSAtLT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJrYlN1cnZleSBub1Nob3ciPjxo
MiBjbGFzcz0ic3ViVGl0bGUga2JmZWVkYmFjayIgaWQ9InRvY0hlYWRSZWYiPjxz
cGFuPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiPlByb3BvY2lvbmFyIGNv
bWVudGFyaW9zPC9hPjwvc3Bhbj48L2gyPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4NCiAgICAgICAgbG9hZFRPQ05vZGUoMSwgJ1Byb3BvY2lvbmFyIGNv
bWVudGFyaW9zJyk7DQogICAgICA8L3NjcmlwdD48ZGl2IGNsYXNzPSJzYm9keSI+
PHNwYW4gY2xhc3M9ImJvb2ttYXJrIj48YSBpZD0ic3VydmV5IiBuYW1lPSJzdXJ2
ZXkiPiZuYnNwOzwvYT48L3NwYW4+PGRpdiBjbGFzcz0id3AiIGlkPSJmbXNTdXJ2
ZXkiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48ZGl2IGNsYXNzPSJmbXMiPjxub3Nj
cmlwdD48ZGl2IGNsYXNzPSJTVVJWRVlOT1NDUklQVCI+PC9kaXY+PC9ub3Njcmlw
dD48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic3VydmV5bmFtZSIgbmFtZT0ic3Vy
dmV5bmFtZSIgdmFsdWU9IiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNob3dw
YWdlIiBuYW1lPSJzaG93cGFnZSIgdmFsdWU9IjEiPjxkaXYgaWQ9IlNVUlZFWVNF
Q1RJT05DT05UQUlORVIiPjxkaXYgaWQ9IlNVUlZFWVNFQ1RJT05fMTMyIiBjbGFz
cz0iU1VSVkVZU0VDVElPTiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHhtbG5zOnN3
PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tL1BTUy9QU1NfU3VydmV5MDEiPjxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlkIiB2YWx1ZT0iMTMyIj48ZGl2IG5h
bWU9IkNvbXBvdW5kaW5nQnJhbmNoUnVsZXMiIHN0eWxlPSJkaXNwbGF5Om5vbmU7
Ij48L2Rpdj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOZXh0U2VjdGlvbkJ5
VG9waWNSZWYiIHZhbHVlPSIwIj48ZGl2IGlkPSJTVVJWRVlRVUVTVElPTl8xMjYx
NiIgY2xhc3M9IlFVRVNUSU9OQ09OVEFJTkVSIj48aW5wdXQgdHlwZT0iaGlkZGVu
IiBuYW1lPSJpZCIgdmFsdWU9IjEyNjE2Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJ0eXBlIiB2YWx1ZT0iQ0hPSUNFIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJyZXF1aXJlZCIgdmFsdWU9IjAiPjxkaXYgY2xhc3M9IlFVRVNUSU9OVEVY
VCI+wr9GdWUgw7p0aWwgZXN0YSBpbmZvcm1hY2nDs24/PC9kaXY+PGRpdiBjbGFz
cz0iUVVFU1RJT05JTlNUUlVDVElPTiI+PC9kaXY+PGRpdiBjbGFzcz0iUVVFU1RJ
T05SRVFVSVJFRCI+PC9kaXY+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmFu
ZG9taXphdGlvbiIgdmFsdWU9IiI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxs
cGFkZGluZz0iMCIgYm9yZGVyPSIwIj48dHI+PHRkIHZhbGlnbj0idG9wIj48dGFi
bGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPjx0
cj48dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSJDSE9JQ0VST1ciPjxpbnB1dCB0eXBl
PSJyYWRpbyIgbmFtZT0iUVVFU1RJT05fMTMyXzEyNjE2MTI2MTYiIGlkPSIxMjUi
IHZhbHVlPSIwIj48L3RkPjx0ZCBjbGFzcz0iQU5TV0VSVEVYVCI+U8OtPC90ZD48
L3RyPjwvdGFibGU+PC90ZD48L3RyPjx0cj48dGQgdmFsaWduPSJ0b3AiPjx0YWJs
ZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+PHRy
Pjx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IkNIT0lDRVJPVyI+PGlucHV0IHR5cGU9
InJhZGlvIiBuYW1lPSJRVUVTVElPTl8xMzJfMTI2MTYxMjYxNiIgaWQ9IjEyNiIg
dmFsdWU9IjEiPjwvdGQ+PHRkIGNsYXNzPSJBTlNXRVJURVhUIj5ObzwvdGQ+PC90
cj48L3RhYmxlPjwvdGQ+PC90cj48dHI+PHRkIHZhbGlnbj0idG9wIj48dGFibGUg
Y2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPjx0cj48
dGQgdmFsaWduPSJ0b3AiIGNsYXNzPSJDSE9JQ0VST1ciPjxpbnB1dCB0eXBlPSJy
YWRpbyIgbmFtZT0iUVVFU1RJT05fMTMyXzEyNjE2MTI2MTYiIGlkPSIxODg3NCIg
dmFsdWU9IjIiPjwvdGQ+PHRkIGNsYXNzPSJBTlNXRVJURVhUIj5VbiBwb2NvPC90
ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PGRpdiBpZD0i
U1VSVkVZUVVFU1RJT05fMTA1NzYiIGNsYXNzPSJRVUVTVElPTkNPTlRBSU5FUiI+
PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaWQiIHZhbHVlPSIxMDU3NiI+PGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHlwZSIgdmFsdWU9IkNIT0lDRSI+PGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVxdWlyZWQiIHZhbHVlPSIwIj48ZGl2
IGNsYXNzPSJRVUVTVElPTlRFWFQiPsK/Q3XDoW50byBlc2Z1ZXJ6byBoYSBkZWRp
Y2FkbyBwZXJzb25hbG1lbnRlIHBhcmEgdXNhciBlc3RlIGFydMOtY3Vsbz88L2Rp
dj48ZGl2IGNsYXNzPSJRVUVTVElPTklOU1RSVUNUSU9OIj48L2Rpdj48ZGl2IGNs
YXNzPSJRVUVTVElPTlJFUVVJUkVEIj48L2Rpdj48aW5wdXQgdHlwZT0iaGlkZGVu
IiBuYW1lPSJyYW5kb21pemF0aW9uIiB2YWx1ZT0iIj48dGFibGUgY2VsbHNwYWNp
bmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPjx0cj48dGQgdmFsaWdu
PSJ0b3AiPjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJv
cmRlcj0iMCI+PHRyPjx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IkNIT0lDRVJPVyI+
PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJRVUVTVElPTl8xMzJfMTA1NzYxMDU3
NiIgaWQ9IjE2MzA1IiB2YWx1ZT0iMSI+PC90ZD48dGQgY2xhc3M9IkFOU1dFUlRF
WFQiPk11eSBwb2NvPC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjx0cj48dGQg
dmFsaWduPSJ0b3AiPjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9
IjAiIGJvcmRlcj0iMCI+PHRyPjx0ZCB2YWxpZ249InRvcCIgY2xhc3M9IkNIT0lD
RVJPVyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJRVUVTVElPTl8xMzJfMTA1
NzYxMDU3NiIgaWQ9IjE2MzA2IiB2YWx1ZT0iMiI+PC90ZD48dGQgY2xhc3M9IkFO
U1dFUlRFWFQiPlBvY288L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PHRyPjx0
ZCB2YWxpZ249InRvcCI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu
Zz0iMCIgYm9yZGVyPSIwIj48dHI+PHRkIHZhbGlnbj0idG9wIiBjbGFzcz0iQ0hP
SUNFUk9XIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlFVRVNUSU9OXzEzMl8x
MDU3NjEwNTc2IiBpZD0iMTYzMDciIHZhbHVlPSIzIj48L3RkPjx0ZCBjbGFzcz0i
QU5TV0VSVEVYVCI+TW9kZXJhZG88L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+
PHRyPjx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxs
cGFkZGluZz0iMCIgYm9yZGVyPSIwIj48dHI+PHRkIHZhbGlnbj0idG9wIiBjbGFz
cz0iQ0hPSUNFUk9XIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlFVRVNUSU9O
XzEzMl8xMDU3NjEwNTc2IiBpZD0iMTYzMDgiIHZhbHVlPSI0Ij48L3RkPjx0ZCBj
bGFzcz0iQU5TV0VSVEVYVCI+TXVjaG88L3RkPjwvdHI+PC90YWJsZT48L3RkPjwv
dHI+PHRyPjx0ZCB2YWxpZ249InRvcCI+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBj
ZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj48dHI+PHRkIHZhbGlnbj0idG9wIiBj
bGFzcz0iQ0hPSUNFUk9XIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlFVRVNU
SU9OXzEzMl8xMDU3NjEwNTc2IiBpZD0iMTYzMDkiIHZhbHVlPSI1Ij48L3RkPjx0
ZCBjbGFzcz0iQU5TV0VSVEVYVCI+TXVjaMOtc2ltbzwvdGQ+PC90cj48L3RhYmxl
PjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgaWQ9IlNVUlZFWVFVRVNUSU9O
XzEyNjE3IiBjbGFzcz0iUVVFU1RJT05DT05UQUlORVIiPjxpbnB1dCB0eXBlPSJo
aWRkZW4iIG5hbWU9ImlkIiB2YWx1ZT0iMTI2MTciPjxpbnB1dCB0eXBlPSJoaWRk
ZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJURVhULUJMT0NLIj48aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJyZXF1aXJlZCIgdmFsdWU9IjAiPjxkaXYgY2xhc3M9IlFV
RVNUSU9OVEVYVCI+RMOtZ2Fub3MgbGFzIHJhem9uZXMgeSBxdcOpIHBvZGVtb3Mg
aGFjZXIgcGFyYSBtZWpvcmFyIGVzdGEgaW5mb3JtYWNpw7NuPC9kaXY+PGRpdiBj
bGFzcz0iUVVFU1RJT05JTlNUUlVDVElPTiI+PC9kaXY+PGRpdiBjbGFzcz0iUVVF
U1RJT05SRVFVSVJFRCI+PC9kaXY+PHRleHRhcmVhIGNsYXNzPSJBTlNXRVJCT1gi
IG5hbWU9IlRFWFRCTE9DS18xMjYxNyIgcm93cz0iMTIiIGNvbHM9IjgwIiBvbnBh
c3RlPSJlbmZvcmNlTWF4TGVuZ3RoKHRoaXMsMTAyNCxldmVudCkiIG9ua2V5dXA9
ImVuZm9yY2VNYXhMZW5ndGgodGhpcywxMDI0LGV2ZW50KSI+PC90ZXh0YXJlYT48
L2Rpdj48ZGl2IGNsYXNzPSJOQVZJR0FUSU9OIj48dGFibGUgY2xhc3M9Ik5BVkJV
VFRPTkNPTlRBSU5FUiI+PHRyPjx0ZCBjbGFzcz0iUEFERElOR0NFTEwiPjwvdGQ+
PHRkIGNsYXNzPSJOQVZCVVRUT05DRUxMIiBpZD0iUHJldmlvdXNCdXR0b24iPjwv
dGQ+PHRkIGNsYXNzPSJOQVZCVVRUT05DRUxMIj48aW5wdXQgY2xhc3M9Ik5BVkJV
VFRPTiIgdHlwZT0iYnV0dG9uIiBuYW1lPSJuZXh0IiBkYXRhLW5hdj0idHJ1ZSIg
ZGF0YS1uYW1lPSJidG5OZXh0IiB2YWx1ZT0iRW52aWFyIiBpZD0iJiN4QTsgICAg
ICAgICAgICAgICAgICAgICAgU1VSVkVZU0VDVElPTl8xMzJfbmV4dCYjeEE7ICAg
ICAgICAgICAgICAgICAgICAiIG9uY2xpY2s9ImtiU3VydmV5Lm5leHQoKTt0aGlz
LmJsdXIoKTsiPjwvdGQ+PHRkIGNsYXNzPSJFTkRQQURESU5HQ0VMTCI+PC90ZD48
L3RyPjwvdGFibGU+PC9kaXY+PC9kaXY+PGRpdiBJRD0iRElWX0NMT1NFIiBzdHls
ZT0iZGlzcGxheTpub25lIiB4bWxuczpzdz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0
LWNvbS9QU1MvUFNTX1N1cnZleTAxIj48ZGl2IGNsYXNzPSJTVVJWRVlUSEFOS1lP
VUNPTlRBSU5FUiI+PGRpdiBjbGFzcz0iU1VSVkVZSU5UUk9URVhUIj7CoU11Y2hh
cyBncmFjaWFzISBTdXMgY29tZW50YXJpb3Mgbm9zIGF5dWRhcsOhbiBhIG1lam9y
YXIgbG9zIGNvbnRlbmlkb3MgZGUgc29wb3J0ZS4gUGFyYSBtw6FzIG9wY2lvbmVz
IGRlIGFzaXN0ZW5jaWEsIHZpc2l0ZSBsYSBww6FnaW5hIGRlIDxhIGhyZWY9Imh0
dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20iPkF5dWRhIHkgc29wb3J0ZSB0w6lj
bmljbzwvYT4uPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iTkFWSUdBVElPTiI+PHRh
YmxlIGNsYXNzPSJOQVZCVVRUT05DT05UQUlORVIiIG5vd3JhcD0ieWVzIj48dHI+
PHRkIGNsYXNzPSJQQURESU5HQ0VMTCI+PC90ZD48dGQgY2xhc3M9Ik5BVkJVVFRP
TkNFTEwiPjwvdGQ+PHRkIGNsYXNzPSJFTkRQQURESU5HQ0VMTCI+PC90ZD48L3Ry
PjwvdGFibGU+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICB2YXIga2JTdXJ2ZXkgPSBuZXcg
TVMuU3VwcG9ydC5GbXMuU3VydmV5KCJmbXNTdXJ2ZXkiKTsKICAgICAga2JTdXJ2
ZXkuaXNLQkVtYmVkZGVkID0gdHJ1ZTsKICAgICAga2JTdXJ2ZXkuYWRkU3VibWl0
RmllbGQoJ1JFR0lPTklEJywgJ2VzLWVzJyk7CiAgICAgIGtiU3VydmV5LmFkZFN1
Ym1pdEZpZWxkKCdTSVRFJywgJ2duJyk7CiAgICAgIGtiU3VydmV5LmFkZFN1Ym1p
dEZpZWxkKCdTVVJWRVlTQ0lEJywgJ3N3O2VzOzE4MDknKTsKICAgICAga2JTdXJ2
ZXkuYWRkU3VibWl0RmllbGQoJ1NVUlZFWUlEJywgJzE4MDknKTsKICAgICAga2JT
dXJ2ZXkuYWRkU3VibWl0RmllbGQoJ1NVUlZFWU5BTUUnLCAnJyk7CiAgICAgIGti
U3VydmV5LmFkZFN1Ym1pdEZpZWxkKCdCUk9XU0VSTEFOR0NPREUnLCAnZXMtRVMs
ZXNceDNicVx4M2QwLjksZW5ceDNicVx4M2QwLjgnKTsKICAgICAga2JTdXJ2ZXku
YWRkU3VibWl0RmllbGQoJ1NVUlZFWUxBTkdDT0RFJywgJ2VzJyk7CiAgICAgIGti
U3VydmV5LmFkZFN1Ym1pdEZpZWxkKCdGTVNVUkwnLCAnJTI1MmZkZWZhdWx0LmFz
cHglMjUyZmtiJTI1MmYzMjM1MjclMjUyZmVzJyk7CiAgICAgIGtiU3VydmV5LnBh
cmFtZXRlcnMgPSBbJ2tiJywnZXMnLCczMjM1MjcnLCcnLCcnLCcnLCcnLCcnLCcn
LCcnXTsKICAgICAga2JTdXJ2ZXkubWF4S0JzSW5Db29raWUgPSAnMTAnOwogICAg
ICBrYlN1cnZleS5rYnZpc2l0ZWQgPSAnJzsKICAgIDwvc2NyaXB0PjxkaXYgY2xh
c3M9InRvcE9mUGFnZSI+DQogICAgICA8YSBocmVmPSIjdG9wIj4NCiAgICAgICAg
PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VuLXVzL3VwQXJyb3cu
Z2lmIiBhbHQ9IlZvbHZlciBhbCBwcmluY2lwaW8iPjwvaW1nPlZvbHZlciBhbCBw
cmluY2lwaW8NCiAgICAgIDwvYT4NCiAgICA8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp
dj48L3RkPjx0ZCBjbGFzcz0icHJpbWFyeVRoaW5Db2x1bW4iPjxkaXYgaWQ9InRo
aW5Db2x1bW4iIHN0eWxlPSJmbG9hdDogbm9uZTsiPjxkaXYgY2xhc3M9IlNvY2lh
bE1lZGlhIj48YSBjbGFzcz0iU2hhcmVCdXR0b24iIGhyZWY9IiMiPkNvbXBhcnRp
cjwvYT48ZGl2IGNsYXNzPSJNZWRpYUNvbnRlbnQiPjx1bCBjbGFzcz0iTWVkaWFM
aW5rcyI+PGxpPjxhIHRpdGxlPSJDb21wYXJ0aXIgZW4gRmFjZWJvb2siIHJlbD0i
bm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRkdG9Tb2NpYWxNZWRpYSgnRmFj
ZWJvb2snLCdzbWNzb2NpYWxib29rbWFyaycsJ2h0dHA6Ly93d3cuZmFjZWJvb2su
Y29tL3NoYXJlLnBocD91PScsJycpOyI+PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdl
cy9zdXBwb3J0L2VuLUFVL2ZhY2Vib29rXzE2LnBuZyIgYWx0PSJDb21wYXJ0aXIg
ZW4gRmFjZWJvb2siLz5GYWNlYm9vazwvYT48L2xpPjxsaT48YSB0aXRsZT0iVHdp
dHRlYXIiIHJlbD0ibm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRkdG9Tb2Np
YWxNZWRpYSgnVHdpdHRlcicsJ3NtY3NvY2lhbGJvb2ttYXJrJywnaHR0cDovL3R3
aXR0ZXIuY29tL3NoYXJlLz91cmw9JywnJnRleHQ9Jyk7Ij48aW1nIHNyYz0iL2xp
YnJhcnkvaW1hZ2VzL3N1cHBvcnQvZW4tQVUvdHdpdHRlcl8xNi5wbmciIGFsdD0i
VHdpdHRlYXIiLz5Ud2l0dGVyPC9hPjwvbGk+PGxpPjxhIHRpdGxlPSJDb21wYXJ0
aXIgY29uIEhvdG1haWwsIE1lc3NlbmdlciB5IFNreWRyaXZlIiByZWw9Im5vZm9s
bG93IiBocmVmPSJKYXZhc2NyaXB0OkFkZHRvU29jaWFsTWVkaWEoJ2xpdmUnLCdz
bWNzb2NpYWxib29rbWFyaycsJ2h0dHA6Ly9wcm9maWxlLmxpdmUuY29tL2JhZGdl
Lz91cmw9JywnJnRpdGxlPScpOyI+PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9z
dXBwb3J0L0NOL1NoYXJpbmdCYWRnZTE2eDE2V2hpdGUucG5nIiBhbHQ9IkNvbXBh
cnRpciBjb24gSG90bWFpbCwgTWVzc2VuZ2VyIHkgU2t5ZHJpdmUiLz5XaW5kb3dz
IExpdmU8L2E+PC9saT48bGk+PGEgdGl0bGU9IkNvbXBhcnRpciBlbiBUdWVudGki
IHJlbD0ibm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRkdG9Tb2NpYWxNZWRp
YSgnVHVlbnRpJywnc21jc29jaWFsYm9va21hcmsnLCdodHRwOi8vd3d3LnR1ZW50
aS5jb20vc2hhcmU/dXJsPScsJycpOyI+PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdl
cy9zdXBwb3J0L2VzLUVTL1R1ZW50aV8xNi5wbmciIGFsdD0iQ29tcGFydGlyIGVu
IFR1ZW50aSIvPlR1ZW50aTwvYT48L2xpPjxsaT48YSB0aXRsZT0iQ29tcGFydGly
IGVuIE15c3BhY2UiIHJlbD0ibm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRk
dG9Tb2NpYWxNZWRpYSgnTXlTcGFjZScsJ3NtY3NvY2lhbGJvb2ttYXJrJywnaHR0
cDovL3d3dy5teXNwYWNlLmNvbS9Nb2R1bGVzL1Bvc3RUby9QYWdlcy8/dT0nLCcm
dD0nKTsiPjxpbWcgc3JjPSIvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lbi1BVS9t
eXNwYWNlXzE2LnBuZyIgYWx0PSJDb21wYXJ0aXIgZW4gTXlzcGFjZSIvPk15U3Bh
Y2U8L2E+PC9saT48bGk+PGEgdGl0bGU9IkNvbXBhcnRpciBlbiBTb25pY28iIHJl
bD0ibm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRkdG9Tb2NpYWxNZWRpYSgn
U29uaWNvJywnc21jc29jaWFsYm9va21hcmsnLCdodHRwOi8vd3d3LnNvbmljby5j
b20vc2hhcmUucGhwP3VybD0nLCcnKTsiPjxpbWcgc3JjPSIvbGlicmFyeS9pbWFn
ZXMvc3VwcG9ydC9lbi1BVS9zb25pY29fMTYucG5nIiBhbHQ9IkNvbXBhcnRpciBl
biBTb25pY28iLz5Tb25pY288L2E+PC9saT48bGk+PGEgdGl0bGU9IkNvbXBhcnRp
ciBlbiBMaW5rZWRJbiIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iSmF2YXNjcmlwdDpB
ZGR0b1NvY2lhbE1lZGlhKCdsaW5rZWRpbicsJ3NtY3NvY2lhbGJvb2ttYXJrJywn
aHR0cDovL3d3dy5saW5rZWRpbi5jb20vc2hhcmVBcnRpY2xlP3VybD0nLCcmdGl0
bGU9Jyk7Ij48aW1nIHNyYz0iL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvZW4tQVUv
bGlua2VkaW5fMTYucG5nIiBhbHQ9IkNvbXBhcnRpciBlbiBMaW5rZWRJbiIvPkxp
bmtlZEluPC9hPjwvbGk+PGxpPjxhIHRpdGxlPSJDb21wYXJ0aXIgZW4gRGlnZyBJ
dCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iSmF2YXNjcmlwdDpBZGR0b1NvY2lhbE1l
ZGlhKCdkaWdnaXQnLCdzbWNzb2NpYWxib29rbWFyaycsJ2h0dHA6Ly9kaWdnLmNv
bS9zdWJtaXQ/dXJsPScsJyZ0aXRsZT0nKTsiPjxpbWcgc3JjPSIvbGlicmFyeS9p
bWFnZXMvc3VwcG9ydC9lbi1BVS9kaWdnX2FsdF8xNi5wbmciIGFsdD0iQ29tcGFy
dGlyIGVuIERpZ2cgSXQiLz5EaWdnIGl0PC9hPjwvbGk+PGxpPjxhIHRpdGxlPSJD
b21wYXJ0aXIgZW4gRGVsaWNpb3VzIiByZWw9Im5vZm9sbG93IiBocmVmPSJKYXZh
c2NyaXB0OkFkZHRvU29jaWFsTWVkaWEoJ2RlbGljaW91cycsJ3NtY3NvY2lhbGJv
b2ttYXJrJywnaHR0cDovL3d3dy5kZWxpY2lvdXMuY29tL3NhdmU/dXJsPScsJyZ0
aXRsZT0nKTsiPjxpbWcgc3JjPSIvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lbi1B
VS9kZWxpY2lvdXNfMTYucG5nIiBhbHQ9IkNvbXBhcnRpciBlbiBEZWxpY2lvdXMi
Lz5EZWxpY2lvdXM8L2E+PC9saT48bGk+PGEgdGl0bGU9IkNvbXBhcnRpciBlbiBS
ZWRkaXQiIHJlbD0ibm9mb2xsb3ciIGhyZWY9IkphdmFzY3JpcHQ6QWRkdG9Tb2Np
YWxNZWRpYSgnUmVkZGl0Jywnc21jc29jaWFsYm9va21hcmsnLCdodHRwOi8vd3d3
LnJlZGRpdC5jb20vc3VibWl0P3VybD0nLCcmdGl0bGU9Jyk7Ij48aW1nIHNyYz0i
L2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvZW4tQVUvcmVkZGl0XzE2LnBuZyIgYWx0
PSJDb21wYXJ0aXIgZW4gUmVkZGl0Ii8+UmVkZGl0PC9hPjwvbGk+PGxpPjxhIHRp
dGxlPSJDb21wYXJ0aXIgZW4gVGVjaG5vcmF0aSIgcmVsPSJub2ZvbGxvdyIgaHJl
Zj0iSmF2YXNjcmlwdDpBZGR0b1NvY2lhbE1lZGlhKCd0ZWNobm9yYXRpJywnc21j
c29jaWFsYm9va21hcmsnLCdodHRwOi8vdGVjaG5vcmF0aS5jb20vZmF2ZXM/YWRk
PScsJycpOyI+PGltZyBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VuLUFV
L3RlY2hub3JhdGlfMTYucG5nIiBhbHQ9IkNvbXBhcnRpciBlbiBUZWNobm9yYXRp
Ii8+VGVjaG5vcmF0aTwvYT48L2xpPjxsaT48YSB0aXRsZT0iQ29tcGFydGlyIHBv
ciBjb3JyZW8gZWxlY3Ryw7NuaWNvIiByZWw9Im5vZm9sbG93IiBocmVmPSJKYXZh
c2NyaXB0OkFkZHRvU29jaWFsTWVkaWEoJ0VtYWlsJywnc21jc29jaWFsYm9va21h
cmsnLCdtYWlsdG86P2JvZHk9JywnJyk7Ij48aW1nIHNyYz0iL2xpYnJhcnkvaW1h
Z2VzL3N1cHBvcnQvQ04vZW1haWxfMjB4LnBuZyIgYWx0PSJDb21wYXJ0aXIgcG9y
IGNvcnJlbyBlbGVjdHLDs25pY28iLz5Db3JyZW8gZWxlY3Ryw7NuaWNvPC9hPjwv
bGk+PC91bD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjbGVhckJvdGgiPjwvZGl2
PjxkaXYgY2xhc3M9IndwIiBpZD0iUmVsYXRlZFN1cHBvcnRDZW50ZXJzIj48dGFi
bGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJMQ1QiIHN0eWxlPSJ3aWR0aDoxMDAl
Ij48dHI+PHRkIGNsYXNzPSJ0ZXh0Q29sdW1uIj48dGFibGUgY2VsbFNwYWNpbmc9
IjAiPjx0cj48dGQ+PGgzPjxzcGFuIGNsYXNzPSJsaW5rQ29uIj5DZW50cm9zIGRl
IFNvbHVjaW9uZXMgcmVsYWNpb25hZG9zPC9zcGFuPjxzcGFuIGNsYXNzPSJsaW5r
Q29uVG9wIj48L3NwYW4+PC9oMz48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgY2Vs
bFNwYWNpbmc9IjAiPjx0cj48dGQ+PHVsPjxsaSBpZD0iX3RyIj48c3Bhbj48YSBo
cmVmPSIvcGgvMzE5OC9lcy1lcyI+V2luZG93cyBTZXJ2ZXIgMjAwMzwvYT48L3Nw
YW4+PC9saT48bGkgaWQ9Il90ciI+PHNwYW4+PGEgaHJlZj0iL3BoLzExNjMvZXMt
ZXMiPldpbmRvd3MgU2VydmVyPC9hPjwvc3Bhbj48L2xpPjxsaSBpZD0iX3RyIj48
c3Bhbj48YSBocmVmPSIvcGgvMTEzMS9lcy1lcyI+V2luZG93cyAyMDAwPC9hPjwv
c3Bhbj48L2xpPjxsaSBpZD0iX3RyIj48c3Bhbj48YSBocmVmPSIvcGgvMzA3MS9l
cy1lcyI+V2luZG93cyAyMDAwIFByb2Zlc3Npb25hbCBFZGl0aW9uPC9hPjwvc3Bh
bj48L2xpPjxsaSBpZD0iX3RyIj48c3Bhbj48YSBocmVmPSIvcGgvMTE3My9lcy1l
cyI+V2luZG93cyBYUDwvYT48L3NwYW4+PC9saT48L3VsPjwvdGQ+PC90cj48L3Rh
YmxlPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgaWQ9Ik1pbmlSb3V0ZXIi
PjxoMz48c3Bhbj5PdHJvcyBzaXRpb3MgZGUgc29wb3J0ZTwvc3Bhbj48L2gzPjx1
bCBpZD0iT1NTX01SIj48bGk+PGEgaHJlZj0iL2dwL3BjdGFsay9lcy1lcyIgaWQ9
IkxfMjE1ODU3Ij5Db252ZXJzYWNpb25lcyBwYXNvIGEgcGFzbyBQQyBUYWxrPC9h
PjwvbGk+PGxpPjxhIGhyZWY9Ii9ncC9zdGVwYnlzdGVwL2VzLWVzIiBpZD0iTF8y
MTU4NTgiPkFydMOtY3Vsb3MgcGFzbyBhIHBhc288L2E+PC9saT48bGk+PGEgaHJl
Zj0iL2dwL2h1Ymxpc3QvZXMtZXMiIGlkPSJMXzIwNjg2MSI+Q2VudHJvcyBkZSBz
b2x1Y2lvbmVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9vZmZpY2UubWlj
cm9zb2Z0LmNvbS9lcy1lcy9kZWZhdWx0LmFzcHgiIGlkPSJMXzIwNjg2NCI+T2Zm
aWNlIE9ubGluZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3BhcnRuZXIu
bWljcm9zb2Z0LmNvbS9zcGFpbi8iIGlkPSJMXzIwNjg2NSI+TWljcm9zb2Z0IFBh
cnRuZXIgTmV0d29yazwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd2luZG93
cy5taWNyb3NvZnQuY29tL2VzLWVzL3dpbmRvd3MvaGVscCIgaWQ9IkxfMjA2ODYz
Ij5BeXVkYSB5IHByb2NlZGltaWVudG9zIGRlIFdpbmRvd3M8L2E+PC9saT48L3Vs
PjxoMz48c3Bhbj5Db211bmlkYWRlczwvc3Bhbj48L2gzPjx1bCBpZD0iQ29tbXVu
aXR5X01SIj48bGk+PGEgaHJlZj0iaHR0cDovL3NvY2lhbC5tc2RuLm1pY3Jvc29m
dC5jb20vRm9ydW1zL2VzLUVTL2NhdGVnb3JpZXMiIGlkPSJMXzIwNjg2OCI+TWlj
cm9zb2Z0IERldmVsb3BlciBOZXR3b3JrIChNU0ROKTwvYT48L2xpPjxsaT48YSBo
cmVmPSJodHRwOi8vc29jaWFsLnRlY2huZXQubWljcm9zb2Z0LmNvbS9Gb3J1bXMv
ZXMtRVMvY2F0ZWdvcmllcyIgaWQ9IkxfMjA2ODY3Ij5Gb3JvcyBUZWNobmV0PC9h
PjwvbGk+PC91bD48aDM+PHNwYW4+T2J0ZW5lciBheXVkYSBhaG9yYTwvc3Bhbj48
L2gzPjxkaXYgY2xhc3M9ImdldGhlbHAiIGlkPSJHZXRIZWxwX01SIj48YSBocmVm
PSIvZ2V0aGVscC9kZWZhdWx0LmFzcHg/Y29udGVudD1rYjtlczszMjM1MjciIGlk
PSJMXzIwNjg2OSIgY2xhc3M9ImltZ2xpbmsiPjxpbWcgdGl0bGU9IiIgYWx0PSIi
IGNsYXNzPSJnc2Z4X2ltZ19wbmciIHNyYz0iL2xpYnJhcnkvaW1hZ2VzL3N1cHBv
cnQvQ04vR2V0SGVscE5vdy5wbmciIC8+PC9hPjxhIGhyZWY9Ii9nZXRoZWxwL2Rl
ZmF1bHQuYXNweD9jb250ZW50PWtiO2VzOzMyMzUyNyIgaWQ9IkxfMjA2ODY5IiBj
bGFzcz0idHh0bGluayI+Q29udGFjdGUgY29uIHVuIHByb2Zlc2lvbmFsIGRlIHNv
cG9ydGUgdMOpY25pY28gcG9yIGNvcnJlbyBlbGVjdHLDs25pY28sIG9ubGluZSwg
byBwb3IgdGVsw6lmb25vPC9hPjxkaXYgY2xhc3M9J2NsZWFyQm90aCc+PC9kaXY+
PC9kaXY+PGRpdiBjbGFzcz0ic3BhY2UiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9
ImFkV3JhcHBlciI+PGNlbnRlcj48YSBpZD0iWFBDb3VudGRvd25XZGdldCIgaHJl
Zj0iaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS93aW5kb3dzL2RkMzYxNzQ1
LmFzcHg/SVRQSUQ9ZW9zZ2RndCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25l
IiB0aXRsZT0iR2V0IGd1aWRhbmNlIGFuZCBmcmVlIHRvb2xzIHRvIGhlbHAgeW91
IG1pZ3JhdGUgdG8gV2luZG93cyA3Ij4JCQoJCQk8ZGl2IHN0eWxlPSJiYWNrZ3Jv
dW5kLWltYWdlOnVybCgnL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvQ04vd2luZG93
cy14cC1lb3Mtc21hbGxfbm90ZXh0LmdpZicpOyBoZWlnaHQ6MTUwcHg7IHdpZHRo
OjE1MHB4OyBtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyI+
CgkJCQk8ZGl2IGlkPSJYUENvdW50ZG93blRpdGxlIiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB0b3A6NTdweDsgd2lkdGg6MTUwcHg7IHRleHQtYWxpZ246Y2Vu
dGVyOyBmb250LWZhbWlseTogU2Vnb2UgVUk7IGZvbnQtc2l6ZToxNnB4OyBjb2xv
cjojRkZGRkZGOyBsZWZ0OiAwcHg7Ij48L2Rpdj4KCQkJCTxkaXYgaWQ9IlhQQ291
bnRkb3duIiAgICAgIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDo3M3B4
OyB3aWR0aDoxNTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtZmFtaWx5OiBT
ZWdvZSBVSTsgZm9udC13ZWlnaHQ6Ym9sZGVyOyBmb250LXNpemU6MjBweDsgY29s
b3I6I0ZGRkZGRjsgbGVmdDogMHB4OyI+PC9kaXY+CgkJCTwvZGl2PiAgICAKCQk8
L2E+CQo8L2NlbnRlcj4KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KCiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5j
dGlvbiAoKSB7CiAgICAgICAgdmFyIHNpdGVDdWx0dXJlID0gJCgnbWV0YVtuYW1l
PSJEQ1NleHQuc3VwX2xuIl0nKS5hdHRyKCdDT05URU5UJyk7CgogICAgICAgIGlm
IChzaXRlQ3VsdHVyZSA9PSB1bmRlZmluZWQpIHNpdGVDdWx0dXJlID0gImVuLXVz
IjsKCiAgICAgICAgdmFyIENvbmZpZ1VybCA9ICIvY29tbW9uL2ZldGNoeG1sLmFz
cHg/c2NpZD1jZjtbTE5dO1hQQ291bnRkb3duIjsKCiAgICAgICAgQ29uZmlnVXJs
ID0gQ29uZmlnVXJsLnJlcGxhY2UoIltMTl0iLCBzaXRlQ3VsdHVyZSk7CgogICAg
ICAgICQuYWpheCh7CiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAg
ICB1cmw6IENvbmZpZ1VybCwKICAgICAgICAgICAgZGF0YVR5cGU6ICJ4bWwiLAog
ICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoeG1sKSB7CiAgICAgICAgICAg
ICAgICB2YXIgVGl0bGUgPSAkKHhtbCkuZmluZCgiY29uZmlndXJhdGlvbiA+IHNl
Y3Rpb25bbmFtZT0nY29uZmlnJ10gPiBrZXlbbmFtZT0nVGl0bGUnXSIpLmF0dHIo
InZhbHVlIik7CiAgICAgICAgICAgICAgICB2YXIgRW5kT2ZTdXBwb3J0ID0gJCh4
bWwpLmZpbmQoImNvbmZpZ3VyYXRpb24gPiBzZWN0aW9uW25hbWU9J2NvbmZpZydd
ID4ga2V5W25hbWU9J0VuZE9mU3VwcG9ydCddIikuYXR0cigidmFsdWUiKTsKICAg
ICAgICAgICAgICAgIHZhciBDb3VudGVyRm9ybWF0ID0gJCh4bWwpLmZpbmQoImNv
bmZpZ3VyYXRpb24gPiBzZWN0aW9uW25hbWU9J2NvbmZpZyddID4ga2V5W25hbWU9
J0NvdW50ZXJGb3JtYXQnXSIpLmF0dHIoInZhbHVlIik7CiAgICAgICAgICAgICAg
ICB2YXIgTGlua0FkZHJlc3MgPSAkKHhtbCkuZmluZCgiY29uZmlndXJhdGlvbiA+
IHNlY3Rpb25bbmFtZT0nY29uZmlnJ10gPiBsaW5rW25hbWU9J0V4dExpbmsnXSIp
LmF0dHIoImhyZWYiKTsKICAgICAgICAgICAgICAgIHZhciBMaW5rVGl0bGUgPSAk
KHhtbCkuZmluZCgiY29uZmlndXJhdGlvbiA+IHNlY3Rpb25bbmFtZT0nY29uZmln
J10gPiBsaW5rW25hbWU9J0V4dExpbmsnXSA+IGxpbmtUZXh0ICIpLnRleHQoKTsK
CiAgICAgICAgICAgICAgICAkKCIjWFBDb3VudGRvd25XZGdldCIpLmF0dHIoInRp
dGxlIiwgTGlua1RpdGxlKTsKICAgICAgICAgICAgICAgICQoIiNYUENvdW50ZG93
bldkZ2V0IikuYXR0cigiaHJlZiIsIExpbmtBZGRyZXNzKTsKICAgICAgICAgICAg
ICAgICQoIiNYUENvdW50ZG93blRpdGxlIikuaHRtbChUaXRsZSk7CgogICAgICAg
ICAgICAgICAgRGlzcGxheUNhbGMoIiNYUENvdW50ZG93biIsIGVzY2FwZShDb3Vu
dGVyRm9ybWF0KSwgZXNjYXBlKEVuZE9mU3VwcG9ydCkpOwogICAgICAgICAgICAg
ICAgc2V0SW50ZXJ2YWwoIkRpc3BsYXlDYWxjKCcjWFBDb3VudGRvd24nLCciICsg
ZXNjYXBlKENvdW50ZXJGb3JtYXQpICsgIicsJyIgKyBlc2NhcGUoRW5kT2ZTdXBw
b3J0KSArICInKTsiLCA2MDAwMCk7ICAvKiByZWZyZXNoIGV2ZXJ5IG1pbnV0ZSAq
LwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCgogICAgZnVuY3Rp
b24gRGlzcGxheUNhbGMoRGl2SWQsIGZvcm1hdCwgZW9zKSB7CiAgICAgICAgdmFy
IHRvZGF0ZSA9IG5ldyBEYXRlKCIwNC8wOC8yMDE0IDA4OjAwIEFNIFVUQyIpOwog
ICAgICAgIHZhciBjdXJyZW50ZGF0ZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgdmFy
IGRkaWZmID0gbmV3IERhdGUodG9kYXRlIC0gY3VycmVudGRhdGUpOwogICAgICAg
IHZhciBOYlNlY3MgPSBNYXRoLmZsb29yKGRkaWZmLnZhbHVlT2YoKSAvIDEwMDAp
OwogICAgICAgIHZhciByZXN1bHQgPSAiIjsKCiAgICAgICAgaWYgKE5iU2VjcyA+
IDApIHsKICAgICAgICAgICAgcmVzdWx0ID0gdW5lc2NhcGUoZm9ybWF0KS5yZXBs
YWNlKC8lJUQlJS9nLCBNYXRoLmZsb29yKE5iU2VjcyAvIDg2NDAwKS50b1N0cmlu
ZygpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJlc3Vs
dCA9IHVuZXNjYXBlKGVvcyk7CiAgICAgICAgfQoKICAgICAgICAkKERpdklkKS5o
dG1sKHJlc3VsdCk7CiAgICB9Cgo8L3NjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPSJh
ZFdyYXBwZXIiPjxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CjxhIGhyZWY9IiI+
PGltZyBzcmM9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9p
bWFnZXMvc3VwcG9ydC9jcy9sZWZ0X2J1dHRvbl9ob3Zlcl9STi5wbmciIC8+PC9h
Pgo8YSBocmVmPSIiPjxpbWcgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQu
Y29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvY3MvcmlnaHRfYnV0dG9uX2hvdmVy
X1JOLnBuZyIgLz48L2E+CjxhIGhyZWY9IiI+PGltZyBzcmM9Imh0dHA6Ly9zdXBw
b3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9jcy9sZWZ0
X2J1dHRvbl9STi5wbmciIC8+PC9hPgo8YSBocmVmPSIiPjxpbWcgc3JjPSJodHRw
Oi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQv
Y3MvcmlnaHRfYnV0dG9uX1JOLnBuZyIgLz48L2E+CjwvZGl2PgoKPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29t
L2xpYnJhcnkvU3R5bGVTaGVldC9zdXBwb3J0L2VuLUdCL0R5bmFtaWNfYmFubmVy
X1JOX2Nzc19zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3Nv
ZnQuY29tL2xpYnJhcnkvSmF2YVNjcmlwdC9zdXBwb3J0L2VuLUdCL0Jyb3dzZXJJ
bmZvQmFubmVyX1NsaWRlcl9TY3JpcHQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3Nv
ZnQuY29tL2xpYnJhcnkvSmF2YVNjcmlwdC9zdXBwb3J0L2VuLUdCL0Jyb3dzZXJJ
bmZvQmFubmVyX0RldGVjdF9TY3JpcHQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3Nv
ZnQuY29tL2xpYnJhcnkvSmF2YVNjcmlwdC9TdXBwb3J0L0VOLUdCL2R5bmFtaWNf
YmFubmVyX3JuX2luaXRfc2NyaXB0LmpzIj48L3NjcmlwdD4KCgo8c2NyaXB0IGxh
bmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoKICAg
IC8qIGJhbm5lciBkaXNwbGF5IHNldHRpbmdzICovCgogICAgLyogT2ZmaWNlIHN0
dWRlbnQgcHJvbW90aW9uKi8KICAgIHZhciBzdHVkZW50ID0gJzxsaT48YSBocmVm
PSJodHRwOi8vc3RvcmUuZGlnaXRhbHJpdmVyLmNvbS9zdG9yZS9tc3NoZXMvaHRt
bC9wYlBhZ2UuU0hIb21lUGJQYWdlP3d0Lm1jX2lkPXNtY3BzY19lc2VzX2Fkcl9i
dXllZHUiPjxpbWcgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xp
YnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMtRVMvc3R1ZGVudF9iYW5uZXJfMTY1eDI0
MF9FU0VTLnBuZyIgYWx0PSJPZmVydGFzIHBhcmEgZXN0dWRpYW50ZXMgdW5pdmVy
c2l0YXJpb3MgeSBwcm9mZXNvcmVzIiAvPjwvYT48L2xpPic7CgogICAgLyogb2Zm
aWNlICovCiAgICB2YXIgb2ZmaWNlID0gJzxsaT48YSBocmVmPSJodHRwOi8vZW1l
YS5taWNyb3NvZnRzdG9yZS5jb20vZXMvZXMtZXMvbWljcm9zb2Z0L29mZmljZS9z
dWl0ZXMtMjAxMD93dC5tY19pZD1zbWNwc2NfZXNlc19hZHJfYnV5b2ZmIj48aW1n
IHNyYz0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdl
cy9zdXBwb3J0L2VzLWVzL09mZmljZV8yMDEwXzE2NXgyNDBfRVMtRVMucG5nIiBh
bHQ9Ik9mZmljZSAyMDEwIiAvPjwvYT48L2xpPic7CiAgICAvKmh0dHA6Ly9zdXBw
b3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lcy1lcy9P
ZmZpY2VfMjAxMF8xNjV4MjQwX0VzdHVkaWFudGVzX0VTLUVTLnBuZyovCiAgICAv
Kmh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3Vw
cG9ydC9lcy1lcy9PZmZpY2VfMjAxMF8xNjV4MjQwX0VTLUVTLnBuZyovCgogICAg
Lyogd2luZG93cyA3ICovCiAgICB2YXIgd2luZG93czcgPSAnPGxpPjxhIGhyZWY9
Imh0dHA6Ly9lbWVhLm1pY3Jvc29mdHN0b3JlLmNvbS9lcy9lcy1lcy9taWNyb3Nv
ZnQvd2luZG93cy93aW5kb3dzLTc/d3QubWNfaWQ9c21jcHNjX2VzZXNfYWRyX2J1
eXdpbjciPjxpbWcgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xp
YnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMtZXMvd2luZG93c18xNjVfMjQwX0VTLUVT
LnBuZyIgYWx0PSJXaW5kb3dzIDciIC8+PC9hPjwvbGk+JzsKICAgIC8qaHR0cDov
L3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2Vz
LWVzLzE2NXgyNDBfV2luLTctRGlzY291bnRfRVMuanBnKi8KCiAgICAvKiBtc3N0
b3JlICovCiAgICB2YXIgbXNzdG9yZSA9ICc8bGk+PGEgaHJlZj0iaHR0cDovL2Vt
ZWEubWljcm9zb2Z0c3RvcmUuY29tL2VzL2VzLUVTP1dULm1jX2lkPXNtY3BzY19l
c2VzX2Fkcl9tc3N0b3JlIj48aW1nIHNyYz0iaHR0cDovL3N1cHBvcnQubWljcm9z
b2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VzLWVzL1N0b3JlX0dlbmVy
YWxfQmFubmVyXzE2NXgyNDBfRVNFUy5wbmciIGFsdD0iTWljcm9zb2Z0IFN0b3Jl
IiAvPjwvYT48L2xpPic7CgogICAgLyogbWFjICovCiAgICB2YXIgbWFjID0gJzxs
aT48YSBocmVmPSJodHRwOi8vZW1lYS5taWNyb3NvZnRzdG9yZS5jb20vZXMvZXMt
ZXMvbWljcm9zb2Z0L29mZmljZS9vZmZpY2UtcGFyYS1tYWMtMjAxMT93dC5tY19p
ZD1zbWNwc2NfZXNlc19hZHJfYnV5b2ZmbWFjIj48aW1nIHNyYz0iaHR0cDovL3N1
cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VzLWVz
L09mZmljZV9NYWNfQmFubmVyXzE2NXgyNDBfRVMtRVMucG5nIiBhbHQ9Ik1pY3Jv
c29mdMKuIE9mZmljZSBwYXJhIE1hYyAyMDExIiAvPjwvYT48L2xpPic7CgogICAg
LyogaWU5ICovCiAgICB2YXIgaWU5ID0gJzxsaT48YSBocmVmPSJodHRwOi8vd3d3
LmRpc2ZydXRhcmxhd2ViLmNvbS8jaG9tZT93dC5tY19pZD1zbWNwc2NfZXNlc19h
ZHJfZG5sZGllIj48aW1nIHNyYz0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNv
bS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VzLWVzLzE2NXgyNDBfSUU5X29yYW5n
ZV9iYW5uZXJfRVMtRVMucG5nIiBhbHQ9IklFOSIgLz48L2E+PC9saT4nOwoKICAg
IC8qIGllOCAqLwogICAgdmFyIGllOCA9ICc8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy5kaXNmcnV0YXJsYXdlYi5jb20vI2hvbWU/d3QubWNfaWQ9c21jcHNjX2VzZXNf
YWRyX2RubGRpZSI+PGltZyBzcmM9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5j
b20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lcy1lcy8xNjV4MjQwX0lFOF9ibHVl
X2Jhbm5lcl9FUy1FUy5wbmciIGFsdD0iSUU4IiAvPjwvYT48L2xpPic7CgogICAg
LyogZGMgKi8KICAgIHZhciBkYyA9ICc8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5t
aWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9lcy1lcy9kZWZhdWx0LmFzcHg/d3QubWNf
aWQ9c21jcHNjX2VzZXNfYWRyX2Rvd25kYyI+PGltZyBzcmM9Imh0dHA6Ly9zdXBw
b3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lcy1lcy9E
b3dubG9hZF9jZW50ZXJfMTY1eDI0MF9FUy1FUy5wbmciIGFsdD0iRG93bmxvYWQg
Q2VudGVyIiAvPjwvYT48L2xpPic7CgogICAgLyogbXNlICovCiAgICB2YXIgbXNl
ID0gJzxsaT48YSBocmVmPSJodHRwOi8vd2luZG93cy5taWNyb3NvZnQuY29tL2Vz
LWVzL3dpbmRvd3MvcHJvZHVjdHMvc2VjdXJpdHktZXNzZW50aWFscz93dC5tY19p
ZD1zbWNwc2NfZXNlc190ZXh0X2RubGRtc2UiPjxpbWcgc3JjPSJodHRwOi8vc3Vw
cG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMtZXMv
TVNFXzE2NXgyNDBfRVMtRVMucG5nIiBhbHQ9Ik1pY3Jvc29mdCBTZWN1cml0eSBF
c3NlbnRpYWxzIiAvPjwvYT48L2xpPic7CgogICAgLyogcGlucG9pbnQgKi8KICAg
IHZhciBwaW5wb2ludCA9ICc8bGk+PGEgaHJlZj0iaHR0cDovL3BpbnBvaW50Lm1p
Y3Jvc29mdC5jb20vZXMtZXMvZGVmYXVsdC5hc3B4Ij48aW1nIHNyYz0iaHR0cDov
L3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2Vz
LWVzL1BpbnBvaW50XzE2NXgyNDBfRVMtRVMucG5nIiBhbHQ9IlBpbnBvaW50IiAv
PjwvYT48L2xpPic7CgogICAgLyogYmFubmVyIHNldCBzZXR0aW5ncyAqLwogICAg
dmFyIEJyb3dzZWluZm9iYW5uZXJfaWUxMF93aW44ID0gbXNlICsgb2ZmaWNlICsg
d2luZG93czcgKyBtc3N0b3JlICsgc3R1ZGVudDsKICAgIHZhciBCcm93c2VpbmZv
YmFubmVyX2llOV9yZXN0X3dpbjggPSBtc2UgKyBvZmZpY2UgKyB3aW5kb3dzNyAr
IG1zc3RvcmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWluZm9iYW5uZXJfaWU5
X3dpbjdfdmlzdGEgPSBtc2UgKyBvZmZpY2UgKyB3aW5kb3dzNyArIG1zc3RvcmUg
KyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWluZm9iYW5uZXJfaWU4X3Jlc3Rfd2lu
N192aXN0YSA9IGllOSArIG9mZmljZSArIHdpbmRvd3M3ICsgbXNzdG9yZSArIHN0
dWRlbnQ7CiAgICB2YXIgQnJvd3NlaW5mb2Jhbm5lcl9pZThfd2lueHAgPSBtc2Ug
KyBvZmZpY2UgKyB3aW5kb3dzNyArIG1zc3RvcmUgKyBzdHVkZW50OwogICAgdmFy
IEJyb3dzZWluZm9iYW5uZXJfaWU3X3Jlc3Rfd2lueHAgPSBpZTggKyBvZmZpY2Ug
KyB3aW5kb3dzNyArIG1zc3RvcmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWlu
Zm9iYW5uZXJfaWU4X290aGVyX3dpbiA9IG1zZSArIG9mZmljZSArIHdpbmRvd3M3
ICsgbXNzdG9yZSArIHN0dWRlbnQ7CiAgICB2YXIgQnJvd3NlaW5mb2Jhbm5lcl9p
ZTdfcmVzdF9vdGhlcl93aW4gPSBpZTggKyBvZmZpY2UgKyB3aW5kb3dzNyArIG1z
c3RvcmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWluZm9iYW5uZXJfbm9uX3dp
biA9IG9mZmljZSArIHdpbmRvd3M3ICsgbXNzdG9yZSArIHN0dWRlbnQ7CiAgICB2
YXIgQnJvd3NlaW5mb2Jhbm5lcl9tYWMgPSBtYWM7IC8qIGR5bmFtaWMgYmFubmVy
IGhhcyBiZWVuIGRpc2FibGVkIGZvciBtYWMsIG9ubHkgc3RhdGljIGJhbm5lciAt
IHNlZSBiZWxvdyAqLwoKICAgIC8qIGR5bi4gYmFubmVyIGJvZHkgKi8KICAgIHZh
ciBiYW5uZXJfaGVhZGVyID0gJzxkaXYgaWQ9IkJyb3dzZXJJbmZvQmFubmVyIiBj
bGFzcz0iZGlzcGxheV9ibG9jayI+PGRpdj48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWdu
OiBjZW50ZXI7Ij48ZGl2IGlkPSJzbGlkZXIiPjx1bD4nOwogICAgdmFyIGJhbm5l
cl9mb290ZXIgPSAnPC91bD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nOwoKICAg
IC8qIGVuZCBvZiBkeW5hbWljIGJhbm5lciBjb250ZW50IHZhcmlhYmxlcyAqLwoK
ICAgIGJhbm5lcl9pbml0KCk7CiAgICBiYW5uZXJfaW5pdF9tYWMoKTsKCjwvc2Ny
aXB0PjwvZGl2PjxkaXYgY2xhc3M9ImFkV3JhcHBlciI+PGRpdiBzdHlsZT0iZGlz
cGxheTpub25lIj4KPGEgaHJlZj0iIj48aW1nIHNyYz0iaHR0cDovL3N1cHBvcnQu
bWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2NzL2xlZnRfYnV0
dG9uX2hvdmVyX1JOLnBuZyIgLz48L2E+CjxhIGhyZWY9IiI+PGltZyBzcmM9Imh0
dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9y
dC9jcy9yaWdodF9idXR0b25faG92ZXJfUk4ucG5nIiAvPjwvYT4KPGEgaHJlZj0i
Ij48aW1nIHNyYz0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5
L2ltYWdlcy9zdXBwb3J0L2NzL2xlZnRfYnV0dG9uX1JOLnBuZyIgLz48L2E+Cjxh
IGhyZWY9IiI+PGltZyBzcmM9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20v
bGlicmFyeS9pbWFnZXMvc3VwcG9ydC9jcy9yaWdodF9idXR0b25fUk4ucG5nIiAv
PjwvYT4KPC9kaXY+Cgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6
Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9TdHlsZVNoZWV0L3N1cHBv
cnQvZW4tR0IvRHluYW1pY19iYW5uZXJfUk5fY3NzX3N0eWxlLmNzcyIgdHlwZT0i
dGV4dC9jc3MiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9KYXZhU2NyaXB0
L3N1cHBvcnQvZW4tR0IvQnJvd3NlckluZm9CYW5uZXJfU2xpZGVyX1NjcmlwdC5q
cyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9KYXZhU2NyaXB0
L3N1cHBvcnQvZW4tR0IvQnJvd3NlckluZm9CYW5uZXJfRGV0ZWN0X1NjcmlwdC5q
cyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9KYXZhU2NyaXB0
L1N1cHBvcnQvRU4tR0IvZHluYW1pY19iYW5uZXJfcm5faW5pdF9zY3JpcHQuanMi
Pjwvc2NyaXB0PgoKCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CgogICAgLyogYmFubmVyIGRpc3BsYXkgc2V0dGlu
Z3MgKi8KCiAgICAvKiBPZmZpY2Ugc3R1ZGVudCBwcm9tb3Rpb24qLwogICAgdmFy
IHN0dWRlbnQgPSAnPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdG9yZS5kaWdpdGFscml2
ZXIuY29tL3N0b3JlL21zc2hlcy9odG1sL3BiUGFnZS5TSEhvbWVQYlBhZ2U/d3Qu
bWNfaWQ9c21jcHNjX2VzZXNfYWRyX2J1eWVkdSI+PGltZyBzcmM9Imh0dHA6Ly9z
dXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lcy1F
Uy9zdHVkZW50X2Jhbm5lcl8xNjV4MjQwX0VTRVMucG5nIiBhbHQ9Ik9mZXJ0YXMg
cGFyYSBlc3R1ZGlhbnRlcyB1bml2ZXJzaXRhcmlvcyB5IHByb2Zlc29yZXMiIC8+
PC9hPjwvbGk+JzsKCiAgICAvKiBvZmZpY2UgKi8KICAgIHZhciBvZmZpY2UgPSAn
PGxpPjxhIGhyZWY9Imh0dHA6Ly9lbWVhLm1pY3Jvc29mdHN0b3JlLmNvbS9lcy9l
cy1lcy9taWNyb3NvZnQvb2ZmaWNlL3N1aXRlcy0yMDEwP3d0Lm1jX2lkPXNtY3Bz
Y19lc2VzX2Fkcl9idXlvZmYiPjxpbWcgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNy
b3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMtZXMvT2ZmaWNlXzIw
MTBfMTY1eDI0MF9FUy1FUy5wbmciIGFsdD0iT2ZmaWNlIDIwMTAiIC8+PC9hPjwv
bGk+JzsKICAgIC8qaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5
L2ltYWdlcy9zdXBwb3J0L2VzLWVzL09mZmljZV8yMDEwXzE2NXgyNDBfRXN0dWRp
YW50ZXNfRVMtRVMucG5nKi8KICAgIC8qaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0
LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0L2VzLWVzL09mZmljZV8yMDEwXzE2
NXgyNDBfRVMtRVMucG5nKi8KCiAgICAvKiB3aW5kb3dzIDcgKi8KICAgIHZhciB3
aW5kb3dzNyA9ICc8bGk+PGEgaHJlZj0iaHR0cDovL2VtZWEubWljcm9zb2Z0c3Rv
cmUuY29tL2VzL2VzLWVzL21pY3Jvc29mdC93aW5kb3dzL3dpbmRvd3MtNz93dC5t
Y19pZD1zbWNwc2NfZXNlc19hZHJfYnV5d2luNyI+PGltZyBzcmM9Imh0dHA6Ly9z
dXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lcy1l
cy93aW5kb3dzXzE2NV8yNDBfRVMtRVMucG5nIiBhbHQ9IldpbmRvd3MgNyIgLz48
L2E+PC9saT4nOwogICAgLypodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xp
YnJhcnkvaW1hZ2VzL3N1cHBvcnQvZXMtZXMvMTY1eDI0MF9XaW4tNy1EaXNjb3Vu
dF9FUy5qcGcqLwoKICAgIC8qIG1zc3RvcmUgKi8KICAgIHZhciBtc3N0b3JlID0g
JzxsaT48YSBocmVmPSJodHRwOi8vZW1lYS5taWNyb3NvZnRzdG9yZS5jb20vZXMv
ZXMtRVM/V1QubWNfaWQ9c21jcHNjX2VzZXNfYWRyX21zc3RvcmUiPjxpbWcgc3Jj
PSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1
cHBvcnQvZXMtZXMvU3RvcmVfR2VuZXJhbF9CYW5uZXJfMTY1eDI0MF9FU0VTLnBu
ZyIgYWx0PSJNaWNyb3NvZnQgU3RvcmUiIC8+PC9hPjwvbGk+JzsKCiAgICAvKiBt
YWMgKi8KICAgIHZhciBtYWMgPSAnPGxpPjxhIGhyZWY9Imh0dHA6Ly9lbWVhLm1p
Y3Jvc29mdHN0b3JlLmNvbS9lcy9lcy1lcy9taWNyb3NvZnQvb2ZmaWNlL29mZmlj
ZS1wYXJhLW1hYy0yMDExP3d0Lm1jX2lkPXNtY3BzY19lc2VzX2Fkcl9idXlvZmZt
YWMiPjxpbWcgc3JjPSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJh
cnkvaW1hZ2VzL3N1cHBvcnQvZXMtZXMvT2ZmaWNlX01hY19CYW5uZXJfMTY1eDI0
MF9FUy1FUy5wbmciIGFsdD0iTWljcm9zb2Z0wq4gT2ZmaWNlIHBhcmEgTWFjIDIw
MTEiIC8+PC9hPjwvbGk+JzsKCiAgICAvKiBpZTkgKi8KICAgIHZhciBpZTkgPSAn
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGlzZnJ1dGFybGF3ZWIuY29tLyNob21l
P3d0Lm1jX2lkPXNtY3BzY19lc2VzX2Fkcl9kbmxkaWUiPjxpbWcgc3JjPSJodHRw
Oi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQv
ZXMtZXMvMTY1eDI0MF9JRTlfb3JhbmdlX2Jhbm5lcl9FUy1FUy5wbmciIGFsdD0i
SUU5IiAvPjwvYT48L2xpPic7CgogICAgLyogaWU4ICovCiAgICB2YXIgaWU4ID0g
JzxsaT48YSBocmVmPSJodHRwOi8vd3d3LmRpc2ZydXRhcmxhd2ViLmNvbS8jaG9t
ZT93dC5tY19pZD1zbWNwc2NfZXNlc19hZHJfZG5sZGllIj48aW1nIHNyYz0iaHR0
cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2ltYWdlcy9zdXBwb3J0
L2VzLWVzLzE2NXgyNDBfSUU4X2JsdWVfYmFubmVyX0VTLUVTLnBuZyIgYWx0PSJJ
RTgiIC8+PC9hPjwvbGk+JzsKCiAgICAvKiBkYyAqLwogICAgdmFyIGRjID0gJzxs
aT48YSBocmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2Vz
LWVzL2RlZmF1bHQuYXNweD93dC5tY19pZD1zbWNwc2NfZXNlc19hZHJfZG93bmRj
Ij48aW1nIHNyYz0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9saWJyYXJ5
L2ltYWdlcy9zdXBwb3J0L2VzLWVzL0Rvd25sb2FkX2NlbnRlcl8xNjV4MjQwX0VT
LUVTLnBuZyIgYWx0PSJEb3dubG9hZCBDZW50ZXIiIC8+PC9hPjwvbGk+JzsKCiAg
ICAvKiBtc2UgKi8KICAgIHZhciBtc2UgPSAnPGxpPjxhIGhyZWY9Imh0dHA6Ly93
aW5kb3dzLm1pY3Jvc29mdC5jb20vZXMtZXMvd2luZG93cy9wcm9kdWN0cy9zZWN1
cml0eS1lc3NlbnRpYWxzP3d0Lm1jX2lkPXNtY3BzY19lc2VzX3RleHRfZG5sZG1z
ZSI+PGltZyBzcmM9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vbGlicmFy
eS9pbWFnZXMvc3VwcG9ydC9lcy1lcy9NU0VfMTY1eDI0MF9FUy1FUy5wbmciIGFs
dD0iTWljcm9zb2Z0IFNlY3VyaXR5IEVzc2VudGlhbHMiIC8+PC9hPjwvbGk+JzsK
CiAgICAvKiBwaW5wb2ludCAqLwogICAgdmFyIHBpbnBvaW50ID0gJzxsaT48YSBo
cmVmPSJodHRwOi8vcGlucG9pbnQubWljcm9zb2Z0LmNvbS9lcy1FUy9ob21lP1dU
Lm1jX2lkPWVzLUVTX1Blcm1fTGlua19TdXBwb3J0TWVudV8ySFAiPjxpbWcgc3Jj
PSJodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2xpYnJhcnkvaW1hZ2VzL3N1
cHBvcnQvZXMtRVMvMTY1eDI0MF9FU19FU19DdXN0b21lcl8xLnBuZyIgYWx0PSJQ
aW5wb2ludCIgLz48L2E+PC9saT4nOwoKICAgIC8qIGJhbm5lciBzZXQgc2V0dGlu
Z3MgKi8KICAgIHZhciBCcm93c2VpbmZvYmFubmVyX2llMTBfd2luOCA9IHBpbnBv
aW50ICsgb2ZmaWNlICsgd2luZG93czcgKyBtc3N0b3JlICsgc3R1ZGVudDsKICAg
IHZhciBCcm93c2VpbmZvYmFubmVyX2llOV9yZXN0X3dpbjggPSBwaW5wb2ludCAr
IG9mZmljZSArIHdpbmRvd3M3ICsgbXNzdG9yZSArIHN0dWRlbnQ7CiAgICB2YXIg
QnJvd3NlaW5mb2Jhbm5lcl9pZTlfd2luN192aXN0YSA9IHBpbnBvaW50ICsgb2Zm
aWNlICsgd2luZG93czcgKyBtc3N0b3JlICsgc3R1ZGVudDsKICAgIHZhciBCcm93
c2VpbmZvYmFubmVyX2llOF9yZXN0X3dpbjdfdmlzdGEgPSBpZTkgKyBvZmZpY2Ug
KyB3aW5kb3dzNyArIG1zc3RvcmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWlu
Zm9iYW5uZXJfaWU4X3dpbnhwID0gcGlucG9pbnQgKyBvZmZpY2UgKyB3aW5kb3dz
NyArIG1zc3RvcmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWluZm9iYW5uZXJf
aWU3X3Jlc3Rfd2lueHAgPSBpZTggKyBvZmZpY2UgKyB3aW5kb3dzNyArIG1zc3Rv
cmUgKyBzdHVkZW50OwogICAgdmFyIEJyb3dzZWluZm9iYW5uZXJfaWU4X290aGVy
X3dpbiA9IHBpbnBvaW50ICsgb2ZmaWNlICsgd2luZG93czcgKyBtc3N0b3JlICsg
c3R1ZGVudDsKICAgIHZhciBCcm93c2VpbmZvYmFubmVyX2llN19yZXN0X290aGVy
X3dpbiA9IGllOCArIG9mZmljZSArIHdpbmRvd3M3ICsgbXNzdG9yZSArIHN0dWRl
bnQ7CiAgICB2YXIgQnJvd3NlaW5mb2Jhbm5lcl9ub25fd2luID0gb2ZmaWNlICsg
d2luZG93czcgKyBtc3N0b3JlICsgc3R1ZGVudDsKICAgIHZhciBCcm93c2VpbmZv
YmFubmVyX21hYyA9IG1hYzsgLyogZHluYW1pYyBiYW5uZXIgaGFzIGJlZW4gZGlz
YWJsZWQgZm9yIG1hYywgb25seSBzdGF0aWMgYmFubmVyIC0gc2VlIGJlbG93ICov
CgovKiBkeW4uIGJhbm5lciBib2R5ICovCnZhciBjb21tZXJjaWFsX2Jhbm5lcl9o
ZWFkZXIgPSAnPGRpdiBpZD0iQnJvd3NlckluZm9CYW5uZXIiIGNsYXNzPSJkaXNw
bGF5X2Jsb2NrIj48ZGl2PjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsi
PjxkaXYgaWQ9InNsaWRlcjEiPjx1bD4nOwp2YXIgY29tbWVyY2lhbF9iYW5uZXJf
Zm9vdGVyID0gJzwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+JzsKCi8qIGVu
ZCBvZiBkeW5hbWljIGJhbm5lciBjb250ZW50IHZhcmlhYmxlcyAqLwogICAKJChk
b2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiQoJ2JvZHknKS5maW5kKCcjQnJv
d3NlckluZm9CYW5uZXInKS5lcSgxKS5hdHRyKCJzdHlsZSIsICJkaXNwbGF5Om5v
bmUgIWltcG9ydGFudDsiKTsKfSk7Cgpjb21tZXJjaWFsX2Jhbm5lcl9pbml0KCk7
CiAgICBiYW5uZXJfaW5pdF9tYWMoKTsKCjwvc2NyaXB0PjwvZGl2PjxkaXYgY2xh
c3M9IndwIGFydGljbGVUcmFucyI+PGgzPjxzcGFuIGNsYXNzPSJsaW5rQ29uIj5T
ZWxlY2Npb25lIGlkaW9tYTwvc3Bhbj48c3BhbiBjbGFzcz0ibGlua0NvblRvcCI+
PC9zcGFuPjwvaDM+PC9kaXY+PGRpdiBpZD0iQXJ0aWNsZVRyYW5zbGF0aW9ucyI+
PGRpdiBvbmNsaWNrPSJEaXNwbGF5QVRMaXN0KCkiIGNsYXNzPSJBVHRleHQiPjxz
cGFuPjxhIGhyZWY9Ii9rYi8zMjM1MjcvYXIiIG9uY2xpY2s9IkFUQ2xpY2soJzI5
ODAzJyx0aGlzKSIgdGl0bGU9IijYp9mE2LTYsdmCINin2YTYp9mI2LPYtyAo2KfZ
hNi52LHYqNmK2KkiPijYp9mE2LTYsdmCINin2YTYp9mI2LPYtyAo2KfZhNi52LHY
qNmK2Kk8L2E+PC9zcGFuPjxhIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOnVybCgv
bGlicmFyeS9pbWFnZXMvc3VwcG9ydC9DTi9rYl9kcm9wZG93bl9pY29uLnBuZyk7
IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiPjwvYT48L2Rpdj48ZGl2IGlkPSJB
VExpc3QiIG5hbWU9InNjaWQiPjx1bD48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy9w
dC1iciIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0iQnJh
c2lsIChQb3J0dWd1w6pzKSI+QnJhc2lsIChQb3J0dWd1w6pzKTwvYT48L2xpPjxs
aT48YSBocmVmPSIva2IvMzIzNTI3L2NzIiBvbmNsaWNrPSJBVENsaWNrKCcyOTgw
MycsdGhpcykiIHRpdGxlPSLEjGVza8OhIHJlcHVibGlrYSAoxIxlxaF0aW5hKSI+
xIxlc2vDoSByZXB1Ymxpa2EgKMSMZcWhdGluYSk8L2E+PC9saT48bGk+PGEgaHJl
Zj0iL2tiLzMyMzUyNy9kZSIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMp
IiB0aXRsZT0iRGV1dHNjaGxhbmQgKERldXRzY2gpIj5EZXV0c2NobGFuZCAoRGV1
dHNjaCk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy9mciIgb25jbGlj
az0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0iRnJhbmNlIChGcmFuw6dh
aXMpIj5GcmFuY2UgKEZyYW7Dp2Fpcyk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2ti
LzMyMzUyNy9pZC1pZCIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0
aXRsZT0iSW5kb25lc2lhIChCYWhhc2EgSW5kb25lc2lhKSI+SW5kb25lc2lhIChC
YWhhc2EgSW5kb25lc2lhKTwvYT48L2xpPjxsaT48YSBocmVmPSIva2IvMzIzNTI3
L2l0IiBvbmNsaWNrPSJBVENsaWNrKCcyOTgwMycsdGhpcykiIHRpdGxlPSJJdGFs
aWEgKEl0YWxpYW5vKSI+SXRhbGlhIChJdGFsaWFubyk8L2E+PC9saT48bGk+PGEg
aHJlZj0iL2tiLzMyMzUyNy9odSIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRo
aXMpIiB0aXRsZT0iTWFneWFyb3JzesOhZyAoTWFneWFyKSI+TWFneWFyb3JzesOh
ZyAoTWFneWFyKTwvYT48L2xpPjxsaT48YSBocmVmPSIva2IvMzIzNTI3L25sIiBv
bmNsaWNrPSJBVENsaWNrKCcyOTgwMycsdGhpcykiIHRpdGxlPSJOZWRlcmxhbmQg
KE5lZGVybGFuZHMpIj5OZWRlcmxhbmQgKE5lZGVybGFuZHMpPC9hPjwvbGk+PGxp
PjxhIGhyZWY9Ii9rYi8zMjM1MjcvcGwiIG9uY2xpY2s9IkFUQ2xpY2soJzI5ODAz
Jyx0aGlzKSIgdGl0bGU9IlBvbHNrYSAoUG9sc2tpKSI+UG9sc2thIChQb2xza2kp
PC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9rYi8zMjM1MjcvcHQiIG9uY2xpY2s9IkFU
Q2xpY2soJzI5ODAzJyx0aGlzKSIgdGl0bGU9IlBvcnR1Z2FsIChQb3J0dWd1w6pz
KSI+UG9ydHVnYWwgKFBvcnR1Z3XDqnMpPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9r
Yi8zMjM1MjcvdHIiIG9uY2xpY2s9IkFUQ2xpY2soJzI5ODAzJyx0aGlzKSIgdGl0
bGU9IlTDvHJraXllIChUw7xya8OnZSkiPlTDvHJraXllIChUw7xya8OnZSk8L2E+
PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy9lbi11cyIgb25jbGljaz0iQVRD
bGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0iVW5pdGVkIFN0YXRlcyAoRW5nbGlz
aCkiPlVuaXRlZCBTdGF0ZXMgKEVuZ2xpc2gpPC9hPjwvbGk+PGxpPjxhIGhyZWY9
Ii9rYi8zMjM1Mjcvdmktdm4iIG9uY2xpY2s9IkFUQ2xpY2soJzI5ODAzJyx0aGlz
KSIgdGl0bGU9IlZp4buHdCBOYW0gKFRp4bq/bmcgVmnhu4d0KSI+Vmnhu4d0IE5h
bSAoVGnhur9uZyBWaeG7h3QpPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9rYi8zMjM1
MjcvZWwiIG9uY2xpY2s9IkFUQ2xpY2soJzI5ODAzJyx0aGlzKSIgdGl0bGU9Is6V
zrvOu86szrTOsSAozpXOu867zrfOvc65zrrOrCkiPs6VzrvOu86szrTOsSAozpXO
u867zrfOvc65zrrOrCk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy9r
ay1reiIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0i0prQ
sNC30LDSm9GB0YLQsNC9ICjSmtCw0LfQsNKbKSI+0prQsNC30LDSm9GB0YLQsNC9
ICjSmtCw0LfQsNKbKTwvYT48L2xpPjxsaT48YSBocmVmPSIva2IvMzIzNTI3L3J1
IiBvbmNsaWNrPSJBVENsaWNrKCcyOTgwMycsdGhpcykiIHRpdGxlPSLQoNC+0YHR
gdC40Y8gKNCg0YPRgdGB0LrQuNC5KSI+0KDQvtGB0YHQuNGPICjQoNGD0YHRgdC6
0LjQuSk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy90aCIgb25jbGlj
az0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0i4LmE4LiX4LiiICjguYTg
uJfguKIpIj7guYTguJfguKIgKOC5hOC4l+C4oik8L2E+PC9saT48bGk+PGEgaHJl
Zj0iL2tiLzMyMzUyNy9rbyIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMp
IiB0aXRsZT0i64yA7ZWc66+86rWtICjtlZzqta3slrQpIj7rjIDtlZzrr7zqta0g
KO2VnOq1reyWtCk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy96aC1j
biIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0i5Lit5Zu9
ICjnroDkvZPkuK3mlocpIj7kuK3lm70gKOeugOS9k+S4reaWhyk8L2E+PC9saT48
bGk+PGEgaHJlZj0iL2tiLzMyMzUyNy96aC10dyIgb25jbGljaz0iQVRDbGljaygn
Mjk4MDMnLHRoaXMpIiB0aXRsZT0i5Y+w54GjICjnuYHpq5TkuK3mlocpIj7lj7Dn
gaMgKOe5gemrlOS4reaWhyk8L2E+PC9saT48bGk+PGEgaHJlZj0iL2tiLzMyMzUy
Ny9qYSIgb25jbGljaz0iQVRDbGljaygnMjk4MDMnLHRoaXMpIiB0aXRsZT0i5pel
5pysICjml6XmnKzoqp4pIj7ml6XmnKwgKOaXpeacrOiqnik8L2E+PC9saT48L3Vs
PjwvZGl2PjwvZGl2PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjwvZGl2
PjxkaXYgaWQ9ImJvdHRvbVJvdyI+PGRpdiBjbGFzcz0id3AgZ2V0SGVscCI+PHRh
YmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRyPjx0ZCBjbGFz
cz0iaW1hZ2UiPjxhIGhyZWY9Ii9nZXRoZWxwL2RlZmF1bHQuYXNweD9jb250ZW50
PWtiO2VzOzMyMzUyNyIgaWQ9IkxfMTc3NTUyIj48aW1nIHRpdGxlPSIiIGFsdD0i
IiBjbGFzcz0iZ3NmeF9pbWdfcG5nIiBzcmM9Ii9saWJyYXJ5L2ltYWdlcy9zdXBw
b3J0L0NOL0dldEhlbHBOb3cucG5nIiAvPjwvYT48L3RkPjx0ZCBjbGFzcz0idGV4
dCI+PGgzPsK/TmVjZXNpdGEgbcOhcyBheXVkYT88L2gzPjxhIGhyZWY9Ii9nZXRo
ZWxwL2RlZmF1bHQuYXNweD9jb250ZW50PWtiO2VzOzMyMzUyNyIgaWQ9IkxfMTc3
NTUyIj5Db250YWN0YXIgY29uIHVuIHByb2Zlc2lvbmFsIGRlIHNvcG9ydGUgdMOp
Y25pY28gcG9yIGNvcnJlbyBlbGVjdHLDs25pY28sIG9ubGluZSBvIHBvciB0ZWzD
qWZvbm88L2E+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC9kaXY+PG5vc2NyaXB0
PjxpbWcgaWQ9IlN0YXRzRG90TmV0SW1nTm9TY3JpcHQiIGFsdD0iIiBzcmM9Imh0
dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vTFRTL2RlZmF1bHQuYXNweD9TU0lE
PTEmYW1wO1NpdGVMQ0lEPTEwMzQmYW1wO1NzVmVyc2lvbj1HU1M3LjYmYW1wO1Np
dGVDdWx0dXJlPWVzLWVzJmFtcDtDb250ZW50Q3VsdHVyZT1lcyZhbXA7SW40MDRV
cmw9JmFtcDtFdmVudENvbGxlY3Rpb25JRD0xJmFtcDtVUkw9JTJmZGVmYXVsdC5h
c3B4JmFtcDtDb250ZW50VHlwZT1rYiZhbXA7Q29udGVudExDSUQ9MTAzNCZhbXA7
Q29udGVudElEPTMyMzUyNyZhbXA7UGxhdGZvcm09d2luZG93cyUyMG50JTIwNS4x
JmFtcDtCcmFuZElEPTEmYW1wO2ZsZXhWYWx1ZTI9MzImYW1wO2ZsZXhWYWx1ZTg9
MCZhbXA7Q29udGVudFByb3BlcnRpZXM9NiUzZDklN2M3JTNkMy4yJTdjOSUzZGti
QXVkSVRQcm8lMjAlN2MiIC8+PC9ub3NjcmlwdD48aW1nIGlkPSJTdGF0c0RvdE5l
dEltZyIgbmFtZT0iU3RhdHNEb3ROZXRJbWciIGFsdD0iIiBzcmM9Ii9saWJyYXJ5
L2ltYWdlcy9zdXBwb3J0L2NuL29uZXBpeC5naWYiIC8+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPlN0YXRzRG90TmV0LmRpc2FibGVkPWZhbHNlO1N0YXRz
RG90TmV0LmVuYWJsZUNvbGxUaWVyUGFyYW1zPXRydWU7U3RhdHNEb3ROZXQuaG9z
dD0naHR0cFx4M2FceDJmXHgyZnN1cHBvcnQubWljcm9zb2Z0LmNvbVx4MmZMVFNc
eDJmZGVmYXVsdC5hc3B4JztTdGF0c0RvdE5ldC5zc0lkPScxJztTdGF0c0RvdE5l
dC5zaXRlTGNJZD0nMTAzNCc7U3RhdHNEb3ROZXQuU2l0ZUN1bHR1cmU9J2VzLWVz
JztTdGF0c0RvdE5ldC5Tc1ZlcnNpb249J0dTUzcuNic7U3RhdHNEb3ROZXQudXJs
PSdceDJmZGVmYXVsdC5hc3B4JztTdGF0c0RvdE5ldC5Db250ZW50Q3VsdHVyZSA9
J2VzJztTdGF0c0RvdE5ldC5jb250ZW50VHlwZT0na2InO1N0YXRzRG90TmV0LmNv
bnRlbnRMbj0nMTAzNCc7U3RhdHNEb3ROZXQuY29udGVudElkPSczMjM1MjcnO1N0
YXRzRG90TmV0LnBsYXRmb3JtPSd3aW5kb3dzIG50IDUuMSc7U3RhdHNEb3ROZXQu
ZXZlbnRDb2xsZWN0aW9uSWQ9MTtTdGF0c0RvdE5ldC5zaXRlQnJhbmRJZD0nMSc7
U3RhdHNEb3ROZXQub25VbmxvYWRUaW1lb3V0PTMwMDtTdGF0c0RvdE5ldC5sdHNJ
ZGxlVGltZW91dD01MDAwO1N0YXRzRG90TmV0LnVzZXJBZ2VudFN0cmluZz0nbW96
aWxsYVx4MmY1LjAgXHgyOHdpbmRvd3MgbnQgNS4xXHgzYiB1XHgzYiBlcy1sYVx4
M2IgcnZceDNhMS44LjFceDI5IGdlY2tvXHgyZjIwMDYxMjA4IGZpcmVmb3hceDJm
Mi4wLjAgb3BlcmEgMTAuMTAnO1N0YXRzRG90TmV0LkNvbnRlbnRQcm9wZXJ0aWVz
PSc2XHgzZDlceDdjN1x4M2QzLjJceDdjOVx4M2RrYkF1ZElUUHJvIFx4N2MnO1N0
YXRzRG90TmV0LmZsZXhWYWx1ZTI9JzMyJztTdGF0c0RvdE5ldC5mbGV4VmFsdWU4
PScwJzs8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IHZh
ciB2YXJXZWRjc0VuYWJsZSA9IHRydWU7IHRoaXMuZ2VuZXJhdGVXZWRjc0RhdGEo
KTsgPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBl
bmFibGVTaXRlU3VydmV5ID0gdHJ1ZTtmdW5jdGlvbiBpc0RvbWFpblRyYWNraW5n
KCl7dmFyIGVudHJ5ID0gTVMuU3VwcG9ydC5GbXMuQ29va2llVXRpbC5nZXRDb29r
aWUoJ2Ztc2hiJyk7aWYgKGVudHJ5KXt0cnl7cmV0dXJuIGVudHJ5LnNwbGl0KCcs
JylbMF0gPT0gJzEnID8gdHJ1ZSA6IGZhbHNlO31jYXRjaCAoZSl7cmV0dXJuIGZh
bHNlO319cmV0dXJuIGZhbHNlO307d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9u
KCl7TVMuU3VwcG9ydC5GbXMuQ29va2llVXRpbC5zZXRTZXNzaW9uQ29va2llKCdm
bXNoYicsIChpc0RvbWFpblRyYWNraW5nKCkgPyAnMScgOiAnMCcpICsgJywnICsg
KG5ldyBEYXRlKCkpLmdldFRpbWUoKSk7fSwgMTAwMCk7ZnVuY3Rpb24gZm1zTGFz
dEV4cCgpe3ZhciB2aXNpdHMgPSBNUy5TdXBwb3J0LkZtcy5Db29raWVVdGlsLmdl
dENvb2tpZSgnU1RfR05fRVMtRVMnKTt2YXIgcGFydHMgPSAgdmlzaXRzID8gdmlz
aXRzLnNwbGl0KCdfJykgOiBbXTtpZiAobnVsbCA9PSB2aXNpdHMgfHwgcGFydHMu
bGVuZ3RoICE9IDMgfHwgaXNOYU4ocGFydHNbMF0pKXtyZXR1cm4gMDt9cmV0dXJu
IHBhcnNlSW50KHBhcnRzWzJdKTt9O2Z1bmN0aW9uIGZtc1N1cnZleUV4cGlyZWQo
ZGF5cyl7dmFyIE1pbGlEYXkgPSA4NjQwMDAwMDt2YXIgdmlzaXRzID0gTVMuU3Vw
cG9ydC5GbXMuQ29va2llVXRpbC5nZXRDb29raWUoJ1NUX0dOX0VTLUVTJyk7dmFy
IHBhcnRzID0gdmlzaXRzID8gdmlzaXRzLnNwbGl0KCdfJykgOiBbXTtpZiAobnVs
bCA9PSB2aXNpdHMgfHwgcGFydHMubGVuZ3RoICE9IDMgfHwgaXNOYU4ocGFydHNb
MF0pKXtyZXR1cm4gdHJ1ZTt9O3ZhciBvcmlnRGF0ZSA9IHBhcnNlSW50KHBhcnRz
WzFdKTt2YXIgY3VyRGF0ZSA9IG5ldyBEYXRlKCk7cmV0dXJuIChjdXJEYXRlLmdl
dFRpbWUoKS9NaWxpRGF5IC0gZGF5cykgPj0gb3JpZ0RhdGU7fTtmdW5jdGlvbiBh
Y3RpdmF0ZVNpdGVTdXJ2ZXkgKCl7aWYod2luZG93LnRvcCA9PSB3aW5kb3cgJiYg
IWlzRG9tYWluVHJhY2tpbmcoKSAmJiB0eXBlb2YoZW5hYmxlU2l0ZVN1cnZleSkg
IT0gInVuZGVmaW5lZCIgJiYgZW5hYmxlU2l0ZVN1cnZleSAmJiBmbXNTdXJ2ZXlF
eHBpcmVkKGZtc0xhc3RFeHAoKSkpe2RvY3VtZW50LndyaXRlKCc8c2NyaXB0IGxh
bmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9qcy5taWNyb3NvZnQuY29t
L2xpYnJhcnkvc3Z5L3N1cHBvcnQvYnJva2VyLmpzIj48L3NjcicrJ2lwdD4nKTt9
fTt2YXIgdHJpZ2dlckVudGl0eSA9IHtDb29raWVEZWY6J1NUX0dOX0VTLUVTJyxT
aXRlOidnbicsUmVnaW9uOidlcy1lcycsSXNSVEw6ZmFsc2UsU2NpZDoic3c7ZXM7
MTg0OCIsWHNsOiIiLFBhdGg6Ii9jb21tb24vc3VydmV5LmFzcHgiLElkVmFsdWU6
ICcnLEVtYmVkU3VydmV5UHJvbXB0OiAnbm90aGluZycsRXhwaXJhdGlvbjo5MCxE
ZWxheToxMDAwMCxGcmVxdWVuY3k6MTcsU3VydmV5U3R5bGU6InBvcHVwIixEaXNw
bGF5SW50cm9QYWdlOjEsRW1haWxTdHlsZTowLEVtYWlsU3VydmV5SUQ6IiIsUmVm
ZXJyaW5nVVJMOidodHRwXHgzYVx4MmZceDJmc3VwcG9ydC5taWNyb3NvZnQuY29t
XHgyZmRlZmF1bHQuYXNweFx4MmZrYlx4MmYzMjM1MjdceDJmZXMnLEV2ZW50OiJP
blVubG9hZCIsVHJpZ2dlcklkOiIxMzg0MiIsSW50ZXJ2YWxUeXBlOiJzZXNzaW9u
IixSZWRpcmVjdDoiIixPcHRPdXQ6MCxBbHRTdHlsZTogJycsUmVuZGVyT3B0aW9u
OiAnJyxJbnZpdGF0aW9uV2lkdGg6IDAsUGFnZVdpZHRoOiAwLFBhZ2VIZWlnaHQ6
IDAsQW5pbWF0aW9uRHVyYXRpb246MC41LFBhcmFtZXRlcnM6WydrYicsJ2VzLWVz
JywnMzIzNTI3JywnJywnJywnJywnJywnJywnJywnJ10sVGhlbWU6ImduIixUb29s
YmFyOiIiLENvbnRhaW5zOiJzdWItZG9tYWluIixQYWdlczpbXSxUcmFja2luZ1Rl
eHQ6J0dyYWNpYXMgcG9yIGVzdGFyIGRlIGFjdWVyZG8gZW4gcGFydGljaXBhciBl
biBsYSBlbmN1ZXN0YSBlbiBsXHUwMGVkbmVhIGRlIE1pY3Jvc29mdC4gIENvbnN1
bHRlIGVuIGVsIHNpdGlvIFdlYiBzdXBwb3J0Lm1pY3Jvc29mdC5jb20gY29tbyBs
byBoYWNlIG5vcm1hbG1lbnRlIHksIGEgY29udGludWFjaVx1MDBmM24sIHJlZ3Jl
c2UgYSBlc3RhIHZlbnRhbmEgeSByZXNwb25kYSBhIGxhcyBwcmVndW50YXMgZGUg
bGEgZW5jdWVzdGEuICBMYXMgcHJlZ3VudGFzIGFwYXJlY2VyXHUwMGUxbiBkZXNw
dVx1MDBlOXMgZGVqYXIgbGFzIHBcdTAwZTFnaW5hcyBXZWIgcXVlIE1pY3Jvc29m
dCBlc3RhIGJcdTAwZmFzY2FuZG8gc3VzIGNvbWVudGFyaW9zLid9O25ldyBNUy5T
dXBwb3J0LkZtcy5TdXJ2ZXlUcmlnZ2VyKHRyaWdnZXJFbnRpdHksIHR5cGVvZiBj
b25maWcgIT0gInVuZGVmaW5lZCIgPyBjb25maWcgOiBudWxsKTs8L3NjcmlwdD48
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ZnVuY3Rpb24gdGhpc0xvYWQo
KXtLQkZlZWRCYWNrRGlzcGxheSgpO1N0YXRzRG90TmV0LkxvZ1BhZ2VPbkxvYWQo
KTtDcmVhdGVTZWFyY2hPcHRpb25zKCdhY0xpc3RXcmFwcGVyZ3NmeF9ic3JjaF9x
dWVyeScsIDMxMyk7SW5pdENhdExhbmdTZWwoKTtJbml0U3JjaCgpO0luaXRBQygn
Z3NmeF9ic3JjaF9xdWVyeScpOyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkg
e2dzZnhfYnNyY2hfSW5pdENhdFNlbGVjdGlvbignZ3NmeF9ic3JjaF9xdWVyeScs
ICc0OjQ6Jyk7fSk7fWZ1bmN0aW9uIHRoaXNVbmxvYWQoKXt9PC9zY3JpcHQ+PHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQod2luZG93KS5sb2FkKHRoaXNM
b2FkKTskKHdpbmRvdykudW5sb2FkKHRoaXNVbmxvYWQpOzwvc2NyaXB0PjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9saWJyYXJ5L2phdmFzY3Jp
cHQvc3VwcG9ydC9lcy1lcy9zdG9yZV9saW5rX21vZGlmaWVyLmpzPzEiPjwvc2Ny
aXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9saWJyYXJ5
L0phdmFTY3JpcHQvc3VwcG9ydC9FUy1FUy9waW5wb2ludF9saW5rX21vZGlmaWVy
X2VzX2VzLmpzPzIiPjwvc2NyaXB0Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0K
ICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0K
DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZv
b3RlciI+DQogICAgICAgICAgICAgICAgDQogICAgPGRpdiBjbGFzcz0ib25lTXNj
b21Db21wIG9uZU1zY29tRm9vdGVyIiBiaTp0eXBlPSJvbmVNc2NvbUZvb3RlciIg
ZGlyPSJsdHIiPjxkaXYgY2xhc3M9Im1zTG9nbyIgYmk6dHlwZT0ib25lTXNjb21N
U0xvZ28iPjxhIGhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS8iPjxzcGFu
PjxpbWcgc3JjPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsL29uZW1z
Y29tc2V0dGluZ3MvcHVibGlzaGluZ2ltYWdlcy9taWNyb3NvZnRfbG9nb19mb290
ZXIuZ2lmIiBhbHQ9Ik1pY3Jvc29mdCIvPjwvc3Bhbj48L2E+PGRpdiBjbGFzcz0i
Y29weXJpZ2h0IiBiaTp0eXBlPSJvbmVNc2NvbUNvcHlSaWdodCI+JmNvcHk7MjAx
MiBDb3B5cmlnaHQ8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJsaW5rcyI+PGRpdiBj
bGFzcz0ibGlua3MtaW5uZXIiIGJpOnR5cGU9Im9uZU1zY29tQ3VzdG9tTGlua3Mi
Pjx1bCBjbGFzcz0iY3VzdG9tTGlua3MiPjxsaSBjbGFzcz0ibGFzdExpbmsiPjxh
IGhyZWY9Imh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vZ3AvY3NhL2VzLWVz
IiAgYmk6S2V5PSJWYWwiID48c3Bhbj5Db250cmF0byBkZSBTZXJ2aWNpb3M8L3Nw
YW4+PC9hPjwvbGk+PC91bD48L2Rpdj48ZGl2IGlkPSJGb290ZXJEZWZhdWx0TGlu
ayIgY2xhc3M9ImxpbmtzLWlubmVyIiBiaTp0eXBlPSJvbmVNc2NvbURlZmF1bHRM
aW5rIj48dWwgY2xhc3M9ImRlZmF1bHRMaW5rcyI+PGxpPjxhIGhyZWY9Imh0dHBz
Oi8vcHJvZmlsZS5taWNyb3NvZnQuY29tL1JlZ1N5c1Byb2ZpbGVDZW50ZXIvZGVm
YXVsdC5hc3B4P2xjaWQ9MTAzNCIgID48c3Bhbj5BZG1pbmlzdHJlIHN1IHBlcmZp
bDwvc3Bhbj48L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3N1cHBvcnQubWlj
cm9zb2Z0LmNvbS9jb250YWN0dXMvP3dzPXN1cHBvcnQiICBiaTpDb250YWN0RnJv
bUZvb3RlclhtbD0iMjIiID48c3Bhbj5Db250w6FjdGVub3M8L3NwYW4+PC9hPjwv
bGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9zcGFpbi9t
aXNjL2F2aXNvbGVnYWwuaHRtIiAgYmk6S2V5PSJWYWwiID48c3Bhbj5Db25kaWNp
b25lcyBkZSB1c288L3NwYW4+PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9n
by5taWNyb3NvZnQuY29tLz9saW5raWQ9NDQxMjg5MyIgIGJpOlRyYWRlbWFya3Mx
PSJUcmFkZW1hcmtzVmFsMSIgYmk6VHJhZGVtYXJrczI9IlRyYWRlbWFya3MyIiA+
PHNwYW4+TWFyY2FzIHJlZ2lzdHJhZGFzPC9zcGFuPjwvYT48L2xpPjxsaSBjbGFz
cz0ibGFzdExpbmsiPjxhIGhyZWY9Imh0dHA6Ly9nby5taWNyb3NvZnQuY29tL2Z3
bGluay9wLz9MaW5rSWQ9MjQ4Njg1IiAgYmk6S2V5PSJWYWwiID48c3Bhbj5Qcml2
YWNpZGFkIHkgQ29va2llczwvc3Bhbj48L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2
PjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5pZiAodHlwZW9m
ICQgIT0gInVuZGVmaW5lZCIpIHskKGZ1bmN0aW9uICgpIHtpZiAoTXN0ICYmIE1z
dC5TZW9NZW51KSB7dmFyIFNlb0NsaWNrO3ZhciBTZW9DbG9zZTtpZiAoJC5iaSAm
JiAkLmJpLmRhdGFSZXRyaWV2ZXJzLnN0cnVjdHVyZSkge1Nlb0NsaWNrID0gZnVu
Y3Rpb24gKGUpIHt2YXIgZWxlbWVudCA9ICQoZS50YXJnZXQpO3ZhciBlbGVtZW50
cyA9ICQoZS50YXJnZXQpLnBhcmVudHMoJy5zZW8taXRlbScpLmZpbmQoJy5zZW8t
aXRlbS1mbHlvdXQtY29udGVudCBhLC5zZW8taXRlbS1mbHlvdXQtY29udGVudCcp
O3ZhciBtZXJnZWRiaURhdGEgPSAkLmJpLmdldEF0dHJEYXRhKGVsZW1lbnRzKTt2
YXIgY3VzdG9tUGFyYW1zID0geyB0aXRsZTogJC50cmltKCQoZWxlbWVudCkudGV4
dCgpKSB9O3RyeSB7JC5leHRlbmQoY3VzdG9tUGFyYW1zLCAkLmJpLmJhc2VEYXRh
KCksICQuYmkuZGF0YVJldHJpZXZlcnMuc3RydWN0dXJlLmdldERhdGEoZWxlbWVu
dCkpO30gY2F0Y2ggKGUpIHsgfXZhciBvcGVuQklQYXJhbXMgPSAkLmV4dGVuZCh7
fSwgY3VzdG9tUGFyYW1zLCB7aW5pdGlhbDogKCQoZS50YXJnZXQpLmRhdGEoJ2Jp
c2Vvb3BlbicpICE9PSB1bmRlZmluZWQgPyAkKGUudGFyZ2V0KS5kYXRhKCdiaXNl
b29wZW4nKSA6IDApLCBpbnRlcmFjdGlvbnR5cGU6IDksIGluZGV4OiBjdXN0b21Q
YXJhbXNbJ3BhcmVudGluZGV4c3RydWN0dXJlJ10sIHBhcmVudGluZGV4c3RydWN0
dXJlOiAnJywgJy1iaS1kZXNjcmlwdGlvbi1pZ25vcmUtJzogJ3Nlby1vcGVuJ30p
OyQoZS50YXJnZXQpLmRhdGEoJ2Jpc2Vvb3BlbicsIDEpOyQuYmkucXVldWUucHVz
aChvcGVuQklQYXJhbXMpOyB9O1Nlb0Nsb3NlID0gZnVuY3Rpb24gKCRmbHlvdXRM
aW5rKSB7dmFyIGJpSWQgPSAkZmx5b3V0TGluay5hdHRyKCdpZCcpO3ZhciBjdXN0
b21QYXJhbXMgPSB7fTskLmV4dGVuZChjdXN0b21QYXJhbXMsICQuYmkuYmFzZURh
dGEoKSwgJC5iaS5kYXRhUmV0cmlldmVycy5zdHJ1Y3R1cmUuZ2V0SW5kZXhHcmlk
VHlwZVN0cnVjdHVyZSgkZmx5b3V0TGluaykpOyQuZXh0ZW5kKGN1c3RvbVBhcmFt
cywge2luaXRpYWw6ICRmbHlvdXRMaW5rLmRhdGEoJ2Jpc2VvY2xvc2UnKSAhPT0g
dW5kZWZpbmVkID8gJGZseW91dExpbmsuZGF0YSgnYmlzZW9jbG9zZScpIDogMCwg
aW50ZXJhY3Rpb250eXBlOiAxMCwgdGl0bGU6ICQudHJpbSgkZmx5b3V0TGluay50
ZXh0KCkpLCBpbmRleDogY3VzdG9tUGFyYW1zWydwYXJlbnRpbmRleHN0cnVjdHVy
ZSddLCBwYXJlbnRpbmRleHN0cnVjdHVyZTogJycsICctYmktZGVzY3JpcHRpb24t
aWdub3JlLSc6ICdzZW8tY2xvc2UnfSk7JGZseW91dExpbmsuZGF0YSgnYmlzZW9j
bG9zZScsIDEpOyQuYmkucXVldWUucHVzaChjdXN0b21QYXJhbXMpOyB9O312YXIg
U2VvID0gbmV3IE1zdC5TZW9NZW51KCdGb290ZXJEZWZhdWx0TGluaycsICdsaW5r
cy1pbm5lcicsICdzZW8taXRlbScsICdzZW8tZmx5b3V0LWxpbmsnLCdzZW8taXRl
bS1mbHlvdXQtY29udGVudCcsICdvbmVNc2NvbUZvb3RlcicsIFNlb0NsaWNrLCBT
ZW9DbG9zZSk7fX0pO308L3NjcmlwdD4NCg0KICAgICAgICAgICAgPC9kaXY+DQog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjc3NDbGVhciI+DQogICAgICAgICAgICA8
L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9InN0YWdl
LWJnLXRvcCI+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJz
dGFnZS1iZy1taWQiPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFz
cz0ic3RhZ2UtYmctYm90Ij4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQog
ICAgPGRpdiBjbGFzcz0iZm9ybS1ib3R0b20iPg0KICAgICAgICA8ZGl2IGNsYXNz
PSJmb3JtLWJvdHRvbS1pbm5lciI+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2
Pg0KICAgIA0KDQogDQogICAgPCEtLUFERCBCSVBST1hZIGFuZCBCSVN1cHBvcnRp
bmcgU0NSSVBULS0+DQogICAgDQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iL1NjcmlwdHMvanF1ZXJ5LmJpLmpzIj48L3NjcmlwdD4NCiAg
ICANCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvU2Ny
aXB0cy9qcXVlcnkuYmkuZGF0YXJldHJpZXZlcnMuYXR0ci5qcyI+PC9zY3JpcHQ+
DQogICAgDQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
L1NjcmlwdHMvanF1ZXJ5LmJpLmRhdGFyZXRyaWV2ZXJzLmV4cC5qcyI+PC9zY3Jp
cHQ+DQogICAgDQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iL1NjcmlwdHMvanF1ZXJ5LmJpLmRhdGFyZXRyaWV2ZXJzLnN0cnVjdHVyZS5q
cyI+PC9zY3JpcHQ+DQogICAgDQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iL1NjcmlwdHMvanF1ZXJ5LmJpLnF1ZXVlLmpzIj48L3Njcmlw
dD4NCg0KICAgIA0KDQogICAgPCEtLUFERCBXRURDUyBTQ1JJUFQtLT4NCiAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgIHZhciB2YXJT
ZWdtZW50YXRpb24gPSAxOw0KICAgICAgICB2YXIgdmFyQ2xpY2tUcmFja2luZyA9
IDE7DQogICAgICAgIHZhciB2YXJDdXN0b21lclRyYWNraW5nID0gMTsNCiAgICAg
ICAgdmFyIHZhckxvYWRUcmFja2luZyA9IDA7DQogICAgPC9zY3JpcHQ+DQoNCiAg
ICA8IS0tQUREIFdFRENTIFNDUklQVC0tPg0KICAgIA0KICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9TY3JpcHRzL2pxdWVyeS5iaS5kYXRh
Y29uc3VtZXJzLndlZGNzLmpzIj48L3NjcmlwdD4NCg0KICAgIA0KICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9TY3JpcHRzL3dlZGNzLmpz
Ij48L3NjcmlwdD4NCg0KICAgIDxub3NjcmlwdD4NCiAgICAgICAgPGltZyBhbHQ9
IiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwOi8vYy5taWNyb3NvZnQu
Y29tL3RyYW5zX3BpeGVsLmFzcHgiIC8+DQogICAgPC9ub3NjcmlwdD4NCiAgICAN
CiAgIA0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiB2YXIgJGJpU2V0
dGluZ3M9eyJ3ZWJ0cmVuZHMiOnsiaW50ZXJhY3Rpb25UeXBlTWFwIjp7IH0sInBh
cmFtZXRlck1hcCI6eyJEQ1MuZGNzc2lwIjpbeyJiaSI6InVyaWRvbWFpbiJ9XSwi
RENTLmRjc3VyaSI6W3siYmkiOiJ1cmlwYXRoIn1dLCJEQ1MuZGNzcXJ5IjpbeyJi
aSI6InVyaXF1ZXJ5In1dLCJXVC5kbCI6W3siYmkiOiJpbnRlcmFjdGlvbnR5cGUi
fV0sIldULlRyaWdnZXJUeXBlIjpbeyJiaSI6InRyaWdnZXJ0eXBlIn1dLCJXVC56
X0luaXRpYWwiOlt7ImJpIjoiaW5pdGlhbCJ9XSwiV1QudGkiOlt7ImJpIjoidGl0
bGUifV0sIldULlBhcmVudFRpdGxlU3RydWN0dXJlIjpbeyJiaSI6InBhcmVudHRp
dGxlc3RydWN0dXJlIn1dLCJXVC5UeXBlIjpbeyJiaSI6InR5cGUifV0sIldULlBh
cmVudFR5cGVTdHJ1Y3R1cmUiOlt7ImJpIjoicGFyZW50dHlwZXN0cnVjdHVyZSJ9
XSwiV1QuSW5kZXgiOlt7ImJpIjoiaW5kZXgifV0sIldULlBhcmVudEluZGV4U3Ry
dWN0dXJlIjpbeyJiaSI6InBhcmVudGluZGV4c3RydWN0dXJlIn1dLCJXVC5Hcmlk
U3RydWN0dXJlIjpbeyJiaSI6ImdyaWRzdHJ1Y3R1cmUifV0sIldULlNlYXJjaFR5
cGUiOlt7ImJpIjoic2VhcmNodHlwZSJ9XSwiV1QuU2VhcmNoUXVlcnkiOlt7ImJp
Ijoic2VhcmNocXVlcnkifV0sIkRDU2V4dC53dF9saW5rSWQiOlt7ImJpIjoibGlu
a2lkIn1dLCJXVC56X2xvY2FsZSI6W3siYmkiOiJsb2NhbGUifV0sIldULnBhIjpb
eyJiaSI6InByaW1hcnlhdWRpZW5jZSJ9XSwiV1Quel9lYV9uYW1lIjpbeyJiaSI6
ImVuZGFjdGlvbm5hbWUifV0sIldULnpfZWFfYWN0aW9ub2ZmZXIiOlt7ImJpIjoi
ZW5kYWN0aW9ub2ZmZXIifV0sIldULnpfZWFfdGFyZ2V0Y2FtcGFpZ24iOlt7ImJp
IjoiY2FtcGFpZ25ndWlkIn1dLCJEQ1NleHQudnBfZXZ0IjpbeyJiaSI6InZwZXZl
bnQifV0sIkRDU2V4dC52cF91dWlkIjpbeyJiaSI6InZwdXVpZCJ9XSwiV1QuU3Vy
dmV5SWQiOlt7ImJpIjoic3VydmV5aWQifV0sIldULlN1cnZleVZlcnNpb24iOlt7
ImJpIjoic3VydmV5dmVyc2lvbiJ9XSwiV1QuU3VydmV5UXVlc3Rpb25zIjpbeyJi
aSI6InN1cnZleXF1ZXN0aW9ucyJ9XSwiV1QuU3VydmV5Q29tbWVudHMiOlt7ImJp
Ijoic3VydmV5Y29tbWVudHMifV19fSwid2VkY3MiOnsiaW50ZXJhY3Rpb25UeXBl
TWFwIjp7IH0sInBhcmFtZXRlck1hcCI6eyJtcy5VcmlEb21haW4iOlt7ImJpIjoi
dXJpZG9tYWluIn1dLCJtcy5VcmlQYXRoIjpbeyJiaSI6InVyaXBhdGgifV0sIm1z
LlVyaVF1ZXJ5IjpbeyJiaSI6InVyaXF1ZXJ5In1dLCJtcy5JbnRlcmFjdGlvblR5
cGUiOlt7ImJpIjoiaW50ZXJhY3Rpb250eXBlIn1dLCJtcy5UcmlnZ2VyVHlwZSI6
W3siYmkiOiJ0cmlnZ2VydHlwZSJ9XSwibXMuSW5pdGlhbCI6W3siYmkiOiJpbml0
aWFsIn1dLCJtcy5UaXRsZSI6W3siYmkiOiJ0aXRsZSJ9XSwibXMuUGFyZW50VGl0
bGVTdHJ1Y3R1cmUiOlt7ImJpIjoicGFyZW50dGl0bGVzdHJ1Y3R1cmUifV0sIm1z
LlR5cGUiOlt7ImJpIjoidHlwZSJ9XSwibXMuUGFyZW50VHlwZVN0cnVjdHVyZSI6
W3siYmkiOiJwYXJlbnR0eXBlc3RydWN0dXJlIn1dLCJtcy5JbmRleCI6W3siYmki
OiJpbmRleCJ9XSwibXMuUGFyZW50SW5kZXhTdHJ1Y3R1cmUiOlt7ImJpIjoicGFy
ZW50aW5kZXhzdHJ1Y3R1cmUifV0sIm1zLkdyaWRTdHJ1Y3R1cmUiOlt7ImJpIjoi
Z3JpZHN0cnVjdHVyZSJ9XSwibXMuU2VhcmNoVHlwZSI6W3siYmkiOiJzZWFyY2h0
eXBlIn1dLCJtcy5TZWFyY2hRdWVyeSI6W3siYmkiOiJzZWFyY2hxdWVyeSJ9XSwi
Y290IjpbeyJiaSI6ImNvdCJ9XSwibXMubGlua2lkIjpbeyJiaSI6ImxpbmtpZCJ9
XSwibXMuY3Bnbmd1aWQiOlt7ImJpIjoiY2FtcGFpZ25ndWlkIn1dLCJtcy5yaW9j
dGMiOlt7ImJpIjoicmlvY3RjIn1dLCJtcy56X2xvY2FsZSI6W3siYmkiOiJsb2Nh
bGUifV0sIm1zLnBhIjpbeyJiaSI6InByaW1hcnlhdWRpZW5jZSJ9XSwibXMuc2Vy
cC5saW5rX3R5cGUiOlt7ImJpIjoic2VycGxpbmt0eXBlIn1dLCJtcy5zZXJwLmxp
bmtfcG9zaXRpb24iOlt7ImJpIjoic2VycGxpbmtwb3NpdGlvbiJ9XSwibXMuZWFf
b2ZmZXIiOlt7ImJpIjoiZW5kYWN0aW9ub2ZmZXIifV0sIm1zLmVhX2FjdGlvbiI6
W3siYmkiOiJlbmRhY3Rpb24ifV0sIm1zLmVhX25hbWUiOlt7ImJpIjoiZW5kYWN0
aW9ubmFtZSJ9XSwibXMudnBfc2l0ZSI6W3siYmkiOiJ2cHNpdGUifV0sIm1zLnZw
X2V2dCI6W3siYmkiOiJ2cGV2ZW50In1dLCJtcy52cF9kdXJhdGlvbiI6W3siYmki
OiJ2cGR1cmF0aW9uIn1dLCJtcy52cF9jaGFubmVsIjpbeyJiaSI6InZwY2hhbm5l
bCJ9XSwibXMudnBfdXVpZCI6W3siYmkiOiJ2cHV1aWQifV0sIm1zLnZwX29yaWdp
biI6W3siYmkiOiJ2cG9yaWdpbiJ9XSwibXMudnBfcG9zIjpbeyJiaSI6InZwcG9z
aXRpb24ifV0sIm1zLk9yZGVyX0lEIjpbeyJiaSI6Im9yZGVyaWQifV0sIm1zLk9y
ZGVyX1JldmVudWUiOlt7ImJpIjoib3JkZXJyZXZlbnVlIn1dLCJtcy5DdXJyZW5j
eSI6W3siYmkiOiJjdXJyZW5jeSJ9XSwibXMuTVNfU2FsZXNfUGFydF9OdW1iZXIi
Olt7ImJpIjoibXNzc2FsZXNwYXJ0bnVtYmVyIn1dLCJtcy5NU19TYWxlc19QYXJ0
X1F1YW50aXR5IjpbeyJiaSI6Im1zc2FsZXNwYXJ0cXVhbnRpdHkifV0sIm1zLmR3
bnR5cGUiOlt7ImJpIjoiZG93bmxvYWR0eXBlIn1dLCJtcy5BY3RpdmVEd2VsbFRp
bWUiOlt7ImJpIjoiYWN0aXZlZHdlbGx0aW1lIn1dLCJtcy5TdXJ2ZXlJZCI6W3si
YmkiOiJzdXJ2ZXlpZCJ9XSwibXMuU3VydmV5VmVyc2lvbiI6W3siYmkiOiJzdXJ2
ZXl2ZXJzaW9uIn1dLCJtcy5TdXJ2ZXlRdWVzdGlvbnMiOlt7ImJpIjoic3VydmV5
cXVlc3Rpb25zIn1dLCJtcy5TdXJ2ZXlDb21tZW50cyI6W3siYmkiOiJzdXJ2ZXlj
b21tZW50cyJ9XX19fTs8L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4NCmlmICgkICYmICQuYmkpDQp7DQokKCdodG1sJykuYXR0cigneG1s
bnM6YmknLCAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTptc2NvbTpiaScpOw0K
JC5iaS5pbml0KHdpbmRvdy4kYmlTZXR0aW5ncyk7DQp9DQo8L3NjcmlwdD4NCg0K
PC9ib2R5Pg0KPC9odG1sPg0K
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomMaster.css
Content-Type: text/css; charset=utf-8; name=oneMscomMaster.css
Content-Location: http://support.microsoft.com/Styles/oneMscomMaster.css
Content-Transfer-Encoding: 8bit
html,body,form,div,h1,h2,h3,h4,h5,h6,li,ol,p,ul{margin:0;padding:0}.cssClear{clear:both;height:0;margin:0;padding:0;_line-height:0}a:link,a:visited{text-decoration:none}img{border:none}#roottoolbar{font-size:70%}html,body{height:100%}body{width:100%;min-height:25px;_height:400px}div.form-bottom{position:relative}div.form-bottom-inner{position:absolute;top:-400px;width:100%;min-width:960px;height:400px}div.stage{position:relative;z-index:1;margin:0 auto;width:960px}div.stage{_height:100%}div.stage-bg-bot{_height:100%;_height:expression(document.body.clientHeight-430+"px")}div.stage-content{padding-left:20px;padding-right:20px}div.stage-bg-top{position:absolute;z-index:-1;top:0;height:85px;width:100%}div.stage-bg-mid{position:absolute;z-index:-1;top:85px;height:345px;width:100%}div.stage-bg-bot{position:absolute;z-index:-1;top:430px;bottom:0;width:100%}div.utility-bar{margin-bottom:10px;position:relative;z-index:999}div.main-brand{margin-bottom:10px}div.main-brand img{border:none}div.main-brand .logo .bg-img,div.main-brand .logo .filter-img{top:0;width:100%;height:100%}div.main-brand .logo .bg-img{background-repeat:no-repeat}.main-brand span.beta{color:#fff;position:relative;top:16px}div.search-navigation{z-index:990;position:relative;width:100%;background-color:transparent;margin-bottom:20px}div.search-navigation-bg{position:absolute;top:0;bottom:0;left:0;right:0}div.main-content{min-height:555px;_height:555px;margin-bottom:20px}div.footer{min-height:50px;_height:50px;_width:100%;clear:both}div.main-brand .brandLogoTextCell{vertical-align:bottom}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomMaster.js
Content-Type: application/x-javascript; charset=utf-8; name=oneMscomMaster.js
Content-Location: http://support.microsoft.com/scripts/oneMscomMaster.js
Content-Transfer-Encoding: Base64
77u/LyoNCiogQ29weXJpZ2h0IDIwMDktMjAxMSBXZWJ0cmVuZHMgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLg0KKiBXRUJUUkVORFMgUFJPUFJJRVRBUlkvQ09ORklE
RU5USUFMLiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLg0KKg0KKi8N
Cg0KLyoNCiogVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIGZvcmNlIFNTTCBj
b21tdW5pY2F0aW9uIG9uIGFsbCBjYWxscyB0byBXZWJ0cmVuZHMgDQoqIG9wdGlt
aXphdGlvbiBhbmQgdHJhY2tpbmcgc2VydmVycy4NCiovDQovL3oyN2EzPXRydWU7
DQoNCi8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byBlbmFibGUgdGhlIGds
b2JhbCBjb25maWcgZmlsZSBzdXBwb3J0LiANCiogICh3dG9wdC5jb25maWcuanMp
DQoqLw0KLy96YjQxMD10cnVlOw0KDQovKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVs
b3cgdG8gbW9kaWZ5IHRoZSBnbG9iYWwgY29uZmlnIGZpbGUgc2VhcmNoIHBhdGgu
ICovDQovL3o3YmNiPVsiIiwiLyJdOw0KDQpmdW5jdGlvbiB6MDY5MSgpIHsgdGhp
cy56ZTNjMiA9IGZhbHNlOyB0aGlzLnoyYjIwID0gW107IHRoaXMuejIzZWIgPSB7
fTsgdGhpcy56YzkwMSA9IGZhbHNlOyB0aGlzLno5MDdkID0gbnVsbDsgdGhpcy56
OTNjYiA9IG51bGw7IHRoaXMuejRlOWEgPSBudWxsOyB0aGlzLnplZmI4ID0gZmFs
c2U7IHRoaXMuRGVidWcgPSBudWxsOyB2YXIgejFhMjMgPSB0aGlzOyB0aGlzLno5
NWU4ID0gZnVuY3Rpb24gKCkgeyB0aGlzLnoyM2ViWyJzX2tleVRva2VuIl0gPSAi
ZmJhZWQ0Zjg3M2Y4MDFkYmM2YWQzNDYwMGU4NWZkYTk5YTAwYzE1Y2I3IjsgdGhp
cy56MjNlYlsic19kb21haW5LZXkiXSA9ICIzMTExMjEiOyB0aGlzLnoyM2ViWyJz
X2NhcGlNYWpvclZlcnNpb24iXSA9ICIzIjsgdGhpcy56MjNlYlsic19jYXBpTWlu
b3JWZXJzaW9uIl0gPSAiMSI7IHRoaXMuejIzZWJbInNfY2FwaUluY1ZlcnNpb24i
XSA9ICIyIjsgdGhpcy56MjNlYlsic19jYXBpRGVidWciXSA9ICgiZmFsc2UiID09
ICJ0cnVlIik7IHRoaXMuejIzZWJbInNfYWxsb3dDYXBpQ29uZmlnIl0gPSAodHlw
ZW9mICh6YjQxMCkgPT0gInVuZGVmaW5lZCIgPyBmYWxzZSA6IHpiNDEwKTsgdGhp
cy56MjNlYlsic19jYXBpQ29uZmlnRmlsZSJdID0gInd0b3B0LmNvbmZpZy5qcyI7
IHRoaXMuejIzZWJbInNfY2FwaUNvbmZpZ1NlYXJjaFBhdGgiXSA9ICh0eXBlb2Yg
KHo3YmNiKSA9PSAidW5kZWZpbmVkIiA/IFsiIiwgIi8iXSA6IHo3YmNiKTsgdGhp
cy56MjNlYlsic19wYWdlUHJvdG9jb2wiXSA9ICh0eXBlb2YgKHoyN2EzKSA9PSAi
dW5kZWZpbmVkIiB8fCAhejI3YTMgPyAoZG9jdW1lbnQubG9jYXRpb24ucHJvdG9j
b2wgPT0gImh0dHBzOiIgPyAiaHR0cHMiIDogImh0dHAiKSA6ICJodHRwcyIpOyB0
aGlzLnoyM2ViWyJzX290c1NlcnZlciJdID0gIm90cy5vcHRpbWl6ZS53ZWJ0cmVu
ZHMuY29tIjsgdGhpcy56MjNlYlsic193YXNTZXJ2ZXIiXSA9ICJ3YXMub3B0aW1p
emUud2VidHJlbmRzLmNvbSI7IHRoaXMuejIzZWJbInNfb3RzV2ViQXBwIl0gPSAi
L290cyI7IHRoaXMuejIzZWJbInNfb3RzV2ViQXBwU2VydmxldCJdID0gIi9vdHMi
OyB0aGlzLnoyM2ViWyJzX3BhZ2VNb2RlIl0gPSAiZG9tIjsgdGhpcy56MjNlYlsi
c19wYWdlRGlzcGxheU1vZGUiXSA9ICJ2aXNpYmlsaXR5IjsgdGhpcy56MjNlYlsi
c19ldmVudEhhbmRsZXJzIl0gPSB7fTsgdGhpcy56MjNlYlsic19vdHNEZWJ1Z2dl
ckxpYlVybCJdID0gdGhpcy56MjNlYlsic19wYWdlUHJvdG9jb2wiXSArICI6Ly8i
ICsgdGhpcy56MjNlYlsic19vdHNTZXJ2ZXIiXSArIHRoaXMuejIzZWJbInNfb3Rz
V2ViQXBwIl0gKyAiL2xpYi8iICsgdGhpcy56MjNlYlsic19jYXBpTWFqb3JWZXJz
aW9uIl0gKyAiLiIgKyB0aGlzLnoyM2ViWyJzX2NhcGlNaW5vclZlcnNpb24iXSAr
ICIvIiArICJ3dF9kZWJ1Z2dlciIgKyAodGhpcy56MjNlYlsic19jYXBpRGVidWci
XSA/ICJfZGVidWciIDogIiIpICsgIi5qcyI7IHZhciBvbmxvYWQgPSBmdW5jdGlv
biAoKSB7IGlmICh6MWEyMy56ZWZiOCkgeyByZXR1cm47IH0gejFhMjMuemVmYjgg
PSB0cnVlOyB6MWEyMy56ODhkMyhuZXcgV1RFdmVudChXVEV2ZW50Lno2ZmQ3LCBX
VEV2ZW50LlNUQVRVU19TVUNDRVNTKSk7IH07IGlmICh3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcikgeyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0
aW9uICgpIHsgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCBhcmd1
bWVudHMuY2FsbGVlLCBmYWxzZSk7IHoxYTIzLkRlYnVnLno1ZDU5KCJjYXBpOiBv
bmxvYWQgZmlyZWQiKTsgb25sb2FkKCk7IH0sIGZhbHNlKTsgfSBlbHNlIGlmICh3
aW5kb3cuYXR0YWNoRXZlbnQpIHsgd2luZG93LmF0dGFjaEV2ZW50KCdvbmxvYWQn
LCBmdW5jdGlvbiAoKSB7IHdpbmRvdy5kZXRhY2hFdmVudCgib25sb2FkIiwgYXJn
dW1lbnRzLmNhbGxlZSwgZmFsc2UpOyB6MWEyMy5EZWJ1Zy56NWQ1OSgiY2FwaTog
b25sb2FkIGZpcmVkIik7IG9ubG9hZCgpOyB9KTsgfSB0aGlzLkRlYnVnID0gbmV3
IHRoaXMuejIyZjcoKTsgdGhpcy56ZDBiNyhXVEV2ZW50LkFCT1JULCB0aGlzLno4
Y2RjLCB0aGlzLno4Y2RjKTsgdGhpcy56ZDBiNyhXVEV2ZW50Lno0NTE5LCB0aGlz
Lno5OWRiLCB0aGlzLno5OWRiKTsgaWYgKHRoaXMuejIzZWJbInNfYWxsb3dDYXBp
Q29uZmlnIl0pIHsgemM3ZWYoKTsgfSBlbHNlIHsgdGhpcy56YzkwMSA9IHRydWU7
IH0gfTsgdmFyIHpjN2VmID0gZnVuY3Rpb24gKCkgeyB0cnkgeyB2YXIgemJmOGUg
PSBmdW5jdGlvbiAoZXZlbnQpIHsgdmFyIHozODgzID0gZXZlbnQudGFyZ2V0OyBp
ZiAoejM4ODMpIHsgZm9yICh2YXIgejIxODYgaW4gejM4ODMpIHsgejFhMjMuejIz
ZWJbejIxODZdID0gejM4ODNbejIxODZdOyB9OyB9IHoxYTIzLno4OGQzKG5ldyBX
VEV2ZW50KFdURXZlbnQuejBjZjUsIFdURXZlbnQuU1RBVFVTX1NVQ0NFU1MpLCB0
cnVlKTsgejFhMjMuemM5MDEgPSB0cnVlOyB9OyB6MWEyMy56ZDBiNyhXVEV2ZW50
LkNBUElfQ09ORklHLCB6YmY4ZSk7IGZvciAoejJjYTAgPSAwOyB6MmNhMCA8IHox
YTIzLnoyM2ViWyJzX2NhcGlDb25maWdTZWFyY2hQYXRoIl0ubGVuZ3RoOyB6MmNh
MCsrKSB7IHZhciB6N2UxOSA9IHt9OyB6N2UxOVsidHlwZSJdID0gInRleHQvamF2
YXNjcmlwdCI7IHo3ZTE5WyJhc3luYyJdID0gInRydWUiOyB6N2UxOVsiZGVmZXIi
XSA9ICJ0cnVlIjsgejdlMTlbInNyYyJdID0gejFhMjMuejIzZWJbInNfY2FwaUNv
bmZpZ1NlYXJjaFBhdGgiXVt6MmNhMF0gKyB6MWEyMy56MjNlYlsic19jYXBpQ29u
ZmlnRmlsZSJdOyB6MWEyMy56ZTgyYigic2NyaXB0IiwgejdlMTksIG51bGwsIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pOyB9IH0gY2F0
Y2ggKHozOTJjKSB7IHoxYTIzLkRlYnVnLnoxZGJiKCJVbmFibGUgdG8gbG9hZCB3
dG9wLmNvbmZpZyBmaWxlLCBjaGVjayBlcnJvciBmb3IgZGV0YWlscy4iLCAwLCB6
MzkyYyk7IH0gfTsgdmFyIHpiYjkyID0gZnVuY3Rpb24gKCkgeyBpZiAobmF2aWdh
dG9yLmNvb2tpZUVuYWJsZWQpIHsgcmV0dXJuIHRydWU7IH0gZG9jdW1lbnQuY29v
a2llID0gIl93dC5hcmVDb29raWVzRW5hYmxlZD10cnVlOyI7IHZhciB6NTI3MyA9
IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCJfd3QuYXJlQ29va2llc0VuYWJsZWQ9
dHJ1ZSIpID49IDA7IGRvY3VtZW50LmNvb2tpZSA9ICJfd3QuYXJlQ29va2llc0Vu
YWJsZWQ9dHJ1ZTsgZXhwaXJlcz0iICsgbmV3IERhdGUoKS50b0dNVFN0cmluZygp
OyByZXR1cm4gejUyNzM7IH07IHRoaXMuemNjZWIgPSBmdW5jdGlvbiAoemNjZGQp
IHsgaWYgKHR5cGVvZiB6Y2NkZCA9PSAidW5kZWZpbmVkIiB8fCB6Y2NkZCA9PT0g
bnVsbCkgeyB6Y2NkZCA9IHt9OyB9IGZ1bmN0aW9uIHowMzA5KHowNzM1LCB6MGE5
NikgeyBpZiAodHlwZW9mIHpjY2RkW3owNzM1XSA9PSAidW5kZWZpbmVkIikgeyB6
Y2NkZFt6MDczNV0gPSB6MGE5NjsgfSB9OyBmb3IgKHZhciB6MjE4NiBpbiB0aGlz
LnoyM2ViKSB7IHowMzA5KHoyMTg2LCB0aGlzLnoyM2ViW3oyMTg2XSk7IH0gejAz
MDkoInNfdmVyc2lvbiIsICJPcHRpbWl6ZV92Ny44LjAuMTIyMTAtMjAxMTA3MjIt
MjEzMCwgUHJvdG9jb2w6ICIgKyB6Y2NkZFsic19jYXBpTWFqb3JWZXJzaW9uIl0g
KyAiLiIgKyB6Y2NkZFsic19jYXBpTWlub3JWZXJzaW9uIl0gKyAiLiIgKyB6Y2Nk
ZFsic19jYXBpSW5jVmVyc2lvbiJdKTsgejAzMDkoInNfb3RzTGliVXJsIiwgemNj
ZGRbInNfcGFnZVByb3RvY29sIl0gKyAiOi8vIiArIHpjY2RkWyJzX290c1NlcnZl
ciJdICsgemNjZGRbInNfb3RzV2ViQXBwIl0gKyAiL2xpYi8iICsgemNjZGRbInNf
Y2FwaU1ham9yVmVyc2lvbiJdICsgIi4iICsgemNjZGRbInNfY2FwaU1pbm9yVmVy
c2lvbiJdICsgIi8iICsgInd0X2xpYiIgKyAoemNjZGRbInNfY2FwaURlYnVnIl0g
PyAiX2RlYnVnIiA6ICIiKSArICIuanMiKTsgejAzMDkoInNfcGFnZVRpbWVvdXQi
LCA0MDAwKTsgdGhpcy5EZWJ1Zy56NTA2MCgic3RhcnQ6IFdlYnRyZW5kcyBPcHRp
bWl6ZSBDQVBJIFZlcnNpb246ICIgKyB6Y2NkZFsic192ZXJzaW9uIl0pOyBpZiAo
IXpiYjkyKCkpIHsgdGhyb3cgIkNvb2tpZXMgYXJlIG5vdCBlbmFibGVkLCBXZWJ0
cmVuZHMgT3B0aW1pemUgaXMgZGlzYWJsZWQuIjsgfSB2YXIgejQxYTAgPSB6Y2Nk
ZFsiY29udGVudFdyYXBwZXIiXTsgdmFyIHo5MTgwID0gbnVsbDsgaWYgKHo0MWEw
KSB7IHo5MTgwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoejQxYTApOyB0aGlz
LkRlYnVnLnpmZGE3KCJjYXBpUGFyYW1zOiB1c2luZyB3cmFwcGVyIFsiICsgejQx
YTAgKyAiXSBmb3IgdGVzdCBhbGlhcyBbIiArIHpjY2RkWyJ0ZXN0QWxpYXMiXSAr
ICJdIik7IH0gZWxzZSBpZiAoemNjZGRbInRlc3RBbGlhcyJdKSB7IHRoaXMuRGVi
dWcuemZkYTcoImNhcGlQYXJhbXM6IFsiICsgejQxYTAgKyAiXSB1c2luZyBtb25p
a2VyIFsiICsgemNjZGRbInRlc3RBbGlhcyJdICsgIl0iKTsgejkxODAgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh6Y2NkZFsidGVzdEFsaWFzIl0pOyB9IGlmIChk
b2N1bWVudC5jb29raWUuaW5kZXhPZigiX3d0LmRlYnVnd2luZG93PSIpID49IDAp
IHsgdmFyIHphYTkxID0gZG9jdW1lbnQuY29va2llLmluZGV4T2YoIl93dC5kZWJ1
Z3dpbmRvdz0iKTsgdmFyIHpjZDgzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7
Jyk7IGZvciAodmFyIHoyMDVlID0gMDsgejIwNWUgPCB6Y2Q4My5sZW5ndGg7IHoy
MDVlKyspIHsgdmFyIHo4NDAzID0gemNkODNbejIwNWVdOyB3aGlsZSAoejg0MDMu
Y2hhckF0KDApID09ICcgJykgejg0MDMgPSB6ODQwMy5zdWJzdHJpbmcoMSwgejg0
MDMubGVuZ3RoKTsgaWYgKHo4NDAzLmluZGV4T2YoemFhOTEpID09IDApIHsgemNj
ZGRbImRlYnVnIl0ubGVuZ3RoID0gejg0MDMuc3Vic3RyaW5nKHphYTkxLmxlbmd0
aCwgejg0MDMubGVuZ3RoKTsgemNjZGRbImRlYnVnIl0gPSB0cnVlOyBicmVhazsg
fTsgfTsgfSBpZiAoemNjZGRbImRlYnVnIl0gJiYgemNjZGRbImRlYnVnIl0ubGVu
Z3RoID4gMCkgeyB0aGlzLkRlYnVnLno1ZGJlID0gZmFsc2U7IHRoaXMuRGVidWcu
ejZjMzggPSB6Y2NkZFsiZGVidWciXS5sZW5ndGg7IHRoaXMuRGVidWcucmVmcmVz
aCh0cnVlKTsgfSBpZiAoIXo5MTgwKSB7IHRoaXMuRGVidWcuemZkYTcoImNhcGlQ
YXJhbXM6IHVzaW5nIGJvZHkgdG8gcHJlcGFyZSBydW4uIik7IHo5MTgwID0gZG9j
dW1lbnQuYm9keTsgfSB6MDMwOSgicl9jV3JhcEVsIiwgejkxODApOyBpZiAoemNj
ZGRbInNfcmVxdWVzdFR5cGUiXSAhPSAiY29udmVyc2lvbiIpIHsgaWYgKCF0aGlz
Lno5MDdkKSB7IHRoaXMuejkwN2QgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsg
V1RPcHRpbWl6ZS5maXJlRXZlbnQobmV3IFdURXZlbnQoV1RFdmVudC56NDUxOSwg
V1RFdmVudC5TVEFUVVNfRkFVTFQsIHpjY2RkKSk7IH0sIHpjY2RkWyJzX3BhZ2VU
aW1lb3V0Il0pOyB0aGlzLno5M2NiID0gbmV3IERhdGUoKTsgdGhpcy5EZWJ1Zy56
NTA2MCgidGltZXI6IHN0YXJ0ZWQgWyIgKyB0aGlzLno5M2NiICsgIl0uIik7IH0g
ZWxzZSB7IHRoaXMuRGVidWcuejUwNjAoInRpbWVyOiBhbHJlYWR5IHN0YXJ0ZWQs
IHVzaW5nIGN1cnJlbnQgdGltZXIuIik7IH0gdGhpcy56ZmE5Yyh6OTE4MCwgemNj
ZGRbInNfcGFnZURpc3BsYXlNb2RlIl0sIGZhbHNlKTsgfSB0aGlzLno4OGQzKG5l
dyBXVEV2ZW50KFdURXZlbnQuUFJFUEFSRSwgV1RFdmVudC5TVEFUVVNfU1VDQ0VT
UywgemNjZGQpKTsgcmV0dXJuIHpjY2RkOyB9OyB0aGlzLnozZTI5ID0gZnVuY3Rp
b24gKHpjY2RkKSB7IHRyeSB7IHpjY2RkID0gdGhpcy56Y2NlYih6Y2NkZCk7IGlm
ICh0eXBlb2YgV1RPcHRpbWl6ZS56MzJhZCA9PSAidW5kZWZpbmVkIikgeyB2YXIg
ejUxZTYgPSBmdW5jdGlvbiAoZXZlbnQpIHsgV1RPcHRpbWl6ZS56ODhkMyhuZXcg
V1RFdmVudChXVEV2ZW50LklOSVRJQUxJWkUsIGV2ZW50Lno5MzdkLCB6Y2NkZCkp
OyBXVE9wdGltaXplLnozMmFkLnozMTFkKHpjY2RkWyJ0ZXN0QWxpYXMiXSwgemNj
ZGQpOyB9OyB2YXIgejVmMjQgPSBmdW5jdGlvbiAoZXZlbnQpIHsgV1RPcHRpbWl6
ZS5EZWJ1Zy56MWRiYigibGlicmFyeTogZmFpbGVkIHRvIGxvYWQuIik7IFdUT3B0
aW1pemUuejg4ZDMobmV3IFdURXZlbnQoV1RFdmVudC5BQk9SVCwgZXZlbnQuejkz
N2QsIHpjY2RkKSk7IH07IHRoaXMuemQwYjcoV1RFdmVudC56ZDkzOCwgejUxZTYs
IHo1ZjI0KTsgdmFyIHo4Y2U1ID0gZnVuY3Rpb24gKHozOTJjKSB7IHRyeSB7IFdU
T3B0aW1pemUuRGVidWcuemZkYTcoImxpYnJhcnk6IGNoZWNraW5nIGxpYnJhcnkg
aXMgc2VlIGlmIGl0IGhhcyBiZWVuIGxvYWRlZC4iKTsgaWYgKHozOTJjKSB7IGlm
ICh6MzkyYy5zcmNFbGVtZW50ICYmICh6MzkyYy5zcmNFbGVtZW50LnJlYWR5U3Rh
dGUgPT0gImNvbXBsZXRlIiB8fCB6MzkyYy5zcmNFbGVtZW50LnJlYWR5U3RhdGUg
PT0gImxvYWRpbmciKSkgeyByZXR1cm47IH07IH0gaWYgKHR5cGVvZiBXVE9wdGlt
aXplLnozMmFkID09ICJ1bmRlZmluZWQiKSB7IFdUT3B0aW1pemUuejg4ZDMobmV3
IFdURXZlbnQoV1RFdmVudC56ZDkzOCwgV1RFdmVudC5TVEFUVVNfRkFVTFQpKTsg
fSB9IGNhdGNoICh6Njc2ZCkgeyBXVE9wdGltaXplLkRlYnVnLnoxZGJiKCJsaWJy
YXJ5OiBmYWlsZWQgdG8gdmVyaWZ5IGxpYnJhcnkiLCAwLCB6Njc2ZCk7IFdUT3B0
aW1pemUuejg4ZDMobmV3IFdURXZlbnQoV1RFdmVudC5BQk9SVCwgV1RFdmVudC5T
VEFUVVNfRkFVTFQpKTsgfSB9OyB2YXIgemJhZGUgPSB7fTsgdmFyIHpmY2U5ID0g
e307IHpiYWRlWyJ0eXBlIl0gPSAidGV4dC9qYXZhc2NyaXB0IjsgemJhZGVbInNy
YyJdID0gemNjZGRbInNfb3RzTGliVXJsIl07IHpiYWRlWyJhc3luYyJdID0gInRy
dWUiOyB6YmFkZVsiZGVmZXIiXSA9ICJ0cnVlIjsgemZjZTlbIm9ubG9hZCJdID0g
ejhjZTU7IHpmY2U5WyJlcnJvciJdID0gejhjZTU7IHpmY2U5WyJvbnJlYWR5c3Rh
dGVjaGFuZ2UiXSA9IHo4Y2U1OyB0aGlzLkRlYnVnLnpmZGE3KCJpbml0aWFsaXpl
OiBMb2FkaW5nIFNlcnZlciBMaWJyYXJ5IFsiICsgemJhZGVbInNyYyJdICsgIl0i
KTsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHoxYTIzLnplODJiKCJzY3JpcHQi
LCB6YmFkZSwgemZjZTksIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdo
ZWFkJylbMF0pOyB9LCAwKTsgfSBlbHNlIHsgdGhpcy5EZWJ1Zy56ZmRhNygiaW5p
dGlhbGl6ZTogU2VydmVyIExpYnJhcnkgYWxyZWFkeSBsb2FkZWQsIHdpbGwgbm93
IHByZXBhcmUgb3B0aW1pemUuIik7IFdUT3B0aW1pemUuejg4ZDMobmV3IFdURXZl
bnQoV1RFdmVudC5JTklUSUFMSVpFLCBXVEV2ZW50LlNUQVRVU19TVUNDRVNTLCB6
Y2NkZCkpOyBXVE9wdGltaXplLnozMmFkLnozMTFkKHpjY2RkWyJ0ZXN0QWxpYXMi
XSwgemNjZGQpOyB9IH0gY2F0Y2ggKHozOTJjKSB7IHRoaXMuRGVidWcuejFkYmIo
ImluaXRpYWxpemU6IGVycm9yIGR1cmluZyBmcmFtZXdvcmsgc2V0dXAuIiwgMCwg
ejM5MmMpOyBXVE9wdGltaXplLno4OGQzKG5ldyBXVEV2ZW50KFdURXZlbnQuSU5J
VElBTElaRSwgV1RFdmVudC5TVEFUVVNfRkFVTFQsIHpjY2RkKSk7IFdUT3B0aW1p
emUuejg4ZDMobmV3IFdURXZlbnQoV1RFdmVudC5BQk9SVCwgV1RFdmVudC5TVEFU
VVNfRkFVTFQsIHpjY2RkKSk7IH0gfTsgdGhpcy56ZmE5YyA9IGZ1bmN0aW9uICh6
OWRlOSwgdHlwZSwgejUwOGEpIHsgaWYgKHR5cGUgPT0gImRpc3BsYXkiKSB7IHo5
ZGU5LnN0eWxlLmRpc3BsYXkgPSAoejUwOGEgPyAnJyA6ICdub25lJyk7IGlmICh6
OWRlOSAhPSBkb2N1bWVudC5ib2R5ICYmICF6NTA4YSkgeyBkb2N1bWVudC5ib2R5
LnN0eWxlLmRpc3BsYXkgPSAnJzsgfTsgfSBlbHNlIGlmICh0eXBlID09ICJ2aXNp
YmlsaXR5IikgeyB6OWRlOS5zdHlsZS52aXNpYmlsaXR5ID0gKHo1MDhhID8gJ3Zp
c2libGUnIDogJ2hpZGRlbicpOyB6OWRlOS5zdHlsZS5oaWRkZW4gPSAhejUwOGE7
IGlmICh6OWRlOSAhPSBkb2N1bWVudC5ib2R5ICYmICF6NTA4YSkgeyBkb2N1bWVu
dC5ib2R5LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7IGRvY3VtZW50LmJv
ZHkuc3R5bGUuaGlkZGVuID0gZmFsc2U7IH07IH0gZWxzZSBpZiAodHlwZSA9PSAi
c2hpZnQiKSB7IHo5ZGU5LnN0eWxlLnBvc2l0aW9uID0gKHo1MDhhID8gJ3JlbGF0
aXZlJyA6ICdhYnNvbHV0ZScpOyB6OWRlOS5zdHlsZS5sZWZ0ID0gKHo1MDhhID8g
J2F1dG8nIDogJy0xMDAwJScpOyBpZiAoejlkZTkgIT0gZG9jdW1lbnQuYm9keSAm
JiAhejUwOGEpIHsgZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbiA9ICdyZWxh
dGl2ZSc7IGRvY3VtZW50LmJvZHkuc3R5bGUubGVmdCA9ICdhdXRvJzsgfTsgfSBl
bHNlIGlmICh0eXBlID09ICJub25lIikgeyB9IHZhciB6ZjY0ZSA9IHt9OyB6ZjY0
ZVsnZGlzcGxheVR5cGUnXSA9IHR5cGU7IHpmNjRlWydkaXNwbGF5J10gPSB6NTA4
YTsgV1RPcHRpbWl6ZS56ODhkMyhuZXcgV1RFdmVudChXVEV2ZW50LkhJREVTSE9X
LCBXVEV2ZW50LlNUQVRVU19TVUNDRVNTLCB6OWRlOSwgemY2NGUpKTsgfTsgdGhp
cy56OWQ1YSA9IGZ1bmN0aW9uICh6OWRlOSwgZXZlbnQsIHo0ZDc2KSB7IGlmICh6
OWRlOS5hZGRFdmVudExpc3RlbmVyKSB7IHo5ZGU5LmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnQsIHo0ZDc2LCBmYWxzZSk7IH0gZWxzZSBpZiAoejlkZTkuYXR0YWNoRXZl
bnQpIHsgejlkZTkuYXR0YWNoRXZlbnQoZXZlbnQsIHo0ZDc2KTsgfSBlbHNlIHsg
ZXZhbCgnZWxtLicgKyBldmVudCArICc9ZnVuYzsnKTsgfSB9OyB0aGlzLno5OWRi
ID0gZnVuY3Rpb24gKGV2ZW50KSB7IFdUT3B0aW1pemUuejRlOWEgPSBuZXcgRGF0
ZSgpOyBpZiAoV1RPcHRpbWl6ZS56OTA3ZCkgeyBjbGVhclRpbWVvdXQoV1RPcHRp
bWl6ZS56OTA3ZCk7IFdUT3B0aW1pemUuejkwN2QgPSBudWxsOyB9IFdUT3B0aW1p
emUuRGVidWcuejUwNjAoZXZlbnQubmFtZSArICI6IGV4cGlyZWQsIGl0IHRvb2sg
bG9uZ2VyIHRoYW4gZXhwZWN0ZWQuIFsiICsgV1RPcHRpbWl6ZS56NGU5YSArICJd
Iik7IFdUT3B0aW1pemUuejhjZGMoZXZlbnQpOyB9OyB0aGlzLno4Y2RjID0gZnVu
Y3Rpb24gKGV2ZW50KSB7IGlmIChXVE9wdGltaXplLno5MDdkKSB7IFdUT3B0aW1p
emUuejRlOWEgPSBuZXcgRGF0ZSgpOyBjbGVhclRpbWVvdXQoV1RPcHRpbWl6ZS56
OTA3ZCk7IFdUT3B0aW1pemUuRGVidWcuejUwNjAoZXZlbnQubmFtZSArICI6IGNs
ZWFyaW5nIGFjdGl2ZSB0aW1lciBbIiArIFdUT3B0aW1pemUuejRlOWEgKyAiXSIp
OyB9IGlmICgoZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldFsicl9jV3JhcEVs
Il0pICYmICFldmVudC50YXJnZXRbImRlZmF1bHRVcmwiXSkgeyB2YXIgejkxODAg
PSBldmVudC50YXJnZXRbInJfY1dyYXBFbCJdOyB6MWEyMy56ZmE5Yyh6OTE4MCwg
ZXZlbnQudGFyZ2V0WyJzX3BhZ2VEaXNwbGF5TW9kZSJdLCB0cnVlKTsgfSBlbHNl
IGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0WyJkZWZhdWx0VXJsIl0p
IHsgV1RPcHRpbWl6ZS56ODhkMyhuZXcgV1RFdmVudChXVEV2ZW50LkRPTkUsIGV2
ZW50WyJzdGF0ZSJdKSk7IFdUT3B0aW1pemUuemUzYzIgPSB0cnVlOyBXVE9wdGlt
aXplLkRlYnVnLno1MDYwKGV2ZW50Lm5hbWUgKyAiOiByZWRpcmVjdGluZyB0byBl
cnJvciB1cmwgWyIgKyBldmVudC50YXJnZXRbImRlZmF1bHRVcmwiXSArICJdIik7
IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBldmVudC50YXJnZXRbImRlZmF1bHRV
cmwiXTsgcmV0dXJuOyB9IGZvciAodmFyIHoyMDVlID0gMDsgejIwNWUgPCBXVE9w
dGltaXplLnoyYjIwLmxlbmd0aDsgejIwNWUrKykgeyB2YXIgejI5NDUgPSBXVE9w
dGltaXplLnoyYjIwW3oyMDVlXTsgdmFyIHo5MTgwID0gejI5NDUuemNjZGRbInJf
Y1dyYXBFbCJdOyBpZiAoejI5NDUgJiYgejkxODAgJiYgIXoyOTQ1LnpjY2RkWyJk
ZWZhdWx0VXJsIl0pIHsgdHJ5IHsgejFhMjMuemZhOWMoejkxODAsIHoyOTQ1Lnpj
Y2RkWyJzX3BhZ2VEaXNwbGF5TW9kZSJdLCB0cnVlKTsgV1RPcHRpbWl6ZS5EZWJ1
Zy56MWRiYihldmVudC5uYW1lICsgIjogcmVuZGVyIHBhZ2UgZHVlIHRvIGVycm9y
LCBjaGVjayBsb2cgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFthbGlhczogIiArIHoy
OTQ1LnpjY2RkWyJ0ZXN0QWxpYXMiXSArICIsIGRvbSBpZDogIiArIHo5MTgwLmlk
ICsgIl0iLCAwKTsgfSBjYXRjaCAoejM5MmMpIHsgV1RPcHRpbWl6ZS5EZWJ1Zy56
MWRiYihldmVudC5uYW1lICsgIjogZHVyaW5nIGFib3J0IG9uIGEgcmVuZGVyIG9m
IGEgcGFnZSBhbiBlcnJvciBvY2N1cnJlZCwgY2hlY2sgbG9nIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLiBbYWxpYXM6ICIgKyB6Mjk0NS56Y2NkZFsidGVzdEFsaWFzIl0g
KyAiLCBkb20gaWQ6ICIgKyB6OTE4MC5pZCArICJdIiwgMCwgejM5MmMpOyB9OyB9
IGVsc2UgaWYgKHoyOTQ1ICYmIHoyOTQ1LnpjY2RkWyJkZWZhdWx0VXJsIl0pIHsg
V1RPcHRpbWl6ZS56ODhkMyhuZXcgV1RFdmVudChXVEV2ZW50LkRPTkUsIGV2ZW50
WyJzdGF0ZSJdKSk7IFdUT3B0aW1pemUuemUzYzIgPSB0cnVlOyBXVE9wdGltaXpl
LkRlYnVnLno1MDYwKGV2ZW50Lm5hbWUgKyAiOiByZWRpcmVjdGluZyB0byBlcnJv
ciB1cmwgWyIgKyB6Mjk0NS56Y2NkZFsiZGVmYXVsdFVybCJdICsgIl0gZm9yIGFs
aWFzIFsiICsgejI5NDUuemNjZGRbInRlc3RBbGlhcyJdICsgIl0iKTsgZG9jdW1l
bnQubG9jYXRpb24uaHJlZiA9IHoyOTQ1LnpjY2RkWyJkZWZhdWx0VXJsIl07IHJl
dHVybjsgfTsgfSBpZiAoIVdUT3B0aW1pemUuemM5MDEpIHsgejFhMjMuemZhOWMo
ZG9jdW1lbnQuYm9keSwgdGhpcy56MjNlYlsic19wYWdlRGlzcGxheU1vZGUiXSwg
dHJ1ZSk7IH0gV1RPcHRpbWl6ZS56ODhkMyhuZXcgV1RFdmVudChXVEV2ZW50LkRP
TkUsIGV2ZW50WyJzdGF0ZSJdKSk7IFdUT3B0aW1pemUuemUzYzIgPSB0cnVlOyB9
OyBXVEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHo5MzdkLCB0YXJnZXQsIHpjY2Rk
KSB7IGlmIChuYW1lKSB7IG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7IH0gdGhp
c1sibmFtZSJdID0gbmFtZTsgdGhpc1siaGFuZGxlciJdID0gbnVsbDsgdGhpc1si
c3RhdGUiXSA9IFdURXZlbnQuU1RBVFVTX1VOS05PV047IGlmICh6OTM3ZCkgeyB0
aGlzWyJzdGF0ZSJdID0gejkzN2Q7IH0gdGhpc1sidGFyZ2V0Il0gPSB0YXJnZXQ7
IHRoaXNbInBhcmFtcyJdID0ge307IGlmICh6Y2NkZCkgeyB0aGlzWyJwYXJhbXMi
XSA9IHpjY2RkOyB9IH07IFdURXZlbnQuejZmZDcgPSAiZG9tX29ubG9hZCI7IFdU
RXZlbnQuSElERVNIT1cgPSAiaGlkZV9zaG93IjsgV1RFdmVudC5DQVBJX0NPTkZJ
RyA9ICJjYXBpX2NvbmZpZyI7IFdURXZlbnQuejBjZjUgPSAiY2FwaV9jb25maWdf
cHJvY2Vzc2VkIjsgV1RFdmVudC56NDUxOSA9ICJ0aW1lciI7IFdURXZlbnQuSU5J
VElBTElaRSA9ICJpbml0aWFsaXplIjsgV1RFdmVudC5QUkVQQVJFID0gInByZXBh
cmUiOyBXVEV2ZW50LkNPTkZJR1VSRSA9ICJjb25maWd1cmUiOyBXVEV2ZW50LlBS
RVBST0NFU1MgPSAicHJlcHJvY2VzcyI7IFdURXZlbnQuUFJPQ0VTUyA9ICJwcm9j
ZXNzIjsgV1RFdmVudC56ZDkzOCA9ICJsaWJyYXJ5X2xvYWQiOyBXVEV2ZW50LklO
VkFMSUQgPSAiaW52YWxpZCI7IFdURXZlbnQuQUJPUlQgPSAiYWJvcnQiOyBXVEV2
ZW50LlBSRVJFTkRFUiA9ICJwcmVyZW5kZXIiOyBXVEV2ZW50LlJFTkRFUiA9ICJy
ZW5kZXIiOyBXVEV2ZW50LkRPTkUgPSAiZG9uZSI7IFdURXZlbnQuUEFHRVZJRVcg
PSAicGFnZXZpZXciOyBXVEV2ZW50LkNPTlZFUlNJT04gPSAiY29udmVyc2lvbiI7
IFdURXZlbnQuU1RBVFVTX1NVQ0NFU1MgPSAic3VjY2VzcyI7IFdURXZlbnQuU1RB
VFVTX0ZBVUxUID0gImZhdWx0IjsgV1RFdmVudC5TVEFUVVNfVU5LTk9XTiA9ICJ1
bmtub3duIjsgdGhpcy56ZDBiNyA9IGZ1bmN0aW9uIChuYW1lLCB6OTIwNCwgejU0
MzApIHsgaWYgKCFuYW1lIHx8ICghejkyMDQgJiYgIXo1NDMwKSkgeyB0aGlzLkRl
YnVnLno1ZDU5KCJldmVudHM6IENhbiBub3QgYWRkIGV2ZW50IGhhbmRsZXIsIG1p
c3NpbmcgbmFtZSBvciBsaXN0ZW5ycy4gIik7IHJldHVybjsgfSBuYW1lID0gbmFt
ZS50b0xvd2VyQ2FzZSgpOyBpZiAoIXRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVy
cyJdW25hbWVdKSB7IHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVycyJdW25hbWVd
ID0ge307IHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVycyJdW25hbWVdWyJzdWNj
ZXNzIl0gPSBbXTsgdGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1b
ImZhdWx0Il0gPSBbXTsgfSBpZiAoejkyMDQpIHsgdmFyIHpkZDAwID0gZmFsc2U7
IGZvciAodmFyIHoyMDVlID0gMDsgejIwNWUgPCB0aGlzLnoyM2ViWyJzX2V2ZW50
SGFuZGxlcnMiXVtuYW1lXVsic3VjY2VzcyJdLmxlbmd0aDsgejIwNWUrKykgeyBp
ZiAodGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1bInN1Y2Nlc3Mi
XVt6MjA1ZV0gPT0gejkyMDQpIHsgemRkMDAgPSB0cnVlOyBicmVhazsgfTsgfSBp
ZiAoIXpkZDAwKSB7IHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVycyJdW25hbWVd
WyJzdWNjZXNzIl0ucHVzaCh6OTIwNCk7IH07IH0gaWYgKHo1NDMwKSB7IHZhciB6
ZGQwMCA9IGZhbHNlOyBmb3IgKHZhciB6MTFiNiA9IDA7IHoxMWI2IDwgdGhpcy56
MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1bImZhdWx0Il0ubGVuZ3RoOyB6
MTFiNisrKSB7IGlmICh0aGlzLnoyM2ViWyJzX2V2ZW50SGFuZGxlcnMiXVtuYW1l
XVsiZmF1bHQiXVt6MTFiNl0gPT0gejkyMDQpIHsgemRkMDAgPSB0cnVlOyBicmVh
azsgfTsgfSBpZiAoIXpkZDAwKSB7IHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVy
cyJdW25hbWVdWyJmYXVsdCJdLnB1c2goejU0MzApOyB9OyB9IH07IHRoaXMuemEw
OTkgPSBmdW5jdGlvbiAobmFtZSwgejkyMDQsIHo1NDMwKSB7IGlmICghbmFtZSkg
eyB0aGlzLkRlYnVnLno1ZDU5KCJldmVudHM6IENhbiBub3QgcmVtb3ZlIGV2ZW50
IGhhbmRsZXIsIG1pc3NpbmcgbmFtZS4iKTsgcmV0dXJuOyB9IG5hbWUgPSBuYW1l
LnRvTG93ZXJDYXNlKCk7IGlmICghdGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJz
Il1bbmFtZV0pIHsgdGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV0g
PSB7fTsgdGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1bInN1Y2Nl
c3MiXSA9IFtdOyB0aGlzLnoyM2ViWyJzX2V2ZW50SGFuZGxlcnMiXVtuYW1lXVsi
ZmF1bHQiXSA9IFtdOyB9IGlmICghejkyMDQgJiYgIXo1NDMwKSB7IGRlbGV0ZSB0
aGlzLnoyM2ViWyJzX2V2ZW50SGFuZGxlcnMiXVtuYW1lXTsgcmV0dXJuOyB9IGlm
ICh6OTIwNCkgeyBmb3IgKHZhciB6MjA1ZSA9IDA7IHoyMDVlIDwgdGhpcy56MjNl
Ylsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1bInN1Y2Nlc3MiXS5sZW5ndGg7IHoy
MDVlKyspIHsgaWYgKHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVycyJdW25hbWVd
WyJzdWNjZXNzIl1bejIwNWVdID09IHo5MjA0KSB7IGRlbGV0ZSB0aGlzLnoyM2Vi
WyJzX2V2ZW50SGFuZGxlcnMiXVtuYW1lXVsic3VjY2VzcyJdW3oyMDVlXTsgYnJl
YWs7IH07IH07IH0gaWYgKHo1NDMwKSB7IGZvciAodmFyIHoxMWI2ID0gMDsgejEx
YjYgPCB0aGlzLnoyM2ViWyJzX2V2ZW50SGFuZGxlcnMiXVtuYW1lXVsiZmF1bHQi
XS5sZW5ndGg7IHoxMWI2KyspIHsgaWYgKHRoaXMuejIzZWJbInNfZXZlbnRIYW5k
bGVycyJdW25hbWVdWyJmYXVsdCJdW3oxMWI2XSA9PSB6OTIwNCkgeyBkZWxldGUg
dGhpcy56MjNlYlsic19ldmVudEhhbmRsZXJzIl1bbmFtZV1bImZhdWx0Il1bejEx
YjZdOyBicmVhazsgfTsgfTsgfSB9OyB0aGlzLno4OGQzID0gZnVuY3Rpb24gKGV2
ZW50LCBhc3luYywgejhkY2UpIHsgaWYgKFdUT3B0aW1pemUuemUzYzIgJiYgIXo4
ZGNlKSB7IFdUT3B0aW1pemUuRGVidWcuejFkYmIoImZpcmVFdmVudDogQWJvcnRl
ZCBkdWUgdG8gcHJpb3IgZXJyb3IsIGNoZWNrIGVycm9yIG1lc3NhZ2UgZm9yIGRl
dGFpbHMuIiwgMCk7IHJldHVybjsgfSBpZiAoIXRoaXMuejIzZWJbInNfZXZlbnRI
YW5kbGVycyJdW2V2ZW50WyJuYW1lIl1dKSB7IHRoaXMuRGVidWcuejVkNTkoImZp
cmVFdmVudDogbm8gcmVnaXN0ZXJlZCBldmVudCB3YXMgZm91bmQgZm9yIGV2ZW50
IG5hbWU6ICIgKyBldmVudFsibmFtZSJdKTsgcmV0dXJuOyB9IHZhciB6NjkwNyA9
IHRoaXMuejIzZWJbInNfZXZlbnRIYW5kbGVycyJdW2V2ZW50WyJuYW1lIl1dW2V2
ZW50WyJzdGF0ZSJdXTsgaWYgKCF6NjkwNykgeyB0aGlzLkRlYnVnLno1ZDU5KCJm
aXJlRXZlbnQ6IG5vIGV2ZW50IGhhbmRsZXIgd2FzIHJlZ2lzdGVyZWQgZm9yIGV2
ZW50OiAiICsgZXZlbnRbIm5hbWUiXSArICIgc3RhdGU6ICIgKyBldmVudFsic3Rh
dGUiXSk7IHJldHVybjsgfSBmb3IgKHZhciB6MjA1ZSA9IDA7IHoyMDVlIDwgejY5
MDcubGVuZ3RoOyB6MjA1ZSsrKSB7IGlmICghejY5MDdbejIwNWVdKSB7IGNvbnRp
bnVlOyB9IHRyeSB7IGV2ZW50WyJoYW5kbGVyIl0gPSB6NjkwN1t6MjA1ZV07IGV2
ZW50WyJwYXJhbXMiXVsiZXZlbnRJRCJdID0gKG5ldyBEYXRlKCkpLmdldFRpbWUo
KTsgdGhpcy5EZWJ1Zy56NWQ1OSgiZmlyZUV2ZW50OiBbbmFtZToiICsgZXZlbnRb
Im5hbWUiXSArICIsIHN0YXRlOiIgKyBldmVudFsic3RhdGUiXSArICIsIGZ1bmN0
aW9uOiIgKyBldmVudFsiaGFuZGxlciJdLnRvU3RyaW5nKCkgKyAiXSIpOyBpZiAo
YXN5bmMpIHsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGV2ZW50WyJoYW5kbGVy
Il0oZXZlbnQpOyB9LCAwKTsgfSBlbHNlIHsgZXZlbnRbImhhbmRsZXIiXShldmVu
dCk7IH0gfSBjYXRjaCAoejM5MmMpIHsgdGhpcy5EZWJ1Zy56MWRiYigiVW5oYW5k
bGVkIEV2ZW50IEV4Y2VwdGlvbiwgW25hbWU6ICIgKyBldmVudFsibmFtZSJdICsg
Iiwgc3RhdGU6ICIgKyBldmVudFsic3RhdGUiXSArICIsIGZ1bmN0aW9uOiAiICsg
ZXZlbnRbImhhbmRsZXIiXS50b1N0cmluZygpICsgIl0iLCAwLCB6MzkyYyk7IH07
IH0gfTsgdGhpcy56MjJmNyA9IGZ1bmN0aW9uICgpIHsgdGhpcy56NmMzOCA9IC0x
OyB0aGlzLno0NzA2ID0gZmFsc2U7IHRoaXMuejVkYmUgPSBmYWxzZTsgdmFyIHpk
NDBlID0gW107IHRoaXMuejJkYzUgPSBudWxsOyB2YXIgemVkOWIgPSBmYWxzZTsg
dmFyIEVSUk9SID0gMDsgdmFyIHo5MWVjID0gMTsgdmFyIHpkYjQxID0gMjsgdmFy
IHo5MTE4ID0gMzsgdGhpcy5sb2dJbmZvID0gZnVuY3Rpb24gKHowODZhKSB7IHRo
aXMuejUwNjAoejA4NmEpOyB9OyB0aGlzLmxvZ0RlYnVnID0gZnVuY3Rpb24gKHow
ODZhKSB7IHRoaXMuemZkYTcoejA4NmEpOyB9OyB0aGlzLmxvZ1RyYWNlID0gZnVu
Y3Rpb24gKHowODZhKSB7IHRoaXMuejVkNTkoejA4NmEpOyB9OyB0aGlzLmxvZ0Vy
cm9yID0gZnVuY3Rpb24gKHowODZhLCBjb2RlLCB6MzkyYykgeyB0aGlzLnoxZGJi
KHowODZhLCBjb2RlLCB6MzkyYyk7IH07IHRoaXMuejVkNTkgPSBmdW5jdGlvbiAo
ejA4NmEpIHsgdGhpcy56OTRjYSh6OTExOCwgejA4NmEpOyB9OyB0aGlzLnpmZGE3
ID0gZnVuY3Rpb24gKHowODZhKSB7IHRoaXMuejk0Y2EoemRiNDEsIHowODZhKTsg
fTsgdGhpcy56NTA2MCA9IGZ1bmN0aW9uICh6MDg2YSkgeyB0aGlzLno5NGNhKHo5
MWVjLCB6MDg2YSk7IH07IHRoaXMuejFkYmIgPSBmdW5jdGlvbiAoejA4NmEsIGNv
ZGUsIHozOTJjKSB7IGlmICghY29kZSkgeyBjb2RlID0gIiI7IH0gZWxzZSB7IGNv
ZGUgPSAiKCIgKyBjb2RlICsgIikgIjsgfSB2YXIgejk2Y2YgPSBjb2RlICsgejA4
NmEgKyAoejM5MmMgPyAiXG4iICsgejM5MmNbIm1lc3NhZ2UiXSArICh6MzkyY1si
bmFtZSJdID8gIiBbIiArIHozOTJjWyJuYW1lIl0gKyAiXSIgOiAiIikgKyAoejM5
MmNbImZpbGVOYW1lIl0gPyAiXG4gKCIgKyB6MzkyY1siZmlsZU5hbWUiXSArICI6
IiArIHozOTJjWyJsaW5lTnVtYmVyIl0gKyAiKVxuIiArIHozOTJjWyJzdGFjayJd
IDogIiIpIDogIiIpOyB0aGlzLno5NGNhKEVSUk9SLCB6OTZjZik7IH07IHRoaXMu
ejk0Y2EgPSBmdW5jdGlvbiAoemY3YzUsIHowODZhKSB7IGlmICgoIXRoaXMuejJk
YzUgfHwgIXRoaXMuejQ3MDYpICYmICF0aGlzLno1ZGJlKSB7IHpkNDBlLnB1c2go
W3pmN2M1LCB6MDg2YV0pOyB9IGlmICh0aGlzLno1ZGJlKSB7IHpkNDBlID0gW107
IHJldHVybjsgfSBpZiAodGhpcy56NmMzOCA8IHpmN2M1KSB7IHJldHVybjsgfSBp
ZiAodGhpcy56MmRjNSkgeyB0aGlzLnoyZGM1LnoyZTQ3KHpmN2M1LCB6MDg2YSk7
IH0gfTsgdGhpcy5yZWZyZXNoID0gZnVuY3Rpb24gKHo5MzdkKSB7IHRoaXMuejQ3
MDYgPSB6OTM3ZDsgaWYgKHRoaXMuejJkYzUgJiYgejkzN2QpIHsgdGhpcy56MmRj
NS56OGM3Yyh6ZDQwZSk7IHpkNDBlID0gW107IH0gZWxzZSB7IGlmICh0aGlzLno2
YzM4ID4gMCAmJiAhemVkOWIpIHsgemVkOWIgPSB0cnVlOyB2YXIgemJhZGUgPSB7
fTsgemJhZGVbInR5cGUiXSA9ICJ0ZXh0L2phdmFzY3JpcHQiOyB6YmFkZVsiYXN5
bmMiXSA9ICJ0cnVlIjsgemJhZGVbImRlZmVyIl0gPSAidHJ1ZSI7IHpiYWRlWyJz
cmMiXSA9IHoxYTIzLnoyM2ViWyJzX290c0RlYnVnZ2VyTGliVXJsIl07IHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeyB6MWEyMy56ZTgyYigic2NyaXB0IiwgemJhZGUs
IG51bGwsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0p
OyB9LCAwKTsgfTsgfSB9OyB9OyB0aGlzLnplODJiID0gZnVuY3Rpb24gKHR5cGUs
IHpiYWRlLCB6ZmNlOSwgcGFyZW50LCB6OTUyMCkgeyBpZiAoIXo5NTIwKSB7IGlm
IChwYXJlbnQpIHsgejk1MjAgPSBwYXJlbnQub3duZXJEb2N1bWVudDsgfSBpZiAo
IXo5NTIwKSB7IHo5NTIwID0gZG9jdW1lbnQ7IH07IH0gdmFyIG4gPSB6OTUyMC5j
cmVhdGVFbGVtZW50KHR5cGUpOyBpZiAoemJhZGUpIHsgZm9yICh2YXIgejIwNWUg
aW4gemJhZGUpIHsgaWYgKHpiYWRlW3oyMDVlXSAmJiB6YmFkZS5oYXNPd25Qcm9w
ZXJ0eSh6MjA1ZSkpIHsgbi5zZXRBdHRyaWJ1dGUoejIwNWUsIHpiYWRlW3oyMDVl
XSk7IH07IH07IH0gaWYgKHpmY2U5KSB7IGZvciAodmFyIHozOTJjIGluIHpmY2U5
KSB7IGlmICh6ZmNlOVt6MzkyY10gJiYgemZjZTkuaGFzT3duUHJvcGVydHkoejM5
MmMpKSB7IHoxYTIzLno5ZDVhKG4sIHozOTJjLCB6ZmNlOVt6MzkyY10pOyB9OyB9
OyB9IGlmIChwYXJlbnQpIHsgcGFyZW50LmFwcGVuZENoaWxkKG4pOyB9IHJldHVy
biBuOyB9OyB0aGlzLno5NWU4KCk7IH07IHZhciBXVE9wdGltaXplID0gbmV3IHow
NjkxKCk7IFdUT3B0aW1pemUubG9va3VwID0gZnVuY3Rpb24gKHZhbHVlLCB0eXBl
KSB7IGZvciAodmFyIHoyMDVlID0gMDsgejIwNWUgPCB0aGlzLnoyYjIwLmxlbmd0
aDsgejIwNWUrKykgeyB2YXIgemFlNzQgPSB0aGlzLnoyYjIwW3oyMDVlXTsgaWYg
KHphZTc0LnpjY2RkWyJ0ZXN0QWxpYXMiXSA9PSB2YWx1ZSAmJiAoIXR5cGUgfHwg
dHlwZSA9PSB6YWU3NC56Y2NkZFsic19yZXF1ZXN0VHlwZSJdKSkgeyByZXR1cm4g
emFlNzQ7IH07IH0gfTsgV1RPcHRpbWl6ZS5zZXR1cCA9IGZ1bmN0aW9uICh6YTY5
ZCwgejYwNmEpIHsgdHJ5IHsgaWYgKFdUT3B0aW1pemUuemUzYzIpIHsgV1RPcHRp
bWl6ZS5EZWJ1Zy56MWRiYigic2V0dXA6IEFib3J0ZWQgZHVlIHRvIHByaW9yIGVy
cm9yLCBjaGVjayBlcnJvciBtZXNzYWdlIGZvciBkZXRhaWxzLiIsIDApOyByZXR1
cm47IH0gdmFyIHpjY2RkID0ge307IGlmICh0eXBlb2YgKHphNjlkKSA9PSAib2Jq
ZWN0IikgeyB6Y2NkZCA9IHphNjlkOyB9IGVsc2UgaWYgKHR5cGVvZiAoemE2OWQp
ID09ICJzdHJpbmciKSB7IGlmICh0eXBlb2YgKHo2MDZhKSAhPSAidW5kZWZpbmVk
IikgeyB6Y2NkZCA9IHo2MDZhOyB9IHpjY2RkWyJ0ZXN0QWxpYXMiXSA9IHphNjlk
OyB9IHpjY2RkWyJzX3JlcXVlc3RUeXBlIl0gPSAiY29udHJvbCI7IGlmICghV1RP
cHRpbWl6ZS56YzkwMSkgeyB2YXIgejBmZWUgPSB0aGlzOyBXVE9wdGltaXplLnpk
MGI3KFdURXZlbnQuejBjZjUsIChmdW5jdGlvbiAoKSB7IHowZmVlLnozZTI5KHpj
Y2RkKTsgfSkpOyBXVE9wdGltaXplLnpmYTljKGRvY3VtZW50LmJvZHksIHRoaXMu
ejIzZWJbInNfcGFnZURpc3BsYXlNb2RlIl0sIGZhbHNlKTsgfSBlbHNlIHsgdGhp
cy56M2UyOSh6Y2NkZCk7IH0gfSBjYXRjaCAoejM5MmMpIHsgV1RPcHRpbWl6ZS5E
ZWJ1Zy56MWRiYigic2V0dXA6IEZhdGFsIGVycm9yLCBjaGVjayBlcnJvciBtZXNz
YWdlIGZvciBkZXRhaWxzLiIsIDAsIHozOTJjKTsgdmFyIGV2ZW50ID0gbmV3IFdU
RXZlbnQoKHozOTJjLnpiZWU5ID8gejM5MmMuemJlZTkgOiBXVEV2ZW50LkFCT1JU
KSwgV1RFdmVudC5TVEFUVVNfRkFVTFQsIHRoaXMpOyBldmVudC56Y2NkZFsiZXJy
b3IiXSA9IHozOTJjOyBXVE9wdGltaXplLno4OGQzKGV2ZW50KTsgfSB9OyBXVE9w
dGltaXplLmNvbnZlcnNpb24gPSBmdW5jdGlvbiAoemE2OWQsIHo2MDZhLCB6NTFl
NSkgeyB2YXIgemNjZGQgPSB7fTsgdHJ5IHsgaWYgKFdUT3B0aW1pemUuemUzYzIp
IHsgV1RPcHRpbWl6ZS5EZWJ1Zy56MWRiYigiY29udmVyc2lvbjogQWJvcnRlZCBk
dWUgdG8gcHJpb3IgZXJyb3IsIGNoZWNrIGVycm9yIG1lc3NhZ2UgZm9yIGRldGFp
bHMuIiwgMCk7IHJldHVybiB0cnVlOyB9IGlmICh0eXBlb2YgKHphNjlkKSA9PSAi
b2JqZWN0IikgeyB6Y2NkZCA9IHphNjlkOyB9IGVsc2UgaWYgKHR5cGVvZiAoemE2
OWQpID09ICJzdHJpbmciKSB7IGlmICh0eXBlb2YgKHo2MDZhKSAhPSAidW5kZWZp
bmVkIikgeyBpZiAodHlwZW9mICh6NjA2YSkgPT0gIm9iamVjdCIgJiYgejYwNmEu
aHJlZikgeyBpZiAodHlwZW9mICh6NTFlNSkgIT0gInVuZGVmaW5lZCIpIHsgemNj
ZGQgPSB6NTFlNTsgfSB6Y2NkZFsicl9yZWRpcmVjdFVybCJdID0gejYwNmEuaHJl
ZjsgemNjZGRbInJfcmVkaXJlY3RMaW5rVGFyZ2V0Il0gPSB6NjA2YS50YXJnZXQ7
IHpjY2RkWyJyX3JlZGlyZWN0TGluayJdID0gejYwNmE7IHo2MDZhLmhyZWYgPSAi
amF2YXNjcmlwdDp2b2lkKDApOyI7IHo2MDZhLnRhcmdldCA9ICIiOyB9IGVsc2Ug
eyB6Y2NkZCA9IHo2MDZhOyB9OyB9IHpjY2RkWyJ0ZXN0QWxpYXMiXSA9IHphNjlk
OyB9IHpjY2RkWyJzX3JlcXVlc3RUeXBlIl0gPSAiY29udmVyc2lvbiI7IFdUT3B0
aW1pemUuemEwOTkoV1RFdmVudC5DT05UUk9MX1JFU1BPTlNFKTsgaWYgKCFXVE9w
dGltaXplLnpjOTAxKSB7IHZhciB6MGZlZSA9IHRoaXM7IFdUT3B0aW1pemUuemQw
YjcoV1RFdmVudC5DQVBJX0NPTkZJRywgKGZ1bmN0aW9uICgpIHsgejBmZWUuejNl
MjkoemNjZGQpOyB9KSk7IH0gZWxzZSB7IHRoaXMuejNlMjkoemNjZGQpOyB9IHJl
dHVybiBmYWxzZTsgfSBjYXRjaCAoejM5MmMpIHsgaWYgKHR5cGVvZiAoejYwNmEp
ID09ICJvYmplY3QiICYmIHo2MDZhLmhyZWYgJiYgemNjZGRbInJfcmVkaXJlY3RM
aW5rIl0gPT09IHo2MDZhKSB7IHo2MDZhLmhyZWYgPSB6Y2NkZFsicl9yZWRpcmVj
dFVybCJdOyB6NjA2YS50YXJnZXQgPSB6Y2NkZFsicl9yZWRpcmVjdExpbmtUYXJn
ZXQiXTsgfSBXVE9wdGltaXplLkRlYnVnLnoxZGJiKCJjb252ZXJzaW9uOiBGYXRh
bCBlcnJvciwgY2hlY2sgZXJyb3IgbWVzc2FnZSBmb3IgZGV0YWlscy4iLCAwLCB6
MzkyYyk7IHZhciBldmVudCA9IG5ldyBXVEV2ZW50KCh6MzkyYy56YmVlOSA/IHoz
OTJjLnpiZWU5IDogV1RFdmVudC5BQk9SVCksIFdURXZlbnQuU1RBVFVTX0ZBVUxU
LCB0aGlzKTsgZXZlbnQuemNjZGRbImVycm9yIl0gPSB6MzkyYzsgV1RPcHRpbWl6
ZS56ODhkMyhldmVudCk7IHJldHVybiB0cnVlOyB9IH07IFdUT3B0aW1pemUuYWRk
RXZlbnRIYW5kbGVyID0gZnVuY3Rpb24gKG5hbWUsIHo5MjA0LCB6NTQzMCkgeyB0
aGlzLnpkMGI3KG5hbWUsIHo5MjA0LCB6NTQzMCk7IH07IFdUT3B0aW1pemUucmVt
b3ZlRXZlbnRIYW5kbGVyID0gZnVuY3Rpb24gKG5hbWUsIHo5MjA0LCB6NTQzMCkg
eyB0aGlzLnphMDk5KG5hbWUsIHo5MjA0LCB6NTQzMCk7IH07IFdUT3B0aW1pemUu
ZmlyZUV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50LCBhc3luYykgeyB0aGlzLno4OGQz
KGV2ZW50LCBhc3luYyk7IH07IGlmICghdGhpcy56OTI0OSkgeyB6OTI0OSA9IHt9
OyB9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIHpkMDgxKG4pIHsgcmV0dXJuIG4g
PCAxMCA/ICcwJyArIG4gOiBuOyB9OyBpZiAodHlwZW9mIERhdGUucHJvdG90eXBl
LnpiMGY2ICE9PSAnZnVuY3Rpb24nKSB7IERhdGUucHJvdG90eXBlLnpiMGY2ID0g
ZnVuY3Rpb24gKHoyMTg2KSB7IHJldHVybiB0aGlzLmdldFVUQ0Z1bGxZZWFyKCkg
KyAnLScgKyB6ZDA4MSh0aGlzLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArIHpk
MDgxKHRoaXMuZ2V0VVRDRGF0ZSgpKSArICdUJyArIHpkMDgxKHRoaXMuZ2V0VVRD
SG91cnMoKSkgKyAnOicgKyB6ZDA4MSh0aGlzLmdldFVUQ01pbnV0ZXMoKSkgKyAn
OicgKyB6ZDA4MSh0aGlzLmdldFVUQ1NlY29uZHMoKSkgKyAnWic7IH07IFN0cmlu
Zy5wcm90b3R5cGUuemIwZjYgPSBOdW1iZXIucHJvdG90eXBlLnpiMGY2ID0gQm9v
bGVhbi5wcm90b3R5cGUuemIwZjYgPSBmdW5jdGlvbiAoejIxODYpIHsgcmV0dXJu
IHRoaXMudmFsdWVPZigpOyB9OyB9IHZhciBjeCA9IC9bXHUwMDAwXHUwMGFkXHUw
NjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgt
XHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csIHo4MDI3
ID0gL1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1
MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYw
LVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csIHo2ZjM4LCBpbmRlbnQsIHpk
NTc4ID0geyAnXGInOiAnXFxiJywgJ1x0JzogJ1xcdCcsICdcbic6ICdcXG4nLCAn
XGYnOiAnXFxmJywgJ1xyJzogJ1xccicsICciJzogJ1xcIicsICdcXCc6ICdcXFxc
JyB9LCB6ZjBiNTsgZnVuY3Rpb24gcXVvdGUoemQwM2MpIHsgejgwMjcubGFzdElu
ZGV4ID0gMDsgcmV0dXJuIHo4MDI3LnRlc3QoemQwM2MpID8gJyInICsgemQwM2Mu
cmVwbGFjZSh6ODAyNywgZnVuY3Rpb24gKHphMThmKSB7IHZhciB6ODQwMyA9IHpk
NTc4W3phMThmXTsgcmV0dXJuIHR5cGVvZiB6ODQwMyA9PT0gJ3N0cmluZycgPyB6
ODQwMyA6ICdcXHUnICsgKCcwMDAwJyArIHphMThmLmNoYXJDb2RlQXQoMCkudG9T
dHJpbmcoMTYpKS5zbGljZSgtNCk7IH0pICsgJyInIDogJyInICsgemQwM2MgKyAn
Iic7IH07IGZ1bmN0aW9uIHowODZhKHoyMTg2LCB6NGU5OCkgeyB2YXIgejIwNWUs
IHo4ODM2LCB6MjQ1NSwgbGVuZ3RoLCB6YmZhZiA9IHo2ZjM4LCB6MTI2YiwgdmFs
dWUgPSB6NGU5OFt6MjE4Nl07IGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09
ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS56YjBmNiA9PT0gJ2Z1bmN0aW9uJykg
eyB2YWx1ZSA9IHZhbHVlLnpiMGY2KHoyMTg2KTsgfSBpZiAodHlwZW9mIHpmMGI1
ID09PSAnZnVuY3Rpb24nKSB7IHZhbHVlID0gemYwYjUuY2FsbCh6NGU5OCwgejIx
ODYsIHZhbHVlKTsgfSBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkgeyBjYXNlICdzdHJp
bmcnOiByZXR1cm4gcXVvdGUodmFsdWUpOyBjYXNlICdudW1iZXInOiByZXR1cm4g
aXNGaW5pdGUodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6ICdudWxsJzsgY2FzZSAn
Ym9vbGVhbic6IGNhc2UgJ251bGwnOiByZXR1cm4gU3RyaW5nKHZhbHVlKTsgY2Fz
ZSAnb2JqZWN0JzogaWYgKCF2YWx1ZSkgeyByZXR1cm4gJ251bGwnOyB9IHo2ZjM4
ICs9IGluZGVudDsgejEyNmIgPSBbXTsgaWYgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuYXBwbHkodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nKSB7IGxlbmd0
aCA9IHZhbHVlLmxlbmd0aDsgZm9yICh6MjA1ZSA9IDA7IHoyMDVlIDwgbGVuZ3Ro
OyB6MjA1ZSArPSAxKSB7IHoxMjZiW3oyMDVlXSA9IHowODZhKHoyMDVlLCB2YWx1
ZSkgfHwgJ251bGwnOyB9IHoyNDU1ID0gejEyNmIubGVuZ3RoID09PSAwID8gJ1td
JyA6IHo2ZjM4ID8gJ1tcbicgKyB6NmYzOCArIHoxMjZiLmpvaW4oJyxcbicgKyB6
NmYzOCkgKyAnXG4nICsgemJmYWYgKyAnXScgOiAnWycgKyB6MTI2Yi5qb2luKCcs
JykgKyAnXSc7IHo2ZjM4ID0gemJmYWY7IHJldHVybiB6MjQ1NTsgfSBpZiAoemYw
YjUgJiYgdHlwZW9mIHpmMGI1ID09PSAnb2JqZWN0JykgeyBsZW5ndGggPSB6ZjBi
NS5sZW5ndGg7IGZvciAoejIwNWUgPSAwOyB6MjA1ZSA8IGxlbmd0aDsgejIwNWUg
Kz0gMSkgeyB6ODgzNiA9IHpmMGI1W3oyMDVlXTsgaWYgKHR5cGVvZiB6ODgzNiA9
PT0gJ3N0cmluZycpIHsgejI0NTUgPSB6MDg2YSh6ODgzNiwgdmFsdWUpOyBpZiAo
ejI0NTUpIHsgejEyNmIucHVzaChxdW90ZSh6ODgzNikgKyAoejZmMzggPyAnOiAn
IDogJzonKSArIHoyNDU1KTsgfTsgfTsgfTsgfSBlbHNlIHsgZm9yICh6ODgzNiBp
biB2YWx1ZSkgeyBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUs
IHo4ODM2KSkgeyB6MjQ1NSA9IHowODZhKHo4ODM2LCB2YWx1ZSk7IGlmICh6MjQ1
NSkgeyB6MTI2Yi5wdXNoKHF1b3RlKHo4ODM2KSArICh6NmYzOCA/ICc6ICcgOiAn
OicpICsgejI0NTUpOyB9OyB9OyB9OyB9IHoyNDU1ID0gejEyNmIubGVuZ3RoID09
PSAwID8gJ3t9JyA6IHo2ZjM4ID8gJ3tcbicgKyB6NmYzOCArIHoxMjZiLmpvaW4o
JyxcbicgKyB6NmYzOCkgKyAnXG4nICsgemJmYWYgKyAnfScgOiAneycgKyB6MTI2
Yi5qb2luKCcsJykgKyAnfSc7IHo2ZjM4ID0gemJmYWY7IHJldHVybiB6MjQ1NTsg
fTsgfTsgaWYgKHR5cGVvZiB6OTI0OS56NGIxZiAhPT0gJ2Z1bmN0aW9uJykgeyB6
OTI0OS56NGIxZiA9IGZ1bmN0aW9uICh2YWx1ZSwgejIyNmYsIHoyZDcwKSB7IHZh
ciB6MjA1ZTsgejZmMzggPSAnJzsgaW5kZW50ID0gJyc7IGlmICh0eXBlb2YgejJk
NzAgPT09ICdudW1iZXInKSB7IGZvciAoejIwNWUgPSAwOyB6MjA1ZSA8IHoyZDcw
OyB6MjA1ZSArPSAxKSB7IGluZGVudCArPSAnICc7IH0gfSBlbHNlIGlmICh0eXBl
b2YgejJkNzAgPT09ICdzdHJpbmcnKSB7IGluZGVudCA9IHoyZDcwOyB9IHpmMGI1
ID0gejIyNmY7IGlmICh6MjI2ZiAmJiB0eXBlb2YgejIyNmYgIT09ICdmdW5jdGlv
bicgJiYgKHR5cGVvZiB6MjI2ZiAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHoyMjZm
Lmxlbmd0aCAhPT0gJ251bWJlcicpKSB7IHRocm93IG5ldyBFcnJvcignSlNPTi5z
dHJpbmdpZnknKTsgfSByZXR1cm4gejA4NmEoJycsIHsgJyc6IHZhbHVlIH0pOyB9
OyB9IGlmICh0eXBlb2YgejkyNDkucGFyc2UgIT09ICdmdW5jdGlvbicpIHsgejky
NDkucGFyc2UgPSBmdW5jdGlvbiAodGV4dCwgemZmZWEpIHsgdmFyIHpkNGYwOyBm
dW5jdGlvbiB6ZjU0MCh6NGU5OCwgejIxODYpIHsgdmFyIHo4ODM2LCB6MjQ1NSwg
dmFsdWUgPSB6NGU5OFt6MjE4Nl07IGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUg
PT09ICdvYmplY3QnKSB7IGZvciAoejg4MzYgaW4gdmFsdWUpIHsgaWYgKE9iamVj
dC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCB6ODgzNikpIHsgejI0NTUgPSB6
ZjU0MCh2YWx1ZSwgejg4MzYpOyBpZiAoejI0NTUgIT09IHVuZGVmaW5lZCkgeyB2
YWx1ZVt6ODgzNl0gPSB6MjQ1NTsgfSBlbHNlIHsgZGVsZXRlIHZhbHVlW3o4ODM2
XTsgfTsgfTsgfTsgfSByZXR1cm4gemZmZWEuY2FsbCh6NGU5OCwgejIxODYsIHZh
bHVlKTsgfTsgY3gubGFzdEluZGV4ID0gMDsgaWYgKGN4LnRlc3QodGV4dCkpIHsg
dGV4dCA9IHRleHQucmVwbGFjZShjeCwgZnVuY3Rpb24gKHphMThmKSB7IHJldHVy
biAnXFx1JyArICgnMDAwMCcgKyB6YTE4Zi5jaGFyQ29kZUF0KDApLnRvU3RyaW5n
KDE2KSkuc2xpY2UoLTQpOyB9KTsgfSBpZiAoL15bXF0sOnt9XHNdKiQvLnRlc3Qo
dGV4dC5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0p
L2csICdAJykucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8
LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csICddJykucmVwbGFj
ZSgvKD86Xnw6fCwpKD86XHMqXFspKy9nLCAnJykpKSB7IHpkNGYwID0gZXZhbCgn
KCcgKyB0ZXh0ICsgJyknKTsgcmV0dXJuIHR5cGVvZiB6ZmZlYSA9PT0gJ2Z1bmN0
aW9uJyA/IHpmNTQwKHsgJyc6IHpkNGYwIH0sICcnKSA6IHpkNGYwOyB9IHRocm93
IG5ldyBTeW50YXhFcnJvcignSlNPTi5wYXJzZScpOyB9OyB9IH0pKCk7DQoNCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery-1.7.1.js
Content-Type: application/x-javascript; name=jquery-1.7.1.js
Content-Location: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js
Content-Transfer-Encoding: Base64
LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNy4xCiAqIGh0dHA6
Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMSwgSm9obiBSZXNpZwog
KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs
aWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNs
dWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJp
Z2h0IDIwMTEsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIg
dGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBNb24g
Tm92IDIxIDIxOjExOjAzIDIwMTEgLTA1MDAKICovCihmdW5jdGlvbiggd2luZG93
LCB1bmRlZmluZWQgKSB7CgovLyBVc2UgdGhlIGNvcnJlY3QgZG9jdW1lbnQgYWNj
b3JkaW5nbHkgd2l0aCB3aW5kb3cgYXJndW1lbnQgKHNhbmRib3gpCnZhciBkb2N1
bWVudCA9IHdpbmRvdy5kb2N1bWVudCwKCW5hdmlnYXRvciA9IHdpbmRvdy5uYXZp
Z2F0b3IsCglsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsKdmFyIGpRdWVyeSA9
IChmdW5jdGlvbigpIHsKCi8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5
CnZhciBqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CgkJ
Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBj
b25zdHJ1Y3RvciAnZW5oYW5jZWQnCgkJcmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5p
dCggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3RqUXVlcnkgKTsKCX0sCgoJLy8gTWFw
IG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCglfalF1ZXJ5ID0gd2lu
ZG93LmpRdWVyeSwKCgkvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3
cml0ZQoJXyQgPSB3aW5kb3cuJCwKCgkvLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRv
IHRoZSByb290IGpRdWVyeShkb2N1bWVudCkKCXJvb3RqUXVlcnksCgoJLy8gQSBz
aW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Mgb3IgSUQgc3RyaW5n
cwoJLy8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1Mgdmlh
IGxvY2F0aW9uLmhhc2ggKCM5NTIxKQoJcXVpY2tFeHByID0gL14oPzpbXiM8XSoo
PFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLAoKCS8vIENoZWNrIGlmIGEg
c3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBpbiBpdAoJcm5v
dHdoaXRlID0gL1xTLywKCgkvLyBVc2VkIGZvciB0cmltbWluZyB3aGl0ZXNwYWNl
Cgl0cmltTGVmdCA9IC9eXHMrLywKCXRyaW1SaWdodCA9IC9ccyskLywKCgkvLyBN
YXRjaCBhIHN0YW5kYWxvbmUgdGFnCglyc2luZ2xlVGFnID0gL148KFx3Kylccypc
Lz8+KD86PFwvXDE+KT8kLywKCgkvLyBKU09OIFJlZ0V4cAoJcnZhbGlkY2hhcnMg
PSAvXltcXSw6e31cc10qJC8sCglydmFsaWRlc2NhcGUgPSAvXFwoPzpbIlxcXC9i
Zm5ydF18dVswLTlhLWZBLUZdezR9KS9nLAoJcnZhbGlkdG9rZW5zID0gLyJbXiJc
XFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1b
K1wtXT9cZCspPy9nLAoJcnZhbGlkYnJhY2VzID0gLyg/Ol58OnwsKSg/OlxzKlxb
KSsvZywKCgkvLyBVc2VyYWdlbnQgUmVnRXhwCglyd2Via2l0ID0gLyh3ZWJraXQp
WyBcL10oW1x3Ll0rKS8sCglyb3BlcmEgPSAvKG9wZXJhKSg/Oi4qdmVyc2lvbik/
WyBcL10oW1x3Ll0rKS8sCglybXNpZSA9IC8obXNpZSkgKFtcdy5dKykvLAoJcm1v
emlsbGEgPSAvKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLAoKCS8vIE1h
dGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZwoJcmRhc2hBbHBoYSA9
IC8tKFthLXpdfFswLTldKS9pZywKCXJtc1ByZWZpeCA9IC9eLW1zLS8sCgoJLy8g
VXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2Uo
KQoJZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHsKCQlyZXR1
cm4gKCBsZXR0ZXIgKyAiIiApLnRvVXBwZXJDYXNlKCk7Cgl9LAoKCS8vIEtlZXAg
YSBVc2VyQWdlbnQgc3RyaW5nIGZvciB1c2Ugd2l0aCBqUXVlcnkuYnJvd3NlcgoJ
dXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudCwKCgkvLyBGb3IgbWF0Y2hp
bmcgdGhlIGVuZ2luZSBhbmQgdmVyc2lvbiBvZiB0aGUgYnJvd3NlcgoJYnJvd3Nl
ck1hdGNoLAoKCS8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeQoJcmVh
ZHlMaXN0LAoKCS8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyCglET01Db250ZW50
TG9hZGVkLAoKCS8vIFNhdmUgYSByZWZlcmVuY2UgdG8gc29tZSBjb3JlIG1ldGhv
ZHMKCXRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywKCWhhc093
biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksCglwdXNoID0gQXJy
YXkucHJvdG90eXBlLnB1c2gsCglzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGlj
ZSwKCXRyaW0gPSBTdHJpbmcucHJvdG90eXBlLnRyaW0sCglpbmRleE9mID0gQXJy
YXkucHJvdG90eXBlLmluZGV4T2YsCgoJLy8gW1tDbGFzc11dIC0+IHR5cGUgcGFp
cnMKCWNsYXNzMnR5cGUgPSB7fTsKCmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5
cGUgPSB7Cgljb25zdHJ1Y3RvcjogalF1ZXJ5LAoJaW5pdDogZnVuY3Rpb24oIHNl
bGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICkgewoJCXZhciBtYXRjaCwgZWxl
bSwgcmV0LCBkb2M7CgoJCS8vIEhhbmRsZSAkKCIiKSwgJChudWxsKSwgb3IgJCh1
bmRlZmluZWQpCgkJaWYgKCAhc2VsZWN0b3IgKSB7CgkJCXJldHVybiB0aGlzOwoJ
CX0KCgkJLy8gSGFuZGxlICQoRE9NRWxlbWVudCkKCQlpZiAoIHNlbGVjdG9yLm5v
ZGVUeXBlICkgewoJCQl0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2VsZWN0b3I7
CgkJCXRoaXMubGVuZ3RoID0gMTsKCQkJcmV0dXJuIHRoaXM7CgkJfQoKCQkvLyBU
aGUgYm9keSBlbGVtZW50IG9ubHkgZXhpc3RzIG9uY2UsIG9wdGltaXplIGZpbmRp
bmcgaXQKCQlpZiAoIHNlbGVjdG9yID09PSAiYm9keSIgJiYgIWNvbnRleHQgJiYg
ZG9jdW1lbnQuYm9keSApIHsKCQkJdGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7CgkJ
CXRoaXNbMF0gPSBkb2N1bWVudC5ib2R5OwoJCQl0aGlzLnNlbGVjdG9yID0gc2Vs
ZWN0b3I7CgkJCXRoaXMubGVuZ3RoID0gMTsKCQkJcmV0dXJuIHRoaXM7CgkJfQoK
CQkvLyBIYW5kbGUgSFRNTCBzdHJpbmdzCgkJaWYgKCB0eXBlb2Ygc2VsZWN0b3Ig
PT09ICJzdHJpbmciICkgewoJCQkvLyBBcmUgd2UgZGVhbGluZyB3aXRoIEhUTUwg
c3RyaW5nIG9yIGFuIElEPwoJCQlpZiAoIHNlbGVjdG9yLmNoYXJBdCgwKSA9PT0g
IjwiICYmIHNlbGVjdG9yLmNoYXJBdCggc2VsZWN0b3IubGVuZ3RoIC0gMSApID09
PSAiPiIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7CgkJCQkvLyBBc3N1bWUg
dGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1M
IGFuZCBza2lwIHRoZSByZWdleCBjaGVjawoJCQkJbWF0Y2ggPSBbIG51bGwsIHNl
bGVjdG9yLCBudWxsIF07CgoJCQl9IGVsc2UgewoJCQkJbWF0Y2ggPSBxdWlja0V4
cHIuZXhlYyggc2VsZWN0b3IgKTsKCQkJfQoKCQkJLy8gVmVyaWZ5IGEgbWF0Y2gs
IGFuZCB0aGF0IG5vIGNvbnRleHQgd2FzIHNwZWNpZmllZCBmb3IgI2lkCgkJCWlm
ICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHsKCgkJCQkvLyBI
QU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKCQkJCWlmICggbWF0Y2hbMV0gKSB7
CgkJCQkJY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250
ZXh0WzBdIDogY29udGV4dDsKCQkJCQlkb2MgPSAoIGNvbnRleHQgPyBjb250ZXh0
Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IGRvY3VtZW50ICk7CgoJCQkJCS8v
IElmIGEgc2luZ2xlIHN0cmluZyBpcyBwYXNzZWQgaW4gYW5kIGl0J3MgYSBzaW5n
bGUgdGFnCgkJCQkJLy8ganVzdCBkbyBhIGNyZWF0ZUVsZW1lbnQgYW5kIHNraXAg
dGhlIHJlc3QKCQkJCQlyZXQgPSByc2luZ2xlVGFnLmV4ZWMoIHNlbGVjdG9yICk7
CgoJCQkJCWlmICggcmV0ICkgewoJCQkJCQlpZiAoIGpRdWVyeS5pc1BsYWluT2Jq
ZWN0KCBjb250ZXh0ICkgKSB7CgkJCQkJCQlzZWxlY3RvciA9IFsgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCggcmV0WzFdICkgXTsKCQkJCQkJCWpRdWVyeS5mbi5hdHRy
LmNhbGwoIHNlbGVjdG9yLCBjb250ZXh0LCB0cnVlICk7CgoJCQkJCQl9IGVsc2Ug
ewoJCQkJCQkJc2VsZWN0b3IgPSBbIGRvYy5jcmVhdGVFbGVtZW50KCByZXRbMV0g
KSBdOwoJCQkJCQl9CgoJCQkJCX0gZWxzZSB7CgkJCQkJCXJldCA9IGpRdWVyeS5i
dWlsZEZyYWdtZW50KCBbIG1hdGNoWzFdIF0sIFsgZG9jIF0gKTsKCQkJCQkJc2Vs
ZWN0b3IgPSAoIHJldC5jYWNoZWFibGUgPyBqUXVlcnkuY2xvbmUocmV0LmZyYWdt
ZW50KSA6IHJldC5mcmFnbWVudCApLmNoaWxkTm9kZXM7CgkJCQkJfQoKCQkJCQly
ZXR1cm4galF1ZXJ5Lm1lcmdlKCB0aGlzLCBzZWxlY3RvciApOwoKCQkJCS8vIEhB
TkRMRTogJCgiI2lkIikKCQkJCX0gZWxzZSB7CgkJCQkJZWxlbSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApOwoKCQkJCQkvLyBDaGVjayBwYXJl
bnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwoJCQkJ
CS8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5
NjMKCQkJCQlpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkgewoJCQkJCQkv
LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVt
cwoJCQkJCQkvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKCQkJCQkJaWYgKCBlbGVt
LmlkICE9PSBtYXRjaFsyXSApIHsKCQkJCQkJCXJldHVybiByb290alF1ZXJ5LmZp
bmQoIHNlbGVjdG9yICk7CgkJCQkJCX0KCgkJCQkJCS8vIE90aGVyd2lzZSwgd2Ug
aW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmpl
Y3QKCQkJCQkJdGhpcy5sZW5ndGggPSAxOwoJCQkJCQl0aGlzWzBdID0gZWxlbTsK
CQkJCQl9CgoJCQkJCXRoaXMuY29udGV4dCA9IGRvY3VtZW50OwoJCQkJCXRoaXMu
c2VsZWN0b3IgPSBzZWxlY3RvcjsKCQkJCQlyZXR1cm4gdGhpczsKCQkJCX0KCgkJ
CS8vIEhBTkRMRTogJChleHByLCAkKC4uLikpCgkJCX0gZWxzZSBpZiAoICFjb250
ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkgewoJCQkJcmV0dXJuICggY29udGV4dCB8
fCByb290alF1ZXJ5ICkuZmluZCggc2VsZWN0b3IgKTsKCgkJCS8vIEhBTkRMRTog
JChleHByLCBjb250ZXh0KQoJCQkvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50
IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcikKCQkJfSBlbHNlIHsKCQkJCXJldHVy
biB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsK
CQkJfQoKCQkvLyBIQU5ETEU6ICQoZnVuY3Rpb24pCgkJLy8gU2hvcnRjdXQgZm9y
IGRvY3VtZW50IHJlYWR5CgkJfSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IHNlbGVjdG9yICkgKSB7CgkJCXJldHVybiByb290alF1ZXJ5LnJlYWR5KCBzZWxl
Y3RvciApOwoJCX0KCgkJaWYgKCBzZWxlY3Rvci5zZWxlY3RvciAhPT0gdW5kZWZp
bmVkICkgewoJCQl0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7CgkJ
CXRoaXMuY29udGV4dCA9IHNlbGVjdG9yLmNvbnRleHQ7CgkJfQoKCQlyZXR1cm4g
alF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTsKCX0sCgoJLy8gU3Rh
cnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvcgoJc2VsZWN0b3I6ICIiLAoKCS8vIFRo
ZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWQKCWpxdWVyeTog
IjEuNy4xIiwKCgkvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2Jq
ZWN0IGlzIDAKCWxlbmd0aDogMCwKCgkvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldAoJc2l6ZTogZnVu
Y3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMubGVuZ3RoOwoJfSwKCgl0b0FycmF5OiBm
dW5jdGlvbigpIHsKCQlyZXR1cm4gc2xpY2UuY2FsbCggdGhpcywgMCApOwoJfSwK
CgkvLyBHZXQgdGhlIE50aCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIGVsZW1lbnQg
c2V0IE9SCgkvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMg
YSBjbGVhbiBhcnJheQoJZ2V0OiBmdW5jdGlvbiggbnVtICkgewoJCXJldHVybiBu
dW0gPT0gbnVsbCA/CgoJCQkvLyBSZXR1cm4gYSAnY2xlYW4nIGFycmF5CgkJCXRo
aXMudG9BcnJheSgpIDoKCgkJCS8vIFJldHVybiBqdXN0IHRoZSBvYmplY3QKCQkJ
KCBudW0gPCAwID8gdGhpc1sgdGhpcy5sZW5ndGggKyBudW0gXSA6IHRoaXNbIG51
bSBdICk7Cgl9LAoKCS8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1
c2ggaXQgb250byB0aGUgc3RhY2sKCS8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRj
aGVkIGVsZW1lbnQgc2V0KQoJcHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMsIG5h
bWUsIHNlbGVjdG9yICkgewoJCS8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVk
IGVsZW1lbnQgc2V0CgkJdmFyIHJldCA9IHRoaXMuY29uc3RydWN0b3IoKTsKCgkJ
aWYgKCBqUXVlcnkuaXNBcnJheSggZWxlbXMgKSApIHsKCQkJcHVzaC5hcHBseSgg
cmV0LCBlbGVtcyApOwoKCQl9IGVsc2UgewoJCQlqUXVlcnkubWVyZ2UoIHJldCwg
ZWxlbXMgKTsKCQl9CgoJCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBz
dGFjayAoYXMgYSByZWZlcmVuY2UpCgkJcmV0LnByZXZPYmplY3QgPSB0aGlzOwoK
CQlyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDsKCgkJaWYgKCBuYW1lID09PSAi
ZmluZCIgKSB7CgkJCXJldC5zZWxlY3RvciA9IHRoaXMuc2VsZWN0b3IgKyAoIHRo
aXMuc2VsZWN0b3IgPyAiICIgOiAiIiApICsgc2VsZWN0b3I7CgkJfSBlbHNlIGlm
ICggbmFtZSApIHsKCQkJcmV0LnNlbGVjdG9yID0gdGhpcy5zZWxlY3RvciArICIu
IiArIG5hbWUgKyAiKCIgKyBzZWxlY3RvciArICIpIjsKCQl9CgoJCS8vIFJldHVy
biB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0CgkJcmV0dXJuIHJldDsKCX0s
CgoJLy8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRo
ZSBtYXRjaGVkIHNldC4KCS8vIChZb3UgY2FuIHNlZWQgdGhlIGFyZ3VtZW50cyB3
aXRoIGFuIGFycmF5IG9mIGFyZ3MsIGJ1dCB0aGlzIGlzCgkvLyBvbmx5IHVzZWQg
aW50ZXJuYWxseS4pCgllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7
CgkJcmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjaywgYXJncyApOwoJ
fSwKCglyZWFkeTogZnVuY3Rpb24oIGZuICkgewoJCS8vIEF0dGFjaCB0aGUgbGlz
dGVuZXJzCgkJalF1ZXJ5LmJpbmRSZWFkeSgpOwoKCQkvLyBBZGQgdGhlIGNhbGxi
YWNrCgkJcmVhZHlMaXN0LmFkZCggZm4gKTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoK
CWVxOiBmdW5jdGlvbiggaSApIHsKCQlpID0gK2k7CgkJcmV0dXJuIGkgPT09IC0x
ID8KCQkJdGhpcy5zbGljZSggaSApIDoKCQkJdGhpcy5zbGljZSggaSwgaSArIDEg
KTsKCX0sCgoJZmlyc3Q6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmVxKCAw
ICk7Cgl9LAoKCWxhc3Q6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmVxKCAt
MSApOwoJfSwKCglzbGljZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMucHVz
aFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICksCgkJCSJzbGlj
ZSIsIHNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikgKTsKCX0sCgoJbWFw
OiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNr
KCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJCQlyZXR1
cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOwoJCX0pKTsKCX0sCgoJ
ZW5kOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRo
aXMuY29uc3RydWN0b3IobnVsbCk7Cgl9LAoKCS8vIEZvciBpbnRlcm5hbCB1c2Ug
b25seS4KCS8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxp
a2UgYSBqUXVlcnkgbWV0aG9kLgoJcHVzaDogcHVzaCwKCXNvcnQ6IFtdLnNvcnQs
CglzcGxpY2U6IFtdLnNwbGljZQp9OwoKLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlv
biB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvbgpq
UXVlcnkuZm4uaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47CgpqUXVlcnkuZXh0
ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewoJdmFyIG9wdGlv
bnMsIG5hbWUsIHNyYywgY29weSwgY29weUlzQXJyYXksIGNsb25lLAoJCXRhcmdl
dCA9IGFyZ3VtZW50c1swXSB8fCB7fSwKCQlpID0gMSwKCQlsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoLAoJCWRlZXAgPSBmYWxzZTsKCgkvLyBIYW5kbGUgYSBkZWVw
IGNvcHkgc2l0dWF0aW9uCglpZiAoIHR5cGVvZiB0YXJnZXQgPT09ICJib29sZWFu
IiApIHsKCQlkZWVwID0gdGFyZ2V0OwoJCXRhcmdldCA9IGFyZ3VtZW50c1sxXSB8
fCB7fTsKCQkvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0CgkJaSA9
IDI7Cgl9CgoJLy8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcg
b3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpCglpZiAoIHR5cGVv
ZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICFqUXVlcnkuaXNGdW5jdGlvbih0YXJn
ZXQpICkgewoJCXRhcmdldCA9IHt9OwoJfQoKCS8vIGV4dGVuZCBqUXVlcnkgaXRz
ZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZAoJaWYgKCBsZW5ndGgg
PT09IGkgKSB7CgkJdGFyZ2V0ID0gdGhpczsKCQktLWk7Cgl9CgoJZm9yICggOyBp
IDwgbGVuZ3RoOyBpKysgKSB7CgkJLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwv
dW5kZWZpbmVkIHZhbHVlcwoJCWlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNbIGkg
XSkgIT0gbnVsbCApIHsKCQkJLy8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdAoJCQlm
b3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CgkJCQlzcmMgPSB0YXJnZXRbIG5hbWUg
XTsKCQkJCWNvcHkgPSBvcHRpb25zWyBuYW1lIF07CgoJCQkJLy8gUHJldmVudCBu
ZXZlci1lbmRpbmcgbG9vcAoJCQkJaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7CgkJ
CQkJY29udGludWU7CgkJCQl9CgoJCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJn
aW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzCgkJCQlpZiAoIGRlZXAgJiYgY29w
eSAmJiAoIGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJh
eSA9IGpRdWVyeS5pc0FycmF5KGNvcHkpKSApICkgewoJCQkJCWlmICggY29weUlz
QXJyYXkgKSB7CgkJCQkJCWNvcHlJc0FycmF5ID0gZmFsc2U7CgkJCQkJCWNsb25l
ID0gc3JjICYmIGpRdWVyeS5pc0FycmF5KHNyYykgPyBzcmMgOiBbXTsKCgkJCQkJ
fSBlbHNlIHsKCQkJCQkJY2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmpl
Y3Qoc3JjKSA/IHNyYyA6IHt9OwoJCQkJCX0KCgkJCQkJLy8gTmV2ZXIgbW92ZSBv
cmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtCgkJCQkJdGFyZ2V0WyBuYW1lIF0g
PSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApOwoKCQkJCS8vIERv
bid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXMKCQkJCX0gZWxzZSBpZiAoIGNv
cHkgIT09IHVuZGVmaW5lZCApIHsKCQkJCQl0YXJnZXRbIG5hbWUgXSA9IGNvcHk7
CgkJCQl9CgkJCX0KCQl9Cgl9CgoJLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmpl
Y3QKCXJldHVybiB0YXJnZXQ7Cn07CgpqUXVlcnkuZXh0ZW5kKHsKCW5vQ29uZmxp
Y3Q6IGZ1bmN0aW9uKCBkZWVwICkgewoJCWlmICggd2luZG93LiQgPT09IGpRdWVy
eSApIHsKCQkJd2luZG93LiQgPSBfJDsKCQl9CgoJCWlmICggZGVlcCAmJiB3aW5k
b3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7CgkJCXdpbmRvdy5qUXVlcnkgPSBfalF1
ZXJ5OwoJCX0KCgkJcmV0dXJuIGpRdWVyeTsKCX0sCgoJLy8gSXMgdGhlIERPTSBy
ZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy4KCWlz
UmVhZHk6IGZhbHNlLAoKCS8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBp
dGVtcyB0byB3YWl0IGZvciBiZWZvcmUKCS8vIHRoZSByZWFkeSBldmVudCBmaXJl
cy4gU2VlICM2NzgxCglyZWFkeVdhaXQ6IDEsCgoJLy8gSG9sZCAob3IgcmVsZWFz
ZSkgdGhlIHJlYWR5IGV2ZW50Cglob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkg
ewoJCWlmICggaG9sZCApIHsKCQkJalF1ZXJ5LnJlYWR5V2FpdCsrOwoJCX0gZWxz
ZSB7CgkJCWpRdWVyeS5yZWFkeSggdHJ1ZSApOwoJCX0KCX0sCgoJLy8gSGFuZGxl
IHdoZW4gdGhlIERPTSBpcyByZWFkeQoJcmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkg
ewoJCS8vIEVpdGhlciBhIHJlbGVhc2VkIGhvbGQgb3IgYW4gRE9NcmVhZHkvbG9h
ZCBldmVudCBhbmQgbm90IHlldCByZWFkeQoJCWlmICggKHdhaXQgPT09IHRydWUg
JiYgIS0talF1ZXJ5LnJlYWR5V2FpdCkgfHwgKHdhaXQgIT09IHRydWUgJiYgIWpR
dWVyeS5pc1JlYWR5KSApIHsKCQkJLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBh
dCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0
aWNrZXQgIzU0NDMpLgoJCQlpZiAoICFkb2N1bWVudC5ib2R5ICkgewoJCQkJcmV0
dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSwgMSApOwoJCQl9CgoJCQkvLyBS
ZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHkKCQkJalF1ZXJ5LmlzUmVhZHkg
PSB0cnVlOwoKCQkJLy8gSWYgYSBub3JtYWwgRE9NIFJlYWR5IGV2ZW50IGZpcmVk
LCBkZWNyZW1lbnQsIGFuZCB3YWl0IGlmIG5lZWQgYmUKCQkJaWYgKCB3YWl0ICE9
PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7CgkJCQlyZXR1cm47
CgkJCX0KCgkJCS8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4
ZWN1dGUKCQkJcmVhZHlMaXN0LmZpcmVXaXRoKCBkb2N1bWVudCwgWyBqUXVlcnkg
XSApOwoKCQkJLy8gVHJpZ2dlciBhbnkgYm91bmQgcmVhZHkgZXZlbnRzCgkJCWlm
ICggalF1ZXJ5LmZuLnRyaWdnZXIgKSB7CgkJCQlqUXVlcnkoIGRvY3VtZW50ICku
dHJpZ2dlciggInJlYWR5IiApLm9mZiggInJlYWR5IiApOwoJCQl9CgkJfQoJfSwK
CgliaW5kUmVhZHk6IGZ1bmN0aW9uKCkgewoJCWlmICggcmVhZHlMaXN0ICkgewoJ
CQlyZXR1cm47CgkJfQoKCQlyZWFkeUxpc3QgPSBqUXVlcnkuQ2FsbGJhY2tzKCAi
b25jZSBtZW1vcnkiICk7CgoJCS8vIENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1l
bnQpLnJlYWR5KCkgaXMgY2FsbGVkIGFmdGVyIHRoZQoJCS8vIGJyb3dzZXIgZXZl
bnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuCgkJaWYgKCBkb2N1bWVudC5yZWFkeVN0
YXRlID09PSAiY29tcGxldGUiICkgewoJCQkvLyBIYW5kbGUgaXQgYXN5bmNocm9u
b3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkg
cmVhZHkKCQkJcmV0dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSwgMSApOwoJ
CX0KCgkJLy8gTW96aWxsYSwgT3BlcmEgYW5kIHdlYmtpdCBuaWdodGxpZXMgY3Vy
cmVudGx5IHN1cHBvcnQgdGhpcyBldmVudAoJCWlmICggZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lciApIHsKCQkJLy8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFj
awoJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRl
ZCIsIERPTUNvbnRlbnRMb2FkZWQsIGZhbHNlICk7CgoJCQkvLyBBIGZhbGxiYWNr
IHRvIHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawoJCQl3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lciggImxvYWQiLCBqUXVlcnkucmVhZHksIGZhbHNl
ICk7CgoJCS8vIElmIElFIGV2ZW50IG1vZGVsIGlzIHVzZWQKCQl9IGVsc2UgaWYg
KCBkb2N1bWVudC5hdHRhY2hFdmVudCApIHsKCQkJLy8gZW5zdXJlIGZpcmluZyBi
ZWZvcmUgb25sb2FkLAoJCQkvLyBtYXliZSBsYXRlIGJ1dCBzYWZlIGFsc28gZm9y
IGlmcmFtZXMKCQkJZG9jdW1lbnQuYXR0YWNoRXZlbnQoICJvbnJlYWR5c3RhdGVj
aGFuZ2UiLCBET01Db250ZW50TG9hZGVkICk7CgoJCQkvLyBBIGZhbGxiYWNrIHRv
IHdpbmRvdy5vbmxvYWQsIHRoYXQgd2lsbCBhbHdheXMgd29yawoJCQl3aW5kb3cu
YXR0YWNoRXZlbnQoICJvbmxvYWQiLCBqUXVlcnkucmVhZHkgKTsKCgkJCS8vIElm
IElFIGFuZCBub3QgYSBmcmFtZQoJCQkvLyBjb250aW51YWxseSBjaGVjayB0byBz
ZWUgaWYgdGhlIGRvY3VtZW50IGlzIHJlYWR5CgkJCXZhciB0b3BsZXZlbCA9IGZh
bHNlOwoKCQkJdHJ5IHsKCQkJCXRvcGxldmVsID0gd2luZG93LmZyYW1lRWxlbWVu
dCA9PSBudWxsOwoJCQl9IGNhdGNoKGUpIHt9CgoJCQlpZiAoIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5kb1Njcm9sbCAmJiB0b3BsZXZlbCApIHsKCQkJCWRvU2Ny
b2xsQ2hlY2soKTsKCQkJfQoJCX0KCX0sCgoJLy8gU2VlIHRlc3QvdW5pdC9jb3Jl
LmpzIGZvciBkZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlvbi4KCS8vIFNpbmNl
IHZlcnNpb24gMS4zLCBET00gbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGxpa2UgYWxl
cnQKCS8vIGFyZW4ndCBzdXBwb3J0ZWQuIFRoZXkgcmV0dXJuIGZhbHNlIG9uIElF
ICgjMjk2OCkuCglpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkgewoJCXJldHVy
biBqUXVlcnkudHlwZShvYmopID09PSAiZnVuY3Rpb24iOwoJfSwKCglpc0FycmF5
OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKCBvYmogKSB7CgkJcmV0dXJuIGpR
dWVyeS50eXBlKG9iaikgPT09ICJhcnJheSI7Cgl9LAoKCS8vIEEgY3J1ZGUgd2F5
IG9mIGRldGVybWluaW5nIGlmIGFuIG9iamVjdCBpcyBhIHdpbmRvdwoJaXNXaW5k
b3c6IGZ1bmN0aW9uKCBvYmogKSB7CgkJcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2Jq
ID09PSAib2JqZWN0IiAmJiAic2V0SW50ZXJ2YWwiIGluIG9iajsKCX0sCgoJaXNO
dW1lcmljOiBmdW5jdGlvbiggb2JqICkgewoJCXJldHVybiAhaXNOYU4oIHBhcnNl
RmxvYXQob2JqKSApICYmIGlzRmluaXRlKCBvYmogKTsKCX0sCgoJdHlwZTogZnVu
Y3Rpb24oIG9iaiApIHsKCQlyZXR1cm4gb2JqID09IG51bGwgPwoJCQlTdHJpbmco
IG9iaiApIDoKCQkJY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbChvYmopIF0gfHwg
Im9iamVjdCI7Cgl9LAoKCWlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7
CgkJLy8gTXVzdCBiZSBhbiBPYmplY3QuCgkJLy8gQmVjYXVzZSBvZiBJRSwgd2Ug
YWxzbyBoYXZlIHRvIGNoZWNrIHRoZSBwcmVzZW5jZSBvZiB0aGUgY29uc3RydWN0
b3IgcHJvcGVydHkuCgkJLy8gTWFrZSBzdXJlIHRoYXQgRE9NIG5vZGVzIGFuZCB3
aW5kb3cgb2JqZWN0cyBkb24ndCBwYXNzIHRocm91Z2gsIGFzIHdlbGwKCQlpZiAo
ICFvYmogfHwgalF1ZXJ5LnR5cGUob2JqKSAhPT0gIm9iamVjdCIgfHwgb2JqLm5v
ZGVUeXBlIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7CgkJCXJldHVybiBm
YWxzZTsKCQl9CgoJCXRyeSB7CgkJCS8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJv
cGVydHkgbXVzdCBiZSBPYmplY3QKCQkJaWYgKCBvYmouY29uc3RydWN0b3IgJiYK
CQkJCSFoYXNPd24uY2FsbChvYmosICJjb25zdHJ1Y3RvciIpICYmCgkJCQkhaGFz
T3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImlzUHJvdG90eXBl
T2YiKSApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0gY2F0Y2ggKCBlICkg
ewoJCQkvLyBJRTgsOSBXaWxsIHRocm93IGV4Y2VwdGlvbnMgb24gY2VydGFpbiBo
b3N0IG9iamVjdHMgIzk4OTcKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gT3du
IHByb3BlcnRpZXMgYXJlIGVudW1lcmF0ZWQgZmlyc3RseSwgc28gdG8gc3BlZWQg
dXAsCgkJLy8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVz
IGFyZSBvd24uCgoJCXZhciBrZXk7CgkJZm9yICgga2V5IGluIG9iaiApIHt9CgoJ
CXJldHVybiBrZXkgPT09IHVuZGVmaW5lZCB8fCBoYXNPd24uY2FsbCggb2JqLCBr
ZXkgKTsKCX0sCgoJaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHsKCQlm
b3IgKCB2YXIgbmFtZSBpbiBvYmogKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJ
cmV0dXJuIHRydWU7Cgl9LAoKCWVycm9yOiBmdW5jdGlvbiggbXNnICkgewoJCXRo
cm93IG5ldyBFcnJvciggbXNnICk7Cgl9LAoKCXBhcnNlSlNPTjogZnVuY3Rpb24o
IGRhdGEgKSB7CgkJaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0cmluZyIgfHwgIWRh
dGEgKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJLy8gTWFrZSBzdXJlIGxlYWRp
bmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1vdmVkIChJRSBjYW4ndCBoYW5k
bGUgaXQpCgkJZGF0YSA9IGpRdWVyeS50cmltKCBkYXRhICk7CgoJCS8vIEF0dGVt
cHQgdG8gcGFyc2UgdXNpbmcgdGhlIG5hdGl2ZSBKU09OIHBhcnNlciBmaXJzdAoJ
CWlmICggd2luZG93LkpTT04gJiYgd2luZG93LkpTT04ucGFyc2UgKSB7CgkJCXJl
dHVybiB3aW5kb3cuSlNPTi5wYXJzZSggZGF0YSApOwoJCX0KCgkJLy8gTWFrZSBz
dXJlIHRoZSBpbmNvbWluZyBkYXRhIGlzIGFjdHVhbCBKU09OCgkJLy8gTG9naWMg
Ym9ycm93ZWQgZnJvbSBodHRwOi8vanNvbi5vcmcvanNvbjIuanMKCQlpZiAoIHJ2
YWxpZGNoYXJzLnRlc3QoIGRhdGEucmVwbGFjZSggcnZhbGlkZXNjYXBlLCAiQCIg
KQoJCQkucmVwbGFjZSggcnZhbGlkdG9rZW5zLCAiXSIgKQoJCQkucmVwbGFjZSgg
cnZhbGlkYnJhY2VzLCAiIikpICkgewoKCQkJcmV0dXJuICggbmV3IEZ1bmN0aW9u
KCAicmV0dXJuICIgKyBkYXRhICkgKSgpOwoKCQl9CgkJalF1ZXJ5LmVycm9yKCAi
SW52YWxpZCBKU09OOiAiICsgZGF0YSApOwoJfSwKCgkvLyBDcm9zcy1icm93c2Vy
IHhtbCBwYXJzaW5nCglwYXJzZVhNTDogZnVuY3Rpb24oIGRhdGEgKSB7CgkJdmFy
IHhtbCwgdG1wOwoJCXRyeSB7CgkJCWlmICggd2luZG93LkRPTVBhcnNlciApIHsg
Ly8gU3RhbmRhcmQKCQkJCXRtcCA9IG5ldyBET01QYXJzZXIoKTsKCQkJCXhtbCA9
IHRtcC5wYXJzZUZyb21TdHJpbmcoIGRhdGEgLCAidGV4dC94bWwiICk7CgkJCX0g
ZWxzZSB7IC8vIElFCgkJCQl4bWwgPSBuZXcgQWN0aXZlWE9iamVjdCggIk1pY3Jv
c29mdC5YTUxET00iICk7CgkJCQl4bWwuYXN5bmMgPSAiZmFsc2UiOwoJCQkJeG1s
LmxvYWRYTUwoIGRhdGEgKTsKCQkJfQoJCX0gY2F0Y2goIGUgKSB7CgkJCXhtbCA9
IHVuZGVmaW5lZDsKCQl9CgkJaWYgKCAheG1sIHx8ICF4bWwuZG9jdW1lbnRFbGVt
ZW50IHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggInBhcnNlcmVycm9yIiAp
Lmxlbmd0aCApIHsKCQkJalF1ZXJ5LmVycm9yKCAiSW52YWxpZCBYTUw6ICIgKyBk
YXRhICk7CgkJfQoJCXJldHVybiB4bWw7Cgl9LAoKCW5vb3A6IGZ1bmN0aW9uKCkg
e30sCgoJLy8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHQK
CS8vIFdvcmthcm91bmRzIGJhc2VkIG9uIGZpbmRpbmdzIGJ5IEppbSBEcmlzY29s
bAoJLy8gaHR0cDovL3dlYmxvZ3MuamF2YS5uZXQvYmxvZy9kcmlzY29sbC9hcmNo
aXZlLzIwMDkvMDkvMDgvZXZhbC1qYXZhc2NyaXB0LWdsb2JhbC1jb250ZXh0Cgln
bG9iYWxFdmFsOiBmdW5jdGlvbiggZGF0YSApIHsKCQlpZiAoIGRhdGEgJiYgcm5v
dHdoaXRlLnRlc3QoIGRhdGEgKSApIHsKCQkJLy8gV2UgdXNlIGV4ZWNTY3JpcHQg
b24gSW50ZXJuZXQgRXhwbG9yZXIKCQkJLy8gV2UgdXNlIGFuIGFub255bW91cyBm
dW5jdGlvbiBzbyB0aGF0IGNvbnRleHQgaXMgd2luZG93CgkJCS8vIHJhdGhlciB0
aGFuIGpRdWVyeSBpbiBGaXJlZm94CgkJCSggd2luZG93LmV4ZWNTY3JpcHQgfHwg
ZnVuY3Rpb24oIGRhdGEgKSB7CgkJCQl3aW5kb3dbICJldmFsIiBdLmNhbGwoIHdp
bmRvdywgZGF0YSApOwoJCQl9ICkoIGRhdGEgKTsKCQl9Cgl9LAoKCS8vIENvbnZl
cnQgZGFzaGVkIHRvIGNhbWVsQ2FzZTsgdXNlZCBieSB0aGUgY3NzIGFuZCBkYXRh
IG1vZHVsZXMKCS8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5k
b3IgcHJlZml4ICgjOTU3MikKCWNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyAp
IHsKCQlyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHJtc1ByZWZpeCwgIm1zLSIgKS5y
ZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7Cgl9LAoKCW5vZGVOYW1l
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKCQlyZXR1cm4gZWxlbS5ub2RlTmFt
ZSAmJiBlbGVtLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5hbWUudG9VcHBl
ckNhc2UoKTsKCX0sCgoJLy8gYXJncyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25s
eQoJZWFjaDogZnVuY3Rpb24oIG9iamVjdCwgY2FsbGJhY2ssIGFyZ3MgKSB7CgkJ
dmFyIG5hbWUsIGkgPSAwLAoJCQlsZW5ndGggPSBvYmplY3QubGVuZ3RoLAoJCQlp
c09iaiA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0Z1bmN0aW9u
KCBvYmplY3QgKTsKCgkJaWYgKCBhcmdzICkgewoJCQlpZiAoIGlzT2JqICkgewoJ
CQkJZm9yICggbmFtZSBpbiBvYmplY3QgKSB7CgkJCQkJaWYgKCBjYWxsYmFjay5h
cHBseSggb2JqZWN0WyBuYW1lIF0sIGFyZ3MgKSA9PT0gZmFsc2UgKSB7CgkJCQkJ
CWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWZvciAoIDsgaSA8
IGxlbmd0aDsgKSB7CgkJCQkJaWYgKCBjYWxsYmFjay5hcHBseSggb2JqZWN0WyBp
KysgXSwgYXJncyApID09PSBmYWxzZSApIHsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJ
CQkJfQoJCQl9CgoJCS8vIEEgc3BlY2lhbCwgZmFzdCwgY2FzZSBmb3IgdGhlIG1v
c3QgY29tbW9uIHVzZSBvZiBlYWNoCgkJfSBlbHNlIHsKCQkJaWYgKCBpc09iaiAp
IHsKCQkJCWZvciAoIG5hbWUgaW4gb2JqZWN0ICkgewoJCQkJCWlmICggY2FsbGJh
Y2suY2FsbCggb2JqZWN0WyBuYW1lIF0sIG5hbWUsIG9iamVjdFsgbmFtZSBdICkg
PT09IGZhbHNlICkgewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0gZWxz
ZSB7CgkJCQlmb3IgKCA7IGkgPCBsZW5ndGg7ICkgewoJCQkJCWlmICggY2FsbGJh
Y2suY2FsbCggb2JqZWN0WyBpIF0sIGksIG9iamVjdFsgaSsrIF0gKSA9PT0gZmFs
c2UgKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0
dXJuIG9iamVjdDsKCX0sCgoJLy8gVXNlIG5hdGl2ZSBTdHJpbmcudHJpbSBmdW5j
dGlvbiB3aGVyZXZlciBwb3NzaWJsZQoJdHJpbTogdHJpbSA/CgkJZnVuY3Rpb24o
IHRleHQgKSB7CgkJCXJldHVybiB0ZXh0ID09IG51bGwgPwoJCQkJIiIgOgoJCQkJ
dHJpbS5jYWxsKCB0ZXh0ICk7CgkJfSA6CgoJCS8vIE90aGVyd2lzZSB1c2Ugb3Vy
IG93biB0cmltbWluZyBmdW5jdGlvbmFsaXR5CgkJZnVuY3Rpb24oIHRleHQgKSB7
CgkJCXJldHVybiB0ZXh0ID09IG51bGwgPwoJCQkJIiIgOgoJCQkJdGV4dC50b1N0
cmluZygpLnJlcGxhY2UoIHRyaW1MZWZ0LCAiIiApLnJlcGxhY2UoIHRyaW1SaWdo
dCwgIiIgKTsKCQl9LAoKCS8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdl
IG9ubHkKCW1ha2VBcnJheTogZnVuY3Rpb24oIGFycmF5LCByZXN1bHRzICkgewoJ
CXZhciByZXQgPSByZXN1bHRzIHx8IFtdOwoKCQlpZiAoIGFycmF5ICE9IG51bGwg
KSB7CgkJCS8vIFRoZSB3aW5kb3csIHN0cmluZ3MgKGFuZCBmdW5jdGlvbnMpIGFs
c28gaGF2ZSAnbGVuZ3RoJwoJCQkvLyBUd2Vha2VkIGxvZ2ljIHNsaWdodGx5IHRv
IGhhbmRsZSBCbGFja2JlcnJ5IDQuNyBSZWdFeHAgaXNzdWVzICM2OTMwCgkJCXZh
ciB0eXBlID0galF1ZXJ5LnR5cGUoIGFycmF5ICk7CgoJCQlpZiAoIGFycmF5Lmxl
bmd0aCA9PSBudWxsIHx8IHR5cGUgPT09ICJzdHJpbmciIHx8IHR5cGUgPT09ICJm
dW5jdGlvbiIgfHwgdHlwZSA9PT0gInJlZ2V4cCIgfHwgalF1ZXJ5LmlzV2luZG93
KCBhcnJheSApICkgewoJCQkJcHVzaC5jYWxsKCByZXQsIGFycmF5ICk7CgkJCX0g
ZWxzZSB7CgkJCQlqUXVlcnkubWVyZ2UoIHJldCwgYXJyYXkgKTsKCQkJfQoJCX0K
CgkJcmV0dXJuIHJldDsKCX0sCgoJaW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFy
cmF5LCBpICkgewoJCXZhciBsZW47CgoJCWlmICggYXJyYXkgKSB7CgkJCWlmICgg
aW5kZXhPZiApIHsKCQkJCXJldHVybiBpbmRleE9mLmNhbGwoIGFycmF5LCBlbGVt
LCBpICk7CgkJCX0KCgkJCWxlbiA9IGFycmF5Lmxlbmd0aDsKCQkJaSA9IGkgPyBp
IDwgMCA/IE1hdGgubWF4KCAwLCBsZW4gKyBpICkgOiBpIDogMDsKCgkJCWZvciAo
IDsgaSA8IGxlbjsgaSsrICkgewoJCQkJLy8gU2tpcCBhY2Nlc3NpbmcgaW4gc3Bh
cnNlIGFycmF5cwoJCQkJaWYgKCBpIGluIGFycmF5ICYmIGFycmF5WyBpIF0gPT09
IGVsZW0gKSB7CgkJCQkJcmV0dXJuIGk7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVy
biAtMTsKCX0sCgoJbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkgewoJ
CXZhciBpID0gZmlyc3QubGVuZ3RoLAoJCQlqID0gMDsKCgkJaWYgKCB0eXBlb2Yg
c2Vjb25kLmxlbmd0aCA9PT0gIm51bWJlciIgKSB7CgkJCWZvciAoIHZhciBsID0g
c2Vjb25kLmxlbmd0aDsgaiA8IGw7IGorKyApIHsKCQkJCWZpcnN0WyBpKysgXSA9
IHNlY29uZFsgaiBdOwoJCQl9CgoJCX0gZWxzZSB7CgkJCXdoaWxlICggc2Vjb25k
W2pdICE9PSB1bmRlZmluZWQgKSB7CgkJCQlmaXJzdFsgaSsrIF0gPSBzZWNvbmRb
IGorKyBdOwoJCQl9CgkJfQoKCQlmaXJzdC5sZW5ndGggPSBpOwoKCQlyZXR1cm4g
Zmlyc3Q7Cgl9LAoKCWdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGlu
diApIHsKCQl2YXIgcmV0ID0gW10sIHJldFZhbDsKCQlpbnYgPSAhIWludjsKCgkJ
Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtcwoJ
CS8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCgkJZm9yICggdmFy
IGkgPSAwLCBsZW5ndGggPSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyAp
IHsKCQkJcmV0VmFsID0gISFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApOwoJCQlp
ZiAoIGludiAhPT0gcmV0VmFsICkgewoJCQkJcmV0LnB1c2goIGVsZW1zWyBpIF0g
KTsKCQkJfQoJCX0KCgkJcmV0dXJuIHJldDsKCX0sCgoJLy8gYXJnIGlzIGZvciBp
bnRlcm5hbCB1c2FnZSBvbmx5CgltYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJh
Y2ssIGFyZyApIHsKCQl2YXIgdmFsdWUsIGtleSwgcmV0ID0gW10sCgkJCWkgPSAw
LAoJCQlsZW5ndGggPSBlbGVtcy5sZW5ndGgsCgkJCS8vIGpxdWVyeSBvYmplY3Rz
IGFyZSB0cmVhdGVkIGFzIGFycmF5cwoJCQlpc0FycmF5ID0gZWxlbXMgaW5zdGFu
Y2VvZiBqUXVlcnkgfHwgbGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGxl
bmd0aCA9PT0gIm51bWJlciIgJiYgKCAoIGxlbmd0aCA+IDAgJiYgZWxlbXNbIDAg
XSAmJiBlbGVtc1sgbGVuZ3RoIC0xIF0gKSB8fCBsZW5ndGggPT09IDAgfHwgalF1
ZXJ5LmlzQXJyYXkoIGVsZW1zICkgKSA7CgoJCS8vIEdvIHRocm91Z2ggdGhlIGFy
cmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpcgoJCWlm
ICggaXNBcnJheSApIHsKCQkJZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7CgkJ
CQl2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTsKCgkJCQlp
ZiAoIHZhbHVlICE9IG51bGwgKSB7CgkJCQkJcmV0WyByZXQubGVuZ3RoIF0gPSB2
YWx1ZTsKCQkJCX0KCQkJfQoKCQkvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0
aGUgb2JqZWN0LAoJCX0gZWxzZSB7CgkJCWZvciAoIGtleSBpbiBlbGVtcyApIHsK
CQkJCXZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBrZXkgXSwga2V5LCBhcmcgKTsK
CgkJCQlpZiAoIHZhbHVlICE9IG51bGwgKSB7CgkJCQkJcmV0WyByZXQubGVuZ3Ro
IF0gPSB2YWx1ZTsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gRmxhdHRlbiBhbnkgbmVz
dGVkIGFycmF5cwoJCXJldHVybiByZXQuY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7
Cgl9LAoKCS8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0cwoJZ3Vp
ZDogMSwKCgkvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25h
bGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnkKCS8vIGFyZ3VtZW50cy4KCXByb3h5
OiBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7CgkJaWYgKCB0eXBlb2YgY29udGV4
dCA9PT0gInN0cmluZyIgKSB7CgkJCXZhciB0bXAgPSBmblsgY29udGV4dCBdOwoJ
CQljb250ZXh0ID0gZm47CgkJCWZuID0gdG1wOwoJCX0KCgkJLy8gUXVpY2sgY2hl
Y2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNw
ZWMKCQkvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVz
dCByZXR1cm4gdW5kZWZpbmVkLgoJCWlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBm
biApICkgewoJCQlyZXR1cm4gdW5kZWZpbmVkOwoJCX0KCgkJLy8gU2ltdWxhdGVk
IGJpbmQKCQl2YXIgYXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApLAoJ
CQlwcm94eSA9IGZ1bmN0aW9uKCkgewoJCQkJcmV0dXJuIGZuLmFwcGx5KCBjb250
ZXh0LCBhcmdzLmNvbmNhdCggc2xpY2UuY2FsbCggYXJndW1lbnRzICkgKSApOwoJ
CQl9OwoKCQkvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIgdG8gdGhl
IHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJlbW92ZWQK
CQlwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgcHJveHkuZ3VpZCB8
fCBqUXVlcnkuZ3VpZCsrOwoKCQlyZXR1cm4gcHJveHk7Cgl9LAoKCS8vIE11dGlm
dW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgdG8gYSBjb2xs
ZWN0aW9uCgkvLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRl
ZCBpZiBpdCdzIGEgZnVuY3Rpb24KCWFjY2VzczogZnVuY3Rpb24oIGVsZW1zLCBr
ZXksIHZhbHVlLCBleGVjLCBmbiwgcGFzcyApIHsKCQl2YXIgbGVuZ3RoID0gZWxl
bXMubGVuZ3RoOwoKCQkvLyBTZXR0aW5nIG1hbnkgYXR0cmlidXRlcwoJCWlmICgg
dHlwZW9mIGtleSA9PT0gIm9iamVjdCIgKSB7CgkJCWZvciAoIHZhciBrIGluIGtl
eSApIHsKCQkJCWpRdWVyeS5hY2Nlc3MoIGVsZW1zLCBrLCBrZXlba10sIGV4ZWMs
IGZuLCB2YWx1ZSApOwoJCQl9CgkJCXJldHVybiBlbGVtczsKCQl9CgoJCS8vIFNl
dHRpbmcgb25lIGF0dHJpYnV0ZQoJCWlmICggdmFsdWUgIT09IHVuZGVmaW5lZCAp
IHsKCQkJLy8gT3B0aW9uYWxseSwgZnVuY3Rpb24gdmFsdWVzIGdldCBleGVjdXRl
ZCBpZiBleGVjIGlzIHRydWUKCQkJZXhlYyA9ICFwYXNzICYmIGV4ZWMgJiYgalF1
ZXJ5LmlzRnVuY3Rpb24odmFsdWUpOwoKCQkJZm9yICggdmFyIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKysgKSB7CgkJCQlmbiggZWxlbXNbaV0sIGtleSwgZXhlYyA/IHZh
bHVlLmNhbGwoIGVsZW1zW2ldLCBpLCBmbiggZWxlbXNbaV0sIGtleSApICkgOiB2
YWx1ZSwgcGFzcyApOwoJCQl9CgoJCQlyZXR1cm4gZWxlbXM7CgkJfQoKCQkvLyBH
ZXR0aW5nIGFuIGF0dHJpYnV0ZQoJCXJldHVybiBsZW5ndGggPyBmbiggZWxlbXNb
MF0sIGtleSApIDogdW5kZWZpbmVkOwoJfSwKCglub3c6IGZ1bmN0aW9uKCkgewoJ
CXJldHVybiAoIG5ldyBEYXRlKCkgKS5nZXRUaW1lKCk7Cgl9LAoKCS8vIFVzZSBv
ZiBqUXVlcnkuYnJvd3NlciBpcyBmcm93bmVkIHVwb24uCgkvLyBNb3JlIGRldGFp
bHM6IGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVXRpbGl0aWVzL2pRdWVyeS5icm93
c2VyCgl1YU1hdGNoOiBmdW5jdGlvbiggdWEgKSB7CgkJdWEgPSB1YS50b0xvd2Vy
Q2FzZSgpOwoKCQl2YXIgbWF0Y2ggPSByd2Via2l0LmV4ZWMoIHVhICkgfHwKCQkJ
cm9wZXJhLmV4ZWMoIHVhICkgfHwKCQkJcm1zaWUuZXhlYyggdWEgKSB8fAoJCQl1
YS5pbmRleE9mKCJjb21wYXRpYmxlIikgPCAwICYmIHJtb3ppbGxhLmV4ZWMoIHVh
ICkgfHwKCQkJW107CgoJCXJldHVybiB7IGJyb3dzZXI6IG1hdGNoWzFdIHx8ICIi
LCB2ZXJzaW9uOiBtYXRjaFsyXSB8fCAiMCIgfTsKCX0sCgoJc3ViOiBmdW5jdGlv
bigpIHsKCQlmdW5jdGlvbiBqUXVlcnlTdWIoIHNlbGVjdG9yLCBjb250ZXh0ICkg
ewoJCQlyZXR1cm4gbmV3IGpRdWVyeVN1Yi5mbi5pbml0KCBzZWxlY3RvciwgY29u
dGV4dCApOwoJCX0KCQlqUXVlcnkuZXh0ZW5kKCB0cnVlLCBqUXVlcnlTdWIsIHRo
aXMgKTsKCQlqUXVlcnlTdWIuc3VwZXJjbGFzcyA9IHRoaXM7CgkJalF1ZXJ5U3Vi
LmZuID0galF1ZXJ5U3ViLnByb3RvdHlwZSA9IHRoaXMoKTsKCQlqUXVlcnlTdWIu
Zm4uY29uc3RydWN0b3IgPSBqUXVlcnlTdWI7CgkJalF1ZXJ5U3ViLnN1YiA9IHRo
aXMuc3ViOwoJCWpRdWVyeVN1Yi5mbi5pbml0ID0gZnVuY3Rpb24gaW5pdCggc2Vs
ZWN0b3IsIGNvbnRleHQgKSB7CgkJCWlmICggY29udGV4dCAmJiBjb250ZXh0IGlu
c3RhbmNlb2YgalF1ZXJ5ICYmICEoY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeVN1
YikgKSB7CgkJCQljb250ZXh0ID0galF1ZXJ5U3ViKCBjb250ZXh0ICk7CgkJCX0K
CgkJCXJldHVybiBqUXVlcnkuZm4uaW5pdC5jYWxsKCB0aGlzLCBzZWxlY3Rvciwg
Y29udGV4dCwgcm9vdGpRdWVyeVN1YiApOwoJCX07CgkJalF1ZXJ5U3ViLmZuLmlu
aXQucHJvdG90eXBlID0galF1ZXJ5U3ViLmZuOwoJCXZhciByb290alF1ZXJ5U3Vi
ID0galF1ZXJ5U3ViKGRvY3VtZW50KTsKCQlyZXR1cm4galF1ZXJ5U3ViOwoJfSwK
Cglicm93c2VyOiB7fQp9KTsKCi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1h
cApqUXVlcnkuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFy
cmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQoIiAiKSwgZnVuY3Rpb24oaSwg
bmFtZSkgewoJY2xhc3MydHlwZVsgIltvYmplY3QgIiArIG5hbWUgKyAiXSIgXSA9
IG5hbWUudG9Mb3dlckNhc2UoKTsKfSk7Cgpicm93c2VyTWF0Y2ggPSBqUXVlcnku
dWFNYXRjaCggdXNlckFnZW50ICk7CmlmICggYnJvd3Nlck1hdGNoLmJyb3dzZXIg
KSB7CglqUXVlcnkuYnJvd3NlclsgYnJvd3Nlck1hdGNoLmJyb3dzZXIgXSA9IHRy
dWU7CglqUXVlcnkuYnJvd3Nlci52ZXJzaW9uID0gYnJvd3Nlck1hdGNoLnZlcnNp
b247Cn0KCi8vIERlcHJlY2F0ZWQsIHVzZSBqUXVlcnkuYnJvd3Nlci53ZWJraXQg
aW5zdGVhZAppZiAoIGpRdWVyeS5icm93c2VyLndlYmtpdCApIHsKCWpRdWVyeS5i
cm93c2VyLnNhZmFyaSA9IHRydWU7Cn0KCi8vIElFIGRvZXNuJ3QgbWF0Y2ggbm9u
LWJyZWFraW5nIHNwYWNlcyB3aXRoIFxzCmlmICggcm5vdHdoaXRlLnRlc3QoICJc
eEEwIiApICkgewoJdHJpbUxlZnQgPSAvXltcc1x4QTBdKy87Cgl0cmltUmlnaHQg
PSAvW1xzXHhBMF0rJC87Cn0KCi8vIEFsbCBqUXVlcnkgb2JqZWN0cyBzaG91bGQg
cG9pbnQgYmFjayB0byB0aGVzZQpyb290alF1ZXJ5ID0galF1ZXJ5KGRvY3VtZW50
KTsKCi8vIENsZWFudXAgZnVuY3Rpb25zIGZvciB0aGUgZG9jdW1lbnQgcmVhZHkg
bWV0aG9kCmlmICggZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciApIHsKCURPTUNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpIHsKCQlkb2N1bWVudC5yZW1vdmVFdmVu
dExpc3RlbmVyKCAiRE9NQ29udGVudExvYWRlZCIsIERPTUNvbnRlbnRMb2FkZWQs
IGZhbHNlICk7CgkJalF1ZXJ5LnJlYWR5KCk7Cgl9OwoKfSBlbHNlIGlmICggZG9j
dW1lbnQuYXR0YWNoRXZlbnQgKSB7CglET01Db250ZW50TG9hZGVkID0gZnVuY3Rp
b24oKSB7CgkJLy8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBhdCBsZWFzdCwgaW4g
Y2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0aWNrZXQgIzU0NDMp
LgoJCWlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiApIHsK
CQkJZG9jdW1lbnQuZGV0YWNoRXZlbnQoICJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBE
T01Db250ZW50TG9hZGVkICk7CgkJCWpRdWVyeS5yZWFkeSgpOwoJCX0KCX07Cn0K
Ci8vIFRoZSBET00gcmVhZHkgY2hlY2sgZm9yIEludGVybmV0IEV4cGxvcmVyCmZ1
bmN0aW9uIGRvU2Nyb2xsQ2hlY2soKSB7CglpZiAoIGpRdWVyeS5pc1JlYWR5ICkg
ewoJCXJldHVybjsKCX0KCgl0cnkgewoJCS8vIElmIElFIGlzIHVzZWQsIHVzZSB0
aGUgdHJpY2sgYnkgRGllZ28gUGVyaW5pCgkJLy8gaHR0cDovL2phdmFzY3JpcHQu
bndib3guY29tL0lFQ29udGVudExvYWRlZC8KCQlkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuZG9TY3JvbGwoImxlZnQiKTsKCX0gY2F0Y2goZSkgewoJCXNldFRpbWVv
dXQoIGRvU2Nyb2xsQ2hlY2ssIDEgKTsKCQlyZXR1cm47Cgl9CgoJLy8gYW5kIGV4
ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zCglqUXVlcnkucmVhZHkoKTsKfQoK
cmV0dXJuIGpRdWVyeTsKCn0pKCk7CgoKLy8gU3RyaW5nIHRvIE9iamVjdCBmbGFn
cyBmb3JtYXQgY2FjaGUKdmFyIGZsYWdzQ2FjaGUgPSB7fTsKCi8vIENvbnZlcnQg
U3RyaW5nLWZvcm1hdHRlZCBmbGFncyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25l
cyBhbmQgc3RvcmUgaW4gY2FjaGUKZnVuY3Rpb24gY3JlYXRlRmxhZ3MoIGZsYWdz
ICkgewoJdmFyIG9iamVjdCA9IGZsYWdzQ2FjaGVbIGZsYWdzIF0gPSB7fSwKCQlp
LCBsZW5ndGg7CglmbGFncyA9IGZsYWdzLnNwbGl0KCAvXHMrLyApOwoJZm9yICgg
aSA9IDAsIGxlbmd0aCA9IGZsYWdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrICkg
ewoJCW9iamVjdFsgZmxhZ3NbaV0gXSA9IHRydWU7Cgl9CglyZXR1cm4gb2JqZWN0
Owp9CgovKgogKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xs
b3dpbmcgcGFyYW1ldGVyczoKICoKICoJZmxhZ3M6CWFuIG9wdGlvbmFsIGxpc3Qg
b2Ygc3BhY2Utc2VwYXJhdGVkIGZsYWdzIHRoYXQgd2lsbCBjaGFuZ2UgaG93CiAq
CQkJdGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcwogKgogKiBCeSBkZWZhdWx0IGEg
Y2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxp
c3QgYW5kIGNhbiBiZQogKiAiZmlyZWQiIG11bHRpcGxlIHRpbWVzLgogKgogKiBQ
b3NzaWJsZSBmbGFnczoKICoKICoJb25jZToJCQl3aWxsIGVuc3VyZSB0aGUgY2Fs
bGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJy
ZWQpCiAqCiAqCW1lbW9yeToJCQl3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMg
dmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkCiAqCQkJCQlh
ZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhl
IGxhdGVzdCAibWVtb3JpemVkIgogKgkJCQkJdmFsdWVzIChsaWtlIGEgRGVmZXJy
ZWQpCiAqCiAqCXVuaXF1ZToJCQl3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBv
bmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdCkKICoK
ICoJc3RvcE9uRmFsc2U6CWludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJh
Y2sgcmV0dXJucyBmYWxzZQogKgogKi8KalF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0
aW9uKCBmbGFncyApIHsKCgkvLyBDb252ZXJ0IGZsYWdzIGZyb20gU3RyaW5nLWZv
cm1hdHRlZCB0byBPYmplY3QtZm9ybWF0dGVkCgkvLyAod2UgY2hlY2sgaW4gY2Fj
aGUgZmlyc3QpCglmbGFncyA9IGZsYWdzID8gKCBmbGFnc0NhY2hlWyBmbGFncyBd
IHx8IGNyZWF0ZUZsYWdzKCBmbGFncyApICkgOiB7fTsKCgl2YXIgLy8gQWN0dWFs
IGNhbGxiYWNrIGxpc3QKCQlsaXN0ID0gW10sCgkJLy8gU3RhY2sgb2YgZmlyZSBj
YWxscyBmb3IgcmVwZWF0YWJsZSBsaXN0cwoJCXN0YWNrID0gW10sCgkJLy8gTGFz
dCBmaXJlIHZhbHVlIChmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzKQoJCW1lbW9y
eSwKCQkvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5n
CgkJZmlyaW5nLAoJCS8vIEZpcnN0IGNhbGxiYWNrIHRvIGZpcmUgKHVzZWQgaW50
ZXJuYWxseSBieSBhZGQgYW5kIGZpcmVXaXRoKQoJCWZpcmluZ1N0YXJ0LAoJCS8v
IEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmluZwoJCWZpcmluZ0xlbmd0aCwKCQkv
LyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBi
eSByZW1vdmUgaWYgbmVlZGVkKQoJCWZpcmluZ0luZGV4LAoJCS8vIEFkZCBvbmUg
b3Igc2V2ZXJhbCBjYWxsYmFja3MgdG8gdGhlIGxpc3QKCQlhZGQgPSBmdW5jdGlv
biggYXJncyApIHsKCQkJdmFyIGksCgkJCQlsZW5ndGgsCgkJCQllbGVtLAoJCQkJ
dHlwZSwKCQkJCWFjdHVhbDsKCQkJZm9yICggaSA9IDAsIGxlbmd0aCA9IGFyZ3Mu
bGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysgKSB7CgkJCQllbGVtID0gYXJnc1sgaSBd
OwoJCQkJdHlwZSA9IGpRdWVyeS50eXBlKCBlbGVtICk7CgkJCQlpZiAoIHR5cGUg
PT09ICJhcnJheSIgKSB7CgkJCQkJLy8gSW5zcGVjdCByZWN1cnNpdmVseQoJCQkJ
CWFkZCggZWxlbSApOwoJCQkJfSBlbHNlIGlmICggdHlwZSA9PT0gImZ1bmN0aW9u
IiApIHsKCQkJCQkvLyBBZGQgaWYgbm90IGluIHVuaXF1ZSBtb2RlIGFuZCBjYWxs
YmFjayBpcyBub3QgaW4KCQkJCQlpZiAoICFmbGFncy51bmlxdWUgfHwgIXNlbGYu
aGFzKCBlbGVtICkgKSB7CgkJCQkJCWxpc3QucHVzaCggZWxlbSApOwoJCQkJCX0K
CQkJCX0KCQkJfQoJCX0sCgkJLy8gRmlyZSBjYWxsYmFja3MKCQlmaXJlID0gZnVu
Y3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7CgkJCWFyZ3MgPSBhcmdzIHx8IFtdOwoJ
CQltZW1vcnkgPSAhZmxhZ3MubWVtb3J5IHx8IFsgY29udGV4dCwgYXJncyBdOwoJ
CQlmaXJpbmcgPSB0cnVlOwoJCQlmaXJpbmdJbmRleCA9IGZpcmluZ1N0YXJ0IHx8
IDA7CgkJCWZpcmluZ1N0YXJ0ID0gMDsKCQkJZmlyaW5nTGVuZ3RoID0gbGlzdC5s
ZW5ndGg7CgkJCWZvciAoIDsgbGlzdCAmJiBmaXJpbmdJbmRleCA8IGZpcmluZ0xl
bmd0aDsgZmlyaW5nSW5kZXgrKyApIHsKCQkJCWlmICggbGlzdFsgZmlyaW5nSW5k
ZXggXS5hcHBseSggY29udGV4dCwgYXJncyApID09PSBmYWxzZSAmJiBmbGFncy5z
dG9wT25GYWxzZSApIHsKCQkJCQltZW1vcnkgPSB0cnVlOyAvLyBNYXJrIGFzIGhh
bHRlZAoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCWZpcmluZyA9IGZhbHNlOwoJ
CQlpZiAoIGxpc3QgKSB7CgkJCQlpZiAoICFmbGFncy5vbmNlICkgewoJCQkJCWlm
ICggc3RhY2sgJiYgc3RhY2subGVuZ3RoICkgewoJCQkJCQltZW1vcnkgPSBzdGFj
ay5zaGlmdCgpOwoJCQkJCQlzZWxmLmZpcmVXaXRoKCBtZW1vcnlbIDAgXSwgbWVt
b3J5WyAxIF0gKTsKCQkJCQl9CgkJCQl9IGVsc2UgaWYgKCBtZW1vcnkgPT09IHRy
dWUgKSB7CgkJCQkJc2VsZi5kaXNhYmxlKCk7CgkJCQl9IGVsc2UgewoJCQkJCWxp
c3QgPSBbXTsKCQkJCX0KCQkJfQoJCX0sCgkJLy8gQWN0dWFsIENhbGxiYWNrcyBv
YmplY3QKCQlzZWxmID0gewoJCQkvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxl
Y3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0CgkJCWFkZDogZnVuY3Rpb24o
KSB7CgkJCQlpZiAoIGxpc3QgKSB7CgkJCQkJdmFyIGxlbmd0aCA9IGxpc3QubGVu
Z3RoOwoJCQkJCWFkZCggYXJndW1lbnRzICk7CgkJCQkJLy8gRG8gd2UgbmVlZCB0
byBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGUKCQkJCQkvLyBjdXJyZW50IGZpcmlu
ZyBiYXRjaD8KCQkJCQlpZiAoIGZpcmluZyApIHsKCQkJCQkJZmlyaW5nTGVuZ3Ro
ID0gbGlzdC5sZW5ndGg7CgkJCQkJLy8gV2l0aCBtZW1vcnksIGlmIHdlJ3JlIG5v
dCBmaXJpbmcgdGhlbgoJCQkJCS8vIHdlIHNob3VsZCBjYWxsIHJpZ2h0IGF3YXks
IHVubGVzcyBwcmV2aW91cwoJCQkJCS8vIGZpcmluZyB3YXMgaGFsdGVkIChzdG9w
T25GYWxzZSkKCQkJCQl9IGVsc2UgaWYgKCBtZW1vcnkgJiYgbWVtb3J5ICE9PSB0
cnVlICkgewoJCQkJCQlmaXJpbmdTdGFydCA9IGxlbmd0aDsKCQkJCQkJZmlyZSgg
bWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICk7CgkJCQkJfQoJCQkJfQoJCQkJcmV0
dXJuIHRoaXM7CgkJCX0sCgkJCS8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhl
IGxpc3QKCQkJcmVtb3ZlOiBmdW5jdGlvbigpIHsKCQkJCWlmICggbGlzdCApIHsK
CQkJCQl2YXIgYXJncyA9IGFyZ3VtZW50cywKCQkJCQkJYXJnSW5kZXggPSAwLAoJ
CQkJCQlhcmdMZW5ndGggPSBhcmdzLmxlbmd0aDsKCQkJCQlmb3IgKCA7IGFyZ0lu
ZGV4IDwgYXJnTGVuZ3RoIDsgYXJnSW5kZXgrKyApIHsKCQkJCQkJZm9yICggdmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKyApIHsKCQkJCQkJCWlmICggYXJn
c1sgYXJnSW5kZXggXSA9PT0gbGlzdFsgaSBdICkgewoJCQkJCQkJCS8vIEhhbmRs
ZSBmaXJpbmdJbmRleCBhbmQgZmlyaW5nTGVuZ3RoCgkJCQkJCQkJaWYgKCBmaXJp
bmcgKSB7CgkJCQkJCQkJCWlmICggaSA8PSBmaXJpbmdMZW5ndGggKSB7CgkJCQkJ
CQkJCQlmaXJpbmdMZW5ndGgtLTsKCQkJCQkJCQkJCWlmICggaSA8PSBmaXJpbmdJ
bmRleCApIHsKCQkJCQkJCQkJCQlmaXJpbmdJbmRleC0tOwoJCQkJCQkJCQkJfQoJ
CQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJCS8vIFJlbW92ZSB0aGUgZWxlbWVu
dAoJCQkJCQkJCWxpc3Quc3BsaWNlKCBpLS0sIDEgKTsKCQkJCQkJCQkvLyBJZiB3
ZSBoYXZlIHNvbWUgdW5pY2l0eSBwcm9wZXJ0eSB0aGVuCgkJCQkJCQkJLy8gd2Ug
b25seSBuZWVkIHRvIGRvIHRoaXMgb25jZQoJCQkJCQkJCWlmICggZmxhZ3MudW5p
cXVlICkgewoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJ
CX0KCQkJCQl9CgkJCQl9CgkJCQlyZXR1cm4gdGhpczsKCQkJfSwKCQkJLy8gQ29u
dHJvbCBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0CgkJCWhhczog
ZnVuY3Rpb24oIGZuICkgewoJCQkJaWYgKCBsaXN0ICkgewoJCQkJCXZhciBpID0g
MCwKCQkJCQkJbGVuZ3RoID0gbGlzdC5sZW5ndGg7CgkJCQkJZm9yICggOyBpIDwg
bGVuZ3RoOyBpKysgKSB7CgkJCQkJCWlmICggZm4gPT09IGxpc3RbIGkgXSApIHsK
CQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJcmV0
dXJuIGZhbHNlOwoJCQl9LAoJCQkvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9t
IHRoZSBsaXN0CgkJCWVtcHR5OiBmdW5jdGlvbigpIHsKCQkJCWxpc3QgPSBbXTsK
CQkJCXJldHVybiB0aGlzOwoJCQl9LAoJCQkvLyBIYXZlIHRoZSBsaXN0IGRvIG5v
dGhpbmcgYW55bW9yZQoJCQlkaXNhYmxlOiBmdW5jdGlvbigpIHsKCQkJCWxpc3Qg
PSBzdGFjayA9IG1lbW9yeSA9IHVuZGVmaW5lZDsKCQkJCXJldHVybiB0aGlzOwoJ
CQl9LAoJCQkvLyBJcyBpdCBkaXNhYmxlZD8KCQkJZGlzYWJsZWQ6IGZ1bmN0aW9u
KCkgewoJCQkJcmV0dXJuICFsaXN0OwoJCQl9LAoJCQkvLyBMb2NrIHRoZSBsaXN0
IGluIGl0cyBjdXJyZW50IHN0YXRlCgkJCWxvY2s6IGZ1bmN0aW9uKCkgewoJCQkJ
c3RhY2sgPSB1bmRlZmluZWQ7CgkJCQlpZiAoICFtZW1vcnkgfHwgbWVtb3J5ID09
PSB0cnVlICkgewoJCQkJCXNlbGYuZGlzYWJsZSgpOwoJCQkJfQoJCQkJcmV0dXJu
IHRoaXM7CgkJCX0sCgkJCS8vIElzIGl0IGxvY2tlZD8KCQkJbG9ja2VkOiBmdW5j
dGlvbigpIHsKCQkJCXJldHVybiAhc3RhY2s7CgkJCX0sCgkJCS8vIENhbGwgYWxs
IGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVudHMK
CQkJZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkgewoJCQkJaWYg
KCBzdGFjayApIHsKCQkJCQlpZiAoIGZpcmluZyApIHsKCQkJCQkJaWYgKCAhZmxh
Z3Mub25jZSApIHsKCQkJCQkJCXN0YWNrLnB1c2goIFsgY29udGV4dCwgYXJncyBd
ICk7CgkJCQkJCX0KCQkJCQl9IGVsc2UgaWYgKCAhKCBmbGFncy5vbmNlICYmIG1l
bW9yeSApICkgewoJCQkJCQlmaXJlKCBjb250ZXh0LCBhcmdzICk7CgkJCQkJfQoJ
CQkJfQoJCQkJcmV0dXJuIHRoaXM7CgkJCX0sCgkJCS8vIENhbGwgYWxsIHRoZSBj
YWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzCgkJCWZpcmU6IGZ1bmN0
aW9uKCkgewoJCQkJc2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7CgkJ
CQlyZXR1cm4gdGhpczsKCQkJfSwKCQkJLy8gVG8ga25vdyBpZiB0aGUgY2FsbGJh
Y2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlCgkJCWZp
cmVkOiBmdW5jdGlvbigpIHsKCQkJCXJldHVybiAhIW1lbW9yeTsKCQkJfQoJCX07
CgoJcmV0dXJuIHNlbGY7Cn07CgoKCgp2YXIgLy8gU3RhdGljIHJlZmVyZW5jZSB0
byBzbGljZQoJc2xpY2VEZWZlcnJlZCA9IFtdLnNsaWNlOwoKalF1ZXJ5LmV4dGVu
ZCh7CgoJRGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkgewoJCXZhciBkb25lTGlz
dCA9IGpRdWVyeS5DYWxsYmFja3MoICJvbmNlIG1lbW9yeSIgKSwKCQkJZmFpbExp
c3QgPSBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCgkJCXByb2dy
ZXNzTGlzdCA9IGpRdWVyeS5DYWxsYmFja3MoICJtZW1vcnkiICksCgkJCXN0YXRl
ID0gInBlbmRpbmciLAoJCQlsaXN0cyA9IHsKCQkJCXJlc29sdmU6IGRvbmVMaXN0
LAoJCQkJcmVqZWN0OiBmYWlsTGlzdCwKCQkJCW5vdGlmeTogcHJvZ3Jlc3NMaXN0
CgkJCX0sCgkJCXByb21pc2UgPSB7CgkJCQlkb25lOiBkb25lTGlzdC5hZGQsCgkJ
CQlmYWlsOiBmYWlsTGlzdC5hZGQsCgkJCQlwcm9ncmVzczogcHJvZ3Jlc3NMaXN0
LmFkZCwKCgkJCQlzdGF0ZTogZnVuY3Rpb24oKSB7CgkJCQkJcmV0dXJuIHN0YXRl
OwoJCQkJfSwKCgkJCQkvLyBEZXByZWNhdGVkCgkJCQlpc1Jlc29sdmVkOiBkb25l
TGlzdC5maXJlZCwKCQkJCWlzUmVqZWN0ZWQ6IGZhaWxMaXN0LmZpcmVkLAoKCQkJ
CXRoZW46IGZ1bmN0aW9uKCBkb25lQ2FsbGJhY2tzLCBmYWlsQ2FsbGJhY2tzLCBw
cm9ncmVzc0NhbGxiYWNrcyApIHsKCQkJCQlkZWZlcnJlZC5kb25lKCBkb25lQ2Fs
bGJhY2tzICkuZmFpbCggZmFpbENhbGxiYWNrcyApLnByb2dyZXNzKCBwcm9ncmVz
c0NhbGxiYWNrcyApOwoJCQkJCXJldHVybiB0aGlzOwoJCQkJfSwKCQkJCWFsd2F5
czogZnVuY3Rpb24oKSB7CgkJCQkJZGVmZXJyZWQuZG9uZS5hcHBseSggZGVmZXJy
ZWQsIGFyZ3VtZW50cyApLmZhaWwuYXBwbHkoIGRlZmVycmVkLCBhcmd1bWVudHMg
KTsKCQkJCQlyZXR1cm4gdGhpczsKCQkJCX0sCgkJCQlwaXBlOiBmdW5jdGlvbigg
Zm5Eb25lLCBmbkZhaWwsIGZuUHJvZ3Jlc3MgKSB7CgkJCQkJcmV0dXJuIGpRdWVy
eS5EZWZlcnJlZChmdW5jdGlvbiggbmV3RGVmZXIgKSB7CgkJCQkJCWpRdWVyeS5l
YWNoKCB7CgkJCQkJCQlkb25lOiBbIGZuRG9uZSwgInJlc29sdmUiIF0sCgkJCQkJ
CQlmYWlsOiBbIGZuRmFpbCwgInJlamVjdCIgXSwKCQkJCQkJCXByb2dyZXNzOiBb
IGZuUHJvZ3Jlc3MsICJub3RpZnkiIF0KCQkJCQkJfSwgZnVuY3Rpb24oIGhhbmRs
ZXIsIGRhdGEgKSB7CgkJCQkJCQl2YXIgZm4gPSBkYXRhWyAwIF0sCgkJCQkJCQkJ
YWN0aW9uID0gZGF0YVsgMSBdLAoJCQkJCQkJCXJldHVybmVkOwoJCQkJCQkJaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggZm4gKSApIHsKCQkJCQkJCQlkZWZlcnJlZFsg
aGFuZGxlciBdKGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm5lZCA9IGZuLmFw
cGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKCQkJCQkJCQkJaWYgKCByZXR1cm5lZCAm
JiBqUXVlcnkuaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkgewoJCQkJ
CQkJCQkJcmV0dXJuZWQucHJvbWlzZSgpLnRoZW4oIG5ld0RlZmVyLnJlc29sdmUs
IG5ld0RlZmVyLnJlamVjdCwgbmV3RGVmZXIubm90aWZ5ICk7CgkJCQkJCQkJCX0g
ZWxzZSB7CgkJCQkJCQkJCQluZXdEZWZlclsgYWN0aW9uICsgIldpdGgiIF0oIHRo
aXMgPT09IGRlZmVycmVkID8gbmV3RGVmZXIgOiB0aGlzLCBbIHJldHVybmVkIF0g
KTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0pOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJ
CQlkZWZlcnJlZFsgaGFuZGxlciBdKCBuZXdEZWZlclsgYWN0aW9uIF0gKTsKCQkJ
CQkJCX0KCQkJCQkJfSk7CgkJCQkJfSkucHJvbWlzZSgpOwoJCQkJfSwKCQkJCS8v
IEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWQKCQkJCS8vIElmIG9iaiBp
cyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBv
YmplY3QKCQkJCXByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7CgkJCQkJaWYgKCBv
YmogPT0gbnVsbCApIHsKCQkJCQkJb2JqID0gcHJvbWlzZTsKCQkJCQl9IGVsc2Ug
ewoJCQkJCQlmb3IgKCB2YXIga2V5IGluIHByb21pc2UgKSB7CgkJCQkJCQlvYmpb
IGtleSBdID0gcHJvbWlzZVsga2V5IF07CgkJCQkJCX0KCQkJCQl9CgkJCQkJcmV0
dXJuIG9iajsKCQkJCX0KCQkJfSwKCQkJZGVmZXJyZWQgPSBwcm9taXNlLnByb21p
c2Uoe30pLAoJCQlrZXk7CgoJCWZvciAoIGtleSBpbiBsaXN0cyApIHsKCQkJZGVm
ZXJyZWRbIGtleSBdID0gbGlzdHNbIGtleSBdLmZpcmU7CgkJCWRlZmVycmVkWyBr
ZXkgKyAiV2l0aCIgXSA9IGxpc3RzWyBrZXkgXS5maXJlV2l0aDsKCQl9CgoJCS8v
IEhhbmRsZSBzdGF0ZQoJCWRlZmVycmVkLmRvbmUoIGZ1bmN0aW9uKCkgewoJCQlz
dGF0ZSA9ICJyZXNvbHZlZCI7CgkJfSwgZmFpbExpc3QuZGlzYWJsZSwgcHJvZ3Jl
c3NMaXN0LmxvY2sgKS5mYWlsKCBmdW5jdGlvbigpIHsKCQkJc3RhdGUgPSAicmVq
ZWN0ZWQiOwoJCX0sIGRvbmVMaXN0LmRpc2FibGUsIHByb2dyZXNzTGlzdC5sb2Nr
ICk7CgoJCS8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnkKCQlpZiAoIGZ1bmMgKSB7
CgkJCWZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7CgkJfQoKCQkvLyBB
bGwgZG9uZSEKCQlyZXR1cm4gZGVmZXJyZWQ7Cgl9LAoKCS8vIERlZmVycmVkIGhl
bHBlcgoJd2hlbjogZnVuY3Rpb24oIGZpcnN0UGFyYW0gKSB7CgkJdmFyIGFyZ3Mg
PSBzbGljZURlZmVycmVkLmNhbGwoIGFyZ3VtZW50cywgMCApLAoJCQlpID0gMCwK
CQkJbGVuZ3RoID0gYXJncy5sZW5ndGgsCgkJCXBWYWx1ZXMgPSBuZXcgQXJyYXko
IGxlbmd0aCApLAoJCQljb3VudCA9IGxlbmd0aCwKCQkJcENvdW50ID0gbGVuZ3Ro
LAoJCQlkZWZlcnJlZCA9IGxlbmd0aCA8PSAxICYmIGZpcnN0UGFyYW0gJiYgalF1
ZXJ5LmlzRnVuY3Rpb24oIGZpcnN0UGFyYW0ucHJvbWlzZSApID8KCQkJCWZpcnN0
UGFyYW0gOgoJCQkJalF1ZXJ5LkRlZmVycmVkKCksCgkJCXByb21pc2UgPSBkZWZl
cnJlZC5wcm9taXNlKCk7CgkJZnVuY3Rpb24gcmVzb2x2ZUZ1bmMoIGkgKSB7CgkJ
CXJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7CgkJCQlhcmdzWyBpIF0gPSBhcmd1
bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlRGVmZXJyZWQuY2FsbCggYXJndW1lbnRz
LCAwICkgOiB2YWx1ZTsKCQkJCWlmICggISggLS1jb3VudCApICkgewoJCQkJCWRl
ZmVycmVkLnJlc29sdmVXaXRoKCBkZWZlcnJlZCwgYXJncyApOwoJCQkJfQoJCQl9
OwoJCX0KCQlmdW5jdGlvbiBwcm9ncmVzc0Z1bmMoIGkgKSB7CgkJCXJldHVybiBm
dW5jdGlvbiggdmFsdWUgKSB7CgkJCQlwVmFsdWVzWyBpIF0gPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IHNsaWNlRGVmZXJyZWQuY2FsbCggYXJndW1lbnRzLCAwICkg
OiB2YWx1ZTsKCQkJCWRlZmVycmVkLm5vdGlmeVdpdGgoIHByb21pc2UsIHBWYWx1
ZXMgKTsKCQkJfTsKCQl9CgkJaWYgKCBsZW5ndGggPiAxICkgewoJCQlmb3IgKCA7
IGkgPCBsZW5ndGg7IGkrKyApIHsKCQkJCWlmICggYXJnc1sgaSBdICYmIGFyZ3Nb
IGkgXS5wcm9taXNlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBhcmdzWyBpIF0ucHJv
bWlzZSApICkgewoJCQkJCWFyZ3NbIGkgXS5wcm9taXNlKCkudGhlbiggcmVzb2x2
ZUZ1bmMoaSksIGRlZmVycmVkLnJlamVjdCwgcHJvZ3Jlc3NGdW5jKGkpICk7CgkJ
CQl9IGVsc2UgewoJCQkJCS0tY291bnQ7CgkJCQl9CgkJCX0KCQkJaWYgKCAhY291
bnQgKSB7CgkJCQlkZWZlcnJlZC5yZXNvbHZlV2l0aCggZGVmZXJyZWQsIGFyZ3Mg
KTsKCQkJfQoJCX0gZWxzZSBpZiAoIGRlZmVycmVkICE9PSBmaXJzdFBhcmFtICkg
ewoJCQlkZWZlcnJlZC5yZXNvbHZlV2l0aCggZGVmZXJyZWQsIGxlbmd0aCA/IFsg
Zmlyc3RQYXJhbSBdIDogW10gKTsKCQl9CgkJcmV0dXJuIHByb21pc2U7Cgl9Cn0p
OwoKCgoKalF1ZXJ5LnN1cHBvcnQgPSAoZnVuY3Rpb24oKSB7CgoJdmFyIHN1cHBv
cnQsCgkJYWxsLAoJCWEsCgkJc2VsZWN0LAoJCW9wdCwKCQlpbnB1dCwKCQltYXJn
aW5EaXYsCgkJZnJhZ21lbnQsCgkJdGRzLAoJCWV2ZW50cywKCQlldmVudE5hbWUs
CgkJaSwKCQlpc1N1cHBvcnRlZCwKCQlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCAiZGl2IiApLAoJCWRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudDsKCgkvLyBQcmVsaW1pbmFyeSB0ZXN0cwoJZGl2LnNldEF0dHJp
YnV0ZSgiY2xhc3NOYW1lIiwgInQiKTsKCWRpdi5pbm5lckhUTUwgPSAiICAgPGxp
bmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtm
bG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2ti
b3gnLz4iOwoKCWFsbCA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSggIioiICk7
CglhID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAiYSIgKVsgMCBdOwoKCS8v
IENhbid0IGdldCBiYXNpYyB0ZXN0IHN1cHBvcnQKCWlmICggIWFsbCB8fCAhYWxs
Lmxlbmd0aCB8fCAhYSApIHsKCQlyZXR1cm4ge307Cgl9CgoJLy8gRmlyc3QgYmF0
Y2ggb2Ygc3VwcG9ydHMgdGVzdHMKCXNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoICJzZWxlY3QiICk7CglvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpICk7CglpbnB1dCA9IGRpdi5n
ZXRFbGVtZW50c0J5VGFnTmFtZSggImlucHV0IiApWyAwIF07CgoJc3VwcG9ydCA9
IHsKCQkvLyBJRSBzdHJpcHMgbGVhZGluZyB3aGl0ZXNwYWNlIHdoZW4gLmlubmVy
SFRNTCBpcyB1c2VkCgkJbGVhZGluZ1doaXRlc3BhY2U6ICggZGl2LmZpcnN0Q2hp
bGQubm9kZVR5cGUgPT09IDMgKSwKCgkJLy8gTWFrZSBzdXJlIHRoYXQgdGJvZHkg
ZWxlbWVudHMgYXJlbid0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQKCQkvLyBJRSB3
aWxsIGluc2VydCB0aGVtIGludG8gZW1wdHkgdGFibGVzCgkJdGJvZHk6ICFkaXYu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLAoKCQkvLyBNYWtl
IHN1cmUgdGhhdCBsaW5rIGVsZW1lbnRzIGdldCBzZXJpYWxpemVkIGNvcnJlY3Rs
eSBieSBpbm5lckhUTUwKCQkvLyBUaGlzIHJlcXVpcmVzIGEgd3JhcHBlciBlbGVt
ZW50IGluIElFCgkJaHRtbFNlcmlhbGl6ZTogISFkaXYuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpbmsiKS5sZW5ndGgsCgoJCS8vIEdldCB0aGUgc3R5bGUgaW5mb3Jt
YXRpb24gZnJvbSBnZXRBdHRyaWJ1dGUKCQkvLyAoSUUgdXNlcyAuY3NzVGV4dCBp
bnN0ZWFkKQoJCXN0eWxlOiAvdG9wLy50ZXN0KCBhLmdldEF0dHJpYnV0ZSgic3R5
bGUiKSApLAoKCQkvLyBNYWtlIHN1cmUgdGhhdCBVUkxzIGFyZW4ndCBtYW5pcHVs
YXRlZAoJCS8vIChJRSBub3JtYWxpemVzIGl0IGJ5IGRlZmF1bHQpCgkJaHJlZk5v
cm1hbGl6ZWQ6ICggYS5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9PT0gIi9hIiApLAoK
CQkvLyBNYWtlIHN1cmUgdGhhdCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzCgkJLy8g
KElFIHVzZXMgZmlsdGVyIGluc3RlYWQpCgkJLy8gVXNlIGEgcmVnZXggdG8gd29y
ayBhcm91bmQgYSBXZWJLaXQgaXNzdWUuIFNlZSAjNTE0NQoJCW9wYWNpdHk6IC9e
MC41NS8udGVzdCggYS5zdHlsZS5vcGFjaXR5ICksCgoJCS8vIFZlcmlmeSBzdHls
ZSBmbG9hdCBleGlzdGVuY2UKCQkvLyAoSUUgdXNlcyBzdHlsZUZsb2F0IGluc3Rl
YWQgb2YgY3NzRmxvYXQpCgkJY3NzRmxvYXQ6ICEhYS5zdHlsZS5jc3NGbG9hdCwK
CgkJLy8gTWFrZSBzdXJlIHRoYXQgaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkIGZv
ciBhIGNoZWNrYm94CgkJLy8gdGhhdCBpdCBkZWZhdWx0cyB0byAib24iLgoJCS8v
IChXZWJLaXQgZGVmYXVsdHMgdG8gIiIgaW5zdGVhZCkKCQljaGVja09uOiAoIGlu
cHV0LnZhbHVlID09PSAib24iICksCgoJCS8vIE1ha2Ugc3VyZSB0aGF0IGEgc2Vs
ZWN0ZWQtYnktZGVmYXVsdCBvcHRpb24gaGFzIGEgd29ya2luZyBzZWxlY3RlZCBw
cm9wZXJ0eS4KCQkvLyAoV2ViS2l0IGRlZmF1bHRzIHRvIGZhbHNlIGluc3RlYWQg
b2YgdHJ1ZSwgSUUgdG9vLCBpZiBpdCdzIGluIGFuIG9wdGdyb3VwKQoJCW9wdFNl
bGVjdGVkOiBvcHQuc2VsZWN0ZWQsCgoJCS8vIFRlc3Qgc2V0QXR0cmlidXRlIG9u
IGNhbWVsQ2FzZSBjbGFzcy4gSWYgaXQgd29ya3MsIHdlIG5lZWQgYXR0ckZpeGVz
IHdoZW4gZG9pbmcgZ2V0L3NldEF0dHJpYnV0ZSAoaWU2LzcpCgkJZ2V0U2V0QXR0
cmlidXRlOiBkaXYuY2xhc3NOYW1lICE9PSAidCIsCgoJCS8vIFRlc3RzIGZvciBl
bmN0eXBlIHN1cHBvcnQgb24gYSBmb3JtKCM2NzQzKQoJCWVuY3R5cGU6ICEhZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsCgoJCS8vIE1ha2Vz
IHN1cmUgY2xvbmluZyBhbiBodG1sNSBlbGVtZW50IGRvZXMgbm90IGNhdXNlIHBy
b2JsZW1zCgkJLy8gV2hlcmUgb3V0ZXJIVE1MIGlzIHVuZGVmaW5lZCwgdGhpcyBz
dGlsbCB3b3JrcwoJCWh0bWw1Q2xvbmU6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im5hdiIpLmNsb25lTm9kZSggdHJ1ZSApLm91dGVySFRNTCAhPT0gIjw6bmF2Pjwv
Om5hdj4iLAoKCQkvLyBXaWxsIGJlIGRlZmluZWQgbGF0ZXIKCQlzdWJtaXRCdWJi
bGVzOiB0cnVlLAoJCWNoYW5nZUJ1YmJsZXM6IHRydWUsCgkJZm9jdXNpbkJ1YmJs
ZXM6IGZhbHNlLAoJCWRlbGV0ZUV4cGFuZG86IHRydWUsCgkJbm9DbG9uZUV2ZW50
OiB0cnVlLAoJCWlubGluZUJsb2NrTmVlZHNMYXlvdXQ6IGZhbHNlLAoJCXNocmlu
a1dyYXBCbG9ja3M6IGZhbHNlLAoJCXJlbGlhYmxlTWFyZ2luUmlnaHQ6IHRydWUK
CX07CgoJLy8gTWFrZSBzdXJlIGNoZWNrZWQgc3RhdHVzIGlzIHByb3Blcmx5IGNs
b25lZAoJaW5wdXQuY2hlY2tlZCA9IHRydWU7CglzdXBwb3J0Lm5vQ2xvbmVDaGVj
a2VkID0gaW5wdXQuY2xvbmVOb2RlKCB0cnVlICkuY2hlY2tlZDsKCgkvLyBNYWtl
IHN1cmUgdGhhdCB0aGUgb3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2VsZWN0cyBh
cmVuJ3QgbWFya2VkIGFzIGRpc2FibGVkCgkvLyAoV2ViS2l0IG1hcmtzIHRoZW0g
YXMgZGlzYWJsZWQpCglzZWxlY3QuZGlzYWJsZWQgPSB0cnVlOwoJc3VwcG9ydC5v
cHREaXNhYmxlZCA9ICFvcHQuZGlzYWJsZWQ7CgoJLy8gVGVzdCB0byBzZWUgaWYg
aXQncyBwb3NzaWJsZSB0byBkZWxldGUgYW4gZXhwYW5kbyBmcm9tIGFuIGVsZW1l
bnQKCS8vIEZhaWxzIGluIEludGVybmV0IEV4cGxvcmVyCgl0cnkgewoJCWRlbGV0
ZSBkaXYudGVzdDsKCX0gY2F0Y2goIGUgKSB7CgkJc3VwcG9ydC5kZWxldGVFeHBh
bmRvID0gZmFsc2U7Cgl9CgoJaWYgKCAhZGl2LmFkZEV2ZW50TGlzdGVuZXIgJiYg
ZGl2LmF0dGFjaEV2ZW50ICYmIGRpdi5maXJlRXZlbnQgKSB7CgkJZGl2LmF0dGFj
aEV2ZW50KCAib25jbGljayIsIGZ1bmN0aW9uKCkgewoJCQkvLyBDbG9uaW5nIGEg
bm9kZSBzaG91bGRuJ3QgY29weSBvdmVyIGFueQoJCQkvLyBib3VuZCBldmVudCBo
YW5kbGVycyAoSUUgZG9lcyB0aGlzKQoJCQlzdXBwb3J0Lm5vQ2xvbmVFdmVudCA9
IGZhbHNlOwoJCX0pOwoJCWRpdi5jbG9uZU5vZGUoIHRydWUgKS5maXJlRXZlbnQo
ICJvbmNsaWNrIiApOwoJfQoKCS8vIENoZWNrIGlmIGEgcmFkaW8gbWFpbnRhaW5z
IGl0cyB2YWx1ZQoJLy8gYWZ0ZXIgYmVpbmcgYXBwZW5kZWQgdG8gdGhlIERPTQoJ
aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwoJaW5wdXQu
dmFsdWUgPSAidCI7CglpbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFkaW8i
KTsKCXN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSAidCI7CgoJ
aW5wdXQuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgImNoZWNrZWQiKTsKCWRpdi5h
cHBlbmRDaGlsZCggaW5wdXQgKTsKCWZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOwoJZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRpdi5s
YXN0Q2hpbGQgKTsKCgkvLyBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0
YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHMKCXN1cHBvcnQuY2hlY2tDbG9uZSA9
IGZyYWdtZW50LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxh
c3RDaGlsZC5jaGVja2VkOwoKCS8vIENoZWNrIGlmIGEgZGlzY29ubmVjdGVkIGNo
ZWNrYm94IHdpbGwgcmV0YWluIGl0cyBjaGVja2VkCgkvLyB2YWx1ZSBvZiB0cnVl
IGFmdGVyIGFwcGVuZGVkIHRvIHRoZSBET00gKElFNi83KQoJc3VwcG9ydC5hcHBl
bmRDaGVja2VkID0gaW5wdXQuY2hlY2tlZDsKCglmcmFnbWVudC5yZW1vdmVDaGls
ZCggaW5wdXQgKTsKCWZyYWdtZW50LmFwcGVuZENoaWxkKCBkaXYgKTsKCglkaXYu
aW5uZXJIVE1MID0gIiI7CgoJLy8gQ2hlY2sgaWYgZGl2IHdpdGggZXhwbGljaXQg
d2lkdGggYW5kIG5vIG1hcmdpbi1yaWdodCBpbmNvcnJlY3RseQoJLy8gZ2V0cyBj
b21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVy
LiBGb3IgbW9yZQoJLy8gaW5mbyBzZWUgYnVnICMzMzMzCgkvLyBGYWlscyBpbiBX
ZWJLaXQgYmVmb3JlIEZlYiAyMDExIG5pZ2h0bGllcwoJLy8gV2ViS2l0IEJ1ZyAx
MzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3Ig
bWFyZ2luLXJpZ2h0CglpZiAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlICkgewoJ
CW1hcmdpbkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICk7CgkJ
bWFyZ2luRGl2LnN0eWxlLndpZHRoID0gIjAiOwoJCW1hcmdpbkRpdi5zdHlsZS5t
YXJnaW5SaWdodCA9ICIwIjsKCQlkaXYuc3R5bGUud2lkdGggPSAiMnB4IjsKCQlk
aXYuYXBwZW5kQ2hpbGQoIG1hcmdpbkRpdiApOwoJCXN1cHBvcnQucmVsaWFibGVN
YXJnaW5SaWdodCA9CgkJCSggcGFyc2VJbnQoICggd2luZG93LmdldENvbXB1dGVk
U3R5bGUoIG1hcmdpbkRpdiwgbnVsbCApIHx8IHsgbWFyZ2luUmlnaHQ6IDAgfSAp
Lm1hcmdpblJpZ2h0LCAxMCApIHx8IDAgKSA9PT0gMDsKCX0KCgkvLyBUZWNobmlx
dWUgZnJvbSBKdXJpeSBaYXl0c2V2CgkvLyBodHRwOi8vcGVyZmVjdGlvbmtpbGxz
LmNvbS9kZXRlY3RpbmctZXZlbnQtc3VwcG9ydC13aXRob3V0LWJyb3dzZXItc25p
ZmZpbmcvCgkvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgbm9u
LXN0YW5kYXJkIGV2ZW50IHN5c3RlbXMKCS8vIGFyZSB1c2VkLCBuYW1lbHkgaW4g
SUUuIFNob3J0LWNpcmN1aXRpbmcgaGVyZSBoZWxwcyB1cyB0bwoJLy8gYXZvaWQg
YW4gZXZhbCBjYWxsIChpbiBzZXRBdHRyaWJ1dGUpIHdoaWNoIGNhbiBjYXVzZSBD
U1AKCS8vIHRvIGdvIGhheXdpcmUuIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96
aWxsYS5vcmcvZW4vU2VjdXJpdHkvQ1NQCglpZiAoIGRpdi5hdHRhY2hFdmVudCAp
IHsKCQlmb3IoIGkgaW4gewoJCQlzdWJtaXQ6IDEsCgkJCWNoYW5nZTogMSwKCQkJ
Zm9jdXNpbjogMQoJCX0pIHsKCQkJZXZlbnROYW1lID0gIm9uIiArIGk7CgkJCWlz
U3VwcG9ydGVkID0gKCBldmVudE5hbWUgaW4gZGl2ICk7CgkJCWlmICggIWlzU3Vw
cG9ydGVkICkgewoJCQkJZGl2LnNldEF0dHJpYnV0ZSggZXZlbnROYW1lLCAicmV0
dXJuOyIgKTsKCQkJCWlzU3VwcG9ydGVkID0gKCB0eXBlb2YgZGl2WyBldmVudE5h
bWUgXSA9PT0gImZ1bmN0aW9uIiApOwoJCQl9CgkJCXN1cHBvcnRbIGkgKyAiQnVi
YmxlcyIgXSA9IGlzU3VwcG9ydGVkOwoJCX0KCX0KCglmcmFnbWVudC5yZW1vdmVD
aGlsZCggZGl2ICk7CgoJLy8gTnVsbCBlbGVtZW50cyB0byBhdm9pZCBsZWFrcyBp
biBJRQoJZnJhZ21lbnQgPSBzZWxlY3QgPSBvcHQgPSBtYXJnaW5EaXYgPSBkaXYg
PSBpbnB1dCA9IG51bGw7CgoJLy8gUnVuIHRlc3RzIHRoYXQgbmVlZCBhIGJvZHkg
YXQgZG9jIHJlYWR5CglqUXVlcnkoZnVuY3Rpb24oKSB7CgkJdmFyIGNvbnRhaW5l
ciwgb3V0ZXIsIGlubmVyLCB0YWJsZSwgdGQsIG9mZnNldFN1cHBvcnQsCgkJCWNv
bk1hcmdpblRvcCwgcHRsbSwgdmIsIHN0eWxlLCBodG1sLAoJCQlib2R5ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKCgkJaWYgKCAh
Ym9keSApIHsKCQkJLy8gUmV0dXJuIGZvciBmcmFtZXNldCBkb2NzIHRoYXQgZG9u
J3QgaGF2ZSBhIGJvZHkKCQkJcmV0dXJuOwoJCX0KCgkJY29uTWFyZ2luVG9wID0g
MTsKCQlwdGxtID0gInBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0
aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46MDsiOwoJCXZiID0gInZpc2liaWxpdHk6
aGlkZGVuO2JvcmRlcjowOyI7CgkJc3R5bGUgPSAic3R5bGU9JyIgKyBwdGxtICsg
ImJvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7JyI7CgkJaHRtbCA9ICI8
ZGl2ICIgKyBzdHlsZSArICI+PGRpdj48L2Rpdj48L2Rpdj4iICsKCQkJIjx0YWJs
ZSAiICsgc3R5bGUgKyAiIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+
IiArCgkJCSI8dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiI7CgoJCWNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoJCWNvbnRhaW5lci5z
dHlsZS5jc3NUZXh0ID0gdmIgKyAid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpz
dGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiICsgY29uTWFyZ2luVG9wICsgInB4IjsK
CQlib2R5Lmluc2VydEJlZm9yZSggY29udGFpbmVyLCBib2R5LmZpcnN0Q2hpbGQg
KTsKCgkJLy8gQ29uc3RydWN0IHRoZSB0ZXN0IGVsZW1lbnQKCQlkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKCQljb250YWluZXIuYXBwZW5kQ2hp
bGQoIGRpdiApOwoKCQkvLyBDaGVjayBpZiB0YWJsZSBjZWxscyBzdGlsbCBoYXZl
IG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldAoJCS8vIHRvIGRp
c3BsYXk6bm9uZSBhbmQgdGhlcmUgYXJlIHN0aWxsIG90aGVyIHZpc2libGUgdGFi
bGUgY2VsbHMgaW4gYQoJCS8vIHRhYmxlIHJvdzsgaWYgc28sIG9mZnNldFdpZHRo
L0hlaWdodCBhcmUgbm90IHJlbGlhYmxlIGZvciB1c2Ugd2hlbgoJCS8vIGRldGVy
bWluaW5nIGlmIGFuIGVsZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRpcmVjdGx5IHVz
aW5nCgkJLy8gZGlzcGxheTpub25lIChpdCBpcyBzdGlsbCBzYWZlIHRvIHVzZSBv
ZmZzZXRzIGlmIGEgcGFyZW50IGVsZW1lbnQgaXMKCQkvLyBoaWRkZW47IGRvbiBz
YWZldHkgZ29nZ2xlcyBhbmQgc2VlIGJ1ZyAjNDUxMiBmb3IgbW9yZSBpbmZvcm1h
dGlvbikuCgkJLy8gKG9ubHkgSUUgOCBmYWlscyB0aGlzIHRlc3QpCgkJZGl2Lmlu
bmVySFRNTCA9ICI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRl
cjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiI7
CgkJdGRzID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAidGQiICk7CgkJaXNT
dXBwb3J0ZWQgPSAoIHRkc1sgMCBdLm9mZnNldEhlaWdodCA9PT0gMCApOwoKCQl0
ZHNbIDAgXS5zdHlsZS5kaXNwbGF5ID0gIiI7CgkJdGRzWyAxIF0uc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKCgkJLy8gQ2hlY2sgaWYgZW1wdHkgdGFibGUgY2VsbHMg
c3RpbGwgaGF2ZSBvZmZzZXRXaWR0aC9IZWlnaHQKCQkvLyAoSUUgPD0gOCBmYWls
IHRoaXMgdGVzdCkKCQlzdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyA9IGlz
U3VwcG9ydGVkICYmICggdGRzWyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAwICk7CgoJ
CS8vIEZpZ3VyZSBvdXQgaWYgdGhlIFczQyBib3ggbW9kZWwgd29ya3MgYXMgZXhw
ZWN0ZWQKCQlkaXYuaW5uZXJIVE1MID0gIiI7CgkJZGl2LnN0eWxlLndpZHRoID0g
ZGl2LnN0eWxlLnBhZGRpbmdMZWZ0ID0gIjFweCI7CgkJalF1ZXJ5LmJveE1vZGVs
ID0gc3VwcG9ydC5ib3hNb2RlbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMjsKCgkJ
aWYgKCB0eXBlb2YgZGl2LnN0eWxlLnpvb20gIT09ICJ1bmRlZmluZWQiICkgewoJ
CQkvLyBDaGVjayBpZiBuYXRpdmVseSBibG9jay1sZXZlbCBlbGVtZW50cyBhY3Qg
bGlrZSBpbmxpbmUtYmxvY2sKCQkJLy8gZWxlbWVudHMgd2hlbiBzZXR0aW5nIHRo
ZWlyIGRpc3BsYXkgdG8gJ2lubGluZScgYW5kIGdpdmluZwoJCQkvLyB0aGVtIGxh
eW91dAoJCQkvLyAoSUUgPCA4IGRvZXMgdGhpcykKCQkJZGl2LnN0eWxlLmRpc3Bs
YXkgPSAiaW5saW5lIjsKCQkJZGl2LnN0eWxlLnpvb20gPSAxOwoJCQlzdXBwb3J0
LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgPSAoIGRpdi5vZmZzZXRXaWR0aCA9PT0g
MiApOwoKCQkJLy8gQ2hlY2sgaWYgZWxlbWVudHMgd2l0aCBsYXlvdXQgc2hyaW5r
LXdyYXAgdGhlaXIgY2hpbGRyZW4KCQkJLy8gKElFIDYgZG9lcyB0aGlzKQoJCQlk
aXYuc3R5bGUuZGlzcGxheSA9ICIiOwoJCQlkaXYuaW5uZXJIVE1MID0gIjxkaXYg
c3R5bGU9J3dpZHRoOjRweDsnPjwvZGl2PiI7CgkJCXN1cHBvcnQuc2hyaW5rV3Jh
cEJsb2NrcyA9ICggZGl2Lm9mZnNldFdpZHRoICE9PSAyICk7CgkJfQoKCQlkaXYu
c3R5bGUuY3NzVGV4dCA9IHB0bG0gKyB2YjsKCQlkaXYuaW5uZXJIVE1MID0gaHRt
bDsKCgkJb3V0ZXIgPSBkaXYuZmlyc3RDaGlsZDsKCQlpbm5lciA9IG91dGVyLmZp
cnN0Q2hpbGQ7CgkJdGQgPSBvdXRlci5uZXh0U2libGluZy5maXJzdENoaWxkLmZp
cnN0Q2hpbGQ7CgoJCW9mZnNldFN1cHBvcnQgPSB7CgkJCWRvZXNOb3RBZGRCb3Jk
ZXI6ICggaW5uZXIub2Zmc2V0VG9wICE9PSA1ICksCgkJCWRvZXNBZGRCb3JkZXJG
b3JUYWJsZUFuZENlbGxzOiAoIHRkLm9mZnNldFRvcCA9PT0gNSApCgkJfTsKCgkJ
aW5uZXIuc3R5bGUucG9zaXRpb24gPSAiZml4ZWQiOwoJCWlubmVyLnN0eWxlLnRv
cCA9ICIyMHB4IjsKCgkJLy8gc2FmYXJpIHN1YnRyYWN0cyBwYXJlbnQgYm9yZGVy
IHdpZHRoIGhlcmUgd2hpY2ggaXMgNXB4CgkJb2Zmc2V0U3VwcG9ydC5maXhlZFBv
c2l0aW9uID0gKCBpbm5lci5vZmZzZXRUb3AgPT09IDIwIHx8IGlubmVyLm9mZnNl
dFRvcCA9PT0gMTUgKTsKCQlpbm5lci5zdHlsZS5wb3NpdGlvbiA9IGlubmVyLnN0
eWxlLnRvcCA9ICIiOwoKCQlvdXRlci5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4i
OwoJCW91dGVyLnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIjsKCgkJb2Zmc2V0
U3VwcG9ydC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUgPSAo
IGlubmVyLm9mZnNldFRvcCA9PT0gLTUgKTsKCQlvZmZzZXRTdXBwb3J0LmRvZXNO
b3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ID0gKCBib2R5Lm9mZnNldFRvcCAh
PT0gY29uTWFyZ2luVG9wICk7CgoJCWJvZHkucmVtb3ZlQ2hpbGQoIGNvbnRhaW5l
ciApOwoJCWRpdiAgPSBjb250YWluZXIgPSBudWxsOwoKCQlqUXVlcnkuZXh0ZW5k
KCBzdXBwb3J0LCBvZmZzZXRTdXBwb3J0ICk7Cgl9KTsKCglyZXR1cm4gc3VwcG9y
dDsKfSkoKTsKCgoKCnZhciByYnJhY2UgPSAvXig/Olx7LipcfXxcWy4qXF0pJC8s
CglybXVsdGlEYXNoID0gLyhbQS1aXSkvZzsKCmpRdWVyeS5leHRlbmQoewoJY2Fj
aGU6IHt9LAoKCS8vIFBsZWFzZSB1c2Ugd2l0aCBjYXV0aW9uCgl1dWlkOiAwLAoK
CS8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZQoJ
Ly8gTm9uLWRpZ2l0cyByZW1vdmVkIHRvIG1hdGNoIHJpbmxpbmVqUXVlcnkKCWV4
cGFuZG86ICJqUXVlcnkiICsgKCBqUXVlcnkuZm4uanF1ZXJ5ICsgTWF0aC5yYW5k
b20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAoKCS8vIFRoZSBmb2xsb3dpbmcg
ZWxlbWVudHMgdGhyb3cgdW5jYXRjaGFibGUgZXhjZXB0aW9ucyBpZiB5b3UKCS8v
IGF0dGVtcHQgdG8gYWRkIGV4cGFuZG8gcHJvcGVydGllcyB0byB0aGVtLgoJbm9E
YXRhOiB7CgkJImVtYmVkIjogdHJ1ZSwKCQkvLyBCYW4gYWxsIG9iamVjdHMgZXhj
ZXB0IGZvciBGbGFzaCAod2hpY2ggaGFuZGxlIGV4cGFuZG9zKQoJCSJvYmplY3Qi
OiAiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiwK
CQkiYXBwbGV0IjogdHJ1ZQoJfSwKCgloYXNEYXRhOiBmdW5jdGlvbiggZWxlbSAp
IHsKCQllbGVtID0gZWxlbS5ub2RlVHlwZSA/IGpRdWVyeS5jYWNoZVsgZWxlbVtq
UXVlcnkuZXhwYW5kb10gXSA6IGVsZW1bIGpRdWVyeS5leHBhbmRvIF07CgkJcmV0
dXJuICEhZWxlbSAmJiAhaXNFbXB0eURhdGFPYmplY3QoIGVsZW0gKTsKCX0sCgoJ
ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEsIHB2dCAvKiBJbnRlcm5h
bCBVc2UgT25seSAqLyApIHsKCQlpZiAoICFqUXVlcnkuYWNjZXB0RGF0YSggZWxl
bSApICkgewoJCQlyZXR1cm47CgkJfQoKCQl2YXIgcHJpdmF0ZUNhY2hlLCB0aGlz
Q2FjaGUsIHJldCwKCQkJaW50ZXJuYWxLZXkgPSBqUXVlcnkuZXhwYW5kbywKCQkJ
Z2V0QnlOYW1lID0gdHlwZW9mIG5hbWUgPT09ICJzdHJpbmciLAoKCQkJLy8gV2Ug
aGF2ZSB0byBoYW5kbGUgRE9NIG5vZGVzIGFuZCBKUyBvYmplY3RzIGRpZmZlcmVu
dGx5IGJlY2F1c2UgSUU2LTcKCQkJLy8gY2FuJ3QgR0Mgb2JqZWN0IHJlZmVyZW5j
ZXMgcHJvcGVybHkgYWNyb3NzIHRoZSBET00tSlMgYm91bmRhcnkKCQkJaXNOb2Rl
ID0gZWxlbS5ub2RlVHlwZSwKCgkJCS8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgdGhl
IGdsb2JhbCBqUXVlcnkgY2FjaGU7IEpTIG9iamVjdCBkYXRhIGlzCgkJCS8vIGF0
dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3Qgc28gR0MgY2FuIG9jY3VyIGF1
dG9tYXRpY2FsbHkKCQkJY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBl
bGVtLAoKCQkJLy8gT25seSBkZWZpbmluZyBhbiBJRCBmb3IgSlMgb2JqZWN0cyBp
ZiBpdHMgY2FjaGUgYWxyZWFkeSBleGlzdHMgYWxsb3dzCgkJCS8vIHRoZSBjb2Rl
IHRvIHNob3J0Y3V0IG9uIHRoZSBzYW1lIHBhdGggYXMgYSBET00gbm9kZSB3aXRo
IG5vIGNhY2hlCgkJCWlkID0gaXNOb2RlID8gZWxlbVsgaW50ZXJuYWxLZXkgXSA6
IGVsZW1bIGludGVybmFsS2V5IF0gJiYgaW50ZXJuYWxLZXksCgkJCWlzRXZlbnRz
ID0gbmFtZSA9PT0gImV2ZW50cyI7CgoJCS8vIEF2b2lkIGRvaW5nIGFueSBtb3Jl
IHdvcmsgdGhhbiB3ZSBuZWVkIHRvIHdoZW4gdHJ5aW5nIHRvIGdldCBkYXRhIG9u
IGFuCgkJLy8gb2JqZWN0IHRoYXQgaGFzIG5vIGRhdGEgYXQgYWxsCgkJaWYgKCAo
IWlkIHx8ICFjYWNoZVtpZF0gfHwgKCFpc0V2ZW50cyAmJiAhcHZ0ICYmICFjYWNo
ZVtpZF0uZGF0YSkpICYmIGdldEJ5TmFtZSAmJiBkYXRhID09PSB1bmRlZmluZWQg
KSB7CgkJCXJldHVybjsKCQl9CgoJCWlmICggIWlkICkgewoJCQkvLyBPbmx5IERP
TSBub2RlcyBuZWVkIGEgbmV3IHVuaXF1ZSBJRCBmb3IgZWFjaCBlbGVtZW50IHNp
bmNlIHRoZWlyIGRhdGEKCQkJLy8gZW5kcyB1cCBpbiB0aGUgZ2xvYmFsIGNhY2hl
CgkJCWlmICggaXNOb2RlICkgewoJCQkJZWxlbVsgaW50ZXJuYWxLZXkgXSA9IGlk
ID0gKytqUXVlcnkudXVpZDsKCQkJfSBlbHNlIHsKCQkJCWlkID0gaW50ZXJuYWxL
ZXk7CgkJCX0KCQl9CgoJCWlmICggIWNhY2hlWyBpZCBdICkgewoJCQljYWNoZVsg
aWQgXSA9IHt9OwoKCQkJLy8gQXZvaWRzIGV4cG9zaW5nIGpRdWVyeSBtZXRhZGF0
YSBvbiBwbGFpbiBKUyBvYmplY3RzIHdoZW4gdGhlIG9iamVjdAoJCQkvLyBpcyBz
ZXJpYWxpemVkIHVzaW5nIEpTT04uc3RyaW5naWZ5CgkJCWlmICggIWlzTm9kZSAp
IHsKCQkJCWNhY2hlWyBpZCBdLnRvSlNPTiA9IGpRdWVyeS5ub29wOwoJCQl9CgkJ
fQoKCQkvLyBBbiBvYmplY3QgY2FuIGJlIHBhc3NlZCB0byBqUXVlcnkuZGF0YSBp
bnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBhaXI7IHRoaXMgZ2V0cwoJCS8vIHNoYWxs
b3cgY29waWVkIG92ZXIgb250byB0aGUgZXhpc3RpbmcgY2FjaGUKCQlpZiAoIHR5
cGVvZiBuYW1lID09PSAib2JqZWN0IiB8fCB0eXBlb2YgbmFtZSA9PT0gImZ1bmN0
aW9uIiApIHsKCQkJaWYgKCBwdnQgKSB7CgkJCQljYWNoZVsgaWQgXSA9IGpRdWVy
eS5leHRlbmQoIGNhY2hlWyBpZCBdLCBuYW1lICk7CgkJCX0gZWxzZSB7CgkJCQlj
YWNoZVsgaWQgXS5kYXRhID0galF1ZXJ5LmV4dGVuZCggY2FjaGVbIGlkIF0uZGF0
YSwgbmFtZSApOwoJCQl9CgkJfQoKCQlwcml2YXRlQ2FjaGUgPSB0aGlzQ2FjaGUg
PSBjYWNoZVsgaWQgXTsKCgkJLy8galF1ZXJ5IGRhdGEoKSBpcyBzdG9yZWQgaW4g
YSBzZXBhcmF0ZSBvYmplY3QgaW5zaWRlIHRoZSBvYmplY3QncyBpbnRlcm5hbCBk
YXRhCgkJLy8gY2FjaGUgaW4gb3JkZXIgdG8gYXZvaWQga2V5IGNvbGxpc2lvbnMg
YmV0d2VlbiBpbnRlcm5hbCBkYXRhIGFuZCB1c2VyLWRlZmluZWQKCQkvLyBkYXRh
LgoJCWlmICggIXB2dCApIHsKCQkJaWYgKCAhdGhpc0NhY2hlLmRhdGEgKSB7CgkJ
CQl0aGlzQ2FjaGUuZGF0YSA9IHt9OwoJCQl9CgoJCQl0aGlzQ2FjaGUgPSB0aGlz
Q2FjaGUuZGF0YTsKCQl9CgoJCWlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkgewoJ
CQl0aGlzQ2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSBdID0gZGF0YTsK
CQl9CgoJCS8vIFVzZXJzIHNob3VsZCBub3QgYXR0ZW1wdCB0byBpbnNwZWN0IHRo
ZSBpbnRlcm5hbCBldmVudHMgb2JqZWN0IHVzaW5nIGpRdWVyeS5kYXRhLAoJCS8v
IGl0IGlzIHVuZG9jdW1lbnRlZCBhbmQgc3ViamVjdCB0byBjaGFuZ2UuIEJ1dCBk
b2VzIGFueW9uZSBsaXN0ZW4/IE5vLgoJCWlmICggaXNFdmVudHMgJiYgIXRoaXND
YWNoZVsgbmFtZSBdICkgewoJCQlyZXR1cm4gcHJpdmF0ZUNhY2hlLmV2ZW50czsK
CQl9CgoJCS8vIENoZWNrIGZvciBib3RoIGNvbnZlcnRlZC10by1jYW1lbCBhbmQg
bm9uLWNvbnZlcnRlZCBkYXRhIHByb3BlcnR5IG5hbWVzCgkJLy8gSWYgYSBkYXRh
IHByb3BlcnR5IHdhcyBzcGVjaWZpZWQKCQlpZiAoIGdldEJ5TmFtZSApIHsKCgkJ
CS8vIEZpcnN0IFRyeSB0byBmaW5kIGFzLWlzIHByb3BlcnR5IGRhdGEKCQkJcmV0
ID0gdGhpc0NhY2hlWyBuYW1lIF07CgoJCQkvLyBUZXN0IGZvciBudWxsfHVuZGVm
aW5lZCBwcm9wZXJ0eSBkYXRhCgkJCWlmICggcmV0ID09IG51bGwgKSB7CgoJCQkJ
Ly8gVHJ5IHRvIGZpbmQgdGhlIGNhbWVsQ2FzZWQgcHJvcGVydHkKCQkJCXJldCA9
IHRoaXNDYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApIF07CgkJCX0KCQl9
IGVsc2UgewoJCQlyZXQgPSB0aGlzQ2FjaGU7CgkJfQoKCQlyZXR1cm4gcmV0OwoJ
fSwKCglyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgcHZ0IC8qIElu
dGVybmFsIFVzZSBPbmx5ICovICkgewoJCWlmICggIWpRdWVyeS5hY2NlcHREYXRh
KCBlbGVtICkgKSB7CgkJCXJldHVybjsKCQl9CgoJCXZhciB0aGlzQ2FjaGUsIGks
IGwsCgoJCQkvLyBSZWZlcmVuY2UgdG8gaW50ZXJuYWwgZGF0YSBjYWNoZSBrZXkK
CQkJaW50ZXJuYWxLZXkgPSBqUXVlcnkuZXhwYW5kbywKCgkJCWlzTm9kZSA9IGVs
ZW0ubm9kZVR5cGUsCgoJCQkvLyBTZWUgalF1ZXJ5LmRhdGEgZm9yIG1vcmUgaW5m
b3JtYXRpb24KCQkJY2FjaGUgPSBpc05vZGUgPyBqUXVlcnkuY2FjaGUgOiBlbGVt
LAoKCQkJLy8gU2VlIGpRdWVyeS5kYXRhIGZvciBtb3JlIGluZm9ybWF0aW9uCgkJ
CWlkID0gaXNOb2RlID8gZWxlbVsgaW50ZXJuYWxLZXkgXSA6IGludGVybmFsS2V5
OwoKCQkvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IG5vIGNhY2hlIGVudHJ5IGZvciB0
aGlzIG9iamVjdCwgdGhlcmUgaXMgbm8KCQkvLyBwdXJwb3NlIGluIGNvbnRpbnVp
bmcKCQlpZiAoICFjYWNoZVsgaWQgXSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJaWYg
KCBuYW1lICkgewoKCQkJdGhpc0NhY2hlID0gcHZ0ID8gY2FjaGVbIGlkIF0gOiBj
YWNoZVsgaWQgXS5kYXRhOwoKCQkJaWYgKCB0aGlzQ2FjaGUgKSB7CgoJCQkJLy8g
U3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG5hbWVzIGZv
ciBkYXRhIGtleXMKCQkJCWlmICggIWpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7
CgoJCQkJCS8vIHRyeSB0aGUgc3RyaW5nIGFzIGEga2V5IGJlZm9yZSBhbnkgbWFu
aXB1bGF0aW9uCgkJCQkJaWYgKCBuYW1lIGluIHRoaXNDYWNoZSApIHsKCQkJCQkJ
bmFtZSA9IFsgbmFtZSBdOwoJCQkJCX0gZWxzZSB7CgoJCQkJCQkvLyBzcGxpdCB0
aGUgY2FtZWwgY2FzZWQgdmVyc2lvbiBieSBzcGFjZXMgdW5sZXNzIGEga2V5IHdp
dGggdGhlIHNwYWNlcyBleGlzdHMKCQkJCQkJbmFtZSA9IGpRdWVyeS5jYW1lbENh
c2UoIG5hbWUgKTsKCQkJCQkJaWYgKCBuYW1lIGluIHRoaXNDYWNoZSApIHsKCQkJ
CQkJCW5hbWUgPSBbIG5hbWUgXTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCW5hbWUg
PSBuYW1lLnNwbGl0KCAiICIgKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQlm
b3IgKCBpID0gMCwgbCA9IG5hbWUubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQkJ
CWRlbGV0ZSB0aGlzQ2FjaGVbIG5hbWVbaV0gXTsKCQkJCX0KCgkJCQkvLyBJZiB0
aGVyZSBpcyBubyBkYXRhIGxlZnQgaW4gdGhlIGNhY2hlLCB3ZSB3YW50IHRvIGNv
bnRpbnVlCgkJCQkvLyBhbmQgbGV0IHRoZSBjYWNoZSBvYmplY3QgaXRzZWxmIGdl
dCBkZXN0cm95ZWQKCQkJCWlmICggISggcHZ0ID8gaXNFbXB0eURhdGFPYmplY3Qg
OiBqUXVlcnkuaXNFbXB0eU9iamVjdCApKCB0aGlzQ2FjaGUgKSApIHsKCQkJCQly
ZXR1cm47CgkJCQl9CgkJCX0KCQl9CgoJCS8vIFNlZSBqUXVlcnkuZGF0YSBmb3Ig
bW9yZSBpbmZvcm1hdGlvbgoJCWlmICggIXB2dCApIHsKCQkJZGVsZXRlIGNhY2hl
WyBpZCBdLmRhdGE7CgoJCQkvLyBEb24ndCBkZXN0cm95IHRoZSBwYXJlbnQgY2Fj
aGUgdW5sZXNzIHRoZSBpbnRlcm5hbCBkYXRhIG9iamVjdAoJCQkvLyBoYWQgYmVl
biB0aGUgb25seSB0aGluZyBsZWZ0IGluIGl0CgkJCWlmICggIWlzRW1wdHlEYXRh
T2JqZWN0KGNhY2hlWyBpZCBdKSApIHsKCQkJCXJldHVybjsKCQkJfQoJCX0KCgkJ
Ly8gQnJvd3NlcnMgdGhhdCBmYWlsIGV4cGFuZG8gZGVsZXRpb24gYWxzbyByZWZ1
c2UgdG8gZGVsZXRlIGV4cGFuZG9zIG9uCgkJLy8gdGhlIHdpbmRvdywgYnV0IGl0
IHdpbGwgYWxsb3cgaXQgb24gYWxsIG90aGVyIEpTIG9iamVjdHM7IG90aGVyIGJy
b3dzZXJzCgkJLy8gZG9uJ3QgY2FyZQoJCS8vIEVuc3VyZSB0aGF0IGBjYWNoZWAg
aXMgbm90IGEgd2luZG93IG9iamVjdCAjMTAwODAKCQlpZiAoIGpRdWVyeS5zdXBw
b3J0LmRlbGV0ZUV4cGFuZG8gfHwgIWNhY2hlLnNldEludGVydmFsICkgewoJCQlk
ZWxldGUgY2FjaGVbIGlkIF07CgkJfSBlbHNlIHsKCQkJY2FjaGVbIGlkIF0gPSBu
dWxsOwoJCX0KCgkJLy8gV2UgZGVzdHJveWVkIHRoZSBjYWNoZSBhbmQgbmVlZCB0
byBlbGltaW5hdGUgdGhlIGV4cGFuZG8gb24gdGhlIG5vZGUgdG8gYXZvaWQKCQkv
LyBmYWxzZSBsb29rdXBzIGluIHRoZSBjYWNoZSBmb3IgZW50cmllcyB0aGF0IG5v
IGxvbmdlciBleGlzdAoJCWlmICggaXNOb2RlICkgewoJCQkvLyBJRSBkb2VzIG5v
dCBhbGxvdyB1cyB0byBkZWxldGUgZXhwYW5kbyBwcm9wZXJ0aWVzIGZyb20gbm9k
ZXMsCgkJCS8vIG5vciBkb2VzIGl0IGhhdmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVu
Y3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7CgkJCS8vIHdlIG11c3QgaGFuZGxlIGFs
bCBvZiB0aGVzZSBjYXNlcwoJCQlpZiAoIGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4
cGFuZG8gKSB7CgkJCQlkZWxldGUgZWxlbVsgaW50ZXJuYWxLZXkgXTsKCQkJfSBl
bHNlIGlmICggZWxlbS5yZW1vdmVBdHRyaWJ1dGUgKSB7CgkJCQllbGVtLnJlbW92
ZUF0dHJpYnV0ZSggaW50ZXJuYWxLZXkgKTsKCQkJfSBlbHNlIHsKCQkJCWVsZW1b
IGludGVybmFsS2V5IF0gPSBudWxsOwoJCQl9CgkJfQoJfSwKCgkvLyBGb3IgaW50
ZXJuYWwgdXNlIG9ubHkuCglfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRh
dGEgKSB7CgkJcmV0dXJuIGpRdWVyeS5kYXRhKCBlbGVtLCBuYW1lLCBkYXRhLCB0
cnVlICk7Cgl9LAoKCS8vIEEgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhIERP
TSBub2RlIGNhbiBoYW5kbGUgdGhlIGRhdGEgZXhwYW5kbwoJYWNjZXB0RGF0YTog
ZnVuY3Rpb24oIGVsZW0gKSB7CgkJaWYgKCBlbGVtLm5vZGVOYW1lICkgewoJCQl2
YXIgbWF0Y2ggPSBqUXVlcnkubm9EYXRhWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgXTsKCgkJCWlmICggbWF0Y2ggKSB7CgkJCQlyZXR1cm4gIShtYXRjaCA9
PT0gdHJ1ZSB8fCBlbGVtLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpICE9PSBtYXRj
aCk7CgkJCX0KCQl9CgoJCXJldHVybiB0cnVlOwoJfQp9KTsKCmpRdWVyeS5mbi5l
eHRlbmQoewoJZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CgkJdmFyIHBh
cnRzLCBhdHRyLCBuYW1lLAoJCQlkYXRhID0gbnVsbDsKCgkJaWYgKCB0eXBlb2Yg
a2V5ID09PSAidW5kZWZpbmVkIiApIHsKCQkJaWYgKCB0aGlzLmxlbmd0aCApIHsK
CQkJCWRhdGEgPSBqUXVlcnkuZGF0YSggdGhpc1swXSApOwoKCQkJCWlmICggdGhp
c1swXS5ub2RlVHlwZSA9PT0gMSAmJiAhalF1ZXJ5Ll9kYXRhKCB0aGlzWzBdLCAi
cGFyc2VkQXR0cnMiICkgKSB7CgkJCQkJYXR0ciA9IHRoaXNbMF0uYXR0cmlidXRl
czsKCQkJCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSBhdHRyLmxlbmd0aDsgaSA8IGw7
IGkrKyApIHsKCQkJCQkJbmFtZSA9IGF0dHJbaV0ubmFtZTsKCgkJCQkJCWlmICgg
bmFtZS5pbmRleE9mKCAiZGF0YS0iICkgPT09IDAgKSB7CgkJCQkJCQluYW1lID0g
alF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zdWJzdHJpbmcoNSkgKTsKCgkJCQkJCQlk
YXRhQXR0ciggdGhpc1swXSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7CgkJCQkJCX0K
CQkJCQl9CgkJCQkJalF1ZXJ5Ll9kYXRhKCB0aGlzWzBdLCAicGFyc2VkQXR0cnMi
LCB0cnVlICk7CgkJCQl9CgkJCX0KCgkJCXJldHVybiBkYXRhOwoKCQl9IGVsc2Ug
aWYgKCB0eXBlb2Yga2V5ID09PSAib2JqZWN0IiApIHsKCQkJcmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbigpIHsKCQkJCWpRdWVyeS5kYXRhKCB0aGlzLCBrZXkgKTsK
CQkJfSk7CgkJfQoKCQlwYXJ0cyA9IGtleS5zcGxpdCgiLiIpOwoJCXBhcnRzWzFd
ID0gcGFydHNbMV0gPyAiLiIgKyBwYXJ0c1sxXSA6ICIiOwoKCQlpZiAoIHZhbHVl
ID09PSB1bmRlZmluZWQgKSB7CgkJCWRhdGEgPSB0aGlzLnRyaWdnZXJIYW5kbGVy
KCJnZXREYXRhIiArIHBhcnRzWzFdICsgIiEiLCBbcGFydHNbMF1dKTsKCgkJCS8v
IFRyeSB0byBmZXRjaCBhbnkgaW50ZXJuYWxseSBzdG9yZWQgZGF0YSBmaXJzdAoJ
CQlpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmxlbmd0aCApIHsKCQkJ
CWRhdGEgPSBqUXVlcnkuZGF0YSggdGhpc1swXSwga2V5ICk7CgkJCQlkYXRhID0g
ZGF0YUF0dHIoIHRoaXNbMF0sIGtleSwgZGF0YSApOwoJCQl9CgoJCQlyZXR1cm4g
ZGF0YSA9PT0gdW5kZWZpbmVkICYmIHBhcnRzWzFdID8KCQkJCXRoaXMuZGF0YSgg
cGFydHNbMF0gKSA6CgkJCQlkYXRhOwoKCQl9IGVsc2UgewoJCQlyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMg
KSwKCQkJCQlhcmdzID0gWyBwYXJ0c1swXSwgdmFsdWUgXTsKCgkJCQlzZWxmLnRy
aWdnZXJIYW5kbGVyKCAic2V0RGF0YSIgKyBwYXJ0c1sxXSArICIhIiwgYXJncyAp
OwoJCQkJalF1ZXJ5LmRhdGEoIHRoaXMsIGtleSwgdmFsdWUgKTsKCQkJCXNlbGYu
dHJpZ2dlckhhbmRsZXIoICJjaGFuZ2VEYXRhIiArIHBhcnRzWzFdICsgIiEiLCBh
cmdzICk7CgkJCX0pOwoJCX0KCX0sCgoJcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtl
eSApIHsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQlqUXVlcnku
cmVtb3ZlRGF0YSggdGhpcywga2V5ICk7CgkJfSk7Cgl9Cn0pOwoKZnVuY3Rpb24g
ZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKCS8vIElmIG5vdGhpbmcgd2Fz
IGZvdW5kIGludGVybmFsbHksIHRyeSB0byBmZXRjaCBhbnkKCS8vIGRhdGEgZnJv
bSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZQoJaWYgKCBkYXRhID09PSB1bmRl
ZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKCgkJdmFyIG5hbWUgPSAi
ZGF0YS0iICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsICItJDEiICkudG9Mb3dl
ckNhc2UoKTsKCgkJZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7CgoJ
CWlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewoJCQl0cnkgewoJCQkJ
ZGF0YSA9IGRhdGEgPT09ICJ0cnVlIiA/IHRydWUgOgoJCQkJZGF0YSA9PT0gImZh
bHNlIiA/IGZhbHNlIDoKCQkJCWRhdGEgPT09ICJudWxsIiA/IG51bGwgOgoJCQkJ
alF1ZXJ5LmlzTnVtZXJpYyggZGF0YSApID8gcGFyc2VGbG9hdCggZGF0YSApIDoK
CQkJCQlyYnJhY2UudGVzdCggZGF0YSApID8galF1ZXJ5LnBhcnNlSlNPTiggZGF0
YSApIDoKCQkJCQlkYXRhOwoJCQl9IGNhdGNoKCBlICkge30KCgkJCS8vIE1ha2Ug
c3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlcgoJ
CQlqUXVlcnkuZGF0YSggZWxlbSwga2V5LCBkYXRhICk7CgoJCX0gZWxzZSB7CgkJ
CWRhdGEgPSB1bmRlZmluZWQ7CgkJfQoJfQoKCXJldHVybiBkYXRhOwp9CgovLyBj
aGVja3MgYSBjYWNoZSBvYmplY3QgZm9yIGVtcHRpbmVzcwpmdW5jdGlvbiBpc0Vt
cHR5RGF0YU9iamVjdCggb2JqICkgewoJZm9yICggdmFyIG5hbWUgaW4gb2JqICkg
ewoKCQkvLyBpZiB0aGUgcHVibGljIGRhdGEgb2JqZWN0IGlzIGVtcHR5LCB0aGUg
cHJpdmF0ZSBpcyBzdGlsbCBlbXB0eQoJCWlmICggbmFtZSA9PT0gImRhdGEiICYm
IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvYmpbbmFtZV0gKSApIHsKCQkJY29udGlu
dWU7CgkJfQoJCWlmICggbmFtZSAhPT0gInRvSlNPTiIgKSB7CgkJCXJldHVybiBm
YWxzZTsKCQl9Cgl9CgoJcmV0dXJuIHRydWU7Cn0KCgoKCmZ1bmN0aW9uIGhhbmRs
ZVF1ZXVlTWFya0RlZmVyKCBlbGVtLCB0eXBlLCBzcmMgKSB7Cgl2YXIgZGVmZXJE
YXRhS2V5ID0gdHlwZSArICJkZWZlciIsCgkJcXVldWVEYXRhS2V5ID0gdHlwZSAr
ICJxdWV1ZSIsCgkJbWFya0RhdGFLZXkgPSB0eXBlICsgIm1hcmsiLAoJCWRlZmVy
ID0galF1ZXJ5Ll9kYXRhKCBlbGVtLCBkZWZlckRhdGFLZXkgKTsKCWlmICggZGVm
ZXIgJiYKCQkoIHNyYyA9PT0gInF1ZXVlIiB8fCAhalF1ZXJ5Ll9kYXRhKGVsZW0s
IHF1ZXVlRGF0YUtleSkgKSAmJgoJCSggc3JjID09PSAibWFyayIgfHwgIWpRdWVy
eS5fZGF0YShlbGVtLCBtYXJrRGF0YUtleSkgKSApIHsKCQkvLyBHaXZlIHJvb20g
Zm9yIGhhcmQtY29kZWQgY2FsbGJhY2tzIHRvIGZpcmUgZmlyc3QKCQkvLyBhbmQg
ZXZlbnR1YWxseSBtYXJrL3F1ZXVlIHNvbWV0aGluZyBlbHNlIG9uIHRoZSBlbGVt
ZW50CgkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCWlmICggIWpRdWVyeS5f
ZGF0YSggZWxlbSwgcXVldWVEYXRhS2V5ICkgJiYKCQkJCSFqUXVlcnkuX2RhdGEo
IGVsZW0sIG1hcmtEYXRhS2V5ICkgKSB7CgkJCQlqUXVlcnkucmVtb3ZlRGF0YSgg
ZWxlbSwgZGVmZXJEYXRhS2V5LCB0cnVlICk7CgkJCQlkZWZlci5maXJlKCk7CgkJ
CX0KCQl9LCAwICk7Cgl9Cn0KCmpRdWVyeS5leHRlbmQoewoKCV9tYXJrOiBmdW5j
dGlvbiggZWxlbSwgdHlwZSApIHsKCQlpZiAoIGVsZW0gKSB7CgkJCXR5cGUgPSAo
IHR5cGUgfHwgImZ4IiApICsgIm1hcmsiOwoJCQlqUXVlcnkuX2RhdGEoIGVsZW0s
IHR5cGUsIChqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUgKSB8fCAwKSArIDEgKTsK
CQl9Cgl9LAoKCV91bm1hcms6IGZ1bmN0aW9uKCBmb3JjZSwgZWxlbSwgdHlwZSAp
IHsKCQlpZiAoIGZvcmNlICE9PSB0cnVlICkgewoJCQl0eXBlID0gZWxlbTsKCQkJ
ZWxlbSA9IGZvcmNlOwoJCQlmb3JjZSA9IGZhbHNlOwoJCX0KCQlpZiAoIGVsZW0g
KSB7CgkJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CgkJCXZhciBrZXkgPSB0eXBlICsg
Im1hcmsiLAoJCQkJY291bnQgPSBmb3JjZSA/IDAgOiAoIChqUXVlcnkuX2RhdGEo
IGVsZW0sIGtleSApIHx8IDEpIC0gMSApOwoJCQlpZiAoIGNvdW50ICkgewoJCQkJ
alF1ZXJ5Ll9kYXRhKCBlbGVtLCBrZXksIGNvdW50ICk7CgkJCX0gZWxzZSB7CgkJ
CQlqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwga2V5LCB0cnVlICk7CgkJCQloYW5k
bGVRdWV1ZU1hcmtEZWZlciggZWxlbSwgdHlwZSwgIm1hcmsiICk7CgkJCX0KCQl9
Cgl9LAoKCXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHsKCQl2
YXIgcTsKCQlpZiAoIGVsZW0gKSB7CgkJCXR5cGUgPSAoIHR5cGUgfHwgImZ4IiAp
ICsgInF1ZXVlIjsKCQkJcSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgdHlwZSApOwoK
CQkJLy8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlm
IHRoaXMgaXMganVzdCBhIGxvb2t1cAoJCQlpZiAoIGRhdGEgKSB7CgkJCQlpZiAo
ICFxIHx8IGpRdWVyeS5pc0FycmF5KGRhdGEpICkgewoJCQkJCXEgPSBqUXVlcnku
X2RhdGEoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoZGF0YSkgKTsKCQkJ
CX0gZWxzZSB7CgkJCQkJcS5wdXNoKCBkYXRhICk7CgkJCQl9CgkJCX0KCQkJcmV0
dXJuIHEgfHwgW107CgkJfQoJfSwKCglkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwg
dHlwZSApIHsKCQl0eXBlID0gdHlwZSB8fCAiZngiOwoKCQl2YXIgcXVldWUgPSBq
UXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSwKCQkJZm4gPSBxdWV1ZS5zaGlmdCgp
LAoJCQlob29rcyA9IHt9OwoKCQkvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1
ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsCgkJaWYgKCBm
biA9PT0gImlucHJvZ3Jlc3MiICkgewoJCQlmbiA9IHF1ZXVlLnNoaWZ0KCk7CgkJ
fQoKCQlpZiAoIGZuICkgewoJCQkvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0
byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nCgkJCS8vIGF1dG9tYXRp
Y2FsbHkgZGVxdWV1ZWQKCQkJaWYgKCB0eXBlID09PSAiZngiICkgewoJCQkJcXVl
dWUudW5zaGlmdCggImlucHJvZ3Jlc3MiICk7CgkJCX0KCgkJCWpRdWVyeS5fZGF0
YSggZWxlbSwgdHlwZSArICIucnVuIiwgaG9va3MgKTsKCQkJZm4uY2FsbCggZWxl
bSwgZnVuY3Rpb24oKSB7CgkJCQlqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSAp
OwoJCQl9LCBob29rcyApOwoJCX0KCgkJaWYgKCAhcXVldWUubGVuZ3RoICkgewoJ
CQlqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwgdHlwZSArICJxdWV1ZSAiICsgdHlw
ZSArICIucnVuIiwgdHJ1ZSApOwoJCQloYW5kbGVRdWV1ZU1hcmtEZWZlciggZWxl
bSwgdHlwZSwgInF1ZXVlIiApOwoJCX0KCX0KfSk7CgpqUXVlcnkuZm4uZXh0ZW5k
KHsKCXF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKCQlpZiAoIHR5cGVv
ZiB0eXBlICE9PSAic3RyaW5nIiApIHsKCQkJZGF0YSA9IHR5cGU7CgkJCXR5cGUg
PSAiZngiOwoJCX0KCgkJaWYgKCBkYXRhID09PSB1bmRlZmluZWQgKSB7CgkJCXJl
dHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUgKTsKCQl9CgkJcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJdmFyIHF1ZXVlID0galF1ZXJ5LnF1
ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7CgoJCQlpZiAoIHR5cGUgPT09ICJmeCIg
JiYgcXVldWVbMF0gIT09ICJpbnByb2dyZXNzIiApIHsKCQkJCWpRdWVyeS5kZXF1
ZXVlKCB0aGlzLCB0eXBlICk7CgkJCX0KCQl9KTsKCX0sCglkZXF1ZXVlOiBmdW5j
dGlvbiggdHlwZSApIHsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJ
CQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwoJCX0pOwoJfSwKCS8vIEJh
c2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVy
bWlzc2lvbi4KCS8vIGh0dHA6Ly9ibGluZHNpZ25hbHMuY29tL2luZGV4LnBocC8y
MDA5LzA3L2pxdWVyeS1kZWxheS8KCWRlbGF5OiBmdW5jdGlvbiggdGltZSwgdHlw
ZSApIHsKCQl0aW1lID0galF1ZXJ5LmZ4ID8galF1ZXJ5LmZ4LnNwZWVkc1sgdGlt
ZSBdIHx8IHRpbWUgOiB0aW1lOwoJCXR5cGUgPSB0eXBlIHx8ICJmeCI7CgoJCXJl
dHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7
CgkJCXZhciB0aW1lb3V0ID0gc2V0VGltZW91dCggbmV4dCwgdGltZSApOwoJCQlo
b29rcy5zdG9wID0gZnVuY3Rpb24oKSB7CgkJCQljbGVhclRpbWVvdXQoIHRpbWVv
dXQgKTsKCQkJfTsKCQl9KTsKCX0sCgljbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlw
ZSApIHsKCQlyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngiLCBbXSApOwoJ
fSwKCS8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBj
ZXJ0YWluIHR5cGUKCS8vIGFyZSBlbXB0aWVkIChmeCBpcyB0aGUgdHlwZSBieSBk
ZWZhdWx0KQoJcHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iamVjdCApIHsKCQlp
ZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsKCQkJb2JqZWN0ID0gdHlw
ZTsKCQkJdHlwZSA9IHVuZGVmaW5lZDsKCQl9CgkJdHlwZSA9IHR5cGUgfHwgImZ4
IjsKCQl2YXIgZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSwKCQkJZWxlbWVudHMg
PSB0aGlzLAoJCQlpID0gZWxlbWVudHMubGVuZ3RoLAoJCQljb3VudCA9IDEsCgkJ
CWRlZmVyRGF0YUtleSA9IHR5cGUgKyAiZGVmZXIiLAoJCQlxdWV1ZURhdGFLZXkg
PSB0eXBlICsgInF1ZXVlIiwKCQkJbWFya0RhdGFLZXkgPSB0eXBlICsgIm1hcmsi
LAoJCQl0bXA7CgkJZnVuY3Rpb24gcmVzb2x2ZSgpIHsKCQkJaWYgKCAhKCAtLWNv
dW50ICkgKSB7CgkJCQlkZWZlci5yZXNvbHZlV2l0aCggZWxlbWVudHMsIFsgZWxl
bWVudHMgXSApOwoJCQl9CgkJfQoJCXdoaWxlKCBpLS0gKSB7CgkJCWlmICgoIHRt
cCA9IGpRdWVyeS5kYXRhKCBlbGVtZW50c1sgaSBdLCBkZWZlckRhdGFLZXksIHVu
ZGVmaW5lZCwgdHJ1ZSApIHx8CgkJCQkJKCBqUXVlcnkuZGF0YSggZWxlbWVudHNb
IGkgXSwgcXVldWVEYXRhS2V5LCB1bmRlZmluZWQsIHRydWUgKSB8fAoJCQkJCQlq
UXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwgbWFya0RhdGFLZXksIHVuZGVmaW5l
ZCwgdHJ1ZSApICkgJiYKCQkJCQlqUXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwg
ZGVmZXJEYXRhS2V5LCBqUXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICks
IHRydWUgKSApKSB7CgkJCQljb3VudCsrOwoJCQkJdG1wLmFkZCggcmVzb2x2ZSAp
OwoJCQl9CgkJfQoJCXJlc29sdmUoKTsKCQlyZXR1cm4gZGVmZXIucHJvbWlzZSgp
OwoJfQp9KTsKCgoKCnZhciByY2xhc3MgPSAvW1xuXHRccl0vZywKCXJzcGFjZSA9
IC9ccysvLAoJcnJldHVybiA9IC9cci9nLAoJcnR5cGUgPSAvXig/OmJ1dHRvbnxp
bnB1dCkkL2ksCglyZm9jdXNhYmxlID0gL14oPzpidXR0b258aW5wdXR8b2JqZWN0
fHNlbGVjdHx0ZXh0YXJlYSkkL2ksCglyY2xpY2thYmxlID0gL15hKD86cmVhKT8k
L2ksCglyYm9vbGVhbiA9IC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNo
ZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlw
bGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLAoJ
Z2V0U2V0QXR0cmlidXRlID0galF1ZXJ5LnN1cHBvcnQuZ2V0U2V0QXR0cmlidXRl
LAoJbm9kZUhvb2ssIGJvb2xIb29rLCBmaXhTcGVjaWZpZWQ7CgpqUXVlcnkuZm4u
ZXh0ZW5kKHsKCWF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKCQlyZXR1
cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgbmFtZSwgdmFsdWUsIHRydWUsIGpRdWVy
eS5hdHRyICk7Cgl9LAoKCXJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkgewoJ
CXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCWpRdWVyeS5yZW1vdmVB
dHRyKCB0aGlzLCBuYW1lICk7CgkJfSk7Cgl9LAoKCXByb3A6IGZ1bmN0aW9uKCBu
YW1lLCB2YWx1ZSApIHsKCQlyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgbmFt
ZSwgdmFsdWUsIHRydWUsIGpRdWVyeS5wcm9wICk7Cgl9LAoKCXJlbW92ZVByb3A6
IGZ1bmN0aW9uKCBuYW1lICkgewoJCW5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFt
ZSBdIHx8IG5hbWU7CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJ
Ly8gdHJ5L2NhdGNoIGhhbmRsZXMgY2FzZXMgd2hlcmUgSUUgYmFsa3MgKHN1Y2gg
YXMgcmVtb3ZpbmcgYSBwcm9wZXJ0eSBvbiB3aW5kb3cpCgkJCXRyeSB7CgkJCQl0
aGlzWyBuYW1lIF0gPSB1bmRlZmluZWQ7CgkJCQlkZWxldGUgdGhpc1sgbmFtZSBd
OwoJCQl9IGNhdGNoKCBlICkge30KCQl9KTsKCX0sCgoJYWRkQ2xhc3M6IGZ1bmN0
aW9uKCB2YWx1ZSApIHsKCQl2YXIgY2xhc3NOYW1lcywgaSwgbCwgZWxlbSwKCQkJ
c2V0Q2xhc3MsIGMsIGNsOwoKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1
ZSApICkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkgewoJCQkJ
alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaiwgdGhp
cy5jbGFzc05hbWUpICk7CgkJCX0pOwoJCX0KCgkJaWYgKCB2YWx1ZSAmJiB0eXBl
b2YgdmFsdWUgPT09ICJzdHJpbmciICkgewoJCQljbGFzc05hbWVzID0gdmFsdWUu
c3BsaXQoIHJzcGFjZSApOwoKCQkJZm9yICggaSA9IDAsIGwgPSB0aGlzLmxlbmd0
aDsgaSA8IGw7IGkrKyApIHsKCQkJCWVsZW0gPSB0aGlzWyBpIF07CgoJCQkJaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAxICkgewoJCQkJCWlmICggIWVsZW0uY2xhc3NO
YW1lICYmIGNsYXNzTmFtZXMubGVuZ3RoID09PSAxICkgewoJCQkJCQllbGVtLmNs
YXNzTmFtZSA9IHZhbHVlOwoKCQkJCQl9IGVsc2UgewoJCQkJCQlzZXRDbGFzcyA9
ICIgIiArIGVsZW0uY2xhc3NOYW1lICsgIiAiOwoKCQkJCQkJZm9yICggYyA9IDAs
IGNsID0gY2xhc3NOYW1lcy5sZW5ndGg7IGMgPCBjbDsgYysrICkgewoJCQkJCQkJ
aWYgKCAhfnNldENsYXNzLmluZGV4T2YoICIgIiArIGNsYXNzTmFtZXNbIGMgXSAr
ICIgIiApICkgewoJCQkJCQkJCXNldENsYXNzICs9IGNsYXNzTmFtZXNbIGMgXSAr
ICIgIjsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbGVtLmNsYXNzTmFtZSA9IGpR
dWVyeS50cmltKCBzZXRDbGFzcyApOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJ
cmV0dXJuIHRoaXM7Cgl9LAoKCXJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUg
KSB7CgkJdmFyIGNsYXNzTmFtZXMsIGksIGwsIGVsZW0sIGNsYXNzTmFtZSwgYywg
Y2w7CgoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CgkJCXJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7CgkJCQlqUXVlcnkoIHRoaXMg
KS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBqLCB0aGlzLmNsYXNzTmFt
ZSkgKTsKCQkJfSk7CgkJfQoKCQlpZiAoICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUg
PT09ICJzdHJpbmciKSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewoJCQljbGFz
c05hbWVzID0gKCB2YWx1ZSB8fCAiIiApLnNwbGl0KCByc3BhY2UgKTsKCgkJCWZv
ciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CgkJCQll
bGVtID0gdGhpc1sgaSBdOwoKCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAm
JiBlbGVtLmNsYXNzTmFtZSApIHsKCQkJCQlpZiAoIHZhbHVlICkgewoJCQkJCQlj
bGFzc05hbWUgPSAoIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2Uo
IHJjbGFzcywgIiAiICk7CgkJCQkJCWZvciAoIGMgPSAwLCBjbCA9IGNsYXNzTmFt
ZXMubGVuZ3RoOyBjIDwgY2w7IGMrKyApIHsKCQkJCQkJCWNsYXNzTmFtZSA9IGNs
YXNzTmFtZS5yZXBsYWNlKCIgIiArIGNsYXNzTmFtZXNbIGMgXSArICIgIiwgIiAi
KTsKCQkJCQkJfQoJCQkJCQllbGVtLmNsYXNzTmFtZSA9IGpRdWVyeS50cmltKCBj
bGFzc05hbWUgKTsKCgkJCQkJfSBlbHNlIHsKCQkJCQkJZWxlbS5jbGFzc05hbWUg
PSAiIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiB0aGlzOwoJfSwK
Cgl0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHsKCQl2
YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZSwKCQkJaXNCb29sID0gdHlwZW9mIHN0YXRl
VmFsID09PSAiYm9vbGVhbiI7CgoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZh
bHVlICkgKSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7CgkJ
CQlqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBp
LCB0aGlzLmNsYXNzTmFtZSwgc3RhdGVWYWwpLCBzdGF0ZVZhbCApOwoJCQl9KTsK
CQl9CgoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCWlmICggdHlw
ZSA9PT0gInN0cmluZyIgKSB7CgkJCQkvLyB0b2dnbGUgaW5kaXZpZHVhbCBjbGFz
cyBuYW1lcwoJCQkJdmFyIGNsYXNzTmFtZSwKCQkJCQlpID0gMCwKCQkJCQlzZWxm
ID0galF1ZXJ5KCB0aGlzICksCgkJCQkJc3RhdGUgPSBzdGF0ZVZhbCwKCQkJCQlj
bGFzc05hbWVzID0gdmFsdWUuc3BsaXQoIHJzcGFjZSApOwoKCQkJCXdoaWxlICgg
KGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdKSApIHsKCQkJCQkvLyBjaGVj
ayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwZXJhdGVkIGxpc3QKCQkJ
CQlzdGF0ZSA9IGlzQm9vbCA/IHN0YXRlIDogIXNlbGYuaGFzQ2xhc3MoIGNsYXNz
TmFtZSApOwoJCQkJCXNlbGZbIHN0YXRlID8gImFkZENsYXNzIiA6ICJyZW1vdmVD
bGFzcyIgXSggY2xhc3NOYW1lICk7CgkJCQl9CgoJCQl9IGVsc2UgaWYgKCB0eXBl
ID09PSAidW5kZWZpbmVkIiB8fCB0eXBlID09PSAiYm9vbGVhbiIgKSB7CgkJCQlp
ZiAoIHRoaXMuY2xhc3NOYW1lICkgewoJCQkJCS8vIHN0b3JlIGNsYXNzTmFtZSBp
ZiBzZXQKCQkJCQlqUXVlcnkuX2RhdGEoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiwg
dGhpcy5jbGFzc05hbWUgKTsKCQkJCX0KCgkJCQkvLyB0b2dnbGUgd2hvbGUgY2xh
c3NOYW1lCgkJCQl0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lIHx8IHZh
bHVlID09PSBmYWxzZSA/ICIiIDogalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFz
c05hbWVfXyIgKSB8fCAiIjsKCQkJfQoJCX0pOwoJfSwKCgloYXNDbGFzczogZnVu
Y3Rpb24oIHNlbGVjdG9yICkgewoJCXZhciBjbGFzc05hbWUgPSAiICIgKyBzZWxl
Y3RvciArICIgIiwKCQkJaSA9IDAsCgkJCWwgPSB0aGlzLmxlbmd0aDsKCQlmb3Ig
KCA7IGkgPCBsOyBpKysgKSB7CgkJCWlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0g
MSAmJiAoIiAiICsgdGhpc1tpXS5jbGFzc05hbWUgKyAiICIpLnJlcGxhY2UocmNs
YXNzLCAiICIpLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7CgkJCQlyZXR1
cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfSwKCgl2YWw6IGZ1
bmN0aW9uKCB2YWx1ZSApIHsKCQl2YXIgaG9va3MsIHJldCwgaXNGdW5jdGlvbiwK
CQkJZWxlbSA9IHRoaXNbMF07CgoJCWlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7
CgkJCWlmICggZWxlbSApIHsKCQkJCWhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBqUXVlcnkudmFsSG9va3Nb
IGVsZW0udHlwZSBdOwoKCQkJCWlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3Mg
JiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApKSAhPT0gdW5kZWZp
bmVkICkgewoJCQkJCXJldHVybiByZXQ7CgkJCQl9CgoJCQkJcmV0ID0gZWxlbS52
YWx1ZTsKCgkJCQlyZXR1cm4gdHlwZW9mIHJldCA9PT0gInN0cmluZyIgPwoJCQkJ
CS8vIGhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXMKCQkJCQlyZXQucmVw
bGFjZShycmV0dXJuLCAiIikgOgoJCQkJCS8vIGhhbmRsZSBjYXNlcyB3aGVyZSB2
YWx1ZSBpcyBudWxsL3VuZGVmIG9yIG51bWJlcgoJCQkJCXJldCA9PSBudWxsID8g
IiIgOiByZXQ7CgkJCX0KCgkJCXJldHVybjsKCQl9CgoJCWlzRnVuY3Rpb24gPSBq
UXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKCgkJcmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbiggaSApIHsKCQkJdmFyIHNlbGYgPSBqUXVlcnkodGhpcyksIHZhbDsK
CgkJCWlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHsKCQkJCXJldHVybjsKCQkJ
fQoKCQkJaWYgKCBpc0Z1bmN0aW9uICkgewoJCQkJdmFsID0gdmFsdWUuY2FsbCgg
dGhpcywgaSwgc2VsZi52YWwoKSApOwoJCQl9IGVsc2UgewoJCQkJdmFsID0gdmFs
dWU7CgkJCX0KCgkJCS8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzICIiOyBjb252
ZXJ0IG51bWJlcnMgdG8gc3RyaW5nCgkJCWlmICggdmFsID09IG51bGwgKSB7CgkJ
CQl2YWwgPSAiIjsKCQkJfSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gIm51bWJl
ciIgKSB7CgkJCQl2YWwgKz0gIiI7CgkJCX0gZWxzZSBpZiAoIGpRdWVyeS5pc0Fy
cmF5KCB2YWwgKSApIHsKCQkJCXZhbCA9IGpRdWVyeS5tYXAodmFsLCBmdW5jdGlv
biAoIHZhbHVlICkgewoJCQkJCXJldHVybiB2YWx1ZSA9PSBudWxsID8gIiIgOiB2
YWx1ZSArICIiOwoJCQkJfSk7CgkJCX0KCgkJCWhvb2tzID0galF1ZXJ5LnZhbEhv
b2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBqUXVlcnkudmFs
SG9va3NbIHRoaXMudHlwZSBdOwoKCQkJLy8gSWYgc2V0IHJldHVybnMgdW5kZWZp
bmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmcKCQkJaWYgKCAhaG9va3Mg
fHwgISgic2V0IiBpbiBob29rcykgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsICJ2
YWx1ZSIgKSA9PT0gdW5kZWZpbmVkICkgewoJCQkJdGhpcy52YWx1ZSA9IHZhbDsK
CQkJfQoJCX0pOwoJfQp9KTsKCmpRdWVyeS5leHRlbmQoewoJdmFsSG9va3M6IHsK
CQlvcHRpb246IHsKCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKCQkJCS8vIGF0
dHJpYnV0ZXMudmFsdWUgaXMgdW5kZWZpbmVkIGluIEJsYWNrYmVycnkgNC43IGJ1
dAoJCQkJLy8gdXNlcyAudmFsdWUuIFNlZSAjNjkzMgoJCQkJdmFyIHZhbCA9IGVs
ZW0uYXR0cmlidXRlcy52YWx1ZTsKCQkJCXJldHVybiAhdmFsIHx8IHZhbC5zcGVj
aWZpZWQgPyBlbGVtLnZhbHVlIDogZWxlbS50ZXh0OwoJCQl9CgkJfSwKCQlzZWxl
Y3Q6IHsKCQkJZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKCQkJCXZhciB2YWx1ZSwg
aSwgbWF4LCBvcHRpb24sCgkJCQkJaW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgs
CgkJCQkJdmFsdWVzID0gW10sCgkJCQkJb3B0aW9ucyA9IGVsZW0ub3B0aW9ucywK
CQkJCQlvbmUgPSBlbGVtLnR5cGUgPT09ICJzZWxlY3Qtb25lIjsKCgkJCQkvLyBO
b3RoaW5nIHdhcyBzZWxlY3RlZAoJCQkJaWYgKCBpbmRleCA8IDAgKSB7CgkJCQkJ
cmV0dXJuIG51bGw7CgkJCQl9CgoJCQkJLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUg
c2VsZWN0ZWQgb3B0aW9ucwoJCQkJaSA9IG9uZSA/IGluZGV4IDogMDsKCQkJCW1h
eCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoOwoJCQkJZm9yICgg
OyBpIDwgbWF4OyBpKysgKSB7CgkJCQkJb3B0aW9uID0gb3B0aW9uc1sgaSBdOwoK
CQkJCQkvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBv
ciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwCgkJCQkJaWYgKCBvcHRpb24uc2VsZWN0
ZWQgJiYgKGpRdWVyeS5zdXBwb3J0Lm9wdERpc2FibGVkID8gIW9wdGlvbi5kaXNh
YmxlZCA6IG9wdGlvbi5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgPT09IG51bGwp
ICYmCgkJCQkJCQkoIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFqUXVl
cnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiICkpICkg
ewoKCQkJCQkJLy8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlv
bgoJCQkJCQl2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7CgoJCQkJCQkv
LyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0cwoJCQkJCQlp
ZiAoIG9uZSApIHsKCQkJCQkJCXJldHVybiB2YWx1ZTsKCQkJCQkJfQoKCQkJCQkJ
Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXkKCQkJCQkJdmFsdWVzLnB1
c2goIHZhbHVlICk7CgkJCQkJfQoJCQkJfQoKCQkJCS8vIEZpeGVzIEJ1ZyAjMjU1
MSAtLSBzZWxlY3QudmFsKCkgYnJva2VuIGluIElFIGFmdGVyIGZvcm0ucmVzZXQo
KQoJCQkJaWYgKCBvbmUgJiYgIXZhbHVlcy5sZW5ndGggJiYgb3B0aW9ucy5sZW5n
dGggKSB7CgkJCQkJcmV0dXJuIGpRdWVyeSggb3B0aW9uc1sgaW5kZXggXSApLnZh
bCgpOwoJCQkJfQoKCQkJCXJldHVybiB2YWx1ZXM7CgkJCX0sCgoJCQlzZXQ6IGZ1
bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKCQkJCXZhciB2YWx1ZXMgPSBqUXVlcnku
bWFrZUFycmF5KCB2YWx1ZSApOwoKCQkJCWpRdWVyeShlbGVtKS5maW5kKCJvcHRp
b24iKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCXRoaXMuc2VsZWN0ZWQgPSBqUXVl
cnkuaW5BcnJheSggalF1ZXJ5KHRoaXMpLnZhbCgpLCB2YWx1ZXMgKSA+PSAwOwoJ
CQkJfSk7CgoJCQkJaWYgKCAhdmFsdWVzLmxlbmd0aCApIHsKCQkJCQllbGVtLnNl
bGVjdGVkSW5kZXggPSAtMTsKCQkJCX0KCQkJCXJldHVybiB2YWx1ZXM7CgkJCX0K
CQl9Cgl9LAoKCWF0dHJGbjogewoJCXZhbDogdHJ1ZSwKCQljc3M6IHRydWUsCgkJ
aHRtbDogdHJ1ZSwKCQl0ZXh0OiB0cnVlLAoJCWRhdGE6IHRydWUsCgkJd2lkdGg6
IHRydWUsCgkJaGVpZ2h0OiB0cnVlLAoJCW9mZnNldDogdHJ1ZQoJfSwKCglhdHRy
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIHBhc3MgKSB7CgkJdmFyIHJl
dCwgaG9va3MsIG5vdHhtbCwKCQkJblR5cGUgPSBlbGVtLm5vZGVUeXBlOwoKCQkv
LyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQg
YXR0cmlidXRlIG5vZGVzCgkJaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBu
VHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKCQkJcmV0dXJuOwoJCX0KCgkJ
aWYgKCBwYXNzICYmIG5hbWUgaW4galF1ZXJ5LmF0dHJGbiApIHsKCQkJcmV0dXJu
IGpRdWVyeSggZWxlbSApWyBuYW1lIF0oIHZhbHVlICk7CgkJfQoKCQkvLyBGYWxs
YmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAoJ
CWlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSAidW5kZWZpbmVkIiAp
IHsKCQkJcmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApOwoJ
CX0KCgkJbm90eG1sID0gblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYygg
ZWxlbSApOwoKCQkvLyBBbGwgYXR0cmlidXRlcyBhcmUgbG93ZXJjYXNlCgkJLy8g
R3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZAoJCWlmICggbm90
eG1sICkgewoJCQluYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOwoJCQlob29rcyA9
IGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSB8fCAoIHJib29sZWFuLnRlc3QoIG5h
bWUgKSA/IGJvb2xIb29rIDogbm9kZUhvb2sgKTsKCQl9CgoJCWlmICggdmFsdWUg
IT09IHVuZGVmaW5lZCApIHsKCgkJCWlmICggdmFsdWUgPT09IG51bGwgKSB7CgkJ
CQlqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwoJCQkJcmV0dXJuOwoK
CQkJfSBlbHNlIGlmICggaG9va3MgJiYgInNldCIgaW4gaG9va3MgJiYgbm90eG1s
ICYmIChyZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkpICE9PSB1
bmRlZmluZWQgKSB7CgkJCQlyZXR1cm4gcmV0OwoKCQkJfSBlbHNlIHsKCQkJCWVs
ZW0uc2V0QXR0cmlidXRlKCBuYW1lLCAiIiArIHZhbHVlICk7CgkJCQlyZXR1cm4g
dmFsdWU7CgkJCX0KCgkJfSBlbHNlIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9v
a3MgJiYgbm90eG1sICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkg
IT09IG51bGwgKSB7CgkJCXJldHVybiByZXQ7CgoJCX0gZWxzZSB7CgoJCQlyZXQg
PSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOwoKCQkJLy8gTm9uLWV4aXN0ZW50
IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmlu
ZWQKCQkJcmV0dXJuIHJldCA9PT0gbnVsbCA/CgkJCQl1bmRlZmluZWQgOgoJCQkJ
cmV0OwoJCX0KCX0sCgoJcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVl
ICkgewoJCXZhciBwcm9wTmFtZSwgYXR0ck5hbWVzLCBuYW1lLCBsLAoJCQlpID0g
MDsKCgkJaWYgKCB2YWx1ZSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewoJCQlh
dHRyTmFtZXMgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCByc3BhY2UgKTsK
CQkJbCA9IGF0dHJOYW1lcy5sZW5ndGg7CgoJCQlmb3IgKCA7IGkgPCBsOyBpKysg
KSB7CgkJCQluYW1lID0gYXR0ck5hbWVzWyBpIF07CgoJCQkJaWYgKCBuYW1lICkg
ewoJCQkJCXByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1l
OwoKCQkJCQkvLyBTZWUgIzk2OTkgZm9yIGV4cGxhbmF0aW9uIG9mIHRoaXMgYXBw
cm9hY2ggKHNldHRpbmcgZmlyc3QsIHRoZW4gcmVtb3ZhbCkKCQkJCQlqUXVlcnku
YXR0ciggZWxlbSwgbmFtZSwgIiIgKTsKCQkJCQllbGVtLnJlbW92ZUF0dHJpYnV0
ZSggZ2V0U2V0QXR0cmlidXRlID8gbmFtZSA6IHByb3BOYW1lICk7CgoJCQkJCS8v
IFNldCBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlIGZvciBib29sZWFu
IGF0dHJpYnV0ZXMKCQkJCQlpZiAoIHJib29sZWFuLnRlc3QoIG5hbWUgKSAmJiBw
cm9wTmFtZSBpbiBlbGVtICkgewoJCQkJCQllbGVtWyBwcm9wTmFtZSBdID0gZmFs
c2U7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfSwKCglhdHRySG9va3M6IHsKCQl0
eXBlOiB7CgkJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewoJCQkJLy8g
V2UgY2FuJ3QgYWxsb3cgdGhlIHR5cGUgcHJvcGVydHkgdG8gYmUgY2hhbmdlZCAo
c2luY2UgaXQgY2F1c2VzIHByb2JsZW1zIGluIElFKQoJCQkJaWYgKCBydHlwZS50
ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiYgZWxlbS5wYXJlbnROb2RlICkgewoJCQkJ
CWpRdWVyeS5lcnJvciggInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCIg
KTsKCQkJCX0gZWxzZSBpZiAoICFqUXVlcnkuc3VwcG9ydC5yYWRpb1ZhbHVlICYm
IHZhbHVlID09PSAicmFkaW8iICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiaW5w
dXQiKSApIHsKCQkJCQkvLyBTZXR0aW5nIHRoZSB0eXBlIG9uIGEgcmFkaW8gYnV0
dG9uIGFmdGVyIHRoZSB2YWx1ZSByZXNldHMgdGhlIHZhbHVlIGluIElFNi05CgkJ
CQkJLy8gUmVzZXQgdmFsdWUgdG8gaXQncyBkZWZhdWx0IGluIGNhc2UgdHlwZSBp
cyBzZXQgYWZ0ZXIgdmFsdWUKCQkJCQkvLyBUaGlzIGlzIGZvciBlbGVtZW50IGNy
ZWF0aW9uCgkJCQkJdmFyIHZhbCA9IGVsZW0udmFsdWU7CgkJCQkJZWxlbS5zZXRB
dHRyaWJ1dGUoICJ0eXBlIiwgdmFsdWUgKTsKCQkJCQlpZiAoIHZhbCApIHsKCQkJ
CQkJZWxlbS52YWx1ZSA9IHZhbDsKCQkJCQl9CgkJCQkJcmV0dXJuIHZhbHVlOwoJ
CQkJfQoJCQl9CgkJfSwKCQkvLyBVc2UgdGhlIHZhbHVlIHByb3BlcnR5IGZvciBi
YWNrIGNvbXBhdAoJCS8vIFVzZSB0aGUgbm9kZUhvb2sgZm9yIGJ1dHRvbiBlbGVt
ZW50cyBpbiBJRTYvNyAoIzE5NTQpCgkJdmFsdWU6IHsKCQkJZ2V0OiBmdW5jdGlv
biggZWxlbSwgbmFtZSApIHsKCQkJCWlmICggbm9kZUhvb2sgJiYgalF1ZXJ5Lm5v
ZGVOYW1lKCBlbGVtLCAiYnV0dG9uIiApICkgewoJCQkJCXJldHVybiBub2RlSG9v
ay5nZXQoIGVsZW0sIG5hbWUgKTsKCQkJCX0KCQkJCXJldHVybiBuYW1lIGluIGVs
ZW0gPwoJCQkJCWVsZW0udmFsdWUgOgoJCQkJCW51bGw7CgkJCX0sCgkJCXNldDog
ZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkgewoJCQkJaWYgKCBub2RlSG9v
ayAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0b24iICkgKSB7CgkJCQkJ
cmV0dXJuIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKTsKCQkJCX0K
CQkJCS8vIERvZXMgbm90IHJldHVybiBzbyB0aGF0IHNldEF0dHJpYnV0ZSBpcyBh
bHNvIHVzZWQKCQkJCWVsZW0udmFsdWUgPSB2YWx1ZTsKCQkJfQoJCX0KCX0sCgoJ
cHJvcEZpeDogewoJCXRhYmluZGV4OiAidGFiSW5kZXgiLAoJCXJlYWRvbmx5OiAi
cmVhZE9ubHkiLAoJCSJmb3IiOiAiaHRtbEZvciIsCgkJImNsYXNzIjogImNsYXNz
TmFtZSIsCgkJbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwKCQljZWxsc3BhY2luZzog
ImNlbGxTcGFjaW5nIiwKCQljZWxscGFkZGluZzogImNlbGxQYWRkaW5nIiwKCQly
b3dzcGFuOiAicm93U3BhbiIsCgkJY29sc3BhbjogImNvbFNwYW4iLAoJCXVzZW1h
cDogInVzZU1hcCIsCgkJZnJhbWVib3JkZXI6ICJmcmFtZUJvcmRlciIsCgkJY29u
dGVudGVkaXRhYmxlOiAiY29udGVudEVkaXRhYmxlIgoJfSwKCglwcm9wOiBmdW5j
dGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7CgkJdmFyIHJldCwgaG9va3MsIG5v
dHhtbCwKCQkJblR5cGUgPSBlbGVtLm5vZGVUeXBlOwoKCQkvLyBkb24ndCBnZXQv
c2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5v
ZGVzCgkJaWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8
fCBuVHlwZSA9PT0gMiApIHsKCQkJcmV0dXJuOwoJCX0KCgkJbm90eG1sID0gblR5
cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApOwoKCQlpZiAoIG5v
dHhtbCApIHsKCQkJLy8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rcwoJCQluYW1l
ID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lOwoJCQlob29rcyA9IGpR
dWVyeS5wcm9wSG9va3NbIG5hbWUgXTsKCQl9CgoJCWlmICggdmFsdWUgIT09IHVu
ZGVmaW5lZCApIHsKCQkJaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJiAo
cmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZp
bmVkICkgewoJCQkJcmV0dXJuIHJldDsKCgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4g
KCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApOwoJCQl9CgoJCX0gZWxzZSB7CgkJCWlm
ICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCgg
ZWxlbSwgbmFtZSApKSAhPT0gbnVsbCApIHsKCQkJCXJldHVybiByZXQ7CgoJCQl9
IGVsc2UgewoJCQkJcmV0dXJuIGVsZW1bIG5hbWUgXTsKCQkJfQoJCX0KCX0sCgoJ
cHJvcEhvb2tzOiB7CgkJdGFiSW5kZXg6IHsKCQkJZ2V0OiBmdW5jdGlvbiggZWxl
bSApIHsKCQkJCS8vIGVsZW0udGFiSW5kZXggZG9lc24ndCBhbHdheXMgcmV0dXJu
IHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4gaXQgaGFzbid0IGJlZW4gZXhwbGljaXRs
eSBzZXQKCQkJCS8vIGh0dHA6Ly9mbHVpZHByb2plY3Qub3JnL2Jsb2cvMjAwOC8w
MS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5nLXRhYmluZGV4LXZhbHVl
cy13aXRoLWphdmFzY3JpcHQvCgkJCQl2YXIgYXR0cmlidXRlTm9kZSA9IGVsZW0u
Z2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTsKCgkJCQlyZXR1cm4gYXR0cmli
dXRlTm9kZSAmJiBhdHRyaWJ1dGVOb2RlLnNwZWNpZmllZCA/CgkJCQkJcGFyc2VJ
bnQoIGF0dHJpYnV0ZU5vZGUudmFsdWUsIDEwICkgOgoJCQkJCXJmb2N1c2FibGUu
dGVzdCggZWxlbS5ub2RlTmFtZSApIHx8IHJjbGlja2FibGUudGVzdCggZWxlbS5u
b2RlTmFtZSApICYmIGVsZW0uaHJlZiA/CgkJCQkJCTAgOgoJCQkJCQl1bmRlZmlu
ZWQ7CgkJCX0KCQl9Cgl9Cn0pOwoKLy8gQWRkIHRoZSB0YWJJbmRleCBwcm9wSG9v
ayB0byBhdHRySG9va3MgZm9yIGJhY2stY29tcGF0IChkaWZmZXJlbnQgY2FzZSBp
cyBpbnRlbnRpb25hbCkKalF1ZXJ5LmF0dHJIb29rcy50YWJpbmRleCA9IGpRdWVy
eS5wcm9wSG9va3MudGFiSW5kZXg7CgovLyBIb29rIGZvciBib29sZWFuIGF0dHJp
YnV0ZXMKYm9vbEhvb2sgPSB7CglnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkg
ewoJCS8vIEFsaWduIGJvb2xlYW4gYXR0cmlidXRlcyB3aXRoIGNvcnJlc3BvbmRp
bmcgcHJvcGVydGllcwoJCS8vIEZhbGwgYmFjayB0byBhdHRyaWJ1dGUgcHJlc2Vu
Y2Ugd2hlcmUgc29tZSBib29sZWFucyBhcmUgbm90IHN1cHBvcnRlZAoJCXZhciBh
dHRyTm9kZSwKCQkJcHJvcGVydHkgPSBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSAp
OwoJCXJldHVybiBwcm9wZXJ0eSA9PT0gdHJ1ZSB8fCB0eXBlb2YgcHJvcGVydHkg
IT09ICJib29sZWFuIiAmJiAoIGF0dHJOb2RlID0gZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKG5hbWUpICkgJiYgYXR0ck5vZGUubm9kZVZhbHVlICE9PSBmYWxzZSA/CgkJ
CW5hbWUudG9Mb3dlckNhc2UoKSA6CgkJCXVuZGVmaW5lZDsKCX0sCglzZXQ6IGZ1
bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKCQl2YXIgcHJvcE5hbWU7CgkJ
aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7CgkJCS8vIFJlbW92ZSBib29sZWFuIGF0
dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2UKCQkJalF1ZXJ5LnJlbW92ZUF0dHIo
IGVsZW0sIG5hbWUgKTsKCQl9IGVsc2UgewoJCQkvLyB2YWx1ZSBpcyB0cnVlIHNp
bmNlIHdlIGtub3cgYXQgdGhpcyBwb2ludCBpdCdzIHR5cGUgYm9vbGVhbiBhbmQg
bm90IGZhbHNlCgkJCS8vIFNldCBib29sZWFuIGF0dHJpYnV0ZXMgdG8gdGhlIHNh
bWUgbmFtZSBhbmQgc2V0IHRoZSBET00gcHJvcGVydHkKCQkJcHJvcE5hbWUgPSBq
UXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7CgkJCWlmICggcHJvcE5hbWUg
aW4gZWxlbSApIHsKCQkJCS8vIE9ubHkgc2V0IHRoZSBJREwgc3BlY2lmaWNhbGx5
IGlmIGl0IGFscmVhZHkgZXhpc3RzIG9uIHRoZSBlbGVtZW50CgkJCQllbGVtWyBw
cm9wTmFtZSBdID0gdHJ1ZTsKCQkJfQoKCQkJZWxlbS5zZXRBdHRyaWJ1dGUoIG5h
bWUsIG5hbWUudG9Mb3dlckNhc2UoKSApOwoJCX0KCQlyZXR1cm4gbmFtZTsKCX0K
fTsKCi8vIElFNi83IGRvIG5vdCBzdXBwb3J0IGdldHRpbmcvc2V0dGluZyBzb21l
IGF0dHJpYnV0ZXMgd2l0aCBnZXQvc2V0QXR0cmlidXRlCmlmICggIWdldFNldEF0
dHJpYnV0ZSApIHsKCglmaXhTcGVjaWZpZWQgPSB7CgkJbmFtZTogdHJ1ZSwKCQlp
ZDogdHJ1ZQoJfTsKCgkvLyBVc2UgdGhpcyBmb3IgYW55IGF0dHJpYnV0ZSBpbiBJ
RTYvNwoJLy8gVGhpcyBmaXhlcyBhbG1vc3QgZXZlcnkgSUU2LzcgaXNzdWUKCW5v
ZGVIb29rID0galF1ZXJ5LnZhbEhvb2tzLmJ1dHRvbiA9IHsKCQlnZXQ6IGZ1bmN0
aW9uKCBlbGVtLCBuYW1lICkgewoJCQl2YXIgcmV0OwoJCQlyZXQgPSBlbGVtLmdl
dEF0dHJpYnV0ZU5vZGUoIG5hbWUgKTsKCQkJcmV0dXJuIHJldCAmJiAoIGZpeFNw
ZWNpZmllZFsgbmFtZSBdID8gcmV0Lm5vZGVWYWx1ZSAhPT0gIiIgOiByZXQuc3Bl
Y2lmaWVkICkgPwoJCQkJcmV0Lm5vZGVWYWx1ZSA6CgkJCQl1bmRlZmluZWQ7CgkJ
fSwKCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHsKCQkJLy8g
U2V0IHRoZSBleGlzdGluZyBvciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG5vZGUK
CQkJdmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApOwoJCQlp
ZiAoICFyZXQgKSB7CgkJCQlyZXQgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUo
IG5hbWUgKTsKCQkJCWVsZW0uc2V0QXR0cmlidXRlTm9kZSggcmV0ICk7CgkJCX0K
CQkJcmV0dXJuICggcmV0Lm5vZGVWYWx1ZSA9IHZhbHVlICsgIiIgKTsKCQl9Cgl9
OwoKCS8vIEFwcGx5IHRoZSBub2RlSG9vayB0byB0YWJpbmRleAoJalF1ZXJ5LmF0
dHJIb29rcy50YWJpbmRleC5zZXQgPSBub2RlSG9vay5zZXQ7CgoJLy8gU2V0IHdp
ZHRoIGFuZCBoZWlnaHQgdG8gYXV0byBpbnN0ZWFkIG9mIDAgb24gZW1wdHkgc3Ry
aW5nKCBCdWcgIzgxNTAgKQoJLy8gVGhpcyBpcyBmb3IgcmVtb3ZhbHMKCWpRdWVy
eS5lYWNoKFsgIndpZHRoIiwgImhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUg
KSB7CgkJalF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCgg
alF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdLCB7CgkJCXNldDogZnVuY3Rpb24oIGVs
ZW0sIHZhbHVlICkgewoJCQkJaWYgKCB2YWx1ZSA9PT0gIiIgKSB7CgkJCQkJZWxl
bS5zZXRBdHRyaWJ1dGUoIG5hbWUsICJhdXRvIiApOwoJCQkJCXJldHVybiB2YWx1
ZTsKCQkJCX0KCQkJfQoJCX0pOwoJfSk7CgoJLy8gU2V0IGNvbnRlbnRlZGl0YWJs
ZSB0byBmYWxzZSBvbiByZW1vdmFscygjMTA0MjkpCgkvLyBTZXR0aW5nIHRvIGVt
cHR5IHN0cmluZyB0aHJvd3MgYW4gZXJyb3IgYXMgYW4gaW52YWxpZCB2YWx1ZQoJ
alF1ZXJ5LmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGUgPSB7CgkJZ2V0OiBub2Rl
SG9vay5nZXQsCgkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7
CgkJCWlmICggdmFsdWUgPT09ICIiICkgewoJCQkJdmFsdWUgPSAiZmFsc2UiOwoJ
CQl9CgkJCW5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKTsKCQl9Cgl9
Owp9CgoKLy8gU29tZSBhdHRyaWJ1dGVzIHJlcXVpcmUgYSBzcGVjaWFsIGNhbGwg
b24gSUUKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQgKSB7Cglq
UXVlcnkuZWFjaChbICJocmVmIiwgInNyYyIsICJ3aWR0aCIsICJoZWlnaHQiIF0s
IGZ1bmN0aW9uKCBpLCBuYW1lICkgewoJCWpRdWVyeS5hdHRySG9va3NbIG5hbWUg
XSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSwgewoJ
CQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQkJdmFyIHJldCA9IGVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lLCAyICk7CgkJCQlyZXR1cm4gcmV0ID09PSBudWxsID8g
dW5kZWZpbmVkIDogcmV0OwoJCQl9CgkJfSk7Cgl9KTsKfQoKaWYgKCAhalF1ZXJ5
LnN1cHBvcnQuc3R5bGUgKSB7CglqUXVlcnkuYXR0ckhvb2tzLnN0eWxlID0gewoJ
CWdldDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCS8vIFJldHVybiB1bmRlZmluZWQg
aW4gdGhlIGNhc2Ugb2YgZW1wdHkgc3RyaW5nCgkJCS8vIE5vcm1hbGl6ZSB0byBs
b3dlcmNhc2Ugc2luY2UgSUUgdXBwZXJjYXNlcyBjc3MgcHJvcGVydHkgbmFtZXMK
CQkJcmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpIHx8IHVu
ZGVmaW5lZDsKCQl9LAoJCXNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewoJ
CQlyZXR1cm4gKCBlbGVtLnN0eWxlLmNzc1RleHQgPSAiIiArIHZhbHVlICk7CgkJ
fQoJfTsKfQoKLy8gU2FmYXJpIG1pcy1yZXBvcnRzIHRoZSBkZWZhdWx0IHNlbGVj
dGVkIHByb3BlcnR5IG9mIGFuIG9wdGlvbgovLyBBY2Nlc3NpbmcgdGhlIHBhcmVu
dCdzIHNlbGVjdGVkSW5kZXggcHJvcGVydHkgZml4ZXMgaXQKaWYgKCAhalF1ZXJ5
LnN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7CglqUXVlcnkucHJvcEhvb2tzLnNlbGVj
dGVkID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCwg
ewoJCWdldDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXZhciBwYXJlbnQgPSBlbGVt
LnBhcmVudE5vZGU7CgoJCQlpZiAoIHBhcmVudCApIHsKCQkJCXBhcmVudC5zZWxl
Y3RlZEluZGV4OwoKCQkJCS8vIE1ha2Ugc3VyZSB0aGF0IGl0IGFsc28gd29ya3Mg
d2l0aCBvcHRncm91cHMsIHNlZSAjNTcwMQoJCQkJaWYgKCBwYXJlbnQucGFyZW50
Tm9kZSApIHsKCQkJCQlwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OwoJ
CQkJfQoJCQl9CgkJCXJldHVybiBudWxsOwoJCX0KCX0pOwp9CgovLyBJRTYvNyBj
YWxsIGVuY3R5cGUgZW5jb2RpbmcKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuZW5jdHlw
ZSApIHsKCWpRdWVyeS5wcm9wRml4LmVuY3R5cGUgPSAiZW5jb2RpbmciOwp9Cgov
LyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlcgppZiAoICFqUXVl
cnkuc3VwcG9ydC5jaGVja09uICkgewoJalF1ZXJ5LmVhY2goWyAicmFkaW8iLCAi
Y2hlY2tib3giIF0sIGZ1bmN0aW9uKCkgewoJCWpRdWVyeS52YWxIb29rc1sgdGhp
cyBdID0gewoJCQlnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQkJLy8gSGFuZGxl
IHRoZSBjYXNlIHdoZXJlIGluIFdlYmtpdCAiIiBpcyByZXR1cm5lZCBpbnN0ZWFk
IG9mICJvbiIgaWYgYSB2YWx1ZSBpc24ndCBzcGVjaWZpZWQKCQkJCXJldHVybiBl
bGVtLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA9PT0gbnVsbCA/ICJvbiIgOiBlbGVt
LnZhbHVlOwoJCQl9CgkJfTsKCX0pOwp9CmpRdWVyeS5lYWNoKFsgInJhZGlvIiwg
ImNoZWNrYm94IiBdLCBmdW5jdGlvbigpIHsKCWpRdWVyeS52YWxIb29rc1sgdGhp
cyBdID0galF1ZXJ5LmV4dGVuZCggalF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0sIHsK
CQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKCQkJaWYgKCBqUXVlcnku
aXNBcnJheSggdmFsdWUgKSApIHsKCQkJCXJldHVybiAoIGVsZW0uY2hlY2tlZCA9
IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCksIHZhbHVlICkgPj0g
MCApOwoJCQl9CgkJfQoJfSk7Cn0pOwoKCgoKdmFyIHJmb3JtRWxlbXMgPSAvXig/
OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksCglydHlwZW5hbWVzcGFjZSA9IC9e
KFteXC5dKik/KD86XC4oLispKT8kLywKCXJob3ZlckhhY2sgPSAvXGJob3Zlcihc
LlxTKyk/XGIvLAoJcmtleUV2ZW50ID0gL15rZXkvLAoJcm1vdXNlRXZlbnQgPSAv
Xig/Om1vdXNlfGNvbnRleHRtZW51KXxjbGljay8sCglyZm9jdXNNb3JwaCA9IC9e
KD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLywKCXJxdWlja0lzID0gL14o
XHcqKSg/OiMoW1x3XC1dKykpPyg/OlwuKFtcd1wtXSspKT8kLywKCXF1aWNrUGFy
c2UgPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CgkJdmFyIHF1aWNrID0gcnF1aWNr
SXMuZXhlYyggc2VsZWN0b3IgKTsKCQlpZiAoIHF1aWNrICkgewoJCQkvLyAgIDAg
IDEgICAgMiAgIDMKCQkJLy8gWyBfLCB0YWcsIGlkLCBjbGFzcyBdCgkJCXF1aWNr
WzFdID0gKCBxdWlja1sxXSB8fCAiIiApLnRvTG93ZXJDYXNlKCk7CgkJCXF1aWNr
WzNdID0gcXVpY2tbM10gJiYgbmV3IFJlZ0V4cCggIig/Ol58XFxzKSIgKyBxdWlj
a1szXSArICIoPzpcXHN8JCkiICk7CgkJfQoJCXJldHVybiBxdWljazsKCX0sCglx
dWlja0lzID0gZnVuY3Rpb24oIGVsZW0sIG0gKSB7CgkJdmFyIGF0dHJzID0gZWxl
bS5hdHRyaWJ1dGVzIHx8IHt9OwoJCXJldHVybiAoCgkJCSghbVsxXSB8fCBlbGVt
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1bMV0pICYmCgkJCSghbVsyXSB8
fCAoYXR0cnMuaWQgfHwge30pLnZhbHVlID09PSBtWzJdKSAmJgoJCQkoIW1bM10g
fHwgbVszXS50ZXN0KCAoYXR0cnNbICJjbGFzcyIgXSB8fCB7fSkudmFsdWUgKSkK
CQkpOwoJfSwKCWhvdmVySGFjayA9IGZ1bmN0aW9uKCBldmVudHMgKSB7CgkJcmV0
dXJuIGpRdWVyeS5ldmVudC5zcGVjaWFsLmhvdmVyID8gZXZlbnRzIDogZXZlbnRz
LnJlcGxhY2UoIHJob3ZlckhhY2ssICJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQx
IiApOwoJfTsKCi8qCiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2
ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4KICogUHJv
cHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9m
IHRoZSBpZGVhcy4KICovCmpRdWVyeS5ldmVudCA9IHsKCglhZGQ6IGZ1bmN0aW9u
KCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7CgoJCXZh
ciBlbGVtRGF0YSwgZXZlbnRIYW5kbGUsIGV2ZW50cywKCQkJdCwgdG5zLCB0eXBl
LCBuYW1lc3BhY2VzLCBoYW5kbGVPYmosCgkJCWhhbmRsZU9iakluLCBxdWljaywg
aGFuZGxlcnMsIHNwZWNpYWw7CgoJCS8vIERvbid0IGF0dGFjaCBldmVudHMgdG8g
bm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYWxsb3cgcGxhaW4gb2JqZWN0
cyB0aG8pCgkJaWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5
cGUgPT09IDggfHwgIXR5cGVzIHx8ICFoYW5kbGVyIHx8ICEoZWxlbURhdGEgPSBq
UXVlcnkuX2RhdGEoIGVsZW0gKSkgKSB7CgkJCXJldHVybjsKCQl9CgoJCS8vIENh
bGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGll
dSBvZiB0aGUgaGFuZGxlcgoJCWlmICggaGFuZGxlci5oYW5kbGVyICkgewoJCQlo
YW5kbGVPYmpJbiA9IGhhbmRsZXI7CgkJCWhhbmRsZXIgPSBoYW5kbGVPYmpJbi5o
YW5kbGVyOwoJCX0KCgkJLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFz
IGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyCgkJaWYg
KCAhaGFuZGxlci5ndWlkICkgewoJCQloYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3Vp
ZCsrOwoJCX0KCgkJLy8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVy
ZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdAoJCWV2ZW50
cyA9IGVsZW1EYXRhLmV2ZW50czsKCQlpZiAoICFldmVudHMgKSB7CgkJCWVsZW1E
YXRhLmV2ZW50cyA9IGV2ZW50cyA9IHt9OwoJCX0KCQlldmVudEhhbmRsZSA9IGVs
ZW1EYXRhLmhhbmRsZTsKCQlpZiAoICFldmVudEhhbmRsZSApIHsKCQkJZWxlbURh
dGEuaGFuZGxlID0gZXZlbnRIYW5kbGUgPSBmdW5jdGlvbiggZSApIHsKCQkJCS8v
IERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmln
Z2VyKCkgYW5kCgkJCQkvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBh
IHBhZ2UgaGFzIHVubG9hZGVkCgkJCQlyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0g
InVuZGVmaW5lZCIgJiYgKCFlIHx8IGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09
IGUudHlwZSkgPwoJCQkJCWpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZXZl
bnRIYW5kbGUuZWxlbSwgYXJndW1lbnRzICkgOgoJCQkJCXVuZGVmaW5lZDsKCQkJ
fTsKCQkJLy8gQWRkIGVsZW0gYXMgYSBwcm9wZXJ0eSBvZiB0aGUgaGFuZGxlIGZu
IHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhayB3aXRoIElFIG5vbi1uYXRpdmUgZXZl
bnRzCgkJCWV2ZW50SGFuZGxlLmVsZW0gPSBlbGVtOwoJCX0KCgkJLy8gSGFuZGxl
IG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQoJCS8vIGpRdWVy
eSguLi4pLmJpbmQoIm1vdXNlb3ZlciBtb3VzZW91dCIsIGZuKTsKCQl0eXBlcyA9
IGpRdWVyeS50cmltKCBob3ZlckhhY2sodHlwZXMpICkuc3BsaXQoICIgIiApOwoJ
CWZvciAoIHQgPSAwOyB0IDwgdHlwZXMubGVuZ3RoOyB0KysgKSB7CgoJCQl0bnMg
PSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdOwoJCQl0eXBl
ID0gdG5zWzFdOwoJCQluYW1lc3BhY2VzID0gKCB0bnNbMl0gfHwgIiIgKS5zcGxp
dCggIi4iICkuc29ydCgpOwoKCQkJLy8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlw
ZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdl
ZCB0eXBlCgkJCXNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBd
IHx8IHt9OwoKCQkJLy8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNw
ZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlCgkJCXR5
cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFs
LmJpbmRUeXBlICkgfHwgdHlwZTsKCgkJCS8vIFVwZGF0ZSBzcGVjaWFsIGJhc2Vk
IG9uIG5ld2x5IHJlc2V0IHR5cGUKCQkJc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5z
cGVjaWFsWyB0eXBlIF0gfHwge307CgoJCQkvLyBoYW5kbGVPYmogaXMgcGFzc2Vk
IHRvIGFsbCBldmVudCBoYW5kbGVycwoJCQloYW5kbGVPYmogPSBqUXVlcnkuZXh0
ZW5kKHsKCQkJCXR5cGU6IHR5cGUsCgkJCQlvcmlnVHlwZTogdG5zWzFdLAoJCQkJ
ZGF0YTogZGF0YSwKCQkJCWhhbmRsZXI6IGhhbmRsZXIsCgkJCQlndWlkOiBoYW5k
bGVyLmd1aWQsCgkJCQlzZWxlY3Rvcjogc2VsZWN0b3IsCgkJCQlxdWljazogcXVp
Y2tQYXJzZSggc2VsZWN0b3IgKSwKCQkJCW5hbWVzcGFjZTogbmFtZXNwYWNlcy5q
b2luKCIuIikKCQkJfSwgaGFuZGxlT2JqSW4gKTsKCgkJCS8vIEluaXQgdGhlIGV2
ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0CgkJCWhhbmRsZXJz
ID0gZXZlbnRzWyB0eXBlIF07CgkJCWlmICggIWhhbmRsZXJzICkgewoJCQkJaGFu
ZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdOwoJCQkJaGFuZGxlcnMuZGVsZWdh
dGVDb3VudCA9IDA7CgoJCQkJLy8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lci9h
dHRhY2hFdmVudCBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5z
IGZhbHNlCgkJCQlpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAu
Y2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0g
ZmFsc2UgKSB7CgkJCQkJLy8gQmluZCB0aGUgZ2xvYmFsIGV2ZW50IGhhbmRsZXIg
dG8gdGhlIGVsZW1lbnQKCQkJCQlpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciAp
IHsKCQkJCQkJZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRs
ZSwgZmFsc2UgKTsKCgkJCQkJfSBlbHNlIGlmICggZWxlbS5hdHRhY2hFdmVudCAp
IHsKCQkJCQkJZWxlbS5hdHRhY2hFdmVudCggIm9uIiArIHR5cGUsIGV2ZW50SGFu
ZGxlICk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlpZiAoIHNwZWNpYWwuYWRkICkg
ewoJCQkJc3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CgoJCQkJ
aWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHsKCQkJCQloYW5kbGVPYmou
aGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkOwoJCQkJfQoJCQl9CgoJCQkvLyBB
ZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBm
cm9udAoJCQlpZiAoIHNlbGVjdG9yICkgewoJCQkJaGFuZGxlcnMuc3BsaWNlKCBo
YW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApOwoJCQl9IGVs
c2UgewoJCQkJaGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7CgkJCX0KCgkJCS8v
IEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQs
IGZvciBldmVudCBvcHRpbWl6YXRpb24KCQkJalF1ZXJ5LmV2ZW50Lmdsb2JhbFsg
dHlwZSBdID0gdHJ1ZTsKCQl9CgoJCS8vIE51bGxpZnkgZWxlbSB0byBwcmV2ZW50
IG1lbW9yeSBsZWFrcyBpbiBJRQoJCWVsZW0gPSBudWxsOwoJfSwKCglnbG9iYWw6
IHt9LAoKCS8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20g
YW4gZWxlbWVudAoJcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRs
ZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHsKCgkJdmFyIGVsZW1EYXRhID0g
alF1ZXJ5Lmhhc0RhdGEoIGVsZW0gKSAmJiBqUXVlcnkuX2RhdGEoIGVsZW0gKSwK
CQkJdCwgdG5zLCB0eXBlLCBvcmlnVHlwZSwgbmFtZXNwYWNlcywgb3JpZ0NvdW50
LAoJCQlqLCBldmVudHMsIHNwZWNpYWwsIGhhbmRsZSwgZXZlbnRUeXBlLCBoYW5k
bGVPYmo7CgoJCWlmICggIWVsZW1EYXRhIHx8ICEoZXZlbnRzID0gZWxlbURhdGEu
ZXZlbnRzKSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJLy8gT25jZSBmb3IgZWFjaCB0
eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZAoJCXR5
cGVzID0galF1ZXJ5LnRyaW0oIGhvdmVySGFjayggdHlwZXMgfHwgIiIgKSApLnNw
bGl0KCIgIik7CgkJZm9yICggdCA9IDA7IHQgPCB0eXBlcy5sZW5ndGg7IHQrKyAp
IHsKCQkJdG5zID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBb
XTsKCQkJdHlwZSA9IG9yaWdUeXBlID0gdG5zWzFdOwoJCQluYW1lc3BhY2VzID0g
dG5zWzJdOwoKCQkJLy8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNw
YWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50CgkJCWlmICggIXR5cGUg
KSB7CgkJCQlmb3IgKCB0eXBlIGluIGV2ZW50cyApIHsKCQkJCQlqUXVlcnkuZXZl
bnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2Vs
ZWN0b3IsIHRydWUgKTsKCQkJCX0KCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlzcGVj
aWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKCQkJdHlw
ZSA9ICggc2VsZWN0b3I/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5i
aW5kVHlwZSApIHx8IHR5cGU7CgkJCWV2ZW50VHlwZSA9IGV2ZW50c1sgdHlwZSBd
IHx8IFtdOwoJCQlvcmlnQ291bnQgPSBldmVudFR5cGUubGVuZ3RoOwoJCQluYW1l
c3BhY2VzID0gbmFtZXNwYWNlcyA/IG5ldyBSZWdFeHAoIihefFxcLikiICsgbmFt
ZXNwYWNlcy5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4oPzouKlxcLik/Iikg
KyAiKFxcLnwkKSIpIDogbnVsbDsKCgkJCS8vIFJlbW92ZSBtYXRjaGluZyBldmVu
dHMKCQkJZm9yICggaiA9IDA7IGogPCBldmVudFR5cGUubGVuZ3RoOyBqKysgKSB7
CgkJCQloYW5kbGVPYmogPSBldmVudFR5cGVbIGogXTsKCgkJCQlpZiAoICggbWFw
cGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYm
CgkJCQkJICggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmou
Z3VpZCApICYmCgkJCQkJICggIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy50ZXN0
KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJgoJCQkJCSAoICFzZWxlY3RvciB8
fCBzZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yIHx8IHNlbGVjdG9yID09
PSAiKioiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkgewoJCQkJCWV2ZW50VHlw
ZS5zcGxpY2UoIGotLSwgMSApOwoKCQkJCQlpZiAoIGhhbmRsZU9iai5zZWxlY3Rv
ciApIHsKCQkJCQkJZXZlbnRUeXBlLmRlbGVnYXRlQ291bnQtLTsKCQkJCQl9CgkJ
CQkJaWYgKCBzcGVjaWFsLnJlbW92ZSApIHsKCQkJCQkJc3BlY2lhbC5yZW1vdmUu
Y2FsbCggZWxlbSwgaGFuZGxlT2JqICk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkv
LyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29t
ZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0CgkJCS8vIChhdm9pZHMg
cG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBv
ZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKQoJCQlpZiAoIGV2ZW50VHlwZS5sZW5n
dGggPT09IDAgJiYgb3JpZ0NvdW50ICE9PSBldmVudFR5cGUubGVuZ3RoICkgewoJ
CQkJaWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fCBzcGVjaWFsLnRlYXJkb3duLmNh
bGwoIGVsZW0sIG5hbWVzcGFjZXMgKSA9PT0gZmFsc2UgKSB7CgkJCQkJalF1ZXJ5
LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTsKCQkJ
CX0KCgkJCQlkZWxldGUgZXZlbnRzWyB0eXBlIF07CgkJCX0KCQl9CgoJCS8vIFJl
bW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCgkJaWYgKCBq
UXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7CgkJCWhhbmRsZSA9IGVs
ZW1EYXRhLmhhbmRsZTsKCQkJaWYgKCBoYW5kbGUgKSB7CgkJCQloYW5kbGUuZWxl
bSA9IG51bGw7CgkJCX0KCgkJCS8vIHJlbW92ZURhdGEgYWxzbyBjaGVja3MgZm9y
IGVtcHRpbmVzcyBhbmQgY2xlYXJzIHRoZSBleHBhbmRvIGlmIGVtcHR5CgkJCS8v
IHNvIHVzZSBpdCBpbnN0ZWFkIG9mIGRlbGV0ZQoJCQlqUXVlcnkucmVtb3ZlRGF0
YSggZWxlbSwgWyAiZXZlbnRzIiwgImhhbmRsZSIgXSwgdHJ1ZSApOwoJCX0KCX0s
CgoJLy8gRXZlbnRzIHRoYXQgYXJlIHNhZmUgdG8gc2hvcnQtY2lyY3VpdCBpZiBu
byBoYW5kbGVycyBhcmUgYXR0YWNoZWQuCgkvLyBOYXRpdmUgRE9NIGV2ZW50cyBz
aG91bGQgbm90IGJlIGFkZGVkLCB0aGV5IG1heSBoYXZlIGlubGluZSBoYW5kbGVy
cy4KCWN1c3RvbUV2ZW50OiB7CgkJImdldERhdGEiOiB0cnVlLAoJCSJzZXREYXRh
IjogdHJ1ZSwKCQkiY2hhbmdlRGF0YSI6IHRydWUKCX0sCgoJdHJpZ2dlcjogZnVu
Y3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7CgkJLy8g
RG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKCQlpZiAo
IGVsZW0gJiYgKGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9
PT0gOCkgKSB7CgkJCXJldHVybjsKCQl9CgoJCS8vIEV2ZW50IG9iamVjdCBvciBl
dmVudCB0eXBlCgkJdmFyIHR5cGUgPSBldmVudC50eXBlIHx8IGV2ZW50LAoJCQlu
YW1lc3BhY2VzID0gW10sCgkJCWNhY2hlLCBleGNsdXNpdmUsIGksIGN1ciwgb2xk
LCBvbnR5cGUsIHNwZWNpYWwsIGhhbmRsZSwgZXZlbnRQYXRoLCBidWJibGVUeXBl
OwoKCQkvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJl
IHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3cKCQlpZiAoIHJmb2N1c01v
cnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7CgkJ
CXJldHVybjsKCQl9CgoJCWlmICggdHlwZS5pbmRleE9mKCAiISIgKSA+PSAwICkg
ewoJCQkvLyBFeGNsdXNpdmUgZXZlbnRzIHRyaWdnZXIgb25seSBmb3IgdGhlIGV4
YWN0IGV2ZW50IChubyBuYW1lc3BhY2VzKQoJCQl0eXBlID0gdHlwZS5zbGljZSgw
LCAtMSk7CgkJCWV4Y2x1c2l2ZSA9IHRydWU7CgkJfQoKCQlpZiAoIHR5cGUuaW5k
ZXhPZiggIi4iICkgPj0gMCApIHsKCQkJLy8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBj
cmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKQoJ
CQluYW1lc3BhY2VzID0gdHlwZS5zcGxpdCgiLiIpOwoJCQl0eXBlID0gbmFtZXNw
YWNlcy5zaGlmdCgpOwoJCQluYW1lc3BhY2VzLnNvcnQoKTsKCQl9CgoJCWlmICgg
KCFlbGVtIHx8IGpRdWVyeS5ldmVudC5jdXN0b21FdmVudFsgdHlwZSBdKSAmJiAh
alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdICkgewoJCQkvLyBObyBqUXVlcnkg
aGFuZGxlcnMgZm9yIHRoaXMgZXZlbnQgdHlwZSwgYW5kIGl0IGNhbid0IGhhdmUg
aW5saW5lIGhhbmRsZXJzCgkJCXJldHVybjsKCQl9CgoJCS8vIENhbGxlciBjYW4g
cGFzcyBpbiBhbiBFdmVudCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUg
c3RyaW5nCgkJZXZlbnQgPSB0eXBlb2YgZXZlbnQgPT09ICJvYmplY3QiID8KCQkJ
Ly8galF1ZXJ5LkV2ZW50IG9iamVjdAoJCQlldmVudFsgalF1ZXJ5LmV4cGFuZG8g
XSA/IGV2ZW50IDoKCQkJLy8gT2JqZWN0IGxpdGVyYWwKCQkJbmV3IGpRdWVyeS5F
dmVudCggdHlwZSwgZXZlbnQgKSA6CgkJCS8vIEp1c3QgdGhlIGV2ZW50IHR5cGUg
KHN0cmluZykKCQkJbmV3IGpRdWVyeS5FdmVudCggdHlwZSApOwoKCQlldmVudC50
eXBlID0gdHlwZTsKCQlldmVudC5pc1RyaWdnZXIgPSB0cnVlOwoJCWV2ZW50LmV4
Y2x1c2l2ZSA9IGV4Y2x1c2l2ZTsKCQlldmVudC5uYW1lc3BhY2UgPSBuYW1lc3Bh
Y2VzLmpvaW4oICIuIiApOwoJCWV2ZW50Lm5hbWVzcGFjZV9yZSA9IGV2ZW50Lm5h
bWVzcGFjZT8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBuYW1lc3BhY2VzLmpvaW4o
IlxcLig/Oi4qXFwuKT8iKSArICIoXFwufCQpIikgOiBudWxsOwoJCW9udHlwZSA9
IHR5cGUuaW5kZXhPZiggIjoiICkgPCAwID8gIm9uIiArIHR5cGUgOiAiIjsKCgkJ
Ly8gSGFuZGxlIGEgZ2xvYmFsIHRyaWdnZXIKCQlpZiAoICFlbGVtICkgewoKCQkJ
Ly8gVE9ETzogU3RvcCB0YXVudGluZyB0aGUgZGF0YSBjYWNoZTsgcmVtb3ZlIGds
b2JhbCBldmVudHMgYW5kIGFsd2F5cyBhdHRhY2ggdG8gZG9jdW1lbnQKCQkJY2Fj
aGUgPSBqUXVlcnkuY2FjaGU7CgkJCWZvciAoIGkgaW4gY2FjaGUgKSB7CgkJCQlp
ZiAoIGNhY2hlWyBpIF0uZXZlbnRzICYmIGNhY2hlWyBpIF0uZXZlbnRzWyB0eXBl
IF0gKSB7CgkJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhLCBj
YWNoZVsgaSBdLmhhbmRsZS5lbGVtLCB0cnVlICk7CgkJCQl9CgkJCX0KCQkJcmV0
dXJuOwoJCX0KCgkJLy8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMg
YmVpbmcgcmV1c2VkCgkJZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkOwoJCWlmICgg
IWV2ZW50LnRhcmdldCApIHsKCQkJZXZlbnQudGFyZ2V0ID0gZWxlbTsKCQl9CgoJ
CS8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVu
dCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3QKCQlkYXRhID0gZGF0YSAh
PSBudWxsID8galF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApIDogW107CgkJZGF0YS51
bnNoaWZ0KCBldmVudCApOwoKCQkvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBk
cmF3IG91dHNpZGUgdGhlIGxpbmVzCgkJc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5z
cGVjaWFsWyB0eXBlIF0gfHwge307CgkJaWYgKCBzcGVjaWFsLnRyaWdnZXIgJiYg
c3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkg
ewoJCQlyZXR1cm47CgkJfQoKCQkvLyBEZXRlcm1pbmUgZXZlbnQgcHJvcGFnYXRp
b24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSkK
CQkvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRj
aCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KQoJCWV2ZW50
UGF0aCA9IFtbIGVsZW0sIHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZSBdXTsKCQlp
ZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWpRdWVy
eS5pc1dpbmRvdyggZWxlbSApICkgewoKCQkJYnViYmxlVHlwZSA9IHNwZWNpYWwu
ZGVsZWdhdGVUeXBlIHx8IHR5cGU7CgkJCWN1ciA9IHJmb2N1c01vcnBoLnRlc3Qo
IGJ1YmJsZVR5cGUgKyB0eXBlICkgPyBlbGVtIDogZWxlbS5wYXJlbnROb2RlOwoJ
CQlvbGQgPSBudWxsOwoJCQlmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5v
ZGUgKSB7CgkJCQlldmVudFBhdGgucHVzaChbIGN1ciwgYnViYmxlVHlwZSBdKTsK
CQkJCW9sZCA9IGN1cjsKCQkJfQoKCQkJLy8gT25seSBhZGQgd2luZG93IGlmIHdl
IGdvdCB0byBkb2N1bWVudCAoZS5nLiwgbm90IHBsYWluIG9iaiBvciBkZXRhY2hl
ZCBET00pCgkJCWlmICggb2xkICYmIG9sZCA9PT0gZWxlbS5vd25lckRvY3VtZW50
ICkgewoJCQkJZXZlbnRQYXRoLnB1c2goWyBvbGQuZGVmYXVsdFZpZXcgfHwgb2xk
LnBhcmVudFdpbmRvdyB8fCB3aW5kb3csIGJ1YmJsZVR5cGUgXSk7CgkJCX0KCQl9
CgoJCS8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGgKCQlmb3IgKCBp
ID0gMDsgaSA8IGV2ZW50UGF0aC5sZW5ndGggJiYgIWV2ZW50LmlzUHJvcGFnYXRp
b25TdG9wcGVkKCk7IGkrKyApIHsKCgkJCWN1ciA9IGV2ZW50UGF0aFtpXVswXTsK
CQkJZXZlbnQudHlwZSA9IGV2ZW50UGF0aFtpXVsxXTsKCgkJCWhhbmRsZSA9ICgg
alF1ZXJ5Ll9kYXRhKCBjdXIsICJldmVudHMiICkgfHwge30gKVsgZXZlbnQudHlw
ZSBdICYmIGpRdWVyeS5fZGF0YSggY3VyLCAiaGFuZGxlIiApOwoJCQlpZiAoIGhh
bmRsZSApIHsKCQkJCWhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7CgkJCX0KCQkJ
Ly8gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYXJlIEpTIGZ1bmN0aW9uIGFuZCBub3Qg
YSBqUXVlcnkgaGFuZGxlcgoJCQloYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5
cGUgXTsKCQkJaWYgKCBoYW5kbGUgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGN1ciAp
ICYmIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICkgPT09IGZhbHNlICkgewoJCQkJ
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQkJfQoJCX0KCQlldmVudC50eXBlID0g
dHlwZTsKCgkJLy8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rp
b24sIGRvIGl0IG5vdwoJCWlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNE
ZWZhdWx0UHJldmVudGVkKCkgKSB7CgoJCQlpZiAoICghc3BlY2lhbC5fZGVmYXVs
dCB8fCBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBlbGVtLm93bmVyRG9jdW1lbnQs
IGRhdGEgKSA9PT0gZmFsc2UpICYmCgkJCQkhKHR5cGUgPT09ICJjbGljayIgJiYg
alF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiYSIgKSkgJiYgalF1ZXJ5LmFjY2VwdERh
dGEoIGVsZW0gKSApIHsKCgkJCQkvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qg
b24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZl
bnQuCgkJCQkvLyBDYW4ndCB1c2UgYW4gLmlzRnVuY3Rpb24oKSBjaGVjayBoZXJl
IGJlY2F1c2UgSUU2LzcgZmFpbHMgdGhhdCB0ZXN0LgoJCQkJLy8gRG9uJ3QgZG8g
ZGVmYXVsdCBhY3Rpb25zIG9uIHdpbmRvdywgdGhhdCdzIHdoZXJlIGdsb2JhbCB2
YXJpYWJsZXMgYmUgKCM2MTcwKQoJCQkJLy8gSUU8OSBkaWVzIG9uIGZvY3VzL2Js
dXIgdG8gaGlkZGVuIGVsZW1lbnQgKCMxNDg2KQoJCQkJaWYgKCBvbnR5cGUgJiYg
ZWxlbVsgdHlwZSBdICYmICgodHlwZSAhPT0gImZvY3VzIiAmJiB0eXBlICE9PSAi
Ymx1ciIpIHx8IGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCAhPT0gMCkgJiYgIWpR
dWVyeS5pc1dpbmRvdyggZWxlbSApICkgewoKCQkJCQkvLyBEb24ndCByZS10cmln
Z2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9k
CgkJCQkJb2xkID0gZWxlbVsgb250eXBlIF07CgoJCQkJCWlmICggb2xkICkgewoJ
CQkJCQllbGVtWyBvbnR5cGUgXSA9IG51bGw7CgkJCQkJfQoKCQkJCQkvLyBQcmV2
ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFs
cmVhZHkgYnViYmxlZCBpdCBhYm92ZQoJCQkJCWpRdWVyeS5ldmVudC50cmlnZ2Vy
ZWQgPSB0eXBlOwoJCQkJCWVsZW1bIHR5cGUgXSgpOwoJCQkJCWpRdWVyeS5ldmVu
dC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7CgoJCQkJCWlmICggb2xkICkgewoJCQkJ
CQllbGVtWyBvbnR5cGUgXSA9IG9sZDsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJ
CXJldHVybiBldmVudC5yZXN1bHQ7Cgl9LAoKCWRpc3BhdGNoOiBmdW5jdGlvbigg
ZXZlbnQgKSB7CgoJCS8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJv
bSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdAoJCWV2ZW50ID0galF1ZXJ5LmV2ZW50
LmZpeCggZXZlbnQgfHwgd2luZG93LmV2ZW50ICk7CgoJCXZhciBoYW5kbGVycyA9
ICggKGpRdWVyeS5fZGF0YSggdGhpcywgImV2ZW50cyIgKSB8fCB7fSApWyBldmVu
dC50eXBlIF0gfHwgW10pLAoJCQlkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVs
ZWdhdGVDb3VudCwKCQkJYXJncyA9IFtdLnNsaWNlLmNhbGwoIGFyZ3VtZW50cywg
MCApLAoJCQlydW5fYWxsID0gIWV2ZW50LmV4Y2x1c2l2ZSAmJiAhZXZlbnQubmFt
ZXNwYWNlLAoJCQloYW5kbGVyUXVldWUgPSBbXSwKCQkJaSwgaiwgY3VyLCBqcWN1
ciwgcmV0LCBzZWxNYXRjaCwgbWF0Y2hlZCwgbWF0Y2hlcywgaGFuZGxlT2JqLCBz
ZWwsIHJlbGF0ZWQ7CgoJCS8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCBy
YXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50CgkJYXJnc1sw
XSA9IGV2ZW50OwoJCWV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpczsKCgkJLy8g
RGV0ZXJtaW5lIGhhbmRsZXJzIHRoYXQgc2hvdWxkIHJ1biBpZiB0aGVyZSBhcmUg
ZGVsZWdhdGVkIGV2ZW50cwoJCS8vIEF2b2lkIGRpc2FibGVkIGVsZW1lbnRzIGlu
IElFICgjNjkxMSkgYW5kIG5vbi1sZWZ0LWNsaWNrIGJ1YmJsaW5nIGluIEZpcmVm
b3ggKCMzODYxKQoJCWlmICggZGVsZWdhdGVDb3VudCAmJiAhZXZlbnQudGFyZ2V0
LmRpc2FibGVkICYmICEoZXZlbnQuYnV0dG9uICYmIGV2ZW50LnR5cGUgPT09ICJj
bGljayIpICkgewoKCQkJLy8gUHJlZ2VuZXJhdGUgYSBzaW5nbGUgalF1ZXJ5IG9i
amVjdCBmb3IgcmV1c2Ugd2l0aCAuaXMoKQoJCQlqcWN1ciA9IGpRdWVyeSh0aGlz
KTsKCQkJanFjdXIuY29udGV4dCA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlz
OwoKCQkJZm9yICggY3VyID0gZXZlbnQudGFyZ2V0OyBjdXIgIT0gdGhpczsgY3Vy
ID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHsKCQkJCXNlbE1hdGNoID0ge307
CgkJCQltYXRjaGVzID0gW107CgkJCQlqcWN1clswXSA9IGN1cjsKCQkJCWZvciAo
IGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkgewoJCQkJCWhhbmRsZU9i
aiA9IGhhbmRsZXJzWyBpIF07CgkJCQkJc2VsID0gaGFuZGxlT2JqLnNlbGVjdG9y
OwoKCQkJCQlpZiAoIHNlbE1hdGNoWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkgewoJ
CQkJCQlzZWxNYXRjaFsgc2VsIF0gPSAoCgkJCQkJCQloYW5kbGVPYmoucXVpY2sg
PyBxdWlja0lzKCBjdXIsIGhhbmRsZU9iai5xdWljayApIDoganFjdXIuaXMoIHNl
bCApCgkJCQkJCSk7CgkJCQkJfQoJCQkJCWlmICggc2VsTWF0Y2hbIHNlbCBdICkg
ewoJCQkJCQltYXRjaGVzLnB1c2goIGhhbmRsZU9iaiApOwoJCQkJCX0KCQkJCX0K
CQkJCWlmICggbWF0Y2hlcy5sZW5ndGggKSB7CgkJCQkJaGFuZGxlclF1ZXVlLnB1
c2goeyBlbGVtOiBjdXIsIG1hdGNoZXM6IG1hdGNoZXMgfSk7CgkJCQl9CgkJCX0K
CQl9CgoJCS8vIEFkZCB0aGUgcmVtYWluaW5nIChkaXJlY3RseS1ib3VuZCkgaGFu
ZGxlcnMKCQlpZiAoIGhhbmRsZXJzLmxlbmd0aCA+IGRlbGVnYXRlQ291bnQgKSB7
CgkJCWhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogdGhpcywgbWF0Y2hlczogaGFu
ZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9KTsKCQl9CgoJCS8vIFJ1biBk
ZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlv
biBiZW5lYXRoIHVzCgkJZm9yICggaSA9IDA7IGkgPCBoYW5kbGVyUXVldWUubGVu
Z3RoICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyBpKysgKSB7CgkJ
CW1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkgXTsKCQkJZXZlbnQuY3VycmVudFRh
cmdldCA9IG1hdGNoZWQuZWxlbTsKCgkJCWZvciAoIGogPSAwOyBqIDwgbWF0Y2hl
ZC5tYXRjaGVzLmxlbmd0aCAmJiAhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQoKTsgaisrICkgewoJCQkJaGFuZGxlT2JqID0gbWF0Y2hlZC5tYXRj
aGVzWyBqIF07CgoJCQkJLy8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEp
IGJlIG5vbi1leGNsdXNpdmUgYW5kIGhhdmUgbm8gbmFtZXNwYWNlLCBvcgoJCQkJ
Ly8gMikgaGF2ZSBuYW1lc3BhY2UocykgYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhv
c2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFj
ZSkuCgkJCQlpZiAoIHJ1bl9hbGwgfHwgKCFldmVudC5uYW1lc3BhY2UgJiYgIWhh
bmRsZU9iai5uYW1lc3BhY2UpIHx8IGV2ZW50Lm5hbWVzcGFjZV9yZSAmJiBldmVu
dC5uYW1lc3BhY2VfcmUudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgewoK
CQkJCQlldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7CgkJCQkJZXZlbnQuaGFu
ZGxlT2JqID0gaGFuZGxlT2JqOwoKCQkJCQlyZXQgPSAoIChqUXVlcnkuZXZlbnQu
c3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30pLmhhbmRsZSB8fCBo
YW5kbGVPYmouaGFuZGxlciApCgkJCQkJCQkuYXBwbHkoIG1hdGNoZWQuZWxlbSwg
YXJncyApOwoKCQkJCQlpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewoJCQkJCQll
dmVudC5yZXN1bHQgPSByZXQ7CgkJCQkJCWlmICggcmV0ID09PSBmYWxzZSApIHsK
CQkJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgkJCQkJCQlldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJ
cmV0dXJuIGV2ZW50LnJlc3VsdDsKCX0sCgoJLy8gSW5jbHVkZXMgc29tZSBldmVu
dCBwcm9wcyBzaGFyZWQgYnkgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnQKCS8vICoq
KiBhdHRyQ2hhbmdlIGF0dHJOYW1lIHJlbGF0ZWROb2RlIHNyY0VsZW1lbnQgIGFy
ZSBub3Qgbm9ybWFsaXplZCwgbm9uLVczQywgZGVwcmVjYXRlZCwgd2lsbCBiZSBy
ZW1vdmVkIGluIDEuOCAqKioKCXByb3BzOiAiYXR0ckNoYW5nZSBhdHRyTmFtZSBy
ZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUg
Y3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVk
VGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3Bs
aXQoIiAiKSwKCglmaXhIb29rczoge30sCgoJa2V5SG9va3M6IHsKCQlwcm9wczog
ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksCgkJZmlsdGVy
OiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkgewoKCQkJLy8gQWRkIHdoaWNo
IGZvciBrZXkgZXZlbnRzCgkJCWlmICggZXZlbnQud2hpY2ggPT0gbnVsbCApIHsK
CQkJCWV2ZW50LndoaWNoID0gb3JpZ2luYWwuY2hhckNvZGUgIT0gbnVsbCA/IG9y
aWdpbmFsLmNoYXJDb2RlIDogb3JpZ2luYWwua2V5Q29kZTsKCQkJfQoKCQkJcmV0
dXJuIGV2ZW50OwoJCX0KCX0sCgoJbW91c2VIb29rczogewoJCXByb3BzOiAiYnV0
dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFgg
b2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5z
cGxpdCgiICIpLAoJCWZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCAp
IHsKCQkJdmFyIGV2ZW50RG9jLCBkb2MsIGJvZHksCgkJCQlidXR0b24gPSBvcmln
aW5hbC5idXR0b24sCgkJCQlmcm9tRWxlbWVudCA9IG9yaWdpbmFsLmZyb21FbGVt
ZW50OwoKCQkJLy8gQ2FsY3VsYXRlIHBhZ2VYL1kgaWYgbWlzc2luZyBhbmQgY2xp
ZW50WC9ZIGF2YWlsYWJsZQoJCQlpZiAoIGV2ZW50LnBhZ2VYID09IG51bGwgJiYg
b3JpZ2luYWwuY2xpZW50WCAhPSBudWxsICkgewoJCQkJZXZlbnREb2MgPSBldmVu
dC50YXJnZXQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDsKCQkJCWRvYyA9IGV2
ZW50RG9jLmRvY3VtZW50RWxlbWVudDsKCQkJCWJvZHkgPSBldmVudERvYy5ib2R5
OwoKCQkJCWV2ZW50LnBhZ2VYID0gb3JpZ2luYWwuY2xpZW50WCArICggZG9jICYm
IGRvYy5zY3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDAg
KSAtICggZG9jICYmIGRvYy5jbGllbnRMZWZ0IHx8IGJvZHkgJiYgYm9keS5jbGll
bnRMZWZ0IHx8IDAgKTsKCQkJCWV2ZW50LnBhZ2VZID0gb3JpZ2luYWwuY2xpZW50
WSArICggZG9jICYmIGRvYy5zY3JvbGxUb3AgIHx8IGJvZHkgJiYgYm9keS5zY3Jv
bGxUb3AgIHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRUb3AgIHx8IGJvZHkg
JiYgYm9keS5jbGllbnRUb3AgIHx8IDAgKTsKCQkJfQoKCQkJLy8gQWRkIHJlbGF0
ZWRUYXJnZXQsIGlmIG5lY2Vzc2FyeQoJCQlpZiAoICFldmVudC5yZWxhdGVkVGFy
Z2V0ICYmIGZyb21FbGVtZW50ICkgewoJCQkJZXZlbnQucmVsYXRlZFRhcmdldCA9
IGZyb21FbGVtZW50ID09PSBldmVudC50YXJnZXQgPyBvcmlnaW5hbC50b0VsZW1l
bnQgOiBmcm9tRWxlbWVudDsKCQkJfQoKCQkJLy8gQWRkIHdoaWNoIGZvciBjbGlj
azogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodAoJCQkvLyBO
b3RlOiBidXR0b24gaXMgbm90IG5vcm1hbGl6ZWQsIHNvIGRvbid0IHVzZSBpdAoJ
CQlpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCApIHsK
CQkJCWV2ZW50LndoaWNoID0gKCBidXR0b24gJiAxID8gMSA6ICggYnV0dG9uICYg
MiA/IDMgOiAoIGJ1dHRvbiAmIDQgPyAyIDogMCApICkgKTsKCQkJfQoKCQkJcmV0
dXJuIGV2ZW50OwoJCX0KCX0sCgoJZml4OiBmdW5jdGlvbiggZXZlbnQgKSB7CgkJ
aWYgKCBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSApIHsKCQkJcmV0dXJuIGV2ZW50
OwoJCX0KCgkJLy8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQg
b2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzCgkJdmFyIGksIHBy
b3AsCgkJCW9yaWdpbmFsRXZlbnQgPSBldmVudCwKCQkJZml4SG9vayA9IGpRdWVy
eS5ldmVudC5maXhIb29rc1sgZXZlbnQudHlwZSBdIHx8IHt9LAoJCQljb3B5ID0g
Zml4SG9vay5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KCBmaXhIb29rLnByb3Bz
ICkgOiB0aGlzLnByb3BzOwoKCQlldmVudCA9IGpRdWVyeS5FdmVudCggb3JpZ2lu
YWxFdmVudCApOwoKCQlmb3IgKCBpID0gY29weS5sZW5ndGg7IGk7ICkgewoJCQlw
cm9wID0gY29weVsgLS1pIF07CgkJCWV2ZW50WyBwcm9wIF0gPSBvcmlnaW5hbEV2
ZW50WyBwcm9wIF07CgkJfQoKCQkvLyBGaXggdGFyZ2V0IHByb3BlcnR5LCBpZiBu
ZWNlc3NhcnkgKCMxOTI1LCBJRSA2LzcvOCAmIFNhZmFyaTIpCgkJaWYgKCAhZXZl
bnQudGFyZ2V0ICkgewoJCQlldmVudC50YXJnZXQgPSBvcmlnaW5hbEV2ZW50LnNy
Y0VsZW1lbnQgfHwgZG9jdW1lbnQ7CgkJfQoKCQkvLyBUYXJnZXQgc2hvdWxkIG5v
dCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgU2FmYXJpKQoJCWlmICggZXZlbnQudGFy
Z2V0Lm5vZGVUeXBlID09PSAzICkgewoJCQlldmVudC50YXJnZXQgPSBldmVudC50
YXJnZXQucGFyZW50Tm9kZTsKCQl9CgoJCS8vIEZvciBtb3VzZS9rZXkgZXZlbnRz
OyBhZGQgbWV0YUtleSBpZiBpdCdzIG5vdCB0aGVyZSAoIzMzNjgsIElFNi83Lzgp
CgkJaWYgKCBldmVudC5tZXRhS2V5ID09PSB1bmRlZmluZWQgKSB7CgkJCWV2ZW50
Lm1ldGFLZXkgPSBldmVudC5jdHJsS2V5OwoJCX0KCgkJcmV0dXJuIGZpeEhvb2su
ZmlsdGVyPyBmaXhIb29rLmZpbHRlciggZXZlbnQsIG9yaWdpbmFsRXZlbnQgKSA6
IGV2ZW50OwoJfSwKCglzcGVjaWFsOiB7CgkJcmVhZHk6IHsKCQkJLy8gTWFrZSBz
dXJlIHRoZSByZWFkeSBldmVudCBpcyBzZXR1cAoJCQlzZXR1cDogalF1ZXJ5LmJp
bmRSZWFkeQoJCX0sCgoJCWxvYWQ6IHsKCQkJLy8gUHJldmVudCB0cmlnZ2VyZWQg
aW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZAoJ
CQlub0J1YmJsZTogdHJ1ZQoJCX0sCgoJCWZvY3VzOiB7CgkJCWRlbGVnYXRlVHlw
ZTogImZvY3VzaW4iCgkJfSwKCQlibHVyOiB7CgkJCWRlbGVnYXRlVHlwZTogImZv
Y3Vzb3V0IgoJCX0sCgoJCWJlZm9yZXVubG9hZDogewoJCQlzZXR1cDogZnVuY3Rp
b24oIGRhdGEsIG5hbWVzcGFjZXMsIGV2ZW50SGFuZGxlICkgewoJCQkJLy8gV2Ug
b25seSB3YW50IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIG9uIHdpbmRvd3MKCQkJ
CWlmICggalF1ZXJ5LmlzV2luZG93KCB0aGlzICkgKSB7CgkJCQkJdGhpcy5vbmJl
Zm9yZXVubG9hZCA9IGV2ZW50SGFuZGxlOwoJCQkJfQoJCQl9LAoKCQkJdGVhcmRv
d246IGZ1bmN0aW9uKCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApIHsKCQkJCWlm
ICggdGhpcy5vbmJlZm9yZXVubG9hZCA9PT0gZXZlbnRIYW5kbGUgKSB7CgkJCQkJ
dGhpcy5vbmJlZm9yZXVubG9hZCA9IG51bGw7CgkJCQl9CgkJCX0KCQl9Cgl9LAoK
CXNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQsIGJ1YmJsZSAp
IHsKCQkvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBh
IGRpZmZlcmVudCBvbmUuCgkJLy8gRmFrZSBvcmlnaW5hbEV2ZW50IHRvIGF2b2lk
IGRvbm9yJ3Mgc3RvcFByb3BhZ2F0aW9uLCBidXQgaWYgdGhlCgkJLy8gc2ltdWxh
dGVkIGV2ZW50IHByZXZlbnRzIGRlZmF1bHQgdGhlbiB3ZSBkbyB0aGUgc2FtZSBv
biB0aGUgZG9ub3IuCgkJdmFyIGUgPSBqUXVlcnkuZXh0ZW5kKAoJCQluZXcgalF1
ZXJ5LkV2ZW50KCksCgkJCWV2ZW50LAoJCQl7IHR5cGU6IHR5cGUsCgkJCQlpc1Np
bXVsYXRlZDogdHJ1ZSwKCQkJCW9yaWdpbmFsRXZlbnQ6IHt9CgkJCX0KCQkpOwoJ
CWlmICggYnViYmxlICkgewoJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVs
bCwgZWxlbSApOwoJCX0gZWxzZSB7CgkJCWpRdWVyeS5ldmVudC5kaXNwYXRjaC5j
YWxsKCBlbGVtLCBlICk7CgkJfQoJCWlmICggZS5pc0RlZmF1bHRQcmV2ZW50ZWQo
KSApIHsKCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCQl9Cgl9Cn07CgovLyBT
b21lIHBsdWdpbnMgYXJlIHVzaW5nLCBidXQgaXQncyB1bmRvY3VtZW50ZWQvZGVw
cmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLgovLyBUaGUgMS43IHNwZWNpYWwg
ZXZlbnQgaW50ZXJmYWNlIHNob3VsZCBwcm92aWRlIGFsbCB0aGUgaG9va3MgbmVl
ZGVkIG5vdy4KalF1ZXJ5LmV2ZW50LmhhbmRsZSA9IGpRdWVyeS5ldmVudC5kaXNw
YXRjaDsKCmpRdWVyeS5yZW1vdmVFdmVudCA9IGRvY3VtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIgPwoJZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKCQlp
ZiAoIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciApIHsKCQkJZWxlbS5yZW1vdmVF
dmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUsIGZhbHNlICk7CgkJfQoJfSA6Cglm
dW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkgewoJCWlmICggZWxlbS5kZXRh
Y2hFdmVudCApIHsKCQkJZWxlbS5kZXRhY2hFdmVudCggIm9uIiArIHR5cGUsIGhh
bmRsZSApOwoJCX0KCX07CgpqUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBw
cm9wcyApIHsKCS8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25l
dycga2V5d29yZAoJaWYgKCAhKHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQp
ICkgewoJCXJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7Cgl9
CgoJLy8gRXZlbnQgb2JqZWN0CglpZiAoIHNyYyAmJiBzcmMudHlwZSApIHsKCQl0
aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7CgkJdGhpcy50eXBlID0gc3JjLnR5cGU7
CgoJCS8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUg
YmVlbiBtYXJrZWQgYXMgcHJldmVudGVkCgkJLy8gYnkgYSBoYW5kbGVyIGxvd2Vy
IGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuCgkJdGhp
cy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSAoIHNyYy5kZWZhdWx0UHJldmVudGVkIHx8
IHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgfHwKCQkJc3JjLmdldFByZXZlbnRE
ZWZhdWx0ICYmIHNyYy5nZXRQcmV2ZW50RGVmYXVsdCgpICkgPyByZXR1cm5UcnVl
IDogcmV0dXJuRmFsc2U7CgoJLy8gRXZlbnQgdHlwZQoJfSBlbHNlIHsKCQl0aGlz
LnR5cGUgPSBzcmM7Cgl9CgoJLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJv
cGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKCWlmICggcHJvcHMgKSB7CgkJ
alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTsKCX0KCgkvLyBDcmVhdGUgYSB0
aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZQoJdGhp
cy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93
KCk7CgoJLy8gTWFyayBpdCBhcyBmaXhlZAoJdGhpc1sgalF1ZXJ5LmV4cGFuZG8g
XSA9IHRydWU7Cn07CgpmdW5jdGlvbiByZXR1cm5GYWxzZSgpIHsKCXJldHVybiBm
YWxzZTsKfQpmdW5jdGlvbiByZXR1cm5UcnVlKCkgewoJcmV0dXJuIHRydWU7Cn0K
Ci8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVj
aWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwovLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAz
MDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWwKalF1ZXJ5LkV2ZW50LnByb3Rv
dHlwZSA9IHsKCXByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKCQl0aGlzLmlz
RGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7CgoJCXZhciBlID0gdGhpcy5v
cmlnaW5hbEV2ZW50OwoJCWlmICggIWUgKSB7CgkJCXJldHVybjsKCQl9CgoJCS8v
IGlmIHByZXZlbnREZWZhdWx0IGV4aXN0cyBydW4gaXQgb24gdGhlIG9yaWdpbmFs
IGV2ZW50CgkJaWYgKCBlLnByZXZlbnREZWZhdWx0ICkgewoJCQllLnByZXZlbnRE
ZWZhdWx0KCk7CgoJCS8vIG90aGVyd2lzZSBzZXQgdGhlIHJldHVyblZhbHVlIHBy
b3BlcnR5IG9mIHRoZSBvcmlnaW5hbCBldmVudCB0byBmYWxzZSAoSUUpCgkJfSBl
bHNlIHsKCQkJZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwoJCX0KCX0sCglzdG9wUHJv
cGFnYXRpb246IGZ1bmN0aW9uKCkgewoJCXRoaXMuaXNQcm9wYWdhdGlvblN0b3Bw
ZWQgPSByZXR1cm5UcnVlOwoKCQl2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsK
CQlpZiAoICFlICkgewoJCQlyZXR1cm47CgkJfQoJCS8vIGlmIHN0b3BQcm9wYWdh
dGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudAoJCWlmICgg
ZS5zdG9wUHJvcGFnYXRpb24gKSB7CgkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7CgkJ
fQoJCS8vIG90aGVyd2lzZSBzZXQgdGhlIGNhbmNlbEJ1YmJsZSBwcm9wZXJ0eSBv
ZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gdHJ1ZSAoSUUpCgkJZS5jYW5jZWxCdWJi
bGUgPSB0cnVlOwoJfSwKCXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rp
b24oKSB7CgkJdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJl
dHVyblRydWU7CgkJdGhpcy5zdG9wUHJvcGFnYXRpb24oKTsKCX0sCglpc0RlZmF1
bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLAoJaXNQcm9wYWdhdGlvblN0b3BwZWQ6
IHJldHVybkZhbHNlLAoJaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJl
dHVybkZhbHNlCn07CgovLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMg
dXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3MKalF1ZXJ5
LmVhY2goewoJbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsCgltb3VzZWxlYXZlOiAi
bW91c2VvdXQiCn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7CglqUXVlcnkuZXZl
bnQuc3BlY2lhbFsgb3JpZyBdID0gewoJCWRlbGVnYXRlVHlwZTogZml4LAoJCWJp
bmRUeXBlOiBmaXgsCgoJCWhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkgewoJCQl2
YXIgdGFyZ2V0ID0gdGhpcywKCQkJCXJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFy
Z2V0LAoJCQkJaGFuZGxlT2JqID0gZXZlbnQuaGFuZGxlT2JqLAoJCQkJc2VsZWN0
b3IgPSBoYW5kbGVPYmouc2VsZWN0b3IsCgkJCQlyZXQ7CgoJCQkvLyBGb3IgbW91
c2VudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRz
aWRlIHRoZSB0YXJnZXQuCgkJCS8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRo
ZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93CgkJCWlmICgg
IXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRh
aW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSkgKSB7CgkJCQlldmVudC50eXBlID0gaGFu
ZGxlT2JqLm9yaWdUeXBlOwoJCQkJcmV0ID0gaGFuZGxlT2JqLmhhbmRsZXIuYXBw
bHkoIHRoaXMsIGFyZ3VtZW50cyApOwoJCQkJZXZlbnQudHlwZSA9IGZpeDsKCQkJ
fQoJCQlyZXR1cm4gcmV0OwoJCX0KCX07Cn0pOwoKLy8gSUUgc3VibWl0IGRlbGVn
YXRpb24KaWYgKCAhalF1ZXJ5LnN1cHBvcnQuc3VibWl0QnViYmxlcyApIHsKCglq
UXVlcnkuZXZlbnQuc3BlY2lhbC5zdWJtaXQgPSB7CgkJc2V0dXA6IGZ1bmN0aW9u
KCkgewoJCQkvLyBPbmx5IG5lZWQgdGhpcyBmb3IgZGVsZWdhdGVkIGZvcm0gc3Vi
bWl0IGV2ZW50cwoJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgImZvcm0i
ICkgKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIExhenktYWRkIGEg
c3VibWl0IGhhbmRsZXIgd2hlbiBhIGRlc2NlbmRhbnQgZm9ybSBtYXkgcG90ZW50
aWFsbHkgYmUgc3VibWl0dGVkCgkJCWpRdWVyeS5ldmVudC5hZGQoIHRoaXMsICJj
bGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLCBmdW5jdGlvbiggZSApIHsK
CQkJCS8vIE5vZGUgbmFtZSBjaGVjayBhdm9pZHMgYSBWTUwtcmVsYXRlZCBjcmFz
aCBpbiBJRSAoIzk4MDcpCgkJCQl2YXIgZWxlbSA9IGUudGFyZ2V0LAoJCQkJCWZv
cm0gPSBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSB8fCBqUXVlcnku
bm9kZU5hbWUoIGVsZW0sICJidXR0b24iICkgPyBlbGVtLmZvcm0gOiB1bmRlZmlu
ZWQ7CgkJCQlpZiAoIGZvcm0gJiYgIWZvcm0uX3N1Ym1pdF9hdHRhY2hlZCApIHsK
CQkJCQlqUXVlcnkuZXZlbnQuYWRkKCBmb3JtLCAic3VibWl0Ll9zdWJtaXQiLCBm
dW5jdGlvbiggZXZlbnQgKSB7CgkJCQkJCS8vIElmIGZvcm0gd2FzIHN1Ym1pdHRl
ZCBieSB0aGUgdXNlciwgYnViYmxlIHRoZSBldmVudCB1cCB0aGUgdHJlZQoJCQkJ
CQlpZiAoIHRoaXMucGFyZW50Tm9kZSAmJiAhZXZlbnQuaXNUcmlnZ2VyICkgewoJ
CQkJCQkJalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCAic3VibWl0IiwgdGhpcy5wYXJl
bnROb2RlLCBldmVudCwgdHJ1ZSApOwoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJZm9y
bS5fc3VibWl0X2F0dGFjaGVkID0gdHJ1ZTsKCQkJCX0KCQkJfSk7CgkJCS8vIHJl
dHVybiB1bmRlZmluZWQgc2luY2Ugd2UgZG9uJ3QgbmVlZCBhbiBldmVudCBsaXN0
ZW5lcgoJCX0sCgoJCXRlYXJkb3duOiBmdW5jdGlvbigpIHsKCQkJLy8gT25seSBu
ZWVkIHRoaXMgZm9yIGRlbGVnYXRlZCBmb3JtIHN1Ym1pdCBldmVudHMKCQkJaWYg
KCBqUXVlcnkubm9kZU5hbWUoIHRoaXMsICJmb3JtIiApICkgewoJCQkJcmV0dXJu
IGZhbHNlOwoJCQl9CgoJCQkvLyBSZW1vdmUgZGVsZWdhdGVkIGhhbmRsZXJzOyBj
bGVhbkRhdGEgZXZlbnR1YWxseSByZWFwcyBzdWJtaXQgaGFuZGxlcnMgYXR0YWNo
ZWQgYWJvdmUKCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgIi5fc3VibWl0
IiApOwoJCX0KCX07Cn0KCi8vIElFIGNoYW5nZSBkZWxlZ2F0aW9uIGFuZCBjaGVj
a2JveC9yYWRpbyBmaXgKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2hhbmdlQnViYmxl
cyApIHsKCglqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7CgoJCXNldHVw
OiBmdW5jdGlvbigpIHsKCgkJCWlmICggcmZvcm1FbGVtcy50ZXN0KCB0aGlzLm5v
ZGVOYW1lICkgKSB7CgkJCQkvLyBJRSBkb2Vzbid0IGZpcmUgY2hhbmdlIG9uIGEg
Y2hlY2svcmFkaW8gdW50aWwgYmx1cjsgdHJpZ2dlciBpdCBvbiBjbGljawoJCQkJ
Ly8gYWZ0ZXIgYSBwcm9wZXJ0eWNoYW5nZS4gRWF0IHRoZSBibHVyLWNoYW5nZSBp
biBzcGVjaWFsLmNoYW5nZS5oYW5kbGUuCgkJCQkvLyBUaGlzIHN0aWxsIGZpcmVz
IG9uY2hhbmdlIGEgc2Vjb25kIHRpbWUgZm9yIGNoZWNrL3JhZGlvIGFmdGVyIGJs
dXIuCgkJCQlpZiAoIHRoaXMudHlwZSA9PT0gImNoZWNrYm94IiB8fCB0aGlzLnR5
cGUgPT09ICJyYWRpbyIgKSB7CgkJCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywg
InByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLCBmdW5jdGlvbiggZXZlbnQgKSB7CgkJ
CQkJCWlmICggZXZlbnQub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUgPT09ICJj
aGVja2VkIiApIHsKCQkJCQkJCXRoaXMuX2p1c3RfY2hhbmdlZCA9IHRydWU7CgkJ
CQkJCX0KCQkJCQl9KTsKCQkJCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCAiY2xp
Y2suX2NoYW5nZSIsIGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCQkJaWYgKCB0aGlz
Ll9qdXN0X2NoYW5nZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHsKCQkJCQkJCXRo
aXMuX2p1c3RfY2hhbmdlZCA9IGZhbHNlOwoJCQkJCQkJalF1ZXJ5LmV2ZW50LnNp
bXVsYXRlKCAiY2hhbmdlIiwgdGhpcywgZXZlbnQsIHRydWUgKTsKCQkJCQkJfQoJ
CQkJCX0pOwoJCQkJfQoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCS8vIERlbGVn
YXRlZCBldmVudDsgbGF6eS1hZGQgYSBjaGFuZ2UgaGFuZGxlciBvbiBkZXNjZW5k
YW50IGlucHV0cwoJCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCAiYmVmb3JlYWN0
aXZhdGUuX2NoYW5nZSIsIGZ1bmN0aW9uKCBlICkgewoJCQkJdmFyIGVsZW0gPSBl
LnRhcmdldDsKCgkJCQlpZiAoIHJmb3JtRWxlbXMudGVzdCggZWxlbS5ub2RlTmFt
ZSApICYmICFlbGVtLl9jaGFuZ2VfYXR0YWNoZWQgKSB7CgkJCQkJalF1ZXJ5LmV2
ZW50LmFkZCggZWxlbSwgImNoYW5nZS5fY2hhbmdlIiwgZnVuY3Rpb24oIGV2ZW50
ICkgewoJCQkJCQlpZiAoIHRoaXMucGFyZW50Tm9kZSAmJiAhZXZlbnQuaXNTaW11
bGF0ZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHsKCQkJCQkJCWpRdWVyeS5ldmVu
dC5zaW11bGF0ZSggImNoYW5nZSIsIHRoaXMucGFyZW50Tm9kZSwgZXZlbnQsIHRy
dWUgKTsKCQkJCQkJfQoJCQkJCX0pOwoJCQkJCWVsZW0uX2NoYW5nZV9hdHRhY2hl
ZCA9IHRydWU7CgkJCQl9CgkJCX0pOwoJCX0sCgoJCWhhbmRsZTogZnVuY3Rpb24o
IGV2ZW50ICkgewoJCQl2YXIgZWxlbSA9IGV2ZW50LnRhcmdldDsKCgkJCS8vIFN3
YWxsb3cgbmF0aXZlIGNoYW5nZSBldmVudHMgZnJvbSBjaGVja2JveC9yYWRpbywg
d2UgYWxyZWFkeSB0cmlnZ2VyZWQgdGhlbSBhYm92ZQoJCQlpZiAoIHRoaXMgIT09
IGVsZW0gfHwgZXZlbnQuaXNTaW11bGF0ZWQgfHwgZXZlbnQuaXNUcmlnZ2VyIHx8
IChlbGVtLnR5cGUgIT09ICJyYWRpbyIgJiYgZWxlbS50eXBlICE9PSAiY2hlY2ti
b3giKSApIHsKCQkJCXJldHVybiBldmVudC5oYW5kbGVPYmouaGFuZGxlci5hcHBs
eSggdGhpcywgYXJndW1lbnRzICk7CgkJCX0KCQl9LAoKCQl0ZWFyZG93bjogZnVu
Y3Rpb24oKSB7CgkJCWpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsICIuX2NoYW5n
ZSIgKTsKCgkJCXJldHVybiByZm9ybUVsZW1zLnRlc3QoIHRoaXMubm9kZU5hbWUg
KTsKCQl9Cgl9Owp9CgovLyBDcmVhdGUgImJ1YmJsaW5nIiBmb2N1cyBhbmQgYmx1
ciBldmVudHMKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7
CglqUXVlcnkuZWFjaCh7IGZvY3VzOiAiZm9jdXNpbiIsIGJsdXI6ICJmb2N1c291
dCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHsKCgkJLy8gQXR0YWNoIGEgc2lu
Z2xlIGNhcHR1cmluZyBoYW5kbGVyIHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNp
bi9mb2N1c291dAoJCXZhciBhdHRhY2hlcyA9IDAsCgkJCWhhbmRsZXIgPSBmdW5j
dGlvbiggZXZlbnQgKSB7CgkJCQlqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwg
ZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApLCB0cnVlICk7
CgkJCX07CgoJCWpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHsKCQkJc2V0
dXA6IGZ1bmN0aW9uKCkgewoJCQkJaWYgKCBhdHRhY2hlcysrID09PSAwICkgewoJ
CQkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRy
dWUgKTsKCQkJCX0KCQkJfSwKCQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgewoJCQkJ
aWYgKCAtLWF0dGFjaGVzID09PSAwICkgewoJCQkJCWRvY3VtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTsKCQkJCX0KCQkJfQoJ
CX07Cgl9KTsKfQoKalF1ZXJ5LmZuLmV4dGVuZCh7CgoJb246IGZ1bmN0aW9uKCB0
eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAvKklOVEVSTkFMKi8gb25lICkgewoJ
CXZhciBvcmlnRm4sIHR5cGU7CgoJCS8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0
eXBlcy9oYW5kbGVycwoJCWlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiAp
IHsKCQkJLy8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhICkKCQkJaWYg
KCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewoJCQkJLy8gKCB0eXBl
cy1PYmplY3QsIGRhdGEgKQoJCQkJZGF0YSA9IHNlbGVjdG9yOwoJCQkJc2VsZWN0
b3IgPSB1bmRlZmluZWQ7CgkJCX0KCQkJZm9yICggdHlwZSBpbiB0eXBlcyApIHsK
CQkJCXRoaXMub24oIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBd
LCBvbmUgKTsKCQkJfQoJCQlyZXR1cm4gdGhpczsKCQl9CgoJCWlmICggZGF0YSA9
PSBudWxsICYmIGZuID09IG51bGwgKSB7CgkJCS8vICggdHlwZXMsIGZuICkKCQkJ
Zm4gPSBzZWxlY3RvcjsKCQkJZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkOwoJ
CX0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7CgkJCWlmICggdHlwZW9mIHNlbGVj
dG9yID09PSAic3RyaW5nIiApIHsKCQkJCS8vICggdHlwZXMsIHNlbGVjdG9yLCBm
biApCgkJCQlmbiA9IGRhdGE7CgkJCQlkYXRhID0gdW5kZWZpbmVkOwoJCQl9IGVs
c2UgewoJCQkJLy8gKCB0eXBlcywgZGF0YSwgZm4gKQoJCQkJZm4gPSBkYXRhOwoJ
CQkJZGF0YSA9IHNlbGVjdG9yOwoJCQkJc2VsZWN0b3IgPSB1bmRlZmluZWQ7CgkJ
CX0KCQl9CgkJaWYgKCBmbiA9PT0gZmFsc2UgKSB7CgkJCWZuID0gcmV0dXJuRmFs
c2U7CgkJfSBlbHNlIGlmICggIWZuICkgewoJCQlyZXR1cm4gdGhpczsKCQl9CgoJ
CWlmICggb25lID09PSAxICkgewoJCQlvcmlnRm4gPSBmbjsKCQkJZm4gPSBmdW5j
dGlvbiggZXZlbnQgKSB7CgkJCQkvLyBDYW4gdXNlIGFuIGVtcHR5IHNldCwgc2lu
Y2UgZXZlbnQgY29udGFpbnMgdGhlIGluZm8KCQkJCWpRdWVyeSgpLm9mZiggZXZl
bnQgKTsKCQkJCXJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyAp
OwoJCQl9OwoJCQkvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3Zl
IHVzaW5nIG9yaWdGbgoJCQlmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmln
Rm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTsKCQl9CgkJcmV0dXJuIHRoaXMuZWFj
aCggZnVuY3Rpb24oKSB7CgkJCWpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVz
LCBmbiwgZGF0YSwgc2VsZWN0b3IgKTsKCQl9KTsKCX0sCglvbmU6IGZ1bmN0aW9u
KCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICkgewoJCXJldHVybiB0aGlzLm9u
LmNhbGwoIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTsKCX0s
CglvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkgewoJCWlmICgg
dHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2Jq
ICkgewoJCQkvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50CgkJ
CXZhciBoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7CgkJCWpRdWVyeSggdHlw
ZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoCgkJCQloYW5kbGVPYmoubmFtZXNwYWNl
PyBoYW5kbGVPYmoudHlwZSArICIuIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOiBo
YW5kbGVPYmoudHlwZSwKCQkJCWhhbmRsZU9iai5zZWxlY3RvciwKCQkJCWhhbmRs
ZU9iai5oYW5kbGVyCgkJCSk7CgkJCXJldHVybiB0aGlzOwoJCX0KCQlpZiAoIHR5
cGVvZiB0eXBlcyA9PT0gIm9iamVjdCIgKSB7CgkJCS8vICggdHlwZXMtb2JqZWN0
IFssIHNlbGVjdG9yXSApCgkJCWZvciAoIHZhciB0eXBlIGluIHR5cGVzICkgewoJ
CQkJdGhpcy5vZmYoIHR5cGUsIHNlbGVjdG9yLCB0eXBlc1sgdHlwZSBdICk7CgkJ
CX0KCQkJcmV0dXJuIHRoaXM7CgkJfQoJCWlmICggc2VsZWN0b3IgPT09IGZhbHNl
IHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gImZ1bmN0aW9uIiApIHsKCQkJLy8gKCB0
eXBlcyBbLCBmbl0gKQoJCQlmbiA9IHNlbGVjdG9yOwoJCQlzZWxlY3RvciA9IHVu
ZGVmaW5lZDsKCQl9CgkJaWYgKCBmbiA9PT0gZmFsc2UgKSB7CgkJCWZuID0gcmV0
dXJuRmFsc2U7CgkJfQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJ
CWpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIHR5cGVzLCBmbiwgc2VsZWN0b3Ig
KTsKCQl9KTsKCX0sCgoJYmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiAp
IHsKCQlyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7Cgl9
LAoJdW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgewoJCXJldHVybiB0aGlz
Lm9mZiggdHlwZXMsIG51bGwsIGZuICk7Cgl9LAoKCWxpdmU6IGZ1bmN0aW9uKCB0
eXBlcywgZGF0YSwgZm4gKSB7CgkJalF1ZXJ5KCB0aGlzLmNvbnRleHQgKS5vbigg
dHlwZXMsIHRoaXMuc2VsZWN0b3IsIGRhdGEsIGZuICk7CgkJcmV0dXJuIHRoaXM7
Cgl9LAoJZGllOiBmdW5jdGlvbiggdHlwZXMsIGZuICkgewoJCWpRdWVyeSggdGhp
cy5jb250ZXh0ICkub2ZmKCB0eXBlcywgdGhpcy5zZWxlY3RvciB8fCAiKioiLCBm
biApOwoJCXJldHVybiB0aGlzOwoJfSwKCglkZWxlZ2F0ZTogZnVuY3Rpb24oIHNl
bGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CgkJcmV0dXJuIHRoaXMub24oIHR5
cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTsKCX0sCgl1bmRlbGVnYXRlOiBmdW5j
dGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHsKCQkvLyAoIG5hbWVzcGFjZSAp
IG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApCgkJcmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGggPT0gMT8gdGhpcy5vZmYoIHNlbGVjdG9yLCAiKioiICkgOiB0aGlz
Lm9mZiggdHlwZXMsIHNlbGVjdG9yLCBmbiApOwoJfSwKCgl0cmlnZ2VyOiBmdW5j
dGlvbiggdHlwZSwgZGF0YSApIHsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KCkgewoJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyAp
OwoJCX0pOwoJfSwKCXRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0
YSApIHsKCQlpZiAoIHRoaXNbMF0gKSB7CgkJCXJldHVybiBqUXVlcnkuZXZlbnQu
dHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpc1swXSwgdHJ1ZSApOwoJCX0KCX0sCgoJ
dG9nZ2xlOiBmdW5jdGlvbiggZm4gKSB7CgkJLy8gU2F2ZSByZWZlcmVuY2UgdG8g
YXJndW1lbnRzIGZvciBhY2Nlc3MgaW4gY2xvc3VyZQoJCXZhciBhcmdzID0gYXJn
dW1lbnRzLAoJCQlndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrLAoJCQlp
ID0gMCwKCQkJdG9nZ2xlciA9IGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCS8vIEZp
Z3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZQoJCQkJdmFyIGxhc3RU
b2dnbGUgPSAoIGpRdWVyeS5fZGF0YSggdGhpcywgImxhc3RUb2dnbGUiICsgZm4u
Z3VpZCApIHx8IDAgKSAlIGk7CgkJCQlqUXVlcnkuX2RhdGEoIHRoaXMsICJsYXN0
VG9nZ2xlIiArIGZuLmd1aWQsIGxhc3RUb2dnbGUgKyAxICk7CgoJCQkJLy8gTWFr
ZSBzdXJlIHRoYXQgY2xpY2tzIHN0b3AKCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CgoJCQkJLy8gYW5kIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uCgkJCQlyZXR1cm4g
YXJnc1sgbGFzdFRvZ2dsZSBdLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSB8fCBm
YWxzZTsKCQkJfTsKCgkJLy8gbGluayBhbGwgdGhlIGZ1bmN0aW9ucywgc28gYW55
IG9mIHRoZW0gY2FuIHVuYmluZCB0aGlzIGNsaWNrIGhhbmRsZXIKCQl0b2dnbGVy
Lmd1aWQgPSBndWlkOwoJCXdoaWxlICggaSA8IGFyZ3MubGVuZ3RoICkgewoJCQlh
cmdzWyBpKysgXS5ndWlkID0gZ3VpZDsKCQl9CgoJCXJldHVybiB0aGlzLmNsaWNr
KCB0b2dnbGVyICk7Cgl9LAoKCWhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91
dCApIHsKCQlyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxl
YXZlKCBmbk91dCB8fCBmbk92ZXIgKTsKCX0KfSk7CgpqUXVlcnkuZWFjaCggKCJi
bHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVu
bG9hZCBjbGljayBkYmxjbGljayAiICsKCSJtb3VzZWRvd24gbW91c2V1cCBtb3Vz
ZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSAi
ICsKCSJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVw
IGVycm9yIGNvbnRleHRtZW51Iikuc3BsaXQoIiAiKSwgZnVuY3Rpb24oIGksIG5h
bWUgKSB7CgoJLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKCWpRdWVyeS5mblsgbmFt
ZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkgewoJCWlmICggZm4gPT0gbnVsbCAp
IHsKCQkJZm4gPSBkYXRhOwoJCQlkYXRhID0gbnVsbDsKCQl9CgoJCXJldHVybiBh
cmd1bWVudHMubGVuZ3RoID4gMCA/CgkJCXRoaXMub24oIG5hbWUsIG51bGwsIGRh
dGEsIGZuICkgOgoJCQl0aGlzLnRyaWdnZXIoIG5hbWUgKTsKCX07CgoJaWYgKCBq
UXVlcnkuYXR0ckZuICkgewoJCWpRdWVyeS5hdHRyRm5bIG5hbWUgXSA9IHRydWU7
Cgl9CgoJaWYgKCBya2V5RXZlbnQudGVzdCggbmFtZSApICkgewoJCWpRdWVyeS5l
dmVudC5maXhIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV2ZW50LmtleUhvb2tzOwoJ
fQoKCWlmICggcm1vdXNlRXZlbnQudGVzdCggbmFtZSApICkgewoJCWpRdWVyeS5l
dmVudC5maXhIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV2ZW50Lm1vdXNlSG9va3M7
Cgl9Cn0pOwoKCgovKiEKICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUKICog
IENvcHlyaWdodCAyMDExLCBUaGUgRG9qbyBGb3VuZGF0aW9uCiAqICBSZWxlYXNl
ZCB1bmRlciB0aGUgTUlULCBCU0QsIGFuZCBHUEwgTGljZW5zZXMuCiAqICBNb3Jl
IGluZm9ybWF0aW9uOiBodHRwOi8vc2l6emxlanMuY29tLwogKi8KKGZ1bmN0aW9u
KCl7Cgp2YXIgY2h1bmtlciA9IC8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykr
XCl8XFsoPzpcW1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykr
XF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxy
fFxuKSopL2csCglleHBhbmRvID0gInNpemNhY2hlIiArIChNYXRoLnJhbmRvbSgp
ICsgJycpLnJlcGxhY2UoJy4nLCAnJyksCglkb25lID0gMCwKCXRvU3RyaW5nID0g
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywKCWhhc0R1cGxpY2F0ZSA9IGZhbHNl
LAoJYmFzZUhhc0R1cGxpY2F0ZSA9IHRydWUsCglyQmFja3NsYXNoID0gL1xcL2cs
CglyUmV0dXJuID0gL1xyXG4vZywKCXJOb25Xb3JkID0gL1xXLzsKCi8vIEhlcmUg
d2UgY2hlY2sgaWYgdGhlIEphdmFTY3JpcHQgZW5naW5lIGlzIHVzaW5nIHNvbWUg
c29ydCBvZgovLyBvcHRpbWl6YXRpb24gd2hlcmUgaXQgZG9lcyBub3QgYWx3YXlz
IGNhbGwgb3VyIGNvbXBhcmlzaW9uCi8vIGZ1bmN0aW9uLiBJZiB0aGF0IGlzIHRo
ZSBjYXNlLCBkaXNjYXJkIHRoZSBoYXNEdXBsaWNhdGUgdmFsdWUuCi8vICAgVGh1
cyBmYXIgdGhhdCBpbmNsdWRlcyBHb29nbGUgQ2hyb21lLgpbMCwgMF0uc29ydChm
dW5jdGlvbigpIHsKCWJhc2VIYXNEdXBsaWNhdGUgPSBmYWxzZTsKCXJldHVybiAw
Owp9KTsKCnZhciBTaXp6bGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQs
IHJlc3VsdHMsIHNlZWQgKSB7CglyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKCWNv
bnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwoKCXZhciBvcmlnQ29udGV4dCA9
IGNvbnRleHQ7CgoJaWYgKCBjb250ZXh0Lm5vZGVUeXBlICE9PSAxICYmIGNvbnRl
eHQubm9kZVR5cGUgIT09IDkgKSB7CgkJcmV0dXJuIFtdOwoJfQoJCglpZiAoICFz
ZWxlY3RvciB8fCB0eXBlb2Ygc2VsZWN0b3IgIT09ICJzdHJpbmciICkgewoJCXJl
dHVybiByZXN1bHRzOwoJfQoKCXZhciBtLCBzZXQsIGNoZWNrU2V0LCBleHRyYSwg
cmV0LCBjdXIsIHBvcCwgaSwKCQlwcnVuZSA9IHRydWUsCgkJY29udGV4dFhNTCA9
IFNpenpsZS5pc1hNTCggY29udGV4dCApLAoJCXBhcnRzID0gW10sCgkJc29GYXIg
PSBzZWxlY3RvcjsKCQoJLy8gUmVzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBjaHVu
a2VyIHJlZ2V4cCAoc3RhcnQgZnJvbSBoZWFkKQoJZG8gewoJCWNodW5rZXIuZXhl
YyggIiIgKTsKCQltID0gY2h1bmtlci5leGVjKCBzb0ZhciApOwoKCQlpZiAoIG0g
KSB7CgkJCXNvRmFyID0gbVszXTsKCQkKCQkJcGFydHMucHVzaCggbVsxXSApOwoJ
CQoJCQlpZiAoIG1bMl0gKSB7CgkJCQlleHRyYSA9IG1bM107CgkJCQlicmVhazsK
CQkJfQoJCX0KCX0gd2hpbGUgKCBtICk7CgoJaWYgKCBwYXJ0cy5sZW5ndGggPiAx
ICYmIG9yaWdQT1MuZXhlYyggc2VsZWN0b3IgKSApIHsKCgkJaWYgKCBwYXJ0cy5s
ZW5ndGggPT09IDIgJiYgRXhwci5yZWxhdGl2ZVsgcGFydHNbMF0gXSApIHsKCQkJ
c2V0ID0gcG9zUHJvY2VzcyggcGFydHNbMF0gKyBwYXJ0c1sxXSwgY29udGV4dCwg
c2VlZCApOwoKCQl9IGVsc2UgewoJCQlzZXQgPSBFeHByLnJlbGF0aXZlWyBwYXJ0
c1swXSBdID8KCQkJCVsgY29udGV4dCBdIDoKCQkJCVNpenpsZSggcGFydHMuc2hp
ZnQoKSwgY29udGV4dCApOwoKCQkJd2hpbGUgKCBwYXJ0cy5sZW5ndGggKSB7CgkJ
CQlzZWxlY3RvciA9IHBhcnRzLnNoaWZ0KCk7CgoJCQkJaWYgKCBFeHByLnJlbGF0
aXZlWyBzZWxlY3RvciBdICkgewoJCQkJCXNlbGVjdG9yICs9IHBhcnRzLnNoaWZ0
KCk7CgkJCQl9CgkJCQkKCQkJCXNldCA9IHBvc1Byb2Nlc3MoIHNlbGVjdG9yLCBz
ZXQsIHNlZWQgKTsKCQkJfQoJCX0KCgl9IGVsc2UgewoJCS8vIFRha2UgYSBzaG9y
dGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlz
IGFuIElECgkJLy8gKGJ1dCBub3QgaWYgaXQnbGwgYmUgZmFzdGVyIGlmIHRoZSBp
bm5lciBzZWxlY3RvciBpcyBhbiBJRCkKCQlpZiAoICFzZWVkICYmIHBhcnRzLmxl
bmd0aCA+IDEgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiAhY29udGV4dFhN
TCAmJgoJCQkJRXhwci5tYXRjaC5JRC50ZXN0KHBhcnRzWzBdKSAmJiAhRXhwci5t
YXRjaC5JRC50ZXN0KHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdKSApIHsKCgkJCXJl
dCA9IFNpenpsZS5maW5kKCBwYXJ0cy5zaGlmdCgpLCBjb250ZXh0LCBjb250ZXh0
WE1MICk7CgkJCWNvbnRleHQgPSByZXQuZXhwciA/CgkJCQlTaXp6bGUuZmlsdGVy
KCByZXQuZXhwciwgcmV0LnNldCApWzBdIDoKCQkJCXJldC5zZXRbMF07CgkJfQoK
CQlpZiAoIGNvbnRleHQgKSB7CgkJCXJldCA9IHNlZWQgPwoJCQkJeyBleHByOiBw
YXJ0cy5wb3AoKSwgc2V0OiBtYWtlQXJyYXkoc2VlZCkgfSA6CgkJCQlTaXp6bGUu
ZmluZCggcGFydHMucG9wKCksIHBhcnRzLmxlbmd0aCA9PT0gMSAmJiAocGFydHNb
MF0gPT09ICJ+IiB8fCBwYXJ0c1swXSA9PT0gIisiKSAmJiBjb250ZXh0LnBhcmVu
dE5vZGUgPyBjb250ZXh0LnBhcmVudE5vZGUgOiBjb250ZXh0LCBjb250ZXh0WE1M
ICk7CgoJCQlzZXQgPSByZXQuZXhwciA/CgkJCQlTaXp6bGUuZmlsdGVyKCByZXQu
ZXhwciwgcmV0LnNldCApIDoKCQkJCXJldC5zZXQ7CgoJCQlpZiAoIHBhcnRzLmxl
bmd0aCA+IDAgKSB7CgkJCQljaGVja1NldCA9IG1ha2VBcnJheSggc2V0ICk7CgoJ
CQl9IGVsc2UgewoJCQkJcHJ1bmUgPSBmYWxzZTsKCQkJfQoKCQkJd2hpbGUgKCBw
YXJ0cy5sZW5ndGggKSB7CgkJCQljdXIgPSBwYXJ0cy5wb3AoKTsKCQkJCXBvcCA9
IGN1cjsKCgkJCQlpZiAoICFFeHByLnJlbGF0aXZlWyBjdXIgXSApIHsKCQkJCQlj
dXIgPSAiIjsKCQkJCX0gZWxzZSB7CgkJCQkJcG9wID0gcGFydHMucG9wKCk7CgkJ
CQl9CgoJCQkJaWYgKCBwb3AgPT0gbnVsbCApIHsKCQkJCQlwb3AgPSBjb250ZXh0
OwoJCQkJfQoKCQkJCUV4cHIucmVsYXRpdmVbIGN1ciBdKCBjaGVja1NldCwgcG9w
LCBjb250ZXh0WE1MICk7CgkJCX0KCgkJfSBlbHNlIHsKCQkJY2hlY2tTZXQgPSBw
YXJ0cyA9IFtdOwoJCX0KCX0KCglpZiAoICFjaGVja1NldCApIHsKCQljaGVja1Nl
dCA9IHNldDsKCX0KCglpZiAoICFjaGVja1NldCApIHsKCQlTaXp6bGUuZXJyb3Io
IGN1ciB8fCBzZWxlY3RvciApOwoJfQoKCWlmICggdG9TdHJpbmcuY2FsbChjaGVj
a1NldCkgPT09ICJbb2JqZWN0IEFycmF5XSIgKSB7CgkJaWYgKCAhcHJ1bmUgKSB7
CgkJCXJlc3VsdHMucHVzaC5hcHBseSggcmVzdWx0cywgY2hlY2tTZXQgKTsKCgkJ
fSBlbHNlIGlmICggY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSAxICkg
ewoJCQlmb3IgKCBpID0gMDsgY2hlY2tTZXRbaV0gIT0gbnVsbDsgaSsrICkgewoJ
CQkJaWYgKCBjaGVja1NldFtpXSAmJiAoY2hlY2tTZXRbaV0gPT09IHRydWUgfHwg
Y2hlY2tTZXRbaV0ubm9kZVR5cGUgPT09IDEgJiYgU2l6emxlLmNvbnRhaW5zKGNv
bnRleHQsIGNoZWNrU2V0W2ldKSkgKSB7CgkJCQkJcmVzdWx0cy5wdXNoKCBzZXRb
aV0gKTsKCQkJCX0KCQkJfQoKCQl9IGVsc2UgewoJCQlmb3IgKCBpID0gMDsgY2hl
Y2tTZXRbaV0gIT0gbnVsbDsgaSsrICkgewoJCQkJaWYgKCBjaGVja1NldFtpXSAm
JiBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0gMSApIHsKCQkJCQlyZXN1bHRzLnB1
c2goIHNldFtpXSApOwoJCQkJfQoJCQl9CgkJfQoKCX0gZWxzZSB7CgkJbWFrZUFy
cmF5KCBjaGVja1NldCwgcmVzdWx0cyApOwoJfQoKCWlmICggZXh0cmEgKSB7CgkJ
U2l6emxlKCBleHRyYSwgb3JpZ0NvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTsKCQlT
aXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApOwoJfQoKCXJldHVybiByZXN1bHRz
Owp9OwoKU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHsK
CWlmICggc29ydE9yZGVyICkgewoJCWhhc0R1cGxpY2F0ZSA9IGJhc2VIYXNEdXBs
aWNhdGU7CgkJcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKCgkJaWYgKCBoYXNE
dXBsaWNhdGUgKSB7CgkJCWZvciAoIHZhciBpID0gMTsgaSA8IHJlc3VsdHMubGVu
Z3RoOyBpKysgKSB7CgkJCQlpZiAoIHJlc3VsdHNbaV0gPT09IHJlc3VsdHNbIGkg
LSAxIF0gKSB7CgkJCQkJcmVzdWx0cy5zcGxpY2UoIGktLSwgMSApOwoJCQkJfQoJ
CQl9CgkJfQoJfQoKCXJldHVybiByZXN1bHRzOwp9OwoKU2l6emxlLm1hdGNoZXMg
PSBmdW5jdGlvbiggZXhwciwgc2V0ICkgewoJcmV0dXJuIFNpenpsZSggZXhwciwg
bnVsbCwgbnVsbCwgc2V0ICk7Cn07CgpTaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0g
ZnVuY3Rpb24oIG5vZGUsIGV4cHIgKSB7CglyZXR1cm4gU2l6emxlKCBleHByLCBu
dWxsLCBudWxsLCBbbm9kZV0gKS5sZW5ndGggPiAwOwp9OwoKU2l6emxlLmZpbmQg
PSBmdW5jdGlvbiggZXhwciwgY29udGV4dCwgaXNYTUwgKSB7Cgl2YXIgc2V0LCBp
LCBsZW4sIG1hdGNoLCB0eXBlLCBsZWZ0OwoKCWlmICggIWV4cHIgKSB7CgkJcmV0
dXJuIFtdOwoJfQoKCWZvciAoIGkgPSAwLCBsZW4gPSBFeHByLm9yZGVyLmxlbmd0
aDsgaSA8IGxlbjsgaSsrICkgewoJCXR5cGUgPSBFeHByLm9yZGVyW2ldOwoJCQoJ
CWlmICggKG1hdGNoID0gRXhwci5sZWZ0TWF0Y2hbIHR5cGUgXS5leGVjKCBleHBy
ICkpICkgewoJCQlsZWZ0ID0gbWF0Y2hbMV07CgkJCW1hdGNoLnNwbGljZSggMSwg
MSApOwoKCQkJaWYgKCBsZWZ0LnN1YnN0ciggbGVmdC5sZW5ndGggLSAxICkgIT09
ICJcXCIgKSB7CgkJCQltYXRjaFsxXSA9IChtYXRjaFsxXSB8fCAiIikucmVwbGFj
ZSggckJhY2tzbGFzaCwgIiIgKTsKCQkJCXNldCA9IEV4cHIuZmluZFsgdHlwZSBd
KCBtYXRjaCwgY29udGV4dCwgaXNYTUwgKTsKCgkJCQlpZiAoIHNldCAhPSBudWxs
ICkgewoJCQkJCWV4cHIgPSBleHByLnJlcGxhY2UoIEV4cHIubWF0Y2hbIHR5cGUg
XSwgIiIgKTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCX0KCglpZiAoICFz
ZXQgKSB7CgkJc2V0ID0gdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUgIT09ICJ1bmRlZmluZWQiID8KCQkJY29udGV4dC5nZXRFbGVtZW50c0J5VGFn
TmFtZSggIioiICkgOgoJCQlbXTsKCX0KCglyZXR1cm4geyBzZXQ6IHNldCwgZXhw
cjogZXhwciB9Owp9OwoKU2l6emxlLmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBz
ZXQsIGlucGxhY2UsIG5vdCApIHsKCXZhciBtYXRjaCwgYW55Rm91bmQsCgkJdHlw
ZSwgZm91bmQsIGl0ZW0sIGZpbHRlciwgbGVmdCwKCQlpLCBwYXNzLAoJCW9sZCA9
IGV4cHIsCgkJcmVzdWx0ID0gW10sCgkJY3VyTG9vcCA9IHNldCwKCQlpc1hNTEZp
bHRlciA9IHNldCAmJiBzZXRbMF0gJiYgU2l6emxlLmlzWE1MKCBzZXRbMF0gKTsK
Cgl3aGlsZSAoIGV4cHIgJiYgc2V0Lmxlbmd0aCApIHsKCQlmb3IgKCB0eXBlIGlu
IEV4cHIuZmlsdGVyICkgewoJCQlpZiAoIChtYXRjaCA9IEV4cHIubGVmdE1hdGNo
WyB0eXBlIF0uZXhlYyggZXhwciApKSAhPSBudWxsICYmIG1hdGNoWzJdICkgewoJ
CQkJZmlsdGVyID0gRXhwci5maWx0ZXJbIHR5cGUgXTsKCQkJCWxlZnQgPSBtYXRj
aFsxXTsKCgkJCQlhbnlGb3VuZCA9IGZhbHNlOwoKCQkJCW1hdGNoLnNwbGljZSgx
LDEpOwoKCQkJCWlmICggbGVmdC5zdWJzdHIoIGxlZnQubGVuZ3RoIC0gMSApID09
PSAiXFwiICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWlmICggY3VyTG9v
cCA9PT0gcmVzdWx0ICkgewoJCQkJCXJlc3VsdCA9IFtdOwoJCQkJfQoKCQkJCWlm
ICggRXhwci5wcmVGaWx0ZXJbIHR5cGUgXSApIHsKCQkJCQltYXRjaCA9IEV4cHIu
cHJlRmlsdGVyWyB0eXBlIF0oIG1hdGNoLCBjdXJMb29wLCBpbnBsYWNlLCByZXN1
bHQsIG5vdCwgaXNYTUxGaWx0ZXIgKTsKCgkJCQkJaWYgKCAhbWF0Y2ggKSB7CgkJ
CQkJCWFueUZvdW5kID0gZm91bmQgPSB0cnVlOwoKCQkJCQl9IGVsc2UgaWYgKCBt
YXRjaCA9PT0gdHJ1ZSApIHsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJfQoK
CQkJCWlmICggbWF0Y2ggKSB7CgkJCQkJZm9yICggaSA9IDA7IChpdGVtID0gY3Vy
TG9vcFtpXSkgIT0gbnVsbDsgaSsrICkgewoJCQkJCQlpZiAoIGl0ZW0gKSB7CgkJ
CQkJCQlmb3VuZCA9IGZpbHRlciggaXRlbSwgbWF0Y2gsIGksIGN1ckxvb3AgKTsK
CQkJCQkJCXBhc3MgPSBub3QgXiBmb3VuZDsKCgkJCQkJCQlpZiAoIGlucGxhY2Ug
JiYgZm91bmQgIT0gbnVsbCApIHsKCQkJCQkJCQlpZiAoIHBhc3MgKSB7CgkJCQkJ
CQkJCWFueUZvdW5kID0gdHJ1ZTsKCgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJ
Y3VyTG9vcFtpXSA9IGZhbHNlOwoJCQkJCQkJCX0KCgkJCQkJCQl9IGVsc2UgaWYg
KCBwYXNzICkgewoJCQkJCQkJCXJlc3VsdC5wdXNoKCBpdGVtICk7CgkJCQkJCQkJ
YW55Rm91bmQgPSB0cnVlOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoK
CQkJCWlmICggZm91bmQgIT09IHVuZGVmaW5lZCApIHsKCQkJCQlpZiAoICFpbnBs
YWNlICkgewoJCQkJCQljdXJMb29wID0gcmVzdWx0OwoJCQkJCX0KCgkJCQkJZXhw
ciA9IGV4cHIucmVwbGFjZSggRXhwci5tYXRjaFsgdHlwZSBdLCAiIiApOwoKCQkJ
CQlpZiAoICFhbnlGb3VuZCApIHsKCQkJCQkJcmV0dXJuIFtdOwoJCQkJCX0KCgkJ
CQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgoJCS8vIEltcHJvcGVyIGV4cHJlc3Np
b24KCQlpZiAoIGV4cHIgPT09IG9sZCApIHsKCQkJaWYgKCBhbnlGb3VuZCA9PSBu
dWxsICkgewoJCQkJU2l6emxlLmVycm9yKCBleHByICk7CgoJCQl9IGVsc2UgewoJ
CQkJYnJlYWs7CgkJCX0KCQl9CgoJCW9sZCA9IGV4cHI7Cgl9CgoJcmV0dXJuIGN1
ckxvb3A7Cn07CgpTaXp6bGUuZXJyb3IgPSBmdW5jdGlvbiggbXNnICkgewoJdGhy
b3cgbmV3IEVycm9yKCAiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVz
c2lvbjogIiArIG1zZyApOwp9OwoKLyoqCiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9y
IHJldHJlaXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5v
ZGVzCiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbQogKi8KdmFyIGdldFRl
eHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkgewogICAgdmFy
IGksIG5vZGUsCgkJbm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlLAoJCXJldCA9ICIi
OwoKCWlmICggbm9kZVR5cGUgKSB7CgkJaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBu
b2RlVHlwZSA9PT0gOSApIHsKCQkJLy8gVXNlIHRleHRDb250ZW50IHx8IGlubmVy
VGV4dCBmb3IgZWxlbWVudHMKCQkJaWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVu
dCA9PT0gJ3N0cmluZycgKSB7CgkJCQlyZXR1cm4gZWxlbS50ZXh0Q29udGVudDsK
CQkJfSBlbHNlIGlmICggdHlwZW9mIGVsZW0uaW5uZXJUZXh0ID09PSAnc3RyaW5n
JyApIHsKCQkJCS8vIFJlcGxhY2UgSUUncyBjYXJyaWFnZSByZXR1cm5zCgkJCQly
ZXR1cm4gZWxlbS5pbm5lclRleHQucmVwbGFjZSggclJldHVybiwgJycgKTsKCQkJ
fSBlbHNlIHsKCQkJCS8vIFRyYXZlcnNlIGl0J3MgY2hpbGRyZW4KCQkJCWZvciAo
IGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRT
aWJsaW5nKSB7CgkJCQkJcmV0ICs9IGdldFRleHQoIGVsZW0gKTsKCQkJCX0KCQkJ
fQoJCX0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0
ICkgewoJCQlyZXR1cm4gZWxlbS5ub2RlVmFsdWU7CgkJfQoJfSBlbHNlIHsKCgkJ
Ly8gSWYgbm8gbm9kZVR5cGUsIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJy
YXkKCQlmb3IgKCBpID0gMDsgKG5vZGUgPSBlbGVtW2ldKTsgaSsrICkgewoJCQkv
LyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2RlcwoJCQlpZiAoIG5vZGUubm9k
ZVR5cGUgIT09IDggKSB7CgkJCQlyZXQgKz0gZ2V0VGV4dCggbm9kZSApOwoJCQl9
CgkJfQoJfQoJcmV0dXJuIHJldDsKfTsKCnZhciBFeHByID0gU2l6emxlLnNlbGVj
dG9ycyA9IHsKCW9yZGVyOiBbICJJRCIsICJOQU1FIiwgIlRBRyIgXSwKCgltYXRj
aDogewoJCUlEOiAvIygoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sCgkJ
Q0xBU1M6IC9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sCgkJTkFN
RTogL1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsn
Il0qXF0vLAoJCUFUVFI6IC9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxc
LikrKVxzKig/OihcUz89KVxzKig/OihbJyJdKSguKj8pXDN8KCM/KD86W1x3XHUw
MGMwLVx1RkZGRlwtXXxcXC4pKil8KXwpXHMqXF0vLAoJCVRBRzogL14oKD86W1x3
XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sCgkJQ0hJTEQ6IC86KG9ubHl8bnRo
fGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQr
fCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLAoJ
CVBPUzogLzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgo
XGQqKVwpKT8oPz1bXlwtXXwkKS8sCgkJUFNFVURPOiAvOigoPzpbXHdcdTAwYzAt
XHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChc
KV0qKSspXDJcKSk/LwoJfSwKCglsZWZ0TWF0Y2g6IHt9LAoKCWF0dHJNYXA6IHsK
CQkiY2xhc3MiOiAiY2xhc3NOYW1lIiwKCQkiZm9yIjogImh0bWxGb3IiCgl9LAoK
CWF0dHJIYW5kbGU6IHsKCQlocmVmOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0
dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAiaHJlZiIgKTsKCQl9LAoJCXR5cGU6IGZ1
bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoICJ0
eXBlIiApOwoJCX0KCX0sCgoJcmVsYXRpdmU6IHsKCQkiKyI6IGZ1bmN0aW9uKGNo
ZWNrU2V0LCBwYXJ0KXsKCQkJdmFyIGlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09
PSAic3RyaW5nIiwKCQkJCWlzVGFnID0gaXNQYXJ0U3RyICYmICFyTm9uV29yZC50
ZXN0KCBwYXJ0ICksCgkJCQlpc1BhcnRTdHJOb3RUYWcgPSBpc1BhcnRTdHIgJiYg
IWlzVGFnOwoKCQkJaWYgKCBpc1RhZyApIHsKCQkJCXBhcnQgPSBwYXJ0LnRvTG93
ZXJDYXNlKCk7CgkJCX0KCgkJCWZvciAoIHZhciBpID0gMCwgbCA9IGNoZWNrU2V0
Lmxlbmd0aCwgZWxlbTsgaSA8IGw7IGkrKyApIHsKCQkJCWlmICggKGVsZW0gPSBj
aGVja1NldFtpXSkgKSB7CgkJCQkJd2hpbGUgKCAoZWxlbSA9IGVsZW0ucHJldmlv
dXNTaWJsaW5nKSAmJiBlbGVtLm5vZGVUeXBlICE9PSAxICkge30KCgkJCQkJY2hl
Y2tTZXRbaV0gPSBpc1BhcnRTdHJOb3RUYWcgfHwgZWxlbSAmJiBlbGVtLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCkgPT09IHBhcnQgPwoJCQkJCQllbGVtIHx8IGZhbHNl
IDoKCQkJCQkJZWxlbSA9PT0gcGFydDsKCQkJCX0KCQkJfQoKCQkJaWYgKCBpc1Bh
cnRTdHJOb3RUYWcgKSB7CgkJCQlTaXp6bGUuZmlsdGVyKCBwYXJ0LCBjaGVja1Nl
dCwgdHJ1ZSApOwoJCQl9CgkJfSwKCgkJIj4iOiBmdW5jdGlvbiggY2hlY2tTZXQs
IHBhcnQgKSB7CgkJCXZhciBlbGVtLAoJCQkJaXNQYXJ0U3RyID0gdHlwZW9mIHBh
cnQgPT09ICJzdHJpbmciLAoJCQkJaSA9IDAsCgkJCQlsID0gY2hlY2tTZXQubGVu
Z3RoOwoKCQkJaWYgKCBpc1BhcnRTdHIgJiYgIXJOb25Xb3JkLnRlc3QoIHBhcnQg
KSApIHsKCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7CgoJCQkJZm9yICgg
OyBpIDwgbDsgaSsrICkgewoJCQkJCWVsZW0gPSBjaGVja1NldFtpXTsKCgkJCQkJ
aWYgKCBlbGVtICkgewoJCQkJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2Rl
OwoJCQkJCQljaGVja1NldFtpXSA9IHBhcmVudC5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSBwYXJ0ID8gcGFyZW50IDogZmFsc2U7CgkJCQkJfQoJCQkJfQoKCQkJ
fSBlbHNlIHsKCQkJCWZvciAoIDsgaSA8IGw7IGkrKyApIHsKCQkJCQllbGVtID0g
Y2hlY2tTZXRbaV07CgoJCQkJCWlmICggZWxlbSApIHsKCQkJCQkJY2hlY2tTZXRb
aV0gPSBpc1BhcnRTdHIgPwoJCQkJCQkJZWxlbS5wYXJlbnROb2RlIDoKCQkJCQkJ
CWVsZW0ucGFyZW50Tm9kZSA9PT0gcGFydDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYg
KCBpc1BhcnRTdHIgKSB7CgkJCQkJU2l6emxlLmZpbHRlciggcGFydCwgY2hlY2tT
ZXQsIHRydWUgKTsKCQkJCX0KCQkJfQoJCX0sCgoJCSIiOiBmdW5jdGlvbihjaGVj
a1NldCwgcGFydCwgaXNYTUwpewoJCQl2YXIgbm9kZUNoZWNrLAoJCQkJZG9uZU5h
bWUgPSBkb25lKyssCgkJCQljaGVja0ZuID0gZGlyQ2hlY2s7CgoJCQlpZiAoIHR5
cGVvZiBwYXJ0ID09PSAic3RyaW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCAp
ICkgewoJCQkJcGFydCA9IHBhcnQudG9Mb3dlckNhc2UoKTsKCQkJCW5vZGVDaGVj
ayA9IHBhcnQ7CgkJCQljaGVja0ZuID0gZGlyTm9kZUNoZWNrOwoJCQl9CgoJCQlj
aGVja0ZuKCAicGFyZW50Tm9kZSIsIHBhcnQsIGRvbmVOYW1lLCBjaGVja1NldCwg
bm9kZUNoZWNrLCBpc1hNTCApOwoJCX0sCgoJCSJ+IjogZnVuY3Rpb24oIGNoZWNr
U2V0LCBwYXJ0LCBpc1hNTCApIHsKCQkJdmFyIG5vZGVDaGVjaywKCQkJCWRvbmVO
YW1lID0gZG9uZSsrLAoJCQkJY2hlY2tGbiA9IGRpckNoZWNrOwoKCQkJaWYgKCB0
eXBlb2YgcGFydCA9PT0gInN0cmluZyIgJiYgIXJOb25Xb3JkLnRlc3QoIHBhcnQg
KSApIHsKCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7CgkJCQlub2RlQ2hl
Y2sgPSBwYXJ0OwoJCQkJY2hlY2tGbiA9IGRpck5vZGVDaGVjazsKCQkJfQoKCQkJ
Y2hlY2tGbiggInByZXZpb3VzU2libGluZyIsIHBhcnQsIGRvbmVOYW1lLCBjaGVj
a1NldCwgbm9kZUNoZWNrLCBpc1hNTCApOwoJCX0KCX0sCgoJZmluZDogewoJCUlE
OiBmdW5jdGlvbiggbWF0Y2gsIGNvbnRleHQsIGlzWE1MICkgewoJCQlpZiAoIHR5
cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiAh
aXNYTUwgKSB7CgkJCQl2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0
Y2hbMV0pOwoJCQkJLy8gQ2hlY2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVuIEJs
YWNrYmVycnkgNC42IHJldHVybnMKCQkJCS8vIG5vZGVzIHRoYXQgYXJlIG5vIGxv
bmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKCQkJCXJldHVybiBtICYmIG0ucGFy
ZW50Tm9kZSA/IFttXSA6IFtdOwoJCQl9CgkJfSwKCgkJTkFNRTogZnVuY3Rpb24o
IG1hdGNoLCBjb250ZXh0ICkgewoJCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVs
ZW1lbnRzQnlOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKCQkJCXZhciByZXQgPSBb
XSwKCQkJCQlyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSggbWF0
Y2hbMV0gKTsKCgkJCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSByZXN1bHRzLmxlbmd0
aDsgaSA8IGw7IGkrKyApIHsKCQkJCQlpZiAoIHJlc3VsdHNbaV0uZ2V0QXR0cmli
dXRlKCJuYW1lIikgPT09IG1hdGNoWzFdICkgewoJCQkJCQlyZXQucHVzaCggcmVz
dWx0c1tpXSApOwoJCQkJCX0KCQkJCX0KCgkJCQlyZXR1cm4gcmV0Lmxlbmd0aCA9
PT0gMCA/IG51bGwgOiByZXQ7CgkJCX0KCQl9LAoKCQlUQUc6IGZ1bmN0aW9uKCBt
YXRjaCwgY29udGV4dCApIHsKCQkJaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CgkJCQlyZXR1cm4gY29u
dGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0gKTsKCQkJfQoJCX0K
CX0sCglwcmVGaWx0ZXI6IHsKCQlDTEFTUzogZnVuY3Rpb24oIG1hdGNoLCBjdXJM
b29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwgKSB7CgkJCW1hdGNoID0g
IiAiICsgbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwgIiIgKSArICIgIjsK
CgkJCWlmICggaXNYTUwgKSB7CgkJCQlyZXR1cm4gbWF0Y2g7CgkJCX0KCgkJCWZv
ciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBjdXJMb29wW2ldKSAhPSBudWxs
OyBpKysgKSB7CgkJCQlpZiAoIGVsZW0gKSB7CgkJCQkJaWYgKCBub3QgXiAoZWxl
bS5jbGFzc05hbWUgJiYgKCIgIiArIGVsZW0uY2xhc3NOYW1lICsgIiAiKS5yZXBs
YWNlKC9bXHRcblxyXS9nLCAiICIpLmluZGV4T2YobWF0Y2gpID49IDApICkgewoJ
CQkJCQlpZiAoICFpbnBsYWNlICkgewoJCQkJCQkJcmVzdWx0LnB1c2goIGVsZW0g
KTsKCQkJCQkJfQoKCQkJCQl9IGVsc2UgaWYgKCBpbnBsYWNlICkgewoJCQkJCQlj
dXJMb29wW2ldID0gZmFsc2U7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlyZXR1cm4g
ZmFsc2U7CgkJfSwKCgkJSUQ6IGZ1bmN0aW9uKCBtYXRjaCApIHsKCQkJcmV0dXJu
IG1hdGNoWzFdLnJlcGxhY2UoIHJCYWNrc2xhc2gsICIiICk7CgkJfSwKCgkJVEFH
OiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AgKSB7CgkJCXJldHVybiBtYXRjaFsx
XS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApLnRvTG93ZXJDYXNlKCk7CgkJfSwK
CgkJQ0hJTEQ6IGZ1bmN0aW9uKCBtYXRjaCApIHsKCQkJaWYgKCBtYXRjaFsxXSA9
PT0gIm50aCIgKSB7CgkJCQlpZiAoICFtYXRjaFsyXSApIHsKCQkJCQlTaXp6bGUu
ZXJyb3IoIG1hdGNoWzBdICk7CgkJCQl9CgoJCQkJbWF0Y2hbMl0gPSBtYXRjaFsy
XS5yZXBsYWNlKC9eXCt8XHMqL2csICcnKTsKCgkJCQkvLyBwYXJzZSBlcXVhdGlv
bnMgbGlrZSAnZXZlbicsICdvZGQnLCAnNScsICcybicsICczbisyJywgJzRuLTEn
LCAnLW4rNicKCQkJCXZhciB0ZXN0ID0gLygtPykoXGQqKSg/Om4oWytcLV0/XGQq
KSk/Ly5leGVjKAoJCQkJCW1hdGNoWzJdID09PSAiZXZlbiIgJiYgIjJuIiB8fCBt
YXRjaFsyXSA9PT0gIm9kZCIgJiYgIjJuKzEiIHx8CgkJCQkJIS9cRC8udGVzdCgg
bWF0Y2hbMl0gKSAmJiAiMG4rIiArIG1hdGNoWzJdIHx8IG1hdGNoWzJdKTsKCgkJ
CQkvLyBjYWxjdWxhdGUgdGhlIG51bWJlcnMgKGZpcnN0KW4rKGxhc3QpIGluY2x1
ZGluZyBpZiB0aGV5IGFyZSBuZWdhdGl2ZQoJCQkJbWF0Y2hbMl0gPSAodGVzdFsx
XSArICh0ZXN0WzJdIHx8IDEpKSAtIDA7CgkJCQltYXRjaFszXSA9IHRlc3RbM10g
LSAwOwoJCQl9CgkJCWVsc2UgaWYgKCBtYXRjaFsyXSApIHsKCQkJCVNpenpsZS5l
cnJvciggbWF0Y2hbMF0gKTsKCQkJfQoKCQkJLy8gVE9ETzogTW92ZSB0byBub3Jt
YWwgY2FjaGluZyBzeXN0ZW0KCQkJbWF0Y2hbMF0gPSBkb25lKys7CgoJCQlyZXR1
cm4gbWF0Y2g7CgkJfSwKCgkJQVRUUjogZnVuY3Rpb24oIG1hdGNoLCBjdXJMb29w
LCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwgKSB7CgkJCXZhciBuYW1lID0g
bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApOwoJ
CQkKCQkJaWYgKCAhaXNYTUwgJiYgRXhwci5hdHRyTWFwW25hbWVdICkgewoJCQkJ
bWF0Y2hbMV0gPSBFeHByLmF0dHJNYXBbbmFtZV07CgkJCX0KCgkJCS8vIEhhbmRs
ZSBpZiBhbiB1bi1xdW90ZWQgdmFsdWUgd2FzIHVzZWQKCQkJbWF0Y2hbNF0gPSAo
IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8ICIiICkucmVwbGFjZSggckJhY2tzbGFz
aCwgIiIgKTsKCgkJCWlmICggbWF0Y2hbMl0gPT09ICJ+PSIgKSB7CgkJCQltYXRj
aFs0XSA9ICIgIiArIG1hdGNoWzRdICsgIiAiOwoJCQl9CgoJCQlyZXR1cm4gbWF0
Y2g7CgkJfSwKCgkJUFNFVURPOiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AsIGlu
cGxhY2UsIHJlc3VsdCwgbm90ICkgewoJCQlpZiAoIG1hdGNoWzFdID09PSAibm90
IiApIHsKCQkJCS8vIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgb3IgYSBzaW1wbGUgb25lCgkJCQlpZiAoICggY2h1bmtlci5leGVj
KG1hdGNoWzNdKSB8fCAiIiApLmxlbmd0aCA+IDEgfHwgL15cdy8udGVzdChtYXRj
aFszXSkgKSB7CgkJCQkJbWF0Y2hbM10gPSBTaXp6bGUobWF0Y2hbM10sIG51bGws
IG51bGwsIGN1ckxvb3ApOwoKCQkJCX0gZWxzZSB7CgkJCQkJdmFyIHJldCA9IFNp
enpsZS5maWx0ZXIobWF0Y2hbM10sIGN1ckxvb3AsIGlucGxhY2UsIHRydWUgXiBu
b3QpOwoKCQkJCQlpZiAoICFpbnBsYWNlICkgewoJCQkJCQlyZXN1bHQucHVzaC5h
cHBseSggcmVzdWx0LCByZXQgKTsKCQkJCQl9CgoJCQkJCXJldHVybiBmYWxzZTsK
CQkJCX0KCgkJCX0gZWxzZSBpZiAoIEV4cHIubWF0Y2guUE9TLnRlc3QoIG1hdGNo
WzBdICkgfHwgRXhwci5tYXRjaC5DSElMRC50ZXN0KCBtYXRjaFswXSApICkgewoJ
CQkJcmV0dXJuIHRydWU7CgkJCX0KCQkJCgkJCXJldHVybiBtYXRjaDsKCQl9LAoK
CQlQT1M6IGZ1bmN0aW9uKCBtYXRjaCApIHsKCQkJbWF0Y2gudW5zaGlmdCggdHJ1
ZSApOwoKCQkJcmV0dXJuIG1hdGNoOwoJCX0KCX0sCgkKCWZpbHRlcnM6IHsKCQll
bmFibGVkOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuIGVsZW0uZGlzYWJs
ZWQgPT09IGZhbHNlICYmIGVsZW0udHlwZSAhPT0gImhpZGRlbiI7CgkJfSwKCgkJ
ZGlzYWJsZWQ6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxlbS5kaXNh
YmxlZCA9PT0gdHJ1ZTsKCQl9LAoKCQljaGVja2VkOiBmdW5jdGlvbiggZWxlbSAp
IHsKCQkJcmV0dXJuIGVsZW0uY2hlY2tlZCA9PT0gdHJ1ZTsKCQl9LAoJCQoJCXNl
bGVjdGVkOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJLy8gQWNjZXNzaW5nIHRoaXMg
cHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdAoJCQkvLyBvcHRpb25z
IGluIFNhZmFyaSB3b3JrIHByb3Blcmx5CgkJCWlmICggZWxlbS5wYXJlbnROb2Rl
ICkgewoJCQkJZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CgkJCX0KCQkJ
CgkJCXJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlOwoJCX0sCgoJCXBhcmVu
dDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVybiAhIWVsZW0uZmlyc3RDaGls
ZDsKCQl9LAoKCQllbXB0eTogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVybiAh
ZWxlbS5maXJzdENoaWxkOwoJCX0sCgoJCWhhczogZnVuY3Rpb24oIGVsZW0sIGks
IG1hdGNoICkgewoJCQlyZXR1cm4gISFTaXp6bGUoIG1hdGNoWzNdLCBlbGVtICku
bGVuZ3RoOwoJCX0sCgoJCWhlYWRlcjogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJl
dHVybiAoL2hcZC9pKS50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CgkJfSwKCgkJdGV4
dDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXZhciBhdHRyID0gZWxlbS5nZXRBdHRy
aWJ1dGUoICJ0eXBlIiApLCB0eXBlID0gZWxlbS50eXBlOwoJCQkvLyBJRTYgYW5k
IDcgd2lsbCBtYXAgZWxlbS50eXBlIHRvICd0ZXh0JyBmb3IgbmV3IEhUTUw1IHR5
cGVzIChzZWFyY2gsIGV0YykgCgkJCS8vIHVzZSBnZXRBdHRyaWJ1dGUgaW5zdGVh
ZCB0byB0ZXN0IHRoaXMgY2FzZQoJCQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpID09PSAiaW5wdXQiICYmICJ0ZXh0IiA9PT0gdHlwZSAmJiAoIGF0
dHIgPT09IHR5cGUgfHwgYXR0ciA9PT0gbnVsbCApOwoJCX0sCgoJCXJhZGlvOiBm
dW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA9PT0gImlucHV0IiAmJiAicmFkaW8iID09PSBlbGVtLnR5cGU7CgkJ
fSwKCgkJY2hlY2tib3g6IGZ1bmN0aW9uKCBlbGVtICkgewoJCQlyZXR1cm4gZWxl
bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmICJjaGVja2Jv
eCIgPT09IGVsZW0udHlwZTsKCQl9LAoKCQlmaWxlOiBmdW5jdGlvbiggZWxlbSAp
IHsKCQkJcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlu
cHV0IiAmJiAiZmlsZSIgPT09IGVsZW0udHlwZTsKCQl9LAoKCQlwYXNzd29yZDog
ZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYgInBhc3N3b3JkIiA9PT0gZWxlbS50eXBl
OwoJCX0sCgoJCXN1Ym1pdDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXZhciBuYW1l
ID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwoJCQlyZXR1cm4gKG5hbWUg
PT09ICJpbnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmICJzdWJtaXQiID09
PSBlbGVtLnR5cGU7CgkJfSwKCgkJaW1hZ2U6IGZ1bmN0aW9uKCBlbGVtICkgewoJ
CQlyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQi
ICYmICJpbWFnZSIgPT09IGVsZW0udHlwZTsKCQl9LAoKCQlyZXNldDogZnVuY3Rp
b24oIGVsZW0gKSB7CgkJCXZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpOwoJCQlyZXR1cm4gKG5hbWUgPT09ICJpbnB1dCIgfHwgbmFtZSA9PT0g
ImJ1dHRvbiIpICYmICJyZXNldCIgPT09IGVsZW0udHlwZTsKCQl9LAoKCQlidXR0
b246IGZ1bmN0aW9uKCBlbGVtICkgewoJCQl2YXIgbmFtZSA9IGVsZW0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTsKCQkJcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYg
ImJ1dHRvbiIgPT09IGVsZW0udHlwZSB8fCBuYW1lID09PSAiYnV0dG9uIjsKCQl9
LAoKCQlpbnB1dDogZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJldHVybiAoL2lucHV0
fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaSkudGVzdCggZWxlbS5ub2RlTmFtZSAp
OwoJCX0sCgoJCWZvY3VzOiBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuIGVs
ZW0gPT09IGVsZW0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50OwoJCX0KCX0s
CglzZXRGaWx0ZXJzOiB7CgkJZmlyc3Q6IGZ1bmN0aW9uKCBlbGVtLCBpICkgewoJ
CQlyZXR1cm4gaSA9PT0gMDsKCQl9LAoKCQlsYXN0OiBmdW5jdGlvbiggZWxlbSwg
aSwgbWF0Y2gsIGFycmF5ICkgewoJCQlyZXR1cm4gaSA9PT0gYXJyYXkubGVuZ3Ro
IC0gMTsKCQl9LAoKCQlldmVuOiBmdW5jdGlvbiggZWxlbSwgaSApIHsKCQkJcmV0
dXJuIGkgJSAyID09PSAwOwoJCX0sCgoJCW9kZDogZnVuY3Rpb24oIGVsZW0sIGkg
KSB7CgkJCXJldHVybiBpICUgMiA9PT0gMTsKCQl9LAoKCQlsdDogZnVuY3Rpb24o
IGVsZW0sIGksIG1hdGNoICkgewoJCQlyZXR1cm4gaSA8IG1hdGNoWzNdIC0gMDsK
CQl9LAoKCQlndDogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewoJCQlyZXR1
cm4gaSA+IG1hdGNoWzNdIC0gMDsKCQl9LAoKCQludGg6IGZ1bmN0aW9uKCBlbGVt
LCBpLCBtYXRjaCApIHsKCQkJcmV0dXJuIG1hdGNoWzNdIC0gMCA9PT0gaTsKCQl9
LAoKCQllcTogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewoJCQlyZXR1cm4g
bWF0Y2hbM10gLSAwID09PSBpOwoJCX0KCX0sCglmaWx0ZXI6IHsKCQlQU0VVRE86
IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCwgaSwgYXJyYXkgKSB7CgkJCXZhciBuYW1l
ID0gbWF0Y2hbMV0sCgkJCQlmaWx0ZXIgPSBFeHByLmZpbHRlcnNbIG5hbWUgXTsK
CgkJCWlmICggZmlsdGVyICkgewoJCQkJcmV0dXJuIGZpbHRlciggZWxlbSwgaSwg
bWF0Y2gsIGFycmF5ICk7CgoJCQl9IGVsc2UgaWYgKCBuYW1lID09PSAiY29udGFp
bnMiICkgewoJCQkJcmV0dXJuIChlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5u
ZXJUZXh0IHx8IGdldFRleHQoWyBlbGVtIF0pIHx8ICIiKS5pbmRleE9mKG1hdGNo
WzNdKSA+PSAwOwoKCQkJfSBlbHNlIGlmICggbmFtZSA9PT0gIm5vdCIgKSB7CgkJ
CQl2YXIgbm90ID0gbWF0Y2hbM107CgoJCQkJZm9yICggdmFyIGogPSAwLCBsID0g
bm90Lmxlbmd0aDsgaiA8IGw7IGorKyApIHsKCQkJCQlpZiAoIG5vdFtqXSA9PT0g
ZWxlbSApIHsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0KCgkJCQly
ZXR1cm4gdHJ1ZTsKCgkJCX0gZWxzZSB7CgkJCQlTaXp6bGUuZXJyb3IoIG5hbWUg
KTsKCQkJfQoJCX0sCgoJCUNISUxEOiBmdW5jdGlvbiggZWxlbSwgbWF0Y2ggKSB7
CgkJCXZhciBmaXJzdCwgbGFzdCwKCQkJCWRvbmVOYW1lLCBwYXJlbnQsIGNhY2hl
LAoJCQkJY291bnQsIGRpZmYsCgkJCQl0eXBlID0gbWF0Y2hbMV0sCgkJCQlub2Rl
ID0gZWxlbTsKCgkJCXN3aXRjaCAoIHR5cGUgKSB7CgkJCQljYXNlICJvbmx5IjoK
CQkJCWNhc2UgImZpcnN0IjoKCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5wcmV2
aW91c1NpYmxpbmcpICkJIHsKCQkJCQkJaWYgKCBub2RlLm5vZGVUeXBlID09PSAx
ICkgeyAKCQkJCQkJCXJldHVybiBmYWxzZTsgCgkJCQkJCX0KCQkJCQl9CgoJCQkJ
CWlmICggdHlwZSA9PT0gImZpcnN0IiApIHsgCgkJCQkJCXJldHVybiB0cnVlOyAK
CQkJCQl9CgoJCQkJCW5vZGUgPSBlbGVtOwoKCQkJCWNhc2UgImxhc3QiOgoJCQkJ
CXdoaWxlICggKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKSApCSB7CgkJCQkJCWlm
ICggbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsgCgkJCQkJCQlyZXR1cm4gZmFsc2U7
IAoJCQkJCQl9CgkJCQkJfQoKCQkJCQlyZXR1cm4gdHJ1ZTsKCgkJCQljYXNlICJu
dGgiOgoJCQkJCWZpcnN0ID0gbWF0Y2hbMl07CgkJCQkJbGFzdCA9IG1hdGNoWzNd
OwoKCQkJCQlpZiAoIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgKSB7CgkJCQkJ
CXJldHVybiB0cnVlOwoJCQkJCX0KCQkJCQkKCQkJCQlkb25lTmFtZSA9IG1hdGNo
WzBdOwoJCQkJCXBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTsKCQoJCQkJCWlmICgg
cGFyZW50ICYmIChwYXJlbnRbIGV4cGFuZG8gXSAhPT0gZG9uZU5hbWUgfHwgIWVs
ZW0ubm9kZUluZGV4KSApIHsKCQkJCQkJY291bnQgPSAwOwoJCQkJCQkKCQkJCQkJ
Zm9yICggbm9kZSA9IHBhcmVudC5maXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9k
ZS5uZXh0U2libGluZyApIHsKCQkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9PT0g
MSApIHsKCQkJCQkJCQlub2RlLm5vZGVJbmRleCA9ICsrY291bnQ7CgkJCQkJCQl9
CgkJCQkJCX0gCgoJCQkJCQlwYXJlbnRbIGV4cGFuZG8gXSA9IGRvbmVOYW1lOwoJ
CQkJCX0KCQkJCQkKCQkJCQlkaWZmID0gZWxlbS5ub2RlSW5kZXggLSBsYXN0OwoK
CQkJCQlpZiAoIGZpcnN0ID09PSAwICkgewoJCQkJCQlyZXR1cm4gZGlmZiA9PT0g
MDsKCgkJCQkJfSBlbHNlIHsKCQkJCQkJcmV0dXJuICggZGlmZiAlIGZpcnN0ID09
PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7CgkJCQkJfQoJCQl9CgkJfSwKCgkJ
SUQ6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKCQkJcmV0dXJuIGVsZW0ubm9k
ZVR5cGUgPT09IDEgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IG1hdGNo
OwoJCX0sCgoJCVRBRzogZnVuY3Rpb24oIGVsZW0sIG1hdGNoICkgewoJCQlyZXR1
cm4gKG1hdGNoID09PSAiKiIgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSkgfHwgISFl
bGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0g
bWF0Y2g7CgkJfSwKCQkKCQlDTEFTUzogZnVuY3Rpb24oIGVsZW0sIG1hdGNoICkg
ewoJCQlyZXR1cm4gKCIgIiArIChlbGVtLmNsYXNzTmFtZSB8fCBlbGVtLmdldEF0
dHJpYnV0ZSgiY2xhc3MiKSkgKyAiICIpCgkJCQkuaW5kZXhPZiggbWF0Y2ggKSA+
IC0xOwoJCX0sCgoJCUFUVFI6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKCQkJ
dmFyIG5hbWUgPSBtYXRjaFsxXSwKCQkJCXJlc3VsdCA9IFNpenpsZS5hdHRyID8K
CQkJCQlTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApIDoKCQkJCQlFeHByLmF0dHJI
YW5kbGVbIG5hbWUgXSA/CgkJCQkJRXhwci5hdHRySGFuZGxlWyBuYW1lIF0oIGVs
ZW0gKSA6CgkJCQkJZWxlbVsgbmFtZSBdICE9IG51bGwgPwoJCQkJCQllbGVtWyBu
YW1lIF0gOgoJCQkJCQllbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApLAoJCQkJdmFs
dWUgPSByZXN1bHQgKyAiIiwKCQkJCXR5cGUgPSBtYXRjaFsyXSwKCQkJCWNoZWNr
ID0gbWF0Y2hbNF07CgoJCQlyZXR1cm4gcmVzdWx0ID09IG51bGwgPwoJCQkJdHlw
ZSA9PT0gIiE9IiA6CgkJCQkhdHlwZSAmJiBTaXp6bGUuYXR0ciA/CgkJCQlyZXN1
bHQgIT0gbnVsbCA6CgkJCQl0eXBlID09PSAiPSIgPwoJCQkJdmFsdWUgPT09IGNo
ZWNrIDoKCQkJCXR5cGUgPT09ICIqPSIgPwoJCQkJdmFsdWUuaW5kZXhPZihjaGVj
aykgPj0gMCA6CgkJCQl0eXBlID09PSAifj0iID8KCQkJCSgiICIgKyB2YWx1ZSAr
ICIgIikuaW5kZXhPZihjaGVjaykgPj0gMCA6CgkJCQkhY2hlY2sgPwoJCQkJdmFs
dWUgJiYgcmVzdWx0ICE9PSBmYWxzZSA6CgkJCQl0eXBlID09PSAiIT0iID8KCQkJ
CXZhbHVlICE9PSBjaGVjayA6CgkJCQl0eXBlID09PSAiXj0iID8KCQkJCXZhbHVl
LmluZGV4T2YoY2hlY2spID09PSAwIDoKCQkJCXR5cGUgPT09ICIkPSIgPwoJCQkJ
dmFsdWUuc3Vic3RyKHZhbHVlLmxlbmd0aCAtIGNoZWNrLmxlbmd0aCkgPT09IGNo
ZWNrIDoKCQkJCXR5cGUgPT09ICJ8PSIgPwoJCQkJdmFsdWUgPT09IGNoZWNrIHx8
IHZhbHVlLnN1YnN0cigwLCBjaGVjay5sZW5ndGggKyAxKSA9PT0gY2hlY2sgKyAi
LSIgOgoJCQkJZmFsc2U7CgkJfSwKCgkJUE9TOiBmdW5jdGlvbiggZWxlbSwgbWF0
Y2gsIGksIGFycmF5ICkgewoJCQl2YXIgbmFtZSA9IG1hdGNoWzJdLAoJCQkJZmls
dGVyID0gRXhwci5zZXRGaWx0ZXJzWyBuYW1lIF07CgoJCQlpZiAoIGZpbHRlciAp
IHsKCQkJCXJldHVybiBmaWx0ZXIoIGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwoJ
CQl9CgkJfQoJfQp9OwoKdmFyIG9yaWdQT1MgPSBFeHByLm1hdGNoLlBPUywKCWZl
c2NhcGUgPSBmdW5jdGlvbihhbGwsIG51bSl7CgkJcmV0dXJuICJcXCIgKyAobnVt
IC0gMCArIDEpOwoJfTsKCmZvciAoIHZhciB0eXBlIGluIEV4cHIubWF0Y2ggKSB7
CglFeHByLm1hdGNoWyB0eXBlIF0gPSBuZXcgUmVnRXhwKCBFeHByLm1hdGNoWyB0
eXBlIF0uc291cmNlICsgKC8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJj
ZSkgKTsKCUV4cHIubGVmdE1hdGNoWyB0eXBlIF0gPSBuZXcgUmVnRXhwKCAvKF4o
PzoufFxyfFxuKSo/KS8uc291cmNlICsgRXhwci5tYXRjaFsgdHlwZSBdLnNvdXJj
ZS5yZXBsYWNlKC9cXChcZCspL2csIGZlc2NhcGUpICk7Cn0KCnZhciBtYWtlQXJy
YXkgPSBmdW5jdGlvbiggYXJyYXksIHJlc3VsdHMgKSB7CglhcnJheSA9IEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKCBhcnJheSwgMCApOwoKCWlmICggcmVzdWx0
cyApIHsKCQlyZXN1bHRzLnB1c2guYXBwbHkoIHJlc3VsdHMsIGFycmF5ICk7CgkJ
cmV0dXJuIHJlc3VsdHM7Cgl9CgkKCXJldHVybiBhcnJheTsKfTsKCi8vIFBlcmZv
cm0gYSBzaW1wbGUgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRoZSBicm93c2VyIGlz
IGNhcGFibGUgb2YKLy8gY29udmVydGluZyBhIE5vZGVMaXN0IHRvIGFuIGFycmF5
IHVzaW5nIGJ1aWx0aW4gbWV0aG9kcy4KLy8gQWxzbyB2ZXJpZmllcyB0aGF0IHRo
ZSByZXR1cm5lZCBhcnJheSBob2xkcyBET00gbm9kZXMKLy8gKHdoaWNoIGlzIG5v
dCB0aGUgY2FzZSBpbiB0aGUgQmxhY2tiZXJyeSBicm93c2VyKQp0cnkgewoJQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5jaGlsZE5vZGVzLCAwIClbMF0ubm9kZVR5cGU7CgovLyBQcm92aWRlIGEgZmFs
bGJhY2sgbWV0aG9kIGlmIGl0IGRvZXMgbm90IHdvcmsKfSBjYXRjaCggZSApIHsK
CW1ha2VBcnJheSA9IGZ1bmN0aW9uKCBhcnJheSwgcmVzdWx0cyApIHsKCQl2YXIg
aSA9IDAsCgkJCXJldCA9IHJlc3VsdHMgfHwgW107CgoJCWlmICggdG9TdHJpbmcu
Y2FsbChhcnJheSkgPT09ICJbb2JqZWN0IEFycmF5XSIgKSB7CgkJCUFycmF5LnBy
b3RvdHlwZS5wdXNoLmFwcGx5KCByZXQsIGFycmF5ICk7CgoJCX0gZWxzZSB7CgkJ
CWlmICggdHlwZW9mIGFycmF5Lmxlbmd0aCA9PT0gIm51bWJlciIgKSB7CgkJCQlm
b3IgKCB2YXIgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKCQkJCQly
ZXQucHVzaCggYXJyYXlbaV0gKTsKCQkJCX0KCgkJCX0gZWxzZSB7CgkJCQlmb3Ig
KCA7IGFycmF5W2ldOyBpKysgKSB7CgkJCQkJcmV0LnB1c2goIGFycmF5W2ldICk7
CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiByZXQ7Cgl9Owp9Cgp2YXIgc29ydE9y
ZGVyLCBzaWJsaW5nQ2hlY2s7CgppZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApIHsKCXNvcnRPcmRlciA9IGZ1bmN0
aW9uKCBhLCBiICkgewoJCWlmICggYSA9PT0gYiApIHsKCQkJaGFzRHVwbGljYXRl
ID0gdHJ1ZTsKCQkJcmV0dXJuIDA7CgkJfQoKCQlpZiAoICFhLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICkgewoJ
CQlyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IC0xIDogMTsKCQl9
CgoJCXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpICYgNCA/IC0x
IDogMTsKCX07Cgp9IGVsc2UgewoJc29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIg
KSB7CgkJLy8gVGhlIG5vZGVzIGFyZSBpZGVudGljYWwsIHdlIGNhbiBleGl0IGVh
cmx5CgkJaWYgKCBhID09PSBiICkgewoJCQloYXNEdXBsaWNhdGUgPSB0cnVlOwoJ
CQlyZXR1cm4gMDsKCgkJLy8gRmFsbGJhY2sgdG8gdXNpbmcgc291cmNlSW5kZXgg
KGluIElFKSBpZiBpdCdzIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzCgkJfSBlbHNl
IGlmICggYS5zb3VyY2VJbmRleCAmJiBiLnNvdXJjZUluZGV4ICkgewoJCQlyZXR1
cm4gYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7CgkJfQoKCQl2YXIgYWws
IGJsLAoJCQlhcCA9IFtdLAoJCQlicCA9IFtdLAoJCQlhdXAgPSBhLnBhcmVudE5v
ZGUsCgkJCWJ1cCA9IGIucGFyZW50Tm9kZSwKCQkJY3VyID0gYXVwOwoKCQkvLyBJ
ZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzIChvciBpZGVudGljYWwpIHdlIGNhbiBk
byBhIHF1aWNrIGNoZWNrCgkJaWYgKCBhdXAgPT09IGJ1cCApIHsKCQkJcmV0dXJu
IHNpYmxpbmdDaGVjayggYSwgYiApOwoKCQkvLyBJZiBubyBwYXJlbnRzIHdlcmUg
Zm91bmQgdGhlbiB0aGUgbm9kZXMgYXJlIGRpc2Nvbm5lY3RlZAoJCX0gZWxzZSBp
ZiAoICFhdXAgKSB7CgkJCXJldHVybiAtMTsKCgkJfSBlbHNlIGlmICggIWJ1cCAp
IHsKCQkJcmV0dXJuIDE7CgkJfQoKCQkvLyBPdGhlcndpc2UgdGhleSdyZSBzb21l
d2hlcmUgZWxzZSBpbiB0aGUgdHJlZSBzbyB3ZSBuZWVkCgkJLy8gdG8gYnVpbGQg
dXAgYSBmdWxsIGxpc3Qgb2YgdGhlIHBhcmVudE5vZGVzIGZvciBjb21wYXJpc29u
CgkJd2hpbGUgKCBjdXIgKSB7CgkJCWFwLnVuc2hpZnQoIGN1ciApOwoJCQljdXIg
PSBjdXIucGFyZW50Tm9kZTsKCQl9CgoJCWN1ciA9IGJ1cDsKCgkJd2hpbGUgKCBj
dXIgKSB7CgkJCWJwLnVuc2hpZnQoIGN1ciApOwoJCQljdXIgPSBjdXIucGFyZW50
Tm9kZTsKCQl9CgoJCWFsID0gYXAubGVuZ3RoOwoJCWJsID0gYnAubGVuZ3RoOwoK
CQkvLyBTdGFydCB3YWxraW5nIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBk
aXNjcmVwYW5jeQoJCWZvciAoIHZhciBpID0gMDsgaSA8IGFsICYmIGkgPCBibDsg
aSsrICkgewoJCQlpZiAoIGFwW2ldICE9PSBicFtpXSApIHsKCQkJCXJldHVybiBz
aWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApOwoJCQl9CgkJfQoKCQkvLyBXZSBl
bmRlZCBzb21lcGxhY2UgdXAgdGhlIHRyZWUgc28gZG8gYSBzaWJsaW5nIGNoZWNr
CgkJcmV0dXJuIGkgPT09IGFsID8KCQkJc2libGluZ0NoZWNrKCBhLCBicFtpXSwg
LTEgKSA6CgkJCXNpYmxpbmdDaGVjayggYXBbaV0sIGIsIDEgKTsKCX07CgoJc2li
bGluZ0NoZWNrID0gZnVuY3Rpb24oIGEsIGIsIHJldCApIHsKCQlpZiAoIGEgPT09
IGIgKSB7CgkJCXJldHVybiByZXQ7CgkJfQoKCQl2YXIgY3VyID0gYS5uZXh0U2li
bGluZzsKCgkJd2hpbGUgKCBjdXIgKSB7CgkJCWlmICggY3VyID09PSBiICkgewoJ
CQkJcmV0dXJuIC0xOwoJCQl9CgoJCQljdXIgPSBjdXIubmV4dFNpYmxpbmc7CgkJ
fQoKCQlyZXR1cm4gMTsKCX07Cn0KCi8vIENoZWNrIHRvIHNlZSBpZiB0aGUgYnJv
d3NlciByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUgd2hlbgovLyBxdWVyeWluZyBi
eSBnZXRFbGVtZW50QnlJZCAoYW5kIHByb3ZpZGUgYSB3b3JrYXJvdW5kKQooZnVu
Y3Rpb24oKXsKCS8vIFdlJ3JlIGdvaW5nIHRvIGluamVjdCBhIGZha2UgaW5wdXQg
ZWxlbWVudCB3aXRoIGEgc3BlY2lmaWVkIG5hbWUKCXZhciBmb3JtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCgkJaWQgPSAic2NyaXB0IiArIChuZXcg
RGF0ZSgpKS5nZXRUaW1lKCksCgkJcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudDsKCglmb3JtLmlubmVySFRNTCA9ICI8YSBuYW1lPSciICsgaWQgKyAiJy8+
IjsKCgkvLyBJbmplY3QgaXQgaW50byB0aGUgcm9vdCBlbGVtZW50LCBjaGVjayBp
dHMgc3RhdHVzLCBhbmQgcmVtb3ZlIGl0IHF1aWNrbHkKCXJvb3QuaW5zZXJ0QmVm
b3JlKCBmb3JtLCByb290LmZpcnN0Q2hpbGQgKTsKCgkvLyBUaGUgd29ya2Fyb3Vu
ZCBoYXMgdG8gZG8gYWRkaXRpb25hbCBjaGVja3MgYWZ0ZXIgYSBnZXRFbGVtZW50
QnlJZAoJLy8gV2hpY2ggc2xvd3MgdGhpbmdzIGRvd24gZm9yIG90aGVyIGJyb3dz
ZXJzIChoZW5jZSB0aGUgYnJhbmNoaW5nKQoJaWYgKCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCggaWQgKSApIHsKCQlFeHByLmZpbmQuSUQgPSBmdW5jdGlvbiggbWF0
Y2gsIGNvbnRleHQsIGlzWE1MICkgewoJCQlpZiAoIHR5cGVvZiBjb250ZXh0Lmdl
dEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiAhaXNYTUwgKSB7CgkJCQl2
YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwoKCQkJCXJl
dHVybiBtID8KCQkJCQltLmlkID09PSBtYXRjaFsxXSB8fCB0eXBlb2YgbS5nZXRB
dHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJiBtLmdldEF0dHJpYnV0ZU5v
ZGUoImlkIikubm9kZVZhbHVlID09PSBtYXRjaFsxXSA/CgkJCQkJCVttXSA6CgkJ
CQkJCXVuZGVmaW5lZCA6CgkJCQkJW107CgkJCX0KCQl9OwoKCQlFeHByLmZpbHRl
ci5JRCA9IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKCQkJdmFyIG5vZGUgPSB0
eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAidW5kZWZpbmVkIiAmJiBl
bGVtLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CgoJCQlyZXR1cm4gZWxlbS5ub2Rl
VHlwZSA9PT0gMSAmJiBub2RlICYmIG5vZGUubm9kZVZhbHVlID09PSBtYXRjaDsK
CQl9OwoJfQoKCXJvb3QucmVtb3ZlQ2hpbGQoIGZvcm0gKTsKCgkvLyByZWxlYXNl
IG1lbW9yeSBpbiBJRQoJcm9vdCA9IGZvcm0gPSBudWxsOwp9KSgpOwoKKGZ1bmN0
aW9uKCl7CgkvLyBDaGVjayB0byBzZWUgaWYgdGhlIGJyb3dzZXIgcmV0dXJucyBv
bmx5IGVsZW1lbnRzCgkvLyB3aGVuIGRvaW5nIGdldEVsZW1lbnRzQnlUYWdOYW1l
KCIqIikKCgkvLyBDcmVhdGUgYSBmYWtlIGVsZW1lbnQKCXZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKCWRpdi5hcHBlbmRDaGlsZCggZG9j
dW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKCgkvLyBNYWtlIHN1cmUgbm8gY29t
bWVudHMgYXJlIGZvdW5kCglpZiAoIGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
KiIpLmxlbmd0aCA+IDAgKSB7CgkJRXhwci5maW5kLlRBRyA9IGZ1bmN0aW9uKCBt
YXRjaCwgY29udGV4dCApIHsKCQkJdmFyIHJlc3VsdHMgPSBjb250ZXh0LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCBtYXRjaFsxXSApOwoKCQkJLy8gRmlsdGVyIG91dCBw
b3NzaWJsZSBjb21tZW50cwoJCQlpZiAoIG1hdGNoWzFdID09PSAiKiIgKSB7CgkJ
CQl2YXIgdG1wID0gW107CgoJCQkJZm9yICggdmFyIGkgPSAwOyByZXN1bHRzW2ld
OyBpKysgKSB7CgkJCQkJaWYgKCByZXN1bHRzW2ldLm5vZGVUeXBlID09PSAxICkg
ewoJCQkJCQl0bXAucHVzaCggcmVzdWx0c1tpXSApOwoJCQkJCX0KCQkJCX0KCgkJ
CQlyZXN1bHRzID0gdG1wOwoJCQl9CgoJCQlyZXR1cm4gcmVzdWx0czsKCQl9OwoJ
fQoKCS8vIENoZWNrIHRvIHNlZSBpZiBhbiBhdHRyaWJ1dGUgcmV0dXJucyBub3Jt
YWxpemVkIGhyZWYgYXR0cmlidXRlcwoJZGl2LmlubmVySFRNTCA9ICI8YSBocmVm
PScjJz48L2E+IjsKCglpZiAoIGRpdi5maXJzdENoaWxkICYmIHR5cGVvZiBkaXYu
Zmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRlZmluZWQiICYmCgkJCWRp
di5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpICE9PSAiIyIgKSB7CgoJ
CUV4cHIuYXR0ckhhbmRsZS5ocmVmID0gZnVuY3Rpb24oIGVsZW0gKSB7CgkJCXJl
dHVybiBlbGVtLmdldEF0dHJpYnV0ZSggImhyZWYiLCAyICk7CgkJfTsKCX0KCgkv
LyByZWxlYXNlIG1lbW9yeSBpbiBJRQoJZGl2ID0gbnVsbDsKfSkoKTsKCmlmICgg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApIHsKCShmdW5jdGlvbigpewoJCXZh
ciBvbGRTaXp6bGUgPSBTaXp6bGUsCgkJCWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpLAoJCQlpZCA9ICJfX3NpenpsZV9fIjsKCgkJZGl2LmlubmVy
SFRNTCA9ICI8cCBjbGFzcz0nVEVTVCc+PC9wPiI7CgoJCS8vIFNhZmFyaSBjYW4n
dCBoYW5kbGUgdXBwZXJjYXNlIG9yIHVuaWNvZGUgY2hhcmFjdGVycyB3aGVuCgkJ
Ly8gaW4gcXVpcmtzIG1vZGUuCgkJaWYgKCBkaXYucXVlcnlTZWxlY3RvckFsbCAm
JiBkaXYucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGggPT09IDAgKSB7
CgkJCXJldHVybjsKCQl9CgkKCQlTaXp6bGUgPSBmdW5jdGlvbiggcXVlcnksIGNv
bnRleHQsIGV4dHJhLCBzZWVkICkgewoJCQljb250ZXh0ID0gY29udGV4dCB8fCBk
b2N1bWVudDsKCgkJCS8vIE9ubHkgdXNlIHF1ZXJ5U2VsZWN0b3JBbGwgb24gbm9u
LVhNTCBkb2N1bWVudHMKCQkJLy8gKElEIHNlbGVjdG9ycyBkb24ndCB3b3JrIGlu
IG5vbi1IVE1MIGRvY3VtZW50cykKCQkJaWYgKCAhc2VlZCAmJiAhU2l6emxlLmlz
WE1MKGNvbnRleHQpICkgewoJCQkJLy8gU2VlIGlmIHdlIGZpbmQgYSBzZWxlY3Rv
ciB0byBzcGVlZCB1cAoJCQkJdmFyIG1hdGNoID0gL14oXHcrJCl8XlwuKFtcd1wt
XSskKXxeIyhbXHdcLV0rJCkvLmV4ZWMoIHF1ZXJ5ICk7CgkJCQkKCQkJCWlmICgg
bWF0Y2ggJiYgKGNvbnRleHQubm9kZVR5cGUgPT09IDEgfHwgY29udGV4dC5ub2Rl
VHlwZSA9PT0gOSkgKSB7CgkJCQkJLy8gU3BlZWQtdXA6IFNpenpsZSgiVEFHIikK
CQkJCQlpZiAoIG1hdGNoWzFdICkgewoJCQkJCQlyZXR1cm4gbWFrZUFycmF5KCBj
b250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBxdWVyeSApLCBleHRyYSApOwoJ
CQkJCQoJCQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoIi5DTEFTUyIpCgkJCQkJfSBl
bHNlIGlmICggbWF0Y2hbMl0gJiYgRXhwci5maW5kLkNMQVNTICYmIGNvbnRleHQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHsKCQkJCQkJcmV0dXJuIG1ha2VBcnJh
eSggY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtYXRjaFsyXSApLCBl
eHRyYSApOwoJCQkJCX0KCQkJCX0KCQkJCQoJCQkJaWYgKCBjb250ZXh0Lm5vZGVU
eXBlID09PSA5ICkgewoJCQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoImJvZHkiKQoJ
CQkJCS8vIFRoZSBib2R5IGVsZW1lbnQgb25seSBleGlzdHMgb25jZSwgb3B0aW1p
emUgZmluZGluZyBpdAoJCQkJCWlmICggcXVlcnkgPT09ICJib2R5IiAmJiBjb250
ZXh0LmJvZHkgKSB7CgkJCQkJCXJldHVybiBtYWtlQXJyYXkoIFsgY29udGV4dC5i
b2R5IF0sIGV4dHJhICk7CgkJCQkJCQoJCQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUo
IiNJRCIpCgkJCQkJfSBlbHNlIGlmICggbWF0Y2ggJiYgbWF0Y2hbM10gKSB7CgkJ
CQkJCXZhciBlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbM10g
KTsKCgkJCQkJCS8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFj
a2JlcnJ5IDQuNiByZXR1cm5zCgkJCQkJCS8vIG5vZGVzIHRoYXQgYXJlIG5vIGxv
bmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjMKCQkJCQkJaWYgKCBlbGVtICYmIGVs
ZW0ucGFyZW50Tm9kZSApIHsKCQkJCQkJCS8vIEhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSBJRSBhbmQgT3BlcmEgcmV0dXJuIGl0ZW1zCgkJCQkJCQkvLyBieSBuYW1lIGlu
c3RlYWQgb2YgSUQKCQkJCQkJCWlmICggZWxlbS5pZCA9PT0gbWF0Y2hbM10gKSB7
CgkJCQkJCQkJcmV0dXJuIG1ha2VBcnJheSggWyBlbGVtIF0sIGV4dHJhICk7CgkJ
CQkJCQl9CgkJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXJldHVybiBtYWtl
QXJyYXkoIFtdLCBleHRyYSApOwoJCQkJCQl9CgkJCQkJfQoJCQkJCQoJCQkJCXRy
eSB7CgkJCQkJCXJldHVybiBtYWtlQXJyYXkoIGNvbnRleHQucXVlcnlTZWxlY3Rv
ckFsbChxdWVyeSksIGV4dHJhICk7CgkJCQkJfSBjYXRjaChxc2FFcnJvcikge30K
CgkJCQkvLyBxU0Egd29ya3Mgc3RyYW5nZWx5IG9uIEVsZW1lbnQtcm9vdGVkIHF1
ZXJpZXMKCQkJCS8vIFdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5IHNwZWNpZnlp
bmcgYW4gZXh0cmEgSUQgb24gdGhlIHJvb3QKCQkJCS8vIGFuZCB3b3JraW5nIHVw
IGZyb20gdGhlcmUgKFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGUgdGVj
aG5pcXVlKQoJCQkJLy8gSUUgOCBkb2Vzbid0IHdvcmsgb24gb2JqZWN0IGVsZW1l
bnRzCgkJCQl9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVUeXBlID09PSAxICYmIGNv
bnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gIm9iamVjdCIgKSB7CgkJ
CQkJdmFyIG9sZENvbnRleHQgPSBjb250ZXh0LAoJCQkJCQlvbGQgPSBjb250ZXh0
LmdldEF0dHJpYnV0ZSggImlkIiApLAoJCQkJCQluaWQgPSBvbGQgfHwgaWQsCgkJ
CQkJCWhhc1BhcmVudCA9IGNvbnRleHQucGFyZW50Tm9kZSwKCQkJCQkJcmVsYXRp
dmVIaWVyYXJjaHlTZWxlY3RvciA9IC9eXHMqWyt+XS8udGVzdCggcXVlcnkgKTsK
CgkJCQkJaWYgKCAhb2xkICkgewoJCQkJCQljb250ZXh0LnNldEF0dHJpYnV0ZSgg
ImlkIiwgbmlkICk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJbmlkID0gbmlkLnJlcGxh
Y2UoIC8nL2csICJcXCQmIiApOwoJCQkJCX0KCQkJCQlpZiAoIHJlbGF0aXZlSGll
cmFyY2h5U2VsZWN0b3IgJiYgaGFzUGFyZW50ICkgewoJCQkJCQljb250ZXh0ID0g
Y29udGV4dC5wYXJlbnROb2RlOwoJCQkJCX0KCgkJCQkJdHJ5IHsKCQkJCQkJaWYg
KCAhcmVsYXRpdmVIaWVyYXJjaHlTZWxlY3RvciB8fCBoYXNQYXJlbnQgKSB7CgkJ
CQkJCQlyZXR1cm4gbWFrZUFycmF5KCBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwo
ICJbaWQ9JyIgKyBuaWQgKyAiJ10gIiArIHF1ZXJ5ICksIGV4dHJhICk7CgkJCQkJ
CX0KCgkJCQkJfSBjYXRjaChwc2V1ZG9FcnJvcikgewoJCQkJCX0gZmluYWxseSB7
CgkJCQkJCWlmICggIW9sZCApIHsKCQkJCQkJCW9sZENvbnRleHQucmVtb3ZlQXR0
cmlidXRlKCAiaWQiICk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkKCQkJ
cmV0dXJuIG9sZFNpenpsZShxdWVyeSwgY29udGV4dCwgZXh0cmEsIHNlZWQpOwoJ
CX07CgoJCWZvciAoIHZhciBwcm9wIGluIG9sZFNpenpsZSApIHsKCQkJU2l6emxl
WyBwcm9wIF0gPSBvbGRTaXp6bGVbIHByb3AgXTsKCQl9CgoJCS8vIHJlbGVhc2Ug
bWVtb3J5IGluIElFCgkJZGl2ID0gbnVsbDsKCX0pKCk7Cn0KCihmdW5jdGlvbigp
ewoJdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCgkJbWF0Y2hl
cyA9IGh0bWwubWF0Y2hlc1NlbGVjdG9yIHx8IGh0bWwubW96TWF0Y2hlc1NlbGVj
dG9yIHx8IGh0bWwud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGh0bWwubXNNYXRj
aGVzU2VsZWN0b3I7CgoJaWYgKCBtYXRjaGVzICkgewoJCS8vIENoZWNrIHRvIHNl
ZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvcgoJCS8vIG9u
IGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkgZmFpbHMgdGhpcykKCQl2YXIgZGlz
Y29ubmVjdGVkTWF0Y2ggPSAhbWF0Y2hlcy5jYWxsKCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCAiZGl2IiApLCAiZGl2IiApLAoJCQlwc2V1ZG9Xb3JrcyA9IGZhbHNl
OwoKCQl0cnkgewoJCQkvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0
aW9uCgkJCS8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGlu
c3RlYWQKCQkJbWF0Y2hlcy5jYWxsKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQs
ICJbdGVzdCE9JyddOnNpenpsZSIgKTsKCQoJCX0gY2F0Y2goIHBzZXVkb0Vycm9y
ICkgewoJCQlwc2V1ZG9Xb3JrcyA9IHRydWU7CgkJfQoKCQlTaXp6bGUubWF0Y2hl
c1NlbGVjdG9yID0gZnVuY3Rpb24oIG5vZGUsIGV4cHIgKSB7CgkJCS8vIE1ha2Ug
c3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAoJCQlleHBy
ID0gZXhwci5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCAiPSckMSdd
Iik7CgoJCQlpZiAoICFTaXp6bGUuaXNYTUwoIG5vZGUgKSApIHsKCQkJCXRyeSB7
IAoJCQkJCWlmICggcHNldWRvV29ya3MgfHwgIUV4cHIubWF0Y2guUFNFVURPLnRl
c3QoIGV4cHIgKSAmJiAhLyE9Ly50ZXN0KCBleHByICkgKSB7CgkJCQkJCXZhciBy
ZXQgPSBtYXRjaGVzLmNhbGwoIG5vZGUsIGV4cHIgKTsKCgkJCQkJCS8vIElFIDkn
cyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQg
bm9kZXMKCQkJCQkJaWYgKCByZXQgfHwgIWRpc2Nvbm5lY3RlZE1hdGNoIHx8CgkJ
CQkJCQkJLy8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRv
IGJlIGluIGEgZG9jdW1lbnQKCQkJCQkJCQkvLyBmcmFnbWVudCBpbiBJRSA5LCBz
byBjaGVjayBmb3IgdGhhdAoJCQkJCQkJCW5vZGUuZG9jdW1lbnQgJiYgbm9kZS5k
b2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7CgkJCQkJCQlyZXR1cm4gcmV0OwoJ
CQkJCQl9CgkJCQkJfQoJCQkJfSBjYXRjaChlKSB7fQoJCQl9CgoJCQlyZXR1cm4g
U2l6emxlKGV4cHIsIG51bGwsIG51bGwsIFtub2RlXSkubGVuZ3RoID4gMDsKCQl9
OwoJfQp9KSgpOwoKKGZ1bmN0aW9uKCl7Cgl2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CgoJZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNsYXNz
PSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7CgoJLy8g
T3BlcmEgY2FuJ3QgZmluZCBhIHNlY29uZCBjbGFzc25hbWUgKGluIDkuNikKCS8v
IEFsc28sIG1ha2Ugc3VyZSB0aGF0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgYWN0
dWFsbHkgZXhpc3RzCglpZiAoICFkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB8
fCBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCA9PT0gMCAp
IHsKCQlyZXR1cm47Cgl9CgoJLy8gU2FmYXJpIGNhY2hlcyBjbGFzcyBhdHRyaWJ1
dGVzLCBkb2Vzbid0IGNhdGNoIGNoYW5nZXMgKGluIDMuMikKCWRpdi5sYXN0Q2hp
bGQuY2xhc3NOYW1lID0gImUiOwoKCWlmICggZGl2LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoImUiKS5sZW5ndGggPT09IDEgKSB7CgkJcmV0dXJuOwoJfQoJCglFeHBy
Lm9yZGVyLnNwbGljZSgxLCAwLCAiQ0xBU1MiKTsKCUV4cHIuZmluZC5DTEFTUyA9
IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCwgaXNYTUwgKSB7CgkJaWYgKCB0eXBl
b2YgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICE9PSAidW5kZWZpbmVk
IiAmJiAhaXNYTUwgKSB7CgkJCXJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUobWF0Y2hbMV0pOwoJCX0KCX07CgoJLy8gcmVsZWFzZSBtZW1vcnkg
aW4gSUUKCWRpdiA9IG51bGw7Cn0pKCk7CgpmdW5jdGlvbiBkaXJOb2RlQ2hlY2so
IGRpciwgY3VyLCBkb25lTmFtZSwgY2hlY2tTZXQsIG5vZGVDaGVjaywgaXNYTUwg
KSB7Cglmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7IGkgPCBs
OyBpKysgKSB7CgkJdmFyIGVsZW0gPSBjaGVja1NldFtpXTsKCgkJaWYgKCBlbGVt
ICkgewoJCQl2YXIgbWF0Y2ggPSBmYWxzZTsKCgkJCWVsZW0gPSBlbGVtW2Rpcl07
CgoJCQl3aGlsZSAoIGVsZW0gKSB7CgkJCQlpZiAoIGVsZW1bIGV4cGFuZG8gXSA9
PT0gZG9uZU5hbWUgKSB7CgkJCQkJbWF0Y2ggPSBjaGVja1NldFtlbGVtLnNpenNl
dF07CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09
PSAxICYmICFpc1hNTCApewoJCQkJCWVsZW1bIGV4cGFuZG8gXSA9IGRvbmVOYW1l
OwoJCQkJCWVsZW0uc2l6c2V0ID0gaTsKCQkJCX0KCgkJCQlpZiAoIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gY3VyICkgewoJCQkJCW1hdGNoID0gZWxl
bTsKCQkJCQlicmVhazsKCQkJCX0KCgkJCQllbGVtID0gZWxlbVtkaXJdOwoJCQl9
CgoJCQljaGVja1NldFtpXSA9IG1hdGNoOwoJCX0KCX0KfQoKZnVuY3Rpb24gZGly
Q2hlY2soIGRpciwgY3VyLCBkb25lTmFtZSwgY2hlY2tTZXQsIG5vZGVDaGVjaywg
aXNYTUwgKSB7Cglmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7
IGkgPCBsOyBpKysgKSB7CgkJdmFyIGVsZW0gPSBjaGVja1NldFtpXTsKCgkJaWYg
KCBlbGVtICkgewoJCQl2YXIgbWF0Y2ggPSBmYWxzZTsKCQkJCgkJCWVsZW0gPSBl
bGVtW2Rpcl07CgoJCQl3aGlsZSAoIGVsZW0gKSB7CgkJCQlpZiAoIGVsZW1bIGV4
cGFuZG8gXSA9PT0gZG9uZU5hbWUgKSB7CgkJCQkJbWF0Y2ggPSBjaGVja1NldFtl
bGVtLnNpenNldF07CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJaWYgKCBlbGVtLm5v
ZGVUeXBlID09PSAxICkgewoJCQkJCWlmICggIWlzWE1MICkgewoJCQkJCQllbGVt
WyBleHBhbmRvIF0gPSBkb25lTmFtZTsKCQkJCQkJZWxlbS5zaXpzZXQgPSBpOwoJ
CQkJCX0KCgkJCQkJaWYgKCB0eXBlb2YgY3VyICE9PSAic3RyaW5nIiApIHsKCQkJ
CQkJaWYgKCBlbGVtID09PSBjdXIgKSB7CgkJCQkJCQltYXRjaCA9IHRydWU7CgkJ
CQkJCQlicmVhazsKCQkJCQkJfQoKCQkJCQl9IGVsc2UgaWYgKCBTaXp6bGUuZmls
dGVyKCBjdXIsIFtlbGVtXSApLmxlbmd0aCA+IDAgKSB7CgkJCQkJCW1hdGNoID0g
ZWxlbTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoKCQkJCWVsZW0gPSBlbGVt
W2Rpcl07CgkJCX0KCgkJCWNoZWNrU2V0W2ldID0gbWF0Y2g7CgkJfQoJfQp9Cgpp
ZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyApIHsKCVNpenps
ZS5jb250YWlucyA9IGZ1bmN0aW9uKCBhLCBiICkgewoJCXJldHVybiBhICE9PSBi
ICYmIChhLmNvbnRhaW5zID8gYS5jb250YWlucyhiKSA6IHRydWUpOwoJfTsKCn0g
ZWxzZSBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbiApIHsKCVNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBhLCBi
ICkgewoJCXJldHVybiAhIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpICYg
MTYpOwoJfTsKCn0gZWxzZSB7CglTaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbigp
IHsKCQlyZXR1cm4gZmFsc2U7Cgl9Owp9CgpTaXp6bGUuaXNYTUwgPSBmdW5jdGlv
biggZWxlbSApIHsKCS8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3Ig
Y2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3QKCS8vIChzdWNoIGFzIGxv
YWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKSAKCXZhciBkb2N1bWVudEVsZW1l
bnQgPSAoZWxlbSA/IGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtIDogMCkuZG9j
dW1lbnRFbGVtZW50OwoKCXJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVu
dEVsZW1lbnQubm9kZU5hbWUgIT09ICJIVE1MIiA6IGZhbHNlOwp9OwoKdmFyIHBv
c1Byb2Nlc3MgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHNlZWQgKSB7
Cgl2YXIgbWF0Y2gsCgkJdG1wU2V0ID0gW10sCgkJbGF0ZXIgPSAiIiwKCQlyb290
ID0gY29udGV4dC5ub2RlVHlwZSA/IFtjb250ZXh0XSA6IGNvbnRleHQ7CgoJLy8g
UG9zaXRpb24gc2VsZWN0b3JzIG11c3QgYmUgZG9uZSBhZnRlciB0aGUgZmlsdGVy
CgkvLyBBbmQgc28gbXVzdCA6bm90KHBvc2l0aW9uYWwpIHNvIHdlIG1vdmUgYWxs
IFBTRVVET3MgdG8gdGhlIGVuZAoJd2hpbGUgKCAobWF0Y2ggPSBFeHByLm1hdGNo
LlBTRVVETy5leGVjKCBzZWxlY3RvciApKSApIHsKCQlsYXRlciArPSBtYXRjaFsw
XTsKCQlzZWxlY3RvciA9IHNlbGVjdG9yLnJlcGxhY2UoIEV4cHIubWF0Y2guUFNF
VURPLCAiIiApOwoJfQoKCXNlbGVjdG9yID0gRXhwci5yZWxhdGl2ZVtzZWxlY3Rv
cl0gPyBzZWxlY3RvciArICIqIiA6IHNlbGVjdG9yOwoKCWZvciAoIHZhciBpID0g
MCwgbCA9IHJvb3QubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCVNpenpsZSggc2Vs
ZWN0b3IsIHJvb3RbaV0sIHRtcFNldCwgc2VlZCApOwoJfQoKCXJldHVybiBTaXp6
bGUuZmlsdGVyKCBsYXRlciwgdG1wU2V0ICk7Cn07CgovLyBFWFBPU0UKLy8gT3Zl
cnJpZGUgc2l6emxlIGF0dHJpYnV0ZSByZXRyaWV2YWwKU2l6emxlLmF0dHIgPSBq
UXVlcnkuYXR0cjsKU2l6emxlLnNlbGVjdG9ycy5hdHRyTWFwID0ge307CmpRdWVy
eS5maW5kID0gU2l6emxlOwpqUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7
CmpRdWVyeS5leHByWyI6Il0gPSBqUXVlcnkuZXhwci5maWx0ZXJzOwpqUXVlcnku
dW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7CmpRdWVyeS50ZXh0ID0gU2l6emxl
LmdldFRleHQ7CmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDsKalF1ZXJ5
LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zOwoKCn0pKCk7CgoKdmFyIHJ1bnRp
bCA9IC9VbnRpbCQvLAoJcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXZV
bnRpbHxwcmV2QWxsKS8sCgkvLyBOb3RlOiBUaGlzIFJlZ0V4cCBzaG91bGQgYmUg
aW1wcm92ZWQsIG9yIGxpa2VseSBwdWxsZWQgZnJvbSBTaXp6bGUKCXJtdWx0aXNl
bGVjdG9yID0gLywvLAoJaXNTaW1wbGUgPSAvXi5bXjojXFtcLixdKiQvLAoJc2xp
Y2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UsCglQT1MgPSBqUXVlcnkuZXhwci5t
YXRjaC5QT1MsCgkvLyBtZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVu
aXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldAoJZ3VhcmFu
dGVlZFVuaXF1ZSA9IHsKCQljaGlsZHJlbjogdHJ1ZSwKCQljb250ZW50czogdHJ1
ZSwKCQluZXh0OiB0cnVlLAoJCXByZXY6IHRydWUKCX07CgpqUXVlcnkuZm4uZXh0
ZW5kKHsKCWZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKCQl2YXIgc2VsZiA9
IHRoaXMsCgkJCWksIGw7CgoJCWlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAic3Ry
aW5nIiApIHsKCQkJcmV0dXJuIGpRdWVyeSggc2VsZWN0b3IgKS5maWx0ZXIoZnVu
Y3Rpb24oKSB7CgkJCQlmb3IgKCBpID0gMCwgbCA9IHNlbGYubGVuZ3RoOyBpIDwg
bDsgaSsrICkgewoJCQkJCWlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0s
IHRoaXMgKSApIHsKCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJfQoJCQkJfQoJCQl9
KTsKCQl9CgoJCXZhciByZXQgPSB0aGlzLnB1c2hTdGFjayggIiIsICJmaW5kIiwg
c2VsZWN0b3IgKSwKCQkJbGVuZ3RoLCBuLCByOwoKCQlmb3IgKCBpID0gMCwgbCA9
IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewoJCQlsZW5ndGggPSByZXQubGVu
Z3RoOwoJCQlqUXVlcnkuZmluZCggc2VsZWN0b3IsIHRoaXNbaV0sIHJldCApOwoK
CQkJaWYgKCBpID4gMCApIHsKCQkJCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXN1
bHRzIGFyZSB1bmlxdWUKCQkJCWZvciAoIG4gPSBsZW5ndGg7IG4gPCByZXQubGVu
Z3RoOyBuKysgKSB7CgkJCQkJZm9yICggciA9IDA7IHIgPCBsZW5ndGg7IHIrKyAp
IHsKCQkJCQkJaWYgKCByZXRbcl0gPT09IHJldFtuXSApIHsKCQkJCQkJCXJldC5z
cGxpY2Uobi0tLCAxKTsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJ
fQoJCQl9CgkJfQoKCQlyZXR1cm4gcmV0OwoJfSwKCgloYXM6IGZ1bmN0aW9uKCB0
YXJnZXQgKSB7CgkJdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCApOwoJCXJl
dHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsKCQkJZm9yICggdmFyIGkgPSAw
LCBsID0gdGFyZ2V0cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CgkJCQlpZiAoIGpR
dWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkgewoJCQkJCXJldHVy
biB0cnVlOwoJCQkJfQoJCQl9CgkJfSk7Cgl9LAoKCW5vdDogZnVuY3Rpb24oIHNl
bGVjdG9yICkgewoJCXJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KHRoaXMs
IHNlbGVjdG9yLCBmYWxzZSksICJub3QiLCBzZWxlY3Rvcik7Cgl9LAoKCWZpbHRl
cjogZnVuY3Rpb24oIHNlbGVjdG9yICkgewoJCXJldHVybiB0aGlzLnB1c2hTdGFj
ayggd2lubm93KHRoaXMsIHNlbGVjdG9yLCB0cnVlKSwgImZpbHRlciIsIHNlbGVj
dG9yICk7Cgl9LAoKCWlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CgkJcmV0dXJu
ICEhc2VsZWN0b3IgJiYgKCAKCQkJdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5n
IiA/CgkJCQkvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbCBzZWxlY3RvciwgY2hl
Y2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0CgkJCQkvLyBzbyAkKCJw
OmZpcnN0IikuaXMoInA6bGFzdCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRv
YyB3aXRoIHR3byAicCIuCgkJCQlQT1MudGVzdCggc2VsZWN0b3IgKSA/IAoJCQkJ
CWpRdWVyeSggc2VsZWN0b3IsIHRoaXMuY29udGV4dCApLmluZGV4KCB0aGlzWzBd
ICkgPj0gMCA6CgkJCQkJalF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIHRoaXMgKS5s
ZW5ndGggPiAwIDoKCQkJCXRoaXMuZmlsdGVyKCBzZWxlY3RvciApLmxlbmd0aCA+
IDAgKTsKCX0sCgoJY2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4
dCApIHsKCQl2YXIgcmV0ID0gW10sIGksIGwsIGN1ciA9IHRoaXNbMF07CgkJCgkJ
Ly8gQXJyYXkgKGRlcHJlY2F0ZWQgYXMgb2YgalF1ZXJ5IDEuNykKCQlpZiAoIGpR
dWVyeS5pc0FycmF5KCBzZWxlY3RvcnMgKSApIHsKCQkJdmFyIGxldmVsID0gMTsK
CgkJCXdoaWxlICggY3VyICYmIGN1ci5vd25lckRvY3VtZW50ICYmIGN1ciAhPT0g
Y29udGV4dCApIHsKCQkJCWZvciAoIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0
aDsgaSsrICkgewoKCQkJCQlpZiAoIGpRdWVyeSggY3VyICkuaXMoIHNlbGVjdG9y
c1sgaSBdICkgKSB7CgkJCQkJCXJldC5wdXNoKHsgc2VsZWN0b3I6IHNlbGVjdG9y
c1sgaSBdLCBlbGVtOiBjdXIsIGxldmVsOiBsZXZlbCB9KTsKCQkJCQl9CgkJCQl9
CgoJCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7CgkJCQlsZXZlbCsrOwoJCQl9CgoJ
CQlyZXR1cm4gcmV0OwoJCX0KCgkJLy8gU3RyaW5nCgkJdmFyIHBvcyA9IFBPUy50
ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBlb2Ygc2VsZWN0b3JzICE9PSAic3RyaW5n
IiA/CgkJCQlqUXVlcnkoIHNlbGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRl
eHQgKSA6CgkJCQkwOwoKCQlmb3IgKCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBp
IDwgbDsgaSsrICkgewoJCQljdXIgPSB0aGlzW2ldOwoKCQkJd2hpbGUgKCBjdXIg
KSB7CgkJCQlpZiAoIHBvcyA/IHBvcy5pbmRleChjdXIpID4gLTEgOiBqUXVlcnku
ZmluZC5tYXRjaGVzU2VsZWN0b3IoY3VyLCBzZWxlY3RvcnMpICkgewoJCQkJCXJl
dC5wdXNoKCBjdXIgKTsKCQkJCQlicmVhazsKCgkJCQl9IGVsc2UgewoJCQkJCWN1
ciA9IGN1ci5wYXJlbnROb2RlOwoJCQkJCWlmICggIWN1ciB8fCAhY3VyLm93bmVy
RG9jdW1lbnQgfHwgY3VyID09PSBjb250ZXh0IHx8IGN1ci5ub2RlVHlwZSA9PT0g
MTEgKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0
ID0gcmV0Lmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDsK
CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQsICJjbG9zZXN0Iiwgc2VsZWN0
b3JzICk7Cgl9LAoKCS8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxl
bWVudCB3aXRoaW4KCS8vIHRoZSBtYXRjaGVkIHNldCBvZiBlbGVtZW50cwoJaW5k
ZXg6IGZ1bmN0aW9uKCBlbGVtICkgewoKCQkvLyBObyBhcmd1bWVudCwgcmV0dXJu
IGluZGV4IGluIHBhcmVudAoJCWlmICggIWVsZW0gKSB7CgkJCXJldHVybiAoIHRo
aXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlICkgPyB0aGlzLnByZXZBbGwoKS5s
ZW5ndGggOiAtMTsKCQl9CgoJCS8vIGluZGV4IGluIHNlbGVjdG9yCgkJaWYgKCB0
eXBlb2YgZWxlbSA9PT0gInN0cmluZyIgKSB7CgkJCXJldHVybiBqUXVlcnkuaW5B
cnJheSggdGhpc1swXSwgalF1ZXJ5KCBlbGVtICkgKTsKCQl9CgoJCS8vIExvY2F0
ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudAoJCXJldHVybiBq
UXVlcnkuaW5BcnJheSgKCQkJLy8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2Jq
ZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkCgkJCWVsZW0uanF1ZXJ5ID8g
ZWxlbVswXSA6IGVsZW0sIHRoaXMgKTsKCX0sCgoJYWRkOiBmdW5jdGlvbiggc2Vs
ZWN0b3IsIGNvbnRleHQgKSB7CgkJdmFyIHNldCA9IHR5cGVvZiBzZWxlY3RvciA9
PT0gInN0cmluZyIgPwoJCQkJalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIDoK
CQkJCWpRdWVyeS5tYWtlQXJyYXkoIHNlbGVjdG9yICYmIHNlbGVjdG9yLm5vZGVU
eXBlID8gWyBzZWxlY3RvciBdIDogc2VsZWN0b3IgKSwKCQkJYWxsID0galF1ZXJ5
Lm1lcmdlKCB0aGlzLmdldCgpLCBzZXQgKTsKCgkJcmV0dXJuIHRoaXMucHVzaFN0
YWNrKCBpc0Rpc2Nvbm5lY3RlZCggc2V0WzBdICkgfHwgaXNEaXNjb25uZWN0ZWQo
IGFsbFswXSApID8KCQkJYWxsIDoKCQkJalF1ZXJ5LnVuaXF1ZSggYWxsICkgKTsK
CX0sCgoJYW5kU2VsZjogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuYWRkKCB0
aGlzLnByZXZPYmplY3QgKTsKCX0KfSk7CgovLyBBIHBhaW5mdWxseSBzaW1wbGUg
Y2hlY2sgdG8gc2VlIGlmIGFuIGVsZW1lbnQgaXMgZGlzY29ubmVjdGVkCi8vIGZy
b20gYSBkb2N1bWVudCAoc2hvdWxkIGJlIGltcHJvdmVkLCB3aGVyZSBmZWFzaWJs
ZSkuCmZ1bmN0aW9uIGlzRGlzY29ubmVjdGVkKCBub2RlICkgewoJcmV0dXJuICFu
b2RlIHx8ICFub2RlLnBhcmVudE5vZGUgfHwgbm9kZS5wYXJlbnROb2RlLm5vZGVU
eXBlID09PSAxMTsKfQoKalF1ZXJ5LmVhY2goewoJcGFyZW50OiBmdW5jdGlvbigg
ZWxlbSApIHsKCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwoJCXJldHVy
biBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51
bGw7Cgl9LAoJcGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpR
dWVyeS5kaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOwoJfSwKCXBhcmVudHNVbnRp
bDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkgewoJCXJldHVybiBqUXVlcnku
ZGlyKCBlbGVtLCAicGFyZW50Tm9kZSIsIHVudGlsICk7Cgl9LAoJbmV4dDogZnVu
Y3Rpb24oIGVsZW0gKSB7CgkJcmV0dXJuIGpRdWVyeS5udGgoIGVsZW0sIDIsICJu
ZXh0U2libGluZyIgKTsKCX0sCglwcmV2OiBmdW5jdGlvbiggZWxlbSApIHsKCQly
ZXR1cm4galF1ZXJ5Lm50aCggZWxlbSwgMiwgInByZXZpb3VzU2libGluZyIgKTsK
CX0sCgluZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4galF1ZXJ5
LmRpciggZWxlbSwgIm5leHRTaWJsaW5nIiApOwoJfSwKCXByZXZBbGw6IGZ1bmN0
aW9uKCBlbGVtICkgewoJCXJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAicHJldmlv
dXNTaWJsaW5nIiApOwoJfSwKCW5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGks
IHVudGlsICkgewoJCXJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAibmV4dFNpYmxp
bmciLCB1bnRpbCApOwoJfSwKCXByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGks
IHVudGlsICkgewoJCXJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCAicHJldmlvdXNT
aWJsaW5nIiwgdW50aWwgKTsKCX0sCglzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0g
KSB7CgkJcmV0dXJuIGpRdWVyeS5zaWJsaW5nKCBlbGVtLnBhcmVudE5vZGUuZmly
c3RDaGlsZCwgZWxlbSApOwoJfSwKCWNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSAp
IHsKCQlyZXR1cm4galF1ZXJ5LnNpYmxpbmcoIGVsZW0uZmlyc3RDaGlsZCApOwoJ
fSwKCWNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4galF1ZXJ5
Lm5vZGVOYW1lKCBlbGVtLCAiaWZyYW1lIiApID8KCQkJZWxlbS5jb250ZW50RG9j
dW1lbnQgfHwgZWxlbS5jb250ZW50V2luZG93LmRvY3VtZW50IDoKCQkJalF1ZXJ5
Lm1ha2VBcnJheSggZWxlbS5jaGlsZE5vZGVzICk7Cgl9Cn0sIGZ1bmN0aW9uKCBu
YW1lLCBmbiApIHsKCWpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGls
LCBzZWxlY3RvciApIHsKCQl2YXIgcmV0ID0galF1ZXJ5Lm1hcCggdGhpcywgZm4s
IHVudGlsICk7CgoJCWlmICggIXJ1bnRpbC50ZXN0KCBuYW1lICkgKSB7CgkJCXNl
bGVjdG9yID0gdW50aWw7CgkJfQoKCQlpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBz
ZWxlY3RvciA9PT0gInN0cmluZyIgKSB7CgkJCXJldCA9IGpRdWVyeS5maWx0ZXIo
IHNlbGVjdG9yLCByZXQgKTsKCQl9CgoJCXJldCA9IHRoaXMubGVuZ3RoID4gMSAm
JiAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdID8galF1ZXJ5LnVuaXF1ZSggcmV0
ICkgOiByZXQ7CgoJCWlmICggKHRoaXMubGVuZ3RoID4gMSB8fCBybXVsdGlzZWxl
Y3Rvci50ZXN0KCBzZWxlY3RvciApKSAmJiBycGFyZW50c3ByZXYudGVzdCggbmFt
ZSApICkgewoJCQlyZXQgPSByZXQucmV2ZXJzZSgpOwoJCX0KCgkJcmV0dXJuIHRo
aXMucHVzaFN0YWNrKCByZXQsIG5hbWUsIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyAp
LmpvaW4oIiwiKSApOwoJfTsKfSk7CgpqUXVlcnkuZXh0ZW5kKHsKCWZpbHRlcjog
ZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7CgkJaWYgKCBub3QgKSB7CgkJ
CWV4cHIgPSAiOm5vdCgiICsgZXhwciArICIpIjsKCQl9CgoJCXJldHVybiBlbGVt
cy5sZW5ndGggPT09IDEgPwoJCQlqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3Io
ZWxlbXNbMF0sIGV4cHIpID8gWyBlbGVtc1swXSBdIDogW10gOgoJCQlqUXVlcnku
ZmluZC5tYXRjaGVzKGV4cHIsIGVsZW1zKTsKCX0sCgoJZGlyOiBmdW5jdGlvbigg
ZWxlbSwgZGlyLCB1bnRpbCApIHsKCQl2YXIgbWF0Y2hlZCA9IFtdLAoJCQljdXIg
PSBlbGVtWyBkaXIgXTsKCgkJd2hpbGUgKCBjdXIgJiYgY3VyLm5vZGVUeXBlICE9
PSA5ICYmICh1bnRpbCA9PT0gdW5kZWZpbmVkIHx8IGN1ci5ub2RlVHlwZSAhPT0g
MSB8fCAhalF1ZXJ5KCBjdXIgKS5pcyggdW50aWwgKSkgKSB7CgkJCWlmICggY3Vy
Lm5vZGVUeXBlID09PSAxICkgewoJCQkJbWF0Y2hlZC5wdXNoKCBjdXIgKTsKCQkJ
fQoJCQljdXIgPSBjdXJbZGlyXTsKCQl9CgkJcmV0dXJuIG1hdGNoZWQ7Cgl9LAoK
CW50aDogZnVuY3Rpb24oIGN1ciwgcmVzdWx0LCBkaXIsIGVsZW0gKSB7CgkJcmVz
dWx0ID0gcmVzdWx0IHx8IDE7CgkJdmFyIG51bSA9IDA7CgoJCWZvciAoIDsgY3Vy
OyBjdXIgPSBjdXJbZGlyXSApIHsKCQkJaWYgKCBjdXIubm9kZVR5cGUgPT09IDEg
JiYgKytudW0gPT09IHJlc3VsdCApIHsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQly
ZXR1cm4gY3VyOwoJfSwKCglzaWJsaW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHsK
CQl2YXIgciA9IFtdOwoKCQlmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkg
ewoJCQlpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHsKCQkJ
CXIucHVzaCggbiApOwoJCQl9CgkJfQoKCQlyZXR1cm4gcjsKCX0KfSk7CgovLyBJ
bXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIg
YW5kIG5vdApmdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtl
ZXAgKSB7CgoJLy8gQ2FuJ3QgcGFzcyBudWxsIG9yIHVuZGVmaW5lZCB0byBpbmRl
eE9mIGluIEZpcmVmb3ggNAoJLy8gU2V0IHRvIDAgdG8gc2tpcCBzdHJpbmcgY2hl
Y2sKCXF1YWxpZmllciA9IHF1YWxpZmllciB8fCAwOwoKCWlmICggalF1ZXJ5Lmlz
RnVuY3Rpb24oIHF1YWxpZmllciApICkgewoJCXJldHVybiBqUXVlcnkuZ3JlcChl
bGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7CgkJCXZhciByZXRWYWwgPSAh
IXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICk7CgkJCXJldHVybiByZXRW
YWwgPT09IGtlZXA7CgkJfSk7CgoJfSBlbHNlIGlmICggcXVhbGlmaWVyLm5vZGVU
eXBlICkgewoJCXJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24o
IGVsZW0sIGkgKSB7CgkJCXJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApID09
PSBrZWVwOwoJCX0pOwoKCX0gZWxzZSBpZiAoIHR5cGVvZiBxdWFsaWZpZXIgPT09
ICJzdHJpbmciICkgewoJCXZhciBmaWx0ZXJlZCA9IGpRdWVyeS5ncmVwKGVsZW1l
bnRzLCBmdW5jdGlvbiggZWxlbSApIHsKCQkJcmV0dXJuIGVsZW0ubm9kZVR5cGUg
PT09IDE7CgkJfSk7CgoJCWlmICggaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkg
KSB7CgkJCXJldHVybiBqUXVlcnkuZmlsdGVyKHF1YWxpZmllciwgZmlsdGVyZWQs
ICFrZWVwKTsKCQl9IGVsc2UgewoJCQlxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVy
KCBxdWFsaWZpZXIsIGZpbHRlcmVkICk7CgkJfQoJfQoKCXJldHVybiBqUXVlcnku
Z3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7CgkJcmV0dXJuICgg
alF1ZXJ5LmluQXJyYXkoIGVsZW0sIHF1YWxpZmllciApID49IDAgKSA9PT0ga2Vl
cDsKCX0pOwp9CgoKCgpmdW5jdGlvbiBjcmVhdGVTYWZlRnJhZ21lbnQoIGRvY3Vt
ZW50ICkgewoJdmFyIGxpc3QgPSBub2RlTmFtZXMuc3BsaXQoICJ8IiApLAoJc2Fm
ZUZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CgoJaWYg
KCBzYWZlRnJhZy5jcmVhdGVFbGVtZW50ICkgewoJCXdoaWxlICggbGlzdC5sZW5n
dGggKSB7CgkJCXNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQoCgkJCQlsaXN0LnBvcCgp
CgkJCSk7CgkJfQoJfQoJcmV0dXJuIHNhZmVGcmFnOwp9Cgp2YXIgbm9kZU5hbWVz
ID0gImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xjYW52YXN8ZGF0YWxpc3R8ZGV0
YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8IiArCgkJImhlYWRlcnxoZ3Jv
dXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFy
eXx0aW1lfHZpZGVvIiwKCXJpbmxpbmVqUXVlcnkgPSAvIGpRdWVyeVxkKz0iKD86
XGQrfG51bGwpIi9nLAoJcmxlYWRpbmdXaGl0ZXNwYWNlID0gL15ccysvLAoJcnho
dG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlu
a3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZywKCXJ0YWdOYW1lID0g
LzwoW1x3Ol0rKS8sCglydGJvZHkgPSAvPHRib2R5L2ksCglyaHRtbCA9IC88fCYj
P1x3KzsvLAoJcm5vSW5uZXJodG1sID0gLzwoPzpzY3JpcHR8c3R5bGUpL2ksCgly
bm9jYWNoZSA9IC88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUp
L2ksCglybm9zaGltY2FjaGUgPSBuZXcgUmVnRXhwKCI8KD86IiArIG5vZGVOYW1l
cyArICIpIiwgImkiKSwKCS8vIGNoZWNrZWQ9ImNoZWNrZWQiIG9yIGNoZWNrZWQK
CXJjaGVja2VkID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ks
Cglyc2NyaXB0VHlwZSA9IC9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksCglyY2xlYW5T
Y3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfFwtXC0pLywKCXdyYXBNYXAgPSB7
CgkJb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+Iiwg
Ijwvc2VsZWN0PiIgXSwKCQlsZWdlbmQ6IFsgMSwgIjxmaWVsZHNldD4iLCAiPC9m
aWVsZHNldD4iIF0sCgkJdGhlYWQ6IFsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4i
IF0sCgkJdHI6IFsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJs
ZT4iIF0sCgkJdGQ6IFsgMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwv
dGJvZHk+PC90YWJsZT4iIF0sCgkJY29sOiBbIDIsICI8dGFibGU+PHRib2R5Pjwv
dGJvZHk+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+IiBdLAoJCWFy
ZWE6IFsgMSwgIjxtYXA+IiwgIjwvbWFwPiIgXSwKCQlfZGVmYXVsdDogWyAwLCAi
IiwgIiIgXQoJfSwKCXNhZmVGcmFnbWVudCA9IGNyZWF0ZVNhZmVGcmFnbWVudCgg
ZG9jdW1lbnQgKTsKCndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjsK
d3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3Vw
ID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDsKd3JhcE1hcC50aCA9
IHdyYXBNYXAudGQ7CgovLyBJRSBjYW4ndCBzZXJpYWxpemUgPGxpbms+IGFuZCA8
c2NyaXB0PiB0YWdzIG5vcm1hbGx5CmlmICggIWpRdWVyeS5zdXBwb3J0Lmh0bWxT
ZXJpYWxpemUgKSB7Cgl3cmFwTWFwLl9kZWZhdWx0ID0gWyAxLCAiZGl2PGRpdj4i
LCAiPC9kaXY+IiBdOwp9CgpqUXVlcnkuZm4uZXh0ZW5kKHsKCXRleHQ6IGZ1bmN0
aW9uKCB0ZXh0ICkgewoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24odGV4dCkgKSB7
CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewoJCQkJdmFyIHNlbGYg
PSBqUXVlcnkoIHRoaXMgKTsKCgkJCQlzZWxmLnRleHQoIHRleHQuY2FsbCh0aGlz
LCBpLCBzZWxmLnRleHQoKSkgKTsKCQkJfSk7CgkJfQoKCQlpZiAoIHR5cGVvZiB0
ZXh0ICE9PSAib2JqZWN0IiAmJiB0ZXh0ICE9PSB1bmRlZmluZWQgKSB7CgkJCXJl
dHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCAodGhpc1swXSAmJiB0aGlzWzBdLm93
bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKCB0ZXh0ICkg
KTsKCQl9CgoJCXJldHVybiBqUXVlcnkudGV4dCggdGhpcyApOwoJfSwKCgl3cmFw
QWxsOiBmdW5jdGlvbiggaHRtbCApIHsKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u
KCBodG1sICkgKSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewoJ
CQkJalF1ZXJ5KHRoaXMpLndyYXBBbGwoIGh0bWwuY2FsbCh0aGlzLCBpKSApOwoJ
CQl9KTsKCQl9CgoJCWlmICggdGhpc1swXSApIHsKCQkJLy8gVGhlIGVsZW1lbnRz
IHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmQKCQkJdmFyIHdyYXAgPSBqUXVlcnko
IGh0bWwsIHRoaXNbMF0ub3duZXJEb2N1bWVudCApLmVxKDApLmNsb25lKHRydWUp
OwoKCQkJaWYgKCB0aGlzWzBdLnBhcmVudE5vZGUgKSB7CgkJCQl3cmFwLmluc2Vy
dEJlZm9yZSggdGhpc1swXSApOwoJCQl9CgoJCQl3cmFwLm1hcChmdW5jdGlvbigp
IHsKCQkJCXZhciBlbGVtID0gdGhpczsKCgkJCQl3aGlsZSAoIGVsZW0uZmlyc3RD
aGlsZCAmJiBlbGVtLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDEgKSB7CgkJCQkJ
ZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsKCQkJCX0KCgkJCQlyZXR1cm4gZWxlbTsK
CQkJfSkuYXBwZW5kKCB0aGlzICk7CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCgoJ
d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHsKCQlpZiAoIGpRdWVyeS5pc0Z1
bmN0aW9uKCBodG1sICkgKSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
aSkgewoJCQkJalF1ZXJ5KHRoaXMpLndyYXBJbm5lciggaHRtbC5jYWxsKHRoaXMs
IGkpICk7CgkJCX0pOwoJCX0KCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp
IHsKCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSwKCQkJCWNvbnRlbnRzID0g
c2VsZi5jb250ZW50cygpOwoKCQkJaWYgKCBjb250ZW50cy5sZW5ndGggKSB7CgkJ
CQljb250ZW50cy53cmFwQWxsKCBodG1sICk7CgoJCQl9IGVsc2UgewoJCQkJc2Vs
Zi5hcHBlbmQoIGh0bWwgKTsKCQkJfQoJCX0pOwoJfSwKCgl3cmFwOiBmdW5jdGlv
biggaHRtbCApIHsKCQl2YXIgaXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9u
KCBodG1sICk7CgoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewoJCQlq
UXVlcnkoIHRoaXMgKS53cmFwQWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKHRo
aXMsIGkpIDogaHRtbCApOwoJCX0pOwoJfSwKCgl1bndyYXA6IGZ1bmN0aW9uKCkg
ewoJCXJldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKSB7CgkJCWlm
ICggIWpRdWVyeS5ub2RlTmFtZSggdGhpcywgImJvZHkiICkgKSB7CgkJCQlqUXVl
cnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7CgkJCX0K
CQl9KS5lbmQoKTsKCX0sCgoJYXBwZW5kOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4g
dGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRydWUsIGZ1bmN0aW9uKCBlbGVtICkg
ewoJCQlpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgKSB7CgkJCQl0aGlzLmFwcGVu
ZENoaWxkKCBlbGVtICk7CgkJCX0KCQl9KTsKCX0sCgoJcHJlcGVuZDogZnVuY3Rp
b24oKSB7CgkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBm
dW5jdGlvbiggZWxlbSApIHsKCQkJaWYgKCB0aGlzLm5vZGVUeXBlID09PSAxICkg
ewoJCQkJdGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMuZmlyc3RDaGlsZCAp
OwoJCQl9CgkJfSk7Cgl9LAoKCWJlZm9yZTogZnVuY3Rpb24oKSB7CgkJaWYgKCB0
aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSApIHsKCQkJcmV0dXJuIHRoaXMu
ZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rpb24oIGVsZW0gKSB7CgkJ
CQl0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7CgkJ
CX0pOwoJCX0gZWxzZSBpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CgkJCXZhciBz
ZXQgPSBqUXVlcnkuY2xlYW4oIGFyZ3VtZW50cyApOwoJCQlzZXQucHVzaC5hcHBs
eSggc2V0LCB0aGlzLnRvQXJyYXkoKSApOwoJCQlyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soIHNldCwgImJlZm9yZSIsIGFyZ3VtZW50cyApOwoJCX0KCX0sCgoJYWZ0ZXI6
IGZ1bmN0aW9uKCkgewoJCWlmICggdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5v
ZGUgKSB7CgkJCXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgZmFsc2Us
IGZ1bmN0aW9uKCBlbGVtICkgewoJCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJl
Zm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApOwoJCQl9KTsKCQl9IGVsc2Ug
aWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewoJCQl2YXIgc2V0ID0gdGhpcy5wdXNo
U3RhY2soIHRoaXMsICJhZnRlciIsIGFyZ3VtZW50cyApOwoJCQlzZXQucHVzaC5h
cHBseSggc2V0LCBqUXVlcnkuY2xlYW4oYXJndW1lbnRzKSApOwoJCQlyZXR1cm4g
c2V0OwoJCX0KCX0sCgoJLy8ga2VlcERhdGEgaXMgZm9yIGludGVybmFsIHVzZSBv
bmx5LS1kbyBub3QgZG9jdW1lbnQKCXJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9y
LCBrZWVwRGF0YSApIHsKCQlmb3IgKCB2YXIgaSA9IDAsIGVsZW07IChlbGVtID0g
dGhpc1tpXSkgIT0gbnVsbDsgaSsrICkgewoJCQlpZiAoICFzZWxlY3RvciB8fCBq
UXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgWyBlbGVtIF0gKS5sZW5ndGggKSB7CgkJ
CQlpZiAoICFrZWVwRGF0YSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkgewoJCQkJ
CWpRdWVyeS5jbGVhbkRhdGEoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioi
KSApOwoJCQkJCWpRdWVyeS5jbGVhbkRhdGEoIFsgZWxlbSBdICk7CgkJCQl9CgoJ
CQkJaWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7CgkJCQkJZWxlbS5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKCBlbGVtICk7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiB0
aGlzOwoJfSwKCgllbXB0eTogZnVuY3Rpb24oKSB7CgkJZm9yICggdmFyIGkgPSAw
LCBlbGVtOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHsKCQkJLy8g
UmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCgkJ
CWlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKCQkJCWpRdWVyeS5jbGVhbkRh
dGEoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSApOwoJCQl9CgoJCQkv
LyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2RlcwoJCQl3aGlsZSAoIGVsZW0uZmly
c3RDaGlsZCApIHsKCQkJCWVsZW0ucmVtb3ZlQ2hpbGQoIGVsZW0uZmlyc3RDaGls
ZCApOwoJCQl9CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCgoJY2xvbmU6IGZ1bmN0
aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHsKCQlkYXRh
QW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRh
QW5kRXZlbnRzOwoJCWRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVu
dHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50czsK
CgkJcmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbiAoKSB7CgkJCXJldHVybiBqUXVl
cnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRz
ICk7CgkJfSk7Cgl9LAoKCWh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKCQlpZiAo
IHZhbHVlID09PSB1bmRlZmluZWQgKSB7CgkJCXJldHVybiB0aGlzWzBdICYmIHRo
aXNbMF0ubm9kZVR5cGUgPT09IDEgPwoJCQkJdGhpc1swXS5pbm5lckhUTUwucmVw
bGFjZShyaW5saW5lalF1ZXJ5LCAiIikgOgoJCQkJbnVsbDsKCgkJLy8gU2VlIGlm
IHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTAoJ
CX0gZWxzZSBpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgIXJub0lu
bmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmCgkJCShqUXVlcnkuc3VwcG9ydC5sZWFk
aW5nV2hpdGVzcGFjZSB8fCAhcmxlYWRpbmdXaGl0ZXNwYWNlLnRlc3QoIHZhbHVl
ICkpICYmCgkJCSF3cmFwTWFwWyAocnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBb
IiIsICIiXSlbMV0udG9Mb3dlckNhc2UoKSBdICkgewoKCQkJdmFsdWUgPSB2YWx1
ZS5yZXBsYWNlKHJ4aHRtbFRhZywgIjwkMT48LyQyPiIpOwoKCQkJdHJ5IHsKCQkJ
CWZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkg
ewoJCQkJCS8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9y
eSBsZWFrcwoJCQkJCWlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSApIHsKCQkJ
CQkJalF1ZXJ5LmNsZWFuRGF0YSggdGhpc1tpXS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiKiIpICk7CgkJCQkJCXRoaXNbaV0uaW5uZXJIVE1MID0gdmFsdWU7CgkJCQkJ
fQoJCQkJfQoKCQkJLy8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNl
cHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kCgkJCX0gY2F0Y2goZSkgewoJ
CQkJdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsKCQkJfQoKCQl9IGVsc2Ug
aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKCQkJdGhpcy5lYWNo
KGZ1bmN0aW9uKGkpewoJCQkJdmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKTsKCgkJ
CQlzZWxmLmh0bWwoIHZhbHVlLmNhbGwodGhpcywgaSwgc2VsZi5odG1sKCkpICk7
CgkJCX0pOwoKCQl9IGVsc2UgewoJCQl0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1
ZSApOwoJCX0KCgkJcmV0dXJuIHRoaXM7Cgl9LAoKCXJlcGxhY2VXaXRoOiBmdW5j
dGlvbiggdmFsdWUgKSB7CgkJaWYgKCB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50
Tm9kZSApIHsKCQkJLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBy
ZW1vdmVkIGZyb20gdGhlIERPTSBiZWZvcmUgdGhleSBhcmUgaW5zZXJ0ZWQKCQkJ
Ly8gdGhpcyBjYW4gaGVscCBmaXggcmVwbGFjaW5nIGEgcGFyZW50IHdpdGggY2hp
bGQgZWxlbWVudHMKCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSAp
IHsKCQkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewoJCQkJCXZhciBz
ZWxmID0galF1ZXJ5KHRoaXMpLCBvbGQgPSBzZWxmLmh0bWwoKTsKCQkJCQlzZWxm
LnJlcGxhY2VXaXRoKCB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBvbGQgKSApOwoJCQkJ
fSk7CgkJCX0KCgkJCWlmICggdHlwZW9mIHZhbHVlICE9PSAic3RyaW5nIiApIHsK
CQkJCXZhbHVlID0galF1ZXJ5KCB2YWx1ZSApLmRldGFjaCgpOwoJCQl9CgoJCQly
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIG5leHQgPSB0aGlz
Lm5leHRTaWJsaW5nLAoJCQkJCXBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTsKCgkJ
CQlqUXVlcnkoIHRoaXMgKS5yZW1vdmUoKTsKCgkJCQlpZiAoIG5leHQgKSB7CgkJ
CQkJalF1ZXJ5KG5leHQpLmJlZm9yZSggdmFsdWUgKTsKCQkJCX0gZWxzZSB7CgkJ
CQkJalF1ZXJ5KHBhcmVudCkuYXBwZW5kKCB2YWx1ZSApOwoJCQkJfQoJCQl9KTsK
CQl9IGVsc2UgewoJCQlyZXR1cm4gdGhpcy5sZW5ndGggPwoJCQkJdGhpcy5wdXNo
U3RhY2soIGpRdWVyeShqUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSgp
IDogdmFsdWUpLCAicmVwbGFjZVdpdGgiLCB2YWx1ZSApIDoKCQkJCXRoaXM7CgkJ
fQoJfSwKCglkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKCQlyZXR1cm4g
dGhpcy5yZW1vdmUoIHNlbGVjdG9yLCB0cnVlICk7Cgl9LAoKCWRvbU1hbmlwOiBm
dW5jdGlvbiggYXJncywgdGFibGUsIGNhbGxiYWNrICkgewoJCXZhciByZXN1bHRz
LCBmaXJzdCwgZnJhZ21lbnQsIHBhcmVudCwKCQkJdmFsdWUgPSBhcmdzWzBdLAoJ
CQlzY3JpcHRzID0gW107CgoJCS8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVu
dHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdAoJCWlmICggIWpRdWVy
eS5zdXBwb3J0LmNoZWNrQ2xvbmUgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAm
JiB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHJjaGVja2VkLnRlc3QoIHZh
bHVlICkgKSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQlq
UXVlcnkodGhpcykuZG9tTWFuaXAoIGFyZ3MsIHRhYmxlLCBjYWxsYmFjaywgdHJ1
ZSApOwoJCQl9KTsKCQl9CgoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUp
ICkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKCQkJCXZhciBz
ZWxmID0galF1ZXJ5KHRoaXMpOwoJCQkJYXJnc1swXSA9IHZhbHVlLmNhbGwodGhp
cywgaSwgdGFibGUgPyBzZWxmLmh0bWwoKSA6IHVuZGVmaW5lZCk7CgkJCQlzZWxm
LmRvbU1hbmlwKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2sgKTsKCQkJfSk7CgkJfQoK
CQlpZiAoIHRoaXNbMF0gKSB7CgkJCXBhcmVudCA9IHZhbHVlICYmIHZhbHVlLnBh
cmVudE5vZGU7CgoJCQkvLyBJZiB3ZSdyZSBpbiBhIGZyYWdtZW50LCBqdXN0IHVz
ZSB0aGF0IGluc3RlYWQgb2YgYnVpbGRpbmcgYSBuZXcgb25lCgkJCWlmICggalF1
ZXJ5LnN1cHBvcnQucGFyZW50Tm9kZSAmJiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVU
eXBlID09PSAxMSAmJiBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IHRoaXMu
bGVuZ3RoICkgewoJCQkJcmVzdWx0cyA9IHsgZnJhZ21lbnQ6IHBhcmVudCB9OwoK
CQkJfSBlbHNlIHsKCQkJCXJlc3VsdHMgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCgg
YXJncywgdGhpcywgc2NyaXB0cyApOwoJCQl9CgoJCQlmcmFnbWVudCA9IHJlc3Vs
dHMuZnJhZ21lbnQ7CgoJCQlpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3Ro
ID09PSAxICkgewoJCQkJZmlyc3QgPSBmcmFnbWVudCA9IGZyYWdtZW50LmZpcnN0
Q2hpbGQ7CgkJCX0gZWxzZSB7CgkJCQlmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hp
bGQ7CgkJCX0KCgkJCWlmICggZmlyc3QgKSB7CgkJCQl0YWJsZSA9IHRhYmxlICYm
IGpRdWVyeS5ub2RlTmFtZSggZmlyc3QsICJ0ciIgKTsKCgkJCQlmb3IgKCB2YXIg
aSA9IDAsIGwgPSB0aGlzLmxlbmd0aCwgbGFzdEluZGV4ID0gbCAtIDE7IGkgPCBs
OyBpKysgKSB7CgkJCQkJY2FsbGJhY2suY2FsbCgKCQkJCQkJdGFibGUgPwoJCQkJ
CQkJcm9vdCh0aGlzW2ldLCBmaXJzdCkgOgoJCQkJCQkJdGhpc1tpXSwKCQkJCQkJ
Ly8gTWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGxlYWsgbWVtb3J5IGJ5IGluYWR2
ZXJ0ZW50bHkgZGlzY2FyZGluZwoJCQkJCQkvLyB0aGUgb3JpZ2luYWwgZnJhZ21l
bnQgKHdoaWNoIG1pZ2h0IGhhdmUgYXR0YWNoZWQgZGF0YSkgaW5zdGVhZCBvZgoJ
CQkJCQkvLyB1c2luZyBpdDsgaW4gYWRkaXRpb24sIHVzZSB0aGUgb3JpZ2luYWwg
ZnJhZ21lbnQgb2JqZWN0IGZvciB0aGUgbGFzdAoJCQkJCQkvLyBpdGVtIGluc3Rl
YWQgb2YgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwIGJlaW5nIGVtcHRpZWQg
aW5jb3JyZWN0bHkKCQkJCQkJLy8gaW4gY2VydGFpbiBzaXR1YXRpb25zIChCdWcg
IzgwNzApLgoJCQkJCQkvLyBGcmFnbWVudHMgZnJvbSB0aGUgZnJhZ21lbnQgY2Fj
aGUgbXVzdCBhbHdheXMgYmUgY2xvbmVkIGFuZCBuZXZlciB1c2VkCgkJCQkJCS8v
IGluIHBsYWNlLgoJCQkJCQlyZXN1bHRzLmNhY2hlYWJsZSB8fCAoIGwgPiAxICYm
IGkgPCBsYXN0SW5kZXggKSA/CgkJCQkJCQlqUXVlcnkuY2xvbmUoIGZyYWdtZW50
LCB0cnVlLCB0cnVlICkgOgoJCQkJCQkJZnJhZ21lbnQKCQkJCQkpOwoJCQkJfQoJ
CQl9CgoJCQlpZiAoIHNjcmlwdHMubGVuZ3RoICkgewoJCQkJalF1ZXJ5LmVhY2go
IHNjcmlwdHMsIGV2YWxTY3JpcHQgKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRoaXM7
Cgl9Cn0pOwoKZnVuY3Rpb24gcm9vdCggZWxlbSwgY3VyICkgewoJcmV0dXJuIGpR
dWVyeS5ub2RlTmFtZShlbGVtLCAidGFibGUiKSA/CgkJKGVsZW0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoInRib2R5IilbMF0gfHwKCQllbGVtLmFwcGVuZENoaWxkKGVs
ZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKSkgOgoJCWVs
ZW07Cn0KCmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7CgoJ
aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxIHx8ICFqUXVlcnkuaGFzRGF0YSggc3Jj
ICkgKSB7CgkJcmV0dXJuOwoJfQoKCXZhciB0eXBlLCBpLCBsLAoJCW9sZERhdGEg
PSBqUXVlcnkuX2RhdGEoIHNyYyApLAoJCWN1ckRhdGEgPSBqUXVlcnkuX2RhdGEo
IGRlc3QsIG9sZERhdGEgKSwKCQlldmVudHMgPSBvbGREYXRhLmV2ZW50czsKCglp
ZiAoIGV2ZW50cyApIHsKCQlkZWxldGUgY3VyRGF0YS5oYW5kbGU7CgkJY3VyRGF0
YS5ldmVudHMgPSB7fTsKCgkJZm9yICggdHlwZSBpbiBldmVudHMgKSB7CgkJCWZv
ciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsr
ICkgewoJCQkJalF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSArICggZXZlbnRz
WyB0eXBlIF1bIGkgXS5uYW1lc3BhY2UgPyAiLiIgOiAiIiApICsgZXZlbnRzWyB0
eXBlIF1bIGkgXS5uYW1lc3BhY2UsIGV2ZW50c1sgdHlwZSBdWyBpIF0sIGV2ZW50
c1sgdHlwZSBdWyBpIF0uZGF0YSApOwoJCQl9CgkJfQoJfQoKCS8vIG1ha2UgdGhl
IGNsb25lZCBwdWJsaWMgZGF0YSBvYmplY3QgYSBjb3B5IGZyb20gdGhlIG9yaWdp
bmFsCglpZiAoIGN1ckRhdGEuZGF0YSApIHsKCQljdXJEYXRhLmRhdGEgPSBqUXVl
cnkuZXh0ZW5kKCB7fSwgY3VyRGF0YS5kYXRhICk7Cgl9Cn0KCmZ1bmN0aW9uIGNs
b25lRml4QXR0cmlidXRlcyggc3JjLCBkZXN0ICkgewoJdmFyIG5vZGVOYW1lOwoK
CS8vIFdlIGRvIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nIGZvciBub24tRWxlbWVu
dHMKCWlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHsKCQlyZXR1cm47Cgl9CgoJ
Ly8gY2xlYXJBdHRyaWJ1dGVzIHJlbW92ZXMgdGhlIGF0dHJpYnV0ZXMsIHdoaWNo
IHdlIGRvbid0IHdhbnQsCgkvLyBidXQgYWxzbyByZW1vdmVzIHRoZSBhdHRhY2hF
dmVudCBldmVudHMsIHdoaWNoIHdlICpkbyogd2FudAoJaWYgKCBkZXN0LmNsZWFy
QXR0cmlidXRlcyApIHsKCQlkZXN0LmNsZWFyQXR0cmlidXRlcygpOwoJfQoKCS8v
IG1lcmdlQXR0cmlidXRlcywgaW4gY29udHJhc3QsIG9ubHkgbWVyZ2VzIGJhY2sg
b24gdGhlCgkvLyBvcmlnaW5hbCBhdHRyaWJ1dGVzLCBub3QgdGhlIGV2ZW50cwoJ
aWYgKCBkZXN0Lm1lcmdlQXR0cmlidXRlcyApIHsKCQlkZXN0Lm1lcmdlQXR0cmli
dXRlcyggc3JjICk7Cgl9CgoJbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7CgoJLy8gSUU2LTggZmFpbCB0byBjbG9uZSBjaGlsZHJlbiBpbnNp
ZGUgb2JqZWN0IGVsZW1lbnRzIHRoYXQgdXNlCgkvLyB0aGUgcHJvcHJpZXRhcnkg
Y2xhc3NpZCBhdHRyaWJ1dGUgdmFsdWUgKHJhdGhlciB0aGFuIHRoZSB0eXBlCgkv
LyBhdHRyaWJ1dGUpIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIGNvbnRlbnQgdG8g
ZGlzcGxheQoJaWYgKCBub2RlTmFtZSA9PT0gIm9iamVjdCIgKSB7CgkJZGVzdC5v
dXRlckhUTUwgPSBzcmMub3V0ZXJIVE1MOwoKCX0gZWxzZSBpZiAoIG5vZGVOYW1l
ID09PSAiaW5wdXQiICYmIChzcmMudHlwZSA9PT0gImNoZWNrYm94IiB8fCBzcmMu
dHlwZSA9PT0gInJhZGlvIikgKSB7CgkJLy8gSUU2LTggZmFpbHMgdG8gcGVyc2lz
dCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveAoJCS8vIG9y
IHJhZGlvIGJ1dHRvbi4gV29yc2UsIElFNi03IGZhaWwgdG8gZ2l2ZSB0aGUgY2xv
bmVkIGVsZW1lbnQKCQkvLyBhIGNoZWNrZWQgYXBwZWFyYW5jZSBpZiB0aGUgZGVm
YXVsdENoZWNrZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXQKCQlpZiAoIHNyYy5jaGVj
a2VkICkgewoJCQlkZXN0LmRlZmF1bHRDaGVja2VkID0gZGVzdC5jaGVja2VkID0g
c3JjLmNoZWNrZWQ7CgkJfQoKCQkvLyBJRTYtNyBnZXQgY29uZnVzZWQgYW5kIGVu
ZCB1cCBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBhIGNsb25lZAoJCS8vIGNoZWNrYm94
L3JhZGlvIGJ1dHRvbiB0byBhbiBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiAib24i
CgkJaWYgKCBkZXN0LnZhbHVlICE9PSBzcmMudmFsdWUgKSB7CgkJCWRlc3QudmFs
dWUgPSBzcmMudmFsdWU7CgkJfQoKCS8vIElFNi04IGZhaWxzIHRvIHJldHVybiB0
aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkCgkvLyBz
dGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9ucwoJfSBlbHNlIGlmICggbm9kZU5hbWUg
PT09ICJvcHRpb24iICkgewoJCWRlc3Quc2VsZWN0ZWQgPSBzcmMuZGVmYXVsdFNl
bGVjdGVkOwoKCS8vIElFNi04IGZhaWxzIHRvIHNldCB0aGUgZGVmYXVsdFZhbHVl
IHRvIHRoZSBjb3JyZWN0IHZhbHVlIHdoZW4KCS8vIGNsb25pbmcgb3RoZXIgdHlw
ZXMgb2YgaW5wdXQgZmllbGRzCgl9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gImlu
cHV0IiB8fCBub2RlTmFtZSA9PT0gInRleHRhcmVhIiApIHsKCQlkZXN0LmRlZmF1
bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7Cgl9CgoJLy8gRXZlbnQgZGF0YSBn
ZXRzIHJlZmVyZW5jZWQgaW5zdGVhZCBvZiBjb3BpZWQgaWYgdGhlIGV4cGFuZG8K
CS8vIGdldHMgY29waWVkIHRvbwoJZGVzdC5yZW1vdmVBdHRyaWJ1dGUoIGpRdWVy
eS5leHBhbmRvICk7Cn0KCmpRdWVyeS5idWlsZEZyYWdtZW50ID0gZnVuY3Rpb24o
IGFyZ3MsIG5vZGVzLCBzY3JpcHRzICkgewoJdmFyIGZyYWdtZW50LCBjYWNoZWFi
bGUsIGNhY2hlcmVzdWx0cywgZG9jLAoJZmlyc3QgPSBhcmdzWyAwIF07CgoJLy8g
bm9kZXMgbWF5IGNvbnRhaW4gZWl0aGVyIGFuIGV4cGxpY2l0IGRvY3VtZW50IG9i
amVjdCwKCS8vIGEgalF1ZXJ5IGNvbGxlY3Rpb24gb3IgY29udGV4dCBvYmplY3Qu
CgkvLyBJZiBub2Rlc1swXSBjb250YWlucyBhIHZhbGlkIG9iamVjdCB0byBhc3Np
Z24gdG8gZG9jCglpZiAoIG5vZGVzICYmIG5vZGVzWzBdICkgewoJCWRvYyA9IG5v
ZGVzWzBdLm93bmVyRG9jdW1lbnQgfHwgbm9kZXNbMF07Cgl9CgoJLy8gRW5zdXJl
IHRoYXQgYW4gYXR0ciBvYmplY3QgZG9lc24ndCBpbmNvcnJlY3RseSBzdGFuZCBp
biBhcyBhIGRvY3VtZW50IG9iamVjdAoJLy8gQ2hyb21lIGFuZCBGaXJlZm94IHNl
ZW0gdG8gYWxsb3cgdGhpcyB0byBvY2N1ciBhbmQgd2lsbCB0aHJvdyBleGNlcHRp
b24KCS8vIEZpeGVzICM4OTUwCglpZiAoICFkb2MuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCApIHsKCQlkb2MgPSBkb2N1bWVudDsKCX0KCgkvLyBPbmx5IGNhY2hlICJz
bWFsbCIgKDEvMiBLQikgSFRNTCBzdHJpbmdzIHRoYXQgYXJlIGFzc29jaWF0ZWQg
d2l0aCB0aGUgbWFpbiBkb2N1bWVudAoJLy8gQ2xvbmluZyBvcHRpb25zIGxvc2Vz
IHRoZSBzZWxlY3RlZCBzdGF0ZSwgc28gZG9uJ3QgY2FjaGUgdGhlbQoJLy8gSUUg
NiBkb2Vzbid0IGxpa2UgaXQgd2hlbiB5b3UgcHV0IDxvYmplY3Q+IG9yIDxlbWJl
ZD4gZWxlbWVudHMgaW4gYSBmcmFnbWVudAoJLy8gQWxzbywgV2ViS2l0IGRvZXMg
bm90IGNsb25lICdjaGVja2VkJyBhdHRyaWJ1dGVzIG9uIGNsb25lTm9kZSwgc28g
ZG9uJ3QgY2FjaGUKCS8vIExhc3RseSwgSUU2LDcsOCB3aWxsIG5vdCBjb3JyZWN0
bHkgcmV1c2UgY2FjaGVkIGZyYWdtZW50cyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9t
IHVua25vd24gZWxlbXMgIzEwNTAxCglpZiAoIGFyZ3MubGVuZ3RoID09PSAxICYm
IHR5cGVvZiBmaXJzdCA9PT0gInN0cmluZyIgJiYgZmlyc3QubGVuZ3RoIDwgNTEy
ICYmIGRvYyA9PT0gZG9jdW1lbnQgJiYKCQlmaXJzdC5jaGFyQXQoMCkgPT09ICI8
IiAmJiAhcm5vY2FjaGUudGVzdCggZmlyc3QgKSAmJgoJCShqUXVlcnkuc3VwcG9y
dC5jaGVja0Nsb25lIHx8ICFyY2hlY2tlZC50ZXN0KCBmaXJzdCApKSAmJgoJCShq
UXVlcnkuc3VwcG9ydC5odG1sNUNsb25lIHx8ICFybm9zaGltY2FjaGUudGVzdCgg
Zmlyc3QgKSkgKSB7CgoJCWNhY2hlYWJsZSA9IHRydWU7CgoJCWNhY2hlcmVzdWx0
cyA9IGpRdWVyeS5mcmFnbWVudHNbIGZpcnN0IF07CgkJaWYgKCBjYWNoZXJlc3Vs
dHMgJiYgY2FjaGVyZXN1bHRzICE9PSAxICkgewoJCQlmcmFnbWVudCA9IGNhY2hl
cmVzdWx0czsKCQl9Cgl9CgoJaWYgKCAhZnJhZ21lbnQgKSB7CgkJZnJhZ21lbnQg
PSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwoJCWpRdWVyeS5jbGVhbigg
YXJncywgZG9jLCBmcmFnbWVudCwgc2NyaXB0cyApOwoJfQoKCWlmICggY2FjaGVh
YmxlICkgewoJCWpRdWVyeS5mcmFnbWVudHNbIGZpcnN0IF0gPSBjYWNoZXJlc3Vs
dHMgPyBmcmFnbWVudCA6IDE7Cgl9CgoJcmV0dXJuIHsgZnJhZ21lbnQ6IGZyYWdt
ZW50LCBjYWNoZWFibGU6IGNhY2hlYWJsZSB9Owp9OwoKalF1ZXJ5LmZyYWdtZW50
cyA9IHt9OwoKalF1ZXJ5LmVhY2goewoJYXBwZW5kVG86ICJhcHBlbmQiLAoJcHJl
cGVuZFRvOiAicHJlcGVuZCIsCglpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAoJaW5z
ZXJ0QWZ0ZXI6ICJhZnRlciIsCglyZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCn0s
IGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHsKCWpRdWVyeS5mblsgbmFtZSBd
ID0gZnVuY3Rpb24oIHNlbGVjdG9yICkgewoJCXZhciByZXQgPSBbXSwKCQkJaW5z
ZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLAoJCQlwYXJlbnQgPSB0aGlzLmxlbmd0
aCA9PT0gMSAmJiB0aGlzWzBdLnBhcmVudE5vZGU7CgoJCWlmICggcGFyZW50ICYm
IHBhcmVudC5ub2RlVHlwZSA9PT0gMTEgJiYgcGFyZW50LmNoaWxkTm9kZXMubGVu
Z3RoID09PSAxICYmIGluc2VydC5sZW5ndGggPT09IDEgKSB7CgkJCWluc2VydFsg
b3JpZ2luYWwgXSggdGhpc1swXSApOwoJCQlyZXR1cm4gdGhpczsKCgkJfSBlbHNl
IHsKCQkJZm9yICggdmFyIGkgPSAwLCBsID0gaW5zZXJ0Lmxlbmd0aDsgaSA8IGw7
IGkrKyApIHsKCQkJCXZhciBlbGVtcyA9ICggaSA+IDAgPyB0aGlzLmNsb25lKHRy
dWUpIDogdGhpcyApLmdldCgpOwoJCQkJalF1ZXJ5KCBpbnNlcnRbaV0gKVsgb3Jp
Z2luYWwgXSggZWxlbXMgKTsKCQkJCXJldCA9IHJldC5jb25jYXQoIGVsZW1zICk7
CgkJCX0KCgkJCXJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0LCBuYW1lLCBpbnNl
cnQuc2VsZWN0b3IgKTsKCQl9Cgl9Owp9KTsKCmZ1bmN0aW9uIGdldEFsbCggZWxl
bSApIHsKCWlmICggdHlwZW9mIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09
ICJ1bmRlZmluZWQiICkgewoJCXJldHVybiBlbGVtLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCAiKiIgKTsKCgl9IGVsc2UgaWYgKCB0eXBlb2YgZWxlbS5xdWVyeVNlbGVj
dG9yQWxsICE9PSAidW5kZWZpbmVkIiApIHsKCQlyZXR1cm4gZWxlbS5xdWVyeVNl
bGVjdG9yQWxsKCAiKiIgKTsKCgl9IGVsc2UgewoJCXJldHVybiBbXTsKCX0KfQoK
Ly8gVXNlZCBpbiBjbGVhbiwgZml4ZXMgdGhlIGRlZmF1bHRDaGVja2VkIHByb3Bl
cnR5CmZ1bmN0aW9uIGZpeERlZmF1bHRDaGVja2VkKCBlbGVtICkgewoJaWYgKCBl
bGVtLnR5cGUgPT09ICJjaGVja2JveCIgfHwgZWxlbS50eXBlID09PSAicmFkaW8i
ICkgewoJCWVsZW0uZGVmYXVsdENoZWNrZWQgPSBlbGVtLmNoZWNrZWQ7Cgl9Cn0K
Ly8gRmluZHMgYWxsIGlucHV0cyBhbmQgcGFzc2VzIHRoZW0gdG8gZml4RGVmYXVs
dENoZWNrZWQKZnVuY3Rpb24gZmluZElucHV0cyggZWxlbSApIHsKCXZhciBub2Rl
TmFtZSA9ICggZWxlbS5ub2RlTmFtZSB8fCAiIiApLnRvTG93ZXJDYXNlKCk7Cglp
ZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiICkgewoJCWZpeERlZmF1bHRDaGVja2Vk
KCBlbGVtICk7CgkvLyBTa2lwIHNjcmlwdHMsIGdldCBvdGhlciBjaGlsZHJlbgoJ
fSBlbHNlIGlmICggbm9kZU5hbWUgIT09ICJzY3JpcHQiICYmIHR5cGVvZiBlbGVt
LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKCQlqUXVl
cnkuZ3JlcCggZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSwgZml4
RGVmYXVsdENoZWNrZWQgKTsKCX0KfQoKLy8gRGVyaXZlZCBGcm9tOiBodHRwOi8v
d3d3LmllY3NzLmNvbS9zaGltcHJvdmUvamF2YXNjcmlwdC9zaGltcHJvdmUuMS0w
LTEuanMKZnVuY3Rpb24gc2hpbUNsb25lTm9kZSggZWxlbSApIHsKCXZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOwoJc2FmZUZyYWdtZW50
LmFwcGVuZENoaWxkKCBkaXYgKTsKCglkaXYuaW5uZXJIVE1MID0gZWxlbS5vdXRl
ckhUTUw7CglyZXR1cm4gZGl2LmZpcnN0Q2hpbGQ7Cn0KCmpRdWVyeS5leHRlbmQo
ewoJY2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0
YUFuZEV2ZW50cyApIHsKCQl2YXIgc3JjRWxlbWVudHMsCgkJCWRlc3RFbGVtZW50
cywKCQkJaSwKCQkJLy8gSUU8PTggZG9lcyBub3QgcHJvcGVybHkgY2xvbmUgZGV0
YWNoZWQsIHVua25vd24gZWxlbWVudCBub2RlcwoJCQljbG9uZSA9IGpRdWVyeS5z
dXBwb3J0Lmh0bWw1Q2xvbmUgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCAiPCIgKyBl
bGVtLm5vZGVOYW1lICkgPwoJCQkJZWxlbS5jbG9uZU5vZGUoIHRydWUgKSA6CgkJ
CQlzaGltQ2xvbmVOb2RlKCBlbGVtICk7CgoJCWlmICggKCFqUXVlcnkuc3VwcG9y
dC5ub0Nsb25lRXZlbnQgfHwgIWpRdWVyeS5zdXBwb3J0Lm5vQ2xvbmVDaGVja2Vk
KSAmJgoJCQkJKGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9
PT0gMTEpICYmICFqUXVlcnkuaXNYTUxEb2MoZWxlbSkgKSB7CgkJCS8vIElFIGNv
cGllcyBldmVudHMgYm91bmQgdmlhIGF0dGFjaEV2ZW50IHdoZW4gdXNpbmcgY2xv
bmVOb2RlLgoJCQkvLyBDYWxsaW5nIGRldGFjaEV2ZW50IG9uIHRoZSBjbG9uZSB3
aWxsIGFsc28gcmVtb3ZlIHRoZSBldmVudHMKCQkJLy8gZnJvbSB0aGUgb3JpZ2lu
YWwuIEluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhpcywgd2UgdXNlIHNvbWUKCQkJ
Ly8gcHJvcHJpZXRhcnkgbWV0aG9kcyB0byBjbGVhciB0aGUgZXZlbnRzLiBUaGFu
a3MgdG8gTW9vVG9vbHMKCQkJLy8gZ3V5cyBmb3IgdGhpcyBob3RuZXNzLgoKCQkJ
Y2xvbmVGaXhBdHRyaWJ1dGVzKCBlbGVtLCBjbG9uZSApOwoKCQkJLy8gVXNpbmcg
U2l6emxlIGhlcmUgaXMgY3Jhenkgc2xvdywgc28gd2UgdXNlIGdldEVsZW1lbnRz
QnlUYWdOYW1lIGluc3RlYWQKCQkJc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0g
KTsKCQkJZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwoKCQkJLy8gV2Vp
cmQgaXRlcmF0aW9uIGJlY2F1c2UgSUUgd2lsbCByZXBsYWNlIHRoZSBsZW5ndGgg
cHJvcGVydHkKCQkJLy8gd2l0aCBhbiBlbGVtZW50IGlmIHlvdSBhcmUgY2xvbmlu
ZyB0aGUgYm9keSBhbmQgb25lIG9mIHRoZQoJCQkvLyBlbGVtZW50cyBvbiB0aGUg
cGFnZSBoYXMgYSBuYW1lIG9yIGlkIG9mICJsZW5ndGgiCgkJCWZvciAoIGkgPSAw
OyBzcmNFbGVtZW50c1tpXTsgKytpICkgewoJCQkJLy8gRW5zdXJlIHRoYXQgdGhl
IGRlc3RpbmF0aW9uIG5vZGUgaXMgbm90IG51bGw7IEZpeGVzICM5NTg3CgkJCQlp
ZiAoIGRlc3RFbGVtZW50c1tpXSApIHsKCQkJCQljbG9uZUZpeEF0dHJpYnV0ZXMo
IHNyY0VsZW1lbnRzW2ldLCBkZXN0RWxlbWVudHNbaV0gKTsKCQkJCX0KCQkJfQoJ
CX0KCgkJLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRo
ZSBjbG9uZQoJCWlmICggZGF0YUFuZEV2ZW50cyApIHsKCQkJY2xvbmVDb3B5RXZl
bnQoIGVsZW0sIGNsb25lICk7CgoJCQlpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkg
ewoJCQkJc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsKCQkJCWRlc3RFbGVt
ZW50cyA9IGdldEFsbCggY2xvbmUgKTsKCgkJCQlmb3IgKCBpID0gMDsgc3JjRWxl
bWVudHNbaV07ICsraSApIHsKCQkJCQljbG9uZUNvcHlFdmVudCggc3JjRWxlbWVu
dHNbaV0sIGRlc3RFbGVtZW50c1tpXSApOwoJCQkJfQoJCQl9CgkJfQoKCQlzcmNF
bGVtZW50cyA9IGRlc3RFbGVtZW50cyA9IG51bGw7CgoJCS8vIFJldHVybiB0aGUg
Y2xvbmVkIHNldAoJCXJldHVybiBjbG9uZTsKCX0sCgoJY2xlYW46IGZ1bmN0aW9u
KCBlbGVtcywgY29udGV4dCwgZnJhZ21lbnQsIHNjcmlwdHMgKSB7CgkJdmFyIGNo
ZWNrU2NyaXB0VHlwZTsKCgkJY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7
CgoJCS8vICFjb250ZXh0LmNyZWF0ZUVsZW1lbnQgZmFpbHMgaW4gSUUgd2l0aCBh
biBlcnJvciBidXQgcmV0dXJucyB0eXBlb2YgJ29iamVjdCcKCQlpZiAoIHR5cGVv
ZiBjb250ZXh0LmNyZWF0ZUVsZW1lbnQgPT09ICJ1bmRlZmluZWQiICkgewoJCQlj
b250ZXh0ID0gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHRbMF0gJiYg
Y29udGV4dFswXS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50OwoJCX0KCgkJdmFy
IHJldCA9IFtdLCBqOwoKCQlmb3IgKCB2YXIgaSA9IDAsIGVsZW07IChlbGVtID0g
ZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsKCQkJaWYgKCB0eXBlb2YgZWxlbSA9
PT0gIm51bWJlciIgKSB7CgkJCQllbGVtICs9ICIiOwoJCQl9CgoJCQlpZiAoICFl
bGVtICkgewoJCQkJY29udGludWU7CgkJCX0KCgkJCS8vIENvbnZlcnQgaHRtbCBz
dHJpbmcgaW50byBET00gbm9kZXMKCQkJaWYgKCB0eXBlb2YgZWxlbSA9PT0gInN0
cmluZyIgKSB7CgkJCQlpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7CgkJCQkJ
ZWxlbSA9IGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0gKTsKCQkJCX0gZWxz
ZSB7CgkJCQkJLy8gRml4ICJYSFRNTCItc3R5bGUgdGFncyBpbiBhbGwgYnJvd3Nl
cnMKCQkJCQllbGVtID0gZWxlbS5yZXBsYWNlKHJ4aHRtbFRhZywgIjwkMT48LyQy
PiIpOwoKCQkJCQkvLyBUcmltIHdoaXRlc3BhY2UsIG90aGVyd2lzZSBpbmRleE9m
IHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQKCQkJCQl2YXIgdGFnID0gKCBydGFnTmFt
ZS5leGVjKCBlbGVtICkgfHwgWyIiLCAiIl0gKVsxXS50b0xvd2VyQ2FzZSgpLAoJ
CQkJCQl3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdCwK
CQkJCQkJZGVwdGggPSB3cmFwWzBdLAoJCQkJCQlkaXYgPSBjb250ZXh0LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwoKCQkJCQkvLyBBcHBlbmQgd3JhcHBlciBlbGVtZW50
IHRvIHVua25vd24gZWxlbWVudCBzYWZlIGRvYyBmcmFnbWVudAoJCQkJCWlmICgg
Y29udGV4dCA9PT0gZG9jdW1lbnQgKSB7CgkJCQkJCS8vIFVzZSB0aGUgZnJhZ21l
bnQgd2UndmUgYWxyZWFkeSBjcmVhdGVkIGZvciB0aGlzIGRvY3VtZW50CgkJCQkJ
CXNhZmVGcmFnbWVudC5hcHBlbmRDaGlsZCggZGl2ICk7CgkJCQkJfSBlbHNlIHsK
CQkJCQkJLy8gVXNlIGEgZnJhZ21lbnQgY3JlYXRlZCB3aXRoIHRoZSBvd25lciBk
b2N1bWVudAoJCQkJCQljcmVhdGVTYWZlRnJhZ21lbnQoIGNvbnRleHQgKS5hcHBl
bmRDaGlsZCggZGl2ICk7CgkJCQkJfQoKCQkJCQkvLyBHbyB0byBodG1sIGFuZCBi
YWNrLCB0aGVuIHBlZWwgb2ZmIGV4dHJhIHdyYXBwZXJzCgkJCQkJZGl2LmlubmVy
SFRNTCA9IHdyYXBbMV0gKyBlbGVtICsgd3JhcFsyXTsKCgkJCQkJLy8gTW92ZSB0
byB0aGUgcmlnaHQgZGVwdGgKCQkJCQl3aGlsZSAoIGRlcHRoLS0gKSB7CgkJCQkJ
CWRpdiA9IGRpdi5sYXN0Q2hpbGQ7CgkJCQkJfQoKCQkJCQkvLyBSZW1vdmUgSUUn
cyBhdXRvaW5zZXJ0ZWQgPHRib2R5PiBmcm9tIHRhYmxlIGZyYWdtZW50cwoJCQkJ
CWlmICggIWpRdWVyeS5zdXBwb3J0LnRib2R5ICkgewoKCQkJCQkJLy8gU3RyaW5n
IHdhcyBhIDx0YWJsZT4sICptYXkqIGhhdmUgc3B1cmlvdXMgPHRib2R5PgoJCQkJ
CQl2YXIgaGFzQm9keSA9IHJ0Ym9keS50ZXN0KGVsZW0pLAoJCQkJCQkJdGJvZHkg
PSB0YWcgPT09ICJ0YWJsZSIgJiYgIWhhc0JvZHkgPwoJCQkJCQkJCWRpdi5maXJz
dENoaWxkICYmIGRpdi5maXJzdENoaWxkLmNoaWxkTm9kZXMgOgoKCQkJCQkJCQkv
LyBTdHJpbmcgd2FzIGEgYmFyZSA8dGhlYWQ+IG9yIDx0Zm9vdD4KCQkJCQkJCQl3
cmFwWzFdID09PSAiPHRhYmxlPiIgJiYgIWhhc0JvZHkgPwoJCQkJCQkJCQlkaXYu
Y2hpbGROb2RlcyA6CgkJCQkJCQkJCVtdOwoKCQkJCQkJZm9yICggaiA9IHRib2R5
Lmxlbmd0aCAtIDE7IGogPj0gMCA7IC0taiApIHsKCQkJCQkJCWlmICggalF1ZXJ5
Lm5vZGVOYW1lKCB0Ym9keVsgaiBdLCAidGJvZHkiICkgJiYgIXRib2R5WyBqIF0u
Y2hpbGROb2Rlcy5sZW5ndGggKSB7CgkJCQkJCQkJdGJvZHlbIGogXS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKCB0Ym9keVsgaiBdICk7CgkJCQkJCQl9CgkJCQkJCX0K
CQkJCQl9CgoJCQkJCS8vIElFIGNvbXBsZXRlbHkga2lsbHMgbGVhZGluZyB3aGl0
ZXNwYWNlIHdoZW4gaW5uZXJIVE1MIGlzIHVzZWQKCQkJCQlpZiAoICFqUXVlcnku
c3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBybGVhZGluZ1doaXRlc3BhY2Uu
dGVzdCggZWxlbSApICkgewoJCQkJCQlkaXYuaW5zZXJ0QmVmb3JlKCBjb250ZXh0
LmNyZWF0ZVRleHROb2RlKCBybGVhZGluZ1doaXRlc3BhY2UuZXhlYyhlbGVtKVsw
XSApLCBkaXYuZmlyc3RDaGlsZCApOwoJCQkJCX0KCgkJCQkJZWxlbSA9IGRpdi5j
aGlsZE5vZGVzOwoJCQkJfQoJCQl9CgoJCQkvLyBSZXNldHMgZGVmYXVsdENoZWNr
ZWQgZm9yIGFueSByYWRpb3MgYW5kIGNoZWNrYm94ZXMKCQkJLy8gYWJvdXQgdG8g
YmUgYXBwZW5kZWQgdG8gdGhlIERPTSBpbiBJRSA2LzcgKCM4MDYwKQoJCQl2YXIg
bGVuOwoJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5hcHBlbmRDaGVja2VkICkgewoJ
CQkJaWYgKCBlbGVtWzBdICYmIHR5cGVvZiAobGVuID0gZWxlbS5sZW5ndGgpID09
PSAibnVtYmVyIiApIHsKCQkJCQlmb3IgKCBqID0gMDsgaiA8IGxlbjsgaisrICkg
ewoJCQkJCQlmaW5kSW5wdXRzKCBlbGVtW2pdICk7CgkJCQkJfQoJCQkJfSBlbHNl
IHsKCQkJCQlmaW5kSW5wdXRzKCBlbGVtICk7CgkJCQl9CgkJCX0KCgkJCWlmICgg
ZWxlbS5ub2RlVHlwZSApIHsKCQkJCXJldC5wdXNoKCBlbGVtICk7CgkJCX0gZWxz
ZSB7CgkJCQlyZXQgPSBqUXVlcnkubWVyZ2UoIHJldCwgZWxlbSApOwoJCQl9CgkJ
fQoKCQlpZiAoIGZyYWdtZW50ICkgewoJCQljaGVja1NjcmlwdFR5cGUgPSBmdW5j
dGlvbiggZWxlbSApIHsKCQkJCXJldHVybiAhZWxlbS50eXBlIHx8IHJzY3JpcHRU
eXBlLnRlc3QoIGVsZW0udHlwZSApOwoJCQl9OwoJCQlmb3IgKCBpID0gMDsgcmV0
W2ldOyBpKysgKSB7CgkJCQlpZiAoIHNjcmlwdHMgJiYgalF1ZXJ5Lm5vZGVOYW1l
KCByZXRbaV0sICJzY3JpcHQiICkgJiYgKCFyZXRbaV0udHlwZSB8fCByZXRbaV0u
dHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGV4dC9qYXZhc2NyaXB0IikgKSB7CgkJ
CQkJc2NyaXB0cy5wdXNoKCByZXRbaV0ucGFyZW50Tm9kZSA/IHJldFtpXS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKCByZXRbaV0gKSA6IHJldFtpXSApOwoKCQkJCX0g
ZWxzZSB7CgkJCQkJaWYgKCByZXRbaV0ubm9kZVR5cGUgPT09IDEgKSB7CgkJCQkJ
CXZhciBqc1RhZ3MgPSBqUXVlcnkuZ3JlcCggcmV0W2ldLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCAic2NyaXB0IiApLCBjaGVja1NjcmlwdFR5cGUgKTsKCgkJCQkJCXJl
dC5zcGxpY2UuYXBwbHkoIHJldCwgW2kgKyAxLCAwXS5jb25jYXQoIGpzVGFncyAp
ICk7CgkJCQkJfQoJCQkJCWZyYWdtZW50LmFwcGVuZENoaWxkKCByZXRbaV0gKTsK
CQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHJldDsKCX0sCgoJY2xlYW5EYXRhOiBm
dW5jdGlvbiggZWxlbXMgKSB7CgkJdmFyIGRhdGEsIGlkLAoJCQljYWNoZSA9IGpR
dWVyeS5jYWNoZSwKCQkJc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsLAoJ
CQlkZWxldGVFeHBhbmRvID0galF1ZXJ5LnN1cHBvcnQuZGVsZXRlRXhwYW5kbzsK
CgkJZm9yICggdmFyIGkgPSAwLCBlbGVtOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBu
dWxsOyBpKysgKSB7CgkJCWlmICggZWxlbS5ub2RlTmFtZSAmJiBqUXVlcnkubm9E
YXRhW2VsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0gKSB7CgkJCQljb250aW51
ZTsKCQkJfQoKCQkJaWQgPSBlbGVtWyBqUXVlcnkuZXhwYW5kbyBdOwoKCQkJaWYg
KCBpZCApIHsKCQkJCWRhdGEgPSBjYWNoZVsgaWQgXTsKCgkJCQlpZiAoIGRhdGEg
JiYgZGF0YS5ldmVudHMgKSB7CgkJCQkJZm9yICggdmFyIHR5cGUgaW4gZGF0YS5l
dmVudHMgKSB7CgkJCQkJCWlmICggc3BlY2lhbFsgdHlwZSBdICkgewoJCQkJCQkJ
alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApOwoKCQkJCQkJLy8gVGhp
cyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBv
dmVyaGVhZAoJCQkJCQl9IGVsc2UgewoJCQkJCQkJalF1ZXJ5LnJlbW92ZUV2ZW50
KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApOwoJCQkJCQl9CgkJCQkJfQoKCQkJ
CQkvLyBOdWxsIHRoZSBET00gcmVmZXJlbmNlIHRvIGF2b2lkIElFNi83LzggbGVh
ayAoIzcwNTQpCgkJCQkJaWYgKCBkYXRhLmhhbmRsZSApIHsKCQkJCQkJZGF0YS5o
YW5kbGUuZWxlbSA9IG51bGw7CgkJCQkJfQoJCQkJfQoKCQkJCWlmICggZGVsZXRl
RXhwYW5kbyApIHsKCQkJCQlkZWxldGUgZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXTsK
CgkJCQl9IGVsc2UgaWYgKCBlbGVtLnJlbW92ZUF0dHJpYnV0ZSApIHsKCQkJCQll
bGVtLnJlbW92ZUF0dHJpYnV0ZSggalF1ZXJ5LmV4cGFuZG8gKTsKCQkJCX0KCgkJ
CQlkZWxldGUgY2FjaGVbIGlkIF07CgkJCX0KCQl9Cgl9Cn0pOwoKZnVuY3Rpb24g
ZXZhbFNjcmlwdCggaSwgZWxlbSApIHsKCWlmICggZWxlbS5zcmMgKSB7CgkJalF1
ZXJ5LmFqYXgoewoJCQl1cmw6IGVsZW0uc3JjLAoJCQlhc3luYzogZmFsc2UsCgkJ
CWRhdGFUeXBlOiAic2NyaXB0IgoJCX0pOwoJfSBlbHNlIHsKCQlqUXVlcnkuZ2xv
YmFsRXZhbCggKCBlbGVtLnRleHQgfHwgZWxlbS50ZXh0Q29udGVudCB8fCBlbGVt
LmlubmVySFRNTCB8fCAiIiApLnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgIi8qJDAq
LyIgKSApOwoJfQoKCWlmICggZWxlbS5wYXJlbnROb2RlICkgewoJCWVsZW0ucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApOwoJfQp9CgoKCgp2YXIgcmFscGhh
ID0gL2FscGhhXChbXildKlwpL2ksCglyb3BhY2l0eSA9IC9vcGFjaXR5PShbXild
KikvLAoJLy8gZml4ZWQgZm9yIElFOSwgc2VlICM4MzQ2CglydXBwZXIgPSAvKFtB
LVpdfF5tcykvZywKCXJudW1weCA9IC9eLT9cZCsoPzpweCk/JC9pLAoJcm51bSA9
IC9eLT9cZC8sCglycmVsTnVtID0gL14oW1wtK10pPShbXC0rLlxkZV0rKS8sCgoJ
Y3NzU2hvdyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJo
aWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sCgljc3NXaWR0aCA9IFsgIkxlZnQi
LCAiUmlnaHQiIF0sCgljc3NIZWlnaHQgPSBbICJUb3AiLCAiQm90dG9tIiBdLAoJ
Y3VyQ1NTLAoKCWdldENvbXB1dGVkU3R5bGUsCgljdXJyZW50U3R5bGU7CgpqUXVl
cnkuZm4uY3NzID0gZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewoJLy8gU2V0dGlu
ZyAndW5kZWZpbmVkJyBpcyBhIG5vLW9wCglpZiAoIGFyZ3VtZW50cy5sZW5ndGgg
PT09IDIgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKCQlyZXR1cm4gdGhpczsK
CX0KCglyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgbmFtZSwgdmFsdWUsIHRy
dWUsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHsKCQlyZXR1cm4gdmFs
dWUgIT09IHVuZGVmaW5lZCA/CgkJCWpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwg
dmFsdWUgKSA6CgkJCWpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKCX0pOwp9OwoK
alF1ZXJ5LmV4dGVuZCh7CgkvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3Mg
Zm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQKCS8vIGJlaGF2aW9yIG9mIGdldHRp
bmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQoJY3NzSG9va3M6IHsKCQlv
cGFjaXR5OiB7CgkJCWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewoJ
CQkJaWYgKCBjb21wdXRlZCApIHsKCQkJCQkvLyBXZSBzaG91bGQgYWx3YXlzIGdl
dCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQoJCQkJCXZhciByZXQgPSBjdXJD
U1MoIGVsZW0sICJvcGFjaXR5IiwgIm9wYWNpdHkiICk7CgkJCQkJcmV0dXJuIHJl
dCA9PT0gIiIgPyAiMSIgOiByZXQ7CgoJCQkJfSBlbHNlIHsKCQkJCQlyZXR1cm4g
ZWxlbS5zdHlsZS5vcGFjaXR5OwoJCQkJfQoJCQl9CgkJfQoJfSwKCgkvLyBFeGNs
dWRlIHRoZSBmb2xsb3dpbmcgY3NzIHByb3BlcnRpZXMgdG8gYWRkIHB4Cgljc3NO
dW1iZXI6IHsKCQkiZmlsbE9wYWNpdHkiOiB0cnVlLAoJCSJmb250V2VpZ2h0Ijog
dHJ1ZSwKCQkibGluZUhlaWdodCI6IHRydWUsCgkJIm9wYWNpdHkiOiB0cnVlLAoJ
CSJvcnBoYW5zIjogdHJ1ZSwKCQkid2lkb3dzIjogdHJ1ZSwKCQkiekluZGV4Ijog
dHJ1ZSwKCQkiem9vbSI6IHRydWUKCX0sCgoJLy8gQWRkIGluIHByb3BlcnRpZXMg
d2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZQoJLy8gc2V0dGluZyBv
ciBnZXR0aW5nIHRoZSB2YWx1ZQoJY3NzUHJvcHM6IHsKCQkvLyBub3JtYWxpemUg
ZmxvYXQgY3NzIHByb3BlcnR5CgkJImZsb2F0IjogalF1ZXJ5LnN1cHBvcnQuY3Nz
RmxvYXQgPyAiY3NzRmxvYXQiIDogInN0eWxlRmxvYXQiCgl9LAoKCS8vIEdldCBh
bmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlCglzdHlsZTog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHsKCQkvLyBEb24n
dCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMKCQlpZiAoICFl
bGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0g
OCB8fCAhZWxlbS5zdHlsZSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJLy8gTWFrZSBz
dXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCgkJdmFy
IHJldCwgdHlwZSwgb3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICks
CgkJCXN0eWxlID0gZWxlbS5zdHlsZSwgaG9va3MgPSBqUXVlcnkuY3NzSG9va3Nb
IG9yaWdOYW1lIF07CgoJCW5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1l
IF0gfHwgb3JpZ05hbWU7CgoJCS8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2
YWx1ZQoJCWlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKCQkJdHlwZSA9IHR5
cGVvZiB2YWx1ZTsKCgkJCS8vIGNvbnZlcnQgcmVsYXRpdmUgbnVtYmVyIHN0cmlu
Z3MgKCs9IG9yIC09KSB0byByZWxhdGl2ZSBudW1iZXJzLiAjNzM0NQoJCQlpZiAo
IHR5cGUgPT09ICJzdHJpbmciICYmIChyZXQgPSBycmVsTnVtLmV4ZWMoIHZhbHVl
ICkpICkgewoJCQkJdmFsdWUgPSAoICsoIHJldFsxXSArIDEpICogK3JldFsyXSAp
ICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7CgkJCQkv
LyBGaXhlcyBidWcgIzkyMzcKCQkJCXR5cGUgPSAibnVtYmVyIjsKCQkJfQoKCQkJ
Ly8gTWFrZSBzdXJlIHRoYXQgTmFOIGFuZCBudWxsIHZhbHVlcyBhcmVuJ3Qgc2V0
LiBTZWU6ICM3MTE2CgkJCWlmICggdmFsdWUgPT0gbnVsbCB8fCB0eXBlID09PSAi
bnVtYmVyIiAmJiBpc05hTiggdmFsdWUgKSApIHsKCQkJCXJldHVybjsKCQkJfQoK
CQkJLy8gSWYgYSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkICdweCcgdG8gdGhl
IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpCgkJCWlmICggdHlw
ZSA9PT0gIm51bWJlciIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0g
KSB7CgkJCQl2YWx1ZSArPSAicHgiOwoJCQl9CgoJCQkvLyBJZiBhIGhvb2sgd2Fz
IHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRo
ZSBzcGVjaWZpZWQgdmFsdWUKCQkJaWYgKCAhaG9va3MgfHwgISgic2V0IiBpbiBo
b29rcykgfHwgKHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSApKSAhPT0g
dW5kZWZpbmVkICkgewoJCQkJLy8gV3JhcHBlZCB0byBwcmV2ZW50IElFIGZyb20g
dGhyb3dpbmcgZXJyb3JzIHdoZW4gJ2ludmFsaWQnIHZhbHVlcyBhcmUgcHJvdmlk
ZWQKCQkJCS8vIEZpeGVzIGJ1ZyAjNTUwOQoJCQkJdHJ5IHsKCQkJCQlzdHlsZVsg
bmFtZSBdID0gdmFsdWU7CgkJCQl9IGNhdGNoKGUpIHt9CgkJCX0KCgkJfSBlbHNl
IHsKCQkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21w
dXRlZCB2YWx1ZSBmcm9tIHRoZXJlCgkJCWlmICggaG9va3MgJiYgImdldCIgaW4g
aG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkp
ICE9PSB1bmRlZmluZWQgKSB7CgkJCQlyZXR1cm4gcmV0OwoJCQl9CgoJCQkvLyBP
dGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVj
dAoJCQlyZXR1cm4gc3R5bGVbIG5hbWUgXTsKCQl9Cgl9LAoKCWNzczogZnVuY3Rp
b24oIGVsZW0sIG5hbWUsIGV4dHJhICkgewoJCXZhciByZXQsIGhvb2tzOwoKCQkv
LyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5h
bWUKCQluYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwoJCWhvb2tzID0g
alF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07CgkJbmFtZSA9IGpRdWVyeS5jc3NQcm9w
c1sgbmFtZSBdIHx8IG5hbWU7CgoJCS8vIGNzc0Zsb2F0IG5lZWRzIGEgc3BlY2lh
bCB0cmVhdG1lbnQKCQlpZiAoIG5hbWUgPT09ICJjc3NGbG9hdCIgKSB7CgkJCW5h
bWUgPSAiZmxvYXQiOwoJCX0KCgkJLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBn
ZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmUKCQlpZiAoIGhvb2tzICYm
ICJnZXQiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIHRydWUs
IGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7CgkJCXJldHVybiByZXQ7CgoJCS8v
IE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBl
eGlzdHMsIHVzZSB0aGF0CgkJfSBlbHNlIGlmICggY3VyQ1NTICkgewoJCQlyZXR1
cm4gY3VyQ1NTKCBlbGVtLCBuYW1lICk7CgkJfQoJfSwKCgkvLyBBIG1ldGhvZCBm
b3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0
IGNvcnJlY3QgY2FsY3VsYXRpb25zCglzd2FwOiBmdW5jdGlvbiggZWxlbSwgb3B0
aW9ucywgY2FsbGJhY2sgKSB7CgkJdmFyIG9sZCA9IHt9OwoKCQkvLyBSZW1lbWJl
ciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXMKCQlmb3Ig
KCB2YXIgbmFtZSBpbiBvcHRpb25zICkgewoJCQlvbGRbIG5hbWUgXSA9IGVsZW0u
c3R5bGVbIG5hbWUgXTsKCQkJZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sg
bmFtZSBdOwoJCX0KCgkJY2FsbGJhY2suY2FsbCggZWxlbSApOwoKCQkvLyBSZXZl
cnQgdGhlIG9sZCB2YWx1ZXMKCQlmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CgkJ
CWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOwoJCX0KCX0KfSk7Cgov
LyBERVBSRUNBVEVELCBVc2UgalF1ZXJ5LmNzcygpIGluc3RlYWQKalF1ZXJ5LmN1
ckNTUyA9IGpRdWVyeS5jc3M7CgpqUXVlcnkuZWFjaChbImhlaWdodCIsICJ3aWR0
aCJdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKCWpRdWVyeS5jc3NIb29rc1sgbmFt
ZSBdID0gewoJCWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSAp
IHsKCQkJdmFyIHZhbDsKCgkJCWlmICggY29tcHV0ZWQgKSB7CgkJCQlpZiAoIGVs
ZW0ub2Zmc2V0V2lkdGggIT09IDAgKSB7CgkJCQkJcmV0dXJuIGdldFdIKCBlbGVt
LCBuYW1lLCBleHRyYSApOwoJCQkJfSBlbHNlIHsKCQkJCQlqUXVlcnkuc3dhcCgg
ZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7CgkJCQkJCXZhbCA9IGdldFdIKCBl
bGVtLCBuYW1lLCBleHRyYSApOwoJCQkJCX0pOwoJCQkJfQoKCQkJCXJldHVybiB2
YWw7CgkJCX0KCQl9LAoKCQlzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsK
CQkJaWYgKCBybnVtcHgudGVzdCggdmFsdWUgKSApIHsKCQkJCS8vIGlnbm9yZSBu
ZWdhdGl2ZSB3aWR0aCBhbmQgaGVpZ2h0IHZhbHVlcyAjMTU5OQoJCQkJdmFsdWUg
PSBwYXJzZUZsb2F0KCB2YWx1ZSApOwoKCQkJCWlmICggdmFsdWUgPj0gMCApIHsK
CQkJCQlyZXR1cm4gdmFsdWUgKyAicHgiOwoJCQkJfQoKCQkJfSBlbHNlIHsKCQkJ
CXJldHVybiB2YWx1ZTsKCQkJfQoJCX0KCX07Cn0pOwoKaWYgKCAhalF1ZXJ5LnN1
cHBvcnQub3BhY2l0eSApIHsKCWpRdWVyeS5jc3NIb29rcy5vcGFjaXR5ID0gewoJ
CWdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkgewoJCQkvLyBJRSB1c2Vz
IGZpbHRlcnMgZm9yIG9wYWNpdHkKCQkJcmV0dXJuIHJvcGFjaXR5LnRlc3QoIChj
b21wdXRlZCAmJiBlbGVtLmN1cnJlbnRTdHlsZSA/IGVsZW0uY3VycmVudFN0eWxl
LmZpbHRlciA6IGVsZW0uc3R5bGUuZmlsdGVyKSB8fCAiIiApID8KCQkJCSggcGFy
c2VGbG9hdCggUmVnRXhwLiQxICkgLyAxMDAgKSArICIiIDoKCQkJCWNvbXB1dGVk
ID8gIjEiIDogIiI7CgkJfSwKCgkJc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUg
KSB7CgkJCXZhciBzdHlsZSA9IGVsZW0uc3R5bGUsCgkJCQljdXJyZW50U3R5bGUg
PSBlbGVtLmN1cnJlbnRTdHlsZSwKCQkJCW9wYWNpdHkgPSBqUXVlcnkuaXNOdW1l
cmljKCB2YWx1ZSApID8gImFscGhhKG9wYWNpdHk9IiArIHZhbHVlICogMTAwICsg
IikiIDogIiIsCgkJCQlmaWx0ZXIgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0
eWxlLmZpbHRlciB8fCBzdHlsZS5maWx0ZXIgfHwgIiI7CgoJCQkvLyBJRSBoYXMg
dHJvdWJsZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBub3QgaGF2ZSBsYXlvdXQK
CQkJLy8gRm9yY2UgaXQgYnkgc2V0dGluZyB0aGUgem9vbSBsZXZlbAoJCQlzdHls
ZS56b29tID0gMTsKCgkJCS8vIGlmIHNldHRpbmcgb3BhY2l0eSB0byAxLCBhbmQg
bm8gb3RoZXIgZmlsdGVycyBleGlzdCAtIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbHRl
ciBhdHRyaWJ1dGUgIzY2NTIKCQkJaWYgKCB2YWx1ZSA+PSAxICYmIGpRdWVyeS50
cmltKCBmaWx0ZXIucmVwbGFjZSggcmFscGhhLCAiIiApICkgPT09ICIiICkgewoK
CQkJCS8vIFNldHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYgIiAiIHN0
aWxsIGxlYXZlICJmaWx0ZXI6IiBpbiB0aGUgY3NzVGV4dAoJCQkJLy8gaWYgImZp
bHRlcjoiIGlzIHByZXNlbnQgYXQgYWxsLCBjbGVhclR5cGUgaXMgZGlzYWJsZWQs
IHdlIHdhbnQgdG8gYXZvaWQgdGhpcwoJCQkJLy8gc3R5bGUucmVtb3ZlQXR0cmli
dXRlIGlzIElFIE9ubHksIGJ1dCBzbyBhcHBhcmVudGx5IGlzIHRoaXMgY29kZSBw
YXRoLi4uCgkJCQlzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoICJmaWx0ZXIiICk7CgoJ
CQkJLy8gaWYgdGhlcmUgdGhlcmUgaXMgbm8gZmlsdGVyIHN0eWxlIGFwcGxpZWQg
aW4gYSBjc3MgcnVsZSwgd2UgYXJlIGRvbmUKCQkJCWlmICggY3VycmVudFN0eWxl
ICYmICFjdXJyZW50U3R5bGUuZmlsdGVyICkgewoJCQkJCXJldHVybjsKCQkJCX0K
CQkJfQoKCQkJLy8gb3RoZXJ3aXNlLCBzZXQgbmV3IGZpbHRlciB2YWx1ZXMKCQkJ
c3R5bGUuZmlsdGVyID0gcmFscGhhLnRlc3QoIGZpbHRlciApID8KCQkJCWZpbHRl
ci5yZXBsYWNlKCByYWxwaGEsIG9wYWNpdHkgKSA6CgkJCQlmaWx0ZXIgKyAiICIg
KyBvcGFjaXR5OwoJCX0KCX07Cn0KCmpRdWVyeShmdW5jdGlvbigpIHsKCS8vIFRo
aXMgaG9vayBjYW5ub3QgYmUgYWRkZWQgdW50aWwgRE9NIHJlYWR5IGJlY2F1c2Ug
dGhlIHN1cHBvcnQgdGVzdAoJLy8gZm9yIGl0IGlzIG5vdCBydW4gdW50aWwgYWZ0
ZXIgRE9NIHJlYWR5CglpZiAoICFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZU1hcmdp
blJpZ2h0ICkgewoJCWpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsKCQkJ
Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CgkJCQkvLyBXZWJLaXQg
QnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVl
IGZvciBtYXJnaW4tcmlnaHQKCQkJCS8vIFdvcmsgYXJvdW5kIGJ5IHRlbXBvcmFy
aWx5IHNldHRpbmcgZWxlbWVudCBkaXNwbGF5IHRvIGlubGluZS1ibG9jawoJCQkJ
dmFyIHJldDsKCQkJCWpRdWVyeS5zd2FwKCBlbGVtLCB7ICJkaXNwbGF5IjogImlu
bGluZS1ibG9jayIgfSwgZnVuY3Rpb24oKSB7CgkJCQkJaWYgKCBjb21wdXRlZCAp
IHsKCQkJCQkJcmV0ID0gY3VyQ1NTKCBlbGVtLCAibWFyZ2luLXJpZ2h0IiwgIm1h
cmdpblJpZ2h0IiApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXJldCA9IGVsZW0uc3R5
bGUubWFyZ2luUmlnaHQ7CgkJCQkJfQoJCQkJfSk7CgkJCQlyZXR1cm4gcmV0OwoJ
CQl9CgkJfTsKCX0KfSk7CgppZiAoIGRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUgKSB7CglnZXRDb21w
dXRlZFN0eWxlID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CgkJdmFyIHJldCwg
ZGVmYXVsdFZpZXcsIGNvbXB1dGVkU3R5bGU7CgoJCW5hbWUgPSBuYW1lLnJlcGxh
Y2UoIHJ1cHBlciwgIi0kMSIgKS50b0xvd2VyQ2FzZSgpOwoKCQlpZiAoIChkZWZh
dWx0VmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgJiYKCQkJ
CShjb21wdXRlZFN0eWxlID0gZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSgg
ZWxlbSwgbnVsbCApKSApIHsKCQkJcmV0ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCBuYW1lICk7CgkJCWlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5
LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBl
bGVtICkgKSB7CgkJCQlyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTsK
CQkJfQoJCX0KCgkJcmV0dXJuIHJldDsKCX07Cn0KCmlmICggZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSApIHsKCWN1cnJlbnRTdHlsZSA9IGZ1
bmN0aW9uKCBlbGVtLCBuYW1lICkgewoJCXZhciBsZWZ0LCByc0xlZnQsIHVuY29t
cHV0ZWQsCgkJCXJldCA9IGVsZW0uY3VycmVudFN0eWxlICYmIGVsZW0uY3VycmVu
dFN0eWxlWyBuYW1lIF0sCgkJCXN0eWxlID0gZWxlbS5zdHlsZTsKCgkJLy8gQXZv
aWQgc2V0dGluZyByZXQgdG8gZW1wdHkgc3RyaW5nIGhlcmUKCQkvLyBzbyB3ZSBk
b24ndCBkZWZhdWx0IHRvIGF1dG8KCQlpZiAoIHJldCA9PT0gbnVsbCAmJiBzdHls
ZSAmJiAodW5jb21wdXRlZCA9IHN0eWxlWyBuYW1lIF0pICkgewoJCQlyZXQgPSB1
bmNvbXB1dGVkOwoJCX0KCgkJLy8gRnJvbSB0aGUgYXdlc29tZSBoYWNrIGJ5IERl
YW4gRWR3YXJkcwoJCS8vIGh0dHA6Ly9lcmlrLmVhZS5uZXQvYXJjaGl2ZXMvMjAw
Ny8wNy8yNy8xOC41NC4xNS8jY29tbWVudC0xMDIyOTEKCgkJLy8gSWYgd2UncmUg
bm90IGRlYWxpbmcgd2l0aCBhIHJlZ3VsYXIgcGl4ZWwgbnVtYmVyCgkJLy8gYnV0
IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5nLCB3ZSBuZWVkIHRvIGNv
bnZlcnQgaXQgdG8gcGl4ZWxzCgkJaWYgKCAhcm51bXB4LnRlc3QoIHJldCApICYm
IHJudW0udGVzdCggcmV0ICkgKSB7CgoJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2lu
YWwgdmFsdWVzCgkJCWxlZnQgPSBzdHlsZS5sZWZ0OwoJCQlyc0xlZnQgPSBlbGVt
LnJ1bnRpbWVTdHlsZSAmJiBlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0OwoKCQkJLy8g
UHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91
dAoJCQlpZiAoIHJzTGVmdCApIHsKCQkJCWVsZW0ucnVudGltZVN0eWxlLmxlZnQg
PSBlbGVtLmN1cnJlbnRTdHlsZS5sZWZ0OwoJCQl9CgkJCXN0eWxlLmxlZnQgPSBu
YW1lID09PSAiZm9udFNpemUiID8gIjFlbSIgOiAoIHJldCB8fCAwICk7CgkJCXJl
dCA9IHN0eWxlLnBpeGVsTGVmdCArICJweCI7CgoJCQkvLyBSZXZlcnQgdGhlIGNo
YW5nZWQgdmFsdWVzCgkJCXN0eWxlLmxlZnQgPSBsZWZ0OwoJCQlpZiAoIHJzTGVm
dCApIHsKCQkJCWVsZW0ucnVudGltZVN0eWxlLmxlZnQgPSByc0xlZnQ7CgkJCX0K
CQl9CgoJCXJldHVybiByZXQgPT09ICIiID8gImF1dG8iIDogcmV0OwoJfTsKfQoK
Y3VyQ1NTID0gZ2V0Q29tcHV0ZWRTdHlsZSB8fCBjdXJyZW50U3R5bGU7CgpmdW5j
dGlvbiBnZXRXSCggZWxlbSwgbmFtZSwgZXh0cmEgKSB7CgoJLy8gU3RhcnQgd2l0
aCBvZmZzZXQgcHJvcGVydHkKCXZhciB2YWwgPSBuYW1lID09PSAid2lkdGgiID8g
ZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0LAoJCXdoaWNoID0g
bmFtZSA9PT0gIndpZHRoIiA/IGNzc1dpZHRoIDogY3NzSGVpZ2h0LAoJCWkgPSAw
LAoJCWxlbiA9IHdoaWNoLmxlbmd0aDsKCglpZiAoIHZhbCA+IDAgKSB7CgkJaWYg
KCBleHRyYSAhPT0gImJvcmRlciIgKSB7CgkJCWZvciAoIDsgaSA8IGxlbjsgaSsr
ICkgewoJCQkJaWYgKCAhZXh0cmEgKSB7CgkJCQkJdmFsIC09IHBhcnNlRmxvYXQo
IGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIHdoaWNoWyBpIF0gKSApIHx8
IDA7CgkJCQl9CgkJCQlpZiAoIGV4dHJhID09PSAibWFyZ2luIiApIHsKCQkJCQl2
YWwgKz0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyB3aGlj
aFsgaSBdICkgKSB8fCAwOwoJCQkJfSBlbHNlIHsKCQkJCQl2YWwgLT0gcGFyc2VG
bG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyB3aGljaFsgaSBdICsg
IldpZHRoIiApICkgfHwgMDsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHZhbCAr
ICJweCI7Cgl9CgoJLy8gRmFsbCBiYWNrIHRvIGNvbXB1dGVkIHRoZW4gdW5jb21w
dXRlZCBjc3MgaWYgbmVjZXNzYXJ5Cgl2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUs
IG5hbWUgKTsKCWlmICggdmFsIDwgMCB8fCB2YWwgPT0gbnVsbCApIHsKCQl2YWwg
PSBlbGVtLnN0eWxlWyBuYW1lIF0gfHwgMDsKCX0KCS8vIE5vcm1hbGl6ZSAiIiwg
YXV0bywgYW5kIHByZXBhcmUgZm9yIGV4dHJhCgl2YWwgPSBwYXJzZUZsb2F0KCB2
YWwgKSB8fCAwOwoKCS8vIEFkZCBwYWRkaW5nLCBib3JkZXIsIG1hcmdpbgoJaWYg
KCBleHRyYSApIHsKCQlmb3IgKCA7IGkgPCBsZW47IGkrKyApIHsKCQkJdmFsICs9
IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoIGVsZW0sICJwYWRkaW5nIiArIHdoaWNo
WyBpIF0gKSApIHx8IDA7CgkJCWlmICggZXh0cmEgIT09ICJwYWRkaW5nIiApIHsK
CQkJCXZhbCArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCAiYm9yZGVy
IiArIHdoaWNoWyBpIF0gKyAiV2lkdGgiICkgKSB8fCAwOwoJCQl9CgkJCWlmICgg
ZXh0cmEgPT09ICJtYXJnaW4iICkgewoJCQkJdmFsICs9IHBhcnNlRmxvYXQoIGpR
dWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgd2hpY2hbIGkgXSApICkgfHwgMDsKCQkJ
fQoJCX0KCX0KCglyZXR1cm4gdmFsICsgInB4IjsKfQoKaWYgKCBqUXVlcnkuZXhw
ciAmJiBqUXVlcnkuZXhwci5maWx0ZXJzICkgewoJalF1ZXJ5LmV4cHIuZmlsdGVy
cy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHsKCQl2YXIgd2lkdGggPSBlbGVt
Lm9mZnNldFdpZHRoLAoJCQloZWlnaHQgPSBlbGVtLm9mZnNldEhlaWdodDsKCgkJ
cmV0dXJuICggd2lkdGggPT09IDAgJiYgaGVpZ2h0ID09PSAwICkgfHwgKCFqUXVl
cnkuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgJiYgKChlbGVtLnN0eWxl
ICYmIGVsZW0uc3R5bGUuZGlzcGxheSkgfHwgalF1ZXJ5LmNzcyggZWxlbSwgImRp
c3BsYXkiICkpID09PSAibm9uZSIpOwoJfTsKCglqUXVlcnkuZXhwci5maWx0ZXJz
LnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4gIWpRdWVyeS5l
eHByLmZpbHRlcnMuaGlkZGVuKCBlbGVtICk7Cgl9Owp9CgoKCgp2YXIgcjIwID0g
LyUyMC9nLAoJcmJyYWNrZXQgPSAvXFtcXSQvLAoJckNSTEYgPSAvXHI/XG4vZywK
CXJoYXNoID0gLyMuKiQvLAoJcmhlYWRlcnMgPSAvXiguKj8pOlsgXHRdKihbXlxy
XG5dKilccj8kL21nLCAvLyBJRSBsZWF2ZXMgYW4gXHIgY2hhcmFjdGVyIGF0IEVP
TAoJcmlucHV0ID0gL14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxv
Y2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2Vh
cmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLAoJLy8gIzc2NTMsICM4MTI1
LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uCglybG9jYWxQcm90b2Nv
bCA9IC9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZp
bGV8cmVzfHdpZGdldCk6JC8sCglybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkk
LywKCXJwcm90b2NvbCA9IC9eXC9cLy8sCglycXVlcnkgPSAvXD8vLAoJcnNjcmlw
dCA9IC88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9z
Y3JpcHQ+L2dpLAoJcnNlbGVjdFRleHRhcmVhID0gL14oPzpzZWxlY3R8dGV4dGFy
ZWEpL2ksCglyc3BhY2VzQWpheCA9IC9ccysvLAoJcnRzID0gLyhbPyZdKV89W14m
XSovLAoJcnVybCA9IC9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKiko
Pzo6KFxkKykpPyk/LywKCgkvLyBLZWVwIGEgY29weSBvZiB0aGUgb2xkIGxvYWQg
bWV0aG9kCglfbG9hZCA9IGpRdWVyeS5mbi5sb2FkLAoKCS8qIFByZWZpbHRlcnMK
CSAqIDEpIFRoZXkgYXJlIHVzZWZ1bCB0byBpbnRyb2R1Y2UgY3VzdG9tIGRhdGFU
eXBlcyAoc2VlIGFqYXgvanNvbnAuanMgZm9yIGFuIGV4YW1wbGUpCgkgKiAyKSBU
aGVzZSBhcmUgY2FsbGVkOgoJICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRy
YW5zcG9ydAoJICogICAgLSBBRlRFUiBwYXJhbSBzZXJpYWxpemF0aW9uIChzLmRh
dGEgaXMgYSBzdHJpbmcgaWYgcy5wcm9jZXNzRGF0YSBpcyB0cnVlKQoJICogMykg
a2V5IGlzIHRoZSBkYXRhVHlwZQoJICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCAi
KiIgY2FuIGJlIHVzZWQKCSAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGgg
dHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gIioi
IGlmIG5lZWRlZAoJICovCglwcmVmaWx0ZXJzID0ge30sCgoJLyogVHJhbnNwb3J0
cyBiaW5kaW5ncwoJICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQoJICogMikgdGhl
IGNhdGNoYWxsIHN5bWJvbCAiKiIgY2FuIGJlIHVzZWQKCSAqIDMpIHNlbGVjdGlv
biB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdv
IHRvICIqIiBpZiBuZWVkZWQKCSAqLwoJdHJhbnNwb3J0cyA9IHt9LAoKCS8vIERv
Y3VtZW50IGxvY2F0aW9uCglhamF4TG9jYXRpb24sCgoJLy8gRG9jdW1lbnQgbG9j
YXRpb24gc2VnbWVudHMKCWFqYXhMb2NQYXJ0cywKCgkvLyBBdm9pZCBjb21tZW50
LXByb2xvZyBjaGFyIHNlcXVlbmNlICgjMTAwOTgpOyBtdXN0IGFwcGVhc2UgbGlu
dCBhbmQgZXZhZGUgY29tcHJlc3Npb24KCWFsbFR5cGVzID0gWyIqLyJdICsgWyIq
Il07CgovLyAjODEzOCwgSUUgbWF5IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGFj
Y2Vzc2luZwovLyBhIGZpZWxkIGZyb20gd2luZG93LmxvY2F0aW9uIGlmIGRvY3Vt
ZW50LmRvbWFpbiBoYXMgYmVlbiBzZXQKdHJ5IHsKCWFqYXhMb2NhdGlvbiA9IGxv
Y2F0aW9uLmhyZWY7Cn0gY2F0Y2goIGUgKSB7CgkvLyBVc2UgdGhlIGhyZWYgYXR0
cmlidXRlIG9mIGFuIEEgZWxlbWVudAoJLy8gc2luY2UgSUUgd2lsbCBtb2RpZnkg
aXQgZ2l2ZW4gZG9jdW1lbnQubG9jYXRpb24KCWFqYXhMb2NhdGlvbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoICJhIiApOwoJYWpheExvY2F0aW9uLmhyZWYgPSAi
IjsKCWFqYXhMb2NhdGlvbiA9IGFqYXhMb2NhdGlvbi5ocmVmOwp9CgovLyBTZWdt
ZW50IGxvY2F0aW9uIGludG8gcGFydHMKYWpheExvY1BhcnRzID0gcnVybC5leGVj
KCBhamF4TG9jYXRpb24udG9Mb3dlckNhc2UoKSApIHx8IFtdOwoKLy8gQmFzZSAi
Y29uc3RydWN0b3IiIGZvciBqUXVlcnkuYWpheFByZWZpbHRlciBhbmQgalF1ZXJ5
LmFqYXhUcmFuc3BvcnQKZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3Bv
cnRzKCBzdHJ1Y3R1cmUgKSB7CgoJLy8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9w
dGlvbmFsIGFuZCBkZWZhdWx0cyB0byAiKiIKCXJldHVybiBmdW5jdGlvbiggZGF0
YVR5cGVFeHByZXNzaW9uLCBmdW5jICkgewoKCQlpZiAoIHR5cGVvZiBkYXRhVHlw
ZUV4cHJlc3Npb24gIT09ICJzdHJpbmciICkgewoJCQlmdW5jID0gZGF0YVR5cGVF
eHByZXNzaW9uOwoJCQlkYXRhVHlwZUV4cHJlc3Npb24gPSAiKiI7CgkJfQoKCQlp
ZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmdW5jICkgKSB7CgkJCXZhciBkYXRhVHlw
ZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5zcGxpdCggcnNw
YWNlc0FqYXggKSwKCQkJCWkgPSAwLAoJCQkJbGVuZ3RoID0gZGF0YVR5cGVzLmxl
bmd0aCwKCQkJCWRhdGFUeXBlLAoJCQkJbGlzdCwKCQkJCXBsYWNlQmVmb3JlOwoK
CQkJLy8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lv
bgoJCQlmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKCQkJCWRhdGFUeXBlID0g
ZGF0YVR5cGVzWyBpIF07CgkJCQkvLyBXZSBjb250cm9sIGlmIHdlJ3JlIGFza2Vk
IHRvIGFkZCBiZWZvcmUKCQkJCS8vIGFueSBleGlzdGluZyBlbGVtZW50CgkJCQlw
bGFjZUJlZm9yZSA9IC9eXCsvLnRlc3QoIGRhdGFUeXBlICk7CgkJCQlpZiAoIHBs
YWNlQmVmb3JlICkgewoJCQkJCWRhdGFUeXBlID0gZGF0YVR5cGUuc3Vic3RyKCAx
ICkgfHwgIioiOwoJCQkJfQoJCQkJbGlzdCA9IHN0cnVjdHVyZVsgZGF0YVR5cGUg
XSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXTsKCQkJCS8vIHRoZW4gd2Ug
YWRkIHRvIHRoZSBzdHJ1Y3R1cmUgYWNjb3JkaW5nbHkKCQkJCWxpc3RbIHBsYWNl
QmVmb3JlID8gInVuc2hpZnQiIDogInB1c2giIF0oIGZ1bmMgKTsKCQkJfQoJCX0K
CX07Cn0KCi8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVy
cyBhbmQgdHJhbnNwb3J0cwpmdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJh
bnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpx
WEhSLAoJCWRhdGFUeXBlIC8qIGludGVybmFsICovLCBpbnNwZWN0ZWQgLyogaW50
ZXJuYWwgKi8gKSB7CgoJZGF0YVR5cGUgPSBkYXRhVHlwZSB8fCBvcHRpb25zLmRh
dGFUeXBlc1sgMCBdOwoJaW5zcGVjdGVkID0gaW5zcGVjdGVkIHx8IHt9OwoKCWlu
c3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7CgoJdmFyIGxpc3QgPSBzdHJ1Y3R1
cmVbIGRhdGFUeXBlIF0sCgkJaSA9IDAsCgkJbGVuZ3RoID0gbGlzdCA/IGxpc3Qu
bGVuZ3RoIDogMCwKCQlleGVjdXRlT25seSA9ICggc3RydWN0dXJlID09PSBwcmVm
aWx0ZXJzICksCgkJc2VsZWN0aW9uOwoKCWZvciAoIDsgaSA8IGxlbmd0aCAmJiAo
IGV4ZWN1dGVPbmx5IHx8ICFzZWxlY3Rpb24gKTsgaSsrICkgewoJCXNlbGVjdGlv
biA9IGxpc3RbIGkgXSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiAp
OwoJCS8vIElmIHdlIGdvdCByZWRpcmVjdGVkIHRvIGFub3RoZXIgZGF0YVR5cGUK
CQkvLyB3ZSB0cnkgdGhlcmUgaWYgZXhlY3V0aW5nIG9ubHkgYW5kIG5vdCBkb25l
IGFscmVhZHkKCQlpZiAoIHR5cGVvZiBzZWxlY3Rpb24gPT09ICJzdHJpbmciICkg
ewoJCQlpZiAoICFleGVjdXRlT25seSB8fCBpbnNwZWN0ZWRbIHNlbGVjdGlvbiBd
ICkgewoJCQkJc2VsZWN0aW9uID0gdW5kZWZpbmVkOwoJCQl9IGVsc2UgewoJCQkJ
b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggc2VsZWN0aW9uICk7CgkJCQlzZWxl
Y3Rpb24gPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cygKCQkJCQkJc3Ry
dWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSLCBzZWxlY3Rp
b24sIGluc3BlY3RlZCApOwoJCQl9CgkJfQoJfQoJLy8gSWYgd2UncmUgb25seSBl
eGVjdXRpbmcgb3Igbm90aGluZyB3YXMgc2VsZWN0ZWQKCS8vIHdlIHRyeSB0aGUg
Y2F0Y2hhbGwgZGF0YVR5cGUgaWYgbm90IGRvbmUgYWxyZWFkeQoJaWYgKCAoIGV4
ZWN1dGVPbmx5IHx8ICFzZWxlY3Rpb24gKSAmJiAhaW5zcGVjdGVkWyAiKiIgXSAp
IHsKCQlzZWxlY3Rpb24gPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cygK
CQkJCXN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiwg
IioiLCBpbnNwZWN0ZWQgKTsKCX0KCS8vIHVubmVjZXNzYXJ5IHdoZW4gb25seSBl
eGVjdXRpbmcgKHByZWZpbHRlcnMpCgkvLyBidXQgaXQnbGwgYmUgaWdub3JlZCBi
eSB0aGUgY2FsbGVyIGluIHRoYXQgY2FzZQoJcmV0dXJuIHNlbGVjdGlvbjsKfQoK
Ly8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zCi8vIHRoYXQgdGFr
ZXMgImZsYXQiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKQovLyBG
aXhlcyAjOTg4NwpmdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHsK
CXZhciBrZXksIGRlZXAsCgkJZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRp
bmdzLmZsYXRPcHRpb25zIHx8IHt9OwoJZm9yICgga2V5IGluIHNyYyApIHsKCQlp
ZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHsKCQkJKCBmbGF0T3B0aW9u
c1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKCBkZWVwID0ge30gKSApIClb
IGtleSBdID0gc3JjWyBrZXkgXTsKCQl9Cgl9CglpZiAoIGRlZXAgKSB7CgkJalF1
ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7Cgl9Cn0KCmpRdWVyeS5m
bi5leHRlbmQoewoJbG9hZDogZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFj
ayApIHsKCQlpZiAoIHR5cGVvZiB1cmwgIT09ICJzdHJpbmciICYmIF9sb2FkICkg
ewoJCQlyZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwoKCQkv
LyBEb24ndCBkbyBhIHJlcXVlc3QgaWYgbm8gZWxlbWVudHMgYXJlIGJlaW5nIHJl
cXVlc3RlZAoJCX0gZWxzZSBpZiAoICF0aGlzLmxlbmd0aCApIHsKCQkJcmV0dXJu
IHRoaXM7CgkJfQoKCQl2YXIgb2ZmID0gdXJsLmluZGV4T2YoICIgIiApOwoJCWlm
ICggb2ZmID49IDAgKSB7CgkJCXZhciBzZWxlY3RvciA9IHVybC5zbGljZSggb2Zm
LCB1cmwubGVuZ3RoICk7CgkJCXVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7CgkJ
fQoKCQkvLyBEZWZhdWx0IHRvIGEgR0VUIHJlcXVlc3QKCQl2YXIgdHlwZSA9ICJH
RVQiOwoKCQkvLyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQK
CQlpZiAoIHBhcmFtcyApIHsKCQkJLy8gSWYgaXQncyBhIGZ1bmN0aW9uCgkJCWlm
ICggalF1ZXJ5LmlzRnVuY3Rpb24oIHBhcmFtcyApICkgewoJCQkJLy8gV2UgYXNz
dW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2sKCQkJCWNhbGxiYWNrID0gcGFyYW1z
OwoJCQkJcGFyYW1zID0gdW5kZWZpbmVkOwoKCQkJLy8gT3RoZXJ3aXNlLCBidWls
ZCBhIHBhcmFtIHN0cmluZwoJCQl9IGVsc2UgaWYgKCB0eXBlb2YgcGFyYW1zID09
PSAib2JqZWN0IiApIHsKCQkJCXBhcmFtcyA9IGpRdWVyeS5wYXJhbSggcGFyYW1z
LCBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsICk7CgkJCQl0eXBlID0g
IlBPU1QiOwoJCQl9CgkJfQoKCQl2YXIgc2VsZiA9IHRoaXM7CgoJCS8vIFJlcXVl
c3QgdGhlIHJlbW90ZSBkb2N1bWVudAoJCWpRdWVyeS5hamF4KHsKCQkJdXJsOiB1
cmwsCgkJCXR5cGU6IHR5cGUsCgkJCWRhdGFUeXBlOiAiaHRtbCIsCgkJCWRhdGE6
IHBhcmFtcywKCQkJLy8gQ29tcGxldGUgY2FsbGJhY2sgKHJlc3BvbnNlVGV4dCBp
cyB1c2VkIGludGVybmFsbHkpCgkJCWNvbXBsZXRlOiBmdW5jdGlvbigganFYSFIs
IHN0YXR1cywgcmVzcG9uc2VUZXh0ICkgewoJCQkJLy8gU3RvcmUgdGhlIHJlc3Bv
bnNlIGFzIHNwZWNpZmllZCBieSB0aGUganFYSFIgb2JqZWN0CgkJCQlyZXNwb25z
ZVRleHQgPSBqcVhIUi5yZXNwb25zZVRleHQ7CgkJCQkvLyBJZiBzdWNjZXNzZnVs
LCBpbmplY3QgdGhlIEhUTUwgaW50byBhbGwgdGhlIG1hdGNoZWQgZWxlbWVudHMK
CQkJCWlmICgganFYSFIuaXNSZXNvbHZlZCgpICkgewoJCQkJCS8vICM0ODI1OiBH
ZXQgdGhlIGFjdHVhbCByZXNwb25zZSBpbiBjYXNlCgkJCQkJLy8gYSBkYXRhRmls
dGVyIGlzIHByZXNlbnQgaW4gYWpheFNldHRpbmdzCgkJCQkJanFYSFIuZG9uZShm
dW5jdGlvbiggciApIHsKCQkJCQkJcmVzcG9uc2VUZXh0ID0gcjsKCQkJCQl9KTsK
CQkJCQkvLyBTZWUgaWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkCgkJCQkJc2Vs
Zi5odG1sKCBzZWxlY3RvciA/CgkJCQkJCS8vIENyZWF0ZSBhIGR1bW15IGRpdiB0
byBob2xkIHRoZSByZXN1bHRzCgkJCQkJCWpRdWVyeSgiPGRpdj4iKQoJCQkJCQkJ
Ly8gaW5qZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQgaW4sIHJlbW92
aW5nIHRoZSBzY3JpcHRzCgkJCQkJCQkvLyB0byBhdm9pZCBhbnkgJ1Blcm1pc3Np
b24gRGVuaWVkJyBlcnJvcnMgaW4gSUUKCQkJCQkJCS5hcHBlbmQocmVzcG9uc2VU
ZXh0LnJlcGxhY2UocnNjcmlwdCwgIiIpKQoKCQkJCQkJCS8vIExvY2F0ZSB0aGUg
c3BlY2lmaWVkIGVsZW1lbnRzCgkJCQkJCQkuZmluZChzZWxlY3RvcikgOgoKCQkJ
CQkJLy8gSWYgbm90LCBqdXN0IGluamVjdCB0aGUgZnVsbCByZXN1bHQKCQkJCQkJ
cmVzcG9uc2VUZXh0ICk7CgkJCQl9CgoJCQkJaWYgKCBjYWxsYmFjayApIHsKCQkJ
CQlzZWxmLmVhY2goIGNhbGxiYWNrLCBbIHJlc3BvbnNlVGV4dCwgc3RhdHVzLCBq
cVhIUiBdICk7CgkJCQl9CgkJCX0KCQl9KTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoK
CXNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIGpRdWVyeS5wYXJhbSgg
dGhpcy5zZXJpYWxpemVBcnJheSgpICk7Cgl9LAoKCXNlcmlhbGl6ZUFycmF5OiBm
dW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKCQkJcmV0
dXJuIHRoaXMuZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCB0aGlzLmVsZW1l
bnRzICkgOiB0aGlzOwoJCX0pCgkJLmZpbHRlcihmdW5jdGlvbigpewoJCQlyZXR1
cm4gdGhpcy5uYW1lICYmICF0aGlzLmRpc2FibGVkICYmCgkJCQkoIHRoaXMuY2hl
Y2tlZCB8fCByc2VsZWN0VGV4dGFyZWEudGVzdCggdGhpcy5ub2RlTmFtZSApIHx8
CgkJCQkJcmlucHV0LnRlc3QoIHRoaXMudHlwZSApICk7CgkJfSkKCQkubWFwKGZ1
bmN0aW9uKCBpLCBlbGVtICl7CgkJCXZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52
YWwoKTsKCgkJCXJldHVybiB2YWwgPT0gbnVsbCA/CgkJCQludWxsIDoKCQkJCWpR
dWVyeS5pc0FycmF5KCB2YWwgKSA/CgkJCQkJalF1ZXJ5Lm1hcCggdmFsLCBmdW5j
dGlvbiggdmFsLCBpICl7CgkJCQkJCXJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwg
dmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgIlxyXG4iICkgfTsKCQkJCQl9KSA6
CgkJCQkJeyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNS
TEYsICJcclxuIiApIH07CgkJfSkuZ2V0KCk7Cgl9Cn0pOwoKLy8gQXR0YWNoIGEg
YnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVu
dHMKalF1ZXJ5LmVhY2goICJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRl
IGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoICIgIiApLCBm
dW5jdGlvbiggaSwgbyApewoJalF1ZXJ5LmZuWyBvIF0gPSBmdW5jdGlvbiggZiAp
ewoJCXJldHVybiB0aGlzLm9uKCBvLCBmICk7Cgl9Owp9KTsKCmpRdWVyeS5lYWNo
KCBbICJnZXQiLCAicG9zdCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHsKCWpR
dWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywg
dHlwZSApIHsKCQkvLyBzaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3
YXMgb21pdHRlZAoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHsK
CQkJdHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7CgkJCWNhbGxiYWNrID0gZGF0YTsK
CQkJZGF0YSA9IHVuZGVmaW5lZDsKCQl9CgoJCXJldHVybiBqUXVlcnkuYWpheCh7
CgkJCXR5cGU6IG1ldGhvZCwKCQkJdXJsOiB1cmwsCgkJCWRhdGE6IGRhdGEsCgkJ
CXN1Y2Nlc3M6IGNhbGxiYWNrLAoJCQlkYXRhVHlwZTogdHlwZQoJCX0pOwoJfTsK
fSk7CgpqUXVlcnkuZXh0ZW5kKHsKCglnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmws
IGNhbGxiYWNrICkgewoJCXJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5l
ZCwgY2FsbGJhY2ssICJzY3JpcHQiICk7Cgl9LAoKCWdldEpTT046IGZ1bmN0aW9u
KCB1cmwsIGRhdGEsIGNhbGxiYWNrICkgewoJCXJldHVybiBqUXVlcnkuZ2V0KCB1
cmwsIGRhdGEsIGNhbGxiYWNrLCAianNvbiIgKTsKCX0sCgoJLy8gQ3JlYXRlcyBh
IGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXQKCS8vIHdp
dGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy4KCS8vIElm
IHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuCglh
amF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkgewoJCWlmICgg
c2V0dGluZ3MgKSB7CgkJCS8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0CgkJ
CWFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApOwoJCX0g
ZWxzZSB7CgkJCS8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3MKCQkJc2V0dGluZ3Mg
PSB0YXJnZXQ7CgkJCXRhcmdldCA9IGpRdWVyeS5hamF4U2V0dGluZ3M7CgkJfQoJ
CWFqYXhFeHRlbmQoIHRhcmdldCwgc2V0dGluZ3MgKTsKCQlyZXR1cm4gdGFyZ2V0
OwoJfSwKCglhamF4U2V0dGluZ3M6IHsKCQl1cmw6IGFqYXhMb2NhdGlvbiwKCQlp
c0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBhamF4TG9jUGFydHNbIDEgXSAp
LAoJCWdsb2JhbDogdHJ1ZSwKCQl0eXBlOiAiR0VUIiwKCQljb250ZW50VHlwZTog
ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCgkJcHJvY2Vzc0Rh
dGE6IHRydWUsCgkJYXN5bmM6IHRydWUsCgkJLyoKCQl0aW1lb3V0OiAwLAoJCWRh
dGE6IG51bGwsCgkJZGF0YVR5cGU6IG51bGwsCgkJdXNlcm5hbWU6IG51bGwsCgkJ
cGFzc3dvcmQ6IG51bGwsCgkJY2FjaGU6IG51bGwsCgkJdHJhZGl0aW9uYWw6IGZh
bHNlLAoJCWhlYWRlcnM6IHt9LAoJCSovCgoJCWFjY2VwdHM6IHsKCQkJeG1sOiAi
YXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCgkJCWh0bWw6ICJ0ZXh0L2h0bWwi
LAoJCQl0ZXh0OiAidGV4dC9wbGFpbiIsCgkJCWpzb246ICJhcHBsaWNhdGlvbi9q
c29uLCB0ZXh0L2phdmFzY3JpcHQiLAoJCQkiKiI6IGFsbFR5cGVzCgkJfSwKCgkJ
Y29udGVudHM6IHsKCQkJeG1sOiAveG1sLywKCQkJaHRtbDogL2h0bWwvLAoJCQlq
c29uOiAvanNvbi8KCQl9LAoKCQlyZXNwb25zZUZpZWxkczogewoJCQl4bWw6ICJy
ZXNwb25zZVhNTCIsCgkJCXRleHQ6ICJyZXNwb25zZVRleHQiCgkJfSwKCgkJLy8g
TGlzdCBvZiBkYXRhIGNvbnZlcnRlcnMKCQkvLyAxKSBrZXkgZm9ybWF0IGlzICJz
b3VyY2VfdHlwZSBkZXN0aW5hdGlvbl90eXBlIiAoYSBzaW5nbGUgc3BhY2UgaW4t
YmV0d2VlbikKCQkvLyAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUg
dXNlZCBmb3Igc291cmNlX3R5cGUKCQljb252ZXJ0ZXJzOiB7CgoJCQkvLyBDb252
ZXJ0IGFueXRoaW5nIHRvIHRleHQKCQkJIiogdGV4dCI6IHdpbmRvdy5TdHJpbmcs
CgoJCQkvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbikK
CQkJInRleHQgaHRtbCI6IHRydWUsCgoJCQkvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEg
anNvbiBleHByZXNzaW9uCgkJCSJ0ZXh0IGpzb24iOiBqUXVlcnkucGFyc2VKU09O
LAoKCQkJLy8gUGFyc2UgdGV4dCBhcyB4bWwKCQkJInRleHQgeG1sIjogalF1ZXJ5
LnBhcnNlWE1MCgkJfSwKCgkJLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3Qg
YmUgZGVlcCBleHRlbmRlZDoKCQkvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0
b20gb3B0aW9ucyBoZXJlIGlmCgkJLy8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUg
dGhhdCBzaG91bGRuJ3QgYmUKCQkvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4
dGVuZCkKCQlmbGF0T3B0aW9uczogewoJCQljb250ZXh0OiB0cnVlLAoJCQl1cmw6
IHRydWUKCQl9Cgl9LAoKCWFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09y
VHJhbnNwb3J0cyggcHJlZmlsdGVycyApLAoJYWpheFRyYW5zcG9ydDogYWRkVG9Q
cmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksCgoJLy8gTWFpbiBt
ZXRob2QKCWFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7CgoJCS8vIElm
IHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlCgkJ
aWYgKCB0eXBlb2YgdXJsID09PSAib2JqZWN0IiApIHsKCQkJb3B0aW9ucyA9IHVy
bDsKCQkJdXJsID0gdW5kZWZpbmVkOwoJCX0KCgkJLy8gRm9yY2Ugb3B0aW9ucyB0
byBiZSBhbiBvYmplY3QKCQlvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCgkJdmFy
IC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3QKCQkJcyA9IGpRdWVy
eS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksCgkJCS8vIENhbGxiYWNrcyBjb250
ZXh0CgkJCWNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLAoJCQkvLyBD
b250ZXh0IGZvciBnbG9iYWwgZXZlbnRzCgkJCS8vIEl0J3MgdGhlIGNhbGxiYWNr
Q29udGV4dCBpZiBvbmUgd2FzIHByb3ZpZGVkIGluIHRoZSBvcHRpb25zCgkJCS8v
IGFuZCBpZiBpdCdzIGEgRE9NIG5vZGUgb3IgYSBqUXVlcnkgY29sbGVjdGlvbgoJ
CQlnbG9iYWxFdmVudENvbnRleHQgPSBjYWxsYmFja0NvbnRleHQgIT09IHMgJiYK
CQkJCSggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4
dCBpbnN0YW5jZW9mIGpRdWVyeSApID8KCQkJCQkJalF1ZXJ5KCBjYWxsYmFja0Nv
bnRleHQgKSA6IGpRdWVyeS5ldmVudCwKCQkJLy8gRGVmZXJyZWRzCgkJCWRlZmVy
cmVkID0galF1ZXJ5LkRlZmVycmVkKCksCgkJCWNvbXBsZXRlRGVmZXJyZWQgPSBq
UXVlcnkuQ2FsbGJhY2tzKCAib25jZSBtZW1vcnkiICksCgkJCS8vIFN0YXR1cy1k
ZXBlbmRlbnQgY2FsbGJhY2tzCgkJCXN0YXR1c0NvZGUgPSBzLnN0YXR1c0NvZGUg
fHwge30sCgkJCS8vIGlmTW9kaWZpZWQga2V5CgkJCWlmTW9kaWZpZWRLZXksCgkJ
CS8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpCgkJCXJlcXVl
c3RIZWFkZXJzID0ge30sCgkJCXJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSwKCQkJ
Ly8gUmVzcG9uc2UgaGVhZGVycwoJCQlyZXNwb25zZUhlYWRlcnNTdHJpbmcsCgkJ
CXJlc3BvbnNlSGVhZGVycywKCQkJLy8gdHJhbnNwb3J0CgkJCXRyYW5zcG9ydCwK
CQkJLy8gdGltZW91dCBoYW5kbGUKCQkJdGltZW91dFRpbWVyLAoJCQkvLyBDcm9z
cy1kb21haW4gZGV0ZWN0aW9uIHZhcnMKCQkJcGFydHMsCgkJCS8vIFRoZSBqcVhI
UiBzdGF0ZQoJCQlzdGF0ZSA9IDAsCgkJCS8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2
ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZAoJCQlmaXJlR2xvYmFscywKCQkJLy8g
TG9vcCB2YXJpYWJsZQoJCQlpLAoJCQkvLyBGYWtlIHhocgoJCQlqcVhIUiA9IHsK
CgkJCQlyZWFkeVN0YXRlOiAwLAoKCQkJCS8vIENhY2hlcyB0aGUgaGVhZGVyCgkJ
CQlzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7CgkJ
CQkJaWYgKCAhc3RhdGUgKSB7CgkJCQkJCXZhciBsbmFtZSA9IG5hbWUudG9Mb3dl
ckNhc2UoKTsKCQkJCQkJbmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1l
IF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdIHx8IG5hbWU7CgkJCQkJ
CXJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTsKCQkJCQl9CgkJCQkJcmV0
dXJuIHRoaXM7CgkJCQl9LAoKCQkJCS8vIFJhdyBzdHJpbmcKCQkJCWdldEFsbFJl
c3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7CgkJCQkJcmV0dXJuIHN0YXRlID09
PSAyID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDsKCQkJCX0sCgoJCQkJ
Ly8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZAoJCQkJZ2V0UmVz
cG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7CgkJCQkJdmFyIG1hdGNoOwoJ
CQkJCWlmICggc3RhdGUgPT09IDIgKSB7CgkJCQkJCWlmICggIXJlc3BvbnNlSGVh
ZGVycyApIHsKCQkJCQkJCXJlc3BvbnNlSGVhZGVycyA9IHt9OwoJCQkJCQkJd2hp
bGUoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJp
bmcgKSApICkgewoJCQkJCQkJCXJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbMV0udG9M
b3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJ
CQltYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsK
CQkJCQl9CgkJCQkJcmV0dXJuIG1hdGNoID09PSB1bmRlZmluZWQgPyBudWxsIDog
bWF0Y2g7CgkJCQl9LAoKCQkJCS8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50
LXR5cGUgaGVhZGVyCgkJCQlvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlw
ZSApIHsKCQkJCQlpZiAoICFzdGF0ZSApIHsKCQkJCQkJcy5taW1lVHlwZSA9IHR5
cGU7CgkJCQkJfQoJCQkJCXJldHVybiB0aGlzOwoJCQkJfSwKCgkJCQkvLyBDYW5j
ZWwgdGhlIHJlcXVlc3QKCQkJCWFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCAp
IHsKCQkJCQlzdGF0dXNUZXh0ID0gc3RhdHVzVGV4dCB8fCAiYWJvcnQiOwoJCQkJ
CWlmICggdHJhbnNwb3J0ICkgewoJCQkJCQl0cmFuc3BvcnQuYWJvcnQoIHN0YXR1
c1RleHQgKTsKCQkJCQl9CgkJCQkJZG9uZSggMCwgc3RhdHVzVGV4dCApOwoJCQkJ
CXJldHVybiB0aGlzOwoJCQkJfQoJCQl9OwoKCQkvLyBDYWxsYmFjayBmb3Igd2hl
biBldmVyeXRoaW5nIGlzIGRvbmUKCQkvLyBJdCBpcyBkZWZpbmVkIGhlcmUgYmVj
YXVzZSBqc2xpbnQgY29tcGxhaW5zIGlmIGl0IGlzIGRlY2xhcmVkCgkJLy8gYXQg
dGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gKHdoaWNoIHdvdWxkIGJlIG1vcmUgbG9n
aWNhbCBhbmQgcmVhZGFibGUpCgkJZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRp
dmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7CgoJCQkvLyBDYWxs
ZWQgb25jZQoJCQlpZiAoIHN0YXRlID09PSAyICkgewoJCQkJcmV0dXJuOwoJCQl9
CgoJCQkvLyBTdGF0ZSBpcyAiZG9uZSIgbm93CgkJCXN0YXRlID0gMjsKCgkJCS8v
IENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzCgkJCWlmICggdGltZW91dFRpbWVy
ICkgewoJCQkJY2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTsKCQkJfQoKCQkJ
Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxl
Y3Rpb24KCQkJLy8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0
IHdpbGwgYmUgdXNlZCkKCQkJdHJhbnNwb3J0ID0gdW5kZWZpbmVkOwoKCQkJLy8g
Q2FjaGUgcmVzcG9uc2UgaGVhZGVycwoJCQlyZXNwb25zZUhlYWRlcnNTdHJpbmcg
PSBoZWFkZXJzIHx8ICIiOwoKCQkJLy8gU2V0IHJlYWR5U3RhdGUKCQkJanFYSFIu
cmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDsKCgkJCXZhciBpc1N1Y2Nl
c3MsCgkJCQlzdWNjZXNzLAoJCQkJZXJyb3IsCgkJCQlzdGF0dXNUZXh0ID0gbmF0
aXZlU3RhdHVzVGV4dCwKCQkJCXJlc3BvbnNlID0gcmVzcG9uc2VzID8gYWpheEhh
bmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIDogdW5kZWZpbmVk
LAoJCQkJbGFzdE1vZGlmaWVkLAoJCQkJZXRhZzsKCgkJCS8vIElmIHN1Y2Nlc3Nm
dWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nCgkJCWlmICggc3RhdHVzID49IDIwMCAm
JiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQgKSB7CgoJCQkJLy8gU2V0
IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFk
ZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KCQkJCWlmICggcy5pZk1vZGlmaWVk
ICkgewoKCQkJCQlpZiAoICggbGFzdE1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9u
c2VIZWFkZXIoICJMYXN0LU1vZGlmaWVkIiApICkgKSB7CgkJCQkJCWpRdWVyeS5s
YXN0TW9kaWZpZWRbIGlmTW9kaWZpZWRLZXkgXSA9IGxhc3RNb2RpZmllZDsKCQkJ
CQl9CgkJCQkJaWYgKCAoIGV0YWcgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcigg
IkV0YWciICkgKSApIHsKCQkJCQkJalF1ZXJ5LmV0YWdbIGlmTW9kaWZpZWRLZXkg
XSA9IGV0YWc7CgkJCQkJfQoJCQkJfQoKCQkJCS8vIElmIG5vdCBtb2RpZmllZAoJ
CQkJaWYgKCBzdGF0dXMgPT09IDMwNCApIHsKCgkJCQkJc3RhdHVzVGV4dCA9ICJu
b3Rtb2RpZmllZCI7CgkJCQkJaXNTdWNjZXNzID0gdHJ1ZTsKCgkJCQkvLyBJZiB3
ZSBoYXZlIGRhdGEKCQkJCX0gZWxzZSB7CgoJCQkJCXRyeSB7CgkJCQkJCXN1Y2Nl
c3MgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UgKTsKCQkJCQkJc3RhdHVzVGV4
dCA9ICJzdWNjZXNzIjsKCQkJCQkJaXNTdWNjZXNzID0gdHJ1ZTsKCQkJCQl9IGNh
dGNoKGUpIHsKCQkJCQkJLy8gV2UgaGF2ZSBhIHBhcnNlcmVycm9yCgkJCQkJCXN0
YXR1c1RleHQgPSAicGFyc2VyZXJyb3IiOwoJCQkJCQllcnJvciA9IGU7CgkJCQkJ
fQoJCQkJfQoJCQl9IGVsc2UgewoJCQkJLy8gV2UgZXh0cmFjdCBlcnJvciBmcm9t
IHN0YXR1c1RleHQKCQkJCS8vIHRoZW4gbm9ybWFsaXplIHN0YXR1c1RleHQgYW5k
IHN0YXR1cyBmb3Igbm9uLWFib3J0cwoJCQkJZXJyb3IgPSBzdGF0dXNUZXh0OwoJ
CQkJaWYgKCAhc3RhdHVzVGV4dCB8fCBzdGF0dXMgKSB7CgkJCQkJc3RhdHVzVGV4
dCA9ICJlcnJvciI7CgkJCQkJaWYgKCBzdGF0dXMgPCAwICkgewoJCQkJCQlzdGF0
dXMgPSAwOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJLy8gU2V0IGRhdGEgZm9yIHRo
ZSBmYWtlIHhociBvYmplY3QKCQkJanFYSFIuc3RhdHVzID0gc3RhdHVzOwoJCQlq
cVhIUi5zdGF0dXNUZXh0ID0gIiIgKyAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3Rh
dHVzVGV4dCApOwoKCQkJLy8gU3VjY2Vzcy9FcnJvcgoJCQlpZiAoIGlzU3VjY2Vz
cyApIHsKCQkJCWRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQs
IFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApOwoJCQl9IGVsc2UgewoJ
CQkJZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhS
LCBzdGF0dXNUZXh0LCBlcnJvciBdICk7CgkJCX0KCgkJCS8vIFN0YXR1cy1kZXBl
bmRlbnQgY2FsbGJhY2tzCgkJCWpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUg
KTsKCQkJc3RhdHVzQ29kZSA9IHVuZGVmaW5lZDsKCgkJCWlmICggZmlyZUdsb2Jh
bHMgKSB7CgkJCQlnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXgiICsg
KCBpc1N1Y2Nlc3MgPyAiU3VjY2VzcyIgOiAiRXJyb3IiICksCgkJCQkJCVsganFY
SFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7CgkJCX0KCgkJ
CS8vIENvbXBsZXRlCgkJCWNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxi
YWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7CgoJCQlpZiAoIGZp
cmVHbG9iYWxzICkgewoJCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJh
amF4Q29tcGxldGUiLCBbIGpxWEhSLCBzIF0gKTsKCQkJCS8vIEhhbmRsZSB0aGUg
Z2xvYmFsIEFKQVggY291bnRlcgoJCQkJaWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUg
KSApIHsKCQkJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdG9wIiApOwoJ
CQkJfQoJCQl9CgkJfQoKCQkvLyBBdHRhY2ggZGVmZXJyZWRzCgkJZGVmZXJyZWQu
cHJvbWlzZSgganFYSFIgKTsKCQlqcVhIUi5zdWNjZXNzID0ganFYSFIuZG9uZTsK
CQlqcVhIUi5lcnJvciA9IGpxWEhSLmZhaWw7CgkJanFYSFIuY29tcGxldGUgPSBj
b21wbGV0ZURlZmVycmVkLmFkZDsKCgkJLy8gU3RhdHVzLWRlcGVuZGVudCBjYWxs
YmFja3MKCQlqcVhIUi5zdGF0dXNDb2RlID0gZnVuY3Rpb24oIG1hcCApIHsKCQkJ
aWYgKCBtYXAgKSB7CgkJCQl2YXIgdG1wOwoJCQkJaWYgKCBzdGF0ZSA8IDIgKSB7
CgkJCQkJZm9yICggdG1wIGluIG1hcCApIHsKCQkJCQkJc3RhdHVzQ29kZVsgdG1w
IF0gPSBbIHN0YXR1c0NvZGVbdG1wXSwgbWFwW3RtcF0gXTsKCQkJCQl9CgkJCQl9
IGVsc2UgewoJCQkJCXRtcCA9IG1hcFsganFYSFIuc3RhdHVzIF07CgkJCQkJanFY
SFIudGhlbiggdG1wLCB0bXAgKTsKCQkJCX0KCQkJfQoJCQlyZXR1cm4gdGhpczsK
CQl9OwoKCQkvLyBSZW1vdmUgaGFzaCBjaGFyYWN0ZXIgKCM3NTMxOiBhbmQgc3Ry
aW5nIHByb21vdGlvbikKCQkvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVk
ICgjNTg2NjogSUU3IGlzc3VlIHdpdGggcHJvdG9jb2wtbGVzcyB1cmxzKQoJCS8v
IFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZQoJCXMu
dXJsID0gKCAoIHVybCB8fCBzLnVybCApICsgIiIgKS5yZXBsYWNlKCByaGFzaCwg
IiIgKS5yZXBsYWNlKCBycHJvdG9jb2wsIGFqYXhMb2NQYXJ0c1sgMSBdICsgIi8v
IiApOwoKCQkvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0CgkJcy5kYXRhVHlwZXMg
PSBqUXVlcnkudHJpbSggcy5kYXRhVHlwZSB8fCAiKiIgKS50b0xvd2VyQ2FzZSgp
LnNwbGl0KCByc3BhY2VzQWpheCApOwoKCQkvLyBEZXRlcm1pbmUgaWYgYSBjcm9z
cy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlcgoJCWlmICggcy5jcm9zc0RvbWFp
biA9PSBudWxsICkgewoJCQlwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dl
ckNhc2UoKSApOwoJCQlzLmNyb3NzRG9tYWluID0gISEoIHBhcnRzICYmCgkJCQko
IHBhcnRzWyAxIF0gIT0gYWpheExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAh
PSBhamF4TG9jUGFydHNbIDIgXSB8fAoJCQkJCSggcGFydHNbIDMgXSB8fCAoIHBh
cnRzWyAxIF0gPT09ICJodHRwOiIgPyA4MCA6IDQ0MyApICkgIT0KCQkJCQkJKCBh
amF4TG9jUGFydHNbIDMgXSB8fCAoIGFqYXhMb2NQYXJ0c1sgMSBdID09PSAiaHR0
cDoiID8gODAgOiA0NDMgKSApICkKCQkJKTsKCQl9CgoJCS8vIENvbnZlcnQgZGF0
YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZwoJCWlmICggcy5kYXRhICYmIHMucHJv
Y2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gInN0cmluZyIgKSB7CgkJCXMu
ZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7CgkJ
fQoKCQkvLyBBcHBseSBwcmVmaWx0ZXJzCgkJaW5zcGVjdFByZWZpbHRlcnNPclRy
YW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7CgoJCS8v
IElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsZXIsIHN0b3Ag
dGhlcmUKCQlpZiAoIHN0YXRlID09PSAyICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJ
fQoKCQkvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBh
c2tlZCB0bwoJCWZpcmVHbG9iYWxzID0gcy5nbG9iYWw7CgoJCS8vIFVwcGVyY2Fz
ZSB0aGUgdHlwZQoJCXMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpOwoKCQkv
LyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudAoJCXMuaGFzQ29udGVu
dCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApOwoKCQkvLyBXYXRjaCBmb3Ig
YSBuZXcgc2V0IG9mIHJlcXVlc3RzCgkJaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVl
cnkuYWN0aXZlKysgPT09IDAgKSB7CgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAi
YWpheFN0YXJ0IiApOwoJCX0KCgkJLy8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZv
ciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnQKCQlpZiAoICFzLmhhc0NvbnRlbnQg
KSB7CgoJCQkvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8g
dXJsCgkJCWlmICggcy5kYXRhICkgewoJCQkJcy51cmwgKz0gKCBycXVlcnkudGVz
dCggcy51cmwgKSA/ICImIiA6ICI/IiApICsgcy5kYXRhOwoJCQkJLy8gIzk2ODI6
IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVh
bCByZXRyeQoJCQkJZGVsZXRlIHMuZGF0YTsKCQkJfQoKCQkJLy8gR2V0IGlmTW9k
aWZpZWRLZXkgYmVmb3JlIGFkZGluZyB0aGUgYW50aS1jYWNoZSBwYXJhbWV0ZXIK
CQkJaWZNb2RpZmllZEtleSA9IHMudXJsOwoKCQkJLy8gQWRkIGFudGktY2FjaGUg
aW4gdXJsIGlmIG5lZWRlZAoJCQlpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkgewoK
CQkJCXZhciB0cyA9IGpRdWVyeS5ub3coKSwKCQkJCQkvLyB0cnkgcmVwbGFjaW5n
IF89IGlmIGl0IGlzIHRoZXJlCgkJCQkJcmV0ID0gcy51cmwucmVwbGFjZSggcnRz
LCAiJDFfPSIgKyB0cyApOwoKCQkJCS8vIGlmIG5vdGhpbmcgd2FzIHJlcGxhY2Vk
LCBhZGQgdGltZXN0YW1wIHRvIHRoZSBlbmQKCQkJCXMudXJsID0gcmV0ICsgKCAo
IHJldCA9PT0gcy51cmwgKSA/ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyAiJiIg
OiAiPyIgKSArICJfPSIgKyB0cyA6ICIiICk7CgkJCX0KCQl9CgoJCS8vIFNldCB0
aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudAoJCWlmICgg
cy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxz
ZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewoJCQlqcVhIUi5zZXRSZXF1ZXN0
SGVhZGVyKCAiQ29udGVudC1UeXBlIiwgcy5jb250ZW50VHlwZSApOwoJCX0KCgkJ
Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRj
aCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS4KCQlpZiAoIHMuaWZNb2Rp
ZmllZCApIHsKCQkJaWZNb2RpZmllZEtleSA9IGlmTW9kaWZpZWRLZXkgfHwgcy51
cmw7CgkJCWlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgaWZNb2RpZmllZEtleSBd
ICkgewoJCQkJanFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU1vZGlmaWVkLVNp
bmNlIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgaWZNb2RpZmllZEtleSBdICk7CgkJ
CX0KCQkJaWYgKCBqUXVlcnkuZXRhZ1sgaWZNb2RpZmllZEtleSBdICkgewoJCQkJ
anFYSFIuc2V0UmVxdWVzdEhlYWRlciggIklmLU5vbmUtTWF0Y2giLCBqUXVlcnku
ZXRhZ1sgaWZNb2RpZmllZEtleSBdICk7CgkJCX0KCQl9CgoJCS8vIFNldCB0aGUg
QWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUg
ZGF0YVR5cGUKCQlqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKAoJCQkiQWNjZXB0IiwK
CQkJcy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBd
IF0gPwoJCQkJcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdICsgKCBzLmRhdGFU
eXBlc1sgMCBdICE9PSAiKiIgPyAiLCAiICsgYWxsVHlwZXMgKyAiOyBxPTAuMDEi
IDogIiIgKSA6CgkJCQlzLmFjY2VwdHNbICIqIiBdCgkJKTsKCgkJLy8gQ2hlY2sg
Zm9yIGhlYWRlcnMgb3B0aW9uCgkJZm9yICggaSBpbiBzLmhlYWRlcnMgKSB7CgkJ
CWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7CgkJ
fQoKCQkvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5
IGFib3J0CgkJaWYgKCBzLmJlZm9yZVNlbmQgJiYgKCBzLmJlZm9yZVNlbmQuY2Fs
bCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBzdGF0
ZSA9PT0gMiApICkgewoJCQkJLy8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeQoJ
CQkJanFYSFIuYWJvcnQoKTsKCQkJCXJldHVybiBmYWxzZTsKCgkJfQoKCQkvLyBJ
bnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHMKCQlmb3IgKCBpIGluIHsgc3Vj
Y2VzczogMSwgZXJyb3I6IDEsIGNvbXBsZXRlOiAxIH0gKSB7CgkJCWpxWEhSWyBp
IF0oIHNbIGkgXSApOwoJCX0KCgkJLy8gR2V0IHRyYW5zcG9ydAoJCXRyYW5zcG9y
dCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBz
LCBvcHRpb25zLCBqcVhIUiApOwoKCQkvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1
dG8tYWJvcnQKCQlpZiAoICF0cmFuc3BvcnQgKSB7CgkJCWRvbmUoIC0xLCAiTm8g
VHJhbnNwb3J0IiApOwoJCX0gZWxzZSB7CgkJCWpxWEhSLnJlYWR5U3RhdGUgPSAx
OwoJCQkvLyBTZW5kIGdsb2JhbCBldmVudAoJCQlpZiAoIGZpcmVHbG9iYWxzICkg
ewoJCQkJZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4U2VuZCIsIFsg
anFYSFIsIHMgXSApOwoJCQl9CgkJCS8vIFRpbWVvdXQKCQkJaWYgKCBzLmFzeW5j
ICYmIHMudGltZW91dCA+IDAgKSB7CgkJCQl0aW1lb3V0VGltZXIgPSBzZXRUaW1l
b3V0KCBmdW5jdGlvbigpewoJCQkJCWpxWEhSLmFib3J0KCAidGltZW91dCIgKTsK
CQkJCX0sIHMudGltZW91dCApOwoJCQl9CgoJCQl0cnkgewoJCQkJc3RhdGUgPSAx
OwoJCQkJdHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7CgkJ
CX0gY2F0Y2ggKGUpIHsKCQkJCS8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJy
b3IgaWYgbm90IGRvbmUKCQkJCWlmICggc3RhdGUgPCAyICkgewoJCQkJCWRvbmUo
IC0xLCBlICk7CgkJCQkvLyBTaW1wbHkgcmV0aHJvdyBvdGhlcndpc2UKCQkJCX0g
ZWxzZSB7CgkJCQkJdGhyb3cgZTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIGpx
WEhSOwoJfSwKCgkvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50
cyBvciBhIHNldCBvZgoJLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5n
CglwYXJhbTogZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkgewoJCXZhciBzID0g
W10sCgkJCWFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewoJCQkJLy8gSWYg
dmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCByZXR1cm4gaXRzIHZh
bHVlCgkJCQl2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFs
dWUoKSA6IHZhbHVlOwoJCQkJc1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBv
bmVudCgga2V5ICkgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlICk7
CgkJCX07CgoJCS8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkg
PD0gMS4zLjIgYmVoYXZpb3IuCgkJaWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZp
bmVkICkgewoJCQl0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MudHJh
ZGl0aW9uYWw7CgkJfQoKCQkvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBh
c3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgoJCWlm
ICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnku
aXNQbGFpbk9iamVjdCggYSApICkgKSB7CgkJCS8vIFNlcmlhbGl6ZSB0aGUgZm9y
bSBlbGVtZW50cwoJCQlqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7CgkJCQlh
ZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApOwoJCQl9KTsKCgkJfSBlbHNlIHsK
CQkJLy8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgIm9sZCIgd2F5ICh0aGUg
d2F5IDEuMy4yIG9yIG9sZGVyCgkJCS8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNv
ZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LgoJCQlmb3IgKCB2YXIgcHJlZml4IGluIGEg
KSB7CgkJCQlidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0
aW9uYWwsIGFkZCApOwoJCQl9CgkJfQoKCQkvLyBSZXR1cm4gdGhlIHJlc3VsdGlu
ZyBzZXJpYWxpemF0aW9uCgkJcmV0dXJuIHMuam9pbiggIiYiICkucmVwbGFjZSgg
cjIwLCAiKyIgKTsKCX0KfSk7CgpmdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4
LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7CglpZiAoIGpRdWVyeS5pc0FycmF5
KCBvYmogKSApIHsKCQkvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS4KCQlqUXVlcnku
ZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHsKCQkJaWYgKCB0cmFkaXRpb25h
bCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHsKCQkJCS8vIFRyZWF0IGVh
Y2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci4KCQkJCWFkZCggcHJlZml4LCB2ICk7
CgoJCQl9IGVsc2UgewoJCQkJLy8gSWYgYXJyYXkgaXRlbSBpcyBub24tc2NhbGFy
IChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzCgkJCQkvLyBudW1lcmljIGlu
ZGV4IHRvIHJlc29sdmUgZGVzZXJpYWxpemF0aW9uIGFtYmlndWl0eSBpc3N1ZXMu
CgkJCQkvLyBOb3RlIHRoYXQgcmFjayAoYXMgb2YgMS4wLjApIGNhbid0IGN1cnJl
bnRseSBkZXNlcmlhbGl6ZQoJCQkJLy8gbmVzdGVkIGFycmF5cyBwcm9wZXJseSwg
YW5kIGF0dGVtcHRpbmcgdG8gZG8gc28gbWF5IGNhdXNlCgkJCQkvLyBhIHNlcnZl
ciBlcnJvci4gUG9zc2libGUgZml4ZXMgYXJlIHRvIG1vZGlmeSByYWNrJ3MKCQkJ
CS8vIGRlc2VyaWFsaXphdGlvbiBhbGdvcml0aG0gb3IgdG8gcHJvdmlkZSBhbiBv
cHRpb24gb3IgZmxhZwoJCQkJLy8gdG8gZm9yY2UgYXJyYXkgc2VyaWFsaXphdGlv
biB0byBiZSBzaGFsbG93LgoJCQkJYnVpbGRQYXJhbXMoIHByZWZpeCArICJbIiAr
ICggdHlwZW9mIHYgPT09ICJvYmplY3QiIHx8IGpRdWVyeS5pc0FycmF5KHYpID8g
aSA6ICIiICkgKyAiXSIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTsKCQkJfQoJCX0p
OwoKCX0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiBvYmogIT0gbnVsbCAmJiB0
eXBlb2Ygb2JqID09PSAib2JqZWN0IiApIHsKCQkvLyBTZXJpYWxpemUgb2JqZWN0
IGl0ZW0uCgkJZm9yICggdmFyIG5hbWUgaW4gb2JqICkgewoJCQlidWlsZFBhcmFt
cyggcHJlZml4ICsgIlsiICsgbmFtZSArICJdIiwgb2JqWyBuYW1lIF0sIHRyYWRp
dGlvbmFsLCBhZGQgKTsKCQl9CgoJfSBlbHNlIHsKCQkvLyBTZXJpYWxpemUgc2Nh
bGFyIGl0ZW0uCgkJYWRkKCBwcmVmaXgsIG9iaiApOwoJfQp9CgovLyBUaGlzIGlz
IHN0aWxsIG9uIHRoZSBqUXVlcnkgb2JqZWN0Li4uIGZvciBub3cKLy8gV2FudCB0
byBtb3ZlIHRoaXMgdG8galF1ZXJ5LmFqYXggc29tZSBkYXkKalF1ZXJ5LmV4dGVu
ZCh7CgoJLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2
ZSBxdWVyaWVzCglhY3RpdmU6IDAsCgoJLy8gTGFzdC1Nb2RpZmllZCBoZWFkZXIg
Y2FjaGUgZm9yIG5leHQgcmVxdWVzdAoJbGFzdE1vZGlmaWVkOiB7fSwKCWV0YWc6
IHt9Cgp9KTsKCi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVz
dDoKICogLSBzZXRzIGFsbCByZXNwb25zZVhYWCBmaWVsZHMgYWNjb3JkaW5nbHkK
ICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4g
Y29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSkKICogLSByZXR1cm5z
IHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCiAqLwpmdW5jdGlvbiBhamF4SGFu
ZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkgewoKCXZhciBjb250
ZW50cyA9IHMuY29udGVudHMsCgkJZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMsCgkJ
cmVzcG9uc2VGaWVsZHMgPSBzLnJlc3BvbnNlRmllbGRzLAoJCWN0LAoJCXR5cGUs
CgkJZmluYWxEYXRhVHlwZSwKCQlmaXJzdERhdGFUeXBlOwoKCS8vIEZpbGwgcmVz
cG9uc2VYWFggZmllbGRzCglmb3IgKCB0eXBlIGluIHJlc3BvbnNlRmllbGRzICkg
ewoJCWlmICggdHlwZSBpbiByZXNwb25zZXMgKSB7CgkJCWpxWEhSWyByZXNwb25z
ZUZpZWxkc1t0eXBlXSBdID0gcmVzcG9uc2VzWyB0eXBlIF07CgkJfQoJfQoKCS8v
IFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRo
ZSBwcm9jZXNzCgl3aGlsZSggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKCQlk
YXRhVHlwZXMuc2hpZnQoKTsKCQlpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7CgkJ
CWN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggImNv
bnRlbnQtdHlwZSIgKTsKCQl9Cgl9CgoJLy8gQ2hlY2sgaWYgd2UncmUgZGVhbGlu
ZyB3aXRoIGEga25vd24gY29udGVudC10eXBlCglpZiAoIGN0ICkgewoJCWZvciAo
IHR5cGUgaW4gY29udGVudHMgKSB7CgkJCWlmICggY29udGVudHNbIHR5cGUgXSAm
JiBjb250ZW50c1sgdHlwZSBdLnRlc3QoIGN0ICkgKSB7CgkJCQlkYXRhVHlwZXMu
dW5zaGlmdCggdHlwZSApOwoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9CgoJLy8gQ2hl
Y2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVk
IGRhdGFUeXBlCglpZiAoIGRhdGFUeXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHsK
CQlmaW5hbERhdGFUeXBlID0gZGF0YVR5cGVzWyAwIF07Cgl9IGVsc2UgewoJCS8v
IFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXMKCQlmb3IgKCB0eXBlIGluIHJlc3Bv
bnNlcyApIHsKCQkJaWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJz
WyB0eXBlICsgIiAiICsgZGF0YVR5cGVzWzBdIF0gKSB7CgkJCQlmaW5hbERhdGFU
eXBlID0gdHlwZTsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmICggIWZpcnN0RGF0YVR5
cGUgKSB7CgkJCQlmaXJzdERhdGFUeXBlID0gdHlwZTsKCQkJfQoJCX0KCQkvLyBP
ciBqdXN0IHVzZSBmaXJzdCBvbmUKCQlmaW5hbERhdGFUeXBlID0gZmluYWxEYXRh
VHlwZSB8fCBmaXJzdERhdGFUeXBlOwoJfQoKCS8vIElmIHdlIGZvdW5kIGEgZGF0
YVR5cGUKCS8vIFdlIGFkZCB0aGUgZGF0YVR5cGUgdG8gdGhlIGxpc3QgaWYgbmVl
ZGVkCgkvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCglp
ZiAoIGZpbmFsRGF0YVR5cGUgKSB7CgkJaWYgKCBmaW5hbERhdGFUeXBlICE9PSBk
YXRhVHlwZXNbIDAgXSApIHsKCQkJZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0
YVR5cGUgKTsKCQl9CgkJcmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBd
OwoJfQp9CgovLyBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBh
bmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlCmZ1bmN0aW9uIGFqYXhDb252ZXJ0KCBz
LCByZXNwb25zZSApIHsKCgkvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92
aWRlZAoJaWYgKCBzLmRhdGFGaWx0ZXIgKSB7CgkJcmVzcG9uc2UgPSBzLmRhdGFG
aWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7Cgl9CgoJdmFyIGRhdGFUeXBl
cyA9IHMuZGF0YVR5cGVzLAoJCWNvbnZlcnRlcnMgPSB7fSwKCQlpLAoJCWtleSwK
CQlsZW5ndGggPSBkYXRhVHlwZXMubGVuZ3RoLAoJCXRtcCwKCQkvLyBDdXJyZW50
IGFuZCBwcmV2aW91cyBkYXRhVHlwZXMKCQljdXJyZW50ID0gZGF0YVR5cGVzWyAw
IF0sCgkJcHJldiwKCQkvLyBDb252ZXJzaW9uIGV4cHJlc3Npb24KCQljb252ZXJz
aW9uLAoJCS8vIENvbnZlcnNpb24gZnVuY3Rpb24KCQljb252LAoJCS8vIENvbnZl
cnNpb24gZnVuY3Rpb25zICh0cmFuc2l0aXZlIGNvbnZlcnNpb24pCgkJY29udjEs
CgkJY29udjI7CgoJLy8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGNoYWluCglm
b3IgKCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrICkgewoKCQkvLyBDcmVhdGUgY29u
dmVydGVycyBtYXAKCQkvLyB3aXRoIGxvd2VyY2FzZWQga2V5cwoJCWlmICggaSA9
PT0gMSApIHsKCQkJZm9yICgga2V5IGluIHMuY29udmVydGVycyApIHsKCQkJCWlm
ICggdHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSB7CgkJCQkJY29udmVydGVyc1sg
a2V5LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sga2V5IF07CgkJCQl9
CgkJCX0KCQl9CgoJCS8vIEdldCB0aGUgZGF0YVR5cGVzCgkJcHJldiA9IGN1cnJl
bnQ7CgkJY3VycmVudCA9IGRhdGFUeXBlc1sgaSBdOwoKCQkvLyBJZiBjdXJyZW50
IGlzIGF1dG8gZGF0YVR5cGUsIHVwZGF0ZSBpdCB0byBwcmV2CgkJaWYgKCBjdXJy
ZW50ID09PSAiKiIgKSB7CgkJCWN1cnJlbnQgPSBwcmV2OwoJCS8vIElmIG5vIGF1
dG8gYW5kIGRhdGFUeXBlcyBhcmUgYWN0dWFsbHkgZGlmZmVyZW50CgkJfSBlbHNl
IGlmICggcHJldiAhPT0gIioiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7CgoJCQkv
LyBHZXQgdGhlIGNvbnZlcnRlcgoJCQljb252ZXJzaW9uID0gcHJldiArICIgIiAr
IGN1cnJlbnQ7CgkJCWNvbnYgPSBjb252ZXJ0ZXJzWyBjb252ZXJzaW9uIF0gfHwg
Y29udmVydGVyc1sgIiogIiArIGN1cnJlbnQgXTsKCgkJCS8vIElmIHRoZXJlIGlz
IG5vIGRpcmVjdCBjb252ZXJ0ZXIsIHNlYXJjaCB0cmFuc2l0aXZlbHkKCQkJaWYg
KCAhY29udiApIHsKCQkJCWNvbnYyID0gdW5kZWZpbmVkOwoJCQkJZm9yICggY29u
djEgaW4gY29udmVydGVycyApIHsKCQkJCQl0bXAgPSBjb252MS5zcGxpdCggIiAi
ICk7CgkJCQkJaWYgKCB0bXBbIDAgXSA9PT0gcHJldiB8fCB0bXBbIDAgXSA9PT0g
IioiICkgewoJCQkJCQljb252MiA9IGNvbnZlcnRlcnNbIHRtcFsxXSArICIgIiAr
IGN1cnJlbnQgXTsKCQkJCQkJaWYgKCBjb252MiApIHsKCQkJCQkJCWNvbnYxID0g
Y29udmVydGVyc1sgY29udjEgXTsKCQkJCQkJCWlmICggY29udjEgPT09IHRydWUg
KSB7CgkJCQkJCQkJY29udiA9IGNvbnYyOwoJCQkJCQkJfSBlbHNlIGlmICggY29u
djIgPT09IHRydWUgKSB7CgkJCQkJCQkJY29udiA9IGNvbnYxOwoJCQkJCQkJfQoJ
CQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJLy8gSWYg
d2UgZm91bmQgbm8gY29udmVydGVyLCBkaXNwYXRjaCBhbiBlcnJvcgoJCQlpZiAo
ICEoIGNvbnYgfHwgY29udjIgKSApIHsKCQkJCWpRdWVyeS5lcnJvciggIk5vIGNv
bnZlcnNpb24gZnJvbSAiICsgY29udmVyc2lvbi5yZXBsYWNlKCIgIiwiIHRvICIp
ICk7CgkJCX0KCQkJLy8gSWYgZm91bmQgY29udmVydGVyIGlzIG5vdCBhbiBlcXVp
dmFsZW5jZQoJCQlpZiAoIGNvbnYgIT09IHRydWUgKSB7CgkJCQkvLyBDb252ZXJ0
IHdpdGggMSBvciAyIGNvbnZlcnRlcnMgYWNjb3JkaW5nbHkKCQkJCXJlc3BvbnNl
ID0gY29udiA/IGNvbnYoIHJlc3BvbnNlICkgOiBjb252MiggY29udjEocmVzcG9u
c2UpICk7CgkJCX0KCQl9Cgl9CglyZXR1cm4gcmVzcG9uc2U7Cn0KCgoKCnZhciBq
c2MgPSBqUXVlcnkubm93KCksCglqc3JlID0gLyhcPSlcPygmfCQpfFw/XD8vaTsK
Ci8vIERlZmF1bHQganNvbnAgc2V0dGluZ3MKalF1ZXJ5LmFqYXhTZXR1cCh7Cglq
c29ucDogImNhbGxiYWNrIiwKCWpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewoJ
CXJldHVybiBqUXVlcnkuZXhwYW5kbyArICJfIiArICgganNjKysgKTsKCX0KfSk7
CgovLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxi
YWNrcyBmb3IganNvbnAgcmVxdWVzdHMKalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoICJq
c29uIGpzb25wIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhS
ICkgewoKCXZhciBpbnNwZWN0RGF0YSA9IHMuY29udGVudFR5cGUgPT09ICJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiICYmCgkJKCB0eXBlb2Ygcy5k
YXRhID09PSAic3RyaW5nIiApOwoKCWlmICggcy5kYXRhVHlwZXNbIDAgXSA9PT0g
Impzb25wIiB8fAoJCXMuanNvbnAgIT09IGZhbHNlICYmICgganNyZS50ZXN0KCBz
LnVybCApIHx8CgkJCQlpbnNwZWN0RGF0YSAmJiBqc3JlLnRlc3QoIHMuZGF0YSAp
ICkgKSB7CgoJCXZhciByZXNwb25zZUNvbnRhaW5lciwKCQkJanNvbnBDYWxsYmFj
ayA9IHMuanNvbnBDYWxsYmFjayA9CgkJCQlqUXVlcnkuaXNGdW5jdGlvbiggcy5q
c29ucENhbGxiYWNrICkgPyBzLmpzb25wQ2FsbGJhY2soKSA6IHMuanNvbnBDYWxs
YmFjaywKCQkJcHJldmlvdXMgPSB3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSwKCQkJ
dXJsID0gcy51cmwsCgkJCWRhdGEgPSBzLmRhdGEsCgkJCXJlcGxhY2UgPSAiJDEi
ICsganNvbnBDYWxsYmFjayArICIkMiI7CgoJCWlmICggcy5qc29ucCAhPT0gZmFs
c2UgKSB7CgkJCXVybCA9IHVybC5yZXBsYWNlKCBqc3JlLCByZXBsYWNlICk7CgkJ
CWlmICggcy51cmwgPT09IHVybCApIHsKCQkJCWlmICggaW5zcGVjdERhdGEgKSB7
CgkJCQkJZGF0YSA9IGRhdGEucmVwbGFjZSgganNyZSwgcmVwbGFjZSApOwoJCQkJ
fQoJCQkJaWYgKCBzLmRhdGEgPT09IGRhdGEgKSB7CgkJCQkJLy8gQWRkIGNhbGxi
YWNrIG1hbnVhbGx5CgkJCQkJdXJsICs9ICgvXD8vLnRlc3QoIHVybCApID8gIiYi
IDogIj8iKSArIHMuanNvbnAgKyAiPSIgKyBqc29ucENhbGxiYWNrOwoJCQkJfQoJ
CQl9CgkJfQoKCQlzLnVybCA9IHVybDsKCQlzLmRhdGEgPSBkYXRhOwoKCQkvLyBJ
bnN0YWxsIGNhbGxiYWNrCgkJd2luZG93WyBqc29ucENhbGxiYWNrIF0gPSBmdW5j
dGlvbiggcmVzcG9uc2UgKSB7CgkJCXJlc3BvbnNlQ29udGFpbmVyID0gWyByZXNw
b25zZSBdOwoJCX07CgoJCS8vIENsZWFuLXVwIGZ1bmN0aW9uCgkJanFYSFIuYWx3
YXlzKGZ1bmN0aW9uKCkgewoJCQkvLyBTZXQgY2FsbGJhY2sgYmFjayB0byBwcmV2
aW91cyB2YWx1ZQoJCQl3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSA9IHByZXZpb3Vz
OwoJCQkvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEg
cmVzcG9uc2UKCQkJaWYgKCByZXNwb25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNG
dW5jdGlvbiggcHJldmlvdXMgKSApIHsKCQkJCXdpbmRvd1sganNvbnBDYWxsYmFj
ayBdKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7CgkJCX0KCQl9KTsKCgkJLy8g
VXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0
IGV4ZWN1dGlvbgoJCXMuY29udmVydGVyc1sic2NyaXB0IGpzb24iXSA9IGZ1bmN0
aW9uKCkgewoJCQlpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHsKCQkJCWpRdWVy
eS5lcnJvcigganNvbnBDYWxsYmFjayArICIgd2FzIG5vdCBjYWxsZWQiICk7CgkJ
CX0KCQkJcmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07CgkJfTsKCgkJLy8g
Zm9yY2UganNvbiBkYXRhVHlwZQoJCXMuZGF0YVR5cGVzWyAwIF0gPSAianNvbiI7
CgoJCS8vIERlbGVnYXRlIHRvIHNjcmlwdAoJCXJldHVybiAic2NyaXB0IjsKCX0K
fSk7CgoKCgovLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZQpqUXVlcnkuYWpheFNl
dHVwKHsKCWFjY2VwdHM6IHsKCQlzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFw
cGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFw
cGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKCX0sCgljb250ZW50czogewoJCXNjcmlw
dDogL2phdmFzY3JpcHR8ZWNtYXNjcmlwdC8KCX0sCgljb252ZXJ0ZXJzOiB7CgkJ
InRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CgkJCWpRdWVyeS5nbG9i
YWxFdmFsKCB0ZXh0ICk7CgkJCXJldHVybiB0ZXh0OwoJCX0KCX0KfSk7CgovLyBI
YW5kbGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGdsb2JhbApqUXVlcnkuYWph
eFByZWZpbHRlciggInNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgewoJaWYgKCBzLmNh
Y2hlID09PSB1bmRlZmluZWQgKSB7CgkJcy5jYWNoZSA9IGZhbHNlOwoJfQoJaWYg
KCBzLmNyb3NzRG9tYWluICkgewoJCXMudHlwZSA9ICJHRVQiOwoJCXMuZ2xvYmFs
ID0gZmFsc2U7Cgl9Cn0pOwoKLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNw
b3J0CmpRdWVyeS5hamF4VHJhbnNwb3J0KCAic2NyaXB0IiwgZnVuY3Rpb24ocykg
ewoKCS8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21h
aW4gcmVxdWVzdHMKCWlmICggcy5jcm9zc0RvbWFpbiApIHsKCgkJdmFyIHNjcmlw
dCwKCQkJaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoICJoZWFkIiApWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudDsKCgkJcmV0dXJuIHsKCgkJCXNlbmQ6IGZ1bmN0aW9uKCBfLCBjYWxsYmFj
ayApIHsKCgkJCQlzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic2Ny
aXB0IiApOwoKCQkJCXNjcmlwdC5hc3luYyA9ICJhc3luYyI7CgoJCQkJaWYgKCBz
LnNjcmlwdENoYXJzZXQgKSB7CgkJCQkJc2NyaXB0LmNoYXJzZXQgPSBzLnNjcmlw
dENoYXJzZXQ7CgkJCQl9CgoJCQkJc2NyaXB0LnNyYyA9IHMudXJsOwoKCQkJCS8v
IEF0dGFjaCBoYW5kbGVycyBmb3IgYWxsIGJyb3dzZXJzCgkJCQlzY3JpcHQub25s
b2FkID0gc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCBfLCBp
c0Fib3J0ICkgewoKCQkJCQlpZiAoIGlzQWJvcnQgfHwgIXNjcmlwdC5yZWFkeVN0
YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoIHNjcmlwdC5yZWFkeVN0YXRl
ICkgKSB7CgoJCQkJCQkvLyBIYW5kbGUgbWVtb3J5IGxlYWsgaW4gSUUKCQkJCQkJ
c2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxs
OwoKCQkJCQkJLy8gUmVtb3ZlIHRoZSBzY3JpcHQKCQkJCQkJaWYgKCBoZWFkICYm
IHNjcmlwdC5wYXJlbnROb2RlICkgewoJCQkJCQkJaGVhZC5yZW1vdmVDaGlsZCgg
c2NyaXB0ICk7CgkJCQkJCX0KCgkJCQkJCS8vIERlcmVmZXJlbmNlIHRoZSBzY3Jp
cHQKCQkJCQkJc2NyaXB0ID0gdW5kZWZpbmVkOwoKCQkJCQkJLy8gQ2FsbGJhY2sg
aWYgbm90IGFib3J0CgkJCQkJCWlmICggIWlzQWJvcnQgKSB7CgkJCQkJCQljYWxs
YmFjayggMjAwLCAic3VjY2VzcyIgKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX07CgkJ
CQkvLyBVc2UgaW5zZXJ0QmVmb3JlIGluc3RlYWQgb2YgYXBwZW5kQ2hpbGQgIHRv
IGNpcmN1bXZlbnQgYW4gSUU2IGJ1Zy4KCQkJCS8vIFRoaXMgYXJpc2VzIHdoZW4g
YSBiYXNlIG5vZGUgaXMgdXNlZCAoIzI3MDkgYW5kICM0Mzc4KS4KCQkJCWhlYWQu
aW5zZXJ0QmVmb3JlKCBzY3JpcHQsIGhlYWQuZmlyc3RDaGlsZCApOwoJCQl9LAoK
CQkJYWJvcnQ6IGZ1bmN0aW9uKCkgewoJCQkJaWYgKCBzY3JpcHQgKSB7CgkJCQkJ
c2NyaXB0Lm9ubG9hZCggMCwgMSApOwoJCQkJfQoJCQl9CgkJfTsKCX0KfSk7CgoK
Cgp2YXIgLy8gIzUyODA6IEludGVybmV0IEV4cGxvcmVyIHdpbGwga2VlcCBjb25u
ZWN0aW9ucyBhbGl2ZSBpZiB3ZSBkb24ndCBhYm9ydCBvbiB1bmxvYWQKCXhock9u
VW5sb2FkQWJvcnQgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/IGZ1bmN0aW9uKCkg
ewoJCS8vIEFib3J0IGFsbCBwZW5kaW5nIHJlcXVlc3RzCgkJZm9yICggdmFyIGtl
eSBpbiB4aHJDYWxsYmFja3MgKSB7CgkJCXhockNhbGxiYWNrc1sga2V5IF0oIDAs
IDEgKTsKCQl9Cgl9IDogZmFsc2UsCgl4aHJJZCA9IDAsCgl4aHJDYWxsYmFja3M7
CgovLyBGdW5jdGlvbnMgdG8gY3JlYXRlIHhocnMKZnVuY3Rpb24gY3JlYXRlU3Rh
bmRhcmRYSFIoKSB7Cgl0cnkgewoJCXJldHVybiBuZXcgd2luZG93LlhNTEh0dHBS
ZXF1ZXN0KCk7Cgl9IGNhdGNoKCBlICkge30KfQoKZnVuY3Rpb24gY3JlYXRlQWN0
aXZlWEhSKCkgewoJdHJ5IHsKCQlyZXR1cm4gbmV3IHdpbmRvdy5BY3RpdmVYT2Jq
ZWN0KCAiTWljcm9zb2Z0LlhNTEhUVFAiICk7Cgl9IGNhdGNoKCBlICkge30KfQoK
Ly8gQ3JlYXRlIHRoZSByZXF1ZXN0IG9iamVjdAovLyAoVGhpcyBpcyBzdGlsbCBh
dHRhY2hlZCB0byBhamF4U2V0dGluZ3MgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkpCmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gd2luZG93LkFjdGl2ZVhPYmpl
Y3QgPwoJLyogTWljcm9zb2Z0IGZhaWxlZCB0byBwcm9wZXJseQoJICogaW1wbGVt
ZW50IHRoZSBYTUxIdHRwUmVxdWVzdCBpbiBJRTcgKGNhbid0IHJlcXVlc3QgbG9j
YWwgZmlsZXMpLAoJICogc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0IHdoZW4g
aXQgaXMgYXZhaWxhYmxlCgkgKiBBZGRpdGlvbmFsbHkgWE1MSHR0cFJlcXVlc3Qg
Y2FuIGJlIGRpc2FibGVkIGluIElFNy9JRTggc28KCSAqIHdlIG5lZWQgYSBmYWxs
YmFjay4KCSAqLwoJZnVuY3Rpb24oKSB7CgkJcmV0dXJuICF0aGlzLmlzTG9jYWwg
JiYgY3JlYXRlU3RhbmRhcmRYSFIoKSB8fCBjcmVhdGVBY3RpdmVYSFIoKTsKCX0g
OgoJLy8gRm9yIGFsbCBvdGhlciBicm93c2VycywgdXNlIHRoZSBzdGFuZGFyZCBY
TUxIdHRwUmVxdWVzdCBvYmplY3QKCWNyZWF0ZVN0YW5kYXJkWEhSOwoKLy8gRGV0
ZXJtaW5lIHN1cHBvcnQgcHJvcGVydGllcwooZnVuY3Rpb24oIHhociApIHsKCWpR
dWVyeS5leHRlbmQoIGpRdWVyeS5zdXBwb3J0LCB7CgkJYWpheDogISF4aHIsCgkJ
Y29yczogISF4aHIgJiYgKCAid2l0aENyZWRlbnRpYWxzIiBpbiB4aHIgKQoJfSk7
Cn0pKCBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpICk7CgovLyBDcmVhdGUgdHJh
bnNwb3J0IGlmIHRoZSBicm93c2VyIGNhbiBwcm92aWRlIGFuIHhocgppZiAoIGpR
dWVyeS5zdXBwb3J0LmFqYXggKSB7CgoJalF1ZXJ5LmFqYXhUcmFuc3BvcnQoZnVu
Y3Rpb24oIHMgKSB7CgkJLy8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBz
dXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAoJCWlmICggIXMuY3Jvc3NE
b21haW4gfHwgalF1ZXJ5LnN1cHBvcnQuY29ycyApIHsKCgkJCXZhciBjYWxsYmFj
azsKCgkJCXJldHVybiB7CgkJCQlzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29t
cGxldGUgKSB7CgoJCQkJCS8vIEdldCBhIG5ldyB4aHIKCQkJCQl2YXIgeGhyID0g
cy54aHIoKSwKCQkJCQkJaGFuZGxlLAoJCQkJCQlpOwoKCQkJCQkvLyBPcGVuIHRo
ZSBzb2NrZXQKCQkJCQkvLyBQYXNzaW5nIG51bGwgdXNlcm5hbWUsIGdlbmVyYXRl
cyBhIGxvZ2luIHBvcHVwIG9uIE9wZXJhICgjMjg2NSkKCQkJCQlpZiAoIHMudXNl
cm5hbWUgKSB7CgkJCQkJCXhoci5vcGVuKCBzLnR5cGUsIHMudXJsLCBzLmFzeW5j
LCBzLnVzZXJuYW1lLCBzLnBhc3N3b3JkICk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJ
eGhyLm9wZW4oIHMudHlwZSwgcy51cmwsIHMuYXN5bmMgKTsKCQkJCQl9CgoJCQkJ
CS8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWQKCQkJCQlpZiAoIHMu
eGhyRmllbGRzICkgewoJCQkJCQlmb3IgKCBpIGluIHMueGhyRmllbGRzICkgewoJ
CQkJCQkJeGhyWyBpIF0gPSBzLnhockZpZWxkc1sgaSBdOwoJCQkJCQl9CgkJCQkJ
fQoKCQkJCQkvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkCgkJCQkJaWYg
KCBzLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkgewoJCQkJCQl4
aHIub3ZlcnJpZGVNaW1lVHlwZSggcy5taW1lVHlwZSApOwoJCQkJCX0KCgkJCQkJ
Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXIKCQkJCQkvLyBGb3IgY3Jvc3MtZG9t
YWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGln
aHQgYXJlCgkJCQkJLy8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBs
eSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS4KCQkJCQkvLyAoaXQgY2FuIGFsd2F5
cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFq
YXhTZXR1cCkKCQkJCQkvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0
IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC4KCQkJCQlpZiAoICFz
LmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyJYLVJlcXVlc3RlZC1XaXRoIl0gKSB7
CgkJCQkJCWhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBdID0gIlhNTEh0dHBS
ZXF1ZXN0IjsKCQkJCQl9CgoJCQkJCS8vIE5lZWQgYW4gZXh0cmEgdHJ5L2NhdGNo
IGZvciBjcm9zcyBkb21haW4gcmVxdWVzdHMgaW4gRmlyZWZveCAzCgkJCQkJdHJ5
IHsKCQkJCQkJZm9yICggaSBpbiBoZWFkZXJzICkgewoJCQkJCQkJeGhyLnNldFJl
cXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApOwoJCQkJCQl9CgkJCQkJfSBj
YXRjaCggXyApIHt9CgoJCQkJCS8vIERvIHNlbmQgdGhlIHJlcXVlc3QKCQkJCQkv
LyBUaGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24gd2hpY2ggaXMgYWN0dWFsbHkK
CQkJCQkvLyBoYW5kbGVkIGluIGpRdWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2gg
aGVyZSkKCQkJCQl4aHIuc2VuZCggKCBzLmhhc0NvbnRlbnQgJiYgcy5kYXRhICkg
fHwgbnVsbCApOwoKCQkJCQkvLyBMaXN0ZW5lcgoJCQkJCWNhbGxiYWNrID0gZnVu
Y3Rpb24oIF8sIGlzQWJvcnQgKSB7CgoJCQkJCQl2YXIgc3RhdHVzLAoJCQkJCQkJ
c3RhdHVzVGV4dCwKCQkJCQkJCXJlc3BvbnNlSGVhZGVycywKCQkJCQkJCXJlc3Bv
bnNlcywKCQkJCQkJCXhtbDsKCgkJCQkJCS8vIEZpcmVmb3ggdGhyb3dzIGV4Y2Vw
dGlvbnMgd2hlbiBhY2Nlc3NpbmcgcHJvcGVydGllcwoJCQkJCQkvLyBvZiBhbiB4
aHIgd2hlbiBhIG5ldHdvcmsgZXJyb3Igb2NjdXJlZAoJCQkJCQkvLyBodHRwOi8v
aGVscGZ1bC5rbm9icy1kaWFscy5jb20vaW5kZXgucGhwL0NvbXBvbmVudF9yZXR1
cm5lZF9mYWlsdXJlX2NvZGU6XzB4ODAwNDAxMTFfKE5TX0VSUk9SX05PVF9BVkFJ
TEFCTEUpCgkJCQkJCXRyeSB7CgoJCQkJCQkJLy8gV2FzIG5ldmVyIGNhbGxlZCBh
bmQgaXMgYWJvcnRlZCBvciBjb21wbGV0ZQoJCQkJCQkJaWYgKCBjYWxsYmFjayAm
JiAoIGlzQWJvcnQgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDQgKSApIHsKCgkJCQkJ
CQkJLy8gT25seSBjYWxsZWQgb25jZQoJCQkJCQkJCWNhbGxiYWNrID0gdW5kZWZp
bmVkOwoKCQkJCQkJCQkvLyBEbyBub3Qga2VlcCBhcyBhY3RpdmUgYW55bW9yZQoJ
CQkJCQkJCWlmICggaGFuZGxlICkgewoJCQkJCQkJCQl4aHIub25yZWFkeXN0YXRl
Y2hhbmdlID0galF1ZXJ5Lm5vb3A7CgkJCQkJCQkJCWlmICggeGhyT25VbmxvYWRB
Ym9ydCApIHsKCQkJCQkJCQkJCWRlbGV0ZSB4aHJDYWxsYmFja3NbIGhhbmRsZSBd
OwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoKCQkJCQkJCQkvLyBJZiBpdCdzIGFuIGFi
b3J0CgkJCQkJCQkJaWYgKCBpc0Fib3J0ICkgewoJCQkJCQkJCQkvLyBBYm9ydCBp
dCBtYW51YWxseSBpZiBuZWVkZWQKCQkJCQkJCQkJaWYgKCB4aHIucmVhZHlTdGF0
ZSAhPT0gNCApIHsKCQkJCQkJCQkJCXhoci5hYm9ydCgpOwoJCQkJCQkJCQl9CgkJ
CQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJc3RhdHVzID0geGhyLnN0YXR1czsKCQkJ
CQkJCQkJcmVzcG9uc2VIZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVy
cygpOwoJCQkJCQkJCQlyZXNwb25zZXMgPSB7fTsKCQkJCQkJCQkJeG1sID0geGhy
LnJlc3BvbnNlWE1MOwoKCQkJCQkJCQkJLy8gQ29uc3RydWN0IHJlc3BvbnNlIGxp
c3QKCQkJCQkJCQkJaWYgKCB4bWwgJiYgeG1sLmRvY3VtZW50RWxlbWVudCAvKiAj
NDk1OCAqLyApIHsKCQkJCQkJCQkJCXJlc3BvbnNlcy54bWwgPSB4bWw7CgkJCQkJ
CQkJCX0KCQkJCQkJCQkJcmVzcG9uc2VzLnRleHQgPSB4aHIucmVzcG9uc2VUZXh0
OwoKCQkJCQkJCQkJLy8gRmlyZWZveCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4g
YWNjZXNzaW5nCgkJCQkJCQkJCS8vIHN0YXR1c1RleHQgZm9yIGZhdWx0eSBjcm9z
cy1kb21haW4gcmVxdWVzdHMKCQkJCQkJCQkJdHJ5IHsKCQkJCQkJCQkJCXN0YXR1
c1RleHQgPSB4aHIuc3RhdHVzVGV4dDsKCQkJCQkJCQkJfSBjYXRjaCggZSApIHsK
CQkJCQkJCQkJCS8vIFdlIG5vcm1hbGl6ZSB3aXRoIFdlYmtpdCBnaXZpbmcgYW4g
ZW1wdHkgc3RhdHVzVGV4dAoJCQkJCQkJCQkJc3RhdHVzVGV4dCA9ICIiOwoJCQkJ
CQkJCQl9CgoJCQkJCQkJCQkvLyBGaWx0ZXIgc3RhdHVzIGZvciBub24gc3RhbmRh
cmQgYmVoYXZpb3JzCgoJCQkJCQkJCQkvLyBJZiB0aGUgcmVxdWVzdCBpcyBsb2Nh
bCBhbmQgd2UgaGF2ZSBkYXRhOiBhc3N1bWUgYSBzdWNjZXNzCgkJCQkJCQkJCS8v
IChzdWNjZXNzIHdpdGggbm8gZGF0YSB3b24ndCBnZXQgbm90aWZpZWQsIHRoYXQn
cyB0aGUgYmVzdCB3ZQoJCQkJCQkJCQkvLyBjYW4gZG8gZ2l2ZW4gY3VycmVudCBp
bXBsZW1lbnRhdGlvbnMpCgkJCQkJCQkJCWlmICggIXN0YXR1cyAmJiBzLmlzTG9j
YWwgJiYgIXMuY3Jvc3NEb21haW4gKSB7CgkJCQkJCQkJCQlzdGF0dXMgPSByZXNw
b25zZXMudGV4dCA/IDIwMCA6IDQwNDsKCQkJCQkJCQkJLy8gSUUgLSAjMTQ1MDog
c29tZXRpbWVzIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDQKCQkJ
CQkJCQkJfSBlbHNlIGlmICggc3RhdHVzID09PSAxMjIzICkgewoJCQkJCQkJCQkJ
c3RhdHVzID0gMjA0OwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJ
CQl9IGNhdGNoKCBmaXJlZm94QWNjZXNzRXhjZXB0aW9uICkgewoJCQkJCQkJaWYg
KCAhaXNBYm9ydCApIHsKCQkJCQkJCQljb21wbGV0ZSggLTEsIGZpcmVmb3hBY2Nl
c3NFeGNlcHRpb24gKTsKCQkJCQkJCX0KCQkJCQkJfQoKCQkJCQkJLy8gQ2FsbCBj
b21wbGV0ZSBpZiBuZWVkZWQKCQkJCQkJaWYgKCByZXNwb25zZXMgKSB7CgkJCQkJ
CQljb21wbGV0ZSggc3RhdHVzLCBzdGF0dXNUZXh0LCByZXNwb25zZXMsIHJlc3Bv
bnNlSGVhZGVycyApOwoJCQkJCQl9CgkJCQkJfTsKCgkJCQkJLy8gaWYgd2UncmUg
aW4gc3luYyBtb2RlIG9yIGl0J3MgaW4gY2FjaGUKCQkJCQkvLyBhbmQgaGFzIGJl
ZW4gcmV0cmlldmVkIGRpcmVjdGx5IChJRTYgJiBJRTcpCgkJCQkJLy8gd2UgbmVl
ZCB0byBtYW51YWxseSBmaXJlIHRoZSBjYWxsYmFjawoJCQkJCWlmICggIXMuYXN5
bmMgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDQgKSB7CgkJCQkJCWNhbGxiYWNrKCk7
CgkJCQkJfSBlbHNlIHsKCQkJCQkJaGFuZGxlID0gKyt4aHJJZDsKCQkJCQkJaWYg
KCB4aHJPblVubG9hZEFib3J0ICkgewoJCQkJCQkJLy8gQ3JlYXRlIHRoZSBhY3Rp
dmUgeGhycyBjYWxsYmFja3MgbGlzdCBpZiBuZWVkZWQKCQkJCQkJCS8vIGFuZCBh
dHRhY2ggdGhlIHVubG9hZCBoYW5kbGVyCgkJCQkJCQlpZiAoICF4aHJDYWxsYmFj
a3MgKSB7CgkJCQkJCQkJeGhyQ2FsbGJhY2tzID0ge307CgkJCQkJCQkJalF1ZXJ5
KCB3aW5kb3cgKS51bmxvYWQoIHhock9uVW5sb2FkQWJvcnQgKTsKCQkJCQkJCX0K
CQkJCQkJCS8vIEFkZCB0byBsaXN0IG9mIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcwoJ
CQkJCQkJeGhyQ2FsbGJhY2tzWyBoYW5kbGUgXSA9IGNhbGxiYWNrOwoJCQkJCQl9
CgkJCQkJCXhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBjYWxsYmFjazsKCQkJCQl9
CgkJCQl9LAoKCQkJCWFib3J0OiBmdW5jdGlvbigpIHsKCQkJCQlpZiAoIGNhbGxi
YWNrICkgewoJCQkJCQljYWxsYmFjaygwLDEpOwoJCQkJCX0KCQkJCX0KCQkJfTsK
CQl9Cgl9KTsKfQoKCgoKdmFyIGVsZW1kaXNwbGF5ID0ge30sCglpZnJhbWUsIGlm
cmFtZURvYywKCXJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLAoJ
cmZ4bnVtID0gL14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSwKCXRp
bWVySWQsCglmeEF0dHJzID0gWwoJCS8vIGhlaWdodCBhbmltYXRpb25zCgkJWyAi
aGVpZ2h0IiwgIm1hcmdpblRvcCIsICJtYXJnaW5Cb3R0b20iLCAicGFkZGluZ1Rv
cCIsICJwYWRkaW5nQm90dG9tIiBdLAoJCS8vIHdpZHRoIGFuaW1hdGlvbnMKCQlb
ICJ3aWR0aCIsICJtYXJnaW5MZWZ0IiwgIm1hcmdpblJpZ2h0IiwgInBhZGRpbmdM
ZWZ0IiwgInBhZGRpbmdSaWdodCIgXSwKCQkvLyBvcGFjaXR5IGFuaW1hdGlvbnMK
CQlbICJvcGFjaXR5IiBdCgldLAoJZnhOb3c7CgpqUXVlcnkuZm4uZXh0ZW5kKHsK
CXNob3c6IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHsKCQl2
YXIgZWxlbSwgZGlzcGxheTsKCgkJaWYgKCBzcGVlZCB8fCBzcGVlZCA9PT0gMCAp
IHsKCQkJcmV0dXJuIHRoaXMuYW5pbWF0ZSggZ2VuRngoInNob3ciLCAzKSwgc3Bl
ZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKCgkJfSBlbHNlIHsKCQkJZm9yICggdmFy
IGkgPSAwLCBqID0gdGhpcy5sZW5ndGg7IGkgPCBqOyBpKysgKSB7CgkJCQllbGVt
ID0gdGhpc1sgaSBdOwoKCQkJCWlmICggZWxlbS5zdHlsZSApIHsKCQkJCQlkaXNw
bGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5OwoKCQkJCQkvLyBSZXNldCB0aGUgaW5s
aW5lIGRpc3BsYXkgb2YgdGhpcyBlbGVtZW50IHRvIGxlYXJuIGlmIGl0IGlzCgkJ
CQkJLy8gYmVpbmcgaGlkZGVuIGJ5IGNhc2NhZGVkIHJ1bGVzIG9yIG5vdAoJCQkJ
CWlmICggIWpRdWVyeS5fZGF0YShlbGVtLCAib2xkZGlzcGxheSIpICYmIGRpc3Bs
YXkgPT09ICJub25lIiApIHsKCQkJCQkJZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlz
cGxheSA9ICIiOwoJCQkJCX0KCgkJCQkJLy8gU2V0IGVsZW1lbnRzIHdoaWNoIGhh
dmUgYmVlbiBvdmVycmlkZGVuIHdpdGggZGlzcGxheTogbm9uZQoJCQkJCS8vIGlu
IGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0
eWxlIGlzCgkJCQkJLy8gZm9yIHN1Y2ggYW4gZWxlbWVudAoJCQkJCWlmICggZGlz
cGxheSA9PT0gIiIgJiYgalF1ZXJ5LmNzcyhlbGVtLCAiZGlzcGxheSIpID09PSAi
bm9uZSIgKSB7CgkJCQkJCWpRdWVyeS5fZGF0YSggZWxlbSwgIm9sZGRpc3BsYXki
LCBkZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApOwoJCQkJCX0KCQkJCX0K
CQkJfQoKCQkJLy8gU2V0IHRoZSBkaXNwbGF5IG9mIG1vc3Qgb2YgdGhlIGVsZW1l
bnRzIGluIGEgc2Vjb25kIGxvb3AKCQkJLy8gdG8gYXZvaWQgdGhlIGNvbnN0YW50
IHJlZmxvdwoJCQlmb3IgKCBpID0gMDsgaSA8IGo7IGkrKyApIHsKCQkJCWVsZW0g
PSB0aGlzWyBpIF07CgoJCQkJaWYgKCBlbGVtLnN0eWxlICkgewoJCQkJCWRpc3Bs
YXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7CgoJCQkJCWlmICggZGlzcGxheSA9PT0g
IiIgfHwgZGlzcGxheSA9PT0gIm5vbmUiICkgewoJCQkJCQllbGVtLnN0eWxlLmRp
c3BsYXkgPSBqUXVlcnkuX2RhdGEoIGVsZW0sICJvbGRkaXNwbGF5IiApIHx8ICIi
OwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJcmV0dXJuIHRoaXM7CgkJfQoJfSwKCglo
aWRlOiBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CgkJaWYg
KCBzcGVlZCB8fCBzcGVlZCA9PT0gMCApIHsKCQkJcmV0dXJuIHRoaXMuYW5pbWF0
ZSggZ2VuRngoImhpZGUiLCAzKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2spOwoK
CQl9IGVsc2UgewoJCQl2YXIgZWxlbSwgZGlzcGxheSwKCQkJCWkgPSAwLAoJCQkJ
aiA9IHRoaXMubGVuZ3RoOwoKCQkJZm9yICggOyBpIDwgajsgaSsrICkgewoJCQkJ
ZWxlbSA9IHRoaXNbaV07CgkJCQlpZiAoIGVsZW0uc3R5bGUgKSB7CgkJCQkJZGlz
cGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiApOwoKCQkJCQlpZiAo
IGRpc3BsYXkgIT09ICJub25lIiAmJiAhalF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xk
ZGlzcGxheSIgKSApIHsKCQkJCQkJalF1ZXJ5Ll9kYXRhKCBlbGVtLCAib2xkZGlz
cGxheSIsIGRpc3BsYXkgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCS8vIFNldCB0
aGUgZGlzcGxheSBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcAoJCQkv
LyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93CgkJCWZvciAoIGkgPSAwOyBp
IDwgajsgaSsrICkgewoJCQkJaWYgKCB0aGlzW2ldLnN0eWxlICkgewoJCQkJCXRo
aXNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJCX0KCQkJfQoKCQkJcmV0
dXJuIHRoaXM7CgkJfQoJfSwKCgkvLyBTYXZlIHRoZSBvbGQgdG9nZ2xlIGZ1bmN0
aW9uCglfdG9nZ2xlOiBqUXVlcnkuZm4udG9nZ2xlLAoKCXRvZ2dsZTogZnVuY3Rp
b24oIGZuLCBmbjIsIGNhbGxiYWNrICkgewoJCXZhciBib29sID0gdHlwZW9mIGZu
ID09PSAiYm9vbGVhbiI7CgoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oZm4pICYm
IGpRdWVyeS5pc0Z1bmN0aW9uKGZuMikgKSB7CgkJCXRoaXMuX3RvZ2dsZS5hcHBs
eSggdGhpcywgYXJndW1lbnRzICk7CgoJCX0gZWxzZSBpZiAoIGZuID09IG51bGwg
fHwgYm9vbCApIHsKCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIHN0
YXRlID0gYm9vbCA/IGZuIDogalF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIik7CgkJ
CQlqUXVlcnkodGhpcylbIHN0YXRlID8gInNob3ciIDogImhpZGUiIF0oKTsKCQkJ
fSk7CgoJCX0gZWxzZSB7CgkJCXRoaXMuYW5pbWF0ZShnZW5GeCgidG9nZ2xlIiwg
MyksIGZuLCBmbjIsIGNhbGxiYWNrKTsKCQl9CgoJCXJldHVybiB0aGlzOwoJfSwK
CglmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sg
KSB7CgkJcmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5
IiwgMCkuc2hvdygpLmVuZCgpCgkJCQkJLmFuaW1hdGUoe29wYWNpdHk6IHRvfSwg
c3BlZWQsIGVhc2luZywgY2FsbGJhY2spOwoJfSwKCglhbmltYXRlOiBmdW5jdGlv
biggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7CgkJdmFyIG9wdGFs
bCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTsKCgkJ
aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApICkgewoJCQlyZXR1cm4g
dGhpcy5lYWNoKCBvcHRhbGwuY29tcGxldGUsIFsgZmFsc2UgXSApOwoJCX0KCgkJ
Ly8gRG8gbm90IGNoYW5nZSByZWZlcmVuY2VkIHByb3BlcnRpZXMgYXMgcGVyLXBy
b3BlcnR5IGVhc2luZyB3aWxsIGJlIGxvc3QKCQlwcm9wID0galF1ZXJ5LmV4dGVu
ZCgge30sIHByb3AgKTsKCgkJZnVuY3Rpb24gZG9BbmltYXRpb24oKSB7CgkJCS8v
IFhYWCAndGhpcycgZG9lcyBub3QgYWx3YXlzIGhhdmUgYSBub2RlTmFtZSB3aGVu
IHJ1bm5pbmcgdGhlCgkJCS8vIHRlc3Qgc3VpdGUKCgkJCWlmICggb3B0YWxsLnF1
ZXVlID09PSBmYWxzZSApIHsKCQkJCWpRdWVyeS5fbWFyayggdGhpcyApOwoJCQl9
CgoJCQl2YXIgb3B0ID0galF1ZXJ5LmV4dGVuZCgge30sIG9wdGFsbCApLAoJCQkJ
aXNFbGVtZW50ID0gdGhpcy5ub2RlVHlwZSA9PT0gMSwKCQkJCWhpZGRlbiA9IGlz
RWxlbWVudCAmJiBqUXVlcnkodGhpcykuaXMoIjpoaWRkZW4iKSwKCQkJCW5hbWUs
IHZhbCwgcCwgZSwKCQkJCXBhcnRzLCBzdGFydCwgZW5kLCB1bml0LAoJCQkJbWV0
aG9kOwoKCQkJLy8gd2lsbCBzdG9yZSBwZXIgcHJvcGVydHkgZWFzaW5nIGFuZCBi
ZSB1c2VkIHRvIGRldGVybWluZSB3aGVuIGFuIGFuaW1hdGlvbiBpcyBjb21wbGV0
ZQoJCQlvcHQuYW5pbWF0ZWRQcm9wZXJ0aWVzID0ge307CgoJCQlmb3IgKCBwIGlu
IHByb3AgKSB7CgoJCQkJLy8gcHJvcGVydHkgbmFtZSBub3JtYWxpemF0aW9uCgkJ
CQluYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggcCApOwoJCQkJaWYgKCBwICE9PSBu
YW1lICkgewoJCQkJCXByb3BbIG5hbWUgXSA9IHByb3BbIHAgXTsKCQkJCQlkZWxl
dGUgcHJvcFsgcCBdOwoJCQkJfQoKCQkJCXZhbCA9IHByb3BbIG5hbWUgXTsKCgkJ
CQkvLyBlYXNpbmcgcmVzb2x1dGlvbjogcGVyIHByb3BlcnR5ID4gb3B0LnNwZWNp
YWxFYXNpbmcgPiBvcHQuZWFzaW5nID4gJ3N3aW5nJyAoZGVmYXVsdCkKCQkJCWlm
ICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkgewoJCQkJCW9wdC5hbmltYXRlZFBy
b3BlcnRpZXNbIG5hbWUgXSA9IHZhbFsgMSBdOwoJCQkJCXZhbCA9IHByb3BbIG5h
bWUgXSA9IHZhbFsgMCBdOwoJCQkJfSBlbHNlIHsKCQkJCQlvcHQuYW5pbWF0ZWRQ
cm9wZXJ0aWVzWyBuYW1lIF0gPSBvcHQuc3BlY2lhbEVhc2luZyAmJiBvcHQuc3Bl
Y2lhbEVhc2luZ1sgbmFtZSBdIHx8IG9wdC5lYXNpbmcgfHwgJ3N3aW5nJzsKCQkJ
CX0KCgkJCQlpZiAoIHZhbCA9PT0gImhpZGUiICYmIGhpZGRlbiB8fCB2YWwgPT09
ICJzaG93IiAmJiAhaGlkZGVuICkgewoJCQkJCXJldHVybiBvcHQuY29tcGxldGUu
Y2FsbCggdGhpcyApOwoJCQkJfQoKCQkJCWlmICggaXNFbGVtZW50ICYmICggbmFt
ZSA9PT0gImhlaWdodCIgfHwgbmFtZSA9PT0gIndpZHRoIiApICkgewoJCQkJCS8v
IE1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcgc25lYWtzIG91dAoJCQkJCS8vIFJlY29y
ZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QK
CQkJCQkvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJm
bG93WCBhbmQKCQkJCQkvLyBvdmVyZmxvd1kgYXJlIHNldCB0byB0aGUgc2FtZSB2
YWx1ZQoJCQkJCW9wdC5vdmVyZmxvdyA9IFsgdGhpcy5zdHlsZS5vdmVyZmxvdywg
dGhpcy5zdHlsZS5vdmVyZmxvd1gsIHRoaXMuc3R5bGUub3ZlcmZsb3dZIF07CgoJ
CQkJCS8vIFNldCBkaXNwbGF5IHByb3BlcnR5IHRvIGlubGluZS1ibG9jayBmb3Ig
aGVpZ2h0L3dpZHRoCgkJCQkJLy8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVu
dHMgdGhhdCBhcmUgaGF2aW5nIHdpZHRoL2hlaWdodCBhbmltYXRlZAoJCQkJCWlm
ICggalF1ZXJ5LmNzcyggdGhpcywgImRpc3BsYXkiICkgPT09ICJpbmxpbmUiICYm
CgkJCQkJCQlqUXVlcnkuY3NzKCB0aGlzLCAiZmxvYXQiICkgPT09ICJub25lIiAp
IHsKCgkJCQkJCS8vIGlubGluZS1sZXZlbCBlbGVtZW50cyBhY2NlcHQgaW5saW5l
LWJsb2NrOwoJCQkJCQkvLyBibG9jay1sZXZlbCBlbGVtZW50cyBuZWVkIHRvIGJl
IGlubGluZSB3aXRoIGxheW91dAoJCQkJCQlpZiAoICFqUXVlcnkuc3VwcG9ydC5p
bmxpbmVCbG9ja05lZWRzTGF5b3V0IHx8IGRlZmF1bHREaXNwbGF5KCB0aGlzLm5v
ZGVOYW1lICkgPT09ICJpbmxpbmUiICkgewoJCQkJCQkJdGhpcy5zdHlsZS5kaXNw
bGF5ID0gImlubGluZS1ibG9jayI7CgoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhp
cy5zdHlsZS56b29tID0gMTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJ
aWYgKCBvcHQub3ZlcmZsb3cgIT0gbnVsbCApIHsKCQkJCXRoaXMuc3R5bGUub3Zl
cmZsb3cgPSAiaGlkZGVuIjsKCQkJfQoKCQkJZm9yICggcCBpbiBwcm9wICkgewoJ
CQkJZSA9IG5ldyBqUXVlcnkuZngoIHRoaXMsIG9wdCwgcCApOwoJCQkJdmFsID0g
cHJvcFsgcCBdOwoKCQkJCWlmICggcmZ4dHlwZXMudGVzdCggdmFsICkgKSB7CgoJ
CQkJCS8vIFRyYWNrcyB3aGV0aGVyIHRvIHNob3cgb3IgaGlkZSBiYXNlZCBvbiBw
cml2YXRlCgkJCQkJLy8gZGF0YSBhdHRhY2hlZCB0byB0aGUgZWxlbWVudAoJCQkJ
CW1ldGhvZCA9IGpRdWVyeS5fZGF0YSggdGhpcywgInRvZ2dsZSIgKyBwICkgfHwg
KCB2YWwgPT09ICJ0b2dnbGUiID8gaGlkZGVuID8gInNob3ciIDogImhpZGUiIDog
MCApOwoJCQkJCWlmICggbWV0aG9kICkgewoJCQkJCQlqUXVlcnkuX2RhdGEoIHRo
aXMsICJ0b2dnbGUiICsgcCwgbWV0aG9kID09PSAic2hvdyIgPyAiaGlkZSIgOiAi
c2hvdyIgKTsKCQkJCQkJZVsgbWV0aG9kIF0oKTsKCQkJCQl9IGVsc2UgewoJCQkJ
CQllWyB2YWwgXSgpOwoJCQkJCX0KCgkJCQl9IGVsc2UgewoJCQkJCXBhcnRzID0g
cmZ4bnVtLmV4ZWMoIHZhbCApOwoJCQkJCXN0YXJ0ID0gZS5jdXIoKTsKCgkJCQkJ
aWYgKCBwYXJ0cyApIHsKCQkJCQkJZW5kID0gcGFyc2VGbG9hdCggcGFydHNbMl0g
KTsKCQkJCQkJdW5pdCA9IHBhcnRzWzNdIHx8ICggalF1ZXJ5LmNzc051bWJlclsg
cCBdID8gIiIgOiAicHgiICk7CgoJCQkJCQkvLyBXZSBuZWVkIHRvIGNvbXB1dGUg
c3RhcnRpbmcgdmFsdWUKCQkJCQkJaWYgKCB1bml0ICE9PSAicHgiICkgewoJCQkJ
CQkJalF1ZXJ5LnN0eWxlKCB0aGlzLCBwLCAoZW5kIHx8IDEpICsgdW5pdCk7CgkJ
CQkJCQlzdGFydCA9ICggKGVuZCB8fCAxKSAvIGUuY3VyKCkgKSAqIHN0YXJ0OwoJ
CQkJCQkJalF1ZXJ5LnN0eWxlKCB0aGlzLCBwLCBzdGFydCArIHVuaXQpOwoJCQkJ
CQl9CgoJCQkJCQkvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92aWRlZCwgd2Un
cmUgZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb24KCQkJCQkJaWYgKCBwYXJ0c1sx
XSApIHsKCQkJCQkJCWVuZCA9ICggKHBhcnRzWyAxIF0gPT09ICItPSIgPyAtMSA6
IDEpICogZW5kICkgKyBzdGFydDsKCQkJCQkJfQoKCQkJCQkJZS5jdXN0b20oIHN0
YXJ0LCBlbmQsIHVuaXQgKTsKCgkJCQkJfSBlbHNlIHsKCQkJCQkJZS5jdXN0b20o
IHN0YXJ0LCB2YWwsICIiICk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBGb3Ig
SlMgc3RyaWN0IGNvbXBsaWFuY2UKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQlyZXR1
cm4gb3B0YWxsLnF1ZXVlID09PSBmYWxzZSA/CgkJCXRoaXMuZWFjaCggZG9Bbmlt
YXRpb24gKSA6CgkJCXRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRp
b24gKTsKCX0sCgoJc3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdv
dG9FbmQgKSB7CgkJaWYgKCB0eXBlb2YgdHlwZSAhPT0gInN0cmluZyIgKSB7CgkJ
CWdvdG9FbmQgPSBjbGVhclF1ZXVlOwoJCQljbGVhclF1ZXVlID0gdHlwZTsKCQkJ
dHlwZSA9IHVuZGVmaW5lZDsKCQl9CgkJaWYgKCBjbGVhclF1ZXVlICYmIHR5cGUg
IT09IGZhbHNlICkgewoJCQl0aGlzLnF1ZXVlKCB0eXBlIHx8ICJmeCIsIFtdICk7
CgkJfQoKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQl2YXIgaW5k
ZXgsCgkJCQloYWRUaW1lcnMgPSBmYWxzZSwKCQkJCXRpbWVycyA9IGpRdWVyeS50
aW1lcnMsCgkJCQlkYXRhID0galF1ZXJ5Ll9kYXRhKCB0aGlzICk7CgoJCQkvLyBj
bGVhciBtYXJrZXIgY291bnRlcnMgaWYgd2Uga25vdyB0aGV5IHdvbid0IGJlCgkJ
CWlmICggIWdvdG9FbmQgKSB7CgkJCQlqUXVlcnkuX3VubWFyayggdHJ1ZSwgdGhp
cyApOwoJCQl9CgoJCQlmdW5jdGlvbiBzdG9wUXVldWUoIGVsZW0sIGRhdGEsIGlu
ZGV4ICkgewoJCQkJdmFyIGhvb2tzID0gZGF0YVsgaW5kZXggXTsKCQkJCWpRdWVy
eS5yZW1vdmVEYXRhKCBlbGVtLCBpbmRleCwgdHJ1ZSApOwoJCQkJaG9va3Muc3Rv
cCggZ290b0VuZCApOwoJCQl9CgoJCQlpZiAoIHR5cGUgPT0gbnVsbCApIHsKCQkJ
CWZvciAoIGluZGV4IGluIGRhdGEgKSB7CgkJCQkJaWYgKCBkYXRhWyBpbmRleCBd
ICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBpbmRleC5pbmRleE9mKCIucnVuIikg
PT09IGluZGV4Lmxlbmd0aCAtIDQgKSB7CgkJCQkJCXN0b3BRdWV1ZSggdGhpcywg
ZGF0YSwgaW5kZXggKTsKCQkJCQl9CgkJCQl9CgkJCX0gZWxzZSBpZiAoIGRhdGFb
IGluZGV4ID0gdHlwZSArICIucnVuIiBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAp
ewoJCQkJc3RvcFF1ZXVlKCB0aGlzLCBkYXRhLCBpbmRleCApOwoJCQl9CgoJCQlm
b3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkgewoJCQkJaWYg
KCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiAodHlwZSA9PSBudWxs
IHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7CgkJCQkJaWYg
KCBnb3RvRW5kICkgewoKCQkJCQkJLy8gZm9yY2UgdGhlIG5leHQgc3RlcCB0byBi
ZSB0aGUgbGFzdAoJCQkJCQl0aW1lcnNbIGluZGV4IF0oIHRydWUgKTsKCQkJCQl9
IGVsc2UgewoJCQkJCQl0aW1lcnNbIGluZGV4IF0uc2F2ZVN0YXRlKCk7CgkJCQkJ
fQoJCQkJCWhhZFRpbWVycyA9IHRydWU7CgkJCQkJdGltZXJzLnNwbGljZSggaW5k
ZXgsIDEgKTsKCQkJCX0KCQkJfQoKCQkJLy8gc3RhcnQgdGhlIG5leHQgaW4gdGhl
IHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZAoJCQkvLyB0aW1l
cnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3Ms
IHdoaWNoIHdpbGwgZGVxdWV1ZQoJCQkvLyBidXQgb25seSBpZiB0aGV5IHdlcmUg
Z290b0VuZAoJCQlpZiAoICEoIGdvdG9FbmQgJiYgaGFkVGltZXJzICkgKSB7CgkJ
CQlqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApOwoJCQl9CgkJfSk7Cgl9Cgp9
KTsKCi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVu
IHN5bmNocm9ub3VzbHkKZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7CglzZXRUaW1l
b3V0KCBjbGVhckZ4Tm93LCAwICk7CglyZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5u
b3coKSApOwp9CgpmdW5jdGlvbiBjbGVhckZ4Tm93KCkgewoJZnhOb3cgPSB1bmRl
ZmluZWQ7Cn0KCi8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3Rh
bmRhcmQgYW5pbWF0aW9uCmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBudW0gKSB7Cgl2
YXIgb2JqID0ge307CgoJalF1ZXJ5LmVhY2goIGZ4QXR0cnMuY29uY2F0LmFwcGx5
KFtdLCBmeEF0dHJzLnNsaWNlKCAwLCBudW0gKSksIGZ1bmN0aW9uKCkgewoJCW9i
alsgdGhpcyBdID0gdHlwZTsKCX0pOwoKCXJldHVybiBvYmo7Cn0KCi8vIEdlbmVy
YXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnMKalF1ZXJ5LmVhY2go
ewoJc2xpZGVEb3duOiBnZW5GeCggInNob3ciLCAxICksCglzbGlkZVVwOiBnZW5G
eCggImhpZGUiLCAxICksCglzbGlkZVRvZ2dsZTogZ2VuRngoICJ0b2dnbGUiLCAx
ICksCglmYWRlSW46IHsgb3BhY2l0eTogInNob3ciIH0sCglmYWRlT3V0OiB7IG9w
YWNpdHk6ICJoaWRlIiB9LAoJZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiAidG9nZ2xl
IiB9Cn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHsKCWpRdWVyeS5mblsgbmFt
ZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewoJCXJl
dHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFj
ayApOwoJfTsKfSk7CgpqUXVlcnkuZXh0ZW5kKHsKCXNwZWVkOiBmdW5jdGlvbigg
c3BlZWQsIGVhc2luZywgZm4gKSB7CgkJdmFyIG9wdCA9IHNwZWVkICYmIHR5cGVv
ZiBzcGVlZCA9PT0gIm9iamVjdCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQg
KSA6IHsKCQkJY29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHwKCQkJCWpR
dWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAoJCQlkdXJhdGlvbjog
c3BlZWQsCgkJCWVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1
ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZwoJCX07CgoJCW9wdC5k
dXJhdGlvbiA9IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlv
biA9PT0gIm51bWJlciIgPyBvcHQuZHVyYXRpb24gOgoJCQlvcHQuZHVyYXRpb24g
aW4galF1ZXJ5LmZ4LnNwZWVkcyA/IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJh
dGlvbiBdIDogalF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDsKCgkJLy8gbm9ybWFs
aXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gImZ4IgoJCWlm
ICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkgewoJ
CQlvcHQucXVldWUgPSAiZngiOwoJCX0KCgkJLy8gUXVldWVpbmcKCQlvcHQub2xk
ID0gb3B0LmNvbXBsZXRlOwoKCQlvcHQuY29tcGxldGUgPSBmdW5jdGlvbiggbm9V
bm1hcmsgKSB7CgkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSAp
IHsKCQkJCW9wdC5vbGQuY2FsbCggdGhpcyApOwoJCQl9CgoJCQlpZiAoIG9wdC5x
dWV1ZSApIHsKCQkJCWpRdWVyeS5kZXF1ZXVlKCB0aGlzLCBvcHQucXVldWUgKTsK
CQkJfSBlbHNlIGlmICggbm9Vbm1hcmsgIT09IGZhbHNlICkgewoJCQkJalF1ZXJ5
Ll91bm1hcmsoIHRoaXMgKTsKCQkJfQoJCX07CgoJCXJldHVybiBvcHQ7Cgl9LAoK
CWVhc2luZzogewoJCWxpbmVhcjogZnVuY3Rpb24oIHAsIG4sIGZpcnN0TnVtLCBk
aWZmICkgewoJCQlyZXR1cm4gZmlyc3ROdW0gKyBkaWZmICogcDsKCQl9LAoJCXN3
aW5nOiBmdW5jdGlvbiggcCwgbiwgZmlyc3ROdW0sIGRpZmYgKSB7CgkJCXJldHVy
biAoICggLU1hdGguY29zKCBwKk1hdGguUEkgKSAvIDIgKSArIDAuNSApICogZGlm
ZiArIGZpcnN0TnVtOwoJCX0KCX0sCgoJdGltZXJzOiBbXSwKCglmeDogZnVuY3Rp
b24oIGVsZW0sIG9wdGlvbnMsIHByb3AgKSB7CgkJdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKCQl0aGlzLmVsZW0gPSBlbGVtOwoJCXRoaXMucHJvcCA9IHByb3A7CgoJ
CW9wdGlvbnMub3JpZyA9IG9wdGlvbnMub3JpZyB8fCB7fTsKCX0KCn0pOwoKalF1
ZXJ5LmZ4LnByb3RvdHlwZSA9IHsKCS8vIFNpbXBsZSBmdW5jdGlvbiBmb3Igc2V0
dGluZyBhIHN0eWxlIHZhbHVlCgl1cGRhdGU6IGZ1bmN0aW9uKCkgewoJCWlmICgg
dGhpcy5vcHRpb25zLnN0ZXAgKSB7CgkJCXRoaXMub3B0aW9ucy5zdGVwLmNhbGwo
IHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTsKCQl9CgoJCSggalF1ZXJ5LmZ4
LnN0ZXBbIHRoaXMucHJvcCBdIHx8IGpRdWVyeS5meC5zdGVwLl9kZWZhdWx0ICko
IHRoaXMgKTsKCX0sCgoJLy8gR2V0IHRoZSBjdXJyZW50IHNpemUKCWN1cjogZnVu
Y3Rpb24oKSB7CgkJaWYgKCB0aGlzLmVsZW1bIHRoaXMucHJvcCBdICE9IG51bGwg
JiYgKCF0aGlzLmVsZW0uc3R5bGUgfHwgdGhpcy5lbGVtLnN0eWxlWyB0aGlzLnBy
b3AgXSA9PSBudWxsKSApIHsKCQkJcmV0dXJuIHRoaXMuZWxlbVsgdGhpcy5wcm9w
IF07CgkJfQoKCQl2YXIgcGFyc2VkLAoJCQlyID0galF1ZXJ5LmNzcyggdGhpcy5l
bGVtLCB0aGlzLnByb3AgKTsKCQkvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRl
ZmluZWQgYW5kICJhdXRvIiBhcmUgY29udmVydGVkIHRvIDAsCgkJLy8gY29tcGxl
eCB2YWx1ZXMgc3VjaCBhcyAicm90YXRlKDFyYWQpIiBhcmUgcmV0dXJuZWQgYXMg
aXMsCgkJLy8gc2ltcGxlIHZhbHVlcyBzdWNoIGFzICIxMHB4IiBhcmUgcGFyc2Vk
IHRvIEZsb2F0LgoJCXJldHVybiBpc05hTiggcGFyc2VkID0gcGFyc2VGbG9hdCgg
ciApICkgPyAhciB8fCByID09PSAiYXV0byIgPyAwIDogciA6IHBhcnNlZDsKCX0s
CgoJLy8gU3RhcnQgYW4gYW5pbWF0aW9uIGZyb20gb25lIG51bWJlciB0byBhbm90
aGVyCgljdXN0b206IGZ1bmN0aW9uKCBmcm9tLCB0bywgdW5pdCApIHsKCQl2YXIg
c2VsZiA9IHRoaXMsCgkJCWZ4ID0galF1ZXJ5LmZ4OwoKCQl0aGlzLnN0YXJ0VGlt
ZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCk7CgkJdGhpcy5lbmQgPSB0bzsKCQl0
aGlzLm5vdyA9IHRoaXMuc3RhcnQgPSBmcm9tOwoJCXRoaXMucG9zID0gdGhpcy5z
dGF0ZSA9IDA7CgkJdGhpcy51bml0ID0gdW5pdCB8fCB0aGlzLnVuaXQgfHwgKCBq
UXVlcnkuY3NzTnVtYmVyWyB0aGlzLnByb3AgXSA/ICIiIDogInB4IiApOwoKCQlm
dW5jdGlvbiB0KCBnb3RvRW5kICkgewoJCQlyZXR1cm4gc2VsZi5zdGVwKCBnb3Rv
RW5kICk7CgkJfQoKCQl0LnF1ZXVlID0gdGhpcy5vcHRpb25zLnF1ZXVlOwoJCXQu
ZWxlbSA9IHRoaXMuZWxlbTsKCQl0LnNhdmVTdGF0ZSA9IGZ1bmN0aW9uKCkgewoJ
CQlpZiAoIHNlbGYub3B0aW9ucy5oaWRlICYmIGpRdWVyeS5fZGF0YSggc2VsZi5l
bGVtLCAiZnhzaG93IiArIHNlbGYucHJvcCApID09PSB1bmRlZmluZWQgKSB7CgkJ
CQlqUXVlcnkuX2RhdGEoIHNlbGYuZWxlbSwgImZ4c2hvdyIgKyBzZWxmLnByb3As
IHNlbGYuc3RhcnQgKTsKCQkJfQoJCX07CgoJCWlmICggdCgpICYmIGpRdWVyeS50
aW1lcnMucHVzaCh0KSAmJiAhdGltZXJJZCApIHsKCQkJdGltZXJJZCA9IHNldElu
dGVydmFsKCBmeC50aWNrLCBmeC5pbnRlcnZhbCApOwoJCX0KCX0sCgoJLy8gU2lt
cGxlICdzaG93JyBmdW5jdGlvbgoJc2hvdzogZnVuY3Rpb24oKSB7CgkJdmFyIGRh
dGFTaG93ID0galF1ZXJ5Ll9kYXRhKCB0aGlzLmVsZW0sICJmeHNob3ciICsgdGhp
cy5wcm9wICk7CgoJCS8vIFJlbWVtYmVyIHdoZXJlIHdlIHN0YXJ0ZWQsIHNvIHRo
YXQgd2UgY2FuIGdvIGJhY2sgdG8gaXQgbGF0ZXIKCQl0aGlzLm9wdGlvbnMub3Jp
Z1sgdGhpcy5wcm9wIF0gPSBkYXRhU2hvdyB8fCBqUXVlcnkuc3R5bGUoIHRoaXMu
ZWxlbSwgdGhpcy5wcm9wICk7CgkJdGhpcy5vcHRpb25zLnNob3cgPSB0cnVlOwoK
CQkvLyBCZWdpbiB0aGUgYW5pbWF0aW9uCgkJLy8gTWFrZSBzdXJlIHRoYXQgd2Ug
c3RhcnQgYXQgYSBzbWFsbCB3aWR0aC9oZWlnaHQgdG8gYXZvaWQgYW55IGZsYXNo
IG9mIGNvbnRlbnQKCQlpZiAoIGRhdGFTaG93ICE9PSB1bmRlZmluZWQgKSB7CgkJ
CS8vIFRoaXMgc2hvdyBpcyBwaWNraW5nIHVwIHdoZXJlIGEgcHJldmlvdXMgaGlk
ZSBvciBzaG93IGxlZnQgb2ZmCgkJCXRoaXMuY3VzdG9tKCB0aGlzLmN1cigpLCBk
YXRhU2hvdyApOwoJCX0gZWxzZSB7CgkJCXRoaXMuY3VzdG9tKCB0aGlzLnByb3Ag
PT09ICJ3aWR0aCIgfHwgdGhpcy5wcm9wID09PSAiaGVpZ2h0IiA/IDEgOiAwLCB0
aGlzLmN1cigpICk7CgkJfQoKCQkvLyBTdGFydCBieSBzaG93aW5nIHRoZSBlbGVt
ZW50CgkJalF1ZXJ5KCB0aGlzLmVsZW0gKS5zaG93KCk7Cgl9LAoKCS8vIFNpbXBs
ZSAnaGlkZScgZnVuY3Rpb24KCWhpZGU6IGZ1bmN0aW9uKCkgewoJCS8vIFJlbWVt
YmVyIHdoZXJlIHdlIHN0YXJ0ZWQsIHNvIHRoYXQgd2UgY2FuIGdvIGJhY2sgdG8g
aXQgbGF0ZXIKCQl0aGlzLm9wdGlvbnMub3JpZ1sgdGhpcy5wcm9wIF0gPSBqUXVl
cnkuX2RhdGEoIHRoaXMuZWxlbSwgImZ4c2hvdyIgKyB0aGlzLnByb3AgKSB8fCBq
UXVlcnkuc3R5bGUoIHRoaXMuZWxlbSwgdGhpcy5wcm9wICk7CgkJdGhpcy5vcHRp
b25zLmhpZGUgPSB0cnVlOwoKCQkvLyBCZWdpbiB0aGUgYW5pbWF0aW9uCgkJdGhp
cy5jdXN0b20oIHRoaXMuY3VyKCksIDAgKTsKCX0sCgoJLy8gRWFjaCBzdGVwIG9m
IGFuIGFuaW1hdGlvbgoJc3RlcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7CgkJdmFy
IHAsIG4sIGNvbXBsZXRlLAoJCQl0ID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSwK
CQkJZG9uZSA9IHRydWUsCgkJCWVsZW0gPSB0aGlzLmVsZW0sCgkJCW9wdGlvbnMg
PSB0aGlzLm9wdGlvbnM7CgoJCWlmICggZ290b0VuZCB8fCB0ID49IG9wdGlvbnMu
ZHVyYXRpb24gKyB0aGlzLnN0YXJ0VGltZSApIHsKCQkJdGhpcy5ub3cgPSB0aGlz
LmVuZDsKCQkJdGhpcy5wb3MgPSB0aGlzLnN0YXRlID0gMTsKCQkJdGhpcy51cGRh
dGUoKTsKCgkJCW9wdGlvbnMuYW5pbWF0ZWRQcm9wZXJ0aWVzWyB0aGlzLnByb3Ag
XSA9IHRydWU7CgoJCQlmb3IgKCBwIGluIG9wdGlvbnMuYW5pbWF0ZWRQcm9wZXJ0
aWVzICkgewoJCQkJaWYgKCBvcHRpb25zLmFuaW1hdGVkUHJvcGVydGllc1sgcCBd
ICE9PSB0cnVlICkgewoJCQkJCWRvbmUgPSBmYWxzZTsKCQkJCX0KCQkJfQoKCQkJ
aWYgKCBkb25lICkgewoJCQkJLy8gUmVzZXQgdGhlIG92ZXJmbG93CgkJCQlpZiAo
IG9wdGlvbnMub3ZlcmZsb3cgIT0gbnVsbCAmJiAhalF1ZXJ5LnN1cHBvcnQuc2hy
aW5rV3JhcEJsb2NrcyApIHsKCgkJCQkJalF1ZXJ5LmVhY2goIFsgIiIsICJYIiwg
IlkiIF0sIGZ1bmN0aW9uKCBpbmRleCwgdmFsdWUgKSB7CgkJCQkJCWVsZW0uc3R5
bGVbICJvdmVyZmxvdyIgKyB2YWx1ZSBdID0gb3B0aW9ucy5vdmVyZmxvd1sgaW5k
ZXggXTsKCQkJCQl9KTsKCQkJCX0KCgkJCQkvLyBIaWRlIHRoZSBlbGVtZW50IGlm
IHRoZSAiaGlkZSIgb3BlcmF0aW9uIHdhcyBkb25lCgkJCQlpZiAoIG9wdGlvbnMu
aGlkZSApIHsKCQkJCQlqUXVlcnkoIGVsZW0gKS5oaWRlKCk7CgkJCQl9CgoJCQkJ
Ly8gUmVzZXQgdGhlIHByb3BlcnRpZXMsIGlmIHRoZSBpdGVtIGhhcyBiZWVuIGhp
ZGRlbiBvciBzaG93bgoJCQkJaWYgKCBvcHRpb25zLmhpZGUgfHwgb3B0aW9ucy5z
aG93ICkgewoJCQkJCWZvciAoIHAgaW4gb3B0aW9ucy5hbmltYXRlZFByb3BlcnRp
ZXMgKSB7CgkJCQkJCWpRdWVyeS5zdHlsZSggZWxlbSwgcCwgb3B0aW9ucy5vcmln
WyBwIF0gKTsKCQkJCQkJalF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0sICJmeHNob3ci
ICsgcCwgdHJ1ZSApOwoJCQkJCQkvLyBUb2dnbGUgZGF0YSBpcyBubyBsb25nZXIg
bmVlZGVkCgkJCQkJCWpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCAidG9nZ2xlIiAr
IHAsIHRydWUgKTsKCQkJCQl9CgkJCQl9CgoJCQkJLy8gRXhlY3V0ZSB0aGUgY29t
cGxldGUgZnVuY3Rpb24KCQkJCS8vIGluIHRoZSBldmVudCB0aGF0IHRoZSBjb21w
bGV0ZSBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uCgkJCQkvLyB3ZSBtdXN0
IGVuc3VyZSBpdCB3b24ndCBiZSBjYWxsZWQgdHdpY2UuICM1Njg0CgoJCQkJY29t
cGxldGUgPSBvcHRpb25zLmNvbXBsZXRlOwoJCQkJaWYgKCBjb21wbGV0ZSApIHsK
CgkJCQkJb3B0aW9ucy5jb21wbGV0ZSA9IGZhbHNlOwoJCQkJCWNvbXBsZXRlLmNh
bGwoIGVsZW0gKTsKCQkJCX0KCQkJfQoKCQkJcmV0dXJuIGZhbHNlOwoKCQl9IGVs
c2UgewoJCQkvLyBjbGFzc2ljYWwgZWFzaW5nIGNhbm5vdCBiZSB1c2VkIHdpdGgg
YW4gSW5maW5pdHkgZHVyYXRpb24KCQkJaWYgKCBvcHRpb25zLmR1cmF0aW9uID09
IEluZmluaXR5ICkgewoJCQkJdGhpcy5ub3cgPSB0OwoJCQl9IGVsc2UgewoJCQkJ
biA9IHQgLSB0aGlzLnN0YXJ0VGltZTsKCQkJCXRoaXMuc3RhdGUgPSBuIC8gb3B0
aW9ucy5kdXJhdGlvbjsKCgkJCQkvLyBQZXJmb3JtIHRoZSBlYXNpbmcgZnVuY3Rp
b24sIGRlZmF1bHRzIHRvIHN3aW5nCgkJCQl0aGlzLnBvcyA9IGpRdWVyeS5lYXNp
bmdbIG9wdGlvbnMuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF0gXSggdGhp
cy5zdGF0ZSwgbiwgMCwgMSwgb3B0aW9ucy5kdXJhdGlvbiApOwoJCQkJdGhpcy5u
b3cgPSB0aGlzLnN0YXJ0ICsgKCAodGhpcy5lbmQgLSB0aGlzLnN0YXJ0KSAqIHRo
aXMucG9zICk7CgkJCX0KCQkJLy8gUGVyZm9ybSB0aGUgbmV4dCBzdGVwIG9mIHRo
ZSBhbmltYXRpb24KCQkJdGhpcy51cGRhdGUoKTsKCQl9CgoJCXJldHVybiB0cnVl
OwoJfQp9OwoKalF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmZ4LCB7Cgl0aWNrOiBmdW5j
dGlvbigpIHsKCQl2YXIgdGltZXIsCgkJCXRpbWVycyA9IGpRdWVyeS50aW1lcnMs
CgkJCWkgPSAwOwoKCQlmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7
CgkJCXRpbWVyID0gdGltZXJzWyBpIF07CgkJCS8vIENoZWNrcyB0aGUgdGltZXIg
aGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVtb3ZlZAoJCQlpZiAoICF0aW1lcigpICYm
IHRpbWVyc1sgaSBdID09PSB0aW1lciApIHsKCQkJCXRpbWVycy5zcGxpY2UoIGkt
LSwgMSApOwoJCQl9CgkJfQoKCQlpZiAoICF0aW1lcnMubGVuZ3RoICkgewoJCQlq
UXVlcnkuZnguc3RvcCgpOwoJCX0KCX0sCgoJaW50ZXJ2YWw6IDEzLAoKCXN0b3A6
IGZ1bmN0aW9uKCkgewoJCWNsZWFySW50ZXJ2YWwoIHRpbWVySWQgKTsKCQl0aW1l
cklkID0gbnVsbDsKCX0sCgoJc3BlZWRzOiB7CgkJc2xvdzogNjAwLAoJCWZhc3Q6
IDIwMCwKCQkvLyBEZWZhdWx0IHNwZWVkCgkJX2RlZmF1bHQ6IDQwMAoJfSwKCglz
dGVwOiB7CgkJb3BhY2l0eTogZnVuY3Rpb24oIGZ4ICkgewoJCQlqUXVlcnkuc3R5
bGUoIGZ4LmVsZW0sICJvcGFjaXR5IiwgZngubm93ICk7CgkJfSwKCgkJX2RlZmF1
bHQ6IGZ1bmN0aW9uKCBmeCApIHsKCQkJaWYgKCBmeC5lbGVtLnN0eWxlICYmIGZ4
LmVsZW0uc3R5bGVbIGZ4LnByb3AgXSAhPSBudWxsICkgewoJCQkJZnguZWxlbS5z
dHlsZVsgZngucHJvcCBdID0gZngubm93ICsgZngudW5pdDsKCQkJfSBlbHNlIHsK
CQkJCWZ4LmVsZW1bIGZ4LnByb3AgXSA9IGZ4Lm5vdzsKCQkJfQoJCX0KCX0KfSk7
CgovLyBBZGRzIHdpZHRoL2hlaWdodCBzdGVwIGZ1bmN0aW9ucwovLyBEbyBub3Qg
c2V0IGFueXRoaW5nIGJlbG93IDAKalF1ZXJ5LmVhY2goWyAid2lkdGgiLCAiaGVp
Z2h0IiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHsKCWpRdWVyeS5meC5zdGVwWyBw
cm9wIF0gPSBmdW5jdGlvbiggZnggKSB7CgkJalF1ZXJ5LnN0eWxlKCBmeC5lbGVt
LCBwcm9wLCBNYXRoLm1heCgwLCBmeC5ub3cpICsgZngudW5pdCApOwoJfTsKfSk7
CgppZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7Cglq
UXVlcnkuZXhwci5maWx0ZXJzLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7
CgkJcmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBm
biApIHsKCQkJcmV0dXJuIGVsZW0gPT09IGZuLmVsZW07CgkJfSkubGVuZ3RoOwoJ
fTsKfQoKLy8gVHJ5IHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1
ZSBvZiBhbiBlbGVtZW50CmZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5KCBub2RlTmFt
ZSApIHsKCglpZiAoICFlbGVtZGlzcGxheVsgbm9kZU5hbWUgXSApIHsKCgkJdmFy
IGJvZHkgPSBkb2N1bWVudC5ib2R5LAoJCQllbGVtID0galF1ZXJ5KCAiPCIgKyBu
b2RlTmFtZSArICI+IiApLmFwcGVuZFRvKCBib2R5ICksCgkJCWRpc3BsYXkgPSBl
bGVtLmNzcyggImRpc3BsYXkiICk7CgkJZWxlbS5yZW1vdmUoKTsKCgkJLy8gSWYg
dGhlIHNpbXBsZSB3YXkgZmFpbHMsCgkJLy8gZ2V0IGVsZW1lbnQncyByZWFsIGRl
ZmF1bHQgZGlzcGxheSBieSBhdHRhY2hpbmcgaXQgdG8gYSB0ZW1wIGlmcmFtZQoJ
CWlmICggZGlzcGxheSA9PT0gIm5vbmUiIHx8IGRpc3BsYXkgPT09ICIiICkgewoJ
CQkvLyBObyBpZnJhbWUgdG8gdXNlIHlldCwgc28gY3JlYXRlIGl0CgkJCWlmICgg
IWlmcmFtZSApIHsKCQkJCWlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJpZnJhbWUiICk7CgkJCQlpZnJhbWUuZnJhbWVCb3JkZXIgPSBpZnJhbWUud2lk
dGggPSBpZnJhbWUuaGVpZ2h0ID0gMDsKCQkJfQoKCQkJYm9keS5hcHBlbmRDaGls
ZCggaWZyYW1lICk7CgoJCQkvLyBDcmVhdGUgYSBjYWNoZWFibGUgY29weSBvZiB0
aGUgaWZyYW1lIGRvY3VtZW50IG9uIGZpcnN0IGNhbGwuCgkJCS8vIElFIGFuZCBP
cGVyYSB3aWxsIGFsbG93IHVzIHRvIHJldXNlIHRoZSBpZnJhbWVEb2Mgd2l0aG91
dCByZS13cml0aW5nIHRoZSBmYWtlIEhUTUwKCQkJLy8gZG9jdW1lbnQgdG8gaXQ7
IFdlYktpdCAmIEZpcmVmb3ggd29uJ3QgYWxsb3cgcmV1c2luZyB0aGUgaWZyYW1l
IGRvY3VtZW50LgoJCQlpZiAoICFpZnJhbWVEb2MgfHwgIWlmcmFtZS5jcmVhdGVF
bGVtZW50ICkgewoJCQkJaWZyYW1lRG9jID0gKCBpZnJhbWUuY29udGVudFdpbmRv
dyB8fCBpZnJhbWUuY29udGVudERvY3VtZW50ICkuZG9jdW1lbnQ7CgkJCQlpZnJh
bWVEb2Mud3JpdGUoICggZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gIkNTUzFDb21w
YXQiID8gIjwhZG9jdHlwZSBodG1sPiIgOiAiIiApICsgIjxodG1sPjxib2R5PiIg
KTsKCQkJCWlmcmFtZURvYy5jbG9zZSgpOwoJCQl9CgoJCQllbGVtID0gaWZyYW1l
RG9jLmNyZWF0ZUVsZW1lbnQoIG5vZGVOYW1lICk7CgoJCQlpZnJhbWVEb2MuYm9k
eS5hcHBlbmRDaGlsZCggZWxlbSApOwoKCQkJZGlzcGxheSA9IGpRdWVyeS5jc3Mo
IGVsZW0sICJkaXNwbGF5IiApOwoJCQlib2R5LnJlbW92ZUNoaWxkKCBpZnJhbWUg
KTsKCQl9CgoJCS8vIFN0b3JlIHRoZSBjb3JyZWN0IGRlZmF1bHQgZGlzcGxheQoJ
CWVsZW1kaXNwbGF5WyBub2RlTmFtZSBdID0gZGlzcGxheTsKCX0KCglyZXR1cm4g
ZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF07Cn0KCgoKCnZhciBydGFibGUgPSAvXnQo
PzphYmxlfGR8aCkkL2ksCglycm9vdCA9IC9eKD86Ym9keXxodG1sKSQvaTsKCmlm
ICggImdldEJvdW5kaW5nQ2xpZW50UmVjdCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50ICkgewoJalF1ZXJ5LmZuLm9mZnNldCA9IGZ1bmN0aW9uKCBvcHRpb25z
ICkgewoJCXZhciBlbGVtID0gdGhpc1swXSwgYm94OwoKCQlpZiAoIG9wdGlvbnMg
KSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7CgkJCQlqUXVl
cnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApOwoJCQl9KTsK
CQl9CgoJCWlmICggIWVsZW0gfHwgIWVsZW0ub3duZXJEb2N1bWVudCApIHsKCQkJ
cmV0dXJuIG51bGw7CgkJfQoKCQlpZiAoIGVsZW0gPT09IGVsZW0ub3duZXJEb2N1
bWVudC5ib2R5ICkgewoJCQlyZXR1cm4galF1ZXJ5Lm9mZnNldC5ib2R5T2Zmc2V0
KCBlbGVtICk7CgkJfQoKCQl0cnkgewoJCQlib3ggPSBlbGVtLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOwoJCX0gY2F0Y2goZSkge30KCgkJdmFyIGRvYyA9IGVsZW0u
b3duZXJEb2N1bWVudCwKCQkJZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7
CgoJCS8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGEgZGlzY29u
bmVjdGVkIERPTSBub2RlCgkJaWYgKCAhYm94IHx8ICFqUXVlcnkuY29udGFpbnMo
IGRvY0VsZW0sIGVsZW0gKSApIHsKCQkJcmV0dXJuIGJveCA/IHsgdG9wOiBib3gu
dG9wLCBsZWZ0OiBib3gubGVmdCB9IDogeyB0b3A6IDAsIGxlZnQ6IDAgfTsKCQl9
CgoJCXZhciBib2R5ID0gZG9jLmJvZHksCgkJCXdpbiA9IGdldFdpbmRvdyhkb2Mp
LAoJCQljbGllbnRUb3AgID0gZG9jRWxlbS5jbGllbnRUb3AgIHx8IGJvZHkuY2xp
ZW50VG9wICB8fCAwLAoJCQljbGllbnRMZWZ0ID0gZG9jRWxlbS5jbGllbnRMZWZ0
IHx8IGJvZHkuY2xpZW50TGVmdCB8fCAwLAoJCQlzY3JvbGxUb3AgID0gd2luLnBh
Z2VZT2Zmc2V0IHx8IGpRdWVyeS5zdXBwb3J0LmJveE1vZGVsICYmIGRvY0VsZW0u
c2Nyb2xsVG9wICB8fCBib2R5LnNjcm9sbFRvcCwKCQkJc2Nyb2xsTGVmdCA9IHdp
bi5wYWdlWE9mZnNldCB8fCBqUXVlcnkuc3VwcG9ydC5ib3hNb2RlbCAmJiBkb2NF
bGVtLnNjcm9sbExlZnQgfHwgYm9keS5zY3JvbGxMZWZ0LAoJCQl0b3AgID0gYm94
LnRvcCAgKyBzY3JvbGxUb3AgIC0gY2xpZW50VG9wLAoJCQlsZWZ0ID0gYm94Lmxl
ZnQgKyBzY3JvbGxMZWZ0IC0gY2xpZW50TGVmdDsKCgkJcmV0dXJuIHsgdG9wOiB0
b3AsIGxlZnQ6IGxlZnQgfTsKCX07Cgp9IGVsc2UgewoJalF1ZXJ5LmZuLm9mZnNl
dCA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewoJCXZhciBlbGVtID0gdGhpc1swXTsK
CgkJaWYgKCBvcHRpb25zICkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KCBpICkgewoJCQkJalF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlv
bnMsIGkgKTsKCQkJfSk7CgkJfQoKCQlpZiAoICFlbGVtIHx8ICFlbGVtLm93bmVy
RG9jdW1lbnQgKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJaWYgKCBlbGVtID09
PSBlbGVtLm93bmVyRG9jdW1lbnQuYm9keSApIHsKCQkJcmV0dXJuIGpRdWVyeS5v
ZmZzZXQuYm9keU9mZnNldCggZWxlbSApOwoJCX0KCgkJdmFyIGNvbXB1dGVkU3R5
bGUsCgkJCW9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50LAoJCQlwcmV2
T2Zmc2V0UGFyZW50ID0gZWxlbSwKCQkJZG9jID0gZWxlbS5vd25lckRvY3VtZW50
LAoJCQlkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudCwKCQkJYm9keSA9IGRv
Yy5ib2R5LAoJCQlkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0VmlldywKCQkJcHJl
dkNvbXB1dGVkU3R5bGUgPSBkZWZhdWx0VmlldyA/IGRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKSA6IGVsZW0uY3VycmVudFN0eWxlLAoJ
CQl0b3AgPSBlbGVtLm9mZnNldFRvcCwKCQkJbGVmdCA9IGVsZW0ub2Zmc2V0TGVm
dDsKCgkJd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbSAh
PT0gYm9keSAmJiBlbGVtICE9PSBkb2NFbGVtICkgewoJCQlpZiAoIGpRdWVyeS5z
dXBwb3J0LmZpeGVkUG9zaXRpb24gJiYgcHJldkNvbXB1dGVkU3R5bGUucG9zaXRp
b24gPT09ICJmaXhlZCIgKSB7CgkJCQlicmVhazsKCQkJfQoKCQkJY29tcHV0ZWRT
dHlsZSA9IGRlZmF1bHRWaWV3ID8gZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbGVtLCBudWxsKSA6IGVsZW0uY3VycmVudFN0eWxlOwoJCQl0b3AgIC09IGVs
ZW0uc2Nyb2xsVG9wOwoJCQlsZWZ0IC09IGVsZW0uc2Nyb2xsTGVmdDsKCgkJCWlm
ICggZWxlbSA9PT0gb2Zmc2V0UGFyZW50ICkgewoJCQkJdG9wICArPSBlbGVtLm9m
ZnNldFRvcDsKCQkJCWxlZnQgKz0gZWxlbS5vZmZzZXRMZWZ0OwoKCQkJCWlmICgg
alF1ZXJ5LnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciAmJiAhKGpRdWVyeS5zdXBw
b3J0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzICYmIHJ0YWJsZS50ZXN0
KGVsZW0ubm9kZU5hbWUpKSApIHsKCQkJCQl0b3AgICs9IHBhcnNlRmxvYXQoIGNv
bXB1dGVkU3R5bGUuYm9yZGVyVG9wV2lkdGggICkgfHwgMDsKCQkJCQlsZWZ0ICs9
IHBhcnNlRmxvYXQoIGNvbXB1dGVkU3R5bGUuYm9yZGVyTGVmdFdpZHRoICkgfHwg
MDsKCQkJCX0KCgkJCQlwcmV2T2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50OwoJ
CQkJb2Zmc2V0UGFyZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQ7CgkJCX0KCgkJCWlm
ICggalF1ZXJ5LnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RW
aXNpYmxlICYmIGNvbXB1dGVkU3R5bGUub3ZlcmZsb3cgIT09ICJ2aXNpYmxlIiAp
IHsKCQkJCXRvcCAgKz0gcGFyc2VGbG9hdCggY29tcHV0ZWRTdHlsZS5ib3JkZXJU
b3BXaWR0aCAgKSB8fCAwOwoJCQkJbGVmdCArPSBwYXJzZUZsb2F0KCBjb21wdXRl
ZFN0eWxlLmJvcmRlckxlZnRXaWR0aCApIHx8IDA7CgkJCX0KCgkJCXByZXZDb21w
dXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTsKCQl9CgoJCWlmICggcHJldkNvbXB1
dGVkU3R5bGUucG9zaXRpb24gPT09ICJyZWxhdGl2ZSIgfHwgcHJldkNvbXB1dGVk
U3R5bGUucG9zaXRpb24gPT09ICJzdGF0aWMiICkgewoJCQl0b3AgICs9IGJvZHku
b2Zmc2V0VG9wOwoJCQlsZWZ0ICs9IGJvZHkub2Zmc2V0TGVmdDsKCQl9CgoJCWlm
ICggalF1ZXJ5LnN1cHBvcnQuZml4ZWRQb3NpdGlvbiAmJiBwcmV2Q29tcHV0ZWRT
dHlsZS5wb3NpdGlvbiA9PT0gImZpeGVkIiApIHsKCQkJdG9wICArPSBNYXRoLm1h
eCggZG9jRWxlbS5zY3JvbGxUb3AsIGJvZHkuc2Nyb2xsVG9wICk7CgkJCWxlZnQg
Kz0gTWF0aC5tYXgoIGRvY0VsZW0uc2Nyb2xsTGVmdCwgYm9keS5zY3JvbGxMZWZ0
ICk7CgkJfQoKCQlyZXR1cm4geyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9OwoJfTsK
fQoKalF1ZXJ5Lm9mZnNldCA9IHsKCglib2R5T2Zmc2V0OiBmdW5jdGlvbiggYm9k
eSApIHsKCQl2YXIgdG9wID0gYm9keS5vZmZzZXRUb3AsCgkJCWxlZnQgPSBib2R5
Lm9mZnNldExlZnQ7CgoJCWlmICggalF1ZXJ5LnN1cHBvcnQuZG9lc05vdEluY2x1
ZGVNYXJnaW5JbkJvZHlPZmZzZXQgKSB7CgkJCXRvcCAgKz0gcGFyc2VGbG9hdCgg
alF1ZXJ5LmNzcyhib2R5LCAibWFyZ2luVG9wIikgKSB8fCAwOwoJCQlsZWZ0ICs9
IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoYm9keSwgIm1hcmdpbkxlZnQiKSApIHx8
IDA7CgkJfQoKCQlyZXR1cm4geyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9OwoJfSwK
CglzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgewoJCXZh
ciBwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sICJwb3NpdGlvbiIgKTsKCgkJ
Ly8gc2V0IHBvc2l0aW9uIGZpcnN0LCBpbi1jYXNlIHRvcC9sZWZ0IGFyZSBzZXQg
ZXZlbiBvbiBzdGF0aWMgZWxlbQoJCWlmICggcG9zaXRpb24gPT09ICJzdGF0aWMi
ICkgewoJCQllbGVtLnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIjsKCQl9CgoJ
CXZhciBjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksCgkJCWN1ck9mZnNldCA9IGN1
ckVsZW0ub2Zmc2V0KCksCgkJCWN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0s
ICJ0b3AiICksCgkJCWN1ckNTU0xlZnQgPSBqUXVlcnkuY3NzKCBlbGVtLCAibGVm
dCIgKSwKCQkJY2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSAiYWJz
b2x1dGUiIHx8IHBvc2l0aW9uID09PSAiZml4ZWQiICkgJiYgalF1ZXJ5LmluQXJy
YXkoImF1dG8iLCBbY3VyQ1NTVG9wLCBjdXJDU1NMZWZ0XSkgPiAtMSwKCQkJcHJv
cHMgPSB7fSwgY3VyUG9zaXRpb24gPSB7fSwgY3VyVG9wLCBjdXJMZWZ0OwoKCQkv
LyBuZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhl
ciB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJz
b2x1dGUgb3IgZml4ZWQKCQlpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkgewoJCQlj
dXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKCQkJY3VyVG9wID0gY3Vy
UG9zaXRpb24udG9wOwoJCQljdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDsKCQl9
IGVsc2UgewoJCQljdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAw
OwoJCQljdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7CgkJ
fQoKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7CgkJCW9w
dGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGN1ck9mZnNldCApOwoJCX0K
CgkJaWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkgewoJCQlwcm9wcy50b3AgPSAo
IG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wOwoJCX0KCQlp
ZiAoIG9wdGlvbnMubGVmdCAhPSBudWxsICkgewoJCQlwcm9wcy5sZWZ0ID0gKCBv
cHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDsKCQl9CgoJ
CWlmICggInVzaW5nIiBpbiBvcHRpb25zICkgewoJCQlvcHRpb25zLnVzaW5nLmNh
bGwoIGVsZW0sIHByb3BzICk7CgkJfSBlbHNlIHsKCQkJY3VyRWxlbS5jc3MoIHBy
b3BzICk7CgkJfQoJfQp9OwoKCmpRdWVyeS5mbi5leHRlbmQoewoKCXBvc2l0aW9u
OiBmdW5jdGlvbigpIHsKCQlpZiAoICF0aGlzWzBdICkgewoJCQlyZXR1cm4gbnVs
bDsKCQl9CgoJCXZhciBlbGVtID0gdGhpc1swXSwKCgkJLy8gR2V0ICpyZWFsKiBv
ZmZzZXRQYXJlbnQKCQlvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCgp
LAoKCQkvLyBHZXQgY29ycmVjdCBvZmZzZXRzCgkJb2Zmc2V0ICAgICAgID0gdGhp
cy5vZmZzZXQoKSwKCQlwYXJlbnRPZmZzZXQgPSBycm9vdC50ZXN0KG9mZnNldFBh
cmVudFswXS5ub2RlTmFtZSkgPyB7IHRvcDogMCwgbGVmdDogMCB9IDogb2Zmc2V0
UGFyZW50Lm9mZnNldCgpOwoKCQkvLyBTdWJ0cmFjdCBlbGVtZW50IG1hcmdpbnMK
CQkvLyBub3RlOiB3aGVuIGFuIGVsZW1lbnQgaGFzIG1hcmdpbjogYXV0byB0aGUg
b2Zmc2V0TGVmdCBhbmQgbWFyZ2luTGVmdAoJCS8vIGFyZSB0aGUgc2FtZSBpbiBT
YWZhcmkgY2F1c2luZyBvZmZzZXQubGVmdCB0byBpbmNvcnJlY3RseSBiZSAwCgkJ
b2Zmc2V0LnRvcCAgLT0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhlbGVtLCAibWFy
Z2luVG9wIikgKSB8fCAwOwoJCW9mZnNldC5sZWZ0IC09IHBhcnNlRmxvYXQoIGpR
dWVyeS5jc3MoZWxlbSwgIm1hcmdpbkxlZnQiKSApIHx8IDA7CgoJCS8vIEFkZCBv
ZmZzZXRQYXJlbnQgYm9yZGVycwoJCXBhcmVudE9mZnNldC50b3AgICs9IHBhcnNl
RmxvYXQoIGpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50WzBdLCAiYm9yZGVyVG9wV2lk
dGgiKSApIHx8IDA7CgkJcGFyZW50T2Zmc2V0LmxlZnQgKz0gcGFyc2VGbG9hdCgg
alF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnRbMF0sICJib3JkZXJMZWZ0V2lkdGgiKSAp
IHx8IDA7CgoJCS8vIFN1YnRyYWN0IHRoZSB0d28gb2Zmc2V0cwoJCXJldHVybiB7
CgkJCXRvcDogIG9mZnNldC50b3AgIC0gcGFyZW50T2Zmc2V0LnRvcCwKCQkJbGVm
dDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdAoJCX07Cgl9LAoKCW9m
ZnNldFBhcmVudDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMubWFwKGZ1bmN0
aW9uKCkgewoJCQl2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQg
fHwgZG9jdW1lbnQuYm9keTsKCQkJd2hpbGUgKCBvZmZzZXRQYXJlbnQgJiYgKCFy
cm9vdC50ZXN0KG9mZnNldFBhcmVudC5ub2RlTmFtZSkgJiYgalF1ZXJ5LmNzcyhv
ZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09PSAic3RhdGljIikgKSB7CgkJCQlv
ZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50OwoJCQl9CgkJ
CXJldHVybiBvZmZzZXRQYXJlbnQ7CgkJfSk7Cgl9Cn0pOwoKCi8vIENyZWF0ZSBz
Y3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kcwpqUXVlcnkuZWFjaCggWyJM
ZWZ0IiwgIlRvcCJdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKCXZhciBtZXRob2Qg
PSAic2Nyb2xsIiArIG5hbWU7CgoJalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0
aW9uKCB2YWwgKSB7CgkJdmFyIGVsZW0sIHdpbjsKCgkJaWYgKCB2YWwgPT09IHVu
ZGVmaW5lZCApIHsKCQkJZWxlbSA9IHRoaXNbIDAgXTsKCgkJCWlmICggIWVsZW0g
KSB7CgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoKCQkJd2luID0gZ2V0V2luZG93KCBl
bGVtICk7CgoJCQkvLyBSZXR1cm4gdGhlIHNjcm9sbCBvZmZzZXQKCQkJcmV0dXJu
IHdpbiA/ICgicGFnZVhPZmZzZXQiIGluIHdpbikgPyB3aW5bIGkgPyAicGFnZVlP
ZmZzZXQiIDogInBhZ2VYT2Zmc2V0IiBdIDoKCQkJCWpRdWVyeS5zdXBwb3J0LmJv
eE1vZGVsICYmIHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIG1ldGhvZCBd
IHx8CgkJCQkJd2luLmRvY3VtZW50LmJvZHlbIG1ldGhvZCBdIDoKCQkJCWVsZW1b
IG1ldGhvZCBdOwoJCX0KCgkJLy8gU2V0IHRoZSBzY3JvbGwgb2Zmc2V0CgkJcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJd2luID0gZ2V0V2luZG93KCB0
aGlzICk7CgoJCQlpZiAoIHdpbiApIHsKCQkJCXdpbi5zY3JvbGxUbygKCQkJCQkh
aSA/IHZhbCA6IGpRdWVyeSggd2luICkuc2Nyb2xsTGVmdCgpLAoJCQkJCSBpID8g
dmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxUb3AoKQoJCQkJKTsKCgkJCX0gZWxz
ZSB7CgkJCQl0aGlzWyBtZXRob2QgXSA9IHZhbDsKCQkJfQoJCX0pOwoJfTsKfSk7
CgpmdW5jdGlvbiBnZXRXaW5kb3coIGVsZW0gKSB7CglyZXR1cm4galF1ZXJ5Lmlz
V2luZG93KCBlbGVtICkgPwoJCWVsZW0gOgoJCWVsZW0ubm9kZVR5cGUgPT09IDkg
PwoJCQllbGVtLmRlZmF1bHRWaWV3IHx8IGVsZW0ucGFyZW50V2luZG93IDoKCQkJ
ZmFsc2U7Cn0KCgoKCi8vIENyZWF0ZSB3aWR0aCwgaGVpZ2h0LCBpbm5lckhlaWdo
dCwgaW5uZXJXaWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9k
cwpqUXVlcnkuZWFjaChbICJIZWlnaHQiLCAiV2lkdGgiIF0sIGZ1bmN0aW9uKCBp
LCBuYW1lICkgewoKCXZhciB0eXBlID0gbmFtZS50b0xvd2VyQ2FzZSgpOwoKCS8v
IGlubmVySGVpZ2h0IGFuZCBpbm5lcldpZHRoCglqUXVlcnkuZm5bICJpbm5lciIg
KyBuYW1lIF0gPSBmdW5jdGlvbigpIHsKCQl2YXIgZWxlbSA9IHRoaXNbMF07CgkJ
cmV0dXJuIGVsZW0gPwoJCQllbGVtLnN0eWxlID8KCQkJcGFyc2VGbG9hdCggalF1
ZXJ5LmNzcyggZWxlbSwgdHlwZSwgInBhZGRpbmciICkgKSA6CgkJCXRoaXNbIHR5
cGUgXSgpIDoKCQkJbnVsbDsKCX07CgoJLy8gb3V0ZXJIZWlnaHQgYW5kIG91dGVy
V2lkdGgKCWpRdWVyeS5mblsgIm91dGVyIiArIG5hbWUgXSA9IGZ1bmN0aW9uKCBt
YXJnaW4gKSB7CgkJdmFyIGVsZW0gPSB0aGlzWzBdOwoJCXJldHVybiBlbGVtID8K
CQkJZWxlbS5zdHlsZSA/CgkJCXBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoIGVsZW0s
IHR5cGUsIG1hcmdpbiA/ICJtYXJnaW4iIDogImJvcmRlciIgKSApIDoKCQkJdGhp
c1sgdHlwZSBdKCkgOgoJCQludWxsOwoJfTsKCglqUXVlcnkuZm5bIHR5cGUgXSA9
IGZ1bmN0aW9uKCBzaXplICkgewoJCS8vIEdldCB3aW5kb3cgd2lkdGggb3IgaGVp
Z2h0CgkJdmFyIGVsZW0gPSB0aGlzWzBdOwoJCWlmICggIWVsZW0gKSB7CgkJCXJl
dHVybiBzaXplID09IG51bGwgPyBudWxsIDogdGhpczsKCQl9CgoJCWlmICggalF1
ZXJ5LmlzRnVuY3Rpb24oIHNpemUgKSApIHsKCQkJcmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbiggaSApIHsKCQkJCXZhciBzZWxmID0galF1ZXJ5KCB0aGlzICk7CgkJ
CQlzZWxmWyB0eXBlIF0oIHNpemUuY2FsbCggdGhpcywgaSwgc2VsZlsgdHlwZSBd
KCkgKSApOwoJCQl9KTsKCQl9CgoJCWlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVt
ICkgKSB7CgkJCS8vIEV2ZXJ5b25lIGVsc2UgdXNlIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCBvciBkb2N1bWVudC5ib2R5IGRlcGVuZGluZyBvbiBRdWlya3MgdnMg
U3RhbmRhcmRzIG1vZGUKCQkJLy8gM3JkIGNvbmRpdGlvbiBhbGxvd3MgTm9raWEg
c3VwcG9ydCwgYXMgaXQgc3VwcG9ydHMgdGhlIGRvY0VsZW0gcHJvcCBidXQgbm90
IENTUzFDb21wYXQKCQkJdmFyIGRvY0VsZW1Qcm9wID0gZWxlbS5kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnRbICJjbGllbnQiICsgbmFtZSBdLAoJCQkJYm9keSA9IGVs
ZW0uZG9jdW1lbnQuYm9keTsKCQkJcmV0dXJuIGVsZW0uZG9jdW1lbnQuY29tcGF0
TW9kZSA9PT0gIkNTUzFDb21wYXQiICYmIGRvY0VsZW1Qcm9wIHx8CgkJCQlib2R5
ICYmIGJvZHlbICJjbGllbnQiICsgbmFtZSBdIHx8IGRvY0VsZW1Qcm9wOwoKCQkv
LyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0CgkJfSBlbHNlIGlmICggZWxl
bS5ub2RlVHlwZSA9PT0gOSApIHsKCQkJLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9I
ZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdLCB3aGljaGV2ZXIgaXMgZ3Jl
YXRlcgoJCQlyZXR1cm4gTWF0aC5tYXgoCgkJCQllbGVtLmRvY3VtZW50RWxlbWVu
dFsiY2xpZW50IiArIG5hbWVdLAoJCQkJZWxlbS5ib2R5WyJzY3JvbGwiICsgbmFt
ZV0sIGVsZW0uZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiICsgbmFtZV0sCgkJCQll
bGVtLmJvZHlbIm9mZnNldCIgKyBuYW1lXSwgZWxlbS5kb2N1bWVudEVsZW1lbnRb
Im9mZnNldCIgKyBuYW1lXQoJCQkpOwoKCQkvLyBHZXQgb3Igc2V0IHdpZHRoIG9y
IGhlaWdodCBvbiB0aGUgZWxlbWVudAoJCX0gZWxzZSBpZiAoIHNpemUgPT09IHVu
ZGVmaW5lZCApIHsKCQkJdmFyIG9yaWcgPSBqUXVlcnkuY3NzKCBlbGVtLCB0eXBl
ICksCgkJCQlyZXQgPSBwYXJzZUZsb2F0KCBvcmlnICk7CgoJCQlyZXR1cm4galF1
ZXJ5LmlzTnVtZXJpYyggcmV0ICkgPyByZXQgOiBvcmlnOwoKCQkvLyBTZXQgdGhl
IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCAoZGVmYXVsdCB0byBwaXhl
bHMgaWYgdmFsdWUgaXMgdW5pdGxlc3MpCgkJfSBlbHNlIHsKCQkJcmV0dXJuIHRo
aXMuY3NzKCB0eXBlLCB0eXBlb2Ygc2l6ZSA9PT0gInN0cmluZyIgPyBzaXplIDog
c2l6ZSArICJweCIgKTsKCQl9Cgl9OwoKfSk7CgoKCgovLyBFeHBvc2UgalF1ZXJ5
IHRvIHRoZSBnbG9iYWwgb2JqZWN0CndpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9
IGpRdWVyeTsKCi8vIEV4cG9zZSBqUXVlcnkgYXMgYW4gQU1EIG1vZHVsZSwgYnV0
IG9ubHkgZm9yIEFNRCBsb2FkZXJzIHRoYXQKLy8gdW5kZXJzdGFuZCB0aGUgaXNz
dWVzIHdpdGggbG9hZGluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBqUXVlcnkKLy8g
aW4gYSBwYWdlIHRoYXQgYWxsIG1pZ2h0IGNhbGwgZGVmaW5lKCkuIFRoZSBsb2Fk
ZXIgd2lsbCBpbmRpY2F0ZQovLyB0aGV5IGhhdmUgc3BlY2lhbCBhbGxvd2FuY2Vz
IGZvciBtdWx0aXBsZSBqUXVlcnkgdmVyc2lvbnMgYnkKLy8gc3BlY2lmeWluZyBk
ZWZpbmUuYW1kLmpRdWVyeSA9IHRydWUuIFJlZ2lzdGVyIGFzIGEgbmFtZWQgbW9k
dWxlLAovLyBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90
aGVyIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsCi8vIGJ1dCBub3QgdXNlIGEg
cHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQgdW5kZXJzdGFuZHMgYW5v
bnltb3VzCi8vIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5k
IG1vc3Qgcm9idXN0IHdheSB0byByZWdpc3Rlci4KLy8gTG93ZXJjYXNlIGpxdWVy
eSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmUgZGVyaXZlZCBm
cm9tCi8vIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZl
cmVkIGluIGEgbG93ZXJjYXNlIGZpbGUgbmFtZS4KLy8gRG8gdGhpcyBhZnRlciBj
cmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50
cyB0byBjYWxsCi8vIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2Yg
alF1ZXJ5LCBpdCB3aWxsIHdvcmsuCmlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1
bmN0aW9uIiAmJiBkZWZpbmUuYW1kICYmIGRlZmluZS5hbWQualF1ZXJ5ICkgewoJ
ZGVmaW5lKCAianF1ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGpRdWVy
eTsgfSApOwp9CgoKCn0pKCB3aW5kb3cgKTsK
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=default.js
Content-Type: application/x-javascript; charset=utf-8; name=default.js
Content-Location: http://support.microsoft.com/common/script/gsfx/default.js?76
Content-Transfer-Encoding: Base64
77u/ZnVuY3Rpb24gc3JjRWwoZSkgew0KICAgIGlmIChlLnNyY0VsZW1lbnQpIHJl
dHVybiBlLnNyY0VsZW1lbnQ7DQogICAgaWYgKGUudGFyZ2V0KSByZXR1cm4gZS50
YXJnZXQ7DQogICAgcmV0dXJuIGU7DQp9DQoNCmZ1bmN0aW9uIHBhcnNlQm9vbGVh
bihzdHJpbmcpIHsNCiAgICBzd2l0Y2ggKHN0cmluZy50b0xvd2VyQ2FzZSgpKSB7
DQogICAgICAgIGNhc2UgInRydWUiOiBjYXNlICJ5ZXMiOiBjYXNlICIxIjogcmV0
dXJuIHRydWU7DQogICAgICAgIGNhc2UgImZhbHNlIjogY2FzZSAibm8iOiBjYXNl
ICIwIjogY2FzZSBudWxsOiByZXR1cm4gZmFsc2U7DQogICAgICAgIGRlZmF1bHQ6
IHJldHVybiBCb29sZWFuKHN0cmluZyk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBP
dXRwdXRFbmNvZGVyX0VuY29kZVVybChzdHJJbnB1dCkgew0KICAgIGlmICh0eXBl
b2YgKHN0cklucHV0KSA9PSAndW5kZWZpbmVkJykgeyByZXR1cm4gIiI7IH0NCiAg
ICBzdHJJbnB1dCA9IHN0cklucHV0LnRvU3RyaW5nKCk7DQogICAgdmFyIGM7DQog
ICAgdmFyIEVuY29kZVVybCA9ICcnOw0KICAgIGZvciAodmFyIGNudCA9IDA7IGNu
dCA8IHN0cklucHV0Lmxlbmd0aDsgY250KyspIHsNCiAgICAgICAgYyA9IHN0cklu
cHV0LmNoYXJDb2RlQXQoY250KTsNCiAgICAgICAgaWYgKCgoYyA+IDk2KSAmJiAo
YyA8IDEyMykpIHx8ICgoYyA+IDY0KSAmJiAoYyA8IDkxKSkgfHwgKChjID4gNDcp
ICYmIChjIDwgNTgpKSB8fCAoYyA9PSA0NikgfHwgKGMgPT0gNDUpIHx8IChjID09
IDk1KSkgeyBFbmNvZGVVcmwgPSBFbmNvZGVVcmwgKyBTdHJpbmcuZnJvbUNoYXJD
b2RlKGMpOyB9DQogICAgICAgIGVsc2UgaWYgKGMgPiAxMjcpIHsgRW5jb2RlVXJs
ID0gRW5jb2RlVXJsICsgJyV1JyArIE91dHB1dEVuY29kZXJfVHdvQnl0ZUhleChj
KTsgfQ0KICAgICAgICBlbHNlIHsgRW5jb2RlVXJsID0gRW5jb2RlVXJsICsgJyUn
ICsgT3V0cHV0RW5jb2Rlcl9TaW5nbGVCeXRlSGV4KGMpOyB9DQogICAgfQ0KICAg
IHJldHVybiBFbmNvZGVVcmw7DQp9DQoNCmZ1bmN0aW9uIE91dHB1dEVuY29kZXJf
U2luZ2xlQnl0ZUhleChjaGFyQykgew0KICAgIHZhciBTaW5nbGVCeXRlSGV4ID0g
Y2hhckMudG9TdHJpbmcoMTYpOw0KICAgIGZvciAodmFyIGNudCA9IFNpbmdsZUJ5
dGVIZXgubGVuZ3RoOyBjbnQgPCAyOyBjbnQrKykgeyBTaW5nbGVCeXRlSGV4ID0g
IjAiICsgU2luZ2xlQnl0ZUhleDsgfQ0KICAgIHJldHVybiBTaW5nbGVCeXRlSGV4
Ow0KfQ0KDQpmdW5jdGlvbiBPdXRwdXRFbmNvZGVyX1R3b0J5dGVIZXgoY2hhckMp
IHsNCiAgICB2YXIgVHdvQnl0ZUhleCA9IGNoYXJDLnRvU3RyaW5nKDE2KTsNCiAg
ICBmb3IgKHZhciBjbnQgPSBUd29CeXRlSGV4Lmxlbmd0aDsgY250IDwgNDsgY250
KyspIHsgVHdvQnl0ZUhleCA9ICIwIiArIFR3b0J5dGVIZXg7IH0NCiAgICByZXR1
cm4gVHdvQnl0ZUhleDsNCn0NCg0KZnVuY3Rpb24gTVNfUXVlcnlTdHJpbmcoKSAv
L05PVEU6IHVzZSBsb3dlcmNhc2Uga2V5cyB0byBhY2Nlc3MgdmFsdWVzDQp7DQog
ICAgdmFyIHFzID0gZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLnRvU3RyaW5nKCk7
DQogICAgaWYgKHFzLmxlbmd0aCA+IDApIHsgcXMgPSBxcy5zdWJzdHJpbmcoMSk7
IH0NCiAgICB2YXIgcGFpcnMgPSBxcy5zcGxpdCgnJicpOw0KICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgdmFyIHBh
aXIgPSBwYWlyc1tpXS5zcGxpdCgnPScpOw0KICAgICAgICBpZiAocGFpci5sZW5n
dGggIT0gMikgeyBjb250aW51ZTsgfQ0KICAgICAgICBpZiAocGFpclsxXSA9PSAn
JykgeyBjb250aW51ZTsgfQ0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgdmFy
IGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzBdKS50b0xvd2VyQ2FzZSgp
Ow0KICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBh
aXJbMV0pOw0KICAgICAgICB9DQogICAgICAgIGNhdGNoIChlKSB7DQogICAgICAg
ICAgICB2YXIga2V5ID0gdW5lc2NhcGUocGFpclswXSkudG9Mb3dlckNhc2UoKTsN
CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHVuZXNjYXBlKHBhaXJbMV0pOw0KICAg
ICAgICB9DQogICAgICAgIGlmICh0aGlzW2tleV0pIHsgdGhpc1trZXldICs9ICcs
JyArIHZhbHVlOyB9DQogICAgICAgIGVsc2UgeyB0aGlzW2tleV0gPSB2YWx1ZTsg
fQ0KICAgIH0NCn0NCnZhciBxdWVyeVN0cmluZyA9IG5ldyBNU19RdWVyeVN0cmlu
ZygpOw0KZnVuY3Rpb24gR2V0TW9kaWZpZWRRdWVyeVN0cmluZyhrZXksIHZhbHVl
KSB7DQogICAgdmFyIHFzQ29weSA9IG5ldyBPYmplY3Q7DQogICAgZm9yICh2YXIg
aSBpbiBxdWVyeVN0cmluZykgeyBxc0NvcHlbaV0gPSBxdWVyeVN0cmluZ1tpXTsg
fQ0KICAgIHFzQ29weVtrZXldID0gdmFsdWU7DQogICAgdmFyIHN0clFzID0gJyc7
DQogICAgZm9yICh2YXIgaSBpbiBxc0NvcHkpIHsgc3RyUXMgKz0gT3V0cHV0RW5j
b2Rlcl9FbmNvZGVVcmwoaSkgKyAnPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVy
bChxc0NvcHlbaV0pICsgJyYnOyB9DQogICAgcmV0dXJuICc/JyArIHN0clFzOw0K
fQ0KZnVuY3Rpb24gVW5pY29kZUZpeHVwKHMpIHsNCiAgICB2YXIgcmVzdWx0ID0g
bmV3IFN0cmluZygpOw0KICAgIHZhciBjID0gJyc7DQogICAgdmFyIGkgPSAtMTsN
CiAgICB2YXIgbCA9IHMubGVuZ3RoOw0KICAgIHJlc3VsdCA9ICcnOw0KICAgIGZv
ciAoaSA9IDA7IGkgPCBsOyBpKyspIHsNCiAgICAgICAgYyA9IHMuc3Vic3RyaW5n
KGksIGkgKyAxKTsNCiAgICAgICAgaWYgKGMgPT0gJyUnKSB7DQogICAgICAgICAg
ICByZXN1bHQgKz0gYzsgaSsrOw0KICAgICAgICAgICAgYyA9IHMuc3Vic3RyaW5n
KGksIGkgKyAxKTsNCiAgICAgICAgICAgIGlmIChjICE9ICd1Jykgew0KICAgICAg
ICAgICAgICAgIGlmIChwYXJzZUludCgnMHgnICsgcy5zdWJzdHJpbmcoaSwgaSAr
IDIpKSA+IDEyOCkgeyByZXN1bHQgKz0gJ3UwMCc7IH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgICAgICAvKiBQcm9kdWN0IFN0dWRpbyBCdWcgMzcxMjkN
CiAgICAgICAgVGhpcyBmaXggaXMgbmVlZGVkIHRvIHByZXNlcnZlICcrJyBpbiB0
aGUgaW5wdXQgd2hlbiBjbGllbnQtc2lkZSBlc2NhcGVkIHN0cmluZ3MgYXJlIGRl
Y29kZWQgaW4gc2VydmVyLXNpZGUgY29kZS4NCiAgICAgICAgSnNjcmlwdCBlc2Nh
cGUoKSBkb2VzIG5vdCBlc2NhcGUgYSAnKycgdG8gJyUyQicuDQogICAgICAgIFN5
c3RlbS5XZWIuSHR0cFV0aWxpdHkuVXJsRGVjb2RlKCkgcmVwbGFjZXMgJysnIHdp
dGggYSBzcGFjZSwgYnV0IGRlY29kZXMgJyUyQicganVzdCBmaW5lLg0KICAgICAg
ICBKc2NyaXB0IHVuZXNjYXBlKCkgYWxzbyBkZWNvZGVzICclMkInIGp1c3QgZmlu
ZS4gKi8NCiAgICAgICAgZWxzZSBpZiAoYyA9PSAnKycpIHsNCiAgICAgICAgICAg
IGMgPSAnJTJCJzsNCiAgICAgICAgfQ0KICAgICAgICByZXN1bHQgKz0gYzsNCiAg
ICB9DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KLy8gRnVuY3Rpb24gdG8gY2hl
Y2sgZm9yIGV4dGVybmFsIGxpbmtzIHRvIGJlIG9wZW5lZCBpbiB0aGUgbmV3IHdp
bmRvdy4NCnZhciBnX3JlU3VwcG9ydGVkSG9zdG5hbWVzOw0KZnVuY3Rpb24gRm9y
ZWlnbkxpbmtfSG9va3VwKGJyYW5kaW5nKSB7DQogICAgaWYgKHR5cGVvZiAoYnJh
bmRpbmcpID09ICd1bmRlZmluZWQnKSB7IGJyYW5kaW5nID0gJ3RydWUnOyB9DQoN
CiAgICB2YXIgZUN1cnJlbnRBbmNob3IgPSBudWxsOw0KICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgJCgnYScpLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGVDdXJyZW50
QW5jaG9yID0gJCgnYScpLmdldChpKTsNCiAgICAgICAgLy9jb25zaWRlciBvbmx5
IHRob3NlIGhhdmluZyBhIFVSTCBwcm90b2NvbCBwcmVmaXgNCiAgICAgICAgaWYg
KGVDdXJyZW50QW5jaG9yLnByb3RvY29sID09ICdodHRwOicgfHwgZUN1cnJlbnRB
bmNob3IucHJvdG9jb2wgPT0gJ2h0dHBzOicpIHsNCiAgICAgICAgICAgIC8vdGVz
dCB0byBzZWUgaWYgZm9yZWlnbg0KICAgICAgICAgICAgaWYgKCFicmFuZGluZyAm
JiAoKGVDdXJyZW50QW5jaG9yLmhyZWYuaW5kZXhPZihkb2N1bWVudC5kb21haW4p
ID4gLTEpIHx8IChlQ3VycmVudEFuY2hvci5ocmVmLnN1YnN0cmluZygwLCAxKSA9
PSAnLycpKSAmJiAoZUN1cnJlbnRBbmNob3IuaHJlZi50b0xvd2VyQ2FzZSgpLmlu
ZGV4T2YoJ2ZyPTEnKSA8IDApKSB7DQogICAgICAgICAgICAgICAgdmFyIGhhc2hT
cGxpdCA9IGVDdXJyZW50QW5jaG9yLmhyZWYuc3BsaXQoJyMnKTsNCiAgICAgICAg
ICAgICAgICB2YXIgaGFzaFZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgaWYg
KGhhc2hTcGxpdC5sZW5ndGggPiAxKSB7DQogICAgICAgICAgICAgICAgICAgIGhh
c2hWYWx1ZSA9ICcjJyArIGhhc2hTcGxpdFsxXTsNCiAgICAgICAgICAgICAgICB9
DQoNCiAgICAgICAgICAgICAgICBpZiAoZUN1cnJlbnRBbmNob3IuaHJlZi5pbmRl
eE9mKCc/JykgPiAtMSkgeyBlQ3VycmVudEFuY2hvci5ocmVmID0gaGFzaFNwbGl0
WzBdICsgJyZGUj0xJyArIGhhc2hWYWx1ZTsgfQ0KICAgICAgICAgICAgICAgIGVs
c2UgeyBlQ3VycmVudEFuY2hvci5ocmVmID0gaGFzaFNwbGl0WzBdICsgJz9GUj0x
JyArIGhhc2hWYWx1ZTsgfQ0KDQogICAgICAgICAgICB9DQogICAgICAgICAgICBp
ZiAoIWdfcmVTdXBwb3J0ZWRIb3N0bmFtZXMuZXhlYyhlQ3VycmVudEFuY2hvci5o
b3N0bmFtZSkgfHwgKCFicmFuZGluZyAmJiBlQ3VycmVudEFuY2hvci5ocmVmLmlu
ZGV4T2YoZG9jdW1lbnQuZG9tYWluKSA8IDApKSB7DQoNCiAgICAgICAgICAgICAg
ICBlQ3VycmVudEFuY2hvci50YXJnZXQgPSAnX2JsYW5rJzsgLy8gb3BlbiBpbiBu
ZXcgd2luZG93IHdoZW4gaXQgaXMgb2ZmIG1pY3Jvc29mdC5jb20sIG9yIGlmIGl0
IGlzIG5vdCBzdXBwb3J0Lm1pY3Jvc2ZvdC5jb20gYW5kIGZyPTENCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KICAgIH0gLy9mb3IgZWFjaCBhbmNob3INCiAgICBp
ZiAoIWJyYW5kaW5nKSB7DQogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSkgew0KICAgICAgICAgICAgdmFyIGVGb3JtcyA9IG51bGw7DQogICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICQoJ2Zvcm0nKS5sZW5ndGg7IGkr
Kykgew0KICAgICAgICAgICAgICAgIGVDdXJyZW50Rm9ybSA9ICQoJ2Zvcm0nKS5n
ZXQoaSk7DQogICAgICAgICAgICAgICAgaWYgKChlQ3VycmVudEZvcm0uYWN0aW9u
LmluZGV4T2YoZG9jdW1lbnQuZG9tYWluKSA+IC0xKSB8fCAoZUN1cnJlbnRGb3Jt
LmFjdGlvbi5zdWJzdHJpbmcoMCwgMSkgPT0gJy8nKSkgew0KICAgICAgICAgICAg
ICAgICAgICBpZiAoIWVDdXJyZW50Rm9ybS5GUikgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgJChlQ3VycmVudEZvcm0pLmFwcGVuZCgnPGlucHV0IGlkPSJGUiIg
bmFtZT0iRlIiIHZhbHVlPSIxIiB0eXBlPSJoaWRkZW4iIC8+Jyk7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiBNU19QYWdlVG9vbHNEYXRh
KCkgew0KICAgIHRoaXMuY2xvc2VNc2cgPSAnQ2xvc2UnOw0KICAgIHRoaXMubm9D
b29raWVVcmwgPSAnL2dwL25vY29va2llcy8nOw0KICAgIGZ1bmN0aW9uIGdldE9i
amVjdElkKCkgew0KICAgICAgICB2YXIgaSA9IDA7DQogICAgICAgIHdoaWxlICh0
cnVlKSB7DQogICAgICAgICAgICBpZiAoIWV2YWwoJ3dpbmRvdy5TYXZlVG9GYXZv
cml0ZXNEYXRhJyArIGkpKSB7IHJldHVybiAnU2F2ZVRvRmF2b3JpdGVzRGF0YScg
KyBpOyB9DQogICAgICAgICAgICBpKys7DQogICAgICAgIH0NCiAgICB9DQogICAg
dGhpcy5pZCA9IGdldE9iamVjdElkKCk7DQogICAgd2luZG93W3RoaXMuaWRdID0g
dGhpczsNCiAgICB0aGlzLlByaW50UGFnZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgU3RhdHNEb3ROZXQuZXZlbnRDb2xsZWN0aW9uSWQgPSBTZXRMb2dDb2xsZWN0
aW9uQml0KFN0YXRzRG90TmV0LmV2ZW50Q29sbGVjdGlvbklkLCAyKTsNCiAgICAg
ICAgdHJ5IHsgd2luZG93LnByaW50KCk7IH0gY2F0Y2ggKGUpIHsgfQ0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIHRoaXMuRW1haWxQYWdlID0gZnVu
Y3Rpb24gKGVsKSB7DQogICAgICAgIFN0YXRzRG90TmV0LmV2ZW50Q29sbGVjdGlv
bklkID0gU2V0TG9nQ29sbGVjdGlvbkJpdChTdGF0c0RvdE5ldC5ldmVudENvbGxl
Y3Rpb25JZCwgMyk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCn0NCg0K
ZnVuY3Rpb24gTVNfU3RhdHNEb3ROZXQoKSB7DQogICAgdGhpcy5zdGFydERhdGUg
PSBuZXcgRGF0ZSgpOw0KICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOw0KICAgIHRo
aXMuaG9zdCA9ICcvTFRTLyc7DQogICAgdGhpcy5zY3JvbGxVc2VkID0gZmFsc2U7
DQogICAgdGhpcy5yZUNsZWFuSWQgPSAvW14wLTldKi9pOw0KICAgIHRoaXMuZXZl
bnRDb2xsZWN0aW9uSWQgPSAwOw0KICAgIHRoaXMuT3B0aW9uQ29sbGVjdGlvbklk
ID0gMDsNCiAgICB0aGlzLkNvbnRlbnRQcm9wZXJ0aWVzID0gJyc7DQogICAgdGhp
cy5yZWZVcmwgPSAnJzsNCiAgICB0aGlzLmNvbnRlbnRUeXBlID0gJyc7DQogICAg
dGhpcy5jb250ZW50TG4gPSAnJzsNCiAgICB0aGlzLmNvbnRlbnRJZCA9ICcnOw0K
ICAgIHRoaXMuQ29udGVudEN1bHR1cmUgPSAnJzsNCiAgICB0aGlzLmV4aXRDb250
YWluZXJJZCA9ICcnOw0KICAgIHRoaXMuZXhpdExpbmtJZCA9ICcnOw0KICAgIHRo
aXMucGxhdGZvcm0gPSAnJzsNCiAgICB0aGlzLmFjdGl2ZUR3ZWxsVGltZSA9IDA7
DQogICAgdGhpcy5hY3RpdmVTdGFydFRpbWUgPSB0aGlzLnN0YXJ0RGF0ZTsNCiAg
ICB0aGlzLmxpZ2h0Ym94Q2xvc2VUaW1lID0gbnVsbDsNCiAgICB0aGlzLnN1cHBy
ZXNzQmx1ciA9IGZhbHNlOw0KICAgIHRoaXMuYWN0aXZlRWxlbWVudCA9IG51bGw7
DQogICAgdGhpcy50aW1lb3V0SUQgPSAtMTsNCiAgICB0aGlzLmlzSUUgPSBmYWxz
ZTsNCiAgICB0aGlzLmxvZ0V4dGVybmFsVXJscyA9IGZhbHNlOw0KICAgIHZhciBl
eGl0dmFsID0gZmV0Y2hjb29raWV2YWwoJ2V4aXRpbmZvJyk7DQogICAgaWYgKGV4
aXR2YWwpIHsNCiAgICAgICAgdmFyIHZhbHVlcyA9IGV4aXR2YWwuc3BsaXQoJ3wn
KTsNCiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT0gNikgew0KICAgICAgICAg
ICAgdGhpcy5yY3R5cGUgPSB2YWx1ZXNbMF07DQogICAgICAgICAgICB0aGlzLnJj
bGNpZCA9IHZhbHVlc1sxXTsNCiAgICAgICAgICAgIHRoaXMucmNpZCA9IHZhbHVl
c1syXTsNCiAgICAgICAgICAgIHRoaXMucmNjdWx0dXJlID0gdmFsdWVzWzNdOw0K
ICAgICAgICAgICAgdGhpcy5yZXhjaWQgPSB2YWx1ZXNbNF07DQogICAgICAgICAg
ICB0aGlzLnJleGxpZCA9IHZhbHVlc1s1XTsNCg0KICAgICAgICB9DQogICAgfQ0K
DQogICAgaWYgKGRvY3VtZW50LnJlZmVycmVyICYmIGRvY3VtZW50LnJlZmVycmVy
ICE9ICcnKSB7IHRoaXMucmVmVXJsID0gZG9jdW1lbnQucmVmZXJyZXIudG9TdHJp
bmcoKTsgfQ0KICAgIHRoaXMuZXZlbnRTZXFObyA9IDA7DQogICAgdGhpcy50YXJn
ZXRVcmwgPSAnJzsNCiAgICB0aGlzLnNlc3Npb25JZCA9ICcnOw0KICAgIHRoaXMu
b25VbmxvYWRUaW1lb3V0ID0gbnVsbDsNCiAgICB0aGlzLmx0c0lkbGVUaW1lb3V0
ID0gbnVsbDsNCiAgICB0aGlzLmV4dGVybmFsVXJscyA9IFtdOw0KICAgIHRoaXMu
Q2xlYW5JZCA9IGZ1bmN0aW9uIChzdHIpIHsNCiAgICAgICAgdHJ5IHsgcmV0dXJu
IHN0ci5yZXBsYWNlKHRoaXMucmVDbGVhbklkLCAnJyk7IH0NCiAgICAgICAgY2F0
Y2ggKGUpIHsgfQ0KICAgICAgICByZXR1cm4gJyc7DQogICAgfQ0KDQogICAgdGhp
cy5BZGRBY3RpdmVUaW1lID0gZnVuY3Rpb24gKG5vdykgew0KICAgICAgICBpZiAo
KFN0YXRzRG90TmV0LmFjdGl2ZVN0YXJ0VGltZSA9PSBudWxsKSB8fCAoYXJndW1l
bnRzLmxlbmd0aCA9PSAxICYmIFN0YXRzRG90TmV0LmFjdGl2ZUVsZW1lbnQgIT0g
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBTdGF0c0RvdE5ldC5pc0lFKSkgew0K
ICAgICAgICAgICAgU3RhdHNEb3ROZXQuYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQ7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N
CiAgICAgICAgaWYgKFN0YXRzRG90TmV0LnN1cHByZXNzQmx1cikgew0KICAgICAg
ICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgU3RhdHNEb3ROZXQu
YWN0aXZlRHdlbGxUaW1lICs9IG5vdy5nZXRUaW1lKCkgLSBTdGF0c0RvdE5ldC5h
Y3RpdmVTdGFydFRpbWUuZ2V0VGltZSgpOw0KICAgICAgICBpZiAoU3RhdHNEb3RO
ZXQubGlnaHRib3hDbG9zZVRpbWUgIT0gbnVsbCkgew0KICAgICAgICAgICAgU3Rh
dHNEb3ROZXQuZmxleFZhbHVlNiArPSBub3cuZ2V0VGltZSgpIC0gU3RhdHNEb3RO
ZXQuYWN0aXZlU3RhcnRUaW1lLmdldFRpbWUoKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIFN0YXRzRG90TmV0LmFjdGl2ZVN0YXJ0VGltZSA9IG51bGw7DQogICAgfQ0K
DQoNCiAgICB0aGlzLkNoZWNrQWN0aXZpdHkgPSBmdW5jdGlvbiAoKSB7DQogICAg
ICAgIGlmIChTdGF0c0RvdE5ldC5hY3RpdmVTdGFydFRpbWUgIT0gbnVsbCkgew0K
ICAgICAgICAgICAgU3RhdHNEb3ROZXQuQWRkQWN0aXZlVGltZShuZXcgRGF0ZSgp
KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICB0aGlzLlJlc2V0RHdlbGxUaW1lID0g
ZnVuY3Rpb24gKCkgew0KICAgICAgICBpZiAoU3RhdHNEb3ROZXQudGltZW91dElE
ICE9IC0xKQ0KICAgICAgICAgICAgY2xlYXJUaW1lb3V0KFN0YXRzRG90TmV0LnRp
bWVvdXRJRCk7DQoNCiAgICAgICAgU3RhdHNEb3ROZXQudGltZW91dElEID0gc2V0
VGltZW91dChTdGF0c0RvdE5ldC5DaGVja0FjdGl2aXR5LCBTdGF0c0RvdE5ldC5s
dHNJZGxlVGltZW91dCk7DQogICAgICAgIGlmIChTdGF0c0RvdE5ldC5hY3RpdmVT
dGFydFRpbWUgPT0gbnVsbCkNCiAgICAgICAgICAgIFN0YXRzRG90TmV0LmFjdGl2
ZVN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7DQogICAgfQ0KICAgIHRoaXMuRm9jdXNI
YW5kbGVyID0gZnVuY3Rpb24gKCkgew0KICAgICAgICBTdGF0c0RvdE5ldC5SZXNl
dER3ZWxsVGltZSgpOw0KICAgICAgICBpZiAoU3RhdHNEb3ROZXQuYWN0aXZlU3Rh
cnRUaW1lID09IG51bGwgJiYgKChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IG51
bGwgJiYgU3RhdHNEb3ROZXQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50KSB8fCAhU3RhdHNEb3ROZXQuaXNJRSkpIHsNCiAgICAgICAgICAg
IFN0YXRzRG90TmV0LmFjdGl2ZVN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7DQogICAg
ICAgIH0NCiAgICB9DQogICAgdGhpcy5Ib29rTG9hZEV2ZW50cyA9IGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgU3RhdHNEb3ROZXQubG9nRXh0ZXJuYWxVcmxzID0gKHRo
aXMuc3NJZCAmJiB0aGlzLnNzSWQgPT0gJzEnKTsNCiAgICAgICAgU3RhdHNEb3RO
ZXQuaXNJRSA9IChuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVy
bmV0IEV4cGxvcmVyIik7DQogICAgICAgIFN0YXRzRG90TmV0LmFjdGl2ZUVsZW1l
bnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50Ow0KICAgICAgICBpZiAoU3RhdHNE
b3ROZXQuaXNJRSkgew0KICAgICAgICAgICAgZG9jdW1lbnQub25mb2N1c2luID0g
U3RhdHNEb3ROZXQuRm9jdXNIYW5kbGVyOw0KICAgICAgICAgICAgZG9jdW1lbnQu
b25mb2N1c291dCA9IChmdW5jdGlvbiAoZXZlbnQpIHsgU3RhdHNEb3ROZXQuQWRk
QWN0aXZlVGltZShuZXcgRGF0ZSgpKTsgfSk7DQogICAgICAgIH0NCiAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgICAkKHdpbmRvdykuZm9jdXMoU3RhdHNEb3ROZXQu
Rm9jdXNIYW5kbGVyKTsNCiAgICAgICAgICAgICQod2luZG93KS5ibHVyKGZ1bmN0
aW9uIChldmVudCkgeyBTdGF0c0RvdE5ldC5BZGRBY3RpdmVUaW1lKG5ldyBEYXRl
KCkpOyB9KTsNCiAgICAgICAgfQ0KICAgICAgICBTdGF0c0RvdE5ldC50aW1lb3V0
SUQgPSBzZXRUaW1lb3V0KFN0YXRzRG90TmV0LkNoZWNrQWN0aXZpdHksIFN0YXRz
RG90TmV0Lmx0c0lkbGVUaW1lb3V0KTsNCg0KICAgICAgICAkKGRvY3VtZW50LmJv
ZHkpLm1vdXNlbW92ZShTdGF0c0RvdE5ldC5SZXNldER3ZWxsVGltZSk7DQogICAg
ICAgICQoZG9jdW1lbnQuYm9keSkuY2xpY2soU3RhdHNEb3ROZXQuUmVzZXREd2Vs
bFRpbWUpOw0KICAgICAgICAkKGRvY3VtZW50LmJvZHkpLmtleXByZXNzKFN0YXRz
RG90TmV0LlJlc2V0RHdlbGxUaW1lKTsNCiAgICAgICAgJCh3aW5kb3cpLnNjcm9s
bChTdGF0c0RvdE5ldC5SZXNldER3ZWxsVGltZSk7DQoNCiAgICB9DQoNCiAgICB0
aGlzLkxvZ1BhZ2VPbkxvYWQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmICh0
aGlzLmVuYWJsZUNvbGxUaWVyUGFyYW1zKSB7DQogICAgICAgICAgICB0aGlzLkhv
b2tMb2FkRXZlbnRzKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDaGVjayBp
ZiBBQ1cgbGluayBpcyByZW5kZXJlZA0KICAgICAgICBpZiAoJCgiI2Fjd2tibGlu
ayIpLmdldCgwKSkgew0KICAgICAgICAgICAgU3RhdHNEb3ROZXQuT3B0aW9uQ29s
bGVjdGlvbklkID0gU2V0TG9nQ29sbGVjdGlvbkJpdChTdGF0c0RvdE5ldC5PcHRp
b25Db2xsZWN0aW9uSWQsIDMyKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhp
cy5ldmVudFNlcU5vID09PSAwKSB7DQogICAgICAgICAgICB0aGlzLmV2ZW50U2Vx
Tm8gPSB0aGlzLkdldENvb2tpZUluY3JlbWVudCgpOw0KICAgICAgICB9DQoNCiAg
ICAgICAgaWYgKHR5cGVvZiAod2luZG93LmlubmVyV2lkdGgpID09ICdudW1iZXIn
KSB7DQogICAgICAgICAgICBTdGF0c0RvdE5ldC5icm93c2VyV2lkdGggPSB3aW5k
b3cuaW5uZXJXaWR0aDsNCiAgICAgICAgICAgIFN0YXRzRG90TmV0LmJyb3dzZXJI
ZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7DQogICAgICAgIH0NCiAgICAgICAg
ZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmDQogICAgICAgIChk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkpIHsNCiAgICAgICAgICAgIFN0
YXRzRG90TmV0LmJyb3dzZXJXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5jbGllbnRXaWR0aDsNCiAgICAgICAgICAgIFN0YXRzRG90TmV0LmJyb3dzZXJI
ZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0Ow0K
ICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LmJvZHkgJiYgKGRv
Y3VtZW50LmJvZHkuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRI
ZWlnaHQpKSB7DQogICAgICAgICAgICBTdGF0c0RvdE5ldC5icm93c2VyV2lkdGgg
PSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KICAgICAgICAgICAgU3RhdHNE
b3ROZXQuYnJvd3NlckhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0
Ow0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGx0c1VybCA9IHRoaXMuaG9zdCAr
ICc/JzsNCiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbklkICE9ICcnKQ0KICAgICAg
ICAgICAgbHRzVXJsICs9ICdTZXNzaW9uSUQ9JyArIE91dHB1dEVuY29kZXJfRW5j
b2RlVXJsKHRoaXMuc2Vzc2lvbklkKSArICcmJzsNCiAgICAgICAgbHRzVXJsICs9
ICdTU0lEPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLnNzSWQpICsg
JyYnICsNCiAgICAgICAgICAgICAgICAnU2l0ZUxDSUQ9JyArIE91dHB1dEVuY29k
ZXJfRW5jb2RlVXJsKHRoaXMuc2l0ZUxjSWQpICsgJyYnICsNCiAgICAgICAgICAg
ICAgICAnRXZlbnRDb2xsZWN0aW9uSUQ9JyArIE91dHB1dEVuY29kZXJfRW5jb2Rl
VXJsKHRoaXMuZXZlbnRDb2xsZWN0aW9uSWQpICsgJyYnICsNCiAgICAgICAgICAg
ICAgICAnVVJMPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLnVybCkg
KyAnJicgKw0KICAgICAgICAgICAgICAgICdDb250ZW50VHlwZT0nICsgT3V0cHV0
RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5jb250ZW50VHlwZSkgKyAnJicgKw0KICAg
ICAgICAgICAgICAgICdDb250ZW50TENJRD0nICsgT3V0cHV0RW5jb2Rlcl9FbmNv
ZGVVcmwodGhpcy5jb250ZW50TG4pICsgJyYnICsNCiAgICAgICAgICAgICAgICAn
Q29udGVudElEPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmNvbnRl
bnRJZCkgKyAnJicgKw0KICAgICAgICAgICAgICAgICdyY3R5cGU9JyArIE91dHB1
dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMucmN0eXBlKSArICcmJyArDQogICAgICAg
ICAgICAgICAgJ3JjbGNpZD0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhp
cy5yY2xjaWQpICsgJyYnICsNCiAgICAgICAgICAgICAgICAncmNpZD0nICsgT3V0
cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5yY2lkKSArICcmJyArDQogICAgICAg
ICAgICAgICAgJ3JjY3VsdHVyZT0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwo
dGhpcy5yY2N1bHR1cmUpICsgJyYnICsNCiAgICAgICAgICAgICAgICAncmV4Y2lk
PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLnJleGNpZCkgKyAnJicg
Kw0KICAgICAgICAgICAgICAgICdyZXhsaWQ9JyArIE91dHB1dEVuY29kZXJfRW5j
b2RlVXJsKHRoaXMucmV4bGlkKSArICcmJyArDQogICAgICAgICAgICAgICAgJ0Jy
b3dzZXJXaWR0aD0nICsgdGhpcy5icm93c2VyV2lkdGggKyAnJicgKw0KICAgICAg
ICAgICAgICAgICdCcm93c2VySGVpZ2h0PScgKyB0aGlzLmJyb3dzZXJIZWlnaHQg
KyAnJicgKw0KICAgICAgICAgICAgICAgICdCcmFuZElEPScgKyBPdXRwdXRFbmNv
ZGVyX0VuY29kZVVybCh0aGlzLnNpdGVCcmFuZElkKSArICcmJyArDQogICAgICAg
ICAgICAgICAgJ1JlZlVSTD0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhp
cy5yZWZVcmwpICsgJyYnICsNCiAgICAgICAgICAgICAgICAnT3B0aW9uQ29sbGVj
dGlvbklkPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLk9wdGlvbkNv
bGxlY3Rpb25JZCkgKyAnJicgKw0KICAgICAgICAgICAgICAgICdFdmVudFNlcU5v
PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmV2ZW50U2VxTm8pICsg
JyYnICsNCiAgICAgICAgICAgICAgICAnU1N2ZXJzaW9uPScgKyBPdXRwdXRFbmNv
ZGVyX0VuY29kZVVybCh0aGlzLlNzVmVyc2lvbikgKyAnJicgKw0KICAgICAgICAg
ICAgICAgICdTaXRlQ3VsdHVyZT0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwo
dGhpcy5TaXRlQ3VsdHVyZSkgKyAnJicgKw0KICAgICAgICAgICAgICAgICdQbGF0
Zm9ybT0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5wbGF0Zm9ybSkg
KyAnJicgKw0KICAgICAgICAgICAgICAgICdDb250ZW50Q3VsdHVyZT0nICsgT3V0
cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5Db250ZW50Q3VsdHVyZSkgKyAnJicg
Kw0KICAgICAgICAgICAgICAgICdJbjQwNFVybD0nICsgT3V0cHV0RW5jb2Rlcl9F
bmNvZGVVcmwodGhpcy5JbjQwNFVybCkgKyAnJicgKw0KICAgICAgICAgICAgICAg
ICdDb250ZW50UHJvcGVydGllcz0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwo
dGhpcy5Db250ZW50UHJvcGVydGllcykgKyAnJicgKw0KICAgICAgICAgICAgICAg
ICdGbGV4SUQ9JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuZmxleElk
KSArICcmJyArDQogICAgICAgICAgICAgICAgJ0ZsZXhWYWx1ZTE9JyArIE91dHB1
dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuZmxleFZhbHVlMSkgKyAnJicgKw0KICAg
ICAgICAgICAgICAgICdGbGV4VmFsdWUyPScgKyBPdXRwdXRFbmNvZGVyX0VuY29k
ZVVybCh0aGlzLmZsZXhWYWx1ZTIpICsgJyYnICsNCiAgICAgICAgICAgICAgICAn
RmxleFZhbHVlMz0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5mbGV4
VmFsdWUzKSArICcmJyArDQogICAgICAgICAgICAgICAgJ0ZsZXhWYWx1ZTQ9JyAr
IE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuZmxleFZhbHVlNCkgKyAnJicg
Kw0KICAgICAgICAgICAgICAgICdGbGV4VmFsdWU1PScgKyBPdXRwdXRFbmNvZGVy
X0VuY29kZVVybCh0aGlzLmZsZXhWYWx1ZTUpOw0KDQogICAgICAgIGlmICh0aGlz
LmVuYWJsZUNvbGxUaWVyUGFyYW1zKSB7DQogICAgICAgICAgICBsdHNVcmwgKz0g
JyZGbGV4VmFsdWU2PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmZs
ZXhWYWx1ZTYpICsgJyYnICsNCiAgICAgICAgICAgICAgICAgICAgJ0ZsZXhWYWx1
ZTc9JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuZmxleFZhbHVlNykg
KyAnJicgKw0KICAgICAgICAgICAgICAgICAgICAnRmxleFZhbHVlOD0nICsgT3V0
cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5mbGV4VmFsdWU4KSArICcmJyArDQog
ICAgICAgICAgICAgICAgICAgICdGbGV4VmFsdWU5PScgKyBPdXRwdXRFbmNvZGVy
X0VuY29kZVVybCh0aGlzLmZsZXhWYWx1ZTkpICsgJyYnICsNCiAgICAgICAgICAg
ICAgICAgICAgJ0ZsZXhWYWx1ZTEwPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVy
bCh0aGlzLmZsZXhWYWx1ZTEwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICh0
eXBlb2YgKHZhcldlZGNzRW5hYmxlKSA9PSAidW5kZWZpbmVkIiB8fCAhdmFyV2Vk
Y3NFbmFibGUpIHsNCiAgICAgICAgICAgIGdlbmVyYXRlV2VkY3NEYXRhKCk7DQog
ICAgICAgIH0NCg0KICAgICAgICAkKCcjU3RhdHNEb3ROZXRJbWcnKS5nZXQoMCku
c3JjID0gbHRzVXJsOw0KICAgIH0NCiAgICB0aGlzLkxvZ1BhZ2VPblVuTG9hZCA9
IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKGZldGNoY29va2lldmFsKCdHc2Z4
U3RhdHNMb2cnKSAhPSAndHJ1ZScpDQogICAgICAgICAgICByZXR1cm47DQoNCiAg
ICAgICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoKTsNCiAgICAgICAgdGhpcy5k
d2VsbFRpbWUgPSB0aGlzLmVuZERhdGUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydERh
dGUuZ2V0VGltZSgpOw0KICAgICAgICBpZiAodGhpcy5zY3JvbGxVc2VkKSB7IFN0
YXRzRG90TmV0LmV2ZW50Q29sbGVjdGlvbklkID0gU2V0TG9nQ29sbGVjdGlvbkJp
dChTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCwgMjcpOyB9DQoNCiAgICAg
ICAgaWYgKHRoaXMuZXZlbnRTZXFObyA9PT0gMCkgew0KICAgICAgICAgICAgdGhp
cy5ldmVudFNlcU5vID0gdGhpcy5HZXRDb29raWVJbmNyZW1lbnQoKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHNyY2hfc2V0Y29va2lldmFsKCJleGl0aW5mbyIsIHRo
aXMuY29udGVudFR5cGUgKyAifCIgKyB0aGlzLmNvbnRlbnRMbiArICJ8IiArIHRo
aXMuY29udGVudElkICsgInwiICsgdGhpcy5Db250ZW50Q3VsdHVyZSArICJ8IiAr
IHRoaXMuZXhpdENvbnRhaW5lcklkICsgInwiICsgdGhpcy5leGl0TGlua0lkKTsN
Cg0KICAgICAgICBpZiAodGhpcy5lbmFibGVDb2xsVGllclBhcmFtcyAmJiB0aGlz
LmxvZ0V4dGVybmFsVXJscykgew0KICAgICAgICAgICAgaWYgKCghdGhpcy5mbGV4
SWQgfHwgdGhpcy5mbGV4SWQubGVuZ3RoID09IDApICYmIHRoaXMuZXh0ZXJuYWxV
cmxzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLmZsZXhJZCA9
ICI0IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuZmxleFZhbHVl
MTAgPSB0aGlzLmV4dGVybmFsVXJscy5qb2luKCd8Jyk7DQogICAgICAgIH0NCg0K
ICAgICAgICB2YXIgbHRzVXJsID0gdGhpcy5ob3N0ICsgJz8nOw0KICAgICAgICBp
ZiAodGhpcy5zZXNzaW9uSWQgIT0gJycpDQogICAgICAgICAgICBsdHNVcmwgKz0g
J1Nlc3Npb25JRD0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5zZXNz
aW9uSWQpICsgJyYnOw0KICAgICAgICBsdHNVcmwgKz0NCiAgICAgICAgJ1NTSUQ9
JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuc3NJZCkgKyAnJicgKw0K
ICAgICAgICAnU2l0ZUxDSUQ9JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRo
aXMuc2l0ZUxjSWQpICsgJyYnICsNCiAgICAgICAgJ0V2ZW50Q29sbGVjdGlvbklE
PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmV2ZW50Q29sbGVjdGlv
bklkKSArICcmJyArDQogICAgICAgICdPcHRpb25Db2xsZWN0aW9uSWQ9JyArIE91
dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuT3B0aW9uQ29sbGVjdGlvbklkKSAr
ICcmJyArDQogICAgICAgICdTU3ZlcnNpb249JyArIE91dHB1dEVuY29kZXJfRW5j
b2RlVXJsKHRoaXMuU3NWZXJzaW9uKSArICcmJyArDQogICAgICAgICdDb250ZW50
VHlwZT0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5jb250ZW50VHlw
ZSkgKyAnJicgKw0KICAgICAgICAnQ29udGVudExDSUQ9JyArIE91dHB1dEVuY29k
ZXJfRW5jb2RlVXJsKHRoaXMuY29udGVudExuKSArICcmJyArDQogICAgICAgICdD
b250ZW50SUQ9JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuY29udGVu
dElkKSArICcmJyArDQogICAgICAgICdFeGl0TGlua0lEPScgKyB0aGlzLkNsZWFu
SWQodGhpcy5leGl0TGlua0lkKSArICcmJyArDQogICAgICAgICdFeGl0Q29udGFp
bmVySUQ9JyArIHRoaXMuQ2xlYW5JZCh0aGlzLmV4aXRDb250YWluZXJJZCkgKyAn
JicgKw0KICAgICAgICAnRHdlbGxUaW1lPScgKyBPdXRwdXRFbmNvZGVyX0VuY29k
ZVVybCh0aGlzLmR3ZWxsVGltZSkgKyAnJicgKw0KICAgICAgICAnQnJhbmRJRD0n
ICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5zaXRlQnJhbmRJZCkgKyAn
JicgKw0KICAgICAgICAnU2VhcmNoQ2F0ZWdvcnlJRD0nICsgdGhpcy5DbGVhbklk
KHRoaXMuc2VhcmNoQ2F0ZWdvcnlJZCArICcnKSArICcmJyArDQogICAgICAgICdT
ZWFyY2hDYXRlZ29yeUxpbmtQb3M9JyArIE91dHB1dEVuY29kZXJfRW5jb2RlVXJs
KHRoaXMuc2VhcmNoQ2F0ZWdvcnlMaW5rUG9zKSArICcmJyArDQogICAgICAgICdT
ZWFyY2hQYWdlTGlua1Bvcz0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhp
cy5zZWFyY2hQYWdlTGlua1BvcykgKyAnJicgKw0KICAgICAgICAnVGFyZ2V0VVJM
PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLnRhcmdldFVybCkgKyAn
JicgKw0KICAgICAgICAnRXZlbnRTZXFObz0nICsgT3V0cHV0RW5jb2Rlcl9FbmNv
ZGVVcmwodGhpcy5ldmVudFNlcU5vKSArICcmJyArDQogICAgICAgICdTaXRlQ3Vs
dHVyZT0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5TaXRlQ3VsdHVy
ZSkgKyAnJicgKw0KICAgICAgICAnQ29udGVudEN1bHR1cmU9JyArIE91dHB1dEVu
Y29kZXJfRW5jb2RlVXJsKHRoaXMuQ29udGVudEN1bHR1cmUpICsgJyYnICsNCiAg
ICAgICAgJ1BsYXRmb3JtPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlz
LnBsYXRmb3JtKSArICcmJyArDQogICAgICAgICd1bmxvYWQ9dHJ1ZScgKyAnJicg
Kw0KICAgICAgICAnRmxleElEPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0
aGlzLmZsZXhJZCkgKyAnJicgKw0KICAgICAgICAnRmxleFZhbHVlMT0nICsgT3V0
cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5mbGV4VmFsdWUxKSArICcmJyArDQog
ICAgICAgICdGbGV4VmFsdWUyPScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0
aGlzLmZsZXhWYWx1ZTIpICsgJyYnICsNCiAgICAgICAgJ0ZsZXhWYWx1ZTM9JyAr
IE91dHB1dEVuY29kZXJfRW5jb2RlVXJsKHRoaXMuZmxleFZhbHVlMykgKyAnJicg
Kw0KICAgICAgICAnRmxleFZhbHVlND0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVV
cmwodGhpcy5mbGV4VmFsdWU0KSArICcmJyArDQogICAgICAgICdGbGV4VmFsdWU1
PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmZsZXhWYWx1ZTUpOw0K
DQogICAgICAgIGlmICh0aGlzLmVuYWJsZUNvbGxUaWVyUGFyYW1zKSB7DQogICAg
ICAgICAgICB2YXIgbGlnaHRCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGIiKTsNCiAgICAgICAgICAgIGlmIChsaWdodEJveCAhPSBudWxsICYmIGxpZ2h0
Qm94LnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSB7DQogICAgICAgICAgICAgICAg
dGhpcy5BZGRBY3RpdmVUaW1lKHRoaXMuZW5kRGF0ZSk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLkFkZEFj
dGl2ZVRpbWUodGhpcy5lbmREYXRlLCB0cnVlKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHRoaXMuc3VwcHJlc3NCbHVyID0gdHJ1ZTsNCg0KICAgICAgICAg
ICAgbHRzVXJsICs9DQogICAgICAgICAgICAnJkFjdGl2ZUR3ZWxsVGltZT0nICsg
T3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5hY3RpdmVEd2VsbFRpbWUpICsg
JyYnICsNCiAgICAgICAgICAgICdGbGV4VmFsdWU2PScgKyBPdXRwdXRFbmNvZGVy
X0VuY29kZVVybCh0aGlzLmZsZXhWYWx1ZTYpICsgJyYnICsNCiAgICAgICAgICAg
ICdGbGV4VmFsdWU3PScgKyBPdXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmZs
ZXhWYWx1ZTcpICsgJyYnICsNCiAgICAgICAgICAgICdGbGV4VmFsdWU4PScgKyBP
dXRwdXRFbmNvZGVyX0VuY29kZVVybCh0aGlzLmZsZXhWYWx1ZTgpICsgJyYnICsN
CiAgICAgICAgICAgICdGbGV4VmFsdWU5PScgKyBPdXRwdXRFbmNvZGVyX0VuY29k
ZVVybCh0aGlzLmZsZXhWYWx1ZTkpICsgJyYnICsNCiAgICAgICAgICAgICdGbGV4
VmFsdWUxMD0nICsgT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwodGhpcy5mbGV4VmFs
dWUxMCk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAod2luZG93LmV4aXRUYWJW
YWx1ZSkgbHRzVXJsICs9ICImQ29udGVudFByb3BlcnRpZXM9IiArIE91dHB1dEVu
Y29kZXJfRW5jb2RlVXJsKGV4aXRUYWJJRCArICI9IiArIGV4aXRUYWJWYWx1ZSAr
ICJ8Iik7DQoNCiAgICAgICAgJCgnI1N0YXRzRG90TmV0SW1nJykuZ2V0KDApLnNy
YyA9IGx0c1VybDsNCiAgICAgICAgJCgibWV0YVtuYW1lPSdtcy5FdmVudENvbGxl
Y3Rpb25JZCddIikuYXR0cigiY29udGVudCIsIFN0YXRzRG90TmV0LmV2ZW50Q29s
bGVjdGlvbklkKTsNCiAgICAgICAgaWYgKHR5cGVvZiAoTXNjb21DdXN0b21FdmVu
dCkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAgIE1zY29tQ3VzdG9tRXZl
bnQoDQogICAgICAgICAgICAgICAgICAgICAgICAibXMuRXhpdExpbmtJRCIsIE91
dHB1dEVuY29kZXJfRW5jb2RlVXJsKFN0YXRzRG90TmV0LmV4aXRMaW5rSWQpLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgIm1zLkV4aXRDb250YWluZXJJZCIsIE91
dHB1dEVuY29kZXJfRW5jb2RlVXJsKFN0YXRzRG90TmV0LmV4aXRDb250YWluZXJJ
ZCksDQogICAgICAgICAgICAgICAgICAgICAgICAibXMuSXNVbkxvYWQiLCBPdXRw
dXRFbmNvZGVyX0VuY29kZVVybCh0cnVlKSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICJtcy5Ed2VsbFRpbWUiLCBPdXRwdXRFbmNvZGVyX0VuY29kZVVybChTdGF0
c0RvdE5ldC5kd2VsbFRpbWUpKTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgdG9k
YXkgPSBuZXcgRGF0ZSgpOw0KICAgICAgICB2YXIgbm93ID0gdG9kYXkuZ2V0VGlt
ZSgpOw0KICAgICAgICB3aGlsZSAoMSkgew0KICAgICAgICAgICAgdmFyIHRvZGF5
MiA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICB2YXIgbm93MiA9IHRvZGF5Mi5n
ZXRUaW1lKCk7DQogICAgICAgICAgICBpZiAoKG5vdzIgLSBub3cpID4gdGhpcy5v
blVubG9hZFRpbWVvdXQpDQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICB9DQogICAgfQ0KICAgIHRoaXMuU2V0RXhpdExpbmtzID0gZnVuY3Rpb24gKGUp
IHsNCiAgICAgICAgdmFyIEVsID0gc3JjRWwoZSk7DQogICAgICAgIHZhciBlbElk
ID0gbnVsbDsNCiAgICAgICAgdmFyIHBhcmVudElkID0gbnVsbDsNCiAgICAgICAg
aWYgKCFFbCkgeyByZXR1cm47IH0NCiAgICAgICAgaWYgKCFFbC50YWdOYW1lKSB7
IHJldHVybjsgfQ0KDQogICAgICAgIGlmIChFbC50YWdOYW1lLnRvVXBwZXJDYXNl
KCkgIT0gJ0EnKSB7DQogICAgICAgICAgICBpZiAoRWwucGFyZW50Tm9kZSAmJiBF
bC5wYXJlbnROb2RlLnRhZ05hbWUgJiYgRWwucGFyZW50Tm9kZS50YWdOYW1lLnRv
VXBwZXJDYXNlKCkgPT0gJ0EnKSB7DQogICAgICAgICAgICAgICAgRWwgPSBFbC5w
YXJlbnROb2RlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQoNCiAgICAgICAgaWYgKCFFbC5ocmVmKSB7IHJldHVybjsgfQ0KICAgICAgICBp
ZiAoRWwuaHJlZi5pbmRleE9mKCdqYXZhc2NyaXB0OicpID4gLTEpIHsgcmV0dXJu
OyB9DQogICAgICAgIGlmIChFbC5ocmVmLmluZGV4T2YoJ21haWx0bzonKSA+IC0x
KSB7IHJldHVybjsgfQ0KICAgICAgICBpZiAoRWwuaWQpIHsNCiAgICAgICAgICAg
IHRoaXMuZXhpdExpbmtJZCA9IEVsLmlkOw0KICAgICAgICB9DQogICAgICAgIGVs
c2Ugew0KICAgICAgICAgICAgdGhpcy5leGl0TGlua0lkID0gJyc7DQogICAgICAg
ICAgICBpZiAodHlwZW9mIChpc1Jlc2V0RXhpdENJRCkgPT0gJ3VuZGVmaW5lZCcg
fHwgaXNSZXNldEV4aXRDSUQgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHRo
aXMuZXhpdENvbnRhaW5lcklkID0gJyc7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCg0KICAgICAgICB0aGlzLnRhcmdldFVybCA9IEVsLmhyZWY7DQoNCiAgICAg
ICAgaWYgKHRoaXMuZW5hYmxlQ29sbFRpZXJQYXJhbXMgJiYgdGhpcy5sb2dFeHRl
cm5hbFVybHMgJiYgRWwudGFyZ2V0ICYmIEVsLnRhcmdldC50b1VwcGVyQ2FzZSgp
ID09ICdfQkxBTksnKSB7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuZXh0ZXJuYWxVcmxzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAg
ICAgaWYgKHRoaXMudGFyZ2V0VXJsLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5leHRl
cm5hbFVybHNbaV0pDQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgaWYgKGkgPj0gdGhpcy5leHRlcm5hbFVybHMu
bGVuZ3RoKQ0KICAgICAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxVcmxzLnB1c2go
dGhpcy50YXJnZXRVcmwudG9Mb3dlckNhc2UoKSk7DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKEVsLnRhcmdldC50b1VwcGVyQ2FzZSgpID09PSAnX0JMQU5LJykgew0K
ICAgICAgICAgICAgdGhpcy50YXJnZXRVcmwgPSAnJzsNCiAgICAgICAgfQ0KDQog
ICAgfQ0KICAgIHRoaXMuVHJhY2tTZWFyY2ggPSBmdW5jdGlvbiAoc2VhcmNoQ2F0
ZWdvcnlJZCwgc2VhcmNoQ2F0ZWdvcnlMaW5rUG9zLCBzZWFyY2hQYWdlTGlua1Bv
cykgew0KICAgICAgICB0aGlzLnNlYXJjaENhdGVnb3J5SWQgPSBzZWFyY2hDYXRl
Z29yeUlkOw0KICAgICAgICB0aGlzLnNlYXJjaENhdGVnb3J5TGlua1BvcyA9IHNl
YXJjaENhdGVnb3J5TGlua1BvczsNCiAgICAgICAgdGhpcy5zZWFyY2hQYWdlTGlu
a1BvcyA9IHNlYXJjaFBhZ2VMaW5rUG9zOw0KICAgIH0NCiAgICB0aGlzLkdldENv
b2tpZUluY3JlbWVudCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIGNvb2tp
ZUtleSA9ICdzZG5pbmMnOw0KICAgICAgICB2YXIgaW5jID0gZmV0Y2hjb29raWV2
YWwoY29va2llS2V5KTsNCiAgICAgICAgaWYgKCFpbmMpIHsgaW5jID0gJzAnOyB9
DQogICAgICAgIGluYyA9IHBhcnNlSW50KGluYyk7DQogICAgICAgIGluYyArPSAx
Ow0KICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWVLZXkgKyAnPScgKyBp
bmMgKyAnOyBwYXRoPS87JzsNCiAgICAgICAgcmV0dXJuIGluYzsNCiAgICB9DQog
ICAgdGhpcy5TZXRTZWFyY2hDYXRlZ29yeUlkID0gZnVuY3Rpb24gKGFzc2V0SWQp
IHsNCiAgICAgICAgaWYgKCFTdGF0c0RvdE5ldC5kaXNhYmxlZCkNCiAgICAgICAg
ICAgIHRoaXMuc2VhcmNoQ2F0ZWdvcnlJZCA9IGFzc2V0SWQ7DQogICAgfQ0KICAg
IHRoaXMuZXZlbnRTZXFObyA9IHRoaXMuR2V0Q29va2llSW5jcmVtZW50KCk7DQp9
DQp2YXIgU3RhdHNEb3ROZXQgPSBuZXcgTVNfU3RhdHNEb3ROZXQoKTsNCnZhciBT
YXZlVG9GYXZvcml0ZXNEYXRhID0gbmV3IE1TX1BhZ2VUb29sc0RhdGEoKTsNClNh
dmVUb0Zhdm9yaXRlc0RhdGEub2JqU3RhdHNEb3ROZXQgPSBTdGF0c0RvdE5ldDsN
Cg0KZnVuY3Rpb24gTVNfSGFuZGxlQ2xpY2soZWwsIGNvbnRhaW5lcklkLCByZWNv
cmRIaXQpIHsNCiAgICBpZiAoIWVsLmlkKSBlbC5pZCA9ICcnOw0KICAgIHZhciBp
ZCA9IGVsLmlkLnJlcGxhY2UoJ19pJywgJycpOw0KICAgIGlmIChyZWNvcmRIaXQg
JiYgIVN0YXRzRG90TmV0LmRpc2FibGVkKSB7DQogICAgICAgIFN0YXRzRG90TmV0
LmV4aXRMaW5rSWQgPSBpZDsNCiAgICAgICAgU3RhdHNEb3ROZXQuZXhpdENvbnRh
aW5lcklkID0gY29udGFpbmVySWQ7DQogICAgfQ0KICAgIHN3aXRjaCAoaWQpIHsN
CiAgICAgICAgY2FzZSAnUHJpbnRQYWdlJzogcmV0dXJuIFNhdmVUb0Zhdm9yaXRl
c0RhdGEuUHJpbnRQYWdlKCk7DQogICAgICAgIGNhc2UgJ2JpbF9QcmludFBhZ2Un
OiByZXR1cm4gU2F2ZVRvRmF2b3JpdGVzRGF0YS5QcmludFBhZ2UoKTsNCiAgICAg
ICAgY2FzZSAnRW1haWxQYWdlJzogcmV0dXJuIFNhdmVUb0Zhdm9yaXRlc0RhdGEu
RW1haWxQYWdlKGVsKTsNCiAgICAgICAgICAgIC8vICAgICAgICBjYXNlICdTYXZl
VG9NeVN1cHBvcnRGYXZvcml0ZXMnOiByZXR1cm4gU2F2ZVRvRmF2b3JpdGVzRGF0
YS5TYXZlVG9GYXZvcml0ZXMoZWwpOw0KICAgICAgICAgICAgLy8gICAgICAgIGNh
c2UgJ2JpbF9TYXZlVG9NeVN1cHBvcnRGYXZvcml0ZXMnOiByZXR1cm4gU2F2ZVRv
RmF2b3JpdGVzRGF0YS5TYXZlVG9GYXZvcml0ZXMoZWwpOw0KICAgICAgICAgICAg
Ly8gICAgICAgIGNhc2UgJ015U3VwcG9ydEZhdm9yaXRlc0xpbmsnOiByZXR1cm4g
U2F2ZVRvRmF2b3JpdGVzRGF0YS5Hb1RvRmF2b3JpdGVzKGVsKTsNCiAgICAgICAg
ICAgIC8vICAgICAgICBjYXNlICdiaWxfTXlTdXBwb3J0RmF2b3JpdGVzTGluayc6
IHJldHVybiBTYXZlVG9GYXZvcml0ZXNEYXRhLkdvVG9GYXZvcml0ZXMoZWwpOw0K
ICAgICAgICAgICAgLy8gICAgICAgIGNhc2UgJ1NlbmRGZWVkYmFjayc6IHJldHVy
biBTYXZlVG9GYXZvcml0ZXNEYXRhLlNlbmRGZWVkYmFjayhlbCk7DQogICAgICAg
ICAgICAvLyAgICAgICAgY2FzZSAnYmlsX1NlbmRGZWVkYmFjayc6IHJldHVybiBT
YXZlVG9GYXZvcml0ZXNEYXRhLlNlbmRGZWVkYmFjayhlbCk7DQogICAgfQ0KICAg
IGlmIChlbC5pZC5pbmRleE9mKCdvYXNfJykgPT0gMCkgew0KICAgICAgICBlbC5o
cmVmID0gTVNfT0FTVVJMICsgR2V0TW9kaWZpZWRRdWVyeVN0cmluZygnZ3ByaWQn
LCBlbC5pZC5yZXBsYWNlKCdvYXNfJywgJycpKTsNCiAgICAgICAgdmFyIHBvcyA9
IGVsLmhyZWYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ0YXJnZXQ9YXNzaXN0YW5j
ZSIpOw0KICAgICAgICBpZiAocG9zID4gMCkgew0KICAgICAgICAgICAgdmFyIGVu
ZCA9IHBvcyArIDE3Ow0KICAgICAgICAgICAgaWYgKGVsLmhyZWYuY2hhckF0KHBv
cyAtIDEpID09ICcmJykNCiAgICAgICAgICAgICAgICBwb3MgPSBwb3MgLSAxOw0K
ICAgICAgICAgICAgZWwuaHJlZiA9IGVsLmhyZWYuc3Vic3RyaW5nKDAsIHBvcykg
KyBlbC5ocmVmLnN1YnN0cmluZyhlbmQsIGVsLmhyZWYubGVuZ3RoKTsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICBpZiAoZWwuaHJlZiAhPSBudWxsKSB7DQogICAgICAg
IHZhciBpbmRleE9mUFNNb3JlID0gZWwuaHJlZi5pbmRleE9mKCdHU1NQcm9kU2Vs
TW9yZScpOw0KICAgICAgICBpZiAoaW5kZXhPZlBTTW9yZSA+IDApIHsNCiAgICAg
ICAgICAgIHZhciBlbmQgPSBlbC5ocmVmLmluZGV4T2YoJyYnLCBpbmRleE9mUFNN
b3JlKTsNCiAgICAgICAgICAgIGlmIChlbmQgPCAwKSBlbmQgPSBlbC5ocmVmLmxl
bmd0aDsNCiAgICAgICAgICAgIHZhciBjMUlEID0gZWwuaHJlZi5zdWJzdHJpbmco
aW5kZXhPZlBTTW9yZSArIDE0LCBlbmQpOw0KICAgICAgICAgICAgZWwuaHJlZiA9
ICcvc2VsZWN0L2RlZmF1bHQuYXNweCcgKyBHZXRNb2RpZmllZFF1ZXJ5U3RyaW5n
KCdjMScsIGMxSUQpOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiB0cnVl
Ow0KfQ0KDQpmdW5jdGlvbiBnZXRzZWFyY2h1cmwoZWxlbSkgew0KICAgIGlmIChx
dWVyeVN0cmluZ1snYWR2J10gPT0gJzEnKSB7DQogICAgICAgIGVsZW0uaHJlZiA9
IGVsZW0uaHJlZiArICcmYWR2PTEnOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gZ2V0
cnNzdXJsKGVsZW0pIHsNCiAgICB2YXIgcmluZGV4ID0gZWxlbS5ocmVmLmluZGV4
T2YoJy9jb21tb24vcnNzLmFzcHgnKTsNCiAgICBpZiAocmluZGV4ID4gLTEpIGVs
ZW0uaHJlZiA9IGVsZW0uaHJlZiArICcmbXNpZD0nICsgbWMxOw0KfQ0KDQp2YXIg
bWMxID0gJyc7DQpmdW5jdGlvbiBNU19XZWJNZXRyaXgoc1VybCkgew0KICAgIGlm
ICh0eXBlb2YgKHNVcmwpICE9ICd1bmRlZmluZWQnKSB7DQoNCiAgICAgICAgdmFy
IGN2Ow0KDQogICAgICAgIHZhciBwMSA9ICdndWlkPSc7DQogICAgICAgIHZhciBw
MiA9ICcmZ3VpZD0nOw0KICAgICAgICB2YXIgZ2wgPSAzMjsNCiAgICAgICAgY3Yg
PSBmZXRjaGNvb2tpZXZhbCgnTUMxJyk7DQogICAgICAgIGlmIChjdikgY3YgPSBj
di50b0xvd2VyQ2FzZSgpOw0KICAgICAgICBpZiAoIWN2KSB7DQogICAgICAgICAg
ICBjdiA9IGZldGNoY29va2lldmFsKCdNQzInKTsNCiAgICAgICAgICAgIGlmIChj
dikgY3YgPSBjdi50b0xvd2VyQ2FzZSgpOw0KICAgICAgICB9DQogICAgICAgIGlm
IChjdikgew0KICAgICAgICAgICAgaWYgKGN2LnN1YnN0cigwLCBwMS5sZW5ndGgp
ID09IHAxKSB7IG1jMSA9IGN2LnN1YnN0cihwMS5sZW5ndGgsIGdsKTsgfQ0KICAg
ICAgICAgICAgZWxzZSBpZiAoY3YuaW5kZXhPZihwMikgPiAtMSkgeyBtYzEgPSBj
di5zdWJzdHIoY3YuaW5kZXhPZihwMikgKyBwMi5sZW5ndGgsIGdsKTsgfQ0KICAg
ICAgICB9DQogICAgICAgIHNVcmwgPSBzVXJsICsgJyZtc2lkPScgKyBtYzE7DQoN
CiAgICAgICAgJCgnI3dlYm1ldHJpeGltZycpLmdldCgwKS5zcmMgPSBzVXJsOw0K
ICAgIH0NCn0NCg0KZnVuY3Rpb24gTVNfRG9jdW1lbnRPbkNsaWNrKGUpIHsNCiAg
ICBpZiAoIVN0YXRzRG90TmV0LmRpc2FibGVkKSB7IFN0YXRzRG90TmV0LlNldEV4
aXRMaW5rcyhlKTsgfQ0KfQ0KDQpmdW5jdGlvbiBNU19XaW5kb3dPblVubG9hZCgp
IHsNCiAgICBpZiAoIVN0YXRzRG90TmV0LmRpc2FibGVkKSB7IFN0YXRzRG90TmV0
LkxvZ1BhZ2VPblVuTG9hZCgpOyB9DQp9DQoNCmZ1bmN0aW9uIE1TX1dpbmRvd09u
U2Nyb2xsKCkgew0KICAgIFN0YXRzRG90TmV0LnNjcm9sbFVzZWQgPSB0cnVlOw0K
ICAgICQoZG9jdW1lbnQpLnVuYmluZCgnc2Nyb2xsJywgTVNfV2luZG93T25TY3Jv
bGwpOw0KfQ0KDQokKHdpbmRvdykudW5sb2FkKE1TX1dpbmRvd09uVW5sb2FkKTsN
CiQoZG9jdW1lbnQpLmNsaWNrKE1TX0RvY3VtZW50T25DbGljayk7DQokKGRvY3Vt
ZW50KS5zY3JvbGwoTVNfV2luZG93T25TY3JvbGwpOw0KDQovKiBzZWFyY2ggKi8N
CmZ1bmN0aW9uIE9wdGlvbkNvb2tpZSgpIHsNCiAgICB2YXIgb3B0ID0gZmV0Y2hj
b29raWV2YWwoImFkb3B0Iik7DQogICAgaWYgKG9wdCAmJiBvcHQubGVuZ3RoID4g
MCkgew0KICAgICAgICB2YXIgcGFpcnMgPSBvcHQuc3BsaXQoJ3wnKTsNCiAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkrKykgew0KICAg
ICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpXS5zcGxpdCgnPScpOw0KICAgICAg
ICAgICAgaWYgKHBhaXIubGVuZ3RoICE9IDIpIHsgY29udGludWU7IH0NCiAgICAg
ICAgICAgIGlmIChwYWlyWzFdID09ICcnKSB7IGNvbnRpbnVlOyB9DQoNCiAgICAg
ICAgICAgIHZhciBrZXkgPSBwYWlyWzBdOw0KICAgICAgICAgICAgdmFyIHZhbHVl
ID0gcGFpclsxXTsNCg0KICAgICAgICAgICAgaWYgKHRoaXNba2V5XSkgeyB0aGlz
W2tleV0gKz0gJywgJyArIHZhbHVlOyB9DQogICAgICAgICAgICBlbHNlIHsNCiAg
ICAgICAgICAgICAgICB0aGlzW2tleV0gPSB2YWx1ZTsNCg0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBJbml0UmFkaW8oZWxl
bSwgbmFtZSkgew0KICAgIHR2YWwgPSBmZXRjaGNvb2tpZXZhbCgiYWQiICsgbmFt
ZSk7DQogICAgaWYgKHR2YWwpIHsNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGVs
ZW0ubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGlmIChlbGVtW2ldLnZhbHVl
ID09IHVuZXNjYXBlKHR2YWwpKSB7DQogICAgICAgICAgICAgICAgZWxlbVtpXS5j
aGVja2VkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBlbGVtW2ldLmNsaWNrKCk7
DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICB9DQp9DQoNCnZhciBsaW5rcyA9IG5ldyBBcnJheSgpOw0KJChkb2N1
bWVudCkucmVhZHkoYWRkUG9wdXBIZWxwRXZlbnRzKTsNCmZ1bmN0aW9uIGFkZFBv
cHVwSGVscEV2ZW50cygpIHsNCiAgICB2YXIgaiA9IDA7DQogICAgdmFyIGdsaW5r
cyA9ICQoJyNjb250ZW50QXJlYSBhJyk7DQogICAgaWYgKGdsaW5rcykgew0KICAg
ICAgICBmb3IgKHZhciBpID0gZ2xpbmtzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t
KSB7DQogICAgICAgICAgICBpZiAoZ2xpbmtzW2ldLmNsYXNzTmFtZSA9PSAiY3Vz
dGlwIikgew0KICAgICAgICAgICAgICAgIGxpbmtzLnB1c2goZ2xpbmtzW2ldKTsN
CiAgICAgICAgICAgICAgICBnbGlua3NbaV0ub25tb3VzZW92ZXIgPSBzaG93UG9w
dXBIZWxwOw0KICAgICAgICAgICAgICAgIGdsaW5rc1tpXS5vbm1vdXNlb3V0ID0g
aGlkZVBvcHVwSGVscDsNCiAgICAgICAgICAgICAgICBnbGlua3NbaV0ub25mb2N1
cyA9IHNob3dQb3B1cEhlbHA7DQogICAgICAgICAgICAgICAgZ2xpbmtzW2ldLm9u
Ymx1ciA9IGhpZGVQb3B1cEhlbHA7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICB9DQp9DQoNCmZ1bmN0aW9uIHNob3dQb3B1cEhlbHAoKSB7DQogICAgdmFy
IG9iaiA9ICQodGhpcykuY2hpbGRyZW4oInNwYW4iKVswXTsNCg0KICAgIGlmIChv
YmogPT0gbnVsbCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgdmFy
IHRsciA9IEFic1Bvcyh0aGlzKTsNCiAgICB2YXIgdyA9IG9iai5vZmZzZXRXaWR0
aDsNCiAgICB2YXIgaCA9IG9iai5vZmZzZXRIZWlnaHQgKyBwYXJzZUludCgkKG9i
aikuY3NzKCJwYWRkaW5nVG9wIiksIDEwKSArIHBhcnNlSW50KCQob2JqKS5jc3Mo
InBhZGRpbmdCb3R0b20iKSwgMTApOw0KICAgIHZhciBzdHIgPSAnJzsNCg0KICAg
IHZhciB4ID0gJChvYmopLmNzcygiZGlyZWN0aW9uIik7DQogICAgaWYgKHggPT09
ICdydGwnKSB7DQogICAgICAgIGlmICh0bHIubGVmdCA8IHcpIHsNCiAgICAgICAg
ICAgIHN0ciArPSAnIHNob3dMZWZ0JzsNCiAgICAgICAgICAgIG9iai5zdHlsZS5y
aWdodCA9ICdhdXRvJzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgIG9iai5zdHlsZS5yaWdodCA9ICcyMHB4JzsNCiAgICAgICAgfQ0KICAg
IH0NCiAgICBlbHNlIHsNCiAgICAgICAgaWYgKCh3ICsgdGxyLmxlZnQpID4gJCh3
aW5kb3cpLndpZHRoKCkpIHN0ciArPSAnIHNob3dSaWdodCc7DQogICAgfQ0KDQog
ICAgaWYgKChoICsgdGxyLnRvcCkgPiAkKHdpbmRvdykuaGVpZ2h0KCkpIHN0ciAr
PSAnIHNob3dCb3R0b20nOw0KICAgIHRoaXMuY2xhc3NOYW1lID0gImN1c3RpcCBz
aG93IiArIHN0cjsNCn0NCg0KZnVuY3Rpb24gaGlkZVBvcHVwSGVscCgpIHsNCiAg
ICB2YXIgb2JqID0gbnVsbDsNCiAgICB0aGlzLmNsYXNzTmFtZSA9ICJjdXN0aXAi
Ow0KICAgIGlmICh0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzcGFuIikpDQog
ICAgICAgIG9iaiA9IHRoaXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKVsw
XTsNCiAgICBlbHNlDQogICAgICAgIHJldHVybjsNCiAgICBpZiAob2JqID09IG51
bGwpDQogICAgICAgIHJldHVybjsNCiAgICB2YXIgeCA9ICQob2JqKS5jc3MoImRp
cmVjdGlvbiIpOw0KICAgIGlmICh4ID09PSAncnRsJykgb2JqLnN0eWxlLnJpZ2h0
ID0gJ2F1dG8nOw0KfQ0KDQovL05lZWQgdGhpcywganF1ZXJ5IGZ1bmN0aW9ucyBk
b250IHdvcmsgaW4gDQovL2Egbm9uLWRvY3R5cGUgZXZpb3JubWVudCBmb3IgdGhp
cw0KZnVuY3Rpb24gQWJzUG9zKG9iaikgew0KICAgIHZhciB4ID0geSA9IDA7DQog
ICAgaWYgKG9iai5vZmZzZXRQYXJlbnQpIHsNCiAgICAgICAgeCA9IG9iai5vZmZz
ZXRMZWZ0Ow0KICAgICAgICB5ID0gb2JqLm9mZnNldFRvcDsNCiAgICAgICAgd2hp
bGUgKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpIHsNCiAgICAgICAgICAgIHggKz0g
b2JqLm9mZnNldExlZnQ7DQogICAgICAgICAgICB5ICs9IG9iai5vZmZzZXRUb3A7
DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHsgbGVmdDogeCwgdG9wOiB5
IH07DQp9DQoNCmZ1bmN0aW9uIHNldEtleUJpdChlKSB7DQogICAgZSA9IHNyY0Vs
KGUpOw0KICAgIGUua2V5Qml0ID0gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gbG9nU2Vh
cmNoVUlTd2l0Y2goKSB7DQogICAgU3RhdHNEb3ROZXQuZXZlbnRDb2xsZWN0aW9u
SWQgPSBTZXRMb2dDb2xsZWN0aW9uQml0KFN0YXRzRG90TmV0LmV2ZW50Q29sbGVj
dGlvbklkLCAyOCk7DQp9DQoNCmZ1bmN0aW9uIGxvZ1JhbmdlKCkgew0KICAgIFN0
YXRzRG90TmV0LmV2ZW50Q29sbGVjdGlvbklkID0gU2V0TG9nQ29sbGVjdGlvbkJp
dChTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCwgOCk7DQp9DQoNCmZ1bmN0
aW9uIGxvZ09wdGlvbklkKGlkKSB7DQogICAgU3RhdHNEb3ROZXQuT3B0aW9uQ29s
bGVjdGlvbklkID0gU2V0TG9nQ29sbGVjdGlvbkJpdChTdGF0c0RvdE5ldC5PcHRp
b25Db2xsZWN0aW9uSWQsIGlkKTsNCn0NCg0KLy9DaGVjayBpZiB0aGUgbid0aCBi
aXQgaXMgc2V0IGluIHRoZSBiaW5hcnkgZXF1aXZhbGVudCBvZiB0aGUgbnVtYmVy
DQpmdW5jdGlvbiBJc0xvZ0JpdFNldChudW1iZXIsIGZsYWdiaXQpIHsNCg0KICAg
IGlmIChudW1iZXIgPT0gMCB8fCBmbGFnYml0ID09IDApIHJldHVybiBmYWxzZTsN
Cg0KICAgIHZhciBiaW5hcnkgPSBudW1iZXIudG9TdHJpbmcoMik7DQoNCiAgICBp
ZiAoYmluYXJ5Lmxlbmd0aCA+IGZsYWdiaXQpIHsNCiAgICAgICAgaWYgKGJpbmFy
eS5jaGFyQXQoYmluYXJ5Lmxlbmd0aCAtIGZsYWdiaXQgLSAxKSA9PSAiMSIpIHJl
dHVybiB0cnVlOw0KICAgIH0NCiAgICByZXR1cm4gZmFsc2U7DQp9DQoNCmZ1bmN0
aW9uIFNldExvZ0NvbGxlY3Rpb25CaXQoY29sbGVjdGlvbiwgYml0KSB7DQogICAg
aWYgKCFJc0xvZ0JpdFNldChjb2xsZWN0aW9uLCBiaXQpKSB7DQogICAgICAgIGNv
bGxlY3Rpb24gKz0gTWF0aC5wb3coMiwgYml0KTsNCiAgICB9DQogICAgcmV0dXJu
IGNvbGxlY3Rpb247DQp9DQoNCmZ1bmN0aW9uIFNvbElkRm9yU3RhdHNOZXQoc2lk
KSB7DQogICAgaWYgKCFTdGF0c0RvdE5ldC5kaXNhYmxlZCkgew0KICAgICAgICBT
dGF0c0RvdE5ldC5mbGV4SWQgPSAnNCc7DQogICAgICAgIFN0YXRzRG90TmV0LmZs
ZXhWYWx1ZTEgPSBzaWQ7DQogICAgICAgIFN0YXRzRG90TmV0LmV2ZW50Q29sbGVj
dGlvbklkID0gU2V0TG9nQ29sbGVjdGlvbkJpdChTdGF0c0RvdE5ldC5ldmVudENv
bGxlY3Rpb25JZCwgMTgpOw0KDQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBBc3NldElk
Q2xpY2soYWlkKSB7DQogICAgaWYgKCFTdGF0c0RvdE5ldC5kaXNhYmxlZCkgew0K
ICAgICAgICBTdGF0c0RvdE5ldC5TZXRTZWFyY2hDYXRlZ29yeUlkKGFpZCk7DQog
ICAgICAgIFN0YXRzRG90TmV0LmZsZXhWYWx1ZTIgPSBhaWQ7DQogICAgICAgIFN0
YXRzRG90TmV0LmZsZXhJZCA9ICc0JzsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIFJl
Z2lvblNhdmUocGZ4KSB7DQogICAgdmFyIGNvb2tpZWtleSA9IHBmeCArICdMQU5H
Jw0KICAgIHZhciBwcmV2TE4gPSBmZXRjaGNvb2tpZXZhbChjb29raWVrZXkpOw0K
ICAgIHZhciBuZXdMTiA9ICQoJyNMTicpLmdldCgwKS52YWx1ZTsNCiAgICBpZiAo
cHJldkxOKSB7DQogICAgICAgIGlmIChwcmV2TE4gIT0gbmV3TE4pIHsNCiAgICAg
ICAgICAgIFN0YXRzRG90TmV0LmV2ZW50Q29sbGVjdGlvbklkID0gU2V0TG9nQ29s
bGVjdGlvbkJpdChTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCwgMTcpOw0K
DQogICAgICAgIH0NCiAgICB9DQogICAgc2V0Y29va2lldmFsKGNvb2tpZWtleSwg
bmV3TE4pOw0KICAgICQoJyNyZWdpb25mb3JtJykuZ2V0KDApLnN1Ym1pdDsNCn0N
Cg0KZnVuY3Rpb24gQ2hlY2tFdWxhQ29va2llKHVybCkgew0KICAgIHZhciB0dmFs
ID0gZmV0Y2hjb29raWV2YWwoImFjd2V1bGEiKTsNCiAgICBpZiAodHZhbCAhPSAi
MSIpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIGVsc2Ugew0K
ICAgICAgICBTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCA9IFNldExvZ0Nv
bGxlY3Rpb25CaXQoU3RhdHNEb3ROZXQuZXZlbnRDb2xsZWN0aW9uSWQsIDI2KTsN
CiAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDsNCiAgICAgICAgcmV0dXJuIGZh
bHNlOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gTGF1bmNoQWN3KGFyZywgdXJsKSB7
DQogICAgaWYgKGFyZyA9PSAiYWNjZXB0Iikgew0KICAgICAgICBTdGF0c0RvdE5l
dC5ldmVudENvbGxlY3Rpb25JZCA9IFNldExvZ0NvbGxlY3Rpb25CaXQoU3RhdHNE
b3ROZXQuZXZlbnRDb2xsZWN0aW9uSWQsIDI2KTsNCiAgICAgICAgc2V0Y29va2ll
dmFsKCJhY3dldWxhIiwgIjEiKTsNCiAgICAgICAgdmFyIGFjd3dpbiA9IHdpbmRv
dy5vcGVuKHVybCwgbnVsbCwgImhlaWdodD0xLHdpZHRoPTEsbGVmdD0wLHRvcD0w
LHN0YXR1cz1ubyx0b29sYmFyPW5vLG1lbnViYXI9bm8sbG9jYXRpb249bm8iKTsN
CiAgICAgICAgaWYgKCFhY3d3aW4pIHsNCiAgICAgICAgICAgIGxvY2F0aW9uLmhy
ZWYgPSB1cmw7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAg
ICAkKCdbbmFtZT1mcm1hY3ddJykuc3VibWl0KCk7DQogICAgICAgICAgICAvL2lm
KGFjd3dpbi5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCdkZWZhdWx0LmFzcHgn
KSA+IC0xKXsgYWN3d2luLmNsb3NlKCk7fSANCiAgICAgICAgfQ0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQoNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgICQoJ1tu
YW1lPWZybWFjd10nKS5zdWJtaXQoKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGdl
dExhdGVzdEVsZW1lbnQoKSB7DQogICAgdmFyIGUgPSAkKCdib2R5JykuZ2V0KDAp
Ow0KICAgIHdoaWxlIChlLmxhc3RDaGlsZCkgZSA9IGUubGFzdENoaWxkOw0KICAg
IHdoaWxlICghZS50YWdOYW1lKSBlID0gZS5wYXJlbnROb2RlOw0KICAgIHJldHVy
biBlLnByZXZpb3VzU2libGluZzsNCn0NCg0KZnVuY3Rpb24gZml4QnVsbGV0UG9z
aXRpb24oZSwgYWxsKSB7DQogICAgcmV0dXJuOw0KfQ0KDQp2YXIgYWNTdGFydE51
bTsNCmZ1bmN0aW9uIHNldEFDU3RhcnRDaGFycyhjaGFyTnVtKSB7DQogICAgaWYg
KGNoYXJOdW0pIHsNCiAgICAgICAgYWNTdGFydE51bSA9IGNoYXJOdW0uc3BsaXQo
JzonKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGNoYW5nZUxjaWRGb3JTZWxlY3Qo
ZWxlbSwgdGFyZ2V0aWQsIGl0ZW1udW0sIGFjc3RhcnRjaGFyKSB7DQogICAgdmFy
IGxjaWQgPSBpdGVtbnVtIHx8IGVsZW0ub3B0aW9uc1tlbGVtLnNlbGVjdGVkSW5k
ZXhdLnZhbHVlOw0KICAgIGlmIChsY2lkKSB7DQogICAgICAgIGxjaWQgPSBsY2lk
LnNwbGl0KCc9Jyk7DQogICAgICAgIGlmIChsY2lkLmxlbmd0aCA9PT0gMikgew0K
ICAgICAgICAgICAgY2hhbmdlQWNMY2lkKGxjaWRbMV0sIHRhcmdldGlkKTsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBpZiAoYWNTdGFydE51bSkgew0KICAgICAgICB0
cnkgew0KICAgICAgICAgICAgY2hhcnMgPSAoYWNzdGFydGNoYXIpID8gYWNTdGFy
dE51bVtwYXJzZUludChhY3N0YXJ0Y2hhciwgMTApXSA6IGFjU3RhcnROdW1bZWxl
bS5zZWxlY3RlZEluZGV4XTsNCiAgICAgICAgICAgIE1TLlN1cHBvcnQuQUMuQUND
aGFuZ2VDaGFyU3RhcnQodGFyZ2V0aWQsIGNoYXJzKTsNCiAgICAgICAgfQ0KICAg
ICAgICBjYXRjaCAoZSkgeyB9DQogICAgfQ0KfQ0KDQp2YXIgY2hhbmdlQWNMY2lk
ID0gZnVuY3Rpb24gKGxjaWQsIHRhcmdldGlkLCBhY3N0cnQpIHsNCiAgICB0cnkg
ew0KICAgICAgICBNUy5TdXBwb3J0LkFDLkFDU2V0TGNpZCh0YXJnZXRpZCwgbGNp
ZCk7DQogICAgICAgIGlmIChhY1N0YXJ0TnVtICYmIGFjc3RydCkgew0KICAgICAg
ICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBNUy5TdXBwb3J0LkFDLkFDQ2hh
bmdlQ2hhclN0YXJ0KHRhcmdldGlkLCBhY1N0YXJ0TnVtW2Fjc3RydF0pOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfQ0KICAgICAgICB9
DQogICAgfQ0KICAgIGNhdGNoIChlKSB7IH0NCn07DQoNCmZ1bmN0aW9uIEluaXRB
Qyh0YXJnZXRpZCkgew0KICAgIHZhciBjaGFuZ2VsY2lkID0gZnVuY3Rpb24gKCkg
ew0KICAgICAgICAvL2NoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gYSBtdWx0aWNh
dGFsb2cgcmVnaW9uLCB0aGlzIGNhbiBiZSBkb25lIGJ5IGNoZWNraW5nIGZvcg0K
ICAgICAgICAvL2EgY29tYm8gYm94IHdpdGggdGhlIGlkIG9mIGRkQ2F0YWxvZw0K
ICAgICAgICB2YXIgY2F0ID0gJCgnI2RkQ2F0YWxvZycpLmdldCgwKTsNCiAgICAg
ICAgaWYgKGNhdCkgew0KICAgICAgICAgICAgLy9nZXQgdGhlIGxjaWQgdmFsdWUg
c3RvcmVkIGluIHRoZSBjb29raWUgYWRjYXRhbG9nDQogICAgICAgICAgICAvL2lm
IHRoZSBjb29raWUgdmFsdWUgZXhpc3RzIHdlIHdhbnQgdG8gY2hlY2sgYW5kIHNl
ZSBpZiBpdHMgaW4gdGhlIG11bHRpY2F0YWxvZyBkcm9wIGRvd24NCiAgICAgICAg
ICAgIHZhciBsY2lkID0gdW5lc2NhcGUoZmV0Y2hjb29raWV2YWwoImFkY2F0YWxv
ZyIpKTsNCiAgICAgICAgICAgIGlmIChsY2lkKSB7DQogICAgICAgICAgICAgICAg
Ly92YWxpZGF0ZSBhZ2FpbnN0IHRoZSB2YWx1ZSBpbiB0aGUgbXVsdGljYXRhbG9n
IGRyb3Bkb3duDQogICAgICAgICAgICAgICAgLy9pZiB0aGUgdmFsdWUgZXhpc3Rz
IHdlIGFyZSBnb2luZyB0byB1c2UgaXQsIG90aGVyd2lzZSB3ZSB3b250IG1ha2Ug
YW55IGNoYW5nZXMNCiAgICAgICAgICAgICAgICB2YXIgY2F0ZXggPSBmYWxzZTsN
CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdC5vcHRpb25z
Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChjYXQub3B0
aW9uc1tpXS52YWx1ZSA9PSBsY2lkKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBjYXRleCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAg
ICAgICAgICAgICAgIGlmIChjYXRleCkgew0KICAgICAgICAgICAgICAgICAgICBs
Y2lkID0gbGNpZC5zcGxpdCgnPScpOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
bGNpZC5sZW5ndGggPT09IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRy
eSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTVMuU3VwcG9ydC5BQy5B
Q1NldExjaWQodGFyZ2V0aWQsIGxjaWRbMV0pOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfQ0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfTsNCg0KICAgICQod2luZG93KS5yZWFk
eShjaGFuZ2VsY2lkKTsNCn0NCg0KLy9QYXNzIHRocm91Z2ggZnVuY3Rpb24gZm9y
IGEgbm9uIHBlcnNpc3RhbnQgY29va2llIHZhbHVlDQpmdW5jdGlvbiBzcmNoX3Nl
dGNvb2tpZXZhbChrZXksIHZhbCkgew0KICAgIHNldGNvb2tpZXZhbChrZXksIHZh
bCwgbnVsbCwgdHJ1ZSk7DQp9DQoNCi8vU2V0cyBhIGNvb2tpZSB2YWx1ZSwgbWF5
IG1ha2UgdXNlIG9mIGEgZ3JvdXAgY29va2llIGlmIHRoZSBzdWJrZXkgaXMgcGFz
c2VkDQovL2tleSA6IG5hbWUgb2YgdGhlIGNvb2tpZQ0KLy92YWwgOiB2YWx1ZSBv
ZiB0aGUgY29va2llDQovL3N1YmtleSA6IHN1YiBrZXkgbmFtZSBvZiBhIGtleTp2
YWx1ZSBwYWlyIGluIGEgZ3JvdXAgY29va2llDQovL25vcGVyc2lzdCA6IHRlbGxz
IHRoZSBjb29raWUgdG8gbWFrZSBpdCBhIG5vbiBwZXJzaXN0YW50IHZhbHVlDQpm
dW5jdGlvbiBzZXRjb29raWV2YWwoa2V5LCB2YWwsIHN1YmtleSwgbm9wZXJzaXN0
KSB7DQogICAgaWYgKCFrZXkpIHJldHVybjsNCg0KICAgIHZhciBjdiwgY3MgPSAn
JzsNCg0KICAgIGlmICghbm9wZXJzaXN0KSB7DQogICAgICAgIHZhciBkID0gbmV3
IERhdGUoKTsNCiAgICAgICAgY3MgKz0gJzsgZXhwaXJlcz0nICsgZC50b0dNVFN0
cmluZyhkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIDEpKTsNCiAgICB9
DQoNCiAgICB2YXIgbGQgPSBkb2N1bWVudC5kb21haW47DQogICAgaWYgKCh0eXBl
b2YgKGdDb29raWVEb21haW4pICE9ICd1bmRlZmluZWQnKSAmJiAoZ0Nvb2tpZURv
bWFpbiAhPSBudWxsKSAmJiAoZ0Nvb2tpZURvbWFpbiAhPSAnJykpIHsgbGQgPSBn
Q29va2llRG9tYWluOyB9DQogICAgaWYgKGxkLmluZGV4T2YoIi5jb20iKSA+IC0x
KSBjcyArPSAnOyBEb21haW49JyArIGxkOw0KDQogICAgY3YgPSBmZXRjaGNvb2tp
ZXZhbChrZXkpOw0KDQogICAgaWYgKGN2ICYmIHN1YmtleSkgew0KICAgICAgICB2
YXIgY24sIHN1YmtleWZvdW5kID0gZmFsc2U7DQogICAgICAgIGlmIChjdi5pbmRl
eE9mKCc9JykgPiAtMSkgew0KICAgICAgICAgICAgdmFyIGNhID0gY3Yuc3BsaXQo
JyYnKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3Ro
OyBpKyspIHsNCiAgICAgICAgICAgICAgICBjbiA9IGNhW2ldLnN1YnN0cmluZygw
LCBjYVtpXS5pbmRleE9mKCc9JykpOw0KICAgICAgICAgICAgICAgIGlmIChjbi5j
aGFyQXQoMCkgPT0gJyAnKSBjbiA9IGNuLnN1YnN0cmluZygxLCBjbi5sZW5ndGgp
Ow0KICAgICAgICAgICAgICAgIGlmIChzdWJrZXkgPT09IGNuKSB7DQogICAgICAg
ICAgICAgICAgICAgIGNhW2ldID0gc3Via2V5ICsgJz0nICsgdmFsOw0KICAgICAg
ICAgICAgICAgICAgICBjdiA9IGNhLmpvaW4oJyYnKTsNCiAgICAgICAgICAgICAg
ICAgICAgc3Via2V5Zm91bmQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIGlmICghc3Via2V5Zm91bmQpIHsNCiAgICAgICAgICAgICAgICBpZiAo
Y2EubGVuZ3RoID4gMCkgY3YgKz0gJyYnOw0KICAgICAgICAgICAgICAgIGN2ICs9
IHN1YmtleSArICc9JyArIHZhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBl
bHNlIGN2ID0gc3Via2V5ICsgJz0nICsgdmFsOw0KICAgIH0NCiAgICBlbHNlIGlm
ICghY3YgJiYgc3Via2V5KSBjdiA9IHN1YmtleSArICc9JyArIHZhbDsNCiAgICBl
bHNlIGlmICghc3Via2V5KSBjdiA9IHZhbDsNCiAgICBlbHNlIHJldHVybjsNCg0K
ICAgIGRvY3VtZW50LmNvb2tpZSA9IGtleSArICc9JyArIGN2ICsgY3MgKyAnOyBw
YXRoPS8nOw0KfQ0KDQpmdW5jdGlvbiBmZXRjaGNvb2tpZXZhbChrZXksIHN1Ymtl
eSkgew0KICAgIGlmICgha2V5KSByZXR1cm4gJyc7DQoNCiAgICB2YXIgY24sIGN2
LCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOw0KICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgY24gPSBjYVtp
XS5zdWJzdHJpbmcoMCwgY2FbaV0uaW5kZXhPZignPScpKTsNCiAgICAgICAgaWYg
KGNuLmNoYXJBdCgwKSA9PSAnICcpIGNuID0gY24uc3Vic3RyaW5nKDEsIGNuLmxl
bmd0aCk7DQogICAgICAgIGlmIChrZXkgPT09IGNuKSB7DQogICAgICAgICAgICBj
diA9IGNhW2ldLnN1YnN0cmluZyhjYVtpXS5pbmRleE9mKCc9JykgKyAxLCBjYVtp
XS5sZW5ndGgpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICBpZiAoY3YgPT09IHVuZGVmaW5lZCB8fCBjdiA9PT0gbnVsbCkgew0K
ICAgICAgICByZXR1cm4gbnVsbDsNCiAgICB9DQoNCiAgICBpZiAoIXN1YmtleSkg
cmV0dXJuIGN2Ow0KDQogICAgY2EgPSBjdi5zcGxpdCgnJicpOw0KICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgY24gPSBj
YVtpXS5zdWJzdHJpbmcoMCwgY2FbaV0uaW5kZXhPZignPScpKTsNCiAgICAgICAg
aWYgKGNuLmNoYXJBdCgwKSA9PSAnICcpIGNuID0gY24uc3Vic3RyaW5nKDEsIGNu
Lmxlbmd0aCk7DQogICAgICAgIGlmIChzdWJrZXkgPT09IGNuKSByZXR1cm4gY2Fb
aV0uc3Vic3RyaW5nKGNhW2ldLmluZGV4T2YoJz0nKSArIDEsIGNhW2ldLmxlbmd0
aCk7DQogICAgfQ0KDQogICAgcmV0dXJuIG51bGw7DQp9DQoNCmZ1bmN0aW9uIG9u
SG90Zml4RXVsYUFjdGlvbihhcmcsIHVybCkgew0KICAgIHNldGNvb2tpZXZhbCgi
aG90Zml4RXVsYUNvb2tpZSIsIChhcmcgPT0gImFjY2VwdCIpID8gJzEnIDogJzAn
LCAnJywgZmFsc2UpOw0KICAgIGlmIChhcmcgPT0gImFjY2VwdCIpDQogICAgICAg
IGRvY3VtZW50LmZvcm1zWydmcm1Ib3RmaXhFdWxhJ10uc3VibWl0KCk7DQogICAg
ZWxzZQ0KICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsOw0KfQ0K
DQpmdW5jdGlvbiBtYWtlQWpheENhbGwoZnVuY3Rpb25OYW1lLCBkYXRhKSB7DQog
ICAgQWpheEdldCgnL0FqYXhEaXNwYXRjaGVyLmFzaHg/ZnVuYz0nICsgZnVuY3Rp
b25OYW1lICsgJyZkYXRhPScgKyBkYXRhLCBmdW5jdGlvbk5hbWUpOw0KfQ0KDQpm
dW5jdGlvbiBBamF4Q2FsbGJhY2tGdW5jKGZ1bmMsIGRhdGEpIHsNCiAgICBpZiAo
ZnVuYyA9PSAnTG9hZFJlbGF0ZWRUYWdzJykgew0KICAgICAgICBDYWxsYmFja19S
ZWxhdGVkVGFncyhkYXRhKTsNCiAgICB9DQogICAgZWxzZSBpZiAoZnVuYyA9PSAn
TG9hZFJlbGF0ZWRDb250ZW50Jykgew0KICAgICAgICBDYWxsYmFja19SZWxhdGVk
Q29udGVudChkYXRhKTsNCiAgICB9DQp9DQoNCkFqYXhHZXQgPSBmdW5jdGlvbiAo
dXJsLCBmdW5jdGlvbk5hbWUpIHsNCiAgICB0cnkgew0KICAgICAgICB2YXIgb2Jq
WG1sSHR0cFJlcSA9IG51bGw7DQoNCiAgICAgICAgaWYgKHdpbmRvdy5YTUxIdHRw
UmVxdWVzdCkgew0KICAgICAgICAgICAgb2JqWG1sSHR0cFJlcSA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKHdpbmRv
dy5BY3RpdmVYT2JqZWN0KSB7DQogICAgICAgICAgICBvYmpYbWxIdHRwUmVxID0g
bmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7DQogICAgICAgIH0N
CiAgICAgICAgdmFyIHJlc3BvbnNlOw0KDQogICAgICAgIGlmIChvYmpYbWxIdHRw
UmVxICYmIG9ialhtbEh0dHBSZXEgIT0gbnVsbCkgew0KICAgICAgICAgICAgb2Jq
WG1sSHR0cFJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOw0KICAgICAgICAgICAg
b2JqWG1sSHR0cFJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJDb25uZWN0aW9uIiwgImNs
b3NlIik7DQogICAgICAgICAgICBvYmpYbWxIdHRwUmVxLnNldFJlcXVlc3RIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3BsYWluIik7DQogICAgICAgICAgICBv
YmpYbWxIdHRwUmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsN
Cg0KICAgICAgICAgICAgICAgIGlmIChvYmpYbWxIdHRwUmVxLnJlYWR5U3RhdGUg
PT0gNCAmJiBvYmpYbWxIdHRwUmVxLnN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAg
ICAgICAgICAgICAgQWpheENhbGxiYWNrRnVuYyhmdW5jdGlvbk5hbWUsIG9ialht
bEh0dHBSZXEucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBvYmpYbWxIdHRwUmVxLnNlbmQobnVsbCk7
DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICByZXR1cm4g
bnVsbDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBjYXRjaCAoZSkgew0KICAgICAg
ICByZXR1cm4gbnVsbDsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIENhbGxiYWNrX1Jl
bGF0ZWRUYWdzKGRhdGEpIHsNCiAgICBpZiAoZGF0YSAmJiBkYXRhICE9IG51bGwp
IHsNCiAgICAgICAgdmFyIGlubmVyZGl2ID0gJCgnI2RpdlJlbFRhZ3MnKS5nZXQo
MCk7DQogICAgICAgIGlmIChpbm5lcmRpdikgew0KICAgICAgICAgICAgaW5uZXJk
aXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgICAgICAgICBpbm5lcmRp
di5pbm5lckhUTUwgPSBkYXRhOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5j
dGlvbiBDYWxsYmFja19SZWxhdGVkQ29udGVudChkYXRhKSB7DQogICAgaWYgKGRh
dGEgJiYgZGF0YSAhPSBudWxsKSB7DQogICAgICAgIHZhciBpbm5lcmRpdiA9ICQo
JyNkaXZSZWxDb250ZW50JykuZ2V0KDApOw0KICAgICAgICBpZiAoaW5uZXJkaXYp
IHsNCiAgICAgICAgICAgIGlubmVyZGl2LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2si
Ow0KICAgICAgICAgICAgaW5uZXJkaXYuaW5uZXJIVE1MID0gZGF0YTsNCiAgICAg
ICAgfQ0KICAgIH0NCn0NCg0KDQpmdW5jdGlvbiBBZGR0b1NvY2lhbE1lZGlhKFNv
Y2lhbEJyYW5kLCBTb2NpYWxNZWRpYUlkLCB1cmwsIHRpdGxlKSB7DQogICAgdmFy
IFBhZ2VVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsNCiAgICB2YXIgUGFnZVRp
dGxlID0gd2luZG93LmRvY3VtZW50LnRpdGxlOw0KICAgIExvZ1NvY2lhbE1lZGlh
KFNvY2lhbEJyYW5kLCBQYWdlVVJMLCBTb2NpYWxNZWRpYUlkKTsNCiAgICB3aW5k
b3cub3Blbih1cmwgKyBlbmNvZGVVUklDb21wb25lbnQoUGFnZVVSTCkgKyB0aXRs
ZSArIChqUXVlcnkudHJpbSh0aXRsZSkubGVuZ3RoID09IDAgPyAiIiA6IGVuY29k
ZVVSSUNvbXBvbmVudChQYWdlVGl0bGUpKSwgIndpbiIpOw0KfQ0KDQpmdW5jdGlv
biBMb2dTb2NpYWxNZWRpYShCcmFuZE5hbWUsIFBhZ2VVUkwsIFNvY2lhbE1lZGlh
SWQpIHsNCiAgICB2YXIgUmVwb3J0aW5nU3RyID0gIiI7DQogICAgdmFyIFJlcXVl
c3REYXRlID0gbmV3IERhdGUoKTsNCiAgICB2YXIgSG91cklEUyA9IFJlcXVlc3RE
YXRlLmdldEhvdXJzKCk7DQogICAgdmFyIE1pbnV0ZUlEUyA9IFJlcXVlc3REYXRl
LmdldE1pbnV0ZXMoKTsNCiAgICB2YXIgUmVxdWVzdERhdGVTID0gUmVxdWVzdERh
dGUudG9EYXRlU3RyaW5nKCk7DQogICAgUmVwb3J0aW5nU3RyID0gIlNTSUQ9MjUm
UmVxdWVzdERhdGU9IiArIFJlcXVlc3REYXRlUyArDQogICAgIiZIb3VySUQ9IiAr
IEhvdXJJRFMgKw0KICAgICImTWludXRlSUQ9IiArIE1pbnV0ZUlEUyArDQogICAg
IiZGbGV4VmFsdWUxPSIgKyBCcmFuZE5hbWUgKw0KICAgICImUGFnZVVybD0iICsg
UGFnZVVSTCArDQogICAgIiZGbGV4aWQ9MSZGbGV4dmFsdWUyPSIgKyBTb2NpYWxN
ZWRpYUlkICsNCiAgICAiJkZsZXh2YWx1ZTM9IiArIFN0YXRzRG90TmV0LmNvbnRl
bnRJZCArDQogICAgIiZTaXRlQ3VsdHVyZT0iICsgU3RhdHNEb3ROZXQuU2l0ZUN1
bHR1cmUgKw0KICAgICImQ29udGVudEN1bHR1cmU9IiArIFN0YXRzRG90TmV0LkNv
bnRlbnRDdWx0dXJlOw0KICAgICQuYWpheCh7IHVybDogIi9sdHMvZGVmYXVsdC5h
c3B4IiwgZGF0YTogUmVwb3J0aW5nU3RyIH0pOw0KfQ0KDQoNCg0KZnVuY3Rpb24g
SXNDaGlsZHJlbih0YXJnZXRFbCwgcGFyZW50RWwsIG5lc3RpbmdMaW1pdCkgew0K
ICAgIGlmICghdGFyZ2V0RWwpIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IH0NCiAgICB2YXIgaXNDaGlsZEVsZW1lbnQgPSBmYWxzZTsNCiAgICBpZiAoIW5l
c3RpbmdMaW1pdCkNCiAgICAgICAgbmVzdGluZ0xpbWl0ID0gNjsNCg0KICAgIHZh
ciBwYXJlbnQgPSB0YXJnZXRFbC5wYXJlbnROb2RlOw0KICAgIHZhciBsZXZlbCA9
IDA7DQogICAgdmFyIGlzU2VhcmNoRWxlbWVudCA9IGZhbHNlOw0KICAgIHdoaWxl
IChwYXJlbnQgJiYgbmVzdGluZ0xpbWl0ID4gbGV2ZWwpIHsNCiAgICAgICAgaWYg
KHBhcmVudCA9PSBwYXJlbnRFbCkgew0KICAgICAgICAgICAgaXNDaGlsZEVsZW1l
bnQgPSB0cnVlOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAg
ICAgcGFyZW50ID0gJChwYXJlbnQpLnBhcmVudCgpLmdldCgwKTsNCiAgICAgICAg
bGV2ZWwrKzsNCiAgICB9DQogICAgcmV0dXJuIGlzQ2hpbGRFbGVtZW50Ow0KfQ0K
DQpmdW5jdGlvbiBFbGVtZW50c0J5TmFtZSh0YWcsIG5hbWUpIHsNCiAgICB2YXIg
cmV0dXJucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKG5hbWUpOw0KICAg
IGlmIChyZXR1cm5zLmxlbmd0aCA+IDApIHJldHVybiByZXR1cm5zOw0KICAgIHJl
dHVybnMgPSBuZXcgQXJyYXkoKTsNCiAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKHRhZyk7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGlmIChlW2ldLmdldEF0dHJpYnV0ZSgi
bmFtZSIpID09IG5hbWUpIHsNCiAgICAgICAgICAgIHJldHVybnNbcmV0dXJucy5s
ZW5ndGhdID0gZVtpXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gcmV0
dXJuczsNCn0NCg0KJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24gKCkgew0KICAgIGlm
ICgkKCIjQVRMaXN0IikuZ2V0KDApKSB7DQogICAgICAgICQoIiNBVExpc3QiKS5j
c3MoImRpc3BsYXkiLCAibm9uZSIpOw0KICAgICAgICAkKCIjQVRMaXN0IikuY3Nz
KCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpOw0KICAgIH0NCn0pDQoNCmZ1bmN0aW9u
IERpc3BsYXlBVExpc3QoKSB7DQogICAgaWYgKCQoIiNBVExpc3QiKS5jc3MoImRp
c3BsYXkiKS50b0xvd2VyQ2FzZSgpID09ICJub25lIikgew0KICAgICAgICBpZiAo
JCgiI3RoaW5Db2x1bW4iKS5nZXQoMCkpDQogICAgICAgICAgICAkKCIjdGhpbkNv
bHVtbiIpLmNzcygib3ZlcmZsb3ciLCAidmlzaWJsZSIpOw0KICAgICAgICAkKCIj
QVRMaXN0IikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7DQogICAgICAgICQoZG9j
dW1lbnQpLmJpbmQoJ2NsaWNrLkFydGljbGVUcmFuc2xhdGlvbicsIGZ1bmN0aW9u
IChldmVudCkgeyBBcnRpY2xlVHJhbnNsYXRpb25DbGlja0hhbmRsZShldmVudCk7
IH0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgICQoIiNBVExpc3QiKS5jc3MoImRp
c3BsYXkiLCAibm9uZSIpOw0KICAgICAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2Ns
aWNrLkFydGljbGVUcmFuc2xhdGlvbicpOw0KICAgIH0NCg0KfQ0KDQpmdW5jdGlv
biBBcnRpY2xlVHJhbnNsYXRpb25DbGlja0hhbmRsZShldmVudCkgew0KICAgIGlm
ICghZXZlbnQgfHwgIWV2ZW50LnRhcmdldCkgew0KICAgICAgICByZXR1cm47DQog
ICAgfQ0KICAgIHZhciB0YXJnZXRFbCA9IGV2ZW50LnRhcmdldDsNCiAgICB2YXIg
Q29udGFpbmVyID0gJCgnI0FydGljbGVUcmFuc2xhdGlvbnMnKS5nZXQoMCk7DQog
ICAgaWYgKENvbnRhaW5lciA9PSB0YXJnZXRFbCB8fCBJc0NoaWxkcmVuKHRhcmdl
dEVsLCBDb250YWluZXIpKSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAg
JCgiI0FUTGlzdCIpLmNzcygiZGlzcGxheSIsICJub25lIik7DQogICAgJChkb2N1
bWVudCkudW5iaW5kKCdjbGljay5BcnRpY2xlVHJhbnNsYXRpb24nKTsNCn0NCg0K
ZnVuY3Rpb24gQVRDbGljayhDb250YWluZXJJZCwgb2JqKSB7DQogICAgb2JqLmlk
ID0gIktCTGFuZ0xpc3RSZWRpcmVjdCI7DQogICAgaWYgKCFTdGF0c0RvdE5ldC5k
aXNhYmxlZCkgeyBTdGF0c0RvdE5ldC5leGl0Q29udGFpbmVySWQgPSBDb250YWlu
ZXJJZDsgfQ0KfQ0KDQoNCmZ1bmN0aW9uIGdldFN1Yk1lbnVIYW5kbGVOYW1lKG9i
aikgew0KICAgIHJldHVybiAob2JqLmlkID8gb2JqLmlkIDogJ2Ryb3Bkb3dubWVu
dScpOw0KfQ0KDQpmdW5jdGlvbiBiaW5kTWVudUV2ZW50KG9iaikgew0KICAgIGlm
ICghb2JqLm1lbnVFdmVudEJvdW5kKSB7DQogICAgICAgIG9iai5tZW51RXZlbnRC
b3VuZCA9IHRydWU7DQogICAgICAgICQob2JqKS5ob3ZlcigNCiAgICAgICAgbnVs
bCwgLy8gV2Ugd2lsbCBoYW5kbGUgbW91c2VvdmVyIGRpcmVjdGx5Lg0KICAgICAg
ICBmdW5jdGlvbiAoKSB7IGhpZGVTdWJNZW51KG9iaik7IH0pOw0KDQogICAgICAg
ICQob2JqKS5iaW5kKCdrZXlkb3duJywNCiAgICAgICAgZnVuY3Rpb24gKGV2ZW50
KSB7DQogICAgICAgICAgICAvLyBlc2MNCiAgICAgICAgICAgIGlmIChldmVudC5r
ZXlDb2RlID09PSAyNykgew0KICAgICAgICAgICAgICAgICQob2JqKS5maW5kKCdh
I21lbnVib2R5JykuZm9jdXMoKTsNCiAgICAgICAgICAgICAgICBoaWRlU3ViTWVu
dShvYmopOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAg
aWYgKCFvYmoubWVudUdsb2JhbFRyYWNrRXZlbnRCb3VuZCkgew0KICAgICAgICBv
YmoubWVudUdsb2JhbFRyYWNrRXZlbnRCb3VuZCA9IHRydWU7DQogICAgICAgICQo
ZG9jdW1lbnQpLmJpbmQoJ2NsaWNrLicgKyBnZXRTdWJNZW51SGFuZGxlTmFtZShv
YmopLCBmdW5jdGlvbiAoZXZlbnQpIHsgaGlkZVN1Yk1lbnVIYW5kbGUoZXZlbnQs
IG9iaik7IH0pOw0KICAgICAgICAkKGRvY3VtZW50KS5iaW5kKCdmb2N1c2luLicg
KyBnZXRTdWJNZW51SGFuZGxlTmFtZShvYmopLCBmdW5jdGlvbiAoZXZlbnQpIHsg
aGlkZVN1Yk1lbnVIYW5kbGUoZXZlbnQsIG9iaik7IH0pOw0KICAgIH0NCn0NCg0K
ZnVuY3Rpb24gZGlzcGxheVN1Yk1lbnUob2JqKSB7DQogICAgJChvYmopLmZpbmQo
JyNkcm9wZG93bm1lbnUnKS5zaG93KCk7DQogICAgYmluZE1lbnVFdmVudChvYmop
OyAvLyBkbyBldmVudCBiaW5kaW5nIGluIGV2ZW50IGhhbmRsZXIsIHNvIHdlIGNh
biBnZXQgdGhlIGV2ZW50IG9iamVjdCB3aXRob3V0IGFueSBraW5kIG9mIGlkIHF1
ZXJ5Lg0KfQ0KDQpmdW5jdGlvbiBoaWRlU3ViTWVudShvYmopIHsNCiAgICAkKG9i
aikuZmluZCgnI2Ryb3Bkb3dubWVudScpLmhpZGUoKTsNCiAgICAkKGRvY3VtZW50
KS51bmJpbmQoJ2NsaWNrLicgKyBnZXRTdWJNZW51SGFuZGxlTmFtZShvYmopKTsN
CiAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2ZvY3VzaW4uJyArIGdldFN1Yk1lbnVI
YW5kbGVOYW1lKG9iaikpOw0KICAgIG9iai5tZW51R2xvYmFsVHJhY2tFdmVudEJv
dW5kID0gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIHRvZ2dsZVN1Yk1lbnUob2JqKSB7
DQogICAgaWYgKCQob2JqKS5maW5kKCcjZHJvcGRvd25tZW51JykuaXMoJzp2aXNp
YmxlJykpIHsNCiAgICAgICAgaGlkZVN1Yk1lbnUob2JqKTsNCiAgICB9DQogICAg
ZWxzZSB7DQogICAgICAgIGRpc3BsYXlTdWJNZW51KG9iaik7DQogICAgfQ0KfQ0K
DQpmdW5jdGlvbiB0cmFja091dHNpZGVFdmVudChldmVudCwgdGFyZ2V0LCB0cmln
Z2VyRm4pIHsNCiAgICBpZiAoIWV2ZW50IHx8ICFldmVudC50YXJnZXQpIHsNCiAg
ICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIHZhciBldmVudFRhcmdldEVsID0g
ZXZlbnQudGFyZ2V0Ow0KICAgIGlmICghKGpRdWVyeS5jb250YWlucyh0YXJnZXQs
IGV2ZW50VGFyZ2V0RWwpIHx8IGV2ZW50VGFyZ2V0RWwgPT0gdGFyZ2V0KSkgew0K
ICAgICAgICB0cmlnZ2VyRm4odGFyZ2V0KTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9u
IGhpZGVTdWJNZW51SGFuZGxlKGV2ZW50LCBtZW51KSB7DQogICAgdHJhY2tPdXRz
aWRlRXZlbnQoZXZlbnQsIG1lbnUsIGZ1bmN0aW9uIChvYmopIHsgaGlkZVN1Yk1l
bnUob2JqKTsgfSk7DQp9DQoNCmZ1bmN0aW9uIHJlY29yZExpbmtDbGljayhmbGV4
VmFsdWVJZCwgaWQpIHsNCiAgICBpZiAoaWQpIHsNCiAgICAgICAgdmFyIHZhbHVl
ID0gZXZhbCgnU3RhdHNEb3ROZXQuZmxleFZhbHVlJyArIGZsZXhWYWx1ZUlkKTsN
CiAgICAgICAgdmFsdWUgPSAkLnRyaW0odmFsdWUpOw0KICAgICAgICBpZiAoIXZh
bHVlKSB7DQogICAgICAgICAgICB2YWx1ZSA9IGlkOw0KICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgdmFyIF92YWx1ZSA9ICd8JyArIHZhbHVlICsgJ3wnOw0K
ICAgICAgICAgICAgaWYgKF92YWx1ZS5pbmRleE9mKCd8JyArIGlkICsgJ3wnKSA8
IDApIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgJ3wnICsgaWQ7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZXZhbCgnU3RhdHNE
b3ROZXQuZmxleFZhbHVlJyArIGZsZXhWYWx1ZUlkICsgJyA9IHZhbHVlJyk7DQog
ICAgfQ0KfQ0KDQpmdW5jdGlvbiBoYW5kbGVGaXhpdEZvb3RlckNsaWNrKGV2ZW50
LCBmbGV4VmFsdWVJZCkgew0KICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnRhcmdl
dCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIHZhciBfdGFyZ2V0ID0g
ZXZlbnQudGFyZ2V0Ow0KICAgIGlmICgkKF90YXJnZXQpLmlzKCdhJykpIHsNCiAg
ICAgICAgdmFyIGlkID0gJChfdGFyZ2V0KS5hdHRyKCdocmVmJyk7DQogICAgICAg
IHJlY29yZExpbmtDbGljayhmbGV4VmFsdWVJZCwgaWQpOw0KICAgIH0NCn0NCg0K
ZnVuY3Rpb24gZ2VuZXJhdGVXZWRjc0RhdGEoKSB7DQogICAgdmFyIGNvb2tpZUtl
eSA9ICJ3ZWRjc2luYyI7DQogICAgdmFyIGNvb2tpZUtleUN1ciA9ICdNUzAnOw0K
ICAgIHZhciBpbmMgPSBmZXRjaGNvb2tpZXZhbChjb29raWVLZXkpOw0KICAgIHZh
ciBjdXIgPSBmZXRjaGNvb2tpZXZhbChjb29raWVLZXlDdXIpOw0KICAgIGlmIChj
dXIgPT0gbnVsbCB8fCAhaW5jKSB7DQogICAgICAgIGluYyA9IDA7DQogICAgfQ0K
ICAgIGluYyA9IHBhcnNlSW50KGluYyk7DQogICAgaW5jICs9IDE7DQogICAgc2V0
Y29va2lldmFsKGNvb2tpZUtleSwgaW5jLCBudWxsLCBmYWxzZSk7DQogICAgdmFy
IHNlc3Npb25JZCA9IGZldGNoY29va2lldmFsKCJHc2Z4U2Vzc2lvbkNvb2tpZSIp
Ow0KICAgIHZhciBtZXRhcyA9IFtidWlsZE1ldGEoImV2ZW50c2Vxbm8iLCBpbmMp
LA0KICAgICBidWlsZE1ldGEoIlNzVmVyc2lvbiIsIFN0YXRzRG90TmV0LlNzVmVy
c2lvbiksDQogICAgIGJ1aWxkTWV0YSgiRXZlbnRDb2xsZWN0aW9uSWQiLCBTdGF0
c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCksDQogICAgIGJ1aWxkTWV0YSgiT3B0
aW9uQ29sbGVjdGlvbklkIiwgU3RhdHNEb3ROZXQuT3B0aW9uQ29sbGVjdGlvbklk
KSwNCiAgICAgYnVpbGRNZXRhKCJDb250ZW50UHJvcGVydGllcyIsIFN0YXRzRG90
TmV0LkNvbnRlbnRQcm9wZXJ0aWVzKSwNCiAgICAgYnVpbGRNZXRhKCJDb250ZW50
TGNpZCIsIFN0YXRzRG90TmV0LmNvbnRlbnRMbiksDQogICAgIGJ1aWxkTWV0YSgi
QnJhbmRJZCIsIFN0YXRzRG90TmV0LnNpdGVCcmFuZElkKSwNCiAgICAgYnVpbGRN
ZXRhKCJJbnRlbmRlZDQwNFVybCIsIFN0YXRzRG90TmV0LkluNDA0VXJsKSwNCiAg
ICAgYnVpbGRNZXRhKCJSZWZlcnJlckNvbnRlbnRUeXBlIiwgU3RhdHNEb3ROZXQu
cmN0eXBlKSwNCiAgICAgYnVpbGRNZXRhKCJSZWZlcnJlckNvbnRlbnRMY2lkIiwg
U3RhdHNEb3ROZXQucmNsY2lkKSwNCiAgICAgYnVpbGRNZXRhKCJSZWZlcnJlckNv
bnRlbnRDdWx0dXJlIiwgU3RhdHNEb3ROZXQucmNjdWx0dXJlKSwNCiAgICAgYnVp
bGRNZXRhKCJSZWZlcnJlckNvbnRlbnRJZCIsIFN0YXRzRG90TmV0LnJjaWQpLA0K
ICAgICBidWlsZE1ldGEoIlJlZmVycmVyRXhpdExpbmtJRCIsIFN0YXRzRG90TmV0
LnJleGxpZCksDQogICAgIGJ1aWxkTWV0YSgiUmVmZXJyZXJFeGl0Q29udGFpbmVy
SUQiLCBTdGF0c0RvdE5ldC5yZXhjaWQpLA0KICAgICBidWlsZE1ldGEoIlNlc3Np
b25JZCIsIHNlc3Npb25JZCldLmpvaW4oIiIpOw0KICAgICQobWV0YXMpLmFwcGVu
ZFRvKCQoJ2hlYWQnKSk7DQp9DQoNCnZhciBidWlsZE1ldGEgPSBmdW5jdGlvbiAo
bmFtZSwgY29udGVudCkgew0KICAgIHJldHVybiAoY29udGVudCA9PT0gdW5kZWZp
bmVkIHx8IGNvbnRlbnQgPT09IG51bGwpID8gJycgOiAnPG1ldGEgbmFtZT0ibXMu
JyArIG5hbWUgKyAnIiBjb250ZW50PSInICsgY29udGVudCArICciIC8+JzsNCn07
DQoNCiQoZnVuY3Rpb24gKCkgew0KICAgICQoJy5TaGFyZUJ1dHRvbicpLmNzcygi
ZGlzcGxheSIsICJibG9jayIpOw0KICAgIHZhciBzbGlkZVVwTWVkaWFDb250ZW50
ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAkKCIuTWVkaWFDb250ZW50IHVsIiku
c2xpZGVVcCgiZmFzdCIpOw0KICAgIH0NCiAgICAkKCcuU2hhcmVCdXR0b24nKS5j
bGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICQoIi5NZWRpYUNvbnRlbnQgdWwi
KS5zbGlkZVRvZ2dsZSgiZmFzdCIpOw0KICAgICAgICByZXR1cm4gKGZhbHNlKTsN
CiAgICB9KTsNCiAgICAkKGRvY3VtZW50KS5iaW5kKCJjbGljayIsIHNsaWRlVXBN
ZWRpYUNvbnRlbnQpOw0KICAgICQoIi5NZWRpYUNvbnRlbnQiKS51bmJpbmQoImNs
aWNrIiwgc2xpZGVVcE1lZGlhQ29udGVudCk7DQp9KTsNCg0KdmFyIEdTUyA9IEdT
UyB8fCB7fTsgR1NTLlV0aWxpdHkgPSBHU1MuVXRpbGl0eSB8fCB7fTsNCihmdW5j
dGlvbiAoJCkgew0KICAgIGZ1bmN0aW9uIFVSSShzdHIpIHsNCiAgICAgICAgaWYg
KCFzdHIpIHsNCiAgICAgICAgICAgIHN0ciA9ICIiOw0KICAgICAgICB9DQogICAg
ICAgIC8vIEJhc2VkIG9uIHRoZSByZWdleCBpbiBSRkMyMzk2IEFwcGVuZGl4IEIu
DQogICAgICAgIHZhciBwYXJzZXIgPSAvXig/OihbXjpcLz9cI10rKTopPyg/Olwv
XC8oW15cLz9cI10qKSk/KFteP1wjXSopKD86XD8oW15cI10qKSk/KD86XCMoLiop
KT8vOw0KICAgICAgICB2YXIgcmVzdWx0ID0gc3RyLm1hdGNoKHBhcnNlcik7DQog
ICAgICAgIHRoaXMuc2NoZW1lID0gcmVzdWx0WzFdIHx8IG51bGw7DQogICAgICAg
IHRoaXMuYXV0aG9yaXR5ID0gcmVzdWx0WzJdIHx8IG51bGw7DQogICAgICAgIHRo
aXMucGF0aCA9IHJlc3VsdFszXSB8fCBudWxsOw0KICAgICAgICB0aGlzLnF1ZXJ5
ID0gcmVzdWx0WzRdIHx8IG51bGw7DQogICAgICAgIHRoaXMuZnJhZ21lbnQgPSBy
ZXN1bHRbNV0gfHwgbnVsbDsNCiAgICAgICAgdGhpcy51cmwgPSBzdHI7DQogICAg
ICAgIHRoaXMucXVlcnlTdHJpbmcgPSB7fTsNCg0KICAgICAgICAvL1RPRE86IHJl
dmlzZQ0KICAgICAgICBpZiAodGhpcy5xdWVyeSkgew0KICAgICAgICAgICAgdmFy
IHBhaXJzID0gdGhpcy5xdWVyeS5zcGxpdCgnJicpOw0KICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkrKykgew0KICAgICAgICAg
ICAgICAgIHZhciBwYWlyID0gcGFpcnNbaV0uc3BsaXQoJz0nKSwga2V5LCB2YWx1
ZTsNCiAgICAgICAgICAgICAgICBpZiAocGFpci5sZW5ndGggIT0gMikgeyBjb250
aW51ZTsgfQ0KICAgICAgICAgICAgICAgIGlmIChwYWlyWzFdID09ICcnKSB7IGNv
bnRpbnVlOyB9DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAg
ICAgICAga2V5ID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhaXJbMF0pLnRvTG93ZXJD
YXNlKCk7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29t
cG9uZW50KHBhaXJbMV0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBjYXRjaCAoZSkgew0KICAgICAgICAgICAgICAgICAgICAvL0JVR0JVRzog
V2hhdCB0aGlzICJjYXRjaCIgZm9yPw0KICAgICAgICAgICAgICAgICAgICBrZXkg
PSB1bmVzY2FwZShwYWlyWzBdKS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IHVuZXNjYXBlKHBhaXJbMV0pOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBpZiAodGhpcy5xdWVyeVN0cmluZ1trZXld
KSB7DQogICAgICAgICAgICAgICAgICAgIC8vVE9ETzogSlNPTiBmb3JtYXQNCiAg
ICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVN0cmluZ1trZXldICs9ICcsJyAr
IHZhbHVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNl
IHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVN0cmluZ1trZXldID0g
dmFsdWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9Ow0KDQogICAgICAgIHRoaXMubW9kaWZ5UXVlcnlJdGVtcyA9IGZ1bmN0aW9u
IChkYXRhKSB7DQogICAgICAgICAgICAkLmV4dGVuZCh0aGlzLnF1ZXJ5U3RyaW5n
LCBkYXRhKQ0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIFVSSS5wcm90b3R5cGUg
PSB7DQogICAgICAgIGNvbnN0cnVjdG9yOiBVUkksDQogICAgICAgIHRvU3RyaW5n
OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgc3RyID0gIiI7DQogICAg
ICAgICAgICBpZiAodGhpcy5zY2hlbWUpIHsNCiAgICAgICAgICAgICAgICBzdHIg
Kz0gdGhpcy5zY2hlbWUgKyAiOiI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBpZiAodGhpcy5hdXRob3JpdHkpIHsNCiAgICAgICAgICAgICAgICBzdHIgKz0g
Ii8vIiArIHRoaXMuYXV0aG9yaXR5Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgaWYgKHRoaXMucGF0aCkgew0KICAgICAgICAgICAgICAgIHN0ciArPSB0aGlz
LnBhdGg7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB0aGlzLnF1ZXJ5ID0g
JC5wYXJhbSh0aGlzLnF1ZXJ5U3RyaW5nKTsNCiAgICAgICAgICAgIGlmICh0aGlz
LnF1ZXJ5KSB7DQogICAgICAgICAgICAgICAgc3RyICs9ICI/IiArICQucGFyYW0o
dGhpcy5xdWVyeVN0cmluZyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBp
ZiAodGhpcy5mcmFnbWVudCkgew0KICAgICAgICAgICAgICAgIHN0ciArPSAiIyIg
KyB0aGlzLmZyYWdtZW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0
dXJuIHN0cjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIEdTUy5VdGlsaXR5LlVS
SSA9IFVSSTsNCg0KICAgIHZhciBiYWNrdXBQYXRoQXJyYXk7DQogICAgdmFyIGNu
dCA9IC0xOw0KICAgIHZhciBDaGVja0ltYWdlRXhpc3RlZCA9IGZ1bmN0aW9uIChl
bGVtZW50SUQsIHBhdGgpIHsNCiAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAg
IHVybDogcGF0aCwNCiAgICAgICAgICAgIHR5cGU6ICJIRUFEIiwNCiAgICAgICAg
ICAgIHByb2Nlc3NEYXRhOiBmYWxzZSwNCiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAkKCIjIiArIGVsZW1lbnRJRCku
YXR0cigic3JjIiwgcGF0aCk7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
c3RhdHVzQ29kZTogew0KICAgICAgICAgICAgICAgIDQwNDogZnVuY3Rpb24gKCkg
ew0KICAgICAgICAgICAgICAgICAgICBpZiAoY250ID09PSAoYmFja3VwUGF0aEFy
cmF5Lmxlbmd0aCAtIDEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCIj
IiArIGVsZW1lbnRJRCkucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgY250ID0gY250ICsgMTsNCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tJ
bWFnZUV4aXN0ZWQoZWxlbWVudElELCBiYWNrdXBQYXRoQXJyYXlbY250XSk7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAg
ICB9DQoNCiAgICBHU1MuVXRpbGl0eS5TZXRJbWFnZVNyYyA9IGZ1bmN0aW9uIChl
bGVtZW50SUQsIGJhY2t1cFBhdGhMaXN0LCBkZWZhdWx0UGF0aCkgew0KICAgICAg
ICAkKCcuLnBhZ2VUaXRsZSBpbWcnKS5jc3MoImRpc3BsYXkiLCAiYmxvY2siKTsN
CiAgICAgICAgYmFja3VwUGF0aEFycmF5ID0gYmFja3VwUGF0aExpc3Quc3BsaXQo
InwiKTsNCiAgICAgICAgQ2hlY2tJbWFnZUV4aXN0ZWQoZWxlbWVudElELCBkZWZh
dWx0UGF0aCk7DQogICAgfTsNCg0KICAgIEdTUy5VdGlsaXR5LkRpc3BsYXlTc2JB
ZCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIG11aWQgPSBmZXRjaGNvb2tp
ZXZhbCgiTVVJRCIpOw0KICAgICAgICBpZiAoIW11aWQpIHsNCiAgICAgICAgICAg
IHJldHVybjsgICANCiAgICAgICAgfQ0KICAgICAgICAkKGRvY3VtZW50KS5yZWFk
eSgNCiAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgaXNTbWFsbE1l
ZGl1bUJ1c2luZXNzKG11aWQsIGZ1bmN0aW9uKCkgeyAkKCIjZGl2U3NiQWRDb250
ZW50Iikuc2hvdygpOyB9KTsNCiAgICAgICAgfSk7DQogICAgfTsNCg0KICAgIEdT
Uy5VdGlsaXR5LlRyeVJlZGlyZWN0VG9Tc2IgPSBmdW5jdGlvbiAodXJsKSB7DQog
ICAgICAgIHZhciBzc2JWaXNpdGVkID0gZmV0Y2hjb29raWV2YWwoInNzYnZpc2l0
ZWQiKTsNCiAgICAgICAgdmFyIHNzYlJlbWluZGVkID0gZmV0Y2hjb29raWV2YWwo
InNzYnJlbWluZGVyIik7DQogICAgICAgIHZhciBtdWlkID0gZmV0Y2hjb29raWV2
YWwoIk1VSUQiKTsNCiAgICAgICAgaWYgKHNzYlZpc2l0ZWQgPT09IG51bGwgJiYg
c3NiUmVtaW5kZWQgPT09IG51bGwgJiYgbXVpZCkgew0KICAgICAgICAgICAgaXNT
bWFsbE1lZGl1bUJ1c2luZXNzKG11aWQsIGZ1bmN0aW9uKCkgeyBzZWxmLmxvY2F0
aW9uID0gdXJsOyB9KTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICB2YXIgaXNT
bWFsbE1lZGl1bUJ1c2luZXNzID0gZnVuY3Rpb24obXVpZCwgY2FsbGJhY2spIHsN
CiAgICAgICAgJC5nZXQoIi9jb250ZW50L09wdFNlcnZpY2UuYXNoeCIsIG51bGws
DQogICAgICAgICAgICAgICAgZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAg
ICAgICAgICAgbG9nU3NiSW5mbyhtdWlkLCBkYXRhKTsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbnRhaW5WYWx1ZShkYXRhLCAiLCIsICJJc1NtYWxsTWVkaXVt
QnVzaW5lc3MiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0K
ICAgIH07DQoNCiAgICB2YXIgY29udGFpblZhbHVlID0gZnVuY3Rpb24gKGxvbmdT
dHJpbmcsIHNlcGFyYXRvciwgdmFsdWUpIHsNCiAgICAgICAgdmFyIGxpc3QgPSBs
b25nU3RyaW5nLnNwbGl0KHNlcGFyYXRvciksIHJlc3VsdCA9IGZhbHNlLCBpOw0K
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkgKz0gMSkgew0K
ICAgICAgICAgICAgaWYgKGxpc3RbaV0gPT09IHZhbHVlKSB7DQogICAgICAgICAg
ICAgICAgcmVzdWx0ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0K
ICAgIH07DQoNCiAgICB2YXIgbG9nU3NiSW5mbyA9IGZ1bmN0aW9uKG11aWQsIHR5
cGVzKSB7DQogICAgICAgIHZhciByZXF1ZXN0RGF0ZSA9IG5ldyBEYXRlKCk7DQog
ICAgICAgIHZhciByZXF1ZXN0RGF0ZVMgPSByZXF1ZXN0RGF0ZS50b0RhdGVTdHJp
bmcoKTsNCiAgICAgICAgdmFyIHJlcG9ydGluZ1N0ciA9ICJTU0lEPTI1JlJlcXVl
c3REYXRlPSIgKyByZXF1ZXN0RGF0ZVMgKw0KICAgICAgICAgICAgIiZVcmw9IiAr
IGVuY29kZVVSSUNvbXBvbmVudChTdGF0c0RvdE5ldC51cmwpICsNCiAgICAgICAg
ICAgICAgICAiJkZsZXhpZD0xJkZsZXh2YWx1ZTI9U1NCT1BUIiArDQogICAgICAg
ICAgICAgICAgICAgICImRmxleHZhbHVlMz0iICsgbXVpZCArDQogICAgICAgICAg
ICAgICAgICAgICAgICAiJkZsZXh2YWx1ZTQ9IiArIHR5cGVzICsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJlNpdGVDdWx0dXJlPSIgKyBTdGF0c0RvdE5l
dC5TaXRlQ3VsdHVyZSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICImQ29udGVudEN1bHR1cmU9IiArIFN0YXRzRG90TmV0LkNvbnRlbnRDdWx0dXJl
ICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICImQ29udGVu
dElEPSIgKyBTdGF0c0RvdE5ldC5jb250ZW50SWQgKw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICImQ29udGVudFR5cGU9IiArIFN0YXRz
RG90TmV0LmNvbnRlbnRUeXBlICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiZBY3RpdmVEd2VsbFRpbWU9IiArIFN0YXRzRG90
TmV0LmFjdGl2ZUR3ZWxsVGltZSArDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJkV2ZW50U2VxTm89IiArIFN0YXRzRG90
TmV0LmV2ZW50U2VxTm87DQogICAgICAgICQuYWpheCh7IHVybDogIi9sdHMvZGVm
YXVsdC5hc3B4IiwgZGF0YTogcmVwb3J0aW5nU3RyIH0pOw0KICAgIH07DQoNCn0g
KGpRdWVyeSkpOw0KDQo=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=survey.js
Content-Type: application/x-javascript; charset=utf-8; name=survey.js
Content-Location: http://support.microsoft.com/common/script/fx/survey.js?76
Content-Transfer-Encoding: Base64
aWYgKCF3aW5kb3cuTVMpDQp7DQoJd2luZG93Lk1TID0ge307DQp9DQoNCmlmICgh
TVMuU3VwcG9ydCkNCnsNCglNUy5TdXBwb3J0ID0ge307DQp9DQoNCmlmICghTVMu
U3VwcG9ydC5GbXMpDQp7DQoJTVMuU3VwcG9ydC5GbXMgPSB7fTsNCn0NCg0KaWYg
KCFNUy5TdXBwb3J0LkZtcy5TdXJ2ZXkpDQp7DQoJTVMuU3VwcG9ydC5GbXMuVXRp
bHMgPQ0KCXsNCgkJZmluZENoaWxkTm9kZXM6IGZ1bmN0aW9uIChwYXJlbnQsIGV2
YWx1YXRvcikNCgkJew0KCQkJdmFyIGVsZW1lbnRzID0gW107DQoNCgkJCWlmIChl
dmFsdWF0b3IocGFyZW50KSkNCgkJCXsNCgkJCQllbGVtZW50cy5wdXNoKHBhcmVu
dCk7DQoJCQl9DQoNCgkJCWlmIChwYXJlbnQgIT0gbnVsbCAmJiBwYXJlbnQuY2hp
bGROb2RlcykNCgkJCXsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVudC5j
aGlsZE5vZGVzLmxlbmd0aDsgKytpKQ0KCQkJCXsNCgkJCQkJdmFyIGVzID0gYXJn
dW1lbnRzLmNhbGxlZShwYXJlbnQuY2hpbGROb2Rlc1tpXSwgZXZhbHVhdG9yKTsN
CgkJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBlcy5sZW5ndGg7ICsraikNCgkJCQkJ
ew0KCQkJCQkJZWxlbWVudHMucHVzaChlc1tqXSk7DQoJCQkJCX0NCgkJCQl9DQoJ
CQl9DQoNCgkJCXJldHVybiBlbGVtZW50czsNCgkJfSwNCg0KCQlmaW5kRmlyc3RD
aGlsZDogZnVuY3Rpb24gKHBhcmVudCwgZXZhbHVhdG9yKQ0KCQl7DQoJCQlpZiAo
ZXZhbHVhdG9yKHBhcmVudCkpDQoJCQl7DQoJCQkJcmV0dXJuIHBhcmVudDsNCgkJ
CX0NCgkJCWVsc2UgaWYgKHBhcmVudCAhPSBudWxsICYmIHBhcmVudC5jaGlsZE5v
ZGVzKQ0KCQkJew0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBwYXJl
bnQuY2hpbGROb2Rlcy5sZW5ndGg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQl2YXIg
ZSA9IGFyZ3VtZW50cy5jYWxsZWUocGFyZW50LmNoaWxkTm9kZXNbaW5kZXhdLCBl
dmFsdWF0b3IpOw0KDQoJCQkJCWlmIChlICE9IG51bGwpDQoJCQkJCXsNCgkJCQkJ
CXJldHVybiBlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gbnVs
bDsNCgkJfSwNCg0KCQlnZXRDaGlsZEJ5SWQ6IGZ1bmN0aW9uIChwYXJlbnQsIGNo
aWxkSWQpDQoJCXsNCgkJCWlmIChwYXJlbnQgPT0gbnVsbCkNCgkJCXsNCgkJCQly
ZXR1cm4gbnVsbDsNCgkJCX0NCgkJCWVsc2UgaWYgKHBhcmVudC5nZXRFbGVtZW50
QnlJZCkNCgkJCXsNCgkJCQlyZXR1cm4gcGFyZW50LmdldEVsZW1lbnRCeUlkKGNo
aWxkSWQpOw0KCQkJfQ0KCQkJZWxzZSBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3Ip
DQoJCQl7DQoJCQkJcmV0dXJuIHBhcmVudC5xdWVyeVNlbGVjdG9yKCIjIiArIGNo
aWxkSWQpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXJldHVybiBNUy5TdXBw
b3J0LkZtcy5VdGlscy5maW5kRmlyc3RDaGlsZCgNCgkJCQkJcGFyZW50LA0KCQkJ
CQlmdW5jdGlvbiAocGFyZW50KQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gKHBhcmVu
dCAhPSBudWxsICYmIHBhcmVudC5pZCA9PSBjaGlsZElkKTsNCgkJCQkJfQ0KCQkJ
CSk7DQoJCQl9DQoNCgkJfSwNCg0KCQlnZXRDaGlsZEJ5QXR0cmlidXRlOiBmdW5j
dGlvbiAocGFyZW50LCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSkNCgkJ
ew0KCQkJaWYgKHBhcmVudC5xdWVyeVNlbGVjdG9yKQ0KCQkJew0KCQkJCXJldHVy
biBwYXJlbnQucXVlcnlTZWxlY3RvcigiWyIgKyBhdHRyaWJ1dGVOYW1lICsgIj0i
ICsgYXR0cmlidXRlVmFsdWUgKyAiXSIpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0K
CQkJCXJldHVybiBNUy5TdXBwb3J0LkZtcy5VdGlscy5maW5kRmlyc3RDaGlsZCgN
CgkJCQkJcGFyZW50LA0KCQkJCQlmdW5jdGlvbiAocGFyZW50KQ0KCQkJCQl7DQoJ
CQkJCQlyZXR1cm4gcGFyZW50ICE9IG51bGwgJiYgcGFyZW50LmdldEF0dHJpYnV0
ZSA/IChwYXJlbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID09IGF0dHJp
YnV0ZVZhbHVlKSA6IGZhbHNlOw0KCQkJCQl9DQoJCQkJKTsNCgkJCX0NCgkJfSwN
Cg0KCQlnZXRDaGlsZE5vZGVzQnlBdHRyaWJ1dGU6IGZ1bmN0aW9uIChwYXJlbnQs
IGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKQ0KCQl7DQoJCQlpZiAocGFy
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwpDQoJCQl7DQoJCQkJcmV0dXJuIHBhcmVudC5x
dWVyeVNlbGVjdG9yQWxsKCJbIiArIGF0dHJpYnV0ZU5hbWUgKyAiPSIgKyBhdHRy
aWJ1dGVWYWx1ZSArICJdIik7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcmV0
dXJuIE1TLlN1cHBvcnQuRm1zLlV0aWxzLmZpbmRDaGlsZE5vZGVzKA0KCQkJCQlw
YXJlbnQsDQoJCQkJCWZ1bmN0aW9uIChwYXJlbnQpDQoJCQkJCXsNCgkJCQkJCXJl
dHVybiBwYXJlbnQgIT0gbnVsbCAmJiBwYXJlbnQuZ2V0QXR0cmlidXRlID8gKHBh
cmVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgPT0gYXR0cmlidXRlVmFs
dWUpIDogZmFsc2U7DQoJCQkJCX0NCgkJCQkpOw0KCQkJfQ0KCQl9LA0KDQoJCWdl
dENoaWxkQnlOYW1lOiBmdW5jdGlvbiAocGFyZW50LCBuYW1lKQ0KCQl7DQoJCQly
ZXR1cm4gTVMuU3VwcG9ydC5GbXMuVXRpbHMuZ2V0Q2hpbGRCeUF0dHJpYnV0ZShw
YXJlbnQsICJuYW1lIiwgbmFtZSk7DQoJCX0sDQoNCgkJZ2V0Q2hpbGRCeVRhZ05h
bWU6IGZ1bmN0aW9uIChwYXJlbnQsIHRhZ05hbWUpDQoJCXsNCgkJCWlmIChwYXJl
bnQucXVlcnlTZWxlY3RvcikNCgkJCXsNCgkJCQlyZXR1cm4gcGFyZW50LnF1ZXJ5
U2VsZWN0b3IodGFnTmFtZSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcmV0
dXJuIE1TLlN1cHBvcnQuRm1zLlV0aWxzLmZpbmRGaXJzdENoaWxkKA0KCQkJCQlw
YXJlbnQsDQoJCQkJCWZ1bmN0aW9uIChlKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4g
ZSAmJiBlLnRhZ05hbWUgJiYgZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT0gdGFn
TmFtZS50b1VwcGVyQ2FzZSgpOw0KCQkJCQl9DQoJCQkJKTsNCgkJCX0NCgkJfSwN
Cg0KCQlnZXRDaGlsZE5vZGVzQnlDbGFzczogZnVuY3Rpb24gKHBhcmVudCwgY2xh
c3NOYW1lKQ0KCQl7DQoJCQlpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwpDQoJ
CQl7DQoJCQkJcmV0dXJuIHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIiArIGNs
YXNzTmFtZSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcmV0dXJuIE1TLlN1
cHBvcnQuRm1zLlV0aWxzLmZpbmRDaGlsZE5vZGVzKA0KCQkJCQlwYXJlbnQsDQoJ
CQkJCWZ1bmN0aW9uIChlKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gTVMuU3VwcG9y
dC5GbXMuVXRpbHMuaGFzQ2xhc3MoZSwgY2xhc3NOYW1lKTsNCgkJCQkJfQ0KCQkJ
CSk7DQoJCQl9DQoJCX0sDQoNCgkJaXNBbmNlc3Rvck9mOiBmdW5jdGlvbiAoYW5j
ZXN0b3IsIHBvc3Rlcml0eSkNCgkJew0KCQkJaWYgKGFuY2VzdG9yLmNvbnRhaW5z
KQ0KCQkJew0KCQkJCXJldHVybiBhbmNlc3Rvci5jb250YWlucyhwb3N0ZXJpdHkp
Ow0KCQkJfQ0KDQoJCQl2YXIgcGFyZW50ID0gcG9zdGVyaXR5Ow0KCQkJd2hpbGUg
KHBhcmVudCAhPSBudWxsKQ0KCQkJew0KCQkJCWlmIChhbmNlc3RvciA9PSBwYXJl
bnQpDQoJCQkJew0KCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQl9DQoJCQkJcGFyZW50
ID0gcGFyZW50LnBhcmVudE5vZGU7DQoJCQl9DQoNCgkJCXJldHVybiBmYWxzZTsN
CgkJfSwNCg0KCQlyYW5kb21pemU6IGZ1bmN0aW9uIChhcnJheSkNCgkJew0KCQkJ
dmFyIGxlbiA9IGFycmF5Lmxlbmd0aDsNCgkJCWZvciAodmFyIGkgPSAwOyBpIDwg
bGVuOyArK2kpDQoJCQl7DQoJCQkJdmFyIHggPSBNYXRoLmZsb29yKE1hdGgucmFu
ZG9tKCkgKiAobGVuIC0gaSkpICsgaTsNCg0KCQkJCWlmICh4ICE9IGkpDQoJCQkJ
ew0KCQkJCQl2YXIgdCA9IGFycmF5W2ldOw0KCQkJCQlhcnJheVtpXSA9IGFycmF5
W3hdOw0KCQkJCQlhcnJheVt4XSA9IHQ7DQoJCQkJfQ0KCQkJfQ0KCQl9LA0KDQoJ
CXN3YXBOb2RlOiBmdW5jdGlvbiAobm9kZTEsIG5vZGUyKQ0KCQl7DQoJCQlpZiAo
bm9kZTEuc3dhcE5vZGUpDQoJCQl7DQoJCQkJbm9kZTEuc3dhcE5vZGUobm9kZTIp
Ow0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXZhciBwYXJlbnQxID0gbm9kZTEu
cGFyZW50Tm9kZTsNCgkJCQl2YXIgcGFyZW50MiA9IG5vZGUyLnBhcmVudE5vZGU7
DQoNCgkJCQl2YXIgczIgPSBub2RlMi5uZXh0U2libGluZzsNCg0KCQkJCXBhcmVu
dDEuaW5zZXJ0QmVmb3JlKG5vZGUyLCBub2RlMSk7DQoNCgkJCQlpZiAoczIpDQoJ
CQkJew0KCQkJCQlwYXJlbnQyLmluc2VydEJlZm9yZShub2RlMSwgczIpOw0KCQkJ
CX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlwYXJlbnQyLmFwcGVuZENoaWxkKG5v
ZGUxKTsNCgkJCQl9DQoJCQl9DQoJCX0sDQoNCgkJYWRkRXZlbnRIYW5kbGVyOiBm
dW5jdGlvbiAoZSwgZXZlbnROYW1lLCBmcCkNCgkJew0KCQkJaWYgKGUuYWRkRXZl
bnRMaXN0ZW5lcikNCgkJCXsNCgkJCQllLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCBmcCwgZmFsc2UpOw0KCQkJfQ0KCQkJZWxzZSBpZiAoZS5hdHRhY2hFdmVu
dCkNCgkJCXsNCgkJCQllLmF0dGFjaEV2ZW50KCJvbiIgKyBldmVudE5hbWUsIGZw
KTsNCgkJCX0NCgkJfSwNCg0KCQlyZW1vdmVFdmVudEhhbmRsZXI6IGZ1bmN0aW9u
IChlLCBldmVudE5hbWUsIGZwKQ0KCQl7DQoJCQlpZiAoZS5yZW1vdmVFdmVudExp
c3RlbmVyKQ0KCQkJew0KCQkJCWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWUsIGZwLCBmYWxzZSk7DQoJCQl9DQoJCQllbHNlIGlmIChlLmRldGFjaEV2ZW50
KQ0KCQkJew0KCQkJCWUuZGV0YWNoRXZlbnQoIm9uIiArIGV2ZW50TmFtZSwgZnAp
Ow0KCQkJfQ0KCQl9LA0KDQoJCWdldENvb2tpZTogZnVuY3Rpb24gKGtleSkNCgkJ
ew0KCQkJdmFyIGVudGl0aWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7Iik7
DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKQ0K
CQkJew0KCQkJCXZhciBqID0gZW50aXRpZXNbaV0uaW5kZXhPZigiPSIpOw0KCQkJ
CXZhciBzID0gZW50aXRpZXNbaV0uc3Vic3RyaW5nKDAsIGopOw0KCQkJCWlmIChz
ICE9ICIiICYmIChzID09IGtleSB8fCBzID09ICIgIiArIGtleSkpDQoJCQkJew0K
CQkJCQlyZXR1cm4gZW50aXRpZXNbaV0uc3Vic3RyaW5nKGogKyAxKTsNCgkJCQl9
DQoJCQl9DQoJCQlyZXR1cm4gbnVsbDsNCgkJfSwNCg0KCQlzZXRDb29raWU6IGZ1
bmN0aW9uIChrZXksIHZhbHVlLCBleHBpcmVzLCBkb21haW4sIHBhdGgpDQoJCXsN
CgkJCWRvbWFpbiA9IGRvbWFpbiB8fCAodHlwZW9mIChnQ29va2llRG9tYWluKSAh
PSAidW5kZWZpbmVkIiA/IChnQ29va2llRG9tYWluIHx8IGRvY3VtZW50LmRvbWFp
bikgOiBkb2N1bWVudC5kb21haW4pOw0KCQkJcGF0aCA9IHBhdGggfHwgIi8iOw0K
CQkJZG9jdW1lbnQuY29va2llID0ga2V5ICsgIj0iICsgdmFsdWUgKyAiOyBkb21h
aW49IiArIGRvbWFpbiArICI7IHBhdGg9IiArIHBhdGggKyAiOyAiICsgKGV4cGly
ZXMgPyAoImV4cGlyZXM9IiArIGV4cGlyZXMudG9HTVRTdHJpbmcoKSArICI7Iikg
OiAiIik7DQoJCX0sDQoNCgkJc2V0U2Vzc2lvbkNvb2tpZTogZnVuY3Rpb24gKGtl
eSwgdmFsdWUsIGRvbWFpbiwgcGF0aCkNCgkJew0KCQkJdGhpcy5zZXRDb29raWUo
a2V5LCB2YWx1ZSwgbnVsbCwgZG9tYWluLCBwYXRoKTsNCgkJfSwNCg0KCQlodG1s
RW5jb2RlOiBmdW5jdGlvbiAoc291cmNlU3RyaW5nKQ0KCQl7DQoJCQl2YXIgZW5j
b2RlZFN0cmluZyA9ICIiOw0KCQkJaWYgKHNvdXJjZVN0cmluZy5sZW5ndGggPT0g
MCkNCgkJCXsNCgkJCQlyZXR1cm4gIiI7DQoJCQl9DQoNCgkJCWZvciAodmFyIGkg
PSAwOyBpIDwgc291cmNlU3RyaW5nLmxlbmd0aDsgaSsrKQ0KCQkJew0KCQkJCXN3
aXRjaCAoc291cmNlU3RyaW5nLnN1YnN0cihpLCAxKSkNCgkJCQl7DQoJCQkJCWNh
c2UgIjwiOg0KCQkJCQkJZW5jb2RlZFN0cmluZyArPSAiJmx0OyI7DQoJCQkJCQli
cmVhazsNCgkJCQkJY2FzZSAiPiI6DQoJCQkJCQllbmNvZGVkU3RyaW5nICs9ICIm
Z3Q7IjsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICImIjoNCgkJCQkJCWVuY29k
ZWRTdHJpbmcgKz0gIiZhbXA7IjsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICJc
IiI6DQoJCQkJCQllbmNvZGVkU3RyaW5nICs9ICImcXVvdDsiOw0KCQkJCQkJYnJl
YWs7DQoJCQkJCWNhc2UgIiAiOg0KCQkJCQkJZW5jb2RlZFN0cmluZyArPSAiJm5i
c3A7IjsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICJcbiI6DQoJCQkJCQllbmNv
ZGVkU3RyaW5nICs9ICI8YnIgLz4iOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWRlZmF1
bHQ6DQoJCQkJCQllbmNvZGVkU3RyaW5nICs9IHNvdXJjZVN0cmluZy5zdWJzdHIo
aSwgMSk7DQoJCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCXJldHVybiBl
bmNvZGVkU3RyaW5nOw0KCQl9LA0KDQoJCWNoYXJhY3RlckVuY29kZTogZnVuY3Rp
b24gKHNvdXJjZVN0cmluZykNCgkJew0KCQkJdmFyIGVuY29kZWRTdHJpbmcgPSAi
IjsNCgkJCWlmIChzb3VyY2VTdHJpbmcubGVuZ3RoID09IDApDQoJCQl7DQoJCQkJ
cmV0dXJuICIiOw0KCQkJfQ0KDQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJj
ZVN0cmluZy5sZW5ndGg7IGkrKykNCgkJCXsNCgkJCQlzd2l0Y2ggKHNvdXJjZVN0
cmluZy5zdWJzdHIoaSwgMSkpDQoJCQkJew0KCQkJCQljYXNlICIkIjoNCgkJCQkJ
CWVuY29kZWRTdHJpbmcgKz0gIiQkIjsNCgkJCQkJCWJyZWFrOw0KCQkJCQlkZWZh
dWx0Og0KCQkJCQkJZW5jb2RlZFN0cmluZyArPSBzb3VyY2VTdHJpbmcuc3Vic3Ry
KGksIDEpOw0KCQkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4g
ZW5jb2RlZFN0cmluZzsNCgkJfSwNCg0KCQloaWRlRWxlbWVudDogZnVuY3Rpb24g
KGUpDQoJCXsNCgkJCWUuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJfSwNCg0K
CQlkaXNwbGF5VGFibGVSb3c6IGZ1bmN0aW9uIChyb3cpDQoJCXsNCgkJCXRyeQ0K
CQkJew0KCQkJCXJvdy5zdHlsZS5kaXNwbGF5ID0gInRhYmxlLXJvdyI7DQoJCQl9
DQoJCQljYXRjaCAoZXgpDQoJCQl7DQoJCQkJcm93LnN0eWxlLmRpc3BsYXkgPSAi
YmxvY2siOw0KCQkJfQ0KCQl9LA0KDQoJCWRpc3BsYXlUYWJsZUNlbGw6IGZ1bmN0
aW9uIChjZWxsKQ0KCQl7DQoJCQl0cnkNCgkJCXsNCgkJCQljZWxsLnN0eWxlLmRp
c3BsYXkgPSAidGFibGUtY2VsbCI7DQoJCQl9DQoJCQljYXRjaCAoZXgpDQoJCQl7
DQoJCQkJY2VsbC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgkJCX0NCgkJfSwN
Cg0KCQlnZXRVcmxQYXJhbWV0ZXJzOiBmdW5jdGlvbiAoKQ0KCQl7DQoJCQl2YXIg
cGFyYW1ldGVycyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEp
LnNwbGl0KCcmJyk7DQoJCQl2YXIgcXVlcnlGaWVsZHMgPSB7fTsNCgkJCWZvciAo
dmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7IGkrKykNCgkJCXsNCgkJ
CQl2YXIgcGFyYW0gPSBwYXJhbWV0ZXJzW2ldOw0KCQkJCXZhciBpbmRleCA9IHBh
cmFtLmluZGV4T2YoJz0nKTsNCgkJCQl2YXIga2V5ID0gZGVjb2RlVVJJQ29tcG9u
ZW50KGluZGV4ICE9IC0xID8gcGFyYW0uc3Vic3RyaW5nKDAsIGluZGV4KS50b0xv
d2VyQ2FzZSgpIDogcGFyYW0pOw0KCQkJCXZhciB2YWx1ZSA9IGluZGV4ICE9IC0x
ID8gZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtLnN1YnN0cmluZyhpbmRleCArIDEs
IHBhcmFtLmxlbmd0aCkpIDogIiI7DQoJCQkJaWYgKHF1ZXJ5RmllbGRzW2tleV0p
DQoJCQkJew0KCQkJCQlxdWVyeUZpZWxkc1trZXldICs9ICIsIiArIHZhbHVlOw0K
CQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlxdWVyeUZpZWxkc1trZXldID0g
dmFsdWU7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gcXVlcnlGaWVsZHM7DQoJ
CX0sDQoNCgkJaGFzQ2xhc3M6IGZ1bmN0aW9uIChlLCBjbGFzc05hbWUpDQoJCXsN
CgkJCWlmICghZSB8fCB0eXBlb2YgKGUuY2xhc3NOYW1lKSAhPSAic3RyaW5nIiB8
fCAhY2xhc3NOYW1lIHx8IHR5cGVvZiAoY2xhc3NOYW1lKSAhPSAic3RyaW5nIikN
CgkJCXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoNCgkJCXZhciBjbGFzc2Vz
ID0gIiAiICsgZS5jbGFzc05hbWUudG9VcHBlckNhc2UoKSArICIgIjsNCgkJCXJl
dHVybiBjbGFzc2VzLmluZGV4T2YoIiAiICsgY2xhc3NOYW1lLnRvVXBwZXJDYXNl
KCkgKyAiICIpICE9IC0xOw0KCQl9LA0KDQoJCWFkZENsYXNzOiBmdW5jdGlvbiAo
ZSwgY2xhc3NOYW1lKQ0KCQl7DQoJCQlpZiAoIWUgfHwgdHlwZW9mIChlLmNsYXNz
TmFtZSkgIT0gInN0cmluZyIgfHwgIWNsYXNzTmFtZSB8fCB0eXBlb2YgKGNsYXNz
TmFtZSkgIT0gInN0cmluZyIgfHwgTVMuU3VwcG9ydC5GbXMuVXRpbHMuaGFzQ2xh
c3MoZSwgY2xhc3NOYW1lKSkNCgkJCXsNCgkJCQlyZXR1cm47DQoJCQl9DQoNCgkJ
CWUuY2xhc3NOYW1lICs9ICIgIiArIGNsYXNzTmFtZTsNCgkJfSwNCg0KCQlyZW1v
dmVDbGFzczogZnVuY3Rpb24gKGUsIGNsYXNzTmFtZXMpDQoJCXsNCgkJCWlmICgh
ZSB8fCB0eXBlb2YgKGUuY2xhc3NOYW1lKSAhPSAic3RyaW5nIiB8fCAhY2xhc3NO
YW1lcyB8fCB0eXBlb2YgKGNsYXNzTmFtZXMpICE9ICJzdHJpbmciKQ0KCQkJew0K
CQkJCXJldHVybjsNCgkJCX0NCg0KCQkJdmFyIHRvQmVSZW1vdmVkID0gY2xhc3NO
YW1lcy5zcGxpdCgvXHMrLyk7DQoJCQl2YXIgY2xhc3NOYW1lID0gKCIgIiArIGUu
Y2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKC9bXG5cdFxyXS9nLCAiICIpOw0KCQkJ
dmFyIGMsIGNsOw0KCQkJZm9yIChjID0gMCwgY2wgPSB0b0JlUmVtb3ZlZC5sZW5n
dGg7IGMgPCBjbDsgYysrKQ0KCQkJew0KCQkJCWNsYXNzTmFtZSA9IGNsYXNzTmFt
ZS5yZXBsYWNlKCIgIiArIHRvQmVSZW1vdmVkW2NdICsgIiAiLCAiICIpOw0KCQkJ
fQ0KDQoJCQllLmNsYXNzTmFtZSA9IGNsYXNzTmFtZS5yZXBsYWNlKC8oXlxzKil8
KFxzKiQpL2csICIiKTsNCgkJfSwNCg0KCQlnZXRUb2RheTogZnVuY3Rpb24gKCkN
CgkJew0KCQkJdmFyIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTsNCgkJCXJldHVy
biAoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSArICItIiArICgiMCIgKyAoY3Vy
cmVudERhdGUuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMikgKyAiLSIgKyAoIjAi
ICsgY3VycmVudERhdGUuZ2V0RGF0ZSgpKS5zbGljZSgtMikpOw0KCQl9DQoNCgl9
Ow0KDQoJTVMuU3VwcG9ydC5GbXMuVmFsaWRhdGVSZXN1bHQgPSBmdW5jdGlvbiAo
aXNWYWxpZCwgZXJyb3JNZXNzYWdlKQ0KCXsNCgkJdGhpcy5pc1ZhbGlkID0gaXNW
YWxpZDsNCgkJdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7DQoJfQ0K
DQoJTVMuU3VwcG9ydC5GbXMuU3VydmV5RXZlbnREZWxlZ2F0ZSA9IGZ1bmN0aW9u
IChvYmplY3QsIG1ldGhvZCkNCgl7DQoJCXRoaXMub2JqZWN0ID0gb2JqZWN0Ow0K
CQl0aGlzLm1ldGhvZCA9IG1ldGhvZDsNCg0KCQl0aGlzLmludm9rZSA9IGZ1bmN0
aW9uICgpDQoJCXsNCgkJCWlmIChtZXRob2QgIT0gbnVsbCkNCgkJCXsNCgkJCQly
ZXR1cm4gbWV0aG9kLmFwcGx5KG9iamVjdCwgYXJndW1lbnRzKTsNCgkJCX0NCgkJ
fQ0KDQoJCXRoaXMuZXF1YWwgPSBmdW5jdGlvbiAoYW5vdGhlcikNCgkJew0KCQkJ
cmV0dXJuIHRoaXMub2JqZWN0ID09IGFub3RoZXIub2JqZWN0ICYmIHRoaXMubWV0
aG9kID09IGFub3RoZXIubWV0aG9kOw0KCQl9DQoJfQ0KDQoJTVMuU3VwcG9ydC5G
bXMuU3VydmV5RXZlbnQgPSBmdW5jdGlvbiAoKQ0KCXsNCgkJdmFyIGhhbmRsZXJz
ID0gW107DQoNCgkJdGhpcy5hZGQgPSBmdW5jdGlvbiAoZGVsZWdhdGUpDQoJCXsN
CgkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBoYW5kbGVycy5sZW5ndGg7
ICsraW5kZXgpDQoJCQl7DQoJCQkJaWYgKGhhbmRsZXJzW2luZGV4XS5lcXVhbChk
ZWxlZ2F0ZSkpDQoJCQkJew0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KCQkJfQ0KDQoJ
CQloYW5kbGVycy5wdXNoKGRlbGVnYXRlKTsNCgkJfQ0KDQoJCXRoaXMucmVtb3Zl
ID0gZnVuY3Rpb24gKGRlbGVnYXRlKQ0KCQl7DQoJCQlmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgaGFuZGxlcnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJ
CWlmIChoYW5kbGVyc1tpbmRleF0uZXF1YWwoZGVsZWdhdGUpKQ0KCQkJCXsNCgkJ
CQkJaGFuZGxlcnMuc3BsaWNlKGluZGV4LCAxKTsNCgkJCQkJcmV0dXJuOw0KCQkJ
CX0NCgkJCX0NCgkJfQ0KDQoJCXRoaXMuZmlyZSA9IGZ1bmN0aW9uICgpDQoJCXsN
CgkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBoYW5kbGVycy5sZW5ndGg7
ICsraW5kZXgpDQoJCQl7DQoJCQkJaWYgKCFoYW5kbGVyc1tpbmRleF0uaW52b2tl
LmFwcGx5KG51bGwsIGFyZ3VtZW50cykpDQoJCQkJew0KCQkJCQlyZXR1cm4gZmFs
c2U7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCX0NCg0K
CU1TLlN1cHBvcnQuRm1zLlN1cnZleVF1ZXN0aW9uT3BlcmF0b3IgPQ0KCXsNCgkJ
Ly8gY3JlYXJlIGEgb3BlcmF0b3IgZm9yIGEgZ2l2ZW4gcXVlc3Rpb24gdHlwZQ0K
CQljcmVhdGU6IGZ1bmN0aW9uIChxdWVzdGlvbikNCgkJew0KCQkJdmFyIG9wZXJh
dG9yUHJvdG90eXBlID0gbnVsbDsNCg0KCQkJc3dpdGNoIChxdWVzdGlvbi5nZXRR
dWVzdGlvblR5cGUoKSkNCgkJCXsNCgkJCQljYXNlICJDSE9JQ0UiOg0KCQkJCWNh
c2UgIkNIRUNLLUxJU1QiOg0KCQkJCQlvcGVyYXRvclByb3RvdHlwZSA9IHRoaXMu
Y2hvaWNlT3BlcmF0b3I7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIkNIT0lDRS1T
RVEiOg0KCQkJCWNhc2UgIkNIT0lDRS1IT1IiOg0KCQkJCQlvcGVyYXRvclByb3Rv
dHlwZSA9IHRoaXMuZ2hyT3BlcmF0b3I7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug
IkNIT0lDRS1MSVNUIjoNCgkJCQljYXNlICJNVUxUSS1PUFRJT04iOg0KCQkJCQlv
cGVyYXRvclByb3RvdHlwZSA9IHRoaXMuY2hvaWNlbGlzdE9wZXJhdG9yOw0KCQkJ
CQlicmVhazsNCg0KCQkJCWNhc2UgIlRFWFQtTElORSI6DQoJCQkJY2FzZSAiUEFT
U1dPUkQiOg0KCQkJCWNhc2UgIlRFWFQtQkxPQ0siOg0KCQkJCQlvcGVyYXRvclBy
b3RvdHlwZSA9IHRoaXMudGV4dGJveE9wZXJhdG9yOw0KCQkJCQlicmVhazsNCgkJ
CQljYXNlICJURVhULURBVEUiOg0KCQkJCQlvcGVyYXRvclByb3RvdHlwZSA9IHRo
aXMuZGF0ZU9wZXJhdG9yOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJURVhULU5V
TUVSSUMiOg0KCQkJCQlvcGVyYXRvclByb3RvdHlwZSA9IHRoaXMubnVtZXJpY09w
ZXJhdG9yOw0KCQkJCQlicmVhazsNCg0KCQkJCWNhc2UgIkxBQkVMIjoNCgkJCQlk
ZWZhdWx0Og0KCQkJCQlvcGVyYXRvclByb3RvdHlwZSA9IHRoaXMuZW1wdHlPcGVy
YXRvcjsNCgkJCQkJYnJlYWs7DQoJCQl9DQoNCgkJCXJldHVybiBuZXcgb3BlcmF0
b3JQcm90b3R5cGUocXVlc3Rpb24pOw0KCQl9LA0KDQoJCWVtcHR5T3BlcmF0b3I6
IGZ1bmN0aW9uIChxdWVzdGlvbikNCgkJew0KCQkJdGhpcy52YWxpZGF0ZVJlcXVp
cmVkID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0N
Cg0KCQkJdGhpcy52YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJ
CQlyZXR1cm4gbmV3IE1TLlN1cHBvcnQuRm1zLlZhbGlkYXRlUmVzdWx0KHRydWUp
Ow0KCQkJfQ0KDQoJCQl0aGlzLnByZXBhcmUgPSBmdW5jdGlvbiAoKQ0KCQkJew0K
CQkJfQ0KDQoJCQl0aGlzLnBvcHVsYXRlVmFyaWFibGVzID0gZnVuY3Rpb24gKCkN
CgkJCXsNCgkJCQlyZXR1cm4gW107DQoJCQl9DQoNCgkJCXRoaXMucmFuZG9taXpl
ID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCX0NCg0KCQkJdGhpcy5nZXRBbnN3ZXJz
ID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlyZXR1cm4gW107DQoJCQl9DQoNCgkJ
CXRoaXMuc2F2ZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQl9DQoNCgkJCXRoaXMu
cmVzdG9yZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQl9DQoNCgkJCXRoaXMuZ2V0
T3B0aW9uQnlJZCA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0dXJuIG51bGw7
DQoJCQl9DQoJCX0sDQoNCgkJdGV4dGJveE9wZXJhdG9yOiBmdW5jdGlvbiAocXVl
c3Rpb24pDQoJCXsNCgkJCXZhciB0ZXh0Ym94ID0gcXVlc3Rpb24uZWxlbWVudHNb
MF07DQoNCgkJCXRoaXMudmFsaWRhdGVSZXF1aXJlZCA9IGZ1bmN0aW9uICgpDQoJ
CQl7DQoJCQkJcmV0dXJuIHRleHRib3gudmFsdWUgIT0gIiI7DQoJCQl9DQoNCgkJ
CXRoaXMudmFsaWRhdGVJbnB1dCA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0
dXJuIG5ldyBNUy5TdXBwb3J0LkZtcy5WYWxpZGF0ZVJlc3VsdCh0cnVlKTsNCgkJ
CX0NCg0KCQkJdGhpcy5wcmVwYXJlID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCX0N
Cg0KCQkJdGhpcy5wb3B1bGF0ZVZhcmlhYmxlcyA9IGZ1bmN0aW9uICgpDQoJCQl7
DQoJCQkJdmFyIHZhcmlhYmxlcyA9IFtdOw0KDQoJCQkJdmFyIHZhcmlhYmxlID0g
cXVlc3Rpb24uZG9tT2JqZWN0LmdldEF0dHJpYnV0ZSgidmFyIik7DQoNCgkJCQlp
ZiAodmFyaWFibGUgIT0gbnVsbCAmJiB2YXJpYWJsZSAhPSAiIikNCgkJCQl7DQoJ
CQkJCWlmICh0ZXh0Ym94LnZhbHVlICE9IG51bGwgJiYgdGV4dGJveC52YWx1ZSAh
PSAiIikNCgkJCQkJew0KCQkJCQkJdmFyaWFibGVzW3ZhcmlhYmxlXSA9IHRleHRi
b3gudmFsdWU7DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQl2YXJp
YWJsZXNbdmFyaWFibGVdID0gbnVsbDsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCXJl
dHVybiB2YXJpYWJsZXM7DQoJCQl9DQoNCgkJCXRoaXMuZ2V0T3B0aW9uQnlJZCA9
IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0dXJuIG51bGw7DQoJCQl9DQoNCgkJ
CXRoaXMucmFuZG9taXplID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCX0NCg0KCQkJ
dGhpcy5nZXRBbnN3ZXJzID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQl2YXIgYW5z
d2VycyA9IFtdOw0KCQkJCXZhciB0ZXh0ID0gdGV4dGJveC52YWx1ZTsNCgkJCQlp
ZiAodGV4dCAhPSBudWxsICYmIHRleHQgIT0gIiIpDQoJCQkJew0KCQkJCQlhbnN3
ZXJzLnB1c2goeyBpZDogMCwgdmFsdWU6IDAsIHRleHQ6IHRleHQgfSk7DQoJCQkJ
fQ0KCQkJCXJldHVybiBhbnN3ZXJzOw0KCQkJfQ0KDQoJCQl2YXIgc2F2ZWRUZXh0
Ow0KDQoJCQl0aGlzLnNhdmUgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXNhdmVk
VGV4dCA9IHRleHRib3gudmFsdWU7DQoJCQl9DQoNCgkJCXRoaXMucmVzdG9yZSA9
IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJdGV4dGJveC52YWx1ZSA9IHNhdmVkVGV4
dDsNCgkJCX0NCgkJfSwNCg0KCQlkYXRlT3BlcmF0b3I6IGZ1bmN0aW9uIChxdWVz
dGlvbikNCgkJew0KCQkJdmFyIEZtcyA9IE1TLlN1cHBvcnQuRm1zOw0KCQkJdmFy
IFV0aWxzID0gRm1zLlV0aWxzOw0KCQkJdmFyIFZhbGlkYXRlUmVzdWx0ID0gRm1z
LlZhbGlkYXRlUmVzdWx0Ow0KDQoJCQl2YXIgYmFzZU9wZXJhdG9yID0gbmV3IEZt
cy5TdXJ2ZXlRdWVzdGlvbk9wZXJhdG9yLnRleHRib3hPcGVyYXRvcihxdWVzdGlv
bik7DQoJCQl2YXIgdGV4dGJveCA9IHF1ZXN0aW9uLmVsZW1lbnRzWzBdOw0KCQkJ
dmFyIGRhdGVFcnJvclRleHQgPSB0ZXh0Ym94LmdldEF0dHJpYnV0ZSgiZGF0YS12
YWwtZGF0ZWVycm9ydGV4dCIpOw0KCQkJdGhpcy52YWxpZGF0ZVJlcXVpcmVkID0g
ZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlyZXR1cm4gYmFzZU9wZXJhdG9yLnZhbGlk
YXRlUmVxdWlyZWQoKTsNCgkJCX0NCgkJCXRoaXMudmFsaWRhdGVJbnB1dCA9IGZ1
bmN0aW9uICgpDQoJCQl7DQoJCQkJdmFyIHZhbHVlU3RyaW5nID0gdGV4dGJveC52
YWx1ZTsNCgkJCQlpZiAodmFsdWVTdHJpbmcgIT0gIiIpDQoJCQkJew0KCQkJCQl2
YXIgcmUgPSAvXig/Oig/ITAwMDApWzAtOV17NH0oWy1dKSg/Oig/OjA/WzEtOV18
MVswLTJdKVwxKD86MD9bMS05XXwxWzAtOV18MlswLThdKXwoPzowP1sxMy05XXwx
WzAtMl0pXDEoPzoyOXwzMCl8KD86MD9bMTM1NzhdfDFbMDJdKVwxKD86MzEpKXwo
PzpbMC05XXsyfSg/OjBbNDhdfFsyNDY4XVswNDhdfFsxMzU3OV1bMjZdKXwoPzow
WzQ4XXxbMjQ2OF1bMDQ4XXxbMTM1NzldWzI2XSkwMCkoWy1dKTA/MlwyKD86Mjkp
KSQvaTsNCgkJCQkJaWYgKCEocmUudGVzdCh2YWx1ZVN0cmluZykpKQ0KCQkJCQl7
DQoJCQkJCQlyZXR1cm4gbmV3IFZhbGlkYXRlUmVzdWx0KGZhbHNlLCBkYXRlRXJy
b3JUZXh0KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlyZXR1cm4gbmV3IFZhbGlkYXRl
UmVzdWx0KHRydWUpOw0KCQkJfQ0KDQoJCQl0aGlzLnByZXBhcmUgPSBmdW5jdGlv
biAoKQ0KCQkJew0KCQkJCXJldHVybiBiYXNlT3BlcmF0b3IucHJlcGFyZSgpOw0K
CQkJfQ0KDQoJCQl0aGlzLnBvcHVsYXRlVmFyaWFibGVzID0gZnVuY3Rpb24gKCkN
CgkJCXsNCgkJCQlyZXR1cm4gYmFzZU9wZXJhdG9yLnBvcHVsYXRlVmFyaWFibGVz
KCk7DQoJCQl9DQoNCgkJCXRoaXMuZ2V0T3B0aW9uQnlJZCA9IGZ1bmN0aW9uICgp
DQoJCQl7DQoJCQkJcmV0dXJuIGJhc2VPcGVyYXRvci5nZXRPcHRpb25CeUlkKCk7
DQoJCQl9DQoNCgkJCXRoaXMucmFuZG9taXplID0gZnVuY3Rpb24gKCkNCgkJCXsN
CgkJCQlyZXR1cm4gYmFzZU9wZXJhdG9yLnJhbmRvbWl6ZSgpOw0KCQkJfQ0KDQoJ
CQl0aGlzLmdldEFuc3dlcnMgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXJldHVy
biBiYXNlT3BlcmF0b3IuZ2V0QW5zd2VycygpOw0KCQkJfQ0KDQoJCQl0aGlzLnNh
dmUgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXJldHVybiBiYXNlT3BlcmF0b3Iu
c2F2ZSgpOw0KCQkJfQ0KDQoJCQl0aGlzLnJlc3RvcmUgPSBmdW5jdGlvbiAoKQ0K
CQkJew0KCQkJCXJldHVybiBiYXNlT3BlcmF0b3IucmVzdG9yZSgpOw0KCQkJfQ0K
DQoJCX0sDQoNCgkJbnVtZXJpY09wZXJhdG9yOiBmdW5jdGlvbiAocXVlc3Rpb24p
DQoJCXsNCgkJCXZhciBGbXMgPSBNUy5TdXBwb3J0LkZtczsNCgkJCXZhciBVdGls
cyA9IEZtcy5VdGlsczsNCgkJCXZhciBWYWxpZGF0ZVJlc3VsdCA9IEZtcy5WYWxp
ZGF0ZVJlc3VsdDsNCg0KCQkJdmFyIGJhc2VPcGVyYXRvciA9IG5ldyBGbXMuU3Vy
dmV5UXVlc3Rpb25PcGVyYXRvci50ZXh0Ym94T3BlcmF0b3IocXVlc3Rpb24pOw0K
DQoJCQl2YXIgdGV4dGJveCA9IHF1ZXN0aW9uLmVsZW1lbnRzWzBdOw0KCQkJdmFy
IGVuYWJsZUZsb2F0ID0gVXRpbHMuZ2V0Q2hpbGRCeU5hbWUocXVlc3Rpb24uZG9t
T2JqZWN0LCAiZW5hYmxlRmxvYXQiKS52YWx1ZSA9PSAiMSIgPyB0cnVlIDogZmFs
c2U7DQoJCQl2YXIgbWluVmFsdWUgPSB0ZXh0Ym94LmdldEF0dHJpYnV0ZSgibWlu
Iik7DQoJCQl2YXIgbWF4VmFsdWUgPSB0ZXh0Ym94LmdldEF0dHJpYnV0ZSgibWF4
Iik7DQoJCQl2YXIgbnVtZXJpY0Vycm9yVGV4dCA9IFV0aWxzLmdldENoaWxkQnlO
YW1lKHF1ZXN0aW9uLmRvbU9iamVjdCwgIm51bWVyaWNFcnJvclRleHQiKS52YWx1
ZTsNCg0KCQkJdGhpcy52YWxpZGF0ZVJlcXVpcmVkID0gZnVuY3Rpb24gKCkNCgkJ
CXsNCgkJCQlyZXR1cm4gYmFzZU9wZXJhdG9yLnZhbGlkYXRlUmVxdWlyZWQoKTsN
CgkJCX0NCg0KCQkJdGhpcy52YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKCkNCgkJ
CXsNCgkJCQl2YXIgdmFsdWVTdHJpbmcgPSB0ZXh0Ym94LnZhbHVlOw0KCQkJCWlm
ICh2YWx1ZVN0cmluZyAhPSAiIikNCgkJCQl7DQoJCQkJCXZhciBwYXJzZSA9IGVu
YWJsZUZsb2F0ID8gcGFyc2VGbG9hdCA6IHBhcnNlSW50Ow0KDQoJCQkJCXZhciB2
YWx1ZSA9IHBhcnNlKHZhbHVlU3RyaW5nKTsNCg0KCQkJCQl2YXIgcmUgPSBlbmFi
bGVGbG9hdCA/IC9eKFwrfC0pPygoXGQrKFwuXGQqKT8pfChcLlxkKykpKGUoXCt8
LSk/XGQrKT8kL2kgOiAvXihcK3wtKT9cZCskL2k7DQoNCgkJCQkJaWYgKGlzTmFO
KHZhbHVlKQ0KCQkJCQkJfHwgKCFyZS50ZXN0KHZhbHVlU3RyaW5nKSkNCgkJCQkJ
CXx8IChtaW5WYWx1ZSAhPSAiIiAmJiB2YWx1ZSA8IHBhcnNlKG1pblZhbHVlKSkN
CgkJCQkJCXx8IChtYXhWYWx1ZSAhPSAiIiAmJiB2YWx1ZSA+IHBhcnNlKG1heFZh
bHVlKSkNCgkJCQkJKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gbmV3IFZhbGlkYXRl
UmVzdWx0KGZhbHNlLCBudW1lcmljRXJyb3JUZXh0KTsNCgkJCQkJfQ0KCQkJCX0N
Cg0KCQkJCXJldHVybiBuZXcgVmFsaWRhdGVSZXN1bHQodHJ1ZSk7DQoJCQl9DQoN
CgkJCXRoaXMucHJlcGFyZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0dXJu
IGJhc2VPcGVyYXRvci5wcmVwYXJlKCk7DQoJCQl9DQoNCgkJCXRoaXMucG9wdWxh
dGVWYXJpYWJsZXMgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXJldHVybiBiYXNl
T3BlcmF0b3IucG9wdWxhdGVWYXJpYWJsZXMoKTsNCgkJCX0NCg0KCQkJdGhpcy5n
ZXRPcHRpb25CeUlkID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlyZXR1cm4gYmFz
ZU9wZXJhdG9yLmdldE9wdGlvbkJ5SWQoKTsNCgkJCX0NCg0KCQkJdGhpcy5yYW5k
b21pemUgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXJldHVybiBiYXNlT3BlcmF0
b3IucmFuZG9taXplKCk7DQoJCQl9DQoNCgkJCXRoaXMuZ2V0QW5zd2VycyA9IGZ1
bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0dXJuIGJhc2VPcGVyYXRvci5nZXRBbnN3
ZXJzKCk7DQoJCQl9DQoNCgkJCXRoaXMuc2F2ZSA9IGZ1bmN0aW9uICgpDQoJCQl7
DQoJCQkJcmV0dXJuIGJhc2VPcGVyYXRvci5zYXZlKCk7DQoJCQl9DQoNCgkJCXRo
aXMucmVzdG9yZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJcmV0dXJuIGJhc2VP
cGVyYXRvci5yZXN0b3JlKCk7DQoJCQl9DQoJCX0sDQoNCgkJY2hvaWNlT3BlcmF0
b3I6IGZ1bmN0aW9uIChxdWVzdGlvbikNCgkJew0KCQkJdmFyIFV0aWxzID0gTVMu
U3VwcG9ydC5GbXMuVXRpbHM7DQoNCgkJCXZhciBsYXN0UmFkaW9JbmRleCA9IHF1
ZXN0aW9uLmVsZW1lbnRzLmxlbmd0aCAtIDE7DQoJCQl2YXIgb3B0aW9uYWxUZXh0
Qm94ID0gbnVsbDsNCg0KCQkJdmFyIGhhc09wdGlvbmFsVGV4dEJveCA9IGxhc3RS
YWRpb0luZGV4ID49IDAgPyBxdWVzdGlvbi5lbGVtZW50c1tsYXN0UmFkaW9JbmRl
eF0udHlwZS50b0xvd2VyQ2FzZSgpID09ICJ0ZXh0IiA6IGZhbHNlOw0KDQoJCQlp
ZiAoaGFzT3B0aW9uYWxUZXh0Qm94KQ0KCQkJew0KCQkJCW9wdGlvbmFsVGV4dEJv
eCA9IHF1ZXN0aW9uLmVsZW1lbnRzW2xhc3RSYWRpb0luZGV4XTsNCgkJCQktLWxh
c3RSYWRpb0luZGV4Ow0KCQkJfQ0KDQoJCQl2YXIgcm93cyA9IG51bGw7DQoNCgkJ
CWZ1bmN0aW9uIGZpbmRSb3dzKCkNCgkJCXsNCgkJCQl2YXIgdGFibGUgPSBVdGls
cy5nZXRDaGlsZEJ5VGFnTmFtZShxdWVzdGlvbi5kb21PYmplY3QsICJUQUJMRSIp
Ow0KDQoJCQkJaWYgKHRhYmxlICE9IG51bGwpDQoJCQkJew0KCQkJCQlyb3dzID0g
dGFibGUucm93czsNCgkJCQl9DQoJCQl9DQoNCgkJCWZpbmRSb3dzKCk7DQoNCgkJ
CWZ1bmN0aW9uIGhhbmRsZU9wdGlvbmFsVGV4dEJveChlKQ0KCQkJew0KCQkJCWlm
IChoYXNPcHRpb25hbFRleHRCb3gpDQoJCQkJew0KCQkJCQlvcHRpb25hbFRleHRC
b3guZGlzYWJsZWQgPSAhcXVlc3Rpb24uZWxlbWVudHNbbGFzdFJhZGlvSW5kZXhd
LmNoZWNrZWQ7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBpc0V4Y2x1c2l2
ZU9wdGlvbihlKQ0KCQkJew0KCQkJCXJldHVybiBlICYmIGUudHlwZSA9PSAiY2hl
Y2tib3giICYmIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJleGNs
dXNpdmUiKSA9PSAiMSI7DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIGdldEVsZW1lbnRD
b250YWluZXIoZSkNCgkJCXsNCgkJCQlyZXR1cm4gZS5wYXJlbnROb2RlLnBhcmVu
dE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlOw0KCQkJfQ0KDQoJCQlmdW5jdGlv
biBoYW5kbGVFeGNsdXNpdmVPcHRpb24oZXZlbnQpDQoJCQl7DQoJCQkJdmFyIGV2
dCA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDsNCgkJCQl2YXIgZWxlbWVudCA9IGV2
dC5zcmNFbGVtZW50IHx8IGV2dC50YXJnZXQ7DQoNCgkJCQlpZiAoaXNFeGNsdXNp
dmVPcHRpb24oZWxlbWVudCkpDQoJCQkJew0KCQkJCQlpZiAoZWxlbWVudC5jaGVj
a2VkKQ0KCQkJCQl7DQoJCQkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDw9
IGxhc3RSYWRpb0luZGV4OyArK2luZGV4KQ0KCQkJCQkJew0KCQkJCQkJCXZhciBl
ID0gcXVlc3Rpb24uZWxlbWVudHNbaW5kZXhdOw0KCQkJCQkJCWlmIChlICE9IGVs
ZW1lbnQpDQoJCQkJCQkJew0KCQkJCQkJCQllLmNoZWNrZWQgPSBmYWxzZTsNCgkJ
CQkJCQkJZS5kaXNhYmxlZCA9IHRydWU7DQoJCQkJCQkJCWdldEVsZW1lbnRDb250
YWluZXIoZSkuZGlzYWJsZWQgPSB0cnVlOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJ
CQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCWZvciAodmFyIGluZGV4ID0g
MDsgaW5kZXggPD0gbGFzdFJhZGlvSW5kZXg7ICsraW5kZXgpDQoJCQkJCQl7DQoJ
CQkJCQkJdmFyIGUgPSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJCQkJCQkJ
aWYgKGUuZGlzYWJsZWQgPT0gdHJ1ZSkNCgkJCQkJCQl7DQoJCQkJCQkJCWUuZGlz
YWJsZWQgPSBmYWxzZTsNCgkJCQkJCQkJZ2V0RWxlbWVudENvbnRhaW5lcihlKS5k
aXNhYmxlZCA9IGZhbHNlOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJ
CX0NCgkJCX0NCg0KCQkJZnVuY3Rpb24gaGFuZGxlT3B0aW9uQ2xpY2soZSkNCgkJ
CXsNCgkJCQloYW5kbGVFeGNsdXNpdmVPcHRpb24oZSk7DQoJCQkJaGFuZGxlT3B0
aW9uYWxUZXh0Qm94KGUpOw0KCQkJfQ0KDQoJCQlmb3IgKHZhciBpbmRleCA9IDA7
IGluZGV4IDw9IGxhc3RSYWRpb0luZGV4OyArK2luZGV4KQ0KCQkJew0KCQkJCXZh
ciBlID0gcXVlc3Rpb24uZWxlbWVudHNbaW5kZXhdOw0KCQkJCVV0aWxzLmFkZEV2
ZW50SGFuZGxlcihlLCAiY2xpY2siLCBoYW5kbGVPcHRpb25DbGljayk7DQoJCQl9
DQoNCgkJCXRoaXMudmFsaWRhdGVSZXF1aXJlZCA9IGZ1bmN0aW9uICgpDQoJCQl7
DQoJCQkJaWYgKGxhc3RSYWRpb0luZGV4ID09IDApDQoJCQkJew0KCQkJCQlyZXR1
cm4gdHJ1ZTsNCgkJCQl9DQoJCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8
PSBsYXN0UmFkaW9JbmRleDsgKytpbmRleCkNCgkJCQl7DQoJCQkJCXZhciBlID0g
cXVlc3Rpb24uZWxlbWVudHNbaW5kZXhdOw0KCQkJCQlpZiAoZS52aXNpYmxlICYm
IGUuY2hlY2tlZCkNCgkJCQkJew0KCQkJCQkJaWYgKGhhc09wdGlvbmFsVGV4dEJv
eCAmJiBxdWVzdGlvbi5lbGVtZW50c1tsYXN0UmFkaW9JbmRleF0uY2hlY2tlZCkN
CgkJCQkJCXsNCgkJCQkJCQlyZXR1cm4gKG9wdGlvbmFsVGV4dEJveC52YWx1ZSAh
PSAiIik7DQoJCQkJCQl9DQoNCgkJCQkJCXJldHVybiB0cnVlOw0KCQkJCQl9DQoJ
CQkJfQ0KDQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KDQoJCQl0aGlzLnZhbGlk
YXRlSW5wdXQgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXJldHVybiBuZXcgTVMu
U3VwcG9ydC5GbXMuVmFsaWRhdGVSZXN1bHQodHJ1ZSk7DQoJCQl9DQoNCgkJCXRo
aXMucHJlcGFyZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJaWYgKHJvd3MubGVu
Z3RoIDw9IDApDQoJCQkJew0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KDQoJCQkJdmFy
IGNvbHVtbnMgPSByb3dzWzBdLmNlbGxzLmxlbmd0aDsNCg0KCQkJCWlmIChjb2x1
bW5zIDw9IDApDQoJCQkJew0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KDQoJCQkJdmFy
IHJvd0luZGV4ID0gMCwgY2VsbEluZGV4ID0gMDsNCgkJCQlmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDw9IGxhc3RSYWRpb0luZGV4OyArK2luZGV4KQ0KCQkJCXsN
CgkJCQkJdmFyIGUgPSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJCQkJCXZh
ciBiU2hvdyA9IHRydWUsIGJTZWxlY3QgPSBlLmNoZWNrZWQ7DQoJCQkJCXZhciB2
aXNpYmlsaXR5ID0gZS5nZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiKTsNCg0KCQkJ
CQl2YXIgcmV0VmFsID0gcXVlc3Rpb24uc3VydmV5LkV2YWx1YXRlQ29udGV4dFZp
c2liaWxpdHkoZSk7DQoNCgkJCQkJc3dpdGNoICh2aXNpYmlsaXR5KQ0KCQkJCQl7
DQoJCQkJCQljYXNlICJTaG93IjoNCgkJCQkJCQliU2hvdyA9IHJldFZhbCA9PSAi
Tm90RXhpc3QiID8gZmFsc2UgOiByZXRWYWwgPT0gIkV2YWxUcnVlIiA/IHRydWUg
OiBmYWxzZTsNCgkJCQkJCQlicmVhazsNCgkJCQkJCWNhc2UgIkhpZGUiOg0KCQkJ
CQkJCWJTaG93ID0gcmV0VmFsID09ICJOb3RFeGlzdCIgPyB0cnVlIDogcmV0VmFs
ID09ICJFdmFsVHJ1ZSIgPyBmYWxzZSA6IHRydWU7DQoJCQkJCQkJYnJlYWs7DQoJ
CQkJCQljYXNlICJTZWxlY3RlZCI6DQoJCQkJCQkJYlNob3cgPSB0cnVlOw0KCQkJ
CQkJCWJTZWxlY3QgPSByZXRWYWwgPT0gIk5vdEV4aXN0IiA/IGZhbHNlIDogcmV0
VmFsID09ICJFdmFsVHJ1ZSIgPyB0cnVlIDogZmFsc2U7DQoJCQkJCQkJYnJlYWs7
DQoJCQkJCQlkZWZhdWx0Og0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoNCgkJCQkJ
aWYgKGJTaG93KQ0KCQkJCQl7DQoJCQkJCQllLnZpc2libGUgPSB0cnVlOw0KCQkJ
CQkJaWYgKGJTZWxlY3QpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCFlLmNoZWNrZWQp
DQoJCQkJCQkJew0KCQkJCQkJCQllLmNsaWNrKCk7DQoJCQkJCQkJfQ0KCQkJCQkJ
fQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCWlmIChlLmNoZWNrZWQpDQoJ
CQkJCQkJew0KCQkJCQkJCQllLmNoZWNrZWQgPSBmYWxzZTsNCgkJCQkJCQl9DQoJ
CQkJCQl9DQoNCgkJCQkJCXZhciByb3cgPSByb3dzW3Jvd0luZGV4XTsNCgkJCQkJ
CXZhciBjZWxsID0gcm93LmNlbGxzW2NlbGxJbmRleF07DQoNCgkJCQkJCVV0aWxz
LmRpc3BsYXlUYWJsZVJvdyhyb3cpOw0KCQkJCQkJVXRpbHMuZGlzcGxheVRhYmxl
Q2VsbChjZWxsKTsNCg0KCQkJCQkJdmFyIGNvbnRhaW5lciA9IGdldEVsZW1lbnRD
b250YWluZXIoZSk7DQoNCgkJCQkJCWlmIChjZWxsLmZpcnN0Q2hpbGQgIT0gbnVs
bCkNCgkJCQkJCXsNCgkJCQkJCQlpZiAoY2VsbC5maXJzdENoaWxkICE9IGNvbnRh
aW5lcikNCgkJCQkJCQl7DQoJCQkJCQkJCVV0aWxzLnN3YXBOb2RlKGNlbGwuZmly
c3RDaGlsZCwgY29udGFpbmVyKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQll
bHNlDQoJCQkJCQl7DQoJCQkJCQkJY2VsbC5hcHBlbmRDaGlsZChjb250YWluZXIp
Ow0KCQkJCQkJfQ0KDQoJCQkJCQlpZiAoaW5kZXggPT0gbGFzdFJhZGlvSW5kZXgg
JiYgaGFzT3B0aW9uYWxUZXh0Qm94KQ0KCQkJCQkJew0KCQkJCQkJCWNlbGwuYXBw
ZW5kQ2hpbGQoZ2V0RWxlbWVudENvbnRhaW5lcihvcHRpb25hbFRleHRCb3gpKTsN
CgkJCQkJCX0NCg0KCQkJCQkJKytjZWxsSW5kZXg7DQoJCQkJCQlpZiAoY2VsbElu
ZGV4ID09IGNvbHVtbnMpDQoJCQkJCQl7DQoJCQkJCQkJY2VsbEluZGV4ID0gMDsN
CgkJCQkJCQkrK3Jvd0luZGV4Ow0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWVsc2UN
CgkJCQkJew0KCQkJCQkJZS52aXNpYmxlID0gZmFsc2U7DQoJCQkJCQlpZiAoaW5k
ZXggPT0gbGFzdFJhZGlvSW5kZXggJiYgaGFzT3B0aW9uYWxUZXh0Qm94KQ0KCQkJ
CQkJew0KCQkJCQkJCXJvd3Nbcm93cy5sZW5ndGggLSAxXS5jZWxsc1tjb2x1bW5z
IC0gMV0uYXBwZW5kQ2hpbGQoZ2V0RWxlbWVudENvbnRhaW5lcihvcHRpb25hbFRl
eHRCb3gpKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCXZhciBpc1F1
ZXN0aW9uTmVlZEhpZGUgPSB0cnVlOw0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPD0gbGFzdFJhZGlvSW5kZXg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQl2
YXIgZSA9IHF1ZXN0aW9uLmVsZW1lbnRzW2luZGV4XTsNCgkJCQkJaWYgKGUudmlz
aWJsZSkNCgkJCQkJew0KCQkJCQkJaXNRdWVzdGlvbk5lZWRIaWRlID0gZmFsc2U7
DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGlzUXVlc3Rpb25OZWVkSGlkZSkNCgkJ
CQl7DQoJCQkJCXF1ZXN0aW9uLm5lZWRIaWRlID0gdHJ1ZTsNCgkJCQl9DQoNCgkJ
CQlpZiAoY2VsbEluZGV4ICE9IDAgJiYgcm93SW5kZXggPCByb3dzLmxlbmd0aCkN
CgkJCQl7DQoJCQkJCWZvciAoOyBjZWxsSW5kZXggPCBjb2x1bW5zOyArK2NlbGxJ
bmRleCkNCgkJCQkJew0KCQkJCQkJVXRpbHMuaGlkZUVsZW1lbnQocm93c1tyb3dJ
bmRleF0uY2VsbHNbY2VsbEluZGV4XSk7DQoJCQkJCX0NCgkJCQkJKytyb3dJbmRl
eDsNCgkJCQl9DQoNCgkJCQlmb3IgKDsgcm93SW5kZXggPCByb3dzLmxlbmd0aDsg
Kytyb3dJbmRleCkNCgkJCQl7DQoJCQkJCVV0aWxzLmhpZGVFbGVtZW50KHJvd3Nb
cm93SW5kZXhdKTsNCgkJCQl9DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIGlzRml4ZWQo
ZWxlbWVudCkNCgkJCXsNCgkJCQlyZXR1cm4gKGVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJmaXhlZCIpID09ICIxIik7DQoJCQl9DQoNCgkJCXRoaXMucmFuZG9taXplID0g
ZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlpZiAocXVlc3Rpb24ubmVlZFJhbmRvbWl6
YXRpb24oKSAmJiBsYXN0UmFkaW9JbmRleCA+IDApDQoJCQkJew0KCQkJCQl2YXIg
cmFuZG9taXplZE9wdGlvbnMgPSBbXTsNCgkJCQkJdmFyIG5vbkZpeGVkT3B0aW9u
cyA9IFtdOw0KDQoJCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsYXN0
UmFkaW9JbmRleDsgKytpbmRleCkNCgkJCQkJew0KCQkJCQkJaWYgKGlzRml4ZWQo
cXVlc3Rpb24uZWxlbWVudHNbaW5kZXhdKSkNCgkJCQkJCXsNCgkJCQkJCQlyYW5k
b21pemVkT3B0aW9uc1tpbmRleF0gPSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07
DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJbm9uRml4ZWRP
cHRpb25zLnB1c2goaW5kZXgpOw0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJaWYg
KGhhc09wdGlvbmFsVGV4dEJveCB8fCBpc0ZpeGVkKHF1ZXN0aW9uLmVsZW1lbnRz
W2xhc3RSYWRpb0luZGV4XSkpDQoJCQkJCXsNCgkJCQkJCXJhbmRvbWl6ZWRPcHRp
b25zW2xhc3RSYWRpb0luZGV4XSA9IHF1ZXN0aW9uLmVsZW1lbnRzW2xhc3RSYWRp
b0luZGV4XTsNCgkJCQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCW5vbkZp
eGVkT3B0aW9ucy5wdXNoKGxhc3RSYWRpb0luZGV4KTsNCgkJCQkJfQ0KDQoJCQkJ
CVV0aWxzLnJhbmRvbWl6ZShub25GaXhlZE9wdGlvbnMpOw0KDQoJCQkJCWZvciAo
dmFyIGluZGV4ID0gMDsgaW5kZXggPD0gbGFzdFJhZGlvSW5kZXg7ICsraW5kZXgp
DQoJCQkJCXsNCgkJCQkJCWlmIChyYW5kb21pemVkT3B0aW9uc1tpbmRleF0gPT0g
bnVsbCkNCgkJCQkJCXsNCgkJCQkJCQlyYW5kb21pemVkT3B0aW9uc1tpbmRleF0g
PSBxdWVzdGlvbi5lbGVtZW50c1tub25GaXhlZE9wdGlvbnMuc2hpZnQoKV07DQoJ
CQkJCQl9DQoJCQkJCX0NCg0KCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8PSBsYXN0
UmFkaW9JbmRleDsgKytpKQ0KCQkJCQl7DQoJCQkJCQlpZiAocmFuZG9taXplZE9w
dGlvbnNbaV0gIT0gcXVlc3Rpb24uZWxlbWVudHNbaV0pDQoJCQkJCQl7DQoJCQkJ
CQkJZm9yICh2YXIgaiA9IDA7IGogPD0gbGFzdFJhZGlvSW5kZXg7ICsraikNCgkJ
CQkJCQl7DQoJCQkJCQkJCWlmIChxdWVzdGlvbi5lbGVtZW50c1tqXSA9PSByYW5k
b21pemVkT3B0aW9uc1tpXSkNCgkJCQkJCQkJew0KCQkJCQkJCQkJcXVlc3Rpb24u
ZWxlbWVudHNbal0gPSBxdWVzdGlvbi5lbGVtZW50c1tpXTsNCgkJCQkJCQkJCXF1
ZXN0aW9uLmVsZW1lbnRzW2ldID0gcmFuZG9taXplZE9wdGlvbnNbaV07DQoNCgkJ
CQkJCQkJCWJyZWFrOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJ
CQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQl0aGlzLmdldEFuc3dlcnMgPSBmdW5jdGlv
biAoKQ0KCQkJew0KCQkJCXZhciBhbnN3ZXJzID0gW107DQoNCgkJCQlmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDw9IGxhc3RSYWRpb0luZGV4OyArK2luZGV4KQ0K
CQkJCXsNCgkJCQkJdmFyIGUgPSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJ
CQkJCWlmIChlLnZpc2libGUgJiYgZS5jaGVja2VkKQ0KCQkJCQl7DQoJCQkJCQl2
YXIgaWQgPSBlLmlkLCB2YWx1ZSA9IGUudmFsdWUsIHRleHQgPSAiIjsNCg0KCQkJ
CQkJaWYgKGluZGV4ID09IGxhc3RSYWRpb0luZGV4ICYmIGhhc09wdGlvbmFsVGV4
dEJveCkNCgkJCQkJCXsNCgkJCQkJCQl0ZXh0ID0gb3B0aW9uYWxUZXh0Qm94LnZh
bHVlOw0KCQkJCQkJfQ0KDQoJCQkJCQlhbnN3ZXJzLnB1c2goeyBpZDogaWQsIHZh
bHVlOiB2YWx1ZSwgdGV4dDogdGV4dCB9KTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJ
CXJldHVybiBhbnN3ZXJzOw0KCQkJfQ0KDQoJCQl2YXIgc3RhdGVzID0gbnVsbDsN
Cg0KCQkJdGhpcy5zYXZlID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlzdGF0ZXMg
PSBbXTsNCg0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPD0gbGFzdFJh
ZGlvSW5kZXg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQlzdGF0ZXMucHVzaChxdWVz
dGlvbi5lbGVtZW50c1tpbmRleF0uY2hlY2tlZCk7DQoJCQkJfQ0KDQoJCQkJaWYg
KGhhc09wdGlvbmFsVGV4dEJveCkNCgkJCQl7DQoJCQkJCXN0YXRlcy5wdXNoKHsg
dmFsdWU6IG9wdGlvbmFsVGV4dEJveC52YWx1ZSwgZGlzYWJsZWQ6IG9wdGlvbmFs
VGV4dEJveC5kaXNhYmxlZCB9KTsNCgkJCQl9DQoJCQl9DQoNCgkJCWZ1bmN0aW9u
IGdldE9wdGlvblRleHQoaW5kZXgpDQoJCQl7DQoJCQkJdmFyIGUgPSBxdWVzdGlv
bi5lbGVtZW50c1tpbmRleF07DQoJCQkJcmV0dXJuIChlLnZpc2libGUgJiYgZS5j
aGVja2VkKSA/ICgoaW5kZXggPT0gbGFzdFJhZGlvSW5kZXggJiYgaGFzT3B0aW9u
YWxUZXh0Qm94KSA/IG9wdGlvbmFsVGV4dEJveC52YWx1ZSA6IGUucGFyZW50Tm9k
ZS5uZXh0U2libGluZy5pbm5lckhUTUwpIDogbnVsbDsNCgkJCX0NCg0KCQkJZnVu
Y3Rpb24gZ2V0T3B0aW9uVmFyaWFibGUoaW5kZXgpDQoJCQl7DQoJCQkJdmFyIGUg
PSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJCQkJdmFyIHZhcmlhYmxlID0g
ZS5nZXRBdHRyaWJ1dGUoInZhciIpOw0KDQoJCQkJaWYgKHZhcmlhYmxlICE9IG51
bGwgJiYgdmFyaWFibGUgIT0gIiIpDQoJCQkJew0KCQkJCQlyZXR1cm4geyBuYW1l
OiB2YXJpYWJsZSwgdmFsdWU6IGdldE9wdGlvblRleHQoaW5kZXgpIH07DQoJCQkJ
fQ0KDQoJCQkJcmV0dXJuIG51bGw7DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIGdldFF1
ZXN0aW9uVmFyaWFibGUoKQ0KCQkJew0KCQkJCXZhciB2YXJpYWJsZSA9IHF1ZXN0
aW9uLmRvbU9iamVjdC5nZXRBdHRyaWJ1dGUoInZhciIpOw0KDQoJCQkJaWYgKHZh
cmlhYmxlICE9IG51bGwgJiYgdmFyaWFibGUgIT0gIiIpDQoJCQkJew0KCQkJCQl2
YXIgdmFsdWUgPSAiIjsNCgkJCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8
PSBsYXN0UmFkaW9JbmRleDsgKytpbmRleCkNCgkJCQkJew0KCQkJCQkJdmFyIGUg
PSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJCQkJCQlpZiAoZS52aXNpYmxl
ICYmIGUuY2hlY2tlZCkNCgkJCQkJCXsNCgkJCQkJCQl2YWx1ZSArPSAiLCAiICsg
Z2V0T3B0aW9uVGV4dChpbmRleCk7DQoJCQkJCQl9DQoJCQkJCX0NCg0KCQkJCQly
ZXR1cm4geyBuYW1lOiB2YXJpYWJsZSwgdmFsdWU6ICh2YWx1ZS5sZW5ndGggPiAy
ID8gdmFsdWUuc3Vic3RyaW5nKDIpIDogbnVsbCkgfTsNCgkJCQl9DQoNCgkJCQly
ZXR1cm4gbnVsbDsNCgkJCX0NCg0KCQkJdGhpcy5wb3B1bGF0ZVZhcmlhYmxlcyA9
IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJdmFyIHZhcmlhYmxlcyA9IFtdOw0KDQoJ
CQkJdmFyIHF1ZXN0aW9uVmFyaWFibGUgPSBnZXRRdWVzdGlvblZhcmlhYmxlKCk7
DQoNCgkJCQlpZiAocXVlc3Rpb25WYXJpYWJsZSAhPSBudWxsKQ0KCQkJCXsNCgkJ
CQkJdmFyaWFibGVzW3F1ZXN0aW9uVmFyaWFibGUubmFtZV0gPSBxdWVzdGlvblZh
cmlhYmxlLnZhbHVlOw0KCQkJCX0NCg0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPD0gbGFzdFJhZGlvSW5kZXg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQl2
YXIgb3B0aW9uVmFyaWFibGUgPSBnZXRPcHRpb25WYXJpYWJsZShpbmRleCk7DQoN
CgkJCQkJaWYgKG9wdGlvblZhcmlhYmxlICE9IG51bGwpDQoJCQkJCXsNCgkJCQkJ
CXZhcmlhYmxlc1tvcHRpb25WYXJpYWJsZS5uYW1lXSA9IG9wdGlvblZhcmlhYmxl
LnZhbHVlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHZhcmlhYmxlczsN
CgkJCX0NCg0KCQkJdGhpcy5nZXRPcHRpb25CeUlkID0gZnVuY3Rpb24gKG9wdGlv
bklkKQ0KCQkJew0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPD0gbGFz
dFJhZGlvSW5kZXg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQlpZiAocXVlc3Rpb24u
ZWxlbWVudHNbaW5kZXhdLnZpc2libGUgJiYgcXVlc3Rpb24uZWxlbWVudHNbaW5k
ZXhdLmlkID09IG9wdGlvbklkKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gcXVlc3Rp
b24uZWxlbWVudHNbaW5kZXhdOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJcmV0dXJu
IG51bGw7DQoJCQl9DQoNCgkJCXRoaXMucmVzdG9yZSA9IGZ1bmN0aW9uICgpDQoJ
CQl7DQoJCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8PSBsYXN0UmFkaW9J
bmRleDsgKytpbmRleCkNCgkJCQl7DQoJCQkJCXF1ZXN0aW9uLmVsZW1lbnRzW2lu
ZGV4XS5jaGVja2VkID0gc3RhdGVzW2luZGV4XTsNCgkJCQl9DQoNCgkJCQlpZiAo
aGFzT3B0aW9uYWxUZXh0Qm94KQ0KCQkJCXsNCgkJCQkJb3B0aW9uYWxUZXh0Qm94
LnZhbHVlID0gc3RhdGVzW3N0YXRlcy5sZW5ndGggLSAxXS52YWx1ZTsNCgkJCQkJ
b3B0aW9uYWxUZXh0Qm94LmRpc2FibGVkID0gc3RhdGVzW3N0YXRlcy5sZW5ndGgg
LSAxXS5kaXNhYmxlZDsNCgkJCQl9DQoJCQl9DQoJCX0sDQoNCgkJZ2hyT3BlcmF0
b3I6IGZ1bmN0aW9uIChxdWVzdGlvbikNCgkJew0KCQkJdmFyIFV0aWxzID0gTVMu
U3VwcG9ydC5GbXMuVXRpbHM7DQoNCgkJCXZhciByYW5raW5nID0gVXRpbHMuZ2V0
Q2hpbGRCeU5hbWUocXVlc3Rpb24uZG9tT2JqZWN0LCAicmFua2luZyIpOw0KCQkJ
dmFyIGlzUmFua2luZyA9IHJhbmtpbmcgJiYgcmFua2luZy52YWx1ZSA9PSAiMSI7
DQoNCgkJCXZhciB0YWJsZSA9IHF1ZXN0aW9uLmRvbU9iamVjdC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGFibGUiKVswXTsNCgkJCXZhciBsYWJlbFJvdyA9IHRhYmxl
LnJvd3NbMF07DQoJCQl2YXIgaGVhZGVyUm93ID0gdGFibGUucm93c1sxXTsNCg0K
CQkJdmFyIGdoclJvd3MgPSBVdGlscy5maW5kQ2hpbGROb2RlcyhxdWVzdGlvbi5k
b21PYmplY3QsDQoJCQkJZnVuY3Rpb24gKGUpDQoJCQkJew0KCQkJCQlyZXR1cm4g
VXRpbHMuaGFzQ2xhc3MoZSwgIkdIUl9PRERST1ciKSB8fCBVdGlscy5oYXNDbGFz
cyhlLCAiR0hSX0VWRU5ST1ciKTsNCgkJCQl9DQoJCQkpOw0KDQoJCQl2YXIgY29s
dW1ucyA9IGhlYWRlclJvdy5jZWxscy5sZW5ndGggLSAxOw0KCQkJdmFyIHJvd3Mg
PSBnaHJSb3dzLmxlbmd0aDsNCg0KCQkJdmFyIGhhc0RvbnRLbm93ID0gcXVlc3Rp
b24uZWxlbWVudHNbMF0udmFsdWUgPT0gIjAiIHx8IHF1ZXN0aW9uLmVsZW1lbnRz
W2NvbHVtbnMgLSAxXS52YWx1ZSA9PSAiMCI7DQoNCgkJCWlmIChoYXNEb250S25v
dykNCgkJCXsNCgkJCQl2YXIgZG9udEtub3dDb2x1bW5JbmRleCA9IHF1ZXN0aW9u
LmVsZW1lbnRzWzBdLnZhbHVlID09ICIwIiA/IDAgOiBjb2x1bW5zIC0gMTsNCgkJ
CX0NCg0KCQkJdmFyIGF1dG9IaWRlQ29sdW1ucyA9IGZhbHNlOw0KCQkJLy8gZm9y
IHJhbmtpbmcgcXVlc3Rpb24sIGlmIHJvdyBjb3VudCBlcXVhbHMgdG8gY29sdW1u
IGNvdW50IChleGNsdWRlIGRvbid0IGtub3cpLCB0aGVuIGNvbHVtbnMgc2hhbGwg
YmUgaGlkZSBhdXRvbWF0aWNhbGx5DQoJCQlpZiAoaXNSYW5raW5nICYmICgoaGFz
RG9udEtub3cgJiYgY29sdW1ucyA9PSByb3dzICsgMSkgfHwgKCghaGFzRG9udEtu
b3cpICYmIGNvbHVtbnMgPT0gcm93cykpKQ0KCQkJew0KCQkJCWF1dG9IaWRlQ29s
dW1ucyA9IHRydWU7DQoJCQl9DQoNCgkJCXZhciByYW5raW5nRGlyZWN0aW9uID0g
ImFzYyI7DQoNCgkJCWlmIChpc1JhbmtpbmcpDQoJCQl7DQoJCQkJdmFyIGluZGV4
ID0gKGhhc0RvbnRLbm93ICYmIGRvbnRLbm93Q29sdW1uSW5kZXggPT0gMCkgPyAx
IDogMDsNCg0KCQkJCWlmICgoaW5kZXggKyAxKSA8IGNvbHVtbnMgJiYgKHF1ZXN0
aW9uLmVsZW1lbnRzW2luZGV4XSAmJiBxdWVzdGlvbi5lbGVtZW50c1tpbmRleCAr
IDFdICYmIChxdWVzdGlvbi5lbGVtZW50c1tpbmRleF0udmFsdWUgPiBxdWVzdGlv
bi5lbGVtZW50c1tpbmRleCArIDFdLnZhbHVlKSkpDQoJCQkJew0KCQkJCQlyYW5r
aW5nRGlyZWN0aW9uID0gImRlc2MiOw0KCQkJCX0NCgkJCX0NCg0KCQkJdmFyIHZp
c2libGVSb3dDb3VudCA9IHJvd3M7DQoJCQl2YXIgdmlzaWJsZUNvbHVtbkNvdW50
ID0gY29sdW1uczsNCg0KCQkJdGhpcy52YWxpZGF0ZVJlcXVpcmVkID0gZnVuY3Rp
b24gKCkNCgkJCXsNCgkJCQl2YXIgY291bnQgPSAwOw0KCQkJCWZvciAodmFyIGlu
ZGV4ID0gMDsgaW5kZXggPCBxdWVzdGlvbi5lbGVtZW50cy5sZW5ndGg7ICsraW5k
ZXgpDQoJCQkJew0KCQkJCQl2YXIgZSA9IHF1ZXN0aW9uLmVsZW1lbnRzW2luZGV4
XTsNCgkJCQkJaWYgKGUudmlzaWJsZSAmJiBlLmNoZWNrZWQpDQoJCQkJCXsNCgkJ
CQkJCSsrY291bnQ7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlpZiAoaXNSYW5raW5n
ICYmIGNvdW50ID09IE1hdGgubWluKHZpc2libGVSb3dDb3VudCwgdmlzaWJsZUNv
bHVtbkNvdW50KQ0KICAgICAgICAgICAgICAgIHx8ICFpc1JhbmtpbmcgJiYgY291
bnQgPT0gdmlzaWJsZVJvd0NvdW50KQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHRydWU7
DQoJCQkJfQ0KDQoJCQkJaWYgKHF1ZXN0aW9uLmVsZW1lbnRzLmxlbmd0aCA9PSAw
KQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHRydWU7DQoJCQkJfQ0KDQoJCQkJcmV0dXJu
IGZhbHNlOw0KCQkJfQ0KDQoJCQl0aGlzLnZhbGlkYXRlSW5wdXQgPSBmdW5jdGlv
biAoKQ0KCQkJew0KCQkJCXJldHVybiBuZXcgTVMuU3VwcG9ydC5GbXMuVmFsaWRh
dGVSZXN1bHQodHJ1ZSk7DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIGhhbmRsZVJhbmtp
bmdSYWRpb0NsaWNrKHJvd0luZGV4LCBjb2x1bW5JbmRleCkNCgkJCXsNCgkJCQlp
ZiAoaGFzRG9udEtub3cgJiYgY29sdW1uSW5kZXggPT0gZG9udEtub3dDb2x1bW5J
bmRleCkNCgkJCQl7DQoJCQkJCXJldHVybjsgLy8gc2tpcCBkb24ndCBrbm93bg0K
CQkJCX0NCg0KCQkJCXZhciBpbmRleCA9IHJvd0luZGV4ICogY29sdW1ucyArIGNv
bHVtbkluZGV4Ow0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgcm93czsgKytpKQ0K
CQkJCXsNCgkJCQkJdmFyIGVsZW1lbnRJbmRleCA9IGkgKiBjb2x1bW5zICsgY29s
dW1uSW5kZXg7DQoNCgkJCQkJaWYgKGVsZW1lbnRJbmRleCAhPSBpbmRleCkNCgkJ
CQkJew0KCQkJCQkJcXVlc3Rpb24uZWxlbWVudHNbZWxlbWVudEluZGV4XS5jaGVj
a2VkID0gZmFsc2U7DQoJCQkJCX0NCg0KCQkJCX0NCgkJCX0NCg0KCQkJdGhpcy5w
cmVwYXJlID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQl2aXNpYmxlUm93Q291bnQg
PSAwOw0KCQkJCXZhciBzdGF0aWNPcHRpb25Db3VudCA9IDA7DQoJCQkJZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IGdoclJvd3MubGVuZ3RoOyArK2luZGV4KQ0K
CQkJCXsNCgkJCQkJdmFyIHJvdyA9IGdoclJvd3NbaW5kZXhdOw0KDQoJCQkJCXZh
ciBzaG93SWYgPSB0cnVlLCBTZWxlY3RJZiA9IGZhbHNlOw0KCQkJCQl2YXIgdmlz
aWJpbGl0eSA9IHJvdy5nZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiKTsNCgkJCQkJ
dmFyIHJldFZhbCA9IHF1ZXN0aW9uLnN1cnZleS5FdmFsdWF0ZUNvbnRleHRWaXNp
YmlsaXR5KHJvdyk7DQoNCgkJCQkJc3dpdGNoICh2aXNpYmlsaXR5KQ0KCQkJCQl7
DQoJCQkJCQljYXNlICJTaG93IjoNCgkJCQkJCQlzaG93SWYgPSByZXRWYWwgPT0g
Ik5vdEV4aXN0IiA/IGZhbHNlIDogcmV0VmFsID09ICJFdmFsVHJ1ZSIgPyB0cnVl
IDogZmFsc2U7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICJIaWRlIjoNCgkJ
CQkJCQlzaG93SWYgPSByZXRWYWwgPT0gIk5vdEV4aXN0IiA/IHRydWUgOiByZXRW
YWwgPT0gIkV2YWxUcnVlIiA/IGZhbHNlIDogdHJ1ZTsNCgkJCQkJCQlicmVhazsN
CgkJCQkJCWNhc2UgIlNlbGVjdGVkIjoNCgkJCQkJCQlzaG93SWYgPSB0cnVlOw0K
CQkJCQkJCS8vTm90IGltcGxlbWVudCBzZWxlY3RlZCBsb2dpYyBpbiBHSFIvU0hS
IG9wdGlvbiBjdXJyZW50bHkuDQoJCQkJCQkJYnJlYWs7DQoJCQkJCQlkZWZhdWx0
Og0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoNCgkJCQkJaWYgKHNob3dJZikNCgkJ
CQkJew0KCQkJCQkJKyt2aXNpYmxlUm93Q291bnQ7DQoJCQkJCQlpZiAocXVlc3Rp
b24uaXNTdGF0aWNPcHRpb24ocm93KSkNCgkJCQkJCXsNCgkJCQkJCQkrK3N0YXRp
Y09wdGlvbkNvdW50Ow0KCQkJCQkJfQ0KDQoJCQkJCQlVdGlscy5yZW1vdmVDbGFz
cyhyb3csICJHSFJfRVZFTlJPVyBHSFJfT0REUk9XIik7DQoJCQkJCQlVdGlscy5h
ZGRDbGFzcyhyb3csIHZpc2libGVSb3dDb3VudCAlIDIgPT0gMCA/ICJHSFJfRVZF
TlJPVyIgOiAiR0hSX09ERFJPVyIpOw0KCQkJCQkJVXRpbHMuZGlzcGxheVRhYmxl
Um93KHJvdyk7DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQlVdGls
cy5oaWRlRWxlbWVudChyb3cpOw0KCQkJCQl9DQoNCgkJCQkJcm93LnZpc2libGUg
PSBzaG93SWY7DQoNCgkJCQkJdmFyIHN0YXJ0SiA9IGluZGV4ICogY29sdW1ucywg
ZW5kSiA9IHN0YXJ0SiArIGNvbHVtbnM7DQoJCQkJCWZvciAodmFyIGogPSBzdGFy
dEo7IGogPCBlbmRKOyArK2opDQoJCQkJCXsNCgkJCQkJCXF1ZXN0aW9uLmVsZW1l
bnRzW2pdLnZpc2libGUgPSBzaG93SWY7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlp
ZiAoYXV0b0hpZGVDb2x1bW5zICYmIHZpc2libGVSb3dDb3VudCA+IDApDQoJCQkJ
ew0KCQkJCQl2aXNpYmxlQ29sdW1uQ291bnQgPSBNYXRoLm1pbihjb2x1bW5zLCB2
aXNpYmxlUm93Q291bnQgKyAoaGFzRG9udEtub3cgPyAxIDogMCkpOw0KCQkJCQl2
YXIgY2VsbFdpZHRoID0gKDAuNzUgLyB2aXNpYmxlQ29sdW1uQ291bnQgKiAxMDAp
ICsgIiUiOw0KCQkJCQl2YXIgZmlyc3RSYW5raW5nQ29sdW1uSW5kZXggPSAoaGFz
RG9udEtub3cgJiYgZG9udEtub3dDb2x1bW5JbmRleCA9PSAwKSA/IDEgOiAwOw0K
CQkJCQl2YXIgcmFua2luZ0NvbHVtbkNvdW50ID0gY29sdW1ucyAtIChoYXNEb250
S25vdyA/IDEgOiAwKTsNCgkJCQkJdmFyIHZpc2libGVSYW5raW5nQ29sdW1uQ291
bnQgPSB2aXNpYmxlQ29sdW1uQ291bnQgLSAoaGFzRG9udEtub3cgPyAxIDogMCk7
DQoNCgkJCQkJZm9yIChpbmRleCA9IGZpcnN0UmFua2luZ0NvbHVtbkluZGV4OyBp
bmRleCA8IHJhbmtpbmdDb2x1bW5Db3VudDsgKytpbmRleCkNCgkJCQkJew0KCQkJ
CQkJaWYgKChyYW5raW5nRGlyZWN0aW9uID09ICJhc2MiICYmIGluZGV4IDwgdmlz
aWJsZVJhbmtpbmdDb2x1bW5Db3VudCkgfHwgKHJhbmtpbmdEaXJlY3Rpb24gPT0g
ImRlc2MiICYmIGluZGV4ID49IChyYW5raW5nQ29sdW1uQ291bnQgLSB2aXNpYmxl
UmFua2luZ0NvbHVtbkNvdW50KSkpDQoJCQkJCQl7DQoJCQkJCQkJVXRpbHMuZGlz
cGxheVRhYmxlQ2VsbChsYWJlbFJvdy5jZWxsc1tpbmRleCArIDFdKTsNCgkJCQkJ
CQlVdGlscy5kaXNwbGF5VGFibGVDZWxsKGhlYWRlclJvdy5jZWxsc1tpbmRleCAr
IDFdKTsNCgkJCQkJCQloZWFkZXJSb3cuY2VsbHNbaW5kZXhdLndpZHRoID0gY2Vs
bFdpZHRoOw0KCQkJCQkJfQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCVV0
aWxzLmhpZGVFbGVtZW50KGxhYmVsUm93LmNlbGxzW2luZGV4ICsgMV0pOw0KCQkJ
CQkJCVV0aWxzLmhpZGVFbGVtZW50KGhlYWRlclJvdy5jZWxsc1tpbmRleCArIDFd
KTsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCWZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPCBnaHJSb3dzLmxlbmd0aDsgKytpbmRleCkNCgkJCQkJew0KCQkJCQkJ
dmFyIHJvdyA9IGdoclJvd3NbaW5kZXhdOw0KCQkJCQkJaWYgKHJvdy52aXNpYmxl
KQ0KCQkJCQkJew0KCQkJCQkJCWZvciAodmFyIGogPSBmaXJzdFJhbmtpbmdDb2x1
bW5JbmRleDsgaiA8IHJhbmtpbmdDb2x1bW5Db3VudDsgKytqKQ0KCQkJCQkJCXsN
CgkJCQkJCQkJaWYgKChyYW5raW5nRGlyZWN0aW9uID09ICJhc2MiICYmIGogPCB2
aXNpYmxlUmFua2luZ0NvbHVtbkNvdW50KSB8fCAocmFua2luZ0RpcmVjdGlvbiA9
PSAiZGVzYyIgJiYgaiA+PSAocmFua2luZ0NvbHVtbkNvdW50IC0gdmlzaWJsZVJh
bmtpbmdDb2x1bW5Db3VudCkpKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQlVdGlscy5k
aXNwbGF5VGFibGVDZWxsKHJvdy5jZWxsc1tqICsgMV0pOw0KCQkJCQkJCQkJcXVl
c3Rpb24uZWxlbWVudHNbaW5kZXggKiBjb2x1bW5zICsgal0udmlzaWJsZSA9IHRy
dWU7DQoJCQkJCQkJCX0NCgkJCQkJCQkJZWxzZQ0KCQkJCQkJCQl7DQoJCQkJCQkJ
CQlVdGlscy5oaWRlRWxlbWVudChyb3cuY2VsbHNbaiArIDFdKTsNCgkJCQkJCQkJ
CXF1ZXN0aW9uLmVsZW1lbnRzW2luZGV4ICogY29sdW1ucyArIGpdLnZpc2libGUg
PSBmYWxzZTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0K
CQkJCX0NCg0KCQkJCWlmIChpc1JhbmtpbmcgJiYgKHZpc2libGVSb3dDb3VudCA8
PSAxICYmIHN0YXRpY09wdGlvbkNvdW50ID09IDApIHx8ICFpc1JhbmtpbmcgJiYg
KHZpc2libGVSb3dDb3VudCArIHN0YXRpY09wdGlvbkNvdW50ID09IDApKQ0KCQkJ
CXsNCgkJCQkJcXVlc3Rpb24ubmVlZEhpZGUgPSB0cnVlOw0KCQkJCX0NCgkJCX0N
Cg0KCQkJdGhpcy5wb3B1bGF0ZVZhcmlhYmxlcyA9IGZ1bmN0aW9uICgpDQoJCQl7
DQoJCQkJdmFyIHZhcmlhYmxlcyA9IFtdOw0KDQoJCQkJdmFyIHF1ZXN0aW9uVmFy
aWFibGUgPSBnZXRRdWVzdGlvblZhcmlhYmxlKCk7DQoJCQkJaWYgKHF1ZXN0aW9u
VmFyaWFibGUgIT0gbnVsbCkNCgkJCQl7DQoJCQkJCXZhcmlhYmxlc1txdWVzdGlv
blZhcmlhYmxlLm5hbWVdID0gcXVlc3Rpb25WYXJpYWJsZS52YWx1ZTsNCgkJCQl9
DQoJCQkJdmFyIG9wdGlvblZhcmlhYmxlID0gZ2V0T3B0aW9uVmFyaWFibGUoKTsN
CgkJCQlpZiAob3B0aW9uVmFyaWFibGUgIT0gbnVsbCkNCgkJCQl7DQoJCQkJCWZv
ciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBvcHRpb25WYXJpYWJsZS5sZW5ndGg7
ICsraW5kZXgpDQoJCQkJCXsNCgkJCQkJCXZhciB2YXJpYWJsZSA9IG9wdGlvblZh
cmlhYmxlW2luZGV4XTsNCgkJCQkJCXZhcmlhYmxlc1t2YXJpYWJsZS5uYW1lXSA9
IHZhcmlhYmxlLnZhbHVlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHZh
cmlhYmxlczsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gZ2V0UXVlc3Rpb25WYXJpYWJs
ZSgpDQoJCQl7DQoJCQkJdmFyIHZhcmlhYmxlID0gcXVlc3Rpb24uZG9tT2JqZWN0
LmdldEF0dHJpYnV0ZSgidmFyIik7DQoNCgkJCQlpZiAodmFyaWFibGUgIT0gbnVs
bCAmJiB2YXJpYWJsZSAhPSAiIikNCgkJCQl7DQoJCQkJCXZhciB2YWx1ZSA9ICIi
Ow0KCQkJCQlmb3IgKHZhciByID0gMDsgciA8PSByb3dzOyByKyspDQoJCQkJCXsN
CgkJCQkJCWZvciAodmFyIGMgPSAwOyBjIDwgY29sdW1uczsgYysrKQ0KCQkJCQkJ
ew0KCQkJCQkJCXZhciBlID0gcXVlc3Rpb24uZWxlbWVudHNbciAqIGNvbHVtbnMg
KyBjXTsNCgkJCQkJCQlpZiAoZSAmJiBlLnZpc2libGUgJiYgZS5jaGVja2VkKQ0K
CQkJCQkJCXsNCgkJCQkJCQkJdmFsdWUgKz0gIiwgIiArIGUuaWQudG9TdHJpbmco
KSArICJ8IiArIGUudmFsdWUudG9TdHJpbmcoKTsNCgkJCQkJCQl9DQoJCQkJCQl9
DQoJCQkJCX0NCgkJCQkJcmV0dXJuIHsgbmFtZTogdmFyaWFibGUsIHZhbHVlOiAo
dmFsdWUubGVuZ3RoID4gMiA/IHZhbHVlLnN1YnN0cmluZygyKSA6IG51bGwpIH07
DQoJCQkJfQ0KCQkJCXJldHVybiBudWxsOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBn
ZXRPcHRpb25WYXJpYWJsZSgpDQoJCQl7DQoJCQkJdmFyIHZhcmlhYmxlTGlzdCA9
IFtdOw0KDQoJCQkJZm9yICh2YXIgcm93ID0gMDsgcm93IDwgZ2hyUm93cy5sZW5n
dGg7ICsrcm93KQ0KCQkJCXsNCgkJCQkJdmFyIHZhcmlhYmxlTmFtZSA9IGdoclJv
d3Nbcm93XS5nZXRBdHRyaWJ1dGUoInZhciIpOw0KCQkJCQlpZiAoIXZhcmlhYmxl
TmFtZSkNCgkJCQkJew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0NCgkJCQkJZm9y
ICh2YXIgY29sID0gMDsgY29sIDwgY29sdW1uczsgKytjb2wpDQoJCQkJCXsNCgkJ
CQkJCXZhciBlID0gcXVlc3Rpb24uZWxlbWVudHNbcm93ICogY29sdW1ucyArIGNv
bF07DQoJCQkJCQlpZiAoZS52aXNpYmxlICYmIGUuY2hlY2tlZCkNCgkJCQkJCXsN
CgkJCQkJCQl2YXJpYWJsZUxpc3QucHVzaCh7IG5hbWU6IHZhcmlhYmxlTmFtZSwg
dmFsdWU6IGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpIH0pOw0KCQkJCQkJfQ0KCQkJ
CQl9DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHZhcmlhYmxlTGlzdDsNCgkJCX0NCg0K
CQkJdGhpcy5nZXRPcHRpb25CeUlkID0gZnVuY3Rpb24gKG9wdGlvbklkKQ0KCQkJ
ew0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgcXVlc3Rpb24uZWxlbWVudHMubGVu
Z3RoOyArK2kpDQoJCQkJew0KCQkJCQl2YXIgZWxlbWVudCA9IHF1ZXN0aW9uLmVs
ZW1lbnRzW2ldOw0KCQkJCQlpZiAoZWxlbWVudC52aXNpYmxlICYmIGVsZW1lbnQu
aWQgPT0gb3B0aW9uSWQgJiYgZWxlbWVudC5jaGVja2VkKQ0KCQkJCQl7DQoJCQkJ
CQlyZXR1cm4gZWxlbWVudDsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCXJldHVybiBu
dWxsOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBpc0ZpeGVkKGVsZW1lbnQpDQoJCQl7
DQoJCQkJcmV0dXJuIChlbGVtZW50LmdldEF0dHJpYnV0ZSgiZml4ZWQiKSA9PSAi
MSIpOw0KCQkJfQ0KDQoJCQl0aGlzLnJhbmRvbWl6ZSA9IGZ1bmN0aW9uICgpDQoJ
CQl7DQoJCQkJaWYgKHF1ZXN0aW9uLm5lZWRSYW5kb21pemF0aW9uKCkpDQoJCQkJ
ew0KCQkJCQl2YXIgcmFuZG9taXplZE9wdGlvbnMgPSBbXTsNCgkJCQkJdmFyIG5v
bkZpeGVkT3B0aW9ucyA9IFtdOw0KDQoJCQkJCWZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPCBnaHJSb3dzLmxlbmd0aDsgKytpbmRleCkNCgkJCQkJew0KCQkJCQkJ
aWYgKGlzRml4ZWQoZ2hyUm93c1tpbmRleF0pKQ0KCQkJCQkJew0KCQkJCQkJCXJh
bmRvbWl6ZWRPcHRpb25zW2luZGV4XSA9IGdoclJvd3NbaW5kZXhdOw0KCQkJCQkJ
fQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCW5vbkZpeGVkT3B0aW9ucy5w
dXNoKGluZGV4KTsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCVV0aWxzLnJhbmRv
bWl6ZShub25GaXhlZE9wdGlvbnMpOw0KDQoJCQkJCWZvciAodmFyIGluZGV4ID0g
MDsgaW5kZXggPCBnaHJSb3dzLmxlbmd0aDsgKytpbmRleCkNCgkJCQkJew0KCQkJ
CQkJaWYgKHJhbmRvbWl6ZWRPcHRpb25zW2luZGV4XSA9PSBudWxsKQ0KCQkJCQkJ
ew0KCQkJCQkJCXJhbmRvbWl6ZWRPcHRpb25zW2luZGV4XSA9IGdoclJvd3Nbbm9u
Rml4ZWRPcHRpb25zLnNoaWZ0KCldOw0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJ
Zm9yICh2YXIgaSA9IDA7IGkgPCBnaHJSb3dzLmxlbmd0aDsgKytpKQ0KCQkJCQl7
DQoJCQkJCQlpZiAocmFuZG9taXplZE9wdGlvbnNbaV0gIT0gZ2hyUm93c1tpXSkN
CgkJCQkJCXsNCgkJCQkJCQlmb3IgKHZhciBqID0gMDsgaiA8IGdoclJvd3MubGVu
Z3RoOyArK2opDQoJCQkJCQkJew0KCQkJCQkJCQlpZiAoZ2hyUm93c1tqXSA9PSBy
YW5kb21pemVkT3B0aW9uc1tpXSkNCgkJCQkJCQkJew0KCQkJCQkJCQkJVXRpbHMu
c3dhcE5vZGUoZ2hyUm93c1tpXSwgcmFuZG9taXplZE9wdGlvbnNbaV0pOw0KDQoJ
CQkJCQkJCQlnaHJSb3dzW2pdID0gZ2hyUm93c1tpXTsNCgkJCQkJCQkJCWdoclJv
d3NbaV0gPSByYW5kb21pemVkT3B0aW9uc1tpXTsNCg0KCQkJCQkJCQkJZm9yICh2
YXIgayA9IDA7IGsgPCBjb2x1bW5zOyArK2spDQoJCQkJCQkJCQl7DQoJCQkJCQkJ
CQkJdmFyIHQgPSBxdWVzdGlvbi5lbGVtZW50c1tpICogY29sdW1ucyArIGtdOw0K
CQkJCQkJCQkJCXF1ZXN0aW9uLmVsZW1lbnRzW2kgKiBjb2x1bW5zICsga10gPSBx
dWVzdGlvbi5lbGVtZW50c1tqICogY29sdW1ucyArIGtdOw0KCQkJCQkJCQkJCXF1
ZXN0aW9uLmVsZW1lbnRzW2ogKiBjb2x1bW5zICsga10gPSB0Ow0KCQkJCQkJCQkJ
fQ0KDQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJ
CX0NCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCWlmIChpc1JhbmtpbmcpDQoJCQkJew0K
CQkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgcXVlc3Rpb24uZWxlbWVu
dHMubGVuZ3RoOyArK2luZGV4KQ0KCQkJCQl7DQoJCQkJCQkoZnVuY3Rpb24gKCkN
CgkJCQkJCXsNCgkJCQkJCQl2YXIgY29sdW1uSW5kZXggPSBpbmRleCAlIGNvbHVt
bnM7DQoJCQkJCQkJdmFyIHJvd0luZGV4ID0gTWF0aC5mbG9vcihpbmRleCAvIGNv
bHVtbnMpOw0KDQoJCQkJCQkJVXRpbHMuYWRkRXZlbnRIYW5kbGVyKHF1ZXN0aW9u
LmVsZW1lbnRzW2luZGV4XSwgImNsaWNrIiwgZnVuY3Rpb24gKCkgeyBoYW5kbGVS
YW5raW5nUmFkaW9DbGljayhyb3dJbmRleCwgY29sdW1uSW5kZXgpOyByZXR1cm4g
dHJ1ZTsgfSk7DQoJCQkJCQl9KSgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJ
CQl0aGlzLmdldEFuc3dlcnMgPSBmdW5jdGlvbiAoKQ0KCQkJew0KCQkJCXZhciBh
bnN3ZXJzID0gW107DQoNCgkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwg
cXVlc3Rpb24uZWxlbWVudHMubGVuZ3RoOyArK2luZGV4KQ0KCQkJCXsNCgkJCQkJ
dmFyIGUgPSBxdWVzdGlvbi5lbGVtZW50c1tpbmRleF07DQoJCQkJCWlmIChlLnZp
c2libGUgJiYgZS5jaGVja2VkKQ0KCQkJCQl7DQoJCQkJCQl2YXIgaWQgPSBlLmlk
LCB2YWx1ZSA9IGUudmFsdWU7DQoJCQkJCQlhbnN3ZXJzLnB1c2goeyBpZDogaWQs
IHZhbHVlOiB2YWx1ZSwgdGV4dDogIiIgfSk7DQoJCQkJCX0NCgkJCQl9DQoNCgkJ
CQlyZXR1cm4gYW5zd2VyczsNCgkJCX0NCg0KCQkJdmFyIHN0YXRlcyA9IG51bGw7
DQoNCgkJCXRoaXMuc2F2ZSA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJc3RhdGVz
ID0gW107DQoNCgkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgcXVlc3Rp
b24uZWxlbWVudHMubGVuZ3RoOyArK2luZGV4KQ0KCQkJCXsNCgkJCQkJc3RhdGVz
LnB1c2gocXVlc3Rpb24uZWxlbWVudHNbaW5kZXhdLmNoZWNrZWQpOw0KCQkJCX0N
CgkJCX0NCg0KCQkJdGhpcy5yZXN0b3JlID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJ
CQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgcXVlc3Rpb24uZWxlbWVudHMu
bGVuZ3RoOyArK2luZGV4KQ0KCQkJCXsNCgkJCQkJcXVlc3Rpb24uZWxlbWVudHNb
aW5kZXhdLmNoZWNrZWQgPSBzdGF0ZXNbaW5kZXhdOw0KCQkJCX0NCgkJCX0NCgkJ
fSwNCg0KCQljaG9pY2VsaXN0T3BlcmF0b3I6IGZ1bmN0aW9uIChxdWVzdGlvbikN
CgkJew0KCQkJdmFyIFV0aWxzID0gTVMuU3VwcG9ydC5GbXMuVXRpbHM7DQoNCgkJ
CXZhciBzZWxlY3RPYmplY3QgPSBxdWVzdGlvbi5lbGVtZW50c1swXTsNCgkJCXNl
bGVjdE9iamVjdC5zZWxlY3RlZEluZGV4ID0gc2VsZWN0T2JqZWN0Lm11bHRpcGxl
ID8gLTEgOiAwOw0KCQkJdmFyIG9wdGlvbnMgPSBzZWxlY3RPYmplY3Qub3B0aW9u
czsNCg0KCQkJdmFyIGFsbE9wdGlvbnMgPSBbXTsNCg0KCQkJZm9yICh2YXIgaW5k
ZXggPSAwOyBpbmRleCA8IG9wdGlvbnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0K
CQkJCWFsbE9wdGlvbnMucHVzaCh7IG9wdGlvbjogb3B0aW9uc1tpbmRleF0sIHNl
bGVjdGVkOiBvcHRpb25zW2luZGV4XS5zZWxlY3RlZCB9KTsNCgkJCX0NCg0KCQkJ
dGhpcy52YWxpZGF0ZVJlcXVpcmVkID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlp
ZiAob3B0aW9ucy5sZW5ndGggPT0gMCB8fCBvcHRpb25zLmxlbmd0aCA9PSAxICYm
IG9wdGlvbnNbMF0udmFsdWUgPT0gLTEpDQoJCQkJew0KCQkJCQkvL2Ryb3AgZG93
biBzaW5nbGUgc2VsZWN0IHdoaWNoIGhhcyBvbmx5IG9uZSBub24tc2VsZWN0IGl0
ZW0uDQoJCQkJCXJldHVybiB0cnVlOw0KCQkJCX0NCgkJCQlmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDwgb3B0aW9ucy5sZW5ndGg7ICsraW5kZXgpDQoJCQkJew0K
CQkJCQl2YXIgb3B0aW9uID0gb3B0aW9uc1tpbmRleF07DQoJCQkJCWlmIChvcHRp
b24uc2VsZWN0ZWQgJiYgb3B0aW9uLmlkICE9ICIiICYmIG9wdGlvbi52YWx1ZSAh
PSAiIiAmJiBvcHRpb24udmFsdWUgIT0gLTEpDQoJCQkJCXsNCgkJCQkJCXJldHVy
biB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0N
Cg0KCQkJdGhpcy52YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJ
CQlyZXR1cm4gbmV3IE1TLlN1cHBvcnQuRm1zLlZhbGlkYXRlUmVzdWx0KHRydWUp
Ow0KCQkJfQ0KDQoJCQl0aGlzLnByZXBhcmUgPSBmdW5jdGlvbiAoKQ0KCQkJew0K
CQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhbGxPcHRpb25zLmxlbmd0
aDsgKytpbmRleCkNCgkJCQl7DQoJCQkJCWFsbE9wdGlvbnNbaW5kZXhdLnNlbGVj
dGVkID0gYWxsT3B0aW9uc1tpbmRleF0ub3B0aW9uLnNlbGVjdGVkOw0KCQkJCX0N
Cg0KCQkJCXNlbGVjdE9iamVjdC5vcHRpb25zLmxlbmd0aCA9IDA7DQoNCgkJCQlm
b3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYWxsT3B0aW9ucy5sZW5ndGg7ICsr
aW5kZXgpDQoJCQkJew0KCQkJCQl2YXIgYlNob3cgPSB0cnVlLCBiU2VsZWN0ID0g
YWxsT3B0aW9uc1tpbmRleF0ub3B0aW9uLnNlbGVjdGVkOw0KCQkJCQl2YXIgdmlz
aWJpbGl0eSA9IGFsbE9wdGlvbnNbaW5kZXhdLm9wdGlvbi5nZXRBdHRyaWJ1dGUo
InZpc2liaWxpdHkiKTsNCgkJCQkJdmFyIHJldFZhbCA9IHF1ZXN0aW9uLnN1cnZl
eS5FdmFsdWF0ZUNvbnRleHRWaXNpYmlsaXR5KGFsbE9wdGlvbnNbaW5kZXhdLm9w
dGlvbik7DQoNCgkJCQkJc3dpdGNoICh2aXNpYmlsaXR5KQ0KCQkJCQl7DQoJCQkJ
CQljYXNlICJTaG93IjoNCgkJCQkJCQliU2hvdyA9IHJldFZhbCA9PSAiTm90RXhp
c3QiID8gZmFsc2UgOiByZXRWYWwgPT0gIkV2YWxUcnVlIiA/IHRydWUgOiBmYWxz
ZTsNCgkJCQkJCQlicmVhazsNCgkJCQkJCWNhc2UgIkhpZGUiOg0KCQkJCQkJCWJT
aG93ID0gcmV0VmFsID09ICJOb3RFeGlzdCIgPyB0cnVlIDogcmV0VmFsID09ICJF
dmFsVHJ1ZSIgPyBmYWxzZSA6IHRydWU7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQlj
YXNlICJTZWxlY3RlZCI6DQoJCQkJCQkJYlNob3cgPSB0cnVlOw0KCQkJCQkJCWJT
ZWxlY3QgPSByZXRWYWwgPT0gIk5vdEV4aXN0IiA/IGZhbHNlIDogcmV0VmFsID09
ICJFdmFsVHJ1ZSIgPyB0cnVlIDogZmFsc2U7DQoJCQkJCQkJYnJlYWs7DQoJCQkJ
CQlkZWZhdWx0Og0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJCWlmIChiU2hv
dykNCgkJCQkJew0KCQkJCQkJc2VsZWN0T2JqZWN0Lm9wdGlvbnMuYWRkKGFsbE9w
dGlvbnNbaW5kZXhdLm9wdGlvbik7DQoJCQkJCQlpZiAoYlNlbGVjdCkNCgkJCQkJ
CXsNCgkJCQkJCQlhbGxPcHRpb25zW2luZGV4XS5vcHRpb24uc2VsZWN0ZWQgPSB0
cnVlOw0KCQkJCQkJfQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCWlmIChx
dWVzdGlvbi5nZXRRdWVzdGlvblR5cGUoKSA9PSAiQ0hPSUNFLUxJU1QiKQ0KCQkJ
CQkJCXsNCgkJCQkJCQkJdmFyIGhhc05vU2VsZWN0ZWRPcHRpb24gPSB0cnVlOw0K
CQkJCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGFsbE9wdGlvbnMubGVuZ3RoOyBp
KyspDQoJCQkJCQkJCXsNCgkJCQkJCQkJCWlmIChhbGxPcHRpb25zW2ldLm9wdGlv
bi5zZWxlY3RlZCAmJiBpICE9IGluZGV4KQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJ
CWhhc05vU2VsZWN0ZWRPcHRpb24gPSBmYWxzZTsNCgkJCQkJCQkJCQlicmVhazsN
CgkJCQkJCQkJCX0NCgkJCQkJCQkJfQ0KCQkJCQkJCQlzZWxlY3RPYmplY3Qub3B0
aW9uc1swXS5zZWxlY3RlZCA9IGhhc05vU2VsZWN0ZWRPcHRpb24gPyB0cnVlIDog
ZmFsc2U7DQoJCQkJCQkJfQ0KCQkJCQkJCWFsbE9wdGlvbnNbaW5kZXhdLm9wdGlv
bi5zZWxlY3RlZCA9IGZhbHNlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KDQoJ
CQkJaWYgKHNlbGVjdE9iamVjdC5vcHRpb25zLmxlbmd0aCA9PSAwIHx8IG9wdGlv
bnMubGVuZ3RoID09IDEgJiYgb3B0aW9uc1swXS52YWx1ZSA9PSAtMSkNCgkJCQl7
DQoJCQkJCXF1ZXN0aW9uLm5lZWRIaWRlID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoN
CgkJCWZ1bmN0aW9uIGdldE9wdGlvblRleHQoZSkNCgkJCXsNCgkJCQlyZXR1cm4g
ZS5zZWxlY3RlZCA/IGUudGV4dCA6IG51bGw7DQoJCQl9DQoNCgkJCWZ1bmN0aW9u
IGdldE9wdGlvblZhcmlhYmxlKGluZGV4KQ0KCQkJew0KCQkJCXZhciBlID0gb3B0
aW9uc1tpbmRleF07DQoNCgkJCQl2YXIgdmFyaWFibGUgPSBlLmdldEF0dHJpYnV0
ZSgidmFyIik7DQoNCgkJCQlpZiAodmFyaWFibGUgIT0gbnVsbCAmJiB2YXJpYWJs
ZSAhPSAiIikNCgkJCQl7DQoJCQkJCXJldHVybiB7IG5hbWU6IHZhcmlhYmxlLCB2
YWx1ZTogZ2V0T3B0aW9uVGV4dChlKSB9Ow0KCQkJCX0NCg0KCQkJCXJldHVybiBu
dWxsOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBnZXRRdWVzdGlvblZhcmlhYmxlKCkN
CgkJCXsNCgkJCQl2YXIgdmFyaWFibGUgPSBxdWVzdGlvbi5kb21PYmplY3QuZ2V0
QXR0cmlidXRlKCJ2YXIiKTsNCg0KCQkJCWlmICh2YXJpYWJsZSAhPSBudWxsICYm
IHZhcmlhYmxlICE9ICIiKQ0KCQkJCXsNCgkJCQkJdmFyIHZhbHVlID0gIiI7DQoJ
CQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBvcHRpb25zLmxlbmd0aDsg
KytpbmRleCkNCgkJCQkJew0KCQkJCQkJdmFyIGUgPSBvcHRpb25zW2luZGV4XTsN
CgkJCQkJCWlmIChlLnNlbGVjdGVkKQ0KCQkJCQkJew0KCQkJCQkJCXZhbHVlICs9
ICIsIiArIGdldE9wdGlvblRleHQoZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJ
cmV0dXJuIHsgbmFtZTogdmFyaWFibGUsIHZhbHVlOiB2YWx1ZS5sZW5ndGggPiAx
ID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogbnVsbCB9Ow0KCQkJCX0NCg0KCQkJCXJl
dHVybiBudWxsOw0KCQkJfQ0KDQoJCQl0aGlzLnBvcHVsYXRlVmFyaWFibGVzID0g
ZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQl2YXIgdmFyaWFibGVzID0gW107DQoNCgkJ
CQl2YXIgcXVlc3Rpb25WYXJpYWJsZSA9IGdldFF1ZXN0aW9uVmFyaWFibGUoKTsN
CgkJCQlpZiAocXVlc3Rpb25WYXJpYWJsZSAhPSBudWxsKQ0KCQkJCXsNCgkJCQkJ
dmFyaWFibGVzW3F1ZXN0aW9uVmFyaWFibGUubmFtZV0gPSBxdWVzdGlvblZhcmlh
YmxlLnZhbHVlOw0KCQkJCX0NCg0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5k
ZXggPCBvcHRpb25zLmxlbmd0aDsgKytpbmRleCkNCgkJCQl7DQoJCQkJCXZhciBv
cHRpb25WYXJpYWJsZSA9IGdldE9wdGlvblZhcmlhYmxlKGluZGV4KTsNCg0KCQkJ
CQlpZiAob3B0aW9uVmFyaWFibGUgIT0gbnVsbCkNCgkJCQkJew0KCQkJCQkJdmFy
aWFibGVzW29wdGlvblZhcmlhYmxlLm5hbWVdID0gb3B0aW9uVmFyaWFibGUudmFs
dWU7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlyZXR1cm4gdmFyaWFibGVzOw0KCQkJ
fQ0KDQoJCQl0aGlzLmdldE9wdGlvbkJ5SWQgPSBmdW5jdGlvbiAob3B0aW9uSWQp
DQoJCQl7DQoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVzdGlvbi5lbGVtZW50
cy5sZW5ndGg7ICsraSkNCgkJCQl7DQoJCQkJCXZhciBlbGVtZW50ID0gcXVlc3Rp
b24uZWxlbWVudHNbaV07DQoJCQkJCWZvciAodmFyIGogPSAwOyBqIDwgZWxlbWVu
dC5vcHRpb25zLmxlbmd0aDsgKytqKQ0KCQkJCQl7DQoJCQkJCQlpZiAoZWxlbWVu
dC5vcHRpb25zW2pdLmlkID09IG9wdGlvbklkKQ0KCQkJCQkJew0KCQkJCQkJCXJl
dHVybiBlbGVtZW50Lm9wdGlvbnNbal07DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9
DQoNCgkJCQlyZXR1cm4gbnVsbDsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gaXNGaXhl
ZChvcHRpb24pDQoJCQl7DQoJCQkJcmV0dXJuIChvcHRpb24udmFsdWUgPT0gIi0x
IiB8fCBvcHRpb24uZ2V0QXR0cmlidXRlKCJmaXhlZCIpID09ICIxIik7DQoJCQl9
DQoNCgkJCXRoaXMucmFuZG9taXplID0gZnVuY3Rpb24gKCkNCgkJCXsNCgkJCQlp
ZiAocXVlc3Rpb24ubmVlZFJhbmRvbWl6YXRpb24oKSkNCgkJCQl7DQoJCQkJCXZh
ciByYW5kb21pemVkT3B0aW9ucyA9IFtdOw0KCQkJCQl2YXIgbm9uRml4ZWRPcHRp
b25zID0gW107DQoNCgkJCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGFs
bE9wdGlvbnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJCQl7DQoJCQkJCQlpZiAoaXNG
aXhlZChhbGxPcHRpb25zW2luZGV4XS5vcHRpb24pKQ0KCQkJCQkJew0KCQkJCQkJ
CXJhbmRvbWl6ZWRPcHRpb25zW2luZGV4XSA9IGFsbE9wdGlvbnNbaW5kZXhdOw0K
CQkJCQkJfQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCW5vbkZpeGVkT3B0
aW9ucy5wdXNoKGFsbE9wdGlvbnNbaW5kZXhdKTsNCgkJCQkJCX0NCgkJCQkJfQ0K
DQoJCQkJCVV0aWxzLnJhbmRvbWl6ZShub25GaXhlZE9wdGlvbnMpOw0KDQoJCQkJ
CWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhbGxPcHRpb25zLmxlbmd0aDsg
KytpbmRleCkNCgkJCQkJew0KCQkJCQkJaWYgKHJhbmRvbWl6ZWRPcHRpb25zW2lu
ZGV4XSA9PSBudWxsKQ0KCQkJCQkJew0KCQkJCQkJCWFsbE9wdGlvbnNbaW5kZXhd
ID0gbm9uRml4ZWRPcHRpb25zLnNoaWZ0KCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJ
CQl9DQoJCQl9DQoNCgkJCXRoaXMuZ2V0QW5zd2VycyA9IGZ1bmN0aW9uICgpDQoJ
CQl7DQoJCQkJdmFyIGFuc3dlcnMgPSBbXTsNCg0KCQkJCWZvciAodmFyIGluZGV4
ID0gMDsgaW5kZXggPCBvcHRpb25zLmxlbmd0aDsgKytpbmRleCkNCgkJCQl7DQoJ
CQkJCXZhciBvcHRpb24gPSBvcHRpb25zW2luZGV4XTsNCgkJCQkJaWYgKG9wdGlv
bi5zZWxlY3RlZCAmJiBvcHRpb24uaWQgIT0gIiIgJiYgb3B0aW9uLnZhbHVlICE9
ICIiICYmIG9wdGlvbi52YWx1ZSAhPSAtMSkNCgkJCQkJew0KCQkJCQkJYW5zd2Vy
cy5wdXNoKHsgaWQ6IG9wdGlvbi5pZCwgdmFsdWU6IG9wdGlvbi52YWx1ZSwgdGV4
dDogb3B0aW9uLnRleHQgPyBvcHRpb24udGV4dCA6ICIiIH0pOw0KCQkJCQl9DQoJ
CQkJfQ0KDQoJCQkJcmV0dXJuIGFuc3dlcnM7DQoJCQl9DQoNCgkJCXZhciBzdGF0
ZXMgPSBudWxsOw0KDQoJCQl0aGlzLnNhdmUgPSBmdW5jdGlvbiAoKQ0KCQkJew0K
CQkJCXN0YXRlcyA9IFtdOw0KDQoJCQkJc3RhdGVzLnNlbGVjdGVkSW5kZXggPSBz
ZWxlY3RPYmplY3Quc2VsZWN0ZWRJbmRleDsNCg0KCQkJCWZvciAodmFyIGluZGV4
ID0gMDsgaW5kZXggPCBhbGxPcHRpb25zLmxlbmd0aDsgKytpbmRleCkNCgkJCQl7
DQoJCQkJCXN0YXRlcy5wdXNoKGFsbE9wdGlvbnNbaW5kZXhdLm9wdGlvbi5zZWxl
Y3RlZCk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQl0aGlzLnJlc3RvcmUgPSBmdW5jdGlv
biAoKQ0KCQkJew0KCQkJCXNlbGVjdE9iamVjdC5zZWxlY3RlZEluZGV4ID0gc3Rh
dGVzLnNlbGVjdGVkSW5kZXg7DQoNCgkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGlu
ZGV4IDwgYWxsT3B0aW9ucy5sZW5ndGg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQlh
bGxPcHRpb25zW2luZGV4XS5vcHRpb24uc2VsZWN0ZWQgPSBzdGF0ZXNbaW5kZXhd
Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCX07DQoNCglNUy5TdXBwb3J0LkZtcy5CcmFu
Y2hSdWxlID0gZnVuY3Rpb24gKG9wdGlvbklkLCBvcHRpb25WYWx1ZSwgdGFyZ2V0
KQ0KCXsNCgkJdGhpcy5vcHRpb25JZCA9IG9wdGlvbklkOw0KCQl0aGlzLm9wdGlv
blZhbHVlID0gb3B0aW9uVmFsdWU7DQoJCXRoaXMudGFyZ2V0ID0gdGFyZ2V0Ow0K
DQoJCXRoaXMubWF0Y2ggPSBmdW5jdGlvbiAoZWxlbWVudCkNCgkJew0KCQkJaWYg
KChlbGVtZW50LnZpc2libGUgJiYgZWxlbWVudC5jaGVja2VkKSB8fCBlbGVtZW50
LnNlbGVjdGVkKQ0KCQkJew0KCQkJCWlmICh0eXBlb2YgKG9wdGlvbklkKSAhPSAi
dW5kZWZpbmVkIiAmJiBvcHRpb25JZCAhPSBudWxsKQ0KCQkJCXsNCgkJCQkJaWYg
KGVsZW1lbnQuaWQgPT0gb3B0aW9uSWQpDQoJCQkJCXsNCgkJCQkJCWlmICh0eXBl
b2YgKG9wdGlvblZhbHVlKSAhPSAidW5kZWZpbmVkIiAmJiBvcHRpb25WYWx1ZSAh
PSBudWxsKQ0KCQkJCQkJew0KCQkJCQkJCWlmIChlbGVtZW50LnZhbHVlID09IG9w
dGlvblZhbHVlKQ0KCQkJCQkJCXsNCgkJCQkJCQkJcmV0dXJuIHRhcmdldDsNCgkJ
CQkJCQl9DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJcmV0
dXJuIHRhcmdldDsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQllbHNlDQoJ
CQkJew0KCQkJCQlyZXR1cm4gdGFyZ2V0Ow0KCQkJCX0NCgkJCX0NCgkJCWVsc2Ug
aWYgKGVsZW1lbnQub3B0aW9ucyAhPSBudWxsKQ0KCQkJew0KCQkJCWZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCBlbGVtZW50Lm9wdGlvbnMubGVuZ3RoOyArK2lu
ZGV4KQ0KCQkJCXsNCgkJCQkJaWYgKHRhcmdldCA9PSB0aGlzLm1hdGNoKGVsZW1l
bnQub3B0aW9uc1tpbmRleF0pKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gdGFyZ2V0
Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gLTE7DQoJCX0NCgl9
DQoNCglNUy5TdXBwb3J0LkZtcy5Db25kaXRpb24gPSBmdW5jdGlvbiAocGFnZUlk
LCBxdWVzdGlvbklkLCBvcHRpb25JZCwgb3B0aW9uVmFsdWUpDQoJew0KCQl0aGlz
LmdldFBhZ2VJZCA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXJldHVybiBwYWdlSWQ7
DQoJCX0NCg0KCQl0aGlzLmdldFF1ZXN0aW9uSWQgPSBmdW5jdGlvbiAoKQ0KCQl7
DQoJCQlyZXR1cm4gcXVlc3Rpb25JZDsNCgkJfQ0KDQoJCXRoaXMuZ2V0T3B0aW9u
SWQgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gb3B0aW9uSWQ7DQoJCX0N
Cg0KCQl0aGlzLmdldE9wdGlvblZhbHVlID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJ
cmV0dXJuIG9wdGlvblZhbHVlOw0KCQl9DQoNCgkJdGhpcy5ldmFsdWF0ZSA9IGZ1
bmN0aW9uIChzdXJ2ZXkpDQoJCXsNCgkJCXZhciBwYWdlID0gc3VydmV5LmdldFBh
Z2VCeUlkKHBhZ2VJZCk7DQoJCQlpZiAocGFnZSAmJiBwYWdlLm1vZGlmaWVkKQ0K
CQkJew0KCQkJCXZhciBxdWVzdGlvbiA9IHBhZ2UuZ2V0UXVlc3Rpb25CeUlkKHF1
ZXN0aW9uSWQpOw0KCQkJCWlmIChxdWVzdGlvbikNCgkJCQl7DQoJCQkJCXZhciBv
cHRpb24gPSBxdWVzdGlvbi5nZXRPcHRpb25CeUlkKG9wdGlvbklkKTsNCgkJCQkJ
aWYgKG9wdGlvbikNCgkJCQkJew0KCQkJCQkJaWYgKCgob3B0aW9uLnZpc2libGUg
JiYgb3B0aW9uLmNoZWNrZWQpICYmICgocXVlc3Rpb24uZ2V0UXVlc3Rpb25UeXBl
KCkgIT0gIkNIT0lDRS1TRVEiICYmIHF1ZXN0aW9uLmdldFF1ZXN0aW9uVHlwZSgp
ICE9ICJDSE9JQ0UtSE9SIikgfHwgb3B0aW9uLnZhbHVlID09IG9wdGlvblZhbHVl
KSkgfHwgb3B0aW9uLnNlbGVjdGVkKQ0KCQkJCQkJew0KCQkJCQkJCXJldHVybiB0
cnVlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4g
ZmFsc2U7DQoJCX0NCgl9DQoNCglNUy5TdXBwb3J0LkZtcy5Db250ZXh0QnJhbmNo
UnVsZUNvbmRpdGlvbiA9IGZ1bmN0aW9uIChjb250ZXh0TmFtZSwgY29tcGFyaXNv
bk9wZXJhdG9yLCBleHBlY3RlZFZhbHVlKQ0KCXsNCgkJdGhpcy5jb250ZXh0TmFt
ZSA9IGNvbnRleHROYW1lOw0KCQl0aGlzLmNvbXBhcmlzb25PcGVyYXRvciA9IGNv
bXBhcmlzb25PcGVyYXRvcjsNCgkJdGhpcy5leHBlY3RlZFZhbHVlID0gZXhwZWN0
ZWRWYWx1ZTsNCg0KCQlpZiAodHlwZW9mIE1TLlN1cHBvcnQuRm1zLkNvbnRleHRC
cmFuY2hSdWxlQ29uZGl0aW9uLmV2YWx1YXRvcnMgPT0gInVuZGVmaW5lZCIpDQoJ
CXsNCgkJCU1TLlN1cHBvcnQuRm1zLkNvbnRleHRCcmFuY2hSdWxlQ29uZGl0aW9u
LmNyZWF0ZVJlZ2V4cCA9IGZ1bmN0aW9uIChzdHIpDQoJCQl7DQoJCQkJdmFyIGkg
PSBzdHIubGFzdEluZGV4T2YoIi8iKTsNCgkJCQl2YXIgcmUgPSBudWxsOw0KCQkJ
CXRyeQ0KCQkJCXsNCgkJCQkJcmUgPSBuZXcgUmVnRXhwKHN0ci5zdWJzdHJpbmco
MSwgaSksIHN0ci5zdWJzdHJpbmcoaSArIDEpKTsNCgkJCQl9DQoJCQkJY2F0Y2gg
KGVycikNCgkJCQl7DQoJCQkJCXJldHVybiBudWxsOw0KCQkJCX0NCg0KCQkJCXJl
dHVybiByZTsNCgkJCX07DQoNCgkJCU1TLlN1cHBvcnQuRm1zLkNvbnRleHRCcmFu
Y2hSdWxlQ29uZGl0aW9uLmV2YWx1YXRvcnMgPSB7DQoJCQkJIj0iOiBmdW5jdGlv
biAodmFsLCBleHBlY3RlZFZhbHVlKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHZhbC50
b1N0cmluZygpID09PSBleHBlY3RlZFZhbHVlOw0KCQkJCX0sDQoJCQkJIjw+Ijog
ZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRWYWx1ZSkNCgkJCQl7DQoJCQkJCXJldHVy
biB2YWwudG9TdHJpbmcoKSAhPT0gZXhwZWN0ZWRWYWx1ZTsNCgkJCQl9LA0KCQkJ
CSI+IjogZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRWYWx1ZSkNCgkJCQl7DQoJCQkJ
CXJldHVybiB2YWwudG9TdHJpbmcoKSA+IGV4cGVjdGVkVmFsdWU7DQoJCQkJfSwN
CgkJCQkiPCI6IGZ1bmN0aW9uICh2YWwsIGV4cGVjdGVkVmFsdWUpDQoJCQkJew0K
CQkJCQlyZXR1cm4gdmFsLnRvU3RyaW5nKCkgPCBleHBlY3RlZFZhbHVlOw0KCQkJ
CX0sDQoJCQkJIj49IjogZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRWYWx1ZSkNCgkJ
CQl7DQoJCQkJCXJldHVybiB2YWwudG9TdHJpbmcoKSA+PSBleHBlY3RlZFZhbHVl
Ow0KCQkJCX0sDQoJCQkJIjw9IjogZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRWYWx1
ZSkNCgkJCQl7DQoJCQkJCXJldHVybiB2YWwudG9TdHJpbmcoKSA8PSBleHBlY3Rl
ZFZhbHVlOw0KCQkJCX0sDQoJCQkJIkNvbnRhaW5zIjogZnVuY3Rpb24gKHZhbCwg
ZXhwZWN0ZWRWYWx1ZSkNCgkJCQl7DQoJCQkJCXJldHVybiB2YWwudG9TdHJpbmco
KS5pbmRleE9mKGV4cGVjdGVkVmFsdWUpICE9PSAtMTsNCgkJCQl9LA0KCQkJCSJO
b3QgQ29udGFpbiI6IGZ1bmN0aW9uICh2YWwsIGV4cGVjdGVkVmFsdWUpDQoJCQkJ
ew0KCQkJCQlyZXR1cm4gdmFsLnRvU3RyaW5nKCkuaW5kZXhPZihleHBlY3RlZFZh
bHVlKSA9PT0gLTE7DQoJCQkJfSwNCgkJCQkiU3RhcnRzIFdpdGgiOiBmdW5jdGlv
biAodmFsLCBleHBlY3RlZFZhbHVlKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHZhbC50
b1N0cmluZygpLmluZGV4T2YoZXhwZWN0ZWRWYWx1ZSkgPT09IDA7DQoJCQkJfSwN
CgkJCQkiTm90IFN0YXJ0IFdpdGgiOiBmdW5jdGlvbiAodmFsLCBleHBlY3RlZFZh
bHVlKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHZhbC50b1N0cmluZygpLmluZGV4T2Yo
ZXhwZWN0ZWRWYWx1ZSkgIT09IDA7DQoJCQkJfSwNCgkJCQkiRW5kcyBXaXRoIjog
ZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRWYWx1ZSkNCgkJCQl7DQoJCQkJCXZhbCA9
IHZhbC50b1N0cmluZygpOw0KCQkJCQl2YXIgaSA9IHZhbC5sYXN0SW5kZXhPZihl
eHBlY3RlZFZhbHVlKTsNCgkJCQkJcmV0dXJuIGkgIT09IC0xICYmIGkgPT09ICh2
YWwubGVuZ3RoIC0gZXhwZWN0ZWRWYWx1ZS5sZW5ndGgpOw0KCQkJCX0sDQoJCQkJ
Ik5vdCBFbmQgV2l0aCI6IGZ1bmN0aW9uICh2YWwsIGV4cGVjdGVkVmFsdWUpDQoJ
CQkJew0KCQkJCQl2YWwgPSB2YWwudG9TdHJpbmcoKTsNCgkJCQkJdmFyIGkgPSB2
YWwubGFzdEluZGV4T2YoZXhwZWN0ZWRWYWx1ZSk7DQoJCQkJCXJldHVybiBpID09
PSAtMSB8fCB2YWwubGFzdEluZGV4T2YoZXhwZWN0ZWRWYWx1ZSkgIT09ICh2YWwu
bGVuZ3RoIC0gZXhwZWN0ZWRWYWx1ZS5sZW5ndGgpOw0KCQkJCX0sDQoJCQkJIk1h
dGNoZXMiOiBmdW5jdGlvbiAodmFsLCBleHBlY3RlZFZhbHVlKQ0KCQkJCXsNCgkJ
CQkJdmFyIHJlID0gTVMuU3VwcG9ydC5GbXMuQ29udGV4dEJyYW5jaFJ1bGVDb25k
aXRpb24uY3JlYXRlUmVnZXhwKGV4cGVjdGVkVmFsdWUpOw0KCQkJCQlyZXR1cm4g
cmUgPyByZS50ZXN0KHZhbC50b1N0cmluZygpKSA6IGZhbHNlOw0KCQkJCX0sDQoJ
CQkJIk5vdCBNYXRjaCI6IGZ1bmN0aW9uICh2YWwsIGV4cGVjdGVkVmFsdWUpDQoJ
CQkJew0KCQkJCQl2YXIgcmUgPSBNUy5TdXBwb3J0LkZtcy5Db250ZXh0QnJhbmNo
UnVsZUNvbmRpdGlvbi5jcmVhdGVSZWdleHAoZXhwZWN0ZWRWYWx1ZSk7DQoJCQkJ
CXJldHVybiByZSA/ICEocmUudGVzdCh2YWwudG9TdHJpbmcoKSkpIDogZmFsc2U7
DQoJCQkJfSwNCgkJCQkiRXhpc3RzIjogZnVuY3Rpb24gKHZhbCwgZXhwZWN0ZWRW
YWx1ZSkNCgkJCQl7DQoJCQkJCXJldHVybiB0eXBlb2YgdmFsICE9ICd1bmRlZmlu
ZWQnICYmIHZhbCAhPSBudWxsOw0KCQkJCX0sDQoJCQkJIk5vdCBFeGlzdCI6IGZ1
bmN0aW9uICh2YWwsIGV4cGVjdGVkVmFsdWUpDQoJCQkJew0KCQkJCQlyZXR1cm4g
dHlwZW9mIHZhbCA9PSAndW5kZWZpbmVkJyB8fCB2YWwgPT0gbnVsbDsNCgkJCQl9
DQoJCQl9Ow0KCQl9DQoNCgkJdGhpcy5ldmFsdWF0ZSA9IGZ1bmN0aW9uIChjb250
ZXh0KQ0KCQl7DQoJCQlpZiAoY29udGV4dCA9PSBudWxsKQ0KCQkJew0KCQkJCXJl
dHVybiBmYWxzZTsNCgkJCX0NCg0KCQkJdmFyIHZhbCA9IGNvbnRleHRbdGhpcy5j
b250ZXh0TmFtZV07DQoJCQlpZiAoKHR5cGVvZiB2YWwgPT0gInVuZGVmaW5lZCIg
fHwgdmFsID09IG51bGwpICYmIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yICE9ICJF
eGlzdHMiICYmIHRoaXMuY29tcGFyaXNvbk9wZXJhdG9yICE9ICJOb3QgRXhpc3Qi
KQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCg0KCQkJdmFyIGV2YWx1
YXRvciA9IE1TLlN1cHBvcnQuRm1zLkNvbnRleHRCcmFuY2hSdWxlQ29uZGl0aW9u
LmV2YWx1YXRvcnNbdGhpcy5jb21wYXJpc29uT3BlcmF0b3JdOw0KCQkJcmV0dXJu
IGV2YWx1YXRvciA/IGV2YWx1YXRvcih2YWwsIHRoaXMuZXhwZWN0ZWRWYWx1ZSkg
OiBmYWxzZTsNCgkJfQ0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLkNvbXBvdW5kaW5n
QnJhbmNoUnVsZSA9IGZ1bmN0aW9uIChuZXh0UGFnZUlkLCBwcm9iYWJpbGl0eSkN
Cgl7DQoJCXRoaXMuY29uZGl0aW9ucyA9IFtdOw0KCQl0aGlzLmNvbnRleHRDb25k
aXRpb25zID0gW107DQoJCXRoaXMubmV4dFBhZ2VJZCA9IG5leHRQYWdlSWQ7DQoJ
CXRoaXMucHJvYmFiaWxpdHkgPSBwcm9iYWJpbGl0eTsNCg0KCQl0aGlzLmFkZENv
bmRpdGlvbnMgPSBmdW5jdGlvbiAoY2JycykNCgkJew0KCQkJZm9yICh2YXIgbiA9
IDA7IG4gPCBjYnJzLmxlbmd0aCAtIDE7IG4rKykNCgkJCXsNCgkJCQl2YXIgZGF0
YXMgPSBjYnJzW25dLnNwbGl0KCItIik7DQoJCQkJdmFyIHNvdXJjZVBhZ2VJZCA9
IHBhcnNlSW50KGRhdGFzWzBdKTsNCgkJCQl2YXIgcXVlc3Rpb25JZCA9IHBhcnNl
SW50KGRhdGFzWzFdKTsNCgkJCQl2YXIgb3B0aW9uSWQgPSBwYXJzZUludChkYXRh
c1syXSk7DQoJCQkJdmFyIG9wdGlvblZhbHVlID0gcGFyc2VJbnQoZGF0YXNbM10p
Ow0KCQkJCXRoaXMuY29uZGl0aW9ucy5wdXNoKG5ldyBNUy5TdXBwb3J0LkZtcy5D
b25kaXRpb24oc291cmNlUGFnZUlkLCBxdWVzdGlvbklkLCBvcHRpb25JZCwgb3B0
aW9uVmFsdWUpKTsNCgkJCX0NCg0KCQl9DQoNCgkJdGhpcy5hZGRDb250ZXh0Q29u
ZGl0aW9ucyA9IGZ1bmN0aW9uIChjbmJycykNCgkJew0KCQkJZm9yICh2YXIgbiA9
IDA7IG4gPCBjbmJycy5sZW5ndGg7IG4rKykNCgkJCXsNCgkJCQl2YXIgY25iciA9
IGNuYnJzW25dOw0KCQkJCXZhciBjb250ZXh0TmFtZSA9IGNuYnIuZ2V0QXR0cmli
dXRlKCdkYXRhLWNuYW1lJyk7DQoJCQkJdmFyIGNvbXBhcmlzaW9uT3BlcmF0b3Ig
PSBjbmJyLmdldEF0dHJpYnV0ZSgnZGF0YS1jb3BlcicpOw0KCQkJCXZhciBleHBl
Y3RlZFZhbHVlID0gY25ici5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3ZhbCcpOw0KCQkJ
CXRoaXMuY29udGV4dENvbmRpdGlvbnMucHVzaChuZXcgTVMuU3VwcG9ydC5GbXMu
Q29udGV4dEJyYW5jaFJ1bGVDb25kaXRpb24oY29udGV4dE5hbWUsIGNvbXBhcmlz
aW9uT3BlcmF0b3IsIGV4cGVjdGVkVmFsdWUpKTsNCgkJCX0NCgkJfQ0KDQoJCXRo
aXMuZXZhbHVhdGUgPSBmdW5jdGlvbiAoc3VydmV5LCBjb250ZXh0KQ0KCQl7DQoJ
CQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29uZGl0aW9ucy5sZW5ndGg7ICsr
aSkNCgkJCXsNCgkJCQlpZiAoIXRoaXMuY29uZGl0aW9uc1tpXS5ldmFsdWF0ZShz
dXJ2ZXkpKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCX0N
Cg0KCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbnRleHRDb25kaXRpb25z
Lmxlbmd0aDsgKytpKQ0KCQkJew0KCQkJCWlmICghdGhpcy5jb250ZXh0Q29uZGl0
aW9uc1tpXS5ldmFsdWF0ZShjb250ZXh0KSkNCgkJCQl7DQoJCQkJCXJldHVybiBm
YWxzZTsNCgkJCQl9DQoJCQl9DQoJCQkvLyBpZiBoaXQgdGhlIHByb2JhYmlsaXR5
LCByZXR1cm4gdHJ1ZQ0KCQkJLy8gZWxzZSByZXR1cm4gZmFsc2UNCgkJCWlmIChp
c05hTih0aGlzLnByb2JhYmlsaXR5KSB8fCB0aGlzLnByb2JhYmlsaXR5IDwgMCkN
CgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJCWVsc2UgaWYgKHRoaXMu
cHJvYmFiaWxpdHkgPiAwICYmIE1hdGgucmFuZG9tKCkgKiAxMDAgPD0gdGhpcy5w
cm9iYWJpbGl0eSkNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJCWVs
c2UNCgkJCXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1
ZTsNCgkJfQ0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLkV4cHJlc3Npb25XcmFwcGVy
ID0gZnVuY3Rpb24gKGV4cHJlc3Npb24sIHN1cnZleSkNCgl7DQoJCXZhciB2YXJp
YWJsZXMgPSBzdXJ2ZXkuZ2V0VmFyaWFibGVzKCk7DQoJCXZhciBjb250ZXh0ID0g
c3VydmV5LmdldENvbnRleHQoKTsNCgkJdmFyIHVybFBhcmFtZXRlcnMgPSBzdXJ2
ZXkudXJsUGFyYW1ldGVyczsNCg0KCQl2YXIgcmVGdW5jID0gLygoQU5EfE9SfE5P
VHxNYXRjaHxnZXRWYXJpYWJsZXxnZXRDb250ZXh0fEdyZWF0ZXJUaGFufExlc3NU
aGFufEdyZWF0ZXJUaGFuT3JFcXVhbHxMZXNzVGhhbk9yRXF1YWx8RXF1YWwpXCgp
L2c7DQoJCXZhciByZVZhciA9IC8oe1xAW159XSt9KS9naTsNCgkJdmFyIHJlQ29u
dGV4dCA9IC8oe1wkW159XSt9KS9naTsNCgkJdmFyIHRhZ1N0YXJ0ID0gInsiOw0K
CQl2YXIgdGFnRW5kID0gIn0iOw0KCQl2YXIgdmFyUHJlZml4ID0gIkAiOw0KCQl2
YXIgY29udGV4dFByZWZpeCA9ICIkIjsNCgkJdmFyIHBhcmFtZXRlclByZWZpeCA9
ICIkVXJsOiI7DQoNCgkJdGhpcy5lbmNvZGVWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1
ZSkNCgkJew0KCQkJaWYgKHR5cGVvZiAodmFsdWUpID09ICJ1bmRlZmluZWQiIHx8
IHZhbHVlID09IG51bGwpDQoJCQl7DQoJCQkJcmV0dXJuIHZhbHVlOw0KCQkJfSBl
bHNlDQoJCQl7DQoJCQkJcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyYvZywgIiZhbXA7
IikucmVwbGFjZSgvfS9nLCAiJnJiOyIpLnJlcGxhY2UoL3svZywgIiZsYjsiKTsN
CgkJCX0NCgkJfQ0KDQoJCXRoaXMuZGVjb2RlVmFsdWUgPSBmdW5jdGlvbiAodmFs
dWUpDQoJCXsNCgkJCWlmICh0eXBlb2YgKHZhbHVlKSA9PSAidW5kZWZpbmVkIiB8
fCB2YWx1ZSA9PSBudWxsKQ0KCQkJew0KCQkJCXJldHVybiB2YWx1ZTsNCgkJCX0g
ZWxzZQ0KCQkJew0KCQkJCXJldHVybiB2YWx1ZS5yZXBsYWNlKC8mcmI7L2csICJ9
IikucmVwbGFjZSgvJmxiOy9nLCJ7IikucmVwbGFjZSgvJmFtcDsvZywgIiYiKTsN
CgkJCX0NCgkJfQ0KDQoJCXRoaXMuZ2V0VmFyaWFibGUgPSBmdW5jdGlvbiAodmFy
aWFibGVOYW1lKQ0KCQl7DQoJCQkvL3ZhcmlhYmxlTmFtZSBmb3JtYXQ6IHtAYWJj
fQ0KCQkJdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lLnJlcGxhY2UoL3tcQChb
Xn1dKyl9L2dpLCAiJDEiKTsNCgkJCXJldHVybiB0aGlzLmVuY29kZVZhbHVlKHZh
cmlhYmxlc1t2YXJpYWJsZU5hbWVdKTsNCgkJfQ0KDQoJCXRoaXMuZ2V0Q29udGV4
dCA9IGZ1bmN0aW9uIChjb250ZXh0TmFtZSkNCgkJew0KCQkJLy8gY29udGV4dE5h
bWUgZm9ybWF0OiB7JGFiYyJ9DQoJCQkvLyB1cmxQYXJhbWV0ZXJOYW1lIGZvcm1h
dDogeyRVcmw6YWJjfQ0KCQkJLy9EZWNvZGUgdGhlIGNvbnRleHROYW1lIGlmIHRo
ZXJlIGlzIHNvbWUgZW5jb2RlZCB0YWcgc3ltYm9scyAieyJ8ICJ9Ig0KCQkJaWYg
KGNvbnRleHROYW1lLnN1YnN0cmluZygxLCBwYXJhbWV0ZXJQcmVmaXgubGVuZ3Ro
ICsgMSkgPT0gcGFyYW1ldGVyUHJlZml4KQ0KCQkJew0KCQkJCWNvbnRleHROYW1l
ID0gY29udGV4dE5hbWUucmVwbGFjZSgve1wkVXJsOihbXn1dKyl9L2dpLCAiJDEi
KS5yZXBsYWNlKC9cWzB4N2JcXS9nLCAieyIpLnJlcGxhY2UoL1xbMHg3ZFxdL2cs
ICJ9IikudG9Mb3dlckNhc2UoKTsNCgkJCQlyZXR1cm4gdGhpcy5lbmNvZGVWYWx1
ZSh1cmxQYXJhbWV0ZXJzW2NvbnRleHROYW1lXSk7DQoJCQl9DQoJCQllbHNlDQoJ
CQl7DQoJCQkJY29udGV4dE5hbWUgPSBjb250ZXh0TmFtZS5yZXBsYWNlKC97XCQo
W159XSspfS9naSwgIiQxIikucmVwbGFjZSgvXFsweDdiXF0vZywgInsiKS5yZXBs
YWNlKC9cWzB4N2RcXS9nLCAifSIpOw0KCQkJCXJldHVybiB0aGlzLmVuY29kZVZh
bHVlKGNvbnRleHRbY29udGV4dE5hbWVdKTsNCgkJCX0NCgkJfQ0KDQoJCS8vQ29t
cGF0aWJsZSB3aXRoIG9sZCBzdXJ2ZXkgeG1sIGZvcm1hdC4NCgkJdGhpcy5pc0Rl
ZmluZWQgPSBmdW5jdGlvbiAobmFtZSkNCgkJew0KCQkJcmV0dXJuIHRoaXMuZ2V0
VmFyaWFibGUobmFtZSkgPT0gbnVsbCA/IGZhbHNlIDogdHJ1ZTsNCgkJfQ0KDQoJ
CXRoaXMuTWF0Y2ggPSBmdW5jdGlvbiAobmFtZSwgcGF0dGVybikNCgkJew0KCQkJ
cmV0dXJuIHBhdHRlcm4udGVzdChuYW1lKTsNCgkJfQ0KDQoNCgkJdGhpcy5HcmVh
dGVyVGhhbiA9IGZ1bmN0aW9uIChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUpDQoJCXsN
CgkJCXJldHVybiBsZWZ0VmFsdWUgPiByaWdodFZhbHVlOw0KCQl9DQoNCgkJdGhp
cy5MZXNzVGhhbiA9IGZ1bmN0aW9uIChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUpDQoJ
CXsNCgkJCXJldHVybiBsZWZ0VmFsdWUgPCByaWdodFZhbHVlOw0KCQl9DQoNCg0K
CQl0aGlzLkdyZWF0ZXJUaGFuT3JFcXVhbCA9IGZ1bmN0aW9uIChsZWZ0VmFsdWUs
IHJpZ2h0VmFsdWUpDQoJCXsNCgkJCXJldHVybiBsZWZ0VmFsdWUgPj0gcmlnaHRW
YWx1ZTsNCgkJfQ0KDQoNCgkJdGhpcy5MZXNzVGhhbk9yRXF1YWwgPSBmdW5jdGlv
biAobGVmdFZhbHVlLCByaWdodFZhbHVlKQ0KCQl7DQoJCQlyZXR1cm4gbGVmdFZh
bHVlIDw9IHJpZ2h0VmFsdWU7DQoJCX0NCg0KDQoJCXRoaXMuRXF1YWwgPSBmdW5j
dGlvbiAobGVmdFZhbHVlLCByaWdodFZhbHVlKQ0KCQl7DQoJCQlyZXR1cm4gbGVm
dFZhbHVlID09IHJpZ2h0VmFsdWU7DQoJCX0NCg0KCQl0aGlzLkFORCA9IGZ1bmN0
aW9uICgpDQoJCXsNCgkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhcmd1
bWVudHMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCWlmICghYXJndW1lbnRz
W2luZGV4XSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9
DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KDQoJCXRoaXMuT1IgPSBmdW5jdGlvbiAo
KQ0KCQl7DQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRz
Lmxlbmd0aDsgKytpbmRleCkNCgkJCXsNCgkJCQlpZiAoYXJndW1lbnRzW2luZGV4
XSkNCgkJCQl7DQoJCQkJCXJldHVybiB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCXJl
dHVybiBmYWxzZTsNCgkJfQ0KDQoJCXRoaXMuTk9UID0gZnVuY3Rpb24gKHJlc3Vs
dCkNCgkJew0KCQkJcmV0dXJuICFyZXN1bHQ7DQoJCX0NCg0KCQl0aGlzLlRyaW0g
PSBmdW5jdGlvbiAoc3RyKQ0KCQl7DQoJCQlyZXR1cm4gc3RyLnJlcGxhY2UoLyhe
XHMqKXwoXHMqJCkvZywgIiIpLnJlcGxhY2UoL1xyL2csICIiKS5yZXBsYWNlKC9c
bi9nLCAiIikucmVwbGFjZSgvXHQvZywgIiIpOw0KCQl9DQoNCgkJdGhpcy5yZXBs
YWNlU3RhcnRFbmRUYWcgPSBmdW5jdGlvbiAoc3RyKQ0KCQl7DQoJCQl2YXIgZXNj
YXBlU3RhcnRUYWcgPSAiWzB4N2JdIiwgZXNjYXBlRW5kVGFnID0gIlsweDdkXSI7
DQoJCQl2YXIgc3RhcnRJbmRleCA9IHN0ci5pbmRleE9mKCJ7QCIpOw0KCQkJaWYg
KHN0YXJ0SW5kZXggPCAwKQ0KCQkJew0KCQkJCXN0YXJ0SW5kZXggPSBzdHIuaW5k
ZXhPZigieyQiKTsNCgkJCX0NCg0KCQkJdmFyIGVuZEluZGV4ID0gc3RyLmxhc3RJ
bmRleE9mKHRhZ0VuZCk7DQoNCgkJCWlmIChzdGFydEluZGV4IDwgMCB8fCBlbmRJ
bmRleCA8IDApDQoJCQl7DQoJCQkJcmV0dXJuIHN0cjsNCgkJCX0NCgkJCXZhciBz
dGFydCA9IHN0ci5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCArIDIpOw0KCQkJdmFy
IGVuZCA9IHN0ci5zdWJzdHJpbmcoZW5kSW5kZXgpOw0KDQoJCQl2YXIgdGFnQ29u
dGVudCA9IHN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCArIDIsIGVuZEluZGV4KTsN
CgkJCXRhZ0NvbnRlbnQgPSB0YWdDb250ZW50LnJlcGxhY2UoL3svZywgZXNjYXBl
U3RhcnRUYWcpLnJlcGxhY2UoL30vZywgZXNjYXBlRW5kVGFnKTsNCgkJCWlmICh0
YWdDb250ZW50ID09IG51bGwgfHwgdGFnQ29udGVudCA9PSAiIikNCgkJCXsNCgkJ
CQlyZXR1cm4gIiI7DQoJCQl9DQoJCQlyZXR1cm4gc3RhcnQgKyB0YWdDb250ZW50
ICsgZW5kOw0KCQl9DQoNCgkJdGhpcy5maWx0ZXJJbnZhbGlkQ2hhcmFjdGVycyA9
IGZ1bmN0aW9uIChleHByZXNzaW9uKQ0KCQl7DQoJCQl2YXIgaW5uZXJTdGFjayA9
IFtdOw0KCQkJdmFyIGluZGV4ID0gMCwgdGVtcCA9IG51bGw7DQoJCQl2YXIgc3Ry
UmV0ID0gIiI7DQoNCgkJCXdoaWxlIChpbmRleCA8IGV4cHJlc3Npb24ubGVuZ3Ro
KQ0KCQkJew0KCQkJCXRlbXAgPSBleHByZXNzaW9uLmNoYXJBdChpbmRleCk7DQoJ
CQkJc3dpdGNoICh0ZW1wKQ0KCQkJCXsNCgkJCQkJY2FzZSB0YWdTdGFydDoNCgkJ
CQkJY2FzZSB0YWdFbmQ6DQoJCQkJCWRlZmF1bHQ6DQoJCQkJCQlpbm5lclN0YWNr
LnB1c2godGVtcCk7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSB2YXJQcmVmaXg6
DQoJCQkJCWNhc2UgY29udGV4dFByZWZpeDoNCgkJCQkJY2FzZSBwYXJhbWV0ZXJQ
cmVmaXg6DQoJCQkJCQlpZiAoaW5uZXJTdGFja1tpbm5lclN0YWNrLmxlbmd0aCAt
IDFdID09IHRhZ1N0YXJ0KQ0KCQkJCQkJew0KCQkJCQkJCWlubmVyU3RhY2tbaW5u
ZXJTdGFjay5sZW5ndGggLSAxXSArPSB0ZW1wOw0KCQkJCQkJCWlmIChpbm5lclN0
YWNrLmxlbmd0aCA+IDEpDQoJCQkJCQkJew0KCQkJCQkJCQlzdHJSZXQgKz0gdGhp
cy5yZXBsYWNlU3RhcnRFbmRUYWcoaW5uZXJTdGFjay5zbGljZSgwLCBpbm5lclN0
YWNrLmxlbmd0aCAtIDEpLmpvaW4oIiIpKTsNCgkJCQkJCQl9DQoJCQkJCQkJaW5u
ZXJTdGFjayA9IGlubmVyU3RhY2suc2xpY2UoaW5uZXJTdGFjay5sZW5ndGggLSAx
KTsNCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQlpbm5lclN0
YWNrLnB1c2godGVtcCk7DQoJCQkJCQl9DQoJCQkJCQlicmVhazsNCgkJCQl9DQoJ
CQkJaW5kZXgrKzsNCgkJCX0NCgkJCWlmIChpbm5lclN0YWNrLmxlbmd0aCA+IDAp
DQoJCQl7DQoJCQkJc3RyUmV0ICs9IHRoaXMucmVwbGFjZVN0YXJ0RW5kVGFnKGlu
bmVyU3RhY2suam9pbigiIikpOw0KCQkJfQ0KCQkJcmV0dXJuIHN0clJldDsNCgkJ
fQ0KDQoNCg0KCQlleHByZXNzaW9uID0gdGhpcy5maWx0ZXJJbnZhbGlkQ2hhcmFj
dGVycyh0aGlzLlRyaW0oZXhwcmVzc2lvbikpOw0KCQlleHByZXNzaW9uID0gZXhw
cmVzc2lvbi5yZXBsYWNlKHJlRnVuYywgInRoaXMuJDEiKTsNCgkJZXhwcmVzc2lv
biA9IGV4cHJlc3Npb24ucmVwbGFjZShyZVZhciwgInRoaXMuZ2V0VmFyaWFibGUo
XCIkMVwiKSIpOw0KCQlleHByZXNzaW9uID0gZXhwcmVzc2lvbi5yZXBsYWNlKHJl
Q29udGV4dCwgInRoaXMuZ2V0Q29udGV4dChcIiQxXCIpIik7DQoNCgkJdGhpcy5F
eGVjdXRlID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gIiArIGV4cHJlc3Npb24gKyAi
OyIpOw0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLlJlcGxhY2VhYmxlVGV4dE5vZGUg
PSBmdW5jdGlvbiAocXVlc3Rpb24sIGRvbU9iamVjdCkNCgl7DQoJCXRoaXMucXVl
c3Rpb24gPSBxdWVzdGlvbjsNCgkJdGhpcy5zdXJ2ZXkgPSBxdWVzdGlvbi5zdXJ2
ZXk7DQoJCXRoaXMuZG9tT2JqZWN0ID0gZG9tT2JqZWN0Ow0KDQoJCWZ1bmN0aW9u
IGlzVGV4dEVkaXRvcihlKQ0KCQl7DQoJCQl2YXIgdGFnTmFtZSA9IChlICYmIGUu
dGFnTmFtZSkgPyBlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA6ICIiOw0KDQoJCQlp
ZiAodGFnTmFtZSA9PSAidGV4dGFyZWEiIHx8ICh0YWdOYW1lID09ICJpbnB1dCIg
JiYgKGUudHlwZS50b0xvd2VyQ2FzZSgpID09ICJ0ZXh0IiB8fCBlLnR5cGUudG9M
b3dlckNhc2UoKSA9PSAibnVtYmVyIiB8fCBlLnR5cGUudG9Mb3dlckNhc2UoKSA9
PSAiZGF0ZSIpKSkNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCg0KCQkJ
cmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJZnVuY3Rpb24gaXNUZXh0RWxlbWVudChl
KQ0KCQl7DQoJCQl2YXIgdGFnTmFtZSA9IChlICYmIGUudGFnTmFtZSkgPyBlLnRh
Z05hbWUudG9Mb3dlckNhc2UoKSA6ICIiOw0KDQoJCQlpZiAodGFnTmFtZSA9PSAi
dGV4dGFyZWEiIHx8ICh0YWdOYW1lID09ICJpbnB1dCIgJiYgKGUudHlwZS50b0xv
d2VyQ2FzZSgpID09ICJ0ZXh0IiB8fCBlLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAi
aGlkZGVuIiB8fCBlLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAibnVtYmVyIiB8fCBl
LnR5cGUudG9Mb3dlckNhc2UoKSA9PSAiZGF0ZSIpKSkNCgkJCXsNCgkJCQlyZXR1
cm4gdHJ1ZTsNCgkJCX0NCg0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJZnVu
Y3Rpb24gaXNPcHRpb24oZSkNCgkJew0KCQkJdmFyIHRhZ05hbWUgPSAoZSAmJiBl
LnRhZ05hbWUpID8gZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiAiIjsNCgkJCXJl
dHVybiB0YWdOYW1lID09ICJvcHRpb24iOw0KCQl9DQoNCgkJZnVuY3Rpb24gZ2V0
RG9tVmFsdWUoZSkNCgkJew0KCQkJcmV0dXJuIGlzVGV4dEVsZW1lbnQoZSkgPyBl
LnZhbHVlIDogKGlzT3B0aW9uKGUpID8gZS50ZXh0IDogZS5pbm5lckhUTUwpOw0K
CQl9DQoNCgkJZnVuY3Rpb24gc2V0RG9tVmFsdWUoZSwgdmFsdWUpDQoJCXsNCgkJ
CWlmIChpc1RleHRFbGVtZW50KGUpKQ0KCQkJew0KCQkJCWUudmFsdWUgPSB2YWx1
ZTsNCgkJCX0NCgkJCWVsc2UgaWYgKGlzT3B0aW9uKGUpKQ0KCQkJew0KCQkJCWUu
dGV4dCA9IHZhbHVlOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWUuaW5uZXJI
VE1MID0gdmFsdWU7DQoJCQl9DQoJCX0NCg0KCQl2YXIgcmVwbGFjZU9uY2UgPSBp
c1RleHRFZGl0b3IoZG9tT2JqZWN0KTsNCgkJdmFyIHJlcGxhY2VDb3VudCA9IDA7
DQoJCXRoaXMub3JpZ2luYWxWYWx1ZSA9IGdldERvbVZhbHVlKGRvbU9iamVjdCk7
DQoJCXRoaXMudmFyaWFibGVzID0gdGhpcy5vcmlnaW5hbFZhbHVlLm1hdGNoKG5l
dyBSZWdFeHAoInsoXFwkKFVybDopP3xAKENvbXBsZXg6XFxzKik/KVtefV0qfSIs
ICJnIikpOw0KDQoJCXRoaXMucmVwbGFjZSA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJ
CWlmIChyZXBsYWNlT25jZSAmJiByZXBsYWNlQ291bnQgPj0gMSkNCgkJCXsNCgkJ
CQlyZXR1cm47DQoJCQl9DQoNCgkJCXZhciB0ZXh0ID0gdGhpcy5vcmlnaW5hbFZh
bHVlOw0KDQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudmFyaWFibGVzLmxl
bmd0aDsgKytpKQ0KCQkJew0KCQkJCXZhciB2YXJpYWJsZSA9IHRoaXMudmFyaWFi
bGVzW2ldOw0KDQoJCQkJdmFyIHZhcmlhYmxlQ29udGVudCA9IHZhcmlhYmxlLnN1
YnN0cmluZygxLCB2YXJpYWJsZS5sZW5ndGggLSAxKTsNCgkJCQl2YXIgdmFyaWFi
bGVWYWx1ZSA9ICIiOw0KDQoJCQkJdmFyIGNvbnRleHRQcmVmaXggPSAiJCI7DQoJ
CQkJdmFyIHVybFBhcmFtZXRlclByZWZpeCA9ICIkVXJsOiI7DQoJCQkJdmFyIGNv
bXBsZXhFeHBQcmVmaXggPSAiQENvbXBsZXg6IjsNCg0KCQkJCWlmICh2YXJpYWJs
ZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGNvbXBsZXhFeHBQcmVmaXgubGVuZ3RoKSA9
PSBjb21wbGV4RXhwUHJlZml4KQ0KCQkJCXsNCgkJCQkJdmFyIGV4cCA9IHZhcmlh
YmxlQ29udGVudC5yZXBsYWNlKGNvbXBsZXhFeHBQcmVmaXgsICIiKS5yZXBsYWNl
KC9eXHMqLywgIiIpDQoJCQkJCWV4cCA9IGV4cC5yZXBsYWNlKC9cWzB4N2JcXS9n
LCAieyIpLnJlcGxhY2UoL1xbMHg3ZFxdL2csICJ9Iik7DQoJCQkJCXRyeQ0KCQkJ
CQl7DQoJCQkJCQl2YXIgZXhwV3JhcHBlciA9IG5ldyBNUy5TdXBwb3J0LkZtcy5F
eHByZXNzaW9uV3JhcHBlcihleHAsIHRoaXMuc3VydmV5KTsNCgkJCQkJCXZhcmlh
YmxlVmFsdWUgPSBleHBXcmFwcGVyLkV4ZWN1dGUoKTsNCgkJCQkJCWlmICh0eXBl
b2YgKHZhcmlhYmxlVmFsdWUpID09ICJ1bmRlZmluZWQiIHx8IHZhcmlhYmxlVmFs
dWUgPT0gbnVsbCkNCgkJCQkJCXsNCgkJCQkJCQl2YXJpYWJsZVZhbHVlID0gIiI7
DQoJCQkJCQl9DQoNCgkJCQkJCXZhcmlhYmxlVmFsdWUgPSBleHBXcmFwcGVyLmRl
Y29kZVZhbHVlKHZhcmlhYmxlVmFsdWUpOw0KCQkJCQl9DQoJCQkJCWNhdGNoIChl
KQ0KCQkJCQl7DQoJCQkJCQl2YXJpYWJsZVZhbHVlID0gIiI7DQoJCQkJCX0NCgkJ
CQl9DQoJCQkJZWxzZSBpZiAodmFyaWFibGVDb250ZW50LnN1YnN0cmluZygwLCB1
cmxQYXJhbWV0ZXJQcmVmaXgubGVuZ3RoKSA9PSB1cmxQYXJhbWV0ZXJQcmVmaXgp
DQoJCQkJew0KCQkJCQl2YXIgdXJsUGFyYW1ldGVycyA9IHRoaXMuc3VydmV5LnVy
bFBhcmFtZXRlcnM7DQoJCQkJCXZhciBleHAgPSB2YXJpYWJsZUNvbnRlbnQucmVw
bGFjZSh1cmxQYXJhbWV0ZXJQcmVmaXgsICIiKTsNCgkJCQkJZXhwID0gZXhwLnJl
cGxhY2UoL1xbMHg3YlxdL2csICJ7IikucmVwbGFjZSgvXFsweDdkXF0vZywgIn0i
KS50b0xvd2VyQ2FzZSgpOw0KCQkJCQl2YXJpYWJsZVZhbHVlID0gdXJsUGFyYW1l
dGVycyA/IHVybFBhcmFtZXRlcnNbZXhwXSA6ICIiOw0KCQkJCX0NCgkJCQllbHNl
IGlmICh2YXJpYWJsZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGNvbnRleHRQcmVmaXgu
bGVuZ3RoKSA9PSBjb250ZXh0UHJlZml4KQ0KCQkJCXsNCgkJCQkJdmFyIGNvbnRl
eHQgPSB0aGlzLnN1cnZleS5nZXRDb250ZXh0KCk7DQoJCQkJCXZhciBleHAgPSB2
YXJpYWJsZUNvbnRlbnQuc3Vic3RyaW5nKDEpOw0KCQkJCQlleHAgPSBleHAucmVw
bGFjZSgvXFsweDdiXF0vZywgInsiKS5yZXBsYWNlKC9cWzB4N2RcXS9nLCAifSIp
Ow0KCQkJCQl2YXJpYWJsZVZhbHVlID0gY29udGV4dCA/IGNvbnRleHRbZXhwXSA6
ICIiOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl2YXJpYWJsZVZhbHVl
ID0gdGhpcy5zdXJ2ZXkuZ2V0VmFyaWFibGUodmFyaWFibGVDb250ZW50LnN1YnN0
cmluZygxKSk7DQoJCQkJfQ0KDQoJCQkJaWYgKCF2YXJpYWJsZVZhbHVlKQ0KCQkJ
CXsNCgkJCQkJdmFyaWFibGVWYWx1ZSA9ICIiOw0KCQkJCX0NCg0KCQkJCWlmIChp
c1RleHRFbGVtZW50KHRoaXMuZG9tT2JqZWN0KSB8fCBpc09wdGlvbih0aGlzLmRv
bU9iamVjdCkpDQoJCQkJew0KCQkJCQl2YXJpYWJsZVZhbHVlID0gTVMuU3VwcG9y
dC5GbXMuVXRpbHMuY2hhcmFjdGVyRW5jb2RlKHZhcmlhYmxlVmFsdWUpOw0KCQkJ
CX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl2YXJpYWJsZVZhbHVlID0gTVMuU3Vw
cG9ydC5GbXMuVXRpbHMuY2hhcmFjdGVyRW5jb2RlKE1TLlN1cHBvcnQuRm1zLlV0
aWxzLmh0bWxFbmNvZGUodmFyaWFibGVWYWx1ZSkpOw0KCQkJCX0NCgkJCQl0ZXh0
ID0gdGV4dC5yZXBsYWNlKHZhcmlhYmxlLCB2YXJpYWJsZVZhbHVlKTsNCgkJCX0N
Cg0KCQkJc2V0RG9tVmFsdWUodGhpcy5kb21PYmplY3QsIHRleHQpOw0KCQkJKyty
ZXBsYWNlQ291bnQ7DQoJCX0NCgl9DQoNCglNUy5TdXBwb3J0LkZtcy5TdXJ2ZXlR
dWVzdGlvbiA9IGZ1bmN0aW9uIChkb21PYmplY3QsIHBhZ2UpDQoJew0KCQl2YXIg
Rm1zID0gTVMuU3VwcG9ydC5GbXM7DQoJCXZhciBVdGlscyA9IEZtcy5VdGlsczsN
CgkJdmFyIFZhbGlkYXRlUmVzdWx0ID0gRm1zLlZhbGlkYXRlUmVzdWx0Ow0KDQoJ
CXRoaXMuZG9tT2JqZWN0ID0gZG9tT2JqZWN0Ow0KCQl2YXIgdHlwZSA9IFV0aWxz
LmdldENoaWxkQnlOYW1lKGRvbU9iamVjdCwgInR5cGUiKTsNCgkJdmFyIHJhbmRv
bWl6YXRpb24gPSBVdGlscy5nZXRDaGlsZEJ5TmFtZShkb21PYmplY3QsICJyYW5k
b21pemF0aW9uIik7DQoJCXZhciBvcGVyYXRvciA9IG51bGw7DQoNCgkJdmFyIGJy
YW5jaFJ1bGVzID0gW107DQoJCXRoaXMucGFnZSA9IHBhZ2U7DQoJCXRoaXMuc3Vy
dmV5ID0gcGFnZS5zdXJ2ZXk7DQoJCXRoaXMubmVlZEhpZGUgPSBmYWxzZTsNCg0K
CQl2YXIgdmlzaWJpbGl0eSA9IHRoaXMuZG9tT2JqZWN0LmdldEF0dHJpYnV0ZSgi
dmlzaWJpbGl0eSIpOw0KDQoJCXRoaXMuZ2V0VmlzaWJpbGl0eSA9IGZ1bmN0aW9u
ICgpDQoJCXsNCgkJCXJldHVybiB2aXNpYmlsaXR5Ow0KCQl9DQoNCgkJZnVuY3Rp
b24gaXNCcmFuY2hSdWxlTm9kZShub2RlKQ0KCQl7DQoJCQlyZXR1cm4gbm9kZSAm
JiBub2RlLnR5cGUgJiYgbm9kZS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gImhpZGRl
biIgJiYgbm9kZS5pZC5pbmRleE9mKCJOZXh0UmVmXyIpID09IDA7DQoJCX0NCg0K
CQl0aGlzLmZpbmRCcmFuY2hSdWxlcyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWlm
ICh0aGlzLmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJCXZhciBlcyA9IFV0
aWxzLmZpbmRDaGlsZE5vZGVzKHRoaXMuZG9tT2JqZWN0LCBpc0JyYW5jaFJ1bGVO
b2RlKTsNCg0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBlcy5sZW5n
dGg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQl2YXIgcGFydHMgPSBlc1tpbmRleF0u
aWQuc3BsaXQoIl8iLCAzKTsNCg0KCQkJCQlicmFuY2hSdWxlcy5wdXNoKG5ldyBN
Uy5TdXBwb3J0LkZtcy5CcmFuY2hSdWxlKHBhcnRzWzFdLCBwYXJ0c1syXSwgZXNb
aW5kZXhdLnZhbHVlKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5maW5k
QnJhbmNoUnVsZXMoKTsNCg0KCQl2YXIgcmVxdWlyZWRIaWRkZW4gPSBVdGlscy5n
ZXRDaGlsZEJ5TmFtZShkb21PYmplY3QsICJyZXF1aXJlZCIpOw0KCQl2YXIgcmVx
dWlyZWRFcnJvclRleHQgPSBudWxsOw0KDQoJCXRoaXMuaXNSZXF1aXJlZCA9IGZ1
bmN0aW9uICgpDQoJCXsNCgkJCXJldHVybiByZXF1aXJlZEhpZGRlbiAhPSBudWxs
ICYmIHJlcXVpcmVkSGlkZGVuLnZhbHVlID09ICIxIjsNCgkJfQ0KDQoJCXRoaXMu
c2V0UmVxdWlyZWQgPSBmdW5jdGlvbiAodmFsdWUpDQoJCXsNCgkJCWlmIChyZXF1
aXJlZEhpZGRlbiAhPSBudWxsKQ0KCQkJew0KCQkJCXJlcXVpcmVkSGlkZGVuLnZh
bHVlID0gdmFsdWUgPyAxIDogMDsNCgkJCX0NCgkJfQ0KDQoJCWlmICh0aGlzLmlz
UmVxdWlyZWQoKSkNCgkJew0KCQkJcmVxdWlyZWRFcnJvclRleHQgPSBVdGlscy5n
ZXRDaGlsZEJ5TmFtZShkb21PYmplY3QsICJyZXF1aXJlZEVycm9yVGV4dCIpOw0K
CQl9DQoNCgkJdGhpcy5ldmFsdXRlU2hvd0lmID0gZnVuY3Rpb24gKGVsZW1lbnQp
DQoJCXsNCgkJCXZhciBzaG93SWYgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgic2hv
d0lmIik7DQoNCgkJCWlmIChzaG93SWYgPT0gbnVsbCB8fCBzaG93SWYgPT0gIiIp
DQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJ
CQkJcmV0dXJuIHRoaXMuc3VydmV5LmV2YWx1dGUoc2hvd0lmKTsNCgkJCX0NCgkJ
fQ0KDQoJCXRoaXMuaXNTdGF0aWNPcHRpb24gPSBmdW5jdGlvbiAoZWxlbWVudCkN
CgkJew0KCQkJdmFyIHNob3dJZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzaG93
SWYiKTsNCgkJCXJldHVybiAoc2hvd0lmID09IG51bGwgfHwgc2hvd0lmID09ICIi
KSA/IHRydWUgOiBmYWxzZTsNCgkJfQ0KDQoJCXZhciByZXBsYWNlYWJsZUNsYXNz
TmFtZXMgPSBbIlNVUlZFUklOVFJPVEVYVCIsICJRVUVTVElPTlRFWFQiLCAiUVVF
U1RJT05JTlNUUlVDVElPTiIsICJRVUVTVElPTlJFUVVJUkVEIiwgIkFOU1dFUlRF
WFQiLCAiT1BUSU9OQUxURVhUQk9YSU5TVFJVQ1RJT04iLCAiR0hSX1FVRVNUSU9O
VEVYVCIsICJBTlNXRVJCT1giLCAiR0hSX0xFR0VORFRFWFQiXTsNCgkJdmFyIGlu
bmVySFRNTFJlYWRPbmx5VGFncyA9IFsidGFibGUiLCAidGJvZHkiLCAidGZvb3Qi
LCAidGhlYWQiLCAidHIiXTsgLy8gVGhlcmUgYXJlIGFsc28gc29tZSBvdGhlciBI
VE1MIGVsZW1lbnRzIHdob3NlIGlubmVySFRNTCBhdHRyaWJ1dGVzIGFyZSByZWFk
b25seSBvbiBJRSwgYnV0IG5vdCBsaWtlbHkgd2lsbCBhcHBlYXIgaW4gb3VyIHN1
cnZleQ0KDQoJCWZ1bmN0aW9uIGlzVGV4dFJlcGxhY2VhYmxlKGUpDQoJCXsNCgkJ
CWlmIChlICE9IG51bGwgJiYgZS50YWdOYW1lKQ0KCQkJew0KCQkJCXZhciByZXBs
YWNlUGF0dGVybiA9IG5ldyBSZWdFeHAoInsoXFwkKFVybDopP3wjfEAoQ29tcGxl
eDpcXHMqKT8pW159XSp9IiwgImciKTsNCg0KCQkJCXZhciB0YWdOYW1lID0gZS50
YWdOYW1lLnRvTG93ZXJDYXNlKCk7DQoNCgkJCQlmb3IgKHZhciBqID0gMDsgaiA8
IGlubmVySFRNTFJlYWRPbmx5VGFncy5sZW5ndGg7ICsraikNCgkJCQl7DQoJCQkJ
CWlmICh0YWdOYW1lID09IGlubmVySFRNTFJlYWRPbmx5VGFnc1tqXSkNCgkJCQkJ
ew0KCQkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYg
KHRhZ05hbWUgPT0gIm9wdGlvbiIpDQoJCQkJew0KCQkJCQlyZXR1cm4gcmVwbGFj
ZVBhdHRlcm4udGVzdChlLmlubmVySFRNTCk7DQoJCQkJfQ0KCQkJCWVsc2UgaWYg
KHRhZ05hbWUgPT0gInRleHRhcmVhIiB8fCAodGFnTmFtZSA9PSAiaW5wdXQiICYm
IChlLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAidGV4dCIgfHwgZS50eXBlLnRvTG93
ZXJDYXNlKCkgPT0gImhpZGRlbiIgfHwgZS50eXBlLnRvTG93ZXJDYXNlKCkgPT0g
Im51bWJlciIgfHwgZS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gImRhdGUiKSkpDQoJ
CQkJew0KCQkJCQlyZXR1cm4gcmVwbGFjZVBhdHRlcm4udGVzdChlLnZhbHVlKTsN
CgkJCQl9DQoJCQkJZWxzZSBpZiAodGFnTmFtZSA9PSAidGQiICYmIGUucGFyZW50
Tm9kZSAmJiBVdGlscy5oYXNDbGFzcyhlLnBhcmVudE5vZGUsICJHSFJfTEVHRU5E
VEVYVCIpKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHJlcGxhY2VQYXR0ZXJuLnRlc3Qo
ZS5pbm5lckhUTUwpOw0KCQkJCX0NCgkJCQllbHNlIGlmIChlLmNsYXNzTmFtZSAh
PSBudWxsKQ0KCQkJCXsNCg0KCQkJCQlpZiAoVXRpbHMuaGFzQ2xhc3MoZSwgIlFV
RVNUSU9OSU5TVFJVQ1RJT04iKSAmJiB0YWdOYW1lID09ICJmb250IikNCgkJCQkJ
ew0KCQkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCQl9DQoNCgkJCQkJZm9yICh2YXIg
aW5kZXggPSAwOyBpbmRleCA8IHJlcGxhY2VhYmxlQ2xhc3NOYW1lcy5sZW5ndGg7
ICsraW5kZXgpDQoJCQkJCXsNCgkJCQkJCWlmIChVdGlscy5oYXNDbGFzcyhlLCBy
ZXBsYWNlYWJsZUNsYXNzTmFtZXNbaW5kZXhdKSkNCgkJCQkJCXsNCgkJCQkJCQly
ZXR1cm4gcmVwbGFjZVBhdHRlcm4udGVzdChlLmlubmVySFRNTCk7DQoJCQkJCQl9
DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0K
CQl0aGlzLnJlcGxhY2VhYmxlTm9kZXMgPSBbXTsNCg0KCQl0aGlzLmZpbmRSZXBs
YWNlYWJsZU5vZGVzID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJdmFyIG5vZGVzID0g
VXRpbHMuZmluZENoaWxkTm9kZXModGhpcy5kb21PYmplY3QsIGlzVGV4dFJlcGxh
Y2VhYmxlKTsNCg0KCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG5vZGVz
Lmxlbmd0aDsgKytpbmRleCkNCgkJCXsNCgkJCQl2YXIgbm9kZSA9IG5vZGVzW2lu
ZGV4XTsNCgkJCQl0aGlzLnJlcGxhY2VhYmxlTm9kZXMucHVzaChuZXcgTVMuU3Vw
cG9ydC5GbXMuUmVwbGFjZWFibGVUZXh0Tm9kZSh0aGlzLCBub2RlKSk7DQoJCQl9
DQoJCX0NCg0KCQl0aGlzLmZpbmRSZXBsYWNlYWJsZU5vZGVzKCk7DQoNCgkJdGhp
cy5yZXBsYWNlVGV4dE5vZGVzID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucmVwbGFjZWFibGVOb2Rlcy5sZW5n
dGg7ICsraW5kZXgpDQoJCQl7DQoJCQkJdGhpcy5yZXBsYWNlYWJsZU5vZGVzW2lu
ZGV4XS5yZXBsYWNlKCk7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLmdldFF1ZXN0aW9u
SWQgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gdGhpcy5kb21PYmplY3Qu
aWQucmVwbGFjZSgiU1VSVkVZUVVFU1RJT05fIiwgIiIpOw0KCQl9DQoNCgkJdGhp
cy5nZXRRdWVzdGlvblR5cGUgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4g
dHlwZS52YWx1ZTsNCgkJfQ0KDQoJCXRoaXMubmVlZFJhbmRvbWl6YXRpb24gPSBm
dW5jdGlvbiAoKQ0KCQl7DQoJCQlpZiAocmFuZG9taXphdGlvbiAmJiByYW5kb21p
emF0aW9uLnZhbHVlID09ICIxIikNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJ
CX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCXRoaXMudmFsaWRhdGUgPSBm
dW5jdGlvbiAoKQ0KCQl7DQoJCQlpZiAodGhpcy5uZWVkSGlkZSkNCgkJCXsNCgkJ
CQlyZXR1cm4gbmV3IFZhbGlkYXRlUmVzdWx0KHRydWUpOw0KCQkJfQ0KCQkJaWYg
KHRoaXMuaXNSZXF1aXJlZCgpKQ0KCQkJew0KCQkJCXZhciBpc1ZhbGlkID0gb3Bl
cmF0b3IudmFsaWRhdGVSZXF1aXJlZCh0aGlzKTsNCg0KCQkJCWlmICghaXNWYWxp
ZCkNCgkJCQl7DQoJCQkJCXJldHVybiBuZXcgVmFsaWRhdGVSZXN1bHQoZmFsc2Us
IHRoaXMuZ2V0UmVxdWlyZWRFcnJvclRleHQoKSk7DQoJCQkJfQ0KCQkJfQ0KDQoJ
CQlyZXR1cm4gb3BlcmF0b3IudmFsaWRhdGVJbnB1dCgpOw0KCQl9DQoNCgkJdGhp
cy5jb25maWdWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJdmFyIHJl
dFZhbCA9IHRoaXMuc3VydmV5LkV2YWx1YXRlQ29udGV4dFZpc2liaWxpdHkodGhp
cy5kb21PYmplY3QpOw0KDQoJCQlzd2l0Y2ggKHZpc2liaWxpdHkpDQoJCQl7DQoJ
CQkJY2FzZSAiU2hvdyI6DQoJCQkJCXRoaXMubmVlZEhpZGUgPSByZXRWYWwgPT0g
Ik5vdEV4aXN0IiA/IHRydWUgOiByZXRWYWwgPT0gIkV2YWxUcnVlIiA/IGZhbHNl
IDogdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiSGlkZSI6DQoJCQkJCXRo
aXMubmVlZEhpZGUgPSByZXRWYWwgPT0gIk5vdEV4aXN0IiA/IGZhbHNlIDogcmV0
VmFsID09ICJFdmFsVHJ1ZSIgPyB0cnVlIDogZmFsc2U7DQoJCQkJCWJyZWFrOw0K
CQkJCWRlZmF1bHQ6DQoJCQkJCXRoaXMubmVlZEhpZGUgPSBmYWxzZTsNCgkJCQkJ
YnJlYWs7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLnByZXBhcmUgPSBmdW5jdGlvbiAo
KQ0KCQl7DQoJCQl0aGlzLnJlcGxhY2VUZXh0Tm9kZXMoKTsNCgkJCXRoaXMuY29u
ZmlnVmlzaWJpbGl0eSgpOw0KCQkJb3BlcmF0b3IucHJlcGFyZSgpOw0KCQkJZG9t
T2JqZWN0LnN0eWxlLmRpc3BsYXkgPSB0aGlzLm5lZWRIaWRlID8gIm5vbmUiIDog
ImJsb2NrIjsNCgkJfQ0KDQoJCXRoaXMucG9wdWxhdGVWYXJpYWJsZXMgPSBmdW5j
dGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gb3BlcmF0b3IucG9wdWxhdGVWYXJpYWJs
ZXMoKTsNCgkJfQ0KDQoJCXRoaXMuc2F2ZSA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJ
CW9wZXJhdG9yLnNhdmUoKTsNCgkJfQ0KDQoJCXRoaXMucmVzdG9yZSA9IGZ1bmN0
aW9uICgpDQoJCXsNCgkJCW9wZXJhdG9yLnJlc3RvcmUoKTsNCgkJfQ0KDQoJCXRo
aXMuZ2V0QW5zd2VycyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXJldHVybiBvcGVy
YXRvci5nZXRBbnN3ZXJzKCk7DQoJCX0NCg0KCQl0aGlzLmdldFJlcXVpcmVkRXJy
b3JUZXh0ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJaWYgKCF0aGlzLmlzUmVxdWly
ZWQoKSkNCgkJCXsNCgkJCQl0aHJvdyAiTm90IGEgcmVxdWlyZWQgcXVlc3Rpb24h
IjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlyZXR1cm4gcmVxdWlyZWRFcnJv
clRleHQudmFsdWU7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLmdldE5leHRQYWdlQnlC
cmFuY2hSdWxlID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgKytpKQ0KCQkJew0KCQkJCWZvciAo
dmFyIGogPSAwOyBqIDwgYnJhbmNoUnVsZXMubGVuZ3RoOyArK2opDQoJCQkJew0K
CQkJCQl2YXIgdGFyZ2V0ID0gYnJhbmNoUnVsZXNbal0ubWF0Y2godGhpcy5lbGVt
ZW50c1tpXSk7DQoNCgkJCQkJaWYgKHRhcmdldCAhPSBudWxsICYmIHRhcmdldCAh
PSAtMSkNCgkJCQkJew0KCQkJCQkJcmV0dXJuIHRhcmdldDsNCgkJCQkJfQ0KCQkJ
CX0NCgkJCX0NCgkJCS8vIC0xIG1lYW5zIG5vdCBhcHBjYWJsZQ0KCQkJcmV0dXJu
IC0xOw0KCQl9DQoNCgkJdGhpcy5lbGVtZW50cyA9IFtdOw0KDQoJCWZ1bmN0aW9u
IGlzUXVlc3Rpb25FbGVtZW50KG5vZGUpDQoJCXsNCgkJCWlmIChub2RlLnR5cGUg
IT0gbnVsbCkNCgkJCXsNCgkJCQlzd2l0Y2ggKG5vZGUudHlwZS50b0xvd2VyQ2Fz
ZSgpKQ0KCQkJCXsNCgkJCQkJY2FzZSAidGV4dCI6DQoJCQkJCWNhc2UgImRhdGUi
Og0KCQkJCQljYXNlICJwYXNzd29yZCI6DQoJCQkJCWNhc2UgInRleHRhcmVhIjoN
CgkJCQkJY2FzZSAibnVtYmVyIjoNCgkJCQkJY2FzZSAicmFkaW8iOg0KCQkJCQlj
YXNlICJjaGVja2JveCI6DQoJCQkJCWNhc2UgInNlbGVjdC1vbmUiOg0KCQkJCQlj
YXNlICJzZWxlY3QtbXVsdGlwbGUiOg0KCQkJCQkJcmV0dXJuIHRydWU7DQoJCQkJ
fQ0KCQkJfQ0KDQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQl0aGlzLmdldE9w
dGlvbkJ5SWQgPSBmdW5jdGlvbiAob3B0aW9uSWQpDQoJCXsNCgkJCXJldHVybiBv
cGVyYXRvci5nZXRPcHRpb25CeUlkKG9wdGlvbklkKTsNCgkJfQ0KDQoJCXRoaXMu
ZGlzY292ZXJFbGVtZW50cyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWlmICh0aGlz
LmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJCXZhciBlcyA9IFV0aWxzLmZp
bmRDaGlsZE5vZGVzKHRoaXMuZG9tT2JqZWN0LCBpc1F1ZXN0aW9uRWxlbWVudCk7
DQoNCgkJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZXMubGVuZ3RoOyAr
K2luZGV4KQ0KCQkJCXsNCgkJCQkJdGhpcy5lbGVtZW50cy5wdXNoKGVzW2luZGV4
XSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5kaXNjb3ZlckVsZW1lbnRz
KCk7DQoNCgkJb3BlcmF0b3IgPSBNUy5TdXBwb3J0LkZtcy5TdXJ2ZXlRdWVzdGlv
bk9wZXJhdG9yLmNyZWF0ZSh0aGlzKTsNCgkJb3BlcmF0b3IucmFuZG9taXplKCk7
DQoNCgkJdGhpcy5kaXNwbGF5QnJhbmNoUnVsZXMgPSBmdW5jdGlvbiAoKQ0KCQl7
DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxlbWVudHMubGVuZ3RoOyAr
K2kpDQoJCQl7DQoJCQkJdmFyIG9wdGlvbnMgPSB0aGlzLmVsZW1lbnRzW2ldLm9w
dGlvbnM7DQoJCQkJaWYgKG9wdGlvbnMpDQoJCQkJew0KCQkJCQl2YXIgc2VsZWN0
VmlzdWFsID0gIjxvbD4iOw0KDQoJCQkJCWZvciAodmFyIGogPSAwOyBqIDwgb3B0
aW9ucy5sZW5ndGg7ICsraikNCgkJCQkJew0KCQkJCQkJc2VsZWN0VmlzdWFsICs9
ICI8bGk+IiArIG9wdGlvbnNbal0uaW5uZXJIVE1MOw0KCQkJCQkJZm9yICh2YXIg
ayA9IDA7IGsgPCBicmFuY2hSdWxlcy5sZW5ndGg7ICsraykNCgkJCQkJCXsNCgkJ
CQkJCQlpZiAoYnJhbmNoUnVsZXNba10ub3B0aW9uSWQgPT0gb3B0aW9uc1tqXS5p
ZCAmJiAodHlwZW9mIChicmFuY2hSdWxlc1trXS5vcHRpb25WYWx1ZSA9PSAidW5k
ZWZpbmVkIikgfHwgYnJhbmNoUnVsZXNba10ub3B0aW9uVmFsdWUgPT0gb3B0aW9u
c1tqXS52YWx1ZSkpDQoJCQkJCQkJew0KCQkJCQkJCQlzZWxlY3RWaXN1YWwgKz0g
IigtLSZndDsiICsgYnJhbmNoUnVsZXNba10udGFyZ2V0ICsgIikiOw0KCQkJCQkJ
CQlicmVhazsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQlzZWxlY3RWaXN1YWwg
Kz0gIjwvbGk+IjsNCgkJCQkJfQ0KDQoJCQkJCXNlbGVjdFZpc3VhbCArPSAiPC9v
bD4iOw0KDQoJCQkJCXZhciBpbmZvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOw0KCQkJCQlpbmZvLnN0eWxlLmNvbG9yID0gImdyZWVuIjsNCgkJCQkJ
aW5mby5pbm5lckhUTUwgPSBzZWxlY3RWaXN1YWw7DQoNCgkJCQkJdGhpcy5lbGVt
ZW50c1tpXS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGluZm8pOw0KCQkJCX0NCgkJ
CQllbHNlDQoJCQkJew0KCQkJCQlmb3IgKHZhciBqID0gMDsgaiA8IGJyYW5jaFJ1
bGVzLmxlbmd0aDsgKytqKQ0KCQkJCQl7DQoJCQkJCQlpZiAoYnJhbmNoUnVsZXNb
al0ub3B0aW9uSWQgPT0gdGhpcy5lbGVtZW50c1tpXS5pZCAmJiAodHlwZW9mIChi
cmFuY2hSdWxlc1tqXS5vcHRpb25WYWx1ZSkgPT0gInVuZGVmaW5lZCIgfHwgYnJh
bmNoUnVsZXNbal0ub3B0aW9uVmFsdWUgPT0gdGhpcy5lbGVtZW50c1tpXS52YWx1
ZSkpDQoJCQkJCQl7DQoJCQkJCQkJdmFyIGluZm8gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJmb250Iik7DQoJCQkJCQkJaW5mby5jb2xvciA9ICJncmVlbiI7DQoJ
CQkJCQkJaW5mby5pbm5lckhUTUwgPSAiKC0tJmd0OyIgKyBicmFuY2hSdWxlc1tq
XS50YXJnZXQgKyAiKSI7DQoNCgkJCQkJCQl0aGlzLmVsZW1lbnRzW2ldLnBhcmVu
dE5vZGUuYXBwZW5kQ2hpbGQoaW5mbyk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9
DQoJCQl9DQoJCX0NCgl9DQoNCglNUy5TdXBwb3J0LkZtcy5TdXJ2ZXlQYWdlID0g
ZnVuY3Rpb24gKGRvbU9iamVjdCwgc3VydmV5KQ0KCXsNCgkJdmFyIEZtcyA9IE1T
LlN1cHBvcnQuRm1zOw0KCQl2YXIgVXRpbHMgPSBGbXMuVXRpbHM7DQoJCXZhciBW
YWxpZGF0ZVJlc3VsdCA9IEZtcy5WYWxpZGF0ZVJlc3VsdDsNCg0KCQl0aGlzLmRv
bU9iamVjdCA9IGRvbU9iamVjdDsNCg0KCQl0aGlzLm5leHRQYWdlSWQgPSAtMTsN
CgkJdGhpcy5tb2RpZmllZCA9IGZhbHNlOw0KCQl0aGlzLnN1cnZleSA9IHN1cnZl
eTsNCgkJdGhpcy5pZ25vcmVkID0gZmFsc2U7DQoNCgkJdmFyIG5leHRQYWdlQnlU
b3BpY1JlZiA9IFV0aWxzLmdldENoaWxkQnlOYW1lKGRvbU9iamVjdCwgIk5leHRT
ZWN0aW9uQnlUb3BpY1JlZiIpOw0KDQoJCWlmIChuZXh0UGFnZUJ5VG9waWNSZWYg
JiYgbmV4dFBhZ2VCeVRvcGljUmVmLnZhbHVlICE9IG51bGwgJiYgbmV4dFBhZ2VC
eVRvcGljUmVmLnZhbHVlICE9ICIiKQ0KCQl7DQoJCQl0aGlzLm5leHRQYWdlSWQg
PSBwYXJzZUludChuZXh0UGFnZUJ5VG9waWNSZWYudmFsdWUpOw0KCQl9DQoNCgkJ
dGhpcy5jb21wb3VuZGluZ0JyYW5jaFJ1bGVzID0gW107DQoJCXZhciBkYXRhID0g
VXRpbHMuZ2V0Q2hpbGRCeU5hbWUoZG9tT2JqZWN0LCAiQ29tcG91bmRpbmdCcmFu
Y2hSdWxlcyIpOw0KCQlpZiAoZGF0YSkNCgkJew0KCQkJdmFyIGNvbnRhaW5lcnMg
PSBkYXRhLmNoaWxkTm9kZXM7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGNvbnRh
aW5lcnMubGVuZ3RoOyBpKyspDQoJCQl7DQoJCQkJdmFyIGJycyA9IFV0aWxzLmdl
dENoaWxkQnlOYW1lKGNvbnRhaW5lcnNbaV0sICJicnMiKTsNCgkJCQl2YXIgY25i
cnMgPSBVdGlscy5nZXRDaGlsZE5vZGVzQnlBdHRyaWJ1dGUoY29udGFpbmVyc1tp
XSwgIm5hbWUiLCAiY25iciIpOw0KCQkJCXZhciByZWYgPSBjb250YWluZXJzW2ld
LmdldEF0dHJpYnV0ZSgnZGF0YS1yZWYnKTsNCgkJCQl2YXIgcHJvYmFiaWxpdHkg
PSBjb250YWluZXJzW2ldLmdldEF0dHJpYnV0ZSgnZGF0YS1wcm9iYWJpbGl0eScp
Ow0KCQkJCXZhciBydWxlID0gbmV3IE1TLlN1cHBvcnQuRm1zLkNvbXBvdW5kaW5n
QnJhbmNoUnVsZShwYXJzZUludChyZWYpLCBwYXJzZUludChwcm9iYWJpbGl0eSkp
Ow0KDQoJCQkJaWYgKGJycyAmJiBicnMudmFsdWUpDQoJCQkJew0KCQkJCQlydWxl
LmFkZENvbmRpdGlvbnMoYnJzLnZhbHVlLnNwbGl0KCIqIikpOw0KCQkJCX0NCg0K
CQkJCWlmIChjbmJycyAmJiBjbmJycy5sZW5ndGggPiAwKQ0KCQkJCXsNCgkJCQkJ
cnVsZS5hZGRDb250ZXh0Q29uZGl0aW9ucyhjbmJycyk7DQoJCQkJfQ0KDQoJCQkJ
dGhpcy5jb21wb3VuZGluZ0JyYW5jaFJ1bGVzLnB1c2gocnVsZSk7DQoJCQl9DQoJ
CX0NCg0KCQl2YXIgcGFnZUlkOw0KDQoJCWlmICh0aGlzLmRvbU9iamVjdC5pZCA9
PSAiRElWXzAiKQ0KCQl7DQoJCQlwYWdlSWQgPSAiMCI7DQoJCX0NCgkJZWxzZSBp
ZiAodGhpcy5kb21PYmplY3QuaWQgPT0gIkRJVl9DTE9TRSIpDQoJCXsNCgkJCXBh
Z2VJZCA9ICJFbmQiOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcGFnZUlkID0gVXRp
bHMuZ2V0Q2hpbGRCeU5hbWUoZG9tT2JqZWN0LCAiaWQiKS52YWx1ZTsNCgkJfQ0K
DQoJCXRoaXMuZ2V0UGFnZUlkID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJcmV0dXJu
IHBhZ2VJZDsNCgkJfQ0KDQoJCXRoaXMucXVlc3Rpb25zID0gW107DQoNCgkJdGhp
cy5kaXNjb3ZlclF1ZXN0aW9ucyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWlmICh0
aGlzLmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJCXZhciBlcyA9IFV0aWxz
LmdldENoaWxkTm9kZXNCeUNsYXNzKHRoaXMuZG9tT2JqZWN0LCAiUVVFU1RJT05D
T05UQUlORVIiKTsNCg0KCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBl
cy5sZW5ndGg7ICsraW5kZXgpDQoJCQkJew0KCQkJCQl0aGlzLnF1ZXN0aW9ucy5w
dXNoKG5ldyBNUy5TdXBwb3J0LkZtcy5TdXJ2ZXlRdWVzdGlvbihlc1tpbmRleF0s
IHRoaXMpKTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQl0aGlzLmRpc2NvdmVyUXVl
c3Rpb25zKCk7DQoNCgkJdGhpcy5pc1JlcXVpcmVkID0gZnVuY3Rpb24gKCkNCgkJ
ew0KCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucXVlc3Rpb25z
Lmxlbmd0aDsgKytpbmRleCkNCgkJCXsNCgkJCQlpZiAodGhpcy5xdWVzdGlvbnNb
aW5kZXhdLmlzUmVxdWlyZWQoKSAmJiAhdGhpcy5xdWVzdGlvbnNbaW5kZXhdLm5l
ZWRIaWRlKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHRydWU7DQoJCQkJfQ0KCQkJfQ0K
DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQl0aGlzLnNhdmUgPSBmdW5jdGlv
biAoKQ0KCQl7DQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5x
dWVzdGlvbnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCXRoaXMucXVlc3Rp
b25zW2luZGV4XS5zYXZlKCk7DQoJCQl9DQoJCX0NCg0KCQl2YXIgdmFyaWFibGVz
ID0gW107DQoNCgkJdGhpcy5nZXRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoKQ0KCQl7
DQoJCQlyZXR1cm4gdmFyaWFibGVzOw0KCQl9DQoNCgkJdGhpcy5wb3B1bGF0ZVZh
cmlhYmxlcyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXZhcmlhYmxlcyA9IFtdOw0K
DQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5xdWVzdGlvbnMu
bGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCXZhciBzdWJWYXJpYWJsZXMgPSB0
aGlzLnF1ZXN0aW9uc1tpbmRleF0ucG9wdWxhdGVWYXJpYWJsZXMoKTsNCg0KCQkJ
CWZvciAodmFyIGtleSBpbiBzdWJWYXJpYWJsZXMpDQoJCQkJew0KCQkJCQl2YXJp
YWJsZXNba2V5XSA9IHN1YlZhcmlhYmxlc1trZXldOw0KCQkJCX0NCgkJCX0NCgkJ
fQ0KDQoJCXRoaXMucmVzdG9yZSA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWZvciAo
dmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnF1ZXN0aW9ucy5sZW5ndGg7ICsr
aW5kZXgpDQoJCQl7DQoJCQkJdGhpcy5xdWVzdGlvbnNbaW5kZXhdLnJlc3RvcmUo
KTsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMudmFsaWRhdGUgPSBmdW5jdGlvbiAoKQ0K
CQl7DQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5xdWVzdGlv
bnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCXZhciByZXN1bHQgPSB0aGlz
LnF1ZXN0aW9uc1tpbmRleF0udmFsaWRhdGUoKTsNCgkJCQlpZiAoIXJlc3VsdC5p
c1ZhbGlkKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHJlc3VsdDsNCgkJCQl9DQoJCQl9
DQoNCgkJCXJldHVybiBuZXcgVmFsaWRhdGVSZXN1bHQodHJ1ZSk7DQoJCX0NCg0K
CQl0aGlzLmdldE5leHRQYWdlQnlCcmFuY2hSdWxlID0gZnVuY3Rpb24gKCkNCgkJ
ew0KCQkJdmFyIG5leHRQYWdlSWQgPSAtMTsNCg0KCQkJLy8gSWYgY2xpY2sgIlNr
aXAiIGJ1dHRvbiwgZG9uJ3QgY2hlY2sgcXVlc3Rpb24gYnJhbmNoIHJ1bGUgaW4g
dGhpcyBwYWdlLg0KCQkJaWYgKHRoaXMubW9kaWZpZWQpDQoJCQl7DQoJCQkJZm9y
ICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucXVlc3Rpb25zLmxlbmd0aDsg
KytpbmRleCkNCgkJCQl7DQoJCQkJCWlmICgobmV4dFBhZ2VJZCA9IHRoaXMucXVl
c3Rpb25zW2luZGV4XS5nZXROZXh0UGFnZUJ5QnJhbmNoUnVsZSgpKSAhPSAtMSkN
CgkJCQkJew0KCQkJCQkJcmV0dXJuIG5leHRQYWdlSWQ7DQoJCQkJCX0NCgkJCQl9
DQoJCQl9DQoNCgkJCXZhciBjb250ZXh0ID0gc3VydmV5LmdldENvbnRleHQoKTsN
CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb21wb3VuZGluZ0JyYW5jaFJ1
bGVzLmxlbmd0aDsgaSsrKQ0KCQkJew0KCQkJCWlmICh0aGlzLmNvbXBvdW5kaW5n
QnJhbmNoUnVsZXNbaV0uZXZhbHVhdGUodGhpcy5zdXJ2ZXksIGNvbnRleHQpKQ0K
CQkJCXsNCgkJCQkJcmV0dXJuIHRoaXMuY29tcG91bmRpbmdCcmFuY2hSdWxlc1tp
XS5uZXh0UGFnZUlkOw0KCQkJCX0NCgkJCX0NCg0KCQkJcmV0dXJuIHRoaXMubmV4
dFBhZ2VJZDsNCgkJfQ0KDQoJCXRoaXMuZ2V0UXVlc3Rpb25CeUlkID0gZnVuY3Rp
b24gKHF1ZXN0aW9uSWQpDQoJCXsNCgkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5k
ZXggPCB0aGlzLnF1ZXN0aW9ucy5sZW5ndGg7ICsraW5kZXgpDQoJCQl7DQoJCQkJ
aWYgKHRoaXMucXVlc3Rpb25zW2luZGV4XS5nZXRRdWVzdGlvbklkKCkgPT0gcXVl
c3Rpb25JZCkNCgkJCQl7DQoJCQkJCXJldHVybiB0aGlzLnF1ZXN0aW9uc1tpbmRl
eF07DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KDQoJCXRo
aXMuZ2V0UXVlc3Rpb25CeUVsZW1lbnQgPSBmdW5jdGlvbiAoZWwpDQoJCXsNCgkJ
CWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWVzdGlvbnMubGVuZ3RoOyArK2kp
DQoJCQl7DQoJCQkJaWYgKFV0aWxzLmlzQW5jZXN0b3JPZih0aGlzLnF1ZXN0aW9u
c1tpXS5kb21PYmplY3QsIGVsKSkNCgkJCQl7DQoJCQkJCXJldHVybiB0aGlzLnF1
ZXN0aW9uc1tpXTsNCgkJCQl9DQoJCQl9DQoNCgkJCXJldHVybiBudWxsOw0KCQl9
DQoNCgkJdGhpcy5zaG93ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJdmFyIGlzSWdu
b3JlZCA9IHRydWU7DQoJCQl0aGlzLmlnbm9yZWQgPSBmYWxzZTsNCgkJCXZhciBx
dWVzdGlvbkNvdW50ID0gdGhpcy5xdWVzdGlvbnMubGVuZ3RoOw0KCQkJZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucXVlc3Rpb25zLmxlbmd0aDsgKytp
bmRleCkNCgkJCXsNCgkJCQl2YXIgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uc1tp
bmRleF07DQoJCQkJcXVlc3Rpb24ucHJlcGFyZSgpOw0KCQkJCWlmICghcXVlc3Rp
b24ubmVlZEhpZGUpDQoJCQkJew0KCQkJCQlpc0lnbm9yZWQgPSBmYWxzZTsNCgkJ
CQl9DQoJCQl9DQoNCgkJCWlmIChxdWVzdGlvbkNvdW50ID4gMCAmJiBpc0lnbm9y
ZWQpDQoJCQl7DQoJCQkJdGhpcy5pZ25vcmVkID0gdHJ1ZTsNCgkJCX0NCgkJCWlm
ICh0aGlzLmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJCXRoaXMuZW5hYmxl
QnV0dG9uKCJidG5Ta2lwIiwgIXRoaXMuaXNSZXF1aXJlZCgpKTsNCgkJCQl0aGlz
LmRvbU9iamVjdC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgkJCX0NCgkJfQ0K
DQoJCXRoaXMuZW5hYmxlQnV0dG9uID0gZnVuY3Rpb24gKGJ1dHRvbkRhdGFOYW1l
LCBpc0VuYWJsZWQpDQoJCXsNCgkJCXZhciBidXR0b24gPSBVdGlscy5nZXRDaGls
ZEJ5QXR0cmlidXRlKHRoaXMuZG9tT2JqZWN0LCAiZGF0YS1uYW1lIiwgYnV0dG9u
RGF0YU5hbWUpOw0KCQkJaWYgKCFidXR0b24pDQoJCQl7DQoJCQkJcmV0dXJuOw0K
CQkJfQ0KCQkJaWYgKGlzRW5hYmxlZCkNCgkJCXsNCgkJCQlidXR0b24ucmVtb3Zl
QXR0cmlidXRlKCJkaXNhYmxlZCIpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJ
CWJ1dHRvbi5zZXRBdHRyaWJ1dGUoImRpc2FibGVkIiwgImRpc2FibGVkIik7DQoJ
CQl9DQoJCX0NCg0KCQl0aGlzLmhpZGUgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlp
ZiAodGhpcy5kb21PYmplY3QgIT0gbnVsbCkNCgkJCXsNCgkJCQl0aGlzLmRvbU9i
amVjdC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCQkJfQ0KCQl9DQoNCgkJdGhp
cy5pc1Zpc2libGUgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlpZiAodGhpcy5kb21P
YmplY3QgIT0gbnVsbCkNCgkJCXsNCgkJCQlyZXR1cm4gdGhpcy5kb21PYmplY3Qu
c3R5bGUuZGlzcGxheSA9PSAibm9uZSIgPyBmYWxzZSA6IHRydWU7DQoJCQl9DQoN
CgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCXRoaXMuZGlzcGxheUJyYW5jaFJ1
bGVzID0gZnVuY3Rpb24gKG5leHRQYWdlSWRJbk9yZGVyKQ0KCQl7DQoJCQl2YXIg
bmV4dFBhZ2VJZDsNCgkJCWlmICh0aGlzLm5leHRQYWdlSWQgPiAwKQ0KCQkJew0K
CQkJCW5leHRQYWdlSWQgPSB0aGlzLm5leHRQYWdlSWQ7DQoJCQl9DQoJCQllbHNl
DQoJCQl7DQoJCQkJbmV4dFBhZ2VJZCA9IG5leHRQYWdlSWRJbk9yZGVyOw0KCQkJ
fQ0KDQoJCQl2YXIgaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsNCgkJCWluZm8uc3R5bGUuY29sb3IgPSAiZ3JlZW4iOw0KCQkJaW5mby5pbm5l
ckhUTUwgPSAiKCIgKyB0aGlzLmdldFBhZ2VJZCgpICsgIi0tJmd0OyIgKyBuZXh0
UGFnZUlkICsgIikiOw0KDQoJCQlpZiAodGhpcy5kb21PYmplY3QgIT0gbnVsbCkN
CgkJCXsNCgkJCQl0aGlzLmRvbU9iamVjdC5wYXJlbnROb2RlLmluc2VydEJlZm9y
ZShpbmZvLCB0aGlzLmRvbU9iamVjdCk7DQoJCQl9DQoNCgkJCWZvciAodmFyIGlu
ZGV4ID0gMDsgaW5kZXggPCB0aGlzLnF1ZXN0aW9ucy5sZW5ndGg7ICsraW5kZXgp
DQoJCQl7DQoJCQkJdGhpcy5xdWVzdGlvbnNbaW5kZXhdLmRpc3BsYXlCcmFuY2hS
dWxlcygpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJTVMuU3VwcG9ydC5GbXMuRm9sbG93
VXAgPSBmdW5jdGlvbiAoc3VydmV5SWRzLCBsYW5ndWFnZSwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgc2VydmVyQ29vcmRpbmF0ZSwgY2xpZW50Q29vcmRpbmF0ZSwg
cXVpdE1vZGUsIHRyaWdnZXIsIGNvbmRpdGlvbnMpDQoJew0KCQl0aGlzLmdldFN1
cnZleUlkcyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXJldHVybiBzdXJ2ZXlJZHM7
DQoJCX0NCg0KCQl0aGlzLmdldExhbmd1YWdlID0gZnVuY3Rpb24gKCkNCgkJew0K
CQkJcmV0dXJuIGxhbmd1YWdlOw0KCQl9DQoNCgkJdGhpcy5nZXRTdGFydE9mZnNl
dCA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXJldHVybiBzdGFydE9mZnNldDsNCgkJ
fQ0KDQoJCXRoaXMuZ2V0RW5kT2Zmc2V0ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJ
cmV0dXJuIGVuZE9mZnNldDsNCgkJfQ0KDQoJCXRoaXMuZ2V0UXVpdE1vZGUgPSBm
dW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gcXVpdE1vZGU7DQoJCX0NCg0KCQl0
aGlzLmdldFRyaWdnZXIgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gdHJp
Z2dlcjsNCgkJfQ0KDQoJCXRoaXMuZ2V0Q29uZGl0aW9ucyA9IGZ1bmN0aW9uICgp
DQoJCXsNCgkJCXJldHVybiBjb25kaXRpb25zOw0KCQl9DQoNCgkJdGhpcy5nZXRT
ZXJ2ZXJDb29yZGluYXRlID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJcmV0dXJuIHNl
cnZlckNvb3JkaW5hdGU7DQoJCX0NCg0KCQl0aGlzLmdldENsaWVudENvb3JkaW5h
dGUgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gY2xpZW50Q29vcmRpbmF0
ZTsNCgkJfQ0KDQoJCXRoaXMuZ2V0U3RhcnRUaW1lID0gZnVuY3Rpb24gKCkNCgkJ
ew0KCQkJcmV0dXJuIHN0YXJ0T2Zmc2V0ICsgY2xpZW50Q29vcmRpbmF0ZTsNCgkJ
fQ0KDQoJCXRoaXMuZ2V0RW5kVGltZSA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXJl
dHVybiBlbmRPZmZzZXQgKyBjbGllbnRDb29yZGluYXRlOw0KCQl9DQoNCgkJdGhp
cy5pc0FjdGl2ZSA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXZhciB0aW1lID0gTWF0
aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7DQoJCQlyZXR1
cm4gKHRpbWUgPj0gdGhpcy5nZXRTdGFydFRpbWUoKSAmJiB0aW1lIDw9IHRoaXMu
Z2V0RW5kVGltZSgpKTsNCgkJfQ0KDQoJCXRoaXMuaXNFeHBpcmVkID0gZnVuY3Rp
b24gKCkNCgkJew0KCQkJcmV0dXJuIE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdl
dFRpbWUoKSAvIDEwMDApID4gdGhpcy5nZXRFbmRUaW1lKCk7DQoJCX0NCg0KCQl0
aGlzLmV2YWx1dGUgPSBmdW5jdGlvbiAoc3VydmV5LCBpc1BhcnRpYWwpDQoJCXsN
CgkJCWlmICgocXVpdE1vZGUgIT0gMikgJiYgKHF1aXRNb2RlICE9IChpc1BhcnRp
YWwgPyAxIDogMCkpKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCg0K
CQkJZm9yICh2YXIgaSA9IDA7IGkgPCBjb25kaXRpb25zLmxlbmd0aDsgKytpKQ0K
CQkJew0KCQkJCWlmICghY29uZGl0aW9uc1tpXS5ldmFsdXRlKHN1cnZleSkpDQoJ
CQkJew0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1
cm4gdHJ1ZTsNCgkJfQ0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLkZvbGxvd1VwLnBh
cnNlRm9sbG93dXBzRmllbGQgPSBmdW5jdGlvbiAoZmllbGRWYWx1ZSwgbGFuZ3Vh
Z2UsIGxvYWRUaW1lKQ0KCXsNCgkJdmFyIGZvbGxvd1VwcyA9IFtdOw0KCQl2YXIg
cmUgPSAvXihcW1xbKFxkKykoLFxkKykqXF0sXGQrLFxkKyxcZCssXGQsXGQrLFxb
XFtcZCssXGQrLFxkKyxcZCtcXSgsXFtcZCssXGQrLFxkKyxcZCtcXSkqXF1cXSgs
XFtcWyhcZCspKCxcZCspKlxdLFxkKyxcZCssXGQrLFxkLFxkKyxcW1xbXGQrLFxk
KyxcZCssXGQrXF0oLFxbXGQrLFxkKyxcZCssXGQrXF0pKlxdXF0pKik/JC87DQoJ
CWlmIChyZS50ZXN0KGZpZWxkVmFsdWUpKQ0KCQl7DQoJCQl2YXIgZm9sbG93VXBN
ZXRhcyA9IGV2YWwoJ1snICsgZmllbGRWYWx1ZSArICddJyk7IC8vIGFzIHdlIGhh
dmUgdmVyZmllZCB0aGUgZmllbGRWYWx1ZSB3aXRoIGEgc3RyaWN0IHJlZ3VsYXIg
ZXhwcmVzc2lvbiwgdGhpcyAiZXZhbCIgc2hvdWQgYmUgc2FmZQkNCg0KCQkJdmFy
IHRpbWUgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAw
KTsNCgkJCXZhciBzZXJ2ZXJUaW1lT2Zmc2V0ID0gdGltZSAtIGxvYWRUaW1lOw0K
DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGZvbGxvd1VwTWV0YXMubGVuZ3RoOyAr
K2kpDQoJCQl7DQoJCQkJdmFyIGZvbGxvd1VwTWV0YSA9IGZvbGxvd1VwTWV0YXNb
aV07DQoNCgkJCQl2YXIgY29uZGl0aW9ucyA9IFtdOw0KCQkJCWZvciAodmFyIGog
PSAwOyBqIDwgZm9sbG93VXBNZXRhWzZdLmxlbmd0aDsgKytqKQ0KCQkJCXsNCgkJ
CQkJdmFyIGNvbmRpdGlvbk1ldGEgPSBmb2xsb3dVcE1ldGFbNl1bal07DQoJCQkJ
CWNvbmRpdGlvbnMucHVzaChuZXcgTVMuU3VwcG9ydC5GbXMuQ29uZGl0aW9uKGNv
bmRpdGlvbk1ldGFbMF0sIGNvbmRpdGlvbk1ldGFbMV0sIGNvbmRpdGlvbk1ldGFb
Ml0sIGNvbmRpdGlvbk1ldGFbM10pKTsNCgkJCQl9DQoJCQkJZm9sbG93VXBzLnB1
c2gobmV3IE1TLlN1cHBvcnQuRm1zLkZvbGxvd1VwKGZvbGxvd1VwTWV0YVswXSwg
bGFuZ3VhZ2UsIGZvbGxvd1VwTWV0YVsxXSwgZm9sbG93VXBNZXRhWzJdLCBmb2xs
b3dVcE1ldGFbM10gKyBzZXJ2ZXJUaW1lT2Zmc2V0LCB0aW1lLCBmb2xsb3dVcE1l
dGFbNF0sIGZvbGxvd1VwTWV0YVs1XSwgY29uZGl0aW9ucykpOw0KCQkJfQ0KCQl9
DQoNCgkJcmV0dXJuIGZvbGxvd1VwczsNCgl9DQoNCglNUy5TdXBwb3J0LkZtcy5G
b2xsb3dVcC5wYXJzZUZvbGxvd3Vwc0Nvb2tpZSA9IGZ1bmN0aW9uIChjb29raWVW
YWx1ZSkNCgl7DQoJCXZhciBmb2xsb3dVcHMgPSBbXTsNCg0KCQl2YXIgcmUgPSAv
XihcW1xbKFxkKykoLFxkKykqXF0sXCdbYS16QS1aXSsoLVthLXpBLVpdKyk/XCcs
XGQrLFxkKyxcZCssXGQrLFxkK1xdKCxcW1xbKFxkKykoLFxkKykqXF0sXCdbW2Et
ekEtWl0rKC1bYS16QS1aXSspP1wnLFxkKyxcZCssXGQrLFxkKyxcZCtcXSkqKT8k
LzsNCgkJaWYgKHJlLnRlc3QoY29va2llVmFsdWUpKQ0KCQl7DQoJCQl2YXIgbWV0
YXMgPSBldmFsKCdbJyArIGNvb2tpZVZhbHVlICsgJ10nKTsgLy8gYXMgd2UgaGF2
ZSB2ZXJmaWVkIHRoZSBjb29raWVWYWx1ZSB3aXRoIGEgc3RyaWN0IHJlZ3VsYXIg
ZXhwcmVzc2lvbiwgdGhpcyAiZXZhbCIgc2hvdWQgYmUgc2FmZQ0KDQoJCQlmb3Ig
KHZhciBpID0gMDsgaSA8IG1ldGFzLmxlbmd0aDsgKytpKQ0KCQkJew0KCQkJCXZh
ciBtZXRhID0gbWV0YXNbaV07DQoJCQkJZm9sbG93VXBzLnB1c2gobmV3IE1TLlN1
cHBvcnQuRm1zLkZvbGxvd1VwKG1ldGFbMF0sIG1ldGFbMV0sIG1ldGFbMl0sIG1l
dGFbM10sIG1ldGFbNF0sIG1ldGFbNV0sIDIsIG1ldGFbNl0sIG51bGwpKTsNCgkJ
CX0NCgkJfQ0KDQoJCXJldHVybiBmb2xsb3dVcHM7DQoJfQ0KDQoJTVMuU3VwcG9y
dC5GbXMuRm9sbG93VXAucGFja2FnZUZvbGxvd3Vwc0Nvb2tpZSA9IGZ1bmN0aW9u
IChmb2xsb3dVcHMpDQoJew0KCQl2YXIgdmFsdWVzID0gW107DQoJCWZvciAodmFy
IGkgPSAwOyBpIDwgZm9sbG93VXBzLmxlbmd0aDsgKytpKQ0KCQl7DQoJCQl2YXIg
Zm9sbG93VXAgPSBmb2xsb3dVcHNbaV07DQoJCQl2YWx1ZXMucHVzaCgNCgkJCQki
WyINCgkJCQkJKyAiWyIgKyBmb2xsb3dVcC5nZXRTdXJ2ZXlJZHMoKSArICJdIiAr
ICIsIg0KCQkJCQkrICInIiArIGZvbGxvd1VwLmdldExhbmd1YWdlKCkgKyAiJyIg
KyAiLCINCgkJCQkJKyBmb2xsb3dVcC5nZXRTdGFydE9mZnNldCgpICsgIiwiDQoJ
CQkJCSsgZm9sbG93VXAuZ2V0RW5kT2Zmc2V0KCkgKyAiLCINCgkJCQkJKyBmb2xs
b3dVcC5nZXRTZXJ2ZXJDb29yZGluYXRlKCkgKyAiLCINCgkJCQkJKyBmb2xsb3dV
cC5nZXRDbGllbnRDb29yZGluYXRlKCkgKyAiLCINCgkJCQkJKyBmb2xsb3dVcC5n
ZXRUcmlnZ2VyKCkgKw0KCQkJCSJdIg0KCQkJKTsNCgkJfQ0KDQoJCXJldHVybiB2
YWx1ZXMuam9pbigpOw0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLkZvbGxvd1VwLmdl
dE1heEZvbGxvd3Vwc0V4cGlyZVRpbWUgPSBmdW5jdGlvbiAoZm9sbG93VXBzKQ0K
CXsNCgkJdmFyIG1heFZhbHVlID0gMDsNCg0KCQlmb3IgKHZhciBpID0gMDsgaSA8
IGZvbGxvd1Vwcy5sZW5ndGg7ICsraSkNCgkJew0KCQkJdmFyIGVuZFRpbWUgPSBm
b2xsb3dVcHNbaV0uZ2V0RW5kVGltZSgpOw0KCQkJaWYgKGVuZFRpbWUgPiBtYXhW
YWx1ZSkNCgkJCXsNCgkJCQltYXhWYWx1ZSA9IGVuZFRpbWU7DQoJCQl9DQoJCX0N
Cg0KCQl2YXIgdGltZSA9IG5ldyBEYXRlKCk7DQoJCXRpbWUuc2V0VGltZShtYXhW
YWx1ZSAqIDEwMDApOw0KDQoJCXJldHVybiB0aW1lOw0KCX0NCg0KCU1TLlN1cHBv
cnQuRm1zLlN1cnZleUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoc3VydmV5LCBsaXRl
cmFsKQ0KCXsNCgkJdGhpcy5ldmFsdXRlID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJ
dmFyIGYgPSBuZXcgRnVuY3Rpb24oInJldHVybiAiICsgbGl0ZXJhbCk7DQoJCQly
ZXR1cm4gZi5hcHBseShzdXJ2ZXkpOw0KCQl9DQoJfQ0KDQoJTVMuU3VwcG9ydC5G
bXMuU3VydmV5ID0gZnVuY3Rpb24gKGlkLCBjb25maWcpDQoJew0KCQkvLyB1c2lu
Zw0KCQl2YXIgRm1zID0gTVMuU3VwcG9ydC5GbXM7DQoJCXZhciBVdGlscyA9IEZt
cy5VdGlsczsNCgkJdmFyIEV2ZW50ID0gRm1zLlN1cnZleUV2ZW50Ow0KCQl2YXIg
UGFnZSA9IEZtcy5TdXJ2ZXlQYWdlOw0KCQl2YXIgRm9sbG93VXAgPSBGbXMuRm9s
bG93VXA7DQoNCgkJdGhpcy5jb29raWVEb21haW4gPSBjb25maWcgPyBjb25maWcu
c2l0ZS5jb29raWVEb21haW4gOiB0eXBlb2YgKGdDb29raWVEb21haW4pICE9ICJ1
bmRlZmluZWQiID8gKGdDb29raWVEb21haW4gfHwgZG9jdW1lbnQuZG9tYWluKSA6
IGRvY3VtZW50LmRvbWFpbjsNCg0KCQl0aGlzLmlkID0gaWQ7DQoNCgkJdGhpcy5z
dXJ2ZXlUcmFja2luZ1RleHQgPSBudWxsOw0KDQoJCXZhciBsb2FkVGltZSA9IE1h
dGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDApOw0KDQoJCXRo
aXMuZG9tT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KCQl0
aGlzLm5hbWUgPSBVdGlscy5nZXRDaGlsZEJ5SWQodGhpcy5kb21PYmplY3QsICJz
dXJ2ZXluYW1lIikudmFsdWU7DQoNCgkJdGhpcy5pbnRyb2R1Y3Rpb24gPSBudWxs
Ow0KDQoJCXRoaXMucGFnZXMgPSBbXTsNCgkJdGhpcy50aGFua3lvdSA9IG51bGw7
DQoNCgkJdGhpcy5zdWJtaXRGaWVsZHMgPSBbXTsNCg0KCQl2YXIgaGFzU3VibWl0
dGVkID0gZmFsc2U7DQoJCXRoaXMuc3RhcnRUaW1lID0gbnVsbDsNCg0KCQkvLyBF
dmVudHMNCgkJdGhpcy5vbkJlZm9yZVN0YXJ0ID0gbmV3IEV2ZW50KCk7DQoJCXRo
aXMub25CZWZvcmVBY2NlcHQgPSBuZXcgRXZlbnQoKTsNCgkJdGhpcy5vbkJlZm9y
ZURlY2xpbmUgPSBuZXcgRXZlbnQoKTsNCgkJdGhpcy5vbkJlZm9yZUNhbmNlbCA9
IG5ldyBFdmVudCgpOw0KCQl0aGlzLm9uQmVmb3JlTmV4dCA9IG5ldyBFdmVudCgp
Ow0KCQl0aGlzLm9uQmVmb3JlUHJldmlvdXMgPSBuZXcgRXZlbnQoKTsNCgkJdGhp
cy5vbkJlZm9yZVNraXAgPSBuZXcgRXZlbnQoKTsNCgkJdGhpcy5vbkJlZm9yZUNs
b3NlID0gbmV3IEV2ZW50KCk7DQoJCXRoaXMub25CZWZvcmVTdWJtaXQgPSBuZXcg
RXZlbnQoKTsNCg0KCQl0aGlzLm9uQWZ0ZXJTdGFydCA9IG5ldyBFdmVudCgpOw0K
CQl0aGlzLm9uQWZ0ZXJBY2NlcHQgPSBuZXcgRXZlbnQoKTsNCgkJdGhpcy5vbkFm
dGVyRGVjbGluZSA9IG5ldyBFdmVudCgpOw0KCQl0aGlzLm9uQWZ0ZXJDYW5jZWwg
PSBuZXcgRXZlbnQoKTsNCgkJdGhpcy5vbkFmdGVyTmV4dCA9IG5ldyBFdmVudCgp
Ow0KCQl0aGlzLm9uQWZ0ZXJQcmV2aW91cyA9IG5ldyBFdmVudCgpOw0KCQl0aGlz
Lm9uQWZ0ZXJTa2lwID0gbmV3IEV2ZW50KCk7DQoJCXRoaXMub25BZnRlckNsb3Nl
ID0gbmV3IEV2ZW50KCk7DQoJCXRoaXMub25BZnRlclN1Ym1pdCA9IG5ldyBFdmVu
dCgpOw0KDQoJCXRoaXMub25WYWxpZGF0ZUVycm9yID0gbmV3IEV2ZW50KCk7DQoN
CgkJdGhpcy5nZXRUcmFja2luZ1RleHQgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlp
ZiAoY29uZmlnICYmIGNvbmZpZy50cmlnZ2VyQ29uZmlnICYmIGNvbmZpZy50cmln
Z2VyQ29uZmlnLmVudGl0eSkNCgkJCXsNCgkJCQl0aGlzLnN1cnZleVRyYWNraW5n
VGV4dCA9IGNvbmZpZy50cmlnZ2VyQ29uZmlnLmVudGl0eS5UcmFja2luZ1RleHQ7
DQoJCQl9DQoNCgkJCXZhciB0cmFja2luZ1RleHRFbGVtZW50ID0gVXRpbHMuZ2V0
Q2hpbGRCeU5hbWUodGhpcy5kb21PYmplY3QsICJ0cmFja2luZ1RleHQiKTsNCgkJ
CWlmICh0cmFja2luZ1RleHRFbGVtZW50KQ0KCQkJew0KCQkJCXRoaXMuc3VydmV5
VHJhY2tpbmdUZXh0ID0gdHJhY2tpbmdUZXh0RWxlbWVudC52YWx1ZSB8fCB0aGlz
LnN1cnZleVRyYWNraW5nVGV4dDsNCgkJCX0NCg0KCQkJcmV0dXJuIHRoaXMuc3Vy
dmV5VHJhY2tpbmdUZXh0Ow0KCQl9DQoNCgkJdGhpcy5kaXNjb3ZlckludHJvZHVj
dGlvbiA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWlmICh0aGlzLmRvbU9iamVjdCAh
PSBudWxsKQ0KCQkJew0KCQkJCXZhciBkb21PYmplY3QgPSBVdGlscy5nZXRDaGls
ZEJ5SWQodGhpcy5kb21PYmplY3QsICJESVZfMCIpOw0KDQoJCQkJaWYgKGRvbU9i
amVjdCAhPSBudWxsKQ0KCQkJCXsNCgkJCQkJdGhpcy5pbnRyb2R1Y3Rpb24gPSBu
ZXcgUGFnZShkb21PYmplY3QsIHRoaXMpOw0KCQkJCQl0aGlzLnBhZ2VzLnB1c2go
dGhpcy5pbnRyb2R1Y3Rpb24pOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCXRoaXMu
ZGlzY292ZXJQYWdlcyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXZhciBzZWN0aW9u
cyA9IFV0aWxzLmdldENoaWxkTm9kZXNCeUNsYXNzKHRoaXMuZG9tT2JqZWN0LCAi
U1VSVkVZU0VDVElPTiIpOw0KDQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4
IDwgc2VjdGlvbnMubGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCXRoaXMucGFn
ZXMucHVzaChuZXcgUGFnZShzZWN0aW9uc1tpbmRleF0sIHRoaXMpKTsNCgkJCX0N
CgkJfQ0KDQoJCXRoaXMuZGlzY292ZXJUaGFua3lvdSA9IGZ1bmN0aW9uICgpDQoJ
CXsNCgkJCWlmICh0aGlzLmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJCXZh
ciBkb21PYmplY3QgPSBVdGlscy5nZXRDaGlsZEJ5SWQodGhpcy5kb21PYmplY3Qs
ICJESVZfQ0xPU0UiKTsNCg0KCQkJCWlmIChkb21PYmplY3QgIT0gbnVsbCkNCgkJ
CQl7DQoJCQkJCXRoaXMudGhhbmt5b3UgPSBuZXcgUGFnZShkb21PYmplY3QsIHRo
aXMpOw0KCQkJCQl0aGlzLnBhZ2VzLnB1c2godGhpcy50aGFua3lvdSk7DQoJCQkJ
fQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5kaXNjb3ZlckludHJvZHVjdGlvbigpOw0K
CQl0aGlzLmRpc2NvdmVyUGFnZXMoKTsNCgkJdGhpcy5kaXNjb3ZlclRoYW5reW91
KCk7DQoNCgkJdGhpcy51cmxQYXJhbWV0ZXJzID0gVXRpbHMuZ2V0VXJsUGFyYW1l
dGVycygpOw0KDQoJCXRoaXMuYWRkU3VibWl0RmllbGQgPSBmdW5jdGlvbiAoa2V5
LCB2YWx1ZSkNCgkJew0KCQkJdGhpcy5zdWJtaXRGaWVsZHNba2V5XSA9IHZhbHVl
Ow0KCQl9DQoNCgkJdmFyIGN1cnJlbnRQYWdlSW5kZXggPSAtMTsNCg0KCQl2YXIg
aGlzdG9yeSA9IFtdOw0KCQl2YXIgdmFyaWFibGVzID0gW107DQoNCgkJdGhpcy5w
b3B1bGF0ZVZhcmlhYmxlcyA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXZhcmlhYmxl
cyA9IFtdOw0KCQkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGhpc3Rvcnku
bGVuZ3RoOyArK2luZGV4KQ0KCQkJew0KCQkJCXZhciBwYWdlID0gdGhpcy5wYWdl
c1toaXN0b3J5W2luZGV4XV07DQoJCQkJaWYgKHBhZ2UubW9kaWZpZWQpDQoJCQkJ
ew0KCQkJCQl2YXIgc3ViVmFyaWFibGVzID0gcGFnZS5nZXRWYXJpYWJsZXMoKTsN
CgkJCQkJZm9yICh2YXIga2V5IGluIHN1YlZhcmlhYmxlcykNCgkJCQkJew0KCQkJ
CQkJdmFyaWFibGVzW2tleV0gPSBzdWJWYXJpYWJsZXNba2V5XTsNCgkJCQkJfQ0K
CQkJCX0NCgkJCX0NCgkJfQ0KDQoJCXRoaXMuZ2V0VmFyaWFibGVzID0gZnVuY3Rp
b24gKCkNCgkJew0KCQkJcmV0dXJuIHZhcmlhYmxlczsNCgkJfQ0KDQoJCXRoaXMu
Z2V0VmFyaWFibGUgPSBmdW5jdGlvbiAobmFtZSkNCgkJew0KCQkJcmV0dXJuIHZh
cmlhYmxlc1tuYW1lXTsNCgkJfQ0KDQoJCXRoaXMuaXNEZWZpbmVkID0gZnVuY3Rp
b24gKG5hbWUpDQoJCXsNCgkJCWlmICh0aGlzLmdldFZhcmlhYmxlKG5hbWUpICE9
IG51bGwpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCQllbHNlDQoJ
CQl7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5ldmFs
dXRlID0gZnVuY3Rpb24gKGV4cHJlc3Npb24pDQoJCXsNCgkJCXZhciBleHAgPSBu
ZXcgTVMuU3VwcG9ydC5GbXMuU3VydmV5RXhwcmVzc2lvbih0aGlzLCBleHByZXNz
aW9uKTsNCgkJCXJldHVybiBleHAuZXZhbHV0ZSgpOw0KCQl9DQoNCgkJdGhpcy5F
dmFsdWF0ZUNvbnRleHRWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGVsZW1lbnQpDQoJ
CXsNCgkJCXZhciBjb250ZXh0Q29uZGl0aW9uID0gZWxlbWVudC5nZXRBdHRyaWJ1
dGUoInNob3dJZiIpOw0KCQkJaWYgKGNvbnRleHRDb25kaXRpb24gPT0gbnVsbCB8
fCBjb250ZXh0Q29uZGl0aW9uID09ICIiKQ0KCQkJew0KCQkJCXJldHVybiAiTm90
RXhpc3QiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXZhciByZXRWYWwgPSAi
RXZhbEZhbHNlIjsNCgkJCQl0cnkNCgkJCQl7DQoJCQkJCXZhciBleHBXcmFwcGVy
ID0gbmV3IE1TLlN1cHBvcnQuRm1zLkV4cHJlc3Npb25XcmFwcGVyKGNvbnRleHRD
b25kaXRpb24sIHRoaXMpOw0KCQkJCQlyZXRWYWwgPSBleHBXcmFwcGVyLkV4ZWN1
dGUoKTsNCgkJCQkJaWYgKHR5cGVvZiAocmV0VmFsKSA9PSAidW5kZWZpbmVkIiB8
fCByZXRWYWwgPT0gbnVsbCkNCgkJCQkJew0KCQkJCQkJcmV0VmFsID0gIk5vdEV4
aXN0IjsNCgkJCQkJfQ0KCQkJCQllbHNlIGlmIChyZXRWYWwudG9TdHJpbmcoKSA9
PSAidHJ1ZSIpDQoJCQkJCXsNCgkJCQkJCXJldFZhbCA9ICJFdmFsVHJ1ZSI7DQoJ
CQkJCX0NCgkJCQkJZWxzZSBpZiAocmV0VmFsLnRvU3RyaW5nKCkgPT0gImZhbHNl
IiB8fCAhL14oTm90RXhpc3R8RXZhbFRydWV8RXZhbEZhbHNlKSQvZy50ZXN0KHJl
dFZhbCkpDQoJCQkJCXsNCgkJCQkJCXJldFZhbCA9ICJFdmFsRmFsc2UiOw0KCQkJ
CQl9DQoJCQkJfQ0KCQkJCWNhdGNoIChlKQ0KCQkJCXsNCgkJCQkJcmV0VmFsID0g
Ik5vdEV4aXN0IjsNCgkJCQl9DQoJCQkJcmV0dXJuIHJldFZhbDsNCgkJCX0NCgkJ
fQ0KDQoJCXRoaXMuc3RhcnQgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlpZiAodGhp
cy5vbkJlZm9yZVN0YXJ0LmZpcmUodGhpcywgbnVsbCkpDQoJCQl7DQoJCQkJdGhp
cy5zaG93KCk7DQoJCQkJaWYgKHRoaXMucGFnZXMubGVuZ3RoID4gMCkNCgkJCQl7
DQoJCQkJCWN1cnJlbnRQYWdlSW5kZXggPSAtMTsNCg0KCQkJCQl0aGlzLm5leHQo
KTsNCgkJCQl9DQoNCgkJCQlpZiAodHlwZW9mICh0aGlzLnN0YXJ0VGltZSkgPT0g
InVuZGVmaW5lZCIgfHwgdGhpcy5zdGFydFRpbWUgPT0gbnVsbCkNCgkJCQl7DQoJ
CQkJCXRoaXMuc3RhcnRUaW1lID0gbmV3IERhdGUoKTsNCgkJCQl9DQoNCgkJCQl0
aGlzLm9uQWZ0ZXJTdGFydC5maXJlKHRoaXMsIG51bGwpOw0KCQkJfQ0KCQl9DQoN
CgkJdGhpcy5maW5kUGFnZUluZGV4QnlQYWdlSWQgPSBmdW5jdGlvbiAocGFnZUlk
KQ0KCQl7DQoJCQlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5wYWdl
cy5sZW5ndGg7ICsraW5kZXgpDQoJCQl7DQoJCQkJaWYgKHRoaXMucGFnZXNbaW5k
ZXhdLmdldFBhZ2VJZCgpID09IHBhZ2VJZCkNCgkJCQl7DQoJCQkJCXJldHVybiBp
bmRleDsNCgkJCQl9DQoJCQl9DQoNCgkJCXJldHVybiAtMTsNCgkJfQ0KDQoJCXRo
aXMuZ2V0UGFnZUJ5SWQgPSBmdW5jdGlvbiAocGFnZUlkKQ0KCQl7DQoJCQl2YXIg
aW5kZXggPSB0aGlzLmZpbmRQYWdlSW5kZXhCeVBhZ2VJZChwYWdlSWQpOw0KCQkJ
aWYgKGluZGV4ICE9IC0xKQ0KCQkJew0KCQkJCXJldHVybiB0aGlzLnBhZ2VzW2lu
ZGV4XTsNCgkJCX0NCg0KCQkJcmV0dXJuIG51bGw7DQoJCX0NCg0KCQl0aGlzLmdl
dFBhZ2VCeUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkNCgkJew0KCQkJZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBhZ2VzLmxlbmd0aDsgKytpKQ0KCQkJew0K
CQkJCWlmIChVdGlscy5pc0FuY2VzdG9yT2YodGhpcy5wYWdlc1tpXS5kb21PYmpl
Y3QsIGVsZW1lbnQpKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIHRoaXMucGFnZXNbaV07
DQoJCQkJfQ0KCQkJfQ0KDQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KDQoJCXRoaXMu
Z2V0Q3VycmVudFBhZ2UgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gdGhp
cy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XTsNCgkJfQ0KDQoJCXRoaXMubmV4dCA9
IGZ1bmN0aW9uICgpDQoJCXsNCgkJCWlmIChjdXJyZW50UGFnZUluZGV4ID49IHRo
aXMucGFnZXMubGVuZ3RoIHx8ICh0aGlzLnRoYW5reW91ICE9IG51bGwgJiYgdGhp
cy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XSA9PSB0aGlzLnRoYW5reW91KSkNCgkJ
CXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoNCgkJCWlmICh0aGlzLm9uQmVm
b3JlTmV4dC5maXJlKHRoaXMsIG51bGwpKQ0KCQkJew0KCQkJCWlmIChjdXJyZW50
UGFnZUluZGV4ID09IC0xKQ0KCQkJCXsNCgkJCQkJY3VycmVudFBhZ2VJbmRleCA9
IDA7DQoNCgkJCQkJaWYgKGN1cnJlbnRQYWdlSW5kZXggPj0gdGhpcy5wYWdlcy5s
ZW5ndGgpDQoJCQkJCXsNCgkJCQkJCXRoaXMuc3VibWl0KCk7DQoJCQkJCX0NCgkJ
CQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQl2YXIgc2hvd3BhZ2UgPSBwYXJzZUludChV
dGlscy5nZXRDaGlsZEJ5SWQodGhpcy5kb21PYmplY3QsICJzaG93cGFnZSIpLnZh
bHVlKTsNCgkJCQkJCS8vIGRpc3BsYXkgdGhlIHBhZ2Ugc3BlY2lmaWVkIGJ5IHNo
b3dwYWdlDQoJCQkJCQlpZiAoc2hvd3BhZ2UgPiAxICYmIHNob3dwYWdlIDw9IHRo
aXMucGFnZXMubGVuZ3RoKQ0KCQkJCQkJew0KCQkJCQkJCWZvciAodmFyIGkgPSAw
OyBpIDwgc2hvd3BhZ2UgLSAxOyBpKyspDQoJCQkJCQkJew0KCQkJCQkJCQloaXN0
b3J5LnB1c2goaSk7DQoJCQkJCQkJfQ0KDQoJCQkJCQkJY3VycmVudFBhZ2VJbmRl
eCA9IHNob3dwYWdlIC0gMTsNCgkJCQkJCX0NCgkJCQkJCS8vIGlmIHRoZSB2YWx1
ZSBvZiBzaG93cGFnZSBpcyBvdXQgb2YgdGhlIHBhZ2VzIGFycmF5LCB0aGVuIGRp
c3BsYXkgdGhlIHRoYW5reW91IHBhZ2UNCgkJCQkJCWVsc2UgaWYgKHNob3dwYWdl
ID4gdGhpcy5wYWdlcy5sZW5ndGgpDQoJCQkJCQl7DQoJCQkJCQkJY3VycmVudFBh
Z2VJbmRleCA9IHRoaXMucGFnZXMubGVuZ3RoIC0gMTsNCgkJCQkJCX0NCg0KCQkJ
CQkJdGhpcy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XS5zaG93KCk7DQoJCQkJCQl0
aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLnNhdmUoKTsNCgkJCQkJfQ0KCQkJ
CX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl2YXIgdmFsaWRhdGVSZXN1bHQgPSB0
aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLnZhbGlkYXRlKCk7DQoJCQkJCWlm
ICh2YWxpZGF0ZVJlc3VsdC5pc1ZhbGlkKQ0KCQkJCQl7DQoJCQkJCQloaXN0b3J5
LnB1c2goY3VycmVudFBhZ2VJbmRleCk7DQoJCQkJCQl0aGlzLnBhZ2VzW2N1cnJl
bnRQYWdlSW5kZXhdLmhpZGUoKTsNCgkJCQkJCXRoaXMucGFnZXNbY3VycmVudFBh
Z2VJbmRleF0ubW9kaWZpZWQgPSB0cnVlOw0KCQkJCQkJdGhpcy5wYWdlc1tjdXJy
ZW50UGFnZUluZGV4XS5wb3B1bGF0ZVZhcmlhYmxlcygpOw0KCQkJCQkJdGhpcy5w
b3B1bGF0ZVZhcmlhYmxlcygpOw0KDQoJCQkJCQl2YXIgbmV4dFBhZ2VJbmRleCA9
IC0xOw0KDQoJCQkJCQl2YXIgbmV4dFBhZ2VJZCA9IHRoaXMucGFnZXNbY3VycmVu
dFBhZ2VJbmRleF0uZ2V0TmV4dFBhZ2VCeUJyYW5jaFJ1bGUoKTsNCg0KCQkJCQkJ
aWYgKG5leHRQYWdlSWQgPiAwKQ0KCQkJCQkJew0KCQkJCQkJCW5leHRQYWdlSW5k
ZXggPSB0aGlzLmZpbmRQYWdlSW5kZXhCeVBhZ2VJZChuZXh0UGFnZUlkKTsNCgkJ
CQkJCX0NCg0KCQkJCQkJaWYgKG5leHRQYWdlSW5kZXggIT0gLTEgJiYgbmV4dFBh
Z2VJbmRleCAhPSBjdXJyZW50UGFnZUluZGV4KQ0KCQkJCQkJew0KCQkJCQkJCWN1
cnJlbnRQYWdlSW5kZXggPSBuZXh0UGFnZUluZGV4Ow0KCQkJCQkJfQ0KCQkJCQkJ
ZWxzZQ0KCQkJCQkJew0KCQkJCQkJCSsrY3VycmVudFBhZ2VJbmRleDsNCgkJCQkJ
CX0NCg0KCQkJCQkJaWYgKGN1cnJlbnRQYWdlSW5kZXggPj0gdGhpcy5wYWdlcy5s
ZW5ndGggfHwgdGhpcy50aGFua3lvdSAhPSBudWxsICYmICh0aGlzLnBhZ2VzW2N1
cnJlbnRQYWdlSW5kZXhdID09IHRoaXMudGhhbmt5b3UpKQ0KCQkJCQkJew0KCQkJ
CQkJCXRoaXMuc3VibWl0KCk7DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7
DQoJCQkJCQkJdmFyIHBhZ2UgPSB0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhd
Ow0KCQkJCQkJCXBhZ2Uuc2hvdygpOw0KCQkJCQkJCXBhZ2Uuc2F2ZSgpOw0KCQkJ
CQkJCWlmIChwYWdlLmlnbm9yZWQpDQoJCQkJCQkJew0KCQkJCQkJCQl0aGlzLnNr
aXAoKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJ
CQl7DQoJCQkJCQl0aGlzLm9uVmFsaWRhdGVFcnJvci5maXJlKHRoaXMsIHZhbGlk
YXRlUmVzdWx0KTsNCgkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N
Cg0KCQkJCXRoaXMub25BZnRlck5leHQuZmlyZSh0aGlzLCBudWxsKTsNCgkJCQly
ZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlyZXR1cm4gZmFs
c2U7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLnNraXAgPSBmdW5jdGlvbiAoKQ0KCQl7
DQoJCQlpZiAodGhpcy5vbkJlZm9yZVNraXAuZmlyZSh0aGlzLCBudWxsKSkNCgkJ
CXsNCgkJCQlpZiAoY3VycmVudFBhZ2VJbmRleCA8IDApDQoJCQkJew0KCQkJCQl0
aHJvdyAiY3VycmVudFBhZ2VJbmRleCA8IDAiOw0KCQkJCX0NCgkJCQllbHNlIGlm
ICh0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLmlzUmVxdWlyZWQoKSAmJiAh
dGhpcy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XS5pZ25vcmVkKQ0KCQkJCXsNCgkJ
CQkJdGhyb3cgIkNhbm5vdCBza2lwIGEgcmVxdWlyZWQgcXVlc3Rpb24uIjsNCgkJ
CQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJaGlzdG9yeS5wdXNoKGN1cnJlbnRQ
YWdlSW5kZXgpOw0KCQkJCQl0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLnJl
c3RvcmUoKTsNCgkJCQkJdGhpcy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XS5oaWRl
KCk7DQoJCQkJCXRoaXMucGFnZXNbY3VycmVudFBhZ2VJbmRleF0ubW9kaWZpZWQg
PSBmYWxzZTsNCgkJCQkJdGhpcy5wb3B1bGF0ZVZhcmlhYmxlcygpOw0KDQoJCQkJ
CXZhciBuZXh0UGFnZUluZGV4ID0gLTE7DQoNCgkJCQkJdmFyIG5leHRQYWdlSWQg
PSB0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLmdldE5leHRQYWdlQnlCcmFu
Y2hSdWxlKCk7DQoNCgkJCQkJaWYgKG5leHRQYWdlSWQgPiAwKQ0KCQkJCQl7DQoJ
CQkJCQluZXh0UGFnZUluZGV4ID0gdGhpcy5maW5kUGFnZUluZGV4QnlQYWdlSWQo
bmV4dFBhZ2VJZCk7DQoJCQkJCX0NCg0KCQkJCQlpZiAobmV4dFBhZ2VJbmRleCAh
PSAtMSAmJiBuZXh0UGFnZUluZGV4ICE9IGN1cnJlbnRQYWdlSW5kZXgpDQoJCQkJ
CXsNCgkJCQkJCWN1cnJlbnRQYWdlSW5kZXggPSBuZXh0UGFnZUluZGV4Ow0KCQkJ
CQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJKytjdXJyZW50UGFnZUluZGV4
Ow0KCQkJCQl9DQoNCgkJCQkJaWYgKGN1cnJlbnRQYWdlSW5kZXggPj0gdGhpcy5w
YWdlcy5sZW5ndGggfHwgdGhpcy50aGFua3lvdSAhPSBudWxsICYmICh0aGlzLnBh
Z2VzW2N1cnJlbnRQYWdlSW5kZXhdID09IHRoaXMudGhhbmt5b3UpKQ0KCQkJCQl7
DQoJCQkJCQl0aGlzLnN1Ym1pdCgpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJ
ew0KCQkJCQkJdmFyIHBhZ2UgPSB0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhd
Ow0KCQkJCQkJcGFnZS5zaG93KCk7DQoJCQkJCQlwYWdlLnNhdmUoKTsNCgkJCQkJ
CWlmIChwYWdlLmlnbm9yZWQpDQoJCQkJCQl7DQoJCQkJCQkJdGhpcy5za2lwKCk7
DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQl0aGlzLm9uQWZ0ZXJTa2lw
LmZpcmUodGhpcywgbnVsbCk7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLnByZXZpb3Vz
ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJaWYgKHRoaXMub25CZWZvcmVQcmV2aW91
cy5maXJlKHRoaXMsIG51bGwpKQ0KCQkJew0KCQkJCWlmIChjdXJyZW50UGFnZUlu
ZGV4IDw9IDApDQoJCQkJew0KCQkJCQl0aHJvdyAiY3VycmVudFBhZ2VJbmRleCA8
PSAwIjsNCgkJCQl9DQoNCgkJCQlpZiAoaGlzdG9yeS5sZW5ndGggPT0gMCkNCgkJ
CQl7DQoJCQkJCXRocm93ICJoaXN0b3J5Lmxlbmd0aCA9PSAwIjsNCgkJCQl9DQoN
CgkJCQl2YXIgbGFzdFBhZ2VJbmRleCA9IGhpc3RvcnkucG9wKCk7DQoJCQkJdGhp
cy5wYWdlc1tjdXJyZW50UGFnZUluZGV4XS5oaWRlKCk7DQoJCQkJdGhpcy5wYWdl
c1tjdXJyZW50UGFnZUluZGV4XS5tb2RpZmllZCA9IGZhbHNlOw0KCQkJCWN1cnJl
bnRQYWdlSW5kZXggPSBsYXN0UGFnZUluZGV4Ow0KCQkJCXRoaXMucG9wdWxhdGVW
YXJpYWJsZXMoKTsNCgkJCQl2YXIgcGFnZSA9IHRoaXMucGFnZXNbY3VycmVudFBh
Z2VJbmRleF07DQoJCQkJcGFnZS5zaG93KCk7DQoJCQkJcGFnZS5zYXZlKCk7DQoJ
CQkJaWYgKHBhZ2UuaWdub3JlZCkNCgkJCQl7DQoJCQkJCXRoaXMucHJldmlvdXMo
KTsNCgkJCQl9DQoJCQl9DQoNCgkJCXRoaXMub25BZnRlclByZXZpb3VzLmZpcmUo
dGhpcywgbnVsbCk7DQoJCX0NCg0KCQl0aGlzLmFjY2VwdCA9IGZ1bmN0aW9uICgp
DQoJCXsNCgkJCWlmICh0aGlzLm9uQmVmb3JlQWNjZXB0LmZpcmUodGhpcywgbnVs
bCkpDQoJCQl7DQoJCQkJaWYgKHRoaXMubmV4dCgpKQ0KCQkJCXsNCgkJCQkJdGhp
cy5vbkFmdGVyQWNjZXB0LmZpcmUoKTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQl0
aGlzLmRlY2xpbmUgPSBmdW5jdGlvbiAoKQ0KCQl7DQoJCQlpZiAodGhpcy5vbkJl
Zm9yZURlY2xpbmUuZmlyZSh0aGlzLCBudWxsKSkNCgkJCXsNCgkJCQlpZiAodGhp
cy5jYW5jZWwoKSkNCgkJCQl7DQoJCQkJCXRoaXMuaW50cm9kdWN0aW9uLmhpZGUo
KTsNCgkJCQkJdGhpcy5vbkFmdGVyRGVjbGluZS5maXJlKHRoaXMsIG51bGwpOw0K
CQkJCX0NCgkJCX0NCgkJfQ0KDQoJCXRoaXMuY2xvc2UgPSBmdW5jdGlvbiAoKQ0K
CQl7DQoJCQlpZiAodGhpcy5vbkJlZm9yZUNsb3NlLmZpcmUodGhpcywgbnVsbCkp
DQoJCQl7DQoJCQkJd2luZG93LmNsb3NlKCk7DQoJCQkJdGhpcy5vbkFmdGVyQ2xv
c2UuZmlyZSh0aGlzLCBudWxsKTsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMuY2FuY2Vs
ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJaWYgKHRoaXMub25CZWZvcmVDYW5jZWwu
ZmlyZSh0aGlzLCBudWxsKSkNCgkJCXsNCgkJCQl0aGlzLnN1Ym1pdCgiY2FuY2Vs
Iik7DQoJCQkJdGhpcy5vbkFmdGVyQ2FuY2VsLmZpcmUodGhpcywgbnVsbCk7DQoJ
CQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KDQoJ
CQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KDQoJCXRoaXMuZ2l2ZXVwID0gZnVuY3Rpb24g
KCkNCgkJew0KCQkJaWYgKHRoaXMucGFnZXNbY3VycmVudFBhZ2VJbmRleF0gIT0g
bnVsbCkNCgkJCXsNCgkJCQl0aGlzLnBhZ2VzW2N1cnJlbnRQYWdlSW5kZXhdLnJl
c3RvcmUoKTsNCgkJCX0NCgkJCXRoaXMuc3VibWl0KCJnaXZldXAiKTsNCgkJfQ0K
DQoJCXRoaXMuc3RvcCA9IGZ1bmN0aW9uICgpDQoJCXsNCgkJCXZhciBwYXJhbWV0
ZXJzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQo
IiYiKTsNCgkJCXZhciBxdWVyeXN0cmluZyA9ICIiOw0KCQkJZm9yICh2YXIgaSA9
IDA7IHBhcmFtZXRlcnMubGVuZ3RoID4gaTsgaSsrKQ0KCQkJew0KCQkJCWlmICgw
ID4gcGFyYW1ldGVyc1tpXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoInNob3d0eXBl
PSIpKQ0KCQkJCXsNCgkJCQkJcXVlcnlzdHJpbmcgKz0gIiYiICsgcGFyYW1ldGVy
c1tpXTsNCgkJCQl9DQoJCQl9DQoJCQlxdWVyeXN0cmluZyArPSAiJnNob3d0eXBl
PTUiOw0KCQkJd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9ICI/IiArIHF1ZXJ5c3Ry
aW5nLnN1YnN0cmluZygxKTsNCgkJfQ0KDQoJCXRoaXMuZ2V0U3VydmV5SWQgPSBm
dW5jdGlvbiAoKQ0KCQl7DQoJCQlyZXR1cm4gdGhpcy5zdWJtaXRGaWVsZHNbIlNV
UlZFWUlEIl0gfHwgMDsNCgkJfQ0KDQoJCXRoaXMuZ2V0U2l0ZSA9IGZ1bmN0aW9u
ICgpDQoJCXsNCgkJCXJldHVybiB0aGlzLnN1Ym1pdEZpZWxkc1siU0lURSJdIHx8
IChjb25maWcgPyBjb25maWcuc2l0ZS5uYW1lLnRvVXBwZXJDYXNlKCkgOiAiR04i
KTsNCgkJfQ0KDQoJCXRoaXMuZ2V0Q29udGV4dCA9IGZ1bmN0aW9uICgpDQoJCXsN
CgkJCXJldHVybiBjb25maWcgPyBjb25maWcuY29udGV4dCA6IHRoaXMuY29udGV4
dDsNCgkJfQ0KDQoJCXRoaXMuZ2V0UmVnaW9uID0gZnVuY3Rpb24gKCkNCgkJew0K
CQkJcmV0dXJuIHRoaXMuc3VibWl0RmllbGRzWyJSRUdJT05JRCJdIHx8ICJFTi1V
UyI7DQoJCX0NCg0KCQl0aGlzLmdldFN1cnZleUxhbmd1YWdlQ29kZSA9IGZ1bmN0
aW9uICgpDQoJCXsNCgkJCXJldHVybiB0aGlzLnN1Ym1pdEZpZWxkc1siU1VSVkVZ
TEFOR0NPREUiXSB8fCAiRU4iOw0KCQl9DQoNCgkJdGhpcy5nZXRRdWFsaWZpZWRG
b2xsb3dVcHMgPSBmdW5jdGlvbiAoYWN0aW9uKQ0KCQl7DQoJCQl2YXIgZm9sbG93
VXBzRmllbGQgPSBVdGlscy5nZXRDaGlsZEJ5SWQodGhpcy5kb21PYmplY3QsICJm
b2xsb3d1cHMiKTsNCg0KCQkJdmFyIGZvbGxvd1VwcyA9IEZvbGxvd1VwLnBhcnNl
Rm9sbG93dXBzRmllbGQoZm9sbG93VXBzRmllbGQgPyBmb2xsb3dVcHNGaWVsZC52
YWx1ZSA6ICIiLCB0aGlzLmdldFN1cnZleUxhbmd1YWdlQ29kZSgpLCBsb2FkVGlt
ZSk7DQoJCQl2YXIgcXVhbGlmaWVkRm9sbG93VXBzID0gW107DQoNCgkJCWZvciAo
dmFyIGkgPSAwOyBpIDwgZm9sbG93VXBzLmxlbmd0aDsgKytpKQ0KCQkJew0KCQkJ
CXZhciBmb2xsb3dVcCA9IGZvbGxvd1Vwc1tpXTsNCgkJCQlpZiAoZm9sbG93VXAu
ZXZhbHV0ZSh0aGlzLCAhKGFjdGlvbiA9PSAicGVyc2lzdCIpKSkNCgkJCQl7DQoJ
CQkJCXF1YWxpZmllZEZvbGxvd1Vwcy5wdXNoKGZvbGxvd1VwKTsNCgkJCQl9DQoJ
CQl9DQoNCgkJCXJldHVybiBxdWFsaWZpZWRGb2xsb3dVcHM7DQoJCX0NCg0KCQl0
aGlzLmF0dGFjaEZvbGxvd1VwU3VydmV5cyA9IGZ1bmN0aW9uIChhY3Rpb24pDQoJ
CXsNCgkJCWlmICh0aGlzLmlzSW52aXRhdGlvbiB8fCB0aGlzLmlzUHJldmlldyB8
fCB0aGlzLnN1cHByZXNzU3VibWlzc2lvbiB8fCB0aGlzLmlzU2hvd0FsbCkNCgkJ
CXsNCgkJCQlyZXR1cm47DQoJCQl9DQoNCgkJCXZhciBmb2xsb3d1cHMgPSB0aGlz
LmdldFF1YWxpZmllZEZvbGxvd1VwcyhhY3Rpb24pOyAvL2dldCBxdWFsaWZpZWQg
Zm9sbG93LXVwcyBvZiBjdXJyZW50IHN1cnZleQ0KDQoJCQlpZiAoZm9sbG93dXBz
Lmxlbmd0aCA+IDApDQoJCQl7DQoJCQkJdmFyIGZvbGxvd3VwQ29va2llS2V5ID0g
ImZtc2ZvbGxvd3VwcyIgKyAoIlNUXyIgKyB0aGlzLmdldFNpdGUoKSArICJfIiAr
IHRoaXMuZ2V0UmVnaW9uKCkpLnRvVXBwZXJDYXNlKCk7DQoNCgkJCQkvLyBtZXJn
ZSB1bmV4cGlyZWQgZXhpc3RpbmcgZm9sbG93LXVwcyB3aXRoIG5ldyBxdWFsaWZp
ZWQgZm9sbG93LXVwcw0KCQkJCXZhciBleGlzdGluZ0ZvbGxvd3VwcyA9IEZvbGxv
d1VwLnBhcnNlRm9sbG93dXBzQ29va2llKFV0aWxzLmdldENvb2tpZShmb2xsb3d1
cENvb2tpZUtleSkpOw0KDQoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBleGlzdGlu
Z0ZvbGxvd3Vwcy5sZW5ndGg7ICsraSkNCgkJCQl7DQoJCQkJCXZhciBmb2xsb3d1
cCA9IGV4aXN0aW5nRm9sbG93dXBzW2ldOw0KCQkJCQlpZiAoIWZvbGxvd3VwLmlz
RXhwaXJlZCgpKQ0KCQkJCQl7DQoJCQkJCQlmb2xsb3d1cHMucHVzaChmb2xsb3d1
cCk7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlVdGlscy5zZXRDb29raWUoDQoJCQkJ
CWZvbGxvd3VwQ29va2llS2V5LA0KCQkJCS8vIHBhY2thZ2Ugc3VydmV5IGxhbmd1
YWdlLCBmb2xsb3d1cHMod2l0aG91dCBjb25kaXRpb25zKSBhbmQgY3VycmVudCB0
aW1lIHRpY2tldCBpbnRvIGEgc3RyaW5nDQoJCQkJLy8gZS5nLiwgW2VuLFsxNDg4
LDE0ODldLDg2NDAwLDE3MjgwMCw2MzM1NzA5MDY3OCwxMjIxNDY1MDk3XSxbZW4s
WzE0ODldLCA4NjQwMCwxNzI4MDAsNjMzNTcwOTA2NzgsMTIyMTQ2NTA5N11dDQoJ
CQkJLy8gZW4gaXMgdGhlIHN1cnZleSBsYW5ndWFnZQ0KCQkJCS8vIDYzMzU3MDkw
Njc4IGlzIHRoZSBzZXJ2ZXItc2lkZSB0aW1lIHRpY2tldCAoaW4gc2Vjb25kcywg
cGx1cyB0aGUgb2Zmc2V0IGZyb20gbG9hZGluZyB0byBzdWJtaXR0aW5nKQ0KCQkJ
CS8vIDEyMjExMzA3NjE3NSBpcyB0aGUgY2xpZW50LXNpZGUgdGltZSB0aWNrZXQg
KGluIHNlY29uZHMpLg0KCQkJCQlGb2xsb3dVcC5wYWNrYWdlRm9sbG93dXBzQ29v
a2llKGZvbGxvd3VwcyksDQoJCQkJLy8gY29va2llIGV4cGlyZSB0aW1lLCBlc3Rp
bWF0ZSBlbmQgdGltZSBvZiBlYWNoIGZvbGxvd3VwLCBhbmQgcmV0dXJuIHRoZSBt
YXggdmFsdWUgb2YgdGhlbQ0KCQkJCQlGb2xsb3dVcC5nZXRNYXhGb2xsb3d1cHNF
eHBpcmVUaW1lKGZvbGxvd3VwcyksDQoJCQkJCXRoaXMuY29va2llRG9tYWluDQoJ
CQkJKTsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMuZ2V0UHJldmVudE11bHRpcGxlUmVz
cG9uc2VzQ29va2llS2V5ID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJcmV0dXJuICgi
Zm1zcG1yXyIgKyB0aGlzLmdldFN1cnZleUlkKCkgKyAiXyIgKyB0aGlzLmdldFN1
cnZleUxhbmd1YWdlQ29kZSgpKS50b1VwcGVyQ2FzZSgpOw0KCQl9DQoNCgkJdGhp
cy5hdHRhY2hQcmV2ZW50TXVsdGlwbGVSZXNwb25zZXNEdXJhdGlvbiA9IGZ1bmN0
aW9uIChhY3Rpb24pDQoJCXsNCgkJCWlmICh0aGlzLmlzSW52aXRhdGlvbiB8fCB0
aGlzLmlzUHJldmlldyB8fCB0aGlzLnN1cHByZXNzU3VibWlzc2lvbiB8fCB0aGlz
LmlzU2hvd0FsbCB8fCBhY3Rpb24gIT0gInBlcnNpc3QiKQ0KCQkJew0KCQkJCXJl
dHVybjsNCgkJCX0NCg0KCQkJaWYgKHRoaXMuZ2V0U3VydmV5SWQoKSA9PSAwKQ0K
CQkJew0KCQkJCXJldHVybjsNCgkJCX0NCg0KCQkJdmFyIGR1cmF0aW9uID0gbnVs
bDsNCg0KCQkJdmFyIGR1cmF0aW9uRmllbGQgPSBVdGlscy5nZXRDaGlsZEJ5SWQo
dGhpcy5kb21PYmplY3QsICJub011bHRpcGxlUmVzcG9uc2VzRHVyYXRpb24iKTsN
CgkJCWlmIChkdXJhdGlvbkZpZWxkKQ0KCQkJew0KCQkJCWR1cmF0aW9uID0gZHVy
YXRpb25GaWVsZC52YWx1ZTsNCg0KCQkJCXZhciBleHBpcmVzID0gbnVsbDsNCg0K
CQkJCWlmIChkdXJhdGlvbiA9PSAic2Vzc2lvbiIpDQoJCQkJew0KCQkJCQlleHBp
cmVzID0gbnVsbDsNCgkJCQl9DQoJCQkJZWxzZSBpZiAoZHVyYXRpb24gPT0gInBl
cm1hbmVudGx5IikNCgkJCQl7DQoJCQkJCWV4cGlyZXMgPSBuZXcgRGF0ZSgpOw0K
CQkJCQlleHBpcmVzLnNldEZ1bGxZZWFyKGV4cGlyZXMuZ2V0RnVsbFllYXIoKSAr
IDEwKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJdmFyIHZhbHVlID0g
cGFyc2VJbnQoZHVyYXRpb24pOw0KCQkJCQlpZiAoaXNOYU4odmFsdWUpKQ0KCQkJ
CQl7DQoJCQkJCQlyZXR1cm47DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJ
CQkJCQlleHBpcmVzID0gbmV3IERhdGUoKTsNCgkJCQkJCWV4cGlyZXMuc2V0U2Vj
b25kcyhleHBpcmVzLmdldFNlY29uZHMoKSArIHZhbHVlKTsNCgkJCQkJfQ0KCQkJ
CX0NCg0KCQkJCVV0aWxzLnNldENvb2tpZSh0aGlzLmdldFByZXZlbnRNdWx0aXBs
ZVJlc3BvbnNlc0Nvb2tpZUtleSgpLCAiMSIsIGV4cGlyZXMsIHRoaXMuY29va2ll
RG9tYWluKTsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMuc3VibWl0ID0gZnVuY3Rpb24g
KGFjdGlvbikNCgkJew0KCQkJaWYgKHR5cGVvZiAodGhpcy5zdGFydFRpbWUpICE9
ICJ1bmRlZmluZWQiICYmIHRoaXMuc3RhcnRUaW1lICE9IG51bGwgJiYgIXRoaXMu
aXNLQkVtYmVkZGVkICYmICF0aGlzLmlzSW52aXRhdGlvbikNCgkJCXsNCgkJCQl2
YXIgZCA9IG5ldyBEYXRlKCk7DQoJCQkJdGhpcy5hZGRTdWJtaXRGaWVsZCgiU1VS
VkVZRFdFTExUSU1FIiwgZC5nZXRUaW1lKCkgLSB0aGlzLnN0YXJ0VGltZS5nZXRU
aW1lKCkpOw0KCQkJfQ0KDQoJCQlpZiAoaGFzU3VibWl0dGVkKQ0KCQkJew0KCQkJ
CXJldHVybjsNCgkJCX0NCg0KCQkJaWYgKGFjdGlvbiA9PSBudWxsKQ0KCQkJew0K
CQkJCWFjdGlvbiA9ICJwZXJzaXN0IjsNCgkJCX0NCg0KCQkJaWYgKHRoaXMub25C
ZWZvcmVTdWJtaXQuZmlyZSh0aGlzLCBhY3Rpb24pKQ0KCQkJew0KCQkJCXRoaXMu
YXR0YWNoRm9sbG93VXBTdXJ2ZXlzKGFjdGlvbik7DQoJCQkJdGhpcy5hdHRhY2hQ
cmV2ZW50TXVsdGlwbGVSZXNwb25zZXNEdXJhdGlvbihhY3Rpb24pOw0KCQkJCWlm
ICh0aGlzLnN1Ym1pdEhhbmRsZXIpDQoJCQkJew0KCQkJCQl0aGlzLnN1Ym1pdEhh
bmRsZXIodGhpcywgYWN0aW9uKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJ
CQkJdGhpcy5kZWZhdWx0U3VibWl0SGFuZGxlcigpOw0KCQkJCX0NCgkJCQloYXNT
dWJtaXR0ZWQgPSB0cnVlOw0KCQkJCXRoaXMub25BZnRlclN1Ym1pdC5maXJlKHRo
aXMsIGFjdGlvbik7DQoJCQl9DQoJCX0NCg0KCQl0aGlzLmRlZmF1bHRTdWJtaXRI
YW5kbGVyID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJLy8gc2hvdyB0aGFua3lvdSBw
YWdlIGFmdGVyIHN1Ym1pdGVkDQoJCQlpZiAodGhpcy50aGFua3lvdSAhPSBudWxs
KQ0KCQkJew0KCQkJCXRoaXMudGhhbmt5b3Uuc2hvdygpOw0KCQkJfQ0KCQl9DQoN
CgkJdGhpcy5lbmNvZGVBbnN3ZXJzID0gZnVuY3Rpb24gKHRleHRFbmNvZGVyKQ0K
CQl7DQoJCQlpZiAoIXRleHRFbmNvZGVyKQ0KCQkJew0KCQkJCXRleHRFbmNvZGVy
ID0gZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBpbnB1dDsgfTsNCgkJCX0NCg0K
CQkJdmFyIGFuc3dlcnMgPSBbXTsNCg0KCQkJZm9yICh2YXIgcGFnZUluZGV4ID0g
MDsgcGFnZUluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGg7ICsrcGFnZUluZGV4KQ0K
CQkJew0KCQkJCXZhciBwYWdlID0gdGhpcy5wYWdlc1twYWdlSW5kZXhdOw0KCQkJ
CXZhciBwYWdlSWQgPSBwYWdlLmdldFBhZ2VJZCgpOw0KDQoJCQkJaWYgKHBhZ2VJ
ZCAhPSAwICYmIHBhZ2UubW9kaWZpZWQgPT0gdHJ1ZSkNCgkJCQl7DQoJCQkJCWZv
ciAodmFyIHF1ZXN0aW9uSW5kZXggPSAwOyBxdWVzdGlvbkluZGV4IDwgcGFnZS5x
dWVzdGlvbnMubGVuZ3RoOyArK3F1ZXN0aW9uSW5kZXgpDQoJCQkJCXsNCgkJCQkJ
CXZhciBxdWVzdGlvbiA9IHBhZ2UucXVlc3Rpb25zW3F1ZXN0aW9uSW5kZXhdOw0K
CQkJCQkJdmFyIHF1ZXN0aW9uSWQgPSBxdWVzdGlvbi5nZXRRdWVzdGlvbklkKCk7
DQoNCgkJCQkJCXZhciBhbnN3ZXIgPSBxdWVzdGlvbi5nZXRBbnN3ZXJzKCk7DQoN
CgkJCQkJCWZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhbnN3ZXIubGVuZ3Ro
OyArK2luZGV4KQ0KCQkJCQkJew0KCQkJCQkJCWFuc3dlcnMucHVzaChwYWdlSWQg
KyAiLCIgKyBxdWVzdGlvbklkICsgIiwiICsgYW5zd2VyW2luZGV4XS5pZCArICIs
IiArIGFuc3dlcltpbmRleF0udmFsdWUgKyAiLCIgKyB0ZXh0RW5jb2RlcihhbnN3
ZXJbaW5kZXhdLnRleHQpKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0N
Cg0KCQkJcmV0dXJuIGFuc3dlcnMuam9pbigifCIpOw0KCQl9DQoNCgkJdGhpcy5o
aWRlID0gZnVuY3Rpb24gKCkNCgkJew0KCQkJaWYgKHRoaXMuZG9tT2JqZWN0ICE9
IG51bGwpDQoJCQl7DQoJCQkJdGhpcy5kb21PYmplY3Quc3R5bGUuZGlzcGxheSA9
ICJub25lIjsNCgkJCX0NCgkJfQ0KDQoJCXRoaXMuc2hvdyA9IGZ1bmN0aW9uICgp
DQoJCXsNCgkJCWlmICh0aGlzLmRvbU9iamVjdCAhPSBudWxsKQ0KCQkJew0KCQkJ
CXRoaXMuZG9tT2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KCQkJfQ0K
CQl9DQoNCgkJdGhpcy5kaXNwbGF5QnJhbmNoUnVsZXMgPSBmdW5jdGlvbiAoKQ0K
CQl7DQoJCQl2YXIgaW5kZXggPSAwOw0KCQkJZm9yICg7IGluZGV4IDwgdGhpcy5w
YWdlcy5sZW5ndGggLSAxOyArK2luZGV4KQ0KCQkJew0KCQkJCXRoaXMucGFnZXNb
aW5kZXhdLmRpc3BsYXlCcmFuY2hSdWxlcyh0aGlzLnBhZ2VzW2luZGV4ICsgMV0u
Z2V0UGFnZUlkKCkpOw0KCQkJfQ0KDQoJCQlpZiAodGhpcy50aGFua3lvdSA9PSBu
dWxsKQ0KCQkJew0KCQkJCXRoaXMucGFnZXNbaW5kZXhdLmRpc3BsYXlCcmFuY2hS
dWxlcygiRW5kIik7DQoJCQl9DQoJCX0NCg0KCQlGbXMuU3VydmV5LlJlZ2lzdGVy
U3VydmV5SW5zdGFuY2UodGhpcyk7DQoJfQ0KDQoJTVMuU3VwcG9ydC5GbXMuU3Vy
dmV5LlN1cnZleUluc3RhbmNlcyA9IFtdOw0KDQoJTVMuU3VwcG9ydC5GbXMuU3Vy
dmV5LlJlZ2lzdGVyU3VydmV5SW5zdGFuY2UgPSBmdW5jdGlvbiAoc3VydmV5KQ0K
CXsNCgkJTVMuU3VwcG9ydC5GbXMuU3VydmV5LlN1cnZleUluc3RhbmNlc1tzdXJ2
ZXkuaWRdID0gc3VydmV5Ow0KCX0NCg0KCU1TLlN1cHBvcnQuRm1zLlN1cnZleS5H
ZXRTdXJ2ZXlJbnN0YW5jZUJ5SWQgPSBmdW5jdGlvbiAoaWQpDQoJew0KCQlyZXR1
cm4gTVMuU3VwcG9ydC5GbXMuU3VydmV5LlN1cnZleUluc3RhbmNlc1tpZF07DQoJ
fQ0KDQoJTVMuU3VwcG9ydC5GbXMuU3VydmV5LkdldFN1cnZleUluc3RhbmNlQnlF
bGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpDQoJew0KCQl2YXIgRm1zID0gTVMu
U3VwcG9ydC5GbXM7DQoJCXZhciBVdGlscyA9IEZtcy5VdGlsczsNCgkJdmFyIFN1
cnZleSA9IEZtcy5TdXJ2ZXk7DQoNCgkJZm9yICh2YXIgc3VydmV5aWQgaW4gU3Vy
dmV5LlN1cnZleUluc3RhbmNlcykNCgkJew0KCQkJdmFyIHN1cnZleSA9IFN1cnZl
eS5TdXJ2ZXlJbnN0YW5jZXNbc3VydmV5aWRdOw0KCQkJaWYgKFV0aWxzLmlzQW5j
ZXN0b3JPZihzdXJ2ZXkuZG9tT2JqZWN0LCBlbGVtZW50KSkNCgkJCXsNCgkJCQly
ZXR1cm4gc3VydmV5Ow0KCQkJfQ0KCQl9DQoJCXJldHVybiBudWxsOw0KCX0NCn0N
Cg0KZnVuY3Rpb24gZW5mb3JjZU1heExlbmd0aChvRWxlbWVudCwgaU1heExlbmd0
aCwgZSkNCnsNCglpZiAob0VsZW1lbnQudmFsdWUubGVuZ3RoID4gaU1heExlbmd0
aCkNCgl7DQoJCW9FbGVtZW50LnZhbHVlID0gKG9FbGVtZW50LnZhbHVlKS5zdWJz
dHJpbmcoMCwgaU1heExlbmd0aCk7DQoNCgkJaWYgKHdpbmRvdy5ldmVudCkgLypD
b250YWN0IFVzIDIuMSB3aWxsIGludm9rZSB0aGlzIGZ1bmN0aW9uLCBidXQgb25s
eSBwYXNzIHRoZSBmaXJzdCB0d28gcGFyYW1ldGVycyx0aHVzIGUgd2lsbCBiZSB1
bmRlZmluZWQuIHVzZSB3aW5kb3cuZXZlbnQgZmlyc3QqLw0KCQl7DQoJCQl3aW5k
b3cuZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsNCgkJfQ0KCQllbHNlIGlmIChl
ICYmIGUucHJldmVudERlZmF1bHQpDQoJCXsNCgkJCWUucHJldmVudERlZmF1bHQo
KTsNCgkJfQ0KCX0NCn0NCg0KLypiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggS0JG
ZWVkQmFjayovDQpmdW5jdGlvbiBLQkZlZWRCYWNrU2hvd1N1cnZleSgpDQp7DQoJ
dmFyIGdzZnhTdXJ2ZXlTY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
Y3JpcHQiKTsNCglnc2Z4U3VydmV5U2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2Ny
aXB0IjsNCglnc2Z4U3VydmV5U2NyaXB0Lmxhbmd1YWdlID0gImphdmFzY3JpcHQi
Ow0KCWdzZnhTdXJ2ZXlTY3JpcHQuc3JjID0gIi9jb21tb24vc2NyaXB0L2Z4L2dz
ZnhzdXJ2ZXkuanM/NC4zLjMiOw0KCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
Z3NmeFN1cnZleVNjcmlwdCk7DQp9DQo=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=default.css
Content-Type: text/css; charset=utf-8; name=default.css
Content-Location: http://support.microsoft.com/common/css/default/default.css?76
Content-Transfer-Encoding: 8bit
/* Following are set back to default style for elements which are resetted by oneMscomMaster.css */
/* Reset Start */
ol, ul
{
margin: 16px 0 16px 40px;
padding: 0;
}
h1
{
margin: 21px 0;
}
h2
{
margin: 20px 0;
}
h3
{
margin: 19px 0;
}
h4
{
margin: 21px 0;
}
h5
{
margin: 22px 0;
}
h6
{
margin: 25px 0;
}
p
{
margin: 16px 0;
}
/* Reset End */
body, select, input, form
{
font-size: 100%;
margin: 0;
}
body
{
color: #000;
background-color: #fff;
}
html
{
overflow-y: scroll;
}
input[type|="radio"], input[type|="checkbox"]
{
margin-right: 3px;
padding: 4px;
}
.checkbox td.text
{
line-height: 17px;
}
img
{
font-size: 65%;
border: none;
}
a
{
color: #07679A;
text-decoration: none;
}
a:hover
{
color: #07679A;
text-decoration: underline;
}
/* added for disabled Personalized webpart link */
span.imageBullet
{
padding: 2px 5px 2px 0 !important;
vertical-align: top;
margin-left: -20px;
}
span.disablelink
{
vertical-align: top !important;
text-decoration: none !important;
color: Gray !important;
}
span.enablelink
{
text-decoration: underline;
}
/* end disable personalize link*/
span.hl
{
font-weight: bold;
}
span.resultsHeaderLink, span.resultsFooterLink
{
font-weight: normal;
}
div.text, div.select, div.text input.text, div.select select
{
width: 100%;
}
/*Added the class to Searchui for bug 41425 */
div.rightNavSearch
{
width: 155px;
}
div.rightNavSearch div.text input.text
{
width: 125px;
}
button span.buttonText
{
font-size: 85%;
margin: 5px 10px;
vertical-align: bottom;
}
.breadcrumbs
{
font-size: 13px;
color: #666;
padding: 10px 10px 20px 0px;
}
.breadcrumbs a
{
color:#0072C6;
}
.breadcrumbs img
{
margin-right: 3px;
}
a.cc, a.mt
{
padding: 0 2px;
}
a.custip
{
position: relative;
color: black;
z-index: 10;
}
a.custip span
{
text-align: left;
width: 180px;
font-size: 65%;
color: Black;
position: absolute;
padding: 10px;
left: -9999px;
display: none;
}
a.custip:active span
{
left: -9999px;
display: none;
}
a.custip:hover, a.custip:active
{
font-size: 100%;
text-decoration: none;
}
a.custip:hover span, a.custip.show span
{
border: 1px solid #c93;
background-color:#fcfbde;
display: block;
padding: 10px;
top: 20px;
top: 5px\9;
*top: 20px;
left: 20px;
}
a.showRight:hover span, a.showRight span
{
left: -174px;
}
a.showBottom:hover span, a.showBottom span
{
top: auto;
bottom: 18px;
}
a.showLeft:hover span, a.showLeft span
{
left: 20px;
}
a.custip2
{
position: relative;
text-decoration: none;
color: black;
z-index: 10;
}
a.custip2 ul
{
padding: 0px 0px 0px 20px;
_padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
_margin: 0px 0px 0px 18px;
}
a.custip2 span
{
display: none;
}
a.custip2:hover
{
font-size: 100%;
}
a.custip2:hover span, a.custip2.show span
{
font-size: 65%;
color: Black;
display: block;
position: absolute;
width: 180px;
top: 0px;
left: 17px;
padding: 2px 5px 5px 2px;
border: 1px solid #000;
background-color: #fcfbde;
}
.rssImage
{
border: none;
float: right;
}
#contentArea
{
width: 100%;
}
/* SimpleLayout Table options */
#primaryContentTable
{
border-collapse: collapse;
}
table.primaryTable, table#primaryContentTable
{
width: 100%;
table-layout: fixed;
}
.primaryLeftColumn, .primaryMainColumn, .primaryThinColumn
{
vertical-align: top;
margin: 0px;
padding: 0px;
}
table.primaryTable td.primaryMainColumn
{
width: 100%;
}
table.primaryTable td.primaryThinColumn
{
width: 180px; /* this must match #thinColumn */
}
table.sLayout
{
width: 100%;
}
table.sLayout td
{
padding: 0;
margin: 0;
vertical-align: top;
}
/* WebParts */
.wp h3
{
font-size: 70%;
font-weight: bold;
margin: 0;
padding: 0;
}
.wp .list caption
{
font-size: 70%;
}
.wp .list .image, .sr .list .image
{
vertical-align: top;
width: 16px;
}
.wp .list .image
{
padding: 0 5px 0 0;
}
.sr .list .bullet
{
color: #07679a;
font-size: 75%;
vertical-align: top;
width: 0.75em;
}
.sr .list .text, #mainColumn .wp td td td td
{
vertical-align: top;
}
.sr .list .text
{
*padding-left:1px;
}
.sr .list .linkText /* This style was overwriting the above style and lifecycle products page was rendered with a large font. Fixed for Bug: 40582*/ /*#mainColumn .wp td td td td*/
{
font-size: 80%;
vertical-align: top;
}
.sr .list .text img
{
margin: 0 5px;
vertical-align: middle;
}
.sr .list .linkText img
{
margin: 0px 4px 0px 0px;
vertical-align: middle;
}
.sr .list .linkText img.leftimg
{
margin: 0px 5px 0px 0px;
vertical-align: middle;
}
.wp .list .spacer
{
padding: 0;
width: 8px;
}
/* Rss feed help */
div.wp.rss h2
{
font-size: 120%;
font-weight: bold;
margin: 5px 10px;
}
/* Simple Link Container */
#mainColumn .wp.slc
{
padding: 5px 10px !important;
}
#mainColumn .psTable
{
width: 100%;
}
.wp.slc.alphaSubList img
{
margin-right: 3px;
}
.wp.slc.alphaSubList h1
{
font-size: 120%;
border-bottom: 2px solid #ccc;
}
.wp.slc ul
{
margin: 0;
padding: 0;
}
.wp.slc ul li
{
color: #999;
font-size: 70%;
margin: 2px 18px;
padding: 0;
}
.wp.slc ul li.i
{
padding: 0;
margin: 2px 4px;
list-style-type: none;
}
.bkt
{
font-size: 70%;
margin: 2px 18px;
padding: 0;
}
/* Thin Column generics */
#thinColumn
{
width: 180px;
overflow: hidden;
font-size: 13px;
}
#thinColumn
{
font-weight:400;
}
#thinColumn a
{
color:#0072c6;
font-size: 13px;
}
#thinColumn div, #thinColumn ul
{
text-overflow:ellipsis;
white-space: normal;
}
#thinColumn .wp, #thinColumn .wp .wp, #thinColumn .wp div, #thinColumn .wp div .wp div, #thinColumn .lct, #thinColumn .wp table, #thinColumn .textColumn
{
border: 0px;
margin: 0px;
padding: 0px;
width: auto;
}
#thinColumn .wp .LCT .textColumn
{
width: 179px;
}
#thinColumn .wp H3
{
z-index: 0;
width: 100%;
}
#thinColumn H3,#thinColumn .wp H3
{
font-size: 16px;
font-weight: normal;
margin: 0px;
}
#thinColumn .wp H3 .linkConTop
{
display: block;
height: 7px;
width: 100%;
margin-top: -10px;
z-index: 1;
}
#thinColumn .wp H3 .linkCon
{
display: block;
z-index: 2;
position: relative;
background: none;
padding: 3px 0px;
}
#thinColumn .textColumn .columns2 ul
{
width: auto;
}
#thinColumn .textColumn table p
{
margin-top:5px;
margin-bottom:0px;
}
#thinColumn .textColumn .columns2 ul li
{
vertical-align: top;
}
#thinColumn ul
{
padding-left: 24px;
padding-right: 10px;
margin: 0px;
font-size: 13px;
}
#thinColumn li
{
overflow: visible;
}
li.noBullet
{
list-style-type: none;
margin: 0px;
margin-left: -20px;
}
#thinColumn span.noBullet
{
margin-left:-17px;
display:list-item;
list-style:none;
}
#thinColumn span.hasBullet
{
margin-left:3px;
display:list-item;
list-style:none;
}
#thinColumn .more, #thinColumn .back
{
font-size: 80%;
padding: 5px 0px;
}
.blankBullet
{
list-style-type: none;
}
.blankBullet span a img
{
margin-left: -20px;
}
a.imageBullet
{
padding: 2px 5px 2px 0 !important;
vertical-align: top;
margin-left: -20px;
}
#thinColumn div.center, #thinColumn div a img
{
text-align: center;
margin: 0px auto;
}
#thinColumn .wp .list caption, #thinColumn .wp .list .more, #thinColumn .wp .list .text, #thinColumn .wp .textColumn p
{
font-size: 60%;
}
#thinColumn span
{
text-decoration: none;
}
#thinColumn .getHelp .text h3
{
margin-top:3px;
color:Black;
font-size: 16px;
}
/* LinkContainer Long Word Truncate*/
#thinColumn .wp .LCT
{
table-layout: fixed;
width:100%;
}
#thinColumn .wp .LCT table
{
table-layout: fixed;
width:100%;
}
#mainColumn .wp .LCT .textColumn table
{
table-layout: fixed;
width: 100%;
}
#mainColumn .wp .LCT .textColumn table span
{
display:block;
}
#thinColumn .wp .LCT .textColumn ul,
#thinColumn .wp .LCT .textColumn h3 span,
#thinColumn .wp .LCT .textColumn p,
#mainColumn .wp .LCT .textColumn table h3 span,
#mainColumn .wp .LCT .textColumn table p,
#mainColumn .wp .LCT .textColumn table ul
{
word-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
}
#mainColumn .wp .LCT .textColumn table ul
{
margin-left:0px;
padding-left:10px;
}
#mainColumn .wp .LCT .textColumn table ul span
{
padding-left:30px;
}
#mainColumn .wp .LCT .textColumn table ul li
{
margin-left:30px;
padding-left:0px;
}
#mainColumn .wp .LCT .textColumn table ul span.noBullet
{
padding-left:5px;
}
#mainColumn .wp .LCT .textColumn table ul li.noBullet
{
margin-left:5px;
padding-left:0px;
}
#mainColumn .wp .LCT .textColumn table ul li span
{
padding-left:0px;
}
#thinColumn .wp .LCT .textColumn div, #mainColumn .wp .LCT .textColumn div
{
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
/* Thin Column Search */
.wp.searchThin
{
background: url('/library/images/support/cn/Searchbar.gif') repeat-x;
height: 52px;
}
.wp.searchThin h3
{
font-size: 75%;
font-weight: bold;
}
.wp.searchThin b
{
font-size: 65%;
font-weight: bold;
}
.wp.searchThin div.text
{
width: 100%;
}
.wp.searchThin input.text
{
font-size: 65%;
width: 100%;
}
.wp.searchThin div.select
{
margin-top: 5px;
width: 100%;
}
.wp.searchThin select
{
font-size: 65%;
width: 100%;
}
.wp.searchThin a
{
font-size: 65%;
}
.wp.searchThin div.cb
{
font-size: 75%;
}
/* Get Help */
#thinColumn div.wp.getHelp
{
padding: 5px 0px;
}
.wp.getHelp td.image
{
padding: 0px 5px 0px 0px;
vertical-align: top;
}
.wp.getHelp td.text
{
text-align: left;
}
div.wp.getHelp h3
{
font-size: 20px;
color: #333333;
font-weight: normal;
}
.wp.getHelp .text a
{
font-size: 13px;
color: #0072c6;
}
.wp.cw td
{
font-size: 70%;
}
/* SubTitle WebPart */
div.wp.subTitle h1
{
font-size: 30px;
font-weight: lighter;
margin: 30px 0px 30px 0px;
color:#333333;
}
.matsTitle h1
{
font-size: 120%;
font-weight: bold;
margin: 5px 10px;
}
#topRow ~ #mainRow div.wp.subTitle h1
{
margin: 0px 0px 30px 0px;
}
div.wp.subTitle
{
margin:0px!important;
padding:0px!important;
}
/* Article translation */
.wp.articleTrans table td
{
padding: 5px 0px;
}
.wp.articleTrans select
{
font-size: 65%;
width: 100%;
}
.wp.articleTrans .spacer
{
width: 0.5em;
}
.wp.articleTrans div, .wp.articleTrans div table, .wp.articleTrans div table td
{
width: 100%;
}
/* Main Column for Webparts */
#mainColumn .wp div, #mainColumn .wp div .wp div
{
border: none;
margin: 0;
padding: 0;
}
#mainColumn .wp, #mainColumn .wp .wp
{
border: none;
margin: 5px 0;
padding: 5px 0;
}
#mainColumn .wp .textColumn h3, #mainColumn div.wp.tcon .textColumn h3, #mainColumn div.wp.hcon .textColumn h3
{
font-size: 80%;
font-weight: bold;
margin: 0;
padding: 1px 10px;
}
#mainColumn .wp .textColumn p
{
margin: 0;
padding: 2px 10px;
}
#mainColumn .wp .textColumn .list
{
padding: 0px 5px;
}
#mainColumn .wp .list .text p
{
font-size: 100%;
}
#mainColumn .wp .imageColumn
{
padding: 0 2px 0 12px;
vertical-align: top;
}
.leftNav #mainColumn .wp .imageColumn
{
padding: 0;
}
#mainColumn .wp .textColumn
{
padding: 0;
width: 100%;
}
/* Product Selection */
.psContainers
{
vertical-align: top;
}
.subTitle ~ .psTable
{
margin-top:-40px;
}
#mainColumn .psContainers .LCT h3 span
{
font-size:16px;
color:#333333;
font-weight:normal;
}
#mainColumn .psContainers .LCT .imageColumn
{
padding:0px 10px 0px 0px;
}
#mainColumn .psContainers .LCT h3
{
padding-left:0px;
padding-top:2px;
}
#mainColumn .psContainers .LCT ul, #mainColumn .psContainers .LCT .more
{
padding-left:0px!important;
font-size:13px;
}
#mainColumn .psContainers .LCT ul
{
margin-top:0px;
}
#mainColumn .psContainers .LCT a
{
color:#0072c6;
}
#mainColumn .psContainers .LCT .more
{
padding-bottom:0px!important;
}
#mainColumn .psContainers .wp
{
margin:30px 0px 0px 0px;
padding:0px;
}
#mainColumn .psContainers .LCT ul li
{
margin-left:0px!important;
}
.psContainers div, .psContainers div div
{
vertical-align: top;
}
/* Specific Parts */
#mainColumn div.wp.HCon.heroGraphic
{
background-color: #FFFFFF;
margin: 0;
padding: 0;
}
#mainColumn .wp.heroGraphic .graphic
{
width: 100%;
}
#mainColumn div.wp.heroGraphic td
{
color: #64A2CB;
font-size: 100%;
font-weight: bold;
width: 100%;
}
#mainColumn .wp.m1 .textColumn h1
{
margin: 0;
font-size: 130%;
}
#mainColumn .wp.m3 .textColumn h1
{
font-size: 105%;
}
#mainColumn .wp.m2 .list caption
{
background-color: #369;
color: #fff;
font-weight: bold;
}
#mainColumn .wp.m2 .list .headerRow
{
background-color: #369;
}
#mainColumn .wp.m2 .list .headerRow td
{
color: #fff;
font-weight: bold;
text-align: center;
}
#mainColumn .wp.m2 .list .headerRow td a
{
color: #fff;
}
#mainColumn .wp.m2 .list .headerRow td a:hover
{
color: #f00;
}
#mainColumn .wp.m2 .list .evenRow
{
background-color: #ededed;
}
#mainColumn .wp.region
{
padding: 0 10px;
}
#mainColumn .wp.region h1
{
font-size: 110%;
}
#mainColumn .wp.regionSwitcher select
{
font-size: 75%;
}
#mainColumn .wp.regionSwitcher table.outer
{
background-color: #D7E9FC;
border: 1px solid #0064a8;
margin-left: 15px;
}
#mainColumn .wp.alphaSubList table
{
width: 100%;
}
#mainColumn .wp.alphaSubList .textColumn h1
{
font-size: 120%;
border-bottom: 2px solid #ccc;
}
#mainColumn .wp.alphaSubList img.top
{
margin: 10px 5px 0 0;
}
/* HTML Text Container generics */
.leftNav #mainRow #mainColumn .wp.HCon, .leftNav #mainRow #mainColumn .wp.TCon, #mainRow #mainColumn .wp.HCon.hc1
{
margin: 0;
}
#mainColumn .wp.HCon
{
margin-left: 10px;
margin-right: 10px;
}
.wp.HCon li
{
font-size: 100%;
}
.wp.TCon li
{
font-size: 70%;
}
.wp.TCon li li
{
font-size: 100%;
}
#mainColumn .wp.HCon, #mainColumn .wp.TCon
{
font-size: 70%;
}
#thinColumn .wp.HCon, #thinColumn .wp.TCon
{
font-size: 65%;
}
#mainColumn div.wp.HCon h3, #mainColumn div.wp.TCon h3, #thinColumn div.wp.HCon h3, #thinColumn div.wp.TCon h3
{
font-size: 120%;
}
#thinColumn div.wp.TCon td.textColumn h3
{
font-size: 90%;
}
/* Web Content */
.webContentContainer
{
margin: 10px;
}
.webContentContainer font
{
font-size: 70%;
}
.webExceptionBlock .webContentContainer
{
margin: 0;
padding: 0;
position: relative;
}
.webExceptionBlock .webContentContainer .faqHeaderIcon
{
margin: 0;
padding: 0;
position: relative;
top: -17px;
}
.webContentContainer .GenericError
{
margin-left: 1em;
position: relative;
top: 48px;
}
.webContentContainer h1
{
font-size: 200%;
}
.webContentContainer h2
{
font-size: 170%;
}
.webContentContainer h4
{
font-size: 130%;
}
.webContentContainer .wp .fms
{
display: none; /*Hide survey because this is webcontent, not easy to support survey here*/
}
/* Tree Webpart */
#mainColumn .wp.mainTree
{
margin: 0;
padding: 0;
}
#mainColumn .wp.mainTree #treeHeader
{
background-color: #69c;
color: #fff;
font-size: 75%;
font-weight: bold;
padding: 3px 3px 5px;
width: 100%;
}
#mainColumn .wp.mainTree #fullTree
{
background-color: #f1f1f1;
font-size: 70%;
height: 500px;
width: 215px;
overflow: auto;
}
#mainColumn .wp.mainTree #fullTree div.treeLevel
{
display: none;
padding: 0 10px;
}
#mainColumn .wp.mainTree #fullTree div
{
border: 1px solid #f1f1f1;
padding: 1px 3px;
white-space: nowrap;
}
#mainColumn .wp.mainTree #fullTree img
{
cursor: hand;
}
#mainColumn .wp.mainTree #fullTree a
{
color: #000;
text-decoration: none;
}
#mainColumn .wp.mainTree #fullTree a
{
padding: 0 3px;
}
#mainColumn .wp.mainTree #fullTree div a.nodeFocused, #mainColumn .wp.mainTree #fullTree div a.node:hover, #mainColumn .wp.mainTree #fullTree div a.nodeSelected:hover, #mainColumn .wp.mainTree #fullTree div a.node:active
{
background-color: #ccc;
border: 1px solid #999;
padding: 0 2px;
}
#mainColumn .wp.mainTree #fullTree div a.nodeSelected
{
background-color: #fff;
border: 1px solid #999;
padding: 0 2px;
}
/* Last Reviewed Webpart */
.wp.lastReview, .webContentLastReviewed
{
font-size: 65%;
white-space: nowrap;
text-align: right;
white-space: nowrap;
}
/* Search 4.1 / LifeCycle / DllHelp */
#mainColumn .wp div.search
{
padding: 0px 20px;
}
* html #frmaSrch .mainTable
{
width: auto;
}
.wp
{
padding: 10px;
}
.wp .search h1, .lc h1
{
color: #0071bc;
font-size: 130%;
font-weight: normal;
margin: 0 5px 8px;
padding: 0;
}
.wp .search .mainTable
{
border: 1px solid #0064A8;
}
.wp .search .wideColumn
{
background-color: #F1F6FF;
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#E4F1FA', endColorStr='#B2CFFF', gradientType='1')
}
.wp .dllHelpSearch .mainTable
{
border: 1px solid #69c;
width: 100%;
}
.lc .mainTable
{
border: 1px solid #0064A8;
width: 100%;
table-layout: fixed;
}
.wp .search .submitsearch .lc .submitsearch
{
font-size: 80%;
}
.wp .dllHelpSearch .wideColumn
{
background-color: #e5eaed;
}
.lc .wideColumn
{
background-color: #F1F6FF;
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#E4F1FA', endColorStr='#B2CFFF', gradientType='1');
padding-right: 20px;
}
.lc .wideColumn #advancedOptions
{
margin: 5px 0px 5px 10px;
}
.lc .wideColumn #basicOptions
{
margin: 5px 0px 5px 10px;
}
.lc .wideColumn .basicOptions .innerTable td.boldColumn
{
width: 30%;
white-space: normal;
}
.wp .search .wideColumn .innerTable, .wp .dllHelpSearch .wideColumn .innerTable, .lc .wideColumn .innerTable
{
margin: 8px 15px;
width: 100%;
_width: auto;
}
.wp .search .wideColumn .innerTable td.text, .wp .search .wideColumn .innerTable td.boldColumn, .wp .dllHelpSearch .wideColumn .innerTable td.boldColumn, .lc .wideColumn .innerTable td.text, .lc .wideColumn .innerTable td.boldColumn, .lc .wideColumn .innerTable td.textSpecial
{
font-size: 70%;
white-space: nowrap;
}
.wp .search .wideColumn .innerTable td.textSpecial, .wp .search .wideColumn .innerTable td.textProduct, .wp .search .wideColumn .innerTable td.textProductSpecial
{
font-size: 70%;
}
.wp .search .wideColumn .innerTable td.textProduct
{
background-color: #f0f8fb;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
.wp .search .wideColumn .innerTable td.textProductSpecial
{
white-space: nowrap;
background-color: #f0f8fb;
}
.wp .search .wideColumn .innerTable td.textSpecial, .wp .search .wideColumn .innerTable td.textProduct, .wp .search .wideColumn .innerTable td.textProductSpecial, .lc .wideColumn .innerTable td.textSpecial
{
padding: 5px 4px 7px;
}
.wp .search .wideColumn .innerTable td.text, .wp .dllHelpSearch .wideColumn .innerTable td.text, .lc .wideColumn .innerTable td.text
{
padding: 5px 10px;
width: 100%;
}
.wp .search .wideColumn .innerTable td.boldColumn, .wp .dllHelpSearch .wideColumn .innerTable td.boldColumn, .lc .wideColumn .innerTable td.boldColumn
{
font-weight: bold;
}
.lc .wideColumn .innerTable td.boldColumn
{
vertical-align: top;
padding: 5px 0 5px 5px;
}
.lc .wideColumn .advancedOptions .innerTable td.boldColumn
{
width: 30%;
white-space: normal;
}
.lc .wideColumn #ToggleButton
{
font-size: 80%;
vertical-align: middle;
}
.lc .wideColumn #ToggleButton img
{
margin: 0 3px 1px 0;
vertical-align: bottom;
}
.wp .search .wideColumn .innerTable td.boldSpecialColumn, .wp .search .wideColumn .innerTable td.boldColumnTip
{
font-size: 70%;
font-weight: bold;
padding: 5px 0;
vertical-align: top;
white-space: nowrap;
}
.wp .search .wideColumn .innerTable td.inputs
{
margin: 0;
}
.wp .search .wideColumn .innerTable .inputs td.text
{
padding: 1px 5px;
vertical-align: middle;
}
.wp .search .wideColumn .innerTable h1, .wp .search .wideColumn .innerTable .text h1, .wp .dllHelpSearch .wideColumn .innerTable h1
{
color: #000;
font-size: 85%;
font-weight: bold;
margin: 0px 0px 7px;
}
.wp .search .thinerColumn, .wp .dllHelpSearch .thinerColumn
{
background-color: #ced8de;
height: 100%;
padding: 35px 4px 15px;
vertical-align: top;
width: 9em;
}
.wp .search .queryTable
{
table-layout: fixed;
width: 100%;
}
.wp .searchBasic .thinerColumn
{
padding: 15px 4px;
}
.wp .search .thinerColumn .mainDiv, .wp .search .thinerColumn .mainDiv .innerTable, .wp .dllHelpSearch .thinerColumn .mainDiv, .wp .dllHelpSearch .thinerColumn .mainDiv .innerTable
{
height: 100%;
text-align: center;
}
.wp .search .thinerColumn .innerTable td.goButton, .wp .dllHelpSearch .thinerColumn .innerTable td.goButton
{
text-align: center;
vertical-align: bottom;
}
.wp .dllHelpSearch .select select, .wp .dllHelpSearch .text input.text
{
font-size: 65%;
width: 75%;
}
.lc .select select
{
width: 100%;
}
.lc .boldColumn input
{
display: none;
}
.wp .search .wideColumn .innerTable #noschead
{
width: auto;
}
.wp .search .wideColumn .innerTable #searchHelpLink
{
text-align: right;
padding-right: 0px;
font-size: 70%;
}
/* LifeCycle results */
.lcr
{
width: 100%;
}
.lcr div.p2resultsdiv
{
padding: 10px;
}
.lcr div.tableContainer
{
width: 100%;
margin-bottom: 10px;
}
.lcr table.results
{
width: 100%;
empty-cells: show;
border-collapse: collapse;
}
.lcr table th a
{
overflow: hidden;
}
.lcr table th, .lcr table td
{
font-size: 65%;
padding: 3px 3px;
}
.lcr table.results thead th
{
background-color: #ecf0ff;
font-weight: bold;
color: blue;
}
.lcr table.results td:last-child
{
padding-right: 20px;
}
.lcr table th a:hover
{
color: #f93;
}
.lcr table thead td
{
text-decoration: none;
}
.lcr table td.bolded
{
font-weight: bold;
padding: 3px 8px;
}
.lcr table tbody td div
{
display: none;
}
.lcr .pnColumn
{
width: 20%;
}
.lcr .gaColumn, .lcr .msColumn, .lcr .esColumn, .lcr .spColumn
{
width: 10%;
}
.lcr #ExportToCSV
{
text-align: right;
font-size: 70%;
margin: 0 10px 15px 10px;
}
.lcr table.p2results
{
border: 2px solid #999999;
border-left: none;
border-right: none;
border-collapse: collapse;
}
.lcr table.p2results tr.dark
{
background-color: #ededed;
}
.lcr table.p2results tr td
{
border: 1px solid #ededed;
}
.lcr table.p2results th, .lcr table.p2results thead td
{
color: #ededed;
background-color: #69c;
border: 1px solid #69c;
border-bottom: 1px solid #ededed;
}
.lcr table.p2results th, .lcr table.p2results th a, .lcr table.p2results thead tr td
{
color: #ededed;
font-weight: bold;
}
/* lifecycle no results */
#lifecyclenoresults
{
font-size: 70%;
padding: 5px 10px;
font-weight: bold;
}
/* Search Results */
.sr
{
margin: 0px 0px 0px 15px;
}
.sr font.intro
{
font-size: 75%;
}
.sr p
{
font-size: 75%;
}
.sr h1
{
font-size: 100%;
margin: 10px 0px;
}
.sr div.mainDiv, .sr table.headerTable
{
width: 100%;
}
.sr table.main
{
vertical-align: top;
margin: 0px;
padding: 0px;
}
.sr table.main td.leftNav
{
vertical-align: top;
margin: 0px;
padding: 0px;
}
.sr table.main td.results
{
vertical-align: top;
padding: 0px;
}
.sr table.resultsMain
{
width: 100%;
}
.listContainer
{
padding-left: 4px;
padding-right: 4px;
}
.listContainer .text
{
padding-bottom: 20px;
}
.sr table.bestBetsMain
{
width: 100%;
border-left: 1px solid #FFA468;
border-top: 1px solid #FFA468;
}
.sr table.productFilter
{
width: 180px;
border-bottom: 1px solid #69c;
border-top: 1px solid #69c;
border-left: 1px solid #69c;
vertical-align: top;
margin: 0px;
padding: 0px;
}
.sr img.prevSrch
{
margin-right: 3px;
}
.sr img.nextSrch
{
margin-left: 3px;
}
.sr .headerImg
{
background-color: #e5eaed;
border-bottom: 1px solid #69c;
width: 16px;
vertical-align: middle;
}
.sr .headerText
{
background-color: #e5eaed;
border-bottom: 1px solid #69c;
font-size: 70%;
font-weight: bold;
white-space: nowrap;
vertical-align: middle;
}
.sr .resultsHeaderText
{
font-size: 70%;
font-weight: bold;
color: #000000;
white-space: nowrap;
vertical-align: middle;
padding-left: 1px;
height: 20px;
}
.sr .resultsFooterText
{
font-size: 70%;
font-weight: bold;
color: #000000;
vertical-align: middle;
padding-left: 10px;
}
.sr .list .text
{
font-size: 70%;
}
#gsfx_brnd_copyright
{
font-size: 80% !important;
}
.sr .showmeHeaderText
{
background-color: #99CCFF;
border-bottom: 1px solid #9b0;
font-size: 70%;
font-weight: bold;
white-space: nowrap;
vertical-align: top;
padding-left: 10px;
}
.sr .bestBetHeaderText
{
background-color: #FFD995;
filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFD995', endColorStr='#F1F6FF', gradientType='1');
border-bottom: 1px solid #FDEBA2;
font-size: 70%;
font-weight: bold;
color: #330000;
white-space: nowrap;
vertical-align: middle;
padding-left: 10px;
height: 20px;
}
.headerContainer
{
padding-bottom: 6px;
}
.sr .headerImg img
{
margin: 0 5px;
}
.sr .headerLine
{
border-bottom: 1px solid #69c;
}
.sr .resultsText, .sr .bbText, .sr .spellText
{
font-size: 70%;
padding: 10px 0px 10px 0px;
}
.sr .resultsText div, .sr .spellText div
{
padding: 0 0 10px;
font-style: italic;
font-weight: bold;
}
.sr td.heading
{
color: #003366;
font-size: 85%;
font-weight: bold;
height: 20px;
}
.sr .dummyLink
{
color: #4EA722;
}
.sr a.nw
{
white-space: nowrap;
}
/* Solution Center */
.sc
{
margin: 2px 20px 0 10px;
}
.sc .header
{
color: #666;
font-size: 105%;
font-weight: bold;
padding: 0px 10px;
}
.sc .columns
{
border-top: 1px solid #999;
width:100%;
}
.sc .gradient
{
height: 100%;
width: 11px; /* leave as px */
}
.sc .columns td.SCThinColumn, .sc .columns td.SCMainColumn
{
vertical-align: top;
}
.sc .columns td.SCThinColumn
{
width: 25%;
}
.sc .columns td.SCThinColumn #SolutionCenter
{
width:271px;
}
.sc .columns td.SCThinColumn #SolutionCenter .LCT .textColumn h3
{
font-size:30px;
color:#464646;
font-weight:normal;
}
.sc .columns td.SCMainColumn
{
width: 75%;
padding-left:30px;
}
.sc .columns td.SCMainColumn #AssetContainer
{
margin-top:0px;
padding-top:0px;
margin-bottom:30px;
padding-bottom:0px;
}
.sc h1
{
margin-bottom: 3px;
margin-top: 0;
font-size: 80%;
font-weight: bold;
}
.sc .list td
{
padding: 3px 0;
}
.sc .list .image
{
vertical-align: top;
width: 20px; /* leave as px may remove later */
}
.sc .list .bullet
{
vertical-align: top;
font-size: 75%;
width: 1em;
}
.sc .list .text
{
font-size: 70%;
}
#tabPHDMenu
{
font-weight:normal;
}
.SCThinColumn #tabPHDMenu #tabPHDList
{
vertical-align:middle;
height:50px;
width:271px;
background-color:#f8f8f8;
margin-bottom:5px;
}
.SCThinColumn #tabPHDMenu #tabPHDLast
{
vertical-align:middle;
height:50px;
width:271px;
background-color:#858585;
margin-bottom:5px;
color:#ffffff;
font-size:16px;
}
.SCThinColumn #tabPHDMenu a
{
cursor: pointer;
color:#000000;
font-size:16px;
margin-left:0px;
}
/* DLL Help Info and Results */
.dllHelpResults, .dllHelpInfo
{
padding: 10px;
width: 100%;
}
.dllHelpResults img.prevSrch
{
margin-right: 3px;
}
.dllHelpResults img.nextSrch
{
margin-left: 3px;
}
.dllHelpInfo img.prevSrch
{
margin-right: 3px;
}
.dllHelpInfo img.nextSrch
{
margin-left: 3px;
}
.dllHelpInfo p
{
font-size: 70%;
font-weight: bold;
margin: 15px 0 5px;
}
.dllHelpResults .tableContainer, .dllHelpResults table.mainTable, .dllHelpInfo .tableContainer, .dllHelpInfo table.mainTable
{
width: 100%;
}
.dllHelpResults table.mainTable, .dllHelpInfo table.mainTable, .dllHelpInfo table.fntable, .dllHelpInfo table.fileTable
{
background: #ededed;
border: 2px solid #999;
border-left: none;
border-right: none;
border-collapse: collapse;
}
.dllHelpResults table.mainTable, .dllHelpInfo table.mainTable
{
width: 100%;
}
.dllHelpResults table th, .dllHelpResults table td, .dllHelpInfo table th, .dllHelpInfo table td
{
font-size: 65%;
padding: 3px 6px;
vertical-align: top;
}
.dllHelpResults table th, .dllHelpResults table thead td, .dllHelpResults table tfoot td, .dllHelpResults table tfoot td a, .dllHelpInfo table th, .dllHelpInfo table thead td, .dllHelpInfo table tfoot td, .dllHelpInfo table tfoot td a, .dllHelpInfo table.fileTable td.heading
{
color: #fff;
font-weight: bold;
vertical-align: middle;
white-space: nowrap;
}
.dllHelpResults table tfoot td a:hover, .dllHelpInfo table tfoot td a:hover
{
color: #f93;
}
.dllHelpResults table tr.light, .dllHelpInfo table tr.light
{
background-color: #fff;
}
.dllHelpResults table thead tr, .dllHelpResults table tfoot tr, .dllHelpInfo table thead tr, .dllHelpInfo table tfoot tr, .dllHelpInfo table.fileTable td.heading
{
background-color: #69c;
}
.dllHelpResults table tr.light td, .dllHelpInfo table tr.light td
{
border: 1px solid #ededed;
}
/* Personalization */
.pz table.mainTable
{
margin: 10px;
width: 70%;
}
.pz table.mainTable tr td.textColumn
{
padding: 0 10px;
}
.pz table.mainTable tr td.imageColumn
{
vertical-align: top;
padding: 0 2px;
}
.pz table tr td input.text
{
font-size: 70%;
width: 100%;
}
.pz table.mainTable tr td.textColumn p
{
font-size: 70%;
margin: 5px 0;
}
.pz table.mainTable tr td.textColumn a.spam
{
font-size: 70%;
margin: 10px 0;
}
.pz table.mainTable tr td.textColumn span.alias
{
font-size: 70%;
}
.pz table.mainTable tr td.textColumn b
{
font-size: 70%;
margin: 10px 0;
}
.pz table.mainTable tr td.textColumn h1
{
font-size: 100%;
font-weight: bold;
margin: 0;
}
.pz table.mainTable tr td.textColumn h2
{
font-size: 85%;
font-weight: bold;
margin: 0;
}
.pz div table.radios tr td, .pz .wp .savedNewsgroup table tr td a
{
font-size: 65%;
}
.pz .wp .savedNewsgroup table.mainTable
{
border: none;
}
.pz .wp .savedNewsgroup h1
{
font-size: 100%;
padding: 0 0 10px;
}
.pz .wp .savedNewsgroup table
{
border: solid 1px #808080;
width: 70%;
}
.pz .wp .savedNewsgroup table tr .check
{
width: 10px;
}
.pz .wp .savedNewsgroup table tr th
{
color: #fff;
font-size: 65%;
background-color: #369;
padding: 3px 6px;
}
.pz .wp .savedNewsgroup table tr td
{
padding: 3px 6px;
}
.pz .wp .savedNewsgroup table tr.light
{
background-color: #ededed;
}
/* Newsgroup */
.pz .news .search, .pz .news .content
{
border: solid 1px #ededed;
background-color: #99f;
}
.pz .news .search td.text
{
font-size: 65%;
font-weight: bold;
padding: 3px;
}
.pz .news .search td.text input.text
{
font-weight: normal;
width: 20em;
}
.pz .news .search .text button
{
width: 50px;
}
.pz .news .content table.topNavigation, .pz .news .content table.mainContainer, .pz .news .content td.textAlign
{
width: 100%;
}
.pz .news .content td.text, .pz .news .content .navigation td
{
font-size: 65%;
padding: 1px 3px;
}
.pz .news .content table.topNavigation td.text a
{
color: #000;
}
.pz .news .content tr.test
{
background-color: #fff;
}
.pz .news .content .mainContainer .text
{
background-color: #fff;
white-space: nowrap;
}
.pz .news .content .bottomNavigation td, .pz .news .content .topNavigation td
{
white-space: nowrap;
}
input.page
{
width: 35px; /* change to em */
}
/* Page Tools */
.floatWindow
{
filter:progid:DXImageTransform.Microsoft.Fade(Overlap=1.00);
text-align: center;
visibility: hidden;
position: absolute;
}
.floatWindow .message
{
font-size: 70%;
padding: 0px 20px;
color: #111;
text-align: center;
white-space: nowrap;
}
.floatWindow .status
{
border: 1px solid #dedede;
background: #fff;
margin: 0;
text-align: center;
width: 105px;
}
.floatWindow .error
{
color: #f00;
font-weight: bold;
}
.floatWindow .status td
{
font-size: 25%;
background: #fff;
}
/* Survey */
/* Document-level selectors */
.wp div.fms
{
background: #ededed;
border: 2px solid #999;
border-left: none;
border-right: none;
margin: 0 0 5px;
padding: 5px 10px;
}
/* Selector for rightmost image in the graphical survey header */
.wp .fms .SURVEYHEADERIMAGE
{
margin-right: 0px;
}
.wp .fms .SURVEYTITLETEXT
{
font-size: 85%;
font-weight: bold;
padding: 10px;
}
.wp .fms .SURVEYINTROTEXT
{
font-size: 70%;
font-weight: bold;
color: #a52a2a;
padding: 10px;
}
.wp .fms .SURVEYTHANKYOUTEXT
{
font-size: 65%;
font-weight: bold;
color: #a52a2a;
padding: 10px;
}
/* General question text for all question types */
.wp .fms .ANSWERTEXT
{
font-size: 65%;
line-height: 2em;
}
/* Selectors specific to GROUPED_HORIZONTAL_RADIO questions */
/* Question text for GROUPED_HORIZONTAL_RADIO questions */
.wp .fms .GHR_QUESTIONTEXT
{
font-size: 65%;
margin-left: 5px;
}
/* Numeric header and legend text for GROUPED_HORIZONTAL_RADIO questions */
.wp .fms tr.GHR_LEGENDTEXT td
{
font-size: 65%;
font-weight: bold;
text-align: center;
}
.wp .fms tr td.GHR_LEGENDTEXT
{
font-size: 65%;
line-height: 1.2em;
font-weight: bold;
text-align: center;
}
.wp .fms .RATINGNUMBER
{
font-size: 65%;
}
/* TR-specific selector for even rows in the GROUPED_HORIZONTAL_RADIO complex */
.wp .fms .GHR_EVENROW
{
background-color: #f9f9f9;
}
/* TR-specific selector for odd rows in the GROUPED_HORIZONTAL_RADIO complex */
.wp .fms .GHR_ODDROW
{
}
.wp .fms .GHR_ODDROW input[type|="radio"]
{
margin-right: 0px;
}
/* Navigation: contains progress bar and navigational buttons */
/* Selector for the navigational complex */
.wp .fms .NAVIGATION
{
}
/*it and fr button is longest*/
.wp .fms .NAVBUTTON
{
font-size: 65%;
}
/* Progress bar complex */
.wp .fms .PROGRESSBAR
{
border-right: 1px solid #cde;
border-bottom: 1px solid #cde;
border-left: 1px solid #89a;
border-top: 1px solid #89a;
width: 120px;
height: 20px;
}
.wp .fms .PROGRESSBLOCK
{
background-color: #f00;
height: 20px;
}
.wp .fms .PROGRESSTEXT
{
font-size: 65%;
font-weight: bold;
}
/* Question-level selectors */
/* Selector for the question-level container element. */
.wp .fms .QUESTIONCONTAINER
{
margin-bottom: 5px;
margin-left: 1px;
margin-right: 3px;
line-height: 1.5em;
width: auto;
padding: 3px 0px 0px 10px !important;
}
/* Selector for question text. */
.wp .fms .QUESTIONTEXT
{
font-size: 65%;
font-weight: bold;
padding-bottom: 5px;
}
.wp .fms .QUESTIONTEXT h5
{
font-size: 125%;
margin: 0 0 16px;
}
/* Selector for question instructions. */
.wp .fms .QUESTIONINSTRUCTION
{
font-size: 65%;
padding-bottom: 2px;
}
/* Selector for messages indicating that the question is required. */
.wp .fms .QUESTIONREQUIRED
{
font-size: 75%;
color: red;
font-weight: bold;
}
/* Optional text box selectors */
.wp .fms .OPTIONALTEXTBOX
{
font-size: 65%;
}
.wp .fms .OPTIONALTEXTBOXINSTRUCTION
{
font-size: 65%;
color: #666;
}
/* Stuff ? */
.wp .fms .ANSWERCONTROL
{
font-size: 65%;
font-weight: bold;
text-align: center;
}
.wp .fms .ANSWERBOX
{
font-size: 70%;
margin: 0;
width: 90%;
}
/* Right-to-Left, Left-to-Right */
#contentArea
{
direction: ltr;
text-align: left;
}
bdo
{
direction: rtl;
}
.wp.lastReview td.label, .pz .news .content td.textAlign, .wp .searchRefine .wideColumn .innerTable .boldColumn, .wp .searchRefine .wideColumn .innerTable .boldSpecialColumn, .wp .searchRefine .wideColumn .innerTable .boldColumnTip
{
text-align: right;
}
.pz .wp .savedNewsgroup table tr th, .pz .alignColumn, .lcr table th, .dllHelpSearch table caption, .dllHelpResults table th, .dllHelpInfo table th, .wp .fms .SURVEYINTROTEXT, .wp .fms .SURVEYTHANKYOUTEXT, .wp .fms .ANSWERTEXT, .wp .fms .GHR_QUESTIONTEXT, .wp .fms .QUESTIONREQUIRED, .wp .fms .NAVIGATION td, .wp.m2 .list caption
{
text-align: left;
}
#thinColumn
{
float: right;
}
.wp div.mainTree .tree div.treeLevel
{
margin: 0 0 0 1.25em;
}
.surveyDiv
{
display: block;
position: absolute;
top: 0;
left: 0;
margin: 3px;
background-color: Transparent;
width: 600px;
border: 0;
font: 11px Verdana;
color: #000;
z-index: 200;
}
.eulaContainer
{
font-size: 75%;
margin: 32px 50px 0 50px;
}
.eulaContainer h1
{
font-size: 100%;
font-weight: bold;
}
.eulaContainer .frame
{
border: solid 1px #7F9DB9;
padding: 10px;
overflow: auto;
height: 350px;
}
.eulaContainer span
{
text-align: center;
display: block;
margin-left: auto;
margin-right: auto;
margin-top: 10px;
}
.eulaContainer input
{
padding: 4px;
margin: 10px;
}
.eulaContainer a
{
margin: 5px;
}
.wp .LCT
{
margin-right: 8px;
}
#CUForm input
{
font-size: 80%;
margin-left: 8px;
}
.srchOppose
{
text-align: right;
font-size: 80%;
padding-top: 6px;
}
.livesrchOppose
{
text-align: right;
font-size: 80%;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 1px;
padding-right: 1px;
}
.liveSearchGo
{
font-size: .9em;
}
.lc .searchButton
{
text-align: right;
font-size: 80%;
}
.lc .submitsearch
{
margin: 8px 15px 15px;
}
a#anchor_others
{
white-space: nowrap;
}
#topRow .wp, #topRow td
{
padding: 0;
}
/* start new LinkContainer css */
.LCT .list
{
margin-top: 10px !important;
width: 100%;
}
.LCT .list table
{
width: auto;
}
#thinColumn .LCT .list
{
width: auto;
}
#thinColumn .LCT .textColumn .list
{
width: 100%;
table-layout:fixed;
}
.LCT .list td
{
vertical-align: top;
text-align: left;
border-right: 0;
}
.LCT td
{
vertical-align: top;
}
.LCT .list td.last
{
border-right: 0;
}
.columns2 td
{
width: 49%;
}
.columns3 td
{
width: 32%;
}
.columns4 td
{
width: 24%;
}
.columns5 td
{
width: 19%;
}
.columns6 td
{
width: 15%;
}
.LCT .more, .LCT .back
{
font-size: 70%;
padding: 7px !important;
vertical-align: baseline;
}
.LCT li
{
padding: 3px;
color: #aaa;
}
.LCT li .message
{
font-size: 100%;
}
.LCT li span
{
color: Black;
vertical-align: baseline;
}
#mainColumn .wp .LCT .textColumn ul li p
{
font-size: 100%;
}
#mainColumn .wp .LCT .textColumn p
{
font-size: 70%;
}
.LCT ul
{
padding: 0;
font-size: 70%;
margin-top: 10px;
margin-left: 30px;
margin-bottom: 0;
}
.LCT ul td
{
font-size: 70%;
}
.LCT .list ul
{
margin-left: 25px;
}
.LCT .list ul
{
margin-top: 0 !important;
}
.LCT ul ul
{
font-size: 100% !important;
}
.LCT li li
{
list-style-type: disc;
color: black;
}
.wp.alphaList .LCT td
{
border: 0 !important;
}
.wp.alphaList .LCT td span
{
width: 100%;
}
.wp.alphaList .LCT td a
{
font-size: 110%;
}
.wp.alphaList .LCT td span
{
font-size: 110%;
font-weight: bold;
color: #ccc;
}
#alphaList a
{
vertical-align: bottom;
}
.mainTable thead th
{
font-weight: bold;
}
.mainTable tbody th
{
font-weight: normal;
color: Black;
width: auto;
}
.pageTitle ~ .wp
{
margin:0px!important;
padding:0px!important;
}
.pageTitle ~ .wp .LCT, .SCMainColumn, .breadcrumbs
{
font-weight:normal;
}
#mainColumn .pageTitle ~ .wp .LCT .textColumn h3, #AssetContainer .LCT .textColumn h3
{
font-weight:lighter;
}
.pageTitle ~ .wp .LCT .textColumn h3, #AssetContainer .LCT .textColumn h3
{
font-size:20px!important;
color:#464646;
padding:0px 0px 0px 10px!important;
vertical-align:top;
}
.pageTitle ~ .wp .LCT .textColumn ul span, #AssetContainer .LCT .textColumn ul li
{
color:#464646;
font-size:13px;
}
.pageTitle ~ .wp .LCT .textColumn ul span a,
#AssetContainer .LCT .more a,
#AssetContainer .LCT .textColumn ul li span a,
.pageTitle ~ .wp .LCT .textColumn .more a
{
font-size:13px;
color:#0072C6;
}
.pageTitle ~ .wp .LCT .textColumn ul li
{
padding:0px;
margin-bottom:20px;
margin-left:13px!important;
}
.pageTitle ~ .wp .LCT .textColumn ul
{
margin-top:8px;
}
.pageTitle ~ .wp .LCT .textColumn ul li.noBullet
{
margin-left:0px!important;
}
.pageTitle ~ .wp .LCT .textColumn .more
{
padding:0px 0px 20px 10px!important;
}
#AssetContainer .LCT .imageColumn
{
padding:0px!important;
}
#AssetContainer .LCT .textColumn ul li
{
margin-left:2px!important;
padding-top:0px;
padding-bottom:0px;
margin-bottom:20px;
}
#AssetContainer .LCT .more
{
padding-left:10px!important;
text-align:right;
padding-top:0px!important;
padding-bottom:0px!important;
}
#AssetContainer .LCT .back
{
padding-left:10px!important;
padding-top:0px!important;
padding-bottom:0px!important;
}
#AssetContainer .LCT .back a
{
font-size:13px;
color:#0072C6;
}
/* end new LinkContainer css */
.prodSelectionIndex table td a, .prodSelectionIndex table td span
{
margin-left:8px;
margin-right:8px;
font-weight:bold;
font-size:80%;
}
.prodSelectionIndex table td span
{
color:#aaa;
}
.prodSelectionIndex table
{
padding-top:5px;
margin-top:5px;
}
/* start tabbed homepage css */
.tabContainer
{
font-weight:normal;
}
#tabStyle div.scroller .tabDiv .wp h3
{
font-weight:lighter;
}
#tabStyle div.scroller div.tabDiv h2
{
display:none;
}
.clearBoth
{
clear:both;
}
#tabMenu
{
z-index: 2;
float:left;
width:271px;
border:none;
border-right-width:0px;
}
#tabMenu a
{
padding:0px;
text-decoration: none;
display: block;
font-size:16px;
}
#tabMenu a.off table
{
color:#000000;
background-color:#f8f8f8;
}
#tabMenu a.off table img
{
visibility:hidden;
}
#tabMenu a.on table
{
color:#ffffff;
background-color:#858585;
}
.tabBanner
{
margin:0px;
padding:0px;
}
.tabImage
{
vertical-align:middle;
width:10px;
height:15px;
}
#tabMenu a table p
{
word-wrap: break-word;
overflow:hidden;
text-overflow: ellipsis;
vertical-align:middle;
margin:0px;
padding:0px;
}
#tabMenu a table
{
height:50px;
width:271px;
}
#tabMenu a table td
{
padding:0px;
margin:0px;
vertical-align:middle;
}
#tabStyle div.scroller
{
margin-left:291px;
border-left-width:0px;
border-top-width:0px;
}
#tabStyle div.scroller .tabDiv .wp
{
padding-top:0px;
}
#tabStyle div.scroller .tabDiv .wp
{
font-size:13px;
}
#tabStyle div.scroller .tabDiv .wp h3, #tabStyle div.scroller .textColumn h3
{
color:#000000;
line-height:normal!important;
}
#tabStyle div.scroller .tabDiv .wp h3
{
font-size:20px;
color:#464646;
margin-bottom:10px;
}
#tabStyle div.scroller .tabDiv .wp h3 a
{
font-size:20px!important;
}
#tabStyle div.scroller .tabDiv .wp p, #tabStyle div.scroller .tabDiv .wp a
{
font-size:13px;
}
#tabStyle a
{
color:#0072C6;
}
#tabStyle div.scroller .tabDiv .wp p
{
color:#464646;
margin-bottom:20px;
margin-top:0px;
}
#tabStyle div.scroller .tabDiv .wp * + h3
{
margin-top:30px;
}
#tabStyle div.scroller .tabDiv .wp
{
margin:0px;
padding:0px;
}
#tabStyle div.scroller .tabDiv .wp + .wp
{
margin-top:30px;
}
#tabStyle div.scroller .LCT .textColumn h3
{
font-size:20px;
color:#464646;
padding:0px;
margin:0px;
}
#tabStyle div.scroller .LCT .textColumn table:first-child
{
margin-bottom:10px;
}
#tabStyle div.scroller .LCT .textColumn table:first-child p
{
padding-left:0px;
}
#tabStyle div.scroller .LCT li
{
margin-bottom:0px;
padding:0px;
}
#tabStyle div.scroller .LCT li + li
{
margin-top:20px;
}
#tabStyle div.scroller .LCT ul > span
{
margin-top:0px;
margin-bottom:20px;
}
#tabStyle div.scroller .LCT .list
{
margin-top:0px!important;
padding-left:0px;
}
#tabStyle div.scroller .LCT .textColumn ul
{
padding-left:13px;
}
#tabStyle div.scroller .LCT li span,
#tabStyle div.scroller .LCT ul > span,
#tabStyle div.scroller .LCT .textColumn p
{
font-size:13px;
color:#464646;
}
#tabStyle div.scroller .LCT .textColumn .more
{
padding:10px 7px 0px 7px!important;
}
#tabStyle div.scroller .LCT .textColumn .more a
{
font-size:13px;
}
#tabStyle div.scroller .LCT .textColumn p, #tabStyle div.scroller .LCT .textColumn ul
{
margin-top:0px;
margin-bottom:0px;
}
#tabStyle div.scroller .LCT .textColumn ul li, #tabStyle div.scroller .LCT .textColumn ul > span
{
padding-left:0px;
margin-left:0px;
}
#tabStyle div.scroller .LCT .textColumn ul > span.noBullet, #tabStyle div.scroller .LCT .textColumn ul li.noBullet
{
padding-left:0px;
margin-left:-12px;
}
#tabStyle div.scroller .LCT .textColumn h3 .linkConTop
{
display:none;
}
#tabStyle div.scroller .LCT .textColumn .more a
{
margin-left:5px;
}
#tabStyle div.scroller .tabDiv .wp
{
height:100%;
}
.tabBorder
{
*margin-top:24px;
}
/* end tabbed homepage css */
/*Start PH title*/
.pageTitle
{
display:table;
margin-bottom:30px;
margin-top:22px;
}
.pageTitle div
{
vertical-align:top;
display:table-cell;
}
.pageTitle div
{
+float:left;
}
.pageTitle img
{
margin-right:10px;
display:none;
}
.pageTitle p
{
font-size:20px;
font-weight:lighter;
color:#464646;
margin:0px;
}
.pageTitle h1
{
color:#464646;
margin:0px;
font-size:30px;
line-height:100%;
padding-top:0px;
padding-bottom:10px;
font-weight:lighter;
}
.pageTitle a
{
color:#0072c6;
}
/*End PH title*/
/*.trscopeoptions {padding-bottom:10px; padding-left:12px; }*/
/*.trscopeoptions td table {margin-right:10px; padding-left:6px;}*/
.gssSearchDetails
{
display: none;
width: 100%;
}
.textCell
{
padding-right: 0px;
padding-left: 0px;
padding-bottom: 5px;
white-space: nowrap;
font-size: 70%;
}
.helpImageCell
{
text-align: right;
width: 40px;
}
.whatscopelist
{
width: 100%;
}
#showorhide table td
{
text-align: left;
}
.mainTable .innerTable th
{
text-align: left;
font-size: 70%;
font-weight: bold;
padding-top: 25px;
padding-bottom: 5px;
}
.separator
{
width: 12px;
padding-left: 0px;
padding-right: 0px;
margin-left: 0px;
margin-right: 0px;
}
.searchAdvanced #query
{
font-size: 0.7em;
}
.searchAdvanced #spidbox
{
font-size: 0.7em;
}
.queryTableTd
{
width: 100%;
}
#tblCatalog td
{
padding: 2px 0px 2px 0px;
_padding: 0px 0px 0px 0px;
}
#tblCatalog .text
{
_padding: 3px;
}
/************************/
/* start error tool css */
/************************/
#errorDialog
{
position: relative;
margin: 5px 20px;
padding: 6px 5px 3px 5px;
background: url('/library/images/support/en-us/consumer_Error_bar.gif') repeat-x;
border-left: 1px solid #36638B;
border-right: 1px solid #36638B;
height: 25px;
width: 688px;
z-index: 1;
*display: inline;
*zoom:1;
}
#errorInput
{
font-size: 80%;
width: 678px;
}
#exactHits
{
font-size: 75%;
margin-left: 0px;
margin-right: 20px;
}
#exactHits li
{
margin: 2px 0 2px 0;
}
#exactHits li a span
{
font-size: 80%;
}
#additionalLang
{
font-size: 75%;
margin: 20px 20px 0px 20px;
}
#additionalLang select
{
width: 16em;
vertical-align: middle;
font-size: 100%;
margin-top: 3px;
}
#noResultsDiv
{
font-size: 75%;
margin-left: 20px;
margin-top: 10px;
}
#pidContainer
{
position: relative;
}
#pidContainer:hover
{
background-color: transparent;
}
#pidContainer span
{
position: absolute;
background-color: #fcfbde;
padding: 5px;
border: 1px solid black;
visibility: hidden;
text-decoration: none;
color: Black;
min-width: 200px;
_width: auto;
}
#pidContainer:hover span
{
margin-bottom: -20px;
top: 0px;
visibility: visible;
}
#pidContainer:hover span li
{
margin-left: 20px;
_margin-left: 0px;
}
/**********************/
/* end error tool css */
/**********************/
/************************/
/* start easy assist css */
/************************/
.gss_easy_maindiv
{
font-size: 70%;
width: 100%;
}
.gss_easy_maindiv .gss_easy_para
{
margin: 10px 20px;
}
.gss_easy_maindiv #gss_easy_eulaframediv
{
text-align: center;
width: 100%;
}
.gss_easy_maindiv #gss_easy_eulaframediv2
{
margin: 0px auto;
text-align: center;
width: 80%;
}
.gss_easy_maindiv #gss_easy_eulaaccept
{
margin: 8px;
}
.gss_easy_maindiv .gss_easy_eulabutton
{
padding: 2px 20px;
margin: 0px 20px;
}
.gss_easy_maindiv #gss_easy_eulaboth
{
margin: 0px 0px 10px 0px;
font-weight: bold;
}
.gss_easy_maindiv .gss_easy_divscroll
{
width: 100%;
margin: 0px auto;
border-width: 1px;
border-style: solid;
overflow: auto;
margin-top: 10px;
margin-bottom: 5px;
height: 140px;
text-align: left;
}
#gss_easy_sessiondiv
{
display: none;
}
.gss_easy_maindiv #gss_easy_sessionformdiv
{
width: 600px;
margin-left: 50px;
}
.gss_easy_maindiv #gss_easy_sessiontable
{
font-size: 100%;
}
.gss_easy_maindiv #gss_easy_sessiontable td
{
padding: 10px 10px 0px 10px;
}
.gss_easy_maindiv #gss_easy_sessiontable td.gss_easy_paddednone
{
padding: 0px 10px 0px 10px;
}
.gss_easy_maindiv .gss_easy_sessiontableeg
{
padding-top: 0px;
}
.gss_easy_maindiv #gss_easy_sessionnext
{
text-align: right;
}
.gss_easy_maindiv #gss_easy_sessionnextbtn
{
padding: 2px 20px;
}
#gss_easy_warning table
{
background-color: #FFFEEB;
border: 1px solid #999999;
font-family: verdana, arial, sans-serif;
width: 95% !important;
text-align: center;
display: block;
}
#gss_easy_warning table TD
{
padding: 10px 5px;
font-size: 70%;
line-height: 1.5em;
text-align: left;
vertical-align: top;
}
.wrnMessage
{
width: 100%;
font-size: 100% !important;
}
.wrnMessage span
{
font-size: 105%;
font-weight: bold;
display: block;
margin-bottom: 5px;
line-height: 100%;
}
/************************/
/* end easy assist css */
/************************/
.hotfixwebpart
{
margin-top: 14px;
margin-bottom: 10px;
margin-left: 20px;
margin-right: 20px;
}
.hotfixwebpart table
{
font-size: 0.8em;
}
.hotfix
{
font-size: 70%;
padding: 23px 0px 30px 0px;
width: auto;
}
.hotfix a
{
color: #07679a;
text-decoration: none;
}
.hotfix h1
{
color: #000000;
font-size: 1.65em;
margin-top: 0px;
margin-bottom: 10px;
font-weight: normal;
}
.hotfix ul
{
margin-top: 8px;
}
.hotfix .infoBox
{
padding: 10px;
margin-left: 47px;
}
.hotfix .hotfixlist
{
background-color: #ffffff;
border: solid 1px #F9F9F9;
}
.hotfix .normalTable
{
width: 100%;
height: auto;
}
.hotfix .expandedTable
{
width: 1300px;
}
.hotfix .hotfixlist th, .hotfix .hotfixlist td
{
padding-left: 10px;
}
.hotfix .hotfixlist td
{
border-top: solid 1px #F9F9F9;
}
.hotfix .hotfixlist th
{
color: #000000;
font-weight: bold;
height: 28px;
background-color: #ECF5FB;
text-align: left;
border-top: solid 1px #C5DAE8;
border-bottom: solid 1px #C5DAE8;
}
.hotfix .hotfixlist .trborderleft
{
border-left: 1px solid #C5DAE8;
}
.hotfix .hotfixlist .trborderright
{
border-right: 1px solid #C5DAE8;
}
.hotfix .hotfixlist tr
{
color: #000000;
height: 28px;
}
.hotfix table
{
font-size: 100%;
}
.hotfix .infoBox .key
{
font-weight: bold;
}
.hotfix .divForm
{
width: 712px;
margin-top: 16px;
margin-bottom: 0px;
padding-top: 0px;
padding-bottom: 0px;
border: none;
}
.hotfix #tblForm
{
width: 100%;
}
.hotfix #tblForm input
{
margin-bottom: 2px;
}
.hotfix #divYourSys
{
border: none;
margin-top: 2px;
margin-bottom: 10px;
}
.hotfix #divYourSys #divDesText
{
margin-left: 47px;
}
.hotfix #divSysDown
{
color: Red;
}
.hotfix #divErrMsg
{
color: Red;
margin-top: 10px;
margin-bottom: 10px;
}
.hotfix #divYourRequest
{
margin-bottom: 20px;
}
.hotfix #divHotfixes
{
margin-bottom: 33px;
margin-left: 40px;
}
.hotfix #divHotfixes ul
{
margin-left: 16px;
}
.hotfix #divEmailPrompt
{
margin-bottom: 20px;
}
.hotfix #divEmail
{
margin-bottom: 40px;
margin-left: 40px;
}
.hotfix #divSummary
{
margin-bottom: 35px;
}
.hotfix #divShowAll
{
margin-bottom: 10px;
margin-left: 47px;
}
.hotfix #divWarning
{
margin-bottom: 13px;
margin-left: 15px;
}
.hotfix #divGoToTop
{
margin-top: 20px;
}
.hotfix .tdSpace
{
width: 5px;
}
.hotfix .tdLabel
{
width: 180px;
text-align: right;
padding-right: 7px;
}
.hotfix .textInput
{
width: 245px;
}
.hotfix #tdHSeparator1
{
height: 35px;
}
.hotfix #tdHSeparator2
{
height: 38px;
}
.hotfix .tdCheckbox
{
padding: 0px;
}
.hotfix #spanShowAll .aShowAll
{
text-decoration: underline;
}
.hotfix #spanShowAll
{
float: left;
}
.hotfix #spanShowAll img
{
margin-right: 4px;
}
.hotfix #spanShowMore
{
float: right;
}
.hotfix .inlineImage
{
vertical-align: middle;
}
.hotfix #divSteps
{
margin-bottom: 5px;
}
.hotfix .divStep
{
font-size: 120%;
vertical-align: middle;
}
.hotfix .divStep img
{
margin-right: 12px;
}
.hotfix #divStep1
{
width: 100%;
margin-bottom: 6px;
margin-top: -10px;
display: table;
}
.hotfix #divNoscript
{
height: 500px;
}
.hotfix #divWarning ul
{
margin-left: 33px;
margin-bottom: 18px;
}
.hotfix #hflWrapper
{
margin-left: 47px;
}
.hotfix .divReqDescription
{
padding-left: 47px;
margin-top: 2px;
}
.hotfix #tdSubmit
{
padding-top: 10px;
}
.hotfix #divTodo
{
margin-top: 23px;
}
.hotfix hr
{
color: LightGrey;
height: 1px;
}
.hotfix .tdHip
{
padding-top: 11px;
vertical-align: top;
padding-bottom: 1px;
}
.hotfix .tdHipHelp
{
padding-top: 30px;
vertical-align: top;
}
.hotfix #divTextHelp
{
padding-top: 2px;
}
.hotfix #tdHipContainer
{
width: 255px;
}
.hotfix #hipaudio
{
margin: 8px 96px 9px 97px;
}
.hotfix #hipimage
{
margin: auto;
}
.hotfix #divHipImage
{
text-align: center;
width: 220;
height: 50px;
border: solid #9096a1 1px;
margin-right: 3px;
}
.hotfix #divHipType
{
cursor: pointer;
}
.hotfix #divReloadHip
{
cursor: pointer;
}
.hotfix .tdCheckbox input
{
padding: 0px;
margin: 0px;
}
/*/////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////*/
.advsearch
{
position: relative;
width: 722px;
margin-left: 12px;
margin-top: 20px;
font-size: 80%;
z-index: 3;
}
.advsearch .left
{
float: left;
}
.advsearch .right
{
float: right;
}
.advsearch .relative
{
position: relative;
}
/*MAKE SURE THIS IS REMOVED WHEN ADVANCED SEARCH IS CHANGED*/
.advsearch #divquery span, .advsearch #tdQuery span
{
font-size: 110% !important;
}
.advsearch #divquery span.right span
{
font-size: 70% !important;
}
.advsearch h1
{
font-weight: normal;
font-size: 1.65em;
margin-bottom: 6px;
margin-left: 5px;
}
.advsearch #divquery
{
height: 1.8em;
margin-top: 4px;
position: relative;
z-index: 2;
}
.advsearch #divquery #query
{
width: 660px;
}
.advsearch #divshowhide
{
margin-top: 2px;
height: 2em;
}
.advsearch #spanshowhide
{
display:none;
}
.advsearch #divshowhide #showhide
{
vertical-align: top;
z-index: 1;
zoom: 1;
}
.advsearch #topbarlabel
{
font-weight: bold;
}
.advsearch #topbarvalue
{
font-weight: normal;
font-size: 90%;
}
.advsearch .fullwidth
{
width: 700px;
}
.advsearch .adjwidth
{
width: 516px;
}
.advsearch #spanPrompt
{
display: none; /* initially must be invisible for no-script scenario */
position: relative;
margin-top: -10px;
padding: 0px 0px 0px 10px;
}
.advsearch #spanCatalogs
{
position: relative;
margin-top: -10px;
padding: 0px 10px 0px 0px;
}
.advsearch .invisible
{
display: none; /* initially must be invisible for no-script scenario */
}
.advsearch #content
{
background: url('/library/images/support/cn/Search_bottom_gradient.png') bottom no-repeat;
border-left: #bcc5cd solid 1px;
border-right: #bcc5cd solid 1px;
padding-left: 12px;
padding-right: 12px;
margin-top: -14px;
_margin-top: 0px;
background-color: White;
}
.advsearch .label
{
font-weight: bold;
}
.advsearch #content #helplink
{
text-align: right;
width: 660px;
}
.advsearch #divtop1
{
background: url('/library/images/support/cn/search_top_bar1.png') no-repeat top;
width: 722px;
height: 20px;
}
.advsearch #divtop2
{
background-color: Red;
background: url('/library/images/support/cn/Search_top_bar2.png') no-repeat top;
background-color: #E6F4F7;
width: 720px;
_width: 722px;
padding-bottom: 44px;
border-left: #bcc5cd solid 1px;
border-right: #bcc5cd solid 1px;
}
.advsearch .divtable
{
display: block;
}
.advsearch imgbottom
{
position: absolute;
bottom: 0px;
}
.advsearch #content #divproduct
{
margin-top: 26px;
height: 1.8em;
position: relative;
z-index: 1;
}
.advsearch #productfilter
{
width: 660px;
}
.advsearch .row
{
width: 660px;
margin-top: 4px;
margin-bottom: 4px;
padding-left: 15px;
}
.advsearch #tblLive
{
width: 695px;
font-size: 100%;
}
.advsearch #tblLive td
{
padding: 1px;
}
.advsearch #tblLive #tdQuery
{
width: 612px;
}
.advsearch #tblLive #tdSubmit
{
white-space: nowrap;
}
.advsearch #tblLive .relative
{
_width: 100%;
}
.advsearch #tdQuery #query
{
width: 100%;
_float: left;
}
.advsearch #tdHelpLink
{
text-align: right;
font-size: 100%;
padding-bottom: 4px;
width: 100%;
}
.advsearch #tblLive #ddCatalog
{
width: 80px;
}
.advsearch #tblLive select
{
font-size: 100%;
}
.advsearch span#poweredbycell
{
margin-right: 37px;
}
.advsearch #poweredbycell
{
margin-top: 1px;
padding: 2px 0px;
}
.advsearch #poweredbycell span
{
font-size: 7pt;
text-align: right;
}
.advsearch #poweredbycell img, .advsearch #poweredbycell div
{
vertical-align: middle;
margin: 0px 2px;
}
.advsearch #divSubmitLive
{
_padding-right: 1px;
}
.advsearch #livecatalogs table
{
margin-top: 6px;
}
.advsearch .livecatalogtext
{
font-size: 70%;
}
.advsearch #divcatalogs
{
margin-top: 26px;
}
.advsearch #divcataloglabel
{
height: 1.8em;
position: relative;
z-index: 1;
}
.advsearch #divresources
{
height: 1.8em;
margin-top: 38px;
}
.advsearch #divrefine
{
height: 1.8em;
margin-top: 26px;
}
.advsearch .divcatalogoption
{
padding-left: 12px;
}
.advsearch #divcatalogs .divcatalogoption
{
padding-left: 34px;
}
.advsearch .tdlabel
{
text-align: left;
white-space: nowrap;
}
.advsearch .row table
{
width: 100%;
font-size: 100%;
}
.advsearch .tddropdown select
{
width: 100%;
}
.advsearch .tddropdown
{
width: 100%;
padding: 0px 10px 0px 10px;
}
.advsearch .divcatalogitem
{
padding-left: 12px;
}
.advsearch #SearchDetails
{
margin-top: 32px;
margin-bottom: 2px;
display: none;
}
.advsearch #ddlCatalog
{
font-size: 90%;
width: 180px;
}
.advsearch #divSubmit
{
text-align: right;
margin-top: 12px;
width: 660px;
padding-top: 3px;
padding-bottom: 3px;
}
.advsearch #btnSubmit
{
border: 0px;
background: none transparent scroll repeat 0% 0%;
color: #07679a;
font-size: .9em;
padding-left: 15px;
padding-right: 15px;
_padding: 2px 7px 2px 7px;
}
.advsearch #spanSubmit
{
border: 1px solid #2c3b5e;
background: url('/library/images/support/cn/search_button.png') repeat-x;
padding-top: 2px;
padding-bottom: 2px;
_padding: 0px;
display: inline-block;
}
.advsearch a.custip span
{
font-size: 80%;
}
#productInput
{
font-size: 16px;
border: 1px solid gray;
width: 340px;
height:30px;
font-style:italic;
}
#qpfProductList
{
font-size: 75%;
margin-left: 20px;
}
#qpfProductList li
{
margin: 2px 0 2px 0;
}
#qpfProductList li a span
{
font-size: 80%;
}
#qpfInner1
{
z-index: 2;
display: table-cell;
*position: relative;
*float: left;
}
#qpfInner1 #productDialog
{
margin-right:20px;
}
#qpfInner1 #productDialog > span
{
font-size:16px;
}
#qpfInner2
{
display: table-cell;
*position: relative;
*float: left;
}
#qpfInner1 #productDialog > span, #qpfInner2
{
font-size:13px;
color:#333333;
}
#qpfInner1 #productDialog > span
{
font-weight:bold;
}
#acListDivproductInput div span
{
font-size:16px!important;
line-height:25px!important;
}
.imagesdiv
{
display: inline;
float: left;
}
#selprod
{
width: 65%;
margin: 40px;
font-size: 8pt;
}
#selprod h1
{
font-weight: bold;
font-size: 12pt;
}
#selprod #content
{
margin-top: 6px;
padding: 12px;
background-color: #eef3ff;
}
#selprod #content img
{
float: left;
}
#selprod #content #products
{
margin-left: 50px;
width: auto;
}
#selprod #content #asst
{
text-align: right;
}
#mainColumn
{
direction: ltr;
text-align: left;
}
td.primaryMainColumn #mainColumn {
margin-right: 20px;
}
/*begin social media*/
.SocialMedia
{
height:37px;
}
#thinColumn .SocialMedia
{
margin-bottom: 20px;
}
.ShareButton
{
display:none;
border-style: none;
right: 0px;
float:right;
color: #1977b0;
z-index: 10;
padding: 0px 10px 3px 10px;
margin-top:17px;
font-size: 80%;
}
a.ShareButton
{
text-decoration:none;
}
.MediaContent {
width: 200px;
right: 0px;
position: absolute;
z-index: 20000;
top:35px;
}
.MediaContent ul,#thinColumn .MediaContent ul{
font-size: 70%;
padding: 5px;
border: 1px solid #1977B0;
background: #FFF;
list-style:none;
margin-top:0px;
display:none;
margin-left: 40px;
}
.MediaContent li a,#thinColumn .MediaContent li a{
padding-right: 10px;
padding-left: 10px;
line-height: 22px;
display: block;
text-decoration: none;
font-size: 11px;
}
.MediaLinks li a img,#thinColumn .MediaLinks li a img{
margin-right: 5px;
vertical-align: text-bottom;
}
.MediaLinks li a:hover,#thinColumn .MediaLinks li a:hover{
background: #D2E4EF;
}
.stackLayoutContentTable .SocialMedia .MediaContent
{
right:3px;
}
/*end social media*/
/***begin article translation***/
#thinColumn #ATList
{
background-color: white;
width: 173px;
border: 1px solid #C6D0DA;
display: block;
padding-left: 3px;
z-index: 100;
}
#ATList ul
{
list-style: none;
padding: 0px;
width: auto;
}
#thinColumn #ArticleTranslations
{
overflow: visible;
margin-bottom: 15px;
z-index: 4;
}
#ArticleTranslations .ATtext
{
width: 173px;
height: 18px;
background-color: white;
clear: both;
font-size: 13px;
border: 1px solid #C6D0DA;
padding-left: 3px;
}
#ArticleTranslations .ATtext span a
{
float: left;
width: 156px;
height: 18px;
line-height: 16px;
white-space: nowrap;
overflow: hidden;
text-overflow:ellipsis;
}
#ArticleTranslations .ATtext a
{
float: right;
cursor: pointer;
width: 17px;
height: 18px;
}
/***end article translation ***/
/**begin contextualad**/
#thinColumn .adWrapper
{
margin-bottom: 30px;
}
#mainColumn .adWrapper
{
margin-top: 30px;
}
/**end contextualad**/
/**begin OptWebpart**/
#divSsbAdContent
{
display: none;
margin-top: 30px;
margin-bottom: 30px;
}
/**end OptWebpart**/
/* Media Print */
@media print
{
.stage
{
display: inline;
font-size: 14pt !important;
}
.utility-bar, .stage-bg-top, .stage-bg-mid, .stage-bg-bot, .search-navigation, .main-brand, .footer, .getHelp, .primaryThinColumn, .primaryLeftColumn, #leftColumn, #thinColumn, .wp .fms, .wp.search, .wp.lc, .SimpleSearch, .SimpleSearchWithPH, .PilotSimpleSearch, .SocialMedia, .SocialMedia_out
{
display: none !important;
}
pre
{
overflow: visible !important;
word-wrap: break-word;
white-space: normal;
}
table
{
width: auto !important;
overflow: visible !important;
}
.psContainers
{
float: none !important;
}
}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=XmlContent.css
Content-Type: text/css; charset=utf-8; name=XmlContent.css
Content-Location: http://support.microsoft.com/common/css/default/XmlContent.css?76
Content-Transfer-Encoding: 8bit
/* general kb */
.kb
{
font-size: 13px;
margin: 0px 0px 5px 0px;
width:auto;
color: #333333;
}
.kb a
{
color: #0072c6;
}
.kb td
{
padding: 0;
vertical-align: top;
}
.kb ol, .kb ul, .kb li
{
position:inherit;
}
.table ol,.table.ul,.table li
{
position:static;
}
.kb div.sbody .list td
{
background: transparent!important;
border-top: none!important;
}
.kb div.pLink
{
display: none;
font-size: 11px;
font-weight: normal;
}
.kb .toc img,
.kbSurvey .topOfPage img,
.kb .topOfPage img
{
vertical-align: baseline;
margin:0px 3px;
}
.clear {
clear: both;
}
.kb #kb_hotfix_link
{
text-decoration: none;
margin-bottom: 20px;
float: left;
position: relative;
font-size: 18px;
line-height: 40px;
display: block;
color: #FFFFFF;
min-width: 160px;
height: 40px;
background-color: #00a600;
padding: 0px 5px;
}
.kb #kb_hotfix_link img
{
position: relative;
top: 6px;
margin: 0px 10px;
line-height: 40px;
*left: 10px;
*right: 10px;
*top: 5px;
}
.kb #kb_hotfix_link span
{
line-height: 38px;
*line-height: 34px;
}
.kb h1.title
{
font-size: 30px;
margin: 20px 0px 10px 0px;
font-weight: lighter;
word-wrap: break-word;
}
.kb h2
{
font-size: 20px;
}
.kb h3
{
font-size: 20px;
font-weight: lighter;
}
.kb h4
{
font-size: 13px;
}
.kb h5
{
font-size: 12px;
}
.kb h6
{
font-size: 11px;
}
.kb .graphic
{
margin:0px 10px;
padding:1px;
}
.kb .message
{
padding: 10px 30px;
}
.kb div.author
{
margin: 0px 0px 6px 0px;
}
.kb div.author .label
{
font-weight: bold;
}
.kb div.expandcollapseall
{
display:none;
}
.kb div.expandcollapseall_open
{
margin: 15px 0px;
color:#115F87;
}
.kb div.expandcollapseall_open a:hover
{
text-decoration:underline;
}
.kb div.csDisclaimerLink,
.kb div.mtDisclaimerLink,
.kb div.rtDisclaimerLink,
.kb div.mtSBSLink
{
padding: 3px 0px 3px 0px;
}
.kb div.csDisclaimerLink img,
.kb div.mtDisclaimerLink img,
.kb div.rtDisclaimerLink img,
.kb div.mtSBSLink img
{
margin: 0px 4px;
vertical-align:middle;
}
.kb div.disclaimer.mt .text,
.kb div.disclaimer.cc .text,
.kb div.disclaimer.retiredkb .text
{
font-size: 11px;
}
.kb div.disclaimer .label
{
font-size: 13px;
color: #333333;
font-weight: bold;
}
.kb div.securedisclaimer,
.kb div.securesection
{
margin: 1px 0;
}
.kb div.securedisclaimer hr,
.kb div.securesection hr
{
border: 1px solid #e92;
background-color: #efba43;
margin: 5px auto;
}
.kbhf
{
border-bottom: 2px solid #e92;
border-top: 2px solid #e92;
padding: 0 15px;
}
.kb div.securedisclaimer .seclabel,
.kb div.securedisclaimer .label,
.kb div.securesection .seclabel,
.kb div.securesection .label,
.kbhf .label
{
text-transform: uppercase;
text-align:center;
font-weight: bold;
color: #c60;
margin-bottom: 5px;
}
.kbhf .label
{
margin-top: 15px;
}
.kb div.securesection .secdisclaimer
{
text-align: center;
}
.kb div.securedisclaimer .text,
.kb div.securesection .text
{
margin: 0 10px;
}
.kb div.securesection .secdisclaimer.text
{
margin: 0 0 10px;
}
.kb div.notice
{
margin: 20px 0px 0px 0px;
background-color: #F5F5F5;
padding: 5px 10px 10px 10px;
font-size: 13px;
}
.kb div.notice a
{
font-size: 13px;
}
.kb .notice h5
{
margin: 0px 0px 5px 0px;
}
.kb .notice div.indent
{
padding-bottom: 0px;
padding-top: 5px;
}
.kb div.notice div.notice
{
font-size:13px;
margin-top: 0px;
padding-bottom: 0px;
}
.kb .notShow,.kbSurvey .notShow
{
display: none;
}
.kb .subSection
{
margin-bottom: 5px;
}
.kb .subSectionHead
{
cursor: pointer;
padding: 0px 25px;
display: block;
min-height: 20px;
line-height: 20px;
}
.kb .subSectionHead.headCollapse {
background: url("/library/images/support/en-us/20x20_grey_plus.png") no-repeat 0px center;
}
.kb .subSectionHead.headExpand {
background: url("/library/images/support/en-us/20x20_grey_minus.png") no-repeat 0px center;
}
/* Atricle Properties */
.kb div.articleProperty
{
color:#999999;
padding:2px;
font-size: 11px;
margin-bottom: 17px;
}
/* Table of Content */
.kb .toc h5
{
font-size: 120%;
margin: 0;
margin-bottom:3px;
}
.kb .toc .tallTable
{
border-collapse: collapse;
}
.kb .toc .hfdl
{
display: none;
}
.kb .toc .tallTable td
{
font-size: 10%;
padding: 4px 0 0;
width: 10px;
}
.kb .toc .tallTable td.text
{
padding: 1px 3px;
width: 100%;
}
.kb .toc .tallTable span
{
width: 10px;
}
.kb .section .table
{
border-bottom: solid 1px #000000;
border-collapse: collapse;
}
.kb .section .table th
{
padding: 5px 10px 5px 0px;
border-bottom: solid 1px #000000;
font-weight: normal;
text-align: left;
}
.kb .section .table td
{
padding: 5px 10px 5px 0px;
border-top: solid 1px #c9c9c9;
border-bottom: solid 1px #c9c9c9;
border-left: 0px;
border-right: 0px;
empty-cells: show;
text-align: left;
}
.kb .section .kb_tablewrapper .table td,.kb .section .kb_tablewrapper .table th
{
padding: 5px 10px 5px 10px;
}
.kb .section .kb_tablewrapper .table th
{
border-top: solid 1px #000000;
}
.kb .section .table tr:last-child td
{
border-bottom: solid 1px #000000;
}
.kb .list
{
margin: 0;
}
.kb .list .list
{
margin: 0;
}
.kb .list .bullet
{
padding:0;
}
.kb .list .text
{
padding-left: 2px;
padding-right: 2px;
}
.kb .kb_subList
{
list-style-type:none;
Margin-left:2px;
}
.kb .section h2.subTitle.tocTitle, .kb .section h2.subTitle.tocTitle span
{
background-color: #f5f5f5;
}
.kb h2
{
margin: 0px 0px 5px 0px;
}
.kb .section h2.subTitle,.kbSurvey h2.subTitle
{
width:100%;
cursor:pointer;
background-color: #d1d3d4;
position: relative;
overflow: hidden;
}
.kbSurvey
{
margin: 0px 0px 0px 0px;
}
.kbSurvey.noShow,.kb .noShow
{
display: none;
}
.kbSurvey .topOfPage
{
margin: 0px 52px;
}
.kbSurvey .topOfPage a {
color: #0072c6;
font-size: 13px;
}
.kbSurvey .bookmark a
{
display: block;
height: 0px;
}
.kb .section h2.subTitle span,.kbSurvey h2.subTitle span
{
background-color: #d1d3d4;
float:left;
font-size:20px;
font-weight: lighter;
padding: 12px 0px 12px 10px;
width: 732px;
}
.kb .section h2.subTitle span a, .kbSurvey h2.subTitle span a
{
color:#333333;
}
* html .kb .section h2.subTitle span
{
background-image:none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/library/images/support/cn/gsfx_kb_tab.png', sizingMethod='crop');
}
.kb .rtl .section h2.subTitle span
{
float:right;
padding-left: 0px;
padding-right: 10px;
}
.kb div.kb_graphictop,
.kb div.kb_tabletop,
.kb div.kb_graphictop_open,
.kb div.kb_tabletop_open
{
height:60px;
margin:0px;
}
.kb div.kb_graphictop_open,
.kb div.kb_tabletop_open
{
height:60px;
display:table;
}
.kb span.kb_collapsetext_close,
.kb span.kb_expandtext_close,
.kb span.kb_expandtext
{
display:none;
}
.kb span.kb_collapsetext_open,
.kb span.kb_expandtext_open
{
color:#0072C6;
vertical-align:top;
cursor:pointer;
margin:4px 0px;
font-size: 16px;
line-height: 49px;
display: inline-block;
}
.kb span.kb_expandtext_background,
.kb span.kb_collapsetext_background
{
width:49px;
height:49px;
margin: 0px 10px 0px 0px;
display:block;
float:left;
font-weight: normal;
}
.kb .rtl span.kb_expandtext_background,
.kb .rtl span.kb_collapsetext_background
{
float:right;
}
.kb span.kb_collapsetext_background
{
background-image: url('/library/images/support/cn/48x48_collapse-image.png');
}
.kb span.kb_expandtext_background
{
background-image: url('/library/images/support/cn/48x48_expand-image.png');
}
* html .kb span.kb_collapsetext_open,
* html .kb span.kb_expandtext_open
{
position:fixed;
}
.kb span.kb_collapsetext_open img,
.kb span.kb_expandtext_open img
{
vertical-align:middle;
}
.kb div.kb_errormsgbody,
.kb div.kb_codebody,
.kb div.kb_intextwrapper
{
background-color: #F5F5F5;
}
.kb div.kb_errormsgbody,
.kb div.kb_codebody,
.kb div.kb_intextwrapper
{
position:relative;
overflow-x:auto;
margin-bottom:10px;
}
.kb div.kb_outertablewrapper,.kb div.kb_outergraphicwrapper
{
margin-bottom: 10px;
}
.kb div.kb_outergraphicwrapper,
.kb div.kb_outertablewrapper,
.kb table.table
{
border-width:3px;
border-top-width:0px;
border-bottom-width:2px;
}
.kb div.kb_outergraphicwrapper_closed,
.kb div.kb_outertablewrapper_closed
{
margin:10px 0px;
}
.kb div.kb_outertablewrapper_closed
{
width:430px;
}
.kb div.kb_outertablewrapper .kb_tablewrapper
{
border-bottom: solid 1px #C9C9C9;
border-left: solid 1px #C9C9C9;
border-right: solid 1px #C9C9C9;
}
.kb .section div.kb_outertablewrapper .table,.kb .section div.kb_outertablewrapper .table tr:last-child td
{
border-bottom: 0px;
}
.kb div.kb_outergraphicwrapper_closed
{
overflow-y:hidden;
}
.kb div.kb_nowrapper
{
display:inline;
vertical-align:middle;
}
.kb div.kb_graphicwrapper .graphic,
.kb div.kb_nowrapper .graphic,
.kb div.kb_nowrapper table,
.kb div.kb_tablewrapper table
{
position: relative;
z-index: 1000;
}
.kb div.kb_graphicwrapper,
.kb div.kb_tablewrapper,
.kb div.kb_codecontent,
.kb div.kb_errorcontent,
.kb div.kb_intextbody
{
width:100%;
margin:0px;
padding:0px;
}
* html .kb div.kb_graphicwrapper,
* html .kb div.kb_tablewrapper,
* html .kb div.kb_codecontent,
* html .kb div.kb_errorcontent,
* html .kb div.kb_intextbody
{
overflow-x:auto;
}
.kb div.kb_codecontent,
.kb div.kb_errorcontent,
.kb div.kb_intextbody
{
background-color: #f5f5f5;
}
.kb div.kb_graphicwrapper,
.kb div.kb_tablewrapper
{
border-bottom-width:2px;
background-color: white;
overflow-x: auto;
position: relative;
*overflow-y: hidden;
}
* html .kb div.kb_graphicwrapper,
* html .kb div.kb_tablewrapper
{
float:left;
}
.kb .kb_whitebox
{
width:100%;
height:100em;
background-color:#fff;
opacity:.8;
filter:alpha(opacity=80);
position:absolute;
top: 0px;
left:0px;
display:none;
cursor:pointer;
text-align:center;
}
.kb .kb_whitebox_img
{
background:url('/library/images/support/cn/gsfx_kb_cluster.png') no-repeat -157px -16px;
height:50px;
width:50px;
position:relative;
top:20px;
margin:0px auto;
display:block;
}
.kb .kb_whitebox_text
{
position:relative;
top:30px;
font-size:2em;
text-decoration:underline;
color:#115F87;
}
.kb div.kb_graphicwrapper .graphic
{
padding:1px;
margin:0px;
}
.kb div.errormsg
{
min-height:20px;
}
.kb div.kb_outergraphicwrapper_open,
.kb div.kb_outertablewrapper_open
{
position:relative;
width:100%;
z-index:100;
}
.kb .section h2.subTitle img.kb_tabs_toggle, .kbSurvey h2.subTitle img.kb_tabs_toggle
{
float:left;
height:32px;
width:32px;
padding-top: 10px;
padding-left: 10px;
}
.kb .rtl .section h2.subTitle img.kb_tabs_toggle
{
float:right;
left:auto;
padding-left: 0px;
padding-right: 10px;
}
.kb .section h3
{
margin: 15px 0px
}
.kb .section h4
{
margin: 15px 0px;
}
.kb .section h5
{
margin: 8px 0 5px;
}
.kb .section h6
{
margin: 8px 0 5px;
}
.kb hr.divider,
.kb hr
{
border-bottom: none;
height:2px;
color: #ddd;
margin-top: 10px;
margin-bottom: 10px;
}
.kb div.indent
{
padding:0px 20px 10px 20px;
}
.kb div.indent div.indent
{
margin: 10px;
}
/* SBODY styles */
.kb div.sbody
{
margin: 15px 0px 30px 52px;
}
.kb div.sbody,
.kb .appliesTo,
.kb .keywords,
.kb .disclaimer
{
margin-bottom: 12px;
}
.kb .appliesTo ul,
.kb .appliesTo li
{
position:static !important;
font-size: 11px;
}
.kb .appliesTo ul
{
margin-top: 0px;
}
.kb .rtl div.sbody
{
margin: 0px 24% 10px 0px;
}
.kb .disclaimer div.text
{
width:auto;
}
.kb div.sbody div.sbody,
.kb .rtl div.sbody div.sbody
{
margin:0px;
}
.kb .section div.sbody.kb_tabs_toggle_open,.kbSurvey div.sbody.kb_tabs_toggle_open
{
display:auto;
}
.kb .section div.sbody.kb_tabs_toggle_closed,.kbSurvey div.sbody.kb_tabs_toggle_closed
{
display:none;
}
.kb .topOfPage
{
margin:15px 0px 30px 0px;
}
.kb div.sbody span.abbr,
.kb div.sbody acronym
{
border-bottom: 1px dotted #000;
cursor: help;
}
.kb div.sbody .code,
.kb div.sbody .errormsg,
.kb div.sbody .in_text
{
position:relative;
padding:10px 10px 10px 10px;
color:#333;
margin:0px;
}
* html .kb div.sbody .code,
* html .kb div.sbody .errormsg,
* html .kb div.sbody .in_text
{
float:left;
}
.kb div.sbody .code,
.kb div.sbody .in_text
{
width:auto;
/*width:1px; FIX for firefox pre tag issue*/
font-family:Consolas, "Courier New", Courier, Monospace;
}
.kb div.sbody div.center
{
text-align: center;
}
.kb div.sbody fieldset
{
padding: 10px;
}
/* List styles */
.kb .list
{
border-collapse: collapse;
border-spacing: 0;
margin: 10px 5px;
}
.kb .appliesTo .list
{
margin: 0 10px;
}
.kb div.sbody .list td
{
background: #f7f7ff;
border-top: 1px solid #fff
}
.kb div.sbody .list .image
{
vertical-align: top;
width: 16px;
}
.kb .bullet
{
font-size: 80%;
text-align: center;
vertical-align: top;
width: 1em;
}
.kb div.sbody .list .number
{
padding: 3px;
vertical-align: top;
white-space: nowrap;
}
.kb div.sbody .list .text
{
padding: 3px 8px;
}
.kb div.sbody .sTable td
{
padding: 2px 3px;
}
.kb .appliesTo .list td
{
font-size: 65%;
padding: 4px 0 0;
}
.kb .appliesTo .list td.bullet
{
font-size: 70%;
}
.kb .appliesTo .list td.textSub
{
padding: 0;
}
.kb pre.in_text
{
color: black;
}
.kb .appliesTo h5
{
font-size: 13px;
margin: 5px 0;
}
.kb .appliesTo .kb_appliesTo_toggle
{
display:inline-block;
height:11px;
width:11px;
margin-right:5px;
}
.kb .appliesTo .kb_appliesTo_toggle_opened
{
background:url('/library/images/support/cn/gsfx_kb_cluster.png') 0px -16px no-repeat;
}
.kb .appliesTo .kb_appliesTo_toggle_closed
{
background:url('/library/images/support/cn/gsfx_kb_cluster.png') -12px -16px no-repeat;
}
.kb .userInput
{
font-weight: bold;
}
.kb .keywords td
{
vertical-align: bottom;
}
.kb .keywords td.header
{
vertical-align: top;
}
.kb .keywords td.header h5
{
font-size: 13px;
margin: 0;
padding: 0;
white-space: nowrap;
}
.kb .weboutput table
{
border-color: #000;
border-collapse: collapse;
width: auto;
}
.kb .weboutput table th
{
background: #dedede;
}
.kb .weboutput table th,
.kb .weboutput table td
{
border-color: #000;
padding: 3px 5px;
}
.kb .weboutput table th font,
.kb .weboutput table td font
{
font-size: 95%;
}
/* qa */
.kb .qa .qa_section
{
margin-top:10px;
table-layout: fixed;
width: 100%;
}
.kb .qa .qa_section td > div
{
padding:0px 5px;
}
.kb .qa .qa_section .label
{
color: #fff;
font-size:32pt;
font-weight:bold;
background: url('/library/images/support/cn/gsfx_kb_cluster.png') no-repeat -74px -16px;
width:48px;
height:58px;
padding:20px 0px 0px 30px;
}
.kb .rtl .qa .qa_section .label
{
padding:20px 30px 0px 0px;
}
.kb .qa .bigspace
{
height: 50px;
}
.kb .qa .smallspace
{
height: 20px;
}
/* tt */
.kb .tt .section h2.subTitle
{
color: #000;
}
/* sc */
.kb .sc .section hr.hidden
{
border: 1px solid #fff;
background-color: #fff;
}
.kb .sc .section div.blurb
{
margin-bottom: 20px;
}
.kb .sc .section .more
{
margin-top: 20px;
}
.kb .sc .section .textQuestion,
.kb .sc .section .textAnswer
{
padding: 5px;
vertical-align: top;
}
.kb .sc .section .textQuestion
{
background-color: #fffff3;
}
.kb .sc .section .textAnswer
{
background-color: #f6f6ff;
}
.kb .sc .section .imgQuestionColumn
{
vertical-align: top;
}
.kb .sc .section .imgAnswerColumn
{
vertical-align: bottom;
}
.kb .sc .section .qImg,
.kb .sc .section .aImg
{
margin: 2px;
}
.kb .sc .section .qImg
{
border-right: 3px solid #999;
}
.kb .sc .section .aImg
{
border-left: 3px solid #999;
}
.kb .sc
{
margin: 0px;
}
/* si */
.kb .si .section .graphic
{
margin: 5px;
float: left;
}
.kb .kb_acwtable
{
margin-bottom :20px;
}
*html .kb .kb_acwtable td
{
padding: 10px;
}
.kb .awbkg .desc,
.kb .awbkg .title
{
padding:5px 5px 10px 5px;
}
.AWlink
{
margin-top: 20px;
margin-bottom: 20px;
}
.AWlink a
{
background-color:#339900;
color: #FFFFFF;
padding:4px 20px 4px 20px;
}
.kb #tocDiv ul
{
list-style: none;
margin:5px 0px;
padding:0px;
position:static !important;
}
.kb #tocDiv ul li
{
position:static !important;
list-style: none;
}
.kb #tocDiv ul ul
{
padding:0px 15px;
position:static !important;
}
.kb #tocDiv ul ul li
{
position:static !important;
}
#kb_warning_divider
{
background-color:#F5F5F5;
padding: 5px 10px 10px 10px;
}
#kb_warning_divider span
{
color: #333333;
font-size: 13px;
display:block;
margin-bottom:5px;
}
#kb_warning_divider #mt_kb_warning_head
{
font-size: 16px;
}
.kb .reg_path
{
word-break: break-all;
}
/* FMS Survey */
#contentArea #mainColumn #fmsSurvey
{
padding-left: 32px;
padding-right: 0px;
color: #333333;
margin-left: 10px;
margin-right: 0px;
}
.wp div.fms
{
background-color: transparent;
}
#mainColumn .wp div.fms .QUESTIONTEXT
{
font-size: 16px;
font-weight: normal;
margin-bottom: 5px;
margin-top: 20px;
}
.wp .fms .ANSWERTEXT
{
font-size: 13px;
line-height: 23px;
}
.wp .fms .CHOICEROW
{
padding: 7px 5px 3px 10px;
*padding-top: 2px;/*ie7*/
}
.wp .fms .CHOICEROW input[type|="radio"]
{
padding: 0px 4px;
}
.wp div.fms .NAVBUTTON
{
margin-top: 5px;
background-color: transparent;
border: solid 1px #999999;
font-size: 13px;
line-height: 13px;
padding: 3px 5px;
margin: 0px 3px;
}
.wp .fms .QUESTIONCONTAINER {
line-height: 13px;
}
#mainColumn .wp .fms .NAVIGATION
{
margin-top: 6px;
}
.wp .fms .ANSWERBOX
{
margin-top: 8px;
width: 728px;
}
/* Mini-Router WebPart*/
.MRlinkCon
{
display: block;
z-index:2;
background:none;
padding:3px 6px;
margin-top:7px;
}
#MiniRouter h3 span
{
padding: 3px 0px;
}
#MiniRouter ul
{
background-color:#ffffff;
padding: 0px 0px 0px 25px;
margin-bottom: 20px;
}
#MiniRouter .gethelp .imglink
{
display:block;
float:left;
margin-right:5px;
width:48px;
height:48px;
}
#MiniRouter .gethelp .txtlink
{
display:block;
float:left;
width:106px;
}
#MiniRouter .gethelp
{
padding-right:10px;
background-color:#ffffff;
padding-top:10px;
padding-bottom:10px;
}
#MiniRouter li
{
color:#AAAAAA;
padding:3px;
}
#MiniRouter div,#thinColumn #MiniRouter
{
width:auto;
}
/* Light Box */
#lb
{
position:absolute;
margin:0px;
padding:0px;
background:#ffffff;
border:1px;
z-index:2000;
display:none;
width:472px;
font-family: Segoe UI,Tahoma,Arial,Sans-Serif;
border:solid 5px white;
}
.lbbrand,
.lbcontent
{
border: none;
margin:0px;
padding:0px;
}
.lbcontent a:link,
.lbcontent a:visited
{
color: #0066cc;
text-decoration: underline;
white-space:nowrap;
}
.lbcontent hr
{
margin-top:0px;
margin-bottom:0px;
margin-left: 10px;
margin-right: 10px;
}
.lbcontent table
{
margin-top:15px;
margin-bottom:5px;
margin-left: 10px;
margin-right: 10px;
font-size: 11px;
width: 452px;
}
.lbcontent tr,
.lbcontent td
{
margin:0px;
padding:0px;
}
#lbClose
{
cursor: hand;
top: 10px;
right: 15px;
position: absolute;
}
#lbHead1
{
text-align: left;
margin-top:10px;
margin-bottom:10px;
margin-left: 10px;
margin-right: 10px;
font-size: 14px;
}
#lbHead2
{
text-align: left;
margin-left: 10px;
margin-right: 10px;
margin-top:10px;
margin-bottom: 15px;
font-size: 12px;
}
.lbBtn
{
text-align: center;
min-width: 80px;
}
.lbBtn a,
.lbBtn a:link,
.lbBtn a:hover
{
float:right;
margin:0px;
cursor: hand;
text-decoration: none;
text-align: center;
}
.lbBtn div
{
margin:0px;
padding-left:10px;
padding-right:10px;
padding-top:5px;
padding-bottom:5px;
}
.lbRowNowBtn div
{
border:solid 1px #6e9200;
}
.lbLearnMoreBtn div
{
border:solid 1px #0fa1b8;
}
.lbBtnText
{
color: White;
font-weight: bold;
font-size: 14px;
}
#lbCloseTd
{
text-align: right
}
.MaskDiv
{
position:absolute;
top: 0px;
left: 0px;
margin: 0px;
padding: 0px;
width: 100%;
height: 100%;
background:#777;
filter:Alpha(opacity=40);
opacity: 0.3;
z-index: 1900;
}
#thinColumn #RelatedSupportCenters
{
margin-bottom: 20px;
}
.kb .notice h3
{
font-size: 16px;
}
#bottomRow .wp.getHelp
{
margin: 0px 10px;
}
.kbSurvey h2
{
margin: 0px;
}
/* Media Print */
@media print
{
.kb *
{
position:static;
float:none;
}
/* override the contentArea */
#contentArea
{
margin: 0!important;
padding: 0!important;
}
.kb .topOfPage,
.kb .toc,
.kb .csDisclaimerLink,
.kb .securedisclaimer.kbdllink,
.kb div.kb_graphictop,
.kb div.kb_tabletop,
.kb div.kb_graphictop_open,
.kb div.kb_tabletop_open,
.kb div.kb_graphictop_closed,
.kb div.kb_tabletop_closed,
#contentArea #mainColumn #fmsSurvey,
.kb .tocTitle,
.kb #tocDiv,
.kb #kb_expandcollapseall,
.kb .kb_whitebox
{
display: none!important;
}
.kb div.pLink
{
display: inline;
}
#kb,
.kb
{
margin: 5px 0 0!important;
width: auto!important;
}
.kb div.sbody .code,
.kb div.sbody .errormsg,
.kb div.sbody .in_text
{
float:none;
width:auto;
}
.kb div.kb_graphictop,
.kb div.kb_tabletop,
.kb div.kb_graphictop_open,
.kb div.kb_tabletop_open,
.kb div.kb_errormsgbody,
.kb div.kb_codebody,
.kb div.kb_intextwrapper,
.kb div.kb_outergraphicwrapper,
.kb div.kb_outertablewrapper,
.kb div.kb_graphicwrapper,
.kb div.kb_tablewrapper,
.kb div.kb_codecontent,
.kb div.kb_errorcontent,
.kb div.kb_intextbody,
.kb div.kb_graphicwrapper .graphic
{
border:0px;
}
.kb div.disclaimer.cc,
.kb div.disclaimer.mt,
.kb div.disclaimer.retiredkb
{
background:none;
border:0px;
padding:0px;
}
#kb_warning_divider
{
background-color: #F5F5F5;
padding: 10px;
}
#kb_warning_divider span
{
color: #333333;
font-size: 16px;
display:block;
margin-bottom:5px;
}
}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=kb.js
Content-Type: application/x-javascript; charset=utf-8; name=kb.js
Content-Location: http://support.microsoft.com/common/script/gsfx/kb.js?76
Content-Transfer-Encoding: Base64
77u/aWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgdmFyIGtiX0Fk
ZEV2ZW50ID0gZnVuY3Rpb24gKGVsLCBzdHJFdmVudCwgZnVuY1B0cikgeyBlbC5h
ZGRFdmVudExpc3RlbmVyKHN0ckV2ZW50LCBmdW5jUHRyLCBmYWxzZSk7IH0NCn0N
CmVsc2UgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkgew0KICAgIHZhciBrYl9BZGRF
dmVudCA9IGZ1bmN0aW9uIChlbCwgc3RyRXZlbnQsIGZ1bmNQdHIpIHsgZWwuYXR0
YWNoRXZlbnQoJ29uJyArIHN0ckV2ZW50LCBmdW5jUHRyKTsgfQ0KfQ0KDQpmdW5j
dGlvbiBrYlNyY0VsKGUpIHsNCiAgICBpZiAoZS5zcmNFbGVtZW50KSB7DQogICAg
ICAgIHJldHVybiBlLnNyY0VsZW1lbnQ7DQogICAgfQ0KDQogICAgaWYgKGUudGFy
Z2V0KSB7DQogICAgICAgIHJldHVybiBlLnRhcmdldDsNCiAgICB9DQoNCiAgICBy
ZXR1cm4gZTsNCn0NCg0KdmFyIGFkZE10U3BhbiA9IGZ1bmN0aW9uICgpIHsNCiAg
ICB2YXIgbXRTcGFucyA9ICQoIltpZD0nbXQnXSIpOw0KICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbXRTcGFucy5zaXplKCk7IGkrKykgew0KICAgICAgICAkKG10U3Bh
bnMuZ2V0KGkpKS5hdHRyKCJpZCIsICJNVCIgKyBpKTsNCiAgICB9DQp9Ow0KDQp2
YXIgcmVuZGVyTXRXaWRnZXQgPSBmdW5jdGlvbiAoY29udGVudElkLCBjdWx0dXJl
LCBzaXRlRGF0YSwgaXNDdGYpIHsNCiAgICBpZiAoY3VsdHVyZSAhPT0gIiIgJiYg
aXNDdGYgPT09ICJ0cnVlIikgew0KICAgICAgICAvL3RoaXMgaXMgZml4ZWQgZm9y
IGN0ZiB3aWxsIGNoYW5nZSB0aGUgZGlyZWN0aW9uIG9mIGFueSB0YWdzIGlmIHRh
Z3MgZGlyZWN0aW9uIGlzIGx0ciB3aGVuIHJlZ2lvbiBpcyBydGwsIA0KICAgICAg
ICAvL2J1dCBidXQgaW4gb25lTXNjb20sIHRvIGZpeCB0aGUgaWU3IHJlbmRlcmlu
ZyBpc3N1ZSwgdGhlIG5hdmlnYXRpb24gYmFyIHdpbGwgYmUgc2V0IGFzIGx0ciwN
CiAgICAgICAgLy9zbyBhZGQgYSBjdGYgYXR0cmlidXRlIHNvIHRoYXQgY3RmIHdv
bid0IGNoYW5nZSB0aGUgZGlyZWN0aW9uLg0KICAgICAgICAkKCIuc2VhcmNoLW5h
dmlnYXRpb24iKS5hdHRyKCJ0cmFuc2xhdGUiLCAiZmFsc2UiKTsNCiAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOyBzLnR5cGUgPSAidGV4dC9q
YXZhc2NyaXB0IjsNCiAgICAgICAgICAgIHMuY2hhcnNldCA9ICJVVEYtOCI7DQog
ICAgICAgICAgICBzLnNyYyA9ICgobG9jYXRpb24gJiYgbG9jYXRpb24uaHJlZiAm
JiBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2h0dHBzJykgPT0gMCkgPyAiaHR0cHM6
Ly9zc2wubWljcm9zb2Z0dHJhbnNsYXRvci5jb20vYWpheC92Mi93aWRnZXQuYXNw
eCIgOiAiaHR0cDovL3d3dy5taWNyb3NvZnR0cmFuc2xhdG9yLmNvbS9hamF4L3Yy
L3dpZGdldC5hc3B4IikgKw0KICAgICAgICAgICAgICI/c2l0ZURhdGE9IiArIGVu
Y29kZVVSSUNvbXBvbmVudChzaXRlRGF0YSkgKyAiJm1vZGU9bWFudWFsJmZyb209
ZW4mbGF5b3V0PXRzJnRvPSIgKyBjdWx0dXJlICsgIiZvcmlnaW5hbERvY3VtZW50
PS92aWV3a2Ivdmlld2tiLmFzcHg/Y29udGVudGlkPSIgKyBjb250ZW50SWQgKyAi
JmNhdGVnb3J5PVRlY2giOw0KICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUocywgZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOw0KICAgICAgICB9
LCAwKTsNCiAgICB9DQp9Ow0KDQovKktCIFRPQyovDQp2YXIgdG9jTGlua0NvdW50
ID0gMDsNCnZhciBrYkhlYWRpbmdzID0gbmV3IEFycmF5KCk7DQp2YXIga2JfdGFi
c19taW51c2ltZ3NyYyA9ICIvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9jbi9taW51
cy5wbmciOw0KdmFyIGtiX3RhYnNfcGx1c2ltZ3NyYyA9ICIvbGlicmFyeS9pbWFn
ZXMvc3VwcG9ydC9jbi9wbHVzLnBuZyI7DQoNCmZ1bmN0aW9uIHBhc3Nlc1R5cGVG
aWx0ZXIodHlwZSkgew0KICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7DQog
ICAgZXZhbCgidmFyIHAgPSAoIiArIHNlY3Rpb25GaWx0ZXIgKyAiKTsiKTsNCiAg
ICByZXR1cm4gcDsNCn0NCg0KZnVuY3Rpb24gZ2V0SW5uZXJUZXh0KG4pIHsNCiAg
ICBpZiAobi5ub2RlVHlwZSA9PSAzKSByZXR1cm4gbi5ub2RlVmFsdWU7DQogICAg
ZWxzZSB7DQogICAgICAgIHZhciB0eHQgPSAiIjsNCiAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHR4dCArPSBnZXRJ
bm5lclRleHQobi5jaGlsZE5vZGVzW2ldKTsNCiAgICAgICAgcmV0dXJuIHR4dDsN
CiAgICB9DQp9DQoNCmZ1bmN0aW9uIHRvY1Njcm9sbFRvKGUpIHsNCiAgICBFeHBh
bmRTZWN0aW9uKGUuc2Nyb2xsTm9kZSk7DQogICAgZS5zY3JvbGxOb2RlLnNjcm9s
bEludG9WaWV3KHRydWUpOw0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rp
b24gbWFrZVRPQ05vZGUoSE5vZGUsIGRlcHRoKSB7DQogICAgdmFyIG4gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOw0KDQogICAgdmFyIHQgPSBnZXRJbm5l
clRleHQoSE5vZGUpOw0KICAgIG4uaW5uZXJIVE1MID0gIjxhIGhyZWY9XCIjXCIg
b25jbGljaz1cInJldHVybiB0b2NTY3JvbGxUbyh0aGlzKTtcIj48aW1nIHNyYz1c
IiIgKyB0b2NBcnJvdyArICJcIiBhbHQ9XCJcIiAvPjxzcGFuIGNsYXNzPVwidG9j
VHh0XCI+IiArIHQgKyAiPC9zcGFuPjwvYT48dWwgY2xhc3M9XCJ0b2NMaW5lXCI+
PC91bD4iOw0KICAgIG4uY2hpbGROb2Rlc1swXS5zY3JvbGxOb2RlID0gSE5vZGU7
DQoNCiAgICBuLmRlcHRoID0gZGVwdGg7DQogICAgSE5vZGUudG9jRWxlbWVudCA9
IG47DQoNCiAgICByZXR1cm4gbjsNCn0NCg0KZnVuY3Rpb24gZmluZFBhcmVudFRP
Q05vZGUoKSB7DQogICAgdmFyIGggPSBrYkhlYWRpbmdzOw0KICAgIHZhciBkID0g
aFtoLmxlbmd0aCAtIDFdLnRvY0VsZW1lbnQuZGVwdGg7DQogICAgZm9yICh2YXIg
aiA9IGgubGVuZ3RoIC0gMjsgaiA+IC0xOyBqLS0pIHsNCiAgICAgICAgdmFyIGpk
ID0gaFtqXS50b2NFbGVtZW50LmRlcHRoOw0KICAgICAgICBpZiAoamQgPCBkKSBy
ZXR1cm4gaFtqXTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGVuZm9yY2VIZWFkaW5n
TWF4aW11bXMocCkgew0KICAgIGlmIChwLnRvY0VsZW1lbnQuZGVwdGggKyAxID4g
Mikgew0KICAgICAgICBldmFsKCJ2YXIgbWF4ID0gZGVwdGgiICsgKHAudG9jRWxl
bWVudC5kZXB0aCArIDEpICsgIkxpbWl0Iik7DQogICAgICAgIHZhciBsID0gcC50
b2NFbGVtZW50LmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlcy5sZW5ndGg7DQogICAg
ICAgIGlmIChsID4gbWF4KSB7DQogICAgICAgICAgICBwLnRvY0VsZW1lbnQuY2hp
bGROb2Rlc1sxXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAg
dG9jTGlua0NvdW50IC09IGw7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCnZhciBr
Yml0ZW1hcnIgPSBbXTsNCnZhciBsb2FkVE9DTm9kZSA9IGZ1bmN0aW9uIChkZXB0
aCwgdHlwZSkgew0KICAgIHZhciBlID0gZ2V0TGF0ZXN0RWxlbWVudCgpOw0KDQog
ICAgdHJ5IHsNCiAgICAgICAgaWYgKCFzZWN0aW9uRmlsdGVyKSB7DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQogICAgY2F0Y2gg
KGV4KSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBpZiAo
cGFzc2VzVHlwZUZpbHRlcih0eXBlKSAmJiBkZXB0aCA8PSBkZXB0aExpbWl0KSB7
DQogICAgICAgIGtiSGVhZGluZ3MucHVzaChlKTsNCiAgICAgICAgdmFyIGMgPSBt
YWtlVE9DTm9kZShlLCBkZXB0aCk7DQogICAgICAgIHZhciBwID0gZmluZFBhcmVu
dFRPQ05vZGUoKTsNCg0KICAgICAgICBpZiAocCkgew0KICAgICAgICAgICAgaWYg
KHAudG9jRWxlbWVudC5jaGlsZE5vZGVzWzFdLnN0eWxlLmRpc3BsYXkgIT0gJ25v
bmUnKSB7DQogICAgICAgICAgICAgICAgcC50b2NFbGVtZW50LmNoaWxkTm9kZXNb
MV0uYXBwZW5kQ2hpbGQoYyk7DQogICAgICAgICAgICAgICAgZW5mb3JjZUhlYWRp
bmdNYXhpbXVtcyhwKTsNCiAgICAgICAgICAgICAgICB0b2NMaW5rQ291bnQrKzsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGti
aXRlbWFyci5wdXNoKGMpOw0KICAgICAgICAgICAgdG9jTGlua0NvdW50Kys7DQog
ICAgICAgIH0NCiAgICB9DQp9DQoNCnZhciBzdWJTZWN0aW9uTG9hZCA9IGZ1bmN0
aW9uICgpIHsNCiAgICB2YXIgZXhwYW5kU2VjdGlvbkxpc3QgPSAkKCIuc3ViU2Vj
dGlvbiYuaGVhZEV4cGFuZCIpOw0KICAgIHZhciBjb2xsYXBzZVNlY3Rpb25MaXN0
ID0gJCgiLnN1YlNlY3Rpb24mLmhlYWRDb2xsYXBzZSIpOw0KICAgIGNvbGxhcHNl
U2VjdGlvbkxpc3QuYWRkQ2xhc3MoIm5vdFNob3ciKTsNCiAgICB2YXIgaGVhZGVy
Ow0KICAgIGV4cGFuZFNlY3Rpb25MaXN0LmVhY2goZnVuY3Rpb24gKCkgew0KICAg
ICAgICBoZWFkZXIgPSAkKHRoaXMpLnByZXZBbGwoImgzLGg0LGg1LGIiKS5maXJz
dCgpOw0KICAgICAgICBpZiAoaGVhZGVyLmxlbmd0aCkgew0KICAgICAgICAgICAg
JChoZWFkZXIpLmFkZENsYXNzKCJzdWJTZWN0aW9uSGVhZCIpOw0KICAgICAgICAg
ICAgJChoZWFkZXIpLmFkZENsYXNzKCJoZWFkRXhwYW5kIik7DQogICAgICAgICAg
ICAkKGhlYWRlcikudG9nZ2xlKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAg
ICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJoZWFkRXhwYW5kIik7DQogICAgICAgICAg
ICAgICAgJCh0aGlzKS5hZGRDbGFzcygiaGVhZENvbGxhcHNlIik7DQogICAgICAg
ICAgICAgICAgJCh0aGlzKS5uZXh0QWxsKCIuc3ViU2VjdGlvbjpmaXJzdCIpLmNz
cygiZGlzcGxheSIsICJub25lIik7DQogICAgICAgICAgICB9LCBmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygiaGVhZENv
bGxhcHNlIik7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygiaGVh
ZEV4cGFuZCIpOw0KICAgICAgICAgICAgICAgICQodGhpcykubmV4dEFsbCgiLnN1
YlNlY3Rpb246Zmlyc3QiKS5jc3MoImRpc3BsYXkiLCAiYmxvY2siKTsNCiAgICAg
ICAgICAgIH0pOw0KICAgICAgICB9DQogICAgfSk7DQogICAgY29sbGFwc2VTZWN0
aW9uTGlzdC5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaGVhZGVyID0gJCh0
aGlzKS5wcmV2QWxsKCJoMyxoNCxoNSxiIikuZmlyc3QoKTsNCiAgICAgICAgaWYg
KGhlYWRlci5sZW5ndGgpIHsNCiAgICAgICAgICAgICQoaGVhZGVyKS5hZGRDbGFz
cygic3ViU2VjdGlvbkhlYWQiKTsNCiAgICAgICAgICAgICQoaGVhZGVyKS5hZGRD
bGFzcygiaGVhZENvbGxhcHNlIik7DQogICAgICAgICAgICAkKGhlYWRlcikudG9n
Z2xlKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92
ZUNsYXNzKCJoZWFkQ29sbGFwc2UiKTsNCiAgICAgICAgICAgICAgICAkKHRoaXMp
LmFkZENsYXNzKCJoZWFkRXhwYW5kIik7DQogICAgICAgICAgICAgICAgJCh0aGlz
KS5uZXh0QWxsKCIuc3ViU2VjdGlvbjpmaXJzdCIpLmNzcygiZGlzcGxheSIsICJi
bG9jayIpOw0KICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoImhlYWRFeHBhbmQiKTsNCiAgICAg
ICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCJoZWFkQ29sbGFwc2UiKTsNCiAg
ICAgICAgICAgICAgICAkKHRoaXMpLm5leHRBbGwoIi5zdWJTZWN0aW9uOmZpcnN0
IikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsNCiAgICAgICAgICAgIH0pOw0KICAg
ICAgICB9DQogICAgfSk7DQp9DQoNCnZhciBrYl90b2NMb2FkID0gZnVuY3Rpb24g
KCkgew0KICAgIHZhciBrYlRPQ2RpdiA9ICQoIiN0b2NEaXYiKS5nZXQoMCk7DQog
ICAgaWYgKCFrYlRPQ2Rpdikgew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
fQ0KDQogICAgdmFyIGtiVE9DID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwn
KTsNCiAgICBrYlRPQ2Rpdi5hcHBlbmRDaGlsZChrYlRPQyk7DQoNCiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGtiaXRlbWFyci5sZW5ndGg7IGkrKykgew0KICAgICAg
ICBrYlRPQy5hcHBlbmRDaGlsZChrYml0ZW1hcnJbaV0pOw0KICAgIH0NCg0KICAg
IGlmICh0b2NMaW5rQ291bnQgPD0gdG9jRW50cnlNaW5pbXVtKSB7DQogICAgICAg
ICQoa2JUT0MpLmFkZENsYXNzKCJrYl90YWJzX3RvZ2dsZV9jbG9zZWQiKTsNCiAg
ICB9DQp9DQprYl9BZGRFdmVudCh3aW5kb3csICdsb2FkJywga2JfdG9jTG9hZCk7
DQoNCmZ1bmN0aW9uIGdldExhdGVzdEVsZW1lbnQoKSB7DQogICAgdmFyIGUgPSBk
b2N1bWVudC5ib2R5Ow0KICAgIHdoaWxlIChlLmxhc3RDaGlsZCkgZSA9IGUubGFz
dENoaWxkOw0KICAgIHdoaWxlICghZS50YWdOYW1lKSBlID0gZS5wYXJlbnROb2Rl
Ow0KICAgIHJldHVybiBlLnByZXZpb3VzU2libGluZzsNCn0NCi8qIEVORCBLQiBU
T0MgKi8NCg0KLypLQiBMaWdodCBCb3gqLw0Ka2JfQWRkRXZlbnQod2luZG93LCAn
bG9hZCcsIGtiX2xpZ2h0Qm94TG9hZCk7DQpmdW5jdGlvbiBrYl9saWdodEJveExv
YWQoKSB7DQogICAgdmFyIGxiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxi
Iik7DQogICAgaWYgKCFsYikgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAg
IC8vZG9uJ3QgcG9wLXVwIGxpZ2h0IGJveCB3aGVuIGZyPTENCiAgICB2YXIgYXJy
ID0gbG9jYXRpb24uc2VhcmNoLm1hdGNoKG5ldyBSZWdFeHAoIltcP1wmXWZyPTEo
XCY/KSIsICJpIikpOw0KICAgIGlmIChhcnIgIT0gbnVsbCkgew0KICAgICAgICBy
ZXR1cm47DQogICAgfQ0KICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsNCiAgICBk
b2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgic2Nyb2xsIiwgIm5vIik7DQogICAg
JCgiaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiaGlkZGVuIik7DQogICAgLy9nZXQg
Y2xpZW50IHdpZHRoIGFuZCBoZWlnaHQuDQogICAgdmFyIGNXaWR0aCA9IGRvY3Vt
ZW50LmJvZHkuY2xpZW50V2lkdGg7DQogICAgdmFyIGNIZWlnaHQgPSBkb2N1bWVu
dC5ib2R5LmNsaWVudEhlaWdodCAtIDE7DQoNCiAgICBpZiAoJC5icm93c2VyLm1z
aWUpIHsNCiAgICAgICAgdmFyIGlzSUU2ID0gJC5icm93c2VyLm1zaWUgJiYgL01T
SUUgNi4wLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOw0KICAgICAgICAvL0lF
NiBuZWVkIGFuIGlmcmFtZSB0byBmaXggdGhlIHNlbGVjdCBlbGVtZW50IHByb21i
bGVtDQogICAgICAgIGlmIChpc0lFNikgew0KICAgICAgICAgICAgLy8gSUUgaXNz
dWVzOiAnYWJvdXQ6YmxhbmsnIGZhaWxzIG9uIEhUVFBTIGFuZCBqYXZhc2NyaXB0
OmZhbHNlIGlzIHMtbC1vLXcNCiAgICAgICAgICAgIGlmcmFtZVNyYyA9IC9eaHR0
cHMvaS50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmIHx8ICcnKSA/ICdqYXZhc2Ny
aXB0OmZhbHNlJyA6ICdhYm91dDpibGFuayc7DQogICAgICAgICAgICB2YXIgZnJh
bWVPYmogPSAkKCc8aWZyYW1lIGlkPSJNYXNrRnJhbWUiIHN0eWxlPSJ6LWluZGV4
OjE4OTk7ZGlzcGxheTpibG9jaztib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5n
OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowIiBzcmM9IicgKyBpZnJh
bWVTcmMgKyAnIj48L2lmcmFtZT4nKTsNCiAgICAgICAgICAgIGZyYW1lT2JqLmNz
cygnb3BhY2l0eScsIDAuMCk7DQogICAgICAgICAgICBmcmFtZU9iai5jc3MoJ3dp
ZHRoJywgY1dpZHRoKTsNCiAgICAgICAgICAgIGZyYW1lT2JqLmNzcygnaGVpZ2h0
JywgY0hlaWdodCk7DQogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZyYW1lT2JqWzBdKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZhciBt
YXNrT2JqID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgbWFz
a09iai5zZXRBdHRyaWJ1dGUoJ2lkJywgJ0JpZ0RpdicpOw0KICAgIG1hc2tPYmou
Y2xhc3NOYW1lID0gIk1hc2tEaXYiOw0KICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQobWFza09iaik7DQoNCiAgICBTZXRMaWdodEJveFBvc2l0aW9uKCk7DQog
ICAgbGIuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChsYik7DQoNCiAgICBwYWdlQmxvY2tFbHMgPSAkKCc6aW5w
dXQ6ZW5hYmxlZDp2aXNpYmxlJywgbGIpLmFkZCgnI2xiIGE6ZW5hYmxlZDp2aXNp
YmxlJyk7DQogICAgQmluZExCRXZlbnQodHJ1ZSk7DQogICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAvL2FkZCB0
cnkgY2F0Y2ggdG8gYXZvaWQgdGhlIGpzIGVycm9yIChidWdzLmpxdWVyeS5jb20v
dGlja2V0LzEwODU5KQ0KICAgICAgICAgICAgJCgiI2xiQnRuIikuZm9jdXMoKTsN
CiAgICAgICAgfSBjYXRjaCAoZSkgew0KICAgICAgICB9DQogICAgfSwgNTApOw0K
ICAgIC8vYXMgc29tZSBicm93c2VycyB3aWxsIHJldHVybiB0byBwcmV2aW91cyBw
YWdlIGFuZCBzY3JvbGwgdG8gdGhlIHBlcnRpY3VsYXIgcG9zaXRpb24gd2hlcmUg
dGhlIHVzZXIgd2VyZSBiZWZvcmUgd2hlbiB1c2VyIGNsaWNrcyBCYWNrIGJ1dHRv
bg0KICAgIHdpbmRvdy5vbnNjcm9sbCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
aWYgKGxiLnN0eWxlLmRpc3BsYXkgPT0gJ2Jsb2NrJykgew0KICAgICAgICAgICAg
d2luZG93LnNjcm9sbFRvKDAsIDApOw0KICAgICAgICB9DQogICAgfQ0KfQ0KdmFy
IHBhZ2VCbG9ja0VsczsNCmZ1bmN0aW9uIEJpbmRMQkV2ZW50KGlzQmluZCkgew0K
ICAgIHZhciBldmVudHMgPSAna2V5ZG93biBrZXlwcmVzcyc7DQogICAgaWYgKGlz
QmluZCkgew0KICAgICAgICAkKHdpbmRvdykuYmluZCgncmVzaXplLkxCJywgUmVz
aXplTEJNYXNrTGF5ZXIpOw0KICAgICAgICAkKHdpbmRvdykuYmluZCgncmVzaXpl
LkxCJywgU2V0TGlnaHRCb3hQb3NpdGlvbik7DQogICAgICAgICQoZG9jdW1lbnQp
LmJpbmQoZXZlbnRzLCBMQktleUhhbmRsZXIpOw0KICAgIH0NCiAgICBlbHNlIHsN
CiAgICAgICAgJCh3aW5kb3cpLnVuYmluZCgncmVzaXplLkxCJyk7DQogICAgICAg
ICQoZG9jdW1lbnQpLnVuYmluZChldmVudHMsIExCS2V5SGFuZGxlcik7DQogICAg
fQ0KfQ0KDQpmdW5jdGlvbiBMQktleUhhbmRsZXIoZSkgew0KICAgIGlmIChlLmtl
eUNvZGUgJiYgZS5rZXlDb2RlID09IDkpIHsNCiAgICAgICAgaWYgKCQoZS50YXJn
ZXQpLnBhcmVudHMoJyNsYicpLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICBm
b2N1cygpOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQog
ICAgICAgIHZhciBlbHMgPSBwYWdlQmxvY2tFbHM7DQoNCiAgICAgICAgdmFyIGZ3
ZCA9ICFlLnNoaWZ0S2V5ICYmIGUudGFyZ2V0ID09IGVsc1tlbHMubGVuZ3RoIC0g
MV07DQogICAgICAgIHZhciBiYWNrID0gZS5zaGlmdEtleSAmJiBlLnRhcmdldCA9
PSBlbHNbMF07DQogICAgICAgIGlmIChmd2QgfHwgYmFjaykgew0KICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGZvY3VzKGJhY2spIH0sIDEwKTsN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICByZXR1cm4gdHJ1ZTsNCn0NCmZ1bmN0aW9uIGZvY3VzKGJhY2spIHsNCiAgICBp
ZiAoIXBhZ2VCbG9ja0VscykNCiAgICAgICAgcmV0dXJuOw0KICAgIHZhciBlID0g
cGFnZUJsb2NrRWxzW2JhY2sgPT09IHRydWUgPyBwYWdlQmxvY2tFbHMubGVuZ3Ro
IC0gMSA6IDBdOw0KICAgIGlmIChlKQ0KICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgZS5mb2N1cygpOw0KICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgIH0N
Cn0NCg0KOw0KDQpmdW5jdGlvbiBTZXRMaWdodEJveFBvc2l0aW9uKCkgew0KDQog
ICAgdmFyIGxiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxiIik7DQogICAg
aWYgKCFsYikNCiAgICAgICAgcmV0dXJuOw0KICAgIHZhciBsYldpZHRoID0gJChs
Yikud2lkdGgoKTsNCiAgICB2YXIgbGJIZWlnaHQgPSAkKGxiKS5oZWlnaHQoKTsN
Cg0KICAgIGxiV2lkdGggPSBwYXJzZUludChsYldpZHRoKTsNCiAgICBsYkhlaWdo
dCA9IHBhcnNlSW50KGxiSGVpZ2h0KTsNCg0KICAgIHZhciB3aWR0aCA9IHBhZ2VX
aWR0aCgpOw0KICAgIHZhciBoZWlnaHQgPSBwYWdlSGVpZ2h0KCk7DQoNCiAgICB2
YXIgbGJUb3BQb3NpdGlvbiwgbGJMZWZ0UG9zaXRpb247DQogICAgbGJUb3BQb3Np
dGlvbiA9IChoZWlnaHQgLyAyKSAtIChsYkhlaWdodCAvIDIpOw0KICAgIGxiTGVm
dFBvc2l0aW9uID0gKHdpZHRoIC8gMikgLSAobGJXaWR0aCAvIDIpOw0KICAgIGxi
LnN0eWxlLmxlZnQgPSBsYkxlZnRQb3NpdGlvbiArICJweCI7DQogICAgbGIuc3R5
bGUudG9wID0gbGJUb3BQb3NpdGlvbiArICJweCI7DQp9DQoNCmZ1bmN0aW9uIFJl
c2l6ZUxCTWFza0xheWVyKCkgew0KDQogICAgdmFyIGNXaWR0aCA9IGRvY3VtZW50
LmJvZHkuY2xpZW50V2lkdGg7DQogICAgdmFyIGNIZWlnaHQgPSBkb2N1bWVudC5i
b2R5LmNsaWVudEhlaWdodCAtIDE7DQoNCiAgICAvL2ZvciBpZTYgb25seQ0KICAg
IHZhciBmcmFtZU9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNYXNrRnJh
bWUiKTsNCiAgICBpZiAoZnJhbWVPYmogIT0gbnVsbCkgew0KICAgICAgICBmcmFt
ZU9iai5zdHlsZS53aWR0aCA9IGNXaWR0aDsNCiAgICAgICAgZnJhbWVPYmouc3R5
bGUuaGVpZ2h0ID0gY0hlaWdodDsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHBhZ2VX
aWR0aCgpIHsNCiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggIT0gbnVsbCA/
IHdpbmRvdy5pbm5lcldpZHRoIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYm
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA/IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA6IGRvY3VtZW50LmJvZHkgIT0g
bnVsbCA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiBudWxsOw0KfQ0KDQpm
dW5jdGlvbiBwYWdlSGVpZ2h0KCkgew0KICAgIHJldHVybiB3aW5kb3cuaW5uZXJI
ZWlnaHQgIT0gbnVsbCA/IHdpbmRvdy5pbm5lckhlaWdodCA6IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50
SGVpZ2h0ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA6
IGRvY3VtZW50LmJvZHkgIT0gbnVsbCA/IGRvY3VtZW50LmJvZHkuY2xpZW50SGVp
Z2h0IDogbnVsbDsNCn0NCg0KZnVuY3Rpb24gQ2xvc2VMaWdodEJveChvYmopIHsN
CiAgICBpZiAob2JqKQ0KICAgICAgICBTdGF0c0RvdE5ldC5mbGV4VmFsdWU5ID0g
b2JqLmlkOw0KICAgIFN0YXRzRG90TmV0LkFkZEFjdGl2ZVRpbWUobmV3IERhdGUo
KSk7DQogICAgU3RhdHNEb3ROZXQuRm9jdXNIYW5kbGVyKCk7DQogICAgU3RhdHNE
b3ROZXQuZmxleFZhbHVlNiA9IDA7DQogICAgU3RhdHNEb3ROZXQubGlnaHRib3hD
bG9zZVRpbWUgPSBuZXcgRGF0ZSgpOw0KICAgIHZhciBsaWdodEJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsYiIpOw0KICAgIGxpZ2h0Qm94LnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7DQogICAgdmFyIG1hc2tPYmogPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiQmlnRGl2Iik7DQogICAgbWFza09iai5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOw0KDQogICAgdmFyIGZyYW1lT2JqID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIk1hc2tGcmFtZSIpOw0KICAgIGlmIChmcmFtZU9iaiAhPSBudWxs
KSB7DQogICAgICAgIGZyYW1lT2JqLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQog
ICAgfQ0KDQogICAgZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoInNjcm9s
bCIpOw0KICAgICQoImh0bWwiKS5jc3MoIm92ZXJmbG93IiwgIiIpOw0KDQoNCiAg
ICAvL3JlbW92ZSBldmVudHMgb2YgbGlnaHQgYm94IA0KICAgIEJpbmRMQkV2ZW50
KGZhbHNlKQ0KDQp9DQoNCmZ1bmN0aW9uIHNhdmVTZXNzaW9uMkNvb2tpZSgpIHsN
CiAgICB2YXIgZ3NmeGNvb2tpZSA9IGZldGNoY29va2lldmFsKCJHc2Z4U2Vzc2lv
bkNvb2tpZSIpOw0KICAgIHZhciBtYXRzcnVuX3Nlc3Npb25pZCA9IGdzZnhjb29r
aWUgKyAiXyIgKyBTdGF0c0RvdE5ldC5ldmVudFNlcU5vICsgIl9MQl8xIjsgLy9h
cHBlbmQgMSBhcyB0aGUgQnV0dG9uQ2xpY2tObyB0byBrZWVwIHRoZSBjb25zaXN0
ZW5jZSBvZiBmb3JtYXQNCiAgICBzZXRjb29raWV2YWwoIm1hdHNydW5fc2Vzc2lv
bmlkIiwgbWF0c3J1bl9zZXNzaW9uaWQsIG51bGwsIGZhbHNlKTsNCn0NCmZ1bmN0
aW9uIG1vZGlmeVJ1bk5vd0xpbmtIcmVmKGxpbmspIHsNCiAgICB2YXIgcXVlcnlJ
dGVtcyA9IHsgZW50cnlwb2ludGlkOiAiTEIiIH0sIHNlc3Npb25JZCA9IGZldGNo
Y29va2lldmFsKCJHc2Z4U2Vzc2lvbkNvb2tpZSIpOw0KDQogICAgaWYgKHNlc3Np
b25JZCAhPT0gbnVsbCkgew0KICAgICAgICAkLmV4dGVuZChxdWVyeUl0ZW1zLCB7
IGxvZ3Nlc3Npb25pZDogc2Vzc2lvbklkLCBldmVudHNlcW5vOiBTdGF0c0RvdE5l
dC5ldmVudFNlcU5vLCBidXR0b25jbGlja25vOiAxIH0pOw0KICAgIH0NCiAgICB2
YXIgbW9kaWZpZWRVcmkgPSBuZXcgR1NTLlV0aWxpdHkuVVJJKCQobGluaykuYXR0
cigiaHJlZiIpKTsNCiAgICBtb2RpZmllZFVyaS5tb2RpZnlRdWVyeUl0ZW1zKHF1
ZXJ5SXRlbXMpOw0KICAgICQobGluaykuYXR0cigiaHJlZiIsIG1vZGlmaWVkVXJp
LnRvU3RyaW5nKCkpOw0KfQ0KDQpmdW5jdGlvbiBMb2dQb3B1cExpbmsoaWQpIHsN
CiAgICBTdGF0c0RvdE5ldC5mbGV4VmFsdWU3IHw9IGlkOw0KfQ0KLypFTkQgS0Ig
TGlnaHQgQm94Ki8NCmZ1bmN0aW9uIEhpZGVTeXNUaXAoKSB7DQoNCiAgICB2YXIg
a2J3YXJuaW5nb2JqID0gJCgnI2tiX3dhcm5pbmdfZGl2aWRlcicpLmdldCgwKTsN
CiAgICBpZiAoIWtid2FybmluZ29iaikNCiAgICAgICAgcmV0dXJuOw0KICAgIGti
d2FybmluZ29iai5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KfQ0KDQp2YXIga2Jf
dGFidG9nZ2xlID0gZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgdmFyIGUgPSBrYlNy
Y0VsKGV2ZW50KTsNCiAgICB3aGlsZSAoZSAmJiBlLm5vZGVOYW1lICE9PSAnSDIn
KSB7DQogICAgICAgIGUgPSBlLnBhcmVudE5vZGU7DQogICAgfQ0KDQogICAgaWYg
KCFlKSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBrYl90
b2dnbGVjbGFzcyhlKTsNCg0KICAgIHZhciBwYXJlbCA9IGUucGFyZW50Tm9kZTsN
CiAgICB2YXIgbm9kZWZvdW5kID0gZmFsc2U7DQogICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXJlbC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGlm
IChwYXJlbC5jaGlsZE5vZGVzW2ldID09IGUpIHsNCiAgICAgICAgICAgIG5vZGVm
b3VuZCA9IHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAobm9kZWZvdW5k
KSB7DQogICAgICAgICAgICBpZiAocGFyZWwuY2hpbGROb2Rlc1tpXS5jbGFzc05h
bWUubWF0Y2goLyggP3xeKXNib2R5XGIvZ2kpKSB7DQogICAgICAgICAgICAgICAg
a2JfdG9nZ2xlY2xhc3MocGFyZWwuY2hpbGROb2Rlc1tpXSk7DQogICAgICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9
DQoNCmZ1bmN0aW9uIGtiX3RvZ2dsZWNsYXNzKGUpIHsNCiAgICBpZiAoZS5jbGFz
c05hbWUubWF0Y2goLyggP3xeKWtiX3RhYnNfdG9nZ2xlX29wZW5cYi9naSkpIHsN
CiAgICAgICAgZS5jbGFzc05hbWUgPSBqUXVlcnkudHJpbShlLmNsYXNzTmFtZS5y
ZXBsYWNlKC8oID98XilrYl90YWJzX3RvZ2dsZV9vcGVuXGIvZ2ksICcga2JfdGFi
c190b2dnbGVfY2xvc2VkJykpOw0KICAgIH0NCiAgICBlbHNlIGlmIChlLmNsYXNz
TmFtZS5tYXRjaCgvKCA/fF4pa2JfdGFic190b2dnbGVfY2xvc2VkXGIvZ2kpKSB7
DQogICAgICAgIGUuY2xhc3NOYW1lID0galF1ZXJ5LnRyaW0oZS5jbGFzc05hbWUu
cmVwbGFjZSgvKCA/fF4pa2JfdGFic190b2dnbGVfY2xvc2VkXGIvZ2ksICcga2Jf
dGFic190b2dnbGVfb3BlbicpKTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAg
IGUuY2xhc3NOYW1lICs9ICcga2JfdGFic190b2dnbGVfY2xvc2VkJzsNCiAgICB9
DQogICAgJCgkKGUpLmNoaWxkcmVuKCIua2JfdGFic190b2dnbGUiKSkuYXR0cigi
c3JjIiwgJChlKS5oYXNDbGFzcygia2JfdGFic190b2dnbGVfY2xvc2VkIikgPyBr
Yl90YWJzX3BsdXNpbWdzcmMgOiBrYl90YWJzX21pbnVzaW1nc3JjKTsNCiAgICBr
Yl9QcmV2ZW50QmxhbmtBcmVhSW5CdXR0b20oKTsNCn0NCg0KLy9GaXggYnVnIDEz
MTUxMTogVGhlcmUgd2lsbCBiZSBsb3RzIG9mIGJsYW5rIGFyZWEgdW5kZXIga2Ig
cGFnZSBib3R0b20gaWYgY29sbGFwc2luZyBhbGwgY29udGVudCBpbiBJRTkuDQov
L1RoZSByZWFzb24gaXMgdGhhdCB3ZSBhZGQgdGhlICJvdmVyZmxvdy15OnNjcm9s
bCIgaW4gImJvZHkiIGVsZW1lbnQsIHdoaWNoIGxlYWRzIHRvIGJlIGEgbG90IG9m
IGJsYW5rIGFyZWEgdW5kZXIgS0IgcGFnZSB3aGVuIGNvbGxhcHNpbmcgYWxsIGNv
bnRlbnQgaW4gSUU5DQovL1dlIGFkZCAib3ZlcmZsb3cteTpzY3JvbGwiIGluICJi
b2R5IiwgYmVjYXVzZSB3ZSB3YW50IHRvIGZpeCBidWcgNDczNTkgLS0gdGFiIGhv
cHBpbmcgaW4gUEggcGFnZS4NCmZ1bmN0aW9uIGtiX1ByZXZlbnRCbGFua0FyZWFJ
bkJ1dHRvbSgpIHsNCiAgICAkKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsICIiKTsN
Cn0NCg0KZnVuY3Rpb24gRXhwYW5kU2VjdGlvbihlKSB7DQogICAgaWYgKGUuY2xh
c3NOYW1lLm1hdGNoKC8oID98XilzdWJUaXRsZVxiL2dpKSAmJiBlLmNsYXNzTmFt
ZS5tYXRjaCgvKCA/fF4pa2JfdGFic190b2dnbGVfY2xvc2VkXGIvZ2kpKSB7DQog
ICAgICAgIGtiX3RvZ2dsZWNsYXNzKGUpOw0KICAgICAgICBrYl90b2dnbGVjbGFz
cyhlLm5leHRTaWJsaW5nLm5leHRTaWJsaW5nKTsNCiAgICAgICAgcmV0dXJuOw0K
ICAgIH0NCg0KICAgIGlmIChlLmlkID09ICd0b2NIZWFkUmVmJykgew0KICAgICAg
ICB2YXIgdCA9IHRydWU7DQogICAgICAgIHdoaWxlICh0KSB7DQogICAgICAgICAg
ICBlID0gZS5wYXJlbnROb2RlOw0KDQogICAgICAgICAgICBpZiAoZS5jbGFzc05h
bWUgJiYgZS5jbGFzc05hbWUubWF0Y2goL3Nib2R5XGIvZ2kpKSB7DQogICAgICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICQo
ZSkuc2hvdygpOw0KDQogICAgICAgICAgICBpZiAoIWUucGFyZW50Tm9kZSkgew0K
ICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIGlmIChlLmNsYXNzTmFtZS5tYXRjaCgvKCA/fF4pa2Jf
dGFic190b2dnbGVfY2xvc2VkXGIvZ2kpKSB7DQogICAgICAgIGtiX3RvZ2dsZWNs
YXNzKGUpOw0KICAgICAgICBrYl90b2dnbGVjbGFzcyhlLnByZXZpb3VzU2libGlu
Zy5wcmV2aW91c1NpYmxpbmcpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24ga2JfZ2V0
U2VjdGlvblByZXZpZXdUZXh0KGUpIHsNCiAgICB2YXIgdHh0ID0gIiI7DQogICAg
dmFyIHRtcG5vZGU7DQogICAgdmFyIHBhcmVsID0gZS5wYXJlbnROb2RlLnBhcmVu
dE5vZGU7DQogICAgdmFyIG5vZGVmb3VuZCA9IGZhbHNlOw0KICAgIHZhciBpc0lu
bmVyVGV4dCA9ICEoZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCk7DQoNCiAgICAv
LypOT1RFKiB0aGUgc3ludGF4IG1ha2VzIHRoZSBjb2xvcmluZyBmdW5reSBpbiBW
UywgYnV0IGl0IGlzIHZhbGlkIGFuZCBjb3JyZWN0LiAgICAgICAgICAgICAgICAN
CiAgICB2YXIgcmVnZXggPSAvKDxzY3JpcHR8PGRpdiBjbGFzcz0oJ3wiKT8odG9w
b2ZwYWdlfGtiX2dyYXBoaWN0b3B8a2JfdGFibGV0b3ApKS4qPyhcL2Rpdj58XC9z
Y3JpcHQ+KS9pZ207DQoNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmVsLmNo
aWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgaWYgKHBhcmVsLmNoaWxk
Tm9kZXNbaV0gPT0gZS5wYXJlbnROb2RlKSB7DQogICAgICAgICAgICBub2RlZm91
bmQgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKG5vZGVmb3VuZCkg
ew0KICAgICAgICAgICAgaWYgKHBhcmVsLmNoaWxkTm9kZXNbaV0uY2xhc3NOYW1l
Lm1hdGNoKC8oID98XilzYm9keVxiL2dpKSkgew0KICAgICAgICAgICAgICAgIGlm
IChwYXJlbC5jaGlsZE5vZGVzW2ldLmlkID09ICJ0b2NEaXYiKSB7DQogICAgICAg
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgICAgICB0bXBub2RlID0gcGFyZWwuY2hpbGROb2Rlc1tpXS5jbG9uZU5v
ZGUodHJ1ZSk7DQoNCiAgICAgICAgICAgICAgICAvL3JlZ3VsYXIgZXhwcmVzc2lv
biB0byByZXBsYWNlIFx0IFxuIGFuZCBleHRyYSBzcGFjZSB3aXRoaW4gdGhlIHRl
eHQNCiAgICAgICAgICAgICAgICB0bXBub2RlLmlubmVySFRNTCA9IHRtcG5vZGUu
aW5uZXJIVE1MLnJlcGxhY2UoL1xzKy9nLCAnICcpOw0KDQogICAgICAgICAgICAg
ICAgLy9yZXBsYWNlIHRvcCBvZiBwYWdlIGxpbmssIGFuZCBncmFwaGljIGFuZCB0
YWJsZSBpdGVtcw0KICAgICAgICAgICAgICAgIHRtcG5vZGUuaW5uZXJIVE1MID0g
dG1wbm9kZS5pbm5lckhUTUwucmVwbGFjZShyZWdleCwgJyAnKTsNCg0KICAgICAg
ICAgICAgICAgIC8vcmVtb3ZlIGFsbCBodG1sIHRhZ3MNCiAgICAgICAgICAgICAg
ICB0bXBub2RlLmlubmVySFRNTCA9IHRtcG5vZGUuaW5uZXJIVE1MLnJlcGxhY2Uo
LzxbXj5dKj4vZywgJycpOw0KDQogICAgICAgICAgICAgICAgaWYgKHRtcG5vZGUu
aW5uZXJUZXh0KSB7DQogICAgICAgICAgICAgICAgICAgIHR4dCA9IGpRdWVyeS50
cmltKHRtcG5vZGUuaW5uZXJUZXh0LnN1YnN0cmluZygwLCA4MCkpOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmICh0bXBub2RlLnRl
eHRDb250ZW50KSB7DQogICAgICAgICAgICAgICAgICAgIHR4dCA9IGpRdWVyeS50
cmltKHRtcG5vZGUudGV4dENvbnRlbnQuc3Vic3RyaW5nKDAsIDgwKSk7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAg
ICAgICAgICAgICB0eHQgPSBqUXVlcnkudHJpbSh0bXBub2RlLmlubmVySFRNTC5z
dWJzdHJpbmcoMCwgODApKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAg
ICAgICAgICBpZiAodHh0ICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICh0eHQubGVuZ3RoID4gNjApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHR4
dCA9IHR4dCArICIuLi4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoaXNJbm5lclRleHQpIHsN
CiAgICAgICAgZS5pbm5lclRleHQgPSB0eHQ7DQogICAgfQ0KICAgIGVsc2Ugew0K
ICAgICAgICBlLnRleHRDb250ZW50ID0gdHh0Ow0KICAgIH0NCn0NCg0KdmFyIGti
X0V4cGFuZENvbGxhcHNlYWxsID0gZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgdmFy
IGUgPSBrYlNyY0VsKGV2ZW50KTsNCg0KICAgIGlmICghZSkgew0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgdmFyIHNlY3Rpb24gPSAkKCcja2Jf
c2VjdGlvbicpLmdldCgwKTsNCg0KICAgIGlmICghc2VjdGlvbikgew0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIGtic2VjdGlvbl9Db2xsYXBzZUV4
cGFuZChlLCBzZWN0aW9uKTsNCg0KICAgIGlmICgkKCIua2JTdXJ2ZXkiKS5sZW5n
dGgpIHsNCiAgICAgICAga2JzZWN0aW9uX0NvbGxhcHNlRXhwYW5kKGUsICQoIi5r
YlN1cnZleSIpLmdldCgwKSk7DQogICAgfQ0KICAgIGtiX1ByZXZlbnRCbGFua0Fy
ZWFJbkJ1dHRvbSgpOw0KfQ0KDQpmdW5jdGlvbiBrYnNlY3Rpb25fQ29sbGFwc2VF
eHBhbmQoZSwgc2VjdGlvbikgew0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vj
dGlvbi5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHZhciBib29s
MSwgYm9vbDIsIGJvb2wzOw0KICAgICAgICBib29sMSA9IHNlY3Rpb24uY2hpbGRO
b2Rlc1tpXS5jbGFzc05hbWUubWF0Y2goLyggP3xeKXN1YlRpdGxlXGIvZ2kpOw0K
ICAgICAgICBib29sMiA9IHNlY3Rpb24uY2hpbGROb2Rlc1tpXS5jbGFzc05hbWUu
bWF0Y2goLyggP3xeKXNib2R5XGIvZ2kpOw0KICAgICAgICBib29sMyA9IHNlY3Rp
b24uY2hpbGROb2Rlc1tpXS5jbGFzc05hbWUubWF0Y2goLyggP3xeKW5vcm9sbHVw
XGIvZ2kpOw0KDQogICAgICAgIGlmICgoYm9vbDEgfHwgYm9vbDIpICYmICFib29s
Mykgew0KICAgICAgICAgICAgaWYgKGUuY2xhc3NOYW1lLm1hdGNoKC8oID98Xill
eHBhbmRhbGx0ZXh0XGIvZ2kpKSB7DQogICAgICAgICAgICAgICAga2JfRXhwYW5k
YWxsKHNlY3Rpb24uY2hpbGROb2Rlc1tpXSk7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlbHNlIGlmIChlLmNsYXNzTmFtZS5tYXRjaCgvKCA/fF4pY29sbGFw
c2VhbGx0ZXh0XGIvZ2kpKSB7DQogICAgICAgICAgICAgICAga2JfQ29sbGFwc2Vh
bGwoc2VjdGlvbi5jaGlsZE5vZGVzW2ldKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH0NCg0KfQ0KDQpmdW5jdGlvbiBrYl9Db2xsYXBzZWFsbChlKSB7
DQogICAgaWYgKGUuY2xhc3NOYW1lLm1hdGNoKC8oID98XilrYl90YWJzX3RvZ2ds
ZV9vcGVuXGIvZ2kpKSB7DQogICAgICAgIGUuY2xhc3NOYW1lID0galF1ZXJ5LnRy
aW0oZS5jbGFzc05hbWUucmVwbGFjZSgvKCA/fF4pa2JfdGFic190b2dnbGVfb3Bl
blxiL2dpLCAnIGtiX3RhYnNfdG9nZ2xlX2Nsb3NlZCcpKTsNCiAgICB9DQogICAg
ZWxzZSB7DQogICAgICAgIGUuY2xhc3NOYW1lICs9ICcga2JfdGFic190b2dnbGVf
Y2xvc2VkJzsNCiAgICB9DQogICAgJCgkKGUpLmNoaWxkcmVuKCIua2JfdGFic190
b2dnbGUiKSkuYXR0cigic3JjIiwga2JfdGFic19wbHVzaW1nc3JjKTsNCn0NCg0K
ZnVuY3Rpb24ga2JfRXhwYW5kYWxsKGUpIHsNCiAgICBpZiAoZS5jbGFzc05hbWUu
bWF0Y2goLyggP3xeKWtiX3RhYnNfdG9nZ2xlX2Nsb3NlZFxiL2dpKSkgew0KICAg
ICAgICBlLmNsYXNzTmFtZSA9IGpRdWVyeS50cmltKGUuY2xhc3NOYW1lLnJlcGxh
Y2UoLyggP3xeKWtiX3RhYnNfdG9nZ2xlX2Nsb3NlZFxiL2dpLCAnIGtiX3RhYnNf
dG9nZ2xlX29wZW4nKSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBlLmNs
YXNzTmFtZSArPSAnIGtiX3RhYnNfdG9nZ2xlX29wZW4nOw0KICAgIH0NCiAgICAk
KCQoZSkuY2hpbGRyZW4oIi5rYl90YWJzX3RvZ2dsZSIpKS5hdHRyKCJzcmMiLCBr
Yl90YWJzX21pbnVzaW1nc3JjKTsNCn0NCg0KdmFyIGtiX3BhZ2Vfb2JqZWN0ID0g
bmV3IGtiX29iamVjdCgpOw0KdmFyIGtiX29ubG9hZCA9IGZ1bmN0aW9uICgpIHsN
CiAgICB2YXIga2JzZWN0aW9uID0gJCgnI2tiJykuZ2V0KDApOw0KICAgIGlmICgh
a2JzZWN0aW9uKSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAg
ICB2YXIgaDJzID0gJCgnI2tiIGgyJyk7DQogICAgJC5tZXJnZShoMnMsICQoIi5r
YlN1cnZleSBoMi5zdWJUaXRsZSIpKTsNCg0KICAgIHZhciBrYnRvZ2dsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOw0KICAgIGtidG9nZ2xlLnNyYyA9
IGtiX3RhYnNfbWludXNpbWdzcmM7DQogICAga2J0b2dnbGUuY2xhc3NOYW1lID0g
J2tiX3RhYnNfdG9nZ2xlIGtiX3RhYnNfdG9nZ2xlX29wZW4nOw0KDQogICAgdmFy
IHNob3dleHBhbmRjb2xsYXBzZWFsbCA9IGZhbHNlOw0KICAgIHZhciBoMmxpbms7
DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoMnMubGVuZ3RoOyBpKyspIHsNCiAg
ICAgICAgaWYgKGgyc1tpXS5jbGFzc05hbWUubWF0Y2goLyggP3xeKXN1YlRpdGxl
XGIvZ2kpKSB7DQoNCiAgICAgICAgICAgIGgybGluayA9IGgyc1tpXS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnYScpOw0KDQogICAgICAgICAgICBrYl9BZGRFdmVudCho
MnNbaV0sICdjbGljaycsIGtiX3RhYnRvZ2dsZSk7DQoNCiAgICAgICAgICAgIGgy
c1tpXS5pbnNlcnRCZWZvcmUoa2J0b2dnbGUuY2xvbmVOb2RlKHRydWUpLCBoMnNb
aV0uY2hpbGROb2Rlc1swXSk7DQoNCiAgICAgICAgICAgIHNob3dleHBhbmRjb2xs
YXBzZWFsbCA9IHRydWU7DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIHZhciBl
eHBhbmQgPSAkKCcja2JfZXhwYW5kY29sbGFwc2VhbGwnKS5nZXQoMCk7DQogICAg
aWYgKGV4cGFuZCAmJiBzaG93ZXhwYW5kY29sbGFwc2VhbGwpIHsNCiAgICAgICAg
ZXhwYW5kLmNsYXNzTmFtZSA9IGpRdWVyeS50cmltKGV4cGFuZC5jbGFzc05hbWUu
cmVwbGFjZSgvKCA/fF4pZXhwYW5kY29sbGFwc2VhbGxcYi9naSwgJ2V4cGFuZGNv
bGxhcHNlYWxsX29wZW4nKSk7DQogICAgICAgIGtiX0FkZEV2ZW50KGV4cGFuZC5j
aGlsZE5vZGVzWzBdLCAnY2xpY2snLCBrYl9FeHBhbmRDb2xsYXBzZWFsbCk7DQog
ICAgICAgIGtiX0FkZEV2ZW50KGV4cGFuZC5jaGlsZE5vZGVzWzJdLCAnY2xpY2sn
LCBrYl9FeHBhbmRDb2xsYXBzZWFsbCk7DQogICAgfQ0KDQogICAga2JfcGFnZV9v
YmplY3Quc3RhcnQoa2JzZWN0aW9uKTsNCiAgICBzdWJTZWN0aW9uTG9hZCgpOw0K
fTsNCmtiX0FkZEV2ZW50KHdpbmRvdywgJ2xvYWQnLCBrYl9vbmxvYWQpOw0KDQpm
dW5jdGlvbiBUb2dnbGVBcHBsaWVzVG8oKSB7DQogICAgdmFyIHRvZ2dsZSA9ICQo
ImRpdi5hcHBsaWVzVG8gPiBoNSA+IGEiKTsNCiAgICBpZiAodG9nZ2xlLmF0dHIo
ImNsYXNzIikgPT0gJ2tiX2FwcGxpZXNUb190b2dnbGUga2JfYXBwbGllc1RvX3Rv
Z2dsZV9vcGVuZWQnKSB7DQogICAgICAgIENvbGxhcHNlQXBwbGllc1RvTGlzdCgp
Ow0KICAgICAgICB0b2dnbGUuYXR0cigiY2xhc3MiLCAia2JfYXBwbGllc1RvX3Rv
Z2dsZSBrYl9hcHBsaWVzVG9fdG9nZ2xlX2Nsb3NlZCIpOw0KICAgIH0NCiAgICBl
bHNlIHsNCiAgICAgICAgRXhwYW5kQXBwbGllc1RvTGlzdCgpOw0KICAgICAgICB0
b2dnbGUuYXR0cigiY2xhc3MiLCAia2JfYXBwbGllc1RvX3RvZ2dsZSBrYl9hcHBs
aWVzVG9fdG9nZ2xlX29wZW5lZCIpOw0KICAgIH0NCiAgICBNU19IYW5kbGVDbGlj
ayh0b2dnbGUuZ2V0KDApLCAnMjAxMDEwMTUnLCB0cnVlKTsNCn0NCmZ1bmN0aW9u
IEV4cGFuZEFwcGxpZXNUb0xpc3QoKSB7DQogICAgJCgiZGl2LmFwcGxpZXNUbyA+
IHVsIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7DQp9DQpmdW5jdGlvbiBDb2xs
YXBzZUFwcGxpZXNUb0xpc3QoKSB7DQogICAgJCgiZGl2LmFwcGxpZXNUbyA+IHVs
IikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsNCn0NCg0KZnVuY3Rpb24gS0JGZWVk
QmFja0Rpc3BsYXkoKSB7DQogICAgS0JGZWVkQmFja1Nob3dTdXJ2ZXkoKTsNCiAg
ICBpZiAodHlwZW9mIChrYlN1cnZleSkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAg
ICAgJCgnLm5vU2hvdycpLnJlbW92ZUNsYXNzKCJub1Nob3ciKTsNCiAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBTY3JvbGxUb1NlY3Rp
b24oc2Nyb2xsTm9kZVNlbGVjdG9yKSB7DQogICAgaWYgKCQoc2Nyb2xsTm9kZVNl
bGVjdG9yKS5sZW5ndGgpIHsNCiAgICAgICAgRXhwYW5kU2VjdGlvbigkKHNjcm9s
bE5vZGVTZWxlY3RvcilbMF0pOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsNCn0N
Cg0KZnVuY3Rpb24ga2Jfb2JqZWN0KCkgew0KICAgIHRoaXMua2JpdGVtcyA9IG5l
dyBBcnJheSgpOw0KICAgIHRoaXMudGFibGVzYW5kaW1ncyA9IG5ldyBBcnJheSgp
Ow0KICAgIHRoaXMua2Job2xkZXIgPSBudWxsOw0KICAgIHRoaXMud2hpdGVzcGFj
ZXNpemUgPSA1MjsNCiAgICB0aGlzLm1pbmNvbnRlbnRzaXplID0gNDMxOw0KICAg
IHRoaXMubGFzdHdzc2l6ZSA9IHRoaXMud2hpdGVzcGFjZXNpemU7DQogICAgdGhp
cy5sbmRpciA9IG51bGw7DQogICAgdGhpcy5tYXJnaW4gPSBudWxsOw0KICAgIHRo
aXMud2hpdGVib3ggPSBudWxsOw0KICAgIHRoaXMuc2hvd2V4cGFuZGNvbGxhcHNl
YWxsID0gZmFsc2U7DQogICAgdGhpcy5rYl9pbWFnZUV4cGFuZEhvdmVyVGV4dCA9
IG51bGw7DQogICAgdGhpcy5rYl91c2Vfd2hpdGVzcGFjZV9jaGFubmVsID0gdHJ1
ZTsgLy8gY2hhbmdlIHRoaXMgdG8gcmVtb3ZlIHRoZSB3aGl0ZXNwYWNlIGNoYW5u
ZWwuDQoNCiAgICB2YXIgdG9iaiA9IHRoaXM7DQogICAgdGhpcy5ub2RlY2xpY2sg
PSBmdW5jdGlvbiAoZXZlbnQpIHsgdG9iai5HcmFwaGljVGFibGV0b2dnbGUoZXZl
bnQpOyB9Ow0KICAgIHRoaXMubW92ZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHsgdG9i
ai53aGl0ZWJveG92ZXIoZXZlbnQpOyB9Ow0KICAgIHRoaXMubW91dCA9IGZ1bmN0
aW9uIChldmVudCkgeyB0b2JqLndoaXRlYm94b3V0KGV2ZW50KTsgfTsNCiAgICB0
aGlzLm1ha2V3aGl0ZWJveCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKCF0
aGlzLmtiX2ltYWdlRXhwYW5kSG92ZXJUZXh0KSB7DQogICAgICAgICAgICB0aGlz
LmtiX2ltYWdlRXhwYW5kSG92ZXJUZXh0ID0gJ0NsaWNrIHRvIGV4cGFuZCB0aGlz
IGltYWdlLic7DQogICAgICAgIH0NCg0KICAgICAgICB0aGlzLndoaXRlYm94ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgIHRoaXMud2hp
dGVib3guY2xhc3NOYW1lID0gJ2tiX3doaXRlYm94JzsNCg0KICAgICAgICB2YXIg
aW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOw0KICAgICAgICBp
bWcuY2xhc3NOYW1lID0gJ2tiX3doaXRlYm94X2ltZyc7DQoNCiAgICAgICAgdmFy
IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7DQogICAgICAg
IHNwYW4uY2xhc3NOYW1lID0gJ2tiX3doaXRlYm94X3RleHQnOw0KICAgICAgICAv
L3RleHQgY29tZXMgZnJvbSBhIHZhcmlhYmxlIHdyaXR0ZW4gYnkgdGhlIHhzbHQN
CiAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSB0aGlzLmtiX2ltYWdlRXhwYW5kSG92
ZXJUZXh0Ow0KDQogICAgICAgIHRoaXMud2hpdGVib3guYXBwZW5kQ2hpbGQoaW1n
KTsNCiAgICAgICAgdGhpcy53aGl0ZWJveC5hcHBlbmRDaGlsZChzcGFuKTsNCiAg
ICB9Ow0KDQogICAgdGhpcy53aGl0ZWJveG92ZXIgPSBmdW5jdGlvbiAoZXYpIHsN
CiAgICAgICAgdmFyIGUgPSBrYlNyY0VsKGV2KTsNCiAgICAgICAgaWYgKCFlKSB7
DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAg
ICB3aGlsZSAoIWUuY2xhc3NOYW1lLm1hdGNoKC9rYl9vdXRlcmdyYXBoaWN3cmFw
cGVyXGIvZ2kpKSB7DQogICAgICAgICAgICBlID0gZS5wYXJlbnROb2RlOw0KICAg
ICAgICB9DQoNCiAgICAgICAgaWYgKCFlKSB7DQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZS5jaGlsZE5vZGVzWzJd
KSB7DQogICAgICAgICAgICBlLmNoaWxkTm9kZXNbMl0uc3R5bGUuZGlzcGxheSA9
ICdibG9jayc7DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgdGhpcy53aGl0ZWJv
eG91dCA9IGZ1bmN0aW9uIChldikgew0KICAgICAgICB2YXIgZSA9IGtiU3JjRWwo
ZXYpOw0KICAgICAgICBpZiAoIWUpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHdoaWxlICghZS5jbGFzc05hbWUubWF0
Y2goL2tiX291dGVyZ3JhcGhpY3dyYXBwZXJcYi9naSkpIHsNCiAgICAgICAgICAg
IGUgPSBlLnBhcmVudE5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWUp
IHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGlmIChlLmNoaWxkTm9kZXNbMl0pIHsNCiAgICAgICAgICAgIGUuY2hpbGRO
b2Rlc1syXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgICB9DQogICAg
fTsNCg0KICAgIHRoaXMuYWRkd2hpdGVib3ggPSBmdW5jdGlvbiAoZWwpIHsNCiAg
ICAgICAgaWYgKCFlbC5zdHlsZS5wb3NpdGlvbikgew0KICAgICAgICAgICAgZWwu
c3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOw0KICAgICAgICB9DQoNCiAgICAg
ICAgdmFyIG5ld25vZGUgPSB0aGlzLndoaXRlYm94LmNsb25lTm9kZSh0cnVlKTsN
CiAgICAgICAgbmV3bm9kZS5zdHlsZS50b3AgPSBlbC5jaGlsZE5vZGVzWzBdLm9m
ZnNldEhlaWdodDsNCiAgICAgICAgZWwuYXBwZW5kQ2hpbGQobmV3bm9kZSk7DQog
ICAgICAgIGtiX0FkZEV2ZW50KGVsLmNoaWxkTm9kZXNbMl0sICdjbGljaycsIHRo
aXMubm9kZWNsaWNrKTsNCiAgICB9Ow0KDQogICAgdGhpcy5yZW1vdmV3aGl0ZWJv
eCA9IGZ1bmN0aW9uIChlbCkgew0KICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGVsKTsNCiAgICB9Ow0KDQogICAgdGhpcy5yZXNpemUgPSBmdW5jdGlv
biAoKSB7DQogICAgICAgIGlmICghdGhpcy5rYml0ZW1zIHx8IHRoaXMua2JpdGVt
cy5sZW5ndGggPCAxKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgIH0NCg0KICAgICAgICB2YXIgeCA9IHRoaXMua2Job2xkZXIub2Zmc2V0V2lk
dGg7DQogICAgICAgIGlmICh0aGlzLnRhYmxlc2FuZGltZ3MgJiYgdGhpcy50YWJs
ZXNhbmRpbWdzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIHZhciBhbGxvd1Jl
c2l6ZSA9IG51bGw7DQogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRo
aXMudGFibGVzYW5kaW1ncy5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAg
IGFsbG93UmVzaXplID0gdGhpcy50YWJsZXNhbmRpbWdzW2pdLmdldEF0dHJpYnV0
ZSgnYWxsb3dSZXNpemUnKTsNCiAgICAgICAgICAgICAgICBpZiAoYWxsb3dSZXNp
emUgPT0gZmFsc2UgfHwgYWxsb3dSZXNpemUgPT0gJ2ZhbHNlJykgew0KICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgdHQgPSBwYXJzZUludCh0
aGlzLnRhYmxlc2FuZGltZ3NbMF0ub2Zmc2V0V2lkdGgpOw0KICAgICAgICAgICAg
aWYgKHR0ID4gKHggLSB0aGlzLmxhc3R3c3NpemUgLSA1KSB8fCB0dCA8ICh4IC0g
dGhpcy5sYXN0d3NzaXplIC0gMTUpKSB7DQogICAgICAgICAgICAgICAgdmFyIGUg
PSBudWxsOw0KICAgICAgICAgICAgICAgIHZhciBwYWQsIG1hciwgdG1wOw0KICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50YWJsZXNhbmRp
bWdzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBuZXd3
aWQgPSAoeCAtIHRoaXMubGFzdHdzc2l6ZSk7DQogICAgICAgICAgICAgICAgICAg
IGUgPSB0aGlzLnRhYmxlc2FuZGltZ3NbaV0ucGFyZW50Tm9kZTsNCiAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCFlLmNsYXNzTmFtZS5tYXRjaCgvc2JvZHlcYi9n
aSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHBhcnNlSW50KCQo
ZSkuY3NzKCdwYWRkaW5nTGVmdCcpKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
IHBhZCA9IChpc05hTih0bXApKSA/IDAgOiB0bXA7DQogICAgICAgICAgICAgICAg
ICAgICAgICB0bXAgPSBwYXJzZUludCgkKGUpLmNzcygncGFkZGluZ1JpZ2h0Jykp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgcGFkICs9IChpc05hTih0bXApKSA/
IDAgOiB0bXA7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHBhcnNl
SW50KCQoZSkuY3NzKCdtYXJnaW5MZWZ0JykpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgbWFyID0gKGlzTmFOKHRtcCkpID8gMCA6IHRtcDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IHBhcnNlSW50KCQoZSkuY3NzKCdtYXJnaW5SaWdo
dCcpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1hciArPSAoaXNOYU4odG1w
KSkgPyAwIDogdG1wOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBuZXd3aWQg
LT0gKHBhZCArIG1hcik7DQogICAgICAgICAgICAgICAgICAgICAgICBlID0gZS5w
YXJlbnROb2RlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
ICAgICAgICAgaWYgKG5ld3dpZCA+PSAwKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLnRhYmxlc2FuZGltZ3NbaV0uc3R5bGUud2lkdGggPSBuZXd3aWQg
KyAncHgnOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZXNhbmRp
bWdzW2ldLnNldEF0dHJpYnV0ZSgnbldpZHRoJywgbmV3d2lkKTsNCg0KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGVzYW5kaW1nc1tpXS5jbGFz
c05hbWUubWF0Y2goL2tiX291dGVyZ3JhcGhpY3dyYXBwZXJcYi9naSkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlc2FuZGltZ3NbaV0u
Y2hpbGROb2Rlc1sxXS5jaGlsZE5vZGVzWzBdLndpZHRoID0gbmV3d2lkIC0gODsN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
DQogICAgICAgIHZhciB4ZCA9IHRoaXMud2hpdGVzcGFjZXNpemU7DQogICAgICAg
IGlmICh4IC0gdGhpcy5taW5jb250ZW50c2l6ZSA8IHRoaXMud2hpdGVzcGFjZXNp
emUpIHsNCiAgICAgICAgICAgIHhkID0geCAtIHRoaXMubWluY29udGVudHNpemU7
DQogICAgICAgICAgICB4ZCA9ICh4ZCA8IDApID8gMCA6IHhkOw0KICAgICAgICB9
DQoNCiAgICAgICAgLy9hbGwgdGhlIGl0ZW1zIHdpbGwgaGF2ZSB0aGUgc2FtZSBt
YXJnaW4sIHNvIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aGUgZmlyc3Qgb25lDQog
ICAgICAgIHZhciB0ID0gcGFyc2VJbnQodGhpcy5rYml0ZW1zWzBdLnN0eWxlLm1h
cmdpbkxlZnQpOw0KDQogICAgICAgIC8vd2Ugd2FudCB0byBtaW5pbWl6ZSB0aGUg
YW1vdW50IG9mIHRpbWVzIHRoaXMgaGFzIHRvIGZpcmUgb2ZmLCBzbyB3ZSBhcmUg
Y2hlY2tpbmcNCiAgICAgICAgLy90byBtYWtlIHN1cmUgdGhhdCB3ZSBhY3R1YWxs
eSBuZWVkIHRvIGNoYW5nZSBhbnl0aGluZw0KICAgICAgICBpZiAoKHhkIDwgdGhp
cy53aGl0ZXNwYWNlc2l6ZSB8fCAodCA8IHRoaXMud2hpdGVzcGFjZXNpemUgJiYg
eGQgPT0gdGhpcy53aGl0ZXNwYWNlc2l6ZSkpICYmIHRoaXMubGFzdHdzc2l6ZSAh
PSB4ZCkgew0KICAgICAgICAgICAgdGhpcy5sYXN0d3NzaXplID0geGQ7DQogICAg
ICAgICAgICB2YXIgbmV3cG9zID0gKHhkID4gMTUpID8geGQgLSAxNSA6IDA7IC8v
bmVlZCB0aGlzIGJlY2F1c2UgaWYgd2UgdHJ5IHRvIG1vdmUgaXQgaW4gYW55IHNt
YWxsZXIgaW5jcmVtZW50LCBhbGwgYnJvd3NlcnMgZGllIGEgZGVhdGggb2YgYSBi
YWppbGxpb24gbWljZSBuaWJibGVzLiAgICAgICAgICAgIA0KICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmtiaXRlbXMubGVuZ3RoOyBpKyspIHsN
CiAgICAgICAgICAgICAgICB0aGlzLmtiaXRlbXNbaV0uc3R5bGVbdGhpcy5tYXJn
aW5dID0gbmV3cG9zICsgJ3B4JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH07DQoNCiAgICB0aGlzLmdyYXBoaWN0YWJsZXRvZ2dsZWNsYXNzID0gZnVu
Y3Rpb24gKGUsIGNoaWxkLCBvcGVuY2xhc3NuYW1lLCBjbG9zZWNsYXNzbmFtZSwg
Y2hpbGRjbGFzc25hbWUpIHsNCiAgICAgICAgdmFyIGxuZGlyID0gJChkb2N1bWVu
dC5ib2R5KS5jc3MoJ2RpcmVjdGlvbicpOw0KICAgICAgICB2YXIgbWFyZ2luID0g
KGxuZGlyID09ICdsdHInKSA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCc7
DQoNCiAgICAgICAgaWYgKGUuY2xhc3NOYW1lLm1hdGNoKG5ldyBSZWdFeHAob3Bl
bmNsYXNzbmFtZSwgImdpIikpKSB7DQogICAgICAgICAgICBlLmNsYXNzTmFtZSA9
IGpRdWVyeS50cmltKGUuY2xhc3NOYW1lLnJlcGxhY2Uob3BlbmNsYXNzbmFtZSwg
Y2xvc2VjbGFzc25hbWUpKTsNCiAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCdh
bGxvd1Jlc2l6ZScsIHRydWUpOw0KDQogICAgICAgICAgICBlLmNoaWxkTm9kZXNb
MV0uY2hpbGROb2Rlc1swXS53aWR0aCA9IHBhcnNlSW50KGUuZ2V0QXR0cmlidXRl
KCduV2lkdGgnKSAtIDgpOw0KICAgICAgICAgICAgZS5jaGlsZE5vZGVzWzBdLnN0
eWxlLndpZHRoID0gZS5jaGlsZE5vZGVzWzFdLnN0eWxlLndpZHRoID0gKHBhcnNl
SW50KGUuZ2V0QXR0cmlidXRlKCduV2lkdGgnKSkgLSA2KSArICdweCc7DQogICAg
ICAgICAgICBlLmNoaWxkTm9kZXNbMF0uc3R5bGUucG9zaXRpb24gPSBlLmNoaWxk
Tm9kZXNbMV0uc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOw0KICAgICAgICAg
ICAgZS5zdHlsZS5oZWlnaHQgPSBlLmNoaWxkTm9kZXNbMV0uc3R5bGUudG9wID0g
J2F1dG8nOw0KICAgICAgICAgICAgZS5zdHlsZS5ib3JkZXJXaWR0aCA9ICcwcHgg
M3B4IDNweCc7DQogICAgICAgICAgICBlLmNoaWxkTm9kZXNbMF0uc3R5bGUubWFy
Z2luID0gZS5jaGlsZE5vZGVzWzFdLnN0eWxlLm1hcmdpbiA9ICcwcHgnOw0KICAg
ICAgICAgICAgZS5jaGlsZE5vZGVzWzFdLnN0eWxlLm92ZXJmbG93WCA9ICdhdXRv
JzsNCiAgICAgICAgICAgIGUuc3R5bGVbbWFyZ2luXSA9ICcwcHgnOw0KDQogICAg
ICAgICAgICBjaGlsZC5jaGlsZE5vZGVzWzBdLmNsYXNzTmFtZSA9IGpRdWVyeS50
cmltKGNoaWxkLmNoaWxkTm9kZXNbMF0uY2xhc3NOYW1lLnJlcGxhY2UoLyggP3xe
KWtiX2NvbGxhcHNldGV4dF9vcGVuXGIvZ2ksICdrYl9jb2xsYXBzZXRleHRfY2xv
c2UnKSk7DQogICAgICAgICAgICBjaGlsZC5jaGlsZE5vZGVzWzFdLmNsYXNzTmFt
ZSA9IGpRdWVyeS50cmltKGNoaWxkLmNoaWxkTm9kZXNbMV0uY2xhc3NOYW1lLnJl
cGxhY2UoLyggP3xeKWtiX2V4cGFuZHRleHRfY2xvc2VcYi9naSwgJ2tiX2V4cGFu
ZHRleHRfb3BlbicpKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgIGUuY2xhc3NOYW1lID0galF1ZXJ5LnRyaW0oZS5jbGFzc05hbWUucmVw
bGFjZShjbG9zZWNsYXNzbmFtZSwgb3BlbmNsYXNzbmFtZSkpOw0KICAgICAgICAg
ICAgZS5zZXRBdHRyaWJ1dGUoJ2FsbG93UmVzaXplJywgZmFsc2UpOw0KDQogICAg
ICAgICAgICB2YXIgbWFyZ2luTGVmdCA9IHBhcnNlSW50KCQoZS5jaGlsZE5vZGVz
WzFdLmNoaWxkTm9kZXNbMF0pLmNzcygnbWFyZ2luTGVmdCcpLCAxMCk7DQogICAg
ICAgICAgICB2YXIgbWFyZ2luUmlnaHQgPSBwYXJzZUludCgkKGUuY2hpbGROb2Rl
c1sxXS5jaGlsZE5vZGVzWzBdKS5jc3MoJ21hcmdpblJpZ2h0JyksIDEwKTsNCg0K
ICAgICAgICAgICAgbWFyZ2luTGVmdCA9ICghbWFyZ2luTGVmdCkgPyAwIDogbWFy
Z2luTGVmdDsNCiAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gKCFtYXJnaW5SaWdo
dCkgPyAwIDogbWFyZ2luUmlnaHQ7DQoNCiAgICAgICAgICAgIGUuY2hpbGROb2Rl
c1sxXS5jaGlsZE5vZGVzWzBdLndpZHRoID0gZS5nZXRBdHRyaWJ1dGUoJ29XaWR0
aCcpOw0KICAgICAgICAgICAgZS5jaGlsZE5vZGVzWzBdLnN0eWxlLndpZHRoID0g
ZS5jaGlsZE5vZGVzWzFdLnN0eWxlLndpZHRoID0gKG1hcmdpbkxlZnQgKyBtYXJn
aW5SaWdodCArIChwYXJzZUludChlLmdldEF0dHJpYnV0ZSgnb1dpZHRoJykpKSkg
KyAncHgnOw0KICAgICAgICAgICAgZS5jaGlsZE5vZGVzWzBdLnN0eWxlLnBvc2l0
aW9uID0gZS5jaGlsZE5vZGVzWzFdLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRl
JzsNCiAgICAgICAgICAgIGUuY2hpbGROb2Rlc1sxXS5zdHlsZS5vdmVyZmxvd1gg
PSAndmlzaWJsZSc7DQogICAgICAgICAgICBlLnN0eWxlLmJvcmRlcldpZHRoID0g
JzBweCc7DQogICAgICAgICAgICBlLmNoaWxkTm9kZXNbMF0uc3R5bGUubWFyZ2lu
ID0gJzBweCAzcHgnOw0KICAgICAgICAgICAgZS5jaGlsZE5vZGVzWzFdLnN0eWxl
Lm1hcmdpbiA9ICcwcHggM3B4JzsNCiAgICAgICAgICAgIGUuY2hpbGROb2Rlc1sx
XS5zdHlsZS50b3AgPSBlLmNoaWxkTm9kZXNbMF0ub2Zmc2V0SGVpZ2h0ICsgJ3B4
JzsNCiAgICAgICAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gKCQoZS5jaGlsZE5vZGVz
WzBdKS5oZWlnaHQoKSArICQoZS5jaGlsZE5vZGVzWzFdKS5oZWlnaHQoKSArIDIw
KSArICdweCc7IC8vMjAgaXMgdGhlIGhlaWdodCBvZiBob3Jpem9udGFsIHNjcm9s
bCBiYXINCg0KICAgICAgICAgICAgdmFyIG1hcmdpblBhciA9IGU7DQogICAgICAg
ICAgICB2YXIgeHRyYW1hcmdpbiA9IDA7DQogICAgICAgICAgICB2YXIgdHZhbDsN
CiAgICAgICAgICAgIHdoaWxlICghbWFyZ2luUGFyLmNsYXNzTmFtZS5tYXRjaCgv
c2JvZHkvaWcpKSB7DQogICAgICAgICAgICAgICAgdHZhbCA9IHBhcnNlSW50KCQo
bWFyZ2luUGFyKS5jc3MoIm1hcmdpbkxlZnQiKSwgMTApOw0KICAgICAgICAgICAg
ICAgIHh0cmFtYXJnaW4gKz0gKGlzTmFOKHR2YWwpKSA/IDAgOiB0dmFsOw0KICAg
ICAgICAgICAgICAgIHR2YWwgPSBwYXJzZUludCgkKG1hcmdpblBhcikuY3NzKCJt
YXJnaW5SaWdodCIpLCAxMCk7DQogICAgICAgICAgICAgICAgeHRyYW1hcmdpbiAr
PSAoaXNOYU4odHZhbCkpID8gMCA6IHR2YWw7DQogICAgICAgICAgICAgICAgdHZh
bCA9IHBhcnNlSW50KCQobWFyZ2luUGFyKS5jc3MoInBhZGRpbmdMZWZ0IiksIDEw
KTsNCiAgICAgICAgICAgICAgICB4dHJhbWFyZ2luICs9IChpc05hTih0dmFsKSkg
PyAwIDogdHZhbDsNCiAgICAgICAgICAgICAgICB0dmFsID0gcGFyc2VJbnQoJCht
YXJnaW5QYXIpLmNzcygicGFkZGluZ1JpZ2h0IiksIDEwKTsNCiAgICAgICAgICAg
ICAgICB4dHJhbWFyZ2luICs9IChpc05hTih0dmFsKSkgPyAwIDogdHZhbDsNCg0K
ICAgICAgICAgICAgICAgIGlmICh4dHJhbWFyZ2luID4gMCkgew0KICAgICAgICAg
ICAgICAgICAgICAvLyB0cnVzdCBtZSwgMTAgaXMgdGhlIG1hZ2ljIG51bWJlciBw
ZXIgaXRlcmF0aW9uIHRvIGVuc3VyZSB0aGF0IHRoaW5ncyBtb3ZlIGFyb3VuZCAo
b3IgcmF0aGVyIGRvbmUgbW92ZSBhcm91bmQpIHByb3Blcmx5DQogICAgICAgICAg
ICAgICAgICAgIHh0cmFtYXJnaW4gKz0gMTA7DQogICAgICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICAgICAgaWYgKCFtYXJnaW5QYXIucGFyZW50Tm9kZSkgew0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAg
ICAgfQ0KDQogICAgICAgICAgICAgICAgbWFyZ2luUGFyID0gbWFyZ2luUGFyLnBh
cmVudE5vZGU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBtYXJn
aW5tb3ZlID0gcGFyc2VJbnQoJChtYXJnaW5QYXIpLmNzcyhtYXJnaW4pKTsNCiAg
ICAgICAgICAgIHZhciBzcGFjZSA9ICQoJyNrYicpLmdldCgwKS5vZmZzZXRXaWR0
aCAtIG1hcmdpbm1vdmUgLSB4dHJhbWFyZ2luOw0KICAgICAgICAgICAgdmFyIGRp
ZmYgPSBzcGFjZSAtIHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCdvV2lkdGgnKSk7
DQogICAgICAgICAgICBpZiAoTWF0aC5hYnMoZGlmZikgPiBtYXJnaW5tb3ZlKSB7
DQogICAgICAgICAgICAgICAgZGlmZiA9IDAgLSBtYXJnaW5tb3ZlOw0KICAgICAg
ICAgICAgfQ0KDQogICAgICAgICAgICBlLnN0eWxlW21hcmdpbl0gPSBkaWZmICsg
J3B4JzsNCg0KICAgICAgICAgICAgY2hpbGQuY2hpbGROb2Rlc1swXS5jbGFzc05h
bWUgPSBqUXVlcnkudHJpbShjaGlsZC5jaGlsZE5vZGVzWzBdLmNsYXNzTmFtZS5y
ZXBsYWNlKC8oID98XilrYl9jb2xsYXBzZXRleHRfY2xvc2VcYi9naSwgJ2tiX2Nv
bGxhcHNldGV4dF9vcGVuJykpOw0KICAgICAgICAgICAgY2hpbGQuY2hpbGROb2Rl
c1sxXS5jbGFzc05hbWUgPSBqUXVlcnkudHJpbShjaGlsZC5jaGlsZE5vZGVzWzFd
LmNsYXNzTmFtZS5yZXBsYWNlKC8oID98XilrYl9leHBhbmR0ZXh0X29wZW5cYi9n
aSwgJ2tiX2V4cGFuZHRleHRfY2xvc2UnKSk7DQogICAgICAgIH0NCiAgICB9Ow0K
DQogICAgdGhpcy5HcmFwaGljVGFibGV0b2dnbGUgPSBmdW5jdGlvbiAoZXZlbnQp
IHsNCiAgICAgICAgdmFyIGUgPSBrYlNyY0VsKGV2ZW50KTsNCiAgICAgICAgaWYg
KCFlKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0K
ICAgICAgICBpZiAoZS5jbGFzc05hbWUubWF0Y2goL2tiX3doaXRlYm94XGIvZ2kp
KSB7DQogICAgICAgICAgICBlID0gZS5wYXJlbnROb2RlLmNoaWxkTm9kZXNbMF07
DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoZS5jbGFzc05hbWUubWF0Y2go
LyhrYl93aGl0ZWJveF90ZXh0fGtiX3doaXRlYm94X2ltZylcYi9naSkpIHsNCiAg
ICAgICAgICAgIGUgPSBlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVz
WzBdOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKGUubm9kZU5hbWUgPT09
ICdTUEFOJyB8fCBlLm5vZGVOYW1lID09PSAnRElWJykgew0KICAgICAgICAgICAg
aWYgKGUuY2xhc3NOYW1lLm1hdGNoKC8oa2JfY29sbGFwc2V0ZXh0X2JhY2tncm91
bmR8a2JfZXhwYW5kdGV4dF9iYWNrZ3JvdW5kKVxiL2dpKSkgew0KICAgICAgICAg
ICAgICAgIGUgPSBlLnBhcmVudE5vZGU7DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIGUgPSBlLnBhcmVudE5vZGU7DQogICAgICAgIH0NCiAgICAgICAgZWxz
ZSBpZiAoZS5ub2RlTmFtZSA9PT0gJ0lNRycpIHsNCiAgICAgICAgICAgIGUgPSBl
LnBhcmVudE5vZGUucGFyZW50Tm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZh
ciB4ID0gZS5wYXJlbnROb2RlLm9mZnNldFdpZHRoOw0KICAgICAgICB2YXIgb3dp
ZCA9IGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoJ29XaWR0aCcpOw0KICAgICAg
ICBpZiAob3dpZCA8IHgpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
fQ0KDQogICAgICAgIGlmIChlLmNsYXNzTmFtZS5tYXRjaCgvKGtiX2dyYXBoaWN0
b3Bfb3BlbnxrYl9ncmFwaGljd3JhcHBlcilcYi9naSkpIHsNCiAgICAgICAgICAg
IHRoaXMuZ3JhcGhpY3RhYmxldG9nZ2xlY2xhc3MoZS5wYXJlbnROb2RlLCBlLCAi
a2Jfb3V0ZXJncmFwaGljd3JhcHBlcl9vcGVuIiwgImtiX291dGVyZ3JhcGhpY3dy
YXBwZXJfY2xvc2VkIiwgImtiX2dyYXBoaWN3cmFwcGVyIik7DQoNCiAgICAgICAg
ICAgIC8vSGVyZSB3ZSBhcmUgZ29pbmcgdG8gbG9vayBmb3IgdGhlIHdoaXRlYm94
IGFuZCByZW1vdmUgaXQgaWYgZm91bmQgYW5kIGtpY2sgb3V0DQogICAgICAgICAg
ICAvL2lmIGl0IGlzbnQgZm91bmQsIHdlIGFyZSBnb2luZyB0byBhZGQgaXQNCiAg
ICAgICAgICAgIHZhciB3YiA9IGUucGFyZW50Tm9kZTsNCiAgICAgICAgICAgIGlm
ICh3Yi5jaGlsZE5vZGVzWzJdICYmIHdiLmNoaWxkTm9kZXNbMl0uY2xhc3NOYW1l
Lm1hdGNoKC9rYl93aGl0ZWJveFxiL2dpKSkgew0KICAgICAgICAgICAgICAgIHRo
aXMucmVtb3Zld2hpdGVib3god2IuY2hpbGROb2Rlc1syXSk7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB0
aGlzLmFkZHdoaXRlYm94KHdiKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlm
IChlLmNsYXNzTmFtZS5tYXRjaCgva2JfdGFibGV0b3Bfb3BlblxiL2dpKSkgew0K
ICAgICAgICAgICAgdGhpcy5ncmFwaGljdGFibGV0b2dnbGVjbGFzcyhlLnBhcmVu
dE5vZGUsIGUsICJrYl9vdXRlcnRhYmxld3JhcHBlcl9vcGVuIiwgImtiX291dGVy
dGFibGV3cmFwcGVyX2Nsb3NlZCIsICJrYl90YWJsZXdyYXBwZXIiKTsNCiAgICAg
ICAgfQ0KICAgIH07DQoNCiAgICB0aGlzLnRvZ2dsZUdyYXBoaWNUYWJsZSA9IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIGRpdnMgPSAkKCcja2IgZGl2Jyk7DQog
ICAgICAgIHZhciBib29sMSwgYm9vbDI7DQogICAgICAgIHZhciB0ID0gdGhpczsN
CiAgICAgICAgdmFyIHggPSB0aGlzLmtiaG9sZGVyLm9mZnNldFdpZHRoOw0KDQog
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7IGkrKykgew0K
ICAgICAgICAgICAgYm9vbDEgPSBkaXZzW2ldLmNsYXNzTmFtZS5tYXRjaCgvKCA/
fF4pKGtiX2dyYXBoaWN3cmFwcGVyfGtiX3RhYmxld3JhcHBlcilcYi9naSk7DQog
ICAgICAgICAgICBib29sMiA9IGRpdnNbaV0uY2xhc3NOYW1lLm1hdGNoKC8oID98
XilzZWN0aW9ucHJldmlld19jbG9zZWRcYi9naSk7DQoNCiAgICAgICAgICAgIGlm
IChib29sMSkgew0KICAgICAgICAgICAgICAgIHZhciB3aWQgPSAoYm9vbDEgPT0g
J2tiX3RhYmxld3JhcHBlcicpID8gZGl2c1tpXS5jaGlsZE5vZGVzWzBdLm9mZnNl
dFdpZHRoIDogZGl2c1tpXS5jaGlsZE5vZGVzWzBdLndpZHRoOw0KICAgICAgICAg
ICAgICAgIGlmICgod2lkICsgdGhpcy53aGl0ZXNwYWNlc2l6ZSkgPCB4KSB7DQog
ICAgICAgICAgICAgICAgICAgIGRpdnNbaV0uY2xhc3NOYW1lID0gZGl2c1tpIC0g
MV0uY2xhc3NOYW1lID0gZGl2c1tpXS5wYXJlbnROb2RlLmNsYXNzTmFtZSA9ICJr
Yl9ub3dyYXBwZXIiOw0KICAgICAgICAgICAgICAgICAgICBkaXZzW2ldLnBhcmVu
dE5vZGUuYXBwZW5kQ2hpbGQoZGl2c1tpXS5jaGlsZE5vZGVzWzBdKTsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAg
ICAgICAgICAgIGlmIChkaXZzW2ldLmNsaWVudEhlaWdodCA8IGRpdnNbaV0uc2Ny
b2xsSGVpZ2h0IHx8IGRpdnNbaV0uY2xpZW50V2lkdGggPCBkaXZzW2ldLnNjcm9s
bFdpZHRoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkaXZzW2kgLSAxXS5j
bGFzc05hbWUgKz0gIl9vcGVuIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBkaXZzW2kgLSAxXS5jaGlsZE5vZGVzLmxlbmd0
aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpdnNb
aSAtIDFdLmNoaWxkTm9kZXNbal0uY2xhc3NOYW1lLm1hdGNoKC8oID98XilrYl9l
eHBhbmR0ZXh0XGIvZ2kpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpdnNbaSAtIDFdLmNoaWxkTm9kZXNbal0uY2xhc3NOYW1lID0galF1ZXJ5
LnRyaW0oZGl2c1tpIC0gMV0uY2hpbGROb2Rlc1tqXS5jbGFzc05hbWUucmVwbGFj
ZSgvKCA/fF4pa2JfZXhwYW5kdGV4dFxiL2dpLCAna2JfZXhwYW5kdGV4dF9vcGVu
JykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtiX0FkZEV2ZW50KGRpdnNbaSAtIDFdLmNoaWxk
Tm9kZXNbal0sICdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgeyB0LkdyYXBoaWNU
YWJsZXRvZ2dsZShldmVudCk7IH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVs
c2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgZGl2c1tpXS5jbGFzc05hbWUg
PSBkaXZzW2kgLSAxXS5jbGFzc05hbWUgPSBkaXZzW2ldLnBhcmVudE5vZGUuY2xh
c3NOYW1lID0gImtiX25vd3JhcHBlciI7DQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
IGlmIChib29sMikgew0KICAgICAgICAgICAgICAgIGtiX2dldFNlY3Rpb25QcmV2
aWV3VGV4dChkaXZzW2ldKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH07DQoNCiAgICB0aGlzLm1ha2V3aGl0ZXNwYWNlID0gZnVuY3Rpb24gKCkgew0K
ICAgICAgICB2YXIga2IgPSAkKCcja2InKS5nZXQoMCk7DQogICAgICAgIGlmICgh
a2IpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAg
IHRoaXMubG5kaXIgPSAkKGtiKS5jc3MoJ2RpcmVjdGlvbicpOw0KDQogICAgICAg
IGlmICghdGhpcy5sbmRpcikgew0KICAgICAgICAgICAgdGhpcy5sbmRpciA9ICds
dHInOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHNlY3Rpb24gPSAkKCcja2Jf
c2VjdGlvbicpLmdldCgwKTsNCg0KICAgICAgICBpZiAoIXRoaXMua2Job2xkZXIg
fHwgIXRoaXMua2JfdXNlX3doaXRlc3BhY2VfY2hhbm5lbCB8fCAhdGhpcy5sbmRp
ciB8fCAhc2VjdGlvbikgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICB9DQoNCiAgICAgICAgdGhpcy5tYXJnaW4gPSAodGhpcy5sbmRpciA9PSAn
bHRyJykgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnOw0KICAgICAgICB0
aGlzLm1ha2V3aGl0ZWJveCgpOw0KDQogICAgICAgIHZhciBrYmRpdnMgPSB0aGlz
LmtiaG9sZGVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTsNCiAgICAgICAg
dmFyIHJlZ3JlcyA9IG51bGw7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
a2JkaXZzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAoa2JkaXZzW2ld
LmNsYXNzTmFtZS5tYXRjaCgvKHNib2R5fGFwcGxpZXN0b3xrZXl3b3Jkc3xkaXNj
bGFpbWVyfHRvcG9mcGFnZSlcYi9naSkpIHsNCiAgICAgICAgICAgICAgICBpZiAo
a2JkaXZzW2ldLnBhcmVudE5vZGUgPT0gdGhpcy5rYmhvbGRlci5jaGlsZE5vZGVz
WzBdIHx8IGtiZGl2c1tpXS5wYXJlbnROb2RlID09IHNlY3Rpb24pIHsNCiAgICAg
ICAgICAgICAgICAgICAgdGhpcy5rYml0ZW1zLnB1c2goa2JkaXZzW2ldKTsNCiAg
ICAgICAgICAgICAgICAgICAga2JkaXZzW2ldLnN0eWxlW3RoaXMubWFyZ2luXSA9
IHRoaXMud2hpdGVzcGFjZXNpemUgKyAncHgnOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmVncmVzID0ga2JkaXZzW2ld
LmNsYXNzTmFtZS5tYXRjaCgvKGtiX291dGVydGFibGV3cmFwcGVyfGtiX291dGVy
Z3JhcGhpY3dyYXBwZXIpXGIvZ2kpOw0KICAgICAgICAgICAgaWYgKHJlZ3Jlcykg
ew0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVzYW5kaW1ncy5wdXNoKGtiZGl2
c1tpXSk7DQogICAgICAgICAgICAgICAgaWYgKHJlZ3Jlc1swXSA9PSAna2Jfb3V0
ZXJncmFwaGljd3JhcHBlcicpIHsNCiAgICAgICAgICAgICAgICAgICAga2JkaXZz
W2ldLnNldEF0dHJpYnV0ZSgnb1dpZHRoJywga2JkaXZzW2ldLmNoaWxkTm9kZXNb
MV0uY2hpbGROb2Rlc1swXS53aWR0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBrYmRpdnNb
aV0uc2V0QXR0cmlidXRlKCdvV2lkdGgnLCBrYmRpdnNbaV0uY2hpbGROb2Rlc1sx
XS5jaGlsZE5vZGVzWzBdLm9mZnNldFdpZHRoKTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgdCA9IHRo
aXM7DQogICAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9maXJl
Zm94L2kpKSB7DQogICAgICAgICAgICAvL0ZGIHdpbGwgbm90IGZpcmUgdGhlIHJl
c2l6ZSBldmVudCB0aWwgdGhlIHJlc2l6ZSBpcyBkb25lLCBzbyB3ZSBoYXZlIHRv
IHVzZSBhIHRpbWVyDQogICAgICAgICAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAo
ZXZlbnQpIHsgdC5yZXNpemUoKTsgfSwgNTApOw0KICAgICAgICB9DQogICAgICAg
IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5yZXNpemUoKTsNCiAgICAgICAgICAg
IGtiX0FkZEV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIGZ1bmN0aW9uIChldmVudCkg
eyB0LnJlc2l6ZSgpOyB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBvV2lk
ID0gMCwgbldpZCA9IDA7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2Jk
aXZzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBuV2lkID0gcGFyc2VJbnQo
a2JkaXZzW2ldLmdldEF0dHJpYnV0ZSgnbldpZHRoJykpOw0KICAgICAgICAgICAg
b1dpZCA9IHBhcnNlSW50KGtiZGl2c1tpXS5nZXRBdHRyaWJ1dGUoJ29XaWR0aCcp
KTsNCg0KICAgICAgICAgICAgcmVncmVzID0ga2JkaXZzW2ldLmNsYXNzTmFtZS5t
YXRjaCgva2Jfb3V0ZXJncmFwaGljd3JhcHBlcnxrYl9vdXRlcnRhYmxld3JhcHBl
clxiL2dpKTsNCiAgICAgICAgICAgIGlmIChyZWdyZXMpIHsNCiAgICAgICAgICAg
ICAgICBpZiAoIW5XaWQpIG5XaWQgPSAxOw0KICAgICAgICAgICAgICAgIGlmIChu
V2lkICYmIG9XaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0
byBjaGVjayB0aGUgd2lkdGhzLCBiZWNhdXNlIGluIHNvbWUgY2lyY3Vtc3RhbmNl
cyB0aGUgY29kZSBpcyB0cmlja2VkIGludG8gdGhpbmtpbmcgdGhhdCBpdCBuZWVk
cyB0bw0KICAgICAgICAgICAgICAgICAgICAvLyB3cmFwIHRoZSBpbWFnZXMgd2Ug
bmVlZCB0byBjaGVjayBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIGltYWdlIGhhcyBp
bmRlZWQgYmVlbiByZXNpemVkLCBpZiBub3QsIGJ5IGNoZWNraW5nDQogICAgICAg
ICAgICAgICAgICAgIC8vIHRvIHNlZSBpZiB0aGUgbmV3IHdpZHRoICh0aGUgc2hy
dW5rIHZhbCkgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgb3JpZ2luYWwgd2lkdGgs
IGlmIHNvLCBjbGVhbiBpdCB1cCwgd2UgZG9udA0KICAgICAgICAgICAgICAgICAg
ICAvLyBuZWVkIHRoZSB3cmFwcGVyDQogICAgICAgICAgICAgICAgICAgIGlmIChu
V2lkID4gb1dpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAga2JkaXZzW2ld
LnJlbW92ZUNoaWxkKGtiZGl2c1tpXS5jaGlsZE5vZGVzWzBdKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGtiZGl2c1tpXS5jbGFzc05hbWUgPSBrYmRpdnNbaV0u
Y2hpbGROb2Rlc1swXS5jbGFzc05hbWUgPSAna2Jfbm93cmFwcGVyJzsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdyZXNbMF0gPT0gJ2tiX291dGVy
Z3JhcGhpY3dyYXBwZXInKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5hZGR3aGl0ZWJveChrYmRpdnNbaV0pOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtiX0FkZEV2ZW50KGtiZGl2c1tpXSwgJ21vdXNlb3ZlcicsIHRo
aXMubW92ZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtiX0FkZEV2
ZW50KGtiZGl2c1tpXSwgJ21vdXNlb3V0JywgdGhpcy5tb3V0KTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAg
IHJldHVybiB0aGlzOw0KICAgIH07DQoNCiAgICB0aGlzLnN0YXJ0ID0gZnVuY3Rp
b24gKGtic2VjdGlvbikgew0KICAgICAgICBpZiAoIWtic2VjdGlvbikgew0KICAg
ICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICB0aGlz
LmtiaG9sZGVyID0ga2JzZWN0aW9uOw0KDQogICAgICAgIHRoaXMudG9nZ2xlR3Jh
cGhpY1RhYmxlKCk7DQogICAgICAgIGlmICh0aGlzLmtiX3VzZV93aGl0ZXNwYWNl
X2NoYW5uZWwpIHsNCiAgICAgICAgICAgIHRoaXMubWFrZXdoaXRlc3BhY2UoKTsN
CiAgICAgICAgfQ0KDQogICAgICAgIHZhciBlbCA9ICQoJy50b2NUaXRsZScpLmdl
dCgwKTsNCiAgICAgICAgaWYgKGVsKSB7DQogICAgICAgICAgICBrYl90YWJ0b2dn
bGUoZWwpOw0KICAgICAgICB9DQogICAgfQ0KfQ==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=longWordLang.css
Content-Type: text/css; charset=utf-8; name=longWordLang.css
Content-Location: http://support.microsoft.com/common/css/default/languages/longWordLang.css?76
Content-Transfer-Encoding: 8bit
.wp .search .wideColumn .innerTable td.boldColumn
{
white-space: normal;
}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=branding.css
Content-Type: text/css; charset=utf-8; name=branding.css
Content-Location: http://support.microsoft.com/common/css/default/branding.css?76
Content-Transfer-Encoding: 8bit
body
{
margin: 0px; /*eliminates the interior margin of the page, allowing the elements to bump up flush with the sides*/
}
/*START Content Area Styling*/
#gsfx_brnd_CenterContent
{
text-align: center; /*center content for IE quirksmode ***MUST reset in next element*** */
position: relative; /*need to pass positioning down*/
z-index: 1; /*ensure proper layering*/
width: 100%; /*fill the screen*/
}
#gsfx_brnd_PageWrapper
{
width: 984px; /*CHANGE HERE: Change the width of the frame here.*/
text-align: left; /*properly realign text*/
margin: 0px auto 30px auto; /*also centers content for mozilla, opera and webkit*/
position: relative; /*need to pass positioning down*/
}
#gsfx_brnd_PageContainer
{
min-height: 430px; /*CHANGE HERE: set minimum height of content*/
padding: 0px; /*not neccessary, but good to have*/
display: inline-block; /*allows content for mozilla, opera and webkit to push this container wider and recenter*/
position: relative; /*need to pass positioning down*/
width: inherit; /*must be set for both IE and Non IE to strecth the frame properly*/
}
#gsfx_brnd_PageHeaderImage
{
position: absolute; /*remove from the flow of content and not affect anything around*/
width: 100%; /*fill the screen*/
height: 90%; /*fill minimum screen height*/
}
* html #gsfx_brnd_PageHeaderImage
{
height: 90%; /*fixes a bug in IE where the background would go to far down*/
width: 100%;
}
/*dont remove this element unless you also reset the margin of the content container to 0px*/
#gsfx_brnd_ToolbarShadow
{
display: none;
}
#gsfx_brnd_shadow
{
background: url('/library/images/support/cn/gsfx_brnd_toolbar_shadow.png') repeat-x; /*use pngfilter on this for IE6 and below*/
height: 14px; /*matches the height of the image*/
line-height: 1px; /*hack for IE to make the height smaller that normal line height*/
font-size: 1px; /*hack for IE to make the height smaller that normal line height*/
width: 100%;
z-index: 3;
}
* html #gsfx_brnd_shadow
{
position: absolute;
}
#gsfx_brnd_ContentContainer
{
background-color: #ffffff;
width: 100%; /*fill the container width*/
padding: 0px; /*CHANGE HERE: This should match the desired width of the border minus the width of the css border*/
position: inherit; /*This needs to be set to inherit or items are not clickable in IE for some reason*/
z-index: 2; /*ensure proper layering*/
}
#contentArea
{
/*TODO: This may need to be configurable*/
background: #FFFFFF;
border-bottom: 1px solid #000000;
display: table; /*needed by mozilla and webkit to properly stretch the framework*/
width: 100%; /*fill the container*/
position: relative; /*need to pass positioning down*/
z-index: 2; /*ensure proper layering*/
}
#gsfx_brnd_WidthFix
{
width: 612px; /*CHANGE HERE: Change this value to change the minimum width*/
height: 0px; /*make 0px high*/
line-height: 0px; /*make 0px high*/
font-size: 0px; /*make 0px high*/
}
.gsfx_brnd_SideBorder
{
border-left: 1px solid #000000; /*CHANGE HERE: If you want different color borders for the frame*/
border-right: 1px solid #000000; /*CHANGE HERE: If you want different color borders for the frame*/
}
.gsfx_brnd_TransBG
{
margin: 0px;
}
/*END Content Area Styling*/
/*START Corner And Border Styling*/
.gsfx_brnd_CornerContainer
{
line-height: 1px; /*this is for IE to reduce hieght to less than the standard line-height (usually 1em)*/
font-size: 0px; /*this is for IE to reduce hieght to less than the standard line-height (usually 1em)*/
height: 0px; /*CHANGE HERE: this should match the hieght of the the top and bottom borders*/
width: 100%;
position: relative; /*not neccessary, but good to have*/
z-index: 1;
}
#gsfx_brnd_TopCorners
{
display: none;
}
#gsfx_brnd_BottomCorners
{
display: none;
}
.gsfx_brnd_TBBorders
{
width: 100%;
}
#gsfx_brnd_TopBorder
{
border-top: 1px solid #85A1B9; /*CHANGE HERE: If you want different color borders for the frame*/
}
#gsfx_brnd_BottomBorder
{
border-bottom: 1px solid #000000; /*CHANGE HERE: If you want different color borders for the frame*/
}
.gsfx_brnd_Corner
{
/*CHANGE HERE: Change the width, hight, left and margin-top value if you wish to have*/ /*a different size corner on your frame, will affect all four corners*/
float: right;
height: 6px;
width: 6px;
position: relative; /*this is necessary to allow the element to move*/
left: 6px; /*this needs to match this elements width*/
margin-top: -6px; /*this needs to match this elements height*/
}
#gsfx_brnd_LUpperCorner
{
/*CHANGE HERE: If you want different corners for the frame. Dont forget to change it in the brandingPngFilter.css as well*/
background: url('/library/images/support/cn/gsfx_brnd_trcorner.png') no-repeat;
}
#gsfx_brnd_LLowerCorner
{
/*CHANGE HERE: If you want different corners for the frame. Dont forget to change it in the brandingPngFilter.css as well*/
background: url('/library/images/support/cn/gsfx_brnd_brcorner.png') no-repeat;
}
/*END Corner And Border Styling*/
/*START Header, Footer and Local Tool Bar*/
#gsfx_brnd_HeaderContainer, #gsfx_brnd_FooterContainer
{
width: 100%;
position: relative;
}
#gsfx_brnd_HeaderContainer
{
z-index: 4;
}
#gsfx_brnd_FooterContainer
{
z-index: 1;
}
.gsfx_brnd_NetworkLinkContainer
{
padding: 0px 5px;
white-space: nowrap;
}
a.gsfx_brnd_NetworkLink, a.gsfx_brnd_NetworkLink:visited, .gsfx_brnd_NetworkLink a, .gsfx_brnd_NetworkLink a:visited
{
padding-bottom: 1px;
height: 100%;
color: #cdcbce;
text-decoration: none;
}
a.gsfx_brnd_NetworkLink:hover, a.gsfx_brnd_NetworkLink:active, a.gsfx_brnd_NetworkLink:focus, .gsfx_brnd_NetworkLink a:hover, .gsfx_brnd_NetworkLink a:active, .gsfx_brnd_NetworkLink a:focus
{
color: #f9d060;
text-decoration: none;
padding-bottom: 0px;
border-bottom: 1px dotted #f9d060;
}
#gsfx_brnd_NetworkHeaderLinks td
{
height: .9em;
}
#gsfx_brnd_NetworkFooter td
{
height: .9em;
font-size: 80%;
}
#gsfx_brnd_NetworkHeaderLinks td span
{
height: 100%;
}
.gsfx_brnd_HeaderSeperator, .gsfx_brnd_FooterSeperator
{
color: #68686a;
font-weight: bold;
}
/*reverse these for RTL content*/
.gsfx_brnd_NetworkLeft
{
float: left;
left: 0px;
right: auto;
}
.gsfx_brnd_NetworkRight
{
float: right;
left: auto;
right: 0px;
}
.gsfx_brnd_FooterLinks .gsfx_brnd_NetworkRight, #gsfx_brnd_FooterContainer .gsfx_brnd_NetworkLeft
{
clear: both;
}
.gsfx_brnd_NetworkTextRight
{
text-align: right;
}
/*The following lines are used to remove the book icon at the side of Passport signin/signout button */
#idSI
{
display: none;
}
#idSO
{
display: none;
}
/*START Header*/
#gsfx_brnd_NetworkHeader
{
color: #fff;
font-size: 70%;
width: 100%;
position: relative;
z-index: 2;
padding: 0px 2px;
height: 25px;
}
#gsfx_brnd_NetworkHeader span
{
font-weight: bold;
}
#gsfx_brnd_NetworkHeader a span
{
font-weight: normal;
}
#gsfx_brnd_CorpMarketingContainer
{
position: absolute;
width: 400px;
height: 25px;
}
#gsfx_brnd_CorpMarketingSpace
{
margin: 0px 8px;
position: absolute;
height: 41px;
padding: 0px 25px;
}
#gsfx_brnd_corpflyoutad, #gsfx_brnd_corpflyoutad_inner
{
position: absolute;
overflow: hidden;
height: 0px;
width: 0px;
top: 0px;
left: 0px;
}
#gsfx_brnd_corpflyoutad
{
margin-top: -1px;
opacity: 0;
filter: alpha(opacity=0);
}
#gsfx_brnd_corpflyoutad_close
{
position: absolute;
right: 4px;
top: 4px;
}
#gsfx_brnd_corpflyoutad_dontshow
{
position: absolute;
bottom: 8px;
left: 20px;
}
#gsfx_brnd_CorpMarketingSpace div.gsfx_brnd_NetworkLink img
{
display: inline;
vertical-align: middle;
}
#gsfx_brnd_CorpMarketingSpace div.gsfx_brnd_NetworkLink span
{
vertical-align: middle;
font-weight: normal;
padding: 6px 4px 0px 4px;
}
#gsfx_brnd_NetworkHeaderLinks
{
border-collapse: collapse;
margin: 8px 4px 0;
}
#gsfx_brnd_SiteHeader
{
width: 100%;
min-height: 61px;
position: relative;
z-index: 1;
padding-top: 10px;
border-bottom: 1px solid #000000;
}
#gsfx_brnd_SiteHeaderImageContainer
{
line-height: 0px; /*this is for IE to reduce hieght to less than the standard line-height (usually 1em)*/
font-size: 0px; /*this is for IE to reduce hieght to less than the standard line-height (usually 1em)*/
height: 72px; /*CHANGE HERE: this should match the hieght of the siteheader*/
width: 100%;
position: absolute;
left: 0px;
margin-top: -10px;
padding: 0px;
z-index: 1;
}
#gsfx_brnd_SiteHeaderImage
{
width: 100%;
position: absolute;
}
#gsfx_brnd_SiteImgWedgeWrap
{
position: absolute;
left: 0px;
width: 100%;
padding: 0;
z-index: 1;
}
.gsfx_brnd_siteheaderimage
{
position: relative;
float: left;
z-index: 2;
margin: 0px 0px 1px 0px; /*hack for IE and is floating bugs, if this isnt there, ie puts a space between the floated images*/
}
#gsfx_brnd_SiteImgRight
{
float: right;
margin-right: 1px;
}
* html #gsfx_brnd_SiteImgLeft, * html #gsfx_brnd_SiteImgMain
{
margin-left: -4px;
}
#gsfx_brnd_PageLogoWrapper
{
padding: 0px 12px;
white-space: nowrap;
position: relative;
z-index: 2;
}
#gsfx_brnd_legacy_PageLogo
{
height: 100%;
width: 100%;
position: absolute;
margin: 0px 12px;
}
#gsfx_brnd_PageLogoLink
{
vertical-align: middle;
text-decoration: none;
}
#gsfx_brnd_PageLogo
{
vertical-align: middle;
}
#gsfx_brnd_PageTitle
{
vertical-align: middle;
color: #fff;
font-size: 22pt;
}
#gsfx_brnd_SearchWrapper
{
position: relative;
margin: 0px 10px;
margin-top: -9px;
z-index: 2;
}
#frmsrch
{
display: inline;
}
#gsfx_bsrch_divQuery
{
height: 24px; /*border:solid 1px #336b95;*/
margin: 5px 0px 5px 5px;
background-color: #ffffff;
float: left;
display: inline;
position: relative;
}
#gsfx_bsrch_options_subcntr
{
background: #ffffff url('/library/images/support/cn/ss_section2.png') left top no-repeat;
border: solid 1px #336b95;
border-top: 0px;
font-size: 0.7em; /*height:65px;*/
line-height: 18px;
padding: 6px 0px;
position: absolute;
width: 100%;
}
#gsfx_bsrch_options
{
background-color: #ffffff;
float: left;
position: absolute;
display: none;
color: Black;
height: 1px;
}
.gsfx_bsrch_chkimg
{
/*visibility:hidden;*/
display: none;
margin: 4px;
}
.gsfx_bsrch_container
{
width: 375px;
height: 32px;
background: url('/library/images/support/cn/ss_live_glass_border.png') right no-repeat;
float: right;
margin: 15px 2px;
position: relative;
}
div.gsfx_srchoptimg_cotnr, .gsfx_catoptimg_cotnr
{
display: block;
margin: 2px 2px 2px 1px;
float: left;
width: 15px;
}
#gsfx_cat_sel_cntnr
{
background-color: #ffffff;
border: solid 1px #336b95;
color: black;
display: none;
font-size: 0.7em;
line-height: 18px;
padding: 4px 1px;
position: absolute;
right: -1px;
}
.gsfx_optsub_cotnr
{
cursor: pointer;
display: block;
float: left;
width: 100%;
}
#gsfx_cat_sel_cntnr a
{
color: black;
}
.gsfx_srchsitename_cotnr
{
display: inline;
float: left;
font-size: 11px;
white-space: pre-wrap;
width: 270px;
}
.gsfx_catopttxt_cotnr
{
display: block;
float: left;
font-size: 11px;
overflow: hidden;
width: 150px;
}
#gsfx_bsrch_logo_div
{
display: inline;
float: right;
margin-right: 6px;
margin-top: 9px;
position: relative;
}
#gsfx_bsrch_logo
{
vertical-align: middle;
cursor: pointer;
}
#gsfx_bsrch_btnimg
{
height: 20px;
width: 20px;
vertical-align: middle;
margin: 0px;
cursor: pointer;
}
#gsfx_cat_sel
{
height: 24px;
width: 13px;
margin-top: 5px;
margin-right: 5px;
float: left;
position: relative;
cursor: pointer;
}
* html #gsfx_bsrch_query
{
vertical-align: bottom;
height: 1.7em;
}
#gsfx_bsrch_divQuery #gsfx_bsrch_query
{
display: inline;
font-size: 11px;
height: 18px;
margin: 1px 0px 1px 2px;
border: 0px;
vertical-align: middle;
padding: 1px;
}
.siteseltxt
{
font-style: italic;
color: #aaaaaa;
}
.gsfx_bsrch_buttonwrap
{
border: 1px solid #000000;
background-color: #fff;
font-size: .7em;
}
.gsfx_bsrch_buttonwrap input
{
background: none;
border: 0px;
}
* html .gsfx_bsrch_buttonwrap
{
padding: 0px;
height: 1.7em;
margin-top: 1px;
padding-top: 1px;
}
#gsfx_bsrch_srch
{
border-left: 0px;
}
#gsfx_bsrch_poweredbycell
{
margin-top: 1px;
padding: 2px 0px;
}
#gsfx_bsrch_poweredbycell span
{
font-size: 7pt;
text-align: right;
}
#gsfx_bsrch_poweredbycell img, #gsfx_bsrch_poweredbycell div
{
vertical-align: middle;
margin: 0px 2px;
}
/*END Header*/
/*START Footer*/
#gsfx_brnd_FooterContainer
{
height: 50px;
}
#gsfx_brnd_SiteFooter
{
color: #ffffff;
font-size: 14pt;
height: 40px;
width: 230px;
line-height: 40px;
margin-left: 10px;
margin-right: 20px;
padding-top: 5px;
text-align: left;
white-space: nowrap;
}
#gsfx_brnd_SiteFooter .gsfx_div_png
{
line-height: normal;
}
#gsfx_brnd_NetworkFooter span
{
color: #fff;
}
#gsfx_brnd_copyright_container
{
padding-top: 6px;
margin-left: 11px;
width: 100px;
height: 100%;
position: relative;
}
#gsfx_brnd_MSLogo, #gsfx_brnd_MSLogoPrint
{
position: relative;
}
#gsfx_brnd_legacy_MSLogo
{
height: 100%;
width: 100%;
position: absolute;
top: 0px;
left: 0px;
float: left;
}
#gsfx_brnd_NetworkFooter td
{
white-space: nowrap;
}
/*END Footer*/
/*START LocalToolBar*/
#gsfx_brnd_LocalToolBar
{
width: 100%;
padding: 0px;
z-index: 3;
}
#gsfx_brnd_LocalLinks
{
margin: 0px;
position: relative;
height: 37px;
background-color: #000;
background-image: url(/library/images/support/cn/topnav_bkgnd.png);
background-repeat: repeat-x;
background-position: left center;
padding-top: 0px;
padding-right: 5px;
padding-bottom: 0px;
padding-left: 5px;
}
#gsfx_brnd_LocalLinks li
{
position: relative; /*IE6 Unclickable Link Hack*/
line-height: 37px;
display: inline;
float: left;
color: #fff;
font-size: 70%;
}
#gsfx_brnd_LocalLinks .gsfx_brnd_LocalSeperator
{
background-image: url(/library/images/support/cn/topnav_section.png);
background-repeat: no-repeat;
background-position: center center;
width: 5px;
padding: 0px;
}
#gsfx_brnd_LocalLinks a
{
float: left;
display: block;
color: #fff;
text-decoration: none;
text-align: center;
padding-left: 10px;
}
#gsfx_brnd_LocalLinks a span
{
height: 100%;
float: left;
padding: 0 20px 0 10px;
}
#gsfx_brnd_LocalLinks .gsfx_brnd_LocalLinkSelected a
{
background-image: url(/library/images/support/cn/topnav.png);
background-repeat: no-repeat;
background-position: left bottom;
}
#gsfx_brnd_LocalLinks .gsfx_brnd_LocalLinkSelected a span
{
cursor: hand;
background-image: url(/library/images/support/cn/topnav.png);
background-repeat: no-repeat;
background-position: right bottom;
}
#gsfx_brnd_LocalLinks a:hover
{
background-image: url(/library/images/support/cn/topnav.png);
background-repeat: no-repeat;
background-position: left top;
}
#gsfx_brnd_LocalLinks a:hover span
{
cursor: hand;
background-image: url(/library/images/support/cn/topnav.png);
background-repeat: no-repeat;
background-position: right top;
}
/*END LocalToolBar*/
/*END Header, Footer and Local Tool Bar*/
/*START Left Nav*/
#leftColumn
{
width: 182px;
}
#gsfx_lnav_LeftNav
{
padding-top: 5px;
font-size: 70%;
background: url('/library/images/support/cn/gsfx_lnav_bgrd.gif') repeat-y;
}
#gsfx_lnav_LeftNav ul
{
margin: 0px;
padding: 0px 2px;
}
#gsfx_lnav_LeftNav li
{
position: relative;
display: inherit;
list-style-type: none;
margin: 0px 0px;
padding: 1px 0px;
height: 100%;
width: 100%;
}
#gsfx_lnav_LeftNav li ul
{
position: absolute;
visibility: hidden;
left: 100%;
margin: -4px -6px;
padding: 3px 0px;
display: inherit;
border: 1px solid #C5DAE8;
background: #EBF4FA;
white-space: nowrap;
}
#gsfx_lnav_LeftNav li ul li ul
{
margin-left: 0px;
margin-right: 0px;
}
#gsfx_lnav_LeftNav li ul li a
{
padding-right: 25px;
}
#gsfx_lnav_LeftNavBottom
{
background: url('/library/images/support/cn/gsfx_lnav_bgrd_end.png') no-repeat top right;
width: 182px;
height: 70px;
}
#gsfx_lnav_LeftNav .gsfx_lnav_title
{
font-weight: bold;
color: #000000;
padding: 0px 4px;
}
#gsfx_lnav_LeftNav a
{
color: #07679A;
text-decoration: none;
padding: 2px 4px;
margin: 0px 4px;
display: inherit;
display: block;
background: url('/library/images/support/cn/gsfx_lnav_highlight.gif') no-repeat -25px 0px;
}
.gsfx_lnav_menulink
{
height: 100%;
width: 10px;
right: 5px;
position: absolute;
margin: 0px 0px;
background: url('/library/images/support/cn/gsfx_lnav_flyout_arrow_left.gif') no-repeat 0px 3px;
}
#gsfx_lnav_LeftNav li ul li a .gsfx_lnav_menulink
{
right: 1px;
}
#gsfx_lnav_LeftNav a:hover, #gsfx_lnav_LeftNav li.gsfx_lnav_submenu li.gsfx_lnav_nomenu a:hover
{
background: url('/library/images/support/cn/gsfx_lnav_highlight.gif') repeat-x bottom;
padding: 1px 3px;
border: 1px solid #ACE0F8;
}
#gsfx_lnav_LeftNav li.gsfx_lnav_submenu ul li.gsfx_lnav_nomenu a:hover, #gsfx_lnav_LeftNav li.gsfx_lnav_submenu ul li.gsfx_lnav_submenu a:hover
{
padding-right: 24px;
}
#gsfx_lnav_LeftNav .gsfx_lnav_lncenter
{
text-align: center;
}
#gsfx_lnav_LeftNav .gsfx_lnav_upmenu ul, #gsfx_lnav_LeftNav .gsfx_lnav_dropmenu .gsfx_lnav_upmenu ul
{
visibility: hidden;
display: none;
}
#gsfx_lnav_LeftNav .gsfx_lnav_dropmenu ul
{
visibility: visible;
display: block;
}
#gsfx_lnav_LeftNav .gsfx_lnav_iframeMatte
{
position: absolute;
top: -1px;
left: -1px;
filter: progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);
}
/*END Left Nav*/
/*MEDIA PRINT*/
#gsfx_brnd_MSLogoPrint
{
display: none;
margin-bottom: 10px;
}
@media print
{
.gsfx_brnd_CornerContainer, #gsfx_brnd_LocalToolBar, #gsfx_brnd_ToolbarShadow, #gsfx_brnd_FooterLinkContainer, #gsfx_brnd_HeaderContainer, #gsfx_brnd_PageHeaderImage, #gsfx_brnd_SiteHeaderImageContainer, #gsfx_brnd_MSLogo, #gsfx_brnd_legacy_MSLogo, #gsfx_brnd_SiteHeader
{
display: none !important;
}
#tocDiv *, #gsfx_brnd_MSLogoPrint
{
display: block !important;
}
#gsfx_brnd_PageWrapper
{
width: auto;
}
#gsfx_brnd_ContentContainer
{
padding: 0px;
}
.gsfx_brnd_SideBorder
{
border: 0px;
}
}
/*End Media Print*/
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=surveytrigger.css
Content-Type: text/css; charset=utf-8; name=surveytrigger.css
Content-Location: http://support.microsoft.com/common/css/fx/surveytrigger.css?76
Content-Transfer-Encoding: 8bit
.surveyInvitationDiv
{
visibility: hidden;
position: absolute;
top: 0;
left: 0;
background-color: white;
margin: 0px;
width: 819px;
z-index: 200;
}
.surveyInvitationDiv iframe
{
width: 819px;
border: solid 1px #10598a;
filter: progid:DXImageTransform.Microsoft.BasicImage(enabled=false); /*a dummy filter to avoid flicking while moving an element with png images, no actual effect*/
}
@media print
{
.surveyInvitationDiv
{
display: none!important;
}
}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=surveycookieutil.js
Content-Type: application/x-javascript; charset=utf-8; name=surveycookieutil.js
Content-Location: http://support.microsoft.com/common/script/fx/surveycookieutil.js?76
Content-Transfer-Encoding: Base64
aWYgKCF3aW5kb3cuTVMpDQp7DQoJTVMgPSB7fTsNCn0NCg0KaWYgKCFNUy5TdXBw
b3J0KQ0Kew0KCU1TLlN1cHBvcnQgPSB7fTsNCn0NCg0KaWYgKCFNUy5TdXBwb3J0
LkZtcykNCnsNCglNUy5TdXBwb3J0LkZtcyA9IHt9Ow0KfQ0KDQppZiAoIU1TLlN1
cHBvcnQuRm1zLkNvb2tpZVV0aWwpDQp7DQoJTVMuU3VwcG9ydC5GbXMuQ29va2ll
VXRpbCA9IHsNCg0KCQlnZXRDb29raWU6IGZ1bmN0aW9uKGtleSkNCgkJew0KCQkJ
dmFyIGVudGl0aWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7Iik7DQoJCQlm
b3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKQ0KCQkJew0K
CQkJCXZhciBqID0gZW50aXRpZXNbaV0uaW5kZXhPZigiPSIpOw0KCQkJCXZhciBz
ID0gZW50aXRpZXNbaV0uc3Vic3RyaW5nKDAsIGopOw0KCQkJCWlmIChzICE9ICIi
ICYmIChzID09IGtleSB8fCBzID09ICIgIiArIGtleSkpDQoJCQkJew0KCQkJCQly
ZXR1cm4gZW50aXRpZXNbaV0uc3Vic3RyaW5nKGogKyAxKTsNCgkJCQl9DQoJCQl9
DQoJCQlyZXR1cm4gbnVsbDsNCgkJfSwNCg0KCQlzZXRDb29raWU6IGZ1bmN0aW9u
KGtleSwgdmFsdWUsIGV4cGlyZXMsIGRvbWFpbiwgcGF0aCkNCgkJew0KCQkJZG9t
YWluID0gZG9tYWluIHx8ICh0eXBlb2YoZ0Nvb2tpZURvbWFpbikgIT0gInVuZGVm
aW5lZCIgPyAoZ0Nvb2tpZURvbWFpbiB8fCBkb2N1bWVudC5kb21haW4pIDogZG9j
dW1lbnQuZG9tYWluKTsNCgkJCXBhdGggPSBwYXRoIHx8ICIvIjsNCgkJCWRvY3Vt
ZW50LmNvb2tpZSA9IGtleSArICI9IiArIHZhbHVlICsgIjsgZG9tYWluPSIgKyBk
b21haW4gKyAiOyBwYXRoPSIgKyBwYXRoICsgIjsgIiArIChleHBpcmVzID8gKCJl
eHBpcmVzPSIgKyBleHBpcmVzLnRvR01UU3RyaW5nKCkgKyAiOyIpIDogIiIpOw0K
CQl9LA0KDQoJCXNldFNlc3Npb25Db29raWU6IGZ1bmN0aW9uKGtleSwgdmFsdWUs
IGRvbWFpbiwgcGF0aCkNCgkJew0KCQkJdGhpcy5zZXRDb29raWUoa2V5LCB2YWx1
ZSwgbnVsbCwgZG9tYWluLCBwYXRoKTsNCgkJfSwNCg0KCQlyZW1vdmVDb29raWU6
IGZ1bmN0aW9uKGtleSwgZG9tYWluLCBwYXRoKQ0KCQl7DQoJCQl0aGlzLnNldENv
b2tpZShrZXksICIiLCAobmV3IERhdGUoMCwgMCwgMCkpLCBkb21haW4sIHBhdGgp
Ow0KCQl9LA0KDQoJCS8va2V5PXN1YmtleTE9dmFsdWUxJnN1YmtleTI9dmFsdWUy
DQoJCWdldFN1YkNvb2tpZTogZnVuY3Rpb24oa2V5LCBzdWJrZXkpDQoJCXsNCgkJ
CXZhciB2YWx1ZSA9IHRoaXMuZ2V0Q29va2llKGtleSk7DQoJCQlpZiAodmFsdWUp
DQoJCQl7DQoJCQkJdmFyIGVudGl0aWVzID0gdmFsdWUuc3BsaXQoIiYiKTsNCgkJ
CQlmb3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKQ0KCQkJ
CXsNCgkJCQkJdmFyIGogPSBlbnRpdGllc1tpXS5pbmRleE9mKCI9Iik7DQoJCQkJ
CXZhciBzID0gZW50aXRpZXNbaV0uc3Vic3RyaW5nKDAsIGopOw0KCQkJCQlpZiAo
cyAhPSAiIiAmJiAocyA9PSBzdWJrZXkpKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4g
ZW50aXRpZXNbaV0uc3Vic3RyaW5nKGogKyAxKTsNCgkJCQkJfQ0KCQkJCX0NCgkJ
CX0NCgkJCXJldHVybiBudWxsOw0KCQl9LA0KDQoJCXNldFN1YkNvb2tpZTogZnVu
Y3Rpb24oa2V5LCBzdWJrZXksIHN1YnZhbHVlLCBleHBpcmVzLCBkb21haW4sIHBh
dGgpDQoJCXsNCgkJCXZhciB2YWx1ZSA9IHRoaXMuZ2V0Q29va2llKGtleSk7DQoJ
CQlpZiAoIXZhbHVlKQ0KCQkJew0KCQkJCXZhbHVlID0gc3Via2V5ICsgJz0nICsg
c3VidmFsdWU7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJdmFyIGNvb2tpZWFy
cmF5ID0gdmFsdWUuc3BsaXQoJyYnKTsNCgkJCQl2YXIgaSA9IDA7DQoJCQkJZm9y
ICg7IGkgPCBjb29raWVhcnJheS5sZW5ndGg7IGkrKykNCgkJCQl7DQoJCQkJCXZh
bHVlID0gY29va2llYXJyYXlbaV07DQoJCQkJCXZhciBjb29raWVuYW1lID0gdmFs
dWUuc3Vic3RyaW5nKDAsIHZhbHVlLmluZGV4T2YoJz0nKSk7DQoJCQkJCWlmIChz
dWJrZXkgPT0gY29va2llbmFtZSkNCgkJCQkJew0KCQkJCQkJY29va2llYXJyYXlb
aV0gPSBjb29raWVuYW1lICsgJz0nICsgc3VidmFsdWU7DQoJCQkJCQlicmVhazsN
CgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoaSA+PSBjb29raWVhcnJheS5sZW5ndGgp
DQoJCQkJew0KCQkJCQljb29raWVhcnJheVtpXSA9IHN1YmtleSArICc9JyArIHN1
YnZhbHVlOw0KCQkJCX0NCgkJCQl2YWx1ZSA9IGNvb2tpZWFycmF5LmpvaW4oJyYn
KTsNCgkJCX0NCgkJCXRoaXMuc2V0Q29va2llKGtleSwgdmFsdWUsIGV4cGlyZXMs
IGRvbWFpbiwgcGF0aCk7DQoJCX0NCgl9DQp9
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=surveytrigger.js
Content-Type: application/x-javascript; charset=utf-8; name=surveytrigger.js
Content-Location: http://support.microsoft.com/common/script/fx/surveytrigger.js?76
Content-Transfer-Encoding: Base64
aWYgKCF3aW5kb3cuTVMpDQp7DQoJTVMgPSB7fTsNCn0NCg0KaWYgKCFNUy5TdXBw
b3J0KQ0Kew0KCU1TLlN1cHBvcnQgPSB7fTsNCn0NCg0KaWYgKCFNUy5TdXBwb3J0
LkZtcykNCnsNCglNUy5TdXBwb3J0LkZtcyA9IHt9Ow0KfQ0KDQppZiAoIU1TLlN1
cHBvcnQuRm1zKQ0Kew0KCU1TLlN1cHBvcnQuRm1zID0ge307DQp9DQoNCmlmICgh
TVMuU3VwcG9ydC5GbXMuU3VydmV5VHJpZ2dlcikNCnsNCglNUy5TdXBwb3J0LkZt
cy5TdXJ2ZXlUcmlnZ2VyID0gZnVuY3Rpb24oZW50aXR5LCBjb25maWcpDQoJew0K
CQl2YXIgY29va2llRG9tYWluID0gY29uZmlnID8gY29uZmlnLnNpdGUuY29va2ll
RG9tYWluIDogdHlwZW9mIChnQ29va2llRG9tYWluKSAhPSAidW5kZWZpbmVkIiA/
IGdDb29raWVEb21haW4gOiBkb2N1bWVudC5kb21haW47DQoNCgkJdmFyIGFuaW1h
dGlvbkZQUyA9IDI0Ow0KCQl2YXIgc3RkdXJhdGlvbiA9IE1hdGgucm91bmQoMTAw
MCAqICgxIC8gYW5pbWF0aW9uRlBTKSk7DQoNCgkJdmFyIGZyYW1lQ291bnQgPSBl
bnRpdHkuQW5pbWF0aW9uRHVyYXRpb24gKiBhbmltYXRpb25GUFM7DQoNCgkJdmFy
IG1vdmVtZW50UFggPSBmYWxzZTsNCgkJdmFyIHN1cnZleUhlaWdodDsNCgkJdmFy
IHN1cnZleVdpZHRoOw0KCQl2YXIgc3VydmV5T2JqOw0KCQl2YXIgZml4ZWRQb3Np
dGlvbiA9IGZhbHNlOw0KCQl2YXIgZG9jdW1lbnRFbGVtZW50ID0gbnVsbDsNCg0K
CQlmdW5jdGlvbiBJc0JhY2tDb21wYXQoKQ0KCQl7DQoJCQlpZiAoZG9jdW1lbnQu
Y29tcGF0TW9kZSA9PSAiQmFja0NvbXBhdCIpDQoJCQl7DQoJCQkJcmV0dXJuIHRy
dWU7DQoJCQl9DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWZ1bmN0aW9u
IGNoZWNrRnJlcXVlbmN5KCkNCgkJew0KCQkJcmV0dXJuICghaXNOYU4oZW50aXR5
LkZyZXF1ZW5jeSkpICYmIChlbnRpdHkuRnJlcXVlbmN5ID4gMCkgJiYgKE1hdGgu
Zmxvb3IoTWF0aC5yYW5kb20oKSAqIGVudGl0eS5GcmVxdWVuY3kpID09IDApOw0K
CQl9DQoNCgkJZnVuY3Rpb24gaXNUcmlnZ2VyU3VwcHJlc3NlZChpZCkNCgkJew0K
CQkJdmFyIHRyaWdnZXJzID0gTVMuU3VwcG9ydC5GbXMuQ29va2llVXRpbC5nZXRT
dWJDb29raWUoJ2Ztc21lbW8nLCAnc3QnKSB8fCAiIjsNCgkJCWlmICgodHJpZ2dl
cnMgKyAnfCcpLmluZGV4T2YoJ3wnICsgaWQgKyAnfCcpID4gLTEpIHJldHVybiB0
cnVlOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJZnVuY3Rpb24gc3VwcHJl
c3NUcmlnZ2dlcihpZCkNCgkJew0KCQkJdmFyIHRyaWdnZXJzID0gTVMuU3VwcG9y
dC5GbXMuQ29va2llVXRpbC5nZXRTdWJDb29raWUoJ2Ztc21lbW8nLCAnc3QnKSB8
fCAiIjsNCgkJCXRyaWdnZXJzICs9ICd8JyArIGlkOw0KCQkJTVMuU3VwcG9ydC5G
bXMuQ29va2llVXRpbC5zZXRTdWJDb29raWUoJ2Ztc21lbW8nLCAnc3QnLCB0cmln
Z2VycywgbnVsbCwgY29va2llRG9tYWluKTsNCgkJfQ0KDQoJCXRoaXMuZ2V0U3Vy
dmV5SWQgPSBmdW5jdGlvbigpDQoJCXsNCgkJCXJldHVybiBwYXJzZUludChlbnRp
dHkuU2NpZC5zcGxpdCgiOyIsIDMpWzJdKSB8fCAwOw0KCQl9DQoNCgkJdGhpcy5n
ZXRTdXJ2ZXlMYW5ndWFnZUNvZGUgPSBmdW5jdGlvbigpDQoJCXsNCgkJCXJldHVy
biBlbnRpdHkuU2NpZC5zcGxpdCgiOyIsIDMpWzFdIHx8ICJFTiI7DQoJCX0NCg0K
CQlmdW5jdGlvbiBnZXRQcmV2ZW50TXVsdGlwbGVSZXNwb25zZXNDb29raWVLZXko
c3VydmV5SWQsIGxhbmd1YWdlKQ0KCQl7DQoJCQlyZXR1cm4gKCJmbXNwbXJfIiAr
IHN1cnZleUlkICsgIl8iICsgbGFuZ3VhZ2UpLnRvVXBwZXJDYXNlKCk7DQoJCX0N
Cg0KCQkvLyB0cnVlIGluZGljYXRlIHRvIGJlIGV4ZWN1dGVkLg0KCQkvLyBmYWxz
ZSBpbmRpY2F0ZSBldmFsdWF0aW9uIG9ubHkuDQoNCgkJdGhpcy50cmlnZ2VySW5p
dCA9IGZ1bmN0aW9uKGV4ZWN1dGluZykNCgkJew0KCQkJLy8gU2luY2UgdGhlIHBh
Z2Ugd2lsbCBiZSBjYWNoZWQgYnkgd2ViIHNlcnZlciwgc28gZXZlbiB3ZSBoYXZl
IHN1cHByZXNzZWQgYSBzcGVjaWZpYyB0cmlnZ2VyLA0KCQkJLy8gaXQgd2lsbCBz
dGlsbCBiZSBjb250YWluZWQgaW4gdGhlIHBhZ2Ugd2hlbiB3ZSBicm93c2UgdGhp
cyBwYWdlIGZvciB0aGUgc2Vjb25kIHRpbWUuDQoJCQkvLyBUaHVzIHdlIGhhdmUg
dG8gY2hlY2sgaWYgaXQgaGFzIGJlZW4gc3VwcHJlc3NlZCBhdCBjbGllbnQgc2lk
ZS4NCgkJCWlmIChpc0RvbWFpblRyYWNraW5nKCkgfHwgKGVudGl0eS5JbnRlcnZh
bFR5cGUgPT0gJ3Nlc3Npb24nICYmIGlzVHJpZ2dlclN1cHByZXNzZWQoZW50aXR5
LlRyaWdnZXJJZCkpKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCg0K
CQkJdmFyIG9wdE91dCA9IE1TLlN1cHBvcnQuRm1zLkNvb2tpZVV0aWwuZ2V0Q29v
a2llKCJmbXNPcHRPdXQiICsgZW50aXR5LlNpdGUudG9VcHBlckNhc2UoKSk7DQoJ
CQlpZiAob3B0T3V0ICYmIG9wdE91dCA9PSAiMSIpDQoJCQl7DQoJCQkJcmV0dXJu
IGZhbHNlOw0KCQkJfQ0KDQoJCQl2YXIgc3VydmV5SWQgPSB0aGlzLmdldFN1cnZl
eUlkKCk7DQoNCgkJCWlmIChzdXJ2ZXlJZCAhPSAwKQ0KCQkJew0KCQkJCXZhciBr
ZXkgPSBnZXRQcmV2ZW50TXVsdGlwbGVSZXNwb25zZXNDb29raWVLZXkodGhpcy5n
ZXRTdXJ2ZXlJZCgpLCB0aGlzLmdldFN1cnZleUxhbmd1YWdlQ29kZSgpKTsNCg0K
CQkJCWlmIChNUy5TdXBwb3J0LkZtcy5Db29raWVVdGlsLmdldENvb2tpZShrZXkp
ID09ICIxIikNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9
DQoNCgkJCXZhciBpc0ZvbGxvd1VwID0gZW50aXR5LkludGVydmFsVHlwZSA9PSAn
Zm9sbG93dXAnID8gdHJ1ZSA6IGZhbHNlOw0KDQoJCQlpZiAoaXNGb2xsb3dVcCkN
CgkJCXsNCgkJCQl2YXIgZm9sbG93dXBDb29raWVLZXkgPSAiZm1zZm9sbG93dXBz
IiArIGVudGl0eS5Db29raWVEZWY7DQoJCQkJaWYgKCFNUy5TdXBwb3J0LkZtcy5D
b29raWVVdGlsLmdldENvb2tpZShmb2xsb3d1cENvb2tpZUtleSkpDQoJCQkJew0K
CQkJCQkvLyBwYWdlIGlzIGxvYWRlZCBmcm9tIGNhY2hlDQoJCQkJCXJldHVybiBm
YWxzZTsNCgkJCQl9DQoJCQkJZWxzZSBpZiAoZXhlY3V0aW5nKQ0KCQkJCXsNCgkJ
CQkJLy8gcmVtb3ZlIGZvbGxvdy11cCBjb29raWUNCgkJCQkJTVMuU3VwcG9ydC5G
bXMuQ29va2llVXRpbC5yZW1vdmVDb29raWUoZm9sbG93dXBDb29raWVLZXksIGNv
b2tpZURvbWFpbik7DQoJCQkJfQ0KCQkJfQ0KDQoJCQl2YXIgTWlsaURheSA9IDg2
NDAwMDAwOw0KCQkJdmFyIG1hdHVyaXR5ID0gMDsNCgkJCXZhciBjdXJEYXRlID0g
bmV3IERhdGUoKTsNCgkJCXZhciB2aXNpdHMgPSBNUy5TdXBwb3J0LkZtcy5Db29r
aWVVdGlsLmdldENvb2tpZShlbnRpdHkuQ29va2llRGVmKTsNCg0KCQkJdmFyIHBh
cnRzID0gbnVsbDsNCg0KCQkJaWYgKHZpc2l0cykNCgkJCXsNCgkJCQlwYXJ0cyA9
IHZpc2l0cy5zcGxpdCgnXycpOw0KCQkJfQ0KDQoJCQl2YXIgZXhwaXJlcyA9IG5l
dyBEYXRlKCk7DQoJCQlleHBpcmVzLnNldEZ1bGxZZWFyKGV4cGlyZXMuZ2V0RnVs
bFllYXIoKSArIDEwKTsNCg0KCQkJdmFyIHJldDsNCgkJCWlmICgoIXZpc2l0cykg
fHwgcGFydHMubGVuZ3RoICE9IDMgfHwgaXNOYU4ocGFydHNbMF0pKQ0KCQkJew0K
CQkJCU1TLlN1cHBvcnQuRm1zLkNvb2tpZVV0aWwuc2V0Q29va2llKGVudGl0eS5D
b29raWVEZWYsICcxXzBfMCcsIGV4cGlyZXMsIGNvb2tpZURvbWFpbik7DQoJCQkJ
cGFydHMgPSBbIjAiLCAiMCIsICIwIl07DQoJCQl9DQoNCgkJCXZhciBvcmlnRGF0
ZSA9IHBhcnNlSW50KHBhcnRzWzFdKTsNCgkJCXZpc2l0cyA9IHBhcnNlSW50KHBh
cnRzWzBdKTsNCgkJCWlmDQoJCQkoDQoJCQkJKGV4ZWN1dGluZyB8fCBjaGVja0Zy
ZXF1ZW5jeSgpKSAmJg0KCQkJCSh2aXNpdHMgPj0gbWF0dXJpdHkpICYmIChpc0Zv
bGxvd1VwIHx8IGZtc1N1cnZleUV4cGlyZWQoZW50aXR5LkV4cGlyYXRpb24pKQ0K
CQkJKQ0KCQkJew0KCQkJCWlmIChleGVjdXRpbmcpDQoJCQkJCU1TLlN1cHBvcnQu
Rm1zLkNvb2tpZVV0aWwuc2V0Q29va2llKGVudGl0eS5Db29raWVEZWYsIHZpc2l0
cyArIDEgKyAnXycgKyBjdXJEYXRlLmdldFRpbWUoKSAvIE1pbGlEYXkgKyAnXycg
KyBlbnRpdHkuRXhwaXJhdGlvbiwgZXhwaXJlcywgY29va2llRG9tYWluKTsNCgkJ
CQlyZXQgPSB0cnVlOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWlmIChleGVj
dXRpbmcpDQoJCQkJCU1TLlN1cHBvcnQuRm1zLkNvb2tpZVV0aWwuc2V0Q29va2ll
KGVudGl0eS5Db29raWVEZWYsIHZpc2l0cyArIDEgKyAnXycgKyBwYXJ0c1sxXSAr
ICdfJyArIHBhcnRzWzJdLCBleHBpcmVzLCBjb29raWVEb21haW4pOw0KCQkJCXJl
dCA9IGZhbHNlOw0KCQkJfQ0KDQoJCQlpZiAoIXJldCAmJiBlbnRpdHkuSW50ZXJ2
YWxUeXBlID09ICdzZXNzaW9uJykNCgkJCQlzdXBwcmVzc1RyaWdnZ2VyKGVudGl0
eS5UcmlnZ2VySWQpOw0KCQkJcmV0dXJuIHJldDsNCgkJfQ0KDQoJCXRoaXMuZmly
ZVRyaWdnZXIgPSBmdW5jdGlvbigpDQoJCXsNCgkJCXZhciBxdWVyeXMgPSB7DQoJ
CQkJIlNjaWQiOiBlbnRpdHkuU2NpZCwNCgkJCQkiWHNsIjogZW50aXR5LlhzbCwN
CgkJCQkiU2l0ZSI6IGVudGl0eS5TaXRlLA0KCQkJCSJUb29sIjogZW50aXR5LlRv
b2xiYXIsDQoJCQkJIlRoZW1lIjogZW50aXR5LlRoZW1lLA0KCQkJCSJTRCI6IGVu
dGl0eS5TaXRlLA0KCQkJCSJTdXJ2ZXlTdHlsZSI6IGVudGl0eS5TdXJ2ZXlTdHls
ZSwNCgkJCQkiU2l0ZVJlZ2lvbiI6IGVudGl0eS5SZWdpb24sDQoJCQkJIlBhZ2VX
aWR0aCI6IGVudGl0eS5QYWdlV2lkdGgsDQoJCQkJIlBhZ2VIZWlnaHQiOiBlbnRp
dHkuUGFnZUhlaWdodCwNCgkJCQkiVXJsIjogZW50aXR5LlJlZmVycmluZ1VSTCwN
CgkJCQkiUDAiOiBlbnRpdHkuUGFyYW1ldGVyc1swXSwNCgkJCQkiUDEiOiBlbnRp
dHkuUGFyYW1ldGVyc1sxXSwNCgkJCQkiUDIiOiBlbnRpdHkuUGFyYW1ldGVyc1sy
XSwNCgkJCQkiUDMiOiBlbnRpdHkuUGFyYW1ldGVyc1szXSwNCgkJCQkiUDQiOiBl
bnRpdHkuUGFyYW1ldGVyc1s0XSwNCgkJCQkiUDUiOiBlbnRpdHkuUGFyYW1ldGVy
c1s1XSwNCgkJCQkiUDYiOiBlbnRpdHkuUGFyYW1ldGVyc1s2XSwNCgkJCQkiUDci
OiBlbnRpdHkuUGFyYW1ldGVyc1s3XSwNCgkJCQkiUDgiOiBlbnRpdHkuUGFyYW1l
dGVyc1s4XSwNCgkJCQkiUDkiOiBlbnRpdHkuUGFyYW1ldGVyc1s5XQ0KCQkJfTsN
Cg0KCQkJaWYgKCF3aW5kb3cuX21zX3N1cHBvcnRfZm1zX3V0aWxpdHlfcGFja2Fn
ZVF1ZXJ5U3RyaW5nKQ0KCQkJew0KCQkJCXdpbmRvdy5fbXNfc3VwcG9ydF9mbXNf
dXRpbGl0eV9wYWNrYWdlUXVlcnlTdHJpbmcgPSBmdW5jdGlvbihvYmopDQoJCQkJ
ew0KCQkJCQl2YXIgcXVlcnlTdHJpbmcgPSAiIjsNCgkJCQkJZm9yICh2YXIga2V5
IGluIG9iaikNCgkJCQkJew0KCQkJCQkJaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShr
ZXkpKQ0KCQkJCQkJew0KCQkJCQkJCXF1ZXJ5U3RyaW5nICs9ICImIiArIGtleSAr
ICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChvYmpba2V5XSk7DQoJCQkJCQl9DQoJ
CQkJCX0NCgkJCQkJcmV0dXJuIHF1ZXJ5U3RyaW5nOw0KCQkJCX0NCgkJCX0NCg0K
CQkJdmFyIFN1cnZleVVSTCA9IGVudGl0eS5QYXRoOw0KDQoJCQlpZiAoY29uZmln
KQ0KCQkJew0KCQkJCVN1cnZleVVSTCA9IGNvbmZpZy5wcm90b2NvbCArICIvLyIg
KyBjb25maWcuaG9zdCArIFN1cnZleVVSTDsNCgkJCX0NCg0KCQkJdmFyIGZ1bGxV
UkwgPSBTdXJ2ZXlVUkwgKyAiPyIgKyBfbXNfc3VwcG9ydF9mbXNfdXRpbGl0eV9w
YWNrYWdlUXVlcnlTdHJpbmcocXVlcnlzKTsNCg0KCQkJLy8gcGFyYW1ldGVycyBh
ZGRlZCBpbiBGTVMgNC4wDQoJCQlpZiAodHlwZW9mIFN0YXRzRG90TmV0ICE9ICJ1
bmRlZmluZWQiICYmIFN0YXRzRG90TmV0KQ0KCQkJew0KCQkJCS8vIFRPRE86IHdl
IG5lZWQgYWRkIHRoZXNlIGFkZHRpb25hbCBwYXJhbWV0ZXJzIHBsdWdpbiB0cmln
Z2VyIGNvbmZpZ3VyYXRpb24gc25pcHBldA0KCQkJCWZ1bGxVUkwgKz0gJyZjdD0n
ICsgKFN0YXRzRG90TmV0LmNvbnRlbnRUeXBlIHx8ICIiKTsNCgkJCQlmdWxsVVJM
ICs9ICcmY2M9JyArIChTdGF0c0RvdE5ldC5Db250ZW50Q3VsdHVyZSB8fCAiIik7
DQoJCQkJZnVsbFVSTCArPSAnJmNpZD0nICsgKFN0YXRzRG90TmV0LmNvbnRlbnRJ
ZCB8fCAiIik7DQoJCQkJZnVsbFVSTCArPSAnJmNsY2lkPScgKyAoU3RhdHNEb3RO
ZXQuY29udGVudExuIHx8ICIiKTsNCgkJCQlmdWxsVVJMICs9ICcmc2M9JyArIChT
dGF0c0RvdE5ldC5TaXRlQ3VsdHVyZSB8fCAiIik7DQoJCQkJZnVsbFVSTCArPSAn
JnNiaWQ9JyArIChTdGF0c0RvdE5ldC5zaXRlQnJhbmRJZCB8fCAiIik7DQoJCQkJ
ZnVsbFVSTCArPSAnJnNzaWQ9JyArIChTdGF0c0RvdE5ldC5zc0lkIHx8ICIiKTsN
CgkJCQlmdWxsVVJMICs9ICcmc3N2ZXI9JyArIChTdGF0c0RvdE5ldC5Tc1ZlcnNp
b24gfHwgIiIpOw0KCQkJCWZ1bGxVUkwgKz0gJyZjcD0nICsgT3V0cHV0RW5jb2Rl
cl9FbmNvZGVVcmwoU3RhdHNEb3ROZXQuQ29udGVudFByb3BlcnRpZXMgfHwgIiIp
Ow0KCQkJfQ0KDQoJCQlpZiAoY29uZmlnKQ0KCQkJew0KCQkJCXF1ZXJ5cyA9IHsN
CgkJCQkJJ2N0JzogY29uZmlnLmNvbnRlbnQudHlwZSwNCgkJCQkJJ2NjJzogY29u
ZmlnLmNvbnRlbnQuY3VsdHVyZSwNCgkJCQkJJ2NpZCc6IGNvbmZpZy5jb250ZW50
LmlkLA0KCQkJCQknY2xjaWQnOiBjb25maWcuY29udGVudC5sY2lkLA0KCQkJCQkn
c2MnOiBjb25maWcuc2l0ZS5jdWx0dXJlLA0KCQkJCQknc2JpZCc6IGNvbmZpZy5z
aXRlLmJyYW5kLA0KCQkJCQknc3NpZCc6IGNvbmZpZy5zaXRlLmlkLA0KCQkJCQkn
c3N2ZXInOiBjb25maWcuc2l0ZS52ZXJzaW9uLA0KCQkJCQknY3AnOiBjb25maWcu
Y29udGVudC5wcm9wZXJ0aWVzDQoJCQkJfTsNCg0KCQkJCWZ1bGxVUkwgKz0gX21z
X3N1cHBvcnRfZm1zX3V0aWxpdHlfcGFja2FnZVF1ZXJ5U3RyaW5nKHF1ZXJ5cyk7
DQoJCQl9DQoNCgkJCWZ1bGxVUkwgKz0gJyZ0cmlnZ2VyPScgKyBlbnRpdHkuVHJp
Z2dlcklkOw0KDQoJCQlpZiAoZW50aXR5LkFsdFN0eWxlKQ0KCQkJew0KCQkJCWZ1
bGxVUkwgKz0gIiZhbHRTdHlsZT0iICsgZW50aXR5LkFsdFN0eWxlICsgIiZyZW5k
ZXJPcHRpb249IiArIGVudGl0eS5SZW5kZXJPcHRpb247DQoJCQl9DQoNCgkJCWlm
IChlbnRpdHkuRW1haWxTdHlsZSA9PSAxKQ0KCQkJCWZ1bGxVUkwgPSBmdWxsVVJM
ICsgJyZlbWFpbHN1cnZleWlkPScgKyBlbnRpdHkuRW1haWxTdXJ2ZXlJRCArICcm
c2Vzc2lvbmlkPS0xJzsNCg0KCQkJaWYgKGVudGl0eS5EaXNwbGF5SW50cm9QYWdl
ICE9ICcxJykNCgkJCQlmdWxsVVJMID0gZnVsbFVSTCArICcmc2hvd3BhZ2U9MSc7
DQoJCQlpZiAoZW50aXR5LlN1cnZleVN0eWxlID09IG51bGwpDQoJCQkJZW50aXR5
LlN1cnZleVN0eWxlID0gInBvcHVwIjsNCgkJCWVudGl0eS5TdXJ2ZXlTdHlsZSA9
IGVudGl0eS5TdXJ2ZXlTdHlsZS50b0xvd2VyQ2FzZSgpOw0KCQkJaWYgKGVudGl0
eS5TdXJ2ZXlTdHlsZSA9PSAiZW1iZWRkZWQiKQ0KCQkJew0KCQkJCWlmIChlbnRp
dHkuRW1iZWRTdXJ2ZXlQcm9tcHQgPT0gJ25vdGhpbmcnKQ0KCQkJCQl3aW5kb3cu
bG9jYXRpb24uaHJlZiA9IGZ1bGxVUkw7DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJ
aWYgKGVudGl0eS5FbWJlZFN1cnZleVByb21wdCAhPSAiIiAmJiB3aW5kb3cuc2Ny
ZWVuVG9wIDwgMTAwMDAgJiYgd2luZG93LmNvbmZpcm0oZW1iZWRTdXJ2ZXlQcm9t
cHQpID09IHRydWUpIC8vdW5sb2FkIGV2ZW50DQoJCQkJCXsNCgkJCQkJCS8vIHdl
IGNhbiBub3QgZG8gYSB3aW5kb3cubG9jYXRpb24uaHJlZiBmb3IgdGhlIHJlZGly
ZWN0aW9uIGJlY2F1c2Ugd2hlbiByZWZyZXNoaW5nIHRoZSB3aW5kb3cgdGhhdCBy
ZWRpcmVjdGlvbiB3b24ndCB3b3JrDQoJCQkJCQkvLyBPcHRpbWFsbHkgaWYgaXQg
aXMgcmVmcmVzaGluZywgd2Ugc2hvdWxkIG5vdCBkbyBzdXJ2ZXkuIEJ1dCB3ZSBo
YXZlIG5vIHdheSB0byBrbm93IGl0IGlzIHJlZnJlc2hpbmcgd2luZG93LCBzbyB3
ZSBrZWVwIHRoZSBiZWhhdmlvciBzYW1lDQoJCQkJCQlkb2N1bWVudC53cml0ZWxu
KCc8aHRtbD48Ym9keT4nKTsNCgkJCQkJCWRvY3VtZW50LndyaXRlbG4oJzxmb3Jt
IG5hbWU9InRoZV9mb3JtIiBhY3Rpb249IicgKyBmdWxsVVJMICsgJyIgbWV0aG9k
PSJwb3N0Ij48XC9mb3JtPicpOw0KCQkJCQkJZG9jdW1lbnQud3JpdGVsbigiPFwv
Ym9keT48XC9odG1sPiIpOw0KCQkJCQkJZG9jdW1lbnQudGhlX2Zvcm0uc3VibWl0
KCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJZnVs
bFVSTCA9IGZ1bGxVUkwudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCJzdXJ2ZXkuYXNw
eCIsICJzdXJ2ZXlpbnZpdGUuYXNweCIpOw0KCQkJCWlmIChlbnRpdHkuRGlzcGxh
eUludHJvUGFnZSA9PSAnMScpDQoJCQkJCWZ1bGxVUkwgPSBmdWxsVVJMICsgJyZz
aG93cGFnZT0xJzsgLy9hbHdheXMgYWRkICZzaG93cGFnZT0xDQoJCQkJaWYgKGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmcj0x
JykgPiAwKQ0KCQkJCQlmdWxsVVJMID0gZnVsbFVSTCArICcmZnI9MSc7DQoJCQkJ
aWYgKGVudGl0eS5FdmVudCA9PSAnb251bmxvYWQnKQ0KCQkJCQlmdWxsVVJMID0g
ZnVsbFVSTCArICcmb251bmxvYWQ9MSc7DQoJCQkJaWYgKGVudGl0eS5PcHRPdXQg
PT0gMSkNCgkJCQl7DQoJCQkJCWZ1bGxVUkwgPSBmdWxsVVJMICsgIiZvcHRvdXQ9
MSI7DQoJCQkJfQ0KCQkJCWZpcmVTdXJ2ZXkoZnVsbFVSTCk7DQoJCQl9DQoJCX0N
Cg0KCQlmdW5jdGlvbiBmaXJlU3VydmV5KGZ1bGxVUkwpDQoJCXsNCgkJCXByZXNl
bnRTdXJ2ZXkoZnVsbFVSTCk7DQoJCX0NCg0KCQlmdW5jdGlvbiBzdXJ2ZXlEaXYo
ZnVsbFVSTCkNCgkJew0KCQkJdmFyIHNkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7DQoJCQlzZC5pZCA9ICJzdXJ2ZXlEaXZCbG9jayI7DQoJCQlzZC5j
bGFzc05hbWUgPSAic3VydmV5SW52aXRhdGlvbkRpdiI7DQoJCQl2YXIgc2kgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsNCgkJCXNpLnNjcm9sbGlu
ZyA9ICdubyc7DQoJCQlzaS5mcmFtZUJvcmRlciA9IDA7DQoJCQlzaS5uYW1lID0g
ImZtc0ludml0YXRpb24iOw0KCQkJc2kuaWQgPSAiZm1zSW52aXRhdGlvbiI7DQoN
CgkJCWlmICghY29uZmlnKQ0KCQkJew0KCQkJCWlmIChlbnRpdHkuSW52aXRhdGlv
bldpZHRoKQ0KCQkJCXsNCgkJCQkJdmFyIHdpZHRoID0gZW50aXR5Lkludml0YXRp
b25XaWR0aCArICJweCI7DQoJCQkJCXNpLnN0eWxlLndpZHRoID0gd2lkdGg7DQoJ
CQkJCXNkLnN0eWxlLndpZHRoID0gd2lkdGg7DQoJCQkJfQ0KCQkJCXNpLnNyYyA9
IGZ1bGxVUkw7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJdmFyIHdpZHRoID0g
Y29uZmlnLmludml0YXRpb24ud2lkdGggfHwgKChlbnRpdHkuSW52aXRhdGlvbldp
ZHRoIHx8IDYwMCkgKyAicHgiKTsNCgkJCQlzaS5zdHlsZS53aWR0aCA9IHdpZHRo
Ow0KCQkJCXNkLnN0eWxlLndpZHRoID0gd2lkdGg7DQoNCgkJCQlmdW5jdGlvbiBi
dWlsZFBsdWdpblRyaWdnZXJJbnZpdGF0aW9uKCkNCgkJCQl7DQoJCQkJCS8vIHZl
cmlmeSBleHBsaWNpdCBkb21haW4gYWdhaW4sIGJlY2F1c2UgZG9jdW1lbnQuZG9t
YWluIG1heSBoYXMgYmVlbiBjaGFuZ2VkIGFmdGVyIHRoZSB0cmlnZ2VyIHNuaXBw
ZXQNCgkJCQkJdmFyIGV4cGxpY2l0RG9tYWluID0gKHdpbmRvdy5sb2NhdGlvbi5o
b3N0bmFtZSAhPSBkb2N1bWVudC5kb21haW4pID8gdHJ1ZSA6IGNvbmZpZy5zaXRl
LmV4cGxpY2l0RG9tYWluOw0KDQoJCQkJCXZhciBwYXJ0cyA9IGVudGl0eS5TY2lk
LnNwbGl0KCI7Iik7DQoNCgkJCQkJY29uZmlnLmVudGl0eSA9IGVudGl0eTsNCg0K
CQkJCQl2YXIgc3VydmV5Q29uZmlnID0gew0KCQkJCQkJInRhcmdldCI6ICJTdXJ2
ZXlJbnZpdGF0aW9uQ29udGVudCIsDQoJCQkJCQkidGVtcGxhdGUiOiAiZGVmYXVs
dCIsDQoJCQkJCQkiZW5hYmxlTFRTIjogZmFsc2UsDQoJCQkJCQkic3VydmV5Ijog
ew0KCQkJCQkJCSJob3N0IjogY29uZmlnLmhvc3QsDQoJCQkJCQkJImxhbmd1YWdl
IjogcGFydHNbMV0sDQoJCQkJCQkJImlkIjogcGFydHNbMl0sDQoJCQkJCQkJImlz
UlRMIjogZW50aXR5LklzUlRMLA0KCQkJCQkJCSJmZWF0dXJlcyI6IFsiVGl0bGUs
SW50cm9kdWN0aW9uLCIgKyAoZW50aXR5Lk9wdE91dCA/ICJPcHRPdXQsIiA6ICIi
KSArICJBY2NlcHRCdXR0b24sRGVjbGluZUJ1dHRvbiIsICIiXSwNCgkJCQkJCQki
aXNJbnZpdGF0aW9uIjogMQ0KCQkJCQkJfSwNCgkJCQkJCSJwYXJhbWV0ZXJzIjog
Y29uZmlnLnBhcmFtZXRlcnMsDQoJCQkJCQkic2l0ZSI6IHsNCgkJCQkJCQkibmFt
ZSI6IGNvbmZpZy5zaXRlLm5hbWUsDQoJCQkJCQkJImN1bHR1cmUiOiBjb25maWcu
c2l0ZS5jdWx0dXJlLA0KCQkJCQkJCSJsY2lkIjogY29uZmlnLnNpdGUubGNpZCwN
CgkJCQkJCQkiaWQiOiBwYXJzZUludChjb25maWcuc2l0ZS5pZCkgfHwgMCwNCgkJ
CQkJCQkiYnJhbmQiOiBwYXJzZUludChjb25maWcuc2l0ZS5icmFuZCkgfHwgMCwN
CgkJCQkJCQkidmVyc2lvbiI6IGNvbmZpZy5zaXRlLnZlcnNpb24gfHwgIiIsDQoJ
CQkJCQkJImV4cGxpY2l0RG9tYWluIjogZXhwbGljaXREb21haW4sDQoJCQkJCQkJ
ImNvb2tpZURvbWFpbiI6IGNvbmZpZy5zaXRlLmNvb2tpZURvbWFpbg0KCQkJCQkJ
fSwNCgkJCQkJCSJjb250ZW50Ijogew0KCQkJCQkJCSJ0eXBlIjogY29uZmlnLmNv
bnRlbnQudHlwZSwNCgkJCQkJCQkiaWQiOiBjb25maWcuY29udGVudC5pZCwNCgkJ
CQkJCQkiY3VsdHVyZSI6IGNvbmZpZy5jb250ZW50LmN1bHR1cmUsDQoJCQkJCQkJ
ImxjaWQiOiBjb25maWcuY29udGVudC5sY2lkLA0KCQkJCQkJCSJwcm9wZXJ0aWVz
IjogY29uZmlnLmNvbnRlbnQucHJvcGVydGllcywNCgkJCQkJCQkiYWdncmVnYXRl
SWQiOiBjb25maWcuY29udGVudC5hZ2dyZWdhdGVJZA0KCQkJCQkJfSwNCgkJCQkJ
CSJ0cmlnZ2VyQ29uZmlnIjogY29uZmlnDQoJCQkJCX07DQoNCgkJCQkJdmFyIHN0
eWxlID0gIjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5ib2R5e2RpcmVjdGlvbjoi
ICsgKGVudGl0eS5Jc1JUTCA/ICJydGwiIDogImx0ciIpICsgIn08L3N0eWxlPiI7
DQoJCQkJCXZhciBoZWFkZXIgPSAiPGRpdiBpZD1cImhlYWRlclwiPiIgKyBjb25m
aWcuaW52aXRhdGlvbi5oZWFkZXIgKyAiPC9kaXY+IjsNCgkJCQkJdmFyIGZvb3Rl
ciA9ICI8ZGl2IGlkPVwiZm9vdGVyXCI+IiArIGNvbmZpZy5pbnZpdGF0aW9uLmZv
b3RlciArICI8L2Rpdj4iOw0KCQkJCQl2YXIgc2NyaXB0ID0gZXhwbGljaXREb21h
aW4gPyAoIjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPmRvY3VtZW50
LmRvbWFpbj1cIiIgKyBkb2N1bWVudC5kb21haW4gKyAiXCI7PC9zY3JpIiArICJw
dD4iKSA6ICIiOw0KDQoJCQkJCXZhciBpZnJhbWVIdG1sID0gIjwhRE9DVFlQRSBo
dG1sIFBVQkxJQyBcIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwv
L0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10
cmFuc2l0aW9uYWwuZHRkXCI+IiArDQoJCQkJCQkJCQkJCSI8aHRtbD4iICsNCgkJ
CQkJCQkJCQkJCSI8aGVhZD4iICsNCgkJCQkJCQkJCQkJCQlzdHlsZSArDQoJCQkJ
CQkJCQkJCQkJc2NyaXB0ICsNCgkJCQkJCQkJCQkJCSI8L2hlYWQ+IiArDQoJCQkJ
CQkJCQkJCQkiPGJvZHkgc3R5bGU9XCJtYXJnaW46MFwiPiIgKw0KCQkJCQkJCQkJ
CQkJCSI8ZGl2IGlkPVwid3JhcHBlclwiPiIgKw0KCQkJCQkJCQkJCQkJCQloZWFk
ZXIgKw0KCQkJCQkJCQkJCQkJCQkiPGRpdiBpZD1cImNvbnRlbnRcIj4iICsNCgkJ
CQkJCQkJCQkJCQkJCSI8ZGl2IGlkPVwiU3VydmV5SW52aXRhdGlvbkNvbnRlbnRc
Ij48L2Rpdj4iICsNCgkJCQkJCQkJCQkJCQkJIjwvZGl2PiIgKw0KCQkJCQkJCQkJ
CQkJCQlmb290ZXIgKw0KCQkJCQkJCQkJCQkJCSI8L2Rpdj4iICsNCgkJCQkJCQkJ
CQkJCSI8L2JvZHk+IiArDQoJCQkJCQkJCQkJCQkiPHNjcmlwdCB0eXBlPVwidGV4
dC9qYXZhc2NyaXB0XCIgc3JjID0iICsgY29uZmlnLnByb3RvY29sICsgIi8vIiAr
IGNvbmZpZy5ob3N0ICsgIi9jb21tb24vc2NyaXB0L2Z4L3N1cnZleXN0cmFwcGVy
LmpzPjwvc2NyIiArICJpcHQ+IiArDQoJCQkJCQkJCQkJCSI8L2h0bWw+IjsNCg0K
CQkJCQl2YXIgc3JjID0gImFib3V0OmJsYW5rIjsNCg0KCQkJCQlpZiAoZXhwbGlj
aXREb21haW4pDQoJCQkJCXsNCgkJCQkJCWlmICh3aW5kb3cubmF2aWdhdG9yLnVz
ZXJBZ2VudC5pbmRleE9mKCJNU0lFIikgPiAtMSB8fCAod2luZG93Lm9wZXJhICYm
IHBhcnNlRmxvYXQob3BlcmEudmVyc2lvbigpKSA+PSA5LjUpKQ0KCQkJCQkJew0K
CQkJCQkJCU1TLlN1cHBvcnQuRm1zLlN1cnZleVRyaWdnZXIuc3VydmV5Q29uZmln
ID0gc3VydmV5Q29uZmlnOw0KCQkJCQkJCU1TLlN1cHBvcnQuRm1zLlN1cnZleVRy
aWdnZXIuaWZyYW1lSHRtbCA9IGlmcmFtZUh0bWw7DQoJCQkJCQkJc3JjID0gImph
dmFzY3JpcHQ6KGZ1bmN0aW9uKCl7ZG9jdW1lbnQub3BlbigpO2RvY3VtZW50LmRv
bWFpbj1cIiIgKyBkb2N1bWVudC5kb21haW4gKyAiXCI7d2luZG93W1wiX21zX3N1
cHBvcnRfZm1zX3N1cnZleUNvbmZpZ1wiXT13aW5kb3cucGFyZW50Lk1TLlN1cHBv
cnQuRm1zLlN1cnZleVRyaWdnZXIuc3VydmV5Q29uZmlnO2RvY3VtZW50LndyaXRl
KHdpbmRvdy5wYXJlbnQuTVMuU3VwcG9ydC5GbXMuU3VydmV5VHJpZ2dlci5pZnJh
bWVIdG1sKTtkb2N1bWVudC5jbG9zZSgpO30pKCk7IjsNCgkJCQkJCX0NCgkJCQkJ
CWVsc2UgaWYgKHdpbmRvdy5vcGVyYSkNCgkJCQkJCXsNCgkJCQkJCQlzcmMgPSAi
amF2YXNjcmlwdDooZnVuY3Rpb24oKXtkb2N1bWVudC5vcGVuKCk7ZG9jdW1lbnQu
ZG9tYWluPVwiIiArIGRvY3VtZW50LmRvbWFpbiArICJcIjtkb2N1bWVudC5jbG9z
ZSgpO30pKCkiOw0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJc2kuc3JjID0gc3Jj
Ow0KCQkJCQljb25maWcuZnVsbFN1cnZleVVybCA9IGZ1bGxVUkw7DQoNCgkJCQkJ
ZnVuY3Rpb24gc2V0dXBJbnZpdGF0aW9uRnJhbWUoKQ0KCQkJCQl7DQoJCQkJCQl0
cnkNCgkJCQkJCXsNCgkJCQkJCQl2YXIgZnJhbWVXaW5kb3cgPSB3aW5kb3dbImZt
c0ludml0YXRpb24iXTsNCgkJCQkJCQl2YXIgZnJhbWVEb2N1bWVudCA9IGZyYW1l
V2luZG93LmRvY3VtZW50Ow0KCQkJCQkJCWZyYW1lRG9jdW1lbnQub3BlbigpOw0K
CQkJCQkJCWZyYW1lV2luZG93WyJfbXNfc3VwcG9ydF9mbXNfc3VydmV5Q29uZmln
Il0gPSBzdXJ2ZXlDb25maWc7DQoJCQkJCQkJZnJhbWVEb2N1bWVudC53cml0ZShp
ZnJhbWVIdG1sKTsNCgkJCQkJCQlmcmFtZURvY3VtZW50LmNsb3NlKCk7DQoJCQkJ
CQl9DQoJCQkJCQljYXRjaCAoZXgpDQoJCQkJCQl7DQoJCQkJCQkJLy8gaWYgZG9j
dW1lbnQuZG9tYWluIHdhcyBjaGFuZ2VkIGFmdGVyIHRyaWdnZXIgc25pcHBldCwg
YWNjZXNzIHRoZSBkb2N1bWVudCBtYXkgY2F1c2UgYW4gZXhjZXB0aW9uDQoJCQkJ
CQl9DQoJCQkJCX0NCg0KCQkJCQlpZiAoKCFleHBsaWNpdERvbWFpbikgfHwgKHdp
bmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSA9PSAtMSkp
DQoJCQkJCXsNCgkJCQkJCXNldHVwSW52aXRhdGlvbkZyYW1lKCk7DQoJCQkJCX0N
CgkJCQl9DQoNCgkJCQkvLyBzZXRUaW1lb3V0IGlzIHJlcXVpcmVkIGhlcmUgdG8g
YWRkcmVzcyBhIGJ1ZyAoNzU4NTUpIG9uIEZpcmVmb3ggMy4wIChub3QgcmVwcm8g
b24gRmlyZWZveCAzLjUpDQoJCQkJd2luZG93LnNldFRpbWVvdXQoYnVpbGRQbHVn
aW5UcmlnZ2VySW52aXRhdGlvbiwgMCk7DQoJCQl9DQoNCgkJCXNkLmFwcGVuZENo
aWxkKHNpKTsNCgkJCWRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChzZCk7DQoN
CgkJCXJldHVybiBzZDsNCgkJfQ0KDQoJCWZ1bmN0aW9uIGhJKG5hbWUsIHZhbHVl
KQ0KCQl7DQoJCQl2YXIgaW5wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5w
dXQiKTsNCgkJCWlucC50eXBlID0gImhpZGRlbiI7DQoJCQlpbnAubmFtZSA9IG5h
bWU7DQoJCQlpbnAudmFsdWUgPSB2YWx1ZTsNCgkJCXJldHVybiBpbnA7DQoJCX0N
Cg0KCQlmdW5jdGlvbiBkZWNsaW5lU3VydmV5KGVsKQ0KCQl7DQoJCQl3aGlsZSAo
ZWwuY2xhc3NOYW1lICE9ICJzdXJ2ZXlJbnZpdGF0aW9uRGl2IikgZWwgPSBlbC5w
YXJlbnROb2RlOw0KCQkJZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7DQoJ
CX0NCg0KCQlmdW5jdGlvbiBjbG9zZUVub3VnaChpbnQxLCBpbnQyKQ0KCQl7DQoJ
CQlpZiAoTWF0aC5hYnMoaW50MSAtIGludDIpIDw9IG1vdmVtZW50UFgpIHJldHVy
biB0cnVlOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJZnVuY3Rpb24gY2Fs
Y1hZKGN1cnJlbnQsIHRhcmdldCkNCgkJew0KCQkJaWYgKCFjbG9zZUVub3VnaChj
dXJyZW50LCB0YXJnZXQpKQ0KCQkJew0KCQkJCXZhciBkZWx0YSA9IGN1cnJlbnQg
LSB0YXJnZXQ7DQoJCQkJdmFyIGRpciA9IGRlbHRhIC8gTWF0aC5hYnMoZGVsdGEp
Ow0KCQkJCXJldHVybiBjdXJyZW50IC0gbW92ZW1lbnRQWCAqIGRpcjsNCgkJCX0N
Cg0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJZnVuY3Rpb24gaXNSVEwoKQ0K
CQl7DQoJCQlpZiAoKCFmaXhlZFBvc2l0aW9uKSAmJiBkb2N1bWVudEVsZW1lbnQu
Y3VycmVudFN0eWxlICYmIGRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUuYmxv
Y2tEaXJlY3Rpb24gPT0gInJ0bCIpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJ
CQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9
DQoNCgkJZnVuY3Rpb24gZ2V0RnJhbWVYKCkNCgkJew0KCQkJdmFyIHggPSBwYXJz
ZUludChpc1JUTCgpID8gc3VydmV5T2JqLnN0eWxlLnJpZ2h0IDogc3VydmV5T2Jq
LnN0eWxlLmxlZnQpOw0KCQkJcmV0dXJuIGlzTmFOKHgpID8gMCA6IHg7DQoJCX0N
Cg0KCQlmdW5jdGlvbiBnZXRGcmFtZVkoKQ0KCQl7DQoJCQl2YXIgeSA9IHBhcnNl
SW50KHN1cnZleU9iai5zdHlsZS50b3ApOw0KCQkJcmV0dXJuIGlzTmFOKHkpID8g
MCA6IHk7DQoJCX0NCg0KCQlmdW5jdGlvbiBnZXRUYXJnZXRGcmFtZVgoKQ0KCQl7
DQoJCQlyZXR1cm4gZ2V0V2luZG93Q2VudGVyWCgpIC0gc3VydmV5V2lkdGggLyAy
Ow0KCQl9DQoNCgkJZnVuY3Rpb24gZ2V0VGFyZ2V0RnJhbWVZKCkNCgkJew0KCQkJ
cmV0dXJuIGdldFdpbmRvd0NlbnRlclkoKSAtIHN1cnZleUhlaWdodCAvIDI7DQoJ
CX0NCg0KCQlmdW5jdGlvbiBzZXRGcmFtZVgoeCkNCgkJew0KCQkJaWYgKGlzUlRM
KCkpDQoJCQl7DQoJCQkJc3VydmV5T2JqLnN0eWxlLnJpZ2h0ID0geCArICJweCI7
DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJc3VydmV5T2JqLnN0eWxlLmxlZnQg
PSB4ICsgInB4IjsNCgkJCX0NCgkJfQ0KDQoJCWZ1bmN0aW9uIHNldEZyYW1lWSh5
KQ0KCQl7DQoJCQlzdXJ2ZXlPYmouc3R5bGUudG9wID0geSArICJweCI7DQoJCX0N
Cg0KCQlmdW5jdGlvbiBtb3ZlRnJhbWVUbyh4LCB5KQ0KCQl7DQoJCQlzZXRGcmFt
ZVgoeCk7DQoJCQlzZXRGcmFtZVkoeSk7DQoJCX0NCg0KCQlmdW5jdGlvbiBnZXRT
Y3JvbGxYKCkNCgkJew0KCQkJaWYgKCFmaXhlZFBvc2l0aW9uKQ0KCQkJew0KCQkJ
CWlmIChpc1JUTCgpKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIChzdGFuZGFyZERvY3Vt
ZW50LnNjcm9sbFdpZHRoIC0gc3RhbmRhcmREb2N1bWVudC5jbGllbnRXaWR0aCAt
IHN0YW5kYXJkRG9jdW1lbnQuc2Nyb2xsTGVmdCk7DQoJCQkJfQ0KCQkJCWVsc2UN
CgkJCQl7DQoJCQkJCXJldHVybiBzdGFuZGFyZERvY3VtZW50LnNjcm9sbExlZnQ7
DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXJldHVybiAwOw0KCQkJ
fQ0KCQl9DQoNCgkJZnVuY3Rpb24gZ2V0U2Nyb2xsWSgpDQoJCXsNCgkJCXJldHVy
biAoIWZpeGVkUG9zaXRpb24pID8gc3RhbmRhcmREb2N1bWVudC5zY3JvbGxUb3Ag
OiAwOw0KCQl9DQoNCgkJZnVuY3Rpb24gZ2V0V2luZG93Q2VudGVyWCgpDQoJCXsN
CgkJCXJldHVybiBNYXRoLnJvdW5kKHN0YW5kYXJkRG9jdW1lbnQuY2xpZW50V2lk
dGggLyAyICsgZ2V0U2Nyb2xsWCgpKTsNCgkJfQ0KDQoJCWZ1bmN0aW9uIGdldFdp
bmRvd0NlbnRlclkoKQ0KCQl7DQoJCQlyZXR1cm4gTWF0aC5yb3VuZChzdGFuZGFy
ZERvY3VtZW50LmNsaWVudEhlaWdodCAvIDIgKyBnZXRTY3JvbGxZKCkpOw0KCQl9
DQoNCgkJZnVuY3Rpb24gYW5pbWF0ZVN1cnZleSgpDQoJCXsNCgkJCWNhbGNGUFMo
KTsNCgkJCXZhciB4ID0gY2FsY1hZKGdldEZyYW1lWCgpLCBnZXRUYXJnZXRGcmFt
ZVgoKSk7DQoJCQl2YXIgeSA9IGNhbGNYWShnZXRGcmFtZVkoKSwgZ2V0VGFyZ2V0
RnJhbWVZKCkpOw0KCQkJaWYgKHggIT0gZmFsc2UgfHwgeSAhPSBmYWxzZSkNCgkJ
CXsNCgkJCQlpZiAoeCAhPSBmYWxzZSkNCgkJCQl7DQoJCQkJCXNldEZyYW1lWCh4
KTsNCgkJCQl9DQoNCgkJCQlpZiAoeSAhPSBmYWxzZSkNCgkJCQl7DQoJCQkJCXNl
dEZyYW1lWSh5KTsNCgkJCQl9DQoNCgkJCQlzZXRUaW1lb3V0KGFuaW1hdGVTdXJ2
ZXksIHN0ZHVyYXRpb24pOw0KCQkJfQ0KCQl9DQoNCgkJZnVuY3Rpb24gZ2V0UG9z
aXRpb25EZWx0YVgoKQ0KCQl7DQoJCQlyZXR1cm4gTWF0aC5hYnMoZ2V0VGFyZ2V0
RnJhbWVYKCkgLSBnZXRGcmFtZVgoKSk7DQoJCX0NCg0KCQlmdW5jdGlvbiBnZXRQ
b3NpdGlvbkRlbHRhWSgpDQoJCXsNCgkJCXJldHVybiBNYXRoLmFicyhnZXRUYXJn
ZXRGcmFtZVkoKSAtIGdldEZyYW1lWSgpKTsNCgkJfQ0KDQoJCWZ1bmN0aW9uIGZi
cChwMSwgcDIpDQoJCXsNCgkJCWlmICghcDEgfHwgcDEgPCAxKQ0KCQkJew0KCQkJ
CXJldHVybiBwMjsNCgkJCX0NCgkJCXJldHVybiBwMTsNCgkJfQ0KDQoJCWZ1bmN0
aW9uIGNhbGNGUFMoKQ0KCQl7DQoJCQl2YXIgeCA9IGdldFBvc2l0aW9uRGVsdGFY
KCk7DQoJCQl2YXIgeSA9IGdldFBvc2l0aW9uRGVsdGFZKCk7DQoNCgkJCWlmICh5
ID4geCkgeCA9IHk7DQoNCgkJCW1vdmVtZW50UFggPSBNYXRoLmNlaWwoeCAvIGZy
YW1lQ291bnQpOw0KCQl9DQoNCgkJd2luZG93LnBsYWNlU3VydmV5ID0gZnVuY3Rp
b24oKQ0KCQl7DQoJCQlzdXJ2ZXlXaWR0aCA9IGZicChzdXJ2ZXlPYmouY2xpZW50
V2lkdGgsIHN1cnZleU9iai5vZmZzZXRXaWR0aCk7DQoJCQlzdXJ2ZXlIZWlnaHQg
PSBmYnAoc3VydmV5T2JqLmNsaWVudEhlaWdodCwgc3VydmV5T2JqLm9mZnNldEhl
aWdodCk7DQoJCQlzZXRGcmFtZVgoZ2V0VGFyZ2V0RnJhbWVYKCkpOw0KCQkJc3Vy
dmV5T2JqLnN0eWxlLnRvcCA9IDA7DQoJCQlzdXJ2ZXlPYmouc3R5bGUudmlzaWJp
bGl0eSA9ICJ2aXNpYmxlIjsNCg0KCQkJaWYgKHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKQ0KCQkJew0KCQkJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUi
LCBhbmltYXRlU3VydmV5LCBmYWxzZSk7DQoJCQkJc3VydmV5T2JqLnN0eWxlLnBv
c2l0aW9uID0gImZpeGVkIjsNCgkJCQlmaXhlZFBvc2l0aW9uID0gdHJ1ZTsNCgkJ
CX0NCgkJCWVsc2UgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkNCgkJCXsNCgkJCQl3
aW5kb3cuYXR0YWNoRXZlbnQoIm9ucmVzaXplIiwgYW5pbWF0ZVN1cnZleSk7DQoJ
CQkJd2luZG93LmF0dGFjaEV2ZW50KCJvbnNjcm9sbCIsIGFuaW1hdGVTdXJ2ZXkp
Ow0KCQkJfQ0KDQoJCQlhbmltYXRlU3VydmV5KCk7DQoJCX0NCg0KCQlmdW5jdGlv
biBwcmVzZW50U3VydmV5KGZ1bGxVUkwpDQoJCXsNCgkJCWRvY3VtZW50RWxlbWVu
dCA9IGRvY3VtZW50LmJvZHkgPyBkb2N1bWVudC5ib2R5IDogZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50Ow0KCQkJLy8gdGhpcyBvYmplY3QgaXMgZm9yIGdldHRpbmcg
Y2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCBldGMgaW4gZGlmZmVyZW50IERPQ1RZ
UEVzLg0KCQkJc3RhbmRhcmREb2N1bWVudCA9IElzQmFja0NvbXBhdCgpID8gZG9j
dW1lbnRFbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ow0KCQkJaWYg
KGRvY3VtZW50RWxlbWVudCkNCgkJCXsNCgkJCQlzdXJ2ZXlPYmogPSBzdXJ2ZXlE
aXYoZnVsbFVSTCk7DQoJCQl9DQoJCX0NCg0KDQoJCWlmICh0aGlzLnRyaWdnZXJJ
bml0KGZhbHNlKSkNCgkJew0KCQkJdmFyIHRyaWdnZXIgPSB0aGlzOw0KCQkJc2V0
VGltZW91dCgNCgkJCQkJZnVuY3Rpb24gKCkNCgkJCQkJew0KCQkJCQkJaWYgKHRy
aWdnZXIudHJpZ2dlckluaXQodHJ1ZSkpDQoJCQkJCQl7DQoJCQkJCQkJdHJpZ2dl
ci5maXJlVHJpZ2dlcigpOw0KCQkJCQkJfQ0KCQkJCQl9LA0KCQkJCQllbnRpdHku
RGVsYXkNCgkJCQkpOw0KCQl9DQoJCWVsc2UgaWYgKHR5cGVvZiAoYWN0aXZhdGVT
aXRlU3VydmV5KSAhPSAidW5kZWZpbmVkIikNCgkJew0KCQkJYWN0aXZhdGVTaXRl
U3VydmV5KCk7DQoJCX0NCg0KCX0NCn0NCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=search.js
Content-Type: application/x-javascript; charset=utf-8; name=search.js
Content-Location: http://support.microsoft.com/common/script/gsfx/search.js?76
Content-Transfer-Encoding: Base64
77u/LyoNClZhcmlhYmxlIHRvIHN0b3JlIGlmIGxpbmsgaXMgY2xpY2tlZCBvciBu
b3QNCiovDQp2YXIgY2xpY2tlZCA9IGZhbHNlOw0KLyoNCk1vc3QgcmVjZW50IExp
c3QgY291bnQNCiovDQp2YXIgbXJ1TGlzdENvdW50ID0gMDsNCg0KLy8gdGhpcyB2
YWx1ZSB3aWxsIGJlIGFzc2lnbmVkIGZyb20gdGhlIHNlcnZlci1zaWRlIGNvZGUN
CnZhciBleHRyYU9wID0gJyc7DQoNCnZhciBzdXBwb3J0ZWRTaXRlcyA9IFtdOw0K
DQp2YXIgY3VycmVudFNpdGVJbmRleCA9IDA7DQoNCnZhciBhdmxDYXRhbG9ncyA9
IFtdOw0KdmFyIGN1cnJlbnRDYXRTZWxJbmR4ID0gLTE7DQp2YXIgb3B0Q29udGFp
bmVyID0gbnVsbDsNCg0KdmFyIGlzSUU2ID0gZmFsc2U7DQp2YXIgcHJldkVsZW1l
bnQgPSBudWxsOw0KDQovKg0KRXZlbnRIYW5kbGVyIGZvciBtb3VzZSBvdmVyIGNh
c2Ugb24gYXJyb3cgYnV0dG9uIGltYWdlDQoqLw0KZnVuY3Rpb24gYXJyb3dfb3Zl
cihtb3VzZWluKSB7DQogICAgaWYgKG1vdXNlaW4pIHsNCiAgICAgICAgaWYgKGNs
aWNrZWQpIHsNCiAgICAgICAgICAgICQoIiNhcnJvd2ltZyIpLmdldCgwKS5zcmMg
PSBhcnJvd0ltYWdlWyJob3R1cCJdOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgJCgiI2Fycm93aW1nIikuZ2V0KDApLnNyYyA9IGFycm93
SW1hZ2VbImhvdGRvd24iXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsN
CiAgICAgICAgaWYgKGNsaWNrZWQpIHsNCiAgICAgICAgICAgICQoIiNhcnJvd2lt
ZyIpLmdldCgwKS5zcmMgPSBhcnJvd0ltYWdlWyJ1cCJdOw0KICAgICAgICB9DQog
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJCgiI2Fycm93aW1nIikuZ2V0KDAp
LnNyYyA9IGFycm93SW1hZ2VbImRvd24iXTsNCiAgICAgICAgfQ0KICAgIH0NCn0N
Cg0KLyoNClNob3dzIG9yIGhpZGVzIHRoZSBzZWFyY2ggb3B0aW9ucyBiYXNlZCBv
biBidXR0b24gb3IgbGluayBjbGlja2VkDQpmcm9tQnV0dG9uIC0gdHJ1ZSBtZWFu
cyBidXR0b24gaXMgY2xpY2tlZA0KLSBmYWxzZSBtZWFucyBsaW5rIGlzIGNsaWNr
ZWQNCiovDQpmdW5jdGlvbiBzaG93T3JIaWRlU2VhcmNoRGV0YWlscyhmcm9tQnV0
dG9uKSB7DQogICAgaWYgKCQoIiNTZWFyY2hEZXRhaWxzIikuZ2V0KDApLnN0eWxl
LmRpc3BsYXkgPT0gImJsb2NrIikgew0KICAgICAgICAkKCIjc2hvd2hpZGUiKS5n
ZXQoMCkuaW5uZXJIVE1MID0gc2hvd29wdGlvbnM7DQogICAgICAgIGlmIChmcm9t
QnV0dG9uKSB7DQogICAgICAgICAgICAkKCIjYXJyb3dpbWciKS5nZXQoMCkuc3Jj
ID0gYXJyb3dJbWFnZVsiaG90ZG93biJdOw0KICAgICAgICB9DQogICAgICAgIGVs
c2Ugew0KICAgICAgICAgICAgJCgiI2Fycm93aW1nIikuZ2V0KDApLnNyYyA9IGFy
cm93SW1hZ2VbImRvd24iXTsNCiAgICAgICAgfQ0KICAgICAgICAkKCIjU2VhcmNo
RGV0YWlscyIpLmdldCgwKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAg
ICBjbGlja2VkID0gZmFsc2U7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAk
KCIjc2hvd2hpZGUiKS5nZXQoMCkuaW5uZXJIVE1MID0gaGlkZW9wdGlvbnM7DQog
ICAgICAgIGlmIChmcm9tQnV0dG9uKSB7DQogICAgICAgICAgICAkKCIjYXJyb3dp
bWciKS5nZXQoMCkuc3JjID0gYXJyb3dJbWFnZVsiaG90dXAiXTsNCiAgICAgICAg
fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICQoIiNhcnJvd2ltZyIpLmdl
dCgwKS5zcmMgPSBhcnJvd0ltYWdlWyJ1cCJdOw0KICAgICAgICB9DQogICAgICAg
ICQoIiNTZWFyY2hEZXRhaWxzIikuZ2V0KDApLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOw0KICAgICAgICBjbGlja2VkID0gdHJ1ZTsNCg0KICAgICAgICAvLyBhcyBz
b29uIGFzIHRoZSBzZWFyY2ggZGV0YWlscyBhcmUgZXhwYW5kZWQgdGhlIFNlYXJj
aCBNb2RlIHNob3VsZCBiZSBzZXQgdG8gYWR2YW5jZWQNCiAgICAgICAgdHJ5IHsg
JCgnI2ZybWFTcmNoJykuZ2V0KDApLm1vZGUudmFsdWUgPSAiYSIgfSBjYXRjaCAo
ZSkgeyB9DQogICAgfQ0KfQ0KDQp2YXIgc2VhcmNoU3VibWl0ID0gMDsNCmZ1bmN0
aW9uIHN1Ym1pdFNpbXBsZVNlYXJjaCh1cmwsIHF1ZXJ5KSB7DQogICAgaWYgKCF1
cmwgfHwgdXJsLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHVybCA9IEdldEN1cnJl
bnRVcmwoKTsNCiAgICB9DQogICAgaWYgKCQoJyNmcm1zcmNoJykuYXR0cignYWN0
aW9uJykuaW5kZXhPZih1cmwpID4gLTEpIHsNCiAgICAgICAgc3JjaF9zZXRjb29r
aWV2YWwoImxxdWVyeSIsIFVuaWNvZGVGaXh1cChlc2NhcGUoalF1ZXJ5LnRyaW0o
cXVlcnkpKSkpOw0KICAgICAgICBTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25J
ZCA9IFNldExvZ0NvbGxlY3Rpb25CaXQoU3RhdHNEb3ROZXQuZXZlbnRDb2xsZWN0
aW9uSWQsIDYpOw0KICAgICAgICBzZWFyY2hTdWJtaXQgPSAxOw0KICAgICAgICAk
KCcjZnJtc3JjaCcpLmdldCgwKS5zdWJtaXQoKTsNCiAgICAgICAgcmV0dXJuOw0K
ICAgIH0NCg0KICAgIFN0YXRzRG90TmV0Lk9wdGlvbkNvbGxlY3Rpb25JZCA9IFNl
dExvZ0NvbGxlY3Rpb25CaXQoU3RhdHNEb3ROZXQuT3B0aW9uQ29sbGVjdGlvbklk
LCAzMyk7DQogICAgU3RhdHNEb3ROZXQudGFyZ2V0VXJsID0gdXJsICsgcXVlcnk7
DQoNCiAgICBpZiAod2luZG93LmVuY29kZVVSSUNvbXBvbmVudCkgew0KICAgICAg
ICBxdWVyeSA9IGVuY29kZVVSSUNvbXBvbmVudChxdWVyeSk7DQogICAgfQ0KICAg
IGVsc2Ugew0KICAgICAgICBxdWVyeSA9IE91dHB1dEVuY29kZXJfRW5jb2RlVXJs
KHF1ZXJ5KTsNCiAgICB9DQoNCiAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
dXJsICsgcXVlcnk7DQp9DQoNCi8qDQpDYWxsZWQgd2hlbiBmb3JtIGlzIHN1Ym1p
dHRlZCBvbnNlYXJjaCBwYWdlDQoqLw0KZnVuY3Rpb24gU3VibWl0U2VhcmNoKGZy
bSkgew0KICAgIC8vIExvZ2dpbmcgVXNhZ2Ugb2YgcHJvZHVjdCBmcm9tIE1SVSBM
aXN0DQogICAgaWYgKCQoJyNzcGlkYm94JykuZ2V0KDApICYmICQoJyNzcGlkYm94
JykuZ2V0KDApLnNlbGVjdGVkSW5kZXggPCBtcnVMaXN0Q291bnQpIHsNCiAgICAg
ICAgbG9nT3B0aW9uSWQoMzQpOw0KICAgIH0NCg0KICAgIGVsZW0gPSAkKCcjZnJt
YVNyY2gnKS5nZXQoMCkucXVlcnk7DQogICAgc3JjaF9zZXRjb29raWV2YWwoImxx
dWVyeSIsIFVuaWNvZGVGaXh1cChlc2NhcGUoalF1ZXJ5LnRyaW0oZWxlbS52YWx1
ZSkpKSk7DQoNCiAgICB2YXIgcE5hbWUgPSAiIjsNCiAgICBwcmRlbGVtID0gJCgn
I3NwaWRib3gnKS5nZXQoMCk7DQogICAgaWYgKHByZGVsZW0gJiYgcHJkZWxlbS5v
cHRpb25zKSB7DQogICAgICAgIHZhciBwdmFsdWUgPSBwcmRlbGVtLm9wdGlvbnNb
cHJkZWxlbS5zZWxlY3RlZEluZGV4XS52YWx1ZTsNCiAgICAgICAgaWYgKHB2YWx1
ZSAhPSAiIiAmJiBwdmFsdWUgIT0gImdsb2JhbCIgJiYgcHZhbHVlICE9ICJteXBy
b2QiKSB7DQogICAgICAgICAgICBwTmFtZSA9ICIgIiArIHByZGVsZW0ub3B0aW9u
c1twcmRlbGVtLnNlbGVjdGVkSW5kZXhdLnRleHQ7DQogICAgICAgICAgICBzcmNo
X3NldGNvb2tpZXZhbCgiZ3NzU1BJRCIsIHB2YWx1ZSk7DQogICAgICAgIH0NCiAg
ICB9DQogICAgaWYgKCQoJ1tuYW1lPWNhdGFsb2ddJykuZ2V0KDApICE9IG51bGwp
IHsNCiAgICAgICAgZm9yIChzID0gMDsgcyA8ICQoJ1tuYW1lPWNhdGFsb2ddJyku
bGVuZ3RoOyBzKyspIHsNCiAgICAgICAgICAgIGlmICgkKCdbbmFtZT1jYXRhbG9n
XScpLmdldChzKS50eXBlICE9ICJzZWxlY3Qtb25lIikgew0KICAgICAgICAgICAg
ICAgIGlmICgkKCdbbmFtZT1jYXRhbG9nXScpLmdldChzKS5jaGVja2VkKSB7DQog
ICAgICAgICAgICAgICAgICAgIHZhciBtc3VybDsNCiAgICAgICAgICAgICAgICAg
ICAgdmFyIHFyeSA9IGZybS5xdWVyeS52YWx1ZSArIHBOYW1lOw0KICAgICAgICAg
ICAgICAgICAgICBxcnkgPSBqUXVlcnkudHJpbShxcnkpOw0KICAgICAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmVuY29kZVVSSUNvbXBvbmVudCkgeyBxcnkgPSBl
bmNvZGVVUklDb21wb25lbnQocXJ5KTsgfQ0KICAgICAgICAgICAgICAgICAgICBl
bHNlIHsgcXJ5ID0gT3V0cHV0RW5jb2Rlcl9FbmNvZGVVcmwocXJ5KTsgfQ0KICAg
ICAgICAgICAgICAgICAgICBpZiAoJCgnW25hbWU9Y2F0YWxvZ10nKS5nZXQocyku
dmFsdWUgPT0gJ21zYycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRz
RG90TmV0Lk9wdGlvbkNvbGxlY3Rpb25JZCA9IFNldExvZ0NvbGxlY3Rpb25CaXQo
U3RhdHNEb3ROZXQuT3B0aW9uQ29sbGVjdGlvbklkLCAzMyk7DQoNCiAgICAgICAg
ICAgICAgICAgICAgICAgIG1zdXJsID0gbXNjb211cmwgKyBxcnk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbXN1cmw7
DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJCgn
W25hbWU9Y2F0YWxvZ10nKS5nZXQocykudmFsdWUgPT0gJ21zbicpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRzRG90TmV0Lk9wdGlvbkNvbGxlY3Rpb25J
ZCA9IFNldExvZ0NvbGxlY3Rpb25CaXQoU3RhdHNEb3ROZXQuT3B0aW9uQ29sbGVj
dGlvbklkLCAzMyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIG1zdXJsID0g
bXNudXJsICsgcXJ5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHNEb3RO
ZXQudGFyZ2V0VXJsID0gbXN1cmw7DQogICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbXN1cmw7DQogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBzcmNoX3NldGNvb2tpZXZhbCgnYWRjYXRhbG9nJywgZXNjYXBlKCQoJ1tuYW1l
PWNhdGFsb2ddJykuZ2V0KHMpLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgICAgICB2YXIgY2F0YWxvZ0xpc3QgPSAkKCdb
bmFtZT1jYXRhbG9nXScpOw0KICAgICAgICAgICAgICAgIGlmIChjYXRhbG9nTGlz
dCAmJiBjYXRhbG9nTGlzdC5vcHRpb25zKSB7DQogICAgICAgICAgICAgICAgICAg
IHZhciBwdmFsdWUgPSBjYXRhbG9nTGlzdC5vcHRpb25zW2NhdGFsb2dMaXN0LnNl
bGVjdGVkSW5kZXhdLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICBpZiAocHZh
bHVlICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzcmNoX3NldGNv
b2tpZXZhbCgnYWRjYXRhbG9nJywgcHZhbHVlKTsNCiAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgLy9zYXZlIGNhdGFsb2cgaW4g
Y29va2llDQogICAgICAgIHZhciBjYXRhbG9nTGlzdCA9ICQoJyNjYXRhbG9nJyku
Z2V0KDApOw0KICAgICAgICBpZiAoY2F0YWxvZ0xpc3QgJiYgY2F0YWxvZ0xpc3Qu
b3B0aW9ucykgew0KICAgICAgICAgICAgdmFyIHB2YWx1ZSA9IGNhdGFsb2dMaXN0
Lm9wdGlvbnNbY2F0YWxvZ0xpc3Quc2VsZWN0ZWRJbmRleF0udmFsdWU7DQogICAg
ICAgICAgICBpZiAocHZhbHVlICE9ICIiKSB7DQogICAgICAgICAgICAgICAgc3Jj
aF9zZXRjb29raWV2YWwoJ2FkY2F0YWxvZycsIHB2YWx1ZSk7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9DQogICAgU2F2ZVNyY2hTdGF0ZSh0cnVlKTsN
CiAgICBTdGF0c0RvdE5ldC5ldmVudENvbGxlY3Rpb25JZCA9IFNldExvZ0NvbGxl
Y3Rpb25CaXQoU3RhdHNEb3ROZXQuZXZlbnRDb2xsZWN0aW9uSWQsIDcpOw0KICAg
IFBhZ2VTdWJtaXQgPSAxOw0KfQ0KDQpmdW5jdGlvbiBTYXZlU3JjaFN0YXRlKHNh
dmVRdWVyeSkgew0KICAgIGlmIChQYWdlU3VibWl0ID09PSAxKSB7DQogICAgICAg
IHJldHVybjsNCiAgICB9DQoNCiAgICB2YXIgZWxlbTsNCg0KICAgIC8vIHNhdmUg
UXVlcnkgVmFsdWUNCiAgICBpZiAoc2F2ZVF1ZXJ5ID09PSB0cnVlKSB7DQogICAg
ICAgIGVsZW0gPSAkKCcjZnJtYVNyY2gnKS5nZXQoMCkucXVlcnk7DQogICAgICAg
IHNyY2hfc2V0Y29va2lldmFsKCJscXVlcnkiLCBVbmljb2RlRml4dXAoZXNjYXBl
KGpRdWVyeS50cmltKGVsZW0udmFsdWUpKSkpOw0KICAgIH0NCiAgICAvLyBzYXZl
IGNhdGFsb2cuVmFsdWUNCiAgICBlbGVtID0gJCgnW25hbWU9Y2F0YWxvZ10nKTsN
CiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2F0YWxvZ3MNCiAg
ICBpZiAoZWxlbSAmJiBlbGVtLmxlbmd0aCAmJiBlbGVtLnR5cGUgIT0gInNlbGVj
dC1vbmUiKSB7IFNhdmVSYWRpb1N0YXRlKGVsZW0sICJjYXRhbG9nIik7IH0NCg0K
ICAgIC8vIHNhdmUgcmVzIHZhbHVlDQogICAgZWxlbSA9ICQoJyNmcm1hU3JjaCcp
LmdldCgwKS5yZXM7DQogICAgU2F2ZVNlbGVjdFN0YXRlKGVsZW0sICJyZXMiKTsN
Cg0KICAgIHZhciBvcHRjb29raWUgPSAiIjsNCiAgICB2YXIgb3B0cmVzb3VyY2Ug
PSAiIjsNCiAgICAvLyBzYXZlIHNjb3BlIG9wdGlvbnMNCiAgICBpZiAoZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUpIHsNCiAgICAgICAgZWxlbSA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJhc3QiKTsNCiAgICAgICAgZm9yIChpID0gMDsg
aSA8IGVsZW0ubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGlmIChlbGVtW2ld
LmRpc2FibGVkKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAg
ICAgdmFyIG9wdHJvdyA9ICQoJyMnICsgZWxlbVtpXS52YWx1ZSArICdyb3cnKS5n
ZXQoMCk7DQogICAgICAgICAgICBpZiAob3B0cm93ICYmIChvcHRyb3cuc3R5bGUu
ZGlzcGxheSA9PSAiYmxvY2siIHx8IG9wdHJvdy5zdHlsZS5kaXNwbGF5ID09ICIi
KSkgew0KICAgICAgICAgICAgICAgIGlmIChlbGVtW2ldLmNoZWNrZWQpIHsNCiAg
ICAgICAgICAgICAgICAgICAgb3B0Y29va2llICs9ICJhZCIgKyBlbGVtW2ldLnZh
bHVlICsgIj0xfCI7DQogICAgICAgICAgICAgICAgICAgIG9wdHJlc291cmNlICs9
IGVsZW1baV0udmFsdWUgKyAiLCI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBvcHRjb29raWUg
Kz0gImFkIiArIGVsZW1baV0udmFsdWUgKyAiPTB8IjsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsgZWxlbVtpXS52
YWx1ZSA9ICIiOyB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKG9wdEVsZW1z
KSB7DQogICAgICAgIG9wdGlvbnMgPSBvcHRFbGVtcy5zcGxpdCgnfCcpOw0KICAg
ICAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7DQogICAgICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAg
IGVsZW0gPSAkKCcjJyArIG9wdGlvbnNbaV0udG9TdHJpbmcoKSkuZ2V0KDApOw0K
ICAgICAgICAgICAgICAgIGlmIChlbGVtKSB7DQogICAgICAgICAgICAgICAgICAg
IHZhciByYWRpb0NhdGFsb2cgPSAkKCcjJyArIGVsZW0uYXR0cmlidXRlc1snX3Bh
cmVudGlkJ10udmFsdWUpLmdldCgwKTsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KHJhZGlvQ2F0YWxvZy5jaGVja2VkKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZWxlbS5jaGVja2VkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0Y29va2llICs9ICJhZCIgKyBvcHRpb25zW2ldICsgIj0xfCI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0cmVzb3VyY2UgKz0gb3B0aW9uc1tp
XSArICIsIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgeyBvcHRjb29raWUgKz0gImFkIiArIG9wdGlvbnNb
aV0gKyAiPTB8IjsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICB9DQogICAg
c3JjaF9zZXRjb29raWV2YWwoImFkcmVzb3VyY2UiLCBvcHRyZXNvdXJjZSk7DQog
ICAgc3JjaF9zZXRjb29raWV2YWwoImFkb3B0Iiwgb3B0Y29va2llKTsNCn0NCg0K
Ly8gaW5pdGlhbGl6ZSBzaW1wbGUgc2VhcmNoDQpmdW5jdGlvbiBJbml0U3JjaCgp
IHsNCiAgICBpZiAobnVsbCA9PSAkKCcjY2F0YWxvZycpLmdldCgwKSkgew0KICAg
ICAgICAvLyBpZiB0aGUgaGlkZGVuIGNhdGFsb2cgZmllbGQgZG9lcyBub3QgZXhp
c3QgLSBhZGQgaXQgdG8gdGhlIGZvcm0NCiAgICAgICAgLy8gdGhpcyB3aWxsIGhh
cHBlbiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjYXRhbG9ncyBhbmQgc2NyaXB0
aW5nIGlzIE9OLg0KICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7DQogICAgICAgIGVsLmlubmVySFRNTCA9ICI8aW5wdXQgdHlw
ZT0naGlkZGVuJyBpZD0nY2F0YWxvZycgbmFtZT0nY2F0YWxvZycgLz4iOw0KICAg
ICAgICB2YXIgZnJtID0gJCgnI2ZybXNyY2gnKS5nZXQoMCk7DQogICAgICAgIGZy
bS5hcHBlbmRDaGlsZChlbCk7DQogICAgfQ0KDQogICAgLy8gSW5pdGlhbGl6ZSBx
dWVyeSBib3gNCiAgICB2YXIgZWwgPSAkKCcjZ3NmeF9ic3JjaF9xdWVyeScpLmdl
dCgwKTsNCiAgICB0dmFsID0gZmV0Y2hjb29raWV2YWwoImxxdWVyeSIpOw0KICAg
IGlmICh0dmFsICYmIHR2YWwgIT09ICcnICYmIHR2YWwgIT09ICdibGFuaycpIHsN
CiAgICAgICAgaWYgKCQoZWwpLmhhc0NsYXNzKCdzaXRlc2VsdHh0JykpIHsNCiAg
ICAgICAgICAgICQoZWwpLnJlbW92ZUNsYXNzKCdzaXRlc2VsdHh0Jyk7DQogICAg
ICAgIH0NCg0KICAgICAgICBlbC52YWx1ZSA9IHVuZXNjYXBlKFVuaWNvZGVGaXh1
cChqUXVlcnkudHJpbSh0dmFsKSkpOw0KICAgICAgICBzZXRLZXlCaXQoZWwpOw0K
ICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgc2Vh
cmNoIGJveCBmb3IgZmlyc3QtdGltZSB1c2UNCiAgICAgICAgJChlbCkuYmluZCgi
a2V5cHJlc3MgcGFzdGUiLCBzZXRLZXlCaXQpOw0KICAgICAgICBTZXRJbml0VGV4
dChlbCk7DQogICAgfQ0KDQogICAgaWYgKGF2bENhdGFsb2dzLmxlbmd0aCA9PSAw
KQ0KICAgICAgICByZXR1cm47DQoNCiAgICAvLyBpbml0IHRoZSBjYXRhbG9nDQog
ICAgdmFyIGNhdHMgPSAkKCcjZ3NmeF9ic3JjaF9jYXRzZWwgYScpOw0KICAgIHR2
YWwgPSBmZXRjaGNvb2tpZXZhbCgiYWRjYXRhbG9nIik7DQogICAgaWYgKHR2YWwp
IHsNCiAgICAgICAgLy8gaWYgY2F0YWxvZyBjb29raWUgaXMgc2V0IC0gY2xpY2sg
dGhlIGNhdGFsb2cNCiAgICAgICAgdHZhbCA9IHVuZXNjYXBlKHR2YWwpOw0KICAg
ICAgICB2YXIgaSA9IDANCiAgICAgICAgZm9yICg7IGkgPCBhdmxDYXRhbG9ncy5s
ZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYgKGF2bENhdGFsb2dzW2ldLlZh
bHVlID09IHR2YWwpIHsNCiAgICAgICAgICAgICAgICAkKCcjZ3NmeF9jYXRfc2Vs
X2RpdicgKyBpKS5jbGljaygpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGkgPT0gYXZsQ2F0
YWxvZ3MubGVuZ3RoKSB7DQogICAgICAgICAgICBDaGFuZ2VDYXRTZWwoMCk7DQog
ICAgICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIENoYW5nZUNhdFNl
bCgwKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBTYXZlU2ltcGxlU2VhcmNoKHVybCkg
ew0KICAgIGlmIChzZWFyY2hTdWJtaXQgPT0gMSkgew0KICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIC8vIHNhdmUgUXVlcnkgVmFsdWUNCiAg
ICB2YXIgZWwgPSAkKCIjZ3NmeF9ic3JjaF9xdWVyeSIpOw0KICAgIGlmIChlbC5o
YXNDbGFzcygnc2l0ZXNlbHR4dCcpKSB7DQogICAgICAgIGVsLnZhbCgnJyk7DQog
ICAgfQ0KDQogICAgc3VibWl0U2ltcGxlU2VhcmNoKHVybCwgZWwudmFsKCkpOw0K
ICAgIHJldHVybiBmYWxzZTsNCn0NCg0KLy8gTG9hZCB0aGUgcHJvZHVjdCBsaXN0
IGJhc2VkIG9uIGxjaWQgdmFsdWUNCmZ1bmN0aW9uIEZpbGxQcm9kdWN0TGlzdChs
Y2lkcHJvZGxpc3QsIGxjaWRteXByb2RsaXN0LCBteXByb2QpIHsNCiAgICB2YXIg
ZWxlbSA9ICQoIiNwcm9kdWN0ZmlsdGVyIikuZ2V0KDApOw0KICAgIHZhciB2YWx1
ZSA9ICQoJyNzcGlkYm94IG9wdGlvbjpzZWxlY3RlZCcpLnZhbCgpOw0KICAgIHZh
ciBjVmFsdWUgPSBmZXRjaGNvb2tpZXZhbCgiZ3NzU1BJRCIpOw0KICAgIGlmIChl
bGVtKSB7DQogICAgICAgIHZhciBwcm9kdWN0aHRtbCA9ICc8c2VsZWN0IG5hbWU9
InNwaWQiIGlkPSJzcGlkYm94IiBvbmNoYW5nZT0iUHJvZHVjdENoYW5nZWQodGhp
cyk7Ij4nOw0KICAgICAgICBpZiAobXlwcm9kID09ICdmYWxzZScgfHwgbXlwcm9k
ID09ICdGYWxzZScpIHsNCiAgICAgICAgICAgIGlmIChleHRyYU9wICYmIGV4dHJh
T3AgIT0gJycpIHByb2R1Y3RodG1sICs9IGV4dHJhT3A7DQogICAgICAgICAgICBp
ZiAobGNpZHByb2RsaXN0ICYmIGxjaWRwcm9kbGlzdCAhPSAnJykgcHJvZHVjdGh0
bWwgKz0gbGNpZHByb2RsaXN0Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICAgaWYgKGxjaWRteXByb2RsaXN0ICYmIGxjaWRteXByb2RsaXN0
ICE9ICcnKSBwcm9kdWN0aHRtbCArPSBsY2lkbXlwcm9kbGlzdDsNCiAgICAgICAg
fQ0KICAgICAgICBwcm9kdWN0aHRtbCArPSAiPC9zZWxlY3Q+IjsNCiAgICAgICAg
ZWxlbS5pbm5lckhUTUwgPSBwcm9kdWN0aHRtbDsNCiAgICB9DQogICAgdmFyIHBy
ZCA9ICQoJyNzcGlkYm94JykuZ2V0KDApOw0KICAgIGlmICghcHJkKSB7DQogICAg
ICAgIHZhciBhZHZmb3JtcyA9ICQoJyNmcm1hU3JjaCcpLmdldCgwKTsNCiAgICAg
ICAgaWYgKGFkdmZvcm1zLmxlbmd0aCA+PSAyKSB7DQogICAgICAgICAgICBJbml0
U2VsZWN0KCQoJyNzcGlkYm94JykuZ2V0KDApLCAiU1BJRCIsICJnc3MiKTsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBpZiAocHJkICYmIHByZC5vcHRpb25zICYmIHBy
ZC5vcHRpb25zLmxlbmd0aCA+IDApIHsNCiAgICAgICAgaWYgKHZhbHVlICYmIHZh
bHVlICE9IGNWYWx1ZSkgew0KICAgICAgICAgICAga2VlcFNlbGVjdGVkUHJvZHVj
dChwcmQsIHZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgIEluaXRTZWxlY3QocHJkLCAiU1BJRCIsICJnc3MiKTsNCiAgICAgICAg
fQ0KICAgICAgICB2YWx1ZSA9IHByZC5vcHRpb25zW3ByZC5zZWxlY3RlZEluZGV4
XS52YWx1ZQ0KICAgICAgICBEaXNwbGF5UHJvZHVjdEZpbHRlcih2YWx1ZSk7DQog
ICAgfQ0KfQ0KDQpmdW5jdGlvbiBrZWVwU2VsZWN0ZWRQcm9kdWN0KGVsZW0sIHR2
YWwpIHsNCiAgICB2YXIgZmxhZyA9IGZhbHNlOw0KICAgIHZhciBnbG9iYWxJbmRl
eDsNCiAgICBpZiAodHZhbCkgew0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZWxl
bS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAoZWxlbS5v
cHRpb25zW2ldLnZhbHVlID09IHVuZXNjYXBlKHR2YWwpKSB7DQogICAgICAgICAg
ICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gaTsNCiAgICAgICAgICAgICAgICBm
bGFnID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0udmFsdWUgPT0gImds
b2JhbCIpIHsNCiAgICAgICAgICAgICAgICBnbG9iYWxJbmRleCA9IGk7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFmbGFnKSB7DQogICAg
ICAgICAgICBlbGVtLnNlbGVjdGVkSW5kZXggPSBnbG9iYWxJbmRleDsNCiAgICAg
ICAgfQ0KICAgIH0NCn0NCg0KLy9BZHZhbmNlZCBTZWFyY2gNCmZ1bmN0aW9uIElu
aXRBU3JjaCgpIHsNCiAgICB2YXIgZWwsDQogICAgICAgIGYgPSAkKCcjZnJtYVNy
Y2gnKS5nZXQoMCksDQogICAgICAgIHFzdHIgPSAocXVlcnlTdHJpbmdbJ3F1ZXJ5
J10pID8gcXVlcnlTdHJpbmdbJ3F1ZXJ5J10gOiAnJywNCiAgICAgICAgYXN0U3Ry
ID0gKHF1ZXJ5U3RyaW5nWydhc3QnXSAhPT0gdW5kZWZpbmVkKSA/IHF1ZXJ5U3Ry
aW5nWydhc3QnXSA6ICcnOw0KDQogICAgaWYgKHFzdHIgPT0gJycpIHsNCiAgICAg
ICAgLy8gSW5pdGFsaXplIHF1ZXJ5IGJveA0KICAgICAgICBlbCA9IGYucXVlcnk7
DQoNCiAgICAgICAgdmFyIHR2YWwgPSBmZXRjaGNvb2tpZXZhbCgibHF1ZXJ5Iik7
DQogICAgICAgIGlmICh0dmFsKSB7DQogICAgICAgICAgICBlbC52YWx1ZSA9IHVu
ZXNjYXBlKFVuaWNvZGVGaXh1cChqUXVlcnkudHJpbSh0dmFsKSkpOw0KICAgICAg
ICAgICAgc2V0S2V5Qml0KGVsKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsN
CiAgICAgICAgICAgICQoZWwpLmJpbmQoImtleXByZXNzIHBhc3RlIiwgc2V0S2V5
Qml0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIEluaXQgQ2F0YWxvZyBF
bGVtZW50DQogICAgbXVsdGljYXRhbG9nID0gZmFsc2U7DQogICAgZWwgPSBmLmNh
dGFsb2c7DQogICAgaWYgKGVsICE9IG51bGwpIHsNCiAgICAgICAgaWYgKGVsLmxl
bmd0aCAmJiBlbC50eXBlICE9ICJzZWxlY3Qtb25lIikgew0KICAgICAgICAgICAg
SW5pdFJhZGlvKGVsLCAiY2F0YWxvZyIpOw0KICAgICAgICAgICAgbXVsdGljYXRh
bG9nID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAg
ICAgIEluaXRTZWxlY3QoZWwsICJjYXRhbG9nIiwgImFkIik7DQogICAgICAgIH0N
Cg0KICAgICAgICB2YXIgYWxyZWFkeUNoZWNrZWQgPSBmYWxzZTsNCiAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGVsLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBp
ZiAoZWxbaV0uY2hlY2tlZCkgeyBhbHJlYWR5Q2hlY2tlZCA9IHRydWU7IH0NCiAg
ICAgICAgfQ0KDQogICAgICAgIGlmICghYWxyZWFkeUNoZWNrZWQpIHsNCiAgICAg
ICAgICAgIGVsWzBdLmNoZWNrZWQgPSB0cnVlOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgLy9Jbml0YWxpemUgcmVzIGVsZW0NCiAgICBJbml0U2VsZWN0KGYucmVz
LCAicmVzIiwgImFkIik7DQoNCiAgICB2YXIgb3B0Y29va2llID0gbmV3IE9wdGlv
bkNvb2tpZSgpOw0KICAgIC8vIEluaXQgU2NvcGUgT3B0aW9ucyAgICANCiAgICAv
LyBpZiAiYXN0IiBpcyBwcmVzZW50ZWQgb24gcXVlcnkgc3RyaW5nLCB0aGVuIGln
bm9yZSB0aGUgdmFsdWVzIHNhdmVkIGluIGNvb2tpZQ0KICAgIGlmIChhc3RTdHIg
PT0gIiIpIHsNCg0KICAgICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCJhc3QiKTsNCiAgICAgICAgZm9yIChqID0gMDsgaiA8IGVsLmxlbmd0aDsg
aisrKSB7DQogICAgICAgICAgICBpZiAoZWxbal0uZGlzYWJsZWQpIHsNCiAgICAg
ICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IHR2YWwgPSBvcHRjb29raWVbImFkIiArIGVsW2pdLnZhbHVlXTsNCiAgICAgICAg
ICAgIGlmICh0dmFsKSB7DQogICAgICAgICAgICAgICAgZWxbal0uY2hlY2tlZCA9
ICh0dmFsID09PSAnMCcgPyBmYWxzZSA6IHRydWUpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICB2YXIgYXN0QXJy
ID0gYXN0U3RyLnNwbGl0KCcsJyk7DQogICAgICAgICQoJ1tuYW1lPWFzdF0nKS5l
YWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVk
ID09PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICQodGhpcykuYXR0cigiY2hl
Y2tlZCIsICgkLmluQXJyYXkodGhpcy52YWx1ZSwgYXN0QXJyKSA+IC0xID8gdHJ1
ZSA6IGZhbHNlKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0N
CiAgICBpZiAob3B0RWxlbXMpIHsNCiAgICAgICAgb3B0ID0gb3B0RWxlbXMuc3Bs
aXQoJ3wnKTsNCiAgICAgICAgZm9yIChqID0gMDsgaiA8IG9wdC5sZW5ndGg7IGor
Kykgew0KICAgICAgICAgICAgZWwgPSAkKCcjJyArIG9wdFtqXS50b1N0cmluZygp
KS5nZXQoMCk7DQogICAgICAgICAgICBpZiAoZWwpIHsNCiAgICAgICAgICAgICAg
ICB0dmFsID0gb3B0Y29va2llWyJhZCIgKyBvcHRbal1dOw0KICAgICAgICAgICAg
ICAgIGlmICh0dmFsKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0dmFsID09
ICcwJykgZWwuY2hlY2tlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBl
bHNlIGVsLmNoZWNrZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rpb24gSW5pdFNl
bGVjdChlbGVtLCBuYW1lLCBwcmVmaXgsIGlzU2Nhbm5lZCkgew0KICAgIGlmIChl
bGVtICE9IG51bGwpIHsNCiAgICAgICAgdHZhbCA9IGZldGNoY29va2lldmFsKHBy
ZWZpeCArIG5hbWUpOw0KDQogICAgICAgIGlmIChuYW1lID09ICJTUElEIikgew0K
ICAgICAgICAgICAgaWYgKCF0dmFsKSB0dmFsID0gImdsb2JhbCI7DQogICAgICAg
IH0NCg0KICAgICAgICBpZiAodHZhbCkgew0KICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAg
ICAgIGlmIChlbGVtLm9wdGlvbnNbaV0udmFsdWUgPT0gdW5lc2NhcGUodHZhbCkp
IHsNCiAgICAgICAgICAgICAgICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gaTsN
CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQovKg0KRXZlbnQg
aGFuZGxlciBmb3IgY2FzZSB3aGVuIHVzZXIgc2VsZWN0IGEgZGlmZmVyZW50IHBy
b2R1Y3QgZnJvbSB0aGUgY29tYm8NCiovDQpmdW5jdGlvbiBQcm9kdWN0Q2hhbmdl
ZChlbGVtKSB7DQogICAgdmFyIHZhbHVlID0gZWxlbS5vcHRpb25zW2VsZW0uc2Vs
ZWN0ZWRJbmRleF0udmFsdWU7DQogICAgRGlzcGxheVByb2R1Y3RGaWx0ZXIodmFs
dWUpOw0KICAgIGlmICh2YWx1ZS5pbmRleE9mKCJtb3JlXyIpID4gLTEpIHsNCiAg
ICAgICAgdmFyIGVsZW0gPSAkKCcjZnJtYVNyY2gnKS5nZXQoMCkucXVlcnk7DQog
ICAgICAgIHNyY2hfc2V0Y29va2lldmFsKCJscXVlcnkiLCBVbmljb2RlRml4dXAo
ZXNjYXBlKGpRdWVyeS50cmltKGVsZW0udmFsdWUpKSkpOw0KICAgICAgICB2YXIg
dXJsID0gIi9zZWxlY3RpbmRleC9kZWZhdWx0LmFzcHg/dGFyZ2V0PXNlYXJjaCZz
cmVnPSIgKyB2YWx1ZS5zdWJzdHIoNSkgKyAiJmFkdj0xIjsNCiAgICAgICAgdmFy
IGZyID0gcXVlcnlTdHJpbmdbJ2ZyJ107DQogICAgICAgIGlmIChmciA9PSBudWxs
KQ0KICAgICAgICAgICAgZnIgPSBxdWVyeVN0cmluZ1snRlInXTsNCiAgICAgICAg
aWYgKGZyID09ICcxJykNCiAgICAgICAgICAgIHVybCArPSAnJmZyPTEnOw0KDQog
ICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7DQogICAgfQ0KfQ0K
DQovKg0KU2VsZWN0IHJhZGlvIG9wdGlvbg0KKi8NCmZ1bmN0aW9uIFNlbGVjdFJh
ZGlvKGVsZW0sIHR2YWwpIHsNCiAgICBpZiAodHZhbCkgew0KICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZWxlbS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYg
KGVsZW1baV0udmFsdWUgPT0gdW5lc2NhcGUodHZhbCkpIHsNCiAgICAgICAgICAg
ICAgICBlbGVtW2ldLmNoZWNrZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGVs
ZW1baV0uY2xpY2soKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KLyoNCkdldCBzZWxlY3RlZCB2
YWx1ZSBmcm9tIFJhZGlvIG9wdGlvbnMNCiovDQpmdW5jdGlvbiBHZXRTZWxlY3Rl
ZFZhbHVlKGVsZW0pIHsNCiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbS5sZW5ndGg7
IGkrKykgew0KICAgICAgICBpZiAoZWxlbVtpXS5jaGVja2VkKSB7IHJldHVybiBl
c2NhcGUoZWxlbVtpXS52YWx1ZSk7IH0NCiAgICB9DQogICAgcmV0dXJuICcnOw0K
fQ0KDQovKg0KSW5pdGlhbGl6ZSBSYWRpbyBvcHRpb24gaWYgaXQgaXMgbm90IGRp
c2FibGVkDQoqLw0KZnVuY3Rpb24gSW5pdFJhZGlvRXgoZWxlbSwgbmFtZSkgew0K
ICAgIHR2YWwgPSBmZXRjaGNvb2tpZXZhbCgiYWQiICsgbmFtZSk7DQogICAgaWYg
KHR2YWwpIHsNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGVsZW0ubGVuZ3RoOyBp
KyspIHsNCiAgICAgICAgICAgIGlmIChlbGVtW2ldLnZhbHVlID09IHVuZXNjYXBl
KHR2YWwpKSB7DQogICAgICAgICAgICAgICAgaWYgKCFlbGVtW2ldLmRpc2FibGVk
KSB7DQogICAgICAgICAgICAgICAgICAgIGVsZW1baV0uY2hlY2tlZCA9IHRydWU7
DQogICAgICAgICAgICAgICAgICAgIGVsZW1baV0uY2xpY2soKTsNCiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQovKg0KRW5hYmxlcyBhbGwgb3Ro
ZXIgb3B0aW9ucyBpbiBjYXNlIGtiIHByb2R1Y3RzIGNhdGFsb2cgaXMgc2VsZWN0
ZWQNCkRpc2FibGVzIGFsbCBvdGhlciBvcHRpb25zIGlmIGFsbCBtaWNyb3NvZnQg
b3IgaW50ZXJuZXQgaXMgc2VsZWN0ZWQNCiovDQpmdW5jdGlvbiBFbmFibGVTcmNo
T3B0aW9ucyhlbmFibGUpIHsNCiAgICBpZiAoZW5hYmxlKSB7DQogICAgICAgICQo
JyNyZXMnKS5nZXQoMCkuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICB9DQogICAgZWxz
ZSB7DQogICAgICAgICQoJyNyZXMnKS5nZXQoMCkuZGlzYWJsZWQgPSB0cnVlOw0K
ICAgIH0NCn0NCg0KLyoNCkRpc2FibGVzIGFsbCBlbGVtZW50cyBpbnNpZGUgaXQN
CiovDQpmdW5jdGlvbiBkaXNhYmxlQWxsKGVsZW0pIHsNCiAgICBpZiAoZWxlbSA9
PSBudWxsIHx8IGVsZW0gPT0gJ3VuZGVmaW5lZCcgfHwgZWxlbS50YWdOYW1lID09
IG51bGwgfHwgZWxlbS50YWdOYW1lID09ICd1bmRlZmluZWQnKQ0KICAgICAgICBy
ZXR1cm47DQogICAgZWxlbS5kaXNhYmxlZCA9IHRydWU7DQogICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBlbGVtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAg
ICAgZGlzYWJsZUFsbChlbGVtLmNoaWxkTm9kZXNbaV0pOw0KICAgIH0NCn0NCg0K
LyoNCkVuYWJsZXMgYWxsIGVsZW1lbnRzIGluc2lkZSBpdA0KKi8NCmZ1bmN0aW9u
IGVuYWJsZUFsbChlbGVtKSB7DQogICAgaWYgKGVsZW0gPT0gbnVsbCB8fCBlbGVt
ID09ICd1bmRlZmluZWQnIHx8IGVsZW0udGFnTmFtZSA9PSBudWxsIHx8IGVsZW0u
dGFnTmFtZSA9PSAndW5kZWZpbmVkJykNCiAgICAgICAgcmV0dXJuOw0KICAgIGVs
ZW0uZGlzYWJsZWQgPSBmYWxzZTsNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW0uY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICBlbmFibGVBbGwo
ZWxlbS5jaGlsZE5vZGVzW2ldKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIFNlYXJj
aExpdmVDYXRhbG9nKGZybSwgY2F0YWxvZykgew0KICAgIGlmIChjYXRhbG9nID09
IDEpDQogICAgICAgIFN0YXRzRG90TmV0Lk9wdGlvbkNvbGxlY3Rpb25JZCA9IFNl
dExvZ0NvbGxlY3Rpb25CaXQoU3RhdHNEb3ROZXQuT3B0aW9uQ29sbGVjdGlvbklk
LCA1Myk7DQoNCiAgICBpZiAoY2F0YWxvZyA9PSAyKQ0KICAgICAgICBTdGF0c0Rv
dE5ldC5PcHRpb25Db2xsZWN0aW9uSWQgPSBTZXRMb2dDb2xsZWN0aW9uQml0KFN0
YXRzRG90TmV0Lk9wdGlvbkNvbGxlY3Rpb25JZCwgNTQpOw0KDQogICAgJCgnI2xz
YycpLmdldCgwKS52YWx1ZSA9IGNhdGFsb2c7DQogICAgaWYgKGNhdGFsb2cgPT0g
Mikgew0KICAgICAgICAvL3NhdmUgY2F0YWxvZyBpbiBjb29raWUNCiAgICAgICAg
dmFyIGNhdGFsb2dMaXN0ID0gJCgnI2NhdGFsb2cnKS5nZXQoMCk7DQogICAgICAg
IGlmIChjYXRhbG9nTGlzdCAmJiBjYXRhbG9nTGlzdC5vcHRpb25zKSB7DQogICAg
ICAgICAgICB2YXIgcHZhbHVlID0gY2F0YWxvZ0xpc3Qub3B0aW9uc1tjYXRhbG9n
TGlzdC5zZWxlY3RlZEluZGV4XS52YWx1ZTsNCiAgICAgICAgICAgIGlmIChwdmFs
dWUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICBzcmNoX3NldGNvb2tpZXZhbCgn
YWRjYXRhbG9nJywgcHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
DQogICAgICAgIHZhciBtc3VybCwgcXJ5Ow0KICAgICAgICB2YXIgZWxlbSA9ICQo
JyNmcm1hU3JjaCcpLmdldCgwKS5xdWVyeTsNCiAgICAgICAgcXJ5ID0gJCgnI2Zy
bWFTcmNoJykuZ2V0KDApLnF1ZXJ5LnZhbHVlOw0KDQogICAgICAgIHFyeSA9IGpR
dWVyeS50cmltKHFyeSk7DQogICAgICAgIGlmICh3aW5kb3cuZW5jb2RlVVJJQ29t
cG9uZW50KSB7IHFyeSA9IGVuY29kZVVSSUNvbXBvbmVudChxcnkpOyB9DQogICAg
ICAgIGVsc2UgeyBxcnkgPSBPdXRwdXRFbmNvZGVyX0VuY29kZVVybChxcnkpOyB9
DQoNCiAgICAgICAgbXN1cmwgPSBtc251cmwgKyBxcnk7DQogICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhyZWYgPSBtc3VybDsNCiAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgIH0NCiAgICBTdWJtaXRTZWFyY2goZnJtKTsNCiAgICAkKCcjZnJtYVNy
Y2gnKS5nZXQoMCkuc3VibWl0KCk7DQp9DQoNCi8vIHRoaXMgZXZlbnQgaXMgZmly
ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkIGZyb20gdGhlIENhdGFsb2cgZHJv
cGRvd24gaW4gdGhlIEFkdmFuY2VkIFNlYXJjaCBVSQ0KZnVuY3Rpb24gZGRsQ2F0
YWxvZ19jaGFuZ2UoZGRsQ2F0YWxvZywgYWNFbmFibGVkKSB7DQoNCiAgICB2YXIg
Y2hhbmdlQ2F0YWxvZ1NlbCA9IGZhbHNlOw0KICAgIHZhciBkaXZWaXNpYmxlQ2F0
YWxvZyA9IG51bGw7DQoNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRkbENhdGFs
b2cubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgdmFyIGxjaWQgPSBkZGxDYXRhbG9n
W2ldLnZhbHVlLnN1YnN0cmluZyg1KTsNCiAgICAgICAgdmFyIGRpdiA9ICQoJyNk
aXYnICsgbGNpZCkuZ2V0KDApOw0KICAgICAgICBpZiAoZGl2ICE9IG51bGwpIHsN
CiAgICAgICAgICAgIGlmIChkZGxDYXRhbG9nLnZhbHVlID09IGRkbENhdGFsb2db
aV0udmFsdWUpIHsNCiAgICAgICAgICAgICAgICBkaXZWaXNpYmxlQ2F0YWxvZyA9
IGRpdjsNCiAgICAgICAgICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdibG9j
ayc7DQoNCiAgICAgICAgICAgICAgICB2YXIgaW5wdXRzID0gZGl2LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KICAgICAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgaW5wdXRzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAg
ICAgICAgIGlmIChpbnB1dHNbal0udHlwZSA9PSAnY2hlY2tib3gnKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzW2pdLl9wcmV2dmFsdWUgIT0g
bnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0c1tqXS5j
aGVja2VkID0gKGlucHV0c1tqXS5fcHJldnZhbHVlID09ICd0cnVlJyk7DQogICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl
IHsNCiAgICAgICAgICAgICAgICB2YXIgaW5wdXRzID0gZGl2LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdpbnB1dCcpOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgaW5wdXRzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAg
ICAgIGlmIChpbnB1dHNbal0udHlwZSA9PSAncmFkaW8nKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5wdXRzW2pdLmNoZWNrZWQpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlQ2F0YWxvZ1NlbCA9IHRydWU7DQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
KGlucHV0c1tqXS50eXBlID09ICdjaGVja2JveCcpICYmIChkaXYuc3R5bGUuZGlz
cGxheSA9PSAnYmxvY2snKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgdGhlIGNhdGFsb2cgb3B0aW9ucyBhcmUgaGlkZGVuIC0gdGhlIG9wdGlvbnMg
bmVlZCB0byBiZSB1bmNoZWNrZWQgdG8gYXZvaWQgYmVpbmcgc3VibWl0dGVkDQog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNlbGVjdGlvbiBzaG91
bGQgYmUgcHJlc2VydmVkIGZvciBsYXRlciB3aGVuIHRoZSBibG9jayBpcyB2aXNp
YmxlIGFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbal0uX3By
ZXZ2YWx1ZSA9IChpbnB1dHNbal0uY2hlY2tlZCA/ICd0cnVlJyA6ICdmYWxzZScp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzW2pdLmNoZWNrZWQgPSBm
YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmIChhY0VuYWJs
ZWQpIHsNCiAgICAgICAgLy8gY2hhbmdlIHRoZSBMQ0lEIHZhbHVlIGZvciBhdXRv
LWNvbXBsZXRlDQogICAgICAgIGNoYW5nZUxjaWRGb3JTZWxlY3QoZGRsQ2F0YWxv
ZywgJ3F1ZXJ5JywgZGRsQ2F0YWxvZy52YWx1ZSwgZGRsQ2F0YWxvZy5zZWxlY3Rl
ZEluZGV4ICsgJycpOw0KICAgIH0NCg0KICAgIGlmICgoZGl2VmlzaWJsZUNhdGFs
b2cgIT0gbnVsbCkgJiYgY2hhbmdlQ2F0YWxvZ1NlbCkgew0KICAgICAgICAvLyBz
aW11bGF0ZSB0aGUgY2xpY2sgb24gdGhlIGNhdGFsb2cgcmFkaW8gYnV0dG9uDQog
ICAgICAgIHZhciByYWRpbyA9IGRpdlZpc2libGVDYXRhbG9nLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdpbnB1dCcpWzBdOw0KICAgICAgICByYWRpby5jaGVja2VkID0g
dHJ1ZTsNCiAgICAgICAgcmFkaW8ub25jbGljaygpOw0KICAgIH0NCn0NCg0KZnVu
Y3Rpb24gZ3NmeF9ic3JjaF9jaGFuZ2VDYXRTZWxlY3Rpb24oaW5kZXgpIHsNCiAg
ICBDaGFuZ2VDYXRTZWwoaW5kZXgpOw0KDQogICAgc3JjaF9zZXRjb29raWV2YWwo
J2FkY2F0YWxvZycsIGVzY2FwZShhdmxDYXRhbG9nc1tpbmRleF0uVmFsdWUpKTsN
Cn0NCg0KDQpmdW5jdGlvbiBDaGFuZ2VDYXRTZWwoaW5kZXgpIHsNCiAgICAkKCcj
Y2F0YWxvZycpLmdldCgwKS52YWx1ZSA9IGF2bENhdGFsb2dzW2luZGV4XS5WYWx1
ZTsNCiAgICBpZiAoaW5kZXggPT0gY3VycmVudENhdFNlbEluZHgpDQogICAgICAg
IHJldHVybjsNCg0KICAgICQoJyNnc2Z4X2NhdF9zZWxfZGl2JyArIGluZGV4KS5j
c3MoeyAnZm9udC13ZWlnaHQnOiAnYm9sZCcsICdjdXJzb3InOiAnZGVmYXVsdCcg
fSk7DQogICAgJCgnI2dzZnhfY2F0X3NlbF9pbWcnICsgaW5kZXgpLmNzcyh7ICdk
aXNwbGF5JzogJ2Jsb2NrJyB9KTsNCg0KICAgICQoJyNnc2Z4X2NhdF9zZWxfZGl2
JyArIGN1cnJlbnRDYXRTZWxJbmR4KS5jc3MoeyAnZm9udC13ZWlnaHQnOiAnbm9y
bWFsJywgJ2N1cnNvcic6ICdwb2ludGVyJyB9KTsNCiAgICAkKCcjZ3NmeF9jYXRf
c2VsX2ltZycgKyBjdXJyZW50Q2F0U2VsSW5keCkuY3NzKHsgJ2Rpc3BsYXknOiAn
bm9uZScgfSk7DQoNCiAgICBjdXJyZW50Q2F0U2VsSW5keCA9IGluZGV4Ow0KfQ0K
DQpmdW5jdGlvbiBzZWxlY3REcm9wRG93bkl0ZW0oZGRsLCB2YWx1ZSwgZnVuYykg
ew0KICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBkZGwubGVuZ3RoOyBpaSsrKSB7
DQogICAgICAgIGlmIChkZGxbaWldLnZhbHVlID09IHZhbHVlKSB7DQogICAgICAg
ICAgICBkZGxbaWldLnNlbGVjdGVkID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmIChm
dW5jICE9IG51bGwpDQogICAgICAgICAgICAgICAgZnVuYyhkZGwpOw0KICAgICAg
ICAgICAgcmV0dXJuIGlpOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiAt
MTsNCn0NCg0KLy8gdGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIGEgQ2F0YWxvZyBy
YWRpbyBidXR0b24gaXMgY2xpY2tlZDoNCmZ1bmN0aW9uIENhdGFsb2dPcHRpb25f
Y2xpY2soc3JjLCBzY29wZUxDSUQsIGVuYWJsZVNjb3BlT3B0aW9ucykgew0KICAg
IHRyeSB7DQogICAgICAgIGlmICgoc2NvcGVMQ0lEICE9ICcnKSAmJiAoc2NvcGVM
Q0lEICE9IG51bGwpKSB7DQogICAgICAgICAgICBGaWxsUHJvZHVjdExpc3Qoc2Nv
cGVMQ0lELCBudWxsLCAnZmFsc2UnKTsNCiAgICAgICAgfQ0KICAgICAgICBFbmFi
bGVTcmNoT3B0aW9ucyhlbmFibGVTY29wZU9wdGlvbnMpOw0KDQogICAgICAgIC8v
IGdldCBhbGwgY2hlY2tib3hlcw0KICAgICAgICB2YXIgY2F0YWxvZ09wdGlvbnMg
PSAkKCdpbnB1dCcpOw0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGFs
b2dPcHRpb25zLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgcGFyZW50
aWQgPSBjYXRhbG9nT3B0aW9uc1tpXS5hdHRyaWJ1dGVzWyJfcGFyZW50aWQiXTsN
CiAgICAgICAgICAgIC8vIGNoZWNrIG9ubHkgZWxlbWVudHMgd2l0aCBwYXJlbnRp
ZCBkZWZpbmVkICAgIA0KICAgICAgICAgICAgaWYgKChwYXJlbnRpZCAhPSBudWxs
KSAmJiAocGFyZW50aWQgIT0gJ3VuZGVmaW5lZCcpICYmIChwYXJlbnRpZCAhPSAn
JykpIHsNCiAgICAgICAgICAgICAgICBpZiAocGFyZW50aWQudmFsdWUgPT0gc3Jj
LmlkKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIGNhdGFsb2cgaXRlbSBpcyBh
IGNoaWxkIGVsZW1lbnQgb2YgdGhlIGNhdGFsb2cgb3B0aW9uIHdoaWNoIHdhcyBj
bGlja2VkIC0gZW5hYmxlIGl0DQogICAgICAgICAgICAgICAgICAgIGlmIChzcmMu
Y2hlY2tlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ09wdGlv
bnNbaV0uZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNhdGFsb2dPcHRpb25zW2ldLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB2YXIgaHJlZnMgPSBj
YXRhbG9nT3B0aW9uc1tpXS5wYXJlbnROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdhJyk7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPCBocmVmcy5sZW5ndGg7IGluZGV4KyspDQogICAgICAgICAgICAgICAg
ICAgICAgICBlbmFibGVfbGluayhocmVmc1tpbmRleF0pOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAg
ICAgLy8gY2F0YWxvZyBpdGVtIGlzIG5vdCBhIGNoaWxkIGVsZW1lbnQgb2YgY2F0
YWxvZyBvcHRpb24gd2hpY2ggd2FzIGNsaWNrZWQgLSBkaXNhYmxlIGl0DQogICAg
ICAgICAgICAgICAgICAgIGNhdGFsb2dPcHRpb25zW2ldLmRpc2FibGVkID0gdHJ1
ZTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGhyZWZzID0gY2F0YWxvZ09wdGlv
bnNbaV0ucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgaHJl
ZnMubGVuZ3RoOyBpbmRleCsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZGlz
YWJsZV9saW5rKGhyZWZzW2luZGV4XSk7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KICAg
IHsgfQ0KfQ0KDQovLyBub3RlOiB0aGVzZSB0d28gZnVuY3Rpb25zIGhhbmRsZSB0
aGUgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIDxhIGhyZWY9Jyc+IGVsZW1lbnRzIChs
aW5rcykNCi8vIHRoZSByZWFzb24gZm9yIHRoaXMgd29ya2Fyb3VuZCBpcyB0aGF0
IHRoZSAiZGlzYWJsZWQiIGF0dHJpYnV0ZSBpcyBub3QgcGFydCBvZiB0aGUgPEE+
IGVsZW1lbnQgaW4gdGhlIEhUTUwgc3BlY3MuDQpmdW5jdGlvbiBkaXNhYmxlX2xp
bmsoZWxlbSkgew0KICAgIGlmICgoZWxlbS5zdHlsZS52aXNpYmlsaXR5ID09ICd2
aXNpYmxlJykgfHwgKGVsZW0uc3R5bGUudmlzaWJpbGl0eSA9PSAnJykpIHsNCiAg
ICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7
DQogICAgICAgIHNwYW4ubmFtZSA9ICJzcGFuX3BsYWNlaG9sZGVyIjsNCiAgICAg
ICAgc3Bhbi5pbm5lckhUTUwgPSBlbGVtLmlubmVySFRNTDsNCiAgICAgICAgc3Bh
bi5zdHlsZS5jb2xvciA9ICJncmF5IjsNCiAgICAgICAgZWxlbS5wYXJlbnROb2Rl
Lmluc2VydEJlZm9yZShzcGFuLCBlbGVtKTsNCiAgICAgICAgZWxlbS5zdHlsZS52
aXNpYmlsaXR5ID0gJ2hpZGRlbic7DQogICAgfQ0KfQ0KZnVuY3Rpb24gZW5hYmxl
X2xpbmsoZWxlbSkgew0KICAgIGlmIChlbGVtLnN0eWxlLnZpc2liaWxpdHkgPT0g
J2hpZGRlbicpIHsNCiAgICAgICAgdmFyIHNwYW5zID0gZWxlbS5wYXJlbnROb2Rl
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJyk7DQogICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoOyBpKyspDQogICAgICAgICAgICBpZiAo
c3BhbnNbaV0ubmFtZSA9ICdzcGFuX3BsYWNlaG9sZGVyJykNCiAgICAgICAgICAg
ICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3BhbnNbaV0pOw0KICAg
ICAgICBlbGVtLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7DQogICAgfQ0K
fQ0KDQpmdW5jdGlvbiBTYXZlUmFkaW9TdGF0ZShlbGVtLCBuYW1lKSB7DQogICAg
Zm9yIChpID0gMDsgaSA8IGVsZW0ubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgaWYg
KGVsZW1baV0uY2hlY2tlZCkgeyBzcmNoX3NldGNvb2tpZXZhbCgnYWQnICsgbmFt
ZSwgZXNjYXBlKGVsZW1baV0udmFsdWUpKTsgfQ0KICAgIH0NCn0NCmZ1bmN0aW9u
IFNhdmVTZWxlY3RTdGF0ZShlbGVtLCBuYW1lKSB7DQogICAgaWYgKGVsZW0gJiYg
ZWxlbS5vcHRpb25zKSB7DQogICAgICAgIHNyY2hfc2V0Y29va2lldmFsKCdhZCcg
KyBuYW1lLCBlc2NhcGUoZWxlbS5vcHRpb25zW2VsZW0uc2VsZWN0ZWRJbmRleF0u
dmFsdWUpKTsNCiAgICB9DQp9DQoNCi8vIGhpZGUgb3Igc2hvdyB0aGUgcHJvZHVj
dCBmaWx0ZXIgZHJvcCBkb3duIGJhc2VkIG9uIHRoZSB2YWx1ZQ0KZnVuY3Rpb24g
RGlzcGxheVByb2R1Y3RGaWx0ZXIodmFsdWUpIHsNCiAgICB2YXIgcHJkY29sID0g
JCgiI3B3dGNvbCIpLmdldCgwKTsNCiAgICB2YXIgcHJkY29sMSA9ICQoIiNwd3Rj
b2wxIikuZ2V0KDApOw0KICAgIHZhciBwcmRpbWcgPSAkKCIjcHd0aW1nIikuZ2V0
KDApOw0KICAgIGlmIChwcmRjb2wgJiYgcHJkY29sMSAmJiBwcmRpbWcpIHsNCiAg
ICAgICAgaWYgKHZhbHVlID09ICIiIHx8IHZhbHVlID09ICJnbG9iYWwiKSB7DQog
ICAgICAgICAgICBwcmRjb2wuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAg
ICAgICAgIHByZGNvbDEuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAg
ICAgIHByZGltZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICB9DQog
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgaWYgKHByZGNvbC5zdHlsZS5kaXNw
bGF5ICE9ICJibG9jayIgJiYgcHJkY29sLnN0eWxlLmRpc3BsYXkgIT0gIiIpIHsN
CiAgICAgICAgICAgICAgICBwcmRjb2wuc3R5bGUuZGlzcGxheSA9ICIiOw0KICAg
ICAgICAgICAgICAgIHByZGNvbDEuc3R5bGUuZGlzcGxheSA9ICIiOw0KICAgICAg
ICAgICAgICAgIHByZGltZy5zdHlsZS5kaXNwbGF5ID0gIiI7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyB1cGRhdGUgdGhlICJZb3Ug
aGF2ZSBTZWFyY2hlZCBmb3IuLi4iIGxhYmVsDQogICAgdmFyIGVsZW0gPSAkKCcj
c3BpZGJveCcpLmdldCgwKTsNCiAgICAkKCcjdG9wYmFydmFsdWUnKS5nZXQoMCku
aW5uZXJIVE1MID0gZWxlbVtlbGVtLnNlbGVjdGVkSW5kZXhdLmlubmVySFRNTDsN
Cn0NCg0KZnVuY3Rpb24gU2l0ZShuYW1lLCB1cmwsIHNlbGVjdGVkKSB7DQogICAg
dmFyIHJldFZhbCA9DQogICAgew0KICAgICAgICBOYW1lOiBuYW1lLA0KICAgICAg
ICBVcmw6IHVybCwNCiAgICAgICAgU2VsZWN0ZWQ6IHNlbGVjdGVkDQogICAgfTsN
Cg0KICAgIHJldHVybiByZXRWYWw7DQp9DQoNCmZ1bmN0aW9uIENhdGFsb2cobmFt
ZSwgdmFsdWUsIHNlbGVjdGVkKSB7DQogICAgdmFyIHJldFZhbCA9DQogICAgew0K
ICAgICAgICBOYW1lOiBuYW1lLA0KICAgICAgICBWYWx1ZTogdmFsdWUsDQogICAg
ICAgIFNlbGVjdGVkOiBzZWxlY3RlZA0KICAgIH07DQogICAgcmV0dXJuIHJldFZh
bDsNCn0NCmZ1bmN0aW9uIEdldEN1cnJlbnRVcmwoKSB7DQogICAgaWYgKHN1cHBv
cnRlZFNpdGVzICYmIHN1cHBvcnRlZFNpdGVzLmxlbmd0aCA+IDApIHsNCiAgICAg
ICAgcmV0dXJuIHN1cHBvcnRlZFNpdGVzW2N1cnJlbnRTaXRlSW5kZXhdLlVybDsN
CiAgICB9DQp9DQp2YXIgZ3NmeF9ic3JjaF9Jbml0Q2F0U2VsZWN0aW9uID0gZnVu
Y3Rpb24gKHRhcmdldGlkLCBjaGFyc3RyKSB7DQogICAgdmFyIGN2YWwgPSB1bmVz
Y2FwZShmZXRjaGNvb2tpZXZhbCgnYWRjYXRhbG9nJykpOw0KICAgIHZhciBhID0g
MDsNCiAgICB2YXIgaGlnaGxpZ2h0ID0gZmFsc2U7DQogICAgaWYgKGN2YWwpIHsN
CiAgICAgICAgdmFyIGNhdGNvbiA9ICQoJyNnc2Z4X2JzcmNoX2NhdHNlbCcpLmdl
dCgwKTsNCiAgICAgICAgaWYgKGNhdGNvbikgew0KICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjYXRjb24uY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgew0K
ICAgICAgICAgICAgICAgIHZhciBlbCA9IGNhdGNvbi5jaGlsZE5vZGVzW2ldOw0K
ICAgICAgICAgICAgICAgIGlmIChlbCAmJiBlbC50YWdOYW1lICYmIGVsLmdldEF0
dHJpYnV0ZSgnY2F0YWxvZycpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChl
bC5nZXRBdHRyaWJ1dGUoJ2NhdGFsb2cnKSA9PSBjdmFsKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBlbC5jbGFzc05hbWUgKz0gJyBnc2Z4X2JzcmNoX2hpZ2hs
aWdodCc7DQogICAgICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1TLlN1cHBvcnQuQUMuQUNDaGFuZ2VDaGFyU3Rh
cnQodGFyZ2V0aWQsIGNoYXJzdHIuc3BsaXQoJzonKVthXSk7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTVMuU3VwcG9ydC5BQy5BQ1NldExjaWQodGFyZ2V0
aWQsIGN2YWwuc3BsaXQoJz0nKVsxXSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChlKSB7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hs
aWdodCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFz
c05hbWUgPSBlbC5jbGFzc05hbWUucmVwbGFjZSgvKCA/fF4pZ3NmeF9ic3JjaF9o
aWdobGlnaHRcYi9naSwgJycpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAg
ICAgICAgICAgICAgICAgICAgYSsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFoaWdobGlnaHQpIHsNCiAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGNvbi5jaGlsZE5vZGVz
Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBlbCA9IGNh
dGNvbi5jaGlsZE5vZGVzW2ldOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZWwg
JiYgZWwudGFnTmFtZSAmJiBlbC5nZXRBdHRyaWJ1dGUoJ2NhdGFsb2cnKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NOYW1lICs9ICcgZ3NmeF9i
c3JjaF9oaWdobGlnaHQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBDcmVh
dGVTZWFyY2hPcHRpb25zKGlkLCBhY1dpZHRoKSB7DQogICAgb3B0Q29udGFpbmVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7DQogICAgb3B0Q29udGFp
bmVyLmlkID0gJ2dzZnhfYnNyY2hfb3B0aW9ucyc7DQoNCiAgICB2YXIgb3B0U3Vi
Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7DQogICAg
b3B0U3ViQ29udGFpbmVyLmlkID0gJ2dzZnhfYnNyY2hfb3B0aW9uc19zdWJjbnRy
JzsNCg0KICAgIHZhciBvcHRDb2wxX3RlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdESVYnKTsNCiAgICBvcHRDb2wxX3RlbXAuY2xhc3NOYW1lID0gJ2dzZnhf
c3JjaG9wdGltZ19jb3RucicNCg0KICAgIHZhciBvcHRDb2xfdGVtcCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpOw0KICAgIG9wdENvbF90ZW1wLmNsYXNz
TmFtZSA9ICdnc2Z4X29wdHN1Yl9jb3RucicNCg0KICAgIHZhciBvcHRDb2wyX3Rl
bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTsNCiAgICBvcHRDb2wy
X3RlbXAuaWQgPSAnZ3NmeF9zcmNoc2l0ZW5hbWVfZGl2JzsNCiAgICBvcHRDb2wy
X3RlbXAuY2xhc3NOYW1lID0gJ2dzZnhfc3JjaHNpdGVuYW1lX2NvdG5yJzsNCg0K
ICAgIHZhciBpbWdDaGVjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0lNRycp
Ow0KICAgIGltZ0NoZWNrLmlkID0gJ2dzZnhfYnNyY2hfc2l0ZXNlbF9pbWcnOw0K
ICAgIGltZ0NoZWNrLnNyYyA9ICcvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9jbi9z
c19jaGVjay5wbmcnOw0KICAgIGltZ0NoZWNrLmNsYXNzTmFtZSA9ICdnc2Z4X2Jz
cmNoX2Noa2ltZyc7DQoNCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1cHBvcnRl
ZFNpdGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIHZhciBvcHRDb2wyID0gb3B0
Q29sMl90ZW1wLmNsb25lTm9kZSh0cnVlKTsNCiAgICAgICAgb3B0Q29sMi5pZCAr
PSBpOw0KICAgICAgICBvcHRDb2wyLmlubmVySFRNTCA9IHN1cHBvcnRlZFNpdGVz
W2ldLk5hbWUNCg0KICAgICAgICB2YXIgb3B0Q29sMSA9IG9wdENvbDFfdGVtcC5j
bG9uZU5vZGUodHJ1ZSk7DQoNCiAgICAgICAgdmFyIGltZ0VsID0gaW1nQ2hlY2su
Y2xvbmVOb2RlKHRydWUpOw0KICAgICAgICBpbWdFbC5pZCArPSBpOw0KDQogICAg
ICAgIG9wdENvbDEuYXBwZW5kQ2hpbGQoaW1nRWwpOw0KDQogICAgICAgIHZhciBv
cHQgPSBvcHRDb2xfdGVtcC5jbG9uZU5vZGUodHJ1ZSk7DQogICAgICAgIHZhciBs
b2NhbEluZGV4ID0gaTsNCg0KICAgICAgICAkKG9wdCkuYmluZCgiY2xpY2siLCB7
IGluZGV4OiBsb2NhbEluZGV4IH0sIENoYW5nZVNpdGVTZWxlY3Rpb24pOw0KICAg
ICAgICBpZiAoc3VwcG9ydGVkU2l0ZXNbaV0uU2VsZWN0ZWQpIHsNCiAgICAgICAg
ICAgIGltZ0VsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICAgICAg
b3B0Q29sMi5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnOw0KICAgICAgICAgICAg
b3B0LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JzsNCiAgICAgICAgfQ0KICAgICAg
ICBvcHQuYXBwZW5kQ2hpbGQob3B0Q29sMSk7DQogICAgICAgIG9wdC5hcHBlbmRD
aGlsZChvcHRDb2wyKTsNCiAgICAgICAgb3B0U3ViQ29udGFpbmVyLmFwcGVuZENo
aWxkKG9wdCk7DQogICAgfQ0KDQogICAgJChvcHRTdWJDb250YWluZXIpLndpZHRo
KCQoJyNnc2Z4X2JzcmNoX2RpdlF1ZXJ5Jykud2lkdGgoKSk7DQogICAgb3B0Q29u
dGFpbmVyLmFwcGVuZENoaWxkKG9wdFN1YkNvbnRhaW5lcik7DQoNCiAgICB2YXIg
aXNSVEwgPSAkKCdodG1sJykuY3NzKCdkaXJlY3Rpb24nKSA9PSAncnRsJzsNCg0K
ICAgIHZhciBpZTZCZ0RpdiA9ICQoJyNnc2Z4X2JzcmNoX2JnX2llNicpLmdldCgw
KTsNCiAgICBpc0lFNiA9ICQoJyNnc2Z4X2JzcmNoX2JnX2llNicpLmxlbmd0aCA+
IDA7DQogICAgaWYgKGlzSUU2KSB7DQogICAgICAgIGlmIChpc1JUTCkgew0KICAg
ICAgICAgICAgaWU2QmdEaXYuc3R5bGUubGVmdCA9ICQoJyNnc2Z4X2JzcmNoX2Jn
JykuZ2V0KDApLm9mZnNldExlZnQgKyA0Ow0KICAgICAgICB9DQogICAgICAgIGVs
c2Ugew0KICAgICAgICAgICAgaWU2QmdEaXYuc3R5bGUubGVmdCA9ICQoJyNnc2Z4
X2JzcmNoX2JnJykuZ2V0KDApLm9mZnNldExlZnQgLSAyOw0KICAgICAgICB9DQog
ICAgICAgIGllNkJnRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgIH0N
Cg0KICAgIHZhciBhY0RpdiA9ICQoJyMnICsgaWQpLmdldCgwKTsNCiAgICBpZiAo
YWNEaXYpIHsNCiAgICAgICAgYWNEaXYuYXBwZW5kQ2hpbGQob3B0Q29udGFpbmVy
KTsNCiAgICAgICAgJCgnIycgKyBpZCArICcgPiA6Zmlyc3QtY2hpbGQnKS5jc3Mo
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnYm9yZGVyLXRvcCc6ICcwcHgnLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJvdHRvbSc6ICcwcHgnLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzog
JyMzMzZiOTUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFy
Z2luLXRvcCc6ICcwcHgnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
DQoNCiAgICAgICAgaWYgKGlzUlRMKSB7DQogICAgICAgICAgICAkKCcjJyArIGlk
ICsgJyA+IDpmaXJzdC1jaGlsZCcpLmNzcygNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNr
Z3JvdW5kJzogJyNmZmZmZmYgdXJsKFwnL2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQv
Y24vc3Nfc2VjdGlvbjMucG5nXCcpIHJpZ2h0IHRvcCBuby1yZXBlYXQnLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLXJpZ2h0JzogJy0x
cHgnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgIH0N
CiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkKCcjJyArIGlkICsgJyA+IDpm
aXJzdC1jaGlsZCcpLmNzcyh7ICdiYWNrZ3JvdW5kJzogJyNmZmZmZmYgdXJsKFwn
L2xpYnJhcnkvaW1hZ2VzL3N1cHBvcnQvY24vc3Nfc2VjdGlvbjIucG5nXCcpIGxl
ZnQgdG9wIG5vLXJlcGVhdCcgfSk7DQogICAgICAgIH0NCg0KICAgICAgICAkKCcj
JyArIGlkKS5jc3MoeyAnbWFyZ2luLWxlZnQnOiAnLTFweCcsICdoZWlnaHQnOiAn
MHB4JyB9KTsNCg0KICAgICAgICB2YXIgYWNPYmogPSBNUy5TdXBwb3J0LkFDID8g
TVMuU3VwcG9ydC5BQy5BQ0FycmF5RWwoJ2dzZnhfYnNyY2hfcXVlcnknKSA6IG51
bGw7DQogICAgICAgIGlmIChhY09iaikgew0KICAgICAgICAgICAgYWNPYmoub3B0
aW9ucy5oYW5kbGVSZXNpemUgPSBSZXNpemVTaXRlT3B0czsNCiAgICAgICAgICAg
IGFjT2JqLm9wdGlvbnMuYWNNaW5XaWR0aCA9IGFjV2lkdGg7DQogICAgICAgIH0N
CiAgICB9DQogICAgZWxzZSB7DQogICAgICAgICQob3B0Q29udGFpbmVyKS5pbnNl
cnRCZWZvcmUoJyNnc2Z4X2JzcmNoX3F1ZXJ5Jyk7DQogICAgICAgIGlmIChpc1JU
TCkgew0KICAgICAgICAgICAgJChvcHRDb250YWluZXIpLmNzcyh7ICdwb3NpdGlv
bic6ICdyZWxhdGl2ZScsICd0b3AnOiAkKCcjZ3NmeF9ic3JjaF9kaXZRdWVyeScp
LmdldCgwKS5vZmZzZXRIZWlnaHQgKyAncHgnLCAnZmxvYXQnOiAncmlnaHQnIH0p
Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJChvcHRD
b250YWluZXIpLmNzcyh7ICd0b3AnOiAkKCcjZ3NmeF9ic3JjaF9kaXZRdWVyeScp
LmdldCgwKS5vZmZzZXRIZWlnaHQgKyAncHgnLCAnbGVmdCc6ICctMXB4JyB9KTsN
CiAgICAgICAgfQ0KICAgIH0NCiAgICAkKCcjZ3NmeF9ic3JjaF9xdWVyeScpLmJp
bmQoJ2ZvY3VzJywgZnVuY3Rpb24gKGV2ZW50KSB7IEhhbmRsZVF1ZXJ5Rm9jdXMo
ZXZlbnQpOyAkKCcjYWNMaXN0V3JhcHBlcmdzZnhfYnNyY2hfcXVlcnknKS5zaG93
KCk7IH0pOw0KICAgICQoJyNnc2Z4X2JzcmNoX2J0bmltZycpLmxpdmUoJ2ZvY3Vz
JywgZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgICQoJyNhY0xpc3RXcmFwcGVy
Z3NmeF9ic3JjaF9xdWVyeScpLnNob3coKTsNCiAgICAgICAgJCgnI2dzZnhfYnNy
Y2hfb3B0aW9ucycpLnNob3coKTsNCiAgICAgICAgJCgnI2dzZnhfYnNyY2hfb3B0
aW9uc19zdWJjbnRyIDplcShjdXJyZW50U2l0ZUluZGV4KScpLnNob3coKTsNCiAg
ICB9KTsNCiAgICAkKCcjZ3NmeF9ic3JjaF9idG5pbWcnKS5saXZlKCdibHVyJywg
ZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgICQoJyNhY0xpc3RXcmFwcGVyZ3Nm
eF9ic3JjaF9xdWVyeScpLmhpZGUoKTsNCiAgICB9KTsNCiAgICAkKCcjZ3NmeF9i
c3JjaF9xdWVyeScpLmJpbmQoJ2NsaWNrLnNyY2hzaXRlb3B0cycsIGZ1bmN0aW9u
IChldmVudCkgeyBIYW5kbGVRdWVyeUZvY3VzKGV2ZW50KTsgJCgnI2dzZnhfYnNy
Y2hfcXVlcnknKS51bmJpbmQoJ2NsaWNrLnNyY2hzaXRlb3B0cycpOyB9KTsNCiAg
ICAkKCcjZ3NmeF9ic3JjaF9xdWVyeScpLmJpbmQoJ2JsdXInLCBmdW5jdGlvbiAo
ZXZlbnQpIHsgSGFuZGxlUXVlcnlCbHVyKGV2ZW50KTsgfSk7DQogICAgJCgnI2dz
ZnhfYnNyY2hfcXVlcnknKS5iaW5kKCdrZXlkb3duLnNyY2hzaXRlb3B0cycsIGZ1
bmN0aW9uIChldmVudCkgew0KICAgICAgICBIYW5kbGVLZXlkb3duKGV2ZW50KTsN
CiAgICAgICAgaWYgKCQoJyNhY0xpc3RXcmFwcGVyZ3NmeF9ic3JjaF9xdWVyeSA6
Zmlyc3QtY2hpbGQnKS5jc3MoInZpc2liaWxpdHkiKSA9PT0gImhpZGRlbiIpIHsN
CiAgICAgICAgICAgIHZhciBpbmRleCA9IC0xOw0KICAgICAgICAgICAgaWYgKGV2
ZW50LndoaWNoID09IDQwKSB7DQogICAgICAgICAgICAgICAgaW5kZXggPSBjdXJy
ZW50U2l0ZUluZGV4ICsgMTsNCiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
c3VwcG9ydGVkU2l0ZXMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBlbHNlIGlmIChldmVudC53aGljaCA9PSAzOCkgew0KICAgICAgICAgICAg
ICAgIGluZGV4ID0gY3VycmVudFNpdGVJbmRleCAtIDE7DQogICAgICAgICAgICAg
ICAgaWYgKGluZGV4IDwgMCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm47
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
aWYgKGluZGV4ICE9IC0xKSB7DQogICAgICAgICAgICAgICAgJCgnI2dzZnhfYnNy
Y2hfc2l0ZXNlbF9pbWcnICsgaW5kZXgpLmNzcyh7ICdkaXNwbGF5JzogJ2Jsb2Nr
JyB9KTsNCiAgICAgICAgICAgICAgICAkKCcjZ3NmeF9zcmNoc2l0ZW5hbWVfZGl2
JyArIGluZGV4KS5jc3MoeyAnZm9udC13ZWlnaHQnOiAnYm9sZCcgfSk7DQogICAg
ICAgICAgICAgICAgJCgnI2dzZnhfc3JjaHNpdGVuYW1lX2RpdicgKyBpbmRleCku
cGFyZW50KCkuY3NzKHsgJ2N1cnNvcic6ICdkZWZhdWx0JyB9KTsNCg0KICAgICAg
ICAgICAgICAgICQoJyNnc2Z4X2JzcmNoX3NpdGVzZWxfaW1nJyArIGN1cnJlbnRT
aXRlSW5kZXgpLmNzcyh7ICdkaXNwbGF5JzogJ25vbmUnIH0pOw0KICAgICAgICAg
ICAgICAgICQoJyNnc2Z4X3NyY2hzaXRlbmFtZV9kaXYnICsgY3VycmVudFNpdGVJ
bmRleCkuY3NzKHsgJ2ZvbnQtd2VpZ2h0JzogJ25vcm1hbCcgfSk7DQogICAgICAg
ICAgICAgICAgJCgnI2dzZnhfc3JjaHNpdGVuYW1lX2RpdicgKyBjdXJyZW50U2l0
ZUluZGV4KS5wYXJlbnQoKS5jc3MoeyAnY3Vyc29yJzogJ3BvaW50ZXInIH0pOw0K
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZFNpdGVzW2N1cnJlbnRTaXRlSW5kZXhd
LlNlbGVjdGVkID0gZmFsc2U7DQoNCiAgICAgICAgICAgICAgICBzdXBwb3J0ZWRT
aXRlc1tpbmRleF0uU2VsZWN0ZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGN1
cnJlbnRTaXRlSW5kZXggPSBpbmRleDsNCg0KICAgICAgICAgICAgICAgIGlmICgk
KCcjZ3NmeF9ic3JjaF9xdWVyeScpLmhhc0NsYXNzKCdzaXRlc2VsdHh0JykpIHsN
CiAgICAgICAgICAgICAgICAgICAgJCgnI2dzZnhfYnNyY2hfcXVlcnknKS52YWwo
c3VwcG9ydGVkU2l0ZXNbaW5kZXhdLk5hbWUpDQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQogICAgJChkb2N1bWVu
dCkuYmluZCgnY2xpY2suc3JjaHNpdGVvcHRzJywgZnVuY3Rpb24gKGV2ZW50KSB7
IFNpbXBsZVNlYXJjaENsaWNrSGFuZGxlcihldmVudCk7IH0pOw0KfQ0KDQpmdW5j
dGlvbiBEaXNwbGF5QmluZ0ljb24oKSB7DQogICAgJCgnI3RvcFNlYXJjaEJpbmdM
b2dvJykuY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsNCn0NCg0KZnVuY3Rp
b24gSGlkZUJpbmdJY29uKCkgew0KICAgICQoJyN0b3BTZWFyY2hCaW5nTG9nbycp
LmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTsNCn0NCg0KZnVuY3Rpb24gU2lt
cGxlU2VhcmNoQ2xpY2tIYW5kbGVyKGV2ZW50KSB7DQogICAgaWYgKCFldmVudCB8
fCAhZXZlbnQudGFyZ2V0KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAg
dmFyIHRhcmdldEVsID0gZXZlbnQudGFyZ2V0Ow0KDQogICAgaWYgKCQodGFyZ2V0
RWwpLmhhc0NsYXNzKCdnc2Z4X2ltZ19wbmcnKSkgew0KICAgICAgICByZXR1cm47
DQogICAgfQ0KICAgIHZhciBzZWFyY2hDb250YWluZXIgPSAkKCcjZ3NmeF9ic3Jj
aF9kaXZRdWVyeScpLmdldCgwKTsNCg0KICAgIHZhciBpc1NlYXJjaEVsZW1lbnQg
PSAodGFyZ2V0RWwgPT0gc2VhcmNoQ29udGFpbmVyKTsNCg0KICAgIGlmICghaXNT
ZWFyY2hFbGVtZW50KQ0KICAgICAgICBpc1NlYXJjaEVsZW1lbnQgPSBJc0NoaWxk
KHRhcmdldEVsLCBzZWFyY2hDb250YWluZXIpOw0KDQogICAgaWYgKGlzU2VhcmNo
RWxlbWVudCkgew0KICAgICAgICBIaWRlTGFuZ1NlbCgpOw0KICAgICAgICAkKG9w
dENvbnRhaW5lcikuY3NzKHsgJ2Rpc3BsYXknOiAnYmxvY2snIH0pOw0KICAgICAg
ICBIaWRlQmluZ0ljb24oKTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgICQo
b3B0Q29udGFpbmVyKS5jc3MoeyAnZGlzcGxheSc6ICdub25lJyB9KTsNCiAgICAg
ICAgRGlzcGxheUJpbmdJY29uKCk7DQogICAgICAgIFNldEluaXRUZXh0KCQoJyNn
c2Z4X2JzcmNoX3F1ZXJ5JykuZ2V0KDApKTsNCiAgICB9DQoNCiAgICBpZiAoYXZs
Q2F0YWxvZ3MubGVuZ3RoID09IDApIHsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0N
Cg0KICAgIGlmICh0YXJnZXRFbCA9PSAkKCcjZ3NmeF9jYXRfc2VsJykuZ2V0KDAp
KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICB2YXIgaXNDYXRTZWxD
aGlsZCA9IElzQ2hpbGQodGFyZ2V0RWwsICQoJyNnc2Z4X2NhdF9zZWwnKS5nZXQo
MCksIDMpOw0KDQogICAgaWYgKCFpc0NhdFNlbENoaWxkKSB7DQogICAgICAgIEhp
ZGVMYW5nU2VsKCk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBJc0NoaWxkKHRhcmdl
dEVsLCBwYXJlbnRFbCwgbmVzdGluZ0xpbWl0KSB7DQogICAgaWYgKCF0YXJnZXRF
bCkgew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgdmFyIGlz
Q2hpbGRFbGVtZW50ID0gZmFsc2U7DQogICAgaWYgKCFuZXN0aW5nTGltaXQpDQog
ICAgICAgIG5lc3RpbmdMaW1pdCA9IDY7DQoNCiAgICB2YXIgcGFyZW50ID0gdGFy
Z2V0RWwucGFyZW50Tm9kZTsNCiAgICB2YXIgbGV2ZWwgPSAwOw0KICAgIHZhciBp
c1NlYXJjaEVsZW1lbnQgPSBmYWxzZTsNCiAgICB3aGlsZSAocGFyZW50ICYmIG5l
c3RpbmdMaW1pdCA+IGxldmVsKSB7DQogICAgICAgIGlmIChwYXJlbnQgPT0gcGFy
ZW50RWwpIHsNCiAgICAgICAgICAgIGlzQ2hpbGRFbGVtZW50ID0gdHJ1ZTsNCiAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIHBhcmVudCA9ICQo
cGFyZW50KS5wYXJlbnQoKS5nZXQoMCk7DQogICAgICAgIGxldmVsKys7DQogICAg
fQ0KICAgIHJldHVybiBpc0NoaWxkRWxlbWVudDsNCn0NCg0KZnVuY3Rpb24gUmVz
aXplU2l0ZU9wdHMobGlzdERpdikgew0KICAgIGlmIChsaXN0RGl2LnN0eWxlLnZp
c2liaWxpdHkgIT0gJ2hpZGRlbicgJiYgbGlzdERpdi5jaGlsZE5vZGVzLmxlbmd0
aCA+IDApIHsNCiAgICAgICAgb3B0Q29udGFpbmVyLnN0eWxlLnRvcCA9ICQobGlz
dERpdikuZ2V0KDApLmNsaWVudEhlaWdodCArICJweCI7DQogICAgfQ0KICAgIGVs
c2Ugew0KICAgICAgICBvcHRDb250YWluZXIuc3R5bGUudG9wID0gMDsNCiAgICB9
DQoNCiAgICBpZiAobGlzdERpdi5zdHlsZS52aXNpYmlsaXR5ICE9ICdoaWRkZW4n
KQ0KICAgICAgICAkKG9wdENvbnRhaW5lcikuY3NzKHsgJ2Rpc3BsYXknOiAnYmxv
Y2snIH0pOw0KICAgIGVsc2UgaWYgKCQoZG9jdW1lbnQpLmdldCgwKS5hY3RpdmVF
bGVtZW50ICE9ICQoJyNnc2Z4X2JzcmNoX3F1ZXJ5JykuZ2V0KDApKQ0KICAgICAg
ICAkKG9wdENvbnRhaW5lcikuY3NzKHsgJ2Rpc3BsYXknOiAnbm9uZScgfSk7DQp9
DQoNCmZ1bmN0aW9uIEhhbmRsZUtleWRvd24oZXZlbnQpIHsNCiAgICBpZiAoZXZl
bnQua2V5Q29kZSA9PSA5KSB7DQogICAgICAgIGlmICgkKG9wdENvbnRhaW5lciku
cHJldigpLmdldCgwKSA9PSBudWxsIHx8ICQob3B0Q29udGFpbmVyKS5wcmV2KCku
Y3NzKCd2aXNpYmlsaXR5JykgPT0gJ2hpZGRlbicpIHsNCiAgICAgICAgICAgICQo
b3B0Q29udGFpbmVyKS5jc3MoeyAnZGlzcGxheSc6ICdub25lJyB9KTsNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmIChldmVu
dC5rZXlDb2RlID09IDEzKSByZXR1cm47DQoNCiAgICBIYW5kbGVRdWVyeUZvY3Vz
KGV2ZW50KTsNCn0NCg0KZnVuY3Rpb24gSGFuZGxlQmluZ0NsaWNrKCkgew0KICAg
IGlmICgkKCcjZ3NmeF9ic3JjaF9xdWVyeScpLmhhc0NsYXNzKCdzaXRlc2VsdHh0
JykpIHsNCiAgICAgICAgJCgnI2dzZnhfYnNyY2hfcXVlcnknKS5yZW1vdmVDbGFz
cygnc2l0ZXNlbHR4dCcpOw0KICAgICAgICAkKCcjZ3NmeF9ic3JjaF9xdWVyeScp
LnZhbCgnJyk7DQogICAgfQ0KICAgIEhpZGVMYW5nU2VsKCk7DQogICAgJChvcHRD
b250YWluZXIpLmNzcyh7ICdkaXNwbGF5JzogJ2Jsb2NrJyB9KTsNCiAgICBIaWRl
QmluZ0ljb24oKTsNCn0NCg0KZnVuY3Rpb24gSGFuZGxlUXVlcnlGb2N1cyhldmVu
dCkgew0KICAgIGlmIChldmVudC50eXBlID09ICdmb2N1cycgJiYgcHJldkVsZW1l
bnQgPT0gZXZlbnQudGFyZ2V0KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoN
CiAgICBpZiAoJChldmVudC50YXJnZXQpLmhhc0NsYXNzKCdzaXRlc2VsdHh0Jykp
IHsNCiAgICAgICAgJChldmVudC50YXJnZXQpLnJlbW92ZUNsYXNzKCdzaXRlc2Vs
dHh0JykNCiAgICAgICAgJChldmVudC50YXJnZXQpLnZhbCgnJyk7DQogICAgfQ0K
ICAgIEhpZGVMYW5nU2VsKCk7DQogICAgJChvcHRDb250YWluZXIpLmNzcyh7ICdk
aXNwbGF5JzogJ2Jsb2NrJyB9KTsNCiAgICBIaWRlQmluZ0ljb24oKTsNCn0NCmZ1
bmN0aW9uIEhhbmRsZVF1ZXJ5Qmx1cihldmVudCkgew0KICAgIHByZXZFbGVtZW50
ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsNCiAgICBTZXRJbml0VGV4dChldmVu
dC50YXJnZXQpOw0KfQ0KDQpmdW5jdGlvbiBTZXRJbml0VGV4dChlbGVtZW50KSB7
DQogICAgaWYgKGpRdWVyeS50cmltKCQoZWxlbWVudCkudmFsKCkpLmxlbmd0aCA9
PSAwIHx8IGpRdWVyeS50cmltKCQoZWxlbWVudCkudmFsKCkpLmxlbmd0aCA+IDAg
JiYgJChlbGVtZW50KS5oYXNDbGFzcygnc2l0ZXNlbHR4dCcpKSB7DQogICAgICAg
ICQoZWxlbWVudCkuYWRkQ2xhc3MoJ3NpdGVzZWx0eHQnKTsNCiAgICAgICAgJChl
bGVtZW50KS52YWwoc3VwcG9ydGVkU2l0ZXNbY3VycmVudFNpdGVJbmRleF0uTmFt
ZSk7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICAkKGVsZW1lbnQpLnJlbW92
ZUNsYXNzKCdzaXRlc2VsdHh0Jyk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gQ2hhbmdl
U2l0ZVNlbGVjdGlvbihldmVudCkgew0KICAgIHZhciBpbmRleCA9IGV2ZW50LmRh
dGEuaW5kZXg7DQogICAgaWYgKHN1cHBvcnRlZFNpdGVzW2luZGV4XS5TZWxlY3Rl
ZCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgJCgnI2dzZnhfYnNy
Y2hfc2l0ZXNlbF9pbWcnICsgaW5kZXgpLmNzcyh7ICdkaXNwbGF5JzogJ2Jsb2Nr
JyB9KTsNCiAgICAkKCcjZ3NmeF9zcmNoc2l0ZW5hbWVfZGl2JyArIGluZGV4KS5j
c3MoeyAnZm9udC13ZWlnaHQnOiAnYm9sZCcgfSk7DQogICAgJCgnI2dzZnhfc3Jj
aHNpdGVuYW1lX2RpdicgKyBpbmRleCkucGFyZW50KCkuY3NzKHsgJ2N1cnNvcic6
ICdkZWZhdWx0JyB9KTsNCg0KICAgICQoJyNnc2Z4X2JzcmNoX3NpdGVzZWxfaW1n
JyArIGN1cnJlbnRTaXRlSW5kZXgpLmNzcyh7ICdkaXNwbGF5JzogJ25vbmUnIH0p
Ow0KICAgICQoJyNnc2Z4X3NyY2hzaXRlbmFtZV9kaXYnICsgY3VycmVudFNpdGVJ
bmRleCkuY3NzKHsgJ2ZvbnQtd2VpZ2h0JzogJ25vcm1hbCcgfSk7DQogICAgJCgn
I2dzZnhfc3JjaHNpdGVuYW1lX2RpdicgKyBjdXJyZW50U2l0ZUluZGV4KS5wYXJl
bnQoKS5jc3MoeyAnY3Vyc29yJzogJ3BvaW50ZXInIH0pOw0KICAgIHN1cHBvcnRl
ZFNpdGVzW2N1cnJlbnRTaXRlSW5kZXhdLlNlbGVjdGVkID0gZmFsc2U7DQoNCiAg
ICBzdXBwb3J0ZWRTaXRlc1tpbmRleF0uU2VsZWN0ZWQgPSB0cnVlOw0KICAgIGN1
cnJlbnRTaXRlSW5kZXggPSBpbmRleDsNCg0KICAgIGlmICgkKCcjZ3NmeF9ic3Jj
aF9xdWVyeScpLmhhc0NsYXNzKCdzaXRlc2VsdHh0JykpIHsNCiAgICAgICAgJCgn
I2dzZnhfYnNyY2hfcXVlcnknKS52YWwoc3VwcG9ydGVkU2l0ZXNbaW5kZXhdLk5h
bWUpDQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBJbml0Q2F0TGFuZ1NlbCgpIHsNCiAg
ICB2YXIgJGN0ID0gJCgnI2dzZnhfY2F0X3NlbCcpLA0KICAgICAgICAkYnRuID0g
JCgnI2dzZnhfY2F0X3NlbF9idG4nKSwNCiAgICAgICAgJGJ0bkltZyA9ICQoJyNn
c2Z4X2NhdF9zZWxfYnRuIGltZycpDQogICAgICAgICRwYW5lbCA9ICQoJyNnc2Z4
X2NhdF9zZWxfY250bnInKTsNCg0KICAgIGlmICgkYnRuLmxlbmd0aCA9PT0gMCB8
fCAkcGFuZWwubGVuZ3RoID09PSAwKSB7DQogICAgICAgIHJldHVybjsNCiAgICB9
DQogICAgaWYgKGF2bENhdGFsb2dzICYmIGF2bENhdGFsb2dzLmxlbmd0aCA8PSAx
KSB7DQogICAgICAgICRjb250YWluZXIuaGlkZSgpOw0KICAgICAgICByZXR1cm47
DQogICAgfQ0KICAgICRidG4uY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgICAg
ICAgICRwYW5lbC5jc3MoInRvcCIsICRidG5JbWdbMF0uaGVpZ2h0ICsgInB4Iik7
DQogICAgICAgICAgICAkKG9wdENvbnRhaW5lcikuaGlkZSgpOw0KICAgICAgICAg
ICAgJHBhbmVsLnRvZ2dsZSgpOw0KICAgICAgICAgICAgU2ltcGxlU2VhcmNoQ2xp
Y2tIYW5kbGVyKGUpOyAgICAvLyBjYWxsIG5lY2Vzc2FyeSBoYW5kbGVyIG1hbnVh
bGx5IGR1ZSB0byByZXR1cm5pbmcgZmFsc2UgaW4gdGhpcyBoYW5kbGVyIHRvIHN0
b3AgZXZlbnQgYnViYmxpbmcuDQogICAgfSk7DQogICAgaWYgKCRidG5JbWcuYXR0
cignaG92ZXItc3JjJykpIHsNCiAgICAgICAgJGJ0bkltZy5hdHRyKCdub3JtYWwt
c3JjJywgJGJ0bkltZy5hdHRyKCdzcmMnKSk7DQogICAgICAgICRidG4uaG92ZXIo
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgJGJ0bkltZy5hdHRyKCJzcmMiLCAk
YnRuSW1nLmF0dHIoJ2hvdmVyLXNyYycpKTsNCiAgICAgICAgfSwgZnVuY3Rpb24g
KCkgew0KICAgICAgICAgICAgJGJ0bkltZy5hdHRyKCJzcmMiLCAkYnRuSW1nLmF0
dHIoJ25vcm1hbC1zcmMnKSk7DQogICAgICAgIH0pOw0KICAgIH0NCiAgICANCiAg
ICAkcGFuZWwud2lkdGgoKCQoJyNnc2Z4X2JzcmNoX3F1ZXJ5JykucGFyZW50KCku
d2lkdGgoKSAvIDIpICsgJGJ0bi53aWR0aCgpICsgMzUpOw0KICAgICRjdC5zaG93
KCk7DQp9DQoNCmZ1bmN0aW9uIEhpZGVMYW5nU2VsKCkgew0KICAgICRwYW5lbCA9
ICQoJyNnc2Z4X2NhdF9zZWxfY250bnInKS5oaWRlKCk7ICAgIA0KfQ0KDQpmdW5j
dGlvbiBDYWxsV2ViU2VhcmNoKHNlYXJjaEhvbWVVcmwsIHNlYXJjaFJlc3VsdHNV
cmwpIHsNCiAgICB2YXIgZiA9ICQoJyNmcm1hU3JjaCcpLmdldCgwKTsNCg0KICAg
IC8vIHNhdmUgUXVlcnkgVmFsdWUNCiAgICB2YXIgZWwgPSBmLnF1ZXJ5Ow0KDQog
ICAgaWYgKCQoZWwpLmhhc0NsYXNzKCdzaXRlc2VsdHh0JykgfHwgalF1ZXJ5LnRy
aW0oJChlbCkudmFsKCkpLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIFN0YXRzRG90
TmV0Lk9wdGlvbkNvbGxlY3Rpb25JZCA9IFNldExvZ0NvbGxlY3Rpb25CaXQoU3Rh
dHNEb3ROZXQuT3B0aW9uQ29sbGVjdGlvbklkLCAzMyk7DQogICAgICAgIFN0YXRz
RG90TmV0LnRhcmdldFVybCA9IHNlYXJjaEhvbWVVcmw7DQogICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhyZWYgPSBzZWFyY2hIb21lVXJsOw0KICAgICAgICByZXR1
cm47DQogICAgfQ0KDQogICAgU2F2ZVNpbXBsZVNlYXJjaChzZWFyY2hSZXN1bHRz
VXJsKTsNCn0NCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=ac.js
Content-Type: application/x-javascript; charset=utf-8; name=ac.js
Content-Location: http://support.microsoft.com/common/script/gsfx/ac.js?76
Content-Transfer-Encoding: Base64
aWYoICEgd2luZG93Lk1TKXsNCiAgICB3aW5kb3cuTVMgPSB7fTsNCn0NCk1TLlN1
cHBvcnQgPSBNUy5TdXBwb3J0IHx8IHt9Ow0KTVMuU3VwcG9ydC5BQyA9IGZ1bmN0
aW9uKG9wdGlvbnMpew0KICAgIGlmKHR5cGVvZiBvcHRpb25zID09PSAidW5kZWZp
bmVkIil7DQogICAgICAgIHJldHVybiBudWxsOw0KICAgIH0NCiAgICByZXR1cm4g
dGhpcy5DcmVhdGVBQyhvcHRpb25zKTsNCn07DQppZiggISBNUy5TdXBwb3J0LkFD
LmFjYXJyYXkpew0KICAgIE1TLlN1cHBvcnQuQUMuYWNhcnJheSA9IFtdOw0KfQ0K
TVMuU3VwcG9ydC5BQy5BQ0FycmF5RWwgPSBmdW5jdGlvbihlbCl7DQogICAgZm9y
KHZhciBpID0gMDsgaSA8IE1TLlN1cHBvcnQuQUMuYWNhcnJheS5sZW5ndGg7IGkg
KysgKXsNCiAgICAgICAgaWYoTVMuU3VwcG9ydC5BQy5hY2FycmF5W2ldLmtleSA9
PT0gZWwpew0KICAgICAgICAgICAgcmV0dXJuIE1TLlN1cHBvcnQuQUMuYWNhcnJh
eVtpXS52YWw7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIG51bGw7DQp9
Ow0KTVMuU3VwcG9ydC5BQy5NYWtlQXV0b0NvbXBsZXRlID0gZnVuY3Rpb24ob3B0
aW9ucyl7DQogICAgaWYob3B0aW9ucy5pZCl7DQogICAgICAgIHZhciBuZXdhYyA9
IG5ldyBNUy5TdXBwb3J0LkFDKG9wdGlvbnMpOw0KICAgICAgICBNUy5TdXBwb3J0
LkFDLmFjYXJyYXkucHVzaCh7DQogICAgICAgICAgICBrZXkgOiBvcHRpb25zLmlk
LA0KICAgICAgICAgICAgdmFsIDogbmV3YWMNCiAgICAgICAgfSk7DQogICAgfQ0K
fTsNCk1TLlN1cHBvcnQuQUMuU2V0Q29va2llID0gZnVuY3Rpb24oa2V5LCB2YWwp
ew0KICAgIHZhciBkID0gbmV3IERhdGUoKTsNCiAgICBkLnNldEZ1bGxZZWFyKGQu
Z2V0RnVsbFllYXIoKSArIDEpOw0KICAgIHZhciBsb2NhbGRvbWFpbiA9IGRvY3Vt
ZW50LmRvbWFpbjsNCiAgICBpZihsb2NhbGRvbWFpbi5pbmRleE9mKCIuY29tIikg
Pi0gMSl7DQogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGtleSArICc9JyArIHZh
bCArICc7IGV4cGlyZXM9JyArIGQudG9HTVRTdHJpbmcoKSArICc7IERvbWFpbj0n
ICsgbG9jYWxkb21haW4gKyAnOyBwYXRoPS8nOw0KICAgIH0NCiAgICBlbHNlew0K
ICAgICAgICBkb2N1bWVudC5jb29raWUgPSBrZXkgKyAnPScgKyB2YWwgKyAnOyBl
eHBpcmVzPScgKyBkLnRvR01UU3RyaW5nKCkgKyAnOyBwYXRoPS8nOw0KICAgIH0N
Cn07DQpNUy5TdXBwb3J0LkFDLkZldGNoQ29va2llID0gZnVuY3Rpb24gZmV0Y2hF
TVRDb29raWUoa2V5KXsNCiAgICB2YXIgY29va2llbmFtZTsNCiAgICB2YXIgY29v
a2lldmFsOw0KICAgIHZhciBrZXlmb3VuZCA9IGZhbHNlOw0KICAgIHZhciBjb29r
aWVhcnJheSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpDQogICAgZm9yKHZh
ciBpID0gMDsgaSA8IGNvb2tpZWFycmF5Lmxlbmd0aDsgaSArKyApew0KICAgICAg
ICBjb29raWVuYW1lID0gY29va2llYXJyYXlbaV0uc3Vic3RyaW5nKDAsIGNvb2tp
ZWFycmF5W2ldLmluZGV4T2YoJz0nKSk7DQogICAgICAgIGlmKGNvb2tpZW5hbWUu
Y2hhckF0KDApID09ICcgJykNCiAgICAgICAgICAgIGNvb2tpZW5hbWUgPSBjb29r
aWVuYW1lLnN1YnN0cmluZygxLCBjb29raWVuYW1lLmxlbmd0aCk7DQogICAgICAg
IGNvb2tpZXZhbCA9IGNvb2tpZWFycmF5W2ldLnN1YnN0cmluZyhjb29raWVhcnJh
eVtpXS5pbmRleE9mKCc9JykgKyAxLCBjb29raWVhcnJheVtpXS5sZW5ndGgpOw0K
ICAgICAgICBpZihrZXkgPT0gY29va2llbmFtZSl7DQogICAgICAgICAgICBrZXlm
b3VuZCA9IHRydWU7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAg
IH0NCiAgICBpZihrZXlmb3VuZCl7DQogICAgICAgIHJldHVybiBjb29raWV2YWw7
DQogICAgfQ0KICAgIGVsc2V7DQogICAgICAgIHJldHVybiAnYmxhbmsnOw0KICAg
IH0NCn07DQpNUy5TdXBwb3J0LkFDLkFkZEV2ZW50ID0gZnVuY3Rpb24oZWwsIG9w
LCBmbmMpew0KICAgIGlmKGVsLmF0dGFjaEV2ZW50KXsNCiAgICAgICAgZWwuYXR0
YWNoRXZlbnQoIm9uIiArIG9wLCBmbmMpOw0KICAgIH0NCiAgICBlbHNlew0KICAg
ICAgICBlbC5hZGRFdmVudExpc3RlbmVyKG9wLCBmbmMsIHRydWUpOw0KICAgIH0N
Cn07DQpNUy5TdXBwb3J0LkFDLktpbGxFdmVudCA9IGZ1bmN0aW9uKGVsLCBvcCwg
Zm5jKXsNCiAgICBpZihlbC5kZXRhY2hFdmVudCl7DQogICAgICAgIGVsLmRldGFj
aEV2ZW50KCJvbiIgKyBvcCwgZm5jKTsNCiAgICB9DQogICAgZWxzZXsNCiAgICAg
ICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihvcCwgZm5jLCB0cnVlKTsNCiAgICB9
DQp9Ow0KTVMuU3VwcG9ydC5BQy5BQ091dHB1dFN1Z2dlc3Rpb25zID0gZnVuY3Rp
b24ocXVlcnksIG91dHB1dCwgZWxlbWVudCl7DQogICAgTVMuU3VwcG9ydC5BQy5B
Q0FycmF5RWwoZWxlbWVudCkuT3V0cHV0U3VnZ2VzdGlvbnMocXVlcnksIG91dHB1
dCk7DQp9Ow0KTVMuU3VwcG9ydC5BQy5BQ0Vycm9yU3VnZ2VzdGlvbnMgPSBmdW5j
dGlvbihxdWVyeSwgb3V0cHV0LCBlbGVtZW50KXsNCiAgICBNUy5TdXBwb3J0LkFD
LkFDQXJyYXlFbChlbGVtZW50KS5FcnJvclN1Z2dlc3Rpb25zKHF1ZXJ5LCBvdXRw
dXQpOw0KfTsNCk1TLlN1cHBvcnQuQUMuQUNTZXRMY2lkID0gZnVuY3Rpb24oZWxl
bWVudCwgbmV3TGNpZCl7DQogICAgTVMuU3VwcG9ydC5BQy5BQ0FycmF5RWwoZWxl
bWVudCkub3B0aW9ucy5sY2lkID0gbmV3TGNpZDsNCn07DQpNUy5TdXBwb3J0LkFD
LkFDQ2hhbmdlQ2hhclN0YXJ0ID0gZnVuY3Rpb24oZWxlbWVudCwgY2hhcnMpew0K
ICAgIE1TLlN1cHBvcnQuQUMuQUNBcnJheUVsKGVsZW1lbnQpLm9wdGlvbnMuc3Rh
cnRDaGFyID0gY2hhcnM7DQp9Ow0KTVMuU3VwcG9ydC5BQy5wcm90b3R5cGUgPQ0K
ew0KDQogICAgQ3JlYXRlQUM6IGZ1bmN0aW9uIChvcHRzKSB7DQogICAgICAgIHRo
aXMub3B0aW9ucyA9DQogICAgICAgIHsNCiAgICAgICAgICAgIGlkOiAnJywNCiAg
ICAgICAgICAgIGxjaWQ6ICcnLA0KICAgICAgICAgICAgYWNVUkw6ICcnLA0KICAg
ICAgICAgICAgc3RhdHNPYmo6ICcnLA0KICAgICAgICAgICAgc3RhcnRDaGFyOiA0
LA0KICAgICAgICAgICAgYnViYmxlc2lkZTogJ2xlZnQnLA0KICAgICAgICAgICAg
ZHJvcGRpcmVjdGlvbjogJ2Rvd24nLA0KICAgICAgICAgICAgZHJvcHVwZ2FwOiAw
LA0KICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSwNCg0KICAgICAgICAgICAg
bG5kaXI6ICdsdHInLA0KICAgICAgICAgICAgYWNPbGRWYWx1ZTogJycsDQogICAg
ICAgICAgICBhY05ld1ZhbHVlOiAnJywNCiAgICAgICAgICAgIGRvTmV4dENhbGw6
IHRydWUsDQogICAgICAgICAgICBhY05vVmFsOiAnJywNCiAgICAgICAgICAgIGFj
dGltZXI6IG51bGwsDQogICAgICAgICAgICBhY2dyb3d0aW1lcjogbnVsbCwNCiAg
ICAgICAgICAgIGRvYnViYmxlOiB0cnVlLA0KICAgICAgICAgICAgYWNidWJibGVp
bnRpbWVyOiBudWxsLA0KICAgICAgICAgICAgYWNidWJibGVvdXR0aW1lcjogbnVs
bCwNCiAgICAgICAgICAgIGJ1YmJsZWNoYXJsaW1pdDogMjU1LA0KICAgICAgICAg
ICAgYnRvcGFjOiAwLA0KICAgICAgICAgICAgYWNRdWVyeUJveDogbnVsbCwNCiAg
ICAgICAgICAgIGFjTGlzdERpdjogbnVsbCwNCiAgICAgICAgICAgIGFjTGlzdFdy
YXA6IG51bGwsDQogICAgICAgICAgICBhY05vZGU6IG51bGwsDQogICAgICAgICAg
ICBhY0lmcmFtZUhhY2s6IG51bGwsDQogICAgICAgICAgICBBQ0VsbGlwc2lzOiBu
dWxsLA0KICAgICAgICAgICAgQnViYmxlSW1nUGF0aDogbnVsbCwNCiAgICAgICAg
ICAgIEFDQnViYmxlVGV4dE5vZGU6IG51bGwsDQogICAgICAgICAgICBBQ0J1YmJs
ZUlmcmFtZUhhY2s6IG51bGwsDQogICAgICAgICAgICBhY01pbldpZHRoOiAxNTAs
DQogICAgICAgICAgICBhY1dpZHRoOiAncGFyZW50JywNCiAgICAgICAgICAgIEFD
R3Jvd0Ftb3VudDogMTgsDQogICAgICAgICAgICBhY1Jlc2VydmVkS2V5czogWzEz
LCAzOCwgNDBdLA0KICAgICAgICAgICAgbm9uQ2hhcktleXM6IFs5LCAxNiwgMTcs
IDE4LCAxOSwgMjAsIDI3LCAzMywgMzQsIDM1LCAzNiwgMzcsIDM5LCA0NiwgMTEy
LCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAx
MjIsIDEyM10sDQogICAgICAgICAgICBhY2hlYWQ6IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdoZWFkJykuaXRlbSgwKSwNCiAgICAgICAgICAgIGltZ3Bh
dGg6ICcvbGlicmFyeS9pbWFnZXMvc3VwcG9ydC9lbi11cy8nLA0KICAgICAgICAg
ICAgb2Zmc2hpZnRMaXN0OiAwLA0KICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcj
NjY2NjY2JywNCiAgICAgICAgICAgIGNoYXJib2xkaW5nOiAyLA0KICAgICAgICAg
ICAgY2xyd2luOiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdBcHBsZVdl
YktpdCcpID09IC0xKSA/ICdXaW5kb3cnIDogJyNGRkYnLA0KICAgICAgICAgICAg
Y2xyd2ludHh0OiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdBcHBsZVdl
YktpdCcpID09IC0xKSA/ICcjMzMzMzMzJyA6ICcjMDAwJywNCiAgICAgICAgICAg
IGNscmhpZ2g6IChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2Vi
S2l0JykgPT0gLTEpID8gJ0hpZ2hsaWdodCcgOiAnI0NDQycsDQogICAgICAgICAg
ICBjbHJoaWdodHh0OiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdBcHBs
ZVdlYktpdCcpID09IC0xKSA/ICdIaWdobGlnaHRUZXh0JyA6ICcjMDAwJywNCiAg
ICAgICAgICAgIGhhbmRsZVJlc2l6ZTogbnVsbA0KICAgICAgICB9Ow0KICAgICAg
ICB0aGlzLkFDT3B0aW9uc0ZpbGwodGhpcy5vcHRpb25zLCBvcHRzIHx8IHt9KTsN
CiAgICAgICAgdmFyIHEsDQogICAgICAgIG8gPSB0aGlzLm9wdGlvbnM7DQogICAg
ICAgIGlmICghbykgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAg
ICB9DQogICAgICAgIGlmICh0eXBlb2YgKG8uaWQpID09PSAnc3RyaW5nJykgew0K
ICAgICAgICAgICAgcSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG8uaWQpOw0K
ICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKHR5cGVvZiAoby5pZCkgPT09ICdv
YmplY3QnICYmIG8uaWQubm9kZU5hbWUgPT0gJ0lOUFVUJykgew0KICAgICAgICAg
ICAgcSA9IG8uaWQ7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgdGhpcy5vcHRp
b25zLmxuZGlyID0gdGhpcy5BQ0NvbXB1dGVkU3R5bGUocSwgImRpcmVjdGlvbiIp
Ow0KICAgICAgICBpZiAoby5idWJibGVzaWRlICYmIHR5cGVvZiAoby5idWJibGVz
aWRlKSA9PT0gJ3N0cmluZycgJiYgby5idWJibGVzaWRlID09ICdsZWZ0Jykgew0K
ICAgICAgICAgICAgby5idWJibGVzaWRlID0gKG8ubG5kaXIgPT0gJ3J0bCcpID8g
J3JpZ2h0JyA6ICdsZWZ0JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChv
LmJ1YmJsZXNpZGUgJiYgdHlwZW9mIChvLmJ1YmJsZXNpZGUpID09PSAnc3RyaW5n
JyAmJiBvLmJ1YmJsZXNpZGUgPT0gJ3JpZ2h0Jykgew0KICAgICAgICAgICAgby5i
dWJibGVzaWRlID0gKG8ubG5kaXIgPT0gJ3J0bCcpID8gJ2xlZnQnIDogJ3JpZ2h0
JzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIG8uYnVi
Ymxlc2lkZSA9ICdyaWdodCc7DQogICAgICAgIH0NCiAgICAgICAgaWYgKG8ubGNp
ZCA9PT0gJycgfHwgdHlwZW9mIChvLmxjaWQpID09PSAndW5kZWZpbmVkJykgew0K
ICAgICAgICAgICAgaWYgKCFvLmxjaWQgfHwgdHlwZW9mIChvLmxjaWQpICE9PSAn
c3RyaW5nJykgew0KICAgICAgICAgICAgICAgIG8ubGNpZCA9ICcxMDMzJzsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoby5hY1VSTCA9PT0g
JycgfHwgdHlwZW9mIChvLmFjVVJMKSA9PT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAg
ICAgICAgIG8uYWNVUkwgPSAnaHR0cDovL2F1dG9jb21wbGV0ZS5zdXBwb3J0Lm1p
Y3Jvc29mdC5jb20nOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAg
ICAgICAgby5hY1VSTCA9IHVuZXNjYXBlKG8uYWNVUkwpOw0KICAgICAgICB9DQog
ICAgICAgIGlmIChvLnN0YXJ0Q2hhciAmJiAodHlwZW9mIChvLnN0YXJ0Q2hhcikg
PT09ICdzdHJpbmcnIHx8IHR5cGVvZiAoby5zdGFydENoYXIpID09PSAnbnVtYmVy
JykpIHsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgby5zdGFy
dENoYXIgPSBwYXJzZUludChvLnN0YXJ0Q2hhciwgMTApOw0KICAgICAgICAgICAg
ICAgIGlmIChvLnN0YXJ0Q2hhciA8IDIpIHsNCiAgICAgICAgICAgICAgICAgICAg
by5zdGFydENoYXIgPSAyOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBpZiAoby5zdGFydENoYXIgPiA4KSB7DQogICAgICAgICAgICAgICAgICAg
IG8uc3RhcnRDaGFyID0gODsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBjYXRjaCAoZXgpIHsNCiAgICAgICAgICAgICAgICBv
LnN0YXJ0Q2hhciA9IDQ7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKHEpIHsNCiAgICAgICAgICAgIHZhciBpZFR4dEZsZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7DQogICAgICAgICAgICBpZFR4dEZsZC5z
ZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7DQogICAgICAgICAgICBpZFR4
dEZsZC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2lkVHh0RmxkJyk7DQogICAgICAgICAg
ICBxLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGlkVHh0RmxkLCBxKTsNCiAgICAg
ICAgICAgIGlmIChxLm9mZnNldFdpZHRoIDwgby5hY01pbldpZHRoKSB7DQogICAg
ICAgICAgICAgICAgby5hY01pbldpZHRoID0gcS5vZmZzZXRXaWR0aDsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIHEuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxl
dGUnLCAnb2ZmJyk7DQogICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ0RJVicpOw0KICAgICAgICAgICAgdmFyIGFzID0gYS5zdHlsZTsN
CiAgICAgICAgICAgIGEuaWQgPSAnYWNMaXN0RGl2JyArIHEuaWQ7DQogICAgICAg
ICAgICBhcy5tYXJnaW4gPSBhcy5wYWRkaW5nID0gJzBweCc7DQogICAgICAgICAg
ICBhcy5tYXJnaW5Ub3AgPSAnLTJweCc7DQogICAgICAgICAgICBhcy52aXNpYmls
aXR5ID0gJ2hpZGRlbic7DQogICAgICAgICAgICBhcy56SW5kZXggPSAnOTknOw0K
ICAgICAgICAgICAgYXMucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KICAgICAgICAg
ICAgYXMubGluZUhlaWdodCA9IDE4ICsgJ3B4JzsNCiAgICAgICAgICAgIGlmICh0
aGlzLm9wdGlvbnMuZHJvcGRpcmVjdGlvbiA9PT0gJ3VwJykgew0KICAgICAgICAg
ICAgICAgIGFzLmJvdHRvbSA9IChxLm9mZnNldEhlaWdodCArIHBhcnNlSW50KChx
LnN0eWxlLmJvcmRlcldpZHRoICogMiksIDEwKSArIHBhcnNlSW50KChxLnN0eWxl
LnBhZGRpbmdUb3AgKiAyKSwgMTApICsgdGhpcy5vcHRpb25zLmRyb3B1cGdhcCkg
KyAncHgnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIHdpZCA9IHBh
cnNlSW50KG8uYWNNaW5XaWR0aCwgMTApOw0KICAgICAgICAgICAgYXMud2lkdGgg
PSAod2lkID4gMTIgPyB3aWQgLSAyIC0gMTEgOiAwKSArICdweCc7DQogICAgICAg
ICAgICBhcy5ib3JkZXIgPSAnMXB4IHNvbGlkICcgKyBvLmJvcmRlckNvbG9yOw0K
ICAgICAgICAgICAgYXMub3ZlcmZsb3cgPSAnaGlkZGVuJzsNCiAgICAgICAgICAg
IGFzLnBhZGRpbmcgPSAnMTBweCAxcHggMTBweCAxMHB4JzsNCiAgICAgICAgICAg
IGFzLmJhY2tncm91bmQgPSAnI2ZmZic7DQogICAgICAgICAgICBhcy5mb250U2l6
ZSA9ICcwLjdlbSc7DQogICAgICAgICAgICBhcy5mb250RmFtaWx5ID0gdGhpcy5B
Q0NvbXB1dGVkU3R5bGUocSwgImZvbnRGYW1pbHkiKTsNCiAgICAgICAgICAgIGlm
ICh0aGlzLm9wdGlvbnMubG5kaXIgPT0gJ3J0bCcpIHsNCiAgICAgICAgICAgICAg
ICBhcy5wYWRkaW5nUmlnaHQgPSAxMCArICdweCc7DQogICAgICAgICAgICAgICAg
YXMucGFkZGluZ0xlZnQgPSAxICsgJ3B4JzsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHZhciBhY3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsN
CiAgICAgICAgICAgIGFjdy5pZCA9ICdhY0xpc3RXcmFwcGVyJyArIHEuaWQ7DQog
ICAgICAgICAgICBhY3cuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOw0KICAg
ICAgICAgICAgYWN3LnN0eWxlLndpZHRoID0gcGFyc2VJbnQod2lkLCAxMCkgKyAn
cHgnOw0KICAgICAgICAgICAgYWN3LnN0eWxlLmhlaWdodCA9ICcxcHgnOw0KICAg
ICAgICAgICAgYWN3LmFwcGVuZENoaWxkKGEpOw0KICAgICAgICAgICAgcS5wYXJl
bnROb2RlLmFwcGVuZENoaWxkKGFjdyk7DQogICAgICAgICAgICBvLmFjTm9kZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgYXMg
PSBvLmFjTm9kZS5zdHlsZTsNCiAgICAgICAgICAgIG8uYWNOb2RlLmNsYXNzTmFt
ZSA9ICJhY1N1Z0RpdiI7DQogICAgICAgICAgICBhcy53aGl0ZVNwYWNlID0gIm5v
d3JhcCI7DQogICAgICAgICAgICBhcy53aWR0aCA9ICcxMDAlJzsNCiAgICAgICAg
ICAgIGFzLm92ZXJmbG93ID0gImhpZGRlbiI7DQogICAgICAgICAgICBhcy5iYWNr
Z3JvdW5kQ29sb3IgPSBvLmNscndpbjsNCiAgICAgICAgICAgIGFzLmNvbG9yID0g
by5jbHJ3aW50eHQ7DQogICAgICAgICAgICBhcy5jdXJzb3IgPSAncG9pbnRlcic7
DQogICAgICAgICAgICBvLkFDRWxsaXBzaXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7DQogICAgICAgICAgICBvLkFDRWxsaXBzaXMuc3R5bGUuYmFj
a2dyb3VuZCA9IG8uY2xyd2luOw0KICAgICAgICAgICAgby5BQ0VsbGlwc2lzLnN0
eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsNCiAgICAgICAgICAgIG8uQUNFbGxp
cHNpcy5pbm5lckhUTUwgPSAnLi4uJzsNCiAgICAgICAgICAgIG8uQUNFbGxpcHNp
cy5jbGFzc05hbWUgPSAnZWxsaXBzaXMnOw0KICAgICAgICAgICAgby5BQ0VsbGlw
c2lzLnN0eWxlLmxpbmVIZWlnaHQgPSAxNiArICdweCc7DQogICAgICAgICAgICBv
LkFDRWxsaXBzaXMuc3R5bGUuaGVpZ2h0ID0gMTggKyAncHgnOw0KICAgICAgICAg
ICAgaWYgKG8ubG5kaXIgPT0gJ2x0cicpIHsNCiAgICAgICAgICAgICAgICBvLkFD
RWxsaXBzaXMuc3R5bGUucmlnaHQgPSAnLTFweCc7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBvLkFDRWxsaXBzaXMu
c3R5bGUubGVmdCA9ICctMXB4JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IHZhciBidHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAg
ICAgICAgIHZhciBidGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsN
CiAgICAgICAgICAgIHZhciBidHR4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOw0KICAgICAgICAgICAgdmFyIGJ0YXJyb3cgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgICAgIHZhciBidHcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAgICAgIGJ0dC5pZCA9ICdn
c3NfYWNfYnR0b3AnOw0KICAgICAgICAgICAgYnRiLmlkID0gJ2dzc19hY19idGJv
dHRvbSc7DQogICAgICAgICAgICBidHR4dC5pZCA9ICdnc3NfYWNfYnR0eHQnOw0K
ICAgICAgICAgICAgYnRhcnJvdy5pZCA9ICdnc3NfYWNfYnRhcnJvdyc7DQogICAg
ICAgICAgICBidHcuaWQgPSAnZ3NzX2FjX2J0ZGl2JzsNCiAgICAgICAgICAgIGlm
ICghby5CdWJibGVJbWdQYXRoKSB7DQogICAgICAgICAgICAgICAgby5CdWJibGVJ
bWdQYXRoID0gby5hY1VSTDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJ0
dC5zdHlsZS5iYWNrZ3JvdW5kID0gJ3VybCgnICsgby5CdWJibGVJbWdQYXRoICsg
Jy9pbWFnZXMvYnViYmxlLnBuZykgbm8tcmVwZWF0JzsNCiAgICAgICAgICAgIGJ0
Yi5zdHlsZS5iYWNrZ3JvdW5kID0gJ3VybCgnICsgby5CdWJibGVJbWdQYXRoICsg
Jy9pbWFnZXMvYnViYmxlLnBuZykgMHB4IC0xMXB4IG5vLXJlcGVhdCc7DQogICAg
ICAgICAgICBidHR4dC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNGQ0ZDREQnOw0KICAg
ICAgICAgICAgYnR0eHQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjREVCQjRG
JzsNCiAgICAgICAgICAgIGJ0dHh0LnN0eWxlLmJvcmRlcldpZHRoID0gJzBweCAx
cHgnOw0KICAgICAgICAgICAgYnRiLnN0eWxlLmxpbmVIZWlnaHQgPSBidHQuc3R5
bGUubGluZUhlaWdodCA9IGJ0dC5zdHlsZS5oZWlnaHQgPSBidGIuc3R5bGUuaGVp
Z2h0ID0gJzEwcHgnOw0KICAgICAgICAgICAgYnR0LnN0eWxlLmZvbnRTaXplID0g
YnRiLnN0eWxlLmZvbnRTaXplID0gJzBweCc7DQogICAgICAgICAgICBidHQuc3R5
bGUud2lkdGggPSBidGIuc3R5bGUud2lkdGggPSAnMjAwcHgnOw0KICAgICAgICAg
ICAgYnR0eHQuc3R5bGUud2lkdGggPSAnMTc4cHgnOw0KICAgICAgICAgICAgYnR0
eHQuc3R5bGUucG9zaXRpb24gPSBidHQuc3R5bGUucG9zaXRpb24gPSBidGIuc3R5
bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOw0KICAgICAgICAgICAgYnR0eHQuc3R5
bGUuY29sb3IgPSAnYmxhY2snOw0KICAgICAgICAgICAgYnR0eHQuc3R5bGUuZm9u
dFNpemUgPSAnLjdlbSc7DQogICAgICAgICAgICBidHR4dC5zdHlsZS5mb250RmFt
aWx5ID0gYS5zdHlsZS5mb250RmFtaWx5Ow0KICAgICAgICAgICAgYnR0eHQuc3R5
bGUub3ZlcmZsb3dYID0gJ2hpZGRlbic7DQogICAgICAgICAgICBidHR4dC5zdHls
ZS53aGl0ZVNwYWNlID0gJ25vcm1hbCc7DQogICAgICAgICAgICBidHR4dC5zdHls
ZS5wYWRkaW5nID0gJzBweCAxMHB4JzsNCiAgICAgICAgICAgIGJ0dy5zdHlsZS5w
b3NpdGlvbiA9IGJ0YXJyb3cuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0K
ICAgICAgICAgICAgYnRhcnJvdy5zdHlsZS50b3AgPSAnMHB4JzsNCiAgICAgICAg
ICAgIGJ0YXJyb3cuc3R5bGUuaGVpZ2h0ID0gJzIzcHgnOw0KICAgICAgICAgICAg
YnRhcnJvdy5zdHlsZS53aWR0aCA9ICczNHB4JzsNCiAgICAgICAgICAgIGJ0dy5z
dHlsZS53aWR0aCA9ICcyMjZweCc7DQogICAgICAgICAgICBidHcuc3R5bGUudG9w
ID0gJzkwcHgnOw0KICAgICAgICAgICAgYnR3LnN0eWxlLnpJbmRleCA9IDk5OTsN
CiAgICAgICAgICAgIGlmIChvLmJ1YmJsZXNpZGUgPT0gJ2xlZnQnKSB7DQogICAg
ICAgICAgICAgICAgYnR0LnN0eWxlLmNzc0Zsb2F0ID0gYnRiLnN0eWxlLmNzc0Zs
b2F0ID0gYnR0eHQuc3R5bGUuY3NzRmxvYXQgPSBidHQuc3R5bGUuc3R5bGVGbG9h
dCA9IGJ0Yi5zdHlsZS5zdHlsZUZsb2F0ID0gYnR0eHQuc3R5bGUuc3R5bGVGbG9h
dCA9ICdsZWZ0JzsNCiAgICAgICAgICAgICAgICBidHcuc3R5bGUubGVmdCA9ICct
MjIwcHgnOw0KICAgICAgICAgICAgICAgIGJ0YXJyb3cuc3R5bGUucmlnaHQgPSAn
MHB4JzsNCiAgICAgICAgICAgICAgICBidGFycm93LnN0eWxlLmJhY2tncm91bmQg
PSAndXJsKCcgKyBvLkJ1YmJsZUltZ1BhdGggKyAnL2ltYWdlcy9idWJibGUucG5n
KSAwcHggLTIycHggbm8tcmVwZWF0JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGJ0dy5zdHlsZS5sZWZ0ID0gYS5v
ZmZzZXRXaWR0aCArICdweCc7DQogICAgICAgICAgICAgICAgYnRhcnJvdy5zdHls
ZS5sZWZ0ID0gJzFweCc7DQogICAgICAgICAgICAgICAgYnRhcnJvdy5zdHlsZS5i
YWNrZ3JvdW5kID0gJ3VybCgnICsgby5CdWJibGVJbWdQYXRoICsgJy9pbWFnZXMv
YnViYmxlLnBuZykgLTM1cHggLTIycHggbm8tcmVwZWF0JzsNCiAgICAgICAgICAg
ICAgICBidHQuc3R5bGUuY3NzRmxvYXQgPSBidGIuc3R5bGUuY3NzRmxvYXQgPSBi
dHR4dC5zdHlsZS5jc3NGbG9hdCA9IGJ0dC5zdHlsZS5zdHlsZUZsb2F0ID0gYnRi
LnN0eWxlLnN0eWxlRmxvYXQgPSBidHR4dC5zdHlsZS5zdHlsZUZsb2F0ID0gJ3Jp
Z2h0JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJ0dy5hcHBlbmRDaGls
ZChidHQpOw0KICAgICAgICAgICAgYnR3LmFwcGVuZENoaWxkKGJ0dHh0KTsNCiAg
ICAgICAgICAgIGJ0dy5hcHBlbmRDaGlsZChidGIpOw0KICAgICAgICAgICAgYnR3
LmFwcGVuZENoaWxkKGJ0YXJyb3cpOw0KICAgICAgICAgICAgby5BQ0J1YmJsZVRl
eHROb2RlID0gYnR3Ow0KICAgICAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdl
bnQuaW5kZXhPZignTVNJRScpID4gMCkgew0KICAgICAgICAgICAgICAgIGlmIChw
YXJzZUludCgobmF2aWdhdG9yLnVzZXJBZ2VudC5jaGFyQXQobmF2aWdhdG9yLnVz
ZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgKyA1KSksIDEwKSA8IDcpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdGhpcy5BQ01ha2VJZnJhbWVIYWNrKGFjdywgYSk7DQog
ICAgICAgICAgICAgICAgICAgIHZhciBidGlmcmFtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7DQogICAgICAgICAgICAgICAgICAgIGJ0aWZyYW0u
aWQgPSAnZ3NzX2FjX2J0aWZyYW1lJzsNCiAgICAgICAgICAgICAgICAgICAgYnRp
ZnJhbS5zdHlsZS53aWR0aCA9ICcyMjZweCc7DQogICAgICAgICAgICAgICAgICAg
IGJ0aWZyYW0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KICAgICAgICAg
ICAgICAgICAgICBidGlmcmFtLnN0eWxlWydmaWx0ZXInXSA9ICdhbHBoYShvcGFj
aXR5PTApJzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG8uYnViYmxlc2lkZSA9
PSAnbGVmdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJ0aWZyYW0uc3R5
bGUubGVmdCA9ICctMjIwcHgnOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAg
YnRpZnJhbS5zdHlsZS5yaWdodCA9ICctMjIwcHgnOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIG8uQUNCdWJibGVJZnJhbWVIYWNr
ID0gYnRpZnJhbTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICB2YXIgdCA9IHRoaXM7DQogICAgICAgICAgICB0aGlzLkFDQWRk
RXZ0KHEsICJrZXl1cCIsIGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAg
ICAgIHQuQUNJbml0U3VnZ2VzdGlvbnMoZXZlbnQpOw0KICAgICAgICAgICAgfSk7
DQogICAgICAgICAgICB0aGlzLkFDQWRkRXZ0KHEsICJrZXlkb3duIiwgZnVuY3Rp
b24gKGV2ZW50KSB7DQogICAgICAgICAgICAgICAgdC5BQ0hhbmRsZUtleXNEb3du
KGV2ZW50KTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5BQ0Fk
ZEV2dChkb2N1bWVudCwgIm1vdXNldXAiLCBmdW5jdGlvbiAoZXZlbnQpIHsNCiAg
ICAgICAgICAgICAgICB0LkFDQ2xpY2tIYW5kbGVyKGV2ZW50KTsNCiAgICAgICAg
ICAgIH0pOw0KICAgICAgICAgICAgby5hY0xpc3REaXYgPSBhOw0KICAgICAgICAg
ICAgby5hY1F1ZXJ5Qm94ID0gcTsNCiAgICAgICAgICAgIG8uYWNMaXN0V3JhcCA9
IGFjdzsNCiAgICAgICAgICAgIGlmIChvLmF1dG9Gb2N1cyAmJiBxLmNyZWF0ZVRl
eHRSYW5nZSAmJiAhZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgew0KICAgICAgICAg
ICAgICAgIHRoaXMuQUNGb2N1cygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgICAgIHJldHVybiB0aGlzOw0KICAgIH0sDQogICAgQUNGb2N1czogZnVu
Y3Rpb24gKCkgew0KICAgICAgICB2YXIgbyA9IHRoaXMub3B0aW9uczsNCiAgICAg
ICAgdmFyIHEgPSBvLmFjUXVlcnlCb3g7DQogICAgICAgIHZhciBsZW4gPSBxLnZh
bHVlLmxlbmd0aDsNCiAgICAgICAgaWYgKHEuY3JlYXRlVGV4dFJhbmdlKSB7DQog
ICAgICAgICAgICB2YXIgciA9IHEuY3JlYXRlVGV4dFJhbmdlKCk7DQogICAgICAg
ICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChvLmxuZGlyID09PSAncnRs
Jykgew0KICAgICAgICAgICAgICAgICAgICByLm1vdmUoImNoYXJhY3RlciIsIC1s
ZW4pOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
ICAgIHIubW92ZSgiY2hhcmFjdGVyIiwgbGVuKTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgci5zZWxlY3QoKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGNhdGNoIChlKSB7IH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgIHEuZm9jdXMoKTsNCiAgICAgICAgICAgIGlmIChxLnNldFNlbGVjdGlv
blJhbmdlKSB7DQogICAgICAgICAgICAgICAgaWYgKG8ubG5kaXIgPT09ICdydGwn
KSB7DQogICAgICAgICAgICAgICAgICAgIHEuc2V0U2VsZWN0aW9uUmFuZ2UoMCwg
MCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAg
ICAgcS5zZXRTZWxlY3Rpb25SYW5nZShsZW4sIGxlbik7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSwNCiAgICBBQ09w
dGlvbnNGaWxsOiBmdW5jdGlvbiAobmV3T3B0aW9ucywgZGVmYXVsdE9wdGlvbnMp
IHsNCiAgICAgICAgZm9yIChvcHRpb24gaW4gZGVmYXVsdE9wdGlvbnMpIHsNCiAg
ICAgICAgICAgIG5ld09wdGlvbnNbb3B0aW9uXSA9IGRlZmF1bHRPcHRpb25zW29w
dGlvbl07DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG5ld09wdGlvbnM7DQog
ICAgfSwNCiAgICBBQ0RvU2hvd1RhcmdldDogZnVuY3Rpb24gKCkgew0KICAgICAg
ICBjbGVhclRpbWVvdXQodGhpcy5vcHRpb25zLmFjZ3Jvd3RpbWVyKTsNCiAgICAg
ICAgaWYgKHRoaXMub3B0aW9ucy5hY0xpc3REaXYuc3R5bGUudmlzaWJpbGl0eSAh
PSAndmlzaWJsZScpIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0xpc3RE
aXYuc3R5bGUuaGVpZ2h0ID0gJzE4cHgnOw0KICAgICAgICAgICAgdGhpcy5vcHRp
b25zLmFjTGlzdERpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOw0KICAg
ICAgICAgICAgdGhpcy5BQ0lmcmFtZVZpc2libGUodGhpcy5vcHRpb25zLmFjTGlz
dERpdi5zdHlsZS52aXNpYmlsaXR5KTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIg
dCA9IHRoaXM7DQogICAgICAgIHRoaXMub3B0aW9ucy5hY2dyb3d0aW1lciA9IHNl
dEludGVydmFsKGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgdC5BQ0dy
b3dXaW5kb3coZXZlbnQpOw0KICAgICAgICB9LCAxMCk7DQogICAgfSwNCiAgICBB
Q0RvSGlkZVRhcmdldDogZnVuY3Rpb24gKCkgew0KICAgICAgICBjbGVhclRpbWVv
dXQodGhpcy5vcHRpb25zLmFjZ3Jvd3RpbWVyKTsNCiAgICAgICAgaWYgKHRoaXMu
b3B0aW9ucy5hY0xpc3REaXYuc3R5bGUudmlzaWJpbGl0eSAhPSAnaGlkZGVuJykg
ew0KICAgICAgICAgICAgdmFyIHQgPSB0aGlzOw0KICAgICAgICAgICAgdGhpcy5Q
b3BCdWJibGUoKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY2dyb3d0aW1l
ciA9IHNldEludGVydmFsKGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAg
ICAgIHQuQUNTaHJpbmtXaW5kb3coZXZlbnQpOw0KICAgICAgICAgICAgfSwgMTAp
Ow0KICAgICAgICB9DQogICAgfSwNCiAgICBBQ0Ryb3BXaWR0aDogZnVuY3Rpb24g
KCkgew0KICAgICAgICB2YXIgd2lkOw0KICAgICAgICBpZiAodHlwZW9mICh0aGlz
Lm9wdGlvbnMuYWNXaWR0aCkgPT09ICdudW1iZXInKSB7DQogICAgICAgICAgICB3
aWQgPSB0aGlzLm9wdGlvbnMuYWNXaWR0aDsNCiAgICAgICAgfQ0KICAgICAgICBl
bHNlIGlmICh0eXBlb2YgKHRoaXMub3B0aW9ucy5hY1dpZHRoKSA9PT0gJ3N0cmlu
ZycgJiYgdGhpcy5vcHRpb25zLmFjV2lkdGggPT0gJ3NlbGYnKSB7DQogICAgICAg
ICAgICB3aWQgPSAodGhpcy5vcHRpb25zLmFjUXVlcnlCb3gub2Zmc2V0V2lkdGgg
JiYgdGhpcy5vcHRpb25zLmFjUXVlcnlCb3gub2Zmc2V0V2lkdGggPiB0aGlzLm9w
dGlvbnMuYWNNaW5XaWR0aCkgPyAodGhpcy5vcHRpb25zLmFjUXVlcnlCb3gub2Zm
c2V0V2lkdGgpIDogdGhpcy5vcHRpb25zLmFjTWluV2lkdGg7DQogICAgICAgIH0N
CiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB3aWQgPSAodGhpcy5vcHRpb25z
LmFjUXVlcnlCb3gucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCAmJiB0aGlzLm9wdGlv
bnMuYWNRdWVyeUJveC5wYXJlbnROb2RlLm9mZnNldFdpZHRoID4gdGhpcy5vcHRp
b25zLmFjTWluV2lkdGgpID8gKHRoaXMub3B0aW9ucy5hY1F1ZXJ5Qm94LnBhcmVu
dE5vZGUub2Zmc2V0V2lkdGgpIDogdGhpcy5vcHRpb25zLmFjTWluV2lkdGg7DQog
ICAgICAgIH0NCiAgICAgICAgd2lkID0gcGFyc2VJbnQod2lkLCAxMCkgLSAyIC0g
MTE7DQogICAgICAgIHJldHVybiAod2lkID49IDAgPyB3aWQgOiAwKSArICdweCc7
DQogICAgfSwNCiAgICBBQ0dyb3dXaW5kb3c6IGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgdmFyIGh0ID0gMDsNCg0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
cnNlSW50KHRoaXMub3B0aW9ucy5hY0xpc3REaXYuY2hpbGROb2Rlcy5sZW5ndGgs
IDEwKTsgaSsrKSB7DQogICAgICAgICAgICBodCArPSBwYXJzZUludCh0aGlzLm9w
dGlvbnMuYWNMaXN0RGl2LmNoaWxkTm9kZXNbaV0ub2Zmc2V0SGVpZ2h0LCAxMCk7
DQogICAgICAgIH0NCiAgICAgICAgaWYgKGh0KSB7DQogICAgICAgICAgICB2YXIg
ZmxpcCA9IChodCA8IHRoaXMub3B0aW9ucy5hY0xpc3REaXYub2Zmc2V0SGVpZ2h0
KSA/IC0xIDogMTsNCiAgICAgICAgICAgIHZhciBuZXdodCA9IChwYXJzZUludCh0
aGlzLm9wdGlvbnMuYWNMaXN0RGl2LnN0eWxlLmhlaWdodCwgMTApICsgKHRoaXMu
b3B0aW9ucy5BQ0dyb3dBbW91bnQgKiBmbGlwKSk7DQogICAgICAgICAgICB0aGlz
Lm9wdGlvbnMuYWNMaXN0RGl2LnN0eWxlLmhlaWdodCA9IG5ld2h0ICsgJ3B4JzsN
CiAgICAgICAgICAgIHRoaXMuQUNJZnJhbWVTaXplKG5ld2h0KTsNCiAgICAgICAg
ICAgIGlmIChuZXdodCA+PSAoaHQgLSB0aGlzLm9wdGlvbnMuQUNHcm93QW1vdW50
KSkgew0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0xpc3REaXYuc3R5
bGUuaGVpZ2h0ID0gaHQgKyAncHgnOw0KICAgICAgICAgICAgICAgIHRoaXMuQUNJ
ZnJhbWVTaXplKGh0KTsNCiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5vcHRpb25zLmFjZ3Jvd3RpbWVyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0xp
c3REaXYuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nOw0KICAgICAgICAgICAgdGhpcy5B
Q0lmcmFtZVNpemUodGhpcy5vcHRpb25zLmFjTGlzdERpdi5zdHlsZS5oZWlnaHQp
Ow0KICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMub3B0aW9ucy5hY2dyb3d0
aW1lcik7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oYW5k
bGVSZXNpemUpDQogICAgICAgICAgICB0aGlzLm9wdGlvbnMuaGFuZGxlUmVzaXpl
KHRoaXMub3B0aW9ucy5hY0xpc3REaXYpOw0KICAgIH0sDQogICAgQUNTaHJpbmtX
aW5kb3c6IGZ1bmN0aW9uIChodCkgew0KICAgICAgICBpZiAodGhpcy5vcHRpb25z
LmFjTGlzdERpdi5zdHlsZS5oZWlnaHQgIT0gJ2F1dG8nICYmIHRoaXMub3B0aW9u
cy5hY0xpc3REaXYpIHsNCiAgICAgICAgICAgIHZhciBoZ2h0ID0gcGFyc2VJbnQo
dGhpcy5vcHRpb25zLmFjTGlzdERpdi5zdHlsZS5oZWlnaHQsIDEwKSAtIDEyOw0K
ICAgICAgICAgICAgaGdodCA9IChoZ2h0ID4gMCkgPyBoZ2h0IDogMDsNCiAgICAg
ICAgICAgIHRoaXMub3B0aW9ucy5hY0xpc3REaXYuc3R5bGUuaGVpZ2h0ID0gaGdo
dCArICdweCc7DQogICAgICAgICAgICB0aGlzLkFDSWZyYW1lU2l6ZSh0aGlzLm9w
dGlvbnMuYWNMaXN0RGl2LnN0eWxlLmhlaWdodCk7DQogICAgICAgICAgICBpZiAo
cGFyc2VJbnQodGhpcy5vcHRpb25zLmFjTGlzdERpdi5zdHlsZS5oZWlnaHQsIDEw
KSA8IDEzKSB7DQogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFjTGlzdERp
di5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7DQogICAgICAgICAgICAgICAg
dGhpcy5BQ0lmcmFtZVZpc2libGUodGhpcy5vcHRpb25zLmFjTGlzdERpdi5zdHls
ZS52aXNpYmlsaXR5KTsNCiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5vcHRpb25zLmFjZ3Jvd3RpbWVyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0xp
c3REaXYuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOw0KICAgICAgICAgICAg
dGhpcy5vcHRpb25zLmFjTGlzdERpdi5zdHlsZS5oZWlnaHQgPSAnMXB4JzsNCiAg
ICAgICAgICAgIHRoaXMuQUNJZnJhbWVWaXNpYmxlKHRoaXMub3B0aW9ucy5hY0xp
c3REaXYuc3R5bGUudmlzaWJpbGl0eSk7DQogICAgICAgICAgICB0aGlzLkFDSWZy
YW1lU2l6ZSh0aGlzLm9wdGlvbnMuYWNMaXN0RGl2LnN0eWxlLmhlaWdodCk7DQog
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcHRpb25zLmFjZ3Jvd3RpbWVy
KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhhbmRsZVJl
c2l6ZSkNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5oYW5kbGVSZXNpemUodGhp
cy5vcHRpb25zLmFjTGlzdERpdik7DQogICAgfSwNCg0KICAgIEFDR2V0U3VnZ2Vz
dGlvbnM6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIHRlbXAgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWNTY3JpcHQnKTsNCiAgICAgICAgaWYgKHRlbXAp
IHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY2hlYWQucmVtb3ZlQ2hpbGQo
dGVtcCk7DQogICAgICAgIH0NCiAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ1NDUklQVCcpOw0KICAgICAgICBzY3JpcHQuaWQgPSAn
YWNTY3JpcHQnOw0KICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCJ0eXBlIiwg
InRleHQvamF2YXNjcmlwdCIpOw0KICAgICAgICBzY3JpcHQuc3JjID0gdGhpcy5v
cHRpb25zLmFjVVJMICsgJy9BQ1NlYXJjaFN1Z2dlc3QuYXNweD9lbGVpZD0nICsg
dGhpcy5vcHRpb25zLmFjUXVlcnlCb3guaWQgKyAnJmxjaWQ9JyArIHRoaXMub3B0
aW9ucy5sY2lkICsgJyZxdWVyeT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMu
b3B0aW9ucy5hY09sZFZhbHVlKTsNCiAgICAgICAgdGhpcy5vcHRpb25zLmFjaGVh
ZC5hcHBlbmRDaGlsZChzY3JpcHQpOw0KICAgIH0sDQogICAgQUNDbGlja0hhbmRs
ZXI6IGZ1bmN0aW9uIChlLCBmb3JjZUFjdGlvbikgew0KICAgICAgICB2YXIgZWwg
PSB0aGlzLkFDU3JjRWwoZSk7DQogICAgICAgIHZhciBpYyA9IHRoaXMuQUNJc0No
aWxkKGVsLCB0aGlzLm9wdGlvbnMuYWNMaXN0RGl2KTsNCiAgICAgICAgaWYgKGVs
ID09PSB0aGlzLm9wdGlvbnMuYWNRdWVyeUJveCAmJiAhZm9yY2VBY3Rpb24pIHsN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBp
ZiAoIWljICYmICghdGhpcy5vcHRpb25zLmhhbmRsZVJlc2l6ZSB8fCAhdGhpcy5B
Q0lzQ2hpbGQoZWwsIHRoaXMub3B0aW9ucy5hY0xpc3REaXYucGFyZW50Tm9kZSkp
KSB7DQogICAgICAgICAgICB0aGlzLkFDSGlkZVRhcmdldCgpOw0KICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHZhciByZXR1cm5W
YWx1ZSA9IHRydWU7DQogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWNMaXN0RGl2
KSB7DQogICAgICAgICAgICB2YXIgcSA9IHRoaXMub3B0aW9ucy5hY1F1ZXJ5Qm94
Ow0KICAgICAgICAgICAgdmFyIG4gPSB0aGlzLm9wdGlvbnMuYWNMaXN0RGl2LmNo
aWxkTm9kZXNbcS5zZWxlY3RlZEluZGV4XTsNCiAgICAgICAgICAgIGlmIChpYyAm
JiBuKSB7DQogICAgICAgICAgICAgICAgcS5wcmV2aW91c1NpYmxpbmcuZGlzYWJs
ZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICBxLnByZXZpb3VzU2libGluZy5z
ZXRBdHRyaWJ1dGUoJ25hbWUnLCAncWlkJyk7DQogICAgICAgICAgICAgICAgcS5w
cmV2aW91c1NpYmxpbmcudmFsdWUgPSBuLmdldEF0dHJpYnV0ZSgnc3VnZ2VzdGlv
bklkJyk7DQogICAgICAgICAgICAgICAgcS52YWx1ZSA9IG4uZ2V0QXR0cmlidXRl
KCd0ZXh0VmFsJyk7DQogICAgICAgICAgICAgICAgcS5mb2N1cygpOw0KICAgICAg
ICAgICAgICAgIHRoaXMuQUNTZWxlY3RUZXh0KGUpOw0KICAgICAgICAgICAgICAg
IHRoaXMub3B0aW9ucy5hY09sZFZhbHVlID0gcS52YWx1ZTsNCiAgICAgICAgICAg
ICAgICBpZiAodGhpcy5vcHRpb25zLnN0YXRzT2JqKSB7DQogICAgICAgICAgICAg
ICAgICAgIHRoaXMub3B0aW9ucy5zdGF0c09iai5ldmVudENvbGxlY3Rpb25JZCA9
IFNldExvZ0NvbGxlY3Rpb25CaXQodGhpcy5vcHRpb25zLnN0YXRzT2JqLmV2ZW50
Q29sbGVjdGlvbklkLCA0MSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFjTGlzdERpdiAmJiBpYykgew0KICAg
ICAgICAgICAgICAgIHRoaXMuQUNIaWRlVGFyZ2V0KCk7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOw0KICAgIH0s
DQogICAgQUNJbml0U3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIChlKSB7DQogICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLmFjUmVzZXJ2ZWRLZXlz
Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAodGhpcy5BQ0dldEtleUNv
ZGUoZSkgPT0gdGhpcy5vcHRpb25zLmFjUmVzZXJ2ZWRLZXlzW2ldKSB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgICAgIHZhciBxID0gdGhpcy5vcHRpb25zLmFjUXVlcnlCb3g7DQogICAgICAg
IGlmICh0aGlzLkFDR2V0S2V5Q29kZShxKSA9PSA5KSB7DQogICAgICAgICAgICB0
aGlzLkFDQ2xpY2tIYW5kbGVyKHEpOw0KICAgICAgICB9DQogICAgICAgIHEuc2Vs
ZWN0ZWRJbmRleCA9IC0xOw0KICAgICAgICB0aGlzLkFDSGlnaGxpZ2h0KCk7DQog
ICAgICAgIHRoaXMub3B0aW9ucy5hY05ld1ZhbHVlID0gKHEudmFsdWUpID8gcS52
YWx1ZS5BQ1JlbW92ZVNwYWNlcygpIDogIiI7DQogICAgICAgIGlmICh0aGlzLm9w
dGlvbnMuYWNOb1ZhbCAhPT0gIiIpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLm9w
dGlvbnMuYWNOb1ZhbC50b0xvd2VyQ2FzZSgpID09IHRoaXMub3B0aW9ucy5hY05l
d1ZhbHVlLnN1YnN0cmluZygwLCB0aGlzLm9wdGlvbnMuYWNOb1ZhbC5sZW5ndGgp
LnRvTG93ZXJDYXNlKCkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICB0
aGlzLm9wdGlvbnMuYWNOb1ZhbCA9ICIiOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLm5v
bkNoYXJLZXlzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAodGhpcy5B
Q0dldEtleUNvZGUoZSkgPT0gdGhpcy5vcHRpb25zLm5vbkNoYXJLZXlzW2ldKSB7
DQogICAgICAgICAgICAgICAgcS5wcmV2aW91c1NpYmxpbmcuZGlzYWJsZWQgPSBm
YWxzZTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgICAgcS5wcmV2aW91c1NpYmxpbmcuZGlzYWJsZWQgPSB0
cnVlOw0KICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFjT2xkVmFsdWUudG9Mb3dl
ckNhc2UoKSAhPSB0aGlzLm9wdGlvbnMuYWNOZXdWYWx1ZS50b0xvd2VyQ2FzZSgp
ICYmIHRoaXMub3B0aW9ucy5hY05ld1ZhbHVlLmxlbmd0aCA+PSB0aGlzLm9wdGlv
bnMuc3RhcnRDaGFyKSB7DQogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFj
dGltZXIpIHsNCiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcHRp
b25zLmFjdGltZXIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIHQg
PSB0aGlzOw0KICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZG9OZXh0Q2Fs
bCkgew0KICAgICAgICAgICAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJ14nICsg
dGhpcy5vcHRpb25zLmFjT2xkVmFsdWUuUmVtb3ZlUmVnZXhDaHJzKCksICdpJyk7
DQogICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hY05ld1ZhbHVlLm1h
dGNoKHJlKSkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLkFDSGlkZVRhcmdl
dCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsN
CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRvTmV4dENhbGwgPSB0
cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGlmICh0aGlzLm9wdGlvbnMuZG9OZXh0Q2FsbCkgew0KICAgICAgICAgICAg
ICAgIHRoaXMub3B0aW9ucy5hY09sZFZhbHVlID0gdGhpcy5vcHRpb25zLmFjTmV3
VmFsdWU7DQogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFjdGltZXIgPSBz
ZXRUaW1lb3V0KGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAg
ICB0LkFDR2V0U3VnZ2VzdGlvbnMoZXZlbnQpOw0KICAgICAgICAgICAgICAgIH0s
IDEwMCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBp
ZiAodGhpcy5vcHRpb25zLmFjTmV3VmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25z
LnN0YXJ0Q2hhcikgew0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRvTmV4dENh
bGwgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy5BQ0hpZGVUYXJnZXQoKTsNCiAg
ICAgICAgICAgIHRoaXMub3B0aW9ucy5hY09sZFZhbHVlID0gdGhpcy5vcHRpb25z
LmFjTmV3VmFsdWU7DQogICAgICAgIH0NCiAgICB9LA0KICAgIEVycm9yU3VnZ2Vz
dGlvbnM6IGZ1bmN0aW9uIChxdWVyeSwgZXJyb3IpIHsNCiAgICAgICAgcmV0dXJu
Ow0KICAgIH0sDQogICAgT3V0cHV0U3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIChxdWVy
eSwgb3V0cHV0KSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB0aGlzLlBv
cEJ1YmJsZSgpOw0KICAgICAgICAgICAgaWYgKG91dHB1dCA9PT0gIiIpIHsNCiAg
ICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWNOb1ZhbCA9IHF1ZXJ5Ow0KICAg
ICAgICAgICAgICAgIHRoaXMuQUNIaWRlVGFyZ2V0KCk7DQogICAgICAgICAgICAg
ICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQog
ICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFjTm9WYWwgPSAiIjsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3RhdHNPYmop
IHsNCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3RhdHNPYmouZXZlbnRD
b2xsZWN0aW9uSWQgPSBTZXRMb2dDb2xsZWN0aW9uQml0KHRoaXMub3B0aW9ucy5z
dGF0c09iai5ldmVudENvbGxlY3Rpb25JZCwgNDApOw0KICAgICAgICAgICAgICAg
IHRoaXMub3B0aW9ucy5zdGF0c09iai5mbGV4SWQgPSAxMTsNCiAgICAgICAgICAg
ICAgICB0aGlzLm9wdGlvbnMuc3RhdHNPYmouZmxleFZhbHVlMSA9IHF1ZXJ5LnN1
YnN0cigwLCAyNTYpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIHNn
ID0gW107DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dHB1dC5s
ZW5ndGg7IGkgKz0gMikgew0KICAgICAgICAgICAgICAgIHNnLnB1c2godGhpcy5B
Q1N1Z2dlc3Rpb24ob3V0cHV0W2ldLCBvdXRwdXRbaSArIDFdKSk7DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICBzZyA9IHRoaXMuQUNTb3J0KHNnKTsNCiAgICAg
ICAgICAgIGlmIChzZy5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICAgICAgICB0
aGlzLm9wdGlvbnMuZG9OZXh0Q2FsbCA9IGZhbHNlOw0KICAgICAgICAgICAgICAg
IHRoaXMuQUNIaWRlVGFyZ2V0KCk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIHQgPSB0aGlzOw0KICAgICAg
ICAgICAgdGhpcy5vcHRpb25zLmFjTGlzdERpdi5pbm5lckhUTUwgPSAiIjsNCiAg
ICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuUmVtb3ZlUmVnZXhDaHJzKCk7DQogICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNnLmxlbmd0aDsgaSsrKSB7DQog
ICAgICAgICAgICAgICAgdmFyIGQwID0gdGhpcy5vcHRpb25zLmFjTm9kZS5jbG9u
ZU5vZGUodHJ1ZSk7DQogICAgICAgICAgICAgICAgdmFyIGR0eHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7DQogICAgICAgICAgICAgICAgZDAuc2V0
QXR0cmlidXRlKCdzdWdnZXN0aW9uSWQnLCBzZ1tpXS5JRCk7DQogICAgICAgICAg
ICAgICAgZDAuc2V0QXR0cmlidXRlKCd0ZXh0VmFsJywgc2dbaV0uU3VnZ2VzdGlv
bik7DQogICAgICAgICAgICAgICAgZDAuc2V0QXR0cmlidXRlKCdxdWVyeVZhbCcs
IHF1ZXJ5KTsNCiAgICAgICAgICAgICAgICBkdHh0LmNsYXNzTmFtZSA9ICdnc3Nf
YWNfZHR4dCc7DQogICAgICAgICAgICAgICAgZHR4dC5pZCA9IGR0eHQuY2xhc3NO
YW1lICsgaTsNCiAgICAgICAgICAgICAgICBkdHh0LmlubmVySFRNTCA9IHRoaXMu
Qm9sZENoYXJzKHNnW2ldLlN1Z2dlc3Rpb24sIHF1ZXJ5KTsNCiAgICAgICAgICAg
ICAgICBkMC5hcHBlbmRDaGlsZChkdHh0KTsNCiAgICAgICAgICAgICAgICB0aGlz
LkFDQWRkRXZ0KGQwLCAibW91c2VvdmVyIiwgZnVuY3Rpb24gKGV2ZW50KSB7DQog
ICAgICAgICAgICAgICAgICAgIHQuYWNNb3VzZUhpZ2hsaWdodChldmVudCk7DQog
ICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgdGhpcy5BQ0FkZEV2
dChkdHh0LCAibW91c2VvdmVyIiwgZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAg
ICAgICAgICAgICAgIHQuYWNNb3VzZUhpZ2hsaWdodChldmVudCk7DQogICAgICAg
ICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgdGhpcy5BQ0FkZEV2dChkMCwg
ImtleXVwIiwgZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgICAgICAgICAgICAg
IHQuQmxvd0J1YmJsZShldmVudCk7DQogICAgICAgICAgICAgICAgfSk7DQogICAg
ICAgICAgICAgICAgdGhpcy5BQ0FkZEV2dChkMCwgIm1vdXNlb3ZlciIsIGZ1bmN0
aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAgICB0LkJsb3dCdWJibGUo
ZXZlbnQpOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHRo
aXMub3B0aW9ucy5hY0xpc3REaXYuYXBwZW5kQ2hpbGQoZDApOw0KDQoNCiAgICAg
ICAgICAgICAgICBpZiAoZHR4dC5vZmZzZXRXaWR0aCA+IGQwLm9mZnNldFdpZHRo
KSB7DQogICAgICAgICAgICAgICAgICAgIGQwLnNldEF0dHJpYnV0ZSgnYmFsbG9v
bicsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICBkMC5hcHBlbmRDaGlsZCh0
aGlzLm9wdGlvbnMuQUNFbGxpcHNpcy5jbG9uZU5vZGUodHJ1ZSkpOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuQUNE
b1Nob3dUYXJnZXQoKTsNCiAgICAgICAgICAgIHZhciBhY3dpZCA9IHRoaXMuQUNE
cm9wV2lkdGgoKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0xpc3REaXYu
cGFyZW50Tm9kZS5zdHlsZS53aWR0aCA9IChwYXJzZUludChhY3dpZCkgLSAxKSAr
ICdweCc7DQogICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWNMaXN0RGl2LnN0eWxl
LndpZHRoID0gYWN3aWQ7DQogICAgICAgIH0NCiAgICAgICAgY2F0Y2ggKGV4KSB7
DQogICAgICAgICAgICB0aGlzLkFDSGlkZVRhcmdldCgpOw0KICAgICAgICB9DQog
ICAgfSwNCiAgICBCb2xkQ2hhcnM6IGZ1bmN0aW9uIChzc3RyLCBic3RyKSB7DQog
ICAgICAgIHZhciBvc3RyID0gc3N0cjsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgIG9zdHIgPSBvc3RyLnJlcGxhY2UoLzwvZ2ksICcmbHQ7JykucmVwbGFjZSgv
Pi9naSwgJyZndDsnKTsNCiAgICAgICAgICAgIGJzdHIgPSBic3RyLnJlcGxhY2Uo
LzwvZ2ksICcmbHQ7JykucmVwbGFjZSgvPi9naSwgJyZndDsnKTsNCiAgICAgICAg
ICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmNoYXJib2xkaW5nKSB7DQogICAgICAg
ICAgICAgICAgY2FzZSAxOg0KDQogICAgICAgICAgICAgICAgICAgIHZhciByZSA9
IG5ldyBSZWdFeHAoYnN0ciwgJ2knKTsNCiAgICAgICAgICAgICAgICAgICAgb3N0
ciA9IG9zdHIucmVwbGFjZShyZSwgJzxiPiQmPC9iPicpOw0KICAgICAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDI6DQoNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cChic3RyLCAnZ2knKTsN
CiAgICAgICAgICAgICAgICAgICAgb3N0ciA9IG9zdHIucmVwbGFjZShyZSwgJzxi
PiQmPC9iPicpOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlIDM6DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIHdvcmQg
PSBic3RyLnNwbGl0KC9ccysvZyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBp
ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCB3b3JkLmxlbmd0
aCAtIDE7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlID0g
bmV3IFJlZ0V4cCgnKF58XFxzKSg/ITx8PC98PGI+KSgnICsgd29yZFtpXSArICcp
KD8hPnw8XC9iPikoXFxifFxccyknLCAnZ2knKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIG9zdHIgPSBvc3RyLnJlcGxhY2UocmUsICckMTxiPiQyPC9iPiQzJyk7
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdmFy
IHJlID0gbmV3IFJlZ0V4cCgnKF58XFxzKSg/ITx8PC98PGI+KSgnICsgd29yZFtp
XSArICcpKD8hPnw8XC9iPiknLCAnZ2knKTsNCiAgICAgICAgICAgICAgICAgICAg
b3N0ciA9IG9zdHIucmVwbGFjZShyZSwgJyQxPGI+JDI8L2I+Jyk7DQogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDoNCg0K
ICAgICAgICAgICAgICAgICAgICB2YXIgd29yZCA9IGJzdHIuc3BsaXQoL1xzKy9n
KTsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3Jk
Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmUg
PSBuZXcgUmVnRXhwKCcoPyE8fDwvfDxiPikoJyArIHdvcmRbaV0gKyAnKSg/IT58
PFwvYj4pJywgJ2dpJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBvc3RyID0g
b3N0ci5yZXBsYWNlKHJlLCAnPGI+JCY8L2I+Jyk7DQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAg
ICAgZGVmYXVsdDoNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBj
YXRjaCAoZXgpIHsNCiAgICAgICAgICAgIHJldHVybiBzc3RyOw0KICAgICAgICB9
DQogICAgICAgIHJldHVybiBvc3RyOw0KICAgIH0sDQogICAgQmxvd0J1YmJsZTog
ZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRv
YnViYmxlKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAg
ICAgdmFyIGVsID0gdGhpcy5BQ1NyY0VsKGV2ZW50KTsNCiAgICAgICAgd2hpbGUg
KGVsLnRhZ05hbWUgPT0gJ1NQQU4nIHx8IGVsLnRhZ05hbWUgPT0gJ0InKSB7DQog
ICAgICAgICAgICBlbCA9IGVsLnBhcmVudE5vZGU7DQogICAgICAgIH0NCg0KICAg
ICAgICBpZiAoIWVsLmdldEF0dHJpYnV0ZSgnYmFsbG9vbicpKSB7DQogICAgICAg
ICAgICB0aGlzLlBvcEJ1YmJsZSgpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICB9DQogICAgICAgIHZhciBidCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdnc3NfYWNfYnRkaXYnKTsNCiAgICAgICAgdmFyIGJ0aSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdnc3NfYWNfYnRpZnJhbWUnKTsNCiAgICAgICAgaWYgKCFi
dCkgew0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFjTGlzdERpdi5wYXJlbnRO
b2RlLmFwcGVuZENoaWxkKHRoaXMub3B0aW9ucy5BQ0J1YmJsZVRleHROb2RlKTsN
CiAgICAgICAgICAgIGJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dzc19h
Y19idGRpdicpOw0KICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5BQ0J1YmJs
ZUlmcmFtZUhhY2spIHsNCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWNM
aXN0RGl2LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5vcHRpb25zLkFDQnVi
YmxlSWZyYW1lSGFjayk7DQogICAgICAgICAgICAgICAgYnRpID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2dzc19hY19idGlmcmFtZScpOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgdmFyIHQgPSB0aGlzOw0KICAgICAgICAgICAgYnQuc3R5
bGUub3BhY2l0eSA9IHRoaXMub3B0aW9ucy5idG9wYWM7DQogICAgICAgICAgICBi
dC5zdHlsZVsnZmlsdGVyJ10gPSAncHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWlj
cm9zb2Z0LkFscGhhKHN0eWxlPTAsIG9wYWNpdHk9JyArIHRoaXMub3B0aW9ucy5i
dG9wYWMgKyAnKSc7DQogICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNi
dWJibGVpbnRpbWVyKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY2J1YmJs
ZWludGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAg
ICAgICAgICAgICB0LkZhZGVJbkJ1YmJsZSgpOw0KICAgICAgICAgICAgfSwgNSk7
DQogICAgICAgIH0NCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dz
c19hY19idHR4dCcpLmlubmVySFRNTCA9IHRoaXMuQ2hhclN1YnNldChlbC5nZXRB
dHRyaWJ1dGUoJ3RleHRWYWwnKSwgZWwuZ2V0QXR0cmlidXRlKCdxdWVyeVZhbCcp
KTsNCiAgICAgICAgYnQuc3R5bGUudG9wID0gKGVsLm9mZnNldFRvcCArIChlbC5v
ZmZzZXRIZWlnaHQgLyAyKSkgKyAncHgnOw0KICAgICAgICBpZiAodGhpcy5vcHRp
b25zLmJ1YmJsZXNpZGUgPT0gJ3JpZ2h0Jykgew0KICAgICAgICAgICAgYnQuc3R5
bGUubGVmdCA9IHRoaXMub3B0aW9ucy5hY0xpc3REaXYuc3R5bGUud2lkdGg7DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKGJ0aSkgew0KICAgICAgICAgICAgYnRpLnN0
eWxlLnRvcCA9IGJ0LnN0eWxlLnRvcDsNCiAgICAgICAgICAgIGJ0aS5zdHlsZS5o
ZWlnaHQgPSBidC5vZmZzZXRIZWlnaHQgKyAncHgnOw0KICAgICAgICB9DQogICAg
fSwNCiAgICBQb3BCdWJibGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIGJ0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dzc19hY19idGRpdicpOw0KICAg
ICAgICBpZiAoYnQgJiYgdGhpcy5vcHRpb25zLmFjYnViYmxlb3V0dGltZXIgPT0g
bnVsbCkgew0KICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLm9wdGlvbnMu
YWNidWJibGVvdXR0aW1lcik7DQogICAgICAgICAgICB2YXIgdCA9IHRoaXM7DQog
ICAgICAgICAgICB0aGlzLm9wdGlvbnMuYnRvcGFjID0gMTAwOw0KICAgICAgICAg
ICAgYnQuc3R5bGUub3BhY2l0eSA9IHRoaXMub3B0aW9ucy5idG9wYWMgLyAxMDA7
DQogICAgICAgICAgICBidC5zdHlsZVsnZmlsdGVyJ10gPSAncHJvZ2lkOkRYSW1h
Z2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKHN0eWxlPTAsIG9wYWNpdHk9JyAr
IHRoaXMub3B0aW9ucy5idG9wYWMgKyAnKSc7DQogICAgICAgICAgICB0aGlzLm9w
dGlvbnMuYWNidWJibGVvdXR0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uIChl
dmVudCkgew0KICAgICAgICAgICAgICAgIHQuRmFkZU91dEJ1YmJsZSgpOw0KICAg
ICAgICAgICAgfSwgNSk7DQogICAgICAgIH0NCiAgICB9LA0KICAgIEZhZGVJbkJ1
YmJsZTogZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgYnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZ3NzX2FjX2J0ZGl2Jyk7DQogICAgICAgIGlmIChidCkg
ew0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmJ0b3BhYyA9IHRoaXMub3B0aW9u
cy5idG9wYWMgKyAxMDsNCiAgICAgICAgICAgIGJ0LnN0eWxlLm9wYWNpdHkgPSB0
aGlzLm9wdGlvbnMuYnRvcGFjIC8gMTAwOw0KICAgICAgICAgICAgYnQuc3R5bGVb
J2ZpbHRlciddID0gJ3Byb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5B
bHBoYShzdHlsZT0wLCBvcGFjaXR5PScgKyB0aGlzLm9wdGlvbnMuYnRvcGFjICsg
JyknOw0KICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5idG9wYWMgPj0gMTAw
KSB7DQogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLm9wdGlvbnMu
YWNidWJibGVpbnRpbWVyKTsNCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMu
YnRvcGFjID0gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0sDQog
ICAgRmFkZU91dEJ1YmJsZTogZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgYnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3NzX2FjX2J0ZGl2Jyk7DQogICAg
ICAgIHZhciBidGkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3NzX2FjX2J0
aWZyYW1lJyk7DQogICAgICAgIGlmIChidCkgew0KICAgICAgICAgICAgdGhpcy5v
cHRpb25zLmJ0b3BhYyA9IHRoaXMub3B0aW9ucy5idG9wYWMgLSAxMDsNCiAgICAg
ICAgICAgIGJ0LnN0eWxlLm9wYWNpdHkgPSB0aGlzLm9wdGlvbnMuYnRvcGFjIC8g
MTAwOw0KICAgICAgICAgICAgYnQuc3R5bGVbJ2ZpbHRlciddID0gJ3Byb2dpZDpE
WEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PScgKyB0aGlz
Lm9wdGlvbnMuYnRvcGFjICsgJyknOw0KICAgICAgICAgICAgaWYgKHRoaXMub3B0
aW9ucy5idG9wYWMgPD0gMCkgew0KICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwodGhpcy5vcHRpb25zLmFjYnViYmxlb3V0dGltZXIpOw0KICAgICAgICAgICAg
ICAgIHRoaXMub3B0aW9ucy5hY2J1YmJsZW91dHRpbWVyID0gbnVsbDsNCiAgICAg
ICAgICAgICAgICB0aGlzLm9wdGlvbnMuYnRvcGFjID0gMDsNCiAgICAgICAgICAg
ICAgICBpZiAoYnRpKSB7DQogICAgICAgICAgICAgICAgICAgIGJ0aS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGJ0aSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGJ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYnQpOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfSwNCiAgICBDaGFyU3Vic2V0OiBmdW5j
dGlvbiAob3R4dCwgYnR4dCkgew0KICAgICAgICB2YXIgc3R4dCA9IG90eHQuc3Vi
c3RyaW5nKDAsIHRoaXMub3B0aW9ucy5idWJibGVjaGFybGltaXQpOw0KICAgICAg
ICBpZiAob3R4dC5sZW5ndGggPiB0aGlzLm9wdGlvbnMuYnViYmxlY2hhcmxpbWl0
KSB7DQogICAgICAgICAgICBzdHh0ICs9ICcuLi4nOw0KICAgICAgICB9DQogICAg
ICAgIHJldHVybiBzdHh0Ow0KICAgIH0sDQogICAgQUNTb3J0OiBmdW5jdGlvbiAo
YXJyKSB7DQogICAgICAgIHZhciBzcnQgPSBmdW5jdGlvbiAoYSwgYikgew0KICAg
ICAgICAgICAgcmV0dXJuIGEuU3VnZ2VzdGlvbi5sZW5ndGggLSBiLlN1Z2dlc3Rp
b24ubGVuZ3RoOw0KICAgICAgICB9Ow0KICAgICAgICByZXR1cm4gYXJyLnNvcnQo
c3J0KTsNCiAgICB9LA0KICAgIEFDQWRkRXZ0OiBmdW5jdGlvbiAoZWwsIG9wLCBm
bmMpIHsNCiAgICAgICAgTVMuU3VwcG9ydC5BQy5BZGRFdmVudChlbCwgb3AsIGZu
Yyk7DQogICAgfSwNCiAgICBBQ0tpbGxFdnQ6IGZ1bmN0aW9uIChlbCwgb3AsIGZu
Yykgew0KICAgICAgICBNUy5TdXBwb3J0LkFDLktpbGxFdmVudChlbCwgb3AsIGZu
Yyk7DQogICAgfSwNCiAgICBBQ0hhbmRsZUtleXNEb3duOiBmdW5jdGlvbiAoZSkg
ew0KICAgICAgICB2YXIgayA9IHRoaXMuQUNHZXRLZXlDb2RlKGUpOw0KICAgICAg
ICB2YXIgcSA9IHRoaXMuQUNTcmNFbChlKTsNCiAgICAgICAgdmFyIGFjd2lkID0g
dGhpcy5BQ0Ryb3BXaWR0aCgpOw0KICAgICAgICB0aGlzLm9wdGlvbnMuYWNMaXN0
RGl2LnBhcmVudE5vZGUuc3R5bGUud2lkdGggPSAocGFyc2VJbnQoYWN3aWQpIC0g
MSkgKyAncHgnOw0KICAgICAgICB0aGlzLm9wdGlvbnMuYWNMaXN0RGl2LnN0eWxl
LndpZHRoID0gYWN3aWQ7DQogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWNMaXN0
RGl2ICYmIHRoaXMub3B0aW9ucy5hY0xpc3REaXYuc3R5bGUgJiYgdGhpcy5vcHRp
b25zLmFjTGlzdERpdi5zdHlsZS52aXNpYmlsaXR5ICE9ICJoaWRkZW4iKSB7DQog
ICAgICAgICAgICB2YXIgbWF4ID0gdGhpcy5vcHRpb25zLmFjTGlzdERpdi5jaGls
ZE5vZGVzLmxlbmd0aDsNCiAgICAgICAgICAgIHZhciBzaSA9IHEuc2VsZWN0ZWRJ
bmRleDsNCiAgICAgICAgICAgIHZhciBuID0gdGhpcy5vcHRpb25zLmFjTGlzdERp
di5jaGlsZE5vZGVzOw0KICAgICAgICAgICAgaWYgKGsgPT0gNDApIHsNCiAgICAg
ICAgICAgICAgICBpZiAoc2kgPCBtYXggLSAxKSB7DQogICAgICAgICAgICAgICAg
ICAgIHEuc2VsZWN0ZWRJbmRleCsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICBlbHNlIGlmIChzaSA+PSBtYXggLSAxKSB7DQogICAgICAgICAg
ICAgICAgICAgIHEuc2VsZWN0ZWRJbmRleCA9IC0xOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBzaSA9IHEuc2VsZWN0ZWRJbmRleDsNCiAgICAg
ICAgICAgICAgICB0aGlzLkFDSGlnaGxpZ2h0KCk7DQogICAgICAgICAgICAgICAg
aWYgKHNpIDwgMCkgew0KICAgICAgICAgICAgICAgICAgICBxLnZhbHVlID0gdGhp
cy5vcHRpb25zLmFjT2xkVmFsdWU7DQogICAgICAgICAgICAgICAgICAgIHRoaXMu
UG9wQnViYmxlKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFRleHQgPSBu
W3NpXS5nZXRBdHRyaWJ1dGUoJ3RleHRWYWwnKTsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRUZXh0ICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHEucHJldmlvdXNTaWJsaW5nLmRpc2FibGVkID0gZmFsc2U7DQogICAg
ICAgICAgICAgICAgICAgICAgICBxLnByZXZpb3VzU2libGluZy5zZXRBdHRyaWJ1
dGUoJ25hbWUnLCAncWlkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBxLnBy
ZXZpb3VzU2libGluZy52YWx1ZSA9IG5bc2ldLmdldEF0dHJpYnV0ZSgnc3VnZ2Vz
dGlvbklkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBxLnZhbHVlID0gY3Vy
cmVudFRleHQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgdGhpcy5CbG93QnViYmxlKG5bc2ldKTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgdGhpcy5BQ1NlbGVjdFRleHQoZSk7DQogICAgICAg
ICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ug
aWYgKGsgPT0gMzgpIHsNCiAgICAgICAgICAgICAgICBpZiAoc2kgPj0gMCkgew0K
ICAgICAgICAgICAgICAgICAgICBxLnNlbGVjdGVkSW5kZXgtLTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc2kgPT0gLTEpIHsN
CiAgICAgICAgICAgICAgICAgICAgcS5zZWxlY3RlZEluZGV4ID0gbWF4IC0gMTsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2kgPSBxLnNlbGVj
dGVkSW5kZXg7DQogICAgICAgICAgICAgICAgdGhpcy5BQ0hpZ2hsaWdodCgpOw0K
ICAgICAgICAgICAgICAgIGlmIChzaSA8IDApIHsNCiAgICAgICAgICAgICAgICAg
ICAgcS52YWx1ZSA9IHRoaXMub3B0aW9ucy5hY09sZFZhbHVlOw0KICAgICAgICAg
ICAgICAgICAgICB0aGlzLlBvcEJ1YmJsZSgpOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgdmFy
IGN1cnJlbnRUZXh0ID0gbltzaV0uZ2V0QXR0cmlidXRlKCd0ZXh0VmFsJyk7DQog
ICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dCAhPSBudWxsKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgcS52YWx1ZSA9IGN1cnJlbnRUZXh0Ow0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLkJsb3dCdWJibGUobltzaV0pOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB0aGlzLkFDU2VsZWN0VGV4dChl
KTsNCiAgICAgICAgICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgZWxzZSBpZiAoayA9PSAxMyAmJiBzaSA+IC0xKSB7DQogICAgICAgICAg
ICAgICAgZS5yZXR1cm5WYWx1ZSA9IHRoaXMuQUNDbGlja0hhbmRsZXIobltzaV0p
Ow0KICAgICAgICAgICAgICAgIHRoaXMuQUNTdG9wRGVmYXVsdChlKTsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gZS5yZXR1cm5WYWx1ZTsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGVsc2UgaWYgKGsgPT0gMjcpIHsNCiAgICAgICAgICAgICAg
ICB0aGlzLkFDSGlkZVRhcmdldCgpOw0KICAgICAgICAgICAgICAgIHEudmFsdWUg
PSB0aGlzLm9wdGlvbnMuYWNPbGRWYWx1ZTsNCiAgICAgICAgICAgICAgICBxLmZv
Y3VzKCk7DQogICAgICAgICAgICAgICAgdGhpcy5BQ1NlbGVjdFRleHQoZSk7DQog
ICAgICAgICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGVsc2UgaWYgKGsgPT0gOSkgew0KICAgICAgICAgICAgICAgIHRoaXMuQUNDbGlj
a0hhbmRsZXIoZSwgdHJ1ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgZWxzZSB7DQogICAgICAgICAgICBpZiAoayA9PSAyNykgew0KICAgICAg
ICAgICAgICAgIHEudmFsdWUgPSAnJzsNCiAgICAgICAgICAgICAgICBxLmZvY3Vz
KCk7DQogICAgICAgICAgICAgICAgdGhpcy5BQ1NlbGVjdFRleHQoZSk7DQogICAg
ICAgICAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOw0KICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH0sDQoNCiAgICBBQ1NlbGVjdFRleHQ6IGZ1bmN0aW9uIChldmVudCkgew0KICAg
ICAgICBpZiAoIXRoaXMub3B0aW9ucy5hY09sZFZhbHVlKSB7DQogICAgICAgICAg
ICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5h
Y1F1ZXJ5Qm94LmNyZWF0ZVRleHRSYW5nZSkgew0KICAgICAgICAgICAgdmFyIHRl
eHRSYW5nZSA9IHRoaXMub3B0aW9ucy5hY1F1ZXJ5Qm94LmNyZWF0ZVRleHRSYW5n
ZSgpOw0KICAgICAgICAgICAgdGV4dFJhbmdlLm1vdmVTdGFydCgiY2hhcmFjdGVy
IiwgdGhpcy5vcHRpb25zLmFjT2xkVmFsdWUubGVuZ3RoKTsNCiAgICAgICAgICAg
IHRleHRSYW5nZS5zZWxlY3QoKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlm
ICh0aGlzLm9wdGlvbnMuYWNRdWVyeUJveC5zZXRTZWxlY3Rpb25SYW5nZSkgew0K
ICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFjUXVlcnlCb3guZm9jdXMoKTsNCiAg
ICAgICAgICAgIHRoaXMub3B0aW9ucy5hY1F1ZXJ5Qm94LnNldFNlbGVjdGlvblJh
bmdlKHRoaXMub3B0aW9ucy5hY09sZFZhbHVlLmxlbmd0aCwgdGhpcy5vcHRpb25z
LmFjUXVlcnlCb3gudmFsdWUubGVuZ3RoKTsNCiAgICAgICAgfQ0KICAgICAgICB0
aGlzLkFDU3RvcERlZmF1bHQoZXZlbnQpOw0KICAgIH0sDQogICAgYWNNb3VzZUhp
Z2hsaWdodDogZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgdmFyIGVsID0gdGhpcy5B
Q1NyY0VsKGUpOw0KICAgICAgICB3aGlsZSAoZWwudGFnTmFtZSA9PSAnU1BBTicg
fHwgZWwudGFnTmFtZSA9PSAnQicpIHsNCiAgICAgICAgICAgIGVsID0gZWwucGFy
ZW50Tm9kZTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgc2licyA9IHRoaXMub3B0
aW9ucy5hY0xpc3REaXYuY2hpbGROb2RlczsNCiAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzaWJzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAoc2li
c1tpXSA9PSBlbCkgew0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY1F1
ZXJ5Qm94LnNlbGVjdGVkSW5kZXggPSBpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgICAgIHRoaXMuQUNIaWdobGlnaHQoKTsNCiAgICB9LA0KICAgIEFD
SGlnaGxpZ2h0OiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBzaWJzID0gdGhp
cy5vcHRpb25zLmFjTGlzdERpdi5jaGlsZE5vZGVzOw0KICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNpYnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGlm
IChzaWJzW2ldLmNsYXNzTmFtZSA9PSAnYWNTdWdEaXYnKSB7DQogICAgICAgICAg
ICAgICAgaWYgKGkgIT0gdGhpcy5vcHRpb25zLmFjUXVlcnlCb3guc2VsZWN0ZWRJ
bmRleCkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLkhpZ2hsaWdodEVscyhz
aWJzW2ldLCAnYmFja2dyb3VuZCcsIHRoaXMub3B0aW9ucy5jbHJ3aW4pOw0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLkhpZ2hsaWdodEVscyhzaWJzW2ldLCAnY29s
b3InLCB0aGlzLm9wdGlvbnMuY2xyd2ludHh0KTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHRo
aXMuSGlnaGxpZ2h0RWxzKHNpYnNbaV0sICdiYWNrZ3JvdW5kJywgdGhpcy5vcHRp
b25zLmNscmhpZ2gpOw0KICAgICAgICAgICAgICAgICAgICB0aGlzLkhpZ2hsaWdo
dEVscyhzaWJzW2ldLCAnY29sb3InLCB0aGlzLm9wdGlvbnMuY2xyaGlnaHR4dCk7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgfSwNCiAgICBIaWdobGlnaHRFbHM6IGZ1bmN0aW9uIChlbCwgc3R5bGUsIGNv
bG9yKSB7DQogICAgICAgIGlmIChlbCAmJiBlbC50YWdOYW1lKSB7DQogICAgICAg
ICAgICBlbC5zdHlsZVtzdHlsZV0gPSBjb2xvcjsNCiAgICAgICAgICAgIGlmIChl
bC5jaGlsZE5vZGVzKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBlbC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAg
ICAgICAgIHRoaXMuSGlnaGxpZ2h0RWxzKGVsLmNoaWxkTm9kZXNbaV0sIHN0eWxl
LCBjb2xvcik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgfSwNCiAgICBBQ1N0b3BEZWZhdWx0OiBmdW5jdGlvbiAoZXZl
bnQpIHsNCiAgICAgICAgaWYgKHdpbmRvdy5ldmVudCkgew0KICAgICAgICAgICAg
d2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7DQogICAgICAgICAgICB3
aW5kb3cuZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAg
ICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVs
dCkgew0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9LA0KICAgIEFDSGlkZVRhcmdl
dDogZnVuY3Rpb24gKCkgew0KICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFjTGlz
dERpdikgew0KICAgICAgICAgICAgdGhpcy5BQ0RvSGlkZVRhcmdldCgpOw0KICAg
ICAgICAgICAgdGhpcy5vcHRpb25zLmFjUXVlcnlCb3guc2VsZWN0ZWRJbmRleCA9
IC0xOw0KICAgICAgICB9DQogICAgfSwNCiAgICBBQ0dldEtleUNvZGU6IGZ1bmN0
aW9uIChlKSB7DQogICAgICAgIGlmICghZSkgew0KICAgICAgICAgICAgcmV0dXJu
IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGUua2V5Q29kZSkgew0KICAg
ICAgICAgICAgcmV0dXJuIGUua2V5Q29kZTsNCiAgICAgICAgfQ0KICAgICAgICBp
ZiAoZS5jaGFyQ29kZSkgew0KICAgICAgICAgICAgcmV0dXJuIGUuY2hhckNvZGU7
DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG51bGw7DQogICAgfSwNCiAgICBB
Q0NvbXB1dGVkU3R5bGU6IGZ1bmN0aW9uIChlbCwgc3R5bGUpIHsNCiAgICAgICAg
dmFyIHJldHVyblZhbCA9ICIiOw0KICAgICAgICBpZiAoZG9jdW1lbnQuZGVmYXVs
dFZpZXcgJiYgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSkg
ew0KICAgICAgICAgICAgcmV0dXJuVmFsID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbClbc3R5bGVdOw0KICAgICAgICB9DQog
ICAgICAgIGVsc2UgaWYgKGVsLmN1cnJlbnRTdHlsZSkgew0KICAgICAgICAgICAg
c3R5bGUgPSBzdHlsZS5yZXBsYWNlKC8tKHcpL2csIGZ1bmN0aW9uIChzdHJNYXRj
aCwgcDEpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gcDEudG9VcHBlckNhc2Uo
KTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJuVmFsID0gZWwu
Y3VycmVudFN0eWxlW3N0eWxlXTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4g
cmV0dXJuVmFsOw0KICAgIH0sDQogICAgQUNJc0NoaWxkOiBmdW5jdGlvbiAoY2hp
bGQsIHBhcmVudCkgew0KICAgICAgICBpZiAoIWNoaWxkIHx8ICFwYXJlbnQpIHsN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICB2
YXIgcGUgPSBjaGlsZC5wYXJlbnROb2RlOw0KICAgICAgICBpZiAocGFyZW50ID09
IHBlKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAg
ICAgICBpZiAoIXBlKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgIH0NCiAgICAgICAgcmV0dXJuIHRoaXMuQUNJc0NoaWxkKHBlLCBwYXJlbnQp
Ow0KICAgIH0sDQogICAgQUNTcmNFbDogZnVuY3Rpb24gKGUpIHsNCiAgICAgICAg
aWYgKGUpIHsNCiAgICAgICAgICAgIGlmIChlLnNyY0VsZW1lbnQpIHsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gZS5zcmNFbGVtZW50Ow0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaWYgKGUudGFyZ2V0KSB7DQogICAgICAgICAgICAgICAgcmV0
dXJuIGUudGFyZ2V0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAg
IHJldHVybiBlOw0KICAgIH0sDQoNCg0KICAgIEFDTWFrZUlmcmFtZUhhY2s6IGZ1
bmN0aW9uIChwYXJlbnQsIGEpIHsNCiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMu
YWNJZnJhbWVIYWNrKSB7DQogICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWNJZnJh
bWVIYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnSUZSQU1FJyk7DQogICAg
ICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5hY0lmcmFtZUhhY2suc3R5bGU7
DQogICAgICAgICAgICB2YXIgYXMgPSBhLnN0eWxlOw0KICAgICAgICAgICAgaS5t
YXJnaW5Ub3AgPSBhcy5tYXJnaW5Ub3A7DQogICAgICAgICAgICBpLmxlZnQgPSBh
cy5sZWZ0Ow0KICAgICAgICAgICAgaS50b3AgPSBhcy50b3A7DQogICAgICAgICAg
ICBpLnZpc2liaWxpdHkgPSBhcy52aXNpYmlsaXR5Ow0KICAgICAgICAgICAgaS53
aWR0aCA9ICcxMDAlJzsNCiAgICAgICAgICAgIGkuaGVpZ2h0ID0gJzBweCc7DQog
ICAgICAgICAgICBpLnBvc2l0aW9uID0gYXMucG9zaXRpb247DQogICAgICAgICAg
ICB0aGlzLm9wdGlvbnMuYWNJZnJhbWVIYWNrLnN0eWxlWydmaWx0ZXInXSA9ICdw
cm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoc3R5bGU9MCxv
cGFjaXR5PTApJzsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY0lmcmFtZUhh
Y2suc3JjID0gIiI7DQogICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodGhp
cy5vcHRpb25zLmFjSWZyYW1lSGFjayk7DQogICAgICAgICAgICB0aGlzLkFDSWZy
YW1lU2l6ZSA9IGZ1bmN0aW9uIChodCkgew0KICAgICAgICAgICAgICAgIGkuaGVp
Z2h0ID0gaHQ7DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgdGhpcy5BQ0lm
cmFtZVZpc2libGUgPSBmdW5jdGlvbiAodmlzKSB7DQogICAgICAgICAgICAgICAg
aS52aXNpYmlsaXR5ID0gdmlzOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0K
ICAgIH0sDQogICAgQUNTdWdnZXN0aW9uOiBmdW5jdGlvbiAoaWQsIHN1Z2dlc3Rp
b24pIHsNCiAgICAgICAgdmFyIG9iaiA9DQogICAgew0KICAgICAgICBJRDogaWQs
IFN1Z2dlc3Rpb246IHN1Z2dlc3Rpb24NCiAgICB9Ow0KICAgICAgICByZXR1cm4g
b2JqOw0KICAgIH0sDQogICAgQUNJZnJhbWVTaXplOiBmdW5jdGlvbiAoKSB7IH0s
DQogICAgQUNJZnJhbWVWaXNpYmxlOiBmdW5jdGlvbiAoKSB7IH0NCn07DQpTdHJp
bmcucHJvdG90eXBlLlJlbW92ZVJlZ2V4Q2hycyA9IGZ1bmN0aW9uKCl7DQogICAg
dmFyIHJlZ0V4Q2hycyA9IG5ldyBSZWdFeHAoJyhcXFxcfFxcLnxcXCt8XFwkfFxc
P3xcXCp8XFwofFxcKXxcXFt8XFxdfFxcXnxcXCEpJywgJ2cnKTsNCiAgICByZXR1
cm4gdGhpcy5yZXBsYWNlKHJlZ0V4Q2hycywgJ1xcJDEnKTsNCn07DQp2YXIgZGJj
c1NwYWNlUkUgPSBuZXcgUmVnRXhwKFN0cmluZy5mcm9tQ2hhckNvZGUoMTIyODgp
LCAiZyIpOw0KU3RyaW5nLnByb3RvdHlwZS5BQ1JlbW92ZVNwYWNlcyA9IGZ1bmN0
aW9uKCl7DQogICAgdmFyIHRlbXAgPSB0aGlzLnJlcGxhY2UoZGJjc1NwYWNlUkUs
ICcgJyk7DQogICAgdGVtcCA9IHRlbXAucmVwbGFjZSgvXlxzK3xccyskL2csICcn
KTsNCiAgICByZXR1cm4gdGVtcC5yZXBsYWNlKC9cc1xzKy9nLCAnICcpOw0KfTs=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=onemscomcomponents.css
Content-Type: text/css; charset=utf-8; name=onemscomcomponents.css
Content-Location: http://support.microsoft.com/Styles/onemscomcomponents.css
Content-Transfer-Encoding: 8bit
.oneMscomComp,.oneMscomComp div,.oneMscomComp h1,.oneMscomComp h2,.oneMscomComp h3,.oneMscomComp h4,.oneMscomComp h5,.oneMscomComp h6,.oneMscomComp li,.oneMscomComp ol,.oneMscomComp p,.oneMscomComp ul{margin:0;padding:0}.oneMscomComp a{cursor:pointer}.oneMscomComp a:link,.oneMscomComp a:visited{text-decoration:none}.oneMscomComp a:hover,.oneMscomComp a:active{text-decoration:underline}.oneMscomComp h1,.oneMscomComp h2,.oneMscomComp h3,.oneMscomComp h4,.oneMscomComp h5,.oneMscomComp h6{font-weight:normal;font-size:100%}.oneMscomComp img{border:none}.oneMscomComp ol,.oneMscomComp ul{list-style-type:none}.oneMscomComp .cssClear{clear:both;height:0;margin:0;padding:0;_line-height:0}.oneMscomComp .png-img{position:relative;overflow:hidden}.oneMscomComp .png-img span{position:absolute;top:-9999px}.oneMscomComp .png-img div{background-position:0 center;background-repeat:no-repeat}.oneMscomComp .png-img .bg-img{display:block;_display:none}.oneMscomComp .png-img .filter-img{display:none;_display:block}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomListLayout.css
Content-Type: text/css; charset=utf-8; name=oneMscomListLayout.css
Content-Location: http://support.microsoft.com/Styles/oneMscomListLayout.css
Content-Transfer-Encoding: 8bit
.oneMscomList{overflow:hidden;*display:inline-block}.oneMscomListFeatureLayout .mstListFeatureLayoutImgContainer{position:relative;overflow:hidden}.oneMscomListFeatureLayout .mstListFeatureLayoutTitle{padding-bottom:5px;font-size:80%}.oneMscomListFeatureLayout .mstListFeatureLayoutTitle a{text-decoration:none}.oneMscomListFeatureLayout .mstListFeatureLayoutTitleLink{font-weight:bold}.oneMscomListFeatureLayout .mstListFeatureLayoutDesc{font-size:75%}.oneMscomListFeatureLayout .mstListFeatureLayoutButton{padding-top:10px;padding-bottom:10px}.oneMscomListFeatureLayout .mstListFeatureLayoutButton a{border:1px solid navy;text-decoration:none}.oneMscomListFeatureLayout .mstListFeatureLayoutButtonText{padding-left:10px;padding-right:10px}div.oneMscomListTileIconLayout{position:relative;background-repeat:no-repeat;background-position:center}div.oneMscomListTileIconLayoutSmall,div.oneMscomListTileIconLayoutSmall .mstListTileIconLayoutImage{height:145px;width:145px}div.oneMscomListTileIconLayoutLarge,div.oneMscomListTileIconLayoutLarge .mstListTileIconLayoutImage{height:145px;width:300px}.oneMscomListTileIconLayout a:active,.oneMscomListTileIconLayout a:hover{text-decoration:none}.oneMscomListTileIconLayout .mstListTileIconLayoutLink{height:100%;width:100%;display:block}.oneMscomListTileIconLayout .mstListTileIconLayoutImage{text-align:center;vertical-align:middle;display:table-cell}.oneMscomListTileIconLayout .mstListTileIconLayoutTitle{position:absolute;bottom:0;padding:5px 10px 5px 10px;color:#fff}.oneMscomListTileIconLayout .mstListTileIconLayoutTitle_right{*right:0}.oneMscomListTileIconLayout .mstListTileIconLayoutImage span{*display:inline-block;*height:100%;*width:1px}.oneMscomListTileIconLayout .mstListTileIconLayoutImage *{*vertical-align:middle}div.oneMscomListTileTextLayout{position:relative;background-repeat:no-repeat;background-position:center}div.oneMscomListTileTextLayoutSmall{height:145px;width:145px}div.oneMscomListTileTextLayoutLarge{height:145px;width:300px}div.oneMscomListTileTextLayoutSmall .mstListTileTextLayoutText{height:135px;width:135px}div.oneMscomListTileTextLayoutLarge .mstListTileTextLayoutText{height:135px;width:290px}.oneMscomListTileTextLayout a:active,.oneMscomListTileTextLayout a:hover{text-decoration:none}.oneMscomListTileTextLayout .mstListTileTextLayoutLink{height:100%;width:100%;display:block}.oneMscomListTileTextLayout .mstListTileTextLayoutText{vertical-align:middle;display:table-cell;color:#fff;padding:5px 10px 5px 10px;font-size:85%}.oneMscomListTileTextLayout .mstListTileTextLayoutTitle_right{*right:0}.oneMscomListTileTextLayout .mstListTileTextLayoutText *{*vertical-align:middle}.oneMscomListTileTextLayout .mstListTileTextLayoutText .mstListTileTextLayoutSpan{*display:inline-block;*height:100%;*width:1px}.oneMscomListTileTextLayout .mstListTileTextLayoutText .mstListTileTextLayoutTextSpan{*display:inline-block}.oneMscomListTileTextLayout .mstListTileTextLayoutTitle{position:absolute;bottom:0;padding:5px 10px 5px 10px;color:#fff}.oneMscomListPrimaryTitleLayout{font-size:200%}.oneMscomListSecondaryTitleLayout{font-size:150%}.oneMscomListTextLayout{font-size:75%}.oneMscomListLinkLayout .mstListLinkLayoutLink{font-size:80%}.oneMscomListSpacerLayout{background-repeat:no-repeat;background-position:center}.oneMscomCarouselLayout .mstCarouselLayoutDesc a:hover{text-decoration:none}.oneMscomRatingLayout .mstRatingLayoutStar{background-repeat:no-repeat;background-color:transparent}.oneMscomRatingLayout .mstRatingLayoutStarBig a{height:17px;width:17px}.oneMscomRatingLayout .mstRatingLayoutStarSmall a{height:13px;width:13px;overflow:hidden}.oneMscomRatingLayout .mstRatingTotalStar{background-color:#e1f2fb;text-align:center;height:19px;color:#4f4f4f;font-size:11px}.oneMscomRatingLayout .mstRatingTotalStarSpan{display:inline-block;margin-left:2px;margin-right:2px;margin-top:3px}.oneMscomRatingLayout .mstRatingBinaryNav{background-repeat:no-repeat;background-color:transparent}.oneMscomRatingLayout .mstRatingBinaryNav a{height:18px;width:18px}.oneMscomRatingLayout .mstRatingBinaryMinusOn{background-position:0 0;cursor:pointer}.oneMscomRatingLayout .mstRatingBinaryMinusOff{background-position:0 -36px}.oneMscomRatingLayout .mstRatingBinaryPlusOn{background-position:0 -72px;cursor:pointer}.oneMscomRatingLayout .mstRatingBinaryPlusOff{background-position:0 -108px}.oneMscomRatingLayout .mstRatingBinaryContainer{width:300px}.oneMscomRatingLayout .mstRatingBinaryBarContainer{height:2px;padding-top:8px;padding-left:4px;padding-right:4px}.oneMscomRatingLayout .mstRatingBinaryBarNotLike{width:100%;height:2px}.oneMscomRatingLayout .mstRatingBinaryBarLike{height:100%}.oneMscomRatingLayout .mstRatingTotalBinary{color:#4f4f4f;font-size:11px}.oneMscomListHeroLayout a:hover{text-decoration:none}.oneMscomListHeroLayout .mstHeroCategoryLink{margin-bottom:5px}.oneMscomListHeroLayout .mstHeroTitleLink{font-weight:bold}.oneMscomListHeroLayout .mstHeroTitleContainer .mstHeroDesc{padding:11px 0 13px 0}.oneMscomListHeroLayout .mstHeroTitleContainerRight{padding:0 20px 0 10px}.oneMscomListHeroLayout .mstHeroTitleContainerLeft{padding:0 20px 0 20px}.oneMscomListHeroLayout .mstHeroPlaceholder{margin:0;padding:0}.oneMscomListHeroLayout .mstHeroTitleContainerRight .mstHeroPlaceholder{height:12px}.oneMscomListHeroLayout .mstHeroTitleContainerLeft .mstHeroPlaceholder{height:37px}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomBlade.css
Content-Type: text/css; charset=utf-8; name=oneMscomBlade.css
Content-Location: http://support.microsoft.com/Styles/oneMscomBlade.css
Content-Transfer-Encoding: 8bit
.mstHdr{width:960px}.mstHdr .mstHdr_PriRow{position:relative;min-height:26px;_height:26px;padding-left:10px;padding-right:10px}.mstHdr .mstHdr_SecRow{position:relative;min-height:26px;_height:26px;padding-right:0}.mstHdr .mstHdr_PriRowBg,.mstHdr .mstHdr_SecRowBg{position:absolute;top:0;bottom:0;left:0;right:0;z-index:-1}.mstHdr .mstHdr_PriRow{z-index:998}.mstHdr .mstHdr_PriRow a{text-decoration:none}.mstHdr .mstHdr_SecRow{z-index:995}.mstHdr .mstHdr_SecRow,.mstHdr .mstHdr_SecRow a:link,.mstHdr .mstHdr_SecRow a:visited,.mstHdr .mstHdr_SecRow a:active,.mstHdr .mstHdr_SecRow a:hover{color:#6a6a6a}.mstHdr .mstHdr_StaticSec11,.mstHdr .mstHdr_StaticSec12,.mstHdr .mstHdr_StaticSec13,.mstHdr .mstHdr_StaticSec14{min-height:1px;_height:1px}.mstHdr .mstHdr_StaticSec11{width:89px}.mstHdr .mstHdr_StaticSec12{width:330px}.mstHdr .mstHdr_StaticSec13{width:340px}.mstHdr .mstHdr_StaticSec14{width:171px}.mstHdr .mstHdr_StaticSec21{width:20%}.mstHdr .mstHdr_StaticSec22{width:80%}.mstHdr .mstHdr_MenuItem,.mstHdr .mstHdr_MenuItemSignIn{float:left;_width:0}.mstHdr .mstHdr_MenuLink a{display:block;padding:0 7px}.mstHdr .mstHdr_MenuLinkTxt,.mstHdr .mstHdr_MenuLinkImg,.mstHdr .mstHdr_MenuLinkDesc{float:left}.mstHdr .mstLcp_DualLangSpan .mstHdr_MenuLinkTxt{float:none}.mstHdr .mstHdr_MenuLinkTxt,.mstHdr .mstHdr_MenuLinkDesc{padding-top:6px;padding-bottom:6px;white-space:nowrap}.mstHdr a:hover .mstHdr_MenuLinkTxt,.mstHdr .selected .mstHdr_MenuLinkTxt,.mstHdr a:hover .mstHdr_MenuLinkDesc,.mstHdr .selected .mstHdr_MenuLinkDesc,.mstHdr span.mstLcp_DualLangSpan a.mstLcp_DualLangLink:hover{color:#ffea41}.mstHdr .mstHdr_StaticSec11 .mstHdr_MenuLinkTxt,.mstHdr .mstHdr_StaticSec13 .mstHdr_MenuLinkImg,.mstHdr .mstHdr_StaticSec14 .mstHdr_MenuLinkImg,.mstHdr .mstHdr_MenuLinkDesc{display:none}.mstHdr .mstHdr_HideMenuLink,.mstHdr .mstHdr_HideMenuLinkImage div.mstHdr_MenuLinkImg,.mstHdr .mstHdr_HideMenuLinkText div.mstHdr_MenuLinkTxt{display:none}.mstHdr .mstHdr_FlyoutPos{position:absolute;top:26px;width:100%;_width:960px}.mstHdr .mstHdr_Flyout{display:none}.mstHdr .mstHdr_mstHdr_FlyoutPosShown .mstHdr_Flyout{display:block}.mstHdr .mstHdr_SecRow .mstHdr_Flyout{background-color:#fff}.mstHdr .mstHdr_SecRow .mstHdr_Flyout,.mstHdr .mstHdr_SecRow .mstHdr_Flyout a:link,.mstHdr .mstHdr_SecRow .mstHdr_Flyout a:visited,.mstHdr .mstHdr_SecRow .mstHdr_Flyout a:active,.mstHdr .mstHdr_SecRow .mstHdr_Flyout a:hover{color:#6a6a6a}.mstHdr .mstHdr_FlyoutBotStrip{width:100%;height:5px;background-color:#ccc}div.mstHdr div.mstHdr_MenuItemLcp{_width:100%;*width:auto;_white-space:nowrap;_float:none}.mstHdr .mstHdr_MenuLinkAnchor{_width:50px}.mstHdr span.mstLcp_DualLangSpan{display:block;padding:6px 0;position:relative}.mstHdr span.mstLcp_DualLangSpan .mstHdr_MenuLinkTxt{padding:0}.mstHdr span.mstLcp_DualLangSpan a,.mstHdr span.mstLcp_DualLangSpan .mstLcp_DualLangSep{float:left}.mstHdr span.mstLcp_DualLangSpan .mstLcp_DualLangLink{display:block;padding:0 7px}.mstHdr .mstLcp{font-size:75%;padding:15px 20px 10px 20px}.mstHdr .mstLcp .mstLcp_Head{margin-bottom:5px}.mstHdr .mstLcp_Heading h3{font-size:228.57%;font-weight:normal;white-space:nowrap;padding-top:.4em;padding-bottom:3px}.mstLcp .mstLcp_LangLinks{position:relative;width:159px;margin-top:15px;margin-bottom:10px}.mstLcp div.mstLcp_LangLinksEmpty{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}.mstHdr div.mstLcp div.mstLcp_Cols5{width:100%}.mstHdr .mstLcp_LangLinks ul.mstLcp_Col{width:179px;min-height:100%;_height:100%;_white-space:normal}.mstLcp .mstLcp_LangLinks a,.mstLcp .mstLcp_WorldwideLink a{display:block;padding:5px}.mstHdr .mstLcp_LangLinks a:hover,.mstHdr .mstLcp_LangLinks a:active,.mstHdr .mstLcp_WorldwideLink a:hover,.mstHdr .mstLcp_WorldwideLink a:active,.mstHdr .mstLcp_LangLinks a:hover span,.mstHdr .mstLcp_LangLinks a:active span,.mstHdr .mstLcp_WorldwideLink a:hover span,.mstHdr .mstLcp_WorldwideLink a:active span{color:#ffea41;text-decoration:none}.mstLcp .mstLcp_LangLinks li.mstLcp_Hide a:hover,.mstLcp .mstLcp_LangLinks li.mstLcp_Hide a:active{background-color:#fff!important}.mstHdr .mstLcp_WorldwideLink{margin-top:5px;padding-top:5px;width:159px}.mstLcp div.mstLcp_WorldwideLinkEmpty{border-top:solid 0;margin-top:0;padding-top:0}.mstHdr .mstLcp_WorldwideLink a{clear:both;white-space:nowrap}.mstHdr .mstHdr_SignInOut a#idPPScarab{display:block;white-space:nowrap}.mstHdr .mstHdr_SignInOut span#idSIT,.mstHdr .mstHdr_SignInOut span#idSOT{display:block;padding:6px 7px}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31{width:440px}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 li{padding-bottom:7px}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Image{height:50px;width:50px;vertical-align:middle}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 a.mstHdr_PrdSection31_Image:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 a.mstHdr_PrdSection31_Image:visited,/*.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 a.mstHdr_PrdSection31_Image:active{background-color:#ccc}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 a.mstHdr_PrdSection31_Image:hover{background-color:#fbfbfb}*/.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Image .mstHdr_PrdSection31_Image_Inner{height:50px;width:50px;display:table-cell;vertical-align:middle}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_ImageSize{height:45px;width:45px}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Item .mstHdr_PrdSection31_Text a:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Item .mstHdr_PrdSection31_Text a:visited,.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Item .mstHdr_PrdSection31_Text a:active{font-family:Segoe UI Light,Tahoma,Arial,Verdana,sans-serif;font-size:32px;text-decoration:none;color:#ddd}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_Item .mstHdr_PrdSection31_Text a:hover{color:#ffea41}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32{width:230px;padding-top:0}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 li{padding-bottom:5px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 ul{padding-bottom:10px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 ul.first{padding-bottom:0}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupHeader a:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupHeader a:visited,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupHeader a:active,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupHeader a:hover{font-family:Segoe UI Light,Tahoma,Arial,Verdana,sans-serif;font-size:26px;padding-bottom:0;text-decoration:none;cursor:default;color:#ddd;margin-top:10px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupItem a:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupItem a:visited,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupItem a:active{font-family:Segoe UI,Tahoma,Arial,Verdana,sans-serif;font-size:13px;padding-bottom:0;text-decoration:none;color:#bbb}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection32 .mstHdr_PrdSection32_GroupItem a:hover{color:#ffea41}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33{width:230px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 li{padding-bottom:4px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSectio33_Item{padding-top:45px}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupHeader a:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupHeader a:visited,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupHeader a:active,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupHeader a:hover{font-family:Segoe UI Light,Tahoma,Arial,Verdana,sans-serif;font-size:26px;padding-bottom:0;text-decoration:none;cursor:default;color:#ddd}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupItem a:link,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupItem a:visited,.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupItem a:active{font-family:Segoe UI,Tahoma,Arial,Verdana,sans-serif;font-size:18px;padding-bottom:0;text-decoration:none;color:#bbb}.mstHdr .mstHdr_Flyout .mstHdr_PrdSection33 .mstHdr_PrdSection33_GroupItem a:hover{color:#ffea41}.mstHdr .mstHdr_Flyout .mstHdr_PrdBottomStrip{width:100%;height:5px;display:inline-block;background-color:#ccc;margin-top:10px}.mstHdr .mstHdr_Flyout .mstHdr_PrdLayoutA .mstHdr_PrdSection31 .mstHdr_PrdSection31_ImageSize{*padding-top:2px}.mstHdr .mstHdr_divA{width:100%;min-height:26px;overflow:hidden}.mstHdr .mstHdr_divContainer{position:absolute;top:0;left:-2px;background-color:transparent;left:0;border:0 none transparent;display:block;width:100%;_width:960px}.mstHdr .mstHdr_divContainer .mstHdr_Image{width:18px;height:18px;cursor:hand;background-repeat:no-repeat;position:absolute;z-index:996px;margin-top:2px}.mstHdr .mstHdr_divContainer .mstHdr_divBContent{width:100%;z-index:990px}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomBlade.js
Content-Type: application/x-javascript; charset=utf-8; name=oneMscomBlade.js
Content-Location: http://support.microsoft.com/scripts/oneMscomBlade.js
Content-Transfer-Encoding: Base64
d2luZG93Lk1zdD09PXVuZGVmaW5lZCYmKHdpbmRvdy5Nc3Q9e30pLE1zdC5GbHlv
dXRNZW51PWZ1bmN0aW9uKG4sdCxpLHIsdSxmLGUsbyxzKXt2YXIgYz0iLiIsaD10
aGlzO2guQ29udHJvbD0kKCIjIituKSxoLl9tZW51Q2xhc3M9Yyt0LGguX2l0ZW1D
bGFzcz1jK2ksaC5fZmx5b3V0TGlua0NsYXNzPWMrcixoLl9zdGF0aWNMaW5rQ2xh
c3M9Yyt1LGguX2ZseW91dENsYXNzPWMrZixoLl9mbHlvdXRSZWdpb25DbGFzcz1j
K2UsaC5TZXRQcmlSb3dXaWR0aChoLkNvbnRyb2wpLGguX29uT3BlbkNsaWNrPW8s
aC5fb25DbG9zZUV2ZW50PXMsaC5Db250cm9sLmZpbmQoaC5fZmx5b3V0TGlua0Ns
YXNzKS5jbGljaygkLnByb3h5KGguSXRlbUNsaWNrLGgpKS5rZXlkb3duKCQucHJv
eHkoaC5JdGVtS2V5RG93bixoKSk7dmFyIGw9aC5Db250cm9sLmZpbmQoaC5fZmx5
b3V0Q2xhc3MpLnRvQXJyYXkoKSxhO2ZvcihhIGluIGwpJChsW2FdKS5maW5kKCJh
Omxhc3QiKS5rZXlkb3duKCQucHJveHkoaC5MYXN0TGlua0tleURvd24saCkpOyQo
ZG9jdW1lbnQpLmNsaWNrKCQucHJveHkoaC5Eb2NDbGljayxoKSl9LE1zdC5GbHlv
dXRNZW51LnByb3RvdHlwZT17U2V0UHJpUm93V2lkdGg6ZnVuY3Rpb24obil7dmFy
IHQ9JCgiLm1zdEhkcl9QcmlSb3ciLG4pLGY9JCgiLm1zdEhkcl9TdGF0aWNTZWMx
MSIsdCkuZmlyc3QoKSx1PSQoIi5tc3RIZHJfU3RhdGljU2VjMTIiLHQpLmZpcnN0
KCksZT0kKCIubXN0SGRyX1N0YXRpY1NlYzEzIix0KS5maXJzdCgpLGk9JCgiLm1z
dEhkcl9TdGF0aWNTZWMxNCIsdCkuZmlyc3QoKSxyOyQuYnJvd3Nlci5tc2llPyQu
YnJvd3Nlci52ZXJzaW9uLnN1YnN0cigwLDEpPjcmJmkud2lkdGgoImF1dG8iKTpp
LndpZHRoKCJhdXRvIikscj10LndpZHRoKCktZi53aWR0aCgpLXUud2lkdGgoKS1p
LndpZHRoKCktMSxlLndpZHRoKHI+MD9yOiIxMDAlIil9LERvY0NsaWNrOmZ1bmN0
aW9uKG4pe3ZhciBpPXRoaXMuQ29udHJvbC5maW5kKCIuc2VsZWN0ZWQiKSx0O2ku
c2l6ZSgpPjAmJih0PSQuY29udGFpbnMoaS5nZXQoMCksbi50YXJnZXQpLHR8fHRo
aXMuSGlkZUZseW91dHMoKSl9LEl0ZW1DbGljazpmdW5jdGlvbihuKXt2YXIgdD10
aGlzOyQobi50YXJnZXQpLmhhc0NsYXNzKCJtc3RMY3BfRHVhbExhbmdMaW5rIil8
fChuLnByZXZlbnREZWZhdWx0KCksdC5Jc0ZseW91dFZpc2libGUobik/dC5IaWRl
Rmx5b3V0cygpOih0LkhpZGVGbHlvdXRzKCksdC5TaG93Rmx5b3V0KG4pLHQuX29u
T3BlbkNsaWNrIT1udWxsJiZ0Ll9vbk9wZW5DbGljayhuKSkpfSxJdGVtS2V5RG93
bjpmdW5jdGlvbihuKXtuLndoaWNoPT05JiZuLnNoaWZ0S2V5JiZ0aGlzLkhpZGVG
bHlvdXRzKCl9LExhc3RMaW5rS2V5RG93bjpmdW5jdGlvbihuKXtuLndoaWNoPT05
JiYobi5zaGlmdEtleXx8dGhpcy5IaWRlRmx5b3V0cygpKX0sSXNGbHlvdXRWaXNp
YmxlOmZ1bmN0aW9uKG4pe3JldHVybiAkKG4udGFyZ2V0KS5wYXJlbnRzKHRoaXMu
X2l0ZW1DbGFzcykuZmluZCh0aGlzLl9mbHlvdXRDbGFzcykuY3NzKCJkaXNwbGF5
IikhPSJub25lIn0sU2hvd0ZseW91dDpmdW5jdGlvbihuKXt2YXIgdD0kKG4udGFy
Z2V0KS5wYXJlbnRzKHRoaXMuX2l0ZW1DbGFzcykuYWRkQ2xhc3MoInNlbGVjdGVk
IikuZmluZCh0aGlzLl9mbHlvdXRDbGFzcyk7dGhpcy5Qb3NpdGlvbkZseW91dCh0
KSxqUXVlcnkuYnJvd3Nlci5vcGVyYXx8alF1ZXJ5LmJyb3dzZXIubXNpZSYmZG9j
dW1lbnQuZG9jdW1lbnRNb2RlPD03P3Quc2hvdygpOnQuc2xpZGVEb3duKDMwMCl9
LEhpZGVGbHlvdXRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztqUXVlcnkuYnJvd3Nl
ci5vcGVyYXx8alF1ZXJ5LmJyb3dzZXIubXNpZSYmZG9jdW1lbnQuZG9jdW1lbnRN
b2RlPD03PyQodC5fZmx5b3V0Q2xhc3MsdC5Db250cm9sKS5oaWRlKCk6JCh0Ll9m
bHlvdXRDbGFzcyx0LkNvbnRyb2wpLnNsaWRlVXAoMzAwKTt2YXIgaT10O3QuX29u
Q2xvc2VFdmVudCE9bnVsbCYmJCh0Ll9pdGVtQ2xhc3MpLmZpbHRlcigiLnNlbGVj
dGVkIikuZWFjaChmdW5jdGlvbigpe2kuX29uQ2xvc2VFdmVudCgkKHRoaXMpLmZp
bmQoaS5fZmx5b3V0TGlua0NsYXNzKSl9KSwkKHQuX2l0ZW1DbGFzcykucmVtb3Zl
Q2xhc3MoInNlbGVjdGVkIil9LFBvc2l0aW9uRmx5b3V0OmZ1bmN0aW9uKG4pe3Zh
ciBmPXRoaXMsbz0ibGVmdCIsaT1uLnBhcmVudHMoZi5faXRlbUNsYXNzKS53aWR0
aCgpLHM9bi5wYXJlbnRzKGYuX2l0ZW1DbGFzcykucG9zaXRpb24oKS5sZWZ0LGU9
bi5vdXRlcldpZHRoKCksbD1uLnBhcmVudHMoZi5fbWVudUNsYXNzKS53aWR0aCgp
LGE9bi5wYXJlbnRzKGYuX21lbnVDbGFzcykucG9zaXRpb24oKS5sZWZ0LGM9bCx1
LHQsaCxyO24ucGFyZW50cyhmLl9mbHlvdXRSZWdpb25DbGFzcykuc2l6ZSgpPjAm
JihjPW4ucGFyZW50cyhmLl9mbHlvdXRSZWdpb25DbGFzcykuaW5uZXJXaWR0aCgp
KSx1PXMrYSx0PWwtcy1pLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXI9PSJy
dGwiJiYobz0icmlnaHQiLGktPTIsdD1jLXMtaSxoPXUsdT10LHQ9aCksdDwwJiYo
dD0wKSx1PDAmJih1PTApLHI9MCxlPmkrdD9lPGkrdT8ocj1kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuZGlyPT0icnRsIj8tZStpKzI6LWUraSxuLmNzcyhvLHIpLG4u
YWRkQ2xhc3MoImRvY2stcmlnaHQiKSk6ZTx1K3QraT8ocj0tZSsodCtpKSxuLmNz
cyhvLHIpKToocj0tdS0xLG4uY3NzKG8scikpOihuLmNzcyhvLHIpLG4uYWRkQ2xh
c3MoImRvY2stbGVmdCIpKX19LE1zdC5BbmltSGVhZGVySXRlbXM9ZnVuY3Rpb24o
bix0KXskKCIjIituKyIgLiIrdCkuZWFjaChmdW5jdGlvbigpe25ldyBNc3QuQW5p
bUhlYWRlckl0ZW0oJCh0aGlzKSwibXN0SGRyX01lbnVMaW5rVHh0IiwibXN0SGRy
X01lbnVMaW5rSW1nIiwibXN0SGRyX01lbnVMaW5rRGVzYyIpfSl9LE1zdC5DUFNB
bmltYXRpb249ZnVuY3Rpb24obix0LGkscil7dmFyIHU9dGhpczt1Ll9pc0Nsb3Nl
ZD1uLHUuX3RpbWVPdXRJZFZhbD10LHUuX2Rpc3BsYXk9aSx1Ll9kaXNwbGF5VGlt
ZT1yLHUuT3BlbkIoKX0sTXN0LkNQU0FuaW1hdGlvbi5wcm90b3R5cGU9e09wZW5C
OmZ1bmN0aW9uKCl7dmFyIG49dGhpcztuLl9kaXNwbGF5JiYoJCgiLm1zdEhkcl9k
aXZBIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksJCgiI2RpdkNvbnRhaW5l
ciIpLnNob3coMCxuLnNldFNpemUoKSksdGltZU91dElkVmFsPXdpbmRvdy5zZXRU
aW1lb3V0KG4uQ2xvc2VCLG4uX2Rpc3BsYXlUaW1lKSwkKCIubXN0SGRyX0ltYWdl
IikuY2xpY2soJC5wcm94eShuLkl0ZW1DbGlja0Nsb3NlQixuKSkpfSxJdGVtQ2xp
Y2tDbG9zZUI6ZnVuY3Rpb24obil7bi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuQ2xv
c2VCKCl9LENsb3NlQjpmdW5jdGlvbigpe3RoaXMuX2lzQ2xvc2VkfHwoJCgiLm1z
dEhkcl9kaXZDb250YWluZXIiKS5zbGlkZVVwKDYwMCksdGhpcy5faXNDbG9zZWQ9
ITAsd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl90aW1lT3V0SWRWYWwpLCQoIi5t
c3RIZHJfZGl2QSIpLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKSl9LHNldFNp
emU6ZnVuY3Rpb24oKXt2YXIgbj0kKCIjaW1hZ2VDUFNCIikud2lkdGgoKTskKCIu
bXN0SGRyX0ltYWdlIikud2lkdGgobi0yKX19
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=onemscomfooter.css
Content-Type: text/css; charset=utf-8; name=onemscomfooter.css
Content-Location: http://support.microsoft.com/Styles/onemscomfooter.css
Content-Transfer-Encoding: 8bit
.oneMscomFooter{_width:100%}.oneMscomFooter .subBrandLogo{overflow:visible}.oneMscomFooter .msLogo{position:relative;padding-bottom:7px;padding-top:11px}.oneMscomFooter .msLogo a{display:block}.oneMscomFooter .msLogo a:hover{text-decoration:none}.oneMscomFooter .copyright{margin-top:4px;font-size:55%}.oneMscomFooter .links{padding-top:10px}.oneMscomFooter .links-inner{padding-top:3px;clear:both}.oneMscomFooter ul.customLinks li,.oneMscomFooter ul.defaultLinks li{float:left;font-size:70%}.oneMscomFooter ul li a{padding:0 8px;border-width:1px;border-style:solid;border-color:transparent;_border-color:#ffc0cb;_filter:chroma(color=pink);display:inline-block}.oneMscomFooter .altText{width:133px;padding-top:6px;padding-bottom:3px}.oneMscomFooter .seo-item .png-img{padding-top:2px}.oneMscomFooter .seo-item .png-img .filter-img,.oneMscomFooter .seo-item .png-img .bg-img{width:13px;height:13px}.oneMscomFooter .seo-item .seo-item-tab{position:relative;z-index:5}.oneMscomFooter .seo-item-tab a{display:inline-block}.oneMscomFooter .seo-item-tab a:hover{text-decoration:none}.oneMscomFooter .selected .seo-item-tab a{padding-bottom:4px;border-bottom:none;_border:none}.oneMscomFooter li.selected{_border-width:1px;_border-style:solid;_border-bottom:none}.oneMscomFooter .seoCatergory{float:none;padding-top:10px}.oneMscomFooter .firstCategory{padding-top:0}.oneMscomFooter .seo-item .seo-link{float:left}.oneMscomFooter ul.seoCatergory li{display:block;float:none;font-size:100%;font-weight:bold}.oneMscomFooter ul.seoCatergory li a{padding:0 8px;border-width:1px;border-style:solid;border-color:transparent;_border-color:#ffc0cb;_filter:chroma(color=pink)}.oneMscomFooter ul.seoLinks{*float:left;_float:left;width:100%}.oneMscomFooter ul.seoLinks li{display:block;font-size:100%;font-weight:normal}.oneMscomFooter ul.seoLinks li a{padding:0 8px;border:1px soid transparent}.oneMscomFooter .seo-item-flyout{position:relative;z-index:4}.oneMscomFooter .seo-item-flyout-content{position:absolute;width:905px;display:none;border:1px solid transparent;top:-1px;z-index:3;padding:5px}.oneMscomFeedBack{display:inline-block;*display:inline-block;position:relative;*z-index:999;display:none}.oneMscomFeedBack .feedBack-flyout{display:none}.oneMscomFeedBack .feedBack-successmessage-flyout-body,.oneMscomFeedBack .feedBack-flyout-body{position:fixed;z-index:1001;left:0;right:0;top:10px;border:medium none;margin:0 auto;width:667px;_position:absolute;_left:-340px;_width:680px}.oneMscomFeedBack .feedBack-high-link{position:fixed;bottom:10px;_position:absolute;_width:150px}.oneMscomFeedBack .feedBack-high-link .feedBack-button-link a{display:inline-block;padding:0;border:none}.oneMscomFeedBack .feedBack-high-link .feedBack-button-link a.feedback-button-link-close-image{vertical-align:top}.oneMscomFeedBack .feedBack-high-link .feedBack-button-link{padding:10px;*zoom:1}.oneMscomFeedBack .feedBack-high-link .feedBack-button-link a:hover{text-decoration:none}.oneMscomFeedBack .feedBack-background{height:100%;left:0;position:fixed;top:0;width:100%;z-index:1000;_display:none}.oneMscomFeedBack .feedBack-successmessage-container,.oneMscomFeedBack .feedBack-container{padding:30px;border-width:1px;border-style:solid;width:580px}.feedback-element-text textarea{width:565px}.oneMscomFeedBack .feedback-item{margin-top:10px}.oneMscomFeedBack ul.feedback-item li{float:none}.oneMscomFeedBack ul.feedback-item li.feedback-element-container{margin:2.5px 5px;position:relative}.oneMscomFeedBack .feedBack-button{font-size:bold;margin-top:5px;display:block}.oneMscomFeedBack .feedBack-button a{display:block;width:90px;margin-left:10px;text-align:center;text-decoration:none;font-weight:bold;font-size:130%}.oneMscomFeedBack .feedBack-button a:hover{text-decoration:none}.oneMscomFeedBack .feedback-close{display:inline-block}.oneMscomFeedBack .feedback-successmessage-button-close,.oneMscomFeedBack .feedback-button-close{padding:0;border:none}.oneMscomFeedBack .feedBack-successmessage-container .feeback-heading{margin:105px 0}.oneMscomFeedBack .feedBack-successmessage-container{height:300px}.oneMscomFeedBack .feedBack-successmessage-flyout-body{display:none}.oneMscomFeedBack .feedBack-low-link-disabled{opacity:.6;filter:alpha(opacity="60.0")}.oneMscomFeedBack a.feedBack-low-link-disabled:hover{text-decoration:none}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=onemscomfooter.js
Content-Type: application/x-javascript; charset=utf-8; name=onemscomfooter.js
Content-Location: http://support.microsoft.com/scripts/onemscomfooter.js
Content-Transfer-Encoding: Base64
ZnVuY3Rpb24gUmVjZWl2ZVNlcnZlckRhdGFGb3JGZWVkQmFjayhuKXt2YXIgcj0k
KG4pLmZpbmQoIi5mZWVkQmFjay1mbHlvdXQtYm9keSIpLGk7ci5oaWRlKCksaT0k
KG4pLmZpbmQoIi5mZWVkQmFjay1zdWNjZXNzbWVzc2FnZS1mbHlvdXQtYm9keSIp
LGkuc2hvdygpfXdpbmRvdy5Nc3Q9PT11bmRlZmluZWQmJih3aW5kb3cuTXN0PXt9
KSxNc3QuRmVlZEJhY2tGbHlvdXQ9PT11bmRlZmluZWQmJihNc3QuRmVlZEJhY2tG
bHlvdXQ9e30pLE1zdC5TZW9NZW51PWZ1bmN0aW9uKG4sdCxpLHIsdSxmLGUsbyl7
dmFyIHM9dGhpcztzLkNvbnRyb2w9JCgiIyIrbikscy5fbWVudUNsYXNzPSIuIit0
LHMuX2l0ZW1DbGFzcz0iLiIraSxzLl9mbHlvdXRMaW5rQ2xhc3M9Ii4iK3Iscy5f
Zmx5b3V0Q2xhc3M9Ii4iK3Uscy5fZmx5b3V0UmVnaW9uQ2xhc3M9Ii4iK2Yscy5f
c3RhZ2VFeHBhbmQ9ITEscy5fb25PcGVuQ2xpY2s9ZSxzLl9vbkNsb3NlRXZlbnQ9
byxzLkNvbnRyb2wuZmluZChzLl9mbHlvdXRMaW5rQ2xhc3MpLmNsaWNrKCQucHJv
eHkocy5JdGVtQ2xpY2sscykpLmtleWRvd24oJC5wcm94eShzLkl0ZW1LZXlEb3du
LHMpKTt2YXIgaD1zLkNvbnRyb2wuZmluZChzLl9mbHlvdXRDbGFzcykudG9BcnJh
eSgpLGM7Zm9yKGMgaW4gaCkkKGhbY10pLmZpbmQoImE6bGFzdCIpLmtleWRvd24o
JC5wcm94eShzLkxhc3RMaW5rS2V5RG93bixzKSk7JChkb2N1bWVudCkuY2xpY2so
JC5wcm94eShzLkRvY0NsaWNrLHMpKX0sTXN0LlNlb01lbnUucHJvdG90eXBlPXtE
b2NDbGljazpmdW5jdGlvbihuKXt2YXIgaT10aGlzLkNvbnRyb2wuZmluZCgiLnNl
bGVjdGVkIiksdDtpLnNpemUoKT4wJiYodD0kLmNvbnRhaW5zKGkuZ2V0KDApLG4u
dGFyZ2V0KSx0fHx0aGlzLkhpZGVGbHlvdXRzKCkpfSxJdGVtQ2xpY2s6ZnVuY3Rp
b24obil7dmFyIHQ9dGhpczskKG4udGFyZ2V0KS5oYXNDbGFzcygibXN0TGNwX0R1
YWxMYW5nTGluayIpfHwobi5wcmV2ZW50RGVmYXVsdCgpLHQuSXNGbHlvdXRWaXNp
YmxlKG4pP3QuSGlkZUZseW91dHMoKToodC5IaWRlRmx5b3V0cygpLHQuU2hvd0Zs
eW91dChuKSx0Ll9vbk9wZW5DbGljayE9bnVsbCYmdC5fb25PcGVuQ2xpY2sobikp
KX0sSXRlbUtleURvd246ZnVuY3Rpb24obil7bi53aGljaD09OSYmbi5zaGlmdEtl
eSYmdGhpcy5IaWRlRmx5b3V0cygpfSxMYXN0TGlua0tleURvd246ZnVuY3Rpb24o
bil7bi53aGljaD09OSYmKG4uc2hpZnRLZXl8fHRoaXMuSGlkZUZseW91dHMoKSl9
LElzRmx5b3V0VmlzaWJsZTpmdW5jdGlvbihuKXtyZXR1cm4gJChuLnRhcmdldCku
cGFyZW50cyh0aGlzLl9pdGVtQ2xhc3MpLmZpbmQodGhpcy5fZmx5b3V0Q2xhc3Mp
LmNzcygiZGlzcGxheSIpIT0ibm9uZSJ9LFNob3dGbHlvdXQ6ZnVuY3Rpb24obil7
dmFyIHI9Ii5zdGFnZS1jb250ZW50Iix0PXRoaXMsaT0kKG4udGFyZ2V0KS5wYXJl
bnRzKHQuX2l0ZW1DbGFzcykuYWRkQ2xhc3MoInNlbGVjdGVkIikuZmluZCh0Ll9m
bHlvdXRDbGFzcyk7dC5Qb3NpdGlvbkZseW91dChpKSx0Ll9zdGFnZUV4cGFuZHx8
KCQocikuYW5pbWF0ZSh7aGVpZ2h0OiQocikub3V0ZXJIZWlnaHQoKSskKHQuX2Zs
eW91dENsYXNzKS5vdXRlckhlaWdodCgpfSwzMDApLCQoImh0bWwiKS5hbmltYXRl
KHtzY3JvbGxUb3A6JChkb2N1bWVudCkuaGVpZ2h0KCl9LDMwMCksdC5fc3RhZ2VF
eHBhbmQ9ITApLGpRdWVyeS5icm93c2VyLm9wZXJhfHxqUXVlcnkuYnJvd3Nlci5t
c2llJiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTc/aS5zaG93KCk6aS5zbGlkZURv
d24oMzAwKX0sSGlkZUZseW91dHM6ZnVuY3Rpb24oKXt2YXIgcj0iLnN0YWdlLWNv
bnRlbnQiLHQ9dGhpcyxpPXQ7dC5fc3RhZ2VFeHBhbmQmJigkKHIpLmFuaW1hdGUo
e2hlaWdodDokKHIpLm91dGVySGVpZ2h0KCktJCh0Ll9mbHlvdXRDbGFzcykub3V0
ZXJIZWlnaHQoKX0sMzAwKSx0Ll9zdGFnZUV4cGFuZD0hMSksalF1ZXJ5LmJyb3dz
ZXIub3BlcmF8fGpRdWVyeS5icm93c2VyLm1zaWUmJmRvY3VtZW50LmRvY3VtZW50
TW9kZTw9Nz8kKHQuX2ZseW91dENsYXNzLHQuQ29udHJvbCkuaGlkZSgpOiQodC5f
Zmx5b3V0Q2xhc3MsdC5Db250cm9sKS5zbGlkZVVwKDMwMCxmdW5jdGlvbigpe2ku
Zml4Rmx5b3V0Q29udGVudE9sZElFKCl9KSx0Ll9vbkNsb3NlRXZlbnQhPW51bGwm
JiQodC5faXRlbUNsYXNzKS5maWx0ZXIoIi5zZWxlY3RlZCIpLmVhY2goZnVuY3Rp
b24oKXtpLl9vbkNsb3NlRXZlbnQoJCh0aGlzKS5maW5kKGkuX2ZseW91dExpbmtD
bGFzcykpfSksJCh0Ll9pdGVtQ2xhc3MpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIp
fSxmaXhGbHlvdXRDb250ZW50T2xkSUU6ZnVuY3Rpb24oKXt2YXIgdCxpLHIsbjsk
LmJyb3dzZXIubXNpZSYmcGFyc2VJbnQoJC5icm93c2VyLnZlcnNpb24pPD03JiYo
dD10aGlzLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaT0iZGlzcGxheSI7aW1n
PXQuQ29udHJvbC5maW5kKCIuYmctaW1nIiksbj1pbWcuY3NzKGkpLGltZy5jc3Mo
aSwiIiksaW1nLmNzcyhpLG4pfSwxKSl9LGlzSUU2OmZ1bmN0aW9uKCl7cmV0dXJu
IG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1TSUUgNi4iKSE9LTF9LFBv
c2l0aW9uRmx5b3V0OmZ1bmN0aW9uKG4pe3ZhciBzPSJydGwiLGY9dGhpcyxvPSJs
ZWZ0IixyPW4ucGFyZW50cyhmLl9pdGVtQ2xhc3MpLndpZHRoKCksYz1uLnBhcmVu
dHMoZi5faXRlbUNsYXNzKS5wb3NpdGlvbigpLmxlZnQsZT1uLm91dGVyV2lkdGgo
KSxoPW4ucGFyZW50cyhmLl9tZW51Q2xhc3MpLndpZHRoKCksYT1uLnBhcmVudHMo
Zi5fbWVudUNsYXNzKS5wb3NpdGlvbigpLmxlZnQsbCx1LGksdix0O2g9OTIwLGE9
MCxsPWgsbi5wYXJlbnRzKGYuX2ZseW91dFJlZ2lvbkNsYXNzKS5zaXplKCk+MCYm
KGw9bi5wYXJlbnRzKGYuX2ZseW91dFJlZ2lvbkNsYXNzKS5pbm5lcldpZHRoKCkp
LHU9YythLGk9aC1jLXIsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpcj09Imx0
ciImJihpKz0xOCksZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpcj09cyYmKG89
InJpZ2h0IixyLT0yLGk9bC1jLXIsdj11LHU9aSxpPXYpLGk8MCYmKGk9MCksdTww
JiYodT0wKSx0PTAsZT5yK2k/ZTxyK3U/KHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LmRpcj09cz8tZStyKzI6LWUrcixuLmNzcyhvLHQpLG4uYWRkQ2xhc3MoImRv
Y2stcmlnaHQiKSk6ZTx1K2krcj8odD0tZSsoaStyKSxkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuZGlyPT1zJiYodC09MjMsZi5pc0lFNigpJiYodCs9cikpLG4uY3Nz
KG8sdCkpOih0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXI9PXM/LXUtMTot
dS02LG4uY3NzKG8sdCkpOihuLmNzcyhvLHQpLG4uYWRkQ2xhc3MoImRvY2stbGVm
dCIpKX19LE1zdC5GZWVkQmFja0ZseW91dD1mdW5jdGlvbihuLHQsaSxyLHUsZixl
LG8scyxoLGMsbCxhLHYseSl7dmFyIHc9Ii4iLHA9dGhpcztwLklkPSIjIituLHAu
RmVlZEJhY2s9JChwLklkKSxwLkRpcmVjdGlvbj1jLHAuRmVlZEJhY2tGbHlvdXRD
bGFzcz13K3QscC5GZWVkQmFja0ZseW91dEJvZHlDbGFzcz13K2kscC5GZWViYWNr
SGlnaEJ1dHRvbkNsYXNzPXcrZixwLkZlZWJhY2tMb3dCdXR0b249IiMiK3IscC5G
ZWViYWNrSGlnaEJ1dHRvbj0iIyIrdSxwLkZlZWJhY2tIaWdoQnV0dG9uQ2xvc2U9
IiMiK2UscC5GZWVkQmFja0Nsb3NlQnV0dG9uQ2xhc3M9dytvLHAuRmVlZEJhY2tD
YW5jZWxCdXR0b25DbGFzcz13K3MscC5GZWVkQmFja1N1Ym1pdEJ1dHRvbkNsYXNz
PXcraCxwLkZlZWRiYWNrQmFja2dyb3VuZENsYXNzPXcreSxwLklzRm9ybVN1Ym1p
dHRlZD0hMSxwLkZlZWRCYWNrU3VjY2Vzc01lc3NhZ2VGbHlvdXRDbGFzcz13K2ws
cC5GZWVkQmFja1N1Y2Nlc3NNZXNzYWdlRm9ybUNsb3NlQ2xhc3M9dythLHAuRmVl
ZEJhY2tTdWNjZXNzTWVzc2FnZUNsb3NlQ2xhc3M9dyt2LHAuRmVlZEJhY2suZmlu
ZChwLkZlZWJhY2tIaWdoQnV0dG9uKS5jbGljaygkLnByb3h5KHAuU2hvd0ZlZWRC
YWNrRmx5b3V0LHApKSxwLkZlZWRCYWNrLmZpbmQocC5GZWViYWNrTG93QnV0dG9u
KS5jbGljaygkLnByb3h5KHAuU2hvd0ZlZWRCYWNrRmx5b3V0LHApKSxwLkZlZWRC
YWNrLmZpbmQocC5GZWViYWNrSGlnaEJ1dHRvbkNsb3NlKS5jbGljaygkLnByb3h5
KHAuSGlkZUZlZWRCYWNrSGlnaEJ1dHRvbixwKSkscC5GZWVkQmFjay5maW5kKHAu
RmVlZEJhY2tDbG9zZUJ1dHRvbkNsYXNzKS5jbGljaygkLnByb3h5KHAuSGlkZUZl
ZWRCYWNrRmx5b3V0LHApKSxwLkZlZWRCYWNrLmZpbmQocC5GZWVkQmFja0NhbmNl
bEJ1dHRvbkNsYXNzKS5jbGljaygkLnByb3h5KHAuSGlkZUZlZWRCYWNrRmx5b3V0
LHApKSxwLkZlZWRCYWNrLmZpbmQocC5GZWVkYmFja0JhY2tncm91bmRDbGFzcyku
Y2xpY2soJC5wcm94eShwLkhpZGVGZWVkQmFja0ZseW91dCxwKSkscC5GZWVkQmFj
ay5maW5kKHAuRmVlZEJhY2tTdWNjZXNzTWVzc2FnZUZvcm1DbG9zZUNsYXNzKS5j
bGljaygkLnByb3h5KHAuSGlkZUZlZWRCYWNrRmx5b3V0T25TdWNlc3MscCkpLHAu
RmVlZEJhY2suZmluZChwLkZlZWRCYWNrU3VjY2Vzc01lc3NhZ2VDbG9zZUNsYXNz
KS5jbGljaygkLnByb3h5KHAuSGlkZUZlZWRCYWNrRmx5b3V0T25TdWNlc3MscCkp
LCQoZG9jdW1lbnQpLmtleXByZXNzKCQucHJveHkocC5GZWVkQmFja0ZseW91dEtl
eVByZXNzLHApKSxwLkZlZWRCYWNrLmZpbmQocC5GZWVkQmFja1N1Ym1pdEJ1dHRv
bkNsYXNzKS5jbGljaygkLnByb3h5KHAuU3VtaXRGb3JtLHApKSxwLkZlZWRCYWNr
LmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpfSxNc3QuRmVlZEJhY2tGbHlv
dXQucHJvdG90eXBlPXtDZW50ZXJBbGlnblBvcHVwOmZ1bmN0aW9uKCl7dmFyIHI9
InB4Iix0PXRoaXMscz0kKHQuRmVlZEJhY2suZmluZCh0LkZlZWRCYWNrRmx5b3V0
Qm9keUNsYXNzKSkuaGVpZ2h0KCksbz0kKHQuRmVlZEJhY2suZmluZCh0LkZlZWRC
YWNrU3VjY2Vzc01lc3NhZ2VGbHlvdXRDbGFzcykpLmhlaWdodCgpLGwsYyxmLGks
ZSx1LGg7JC5icm93c2VyLm1zaWUmJnBhcnNlSW50KCQuYnJvd3Nlci52ZXJzaW9u
KT09NiYmKHM9cGFyc2VJbnQoJCh3aW5kb3cpLmhlaWdodCgpKSo0LG89cGFyc2VJ
bnQoJCh3aW5kb3cpLmhlaWdodCgpKSo0KSxsPXBhcnNlSW50KCQod2luZG93KS5o
ZWlnaHQoKSkvMi1wYXJzZUludChzKS8yLCQodC5GZWVkQmFjay5maW5kKHQuRmVl
ZEJhY2tGbHlvdXRCb2R5Q2xhc3MpKS5jc3MoInRvcCIsbCksYz1wYXJzZUludCgk
KHdpbmRvdykuaGVpZ2h0KCkpLzItcGFyc2VJbnQobykvMiwkKHQuRmVlZEJhY2su
ZmluZCh0LkZlZWRCYWNrU3VjY2Vzc01lc3NhZ2VGbHlvdXRDbGFzcykpLmNzcygi
dG9wIixjKSwkLmJyb3dzZXIubXNpZSYmcGFyc2VJbnQoJC5icm93c2VyLnZlcnNp
b24pPD03JiYoZj0kKHQuRmVlZEJhY2suZmluZCh0LkZlZWRCYWNrRmx5b3V0Qm9k
eUNsYXNzKSkud2lkdGgoKSwkLmJyb3dzZXIubXNpZSYmcGFyc2VJbnQoJC5icm93
c2VyLnZlcnNpb24pPT02JiYoZj1wYXJzZUludCgkKHdpbmRvdykud2lkdGgoKSkr
ZiksaT1wYXJzZUludCgkKHdpbmRvdykud2lkdGgoKSkvMi1wYXJzZUludChmKS8y
LCQudHJpbSh0LkRpcmVjdGlvbi50b0xvd2VyQ2FzZSgpKT09Imx0ciI/KCQodC5G
ZWVkQmFjay5maW5kKHQuRmVlZEJhY2tGbHlvdXRCb2R5Q2xhc3MpKS5jc3MoImxl
ZnQiLGkrciksJCh0LkZlZWRCYWNrLmZpbmQodC5GZWVkQmFja1N1Y2Nlc3NNZXNz
YWdlRmx5b3V0Q2xhc3MpKS5jc3MoImxlZnQiLGkrcikpOigkKHQuRmVlZEJhY2su
ZmluZCh0LkZlZWRCYWNrRmx5b3V0Qm9keUNsYXNzKSkuY3NzKCJyaWdodCIsaSty
KSwkKHQuRmVlZEJhY2suZmluZCh0LkZlZWRCYWNrU3VjY2Vzc01lc3NhZ2VGbHlv
dXRDbGFzcykpLmNzcygicmlnaHQiLGkrcikpLCQuYnJvd3Nlci5tc2llJiZwYXJz
ZUludCgkLmJyb3dzZXIudmVyc2lvbik8PTcmJihlPXQsc2V0VGltZW91dChmdW5j
dGlvbigpe3ZhciBuPSJkaXNwbGF5Ijt1PWUuRmVlZEJhY2suZmluZChlLkZlZWRC
YWNrRmx5b3V0Qm9keUNsYXNzKSxoPXUuY3NzKG4pLHUuY3NzKG4sIiIpLHUuY3Nz
KG4saCl9LDEpKSl9LFNob3dGZWVkQmFja0ZseW91dDpmdW5jdGlvbihuKXtuJiZu
LnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9JCh0aGlzLkZlZWRCYWNrLmZpbmQodGhp
cy5GZWVkQmFja0ZseW91dENsYXNzKSk7dC5zbGlkZURvd24oMzAwKSx0aGlzLkNl
bnRlckFsaWduUG9wdXAoKX0sSGlkZUZlZWRCYWNrRmx5b3V0OmZ1bmN0aW9uKG4p
e3ZhciB0PXRoaXM7biYmbi5wcmV2ZW50RGVmYXVsdCgpO3ZhciBpPSQodC5GZWVk
QmFjay5maW5kKHQuRmVlZEJhY2tGbHlvdXRDbGFzcykpO2kuaGlkZSgpLHQuQmlU
cmFjaygyLDEwLCIuIiskKG4uY3VycmVudFRhcmdldCkuYXR0cigiY2xhc3MiKSks
dC5Jc0Zvcm1TdWJtaXR0ZWQ9PSEwJiZ0LkRpc2FibGVGZWViYWNrKG4pfSxIaWRl
RmVlZEJhY2tGbHlvdXRPblN1Y2VzczpmdW5jdGlvbihuKXt0aGlzLkhpZGVGZWVk
QmFja0ZseW91dChuKSx0aGlzLkRpc2FibGVGZWViYWNrKG4pfSxEaXNhYmxlRmVl
YmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5GZWVkQmFjay5maW5kKHQuRmVl
YmFja0xvd0J1dHRvbikuYWRkQ2xhc3MoImZlZWRCYWNrLWxvdy1saW5rLWRpc2Fi
bGVkIiksdC5GZWVkQmFjay5maW5kKHQuRmVlYmFja0xvd0J1dHRvbikudW5iaW5k
KCJjbGljayIpO3ZhciBpPSQodC5GZWVkQmFjay5maW5kKHQuRmVlYmFja0hpZ2hC
dXR0b25DbGFzcykpO2kuaGlkZSgpfSxTaG93RmVlZEJhY2tGbHlvdXRPblN1Y2Vz
czpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5GZWVkQmFjay5maW5kKHQuRmVlZEJh
Y2tGbHlvdXRCb2R5Q2xhc3MpLmhpZGUoKSx0LkZlZWRCYWNrLmZpbmQodC5GZWVk
QmFja1N1Y2Nlc3NNZXNzYWdlRmx5b3V0Q2xhc3MpLnNob3coKX0sRmVlZEJhY2tG
bHlvdXRLZXlQcmVzczpmdW5jdGlvbihuKXt2YXIgdD10aGlzO24ua2V5Q29kZT09
MjcmJih0LklzRm9ybVN1Ym1pdHRlZD09ITE/dC5IaWRlRmVlZEJhY2tGbHlvdXQo
bik6dC5IaWRlRmVlZEJhY2tGbHlvdXRPblN1Y2VzcyhuKSksdC5IYW5kbGVLZXlQ
cmVzcyhuKX0sSGFuZGxlS2V5UHJlc3M6ZnVuY3Rpb24obil7dGhpcy5GZWVkQmFj
ay5maW5kKCIuZmVlZGJhY2staXRlbSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMp
LmZpbmQoIi5mZWVkYmFjay1lbGVtZW50LWNvbnRyb2wiKS5lYWNoKGZ1bmN0aW9u
KCl7dmFyIHI9JCh0aGlzKS5hdHRyKCJ0eXBlIiksaTtyPT0idGV4dGFyZWEiJiYo
aT0kKHRoaXMpLmF0dHIoIm1heGxlbmd0aCIpLCQodGhpcykudmFsKCkubGVuZ3Ro
KzE+aSYmbi5wcmV2ZW50RGVmYXVsdCgpKX0pfSl9LEhpZGVGZWVkQmFja0hpZ2hC
dXR0b246ZnVuY3Rpb24obil7dmFyIHQ9dGhpcztuJiZuLnByZXZlbnREZWZhdWx0
KCk7dmFyIGk9JCh0LkZlZWRCYWNrLmZpbmQodC5GZWViYWNrSGlnaEJ1dHRvbkNs
YXNzKSk7aS5oaWRlKCksdC5CaVRyYWNrKDIsMTAsdC5GZWViYWNrSGlnaEJ1dHRv
bkNsb3NlKX0sU3VtaXRGb3JtOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7biYmbi5w
cmV2ZW50RGVmYXVsdCgpLHQuRmVlZEJhY2suZmluZCh0LkZlZWRCYWNrU3VibWl0
QnV0dG9uQ2xhc3MpLnVuYmluZCgiY2xpY2siKTt2YXIgaT0iIjt0LkZlZWRCYWNr
LmZpbmQoIi5mZWVkYmFjay1pdGVtIikuZWFjaChmdW5jdGlvbigpeyQodGhpcyku
ZmluZCgiLmZlZWRiYWNrLWVsZW1lbnQtY29udHJvbCIpLmVhY2goZnVuY3Rpb24o
KXt2YXIgdT0iIMKxICIscj0ibmFtZSIsdD10aGlzLG89JCh0KS5hdHRyKCJ0eXBl
IiksZixlO3N3aXRjaChvKXtjYXNlInJhZGlvIjp0LmNoZWNrZWQmJihpKz0i4omk
IiskKHQpLmF0dHIocikrdSskKHQpLmF0dHIoImlkIikrIuKJpSIpO2JyZWFrO2Nh
c2UiY2hlY2tib3giOnQuY2hlY2tlZCYmKGkrPSLiiaQiKyQodCkuYXR0cihyKSt1
KyQodCkuYXR0cigiaWQiKSsi4omlIik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6Zj0k
LnRyaW0oJCh0KS52YWwoKSksZT0kKHQpLmF0dHIoIm1heGxlbmd0aCIpLGYubGVu
Z3RoPjAmJihpKz0kKHQpLnZhbCgpLmxlbmd0aD5lPyLiiaQiKyQodCkuYXR0cihy
KSt1K2Yuc3Vic3RyKDAsZSkrIuKJpSI6IuKJpCIrJCh0KS5hdHRyKHIpK3UrZisi
4omlIil9fSl9KSx0LklzRm9ybVN1Ym1pdHRlZD0hMCxpLmxlbmd0aD4wPyhpKz0i
4omgIit0LklkLnRvU3RyaW5nKCksU2VuZEZlZWRiYWNrRGF0YVRvU2VydmVyKGks
IiIpKTp0LlNob3dGZWVkQmFja0ZseW91dE9uU3VjZXNzKG4pLHQuQmlUcmFjaygy
LDEwLHQuRmVlZEJhY2tTdWJtaXRCdXR0b25DbGFzcyl9LEJpVHJhY2s6ZnVuY3Rp
b24obix0LGkpe3ZhciB1LHIsZjtpZigkLmJpJiYkLmJpLmRhdGFSZXRyaWV2ZXJz
LnN0cnVjdHVyZSl7dT10aGlzLkZlZWRCYWNrLmZpbmQoaSkscj17dGl0bGU6JC50
cmltKCQodSkudGV4dCgpKX07dHJ5eyQuZXh0ZW5kKHIsJC5iaS5iYXNlRGF0YSgp
LCQuYmkuZGF0YVJldHJpZXZlcnMuc3RydWN0dXJlLmdldERhdGEodSkpfWNhdGNo
KG4pe31mPSQuZXh0ZW5kKHt9LHIse2ludGVyYWN0aW9udHlwZTp0LGNvdDo1LHBh
cmVudHR5cGVzdHJ1Y3R1cmU6ci5wYXJlbnR0eXBlc3RydWN0dXJlfSksJC5iaS5y
ZWNvcmQoZil9cmV0dXJuITB9fQ==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomNav.css
Content-Type: text/css; charset=utf-8; name=oneMscomNav.css
Content-Location: http://support.microsoft.com/Styles/oneMscomNav.css
Content-Transfer-Encoding: 8bit
.oneMscomNav div.navMenu{position:relative;width:100%;z-index:994;font-size:100%}.oneMscomNav div.navigation-4level-strip{width:100%;background-color:#fff;height:30px;display:none}div.oneMscomNav .navigation-section{display:inline-block}div.oneMscomNav .navigation-item{padding:0 6px 0 6px;position:relative}div.oneMscomNav .navigation-item-tab a{display:inline-block}div.oneMscomNav a:hover span{text-decoration:underline}div.oneMscomNav .Menu-label a:hover span{text-decoration:none}div.oneMscomNav a:hover{text-decoration:underline}div.oneMscomNav .Menu-label a:hover{text-decoration:none}div.oneMscomNav .Group-label a:link,div.oneMscomNav .Group-label a:visited,div.oneMscomNav .Group-label a:active,div.oneMscomNav .Group-label a:hover{text-decoration:none;cursor:text}div.oneMscomNav .navigation-item-tab .navigation-item-tab-text,div.oneMscomNav .navigation-item-tab a#idPPScarab{padding:3px 15px 3px 15px}div.oneMscomNav .navigation-item-tab .navigation-item-text{display:block;float:Left}div.oneMscomNav .navigation-item-tab .navigation-item-img{float:Left;height:25px}div.oneMscomNav .navigation-item-flyout{position:relative;z-index:995}div.oneMscomNav .navigation-item-flyout-content{position:absolute;top:-1px;border:#a3a3a3 0 solid;display:none;z-index:99}div.oneMscomNav div.navigation-item-flyout-content-shown{display:block}div.oneMscomNav h3{font-size:120%;border-bottom:solid 1px #e1e1e1;padding-bottom:3px;margin-bottom:8px}.oneMscomNav div.navigation-sub{font-size:90%;display:block;width:100%}div.navigation-sub .navigation-sub-item{padding:0 5px 0 5px}div.navigation-sub .navigation-sub-item-tab a{display:block}div.navigation-sub .navigation-sub-item-tab .navigation-sub-item-tab-text,div.navigation-sub .navigation-sub-item-tab a#idPPScarab{padding:3px 10px 3px 10px}div.navigation-sub .navigation-sub-item-tab .navigation-sub-item-text{display:block;float:Left}div.navigation-sub .navigation-sub-item-tab .navigation-sub-item-img{float:Left;height:25px}div.navigation-sub .navigation-sub-item-tab .navigation-sub-flyout-arrow{display:block;float:Left;margin-top:9px;width:9px;height:5px;overflow:hidden}div.navigation-sub .navigation-sub-item-tab .navigation-sub-item-tab-text .navigation-sub-flyout-arrow{margin-top:4px}div.navigation-sub .selected a .navigation-sub-flyout-arrow{background-position:0 -6px}div.navigation-sub .navigation-sub-item-flyout{position:relative}div.navigation-sub .navigation-sub-item-flyout-content{position:absolute;top:-1px;border:#a3a3a3 1px solid;display:none}div.navigation-sub div.navigation-sub-item-flyout-content-shown{display:block}div.navigation-sub h3{font-size:120%;border-bottom:solid 1px #e1e1e1}div.oneMscomNav .navigation-bg{position:absolute;top:0;right:0;bottom:0;left:0}div.oneMscomNav .selected .navigation-item-tab{z-index:100;border-width:0 0 3px 0;border-style:solid}div.oneMscomNav .navigation-item-tab a{border-width:0 0 3px 0;border-style:solid}div.oneMscomNav .selected .navigation-item-tab a{border-width:0}div.oneMscomNav .navigation-item-tab a:hover{cursor:pointer}div.oneMscomNav .navigation-item-flyout .navigation-level2{padding:12px 10px 12px 10px}div.oneMscomNav .navigation-item-flyout .vertical_split{position:absolute;top:0;bottom:0;height:auto;margin-top:15px;margin-bottom:15px}div.oneMscomNav .navigation-item-flyout .links{overflow:hidden}div.oneMscomNav .navigation-item-flyout .navigation-level2 .links a,div.oneMscomNav .navigation-item-flyout .navigation-level2 .links a:link,div.oneMscomNav .navigation-item-flyout .navigation-level2 .links a:visited,div.oneMscomNav .navigation-item-flyout .navigation-level2 .links a:active,div.oneMscomNav .navigation-item-flyout .navigation-level2 .links a:hover{padding-top:3px;padding-bottom:3px;padding-left:5px;padding-right:5px;text-decoration:none;display:block;line-height:1.3}div.oneMscomNav .navigation-item-flyout .navigation-level3{padding:8px 10px 8px 10px}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .first{margin-top:4px}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .last{margin-bottom:4px}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a:link,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a:visited,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a:hover,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a:active{font-weight:bold;padding-top:0;padding-bottom:0;padding-left:0;padding-right:0}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a:hover{text-decoration:underline}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .link-group a.link-label:hover{text-decoration:none}div.oneMscomNav .navigation-item-flyout .navigation-level3 .link-group{padding-top:7px;padding-left:5px;padding-right:5px;font-weight:bold}div.oneMscomNav .link-group-bottom-border{padding-bottom:3px}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a:link,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a:visited,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a:active,div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a:hover{padding-top:3px;padding-bottom:3px;padding-left:5px;padding-right:5px;text-decoration:none;display:block;line-height:1.3}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links a{line-height:1.3}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .first{}div.oneMscomNav .navigation-item-flyout .navigation-level3 .links .last{}div.oneMscomNav .navigation-item-flyout .navigation-level4{width:960px}div.navigation-sub .navigation-sub-bg{position:absolute;top:0;right:0;bottom:0;left:0}div.navigation-sub .selected .navigation-sub-item-tab{z-index:100;border-width:0 1px 0 1px;border-style:solid}div.navigation-sub .navigation-sub-item-tab a:hover{cursor:pointer;text-decoration:none}div.oneMscomNav .navigation-sub-item-flyout .navigation-sub-level3{padding:14px 10px 10px 10px}div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3{white-space:nowrap}div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .link-group a,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .link-group a:link,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .link-group a:visited,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .link-group a:hover,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .link-group a:active{font-weight:bold}div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links a,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links a:link,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links a:visited,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links a:hover,div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links a:active{padding-bottom:10px}div.navigation-sub .navigation-sub-item-flyout .navigation-sub-level3 .links{padding-top:10px}div.oneMscomNav div.navigation-flyout-region,div.navigation .navigation-section{direction:ltr}div.oneMscomNav .navMenu{border-style:solid;border-width:0 0 1px 0}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=oneMscomNav.js
Content-Type: application/x-javascript; charset=utf-8; name=oneMscomNav.js
Content-Location: http://support.microsoft.com/scripts/oneMscomNav.js
Content-Transfer-Encoding: Base64
d2luZG93Lk1zdD09PXVuZGVmaW5lZCYmKHdpbmRvdy5Nc3Q9e30pLE1zdC5GbHlv
dXROYXZpZ2F0aW9uTWVudT1mdW5jdGlvbihuLHQsaSxyLHUsZixlLG8scyxoLGMs
bCxhKXt2YXIgcD1udWxsLHk9Ii4iLHY9dGhpczt2Ll9tZW51PSQoIiMiK24pLHYu
X21lbnVDbGFzcz15K3Qsdi5faXRlbUNsYXNzPXkraSx2Ll9mbHlvdXRMaW5rQ2xh
c3M9eStyLHYuX3N0YXRpY0xpbmtDbGFzcz15K3Usdi5fZmx5b3V0Q2xhc3M9eStm
LHYuX2ZseW91dFJlZ2lvbkNsYXNzPXkrZSx2Ll9tZW51U2VjdGlvbkNsYXNzPXkr
byx2Ll9oaWRlVGltZXJJZD1wLHYuX3Nob3dUaW1lcklkPXAsdi5fcHJldmVudENs
aWNrVGltZXJJZD1wLHYuX3ByZXZlbnREd2VsbFRpbWVySWQ9cCx2Ll9wcmV2ZW50
Q2xpY2s9ITEsdi5fcHJldmVudER3ZWxsPSExLHYuX0lzc3VibWVudT1jLHYuX3N1
YmZseW91dENsYXNzPXkrbCx2Ll9zdWJpdGVtQ2xhc3M9eSthLHYuX29uT3BlbkNs
aWNrPXMsdi5fb25DbG9zZUV2ZW50PWgsJChkb2N1bWVudCkuY2xpY2soJC5wcm94
eSh2LkRvY0NsaWNrLHYpKSwkKHYuX2l0ZW1DbGFzcysiICIrdi5fZmx5b3V0TGlu
a0NsYXNzLHYuX21lbnUpLmNsaWNrKCQucHJveHkodi5JdGVtQ2xpY2ssdikpLm1v
dXNlb3ZlcigkLnByb3h5KHYuSXRlbU1vdXNlb3Zlcix2KSksJCh2Ll9pdGVtQ2xh
c3MrIiAiK3YuX3N0YXRpY0xpbmtDbGFzcyx2Ll9tZW51KS5tb3VzZW92ZXIoJC5w
cm94eSh2LkhpZGVGbHlvdXRzLHYpKSwkKHYuX2ZseW91dENsYXNzLHYuX21lbnUp
Lm1vdXNlb3ZlcigkLnByb3h5KHYuS2VlcEZseW91dFZpc2libGUsdikpfSxNc3Qu
Rmx5b3V0TmF2aWdhdGlvbk1lbnUucHJvdG90eXBlPXtEb2NDbGljazpmdW5jdGlv
bihuKXt2YXIgaT10aGlzLl9tZW51LmZpbmQoIi5zZWxlY3RlZCIpLHQ7aS5zaXpl
KCk+MCYmKHQ9JC5jb250YWlucyhpLmdldCgwKSxuLnRhcmdldCksdHx8dGhpcy5I
aWRlRmx5b3V0cygpKX0sSXRlbUNsaWNrOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7
bi5wcmV2ZW50RGVmYXVsdCgpLHQuQ2xlYXJIaWRlVGltZXIoKSx0LkNsZWFyU2hv
d1RpbWVyKCksdC5DbGVhclByZXZlbnREd2VsbFRpbWVyKCksdC5fcHJldmVudER3
ZWxsPSEwLHQuX3ByZXZlbnRDbGljaz09ITEmJih0LlN0YXJ0UHJldmVudER3ZWxs
VGltZXIoKSx0LklzRmx5b3V0VmlzaWJsZShuKT8odC5IaWRlRmx5b3V0cygpLHQu
SGlkZVN1Yk1lbnVGbHlvdXRzKG4pKToodC5IaWRlRmx5b3V0cygpLHQuU2hvd0Zs
eW91dChuKSx0Ll9vbk9wZW5DbGljayE9bnVsbCYmdC5fb25PcGVuQ2xpY2sobikp
KX0sSXRlbUR3ZWxsOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7dC5DbGVhclByZXZl
bnRDbGlja1RpbWVyKCksdC5fcHJldmVudENsaWNrPSEwLHQuX3ByZXZlbnREd2Vs
bD09ITEmJih0LlN0YXJ0UHJldmVudENsaWNrVGltZXIoKSx0LklzRmx5b3V0Vmlz
aWJsZShuKT90LkhpZGVGbHlvdXRzKCk6KHQuSGlkZUZseW91dHMoKSx0LlNob3dG
bHlvdXQobiksdC5fb25PcGVuRHdlbGwhPW51bGwmJnQuX29uT3BlbkR3ZWxsKG4p
KSl9LElzRmx5b3V0VmlzaWJsZTpmdW5jdGlvbihuKXtyZXR1cm4gJChuLnRhcmdl
dCkucGFyZW50cyh0aGlzLl9pdGVtQ2xhc3MpLmZpbmQodGhpcy5fZmx5b3V0Q2xh
c3MpLmNzcygiZGlzcGxheSIpIT0ibm9uZSJ9LFNob3dGbHlvdXQ6ZnVuY3Rpb24o
bil7dmFyIHQ9JChuLnRhcmdldCkucGFyZW50cyh0aGlzLl9pdGVtQ2xhc3MpLmFk
ZENsYXNzKCJzZWxlY3RlZCIpLmZpbmQodGhpcy5fZmx5b3V0Q2xhc3MpO3RoaXMu
UG9zaXRpb25GbHlvdXQodCksalF1ZXJ5LmJyb3dzZXIub3BlcmF8fGpRdWVyeS5i
cm93c2VyLm1zaWUmJmRvY3VtZW50LmRvY3VtZW50TW9kZTw9Nz90LnNob3coKTp0
LnNsaWRlRG93bigzMDApfSxIaWRlRmx5b3V0czpmdW5jdGlvbihuKXt2YXIgdD10
aGlzO3QuSGlkZVN1Yk1lbnVGbHlvdXRzKG4pLGpRdWVyeS5icm93c2VyLm9wZXJh
fHxqUXVlcnkuYnJvd3Nlci5tc2llJiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTc/
JCh0Ll9mbHlvdXRDbGFzcyx0Ll9tZW51KS5oaWRlKCk6JCh0Ll9mbHlvdXRDbGFz
cyx0Ll9tZW51KS5zbGlkZVVwKDMwMCk7dmFyIGk9dDt0Ll9vbkNsb3NlRXZlbnQh
PW51bGwmJiQodC5faXRlbUNsYXNzKS5maWx0ZXIoIi5zZWxlY3RlZCIpLmVhY2go
ZnVuY3Rpb24oKXtpLl9vbkNsb3NlRXZlbnQoJCh0aGlzKS5maW5kKGkuX2ZseW91
dExpbmtDbGFzcykpfSksJCh0Ll9pdGVtQ2xhc3MpLnJlbW92ZUNsYXNzKCJzZWxl
Y3RlZCIpfSxIaWRlU3ViTWVudUZseW91dHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlz
O3QuX0lzc3VibWVudT09ITEmJihqUXVlcnkuYnJvd3Nlci5vcGVyYXx8alF1ZXJ5
LmJyb3dzZXIubXNpZSYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD03PyQodC5fc3Vi
Zmx5b3V0Q2xhc3MpLmhpZGUoKTokKHQuX3N1YmZseW91dENsYXNzKS5zbGlkZVVw
KDMwMCksJCh0Ll9zdWJpdGVtQ2xhc3MpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIp
KX0sS2VlcEZseW91dFZpc2libGU6ZnVuY3Rpb24obil7bi5zdG9wUHJvcGFnYXRp
b24oKSx0aGlzLkNsZWFySGlkZVRpbWVyKCksdGhpcy5DbGVhclNob3dUaW1lcigp
fSxQb3NpdGlvbkZseW91dDpmdW5jdGlvbihuKXt2YXIgZj10aGlzLG89ImxlZnQi
LHU9bi5wYXJlbnRzKGYuX2l0ZW1DbGFzcykud2lkdGgoKSxzPW4ucGFyZW50cyhm
Ll9pdGVtQ2xhc3MpLnBvc2l0aW9uKCkubGVmdCxlPW4ub3V0ZXJXaWR0aCgpLGw9
bi5wYXJlbnRzKGYuX21lbnVDbGFzcykud2lkdGgoKSxhPW4ucGFyZW50cyhmLl9t
ZW51Q2xhc3MpLnBvc2l0aW9uKCkubGVmdCxjPWwsaSxyLGgsdDtuLnBhcmVudHMo
Zi5fZmx5b3V0UmVnaW9uQ2xhc3MpLnNpemUoKT4wJiYoYz1uLnBhcmVudHMoZi5f
Zmx5b3V0UmVnaW9uQ2xhc3MpLmlubmVyV2lkdGgoKSksaT1zK2Escj1sLXMtdS01
LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXI9PSJydGwiJiYobz0icmlnaHQi
LHUrPTcscj1jLXMtdSxoPWksaT1yLHI9aCkscjwwJiYocj0wKSxpPDAmJihpPTAp
LHQ9MCxlPnUrcj9lPHUraT8odD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGly
PT0icnRsIj8tZSt1KzI6LWUrdSxuLmNzcyhvLHQpLG4uYWRkQ2xhc3MoImRvY2st
cmlnaHQiKSk6ZTxpK3IrdT8odD0tZSsocit1KSxuLmNzcyhvLHQpKToodD1kb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyPT0icnRsIj8taS0xOi1pLTYsbi5jc3Mo
byx0KSk6KG4uY3NzKG8sdCksbi5hZGRDbGFzcygiZG9jay1sZWZ0IikpfSxTdGFy
dFNob3dUaW1lcjpmdW5jdGlvbihuKXt0aGlzLl9zaG93VGltZXJJZD13aW5kb3cu
c2V0VGltZW91dCgkLnByb3h5KGZ1bmN0aW9uKCl7dGhpcy5JdGVtRHdlbGwobil9
LHRoaXMpLDEwMCl9LFN0YXJ0SGlkZVRpbWVyOmZ1bmN0aW9uKCl7dGhpcy5faGlk
ZVRpbWVySWQ9d2luZG93LnNldFRpbWVvdXQoJC5wcm94eSh0aGlzLkhpZGVGbHlv
dXRzLHRoaXMpLDFlMyl9LFN0YXJ0UHJldmVudENsaWNrVGltZXI6ZnVuY3Rpb24o
KXt0aGlzLl9wcmV2ZW50Q2xpY2tUaW1lcklkPXdpbmRvdy5zZXRUaW1lb3V0KCQu
cHJveHkoZnVuY3Rpb24oKXt0aGlzLl9wcmV2ZW50Q2xpY2s9ITF9LHRoaXMpLDM1
MCl9LFN0YXJ0UHJldmVudER3ZWxsVGltZXI6ZnVuY3Rpb24oKXt0aGlzLl9wcmV2
ZW50RHdlbGxUaW1lcklkPXdpbmRvdy5zZXRUaW1lb3V0KCQucHJveHkoZnVuY3Rp
b24oKXt0aGlzLl9wcmV2ZW50RHdlbGw9ITF9LHRoaXMpLDM1MCl9LENsZWFyU2hv
d1RpbWVyOmZ1bmN0aW9uKCl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9zaG93
VGltZXJJZCksdGhpcy5fc2hvd1RpbWVySWQ9bnVsbH0sQ2xlYXJIaWRlVGltZXI6
ZnVuY3Rpb24oKXt3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lcklk
KSx0aGlzLl9oaWRlVGltZXJJZD1udWxsfSxDbGVhclByZXZlbnRDbGlja1RpbWVy
OmZ1bmN0aW9uKCl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9wcmV2ZW50Q2xp
Y2tUaW1lcklkKSx0aGlzLl9wcmV2ZW50Q2xpY2tUaW1lcklkPW51bGx9LENsZWFy
UHJldmVudER3ZWxsVGltZXI6ZnVuY3Rpb24oKXt3aW5kb3cuY2xlYXJUaW1lb3V0
KHRoaXMuX3ByZXZlbnREd2VsbFRpbWVySWQpLHRoaXMuX3ByZXZlbnREd2VsbFRp
bWVySWQ9bnVsbH19
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=bing_logo_white_blank.png
Content-Type: image/png; name=bing_logo_white_blank.png
Content-Location: http://support.microsoft.com/library/images/support/CN/bing_logo_white_blank.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAACgAAAAVCAYAAAA0GqweAAAAGklEQVR42u3BgQAA
AADDoPlTn+AGVQEAAHANDTUAAf15g6gAAAAASUVORK5CYII=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=ss_live_button.png
Content-Type: image/png; name=ss_live_button.png
Content-Location: http://support.microsoft.com/library/images/support/CN/ss_live_button.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNrMlM9LVUEUxz/ndrUy/MEL
ivCpYZoGRVBLfRBECIJGCxeB+xbu2ojtdNGqRRv/AEmNahG4cOXCTMEoEsEW/ljo
U4wiwhRF6807zrtDmPfeIuwuOjDcYb73fJjvnDMjqop5Ua8kEMc6FkVyz+sSgf0M
j4TDRzVhYD7/W1FSl5ELd5GqViguD9Z0dRRdeop+morPMYPn47eYuoJ384kDff+G
fp1DisuC9QD85kEAjgIHqmOB3p3XUFqNLgyj0z0HCeeakVtDwTz/MgNb2VBRjLUc
HiXpAFb4Wae6D2m6NoHOO6CcbYrk+hgT3faptLO1uUKczuay+xaVRnQ/IIfDuFOQ
guU4vcgViLwSzvfELoQH2XHY24CyGqSh87BuiyKXOl129lUk1ydnYousH4aQa13I
jUdQmUE/zyLlNVB/G45XwNwAfHwf04dxllIXkTNX3XznSwCRAqgQuxvoZC+8ffyX
jS0ekumDdDM6dh/sTjndCCcqnL4y/uebIuaXNvR8aLdWalvgXT8yaxvb7MH6zBGu
nn8Srt+z9tpgYQTGuv/xcfixY+09g9yuPfBhjvpoiD4s+b/fQ4+ebUmMZln7AgwA
T87IvKlhMtUAAAAASUVORK5CYII=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=ss_dd_select1.png
Content-Type: image/png; name=ss_dd_select1.png
Content-Location: http://support.microsoft.com/library/images/support/cn/ss_dd_select1.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAA0AAAAYCAYAAAAh8HdUAAAAAXNSR0IArs4c6QAA
AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA
OpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwA
AAC6SURBVDhPpdAxCoMwGMXxFkFwc/MIIXMXN1eXB1065AjSG3gF505eIUfIFTyC
V/AIWiL0EcThSQO/EBL+fJD74/3ZbldXjNZ1hWofErdlWaBiNM8zVIymaYKKUQgB
Kkbee6gYjeMIFaNhGKBi1Pc9VIy6roOKkXMOP9vJSt8ZtW2LVNod3xjVdY2jGJ7d
MzLGQMWoqiqoGOV5DhWjLMugYlQUBVSMyrKE6r+PsNY+VZzUNM1LxSgervgCpo4C
FhApZbcAAAAASUVORK5CYII=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=ss_check.png
Content-Type: image/png; name=ss_check.png
Content-Location: http://support.microsoft.com/library/images/support/cn/ss_check.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRFXGFlXWBlX19fW19iWl9jXGBj
W2Bk////Gfun7AAAAAh0Uk5T/////////wDeg71ZAAAALklEQVR42hzKwQ0AMAzC
QNoEvP/GbcLnJGSxu1oS+eNYCn0KpZ0CzclIpnwCDAAf/gEkjVJUxgAAAABJRU5E
rkJggg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=microsoft_support_logo_es_es.png
Content-Type: image/png; name=microsoft_support_logo_es_es.png
Content-Location: https://support.microsoft.com/library/images/support/es-es/microsoft_support_logo_es_es.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAGsAAAAjCAMAAACkagQ/AAAACXBIWXMAAA7DAAAO
wwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33
3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs
DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe
EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH
/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn
f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ
V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4
mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg
g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl
7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A
V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5
WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ
WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA
RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv
1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4
IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy
UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE
bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE
NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD
5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h
tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0
dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK
CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep
O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN
2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp
G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n
U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36
p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP
jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn
m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR
p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H
DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn
F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc
n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh
7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ
gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85
ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7
F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R
NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9
MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo
1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5
sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF
fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP
ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ
zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ
+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v
dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb
Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7
52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7
nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9
zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D
BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy
l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT
0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
YAAAOpgAABdvkl/FRgAAAwBQTFRFAAAA7e3t3d3d/f39iIiIZ2dnmJiYVVVVT09P
d3d3u7u7qqqqzMzMDQ0NDg4ODw8PEBAQEREREhISExMTFBQUFRUVFhYWFxcXGBgY
GRkZGhoaGxsbHBwcHR0dHh4eHx8fICAgISEhIiIiIyMjJCQkJSUlJiYmJycnKCgo
KSkpKioqKysrLCwsLS0tLi4uLy8vMDAwMTExMjIyMzMzNDQ0NTU1NjY2Nzc3ODg4
OTk5Ojo6Ozs7PDw8PT09Pj4+Pz8/QEBAQUFBQkJCQ0NDRERERUVFRkZGR0dHSEhI
SUlJSkpKS0tLTExMTU1NTk5OT09PUFBQUVFRUlJSU1NTVFRUVVVVVlZWV1dXWFhY
WVlZWlpaW1tbXFxcXV1dXl5eX19fYGBgYWFhYmJiY2NjZGRkZWVlZmZmZ2dnaGho
aWlpampqa2trbGxsbW1tbm5ub29vcHBwcXFxcnJyc3NzdHR0dXV1dnZ2d3d3eHh4
eXl5enp6e3t7fHx8fX19fn5+f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiI
iYmJioqKi4uLjIyMjY2Njo6Oj4+PkJCQkZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiY
mZmZmpqam5ubnJycnZ2dnp6en5+foKCgoaGhoqKio6OjpKSkpaWlpqamp6enqKio
qampqqqqq6urrKysra2trq6ur6+vsLCwsbGxsrKys7OztLS0tbW1tra2t7e3uLi4
ubm5urq6u7u7vLy8vb29vr6+v7+/wMDAwcHBwsLCw8PDxMTExcXFxsbGx8fHyMjI
ycnJysrKy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW19fX2NjY
2dnZ2tra29vb3Nzc3d3d3t7e39/f4ODg4eHh4uLi4+Pj5OTk5eXl5ubm5+fn6Ojo
6enp6urq6+vr7Ozs7e3t7u7u7+/v8PDw8fHx8vLy8/Pz9PT09fX19vb29/f3+Pj4
+fn5+vr6+/v7/Pz8/f39/v7+////7Fo/7AAAAAF0Uk5TAEDm2GYAAAJtSURBVHja
7FbbcuUgDBP4Jgz//737AElIzp72oe3O7Ez9BiGWhWUlwG/8fyGpFmEtfx6qGkkG
w34eKhiataZ+Hat4+/C5kmOhfhnLGR+WQuq33ZHHZ1j9+7A+5eUPWQ5XUx0yL7Z3
oHQ17eV8J7U19bXOPlC8tdq7RfTec2VpTVNuqY1R9vUwzrACAEki50bMvorHOtFX
Aq9BcqxdtlPcfORO0uptGZrZG2kCoJOD5pkaZAUgjbSe2WOBGd2iD6/uxnD3BEow
tKfHTHJemZP0Y6fE4oOcBSYZKgBQSZvg87TYBLeI9crZLzFGBYDxVEOStHWzerFW
skxIOTKx7rotQQVg59CcOsxZxcz3GOdGshUAEpdSKplAkrlL9koDKCmARchDh+30
oP7o2BRERAHGVSOEdKCT52HSb4UmWQC7BtQ5MYItZ/hW2plYGSa3qhHUqcNLsorG
y4YGWQELf8yXcI/xavaNkXcse2IFHRYvWNe1r34V0toZ441ZjTsvB5I8uiFB31px
SOCVF1784RlBRd00Wg5t1IvGgF/Y6FMbG6/VL/vEY6eY7Rq+fmj+SKXBsk+MRCj+
yss3Qe1673KmHkCSKsd3Tef26u6Yk9VOoj6f3HjxGPtjKOsGOhi9Fql92YmSlkVK
jzkZSVr0IqUvc6tBai0ydDHeeA2yFamAryzDd8nXU5utLD0+vbdOr41pO6iH9S6v
2niJLe8VPdPu4zV8Hjjtf2iQtHW3SaJokHF8QyDdSEY7bMguyystFtvagqT5s29S
irxbr/m6H4AUkTc/ZefJ92fexT7LPx39H2LlL9bXsczwGx/EnwEA6DoYvOtf7JkA
AAAASUVORK5CYII=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=uparrow.gif
Content-Type: image/gif; name=uparrow.gif
Content-Location: http://support.microsoft.com/library/images/support/en-us/uparrow.gif
Content-Transfer-Encoding: Base64
R0lGODlhCgAKAJECAAByxszj9P///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0
IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUg
WE1QIENvcmUgNS4wLWMwNjEgNjQuMTQwOTQ5LCAyMDEwLzEyLzA3LTEwOjU3OjAx
ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJk
ZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
MC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2Jl
LmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlk
OkJEMEJDMkRBRTA1Q0UxMTE4M0NCOTU3Qjg1NTNEQUQ5IiB4bXBNTTpEb2N1bWVu
dElEPSJ4bXAuZGlkOkZFRDc1MzU1OTU1NTExRTFBNzgxOUQ4N0YyRUI0MDVFIiB4
bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZFRDc1MzU0OTU1NTExRTFBNzgxOUQ4
N0YyRUI0MDVFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUu
MSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9
InhtcC5paWQ6OTk2QzFBRTlFMjZFRTExMThDOTJBMTQ3MEQ5RDRBMEIiIHN0UmVm
OmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQwQkMyREFFMDVDRTExMTgzQ0I5NTdCODU1
M0RBRDkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1l
dGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno
5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4
t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomI
h4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllY
V1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKiko
JyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQBAAAC
ACwAAAAACgAKAAACE5SPCHngDEJcLYglIWvb0P1pSAEAOw==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=upArrow.gif
Content-Type: image/gif; name=upArrow.gif
Content-Location: http://support.microsoft.com/library/images/support/en-us/upArrow.gif
Content-Transfer-Encoding: Base64
R0lGODlhCgAKAJECAAByxszj9P///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0
IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUg
WE1QIENvcmUgNS4wLWMwNjEgNjQuMTQwOTQ5LCAyMDEwLzEyLzA3LTEwOjU3OjAx
ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJk
ZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
MC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2Jl
LmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlk
OkJEMEJDMkRBRTA1Q0UxMTE4M0NCOTU3Qjg1NTNEQUQ5IiB4bXBNTTpEb2N1bWVu
dElEPSJ4bXAuZGlkOkZFRDc1MzU1OTU1NTExRTFBNzgxOUQ4N0YyRUI0MDVFIiB4
bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZFRDc1MzU0OTU1NTExRTFBNzgxOUQ4
N0YyRUI0MDVFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUu
MSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9
InhtcC5paWQ6OTk2QzFBRTlFMjZFRTExMThDOTJBMTQ3MEQ5RDRBMEIiIHN0UmVm
OmRvY3VtZW50SUQ9InhtcC5kaWQ6QkQwQkMyREFFMDVDRTExMTgzQ0I5NTdCODU1
M0RBRDkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1l
dGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno
5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4
t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomI
h4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllY
V1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKiko
JyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQBAAAC
ACwAAAAACgAKAAACE5SPCHngDEJcLYglIWvb0P1pSAEAOw==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=GetHelpNow.png
Content-Type: image/png; name=GetHelpNow.png
Content-Location: http://support.microsoft.com/library/images/support/CN/GetHelpNow.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+VpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U
Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w
Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE
ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv
YmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2Vs
ZW1lbnRzLzEuMS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh
cC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ
aG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDExLTEyLTIx
VDEzOjExOjAyLTA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxMi0wMS0wNVQwOToz
MTo0Mi0wODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxMi0wMS0wNVQwOTozMTo0
Mi0wODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHhtcE1NOkluc3RhbmNlSUQ9
InhtcC5paWQ6MjFBNUEyM0IzN0MzMTFFMUJDRkJDNDg3NTQ2QUM4OUEiIHhtcE1N
OkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFBNUEyM0MzN0MzMTFFMUJDRkJDNDg3NTQ2
QUM4OUEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1w
LmlpZDoyMUE1QTIzOTM3QzMxMUUxQkNGQkM0ODc1NDZBQzg5QSIgc3RSZWY6ZG9j
dW1lbnRJRD0ieG1wLmRpZDoyMUE1QTIzQTM3QzMxMUUxQkNGQkM0ODc1NDZBQzg5
QSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4g
PD94cGFja2V0IGVuZD0iciI/PoHOocAAAAK0SURBVHja7Fq/T1NRFD4lDUpARUjU
AckjcVEG60BC41ImHXGoKxK7m/IXlH+Awo5pXTEkjDDBYhwchAFcHAg1xvirVTFq
o9bzNbd6ua99Ptp737sv9EsOL+0r9Hznfufcr7fEarUaRRk9FHF0CXQJnHQC8VY3
Rh4dOHxxwk7w1czoltf9mDpGReIFjpRFhS5yZJlMxZOASP45x6CFatnmmFJJqD1Q
sDR5IMGRb9nEovopy3v2ntcUcigC4EInfE2hdnF5IE7pK/2UvHjq73Olw1+0V67S
ysuv9Ln6u9O3GDRGIDdxnjLXzrieT9Z/9tPc9XO0sPOJlve+2LeRLdwcbpq8jLO9
PXWSCKsIJC+dprssGxmQytM33+uhAkQhNWsI3L96tPKlw580ufqa0htv65F7Vnb9
TlohHCqB26N9Rx7nWedys+rUfCBmDlNH1X7gZu44gExk7H6suqaTy6SxzKwh0KxR
5amjNjh6ZP3gmxZ3Gje1tEj+8a0LND7U65pOmc33OjY0swRQeTV5SAvJlzTJxxgB
VF+VDWzE3JMP0ZhCauVRcRPJB/aZeKPNhg1NQhiRMG3/ptSPaBGAZLD7Qkogo7Np
AyGAxDFCGztwZvNd23M/lB7Isu+X7YNq9iLXxCZhhIDsRnF9+MKcG1XPhcq6jlUg
IfQCdl9dtoGxz15ozGsFlnS9U+MTmcbkgXnPFRCrUGh2/mIBFrn62f8SECRSfHng
Q06JNiS3T/7PoPBaHCkutTrkjXXyHRkTRfL5Y64Yqrgo+fvwppA4aJ3lmBLV8oMZ
G8colndMNFnFh+wStu4DOY4bHGtBrYKJjQxSuiOilaymo2Al1sRqzDe55+iSkWkv
VJFktWVCRkGZuW0xqWalJp+OEoEGimJaFXXJKAw7Le8dTqd/LNb9b5WQ8UeAAQBt
GvkSQcE/gAAAAABJRU5ErkJggg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://support.microsoft.com/library/images/support/CN/windows-xp-eos-small_notext.gif
Content-Transfer-Encoding: Base64
R0lGODlhlgCWAPcAALzL5DJ1rPvOGc7Y6pqt0Vmf0ZVnbh1no1uNwSBxrSV7t6a6
2YWeyGmKu06YzR5wrKeLMVCazjmHwVJ9skCMxD6Kw2Sm1kOPxi+Au16i1FSd0HOv
Qk2XzEKCum2h0D2CujRvqCh8uJnKPPJtI9CpKlKc0NBILUF9tR5opFBwNx9tqTqI
wTODvWSZyytzre88JEyMwyJtqfaTSB1qpsnKzDN6tB5uq0qVy7e0pSx+uoO03Y17
MhNbmF2JPm1ti1KRxo2q0hRjoayplWmczRRgnUSPxzF1r3mt2XGl0+JMKFKEuo2a
kluKvjGBvF2QxGt4tlyh042ky3Wo1Sx1sGidQxxqpgtcm4iMtE6QxXeUwYGjzy55
tEVWplWBtXCQvCB2s8JXSExvmJSScVqf0k6Eu3iKxbmMd2CTxnWr2FSVySJrpwNU
kjN9t5yx12an12KVyJaozmCh0q82JmqUxZCfqWep2H6w21uVyTaFv/WCMQxUkVuZ
zdZtNUGJwV2e0KWHgUiTylWd0XeVwpSHUUd4r4nEQAdbmnuOciF0sAVNiyJ3tHac
yhlmpGql1N+1JUWQxzp9tjyJwldts26o1leFuUJrqCVvrCtrpRxuq2Odz1SJv2Ki
1F+EtiVzr0aJwE+VymeKqFWaztvi8AhQjl+g0kKOxU6Ivyxvqz5yo0hqsEaRyHaI
nk2SyF6g0TeAumeh0h5rpyBvrARYlzeCvB5zsCh2sr+cLhpppxVnpV92tUt+tR1v
rY+ez+3BHayZXA5gnhxpphprqcSCYj9OofmfV3SZxw1YlX28QkWMw2Sl1T6Hv3+X
xTB/uh1tqhxsqhtopRdqqE5fqkGNxVacz0mUykeSySN5tjeGvyF4tUuWzCp9uTGC
vUWRyGGl1mCk1T2KwzSEvit+uV2i02Kl1id8uCFrqCJ1smOm1jeGwCBmouvu9iB1
sh9zrxturFee0R5ppVGQi52gkG+CwJ6gva2ghjyGv1+LuBxsqYChzEeGvkx7bdzD
e2Oj1D5yrMuJXv///yH5BAAAAAAALAAAAACWAJYAAAj/ANssGDiQgMGDCBMqXMiw
ocOHECNKnEiRAJwoDLI06NIPDgGBBqOIHEmypMmTKFOqXMmypcuXMDEu88KJ0CUi
DDwavMigp8+fQIMKHUq0qNGjSJMqXTqz5k0eyxiMZLBMUJarWLNqzSKoq9evVrGC
HUu2rNmzaNN+1Xp2q9usNAmBIMKDh5dlUat6acC3r9+/gAMLHky4sOHDiBMr5jTh
UjoeevQ08EJ5b5cJmDNr3sy5s+fPoEOLHk26tGm5dCGP4sSa0+V+IGLLnk27tu3b
uHPr3s27t+/fjuvqGZWoy+UJhPpdOsC8efN00KNLny4dhfXr2LNr3869u/fv4K9T
/x8/3bl5RnWNDU804Xjy5ebjy59Pv779+/jz699PPx1d9YkUZxxyyvFn4AHhJajg
gtodyB8jqa1n3GXvOcfghRhmqOGG3znnHw/qETchgZe8w+GJ372j4oostrgiijBy
d0CEIg743nYu5qjjjjz26OOPQAYppInZMfeYagJS2M8pQc7g5IpORinllFRWaeWV
WGap5ZZSQvkkkBAKV6NxyZ3CZZZVpKnmmlVMyeabcMYp55xyuknnmVcegB6SIxJC
iCVR0gknLIQWauihiCaq6KKMNuroo4UKCqeTzwRB13qUdEHJBLosCemnoIYq6qik
hoqCpcYYQxwlmXbRqQuQov/iQxWl1mrrrbgaCgyEqa6RCKuZ6kLIKYyCYIAwxMiQ
xwhgGICKCtBGK+201FZr7bXYZqvttth++kyYAALr6gnEXstHHjIkO8IISZggRxhV
cCvvvPTWa6+8M4A7nLjCnmKtM2GMkAcxxCzLrhxyrKLPJdDa4PDDEEcs8cQUV2zx
xRhTfO+0+f63L6tK6ALJKRX7IHCyy7aL8BIppKBPAA+oYAMq8FChT8Y456zzzjxf
DIu+owAbMiEuUMwOGOiqy667BuiTQg9UbHBMISKIUMgGh3jRM8S72ND1116HDfbY
Ym9tNs4/BwHiGkGDrMsJRVN8broGq/xHy1BPXbUIx/T/gIMumHQdy+CEF2744Ygn
rvjiipPteNkTgz3xPYyobchwTLgNd9m7xGKJyQMXvDTCdOAtNdVW973AA6y37vrr
sMcu++y0127764wbPnYwlVthzBprZK4JJW9PIbsBI6Sr7OhgHPJ01HpbvYEYUcSQ
wAIAAHBCLK1jDwATrheT/RzZF3P762SUf/76sKMCBhg+xGIAGGG8b4AJSRgQA/ev
N1MpEb8LXuZCdgLjwc4ScyMGH/gwurs9bwOo4xsVcGCPBCQAAP/4Bz4smAAjZPAf
beBgJxbwD3UwIYNA4KAKV8jCE/4jhSyMoQxjiDv5vSAJYXgBGB7wgh6CoYcGiJ3/
/9RmBeBljgkENOAKw8AHf5gBBzSgAT2E4S6WPe10e+sbDaZgQXxkcAGdsOAcPigK
FarjHwtAAApjMUMZuhAIbGyjHOeYAFSY4IYvAAE7gLgLA9xQBSt8gA1ugSpZCDBz
ZChgDC3BCV7AAQ7LKIMkcrEKM7AMaliU3iEIwMETZFAdHGzDB/9xggSwQwkZ1EIb
mcCEFZ4SCPg4wRtVKMtW0jGGSmClBU9Qys8B0YI9pEUdexjDQVrKCoZkJRITyUUW
piIXvGgDL5YhD0lEgwuVCEPLoLe3QlAhHl6wIDsSIIoMKmGcAxhlMdjBDi+SUo0v
ZAcGAaCEM/5DFHNgJztI+P9BfgKBnUxI5yf/6U4Y1iCDANiFBcsJhGLYM4NtyB4i
EuADHwqTmMB8QTEJ+QvfHVITzHRlAlIhj2jyogy5kAQXhvEEfaziEFSgAtU2QIVD
iIEGutAnLfzJjoOiEaHsQAQGRcGONwr1HwN4aAlrwA4gjHKU/3ThU9vgSaSyc4wl
ZGdVnVpCAJTzH9pjRz/wl4QX+GCPLwgDLSqqURY+IBhB6GgyWQnSE2xBn/o8hSTK
YJBI5uKaw4jHDiAghiXQYQlCwME+9uGLLSACr1gFACKw6lN17IIdX6TFG+X5yTkE
NIPrtGc+yWDPf34VH0X96mf/wVRRZpAM7SwhCUXBVHn/AgAItKCFHw3gRxOgwoc+
uCMYcotXdrwVF3L9KDOLS4tK5GIZ0qSmNVkqhh3swBa2cEQvBMBdR4iBAYgIb3h9
+g9EiHIA5sDgPxAAzzkgAp5ASG8G3TtZFMJTsuHVgn0RKt5FfFG//1gEOwT6wgdg
EHupPIF4EbGOioJhHWN9gR9fcMcbhqG47DxucpVZV8cuGBGpeIJJy1DNlV7BuhCw
BQm0y91e2IKCHz7qP+aQzjYgAsBA4GoN3otCGYsXvlxNYXiBnEF80GK8CNUEQreA
ULCaI4OL4OonAaCFHYfBB/0I75XZ2g8fYLkTnYhxAoKBXGQq164LNoclJCEPOEgT
/6WAncdgU7xi7grAEbaggXjNwWdzcJWf7lUyUtOJXnPAV77/6DORX6hoFHIVAX1+
spPLqY4xAsCdlK0BgT84AESYQ7yd4PM6esjnGC94zLgggpk5nEgPi7cfe20DJOXx
Vy5EQ7DXze52u+sLOHg60uYQ9AdrwGelxtfQKER0o1/oX0bzedFa6HMHEFoL16YT
CIJOJwAUwec5AAEAD50DsPv8vnF/esG0cEaZDcleJoC0A1uI9DqeyYuT0nq6VxjE
YFXMYgH0ggRCyIK5zfHQQpuDnxmENLJfWAv1LhvbCO2zayHuZD43uw3mMMUoIf3V
f0TbHDXoQJ+DPPCSA5sdzf/AheXWwF4EvJvYkY7GE64wjyjO4wkrlfO+69xiCNDg
BF8IutCDjvA2CL3ZJRQ6fBWhXqWjUBFf1UIHAPxCRQgUCGyYgz07oIgv2FMdRP9g
B9hQzgFw/QuAHvrQTR5plKv8F4ZgOXvfvQW12wOSmVrHCShxhScIFgIpdoQj7NwL
X9BgEWo/+gfnIHQ2fBAAQncCCq3R9KBL/oVfoPonUfgFTSgVykLnJ+S/0GxRhP2p
SE286lcfdHZg4u3GkEXLNWEKeCd+Hao/ASisy+9dC4AE9Ejn6qedQTYMXaBawP0X
Lg+EL1R++ZzPvD0BgNXmd16992S80LGa/C8Q3+hBB0L/x9WxAOOz/vxCp0U73h73
2de+7ugfOijoMQg6k8AWvqAHDeyhiP77//8AGIACOIADqAmuIIDYgA2K4AQE2ID/
5wRsEIDxt3rqx36yN3e1VwMOGIA1kAUEgANCEEUEsAwnsIEmeIIomIIquIL/tw67
YIEthwAZyILm8AXWEHSIwIIImIA82IM++INA+IM6OIQN6ILQEFfI5H4doIEn2IOK
IIRBGIVSOIVUWIVWeIUJiIJGGFeGIAtO0HK1xwZYOIZkOIXWcIZomIZnWIZs2IYJ
+AW7cIRy5QRfKINjV4VqmId6uId82Id++IeAGIiCWIVwKIddSIdfaAr5wAaC2IiO
//iIkBiJktiH2BCHyHWIdCiDiziJnNiJnviJjagIlgh3XpiJisiIoJiGCrCKrNiK
rviKsBiLsjiLtPiKqZiGlQgNl1iKibiICpCHtRiMwjiMxFiMxliMeqgItKCLpHgG
magJvniM0jiN1FiN1viKykhmcnUGzuhy+cAM5DCM5DCO5FiO5niO6HiOIbCO7NiO
7viO8BiP6TiP9IiOxGgN7KCNyMSNdAiNrlCP5hiPAjmQBFmQBnmQCFmQAEmOIYCP
67eN/KgJnuAKCVmRFnmRGJmRGsmOCoAIrxcEVmAI3OiM/piR2nCSKJmSKrmSLNmS
LvmSMBmTMomSGdmRNqByIf85kk4gkRQ5kz75k0AZlEI5lD4ZAh35kTkZkRNJlEIZ
Dk75lFAZlVI5lVRZlVYZDkwJlOtoDsYEdzr5A6bgCi15lWTplDlwlmiZlmq5lmzZ
lm75lnCZlmVJli0ZAogQCxxlCG/wBt3oCbNAlXEZmII5mIRZmIY5mFOZAyHAlYa4
l9wIlrNwmJI5mZRZmZbJliFQC3iJhI7pBJBpmBiQA6E5mqJZmqR5mqaZmhiwmqzZ
mq75mrAZm6ypmrSJmrZJm4SZmZvZUY55BpB5m8Apm8I5nMRZnMZ5nMg5m8CpmtpQ
C7vAUVawl3z5AzBQD8l5ndiZndq5ndiZA7WQADNwidL/6ZvVyQzcyZpNkJ7quZ7s
2Z7u+Z7wGZ/yOZ/reZ6z+Z0/w5uOiQDV+Zr0+Z8AGqACOqAEOp+v6Z0JkJ/R6ZjU
aZ0F2p7bEKESOqEUWqEWeqEYmqEauqET+qDt6Z2dUAUQEp0tsJdOUJ3uyaEqWqEs
0KIu+qIwGqMyOqM0WqMssKI4KqHtyQy10Ak/o2otUKJv0KAqaqNGeqRImqRKuqQ1
qqI82gkq0DtBWqInWg9MeqVYmqVauqVHygxbAKU4OaVncAcwoAxceqZomqZqGqMY
8KXOwAi/8AtT+gZOgAVmuqbgkKd6uqd82qd++qeAGqiCGqhrygJtCqWVYgVzSqZ3
/+qig/qneBCpkjqplFqplnqpmJqpmrqpl/qofgqjh6oCiTqnnqkMfcqpqJqqqrqq
rNqqnMqnTfClKsBRQzCld/ADfeCqmnoNvNqrvvqrwBqswjqsxFqsw6qrmMoCW1AL
MUCrtfoGt5qrmGqs1Fqt1nqt2JqtxZqpysqswBBXQ1CrLRCt2pqt6HCu6Jqu6oqu
EtCu7vqu8Bqv8bqu9Jqu5YqtLJADUxAL3/oL4Rqk5Eqt6SqvBFuwBnuwCJuwCruw
7Yqu1RqZmtmv/zquuIoODHuxGJuxGruxHCsB6JCv+yqx/3qryNCxJnuyKJuyBwsO
bFALllAF4DqyP1CyJ7sCNv97szibszq7szzbsz77s0CrsyiLBy0LKHAarrVKsgQb
tDkbCU77tFAbtVI7tVRbtVZ7tVgrtUybs/I6C8wwBUbrr/86pMjQtFl7tmibtmq7
tmybtTmLBzwatkhbommADG2rtt+Qt3q7t3zbt377t4AbuH57t2l7DWywBZaQn0g7
BHtQt2gruIJbAZI7uZRbuZZ7uZibuZp7uZAbuGhruF+quEj7BnULuZt7uqibuqq7
uqybupBbD1/ro0frAeG6B3dQBK2bu7q7u7zbu6i7Aq7wpeVQOR5Au0n7CL6bvMq7
vMxruRIQvC4QA8RrvI0LA9/guxSQvdq7vdzbvd77veD/G77iO77fm7zAuwUuMLxB
ULy02wJpAAOYS77yO7/0W7/2e7/le7mRAL3qy75DkAl3oAr4O8DSUMAGfMAInMAK
vMAM3MADfL+RMAvoGwOV4r/jigXz28ANXAoc3MEe/MEgHMIiPMIkXMKloMELPL8R
PMEVXLz/G8AobMAmPMM0XMM2fMM4fMIxLA0rHL0tXLwAzAo5PMQcfAFGfMRInMRK
vMRM3MRNTMRDXAESPAUUvL7sG8Q57MRavMVc3MVe/MVMjMNSXAMu+63s6wGZsAdC
3MFg3MZu/MZwHMda7MFSzAZg+61IcMVqLMdLXAR+/MeAHMiCPMhF8AiGfMiInMiH
/0zIjNzIfszHSkwBs2DHgLK+eYzGe9zEjhzIitzJnvzJoBzKojzKnrzJgOzEkkzJ
MxAEl4zJrNDIpNzJ3DDLtFzLtnzLuJzLurzLvJzLsazIjUwB9aDKrHzJafwJodzL
ymzLqtDMzvzM0BzN0jzN1EzNy3zNswzK0jDMYJsvSPDNmPwJ2FzN1VwN5nzO6JzO
6rzO7NzO7tzO5GzN17zNlPwz35zHjCvOs0zO79zP/vzPAB3QAu3O5EzL9Ay29gzO
r7AHn6AKA/3Q7gwIEj3RFF3RFn3RGE3REL3R6qwKpcDNicsIUqDQfvAJHG3OGZ3S
FU0NLN3SLv3SMB3TMu3SKv9d0xJ90kVQD8FrCcOLBCPtAa9Q0u1c0zNd1EZ91Eid
1Epd1DXdzjm909I70t/8CpnwCRe91Fid1Vq91Vxt1Bf9CMoQvJ3Q01JN1Q7Q1UV9
A2q91mzd1m791nAd13I9126N1jMN1mJdDrggBWWdCWed1HQd2II92IRd2IZ9A0qN
1+g7vHw91X5NDYd92Nkw2ZRd2ZZ92Zid2Zq92ZQd2Yet2C4QpXw90lQdAZHN2aid
2qq92qy92pGtCn0AvaI62khA1aHQ1q2d25bNAbzd277928Ad3MI93Lyt28bd1tUQ
2yxM241ACqFg3JVN3NI93dRd3dZd3dA92cktwT7M3Jn/8Nyafd3iPd7kXd7m/dub
DQh9wN0UPNpS0AhxEArnPdwOUN/2fd/4nd/6vd/83d/+vd/zLdzUgAyzUAPRewto
IAUJDt/TcN3/fd8REOESPuEUXuEWfuEYnuEabuEPXt/XPeAFTsXAoOB8Dd/y3dv9
veEqvuIs3uIu/uIS3t++DeI1IOJocOPv/QqhYN8w3uM+/uNAHuQRYN83gAwfQMnv
gAZHsOCv4A5C/uRQHuVSbtrIANIzoOQJPgmvEAhT3uVe/uUZXuT1UOOAguVooOVO
DuY+XgJs3uZu/uZw3uZq7uPZUOWqfARLfuavUABTHud+/ueAHuiCPuhwPuUcYOcI
/43nN67lfK7ihP7okB7pkj7pf77ih64M9YznS87oE07pkT4NoD4NGjDqpF7qpn7q
qJ7qqq4BoQ7qnv7oE84BRYDpia7ok9AIY/DqbA7qq97rvv7rwB7sqh7quu4AeF3r
m47rgN7qwm7qgfDs0B7t0j7t1O4O1n7t2E7t2r7t0d7spd7qgG7smI64sKDpZ47r
vB7s3C7t2N7u7v7u8B7v8j7v8r7u3R7soC7ukIC45XAEdoDntw4FpW7v7E7v9F4A
CJ/wCr/wDN/wDu/wBk/vz37t264Bz17qEaAKYb3YdvDvS94IrVDtEd/uD7/wY3Dy
KJ/yKr/yLN/yLu/yJa/wI//f7tQeAVig3Onb8f9+660w8iX/8kAf9EI/9EQP9CU/
8jYf1gauAjr/8aSA7Q5f9C0PBVRf9VZ/9Vif9Vq/9Vy/9VLP8hBv7XzOCjjP9B2/
6XGQ8EXf9Wzf9m7/9nAf90Wf8KHAChNp4DGg83Zw5pvw8nH/91QvDoI/+IRf+IZ/
+Ih/+IAv9y5f933wAXiv93w/Bouv9YlP+BmQ+Zq/+Zzf+Z7/+aDv+Zc/+JWf9WMw
DXbvCpGv82fOD28/+qEf+7I/+7Rf+6A/+m+P+p4A+S5gCXagA2c/Ca5/9Zdv+8Z/
/Mif/LWf+FjvDnYP+Ubg+8C/88lQ+Mr/+d6Q/dq//dz/3/3e//3gH/7in/3XL/qE
XwDPT+Y6sP7/jgbJcP3jr/3dMP/0X//2f//4n//6v//4DxDeBA4kWDDDQYQJFS7M
UOATsg81pljSUdHOkUnJGCos2HFgN5AhRY4cV9LkSZQpVa5kyXLkS5EePW5MWCAN
RIkULdpBo/GgTG8wX7I8V9ToUaMWlC5l2tTpU6hOkU4t6lJoSKDeEPr5BOMDpIkV
Kx5B46bjVZVUi0Zl29btW7hN1Z5TebXjmDReweq0WBbmSapxobohXNjwYcSJFS9e
LPgp1ZMwW93ssFesDp5uACMVzNjzZ9ChRTeOO/XkZBjKIBnhixlNHQtr3Y6mXbjO
/23cuXXv5p27du23RuOkwVKZ9eWLsJ/+Ttzb+XPo0aXrZo4YKqlQMPKtPmWRbJ04
fsSPJ1/evJ9W6dWnJ9Xe/fv2ceTPp1/f/n38+e/D509q/frzAjwvFCzyicgFS8ia
xA1SpvkBCwgjlHBCCivE4gcMM9RwQw479PBDEEMUkcIHLTRRQhiMcyEGWCaxALsf
UvxgRho/6GDGG3PUsQMee/TxRyCDFHJIIos08sghbczRRhxrpBGSGhAsBxhgkpkm
r8pqMMKIKbb08kswwxRzTDK31NLLM9M0c00j1GyTzTPZLHNOOunsEsEZqKTSjx88
OdCScgItRw1CCzX0UEIFVWV0UUFjcPRRSCOVdFJKK7W0UkYzDRRRTg1VdAZQQ50h
DU9Ws0RUVEUtBxZWW3XV1U41lXVWWmu1ddFOX9X11VR7FfWH7QKYQlhihzW2WGID
UHZZZut09lloo6WTWWq5RPZYbK8NCAA7
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=left_button_RN.png
Content-Type: image/png; name=left_button_RN.png
Content-Location: http://support.microsoft.com/library/images/support/cs/left_button_RN.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABMAAAAPCAYAAAAGRPQsAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZhJREFUeNqM00soRFEYwPE715C3FBbK
wsajPMJCWZCiZDN5FElSlJJCUSzIQlkoTVlQ8iosRFgp7Iiy8SwSSWJKKM8FJv6n
vtFpujdO/abmnO9+53znftfhcrkMRjkWUYZl4/9jDsVIxqPJTxAGMW2TKBN5iLNY
a4IDHeqPSpaPRPRbBA9hHwMItFh/gRv1CFbJSnCEcy0oAGNoxzwKcGNT6gpikOKU
eg+1RbUwigp8yemn4NRiPOiW9Uu8IkkFhOBaC8yWRIYkqLQ4zT16JNkHvIhQwQ+I
1wLX0IgRKbcXWwjVYt4kiRrh8hI9KtkemuVBrwSM4wkzaMUmVm3uLANhODXlAhNQ
5Be0IH13JSUl2iRrkDu/VCc7kV1Vr21opzNkflXawmGRKAu1qMK3KZNt8lbdNrt/
anfkG7FYwrq0j+FLdoZqtGASUX98RjnYlpao8U2aWoDapVQcowtp0jqqzGhp3gns
4gKF0ia/fWT43VE6OuUt9uFZiw2Tr6UOs/7HdVqUcCfJhpGLVETiFgfYwbtV7T8C
DABehVdpkhJ0NwAAAABJRU5ErkJggg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=right_button_RN.png
Content-Type: image/png; name=right_button_RN.png
Content-Location: http://support.microsoft.com/library/images/support/cs/right_button_RN.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABMAAAAPCAYAAAAGRPQsAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZ1JREFUeNqM00soRGEUwPExM155zBQR
a5HksaKwkAx2U4pSSCysFKWUpiRLoVh5LiyIkJIkRdnYWEh5lZLHWCiP5NUw+J86
U7fbncmp30x3vvnOd8+550Z5vV4bkY5zLKLD9v9oxDxqsWXXH3vxji6LDZkoRb7F
2gJWMQyHJEtEK4bwYbEhFmM4wqDF+gDyUCLJCpGA9TClXKIMG/Bh1LQuh1zA4+Qj
Cw+40cUY9CEZP/rbF/z6La1woxvPun6MXEnmwicChmRyB44IjZe2zGFXr6XfLkl2
pycl4UX7Vq29CsUbavSOv9FsSCSRhitJdqolZeMAQeyY7qRCR+ZVE60Z1uJQIE/V
rsmkge1hSspBvz6IelMim95xKjad2mSZk0mM48TiaXq0PHNE60gty/9CQzuLfawg
xbQhECaRxBQy0CMXoWTSpwatf0+HMFLIgUtoQh2ujckkbnU473GICZTr6Eg58dpo
n86VvGJV2A4lcJpOlDGpRBs60aIzFNR1tx42jRE8Gjc7LUr4xYyWUYwifdmfcKa9
9VvV/ifAALfHXOAgShVQAAAAAElFTkSuQmCC
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=Dynamic_banner_RN_css_style.css
Content-Type: text/css; charset=utf-8; name=Dynamic_banner_RN_css_style.css
Content-Location: http://support.microsoft.com/library/StyleSheet/support/en-GB/Dynamic_banner_RN_css_style.css
Content-Transfer-Encoding: 8bit
 #BrowserInfoBanner
{
position: relative;
}
#BrowserInfoBanner img
{
border: none;
}
.graphic, #slider0prev, #slider0next
{
display: block;
margin: 0;
padding: 0;
}
#slider ul, #slider li,#slider1 ul, #slider1 li
{
list-style: none;
margin: 0;
padding: 0;
}
#slider, #slider1
{
margin-top: 10px;
}
#slider li, #slider1 li
{
width: 165px;
height: 240px;
overflow: hidden;
}
#prevBtn, #nextBtn, #sliderprev, #slidernext, #prev1Btn, #next1Btn, #slider1prev, #slider1next
{
display: inline;
width: 19px;
height: 19px;
/*position:absolute;*/
/* left: 90px;*/
/* top: 271px;*/
/*buttons moved up*/
margin-top: -240px;
text-indent:-8000px;
overflow: hidden;
}
#prevBtn, #sliderprev, #prev1Btn, #slider1prev
{
/*new style*/
position:absolute;
right:32px;
}
#nextBtn, #slidernext, #next1Btn, #slider1next
{
/* left: 140px;*/
position:absolute;
right:12px;
}
#prevBtn a, #sliderprev a, #prev1Btn a, #slider1prev a
{
display:block;position:relative;width:19px;height:19px;background:url(http://support.microsoft.com/library/images/support/cs/left_button_RN.png) no-repeat 0 0;
}
#nextBtn a, #slidernext a,#next1Btn a, #slider1next a
{
display:block;position:relative;width:19px;height:19px;background:url(http://support.microsoft.com/library/images/support/cs/right_button_RN.png) no-repeat 0 0;
}
#prevBtn a:hover, #sliderprev a:hover, #prev1Btn a:hover, #slider1prev a:hover
{
display:block;position:relative;width:19px;height:19px;background:url(http://support.microsoft.com/library/images/support/cs/left_button_hover_RN.png) no-repeat 0 0;
}
#nextBtn a:hover, #slidernext a:hover, #next1Btn a:hover, #slider1next a:hover
{
display:block;position:relative;width:19px;height:19px;background:url(http://support.microsoft.com/library/images/support/cs/right_button_hover_RN.png) no-repeat 0 0;
}
#BrowserInfoBanner ul
{
padding-left:0px;
}
.display_block
{
margin-left:7px!important;
margin-bottom:10px !important;
display:block!important;
}
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=BrowserInfoBanner_Slider_Script.js
Content-Type: application/x-javascript; charset=utf-8; name=BrowserInfoBanner_Slider_Script.js
Content-Location: http://support.microsoft.com/library/JavaScript/support/en-GB/BrowserInfoBanner_Slider_Script.js
Content-Transfer-Encoding: Base64
77u/ICAoZnVuY3Rpb24gKCQpIHsNCiAgICAgICAgJC5mbi5TbGlkZXIgPSBmdW5j
dGlvbiAob3B0aW9ucykgew0KDQogICAgICAgICAgICB2YXIgZGVmYXVsdHMgPSB7
DQogICAgICAgICAgICAgICAgcHJldklkOiAncHJldkJ0bicsDQogICAgICAgICAg
ICAgICAgcHJldlRleHQ6ICdQcmV2aW91cycsDQogICAgICAgICAgICAgICAgbmV4
dElkOiAnbmV4dEJ0bicsDQogICAgICAgICAgICAgICAgbmV4dFRleHQ6ICdOZXh0
JywNCiAgICAgICAgICAgICAgICBjb250cm9sc1Nob3c6IHRydWUsDQogICAgICAg
ICAgICAgICAgY29udHJvbHNCZWZvcmU6ICcnLA0KICAgICAgICAgICAgICAgIGNv
bnRyb2xzQWZ0ZXI6ICcnLA0KICAgICAgICAgICAgICAgIGNvbnRyb2xzRmFkZTog
dHJ1ZSwNCiAgICAgICAgICAgICAgICBmaXJzdElkOiAnZmlyc3RCdG4nLA0KICAg
ICAgICAgICAgICAgIGZpcnN0VGV4dDogJ0ZpcnN0JywNCiAgICAgICAgICAgICAg
ICBmaXJzdFNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICAgIGxhc3RJZDogJ2xh
c3RCdG4nLA0KICAgICAgICAgICAgICAgIGxhc3RUZXh0OiAnTGFzdCcsDQogICAg
ICAgICAgICAgICAgbGFzdFNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICAgIHZl
cnRpY2FsOiBmYWxzZSwNCiAgICAgICAgICAgICAgICBzcGVlZDogODAwLA0KICAg
ICAgICAgICAgICAgIGF1dG86IGZhbHNlLA0KICAgICAgICAgICAgICAgIHBhdXNl
OiA1MDAwLA0KICAgICAgICAgICAgICAgIGNvbnRpbnVvdXM6IGZhbHNlLA0KICAg
ICAgICAgICAgICAgIG51bWVyaWM6IGZhbHNlLA0KICAgICAgICAgICAgICAgIG51
bWVyaWNJZDogJ2NvbnRyb2xzJw0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAg
ICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZChkZWZhdWx0cywgb3B0aW9ucyk7DQoN
CiAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgdmFyIG9iaiA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgdmFyIHMg
PSAkKCJsaSIsIG9iaikubGVuZ3RoOw0KICAgICAgICAgICAgICAgIHZhciB3ID0g
JCgibGkiLCBvYmopLndpZHRoKCk7DQogICAgICAgICAgICAgICAgdmFyIGggPSAk
KCJsaSIsIG9iaikuaGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgdmFyIGNsaWNr
YWJsZSA9IHRydWU7DQogICAgICAgICAgICAgICAgb2JqLndpZHRoKHcpOw0KICAg
ICAgICAgICAgICAgIG9iai5oZWlnaHQoaCk7DQogICAgICAgICAgICAgICAgb2Jq
LmNzcygib3ZlcmZsb3ciLCAiaGlkZGVuIik7DQogICAgICAgICAgICAgICAgdmFy
IHRzID0gcyAtIDE7DQogICAgICAgICAgICAgICAgdmFyIHQgPSAwOw0KICAgICAg
ICAgICAgICAgICQoInVsIiwgb2JqKS5jc3MoJ3dpZHRoJywgcyAqIHcpOw0KDQog
ICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGludW91cykgew0KICAgICAg
ICAgICAgICAgICAgICAkKCJ1bCIsIG9iaikucHJlcGVuZCgkKCJ1bCBsaTpsYXN0
LWNoaWxkIiwgb2JqKS5jbG9uZSgpLmNzcygibWFyZ2luLWxlZnQiLCAiLSIgKyB3
ICsgInB4IikpOw0KICAgICAgICAgICAgICAgICAgICAkKCJ1bCIsIG9iaikuYXBw
ZW5kKCQoInVsIGxpOm50aC1jaGlsZCgyKSIsIG9iaikuY2xvbmUoKSk7DQogICAg
ICAgICAgICAgICAgICAgICQoInVsIiwgb2JqKS5jc3MoJ3dpZHRoJywgKHMgKyAx
KSAqIHcpOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBp
ZiAoIW9wdGlvbnMudmVydGljYWwpICQoImxpIiwgb2JqKS5jc3MoJ2Zsb2F0Jywg
J2xlZnQnKTsNCg0KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRyb2xz
U2hvdykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IG9wdGlvbnMu
Y29udHJvbHNCZWZvcmU7DQogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25z
Lm51bWVyaWMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxv
bCBpZD0iJyArIG9wdGlvbnMubnVtZXJpY0lkICsgJyI+PC9vbD4nOw0KICAgICAg
ICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG9wdGlvbnMuZmlyc3RTaG93KSBodG1sICs9ICc8c3BhbiBpZD0iJyArIG9w
dGlvbnMuZmlyc3RJZCArICciPjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7
XCI+JyArIG9wdGlvbnMuZmlyc3RUZXh0ICsgJzwvYT48L3NwYW4+JzsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJyA8c3BhbiBpZD0iJyArIG9wdGlv
bnMucHJldklkICsgJyI+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj4n
ICsgb3B0aW9ucy5wcmV2VGV4dCArICc8L2E+PC9zcGFuPic7DQogICAgICAgICAg
ICAgICAgICAgICAgICBodG1sICs9ICcgPHNwYW4gaWQ9IicgKyBvcHRpb25zLm5l
eHRJZCArICciPjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+JyArIG9w
dGlvbnMubmV4dFRleHQgKyAnPC9hPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9wdGlvbnMubGFzdFNob3cpIGh0bWwgKz0gJyA8c3BhbiBp
ZD0iJyArIG9wdGlvbnMubGFzdElkICsgJyI+PGEgaHJlZj1cImphdmFzY3JpcHQ6
dm9pZCgwKTtcIj4nICsgb3B0aW9ucy5sYXN0VGV4dCArICc8L2E+PC9zcGFuPic7
DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAg
aHRtbCArPSBvcHRpb25zLmNvbnRyb2xzQWZ0ZXI7DQogICAgICAgICAgICAgICAg
ICAgICQob2JqKS5hZnRlcihodG1sKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQog
ICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubnVtZXJpYykgew0KICAgICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIp
KQ0KCQkJCQkJLmF0dHIoJ2lkJywgb3B0aW9ucy5udW1lcmljSWQgKyAoaSArIDEp
KQ0KCQkJCQkJLmh0bWwoJzxhIHJlbD0nICsgaSArICcgaHJlZj1cImphdmFzY3Jp
cHQ6dm9pZCgwKTtcIj4nICsgKGkgKyAxKSArICc8L2E+JykNCgkJCQkJCS5hcHBl
bmRUbygkKCIjIiArIG9wdGlvbnMubnVtZXJpY0lkKSkNCgkJCQkJCS5jbGljayhm
dW5jdGlvbiAoKSB7DQoJCQkJCQkgICAgYW5pbWF0ZSgkKCJhIiwgJCh0aGlzKSku
YXR0cigncmVsJyksIHRydWUpOw0KCQkJCQkJfSk7DQogICAgICAgICAgICAgICAg
ICAgIH07DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg
ICAgICAgJCgiYSIsICIjIiArIG9wdGlvbnMubmV4dElkKS5jbGljayhmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKCJuZXh0Iiwg
dHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAg
ICAgICAkKCJhIiwgIiMiICsgb3B0aW9ucy5wcmV2SWQpLmNsaWNrKGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoInByZXYiLCB0
cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAg
ICAgICQoImEiLCAiIyIgKyBvcHRpb25zLmZpcnN0SWQpLmNsaWNrKGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoImZpcnN0Iiwg
dHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAg
ICAgICAkKCJhIiwgIiMiICsgb3B0aW9ucy5sYXN0SWQpLmNsaWNrKGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoImxhc3QiLCB0
cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAg
fTsNCg0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNldEN1cnJlbnQoaSkgew0K
ICAgICAgICAgICAgICAgICAgICBpID0gcGFyc2VJbnQoaSkgKyAxOw0KICAgICAg
ICAgICAgICAgICAgICAkKCJsaSIsICIjIiArIG9wdGlvbnMubnVtZXJpY0lkKS5y
ZW1vdmVDbGFzcygiY3VycmVudCIpOw0KICAgICAgICAgICAgICAgICAgICAkKCJs
aSMiICsgb3B0aW9ucy5udW1lcmljSWQgKyBpKS5hZGRDbGFzcygiY3VycmVudCIp
Ow0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBmdW5jdGlv
biBhZGp1c3QoKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0ID4gdHMpIHQg
PSAwOw0KICAgICAgICAgICAgICAgICAgICBpZiAodCA8IDApIHQgPSB0czsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnZlcnRpY2FsKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAkKCJ1bCIsIG9iaikuY3NzKCJtYXJnaW4tbGVm
dCIsICh0ICogdyAqIC0xKSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICAgICAgICAgICAgICAkKCJ1bCIsIG9iaikuY3NzKCJtYXJn
aW4tbGVmdCIsICh0ICogaCAqIC0xKSk7DQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxlID0gdHJ1ZTsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKG9wdGlvbnMubnVtZXJpYykgc2V0Q3VycmVudCh0KTsN
CiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgZnVuY3Rpb24g
YW5pbWF0ZShkaXIsIGNsaWNrZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KGNsaWNrYWJsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxl
ID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3QgPSB0Ow0K
ICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkaXIpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICJuZXh0IjoNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdCA9IChvdCA+PSB0cykgPyAob3B0aW9ucy5jb250
aW51b3VzID8gdCArIDEgOiB0cykgOiB0ICsgMTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAicHJldiI6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHQgPSAodCA8PSAwKSA/IChvcHRpb25zLmNvbnRpbnVvdXMgPyB0IC0gMSA6IDAp
IDogdCAtIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZpcnN0IjoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDA7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgImxhc3QiOg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ID0gdHM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBkaXI7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaWZmID0g
TWF0aC5hYnMob3QgLSB0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBz
cGVlZCA9IGRpZmYgKiBvcHRpb25zLnNwZWVkOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFvcHRpb25zLnZlcnRpY2FsKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcCA9ICh0ICogdyAqIC0xKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkKCJ1bCIsIG9iaikuYW5pbWF0ZSgNCgkJCQkJCQl7IG1hcmdp
bkxlZnQ6IHAgfSwNCgkJCQkJCQl7IHF1ZXVlOiBmYWxzZSwgZHVyYXRpb246IHNw
ZWVkLCBjb21wbGV0ZTogYWRqdXN0IH0NCgkJCQkJCSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHAgPSAodCAqIGggKiAtMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
JCgidWwiLCBvYmopLmFuaW1hdGUoDQoJCQkJCQkJeyBtYXJnaW5Ub3A6IHAgfSwN
CgkJCQkJCQl7IHF1ZXVlOiBmYWxzZSwgZHVyYXRpb246IHNwZWVkLCBjb21wbGV0
ZTogYWRqdXN0IH0NCgkJCQkJCSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9
Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuY29udGlu
dW91cyAmJiBvcHRpb25zLmNvbnRyb2xzRmFkZSkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ID09IHRzKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQoImEiLCAiIyIgKyBvcHRpb25zLm5leHRJZCkuaGlkZSgp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCJhIiwgIiMiICsg
b3B0aW9ucy5sYXN0SWQpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
KCJhIiwgIiMiICsgb3B0aW9ucy5uZXh0SWQpLnNob3coKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJCgiYSIsICIjIiArIG9wdGlvbnMubGFzdElk
KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9PSAwKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQoImEiLCAiIyIgKyBvcHRpb25zLnByZXZJ
ZCkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCJh
IiwgIiMiICsgb3B0aW9ucy5maXJzdElkKS5oaWRlKCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJCgiYSIsICIjIiArIG9wdGlvbnMucHJldklkKS5zaG93KCk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoImEiLCAiIyIgKyBvcHRp
b25zLmZpcnN0SWQpLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNsaWNrZWQpIGNsZWFyVGltZW91dCh0aW1lb3V0KTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmF1dG8gJiYgZGly
ID09ICJuZXh0IiAmJiAhY2xpY2tlZCkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0g
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuaW1hdGUoIm5leHQiLCBmYWxzZSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwgZGlmZiAqIG9wdGlvbnMuc3BlZWQgKyBvcHRpb25z
LnBhdXNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAg
ICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAg
ICAgICAgLy8gaW5pdA0KICAgICAgICAgICAgICAgIHZhciB0aW1lb3V0Ow0KICAg
ICAgICAgICAgICAgIGlmIChvcHRpb25zLmF1dG8pIHsNCiAgICAgICAgICAgICAg
ICAgICAgOw0KICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRl
KCJuZXh0IiwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICB9LCBvcHRpb25z
LnBhdXNlKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAg
aWYgKG9wdGlvbnMubnVtZXJpYykgc2V0Q3VycmVudCgwKTsNCg0KICAgICAgICAg
ICAgICAgIGlmICghb3B0aW9ucy5jb250aW51b3VzICYmIG9wdGlvbnMuY29udHJv
bHNGYWRlKSB7DQogICAgICAgICAgICAgICAgICAgICQoImEiLCAiIyIgKyBvcHRp
b25zLnByZXZJZCkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAkKCJhIiwg
IiMiICsgb3B0aW9ucy5maXJzdElkKS5oaWRlKCk7DQogICAgICAgICAgICAgICAg
fTsNCg0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgfTsNCg0KICAgIH0pKGpR
dWVyeSk7
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=BrowserInfoBanner_Detect_Script.js
Content-Type: application/x-javascript; charset=utf-8; name=BrowserInfoBanner_Detect_Script.js
Content-Location: http://support.microsoft.com/library/JavaScript/support/en-GB/BrowserInfoBanner_Detect_Script.js
Content-Transfer-Encoding: Base64
ZnVuY3Rpb24gaW5pdFNsaWRlcihzbGQsIG5leHQsIHByZXYpIHsNCiAgICAgICAg
JChzbGQpLlNsaWRlcih7DQogICAgICAgICAgICBhdXRvOiB0cnVlLA0KICAgICAg
ICAgICAgY29udGludW91czogdHJ1ZQ0KICAgICAgICB9KTsNCiAgICB9Ow0KDQog
ICAgLyogQnJvd3NlciBEZXRlY3QgU2NyaXB0ICovDQoNCiAgICB2YXIgQnJvd3Nl
ckRldGVjdCA9IHsNCg0KICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICB0aGlzLmJyb3dzZXIgPSB0aGlzLnNlYXJjaFN0cmluZyh0aGlzLmRh
dGFCcm93c2VyKSB8fCAiQW4gdW5rbm93biBicm93c2VyIjsNCiAgICAgICAgICAg
IHRoaXMudmVyc2lvbiA9IHRoaXMuc2VhcmNoVmVyc2lvbihuYXZpZ2F0b3IudXNl
ckFnZW50KQ0KCQkJfHwgdGhpcy5zZWFyY2hWZXJzaW9uKG5hdmlnYXRvci5hcHBW
ZXJzaW9uKQ0KCQkJfHwgImFuIHVua25vd24gdmVyc2lvbiI7DQoNCiAgICAgICAg
ICAgIGlmICh0aGlzLmJyb3dzZXIgPT0gIkludGVybmV0IEV4cGxvcmVyIiAmJiB0
aGlzLnZlcnNpb24gPT0gNyAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2Yo
J1RyaWRlbnQvNi4wJykgIT0gLTEpDQogICAgICAgICAgICAgICAgdGhpcy52ZXJz
aW9uID0gMTA7ICAgLyogQ29tcGF0aWJpbGl0eSBNb2RlICovDQoNCiAgICAgICAg
ICAgIHRoaXMuT1MgPSB0aGlzLnNlYXJjaFN0cmluZyh0aGlzLmRhdGFPUykgfHwg
ImFuIHVua25vd24gT1MiOw0KICAgICAgICAgICAgdGhpcy5PU1ZlcnNpb24gPSB0
aGlzLnNlYXJjaFN0cmluZyh0aGlzLmRhdGFPU1ZlcnNpb24pIHx8ICJhbiB1bmtu
b3duIE9TVmVyc2lvbiI7DQogICAgICAgIH0sDQoNCiAgICAgICAgc2VhcmNoU3Ry
aW5nOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFy
IGRhdGFTdHJpbmcgPSBkYXRhW2ldLnN0cmluZzsNCiAgICAgICAgICAgICAgICB2
YXIgZGF0YVByb3AgPSBkYXRhW2ldLnByb3A7DQogICAgICAgICAgICAgICAgdGhp
cy52ZXJzaW9uU2VhcmNoU3RyaW5nID0gZGF0YVtpXS52ZXJzaW9uU2VhcmNoIHx8
IGRhdGFbaV0uaWRlbnRpdHk7DQogICAgICAgICAgICAgICAgaWYgKGRhdGFTdHJp
bmcpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFTdHJpbmcuaW5kZXhP
ZihkYXRhW2ldLnN1YlN0cmluZykgIT0gLTEpDQogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZGF0YVtpXS5pZGVudGl0eTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVByb3ApDQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBkYXRhW2ldLmlkZW50aXR5Ow0KICAgICAgICAgICAg
fQ0KICAgICAgICB9LA0KDQogICAgICAgIHNlYXJjaFZlcnNpb246IGZ1bmN0aW9u
IChkYXRhU3RyaW5nKSB7DQogICAgICAgICAgICB2YXIgaW5kZXggPSBkYXRhU3Ry
aW5nLmluZGV4T2YodGhpcy52ZXJzaW9uU2VhcmNoU3RyaW5nKTsNCiAgICAgICAg
ICAgIGlmIChpbmRleCA9PSAtMSkgcmV0dXJuOw0KICAgICAgICAgICAgcmV0dXJu
IHBhcnNlRmxvYXQoZGF0YVN0cmluZy5zdWJzdHJpbmcoaW5kZXggKyB0aGlzLnZl
cnNpb25TZWFyY2hTdHJpbmcubGVuZ3RoICsgMSkpOw0KICAgICAgICB9LA0KDQog
ICAgICAgIGRhdGFCcm93c2VyOiBbDQoJCXsNCgkJICAgIHN0cmluZzogbmF2aWdh
dG9yLnVzZXJBZ2VudCwNCgkJICAgIHN1YlN0cmluZzogIkNocm9tZSIsDQoJCSAg
ICBpZGVudGl0eTogIkNocm9tZSINCgkJfSwNCgkJeyBzdHJpbmc6IG5hdmlnYXRv
ci51c2VyQWdlbnQsDQoJCSAgICBzdWJTdHJpbmc6ICJPbW5pV2ViIiwNCgkJICAg
IHZlcnNpb25TZWFyY2g6ICJPbW5pV2ViLyIsDQoJCSAgICBpZGVudGl0eTogIk9t
bmlXZWIiDQoJCX0sDQoJCXsNCgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnZlbmRv
ciwNCgkJICAgIHN1YlN0cmluZzogIkFwcGxlIiwNCgkJICAgIGlkZW50aXR5OiAi
U2FmYXJpIiwNCgkJICAgIHZlcnNpb25TZWFyY2g6ICJWZXJzaW9uIg0KCQl9LA0K
CQl7DQoJCSAgICBwcm9wOiB3aW5kb3cub3BlcmEsDQoJCSAgICBpZGVudGl0eTog
Ik9wZXJhIg0KCQl9LA0KCQl7DQoJCSAgICBzdHJpbmc6IG5hdmlnYXRvci52ZW5k
b3IsDQoJCSAgICBzdWJTdHJpbmc6ICJpQ2FiIiwNCgkJICAgIGlkZW50aXR5OiAi
aUNhYiINCgkJfSwNCgkJew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IudmVuZG9y
LA0KCQkgICAgc3ViU3RyaW5nOiAiS0RFIiwNCgkJICAgIGlkZW50aXR5OiAiS29u
cXVlcm9yIg0KCQl9LA0KCQl7DQoJCSAgICBzdHJpbmc6IG5hdmlnYXRvci51c2Vy
QWdlbnQsDQoJCSAgICBzdWJTdHJpbmc6ICJGaXJlZm94IiwNCgkJICAgIGlkZW50
aXR5OiAiRmlyZWZveCINCgkJfSwNCgkJew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0
b3IudmVuZG9yLA0KCQkgICAgc3ViU3RyaW5nOiAiQ2FtaW5vIiwNCgkJICAgIGlk
ZW50aXR5OiAiQ2FtaW5vIg0KCQl9LA0KCQl7CQkvKiBmb3IgbmV3ZXIgTmV0c2Nh
cGVzICg2KykqLw0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LA0K
CQkgICAgc3ViU3RyaW5nOiAiTmV0c2NhcGUiLA0KCQkgICAgaWRlbnRpdHk6ICJO
ZXRzY2FwZSINCgkJfSwNCgkJew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNl
ckFnZW50LA0KCQkgICAgc3ViU3RyaW5nOiAiTVNJRSIsDQoJCSAgICBpZGVudGl0
eTogIkludGVybmV0IEV4cGxvcmVyIiwNCgkJICAgIHZlcnNpb25TZWFyY2g6ICJN
U0lFIg0KCQl9LA0KCQl7DQoJCSAgICBzdHJpbmc6IG5hdmlnYXRvci51c2VyQWdl
bnQsDQoJCSAgICBzdWJTdHJpbmc6ICJHZWNrbyIsDQoJCSAgICBpZGVudGl0eTog
Ik1vemlsbGEiLA0KCQkgICAgdmVyc2lvblNlYXJjaDogInJ2Ig0KCQl9LA0KCQl7
IAkvKiBmb3Igb2xkZXIgTmV0c2NhcGVzICg0LSkqLw0KCQkgICAgc3RyaW5nOiBu
YXZpZ2F0b3IudXNlckFnZW50LA0KCQkgICAgc3ViU3RyaW5nOiAiTW96aWxsYSIs
DQoJCSAgICBpZGVudGl0eTogIk5ldHNjYXBlIiwNCgkJICAgIHZlcnNpb25TZWFy
Y2g6ICJNb3ppbGxhIg0KCQl9DQoJXSwNCiAgICAgICAgZGF0YU9TOiBbDQoJCXsN
CgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnBsYXRmb3JtLA0KCQkgICAgc3ViU3Ry
aW5nOiAiV2luIiwNCgkJICAgIGlkZW50aXR5OiAiV2luZG93cyINCgkJfSwNCgkJ
ew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IucGxhdGZvcm0sDQoJCSAgICBzdWJT
dHJpbmc6ICJNYWMiLA0KCQkgICAgaWRlbnRpdHk6ICJNYWMiDQoJCX0sDQoJCXsN
CgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwNCgkJICAgIHN1YlN0
cmluZzogImlQaG9uZSIsDQoJCSAgICBpZGVudGl0eTogImlQaG9uZS9pUG9kIg0K
CQl9LA0KCQl7DQoJCSAgICBzdHJpbmc6IG5hdmlnYXRvci5wbGF0Zm9ybSwNCgkJ
ICAgIHN1YlN0cmluZzogIkxpbnV4IiwNCgkJICAgIGlkZW50aXR5OiAiTGludXgi
DQoJCX0NCgldLA0KICAgICAgICBkYXRhT1NWZXJzaW9uOiBbDQoJCXsNCgkJICAg
IHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwNCgkJICAgIHN1YlN0cmluZzog
IldpbmRvd3MgOTUiLA0KCQkgICAgaWRlbnRpdHk6ICJXaW5kb3dzIDk1IE9TUjIi
DQoJCX0sDQoJCXsNCgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwN
CgkJICAgIHN1YlN0cmluZzogIldpbmRvd3MgOTgiLA0KCQkgICAgaWRlbnRpdHk6
ICJXaW5kb3dzIDk4Ig0KCQl9LA0KCQl7DQoJCSAgICBzdHJpbmc6IG5hdmlnYXRv
ci51c2VyQWdlbnQsDQoJCSAgICBzdWJTdHJpbmc6ICJXaW5kb3dzIE5UIDUuMCIs
DQoJCSAgICBpZGVudGl0eTogIldpbmRvd3MgMjAwMCBQcm9mZXNzaW9uYWwiDQoJ
CX0sDQoJCXsNCgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwNCgkJ
ICAgIHN1YlN0cmluZzogIldpbmRvd3MgTlQgNS4xIiwNCgkJICAgIGlkZW50aXR5
OiAiV2luZG93cyBYUCBQcm9mZXNzaW9uYWwiDQoJCX0sDQoJCXsNCgkJICAgIHN0
cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwNCgkJICAgIHN1YlN0cmluZzogIldp
bmRvd3MgTlQgNS4yIiwNCgkJICAgIGlkZW50aXR5OiAiV2luZG93cyAyMDAzIFNl
cnZlciINCgkJfSwNCgkJew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFn
ZW50LA0KCQkgICAgc3ViU3RyaW5nOiAiV2luZG93cyBOVCA2LjAiLA0KCQkgICAg
aWRlbnRpdHk6ICJXaW5kb3dzIFZpc3RhIg0KCQl9LA0KCQl7DQoJCSAgICBzdHJp
bmc6IG5hdmlnYXRvci51c2VyQWdlbnQsDQoJCSAgICBzdWJTdHJpbmc6ICJXaW5k
b3dzIE5UIDYuMSIsDQoJCSAgICBpZGVudGl0eTogIldpbmRvd3MgNyINCgkJfSwN
CgkJew0KCQkgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LA0KCQkgICAg
c3ViU3RyaW5nOiAiV2luZG93cyBOVCA2LjIiLA0KCQkgICAgaWRlbnRpdHk6ICJX
aW5kb3dzIDgiDQoJCX0sDQoJCXsNCgkJICAgIHN0cmluZzogbmF2aWdhdG9yLnVz
ZXJBZ2VudCwNCgkJICAgIHN1YlN0cmluZzogIk1hY19Qb3dlclBDIiwNCgkJICAg
IGlkZW50aXR5OiAiTWFjIE9TIDkuMiINCgkJfQ0KCV0NCg0KICAgIH07
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=dynamic_banner_rn_init_script.js
Content-Type: application/x-javascript; charset=utf-8; name=dynamic_banner_rn_init_script.js
Content-Location: http://support.microsoft.com/library/JavaScript/Support/EN-GB/dynamic_banner_rn_init_script.js
Content-Transfer-Encoding: Base64
77u/DQpmdW5jdGlvbiBCcm93c2VpbmZvYmFubmVyKCkgew0KDQogICAgQnJvd3Nl
ckRldGVjdC5pbml0KCk7DQogICAgDQogICAgLyogaWUxMCxpZTkgYW5kIGxvd2Vy
LCBvdGhlciBicm93c2VycyAtICB3aW44ICovDQogICAgDQogICAgaWYgKEJyb3dz
ZXJEZXRlY3QuT1MgPT0gIldpbmRvd3MiICYmIChCcm93c2VyRGV0ZWN0Lk9TVmVy
c2lvbiA9PSAiV2luZG93cyA4IikpIHsNCiAgICAgICAgaWYgKEJyb3dzZXJEZXRl
Y3QuYnJvd3NlciA9PSAiSW50ZXJuZXQgRXhwbG9yZXIiICYmIEJyb3dzZXJEZXRl
Y3QudmVyc2lvbiA+PSAxMCkgew0KICAgICAgICAgICAgcmV0dXJuICdpZTEwX3dp
bjgnOw0KICAgICAgICB9IGVsc2UgaWYgKChCcm93c2VyRGV0ZWN0LmJyb3dzZXIg
PT0gIkludGVybmV0IEV4cGxvcmVyIiAmJiBCcm93c2VyRGV0ZWN0LnZlcnNpb24g
PD0gOSkgfHwgKEJyb3dzZXJEZXRlY3QuYnJvd3NlciAhPSAiSW50ZXJuZXQgRXhw
bG9yZXIiKSkgew0KICAgICAgICAgICAgcmV0dXJuICdpZTlfbG93ZXJfcmVzdF93
aW44JzsNCiAgICAgICAgfTsNCiAgICB9Ow0KDQogICAgLyppZTksIGllOCwgaWU3
IGFuZCBvdGhlciBicm93c2VycyAtIHdpbiA4ICwgd2luNyBhbmQgdmlzdGEgKi8N
Cg0KICAgIGlmIChCcm93c2VyRGV0ZWN0Lk9TID09ICJXaW5kb3dzIiAmJiAoQnJv
d3NlckRldGVjdC5PU1ZlcnNpb24gPT0gIldpbmRvd3MgNyIgfHwgQnJvd3NlckRl
dGVjdC5PU1ZlcnNpb24gPT0gIldpbmRvd3MgVmlzdGEiKSkgew0KICAgICAgICBp
ZiAoQnJvd3NlckRldGVjdC5icm93c2VyID09ICJJbnRlcm5ldCBFeHBsb3JlciIg
JiYgQnJvd3NlckRldGVjdC52ZXJzaW9uID49IDkpIHsNCiAgICAgICAgICAgIHJl
dHVybiAnaWU5X3dpbjdfdmlzdGEnOw0KICAgICAgICB9IGVsc2UgaWYgKChCcm93
c2VyRGV0ZWN0LmJyb3dzZXIgPT0gIkludGVybmV0IEV4cGxvcmVyIiAmJiBCcm93
c2VyRGV0ZWN0LnZlcnNpb24gPD0gOCkgfHwgKEJyb3dzZXJEZXRlY3QuYnJvd3Nl
ciAhPSAiSW50ZXJuZXQgRXhwbG9yZXIiKSkgew0KICAgICAgICAgICAgcmV0dXJu
ICdpZThfaWU3X2FuZF9vdGhlcl9icm93c2Vyc193aW43X3Zpc3RhJzsNCiAgICAg
ICAgfTsNCiAgICB9Ow0KICAgICAgICAvKiBYUCBvbmx5IC0gaWU4LCBpZTcgYW5k
IGxvd2VyICovDQoNCiAgICBpZiAoQnJvd3NlckRldGVjdC5PUyA9PSAiV2luZG93
cyIgJiYgKEJyb3dzZXJEZXRlY3QuT1NWZXJzaW9uID09ICJXaW5kb3dzIFhQIFBy
b2Zlc3Npb25hbCIpKSB7DQogICAgICAgIGlmIChCcm93c2VyRGV0ZWN0LmJyb3dz
ZXIgPT0gIkludGVybmV0IEV4cGxvcmVyIiAmJiBCcm93c2VyRGV0ZWN0LnZlcnNp
b24gPT0gOCkgew0KICAgICAgICAgICAgcmV0dXJuICdpZThfd2lueHBfb25seSc7
DQogICAgICAgIH0gZWxzZSBpZiAoKEJyb3dzZXJEZXRlY3QuYnJvd3NlciA9PSAi
SW50ZXJuZXQgRXhwbG9yZXIiICYmIEJyb3dzZXJEZXRlY3QudmVyc2lvbiA8PSA3
KSB8fCAoQnJvd3NlckRldGVjdC5icm93c2VyICE9ICJJbnRlcm5ldCBFeHBsb3Jl
ciIpKSB7DQogICAgICAgICAgICByZXR1cm4gJ2llN19hbmRfb3RoZXJfYnJvd3Nl
cnNfd2lueHBfb25seSc7DQogICAgICAgIH07DQogICAgfTsNCg0KICAgIC8qaWU4
LCBpZTcgYW5kIGxvd2VyLCBvdGhlciBicm93c2VycyAtIG90aGVyIHdpbmRvd3Mq
Lw0KDQogICAgaWYgKEJyb3dzZXJEZXRlY3QuT1MgPT0gIldpbmRvd3MiICYmIChC
cm93c2VyRGV0ZWN0Lk9TVmVyc2lvbiAhPSAiV2luZG93cyBYUCBQcm9mZXNzaW9u
YWwiICYmIEJyb3dzZXJEZXRlY3QuT1NWZXJzaW9uICE9ICJXaW5kb3dzIFZpc3Rh
IiAmJiBCcm93c2VyRGV0ZWN0Lk9TVmVyc2lvbiAhPSAiV2luZG93cyA3IiAmJiBC
cm93c2VyRGV0ZWN0Lk9TVmVyc2lvbiAhPSAiV2luZG93cyA4IikpIHsNCiAgICAg
ICAgaWYgKEJyb3dzZXJEZXRlY3QuYnJvd3NlciA9PSAiSW50ZXJuZXQgRXhwbG9y
ZXIiICYmIEJyb3dzZXJEZXRlY3QudmVyc2lvbiA9PSA4KSB7DQogICAgICAgICAg
ICByZXR1cm4gJ2llOF9vdGhlcl93aW5kb3dzJzsNCiAgICAgICAgfSBlbHNlIGlm
ICgoQnJvd3NlckRldGVjdC5icm93c2VyID09ICJJbnRlcm5ldCBFeHBsb3JlciIg
JiYgQnJvd3NlckRldGVjdC52ZXJzaW9uIDw9IDcpIHx8IChCcm93c2VyRGV0ZWN0
LmJyb3dzZXIgIT0gIkludGVybmV0IEV4cGxvcmVyIikpIHsNCiAgICAgICAgICAg
IHJldHVybiAnaWU3X2FuZF9vdGhlcl9icm93c2VyX290aGVyX3dpbmRvd3MnOw0K
ICAgICAgICB9Ow0KICAgIH07DQoNCiAgICAvKiBub24gd2luZG93cyAtIGxpbnV4
LCBldGMuKi8NCg0KICAgIGlmICgoQnJvd3NlckRldGVjdC5PUyAhPSAiV2luZG93
cyIpICYmIChCcm93c2VyRGV0ZWN0Lk9TICE9ICJNYWMiKSkgew0KICAgICAgICBy
ZXR1cm4gJ25vbl93aW5kb3dzJzsNCiAgICB9Ow0KICAgIA0KICAgIC8qIG1hYyAq
Lw0KICAgIA0KICAgIGlmIChCcm93c2VyRGV0ZWN0Lk9TID09ICJNYWMiKSB7DQog
ICAgICAgIHJldHVybiAnbWFjX29zJzsNCiAgICB9Ow0KfTsNCg0KZnVuY3Rpb24g
YmFubmVyX2luaXQoKSB7DQogICAgDQogICAgdmFyIGluZm9iYW5uZXIgPSBCcm93
c2VpbmZvYmFubmVyKCk7DQogICAgDQogICAgaWYgKChpbmZvYmFubmVyID09ICdp
ZTEwX3dpbjgnKSB8fCAoaW5mb2Jhbm5lciA9PSAnaWU5X2xvd2VyX3Jlc3Rfd2lu
OCcpIHx8IChpbmZvYmFubmVyID09ICdpZTlfd2luN192aXN0YScpIHx8IChpbmZv
YmFubmVyID09ICdpZThfaWU3X2FuZF9vdGhlcl9icm93c2Vyc193aW43X3Zpc3Rh
JykgfHwgKGluZm9iYW5uZXIgPT0gJ2llOF93aW54cF9vbmx5JykgfHwgKGluZm9i
YW5uZXIgPT0gJ2llN19hbmRfb3RoZXJfYnJvd3NlcnNfd2lueHBfb25seScpIHx8
IChpbmZvYmFubmVyID09ICdpZThfb3RoZXJfd2luZG93cycpIHx8IChpbmZvYmFu
bmVyID09ICdpZTdfYW5kX290aGVyX2Jyb3dzZXJfb3RoZXJfd2luZG93cycpIHx8
IChpbmZvYmFubmVyID09ICdub25fd2luZG93cycpIHx8IChpbmZvYmFubmVyID09
ICdtYWNfb3MnKSl7DQogICAgICAgIA0KICAgICAgICBkb2N1bWVudC53cml0ZShi
YW5uZXJfaGVhZGVyKTsNCiAgICAgICAgICAgIHN3aXRjaCAoaW5mb2Jhbm5lcil7
DQogICAgICAgICAgICAgICAgY2FzZSAnaWUxMF93aW44JzogZG9jdW1lbnQud3Jp
dGUoQnJvd3NlaW5mb2Jhbm5lcl9pZTEwX3dpbjgpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlICdpZTlfbG93ZXJfcmVzdF93aW44JzogZG9jdW1lbnQud3Jp
dGUoQnJvd3NlaW5mb2Jhbm5lcl9pZTlfcmVzdF93aW44KTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgY2FzZSAnaWU5X3dpbjdfdmlzdGEnOiBkb2N1bWVudC53cml0
ZShCcm93c2VpbmZvYmFubmVyX2llOV93aW43X3Zpc3RhKTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgY2FzZSAnaWU4X2llN19hbmRfb3RoZXJfYnJvd3NlcnNfd2lu
N192aXN0YSc6IGRvY3VtZW50LndyaXRlKEJyb3dzZWluZm9iYW5uZXJfaWU4X3Jl
c3Rfd2luN192aXN0YSk7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ2ll
OF93aW54cF9vbmx5JzogZG9jdW1lbnQud3JpdGUoQnJvd3NlaW5mb2Jhbm5lcl9p
ZThfd2lueHApOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdpZTdfYW5k
X290aGVyX2Jyb3dzZXJzX3dpbnhwX29ubHknOiBkb2N1bWVudC53cml0ZShCcm93
c2VpbmZvYmFubmVyX2llN19yZXN0X3dpbnhwKTsgYnJlYWs7DQogICAgICAgICAg
ICAgICAgY2FzZSAnaWU4X290aGVyX3dpbmRvd3MnOiBkb2N1bWVudC53cml0ZShC
cm93c2VpbmZvYmFubmVyX2llOF9vdGhlcl93aW4pOyBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlICdpZTdfYW5kX290aGVyX2Jyb3dzZXJfb3RoZXJfd2luZG93
cyc6IGRvY3VtZW50LndyaXRlKEJyb3dzZWluZm9iYW5uZXJfaWU3X3Jlc3Rfb3Ro
ZXJfd2luKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnbm9uX3dpbmRv
d3MnOiBkb2N1bWVudC53cml0ZShCcm93c2VpbmZvYmFubmVyX25vbl93aW4pOyBi
cmVhazsNCiAgICAgICAgICAgICAgICAvKmNhc2UgJ21hY19vcyc6IGRvY3VtZW50
LndyaXRlKEJyb3dzZWluZm9iYW5uZXJfbWFjKTsgYnJlYWs7Ki8gLyogZHluYW1p
YyBiYW5uZXIgaXMgZGlzYWJsZWQgZm9yIG1hYywgb25seSBzdGF0aWMgLSBzZWUg
YmVsb3cgKi8NCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBkb2N1bWVudC53
cml0ZShiYW5uZXJfZm9vdGVyKTsNCiAgICAgICAgICAgICQoIiNzbGlkZXIiKS5T
bGlkZXIoew0KICAgICAgICAgICAgYXV0bzogdHJ1ZSwNCiAgICAgICAgICAgIGNv
bnRpbnVvdXM6IHRydWUsDQogICAgICAgICAgICBuZXh0SWQ6ICJzbGlkZXJuZXh0
IiwNCiAgICAgICAgICAgIHByZXZJZDogInNsaWRlcnByZXYiDQogICAgICAgICAg
ICB9KTsNCiAgICAgICAgICAgICAgICAgDQogICAgfTsgDQp9Ow0KDQpmdW5jdGlv
biBiYW5uZXJfaW5pdF9tYWMoKSB7DQogICAgICAgICAgICANCiAgICBpZiAoIEJy
b3dzZWluZm9iYW5uZXIoKSA9PSAnbWFjX29zJykgew0KICAgICAgICBkb2N1bWVu
dC53cml0ZShiYW5uZXJfaGVhZGVyKTsNCiAgICAgICAgZG9jdW1lbnQud3JpdGUo
QnJvd3NlaW5mb2Jhbm5lcl9tYWMpOw0KICAgICAgICBkb2N1bWVudC53cml0ZShi
YW5uZXJfZm9vdGVyKTsNCiAgICAgICAgJCgiI3NsaWRlcnByZXYsICNzbGlkZXJu
ZXh0IikuYXR0cignc3R5bGUnLCAnZGlzcGxheTpub25lICFpbXBvcnRhbnQ7Jyk7
DQogICAgfTsgIA0KfTsNCg0KZnVuY3Rpb24gY29tbWVyY2lhbF9iYW5uZXJfaW5p
dCgpIHsNCiAgICANCiAgICB2YXIgaW5mb2Jhbm5lciA9IEJyb3dzZWluZm9iYW5u
ZXIoKTsNCiAgICANCiAgICBpZiAoKGluZm9iYW5uZXIgPT0gJ2llMTBfd2luOCcp
IHx8IChpbmZvYmFubmVyID09ICdpZTlfbG93ZXJfcmVzdF93aW44JykgfHwgKGlu
Zm9iYW5uZXIgPT0gJ2llOV93aW43X3Zpc3RhJykgfHwgKGluZm9iYW5uZXIgPT0g
J2llOF9pZTdfYW5kX290aGVyX2Jyb3dzZXJzX3dpbjdfdmlzdGEnKSB8fCAoaW5m
b2Jhbm5lciA9PSAnaWU4X3dpbnhwX29ubHknKSB8fCAoaW5mb2Jhbm5lciA9PSAn
aWU3X2FuZF9vdGhlcl9icm93c2Vyc193aW54cF9vbmx5JykgfHwgKGluZm9iYW5u
ZXIgPT0gJ2llOF9vdGhlcl93aW5kb3dzJykgfHwgKGluZm9iYW5uZXIgPT0gJ2ll
N19hbmRfb3RoZXJfYnJvd3Nlcl9vdGhlcl93aW5kb3dzJykgfHwgKGluZm9iYW5u
ZXIgPT0gJ25vbl93aW5kb3dzJykgfHwgKGluZm9iYW5uZXIgPT0gJ21hY19vcycp
KXsNCiAgICAgICAgDQogICAgICAgIGRvY3VtZW50LndyaXRlKGNvbW1lcmNpYWxf
YmFubmVyX2hlYWRlcik7DQogICAgICAgICAgICBzd2l0Y2ggKGluZm9iYW5uZXIp
ew0KICAgICAgICAgICAgICAgIGNhc2UgJ2llMTBfd2luOCc6IGRvY3VtZW50Lndy
aXRlKEJyb3dzZWluZm9iYW5uZXJfaWUxMF93aW44KTsgYnJlYWs7DQogICAgICAg
ICAgICAgICAgY2FzZSAnaWU5X2xvd2VyX3Jlc3Rfd2luOCc6IGRvY3VtZW50Lndy
aXRlKEJyb3dzZWluZm9iYW5uZXJfaWU5X3Jlc3Rfd2luOCk7IGJyZWFrOw0KICAg
ICAgICAgICAgICAgIGNhc2UgJ2llOV93aW43X3Zpc3RhJzogZG9jdW1lbnQud3Jp
dGUoQnJvd3NlaW5mb2Jhbm5lcl9pZTlfd2luN192aXN0YSk7IGJyZWFrOw0KICAg
ICAgICAgICAgICAgIGNhc2UgJ2llOF9pZTdfYW5kX290aGVyX2Jyb3dzZXJzX3dp
bjdfdmlzdGEnOiBkb2N1bWVudC53cml0ZShCcm93c2VpbmZvYmFubmVyX2llOF9y
ZXN0X3dpbjdfdmlzdGEpOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdp
ZThfd2lueHBfb25seSc6IGRvY3VtZW50LndyaXRlKEJyb3dzZWluZm9iYW5uZXJf
aWU4X3dpbnhwKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnaWU3X2Fu
ZF9vdGhlcl9icm93c2Vyc193aW54cF9vbmx5JzogZG9jdW1lbnQud3JpdGUoQnJv
d3NlaW5mb2Jhbm5lcl9pZTdfcmVzdF93aW54cCk7IGJyZWFrOw0KICAgICAgICAg
ICAgICAgIGNhc2UgJ2llOF9vdGhlcl93aW5kb3dzJzogZG9jdW1lbnQud3JpdGUo
QnJvd3NlaW5mb2Jhbm5lcl9pZThfb3RoZXJfd2luKTsgYnJlYWs7DQogICAgICAg
ICAgICAgICAgY2FzZSAnaWU3X2FuZF9vdGhlcl9icm93c2VyX290aGVyX3dpbmRv
d3MnOiBkb2N1bWVudC53cml0ZShCcm93c2VpbmZvYmFubmVyX2llN19yZXN0X290
aGVyX3dpbik7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ25vbl93aW5k
b3dzJzogZG9jdW1lbnQud3JpdGUoQnJvd3NlaW5mb2Jhbm5lcl9ub25fd2luKTsg
YnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnbWFjX29zJzogZG9jdW1lbnQu
d3JpdGUoQnJvd3NlaW5mb2Jhbm5lcl9tYWMpOyBicmVhazsNCiAgICAgICAgICAg
IH07DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZShjb21tZXJjaWFsX2Jhbm5l
cl9mb290ZXIpOw0KICAgICAgICAgICAgJCgiI3NsaWRlcjEiKS5TbGlkZXIoew0K
ICAgICAgICAgICAgYXV0bzogdHJ1ZSwNCiAgICAgICAgICAgIGNvbnRpbnVvdXM6
IHRydWUsDQogICAgICAgICAgICBuZXh0SWQ6ICJzbGlkZXIxbmV4dCIsDQogICAg
ICAgICAgICBwcmV2SWQ6ICJzbGlkZXIxcHJldiINCiAgICAgICAgICAgIH0pOw0K
ICAgICAgICAgICAgICAgICANCiAgICB9OyANCn07
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://support.microsoft.com/library/images/support/CN/kb_dropdown_icon.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAABEAAAASCAIAAAAym6IDAAAACXBIWXMAAA7DAAAO
wwHHb6hkAAAAV0lEQVR4nGP5//8/AyngzoPnLCRpgIBRPZh6GBkZMRWhxQe6nv//
/6Npw4xALG5D1oY1xrH7B6INVxLBGQZ40tRQih/q63n19iMDAwPLk1cfSNLGw8MD
APoSI4dRumI0AAAAGnRFWHRBdXRob3IAVWxlYWQgU3lzdGVtcywgSW5jLskdPnYA
AAAASUVORK5CYII=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=onepix.gif
Content-Type: image/gif; name=onepix.gif
Content-Location: http://support.microsoft.com/library/images/support/cn/onepix.gif
Content-Transfer-Encoding: Base64
R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=store_link_modifier.js
Content-Type: application/x-javascript; charset=utf-8; name=store_link_modifier.js
Content-Location: http://support.microsoft.com/library/javascript/support/es-es/store_link_modifier.js?1
Content-Transfer-Encoding: Base64
KGZ1bmN0aW9uKCkgew0KICB2YXIgJHN0b3JlTGluayA9ICQoIiNtdGhkcjA0IGEu
bXN0SGRyX01lbnVMaW5rQW5jaG9yIiksDQogICAgICBsaW5rSHJlZiA9ICRzdG9y
ZUxpbmsuYXR0cigiaHJlZiIpLA0KICAgICAgbmV3TGlua0hyZWYgPSAiaHR0cDov
L2VtZWEubWljcm9zb2Z0c3RvcmUuY29tL2VzL2VzLUVTP1dULm1jX2lkPVNNQ01T
Q09NX0VTRVNfTkFWX0JVWUFMTCI7DQogICAgICANCiAgaWYgKHR5cGVvZiBsaW5r
SHJlZiA9PT0gJ3N0cmluZycgJiYgbGlua0hyZWYubGVuZ3RoID4gMCkgew0KICAg
ICQoIi5tc3RIZHIgYVtocmVmPSciICsgbGlua0hyZWYgKyAiJ10iKS5hdHRyKCJo
cmVmIiwgbmV3TGlua0hyZWYpOw0KICB9DQp9KSgpOw0K
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=pinpoint_link_modifier_es_es.js
Content-Type: application/x-javascript; charset=utf-8; name=pinpoint_link_modifier_es_es.js
Content-Location: http://support.microsoft.com/library/JavaScript/support/ES-ES/pinpoint_link_modifier_es_es.js?2
Content-Transfer-Encoding: Base64
KGZ1bmN0aW9uKCkgew0KICB2YXIgJHN0b3JlTGluayA9ICQoIiNtdGhkcjIyIGEi
KSwNCiAgICAgIGxpbmtIcmVmID0gJHN0b3JlTGluay5hdHRyKCJocmVmIiksDQog
ICAgICBuZXdMaW5rSHJlZiA9ICJodHRwOi8vcGlucG9pbnQubWljcm9zb2Z0LmNv
bS9lcy1FUy9ob21lP1dULm1jX2lkPWVzLUVTX1Blcm1fTGlua19TdXBwb3J0TWVu
dV8ySFAiOw0KICAgICAgDQogIGlmICh0eXBlb2YgbGlua0hyZWYgPT09ICdzdHJp
bmcnICYmIGxpbmtIcmVmLmxlbmd0aCA+IDApIHsNCiAgICAkKCIubXN0SGRyIGFb
aHJlZj0nIiArIGxpbmtIcmVmICsgIiddIikuYXR0cigiaHJlZiIsIG5ld0xpbmtI
cmVmKTsNCiAgfQ0KfSkoKTsNCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=microsoft_logo_footer.gif
Content-Type: image/gif; name=microsoft_logo_footer.gif
Content-Location: http://www.microsoft.com/global/onemscomsettings/publishingimages/microsoft_logo_footer.gif
Content-Transfer-Encoding: Base64
R0lGODlhWgAQAPcAAP7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz
8/Ly8vHx8fDw8O/v7+3t7ezs7Ovr6+rq6ujo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh
4d/f397e3t3d3dzc3Nvb29ra2tnZ2dfX19bW1tXV1dTU1NPT09LS0tHR0dDQ0M/P
z87Ozs3NzczMzMvLy8rKysnJycjIyMfHx8bGxsXFxcTExMPDw8LCwsDAwL6+vr29
vby8vLu7u7q6urm5ubi4uLe3t7a2trW1tbS0tLOzs7KysrGxsbCwsK+vr66urq2t
raysrKmpqaioqKenp6ampqWlpaSkpKOjo6KioqGhoaCgoJ+fn56enp2dnZycnJub
m5qampmZmZiYmJeXl5aWlpWVlZSUlJOTk5KSkpCQkI+Pj46Ojo2NjYyMjIuLi4qK
iomJiYiIiIeHh4aGhoWFhYSEhIODg4KCgoGBgYCAgH5+fn19fXx8fHt7e3p6enl5
eXh4eHd3d3Z2dnV1dXR0dHNzc////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAIIALAAAAABaABAAAAj/AAUJHEiw4MABEQQYXMiw
ocOHEJCUWXPioUApYMQkCWAQwJAxYpgIAvDkjxKLKFM+bLAmkMsdKOe49LPBYAU+
LtMIYiDzzQGVQIMKChLIDw4PFBC8CGKgIRyXgZIYJALVDABBMr6wEMoVZZdAYq4K
QhJozU+GT98EepOAIII2awNZdSiAI8oAChcCECC2IF6DX68MTBIITQGngZjcCeSC
4IpAZabIvdqDSoyBB2JoabMGiwdBMazoaMDkzApBBFpcWdOmy42zghDwIPOmDBC7
BmJkYdNmy4zDJqDQCSTHSRMmLe9AeTJjoVoYkr0Q/OpDyWRBZwJBEfhADFSXUqGU
//UeyAeALd9dkmEg6ECYmYHm/ExA/vuXoenzBxJs8HmKQH9kIJAGf/RRgRPXjRHI
EwJlAWASH3gARA6CIBiIHkD4MEIRLinRwQdKALKgIC8UVcMEI/zwk3h/FNEBCE24
RIQEMLSEBgwvrOBFfDW80IFzgdQggBuBBCEQh4JJkeCIILhUBEEcWfiCQBHYMeJA
kuGxAA6B5EEBQRjoEchJAgGARSB0sPcVFgORZVhDat0gCBBrFXCAHIGgIIiScynI
IFF5RGAQgm8oIBAKLpFA0AkugRCCS27YsIBAMQAIAkEwBALIpTtqMZB1aTTFUJyC
WCDmCIj6tOeSDCrZhqgEIf94Rl41BMLHBQR14NJWRkAVhwqC6BAIHhMQZIJLJgjS
6aeBhApnIHIKckUgUlBR5EWsVohmWwUhiMYAAmXqx2cDieBSCQKBUEUfgewxAQ22
akAQC5pyGoinAoEKa3/QCnTsH4Ds8eWqfY54g0undVsYuIJwICIQBFGFh6ADmcDu
DLoGQuFAS6DZgLL3ctzsvgWRiloaLvFH8FV+CvJAHWimkMACK0zpLcMBvKeHDAkk
4MIeI6bAc8NiyoBdIHawgEACNLArFcj4CsLhHiEo4MBCeOIwUA8upTCQtWhcVYZ2
Arnwh6ZzDLeEIOJ9O5AGwwEyh0yBnPExD/GlgUcgbHxi3MFicg8XCBncghEIFwMx
ausdDBrEhRwtDAQBGlzAVoQcVFwVBR1ClNvFHX7woYaiQdBRRV4CUSAFHX30AccR
7AlCQht8/IHHFQMLgkEVdbT+xhDcCtLEHGuX+UPvejxpUEAAOw==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.js
Content-Transfer-Encoding: Base64
77u/KGZ1bmN0aW9uICgkKSB7DQogICAgJC5iaSA9IHsNCiAgICAgICAgZGF0YUNv
bnN1bWVyczogW10sDQogICAgICAgIGRhdGFSZXRyaWV2ZXJzOiBbXSwNCiAgICAg
ICAgZGF0YU1hbmlwdWxhdG9yczogW10sDQoNCiAgICAgICAgaXNJbml0aWFsaXpl
ZDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5p
dGlhbGl6ZWQ7DQogICAgICAgIH0sDQoNCiAgICAgICAgbG9hZEVuYWJsZWQ6IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID49
IDEgJiYgdHlwZW9mIGFyZ3VtZW50c1swXSA9PSAnYm9vbGVhbicpDQogICAgICAg
ICAgICAgICAgdGhpcy5fbG9hZEVuYWJsZWQgPSBhcmd1bWVudHNbMF07DQogICAg
ICAgICAgICByZXR1cm4gdGhpcy5fbG9hZEVuYWJsZWQ7DQogICAgICAgIH0sDQoN
CiAgICAgICAgaWdub3JlQXR0cjogZnVuY3Rpb24gKGF0dHIpIHsNCiAgICAgICAg
ICAgIGlmICh0eXBlb2YgYXR0ciA9PSAnc3RyaW5nJyAmJiAkLnRyaW0oYXR0cikg
IT0gJycpIHsNCiAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KGF0dHIsIHRo
aXMuX2lnbm9yZUF0dHIpID09IC0xKQ0KICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9pZ25vcmVBdHRyLnB1c2goYXR0cik7DQogICAgICAgICAgICB9IGVsc2UgaWYg
KHR5cGVvZiBhdHRyID09ICdvYmplY3QnKSB7DQogICAgICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhdHRyLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAg
ICAgICAgICAgIGF0dHJbaV0gPSAkLnRyaW0oYXR0cltpXSk7DQogICAgICAgICAg
ICAgICAgICAgIGlmICgkLmluQXJyYXkoYXR0cltpXSwgdGhpcy5faWdub3JlQXR0
cikgPT0gLTEpDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVB
dHRyLnB1c2goYXR0cltpXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIGlnbm9yZVRleHRDbGFzczogZnVu
Y3Rpb24gKGNzc0NsYXNzZXMpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgY3Nz
Q2xhc3NlcyA9PSAnc3RyaW5nJyAmJiAkLnRyaW0oY3NzQ2xhc3NlcykgIT0gJycp
IHsNCiAgICAgICAgICAgICAgICB2YXIgY2xhc3NlcyA9IGNzc0NsYXNzZXMuc3Bs
aXQoL1xzKy8pOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2xhc3Nlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBpZiAo
JC5pbkFycmF5KGNsYXNzZXNbaV0sIHRoaXMuX2lnbm9yZVRleHRDbGFzcykgPT0g
LTEpDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVUZXh0Q2xh
c3MucHVzaChjbGFzc2VzW2ldKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgYmFzZURhdGE6IGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDEgJiYg
dHlwZW9mIGFyZ3VtZW50c1swXSA9PSAnb2JqZWN0JykNCiAgICAgICAgICAgICAg
ICAkLmV4dGVuZCh0aGlzLl9iYXNlRGF0YSwgdGhpcy5fb2JqZWN0TmFtZXRvTG93
ZXIoYXJndW1lbnRzWzBdKSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5fYmFz
ZURhdGE7DQogICAgICAgIH0sDQoNCiAgICAgICAgYmFzZUxvYWREYXRhOiBmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAx
ICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gPT0gJ29iamVjdCcpDQogICAgICAgICAg
ICAgICAgJC5leHRlbmQodGhpcy5fYmFzZUxvYWREYXRhLCB0aGlzLl9vYmplY3RO
YW1ldG9Mb3dlcihhcmd1bWVudHNbMF0pKTsNCiAgICAgICAgICAgIHJldHVybiB0
aGlzLl9iYXNlTG9hZERhdGE7DQogICAgICAgIH0sDQoNCiAgICAgICAgYmFzZUxp
bmtEYXRhOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA+PSAxICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gPT0gJ29iamVjdCcp
DQogICAgICAgICAgICAgICAgJC5leHRlbmQodGhpcy5fYmFzZUxpbmtEYXRhLCB0
aGlzLl9vYmplY3ROYW1ldG9Mb3dlcihhcmd1bWVudHNbMF0pKTsNCiAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9iYXNlTGlua0RhdGE7DQogICAgICAgIH0sDQoNCiAg
ICAgICAgX29iamVjdE5hbWV0b0xvd2VyOiBmdW5jdGlvbiAob2JqKSB7DQogICAg
ICAgICAgICAvLyBDb252ZXJ0IHRvIGxvd2VyIGNhc2UgdGhlIHRvcCBsZXZlbCBv
YmplY3QgbmFtZXMgaXRlbSBzbyBpdCB3aWxsIHByZXZlbnQgZXJyb3JzIGNhdXNl
ZCBieSBtaXNjYXBpdGFsaXplZCBsZXR0ZXJzDQogICAgICAgICAgICB2YXIgbmV3
T2JqID0ge307DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIG9iaikgew0KICAg
ICAgICAgICAgICAgIG5ld09ialtpLnRvTG93ZXJDYXNlKCldID0gb2JqW2ldOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIG5ld09iajsNCiAgICAg
ICAgfSwNCg0KICAgICAgICAvLyBDb3JlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogICAgICAgIGluaXQ6IGZ1bmN0aW9uIChzZXR0aW5ncykgew0KICAgICAgICAg
ICAgLy8vCTxzdW1tYXJ5Pg0KICAgICAgICAgICAgLy8vCQlJbml0aWFsaXplcyBC
SSBmb3IgdGhlIHBhZ2UuDQogICAgICAgICAgICAvLy8JPC9zdW1tYXJ5Pg0KICAg
ICAgICAgICAgLy8vCTxwYXJhbSBuYW1lPSJtYXBwaW5nIiB0eXBlPSJCaU1hcHBp
bmciPg0KICAgICAgICAgICAgLy8vCQlPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCB0
YWtlcyBpbiBKU09OIG9iamVjdCB0byBtYXAgdGhlIHByb3ZpZGVycyB0byB0aGVp
ciBiaSBwYXJhbWV0ZXJzL3ZhbHVlcy4NCiAgICAgICAgICAgIC8vLwk8L3BhcmFt
Pg0KDQogICAgICAgICAgICAvLyBQcmV2ZW50IGZyb20gYmVpbmcgcmVpbml0aWFs
aXplZA0KDQoNCiAgICAgICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQoKSkg
cmV0dXJuOw0KICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7
DQoNCiAgICAgICAgICAgIHRoaXMuX25zID0gdGhpcy5nZXROYW1lc3BhY2VQcmVm
aXgoJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206bXNjb206YmknKTsNCg0KICAg
ICAgICAgICAgdGhpcy5pZ25vcmVBdHRyKHRoaXMuX25zICsgJzp0cmFjaycpOw0K
DQogICAgICAgICAgICB2YXIgZXZlbnROYW1lID0gKHdpbmRvdy5hdHRhY2hFdmVu
dCA/ICdjbGljaycgOiAnbW91c2Vkb3duJyk7IC8vIElFOiBjbGljaywgT3RoZXIg
QnJvd3NlcnM6IG1vdXNlZG93bg0KICAgICAgICAgICAgJCgnYSwgYXJlYScpLmxp
dmUoZXZlbnROYW1lLCAkLnByb3h5KGZ1bmN0aW9uIChldmVudCkgew0KICAgICAg
ICAgICAgICAgIHZhciBiaUVuYWJsZWQgPSB0cnVlOyAvLyBUcmFja2luZyBlbmFi
bGVkIGJ5IGRlZmF1bHQNCiAgICAgICAgICAgICAgICB2YXIgJGVsID0gJChldmVu
dC5jdXJyZW50VGFyZ2V0KTsNCg0KICAgICAgICAgICAgICAgIC8vIEZpbmQgY2xv
c2VzZXQgYmk6dHJhY2sgYXR0cmlidXRlDQogICAgICAgICAgICAgICAgdmFyIGN1
cnJlbnRBdHRyID0gJGVsLmF0dHIoJC5iaS5fbnMgKyAnOnRyYWNrJyk7DQogICAg
ICAgICAgICAgICAgY3VycmVudEF0dHIgPSAoY3VycmVudEF0dHIpID8gY3VycmVu
dEF0dHIudG9Mb3dlckNhc2UoKSA6IGN1cnJlbnRBdHRyOw0KICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50QXR0ciAmJiAoY3VycmVudEF0dHIgPT09ICd0cnVlJyB8
fCBjdXJyZW50QXR0ciA9PT0gJ2ZhbHNlJykpIHsNCiAgICAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgZWxlbWVudCB3aXRoIGF0dHJpYnV0ZQ0KICAgICAgICAgICAg
ICAgICAgICBiaUVuYWJsZWQgPSAoY3VycmVudEF0dHIgPT0gJ3RydWUnKTsNCiAg
ICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB2YXIg
cGFyZW50cyA9ICRlbC5wYXJlbnRzKCc6bm90KHRhYmxlKScpLmZpbHRlcihmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgYWxsIGFu
Y2VzdG9ycyB3aXRoIGF0dHJpYnV0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGN1cnJlbnRBdHRyID0gJCh0aGlzKS5hdHRyKCQuYmkuX25zICsgJzp0cmFj
aycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEF0dHIgPSAoY3Vy
cmVudEF0dHIpID8gY3VycmVudEF0dHIudG9Mb3dlckNhc2UoKSA6IGN1cnJlbnRB
dHRyOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjdXJyZW50QXR0
ciAmJiAoY3VycmVudEF0dHIgPT09ICd0cnVlJyB8fCBjdXJyZW50QXR0ciA9PT0g
J2ZhbHNlJykpID8gdHJ1ZSA6IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9
KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudHMubGVuZ3RoKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgY2xvc2VzdCBhbmNlc3RvcnMg
d2l0aCBhdHRyaWJ1dGUNCiAgICAgICAgICAgICAgICAgICAgICAgIGJpRW5hYmxl
ZCA9ICgkKHBhcmVudHNbMF0pLmF0dHIoJC5iaS5fbnMgKyAnOnRyYWNrJykudG9M
b3dlckNhc2UoKSA9PSAndHJ1ZScpOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChiaUVuYWJsZWQp
IHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdl
dDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lLnRvTG93
ZXJDYXNlKCkgPT0gJ2FyZWEnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAv
LyBTZXQgdGFyZ2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGltZw0KICAgICAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0ID0gJCgiaW1nW3VzZW1hcD0nIyIgKyAkKHRh
cmdldCkucGFyZW50KCdtYXAnKS5hdHRyKCduYW1lJykgKyAiJ10iKS5nZXQoMCk7
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdGhp
cy5saW5rQ2xpY2soZXZlbnQuY3VycmVudFRhcmdldCwgdGFyZ2V0KTsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9LCB0aGlzKSk7DQoNCiAgICAgICAg
ICAgIC8vIENhbGwgaW5pdCgpIGZvciBEYXRhIFJldHJpZXZlcnMNCiAgICAgICAg
ICAgIGZvciAodmFyIG4gaW4gdGhpcy5kYXRhUmV0cmlldmVycykgew0KICAgICAg
ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJl
dHJpZXZlcnNbbl0uaW5pdCgpOw0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBDYWxsIGluaXQo
KSBmb3IgRGF0YSBDb25zdW1lcnMNCiAgICAgICAgICAgIGZvciAodmFyIG4gaW4g
dGhpcy5kYXRhQ29uc3VtZXJzKSB7DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAg
ICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhQ29uc3VtZXJzW25dLmluaXQoc2V0
dGluZ3Nbbl0pOw0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfQ0KICAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAodGhpcy5sb2FkRW5hYmxlZCgp
KQ0KICAgICAgICAgICAgICAgICQoJC5wcm94eSh0aGlzLnJlY29yZExvYWQsIHRo
aXMpKTsNCiAgICAgICAgfSwNCg0KICAgICAgICByZWNvcmQ6IGZ1bmN0aW9uIChk
YXRhKSB7DQogICAgICAgICAgICAvLy8JPHN1bW1hcnk+DQogICAgICAgICAgICAv
Ly8JCVNlbmRzIGEgYmVhY29uIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgdGhh
dCBhcmUgbWFwcGVkIHRvIGVhY2ggcHJvdmlkZXIgLg0KICAgICAgICAgICAgLy8v
CTwvc3VtbWFyeT4NCiAgICAgICAgICAgIC8vLwk8cGFyYW0gbmFtZT0icGFyYW1l
dGVycyIgdHlwZT0iSlNPTiI+DQogICAgICAgICAgICAvLy8JCUtleS12YWx1ZSBw
YWlyIEpTT04gb2JqZWN0IG9mIHBhcmFtZXRlciBuYW1lcy92YWx1ZXMgLg0KICAg
ICAgICAgICAgLy8vCTwvcGFyYW0+DQoNCiAgICAgICAgICAgIGRhdGEgPSAkLmV4
dGVuZCh7fSwgdGhpcy5fYmFzZURhdGEsIGRhdGEpOw0KDQogICAgICAgICAgICAv
LyBDYWxsIHJlY29yZCBmbiBmb3IgRGF0YSBNYW5pcHVsYXRvcg0KICAgICAgICAg
ICAgZm9yICh2YXIgbiBpbiB0aGlzLmRhdGFNYW5pcHVsYXRvcnMpIHsNCiAgICAg
ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFN
YW5pcHVsYXRvcnNbbl0ucHJlUmVjb3JkKGRhdGEpOw0KICAgICAgICAgICAgICAg
IH0gY2F0Y2ggKGUpIHsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAv
LyBDYWxsIHJlY29yZCBmbiBmb3IgRGF0YSBDb25zdW1lcnMNCiAgICAgICAgICAg
IGZvciAodmFyIG4gaW4gdGhpcy5kYXRhQ29uc3VtZXJzKSB7DQogICAgICAgICAg
ICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhQ29uc3Vt
ZXJzW25dLnJlY29yZChkYXRhKTsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChl
KSB7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICByZWNv
cmRMb2FkOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgLy8vCTxzdW1t
YXJ5Pg0KICAgICAgICAgICAgLy8vCQlTZW5kcyBhIGJlYWNvbiBmb3IgcGFnZSBs
b2FkIGNvbnRhaW5pbmcgcGFyYW1ldGVycyB0aGF0IGFyZSBtYXBwZWQgdG8gZWFj
aCBwcm92aWRlci4NCiAgICAgICAgICAgIC8vLwk8L3N1bW1hcnk+DQoNCiAgICAg
ICAgICAgIGlmIChkYXRhID09ICQpDQogICAgICAgICAgICAgICAgZGF0YSA9IHt9
Ow0KDQogICAgICAgICAgICBkYXRhID0gJC5leHRlbmQoe30sIHRoaXMuX2Jhc2VE
YXRhLCB0aGlzLl9iYXNlTG9hZERhdGEsIGRhdGEpOw0KDQogICAgICAgICAgICBm
b3IgKHZhciBuIGluIHRoaXMuZGF0YVJldHJpZXZlcnMpIHsNCiAgICAgICAgICAg
ICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAkLmV4dGVuZChkYXRhLCB0
aGlzLmRhdGFSZXRyaWV2ZXJzW25dLmdldExvYWREYXRhKCkpOw0KICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICAvLyBDYWxsIHJlY29yZCBmbiBmb3IgRGF0YSBNYW5pcHVsYXRvcg0KICAg
ICAgICAgICAgZm9yICh2YXIgbiBpbiB0aGlzLmRhdGFNYW5pcHVsYXRvcnMpIHsN
CiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICB0aGlz
LmRhdGFNYW5pcHVsYXRvcnNbbl0ucHJlUmVjb3JkTG9hZChkYXRhKTsNCiAgICAg
ICAgICAgICAgICB9IGNhdGNoIChlKSB7IH0NCiAgICAgICAgICAgIH0NCg0KICAg
ICAgICAgICAgLy8gQ2FsbCByZWNvcmQgZm4gZm9yIERhdGEgQ29uc3VtZXJzDQog
ICAgICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMuZGF0YUNvbnN1bWVycykgew0K
ICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMu
ZGF0YUNvbnN1bWVyc1tuXS5yZWNvcmRMb2FkKGRhdGEpOw0KICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0K
DQogICAgICAgIGxpbmtDbGljazogZnVuY3Rpb24gKGVsZW1lbnQsIHRhcmdldCkg
ew0KICAgICAgICAgICAgLy8vCTxzdW1tYXJ5Pg0KICAgICAgICAgICAgLy8vCQkx
OiAkKGVsZW1lbnQpIC0gU2VuZHMgYmVhY29uIHdpdGggYmkgaW5mb3JtYXRpb24g
Zm9yIGFuIGVsZW1lbnQuDQogICAgICAgICAgICAvLy8JCTI6ICQoZWxlbWVudCwg
dGFyZ2V0KSAtIFNlbmRzIGJlYWNvbiB3aXRoIGJpIGluZm9ybWF0aW9uIGZvciBh
biBlbGVtZW50IGFuZCBpdHMgdGFyZ2V0IChmb3IgdXNlIHdpdGggaW1hZ2VzIGFu
ZCBtYXAgYXJlYXMpLg0KICAgICAgICAgICAgLy8vCTwvc3VtbWFyeT4NCiAgICAg
ICAgICAgIC8vLwk8cGFyYW0gbmFtZT0iZWxlbWVudCIgdHlwZT0iRWxlbWVudCI+
DQogICAgICAgICAgICAvLy8JCTE6IGVsZW1lbnQgLSBBIERPTSBFbGVtZW50Lg0K
ICAgICAgICAgICAgLy8vCQkyOiBlbGVtZW50IC0gQSBET00gRWxlbWVudC4NCiAg
ICAgICAgICAgIC8vLwk8L3BhcmFtPg0KICAgICAgICAgICAgLy8vCTxwYXJhbSBu
YW1lPSJ0YXJnZXQiIHR5cGU9IkVsZW1lbnQiPg0KICAgICAgICAgICAgLy8vCQky
OiB0YXJnZXQgLSBBIERPTSBFbGVtZW50Lg0KICAgICAgICAgICAgLy8vCTwvcGFy
YW0+DQoNCg0KICAgICAgICAgICAgdGhpcy5yZWNvcmQodGhpcy5nZXRMaW5rRGF0
YShlbGVtZW50LCB0YXJnZXQpKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBnZXRM
aW5rRGF0YTogZnVuY3Rpb24gKGVsZW1lbnQsIHRhcmdldCkgew0KICAgICAgICAg
ICAgLy8vCTxzdW1tYXJ5Pg0KICAgICAgICAgICAgLy8vCQkxOiAkKGVsZW1lbnQp
IC0gZ2V0cyBiaSBpbmZvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4gUmV0cmlldmVz
IGFsbCB0aGUgbGluayBkYXRhIGZyb20gdGhlIFJldHJpZXZlciBwbHVnaW5zDQog
ICAgICAgICAgICAvLy8JCTI6ICQoZWxlbWVudCwgdGFyZ2V0KSAtIGdldCBiaSBp
bmZvcm1hdGlvbiBmb3IgYW4gZWxlbWVudCBhbmQgaXRzIHRhcmdldCAoZm9yIHVz
ZSB3aXRoIGltYWdlcyBhbmQgbWFwIGFyZWFzKS4gDQogICAgICAgICAgICAvLy8J
PC9zdW1tYXJ5Pg0KICAgICAgICAgICAgLy8vCTxwYXJhbSBuYW1lPSJlbGVtZW50
IiB0eXBlPSJFbGVtZW50Ij4NCiAgICAgICAgICAgIC8vLwkJMTogZWxlbWVudCAt
IEEgRE9NIEVsZW1lbnQuDQogICAgICAgICAgICAvLy8JCTI6IGVsZW1lbnQgLSBB
IERPTSBFbGVtZW50Lg0KICAgICAgICAgICAgLy8vCTwvcGFyYW0+DQogICAgICAg
ICAgICAvLy8JPHBhcmFtIG5hbWU9InRhcmdldCIgdHlwZT0iRWxlbWVudCI+DQog
ICAgICAgICAgICAvLy8JCTI6IHRhcmdldCAtIEEgRE9NIEVsZW1lbnQuDQogICAg
ICAgICAgICAvLy8JPC9wYXJhbT4NCiAgICAgICAgICAgIHZhciBkYXRhID0gJC5l
eHRlbmQoe30sIHRoaXMuX2Jhc2VEYXRhLCB0aGlzLl9iYXNlTGlua0RhdGEpOw0K
DQogICAgICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMuZGF0YVJldHJpZXZlcnMp
IHsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAk
LmV4dGVuZChkYXRhLCB0aGlzLmRhdGFSZXRyaWV2ZXJzW25dLmdldExpbmtEYXRh
KGVsZW1lbnQsIHRhcmdldCkpOw0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGRhdGE7DQog
ICAgICAgIH0sDQogICAgICAgIC8vIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiAgICAgICAgZ2V0QXR0ckRhdGE6IGZ1bmN0aW9uIChlbGVtZW50LCBpbmNs
dWRlSWdub3JlZEF0dHIpIHsNCiAgICAgICAgICAgIC8vLwk8c3VtbWFyeT4NCiAg
ICAgICAgICAgIC8vLwkJMTogJChlbGVtZW50KSAtIEdldHMgdGhlIGJpIGRhdGEg
Zm9yIGFuIGVsZW1lbnQuDQogICAgICAgICAgICAvLy8JCTI6ICQoJGVsZW1lbnRz
KSAtIEdldHMgdGhlIGJpIGRhdGEgZm9yIGEgc2V0IG9mIGpxdWVyeSBlbGVtZW50
cyBhbmQgbWVyZ2VzIHRoZW0uDQogICAgICAgICAgICAvLy8JPC9zdW1tYXJ5Pg0K
ICAgICAgICAgICAgLy8vCTxwYXJhbSBuYW1lPSJlbGVtZW50IiB0eXBlPSJFbGVt
ZW50L0pxdWVyeSI+DQogICAgICAgICAgICAvLy8JCTE6IGVsZW1lbnQgLSBBIERP
TSBFbGVtZW50Lg0KICAgICAgICAgICAgLy8vCQkyOiAkZWxlbWVudHMgLSBKcXVl
cnkgRWxlbWVudC4NCiAgICAgICAgICAgIC8vLwk8L3BhcmFtPg0KICAgICAgICAg
ICAgLy8vCTxyZXR1cm5zIHR5cGU9IkpTT046IG5hbWUtdmFsdWVbXSBwYWlyIiAv
Pg0KDQogICAgICAgICAgICAvL1RPRE86IEFsbG93IGRhdGEgYXR0cmlidXRlcyB0
byBiZSBwbGFjZWQgaW4gb3RoZXIgbmFtZXNwYWNlcy4gT25lcyBpbiB0aGUgSFRN
TCBuYW1lcGFjZSB3b3VsZCBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQuDQoNCiAgICAg
ICAgICAgIHZhciBkYXRhID0ge307DQogICAgICAgICAgICB2YXIgYXR0ciwgYXR0
ck5hbWU7DQogICAgICAgICAgICBpZiAoalF1ZXJ5ICYmIGVsZW1lbnQgaW5zdGFu
Y2VvZiBqUXVlcnkpIHsNCiAgICAgICAgICAgICAgICAvLyBHZXQgZGF0YSBmb3Ig
YSBzZXQgb2YganF1ZXJ5IHNlbGVjdG9ycw0KICAgICAgICAgICAgICAgIHZhciAk
ZWxlbWVudHMgPSBlbGVtZW50Ow0KICAgICAgICAgICAgICAgIGZvciAodmFyIGgg
PSAwLCBsZW4xID0gJGVsZW1lbnRzLmxlbmd0aDsgaCA8IGxlbjE7IGgrKykgew0K
ICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9ICRlbGVtZW50cy5n
ZXQoaCkuYXR0cmlidXRlczsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbjIgPSBhdHRyaWJ1dGVzLmxlbmd0aDsgaSA8IGxlbjI7IGkrKykg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGF0dHJpYnV0ZXMuaXRl
bShpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lID0gYXR0ci5u
YW1lLnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBP
bmx5IGdldCBhdHRyaWJ1dGVzIGluIHRoZSB1cm46c2NoZW1hcy1taWNyb3NvZnQt
Y29tOm1zY29tOmJpIG5hbWVzcGFjZSBhbmQgaWdub3JlIG9uZXMgaW4gdGhpcy5f
aWdub3JlQXR0ciBhcnJheQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChh
dHRyTmFtZS5pbmRleE9mKCQuYmkuX25zICsgJzonKSA9PT0gMCkgJiYgKGluY2x1
ZGVJZ25vcmVkQXR0ciB8fCAkLmluQXJyYXkoYXR0ck5hbWUsIHRoaXMuX2lnbm9y
ZUF0dHIpIDwgMCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eCA9IGF0dHJOYW1lLnN1YnN0cmluZygzLCBhdHRyLm5hbWUubGVuZ3RoKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtpbmRleF0gPT0gdW5k
ZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFb
aW5kZXhdID0gW107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoYXR0ci52YWx1
ZSwgZGF0YVtpbmRleF0pIDwgMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhW2luZGV4XS5wdXNoKGF0dHIudmFsdWUpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpIGluIGRhdGEpIHsNCiAgICAgICAgICAgICAg
ICAgICAgZGF0YVtpXSA9IGRhdGFbaV0uam9pbignOycpOw0KICAgICAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAv
LyBHZXQgZGF0YSBmb3IgYSBzaW5nbGUgZG9tIGVsZW1lbnQNCiAgICAgICAgICAg
ICAgICB2YXIgYXR0cmlidXRlcyA9IGVsZW1lbnQuYXR0cmlidXRlczsNCg0KICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhdHRyaWJ1dGVzLmxl
bmd0aDsgaSA8IGxlbjsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGF0dHIg
PSBhdHRyaWJ1dGVzLml0ZW0oaSk7DQogICAgICAgICAgICAgICAgICAgIC8vIE9u
bHkgZ2V0IGF0dHJpYnV0ZXMgaW4gdGhlIHVybjpzY2hlbWFzLW1pY3Jvc29mdC1j
b206bXNjb206YmkgbmFtZXNwYWNlIGFuZCBpZ25vcmUgb25lcyBpbiB0aGlzLl9p
Z25vcmVBdHRyIGFycmF5DQogICAgICAgICAgICAgICAgICAgIGlmICgoYXR0ci5u
YW1lLmluZGV4T2YoJC5iaS5fbnMgKyAnOicpID09PSAwKSAmJiAoaW5jbHVkZUln
bm9yZWRBdHRyIHx8ICQuaW5BcnJheShhdHRyLm5hbWUsIHRoaXMuX2lnbm9yZUF0
dHIpIDwgMCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbYXR0ci5u
YW1lLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKDMsIGF0dHIubmFtZS5sZW5ndGgp
XSA9IGF0dHIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZGF0
YTsNCiAgICAgICAgfSwNCg0KICAgICAgICBnZXRUZXh0OiBmdW5jdGlvbiAoZWxl
bWVudCkgew0KICAgICAgICAgICAgLy8vCTxzdW1tYXJ5Pg0KICAgICAgICAgICAg
Ly8vCQlSZXR1cm5zIHRoZSB0ZXh0IG9mIGFuIGVsZW1lbnQgd2hpbGUgaWdub3Jp
bmcgdGV4dCBpbiBjZXJ0aWFuIGVsZW1lbnRzDQogICAgICAgICAgICAvLy8JPC9z
dW1tYXJ5Pg0KICAgICAgICAgICAgLy8vCTxwYXJhbSBuYW1lPSJlbGVtZW50IiB0
eXBlPSJFbGVtZW50Ij4NCiAgICAgICAgICAgIC8vLwkJMS4gRWxlbWVudA0KICAg
ICAgICAgICAgLy8vCTwvcGFyYW0+DQogICAgICAgICAgICAvLy8JPHJldHVybnMg
dHlwZT0iVGV4dDogc3RyaW5nIHRleHQiIC8+DQoNCiAgICAgICAgICAgIC8vIFVz
ZSBjbG9uaW5nIGhhY2sgZHVlIHRvIGJ1ZyBpbiBqUXVlcnkgY2xvbmUoKSB0aGF0
IGNhdXNlcyBJRTYvNyB0byBjcmFzaCB3aGVuIGNhbGxpbmcgbW9yZSB0aGFuIG9u
Y2UNCiAgICAgICAgICAgIHZhciBpbm5lckh0bWwgPSAkKGVsZW1lbnQpLmh0bWwo
KTsNCiAgICAgICAgICAgIHZhciAkY2xvbmUgPSAkKCc8ZGl2PicgKyBpbm5lckh0
bWwgKyAnPC9kaXY+Jyk7DQogICAgICAgICAgICBpZiAodGhpcy5faWdub3JlVGV4
dENsYXNzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgY2xhc3NT
ZWxlY3RvciA9ICcuJyArIHRoaXMuX2lnbm9yZVRleHRDbGFzcy5qb2luKCcsLicp
Ow0KICAgICAgICAgICAgICAgICRjbG9uZS5maW5kKGNsYXNzU2VsZWN0b3IpLnJl
bW92ZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuICQudHJp
bSgkY2xvbmUudGV4dCgpKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBtYXBEYXRh
OiBmdW5jdGlvbiAoZGF0YSwgbWFwKSB7DQogICAgICAgICAgICBpZiAoIW1hcCkg
cmV0dXJuIGZhbHNlOw0KDQogICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307DQoN
CiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbWFwKSB7DQogICAgICAgICAgICAg
ICAgcmVzdWx0W2ldID0gJyc7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDAsIGwgPSBtYXBbaV0ubGVuZ3RoOyBqIDwgbDsgaisrKSB7DQogICAgICAgICAg
ICAgICAgICAgIGlmIChtYXBbaV1bal0uc3RyICE9PSB1bmRlZmluZWQpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSArPSBtYXBbaV1bal0uc3Ry
Ow0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hcFtpXVtqXS5iaSAm
JiBkYXRhICYmIGRhdGFbbWFwW2ldW2pdLmJpXSAhPT0gdW5kZWZpbmVkKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgZG9tYWluLCBwYXRo
LCBhbmQgcXVlcnkNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWFw
W2ldW2pdLmJpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn
dXJpcGF0aCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk
YXRhW21hcFtpXVtqXS5iaV0gPT0gJycgfHwgZGF0YVttYXBbaV1bal0uYmldID09
IG51bGwgfHwgZGF0YVttYXBbaV1bal0uYmldID09IHVuZGVmaW5lZCkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVttYXBbaV1bal0u
YmldID0gJy8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGRhdGFbbWFwW2ldW2pdLmJpXS5zdWJzdHJpbmcoMCwgMSkgIT0gJy8n
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW21h
cFtpXVtqXS5iaV0gPSAnLycgKyBkYXRhW21hcFtpXVtqXS5iaV07DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAndXJpcXVlcnknOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZGF0YVttYXBbaV1bal0uYmldID09ICcnIHx8IGRhdGFbbWFwW2ldW2pd
LmJpXSA9PSBudWxsIHx8IGRhdGFbbWFwW2ldW2pdLmJpXSA9PSB1bmRlZmluZWQp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbbWFw
W2ldW2pdLmJpXSA9ICc/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRvZG8gSGFuZGxlIHRoZSBkYXRhID0gbnVsbC9kYXRhID09IHVuZGVmaW5l
ZCBoZXJlDQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gKz0gZGF0
YVttYXBbaV1bal0uYmldOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGVtcHR5IGRh
dGENCiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldID09ICcnKQ0KICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgcmVzdWx0W2ldOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfSwNCg0KICAgICAg
ICBpc0ludGVyYWN0aW9uVHlwZVZhbGlkOiBmdW5jdGlvbiAoZGF0YSwgbWFwcGlu
Zykgew0KICAgICAgICAgICAgLy8vCTxzdW1tYXJ5Pg0KICAgICAgICAgICAgLy8v
CQlDaGVja3MgaWYgcGFyYW1ldGVyIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBwcm92
aWRlciBzZXR0aW5ncyAoaWUgSW50ZXJhY3Rpb25UeXBlIHdoaXRlbGlzdCkNCiAg
ICAgICAgICAgIC8vLwkJQ2hlY2tzIGFsc28gaWYgcHJvdmlkZXIgaXRzZWxmIGlz
IGVuYWJsZWQoaWUgSW50ZXJhY3Rpb25UeXBlIHdoaXRlbGlzdCkNCiAgICAgICAg
ICAgIC8vLwk8L3N1bW1hcnk+DQogICAgICAgICAgICAvLy8JPHBhcmFtIG5hbWU9
InBhcmFtcyIgdHlwZT0iSlNPTjogbmFtZS12YWx1ZSBwYWlyIj4NCiAgICAgICAg
ICAgIC8vLwkJTWVzc2FnZS4NCiAgICAgICAgICAgIC8vLwk8L3BhcmFtPiAgICAg
ICAgDQogICAgICAgICAgICAvLy8JPHBhcmFtIG5hbWU9Im1hcHBpbmciIHR5cGU9
IkVsZW1lbnQiPg0KICAgICAgICAgICAgLy8vCQl0aGUgbWFwcGluZyBvYmplY3Qg
Y29udGFpbmluZyB0aGUgaW50ZXJhY3Rpb250eXBlIHdoaXRlIGxpc3QNCiAgICAg
ICAgICAgIC8vLwk8L3BhcmFtPg0KICAgICAgICAgICAgLy8vCTxyZXR1cm5zIHR5
cGU9IkJvb2xlYW46dHJ1ZSBpZiB2YWxpZCIgLz4NCg0KICAgICAgICAgICAgaWYg
KCFkYXRhIHx8ICFtYXBwaW5nKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOw0KICAgICAgICAgICAgICAgIC8qfSBlbHNlIGlmIChtYXBwaW5nLnNldHRp
bmdzICYmIG1hcHBpbmcuc2V0dGluZ3MuaW50ZXJhY3Rpb250eXBlKSB7IC8vIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5DQogICAgICAgICAgICAgICAgcmV0dXJuICgo
IWRhdGEuaW50ZXJhY3Rpb250eXBlKSB8fCAobWFwcGluZy5zZXR0aW5ncyAmJiBt
YXBwaW5nLnNldHRpbmdzLmludGVyYWN0aW9udHlwZSAmJiBtYXBwaW5nLnNldHRp
bmdzLmludGVyYWN0aW9udHlwZVtkYXRhLmludGVyYWN0aW9udHlwZV0gIT0gdW5k
ZWZpbmVkKSk7DQogICAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgIH0gZWxz
ZSBpZiAobWFwcGluZy5pbnRlcmFjdGlvblR5cGVNYXApIHsgLy8gbWFwcGluZy5p
bnRlcmFjdGlvblR5cGVNYXANCiAgICAgICAgICAgICAgICByZXR1cm4gKCghZGF0
YS5pbnRlcmFjdGlvbnR5cGUpIHx8IChtYXBwaW5nLmludGVyYWN0aW9uVHlwZU1h
cFtkYXRhLmludGVyYWN0aW9udHlwZV0gIT0gdW5kZWZpbmVkKSk7DQogICAgICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgICAgICAgIH0NCg0KICAgICAgICB9LA0KDQogICAgICAgIGdldE5hbWVzcGFj
ZVByZWZpeDogZnVuY3Rpb24gKG5hbWVzcGFjZSkgew0KICAgICAgICAgICAgLy8g
Q2FwdHVyZSB0aGUgSFRNTCBuYW1lc3BhY2UgcHJlZml4IGZvciBhIHNwZWNpZmlj
IG5hbWVzcGFjZQ0KICAgICAgICAgICAgaWYgKGRvY3VtZW50Lm5hbWVzcGFjZXMp
IHsNCiAgICAgICAgICAgICAgICB2YXIgbmFtZXNwYWNlcyA9IGRvY3VtZW50Lm5h
bWVzcGFjZXM7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
YW1lc3BhY2VzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
IChuYW1lc3BhY2VzW2ldLnVybiA9PSBuYW1lc3BhY2UpDQogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmFtZXNwYWNlc1tpXS5uYW1lOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciBhdHRyID0g
JCgnaHRtbCcpLmdldCgwKS5hdHRyaWJ1dGVzOw0KICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhdHRyLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAg
ICAgaWYgKGF0dHJbaV0udmFsdWUgPT0gbmFtZXNwYWNlKSB7DQogICAgICAgICAg
ICAgICAgICAgIGlmIChhdHRyW2ldLm5hbWUuaW5kZXhPZigneG1sbnM6JykgPT0g
MCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJbaV0ubmFt
ZS5zdWJzdHJpbmcoYXR0cltpXS5uYW1lLmluZGV4T2YoJzonKSArIDEpOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIC8vIEludGVybmFscyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAgICAgICAgX2lzSW5pdGlhbGl6ZWQ6IGZhbHNlLA0KICAg
ICAgICBfbnM6ICdiaScsIC8vIEhUTUwgbmFtZXNwYWNlIHByZWZpeA0KICAgICAg
ICBfbG9hZEVuYWJsZWQ6IHRydWUsDQoNCiAgICAgICAgX2lnbm9yZUF0dHI6IFtd
LA0KICAgICAgICBfaWdub3JlVGV4dENsYXNzOiBbXSwNCg0KICAgICAgICBfYmFz
ZURhdGE6IHt9LCAvLyBCYXNlIGRhdGEgZm9yIGJlYWNvbnMNCiAgICAgICAgX2Jh
c2VMb2FkRGF0YTogeyBpbnRlcmFjdGlvbnR5cGU6IDAgfSwgLy8gQmFzZSBkYXRh
IGZvciBsb2FkIGJlYWNvbg0KICAgICAgICBfYmFzZUxpbmtEYXRhOiB7IGludGVy
YWN0aW9udHlwZTogMn0gLy8gQmFzZSBkYXRhIGZvciBhdXRvbWF0aWMgbGluayBj
bGljayBiZWFjb25zICAgICAgICAgDQogICAgfTsNCn0pKGpRdWVyeSk7DQo=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.dataretrievers.attr.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.dataretrievers.attr.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.dataretrievers.attr.js
Content-Transfer-Encoding: Base64
77u/KGZ1bmN0aW9uICgkKSB7DQogICAgJC5iaS5kYXRhUmV0cmlldmVycy5hdHRy
ID0gew0KICAgICAgICBnZXRMb2FkRGF0YTogZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgdmFyICRpdGVtczsNCiAgICAgICAgICAgIC8vIHNvbWUgYnVncyBpbiBm
aXJlZm94IGlmICQoJ2FyZWE6dmlzaWJsZScpIGlzIHVzZWQgYW5kIGl0IGRvZXNu
dCB3b3JrIGNvbXBsZXRlbHkgaW4gaWUNCiAgICAgICAgICAgICRpdGVtcyA9ICQo
J2FyZWEnKS5maWx0ZXIoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIC8v
VE9ETzogY2hlY2sgZm9yIGFuIGltYWdlIHdpdGggdXNlbWFwIGF0dHJpYnV0ZSB0
aGF0IG1hdGNoZXMgdGhlIG1hcCBuYW1lDQogICAgICAgICAgICAgICAgcmV0dXJu
ICQodGhpcykucGFyZW50KCdtYXAnKS5zaWJsaW5ncygnaW1nJykuaXMoJzp2aXNp
YmxlJyk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIC8vIE1lcmdlIHZp
c2libGUgYXJlYSBlbGVtZW50cyB3aXRoIHZpc2libGUgYW5jaG9yIGVsZW1lbnRz
DQogICAgICAgICAgICAkaXRlbXMgPSAkaXRlbXMuYWRkKCQoJ2E6dmlzaWJsZScp
KTsNCg0KICAgICAgICAgICAgcmV0dXJuICQuYmkuZ2V0QXR0ckRhdGEoJGl0ZW1z
KTsNCiAgICAgICAgfSwNCg0KICAgICAgICBnZXRMaW5rRGF0YTogZnVuY3Rpb24g
KGVsZW1lbnQsIHRhcmdldCkgew0KICAgICAgICAgICAgcmV0dXJuICQuYmkuZ2V0
QXR0ckRhdGEoZWxlbWVudCk7DQogICAgICAgIH0NCiAgICB9Ow0KfSkoalF1ZXJ5
KTsNCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.dataretrievers.exp.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.dataretrievers.exp.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.dataretrievers.exp.js
Content-Transfer-Encoding: Base64
77u/Ly9UT0RPOiBzdXBwb3J0IG11bHRpcGxlIGV4cGVyaW1lbnRzDQooZnVuY3Rp
b24gKCQpIHsNCiAgICBpZiAoJC5iaSAhPT0gdW5kZWZpbmVkKSB7DQogICAgICAg
ICQuYmkuZGF0YVJldHJpZXZlcnMuZXhwID0gew0KICAgICAgICAgICAgZ2xvYmFs
VmFyTmFtZTogJ2NzcF9leHBEYXRhJywNCiAgICAgICAgICAgIGluaXQ6IGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAod2luZG93W3RoaXMuZ2xvYmFs
VmFyTmFtZV0gIT0gdW5kZWZpbmVkICYmIHdpbmRvd1t0aGlzLmdsb2JhbFZhck5h
bWVdWzBdICE9IHVuZGVmaW5lZCAmJiB0eXBlb2Ygd2luZG93W3RoaXMuZ2xvYmFs
VmFyTmFtZV0gPT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFy
IGJhc2VEYXRhID0ge307DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIHByb2Nl
c3NJdGVtID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVv
ZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT0gJ2Jvb2xlYW4n
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZURhdGFbbmFtZV0g
PSB2YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlw
ZW9mIHZhbHVlID09ICdvYmplY3QnKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gUHJvY2VzcyBzdWIgb2JqZWN0cw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2Nlc3NPYmplY3QobmFtZSwgdmFsdWUpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAg
ICAgICAgICAgICAgICAgIHZhciBwcm9jZXNzT2JqZWN0ID0gZnVuY3Rpb24gKHBy
ZWZpeCwgZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSBpbiBkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9
IHByZWZpeCArICdfJyArIGk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc0l0ZW0obmFtZSwgZGF0YVtpXSk7DQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc09iamVjdCgnZXhwJywgd2luZG93W3RoaXMuZ2xvYmFsVmFy
TmFtZV1bMF0pOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgdWlkIHZh
bHVlIGZyb20gTVNfV1QgY29va2llDQogICAgICAgICAgICAgICAgICAgIHZhciBj
b29raWVzID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7DQogICAgICAgICAg
ICAgICAgICAgIHZhciBqMSwgbjE7DQogICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkxIGluIGNvb2tpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEdldCB0aGUgaW5kZXggb2YgdGhlICc9Jw0KICAgICAgICAgICAgICAgICAgICAg
ICAgajEgPSBjb29raWVzW2kxXS5pbmRleE9mKCc9Jyk7DQoNCiAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEdldCB0aGUgbmFtZSBvZiB0aGUgY29va2llDQogICAg
ICAgICAgICAgICAgICAgICAgICBuMSA9IGNvb2tpZXNbaTFdLnN1YnN0cigwLCBq
MSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnRyaW0objEpID09
ICdNU19XVCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29v
a2llID0gY29va2llc1tpMV0uc3Vic3RyKGoxICsgMSk7DQoNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBTcGxpdCB0aGUgY29va2llIGF0IHRoZSAnJicg
Y2hhcmFjdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGVy
aW1lbnRzID0gY29va2llLnNwbGl0KCcmJyk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGoyLCBuMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpMiBpbiBleHBlcmltZW50cykgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSAnPScNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajIgPSBleHBlcmltZW50c1tp
Ml0uaW5kZXhPZignPScpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEdldCB0aGUgbmFtZSBvZiB0aGUgZXhwZXJpbWVudA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuMiA9IGV4cGVyaW1lbnRzW2kyXS5zdWJz
dHIoMCwgajIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChiYXNlRGF0YVsnZXhwX2V4cGVyaW1lbnRJRCddICE9IHVuZGVmaW5lZCAmJiAk
LnRyaW0objIpID09IGJhc2VEYXRhWydleHBfZXhwZXJpbWVudElEJ10pIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGV4
cGVyaW1lbnRzW2kyXS5zdWJzdHIoajIgKyAxKTsNCg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHVpZCA9IHRoaXMuX2dldENvb2tpZVZh
bHVlKCd1aWQnLCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodWlkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZURhdGFbJ2V4cF91aWQnXSA9IHVpZDsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGVpZCA9IHRoaXMuX2dldENvb2tp
ZVZhbHVlKCd0eXBlaWQnLCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdGVzdGlkID0gdGhpcy5fZ2V0Q29va2llVmFsdWUo
J3Rlc3RpZCcsIHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBydW5pZCA9IHRoaXMuX2dldENvb2tpZVZhbHVlKCdydW5pZCcs
IHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB0cmFja2lkID0gdGhpcy5fZ2V0Q29va2llVmFsdWUoJ3RyYWNraWQnLCB2YWx1
ZSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBj
dXJyZW50UGF0aCA9IHRoaXMuX2dldENvb2tpZVZhbHVlKCdjdXJyZW50UGF0aCcs
IHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRQYXRoID0gY3VycmVudFBhdGggPyAoY3VycmVudFBhdGguc3BsaXQoJy0n
KVswXSkgOiBjdXJyZW50UGF0aDsgLy8gZ2V0IHN0cmluZyBiZWZvcmUgJy0nIGNo
YXJhY3Rlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodHlwZWlkICYmIGN1cnJlbnRQYXRoICYmIHRlc3RpZCAmJiBydW5pZCAmJiB0
cmFja2lkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZURhdGFbJ2V4cF90cmFja2luZ2d1aWQnXSA9IFt0eXBlaWQsIGN1cnJl
bnRQYXRoLCB0ZXN0aWQsIHJ1bmlkLCB0cmFja2lkXS5qb2luKCctJyk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICAgICAgICAgICQuYmkuYmFzZURhdGEoYmFzZURhdGEpOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBfZ2V0Q29va2ll
VmFsdWU6IGZ1bmN0aW9uIChuYW1lLCBzZWFyY2hTdHJpbmcpIHsNCg0KICAgICAg
ICAgICAgICAgIC8vIEZvciB1c2Ugd2l0aCBzdHJpbmdzIGZvbGxvaW5nIHRoZSBm
b3JtYXQ6IFxcXCJuYW1lXFxcIjpcXFwidmFsdWVcXFwiDQoNCiAgICAgICAgICAg
ICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cCgnKFxcXFxcXFxcXFxcXCInICsg
bmFtZSArICdcXFxcXFxcXFxcXFwiOlxcXFxcXFxcXFxcXCIpKFteIlxcXFxdKiko
XFxcXFxcXFxcXFxcIiknLCAiaSIpLmV4ZWMoc2VhcmNoU3RyaW5nKTsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0WzJdIDogZmFsc2U7DQog
ICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgICQuYmkuZGF0YU1hbmlw
dWxhdG9ycy5leHAgPSB7DQogICAgICAgICAgICBjb252ZXJzaW9uUG9pbnROYW1l
OiAnY3BpZCcsDQogICAgICAgICAgICBwcmVSZWNvcmQ6IGZ1bmN0aW9uIChkYXRh
KSB7DQogICAgICAgICAgICAgICAgLy9SZW1vdmUgdGhlIGNvbnZlcnNpb24gcG9p
bnQgZm9yIG5vbiBjbGljayBldmVudHMNCg0KICAgICAgICAgICAgICAgIGlmIChk
YXRhICYmIChkYXRhWydpbnRlcmFjdGlvbnR5cGUnXSA9PSAwIHx8IGRhdGFbJ2lu
dGVyYWN0aW9udHlwZSddID09IDEgKSApIHsNCiAgICAgICAgICAgICAgICAgICAg
dGhpcy5fY2xlYXJDb252ZXJzaW9uUG9pbnQoZGF0YSk7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHByZVJlY29yZExvYWQ6
IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJD
b252ZXJzaW9uUG9pbnQoZGF0YSk7DQogICAgICAgICAgICB9LA0KICAgICAgICAg
ICAgX2NsZWFyQ29udmVyc2lvblBvaW50OiBmdW5jdGlvbiAoZGF0YSkgew0KICAg
ICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbdGhpcy5jb252ZXJzaW9uUG9p
bnROYW1lXSAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgZGVs
ZXRlIGRhdGFbdGhpcy5jb252ZXJzaW9uUG9pbnROYW1lXTsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgfQ0KfSkoalF1
ZXJ5KTsNCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.dataretrievers.structure.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.dataretrievers.structure.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.dataretrievers.structure.js
Content-Transfer-Encoding: Base64
77u/KGZ1bmN0aW9uICgkKSB7DQogICAgJC5iaS5kYXRhUmV0cmlldmVycy5zdHJ1
Y3R1cmUgPSB7DQogICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgICQuYmkuaWdub3JlQXR0cigkLmJpLl9ucyArICc6dGl0bGVmbGFnJyk7DQog
ICAgICAgICAgICAkLmJpLmlnbm9yZUF0dHIoJC5iaS5fbnMgKyAnOnBhcmVudHRp
dGxlJyk7DQogICAgICAgICAgICAkLmJpLmlnbm9yZUF0dHIoJC5iaS5fbnMgKyAn
OnRpdGxlJyk7DQogICAgICAgICAgICAkLmJpLmlnbm9yZUF0dHIoJC5iaS5fbnMg
KyAnOmluZGV4Jyk7DQogICAgICAgICAgICAkLmJpLmlnbm9yZUF0dHIoJC5iaS5f
bnMgKyAnOmdyaWRpbmRleCcpOw0KICAgICAgICAgICAgJC5iaS5pZ25vcmVBdHRy
KCQuYmkuX25zICsgJzpncmlkdHlwZScpOw0KICAgICAgICAgICAgJC5iaS5pZ25v
cmVBdHRyKCQuYmkuX25zICsgJzp0eXBlJyk7DQoNCiAgICAgICAgICAgICQuYmku
YmFzZUxvYWREYXRhKHsgdGl0bGU6IGRvY3VtZW50LnRpdGxlLCBpbml0aWFsOiAw
IH0pOw0KICAgICAgICB9LA0KDQogICAgICAgIGdldExpbmtEYXRhOiBmdW5jdGlv
biAoZWxlbWVudCwgdGFyZ2V0KSB7DQogICAgICAgICAgICAvLy8JPHN1bW1hcnk+
DQogICAgICAgICAgICAvLy8JCTE6ICQoZWxlbWVudCkgLSBHZXRzIGEgbGluaydz
IGJpIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgLy8vCQkyOiAkKGVsZW1lbnQs
IHRhcmdldCkgLSBHZXRzIGEgbGluaydzIGJpIGluZm9ybWF0aW9uIChmb3IgdXNl
IHdpdGggaW1hZ2VzIGFuZCBtYXAgYXJlYXMpLg0KICAgICAgICAgICAgLy8vCTwv
c3VtbWFyeT4NCiAgICAgICAgICAgIC8vLwk8cGFyYW0gbmFtZT0iZWxlbWVudCIg
dHlwZT0iRWxlbWVudCI+DQogICAgICAgICAgICAvLy8JCTE6IGVsZW1lbnQgLSBB
IERPTSBFbGVtZW50Lg0KICAgICAgICAgICAgLy8vCQkyOiBlbGVtZW50IC0gQSBE
T00gRWxlbWVudC4NCiAgICAgICAgICAgIC8vLwk8L3BhcmFtPg0KICAgICAgICAg
ICAgLy8vCTxwYXJhbSBuYW1lPSJ0YXJnZXQiIHR5cGU9IkVsZW1lbnQiPg0KICAg
ICAgICAgICAgLy8vCQkyOiB0YXJnZXQgLSBBIERPTSBFbGVtZW50Lg0KICAgICAg
ICAgICAgLy8vCTwvcGFyYW0+DQoNCiAgICAgICAgICAgIHZhciBkYXRhID0ge307
DQogICAgICAgICAgICB2YXIgaGFzVGFnTmFtZSA9IChlbGVtZW50ICYmICQoZWxl
bWVudCkubGVuZ3RoICYmICQoZWxlbWVudCkuZ2V0KDApLnRhZ05hbWUpOw0KICAg
ICAgICAgICAgdmFyIGhyZWZTdHIgPSAoaGFzVGFnTmFtZSkgPyAkKGVsZW1lbnQp
LmF0dHIoJ2hyZWYnKSA6ICcnOw0KICAgICAgICAgICAgLy8gQWRkIHN0YW5kYXJk
IGxpbmsgcGFyYW1zIGxpa2UgdGl0bGUgaHJlZlcNCiAgICAgICAgICAgIGRhdGFb
J3VyaWZ1bGwnXSA9IGhyZWZTdHI7DQogICAgICAgICAgICBkYXRhWyd1cmlkb21h
aW4nXSA9IChoYXNUYWdOYW1lICYmICQoZWxlbWVudClbMF0uaG9zdG5hbWUpID8g
JChlbGVtZW50KVswXS5ob3N0bmFtZSA6ICcnOw0KICAgICAgICAgICAgZGF0YVsn
dXJpcGF0aCddID0gKGhhc1RhZ05hbWUgJiYgJChlbGVtZW50KVswXS5wYXRobmFt
ZSkgPyAkKGVsZW1lbnQpWzBdLnBhdGhuYW1lIDogJyc7DQogICAgICAgICAgICBk
YXRhWyd1cmlwYXRoJ10gPSAoZGF0YVsndXJpcGF0aCddLmxlbmd0aCAmJiBkYXRh
Wyd1cmlwYXRoJ10uaW5kZXhPZignLycpICE9IDApID8gKCcvJyArIGRhdGFbJ3Vy
aXBhdGgnXSkgOiBkYXRhWyd1cmlwYXRoJ107IC8vIG1ha2UgaXQgY29uc2lzdGVu
dCANCiAgICAgICAgICAgIGRhdGFbJ3VyaWhhc2gnXSA9IChocmVmU3RyICYmIGhy
ZWZTdHIuaW5kZXhPZignIycpID49IDApID8gKGhyZWZTdHIuc3Vic3RyaW5nKGhy
ZWZTdHIuaW5kZXhPZignIycpKSkgOiAnJzsNCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgLy8gaGFuZGxlIHRoZSBsaW5rcyB3aXRoaW4gYSBwYWdlICIjZm9vIg0K
ICAgICAgICAgICAgaWYgKGhyZWZTdHIuaW5kZXhPZignIycpID09IDApIHsNCiAg
ICAgICAgICAgICAgICBkYXRhWyd1cmlxdWVyeSddID0gd2luZG93LmxvY2F0aW9u
LnNlYXJjaDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
aHJlZlN0ciA9IChkYXRhWyd1cmloYXNoJ10pID8gKGhyZWZTdHIuc3Vic3RyaW5n
KDAsIGhyZWZTdHIuaW5kZXhPZignIycpKSkgOiBocmVmU3RyOw0KICAgICAgICAg
ICAgICAgIGRhdGFbJ3VyaXF1ZXJ5J10gPSAoaHJlZlN0ciAmJiBocmVmU3RyLmlu
ZGV4T2YoJz8nKSA+PSAwKSA/IChocmVmU3RyLnN1YnN0cmluZyhocmVmU3RyLmlu
ZGV4T2YoJz8nKSkpIDogIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAN
CiAgICAgICAgICAgIC8vIEN1cnJlbnQgVHlwZSBpZiBhdmFpbGFibGUNCiAgICAg
ICAgICAgIGRhdGFbJ3R5cGUnXSA9IChoYXNUYWdOYW1lICYmICQoZWxlbWVudCku
YXR0cigkLmJpLl9ucyArICc6dHlwZScpKSA/ICQudHJpbSgkKGVsZW1lbnQpLmF0
dHIoJC5iaS5fbnMgKyAnOnR5cGUnKSkgOiAnJzsNCiAgICAgICAgICAgIC8vIEN1
cnJlbnQgSW5kZXggaWYgYXZhaWxhYmxlIGJpOmluZGV4IG9uIHRoZSBBDQogICAg
ICAgICAgICBkYXRhWydpbmRleCddID0gKGhhc1RhZ05hbWUgJiYgJChlbGVtZW50
KS5hdHRyKCQuYmkuX25zICsgJzppbmRleCcpKSA/ICQudHJpbSgkKGVsZW1lbnQp
LmF0dHIoJC5iaS5fbnMgKyAnOmluZGV4JykpIDogJyc7DQoNCiAgICAgICAgICAg
IGRhdGFbJ2xpbmt0aXRsZSddID0gJC5iaS5nZXRUZXh0KGVsZW1lbnQpOw0KICAg
ICAgICAgICAgZGF0YVsndGl0bGUnXSA9IGRhdGFbJ2xpbmt0aXRsZSddOw0KDQog
ICAgICAgICAgICB2YXIgbm9kZU5hbWUgPSAoZWxlbWVudCAmJiAkKGVsZW1lbnQp
Lmxlbmd0aCAmJiAkKGVsZW1lbnQpWzBdLm5vZGVOYW1lKSA/ICQoZWxlbWVudCku
Z2V0KDApLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiAnJzsNCiAgICAgICAgICAg
IGlmIChub2RlTmFtZSA9PSAnYXJlYScpIHsNCiAgICAgICAgICAgICAgICBkYXRh
WydsaW5rdGl0bGUnXSA9IGRhdGFbJ3RpdGxlJ10gPSAkKGVsZW1lbnQpLmF0dHIo
J2FsdCcpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWyd0aXRsZSddID09
ICcnICYmIHRhcmdldCAmJiAkKHRhcmdldCkuZ2V0KDApLm5vZGVOYW1lID09ICdJ
TUcnKSB7DQogICAgICAgICAgICAgICAgZGF0YVsndGl0bGUnXSA9ICQodGFyZ2V0
KS5hdHRyKCdhbHQnKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJC5l
eHRlbmQoZGF0YSwgdGhpcy5nZXREYXRhKGVsZW1lbnQpKTsNCiAgICAgICAgICAg
IHJldHVybiBkYXRhOw0KICAgICAgICB9LA0KDQogICAgICAgIGdldERhdGE6IGZ1
bmN0aW9uIChlbGVtZW50KSB7DQogICAgICAgICAgICB2YXIgcGFyYW1zID0ge307
DQogICAgICAgICAgICBwYXJhbXNbJ3BhcmVudHRpdGxlc3RydWN0dXJlJ10gPSB0
aGlzLmdldFRpdGxlU3RydWN0dXJlKGVsZW1lbnQsIG51bGwsIHRydWUpOw0KICAg
ICAgICAgICAgJC5leHRlbmQocGFyYW1zLCB0aGlzLmdldEluZGV4R3JpZFR5cGVT
dHJ1Y3R1cmUoZWxlbWVudCkpOw0KICAgICAgICAgICAgcmV0dXJuIHBhcmFtczsN
CiAgICAgICAgfSwNCg0KICAgICAgICBnZXRJbmRleEdyaWRUeXBlU3RydWN0dXJl
OiBmdW5jdGlvbiAoZWxlbWVudCkgew0KICAgICAgICAgICAgdmFyIGNvbWJpbmVk
ID0ge30sDQogICAgICAgICAgICBncmlkcyA9IFtdLA0KICAgICAgICAgICAgaXRl
bXMgPSBbXSwNCiAgICAgICAgICAgIHR5cGVzID0gW107DQogICAgICAgICAgICAk
KGVsZW1lbnQpLnBhcmVudHMoJzpub3QodGFibGUpJykuZWFjaChmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICAgICAgLy8gR3JpZCBMb2dpYw0KICAgICAgICAgICAg
ICAgIGlmICgkKHRoaXMpLmF0dHIoJC5iaS5fbnMgKyAnOmdyaWRpbmRleCcpKSB7
DQogICAgICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSAoJCh0aGlzKS5hdHRy
KCQuYmkuX25zICsgJzpncmlkdHlwZScpKSA/ICQodGhpcykuYXR0cigkLmJpLl9u
cyArICc6Z3JpZHR5cGUnKSA6ICcnOw0KICAgICAgICAgICAgICAgICAgICBncmlk
cy5wdXNoKHByZWZpeCArICcgJyArICQodGhpcykuYXR0cigkLmJpLl9ucyArICc6
Z3JpZGluZGV4JykpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAvLyBJdGVtIA0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJC5i
aS5fbnMgKyAnOmluZGV4JykpIHsNCiAgICAgICAgICAgICAgICAgICAgaXRlbXMu
cHVzaCgkKHRoaXMpLmF0dHIoJC5iaS5fbnMgKyAnOmluZGV4JykpOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyBUeXBlDQogICAgICAgICAg
ICAgICAgaWYgKCQodGhpcykuYXR0cigkLmJpLl9ucyArICc6dHlwZScpKSB7DQog
ICAgICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goJC50cmltKCQodGhpcykuYXR0
cigkLmJpLl9ucyArICc6dHlwZScpKSk7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIGNvbWJpbmVkWydwYXJlbnR0eXBl
c3RydWN0dXJlJ10gPSB0eXBlcy5yZXZlcnNlKCkuam9pbignOycpOw0KICAgICAg
ICAgICAgY29tYmluZWRbJ2dyaWRzdHJ1Y3R1cmUnXSA9IGdyaWRzLnJldmVyc2Uo
KS5qb2luKCc7Jyk7DQogICAgICAgICAgICBjb21iaW5lZFsncGFyZW50aW5kZXhz
dHJ1Y3R1cmUnXSA9IGl0ZW1zLnJldmVyc2UoKS5qb2luKCc7Jyk7DQoNCiAgICAg
ICAgICAgIHJldHVybiBjb21iaW5lZDsNCiAgICAgICAgfSwNCg0KICAgICAgICBn
ZXRJbmRleFN0cnVjdHVyZTogZnVuY3Rpb24gKGVsZW1lbnQpIHsNCiAgICAgICAg
ICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdXB3YXJkcyBhbmQgcmV0dXJuIGEgc2Vt
aWNvbG9uIGRlbGltaXRlZCBzdHJpbmcgb2YgYmk6aW5kZXggZWxlbWVudHMNCiAg
ICAgICAgICAgIHZhciB0eXBlcyA9IFtdOw0KICAgICAgICAgICAgdmFyIGNzcG5h
bWUgPSBmYWxzZTsNCiAgICAgICAgICAgICQoZWxlbWVudCkucGFyZW50cygnOm5v
dCh0YWJsZSknKS5maWx0ZXIoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAg
IGlmICgkKHRoaXMpLmF0dHIoJC5iaS5fbnMgKyAnOmluZGV4JykpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdHlwZXMucHVzaCgkKHRoaXMpLmF0dHIoJC5iaS5fbnMg
KyAnOmluZGV4JykpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIHJldHVybiB0eXBlcy5y
ZXZlcnNlKCkuam9pbignOycpOw0KICAgICAgICB9LA0KDQogICAgICAgIGdldEdy
aWRTdHJ1Y3R1cmU6IGZ1bmN0aW9uIChlbGVtZW50KSB7DQogICAgICAgICAgICAv
LyBUcmF2ZXJzZSB0aGUgRE9NIHVwd2FyZHMgYW5kIHJldHVybiBhIHNlbWljb2xv
biBkZWxpbWl0ZWQgc3RyaW5nIG9mIGJpOmdyaWRpdGVtIGVsZW1lbnRzIHRoZSBw
cmVmaXggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjbGFzcw0KICAgICAgICAg
ICAgdmFyIHR5cGVzID0gW107DQogICAgICAgICAgICAkKGVsZW1lbnQpLnBhcmVu
dHMoJzpub3QodGFibGUpJykuZmlsdGVyKGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCQuYmkuX25zICsgJzpncmlkaW5kZXgn
KSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgcHJlZml4ID0gKCQodGhpcyku
YXR0cigkLmJpLl9ucyArICc6Z3JpZHR5cGUnKSkgPyAkKHRoaXMpLmF0dHIoJC5i
aS5fbnMgKyAnOmdyaWR0eXBlJykgOiAnJzsNCiAgICAgICAgICAgICAgICAgICAg
dHlwZXMucHVzaChwcmVmaXggKyAnICcgKyAkKHRoaXMpLmF0dHIoJC5iaS5fbnMg
KyAnOmdyaWRpbmRleCcpKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgLy8gUmV2ZXJzZQ0K
ICAgICAgICAgICAgcmV0dXJuIHR5cGVzLnJldmVyc2UoKS5qb2luKCc7Jyk7DQog
ICAgICAgIH0sDQoNCiAgICAgICAgZ2V0VHlwZVN0cnVjdHVyZTogZnVuY3Rpb24g
KGVsZW1lbnQpIHsNCiAgICAgICAgICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdXB3
YXJkcyBhbmQgcmV0dXJuIGEgc2VtaWNvbG9uIGRlbGltaXRlZCBzdHJpbmcgb2Yg
Q1NQIHR5cGVzIChjYW4gYmUgbWFzdGVyLCBwYWdlLCBhbmQvb3IgY29tcG9uZW50
KS4NCiAgICAgICAgICAgIHZhciB0eXBlcyA9IFtdOw0KICAgICAgICAgICAgJChl
bGVtZW50KS5wYXJlbnRzKCc6bm90KHRhYmxlKScpLmZpbHRlcihmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cigkLmJpLl9ucyAr
ICc6dHlwZScpKSB7DQogICAgICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goJC50
cmltKCQodGhpcykuYXR0cigkLmJpLl9ucyArICc6dHlwZScpKSk7DQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9KTsNCg0K
ICAgICAgICAgICAgcmV0dXJuIHR5cGVzLnJldmVyc2UoKS5qb2luKCc7Jyk7DQog
ICAgICAgIH0sDQoNCiAgICAgICAgZ2V0VGl0bGVTdHJ1Y3R1cmU6IGZ1bmN0aW9u
IChlbGVtZW50LCByZWN1cnNlLCBwYXJlbnRPbmx5KSB7DQogICAgICAgICAgICB2
YXIgbmFtZXMgPSBbXSwNCiAgICAgICAgICAgIGJpUGFyZW50ID0gW10sDQogICAg
ICAgICAgICAkYmlGbGFnLA0KICAgICAgICAgICAgJGJpSXRlbSwNCiAgICAgICAg
ICAgIGJpTmFtZSA9ICcnOw0KDQoNCiAgICAgICAgICAgIGlmICghZWxlbWVudCB8
fCAhJChlbGVtZW50KS5sZW5ndGggfHwgISQoZWxlbWVudCkuZ2V0KDApLnRhZ05h
bWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gIiI7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICAvLzEuIEdldCB0aGUgdGV4dCBvbiB0aGUgbGluayBhZGQg
dG8gdGhlIGFycmF5DQogICAgICAgICAgICBpZiAoIXBhcmVudE9ubHkpIHsgLy8g
VHJ1ZSBpZiB5b3UganVzdCB3YW50IHRoZSBwYXJlbnQNCiAgICAgICAgICAgICAg
ICBuYW1lcy5wdXNoKCgkLnRyaW0oJChlbGVtZW50KS50ZXh0KCkpIHx8ICQudHJp
bSgkKGVsZW1lbnQpLmF0dHIoJ2FsdCcpKSkpOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgLyoyLiBTZWFyY2ggZm9yIHRoZSBmaXJzdCBiaTpwYXJlbnR0aXRs
ZXM9Im5hbWUxIiB1cG9uIGZpbmRpbmcgb25lIChzdG9wIHRoZSBjdXJyZW50IGxv
b3ApLiBzZWFyY2ggZm9yIHRoZSBzaWJsaW5nL3BhcmVudCBmb3IgYmk6dGl0bGVm
bGFnPSJuYW1lMSIqLw0KICAgICAgICAgICAgLy8gQWRkIGZpcnN0IEl0ZW0gaWYg
dGhlIGVsZW1lbnQgZXhpc3RzDQogICAgICAgICAgICBpZiAoJChlbGVtZW50KS5h
dHRyKCQuYmkuX25zICsgJzpwYXJlbnR0aXRsZScpKSB7DQogICAgICAgICAgICAg
ICAgYmlQYXJlbnQucHVzaCgkKGVsZW1lbnQpKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICQoZWxlbWVudCkucGFyZW50cygnOm5vdCh0YWJsZSknKS5lYWNo
KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRy
KCQuYmkuX25zICsgJzpwYXJlbnR0aXRsZScpKSB7DQogICAgICAgICAgICAgICAg
ICAgIGJpUGFyZW50LnB1c2goJCh0aGlzKSk7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIC8qIFVwZGF0ZTogbWFkZSB0
aGlzIG1vcmUgcm9idXN0LiBDaGVja2luZyBiaTpwYXJlbnR0aXRsZSBvbiB0aGUg
b3RoZXIgcGFyZXJudHRpdGxlIHVudGlsIGl0IGZpbmRzIG9uZSB0aGF0IHdvcmtz
Ki8NCiAgICAgICAgICAgIGZvciAodmFyIGNudCA9IDA7IGNudCA8IGJpUGFyZW50
Lmxlbmd0aDsgY250KyspIHsNCiAgICAgICAgICAgICAgICB2YXIgJHRoaXNQYXJl
bnQgPSBiaVBhcmVudFtjbnRdOw0KICAgICAgICAgICAgICAgIGJpTmFtZSA9ICR0
aGlzUGFyZW50LmF0dHIoJC5iaS5fbnMgKyAnOnBhcmVudHRpdGxlJyk7DQoNCiAg
ICAgICAgICAgICAgICAvLyBTZWFyY2ggU2libGluZw0KICAgICAgICAgICAgICAg
ICRiaUZsYWcgPSAkdGhpc1BhcmVudC5zaWJsaW5ncygnOm5vdCh0YWJsZSknKS5m
aWx0ZXIoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KCQodGhpcykuYXR0cigkLmJpLl9ucyArICc6dGl0bGVmbGFnJykgPT0gYmlOYW1l
KTsNCiAgICAgICAgICAgICAgICB9KS5maXJzdCgpOw0KICAgICAgICAgICAgICAg
IGlmICgkYmlGbGFnLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAg
ICRiaUZsYWcgPSAkdGhpc1BhcmVudC5wYXJlbnRzKCc6bm90KHRhYmxlKScpLmZp
bHRlcihmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKCQodGhpcykuYXR0cigkLmJpLl9ucyArICc6dGl0bGVmbGFnJykgPT0gYmlO
YW1lKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuZmlyc3QoKTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRiaUZsYWcubGVuZ3RoICE9
IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLyogMy4gU2VhcmNoIGZvciB0aGUg
Ymk6dGl0bGU9Im5hbWUxIiBvbiB0aGUgY3VycmVudCBpdGVtIG9yIGNoaWxkcmVu
DQogICAgICAgICAgICAgICAgICAgIHVwb24gZmluZGluZyBpdCwgZ2V0IHRoZSB0
ZXh0IGFkZCB0byB0aGUgYXJyYXkNCiAgICAgICAgICAgICAgICAgICAgLSBjb250
aW51ZSB0byAxLCBsb29rIGZvciBiaTpwYXJlbnR0aXRsZQ0KICAgICAgICAgICAg
ICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGJpRmxhZy5hdHRy
KCQuYmkuX25zICsgJzp0aXRsZScpID09IGJpTmFtZSkgeyAvLyBjdXJyZW50IGVs
ZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgICAgICRiaUl0ZW0gPSAkYmlGbGFn
Ow0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBzZWFyY2ggY2hpbGRy
ZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICRiaUl0ZW0gPSAkYmlGbGFnLmZp
bmQoJ1snICsgJC5iaS5fbnMgKyAnXFw6dGl0bGU9IicgKyBiaU5hbWUgKyAnIl0n
KS5maXJzdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVnIGluIGpx
dWVyeSAxLjQuNCBmb3IgZmluZCBpbiBJRTcgdXNpbmcgdGhpcyBhcyBhIGZhbGxi
YWNrDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGJpSXRlbS5sZW5ndGgg
PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiaUl0ZW0gPSAk
YmlGbGFnLmZpbmQoJyonKS5maWx0ZXIoZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCQodGhpcykuYXR0cigkLmJp
Ll9ucyArICc6dGl0bGUnKSA9PSBiaU5hbWUpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pLmZpcnN0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBp
ZiAoJGJpSXRlbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVjdXJz
ZSBmdW5jdGlvbiBpZiBwYXJlbnQgZXhpc3RzDQogICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0VGl0bGVTdHJ1Y3R1cmUoJGJpSXRl
bSwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IG5hbWVz
LmNvbmNhdChyZXN1bHRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OyAvLyBzdG9wIHRoZSBjdXJyZW50IGxvb3AgaWYgdGhlIHRpdGxlIGlzIGFscmVh
ZHkgZm91bmQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIChyZWN1cnNl
KSA/IG5hbWVzIDogbmFtZXMucmV2ZXJzZSgpLmpvaW4oJzsnKTsNCiAgICAgICAg
fQ0KICAgIH07DQp9KShqUXVlcnkpOw0K
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.queue.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.queue.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.queue.js
Content-Transfer-Encoding: Base64
77u/KGZ1bmN0aW9uICgkKSB7DQogICAgJC5iaS5xdWV1ZSA9IHsNCiAgICAgICAg
X2RlbGF5OiAzNTAsDQogICAgICAgIF90aW1lcklkOiBudWxsLA0KICAgICAgICBf
cXVldWU6IFtdLA0KICAgICAgICBwdXNoOiBmdW5jdGlvbiAocGFyYW1zKSB7DQog
ICAgICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHBhcmFtcyk7DQogICAgICAgICAg
ICBpZiAodGhpcy5fdGltZXJJZCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHRo
aXMuX3N0YXJ0VGltZXIoKTsNCiAgICAgICAgfSwNCiAgICAgICAgX3RyeVByb2Nl
c3M6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMuX2NsZWFyVGltZXIo
KTsNCg0KICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYW55dGhpbmcgaXMgYW5pbWF0
aW5nDQogICAgICAgICAgICBpZiAoJCgnOmFuaW1hdGVkJykubGVuZ3RoID09IDAg
JiYgdGhpcy5fcXVldWUubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgICAkLmJp
LnJlY29yZCh0aGlzLl9xdWV1ZS5zaGlmdCgpKTsNCg0KICAgICAgICAgICAgaWYg
KHRoaXMuX3F1ZXVlLmxlbmd0aCA+IDApDQogICAgICAgICAgICAgICAgdGhpcy5f
c3RhcnRUaW1lcigpOw0KICAgICAgICB9LA0KICAgICAgICBfc3RhcnRUaW1lcjog
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhpcy5fY2xlYXJUaW1lcigpOw0K
ICAgICAgICAgICAgdGhpcy5fdGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCQu
cHJveHkodGhpcy5fdHJ5UHJvY2VzcywgdGhpcyksIHRoaXMuX2RlbGF5KTsNCiAg
ICAgICAgfSwNCiAgICAgICAgX2NsZWFyVGltZXI6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIGlmICh0aGlzLl90aW1lcklkICE9IG51bGwpIHsNCiAgICAgICAg
ICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVySWQpOw0KICAg
ICAgICAgICAgICAgIHRoaXMuX3RpbWVySWQgPSBudWxsOw0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgfTsNCn0pKGpRdWVyeSk7DQo=
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=jquery.bi.dataconsumers.wedcs.js
Content-Type: application/x-javascript; charset=utf-8; name=jquery.bi.dataconsumers.wedcs.js
Content-Location: http://support.microsoft.com/Scripts/jquery.bi.dataconsumers.wedcs.js
Content-Transfer-Encoding: Base64
77u/KGZ1bmN0aW9uICgkKSB7DQogICAgJC5iaS5kYXRhQ29uc3VtZXJzLndlZGNz
ID0gew0KICAgICAgICBfc2V0dGluZ3M6IG51bGwsDQoNCiAgICAgICAgaW5pdDog
ZnVuY3Rpb24gKHNldHRpbmdzKSB7DQogICAgICAgICAgICB0aGlzLl9zZXR0aW5n
cyA9IHNldHRpbmdzOw0KICAgICAgICAgICAgJC5iaS5iYXNlTGlua0RhdGEoeyBj
b3Q6IDEgfSk7IC8vIFRPRE86IHdlIGNhbiBtYWtlIGRhdGFjb25zdW1lciBzcGVj
aWZpYw0KICAgICAgICB9LA0KDQogICAgICAgIHJlY29yZDogZnVuY3Rpb24gKGRh
dGEpIHsNCiAgICAgICAgICAgIGlmICh3aW5kb3cuTXNjb21DdXN0b21FdmVudCAm
JiAkLmJpLmlzSW50ZXJhY3Rpb25UeXBlVmFsaWQoZGF0YSwgdGhpcy5fc2V0dGlu
Z3MpKSB7DQogICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuX21hcEludGVyYWN0
aW9uVHlwZShkYXRhKTsNCiAgICAgICAgICAgICAgICBNc2NvbUN1c3RvbUV2ZW50
LmFwcGx5KHRoaXMsIHRoaXMuX21hcChkYXRhKSk7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0sDQoNCiAgICAgICAgcmVjb3JkTG9hZDogZnVuY3Rpb24gKGRhdGEp
IHsNCiAgICAgICAgICAgIGlmICh3aW5kb3cuTXNjb21DdXN0b21FdmVudCAmJiAk
LmJpLmlzSW50ZXJhY3Rpb25UeXBlVmFsaWQoZGF0YSwgdGhpcy5fc2V0dGluZ3Mp
KSB7DQogICAgICAgICAgICAgICAgZGF0YSA9ICQuZXh0ZW5kKGRhdGEsIHsgJ2Nv
dCc6IDAgfSk7DQogICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuX21hcEludGVy
YWN0aW9uVHlwZShkYXRhKTsNCiAgICAgICAgICAgICAgICBNc2NvbUN1c3RvbUV2
ZW50LmFwcGx5KHRoaXMsIHRoaXMuX21hcChkYXRhKSk7DQogICAgICAgICAgICB9
DQogICAgICAgIH0sDQoNCiAgICAgICAgX21hcEludGVyYWN0aW9uVHlwZTogZnVu
Y3Rpb24gKGRhdGFCeVJlZikgew0KICAgICAgICAgICAgdmFyIGRhdGEgPSAkLmV4
dGVuZCh7fSwgZGF0YUJ5UmVmKTsgLy8gQnJlYWsgdGhlIG9iamVjdCByZWZlcmVu
Y2UNCiAgICAgICAgICAgIC8vVE9ETzogbWFwcGluZy5zZXR0aW5ncy5pbnRlcmFj
dGlvbnR5cGUgd2FzIGNoYW5nZWQgdG8gbWFwcGluZy5pbnRlcmFjdGlvblR5cGVN
YXAgeyAxOjN9IGluIHRoaXMgdmVyc2lvbi4gQmlIYW5kbGVyIG5lZWRzIHRvIGJl
IFVwZGF0ZWQgdG8gc3VwcG9ydCB0aGlzIHdlIG5lZWQgdG8gbWFrZSB0aGlzIGJh
Y2t3YXJkcyBjb21wYXRpYmxlDQoNCiAgICAgICAgICAgIC8qLy8gSW50ZXJhY3Rp
b24gdHlwZSBtYXBwaW5nIHRvIG1ha2UgaXQgQmFja3dhcmRzIGNvbXBhdGlibGUN
CiAgICAgICAgICAgIHZhciBpdCA9IHsgMDogMCwgMTogNCwgMjogMSwgMzogMiwg
NDogOSwgNTogMTAsIDY6IDExLCA3OiAxMiwgODogMTMsIDk6IDE0LCAxMDogMTUs
IDExOiAxNiwgMTI6IDE3LCAxMzogMTgsIDE0OiAxOSwgMTU6IDIwLCAxNjogMjEs
IDE3OiAyMiwgMTg6IDIzLCAxOTogMjQsIDIwOiAyNSB9Ow0KICAgICAgICAgICAg
Ki8NCg0KICAgICAgICAgICAgLy8gTWFwIHRoZSBpbnRlcmFjdGlvbiB0eXBlDQog
ICAgICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MuaW50ZXJhY3Rpb25UeXBlTWFw
ICYmIGRhdGFbJ2ludGVyYWN0aW9udHlwZSddICYmIHRoaXMuX3NldHRpbmdzLmlu
dGVyYWN0aW9uVHlwZU1hcFtkYXRhWydpbnRlcmFjdGlvbnR5cGUnXV0gIT0gdW5k
ZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgZGF0YVsnaW50ZXJhY3Rpb250eXBl
J10gPSB0aGlzLl9zZXR0aW5ncy5pbnRlcmFjdGlvblR5cGVNYXBbZGF0YVsnaW50
ZXJhY3Rpb250eXBlJ11dOw0KICAgICAgICAgICAgfSAvKiBlbHNlIGlmIChkYXRh
WydpbnRlcmFjdGlvbnR5cGUnXSAmJiBpdFtkYXRhWydpbnRlcmFjdGlvbnR5cGUn
XV0gIT0gdW5kZWZpbmVkKSB7IC8vIEJhY2t3YXJkcyBjb21wYXRpYmxlDQogICAg
ICAgICAgICAgICAgZGF0YVsndHJpZ2dlcnR5cGVpbnRlcmFjdGlvbnR5cGUnXSA9
IGl0W2RhdGFbJ2ludGVyYWN0aW9udHlwZSddXTsNCiAgICAgICAgICAgIH0qLw0K
DQogICAgICAgICAgICAvLyBNYXAgdGhlIHRyaWdnZXIgaW50ZXJhY3Rpb24gdHlw
ZQ0KICAgICAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmludGVyYWN0aW9uVHlw
ZU1hcCAmJiBkYXRhWyd0cmlnZ2VydHlwZSddICYmIHRoaXMuX3NldHRpbmdzLmlu
dGVyYWN0aW9uVHlwZU1hcFtkYXRhWyd0cmlnZ2VydHlwZSddXSAhPSB1bmRlZmlu
ZWQpIHsNCiAgICAgICAgICAgICAgICBkYXRhWyd0cmlnZ2VydHlwZSddID0gdGhp
cy5fc2V0dGluZ3MuaW50ZXJhY3Rpb25UeXBlTWFwW2RhdGFbJ3RyaWdnZXJ0eXBl
J11dOw0KICAgICAgICAgICAgfSAvKiBlbHNlIGlmIChkYXRhWyd0cmlnZ2VydHlw
ZSddICYmIGl0W2RhdGFbJ3RyaWdnZXJ0eXBlJ11dICE9IHVuZGVmaW5lZCkgeyAv
LyBCYWNrd2FyZHMgY29tcGF0aWJsZQ0KICAgICAgICAgICAgICAgIGRhdGFbJ3Ry
aWdnZXJ0eXBlJ10gPSBpdFtkYXRhWyd0cmlnZ2VydHlwZSddXTsNCiAgICAgICAg
ICAgIH0qLw0KDQogICAgICAgICAgICByZXR1cm4gZGF0YTsNCiAgICAgICAgfSwN
Cg0KICAgICAgICBfbWFwOiBmdW5jdGlvbiAoZGF0YUJ5UmVmKSB7DQogICAgICAg
ICAgICB2YXIgZGF0YSA9ICQuZXh0ZW5kKHt9LCBkYXRhQnlSZWYpOyAvLyBDbG9u
ZXMgdGhlIG9iamVjdCBhbmQgcHJldmVudHMgcGFzcyBieSByZWYNCiAgICAgICAg
ICAgIGlmIChkYXRhWyd1cmlkb21haW4nXSA9PSB1bmRlZmluZWQpIHsNCiAgICAg
ICAgICAgICAgICBkYXRhWyd1cmlkb21haW4nXSA9IHdpbmRvdy5sb2NhdGlvbi5o
b3N0bmFtZTsNCiAgICAgICAgICAgICAgICBkYXRhWyd1cmlwYXRoJ10gPSB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7DQogICAgICAgICAgICAgICAgZGF0YVsndXJp
cXVlcnknXSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9BcnJheSgkLmJpLm1hcERhdGEo
ZGF0YSwgdGhpcy5fc2V0dGluZ3MucGFyYW1ldGVyTWFwKSk7DQogICAgICAgIH0s
DQoNCiAgICAgICAgX3RvQXJyYXk6IGZ1bmN0aW9uIChqc29uKSB7DQogICAgICAg
ICAgICAvLyBDb252ZXJ0cyBhIEpTT04gb2JqZWN0IGludG8gYW4gYXJyYXkgb2Yg
a2V5LXZhbHVlIHBhaXJzDQogICAgICAgICAgICBqc29uID0gKCFqc29uIHx8IHR5
cGVvZiBqc29uICE9ICdvYmplY3QnIHx8IGpzb24uc29ydCkgPyB7fSA6IGpzb247
DQogICAgICAgICAgICB2YXIgYXJyYXkgPSBbXTsNCiAgICAgICAgICAgIGZvciAo
dmFyIGtleSBpbiBqc29uKSB7DQogICAgICAgICAgICAgICAgaWYgKGpzb24uaGFz
T3duUHJvcGVydHkoa2V5KSkgew0KICAgICAgICAgICAgICAgICAgICBhcnJheS5w
dXNoKGtleSk7DQogICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2goanNvbltr
ZXldKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICByZXR1cm4gYXJyYXk7DQogICAgICAgIH0NCiAgICB9Ow0KfSkoalF1ZXJ5
KTsNCg==
------------QQo2awhRl3KeUZRR72vsx4
Content-Disposition: inline; filename=wedcs.js
Content-Type: application/x-javascript; charset=utf-8; name=wedcs.js
Content-Location: http://support.microsoft.com/Scripts/wedcs.js
Content-Transfer-Encoding: Base64
dmFyIGZsID0gMCwNCiAgICBzZXNzaW9uSWQgPSAiIiwNCiAgICBzZXNzaW9uRHVy
YXRpb24gPSAxODAwMDAwLA0KICAgIHNlc3Npb25Db29raWVOYW1lID0gIk1DMCIs
DQogICAgY29va2llRGlzYWJsZWQgPSAwLA0KICAgIG1ldGFUYWdzID0gIiIsDQog
ICAgY3VzdG9tVGFncyA9ICIiLA0KICAgIHB2SW5mbyA9IFtdLA0KICAgIGNsaWNr
SW5mbyA9ICIiLA0KICAgIHFzID0gIiIsDQogICAgY3VyclRpbWVBc1N0cmluZywg
aW1nQXJyYXkgPSBbXSwNCiAgICBpbWdBcnJheUluZGV4ID0gMCwNCiAgICBjdXN0
b21JbmZvID0gIiIsDQogICAgdHogPSA0MjAsDQogICAgc2xDID0gIiIsDQogICAg
ZmxDID0gIiIsDQogICAgY250QyA9ICIiLA0KICAgIGJzQyA9ICIiLA0KICAgIGNs
aWNrZWRFbGVtZW50cyA9IFsiQSIsICJJTUciLCAiQVJFQSIsICJJTlBVVCJdOw0K
DQpmdW5jdGlvbiBNc2NvbUN1c3RvbUV2ZW50KCkgew0KICAgIHRyeSB7DQogICAg
ICAgIE1zY29tSGFuZGxlU2Vzc2lvbigpOw0KICAgICAgICB2YXIgbm9BZGRDb3Qg
PSBmYWxzZTsNCiAgICAgICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7DQog
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpID0gaSArIDIpIHsNCiAg
ICAgICAgICAgIHZhciBuYW1lID0gYXJndW1lbnRzW2ldLnRvU3RyaW5nKCkudG9M
b3dlckNhc2UoKTsNCiAgICAgICAgICAgIGlmIChuYW1lLmluZGV4T2YoIm1zLiIp
ID09IDApIGN1c3RvbUluZm8gKz0gIiYiICsgTXNjb21FbmNvZGUobmFtZSkgKyAi
PSIgKyAoYXJndW1lbnRzW2kgKyAxXSA9PSB1bmRlZmluZWQgPyAiIiA6IE1zY29t
RW5jb2RlKGFyZ3VtZW50c1tpICsgMV0udG9TdHJpbmcoKSkpDQogICAgICAgICAg
ICBpZiAobmFtZSA9PSAiY290Iikgew0KICAgICAgICAgICAgICAgIGlmIChhcmd1
bWVudHNbaSArIDFdID09IG51bGwgfHwgYXJndW1lbnRzW2kgKyAxXSA9PSAnbnVs
bCcpIG5vQWRkQ290ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBlbHNlIGlmIChh
cmd1bWVudHNbaSArIDFdICE9IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAg
ICAgICBub0FkZENvdCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIGN1c3Rv
bUluZm8gKz0gIiZjb3Q9IiArIE1zY29tRW5jb2RlKGFyZ3VtZW50c1tpICsgMV0u
dG9TdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgICAgIGlmIChjdXN0b21JbmZvICE9ICIiKSBNc2NvbUJl
YWNvbihub0FkZENvdCkNCiAgICB9IGNhdGNoIChlKSB7IH0NCn0NCmZ1bmN0aW9u
IE1zY29tU2V0UFZJbmZvKCkgew0KICAgIHB2SW5mby5wdXNoKCJ0ej0iICsgdHog
LyAtNjApOw0KICAgIGlmICh3aW5kb3cudmFyU2VnbWVudGF0aW9uICE9IHVuZGVm
aW5lZCAmJiB2YXJTZWdtZW50YXRpb24gPT0gMSkgcHZJbmZvLnB1c2goIiZjcz0x
Iik7DQogICAgaWYgKGNvb2tpZURpc2FibGVkID09IDEpIHB2SW5mby5wdXNoKCIm
Y2Q9MSIpOw0KICAgIHB2SW5mby5wdXNoKCImdGk9IiArIE1zY29tRW5jb2RlKGRv
Y3VtZW50LnRpdGxlKSk7DQogICAgTXNjb21HZXRTaWx2ZXJMaWdodEluZm8oKTsN
CiAgICBNc2NvbUdldEZsYWhzSW5mbygpOw0KICAgIE1zY29tR2V0Q1R5cGVIcElu
Zm8oKTsNCiAgICB2YXIgcmVmID0gTXNjb21FbmNvZGUoZG9jdW1lbnQucmVmZXJy
ZXIpOw0KICAgIGlmIChyZWYgIT0gbnVsbCAmJiByZWYgIT0gIiIpIHB2SW5mby5w
dXNoKCImcj0iICsgcmVmKTsNCiAgICBwdkluZm8ucHVzaCgiJnRzPSIgKyBjdXJy
VGltZUFzU3RyaW5nKTsNCiAgICBpZiAodHlwZW9mIHNjcmVlbiA9PSAib2JqZWN0
IikgcHZJbmZvLnB1c2goIiZzcj0iICsgc2NyZWVuLndpZHRoICsgIngiICsgc2Ny
ZWVuLmhlaWdodCk7DQogICAgTXNjb21HZXRCcm93c2VyU2l6ZSgpDQp9DQpmdW5j
dGlvbiBNc2NvbUdldEJyb3dzZXJTaXplKCkgew0KICAgIGlmIChic0MgIT0gIiIp
IHsNCiAgICAgICAgcHZJbmZvLnB1c2goYnNDKTsNCiAgICAgICAgcmV0dXJuDQog
ICAgfQ0KICAgIGlmIChkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICE9IHVuZGVm
aW5lZCkgYnNDID0gIiZicz0iICsgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCAr
ICJ4IiArIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0Ow0KICAgIGVsc2UgaWYg
KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuY2xpZW50V2lkdGggIT0gdW5kZWZpbmVkKSBic0MgPSAiJmJzPSIgKyBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggKyAieCIgKyBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0Ow0KICAgIGVsc2UgaWYg
KHdpbmRvdy5pbm5lcldpZHRoICE9IHVuZGVmaW5lZCkgYnNDID0gIiZicz0iICsg
d2luZG93LmlubmVyV2lkdGggKyAieCIgKyB3aW5kb3cuaW5uZXJIZWlnaHQ7DQog
ICAgaWYgKGJzQyAhPSAiIikgcHZJbmZvLnB1c2goYnNDKQ0KfQ0KZnVuY3Rpb24g
TXNjb21HZXRDVHlwZUhwSW5mbygpIHsNCiAgICBpZiAoY250QyAhPSAiIikgew0K
ICAgICAgICBwdkluZm8ucHVzaChjbnRDKTsNCiAgICAgICAgcmV0dXJuDQogICAg
fQ0KICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkuYWRkQmVo
YXZpb3IpIHsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRCZWhhdmlvcigiI2Rl
ZmF1bHQjY2xpZW50Q2FwcyIpOw0KICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5j
b25uZWN0aW9uVHlwZSkgY250QyArPSAiJmNudD0iICsgZG9jdW1lbnQuYm9keS5j
b25uZWN0aW9uVHlwZTsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRCZWhhdmlv
cigiI2RlZmF1bHQjaG9tZVBhZ2UiKTsNCiAgICAgICAgY250QyArPSBkb2N1bWVu
dC5ib2R5LmlzSG9tZVBhZ2UobG9jYXRpb24uaHJlZikgPyAiJmhwPTEiIDogIiIN
CiAgICB9DQogICAgaWYgKGNudEMgIT0gIiIpIHB2SW5mby5wdXNoKGNudEMpDQp9
DQpmdW5jdGlvbiBNc2NvbUdldEZsYWhzSW5mbygpIHsNCiAgICBpZiAoZmxDICE9
ICIiKSB7DQogICAgICAgIHB2SW5mby5wdXNoKGZsQyk7DQogICAgICAgIHJldHVy
bg0KICAgIH0NCiAgICB2YXIgZmxhc2hNYXggPSAobmV3IERhdGUpLmdldFllYXIo
KSAtIDE5OTI7DQogICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigi
TVNJRSIpICE9IC0xKSBmb3IgKHZhciBpID0gZmxhc2hNYXg7IGkgPiAwOyBpLS0p
IHRyeSB7DQogICAgICAgIHZhciBmbGFzaCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJT
aG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC4iICsgaSk7DQogICAgICAgIGZs
QyArPSAiJmZpPTEiOw0KICAgICAgICBmbEMgKz0gIiZmdj0iICsgaSArICIuMCI7
DQogICAgICAgIGJyZWFrDQogICAgfSBjYXRjaCAoZSkgeyB9IGVsc2UgaWYgKG5h
dmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXSkgew0KICAgICAgICBm
bEMgKz0gIiZmaT0xIjsNCiAgICAgICAgdmFyIHBsdWdpbiA9IG5hdmlnYXRvci5w
bHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXTsNCiAgICAgICAgZmxDICs9ICImZnY9
IiArIHBsdWdpbi5kZXNjcmlwdGlvbi5zcGxpdCgiICIpWzJdDQogICAgfQ0KICAg
IHB2SW5mby5wdXNoKGZsQykNCn0NCmZ1bmN0aW9uIE1zY29tR2V0U2lsdmVyTGln
aHRJbmZvKCkgew0KICAgIGlmIChzbEMgIT0gIiIpIHsNCiAgICAgICAgcHZJbmZv
LnB1c2goc2xDKTsNCiAgICAgICAgcmV0dXJuDQogICAgfQ0KICAgIGlmICh3aW5k
b3cuU2lsdmVybGlnaHQgIT0gdW5kZWZpbmVkKSBzbEMgKz0gIiZzZT0xIjsNCiAg
ICB0cnkgew0KICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9m
KCJNU0lFIikgIT0gLTEpIHsNCiAgICAgICAgICAgIHZhciBzbGkgPSBuZXcgQWN0
aXZlWE9iamVjdCgiQWdDb250cm9sLkFnQ29udHJvbCIpOw0KICAgICAgICAgICAg
aWYgKHNsaSkgew0KICAgICAgICAgICAgICAgIHNsQyArPSAiJnNpPTEiOw0KICAg
ICAgICAgICAgICAgIHNsQyArPSAiJnN2PSIgKyBNc2NvbUdldFNsdlZlcnNpb24o
c2xpKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKG5hdmlnYXRv
ci5wbHVnaW5zWyJTaWx2ZXJsaWdodCBQbHVnLUluIl0pIHsNCiAgICAgICAgICAg
IHZhciBwbHVnaW4gPSBuYXZpZ2F0b3IucGx1Z2luc1siU2lsdmVybGlnaHQgUGx1
Zy1JbiJdOw0KICAgICAgICAgICAgc2xDICs9ICImc2k9MSI7DQogICAgICAgICAg
ICB2YXIgYWN0dWFsVmVyID0gcGx1Z2luLmRlc2NyaXB0aW9uOw0KICAgICAgICAg
ICAgaWYgKGFjdHVhbFZlciAmJiBhY3R1YWxWZXIgIT0gdW5kZWZpbmVkKSB7DQog
ICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBhY3R1YWxWZXIuc3BsaXQoIi4iKTsN
CiAgICAgICAgICAgICAgICBhY3R1YWxWZXIgPSB0ZW1wWzBdICsgIi4iICsgdGVt
cFsxXTsNCiAgICAgICAgICAgICAgICBzbEMgKz0gIiZzdj0iICsgYWN0dWFsVmVy
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9IGNhdGNoIChlKSB7IH0N
CiAgICBwdkluZm8ucHVzaChzbEMpDQp9DQpmdW5jdGlvbiBNc2NvbUdldFNsdlZl
cnNpb24oY29udHJvbCkgew0KICAgIHZhciBzbHYgPSAiIiwNCiAgICAgICAgc2xW
TWF4ID0gKG5ldyBEYXRlKS5nZXRZZWFyKCkgLSAyMDA0Ow0KICAgIGZvciAodmFy
IGkgPSBzbFZNYXg7IGkgPiAwOyBpLS0pIGZvciAodmFyIGogPSA5OyBqID49IDA7
IGotLSkgew0KICAgICAgICBzbHYgPSBpICsgIi4iICsgajsNCiAgICAgICAgaWYg
KGNvbnRyb2wuSXNWZXJzaW9uU3VwcG9ydGVkKHNsdikpIHJldHVybiBzbHYNCiAg
ICB9DQogICAgcmV0dXJuIHNsdg0KfQ0KZnVuY3Rpb24gTXNjb21IYW5kbGVTZXNz
aW9uKCkgew0KICAgIHZhciBjdXJyRGF0ZSA9IG5ldyBEYXRlOw0KICAgIHR6ID0g
Y3VyckRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTsNCiAgICB2YXIgY3VyclRpbWUg
PSBjdXJyRGF0ZS5nZXRUaW1lKCk7DQogICAgY3VyclRpbWVBc1N0cmluZyA9IGN1
cnJUaW1lLnRvU3RyaW5nKCk7DQogICAgdmFyIGNvb2tpZVByZSA9ICIiLA0KICAg
ICAgICBpbmRleCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKHNlc3Npb25Db29r
aWVOYW1lICsgIj0iKTsNCiAgICBpZiAoaW5kZXggPT0gLTEpIHsNCiAgICAgICAg
c2Vzc2lvbklkID0gY3VyclRpbWVBc1N0cmluZzsNCiAgICAgICAgaWYgKGNvb2tp
ZURpc2FibGVkID09IDEpIHJldHVybjsNCiAgICAgICAgY29va2llUHJlID0gc2Vz
c2lvbkNvb2tpZU5hbWUgKyAiPSIgKyBzZXNzaW9uSWQNCiAgICB9IGVsc2Ugew0K
ICAgICAgICB2YXIgc3RhcnQgPSBpbmRleCArIHNlc3Npb25Db29raWVOYW1lLmxl
bmd0aCArIDEsDQogICAgICAgICAgICBlbmQgPSBkb2N1bWVudC5jb29raWUubGVu
Z3RoOw0KICAgICAgICBjb29raWVQcmUgPSBzZXNzaW9uQ29va2llTmFtZSArICI9
IiArIGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCkNCiAgICB9
DQogICAgZG9jdW1lbnQuY29va2llID0gY29va2llUHJlOw0KICAgIGluZGV4ID0g
ZG9jdW1lbnQuY29va2llLmluZGV4T2Yoc2Vzc2lvbkNvb2tpZU5hbWUgKyAiPSIp
Ow0KICAgIGlmIChpbmRleCA9PSAtMSkgY29va2llRGlzYWJsZWQgPSAxDQp9DQpm
dW5jdGlvbiBNc2NvbWRlYnVnKCkgew0KICAgIGFsZXJ0KGFyZ3VtZW50c1swXSkN
Cn0NCmZ1bmN0aW9uIE1zY29tUHJvY2Vzc0NsaWNrKGV2ZW50KSB7DQogICAgdHJ5
IHsNCiAgICAgICAgTXNjb21IYW5kbGVTZXNzaW9uKCk7DQogICAgICAgIHZhciBl
dnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQsDQogICAgICAgICAgICBlOw0KICAg
ICAgICBpZiAoZXZ0KSB7DQogICAgICAgICAgICBlID0gZXZ0LnNyY0VsZW1lbnQg
fHwgZXZ0LnRhcmdldDsNCiAgICAgICAgICAgIHdoaWxlIChlLnRhZ05hbWUgJiYg
TXNjb21Jc0luTGlzdChlLnRhZ05hbWUpID09IGZhbHNlKSBlID0gZS5wYXJlbnRF
bGVtZW50IHx8IGUucGFyZW50Tm9kZQ0KICAgICAgICB9DQogICAgICAgIGlmIChl
ICYmIGUudGFnTmFtZSkgew0KICAgICAgICAgICAgc3dpdGNoIChlLnRhZ05hbWUp
IHsNCiAgICAgICAgICAgICAgICBjYXNlICJBIjoNCiAgICAgICAgICAgICAgICAg
ICAgdmFyIHRpdGxlOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQu
YWxsKSB0aXRsZSA9IGUuaW5uZXJUZXh0IHx8IGUuaW5uZXJIVE1MOw0KICAgICAg
ICAgICAgICAgICAgICBlbHNlIHRpdGxlID0gZS50ZXh0IHx8IGUuaW5uZXJIVE1M
Ow0KICAgICAgICAgICAgICAgICAgICBjbGlja0luZm8gPSAiJmNvdD0xJmNuPSIg
KyBNc2NvbUVuY29kZSh0aXRsZSkgKyAiJmNpZD0iICsgTXNjb21HZXRJZChlKSAr
ICImY3Q9IiArIChlLmhyZWYgPyBNc2NvbUVuY29kZShlLmhyZWYpIDogIiIpOw0K
ICAgICAgICAgICAgICAgICAgICBjdXN0b21UYWdzID0gTXNjb21SZWFkQWxsVGFn
cyhlKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAg
ICAgY2FzZSAiSU1HIjoNCiAgICAgICAgICAgICAgICAgICAgY2xpY2tJbmZvID0g
IiZjb3Q9MiZjbj0iICsgKGUuYWx0ID8gTXNjb21FbmNvZGUoZS5hbHQpIDogIiIp
ICsgIiZjaWQ9IiArIE1zY29tR2V0SWQoZSkgKyAiJmN0PSIgKyBNc2NvbUdldElt
YWdlSFJFRihlKTsNCiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGFncyA9IE1z
Y29tUmVhZEFsbFRhZ3MoZSk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgICAgIGNhc2UgIkFSRUEiOg0KICAgICAgICAgICAgICAgICAg
ICBjbGlja0luZm8gPSAiJmNvdD0zJmNuPSIgKyAoZS5hbHQgPyBNc2NvbUVuY29k
ZShlLmFsdCkgOiAiIikgKyAiJmNpZD0iICsgTXNjb21HZXRJZChlKSArICImY3Q9
IiArIChlLmhyZWYgPyBNc2NvbUVuY29kZShlLmhyZWYpIDogIiIpOw0KICAgICAg
ICAgICAgICAgICAgICBjdXN0b21UYWdzID0gTXNjb21SZWFkQWxsVGFncyhlKTsN
CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2Fz
ZSAiSU5QVVQiOg0KICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGUudHlw
ZSB8fCAiIiwNCiAgICAgICAgICAgICAgICAgICAgY3R4ID0gIiI7DQogICAgICAg
ICAgICAgICAgICAgIGlmICh0eXBlICYmICh0eXBlID09ICJidXR0b24iIHx8IHR5
cGUgPT0gInJlc2V0IiB8fCB0eXBlID09ICJzdWJtaXQiIHx8IHR5cGUgPT0gImlt
YWdlIikgfHwgdHlwZSA9PSAidGV4dCIgJiYgKGV2dC53aGljaCB8fCBldnQua2V5
Q29kZSkgPT0gMTMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0g
ZS52YWx1ZSB8fCBlLm5hbWUgfHwgZS5hbHQgfHwgZS5pZDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaWNrSW5mbyA9ICImY290PTQmY249IiArICh0ID8gTXNj
b21FbmNvZGUodCkgOiAiIikgKyAiJmNpZD0iICsgTXNjb21HZXRJZChlKSArICIm
Y3Q9IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmZvcm0pIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0luZm8gKz0gTXNjb21FbmNv
ZGUoZS5mb3JtLmFjdGlvbikgfHwgTXNjb21FbmNvZGUod2luZG93LmxvY2F0aW9u
LnBhdGhuYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxl
bXMgPSBlLmZvcm0uZWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbiA9IDE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZXR5cGUgPSBlbGVtc1tpXS50eXBlOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXR5cGUgPT0gInRleHQi
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHggKz0g
IiZ0IiArIG4gKyAiPSIgKyBNc2NvbUVuY29kZShlbGVtc1tpXS5uYW1lIHx8IGVs
ZW1zW2ldLmlkKSArICImdiIgKyBuICsgIj0iICsgTXNjb21FbmNvZGUoZWxlbXNb
aV0udmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bisrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgY2xpY2tJbmZvICs9IE1zY29tRW5jb2RlKHdpbmRvdy5sb2NhdGlvbi5w
YXRobmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4ICE9ICIi
KSBjbGlja0luZm8gKz0gY3R4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgY3Vz
dG9tVGFncyA9IE1zY29tUmVhZEFsbFRhZ3MoZSkNCiAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAg
ICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICBjbGlja0luZm8gPSAiIg0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGNsaWNrSW5mbyAhPSAiIikg
TXNjb21CZWFjb24odHJ1ZSkNCiAgICAgICAgfQ0KICAgIH0gY2F0Y2ggKGUpIHsg
fQ0KfQ0KZnVuY3Rpb24gTXNjb21CZWFjb24obm9BZGRDb3QpIHsNCiAgICB0cnkg
ew0KICAgICAgICB2YXIgc3JjID0gW107DQogICAgICAgIHNyYy5wdXNoKHdpbmRv
dy5sb2NhdGlvbi5wcm90b2NvbCArICIvL2MubWljcm9zb2Z0LmNvbS90cmFuc19w
aXhlbC5hc3B4PyIpOw0KICAgICAgICBwdkluZm8ubGVuZ3RoID0gMDsNCiAgICAg
ICAgTXNjb21TZXRQVkluZm8oKTsNCiAgICAgICAgc3JjLnB1c2gocHZJbmZvLmpv
aW4oIiIpKTsNCiAgICAgICAgaWYgKGNsaWNrSW5mbyAhPSAiIikgc3JjLnB1c2go
Y2xpY2tJbmZvKTsNCiAgICAgICAgTXNjb21Jbml0TWV0YSgpOw0KICAgICAgICBp
ZiAobWV0YVRhZ3MgIT0gIiIpIHNyYy5wdXNoKG1ldGFUYWdzKTsNCiAgICAgICAg
aWYgKGN1c3RvbVRhZ3MgIT0gIiIpIHNyYy5wdXNoKGN1c3RvbVRhZ3MpOw0KICAg
ICAgICBpZiAoY3VzdG9tSW5mbyAhPSAiIikgew0KICAgICAgICAgICAgaWYgKG5v
QWRkQ290ICE9IHRydWUpIHsNCiAgICAgICAgICAgICAgICAvL2FsZXJ0KCdhZGRp
bmcgY290ID0gNScpOw0KICAgICAgICAgICAgICAgIHNyYy5wdXNoKCImY290PTUi
KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHNyYy5wdXNoKGN1c3RvbUlu
Zm8pDQogICAgICAgIH0NCiAgICAgICAgdmFyIHNyY1N0cmluZyA9IHNyYy5qb2lu
KCIiKTsNCiAgICAgICAgaWYgKHNyY1N0cmluZy5sZW5ndGggPiAyMDQ4KSBzcmNT
dHJpbmcgPSBzcmNTdHJpbmcuc3Vic3RyaW5nKDAsIDIwNDIpICsgIiZ0cj0xIjsN
CiAgICAgICAgaWYgKGRvY3VtZW50LmltYWdlcykgew0KICAgICAgICAgICAgaW1n
QXJyYXlbaW1nQXJyYXlJbmRleF0gPSBuZXcgSW1hZ2U7DQogICAgICAgICAgICBp
bWdBcnJheVtpbWdBcnJheUluZGV4XS5zcmMgPSBzcmNTdHJpbmc7DQogICAgICAg
ICAgICBpbWdBcnJheUluZGV4KysNCiAgICAgICAgfSBlbHNlIGRvY3VtZW50Lndy
aXRlKCc8SU1HIEFMVD0iIiBCT1JERVI9IjAiIE5BTUU9ImJJbWciIFdJRFRIPSIx
IiBIRUlHSFQ9IjEiIFNSQz0iJyArIHNyY1N0cmluZyArICciLz4nKTsNCiAgICAg
ICAgY2xpY2tJbmZvID0gIiI7DQogICAgICAgIGN1c3RvbUluZm8gPSAiIg0KICAg
IH0gY2F0Y2ggKGUpIHsgfQ0KfQ0KZnVuY3Rpb24gTXNjb21HZXRJZChvYmopIHsN
CiAgICBpZiAob2JqKSB7DQogICAgICAgIGlmIChvYmouaWQgPT0gdW5kZWZpbmVk
KSByZXR1cm4gIiI7DQogICAgICAgIHJldHVybiBNc2NvbUVuY29kZShvYmouaWQp
DQogICAgfQ0KICAgIHJldHVybiAiIg0KfQ0KZnVuY3Rpb24gTXNjb21HZXRJbWFn
ZUhSRUYob2JqKSB7DQogICAgdmFyIHRlbXAgPSBvYmo7DQogICAgaWYgKG9iaikg
ew0KICAgICAgICBvYmogPSBvYmoucGFyZW50RWxlbWVudCB8fCBvYmoucGFyZW50
Tm9kZTsNCiAgICAgICAgaWYgKG9iaiAmJiBvYmoudGFnTmFtZSA9PSAiQSIpIHJl
dHVybiBvYmouaHJlZiA/IE1zY29tRW5jb2RlKG9iai5ocmVmKSA6ICIiOw0KICAg
ICAgICBpZiAodGVtcCAmJiB0ZW1wLnNyYykgcmV0dXJuIE1zY29tRW5jb2RlKHRl
bXAuc3JjKQ0KICAgIH0NCiAgICByZXR1cm4gIiINCn0NCmZ1bmN0aW9uIE1zY29t
UmVhZEFsbFRhZ3Mob2JqKSB7DQogICAgdmFyIGFsbFRhZ3MgPSBbXTsNCiAgICB3
aGlsZSAob2JqICYmIG9iaiAhPSAidW5kZWZpbmVkIikgew0KICAgICAgICBhbGxU
YWdzLnB1c2goTXNjb21SZWFkRWxlbWVudFRhZ3Mob2JqKSk7DQogICAgICAgIG9i
aiA9IG9iai5wYXJlbnRFbGVtZW50IHx8IG9iai5wYXJlbnROb2RlDQogICAgfQ0K
ICAgIHJldHVybiBhbGxUYWdzLmpvaW4oIiIpDQp9DQpmdW5jdGlvbiBNc2NvbVJl
YWRFbGVtZW50VGFncyhvYmopIHsNCiAgICB2YXIgcmVzdWx0ID0gIiI7DQogICAg
aWYgKG9iaikgZm9yICh2YXIgYXR0ciBpbiBvYmouYXR0cmlidXRlcykgaWYgKGF0
dHIgIT0gdW5kZWZpbmVkKSBpZiAob2JqLmF0dHJpYnV0ZXNbYXR0cl0gIT0gbnVs
bCAmJiBvYmouYXR0cmlidXRlc1thdHRyXSAhPSB1bmRlZmluZWQpIHsNCiAgICAg
ICAgdmFyIG5uID0gb2JqLmF0dHJpYnV0ZXNbYXR0cl0ubmFtZTsNCiAgICAgICAg
aWYgKG5uICE9IG51bGwgJiYgbm4gIT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAg
ICB2YXIgbm5sID0gbm4udG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgIGlmIChu
bmwuaW5kZXhPZigibXMuIikgPT0gMCkgcmVzdWx0ICs9ICImIiArIE1zY29tRW5j
b2RlKG5uKSArICI9IiArIE1zY29tRW5jb2RlKG9iai5hdHRyaWJ1dGVzW2F0dHJd
LnZhbHVlKQ0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiByZXN1bHQNCn0N
CmZ1bmN0aW9uIE1zY29tSXNJbkxpc3QodGFnKSB7DQogICAgZm9yICh2YXIgdCBp
biBjbGlja2VkRWxlbWVudHMpIGlmIChjbGlja2VkRWxlbWVudHNbdF0gPT0gdGFn
LnRvVXBwZXJDYXNlKCkpIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBmYWxzZQ0K
fQ0KZnVuY3Rpb24gTXNjb21zZXRFdmVudHMoKSB7DQogICAgaWYgKHdpbmRvdy52
YXJDbGlja1RyYWNraW5nICE9IHVuZGVmaW5lZCAmJiB2YXJDbGlja1RyYWNraW5n
ID09IDEpIHsNCiAgICAgICAgdmFyIGV2ZW50ID0gbmF2aWdhdG9yLmFwcFZlcnNp
b24uaW5kZXhPZigiTVNJRSIpICE9IC0xID8gImNsaWNrIiA6ICJtb3VzZWRvd24i
Ow0KICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkgaWYgKGRvY3VtZW50LmJvZHku
YWRkRXZlbnRMaXN0ZW5lcikgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVy
KGV2ZW50LCB3aW5kb3dbIk1zY29tUHJvY2Vzc0NsaWNrIl0sIGZhbHNlKTsNCiAg
ICAgICAgZWxzZSBpZiAoZG9jdW1lbnQuYm9keS5hdHRhY2hFdmVudCkgZG9jdW1l
bnQuYm9keS5hdHRhY2hFdmVudCgib25jbGljayIsIHdpbmRvd1siTXNjb21Qcm9j
ZXNzQ2xpY2siXSkNCiAgICB9DQp9DQpmdW5jdGlvbiBNc2NvbUluaXRNZXRhKCkg
ew0KICAgIHZhciBtZXRhZWxlbXM7DQogICAgaWYgKGRvY3VtZW50LmFsbCkgbWV0
YWVsZW1zID0gZG9jdW1lbnQuYWxsLnRhZ3MoIm1ldGEiKTsNCiAgICBlbHNlIGlm
IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIG1ldGFlbGVtcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7DQogICAgbWV0YVRhZ3MgPSAi
IjsNCiAgICBpZiAodHlwZW9mIG1ldGFlbGVtcyAhPSAidW5kZWZpbmVkIikgZm9y
ICh2YXIgaSA9IDA7IGkgPCBtZXRhZWxlbXMubGVuZ3RoOyBpKyspIHsNCiAgICAg
ICAgdmFyIG1ldGEgPSBtZXRhZWxlbXMuaXRlbShpKTsNCiAgICAgICAgaWYgKG1l
dGEubmFtZSkgew0KICAgICAgICAgICAgdmFyIG10ID0gbWV0YS5uYW1lLnRvTG93
ZXJDYXNlKCk7DQogICAgICAgICAgICBpZiAobXQuaW5kZXhPZigibXMuIikgPT0g
MCkgbWV0YVRhZ3MgKz0gIiYiICsgTXNjb21FbmNvZGUobWV0YS5uYW1lKSArICI9
IiArIE1zY29tRW5jb2RlKG1ldGEuY29udGVudCkNCiAgICAgICAgfQ0KICAgIH0N
Cn0NCmZ1bmN0aW9uIE1zY29tSW5pdCgpIHsNCiAgICB0cnkgew0KICAgICAgICBN
c2NvbUhhbmRsZVNlc3Npb24oKTsNCiAgICAgICAgTXNjb21zZXRFdmVudHMoKTsN
CiAgICAgICAgTXNjb21HZXRNVUlEKCk7DQogICAgICAgIGlmIChmbCA9PSAwICYm
IHdpbmRvdy52YXJMb2FkVHJhY2tpbmcgPT0gMSkgTXNjb21CZWFjb24odHJ1ZSkN
CiAgICB9IGNhdGNoIChlKSB7IH0NCn0NCmZ1bmN0aW9uIE1zY29tR2V0TVVJRCgp
IHsNCiAgICBpZiAod2luZG93LnZhckN1c3RvbWVyVHJhY2tpbmcgIT0gdW5kZWZp
bmVkICYmIHZhckN1c3RvbWVyVHJhY2tpbmcgPT0gMSkgdHJ5IHsNCiAgICAgICAg
dmFyIG11aWRzcmMgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAiLy9jMS5t
aWNyb3NvZnQuY29tL2MuZ2lmP0RJPTQwNTAmZGlkPTEmdD0iOw0KICAgICAgICB2
YXIgb25sb2FkID0gKHdpbmRvdy52YXJMb2FkVHJhY2tpbmcgIT0gMSkgPyAnJyA6
ICcgb25sb2FkPSJqYXZhc2NyaXB0Ok1zY29tQmVhY29uKHRydWUpOyInOw0KICAg
ICAgICBkb2N1bWVudC53cml0ZSgnPGlmcmFtZSBpZD0iX21zbkZyYW1lIiBzcmM9
IicgKyBtdWlkc3JjICsgJyIgc3R5bGU9InotaW5kZXg6LTE7aGVpZ2h0OjFweDt3
aWR0aDoxcHg7ZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuOyInICsgb25s
b2FkICsgJz48L2lmcmFtZT4nKTsNCiAgICAgICAgZmwgPSAxDQogICAgfSBjYXRj
aCAoZSkgew0KICAgICAgICBmbCA9IDANCiAgICB9DQp9DQpmdW5jdGlvbiBNc2Nv
bUVuY29kZShTKSB7DQogICAgcmV0dXJuIHR5cGVvZiBlbmNvZGVVUklDb21wb25l
bnQgPT0gImZ1bmN0aW9uIiA/IGVuY29kZVVSSUNvbXBvbmVudChTKSA6IGVzY2Fw
ZShTKQ0KfQ0KTXNjb21Jbml0KCk7
------------QQo2awhRl3KeUZRR72vsx4--