# vdh_flickr v0.8.11
# Shows your flickr.com pictures in TextPattern.
# Ralph von der Heyden
# http://www.rvdh.net/vdh_flickr

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

YTo5OntzOjc6InZlcnNpb24iO3M6NjoiMC44LjExIjtzOjY6ImF1dGhvciI7czoyMDoiUmFs
cGggdm9uIGRlciBIZXlkZW4iO3M6MTA6ImF1dGhvcl91cmkiO3M6MzA6Imh0dHA6Ly93d3cu
cnZkaC5uZXQvdmRoX2ZsaWNrciI7czoxMToiZGVzY3JpcHRpb24iO3M6NDY6IlNob3dzIHlv
dXIgZmxpY2tyLmNvbSBwaWN0dXJlcyBpbiBUZXh0UGF0dGVybi4iO3M6NDoidHlwZSI7aTow
O3M6NDoibmFtZSI7czoxMDoidmRoX2ZsaWNrciI7czo0OiJoZWxwIjtzOjIzOTMwOiIJPHA+
CmgxLiB2ZGhfZmxpY2tyIGRvY3VtZW50YXRpb248L3A+CgoJPGgyIGlkPSJjb250ZW50cyI+
Q29udGVudHM8L2gyPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJl
czwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcmVxdWlyZW1lbnRzIj5SZXF1aXJlbWVudHM8
L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3F1aWNrc3RhcnQiPlF1aWNrc3RhcnQ8L2E+PC9s
aT4KCQk8bGk+PGEgaHJlZj0iI3RhZ3MiPk1haW4gdGFncyBhbmQgdGFnIGF0dHJpYnV0ZXM8
L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2FkZGl0aW9uYWxfdGFncyI+QWRkaXRpb25hbCBU
YWdzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwaWN0dXJlX3NpemVzIj5QaWN0dXJlIHNp
emVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNleGFtcGxlX2NzcyI+RXhhbXBsZSBDU1M8
L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NsZWFuX3VybHMiPkNsZWFuIFVSTHM8L2E+PC9s
aT4KCQk8bGk+PGEgaHJlZj0iI2Zvcm1zIj5DdXN0b21pc2luZyB3aXRoIGZvcm1zPC9hPjwv
bGk+Cgk8L3VsPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8cD52ZGhf
ZmxpY2tyIGlzIGEgZnVsbC1mZWF0dXJlZCBnYWxsZXJ5IHBsdWdpbiBmb3IgdGV4dHBhdHRl
cm4sIHVzaW5nIGEgY2xhc3NpY2FsIHRocmVlLXN0ZXAgc3lzdGVtOiBGaXJzdCwgeW91IGFy
ZSBzaG93biBhIHNldCAoPWFsYnVtKSBwcmV2aWV3IHBhZ2UsIHRoZW4gYSB0aHVtYm5haWwg
cGFnZSwgYW5kIGFuIGltYWdlIHBhZ2UgYWZ0ZXJ3YXJkcy4gVGhlIDxhIGhyZWY9Imh0dHA6
Ly93d3cucnZkaC5uZXQvdmRoX2ZsaWNrci9EZW1vIj5EZW1vPC9hPiBzaG93cyB0aGUgZGVm
YXVsdCBjb25maWd1cmF0aW9uLjxiciAvPgpCdXQgeW91IGNhbiBsZWF2ZSBvdXQgYW55IHN0
ZXAsIHNvIHlvdSBjYW4gZm9yIGV4YW1wbGUgbGVhdmUgb3V0IHRoZSBzZXQgcHJldmlldyBv
ciBib3RoIHRoZSBzZXQgcHJldmlldyBhbmQgdGh1bWJuYWlscyB0byBzaG93IGFuIGluZGl2
aWR1YWwgaW1hZ2UuPC9wPgoKCTxwPkZ1cnRoZXJtb3JlLCB0aGVzZSBhcmUgb3RoZXIgZmVh
dHVyZXMgeW91IG1heSBiZSBpbnRlcmVzdGVkIGluOgoJPHVsPgoJCTxsaT5zZXRzOgoJPHVs
PgoJCTxsaT5zaG93IGFsbCBzZXRzIGV4Y2VwdCBvZiBhIGxpc3Qgb2Ygc2V0czwvbGk+CgkJ
PGxpPnNob3cgbm8gc2V0cyBleGNlcHQgb2YgYSBsaXN0IG9mIHNldHM8L2xpPgoJCTxsaT5z
aG93IHNldCB0aXRsZSwgZGVzY3JpcHRpb24sIG51bWJlciBvZiBwaG90b3M8L2xpPgoJPC91
bD48L2xpPgoJCTxsaT50YWdzOgoJPHVsPgoJCTxsaT5zaG93IGEgbGlzdCBvZiB0aHVtYm5h
aWxzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIGNlcnRhaW4gdGFnLCBvciBhIGxpc3Qg
b2YgdGFncyAoPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj4gLyBPUiBjb21iaW5hdGlv
biBwb3NzaWJsZSk8L2xpPgoJCTxsaT5zaG93IGEgbGlzdCBvZiBhbGwgeW91ciB0YWdzPC9s
aT4KCQk8bGk+c2hvdyBhIGxpc3Qgb2YgeW91ciBYIG1vc3QgcG9wdWxhciB0YWdzICh3aGVy
ZSBYIGlzIGEgbnVtYmVyKTwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPnRodW1ibmFpbHM6Cgk8
dWw+CgkJPGxpPnNob3cgYSBsaXN0IG9mIHRodW1ibmFpbHMgdGhhdCBhcmUgYXNzb2NpYXRl
ZCB3aXRoIGEgc2V0PC9saT4KCQk8bGk+c2hvdyBhIGxpc3Qgb2YgdGh1bWJuYWlscyBvZiB5
b3VyIGxhdGVzdCBYIHBpY3M8L2xpPgoJCTxsaT5zaG93IGEgbGlzdCBvZiB0aHVtYm5haWxz
IHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIGNlcnRhaW4gdGFnLCBvciBhIGxpc3Qgb2Yg
dGFncyAoPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj4gLyBPUiBjb21iaW5hdGlvbiBw
b3NzaWJsZSk8L2xpPgoJCTxsaT5zaG93IGEgcmFuZG9tIHNlbGVjdGlvbiBvZiBYIHBpY3Mg
b2YgYSBzZXQgLyBhIGxpc3Qgb2YgdGFncyAvIHlvdXIgWSBsYXRlc3QgcGljcyAoaGFuZHkg
Zm9yIGJhZGdlcyk8L2xpPgoJCTxsaT5hIGNsaWNrIG9uIGEgdGh1bWJuYWlsIGNhbiBvcGVu
IHRoZSBpbmRpdmlkdWFsIGltYWdlIGluIHRoZSBzYW1lIHdpbmRvdyAvIGEgbmV3IHdpbmRv
dyAvIGluIGZsaWNrcjwvbGk+CgkJPGxpPmZsYXNoIHNsaWRlc2hvdyBvZiBjdXJyZW50IHRo
dW1ibmFpbHM8L2xpPgoJPC91bD48L2xpPgoJCTxsaT5pbmRpdmlkdWFsIGltYWdlOgoJPHVs
PgoJCTxsaT5zaG93IGltYWdlIHRpdGxlIGFuZCBkZXNjcmlwdGlvbjwvbGk+CgkJPGxpPnNo
b3cgZGF0ZSBwb3N0ZWQgYW5kIGRhdGUgdGFrZW48L2xpPgoJCTxsaT5saW5rIGJhY2sgdG8g
dGhlIHNldCBvciB0YWcgbGlzdDwvbGk+CgkJPGxpPmxpbmsgdG8gdGhlIHByZXZpb3VzIGFu
ZCBuZXh0IGltYWdlIG9mIGEgc2V0IC8gdGhlIHBob3Rvc3RyZWFtPC9saT4KCQk8bGk+c2hv
dyBhIHRodW1iIG9mIHRoZSBwcmV2aW91cyBhbmQgbmV4dCBpbWFnZTwvbGk+CgkJPGxpPnNo
b3cgYSBsaXN0IG9mIHRhZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGltYWdlPC9s
aT4KCQk8bGk+d2hlbiBhbiBpbmRpdmlkdWFsIGltYWdlIGlzIGNsaWNrZWQsIGxpbmsgaXQg
dG8gYSBzcGVjaWZpYyB1cmwgLyB0aGUgb3JpZ2luYWwgc2l6ZWQgaW1hZ2UgLyB0aGUgaW1h
Z2Ugb24gZmxpY2tyLmNvbSAvIHRoZSBpbWFnZSBpbmZvcm1hdGlvbiBwYWdlIG9uIGZsaWNr
ci5jb208L2xpPgoJPC91bD48L2xpPgoJCTxsaT5wYWdpbmF0aW9uOgoJPHVsPgoJCTxsaT5w
YWdpbmF0aW9uIGZvciBhbGwga2luZCBvZiB0aHVtYm5haWwgbGlzdHM8L2xpPgoJCTxsaT5z
aG93IGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPmxpbmsgdG8gcHJldmlvdXMvbmV4dC9maXJz
dC9sYXN0IHBhZ2U8L2xpPgoJCTxsaT5zaG93IGxpc3Qgb2YgcGFnZXM8L2xpPgoJCTxsaT5z
aG93IHRvdGFsIG51bWJlciBvZiBpbWFnZXM8L2xpPgoJCTxsaT5zaG93IHJhbmdlIG9mIGlt
YWdlcyB0aGF0IGlzIGRpc3BsYXllZDwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPmdlbmVyYWw6
Cgk8dWw+CgkJPGxpPnNwZWNpZnkgdGhlIHNpemVzIGZvciBzZXQgcHJldmlldywgdGh1bWJu
YWlsIGFuZCBpbmRpdmlkdWFsIGltYWdlPC9saT4KCQk8bGk+c2hvdyBwcml2YXRlIHBpY3Ms
IHRvbzwvbGk+CgkJPGxpPmNsZWFuIHVybHMgKHNnYl91cmxfaGFuZGxlciBhbmQgLmh0YWNj
ZXNzIHR3ZWFrIG5lZWRlZCk8L2xpPgoJCTxsaT52YWxpZCA8c3BhbiBjbGFzcz0iY2FwcyI+
WEhUTUw8L3NwYW4+IDEuMCBTdHJpY3QgaW4gZGVmYXVsdCBjb25maWd1cmF0aW9uPC9saT4K
CQk8bGk+dHdlYWthYmxlIDxzcGFuIGNsYXNzPSJjYXBzIj5YSFRNTDwvc3Bhbj4gdmlhIGZv
cm1zPC9saT4KCTwvdWw+PC9saT4KCTwvdWw+PC9wPgoKCTxwPjxhIGhyZWY9IiNjb250ZW50
cyI+JnVhcnI7IHRvcDwvYT48L3A+CgoJPGgyIGlkPSJyZXF1aXJlbWVudHMiPlJlcXVpcmVt
ZW50czwvaDI+CgoJPHA+SW4gb3JkZXIgdG8gcnVuIHZkaF9mbGlja3IsIHlvdSBtdXN0IGZp
dCB0aGVzZSByZXF1aXJlbWVudHMgb24geW91ciBzZXJ2ZXI6PC9wPgoKCTx1bD4KCQk8bGk+
VGV4dHBhdHRlcm4gdmVyc2lvbiA0IG9yIG5ld2VyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9
ImNhcHMiPlBIUDwvc3Bhbj4gNSB3aXRoIFNpbXBsZVhNTCBlbmFibGVkLjwvbGk+CgkJPGxp
PjxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IDQuMy5YIHdpdGggPHNwYW4gY2xhc3M9
ImNhcHMiPkRPTS1YTUw8L3NwYW4+IGVuYWJsZWQuPC9saT4KCTwvdWw+CgoJPHA+PGEgaHJl
Zj0iI2NvbnRlbnRzIj4mdWFycjsgdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InF1aWNrc3RhcnQi
PlF1aWNrc3RhcnQ8L2gyPgoKCTx1bD4KCQk8bGk+Q3JlYXRlIGEgbmV3IHNlY3Rpb24gd2hp
Y2ggd2lsbCBsYXRlciBob2xkIHlvdXIgR2FsbGVyeS48L2xpPgoJCTxsaT5DcmVhdGUgYSBu
ZXcgYXJ0aWNsZSB3aXRoIG9ubHkgdGhlIGZvbGxvd2luZyB0ZXh0IGluIGl0OiA8YnIgLz4K
IDxjb2RlPiYjNjA7dHhwOnZkaF9mbGlja3IgbnNpZD0mIzM0OzEyMzQ1Njc4QE4wMCYjMzQ7
IC8mIzYyOzwvY29kZT4gPGJyIC8+CiBPZiBjb3Vyc2UgeW91IGhhdmUgdG8gcmVwbGFjZSB0
aGUgbnNpZCB2YWx1ZSBieSB5b3VyIG93biBkYXRhIGZyb20gZmxpY2tyLmNvbS4gWW91IGNh
biB1c2UgPGEgaHJlZj0iaHR0cDovL2lkZ2V0dHIuY29tLyI+aWRnZXR0cjwvYT4gaW4gb3Jk
ZXIgdG8gZGV0ZXJtaW5lIHlvdXIgbnNpZC4gPGJyIC8+CiBBbHNvIG5vdGljZSB0aGF0IHlv
dSBjYW4gcHV0IHR3byBzcGFjZXMgYmVmb3JlIHRoZSB0eHAtdGFnIHRvIHByZXZlbnQgdGV4
dHBhdHRlcm4gZnJvbSB3cmFwcGluZyB0aGUgZ2FsbGVyeSBpbiBwLXRhZ3MuIDxiciAvPgog
PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkg
bnNpZCBpbiB0aGUgdmRoX2ZsaWNrciBzb3VyY2UgY29kZS4gVGhpcyBtYWtlcyBzZW5zZSBp
ZiB5b3UgYXJlIHVzaW5nIHNldmVyYWwgZ2FsbGVyaWVzIG9yIHZkaF9mbGlja3ItdGFncyBv
biB5b3VyIHNpdGUuPC9saT4KCQk8bGk+U2F2ZSB0aGUgYXJ0aWNsZSBpbiB0aGUgc2VjdGlv
biB5b3UgY3JlYXRlZCBpbiB0aGUgZmlyc3Qgc3RlcC48L2xpPgoJCTxsaT5Qb2ludCB5b3Vy
IGJyb3dzZXIgdG8gaHR0cDovL3lvdXJkb21haW4uY29tL2dhbGxlcnlzZWN0aW9uIChvciBo
dHRwOi8veW91cmRvbWFpbi5jb20vP3M9Z2FsbGVyeXNlY3Rpb24pLiA8YnIgLz4KIFlvdSBz
aG91bGQgc2VlIGEgcHJldmlldyBwaWMgZm9yIGFsbCB5b3VyIHNldHMuIElmIHlvdSBjbGlj
ayBvbiBvbmUgb2YgdGhlIHBpY3MsIHlvdSBzaG91bGQgc2VlIGEgdGh1bWJuYWlsIG92ZXJ2
aWV3IG9mIHRoZSBzZWxlY3RlZCBzZXQuIElmIHlvdSBjbGljayBvbiBvbmUgb2YgdGhlIHRo
dW1ibmFpbHMsIHlvdSBzaG91bGQgc2VlIHRoZSBwaWMgaW4gNjQww5c0ODAuPC9saT4KCQk8
bGk+RG93bmxvYWQgPGEgaHJlZj0iI2V4YW1wbGVfY3NzIj50aGlzIGNzczwvYT4gdG8gbWFr
ZSB5b3VyIHBob3RvIHBhZ2UgbG9vayBiZXR0ZXIuPC9saT4KCTwvdWw+CgoJPHA+PGEgaHJl
Zj0iI2NvbnRlbnRzIj4mdWFycjsgdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InRhZ3MiPk1haW4g
dGFncyBhbmQgdGFnIGF0dHJpYnV0ZXM8L2gyPgoKCTxwPlRoZXNlIHRhZ3MgY2FuIGVpdGhl
ciBnbyBpbnRvIGFuIGFydGljbGUgb3IgYSBwYWdlIHRlbXBsYXRlLjwvcD4KCgk8aDM+U3Rl
cCAxOiBBdHRyaWJ1dGVzIGNvbmNlcm5pbmcgdGhlIHNldCBwcmV2aWV3ICh2ZGhfZmxpY2ty
KS48L2gzPgoKCTxwPlNob3dzIHRoZSBwcmV2aWV3IGltYWdlLCB0aXRsZSBhbmQgZGVzY3Jp
cHRpb24gb2Ygc3BlY2lmaWMgc2V0cywgb3IgYWxsIHNldHMuPC9wPgoKCTxoND5NYW5kYXRv
cnkgQXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz5uc2lkPC9zdHJvbmc+
LCBpZiBub3Qgc3BlY2lmaWVkIGluIHRoZSBzb3VyY2UgY29kZS48L2xpPgoJPC91bD4KCgk8
aDQ+UG9zc2libGUgQXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz5zZXRf
cHJldmlld19zaXplPSYjODIyMDttJiM4MjIxOzwvc3Ryb25nPiBQb3NzaWJsZSBpbWFnZSBz
aXplcyBhcmUgZGVzY3JpYmVkIGJlbG93LjwvbGk+CgkJPGxpPjxzdHJvbmc+bW9kZT0mIzgy
MjA7YWxsfG5vbmUmIzgyMjE7PC9zdHJvbmc+IHZkaF9mbGlja3IgYmFzaWNhbGx5IHN1cHBv
cnRzIHR3byBtb2RlcyBmb3Igc2VsZWN0aW5nIGZsaWNrciBzZXRzOiBhbGwgYW5kIG5vbmUu
IERlZmF1bHQgaXMgYWxsLjwvbGk+CgkJPGxpPjxzdHJvbmc+ZXhjZXB0PSYjODIyMDsxNjJY
WFgsMTYzWFhYJiM4MjIxOzwvc3Ryb25nPiBGdXJ0aGVybW9yZSB5b3UgY2FuIHNwZWNpZnkg
YSBsaXN0IG9mIGV4Y2VwdGlvbnMgZXhjZXB0aW9ucy4gPGJyIC8+CiBFeGFtcGxlczo8L2xp
PgoJCTxsaT48c3Ryb25nPmVtYWlsPSYjODIyMDt5b3VAdGhlcmUuY29tJiM4MjIxOyBwYXNz
d29yZD0mIzgyMjA7eW91cnBhc3N3b3JkJiM4MjIxOzwvc3Ryb25nPiBJZiB5b3UgZW50ZXIg
eW91ciBlTWFpbCBhbmQgcGFzc3dvcmQgKHRoZSBvbmUgeW91IHVzZSB0byBsb2dpbiB0byBm
bGlja3IpLCB2ZGhfZmxpY2tyIHdpbGwgc2hvdyB5b3VyIHByaXZhdGUgcGljcywgdG9vLgoJ
PHVsPgoJCTxsaT48Y29kZT4mIzYwO3R4cDp2ZGhfZmxpY2tyIG5zaWQ9JiMzNDsxMjM0NTY3
OEBOMDAmIzM0OyBtb2RlPSYjMzQ7bm9uZSYjMzQ7IGV4Y2VwdD0mIzM0OzE2MlhYWCYjMzQ7
IC8mIzYyOzwvY29kZT4gPGJyIC8+CiBUaGlzIHdpbGwgc2hvdyBvbmx5IHRoZSBzZXQgbnVt
YmVyIDE2MlhYWC48L2xpPgoJCTxsaT48Y29kZT4mIzYwO3R4cDp2ZGhfZmxpY2tyIG5zaWQ9
JiMzNDsxMjM0NTY3OEBOMDAmIzM0OyBtb2RlPSYjMzQ7YWxsJiMzNDsgZXhjZXB0PSYjMzQ7
MTYyWFhYLDE2M1hYWCYjMzQ7IC8mIzYyOzwvY29kZT4gPGJyIC8+CiBUaGlzIHdpbGwgc2hv
dyBhbGwgc2V0cyBleGNlcHQgbnVtYmVycyAxNjJYWFggYW5kIDE2M1hYWC4gTXVsdGlwbGUg
ZXhjZXB0aW9ucyBtdXN0IGJlIGNvbW1hLXNlcGVyYXRlZCB3aXRoIG5vIHNwYWNlcyBpbiBi
ZXR3ZWVuLjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzdHJvbmc+dXNlX2FydGljbGV1cmw9
JiM4MjIwOzB8MSYjODIyMTs8L3N0cm9uZz4gSW5jbHVkZSB0aGUgYXJ0aWNsZSBpZCBhbmQv
b3IgdGl0bGUgaW4gdGhlIHVybCAoZGVwZW5kaW5nIG9uIHlvdXIgdXJsIHNjaGVtZSksIHdo
ZW4gbGlua2luZyB0byB0aGUgdGh1bWJuYWlscyBhbmQgaW5kaXZpZHVhbCBpbWFnZXMuIERl
ZmF1bHQgaXMgMCwgd2hlbiB2ZGhfZmxpY2tyIHdhcyBsb2FkZWQgZnJvbSBhbiBhcnRpY2xl
IGxpc3QsIGFuZCAxIGlmIHZkaF9mbGlja3Igd2FzIGxvYWRlZCBmcm9tIGFuIGluZGl2aWR1
YWwgYXJ0aWNsZS48L2xpPgoJPC91bD4KCgk8aDM+U3RlcCAyOiBBdHRyaWJ1dGVzIGNvbmNl
cm5pbmcgdGhlIHRodW1ibmFpbCB2aWV3ICh2ZGhfZmxpY2tyX3RodW1ibmFpbHMpLjwvaDM+
CgoJPHA+U2hvd3MgYWxsIGltYWdlcyBpbiBhIHNwZWNpZmljIGZsaWNrciBzZXQsIGFsbCB0
aGUgaW1hZ2VzIGFzc29jaWF0ZWQgd2l0aCBhIGxpc3Qgb2YgdGFncyBvciB0aGUgWCBsYXRl
c3QgaW1hZ2VzLjwvcD4KCgk8aDQ+TWFuZGF0b3J5IEF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+
CgkJPGxpPjxzdHJvbmc+bnNpZDwvc3Ryb25nPiwgaWYgbm90IHNwZWNpZmllZCBpbiB0aGUg
c291cmNlIGNvZGUuPC9saT4KCQk8bGk+PHN0cm9uZz5zZXQ9JiM4MjIwOzEyMzQ1NjcmIzgy
MjE7PC9zdHJvbmc+IFRoZSBudW1iZXIgb2YgdGhlIHNldCB5b3Ugd2FudCB0byBzaG93LiBU
byBkZXRlcm1pbmUgdGhpcyBudW1iZXIsIGxvZyBpbnRvIGZsaWNrciwgY2xpY2sgb24gdGhl
IHNldCBhbmQgbG9vayBhdCB0aGUgdXJsLiBUaGUgc2V0IG51bWJlciBpcyB0aGUgbGFzdCBw
YXJ0IG9mIHRoZSB1cmwsIHVzdWFsbHkgYSBzaXgtZGlnaXRzIG51bWJlci4gPGJyIC8+CiBF
eGFtcGxlOiA8Y29kZT5odHRwOi8vd3d3LmZsaWNrci5jb20vcGhvdG9zLzEyMzQ1Njc4QE4w
MC9zZXRzLzEzNTc4OS88L2NvZGU+IDxiciAvPgogSW4gdGhpcyBjYXNlIHRoZSBzZXQgbnVt
YmVyIGlzIDEzNTc4OS4gPGJyIC8+CiBPUjogPGJyIC8+CiA8c3Ryb25nPnRhZ3M9JiM4MjIw
O3RhZzEsdGFnMiYjODIyMTs8L3N0cm9uZz4gTGlzdCBvZiB0YWdzIHRoYXQgc2hvdWxkIGJl
IGRpc3BsYXllZC4gTXVsdGlwbGUgdGFncyBtdXN0IGJlIGNvbW1hLXNlcGVyYXRlZCB3aXRo
IG5vIHNwYWNlcyBpbiBiZXR3ZWVuLiBCeSBkZWZhdWx0LCBhbGwgaW1hZ2VzIGNvbnRhaW5p
bmcgYXQgbGVhc3Qgb25lIG9mIHRoZXNlIHRhZ3MgaXMgc2hvd24uIDxiciAvPgogT1I6IDxi
ciAvPgogPHN0cm9uZz5sYXRlc3Q9JiM4MjIwOzIwJiM4MjIxOzwvc3Ryb25nPiBTaG93IHRo
ZSBsYXRlc3QgMjAgcGljcy48L2xpPgoJPC91bD4KCgk8aDQ+UG9zc2libGUgQXR0cmlidXRl
czo8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz50aHVtYm5haWxfc2l6ZT0mIzgyMjA7dCYj
ODIyMTs8L3N0cm9uZz4gUG9zc2libGUgaW1hZ2Ugc2l6ZXMgYXJlIGRlc2NyaWJlZCBiZWxv
dy4gRG9uJiM4MjE3O3QgYmUgY29uZnVzZWQgYnkgdGhlIG5hbWUgdGh1bWJuYWlsX3NpemUu
IFlvdSBjYW4gc2VsZWN0IGFueSBzaXplLjwvbGk+CgkJPGxpPjxzdHJvbmc+cmFuZG9tPSYj
ODIyMDsxMCYjODIyMTs8L3N0cm9uZz4gU2hvdyBhIHJhbmRvbSBzZWxlY3Rpb24gb2YgMTAg
b2YgdGhlIHNwZWNpZmllZCBzZXQgLyBsaXN0IG9mIHRhZ3MgLyBsYXRlc3QgcGljcy48L2xp
PgoJCTxsaT48c3Ryb25nPnRhZ19hbmQ9JiM4MjIwOzB8MSYjODIyMTs8L3N0cm9uZz4gQ2hh
bmdlIHRoZSBtb2RlIGhvdyBtdWx0aXBsZSB0YWdzIGFyZSBoYW5kbGVkLiBJZiBzd2l0Y2hl
ZCB0byAmIzgyMjA7MSYjODIyMTssIHZkaF9mbGlja3Igd2lsbCBvbmx5IHNob3cgdGhlIHBp
Y3R1cmVzIHRoYXQgY29udGFpbiA8c3BhbiBjbGFzcz0iY2FwcyI+QUxMPC9zcGFuPiBvZiB0
aGUgdGFncyBzcGVjaWZpZWQuIERlZmF1bHQgaXMgb2ZmICgwKS48L2xpPgoJCTxsaT48c3Ry
b25nPm9wZW49JiM4MjIwO3NlbGZ8d2luZG93fGZsaWNrciYjODIyMTs8L3N0cm9uZz4KCTx1
bD4KCQk8bGk+c2VsZiAoZGVmYXVsdCk6IG9wZW5zIGltYWdlcyB3aXRoaW4gdGhlIHdlYnNp
dGU8L2xpPgoJCTxsaT53aW5kb3c6IG9wZW5zIGltYWdlIGluIGEgbmV3IHdpbmRvdzwvbGk+
CgkJPGxpPmZsaWNrcjogb3BlbnMgaW1hZ2Ugd2l0aGluIHRoZSBmbGlja3IuY29tIHdlYnNp
dGU8L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8aDM+U3RlcCAzOiBBdHRyaWJ1dGVzIGNv
bmNlcm5pbmcgaW1kaXZpZHVhbCBpbWFnZXMgKHZkaF9mbGlja3JfaW1nKS48L2gzPgoKCTxw
PlNob3dzIGEgc2luZ2xlIGltYWdlIGZyb20gZmxpY2tyLjwvcD4KCgk8aDQ+TWFuZGF0b3J5
IEF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+bnNpZDwvc3Ryb25nPiwg
aWYgbm90IHNwZWNpZmllZCBpbiB0aGUgc291cmNlIGNvZGUuPC9saT4KCQk8bGk+PHN0cm9u
Zz5pbWc9JiM4MjIwOzEyMzQ1NjcmIzgyMjE7PC9zdHJvbmc+IFRoZSBudW1iZXIgb2YgdGhl
IGltYWdlIHlvdSB3YW50IHRvIHNob3cuIFRvIGRldGVybWluZSB0aGlzIG51bWJlciwgbG9n
IGludG8gZmxpY2tyLCBjbGljayBvbiB0aGUgaW1hZ2UgYW5kIGxvb2sgYXQgdGhlIHVybC4g
VGhlIGltYWdlIG51bWJlciBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSB1cmwsIHVzdWFsbHkg
YSBzZXZlbi1kaWdpdHMgbnVtYmVyLiBFeGFtcGxlOiA8YnIgLz4KIGh0dHA6Ly93d3cuZmxp
Y2tyLmNvbS9waG90b3MvMTIzNDU2NzglNDBOMDAvNzY1NDMyMS8gPGJyIC8+CiBJbiB0aGlz
IGNhc2UgdGhlIGltYWdlIG51bWJlciBpcyA3NjU0MzIxLjwvbGk+Cgk8L3VsPgoKCTxoND5Q
b3NzaWJsZSBBdHRyaWJ1dGVzOjwvaDQ+CgoJPHVsPgoJCTxsaT48c3Ryb25nPmltZ19zaXpl
PSYjODIyMDtuJiM4MjIxOzwvc3Ryb25nPiBQb3NzaWJsZSBpbWFnZSBzaXplcyBhcmUgZGVz
Y3JpYmVkIGJlbG93LjwvbGk+CgkJPGxpPjxzdHJvbmc+b3JpZ2luYWxfc2l6ZT0mIzgyMjA7
byYjODIyMTs8L3N0cm9uZz4gU2l6ZSBvZiB0aGUgbGlua2VkIGltYWdlIGlmIGxpbms9JiM4
MjIwO29yaWdpbmFsX3NpemUmIzgyMjE7IGlzIHVzZWQuPC9saT4KCQk8bGk+PHN0cm9uZz5s
aW5rPSYjODIyMDtodHRwOi8vd3d3Lmdvb2dsZS5jb218b3JpZ2luYWxfc2l6ZXxmbGlja3J8
aW1nX2luZm9ybWF0aW9uJiM4MjIxOzwvc3Ryb25nPiBMaW5rIHRoZSBpbWFnZSB0byBhIHNw
ZWNpZmljIHVybCwgdGhlIG9yaWdpbmFsIHNpemVkIGltYWdlLCB0aGUgaW1hZ2Ugb24gZmxp
Y2tyLmNvbSBvciBvbiB0aGUgaW1hZ2UgaW5mb3JtYXRpb24gcGFnZSBvbiBmbGlja3IuY29t
LjwvbGk+CgkJPGxpPjxzdHJvbmc+Y29udGV4dG1vZGU9JiM4MjIwO3RleHR8aW1nJiM4MjIx
Ozwvc3Ryb25nPiBTaG93IG5leHQgYW5kIHByZXZpb3VzIGltYWdlIGFzIHRleHQgKGVkaXRh
YmxlIHZpYSB0ZXh0X25leHRfaW1nX2xpbmtfdGV4dCkgb3IgYXMgc21hbGwgcHJldmlldyBp
bWFnZS4gRGVmYXVsdCBpcyB0ZXh0LjwvbGk+Cgk8L3VsPgoKCTxwPjxhIGhyZWY9IiNjb250
ZW50cyI+JnVhcnI7IHRvcDwvYT48L3A+CgoJPGgyIGlkPSJhZGRpdGlvbmFsX3RhZ3MiPkFk
ZGl0aW9uYWwgVGFnczwvaDI+CgoJPHA+VGhlc2UgVGFncyBhcmUgaW5kZXBlbmRhbnQgb2Yg
dGhlIDNzdGVwIGZ1bmN0aW9uYWxpdHkgYW5kIGNhbiBiZSB1c2VkIGZvciBhbnkgb2YgdGhl
IHRocmVlIHN0ZXBzLiBHb29kIGZvciBuYXZpZ2F0aW9uIGJhcnMgdGhhdCBzaG91bGQgYmUg
YWx3YXlzIHZpc2libGUuPC9wPgoKCTxoMz52ZGhfZmxpY2tyX3NldF9saXN0LjwvaDM+CgoJ
PHA+U2hvd3MgYSBsaXN0IG9mIGFsbCB5b3VyIGZsaWNrciBzZXRzLjwvcD4KCgk8aDQ+TWFu
ZGF0b3J5IEF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+bnNpZDwvc3Ry
b25nPiwgaWYgbm90IHNwZWNpZmllZCBpbiB0aGUgc291cmNlIGNvZGUuPC9saT4KCTwvdWw+
CgoJPGg0PlBvc3NpYmxlIEF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+
d3JhcHRhZz0mIzgyMjE7Li4uJiM4MjIxOzwvc3Ryb25nPiBTZWUgPHNwYW4gY2xhc3M9ImNh
cHMiPlRYUDwvc3Bhbj4uPC9saT4KCQk8bGk+PHN0cm9uZz5icmVhaz0mIzgyMjE7Li4uJiM4
MjIxOzwvc3Ryb25nPiBTZWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4uPC9saT4K
CQk8bGk+PHN0cm9uZz5lbWFpbD0mIzgyMjA7eW91QHRoZXJlLmNvbSYjODIyMTsgcGFzc3dv
cmQ9JiM4MjIwO3lvdXJwYXNzd29yZCYjODIyMTs8L3N0cm9uZz4gSWYgeW91IGVudGVyIHlv
dXIgZU1haWwgYW5kIHBhc3N3b3JkICh0aGUgb25lcyB5b3UgdXNlIHRvIGxvZ2luIHRvIGZs
aWNrciksIHZkaF9mbGlja3Igd2lsbCBzaG93IHlvdXIgcHJpdmF0ZSBzZXRzLCB0b28uPC9s
aT4KCTwvdWw+CgoJPGgzPnZkaF9mbGlja3JfdGFnX2xpc3RfYWxsPC9oMz4KCgk8cD5TaG93
cyBhIGxpc3Qgb2YgYWxsIHlvdXIgZmxpY2tyIHRhZ3MuPC9wPgoKCTxoND5NYW5kYXRvcnkg
QXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz5uc2lkPC9zdHJvbmc+LCBp
ZiBub3Qgc3BlY2lmaWVkIGluIHRoZSBzb3VyY2UgY29kZS48L2xpPgoJPC91bD4KCgk8aDQ+
UG9zc2libGUgQXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz53cmFwdGFn
PSYjODIyMTsuLi4mIzgyMjE7PC9zdHJvbmc+IFNlZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ
PC9zcGFuPi48L2xpPgoJCTxsaT48c3Ryb25nPmJyZWFrPSYjODIyMTsuLi4mIzgyMjE7PC9z
dHJvbmc+IFNlZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPi48L2xpPgoJCTxsaT48
c3Ryb25nPmVtYWlsPSYjODIyMDt5b3VAdGhlcmUuY29tJiM4MjIxOyBwYXNzd29yZD0mIzgy
MjA7eW91cnBhc3N3b3JkJiM4MjIxOzwvc3Ryb25nPiBJZiB5b3UgZW50ZXIgeW91ciBlTWFp
bCBhbmQgcGFzc3dvcmQgKHRoZSBvbmVzIHlvdSB1c2UgdG8gbG9naW4gdG8gZmxpY2tyKSwg
dmRoX2ZsaWNrciB3aWxsIHNob3cgeW91ciBwcml2YXRlIHRhZ3MsIHRvby48L2xpPgoJPC91
bD4KCgk8aDM+dmRoX2ZsaWNrcl90YWdfbGlzdF9wb3B1bGFyPC9oMz4KCgk8cD5TaG93cyBh
IGxpc3Qgb2YgeW91ciBYIG1vc3QgcG9wdWxhciBmbGlja3IgdGFncy4gWCBpcyBhIG51bWJl
ci48L3A+CgoJPGg0Pk1hbmRhdG9yeSBBdHRyaWJ1dGVzOjwvaDQ+CgoJPHVsPgoJCTxsaT48
c3Ryb25nPm5zaWQ8L3N0cm9uZz4sIGlmIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHNvdXJjZSBj
b2RlLjwvbGk+Cgk8L3VsPgoKCTxoND5Qb3NzaWJsZSBBdHRyaWJ1dGVzOjwvaDQ+CgoJPHVs
PgoJCTxsaT48c3Ryb25nPmNvdW50PSYjODIyMDsxMCYjODIyMTs8L3N0cm9uZz4sIHRoZSBu
dW1iZXIgb2YgdGFncyB0byBkaXNwbGF5LiBEZWZhdWx0cyB0byAxMC48L2xpPgoJCTxsaT48
c3Ryb25nPndyYXB0YWc9JiM4MjIxOy4uLiYjODIyMTs8L3N0cm9uZz4gU2VlIDxzcGFuIGNs
YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRvY3VtZW50YXRpb24uPC9saT4KCQk8bGk+PHN0cm9u
Zz5icmVhaz0mIzgyMjE7Li4uJiM4MjIxOzwvc3Ryb25nPiBTZWUgPHNwYW4gY2xhc3M9ImNh
cHMiPlRYUDwvc3Bhbj4gZG9jdW1lbnRhdGlvbi48L2xpPgoJCTxsaT48c3Ryb25nPmVtYWls
PSYjODIyMDt5b3VAdGhlcmUuY29tJiM4MjIxOyBwYXNzd29yZD0mIzgyMjA7eW91cnBhc3N3
b3JkJiM4MjIxOzwvc3Ryb25nPiBJZiB5b3UgZW50ZXIgeW91ciBlTWFpbCBhbmQgcGFzc3dv
cmQgKHRoZSBvbmVzIHlvdSB1c2UgdG8gbG9naW4gdG8gZmxpY2tyKSwgdmRoX2ZsaWNrciB3
aWxsIHNob3cgeW91ciBwcml2YXRlIHRhZ3MsIHRvby48L2xpPgoJPC91bD4KCgk8cD48YSBo
cmVmPSIjY29udGVudHMiPiZ1YXJyOyB0b3A8L2E+PC9wPgoKCTxoMiBpZD0icGljdHVyZV9z
aXplcyI+UGljdHVyZSBzaXplczwvaDI+CgoJPHA+VGhlIHBpY3R1cmUgc2l6ZXMgYXJlIGRl
dGVybWluZWQgYnkgZmxpY2tyIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCB0byBhbiBpbmRpdmlk
dWFsIHZhbHVlLiBGbGlja3Igb2ZmZXJzIHRoZSBmb2xsb3dpbmcgc2l6ZXM6PC9wPgoKCTx1
bD4KCQk8bGk+PHN0cm9uZz5zPC9zdHJvbmc+ICAgc21hbGwgc3F1YXJlIDc1JiMyMTU7NzU8
L2xpPgoJCTxsaT48c3Ryb25nPnQ8L3N0cm9uZz4gICB0aHVtYm5haWwsIDEwMCBvbiBsb25n
ZXN0IHNpZGU8L2xpPgoJCTxsaT48c3Ryb25nPm08L3N0cm9uZz4gICBzbWFsbCwgMjQwIG9u
IGxvbmdlc3Qgc2lkZTwvbGk+CgkJPGxpPjxzdHJvbmc+bjwvc3Ryb25nPiAgIG1lZGl1bSwg
NTAwIG9uIGxvbmdlc3Qgc2lkZTwvbGk+CgkJPGxpPjxzdHJvbmc+Yjwvc3Ryb25nPiAgIGxh
cmdlLCAxMDI0IG9uIGxvbmdlc3Qgc2lkZSAob25seSBleGlzdHMgZm9yIHZlcnkgbGFyZ2Ug
b3JpZ2luYWwgaW1hZ2VzKTwvbGk+CgkJPGxpPjxzdHJvbmc+bzwvc3Ryb25nPiAgIG9yaWdp
bmFsIGltYWdlLCBlaXRoZXIgYSBqcGcsIGdpZiBvciBwbmcsIGRlcGVuZGluZyBvbiBzb3Vy
Y2UgZm9ybWF0PC9saT4KCTwvdWw+CgoJPHA+WW91IGNhbiBzZWxlY3Qgc2l6ZXMgYXMgZm9s
bG93czo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4mIzYwO3R4cDp2ZGhfZmxpY2tyIHNldF9w
cmV2aWV3X3NpemU9JiMzOTttJiMzOTsgdGh1bWJuYWlsX3NpemU9JiMzOTtzJiMzOTsgaW1n
X3NpemU9JiMzOTtuJiMzOTsgLyYjNjI7PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPkRlZmF1
bHQgZm9yIHNldF9wcmV2aWV3X3NpemUgaXMgbSwgZm9yIHRodW1ibmFpbF9zaXplIGlzIHMg
YW5kIGZvciBpbWdfc2l6ZSBpcyBuLjwvcD4KCgk8cD48YSBocmVmPSIjY29udGVudHMiPiZ1
YXJyOyB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iY2xlYW5fdXJscyI+QWNoaWV2aW5nIGNsZWFu
IHVybHM8L2gyPgoKCTxwPlRoZXJlIGFyZSBzZXZlcmFsIHN0ZXBzIG5lZWRlZCB0byBlbmFi
bGUgY2xlYW4gdXJscy4gQnV0IGRvbiYjODIxNzt0IGJlIGFmcmFpZCwgaXQgd29uJiM4MjE3
O3QgdGFrZSBsb25nZXIgdGhhbiAxNSBtaW51dGVzIGFuZCBpcyBkZWZpbml0ZWx5IHdvcnRo
IHRoZSB0cm91YmxlLjwvcD4KCgk8cD4xLiBJbnN0YWxsIGFuZCBhY3RpdmF0ZSA8YSBocmVm
PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9NjgxMCYj
Mzg7cD0xIj5zZ2JfdXJsX2hhbmRsZXIgYW5kIHNnYl9lcnJvcl9kb2N1bWVudHM8L2E+LiBU
aGVuIGVkaXQgdGhlIHNvdXJjZSBvZiBzZ2JfZXJyb3JfZG9jdW1lbnRzIGFuZCBhZGQgdGhp
cyBsaW5lIHRvIHRoZSBvdGhlciBzY2hlbWVzICh5b3UgbW9zdCBwcm9iYWJseSB3b24mIzgy
MTc7dCBuZWVkIGFsbCBvZiB0aGVtLCBidXQgaWYgeW91IHBhc3RlIHRoZW0gYWxsLCB5b3Um
IzgyMTc7cmUgZG9uZS4pOjwvcD4KCjxwcmU+PGNvZGU+JHNjaGVtZXNbJiMzOTtmbGlja3Jf
dGl0bGVfc2V0JiMzOTtdID0gJiMzOTsvJXNlY3Rpb24lLyV0aXRsZSUvc2V0LyVzdHJpbmcl
JiMzOTs7CiRzY2hlbWVzWyYjMzk7ZmxpY2tyX3RpdGxlX3NldF9pbWcmIzM5O10gPSAmIzM5
Oy8lc2VjdGlvbiUvJXRpdGxlJS9zZXQvJXN0cmluZyUvaW1nLyVzdHJpbmclJiMzOTs7CiRz
Y2hlbWVzWyYjMzk7ZmxpY2tyX3RpdGxlX3RhZ3MmIzM5O10gPSAmIzM5Oy8lc2VjdGlvbiUv
JXRpdGxlJS90YWdzLyVzdHJpbmclJiMzOTs7CiRzY2hlbWVzWyYjMzk7ZmxpY2tyX3RpdGxl
X3RhZ3NfcGFnZSYjMzk7XSA9ICYjMzk7LyVzZWN0aW9uJS8ldGl0bGUlL3RhZ3MvJXN0cmlu
ZyUvcGFnZS8lc3RyaW5nJSYjMzk7Owokc2NoZW1lc1smIzM5O2ZsaWNrcl90aXRsZV9zZXRf
cGFnZSYjMzk7XSA9ICYjMzk7LyVzZWN0aW9uJS8ldGl0bGUlL3NldC8lc3RyaW5nJS9wYWdl
LyVzdHJpbmclJiMzOTs7CiRzY2hlbWVzWyYjMzk7ZmxpY2tyX3NldCYjMzk7XSA9ICYjMzk7
LyVzZWN0aW9uJS9zZXQvJXN0cmluZyUmIzM5OzsKJHNjaGVtZXNbJiMzOTtmbGlja3Jfc2V0
X2ltZyYjMzk7XSA9ICYjMzk7LyVzZWN0aW9uJS9zZXQvJXN0cmluZyUvaW1nLyVzdHJpbmcl
JiMzOTs7CiRzY2hlbWVzWyYjMzk7ZmxpY2tyX3RhZ3MmIzM5O10gPSAmIzM5Oy8lc2VjdGlv
biUvdGFncy8lc3RyaW5nJSYjMzk7Owokc2NoZW1lc1smIzM5O2ZsaWNrcl90YWdzX3BhZ2Um
IzM5O10gPSAmIzM5Oy8lc2VjdGlvbiUvdGFncy8lc3RyaW5nJS9wYWdlLyVzdHJpbmclJiMz
OTs7CiRzY2hlbWVzWyYjMzk7ZmxpY2tyX3NldF9wYWdlJiMzOTtdID0gJiMzOTsvJXNlY3Rp
b24lL3NldC8lc3RyaW5nJS9wYWdlLyVzdHJpbmclJiMzOTs7CjwvY29kZT48L3ByZT4KCgk8
cD4yLiBUaGVuIHlvdSBoYXZlIHRvIGFkZCB0aGVzZSBsaW5lcyB0byB5b3VyIC5odGFjY2Vz
cyB0byBtYWtlIGNsZWFuIHVybHMgd29yay4gSGVyZSBpcyBteSBjb21wbGV0ZSAuaHRhY2Nl
c3MgZmlsZSBzbyB0aGF0IHlvdSBjYW4gc2VlIGhvdyB0aGUgbGluZXMgaGF2ZSB0byBiZSBh
ZGRlZDo8L3A+Cgo8cHJlPjxjb2RlPlJld3JpdGVCYXNlIC8KJiM2MDtJZk1vZHVsZSBtb2Rf
cmV3cml0ZS5jJiM2MjsKUmV3cml0ZUVuZ2luZSBPbgpSZXdyaXRlUnVsZSBzZXQvKFswLTld
KykgaW5kZXgucGhwP3NldD0kMQpSZXdyaXRlUnVsZSBpbWcvKFswLTldKykgaW5kZXgucGhw
P2ltZz0kMQpSZXdyaXRlUnVsZSBzZXQvKFswLTldKykvaW1nLyhbMC05XSspIGluZGV4LnBo
cD9zZXQ9JDEmIzM4O2ltZz0kMgpSZXdyaXRlUnVsZSBzZXQvKFswLTldKykvcGFnZS8oWzAt
OV0rKSBpbmRleC5waHA/c2V0PSQxJiMzODtwYWdlPSQyClJld3JpdGVSdWxlIHRhZ3MvKC4r
KSBpbmRleC5waHA/dGFncz0kMQpSZXdyaXRlUnVsZSB0YWdzLyguKykvcGFnZS8oWzAtOV0r
KSBpbmRleC5waHA/dGFncz0kMSYjMzg7cGFnZT0kMgpSZXdyaXRlQ29uZCAle1JFUVVFU1Rf
RklMRU5BTUV9IC1mIFtPUl0KUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAtZApS
ZXdyaXRlUnVsZSBeKC4rKSAtIFtQVCxMXQpSZXdyaXRlUnVsZSBeKC4qKSBpbmRleC5waHAK
JiM2MDsvSWZNb2R1bGUmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+My4gVGhlIGxhc3Qgc3Rl
cCBpcyB0byBhZGQgdGhpcyBhdHRyaWJ1dGUgdG8geW91ciB2ZGhfZmxpY2tyIHRhZzogPGJy
IC8+CiA8c3Ryb25nPmNsZWFuX3VybHM9JiM4MjIwOzEmIzgyMjE7PC9zdHJvbmc+PC9wPgoK
CTxwPjxhIGhyZWY9IiNjb250ZW50cyI+JnVhcnI7IHRvcDwvYT48L3A+CgoJPGgyIGlkPSJl
eGFtcGxlX2NzcyI+RXhhbXBsZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjwvaDI+
CgoJPHA+QWRkIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gdG8geW91ciBn
YWxsZXJ5IHNlY3Rpb24gQ1NTLWZpbGUgdG8gbWFrZSB5b3VyIGdhbGxlcnkgbG9vayBiZXR0
ZXIuPC9wPgoKPHByZT48Y29kZT4uc2V0cHJldmlldyB7CgltYXJnaW46IDAgMmVtIDFlbSAy
ZW07Cn0KCS5zZXRwcmV2aWV3IC50aHVtYm5haWwgewoJCWZsb2F0OiBsZWZ0OwoJCW1hcmdp
bi1yaWdodDogMWVtOwoJfQouZmxpY2tyc2V0IGEgewoJYm9yZGVyOiBzb2xpZCAjRjY3NzMz
IDJweDsKCXdpZHRoOiA3NXB4OwoJaGVpZ2h0OiA3NXB4OwoJYmFja2dyb3VuZDogI2ZmZjBk
NjsKCWZsb2F0OiBsZWZ0OwoJbWFyZ2luOiAxMHB4OwoJcGFkZGluZzogNXB4Owp9Ci5mbGlj
a3JzZXQgYTpob3ZlciB7CgliYWNrZ3JvdW5kOiAjRjY3NzMzOwp9Ci5mbGlja3JzZXQgaW1n
IHsKCWJvcmRlcjogMDsKfQoucGFnZXNfbmF2IHsKCWNsZWFyOiBib3RoOwp9Ci5pbmRpdmlk
dWFsIHsKCXBhZGRpbmc6IDAgMmVtOwp9CgkuaW5kaXZpZHVhbCAuaW1hZ2UgewoJCW1hcmdp
bjogMC41ZW0gYXV0bzsKCQl0ZXh0LWFsaWduOiBjZW50ZXI7Cgl9CgkuaW5kaXZpZHVhbCAu
aW1hZ2UgaW1nIHsKCX0KCS5pbmRpdmlkdWFsIC5mbGlja3JzZXRuYXYgewoJCXRleHQtYWxp
Z246IGNlbnRlcjsKCX0KCQkuaW5kaXZpZHVhbCAuZmxpY2tyc2V0bmF2IGEsCgkJLmluZGl2
aWR1YWwgLmZsaWNrcnNldG5hdiBhOmxpbmssCgkJLmluZGl2aWR1YWwgLmZsaWNrcnNldG5h
diBhOnZpc2l0ZWQgewoJCQl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgkJfQoJLmluZGl2aWR1
YWwgLnNldG5hbWUgewoJCWRpc3BsYXk6IGlubGluZTsKCX0KPC9jb2RlPjwvcHJlPgoKCTxw
PjxhIGhyZWY9IiNjb250ZW50cyI+JnVhcnI7IHRvcDwvYT48L3A+CgoJPGgyIGlkPSJmb3Jt
cyI+Rm9ybXM8L2gyPgoKCTxoMz5XaGF0IGFyZSBmb3JtcyBnb29kIGZvcj88L2gzPgoKCTxw
PklmIHlvdSBhcmUgY29tcGxldGVseSBzYXRpc2ZpZWQgd2l0aCB0aGUgbG9vayBhbmQgZnVu
Y3Rpb25hbGl0aXkgb2YgeW91ciBnYWxsZXJ5LCByZWFkIG5vIG1vcmUuIE90aGVyd2lzZSwg
dGhlIHZkaF9mbGlja3IgZm9ybSBtb2RlIGdpdmVzIHlvdSBwb3NzaWJpbGl0aWVzIHRvIHR3
ZWFrIG5lYXJseSBldmVyeSBsaW5lIG9mIGh0bWwgdGhhdCBpcyBnZW5lcmF0ZWQgYnkgdmRo
X2ZsaWNrci48YnIgLz4KSW4gdGhpcyB3b3Jrc2hvcCwgd2Ugd2lsbCBmaXJzdCBjcmVhdGUg
dGhyZWUgZm9ybXMgcmVwcmVzZW50aW5nIHRoZSBjbGFzc2ljYWwgZnVuY3Rpb25hbGl0eSBv
ZiB0aGlzIHBsdWdpbi4gVGhpcyBtZWFucyB3ZSB3aWxsIGhhdmUgb25lIGZvcm0gZm9yIHRo
ZSBzZXQgcHJldmlldyBwYWdlLCBvbmUgZm9ybSBmb3IgdGhlIHBhZ2UgdGhhdCBzaG93cyB0
aGUgdGh1bWJuYWlscyBvZiBhIHNldCBhbmQgYSBmb3JtIHRoYXQgZGV0ZXJtaW5lcyBob3cg
aW5kaXZpZHVhbCBpbWFnZXMgbG9vayBsaWtlLiBUaGVzZSB3aWxsIGJlIGV4YWN0bHkgdGhl
IHNhbWUgYXMgdGhlIGV4YW1wbGUgZm9ybXMgaW5jbHVkZWQgaW4gdGhlIHBsdWdpbiBzb3Vy
Y2UgY29kZS4gQnV0IGFmdGVyIGNyZWF0aW5nIHRoZXNlIGZvcm1zLCB5b3Ugd2lsbCBiZSBh
YmxlIHRvIHJlbW92ZSBvciBjaGFuZ2UgZWxlbWVudHMsIHNvIHRoYXQgdGhlIGxvb2sgb2Yg
eW91ciBnYWxsZXJ5IGlzIGluZGVwZW5kYW50IG9mIGZ1dHVyZSBjaGFuZ2VzIGluIHRoZSBk
ZWZhdWx0IGZvcm1zLjwvcD4KCgk8aDM+Q3JlYXRpbmcgZm9ybXM8L2gzPgoKCTxoND48c3Ry
b25nPnByZXZpZXc8L3N0cm9uZz4sIGEgZm9ybSBmb3IgdGhlIHNldCBwcmV2aWV3IHBhZ2U8
L2g0PgoKCTxwPkxvZyBpbnRvIFRleHRwYXR0ZXJuIGFuZCBnbyB0byBwcmVzZW50YXRpb24g
JnJhcnI7IGZvcm1zLiBDbGljayAmIzgyMjA7Y3JlYXRlIGEgbmV3IGZvcm0mIzgyMjE7LCBl
bnRlciB0aGUgZm9ybSBuYW1lICYjODIyMDtwcmV2aWV3JiM4MjIxOyBhbmQgZm9ybSB0eXBl
ICYjODIyMDttaXNjJiM4MjIxOy4gVGhlbiBwYXN0ZSB0aGUgZm9sbG93aW5nIGNvZGUgaW50
byB0aGUgdGV4dGJveDo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7ZGl2IGNsYXNzPSYjMzQ7c2V0
cHJldmlldyYjMzQ7JiM2MjsKJiM2MDtkaXYgY2xhc3M9JiMzNDt0aHVtYm5haWwmIzM0OyYj
NjI7CiYjNjA7dHhwOnZkaF9mbGlja3Jfc2V0X2xpbmsgdGl0bGU9JiMzNDtQcm9jZWVkIHRv
IHRoaXMgZ2FsbGVyeSYjMzQ7JiM2MjsmIzYwO3R4cDp2ZGhfZmxpY2tyX3NldF9pbWcgdGl0
bGU9JiMzNDtQcm9jZWVkIHRvIHRoaXMgZ2FsbGVyeSYjMzQ7IC8mIzYyOyYjNjA7L3R4cDp2
ZGhfZmxpY2tyX3NldF9saW5rJiM2MjsKJiM2MDsvZGl2JiM2MjsKJiM2MDtkaXYmIzYyOwom
IzYwO2gzIGNsYXNzPSYjMzQ7dGl0bGUmIzM0OyYjNjI7JiM2MDt0eHA6dmRoX2ZsaWNrcl9z
ZXRfbGluayB0aXRsZT0mIzM0O1Byb2NlZWQgdG8gdGhpcyBnYWxsZXJ5JiMzNDsmIzYyOyYj
NjA7dHhwOnZkaF9mbGlja3Jfc2V0X3RpdGxlIC8mIzYyOyYjNjA7L3R4cDp2ZGhfZmxpY2ty
X3NldF9saW5rJiM2MjsmIzYwOy9oMyYjNjI7CiYjNjA7aDQgY2xhc3M9JiMzNDtudW1iZXJf
b2ZfcGhvdG9zJiMzNDsmIzYyOyYjNjA7dHhwOnZkaF9mbGlja3Jfc2V0X251bWJlcl9vZl9w
aG90b3MgLyYjNjI7IFBob3RvcyYjNjA7L2g0JiM2MjsKJiM2MDtwIGNsYXNzPSYjMzQ7c2V0
X2Rlc2NyaXB0aW9uJiMzNDsmIzYyOyYjNjA7dHhwOnZkaF9mbGlja3Jfc2V0X2Rlc2NyaXB0
aW9uIC8mIzYyOyYjNjA7L3AmIzYyOwomIzYwOy9kaXYmIzYyOwomIzYwO2RpdiBzdHlsZT0m
IzM0O2NsZWFyOmJvdGg7JiMzNDsmIzYyOyYjNjA7L2RpdiYjNjI7CiYjNjA7L2RpdiYjNjI7
CjwvY29kZT48L3ByZT4KCgk8aDQ+PHN0cm9uZz50aHVtYm5haWxzPC9zdHJvbmc+LCBhIGZv
cm0gZm9yIHRoZSB0aHVtYm5haWxzIHBhZ2U8L2g0PgoKCTxwPkNyZWF0ZSB0aGlzIGZvcm0g
YXMgZGVzY3JpYmVkIGFib3ZlLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDtoMyYjNjI7JiM2MDt0
eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3RpdGxlIC8mIzYyOywgJiM2MDt0eHA6dmRoX2Zs
aWNrcl90aHVtYm5haWxzX251bWJlcl9vZl9waG90b3MgLyYjNjI7IFBob3RvcyYjNjA7L2gz
JiM2MjsKJiM2MDtwIGNsYXNzPSYjMzQ7ZmxpY2tyX3NsaWRlc2hvdyYjMzQ7JiM2MjsKJiM2
MDt0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3NsaWRlc2hvdyYjNjI7JiMzODtyYXF1bzsg
U2hvdyBhcyBzbGlkZXNob3cgaW4gbmV3IHdpbmRvdy4mIzYwOy90eHA6dmRoX2ZsaWNrcl90
aHVtYm5haWxzX3NsaWRlc2hvdyYjNjI7CiYjNjA7L3AmIzYyOwomIzYwO3R4cDp2ZGhfZmxp
Y2tyX3RodW1ibmFpbHNfaWZfZGVzY3JpcHRpb24mIzYyOwomIzYwO3AgY2xhc3M9JiMzNDtm
bGlja3JfdGh1bWJuYWlsc19kZXNjcmlwdGlvbiYjMzQ7JiM2MjsKJiM2MDt0eHA6dmRoX2Zs
aWNrcl90aHVtYm5haWxzX2Rlc2NyaXB0aW9uIC8mIzYyOwomIzYwOy9wJiM2MjsKJiM2MDsv
dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19pZl9kZXNjcmlwdGlvbiYjNjI7CiYjNjA7ZGl2
IGNsYXNzPSYjMzQ7ZmxpY2tyc2V0JiMzNDsmIzYyOwomIzYwO3R4cDp2ZGhfZmxpY2tyX3Ro
dW1ibmFpbHNfbGlzdCAvJiM2MjsKJiM2MDsvZGl2JiM2MjsKJiM2MDt0eHA6dmRoX2ZsaWNr
cl90aHVtYm5haWxzX2lmX211bHRpcGxlX3BhZ2VzJiM2MjsKJiM2MDtoMyBjbGFzcz0mIzM0
O3BhZ2VzX25hdiYjMzQ7JiM2MjtwYWdlcyBuYXZpZ2F0aW9uJiM2MDsvaDMmIzYyOwomIzYw
O3AmIzYyOwp0aHVtYnMgcGVyIHBhZ2U6ICYjNjA7dHhwOnZkaF9mbGlja3JfdGh1bWJuYWls
c19wZXJfcGFnZSAvJiM2MjsmIzYwO2JyIC8mIzYyOwpTaG93aW5nIHBhZ2UgJiM2MDt0eHA6
dmRoX2ZsaWNrcl90aHVtYm5haWxzX2N1cnJlbnRfcGFnZSAvJiM2Mjsgb2YgJiM2MDt0eHA6
dmRoX2ZsaWNrcl90aHVtYm5haWxzX3RvdGFsX3BhZ2VzIC8mIzYyOy4mIzYwO2JyIC8mIzYy
OwpTaG93aW5nIHRodW1iICYjNjA7dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19z
dGFydHRodW1iIC8mIzYyOyB0byAmIzYwO3R4cDp2ZGhfZmxpY2tyX3RodW1ibmFpbHNfcGFn
ZXNfZW5kdGh1bWIgLyYjNjI7LiYjNjA7YnIgLyYjNjI7CiYjNjA7dHhwOnZkaF9mbGlja3Jf
dGh1bWJuYWlsc19wYWdlc19maXJzdCYjNjI7JiMzODtsYXF1bzsgZmlyc3QmIzYwOy90eHA6
dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX2ZpcnN0JiM2MjsgfAomIzYwO3R4cDp2ZGhf
ZmxpY2tyX3RodW1ibmFpbHNfcGFnZXNfcHJldmlvdXMmIzYyOyYjMzg7bHQ7IHByZXZpb3Vz
JiM2MDsvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19wcmV2aW91cyYjNjI7IHwK
JiM2MDt0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX25leHQmIzYyO25leHQgJiMz
ODtndDsmIzYwOy90eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX25leHQmIzYyOyB8
CiYjNjA7dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19sYXN0JiM2MjtsYXN0ICYj
Mzg7cmFxdW87JiM2MDsvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19sYXN0JiM2
MjsKJiM2MDsvcCYjNjI7CkdvIHRvIHBhZ2UgbnVtYmVyOgomIzYwO3R4cDp2ZGhfZmxpY2ty
X3RodW1ibmFpbHNfcGFnZXNfbGlzdCB3cmFwdGFnPSYjMzQ7dWwmIzM0OyBicmVhaz0mIzM0
O2xpJiMzNDsgY2xhc3MgPSYjMzQ7dGh1bWJzX3BhZ2VzJiMzNDsgLyYjNjI7CiYjNjA7L3R4
cDp2ZGhfZmxpY2tyX3RodW1ibmFpbHNfaWZfbXVsdGlwbGVfcGFnZXMmIzYyOwomIzYwO2Rp
diBzdHlsZT0mIzM0O2NsZWFyOmJvdGg7JiMzNDsmIzYyOyYjNjA7L2RpdiYjNjI7CjwvY29k
ZT48L3ByZT4KCgk8aDQ+PHN0cm9uZz5pbWFnZTwvc3Ryb25nPiwgYSBmb3JtIGZvciB0aGUg
aW1hZ2UgcGFnZTwvaDQ+CgoJPHA+Q3JlYXRlIHRoaXMgZm9ybSBhcyBkZXNjcmliZWQgYWJv
dmUuPC9wPgoKPHByZT48Y29kZT4mIzYwO2RpdiBjbGFzcz0mIzM0O2luZGl2aWR1YWwmIzM0
OyYjNjI7JiM2MDtkaXYgY2xhc3M9JiMzNDtpbWFnZSYjMzQ7JiM2MjsKJiM2MDtoMiBjbGFz
cz0mIzM0O3RpdGxlJiMzNDsmIzYyOyYjNjA7dHhwOnZkaF9mbGlja3JfaW1nX3RpdGxlIC8m
IzYyOyYjNjA7L2gyJiM2MjsKJiM2MDt0eHA6dmRoX2ZsaWNrcl9pbWdfbGluayYjNjI7JiM2
MDt0eHA6dmRoX2ZsaWNrcl9pbWdfbmFrZWQgLyYjNjI7JiM2MDsvdHhwOnZkaF9mbGlja3Jf
aW1nX2xpbmsmIzYyOwomIzYwO2RpdiBjbGFzcz0mIzM0O2ZsaWNrcnNldG5hdiYjMzQ7JiM2
MjsKJiM2MDt0eHA6dmRoX2ZsaWNrcl9pbWdfcHJldmlvdXMgbGFiZWw9JiMzNDtwcmV2aW91
cyYjMzg7bmJzcDs6JiMzODtuYnNwOyYjMzQ7JiM2MjsmIzM4O2xhcnI7JiM2MDsvdHhwOnZk
aF9mbGlja3JfaW1nX3ByZXZpb3VzJiM2MjsKJiM2MDtoMiBjbGFzcz0mIzM0O3NldG5hbWUm
IzM0OyYjNjI7JiM2MDt0eHA6dmRoX2ZsaWNrcl9pbWdfc2V0X2xpbmsmIzYyOyYjNjA7dHhw
OnZkaF9mbGlja3JfaW1nX3NldF90aXRsZSAvJiM2MjsmIzYwOy90eHA6dmRoX2ZsaWNrcl9p
bWdfc2V0X2xpbmsmIzYyOyYjNjA7L2gyJiM2MjsKJiM2MDt0eHA6dmRoX2ZsaWNrcl9pbWdf
bmV4dCBsYWJlbD0mIzM0O25leHQmIzM4O25ic3A7OiYjMzg7bmJzcDsmIzM0OyYjNjI7JiMz
ODtyYXJyOyYjNjA7L3R4cDp2ZGhfZmxpY2tyX2ltZ19uZXh0JiM2MjsKJiM2MDsvZGl2JiM2
MjsKJiM2MDtkaXYgY2xhc3M9JiMzNDtmbGlja3JfdGFnX2xpc3QmIzM0OyYjNjI7CiYjNjA7
dHhwOnZkaF9mbGlja3JfaW1nX3RhZ3Mgc2VwYXJhdG9yPSYjMzQ7IHwgJiMzNDsgLyYjNjI7
CiYjNjA7L2RpdiYjNjI7CiYjNjA7ZGl2IGNsYXNzPSYjMzQ7ZmxpY2tyX2NvbW1lbnRzJiMz
NDsmIzYyOwomIzYwO3R4cDp2ZGhfZmxpY2tyX2ltZ19udW1iZXJfb2ZfY29tbWVudHMgLyYj
NjI7IENvbW1lbnRzLgomIzYwO3R4cDp2ZGhfZmxpY2tyX2ltZ19jb21tZW50c19pbnZpdGUm
IzYyO1Nob3cgYW5kIHBvc3QgY29tbWVudHMhJiM2MDsvdHhwOnZkaF9mbGlja3JfaW1nX2Nv
bW1lbnRzX2ludml0ZSYjNjI7JiM2MDticiAvJiM2MjsKUG9zdGVkICYjNjA7dHhwOnZkaF9m
bGlja3JfaW1nX2RhdGVfcG9zdGVkIC8mIzYyOy4mIzYwO2JyIC8mIzYyOwpUYWtlbiAmIzYw
O3R4cDp2ZGhfZmxpY2tyX2ltZ19kYXRlX3Rha2VuIC8mIzYyOy4mIzYwO2JyIC8mIzYyOwom
IzYwOy9kaXYmIzYyOwomIzYwO3R4cDp2ZGhfZmxpY2tyX2ltZ19pZl9kZXNjcmlwdGlvbiYj
NjI7CiYjNjA7cCBjbGFzcz0mIzM0O2ltZ19kZXNjcmlwdGlvbiYjMzQ7JiM2MjsKJiM2MDt0
eHA6dmRoX2ZsaWNrcl9pbWdfZGVzY3JpcHRpb24gLyYjNjI7CiYjNjA7L3AmIzYyOwomIzYw
Oy90eHA6dmRoX2ZsaWNrcl9pbWdfaWZfZGVzY3JpcHRpb24mIzYyOwomIzYwOy9kaXYmIzYy
OyYjNjA7L2RpdiYjNjI7JiM2MDtkaXYgc3R5bGU9JiMzNDtjbGVhcjpib3RoOyYjMzQ7JiM2
MjsmIzYwOy9kaXYmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPGgzPlVzaW5nIHRoZSBjcmVhdGVk
IGZvcm1zPC9oMz4KCgk8cD5UYWtlIHRoZSBmb2xsb3dpbmcgY29kZSBhcyBhbiBleGFtcGxl
IHRvIGVuYWJsZSB1c2luZyB5b3VyIGZyZXNobHkgY3JlYXRlZCBmb3Jtczo8L3A+Cgo8cHJl
Pjxjb2RlPiYjNjA7dHhwOnZkaF9mbGlja3IgbnNpZD0mIzM0OzQzOTczOTc2QE4wMCYjMzQ7
IHNldF9mb3JtPSYjMzQ7cHJldmlldyYjMzQ7IHRodW1ibmFpbHNfZm9ybT0mIzM0O3RodW1i
bmFpbHMmIzM0OyBpbWdfZm9ybT0mIzM0O2ltYWdlJiMzNDsgLyYjNjI7CjwvY29kZT48L3By
ZT4KCgk8cD5Ob3cgeW91IGNhbiBiZWdpbiBjdXN0b21pemluZyB5b3VyIGZvcm1zLjxiciAv
PgpNYXliZSB5b3Ugd2FudCB0byByZW5hbWUgdGhlIGRpdnMgb24gdGhlIHNldCBwcmV2aWV3
IHBhZ2UuIFNvIG9wZW4geW91ciBwcmV2aWV3IGZvcm0gYW5kIGRvIHNvLiBNYXliZSB5b3Ug
ZG9uJiM4MjE3O3Qgd2FudCBuYXZpZ2F0aW9uIHVuZGVybmVhdGggdGhlIGltYWdlcy4gU28g
ZGVsZXRlIGFsbCB0aGUgdmRoX2ZsaWNrciB0YWdzIGNvbmNlcm5pbmcgbmF2aWdhdGlvbiBp
biB0aGUgaW1hZ2UgZm9ybS4gT3IgbWF5YmUgeW91IGp1c3Qgd2FudCBhbGwgdGhlIHRleHQg
dG8gYXBwZWFyIGluIHlvdXIgbGFuZ3VhZ2UgJiM4MjExOyBubyBwcm9ibGVtIGFueSBtb3Jl
LjwvcD4KCgk8aDM+T3RoZXIgZm9ybSB0YWdzPC9oMz4KCgk8cD5Zb3UgY2FuIHVzZSB0aGVz
ZSB0YWdzIHRvIHNob3cgYSB0aHVtYm5haWwgb2YgdGhlIHByZXZpb3VzIG9yIG5leHQgaW1h
Z2UgaW5zdGVhZCBvZiB0aGUgYXJyb3dzICg8Y29kZT4mIzM4O2xhcnI7PC9jb2RlPiAmbGFy
cjsgcmVzcGVjdGl2ZSA8Y29kZT4mIzM4O3JhcnI7PC9jb2RlPiAmcmFycjspIGluIHRoZSBp
bWFnZSBmb3JtLjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPiYjNjA7dHhwOnZkaF9mbGlja3Jf
aW1nX3ByZXZpb3VzX3RodW1ibmFpbCAvJiM2Mjs8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+
JiM2MDt0eHA6dmRoX2ZsaWNrcl9pbWdfbmV4dF90aHVtYm5haWwgLyYjNjI7PC9jb2RlPjwv
bGk+Cgk8L3VsPgoKCTxoMz5Gb3JtIHRhZyBhdHRyaWJ1dGVzLCBhbGwgbm90IG1hbmRhdG9y
eTwvaDM+CgoJPGg0PmZvciA8Y29kZT4mIzYwO3R4cDp2ZGhfZmxpY2tyX3RodW1ibmFpbHNf
bGlzdCAvJiM2Mjs8L2NvZGU+PC9oND4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+bGlzdG1vZGU9
JiM4MjIwO2ltZ3x0ZXh0JiM4MjIxOzwvc3Ryb25nPiBTaG93IHRoZSB0aHVtYm5haWwgbGlz
dCBhcyBpbWFnZXMgKGRlZmF1bHQpIG9yIGFzIGEgdGV4dCBsaXN0LjwvbGk+CgkJPGxpPjxz
dHJvbmc+d3JhcHRhZz0mIzgyMjE7Li4uJiM4MjIxOzwvc3Ryb25nPiBTZWUgPHNwYW4gY2xh
c3M9ImNhcHMiPlRYUDwvc3Bhbj4uPC9saT4KCQk8bGk+PHN0cm9uZz5icmVhaz0mIzgyMjE7
Li4uJiM4MjIxOzwvc3Ryb25nPiBTZWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4u
PC9saT4KCTwvdWw+CgoJPHA+PGEgaHJlZj0iI2NvbnRlbnRzIj4mdWFycjsgdG9wPC9hPjwv
cD4KCiI7czo0OiJjb2RlIjtzOjQ1NzI4OiIvKiB2ZGhfZmxpY2tyIFRleHRwYXR0ZXJuIHBs
dWdpbgoqCiogQXV0aG9yOiBSYWxwaCB2b24gZGVyIEhleWRlbiA8ZmxpY2tyQHJ2ZGgubmV0
PgoqICAgICAgICAgaHR0cDovL3d3dy5ydmRoLm5ldC92ZGhfZmxpY2tyCioKKgoqIExpY2Vu
c2U6IEdQTAoqCiovCgovKiBIZXJlIHlvdSBjYW4gdHJhbnNsYXRlIG9yIGFkanVzdCB0aGlu
Z3MgYXMgeW91IGxpa2UuCioKKi8KZ2xvYmFsICR0ZXh0OwokdGV4dCA9IGFycmF5KCk7CiR0
ZXh0WydlcnJvcl9tZXNzYWdlJ10gPSAnRmFpbGVkIHRvIGNvbm5lY3QgdG8gZmxpY2tyLmNv
bSEnOwokdGV4dFsnbGF0ZXN0J10gPSAnTXkgbGF0ZXN0IFBpY3R1cmVzLi4uJzsKCmdsb2Jh
bCAkY2xlYW5fdXJsczsKLy8kY2xlYW5fdXJscyA9IDE7CgpnbG9iYWwgJG5zaWQ7Ci8vICRu
c2lkID0gJzEyMzQ1Njc4QE4wMCc7CgoKY2xhc3MgVmRoX0ZsaWNrciB7Cgl2YXIgJGFwaV9r
ZXksICRlbWFpbCwgJG5zaWQsICRwYXNzd29yZCwgJHVzZXJkYXRhLCAkeG1sLCAkZm9ybSwg
JHVzZV9hcnRpY2xldXJsOwoKCWZ1bmN0aW9uIFZkaF9GbGlja3IoJHBhcmFtcykgewoJCSR0
aGlzLT5hcGlfa2V5ID0gJ2MzNGU0MGRjNzA3ZjliYzUyNzM2ZGJhNTY4MTE4OTNmJzsKCQlp
Zihpc3NldCgkcGFyYW1zWydlcnJvcl9tZXNzYWdlJ10pKSB7CgkJCSRHTE9CQUxTWyd0ZXh0
J11bJ2Vycm9yX21lc3NhZ2UnXSA9ICRwYXJhbXNbJ2Vycm9yX21lc3NhZ2UnXTsKCQl9CgkJ
aWYoaXNzZXQoJHBhcmFtc1snY2xlYW5fdXJscyddKSkgewoJCQkkR0xPQkFMU1snY2xlYW5f
dXJscyddID0gJHBhcmFtc1snY2xlYW5fdXJscyddOwoJCX0KCQkkbWFpbnZlcnNpb24gPSBz
dHJ0b2sgKFBIUF9WRVJTSU9OLCIuIik7CgkJaWYoISgkbWFpbnZlcnNpb24gPj0gNSkpIHsK
CQkJJEdMT0JBTFNbJ3VzZV9waHA0J10gPSAxOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sn
ZW1haWwnXSkpICR0aGlzLT5lbWFpbCA9ICRwYXJhbXNbJ2VtYWlsJ107CgkJKGlzc2V0KCRH
TE9CQUxTWyduc2lkJ10pKT8KCQkkdGhpcy0+bnNpZCA9ICRHTE9CQUxTWyduc2lkJ106CgkJ
JHRoaXMtPm5zaWQgPSAkcGFyYW1zWyduc2lkJ107CgkJaWYgKCRHTE9CQUxTWydpc19hcnRp
Y2xlX2xpc3QnXSA9PT0gZmFsc2UpICR0aGlzLT51c2VfYXJ0aWNsZXVybCA9IHRydWU7CgkJ
aWYgKGlzc2V0KCRwYXJhbXNbJ3VzZV9hcnRpY2xldXJsJ10pIGFuZCAkcGFyYW1zWyd1c2Vf
YXJ0aWNsZXVybCddID09IDEpICR0aGlzLT51c2VfYXJ0aWNsZXVybCA9IHRydWU7CgkJaWYg
KGlzc2V0KCRwYXJhbXNbJ3VzZV9hcnRpY2xldXJsJ10pIGFuZCAkcGFyYW1zWyd1c2VfYXJ0
aWNsZXVybCddID09IDApICR0aGlzLT51c2VfYXJ0aWNsZXVybCA9IGZhbHNlOwoJCWlmICgh
aXNzZXQoJHRoaXMtPm5zaWQpKSAkdGhpcy0+Z2V0TnNpZCgpOwoJCSR0aGlzLT51c2VyZGF0
YSA9ICcmYXBpX2tleT0nIC4gJHRoaXMtPmFwaV9rZXkgLiAnJnVzZXJfaWQ9JyAuICR0aGlz
LT5uc2lkOwoJCWlmIChpc3NldCgkcGFyYW1zWydwYXNzd29yZCddKSkgewoJCQkkdGhpcy0+
cGFzc3dvcmQgPSAkcGFyYW1zWydwYXNzd29yZCddOwoJCQkkdGhpcy0+dXNlcmRhdGEgLj0g
JyZwYXNzd29yZD0nIC4gJHRoaXMtPnBhc3N3b3JkOwoJCX0KCQlpZiAoaXNzZXQoJHRoaXMt
PmVtYWlsKSkgJHRoaXMtPnVzZXJkYXRhIC49ICcmZW1haWw9JyAuICR0aGlzLT5lbWFpbDsK
CX0KCglmdW5jdGlvbiBnZXROc2lkKCkgewoJCSRtZXRob2QgPSAnZmxpY2tyLnBlb3BsZS5m
aW5kQnlFbWFpbCZhcGlfa2V5PScgLiAkdGhpcy0+YXBpX2tleSAuICcmZmluZF9lbWFpbD0n
IC4gJHRoaXMtPmVtYWlsOwoJCSR0aGlzLT54bWwgPSBuZXcgRmxpY2tyKCRtZXRob2QpOwoJ
CWlmKCR0aGlzLT54bWwtPmlzVmFsaWQoKSkgewoJCQkkdGhpcy0+bnNpZCA9IGFycmF5X3No
aWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcvcnNwL3VzZXIvQGlkJykpOwoJCX0KCX0KCglmdW5j
dGlvbiBtYWtlUmVxdWVzdCgkcGFyYW1ldGVycykgewoJCSRrZXlzID0gYXJyYXlfa2V5cygk
cGFyYW1ldGVycyk7CgkJaWYgKCRHTE9CQUxTWydwZXJtbGlua19tb2RlJ10gPT0gJ21lc3N5
JykgewoJCQkoJHRoaXMtPnVzZV9hcnRpY2xldXJsKT8KCQkJJGh0bWwgPSBwZXJtbGlua3Vy
bCgkR0xPQkFMU1sndGhpc2FydGljbGUnXSk6CgkJCSRodG1sID0gaHUuJz9zPScudXJsZW5j
b2RlKCRHTE9CQUxTWydzJ10pOwoJCQlmb3IoJGkgPSAwOyAkaSA8IHNpemVvZigkcGFyYW1l
dGVycyk7ICRpKyspIHsKCQkJCSRodG1sIC49ICcmYW1wOycgLiAka2V5c1skaV0gLiAnPScg
LiAkcGFyYW1ldGVyc1ska2V5c1skaV1dOwoJCQl9CgkJCXJldHVybiAkaHRtbDsKCQl9CgkJ
ZWxzZSBpZiAoJEdMT0JBTFNbJ2NsZWFuX3VybHMnXSkgewoJCQkoJHRoaXMtPnVzZV9hcnRp
Y2xldXJsKT8KCQkJJGh0bWwgPSBwZXJtbGlua3VybCgkR0xPQkFMU1sndGhpc2FydGljbGUn
XSk6CgkJCSRodG1sID0gaHUudXJsZW5jb2RlKCRHTE9CQUxTWydzJ10pOwoJCQlmb3IoJGkg
PSAwOyAkaSA8IHNpemVvZigkcGFyYW1ldGVycyk7ICRpKyspIHsKCQkJCSRodG1sIC49ICcv
JyAuICRrZXlzWyRpXSAuICcvJyAuICRwYXJhbWV0ZXJzWyRrZXlzWyRpXV07CgkJCX0KCQkJ
cmV0dXJuICRodG1sOwoJCX0KCQllbHNlIHsKCQkJKCR0aGlzLT51c2VfYXJ0aWNsZXVybCk/
CgkJCSRodG1sID0gcGVybWxpbmt1cmwoJEdMT0JBTFNbJ3RoaXNhcnRpY2xlJ10pIC4gJy8/
JyAuICRrZXlzWzBdIC4gJz0nIC4kcGFyYW1ldGVyc1ska2V5c1swXV06CgkJCSRodG1sID0g
aHUudXJsZW5jb2RlKCRHTE9CQUxTWydzJ10pIC4gJy8/JyAuICRrZXlzWzBdIC4gJz0nIC4k
cGFyYW1ldGVyc1ska2V5c1swXV07CgkJCWZvcigkaSA9IDE7ICRpIDwgc2l6ZW9mKCRwYXJh
bWV0ZXJzKTsgJGkrKykgewoJCQkJJGh0bWwgLj0gJyZhbXA7JyAuICRrZXlzWyRpXSAuICc9
JyAuICRwYXJhbWV0ZXJzWyRrZXlzWyRpXV07CgkJCX0KCQl9CgkJcmV0dXJuICRodG1sOwoJ
fQoKCWZ1bmN0aW9uIGdldFBob3RvVXJsKCRwaG90bywgJHNpemUpIHsKCQkkZmFybSA9ICRw
aG90b1snZmFybSddOwoJCSRzZXJ2ZXIgPSAkcGhvdG9bJ3NlcnZlciddOwoJCSRpZCA9IChp
c3NldCgkcGhvdG9bJ3ByaW1hcnknXSkpPyAkcGhvdG9bJ3ByaW1hcnknXSA6ICRwaG90b1sn
aWQnXTsKCQkkc2VjcmV0ID0gJHBob3RvWydzZWNyZXQnXTsKCQkkZm9ybWF0ID0gImpwZyI7
CgkJJGltZ3NpemUgPSAoIm4iICE9ICRzaXplKT8gIl8iIC4gJHNpemUgOiAiIjsKCQlpZiAo
Im8iID09ICRzaXplKQoJCXsKCQkJJHNlY3JldCA9ICRwaG90b1snb3JpZ2luYWxfc2VjcmV0
J107CgkJCSRmb3JtYXQgPSAkcGhvdG9bJ29yaWdpbmFsX2Zvcm1hdCddOwoJCX0KCQkkaW1n
X3VybCA9ICJodHRwOi8vZmFybSR7ZmFybX0uc3RhdGljLmZsaWNrci5jb20vJHtzZXJ2ZXJ9
LyR7aWR9XyR7c2VjcmV0fSR7aW1nc2l6ZX0uJHtmb3JtYXR9IjsKCQlyZXR1cm4gJGltZ191
cmw7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPm5zaWQ7
Cgl9Cn0KCgpjbGFzcyBHYWxsZXJ5IGV4dGVuZHMgVmRoX0ZsaWNrciB7Cgl2YXIgJHhtbCwg
JGksICRzZXQsICRzZXRfcHJldmlld19zaXplLCAkbW9kZTsKCXZhciAkc2V0c19wZXJfcGFn
ZSwgJHBhZ2UsICRwcmV2aW91c19wYWdlLCAkbmV4dF9wYWdlLCAkbGFzdHBhZ2UsICRudW1i
ZXJfb2Zfc2V0czsKCXZhciAkZXhjZXB0aW9ucyA9IGFycmF5KCk7Cgl2YXIgJHNldHMgPSBh
cnJheSgpOwoKCWZ1bmN0aW9uIEdhbGxlcnkoJHBhcmFtcykgewoJCSR0aGlzLT5WZGhfRmxp
Y2tyKCRwYXJhbXMpOwoJCWlmIChpc3NldCgkcGFyYW1zWydleGNlcHQnXSkpICR0aGlzLT5l
eGNlcHRpb25zID0gZXhwbG9kZSgiLCIsICRwYXJhbXNbJ2V4Y2VwdCddKTsKCQkoaXNzZXQo
JHBhcmFtc1snc2V0X3ByZXZpZXdfc2l6ZSddKSk/CgkJJHRoaXMtPnNldF9wcmV2aWV3X3Np
emUgPSBAJHBhcmFtc1snc2V0X3ByZXZpZXdfc2l6ZSddOgoJCSR0aGlzLT5zZXRfcHJldmll
d19zaXplID0gJ20nOwoJCShpc3NldCgkX0dFVFsncGFnZSddKSk/CgkJJHRoaXMtPnBhZ2Ug
PSAkX0dFVFsncGFnZSddOgoJCSR0aGlzLT5wYWdlID0gMTsKCQkoIWVtcHR5KCRwYXJhbXNb
J21vZGUnXSkpPwoJCSR0aGlzLT5tb2RlID0gJHBhcmFtc1snbW9kZSddOgoJCSR0aGlzLT5t
b2RlID0gJ2FsbCc7CgkJJHRoaXMtPmdldFNldHMoJHBhcmFtcyk7CgkJaWYgKGlzc2V0KCRw
YXJhbXNbJ3NldHNfcGVyX3BhZ2UnXSkpIHsKCQkJJHRoaXMtPnNldHNfcGVyX3BhZ2UgPSAk
cGFyYW1zWyd0aHVtYnNfcGVyX3BhZ2UnXTsKCQkJJHRoaXMtPmxhc3RwYWdlID0gY2VpbCgk
dGhpcy0+bnVtYmVyX29mX3NldHMgLyAkdGhpcy0+c2V0c19wZXJfcGFnZSk7CgkJCWlmICgk
dGhpcy0+cGFnZS0xID49IDEpIHsKCQkJCSR0aGlzLT5wcmV2aW91c19wYWdlID0gJHRoaXMt
PnBhZ2UgLSAxOwoJCQl9CgkJCWVsc2UgewoJCQkJJHRoaXMtPnByZXZpb3VzX3BhZ2UgPSAk
dGhpcy0+bGFzdHBhZ2U7CgkJCX0KCQkJaWYgKCR0aGlzLT5wYWdlKzEgPD0gJHRoaXMtPmxh
c3RwYWdlKSB7CgkJCQkkdGhpcy0+bmV4dF9wYWdlID0gJHRoaXMtPnBhZ2UgKyAxOwoJCQl9
CgkJCWVsc2UgewoJCQkJJHRoaXMtPm5leHRfcGFnZSA9ICAxOwoJCQl9CgkJfQoJCWlmIChp
c3NldCgkcGFyYW1zWydzZXRfZm9ybSddKSkgewoJCQkkdGhpcy0+Zm9ybSA9IGZldGNoKCdG
b3JtJywndHhwX2Zvcm0nLCJuYW1lIiwkcGFyYW1zWydzZXRfZm9ybSddKTsKCQl9CgkJZWxz
ZSB7CgkJCSR0aGlzLT5mb3JtID0gJwoJCQk8ZGl2IGNsYXNzPSJzZXRwcmV2aWV3Ij4KCQkJ
PGRpdiBjbGFzcz0idGh1bWJuYWlsIj4KCQkJPHR4cDp2ZGhfZmxpY2tyX3NldF9saW5rIHRp
dGxlPSJQcm9jZWVkIHRvIHRoaXMgZ2FsbGVyeSI+PHR4cDp2ZGhfZmxpY2tyX3NldF9pbWcg
dGl0bGU9IlByb2NlZWQgdG8gdGhpcyBnYWxsZXJ5IiAvPjwvdHhwOnZkaF9mbGlja3Jfc2V0
X2xpbms+CgkJCTwvZGl2PgoJCQk8ZGl2PgoJCQk8aDMgY2xhc3M9InRpdGxlIj48dHhwOnZk
aF9mbGlja3Jfc2V0X2xpbmsgdGl0bGU9IlByb2NlZWQgdG8gdGhpcyBnYWxsZXJ5Ij48dHhw
OnZkaF9mbGlja3Jfc2V0X3RpdGxlIC8+PC90eHA6dmRoX2ZsaWNrcl9zZXRfbGluaz48L2gz
PgoJCQk8aDQgY2xhc3M9Im51bWJlcl9vZl9waG90b3MiPjx0eHA6dmRoX2ZsaWNrcl9zZXRf
bnVtYmVyX29mX3Bob3RvcyAvPiBQaG90b3M8L2g0PgoJCQk8cCBjbGFzcz0ic2V0X2Rlc2Ny
aXB0aW9uIj48dHhwOnZkaF9mbGlja3Jfc2V0X2Rlc2NyaXB0aW9uIC8+PC9wPgoJCQk8L2Rp
dj4KCQkJPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2PgoJCQk8L2Rpdj4nOwoJCX0K
CX0KCglmdW5jdGlvbiBnZXRTZXRzKCRwYXJhbXMpIHsKCQkkbWV0aG9kID0gJ2ZsaWNrci5w
aG90b3NldHMuZ2V0TGlzdCcgLiAkdGhpcy0+dXNlcmRhdGE7CgkJJHRoaXMtPnhtbCA9IG5l
dyBGbGlja3IoJG1ldGhvZCk7CgkJaWYoJHRoaXMtPnhtbC0+aXNWYWxpZCgpKSB7CgkJCSRp
PTE7CgkJCWZvcmVhY2goJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3AvcGhvdG9zZXRzL3Bob3Rv
c2V0JykgYXMgJHBob3Rvc2V0KSB7CgkJCQkkc2V0X2lkID0gYXJyYXlfc2hpZnQoJHRoaXMt
PnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zZXRzL3Bob3Rvc2V0WyRpXS9AaWQiKSk7CgkJCQlp
ZigkdGhpcy0+bW9kZT09J2FsbCcpIHsKCQkJCQlpZighaW5fYXJyYXkoJHNldF9pZCwgJHRo
aXMtPmV4Y2VwdGlvbnMpKSB7CgkJCQkJCSR0aGlzLT5hZGRfdG9fc2V0cygkc2V0X2lkLCAk
aSk7CgkJCQkJfQoJCQkJfQoJCQkJaWYoJHRoaXMtPm1vZGU9PSdub25lJykgewoJCQkJCWlm
KGluX2FycmF5KCRzZXRfaWQsICR0aGlzLT5leGNlcHRpb25zKSkgewoJCQkJCQkkdGhpcy0+
YWRkX3RvX3NldHMoJHNldF9pZCwgJGkpOwoJCQkJCX0KCQkJCX0KCQkJCSRpKys7CgkJCX0K
CQl9Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX3NldHMoJHNldF9pZCwgJGkpIHsKCQkkc2V0ID0g
YXJyYXkoJ2lkJyA9PiAkc2V0X2lkKTsKCQkkc2V0Wyd0aXRsZSddID0gYXJyYXlfc2hpZnQo
JHRoaXMtPnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zZXRzL3Bob3Rvc2V0WyRpXS90aXRsZS90
ZXh0KCkiKSk7CgkJJHNldFsnZGVzY3JpcHRpb24nXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54
bWwtPnhwYXRoKCIvcnNwL3Bob3Rvc2V0cy9waG90b3NldFskaV0vZGVzY3JpcHRpb24vdGV4
dCgpIikpOwoJCSRzZXRbJ3ByaW1hcnknXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhw
YXRoKCIvcnNwL3Bob3Rvc2V0cy9waG90b3NldFskaV0vQHByaW1hcnkiKSk7CgkJJHNldFsn
ZmFybSddID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zZXRz
L3Bob3Rvc2V0WyRpXS9AZmFybSIpKTsKCQkkc2V0WydzZWNyZXQnXSA9IGFycmF5X3NoaWZ0
KCR0aGlzLT54bWwtPnhwYXRoKCIvcnNwL3Bob3Rvc2V0cy9waG90b3NldFskaV0vQHNlY3Jl
dCIpKTsKCQkkc2V0WydzZXJ2ZXInXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRo
KCIvcnNwL3Bob3Rvc2V0cy9waG90b3NldFskaV0vQHNlcnZlciIpKTsKCQkkc2V0WydwaG90
b3MnXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCIvcnNwL3Bob3Rvc2V0cy9w
aG90b3NldFskaV0vQHBob3RvcyIpKTsKCQlhcnJheV9wdXNoKCR0aGlzLT5zZXRzLCAkc2V0
KTsKCX0KCglmdW5jdGlvbiBzZXRfaW1nKCRwYXJhbXMpIHsKCQkkaW1nX3VybCA9ICR0aGlz
LT5nZXRQaG90b1VybCgkdGhpcy0+c2V0LCAkdGhpcy0+c2V0X3ByZXZpZXdfc2l6ZSk7CgkJ
JGltZ191cmwgPSAnPGltZyBzcmM9IicgLiAkaW1nX3VybCAuICciIGFsdD0iJyAuICR0aGlz
LT50aXRsZXNbJHRoaXMtPmldOwoJCShpc3NldCgkcGFyYW1zWyd0aXRsZSddKSk/ICRpbWdf
dXJsIC49ICciIHRpdGxlPSInIC4gJHBhcmFtc1sndGl0bGUnXSAuICciIC8+JyA6ICRpbWdf
dXJsIC49ICciIC8+JzsKCQlyZXR1cm4gJGltZ191cmw7Cgl9CgoJZnVuY3Rpb24gc2V0X2xp
bmsoJHBhcmFtcywgJHRoaW5nKSB7CgkJJHdoYXQgPSAnIGhyZWY9IicuICR0aGlzLT5tYWtl
UmVxdWVzdChhcnJheSgnc2V0JyA9PiAkdGhpcy0+c2V0WydpZCddKSkgLiciJzsKCQlpZiAo
aXNzZXQoJHBhcmFtc1sndGl0bGUnXSkpICR3aGF0IC49ICcgdGl0bGU9IicgLiAkcGFyYW1z
Wyd0aXRsZSddIC4gJyInOwoJCSRodG1sID0gdGFnKCR0aGluZywnYScsJHdoYXQpOwoJCXJl
dHVybiAkaHRtbDsKCX0KCglmdW5jdGlvbiBzZXRfdGl0bGUoKSB7CgkJJGh0bWwgPSAkdGhp
cy0+c2V0Wyd0aXRsZSddOwoJCXJldHVybiAkaHRtbDsKCX0KCglmdW5jdGlvbiBzZXRfbnVt
YmVyX29mX3Bob3RvcygpIHsKCQkkaHRtbCA9ICR0aGlzLT5zZXRbJ3Bob3RvcyddOwoJCXJl
dHVybiAkaHRtbDsKCX0KCglmdW5jdGlvbiBzZXRfZGVzY3JpcHRpb24oKSB7CgkJJGh0bWwg
PSAkdGhpcy0+c2V0WydkZXNjcmlwdGlvbiddOwoJCXJldHVybiAkaHRtbDsKCX0KCglmdW5j
dGlvbiBzZXRfbGlzdCgkcGFyYW1zKSB7CgkJaWYoISR0aGlzLT54bWwtPmlzVmFsaWQoKSkg
ewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCShpc3NldCgkcGFyYW1zWyd3cmFwdGFnJ10pID09
IHRydWUpPyAkd3JhcHRhZyA9ICRwYXJhbXNbJ3dyYXB0YWcnXSA6ICR3cmFwdGFnID0gJyc7
CgkJKGlzc2V0KCRwYXJhbXNbJ2JyZWFrJ10pID09IHRydWUpPyAkYnJlYWsgPSAkcGFyYW1z
WydicmVhayddIDogJGJyZWFrID0gJ2JyJzsKCQkkdGhpcy0+aSA9IDA7CgkJZm9yZWFjaCAo
JHRoaXMtPnNldHMgYXMgJHRoaXMtPnNldCkgewoJCQkoJF9HRVRbJ3NldCddID09IChpbnQp
ICR0aGlzLT5zZXRbJ2lkJ10pPyAkcGFyYW0gPSAnIGNsYXNzPSJjdXJyZW50IicgOiAnJzsK
CQkJKCRicmVhayAhPSAnYnInKT8KCQkJJGh0bWwgLj0gdGFnKCR0aGlzLT5zZXRfbGluaygn
JywgJHRoaXMtPnNldF90aXRsZSgpKSwgJGJyZWFrLCAkcGFyYW0pIC4gIlxuIjoKCQkJJGh0
bWwgLj0gJHRoaXMtPnNldF9saW5rKCcnLCAkdGhpcy0+c2V0X3RpdGxlKCkpIC4nPGJyIC8+
JyAuICJcbiI7CgkJCSR0aGlzLT5pKys7CgkJCXVuc2V0KCRwYXJhbSk7CgkJfQoJCXJldHVy
biAoKCR3cmFwdGFnICE9ICcnKSA9PSB0cnVlKT8gdGFnKCRodG1sLCAkd3JhcHRhZykgOiAk
aHRtbDsKCX0KCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCWlmKCEkdGhpcy0+eG1sLT5p
c1ZhbGlkKCkpIHsKCQkJcmV0dXJuICRHTE9CQUxTWyd0ZXh0J11bJ2Vycm9yX21lc3NhZ2Un
XTsKCQl9CgkJJHRoaXMtPmkgPSAwOwoJCSRyZXN1bHQgPSAnJzsKCQlmb3JlYWNoICgkdGhp
cy0+c2V0cyBhcyAkdGhpcy0+c2V0KSB7CgkJCSRyZXN1bHQgLj0gcGFyc2UoJHRoaXMtPmZv
cm0pOwoJCQkkdGhpcy0+aSsrOwoJCX0KCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQoKCmNsYXNz
IFRodW1ibmFpbHMgZXh0ZW5kcyBWZGhfRmxpY2tyIHsKCXZhciAkeG1sLCAkaWQsICRvd25l
ciwgJHByaW1hcnksICRzZWNyZXQsICRudW1iZXJfb2ZfcGhvdG9zLCAkdGl0bGUsICRkZXNj
cmlwdGlvbiwgJHNldCwgJHBob3RvLCAkbGF0ZXN0OwoJdmFyICR0aHVtYm5haWxfc2l6ZSwg
JGltZ19zaXplLCAkb3BlbiwgJHRhZ19hbmQsICRsaW5rLCAkdXNlX2FydF9pZF9hc190YWc7
Cgl2YXIgJHBhZ2UsICR0aHVtYnNfcGVyX3BhZ2UsICRzdGFydCwgJGVuZCwgJGxhc3RwYWdl
LCAkcHJldmlvdXNfcGFnZSwgJG5leHRfcGFnZTsKCXZhciAkcGhvdG9zID0gYXJyYXkoKSwg
JHRhZ3MgPSBhcnJheSgpOwoKCWZ1bmN0aW9uIFRodW1ibmFpbHMoJHBhcmFtcykgewoJCSR0
aGlzLT5WZGhfRmxpY2tyKCRwYXJhbXMpOwoJCSR0aGlzLT5wYXJhbXMgPSAkcGFyYW1zOwoJ
CShpc3NldCgkcGFyYW1zWyd0aHVtYm5haWxfc2l6ZSddKSk/CgkJJHRoaXMtPnRodW1ibmFp
bF9zaXplID0gJHBhcmFtc1sndGh1bWJuYWlsX3NpemUnXToKCQkkdGhpcy0+dGh1bWJuYWls
X3NpemUgPSAncyc7CgkJKGlzc2V0KCRwYXJhbXNbJ2ltZ19zaXplJ10pKT8KCQkkdGhpcy0+
aW1nX3NpemUgPSAkcGFyYW1zWydpbWdfc2l6ZSddOgoJCSR0aGlzLT5pbWdfc2l6ZSA9ICdu
JzsKCQkoaXNzZXQoJHBhcmFtc1snb3BlbiddKSk/CgkJJHRoaXMtPm9wZW4gPSAkcGFyYW1z
WydvcGVuJ106CgkJJHRoaXMtPm9wZW4gPSAnc2VsZic7CgkJKGlzc2V0KCRwYXJhbXNbJ3Nl
dCddKSk/CgkJJHRoaXMtPnNldCA9ICRwYXJhbXNbJ3NldCddOgoJCSR0aGlzLT5zZXQgPSAk
X0dFVFsnc2V0J107CgkJKGlzc2V0KCRfR0VUWyd0YWdzJ10pKT8KCQlAJHRoaXMtPnRhZ3Mg
PSAkX0dFVFsndGFncyddOgoJCUAkdGhpcy0+dGFncyA9ICRwYXJhbXNbJ3RhZ3MnXTsKCQlp
ZighZW1wdHkoJHRoaXMtPnRhZ3MpKSB1bnNldCgkdGhpcy0+c2V0KTsKCQkoaXNzZXQoJF9H
RVRbJ3BhZ2UnXSkpPwoJCSR0aGlzLT5wYWdlID0gJF9HRVRbJ3BhZ2UnXToKCQkkdGhpcy0+
cGFnZSA9IDE7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2xhdGVzdCddKSkgJHRoaXMtPmxhdGVz
dCA9ICRwYXJhbXNbJ2xhdGVzdCddOwoJCShpc3NldCgkcGFyYW1zWydsaW5rdGh1bWJzJ10p
KT8KCQkkdGhpcy0+bGlua3RodW1icyA9ICRwYXJhbXNbJ2xpbmt0aHVtYnMnXToKCQkkdGhp
cy0+bGlua3RodW1icyA9IDE7CgkJKGlzc2V0KCRwYXJhbXNbJ3VzZV9hcnRfaWRfYXNfdGFn
J10pKT8KCQkkdGhpcy0+dXNlX2FydF9pZF9hc190YWcgPSAkcGFyYW1zWyd1c2VfYXJ0X2lk
X2FzX3RhZyddOgoJCSR0aGlzLT51c2VfYXJ0X2lkX2FzX3RhZyA9IDA7CgkJaWYgKGlzc2V0
KCRwYXJhbXNbJ3RhZ19hbmQnXSkpICR0aGlzLT50YWdfYW5kID0gMTsKCQlpZiAoaXNzZXQo
JHBhcmFtc1sndGh1bWJuYWlsc19mb3JtJ10pKSAkdGhpcy0+Zm9ybSA9IGZldGNoKCdGb3Jt
JywndHhwX2Zvcm0nLCJuYW1lIiwkcGFyYW1zWyd0aHVtYm5haWxzX2Zvcm0nXSk7CgkJZWxz
ZSB7CgkJCSR0aGlzLT5mb3JtID0gJwoJCQk8aDM+PHR4cDp2ZGhfZmxpY2tyX3RodW1ibmFp
bHNfdGl0bGUgLz4sIDx0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX251bWJlcl9vZl9waG90
b3MgLz4gUGhvdG9zPC9oMz4KCQkJPHAgY2xhc3M9ImZsaWNrcl9zbGlkZXNob3ciPgoJCQk8
dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19zbGlkZXNob3c+JnJhcXVvOyBTaG93IGFzIHNs
aWRlc2hvdyBpbiBuZXcgd2luZG93LjwvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19zbGlk
ZXNob3c+CgkJCTwvcD4KCQkJPHR4cDp2ZGhfZmxpY2tyX3RodW1ibmFpbHNfaWZfZGVzY3Jp
cHRpb24+CgkJCTxwIGNsYXNzPSJmbGlja3JfdGh1bWJuYWlsc19kZXNjcmlwdGlvbiI+CgkJ
CTx0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX2Rlc2NyaXB0aW9uIC8+CgkJCTwvcD4KCQkJ
PC90eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX2lmX2Rlc2NyaXB0aW9uPgoJCQk8ZGl2IGNs
YXNzPSJmbGlja3JzZXQiPgoJCQk8dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19saXN0IC8+
CgkJCTwvZGl2PgoJCQk8dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19pZl9tdWx0aXBsZV9w
YWdlcz4KCQkJPGgzIGNsYXNzPSJwYWdlc19uYXYiPnBhZ2VzIG5hdmlnYXRpb248L2gzPgoJ
CQk8cD4KCQkJdGh1bWJzIHBlciBwYWdlOiA8dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19w
ZXJfcGFnZSAvPjxiciAvPgoJCQlTaG93aW5nIHBhZ2UgPHR4cDp2ZGhfZmxpY2tyX3RodW1i
bmFpbHNfY3VycmVudF9wYWdlIC8+IG9mIDx0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3Rv
dGFsX3BhZ2VzIC8+LjxiciAvPgoJCQlTaG93aW5nIHRodW1iIDx0eHA6dmRoX2ZsaWNrcl90
aHVtYm5haWxzX3BhZ2VzX3N0YXJ0dGh1bWIgLz4gdG8gPHR4cDp2ZGhfZmxpY2tyX3RodW1i
bmFpbHNfcGFnZXNfZW5kdGh1bWIgLz4uPGJyIC8+CgkJCTx0eHA6dmRoX2ZsaWNrcl90aHVt
Ym5haWxzX3BhZ2VzX2ZpcnN0PiZsYXF1bzsgZmlyc3Q8L3R4cDp2ZGhfZmxpY2tyX3RodW1i
bmFpbHNfcGFnZXNfZmlyc3Q+IHwKCQkJPHR4cDp2ZGhfZmxpY2tyX3RodW1ibmFpbHNfcGFn
ZXNfcHJldmlvdXM+Jmx0OyBwcmV2aW91czwvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19w
YWdlc19wcmV2aW91cz4gfAoJCQk8dHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19u
ZXh0Pm5leHQgJmd0OzwvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19uZXh0PiB8
CgkJCTx0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX2xhc3Q+bGFzdCAmcmFxdW87
PC90eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX2xhc3Q+CgkJCTwvcD4KCQkJR28g
dG8gcGFnZSBudW1iZXI6CgkJCTx0eHA6dmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX2xp
c3Qgd3JhcHRhZz0idWwiIGJyZWFrPSJsaSIgY2xhc3MgPSJ0aHVtYnNfcGFnZXMiIC8+CgkJ
CTwvdHhwOnZkaF9mbGlja3JfdGh1bWJuYWlsc19pZl9tdWx0aXBsZV9wYWdlcz4KCQkJPGRp
diBzdHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2Pic7CgkJfQoJCSR0aGlzLT5nZXRQaG90b3Mo
KTsKCQkkdGhpcy0+dGh1bWJzX3Blcl9wYWdlID0gMDsKCQlpZiAoaXNzZXQoJHBhcmFtc1sn
dGh1bWJzX3Blcl9wYWdlJ10pKSB7CgkJCSR0aGlzLT50aHVtYnNfcGVyX3BhZ2UgPSAkcGFy
YW1zWyd0aHVtYnNfcGVyX3BhZ2UnXTsKCQkJJHRoaXMtPmxhc3RwYWdlID0gY2VpbCgkdGhp
cy0+bnVtYmVyX29mX3Bob3RvcyAvICR0aGlzLT50aHVtYnNfcGVyX3BhZ2UpOwoJCQlpZiAo
JHRoaXMtPnBhZ2UtMSA+PSAxKSB7CgkJCQkkdGhpcy0+cHJldmlvdXNfcGFnZSA9ICR0aGlz
LT5wYWdlIC0gMTsKCQkJfQoJCQllbHNlIHsKCQkJCSR0aGlzLT5wcmV2aW91c19wYWdlID0g
JHRoaXMtPmxhc3RwYWdlOwoJCQl9CgkJCWlmICgkdGhpcy0+cGFnZSsxIDw9ICR0aGlzLT5s
YXN0cGFnZSkgewoJCQkJJHRoaXMtPm5leHRfcGFnZSA9ICR0aGlzLT5wYWdlICsgMTsKCQkJ
fQoJCQllbHNlIHsKCQkJCSR0aGlzLT5uZXh0X3BhZ2UgPSAgMTsKCQkJfQoJCX0KCX0KCglm
dW5jdGlvbiBnZXRQaG90b3MoKSB7CgkJaWYgKCR0aGlzLT51c2VfYXJ0X2lkX2FzX3RhZyA9
PSAxKSB7CgkJCWdsb2JhbCAkdGhpc2FydGljbGU7CgkJCWlmKGlzc2V0KCR0aGlzLT50YWdz
KSBhbmQgKCR0aGlzLT50YWdzICE9ICcnKSkgewoJCQkJJHRoaXMtPnRhZ3MgLj0gJywnOwoJ
CQl9CgkJCSR0aGlzLT50YWdzIC49ICdhcnRpY2xlJy4kdGhpc2FydGljbGVbJ3RoaXNpZCdd
OwoJCX0KCQlpZiAoaXNzZXQoJHRoaXMtPnRhZ3MpKSB7CgkJCSR0aGlzLT50aXRsZSA9ICR0
aGlzLT50YWdzOwoJCQkkbWV0aG9kID0gJ2ZsaWNrci5waG90b3Muc2VhcmNoJyAuICR0aGlz
LT51c2VyZGF0YSAuICcmdGFncz0nIC4gJHRoaXMtPnRhZ3MgLiAnJnBlcl9wYWdlPTUwMCZl
eHRyYXM9b3JpZ2luYWxfZm9ybWF0JzsKCQkJaWYgKGlzc2V0KCR0aGlzLT50YWdfYW5kKSkg
ewoJCQkJJG1ldGhvZCAuPSAnJnRhZ19tb2RlPWFsbCc7CgkJCX0KCQkJJHRoaXMtPnhtbCA9
IG5ldyBGbGlja3IoJG1ldGhvZCk7CgkJCWlmKCR0aGlzLT54bWwtPmlzVmFsaWQoKSkgewoJ
CQkJZm9yZWFjaCgkdGhpcy0+eG1sLT54cGF0aCgnL3JzcC9waG90b3MvcGhvdG8vQGlkJykg
YXMgJHBob3RvX2lkKSB7CgkJCQkJJHBob3RvID0gYXJyYXkoJ2lkJyA9PiAkcGhvdG9faWQp
OwoJCQkJCSRwaG90b1sndGl0bGUnXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRo
KCIvcnNwL3Bob3Rvcy9waG90b1tAaWQ9Ii4kcGhvdG9faWQuIl0vQHRpdGxlIikpOwoJCQkJ
CSRwaG90b1snc2VjcmV0J10gPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0aCgiL3Jz
cC9waG90b3MvcGhvdG9bQGlkPSIuJHBob3RvX2lkLiJdL0BzZWNyZXQiKSk7CgkJCQkJJHBo
b3RvWydvcmlnaW5hbF9zZWNyZXQnXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRo
KCIvcnNwL3Bob3Rvcy9waG90b1tAaWQ9Ii4kcGhvdG9faWQuIl0vQG9yaWdpbmFsc2VjcmV0
IikpOwoJCQkJCSRwaG90b1snb3JpZ2luYWxfZm9ybWF0J10gPSBhcnJheV9zaGlmdCgkdGhp
cy0+eG1sLT54cGF0aCgiL3JzcC9waG90b3MvcGhvdG9bQGlkPSIuJHBob3RvX2lkLiJdL0Bv
cmlnaW5hbGZvcm1hdCIpKTsKCQkJCQkkcGhvdG9bJ3NlcnZlciddID0gYXJyYXlfc2hpZnQo
JHRoaXMtPnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zL3Bob3RvW0BpZD0iLiRwaG90b19pZC4i
XS9Ac2VydmVyIikpOwoJCQkJCSRwaG90b1snZmFybSddID0gYXJyYXlfc2hpZnQoJHRoaXMt
PnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zL3Bob3RvW0BpZD0iLiRwaG90b19pZC4iXS9AZmFy
bSIpKTsKCQkJCQlhcnJheV9wdXNoKCR0aGlzLT5waG90b3MsICRwaG90byk7CgkJCQl9CgkJ
CQkkdGhpcy0+bnVtYmVyX29mX3Bob3RvcyA9IChzdHJpbmcpIGFycmF5X3NoaWZ0KCR0aGlz
LT54bWwtPnhwYXRoKCcvcnNwL3Bob3Rvcy9AdG90YWwnKSk7CgkJCQlpZiAoaXNzZXQoJHRo
aXMtPnBhcmFtc1sncmFuZG9tJ10pKSAkdGhpcy0+cmFuZG9taXplKCR0aGlzLT5wYXJhbXNb
J3JhbmRvbSddKTsKCQkJfQoJCX0KCQlpZiAoaXNzZXQoJHRoaXMtPmxhdGVzdCkpIHsKCQkJ
JHRoaXMtPnRpdGxlID0gJEdMT0JBTFNbJ3RleHQnXVsnbGF0ZXN0J107CgkJCSRtZXRob2Qg
PSAnZmxpY2tyLnBob3Rvcy5zZWFyY2gnIC4gJHRoaXMtPnVzZXJkYXRhOwoJCQlpZiAoJHRo
aXMtPnRodW1ic19wZXJfcGFnZSA9PSAwIG9yICR0aGlzLT5sYXRlc3QgPD0gJHRoaXMtPnRo
dW1ic19wZXJfcGFnZSkgJG1ldGhvZCAuPSAnJnBlcl9wYWdlPScgLiAkdGhpcy0+bGF0ZXN0
OwoJCQllbHNlIHsKCQkJCSRtZXRob2QgLj0gJyZwZXJfcGFnZT0nIC4gJHRoaXMtPnRodW1i
c19wZXJfcGFnZTsKCQkJfQoJCQkkbWV0aG9kIC49ICImZXh0cmFzPW9yaWdpbmFsX2Zvcm1h
dCI7CgkJCSR0aGlzLT54bWwgPSBuZXcgRmxpY2tyKCRtZXRob2QpOwoJCQlpZigkdGhpcy0+
eG1sLT5pc1ZhbGlkKCkpIHsKCQkJCWZvcmVhY2goJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3Av
cGhvdG9zL3Bob3RvL0BpZCcpIGFzICRwaG90b19pZCkgewoJCQkJCSRwaG90byA9IGFycmF5
KCdpZCcgPT4gJHBob3RvX2lkKTsKCQkJCQkkcGhvdG9bJ3RpdGxlJ10gPSBhcnJheV9zaGlm
dCgkdGhpcy0+eG1sLT54cGF0aCgiL3JzcC9waG90b3MvcGhvdG9bQGlkPSIuJHBob3RvX2lk
LiJdL0B0aXRsZSIpKTsKCQkJCQkkcGhvdG9bJ3NlY3JldCddID0gYXJyYXlfc2hpZnQoJHRo
aXMtPnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zL3Bob3RvW0BpZD0iLiRwaG90b19pZC4iXS9A
c2VjcmV0IikpOwoJCQkJCSRwaG90b1snb3JpZ2luYWxfc2VjcmV0J10gPSBhcnJheV9zaGlm
dCgkdGhpcy0+eG1sLT54cGF0aCgiL3JzcC9waG90b3MvcGhvdG9bQGlkPSIuJHBob3RvX2lk
LiJdL0BvcmlnaW5hbHNlY3JldCIpKTsKCQkJCQkkcGhvdG9bJ29yaWdpbmFsX2Zvcm1hdCdd
ID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgoIi9yc3AvcGhvdG9zL3Bob3RvW0Bp
ZD0iLiRwaG90b19pZC4iXS9Ab3JpZ2luYWxmb3JtYXQiKSk7CgkJCQkJJHBob3RvWydzZXJ2
ZXInXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCIvcnNwL3Bob3Rvcy9waG90
b1tAaWQ9Ii4kcGhvdG9faWQuIl0vQHNlcnZlciIpKTsKCQkJCQkkcGhvdG9bJ2Zhcm0nXSA9
IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCIvcnNwL3Bob3Rvcy9waG90b1tAaWQ9
Ii4kcGhvdG9faWQuIl0vQGZhcm0iKSk7CgkJCQkJYXJyYXlfcHVzaCgkdGhpcy0+cGhvdG9z
LCAkcGhvdG8pOwoJCQkJfQoJCQkJJHRoaXMtPm51bWJlcl9vZl9waG90b3MgPSAoc3RyaW5n
KSAkdGhpcy0+bGF0ZXN0OwoJCQkJaWYgKGlzc2V0KCR0aGlzLT5wYXJhbXNbJ3JhbmRvbSdd
KSkgJHRoaXMtPnJhbmRvbWl6ZSgkdGhpcy0+cGFyYW1zWydyYW5kb20nXSk7CgkJCX0KCQl9
CgkJaWYgKGlzc2V0KCR0aGlzLT5zZXQpKSB7CgkJCSRtZXRob2QgPSAnZmxpY2tyLnBob3Rv
c2V0cy5nZXRQaG90b3MnIC4gJHRoaXMtPnVzZXJkYXRhIC4gJyZwaG90b3NldF9pZD0nIC4g
JHRoaXMtPnNldCAuICImZXh0cmFzPW9yaWdpbmFsX2Zvcm1hdCI7CgkJCSR0aGlzLT54bWwg
PSBuZXcgRmxpY2tyKCRtZXRob2QpOwoJCQlpZigkdGhpcy0+eG1sLT5pc1ZhbGlkKCkpIHsK
CQkJCWZvcmVhY2goJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3AvcGhvdG9zZXQvcGhvdG8vQGlk
JykgYXMgJHBob3RvX2lkKSB7CgkJCQkJJHBob3RvID0gYXJyYXkoJ2lkJyA9PiAkcGhvdG9f
aWQpOwoJCQkJCSRwaG90b1sndGl0bGUnXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhw
YXRoKCIvcnNwL3Bob3Rvc2V0L3Bob3RvW0BpZD0iLiRwaG90b19pZC4iXS9AdGl0bGUiKSk7
CgkJCQkJJHBob3RvWydzZWNyZXQnXSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRo
KCIvcnNwL3Bob3Rvc2V0L3Bob3RvW0BpZD0iLiRwaG90b19pZC4iXS9Ac2VjcmV0IikpOwoJ
CQkJCSRwaG90b1snb3JpZ2luYWxfc2VjcmV0J10gPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1s
LT54cGF0aCgiL3JzcC9waG90b3NldC9waG90b1tAaWQ9Ii4kcGhvdG9faWQuIl0vQG9yaWdp
bmFsc2VjcmV0IikpOwoJCQkJCSRwaG90b1snb3JpZ2luYWxfZm9ybWF0J10gPSBhcnJheV9z
aGlmdCgkdGhpcy0+eG1sLT54cGF0aCgiL3JzcC9waG90b3NldC9waG90b1tAaWQ9Ii4kcGhv
dG9faWQuIl0vQG9yaWdpbmFsZm9ybWF0IikpOwoJCQkJCSRwaG90b1snc2VydmVyJ10gPSBh
cnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0aCgiL3JzcC9waG90b3NldC9waG90b1tAaWQ9
Ii4kcGhvdG9faWQuIl0vQHNlcnZlciIpKTsKCQkJCQkkcGhvdG9bJ2Zhcm0nXSA9IGFycmF5
X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCIvcnNwL3Bob3Rvc2V0L3Bob3RvW0BpZD0iLiRw
aG90b19pZC4iXS9AZmFybSIpKTsKCQkJCQlhcnJheV9wdXNoKCR0aGlzLT5waG90b3MsICRw
aG90byk7CgkJCQl9CgkJCQkkdGhpcy0+bnVtYmVyX29mX3Bob3RvcyA9IChzdHJpbmcpIHNp
emVvZigkdGhpcy0+cGhvdG9zKTsKCQkJCWlmIChpc3NldCgkdGhpcy0+cGFyYW1zWydyYW5k
b20nXSkpICR0aGlzLT5yYW5kb21pemUoJHRoaXMtPnBhcmFtc1sncmFuZG9tJ10pOwoJCQl9
CgkJfQoJfQoKCWZ1bmN0aW9uIHJhbmRvbWl6ZSgkcmFuZHNpemUpIHsKCQlpZiAoJHJhbmRz
aXplIDwgJHRoaXMtPm51bWJlcl9vZl9waG90b3MpIHsKCQkJc2h1ZmZsZSgkdGhpcy0+cGhv
dG9zKTsKCQkJJHRoaXMtPnBob3RvcyA9IGFycmF5X3NsaWNlKCR0aGlzLT5waG90b3MsIDAs
ICRyYW5kc2l6ZSk7CgkJCSR0aGlzLT5udW1iZXJfb2ZfcGhvdG9zID0gJHJhbmRzaXplOwoJ
CX0KCX0KCglmdW5jdGlvbiBnZXRJbmZvKCkgewoJCSRtZXRob2QgPSAnZmxpY2tyLnBob3Rv
c2V0cy5nZXRJbmZvJyAuICR0aGlzLT51c2VyZGF0YSAuICcmcGhvdG9zZXRfaWQ9JyAuICR0
aGlzLT5zZXQ7CgkJJHRoaXMtPnhtbCA9IG5ldyBGbGlja3IoJG1ldGhvZCk7CgkJaWYoJHRo
aXMtPnhtbC0+aXNWYWxpZCgpKSB7CgkJCSR0aGlzLT5pZCA9IGFycmF5X3NoaWZ0KCR0aGlz
LT54bWwtPnhwYXRoKCcvcnNwL3Bob3Rvc2V0L0BpZCcpKTsKCQkJJHRoaXMtPnByaW1hcnkg
PSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0aCgnL3JzcC9waG90b3NldC9AcHJpbWFy
eScpKTsKCQkJJHRoaXMtPnNlY3JldCA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRo
KCcvcnNwL3Bob3Rvc2V0L0BzZWNyZXQnKSk7CgkJCSR0aGlzLT50aXRsZSA9IGFycmF5X3No
aWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcvcnNwL3Bob3Rvc2V0L3RpdGxlL3RleHQoKScpKTsK
CQkJJHRoaXMtPmRlc2NyaXB0aW9uID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgo
Jy9yc3AvcGhvdG9zZXQvZGVzY3JpcHRpb24vdGV4dCgpJykpOwoJCQlpZiAoZW1wdHkoJHRo
aXMtPmRlc2NyaXB0aW9uKSkgJHRoaXMtPmRlc2NyaXB0aW9uID0gJyZuYnNwOyc7CgkJfQoJ
fQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfdGl0bGUoKSB7CgkJaWYgKGlzc2V0KCR0aGlzLT50
aXRsZSkgPT0gZmFsc2UpICR0aGlzLT5nZXRJbmZvKCk7CgkJcmV0dXJuICR0aGlzLT50aXRs
ZTsKCX0KCglmdW5jdGlvbiB0aHVtYm5haWxzX2Rlc2NyaXB0aW9uKCkgewoJCWlmICgoaXNz
ZXQoJHRoaXMtPmRlc2NyaXB0aW9uKSA9PSBmYWxzZSkgYW5kIGlzc2V0KCR0aGlzLT5zZXQp
KSB7CgkJCSR0aGlzLT5nZXRJbmZvKCk7CgkJfQoJCWlmICgkdGhpcy0+ZGVzY3JpcHRpb24g
IT0gJyZuYnNwOycgYW5kICFlbXB0eSgkdGhpcy0+ZGVzY3JpcHRpb24pKSByZXR1cm4gJHRo
aXMtPmRlc2NyaXB0aW9uOwoJCXJldHVybiAnJzsKCX0KCglmdW5jdGlvbiB0aHVtYm5haWxz
X2lmX2Rlc2NyaXB0aW9uICgkdGhpbmcpIHsKCQlpZiAoKGlzc2V0KCR0aGlzLT5kZXNjcmlw
dGlvbikgPT0gZmFsc2UpIGFuZCBpc3NldCgkdGhpcy0+c2V0KSkgewoJCQkkdGhpcy0+Z2V0
SW5mbygpOwoJCX0KCQlpZiAoJHRoaXMtPmRlc2NyaXB0aW9uICE9ICcmbmJzcDsnIGFuZCAh
ZW1wdHkoJHRoaXMtPmRlc2NyaXB0aW9uKSkgJHJlc3VsdCA9IHBhcnNlKCR0aGluZyk7CgkJ
cmV0dXJuICRyZXN1bHQ7Cgl9CgoJZnVuY3Rpb24gdGh1bWJuYWlsc19zbGlkZXNob3coJHRo
aW5nKSB7CgkJaWYoaXNzZXQoJHRoaXMtPnRhZ3MpKSB7CgkJCSRodG1sID0gJzxhIGhyZWY9
Imh0dHA6Ly93d3cuZmxpY2tyLmNvbS9zbGlkZVNob3cvaW5kZXguZ25lP25zaWQ9Jy51cmxl
bmNvZGUoJHRoaXMtPm5zaWQpLicmYW1wO3VzZXJfaWQ9Jy51cmxlbmNvZGUoJHRoaXMtPm5z
aWQpOwoJCQlpZihpc3NldCgkdGhpcy0+dGFnX2FuZCkpIHsKCQkJCSRodG1sIC49ICcmYW1w
O3RhZ19tb2RlPWFsbCZhbXA7dGFncz0nLiB1cmxlbmNvZGUoJHRoaXMtPnRhZ3MpOwoJCQl9
CgkJCWVsc2UgewoJCQkJJGh0bWwgLj0gJyZhbXA7dGFnX21vZGU9YW55JmFtcDt0YWdzPScg
LiB1cmxlbmNvZGUoJHRoaXMtPnRhZ3MpOwoJCQl9CgkJCSRodG1sIC49ICciICBvbmNsaWNr
PSJ3aW5kb3cub3Blbih0aGlzLmhyZWYsIFwnc2xpZGVTaG93V2luXCcsIFwnd2lkdGg9NTAw
LGhlaWdodD01MDAsdG9wPTE1MCxsZWZ0PTcwLHNjcm9sbGJhcnM9bm8sIHN0YXR1cz1ubywg
cmVzaXphYmxlPW5vXCcpOyAnOwoJCQkkaHRtbCAuPSAncmV0dXJuIGZhbHNlOyI+JzsKCQl9
CgkJaWYoaXNzZXQoJHRoaXMtPnNldCkpIHsKCQkJJGh0bWwgPSAnPGEgaHJlZj0iaHR0cDov
L3d3dy5mbGlja3IuY29tL3NsaWRlU2hvdy9pbmRleC5nbmU/bnNpZD0nLnVybGVuY29kZSgk
dGhpcy0+bnNpZCkuJyZhbXA7c2V0X2lkPScuJHRoaXMtPnNldDsKCQkJJGh0bWwgLj0gJyIg
IG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdzbGlkZVNob3dXaW5cJywgXCd3
aWR0aD01MDAsaGVpZ2h0PTUwMCx0b3A9MTUwLGxlZnQ9NzAsc2Nyb2xsYmFycz1ubywgc3Rh
dHVzPW5vLCByZXNpemFibGU9bm9cJyk7ICc7CgkJCSRodG1sIC49ICdyZXR1cm4gZmFsc2U7
Ij4nOwoJCX0KCQlpZihpc3NldCgkdGhpcy0+bGF0ZXN0KSkgewoJCQkkaHRtbCA9ICc8YSBo
cmVmPSJodHRwOi8vd3d3LmZsaWNrci5jb20vc2xpZGVTaG93L2luZGV4LmduZT9uc2lkPScu
dXJsZW5jb2RlKCR0aGlzLT5uc2lkKS4nJmFtcDt1c2VyX2lkPScudXJsZW5jb2RlKCR0aGlz
LT5uc2lkKS4nJmFtcDttYXhUaHVtYnM9Jy4kdGhpcy0+bGF0ZXN0OwoJCQkkaHRtbCAuPSAn
IiAgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3NsaWRlU2hvd1dpblwnLCBc
J3dpZHRoPTUwMCxoZWlnaHQ9NTAwLHRvcD0xNTAsbGVmdD03MCxzY3JvbGxiYXJzPW5vLCBz
dGF0dXM9bm8sIHJlc2l6YWJsZT1ub1wnKTsgJzsKCQkJJGh0bWwgLj0gJ3JldHVybiBmYWxz
ZTsiPic7CgkJfQoJCSRodG1sIC49ICR0aGluZy4nPC9hPic7CgkJcmV0dXJuICRodG1sOwoJ
fQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfaW1nKCkgewoJCSRpbWdfdXJsID0gJHRoaXMtPmdl
dFBob3RvVXJsKCR0aGlzLT5waG90bywgJHRoaXMtPnRodW1ibmFpbF9zaXplKTsKCQkkaW1n
X3VybCA9ICc8aW1nIHNyYz0iJyAuICRpbWdfdXJsIC4gJyIgYWx0PSInIC4gJHRoaXMtPnBo
b3RvWyd0aXRsZSddIC4gJyIgLz4nOwoJCXJldHVybiAkaW1nX3VybDsKCX0KCglmdW5jdGlv
biB0aHVtYm5haWxzX2ltZ190aXRsZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnBob3RvWyd0aXRs
ZSddOwoJfQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfbGluaygkaW1nX3VybCkgewoJCWlmKCR0
aGlzLT5vcGVuID09ICdzZWxmJykgewoJCQlpZiAoaXNzZXQoJHRoaXMtPnNldCkpIHsKCQkJ
CSRwYXJhbWV0ZXJzWydzZXQnXSA9ICR0aGlzLT5zZXQ7CgkJCX0KCQkJJHBhcmFtZXRlcnNb
J2ltZyddID0gJHRoaXMtPnBob3RvWydpZCddOwoJCQkkaHRtbCA9IHRhZygkaW1nX3VybCwn
YScsJyBocmVmPSInLiAkdGhpcy0+bWFrZVJlcXVlc3QoJHBhcmFtZXRlcnMpIC4nIicpLiJc
biI7CgkJfQoJCWlmKCR0aGlzLT5vcGVuID09ICdmbGlja3InKSB7CgkJCSRodG1sID0gJzxh
IGhyZWY9Imh0dHA6Ly93d3cuZmxpY2tyLmNvbS9waG90b3MvJyAuIHVybGVuY29kZSgkdGhp
cy0+bnNpZCkgLiAnLycgLiAkdGhpcy0+cGhvdG9bJ2lkJ10gLiAnLyI+JyAuICJcbiI7CgkJ
CSRodG1sIC49ICRpbWdfdXJsOwoJCQkkaHRtbCAuPSAnPC9hPicgLiAiXG4iOwoJCX0KCQlp
ZigkdGhpcy0+b3BlbiA9PSAnd2luZG93JykgewoJCQkkaHRtbCA9ICc8YSBocmVmPSInOwoJ
CQkkaHRtbCAuPSAkdGhpcy0+Z2V0UGhvdG9VcmwoJHRoaXMtPnBob3RvLCAkdGhpcy0+aW1n
X3NpemUpOwoJCQkkaHRtbCAuPSAnIiBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYs
IFwncG9wdXB3aW5kb3dcJywgXCdyZXNpemFibGVcJyk7IHJldHVybiBmYWxzZTsiPic7CgkJ
CSRodG1sIC49ICRpbWdfdXJsOwoJCQkkaHRtbCAuPSAnPC9hPic7CgkJfQoJCWlmKCR0aGlz
LT5vcGVuID09ICdsaWdodGJveCcpIHsKCQkJJGh0bWwgPSAnPGEgaHJlZj0iJzsKCQkJJGh0
bWwgLj0gJHRoaXMtPmdldFBob3RvVXJsKCR0aGlzLT5waG90bywgJHRoaXMtPmltZ19zaXpl
KTsKCQkJJHNldCA9ICR0aGlzLT50aHVtYm5haWxzX3RpdGxlKCk7CgkJCSRzZXQgPSB0cmlt
KCRzZXQpOwoJCQkkaHRtbCAuPSAnIiByZWw9ImxpZ2h0Ym94WycuJHNldC4nXSI+JzsKCQkJ
JGh0bWwgLj0gJGltZ191cmw7CgkJCSRodG1sIC49ICc8L2E+JzsKCQl9CgkJcmV0dXJuICRo
dG1sOwoJfQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfbGlzdCgkcGFyYW1zKSB7CgkJaWYoISR0
aGlzLT54bWwtPmlzVmFsaWQoKSkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCShpc3NldCgk
cGFyYW1zWydsaXN0bW9kZSddKSk/CgkJJHRoaXMtPmxpc3Rtb2RlID0gJHBhcmFtc1snbGlz
dG1vZGUnXToKCQkkdGhpcy0+bGlzdG1vZGUgPSAnaW1nJzsKCQkoaXNzZXQoJHBhcmFtc1sn
d3JhcHRhZyddKSA9PSB0cnVlKT8gJHdyYXB0YWcgPSAkcGFyYW1zWyd3cmFwdGFnJ10gOiAk
d3JhcHRhZyA9ICcnOwoJCShpc3NldCgkcGFyYW1zWydicmVhayddKSA9PSB0cnVlKT8gJGJy
ZWFrID0gJHBhcmFtc1snYnJlYWsnXSA6ICRicmVhayA9ICcnOwoJCWlmICgkdGhpcy0+dGh1
bWJzX3Blcl9wYWdlID09IDApIHsKCQkJJHRoaXMtPnN0YXJ0ID0gMTsKCQkJJHRoaXMtPmVu
ZCA9IHNpemVvZigkdGhpcy0+cGhvdG9zKTsKCQl9CgkJZWxzZSB7CgkJCSR0aGlzLT5zdGFy
dCA9IChpbnQpICgkdGhpcy0+dGh1bWJzX3Blcl9wYWdlICogKCR0aGlzLT5wYWdlIC0gMSkp
ICsgMTsKCQkJJHRoaXMtPmVuZCA9IG1pbigkdGhpcy0+dGh1bWJzX3Blcl9wYWdlICogJHRo
aXMtPnBhZ2UsIHNpemVvZigkdGhpcy0+cGhvdG9zKSk7CgkJfQoJCSRodG1sID0gJyc7CgkJ
Zm9yICgkdGhpcy0+aSA9ICR0aGlzLT5zdGFydCAtIDE7ICR0aGlzLT5pIDw9ICR0aGlzLT5l
bmQgLSAxOyAkdGhpcy0+aSsrKSB7CgkJCSR0aGlzLT5waG90byA9ICR0aGlzLT5waG90b3Nb
JHRoaXMtPmldOwoJCQkoQCRfR0VUWydpbWcnXSA9PSAoaW50KSAkdGhpcy0+cGhvdG9bJ2lk
J10pPyAkcGFyYW0gPSAnIGNsYXNzPSJjdXJyZW50IicgOiAnJzsKCQkJKCR0aGlzLT5saXN0
bW9kZSA9PSAnaW1nJyk/ICR3aGF0ID0gJHRoaXMtPnRodW1ibmFpbHNfaW1nKCkgOiAkd2hh
dCA9ICR0aGlzLT50aHVtYm5haWxzX2ltZ190aXRsZSgpOwoJCQkoJHRoaXMtPmxpbmt0aHVt
YnMgPT0gMSk/ICR3aGF0ID0gJHRoaXMtPnRodW1ibmFpbHNfbGluaygkd2hhdCkgOiAnJzsK
CQkJaWYoJGJyZWFrICE9ICcnKSB7CgkJCQkoJGJyZWFrICE9ICdicicpPwoJCQkJJGh0bWwg
Lj0gdGFnKCR3aGF0LCAkYnJlYWssICRwYXJhbSkgLiAiXG4iOgoJCQkJJGh0bWwgLj0gJHdo
YXQgLic8YnIgLz4nIC4gIlxuIjsKCQkJfQoJCQllbHNlIHsKCQkJCSRodG1sIC49ICR3aGF0
IC4gIlxuIjsKCQkJfQoJCQl1bnNldCgkcGFyYW0pOwoJCX0KCQlyZXR1cm4gKCgkd3JhcHRh
ZyAhPSAnJykgPT0gdHJ1ZSk/IHRhZygkaHRtbCwgJHdyYXB0YWcpIDogJGh0bWw7Cgl9CgoJ
ZnVuY3Rpb24gdGh1bWJuYWlsc19udW1iZXJfb2ZfcGhvdG9zICgpIHsKCQlyZXR1cm4gJHRo
aXMtPm51bWJlcl9vZl9waG90b3M7Cgl9CgoJZnVuY3Rpb24gdGh1bWJuYWlsc19wZXJfcGFn
ZSAoKSB7CgkJcmV0dXJuICR0aGlzLT50aHVtYnNfcGVyX3BhZ2U7Cgl9CgoJZnVuY3Rpb24g
dGh1bWJuYWlsc19jdXJyZW50X3BhZ2UgKCkgewoJCXJldHVybiAkdGhpcy0+cGFnZTsKCX0K
CglmdW5jdGlvbiB0aHVtYm5haWxzX3RvdGFsX3BhZ2VzICgpIHsKCQlyZXR1cm4gJHRoaXMt
Pmxhc3RwYWdlOwoJfQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfcGFnZXNfZmlyc3QgKCR0aGlu
ZykgewoJCWlmIChpc3NldCgkdGhpcy0+c2V0KSkgJHJlc3VsdCA9IHRhZyhwYXJzZSgkdGhp
bmcpLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0KGFycmF5KCdzZXQnID0+
ICR0aGlzLT5pZCwgJ3BhZ2UnID0+IDEpKSAuJyInKTsKCQlpZiAoaXNzZXQoJHRoaXMtPnRh
Z3MpKSAkcmVzdWx0ID0gdGFnKHBhcnNlKCR0aGluZyksICdhJywgJyBocmVmPSInLiAkdGhp
cy0+bWFrZVJlcXVlc3QoYXJyYXkoJ3RhZ3MnID0+ICR0aGlzLT50YWdzLCAncGFnZScgPT4g
MSkpIC4nIicpOwoJCWlmIChpc3NldCgkdGhpcy0+bGF0ZXN0KSkgJHJlc3VsdCA9IHRhZyhw
YXJzZSgkdGhpbmcpLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0KGFycmF5
KCdwYWdlJyA9PiAxKSkgLiciJyk7CgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgoJZnVuY3Rpb24g
dGh1bWJuYWlsc19wYWdlc19sYXN0ICgkdGhpbmcpIHsKCQlpZiAoaXNzZXQoJHRoaXMtPnNl
dCkpICRyZXN1bHQgPSB0YWcocGFyc2UoJHRoaW5nKSwgJ2EnLCAnIGhyZWY9IicuICR0aGlz
LT5tYWtlUmVxdWVzdChhcnJheSgnc2V0JyA9PiAkdGhpcy0+aWQsICdwYWdlJyA9PiAkdGhp
cy0+bGFzdHBhZ2UpKSAuJyInKTsKCQlpZiAoaXNzZXQoJHRoaXMtPnRhZ3MpKSAkcmVzdWx0
ID0gdGFnKHBhcnNlKCR0aGluZyksICdhJywgJyBocmVmPSInLiAkdGhpcy0+bWFrZVJlcXVl
c3QoYXJyYXkoJ3RhZ3MnID0+ICR0aGlzLT50YWdzLCAncGFnZScgPT4gJHRoaXMtPmxhc3Rw
YWdlKSkgLiciJyk7CgkJaWYgKGlzc2V0KCR0aGlzLT5sYXRlc3QpKSAkcmVzdWx0ID0gdGFn
KHBhcnNlKCR0aGluZyksICdhJywgJyBocmVmPSInLiAkdGhpcy0+bWFrZVJlcXVlc3QoYXJy
YXkoJ3BhZ2UnID0+ICR0aGlzLT5sYXN0cGFnZSkpIC4nIicpOwoJCXJldHVybiAkcmVzdWx0
OwoJfQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfcGFnZXNfcHJldmlvdXMgKCR0aGluZykgewoJ
CWlmIChpc3NldCgkdGhpcy0+c2V0KSkgJHJlc3VsdCA9IHRhZyhwYXJzZSgkdGhpbmcpLCAn
YScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0KGFycmF5KCdzZXQnID0+ICR0aGlz
LT5pZCwgJ3BhZ2UnID0+ICR0aGlzLT5wcmV2aW91c19wYWdlKSkgLiciJyk7CgkJaWYgKGlz
c2V0KCR0aGlzLT50YWdzKSkgJHJlc3VsdCA9IHRhZyhwYXJzZSgkdGhpbmcpLCAnYScsICcg
aHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0KGFycmF5KCd0YWdzJyA9PiAkdGhpcy0+dGFn
cywgJ3BhZ2UnID0+ICR0aGlzLT5wcmV2aW91c19wYWdlKSkgLiciJyk7CgkJaWYgKGlzc2V0
KCR0aGlzLT5sYXRlc3QpKSAkcmVzdWx0ID0gdGFnKHBhcnNlKCR0aGluZyksICdhJywgJyBo
cmVmPSInLiAkdGhpcy0+bWFrZVJlcXVlc3QoYXJyYXkoJ3BhZ2UnID0+ICR0aGlzLT5wcmV2
aW91c19wYWdlKSkgLiciJyk7CgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgoJZnVuY3Rpb24gdGh1
bWJuYWlsc19wYWdlc19uZXh0ICgkdGhpbmcpIHsKCQlpZiAoaXNzZXQoJHRoaXMtPnNldCkp
ICRyZXN1bHQgPSB0YWcocGFyc2UoJHRoaW5nKSwgJ2EnLCAnIGhyZWY9IicuICR0aGlzLT5t
YWtlUmVxdWVzdChhcnJheSgnc2V0JyA9PiAkdGhpcy0+aWQsICdwYWdlJyA9PiAkdGhpcy0+
bmV4dF9wYWdlKSkgLiciJyk7CgkJaWYgKGlzc2V0KCR0aGlzLT50YWdzKSkgJHJlc3VsdCA9
IHRhZyhwYXJzZSgkdGhpbmcpLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0
KGFycmF5KCd0YWdzJyA9PiAkdGhpcy0+dGFncywgJ3BhZ2UnID0+ICR0aGlzLT5uZXh0X3Bh
Z2UpKSAuJyInKTsKCQlpZiAoaXNzZXQoJHRoaXMtPmxhdGVzdCkpICRyZXN1bHQgPSB0YWco
cGFyc2UoJHRoaW5nKSwgJ2EnLCAnIGhyZWY9IicuICR0aGlzLT5tYWtlUmVxdWVzdChhcnJh
eSgncGFnZScgPT4gJHRoaXMtPm5leHRfcGFnZSkpIC4nIicpOwoJCXJldHVybiAkcmVzdWx0
OwoJfQoKCWZ1bmN0aW9uIHRodW1ibmFpbHNfcGFnZXNfc3RhcnR0aHVtYiAoKSB7CgkJcmV0
dXJuICR0aGlzLT5zdGFydDsKCX0KCglmdW5jdGlvbiB0aHVtYm5haWxzX3BhZ2VzX2VuZHRo
dW1iICgpIHsKCQlyZXR1cm4gJHRoaXMtPmVuZDsKCX0KCglmdW5jdGlvbiB0aHVtYm5haWxz
X3BhZ2VzX2xpc3QgKCRwYXJhbXMpIHsKCQkkcGFnZXNfYXJyYXkgPSByYW5nZSgxLCAkdGhp
cy0+bGFzdHBhZ2UpOwoJCWZvciAoJGkgPSAwOyAkaSA8PSAkdGhpcy0+bGFzdHBhZ2UgLSAx
OyAkaSsrKSB7CgkJCWlmIChpc3NldCgkdGhpcy0+c2V0KSkgJHBhZ2VzX2FycmF5WyRpXSA9
IHRhZygkcGFnZXNfYXJyYXlbJGldLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1
ZXN0KGFycmF5KCdzZXQnID0+ICR0aGlzLT5pZCwgJ3BhZ2UnID0+ICRwYWdlc19hcnJheVsk
aV0pKSAuJyInKTsKCQkJaWYgKGlzc2V0KCR0aGlzLT50YWdzKSkgJHBhZ2VzX2FycmF5WyRp
XSA9IHRhZygkcGFnZXNfYXJyYXlbJGldLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VS
ZXF1ZXN0KGFycmF5KCd0YWdzJyA9PiAkdGhpcy0+dGFncywgJ3BhZ2UnID0+ICRwYWdlc19h
cnJheVskaV0pKSAuJyInKTsKCQkJaWYgKGlzc2V0KCR0aGlzLT5sYXRlc3QpKSAkcGFnZXNf
YXJyYXlbJGldID0gdGFnKCRwYWdlc19hcnJheVskaV0sICdhJywgJyBocmVmPSInLiAkdGhp
cy0+bWFrZVJlcXVlc3QoYXJyYXkoJ3BhZ2UnID0+ICRwYWdlc19hcnJheVskaV0pKSAuJyIn
KTsKCQl9CgkJcmV0dXJuIGRvV3JhcCgkcGFnZXNfYXJyYXksIEAkcGFyYW1zWyd3cmFwdGFn
J10sIEAkcGFyYW1zWydicmVhayddLCBAJHBhcmFtc1snY2xhc3MnXSwgQCRwYXJhbXNbJ2Jy
ZWFrY2xhc3MnXSwgQCRwYXJhbXNbJ2F0dHMnXSk7Cgl9CgoJZnVuY3Rpb24gdGh1bWJuYWls
c19pZl9tdWx0aXBsZV9wYWdlcyAoJHRoaW5nKSB7CgkJKCR0aGlzLT50aHVtYnNfcGVyX3Bh
Z2UgIT0gMCk/ICRyZXN1bHQgPSBwYXJzZSgkdGhpbmcpIDogJyc7CgkJcmV0dXJuICRyZXN1
bHQ7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlpZighJHRoaXMtPnhtbC0+aXNW
YWxpZCgpKSB7CgkJCXJldHVybiAkR0xPQkFMU1sndGV4dCddWydlcnJvcl9tZXNzYWdlJ107
CgkJfQoJCSRyZXN1bHQgPSBwYXJzZSgkdGhpcy0+Zm9ybSk7CgkJcmV0dXJuICRyZXN1bHQ7
Cgl9Cn0KCgpjbGFzcyBQaWN0dXJlIGV4dGVuZHMgVmRoX0ZsaWNrciB7Cgl2YXIgJHhtbCwg
JGlkLCAkc2VjcmV0LCAkc2VydmVyLCAkZGF0ZV91cGxvYWRlZCwgJHRpdGxlLCAkZGVzY3Jp
cHRpb24sICRub3RlcywgJHNldCwgJGxpbmssICRpbWcsICRjb250ZXh0OwoJdmFyICRpbWdf
c2l6ZSwgJHNob3dfaW1nX25hdiwgJHNob3dfaW1nX3RpdGxlLCAkbWV0aG9kLCAkc2V0X3Rp
dGxlLCAkY29tbWVudHMsICRjb250ZXh0X21vZGU7Cgl2YXIgJGRhdGVfcG9zdGVkLCAkZGF0
ZV90YWtlbjsKCXZhciAkcHJldmlvdXMgPSBhcnJheSgpLCAkbmV4dCA9IGFycmF5KCksICR0
YWdzID0gYXJyYXkoKSwgJHJhd190YWdzID0gYXJyYXkoKSwgJHRhZ19pZHMgPSBhcnJheSgp
OwoKCWZ1bmN0aW9uIFBpY3R1cmUoJHBhcmFtcykgewoJCSR0aGlzLT5WZGhfRmxpY2tyKCRw
YXJhbXMpOwoJCShpc3NldCgkcGFyYW1zWydpbWdfc2l6ZSddKSk/CgkJJHRoaXMtPmltZ19z
aXplID0gJHBhcmFtc1snaW1nX3NpemUnXToKCQkkdGhpcy0+aW1nX3NpemUgPSAnbic7CgkJ
KGlzc2V0KCRwYXJhbXNbJ29yaWdpbmFsX3NpemUnXSkpPwoJCSR0aGlzLT5vcmlnaW5hbF9z
aXplID0gJHBhcmFtc1snb3JpZ2luYWxfc2l6ZSddOgoJCSR0aGlzLT5vcmlnaW5hbF9zaXpl
ID0gJ28nOwoJCShpc3NldCgkcGFyYW1zWydzZXQnXSkpPwoJCSR0aGlzLT5zZXQgPSAkcGFy
YW1zWydzZXQnXToKCQkkdGhpcy0+c2V0ID0gJF9HRVRbJ3NldCddOwoJCShpc3NldCgkcGFy
YW1zWydpbWcnXSkpPwoJCSR0aGlzLT5pbWcgPSAkcGFyYW1zWydpbWcnXToKCQkkdGhpcy0+
aW1nID0gJF9HRVRbJ2ltZyddOwoJCSRtZXRob2QgPSAnZmxpY2tyLnBob3Rvcy5nZXRJbmZv
JyAuICR0aGlzLT51c2VyZGF0YSAuICcmcGhvdG9faWQ9JyAuICR0aGlzLT5pbWc7CgkJJHRo
aXMtPnhtbCA9IG5ldyBGbGlja3IoJG1ldGhvZCk7CgkJaWYoJHRoaXMtPnhtbC0+aXNWYWxp
ZCgpKSB7CgkJCSR0aGlzLT5pZCA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcv
cnNwL3Bob3RvL0BpZCcpKTsKCQkJJHRoaXMtPnNlY3JldCA9IGFycmF5X3NoaWZ0KCR0aGlz
LT54bWwtPnhwYXRoKCcvcnNwL3Bob3RvL0BzZWNyZXQnKSk7CgkJCSR0aGlzLT5vcmlnaW5h
bF9zZWNyZXQgPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0aCgnL3JzcC9waG90by9A
b3JpZ2luYWxzZWNyZXQnKSk7CgkJCSR0aGlzLT5vcmlnaW5hbF9mb3JtYXQgPSBhcnJheV9z
aGlmdCgkdGhpcy0+eG1sLT54cGF0aCgnL3JzcC9waG90by9Ab3JpZ2luYWxmb3JtYXQnKSk7
CgkJCSR0aGlzLT5mYXJtID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3Av
cGhvdG8vQGZhcm0nKSk7CgkJCSR0aGlzLT5zZXJ2ZXIgPSBhcnJheV9zaGlmdCgkdGhpcy0+
eG1sLT54cGF0aCgnL3JzcC9waG90by9Ac2VydmVyJykpOwoJCQkkdGhpcy0+ZGF0ZV9wb3N0
ZWQgPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0aCgnL3JzcC9waG90by9kYXRlcy9A
cG9zdGVkJykpOwoJCQkkdGhpcy0+ZGF0ZV90YWtlbiA9IGFycmF5X3NoaWZ0KCR0aGlzLT54
bWwtPnhwYXRoKCcvcnNwL3Bob3RvL2RhdGVzL0B0YWtlbicpKTsKCQkJJHRoaXMtPnRpdGxl
ID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3AvcGhvdG8vdGl0bGUvdGV4
dCgpJykpOwoJCQkkdGhpcy0+ZGVzY3JpcHRpb24gPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1s
LT54cGF0aCgnL3JzcC9waG90by9kZXNjcmlwdGlvbi90ZXh0KCknKSk7CgkJCSR0aGlzLT5j
b21tZW50cyA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcvcnNwL3Bob3RvL2Nv
bW1lbnRzL3RleHQoKScpKTsKCQkJJHRoaXMtPnJhd190YWdzID0gJHRoaXMtPnhtbC0+eHBh
dGgoJy9yc3AvcGhvdG8vdGFncy90YWcvQHJhdycpOwoJCQkkdGhpcy0+dGFncyA9ICR0aGlz
LT54bWwtPnhwYXRoKCcvcnNwL3Bob3RvL3RhZ3MvdGFnL3RleHQoKScpOwoJCQkkdGhpcy0+
bGluayA9IEAkcGFyYW1zWydsaW5rJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydpbWdf
Zm9ybSddKSkgewoJCQkkdGhpcy0+Zm9ybSA9IGZldGNoKCdGb3JtJywndHhwX2Zvcm0nLCJu
YW1lIiwkcGFyYW1zWydpbWdfZm9ybSddKTsKCQl9CgkJZWxzZSB7CgkJCSR0aGlzLT5mb3Jt
ID0gJwoJCQk8ZGl2IGNsYXNzPSJpbmRpdmlkdWFsIj48ZGl2IGNsYXNzPSJpbWFnZSI+CgkJ
CTxoMiBjbGFzcz0idGl0bGUiPjx0eHA6dmRoX2ZsaWNrcl9pbWdfdGl0bGUgLz48L2gyPgoJ
CQk8dHhwOnZkaF9mbGlja3JfaW1nX2xpbms+PHR4cDp2ZGhfZmxpY2tyX2ltZ19uYWtlZCAv
PjwvdHhwOnZkaF9mbGlja3JfaW1nX2xpbms+CgkJCTxkaXYgY2xhc3M9ImZsaWNrcnNldG5h
diI+CgkJCTx0eHA6dmRoX2ZsaWNrcl9pbWdfcHJldmlvdXMgbGFiZWw9InByZXZpb3VzJm5i
c3A7OiZuYnNwOyI+JmxhcnI7PC90eHA6dmRoX2ZsaWNrcl9pbWdfcHJldmlvdXM+CgkJCTxo
MiBjbGFzcz0ic2V0bmFtZSI+PHR4cDp2ZGhfZmxpY2tyX2ltZ19zZXRfbGluaz48dHhwOnZk
aF9mbGlja3JfaW1nX3NldF90aXRsZSAvPjwvdHhwOnZkaF9mbGlja3JfaW1nX3NldF9saW5r
PjwvaDI+CgkJCTx0eHA6dmRoX2ZsaWNrcl9pbWdfbmV4dCBsYWJlbD0ibmV4dCZuYnNwOzom
bmJzcDsiPiZyYXJyOzwvdHhwOnZkaF9mbGlja3JfaW1nX25leHQ+CgkJCTwvZGl2PgoJCQk8
ZGl2IGNsYXNzPSJmbGlja3JfdGFnX2xpc3QiPgoJCQk8dHhwOnZkaF9mbGlja3JfaW1nX3Rh
Z3Mgc2VwYXJhdG9yPSIgfCAiIC8+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmbGlja3Jf
Y29tbWVudHMiPgoJCQk8dHhwOnZkaF9mbGlja3JfaW1nX251bWJlcl9vZl9jb21tZW50cyAv
PiBDb21tZW50cy4KCQkJPHR4cDp2ZGhfZmxpY2tyX2ltZ19jb21tZW50c19pbnZpdGU+U2hv
dyBhbmQgcG9zdCBjb21tZW50cyE8L3R4cDp2ZGhfZmxpY2tyX2ltZ19jb21tZW50c19pbnZp
dGU+PGJyIC8+CgkJCVBvc3RlZCA8dHhwOnZkaF9mbGlja3JfaW1nX2RhdGVfcG9zdGVkIC8+
LjxiciAvPgoJCQlUYWtlbiA8dHhwOnZkaF9mbGlja3JfaW1nX2RhdGVfdGFrZW4gLz4uPGJy
IC8+CgkJCTwvZGl2PgoJCQk8dHhwOnZkaF9mbGlja3JfaW1nX2lmX2Rlc2NyaXB0aW9uPgoJ
CQk8cCBjbGFzcz0iaW1nX2Rlc2NyaXB0aW9uIj4KCQkJPHR4cDp2ZGhfZmxpY2tyX2ltZ19k
ZXNjcmlwdGlvbiAvPgoJCQk8L3A+CgkJCTwvdHhwOnZkaF9mbGlja3JfaW1nX2lmX2Rlc2Ny
aXB0aW9uPgoJCQk8L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyI+PC9kaXY+
JzsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0Q29udGV4dCgpIHsKCQlpZiAoaXNzZXQoJHRoaXMt
PnNldCkpIHsKCQkJJG1ldGhvZCA9ICdmbGlja3IucGhvdG9zZXRzLmdldENvbnRleHQnIC4g
JHRoaXMtPnVzZXJkYXRhIC4gJyZwaG90b19pZD0nIC4gJHRoaXMtPmltZyAuICcmcGhvdG9z
ZXRfaWQ9JyAuICR0aGlzLT5zZXQ7CgkJfQoJCWVsc2UgewoJCQkkbWV0aG9kID0gJ2ZsaWNr
ci5waG90b3MuZ2V0Q29udGV4dCcgLiAkdGhpcy0+dXNlcmRhdGEgLiAnJnBob3RvX2lkPScg
LiAkdGhpcy0+aW1nOwoJCX0KCQkkdGhpcy0+eG1sID0gbmV3IEZsaWNrcigkbWV0aG9kKTsK
CQkkdGhpcy0+cHJldmlvdXNbJ2lkJ10gPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54cGF0
aCgnL3JzcC9wcmV2cGhvdG8vQGlkJykpOwoJCSR0aGlzLT5wcmV2aW91c1sndGl0bGUnXSA9
IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcvcnNwL3ByZXZwaG90by9AdGl0bGUn
KSk7CgkJJHRoaXMtPnByZXZpb3VzWyd0aHVtYiddID0gYXJyYXlfc2hpZnQoJHRoaXMtPnht
bC0+eHBhdGgoJy9yc3AvcHJldnBob3RvL0B0aHVtYicpKTsKCQkkdGhpcy0+bmV4dFsnaWQn
XSA9IGFycmF5X3NoaWZ0KCR0aGlzLT54bWwtPnhwYXRoKCcvcnNwL25leHRwaG90by9AaWQn
KSk7CgkJJHRoaXMtPm5leHRbJ3RpdGxlJ10gPSBhcnJheV9zaGlmdCgkdGhpcy0+eG1sLT54
cGF0aCgnL3JzcC9uZXh0cGhvdG8vQHRpdGxlJykpOwoJCSR0aGlzLT5uZXh0Wyd0aHVtYidd
ID0gYXJyYXlfc2hpZnQoJHRoaXMtPnhtbC0+eHBhdGgoJy9yc3AvbmV4dHBob3RvL0B0aHVt
YicpKTsKCQkkdGhpcy0+Y29udGV4dCA9IHRydWU7Cgl9CgoJZnVuY3Rpb24gaW1nX25ha2Vk
KCkgewoJCSRwaG90byA9IGFycmF5KCJmYXJtIiA9PiAkdGhpcy0+ZmFybSwgInNlcnZlciIg
PT4gJHRoaXMtPnNlcnZlciwgImlkIiA9PiAkdGhpcy0+aWQsICJzZWNyZXQiID0+ICR0aGlz
LT5zZWNyZXQsICJvcmlnaW5hbF9zZWNyZXQiID0+ICR0aGlzLT5vcmlnaW5hbF9zZWNyZXQs
ICJvcmlnaW5hbF9mb3JtYXQiID0+ICR0aGlzLT5vcmlnaW5hbF9mb3JtYXQpOwoJCSRpbWdf
dXJsID0gJHRoaXMtPmdldFBob3RvVXJsKCRwaG90bywgJHRoaXMtPmltZ19zaXplKTsKCQkk
aW1nX3VybCA9ICc8aW1nIHNyYz0iJyAuICRpbWdfdXJsIC4gJyIgYWx0PSInIC4gJHRoaXMt
PnRpdGxlIC4gJyIgLz4nOwoJCXJldHVybiAkaW1nX3VybDsKCX0KCglmdW5jdGlvbiBpbWdf
bGluaygkaW1nX3VybCkgewoJCWlmIChpc3NldCgkdGhpcy0+bGluaykpewoJCQlzd2l0Y2go
JHRoaXMtPmxpbmspIHsKCQkJCWNhc2UgImZsaWNrciI6CgkJCQkkbGlua190YXJnZXQgPSAn
aHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy8nIC4gdXJsZW5jb2RlKCR0aGlzLT5uc2lk
KSAuICcvJyAuICR0aGlzLT5pZCAuICcvJzsKCQkJCWJyZWFrOwoJCQkJY2FzZSAib3JpZ2lu
YWxfc2l6ZSIgfHwgImxpZ2h0Ym94IjoKCQkJCSRwaG90byA9IGFycmF5KCJmYXJtIiA9PiAk
dGhpcy0+ZmFybSwgInNlcnZlciIgPT4gJHRoaXMtPnNlcnZlciwgImlkIiA9PiAkdGhpcy0+
aWQsICJzZWNyZXQiID0+ICR0aGlzLT5zZWNyZXQsICJvcmlnaW5hbF9zZWNyZXQiID0+ICR0
aGlzLT5vcmlnaW5hbF9zZWNyZXQsICJvcmlnaW5hbF9mb3JtYXQiID0+ICR0aGlzLT5vcmln
aW5hbF9mb3JtYXQpOwoJCQkJJGxpbmtfdGFyZ2V0ID0gJHRoaXMtPmdldFBob3RvVXJsKCRw
aG90bywgJHRoaXMtPm9yaWdpbmFsX3NpemUpOwoJCQkJYnJlYWs7CgkJCQljYXNlICJpbWdf
aW5mb3JtYXRpb24iOgoJCQkJJGxpbmtfdGFyZ2V0ID0gJ2h0dHA6Ly93d3cuZmxpY2tyLmNv
bS9waG90b19leGlmLmduZT9pZD0nIC4gJHRoaXMtPmlkOwoJCQkJYnJlYWs7CgkJCX0KCQkJ
JGxpbmtfYXR0cmlidXRlcyA9ICcgaHJlZj0iJyAuICRsaW5rX3RhcmdldCAuICciJzsKCQkJ
aWYgKCR0aGlzLT5saW5rID09ICJsaWdodGJveCIpIHsKCQkJCSRsaW5rX2F0dHJpYnV0ZXMg
Lj0gJyByZWw9ImxpZ2h0Ym94Iic7CgkJCX0KCQkJJGltZ191cmwgPSB0YWcoJGltZ191cmws
ICdhJywgJGxpbmtfYXR0cmlidXRlcyk7CgkJCSRpbWdfdXJsIC49ICJcbiI7CgkJfQoJCXJl
dHVybiAkaW1nX3VybDsKCX0KCglmdW5jdGlvbiBpbWdfcHJldmlvdXMoJGxhYmVsLCAkdGhp
bmcpIHsKCQlpZiAoIWlzc2V0KCR0aGlzLT5jb250ZXh0KSkgJHRoaXMtPmdldENvbnRleHQo
KTsKCQkkdGhpcy0+cHJldmlvdXNbJ2lkJ10gPSAoaW50KSAoJHRoaXMtPnByZXZpb3VzWydp
ZCddKTsKCQlpZiAoJHRoaXMtPnByZXZpb3VzWydpZCddICE9IDApIHsKCQkJJHRpdGxlID0g
ICR0aGlzLT5wcmV2aW91c1sndGl0bGUnXTsKCQkJJGVuZCA9ICciIHRpdGxlPSInLiAkbGFi
ZWwgLiAkdGl0bGU7CgkJCWlmIChpc3NldCgkdGhpcy0+c2V0KSkgJGh0bWwgPSB0YWcoJHRo
aW5nLCdhJywnIGhyZWY9IicuICR0aGlzLT5tYWtlUmVxdWVzdChhcnJheSgnc2V0JyA9PiAk
dGhpcy0+c2V0LCAnaW1nJyA9PiAkdGhpcy0+cHJldmlvdXNbJ2lkJ10pKSAuJGVuZC4nIicp
LiJcbiI7CgkJCWVsc2UgJGh0bWwgPSB0YWcoJHRoaW5nLCdhJywnIGhyZWY9IicuICR0aGlz
LT5tYWtlUmVxdWVzdChhcnJheSgnaW1nJyA9PiAkdGhpcy0+cHJldmlvdXNbJ2lkJ10pKSAu
JGVuZC4nIicpLiJcbiI7CgkJfQoJCXJldHVybiAkaHRtbDsKCX0KCglmdW5jdGlvbiBpbWdf
cHJldmlvdXNfdGh1bWJuYWlsKCkgewoJCWlmICghaXNzZXQoJHRoaXMtPmNvbnRleHQpKSAk
dGhpcy0+Z2V0Q29udGV4dCgpOwoJCSR0aGlzLT5wcmV2aW91c1snaWQnXSA9IChpbnQpICgk
dGhpcy0+cHJldmlvdXNbJ2lkJ10pOwoJCWlmICgkdGhpcy0+cHJldmlvdXNbJ2lkJ10gIT0g
MCkgewoJCQkkcmVzdWx0ID0gJzxpbWcgc3JjPSInIC4gJHRoaXMtPnByZXZpb3VzWyd0aHVt
YiddIC4gJyIgYWx0PSInIC4gJHRpdGxlIC4gJyIgLz4nOwoJCX0KCQlyZXR1cm4gJHJlc3Vs
dDsKCX0KCglmdW5jdGlvbiBpbWdfbmV4dCgkbGFiZWwsICR0aGluZykgewoJCWlmICghaXNz
ZXQoJHRoaXMtPmNvbnRleHQpKSAkdGhpcy0+Z2V0Q29udGV4dCgpOwoJCSR0aGlzLT5uZXh0
WydpZCddID0gKGludCkgKCR0aGlzLT5uZXh0WydpZCddKTsKCQlpZiAoJHRoaXMtPm5leHRb
J2lkJ10gIT0gMCkgewoJCQkkdGl0bGUgPSAgJHRoaXMtPm5leHRbJ3RpdGxlJ107CgkJCSRl
bmQgPSAnIiB0aXRsZT0iJy4gJGxhYmVsIC4gJHRpdGxlOwoJCQlpZiAoaXNzZXQoJHRoaXMt
PnNldCkpICRodG1sID0gdGFnKCR0aGluZywnYScsJyBocmVmPSInLiAkdGhpcy0+bWFrZVJl
cXVlc3QoYXJyYXkoJ3NldCcgPT4gJHRoaXMtPnNldCwgJ2ltZycgPT4gJHRoaXMtPm5leHRb
J2lkJ10pKSAuJGVuZC4nIicpLiJcbiI7CgkJCWVsc2UgJGh0bWwgPSB0YWcoJHRoaW5nLCdh
JywnIGhyZWY9IicuICR0aGlzLT5tYWtlUmVxdWVzdChhcnJheSgnaW1nJyA9PiAkdGhpcy0+
bmV4dFsnaWQnXSkpIC4kZW5kLiciJykuIlxuIjsKCQl9CgkJcmV0dXJuICRodG1sOwoJfQoK
CWZ1bmN0aW9uIGltZ19uZXh0X3RodW1ibmFpbCgpIHsKCQlpZiAoIWlzc2V0KCR0aGlzLT5j
b250ZXh0KSkgJHRoaXMtPmdldENvbnRleHQoKTsKCQkkdGhpcy0+bmV4dFsnaWQnXSA9IChp
bnQpICgkdGhpcy0+bmV4dFsnaWQnXSk7CgkJaWYgKCR0aGlzLT5uZXh0WydpZCddICE9IDAp
IHsKCQkJJHJlc3VsdCA9ICc8aW1nIHNyYz0iJyAuICR0aGlzLT5uZXh0Wyd0aHVtYiddIC4g
JyIgYWx0PSInIC4gJHRpdGxlIC4gJyIgLz4nOwoJCX0KCQlyZXR1cm4gJHJlc3VsdDsKCX0K
CglmdW5jdGlvbiBpbWdfc2V0X3RpdGxlKCkgewoJCWlmIChpc3NldCgkdGhpcy0+c2V0KSkg
ewoJCQkkbWV0aG9kID0gJ2ZsaWNrci5waG90b3NldHMuZ2V0SW5mbycgLiAkdGhpcy0+dXNl
cmRhdGEgLiAnJnBob3Rvc2V0X2lkPScgLiAkdGhpcy0+c2V0OwoJCQkkeG1sID0gbmV3IEZs
aWNrcigkbWV0aG9kKTsKCQkJJHRoaXMtPnNldF90aXRsZSA9IGFycmF5X3NoaWZ0KCR4bWwt
PnhwYXRoKCcvcnNwL3Bob3Rvc2V0L3RpdGxlL3RleHQoKScpKTsKCQkJcmV0dXJuICR0aGlz
LT5zZXRfdGl0bGU7CgkJfQoJCXJldHVybiAnJzsKCX0KCglmdW5jdGlvbiBpbWdfc2V0X2xp
bmsoJHRoaW5nKSB7CgkJaWYgKGlzc2V0KCR0aGlzLT5zZXQpKSB7CgkJCXJldHVybiB0YWco
JHRoaW5nLCAnYScsICcgaHJlZj0iJy4gJHRoaXMtPm1ha2VSZXF1ZXN0KGFycmF5KCdzZXQn
ID0+ICR0aGlzLT5zZXQpKSAuJyInKTsKCQl9CgkJcmV0dXJuICcnOwoJfQoKCWZ1bmN0aW9u
IGltZ19uYXYoKSB7CgkJJGh0bWwgLj0gJHRoaXMtPmltZ19wcmV2aW91cygpOwoJCSRodG1s
IC49ICc8aDIgY2xhc3M9InNldG5hbWUiPicgLiAkdGhpcy0+aW1nX3NldF90aXRsZSgpIC4g
JzwvaDI+JyAuICJcbiI7CgkJJGh0bWwgLj0gJHRoaXMtPmltZ19uZXh0KCk7CgkJcmV0dXJu
ICRodG1sOwoJfQoKCWZ1bmN0aW9uIGltZ190aXRsZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnRp
dGxlOwoJfQoKCWZ1bmN0aW9uIGltZ19kZXNjcmlwdGlvbigpIHsKCQkkZGVzY3JpcHRpb25f
c3RyaW5nID0gKHN0cmluZykgJHRoaXMtPmRlc2NyaXB0aW9uOwoJCWlmICgkZGVzY3JpcHRp
b25fc3RyaW5nICE9ICdBcnJheScpIHJldHVybiAkZGVzY3JpcHRpb25fc3RyaW5nOwoJfQoK
CWZ1bmN0aW9uIGltZ19pZl9kZXNjcmlwdGlvbiAoJHRoaW5nKSB7CgkJaWYgKCR0aGlzLT5k
ZXNjcmlwdGlvbiAhPSAnJm5ic3A7JyBhbmQgIWVtcHR5KCR0aGlzLT5kZXNjcmlwdGlvbikp
ICRyZXN1bHQgPSBwYXJzZSgkdGhpbmcpOwoJCWVsc2UgJHJlc3VsdCA9ICcnOwoJCXJldHVy
biAkcmVzdWx0OwoJfQoKCWZ1bmN0aW9uIGltZ190YWdzKCRzZXBhcmF0b3IpIHsKCQkkaHRt
bCA9IHRhZygkdGhpcy0+cmF3X3RhZ3NbMF0sJ2EnLCcgaHJlZj0iJyAuICR0aGlzLT5tYWtl
UmVxdWVzdChhcnJheSgndGFncycgPT4gJHRoaXMtPnRhZ3NbMF0pKSAuICciJykuIlxuIjsK
CQlmb3IoJGkgPSAxOyAkaSA8IHNpemVvZigkdGhpcy0+dGFncyk7ICRpKyspIHsKCQkJJGh0
bWwgLj0gJHNlcGFyYXRvcjsKCQkJJGh0bWwgLj0gdGFnKCR0aGlzLT5yYXdfdGFnc1skaV0s
J2EnLCcgaHJlZj0iJyAuICR0aGlzLT5tYWtlUmVxdWVzdChhcnJheSgndGFncycgPT4gJHRo
aXMtPnRhZ3NbJGldKSkgLiAnIicpLiJcbiI7CgkJfQoJCXJldHVybiAkaHRtbDsKCX0KCglm
dW5jdGlvbiBpbWdfbnVtYmVyX29mX2NvbW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+Y29t
bWVudHM7Cgl9CgoJZnVuY3Rpb24gaW1nX2NvbW1lbnRzX2ludml0ZSgkaW52aXRldGV4dCkg
ewoJCXJldHVybiB0YWcoJGludml0ZXRleHQsJ2EnLCcgaHJlZj0iJyAuICdodHRwOi8vd3d3
LmZsaWNrci5jb20vcGhvdG9zLycgLiB1cmxlbmNvZGUoJHRoaXMtPm5zaWQpIC4gJy8nIC4g
JHRoaXMtPmlkIC4gJy8iJyk7Cgl9CgoJZnVuY3Rpb24gaW1nX2RhdGVfcG9zdGVkKCRwYXJh
bXMpIHsKCQlpZiAoaXNzZXQoJHBhcmFtc1snZm9ybWF0J10pKSByZXR1cm4gc2FmZV9zdHJm
dGltZSgkcGFyYW1zWydmb3JtYXQnXSwgJHRoaXMtPmRhdGVfcG9zdGVkKTsKCQlnbG9iYWwg
JGFyY2hpdmVfZGF0ZWZvcm1hdDsKCQlyZXR1cm4gc2FmZV9zdHJmdGltZSgkYXJjaGl2ZV9k
YXRlZm9ybWF0LCAkdGhpcy0+ZGF0ZV9wb3N0ZWQpOwoJfQoKCWZ1bmN0aW9uIGltZ19kYXRl
X3Rha2VuKCRwYXJhbXMpIHsKCQlpZiAoaXNzZXQoJHBhcmFtc1snZm9ybWF0J10pKSByZXR1
cm4gc2FmZV9zdHJmdGltZSgkcGFyYW1zWydmb3JtYXQnXSwgc3RydG90aW1lKCR0aGlzLT5k
YXRlX3Rha2VuKSk7CgkJZ2xvYmFsICRhcmNoaXZlX2RhdGVmb3JtYXQ7CgkJcmV0dXJuIHNh
ZmVfc3RyZnRpbWUoJGFyY2hpdmVfZGF0ZWZvcm1hdCwgc3RydG90aW1lKCR0aGlzLT5kYXRl
X3Rha2VuKSk7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlpZighJHRoaXMtPnht
bC0+aXNWYWxpZCgpKSB7CgkJCXJldHVybiAkR0xPQkFMU1sndGV4dCddWydlcnJvcl9tZXNz
YWdlJ107CgkJfQoJCSRyZXN1bHQgPSBwYXJzZSgkdGhpcy0+Zm9ybSk7CgkJcmV0dXJuICRy
ZXN1bHQ7Cgl9Cn0KCgpjbGFzcyBUYWdsaXN0IGV4dGVuZHMgVmRoX0ZsaWNrciB7Cgl2YXIg
JHhtbCwgJHRhZ2xpc3QsICRjb3VudCwgJHNvdXJjZV90YWc7CgoJZnVuY3Rpb24gVGFnbGlz
dCgkcGFyYW1zKSB7CgkJJHRoaXMtPlZkaF9GbGlja3IoJHBhcmFtcyk7Cgl9CgoJZnVuY3Rp
b24gbGlzdF9hbGwoJHBhcmFtcykgewoJCSRtZXRob2QgPSAnZmxpY2tyLnRhZ3MuZ2V0TGlz
dFVzZXInIC4gJHRoaXMtPnVzZXJkYXRhOwoJCXJldHVybiAkdGhpcy0+Z2VuZXJhdGVMaXN0
KCRtZXRob2QsICRwYXJhbXMpOwoJfQoKCWZ1bmN0aW9uIGxpc3RfcG9wdWxhcigkcGFyYW1z
KSB7CgkJaXNzZXQoJHBhcmFtc1snY291bnQnXSk/ICR0aGlzLT5jb3VudCA9ICRwYXJhbXNb
J2NvdW50J10gOiAkdGhpcy0+Y291bnQgPSAxMDsKCQkkbWV0aG9kID0gJ2ZsaWNrci50YWdz
LmdldExpc3RVc2VyUG9wdWxhcicgLiAkdGhpcy0+dXNlcmRhdGEgLiAnJmNvdW50PScgLiAk
dGhpcy0+Y291bnQ7CgkJcmV0dXJuICR0aGlzLT5nZW5lcmF0ZUxpc3QoJG1ldGhvZCwgJHBh
cmFtcyk7Cgl9CgoJZnVuY3Rpb24gbGlzdF9yZWxhdGVkKCRwYXJhbXMpIHsKCQlpc3NldCgk
cGFyYW1zWydzb3VyY2VfdGFnJ10pPyAkdGhpcy0+c291cmNlX3RhZyA9ICRwYXJhbXNbJ3Nv
dXJjZV90YWcnXSA6ICR0aGlzLT5zb3VyY2VfdGFnID0gJyc7CgkJJG1ldGhvZCA9ICdmbGlj
a3IudGFncy5nZXRSZWxhdGVkJyAuICR0aGlzLT51c2VyZGF0YSAuICcmdGFnPScgLiAkdGhp
cy0+c291cmNlX3RhZzsKCQlyZXR1cm4gJHRoaXMtPmdlbmVyYXRlTGlzdCgkbWV0aG9kLCAk
cGFyYW1zKTsKCX0KCglmdW5jdGlvbiBnZW5lcmF0ZUxpc3QgKCRtZXRob2QsICRwYXJhbXMp
IHsKCQkkdGhpcy0+eG1sID0gbmV3IEZsaWNrcigkbWV0aG9kKTsKCQlpZigkdGhpcy0+eG1s
LT5pc1ZhbGlkKCkpIHsKCQkJJHRoaXMtPnRhZ2xpc3QgPSAkdGhpcy0+eG1sLT54cGF0aCgn
Ly90YWdzL3RhZy90ZXh0KCknKTsKCQl9CgkJZm9yICgkaSA9IDA7ICRpIDw9IHNpemVvZigk
dGhpcy0+dGFnbGlzdCkgLSAxOyAkaSsrKSB7CgkJCSR0aGlzLT50YWdsaXN0WyRpXSA9IHRh
ZygkdGhpcy0+dGFnbGlzdFskaV0sJ2EnLCcgaHJlZj0iJyAuICR0aGlzLT5tYWtlUmVxdWVz
dChhcnJheSgndGFncycgPT4gJHRoaXMtPnRhZ2xpc3RbJGldKSkgLiAnIicpOwoJCX0KCQly
ZXR1cm4gZG9XcmFwKCR0aGlzLT50YWdsaXN0LCAkcGFyYW1zWyd3cmFwdGFnJ10sICRwYXJh
bXNbJ2JyZWFrJ10sICRwYXJhbXNbJ2NsYXNzJ10sICRwYXJhbXNbJ2JyZWFrY2xhc3MnXSwg
JHBhcmFtc1snYXR0cyddKTsKCX0KCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVy
biAkdGhpcy0+bGlzdF9hbGw7Cgl9Cn0KCgpjbGFzcyBGbGlja3IgewoJdmFyICR4bWx1cmwg
PSAnaHR0cDovL3d3dy5mbGlja3IuY29tL3NlcnZpY2VzL3Jlc3QvP21ldGhvZD0nOwoJdmFy
ICR4bWw7CgoJZnVuY3Rpb24gRmxpY2tyKCRtZXRob2QpIHsKCQkvLyR0aW1lX3N0YXJ0ID0g
bWljcm90aW1lKHRydWUpOwoJCSR0aGlzLT54bWx1cmwgLj0gJG1ldGhvZDsKCQlpZihpc3Nl
dCgkR0xPQkFMU1sndXNlX3BocDQnXSkpIHsKCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3Vy
bF9pbml0JykpIHsKCQkJCSRjaCA9IEBjdXJsX2luaXQoKTsKCQkJCWN1cmxfc2V0b3B0KCRj
aCwgQ1VSTE9QVF9VUkwsICR0aGlzLT54bWx1cmwpOwoJCQkJY3VybF9zZXRvcHQoJGNoLCBD
VVJMT1BUX0hFQURFUiwgMCk7CgkJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJO
VFJBTlNGRVIsIDEpOwoJCQkJJHJlc3AgPSBjdXJsX2V4ZWMoJGNoKTsKCQkJCWN1cmxfY2xv
c2UoJGNoKTsKCQkJCWlmKCRkb20gPSBAZG9teG1sX29wZW5fbWVtKCRyZXNwKSkgewoJCQkJ
CSR0aGlzLT54bWwgPSB4cGF0aF9uZXdfY29udGV4dCgkZG9tKTsKCQkJCX0KCQkJfQoJCQll
bHNlIGlmICgkcmVzcCA9IEBmaWxlX2dldF9jb250ZW50cygkdGhpcy0+eG1sdXJsKSkgewoJ
CQkJaWYoJGRvbSA9IEBkb214bWxfb3Blbl9tZW0oJHJlc3ApKSB7CgkJCQkJJHRoaXMtPnht
bCA9IHhwYXRoX25ld19jb250ZXh0KCRkb20pOwoJCQkJfQoJCQl9CgkJCWVsc2UgaWYgKGZ1
bmN0aW9uX2V4aXN0cygnZG9teG1sX29wZW5fZmlsZScpKXsKCQkJCSRkb20gPSBAZG9teG1s
X29wZW5fZmlsZSgkdGhpcy0+eG1sdXJsKTsKCQkJCSR0aGlzLT54bWwgPSB4cGF0aF9uZXdf
Y29udGV4dCgkZG9tKTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJaWYoISR0aGlzLT54bWwgPSBA
c2ltcGxleG1sX2xvYWRfZmlsZSgkdGhpcy0+eG1sdXJsKSkgewoJCQkJdW5zZXQoJHRoaXMt
PnhtbCk7CgkJCX0KCQl9CgkJLy9lY2hvIG4sY29tbWVudCgoJ3J1bnRpbWUgZm9yICcgLiAk
bWV0aG9kLiAnOiAnIC4gKG1pY3JvdGltZSh0cnVlKSAtICR0aW1lX3N0YXJ0KSAuICI8YnIg
Lz5cbiIpKTsKCX0KCglmdW5jdGlvbiBpc1ZhbGlkKCkgewoJCWlmKGlzc2V0KCR0aGlzLT54
bWwpKSB7CgkJCSRyZXMgPSBhcnJheV9zaGlmdCgkdGhpcy0+eHBhdGgoJy9yc3AvQHN0YXQn
KSk7CgkJCWlmICgkcmVzID09ICdmYWlsJykgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJ
CXJldHVybiB0cnVlOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCglm
dW5jdGlvbiB4cGF0aCgkcGF0aCkgewoJCWlmKCFpc3NldCgkdGhpcy0+eG1sKSkgewoJCQly
ZXR1cm4gTlVMTDsKCQl9CgkJaWYoaXNzZXQoJEdMT0JBTFNbJ3VzZV9waHA0J10pKSB7CgkJ
CSRyZXN1bHQgPSB4cGF0aF9ldmFsX2V4cHJlc3Npb24oJHRoaXMtPnhtbCwgJHBhdGgpOwoJ
CQkkcmVzdWx0ID0gJHJlc3VsdC0+bm9kZXNldDsKCQkJLy8gQ29udmVydCB0byBTdHJpbmc6
CgkJCWZvcigkaXRlcmF0b3IgPSAwOyAkaXRlcmF0b3IgPCBjb3VudCgkcmVzdWx0KTsgJGl0
ZXJhdG9yKyspIHsKCQkJCSRyZXN1bHRbJGl0ZXJhdG9yXSA9ICRyZXN1bHRbJGl0ZXJhdG9y
XS0+Z2V0X2NvbnRlbnQoKTsKCQkJfQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZSB7
CgkJCSRyZXN1bHQgPSAkdGhpcy0+eG1sLT54cGF0aCgkcGF0aCk7CgkJCS8vIENvbnZlcnQg
dG8gU3RyaW5nOgoJCQlmb3IoJGl0ZXJhdG9yID0gMDsgJGl0ZXJhdG9yIDwgY291bnQoJHJl
c3VsdCk7ICRpdGVyYXRvcisrKSB7CgkJCQkkcmVzdWx0WyRpdGVyYXRvcl0gPSAoc3RyaW5n
KSAkcmVzdWx0WyRpdGVyYXRvcl07CgkJCX0KCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQp9
CgpmdW5jdGlvbiB2ZGhfZmxpY2tyKCRwYXJhbXMpIHsKCWlmKGlzc2V0KCRfR0VUWydpbWcn
XSkpIHsKCQlyZXR1cm4gdmRoX2ZsaWNrcl9pbWcoJHBhcmFtcyk7Cgl9CglpZihpc3NldCgk
X0dFVFsndGFncyddKSkgewoJCXJldHVybiB2ZGhfZmxpY2tyX3RodW1ibmFpbHMoJHBhcmFt
cyk7Cgl9CglpZihpc3NldCgkX0dFVFsnc2V0J10pKSB7CgkJcmV0dXJuIHZkaF9mbGlja3Jf
dGh1bWJuYWlscygkcGFyYW1zKTsKCX0KCWdsb2JhbCAkZ2FsOwoJLy8oKGlzc2V0ICgkZ2Fs
KSk9PWZhbHNlKT8gJGdhbCA9IG5ldyBHYWxsZXJ5KCRwYXJhbXMpIDogJyc7CglpZiAoIWVt
cHR5KCRwYXJhbXMpKSAkZ2FsID0gbmV3IEdhbGxlcnkoJHBhcmFtcyk7CglyZXR1cm4gJGdh
bC0+X190b1N0cmluZygpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFpbHMoJHBh
cmFtcykgewoJaWYoaXNzZXQoJF9HRVRbJ2ltZyddKSkgewoJCXJldHVybiB2ZGhfZmxpY2ty
X2ltZygkcGFyYW1zKTsKCX0KCWdsb2JhbCAkdGh1bWJzOwoJLy8oKGlzc2V0ICgkdGh1bWJz
KSk9PWZhbHNlKT8gJHRodW1icyA9IG5ldyBUaHVtYm5haWxzKCRwYXJhbXMpIDogJyc7Cglp
ZiAoIWVtcHR5KCRwYXJhbXMpKSAkdGh1bWJzID0gbmV3IFRodW1ibmFpbHMoJHBhcmFtcyk7
CglyZXR1cm4gJHRodW1icy0+X190b1N0cmluZygpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2ty
X2ltZygkcGFyYW1zKSB7CglnbG9iYWwgJHNpbmdsZWltZzsKCS8vKChpc3NldCAoJHNpbmds
ZWltZykpPT1mYWxzZSk/ICRzaW5nbGVpbWcgPSBuZXcgUGljdHVyZSgkcGFyYW1zKSA6ICcn
OwoJaWYgKCFlbXB0eSgkcGFyYW1zKSkgJHNpbmdsZWltZyA9IG5ldyBQaWN0dXJlKCRwYXJh
bXMpOwoJcmV0dXJuICRzaW5nbGVpbWctPl9fdG9TdHJpbmcoKTsKfQoKLy9uZXVlIHR4cCB0
YWdzCgpnbG9iYWwgJHZkaF9mbGlja3I7CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3NldF9pbWcg
KCRwYXJhbXMpIHsKCWdsb2JhbCAkZ2FsOwoJcmV0dXJuICRnYWwtPnNldF9pbWcoJHBhcmFt
cyk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3Jfc2V0X3RpdGxlICgkcGFyYW1zKSB7CglnbG9i
YWwgJGdhbDsKCXJldHVybiAkZ2FsLT5zZXRfdGl0bGUoJHBhcmFtcyk7Cn0KCmZ1bmN0aW9u
IHZkaF9mbGlja3Jfc2V0X2Rlc2NyaXB0aW9uICgpIHsKCWdsb2JhbCAkZ2FsOwoJcmV0dXJu
ICRnYWwtPnNldF9kZXNjcmlwdGlvbigpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3NldF9u
dW1iZXJfb2ZfcGhvdG9zICgpIHsKCWdsb2JhbCAkZ2FsOwoJcmV0dXJuICRnYWwtPnNldF9u
dW1iZXJfb2ZfcGhvdG9zKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3Jfc2V0X2xpbmsgKCRw
YXJhbXMsICR0aGluZykgewoJJHJlc3VsdCA9IHBhcnNlKCR0aGluZyk7CglnbG9iYWwgJGdh
bDsKCXJldHVybiAkZ2FsLT5zZXRfbGluaygkcGFyYW1zLCAkcmVzdWx0KTsKfQoKZnVuY3Rp
b24gdmRoX2ZsaWNrcl9zZXRfbGlzdCAoJHBhcmFtcykgewoJZ2xvYmFsICRnYWw7CgkoKGlz
c2V0ICgkZ2FsKSk9PWZhbHNlKT8gJGdhbCA9IG5ldyBHYWxsZXJ5KCRwYXJhbXMpIDogJyc7
CglyZXR1cm4gJGdhbC0+c2V0X2xpc3QoJHBhcmFtcyk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlj
a3JfdGFnX2xpc3RfYWxsICgkcGFyYW1zKSB7CgkkdGFnbGFsYWxhID0gbmV3IFRhZ2xpc3Qo
JHBhcmFtcyk7CglyZXR1cm4gJHRhZ2xhbGFsYS0+bGlzdF9hbGwoJHBhcmFtcyk7Cn0KCmZ1
bmN0aW9uIHZkaF9mbGlja3JfdGFnX2xpc3RfcG9wdWxhciAoJHBhcmFtcykgewoJJHRhZ2xh
bGFsYSA9IG5ldyBUYWdsaXN0KCRwYXJhbXMpOwoJcmV0dXJuICR0YWdsYWxhbGEtPmxpc3Rf
cG9wdWxhcigkcGFyYW1zKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl90YWdfbGlzdF9yZWxh
dGVkICgkcGFyYW1zKSB7CgkkdGFnbGFsYWxhID0gbmV3IFRhZ2xpc3QoJHBhcmFtcyk7Cgly
ZXR1cm4gJHRhZ2xhbGFsYS0+bGlzdF9yZWxhdGVkKCRwYXJhbXMpOwp9CgpmdW5jdGlvbiB2
ZGhfZmxpY2tyX3RodW1ibmFpbHNfdGl0bGUgKCkgewoJZ2xvYmFsICR0aHVtYnM7CglyZXR1
cm4gJHRodW1icy0+dGh1bWJuYWlsc190aXRsZSgpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2ty
X3RodW1ibmFpbHNfZGVzY3JpcHRpb24gKCkgewoJZ2xvYmFsICR0aHVtYnM7CglyZXR1cm4g
JHRodW1icy0+dGh1bWJuYWlsc19kZXNjcmlwdGlvbigpOwp9CgpmdW5jdGlvbiB2ZGhfZmxp
Y2tyX3RodW1ibmFpbHNfaWZfZGVzY3JpcHRpb24gKCRwYXJhbXMsICR0aGluZykgewoJZ2xv
YmFsICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19pZl9kZXNjcmlwdGlv
bigkdGhpbmcpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFpbHNfc2xpZGVzaG93
ICgkcGFyYW1zLCAkdGhpbmcpIHsKCSRyZXN1bHQgPSBwYXJzZSgkdGhpbmcpOwoJZ2xvYmFs
ICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19zbGlkZXNob3coJHJlc3Vs
dCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfdGh1bWJuYWlsc19pbWcgKCkgewoJZ2xvYmFs
ICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19pbWcoKTsKfQoKZnVuY3Rp
b24gdmRoX2ZsaWNrcl90aHVtYm5haWxzX2ltZ190aXRsZSAoKSB7CglnbG9iYWwgJHRodW1i
czsKCXJldHVybiAkdGh1bWJzLT50aHVtYm5haWxzX2ltZ190aXRsZSgpOwp9CgpmdW5jdGlv
biB2ZGhfZmxpY2tyX3RodW1ibmFpbHNfbGluayAoJHBhcmFtcywgJHRoaW5nKSB7CgkkcmVz
dWx0ID0gcGFyc2UoJHRoaW5nKTsKCWdsb2JhbCAkdGh1bWJzOwoJcmV0dXJuICR0aHVtYnMt
PnRodW1ibmFpbHNfbGluaygkcmVzdWx0KTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl90aHVt
Ym5haWxzX2xpc3QgKCRwYXJhbXMpIHsKCWdsb2JhbCAkdGh1bWJzOwoJaWYgKGlzc2V0KCRf
R0VUWydzZXQnXSkgb3IgaXNzZXQoJF9HRVRbJ3RhZ3MnXSkgb3IgaXNzZXQoJHBhcmFtc1sn
c2V0J10pIG9yIGlzc2V0KCRwYXJhbXNbJ3RhZ3MnXSkgb3IgaXNzZXQoJHBhcmFtc1snbGF0
ZXN0J10pKSB7CgkJaWYgKChpc3NldCAoJHRodW1icykpPT1mYWxzZSkgJHRodW1icyA9IG5l
dyBUaHVtYm5haWxzKCRwYXJhbXMpOwoJfQoJaWYgKGlzc2V0KCRfR0VUWydzZXQnXSkgb3Ig
aXNzZXQoJF9HRVRbJ3RhZ3MnXSkgb3IgaXNzZXQoJHRodW1icy0+c2V0KSBvciBpc3NldCgk
dGh1bWJzLT50YWdzKSBvciBpc3NldCgkdGh1bWJzLT5sYXRlc3QpKSB7CgkJcmV0dXJuICR0
aHVtYnMtPnRodW1ibmFpbHNfbGlzdCgkcGFyYW1zKTsKCX0KCXJldHVybiBmYWxzZTsKfQoK
ZnVuY3Rpb24gdmRoX2ZsaWNrcl90aHVtYm5haWxzX251bWJlcl9vZl9waG90b3MoKSB7Cgln
bG9iYWwgJHRodW1iczsKCXJldHVybiAkdGh1bWJzLT50aHVtYm5haWxzX251bWJlcl9vZl9w
aG90b3MoKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl90aHVtYm5haWxzX3Blcl9wYWdlKCkg
ewoJZ2xvYmFsICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19wZXJfcGFn
ZSgpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFpbHNfY3VycmVudF9wYWdlKCkg
ewoJZ2xvYmFsICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19jdXJyZW50
X3BhZ2UoKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl90aHVtYm5haWxzX3RvdGFsX3BhZ2Vz
KCkgewoJZ2xvYmFsICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc190b3Rh
bF9wYWdlcygpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFpbHNfcGFnZXNfZmly
c3QoJHBhcmFtcywgJHRoaW5nKSB7CglnbG9iYWwgJHRodW1iczsKCXJldHVybiAkdGh1bWJz
LT50aHVtYm5haWxzX3BhZ2VzX2ZpcnN0KCR0aGluZyk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlj
a3JfdGh1bWJuYWlsc19wYWdlc19sYXN0KCRwYXJhbXMsICR0aGluZykgewoJZ2xvYmFsICR0
aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19wYWdlc19sYXN0KCR0aGluZyk7
Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfdGh1bWJuYWlsc19wYWdlc19wcmV2aW91cygkcGFy
YW1zLCAkdGhpbmcpIHsKCWdsb2JhbCAkdGh1bWJzOwoJcmV0dXJuICR0aHVtYnMtPnRodW1i
bmFpbHNfcGFnZXNfcHJldmlvdXMoJHRoaW5nKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl90
aHVtYm5haWxzX3BhZ2VzX25leHQoJHBhcmFtcywgJHRoaW5nKSB7CglnbG9iYWwgJHRodW1i
czsKCXJldHVybiAkdGh1bWJzLT50aHVtYm5haWxzX3BhZ2VzX25leHQoJHRoaW5nKTsKfQoK
ZnVuY3Rpb24gdmRoX2ZsaWNrcl90aHVtYm5haWxzX3BhZ2VzX2xpc3QoJHBhcmFtcykgewoJ
Z2xvYmFsICR0aHVtYnM7CglyZXR1cm4gJHRodW1icy0+dGh1bWJuYWlsc19wYWdlc19saXN0
KCRwYXJhbXMpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFpbHNfcGFnZXNfc3Rh
cnR0aHVtYigpIHsKCWdsb2JhbCAkdGh1bWJzOwoJcmV0dXJuICR0aHVtYnMtPnRodW1ibmFp
bHNfcGFnZXNfc3RhcnR0aHVtYigpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX3RodW1ibmFp
bHNfcGFnZXNfZW5kdGh1bWIoKSB7CglnbG9iYWwgJHRodW1iczsKCXJldHVybiAkdGh1bWJz
LT50aHVtYm5haWxzX3BhZ2VzX2VuZHRodW1iKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3Jf
dGh1bWJuYWlsc19pZl9tdWx0aXBsZV9wYWdlcygkcGFyYW1zLCAkdGhpbmcpIHsKCWdsb2Jh
bCAkdGh1bWJzOwoJcmV0dXJuICR0aHVtYnMtPnRodW1ibmFpbHNfaWZfbXVsdGlwbGVfcGFn
ZXMoJHRoaW5nKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl9pbWdfdGl0bGUgKCkgewoJZ2xv
YmFsICRzaW5nbGVpbWc7CglyZXR1cm4gJHNpbmdsZWltZy0+aW1nX3RpdGxlKCk7Cn0KCmZ1
bmN0aW9uIHZkaF9mbGlja3JfaW1nX2Rlc2NyaXB0aW9uICgpIHsKCWdsb2JhbCAkc2luZ2xl
aW1nOwoJcmV0dXJuICRzaW5nbGVpbWctPmltZ19kZXNjcmlwdGlvbigpOwp9CgpmdW5jdGlv
biB2ZGhfZmxpY2tyX2ltZ19pZl9kZXNjcmlwdGlvbiAoJHBhcmFtcywgJHRoaW5nKSB7Cgln
bG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5pbWdfaWZfZGVzY3JpcHRp
b24oJHRoaW5nKTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl9pbWdfbmFrZWQgKCkgewoJZ2xv
YmFsICRzaW5nbGVpbWc7CglyZXR1cm4gJHNpbmdsZWltZy0+aW1nX25ha2VkKCk7Cn0KCmZ1
bmN0aW9uIHZkaF9mbGlja3JfaW1nX2xpbmsgKCRwYXJhbXMsICR0aGluZykgewoJJHJlc3Vs
dCA9IHBhcnNlKCR0aGluZyk7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xl
aW1nLT5pbWdfbGluaygkcmVzdWx0KTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl9pbWdfcHJl
dmlvdXMgKCRwYXJhbXMsICR0aGluZykgewoJJHJlc3VsdCA9IHBhcnNlKCR0aGluZyk7Cgln
bG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5pbWdfcHJldmlvdXMoJHBh
cmFtc1snbGFiZWwnXSwgJHJlc3VsdCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX3By
ZXZpb3VzX3RodW1ibmFpbCAoKSB7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2lu
Z2xlaW1nLT5pbWdfcHJldmlvdXNfdGh1bWJuYWlsKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlj
a3JfaW1nX25leHQgKCRwYXJhbXMsICR0aGluZykgewoJJHJlc3VsdCA9IHBhcnNlKCR0aGlu
Zyk7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5pbWdfbmV4dCgk
cGFyYW1zWydsYWJlbCddLCAkcmVzdWx0KTsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl9pbWdf
bmV4dF90aHVtYm5haWwgKCkgewoJZ2xvYmFsICRzaW5nbGVpbWc7CglyZXR1cm4gJHNpbmds
ZWltZy0+aW1nX25leHRfdGh1bWJuYWlsKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1n
X3NldF90aXRsZSAoKSB7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1n
LT5pbWdfc2V0X3RpdGxlKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX3NldF9saW5r
ICgkcGFyYW1zLCAkdGhpbmcpIHsKCSRyZXN1bHQgPSBwYXJzZSgkdGhpbmcpOwoJZ2xvYmFs
ICRzaW5nbGVpbWc7CglyZXR1cm4gJHNpbmdsZWltZy0+aW1nX3NldF9saW5rKCRyZXN1bHQp
Owp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX2ltZ190YWdzICgkcGFyYW1zKSB7CglnbG9iYWwg
JHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5pbWdfdGFncygkcGFyYW1zWydzZXBh
cmF0b3InXSk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX251bWJlcl9vZl9jb21tZW50
cyAoKSB7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5pbWdfbnVt
YmVyX29mX2NvbW1lbnRzKCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX2NvbW1lbnRz
X2ludml0ZSAoJHBhcmFtcywgJHRoaW5nKSB7CgkkcmVzdWx0ID0gcGFyc2UoJHRoaW5nKTsK
CWdsb2JhbCAkc2luZ2xlaW1nOwoJcmV0dXJuICRzaW5nbGVpbWctPmltZ19jb21tZW50c19p
bnZpdGUoJHJlc3VsdCk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX2RhdGVfcG9zdGVk
ICgkcGFyYW1zKSB7CglnbG9iYWwgJHNpbmdsZWltZzsKCXJldHVybiAkc2luZ2xlaW1nLT5p
bWdfZGF0ZV9wb3N0ZWQoJHBhcmFtcyk7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaW1nX2Rh
dGVfdGFrZW4gKCRwYXJhbXMpIHsKCWdsb2JhbCAkc2luZ2xlaW1nOwoJcmV0dXJuICRzaW5n
bGVpbWctPmltZ19kYXRlX3Rha2VuKCRwYXJhbXMpOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2ty
X2VudigkcGFyYW1zKSB7CglnbG9iYWwgJHZkaF9mbGlja3I7CglpZihpc3NldCgkX0dFVFsn
aW1nJ10pKSB7CgkJZ2xvYmFsICRzaW5nbGVpbWc7CgkJJHZkaF9mbGlja3JbJ2lzX2ltZydd
ID0gMTsKCQkkc2luZ2xlaW1nID0gbmV3IFBpY3R1cmUoJHBhcmFtcyk7CgkJcmV0dXJuICcn
OwoJfQoJaWYoaXNzZXQoJF9HRVRbJ3RhZ3MnXSkpIHsKCQlnbG9iYWwgJHRodW1iczsKCQkk
dmRoX2ZsaWNrclsnaXNfdGh1bWJuYWlscyddID0gMTsKCQkkdmRoX2ZsaWNrclsnaXNfdGFn
cyddID0gMTsKCQkkdGh1bWJzID0gbmV3IFRodW1ibmFpbHMoJHBhcmFtcyk7CgkJcmV0dXJu
ICcnOwoJfQoJaWYoaXNzZXQoJF9HRVRbJ3NldCddKSkgewoJCWdsb2JhbCAkdGh1bWJzOwoJ
CSR2ZGhfZmxpY2tyWydpc190aHVtYm5haWxzJ10gPSAxOwoJCSR2ZGhfZmxpY2tyWydpc19z
ZXQnXSA9IDE7CgkJJHRodW1icyA9IG5ldyBUaHVtYm5haWxzKCRwYXJhbXMpOwoJCXJldHVy
biAnJzsKCX0KCWdsb2JhbCAkZ2FsOwoJKChpc3NldCAoJGdhbCkpPT1mYWxzZSk/ICRnYWwg
PSBuZXcgR2FsbGVyeSgkcGFyYW1zKSA6ICcnOwoJJHZkaF9mbGlja3JbJ2lzX3ByZXZpZXcn
XSA9IDE7CglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIHZkaF9mbGlja3JfaWZfcHJldmlldygk
cGFyYW1zLCAkdGhpbmcpIHsKCWdsb2JhbCAkdmRoX2ZsaWNrcjsKCXJldHVybiAoQCR2ZGhf
ZmxpY2tyWydpc19wcmV2aWV3J10gPT0gdHJ1ZSkgPyBwYXJzZSgkdGhpbmcpIDogJyc7Cn0K
CmZ1bmN0aW9uIHZkaF9mbGlja3JfaWZfdGh1bWJuYWlscygkcGFyYW1zLCAkdGhpbmcpIHsK
CWdsb2JhbCAkdmRoX2ZsaWNrcjsKCXJldHVybiAoQCR2ZGhfZmxpY2tyWydpc190aHVtYm5h
aWxzJ10gPT0gdHJ1ZSkgPyBwYXJzZSgkdGhpbmcpIDogJyc7Cn0KCmZ1bmN0aW9uIHZkaF9m
bGlja3JfaWZfc2V0KCRwYXJhbXMsICR0aGluZykgewoJZ2xvYmFsICR2ZGhfZmxpY2tyOwoJ
cmV0dXJuIChAJHZkaF9mbGlja3JbJ2lzX3NldCddID09IHRydWUpID8gcGFyc2UoJHRoaW5n
KSA6ICcnOwp9CgpmdW5jdGlvbiB2ZGhfZmxpY2tyX2lmX3RhZ3MoJHBhcmFtcywgJHRoaW5n
KSB7CglnbG9iYWwgJHZkaF9mbGlja3I7CglyZXR1cm4gKEAkdmRoX2ZsaWNrclsnaXNfdGFn
cyddID09IHRydWUpID8gcGFyc2UoJHRoaW5nKSA6ICcnOwp9CgpmdW5jdGlvbiB2ZGhfZmxp
Y2tyX2lmX2ltZygkcGFyYW1zLCAkdGhpbmcpIHsKCWdsb2JhbCAkdmRoX2ZsaWNrcjsKCXJl
dHVybiAoQCR2ZGhfZmxpY2tyWydpc19pbWcnXSA9PSB0cnVlKSA/IHBhcnNlKCR0aGluZykg
OiAnJzsKfQoKZnVuY3Rpb24gdmRoX2ZsaWNrcl9zaG93X25zaWQoJHBhcmFtcykgewoJJG5z
aWRjaGVjayA9IG5ldyBWZGhfZmxpY2tyKCRwYXJhbXMpOwoJcmV0dXJuICRuc2lkY2hlY2st
Pl9fdG9TdHJpbmcoKTsKfSI7czozOiJtZDUiO3M6MzI6ImJmOWVkNDdkYzY3N2JkOTRiYTE0
OWVjNzZlZTMyMjgwIjt9
