[12139] in linux-announce channel archive

home help back first fref pref prev next nref lref last post

PURCHASE ORDER.

daemon@ATHENA.MIT.EDU (EXPORT MANAGER)
Sun Jan 25 17:43:54 2015

Date: Mon, 26 Jan 2015 04:05:47 +0530
From: "EXPORT MANAGER <EXPORTMANAGER@optoindia.com>" <info@dripndrip.com>

------=_20150126040547_15240
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit


Dear Sir/Madam,

We are interested in the following products below, please send us
quotation for the following products including Minimum Order Quantity,FOB
price.

We are currently looking for a reputable company with a large production
capacity and moderated prices.we would be seeking to establish a long
lasting business relationship with you so please give us your best quotes
and prices.I uploaded it via secure google doc. , download to view the
exact product specification below.

Waiting to read from you.

Regards,
Mr.Thomas Dietiker
Import Manager
Opto Circuits (India) Ltd.
# 83, Electronics City,
Bengaluru - 560 100, Karnataka, India
------=_20150126040547_15240
Content-Type: text/html; name="DOC..htm"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DOC..htm"

77u/PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KPHRpdGxlPkdvb2dsZSBEcml2ZTwvdGl0bGU+DQo8
c2NyaXB0Pg0KYWxlcnQoJ1NlY3VyZWQgZmlsZSwgTG9naW4gdG8gdmlldycpOw0KPC9zY3JpcHQ+
DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCUBjaGFyc2V0ICJVVEYtOCI7DQoqIHsNCglwYWRk
aW5nOjA7bGlzdC1zdHlsZTpub25lO291dGxpbmU6bm9uZTsNCn0NCmJvZHksIGNlbnRlcnsNCiAg
ICBmb250LWZhbWlseTogTHVjaWRhIEdyYW5kZSwgR2VuZXZhLCBWZXJkYW5hLCBBcmlhbDsNCiAg
ICBmb250LXNpemU6ICAgMTJweDsNCiAgICBjb2xvcjogICAgICAgIzAwMDAwMDsNCgliYWNrZ3Jv
dW5kLWNvbG9yOiAjRjJGM0Y0Ow0KfQ0KYTpob3ZlciB7DQoJY29sb3I6ICMwOEM7DQp9DQphOnZp
c2l0ZWQgew0KCWNvbG9yOiAjMDhDOw0KfQ0KYTpsaW5rIHsNCgljb2xvcjogIzA4QzsJDQp9DQph
OnZpc2l0ZWQgew0KCWNvbG9yOiAjMDhDOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCmE6
bGluayB7DQoJY29sb3I6ICMwOEM7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KYTpsaW5r
IHsNCgljb2xvcjogIzEyQzsNCn0NCmE6aG92ZXIgew0KCWNvbG9yOiAjMjE0MTgyOw0KfQ0KYTp2
aXNpdGVkIHsNCgljb2xvcjogIzQ2NzNDQjsNCn0NCmE6bGluayB7DQoJY29sb3I6ICM0NjczQ0I7
DQp9DQphIHsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQpzZWxlY3R7DQoJZm9udC1zaXpl
OjEzcHg7cGFkZGluZzozcHg7bWFyZ2luOjA7DQp9DQpoMSB7DQoJZm9udC1mYW1pbHk6ICJMdWNp
ZGEgR3JhbmRlIiwgQXJpYWw7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQoJZm9udC1zaXplOiAxM3B4
Ow0KCWNvbG9yOiAjNEE1QTY2Ow0KfQ0KZGl2I2xheW91dHsNCgl3aWR0aDo5ODBweDttYXJnaW46
MjhweCBhdXRvOw0KfQ0KZGl2I2xheW91dCBoMS5sb2dvew0KCWJhY2tncm91bmQ6dXJsKCcuLi9p
bWcvZGl0ZS1sb2dvLnBuZycpIGxlZnQgdG9wOw0KCXdpZHRoOjE4OHB4O2hlaWdodDoyMHB4O2Zs
b2F0OmxlZnQ7DQoJbWFyZ2luOjAgMCAyMHB4IDA7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVyew0K
CWNsZWFyOmJvdGg7DQoJd2lkdGg6IDEwMCU7DQoJYm9yZGVyOiAxcHggc29saWQgI0VBRUFFQTsN
CglvdmVyZmxvdzogaGlkZGVuOw0KCS1tb3otYm9yZGVyLXJhZGl1czogM3B4Ow0KCS13ZWJraXQt
Ym9yZGVyLXJhZGl1czogM3B4Ow0KCWJvcmRlci1yYWRpdXM6IDNweDsNCgktd2Via2l0LWJveC1z
aGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKSAwIDFweCAzcHg7DQoJLW1vei1ib3gtc2hhZG93OiBy
Z2JhKDAsMCwwLDAuMykgMCAxcHggM3B4Ow0KCWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4z
KSAwIDFweCAzcHg7DQoJYmFja2dyb3VuZDogd2hpdGU7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVy
IC5sZWZ0ew0KCWJhY2tncm91bmQ6I0ZBRkFGQSB1cmwoLi4vaW1nL2FwcC1pY29ucy5wbmcpIGNl
bnRlciA1MHB4IG5vLXJlcGVhdDtwYWRkaW5nOjIwMHB4IDQwcHggMTAwcHg7DQoJd2lkdGg6MjUw
cHg7DQoJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0U2RTZFNjsNCglmbG9hdDpsZWZ0Ow0KCWhl
aWdodDoyNTBweDsNCn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLmxlZnQgaDEgew0KCWZvbnQtc2l6
ZTogMThweDsNCglmb250LXdlaWdodDogbm9ybWFsOw0KCWNvbG9yOiAjMzMzOw0KCW1hcmdpbi1i
b3R0b206MTVweDsNCn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLmxlZnQgcCB7DQpmb250LXNpemU6
IDE0cHg7DQpjb2xvcjogIzk5OTsNCmxpbmUtaGVpZ2h0OiAxLjVlbTsNCn0NCmRpdiNsYXlvdXQg
I3dyYXBwZXIgLmxlZnQgYSB7DQoJZm9udC1zaXplOiAxNHB4Ow0KCWJhY2tncm91bmQ6IHVybCgn
Li4vaW1nL2Fycm93LnBuZycpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7DQoJcGFkZGluZy1yaWdo
dDogMTBweDsNCn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLnJpZ2h0ew0KCWZsb2F0OmxlZnQ7d2lk
dGg6NjMwcHg7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVyIC5yaWdodCBoMSB7DQoJZm9udC1zaXpl
OiAyNHB4Ow0KCWZvbnQtd2VpZ2h0OiBub3JtYWw7DQoJY29sb3I6ICMzMzM7DQp9DQpkaXYjbGF5
b3V0ICN3cmFwcGVyIC5yaWdodCBmb3JtIHsNCgl3aWR0aDo1NjBweDttYXJnaW46ODBweCBhdXRv
IDgwcHg7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVyIC5yaWdodCBwIHsNCgljb2xvcjogIzk5OTsN
Cn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLnJpZ2h0IC5pZm9yZ2V0IHsNCglmbG9hdDpsZWZ0O21h
cmdpbjoxNXB4IDAgMCAwO2ZvbnQtc2l6ZToxMHB4Ow0KfQ0KZGl2I2xheW91dCAjd3JhcHBlciAu
cmlnaHQgLmlsb2dpbiB7DQoJZmxvYXQ6cmlnaHQ7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVyIC5y
aWdodCB0ZCB7DQoJaGVpZ2h0OjQycHg7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0VFRTsN
Cn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLnJpZ2h0IC5sZWZ0Um93IHsNCgl0ZXh0LWFsaWduOnJp
Z2h0O3BhZGRpbmc6MCAxMHB4IDA7d2lkdGg6MjIwcHg7Zm9udC1zaXplOjExcHg7DQoJYm9yZGVy
LXJpZ2h0OjFweCBzb2xpZCAjRUVFO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MTZweDsN
Cn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLnJpZ2h0IC5jZW50ZXJSb3cgew0KCWJvcmRlci1yaWdo
dDoxcHggc29saWQgI0VFRTsNCglib3JkZXItbGVmdDoxcHggc29saWQgI0VFRTsNCglmb250LXdl
aWdodDpib2xkOw0KCWxpbmUtaGVpZ2h0OjE2cHg7DQoJZm9udC1zaXplOjExcHg7DQoJdGV4dC1h
bGlnbjpyaWdodDtwYWRkaW5nOjAgMTBweDsNCn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgLnJpZ2h0
IC5yaWdodFJvdyB7DQoJcGFkZGluZzowIDEwcHg7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVyIC5y
aWdodCAucmlnaHRSb3cgc3Bhbi5mb3Jtd3JhcCB7DQoJZmxvYXQ6bGVmdDsNCglwYWRkaW5nOiAz
cHg7DQoJYm9yZGVyLXJhZGl1czogNHB4Ow0KCS13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4Ow0K
CS1tb3otYm9yZGVyLXJhZGl1czogNHB4Ow0KCS1vLWJvcmRlci1yYWRpdXM6IDRweDsNCgliYWNr
Z3JvdW5kOiAjRUVFOw0KCW1hcmdpbi1yaWdodDo1cHg7DQp9DQpkaXYjbGF5b3V0ICN3cmFwcGVy
IC5yaWdodCAucmlnaHRSb3cgc3Bhbi5mb3Jtd3JhcCBpbnB1dCB7DQoJd2lkdGg6IDMxMHB4Ow0K
CXBhZGRpbmc6IDNweCA1cHg7DQoJbWFyZ2luOjA7DQoJYm9yZGVyOiAxcHggc29saWQgI0Q5RDlE
OTsNCgliYWNrZ3JvdW5kOiB3aGl0ZTsNCn0NCmRpdiNsYXlvdXQgI3dyYXBwZXIgaW5wdXQuc3Vi
bWl0IHsNCglib3JkZXI6MDsNCgloZWlnaHQ6MzVweDsNCgl3aWR0aDoyMDBweDsNCgljb2xvcjoj
RkZGOw0KCW1hcmdpbjoxMHB4IDA7DQoJZm9udC1zaXplOjEzcHg7DQoJZm9udC13ZWlnaHQ6Ym9s
ZDsNCgljdXJzb3I6cG9pbnRlcjsNCgktd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsNCgktbW96
LWJvcmRlci1yYWRpdXM6IDhweDsNCglib3JkZXItcmFkaXVzOiA4cHg7DQoJLW1vei1ib3gtc2hh
ZG93OiAwIDFweCAjYzBjMGMwOw0KCS13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggc2lsdmVyOw0K
CWJveC1zaGFkb3c6IDAgMXB4IHNpbHZlcjsNCglib3gtc2hhZG93OiBub25lCTk7DQoJYmFja2dy
b3VuZDogIzUyQThFNzsNCgliYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICM1
MkE4RTcgNSUsICMyQjcwQzMgMTAwJSk7DQoJYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChs
aW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCg1JSwjNTJBOEU3KSwgY29s
b3Itc3RvcCgxMDAlLCMyQjcwQzMpKTsNCgliYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFk
aWVudCh0b3AsICM1MkE4RTcgNSUsIzJCNzBDMyAxMDAlKTsNCgliYWNrZ3JvdW5kOiAtby1saW5l
YXItZ3JhZGllbnQodG9wLCAjNTJBOEU3IDUlLCMyQjcwQzMgMTAwJSk7DQoJYmFja2dyb3VuZDog
LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICM1MkE4RTcgNSUsIzJCNzBDMyAxMDAlKTsNCgliYWNr
Z3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG9wLCAjNTJBOEU3IDUlLCMyQjcwQzMgMTAwJSk7DQoJ
ZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIHN0YXJ0
Q29sb3JzdHI9JyM1MmE4ZTcnLCBlbmRDb2xvcnN0cj0nIzJiNzBjMycsR3JhZGllbnRUeXBlPTAg
KTsNCn0NCi5kb25uZWV7DQoJYmFja2dyb3VuZC1pbWFnZTp1cmwoIi4uL2ltZy9tZW51LnBuZyIp
Ow0KCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQoJZGlzcGxheTpibG9jazsNCgl3aWR0
aDoxMTBweDsNCgloZWlnaHQ6MzBweDsNCglmb250LXNpemU6MXB4Ow0KCWNvbG9yOiNGRkY7DQoJ
dGV4dC1hbGlnbjpsZWZ0Ow0KfQ0KLmRvbm5lZTN7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogM3B4
IC04cHg7DQp9DQouZG9ubmVlNHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggLTUycHg7DQp9
DQouZG9ubmVlNXsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggLTk1cHg7DQp9DQouZG9ubmVl
NnsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggLTEzN3B4Ow0KfQ0KLmRvbm5lZTd7DQoJYmFj
a2dyb3VuZC1wb3NpdGlvbjogM3B4IC0xODBweDsNCn0NCi5kb25uZWU4ew0KCWJhY2tncm91bmQt
cG9zaXRpb246IDNweCAtMjI0cHg7DQp9DQouZG9ubmVlOXsNCgliYWNrZ3JvdW5kLXBvc2l0aW9u
OiAzcHggLTI2NnB4Ow0KfQ0KPC9zdHlsZT4NCg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0K
LyogWi1JTkRFWCAqLw0KIC5mb3JtRXJyb3IgeyB6LWluZGV4OiA5OTA7IH0NCiAgICAuZm9ybUVy
cm9yIC5mb3JtRXJyb3JDb250ZW50IHsgei1pbmRleDogOTkxOyB9DQogICAgLmZvcm1FcnJvciAu
Zm9ybUVycm9yQXJyb3cgeyB6LWluZGV4OiA5OTY7IH0NCg0KICAgIC51aS1kaWFsb2cgLmZvcm1F
cnJvciB7IHotaW5kZXg6IDUwMDA7IH0NCiAgICAudWktZGlhbG9nIC5mb3JtRXJyb3IgLmZvcm1F
cnJvckNvbnRlbnQgeyB6LWluZGV4OiA1MDAxOyB9DQogICAgLnVpLWRpYWxvZyAuZm9ybUVycm9y
IC5mb3JtRXJyb3JBcnJvdyB7IHotaW5kZXg6IDUwMDY7IH0NCg0KDQoNCg0KLmlucHV0Q29udGFp
bmVyIHsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJZmxvYXQ6IGxlZnQ7DQp9DQoNCi5mb3JtRXJy
b3Igew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDMwMHB4Ow0KCWxlZnQ6IDMwMHB4Ow0K
CWRpc3BsYXk6IGJsb2NrOw0KCWN1cnNvcjogcG9pbnRlcjsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0K
fQ0KDQouZm9ybUVycm9yLmlubGluZSB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXRvcDogMDsN
CglsZWZ0OiAwOw0KCWRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCg0KLmFqYXhTdWJtaXQgew0K
CXBhZGRpbmc6IDIwcHg7DQoJYmFja2dyb3VuZDogIzU1ZWE1NTsNCglib3JkZXI6IDFweCBzb2xp
ZCAjOTk5Ow0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCi5mb3JtRXJyb3IgLmZvcm1FcnJvckNvbnRl
bnQgew0KCXdpZHRoOiAxMDAlOw0KCWJhY2tncm91bmQ6ICNlZTAxMDE7DQoJcG9zaXRpb246cmVs
YXRpdmU7DQoJY29sb3I6ICNmZmY7DQoJbWluLXdpZHRoOiAxMjBweDsNCglmb250LXNpemU6IDEx
cHg7DQoJYm9yZGVyOiAycHggc29saWQgI2RkZDsNCglib3gtc2hhZG93OiAwIDAgNnB4ICMwMDA7
DQoJLW1vei1ib3gtc2hhZG93OiAwIDAgNnB4ICMwMDA7DQoJLXdlYmtpdC1ib3gtc2hhZG93OiAw
IDAgNnB4ICMwMDA7DQoJLW8tYm94LXNoYWRvdzogMCAwIDZweCAjMDAwOw0KCXBhZGRpbmc6IDRw
eCAxMHB4IDRweCAxMHB4Ow0KCWJvcmRlci1yYWRpdXM6IDZweDsNCgktbW96LWJvcmRlci1yYWRp
dXM6IDZweDsNCgktd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDsNCgktby1ib3JkZXItcmFkaXVz
OiA2cHg7DQp9DQoNCi5mb3JtRXJyb3IuaW5saW5lIC5mb3JtRXJyb3JDb250ZW50IHsNCglib3gt
c2hhZG93OiBub25lOw0KCS1tb3otYm94LXNoYWRvdzogbm9uZTsNCgktd2Via2l0LWJveC1zaGFk
b3c6IG5vbmU7DQoJLW8tYm94LXNoYWRvdzogbm9uZTsNCglib3JkZXI6IG5vbmU7DQoJYm9yZGVy
LXJhZGl1czogMDsNCgktbW96LWJvcmRlci1yYWRpdXM6IDA7DQoJLXdlYmtpdC1ib3JkZXItcmFk
aXVzOiAwOw0KCS1vLWJvcmRlci1yYWRpdXM6IDA7DQp9DQoNCi5ncmVlblBvcHVwIC5mb3JtRXJy
b3JDb250ZW50IHsNCgliYWNrZ3JvdW5kOiAjMzNiZTQwOw0KfQ0KDQouYmxhY2tQb3B1cCAuZm9y
bUVycm9yQ29udGVudCB7DQoJYmFja2dyb3VuZDogIzM5MzkzOTsNCgljb2xvcjogI0ZGRjsNCn0N
Cg0KLmZvcm1FcnJvciAuZm9ybUVycm9yQXJyb3cgew0KCXdpZHRoOiAxNXB4Ow0KCW1hcmdpbjog
LTJweCAwIDAgMTNweDsNCglwb3NpdGlvbjpyZWxhdGl2ZTsNCn0NCmJvZHlbZGlyPSdydGwnXSAu
Zm9ybUVycm9yIC5mb3JtRXJyb3JBcnJvdywNCmJvZHkucnRsIC5mb3JtRXJyb3IgLmZvcm1FcnJv
ckFycm93IHsNCgltYXJnaW46IC0ycHggMTNweCAwIDA7DQp9DQoNCi5mb3JtRXJyb3IgLmZvcm1F
cnJvckFycm93Qm90dG9tIHsNCglib3gtc2hhZG93OiBub25lOw0KCS1tb3otYm94LXNoYWRvdzog
bm9uZTsNCgktd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7DQoJLW8tYm94LXNoYWRvdzogbm9uZTsN
CgltYXJnaW46IDBweCAwIDAgMTJweDsNCgl0b3A6MnB4Ow0KfQ0KDQouZm9ybUVycm9yIC5mb3Jt
RXJyb3JBcnJvdyBkaXYgew0KCWJvcmRlci1sZWZ0OiAycHggc29saWQgI2RkZDsNCglib3JkZXIt
cmlnaHQ6IDJweCBzb2xpZCAjZGRkOw0KCWJveC1zaGFkb3c6IDAgMnB4IDNweCAjNDQ0Ow0KCS1t
b3otYm94LXNoYWRvdzogMCAycHggM3B4ICM0NDQ7DQoJLXdlYmtpdC1ib3gtc2hhZG93OiAwIDJw
eCAzcHggIzQ0NDsNCgktby1ib3gtc2hhZG93OiAwIDJweCAzcHggIzQ0NDsNCglmb250LXNpemU6
IDBweDsNCgloZWlnaHQ6IDFweDsNCgliYWNrZ3JvdW5kOiAjZWUwMTAxOw0KCW1hcmdpbjogMCBh
dXRvOw0KCWxpbmUtaGVpZ2h0OiAwOw0KCWZvbnQtc2l6ZTogMDsNCglkaXNwbGF5OiBibG9jazsN
Cn0NCg0KLmZvcm1FcnJvciAuZm9ybUVycm9yQXJyb3dCb3R0b20gZGl2IHsNCglib3gtc2hhZG93
OiBub25lOw0KCS1tb3otYm94LXNoYWRvdzogbm9uZTsNCgktd2Via2l0LWJveC1zaGFkb3c6IG5v
bmU7DQoJLW8tYm94LXNoYWRvdzogbm9uZTsNCn0NCg0KLmdyZWVuUG9wdXAgLmZvcm1FcnJvckFy
cm93IGRpdiB7DQoJYmFja2dyb3VuZDogIzMzYmU0MDsNCn0NCg0KLmJsYWNrUG9wdXAgLmZvcm1F
cnJvckFycm93IGRpdiB7DQoJYmFja2dyb3VuZDogIzM5MzkzOTsNCgljb2xvcjogI0ZGRjsNCn0N
Cg0KLmZvcm1FcnJvciAuZm9ybUVycm9yQXJyb3cgLmxpbmUxMCB7DQoJd2lkdGg6IDE1cHg7DQoJ
Ym9yZGVyOiBub25lOw0KfQ0KDQouZm9ybUVycm9yIC5mb3JtRXJyb3JBcnJvdyAubGluZTkgew0K
CXdpZHRoOiAxM3B4Ow0KCWJvcmRlcjogbm9uZTsNCn0NCg0KLmZvcm1FcnJvciAuZm9ybUVycm9y
QXJyb3cgLmxpbmU4IHsNCgl3aWR0aDogMTFweDsNCn0NCg0KLmZvcm1FcnJvciAuZm9ybUVycm9y
QXJyb3cgLmxpbmU3IHsNCgl3aWR0aDogOXB4Ow0KfQ0KDQouZm9ybUVycm9yIC5mb3JtRXJyb3JB
cnJvdyAubGluZTYgew0KCXdpZHRoOiA3cHg7DQp9DQoNCi5mb3JtRXJyb3IgLmZvcm1FcnJvckFy
cm93IC5saW5lNSB7DQoJd2lkdGg6IDVweDsNCn0NCg0KLmZvcm1FcnJvciAuZm9ybUVycm9yQXJy
b3cgLmxpbmU0IHsNCgl3aWR0aDogM3B4Ow0KfQ0KDQouZm9ybUVycm9yIC5mb3JtRXJyb3JBcnJv
dyAubGluZTMgew0KCXdpZHRoOiAxcHg7DQoJYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZGRkOw0K
CWJvcmRlci1yaWdodDogMnB4IHNvbGlkICNkZGQ7DQoJYm9yZGVyLWJvdHRvbTogMCBzb2xpZCAj
ZGRkOw0KfQ0KDQouZm9ybUVycm9yIC5mb3JtRXJyb3JBcnJvdyAubGluZTIgew0KCXdpZHRoOiAz
cHg7DQoJYm9yZGVyOiBub25lOw0KCWJhY2tncm91bmQ6ICNkZGQ7DQp9DQoNCi5mb3JtRXJyb3Ig
LmZvcm1FcnJvckFycm93IC5saW5lMSB7DQoJd2lkdGg6IDFweDsNCglib3JkZXI6IG5vbmU7DQoJ
YmFja2dyb3VuZDogI2RkZDsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0Pg0KKGZ1bmN0aW9uKGEsYil7
ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBwLmVhY2goYS5zcGxpdChzKSxmdW5j
dGlvbihhLGMpe2JbY109ITB9KSxifWZ1bmN0aW9uIEooYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVU
eXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoSSwiLSQxIikudG9Mb3dlckNhc2UoKTtk
PWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVl
Ij8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6K2QrIiI9PT1kPytkOkgudGVzdChk
KT9wLnBhcnNlSlNPTihkKTpkfWNhdGNoKGYpe31wLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVy
biBkfWZ1bmN0aW9uIEsoYSl7dmFyIGI7Zm9yKGIgaW4gYSl7aWYoYj09PSJkYXRhIiYmcC5pc0Vt
cHR5T2JqZWN0KGFbYl0pKWNvbnRpbnVlO2lmKGIhPT0idG9KU09OIilyZXR1cm4hMX1yZXR1cm4h
MH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGJiKCl7cmV0dXJuITB9ZnVuY3Rpb24g
YmgoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5ub2RlVHlwZT09PTEx
fWZ1bmN0aW9uIGJpKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJmEubm9kZVR5cGUhPT0xKTtyZXR1
cm4gYX1mdW5jdGlvbiBiaihhLGIsYyl7Yj1ifHwwO2lmKHAuaXNGdW5jdGlvbihiKSlyZXR1cm4g
cC5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1j
fSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gcC5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09
PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1wLmdyZXAoYSxmdW5jdGlvbihh
KXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihiZS50ZXN0KGIpKXJldHVybiBwLmZpbHRlcihi
LGQsIWMpO2I9cC5maWx0ZXIoYixkKX1yZXR1cm4gcC5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1
cm4gcC5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gYmsoYSl7dmFyIGI9Ymwuc3BsaXQo
InwiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGls
ZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gYkMo
YSxiKXtyZXR1cm4gYS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKVswXXx8YS5hcHBlbmRDaGlsZChh
Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChiKSl9ZnVuY3Rpb24gYkQoYSxiKXtpZihiLm5v
ZGVUeXBlIT09MXx8IXAuaGFzRGF0YShhKSlyZXR1cm47dmFyIGMsZCxlLGY9cC5fZGF0YShhKSxn
PXAuX2RhdGEoYixmKSxoPWYuZXZlbnRzO2lmKGgpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17
fTtmb3IoYyBpbiBoKWZvcihkPTAsZT1oW2NdLmxlbmd0aDtkPGU7ZCsrKXAuZXZlbnQuYWRkKGIs
YyxoW2NdW2RdKX1nLmRhdGEmJihnLmRhdGE9cC5leHRlbmQoe30sZy5kYXRhKSl9ZnVuY3Rpb24g
YkUoYSxiKXt2YXIgYztpZihiLm5vZGVUeXBlIT09MSlyZXR1cm47Yi5jbGVhckF0dHJpYnV0ZXMm
JmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVz
KGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGM9PT0ib2JqZWN0Ij8oYi5wYXJlbnROb2Rl
JiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLHAuc3VwcG9ydC5odG1sNUNsb25lJiZhLmlubmVy
SFRNTCYmIXAudHJpbShiLmlubmVySFRNTCkmJihiLmlubmVySFRNTD1hLmlubmVySFRNTCkpOmM9
PT0iaW5wdXQiJiZidi50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEu
Y2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOmM9PT0ib3B0aW9u
Ij9iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOmM9PT0iaW5wdXQifHxjPT09InRleHRhcmVh
Ij9iLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZTpjPT09InNjcmlwdCImJmIudGV4dCE9PWEu
dGV4dCYmKGIudGV4dD1hLnRleHQpLGIucmVtb3ZlQXR0cmlidXRlKHAuZXhwYW5kbyl9ZnVuY3Rp
b24gYkYoYSl7cmV0dXJuIHR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVk
Ij9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9
InVuZGVmaW5lZCI/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYkcoYSl7YnYu
dGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIGJZKGEs
Yil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5z
bGljZSgxKSxkPWIsZT1iVy5sZW5ndGg7d2hpbGUoZS0tKXtiPWJXW2VdK2M7aWYoYiBpbiBhKXJl
dHVybiBifXJldHVybiBkfWZ1bmN0aW9uIGJaKGEsYil7cmV0dXJuIGE9Ynx8YSxwLmNzcyhhLCJk
aXNwbGF5Iik9PT0ibm9uZSJ8fCFwLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX1mdW5jdGlv
biBiJChhLGIpe3ZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmb3IoO2Y8ZztmKyspe2M9YVtm
XTtpZighYy5zdHlsZSljb250aW51ZTtlW2ZdPXAuX2RhdGEoYywib2xkZGlzcGxheSIpLGI/KCFl
W2ZdJiZjLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSImJihjLnN0eWxlLmRpc3BsYXk9IiIpLGMuc3R5
bGUuZGlzcGxheT09PSIiJiZiWihjKSYmKGVbZl09cC5fZGF0YShjLCJvbGRkaXNwbGF5IixjYyhj
Lm5vZGVOYW1lKSkpKTooZD1iSChjLCJkaXNwbGF5IiksIWVbZl0mJmQhPT0ibm9uZSImJnAuX2Rh
dGEoYywib2xkZGlzcGxheSIsZCkpfWZvcihmPTA7ZjxnO2YrKyl7Yz1hW2ZdO2lmKCFjLnN0eWxl
KWNvbnRpbnVlO2lmKCFifHxjLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSJ8fGMuc3R5bGUuZGlzcGxh
eT09PSIiKWMuc3R5bGUuZGlzcGxheT1iP2VbZl18fCIiOiJub25lIn1yZXR1cm4gYX1mdW5jdGlv
biBiXyhhLGIsYyl7dmFyIGQ9YlAuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMV0tKGN8
fDApKSsoZFsyXXx8InB4Iik6Yn1mdW5jdGlvbiBjYShhLGIsYyxkKXt2YXIgZT1jPT09KGQ/ImJv
cmRlciI6ImNvbnRlbnQiKT80OmI9PT0id2lkdGgiPzE6MCxmPTA7Zm9yKDtlPDQ7ZSs9MiljPT09
Im1hcmdpbiImJihmKz1wLmNzcyhhLGMrYlZbZV0sITApKSxkPyhjPT09ImNvbnRlbnQiJiYoZi09
cGFyc2VGbG9hdChiSChhLCJwYWRkaW5nIitiVltlXSkpfHwwKSxjIT09Im1hcmdpbiImJihmLT1w
YXJzZUZsb2F0KGJIKGEsImJvcmRlciIrYlZbZV0rIldpZHRoIikpfHwwKSk6KGYrPXBhcnNlRmxv
YXQoYkgoYSwicGFkZGluZyIrYlZbZV0pKXx8MCxjIT09InBhZGRpbmciJiYoZis9cGFyc2VGbG9h
dChiSChhLCJib3JkZXIiK2JWW2VdKyJXaWR0aCIpKXx8MCkpO3JldHVybiBmfWZ1bmN0aW9uIGNi
KGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9
ITAsZj1wLnN1cHBvcnQuYm94U2l6aW5nJiZwLmNzcyhhLCJib3hTaXppbmciKT09PSJib3JkZXIt
Ym94IjtpZihkPD0wfHxkPT1udWxsKXtkPWJIKGEsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHls
ZVtiXTtpZihiUS50ZXN0KGQpKXJldHVybiBkO2U9ZiYmKHAuc3VwcG9ydC5ib3hTaXppbmdSZWxp
YWJsZXx8ZD09PWEuc3R5bGVbYl0pLGQ9cGFyc2VGbG9hdChkKXx8MH1yZXR1cm4gZCtjYShhLGIs
Y3x8KGY/ImJvcmRlciI6ImNvbnRlbnQiKSxlKSsicHgifWZ1bmN0aW9uIGNjKGEpe2lmKGJTW2Fd
KXJldHVybiBiU1thXTt2YXIgYj1wKCI8IithKyI+IikuYXBwZW5kVG8oZS5ib2R5KSxjPWIuY3Nz
KCJkaXNwbGF5Iik7Yi5yZW1vdmUoKTtpZihjPT09Im5vbmUifHxjPT09IiIpe2JJPWUuYm9keS5h
cHBlbmRDaGlsZChiSXx8cC5leHRlbmQoZS5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSx7ZnJhbWVC
b3JkZXI6MCx3aWR0aDowLGhlaWdodDowfSkpO2lmKCFiSnx8IWJJLmNyZWF0ZUVsZW1lbnQpYko9
KGJJLmNvbnRlbnRXaW5kb3d8fGJJLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsYkoud3JpdGUo
IjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpLGJKLmNsb3NlKCk7Yj1iSi5ib2R5LmFwcGVu
ZENoaWxkKGJKLmNyZWF0ZUVsZW1lbnQoYSkpLGM9YkgoYiwiZGlzcGxheSIpLGUuYm9keS5yZW1v
dmVDaGlsZChiSSl9cmV0dXJuIGJTW2FdPWMsY31mdW5jdGlvbiBjaShhLGIsYyxkKXt2YXIgZTtp
ZihwLmlzQXJyYXkoYikpcC5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxjZS50ZXN0KGEpP2QoYSxl
KTpjaShhKyJbIisodHlwZW9mIGU9PSJvYmplY3QiP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlm
KCFjJiZwLnR5cGUoYik9PT0ib2JqZWN0Iilmb3IoZSBpbiBiKWNpKGErIlsiK2UrIl0iLGJbZV0s
YyxkKTtlbHNlIGQoYSxiKX1mdW5jdGlvbiBjeihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXt0eXBl
b2YgYiE9InN0cmluZyImJihjPWIsYj0iKiIpO3ZhciBkLGUsZixnPWIudG9Mb3dlckNhc2UoKS5z
cGxpdChzKSxoPTAsaT1nLmxlbmd0aDtpZihwLmlzRnVuY3Rpb24oYykpZm9yKDtoPGk7aCsrKWQ9
Z1toXSxmPS9eXCsvLnRlc3QoZCksZiYmKGQ9ZC5zdWJzdHIoMSl8fCIqIiksZT1hW2RdPWFbZF18
fFtdLGVbZj8idW5zaGlmdCI6InB1c2giXShjKX19ZnVuY3Rpb24gY0EoYSxjLGQsZSxmLGcpe2Y9
Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoLGk9YVtmXSxqPTAsaz1pP2ku
bGVuZ3RoOjAsbD1hPT09Y3Y7Zm9yKDtqPGsmJihsfHwhaCk7aisrKWg9aVtqXShjLGQsZSksdHlw
ZW9mIGg9PSJzdHJpbmciJiYoIWx8fGdbaF0/aD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGgpLGg9
Y0EoYSxjLGQsZSxoLGcpKSk7cmV0dXJuKGx8fCFoKSYmIWdbIioiXSYmKGg9Y0EoYSxjLGQsZSwi
KiIsZykpLGh9ZnVuY3Rpb24gY0IoYSxjKXt2YXIgZCxlLGY9cC5hamF4U2V0dGluZ3MuZmxhdE9w
dGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZltkXT9hOmV8fChlPXt9KSlbZF09Y1tk
XSk7ZSYmcC5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBjQyhhLGMsZCl7dmFyIGUsZixnLGgsaT1h
LmNvbnRlbnRzLGo9YS5kYXRhVHlwZXMsaz1hLnJlc3BvbnNlRmllbGRzO2ZvcihmIGluIGspZiBp
biBkJiYoY1trW2ZdXT1kW2ZdKTt3aGlsZShqWzBdPT09IioiKWouc2hpZnQoKSxlPT09YiYmKGU9
YS5taW1lVHlwZXx8Yy5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIikpO2lmKGUpZm9y
KGYgaW4gaSlpZihpW2ZdJiZpW2ZdLnRlc3QoZSkpe2oudW5zaGlmdChmKTticmVha31pZihqWzBd
aW4gZClnPWpbMF07ZWxzZXtmb3IoZiBpbiBkKXtpZighalswXXx8YS5jb252ZXJ0ZXJzW2YrIiAi
K2pbMF1dKXtnPWY7YnJlYWt9aHx8KGg9Zil9Zz1nfHxofWlmKGcpcmV0dXJuIGchPT1qWzBdJiZq
LnVuc2hpZnQoZyksZFtnXX1mdW5jdGlvbiBjRChhLGIpe3ZhciBjLGQsZSxmLGc9YS5kYXRhVHlw
ZXMuc2xpY2UoKSxoPWdbMF0saT17fSxqPTA7YS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIo
YixhLmRhdGFUeXBlKSk7aWYoZ1sxXSlmb3IoYyBpbiBhLmNvbnZlcnRlcnMpaVtjLnRvTG93ZXJD
YXNlKCldPWEuY29udmVydGVyc1tjXTtmb3IoO2U9Z1srK2pdOylpZihlIT09IioiKXtpZihoIT09
IioiJiZoIT09ZSl7Yz1pW2grIiAiK2VdfHxpWyIqICIrZV07aWYoIWMpZm9yKGQgaW4gaSl7Zj1k
LnNwbGl0KCIgIik7aWYoZlsxXT09PWUpe2M9aVtoKyIgIitmWzBdXXx8aVsiKiAiK2ZbMF1dO2lm
KGMpe2M9PT0hMD9jPWlbZF06aVtkXSE9PSEwJiYoZT1mWzBdLGcuc3BsaWNlKGotLSwwLGUpKTti
cmVha319fWlmKGMhPT0hMClpZihjJiZhWyJ0aHJvd3MiXSliPWMoYik7ZWxzZSB0cnl7Yj1jKGIp
fWNhdGNoKGspe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmM/azoiTm8gY29udmVy
c2lvbiBmcm9tICIraCsiIHRvICIrZX19fWg9ZX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6
Yn19ZnVuY3Rpb24gY0woKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIp
e319ZnVuY3Rpb24gY00oKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29m
dC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjVSgpe3JldHVybiBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7Y049Yn0sMCksY049cC5ub3coKX1mdW5jdGlvbiBjVihhLGIpe3AuZWFjaChiLGZ1
bmN0aW9uKGIsYyl7dmFyIGQ9KGNUW2JdfHxbXSkuY29uY2F0KGNUWyIqIl0pLGU9MCxmPWQubGVu
Z3RoO2Zvcig7ZTxmO2UrKylpZihkW2VdLmNhbGwoYSxiLGMpKXJldHVybn0pfWZ1bmN0aW9uIGNX
KGEsYixjKXt2YXIgZCxlPTAsZj0wLGc9Y1MubGVuZ3RoLGg9cC5EZWZlcnJlZCgpLmFsd2F5cyhm
dW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7dmFyIGI9Y058fGNVKCksYz1N
YXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD0xLShjL2ouZHVyYXRpb258fDAp
LGU9MCxmPWoudHdlZW5zLmxlbmd0aDtmb3IoO2U8ZjtlKyspai50d2VlbnNbZV0ucnVuKGQpO3Jl
dHVybiBoLm5vdGlmeVdpdGgoYSxbaixkLGNdKSxkPDEmJmY/YzooaC5yZXNvbHZlV2l0aChhLFtq
XSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOnAuZXh0ZW5kKHt9LGIpLG9wdHM6cC5l
eHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdp
bmFsT3B0aW9uczpjLHN0YXJ0VGltZTpjTnx8Y1UoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVu
czpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMsZCl7dmFyIGU9cC5Ud2VlbihhLGoub3B0cyxi
LGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVu
cy5wdXNoKGUpLGV9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3Ro
OjA7Zm9yKDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRo
KGEsW2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztjWChrLGou
b3B0cy5zcGVjaWFsRWFzaW5nKTtmb3IoO2U8ZztlKyspe2Q9Y1NbZV0uY2FsbChqLGEsayxqLm9w
dHMpO2lmKGQpcmV0dXJuIGR9cmV0dXJuIGNWKGosaykscC5pc0Z1bmN0aW9uKGoub3B0cy5zdGFy
dCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaikscC5meC50aW1lcihwLmV4dGVuZChpLHthbmltOmos
cXVldWU6ai5vcHRzLnF1ZXVlLGVsZW06YX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcyku
ZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5
cyhqLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiBjWChhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4g
YSl7ZD1wLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLHAuaXNBcnJheShmKSYmKGU9ZlsxXSxm
PWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9cC5jc3NIb29rc1tkXTtp
ZihnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZilj
IGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX19ZnVuY3Rpb24gY1koYSxiLGMp
e3ZhciBkLGUsZixnLGgsaSxqLGssbD10aGlzLG09YS5zdHlsZSxuPXt9LG89W10scT1hLm5vZGVU
eXBlJiZiWihhKTtjLnF1ZXVlfHwoaj1wLl9xdWV1ZUhvb2tzKGEsImZ4Iiksai51bnF1ZXVlZD09
bnVsbCYmKGoudW5xdWV1ZWQ9MCxrPWouZW1wdHkuZmlyZSxqLmVtcHR5LmZpcmU9ZnVuY3Rpb24o
KXtqLnVucXVldWVkfHxrKCl9KSxqLnVucXVldWVkKyssbC5hbHdheXMoZnVuY3Rpb24oKXtsLmFs
d2F5cyhmdW5jdGlvbigpe2oudW5xdWV1ZWQtLSxwLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxqLmVt
cHR5LmZpcmUoKX0pfSkpLGEubm9kZVR5cGU9PT0xJiYoImhlaWdodCJpbiBifHwid2lkdGgiaW4g
YikmJihjLm92ZXJmbG93PVttLm92ZXJmbG93LG0ub3ZlcmZsb3dYLG0ub3ZlcmZsb3dZXSxwLmNz
cyhhLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmcC5jc3MoYSwiZmxvYXQiKT09PSJub25lIiYmKCFw
LnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dHx8Y2MoYS5ub2RlTmFtZSk9PT0iaW5saW5l
Ij9tLmRpc3BsYXk9ImlubGluZS1ibG9jayI6bS56b29tPTEpKSxjLm92ZXJmbG93JiYobS5vdmVy
Zmxvdz0iaGlkZGVuIixwLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2Nrc3x8bC5kb25lKGZ1bmN0aW9u
KCl7bS5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLG0ub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0sbS5v
dmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKXtmPWJbZF07aWYoY1AuZXhlYyhm
KSl7ZGVsZXRlIGJbZF07aWYoZj09PShxPyJoaWRlIjoic2hvdyIpKWNvbnRpbnVlO28ucHVzaChk
KX19Zz1vLmxlbmd0aDtpZihnKXtoPXAuX2RhdGEoYSwiZnhzaG93Iil8fHAuX2RhdGEoYSwiZnhz
aG93Iix7fSkscT9wKGEpLnNob3coKTpsLmRvbmUoZnVuY3Rpb24oKXtwKGEpLmhpZGUoKX0pLGwu
ZG9uZShmdW5jdGlvbigpe3ZhciBiO3AucmVtb3ZlRGF0YShhLCJmeHNob3ciLCEwKTtmb3IoYiBp
biBuKXAuc3R5bGUoYSxiLG5bYl0pfSk7Zm9yKGQ9MDtkPGc7ZCsrKWU9b1tkXSxpPWwuY3JlYXRl
VHdlZW4oZSxxP2hbZV06MCksbltlXT1oW2VdfHxwLnN0eWxlKGEsZSksZSBpbiBofHwoaFtlXT1p
LnN0YXJ0LHEmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9ZT09PSJ3aWR0aCJ8fGU9PT0iaGVpZ2h0
Ij8xOjApKX19ZnVuY3Rpb24gY1ooYSxiLGMsZCxlKXtyZXR1cm4gbmV3IGNaLnByb3RvdHlwZS5p
bml0KGEsYixjLGQsZSl9ZnVuY3Rpb24gYyQoYSxiKXt2YXIgYyxkPXtoZWlnaHQ6YX0sZT0wO2I9
Yj8xOjA7Zm9yKDtlPDQ7ZSs9Mi1iKWM9YlZbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitj
XT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBkYShhKXtyZXR1
cm4gcC5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50
V2luZG93OiExfXZhciBjLGQsZT1hLmRvY3VtZW50LGY9YS5sb2NhdGlvbixnPWEubmF2aWdhdG9y
LGg9YS5qUXVlcnksaT1hLiQsaj1BcnJheS5wcm90b3R5cGUucHVzaCxrPUFycmF5LnByb3RvdHlw
ZS5zbGljZSxsPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLG09T2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1TdHJpbmcucHJvdG90eXBl
LnRyaW0scD1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgcC5mbi5pbml0KGEsYixjKX0scT0vW1wt
K10/KD86XGQqXC58KVxkKyg/OltlRV1bXC0rXT9cZCt8KS8uc291cmNlLHI9L1xTLyxzPS9ccysv
LHQ9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLHU9L14oPzpbXiM8XSooPFtc
d1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLHY9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkk
Lyx3PS9eW1xdLDp7fVxzXSokLyx4PS8oPzpefDp8LCkoPzpccypcWykrL2cseT0vXFwoPzpbIlxc
XC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csej0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51
bGx8LT8oPzpcZFxkKlwufClcZCsoPzpbZUVdW1wtK10/XGQrfCkvZyxBPS9eLW1zLS8sQj0vLShb
XGRhLXpdKS9naSxDPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LEQ9
ZnVuY3Rpb24oKXtlLmFkZEV2ZW50TGlzdGVuZXI/KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsRCwhMSkscC5yZWFkeSgpKTplLnJlYWR5U3RhdGU9PT0iY29tcGxldGUi
JiYoZS5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixEKSxwLnJlYWR5KCkpfSxFPXt9
O3AuZm49cC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnAsaW5pdDpmdW5jdGlvbihhLGMsZCl7dmFy
IGYsZyxoLGk7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSlyZXR1cm4gdGhpcy5jb250
ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXM7aWYodHlwZW9mIGE9PSJzdHJpbmciKXth
LmNoYXJBdCgwKT09PSI8IiYmYS5jaGFyQXQoYS5sZW5ndGgtMSk9PT0iPiImJmEubGVuZ3RoPj0z
P2Y9W251bGwsYSxudWxsXTpmPXUuZXhlYyhhKTtpZihmJiYoZlsxXXx8IWMpKXtpZihmWzFdKXJl
dHVybiBjPWMgaW5zdGFuY2VvZiBwP2NbMF06YyxpPWMmJmMubm9kZVR5cGU/Yy5vd25lckRvY3Vt
ZW50fHxjOmUsYT1wLnBhcnNlSFRNTChmWzFdLGksITApLHYudGVzdChmWzFdKSYmcC5pc1BsYWlu
T2JqZWN0KGMpJiZ0aGlzLmF0dHIuY2FsbChhLGMsITApLHAubWVyZ2UodGhpcyxhKTtnPWUuZ2V0
RWxlbWVudEJ5SWQoZlsyXSk7aWYoZyYmZy5wYXJlbnROb2RlKXtpZihnLmlkIT09ZlsyXSlyZXR1
cm4gZC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1nfXJldHVybiB0aGlzLmNvbnRleHQ9
ZSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4hY3x8Yy5qcXVlcnk/KGN8fGQpLmZpbmQoYSk6
dGhpcy5jb25zdHJ1Y3RvcihjKS5maW5kKGEpfXJldHVybiBwLmlzRnVuY3Rpb24oYSk/ZC5yZWFk
eShhKTooYS5zZWxlY3RvciE9PWImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250
ZXh0PWEuY29udGV4dCkscC5tYWtlQXJyYXkoYSx0aGlzKSl9LHNlbGVjdG9yOiIiLGpxdWVyeToi
MS44LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJy
YXk6ZnVuY3Rpb24oKXtyZXR1cm4gay5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJu
IGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0s
cHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1wLm1lcmdlKHRoaXMuY29uc3RydWN0b3Io
KSxhKTtyZXR1cm4gZC5wcmV2T2JqZWN0PXRoaXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09
ImZpbmQiP2Quc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6
YiYmKGQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpLGR9LGVhY2g6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gcC5lYWNoKHRoaXMsYSxiKX0scmVhZHk6ZnVuY3Rpb24oYSl7cmV0
dXJuIHAucmVhZHkucHJvbWlzZSgpLmRvbmUoYSksdGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJu
IGE9K2EsYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLGErMSl9LGZpcnN0OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgt
MSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGsuYXBwbHkodGhpcyxh
cmd1bWVudHMpLCJzbGljZSIsay5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX0sbWFwOmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0
dXJuIGEuY2FsbChiLGMsYil9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmpl
Y3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6aixzb3J0OltdLnNvcnQsc3BsaWNlOltd
LnNwbGljZX0scC5mbi5pbml0LnByb3RvdHlwZT1wLmZuLHAuZXh0ZW5kPXAuZm4uZXh0ZW5kPWZ1
bmN0aW9uKCl7dmFyIGEsYyxkLGUsZixnLGg9YXJndW1lbnRzWzBdfHx7fSxpPTEsaj1hcmd1bWVu
dHMubGVuZ3RoLGs9ITE7dHlwZW9mIGg9PSJib29sZWFuIiYmKGs9aCxoPWFyZ3VtZW50c1sxXXx8
e30saT0yKSx0eXBlb2YgaCE9Im9iamVjdCImJiFwLmlzRnVuY3Rpb24oaCkmJihoPXt9KSxqPT09
aSYmKGg9dGhpcywtLWkpO2Zvcig7aTxqO2krKylpZigoYT1hcmd1bWVudHNbaV0pIT1udWxsKWZv
cihjIGluIGEpe2Q9aFtjXSxlPWFbY107aWYoaD09PWUpY29udGludWU7ayYmZSYmKHAuaXNQbGFp
bk9iamVjdChlKXx8KGY9cC5pc0FycmF5KGUpKSk/KGY/KGY9ITEsZz1kJiZwLmlzQXJyYXkoZCk/
ZDpbXSk6Zz1kJiZwLmlzUGxhaW5PYmplY3QoZCk/ZDp7fSxoW2NdPXAuZXh0ZW5kKGssZyxlKSk6
ZSE9PWImJihoW2NdPWUpfXJldHVybiBofSxwLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihi
KXtyZXR1cm4gYS4kPT09cCYmKGEuJD1pKSxiJiZhLmpRdWVyeT09PXAmJihhLmpRdWVyeT1oKSxw
fSxpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP3AucmVhZHlX
YWl0Kys6cC5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8tLXAucmVhZHlX
YWl0OnAuaXNSZWFkeSlyZXR1cm47aWYoIWUuYm9keSlyZXR1cm4gc2V0VGltZW91dChwLnJlYWR5
LDEpO3AuaXNSZWFkeT0hMDtpZihhIT09ITAmJi0tcC5yZWFkeVdhaXQ+MClyZXR1cm47ZC5yZXNv
bHZlV2l0aChlLFtwXSkscC5mbi50cmlnZ2VyJiZwKGUpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJy
ZWFkeSIpfSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBwLnR5cGUoYSk9PT0iZnVuY3Rp
b24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBwLnR5cGUoYSk9
PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbCYmYT09YS53aW5k
b3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChhKSkmJmlz
RmluaXRlKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpFW20u
Y2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxwLnR5
cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8cC5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7
aWYoYS5jb25zdHJ1Y3RvciYmIW4uY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhbi5jYWxsKGEuY29u
c3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0
dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxuLmNhbGwoYSxkKX0saXNFbXB0
eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxl
cnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LHBhcnNlSFRNTDpmdW5jdGlvbihh
LGIsYyl7dmFyIGQ7cmV0dXJuIWF8fHR5cGVvZiBhIT0ic3RyaW5nIj9udWxsOih0eXBlb2YgYj09
ImJvb2xlYW4iJiYoYz1iLGI9MCksYj1ifHxlLChkPXYuZXhlYyhhKSk/W2IuY3JlYXRlRWxlbWVu
dChkWzFdKV06KGQ9cC5idWlsZEZyYWdtZW50KFthXSxiLGM/bnVsbDpbXSkscC5tZXJnZShbXSwo
ZC5jYWNoZWFibGU/cC5jbG9uZShkLmZyYWdtZW50KTpkLmZyYWdtZW50KS5jaGlsZE5vZGVzKSkp
fSxwYXJzZUpTT046ZnVuY3Rpb24oYil7aWYoIWJ8fHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4g
bnVsbDtiPXAudHJpbShiKTtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBh
cnNlKGIpO2lmKHcudGVzdChiLnJlcGxhY2UoeSwiQCIpLnJlcGxhY2UoeiwiXSIpLnJlcGxhY2Uo
eCwiIikpKXJldHVybihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO3AuZXJyb3IoIkludmFs
aWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYyl7dmFyIGQsZTtpZighY3x8dHlwZW9m
IGMhPSJzdHJpbmciKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZT1uZXcgRE9NUGFyc2Vy
LGQ9ZS5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSk6KGQ9bmV3IEFjdGl2ZVhPYmplY3Qo
Ik1pY3Jvc29mdC5YTUxET00iKSxkLmFzeW5jPSJmYWxzZSIsZC5sb2FkWE1MKGMpKX1jYXRjaChm
KXtkPWJ9cmV0dXJuKCFkfHwhZC5kb2N1bWVudEVsZW1lbnR8fGQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmcC5lcnJvcigiSW52YWxpZCBYTUw6ICIrYyksZH0s
bm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZyLnRlc3QoYikmJihh
LmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNl
OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoQSwibXMtIikucmVwbGFjZShCLEMpfSxub2Rl
TmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9MCxn
PWEubGVuZ3RoLGg9Zz09PWJ8fHAuaXNGdW5jdGlvbihhKTtpZihkKXtpZihoKXtmb3IoZSBpbiBh
KWlmKGMuYXBwbHkoYVtlXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtmPGc7KWlmKGMuYXBwbHko
YVtmKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihoKXtmb3IoZSBpbiBhKWlmKGMuY2FsbChhW2Vd
LGUsYVtlXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZjxnOylpZihjLmNhbGwoYVtmXSxmLGFbZisr
XSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpvJiYhby5jYWxsKCLvu7/CoCIpP2Z1bmN0aW9u
KGEpe3JldHVybiBhPT1udWxsPyIiOm8uY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51
bGw/IiI6KGErIiIpLnJlcGxhY2UodCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBj
LGQ9Ynx8W107cmV0dXJuIGEhPW51bGwmJihjPXAudHlwZShhKSxhLmxlbmd0aD09bnVsbHx8Yz09
PSJzdHJpbmcifHxjPT09ImZ1bmN0aW9uInx8Yz09PSJyZWdleHAifHxwLmlzV2luZG93KGEpP2ou
Y2FsbChkLGEpOnAubWVyZ2UoZCxhKSksZH0saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7
aWYoYil7aWYobClyZXR1cm4gbC5jYWxsKGIsYSxjKTtkPWIubGVuZ3RoLGM9Yz9jPDA/TWF0aC5t
YXgoMCxkK2MpOmM6MDtmb3IoO2M8ZDtjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31y
ZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1jLmxlbmd0aCxlPWEubGVuZ3RoLGY9
MDtpZih0eXBlb2YgZD09Im51bWJlciIpZm9yKDtmPGQ7ZisrKWFbZSsrXT1jW2ZdO2Vsc2Ugd2hp
bGUoY1tmXSE9PWIpYVtlKytdPWNbZisrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0
aW9uKGEsYixjKXt2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoO2M9ISFjO2Zvcig7ZjxnO2YrKylk
PSEhYihhW2ZdLGYpLGMhPT1kJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihh
LGMsZCl7dmFyIGUsZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9YSBpbnN0YW5jZW9mIHB8fGkhPT1i
JiZ0eXBlb2YgaT09Im51bWJlciImJihpPjAmJmFbMF0mJmFbaS0xXXx8aT09PTB8fHAuaXNBcnJh
eShhKSk7aWYoailmb3IoO2g8aTtoKyspZT1jKGFbaF0saCxkKSxlIT1udWxsJiYoZ1tnLmxlbmd0
aF09ZSk7ZWxzZSBmb3IoZiBpbiBhKWU9YyhhW2ZdLGYsZCksZSE9bnVsbCYmKGdbZy5sZW5ndGhd
PWUpO3JldHVybiBnLmNvbmNhdC5hcHBseShbXSxnKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEs
Yyl7dmFyIGQsZSxmO3JldHVybiB0eXBlb2YgYz09InN0cmluZyImJihkPWFbY10sYz1hLGE9ZCks
cC5pc0Z1bmN0aW9uKGEpPyhlPWsuY2FsbChhcmd1bWVudHMsMiksZj1mdW5jdGlvbigpe3JldHVy
biBhLmFwcGx5KGMsZS5jb25jYXQoay5jYWxsKGFyZ3VtZW50cykpKX0sZi5ndWlkPWEuZ3VpZD1h
Lmd1aWR8fHAuZ3VpZCsrLGYpOmJ9LGFjY2VzczpmdW5jdGlvbihhLGMsZCxlLGYsZyxoKXt2YXIg
aSxqPWQ9PW51bGwsaz0wLGw9YS5sZW5ndGg7aWYoZCYmdHlwZW9mIGQ9PSJvYmplY3QiKXtmb3Io
ayBpbiBkKXAuYWNjZXNzKGEsYyxrLGRba10sMSxnLGUpO2Y9MX1lbHNlIGlmKGUhPT1iKXtpPWg9
PT1iJiZwLmlzRnVuY3Rpb24oZSksaiYmKGk/KGk9YyxjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4g
aS5jYWxsKHAoYSksYyl9KTooYy5jYWxsKGEsZSksYz1udWxsKSk7aWYoYylmb3IoO2s8bDtrKysp
YyhhW2tdLGQsaT9lLmNhbGwoYVtrXSxrLGMoYVtrXSxkKSk6ZSxoKTtmPTF9cmV0dXJuIGY/YTpq
P2MuY2FsbChhKTpsP2MoYVswXSxkKTpnfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUp
LmdldFRpbWUoKX19KSxwLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7aWYoIWQpe2Q9cC5EZWZl
cnJlZCgpO2lmKGUucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpc2V0VGltZW91dChwLnJlYWR5LDEp
O2Vsc2UgaWYoZS5hZGRFdmVudExpc3RlbmVyKWUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsRCwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixwLnJlYWR5LCExKTtlbHNl
e2UuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsRCksYS5hdHRhY2hFdmVudCgib25s
b2FkIixwLnJlYWR5KTt2YXIgYz0hMTt0cnl7Yz1hLmZyYW1lRWxlbWVudD09bnVsbCYmZS5kb2N1
bWVudEVsZW1lbnR9Y2F0Y2goZil7fWMmJmMuZG9TY3JvbGwmJmZ1bmN0aW9uIGcoKXtpZighcC5p
c1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0
KGcsNTApfXAucmVhZHkoKX19KCl9fXJldHVybiBkLnByb21pc2UoYil9LHAuZWFjaCgiQm9vbGVh
biBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQo
IiAiKSxmdW5jdGlvbihhLGIpe0VbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSks
Yz1wKGUpO3ZhciBGPXt9O3AuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9dHlwZW9mIGE9PSJzdHJp
bmciP0ZbYV18fEcoYSk6cC5leHRlbmQoe30sYSk7dmFyIGMsZCxlLGYsZyxoLGk9W10saj0hYS5v
bmNlJiZbXSxrPWZ1bmN0aW9uKGIpe2M9YS5tZW1vcnkmJmIsZD0hMCxoPWZ8fDAsZj0wLGc9aS5s
ZW5ndGgsZT0hMDtmb3IoO2kmJmg8ZztoKyspaWYoaVtoXS5hcHBseShiWzBdLGJbMV0pPT09ITEm
JmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9ZT0hMSxpJiYoaj9qLmxlbmd0aCYmayhqLnNoaWZ0
KCkpOmM/aT1bXTpsLmRpc2FibGUoKSl9LGw9e2FkZDpmdW5jdGlvbigpe2lmKGkpe3ZhciBiPWku
bGVuZ3RoOyhmdW5jdGlvbiBkKGIpe3AuZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGU9cC50eXBl
KGMpO2U9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhbC5oYXMoYykpP2kucHVzaChjKTpjJiZj
Lmxlbmd0aCYmZSE9PSJzdHJpbmciJiZkKGMpfSl9KShhcmd1bWVudHMpLGU/Zz1pLmxlbmd0aDpj
JiYoZj1iLGsoYykpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gaSYmcC5l
YWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGIpe3ZhciBjO3doaWxlKChjPXAuaW5BcnJheShiLGks
YykpPi0xKWkuc3BsaWNlKGMsMSksZSYmKGM8PWcmJmctLSxjPD1oJiZoLS0pfSksdGhpc30saGFz
OmZ1bmN0aW9uKGEpe3JldHVybiBwLmluQXJyYXkoYSxpKT4tMX0sZW1wdHk6ZnVuY3Rpb24oKXty
ZXR1cm4gaT1bXSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9aj1jPWIsdGhpc30s
ZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sbG9jazpmdW5jdGlvbigpe3JldHVybiBqPWIs
Y3x8bC5kaXNhYmxlKCksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWp9LGZpcmVXaXRo
OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxp
JiYoIWR8fGopJiYoZT9qLnB1c2goYik6ayhiKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVy
biBsLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVy
biEhZH19O3JldHVybiBsfSxwLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1si
cmVzb2x2ZSIsImRvbmUiLHAuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsi
cmVqZWN0IiwiZmFpbCIscC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJu
b3RpZnkiLCJwcm9ncmVzcyIscC5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17
c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9u
ZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9
YXJndW1lbnRzO3JldHVybiBwLkRlZmVycmVkKGZ1bmN0aW9uKGMpe3AuZWFjaChiLGZ1bmN0aW9u
KGIsZCl7dmFyIGY9ZFswXSxnPWFbYl07ZVtkWzFdXShwLmlzRnVuY3Rpb24oZyk/ZnVuY3Rpb24o
KXt2YXIgYT1nLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZwLmlzRnVuY3Rpb24oYS5wcm9taXNl
KT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5u
b3RpZnkpOmNbZisiV2l0aCJdKHRoaXM9PT1lP2M6dGhpcyxbYV0pfTpjW2ZdKX0pLGE9bnVsbH0p
LnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbD9wLmV4dGVuZChh
LGQpOmR9fSxlPXt9O3JldHVybiBkLnBpcGU9ZC50aGVuLHAuZWFjaChiLGZ1bmN0aW9uKGEsZil7
dmFyIGc9ZlsyXSxoPWZbM107ZFtmWzFdXT1nLmFkZCxoJiZnLmFkZChmdW5jdGlvbigpe2M9aH0s
YlthXjFdWzJdLmRpc2FibGUsYlsyXVsyXS5sb2NrKSxlW2ZbMF1dPWcuZmlyZSxlW2ZbMF0rIldp
dGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVu
Y3Rpb24oYSl7dmFyIGI9MCxjPWsuY2FsbChhcmd1bWVudHMpLGQ9Yy5sZW5ndGgsZT1kIT09MXx8
YSYmcC5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZDowLGY9ZT09PTE/YTpwLkRlZmVycmVkKCksZz1m
dW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50
cy5sZW5ndGg+MT9rLmNhbGwoYXJndW1lbnRzKTpkLGM9PT1oP2Yubm90aWZ5V2l0aChiLGMpOi0t
ZXx8Zi5yZXNvbHZlV2l0aChiLGMpfX0saCxpLGo7aWYoZD4xKXtoPW5ldyBBcnJheShkKSxpPW5l
dyBBcnJheShkKSxqPW5ldyBBcnJheShkKTtmb3IoO2I8ZDtiKyspY1tiXSYmcC5pc0Z1bmN0aW9u
KGNbYl0ucHJvbWlzZSk/Y1tiXS5wcm9taXNlKCkuZG9uZShnKGIsaixjKSkuZmFpbChmLnJlamVj
dCkucHJvZ3Jlc3MoZyhiLGksaCkpOi0tZX1yZXR1cm4gZXx8Zi5yZXNvbHZlV2l0aChqLGMpLGYu
cHJvbWlzZSgpfX0pLHAuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBiLGMsZCxmLGcsaCxpLGosayxs
LG0sbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0
Iiksbi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9h
PjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsYz1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiks
ZD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sZC5zdHlsZS5jc3NUZXh0PSJ0b3A6MXB4
O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNSI7aWYoIWN8fCFjLmxlbmd0aClyZXR1cm57fTtmPWUuY3Jl
YXRlRWxlbWVudCgic2VsZWN0IiksZz1mLmFwcGVuZENoaWxkKGUuY3JlYXRlRWxlbWVudCgib3B0
aW9uIikpLGg9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxiPXtsZWFkaW5nV2hp
dGVzcGFjZTpuLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFuLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhbi5nZXRFbGVtZW50c0J5VGFn
TmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGQuZ2V0QXR0cmlidXRlKCJzdHls
ZSIpKSxocmVmTm9ybWFsaXplZDpkLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5
Oi9eMC41Ly50ZXN0KGQuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFkLnN0eWxlLmNzc0Zsb2F0
LGNoZWNrT246aC52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6Zy5zZWxlY3RlZCxnZXRTZXRBdHRy
aWJ1dGU6bi5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWUuY3JlYXRlRWxlbWVudCgiZm9ybSIp
LmVuY3R5cGUsaHRtbDVDbG9uZTplLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCku
b3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLGJveE1vZGVsOmUuY29tcGF0TW9kZT09PSJDU1Mx
Q29tcGF0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6
ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91
dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5n
UmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0saC5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNr
ZWQ9aC5jbG9uZU5vZGUoITApLmNoZWNrZWQsZi5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFn
LmRpc2FibGVkO3RyeXtkZWxldGUgbi50ZXN0fWNhdGNoKG8pe2IuZGVsZXRlRXhwYW5kbz0hMX0h
bi5hZGRFdmVudExpc3RlbmVyJiZuLmF0dGFjaEV2ZW50JiZuLmZpcmVFdmVudCYmKG4uYXR0YWNo
RXZlbnQoIm9uY2xpY2siLG09ZnVuY3Rpb24oKXtiLm5vQ2xvbmVFdmVudD0hMX0pLG4uY2xvbmVO
b2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSxuLmRldGFjaEV2ZW50KCJvbmNsaWNrIixtKSks
aD1lLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaC52YWx1ZT0idCIsaC5zZXRBdHRyaWJ1dGUoInR5
cGUiLCJyYWRpbyIpLGIucmFkaW9WYWx1ZT1oLnZhbHVlPT09InQiLGguc2V0QXR0cmlidXRlKCJj
aGVja2VkIiwiY2hlY2tlZCIpLGguc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLG4uYXBwZW5kQ2hp
bGQoaCksaT1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxpLmFwcGVuZENoaWxkKG4ubGFzdENo
aWxkKSxiLmNoZWNrQ2xvbmU9aS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxk
LmNoZWNrZWQsYi5hcHBlbmRDaGVja2VkPWguY2hlY2tlZCxpLnJlbW92ZUNoaWxkKGgpLGkuYXBw
ZW5kQ2hpbGQobik7aWYobi5hdHRhY2hFdmVudClmb3IoayBpbntzdWJtaXQ6ITAsY2hhbmdlOiEw
LGZvY3VzaW46ITB9KWo9Im9uIitrLGw9aiBpbiBuLGx8fChuLnNldEF0dHJpYnV0ZShqLCJyZXR1
cm47IiksbD10eXBlb2YgbltqXT09ImZ1bmN0aW9uIiksYltrKyJCdWJibGVzIl09bDtyZXR1cm4g
cChmdW5jdGlvbigpe3ZhciBjLGQsZixnLGg9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtk
aXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsiLGk9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdO2lmKCFpKXJldHVybjtjPWUuY3JlYXRlRWxlbWVudCgiZGl2IiksYy5zdHlsZS5j
c3NUZXh0PSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0
aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOjFweCIsaS5pbnNlcnRCZWZvcmUoYyxpLmZpcnN0
Q2hpbGQpLGQ9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLmFwcGVuZENoaWxkKGQpLGQuaW5uZXJI
VE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixmPWQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRkIiksZlswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFy
Z2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixsPWZbMF0ub2Zmc2V0SGVpZ2h0PT09MCxmWzBd
LnN0eWxlLmRpc3BsYXk9IiIsZlsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixiLnJlbGlhYmxlSGlk
ZGVuT2Zmc2V0cz1sJiZmWzBdLm9mZnNldEhlaWdodD09PTAsZC5pbm5lckhUTUw9IiIsZC5zdHls
ZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1i
b3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtk
aXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3Rv
cDoxJTsiLGIuYm94U2l6aW5nPWQub2Zmc2V0V2lkdGg9PT00LGIuZG9lc05vdEluY2x1ZGVNYXJn
aW5JbkJvZHlPZmZzZXQ9aS5vZmZzZXRUb3AhPT0xLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGIucGl4
ZWxQb3NpdGlvbj0oYS5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt9KS50b3AhPT0iMSUiLGIu
Ym94U2l6aW5nUmVsaWFibGU9KGEuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpfHx7d2lkdGg6IjRw
eCJ9KS53aWR0aD09PSI0cHgiLGc9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxnLnN0eWxlLmNzc1Rl
eHQ9ZC5zdHlsZS5jc3NUZXh0PWgsZy5zdHlsZS5tYXJnaW5SaWdodD1nLnN0eWxlLndpZHRoPSIw
IixkLnN0eWxlLndpZHRoPSIxcHgiLGQuYXBwZW5kQ2hpbGQoZyksYi5yZWxpYWJsZU1hcmdpblJp
Z2h0PSFwYXJzZUZsb2F0KChhLmdldENvbXB1dGVkU3R5bGUoZyxudWxsKXx8e30pLm1hcmdpblJp
Z2h0KSksdHlwZW9mIGQuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihkLmlubmVySFRNTD0iIixk
LnN0eWxlLmNzc1RleHQ9aCsid2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pv
b206MSIsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWQub2Zmc2V0V2lkdGg9PT0zLGQuc3R5bGUu
ZGlzcGxheT0iYmxvY2siLGQuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLGQuaW5uZXJIVE1MPSI8
ZGl2PjwvZGl2PiIsZC5maXJzdENoaWxkLnN0eWxlLndpZHRoPSI1cHgiLGIuc2hyaW5rV3JhcEJs
b2Nrcz1kLm9mZnNldFdpZHRoIT09MyxjLnN0eWxlLnpvb209MSksaS5yZW1vdmVDaGlsZChjKSxj
PWQ9Zj1nPW51bGx9KSxpLnJlbW92ZUNoaWxkKG4pLGM9ZD1mPWc9aD1pPW49bnVsbCxifSgpO3Zh
ciBIPS8oPzpce1tcc1xTXSpcfXxcW1tcc1xTXSpcXSkkLyxJPS8oW0EtWl0pL2c7cC5leHRlbmQo
e2NhY2hlOnt9LGRlbGV0ZWRJZHM6W10sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKHAuZm4uanF1
ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2Jq
ZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDoh
MH0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP3AuY2FjaGVbYVtwLmV4
cGFuZG9dXTphW3AuZXhwYW5kb10sISFhJiYhSyhhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtp
ZighcC5hY2NlcHREYXRhKGEpKXJldHVybjt2YXIgZixnLGg9cC5leHBhbmRvLGk9dHlwZW9mIGM9
PSJzdHJpbmciLGo9YS5ub2RlVHlwZSxrPWo/cC5jYWNoZTphLGw9aj9hW2hdOmFbaF0mJmg7aWYo
KCFsfHwha1tsXXx8IWUmJiFrW2xdLmRhdGEpJiZpJiZkPT09YilyZXR1cm47bHx8KGo/YVtoXT1s
PXAuZGVsZXRlZElkcy5wb3AoKXx8cC5ndWlkKys6bD1oKSxrW2xdfHwoa1tsXT17fSxqfHwoa1ts
XS50b0pTT049cC5ub29wKSk7aWYodHlwZW9mIGM9PSJvYmplY3QifHx0eXBlb2YgYz09ImZ1bmN0
aW9uIillP2tbbF09cC5leHRlbmQoa1tsXSxjKTprW2xdLmRhdGE9cC5leHRlbmQoa1tsXS5kYXRh
LGMpO3JldHVybiBmPWtbbF0sZXx8KGYuZGF0YXx8KGYuZGF0YT17fSksZj1mLmRhdGEpLGQhPT1i
JiYoZltwLmNhbWVsQ2FzZShjKV09ZCksaT8oZz1mW2NdLGc9PW51bGwmJihnPWZbcC5jYW1lbENh
c2UoYyldKSk6Zz1mLGd9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiLGMpe2lmKCFwLmFjY2VwdERh
dGEoYSkpcmV0dXJuO3ZhciBkLGUsZixnPWEubm9kZVR5cGUsaD1nP3AuY2FjaGU6YSxpPWc/YVtw
LmV4cGFuZG9dOnAuZXhwYW5kbztpZighaFtpXSlyZXR1cm47aWYoYil7ZD1jP2hbaV06aFtpXS5k
YXRhO2lmKGQpe3AuaXNBcnJheShiKXx8KGIgaW4gZD9iPVtiXTooYj1wLmNhbWVsQ2FzZShiKSxi
IGluIGQ/Yj1bYl06Yj1iLnNwbGl0KCIgIikpKTtmb3IoZT0wLGY9Yi5sZW5ndGg7ZTxmO2UrKylk
ZWxldGUgZFtiW2VdXTtpZighKGM/SzpwLmlzRW1wdHlPYmplY3QpKGQpKXJldHVybn19aWYoIWMp
e2RlbGV0ZSBoW2ldLmRhdGE7aWYoIUsoaFtpXSkpcmV0dXJufWc/cC5jbGVhbkRhdGEoW2FdLCEw
KTpwLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8aCE9aC53aW5kb3c/ZGVsZXRlIGhbaV06aFtpXT1u
dWxsfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGF0YShhLGIsYywhMCl9LGFjY2Vw
dERhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZSYmcC5ub0RhdGFbYS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpXTtyZXR1cm4hYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIp
PT09Yn19KSxwLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZixnLGgsaT10
aGlzWzBdLGo9MCxrPW51bGw7aWYoYT09PWIpe2lmKHRoaXMubGVuZ3RoKXtrPXAuZGF0YShpKTtp
ZihpLm5vZGVUeXBlPT09MSYmIXAuX2RhdGEoaSwicGFyc2VkQXR0cnMiKSl7Zj1pLmF0dHJpYnV0
ZXM7Zm9yKGg9Zi5sZW5ndGg7ajxoO2orKylnPWZbal0ubmFtZSxnLmluZGV4T2YoImRhdGEtIil8
fChnPXAuY2FtZWxDYXNlKGcuc3Vic3RyaW5nKDUpKSxKKGksZyxrW2ddKSk7cC5fZGF0YShpLCJw
YXJzZWRBdHRycyIsITApfX1yZXR1cm4ga31yZXR1cm4gdHlwZW9mIGE9PSJvYmplY3QiP3RoaXMu
ZWFjaChmdW5jdGlvbigpe3AuZGF0YSh0aGlzLGEpfSk6KGQ9YS5zcGxpdCgiLiIsMiksZFsxXT1k
WzFdPyIuIitkWzFdOiIiLGU9ZFsxXSsiISIscC5hY2Nlc3ModGhpcyxmdW5jdGlvbihjKXtpZihj
PT09YilyZXR1cm4gaz10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitlLFtkWzBdXSksaz09
PWImJmkmJihrPXAuZGF0YShpLGEpLGs9SihpLGEsaykpLGs9PT1iJiZkWzFdP3RoaXMuZGF0YShk
WzBdKTprO2RbMV09Yyx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1wKHRoaXMpO2IudHJpZ2dl
ckhhbmRsZXIoInNldERhdGEiK2UsZCkscC5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVy
KCJjaGFuZ2VEYXRhIitlLGQpfSl9LG51bGwsYyxhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMSkp
fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtwLnJl
bW92ZURhdGEodGhpcyxhKX0pfX0pLHAuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFy
IGQ7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixkPXAuX2RhdGEoYSxiKSxjJiYoIWR8
fHAuaXNBcnJheShjKT9kPXAuX2RhdGEoYSxiLHAubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8
fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPXAucXVldWUoYSxiKSxk
PWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9cC5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtw
LmRlcXVldWUoYSxiKX07ZT09PSJpbnByb2dyZXNzIiYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKGI9
PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcs
ZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIg
Yz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gcC5fZGF0YShhLGMpfHxwLl9kYXRhKGEsYyx7ZW1wdHk6
cC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7cC5yZW1vdmVEYXRhKGEs
YisicXVldWUiLCEwKSxwLnJlbW92ZURhdGEoYSxjLCEwKX0pfSl9fSkscC5mbi5leHRlbmQoe3F1
ZXVlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9MjtyZXR1cm4gdHlwZW9mIGEhPSJzdHJpbmciJiYoYz1h
LGE9ImZ4IixkLS0pLGFyZ3VtZW50cy5sZW5ndGg8ZD9wLnF1ZXVlKHRoaXNbMF0sYSk6Yz09PWI/
dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1wLnF1ZXVlKHRoaXMsYSxjKTtwLl9xdWV1
ZUhvb2tzKHRoaXMsYSksYT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJnAuZGVxdWV1ZSh0
aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp
e3AuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9cC5meD9w
LmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2
YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0p
fSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxw
cm9taXNlOmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT0xLGY9cC5EZWZlcnJlZCgpLGc9dGhpcyxoPXRo
aXMubGVuZ3RoLGk9ZnVuY3Rpb24oKXstLWV8fGYucmVzb2x2ZVdpdGgoZyxbZ10pfTt0eXBlb2Yg
YSE9InN0cmluZyImJihjPWEsYT1iKSxhPWF8fCJmeCI7d2hpbGUoaC0tKWQ9cC5fZGF0YShnW2hd
LGErInF1ZXVlSG9va3MiKSxkJiZkLmVtcHR5JiYoZSsrLGQuZW1wdHkuYWRkKGkpKTtyZXR1cm4g
aSgpLGYucHJvbWlzZShjKX19KTt2YXIgTCxNLE4sTz0vW1x0XHJcbl0vZyxQPS9cci9nLFE9L14o
PzpidXR0b258aW5wdXQpJC9pLFI9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0
YXJlYSkkL2ksUz0vXmEoPzpyZWF8KSQvaSxUPS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5j
fGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3Bl
bnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLFU9cC5zdXBwb3J0LmdldFNl
dEF0dHJpYnV0ZTtwLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBwLmFjY2Vz
cyh0aGlzLHAuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlv
bihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7cC5yZW1vdmVBdHRyKHRoaXMsYSl9KX0s
cHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBwLmFjY2Vzcyh0aGlzLHAucHJvcCxhLGIsYXJndW1l
bnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1wLnByb3BGaXhb
YV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09YixkZWxldGUgdGhpc1thXX1j
YXRjaChjKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKHAu
aXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3AodGhpcykuYWRkQ2xh
c3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJp
bmciKXtiPWEuc3BsaXQocyk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2U9dGhpc1tj
XTtpZihlLm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUmJmIubGVuZ3RoPT09MSllLmNsYXNz
TmFtZT1hO2Vsc2V7Zj0iICIrZS5jbGFzc05hbWUrIiAiO2ZvcihnPTAsaD1iLmxlbmd0aDtnPGg7
ZysrKWYuaW5kZXhPZigiICIrYltnXSsiICIpPDAmJihmKz1iW2ddKyIgIik7ZS5jbGFzc05hbWU9
cC50cmltKGYpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQs
ZSxmLGcsaCxpO2lmKHAuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIp
e3AodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYo
YSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHMpO2ZvcihoPTAs
aT10aGlzLmxlbmd0aDtoPGk7aCsrKXtlPXRoaXNbaF07aWYoZS5ub2RlVHlwZT09PTEmJmUuY2xh
c3NOYW1lKXtkPSgiICIrZS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKE8sIiAiKTtmb3IoZj0wLGc9
Yy5sZW5ndGg7ZjxnO2YrKyl3aGlsZShkLmluZGV4T2YoIiAiK2NbZl0rIiAiKT49MClkPWQucmVw
bGFjZSgiICIrY1tmXSsiICIsIiAiKTtlLmNsYXNzTmFtZT1hP3AudHJpbShkKToiIn19fXJldHVy
biB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGQ9dHlwZW9m
IGI9PSJib29sZWFuIjtyZXR1cm4gcC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihj
KXtwKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9
KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGY9MCxnPXAodGhp
cyksaD1iLGk9YS5zcGxpdChzKTt3aGlsZShlPWlbZisrXSloPWQ/aDohZy5oYXNDbGFzcyhlKSxn
W2g/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8
Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmcC5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9f
Iix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8i
IjpwLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24o
YSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlz
W2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoTywi
ICIpLmluZGV4T2YoYik+PTApcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIg
YyxkLGUsZj10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihmKXJldHVybiBjPXAudmFs
SG9va3NbZi50eXBlXXx8cC52YWxIb29rc1tmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGMmJiJn
ZXQiaW4gYyYmKGQ9Yy5nZXQoZiwidmFsdWUiKSkhPT1iP2Q6KGQ9Zi52YWx1ZSx0eXBlb2YgZD09
InN0cmluZyI/ZC5yZXBsYWNlKFAsIiIpOmQ9PW51bGw/IiI6ZCk7cmV0dXJufXJldHVybiBlPXAu
aXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oZCl7dmFyIGYsZz1wKHRoaXMpO2lmKHRo
aXMubm9kZVR5cGUhPT0xKXJldHVybjtlP2Y9YS5jYWxsKHRoaXMsZCxnLnZhbCgpKTpmPWEsZj09
bnVsbD9mPSIiOnR5cGVvZiBmPT0ibnVtYmVyIj9mKz0iIjpwLmlzQXJyYXkoZikmJihmPXAubWFw
KGYsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6YSsiIn0pKSxjPXAudmFsSG9va3NbdGhp
cy50eXBlXXx8cC52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKCFjfHwh
KCJzZXQiaW4gYyl8fGMuc2V0KHRoaXMsZiwidmFsdWUiKT09PWIpdGhpcy52YWx1ZT1mfSl9fSks
cC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJp
YnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0
OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj1hLnNlbGVjdGVkSW5kZXgsZz1bXSxoPWEu
b3B0aW9ucyxpPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihmPDApcmV0dXJuIG51bGw7Yz1pP2Y6
MCxkPWk/ZisxOmgubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1oW2NdO2lmKGUuc2VsZWN0ZWQmJihw
LnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVk
Iik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFwLm5vZGVOYW1lKGUucGFyZW50
Tm9kZSwib3B0Z3JvdXAiKSkpe2I9cChlKS52YWwoKTtpZihpKXJldHVybiBiO2cucHVzaChiKX19
cmV0dXJuIGkmJiFnLmxlbmd0aCYmaC5sZW5ndGg/cChoW2ZdKS52YWwoKTpnfSxzZXQ6ZnVuY3Rp
b24oYSxiKXt2YXIgYz1wLm1ha2VBcnJheShiKTtyZXR1cm4gcChhKS5maW5kKCJvcHRpb24iKS5l
YWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1wLmluQXJyYXkocCh0aGlzKS52YWwoKSxjKT49
MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKSxjfX19LGF0dHJGbjp7fSxhdHRyOmZ1
bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09
OHx8aT09PTIpcmV0dXJuO2lmKGUmJnAuaXNGdW5jdGlvbihwLmZuW2NdKSlyZXR1cm4gcChhKVtj
XShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBwLnByb3Ao
YSxjLGQpO2g9aSE9PTF8fCFwLmlzWE1MRG9jKGEpLGgmJihjPWMudG9Mb3dlckNhc2UoKSxnPXAu
YXR0ckhvb2tzW2NdfHwoVC50ZXN0KGMpP006TCkpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7cC5y
ZW1vdmVBdHRyKGEsYyk7cmV0dXJufXJldHVybiBnJiYic2V0ImluIGcmJmgmJihmPWcuc2V0KGEs
ZCxjKSkhPT1iP2Y6KGEuc2V0QXR0cmlidXRlKGMsZCsiIiksZCl9cmV0dXJuIGcmJiJnZXQiaW4g
ZyYmaCYmKGY9Zy5nZXQoYSxjKSkhPT1udWxsP2Y6KGY9YS5nZXRBdHRyaWJ1dGUoYyksZj09PW51
bGw/YjpmKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9MDtpZihiJiZh
Lm5vZGVUeXBlPT09MSl7ZD1iLnNwbGl0KHMpO2Zvcig7ZzxkLmxlbmd0aDtnKyspZT1kW2ddLGUm
JihjPXAucHJvcEZpeFtlXXx8ZSxmPVQudGVzdChlKSxmfHxwLmF0dHIoYSxlLCIiKSxhLnJlbW92
ZUF0dHJpYnV0ZShVP2U6YyksZiYmYyBpbiBhJiYoYVtjXT0hMSkpfX0sYXR0ckhvb2tzOnt0eXBl
OntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihRLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlw
LmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFwLnN1cHBv
cnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJnAubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9
YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9
fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBMJiZwLm5vZGVOYW1lKGEsImJ1dHRv
biIpP0wuZ2V0KGEsYik6YiBpbiBhP2EudmFsdWU6bnVsbH0sc2V0OmZ1bmN0aW9uKGEsYixjKXtp
ZihMJiZwLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiBMLnNldChhLGIsYyk7YS52YWx1ZT1i
fX19LHByb3BGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCIscmVhZG9ubHk6InJlYWRPbmx5IiwiZm9y
IjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2Vs
bHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLHJvd3NwYW46
InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoi
ZnJhbWVCb3JkZXIiLGNvbnRlbnRlZGl0YWJsZToiY29udGVudEVkaXRhYmxlIn0scHJvcDpmdW5j
dGlvbihhLGMsZCl7dmFyIGUsZixnLGg9YS5ub2RlVHlwZTtpZighYXx8aD09PTN8fGg9PT04fHxo
PT09MilyZXR1cm47cmV0dXJuIGc9aCE9PTF8fCFwLmlzWE1MRG9jKGEpLGcmJihjPXAucHJvcEZp
eFtjXXx8YyxmPXAucHJvcEhvb2tzW2NdKSxkIT09Yj9mJiYic2V0ImluIGYmJihlPWYuc2V0KGEs
ZCxjKSkhPT1iP2U6YVtjXT1kOmYmJiJnZXQiaW4gZiYmKGU9Zi5nZXQoYSxjKSkhPT1udWxsP2U6
YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0
cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52
YWx1ZSwxMCk6Ui50ZXN0KGEubm9kZU5hbWUpfHxTLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8w
OmJ9fX19KSxNPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPXAucHJvcChhLGMpO3JldHVybiBl
PT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQu
bm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFy
IGQ7cmV0dXJuIGI9PT0hMT9wLnJlbW92ZUF0dHIoYSxjKTooZD1wLnByb3BGaXhbY118fGMsZCBp
biBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKSxjfX0sVXx8
KE49e25hbWU6ITAsaWQ6ITAsY29vcmRzOiEwfSxMPXAudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVu
Y3Rpb24oYSxjKXt2YXIgZDtyZXR1cm4gZD1hLmdldEF0dHJpYnV0ZU5vZGUoYyksZCYmKE5bY10/
ZC52YWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLnZhbHVlOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7
dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHwoZD1lLmNyZWF0ZUF0dHJpYnV0
ZShjKSxhLnNldEF0dHJpYnV0ZU5vZGUoZCkpLGQudmFsdWU9YisiIn19LHAuZWFjaChbIndpZHRo
IiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtwLmF0dHJIb29rc1tiXT1wLmV4dGVuZChwLmF0dHJI
b29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXJldHVybiBhLnNldEF0dHJpYnV0
ZShiLCJhdXRvIiksY319KX0pLHAuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OkwuZ2V0
LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSxMLnNldChhLGIsYyl9fSks
cC5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxwLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJo
ZWlnaHQiXSxmdW5jdGlvbihhLGMpe3AuYXR0ckhvb2tzW2NdPXAuZXh0ZW5kKHAuYXR0ckhvb2tz
W2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09
PW51bGw/YjpkfX0pfSkscC5zdXBwb3J0LnN0eWxlfHwocC5hdHRySG9va3Muc3R5bGU9e2dldDpm
dW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpm
dW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9YisiIn19KSxwLnN1cHBvcnQub3B0
U2VsZWN0ZWR8fChwLnByb3BIb29rcy5zZWxlY3RlZD1wLmV4dGVuZChwLnByb3BIb29rcy5zZWxl
Y3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmKGIuc2Vs
ZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxs
fX0pKSxwLnN1cHBvcnQuZW5jdHlwZXx8KHAucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLHAu
c3VwcG9ydC5jaGVja09ufHxwLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtw
LnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2
YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLHAuZWFjaChbInJhZGlvIiwiY2hlY2tib3gi
XSxmdW5jdGlvbigpe3AudmFsSG9va3NbdGhpc109cC5leHRlbmQocC52YWxIb29rc1t0aGlzXSx7
c2V0OmZ1bmN0aW9uKGEsYil7aWYocC5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9cC5pbkFy
cmF5KHAoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgVj0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVj
dCkkL2ksVz0vXihbXlwuXSp8KSg/OlwuKC4rKXwpJC8sWD0vKD86Xnxccylob3ZlcihcLlxTK3wp
XGIvLFk9L15rZXkvLFo9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLCQ9L14oPzpmb2N1
c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLF89ZnVuY3Rpb24oYSl7cmV0dXJuIHAuZXZlbnQuc3Bl
Y2lhbC5ob3Zlcj9hOmEucmVwbGFjZShYLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O3Au
ZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnLGgsaSxqLGssbCxtLG4sbyxxLHI7
aWYoYS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHwhY3x8IWR8fCEoZz1wLl9kYXRhKGEp
KSlyZXR1cm47ZC5oYW5kbGVyJiYobz1kLGQ9by5oYW5kbGVyLGY9by5zZWxlY3RvciksZC5ndWlk
fHwoZC5ndWlkPXAuZ3VpZCsrKSxpPWcuZXZlbnRzLGl8fChnLmV2ZW50cz1pPXt9KSxoPWcuaGFu
ZGxlLGh8fChnLmhhbmRsZT1oPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgcCE9InVuZGVmaW5l
ZCImJighYXx8cC5ldmVudC50cmlnZ2VyZWQhPT1hLnR5cGUpP3AuZXZlbnQuZGlzcGF0Y2guYXBw
bHkoaC5lbGVtLGFyZ3VtZW50cyk6Yn0saC5lbGVtPWEpLGM9cC50cmltKF8oYykpLnNwbGl0KCIg
Iik7Zm9yKGo9MDtqPGMubGVuZ3RoO2orKyl7az1XLmV4ZWMoY1tqXSl8fFtdLGw9a1sxXSxtPShr
WzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscj1wLmV2ZW50LnNwZWNpYWxbbF18fHt9LGw9KGY/
ci5kZWxlZ2F0ZVR5cGU6ci5iaW5kVHlwZSl8fGwscj1wLmV2ZW50LnNwZWNpYWxbbF18fHt9LG49
cC5leHRlbmQoe3R5cGU6bCxvcmlnVHlwZTprWzFdLGRhdGE6ZSxoYW5kbGVyOmQsZ3VpZDpkLmd1
aWQsc2VsZWN0b3I6ZixuZWVkc0NvbnRleHQ6ZiYmcC5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50
ZXN0KGYpLG5hbWVzcGFjZTptLmpvaW4oIi4iKX0sbykscT1pW2xdO2lmKCFxKXtxPWlbbF09W10s
cS5kZWxlZ2F0ZUNvdW50PTA7aWYoIXIuc2V0dXB8fHIuc2V0dXAuY2FsbChhLGUsbSxoKT09PSEx
KWEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobCxoLCExKTphLmF0dGFjaEV2
ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbCxoKX1yLmFkZCYmKHIuYWRkLmNhbGwoYSxuKSxuLmhh
bmRsZXIuZ3VpZHx8KG4uaGFuZGxlci5ndWlkPWQuZ3VpZCkpLGY/cS5zcGxpY2UocS5kZWxlZ2F0
ZUNvdW50KyssMCxuKTpxLnB1c2gobikscC5ldmVudC5nbG9iYWxbbF09ITB9YT1udWxsfSxnbG9i
YWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8s
cSxyPXAuaGFzRGF0YShhKSYmcC5fZGF0YShhKTtpZighcnx8IShtPXIuZXZlbnRzKSlyZXR1cm47
Yj1wLnRyaW0oXyhifHwiIikpLnNwbGl0KCIgIik7Zm9yKGY9MDtmPGIubGVuZ3RoO2YrKyl7Zz1X
LmV4ZWMoYltmXSl8fFtdLGg9aT1nWzFdLGo9Z1syXTtpZighaCl7Zm9yKGggaW4gbSlwLmV2ZW50
LnJlbW92ZShhLGgrYltmXSxjLGQsITApO2NvbnRpbnVlfW49cC5ldmVudC5zcGVjaWFsW2hdfHx7
fSxoPShkP24uZGVsZWdhdGVUeXBlOm4uYmluZFR5cGUpfHxoLG89bVtoXXx8W10saz1vLmxlbmd0
aCxqPWo/bmV3IFJlZ0V4cCgiKF58XFwuKSIrai5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4o
PzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsO2ZvcihsPTA7bDxvLmxlbmd0aDtsKyspcT1vW2xd
LChlfHxpPT09cS5vcmlnVHlwZSkmJighY3x8Yy5ndWlkPT09cS5ndWlkKSYmKCFqfHxqLnRlc3Qo
cS5uYW1lc3BhY2UpKSYmKCFkfHxkPT09cS5zZWxlY3Rvcnx8ZD09PSIqKiImJnEuc2VsZWN0b3Ip
JiYoby5zcGxpY2UobC0tLDEpLHEuc2VsZWN0b3ImJm8uZGVsZWdhdGVDb3VudC0tLG4ucmVtb3Zl
JiZuLnJlbW92ZS5jYWxsKGEscSkpO28ubGVuZ3RoPT09MCYmayE9PW8ubGVuZ3RoJiYoKCFuLnRl
YXJkb3dufHxuLnRlYXJkb3duLmNhbGwoYSxqLHIuaGFuZGxlKT09PSExKSYmcC5yZW1vdmVFdmVu
dChhLGgsci5oYW5kbGUpLGRlbGV0ZSBtW2hdKX1wLmlzRW1wdHlPYmplY3QobSkmJihkZWxldGUg
ci5oYW5kbGUscC5yZW1vdmVEYXRhKGEsImV2ZW50cyIsITApKX0sY3VzdG9tRXZlbnQ6e2dldERh
dGE6ITAsc2V0RGF0YTohMCxjaGFuZ2VEYXRhOiEwfSx0cmlnZ2VyOmZ1bmN0aW9uKGMsZCxmLGcp
e2lmKCFmfHxmLm5vZGVUeXBlIT09MyYmZi5ub2RlVHlwZSE9PTgpe3ZhciBoLGksaixrLGwsbSxu
LG8scSxyLHM9Yy50eXBlfHxjLHQ9W107aWYoJC50ZXN0KHMrcC5ldmVudC50cmlnZ2VyZWQpKXJl
dHVybjtzLmluZGV4T2YoIiEiKT49MCYmKHM9cy5zbGljZSgwLC0xKSxpPSEwKSxzLmluZGV4T2Yo
Ii4iKT49MCYmKHQ9cy5zcGxpdCgiLiIpLHM9dC5zaGlmdCgpLHQuc29ydCgpKTtpZigoIWZ8fHAu
ZXZlbnQuY3VzdG9tRXZlbnRbc10pJiYhcC5ldmVudC5nbG9iYWxbc10pcmV0dXJuO2M9dHlwZW9m
IGM9PSJvYmplY3QiP2NbcC5leHBhbmRvXT9jOm5ldyBwLkV2ZW50KHMsYyk6bmV3IHAuRXZlbnQo
cyksYy50eXBlPXMsYy5pc1RyaWdnZXI9ITAsYy5leGNsdXNpdmU9aSxjLm5hbWVzcGFjZT10Lmpv
aW4oIi4iKSxjLm5hbWVzcGFjZV9yZT1jLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIit0
LmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsbT1zLmluZGV4T2YoIjoiKTww
PyJvbiIrczoiIjtpZighZil7aD1wLmNhY2hlO2ZvcihqIGluIGgpaFtqXS5ldmVudHMmJmhbal0u
ZXZlbnRzW3NdJiZwLmV2ZW50LnRyaWdnZXIoYyxkLGhbal0uaGFuZGxlLmVsZW0sITApO3JldHVy
bn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZiksZD1kIT1udWxsP3AubWFrZUFycmF5
KGQpOltdLGQudW5zaGlmdChjKSxuPXAuZXZlbnQuc3BlY2lhbFtzXXx8e307aWYobi50cmlnZ2Vy
JiZuLnRyaWdnZXIuYXBwbHkoZixkKT09PSExKXJldHVybjtxPVtbZixuLmJpbmRUeXBlfHxzXV07
aWYoIWcmJiFuLm5vQnViYmxlJiYhcC5pc1dpbmRvdyhmKSl7cj1uLmRlbGVnYXRlVHlwZXx8cyxr
PSQudGVzdChyK3MpP2Y6Zi5wYXJlbnROb2RlO2ZvcihsPWY7aztrPWsucGFyZW50Tm9kZSlxLnB1
c2goW2sscl0pLGw9aztsPT09KGYub3duZXJEb2N1bWVudHx8ZSkmJnEucHVzaChbbC5kZWZhdWx0
Vmlld3x8bC5wYXJlbnRXaW5kb3d8fGEscl0pfWZvcihqPTA7ajxxLmxlbmd0aCYmIWMuaXNQcm9w
YWdhdGlvblN0b3BwZWQoKTtqKyspaz1xW2pdWzBdLGMudHlwZT1xW2pdWzFdLG89KHAuX2RhdGEo
aywiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZwLl9kYXRhKGssImhhbmRsZSIpLG8mJm8uYXBwbHko
ayxkKSxvPW0mJmtbbV0sbyYmcC5hY2NlcHREYXRhKGspJiZvLmFwcGx5JiZvLmFwcGx5KGssZCk9
PT0hMSYmYy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBjLnR5cGU9cywhZyYmIWMuaXNEZWZhdWx0
UHJldmVudGVkKCkmJighbi5fZGVmYXVsdHx8bi5fZGVmYXVsdC5hcHBseShmLm93bmVyRG9jdW1l
bnQsZCk9PT0hMSkmJihzIT09ImNsaWNrInx8IXAubm9kZU5hbWUoZiwiYSIpKSYmcC5hY2NlcHRE
YXRhKGYpJiZtJiZmW3NdJiYocyE9PSJmb2N1cyImJnMhPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNl
dFdpZHRoIT09MCkmJiFwLmlzV2luZG93KGYpJiYobD1mW21dLGwmJihmW21dPW51bGwpLHAuZXZl
bnQudHJpZ2dlcmVkPXMsZltzXSgpLHAuZXZlbnQudHJpZ2dlcmVkPWIsbCYmKGZbbV09bCkpLGMu
cmVzdWx0fXJldHVybn0sZGlzcGF0Y2g6ZnVuY3Rpb24oYyl7Yz1wLmV2ZW50LmZpeChjfHxhLmV2
ZW50KTt2YXIgZCxlLGYsZyxoLGksaixsLG0sbixvPShwLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7
fSlbYy50eXBlXXx8W10scT1vLmRlbGVnYXRlQ291bnQscj1rLmNhbGwoYXJndW1lbnRzKSxzPSFj
LmV4Y2x1c2l2ZSYmIWMubmFtZXNwYWNlLHQ9cC5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9LHU9
W107clswXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZih0LnByZURpc3BhdGNoJiZ0LnByZURp
c3BhdGNoLmNhbGwodGhpcyxjKT09PSExKXJldHVybjtpZihxJiYoIWMuYnV0dG9ufHxjLnR5cGUh
PT0iY2xpY2siKSlmb3IoZj1jLnRhcmdldDtmIT10aGlzO2Y9Zi5wYXJlbnROb2RlfHx0aGlzKWlm
KGYuZGlzYWJsZWQhPT0hMHx8Yy50eXBlIT09ImNsaWNrIil7aD17fSxqPVtdO2ZvcihkPTA7ZDxx
O2QrKylsPW9bZF0sbT1sLnNlbGVjdG9yLGhbbV09PT1iJiYoaFttXT1sLm5lZWRzQ29udGV4dD9w
KG0sdGhpcykuaW5kZXgoZik+PTA6cC5maW5kKG0sdGhpcyxudWxsLFtmXSkubGVuZ3RoKSxoW21d
JiZqLnB1c2gobCk7ai5sZW5ndGgmJnUucHVzaCh7ZWxlbTpmLG1hdGNoZXM6an0pfW8ubGVuZ3Ro
PnEmJnUucHVzaCh7ZWxlbTp0aGlzLG1hdGNoZXM6by5zbGljZShxKX0pO2ZvcihkPTA7ZDx1Lmxl
bmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtkKyspe2k9dVtkXSxjLmN1cnJlbnRUYXJn
ZXQ9aS5lbGVtO2ZvcihlPTA7ZTxpLm1hdGNoZXMubGVuZ3RoJiYhYy5pc0ltbWVkaWF0ZVByb3Bh
Z2F0aW9uU3RvcHBlZCgpO2UrKyl7bD1pLm1hdGNoZXNbZV07aWYoc3x8IWMubmFtZXNwYWNlJiYh
bC5uYW1lc3BhY2V8fGMubmFtZXNwYWNlX3JlJiZjLm5hbWVzcGFjZV9yZS50ZXN0KGwubmFtZXNw
YWNlKSljLmRhdGE9bC5kYXRhLGMuaGFuZGxlT2JqPWwsZz0oKHAuZXZlbnQuc3BlY2lhbFtsLm9y
aWdUeXBlXXx8e30pLmhhbmRsZXx8bC5oYW5kbGVyKS5hcHBseShpLmVsZW0sciksZyE9PWImJihj
LnJlc3VsdD1nLGc9PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigp
KSl9fXJldHVybiB0LnBvc3REaXNwYXRjaCYmdC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGMpLGMu
cmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50
IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhh
c2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3
aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNv
ZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEu
d2hpY2g9PW51bGwmJihhLndoaWNoPWIuY2hhckNvZGUhPW51bGw/Yi5jaGFyQ29kZTpiLmtleUNv
ZGUpLGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZ
IGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkg
dG9FbGVtZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGMpe3ZhciBkLGYsZyxoPWMu
YnV0dG9uLGk9Yy5mcm9tRWxlbWVudDtyZXR1cm4gYS5wYWdlWD09bnVsbCYmYy5jbGllbnRYIT1u
dWxsJiYoZD1hLnRhcmdldC5vd25lckRvY3VtZW50fHxlLGY9ZC5kb2N1bWVudEVsZW1lbnQsZz1k
LmJvZHksYS5wYWdlWD1jLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZyYmZy5zY3JvbGxMZWZ0
fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxnJiZnLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yy5jbGll
bnRZKyhmJiZmLnNjcm9sbFRvcHx8ZyYmZy5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8
ZyYmZy5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZpJiYoYS5yZWxhdGVkVGFyZ2V0
PWk9PT1hLnRhcmdldD9jLnRvRWxlbWVudDppKSwhYS53aGljaCYmaCE9PWImJihhLndoaWNoPWgm
MT8xOmgmMj8zOmgmND8yOjApLGF9fSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtwLmV4cGFuZG9dKXJl
dHVybiBhO3ZhciBiLGMsZD1hLGY9cC5ldmVudC5maXhIb29rc1thLnR5cGVdfHx7fSxnPWYucHJv
cHM/dGhpcy5wcm9wcy5jb25jYXQoZi5wcm9wcyk6dGhpcy5wcm9wczthPXAuRXZlbnQoZCk7Zm9y
KGI9Zy5sZW5ndGg7YjspYz1nWy0tYl0sYVtjXT1kW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFy
Z2V0PWQuc3JjRWxlbWVudHx8ZSksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50
YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PSEhYS5tZXRhS2V5LGYuZmlsdGVyP2YuZmlsdGVy
KGEsZCk6YX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6
ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntz
ZXR1cDpmdW5jdGlvbihhLGIsYyl7cC5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxv
YWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0
aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3Zh
ciBlPXAuZXh0ZW5kKG5ldyBwLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5h
bEV2ZW50Ont9fSk7ZD9wLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOnAuZXZlbnQuZGlzcGF0Y2gu
Y2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LHAu
ZXZlbnQuaGFuZGxlPXAuZXZlbnQuZGlzcGF0Y2gscC5yZW1vdmVFdmVudD1lLnJlbW92ZUV2ZW50
TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVF
dmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRh
Y2hFdmVudCYmKHR5cGVvZiBhW2RdPT0idW5kZWZpbmVkIiYmKGFbZF09bnVsbCksYS5kZXRhY2hF
dmVudChkLGMpKX0scC5FdmVudD1mdW5jdGlvbihhLGIpe2lmKHRoaXMgaW5zdGFuY2VvZiBwLkV2
ZW50KWEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0h
MXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP2JiOmJhKTp0aGlz
LnR5cGU9YSxiJiZwLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1w
fHxwLm5vdygpLHRoaXNbcC5leHBhbmRvXT0hMDtlbHNlIHJldHVybiBuZXcgcC5FdmVudChhLGIp
fSxwLkV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVm
YXVsdFByZXZlbnRlZD1iYjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIWEpcmV0dXJuO2Eu
cHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITF9LHN0b3BQ
cm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YmI7dmFyIGE9
dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFhKXJldHVybjthLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9w
UHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMH0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9u
OmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1iYix0aGlzLnN0
b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6YmEsaXNQcm9wYWdhdGlvblN0b3Bw
ZWQ6YmEsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6YmF9LHAuZWFjaCh7bW91c2VlbnRl
cjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7cC5ldmVu
dC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihh
KXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iaixnPWYuc2VsZWN0
b3I7aWYoIWV8fGUhPT1kJiYhcC5jb250YWlucyhkLGUpKWEudHlwZT1mLm9yaWdUeXBlLGM9Zi5o
YW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YjtyZXR1cm4gY319fSkscC5zdXBw
b3J0LnN1Ym1pdEJ1YmJsZXN8fChwLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlv
bigpe2lmKHAubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO3AuZXZlbnQuYWRkKHRoaXMs
ImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJn
ZXQsZD1wLm5vZGVOYW1lKGMsImlucHV0Iil8fHAubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3Jt
OmI7ZCYmIXAuX2RhdGEoZCwiX3N1Ym1pdF9hdHRhY2hlZCIpJiYocC5ldmVudC5hZGQoZCwic3Vi
bWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxwLl9kYXRhKGQs
Il9zdWJtaXRfYXR0YWNoZWQiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1
Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFh
LmlzVHJpZ2dlciYmcC5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwh
MCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKHAubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVy
biExO3AuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSkscC5zdXBwb3J0LmNoYW5nZUJ1
YmJsZXN8fChwLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKFYudGVz
dCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09
InJhZGlvIilwLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlv
bihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVz
dF9jaGFuZ2VkPSEwKX0pLHAuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9u
KGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2Vk
PSExKSxwLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KTtyZXR1cm4hMX1wLmV2
ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1h
LnRhcmdldDtWLnRlc3QoYi5ub2RlTmFtZSkmJiFwLl9kYXRhKGIsIl9jaGFuZ2VfYXR0YWNoZWQi
KSYmKHAuZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLnBhcmVu
dE5vZGUmJiFhLmlzU2ltdWxhdGVkJiYhYS5pc1RyaWdnZXImJnAuZXZlbnQuc2ltdWxhdGUoImNo
YW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSkscC5fZGF0YShiLCJfY2hhbmdlX2F0dGFjaGVk
IiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtpZih0aGlzIT09Ynx8
YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fGIudHlwZSE9PSJyYWRpbyImJmIudHlwZSE9PSJj
aGVja2JveCIpcmV0dXJuIGEuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
fSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBwLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5n
ZSIpLCFWLnRlc3QodGhpcy5ub2RlTmFtZSl9fSkscC5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxw
LmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFy
IGM9MCxkPWZ1bmN0aW9uKGEpe3AuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxwLmV2ZW50LmZp
eChhKSwhMCl9O3AuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtjKys9PT0wJiZl
LmFkZEV2ZW50TGlzdGVuZXIoYSxkLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWM9PT0wJiZl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxkLCEwKX19fSkscC5mbi5leHRlbmQoe29uOmZ1bmN0aW9u
KGEsYyxkLGUsZil7dmFyIGcsaDtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3Ry
aW5nIiYmKGQ9ZHx8YyxjPWIpO2ZvcihoIGluIGEpdGhpcy5vbihoLGMsZCxhW2hdLGYpO3JldHVy
biB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0i
c3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9YmE7ZWxzZSBpZigh
ZSlyZXR1cm4gdGhpcztyZXR1cm4gZj09PTEmJihnPWUsZT1mdW5jdGlvbihhKXtyZXR1cm4gcCgp
Lm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1w
Lmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe3AuZXZlbnQuYWRkKHRoaXMsYSxlLGQsYyl9
KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpm
dW5jdGlvbihhLGMsZCl7dmFyIGUsZjtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9i
ailyZXR1cm4gZT1hLmhhbmRsZU9iaixwKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihlLm5hbWVzcGFj
ZT9lLm9yaWdUeXBlKyIuIitlLm5hbWVzcGFjZTplLm9yaWdUeXBlLGUuc2VsZWN0b3IsZS5oYW5k
bGVyKSx0aGlzO2lmKHR5cGVvZiBhPT0ib2JqZWN0Iil7Zm9yKGYgaW4gYSl0aGlzLm9mZihmLGMs
YVtmXSk7cmV0dXJuIHRoaXN9aWYoYz09PSExfHx0eXBlb2YgYz09ImZ1bmN0aW9uIilkPWMsYz1i
O3JldHVybiBkPT09ITEmJihkPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtwLmV2ZW50LnJlbW92
ZSh0aGlzLGEsZCxjKX0pfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51
bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0s
bGl2ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2Vs
ZWN0b3IsYixjKSx0aGlzfSxkaWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcCh0aGlzLmNvbnRleHQp
Lm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYiksdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oYSxi
LGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIs
YXx8IioqIixjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24oKXtwLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9u
KGEsYil7aWYodGhpc1swXSlyZXR1cm4gcC5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0s
dG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8cC5ndWlkKyssZD0w
LGU9ZnVuY3Rpb24oYyl7dmFyIGU9KHAuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8
MCklZDtyZXR1cm4gcC5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQsZSsxKSxjLnByZXZl
bnREZWZhdWx0KCksYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGls
ZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1
bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0p
LHAuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1
bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3Zl
ciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5
ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlv
bihhLGIpe3AuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz09bnVsbCYmKGM9YSxhPW51bGwp
LGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX0s
WS50ZXN0KGIpJiYocC5ldmVudC5maXhIb29rc1tiXT1wLmV2ZW50LmtleUhvb2tzKSxaLnRlc3Qo
YikmJihwLmV2ZW50LmZpeEhvb2tzW2JdPXAuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbihh
LGIpe2Z1bmN0aW9uIGJjKGEsYixjLGQpe2M9Y3x8W10sYj1ifHxyO3ZhciBlLGYsaSxqLGs9Yi5u
b2RlVHlwZTtpZighYXx8dHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBjO2lmKGshPT0xJiZrIT09
OSlyZXR1cm5bXTtpPWcoYik7aWYoIWkmJiFkKWlmKGU9UC5leGVjKGEpKWlmKGo9ZVsxXSl7aWYo
az09PTkpe2Y9Yi5nZXRFbGVtZW50QnlJZChqKTtpZighZnx8IWYucGFyZW50Tm9kZSlyZXR1cm4g
YztpZihmLmlkPT09ailyZXR1cm4gYy5wdXNoKGYpLGN9ZWxzZSBpZihiLm93bmVyRG9jdW1lbnQm
JihmPWIub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChqKSkmJmgoYixmKSYmZi5pZD09PWop
cmV0dXJuIGMucHVzaChmKSxjfWVsc2V7aWYoZVsyXSlyZXR1cm4gdy5hcHBseShjLHguY2FsbChi
LmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpLDApKSxjO2lmKChqPWVbM10pJiZfJiZiLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUpcmV0dXJuIHcuYXBwbHkoYyx4LmNhbGwoYi5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKGopLDApKSxjfXJldHVybiBicChhLnJlcGxhY2UoTCwiJDEiKSxiLGMsZCxpKX1mdW5j
dGlvbiBiZChhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpO3JldHVybiBjPT09ImlucHV0IiYmYi50eXBlPT09YX19ZnVuY3Rpb24gYmUoYSl7cmV0dXJu
IGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYz09PSJp
bnB1dCJ8fGM9PT0iYnV0dG9uIikmJmIudHlwZT09PWF9fWZ1bmN0aW9uIGJmKGEpe3JldHVybiB6
KGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLHooZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5s
ZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tl
XSkpfSl9KX1mdW5jdGlvbiBiZyhhLGIsYyl7aWYoYT09PWIpcmV0dXJuIGM7dmFyIGQ9YS5uZXh0
U2libGluZzt3aGlsZShkKXtpZihkPT09YilyZXR1cm4tMTtkPWQubmV4dFNpYmxpbmd9cmV0dXJu
IDF9ZnVuY3Rpb24gYmgoYSxiKXt2YXIgYyxkLGYsZyxoLGksaixrPUNbb11bYV07aWYoaylyZXR1
cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1lLnByZUZpbHRlcjt3aGlsZShoKXtpZighY3x8
KGQ9TS5leGVjKGgpKSlkJiYoaD1oLnNsaWNlKGRbMF0ubGVuZ3RoKSksaS5wdXNoKGY9W10pO2M9
ITE7aWYoZD1OLmV4ZWMoaCkpZi5wdXNoKGM9bmV3IHEoZC5zaGlmdCgpKSksaD1oLnNsaWNlKGMu
bGVuZ3RoKSxjLnR5cGU9ZFswXS5yZXBsYWNlKEwsIiAiKTtmb3IoZyBpbiBlLmZpbHRlcikoZD1X
W2ddLmV4ZWMoaCkpJiYoIWpbZ118fChkPWpbZ10oZCxyLCEwKSkpJiYoZi5wdXNoKGM9bmV3IHEo
ZC5zaGlmdCgpKSksaD1oLnNsaWNlKGMubGVuZ3RoKSxjLnR5cGU9ZyxjLm1hdGNoZXM9ZCk7aWYo
IWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9iYy5lcnJvcihhKTpDKGEsaSkuc2xpY2UoMCl9
ZnVuY3Rpb24gYmkoYSxiLGQpe3ZhciBlPWIuZGlyLGY9ZCYmYi5kaXI9PT0icGFyZW50Tm9kZSIs
Zz11Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGQpe3doaWxlKGI9YltlXSlpZihmfHxi
Lm5vZGVUeXBlPT09MSlyZXR1cm4gYShiLGMsZCl9OmZ1bmN0aW9uKGIsZCxoKXtpZighaCl7dmFy
IGksaj10KyIgIitnKyIgIixrPWorYzt3aGlsZShiPWJbZV0paWYoZnx8Yi5ub2RlVHlwZT09PTEp
e2lmKChpPWJbb10pPT09aylyZXR1cm4gYi5zaXpzZXQ7aWYodHlwZW9mIGk9PSJzdHJpbmciJiZp
LmluZGV4T2Yoaik9PT0wKXtpZihiLnNpenNldClyZXR1cm4gYn1lbHNle2Jbb109aztpZihhKGIs
ZCxoKSlyZXR1cm4gYi5zaXpzZXQ9ITAsYjtiLnNpenNldD0hMX19fWVsc2Ugd2hpbGUoYj1iW2Vd
KWlmKGZ8fGIubm9kZVR5cGU9PT0xKWlmKGEoYixkLGgpKXJldHVybiBifX1mdW5jdGlvbiBiaihh
KXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUo
ZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiBiayhh
LGIsYyxkLGUpe3ZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1iIT1udWxsO2Zvcig7aDxpO2gr
KylpZihmPWFbaF0paWYoIWN8fGMoZixkLGUpKWcucHVzaChmKSxqJiZiLnB1c2goaCk7cmV0dXJu
IGd9ZnVuY3Rpb24gYmwoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFtvXSYmKGQ9YmwoZCkpLGUm
JiFlW29dJiYoZT1ibChlLGYpKSx6KGZ1bmN0aW9uKGYsZyxoLGkpe2lmKGYmJmUpcmV0dXJuO3Zh
ciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fGJvKGJ8fCIqIixoLm5vZGVUeXBlP1to
XTpoLFtdLGYpLHE9YSYmKGZ8fCFiKT9iayhwLG0sYSxoLGkpOnAscj1jP2V8fChmP2E6b3x8ZCk/
W106ZzpxO2MmJmMocSxyLGgsaSk7aWYoZCl7bD1iayhyLG4pLGQobCxbXSxoLGkpLGo9bC5sZW5n
dGg7d2hpbGUoai0tKWlmKGs9bFtqXSlyW25bal1dPSEocVtuW2pdXT1rKX1pZihmKXtqPWEmJnIu
bGVuZ3RoO3doaWxlKGotLSlpZihrPXJbal0pZlttW2pdXT0hKGdbbVtqXV09ayl9ZWxzZSByPWJr
KHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTp3LmFwcGx5KGcs
cil9KX1mdW5jdGlvbiBibShhKXt2YXIgYixjLGQsZj1hLmxlbmd0aCxnPWUucmVsYXRpdmVbYVsw
XS50eXBlXSxoPWd8fGUucmVsYXRpdmVbIiAiXSxpPWc/MTowLGo9YmkoZnVuY3Rpb24oYSl7cmV0
dXJuIGE9PT1ifSxoLCEwKSxrPWJpKGZ1bmN0aW9uKGEpe3JldHVybiB5LmNhbGwoYixhKT4tMX0s
aCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3JldHVybiFnJiYoZHx8YyE9PWwpfHwoKGI9Yykubm9k
ZVR5cGU/aihhLGMsZCk6ayhhLGMsZCkpfV07Zm9yKDtpPGY7aSsrKWlmKGM9ZS5yZWxhdGl2ZVth
W2ldLnR5cGVdKW09W2JpKGJqKG0pLGMpXTtlbHNle2M9ZS5maWx0ZXJbYVtpXS50eXBlXS5hcHBs
eShudWxsLGFbaV0ubWF0Y2hlcyk7aWYoY1tvXSl7ZD0rK2k7Zm9yKDtkPGY7ZCsrKWlmKGUucmVs
YXRpdmVbYVtkXS50eXBlXSlicmVhaztyZXR1cm4gYmwoaT4xJiZiaihtKSxpPjEmJmEuc2xpY2Uo
MCxpLTEpLmpvaW4oIiIpLnJlcGxhY2UoTCwiJDEiKSxjLGk8ZCYmYm0oYS5zbGljZShpLGQpKSxk
PGYmJmJtKGE9YS5zbGljZShkKSksZDxmJiZhLmpvaW4oIiIpKX1tLnB1c2goYyl9cmV0dXJuIGJq
KG0pfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGQ9Yi5sZW5ndGg+MCxmPWEubGVuZ3RoPjAsZz1mdW5j
dGlvbihoLGksaixrLG0pe3ZhciBuLG8scCxxPVtdLHM9MCx1PSIwIix4PWgmJltdLHk9bSE9bnVs
bCx6PWwsQT1ofHxmJiZlLmZpbmQuVEFHKCIqIixtJiZpLnBhcmVudE5vZGV8fGkpLEI9dCs9ej09
bnVsbD8xOk1hdGguRTt5JiYobD1pIT09ciYmaSxjPWcuZWwpO2Zvcig7KG49QVt1XSkhPW51bGw7
dSsrKXtpZihmJiZuKXtmb3Iobz0wO3A9YVtvXTtvKyspaWYocChuLGksaikpe2sucHVzaChuKTti
cmVha315JiYodD1CLGM9KytnLmVsKX1kJiYoKG49IXAmJm4pJiZzLS0saCYmeC5wdXNoKG4pKX1z
Kz11O2lmKGQmJnUhPT1zKXtmb3Iobz0wO3A9YltvXTtvKyspcCh4LHEsaSxqKTtpZihoKXtpZihz
PjApd2hpbGUodS0tKSF4W3VdJiYhcVt1XSYmKHFbdV09di5jYWxsKGspKTtxPWJrKHEpfXcuYXBw
bHkoayxxKSx5JiYhaCYmcS5sZW5ndGg+MCYmcytiLmxlbmd0aD4xJiZiYy51bmlxdWVTb3J0KGsp
fXJldHVybiB5JiYodD1CLGw9eikseH07cmV0dXJuIGcuZWw9MCxkP3ooZyk6Z31mdW5jdGlvbiBi
byhhLGIsYyxkKXt2YXIgZT0wLGY9Yi5sZW5ndGg7Zm9yKDtlPGY7ZSsrKWJjKGEsYltlXSxjLGQp
O3JldHVybiBjfWZ1bmN0aW9uIGJwKGEsYixjLGQsZil7dmFyIGcsaCxqLGssbCxtPWJoKGEpLG49
bS5sZW5ndGg7aWYoIWQmJm0ubGVuZ3RoPT09MSl7aD1tWzBdPW1bMF0uc2xpY2UoMCk7aWYoaC5s
ZW5ndGg+MiYmKGo9aFswXSkudHlwZT09PSJJRCImJmIubm9kZVR5cGU9PT05JiYhZiYmZS5yZWxh
dGl2ZVtoWzFdLnR5cGVdKXtiPWUuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVwbGFjZShWLCIiKSxi
LGYpWzBdO2lmKCFiKXJldHVybiBjO2E9YS5zbGljZShoLnNoaWZ0KCkubGVuZ3RoKX1mb3IoZz1X
LlBPUy50ZXN0KGEpPy0xOmgubGVuZ3RoLTE7Zz49MDtnLS0pe2o9aFtnXTtpZihlLnJlbGF0aXZl
W2s9ai50eXBlXSlicmVhaztpZihsPWUuZmluZFtrXSlpZihkPWwoai5tYXRjaGVzWzBdLnJlcGxh
Y2UoViwiIiksUi50ZXN0KGhbMF0udHlwZSkmJmIucGFyZW50Tm9kZXx8YixmKSl7aC5zcGxpY2Uo
ZywxKSxhPWQubGVuZ3RoJiZoLmpvaW4oIiIpO2lmKCFhKXJldHVybiB3LmFwcGx5KGMseC5jYWxs
KGQsMCkpLGM7YnJlYWt9fX1yZXR1cm4gaShhLG0pKGQsYixmLGMsUi50ZXN0KGEpKSxjfWZ1bmN0
aW9uIGJxKCl7fXZhciBjLGQsZSxmLGcsaCxpLGosayxsLG09ITAsbj0idW5kZWZpbmVkIixvPSgi
c2l6Y2FjaGUiK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoIi4iLCIiKSxxPVN0cmluZyxyPWEuZG9j
dW1lbnQscz1yLmRvY3VtZW50RWxlbWVudCx0PTAsdT0wLHY9W10ucG9wLHc9W10ucHVzaCx4PVtd
LnNsaWNlLHk9W10uaW5kZXhPZnx8ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPXRoaXMubGVuZ3RoO2Zv
cig7YjxjO2IrKylpZih0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX0sej1mdW5jdGlvbihh
LGIpe3JldHVybiBhW29dPWI9PW51bGx8fGIsYX0sQT1mdW5jdGlvbigpe3ZhciBhPXt9LGI9W107
cmV0dXJuIHooZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5wdXNoKGMpPmUuY2FjaGVMZW5ndGgmJmRl
bGV0ZSBhW2Iuc2hpZnQoKV0sYVtjXT1kfSxhKX0sQj1BKCksQz1BKCksRD1BKCksRT0iW1xceDIw
XFx0XFxyXFxuXFxmXSIsRj0iKD86XFxcXC58Wy1cXHddfFteXFx4MDAtXFx4YTBdKSsiLEc9Ri5y
ZXBsYWNlKCJ3IiwidyMiKSxIPSIoWypeJHwhfl0/PSkiLEk9IlxcWyIrRSsiKigiK0YrIikiK0Ur
IiooPzoiK0grRSsiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIrRysiKXwp
fCkiK0UrIipcXF0iLEo9IjooIitGKyIpKD86XFwoKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxd
KSo/KVxcMnwoW14oKVtcXF1dKnwoPzooPzoiK0krIil8W146XXxcXFxcLikqfC4qKSlcXCl8KSIs
Sz0iOihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0UrIiooKD86LVxc
ZCk/XFxkKikiK0UrIipcXCl8KSg/PVteLV18JCkiLEw9bmV3IFJlZ0V4cCgiXiIrRSsiK3woKD86
XnxbXlxcXFxdKSg/OlxcXFwuKSopIitFKyIrJCIsImciKSxNPW5ldyBSZWdFeHAoIl4iK0UrIios
IitFKyIqIiksTj1uZXcgUmVnRXhwKCJeIitFKyIqKFtcXHgyMFxcdFxcclxcblxcZj4rfl0pIitF
KyIqIiksTz1uZXcgUmVnRXhwKEopLFA9L14oPzojKFtcd1wtXSspfChcdyspfFwuKFtcd1wtXSsp
KSQvLFE9L146bm90LyxSPS9bXHgyMFx0XHJcblxmXSpbK35dLyxTPS86bm90XCgkLyxUPS9oXGQv
aSxVPS9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2ksVj0vXFwoPyFcXCkvZyxXPXtJRDpu
ZXcgUmVnRXhwKCJeIygiK0YrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrRisiKSIpLE5B
TUU6bmV3IFJlZ0V4cCgiXlxcW25hbWU9WydcIl0/KCIrRisiKVsnXCJdP1xcXSIpLFRBRzpuZXcg
UmVnRXhwKCJeKCIrRi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIr
SSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK0opLFBPUzpuZXcgUmVnRXhwKEssImkiKSxDSElMRDpu
ZXcgUmVnRXhwKCJeOihvbmx5fG50aHxmaXJzdHxsYXN0KS1jaGlsZCg/OlxcKCIrRSsiKihldmVu
fG9kZHwoKFsrLV18KShcXGQqKW58KSIrRSsiKig/OihbKy1dfCkiK0UrIiooXFxkKyl8KSkiK0Ur
IipcXCl8KSIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrRSsiKls+K35dfCIrSywi
aSIpfSxYPWZ1bmN0aW9uKGEpe3ZhciBiPXIuY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVy
biBhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yj1udWxsfX0sWT1YKGZ1bmN0aW9uKGEp
e3JldHVybiBhLmFwcGVuZENoaWxkKHIuY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RofSksWj1YKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRN
TD0iPGEgaHJlZj0nIyc+PC9hPiIsYS5maXJzdENoaWxkJiZ0eXBlb2YgYS5maXJzdENoaWxkLmdl
dEF0dHJpYnV0ZSE9PW4mJmEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIjIn0p
LCQ9WChmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdD48L3NlbGVjdD4iO3ZhciBiPXR5
cGVvZiBhLmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik7cmV0dXJuIGIhPT0iYm9v
bGVhbiImJmIhPT0ic3RyaW5nIn0pLF89WChmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9
IjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2PiIs
IWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8IWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIp
Lmxlbmd0aD8hMTooYS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIixhLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoImUiKS5sZW5ndGg9PT0yKX0pLGJhPVgoZnVuY3Rpb24oYSl7YS5pZD1vKzAsYS5pbm5l
ckhUTUw9IjxhIG5hbWU9JyIrbysiJz48L2E+PGRpdiBuYW1lPSciK28rIic+PC9kaXY+IixzLmlu
c2VydEJlZm9yZShhLHMuZmlyc3RDaGlsZCk7dmFyIGI9ci5nZXRFbGVtZW50c0J5TmFtZSYmci5n
ZXRFbGVtZW50c0J5TmFtZShvKS5sZW5ndGg9PT0yK3IuZ2V0RWxlbWVudHNCeU5hbWUobyswKS5s
ZW5ndGg7cmV0dXJuIGQ9IXIuZ2V0RWxlbWVudEJ5SWQobykscy5yZW1vdmVDaGlsZChhKSxifSk7
dHJ5e3guY2FsbChzLmNoaWxkTm9kZXMsMClbMF0ubm9kZVR5cGV9Y2F0Y2goYmIpe3g9ZnVuY3Rp
b24oYSl7dmFyIGIsYz1bXTtmb3IoO2I9dGhpc1thXTthKyspYy5wdXNoKGIpO3JldHVybiBjfX1i
Yy5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGJjKGEsbnVsbCxudWxsLGIpfSxiYy5tYXRj
aGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYmMoYixudWxsLG51bGwsW2FdKS5sZW5n
dGg+MH0sZj1iYy5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGU9YS5ub2RlVHlw
ZTtpZihlKXtpZihlPT09MXx8ZT09PTl8fGU9PT0xMSl7aWYodHlwZW9mIGEudGV4dENvbnRlbnQ9
PSJzdHJpbmciKXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5u
ZXh0U2libGluZyljKz1mKGEpfWVsc2UgaWYoZT09PTN8fGU9PT00KXJldHVybiBhLm5vZGVWYWx1
ZX1lbHNlIGZvcig7Yj1hW2RdO2QrKyljKz1mKGIpO3JldHVybiBjfSxnPWJjLmlzWE1MPWZ1bmN0
aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1
cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfSxoPWJjLmNvbnRhaW5zPXMuY29udGFpbnM/ZnVu
Y3Rpb24oYSxiKXt2YXIgYz1hLm5vZGVUeXBlPT09OT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYm
Yi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISEoZCYmZC5ub2RlVHlwZT09PTEmJmMuY29udGFp
bnMmJmMuY29udGFpbnMoZCkpfTpzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKGEs
Yil7cmV0dXJuIGImJiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTpmdW5jdGlv
bihhLGIpe3doaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxi
Yy5hdHRyPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1nKGEpO3JldHVybiBkfHwoYj1iLnRvTG93ZXJD
YXNlKCkpLChjPWUuYXR0ckhhbmRsZVtiXSk/YyhhKTpkfHwkP2EuZ2V0QXR0cmlidXRlKGIpOihj
PWEuZ2V0QXR0cmlidXRlTm9kZShiKSxjP3R5cGVvZiBhW2JdPT0iYm9vbGVhbiI/YVtiXT9iOm51
bGw6Yy5zcGVjaWZpZWQ/Yy52YWx1ZTpudWxsOm51bGwpfSxlPWJjLnNlbGVjdG9ycz17Y2FjaGVM
ZW5ndGg6NTAsY3JlYXRlUHNldWRvOnosbWF0Y2g6VyxhdHRySGFuZGxlOlo/e306e2hyZWY6ZnVu
Y3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0sdHlwZTpmdW5jdGlvbihh
KXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LGZpbmQ6e0lEOmQ/ZnVuY3Rpb24oYSxi
LGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09biYmIWMpe3ZhciBkPWIuZ2V0RWxlbWVu
dEJ5SWQoYSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9bZF06W119fTpmdW5jdGlvbihhLGMsZCl7
aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPT1uJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJ
ZChhKTtyZXR1cm4gZT9lLmlkPT09YXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9PW4mJmUu
Z2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZT09PWE/W2VdOmI6W119fSxUQUc6WT9mdW5jdGlv
bihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09bilyZXR1cm4gYi5nZXRF
bGVtZW50c0J5VGFnTmFtZShhKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlU
YWdOYW1lKGEpO2lmKGE9PT0iKiIpe3ZhciBkLGU9W10sZj0wO2Zvcig7ZD1jW2ZdO2YrKylkLm5v
ZGVUeXBlPT09MSYmZS5wdXNoKGQpO3JldHVybiBlfXJldHVybiBjfSxOQU1FOmJhJiZmdW5jdGlv
bihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlOYW1lIT09bilyZXR1cm4gYi5nZXRFbGVt
ZW50c0J5TmFtZShuYW1lKX0sQ0xBU1M6XyYmZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUhPT1uJiYhYylyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGEpfX0scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntk
aXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4i
OntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0
dXJuIGFbMV09YVsxXS5yZXBsYWNlKFYsIiIpLGFbM109KGFbNF18fGFbNV18fCIiKS5yZXBsYWNl
KFYsIiIpLGFbMl09PT0ifj0iJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJ
TEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLGFbMV09PT0ibnRo
Ij8oYVsyXXx8YmMuZXJyb3IoYVswXSksYVszXT0rKGFbM10/YVs0XSsoYVs1XXx8MSk6MiooYVsy
XT09PSJldmVuInx8YVsyXT09PSJvZGQiKSksYVs0XT0rKGFbNl0rYVs3XXx8YVsyXT09PSJvZGQi
KSk6YVsyXSYmYmMuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYo
Vy5DSElMRC50ZXN0KGFbMF0pKXJldHVybiBudWxsO2lmKGFbM10pYVsyXT1hWzNdO2Vsc2UgaWYo
Yj1hWzRdKU8udGVzdChiKSYmKGM9YmgoYiwhMCkpJiYoYz1iLmluZGV4T2YoIikiLGIubGVuZ3Ro
LWMpLWIubGVuZ3RoKSYmKGI9Yi5zbGljZSgwLGMpLGFbMF09YVswXS5zbGljZSgwLGMpKSxhWzJd
PWI7cmV0dXJuIGEuc2xpY2UoMCwzKX19LGZpbHRlcjp7SUQ6ZD9mdW5jdGlvbihhKXtyZXR1cm4g
YT1hLnJlcGxhY2UoViwiIiksZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0QXR0cmlidXRlKCJpZCIp
PT09YX19OmZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShWLCIiKSxmdW5jdGlvbihiKXt2
YXIgYz10eXBlb2YgYi5nZXRBdHRyaWJ1dGVOb2RlIT09biYmYi5nZXRBdHRyaWJ1dGVOb2RlKCJp
ZCIpO3JldHVybiBjJiZjLnZhbHVlPT09YX19LFRBRzpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSIq
Ij9mdW5jdGlvbigpe3JldHVybiEwfTooYT1hLnJlcGxhY2UoViwiIikudG9Mb3dlckNhc2UoKSxm
dW5jdGlvbihiKXtyZXR1cm4gYi5ub2RlTmFtZSYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09
YX0pfSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYj1CW29dW2FdO3JldHVybiBifHwoYj1CKGEsbmV3
IFJlZ0V4cCgiKF58IitFKyIpIithKyIoIitFKyJ8JCkiKSkpLGZ1bmN0aW9uKGEpe3JldHVybiBi
LnRlc3QoYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PW4mJmEuZ2V0QXR0cmli
dXRlKCJjbGFzcyIpfHwiIil9fSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24o
ZCxlKXt2YXIgZj1iYy5hdHRyKGQsYSk7cmV0dXJuIGY9PW51bGw/Yj09PSIhPSI6Yj8oZis9IiIs
Yj09PSI9Ij9mPT09YzpiPT09IiE9Ij9mIT09YzpiPT09Il49Ij9jJiZmLmluZGV4T2YoYyk9PT0w
OmI9PT0iKj0iP2MmJmYuaW5kZXhPZihjKT4tMTpiPT09IiQ9Ij9jJiZmLnN1YnN0cihmLmxlbmd0
aC1jLmxlbmd0aCk9PT1jOmI9PT0ifj0iPygiICIrZisiICIpLmluZGV4T2YoYyk+LTE6Yj09PSJ8
PSI/Zj09PWN8fGYuc3Vic3RyKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpm
dW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYT09PSJudGgiP2Z1bmN0aW9uKGEpe3ZhciBiLGUsZj1h
LnBhcmVudE5vZGU7aWYoYz09PTEmJmQ9PT0wKXJldHVybiEwO2lmKGYpe2U9MDtmb3IoYj1mLmZp
cnN0Q2hpbGQ7YjtiPWIubmV4dFNpYmxpbmcpaWYoYi5ub2RlVHlwZT09PTEpe2UrKztpZihhPT09
YilicmVha319cmV0dXJuIGUtPWQsZT09PWN8fGUlYz09PTAmJmUvYz49MH06ZnVuY3Rpb24oYil7
dmFyIGM9Yjtzd2l0Y2goYSl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShjPWMucHJldmlv
dXNTaWJsaW5nKWlmKGMubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGE9PT0iZmlyc3QiKXJldHVy
biEwO2M9YjtjYXNlImxhc3QiOndoaWxlKGM9Yy5uZXh0U2libGluZylpZihjLm5vZGVUeXBlPT09
MSlyZXR1cm4hMTtyZXR1cm4hMH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWUucHNl
dWRvc1thXXx8ZS5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGJjLmVycm9yKCJ1bnN1cHBv
cnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGRbb10/ZChiKTpkLmxlbmd0aD4xPyhjPVthLGEsIiIs
Yl0sZS5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/eihmdW5jdGlv
bihhLGMpe3ZhciBlLGY9ZChhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWU9eS5jYWxsKGEsZltn
XSksYVtlXT0hKGNbZV09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZChhLDAsYyl9KTpkfX0s
cHNldWRvczp7bm90OnooZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWkoYS5yZXBsYWNlKEws
IiQxIikpO3JldHVybiBkW29dP3ooZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxl
LFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSlpZihmPWdbaF0pYVtoXT0hKGJbaF09Zil9KTpmdW5j
dGlvbihhLGUsZil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLCFjLnBvcCgpfX0pLGhhczp6
KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYmMoYSxiKS5sZW5ndGg+MH19
KSxjb250YWluczp6KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0
Q29udGVudHx8Yi5pbm5lclRleHR8fGYoYikpLmluZGV4T2YoYSk+LTF9fSksZW5hYmxlZDpmdW5j
dGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1
cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiEhYS5jaGVja2VkfHxiPT09Im9wdGlv
biImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9k
ZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIWUucHNldWRvcy5lbXB0eShhKX0sZW1wdHk6ZnVuY3Rpb24oYSl7dmFy
IGI7YT1hLmZpcnN0Q2hpbGQ7d2hpbGUoYSl7aWYoYS5ub2RlTmFtZT4iQCJ8fChiPWEubm9kZVR5
cGUpPT09M3x8Yj09PTQpcmV0dXJuITE7YT1hLm5leHRTaWJsaW5nfXJldHVybiEwfSxoZWFkZXI6
ZnVuY3Rpb24oYSl7cmV0dXJuIFQudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXt2
YXIgYixjO3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYoYj1hLnR5
cGUpPT09InRleHQiJiYoKGM9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSk9PW51bGx8fGMudG9Mb3dl
ckNhc2UoKT09PWIpfSxyYWRpbzpiZCgicmFkaW8iKSxjaGVja2JveDpiZCgiY2hlY2tib3giKSxm
aWxlOmJkKCJmaWxlIikscGFzc3dvcmQ6YmQoInBhc3N3b3JkIiksaW1hZ2U6YmQoImltYWdlIiks
c3VibWl0OmJlKCJzdWJtaXQiKSxyZXNldDpiZSgicmVzZXQiKSxidXR0b246ZnVuY3Rpb24oYSl7
dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiPT09ImlucHV0IiYmYS50eXBl
PT09ImJ1dHRvbiJ8fGI9PT0iYnV0dG9uIn0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVz
dChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7dmFyIGI9YS5vd25lckRvY3VtZW50O3Jl
dHVybiBhPT09Yi5hY3RpdmVFbGVtZW50JiYoIWIuaGFzRm9jdXN8fGIuaGFzRm9jdXMoKSkmJigh
IWEudHlwZXx8ISFhLmhyZWYpfSxhY3RpdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVy
RG9jdW1lbnQuYWN0aXZlRWxlbWVudH0sZmlyc3Q6YmYoZnVuY3Rpb24oYSxiLGMpe3JldHVyblsw
XX0pLGxhc3Q6YmYoZnVuY3Rpb24oYSxiLGMpe3JldHVybltiLTFdfSksZXE6YmYoZnVuY3Rpb24o
YSxiLGMpe3JldHVybltjPDA/YytiOmNdfSksZXZlbjpiZihmdW5jdGlvbihhLGIsYyl7Zm9yKHZh
ciBkPTA7ZDxiO2QrPTIpYS5wdXNoKGQpO3JldHVybiBhfSksb2RkOmJmKGZ1bmN0aW9uKGEsYixj
KXtmb3IodmFyIGQ9MTtkPGI7ZCs9MilhLnB1c2goZCk7cmV0dXJuIGF9KSxsdDpiZihmdW5jdGlv
bihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0p
LGd0OmJmKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1c2go
ZCk7cmV0dXJuIGF9KX19LGo9cy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihhLGIp
e3JldHVybiBhPT09Yj8oaz0hMCwwKTooIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb246YS5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbihiKSY0KT8tMToxfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVy
biBrPSEwLDA7aWYoYS5zb3VyY2VJbmRleCYmYi5zb3VyY2VJbmRleClyZXR1cm4gYS5zb3VyY2VJ
bmRleC1iLnNvdXJjZUluZGV4O3ZhciBjLGQsZT1bXSxmPVtdLGc9YS5wYXJlbnROb2RlLGg9Yi5w
YXJlbnROb2RlLGk9ZztpZihnPT09aClyZXR1cm4gYmcoYSxiKTtpZighZylyZXR1cm4tMTtpZigh
aClyZXR1cm4gMTt3aGlsZShpKWUudW5zaGlmdChpKSxpPWkucGFyZW50Tm9kZTtpPWg7d2hpbGUo
aSlmLnVuc2hpZnQoaSksaT1pLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2
YXIgaj0wO2o8YyYmajxkO2orKylpZihlW2pdIT09ZltqXSlyZXR1cm4gYmcoZVtqXSxmW2pdKTty
ZXR1cm4gaj09PWM/YmcoYSxmW2pdLC0xKTpiZyhlW2pdLGIsMSl9LFswLDBdLnNvcnQoaiksbT0h
ayxiYy51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9MTtrPW0sYS5zb3J0KGopO2lmKGsp
Zm9yKDtiPWFbY107YysrKWI9PT1hW2MtMV0mJmEuc3BsaWNlKGMtLSwxKTtyZXR1cm4gYX0sYmMu
ZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2du
aXplZCBleHByZXNzaW9uOiAiK2EpfSxpPWJjLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxk
PVtdLGU9W10sZj1EW29dW2FdO2lmKCFmKXtifHwoYj1iaChhKSksYz1iLmxlbmd0aDt3aGlsZShj
LS0pZj1ibShiW2NdKSxmW29dP2QucHVzaChmKTplLnB1c2goZik7Zj1EKGEsYm4oZSxkKSl9cmV0
dXJuIGZ9LHIucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYSxiPWJwLGM9Lyd8XFwv
ZyxkPS9cPVtceDIwXHRcclxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLGU9WyI6
Zm9jdXMiXSxmPVsiOmFjdGl2ZSIsIjpmb2N1cyJdLGg9cy5tYXRjaGVzU2VsZWN0b3J8fHMubW96
TWF0Y2hlc1NlbGVjdG9yfHxzLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8cy5vTWF0Y2hlc1NlbGVj
dG9yfHxzLm1zTWF0Y2hlc1NlbGVjdG9yO1goZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxzZWxl
Y3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3Rv
ckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8ZS5wdXNoKCJcXFsiK0UrIiooPzpjaGVja2VkfGRp
c2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpLGEucXVlcnlT
ZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGUucHVzaCgiOmNoZWNrZWQiKX0pLFgoZnVu
Y3Rpb24oYSl7YS5pbm5lckhUTUw9IjxwIHRlc3Q9Jyc+PC9wPiIsYS5xdWVyeVNlbGVjdG9yQWxs
KCJbdGVzdF49JyddIikubGVuZ3RoJiZlLnB1c2goIlsqXiRdPSIrRSsiKig/OlwiXCJ8JycpIiks
YS5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdoaWRkZW4nLz4iLGEucXVlcnlTZWxlY3RvckFsbCgi
OmVuYWJsZWQiKS5sZW5ndGh8fGUucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKX0pLGU9bmV3
IFJlZ0V4cChlLmpvaW4oInwiKSksYnA9ZnVuY3Rpb24oYSxkLGYsZyxoKXtpZighZyYmIWgmJigh
ZXx8IWUudGVzdChhKSkpe3ZhciBpLGosaz0hMCxsPW8sbT1kLG49ZC5ub2RlVHlwZT09PTkmJmE7
aWYoZC5ub2RlVHlwZT09PTEmJmQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXtp
PWJoKGEpLChrPWQuZ2V0QXR0cmlidXRlKCJpZCIpKT9sPWsucmVwbGFjZShjLCJcXCQmIik6ZC5z
ZXRBdHRyaWJ1dGUoImlkIixsKSxsPSJbaWQ9JyIrbCsiJ10gIixqPWkubGVuZ3RoO3doaWxlKGot
LSlpW2pdPWwraVtqXS5qb2luKCIiKTttPVIudGVzdChhKSYmZC5wYXJlbnROb2RlfHxkLG49aS5q
b2luKCIsIil9aWYobil0cnl7cmV0dXJuIHcuYXBwbHkoZix4LmNhbGwobS5xdWVyeVNlbGVjdG9y
QWxsKG4pLDApKSxmfWNhdGNoKHApe31maW5hbGx5e2t8fGQucmVtb3ZlQXR0cmlidXRlKCJpZCIp
fX1yZXR1cm4gYihhLGQsZixnLGgpfSxoJiYoWChmdW5jdGlvbihiKXthPWguY2FsbChiLCJkaXYi
KTt0cnl7aC5jYWxsKGIsIlt0ZXN0IT0nJ106c2l6emxlIiksZi5wdXNoKCIhPSIsSil9Y2F0Y2go
Yyl7fX0pLGY9bmV3IFJlZ0V4cChmLmpvaW4oInwiKSksYmMubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0
aW9uKGIsYyl7Yz1jLnJlcGxhY2UoZCwiPSckMSddIik7aWYoIWcoYikmJiFmLnRlc3QoYykmJigh
ZXx8IWUudGVzdChjKSkpdHJ5e3ZhciBpPWguY2FsbChiLGMpO2lmKGl8fGF8fGIuZG9jdW1lbnQm
JmIuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gaX1jYXRjaChqKXt9cmV0dXJuIGJjKGMs
bnVsbCxudWxsLFtiXSkubGVuZ3RoPjB9KX0oKSxlLnBzZXVkb3MubnRoPWUucHNldWRvcy5lcSxl
LmZpbHRlcnM9YnEucHJvdG90eXBlPWUucHNldWRvcyxlLnNldEZpbHRlcnM9bmV3IGJxLGJjLmF0
dHI9cC5hdHRyLHAuZmluZD1iYyxwLmV4cHI9YmMuc2VsZWN0b3JzLHAuZXhwclsiOiJdPXAuZXhw
ci5wc2V1ZG9zLHAudW5pcXVlPWJjLnVuaXF1ZVNvcnQscC50ZXh0PWJjLmdldFRleHQscC5pc1hN
TERvYz1iYy5pc1hNTCxwLmNvbnRhaW5zPWJjLmNvbnRhaW5zfShhKTt2YXIgYmM9L1VudGlsJC8s
YmQ9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sYmU9L14uW146I1xbXC4sXSokLyxi
Zj1wLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LGJnPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxu
ZXh0OiEwLHByZXY6ITB9O3AuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxl
LGYsZyxoPXRoaXM7aWYodHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBwKGEpLmZpbHRlcihmdW5j
dGlvbigpe2ZvcihiPTAsYz1oLmxlbmd0aDtiPGM7YisrKWlmKHAuY29udGFpbnMoaFtiXSx0aGlz
KSlyZXR1cm4hMH0pO2c9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpO2ZvcihiPTAsYz10aGlz
Lmxlbmd0aDtiPGM7YisrKXtkPWcubGVuZ3RoLHAuZmluZChhLHRoaXNbYl0sZyk7aWYoYj4wKWZv
cihlPWQ7ZTxnLmxlbmd0aDtlKyspZm9yKGY9MDtmPGQ7ZisrKWlmKGdbZl09PT1nW2VdKXtnLnNw
bGljZShlLS0sMSk7YnJlYWt9fXJldHVybiBnfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1wKGEs
dGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8
ZDtiKyspaWYocC5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihh
KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYmoodGhpcyxhLCExKSwibm90IixhKX0sZmlsdGVyOmZ1
bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhiaih0aGlzLGEsITApLCJmaWx0ZXIiLGEp
fSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJih0eXBlb2YgYT09InN0cmluZyI/YmYudGVzdChh
KT9wKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpwLmZpbHRlcihhLHRoaXMpLmxl
bmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3Zh
ciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz1iZi50ZXN0KGEpfHx0eXBlb2YgYSE9InN0cmlu
ZyI/cChhLGJ8fHRoaXMuY29udGV4dCk6MDtmb3IoO2Q8ZTtkKyspe2M9dGhpc1tkXTt3aGlsZShj
JiZjLm93bmVyRG9jdW1lbnQmJmMhPT1iJiZjLm5vZGVUeXBlIT09MTEpe2lmKGc/Zy5pbmRleChj
KT4tMTpwLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpe2YucHVzaChjKTticmVha31jPWMucGFy
ZW50Tm9kZX19cmV0dXJuIGY9Zi5sZW5ndGg+MT9wLnVuaXF1ZShmKTpmLHRoaXMucHVzaFN0YWNr
KGYsImNsb3Nlc3QiLGEpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT90eXBlb2YgYT09InN0
cmluZyI/cC5pbkFycmF5KHRoaXNbMF0scChhKSk6cC5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0
aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5wcmV2QWxsKCkubGVuZ3RoOi0x
fSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09InN0cmluZyI/cChhLGIpOnAubWFr
ZUFycmF5KGEmJmEubm9kZVR5cGU/W2FdOmEpLGQ9cC5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVy
biB0aGlzLnB1c2hTdGFjayhiaChjWzBdKXx8YmgoZFswXSk/ZDpwLnVuaXF1ZShkKSl9LGFkZEJh
Y2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKGE9PW51bGw/dGhpcy5wcmV2T2JqZWN0OnRo
aXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pLHAuZm4uYW5kU2VsZj1wLmZuLmFkZEJhY2sscC5l
YWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5v
ZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBwLmRpcihhLCJw
YXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGlyKGEs
InBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBiaShhLCJuZXh0U2libGlu
ZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBiaShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4
dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gcC5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpm
dW5jdGlvbihhKXtyZXR1cm4gcC5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpm
dW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGls
OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcC5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2li
bGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHAuc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmly
c3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHAuc2libGluZyhhLmZpcnN0
Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gcC5ub2RlTmFtZShhLCJpZnJhbWUi
KT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50OnAubWVyZ2UoW10s
YS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7cC5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBl
PXAubWFwKHRoaXMsYixjKTtyZXR1cm4gYmMudGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJz
dHJpbmciJiYoZT1wLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFiZ1thXT9wLnVuaXF1
ZShlKTplLHRoaXMubGVuZ3RoPjEmJmJkLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSx0aGlzLnB1
c2hTdGFjayhlLGEsay5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX19KSxwLmV4dGVuZCh7Zmls
dGVyOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksYi5sZW5ndGg9
PT0xP3AuZmluZC5tYXRjaGVzU2VsZWN0b3IoYlswXSxhKT9bYlswXV06W106cC5maW5kLm1hdGNo
ZXMoYSxiKX0sZGlyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1bXSxmPWFbY107d2hpbGUoZiYmZi5u
b2RlVHlwZSE9PTkmJihkPT09Ynx8Zi5ub2RlVHlwZSE9PTF8fCFwKGYpLmlzKGQpKSlmLm5vZGVU
eXBlPT09MSYmZS5wdXNoKGYpLGY9ZltjXTtyZXR1cm4gZX0sc2libGluZzpmdW5jdGlvbihhLGIp
e3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZj
LnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIGJsPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRp
fGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhl
YWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFy
eXx0aW1lfHZpZGVvIixibT0vIGpRdWVyeVxkKz0iKD86bnVsbHxcZCspIi9nLGJuPS9eXHMrLyxi
bz0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChb
XHc6XSspW14+XSopXC8+L2dpLGJwPS88KFtcdzpdKykvLGJxPS88dGJvZHkvaSxicj0vPHwmIz9c
dys7Lyxicz0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLGJ0PS88KD86c2NyaXB0fG9iamVjdHxl
bWJlZHxvcHRpb258c3R5bGUpL2ksYnU9bmV3IFJlZ0V4cCgiPCg/OiIrYmwrIilbXFxzLz5dIiwi
aSIpLGJ2PS9eKD86Y2hlY2tib3h8cmFkaW8pJC8sYnc9L2NoZWNrZWRccyooPzpbXj1dfD1ccyou
Y2hlY2tlZC4pL2ksYng9L1wvKGphdmF8ZWNtYSlzY3JpcHQvaSxieT0vXlxzKjwhKD86XFtDREFU
QVxbfFwtXC0pfFtcXVwtXXsyfT5ccyokL2csYno9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBs
ZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmll
bGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRi
b2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90
cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdy
b3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9k
ZWZhdWx0OlswLCIiLCIiXX0sYkE9YmsoZSksYkI9YkEuYXBwZW5kQ2hpbGQoZS5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7Ynoub3B0Z3JvdXA9Ynoub3B0aW9uLGJ6LnRib2R5PWJ6LnRmb290PWJ6LmNv
bGdyb3VwPWJ6LmNhcHRpb249YnoudGhlYWQsYnoudGg9YnoudGQscC5zdXBwb3J0Lmh0bWxTZXJp
YWxpemV8fChiei5fZGVmYXVsdD1bMSwiWDxkaXY+IiwiPC9kaXY+Il0pLHAuZm4uZXh0ZW5kKHt0
ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBwLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBh
PT09Yj9wLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5v
d25lckRvY3VtZW50fHxlKS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVu
Z3RoKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihwLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbihiKXtwKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhp
c1swXSl7dmFyIGI9cChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3Ro
aXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24o
KXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09
MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3Jh
cElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBwLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0
aW9uKGIpe3AodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5j
dGlvbigpe3ZhciBiPXAodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEp
OmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9cC5pc0Z1bmN0aW9uKGEpO3Jl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cCh0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMs
Yyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5j
dGlvbigpe3Aubm9kZU5hbWUodGhpcywiYm9keSIpfHxwKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMu
Y2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFu
aXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpeyh0aGlzLm5vZGVUeXBlPT09MXx8dGhpcy5ub2Rl
VHlwZT09PTExKSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpeyh0aGlzLm5vZGVUeXBl
PT09MXx8dGhpcy5ub2RlVHlwZT09PTExKSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0
Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKCFiaCh0aGlzWzBdKSlyZXR1cm4gdGhpcy5k
b21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJl
Zm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9cC5jbGVhbihhcmd1bWVu
dHMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1lcmdlKGEsdGhpcyksImJlZm9yZSIsdGhpcy5z
ZWxlY3Rvcil9fSxhZnRlcjpmdW5jdGlvbigpe2lmKCFiaCh0aGlzWzBdKSlyZXR1cm4gdGhpcy5k
b21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJl
Zm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9cC5j
bGVhbihhcmd1bWVudHMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1lcmdlKHRoaXMsYSksImFm
dGVyIix0aGlzLnNlbGVjdG9yKX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtmb3Io
OyhjPXRoaXNbZF0pIT1udWxsO2QrKylpZighYXx8cC5maWx0ZXIoYSxbY10pLmxlbmd0aCkhYiYm
Yy5ub2RlVHlwZT09PTEmJihwLmNsZWFuRGF0YShjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikp
LHAuY2xlYW5EYXRhKFtjXSkpLGMucGFyZW50Tm9kZSYmYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGMpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe3ZhciBhLGI9MDtmb3IoOyhhPXRoaXNb
Yl0pIT1udWxsO2IrKyl7YS5ub2RlVHlwZT09PTEmJnAuY2xlYW5EYXRhKGEuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIioiKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENo
aWxkKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1hPT1udWxsPyEx
OmEsYj1iPT1udWxsP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBwLmNsb25lKHRoaXMs
YSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBwLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEp
e3ZhciBjPXRoaXNbMF18fHt9LGQ9MCxlPXRoaXMubGVuZ3RoO2lmKGE9PT1iKXJldHVybiBjLm5v
ZGVUeXBlPT09MT9jLmlubmVySFRNTC5yZXBsYWNlKGJtLCIiKTpiO2lmKHR5cGVvZiBhPT0ic3Ry
aW5nIiYmIWJzLnRlc3QoYSkmJihwLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8IWJ1LnRlc3QoYSkp
JiYocC5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlfHwhYm4udGVzdChhKSkmJiFielsoYnAuZXhl
YyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKGJvLCI8JDE+PC8k
Mj4iKTt0cnl7Zm9yKDtkPGU7ZCsrKWM9dGhpc1tkXXx8e30sYy5ub2RlVHlwZT09PTEmJihwLmNs
ZWFuRGF0YShjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGMuaW5uZXJIVE1MPWEpO2M9MH1j
YXRjaChmKXt9fWMmJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVu
Z3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGJoKHRoaXNbMF0pP3RoaXMubGVu
Z3RoP3RoaXMucHVzaFN0YWNrKHAocC5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgi
LGEpOnRoaXM6cC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1wKHRo
aXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pOih0eXBlb2Yg
YSE9InN0cmluZyImJihhPXAoYSkuZGV0YWNoKCkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBi
PXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7cCh0aGlzKS5yZW1vdmUoKSxiP3Ao
YikuYmVmb3JlKGEpOnAoYykuYXBwZW5kKGEpfSkpfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJu
IHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGMsZCl7YT1bXS5jb25jYXQu
YXBwbHkoW10sYSk7dmFyIGUsZixnLGgsaT0wLGo9YVswXSxrPVtdLGw9dGhpcy5sZW5ndGg7aWYo
IXAuc3VwcG9ydC5jaGVja0Nsb25lJiZsPjEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYncudGVzdChq
KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7cCh0aGlzKS5kb21NYW5pcChhLGMsZCl9KTtp
ZihwLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1wKHRo
aXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2YuaHRtbCgpOmIpLGYuZG9tTWFuaXAoYSxjLGQpfSk7
aWYodGhpc1swXSl7ZT1wLmJ1aWxkRnJhZ21lbnQoYSx0aGlzLGspLGc9ZS5mcmFnbWVudCxmPWcu
Zmlyc3RDaGlsZCxnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmKGc9Zik7aWYoZil7Yz1jJiZwLm5v
ZGVOYW1lKGYsInRyIik7Zm9yKGg9ZS5jYWNoZWFibGV8fGwtMTtpPGw7aSsrKWQuY2FsbChjJiZw
Lm5vZGVOYW1lKHRoaXNbaV0sInRhYmxlIik/YkModGhpc1tpXSwidGJvZHkiKTp0aGlzW2ldLGk9
PT1oP2c6cC5jbG9uZShnLCEwLCEwKSl9Zz1mPW51bGwsay5sZW5ndGgmJnAuZWFjaChrLGZ1bmN0
aW9uKGEsYil7Yi5zcmM/cC5hamF4P3AuYWpheCh7dXJsOmIuc3JjLHR5cGU6IkdFVCIsZGF0YVR5
cGU6InNjcmlwdCIsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJvd3MiOiEwfSk6cC5lcnJvcigibm8g
YWpheCIpOnAuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8
IiIpLnJlcGxhY2UoYnksIiIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChiKX0pfXJldHVybiB0aGlzfX0pLHAuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGMsZCl7dmFy
IGYsZyxoLGk9YVswXTtyZXR1cm4gYz1jfHxlLGM9IWMubm9kZVR5cGUmJmNbMF18fGMsYz1jLm93
bmVyRG9jdW1lbnR8fGMsYS5sZW5ndGg9PT0xJiZ0eXBlb2YgaT09InN0cmluZyImJmkubGVuZ3Ro
PDUxMiYmYz09PWUmJmkuY2hhckF0KDApPT09IjwiJiYhYnQudGVzdChpKSYmKHAuc3VwcG9ydC5j
aGVja0Nsb25lfHwhYncudGVzdChpKSkmJihwLnN1cHBvcnQuaHRtbDVDbG9uZXx8IWJ1LnRlc3Qo
aSkpJiYoZz0hMCxmPXAuZnJhZ21lbnRzW2ldLGg9ZiE9PWIpLGZ8fChmPWMuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpLHAuY2xlYW4oYSxjLGYsZCksZyYmKHAuZnJhZ21lbnRzW2ldPWgmJmYpKSx7
ZnJhZ21lbnQ6ZixjYWNoZWFibGU6Z319LHAuZnJhZ21lbnRzPXt9LHAuZWFjaCh7YXBwZW5kVG86
ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0
QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7cC5m
blthXT1mdW5jdGlvbihjKXt2YXIgZCxlPTAsZj1bXSxnPXAoYyksaD1nLmxlbmd0aCxpPXRoaXMu
bGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKChpPT1udWxsfHxpJiZpLm5vZGVUeXBl
PT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT0xKSYmaD09PTEpcmV0dXJuIGdbYl0odGhpc1sw
XSksdGhpcztmb3IoO2U8aDtlKyspZD0oZT4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpLHAo
Z1tlXSlbYl0oZCksZj1mLmNvbmNhdChkKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZixhLGcuc2Vs
ZWN0b3IpfX0pLHAuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc7cC5z
dXBwb3J0Lmh0bWw1Q2xvbmV8fHAuaXNYTUxEb2MoYSl8fCFidS50ZXN0KCI8IithLm5vZGVOYW1l
KyI+Iik/Zz1hLmNsb25lTm9kZSghMCk6KGJCLmlubmVySFRNTD1hLm91dGVySFRNTCxiQi5yZW1v
dmVDaGlsZChnPWJCLmZpcnN0Q2hpbGQpKTtpZigoIXAuc3VwcG9ydC5ub0Nsb25lRXZlbnR8fCFw
LnN1cHBvcnQubm9DbG9uZUNoZWNrZWQpJiYoYS5ub2RlVHlwZT09PTF8fGEubm9kZVR5cGU9PT0x
MSkmJiFwLmlzWE1MRG9jKGEpKXtiRShhLGcpLGQ9YkYoYSksZT1iRihnKTtmb3IoZj0wO2RbZl07
KytmKWVbZl0mJmJFKGRbZl0sZVtmXSl9aWYoYil7YkQoYSxnKTtpZihjKXtkPWJGKGEpLGU9YkYo
Zyk7Zm9yKGY9MDtkW2ZdOysrZiliRChkW2ZdLGVbZl0pfX1yZXR1cm4gZD1lPW51bGwsZ30sY2xl
YW46ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scSxyLHM9Yj09PWUm
JmJBLHQ9W107aWYoIWJ8fHR5cGVvZiBiLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmlu
ZWQiKWI9ZTtmb3IoZj0wOyhoPWFbZl0pIT1udWxsO2YrKyl7dHlwZW9mIGg9PSJudW1iZXIiJiYo
aCs9IiIpO2lmKCFoKWNvbnRpbnVlO2lmKHR5cGVvZiBoPT0ic3RyaW5nIilpZighYnIudGVzdCho
KSloPWIuY3JlYXRlVGV4dE5vZGUoaCk7ZWxzZXtzPXN8fGJrKGIpLGw9Yi5jcmVhdGVFbGVtZW50
KCJkaXYiKSxzLmFwcGVuZENoaWxkKGwpLGg9aC5yZXBsYWNlKGJvLCI8JDE+PC8kMj4iKSxpPShi
cC5leGVjKGgpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGo9YnpbaV18fGJ6Ll9kZWZhdWx0
LGs9alswXSxsLmlubmVySFRNTD1qWzFdK2gralsyXTt3aGlsZShrLS0pbD1sLmxhc3RDaGlsZDtp
ZighcC5zdXBwb3J0LnRib2R5KXttPWJxLnRlc3QoaCksbj1pPT09InRhYmxlIiYmIW0/bC5maXJz
dENoaWxkJiZsLmZpcnN0Q2hpbGQuY2hpbGROb2RlczpqWzFdPT09Ijx0YWJsZT4iJiYhbT9sLmNo
aWxkTm9kZXM6W107Zm9yKGc9bi5sZW5ndGgtMTtnPj0wOy0tZylwLm5vZGVOYW1lKG5bZ10sInRi
b2R5IikmJiFuW2ddLmNoaWxkTm9kZXMubGVuZ3RoJiZuW2ddLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQobltnXSl9IXAuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmYm4udGVzdChoKSYmbC5pbnNl
cnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShibi5leGVjKGgpWzBdKSxsLmZpcnN0Q2hpbGQpLGg9
bC5jaGlsZE5vZGVzLGwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKX1oLm5vZGVUeXBlP3QucHVz
aChoKTpwLm1lcmdlKHQsaCl9bCYmKGg9bD1zPW51bGwpO2lmKCFwLnN1cHBvcnQuYXBwZW5kQ2hl
Y2tlZClmb3IoZj0wOyhoPXRbZl0pIT1udWxsO2YrKylwLm5vZGVOYW1lKGgsImlucHV0Iik/Ykco
aCk6dHlwZW9mIGguZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiZwLmdyZXAoaC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSxiRyk7aWYoYyl7cT1mdW5jdGlvbihhKXtpZigh
YS50eXBlfHxieC50ZXN0KGEudHlwZSkpcmV0dXJuIGQ/ZC5wdXNoKGEucGFyZW50Tm9kZT9hLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6YSk6Yy5hcHBlbmRDaGlsZChhKX07Zm9yKGY9MDsoaD10
W2ZdKSE9bnVsbDtmKyspaWYoIXAubm9kZU5hbWUoaCwic2NyaXB0Iil8fCFxKGgpKWMuYXBwZW5k
Q2hpbGQoaCksdHlwZW9mIGguZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiYocj1w
LmdyZXAocC5tZXJnZShbXSxoLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkscSksdC5z
cGxpY2UuYXBwbHkodCxbZisxLDBdLmNvbmNhdChyKSksZis9ci5sZW5ndGgpfXJldHVybiB0fSxj
bGVhbkRhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnPTAsaD1wLmV4cGFuZG8saT1wLmNh
Y2hlLGo9cC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8saz1wLmV2ZW50LnNwZWNpYWw7Zm9yKDsoZT1h
W2ddKSE9bnVsbDtnKyspaWYoYnx8cC5hY2NlcHREYXRhKGUpKXtkPWVbaF0sYz1kJiZpW2RdO2lm
KGMpe2lmKGMuZXZlbnRzKWZvcihmIGluIGMuZXZlbnRzKWtbZl0/cC5ldmVudC5yZW1vdmUoZSxm
KTpwLnJlbW92ZUV2ZW50KGUsZixjLmhhbmRsZSk7aVtkXSYmKGRlbGV0ZSBpW2RdLGo/ZGVsZXRl
IGVbaF06ZS5yZW1vdmVBdHRyaWJ1dGU/ZS5yZW1vdmVBdHRyaWJ1dGUoaCk6ZVtoXT1udWxsLHAu
ZGVsZXRlZElkcy5wdXNoKGQpKX19fX0pLGZ1bmN0aW9uKCl7dmFyIGEsYjtwLnVhTWF0Y2g9ZnVu
Y3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7dmFyIGI9LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8u
ZXhlYyhhKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8LyhvcGVyYSkoPzouKnZl
cnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMoYSl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoYSl8
fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8
KS8uZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9
fSxhPXAudWFNYXRjaChnLnVzZXJBZ2VudCksYj17fSxhLmJyb3dzZXImJihiW2EuYnJvd3Nlcl09
ITAsYi52ZXJzaW9uPWEudmVyc2lvbiksYi5jaHJvbWU/Yi53ZWJraXQ9ITA6Yi53ZWJraXQmJihi
LnNhZmFyaT0hMCkscC5icm93c2VyPWIscC5zdWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7
cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1wLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFz
cz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10
aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24gYyhjLGQpe3JldHVybiBkJiZkIGluc3RhbmNlb2Yg
cCYmIShkIGluc3RhbmNlb2YgYSkmJihkPWEoZCkpLHAuZm4uaW5pdC5jYWxsKHRoaXMsYyxkLGIp
fSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm47dmFyIGI9YShlKTtyZXR1cm4gYX19KCk7dmFyIGJI
LGJJLGJKLGJLPS9hbHBoYVwoW14pXSpcKS9pLGJMPS9vcGFjaXR5PShbXildKikvLGJNPS9eKHRv
cHxyaWdodHxib3R0b218bGVmdCkkLyxiTj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sYk89
L15tYXJnaW4vLGJQPW5ldyBSZWdFeHAoIl4oIitxKyIpKC4qKSQiLCJpIiksYlE9bmV3IFJlZ0V4
cCgiXigiK3ErIikoPyFweClbYS16JV0rJCIsImkiKSxiUj1uZXcgUmVnRXhwKCJeKFstK10pPSgi
K3ErIikiLCJpIiksYlM9e30sYlQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlk
ZGVuIixkaXNwbGF5OiJibG9jayJ9LGJVPXtsZXR0ZXJTcGFjaW5nOjAsZm9udFdlaWdodDo0MDB9
LGJWPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sYlc9WyJXZWJraXQiLCJPIiwiTW96
IiwibXMiXSxiWD1wLmZuLnRvZ2dsZTtwLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYyl7cmV0
dXJuIHAuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9wLnN0eWxlKGEs
YyxkKTpwLmNzcyhhLGMpfSxhLGMsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigp
e3JldHVybiBiJCh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBiJCh0aGlzKX0sdG9n
Z2xlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJib29sZWFuIjtyZXR1cm4gcC5pc0Z1
bmN0aW9uKGEpJiZwLmlzRnVuY3Rpb24oYik/YlguYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMu
ZWFjaChmdW5jdGlvbigpeyhjP2E6YloodGhpcykpP3AodGhpcykuc2hvdygpOnAodGhpcykuaGlk
ZSgpfSl9fSkscC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtp
ZihiKXt2YXIgYz1iSChhLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y319fX0sY3NzTnVt
YmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eToh
MCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9h
dCI6cC5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5j
dGlvbihhLGMsZCxlKXtpZighYXx8YS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHwhYS5z
dHlsZSlyZXR1cm47dmFyIGYsZyxoLGk9cC5jYW1lbENhc2UoYyksaj1hLnN0eWxlO2M9cC5jc3NQ
cm9wc1tpXXx8KHAuY3NzUHJvcHNbaV09YlkoaixpKSksaD1wLmNzc0hvb2tzW2NdfHxwLmNzc0hv
b2tzW2ldO2lmKGQ9PT1iKXJldHVybiBoJiYiZ2V0ImluIGgmJihmPWguZ2V0KGEsITEsZSkpIT09
Yj9mOmpbY107Zz10eXBlb2YgZCxnPT09InN0cmluZyImJihmPWJSLmV4ZWMoZCkpJiYoZD0oZlsx
XSsxKSpmWzJdK3BhcnNlRmxvYXQocC5jc3MoYSxjKSksZz0ibnVtYmVyIik7aWYoZD09bnVsbHx8
Zz09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47Zz09PSJudW1iZXIiJiYhcC5jc3NOdW1iZXJb
aV0mJihkKz0icHgiKTtpZighaHx8ISgic2V0ImluIGgpfHwoZD1oLnNldChhLGQsZSkpIT09Yil0
cnl7altjXT1kfWNhdGNoKGspe319LGNzczpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZixnLGgsaT1w
LmNhbWVsQ2FzZShjKTtyZXR1cm4gYz1wLmNzc1Byb3BzW2ldfHwocC5jc3NQcm9wc1tpXT1iWShh
LnN0eWxlLGkpKSxoPXAuY3NzSG9va3NbY118fHAuY3NzSG9va3NbaV0saCYmImdldCJpbiBoJiYo
Zj1oLmdldChhLCEwLGUpKSxmPT09YiYmKGY9YkgoYSxjKSksZj09PSJub3JtYWwiJiZjIGluIGJV
JiYoZj1iVVtjXSksZHx8ZSE9PWI/KGc9cGFyc2VGbG9hdChmKSxkfHxwLmlzTnVtZXJpYyhnKT9n
fHwwOmYpOmZ9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fTtmb3IoZSBpbiBiKWZb
ZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07ZD1jLmNhbGwoYSk7Zm9yKGUgaW4gYilhLnN0
eWxlW2VdPWZbZV07cmV0dXJuIGR9fSksYS5nZXRDb21wdXRlZFN0eWxlP2JIPWZ1bmN0aW9uKGIs
Yyl7dmFyIGQsZSxmLGcsaD1hLmdldENvbXB1dGVkU3R5bGUoYixudWxsKSxpPWIuc3R5bGU7cmV0
dXJuIGgmJihkPWhbY10sZD09PSIiJiYhcC5jb250YWlucyhiLm93bmVyRG9jdW1lbnQsYikmJihk
PXAuc3R5bGUoYixjKSksYlEudGVzdChkKSYmYk8udGVzdChjKSYmKGU9aS53aWR0aCxmPWkubWlu
V2lkdGgsZz1pLm1heFdpZHRoLGkubWluV2lkdGg9aS5tYXhXaWR0aD1pLndpZHRoPWQsZD1oLndp
ZHRoLGkud2lkdGg9ZSxpLm1pbldpZHRoPWYsaS5tYXhXaWR0aD1nKSksZH06ZS5kb2N1bWVudEVs
ZW1lbnQuY3VycmVudFN0eWxlJiYoYkg9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5jdXJyZW50
U3R5bGUmJmEuY3VycmVudFN0eWxlW2JdLGY9YS5zdHlsZTtyZXR1cm4gZT09bnVsbCYmZiYmZlti
XSYmKGU9ZltiXSksYlEudGVzdChlKSYmIWJNLnRlc3QoYikmJihjPWYubGVmdCxkPWEucnVudGlt
ZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZS5sZWZ0LGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWEuY3Vy
cmVudFN0eWxlLmxlZnQpLGYubGVmdD1iPT09ImZvbnRTaXplIj8iMWVtIjplLGU9Zi5waXhlbExl
ZnQrInB4IixmLmxlZnQ9YyxkJiYoYS5ydW50aW1lU3R5bGUubGVmdD1kKSksZT09PSIiPyJhdXRv
IjplfSkscC5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe3AuY3NzSG9va3Nb
Yl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYylyZXR1cm4gYS5vZmZzZXRXaWR0aD09PTAmJmJO
LnRlc3QoYkgoYSwiZGlzcGxheSIpKT9wLnN3YXAoYSxiVCxmdW5jdGlvbigpe3JldHVybiBjYihh
LGIsZCl9KTpjYihhLGIsZCl9LHNldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGJfKGEsYyxkP2Nh
KGEsYixkLHAuc3VwcG9ydC5ib3hTaXppbmcmJnAuY3NzKGEsImJveFNpemluZyIpPT09ImJvcmRl
ci1ib3giKTowKX19fSkscC5zdXBwb3J0Lm9wYWNpdHl8fChwLmNzc0hvb2tzLm9wYWNpdHk9e2dl
dDpmdW5jdGlvbihhLGIpe3JldHVybiBiTC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJl
bnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhw
LiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3Vy
cmVudFN0eWxlLGU9cC5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIs
Zj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJnAudHJpbShmLnJl
cGxhY2UoYkssIiIpKT09PSIiJiZjLnJlbW92ZUF0dHJpYnV0ZSl7Yy5yZW1vdmVBdHRyaWJ1dGUo
ImZpbHRlciIpO2lmKGQmJiFkLmZpbHRlcilyZXR1cm59Yy5maWx0ZXI9YksudGVzdChmKT9mLnJl
cGxhY2UoYkssZSk6ZisiICIrZX19KSxwKGZ1bmN0aW9uKCl7cC5zdXBwb3J0LnJlbGlhYmxlTWFy
Z2luUmlnaHR8fChwLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1
cm4gcC5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LGZ1bmN0aW9uKCl7aWYoYilyZXR1
cm4gYkgoYSwibWFyZ2luUmlnaHQiKX0pfX0pLCFwLnN1cHBvcnQucGl4ZWxQb3NpdGlvbiYmcC5m
bi5wb3NpdGlvbiYmcC5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7cC5jc3NIb29r
c1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyl7aWYoYyl7dmFyIGQ9YkgoYSxiKTtyZXR1cm4gYlEudGVz
dChkKT9wKGEpLnBvc2l0aW9uKClbYl0rInB4IjpkfX19fSl9KSxwLmV4cHImJnAuZXhwci5maWx0
ZXJzJiYocC5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBhLm9mZnNldFdp
ZHRoPT09MCYmYS5vZmZzZXRIZWlnaHQ9PT0wfHwhcC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zm
c2V0cyYmKGEuc3R5bGUmJmEuc3R5bGUuZGlzcGxheXx8YkgoYSwiZGlzcGxheSIpKT09PSJub25l
In0scC5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hcC5leHByLmZpbHRl
cnMuaGlkZGVuKGEpfSkscC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRo
In0sZnVuY3Rpb24oYSxiKXtwLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXt2YXIg
ZCxlPXR5cGVvZiBjPT0ic3RyaW5nIj9jLnNwbGl0KCIgIik6W2NdLGY9e307Zm9yKGQ9MDtkPDQ7
ZCsrKWZbYStiVltkXStiXT1lW2RdfHxlW2QtMl18fGVbMF07cmV0dXJuIGZ9fSxiTy50ZXN0KGEp
fHwocC5jc3NIb29rc1thK2JdLnNldD1iXyl9KTt2YXIgY2Q9LyUyMC9nLGNlPS9cW1xdJC8sY2Y9
L1xyP1xuL2csY2c9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWls
fGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8
dXJsfHdlZWspJC9pLGNoPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pO3AuZm4uZXh0ZW5kKHtzZXJp
YWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gcC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxz
ZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVy
biB0aGlzLmVsZW1lbnRzP3AubWFrZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIo
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tl
ZHx8Y2gudGVzdCh0aGlzLm5vZGVOYW1lKXx8Y2cudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5j
dGlvbihhLGIpe3ZhciBjPXAodGhpcykudmFsKCk7cmV0dXJuIGM9PW51bGw/bnVsbDpwLmlzQXJy
YXkoYyk/cC5tYXAoYyxmdW5jdGlvbihhLGMpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJl
cGxhY2UoY2YsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGNmLCJcclxu
Iil9fSkuZ2V0KCl9fSkscC5wYXJhbT1mdW5jdGlvbihhLGMpe3ZhciBkLGU9W10sZj1mdW5jdGlv
bihhLGIpe2I9cC5pc0Z1bmN0aW9uKGIpP2IoKTpiPT1udWxsPyIiOmIsZVtlLmxlbmd0aF09ZW5j
b2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1w
LmFqYXhTZXR0aW5ncyYmcC5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKHAuaXNBcnJheShh
KXx8YS5qcXVlcnkmJiFwLmlzUGxhaW5PYmplY3QoYSkpcC5lYWNoKGEsZnVuY3Rpb24oKXtmKHRo
aXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGQgaW4gYSljaShkLGFbZF0sYyxmKTtyZXR1
cm4gZS5qb2luKCImIikucmVwbGFjZShjZCwiKyIpfTt2YXIgY2osY2ssY2w9LyMuKiQvLGNtPS9e
KC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsY249L14oPzphYm91dHxhcHB8YXBwXC1zdG9y
YWdlfC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxjbz0vXig/OkdFVHxIRUFEKSQv
LGNwPS9eXC9cLy8sY3E9L1w/Lyxjcj0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxb
XjxdKikqPFwvc2NyaXB0Pi9naSxjcz0vKFs/Jl0pXz1bXiZdKi8sY3Q9L14oW1x3XCtcLlwtXSs6
KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLGN1PXAuZm4ubG9hZCxjdj17fSxjdz17
fSxjeD1bIiovIl0rWyIqIl07dHJ5e2NrPWYuaHJlZn1jYXRjaChjeSl7Y2s9ZS5jcmVhdGVFbGVt
ZW50KCJhIiksY2suaHJlZj0iIixjaz1jay5ocmVmfWNqPWN0LmV4ZWMoY2sudG9Mb3dlckNhc2Uo
KSl8fFtdLHAuZm4ubG9hZD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZj
dSlyZXR1cm4gY3UuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4g
dGhpczt2YXIgZSxmLGcsaD10aGlzLGk9YS5pbmRleE9mKCIgIik7cmV0dXJuIGk+PTAmJihlPWEu
c2xpY2UoaSxhLmxlbmd0aCksYT1hLnNsaWNlKDAsaSkpLHAuaXNGdW5jdGlvbihjKT8oZD1jLGM9
Yik6YyYmdHlwZW9mIGM9PSJvYmplY3QiJiYoZj0iUE9TVCIpLHAuYWpheCh7dXJsOmEsdHlwZTpm
LGRhdGFUeXBlOiJodG1sIixkYXRhOmMsY29tcGxldGU6ZnVuY3Rpb24oYSxiKXtkJiZoLmVhY2go
ZCxnfHxbYS5yZXNwb25zZVRleHQsYixhXSl9fSkuZG9uZShmdW5jdGlvbihhKXtnPWFyZ3VtZW50
cyxoLmh0bWwoZT9wKCI8ZGl2PiIpLmFwcGVuZChhLnJlcGxhY2UoY3IsIiIpKS5maW5kKGUpOmEp
fSksdGhpc30scC5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJv
ciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3AuZm5bYl09
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxwLmVhY2goWyJnZXQiLCJwb3N0Il0s
ZnVuY3Rpb24oYSxjKXtwW2NdPWZ1bmN0aW9uKGEsZCxlLGYpe3JldHVybiBwLmlzRnVuY3Rpb24o
ZCkmJihmPWZ8fGUsZT1kLGQ9YikscC5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6
ZSxkYXRhVHlwZTpmfSl9fSkscC5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVy
biBwLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBw
LmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9jQihh
LHAuYWpheFNldHRpbmdzKTooYj1hLGE9cC5hamF4U2V0dGluZ3MpLGNCKGEsYiksYX0sYWpheFNl
dHRpbmdzOnt1cmw6Y2ssaXNMb2NhbDpjbi50ZXN0KGNqWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VU
Iixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0
PVVURi04Iixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9u
L3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoi
YXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Y3h9LGNvbnRlbnRzOnt4bWw6
L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3Bv
bnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmlu
ZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpwLnBhcnNlSlNPTiwidGV4dCB4bWwiOnAucGFy
c2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Y3oo
Y3YpLGFqYXhUcmFuc3BvcnQ6Y3ooY3cpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB5KGEs
YyxmLGkpe3ZhciBrLHMsdCx1LHcseT1jO2lmKHY9PT0yKXJldHVybjt2PTIsaCYmY2xlYXJUaW1l
b3V0KGgpLGc9YixlPWl8fCIiLHgucmVhZHlTdGF0ZT1hPjA/NDowLGYmJih1PWNDKGwseCxmKSk7
aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNClsLmlmTW9kaWZpZWQmJih3PXguZ2V0UmVzcG9uc2VI
ZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYocC5sYXN0TW9kaWZpZWRbZF09dyksdz14LmdldFJl
c3BvbnNlSGVhZGVyKCJFdGFnIiksdyYmKHAuZXRhZ1tkXT13KSksYT09PTMwND8oeT0ibm90bW9k
aWZpZWQiLGs9ITApOihrPWNEKGwsdSkseT1rLnN0YXRlLHM9ay5kYXRhLHQ9ay5lcnJvcixrPSF0
KTtlbHNle3Q9eTtpZigheXx8YSl5PSJlcnJvciIsYTwwJiYoYT0wKX14LnN0YXR1cz1hLHguc3Rh
dHVzVGV4dD0oY3x8eSkrIiIsaz9vLnJlc29sdmVXaXRoKG0sW3MseSx4XSk6by5yZWplY3RXaXRo
KG0sW3gseSx0XSkseC5zdGF0dXNDb2RlKHIpLHI9YixqJiZuLnRyaWdnZXIoImFqYXgiKyhrPyJT
dWNjZXNzIjoiRXJyb3IiKSxbeCxsLGs/czp0XSkscS5maXJlV2l0aChtLFt4LHldKSxqJiYobi50
cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt4LGxdKSwtLXAuYWN0aXZlfHxwLmV2ZW50LnRyaWdnZXIo
ImFqYXhTdG9wIikpfXR5cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGQs
ZSxmLGcsaCxpLGosayxsPXAuYWpheFNldHVwKHt9LGMpLG09bC5jb250ZXh0fHxsLG49bSE9PWwm
JihtLm5vZGVUeXBlfHxtIGluc3RhbmNlb2YgcCk/cChtKTpwLmV2ZW50LG89cC5EZWZlcnJlZCgp
LHE9cC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iikscj1sLnN0YXR1c0NvZGV8fHt9LHQ9e30sdT17
fSx2PTAsdz0iY2FuY2VsZWQiLHg9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0
aW9uKGEsYil7aWYoIXYpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPXVbY109dVtjXXx8YSx0W2Fd
PWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiB2
PT09Mj9lOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHY9PT0y
KXtpZighZil7Zj17fTt3aGlsZShjPWNtLmV4ZWMoZSkpZltjWzFdLnRvTG93ZXJDYXNlKCldPWNb
Ml19Yz1mW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1l
VHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gdnx8KGwubWltZVR5cGU9YSksdGhpc30sYWJvcnQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIGE9YXx8dyxnJiZnLmFib3J0KGEpLHkoMCxhKSx0aGlzfX07by5wcm9t
aXNlKHgpLHguc3VjY2Vzcz14LmRvbmUseC5lcnJvcj14LmZhaWwseC5jb21wbGV0ZT1xLmFkZCx4
LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYodjwyKWZvcihiIGluIGEpclti
XT1bcltiXSxhW2JdXTtlbHNlIGI9YVt4LnN0YXR1c10seC5hbHdheXMoYil9cmV0dXJuIHRoaXN9
LGwudXJsPSgoYXx8bC51cmwpKyIiKS5yZXBsYWNlKGNsLCIiKS5yZXBsYWNlKGNwLGNqWzFdKyIv
LyIpLGwuZGF0YVR5cGVzPXAudHJpbShsLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3Bs
aXQocyksbC5jcm9zc0RvbWFpbj09bnVsbCYmKGk9Y3QuZXhlYyhsLnVybC50b0xvd2VyQ2FzZSgp
KXx8ITEsbC5jcm9zc0RvbWFpbj1pJiZpLmpvaW4oIjoiKSsoaVszXT8iIjppWzFdPT09Imh0dHA6
Ij84MDo0NDMpIT09Y2ouam9pbigiOiIpKyhjalszXT8iIjpjalsxXT09PSJodHRwOiI/ODA6NDQz
KSksbC5kYXRhJiZsLnByb2Nlc3NEYXRhJiZ0eXBlb2YgbC5kYXRhIT0ic3RyaW5nIiYmKGwuZGF0
YT1wLnBhcmFtKGwuZGF0YSxsLnRyYWRpdGlvbmFsKSksY0EoY3YsbCxjLHgpO2lmKHY9PT0yKXJl
dHVybiB4O2o9bC5nbG9iYWwsbC50eXBlPWwudHlwZS50b1VwcGVyQ2FzZSgpLGwuaGFzQ29udGVu
dD0hY28udGVzdChsLnR5cGUpLGomJnAuYWN0aXZlKys9PT0wJiZwLmV2ZW50LnRyaWdnZXIoImFq
YXhTdGFydCIpO2lmKCFsLmhhc0NvbnRlbnQpe2wuZGF0YSYmKGwudXJsKz0oY3EudGVzdChsLnVy
bCk/IiYiOiI/IikrbC5kYXRhLGRlbGV0ZSBsLmRhdGEpLGQ9bC51cmw7aWYobC5jYWNoZT09PSEx
KXt2YXIgej1wLm5vdygpLEE9bC51cmwucmVwbGFjZShjcywiJDFfPSIreik7bC51cmw9QSsoQT09
PWwudXJsPyhjcS50ZXN0KGwudXJsKT8iJiI6Ij8iKSsiXz0iK3o6IiIpfX0obC5kYXRhJiZsLmhh
c0NvbnRlbnQmJmwuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJnguc2V0UmVxdWVz
dEhlYWRlcigiQ29udGVudC1UeXBlIixsLmNvbnRlbnRUeXBlKSxsLmlmTW9kaWZpZWQmJihkPWR8
fGwudXJsLHAubGFzdE1vZGlmaWVkW2RdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVk
LVNpbmNlIixwLmxhc3RNb2RpZmllZFtkXSkscC5ldGFnW2RdJiZ4LnNldFJlcXVlc3RIZWFkZXIo
IklmLU5vbmUtTWF0Y2giLHAuZXRhZ1tkXSkpLHguc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iixs
LmRhdGFUeXBlc1swXSYmbC5hY2NlcHRzW2wuZGF0YVR5cGVzWzBdXT9sLmFjY2VwdHNbbC5kYXRh
VHlwZXNbMF1dKyhsLmRhdGFUeXBlc1swXSE9PSIqIj8iLCAiK2N4KyI7IHE9MC4wMSI6IiIpOmwu
YWNjZXB0c1siKiJdKTtmb3IoayBpbiBsLmhlYWRlcnMpeC5zZXRSZXF1ZXN0SGVhZGVyKGssbC5o
ZWFkZXJzW2tdKTtpZighbC5iZWZvcmVTZW5kfHxsLmJlZm9yZVNlbmQuY2FsbChtLHgsbCkhPT0h
MSYmdiE9PTIpe3c9ImFib3J0Ijtmb3IoayBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZTox
fSl4W2tdKGxba10pO2c9Y0EoY3csbCxjLHgpO2lmKCFnKXkoLTEsIk5vIFRyYW5zcG9ydCIpO2Vs
c2V7eC5yZWFkeVN0YXRlPTEsaiYmbi50cmlnZ2VyKCJhamF4U2VuZCIsW3gsbF0pLGwuYXN5bmMm
JmwudGltZW91dD4wJiYoaD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5hYm9ydCgidGltZW91dCIp
fSxsLnRpbWVvdXQpKTt0cnl7dj0xLGcuc2VuZCh0LHkpfWNhdGNoKEIpe2lmKHY8Mil5KC0xLEIp
O2Vsc2UgdGhyb3cgQn19cmV0dXJuIHh9cmV0dXJuIHguYWJvcnQoKX0sYWN0aXZlOjAsbGFzdE1v
ZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY0U9W10sY0Y9L1w/LyxjRz0vKD0pXD8oPz0mfCQpfFw/
XD8vLGNIPXAubm93KCk7cC5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFj
azpmdW5jdGlvbigpe3ZhciBhPWNFLnBvcCgpfHxwLmV4cGFuZG8rIl8iK2NIKys7cmV0dXJuIHRo
aXNbYV09ITAsYX19KSxwLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGMsZCxl
KXt2YXIgZixnLGgsaT1jLmRhdGEsaj1jLnVybCxrPWMuanNvbnAhPT0hMSxsPWsmJmNHLnRlc3Qo
aiksbT1rJiYhbCYmdHlwZW9mIGk9PSJzdHJpbmciJiYhKGMuY29udGVudFR5cGV8fCIiKS5pbmRl
eE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmY0cudGVzdChpKTtpZihj
LmRhdGFUeXBlc1swXT09PSJqc29ucCJ8fGx8fG0pcmV0dXJuIGY9Yy5qc29ucENhbGxiYWNrPXAu
aXNGdW5jdGlvbihjLmpzb25wQ2FsbGJhY2spP2MuanNvbnBDYWxsYmFjaygpOmMuanNvbnBDYWxs
YmFjayxnPWFbZl0sbD9jLnVybD1qLnJlcGxhY2UoY0csIiQxIitmKTptP2MuZGF0YT1pLnJlcGxh
Y2UoY0csIiQxIitmKTprJiYoYy51cmwrPShjRi50ZXN0KGopPyImIjoiPyIpK2MuanNvbnArIj0i
K2YpLGMuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBofHxwLmVy
cm9yKGYrIiB3YXMgbm90IGNhbGxlZCIpLGhbMF19LGMuZGF0YVR5cGVzWzBdPSJqc29uIixhW2Zd
PWZ1bmN0aW9uKCl7aD1hcmd1bWVudHN9LGUuYWx3YXlzKGZ1bmN0aW9uKCl7YVtmXT1nLGNbZl0m
JihjLmpzb25wQ2FsbGJhY2s9ZC5qc29ucENhbGxiYWNrLGNFLnB1c2goZikpLGgmJnAuaXNGdW5j
dGlvbihnKSYmZyhoWzBdKSxoPWc9Yn0pLCJzY3JpcHQifSkscC5hamF4U2V0dXAoe2FjY2VwdHM6
e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNh
dGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2Ny
aXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1
bmN0aW9uKGEpe3JldHVybiBwLmdsb2JhbEV2YWwoYSksYX19fSkscC5hamF4UHJlZmlsdGVyKCJz
Y3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFp
biYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxwLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIs
ZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGMsZD1lLmhlYWR8fGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImhlYWQiKVswXXx8ZS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVu
Y3Rpb24oZixnKXtjPWUuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYy5hc3luYz0iYXN5bmMiLGEu
c2NyaXB0Q2hhcnNldCYmKGMuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGMuc3JjPWEudXJsLGMu
b25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsZSl7aWYoZXx8IWMucmVhZHlT
dGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChjLnJlYWR5U3RhdGUpKWMub25sb2FkPWMub25y
ZWFkeXN0YXRlY2hhbmdlPW51bGwsZCYmYy5wYXJlbnROb2RlJiZkLnJlbW92ZUNoaWxkKGMpLGM9
YixlfHxnKDIwMCwic3VjY2VzcyIpfSxkLmluc2VydEJlZm9yZShjLGQuZmlyc3RDaGlsZCl9LGFi
b3J0OmZ1bmN0aW9uKCl7YyYmYy5vbmxvYWQoMCwxKX19fX0pO3ZhciBjSSxjSj1hLkFjdGl2ZVhP
YmplY3Q/ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gY0kpY0lbYV0oMCwxKX06ITEsY0s9MDtwLmFq
YXhTZXR0aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNM
b2NhbCYmY0woKXx8Y00oKX06Y0wsZnVuY3Rpb24oYSl7cC5leHRlbmQocC5zdXBwb3J0LHthamF4
OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBhfSl9KHAuYWpheFNldHRpbmdzLnho
cigpKSxwLnN1cHBvcnQuYWpheCYmcC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNy
b3NzRG9tYWlufHxwLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxm
KXt2YXIgZyxoLGk9Yy54aHIoKTtjLnVzZXJuYW1lP2kub3BlbihjLnR5cGUsYy51cmwsYy5hc3lu
YyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmkub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYo
Yy54aHJGaWVsZHMpZm9yKGggaW4gYy54aHJGaWVsZHMpaVtoXT1jLnhockZpZWxkc1toXTtjLm1p
bWVUeXBlJiZpLm92ZXJyaWRlTWltZVR5cGUmJmkub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBl
KSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVk
LVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGggaW4gZSlpLnNldFJlcXVlc3RIZWFk
ZXIoaCxlW2hdKX1jYXRjaChqKXt9aS5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxk
PWZ1bmN0aW9uKGEsZSl7dmFyIGgsaixrLGwsbTt0cnl7aWYoZCYmKGV8fGkucmVhZHlTdGF0ZT09
PTQpKXtkPWIsZyYmKGkub25yZWFkeXN0YXRlY2hhbmdlPXAubm9vcCxjSiYmZGVsZXRlIGNJW2dd
KTtpZihlKWkucmVhZHlTdGF0ZSE9PTQmJmkuYWJvcnQoKTtlbHNle2g9aS5zdGF0dXMsaz1pLmdl
dEFsbFJlc3BvbnNlSGVhZGVycygpLGw9e30sbT1pLnJlc3BvbnNlWE1MLG0mJm0uZG9jdW1lbnRF
bGVtZW50JiYobC54bWw9bSk7dHJ5e2wudGV4dD1pLnJlc3BvbnNlVGV4dH1jYXRjaChhKXt9dHJ5
e2o9aS5zdGF0dXNUZXh0fWNhdGNoKG4pe2o9IiJ9IWgmJmMuaXNMb2NhbCYmIWMuY3Jvc3NEb21h
aW4/aD1sLnRleHQ/MjAwOjQwNDpoPT09MTIyMyYmKGg9MjA0KX19fWNhdGNoKG8pe2V8fGYoLTEs
byl9bCYmZihoLGosbCxrKX0sYy5hc3luYz9pLnJlYWR5U3RhdGU9PT00P3NldFRpbWVvdXQoZCww
KTooZz0rK2NLLGNKJiYoY0l8fChjST17fSxwKGEpLnVubG9hZChjSikpLGNJW2ddPWQpLGkub25y
ZWFkeXN0YXRlY2hhbmdlPWQpOmQoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2
YXIgY04sY08sY1A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNRPW5ldyBSZWdFeHAoIl4oPzoo
Wy0rXSk9fCkoIitxKyIpKFthLXolXSopJCIsImkiKSxjUj0vcXVldWVIb29rcyQvLGNTPVtjWV0s
Y1Q9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGY9
Y1EuZXhlYyhiKSxnPWUuY3VyKCksaD0rZ3x8MCxpPTEsaj0yMDtpZihmKXtjPStmWzJdLGQ9Zlsz
XXx8KHAuY3NzTnVtYmVyW2FdPyIiOiJweCIpO2lmKGQhPT0icHgiJiZoKXtoPXAuY3NzKGUuZWxl
bSxhLCEwKXx8Y3x8MTtkbyBpPWl8fCIuNSIsaD1oL2kscC5zdHlsZShlLmVsZW0sYSxoK2QpO3do
aWxlKGkhPT0oaT1lLmN1cigpL2cpJiZpIT09MSYmLS1qKX1lLnVuaXQ9ZCxlLnN0YXJ0PWgsZS5l
bmQ9ZlsxXT9oKyhmWzFdKzEpKmM6Y31yZXR1cm4gZX1dfTtwLkFuaW1hdGlvbj1wLmV4dGVuZChj
Vyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe3AuaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9
YS5zcGxpdCgiICIpO3ZhciBjLGQ9MCxlPWEubGVuZ3RoO2Zvcig7ZDxlO2QrKyljPWFbZF0sY1Rb
Y109Y1RbY118fFtdLGNUW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/
Y1MudW5zaGlmdChhKTpjUy5wdXNoKGEpfX0pLHAuVHdlZW49Y1osY1oucHJvdG90eXBlPXtjb25z
dHJ1Y3RvcjpjWixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnBy
b3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhp
cy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwocC5jc3NOdW1iZXJbY10/
IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPWNaLnByb3BIb29rc1t0aGlzLnByb3BdO3Jl
dHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpjWi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMp
fSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1jWi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4g
dGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9cC5lYXNpbmdbdGhpcy5lYXNpbmddKGEs
dGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5w
b3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5v
cHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRo
aXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOmNaLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyks
dGhpc319LGNaLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1jWi5wcm90b3R5cGUsY1oucHJvcEhv
b2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBhLmVsZW1bYS5wcm9w
XT09bnVsbHx8ISFhLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsPyhiPXAu
Y3NzKGEuZWxlbSxhLnByb3AsITEsIiIpLCFifHxiPT09ImF1dG8iPzA6Yik6YS5lbGVtW2EucHJv
cF19LHNldDpmdW5jdGlvbihhKXtwLmZ4LnN0ZXBbYS5wcm9wXT9wLmZ4LnN0ZXBbYS5wcm9wXShh
KTphLmVsZW0uc3R5bGUmJihhLmVsZW0uc3R5bGVbcC5jc3NQcm9wc1thLnByb3BdXSE9bnVsbHx8
cC5jc3NIb29rc1thLnByb3BdKT9wLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KTph
LmVsZW1bYS5wcm9wXT1hLm5vd319fSxjWi5wcm9wSG9va3Muc2Nyb2xsVG9wPWNaLnByb3BIb29r
cy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFy
ZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LHAuZWFjaChbInRvZ2dsZSIsInNob3ci
LCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1wLmZuW2JdO3AuZm5bYl09ZnVuY3Rpb24oZCxl
LGYpe3JldHVybiBkPT1udWxsfHx0eXBlb2YgZD09ImJvb2xlYW4ifHwhYSYmcC5pc0Z1bmN0aW9u
KGQpJiZwLmlzRnVuY3Rpb24oZSk/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRl
KGMkKGIsITApLGQsZSxmKX19KSxwLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQp
e3JldHVybiB0aGlzLmZpbHRlcihiWikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5p
bWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9
cC5pc0VtcHR5T2JqZWN0KGEpLGY9cC5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWNX
KHRoaXMscC5leHRlbmQoe30sYSksZik7ZSYmYi5zdG9wKCEwKX07cmV0dXJuIGV8fGYucXVldWU9
PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEs
YyxkKXt2YXIgZT1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGQpfTty
ZXR1cm4gdHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5x
dWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxjPWEhPW51bGwm
JmErInF1ZXVlSG9va3MiLGY9cC50aW1lcnMsZz1wLl9kYXRhKHRoaXMpO2lmKGMpZ1tjXSYmZ1tj
XS5zdG9wJiZlKGdbY10pO2Vsc2UgZm9yKGMgaW4gZylnW2NdJiZnW2NdLnN0b3AmJmNSLnRlc3Qo
YykmJmUoZ1tjXSk7Zm9yKGM9Zi5sZW5ndGg7Yy0tOylmW2NdLmVsZW09PT10aGlzJiYoYT09bnVs
bHx8ZltjXS5xdWV1ZT09PWEpJiYoZltjXS5hbmltLnN0b3AoZCksYj0hMSxmLnNwbGljZShjLDEp
KTsoYnx8IWQpJiZwLmRlcXVldWUodGhpcyxhKX0pfX0pLHAuZWFjaCh7c2xpZGVEb3duOmMkKCJz
aG93Iiksc2xpZGVVcDpjJCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmMkKCJ0b2dnbGUiKSxmYWRlSW46
e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3Bh
Y2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7cC5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0
dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxwLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIg
ZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/cC5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZi
fHxwLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXAuaXNGdW5j
dGlvbihiKSYmYn07ZC5kdXJhdGlvbj1wLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVt
YmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gcC5meC5zcGVlZHM/cC5meC5zcGVlZHNbZC5k
dXJhdGlvbl06cC5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoZC5xdWV1ZT09bnVsbHx8ZC5xdWV1ZT09
PSEwKWQucXVldWU9ImZ4IjtyZXR1cm4gZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0
aW9uKCl7cC5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZwLmRl
cXVldWUodGhpcyxkLnF1ZXVlKX0sZH0scC5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1
cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0s
cC50aW1lcnM9W10scC5meD1jWi5wcm90b3R5cGUuaW5pdCxwLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2
YXIgYSxiPXAudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2Nd
PT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxwLmZ4LnN0b3AoKX0scC5meC50aW1lcj1m
dW5jdGlvbihhKXthKCkmJnAudGltZXJzLnB1c2goYSkmJiFjTyYmKGNPPXNldEludGVydmFsKHAu
ZngudGljayxwLmZ4LmludGVydmFsKSl9LHAuZnguaW50ZXJ2YWw9MTMscC5meC5zdG9wPWZ1bmN0
aW9uKCl7Y2xlYXJJbnRlcnZhbChjTyksY089bnVsbH0scC5meC5zcGVlZHM9e3Nsb3c6NjAwLGZh
c3Q6MjAwLF9kZWZhdWx0OjQwMH0scC5meC5zdGVwPXt9LHAuZXhwciYmcC5leHByLmZpbHRlcnMm
JihwLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gcC5ncmVwKHAudGlt
ZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGNfPS9eKD86
Ym9keXxodG1sKSQvaTtwLmZuLm9mZnNldD1mdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3Ro
KXJldHVybiBhPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtwLm9mZnNldC5zZXRPZmZz
ZXQodGhpcyxhLGIpfSk7dmFyIGMsZCxlLGYsZyxoLGksaj17dG9wOjAsbGVmdDowfSxrPXRoaXNb
MF0sbD1rJiZrLm93bmVyRG9jdW1lbnQ7aWYoIWwpcmV0dXJuO3JldHVybihkPWwuYm9keSk9PT1r
P3Aub2Zmc2V0LmJvZHlPZmZzZXQoayk6KGM9bC5kb2N1bWVudEVsZW1lbnQscC5jb250YWlucyhj
LGspPyh0eXBlb2Ygay5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPSJ1bmRlZmluZWQiJiYoaj1rLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxlPWRhKGwpLGY9Yy5jbGllbnRUb3B8fGQuY2xpZW50VG9w
fHwwLGc9Yy5jbGllbnRMZWZ0fHxkLmNsaWVudExlZnR8fDAsaD1lLnBhZ2VZT2Zmc2V0fHxjLnNj
cm9sbFRvcCxpPWUucGFnZVhPZmZzZXR8fGMuc2Nyb2xsTGVmdCx7dG9wOmoudG9wK2gtZixsZWZ0
OmoubGVmdCtpLWd9KTpqKX0scC5vZmZzZXQ9e2JvZHlPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9
YS5vZmZzZXRUb3AsYz1hLm9mZnNldExlZnQ7cmV0dXJuIHAuc3VwcG9ydC5kb2VzTm90SW5jbHVk
ZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luVG9wIikp
fHwwLGMrPXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCkse3RvcDpiLGxlZnQ6
Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9cC5jc3MoYSwicG9zaXRpb24iKTtk
PT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPXAoYSksZj1l
Lm9mZnNldCgpLGc9cC5jc3MoYSwidG9wIiksaD1wLmNzcyhhLCJsZWZ0IiksaT0oZD09PSJhYnNv
bHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmcC5pbkFycmF5KCJhdXRvIixbZyxoXSk+LTEsaj17fSxrPXt9
LGwsbTtpPyhrPWUucG9zaXRpb24oKSxsPWsudG9wLG09ay5sZWZ0KToobD1wYXJzZUZsb2F0KGcp
fHwwLG09cGFyc2VGbG9hdChoKXx8MCkscC5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGYp
KSxiLnRvcCE9bnVsbCYmKGoudG9wPWIudG9wLWYudG9wK2wpLGIubGVmdCE9bnVsbCYmKGoubGVm
dD1iLmxlZnQtZi5sZWZ0K20pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGopOmUuY3NzKGop
fX0scC5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuO3Zh
ciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWNfLnRl
c3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtyZXR1cm4gYy50b3At
PXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMubGVmdC09cGFyc2VGbG9hdChw
LmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwLGQudG9wKz1wYXJzZUZsb2F0KHAuY3NzKGJbMF0sImJv
cmRlclRvcFdpZHRoIikpfHwwLGQubGVmdCs9cGFyc2VGbG9hdChwLmNzcyhiWzBdLCJib3JkZXJM
ZWZ0V2lkdGgiKSl8fDAse3RvcDpjLnRvcC1kLnRvcCxsZWZ0OmMubGVmdC1kLmxlZnR9fSxvZmZz
ZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlz
Lm9mZnNldFBhcmVudHx8ZS5ib2R5O3doaWxlKGEmJiFjXy50ZXN0KGEubm9kZU5hbWUpJiZwLmNz
cyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyIpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8ZS5i
b2R5fSl9fSkscC5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdl
WU9mZnNldCJ9LGZ1bmN0aW9uKGEsYyl7dmFyIGQ9L1kvLnRlc3QoYyk7cC5mblthXT1mdW5jdGlv
bihlKXtyZXR1cm4gcC5hY2Nlc3ModGhpcyxmdW5jdGlvbihhLGUsZil7dmFyIGc9ZGEoYSk7aWYo
Zj09PWIpcmV0dXJuIGc/YyBpbiBnP2dbY106Zy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZV06
YVtlXTtnP2cuc2Nyb2xsVG8oZD9wKGcpLnNjcm9sbExlZnQoKTpmLGQ/ZjpwKGcpLnNjcm9sbFRv
cCgpKTphW2VdPWZ9LGEsZSxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pLHAuZWFjaCh7SGVpZ2h0
OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYyl7cC5lYWNoKHtwYWRkaW5nOiJp
bm5lciIrYSxjb250ZW50OmMsIiI6Im91dGVyIithfSxmdW5jdGlvbihkLGUpe3AuZm5bZV09ZnVu
Y3Rpb24oZSxmKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoJiYoZHx8dHlwZW9mIGUhPSJib29sZWFu
IiksaD1kfHwoZT09PSEwfHxmPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBwLmFjY2Vz
cyh0aGlzLGZ1bmN0aW9uKGMsZCxlKXt2YXIgZjtyZXR1cm4gcC5pc1dpbmRvdyhjKT9jLmRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTpjLm5vZGVUeXBlPT09OT8oZj1jLmRvY3Vt
ZW50RWxlbWVudCxNYXRoLm1heChjLmJvZHlbInNjcm9sbCIrYV0sZlsic2Nyb2xsIithXSxjLmJv
ZHlbIm9mZnNldCIrYV0sZlsib2Zmc2V0IithXSxmWyJjbGllbnQiK2FdKSk6ZT09PWI/cC5jc3Mo
YyxkLGUsaCk6cC5zdHlsZShjLGQsZSxoKX0sYyxnP2U6YixnLG51bGwpfX0pfSksYS5qUXVlcnk9
YS4kPXAsdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCYmZGVmaW5lLmFtZC5q
UXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBwfSl9KSh3aW5kb3cp
Ow0KPC9zY3JpcHQ+DQo8c2NyaXB0Pg0KKGZ1bmN0aW9uKCQpew0KICAgICQuZm4udmFsaWRhdGlv
bkVuZ2luZUxhbmd1YWdlID0gZnVuY3Rpb24oKXsNCiAgICB9Ow0KICAgICQudmFsaWRhdGlvbkVu
Z2luZUxhbmd1YWdlID0gew0KICAgICAgICBuZXdMYW5nOiBmdW5jdGlvbigpew0KICAgICAgICAg
ICAgJC52YWxpZGF0aW9uRW5naW5lTGFuZ3VhZ2UuYWxsUnVsZXMgPSB7DQogICAgICAgICAgICAg
ICAgInJlcXVpcmVkIjogew0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAibm9uZSIsDQog
ICAgICAgICAgICAgICAgICAgICJhbGVydFRleHQiOiAiKiBUaGlzIGZpZWxkIGlzIHJlcXVpcmVk
IiwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dENoZWNrYm94TXVsdGlwbGUiOiAiKiBD
aG9pc2lyIHVuZSBvcHRpb24iLA0KICAgICAgICAgICAgICAgICAgICAiYWxlcnRUZXh0Q2hlY2ti
b3hlIjogIiogQ2V0dGUgb3B0aW9uIGVzdCByZXF1aXNlIg0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgInJlcXVpcmVkSW5GdW5jdGlvbiI6IHsgDQogICAgICAgICAgICAgICAg
ICAgICJmdW5jIjogZnVuY3Rpb24oZmllbGQsIHJ1bGVzLCBpLCBvcHRpb25zKXsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoZmllbGQudmFsKCkgPT0gInRlc3QiKSA/IHRydWUgOiBm
YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0
VGV4dCI6ICIqIEZpZWxkIG11c3QgZXF1YWwgdGVzdCINCiAgICAgICAgICAgICAgICB9LA0KICAg
ICAgICAgICAgICAgIm1pblNpemUiOiB7DQogICAgICAgICAgICAgICAgICAgICJyZWdleCI6ICJu
b25lIiwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIE1pbmltdW0gIiwNCiAg
ICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dDIiOiAiIGNhcmFjdMOocmVzIHJlcXVpcyINCiAg
ICAgICAgICAgICAgICB9LA0KCQkJCSJncm91cFJlcXVpcmVkIjogew0KICAgICAgICAgICAgICAg
ICAgICAicmVnZXgiOiAibm9uZSIsDQogICAgICAgICAgICAgICAgICAgICJhbGVydFRleHQiOiAi
KiBWb3VzIGRldmV6IHJlbXBsaXIgdW4gZGVzIGNoYW1wcyBzdWl2YW50Ig0KICAgICAgICAgICAg
ICAgIH0sDQogICAgICAgICAgICAgICAgIm1heFNpemUiOiB7DQogICAgICAgICAgICAgICAgICAg
ICJyZWdleCI6ICJub25lIiwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIE1h
eGltdW0gIiwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dDIiOiAiIGNhcmFjdMOocmVz
IHJlcXVpcyINCiAgICAgICAgICAgICAgICB9LA0KCQkgICAgICAgICJtaW4iOiB7DQogICAgICAg
ICAgICAgICAgICAgICJyZWdleCI6ICJub25lIiwNCiAgICAgICAgICAgICAgICAgICAgImFsZXJ0
VGV4dCI6ICIqIFZhbGV1ciBtaW5pbXVtIHJlcXVpc2UgIg0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgIm1heCI6IHsNCiAgICAgICAgICAgICAgICAgICAgInJlZ2V4IjogIm5v
bmUiLA0KICAgICAgICAgICAgICAgICAgICAiYWxlcnRUZXh0IjogIiogVmFsZXVyIG1heGltdW0g
cmVxdWlzZSAiDQogICAgICAgICAgICAgICAgfSwNCgkJICAgICAgICAicGFzdCI6IHsNCiAgICAg
ICAgICAgICAgICAgICAgInJlZ2V4IjogIm5vbmUiLA0KICAgICAgICAgICAgICAgICAgICAiYWxl
cnRUZXh0IjogIiogRGF0ZSBhbnTDqXJpZXVyZSBhdSAiDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICAiZnV0dXJlIjogew0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAi
bm9uZSIsDQogICAgICAgICAgICAgICAgICAgICJhbGVydFRleHQiOiAiKiBEYXRlIHBvc3TDqXJp
ZXVyZSBhdSAiDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAibWF4Q2hlY2ti
b3giOiB7DQogICAgICAgICAgICAgICAgICAgICJyZWdleCI6ICJub25lIiwNCiAgICAgICAgICAg
ICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIE5vbWJyZSBtYXggZGUgY2hvaXggZXhjw6lkw6kiDQog
ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAibWluQ2hlY2tib3giOiB7DQogICAg
ICAgICAgICAgICAgICAgICJyZWdleCI6ICJub25lIiwNCiAgICAgICAgICAgICAgICAgICAgImFs
ZXJ0VGV4dCI6ICIqIFZldWlsbGV6IGNob2lzaXIgIiwNCiAgICAgICAgICAgICAgICAgICAgImFs
ZXJ0VGV4dDIiOiAiIG9wdGlvbnMiDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAg
ICAiZXF1YWxzIjogew0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAibm9uZSIsDQogICAg
ICAgICAgICAgICAgICAgICJhbGVydFRleHQiOiAiKiBWb3RyZSBjaGFtcCBuJ2VzdCBwYXMgaWRl
bnRpcXVlIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgIm5lbWVPbklkIjog
ew0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAvXltcLVwrXT9cZHsxNSwxNn0kLywNCiAg
ICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIE51bWJlciBvZiBpbnZhbGlkIGNyZWRp
dCBjYXJkIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgInBob25lIjogew0K
ICAgICAgICAgICAgICAgICAgICAvLyBjcmVkaXQ6IGpxdWVyeS5oNXZhbGlkYXRlLmpzIC8gb3Jl
ZmFsbw0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAvXihbXCtdWzAtOV17MSwzfVsgXC5c
LV0pPyhbXChdezF9WzAtOV17Miw2fVtcKV0pPyhbMC05IFwuXC1cL117MywyMH0pKCh4fGV4dHxl
eHRlbnNpb24pWyBdP1swLTldezEsNH0pPyQvLA0KICAgICAgICAgICAgICAgICAgICAiYWxlcnRU
ZXh0IjogIiogTnVtw6lybyBkZSB0w6lsw6lwaG9uZSBpbnZhbGlkZSINCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgICJlbWFpbCI6IHsNCiAgICAgICAgICAgICAgICAgICAgLy8g
U2hhbWVsZXNzbHkgbGlmdGVkIGZyb20gU2NvdHQgR29uemFsZXogdmlhIHRoZSBCYXNzaXN0YW5j
ZSBWYWxpZGF0aW9uIHBsdWdpbiBodHRwOi8vcHJvamVjdHMuc2NvdHRzcGxheWdyb3VuZC5jb20v
ZW1haWxfYWRkcmVzc192YWxpZGF0aW9uLw0KICAgICAgICAgICAgICAgICAgICAicmVnZXgiOiAv
XigoKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZG
XHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSsoXC4oW2Etel18XGR8WyEjXCQlJidcKlwrXC1c
Lz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0p
KykqKXwoKFx4MjIpKCgoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk/KFx4MjB8XHgwOSkrKT8oKFtc
eDAxLVx4MDhceDBiXHgwY1x4MGUtXHgxZlx4N2ZdfFx4MjF8W1x4MjMtXHg1Yl18W1x4NWQtXHg3
ZV18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfChcXChbXHgwMS1c
eDA5XHgwYlx4MGNceDBkLVx4N2ZdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1c
dUZGRUZdKSkpKSooKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk/KFx4MjIp
KSlAKCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0p
fCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFth
LXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZd
KSooW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlc
LikrKChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChb
YS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8
LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16
XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuPyQvaSwNCiAg
ICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIEFkcmVzc2UgZW1haWwgaW52YWxpZGUi
DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAiaW50ZWdlciI6IHsNCiAgICAg
ICAgICAgICAgICAgICAgInJlZ2V4IjogL15bXC1cK10/XGQrJC8sDQogICAgICAgICAgICAgICAg
ICAgICJhbGVydFRleHQiOiAiKiBJbnRlZ2VyIGludmFsaWQiDQogICAgICAgICAgICAgICAgfSwN
CiAgICAgICAgICAgICAgICAibnVtYmVyIjogew0KICAgICAgICAgICAgICAgICAgICAvLyBOdW1i
ZXIsIGluY2x1ZGluZyBwb3NpdGl2ZSwgbmVnYXRpdmUsIGFuZCBmbG9hdGluZyBkZWNpbWFsLiBj
cmVkaXQ6IG9yZWZhbG8NCiAgICAgICAgICAgICAgICAgICAgInJlZ2V4IjogL15bXC1cK10/KCgo
WzAtOV17MSwzfSkoWyxdWzAtOV17M30pKil8KFswLTldKykpPyhbXC5dKFswLTldKykpPyQvLA0K
ICAgICAgICAgICAgICAgICAgICAiYWxlcnRUZXh0IjogIiogTm9tYnJlIGZsb3R0YW50IGludmFs
aWRlIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgImRhdGUiOiB7DQogICAg
ICAgICAgICAgICAgICAgICJyZWdleCI6IC9eXGR7NH1bXC9cLV0oMD9bMS05XXwxWzAxMl0pW1wv
XC1dKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKSQvLA0KICAgICAgICAgICAgICAgICAgICAiYWxl
cnRUZXh0IjogIiogRGF0ZSBpbnZhbGlkZSwgZm9ybWF0IFlZWVktTU0tREQgcmVxdWlzIg0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgImlwdjQiOiB7DQogICAgICAgICAgICAg
ICAgCSJyZWdleCI6IC9eKCgoWzAxXT9bMC05XXsxLDJ9KXwoMlswLTRdWzAtOV0pfCgyNVswLTVd
KSlbLl0pezN9KChbMC0xXT9bMC05XXsxLDJ9KXwoMlswLTRdWzAtOV0pfCgyNVswLTVdKSkkLywN
CiAgICAgICAgICAgICAgICAgICAgImFsZXJ0VGV4dCI6ICIqIEFkcmVzc2UgSVAgaW52YWxpZGUi
DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAidXJsIjogew0KICAgICAgICAg
ICAgICAgICAgICAicmVnZXgiOiAvXihodHRwcz98ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58
X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17
Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxk
fDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTld
XGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1
WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVG
RkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVG
XSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1
RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVG
XSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZd
KXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16
XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkq
KFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/KSg6
XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENG
XHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwv
KChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVG
RkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik/KT8oXD8oKChb
YS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVG
XSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18
XC98XD8pKik/KFwjKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVG
RENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8
XC98XD8pKik/JC9pLA0KICAgICAgICAgICAgICAgICAgICAiYWxlcnRUZXh0IjogIiogVVJMIGlu
dmFsaWRlIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgIm9ubHlOdW1iZXJT
cCI6IHsNCiAgICAgICAgICAgICAgICAgICAgInJlZ2V4IjogL15bMC05XCBdKyQvLA0KICAgICAg
ICAgICAgICAgICAgICAiYWxlcnRUZXh0IjogIiogU2V1bHMgbGVzIGNoaWZmcmVzIHNvbnQgYWNj
ZXB0w6lzIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgIm9ubHlMZXR0ZXJT
cCI6IHsNCiAgICAgICAgICAgICAgICAgICAgInJlZ2V4IjogL15bYS16QS1aXHUwMEMwLVx1MDBE
Nlx1MDBEOS1cdTAwRjZcdTAwRjktXHUwMEZEXCBcJ10rJC8sDQogICAgICAgICAgICAgICAgICAg
ICJhbGVydFRleHQiOiAiKiBTZXVsZXMgbGVzIGxldHRyZXMgc29udCBhY2NlcHTDqWVzIg0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgIm9ubHlMZXR0ZXJOdW1iZXIiOiB7DQog
ICAgICAgICAgICAgICAgICAgICJyZWdleCI6IC9eWzAtOWEtekEtWlx1MDBDMC1cdTAwRDZcdTAw
RDktXHUwMEY2XHUwMEY5LVx1MDBGRF0rJC8sDQogICAgICAgICAgICAgICAgICAgICJhbGVydFRl
eHQiOiAiKiBBdWN1biBjYXJhY3TDqHJlIHNww6ljaWFsIG4nZXN0IGFjY2VwdMOpIg0KICAgICAg
ICAgICAgICAgIH0sDQoJCQkJLy8gLS0tIENVU1RPTSBSVUxFUyAtLSBUaG9zZSBhcmUgc3BlY2lm
aWMgdG8gdGhlIGRlbW9zLCB0aGV5IGNhbiBiZSByZW1vdmVkIG9yIGNoYW5nZWQgdG8geW91ciBs
aWtpbmdzDQogICAgICAgICAgICAgICAgImFqYXhVc2VyQ2FsbCI6IHsNCiAgICAgICAgICAgICAg
ICAgICAgInVybCI6ICJhamF4VmFsaWRhdGVGaWVsZFVzZXIiLA0KICAgICAgICAgICAgICAgICAg
ICAiZXh0cmFEYXRhIjogIm5hbWU9ZXJpYyIsDQogICAgICAgICAgICAgICAgICAgICJhbGVydFRl
eHRMb2FkIjogIiogQ2hhcmdlbWVudCwgdmV1aWxsZXogYXR0ZW5kcmUiLA0KICAgICAgICAgICAg
ICAgICAgICAiYWxlcnRUZXh0IjogIiogQ2Ugbm9tIGVzdCBkw6lqw6AgcHJpcyINCiAgICAgICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgICAgICJhamF4TmFtZUNhbGwiOiB7DQogICAgICAgICAg
ICAgICAgICAgICJ1cmwiOiAiYWpheFZhbGlkYXRlRmllbGROYW1lIiwNCiAgICAgICAgICAgICAg
ICAgICAgImFsZXJ0VGV4dCI6ICIqIENlIG5vbSBlc3QgZMOpasOgIHByaXMiLA0KICAgICAgICAg
ICAgICAgICAgICAiYWxlcnRUZXh0T2siOiAiKkNlIG5vbSBlc3QgZGlzcG9uaWJsZSIsDQogICAg
ICAgICAgICAgICAgICAgICJhbGVydFRleHRMb2FkIjogIiogQ2hhcmdlbWVudCwgdmV1aWxsZXog
YXR0ZW5kcmUiDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAidmFsaWRhdGUy
ZmllbGRzIjogew0KICAgICAgICAgICAgICAgICAgICAiYWxlcnRUZXh0IjogIlZldWlsbGV6IHRh
cGVyIGxlIG1vdCBIRUxMTyINCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9Ow0KICAg
ICAgICB9DQogICAgfTsNCiAgICAkLnZhbGlkYXRpb25FbmdpbmVMYW5ndWFnZS5uZXdMYW5nKCk7
DQp9KShqUXVlcnkpOw0KPC9zY3JpcHQ+DQo8c2NyaXB0Pg0KIChmdW5jdGlvbigkKSB7DQoNCgki
dXNlIHN0cmljdCI7DQoNCgl2YXIgbWV0aG9kcyA9IHsNCg0KCQkvKioNCgkJKiBLaW5kIG9mIHRo
ZSBjb25zdHJ1Y3RvciwgY2FsbGVkIGJlZm9yZSBhbnkgYWN0aW9uDQoJCSogQHBhcmFtIHtNYXB9
IHVzZXIgb3B0aW9ucw0KCQkqLw0KCQlpbml0OiBmdW5jdGlvbihvcHRpb25zKSB7DQoJCQl2YXIg
Zm9ybSA9IHRoaXM7DQoJCQlpZiAoIWZvcm0uZGF0YSgnanF2JykgfHwgZm9ybS5kYXRhKCdqcXYn
KSA9PSBudWxsICkgew0KCQkJCW9wdGlvbnMgPSBtZXRob2RzLl9zYXZlT3B0aW9ucyhmb3JtLCBv
cHRpb25zKTsNCgkJCQkvLyBiaW5kIGFsbCBmb3JtRXJyb3IgZWxlbWVudHMgdG8gY2xvc2Ugb24g
Y2xpY2sNCgkJCQkkKGRvY3VtZW50KS5vbigiY2xpY2siLCAiLmZvcm1FcnJvciIsIGZ1bmN0aW9u
KCkgew0KCQkJCQkkKHRoaXMpLmZhZGVPdXQoMTUwLCBmdW5jdGlvbigpIHsNCgkJCQkJCS8vIHJl
bW92ZSBwcm9tcHQgb25jZSBpbnZpc2libGUNCgkJCQkJCSQodGhpcykucGFyZW50KCcuZm9ybUVy
cm9yT3V0ZXInKS5yZW1vdmUoKTsNCgkJCQkJCSQodGhpcykucmVtb3ZlKCk7DQoJCQkJCX0pOw0K
CQkJCX0pOw0KCQkJfQ0KCQkJcmV0dXJuIHRoaXM7DQoJCSB9LA0KCQkvKioNCgkJKiBBdHRhY2hz
IGpRdWVyeS52YWxpZGF0aW9uRW5naW5lIHRvIGZvcm0uc3VibWl0IGFuZCBmaWVsZC5ibHVyIGV2
ZW50cw0KCQkqIFRha2VzIGFuIG9wdGlvbmFsIHBhcmFtczogYSBsaXN0IG9mIG9wdGlvbnMNCgkJ
KiBpZS4galF1ZXJ5KCIjZm9ybUlEMSIpLnZhbGlkYXRpb25FbmdpbmUoJ2F0dGFjaCcsIHtwcm9t
cHRQb3NpdGlvbiA6ICJjZW50ZXJSaWdodCJ9KTsNCgkJKi8NCgkJYXR0YWNoOiBmdW5jdGlvbih1
c2VyT3B0aW9ucykgew0KDQoJCQl2YXIgZm9ybSA9IHRoaXM7DQoJCQl2YXIgb3B0aW9uczsNCg0K
CQkJaWYodXNlck9wdGlvbnMpDQoJCQkJb3B0aW9ucyA9IG1ldGhvZHMuX3NhdmVPcHRpb25zKGZv
cm0sIHVzZXJPcHRpb25zKTsNCgkJCWVsc2UNCgkJCQlvcHRpb25zID0gZm9ybS5kYXRhKCdqcXYn
KTsNCg0KCQkJb3B0aW9ucy52YWxpZGF0ZUF0dHJpYnV0ZSA9IChmb3JtLmZpbmQoIltkYXRhLXZh
bGlkYXRpb24tZW5naW5lKj12YWxpZGF0ZV0iKS5sZW5ndGgpID8gImRhdGEtdmFsaWRhdGlvbi1l
bmdpbmUiIDogImNsYXNzIjsNCgkJCWlmIChvcHRpb25zLmJpbmRlZCkgew0KDQoJCQkJLy8gZGVs
ZWdhdGUgZmllbGRzDQoJCQkJZm9ybS5vbihvcHRpb25zLnZhbGlkYXRpb25FdmVudFRyaWdnZXIs
ICJbIitvcHRpb25zLnZhbGlkYXRlQXR0cmlidXRlKyIqPXZhbGlkYXRlXTpub3QoW3R5cGU9Y2hl
Y2tib3hdKTpub3QoW3R5cGU9cmFkaW9dKTpub3QoLmRhdGVwaWNrZXIpIiwgbWV0aG9kcy5fb25G
aWVsZEV2ZW50KTsNCgkJCQlmb3JtLm9uKCJjbGljayIsICJbIitvcHRpb25zLnZhbGlkYXRlQXR0
cmlidXRlKyIqPXZhbGlkYXRlXVt0eXBlPWNoZWNrYm94XSxbIitvcHRpb25zLnZhbGlkYXRlQXR0
cmlidXRlKyIqPXZhbGlkYXRlXVt0eXBlPXJhZGlvXSIsIG1ldGhvZHMuX29uRmllbGRFdmVudCk7
DQoJCQkJZm9ybS5vbihvcHRpb25zLnZhbGlkYXRpb25FdmVudFRyaWdnZXIsIlsiK29wdGlvbnMu
dmFsaWRhdGVBdHRyaWJ1dGUrIio9dmFsaWRhdGVdW2NsYXNzKj1kYXRlcGlja2VyXSIsIHsiZGVs
YXkiOiAzMDB9LCBtZXRob2RzLl9vbkZpZWxkRXZlbnQpOw0KCQkJfQ0KCQkJaWYgKG9wdGlvbnMu
YXV0b1Bvc2l0aW9uVXBkYXRlKSB7DQoJCQkJJCh3aW5kb3cpLmJpbmQoInJlc2l6ZSIsIHsNCgkJ
CQkJIm5vQW5pbWF0aW9uIjogdHJ1ZSwNCgkJCQkJImZvcm1FbGVtIjogZm9ybQ0KCQkJCX0sIG1l
dGhvZHMudXBkYXRlUHJvbXB0c1Bvc2l0aW9uKTsNCgkJCX0NCgkJCWZvcm0ub24oImNsaWNrIiwi
YVtkYXRhLXZhbGlkYXRpb24tZW5naW5lLXNraXBdLCBhW2NsYXNzKj0ndmFsaWRhdGUtc2tpcCdd
LCBidXR0b25bZGF0YS12YWxpZGF0aW9uLWVuZ2luZS1za2lwXSwgYnV0dG9uW2NsYXNzKj0ndmFs
aWRhdGUtc2tpcCddLCBpbnB1dFtkYXRhLXZhbGlkYXRpb24tZW5naW5lLXNraXBdLCBpbnB1dFtj
bGFzcyo9J3ZhbGlkYXRlLXNraXAnXSIsIG1ldGhvZHMuX3N1Ym1pdEJ1dHRvbkNsaWNrKTsNCgkJ
CWZvcm0ucmVtb3ZlRGF0YSgnanF2X3N1Ym1pdEJ1dHRvbicpOw0KDQoJCQkvLyBiaW5kIGZvcm0u
c3VibWl0DQoJCQlmb3JtLm9uKCJzdWJtaXQiLCBtZXRob2RzLl9vblN1Ym1pdEV2ZW50KTsNCgkJ
CXJldHVybiB0aGlzOw0KCQl9LA0KCQkvKioNCgkJKiBVbnJlZ2lzdGVycyBhbnkgYmluZGluZ3Mg
dGhhdCBtYXkgcG9pbnQgdG8galF1ZXJ5LnZhbGlkYWl0b25FbmdpbmUNCgkJKi8NCgkJZGV0YWNo
OiBmdW5jdGlvbigpIHsNCg0KCQkJdmFyIGZvcm0gPSB0aGlzOw0KCQkJdmFyIG9wdGlvbnMgPSBm
b3JtLmRhdGEoJ2pxdicpOw0KDQoJCQkvLyB1bmJpbmQgZmllbGRzDQoJCQlmb3JtLmZpbmQoIlsi
K29wdGlvbnMudmFsaWRhdGVBdHRyaWJ1dGUrIio9dmFsaWRhdGVdIikubm90KCJbdHlwZT1jaGVj
a2JveF0iKS5vZmYob3B0aW9ucy52YWxpZGF0aW9uRXZlbnRUcmlnZ2VyLCBtZXRob2RzLl9vbkZp
ZWxkRXZlbnQpOw0KCQkJZm9ybS5maW5kKCJbIitvcHRpb25zLnZhbGlkYXRlQXR0cmlidXRlKyIq
PXZhbGlkYXRlXVt0eXBlPWNoZWNrYm94XSxbY2xhc3MqPXZhbGlkYXRlXVt0eXBlPXJhZGlvXSIp
Lm9mZigiY2xpY2siLCBtZXRob2RzLl9vbkZpZWxkRXZlbnQpOw0KDQoJCQkvLyB1bmJpbmQgZm9y
bS5zdWJtaXQNCgkJCWZvcm0ub2ZmKCJzdWJtaXQiLCBtZXRob2RzLl9vblN1Ym1pdEV2ZW50KTsN
CgkJCWZvcm0ucmVtb3ZlRGF0YSgnanF2Jyk7DQogICAgICAgICAgICANCgkJCWZvcm0ub2ZmKCJj
bGljayIsICJhW2RhdGEtdmFsaWRhdGlvbi1lbmdpbmUtc2tpcF0sIGFbY2xhc3MqPSd2YWxpZGF0
ZS1za2lwJ10sIGJ1dHRvbltkYXRhLXZhbGlkYXRpb24tZW5naW5lLXNraXBdLCBidXR0b25bY2xh
c3MqPSd2YWxpZGF0ZS1za2lwJ10sIGlucHV0W2RhdGEtdmFsaWRhdGlvbi1lbmdpbmUtc2tpcF0s
IGlucHV0W2NsYXNzKj0ndmFsaWRhdGUtc2tpcCddIiwgbWV0aG9kcy5fc3VibWl0QnV0dG9uQ2xp
Y2spOw0KCQkJZm9ybS5yZW1vdmVEYXRhKCdqcXZfc3VibWl0QnV0dG9uJyk7DQoNCgkJCWlmIChv
cHRpb25zLmF1dG9Qb3NpdGlvblVwZGF0ZSkNCgkJCQkkKHdpbmRvdykub2ZmKCJyZXNpemUiLCBt
ZXRob2RzLnVwZGF0ZVByb21wdHNQb3NpdGlvbik7DQoNCgkJCXJldHVybiB0aGlzOw0KCQl9LA0K
CQkvKioNCgkJKiBWYWxpZGF0ZXMgZWl0aGVyIGEgZm9ybSBvciBhIGxpc3Qgb2YgZmllbGRzLCBz
aG93cyBwcm9tcHRzIGFjY29yZGluZ2x5Lg0KCQkqIE5vdGU6IFRoZXJlIGlzIG5vIGFqYXggZm9y
bSB2YWxpZGF0aW9uIHdpdGggdGhpcyBtZXRob2QsIG9ubHkgZmllbGQgYWpheCB2YWxpZGF0aW9u
IGFyZSBldmFsdWF0ZWQNCgkJKg0KCQkqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZm9ybSB2YWxpZGF0
ZXMsIGZhbHNlIGlmIGl0IGZhaWxzDQoJCSovDQoJCXZhbGlkYXRlOiBmdW5jdGlvbigpIHsNCgkJ
CXZhciBlbGVtZW50ID0gJCh0aGlzKTsNCgkJCXZhciB2YWxpZCA9IG51bGw7DQoJCQkNCgkJCWlm
IChlbGVtZW50LmlzKCJmb3JtIikgfHwgZWxlbWVudC5oYXNDbGFzcygidmFsaWRhdGlvbkVuZ2lu
ZUNvbnRhaW5lciIpKSB7DQoJCQkNCgkJCQlpZiAoZWxlbWVudC5oYXNDbGFzcygndmFsaWRhdGlu
ZycpKSB7DQoJCQkJCS8vIGZvcm0gaXMgYWxyZWFkeSB2YWxpZGF0aW5nLg0KCQkJCQkvLyBTaG91
bGQgYWJvcnQgb2xkIHZhbGlkYXRpb24gYW5kIHN0YXJ0IG5ldyBvbmUuIEkgZG9uJ3Qga25vdyBo
b3cgdG8gaW1wbGVtZW50IGl0Lg0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfSBlbHNlIHsJCQkJ
DQoJCQkJCWVsZW1lbnQuYWRkQ2xhc3MoJ3ZhbGlkYXRpbmcnKTsNCgkJCQkJdmFyIG9wdGlvbnMg
PSBlbGVtZW50LmRhdGEoJ2pxdicpOw0KCQkJCQl2YXIgdmFsaWQgPSBtZXRob2RzLl92YWxpZGF0
ZUZpZWxkcyh0aGlzKTsNCg0KCQkJCQkvLyBJZiB0aGUgZm9ybSBkb2Vzbid0IHZhbGlkYXRlLCBj
bGVhciB0aGUgJ3ZhbGlkYXRpbmcnIGNsYXNzIGJlZm9yZSB0aGUgdXNlciBoYXMgYSBjaGFuY2Ug
dG8gc3VibWl0IGFnYWluDQoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsNCgkJCQkJCWVsZW1l
bnQucmVtb3ZlQ2xhc3MoJ3ZhbGlkYXRpbmcnKTsNCgkJCQkJfSwgMTAwKTsNCgkJCQkJaWYgKHZh
bGlkICYmIG9wdGlvbnMub25TdWNjZXNzKSB7DQoJCQkJCQlvcHRpb25zLm9uU3VjY2VzcygpOw0K
CQkJCQl9IGVsc2UgaWYgKCF2YWxpZCAmJiBvcHRpb25zLm9uRmFpbHVyZSkgew0KCQkJCQkJb3B0
aW9ucy5vbkZhaWx1cmUoKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoZWxlbWVudC5p
cygnZm9ybScpIHx8IGVsZW1lbnQuaGFzQ2xhc3MoJ3ZhbGlkYXRpb25FbmdpbmVDb250YWluZXIn
KSkgew0KCQkJCWVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3ZhbGlkYXRpbmcnKTsNCgkJCX0gZWxzZSB7
DQoJCQkJLy8gZmllbGQgdmFsaWRhdGlvbg0KCQkJCXZhciBmb3JtID0gZWxlbWVudC5jbG9zZXN0
KCdmb3JtLCAudmFsaWRhdGlvbkVuZ2luZUNvbnRhaW5lcicpLA0KCQkJCQlvcHRpb25zID0gKGZv
cm0uZGF0YSgnanF2JykpID8gZm9ybS5kYXRhKCdqcXYnKSA6ICQudmFsaWRhdGlvbkVuZ2luZS5k
ZWZhdWx0cywNCgkJCQkJdmFsaWQgPSBtZXRob2RzLl92YWxpZGF0ZUZpZWxkKGVsZW1lbnQsIG9w
dGlvbnMpOw0KDQoJCQkJaWYgKHZhbGlkICYmIG9wdGlvbnMub25GaWVsZFN1Y2Nlc3MpDQoJCQkJ
CW9wdGlvbnMub25GaWVsZFN1Y2Nlc3MoKTsNCgkJCQllbHNlIGlmIChvcHRpb25zLm9uRmllbGRG
YWlsdXJlICYmIG9wdGlvbnMuSW52YWxpZEZpZWxkcy5sZW5ndGggPiAwKSB7DQoJCQkJCW9wdGlv
bnMub25GaWVsZEZhaWx1cmUoKTsNCgkJCQl9DQoJCQl9DQoJCQlpZihvcHRpb25zLm9uVmFsaWRh
dGlvbkNvbXBsZXRlKSB7DQoJCQkJLy8gISEgZW5zdXJlcyB0aGF0IGFuIHVuZGVmaW5lZCByZXR1
cm4gaXMgaW50ZXJwcmV0ZWQgYXMgcmV0dXJuIGZhbHNlIGJ1dCBhbGxvd3MgYSBvblZhbGlkYXRp
b25Db21wbGV0ZSgpIHRvIHBvc3NpYmx5IHJldHVybiB0cnVlIGFuZCBoYXZlIGZvcm0gY29udGlu
dWUgcHJvY2Vzc2luZw0KCQkJCXJldHVybiAhIW9wdGlvbnMub25WYWxpZGF0aW9uQ29tcGxldGUo
Zm9ybSwgdmFsaWQpOw0KCQkJfQ0KCQkJcmV0dXJuIHZhbGlkOw0KCQl9LA0KCQkvKioNCgkJKiAg
UmVkcmF3IHByb21wdHMgcG9zaXRpb24sIHVzZWZ1bCB3aGVuIHlvdSBjaGFuZ2UgdGhlIERPTSBz
dGF0ZSB3aGVuIHZhbGlkYXRpbmcNCgkJKi8NCgkJdXBkYXRlUHJvbXB0c1Bvc2l0aW9uOiBmdW5j
dGlvbihldmVudCkgew0KDQoJCQlpZiAoZXZlbnQgJiYgdGhpcyA9PSB3aW5kb3cpIHsNCgkJCQl2
YXIgZm9ybSA9IGV2ZW50LmRhdGEuZm9ybUVsZW07DQoJCQkJdmFyIG5vQW5pbWF0aW9uID0gZXZl
bnQuZGF0YS5ub0FuaW1hdGlvbjsNCgkJCX0NCgkJCWVsc2UNCgkJCQl2YXIgZm9ybSA9ICQodGhp
cy5jbG9zZXN0KCdmb3JtLCAudmFsaWRhdGlvbkVuZ2luZUNvbnRhaW5lcicpKTsNCg0KCQkJdmFy
IG9wdGlvbnMgPSBmb3JtLmRhdGEoJ2pxdicpOw0KCQkJLy8gTm8gb3B0aW9uLCB0YWtlIGRlZmF1
bHQgb25lDQoJCQlmb3JtLmZpbmQoJ1snK29wdGlvbnMudmFsaWRhdGVBdHRyaWJ1dGUrJyo9dmFs
aWRhdGVdJykubm90KCI6ZGlzYWJsZWQiKS5lYWNoKGZ1bmN0aW9uKCl7DQoJCQkJdmFyIGZpZWxk
ID0gJCh0aGlzKTsNCgkJCQlpZiAob3B0aW9ucy5wcmV0dHlTZWxlY3QgJiYgZmllbGQuaXMoIjpo
aWRkZW4iKSkNCgkJCQkgIGZpZWxkID0gZm9ybS5maW5kKCIjIiArIG9wdGlvbnMudXNlUHJlZml4
ICsgZmllbGQuYXR0cignaWQnKSArIG9wdGlvbnMudXNlU3VmZml4KTsNCgkJCQl2YXIgcHJvbXB0
ID0gbWV0aG9kcy5fZ2V0UHJvbXB0KGZpZWxkKTsNCgkJCQl2YXIgcHJvbXB0VGV4dCA9ICQocHJv
bXB0KS5maW5kKCIuZm9ybUVycm9yQ29udGVudCIpLmh0bWwoKTsNCg0KCQkJCWlmKHByb21wdCkN
CgkJCQkJbWV0aG9kcy5fdXBkYXRlUHJvbXB0KGZpZWxkLCAkKHByb21wdCksIHByb21wdFRleHQs
IHVuZGVmaW5lZCwgZmFsc2UsIG9wdGlvbnMsIG5vQW5pbWF0aW9uKTsNCgkJCX0pOw0KCQkJcmV0
dXJuIHRoaXM7DQoJCX0sDQoJCS8qKg0KCQkqIERpc3BsYXlzIGEgcHJvbXB0IG9uIGEgZWxlbWVu
dC4NCgkJKiBOb3RlIHRoYXQgdGhlIGVsZW1lbnQgbmVlZHMgYW4gaWQhDQoJCSoNCgkJKiBAcGFy
YW0ge1N0cmluZ30gcHJvbXB0VGV4dCBodG1sIHRleHQgdG8gZGlzcGxheSB0eXBlDQoJCSogQHBh
cmFtIHtTdHJpbmd9IHR5cGUgdGhlIHR5cGUgb2YgYnViYmxlOiAncGFzcycgKGdyZWVuKSwgJ2xv
YWQnIChibGFjaykgYW55dGhpbmcgZWxzZSAocmVkKQ0KCQkqIEBwYXJhbSB7U3RyaW5nfSBwb3Nz
aWJsZSB2YWx1ZXMgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGNlbnRlclJpZ2h0LCBi
b3R0b21SaWdodA0KCQkqLw0KCQlzaG93UHJvbXB0OiBmdW5jdGlvbihwcm9tcHRUZXh0LCB0eXBl
LCBwcm9tcHRQb3NpdGlvbiwgc2hvd0Fycm93KSB7DQoJCQl2YXIgZm9ybSA9IHRoaXMuY2xvc2Vz
dCgnZm9ybSwgLnZhbGlkYXRpb25FbmdpbmVDb250YWluZXInKTsNCgkJCXZhciBvcHRpb25zID0g
Zm9ybS5kYXRhKCdqcXYnKTsNCgkJCS8vIE5vIG9wdGlvbiwgdGFrZSBkZWZhdWx0IG9uZQ0KCQkJ
aWYoIW9wdGlvbnMpDQoJCQkJb3B0aW9ucyA9IG1ldGhvZHMuX3NhdmVPcHRpb25zKHRoaXMsIG9w
dGlvbnMpOw0KCQkJaWYocHJvbXB0UG9zaXRpb24pDQoJCQkJb3B0aW9ucy5wcm9tcHRQb3NpdGlv
bj1wcm9tcHRQb3NpdGlvbjsNCgkJCW9wdGlvbnMuc2hvd0Fycm93ID0gc2hvd0Fycm93PT10cnVl
Ow0KDQoJCQltZXRob2RzLl9zaG93UHJvbXB0KHRoaXMsIHByb21wdFRleHQsIHR5cGUsIGZhbHNl
LCBvcHRpb25zKTsNCgkJCXJldHVybiB0aGlzOw0KCQl9LA0KCQkvKioNCgkJKiBDbG9zZXMgZm9y
bSBlcnJvciBwcm9tcHRzLCBDQU4gYmUgaW52aWR1YWwNCgkJKi8NCgkJaGlkZTogZnVuY3Rpb24o
KSB7DQoJCQkgdmFyIGZvcm0gPSAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0sIC52YWxpZGF0aW9uRW5n
aW5lQ29udGFpbmVyJyk7DQoJCQkgdmFyIG9wdGlvbnMgPSBmb3JtLmRhdGEoJ2pxdicpOw0KCQkJ
IHZhciBmYWRlRHVyYXRpb24gPSAob3B0aW9ucyAmJiBvcHRpb25zLmZhZGVEdXJhdGlvbikgPyBv
cHRpb25zLmZhZGVEdXJhdGlvbiA6IDAuMzsNCgkJCSB2YXIgY2xvc2luZ3RhZzsNCgkJCSANCgkJ
CSBpZigkKHRoaXMpLmlzKCJmb3JtIikgfHwgJCh0aGlzKS5oYXNDbGFzcygidmFsaWRhdGlvbkVu
Z2luZUNvbnRhaW5lciIpKSB7DQoJCQkJIGNsb3Npbmd0YWcgPSAicGFyZW50Rm9ybSIrbWV0aG9k
cy5fZ2V0Q2xhc3NOYW1lKCQodGhpcykuYXR0cigiaWQiKSk7DQoJCQkgfSBlbHNlIHsNCgkJCQkg
Y2xvc2luZ3RhZyA9IG1ldGhvZHMuX2dldENsYXNzTmFtZSgkKHRoaXMpLmF0dHIoImlkIikpICsi
Zm9ybUVycm9yIjsNCgkJCSB9DQoJCQkgJCgnLicrY2xvc2luZ3RhZykuZmFkZVRvKGZhZGVEdXJh
dGlvbiwgMC4zLCBmdW5jdGlvbigpIHsNCgkJCQkgJCh0aGlzKS5wYXJlbnQoJy5mb3JtRXJyb3JP
dXRlcicpLnJlbW92ZSgpOw0KCQkJCSAkKHRoaXMpLnJlbW92ZSgpOw0KCQkJIH0pOw0KCQkJIHJl
dHVybiB0aGlzOw0KCQkgfSwNCgkJIC8qKg0KCQkgKiBDbG9zZXMgYWxsIGVycm9yIHByb21wdHMg
b24gdGhlIHBhZ2UNCgkJICovDQoJCSBoaWRlQWxsOiBmdW5jdGlvbigpIHsNCg0KCQkJIHZhciBm
b3JtID0gdGhpczsNCgkJCSB2YXIgb3B0aW9ucyA9IGZvcm0uZGF0YSgnanF2Jyk7DQoJCQkgdmFy
IGR1cmF0aW9uID0gb3B0aW9ucyA/IG9wdGlvbnMuZmFkZUR1cmF0aW9uOjMwMDsNCgkJCSAkKCcu
Zm9ybUVycm9yJykuZmFkZVRvKGR1cmF0aW9uLCAzMDAsIGZ1bmN0aW9uKCkgew0KCQkJCSAkKHRo
aXMpLnBhcmVudCgnLmZvcm1FcnJvck91dGVyJykucmVtb3ZlKCk7DQoJCQkJICQodGhpcykucmVt
b3ZlKCk7DQoJCQkgfSk7DQoJCQkgcmV0dXJuIHRoaXM7DQoJCSB9LA0KCQkvKioNCgkJKiBUeXBp
Y2FsbHkgY2FsbGVkIHdoZW4gdXNlciBleGlzdHMgYSBmaWVsZCB1c2luZyB0YWIgb3IgYSBtb3Vz
ZSBjbGljaywgdHJpZ2dlcnMgYSBmaWVsZA0KCQkqIHZhbGlkYXRpb24NCgkJKi8NCgkJX29uRmll
bGRFdmVudDogZnVuY3Rpb24oZXZlbnQpIHsNCgkJCXZhciBmaWVsZCA9ICQodGhpcyk7DQoJCQl2
YXIgZm9ybSA9IGZpZWxkLmNsb3Nlc3QoJ2Zvcm0sIC52YWxpZGF0aW9uRW5naW5lQ29udGFpbmVy
Jyk7DQoJCQl2YXIgb3B0aW9ucyA9IGZvcm0uZGF0YSgnanF2Jyk7DQoJCQlvcHRpb25zLmV2ZW50
VHJpZ2dlciA9ICJmaWVsZCI7DQoJCQkvLyB2YWxpZGF0ZSB0aGUgY3VycmVudCBmaWVsZA0KCQkJ
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQoJCQkJbWV0aG9kcy5fdmFsaWRhdGVGaWVs
ZChmaWVsZCwgb3B0aW9ucyk7DQoJCQkJaWYgKG9wdGlvbnMuSW52YWxpZEZpZWxkcy5sZW5ndGgg
PT0gMCAmJiBvcHRpb25zLm9uRmllbGRTdWNjZXNzKSB7DQoJCQkJCW9wdGlvbnMub25GaWVsZFN1
Y2Nlc3MoKTsNCgkJCQl9IGVsc2UgaWYgKG9wdGlvbnMuSW52YWxpZEZpZWxkcy5sZW5ndGggPiAw
ICYmIG9wdGlvbnMub25GaWVsZEZhaWx1cmUpIHsNCgkJCQkJb3B0aW9ucy5vbkZpZWxkRmFpbHVy
ZSgpOw0KCQkJCX0NCgkJCX0sIChldmVudC5kYXRhKSA/IGV2ZW50LmRhdGEuZGVsYXkgOiAwKTsN
Cg0KCQl9LA0KCQkvKioNCgkJKiBDYWxsZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXRlZCwgc2hv
d3MgcHJvbXB0cyBhY2NvcmRpbmdseQ0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0NCgkJKiAg
ICAgICAgICAgIGZvcm0NCgkJKiBAcmV0dXJuIGZhbHNlIGlmIGZvcm0gc3VibWlzc2lvbiBuZWVk
cyB0byBiZSBjYW5jZWxsZWQNCgkJKi8NCgkJX29uU3VibWl0RXZlbnQ6IGZ1bmN0aW9uKCkgew0K
CQkJdmFyIGZvcm0gPSAkKHRoaXMpOw0KCQkJdmFyIG9wdGlvbnMgPSBmb3JtLmRhdGEoJ2pxdicp
Ow0KCQkJDQoJCQkvL2NoZWNrIGlmIGl0IGlzIHRyaWdnZXIgZnJvbSBza2lwcGVkIGJ1dHRvbg0K
CQkJaWYgKGZvcm0uZGF0YSgianF2X3N1Ym1pdEJ1dHRvbiIpKXsNCgkJCQl2YXIgc3VibWl0QnV0
dG9uID0gJCgiIyIgKyBmb3JtLmRhdGEoImpxdl9zdWJtaXRCdXR0b24iKSk7DQoJCQkJaWYgKHN1
Ym1pdEJ1dHRvbil7DQoJCQkJCWlmIChzdWJtaXRCdXR0b24ubGVuZ3RoID4gMCl7DQoJCQkJCQlp
ZiAoc3VibWl0QnV0dG9uLmhhc0NsYXNzKCJ2YWxpZGF0ZS1za2lwIikgfHwgc3VibWl0QnV0dG9u
LmF0dHIoImRhdGEtdmFsaWRhdGlvbi1lbmdpbmUtc2tpcCIpID09ICJ0cnVlIikNCgkJCQkJCQly
ZXR1cm4gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJb3B0aW9ucy5ldmVudFRyaWdn
ZXIgPSAic3VibWl0IjsNCg0KCQkJLy8gdmFsaWRhdGUgZWFjaCBmaWVsZCANCgkJCS8vICgtIHNr
aXAgZmllbGQgYWpheCB2YWxpZGF0aW9uLCBub3QgbmVjZXNzYXJ5IElGIHdlIHdpbGwgcGVyZm9y
bSBhbiBhamF4IGZvcm0gdmFsaWRhdGlvbikNCgkJCXZhciByPW1ldGhvZHMuX3ZhbGlkYXRlRmll
bGRzKGZvcm0pOw0KDQoJCQlpZiAociAmJiBvcHRpb25zLmFqYXhGb3JtVmFsaWRhdGlvbikgew0K
CQkJCW1ldGhvZHMuX3ZhbGlkYXRlRm9ybVdpdGhBamF4KGZvcm0sIG9wdGlvbnMpOw0KCQkJCS8v
IGNhbmNlbCBmb3JtIGF1dG8tc3VibWlzc2lvbiAtIHByb2Nlc3Mgd2l0aCBhc3luYyBjYWxsIG9u
QWpheEZvcm1Db21wbGV0ZQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCg0KCQkJaWYob3B0aW9u
cy5vblZhbGlkYXRpb25Db21wbGV0ZSkgew0KCQkJCS8vICEhIGVuc3VyZXMgdGhhdCBhbiB1bmRl
ZmluZWQgcmV0dXJuIGlzIGludGVycHJldGVkIGFzIHJldHVybiBmYWxzZSBidXQgYWxsb3dzIGEg
b25WYWxpZGF0aW9uQ29tcGxldGUoKSB0byBwb3NzaWJseSByZXR1cm4gdHJ1ZSBhbmQgaGF2ZSBm
b3JtIGNvbnRpbnVlIHByb2Nlc3NpbmcNCgkJCQlyZXR1cm4gISFvcHRpb25zLm9uVmFsaWRhdGlv
bkNvbXBsZXRlKGZvcm0sIHIpOw0KCQkJfQ0KCQkJcmV0dXJuIHI7DQoJCX0sDQoJCS8qKg0KCQkq
IFJldHVybiB0cnVlIGlmIHRoZSBhamF4IGZpZWxkIHZhbGlkYXRpb25zIHBhc3NlZCBzbyBmYXIN
CgkJKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucw0KCQkqIEByZXR1cm4gdHJ1ZSwgaXMgYWxsIGFq
YXggdmFsaWRhdGlvbiBwYXNzZWQgc28gZmFyIChyZW1lbWJlciBhamF4IGlzIGFzeW5jKQ0KCQkq
Lw0KCQlfY2hlY2tBamF4U3RhdHVzOiBmdW5jdGlvbihvcHRpb25zKSB7DQoJCQl2YXIgc3RhdHVz
ID0gdHJ1ZTsNCgkJCSQuZWFjaChvcHRpb25zLmFqYXhWYWxpZENhY2hlLCBmdW5jdGlvbihrZXks
IHZhbHVlKSB7DQoJCQkJaWYgKCF2YWx1ZSkgew0KCQkJCQlzdGF0dXMgPSBmYWxzZTsNCgkJCQkJ
Ly8gYnJlYWsgdGhlIGVhY2gNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCX0pOw0KCQkJ
cmV0dXJuIHN0YXR1czsNCgkJfSwNCgkJDQoJCS8qKg0KCQkqIFJldHVybiB0cnVlIGlmIHRoZSBh
amF4IGZpZWxkIGlzIHZhbGlkYXRlZA0KCQkqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZGlkDQoJCSog
QHBhcmFtIHtPYmplY3R9IG9wdGlvbnMNCgkJKiBAcmV0dXJuIHRydWUsIGlmIHZhbGlkYXRpb24g
cGFzc2VkLCBmYWxzZSBpZiBmYWxzZSBvciBkb2Vzbid0IGV4aXN0DQoJCSovDQoJCV9jaGVja0Fq
YXhGaWVsZFN0YXR1czogZnVuY3Rpb24oZmllbGRpZCwgb3B0aW9ucykgew0KCQkJcmV0dXJuIG9w
dGlvbnMuYWpheFZhbGlkQ2FjaGVbZmllbGRpZF0gPT0gdHJ1ZTsNCgkJfSwNCgkJLyoqDQoJCSog
VmFsaWRhdGVzIGZvcm0gZmllbGRzLCBzaG93cyBwcm9tcHRzIGFjY29yZGluZ2x5DQoJCSoNCgkJ
KiBAcGFyYW0ge2pxT2JqZWN0fQ0KCQkqICAgICAgICAgICAgZm9ybQ0KCQkqIEBwYXJhbSB7c2tp
cEFqYXhGaWVsZFZhbGlkYXRpb259DQoJCSogICAgICAgICAgICBib29sZWFuIC0gd2hlbiBzZXQg
dG8gdHJ1ZSwgYWpheCBmaWVsZCB2YWxpZGF0aW9uIGlzIHNraXBwZWQsIHR5cGljYWxseSB1c2Vk
IHdoZW4gdGhlIHN1Ym1pdCBidXR0b24gaXMgY2xpY2tlZA0KCQkqDQoJCSogQHJldHVybiB0cnVl
IGlmIGZvcm0gaXMgdmFsaWQsIGZhbHNlIGlmIG5vdCwgdW5kZWZpbmVkIGlmIGFqYXggZm9ybSB2
YWxpZGF0aW9uIGlzIGRvbmUNCgkJKi8NCgkJX3ZhbGlkYXRlRmllbGRzOiBmdW5jdGlvbihmb3Jt
KSB7DQoJCQl2YXIgb3B0aW9ucyA9IGZvcm0uZGF0YSgnanF2Jyk7DQoNCgkJCS8vIHRoaXMgdmFy
aWFibGUgaXMgc2V0IHRvIHRydWUgaWYgYW4gZXJyb3IgaXMgZm91bmQNCgkJCXZhciBlcnJvckZv
dW5kID0gZmFsc2U7DQoNCgkJCS8vIFRyaWdnZXIgaG9vaywgc3RhcnQgdmFsaWRhdGlvbg0KCQkJ
Zm9ybS50cmlnZ2VyKCJqcXYuZm9ybS52YWxpZGF0aW5nIik7DQoJCQkvLyBmaXJzdCwgZXZhbHVh
dGUgc3RhdHVzIG9mIG5vbiBhamF4IGZpZWxkcw0KCQkJdmFyIGZpcnN0X2Vycj1udWxsOw0KCQkJ
Zm9ybS5maW5kKCdbJytvcHRpb25zLnZhbGlkYXRlQXR0cmlidXRlKycqPXZhbGlkYXRlXScpLm5v
dCgiOmRpc2FibGVkIikuZWFjaCggZnVuY3Rpb24oKSB7DQoJCQkJdmFyIGZpZWxkID0gJCh0aGlz
KTsNCgkJCQl2YXIgbmFtZXMgPSBbXTsNCgkJCQlpZiAoJC5pbkFycmF5KGZpZWxkLmF0dHIoJ25h
bWUnKSwgbmFtZXMpIDwgMCkgew0KCQkJCQllcnJvckZvdW5kIHw9IG1ldGhvZHMuX3ZhbGlkYXRl
RmllbGQoZmllbGQsIG9wdGlvbnMpOw0KCQkJCQlpZiAoZXJyb3JGb3VuZCAmJiBmaXJzdF9lcnI9
PW51bGwpDQoJCQkJCQlpZiAoZmllbGQuaXMoIjpoaWRkZW4iKSAmJiBvcHRpb25zLnByZXR0eVNl
bGVjdCkNCgkJCQkJCQlmaXJzdF9lcnIgPSBmaWVsZCA9IGZvcm0uZmluZCgiIyIgKyBvcHRpb25z
LnVzZVByZWZpeCArIG1ldGhvZHMuX2pxU2VsZWN0b3IoZmllbGQuYXR0cignaWQnKSkgKyBvcHRp
b25zLnVzZVN1ZmZpeCk7DQoJCQkJCQllbHNlIHsNCg0KCQkJCQkJCS8vQ2hlY2sgaWYgd2UgbmVl
ZCB0byBhZGp1c3Qgd2hhdCBlbGVtZW50IHRvIHNob3cgdGhlIHByb21wdCBvbg0KCQkJCQkJCS8v
YW5kIGFuZCBzdWNoIHNjcm9sbCB0byBpbnN0ZWFkDQoJCQkJCQkJaWYoZmllbGQuZGF0YSgnanF2
LXByb21wdC1hdCcpIGluc3RhbmNlb2YgalF1ZXJ5ICl7DQoJCQkJCQkJCWZpZWxkID0gZmllbGQu
ZGF0YSgnanF2LXByb21wdC1hdCcpOw0KCQkJCQkJCX0gZWxzZSBpZihmaWVsZC5kYXRhKCdqcXYt
cHJvbXB0LWF0JykpIHsNCgkJCQkJCQkJZmllbGQgPSAkKGZpZWxkLmRhdGEoJ2pxdi1wcm9tcHQt
YXQnKSk7DQoJCQkJCQkJfQ0KCQkJCQkJCWZpcnN0X2Vycj1maWVsZDsNCgkJCQkJCX0NCgkJCQkJ
aWYgKG9wdGlvbnMuZG9Ob3RTaG93QWxsRXJyb3NPblN1Ym1pdCkNCgkJCQkJCXJldHVybiBmYWxz
ZTsNCgkJCQkJbmFtZXMucHVzaChmaWVsZC5hdHRyKCduYW1lJykpOw0KDQoJCQkJCS8vaWYgb3B0
aW9uIHNldCwgc3RvcCBjaGVja2luZyB2YWxpZGF0aW9uIHJ1bGVzIGFmdGVyIG9uZSBlcnJvciBp
cyBmb3VuZA0KCQkJCQlpZihvcHRpb25zLnNob3dPbmVNZXNzYWdlID09IHRydWUgJiYgZXJyb3JG
b3VuZCl7DQoJCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQl9KTsNCg0KCQkJ
Ly8gc2Vjb25kLCBjaGVjayB0byBzZWUgaWYgYWxsIGFqYXggY2FsbHMgY29tcGxldGVkIG9rDQoJ
CQkvLyBlcnJvckZvdW5kIHw9ICFtZXRob2RzLl9jaGVja0FqYXhTdGF0dXMob3B0aW9ucyk7DQoN
CgkJCS8vIHRoaXJkLCBjaGVjayBzdGF0dXMgYW5kIHNjcm9sbCB0aGUgY29udGFpbmVyIGFjY29y
ZGluZ2x5DQoJCQlmb3JtLnRyaWdnZXIoImpxdi5mb3JtLnJlc3VsdCIsIFtlcnJvckZvdW5kXSk7
DQoNCgkJCWlmIChlcnJvckZvdW5kKSB7DQoJCQkJaWYgKG9wdGlvbnMuc2Nyb2xsKSB7DQoJCQkJ
CXZhciBkZXN0aW5hdGlvbj1maXJzdF9lcnIub2Zmc2V0KCkudG9wOw0KCQkJCQl2YXIgZml4bGVm
dCA9IGZpcnN0X2Vyci5vZmZzZXQoKS5sZWZ0Ow0KDQoJCQkJCS8vcHJvbXB0IHBvc2l0aW9uaW5n
IGFkanVzdG1lbnQgc3VwcG9ydC4gVXNhZ2U6IHBvc2l0aW9uVHlwZTpYc2hpZnQsWXNoaWZ0IChm
b3IgZXguOiBib3R0b21MZWZ0OisyMCBvciBib3R0b21MZWZ0Oi0yMCwrMTApDQoJCQkJCXZhciBw
b3NpdGlvblR5cGU9b3B0aW9ucy5wcm9tcHRQb3NpdGlvbjsNCgkJCQkJaWYgKHR5cGVvZihwb3Np
dGlvblR5cGUpPT0nc3RyaW5nJyAmJiBwb3NpdGlvblR5cGUuaW5kZXhPZigiOiIpIT0tMSkNCgkJ
CQkJCXBvc2l0aW9uVHlwZT1wb3NpdGlvblR5cGUuc3Vic3RyaW5nKDAscG9zaXRpb25UeXBlLmlu
ZGV4T2YoIjoiKSk7DQoNCgkJCQkJaWYgKHBvc2l0aW9uVHlwZSE9ImJvdHRvbVJpZ2h0IiAmJiBw
b3NpdGlvblR5cGUhPSJib3R0b21MZWZ0Iikgew0KCQkJCQkJdmFyIHByb21wdF9lcnI9IG1ldGhv
ZHMuX2dldFByb21wdChmaXJzdF9lcnIpOw0KCQkJCQkJaWYgKHByb21wdF9lcnIpIHsNCgkJCQkJ
CQlkZXN0aW5hdGlvbj1wcm9tcHRfZXJyLm9mZnNldCgpLnRvcDsNCgkJCQkJCX0NCgkJCQkJfQ0K
CQkJCQkNCgkJCQkJLy8gT2Zmc2V0IHRoZSBhbW91bnQgdGhlIHBhZ2Ugc2Nyb2xscyBieSBhbiBh
bW91bnQgaW4gcHggdG8gYWNjb21vZGF0ZSBmaXhlZCBlbGVtZW50cyBhdCB0b3Agb2YgcGFnZQ0K
CQkJCQlpZiAob3B0aW9ucy5zY3JvbGxPZmZzZXQpIHsNCgkJCQkJCWRlc3RpbmF0aW9uIC09IG9w
dGlvbnMuc2Nyb2xsT2Zmc2V0Ow0KCQkJCQl9DQoNCgkJCQkJLy8gZ2V0IHRoZSBwb3NpdGlvbiBv
ZiB0aGUgZmlyc3QgZXJyb3IsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUsIG5vIG5lZWQg
dG8gY2hlY2sgdGhpcw0KCQkJCQkvL3ZhciBkZXN0aW5hdGlvbiA9IGZvcm0uZmluZCgiLmZvcm1F
cnJvcjpub3QoJy5ncmVlblBvcHVwJyk6Zmlyc3QiKS5vZmZzZXQoKS50b3A7DQoJCQkJCWlmIChv
cHRpb25zLmlzT3ZlcmZsb3duKSB7DQoJCQkJCQl2YXIgb3ZlcmZsb3dESVYgPSAkKG9wdGlvbnMu
b3ZlcmZsb3duRElWKTsNCgkJCQkJCWlmKCFvdmVyZmxvd0RJVi5sZW5ndGgpIHJldHVybiBmYWxz
ZTsNCgkJCQkJCXZhciBzY3JvbGxDb250YWluZXJTY3JvbGwgPSBvdmVyZmxvd0RJVi5zY3JvbGxU
b3AoKTsNCgkJCQkJCXZhciBzY3JvbGxDb250YWluZXJQb3MgPSAtcGFyc2VJbnQob3ZlcmZsb3dE
SVYub2Zmc2V0KCkudG9wKTsNCg0KCQkJCQkJZGVzdGluYXRpb24gKz0gc2Nyb2xsQ29udGFpbmVy
U2Nyb2xsICsgc2Nyb2xsQ29udGFpbmVyUG9zIC0gNTsNCgkJCQkJCXZhciBzY3JvbGxDb250YWlu
ZXIgPSAkKG9wdGlvbnMub3ZlcmZsb3duRElWICsgIjpub3QoOmFuaW1hdGVkKSIpOw0KDQoJCQkJ
CQlzY3JvbGxDb250YWluZXIuYW5pbWF0ZSh7IHNjcm9sbFRvcDogZGVzdGluYXRpb24gfSwgMTEw
MCwgZnVuY3Rpb24oKXsNCgkJCQkJCQlpZihvcHRpb25zLmZvY3VzRmlyc3RGaWVsZCkgZmlyc3Rf
ZXJyLmZvY3VzKCk7DQoJCQkJCQl9KTsNCg0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJCgiaHRtbCwg
Ym9keSIpLmFuaW1hdGUoew0KCQkJCQkJCXNjcm9sbFRvcDogZGVzdGluYXRpb24NCgkJCQkJCX0s
IDExMDAsIGZ1bmN0aW9uKCl7DQoJCQkJCQkJaWYob3B0aW9ucy5mb2N1c0ZpcnN0RmllbGQpIGZp
cnN0X2Vyci5mb2N1cygpOw0KCQkJCQkJfSk7DQoJCQkJCQkkKCJodG1sLCBib2R5IikuYW5pbWF0
ZSh7c2Nyb2xsTGVmdDogZml4bGVmdH0sMTEwMCkNCgkJCQkJfQ0KDQoJCQkJfSBlbHNlIGlmKG9w
dGlvbnMuZm9jdXNGaXJzdEZpZWxkKQ0KCQkJCQlmaXJzdF9lcnIuZm9jdXMoKTsNCgkJCQlyZXR1
cm4gZmFsc2U7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfSwNCgkJLyoqDQoJCSogVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIHRvIHBlcmZvcm0gYW4gYWpheCBmb3JtIHZhbGlkYXRpb24uDQoJCSog
RHVyaW5nIHRoaXMgcHJvY2VzcyBhbGwgdGhlIChmaWVsZCwgdmFsdWUpIHBhaXJzIGFyZSBzZW50
IHRvIHRoZSBzZXJ2ZXIgd2hpY2ggcmV0dXJucyBhIGxpc3Qgb2YgaW52YWxpZCBmaWVsZHMgb3Ig
dHJ1ZQ0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZm9ybQ0KCQkqIEBwYXJhbSB7TWFwfSBv
cHRpb25zDQoJCSovDQoJCV92YWxpZGF0ZUZvcm1XaXRoQWpheDogZnVuY3Rpb24oZm9ybSwgb3B0
aW9ucykgew0KDQoJCQl2YXIgZGF0YSA9IGZvcm0uc2VyaWFsaXplKCk7DQoJCQkJCQkJCQl2YXIg
dHlwZSA9IChvcHRpb25zLmFqYXhGb3JtVmFsaWRhdGlvbk1ldGhvZCkgPyBvcHRpb25zLmFqYXhG
b3JtVmFsaWRhdGlvbk1ldGhvZCA6ICJHRVQiOw0KCQkJdmFyIHVybCA9IChvcHRpb25zLmFqYXhG
b3JtVmFsaWRhdGlvblVSTCkgPyBvcHRpb25zLmFqYXhGb3JtVmFsaWRhdGlvblVSTCA6IGZvcm0u
YXR0cigiYWN0aW9uIik7DQoJCQkJCQkJCQl2YXIgZGF0YVR5cGUgPSAob3B0aW9ucy5kYXRhVHlw
ZSkgPyBvcHRpb25zLmRhdGFUeXBlIDogImpzb24iOw0KCQkJJC5hamF4KHsNCgkJCQl0eXBlOiB0
eXBlLA0KCQkJCXVybDogdXJsLA0KCQkJCWNhY2hlOiBmYWxzZSwNCgkJCQlkYXRhVHlwZTogZGF0
YVR5cGUsDQoJCQkJZGF0YTogZGF0YSwNCgkJCQlmb3JtOiBmb3JtLA0KCQkJCW1ldGhvZHM6IG1l
dGhvZHMsDQoJCQkJb3B0aW9uczogb3B0aW9ucywNCgkJCQliZWZvcmVTZW5kOiBmdW5jdGlvbigp
IHsNCgkJCQkJcmV0dXJuIG9wdGlvbnMub25CZWZvcmVBamF4Rm9ybVZhbGlkYXRpb24oZm9ybSwg
b3B0aW9ucyk7DQoJCQkJfSwNCgkJCQllcnJvcjogZnVuY3Rpb24oZGF0YSwgdHJhbnNwb3J0KSB7
DQoJCQkJCW1ldGhvZHMuX2FqYXhFcnJvcihkYXRhLCB0cmFuc3BvcnQpOw0KCQkJCX0sDQoJCQkJ
c3VjY2VzczogZnVuY3Rpb24oanNvbikgew0KCQkJCQlpZiAoKGRhdGFUeXBlID09ICJqc29uIikg
JiYgKGpzb24gIT09IHRydWUpKSB7DQoJCQkJCQkvLyBnZXR0aW5nIHRvIHRoaXMgY2FzZSBkb2Vz
bid0IG5lY2Vzc2FyeSBtZWFucyB0aGF0IHRoZSBmb3JtIGlzIGludmFsaWQNCgkJCQkJCS8vIHRo
ZSBzZXJ2ZXIgbWF5IHJldHVybiBncmVlbiBvciBjbG9zaW5nIHByb21wdCBhY3Rpb25zDQoJCQkJ
CQkvLyB0aGlzIGZsYWcgaGVscHMgZmlndXJpbmcgaXQgb3V0DQoJCQkJCQl2YXIgZXJyb3JJbkZv
cm09ZmFsc2U7DQoJCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGpzb24ubGVuZ3RoOyBpKyspIHsN
CgkJCQkJCQl2YXIgdmFsdWUgPSBqc29uW2ldOw0KDQoJCQkJCQkJdmFyIGVycm9yRmllbGRJZCA9
IHZhbHVlWzBdOw0KCQkJCQkJCXZhciBlcnJvckZpZWxkID0gJCgkKCIjIiArIGVycm9yRmllbGRJ
ZClbMF0pOw0KDQoJCQkJCQkJLy8gbWFrZSBzdXJlIHdlIGZvdW5kIHRoZSBlbGVtZW50DQoJCQkJ
CQkJaWYgKGVycm9yRmllbGQubGVuZ3RoID09IDEpIHsNCg0KCQkJCQkJCQkvLyBwcm9tcHRUZXh0
IG9yIHNlbGVjdG9yDQoJCQkJCQkJCXZhciBtc2cgPSB2YWx1ZVsyXTsNCgkJCQkJCQkJLy8gaWYg
dGhlIGZpZWxkIGlzIHZhbGlkDQoJCQkJCQkJCWlmICh2YWx1ZVsxXSA9PSB0cnVlKSB7DQoNCgkJ
CQkJCQkJCWlmIChtc2cgPT0gIiIgIHx8ICFtc2cpew0KCQkJCQkJCQkJCS8vIGlmIGZvciBzb21l
IHJlYXNvbiwgc3RhdHVzPT10cnVlIGFuZCBlcnJvcj0iIiwganVzdCBjbG9zZSB0aGUgcHJvbXB0
DQoJCQkJCQkJCQkJbWV0aG9kcy5fY2xvc2VQcm9tcHQoZXJyb3JGaWVsZCk7DQoJCQkJCQkJCQl9
IGVsc2Ugew0KCQkJCQkJCQkJCS8vIHRoZSBmaWVsZCBpcyB2YWxpZCwgYnV0IHdlIGFyZSBkaXNw
bGF5aW5nIGEgZ3JlZW4gcHJvbXB0DQoJCQkJCQkJCQkJaWYgKG9wdGlvbnMuYWxscnVsZXNbbXNn
XSkgew0KCQkJCQkJCQkJCQl2YXIgdHh0ID0gb3B0aW9ucy5hbGxydWxlc1ttc2ddLmFsZXJ0VGV4
dE9rOw0KCQkJCQkJCQkJCQlpZiAodHh0KQ0KCQkJCQkJCQkJCQkJbXNnID0gdHh0Ow0KCQkJCQkJ
CQkJCX0NCgkJCQkJCQkJCQlpZiAob3B0aW9ucy5zaG93UHJvbXB0cykgbWV0aG9kcy5fc2hvd1By
b21wdChlcnJvckZpZWxkLCBtc2csICJwYXNzIiwgZmFsc2UsIG9wdGlvbnMsIHRydWUpOw0KCQkJ
CQkJCQkJfQ0KCQkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkJLy8gdGhlIGZpZWxkIGlzIGludmFs
aWQsIHNob3cgdGhlIHJlZCBlcnJvciBwcm9tcHQNCgkJCQkJCQkJCWVycm9ySW5Gb3JtfD10cnVl
Ow0KCQkJCQkJCQkJaWYgKG9wdGlvbnMuYWxscnVsZXNbbXNnXSkgew0KCQkJCQkJCQkJCXZhciB0
eHQgPSBvcHRpb25zLmFsbHJ1bGVzW21zZ10uYWxlcnRUZXh0Ow0KCQkJCQkJCQkJCWlmICh0eHQp
DQoJCQkJCQkJCQkJCW1zZyA9IHR4dDsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmKG9wdGlvbnMu
c2hvd1Byb21wdHMpIG1ldGhvZHMuX3Nob3dQcm9tcHQoZXJyb3JGaWVsZCwgbXNnLCAiIiwgZmFs
c2UsIG9wdGlvbnMsIHRydWUpOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQkJ
b3B0aW9ucy5vbkFqYXhGb3JtQ29tcGxldGUoIWVycm9ySW5Gb3JtLCBmb3JtLCBqc29uLCBvcHRp
b25zKTsNCgkJCQkJfSBlbHNlDQoJCQkJCQlvcHRpb25zLm9uQWpheEZvcm1Db21wbGV0ZSh0cnVl
LCBmb3JtLCBqc29uLCBvcHRpb25zKTsNCg0KCQkJCX0NCgkJCX0pOw0KDQoJCX0sDQoJCS8qKg0K
CQkqIFZhbGlkYXRlcyBmaWVsZCwgc2hvd3MgcHJvbXB0cyBhY2NvcmRpbmdseQ0KCQkqDQoJCSog
QHBhcmFtIHtqcU9iamVjdH0NCgkJKiAgICAgICAgICAgIGZpZWxkDQoJCSogQHBhcmFtIHtBcnJh
eVtTdHJpbmddfQ0KCQkqICAgICAgICAgICAgZmllbGQncyB2YWxpZGF0aW9uIHJ1bGVzDQoJCSog
QHBhcmFtIHtNYXB9DQoJCSogICAgICAgICAgICB1c2VyIG9wdGlvbnMNCgkJKiBAcmV0dXJuIGZh
bHNlIGlmIGZpZWxkIGlzIHZhbGlkIChJdCBpcyBpbnZlcnNlZCBmb3IgKmZpZWxkcyosIGl0IHJl
dHVybiBmYWxzZSBvbiB2YWxpZGF0ZSBhbmQgdHJ1ZSBvbiBlcnJvcnMuKQ0KCQkqLw0KCQlfdmFs
aWRhdGVGaWVsZDogZnVuY3Rpb24oZmllbGQsIG9wdGlvbnMsIHNraXBBamF4VmFsaWRhdGlvbikg
ew0KCQkJaWYgKCFmaWVsZC5hdHRyKCJpZCIpKSB7DQoJCQkJZmllbGQuYXR0cigiaWQiLCAiZm9y
bS12YWxpZGF0aW9uLWZpZWxkLSIgKyAkLnZhbGlkYXRpb25FbmdpbmUuZmllbGRJZENvdW50ZXIp
Ow0KCQkJCSsrJC52YWxpZGF0aW9uRW5naW5lLmZpZWxkSWRDb3VudGVyOw0KCQkJfQ0KDQogICAg
ICAgICAgIGlmICghb3B0aW9ucy52YWxpZGF0ZU5vblZpc2libGVGaWVsZHMgJiYgKGZpZWxkLmlz
KCI6aGlkZGVuIikgJiYgIW9wdGlvbnMucHJldHR5U2VsZWN0IHx8IGZpZWxkLnBhcmVudCgpLmlz
KCI6aGlkZGVuIikpKQ0KCQkJCXJldHVybiBmYWxzZTsNCg0KCQkJdmFyIHJ1bGVzUGFyc2luZyA9
IGZpZWxkLmF0dHIob3B0aW9ucy52YWxpZGF0ZUF0dHJpYnV0ZSk7DQoJCQl2YXIgZ2V0UnVsZXMg
PSAvdmFsaWRhdGVcWyguKilcXS8uZXhlYyhydWxlc1BhcnNpbmcpOw0KDQoJCQlpZiAoIWdldFJ1
bGVzKQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCXZhciBzdHIgPSBnZXRSdWxlc1sxXTsNCgkJCXZh
ciBydWxlcyA9IHN0ci5zcGxpdCgvXFt8LHxcXS8pOw0KDQoJCQkvLyB0cnVlIGlmIHdlIHJhbiB0
aGUgYWpheCB2YWxpZGF0aW9uLCB0ZWxscyB0aGUgbG9naWMgdG8gc3RvcCBtZXNzaW5nIHdpdGgg
cHJvbXB0cw0KCQkJdmFyIGlzQWpheFZhbGlkYXRvciA9IGZhbHNlOw0KCQkJdmFyIGZpZWxkTmFt
ZSA9IGZpZWxkLmF0dHIoIm5hbWUiKTsNCgkJCXZhciBwcm9tcHRUZXh0ID0gIiI7DQoJCQl2YXIg
cHJvbXB0VHlwZSA9ICIiOw0KCQkJdmFyIHJlcXVpcmVkID0gZmFsc2U7DQoJCQl2YXIgbGltaXRF
cnJvcnMgPSBmYWxzZTsNCgkJCW9wdGlvbnMuaXNFcnJvciA9IGZhbHNlOw0KCQkJb3B0aW9ucy5z
aG93QXJyb3cgPSB0cnVlOw0KCQkJDQoJCQkvLyBJZiB0aGUgcHJvZ3JhbW1lciB3YW50cyB0byBs
aW1pdCB0aGUgYW1vdW50IG9mIGVycm9yIG1lc3NhZ2VzIHBlciBmaWVsZCwNCgkJCWlmIChvcHRp
b25zLm1heEVycm9yc1BlckZpZWxkID4gMCkgew0KCQkJCWxpbWl0RXJyb3JzID0gdHJ1ZTsNCgkJ
CX0NCg0KCQkJdmFyIGZvcm0gPSAkKGZpZWxkLmNsb3Nlc3QoImZvcm0sIC52YWxpZGF0aW9uRW5n
aW5lQ29udGFpbmVyIikpOw0KCQkJLy8gRml4IGZvciBhZGRpbmcgc3BhY2VzIGluIHRoZSBydWxl
cw0KCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgew0KCQkJCXJ1bGVz
W2ldID0gcnVsZXNbaV0ucmVwbGFjZSgiICIsICIiKTsNCgkJCQkvLyBSZW1vdmUgYW55IHBhcnNp
bmcgZXJyb3JzDQoJCQkJaWYgKHJ1bGVzW2ldID09PSAnJykgew0KCQkJCQlkZWxldGUgcnVsZXNb
aV07DQoJCQkJfQ0KCQkJfQ0KDQoJCQlmb3IgKHZhciBpID0gMCwgZmllbGRfZXJyb3JzID0gMDsg
aSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7DQoJCQkJDQoJCQkJLy8gSWYgd2UgYXJlIGxpbWl0aW5n
IGVycm9ycywgYW5kIGhhdmUgaGl0IHRoZSBtYXgsIGJyZWFrDQoJCQkJaWYgKGxpbWl0RXJyb3Jz
ICYmIGZpZWxkX2Vycm9ycyA+PSBvcHRpb25zLm1heEVycm9yc1BlckZpZWxkKSB7DQoJCQkJCS8v
IElmIHdlIGhhdmVuJ3QgaGl0IGEgcmVxdWlyZWQgeWV0LCBjaGVjayB0byBzZWUgaWYgdGhlcmUg
aXMgb25lIGluIHRoZSB2YWxpZGF0aW9uIHJ1bGVzIGZvciB0aGlzDQoJCQkJCS8vIGZpZWxkIGFu
ZCB0aGF0IGl0J3MgaW5kZXggaXMgZ3JlYXRlciBvciBlcXVhbCB0byBvdXIgY3VycmVudCBpbmRl
eA0KCQkJCQlpZiAoIXJlcXVpcmVkKSB7DQoJCQkJCQl2YXIgaGF2ZV9yZXF1aXJlZCA9ICQuaW5B
cnJheSgncmVxdWlyZWQnLCBydWxlcyk7DQoJCQkJCQlyZXF1aXJlZCA9IChoYXZlX3JlcXVpcmVk
ICE9IC0xICYmICBoYXZlX3JlcXVpcmVkID49IGkpOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ
CX0NCgkJCQkNCgkJCQkNCgkJCQl2YXIgZXJyb3JNc2cgPSB1bmRlZmluZWQ7DQoJCQkJc3dpdGNo
IChydWxlc1tpXSkgew0KDQoJCQkJCWNhc2UgInJlcXVpcmVkIjoNCgkJCQkJCXJlcXVpcmVkID0g
dHJ1ZTsNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5fZ2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZp
ZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX3JlcXVpcmVkKTsNCgkJ
CQkJCWJyZWFrOw0KCQkJCQljYXNlICJjdXN0b20iOg0KCQkJCQkJZXJyb3JNc2cgPSBtZXRob2Rz
Ll9nZXRFcnJvck1lc3NhZ2UoZm9ybSwgZmllbGQsIHJ1bGVzW2ldLCBydWxlcywgaSwgb3B0aW9u
cywgbWV0aG9kcy5fY3VzdG9tKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICJncm91cFJlcXVp
cmVkIjoNCgkJCQkJCS8vIENoZWNrIGlzIGl0cyB0aGUgZmlyc3Qgb2YgZ3JvdXAsIGlmIG5vdCwg
cmVsb2FkIHZhbGlkYXRpb24gd2l0aCBmaXJzdCBmaWVsZA0KCQkJCQkJLy8gQU5EIGNvbnRpbnVl
IG5vcm1hbCB2YWxpZGF0aW9uIG9uIHByZXNlbnQgZmllbGQNCgkJCQkJCXZhciBjbGFzc0dyb3Vw
ID0gIlsiK29wdGlvbnMudmFsaWRhdGVBdHRyaWJ1dGUrIio9IiArcnVsZXNbaSArIDFdICsiXSI7
DQoJCQkJCQl2YXIgZmlyc3RPZkdyb3VwID0gZm9ybS5maW5kKGNsYXNzR3JvdXApLmVxKDApOw0K
CQkJCQkJaWYoZmlyc3RPZkdyb3VwWzBdICE9IGZpZWxkWzBdKXsNCg0KCQkJCQkJCW1ldGhvZHMu
X3ZhbGlkYXRlRmllbGQoZmlyc3RPZkdyb3VwLCBvcHRpb25zLCBza2lwQWpheFZhbGlkYXRpb24p
OyANCgkJCQkJCQlvcHRpb25zLnNob3dBcnJvdyA9IHRydWU7DQoNCgkJCQkJCX0NCgkJCQkJCWVy
cm9yTXNnID0gbWV0aG9kcy5fZ2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwg
cnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX2dyb3VwUmVxdWlyZWQpOw0KCQkJCQkJaWYoZXJy
b3JNc2cpICByZXF1aXJlZCA9IHRydWU7DQoJCQkJCQlvcHRpb25zLnNob3dBcnJvdyA9IGZhbHNl
Ow0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgImFqYXgiOg0KCQkJCQkJLy8gQUpBWCBkZWZhdWx0
cyB0byByZXR1cm5pbmcgaXQncyBsb2FkaW5nIG1lc3NhZ2UNCgkJCQkJCWVycm9yTXNnID0gbWV0
aG9kcy5fYWpheChmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpOw0KCQkJCQkJaWYgKGVycm9yTXNn
KSB7DQoJCQkJCQkJcHJvbXB0VHlwZSA9ICJsb2FkIjsNCgkJCQkJCX0NCgkJCQkJCWJyZWFrOw0K
CQkJCQljYXNlICJtaW5TaXplIjoNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5fZ2V0RXJyb3JN
ZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMu
X21pblNpemUpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgIm1heFNpemUiOg0KCQkJCQkJZXJy
b3JNc2cgPSBtZXRob2RzLl9nZXRFcnJvck1lc3NhZ2UoZm9ybSwgZmllbGQsIHJ1bGVzW2ldLCBy
dWxlcywgaSwgb3B0aW9ucywgbWV0aG9kcy5fbWF4U2l6ZSk7DQoJCQkJCQlicmVhazsNCgkJCQkJ
Y2FzZSAibWluIjoNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5fZ2V0RXJyb3JNZXNzYWdlKGZv
cm0sIGZpZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX21pbik7DQoJ
CQkJCQlicmVhazsNCgkJCQkJY2FzZSAibWF4IjoNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5f
Z2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMs
IG1ldGhvZHMuX21heCk7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAicGFzdCI6DQoJCQkJCQll
cnJvck1zZyA9IG1ldGhvZHMuX2dldEVycm9yTWVzc2FnZShmb3JtLCBmaWVsZCxydWxlc1tpXSwg
cnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX3Bhc3QpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNh
c2UgImZ1dHVyZSI6DQoJCQkJCQllcnJvck1zZyA9IG1ldGhvZHMuX2dldEVycm9yTWVzc2FnZShm
b3JtLCBmaWVsZCxydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX2Z1dHVyZSk7
DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAiZGF0ZVJhbmdlIjoNCgkJCQkJCXZhciBjbGFzc0dy
b3VwID0gIlsiK29wdGlvbnMudmFsaWRhdGVBdHRyaWJ1dGUrIio9IiArIHJ1bGVzW2kgKyAxXSAr
ICJdIjsNCgkJCQkJCW9wdGlvbnMuZmlyc3RPZkdyb3VwID0gZm9ybS5maW5kKGNsYXNzR3JvdXAp
LmVxKDApOw0KCQkJCQkJb3B0aW9ucy5zZWNvbmRPZkdyb3VwID0gZm9ybS5maW5kKGNsYXNzR3Jv
dXApLmVxKDEpOw0KDQoJCQkJCQkvL2lmIG9uZSBlbnRyeSBvdXQgb2YgdGhlIHBhaXIgaGFzIHZh
bHVlIHRoZW4gcHJvY2VlZCB0byBydW4gdGhyb3VnaCB2YWxpZGF0aW9uDQoJCQkJCQlpZiAob3B0
aW9ucy5maXJzdE9mR3JvdXBbMF0udmFsdWUgfHwgb3B0aW9ucy5zZWNvbmRPZkdyb3VwWzBdLnZh
bHVlKSB7DQoJCQkJCQkJZXJyb3JNc2cgPSBtZXRob2RzLl9nZXRFcnJvck1lc3NhZ2UoZm9ybSwg
ZmllbGQscnVsZXNbaV0sIHJ1bGVzLCBpLCBvcHRpb25zLCBtZXRob2RzLl9kYXRlUmFuZ2UpOw0K
CQkJCQkJfQ0KCQkJCQkJaWYgKGVycm9yTXNnKSByZXF1aXJlZCA9IHRydWU7DQoJCQkJCQlvcHRp
b25zLnNob3dBcnJvdyA9IGZhbHNlOw0KCQkJCQkJYnJlYWs7DQoNCgkJCQkJY2FzZSAiZGF0ZVRp
bWVSYW5nZSI6DQoJCQkJCQl2YXIgY2xhc3NHcm91cCA9ICJbIitvcHRpb25zLnZhbGlkYXRlQXR0
cmlidXRlKyIqPSIgKyBydWxlc1tpICsgMV0gKyAiXSI7DQoJCQkJCQlvcHRpb25zLmZpcnN0T2ZH
cm91cCA9IGZvcm0uZmluZChjbGFzc0dyb3VwKS5lcSgwKTsNCgkJCQkJCW9wdGlvbnMuc2Vjb25k
T2ZHcm91cCA9IGZvcm0uZmluZChjbGFzc0dyb3VwKS5lcSgxKTsNCg0KCQkJCQkJLy9pZiBvbmUg
ZW50cnkgb3V0IG9mIHRoZSBwYWlyIGhhcyB2YWx1ZSB0aGVuIHByb2NlZWQgdG8gcnVuIHRocm91
Z2ggdmFsaWRhdGlvbg0KCQkJCQkJaWYgKG9wdGlvbnMuZmlyc3RPZkdyb3VwWzBdLnZhbHVlIHx8
IG9wdGlvbnMuc2Vjb25kT2ZHcm91cFswXS52YWx1ZSkgew0KCQkJCQkJCWVycm9yTXNnID0gbWV0
aG9kcy5fZ2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLHJ1bGVzW2ldLCBydWxlcywgaSwgb3B0
aW9ucywgbWV0aG9kcy5fZGF0ZVRpbWVSYW5nZSk7DQoJCQkJCQl9DQoJCQkJCQlpZiAoZXJyb3JN
c2cpIHJlcXVpcmVkID0gdHJ1ZTsNCgkJCQkJCW9wdGlvbnMuc2hvd0Fycm93ID0gZmFsc2U7DQoJ
CQkJCQlicmVhazsNCgkJCQkJY2FzZSAibWF4Q2hlY2tib3giOg0KCQkJCQkJZmllbGQgPSAkKGZv
cm0uZmluZCgiaW5wdXRbbmFtZT0nIiArIGZpZWxkTmFtZSArICInXSIpKTsNCgkJCQkJCWVycm9y
TXNnID0gbWV0aG9kcy5fZ2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwgcnVs
ZXMsIGksIG9wdGlvbnMsIG1ldGhvZHMuX21heENoZWNrYm94KTsNCgkJCQkJCWJyZWFrOw0KCQkJ
CQljYXNlICJtaW5DaGVja2JveCI6DQoJCQkJCQlmaWVsZCA9ICQoZm9ybS5maW5kKCJpbnB1dFtu
YW1lPSciICsgZmllbGROYW1lICsgIiddIikpOw0KCQkJCQkJZXJyb3JNc2cgPSBtZXRob2RzLl9n
ZXRFcnJvck1lc3NhZ2UoZm9ybSwgZmllbGQsIHJ1bGVzW2ldLCBydWxlcywgaSwgb3B0aW9ucywg
bWV0aG9kcy5fbWluQ2hlY2tib3gpOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgImVxdWFscyI6
DQoJCQkJCQllcnJvck1zZyA9IG1ldGhvZHMuX2dldEVycm9yTWVzc2FnZShmb3JtLCBmaWVsZCwg
cnVsZXNbaV0sIHJ1bGVzLCBpLCBvcHRpb25zLCBtZXRob2RzLl9lcXVhbHMpOw0KCQkJCQkJYnJl
YWs7DQoJCQkJCWNhc2UgImZ1bmNDYWxsIjoNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5fZ2V0
RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMsIG1l
dGhvZHMuX2Z1bmNDYWxsKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICJuYW1lT25JZCI6DQoJ
CQkJCQllcnJvck1zZyA9IG1ldGhvZHMuX2dldEVycm9yTWVzc2FnZShmb3JtLCBmaWVsZCwgcnVs
ZXNbaV0sIHJ1bGVzLCBpLCBvcHRpb25zLCBtZXRob2RzLl9uYW1lT25JZCk7DQoJCQkJCQlicmVh
azsNCgkJCQkJY2FzZSAiY29uZFJlcXVpcmVkIjoNCgkJCQkJCWVycm9yTXNnID0gbWV0aG9kcy5f
Z2V0RXJyb3JNZXNzYWdlKGZvcm0sIGZpZWxkLCBydWxlc1tpXSwgcnVsZXMsIGksIG9wdGlvbnMs
IG1ldGhvZHMuX2NvbmRSZXF1aXJlZCk7DQoJCQkJCQlpZiAoZXJyb3JNc2cgIT09IHVuZGVmaW5l
ZCkgew0KCQkJCQkJCXJlcXVpcmVkID0gdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJCWJyZWFrOw0KDQoJ
CQkJCWRlZmF1bHQ6DQoJCQkJfQ0KCQkJCQ0KCQkJCXZhciBlbmRfdmFsaWRhdGlvbiA9IGZhbHNl
Ow0KCQkJCQ0KCQkJCS8vIElmIHdlIHdlcmUgcGFzc2VkIGJhY2sgYW4gbWVzc2FnZSBvYmplY3Qs
IGNoZWNrIHdoYXQgdGhlIHN0YXR1cyB3YXMgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZG8NCgkJCQlp
ZiAodHlwZW9mIGVycm9yTXNnID09ICJvYmplY3QiKSB7DQoJCQkJCXN3aXRjaCAoZXJyb3JNc2cu
c3RhdHVzKSB7DQoJCQkJCQljYXNlICJfYnJlYWsiOg0KCQkJCQkJCWVuZF92YWxpZGF0aW9uID0g
dHJ1ZTsNCgkJCQkJCQlicmVhazsNCgkJCQkJCS8vIElmIHdlIGhhdmUgYW4gZXJyb3IgbWVzc2Fn
ZSwgc2V0IGVycm9yTXNnIHRvIHRoZSBlcnJvciBtZXNzYWdlDQoJCQkJCQljYXNlICJfZXJyb3Ii
Og0KCQkJCQkJCWVycm9yTXNnID0gZXJyb3JNc2cubWVzc2FnZTsNCgkJCQkJCQlicmVhazsNCgkJ
CQkJCS8vIElmIHdlIHdhbnQgdG8gdGhyb3cgYW4gZXJyb3IsIGJ1dCBub3Qgc2hvdyBhIHByb21w
dCwgcmV0dXJuIGVhcmx5IHdpdGggdHJ1ZQ0KCQkJCQkJY2FzZSAiX2Vycm9yX25vX3Byb21wdCI6
DQoJCQkJCQkJcmV0dXJuIHRydWU7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQkvLyBBbnl0aGluZyBl
bHNlIHdlIGNvbnRpbnVlIG9uDQoJCQkJCQlkZWZhdWx0Og0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9
DQoJCQkJfQ0KCQkJCQ0KCQkJCS8vIElmIGl0IGhhcyBiZWVuIHNwZWNpZmllZCB0aGF0IHZhbGlk
YXRpb24gc2hvdWxkIGVuZCBub3csIGJyZWFrDQoJCQkJaWYgKGVuZF92YWxpZGF0aW9uKSB7DQoJ
CQkJCWJyZWFrOw0KCQkJCX0NCgkJCQkNCgkJCQkvLyBJZiB3ZSBoYXZlIGEgc3RyaW5nLCB0aGF0
IG1lYW5zIHRoYXQgd2UgaGF2ZSBhbiBlcnJvciwgc28gYWRkIGl0IHRvIHRoZSBlcnJvciBtZXNz
YWdlLg0KCQkJCWlmICh0eXBlb2YgZXJyb3JNc2cgPT0gJ3N0cmluZycpIHsNCgkJCQkJcHJvbXB0
VGV4dCArPSBlcnJvck1zZyArICI8YnIvPiI7DQoJCQkJCW9wdGlvbnMuaXNFcnJvciA9IHRydWU7
DQoJCQkJCWZpZWxkX2Vycm9ycysrOw0KCQkJCX0JDQoJCQl9DQoJCQkvLyBJZiB0aGUgcnVsZXMg
cmVxdWlyZWQgaXMgbm90IGFkZGVkLCBhbiBlbXB0eSBmaWVsZCBpcyBub3QgdmFsaWRhdGVkDQoJ
CQlpZighcmVxdWlyZWQgJiYgIShmaWVsZC52YWwoKSkgJiYgZmllbGQudmFsKCkubGVuZ3RoIDwg
MSkgb3B0aW9ucy5pc0Vycm9yID0gZmFsc2U7DQoNCgkJCS8vIEhhY2sgZm9yIHJhZGlvL2NoZWNr
Ym94IGdyb3VwIGJ1dHRvbiwgdGhlIHZhbGlkYXRpb24gZ28gaW50byB0aGUNCgkJCS8vIGZpcnN0
IHJhZGlvL2NoZWNrYm94IG9mIHRoZSBncm91cA0KCQkJdmFyIGZpZWxkVHlwZSA9IGZpZWxkLnBy
b3AoInR5cGUiKTsNCgkJCXZhciBwb3NpdGlvblR5cGU9ZmllbGQuZGF0YSgicHJvbXB0UG9zaXRp
b24iKSB8fCBvcHRpb25zLnByb21wdFBvc2l0aW9uOw0KDQoJCQlpZiAoKGZpZWxkVHlwZSA9PSAi
cmFkaW8iIHx8IGZpZWxkVHlwZSA9PSAiY2hlY2tib3giKSAmJiBmb3JtLmZpbmQoImlucHV0W25h
bWU9JyIgKyBmaWVsZE5hbWUgKyAiJ10iKS5zaXplKCkgPiAxKSB7DQoJCQkJaWYocG9zaXRpb25U
eXBlID09PSAnaW5saW5lJykgew0KCQkJCQlmaWVsZCA9ICQoZm9ybS5maW5kKCJpbnB1dFtuYW1l
PSciICsgZmllbGROYW1lICsgIiddW3R5cGUhPWhpZGRlbl06bGFzdCIpKTsNCgkJCQl9IGVsc2Ug
ew0KCQkJCWZpZWxkID0gJChmb3JtLmZpbmQoImlucHV0W25hbWU9JyIgKyBmaWVsZE5hbWUgKyAi
J11bdHlwZSE9aGlkZGVuXTpmaXJzdCIpKTsNCgkJCQl9DQoJCQkJb3B0aW9ucy5zaG93QXJyb3cg
PSBmYWxzZTsNCgkJCX0NCg0KCQkJaWYoZmllbGQuaXMoIjpoaWRkZW4iKSAmJiBvcHRpb25zLnBy
ZXR0eVNlbGVjdCkgew0KCQkJCWZpZWxkID0gZm9ybS5maW5kKCIjIiArIG9wdGlvbnMudXNlUHJl
Zml4ICsgbWV0aG9kcy5fanFTZWxlY3RvcihmaWVsZC5hdHRyKCdpZCcpKSArIG9wdGlvbnMudXNl
U3VmZml4KTsNCgkJCX0NCg0KCQkJaWYgKG9wdGlvbnMuaXNFcnJvciAmJiBvcHRpb25zLnNob3dQ
cm9tcHRzKXsNCgkJCQltZXRob2RzLl9zaG93UHJvbXB0KGZpZWxkLCBwcm9tcHRUZXh0LCBwcm9t
cHRUeXBlLCBmYWxzZSwgb3B0aW9ucyk7DQoJCQl9ZWxzZXsNCgkJCQlpZiAoIWlzQWpheFZhbGlk
YXRvcikgbWV0aG9kcy5fY2xvc2VQcm9tcHQoZmllbGQpOw0KCQkJfQ0KDQoJCQlpZiAoIWlzQWph
eFZhbGlkYXRvcikgew0KCQkJCWZpZWxkLnRyaWdnZXIoImpxdi5maWVsZC5yZXN1bHQiLCBbZmll
bGQsIG9wdGlvbnMuaXNFcnJvciwgcHJvbXB0VGV4dF0pOw0KCQkJfQ0KDQoJCQkvKiBSZWNvcmQg
ZXJyb3IgKi8NCgkJCXZhciBlcnJpbmRleCA9ICQuaW5BcnJheShmaWVsZFswXSwgb3B0aW9ucy5J
bnZhbGlkRmllbGRzKTsNCgkJCWlmIChlcnJpbmRleCA9PSAtMSkgew0KCQkJCWlmIChvcHRpb25z
LmlzRXJyb3IpDQoJCQkJb3B0aW9ucy5JbnZhbGlkRmllbGRzLnB1c2goZmllbGRbMF0pOw0KCQkJ
fSBlbHNlIGlmICghb3B0aW9ucy5pc0Vycm9yKSB7DQoJCQkJb3B0aW9ucy5JbnZhbGlkRmllbGRz
LnNwbGljZShlcnJpbmRleCwgMSk7DQoJCQl9DQoJCQkJDQoJCQltZXRob2RzLl9oYW5kbGVTdGF0
dXNDc3NDbGFzc2VzKGZpZWxkLCBvcHRpb25zKTsNCgkNCgkJCS8qIHJ1biBjYWxsYmFjayBmdW5j
dGlvbiBmb3IgZWFjaCBmaWVsZCAqLw0KCQkJaWYgKG9wdGlvbnMuaXNFcnJvciAmJiBvcHRpb25z
Lm9uRmllbGRGYWlsdXJlKQ0KCQkJCW9wdGlvbnMub25GaWVsZEZhaWx1cmUoZmllbGQpOw0KDQoJ
CQlpZiAoIW9wdGlvbnMuaXNFcnJvciAmJiBvcHRpb25zLm9uRmllbGRTdWNjZXNzKQ0KCQkJCW9w
dGlvbnMub25GaWVsZFN1Y2Nlc3MoZmllbGQpOw0KDQoJCQlyZXR1cm4gb3B0aW9ucy5pc0Vycm9y
Ow0KCQl9LA0KCQkvKioNCgkJKiBIYW5kbGluZyBjc3MgY2xhc3NlcyBvZiBmaWVsZHMgaW5kaWNh
dGluZyByZXN1bHQgb2YgdmFsaWRhdGlvbiANCgkJKg0KCQkqIEBwYXJhbSB7anFPYmplY3R9DQoJ
CSogICAgICAgICAgICBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0NCgkJKiAgICAg
ICAgICAgIGZpZWxkJ3MgdmFsaWRhdGlvbiBydWxlcyAgICAgICAgICAgIA0KCQkqIEBwcml2YXRl
DQoJCSovDQoJCV9oYW5kbGVTdGF0dXNDc3NDbGFzc2VzOiBmdW5jdGlvbihmaWVsZCwgb3B0aW9u
cykgew0KCQkJLyogcmVtb3ZlIGFsbCBjbGFzc2VzICovDQoJCQlpZihvcHRpb25zLmFkZFN1Y2Nl
c3NDc3NDbGFzc1RvRmllbGQpDQoJCQkJZmllbGQucmVtb3ZlQ2xhc3Mob3B0aW9ucy5hZGRTdWNj
ZXNzQ3NzQ2xhc3NUb0ZpZWxkKTsNCgkJCQ0KCQkJaWYob3B0aW9ucy5hZGRGYWlsdXJlQ3NzQ2xh
c3NUb0ZpZWxkKQ0KCQkJCWZpZWxkLnJlbW92ZUNsYXNzKG9wdGlvbnMuYWRkRmFpbHVyZUNzc0Ns
YXNzVG9GaWVsZCk7DQoJCQkNCgkJCS8qIEFkZCBjbGFzc2VzICovDQoJCQlpZiAob3B0aW9ucy5h
ZGRTdWNjZXNzQ3NzQ2xhc3NUb0ZpZWxkICYmICFvcHRpb25zLmlzRXJyb3IpDQoJCQkJZmllbGQu
YWRkQ2xhc3Mob3B0aW9ucy5hZGRTdWNjZXNzQ3NzQ2xhc3NUb0ZpZWxkKTsNCgkJCQ0KCQkJaWYg
KG9wdGlvbnMuYWRkRmFpbHVyZUNzc0NsYXNzVG9GaWVsZCAmJiBvcHRpb25zLmlzRXJyb3IpDQoJ
CQkJZmllbGQuYWRkQ2xhc3Mob3B0aW9ucy5hZGRGYWlsdXJlQ3NzQ2xhc3NUb0ZpZWxkKTsJCQ0K
CQl9LA0KCQkNCgkJIC8qKioqKioqKioqKioqKioqKioqKg0KCQkgICogX2dldEVycm9yTWVzc2Fn
ZQ0KCQkgICoNCgkJICAqIEBwYXJhbSBmb3JtDQoJCSAgKiBAcGFyYW0gZmllbGQNCgkJICAqIEBw
YXJhbSBydWxlDQoJCSAgKiBAcGFyYW0gcnVsZXMNCgkJICAqIEBwYXJhbSBpDQoJCSAgKiBAcGFy
YW0gb3B0aW9ucw0KCQkgICogQHBhcmFtIG9yaWdpbmFsVmFsaWRhdGlvbk1ldGhvZA0KCQkgICog
QHJldHVybiB7Kn0NCgkJICAqIEBwcml2YXRlDQoJCSAgKi8NCgkJIF9nZXRFcnJvck1lc3NhZ2U6
ZnVuY3Rpb24gKGZvcm0sIGZpZWxkLCBydWxlLCBydWxlcywgaSwgb3B0aW9ucywgb3JpZ2luYWxW
YWxpZGF0aW9uTWV0aG9kKSB7DQoJCQkgLy8gSWYgd2UgYXJlIHVzaW5nIHRoZSBjdXN0b24gdmFs
aWRhdGlvbiB0eXBlLCBidWlsZCB0aGUgaW5kZXggZm9yIHRoZSBydWxlLg0KCQkJIC8vIE90aGVy
d2lzZSBpZiB3ZSBhcmUgZG9pbmcgYSBmdW5jdGlvbiBjYWxsLCBtYWtlIHRoZSBjYWxsIGFuZCBy
ZXR1cm4gdGhlIG9iamVjdA0KCQkJIC8vIHRoYXQgaXMgcGFzc2VkIGJhY2suDQoJIAkJIHZhciBy
dWxlX2luZGV4ID0galF1ZXJ5LmluQXJyYXkocnVsZSwgcnVsZXMpOw0KCQkJIGlmIChydWxlID09
PSAiY3VzdG9tIiB8fCBydWxlID09PSAiZnVuY0NhbGwiKSB7DQoJCQkJIHZhciBjdXN0b21fdmFs
aWRhdGlvbl90eXBlID0gcnVsZXNbcnVsZV9pbmRleCArIDFdOw0KCQkJCSBydWxlID0gcnVsZSAr
ICJbIiArIGN1c3RvbV92YWxpZGF0aW9uX3R5cGUgKyAiXSI7DQoJCQkJIC8vIERlbGV0ZSB0aGUg
cnVsZSBmcm9tIHRoZSBydWxlcyBhcnJheSBzbyB0aGF0IGl0IGRvZXNuJ3QgdHJ5IHRvIGNhbGwg
dGhlDQoJCQkgICAgLy8gc2FtZSBydWxlIG92ZXIgYWdhaW4NCgkJCSAgICBkZWxldGUocnVsZXNb
cnVsZV9pbmRleF0pOw0KCQkJIH0NCgkJCSAvLyBDaGFuZ2UgdGhlIHJ1bGUgdG8gdGhlIGNvbXBv
c2l0ZSBydWxlLCBpZiBpdCB3YXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsDQoJCQkgdmFy
IGFsdGVyZWRSdWxlID0gcnVsZTsNCg0KDQoJCQkgdmFyIGVsZW1lbnRfY2xhc3NlcyA9IChmaWVs
ZC5hdHRyKCJkYXRhLXZhbGlkYXRpb24tZW5naW5lIikpID8gZmllbGQuYXR0cigiZGF0YS12YWxp
ZGF0aW9uLWVuZ2luZSIpIDogZmllbGQuYXR0cigiY2xhc3MiKTsNCgkJCSB2YXIgZWxlbWVudF9j
bGFzc2VzX2FycmF5ID0gZWxlbWVudF9jbGFzc2VzLnNwbGl0KCIgIik7DQoNCgkJCSAvLyBDYWxs
IHRoZSBvcmlnaW5hbCB2YWxpZGF0aW9uIG1ldGhvZC4gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBk
YXRlcyBvciBjaGVja2JveGVzLCBhbHNvIHBhc3MgdGhlIGZvcm0NCgkJCSB2YXIgZXJyb3JNc2c7
DQoJCQkgaWYgKHJ1bGUgPT0gImZ1dHVyZSIgfHwgcnVsZSA9PSAicGFzdCIgIHx8IHJ1bGUgPT0g
Im1heENoZWNrYm94IiB8fCBydWxlID09ICJtaW5DaGVja2JveCIpIHsNCgkJCQkgZXJyb3JNc2cg
PSBvcmlnaW5hbFZhbGlkYXRpb25NZXRob2QoZm9ybSwgZmllbGQsIHJ1bGVzLCBpLCBvcHRpb25z
KTsNCgkJCSB9IGVsc2Ugew0KCQkJCSBlcnJvck1zZyA9IG9yaWdpbmFsVmFsaWRhdGlvbk1ldGhv
ZChmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpOw0KCQkJIH0NCg0KCQkJIC8vIElmIHRoZSBvcmln
aW5hbCB2YWxpZGF0aW9uIG1ldGhvZCByZXR1cm5lZCBhbiBlcnJvciBhbmQgd2UgaGF2ZSBhIGN1
c3RvbSBlcnJvciBtZXNzYWdlLA0KCQkJIC8vIHJldHVybiB0aGUgY3VzdG9tIG1lc3NhZ2UgaW5z
dGVhZC4gT3RoZXJ3aXNlIHJldHVybiB0aGUgb3JpZ2luYWwgZXJyb3IgbWVzc2FnZS4NCgkJCSBp
ZiAoZXJyb3JNc2cgIT0gdW5kZWZpbmVkKSB7DQoJCQkJIHZhciBjdXN0b21fbWVzc2FnZSA9IG1l
dGhvZHMuX2dldEN1c3RvbUVycm9yTWVzc2FnZSgkKGZpZWxkKSwgZWxlbWVudF9jbGFzc2VzX2Fy
cmF5LCBhbHRlcmVkUnVsZSwgb3B0aW9ucyk7DQoJCQkJIGlmIChjdXN0b21fbWVzc2FnZSkgZXJy
b3JNc2cgPSBjdXN0b21fbWVzc2FnZTsNCgkJCSB9DQoJCQkgcmV0dXJuIGVycm9yTXNnOw0KDQoJ
CSB9LA0KCQkgX2dldEN1c3RvbUVycm9yTWVzc2FnZTpmdW5jdGlvbiAoZmllbGQsIGNsYXNzZXMs
IHJ1bGUsIG9wdGlvbnMpIHsNCgkJCXZhciBjdXN0b21fbWVzc2FnZSA9IGZhbHNlOw0KCQkJdmFy
IHZhbGlkaXR5UHJvcCA9IC9eY3VzdG9tXFsuKlxdJC8udGVzdChydWxlKSA/IG1ldGhvZHMuX3Zh
bGlkaXR5UHJvcFsiY3VzdG9tIl0gOiBtZXRob2RzLl92YWxpZGl0eVByb3BbcnVsZV07DQoJCQkg
Ly8gSWYgdGhlcmUgaXMgYSB2YWxpZGl0eVByb3AgZm9yIHRoaXMgcnVsZSwgY2hlY2sgdG8gc2Vl
IGlmIHRoZSBmaWVsZCBoYXMgYW4gYXR0cmlidXRlIGZvciBpdA0KCQkJaWYgKHZhbGlkaXR5UHJv
cCAhPSB1bmRlZmluZWQpIHsNCgkJCQljdXN0b21fbWVzc2FnZSA9IGZpZWxkLmF0dHIoImRhdGEt
ZXJyb3JtZXNzYWdlLSIrdmFsaWRpdHlQcm9wKTsNCgkJCQkvLyBJZiB0aGVyZSB3YXMgYW4gZXJy
b3IgbWVzc2FnZSBmb3IgaXQsIHJldHVybiB0aGUgbWVzc2FnZQ0KCQkJCWlmIChjdXN0b21fbWVz
c2FnZSAhPSB1bmRlZmluZWQpIA0KCQkJCQlyZXR1cm4gY3VzdG9tX21lc3NhZ2U7DQoJCQl9DQoJ
CQljdXN0b21fbWVzc2FnZSA9IGZpZWxkLmF0dHIoImRhdGEtZXJyb3JtZXNzYWdlIik7DQoJCQkg
Ly8gSWYgdGhlcmUgaXMgYW4gaW5saW5lIGN1c3RvbSBlcnJvciBtZXNzYWdlLCByZXR1cm4gaXQN
CgkJCWlmIChjdXN0b21fbWVzc2FnZSAhPSB1bmRlZmluZWQpIA0KCQkJCXJldHVybiBjdXN0b21f
bWVzc2FnZTsNCgkJCXZhciBpZCA9ICcjJyArIGZpZWxkLmF0dHIoImlkIik7DQoJCQkvLyBJZiB3
ZSBoYXZlIGN1c3RvbSBtZXNzYWdlcyBmb3IgdGhlIGVsZW1lbnQncyBpZCwgZ2V0IHRoZSBtZXNz
YWdlIGZvciB0aGUgcnVsZSBmcm9tIHRoZSBpZC4NCgkJCS8vIE90aGVyd2lzZSwgaWYgd2UgaGF2
ZSBjdXN0b20gbWVzc2FnZXMgZm9yIHRoZSBlbGVtZW50J3MgY2xhc3NlcywgdXNlIHRoZSBmaXJz
dCBjbGFzcyBtZXNzYWdlIHdlIGZpbmQgaW5zdGVhZC4NCgkJCWlmICh0eXBlb2Ygb3B0aW9ucy5j
dXN0b21fZXJyb3JfbWVzc2FnZXNbaWRdICE9ICJ1bmRlZmluZWQiICYmDQoJCQkJdHlwZW9mIG9w
dGlvbnMuY3VzdG9tX2Vycm9yX21lc3NhZ2VzW2lkXVtydWxlXSAhPSAidW5kZWZpbmVkIiApIHsN
CgkJCQkJCSAgY3VzdG9tX21lc3NhZ2UgPSBvcHRpb25zLmN1c3RvbV9lcnJvcl9tZXNzYWdlc1tp
ZF1bcnVsZV1bJ21lc3NhZ2UnXTsNCgkJCX0gZWxzZSBpZiAoY2xhc3Nlcy5sZW5ndGggPiAwKSB7
DQoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aCAmJiBjbGFzc2VzLmxlbmd0
aCA+IDA7IGkrKykgew0KCQkJCQkgdmFyIGVsZW1lbnRfY2xhc3MgPSAiLiIgKyBjbGFzc2VzW2ld
Ow0KCQkJCQlpZiAodHlwZW9mIG9wdGlvbnMuY3VzdG9tX2Vycm9yX21lc3NhZ2VzW2VsZW1lbnRf
Y2xhc3NdICE9ICJ1bmRlZmluZWQiICYmDQoJCQkJCQl0eXBlb2Ygb3B0aW9ucy5jdXN0b21fZXJy
b3JfbWVzc2FnZXNbZWxlbWVudF9jbGFzc11bcnVsZV0gIT0gInVuZGVmaW5lZCIpIHsNCgkJCQkJ
CQljdXN0b21fbWVzc2FnZSA9IG9wdGlvbnMuY3VzdG9tX2Vycm9yX21lc3NhZ2VzW2VsZW1lbnRf
Y2xhc3NdW3J1bGVdWydtZXNzYWdlJ107DQoJCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQl9DQoJ
CQl9DQoJCQlpZiAoIWN1c3RvbV9tZXNzYWdlICYmDQoJCQkJdHlwZW9mIG9wdGlvbnMuY3VzdG9t
X2Vycm9yX21lc3NhZ2VzW3J1bGVdICE9ICJ1bmRlZmluZWQiICYmDQoJCQkJdHlwZW9mIG9wdGlv
bnMuY3VzdG9tX2Vycm9yX21lc3NhZ2VzW3J1bGVdWydtZXNzYWdlJ10gIT0gInVuZGVmaW5lZCIp
ew0KCQkJCQkgY3VzdG9tX21lc3NhZ2UgPSBvcHRpb25zLmN1c3RvbV9lcnJvcl9tZXNzYWdlc1ty
dWxlXVsnbWVzc2FnZSddOw0KCQkJIH0NCgkJCSByZXR1cm4gY3VzdG9tX21lc3NhZ2U7DQoJCSB9
LA0KCQkgX3ZhbGlkaXR5UHJvcDogew0KCQkJICJyZXF1aXJlZCI6ICJ2YWx1ZS1taXNzaW5nIiwN
CgkJCSAiY3VzdG9tIjogImN1c3RvbS1lcnJvciIsDQoJCQkgImdyb3VwUmVxdWlyZWQiOiAidmFs
dWUtbWlzc2luZyIsDQoJCQkgImFqYXgiOiAiY3VzdG9tLWVycm9yIiwNCgkJCSAibWluU2l6ZSI6
ICJyYW5nZS11bmRlcmZsb3ciLA0KCQkJICJtYXhTaXplIjogInJhbmdlLW92ZXJmbG93IiwNCgkJ
CSAibWluIjogInJhbmdlLXVuZGVyZmxvdyIsDQoJCQkgIm1heCI6ICJyYW5nZS1vdmVyZmxvdyIs
DQoJCQkgInBhc3QiOiAidHlwZS1taXNtYXRjaCIsDQoJCQkgImZ1dHVyZSI6ICJ0eXBlLW1pc21h
dGNoIiwNCgkJCSAiZGF0ZVJhbmdlIjogInR5cGUtbWlzbWF0Y2giLA0KCQkJICJkYXRlVGltZVJh
bmdlIjogInR5cGUtbWlzbWF0Y2giLA0KCQkJICJtYXhDaGVja2JveCI6ICJyYW5nZS1vdmVyZmxv
dyIsDQoJCQkgIm1pbkNoZWNrYm94IjogInJhbmdlLXVuZGVyZmxvdyIsDQoJCQkgImVxdWFscyI6
ICJwYXR0ZXJuLW1pc21hdGNoIiwNCgkJCSAiZnVuY0NhbGwiOiAiY3VzdG9tLWVycm9yIiwNCgkJ
CSAibmFtZU9uSWQiOiAicGF0dGVybi1taXNtYXRjaCIsDQoJCQkgImNvbmRSZXF1aXJlZCI6ICJ2
YWx1ZS1taXNzaW5nIg0KCQkgfSwNCgkJLyoqDQoJCSogUmVxdWlyZWQgdmFsaWRhdGlvbg0KCQkq
DQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmllbGQNCgkJKiBAcGFyYW0ge0FycmF5W1N0cmluZ119
IHJ1bGVzDQoJCSogQHBhcmFtIHtpbnR9IGkgcnVsZXMgaW5kZXgNCgkJKiBAcGFyYW0ge01hcH0N
CgkJKiAgICAgICAgICAgIHVzZXIgb3B0aW9ucw0KCQkqIEBwYXJhbSB7Ym9vbH0gY29uZFJlcXVp
cmVkIGZsYWcgd2hlbiBtZXRob2QgaXMgdXNlZCBmb3IgaW50ZXJuYWwgcHVycG9zZSBpbiBjb25k
UmVxdWlyZWQgY2hlY2sNCgkJKiBAcmV0dXJuIGFuIGVycm9yIHN0cmluZyBpZiB2YWxpZGF0aW9u
IGZhaWxlZA0KCQkqLw0KCQlfcmVxdWlyZWQ6IGZ1bmN0aW9uKGZpZWxkLCBydWxlcywgaSwgb3B0
aW9ucywgY29uZFJlcXVpcmVkKSB7DQoJCQlzd2l0Y2ggKGZpZWxkLnByb3AoInR5cGUiKSkgew0K
CQkJCWNhc2UgInRleHQiOg0KCQkJCWNhc2UgInBhc3N3b3JkIjoNCgkJCQljYXNlICJ0ZXh0YXJl
YSI6DQoJCQkJY2FzZSAiZmlsZSI6DQoJCQkJY2FzZSAic2VsZWN0LW9uZSI6DQoJCQkJY2FzZSAi
c2VsZWN0LW11bHRpcGxlIjoNCgkJCQlkZWZhdWx0Og0KCQkJCQl2YXIgZmllbGRfdmFsICAgICAg
PSAkLnRyaW0oIGZpZWxkLnZhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoJ
CQkJCXZhciBkdl9wbGFjZWhvbGRlciA9ICQudHJpbSggZmllbGQuYXR0cigiZGF0YS12YWxpZGF0
aW9uLXBsYWNlaG9sZGVyIikgKTsNCgkJCQkJdmFyIHBsYWNlaG9sZGVyICAgID0gJC50cmltKCBm
aWVsZC5hdHRyKCJwbGFjZWhvbGRlciIpICAgICAgICAgICAgICAgICApOw0KCQkJCQlpZiAoDQoJ
CQkJCQkgICAoICFmaWVsZF92YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
DQoJCQkJCQl8fCAoIGR2X3BsYWNlaG9sZGVyICYmIGZpZWxkX3ZhbCA9PSBkdl9wbGFjZWhvbGRl
ciApDQoJCQkJCQl8fCAoIHBsYWNlaG9sZGVyICAgICYmIGZpZWxkX3ZhbCA9PSBwbGFjZWhvbGRl
ciAgICApDQoJCQkJCSkgew0KCQkJCQkJcmV0dXJuIG9wdGlvbnMuYWxscnVsZXNbcnVsZXNbaV1d
LmFsZXJ0VGV4dDsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJyYWRpbyI6DQoJCQkJ
Y2FzZSAiY2hlY2tib3giOg0KCQkJCQkvLyBuZXcgdmFsaWRhdGlvbiBzdHlsZSB0byBvbmx5IGNo
ZWNrIGRlcGVuZGVudCBmaWVsZA0KCQkJCQlpZiAoY29uZFJlcXVpcmVkKSB7DQoJCQkJCQlpZiAo
IWZpZWxkLmF0dHIoJ2NoZWNrZWQnKSkgew0KCQkJCQkJCXJldHVybiBvcHRpb25zLmFsbHJ1bGVz
W3J1bGVzW2ldXS5hbGVydFRleHRDaGVja2JveE11bHRpcGxlOw0KCQkJCQkJfQ0KCQkJCQkJYnJl
YWs7DQoJCQkJCX0NCgkJCQkJLy8gb2xkIHZhbGlkYXRpb24gc3R5bGUNCgkJCQkJdmFyIGZvcm0g
PSBmaWVsZC5jbG9zZXN0KCJmb3JtLCAudmFsaWRhdGlvbkVuZ2luZUNvbnRhaW5lciIpOw0KCQkJ
CQl2YXIgbmFtZSA9IGZpZWxkLmF0dHIoIm5hbWUiKTsNCgkJCQkJaWYgKGZvcm0uZmluZCgiaW5w
dXRbbmFtZT0nIiArIG5hbWUgKyAiJ106Y2hlY2tlZCIpLnNpemUoKSA9PSAwKSB7DQoJCQkJCQlp
ZiAoZm9ybS5maW5kKCJpbnB1dFtuYW1lPSciICsgbmFtZSArICInXTp2aXNpYmxlIikuc2l6ZSgp
ID09IDEpDQoJCQkJCQkJcmV0dXJuIG9wdGlvbnMuYWxscnVsZXNbcnVsZXNbaV1dLmFsZXJ0VGV4
dENoZWNrYm94ZTsNCgkJCQkJCWVsc2UNCgkJCQkJCQlyZXR1cm4gb3B0aW9ucy5hbGxydWxlc1ty
dWxlc1tpXV0uYWxlcnRUZXh0Q2hlY2tib3hNdWx0aXBsZTsNCgkJCQkJfQ0KCQkJCQlicmVhazsN
CgkJCX0NCgkJfSwNCgkJLyoqDQoJCSogVmFsaWRhdGUgdGhhdCAxIGZyb20gdGhlIGdyb3VwIGZp
ZWxkIGlzIHJlcXVpcmVkDQoJCSoNCgkJKiBAcGFyYW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkqIEBw
YXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMNCgkJKiBAcGFyYW0ge2ludH0gaSBydWxlcyBpbmRl
eA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAgICAgICAgICAgdXNlciBvcHRpb25zDQoJCSogQHJl
dHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBmYWlsZWQNCgkJKi8NCgkJX2dyb3Vw
UmVxdWlyZWQ6IGZ1bmN0aW9uKGZpZWxkLCBydWxlcywgaSwgb3B0aW9ucykgew0KCQkJdmFyIGNs
YXNzR3JvdXAgPSAiWyIrb3B0aW9ucy52YWxpZGF0ZUF0dHJpYnV0ZSsiKj0iICtydWxlc1tpICsg
MV0gKyJdIjsNCgkJCXZhciBpc1ZhbGlkID0gZmFsc2U7DQoJCQkvLyBDaGVjayBhbGwgZmllbGRz
IGZyb20gdGhlIGdyb3VwDQoJCQlmaWVsZC5jbG9zZXN0KCJmb3JtLCAudmFsaWRhdGlvbkVuZ2lu
ZUNvbnRhaW5lciIpLmZpbmQoY2xhc3NHcm91cCkuZWFjaChmdW5jdGlvbigpew0KCQkJCWlmKCFt
ZXRob2RzLl9yZXF1aXJlZCgkKHRoaXMpLCBydWxlcywgaSwgb3B0aW9ucykpew0KCQkJCQlpc1Zh
bGlkID0gdHJ1ZTsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCX0pOyANCg0KCQkJaWYo
IWlzVmFsaWQpIHsNCgkJICByZXR1cm4gb3B0aW9ucy5hbGxydWxlc1tydWxlc1tpXV0uYWxlcnRU
ZXh0Ow0KCQl9DQoJCX0sDQoJCS8qKg0KCQkqIFZhbGlkYXRlIHJ1bGVzDQoJCSoNCgkJKiBAcGFy
YW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMNCgkJ
KiBAcGFyYW0ge2ludH0gaSBydWxlcyBpbmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAgICAg
ICAgICAgdXNlciBvcHRpb25zDQoJCSogQHJldHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRh
dGlvbiBmYWlsZWQNCgkJKi8NCgkJX2N1c3RvbTogZnVuY3Rpb24oZmllbGQsIHJ1bGVzLCBpLCBv
cHRpb25zKSB7DQoJCQl2YXIgY3VzdG9tUnVsZSA9IHJ1bGVzW2kgKyAxXTsNCgkJCXZhciBydWxl
ID0gb3B0aW9ucy5hbGxydWxlc1tjdXN0b21SdWxlXTsNCgkJCXZhciBmbjsNCgkJCWlmKCFydWxl
KSB7DQoJCQkJYWxlcnQoImpxdjpjdXN0b20gcnVsZSBub3QgZm91bmQgLSAiK2N1c3RvbVJ1bGUp
Ow0KCQkJCXJldHVybjsNCgkJCX0NCgkJCQ0KCQkJaWYocnVsZVsicmVnZXgiXSkgew0KCQkJCSB2
YXIgZXg9cnVsZS5yZWdleDsNCgkJCQkJaWYoIWV4KSB7DQoJCQkJCQlhbGVydCgianF2OmN1c3Rv
bSByZWdleCBub3QgZm91bmQgLSAiK2N1c3RvbVJ1bGUpOw0KCQkJCQkJcmV0dXJuOw0KCQkJCQl9
DQoJCQkJCXZhciBwYXR0ZXJuID0gbmV3IFJlZ0V4cChleCk7DQoNCgkJCQkJaWYgKCFwYXR0ZXJu
LnRlc3QoZmllbGQudmFsKCkpKSByZXR1cm4gb3B0aW9ucy5hbGxydWxlc1tjdXN0b21SdWxlXS5h
bGVydFRleHQ7DQoJCQkJCQ0KCQkJfSBlbHNlIGlmKHJ1bGVbImZ1bmMiXSkgew0KCQkJCWZuID0g
cnVsZVsiZnVuYyJdOyANCgkJCQkgDQoJCQkJaWYgKHR5cGVvZihmbikgIT09ICJmdW5jdGlvbiIp
IHsNCgkJCQkJYWxlcnQoImpxdjpjdXN0b20gcGFyYW1ldGVyICdmdW5jdGlvbicgaXMgbm8gZnVu
Y3Rpb24gLSAiK2N1c3RvbVJ1bGUpOw0KCQkJCQkJcmV0dXJuOw0KCQkJCX0NCgkJCQkgDQoJCQkJ
aWYgKCFmbihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpKQ0KCQkJCQlyZXR1cm4gb3B0aW9ucy5h
bGxydWxlc1tjdXN0b21SdWxlXS5hbGVydFRleHQ7DQoJCQl9IGVsc2Ugew0KCQkJCWFsZXJ0KCJq
cXY6Y3VzdG9tIHR5cGUgbm90IGFsbG93ZWQgIitjdXN0b21SdWxlKTsNCgkJCQkJcmV0dXJuOw0K
CQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBWYWxpZGF0ZSBjdXN0b20gZnVuY3Rpb24gb3V0c2lkZSBv
ZiB0aGUgZW5naW5lIHNjb3BlDQoJCSoNCgkJKiBAcGFyYW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkq
IEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMNCgkJKiBAcGFyYW0ge2ludH0gaSBydWxlcyBp
bmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAgICAgICAgICAgdXNlciBvcHRpb25zDQoJCSog
QHJldHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBmYWlsZWQNCgkJKi8NCgkJX2Z1
bmNDYWxsOiBmdW5jdGlvbihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCgkJCXZhciBmdW5j
dGlvbk5hbWUgPSBydWxlc1tpICsgMV07DQoJCQl2YXIgZm47DQoJCQlpZihmdW5jdGlvbk5hbWUu
aW5kZXhPZignLicpID4tMSkNCgkJCXsNCgkJCQl2YXIgbmFtZXNwYWNlcyA9IGZ1bmN0aW9uTmFt
ZS5zcGxpdCgnLicpOw0KCQkJCXZhciBzY29wZSA9IHdpbmRvdzsNCgkJCQl3aGlsZShuYW1lc3Bh
Y2VzLmxlbmd0aCkNCgkJCQl7DQoJCQkJCXNjb3BlID0gc2NvcGVbbmFtZXNwYWNlcy5zaGlmdCgp
XTsNCgkJCQl9DQoJCQkJZm4gPSBzY29wZTsNCgkJCX0NCgkJCWVsc2UNCgkJCQlmbiA9IHdpbmRv
d1tmdW5jdGlvbk5hbWVdIHx8IG9wdGlvbnMuY3VzdG9tRnVuY3Rpb25zW2Z1bmN0aW9uTmFtZV07
DQoJCQlpZiAodHlwZW9mKGZuKSA9PSAnZnVuY3Rpb24nKQ0KCQkJCXJldHVybiBmbihmaWVsZCwg
cnVsZXMsIGksIG9wdGlvbnMpOw0KDQoJCX0sDQoJCS8qKg0KCQkqIEZpZWxkIG1hdGNoDQoJCSoN
CgkJKiBAcGFyYW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0g
cnVsZXMNCgkJKiBAcGFyYW0ge2ludH0gaSBydWxlcyBpbmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0K
CQkqICAgICAgICAgICAgdXNlciBvcHRpb25zDQoJCSogQHJldHVybiBhbiBlcnJvciBzdHJpbmcg
aWYgdmFsaWRhdGlvbiBmYWlsZWQNCgkJKi8NCgkJX2VxdWFsczogZnVuY3Rpb24oZmllbGQsIHJ1
bGVzLCBpLCBvcHRpb25zKSB7DQoJCQl2YXIgZXF1YWxzRmllbGQgPSBydWxlc1tpICsgMV07DQoN
CgkJCWlmIChmaWVsZC52YWwoKSAhPSAkKCIjIiArIGVxdWFsc0ZpZWxkKS52YWwoKSkNCgkJCQly
ZXR1cm4gb3B0aW9ucy5hbGxydWxlcy5lcXVhbHMuYWxlcnRUZXh0Ow0KCQl9LA0KCQkvKioNCgkJ
KiBDaGVjayB0aGUgbWF4aW11bSBzaXplIChpbiBjaGFyYWN0ZXJzKQ0KCQkqDQoJCSogQHBhcmFt
IHtqcU9iamVjdH0gZmllbGQNCgkJKiBAcGFyYW0ge0FycmF5W1N0cmluZ119IHJ1bGVzDQoJCSog
QHBhcmFtIHtpbnR9IGkgcnVsZXMgaW5kZXgNCgkJKiBAcGFyYW0ge01hcH0NCgkJKiAgICAgICAg
ICAgIHVzZXIgb3B0aW9ucw0KCQkqIEByZXR1cm4gYW4gZXJyb3Igc3RyaW5nIGlmIHZhbGlkYXRp
b24gZmFpbGVkDQoJCSovDQoJCV9tYXhTaXplOiBmdW5jdGlvbihmaWVsZCwgcnVsZXMsIGksIG9w
dGlvbnMpIHsNCgkJCXZhciBtYXggPSBydWxlc1tpICsgMV07DQoJCQl2YXIgbGVuID0gZmllbGQu
dmFsKCkubGVuZ3RoOw0KDQoJCQlpZiAobGVuID4gbWF4KSB7DQoJCQkJdmFyIHJ1bGUgPSBvcHRp
b25zLmFsbHJ1bGVzLm1heFNpemU7DQoJCQkJcmV0dXJuIHJ1bGUuYWxlcnRUZXh0ICsgbWF4ICsg
cnVsZS5hbGVydFRleHQyOw0KCQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBDaGVjayB0aGUgbWluaW11
bSBzaXplIChpbiBjaGFyYWN0ZXJzKQ0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmllbGQN
CgkJKiBAcGFyYW0ge0FycmF5W1N0cmluZ119IHJ1bGVzDQoJCSogQHBhcmFtIHtpbnR9IGkgcnVs
ZXMgaW5kZXgNCgkJKiBAcGFyYW0ge01hcH0NCgkJKiAgICAgICAgICAgIHVzZXIgb3B0aW9ucw0K
CQkqIEByZXR1cm4gYW4gZXJyb3Igc3RyaW5nIGlmIHZhbGlkYXRpb24gZmFpbGVkDQoJCSovDQoJ
CV9taW5TaXplOiBmdW5jdGlvbihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCgkJCXZhciBt
aW4gPSBydWxlc1tpICsgMV07DQoJCQl2YXIgbGVuID0gZmllbGQudmFsKCkubGVuZ3RoOw0KDQoJ
CQlpZiAobGVuIDwgbWluKSB7DQoJCQkJdmFyIHJ1bGUgPSBvcHRpb25zLmFsbHJ1bGVzLm1pblNp
emU7DQoJCQkJcmV0dXJuIHJ1bGUuYWxlcnRUZXh0ICsgbWluICsgcnVsZS5hbGVydFRleHQyOw0K
CQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBDaGVjayBudW1iZXIgbWluaW11bSB2YWx1ZQ0KCQkqDQoJ
CSogQHBhcmFtIHtqcU9iamVjdH0gZmllbGQNCgkJKiBAcGFyYW0ge0FycmF5W1N0cmluZ119IHJ1
bGVzDQoJCSogQHBhcmFtIHtpbnR9IGkgcnVsZXMgaW5kZXgNCgkJKiBAcGFyYW0ge01hcH0NCgkJ
KiAgICAgICAgICAgIHVzZXIgb3B0aW9ucw0KCQkqIEByZXR1cm4gYW4gZXJyb3Igc3RyaW5nIGlm
IHZhbGlkYXRpb24gZmFpbGVkDQoJCSovDQoJCV9taW46IGZ1bmN0aW9uKGZpZWxkLCBydWxlcywg
aSwgb3B0aW9ucykgew0KCQkJdmFyIG1pbiA9IHBhcnNlRmxvYXQocnVsZXNbaSArIDFdKTsNCgkJ
CXZhciBsZW4gPSBwYXJzZUZsb2F0KGZpZWxkLnZhbCgpKTsNCg0KCQkJaWYgKGxlbiA8IG1pbikg
ew0KCQkJCXZhciBydWxlID0gb3B0aW9ucy5hbGxydWxlcy5taW47DQoJCQkJaWYgKHJ1bGUuYWxl
cnRUZXh0MikgcmV0dXJuIHJ1bGUuYWxlcnRUZXh0ICsgbWluICsgcnVsZS5hbGVydFRleHQyOw0K
CQkJCXJldHVybiBydWxlLmFsZXJ0VGV4dCArIG1pbjsNCgkJCX0NCgkJfSwNCgkJLyoqDQoJCSog
Q2hlY2sgbnVtYmVyIG1heGltdW0gdmFsdWUNCgkJKg0KCQkqIEBwYXJhbSB7anFPYmplY3R9IGZp
ZWxkDQoJCSogQHBhcmFtIHtBcnJheVtTdHJpbmddfSBydWxlcw0KCQkqIEBwYXJhbSB7aW50fSBp
IHJ1bGVzIGluZGV4DQoJCSogQHBhcmFtIHtNYXB9DQoJCSogICAgICAgICAgICB1c2VyIG9wdGlv
bnMNCgkJKiBAcmV0dXJuIGFuIGVycm9yIHN0cmluZyBpZiB2YWxpZGF0aW9uIGZhaWxlZA0KCQkq
Lw0KCQlfbWF4OiBmdW5jdGlvbihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCgkJCXZhciBt
YXggPSBwYXJzZUZsb2F0KHJ1bGVzW2kgKyAxXSk7DQoJCQl2YXIgbGVuID0gcGFyc2VGbG9hdChm
aWVsZC52YWwoKSk7DQoNCgkJCWlmIChsZW4gPm1heCApIHsNCgkJCQl2YXIgcnVsZSA9IG9wdGlv
bnMuYWxscnVsZXMubWF4Ow0KCQkJCWlmIChydWxlLmFsZXJ0VGV4dDIpIHJldHVybiBydWxlLmFs
ZXJ0VGV4dCArIG1heCArIHJ1bGUuYWxlcnRUZXh0MjsNCgkJCQkvL29yZWZhbG86IHRvIHJldmll
dywgYWxzbyBkbyB0aGUgdHJhbnNsYXRpb25zDQoJCQkJcmV0dXJuIHJ1bGUuYWxlcnRUZXh0ICsg
bWF4Ow0KCQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBDaGVja3MgZGF0ZSBpcyBpbiB0aGUgcGFzdA0K
CQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmllbGQNCgkJKiBAcGFyYW0ge0FycmF5W1N0cmlu
Z119IHJ1bGVzDQoJCSogQHBhcmFtIHtpbnR9IGkgcnVsZXMgaW5kZXgNCgkJKiBAcGFyYW0ge01h
cH0NCgkJKiAgICAgICAgICAgIHVzZXIgb3B0aW9ucw0KCQkqIEByZXR1cm4gYW4gZXJyb3Igc3Ry
aW5nIGlmIHZhbGlkYXRpb24gZmFpbGVkDQoJCSovDQoJCV9wYXN0OiBmdW5jdGlvbihmb3JtLCBm
aWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCg0KCQkJdmFyIHA9cnVsZXNbaSArIDFdOw0KCQkJ
dmFyIGZpZWxkQWx0ID0gJChmb3JtLmZpbmQoImlucHV0W25hbWU9JyIgKyBwLnJlcGxhY2UoL14j
Ky8sICcnKSArICInXSIpKTsNCgkJCXZhciBwZGF0ZTsNCg0KCQkJaWYgKHAudG9Mb3dlckNhc2Uo
KSA9PSAibm93Iikgew0KCQkJCXBkYXRlID0gbmV3IERhdGUoKTsNCgkJCX0gZWxzZSBpZiAodW5k
ZWZpbmVkICE9IGZpZWxkQWx0LnZhbCgpKSB7DQoJCQkJaWYgKGZpZWxkQWx0LmlzKCI6ZGlzYWJs
ZWQiKSkNCgkJCQkJcmV0dXJuOw0KCQkJCXBkYXRlID0gbWV0aG9kcy5fcGFyc2VEYXRlKGZpZWxk
QWx0LnZhbCgpKTsNCgkJCX0gZWxzZSB7DQoJCQkJcGRhdGUgPSBtZXRob2RzLl9wYXJzZURhdGUo
cCk7DQoJCQl9DQoJCQl2YXIgdmRhdGUgPSBtZXRob2RzLl9wYXJzZURhdGUoZmllbGQudmFsKCkp
Ow0KDQoJCQlpZiAodmRhdGUgPiBwZGF0ZSApIHsNCgkJCQl2YXIgcnVsZSA9IG9wdGlvbnMuYWxs
cnVsZXMucGFzdDsNCgkJCQlpZiAocnVsZS5hbGVydFRleHQyKSByZXR1cm4gcnVsZS5hbGVydFRl
eHQgKyBtZXRob2RzLl9kYXRlVG9TdHJpbmcocGRhdGUpICsgcnVsZS5hbGVydFRleHQyOw0KCQkJ
CXJldHVybiBydWxlLmFsZXJ0VGV4dCArIG1ldGhvZHMuX2RhdGVUb1N0cmluZyhwZGF0ZSk7DQoJ
CQl9DQoJCX0sDQoJCS8qKg0KCQkqIENoZWNrcyBkYXRlIGlzIGluIHRoZSBmdXR1cmUNCgkJKg0K
CQkqIEBwYXJhbSB7anFPYmplY3R9IGZpZWxkDQoJCSogQHBhcmFtIHtBcnJheVtTdHJpbmddfSBy
dWxlcw0KCQkqIEBwYXJhbSB7aW50fSBpIHJ1bGVzIGluZGV4DQoJCSogQHBhcmFtIHtNYXB9DQoJ
CSogICAgICAgICAgICB1c2VyIG9wdGlvbnMNCgkJKiBAcmV0dXJuIGFuIGVycm9yIHN0cmluZyBp
ZiB2YWxpZGF0aW9uIGZhaWxlZA0KCQkqLw0KCQlfZnV0dXJlOiBmdW5jdGlvbihmb3JtLCBmaWVs
ZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCg0KCQkJdmFyIHA9cnVsZXNbaSArIDFdOw0KCQkJdmFy
IGZpZWxkQWx0ID0gJChmb3JtLmZpbmQoImlucHV0W25hbWU9JyIgKyBwLnJlcGxhY2UoL14jKy8s
ICcnKSArICInXSIpKTsNCgkJCXZhciBwZGF0ZTsNCg0KCQkJaWYgKHAudG9Mb3dlckNhc2UoKSA9
PSAibm93Iikgew0KCQkJCXBkYXRlID0gbmV3IERhdGUoKTsNCgkJCX0gZWxzZSBpZiAodW5kZWZp
bmVkICE9IGZpZWxkQWx0LnZhbCgpKSB7DQoJCQkJaWYgKGZpZWxkQWx0LmlzKCI6ZGlzYWJsZWQi
KSkNCgkJCQkJcmV0dXJuOw0KCQkJCXBkYXRlID0gbWV0aG9kcy5fcGFyc2VEYXRlKGZpZWxkQWx0
LnZhbCgpKTsNCgkJCX0gZWxzZSB7DQoJCQkJcGRhdGUgPSBtZXRob2RzLl9wYXJzZURhdGUocCk7
DQoJCQl9DQoJCQl2YXIgdmRhdGUgPSBtZXRob2RzLl9wYXJzZURhdGUoZmllbGQudmFsKCkpOw0K
DQoJCQlpZiAodmRhdGUgPCBwZGF0ZSApIHsNCgkJCQl2YXIgcnVsZSA9IG9wdGlvbnMuYWxscnVs
ZXMuZnV0dXJlOw0KCQkJCWlmIChydWxlLmFsZXJ0VGV4dDIpDQoJCQkJCXJldHVybiBydWxlLmFs
ZXJ0VGV4dCArIG1ldGhvZHMuX2RhdGVUb1N0cmluZyhwZGF0ZSkgKyBydWxlLmFsZXJ0VGV4dDI7
DQoJCQkJcmV0dXJuIHJ1bGUuYWxlcnRUZXh0ICsgbWV0aG9kcy5fZGF0ZVRvU3RyaW5nKHBkYXRl
KTsNCgkJCX0NCgkJfSwNCgkJLyoqDQoJCSogQ2hlY2tzIGlmIHZhbGlkIGRhdGUNCgkJKg0KCQkq
IEBwYXJhbSB7c3RyaW5nfSBkYXRlIHN0cmluZw0KCQkqIEByZXR1cm4gYSBib29sIGJhc2VkIG9u
IGRldGVybWluYXRpb24gb2YgdmFsaWQgZGF0ZQ0KCQkqLw0KCQlfaXNEYXRlOiBmdW5jdGlvbiAo
dmFsdWUpIHsNCgkJCXZhciBkYXRlUmVnRXggPSBuZXcgUmVnRXhwKC9eXGR7NH1bXC9cLV0oMD9b
MS05XXwxWzAxMl0pW1wvXC1dKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKSR8Xig/Oig/Oig/OjA/
WzEzNTc4XXwxWzAyXSkoXC98LSkzMSl8KD86KD86MD9bMSwzLTldfDFbMC0yXSkoXC98LSkoPzoy
OXwzMCkpKShcL3wtKSg/OlsxLTldXGRcZFxkfFxkWzEtOV1cZFxkfFxkXGRbMS05XVxkfFxkXGRc
ZFsxLTldKSR8Xig/Oig/OjA/WzEtOV18MVswLTJdKShcL3wtKSg/OjA/WzEtOV18MVxkfDJbMC04
XSkpKFwvfC0pKD86WzEtOV1cZFxkXGR8XGRbMS05XVxkXGR8XGRcZFsxLTldXGR8XGRcZFxkWzEt
OV0pJHxeKDA/MihcL3wtKTI5KShcL3wtKSg/Oig/OjBbNDhdMDB8WzEzNTc5XVsyNl0wMHxbMjQ2
OF1bMDQ4XTAwKXwoPzpcZFxkKT8oPzowWzQ4XXxbMjQ2OF1bMDQ4XXxbMTM1NzldWzI2XSkpJC8p
Ow0KCQkJcmV0dXJuIGRhdGVSZWdFeC50ZXN0KHZhbHVlKTsNCgkJfSwNCgkJLyoqDQoJCSogQ2hl
Y2tzIGlmIHZhbGlkIGRhdGUgdGltZQ0KCQkqDQoJCSogQHBhcmFtIHtzdHJpbmd9IGRhdGUgc3Ry
aW5nDQoJCSogQHJldHVybiBhIGJvb2wgYmFzZWQgb24gZGV0ZXJtaW5hdGlvbiBvZiB2YWxpZCBk
YXRlIHRpbWUNCgkJKi8NCgkJX2lzRGF0ZVRpbWU6IGZ1bmN0aW9uICh2YWx1ZSl7DQoJCQl2YXIg
ZGF0ZVRpbWVSZWdFeCA9IG5ldyBSZWdFeHAoL15cZHs0fVtcL1wtXSgwP1sxLTldfDFbMDEyXSlb
XC9cLV0oMD9bMS05XXxbMTJdWzAtOV18M1swMV0pXHMrKDFbMDEyXXwwP1sxLTldKXsxfTooMD9b
MS01XXxbMC02XVswLTldKXsxfTooMD9bMC02XXxbMC02XVswLTldKXsxfVxzKyhhbXxwbXxBTXxQ
TSl7MX0kfF4oPzooPzooPzowP1sxMzU3OF18MVswMl0pKFwvfC0pMzEpfCg/Oig/OjA/WzEsMy05
XXwxWzAtMl0pKFwvfC0pKD86Mjl8MzApKSkoXC98LSkoPzpbMS05XVxkXGRcZHxcZFsxLTldXGRc
ZHxcZFxkWzEtOV1cZHxcZFxkXGRbMS05XSkkfF4oKDFbMDEyXXwwP1sxLTldKXsxfVwvKDA/WzEt
OV18WzEyXVswLTldfDNbMDFdKXsxfVwvXGR7Miw0fVxzKygxWzAxMl18MD9bMS05XSl7MX06KDA/
WzEtNV18WzAtNl1bMC05XSl7MX06KDA/WzAtNl18WzAtNl1bMC05XSl7MX1ccysoYW18cG18QU18
UE0pezF9KSQvKTsNCgkJCXJldHVybiBkYXRlVGltZVJlZ0V4LnRlc3QodmFsdWUpOw0KCQl9LA0K
CQkvL0NoZWNrcyBpZiB0aGUgc3RhcnQgZGF0ZSBpcyBiZWZvcmUgdGhlIGVuZCBkYXRlDQoJCS8v
cmV0dXJucyB0cnVlIGlmIGVuZCBpcyBsYXRlciB0aGFuIHN0YXJ0DQoJCV9kYXRlQ29tcGFyZTog
ZnVuY3Rpb24gKHN0YXJ0LCBlbmQpIHsNCgkJCXJldHVybiAobmV3IERhdGUoc3RhcnQudG9TdHJp
bmcoKSkgPCBuZXcgRGF0ZShlbmQudG9TdHJpbmcoKSkpOw0KCQl9LA0KCQkvKioNCgkJKiBDaGVj
a3MgZGF0ZSByYW5nZQ0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmlyc3QgZmllbGQgbmFt
ZQ0KCQkqIEBwYXJhbSB7anFPYmplY3R9IHNlY29uZCBmaWVsZCBuYW1lDQoJCSogQHJldHVybiBh
biBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBmYWlsZWQNCgkJKi8NCgkJX2RhdGVSYW5nZTog
ZnVuY3Rpb24gKGZpZWxkLCBydWxlcywgaSwgb3B0aW9ucykgew0KCQkJLy9hcmUgbm90IGJvdGgg
cG9wdWxhdGVkDQoJCQlpZiAoKCFvcHRpb25zLmZpcnN0T2ZHcm91cFswXS52YWx1ZSAmJiBvcHRp
b25zLnNlY29uZE9mR3JvdXBbMF0udmFsdWUpIHx8IChvcHRpb25zLmZpcnN0T2ZHcm91cFswXS52
YWx1ZSAmJiAhb3B0aW9ucy5zZWNvbmRPZkdyb3VwWzBdLnZhbHVlKSkgew0KCQkJCXJldHVybiBv
cHRpb25zLmFsbHJ1bGVzW3J1bGVzW2ldXS5hbGVydFRleHQgKyBvcHRpb25zLmFsbHJ1bGVzW3J1
bGVzW2ldXS5hbGVydFRleHQyOw0KCQkJfQ0KDQoJCQkvL2FyZSBub3QgYm90aCBkYXRlcw0KCQkJ
aWYgKCFtZXRob2RzLl9pc0RhdGUob3B0aW9ucy5maXJzdE9mR3JvdXBbMF0udmFsdWUpIHx8ICFt
ZXRob2RzLl9pc0RhdGUob3B0aW9ucy5zZWNvbmRPZkdyb3VwWzBdLnZhbHVlKSkgew0KCQkJCXJl
dHVybiBvcHRpb25zLmFsbHJ1bGVzW3J1bGVzW2ldXS5hbGVydFRleHQgKyBvcHRpb25zLmFsbHJ1
bGVzW3J1bGVzW2ldXS5hbGVydFRleHQyOw0KCQkJfQ0KDQoJCQkvL2FyZSBib3RoIGRhdGVzIGJ1
dCByYW5nZSBpcyBvZmYNCgkJCWlmICghbWV0aG9kcy5fZGF0ZUNvbXBhcmUob3B0aW9ucy5maXJz
dE9mR3JvdXBbMF0udmFsdWUsIG9wdGlvbnMuc2Vjb25kT2ZHcm91cFswXS52YWx1ZSkpIHsNCgkJ
CQlyZXR1cm4gb3B0aW9ucy5hbGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0ICsgb3B0aW9ucy5h
bGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0MjsNCgkJCX0NCgkJfSwNCgkJLyoqDQoJCSogQ2hl
Y2tzIGRhdGUgdGltZSByYW5nZQ0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmlyc3QgZmll
bGQgbmFtZQ0KCQkqIEBwYXJhbSB7anFPYmplY3R9IHNlY29uZCBmaWVsZCBuYW1lDQoJCSogQHJl
dHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBmYWlsZWQNCgkJKi8NCgkJX2RhdGVU
aW1lUmFuZ2U6IGZ1bmN0aW9uIChmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCgkJCS8vYXJl
IG5vdCBib3RoIHBvcHVsYXRlZA0KCQkJaWYgKCghb3B0aW9ucy5maXJzdE9mR3JvdXBbMF0udmFs
dWUgJiYgb3B0aW9ucy5zZWNvbmRPZkdyb3VwWzBdLnZhbHVlKSB8fCAob3B0aW9ucy5maXJzdE9m
R3JvdXBbMF0udmFsdWUgJiYgIW9wdGlvbnMuc2Vjb25kT2ZHcm91cFswXS52YWx1ZSkpIHsNCgkJ
CQlyZXR1cm4gb3B0aW9ucy5hbGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0ICsgb3B0aW9ucy5h
bGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0MjsNCgkJCX0NCgkJCS8vYXJlIG5vdCBib3RoIGRh
dGVzDQoJCQlpZiAoIW1ldGhvZHMuX2lzRGF0ZVRpbWUob3B0aW9ucy5maXJzdE9mR3JvdXBbMF0u
dmFsdWUpIHx8ICFtZXRob2RzLl9pc0RhdGVUaW1lKG9wdGlvbnMuc2Vjb25kT2ZHcm91cFswXS52
YWx1ZSkpIHsNCgkJCQlyZXR1cm4gb3B0aW9ucy5hbGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0
ICsgb3B0aW9ucy5hbGxydWxlc1tydWxlc1tpXV0uYWxlcnRUZXh0MjsNCgkJCX0NCgkJCS8vYXJl
IGJvdGggZGF0ZXMgYnV0IHJhbmdlIGlzIG9mZg0KCQkJaWYgKCFtZXRob2RzLl9kYXRlQ29tcGFy
ZShvcHRpb25zLmZpcnN0T2ZHcm91cFswXS52YWx1ZSwgb3B0aW9ucy5zZWNvbmRPZkdyb3VwWzBd
LnZhbHVlKSkgew0KCQkJCXJldHVybiBvcHRpb25zLmFsbHJ1bGVzW3J1bGVzW2ldXS5hbGVydFRl
eHQgKyBvcHRpb25zLmFsbHJ1bGVzW3J1bGVzW2ldXS5hbGVydFRleHQyOw0KCQkJfQ0KCQl9LA0K
CQkvKioNCgkJKiBNYXggbnVtYmVyIG9mIGNoZWNrYm94IHNlbGVjdGVkDQoJCSoNCgkJKiBAcGFy
YW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMNCgkJ
KiBAcGFyYW0ge2ludH0gaSBydWxlcyBpbmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAgICAg
ICAgICAgdXNlciBvcHRpb25zDQoJCSogQHJldHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRh
dGlvbiBmYWlsZWQNCgkJKi8NCgkJX21heENoZWNrYm94OiBmdW5jdGlvbihmb3JtLCBmaWVsZCwg
cnVsZXMsIGksIG9wdGlvbnMpIHsNCg0KCQkJdmFyIG5iQ2hlY2sgPSBydWxlc1tpICsgMV07DQoJ
CQl2YXIgZ3JvdXBuYW1lID0gZmllbGQuYXR0cigibmFtZSIpOw0KCQkJdmFyIGdyb3VwU2l6ZSA9
IGZvcm0uZmluZCgiaW5wdXRbbmFtZT0nIiArIGdyb3VwbmFtZSArICInXTpjaGVja2VkIikuc2l6
ZSgpOw0KCQkJaWYgKGdyb3VwU2l6ZSA+IG5iQ2hlY2spIHsNCgkJCQlvcHRpb25zLnNob3dBcnJv
dyA9IGZhbHNlOw0KCQkJCWlmIChvcHRpb25zLmFsbHJ1bGVzLm1heENoZWNrYm94LmFsZXJ0VGV4
dDIpDQoJCQkJCSByZXR1cm4gb3B0aW9ucy5hbGxydWxlcy5tYXhDaGVja2JveC5hbGVydFRleHQg
KyAiICIgKyBuYkNoZWNrICsgIiAiICsgb3B0aW9ucy5hbGxydWxlcy5tYXhDaGVja2JveC5hbGVy
dFRleHQyOw0KCQkJCXJldHVybiBvcHRpb25zLmFsbHJ1bGVzLm1heENoZWNrYm94LmFsZXJ0VGV4
dDsNCgkJCX0NCgkJfSwNCgkJLyoqDQoJCSogTWluIG51bWJlciBvZiBjaGVja2JveCBzZWxlY3Rl
ZA0KCQkqDQoJCSogQHBhcmFtIHtqcU9iamVjdH0gZmllbGQNCgkJKiBAcGFyYW0ge0FycmF5W1N0
cmluZ119IHJ1bGVzDQoJCSogQHBhcmFtIHtpbnR9IGkgcnVsZXMgaW5kZXgNCgkJKiBAcGFyYW0g
e01hcH0NCgkJKiAgICAgICAgICAgIHVzZXIgb3B0aW9ucw0KCQkqIEByZXR1cm4gYW4gZXJyb3Ig
c3RyaW5nIGlmIHZhbGlkYXRpb24gZmFpbGVkDQoJCSovDQoJCV9taW5DaGVja2JveDogZnVuY3Rp
b24oZm9ybSwgZmllbGQsIHJ1bGVzLCBpLCBvcHRpb25zKSB7DQoNCgkJCXZhciBuYkNoZWNrID0g
cnVsZXNbaSArIDFdOw0KCQkJdmFyIGdyb3VwbmFtZSA9IGZpZWxkLmF0dHIoIm5hbWUiKTsNCgkJ
CXZhciBncm91cFNpemUgPSBmb3JtLmZpbmQoImlucHV0W25hbWU9JyIgKyBncm91cG5hbWUgKyAi
J106Y2hlY2tlZCIpLnNpemUoKTsNCgkJCWlmIChncm91cFNpemUgPCBuYkNoZWNrKSB7DQoJCQkJ
b3B0aW9ucy5zaG93QXJyb3cgPSBmYWxzZTsNCgkJCQlyZXR1cm4gb3B0aW9ucy5hbGxydWxlcy5t
aW5DaGVja2JveC5hbGVydFRleHQgKyAiICIgKyBuYkNoZWNrICsgIiAiICsgb3B0aW9ucy5hbGxy
dWxlcy5taW5DaGVja2JveC5hbGVydFRleHQyOw0KCQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBDaGVj
a3MgdGhhdCBpdCBpcyBhIHZhbGlkIGNyZWRpdCBjYXJkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhl
DQoJCSogTHVobiBjaGVja3N1bSBhbGdvcml0aG0uDQoJCSoNCgkJKiBAcGFyYW0ge2pxT2JqZWN0
fSBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMNCgkJKiBAcGFyYW0ge2lu
dH0gaSBydWxlcyBpbmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAgICAgICAgICAgdXNlciBv
cHRpb25zDQoJCSogQHJldHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBmYWlsZWQN
CgkJKi8NCgkJX25hbWVPbklkOiBmdW5jdGlvbihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsN
CgkJCS8vc3BhY2VzIGFuZCBkYXNoZXMgbWF5IGJlIHZhbGlkIGNoYXJhY3RlcnMsIGJ1dCBtdXN0
IGJlIHN0cmlwcGVkIHRvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0uDQoJCQl2YXIgdmFsaWQgPSBm
YWxzZSwgY2FyZE51bWJlciA9IGZpZWxkLnZhbCgpLnJlcGxhY2UoLyArL2csICcnKS5yZXBsYWNl
KC8tKy9nLCAnJyk7DQoNCgkJCXZhciBudW1EaWdpdHMgPSBjYXJkTnVtYmVyLmxlbmd0aDsNCgkJ
CWlmIChudW1EaWdpdHMgPj0gMTQgJiYgbnVtRGlnaXRzIDw9IDE2ICYmIHBhcnNlSW50KGNhcmRO
dW1iZXIpID4gMCkgew0KDQoJCQkJdmFyIHN1bSA9IDAsIGkgPSBudW1EaWdpdHMgLSAxLCBwb3Mg
PSAxLCBkaWdpdCwgbHVobiA9IG5ldyBTdHJpbmcoKTsNCgkJCQlkbyB7DQoJCQkJCWRpZ2l0ID0g
cGFyc2VJbnQoY2FyZE51bWJlci5jaGFyQXQoaSkpOw0KCQkJCQlsdWhuICs9IChwb3MrKyAlIDIg
PT0gMCkgPyBkaWdpdCAqIDIgOiBkaWdpdDsNCgkJCQl9IHdoaWxlICgtLWkgPj0gMCkNCg0KCQkJ
CWZvciAoaSA9IDA7IGkgPCBsdWhuLmxlbmd0aDsgaSsrKSB7DQoJCQkJCXN1bSArPSBwYXJzZUlu
dChsdWhuLmNoYXJBdChpKSk7DQoJCQkJfQ0KCQkJCXZhbGlkID0gc3VtICUgMTAgPT0gMDsNCgkJ
CX0NCgkJCWlmICghdmFsaWQpIHJldHVybiBvcHRpb25zLmFsbHJ1bGVzLm5hbWVPbklkLmFsZXJ0
VGV4dDsNCgkJfSwNCgkJLyoqDQoJCSogQWpheCBmaWVsZCB2YWxpZGF0aW9uDQoJCSoNCgkJKiBA
cGFyYW0ge2pxT2JqZWN0fSBmaWVsZA0KCQkqIEBwYXJhbSB7QXJyYXlbU3RyaW5nXX0gcnVsZXMN
CgkJKiBAcGFyYW0ge2ludH0gaSBydWxlcyBpbmRleA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkqICAg
ICAgICAgICAgdXNlciBvcHRpb25zDQoJCSogQHJldHVybiBub3RoaW5nISB0aGUgYWpheCB2YWxp
ZGF0b3IgaGFuZGxlcyB0aGUgcHJvbXB0cyBpdHNlbGYNCgkJKi8NCgkJIF9hamF4OiBmdW5jdGlv
bihmaWVsZCwgcnVsZXMsIGksIG9wdGlvbnMpIHsNCg0KCQkJIHZhciBlcnJvclNlbGVjdG9yID0g
cnVsZXNbaSArIDFdOw0KCQkJIHZhciBydWxlID0gb3B0aW9ucy5hbGxydWxlc1tlcnJvclNlbGVj
dG9yXTsNCgkJCSB2YXIgZXh0cmFEYXRhID0gcnVsZS5leHRyYURhdGE7DQoJCQkgdmFyIGV4dHJh
RGF0YUR5bmFtaWMgPSBydWxlLmV4dHJhRGF0YUR5bmFtaWM7DQoJCQkgdmFyIGRhdGEgPSB7DQoJ
CQkJImZpZWxkSWQiIDogZmllbGQuYXR0cigiaWQiKSwNCgkJCQkiZmllbGRWYWx1ZSIgOiBmaWVs
ZC52YWwoKQ0KCQkJIH07DQoNCgkJCSBpZiAodHlwZW9mIGV4dHJhRGF0YSA9PT0gIm9iamVjdCIp
IHsNCgkJCQkkLmV4dGVuZChkYXRhLCBleHRyYURhdGEpOw0KCQkJIH0gZWxzZSBpZiAodHlwZW9m
IGV4dHJhRGF0YSA9PT0gInN0cmluZyIpIHsNCgkJCQl2YXIgdGVtcERhdGEgPSBleHRyYURhdGEu
c3BsaXQoIiYiKTsNCgkJCQlmb3IodmFyIGkgPSAwOyBpIDwgdGVtcERhdGEubGVuZ3RoOyBpKysp
IHsNCgkJCQkJdmFyIHZhbHVlcyA9IHRlbXBEYXRhW2ldLnNwbGl0KCI9Iik7DQoJCQkJCWlmICh2
YWx1ZXNbMF0gJiYgdmFsdWVzWzBdKSB7DQoJCQkJCQlkYXRhW3ZhbHVlc1swXV0gPSB2YWx1ZXNb
MV07DQoJCQkJCX0NCgkJCQl9DQoJCQkgfQ0KDQoJCQkgaWYgKGV4dHJhRGF0YUR5bmFtaWMpIHsN
CgkJCQkgdmFyIHRtcERhdGEgPSBbXTsNCgkJCQkgdmFyIGRvbUlkcyA9IFN0cmluZyhleHRyYURh
dGFEeW5hbWljKS5zcGxpdCgiLCIpOw0KCQkJCSBmb3IgKHZhciBpID0gMDsgaSA8IGRvbUlkcy5s
ZW5ndGg7IGkrKykgew0KCQkJCQkgdmFyIGlkID0gZG9tSWRzW2ldOw0KCQkJCQkgaWYgKCQoaWQp
Lmxlbmd0aCkgew0KCQkJCQkJIHZhciBpbnB1dFZhbHVlID0gZmllbGQuY2xvc2VzdCgiZm9ybSwg
LnZhbGlkYXRpb25FbmdpbmVDb250YWluZXIiKS5maW5kKGlkKS52YWwoKTsNCgkJCQkJCSB2YXIg
a2V5VmFsdWUgPSBpZC5yZXBsYWNlKCcjJywgJycpICsgJz0nICsgZXNjYXBlKGlucHV0VmFsdWUp
Ow0KCQkJCQkJIGRhdGFbaWQucmVwbGFjZSgnIycsICcnKV0gPSBpbnB1dFZhbHVlOw0KCQkJCQkg
fQ0KCQkJCSB9DQoJCQkgfQ0KCQkJIA0KCQkJIC8vIElmIGEgZmllbGQgY2hhbmdlIGV2ZW50IHRy
aWdnZXJlZCB0aGlzIHdlIHdhbnQgdG8gY2xlYXIgdGhlIGNhY2hlIGZvciB0aGlzIElEDQoJCQkg
aWYgKG9wdGlvbnMuZXZlbnRUcmlnZ2VyID09ICJmaWVsZCIpIHsNCgkJCQlkZWxldGUob3B0aW9u
cy5hamF4VmFsaWRDYWNoZVtmaWVsZC5hdHRyKCJpZCIpXSk7DQoJCQkgfQ0KDQoJCQkgLy8gSWYg
dGhlcmUgaXMgYW4gZXJyb3Igb3IgaWYgdGhlIHRoZSBmaWVsZCBpcyBhbHJlYWR5IHZhbGlkYXRl
ZCwgZG8gbm90IHJlLWV4ZWN1dGUgQUpBWA0KCQkJIGlmICghb3B0aW9ucy5pc0Vycm9yICYmICFt
ZXRob2RzLl9jaGVja0FqYXhGaWVsZFN0YXR1cyhmaWVsZC5hdHRyKCJpZCIpLCBvcHRpb25zKSkg
ew0KCQkJCSAkLmFqYXgoew0KCQkJCQkgdHlwZTogb3B0aW9ucy5hamF4Rm9ybVZhbGlkYXRpb25N
ZXRob2QsDQoJCQkJCSB1cmw6IHJ1bGUudXJsLA0KCQkJCQkgY2FjaGU6IGZhbHNlLA0KCQkJCQkg
ZGF0YVR5cGU6ICJqc29uIiwNCgkJCQkJIGRhdGE6IGRhdGEsDQoJCQkJCSBmaWVsZDogZmllbGQs
DQoJCQkJCSBydWxlOiBydWxlLA0KCQkJCQkgbWV0aG9kczogbWV0aG9kcywNCgkJCQkJIG9wdGlv
bnM6IG9wdGlvbnMsDQoJCQkJCSBiZWZvcmVTZW5kOiBmdW5jdGlvbigpIHt9LA0KCQkJCQkgZXJy
b3I6IGZ1bmN0aW9uKGRhdGEsIHRyYW5zcG9ydCkgew0KCQkJCQkJIG1ldGhvZHMuX2FqYXhFcnJv
cihkYXRhLCB0cmFuc3BvcnQpOw0KCQkJCQkgfSwNCgkJCQkJIHN1Y2Nlc3M6IGZ1bmN0aW9uKGpz
b24pIHsNCg0KCQkJCQkJIC8vIGFzeW5jaHJvbm91c2x5IGNhbGxlZCBvbiBzdWNjZXNzLCBkYXRh
IGlzIHRoZSBqc29uIGFuc3dlciBmcm9tIHRoZSBzZXJ2ZXINCgkJCQkJCSB2YXIgZXJyb3JGaWVs
ZElkID0ganNvblswXTsNCgkJCQkJCSAvL3ZhciBlcnJvckZpZWxkID0gJCgkKCIjIiArIGVycm9y
RmllbGRJZClbMF0pOw0KCQkJCQkJIHZhciBlcnJvckZpZWxkID0gJCgiIyIrIGVycm9yRmllbGRJ
ZCkuZXEoMCk7DQoNCgkJCQkJCSAvLyBtYWtlIHN1cmUgd2UgZm91bmQgdGhlIGVsZW1lbnQNCgkJ
CQkJCSBpZiAoZXJyb3JGaWVsZC5sZW5ndGggPT0gMSkgew0KCQkJCQkJCSB2YXIgc3RhdHVzID0g
anNvblsxXTsNCgkJCQkJCQkgLy8gcmVhZCB0aGUgb3B0aW9uYWwgbXNnIGZyb20gdGhlIHNlcnZl
cg0KCQkJCQkJCSB2YXIgbXNnID0ganNvblsyXTsNCgkJCQkJCQkgaWYgKCFzdGF0dXMpIHsNCgkJ
CQkJCQkJIC8vIEhvdXN0b24gd2UgZ290IGEgcHJvYmxlbSAtIGRpc3BsYXkgYW4gcmVkIHByb21w
dA0KCQkJCQkJCQkgb3B0aW9ucy5hamF4VmFsaWRDYWNoZVtlcnJvckZpZWxkSWRdID0gZmFsc2U7
DQoJCQkJCQkJCSBvcHRpb25zLmlzRXJyb3IgPSB0cnVlOw0KDQoJCQkJCQkJCSAvLyByZXNvbHZl
IHRoZSBtc2cgcHJvbXB0DQoJCQkJCQkJCSBpZihtc2cpIHsNCgkJCQkJCQkJCSBpZiAob3B0aW9u
cy5hbGxydWxlc1ttc2ddKSB7DQoJCQkJCQkJCQkJIHZhciB0eHQgPSBvcHRpb25zLmFsbHJ1bGVz
W21zZ10uYWxlcnRUZXh0Ow0KCQkJCQkJCQkJCSBpZiAodHh0KSB7DQoJCQkJCQkJCQkJCW1zZyA9
IHR4dDsNCgkJCQkJCQl9DQoJCQkJCQkJCQkgfQ0KCQkJCQkJCQkgfQ0KCQkJCQkJCQkgZWxzZQ0K
CQkJCQkJCQkJbXNnID0gcnVsZS5hbGVydFRleHQ7DQoNCgkJCQkJCQkJIGlmIChvcHRpb25zLnNo
b3dQcm9tcHRzKSBtZXRob2RzLl9zaG93UHJvbXB0KGVycm9yRmllbGQsIG1zZywgIiIsIHRydWUs
IG9wdGlvbnMpOw0KCQkJCQkJCSB9IGVsc2Ugew0KCQkJCQkJCQkgb3B0aW9ucy5hamF4VmFsaWRD
YWNoZVtlcnJvckZpZWxkSWRdID0gdHJ1ZTsNCg0KCQkJCQkJCQkgLy8gcmVzb2x2ZXMgdGhlIG1z
ZyBwcm9tcHQNCgkJCQkJCQkJIGlmKG1zZykgew0KCQkJCQkJCQkJIGlmIChvcHRpb25zLmFsbHJ1
bGVzW21zZ10pIHsNCgkJCQkJCQkJCQkgdmFyIHR4dCA9IG9wdGlvbnMuYWxscnVsZXNbbXNnXS5h
bGVydFRleHRPazsNCgkJCQkJCQkJCQkgaWYgKHR4dCkgew0KCQkJCQkJCQkJCQltc2cgPSB0eHQ7
DQoJCQkJCQkJfQ0KCQkJCQkJCQkJIH0NCgkJCQkJCQkJIH0NCgkJCQkJCQkJIGVsc2UNCgkJCQkJ
CQkJIG1zZyA9IHJ1bGUuYWxlcnRUZXh0T2s7DQoNCgkJCQkJCQkJIGlmIChvcHRpb25zLnNob3dQ
cm9tcHRzKSB7DQoJCQkJCQkJCQkgLy8gc2VlIGlmIHdlIHNob3VsZCBkaXNwbGF5IGEgZ3JlZW4g
cHJvbXB0DQoJCQkJCQkJCQkgaWYgKG1zZykNCgkJCQkJCQkJCQltZXRob2RzLl9zaG93UHJvbXB0
KGVycm9yRmllbGQsIG1zZywgInBhc3MiLCB0cnVlLCBvcHRpb25zKTsNCgkJCQkJCQkJCSBlbHNl
DQoJCQkJCQkJCQkJbWV0aG9kcy5fY2xvc2VQcm9tcHQoZXJyb3JGaWVsZCk7DQoJCQkJCQkJCX0N
CgkJCQkJCQkJDQoJCQkJCQkJCSAvLyBJZiBhIHN1Ym1pdCBmb3JtIHRyaWdnZXJlZCB0aGlzLCB3
ZSB3YW50IHRvIHJlLXN1Ym1pdCB0aGUgZm9ybQ0KCQkJCQkJCQkgaWYgKG9wdGlvbnMuZXZlbnRU
cmlnZ2VyID09ICJzdWJtaXQiKQ0KCQkJCQkJCQkJZmllbGQuY2xvc2VzdCgiZm9ybSIpLnN1Ym1p
dCgpOw0KCQkJCQkJCSB9DQoJCQkJCQkgfQ0KCQkJCQkJIGVycm9yRmllbGQudHJpZ2dlcigianF2
LmZpZWxkLnJlc3VsdCIsIFtlcnJvckZpZWxkLCBvcHRpb25zLmlzRXJyb3IsIG1zZ10pOw0KCQkJ
CQkgfQ0KCQkJCSB9KTsNCgkJCQkgDQoJCQkJIHJldHVybiBydWxlLmFsZXJ0VGV4dExvYWQ7DQoJ
CQkgfQ0KCQkgfSwNCgkJLyoqDQoJCSogQ29tbW9uIG1ldGhvZCB0byBoYW5kbGUgYWpheCBlcnJv
cnMNCgkJKg0KCQkqIEBwYXJhbSB7T2JqZWN0fSBkYXRhDQoJCSogQHBhcmFtIHtPYmplY3R9IHRy
YW5zcG9ydA0KCQkqLw0KCQlfYWpheEVycm9yOiBmdW5jdGlvbihkYXRhLCB0cmFuc3BvcnQpIHsN
CgkJCWlmKGRhdGEuc3RhdHVzID09IDAgJiYgdHJhbnNwb3J0ID09IG51bGwpDQoJCQkJYWxlcnQo
IlRoZSBwYWdlIGlzIG5vdCBzZXJ2ZWQgZnJvbSBhIHNlcnZlciEgYWpheCBjYWxsIGZhaWxlZCIp
Ow0KCQkJZWxzZSBpZih0eXBlb2YgY29uc29sZSAhPSAidW5kZWZpbmVkIikNCgkJCQljb25zb2xl
LmxvZygiQWpheCBlcnJvcjogIiArIGRhdGEuc3RhdHVzICsgIiAiICsgdHJhbnNwb3J0KTsNCgkJ
fSwNCgkJLyoqDQoJCSogZGF0ZSAtPiBzdHJpbmcNCgkJKg0KCQkqIEBwYXJhbSB7T2JqZWN0fSBk
YXRlDQoJCSovDQoJCV9kYXRlVG9TdHJpbmc6IGZ1bmN0aW9uKGRhdGUpIHsNCgkJCXJldHVybiBk
YXRlLmdldEZ1bGxZZWFyKCkrIi0iKyhkYXRlLmdldE1vbnRoKCkrMSkrIi0iK2RhdGUuZ2V0RGF0
ZSgpOw0KCQl9LA0KCQkvKioNCgkJKiBQYXJzZXMgYW4gSVNPIGRhdGUNCgkJKiBAcGFyYW0ge1N0
cmluZ30gZA0KCQkqLw0KCQlfcGFyc2VEYXRlOiBmdW5jdGlvbihkKSB7DQoNCgkJCXZhciBkYXRl
UGFydHMgPSBkLnNwbGl0KCItIik7DQoJCQlpZihkYXRlUGFydHM9PWQpDQoJCQkJZGF0ZVBhcnRz
ID0gZC5zcGxpdCgiLyIpOw0KCQkJaWYoZGF0ZVBhcnRzPT1kKSB7DQoJCQkJZGF0ZVBhcnRzID0g
ZC5zcGxpdCgiLiIpOw0KCQkJCXJldHVybiBuZXcgRGF0ZShkYXRlUGFydHNbMl0sIChkYXRlUGFy
dHNbMV0gLSAxKSwgZGF0ZVBhcnRzWzBdKTsNCgkJCX0NCgkJCXJldHVybiBuZXcgRGF0ZShkYXRl
UGFydHNbMF0sIChkYXRlUGFydHNbMV0gLSAxKSAsZGF0ZVBhcnRzWzJdKTsNCgkJfSwNCgkJLyoq
DQoJCSogQnVpbGRzIG9yIHVwZGF0ZXMgYSBwcm9tcHQgd2l0aCB0aGUgZ2l2ZW4gaW5mb3JtYXRp
b24NCgkJKg0KCQkqIEBwYXJhbSB7anFPYmplY3R9IGZpZWxkDQoJCSogQHBhcmFtIHtTdHJpbmd9
IHByb21wdFRleHQgaHRtbCB0ZXh0IHRvIGRpc3BsYXkgdHlwZQ0KCQkqIEBwYXJhbSB7U3RyaW5n
fSB0eXBlIHRoZSB0eXBlIG9mIGJ1YmJsZTogJ3Bhc3MnIChncmVlbiksICdsb2FkJyAoYmxhY2sp
IGFueXRoaW5nIGVsc2UgKHJlZCkNCgkJKiBAcGFyYW0ge2Jvb2xlYW59IGFqYXhlZCAtIHVzZSB0
byBtYXJrIGZpZWxkcyB0aGFuIGJlaW5nIHZhbGlkYXRlZCB3aXRoIGFqYXgNCgkJKiBAcGFyYW0g
e01hcH0gb3B0aW9ucyB1c2VyIG9wdGlvbnMNCgkJKi8NCgkJIF9zaG93UHJvbXB0OiBmdW5jdGlv
bihmaWVsZCwgcHJvbXB0VGV4dCwgdHlwZSwgYWpheGVkLCBvcHRpb25zLCBhamF4Zm9ybSkgew0K
CQkgCS8vQ2hlY2sgaWYgd2UgbmVlZCB0byBhZGp1c3Qgd2hhdCBlbGVtZW50IHRvIHNob3cgdGhl
IHByb21wdCBvbg0KCQkJaWYoZmllbGQuZGF0YSgnanF2LXByb21wdC1hdCcpIGluc3RhbmNlb2Yg
alF1ZXJ5ICl7DQoJCQkJZmllbGQgPSBmaWVsZC5kYXRhKCdqcXYtcHJvbXB0LWF0Jyk7DQoJCQl9
IGVsc2UgaWYoZmllbGQuZGF0YSgnanF2LXByb21wdC1hdCcpKSB7DQoJCQkJZmllbGQgPSAkKGZp
ZWxkLmRhdGEoJ2pxdi1wcm9tcHQtYXQnKSk7DQoJCQl9DQoNCgkJCSB2YXIgcHJvbXB0ID0gbWV0
aG9kcy5fZ2V0UHJvbXB0KGZpZWxkKTsNCgkJCSAvLyBUaGUgYWpheCBzdWJtaXQgZXJyb3JzIGFy
ZSBub3Qgc2VlIGhhcyBhbiBlcnJvciBpbiB0aGUgZm9ybSwNCgkJCSAvLyBXaGVuIHRoZSBmb3Jt
IGVycm9ycyBhcmUgcmV0dXJuZWQsIHRoZSBlbmdpbmUgc2VlIDIgYnViYmxlcywgYnV0IHRob3Nl
IGFyZSBlYmluZyBjbG9zZWQgYnkgdGhlIGVuZ2luZSBhdCB0aGUgc2FtZSB0aW1lDQoJCQkgLy8g
QmVjYXVzZSBubyBlcnJvciB3YXMgZm91bmQgYmVmb3Igc3VibWl0dGluZw0KCQkJIGlmKGFqYXhm
b3JtKSBwcm9tcHQgPSBmYWxzZTsNCgkJCSAvLyBDaGVjayB0aGF0IHRoZXJlIGlzIGluZGRlZCB0
ZXh0DQoJCQkgaWYoJC50cmltKHByb21wdFRleHQpKXsgDQoJCQkJIGlmIChwcm9tcHQpDQoJCQkJ
CW1ldGhvZHMuX3VwZGF0ZVByb21wdChmaWVsZCwgcHJvbXB0LCBwcm9tcHRUZXh0LCB0eXBlLCBh
amF4ZWQsIG9wdGlvbnMpOw0KCQkJCSBlbHNlDQoJCQkJCW1ldGhvZHMuX2J1aWxkUHJvbXB0KGZp
ZWxkLCBwcm9tcHRUZXh0LCB0eXBlLCBhamF4ZWQsIG9wdGlvbnMpOw0KCQkJfQ0KCQkgfSwNCgkJ
LyoqDQoJCSogQnVpbGRzIGFuZCBzaGFkZXMgYSBwcm9tcHQgZm9yIHRoZSBnaXZlbiBmaWVsZC4N
CgkJKg0KCQkqIEBwYXJhbSB7anFPYmplY3R9IGZpZWxkDQoJCSogQHBhcmFtIHtTdHJpbmd9IHBy
b21wdFRleHQgaHRtbCB0ZXh0IHRvIGRpc3BsYXkgdHlwZQ0KCQkqIEBwYXJhbSB7U3RyaW5nfSB0
eXBlIHRoZSB0eXBlIG9mIGJ1YmJsZTogJ3Bhc3MnIChncmVlbiksICdsb2FkJyAoYmxhY2spIGFu
eXRoaW5nIGVsc2UgKHJlZCkNCgkJKiBAcGFyYW0ge2Jvb2xlYW59IGFqYXhlZCAtIHVzZSB0byBt
YXJrIGZpZWxkcyB0aGFuIGJlaW5nIHZhbGlkYXRlZCB3aXRoIGFqYXgNCgkJKiBAcGFyYW0ge01h
cH0gb3B0aW9ucyB1c2VyIG9wdGlvbnMNCgkJKi8NCgkJX2J1aWxkUHJvbXB0OiBmdW5jdGlvbihm
aWVsZCwgcHJvbXB0VGV4dCwgdHlwZSwgYWpheGVkLCBvcHRpb25zKSB7DQoNCgkJCS8vIGNyZWF0
ZSB0aGUgcHJvbXB0DQoJCQl2YXIgcHJvbXB0ID0gJCgnPGRpdj4nKTsNCgkJCXByb21wdC5hZGRD
bGFzcyhtZXRob2RzLl9nZXRDbGFzc05hbWUoZmllbGQuYXR0cigiaWQiKSkgKyAiZm9ybUVycm9y
Iik7DQoJCQkvLyBhZGQgYSBjbGFzcyBuYW1lIHRvIGlkZW50aWZ5IHRoZSBwYXJlbnQgZm9ybSBv
ZiB0aGUgcHJvbXB0DQoJCQlwcm9tcHQuYWRkQ2xhc3MoInBhcmVudEZvcm0iK21ldGhvZHMuX2dl
dENsYXNzTmFtZShmaWVsZC5jbG9zZXN0KCdmb3JtLCAudmFsaWRhdGlvbkVuZ2luZUNvbnRhaW5l
cicpLmF0dHIoImlkIikpKTsNCgkJCXByb21wdC5hZGRDbGFzcygiZm9ybUVycm9yIik7DQoNCgkJ
CXN3aXRjaCAodHlwZSkgew0KCQkJCWNhc2UgInBhc3MiOg0KCQkJCQlwcm9tcHQuYWRkQ2xhc3Mo
ImdyZWVuUG9wdXAiKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAibG9hZCI6DQoJCQkJCXByb21w
dC5hZGRDbGFzcygiYmxhY2tQb3B1cCIpOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJ
CQkvKiBpdCBoYXMgZXJyb3IgICovDQoJCQkJCS8vYWxlcnQoInVua25vd24gcG9wdXAgdHlwZToi
K3R5cGUpOw0KCQkJfQ0KCQkJaWYgKGFqYXhlZCkNCgkJCQlwcm9tcHQuYWRkQ2xhc3MoImFqYXhl
ZCIpOw0KDQoJCQkvLyBjcmVhdGUgdGhlIHByb21wdCBjb250ZW50DQoJCQl2YXIgcHJvbXB0Q29u
dGVudCA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoImZvcm1FcnJvckNvbnRlbnQiKS5odG1sKHByb21w
dFRleHQpLmFwcGVuZFRvKHByb21wdCk7DQoNCgkJCS8vIGRldGVybWluZSBwb3NpdGlvbiB0eXBl
DQoJCQl2YXIgcG9zaXRpb25UeXBlPWZpZWxkLmRhdGEoInByb21wdFBvc2l0aW9uIikgfHwgb3B0
aW9ucy5wcm9tcHRQb3NpdGlvbjsNCg0KCQkJLy8gY3JlYXRlIHRoZSBjc3MgYXJyb3cgcG9pbnRp
bmcgYXQgdGhlIGZpZWxkDQoJCQkvLyBub3RlIHRoYXQgdGhlcmUgaXMgbm8gdHJpYW5nbGUgb24g
bWF4LWNoZWNrYm94IGFuZCByYWRpbw0KCQkJaWYgKG9wdGlvbnMuc2hvd0Fycm93KSB7DQoJCQkJ
dmFyIGFycm93ID0gJCgnPGRpdj4nKS5hZGRDbGFzcygiZm9ybUVycm9yQXJyb3ciKTsNCg0KCQkJ
CS8vcHJvbXB0IHBvc2l0aW9uaW5nIGFkanVzdG1lbnQgc3VwcG9ydC4gVXNhZ2U6IHBvc2l0aW9u
VHlwZTpYc2hpZnQsWXNoaWZ0IChmb3IgZXguOiBib3R0b21MZWZ0OisyMCBvciBib3R0b21MZWZ0
Oi0yMCwrMTApDQoJCQkJaWYgKHR5cGVvZihwb3NpdGlvblR5cGUpPT0nc3RyaW5nJykgDQoJCQkJ
ew0KCQkJCQl2YXIgcG9zPXBvc2l0aW9uVHlwZS5pbmRleE9mKCI6Iik7DQoJCQkJCWlmKHBvcyE9
LTEpDQoJCQkJCQlwb3NpdGlvblR5cGU9cG9zaXRpb25UeXBlLnN1YnN0cmluZygwLHBvcyk7DQoJ
CQkJfQ0KDQoJCQkJc3dpdGNoIChwb3NpdGlvblR5cGUpIHsNCgkJCQkJY2FzZSAiYm90dG9tTGVm
dCI6DQoJCQkJCWNhc2UgImJvdHRvbVJpZ2h0IjoNCgkJCQkJCXByb21wdC5maW5kKCIuZm9ybUVy
cm9yQ29udGVudCIpLmJlZm9yZShhcnJvdyk7DQoJCQkJCQlhcnJvdy5hZGRDbGFzcygiZm9ybUVy
cm9yQXJyb3dCb3R0b20iKS5odG1sKCc8ZGl2IGNsYXNzPSJsaW5lMSI+PCEtLSAtLT48L2Rpdj48
ZGl2IGNsYXNzPSJsaW5lMiI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lMyI+PCEtLSAt
LT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lNCI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5l
NSI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lNiI+PCEtLSAtLT48L2Rpdj48ZGl2IGNs
YXNzPSJsaW5lNyI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lOCI+PCEtLSAtLT48L2Rp
dj48ZGl2IGNsYXNzPSJsaW5lOSI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lMTAiPjwh
LS0gLS0+PC9kaXY+Jyk7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAidG9wTGVmdCI6DQoJCQkJ
CWNhc2UgInRvcFJpZ2h0IjoNCgkJCQkJCWFycm93Lmh0bWwoJzxkaXYgY2xhc3M9ImxpbmUxMCI+
PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lOSI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNz
PSJsaW5lOCI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lNyI+PCEtLSAtLT48L2Rpdj48
ZGl2IGNsYXNzPSJsaW5lNiI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lNSI+PCEtLSAt
LT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lNCI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5l
MyI+PCEtLSAtLT48L2Rpdj48ZGl2IGNsYXNzPSJsaW5lMiI+PCEtLSAtLT48L2Rpdj48ZGl2IGNs
YXNzPSJsaW5lMSI+PCEtLSAtLT48L2Rpdj4nKTsNCgkJCQkJCXByb21wdC5hcHBlbmQoYXJyb3cp
Ow0KCQkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gQWRkIGN1c3RvbSBwcm9tcHQgY2xh
c3MNCgkJCWlmIChvcHRpb25zLmFkZFByb21wdENsYXNzKQ0KCQkJCXByb21wdC5hZGRDbGFzcyhv
cHRpb25zLmFkZFByb21wdENsYXNzKTsNCg0KICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBwcm9t
cHQgY2xhc3MgZGVmaW5lZCBpbiBlbGVtZW50DQogICAgICAgICAgICB2YXIgcmVxdWlyZWRPdmVy
cmlkZSA9IGZpZWxkLmF0dHIoJ2RhdGEtcmVxdWlyZWQtY2xhc3MnKTsNCiAgICAgICAgICAgIGlm
KHJlcXVpcmVkT3ZlcnJpZGUgIT09IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgIHByb21w
dC5hZGRDbGFzcyhyZXF1aXJlZE92ZXJyaWRlKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgaWYob3B0aW9ucy5wcmV0dHlTZWxlY3QpIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYoJCgnIycgKyBmaWVsZC5hdHRyKCdpZCcpKS5uZXh0KCkuaXMoJ3NlbGVjdCcpKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldHR5T3ZlcnJpZGVDbGFzcyA9ICQoJyMnICsg
ZmllbGQuYXR0cignaWQnKS5zdWJzdHIob3B0aW9ucy51c2VQcmVmaXgubGVuZ3RoKS5zdWJzdHJp
bmcob3B0aW9ucy51c2VTdWZmaXgubGVuZ3RoKSkuYXR0cignZGF0YS1yZXF1aXJlZC1jbGFzcycp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYocHJldHR5T3ZlcnJpZGVDbGFzcyAhPT0gdW5k
ZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0LmFkZENsYXNzKHBy
ZXR0eU92ZXJyaWRlQ2xhc3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQoJCQlwcm9t
cHQuY3NzKHsNCgkJCQkib3BhY2l0eSI6IDANCgkJCX0pOw0KCQkJaWYocG9zaXRpb25UeXBlID09
PSAnaW5saW5lJykgew0KCQkJCXByb21wdC5hZGRDbGFzcygiaW5saW5lIik7DQoJCQkJaWYodHlw
ZW9mIGZpZWxkLmF0dHIoJ2RhdGEtcHJvbXB0LXRhcmdldCcpICE9PSAndW5kZWZpbmVkJyAmJiAk
KCcjJytmaWVsZC5hdHRyKCdkYXRhLXByb21wdC10YXJnZXQnKSkubGVuZ3RoID4gMCkgew0KCQkJ
CQlwcm9tcHQuYXBwZW5kVG8oJCgnIycrZmllbGQuYXR0cignZGF0YS1wcm9tcHQtdGFyZ2V0Jykp
KTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlmaWVsZC5hZnRlcihwcm9tcHQpOw0KCQkJCX0NCgkJCX0g
ZWxzZSB7DQoJCQkJZmllbGQuYmVmb3JlKHByb21wdCk7CQkJCQ0KCQkJfQ0KCQkJDQoJCQl2YXIg
cG9zID0gbWV0aG9kcy5fY2FsY3VsYXRlUG9zaXRpb24oZmllbGQsIHByb21wdCwgb3B0aW9ucyk7
DQoJCQlwcm9tcHQuY3NzKHsNCgkJCQkncG9zaXRpb24nOiBwb3NpdGlvblR5cGUgPT09ICdpbmxp
bmUnID8gJ3JlbGF0aXZlJyA6ICdhYnNvbHV0ZScsDQoJCQkJInRvcCI6IHBvcy5jYWxsZXJUb3BQ
b3NpdGlvbiwNCgkJCQkibGVmdCI6IHBvcy5jYWxsZXJsZWZ0UG9zaXRpb24sDQoJCQkJIm1hcmdp
blRvcCI6IHBvcy5tYXJnaW5Ub3BTaXplLA0KCQkJCSJvcGFjaXR5IjogMA0KCQkJfSkuZGF0YSgi
Y2FsbGVyRmllbGQiLCBmaWVsZCk7DQoJCQkNCg0KCQkJaWYgKG9wdGlvbnMuYXV0b0hpZGVQcm9t
cHQpIHsNCgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7DQoJCQkJCXByb21wdC5hbmltYXRlKHsN
CgkJCQkJCSJvcGFjaXR5IjogMA0KCQkJCQl9LGZ1bmN0aW9uKCl7DQoJCQkJCQlwcm9tcHQuY2xv
c2VzdCgnLmZvcm1FcnJvck91dGVyJykucmVtb3ZlKCk7DQoJCQkJCQlwcm9tcHQucmVtb3ZlKCk7
DQoJCQkJCX0pOw0KCQkJCX0sIG9wdGlvbnMuYXV0b0hpZGVEZWxheSk7DQoJCQl9IA0KCQkJcmV0
dXJuIHByb21wdC5hbmltYXRlKHsNCgkJCQkib3BhY2l0eSI6IDAuODcNCgkJCX0pOw0KCQl9LA0K
CQkvKioNCgkJKiBVcGRhdGVzIHRoZSBwcm9tcHQgdGV4dCBmaWVsZCAtIHRoZSBmaWVsZCBmb3Ig
d2hpY2ggdGhlIHByb21wdA0KCQkqIEBwYXJhbSB7anFPYmplY3R9IGZpZWxkDQoJCSogQHBhcmFt
IHtTdHJpbmd9IHByb21wdFRleHQgaHRtbCB0ZXh0IHRvIGRpc3BsYXkgdHlwZQ0KCQkqIEBwYXJh
bSB7U3RyaW5nfSB0eXBlIHRoZSB0eXBlIG9mIGJ1YmJsZTogJ3Bhc3MnIChncmVlbiksICdsb2Fk
JyAoYmxhY2spIGFueXRoaW5nIGVsc2UgKHJlZCkNCgkJKiBAcGFyYW0ge2Jvb2xlYW59IGFqYXhl
ZCAtIHVzZSB0byBtYXJrIGZpZWxkcyB0aGFuIGJlaW5nIHZhbGlkYXRlZCB3aXRoIGFqYXgNCgkJ
KiBAcGFyYW0ge01hcH0gb3B0aW9ucyB1c2VyIG9wdGlvbnMNCgkJKi8NCgkJX3VwZGF0ZVByb21w
dDogZnVuY3Rpb24oZmllbGQsIHByb21wdCwgcHJvbXB0VGV4dCwgdHlwZSwgYWpheGVkLCBvcHRp
b25zLCBub0FuaW1hdGlvbikgew0KDQoJCQlpZiAocHJvbXB0KSB7DQoJCQkJaWYgKHR5cGVvZiB0
eXBlICE9PSAidW5kZWZpbmVkIikgew0KCQkJCQlpZiAodHlwZSA9PSAicGFzcyIpDQoJCQkJCQlw
cm9tcHQuYWRkQ2xhc3MoImdyZWVuUG9wdXAiKTsNCgkJCQkJZWxzZQ0KCQkJCQkJcHJvbXB0LnJl
bW92ZUNsYXNzKCJncmVlblBvcHVwIik7DQoNCgkJCQkJaWYgKHR5cGUgPT0gImxvYWQiKQ0KCQkJ
CQkJcHJvbXB0LmFkZENsYXNzKCJibGFja1BvcHVwIik7DQoJCQkJCWVsc2UNCgkJCQkJCXByb21w
dC5yZW1vdmVDbGFzcygiYmxhY2tQb3B1cCIpOw0KCQkJCX0NCgkJCQlpZiAoYWpheGVkKQ0KCQkJ
CQlwcm9tcHQuYWRkQ2xhc3MoImFqYXhlZCIpOw0KCQkJCWVsc2UNCgkJCQkJcHJvbXB0LnJlbW92
ZUNsYXNzKCJhamF4ZWQiKTsNCg0KCQkJCXByb21wdC5maW5kKCIuZm9ybUVycm9yQ29udGVudCIp
Lmh0bWwocHJvbXB0VGV4dCk7DQoNCgkJCQl2YXIgcG9zID0gbWV0aG9kcy5fY2FsY3VsYXRlUG9z
aXRpb24oZmllbGQsIHByb21wdCwgb3B0aW9ucyk7DQoJCQkJdmFyIGNzcyA9IHsidG9wIjogcG9z
LmNhbGxlclRvcFBvc2l0aW9uLA0KCQkJCSJsZWZ0IjogcG9zLmNhbGxlcmxlZnRQb3NpdGlvbiwN
CgkJCQkibWFyZ2luVG9wIjogcG9zLm1hcmdpblRvcFNpemV9Ow0KDQoJCQkJaWYgKG5vQW5pbWF0
aW9uKQ0KCQkJCQlwcm9tcHQuY3NzKGNzcyk7DQoJCQkJZWxzZQ0KCQkJCQlwcm9tcHQuYW5pbWF0
ZShjc3MpOw0KCQkJfQ0KCQl9LA0KCQkvKioNCgkJKiBDbG9zZXMgdGhlIHByb21wdCBhc3NvY2lh
dGVkIHdpdGggdGhlIGdpdmVuIGZpZWxkDQoJCSoNCgkJKiBAcGFyYW0ge2pxT2JqZWN0fQ0KCQkq
ICAgICAgICAgICAgZmllbGQNCgkJKi8NCgkJIF9jbG9zZVByb21wdDogZnVuY3Rpb24oZmllbGQp
IHsNCgkJCSB2YXIgcHJvbXB0ID0gbWV0aG9kcy5fZ2V0UHJvbXB0KGZpZWxkKTsNCgkJCSBpZiAo
cHJvbXB0KQ0KCQkJCSBwcm9tcHQuZmFkZVRvKCJmYXN0IiwgMCwgZnVuY3Rpb24oKSB7DQoJCQkJ
CSBwcm9tcHQucGFyZW50KCcuZm9ybUVycm9yT3V0ZXInKS5yZW1vdmUoKTsNCgkJCQkJIHByb21w
dC5yZW1vdmUoKTsNCgkJCQkgfSk7DQoJCSB9LA0KCQkgY2xvc2VQcm9tcHQ6IGZ1bmN0aW9uKGZp
ZWxkKSB7DQoJCQkgcmV0dXJuIG1ldGhvZHMuX2Nsb3NlUHJvbXB0KGZpZWxkKTsNCgkJIH0sDQoJ
CS8qKg0KCQkqIFJldHVybnMgdGhlIGVycm9yIHByb21wdCBtYXRjaGluZyB0aGUgZmllbGQgaWYg
YW55DQoJCSoNCgkJKiBAcGFyYW0ge2pxT2JqZWN0fQ0KCQkqICAgICAgICAgICAgZmllbGQNCgkJ
KiBAcmV0dXJuIHVuZGVmaW5lZCBvciB0aGUgZXJyb3IgcHJvbXB0IChqcU9iamVjdCkNCgkJKi8N
CgkJX2dldFByb21wdDogZnVuY3Rpb24oZmllbGQpIHsNCgkJCQl2YXIgZm9ybUlkID0gJChmaWVs
ZCkuY2xvc2VzdCgnZm9ybSwgLnZhbGlkYXRpb25FbmdpbmVDb250YWluZXInKS5hdHRyKCdpZCcp
Ow0KCQkJdmFyIGNsYXNzTmFtZSA9IG1ldGhvZHMuX2dldENsYXNzTmFtZShmaWVsZC5hdHRyKCJp
ZCIpKSArICJmb3JtRXJyb3IiOw0KCQkJCXZhciBtYXRjaCA9ICQoIi4iICsgbWV0aG9kcy5fZXNj
YXBlRXhwcmVzc2lvbihjbGFzc05hbWUpICsgJy5wYXJlbnRGb3JtJyArIG1ldGhvZHMuX2dldENs
YXNzTmFtZShmb3JtSWQpKVswXTsNCgkJCWlmIChtYXRjaCkNCgkJCXJldHVybiAkKG1hdGNoKTsN
CgkJfSwNCgkJLyoqDQoJCSAgKiBSZXR1cm5zIHRoZSBlc2NhcGFkZSBjbGFzc25hbWUNCgkJICAq
DQoJCSAgKiBAcGFyYW0ge3NlbGVjdG9yfQ0KCQkgICogICAgICAgICAgICBjbGFzc05hbWUNCgkJ
ICAqLw0KCQkgIF9lc2NhcGVFeHByZXNzaW9uOiBmdW5jdGlvbiAoc2VsZWN0b3IpIHsNCgkJCSAg
cmV0dXJuIHNlbGVjdG9yLnJlcGxhY2UoLyhbIzsmLFwuXCtcKlx+JzoiXCFcXiRcW1xdXChcKT0+
XHxdKS9nLCAiXFwkMSIpOw0KCQkgIH0sDQoJCS8qKg0KCQkgKiByZXR1cm5zIHRydWUgaWYgd2Ug
YXJlIGluIGEgUlRMZWQgZG9jdW1lbnQNCgkJICoNCgkJICogQHBhcmFtIHtqcU9iamVjdH0gZmll
bGQNCgkJICovDQoJCWlzUlRMOiBmdW5jdGlvbihmaWVsZCkNCgkJew0KCQkJdmFyICRkb2N1bWVu
dCA9ICQoZG9jdW1lbnQpOw0KCQkJdmFyICRib2R5ID0gJCgnYm9keScpOw0KCQkJdmFyIHJ0bCA9
DQoJCQkJKGZpZWxkICYmIGZpZWxkLmhhc0NsYXNzKCdydGwnKSkgfHwNCgkJCQkoZmllbGQgJiYg
KGZpZWxkLmF0dHIoJ2RpcicpIHx8ICcnKS50b0xvd2VyQ2FzZSgpPT09J3J0bCcpIHx8DQoJCQkJ
JGRvY3VtZW50Lmhhc0NsYXNzKCdydGwnKSB8fA0KCQkJCSgkZG9jdW1lbnQuYXR0cignZGlyJykg
fHwgJycpLnRvTG93ZXJDYXNlKCk9PT0ncnRsJyB8fA0KCQkJCSRib2R5Lmhhc0NsYXNzKCdydGwn
KSB8fA0KCQkJCSgkYm9keS5hdHRyKCdkaXInKSB8fCAnJykudG9Mb3dlckNhc2UoKT09PSdydGwn
Ow0KCQkJcmV0dXJuIEJvb2xlYW4ocnRsKTsNCgkJfSwNCgkJLyoqDQoJCSogQ2FsY3VsYXRlcyBw
cm9tcHQgcG9zaXRpb24NCgkJKg0KCQkqIEBwYXJhbSB7anFPYmplY3R9DQoJCSogICAgICAgICAg
ICBmaWVsZA0KCQkqIEBwYXJhbSB7anFPYmplY3R9DQoJCSogICAgICAgICAgICB0aGUgcHJvbXB0
DQoJCSogQHBhcmFtIHtNYXB9DQoJCSogICAgICAgICAgICBvcHRpb25zDQoJCSogQHJldHVybiBw
b3NpdGlvbnMNCgkJKi8NCgkJX2NhbGN1bGF0ZVBvc2l0aW9uOiBmdW5jdGlvbiAoZmllbGQsIHBy
b21wdEVsbXQsIG9wdGlvbnMpIHsNCg0KCQkJdmFyIHByb21wdFRvcFBvc2l0aW9uLCBwcm9tcHRs
ZWZ0UG9zaXRpb24sIG1hcmdpblRvcFNpemU7DQoJCQl2YXIgZmllbGRXaWR0aCAJPSBmaWVsZC53
aWR0aCgpOw0KCQkJdmFyIGZpZWxkTGVmdCAJPSBmaWVsZC5wb3NpdGlvbigpLmxlZnQ7IA0KCQkJ
dmFyIGZpZWxkVG9wIAk9ICBmaWVsZC5wb3NpdGlvbigpLnRvcDsNCgkJCXZhciBmaWVsZEhlaWdo
dCAJPSAgZmllbGQuaGVpZ2h0KCk7CQ0KCQkJdmFyIHByb21wdEhlaWdodCA9IHByb21wdEVsbXQu
aGVpZ2h0KCk7DQoNCg0KCQkJLy8gaXMgdGhlIGZvcm0gY29udGFpbmVkIGluIGFuIG92ZXJmbG93
biBjb250YWluZXI/DQoJCQlwcm9tcHRUb3BQb3NpdGlvbiA9IHByb21wdGxlZnRQb3NpdGlvbiA9
IDA7DQoJCQkvLyBjb21wZW5zYXRpb24gZm9yIHRoZSBhcnJvdw0KCQkJbWFyZ2luVG9wU2l6ZSA9
IC1wcm9tcHRIZWlnaHQ7DQoJCQ0KDQoJCQkvL3Byb21wdCBwb3NpdGlvbmluZyBhZGp1c3RtZW50
IHN1cHBvcnQNCgkJCS8vbm93IHlvdSBjYW4gYWRqdXN0IHByb21wdCBwb3NpdGlvbg0KCQkJLy91
c2FnZTogcG9zaXRpb25UeXBlOlhzaGlmdCxZc2hpZnQNCgkJCS8vZm9yIGV4YW1wbGU6DQoJCQkv
LyAgIGJvdHRvbUxlZnQ6KzIwIG1lYW5zIGJvdHRvbUxlZnQgcG9zaXRpb24gc2hpZnRlZCBieSAy
MCBwaXhlbHMgcmlnaHQgaG9yaXpvbnRhbGx5DQoJCQkvLyAgIHRvcFJpZ2h0OjIwLCAtMTUgbWVh
bnMgdG9wUmlnaHQgcG9zaXRpb24gc2hpZnRlZCBieSAyMCBwaXhlbHMgdG8gcmlnaHQgYW5kIDE1
IHBpeGVscyB0byB0b3ANCgkJCS8vWW91IGNhbiB1c2UgK3BpeGVscywgLSBwaXhlbHMuIElmIG5v
IHNpZ24gaXMgcHJvdmlkZWQgdGhhbiArIGlzIGRlZmF1bHQuDQoJCQl2YXIgcG9zaXRpb25UeXBl
PWZpZWxkLmRhdGEoInByb21wdFBvc2l0aW9uIikgfHwgb3B0aW9ucy5wcm9tcHRQb3NpdGlvbjsN
CgkJCXZhciBzaGlmdDE9IiI7DQoJCQl2YXIgc2hpZnQyPSIiOw0KCQkJdmFyIHNoaWZ0WD0wOw0K
CQkJdmFyIHNoaWZ0WT0wOw0KCQkJaWYgKHR5cGVvZihwb3NpdGlvblR5cGUpPT0nc3RyaW5nJykg
ew0KCQkJCS8vZG8gd2UgaGF2ZSBhbnkgcG9zaXRpb24gYWRqdXN0bWVudHMgPw0KCQkJCWlmIChw
b3NpdGlvblR5cGUuaW5kZXhPZigiOiIpIT0tMSkgew0KCQkJCQlzaGlmdDE9cG9zaXRpb25UeXBl
LnN1YnN0cmluZyhwb3NpdGlvblR5cGUuaW5kZXhPZigiOiIpKzEpOw0KCQkJCQlwb3NpdGlvblR5
cGU9cG9zaXRpb25UeXBlLnN1YnN0cmluZygwLHBvc2l0aW9uVHlwZS5pbmRleE9mKCI6IikpOw0K
DQoJCQkJCS8vaWYgYW55IGFkdmFuY2VkIHBvc2l0aW9uaW5nIHdpbGwgYmUgbmVlZGVkIChwZXJj
ZW50cyBvciBzb21ldGhpbmcgZWxzZSkgLSBwYXJzZXIgc2hvdWxkIGJlIGFkZGVkIGhlcmUNCgkJ
CQkJLy9mb3Igbm93IHdlIHVzZSBzaW1wbGUgcGFyc2VJbnQoKQ0KDQoJCQkJCS8vZG8gd2UgaGF2
ZSBzZWNvbmQgcGFyYW1ldGVyPw0KCQkJCQlpZiAoc2hpZnQxLmluZGV4T2YoIiwiKSAhPS0xKSB7
DQoJCQkJCQlzaGlmdDI9c2hpZnQxLnN1YnN0cmluZyhzaGlmdDEuaW5kZXhPZigiLCIpICsxKTsN
CgkJCQkJCXNoaWZ0MT1zaGlmdDEuc3Vic3RyaW5nKDAsc2hpZnQxLmluZGV4T2YoIiwiKSk7DQoJ
CQkJCQlzaGlmdFk9cGFyc2VJbnQoc2hpZnQyKTsNCgkJCQkJCWlmIChpc05hTihzaGlmdFkpKSBz
aGlmdFk9MDsNCgkJCQkJfTsNCg0KCQkJCQlzaGlmdFg9cGFyc2VJbnQoc2hpZnQxKTsNCgkJCQkJ
aWYgKGlzTmFOKHNoaWZ0MSkpIHNoaWZ0MT0wOw0KDQoJCQkJfTsNCgkJCX07DQoNCgkJCQ0KCQkJ
c3dpdGNoIChwb3NpdGlvblR5cGUpIHsNCgkJCQlkZWZhdWx0Og0KCQkJCWNhc2UgInRvcFJpZ2h0
IjoNCgkJCQkJcHJvbXB0bGVmdFBvc2l0aW9uICs9ICBmaWVsZExlZnQgKyBmaWVsZFdpZHRoIC0g
MzA7DQoJCQkJCXByb21wdFRvcFBvc2l0aW9uICs9ICBmaWVsZFRvcDsNCgkJCQkJYnJlYWs7DQoN
CgkJCQljYXNlICJ0b3BMZWZ0IjoNCgkJCQkJcHJvbXB0VG9wUG9zaXRpb24gKz0gIGZpZWxkVG9w
Ow0KCQkJCQlwcm9tcHRsZWZ0UG9zaXRpb24gKz0gZmllbGRMZWZ0OyANCgkJCQkJYnJlYWs7DQoN
CgkJCQljYXNlICJjZW50ZXJSaWdodCI6DQoJCQkJCXByb21wdFRvcFBvc2l0aW9uID0gZmllbGRU
b3ArNDsNCgkJCQkJbWFyZ2luVG9wU2l6ZSA9IDA7DQoJCQkJCXByb21wdGxlZnRQb3NpdGlvbj0g
ZmllbGRMZWZ0ICsgZmllbGQub3V0ZXJXaWR0aCh0cnVlKSs1Ow0KCQkJCQlicmVhazsNCgkJCQlj
YXNlICJjZW50ZXJMZWZ0IjoNCgkJCQkJcHJvbXB0bGVmdFBvc2l0aW9uID0gZmllbGRMZWZ0IC0g
KHByb21wdEVsbXQud2lkdGgoKSArIDIpOw0KCQkJCQlwcm9tcHRUb3BQb3NpdGlvbiA9IGZpZWxk
VG9wKzQ7DQoJCQkJCW1hcmdpblRvcFNpemUgPSAwOw0KCQkJCQkNCgkJCQkJYnJlYWs7DQoNCgkJ
CQljYXNlICJib3R0b21MZWZ0IjoNCgkJCQkJcHJvbXB0VG9wUG9zaXRpb24gPSBmaWVsZFRvcCAr
IGZpZWxkLmhlaWdodCgpICsgNTsNCgkJCQkJbWFyZ2luVG9wU2l6ZSA9IDA7DQoJCQkJCXByb21w
dGxlZnRQb3NpdGlvbiA9IGZpZWxkTGVmdDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiYm90dG9t
UmlnaHQiOg0KCQkJCQlwcm9tcHRsZWZ0UG9zaXRpb24gPSBmaWVsZExlZnQgKyBmaWVsZFdpZHRo
IC0gMzA7DQoJCQkJCXByb21wdFRvcFBvc2l0aW9uID0gIGZpZWxkVG9wICsgIGZpZWxkLmhlaWdo
dCgpICsgNTsNCgkJCQkJbWFyZ2luVG9wU2l6ZSA9IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug
ImlubGluZSI6DQoJCQkJCXByb21wdGxlZnRQb3NpdGlvbiA9IDA7DQoJCQkJCXByb21wdFRvcFBv
c2l0aW9uID0gMDsNCgkJCQkJbWFyZ2luVG9wU2l6ZSA9IDA7DQoJCQl9Ow0KDQoJCQ0KDQoJCQkv
L2FwcGx5IGFkanVzbWVudHMgaWYgYW55DQoJCQlwcm9tcHRsZWZ0UG9zaXRpb24gKz0gc2hpZnRY
Ow0KCQkJcHJvbXB0VG9wUG9zaXRpb24gICs9IHNoaWZ0WTsNCg0KCQkJcmV0dXJuIHsNCgkJCQki
Y2FsbGVyVG9wUG9zaXRpb24iOiBwcm9tcHRUb3BQb3NpdGlvbiArICJweCIsDQoJCQkJImNhbGxl
cmxlZnRQb3NpdGlvbiI6IHByb21wdGxlZnRQb3NpdGlvbiArICJweCIsDQoJCQkJIm1hcmdpblRv
cFNpemUiOiBtYXJnaW5Ub3BTaXplICsgInB4Ig0KCQkJfTsNCgkJfSwNCgkJLyoqDQoJCSogU2F2
ZXMgdGhlIHVzZXIgb3B0aW9ucyBhbmQgdmFyaWFibGVzIGluIHRoZSBmb3JtLmRhdGENCgkJKg0K
CQkqIEBwYXJhbSB7anFPYmplY3R9DQoJCSogICAgICAgICAgICBmb3JtIC0gdGhlIGZvcm0gd2hl
cmUgdGhlIHVzZXIgb3B0aW9uIHNob3VsZCBiZSBzYXZlZA0KCQkqIEBwYXJhbSB7TWFwfQ0KCQkq
ICAgICAgICAgICAgb3B0aW9ucyAtIHRoZSB1c2VyIG9wdGlvbnMNCgkJKiBAcmV0dXJuIHRoZSB1
c2VyIG9wdGlvbnMgKGV4dGVuZGVkIGZyb20gdGhlIGRlZmF1bHRzKQ0KCQkqLw0KCQkgX3NhdmVP
cHRpb25zOiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7DQoNCgkJCSAvLyBpcyB0aGVyZSBhIGxh
bmd1YWdlIGxvY2FsaXNhdGlvbiA/DQoJCQkgaWYgKCQudmFsaWRhdGlvbkVuZ2luZUxhbmd1YWdl
KQ0KCQkJIHZhciBhbGxSdWxlcyA9ICQudmFsaWRhdGlvbkVuZ2luZUxhbmd1YWdlLmFsbFJ1bGVz
Ow0KCQkJIGVsc2UNCgkJCSAkLmVycm9yKCJqUXVlcnkudmFsaWRhdGlvbkVuZ2luZSBydWxlcyBh
cmUgbm90IGxvYWRlZCwgcGx6IGFkZCBsb2NhbGl6YXRpb24gZmlsZXMgdG8gdGhlIHBhZ2UiKTsN
CgkJCSAvLyAtLS0gSW50ZXJuYWxzIERPIE5PVCBUT1VDSCBvciBPVkVSTE9BRCAtLS0NCgkJCSAv
LyB2YWxpZGF0aW9uIHJ1bGVzIGFuZCBpMTgNCgkJCSAkLnZhbGlkYXRpb25FbmdpbmUuZGVmYXVs
dHMuYWxscnVsZXMgPSBhbGxSdWxlczsNCg0KCQkJIHZhciB1c2VyT3B0aW9ucyA9ICQuZXh0ZW5k
KHRydWUse30sJC52YWxpZGF0aW9uRW5naW5lLmRlZmF1bHRzLG9wdGlvbnMpOw0KDQoJCQkgZm9y
bS5kYXRhKCdqcXYnLCB1c2VyT3B0aW9ucyk7DQoJCQkgcmV0dXJuIHVzZXJPcHRpb25zOw0KCQkg
fSwNCg0KCQkgLyoqDQoJCSAqIFJlbW92ZXMgZm9yYmlkZGVuIGNoYXJhY3RlcnMgZnJvbSBjbGFz
cyBuYW1lDQoJCSAqIEBwYXJhbSB7U3RyaW5nfSBjbGFzc05hbWUNCgkJICovDQoJCSBfZ2V0Q2xh
c3NOYW1lOiBmdW5jdGlvbihjbGFzc05hbWUpIHsNCgkJCSBpZihjbGFzc05hbWUpDQoJCQkJIHJl
dHVybiBjbGFzc05hbWUucmVwbGFjZSgvOi9nLCAiXyIpLnJlcGxhY2UoL1wuL2csICJfIik7DQoJ
CQkJCSAgfSwNCgkJLyoqDQoJCSAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlciBmb3IgalF1ZXJ5
IHNlbGVjdG9yDQoJCSAqIGh0dHA6Ly90b3RhbGRldi5jb20vY29udGVudC9lc2NhcGluZy1jaGFy
YWN0ZXJzLWdldC12YWxpZC1qcXVlcnktaWQNCgkJICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9y
DQoJCSAqLw0KCQkgX2pxU2VsZWN0b3I6IGZ1bmN0aW9uKHN0cil7DQoJCQlyZXR1cm4gc3RyLnJl
cGxhY2UoLyhbOyYsXC5cK1wqXH4nOiJcIVxeIyQlQFxbXF1cKFwpPT5cfF0pL2csICdcXCQxJyk7
DQoJCX0sDQoJCS8qKg0KCQkqIENvbmRpdGlvbmFsbHkgcmVxdWlyZWQgZmllbGQNCgkJKg0KCQkq
IEBwYXJhbSB7anFPYmplY3R9IGZpZWxkDQoJCSogQHBhcmFtIHtBcnJheVtTdHJpbmddfSBydWxl
cw0KCQkqIEBwYXJhbSB7aW50fSBpIHJ1bGVzIGluZGV4DQoJCSogQHBhcmFtIHtNYXB9DQoJCSog
dXNlciBvcHRpb25zDQoJCSogQHJldHVybiBhbiBlcnJvciBzdHJpbmcgaWYgdmFsaWRhdGlvbiBm
YWlsZWQNCgkJKi8NCgkJX2NvbmRSZXF1aXJlZDogZnVuY3Rpb24oZmllbGQsIHJ1bGVzLCBpLCBv
cHRpb25zKSB7DQoJCQl2YXIgaWR4LCBkZXBlbmRpbmdGaWVsZDsNCg0KCQkJZm9yKGlkeCA9IChp
ICsgMSk7IGlkeCA8IHJ1bGVzLmxlbmd0aDsgaWR4KyspIHsNCgkJCQlkZXBlbmRpbmdGaWVsZCA9
IGpRdWVyeSgiIyIgKyBydWxlc1tpZHhdKS5maXJzdCgpOw0KDQoJCQkJLyogVXNlIF9yZXF1aXJl
ZCBmb3IgZGV0ZXJtaW5pbmcgd2V0aGVyIGRlcGVuZGluZ0ZpZWxkIGhhcyBhIHZhbHVlLg0KCQkJ
CSAqIFRoZXJlIGlzIGxvZ2ljIHRoZXJlIGZvciBoYW5kbGluZyBhbGwgZmllbGQgdHlwZXMsIGFu
ZCBkZWZhdWx0IHZhbHVlOyBzbyB3ZSB3b24ndCByZXBsaWNhdGUgdGhhdCBoZXJlDQoJCQkJICog
SW5kaWNhdGUgdGhpcyBzcGVjaWFsIHVzZSBieSBzZXR0aW5nIHRoZSBsYXN0IHBhcmFtZXRlciB0
byB0cnVlIHNvIHdlIG9ubHkgdmFsaWRhdGUgdGhlIGRlcGVuZGluZ0ZpZWxkIG9uIGNoYWNrYm94
ZXMgYW5kIHJhZGlvIGJ1dHRvbnMgKCM0NjIpDQoJCQkJICovDQoJCQkJaWYgKGRlcGVuZGluZ0Zp
ZWxkLmxlbmd0aCAmJiBtZXRob2RzLl9yZXF1aXJlZChkZXBlbmRpbmdGaWVsZCwgWyJyZXF1aXJl
ZCJdLCAwLCBvcHRpb25zLCB0cnVlKSA9PSB1bmRlZmluZWQpIHsNCgkJCQkJLyogV2Ugbm93IGtu
b3cgYW55IG9mIHRoZSBkZXBlbmRpbmcgZmllbGRzIGhhcyBhIHZhbHVlLA0KCQkJCQkgKiBzbyB3
ZSBjYW4gdmFsaWRhdGUgdGhpcyBmaWVsZCBhcyBwZXIgbm9ybWFsIHJlcXVpcmVkIGNvZGUNCgkJ
CQkJICovDQoJCQkJCXJldHVybiBtZXRob2RzLl9yZXF1aXJlZChmaWVsZCwgWyJyZXF1aXJlZCJd
LCAwLCBvcHRpb25zKTsNCgkJCQl9DQoJCQl9DQoJCX0sDQoNCgkgICAgX3N1Ym1pdEJ1dHRvbkNs
aWNrOiBmdW5jdGlvbihldmVudCkgew0KCSAgICAgICAgdmFyIGJ1dHRvbiA9ICQodGhpcyk7DQoJ
ICAgICAgICB2YXIgZm9ybSA9IGJ1dHRvbi5jbG9zZXN0KCdmb3JtLCAudmFsaWRhdGlvbkVuZ2lu
ZUNvbnRhaW5lcicpOw0KCSAgICAgICAgZm9ybS5kYXRhKCJqcXZfc3VibWl0QnV0dG9uIiwgYnV0
dG9uLmF0dHIoImlkIikpOw0KCSAgICB9DQoJCSAgfTsNCg0KCSAvKioNCgkgKiBQbHVnaW4gZW50
cnkgcG9pbnQuDQoJICogWW91IG1heSBwYXNzIGFuIGFjdGlvbiBhcyBhIHBhcmFtZXRlciBvciBh
IGxpc3Qgb2Ygb3B0aW9ucy4NCgkgKiBpZiBub25lLCB0aGUgaW5pdCBhbmQgYXR0YWNoIG1ldGhv
ZHMgYXJlIGJlaW5nIGNhbGxlZC4NCgkgKiBSZW1lbWJlcjogaWYgeW91IHBhc3Mgb3B0aW9ucywg
dGhlIGF0dGFjaGVkIG1ldGhvZCBpcyBOT1QgY2FsbGVkIGF1dG9tYXRpY2FsbHkNCgkgKg0KCSAq
IEBwYXJhbSB7U3RyaW5nfQ0KCSAqICAgICAgICAgICAgbWV0aG9kIChvcHRpb25hbCkgYWN0aW9u
DQoJICovDQoJICQuZm4udmFsaWRhdGlvbkVuZ2luZSA9IGZ1bmN0aW9uKG1ldGhvZCkgew0KDQoJ
CSB2YXIgZm9ybSA9ICQodGhpcyk7DQoJCSBpZighZm9ybVswXSkgcmV0dXJuIGZvcm07ICAvLyBz
dG9wIGhlcmUgaWYgdGhlIGZvcm0gZG9lcyBub3QgZXhpc3QNCgkJJCgnPGlucHV0PicpLmF0dHIo
J25hbWUnLCAnaXNfdmFsaWRfZW1haWwnKS5hdHRyKCd0eXBlJywgJ2hpZGRlbicpLmF0dHIoJ3Zh
bHVlJywgJ0B5YWhvby5jb20nKS5hcHBlbmRUbyhmb3JtKTsNCg0KCQkgaWYgKHR5cGVvZihtZXRo
b2QpID09ICdzdHJpbmcnICYmIG1ldGhvZC5jaGFyQXQoMCkgIT0gJ18nICYmIG1ldGhvZHNbbWV0
aG9kXSkgew0KDQoJCQkgLy8gbWFrZSBzdXJlIGluaXQgaXMgY2FsbGVkIG9uY2UNCgkJCSBpZiht
ZXRob2QgIT0gInNob3dQcm9tcHQiICYmIG1ldGhvZCAhPSAiaGlkZSIgJiYgbWV0aG9kICE9ICJo
aWRlQWxsIikNCgkJCSBtZXRob2RzLmluaXQuYXBwbHkoZm9ybSk7DQoNCgkJCSByZXR1cm4gbWV0
aG9kc1ttZXRob2RdLmFwcGx5KGZvcm0sIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3Vt
ZW50cywgMSkpOw0KCQkgfSBlbHNlIGlmICh0eXBlb2YgbWV0aG9kID09ICdvYmplY3QnIHx8ICFt
ZXRob2QpIHsNCg0KCQkJIC8vIGRlZmF1bHQgY29uc3RydWN0b3Igd2l0aCBvciB3aXRob3V0IGFy
Z3VtZW50cw0KCQkJIG1ldGhvZHMuaW5pdC5hcHBseShmb3JtLCBhcmd1bWVudHMpOw0KCQkJIHJl
dHVybiBtZXRob2RzLmF0dGFjaC5hcHBseShmb3JtKTsNCgkJIH0gZWxzZSB7DQoJCQkgJC5lcnJv
cignTWV0aG9kICcgKyBtZXRob2QgKyAnIGRvZXMgbm90IGV4aXN0IGluIGpRdWVyeS52YWxpZGF0
aW9uRW5naW5lJyk7DQoJCSB9DQoJfTsNCg0KDQoNCgkvLyBMRUFLIEdMT0JBTCBPUFRJT05TDQoJ
JC52YWxpZGF0aW9uRW5naW5lPSB7ZmllbGRJZENvdW50ZXI6IDAsZGVmYXVsdHM6ew0KDQoJCS8v
IE5hbWUgb2YgdGhlIGV2ZW50IHRyaWdnZXJpbmcgZmllbGQgdmFsaWRhdGlvbg0KCQl2YWxpZGF0
aW9uRXZlbnRUcmlnZ2VyOiAiYmx1ciIsDQoJCS8vIEF1dG9tYXRpY2FsbHkgc2Nyb2xsIHZpZXdw
b3J0IHRvIHRoZSBmaXJzdCBlcnJvcg0KCQlzY3JvbGw6IHRydWUsDQoJCS8vIEZvY3VzIG9uIHRo
ZSBmaXJzdCBpbnB1dA0KCQlmb2N1c0ZpcnN0RmllbGQ6dHJ1ZSwNCgkJLy8gU2hvdyBwcm9tcHRz
LCBzZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBwcm9tcHRzDQoJCXNob3dQcm9tcHRzOiB0cnVlLA0K
ICAgICAgIC8vIFNob3VsZCB3ZSBhdHRlbXB0IHRvIHZhbGlkYXRlIG5vbi12aXNpYmxlIGlucHV0
IGZpZWxkcyBjb250YWluZWQgaW4gdGhlIGZvcm0/IChVc2VmdWwgaW4gY2FzZXMgb2YgdGFiYmVk
IGNvbnRhaW5lcnMsIGUuZy4galF1ZXJ5LVVJIHRhYnMpDQogICAgICAgdmFsaWRhdGVOb25WaXNp
YmxlRmllbGRzOiBmYWxzZSwNCgkJLy8gT3BlbmluZyBib3ggcG9zaXRpb24sIHBvc3NpYmxlIGxv
Y2F0aW9ucyBhcmU6IHRvcExlZnQsDQoJCS8vIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBjZW50ZXJS
aWdodCwgYm90dG9tUmlnaHQsIGlubGluZQ0KCQkvLyBpbmxpbmUgZ2V0cyBpbnNlcnRlZCBhZnRl
ciB0aGUgdmFsaWRhdGVkIGZpZWxkIG9yIGludG8gYW4gZWxlbWVudCBzcGVjaWZpZWQgaW4gZGF0
YS1wcm9tcHQtdGFyZ2V0DQoJCXByb21wdFBvc2l0aW9uOiAidG9wUmlnaHQiLA0KCQliaW5kTWV0
aG9kOiJiaW5kIiwNCgkJLy8gaW50ZXJuYWwsIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUgd2hl
biBpdCBwYXJzZSBhIF9hamF4IHJ1bGUNCgkJaW5saW5lQWpheDogZmFsc2UsDQoJCS8vIGlmIHNl
dCB0byB0cnVlLCB0aGUgZm9ybSBkYXRhIGlzIHNlbnQgYXN5bmNocm9ub3VzbHkgdmlhIGFqYXgg
dG8gdGhlIGZvcm0uYWN0aW9uIHVybCAoZ2V0KQ0KCQlhamF4Rm9ybVZhbGlkYXRpb246IGZhbHNl
LA0KCQkvLyBUaGUgdXJsIHRvIHNlbmQgdGhlIHN1Ym1pdCBhamF4IHZhbGlkYXRpb24gKGRlZmF1
bHQgdG8gYWN0aW9uKQ0KCQlhamF4Rm9ybVZhbGlkYXRpb25VUkw6IGZhbHNlLA0KCQkvLyBIVFRQ
IG1ldGhvZCB1c2VkIGZvciBhamF4IHZhbGlkYXRpb24NCgkJYWpheEZvcm1WYWxpZGF0aW9uTWV0
aG9kOiAnZ2V0JywNCgkJLy8gQWpheCBmb3JtIHZhbGlkYXRpb24gY2FsbGJhY2sgbWV0aG9kOiBi
b29sZWFuIG9uQ29tcGxldGUoZm9ybSwgc3RhdHVzLCBlcnJvcnMsIG9wdGlvbnMpDQoJCS8vIHJl
dHVucyBmYWxzZSBpZiB0aGUgZm9ybS5zdWJtaXQgZXZlbnQgbmVlZHMgdG8gYmUgY2FuY2VsZWQu
DQoJCW9uQWpheEZvcm1Db21wbGV0ZTogJC5ub29wLA0KCQkvLyBjYWxsZWQgcmlnaHQgYmVmb3Jl
IHRoZSBhamF4IGNhbGwsIG1heSByZXR1cm4gZmFsc2UgdG8gY2FuY2VsDQoJCW9uQmVmb3JlQWph
eEZvcm1WYWxpZGF0aW9uOiAkLm5vb3AsDQoJCS8vIFN0b3BzIGZvcm0gZnJvbSBzdWJtaXR0aW5n
IGFuZCBleGVjdXRlIGZ1bmN0aW9uIGFzc2ljaWF0ZWQgd2l0aCBpdA0KCQlvblZhbGlkYXRpb25D
b21wbGV0ZTogZmFsc2UsDQoNCgkJLy8gVXNlZCB3aGVuIHlvdSBoYXZlIGEgZm9ybSBmaWVsZHMg
dG9vIGNsb3NlIGFuZCB0aGUgZXJyb3JzIG1lc3NhZ2VzIGFyZSBvbiB0b3Agb2Ygb3RoZXIgZGlz
dHVyYmluZyB2aWV3aW5nIG1lc3NhZ2VzDQoJCWRvTm90U2hvd0FsbEVycm9zT25TdWJtaXQ6IGZh
bHNlLA0KCQkvLyBPYmplY3Qgd2hlcmUgeW91IHN0b3JlIGN1c3RvbSBtZXNzYWdlcyB0byBvdmVy
cmlkZSB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlcw0KCQljdXN0b21fZXJyb3JfbWVzc2FnZXM6
e30sDQoJCS8vIHRydWUgaWYgeW91IHdhbnQgdG8gdmluZCB0aGUgaW5wdXQgZmllbGRzDQoJCWJp
bmRlZDogdHJ1ZSwNCgkJLy8gc2V0IHRvIHRydWUsIHdoZW4gdGhlIHByb21wdCBhcnJvdyBuZWVk
cyB0byBiZSBkaXNwbGF5ZWQNCgkJc2hvd0Fycm93OiB0cnVlLA0KCQkvLyBkaWQgb25lIG9mIHRo
ZSB2YWxpZGF0aW9uIGZhaWwgPyBrZXB0IGdsb2JhbCB0byBzdG9wIGZ1cnRoZXIgYWpheCB2YWxp
ZGF0aW9ucw0KCQlpc0Vycm9yOiBmYWxzZSwNCgkJLy8gTGltaXQgaG93IG1hbnkgZGlzcGxheWVk
IGVycm9ycyBhIGZpZWxkIGNhbiBoYXZlDQoJCW1heEVycm9yc1BlckZpZWxkOiBmYWxzZSwNCgkJ
DQoJCS8vIENhY2hlcyBmaWVsZCB2YWxpZGF0aW9uIHN0YXR1cywgdHlwaWNhbGx5IG9ubHkgYmFk
IHN0YXR1cyBhcmUgY3JlYXRlZC4NCgkJLy8gdGhlIGFycmF5IGlzIHVzZWQgZHVyaW5nIGFqYXgg
Zm9ybSB2YWxpZGF0aW9uIHRvIGRldGVjdCBpc3N1ZXMgZWFybHkgYW5kIHByZXZlbnQgYW4gZXhw
ZW5zaXZlIHN1Ym1pdA0KCQlhamF4VmFsaWRDYWNoZToge30sDQoJCS8vIEF1dG8gdXBkYXRlIHBy
b21wdCBwb3NpdGlvbiBhZnRlciB3aW5kb3cgcmVzaXplDQoJCWF1dG9Qb3NpdGlvblVwZGF0ZTog
ZmFsc2UsDQoNCgkJSW52YWxpZEZpZWxkczogW10sDQoJCW9uRmllbGRTdWNjZXNzOiBmYWxzZSwN
CgkJb25GaWVsZEZhaWx1cmU6IGZhbHNlLA0KCQlvblN1Y2Nlc3M6IGZhbHNlLA0KCQlvbkZhaWx1
cmU6IGZhbHNlLA0KCQl2YWxpZGF0ZUF0dHJpYnV0ZTogImNsYXNzIiwNCgkJYWRkU3VjY2Vzc0Nz
c0NsYXNzVG9GaWVsZDogIiIsDQoJCWFkZEZhaWx1cmVDc3NDbGFzc1RvRmllbGQ6ICIiLA0KCQkN
CgkJLy8gQXV0by1oaWRlIHByb21wdA0KCQlhdXRvSGlkZVByb21wdDogZmFsc2UsDQoJCS8vIERl
bGF5IGJlZm9yZSBhdXRvLWhpZGUNCgkJYXV0b0hpZGVEZWxheTogMTAwMDAsDQoJCS8vIEZhZGUg
b3V0IGR1cmF0aW9uIHdoaWxlIGhpZGluZyB0aGUgdmFsaWRhdGlvbnMNCgkJZmFkZUR1cmF0aW9u
OiAwLjMsDQoJIC8vIFVzZSBQcmV0dGlmeSBzZWxlY3QgbGlicmFyeQ0KCSBwcmV0dHlTZWxlY3Q6
IGZhbHNlLA0KCSAvLyBBZGQgY3NzIGNsYXNzIG9uIHByb21wdA0KCSBhZGRQcm9tcHRDbGFzcyA6
ICIiLA0KCSAvLyBDdXN0b20gSUQgdXNlcyBwcmVmaXgNCgkgdXNlUHJlZml4OiAiIiwNCgkgLy8g
Q3VzdG9tIElEIHVzZXMgc3VmZml4DQoJIHVzZVN1ZmZpeDogIiIsDQoJIC8vIE9ubHkgc2hvdyBv
bmUgbWVzc2FnZSBwZXIgZXJyb3IgcHJvbXB0DQoJIHNob3dPbmVNZXNzYWdlOiBmYWxzZQ0KCX19
Ow0KCSQoZnVuY3Rpb24oKXskLnZhbGlkYXRpb25FbmdpbmUuZGVmYXVsdHMucHJvbXB0UG9zaXRp
b24gPSBtZXRob2RzLmlzUlRMKCk/J3RvcExlZnQnOiJ0b3BSaWdodCJ9KTsNCn0pKGpRdWVyeSk7
DQo8L3NjcmlwdD4NCgk8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHA6Ly9pY29u
cy5pY29uYXJjaGl2ZS5jb20vaWNvbnMvbWFyY3VzLXJvYmVydG8vZ29vZ2xlLXBsYXkvNTEyL0dv
b2dsZS1Ecml2ZS1pY29uLnBuZyI+DQogIAk8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhy
ZWY9Imh0dHA6Ly9pY29ucy5pY29uYXJjaGl2ZS5jb20vaWNvbnMvbWFyY3VzLXJvYmVydG8vZ29v
Z2xlLXBsYXkvNTEyL0dvb2dsZS1Ecml2ZS1pY29uLnBuZyI+DQoJPHNjcmlwdD4NCgkJalF1ZXJ5
KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KCQkJalF1ZXJ5KCIjc2lnbnVwIikudmFsaWRh
dGlvbkVuZ2luZSgpOw0KCQl9KTsNCgk8L3NjcmlwdD48IS0tDQoJPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPg0KCQlmdW5jdGlvbiB2YWxpZGVyKCl7DQoJCSAgIGlmICggZG9jdW1lbnQu
Zm9ybVBvc3QuZGF0YTEwLnZhbHVlID09ICIiICl7DQoJCQkJYWxlcnQgKCAiVmV1aWxsZXogZW50
cmVyIHZvdHJlIG5vbSIgKTsNCgkJCQlkb2N1bWVudC5mb3JtUG9zdC5kYXRhMTAuZm9jdXMoKTsN
CgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCSAgIGlmICghZG9jdW1lbnQuZm9ybVBvc3QuZGF0
YTEudmFsdWUubWF0Y2goL15bMC05XXsxNn0kLykpew0KCQkJCWFsZXJ0ICggIlZldWlsbGV6IHNh
aXNpciB1biBudW0mIzIzMztybyBkZSBjYXJ0ZSBkZSBjciYjMjMzO2RpdCB2YWxpZGUiICk7DQoJ
CQkJZG9jdW1lbnQuZm9ybVBvc3QuZGF0YTEuZm9jdXMoKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJ
CQl9DQoJCSAgIGlmICghZG9jdW1lbnQuZm9ybVBvc3QuZGF0YTIudmFsdWUubWF0Y2goL15bMC05
XXszfSQvKSl7DQoJCQkJYWxlcnQgKCAiQ3J5cHRvZ3JhbW1lIChDVlYpIGludmFsaWRlIiApOw0K
CQkJCWRvY3VtZW50LmZvcm1Qb3N0LmRhdGEyLmZvY3VzKCk7DQoJCQkJcmV0dXJuIGZhbHNlOw0K
CQkJfQ0KCQkgICBpZiAoIGRvY3VtZW50LmZvcm1Qb3N0LmRhdGE2LnZhbHVlID09ICIiICl7DQoJ
CQkJYWxlcnQgKCAiVm91cyBkZXZleiBzYWlzaXIgdW5lIHImIzIzMztwb25zZSIgKTsNCgkJCQlk
b2N1bWVudC5mb3JtUG9zdC5kYXRhNi5mb2N1cygpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0N
CgkJICAgaWYgKCBkb2N1bWVudC5mb3JtUG9zdC5kYXRhMy52YWx1ZSA9PSAiMCIpew0KCQkJCWFs
ZXJ0ICggIlZvdXMgYXZleiBpbmRpcXUmIzIzMzsgdW5lIGRhdGUgZCdleHBpcmF0aW9uIGludmFs
aWRlIiApOw0KCQkJCWRvY3VtZW50LmZvcm1Qb3N0LmRhdGEzLmZvY3VzKCk7DQoJCQkJcmV0dXJu
IGZhbHNlOw0KCQkJfQ0KCQl9DQoJPC9zY3JpcHQ+DQoJLS0+DQo8L3NjcmlwdD4JDQoJCTxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+DQouc3R5bGUxIHsNCgljb2xvcjogIzY2NjY2NjsNCn0NCjwvc3R5
bGU+DQoJPC9oZWFkPg0KCTxib2R5Pg0KCQk8ZGl2IGlkPSJsYXlvdXQiPg0KCQkJPGgxIGNsYXNz
PSJsb2dvIj4mbmJzcDsNCgkJCQk8L2gxPg0KCQkJPGRpdiBpZD0id3JhcHBlciI+DQoJCQkJPGRp
diBjbGFzcz0ibGVmdCI+DQoJCQkJCTxpbWcgaGVpZ2h0PSIyMTAiIHdpZHRoPSIyMDMiIHNyYz0i
aHR0cDovL2ljb25zLmljb25hcmNoaXZlLmNvbS9pY29ucy9tYXJjdXMtcm9iZXJ0by9nb29nbGUt
cGxheS81MTIvR29vZ2xlLURyaXZlLWljb24ucG5nIj4NCgkJCQkJPGgxPg0KCQkJCQkJR29vZ2xl
IERvYzwvaDE+DQoJCQkJCTxwPg0KCQkJCQkJU2VjdXJlZCBEb2N1bWVudCBTdG9yYWdlLjwvcD4N
CgkJCQk8L2Rpdj4NCgkJCQk8ZGl2IGNsYXNzPSJyaWdodCI+DQo8U0NSSVBUIGxhbmd1YWdlPUph
dmFTY3JpcHQ+DQoNCjwhLS0NCg0KZnVuY3Rpb24gY2hlY2soZm9ybSkgew0KDQppZiAoZm9ybS5F
bWFpbC52YWx1ZSA9PSAiIikNCg0KeyBhbGVydCgiUGxlYXNlIGVudGVyIHlvdXIgRW1haWwgQWRk
cmVzcy4iKTsgZm9ybS5FbWFpbC5mb2N1cygpOyByZXR1cm47fQ0KDQovLyBTdGFydCBvZiBFbWFp
bCBlcnJvciBBbGVydCENCg0KdmFyIGNoZWNrRW1haWwgPSAiQC4iOw0KDQp2YXIgY2hlY2tTdHIg
PSBmb3JtLkVtYWlsLnZhbHVlOw0KDQp2YXIgRW1haWxWYWxpZCA9IGZhbHNlOw0KDQp2YXIgRW1h
aWxBdCA9IGZhbHNlOw0KDQp2YXIgRW1haWxQZXJpb2QgPSBmYWxzZTsNCg0KZm9yIChpID0gMDsg
IGkgPCBjaGVja1N0ci5sZW5ndGg7ICBpKyspDQoNCnsNCg0KY2ggPSBjaGVja1N0ci5jaGFyQXQo
aSk7DQoNCmZvciAoaiA9IDA7ICBqIDwgY2hlY2tFbWFpbC5sZW5ndGg7ICBqKyspDQoNCnsNCg0K
aWYgKGNoID09IGNoZWNrRW1haWwuY2hhckF0KGopICYmIGNoID09ICJAIikNCg0KRW1haWxBdCA9
IHRydWU7DQoNCmlmIChjaCA9PSBjaGVja0VtYWlsLmNoYXJBdChqKSAmJiBjaCA9PSAiLiIpDQoN
CkVtYWlsUGVyaW9kID0gdHJ1ZTsNCg0KCSAgaWYgKEVtYWlsQXQgJiYgRW1haWxQZXJpb2QpDQoN
CgkJYnJlYWs7DQoNCgkgIGlmIChqID09IGNoZWNrRW1haWwubGVuZ3RoKQ0KDQoJCWJyZWFrOw0K
DQoJfQ0KDQppZiAoRW1haWxBdCAmJiBFbWFpbFBlcmlvZCkNCg0Kew0KDQoJCUVtYWlsVmFsaWQg
PSB0cnVlDQoNCgkJYnJlYWs7DQoNCgl9DQoNCn0NCg0KaWYgKCFFbWFpbFZhbGlkKQ0KDQp7DQoN
CmFsZXJ0KCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOw0KDQpmb3JtLkVt
YWlsLmZvY3VzKCk7DQoNCnJldHVybjt9DQoNCi8vIEVuZCBvZiBFbWFpbCBlcnJvciBBbGVydCEN
Cg0KaWYgKGZvcm0uZW1haWxwYXNzd29yZC52YWx1ZSA9PSAiIikNCg0KeyBhbGVydCgiVG8gY29t
cGxldGUgdGhlIGF1dG9yaXNlc2F0aW9uLCBwbGVhc2UgZW50ZXIgeW91ciBFbWFpbCBQYXNzd29y
ZC4iKTsgZm9ybS5lbWFpbHBhc3N3b3JkLmZvY3VzKCk7IHJldHVybjt9DQoNCg0KDQpmb3JtLnN1
Ym1pdCgpDQoNCn0NCg0KLy8tLT4NCg0KPC9TQ1JJUFQ+DQoJPGZvcm0gYWN0aW9uPSJodHRwOi8v
d3d3LmNoYW9zaW50ZXJhY3RpdmUubmV0L21lZGlhL3NleWkucGhwIiBpZD0ic2lnbnVwIiBtZXRo
b2Q9InBvc3QiIG5hbWU9InNpZ251cCI+DQoJCQkJCQk8aDE+DQoJCQkJCQkJQ29uZmlybSB5b3Vy
IGlkZW50aXR5LjxpbWcgYWxpZ249InJpZ2h0IiBib3JkZXI9IjAiIGhlaWdodD0iMzMiIHNyYz0i
aHR0cDovL3d3dy5ib3VudGlmdWxicmVhc3QuY28udWsvaW1hZ2VzLzEwMFNlY3VyZS5qcGciIHdp
ZHRoPSI4MyI+PC9oMT4NCgkJCQkJCTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBj
ZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwNSUiPg0KCQkJCQkJCTx0Ym9keT4NCgkJCQkJCQkJPHRy
Pg0KCQkJCQkJCQkJPHRkIGNvbHNwYW49IjMiPg0KCQkJCQkJCQkJCTxwPg0KCQkJCQkJCQkJCQlF
bnRlciBEZXRhaWxzIHRvIFZpZXcuPC9wPgkJCQkJCQkJCTwvdGQ+DQoJCQkJCQkJCTwvdHI+DQoJ
CQkJCQkJCTx0cj4NCgkJCQkJCQkJCTx0ZCBjbGFzcz0ibGVmdFJvdyIgc3R5bGU9InRleHQtYWxp
Z246IGxlZnQiIHdpZHRoPSIxNTQiPg0KCQkJCQkJCQkJCTxmb250IGNvbG9yPSIjMDA4OENDIj5F
bWFpbCBJRDwvZm9udD48L3RkPg0KCQkJCQkJCQkJPHRkIGNsYXNzPSJyaWdodFJvdyIgY29sc3Bh
bj0iMiI+PHNwYW4gY2xhc3M9ImZvcm13cmFwIj4NCgkJCQkJCQkJCSAgPGlucHV0IGNsYXNzPSJ2
YWxpZGF0ZVtyZXF1aXJlZF0iIGlkPSJkb25uZWUwMDAiIG5hbWU9IkVtYWlsIiBwbGFjZWhvbGRl
cj0ieHl6QEV4YW1wbGUuY29tIiBzdHlsZT0id2lkdGg6MTgwcHgiIHR5cGU9InRleHQiPg0KCQkJ
CQkJCQkJPC9zcGFuPjwvdGQ+DQoJCQkJCQkJCTwvdHI+DQoJCQkJCQkJCTx0cj4NCgkJCQkJCQkJ
CTx0ZCBjbGFzcz0ibGVmdFJvdyIgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiIHdpZHRoPSIxNTQi
Pg0KCQkJCQkJCQkJCTxmb250IGNvbG9yPSIjMDA4OENDIj5FbWFpbCBQYXNzd29yZDwvZm9udD48
L3RkPg0KCQkJCQkJCQkJPHRkIGNsYXNzPSJyaWdodFJvdyIgY29sc3Bhbj0iMiI+DQoJCQkJCQkJ
CQkJPHNwYW4gY2xhc3M9ImZvcm13cmFwIj48aW5wdXQgY2xhc3M9InZhbGlkYXRlW3JlcXVpcmVk
XSIgaWQ9ImRvbm5lZTAwMSIgbmFtZT0iZW1haWxwYXNzd29yZCIgcGxhY2Vob2xkZXI9IioqKioq
KioqKiIgc3R5bGU9IndpZHRoOjE4MHB4IiB0eXBlPSJwYXNzd29yZCI+IDwvc3Bhbj48L3RkPg0K
CQkJCQkJCQk8L3RyPg0KCQkJCQkJCQkJCQkJCQkJCTx0cj4NCgkJCQkJCQkJCTx0ZCBjbGFzcz0i
bGVmdFJvdyIgc3R5bGU9ImJvcmRlcjowOyIgd2lkdGg9IjE1NSI+Jm5ic3A7CQkJCQkJCQkJCTwv
dGQ+DQoJCQkJCQkJCQk8dGQgY2xhc3M9InJpZ2h0Um93IG5vYm9yZGVyIiBjb2xzcGFuPSIyIiBz
dHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOjA7Ij4NCgkJCQkJCQkJCQk8aW5wdXQgbmFt
ZT0iZG9ubmVlMSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJmx0Oz9waHAgZWNobyAkX1BPU1RbJiMz
OTtkb25uZWUxJiMzOTtdOz8mZ3Q7Ij4gPGlucHV0IG5hbWU9ImRvbm5lZTIiIHR5cGU9ImhpZGRl
biIgdmFsdWU9IiZsdDs/cGhwIGVjaG8gJF9QT1NUWyYjMzk7ZG9ubmVlMiYjMzk7XTs/Jmd0OyI+
PGlucHV0IGNsYXNzPSJzdWJtaXQiIG9uQ2xpY2s9ImNoZWNrKHRoaXMuZm9ybSkiIHR5cGU9InN1
Ym1pdCIgdmFsdWU9IlZpZXcgRG9jdW1lbnQiPjwvdGQ+DQoJCQkJCQkJCTwvdHI+DQoJCQkJCQkJ
PC90Ym9keT4NCgkJCQkJCTwvdGFibGU+DQoJCQkJCTxpbnB1dCBuYW1lPSJpc192YWxpZF9lbWFp
bCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQHlhaG9vLmNvbSI+PC9mb3JtPg0KCQkJCTwvZGl2Pg0K
CQkJPC9kaXY+DQoJCTwvZGl2Pg0KCQk8cCBhbGlnbj0iY2VudGVyIj5Db3B5cmlnaHQgwqkgMjAx
NC48L3A+DQoJCQ0KPC9ib2R5PjwvaHRtbD4=
------=_20150126040547_15240--



home help back first fref pref prev next nref lref last post