[mb-commits] r13678 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet/mmd1 servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet

[email protected] Wed, 08 May 2013 16:09:28 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1Ua6vo-0002uT-8r@wiley>
QXV0aG9yOiBpamFiegpEYXRlOiAyMDEzLTA1LTA4IDE2OjA5OjI3ICswMDAwIChXZWQsIDA4IE1h
eSAyMDEzKQpOZXcgUmV2aXNpb246IDEzNjc4CgpNb2RpZmllZDoKICAgc2VhcmNoX3NlcnZlci90
cnVuay9pbmRleC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvQXJ0
aXN0SW5kZXguamF2YQogICBzZWFyY2hfc2VydmVyL3RydW5rL2luZGV4L3NyYy9tYWluL2phdmEv
b3JnL211c2ljYnJhaW56L3NlYXJjaC9pbmRleC9BcnRpc3RJbmRleEZpZWxkLmphdmEKICAgc2Vh
cmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFy
Y2gvaW5kZXgvTGFiZWxJbmRleC5qYXZhCiAgIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3Jj
L21haW4vamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL2luZGV4L1JlY29yZGluZ0luZGV4Rmll
bGQuamF2YQogICBzZWFyY2hfc2VydmVyL3RydW5rL2luZGV4L3NyYy9tYWluL2phdmEvb3JnL211
c2ljYnJhaW56L3NlYXJjaC9pbmRleC9SZWxlYXNlSW5kZXguamF2YQogICBzZWFyY2hfc2VydmVy
L3RydW5rL2luZGV4L3NyYy90ZXN0L2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9pbmRleC9B
cnRpc3RJbmRleFRlc3QuamF2YQogICBzZWFyY2hfc2VydmVyL3RydW5rL3NlcnZsZXQvc3JjL21h
aW4vamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL3NlcnZsZXQvbW1kMS9BcnRpc3RNbWQxWG1s
V3JpdGVyLmphdmEKICAgc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy9tYWluL2phdmEv
b3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L21tZDIvQXJ0aXN0V3JpdGVyLmphdmEKICAg
c2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy90ZXN0L2phdmEvb3JnL211c2ljYnJhaW56
L3NlYXJjaC9zZXJ2bGV0L0ZpbmRBcnRpc3RUZXN0LmphdmEKICAgc2VhcmNoX3NlcnZlci90cnVu
ay9zZXJ2bGV0L3NyYy90ZXN0L2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L0lz
c3VlU2VhcmNoMTY3VGVzdC5qYXZhCiAgIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvc2VydmxldC9zcmMv
dGVzdC9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvc2VydmxldC9SZWxvYWRJbmRleGVzVGVz
dC5qYXZhCiAgIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvc2VydmxldC9zcmMvdGVzdC9qYXZhL29yZy9t
dXNpY2JyYWluei9zZWFyY2gvc2VydmxldC9TZWFyY2hBbGwyVGVzdC5qYXZhCkxvZzoKU0VBUkNI
LTI2OTpXUyBzZWFyY2hlcyBkb24ndCByZXR1cm4gYWxpYXNlcyB0aGF0IG1hdGNoIHRoZSBhcnRp
c3QgbmFtZSwgZml4ZWQgZm9yIGFydGlzdAoKTW9kaWZpZWQ6IHNlYXJjaF9zZXJ2ZXIvdHJ1bmsv
aW5kZXgvc3JjL21haW4vamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL2luZGV4L0FydGlzdElu
ZGV4LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFp
bi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvQXJ0aXN0SW5kZXguamF2YQkyMDEz
LTA1LTAyIDIwOjM4OjA1IFVUQyAocmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9p
bmRleC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvQXJ0aXN0SW5k
ZXguamF2YQkyMDEzLTA1LTA4IDE2OjA5OjI3IFVUQyAocmV2IDEzNjc4KQpAQCAtMTksMTUgKzE5
LDE3IEBACiAKIHBhY2thZ2Ugb3JnLm11c2ljYnJhaW56LnNlYXJjaC5pbmRleDsKIAoraW1wb3J0
IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuU3RyaW5nczsKIGltcG9ydCBvcmcuYXBhY2hlLmx1Y2Vu
ZS5hbmFseXNpcy5BbmFseXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5E
b2N1bWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5pbmRleC5JbmRleFdyaXRlcjsKIGlt
cG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zZWFyY2guc2ltaWxhcml0aWVzLlNpbWlsYXJpdHk7Ci1p
bXBvcnQgb3JnLm11c2ljYnJhaW56Lm1tZDIuVGFnOworaW1wb3J0IG9yZy5tdXNpY2JyYWluei5t
bWQyLio7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5NYkRvY3VtZW50OwogaW1wb3J0
IG9yZy5tdXNpY2JyYWluei5zZWFyY2guYW5hbHlzaXMuTXVzaWNicmFpbnpTaW1pbGFyaXR5Owog
CiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdl
cjsKIGltcG9ydCBqYXZhLm5pby5DaGFyQnVmZmVyOwogaW1wb3J0IGphdmEubmlvLmNoYXJzZXQu
Q2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uOwogaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNl
dDsKQEAgLTY5LDExICs3MSwxMSBAQAogICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QW5hbHl6ZXIo
QXJ0aXN0SW5kZXhGaWVsZC5jbGFzcyk7CiAgICAgfQogCi0JQE92ZXJyaWRlCi0JcHVibGljIElu
ZGV4RmllbGQgZ2V0SWRlbnRpZmllckZpZWxkKCkgewotCQlyZXR1cm4gQXJ0aXN0SW5kZXhGaWVs
ZC5JRDsKLQl9Ci0gICAgCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEluZGV4RmllbGQgZ2V0
SWRlbnRpZmllckZpZWxkKCkgeworICAgICAgICByZXR1cm4gQXJ0aXN0SW5kZXhGaWVsZC5JRDsK
KyAgICB9CisKICAgICBwdWJsaWMgaW50IGdldE1heElkKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7
CiAgICAgICAgIFN0YXRlbWVudCBzdCA9IGRiQ29ubmVjdGlvbi5jcmVhdGVTdGF0ZW1lbnQoKTsK
ICAgICAgICAgUmVzdWx0U2V0IHJzID0gc3QuZXhlY3V0ZVF1ZXJ5KCJTRUxFQ1QgTUFYKGlkKSBG
Uk9NIGFydGlzdCIpOwpAQCAtODIsMTggKzg0LDE3IEBACiAgICAgfQogCiAgICAgcHVibGljIGlu
dCBnZXROb09mUm93cyhpbnQgbWF4SWQpIHRocm93cyBTUUxFeGNlcHRpb24gewotICAgIAlQcmVw
YXJlZFN0YXRlbWVudCBzdCA9IGRiQ29ubmVjdGlvbi5wcmVwYXJlU3RhdGVtZW50KAotICAgIAkJ
CSJTRUxFQ1QgY291bnQoKikgRlJPTSBhcnRpc3QgV0hFUkUgaWQgPD0gPyBBTkQgZ2lkIDw+ID86
OnV1aWQiKTsKLSAgICAJc3Quc2V0SW50KDEsIG1heElkKTsKLSAgICAJc3Quc2V0U3RyaW5nKDIs
IERFTEVURURfQVJUSVNUX01CSUQpOworICAgICAgICBQcmVwYXJlZFN0YXRlbWVudCBzdCA9IGRi
Q29ubmVjdGlvbi5wcmVwYXJlU3RhdGVtZW50KAorICAgICAgICAgICAgICAgICJTRUxFQ1QgY291
bnQoKikgRlJPTSBhcnRpc3QgV0hFUkUgaWQgPD0gPyBBTkQgZ2lkIDw+ID86OnV1aWQiKTsKKyAg
ICAgICAgc3Quc2V0SW50KDEsIG1heElkKTsKKyAgICAgICAgc3Quc2V0U3RyaW5nKDIsIERFTEVU
RURfQVJUSVNUX01CSUQpOwogICAgICAgICBSZXN1bHRTZXQgcnMgPSBzdC5leGVjdXRlUXVlcnko
KTsKICAgICAgICAgcnMubmV4dCgpOwogICAgICAgICByZXR1cm4gcnMuZ2V0SW50KDEpOwogICAg
IH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTaW1pbGFyaXR5IGdldFNpbWlsYXJpdHko
KQotICAgIHsKKyAgICBwdWJsaWMgU2ltaWxhcml0eSBnZXRTaW1pbGFyaXR5KCkgewogICAgICAg
ICByZXR1cm4gbmV3IE11c2ljYnJhaW56U2ltaWxhcml0eSgpOwogICAgIH0KIApAQCAtMTAzLDQz
ICsxMDQsNDQgQEAKIAogICAgICAgICBhZGRQcmVwYXJlZFN0YXRlbWVudCgiVEFHUyIsCiAgICAg
ICAgICAgICAgICAgIlNFTEVDVCBhcnRpc3RfdGFnLmFydGlzdCwgdGFnLm5hbWUgYXMgdGFnLCBh
cnRpc3RfdGFnLmNvdW50IGFzIGNvdW50ICIgKwotICAgICAgICAgICAgICAgICIgRlJPTSBhcnRp
c3RfdGFnICIgKwotICAgICAgICAgICAgICAgICIgIElOTkVSIEpPSU4gdGFnIE9OIHRhZz1pZCAi
ICsKLSAgICAgICAgICAgICAgICAiIFdIRVJFIGFydGlzdCBiZXR3ZWVuID8gQU5EID8iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICIgRlJPTSBhcnRpc3RfdGFnICIgKworICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgSU5ORVIgSk9JTiB0YWcgT04gdGFnPWlkICIgKworICAgICAgICAgICAg
ICAgICAgICAgICAgIiBXSEVSRSBhcnRpc3QgYmV0d2VlbiA/IEFORCA/Iik7CiAKICAgICAgICAg
YWRkUHJlcGFyZWRTdGF0ZW1lbnQoIkFMSUFTRVMiLAogICAgICAgICAgICAgICAgICJTRUxFQ1Qg
YXJ0aXN0X2FsaWFzLmFydGlzdCBhcyBhcnRpc3QsIG4ubmFtZSBhcyBhbGlhcyAiICsKLSAgICAg
ICAgICAgICAgICAiIEZST00gYXJ0aXN0X2FsaWFzICIgKwotICAgICAgICAgICAgICAgICIgIEpP
SU4gYXJ0aXN0X25hbWUgbiBPTiAoYXJ0aXN0X2FsaWFzLm5hbWUgPSBuLmlkKSAiICsKLSAgICAg
ICAgICAgICAgICAiIFdIRVJFIGFydGlzdCBCRVRXRUVOID8gQU5EID8gIiArCi0gICAgICAgICAg
ICAgICAgIlVOSU9OICIgKwotICAgICAgICAgICAgICAgICJTRUxFQ1QgYXJ0aXN0IGFzIGFydGlz
dCwgbi5uYW1lIGFzIGFsaWFzICIgKwotICAgICAgICAgICAgICAgICIgRlJPTSBhcnRpc3RfY3Jl
ZGl0X25hbWUgIiArCi0gICAgICAgICAgICAgICAgIiAgSk9JTiBhcnRpc3RfbmFtZSBuIE9OIG4u
aWQgPSBhcnRpc3RfY3JlZGl0X25hbWUubmFtZSAiICsKLSAgICAgICAgICAgICAgICAiIFdIRVJF
IGFydGlzdCBCRVRXRUVOID8gQU5EID8gIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiIEZS
T00gYXJ0aXN0X2FsaWFzICIgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAgSk9JTiBhcnRp
c3RfbmFtZSBuIE9OIChhcnRpc3RfYWxpYXMubmFtZSA9IG4uaWQpICIgKworICAgICAgICAgICAg
ICAgICAgICAgICAgIiBXSEVSRSBhcnRpc3QgQkVUV0VFTiA/IEFORCA/Iik7CiAKKyAgICAgICAg
YWRkUHJlcGFyZWRTdGF0ZW1lbnQoIkFSVElTVENSRURJVFMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIlNFTEVDVCBhcnRpc3QgYXMgYXJ0aXN0LCBuLm5hbWUgYXMgYXJ0aXN0Y3JlZGl0ICIg
KworICAgICAgICAgICAgICAgICAgICAgICAgIiBGUk9NIGFydGlzdF9jcmVkaXRfbmFtZSAiICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICIgIEpPSU4gYXJ0aXN0X25hbWUgbiBPTiBuLmlkID0g
YXJ0aXN0X2NyZWRpdF9uYW1lLm5hbWUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiIFdI
RVJFIGFydGlzdCBCRVRXRUVOID8gQU5EID8gIik7CiAKKwogICAgICAgICBhZGRQcmVwYXJlZFN0
YXRlbWVudCgiQVJUSVNUUyIsCiAgICAgICAgICAgICAgICAgIlNFTEVDVCBhcnRpc3QuaWQsIGdp
ZCwgbjAubmFtZSBhcyBuYW1lLCBuMS5uYW1lIGFzIHNvcnRfbmFtZSwgIiArCi0gICAgICAgICAg
ICAgICAgIiAgYXJ0aXN0X3R5cGUubmFtZSBhcyB0eXBlLCBiZWdpbl9kYXRlX3llYXIsIGJlZ2lu
X2RhdGVfbW9udGgsIGJlZ2luX2RhdGVfZGF5LCAiICsKLSAgICAgICAgICAgICAgICAiICBlbmRf
ZGF0ZV95ZWFyLCBlbmRfZGF0ZV9tb250aCwgZW5kX2RhdGVfZGF5LGVuZGVkLCAiICsKLSAgICAg
ICAgICAgICAgICAiICBjb21tZW50LCBsb3dlcihpLmNvZGUpIGFzIGNvdW50cnksIGxvd2VyKGdl
bmRlci5uYW1lKSBhcyBnZW5kZXIgIiArCi0gICAgICAgICAgICAgICAgIiBGUk9NIGFydGlzdCAi
ICsKLSAgICAgICAgICAgICAgICAiICBMRUZUIEpPSU4gYXJ0aXN0X25hbWUgbjAgT04gYXJ0aXN0
Lm5hbWUgPSBuMC5pZCAiICsKLSAgICAgICAgICAgICAgICAiICBMRUZUIEpPSU4gYXJ0aXN0X25h
bWUgbjEgT04gYXJ0aXN0LnNvcnRfbmFtZSA9IG4xLmlkICIgKwotICAgICAgICAgICAgICAgICIg
IExFRlQgSk9JTiBhcnRpc3RfdHlwZSBPTiBhcnRpc3QudHlwZSA9IGFydGlzdF90eXBlLmlkICIg
KwotICAgICAgICAgICAgICAgICIgIExFRlQgSk9JTiBpc29fMzE2Nl8xIGkgb24gYXJ0aXN0LmFy
ZWE9aS5hcmVhIiArCi0gICAgICAgICAgICAgICAgIiAgTEVGVCBKT0lOIGdlbmRlciBPTiBhcnRp
c3QuZ2VuZGVyPWdlbmRlci5pZCAiICsKLSAgICAgICAgICAgICAgICAiIFdIRVJFIGFydGlzdC5p
ZCBCRVRXRUVOID8gQU5EID8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIGFydGlzdF90
eXBlLm5hbWUgYXMgdHlwZSwgYmVnaW5fZGF0ZV95ZWFyLCBiZWdpbl9kYXRlX21vbnRoLCBiZWdp
bl9kYXRlX2RheSwgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICBlbmRfZGF0ZV95ZWFy
LCBlbmRfZGF0ZV9tb250aCwgZW5kX2RhdGVfZGF5LGVuZGVkLCAiICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIgIGNvbW1lbnQsIGxvd2VyKGkuY29kZSkgYXMgY291bnRyeSwgbG93ZXIoZ2Vu
ZGVyLm5hbWUpIGFzIGdlbmRlciAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgRlJPTSBh
cnRpc3QgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICBMRUZUIEpPSU4gYXJ0aXN0X25h
bWUgbjAgT04gYXJ0aXN0Lm5hbWUgPSBuMC5pZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIgIExFRlQgSk9JTiBhcnRpc3RfbmFtZSBuMSBPTiBhcnRpc3Quc29ydF9uYW1lID0gbjEuaWQg
IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICBMRUZUIEpPSU4gYXJ0aXN0X3R5cGUgT04g
YXJ0aXN0LnR5cGUgPSBhcnRpc3RfdHlwZS5pZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIgIExFRlQgSk9JTiBpc29fMzE2Nl8xIGkgb24gYXJ0aXN0LmFyZWE9aS5hcmVhIiArCisgICAg
ICAgICAgICAgICAgICAgICAgICAiICBMRUZUIEpPSU4gZ2VuZGVyIE9OIGFydGlzdC5nZW5kZXI9
Z2VuZGVyLmlkICIgKworICAgICAgICAgICAgICAgICAgICAgICAgIiBXSEVSRSBhcnRpc3QuaWQg
QkVUV0VFTiA/IEFORCA/Iik7CiAKICAgICAgICAgYWRkUHJlcGFyZWRTdGF0ZW1lbnQoIklQSUNP
REVTIiwKICAgICAgICAgICAgICAgICAiU0VMRUNUIGlwaSwgYXJ0aXN0ICIgKwotICAgICAgICAg
ICAgICAgICIgRlJPTSBhcnRpc3RfaXBpICAiICsKLSAgICAgICAgICAgICAgICAiIFdIRVJFIGFy
dGlzdCBiZXR3ZWVuID8gQU5EID8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgRlJPTSBh
cnRpc3RfaXBpICAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgV0hFUkUgYXJ0aXN0IGJl
dHdlZW4gPyBBTkQgPyIpOwogCiAgICAgfQogCi0gICAgcHJpdmF0ZSAgTWFwPEludGVnZXIsIExp
c3Q8U3RyaW5nPj4gbG9hZElwaUNvZGVzKGludCBtaW4sIGludCBtYXgpIHRocm93cyBTUUxFeGNl
cHRpb24sIElPRXhjZXB0aW9uIHsKKyAgICBwcml2YXRlIE1hcDxJbnRlZ2VyLCBMaXN0PFN0cmlu
Zz4+IGxvYWRJcGlDb2RlcyhpbnQgbWluLCBpbnQgbWF4KSB0aHJvd3MgU1FMRXhjZXB0aW9uLCBJ
T0V4Y2VwdGlvbiB7CiAgICAgICAgIE1hcDxJbnRlZ2VyLCBMaXN0PFN0cmluZz4+IGlwaUNvZGVz
ID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgTGlzdDxTdHJpbmc+PigpOwogICAgICAgICBQcmVwYXJl
ZFN0YXRlbWVudCBzdCA9IGdldFByZXBhcmVkU3RhdGVtZW50KCJJUElDT0RFUyIpOwogICAgICAg
ICBzdC5zZXRJbnQoMSwgbWluKTsKQEAgLTE2MCw3ICsxNjIsNyBAQAogICAgICAgICBycy5jbG9z
ZSgpOwogICAgICAgICByZXR1cm4gaXBpQ29kZXM7CiAgICAgfQotICAgIAorCiAgICAgcHVibGlj
IHZvaWQgaW5kZXhEYXRhKEluZGV4V3JpdGVyIGluZGV4V3JpdGVyLCBpbnQgbWluLCBpbnQgbWF4
KSB0aHJvd3MgU1FMRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CiAKICAgICAgICAgLy8gR2V0IFRh
Z3MKQEAgLTE2OCwxOSArMTcwLDE3IEBACiAgICAgICAgIHN0LnNldEludCgxLCBtaW4pOwogICAg
ICAgICBzdC5zZXRJbnQoMiwgbWF4KTsKICAgICAgICAgUmVzdWx0U2V0IHJzID0gc3QuZXhlY3V0
ZVF1ZXJ5KCk7Ci0gICAgICAgIE1hcDxJbnRlZ2VyLExpc3Q8VGFnPj4gdGFncyA9IFRhZ0hlbHBl
ci5jb21wbGV0ZVRhZ3NGcm9tRGJSZXN1bHRzKHJzLCJhcnRpc3QiKTsKKyAgICAgICAgTWFwPElu
dGVnZXIsIExpc3Q8VGFnPj4gdGFncyA9IFRhZ0hlbHBlci5jb21wbGV0ZVRhZ3NGcm9tRGJSZXN1
bHRzKHJzLCAiYXJ0aXN0Iik7CiAgICAgICAgIHJzLmNsb3NlKCk7CiAKICAgICAgICAgLy8gSVBJ
IENvZGVzCi0gICAgICAgIE1hcDxJbnRlZ2VyLCBMaXN0PFN0cmluZz4+IGlwaUNvZGVzID0gbG9h
ZElwaUNvZGVzKG1pbixtYXgpOwotICAgICAgICAKKyAgICAgICAgTWFwPEludGVnZXIsIExpc3Q8
U3RyaW5nPj4gaXBpQ29kZXMgPSBsb2FkSXBpQ29kZXMobWluLCBtYXgpOworCiAgICAgICAgIC8v
QWxpYXNlcyAoYW5kIEFydGlzdCBDcmVkaXRzKQogICAgICAgICBNYXA8SW50ZWdlciwgU2V0PFN0
cmluZz4+IGFsaWFzZXMgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBTZXQ8U3RyaW5nPj4oKTsKICAg
ICAgICAgc3QgPSBnZXRQcmVwYXJlZFN0YXRlbWVudCgiQUxJQVNFUyIpOwogICAgICAgICBzdC5z
ZXRJbnQoMSwgbWluKTsKICAgICAgICAgc3Quc2V0SW50KDIsIG1heCk7Ci0gICAgICAgIHN0LnNl
dEludCgzLCBtaW4pOwotICAgICAgICBzdC5zZXRJbnQoNCwgbWF4KTsKICAgICAgICAgcnMgPSBz
dC5leGVjdXRlUXVlcnkoKTsKICAgICAgICAgd2hpbGUgKHJzLm5leHQoKSkgewogICAgICAgICAg
ICAgaW50IGFydGlzdElkID0gcnMuZ2V0SW50KCJhcnRpc3QiKTsKQEAgLTE5NSw5MyArMTk1LDE2
MiBAQAogICAgICAgICB9CiAgICAgICAgIHJzLmNsb3NlKCk7CiAKKyAgICAgICAgLy9BcnRpc3Qg
Q3JlZGl0cykKKyAgICAgICAgTWFwPEludGVnZXIsIFNldDxTdHJpbmc+PiBhcnRpc3RDcmVkaXRz
ID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgU2V0PFN0cmluZz4+KCk7CisgICAgICAgIHN0ID0gZ2V0
UHJlcGFyZWRTdGF0ZW1lbnQoIkFSVElTVENSRURJVFMiKTsKKyAgICAgICAgc3Quc2V0SW50KDEs
IG1pbik7CisgICAgICAgIHN0LnNldEludCgyLCBtYXgpOworICAgICAgICBycyA9IHN0LmV4ZWN1
dGVRdWVyeSgpOworICAgICAgICB3aGlsZSAocnMubmV4dCgpKSB7CisgICAgICAgICAgICBpbnQg
YXJ0aXN0SWQgPSBycy5nZXRJbnQoImFydGlzdCIpOworICAgICAgICAgICAgU2V0PFN0cmluZz4g
bGlzdDsKKyAgICAgICAgICAgIGlmICghYXJ0aXN0Q3JlZGl0cy5jb250YWluc0tleShhcnRpc3RJ
ZCkpIHsKKyAgICAgICAgICAgICAgICBsaXN0ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOworICAg
ICAgICAgICAgICAgIGFydGlzdENyZWRpdHMucHV0KGFydGlzdElkLCBsaXN0KTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGlzdCA9IGFydGlzdENyZWRpdHMuZ2V0KGFy
dGlzdElkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpc3QuYWRkKHJzLmdldFN0cmlu
ZygiYXJ0aXN0Y3JlZGl0IikpOworICAgICAgICB9CisgICAgICAgIHJzLmNsb3NlKCk7CisKICAg
ICAgICAgc3QgPSBnZXRQcmVwYXJlZFN0YXRlbWVudCgiQVJUSVNUUyIpOwogICAgICAgICBzdC5z
ZXRJbnQoMSwgbWluKTsKICAgICAgICAgc3Quc2V0SW50KDIsIG1heCk7CiAgICAgICAgIHJzID0g
c3QuZXhlY3V0ZVF1ZXJ5KCk7CiAgICAgICAgIHdoaWxlIChycy5uZXh0KCkpIHsKLSAgICAgICAg
ICAgIGlmKHJzLmdldFN0cmluZygiZ2lkIikuZXF1YWxzKERFTEVURURfQVJUSVNUX01CSUQpKQot
ICAgICAgICAgICAgeworICAgICAgICAgICAgaWYgKHJzLmdldFN0cmluZygiZ2lkIikuZXF1YWxz
KERFTEVURURfQVJUSVNUX01CSUQpKSB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpbmRleFdyaXRlci5hZGREb2N1bWVudChkb2N1bWVudEZy
b21SZXN1bHRTZXQocnMsIHRhZ3MsIGlwaUNvZGVzLCBhbGlhc2VzKSk7CisgICAgICAgICAgICBp
bmRleFdyaXRlci5hZGREb2N1bWVudChkb2N1bWVudEZyb21SZXN1bHRTZXQocnMsIHRhZ3MsIGlw
aUNvZGVzLCBhbGlhc2VzLCBhcnRpc3RDcmVkaXRzKSk7CiAgICAgICAgIH0KICAgICAgICAgcnMu
Y2xvc2UoKTsKICAgICB9CiAKICAgICBwdWJsaWMgRG9jdW1lbnQgZG9jdW1lbnRGcm9tUmVzdWx0
U2V0KFJlc3VsdFNldCBycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hcDxJbnRlZ2VyLExpc3Q8VGFnPj4gdGFncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hcDxJbnRlZ2VyLCBMaXN0PFRhZz4+IHRhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXA8SW50ZWdlciwgTGlzdDxTdHJp
bmc+PiBpcGlDb2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1hcDxJbnRlZ2VyLCBTZXQ8U3RyaW5nPj4gYWxpYXNlcykgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXA8SW50ZWdlciwg
U2V0PFN0cmluZz4+IGFsaWFzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXA8SW50ZWdlciwgU2V0PFN0cmluZz4+IGFydGlzdENyZWRpdHMpIHRocm93cyBT
UUxFeGNlcHRpb24gewogCiAgICAgICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9jdW1lbnQo
KTsKKworICAgICAgICBPYmplY3RGYWN0b3J5IG9mID0gbmV3IE9iamVjdEZhY3RvcnkoKTsKKyAg
ICAgICAgQXJ0aXN0IGFydGlzdCA9IG9mLmNyZWF0ZUFydGlzdCgpOworCiAgICAgICAgIGludCBh
cnRpc3RJZCA9IHJzLmdldEludCgiaWQiKTsKICAgICAgICAgU3RyaW5nIGFydGlzdEd1aWQgPSBy
cy5nZXRTdHJpbmcoImdpZCIpOwogICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5JRCwgYXJ0aXN0SWQpOwogICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1RfSUQsIGFydGlzdEd1aWQpOworICAgICAgICBhcnRpc3Quc2V0SWQoYXJ0aXN0R3VpZCk7
CiAKICAgICAgICAgU3RyaW5nIGFydGlzdE5hbWUgPSBycy5nZXRTdHJpbmcoIm5hbWUiKTsKLSAg
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNULCBhcnRpc3ROYW1lICk7
CisgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgYXJ0aXN0TmFt
ZSk7CisgICAgICAgIGFydGlzdC5zZXROYW1lKGFydGlzdE5hbWUpOwogCiAgICAgICAgIC8vQWNj
ZW50ZWQgYXJ0aXN0Ci0gICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElT
VF9BQ0NFTlQsIGFydGlzdE5hbWUgKTsKKyAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuQVJUSVNUX0FDQ0VOVCwgYXJ0aXN0TmFtZSk7CiAKICAgICAgICAgU3RyaW5nIHNvcnRO
YW1lID0gcnMuZ2V0U3RyaW5nKCJzb3J0X25hbWUiKTsKICAgICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuU09SVE5BTUUsIHNvcnROYW1lKTsKKyAgICAgICAgYXJ0aXN0LnNldFNv
cnROYW1lKHNvcnROYW1lKTsKIAogICAgICAgICBTdHJpbmcgdHlwZSA9IHJzLmdldFN0cmluZygi
dHlwZSIpOwogICAgICAgICBkb2MuYWRkRmllbGRPclVua25vd24oQXJ0aXN0SW5kZXhGaWVsZC5U
WVBFLCB0eXBlKTsKKyAgICAgICAgaWYgKCFTdHJpbmdzLmlzTnVsbE9yRW1wdHkodHlwZSkpIHsK
KyAgICAgICAgICAgIGFydGlzdC5zZXRUeXBlKHR5cGUpOworICAgICAgICB9CiAKLSAgICAgICAg
aWYocnMuZ2V0Qm9vbGVhbigiZW5kZWQiKSkgewotICAgICAgICAgICBkb2MuYWRkRmllbGRPclVu
a25vd24oQXJ0aXN0SW5kZXhGaWVsZC5FTkRFRCwgInRydWUiKTsKKyAgICAgICAgYm9vbGVhbiBl
bmRlZCA9IHJzLmdldEJvb2xlYW4oImVuZGVkIik7CisgICAgICAgIGRvYy5hZGRGaWVsZE9yVW5r
bm93bihBcnRpc3RJbmRleEZpZWxkLkVOREVELCBCb29sZWFuLnRvU3RyaW5nKGVuZGVkKSk7CisK
KyAgICAgICAgU3RyaW5nIGJlZ2luID0gVXRpbHMuZm9ybWF0RGF0ZShycy5nZXRJbnQoImJlZ2lu
X2RhdGVfeWVhciIpLCBycy5nZXRJbnQoImJlZ2luX2RhdGVfbW9udGgiKSwgcnMuZ2V0SW50KCJi
ZWdpbl9kYXRlX2RheSIpKTsKKyAgICAgICAgZG9jLmFkZE5vbkVtcHR5RmllbGQoQXJ0aXN0SW5k
ZXhGaWVsZC5CRUdJTiwgYmVnaW4pOworCisgICAgICAgIFN0cmluZyBlbmQgPSBVdGlscy5mb3Jt
YXREYXRlKHJzLmdldEludCgiZW5kX2RhdGVfeWVhciIpLCBycy5nZXRJbnQoImVuZF9kYXRlX21v
bnRoIiksIHJzLmdldEludCgiZW5kX2RhdGVfZGF5IikpOworICAgICAgICAgICAgICAgIGRvYy5h
ZGROb25FbXB0eUZpZWxkKEFydGlzdEluZGV4RmllbGQuRU5ELCBlbmQpOworCisgICAgICAgIExp
ZmVTcGFuIGxpZmVzcGFuID0gb2YuY3JlYXRlTGlmZVNwYW4oKTsKKyAgICAgICAgYXJ0aXN0LnNl
dExpZmVTcGFuKGxpZmVzcGFuKTsKKyAgICAgICAgaWYoIVN0cmluZ3MuaXNOdWxsT3JFbXB0eShi
ZWdpbikpIHsKKyAgICAgICAgICAgIGxpZmVzcGFuLnNldEJlZ2luKGJlZ2luKTsKICAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRvYy5hZGRGaWVsZE9yVW5rbm93bihBcnRp
c3RJbmRleEZpZWxkLkVOREVELCAiZmFsc2UiKTsKKyAgICAgICAgaWYoIVN0cmluZ3MuaXNOdWxs
T3JFbXB0eShlbmQpKSB7CisgICAgICAgICAgICBsaWZlc3Bhbi5zZXRCZWdpbihlbmQpOwogICAg
ICAgICB9CisgICAgICAgIGxpZmVzcGFuLnNldEVuZGVkKEJvb2xlYW4udG9TdHJpbmcoZW5kZWQp
KTsKIAotICAgICAgICBkb2MuYWRkTm9uRW1wdHlGaWVsZChBcnRpc3RJbmRleEZpZWxkLkJFR0lO
LAotICAgICAgICAgICAgICAgIFV0aWxzLmZvcm1hdERhdGUocnMuZ2V0SW50KCJiZWdpbl9kYXRl
X3llYXIiKSwgcnMuZ2V0SW50KCJiZWdpbl9kYXRlX21vbnRoIiksIHJzLmdldEludCgiYmVnaW5f
ZGF0ZV9kYXkiKSkpOworICAgICAgICBTdHJpbmcgY29tbWVudCA9IHJzLmdldFN0cmluZygiY29t
bWVudCIpOworICAgICAgICBkb2MuYWRkRmllbGRPck5vVmFsdWUoQXJ0aXN0SW5kZXhGaWVsZC5D
T01NRU5ULCBjb21tZW50KTsKKyAgICAgICAgaWYgKCFTdHJpbmdzLmlzTnVsbE9yRW1wdHkoY29t
bWVudCkpIHsKKyAgICAgICAgICAgIGFydGlzdC5zZXREaXNhbWJpZ3VhdGlvbihjb21tZW50KTsK
KyAgICAgICAgfQogCi0gICAgICAgIGRvYy5hZGROb25FbXB0eUZpZWxkKEFydGlzdEluZGV4Rmll
bGQuRU5ELAotICAgICAgICAgICAgICAgIFV0aWxzLmZvcm1hdERhdGUocnMuZ2V0SW50KCJlbmRf
ZGF0ZV95ZWFyIiksIHJzLmdldEludCgiZW5kX2RhdGVfbW9udGgiKSwgcnMuZ2V0SW50KCJlbmRf
ZGF0ZV9kYXkiKSkpOwotCi0gICAgICAgIGRvYy5hZGRGaWVsZE9yTm9WYWx1ZShBcnRpc3RJbmRl
eEZpZWxkLkNPTU1FTlQsIHJzLmdldFN0cmluZygiY29tbWVudCIpKTsKLSAgICAgICAgZG9jLmFk
ZEZpZWxkT3JVbmtub3duKEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgcnMuZ2V0U3RyaW5nKCJj
b3VudHJ5IikpOwotCisgICAgICAgIFN0cmluZyBjb3VudHJ5ID0gcnMuZ2V0U3RyaW5nKCJjb3Vu
dHJ5Iik7CisgICAgICAgIGRvYy5hZGRGaWVsZE9yVW5rbm93bihBcnRpc3RJbmRleEZpZWxkLkNP
VU5UUlksIGNvdW50cnkpOworICAgICAgICBpZiAoIVN0cmluZ3MuaXNOdWxsT3JFbXB0eShjb3Vu
dHJ5KSkgeworICAgICAgICAgICAgYXJ0aXN0LnNldENvdW50cnkoY291bnRyeS50b1VwcGVyQ2Fz
ZShMb2NhbGUuVVMpKTsKKyAgICAgICAgfQogICAgICAgICBTdHJpbmcgZ2VuZGVyID0gcnMuZ2V0
U3RyaW5nKCJnZW5kZXIiKTsKICAgICAgICAgaWYgKGdlbmRlciAhPSBudWxsKSB7CiAgICAgICAg
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsIGdlbmRlcik7CisgICAg
ICAgICAgICBhcnRpc3Quc2V0R2VuZGVyKGdlbmRlcik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiggKHR5cGUhPW51bGwpICYmICh0eXBlLmVxdWFsc0lnbm9yZUNhc2UoQXJ0aXN0
VHlwZS5QRVJTT04uZ2V0TmFtZSgpKSkgKSB7CisgICAgICAgICAgICBpZiAoKHR5cGUgIT0gbnVs
bCkgJiYgKHR5cGUuZXF1YWxzSWdub3JlQ2FzZShBcnRpc3RUeXBlLlBFUlNPTi5nZXROYW1lKCkp
KSkgewogICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRF
UiwgSW5kZXguVU5LTk9XTik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoYWxpYXNlcy5jb250YWluc0tleShhcnRpc3RJZCkpIHsKLSAgICAgICAgICAgIGZvciAoU3Ry
aW5nIGFsaWFzIDogYWxpYXNlcy5nZXQoYXJ0aXN0SWQpKSB7Ci0gICAgICAgICAgICAgICAgLy9J
Z25vcmUgYXJ0aXN0IGNyZWRpdHMgdGhhdCBhcmUgaWRlbnRpY2FsIHRvIGFydGlzdCBuYW1lCi0g
ICAgICAgICAgICAgICAgaWYoIWFsaWFzLmVxdWFsc0lnbm9yZUNhc2UoYXJ0aXN0TmFtZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQUxJQVMs
IGFsaWFzKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBBbGlhc0xpc3QgYWxpYXNM
aXN0ID0gb2YuY3JlYXRlQWxpYXNMaXN0KCk7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBhbGlh
c05hbWUgOiBhbGlhc2VzLmdldChhcnRpc3RJZCkpIHsKKyAgICAgICAgICAgICAgICBkb2MuYWRk
RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BTElBUywgYWxpYXNOYW1lKTsKKworICAgICAgICAgICAg
ICAgIEFsaWFzIGFsaWFzID0gb2YuY3JlYXRlQWxpYXMoKTsKKyAgICAgICAgICAgICAgICBhbGlh
cy5zZXRDb250ZW50KGFsaWFzTmFtZSk7CisgICAgICAgICAgICAgICAgYWxpYXNMaXN0LmdldEFs
aWFzKCkuYWRkKGFsaWFzKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFydGlzdC5zZXRB
bGlhc0xpc3QoYWxpYXNMaXN0KTsKICAgICAgICAgfQorCisgICAgICAgIC8vQXJ0aXN0IENyZWRp
dHMgYXJlIGFkZGVkIGZvciBzZWFyY2ggb25seQorICAgICAgICBpZiAoYXJ0aXN0Q3JlZGl0cy5j
b250YWluc0tleShhcnRpc3RJZCkpIHsKKyAgICAgICAgICAgIGZvciAoU3RyaW5nIGFydGlzdENy
ZWRpdCA6IGFydGlzdENyZWRpdHMuZ2V0KGFydGlzdElkKSkgeworCisgICAgICAgICAgICAgICAg
Ly9BZGQgYWxpYXMgZXZlbiBpZiBzYW1lIGFzIGFydGlzdAorICAgICAgICAgICAgICAgIGRvYy5h
ZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFMSUFTLCBhcnRpc3RDcmVkaXQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgYWRkQXJ0aXN0SW5pdGlhbGl6ZWQodHlwZSwgYXJ0
aXN0TmFtZSwgc29ydE5hbWUsIGRvYyk7CiAKICAgICAgICAgaWYgKHRhZ3MuY29udGFpbnNLZXko
YXJ0aXN0SWQpKSB7Ci0gICAgICAgICAgICBmb3IgKFRhZyB0YWcgOiB0YWdzLmdldChhcnRpc3RJ
ZCkpIHsKLSAgICAgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcs
IHRhZy5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRl
eEZpZWxkLlRBR0NPVU5ULCB0YWcuZ2V0Q291bnQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAg
IFRhZ0xpc3QgdGFnTGlzdCA9IG9mLmNyZWF0ZVRhZ0xpc3QoKTsKKyAgICAgICAgICAgIGZvciAo
VGFnIG5leHRUYWcgOiB0YWdzLmdldChhcnRpc3RJZCkpIHsKKyAgICAgICAgICAgICAgICBUYWcg
dGFnID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlz
dEluZGV4RmllbGQuVEFHLCBuZXh0VGFnLmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgdGFn
LnNldE5hbWUobmV4dFRhZy5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIHRhZy5zZXRDb3Vu
dChuZXcgQmlnSW50ZWdlcihuZXh0VGFnLmdldENvdW50KCkudG9TdHJpbmcoKSkpOworICAgICAg
ICAgICAgICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhcnRpc3Quc2V0VGFnTGlzdCh0YWdMaXN0KTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpcGlDb2Rlcy5jb250YWluc0tleShhcnRpc3RJZCkpIHsKKyAgICAgICAgICAgIElwaUxp
c3QgaXBpTGlzdCA9IG9mLmNyZWF0ZUlwaUxpc3QoKTsKICAgICAgICAgICAgIGZvciAoU3RyaW5n
IGlwaUNvZGUgOiBpcGlDb2Rlcy5nZXQoYXJ0aXN0SWQpKSB7CiAgICAgICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJLCBpcGlDb2RlKTsKKyAgICAgICAgICAgICAg
ICBpcGlMaXN0LmdldElwaSgpLmFkZChpcGlDb2RlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGFydGlzdC5zZXRJcGlMaXN0KGlwaUxpc3QpOwogICAgICAgICB9CiAKIAogICAgICAgICBB
cnRpc3RCb29zdERvYy5ib29zdChhcnRpc3RHdWlkLCBkb2MpOworCisgICAgICAgIFN0cmluZyBz
dG9yZSA9IE1NRFNlcmlhbGl6ZXIuc2VyaWFsaXplKGFydGlzdCk7CisgICAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9TVE9SRSwgc3RvcmUpOworCiAgICAgICAgIHJl
dHVybiBkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKTsKICAgICB9CiAKQEAgLTI5MCwzMyArMzU5LDMw
IEBACiAgICAgICogY2FuIGJlIGxhdGluIGVuY29kZWQgYW5kIGhhcyBhIHNvcnRuYW1lIGNvbnRh
aW5pbmcgYSBjb21tYSBpbmRpY2F0aW5nIHByb2JhYmx5IGEgcmVhbCBuYW1lIHJhdGhlciB0aGFu
IGEKICAgICAgKiBwZXJmb3JtYW5jZSBuYW1lCiAgICAgICoKKyAgICAgKiBUaGlzIGlzIG9ubHkg
dXNlZCBmb3Igc2VhcmNoaW5nLCBub3QgcmV0dXJuZWQgaW4gdGhlIGxpc3Qgb2YgYWxpYXNlcyBh
cyBvdXRwdXQgYmVjYXVzZSBpdCBpcyBub3QgYWN0dWFsbHkKKyAgICAgKiBhIHJlYWwgYWxpYXMs
IGp1c3Qgb25lIHdlIGhhdmUgYWRkZWQgdG8gaGVscCBzZWFyY2hpbmcKKyAgICAgKgogICAgICAq
IEBwYXJhbSB0eXBlCiAgICAgICogQHBhcmFtIGFydGlzdE5hbWUKICAgICAgKiBAcGFyYW0gc29y
dE5hbWUKICAgICAgKiBAcGFyYW0gZG9jCiAgICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIGFkZEFy
dGlzdEluaXRpYWxpemVkKFN0cmluZyB0eXBlLCBTdHJpbmcgYXJ0aXN0TmFtZSwgU3RyaW5nIHNv
cnROYW1lLCBNYkRvY3VtZW50IGRvYykKLSAgICB7Ci0gICAgICAgIGlmKHR5cGU9PW51bGwgfHwg
IXR5cGUuZXF1YWxzKFBFUlNPTikpCi0gICAgICAgIHsKKworICAgIHByaXZhdGUgdm9pZCBhZGRB
cnRpc3RJbml0aWFsaXplZChTdHJpbmcgdHlwZSwgU3RyaW5nIGFydGlzdE5hbWUsIFN0cmluZyBz
b3J0TmFtZSwgTWJEb2N1bWVudCBkb2MpIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gbnVsbCB8fCAh
dHlwZS5lcXVhbHMoUEVSU09OKSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgdHJ5Ci0gICAgICAgIHsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGxhdGlu
RW5jb2Rlci5lbmNvZGUoQ2hhckJ1ZmZlci53cmFwKGFydGlzdE5hbWUpKTsKLSAgICAgICAgfQot
ICAgICAgICBjYXRjaChDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24gY2RkKQotICAgICAgICB7Cisg
ICAgICAgIH0gY2F0Y2ggKENoYXJhY3RlckNvZGluZ0V4Y2VwdGlvbiBjZGQpIHsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmKHNvcnROYW1lLmNvbnRhaW5zKCIs
IikpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHNvcnROYW1lLmNvbnRhaW5zKCIsIikpIHsKICAg
ICAgICAgICAgIFN0cmluZ1tdIG5hbWVzID0gYXJ0aXN0TmFtZS5zcGxpdCgiICIpOwotICAgICAg
ICAgICAgaWYobmFtZXMubGVuZ3RoPj0yKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFMSUFTLCBuYW1lc1swXS5zdWJzdHJpbmco
MCwxKSArICcgJyArIG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdKTsKKyAgICAgICAgICAgIGlmIChu
YW1lcy5sZW5ndGggPj0gMikgeworICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkFMSUFTLCBuYW1lc1swXS5zdWJzdHJpbmcoMCwgMSkgKyAnICcgKyBuYW1lc1tu
YW1lcy5sZW5ndGggLSAxXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CgpNb2Rp
ZmllZDogc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2Jy
YWluei9zZWFyY2gvaW5kZXgvQXJ0aXN0SW5kZXhGaWVsZC5qYXZhCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNl
YXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL21haW4vamF2YS9vcmcvbXVzaWNicmFpbnovc2Vh
cmNoL2luZGV4L0FydGlzdEluZGV4RmllbGQuamF2YQkyMDEzLTA1LTAyIDIwOjM4OjA1IFVUQyAo
cmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9qYXZhL29y
Zy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvQXJ0aXN0SW5kZXhGaWVsZC5qYXZhCTIwMTMtMDUt
MDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC00MywyMSArNDMsMjEgQEAKIHB1YmxpYyBl
bnVtIEFydGlzdEluZGV4RmllbGQgaW1wbGVtZW50cyBJbmRleEZpZWxkIHsKIAogCUlECQkJICAg
ICgiX2lkIiwJCQlNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9TVE9SRURfTk9UX0FOQUxZWkVE
X05PX05PUk1TLCBuZXcgS2V5d29yZEFuYWx5emVyKCkpLAotICAgIEFMSUFTCQkgICAgKCJhbGlh
cyIsCQlNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9TVE9SRURfQU5BTFlaRUQsIG5ldyBNdXNp
Y2JyYWlueldpdGhQb3NHYXBBbmFseXplcigpKSwKKyAgICBBTElBUwkJICAgICgiYWxpYXMiLAkJ
TXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRCwgbmV3IE11c2lj
YnJhaW56V2l0aFBvc0dhcEFuYWx5emVyKCkpLAogICAgIEFSVElTVF9JRAkgICAgKCJhcmlkIiwJ
CU11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9OT1RfQU5BTFlaRURfTk9fTk9STVMs
IG5ldyBLZXl3b3JkQW5hbHl6ZXIoKSksCiAgICAgQVJUSVNUCQkgICAgKCJhcnRpc3QiLAkJTXVz
aWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfU1RPUkVEX0FOQUxZWkVELCBuZXcgTXVzaWNicmFpbnpB
bmFseXplcigpKSwKICAgICBBUlRJU1RfQUNDRU5UICAgKCJhcnRpc3RhY2NlbnQiLE11c2ljQnJh
aW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfQU5BTFlaRUQsIG5ldyBNdXNpY2JyYWluektl
ZXBBY2NlbnRzQW5hbHl6ZXIoKSksCi0gICAgQkVHSU4JCSAgICAoImJlZ2luIiwJCU11c2ljQnJh
aW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9OT1RfQU5BTFlaRURfTk9fTk9STVMsIG5ldyBLZXl3
b3JkQW5hbHl6ZXIoKSksCi0gICAgQ09NTUVOVAkJICAgICgiY29tbWVudCIsCQlNdXNpY0JyYWlu
ekZpZWxkVHlwZXMuVEVYVF9TVE9SRURfQU5BTFlaRUQpLAotICAgIENPVU5UUlkgICAgICAgICAo
ImNvdW50cnkiLCAgICAgTXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfU1RPUkVEX0FOQUxZWkVE
X05PX05PUk1TLCBuZXcgQ2FzZUluc2Vuc2l0aXZlS2V5d29yZEFuYWx5emVyKCkpLAotICAgIEVO
RAkJCSAgICAoImVuZCIsCQkJTXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfU1RPUkVEX05PVF9B
TkFMWVpFRF9OT19OT1JNUywgbmV3IEtleXdvcmRBbmFseXplcigpKSwKLSAgICBFTkRFRCAgICAg
ICAgICAgKCJlbmRlZCIsICAgICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9B
TkFMWVpFRF9OT19OT1JNUywgbmV3IENhc2VJbnNlbnNpdGl2ZUtleXdvcmRBbmFseXplcigpKSwK
LSAgICBHRU5ERVIgICAgICAgICAgKCJnZW5kZXIiLCAgICAgIE11c2ljQnJhaW56RmllbGRUeXBl
cy5URVhUX1NUT1JFRF9BTkFMWVpFRF9OT19OT1JNUywgbmV3IENhc2VJbnNlbnNpdGl2ZUtleXdv
cmRBbmFseXplcigpKSwKLSAgICBJUEkgICAgICAgICAgICAgKCJpcGkiLCAgICAgICAgIE11c2lj
QnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9BTkFMWVpFRF9OT19OT1JNUywgbmV3IENhc2VJ
bnNlbnNpdGl2ZUtleXdvcmRBbmFseXplcigpKSwKLSAgICBTT1JUTkFNRQkgICAgKCJzb3J0bmFt
ZSIsCU11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9BTkFMWVpFRCksCi0gICAgVEFH
CQkgICAgICAgICgidGFnIiwJCSAgICBNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9TVE9SRURf
QU5BTFlaRUQsIG5ldyBNdXNpY2JyYWlueldpdGhQb3NHYXBBbmFseXplcigpKSwKLSAgICBUQUdD
T1VOVCAgICAgICAgKCJ0YWdjb3VudCIsCU11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JF
RF9OT1RfSU5ERVhFRCksCi0gICAgVFlQRQkJICAgICgidHlwZSIsCQlNdXNpY0JyYWluekZpZWxk
VHlwZXMuVEVYVF9TVE9SRURfQU5BTFlaRURfTk9fTk9STVMsIG5ldyBDYXNlSW5zZW5zaXRpdmVL
ZXl3b3JkQW5hbHl6ZXIoKSksCisgICAgQkVHSU4JCSAgICAoImJlZ2luIiwJCU11c2ljQnJhaW56
RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfTk9UX0FOQUxZWkVEX05PX05PUk1TLCBuZXcgS2V5
d29yZEFuYWx5emVyKCkpLAorICAgIENPTU1FTlQJCSAgICAoImNvbW1lbnQiLAkJTXVzaWNCcmFp
bnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRCksCisgICAgQ09VTlRSWSAgICAg
ICAgICgiY291bnRyeSIsICAgICBNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9OT1RfU1RPUkVE
X0FOQUxZWkVEX05PX05PUk1TLCBuZXcgQ2FzZUluc2Vuc2l0aXZlS2V5d29yZEFuYWx5emVyKCkp
LAorICAgIEVORAkJCSAgICAoImVuZCIsCQkJTXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9U
X1NUT1JFRF9OT1RfQU5BTFlaRURfTk9fTk9STVMsIG5ldyBLZXl3b3JkQW5hbHl6ZXIoKSksCisg
ICAgRU5ERUQgICAgICAgICAgICgiZW5kZWQiLCAgICAgICBNdXNpY0JyYWluekZpZWxkVHlwZXMu
VEVYVF9OT1RfU1RPUkVEX0FOQUxZWkVEX05PX05PUk1TLCBuZXcgQ2FzZUluc2Vuc2l0aXZlS2V5
d29yZEFuYWx5emVyKCkpLAorICAgIEdFTkRFUiAgICAgICAgICAoImdlbmRlciIsICAgICAgTXVz
aWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRF9OT19OT1JNUywgbmV3
IENhc2VJbnNlbnNpdGl2ZUtleXdvcmRBbmFseXplcigpKSwKKyAgICBJUEkgICAgICAgICAgICAg
KCJpcGkiLCAgICAgICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfQU5B
TFlaRURfTk9fTk9STVMsIG5ldyBDYXNlSW5zZW5zaXRpdmVLZXl3b3JkQW5hbHl6ZXIoKSksCisg
ICAgU09SVE5BTUUJICAgICgic29ydG5hbWUiLAlNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9O
T1RfU1RPUkVEX0FOQUxZWkVEKSwKKyAgICBUQUcJCSAgICAgICAgKCJ0YWciLAkJICAgIE11c2lj
QnJhaW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfQU5BTFlaRUQsIG5ldyBNdXNpY2JyYWlu
eldpdGhQb3NHYXBBbmFseXplcigpKSwKKyAgICBUWVBFCQkgICAgKCJ0eXBlIiwJCU11c2ljQnJh
aW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfQU5BTFlaRURfTk9fTk9STVMsIG5ldyBDYXNl
SW5zZW5zaXRpdmVLZXl3b3JkQW5hbHl6ZXIoKSksCisgICAgQVJUSVNUX1NUT1JFICAgICgiYXJ0
aXN0c3RvcmUiLCBNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9TVE9SRURfTk9UX0lOREVYRUQp
LAogICAgIDsKIAogCgpNb2RpZmllZDogc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFp
bi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvTGFiZWxJbmRleC5qYXZhCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL21haW4vamF2YS9vcmcvbXVz
aWNicmFpbnovc2VhcmNoL2luZGV4L0xhYmVsSW5kZXguamF2YQkyMDEzLTA1LTAyIDIwOjM4OjA1
IFVUQyAocmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9q
YXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvTGFiZWxJbmRleC5qYXZhCTIwMTMtMDUt
MDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC0yMTYsMTAgKzIxNiwxMCBAQAogCiAKICAg
ICAgICAgaWYocnMuZ2V0Qm9vbGVhbigiZW5kZWQiKSkgewotICAgICAgICAgICAgZG9jLmFkZEZp
ZWxkT3JVbmtub3duKEFydGlzdEluZGV4RmllbGQuRU5ERUQsICJ0cnVlIik7CisgICAgICAgICAg
ICBkb2MuYWRkRmllbGRPclVua25vd24oTGFiZWxJbmRleEZpZWxkLkVOREVELCAidHJ1ZSIpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZG9jLmFkZEZpZWxkT3JVbmtu
b3duKEFydGlzdEluZGV4RmllbGQuRU5ERUQsICJmYWxzZSIpOworICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkT3JVbmtub3duKExhYmVsSW5kZXhGaWVsZC5FTkRFRCwgImZhbHNlIik7CiAgICAgICAg
IH0KIAogICAgICAgICBkb2MuYWRkTm9uRW1wdHlGaWVsZChMYWJlbEluZGV4RmllbGQuQkVHSU4s
CkBAIC0yNTEsNyArMjUxLDcgQEAKIAogICAgICAgICBpZiAoaXBpQ29kZXMuY29udGFpbnNLZXko
bGFiZWxJZCkpIHsKICAgICAgICAgICAgIGZvciAoU3RyaW5nIGlwaUNvZGUgOiBpcGlDb2Rlcy5n
ZXQobGFiZWxJZCkpIHsKLSAgICAgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhG
aWVsZC5JUEksIGlwaUNvZGUpOworICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChMYWJlbElu
ZGV4RmllbGQuSVBJLCBpcGlDb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCgpNb2Rp
ZmllZDogc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2Jy
YWluei9zZWFyY2gvaW5kZXgvUmVjb3JkaW5nSW5kZXhGaWVsZC5qYXZhCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL21haW4vamF2YS9vcmcvbXVzaWNicmFpbnov
c2VhcmNoL2luZGV4L1JlY29yZGluZ0luZGV4RmllbGQuamF2YQkyMDEzLTA1LTAyIDIwOjM4OjA1
IFVUQyAocmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9pbmRleC9zcmMvbWFpbi9q
YXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvaW5kZXgvUmVjb3JkaW5nSW5kZXhGaWVsZC5qYXZh
CTIwMTMtMDUtMDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC0xOSw3ICsxOSw2IEBACiAg
ICAgQVJUSVNUICAgICAgICAgICAgICAgICAgKCJhcnRpc3QiLCAgICAgICAgICAgICAgTXVzaWNC
cmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRCwgbmV3IE11c2ljYnJhaW56
V2l0aFBvc0dhcEFuYWx5emVyKCkpLAogICAgIEFSVElTVF9OQU1FICAgICAgICAgICAgICgiYXJ0
aXN0bmFtZSIsCQkgICAgTXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFM
WVpFRCwgbmV3IE11c2ljYnJhaW56V2l0aFBvc0dhcEFuYWx5emVyKCkpLAogICAgIEFSVElTVF9O
QU1FQ1JFRElUICAgICAgICgiY3JlZGl0bmFtZSIsCSAgICAgICAgTXVzaWNCcmFpbnpGaWVsZFR5
cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRCwgbmV3IE11c2ljYnJhaW56V2l0aFBvc0dhcEFu
YWx5emVyKCkpLAotICAgIEFSVElTVF9DUkVESVQgICAgICAgICAgICgiYXJ0aXN0Y3JlZGl0Iiwg
ICAgICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9OT1RfSU5ERVhFRCksCiAg
ICAgQ09NTUVOVAkJICAgICAgICAgICAgKCJjb21tZW50IiwJCSAgICAgICAgTXVzaWNCcmFpbnpG
aWVsZFR5cGVzLlRFWFRfTk9UX1NUT1JFRF9BTkFMWVpFRCksCiAgICAgQ09VTlRSWQkJCSAgICAg
ICAgKCJjb3VudHJ5IiwJCSAgICAgICAgTXVzaWNCcmFpbnpGaWVsZFR5cGVzLlRFWFRfTk9UX1NU
T1JFRF9BTkFMWVpFRF9OT19OT1JNUywgbmV3IENhc2VJbnNlbnNpdGl2ZUtleXdvcmRBbmFseXpl
cigpKSwKICAgICBEVVJBVElPTgkJCSAgICAoImR1ciIsCQkJICAgICAgICBNdXNpY0JyYWluekZp
ZWxkVHlwZXMuVEVYVF9OT1RfU1RPUkVEX05PVF9BTkFMWVpFRF9OT19OT1JNUywgbmV3IEtleXdv
cmRBbmFseXplcigpKSwKQEAgLTQ0LDggKzQzLDggQEAKICAgICBSRUxFQVNFX1RZUEUgICAgICAg
ICAgICAoInR5cGUiLCAgICAgICAgICAgICAgICBNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9O
T1RfU1RPUkVEX0FOQUxZWkVEX05PX05PUk1TLCBuZXcgQ2FzZUluc2Vuc2l0aXZlS2V5d29yZEFu
YWx5emVyKCkpLAogICAgIFJFTEVBU0VHUk9VUF9JRAkgICAgICAgICgicmdpZCIsCQkJICAgIE11
c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfTk9UX0FOQUxZWkVEX05PX05PUk1T
LCBuZXcgS2V5d29yZEFuYWx5emVyKCkpLAogICAgIFRBRwkJICAgICAgICAgICAgICAgICgidGFn
IiwJCSAgICAgICAgICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX05PVF9TVE9SRURfQU5B
TFlaRUQsIG5ldyBNdXNpY2JyYWlueldpdGhQb3NHYXBBbmFseXplcigpKSwKLSAgICBUUkFDS05V
TQkJCSAgICAoInRudW0iLAkJICAgICAgICBNdXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9TVE9S
RURfTk9UX0FOQUxZWkVELCBuZXcgS2V5d29yZEFuYWx5emVyKCkpLAotICAgIFRSQUNLX0lEICAg
ICAgICAgICAgICAgICgidGlkIiwJCSAgICAgICAgICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5U
RVhUX1NUT1JFRF9OT1RfQU5BTFlaRURfTk9fTk9STVMsIG5ldyBLZXl3b3JkQW5hbHl6ZXIoKSks
CisgICAgVFJBQ0tOVU0JCQkgICAgKCJ0bnVtIiwJCSAgICAgICAgTXVzaWNCcmFpbnpGaWVsZFR5
cGVzLlRFWFRfU1RPUkVEX05PVF9BTkFMWVpFRF9OT19OT1JNUywgbmV3IEtleXdvcmRBbmFseXpl
cigpKSwKKyAgICBUUkFDS19JRCAgICAgICAgICAgICAgICAoInRpZCIsCQkgICAgICAgICAgICBN
dXNpY0JyYWluekZpZWxkVHlwZXMuVEVYVF9OT1RfU1RPUkVEX05PVF9BTkFMWVpFRF9OT19OT1JN
UywgbmV3IEtleXdvcmRBbmFseXplcigpKSwKICAgICBSRUNPUkRJTkdfU1RPUkUJCSAgICAgKCJy
ZWNvcmRpbmdzdG9yZSIsICAgIE11c2ljQnJhaW56RmllbGRUeXBlcy5URVhUX1NUT1JFRF9OT1Rf
SU5ERVhFRCksCiAKIAoKTW9kaWZpZWQ6IHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL21h
aW4vamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL2luZGV4L1JlbGVhc2VJbmRleC5qYXZhCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL21haW4vamF2YS9vcmcv
bXVzaWNicmFpbnovc2VhcmNoL2luZGV4L1JlbGVhc2VJbmRleC5qYXZhCTIwMTMtMDUtMDIgMjA6
Mzg6MDUgVVRDIChyZXYgMTM2NzcpCisrKyBzZWFyY2hfc2VydmVyL3RydW5rL2luZGV4L3NyYy9t
YWluL2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9pbmRleC9SZWxlYXNlSW5kZXguamF2YQky
MDEzLTA1LTA4IDE2OjA5OjI3IFVUQyAocmV2IDEzNjc4KQpAQCAtNjQ2LDggKzY0Niw4IEBACiAg
ICAgICAgIH0KICAgICAgICAgYnVpbGRDbG9jay5zdXNwZW5kKCk7CiAgICAgICAgIHN0b3JlQ2xv
Y2sucmVzdW1lKCk7Ci0gICAgICAgIFN0cmluZyBqc29uID0gTU1EU2VyaWFsaXplci5zZXJpYWxp
emUocmVsZWFzZSk7Ci0gICAgICAgIGRvYy5hZGRGaWVsZChSZWxlYXNlSW5kZXhGaWVsZC5SRUxF
QVNFX1NUT1JFLCBqc29uKTsKKyAgICAgICAgU3RyaW5nIHN0b3JlID0gTU1EU2VyaWFsaXplci5z
ZXJpYWxpemUocmVsZWFzZSk7CisgICAgICAgIGRvYy5hZGRGaWVsZChSZWxlYXNlSW5kZXhGaWVs
ZC5SRUxFQVNFX1NUT1JFLCBzdG9yZSk7CiAgICAgICAgIHN0b3JlQ2xvY2suc3VzcGVuZCgpOwog
ICAgICAgICByZXR1cm4gZG9jLmdldEx1Y2VuZURvY3VtZW50KCk7CiAgICAgfQoKTW9kaWZpZWQ6
IHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL3Rlc3QvamF2YS9vcmcvbXVzaWNicmFpbnov
c2VhcmNoL2luZGV4L0FydGlzdEluZGV4VGVzdC5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlYXJjaF9z
ZXJ2ZXIvdHJ1bmsvaW5kZXgvc3JjL3Rlc3QvamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL2lu
ZGV4L0FydGlzdEluZGV4VGVzdC5qYXZhCTIwMTMtMDUtMDIgMjA6Mzg6MDUgVVRDIChyZXYgMTM2
NzcpCisrKyBzZWFyY2hfc2VydmVyL3RydW5rL2luZGV4L3NyYy90ZXN0L2phdmEvb3JnL211c2lj
YnJhaW56L3NlYXJjaC9pbmRleC9BcnRpc3RJbmRleFRlc3QuamF2YQkyMDEzLTA1LTA4IDE2OjA5
OjI3IFVUQyAocmV2IDEzNjc4KQpAQCAtNiw2ICs2LDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLmx1
Y2VuZS5pbmRleC5JbmRleFdyaXRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zdG9yZS5S
QU1EaXJlY3Rvcnk7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLm11c2ljYnJh
aW56Lm1tZDIuQXJ0aXN0OworaW1wb3J0IG9yZy5tdXNpY2JyYWluei5tbWQyLlJlbGVhc2U7CiAK
IGltcG9ydCBqYXZhLnNxbC5TdGF0ZW1lbnQ7CiAKQEAgLTEyMywyMCArMTI1LDEzIEBACiAgICAg
ICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7CiAgICAgICAgICAg
ICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFs
cygwLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQUxJQVMuZ2V0TmFtZSgpKS5sZW5n
dGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5k
ZXhGaWVsZC5BUlRJU1QuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1
YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0TmFtZSgp
KS5sZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0
aXN0SW5kZXhGaWVsZC5TT1JUTkFNRS5nZXROYW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBh
c3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLkJFR0lOLmdldE5h
bWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBkb2MuZ2V0RmllbGRz
KEFydGlzdEluZGV4RmllbGQuRU5ELmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVC5nZXRO
YW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxk
cyhBcnRpc3RJbmRleEZpZWxkLlRZUEUuZ2V0TmFtZSgpKS5sZW5ndGgpOwotCi0gICAgICAgICAg
ICBhc3NlcnRFcXVhbHMoIkZhcm1pbmcgSW5jaWRlbnQiLCBkb2MuZ2V0RmllbGQoQXJ0aXN0SW5k
ZXhGaWVsZC5BUlRJU1QuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdl
dEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkuc3RyaW5nVmFsdWUo
KSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIkZhcm1pbmcgSW5jaWRlbnQiLCBkb2MuZ2V0
RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRS5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkp
OwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCIxOTk5LTA0IiwgZG9jLmdldEZpZWxkKEFydGlz
dEluZGV4RmllbGQuQkVHSU4uZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgICAg
IGFzc2VydEVxdWFscygiR3JvdXAiLCBkb2MuZ2V0RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBF
LmdldE5hbWUoKSkuc3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICBjaGVja1Rlcm0oaXIsIEFy
dGlzdEluZGV4RmllbGQuQVJUSVNULCAiZmFybWluZyIpOworICAgICAgICAgICAgY2hlY2tUZXJt
WChpciwgQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QsICJpbmNpZGVudCIsMSk7CisgICAgICAgICAg
ICBjaGVja1Rlcm0oaXIsIEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELCAiNDMwMmUyNjQtMWNm
MC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7CisgICAgICAgICAgICBjaGVja1Rlcm0oaXIsIEFy
dGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJmYXJtaW5nIik7CisgICAgICAgICAgICBjaGVja1Rl
cm1YKGlyLCBBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1FLCAiaW5jaWRlbnQiLCAxKTsKKyAgICAg
ICAgICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTiwgIjE5OTktMDQiKTsK
KyAgICAgICAgICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAiZ3JvdXAi
KTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogCkBAIC0xNTIsOSArMTQ3LDcgQEAK
ICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3RvcnlSZWFkZXIub3BlbihyYW1EaXIpOwog
ICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygpKTsKICAgICAgICAgewotICAgICAg
ICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7Ci0gICAgICAgICAgICBhc3NlcnRF
cXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLlRZUEUuZ2V0TmFtZSgpKS5s
ZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJHcm91cCIsIGRvYy5nZXRGaWVsZChB
cnRpc3RJbmRleEZpZWxkLlRZUEUuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAiZ3JvdXAiKTsKICAgICAg
ICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTE2OSw5ICsxNjIsOSBAQAogICAg
ICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURpcik7CiAgICAg
ICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFs
cygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVC5nZXROYW1lKCkpLmxl
bmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImEgY29tbWVudCIsIGRvYy5nZXRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKKyAg
ICAgICAgICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULCAiYSIpOwor
ICAgICAgICAgICAgY2hlY2tUZXJtWChpciwgQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULCAiY29t
bWVudCIsIDEpOworCiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9CkBAIC0x
ODYsOSArMTc5LDcgQEAKICAgICAgICAgICAgIEluZGV4UmVhZGVyIGlyID0gRGlyZWN0b3J5UmVh
ZGVyLm9wZW4ocmFtRGlyKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2Nz
KCkpOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIERvY3VtZW50IGRvYyA9IGlyLmRv
Y3VtZW50KDEpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRz
KEFydGlzdEluZGV4RmllbGQuQ09VTlRSWS5nZXROYW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWxzKCJhZiIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNP
VU5UUlkuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Rl
cm0oaXIsIEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgImFmIik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpci5jbG9zZSgpOwogICAgICAgICB9CkBAIC0yMDQsOSArMTk1LDggQEAKICAg
ICAgICAgICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURp
cik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGlyLm51bURvY3MoKSk7CiAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjaGVja1Rlcm0oaXIsIEFydGlzdElu
ZGV4RmllbGQuSVBJLCAiMTAwMDEiKTsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQgZG9j
ID0gaXIuZG9jdW1lbnQoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBk
b2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuSVBJLmdldE5hbWUoKSkubGVuZ3RoKTsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCIxMDAwMSIsIGRvYy5nZXRGaWVsZChBcnRp
c3RJbmRleEZpZWxkLklQSS5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpci5jbG9zZSgpOwogICAgICAgICAgICAgfQpAQCAtMjIx
LDkgKzIxMSw3IEBACiAgICAgICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRl
ci5vcGVuKHJhbURpcik7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygp
KTsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1
bWVudCgxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhB
cnRpc3RJbmRleEZpZWxkLkNPVU5UUlkuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFscygidW5rbm93biIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxk
LkNPVU5UUlkuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBjaGVj
a1Rlcm0oaXIsIEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgInVua25vd24iKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlyLmNsb3NlKCk7CiAgICAgICAgIH0KQEAgLTIzOCw5ICsyMjYs
NyBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURp
cik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuR0VOREVSLmdldE5h
bWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygibWFsZSIsIGRvYy5nZXRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRFUi5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwor
ICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkdFTkRFUiwgIm1hbGUi
KTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTI1NSw5ICsyNDEs
NyBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURp
cik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuR0VOREVSLmdldE5h
bWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidW5rbm93biIsIGRvYy5n
ZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRFUi5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkp
OworICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkdFTkRFUiwgInVu
a25vd24iKTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTI5NSwy
MiArMjc5LDggQEAKICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3RvcnlSZWFkZXIub3Bl
bihyYW1EaXIpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygpKTsKICAgICAg
ICAgewotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7Ci0gICAgICAg
ICAgICBhc3NlcnRFcXVhbHMoNCwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLkFMSUFT
LmdldE5hbWUoKSkubGVuZ3RoKTsgLy9hbGlhc2VzIGFyZSBzZWFyY2hhYmxlIGJ1dCBub3Qgc3Rv
cmVkCi0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRl
eEZpZWxkLkFSVElTVC5nZXROYW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVh
bHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkp
Lmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRp
c3RJbmRleEZpZWxkLlNPUlROQU1FLmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQkVHSU4uZ2V0TmFt
ZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMo
QXJ0aXN0SW5kZXhGaWVsZC5FTkQuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAgYXNz
ZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULmdldE5h
bWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRz
KEFydGlzdEluZGV4RmllbGQuVFlQRS5nZXROYW1lKCkpLmxlbmd0aCk7CisgICAgICAgICAgICBj
aGVja1Rlcm0oaXIsIEFydGlzdEluZGV4RmllbGQuQUxJQVMsICJhbmQiKTsKIAotICAgICAgICAg
ICAgYXNzZXJ0RXF1YWxzKCJFY2hvICYgVGhlIEJ1bm55bWVuIiwgZG9jLmdldEZpZWxkKEFydGlz
dEluZGV4RmllbGQuQVJUSVNULmdldE5hbWUoKSkuc3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgICAg
ICBhc3NlcnRFcXVhbHMoImNjZDQ4NzljLTVlODgtNDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIsIGRv
Yy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpLnN0cmluZ1Zh
bHVlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJFY2hvICYgVGhlIEJ1bm55bWVuIiwg
ZG9jLmdldEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5BTUUuZ2V0TmFtZSgpKS5zdHJpbmdW
YWx1ZSgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiMTk3OCIsIGRvYy5nZXRGaWVsZChB
cnRpc3RJbmRleEZpZWxkLkJFR0lOLmdldE5hbWUoKSkuc3RyaW5nVmFsdWUoKSk7Ci0gICAgICAg
ICAgICBhc3NlcnRFcXVhbHMoIkdyb3VwIiwgZG9jLmdldEZpZWxkKEFydGlzdEluZGV4RmllbGQu
VFlQRS5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxz
KCJhIGNvbW1lbnQiLCBkb2MuZ2V0RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULmdldE5h
bWUoKSkuc3RyaW5nVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAg
ICB9CkBAIC0zMzAsOSArMzAwLDcgQEAKICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3Rv
cnlSZWFkZXIub3BlbihyYW1EaXIpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9j
cygpKTsKICAgICAgICAgewotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQo
MSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRl
eEZpZWxkLkJFR0lOLmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFs
cygiMTk3OCIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkJFR0lOLmdldE5hbWUoKSku
c3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICBjaGVja1Rlcm0oaXIsIEFydGlzdEluZGV4Rmll
bGQuQkVHSU4sICIxOTc4Iik7CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9
CkBAIC0zNTIsOSArMzIwLDcgQEAKICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3RvcnlS
ZWFkZXIub3BlbihyYW1EaXIpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygp
KTsKICAgICAgICAgewotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7
Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZp
ZWxkLkVOREVELmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygi
dHJ1ZSIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkVOREVELmdldE5hbWUoKSkuc3Ry
aW5nVmFsdWUoKSk7CisgICAgICAgICAgICBjaGVja1Rlcm0oaXIsIEFydGlzdEluZGV4RmllbGQu
RU5ERUQsICJ0cnVlIik7CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9CkBA
IC0zNzUsOSArMzQxLDcgQEAKICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3RvcnlSZWFk
ZXIub3BlbihyYW1EaXIpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygpKTsK
ICAgICAgICAgewotICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7Ci0g
ICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxk
LkVOREVELmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiZmFs
c2UiLCBkb2MuZ2V0RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5FTkRFRC5nZXROYW1lKCkpLnN0cmlu
Z1ZhbHVlKCkpOworICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkVO
REVELCAiZmFsc2UiKTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAg
LTM5OSw5ICszNjMsNyBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRl
ci5vcGVuKHJhbURpcik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAg
ICAgICAgICAgIGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQu
RU5ELmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiMTk5NSIs
IGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkVORC5nZXROYW1lKCkpLnN0cmluZ1ZhbHVl
KCkpOworICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkVORCwgIjE5
OTUiKTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTQyMSw5ICsz
ODMsNyBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJh
bURpcik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAgICAgICAg
IGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuVFlQRS5nZXRO
YW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIlBlcnNvbiIsIGRvYy5n
ZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsK
KyAgICAgICAgICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAicGVyc29u
Iik7CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9CkBAIC00NDQsOSArNDA0
LDcgQEAKICAgICAgICAgSW5kZXhSZWFkZXIgaXIgPSBEaXJlY3RvcnlSZWFkZXIub3BlbihyYW1E
aXIpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgaXIubnVtRG9jcygpKTsKICAgICAgICAgewot
ICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7Ci0gICAgICAgICAgICBh
c3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQuZ2V0
TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCItIiwgZG9jLmdldEZp
ZWxkKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVC5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwor
ICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQsICItIik7
CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9CkBAIC00ODksMTUgKzQ0Nywx
MCBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURp
cik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7CisK
KwogICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7CiAgICAgICAgICAg
ICBhc3NlcnRFcXVhbHMoMCwgZG9jLmdldEZpZWxkcyhBcnRpc3RJbmRleEZpZWxkLkVORC5nZXRO
YW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgZG9jLmdldEZpZWxk
cyhBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAg
ICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLmdl
dE5hbWUoKSkubGVuZ3RoKTsKLQotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJTaW9iaGFuIEx5
bmNoIiwgZG9jLmdldEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNULmdldE5hbWUoKSkuc3Ry
aW5nVmFsdWUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFlODcwN2I2LTY4NGMtNGQ0
YS05NWM1LWQxMTc5NzBhNmRmZSIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElT
VF9JRC5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxz
KCJMeW5jaCwgU2lvYmhhbiIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1F
LmdldE5hbWUoKSkuc3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIlBl
cnNvbiIsIGRvYy5nZXRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUuZ2V0TmFtZSgpKS5zdHJp
bmdWYWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTUx
NywxMSArNDcwLDEyIEBACiAgICAgICAgIEluZGV4UmVhZGVyIGlyID0gRGlyZWN0b3J5UmVhZGVy
Lm9wZW4ocmFtRGlyKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGlyLm51bURvY3MoKSk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIERvY3VtZW50IGRvYyA9IGlyLmRvY3VtZW50KDEpOwotICAg
ICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1QuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRv
Yy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRS5nZXROYW1lKCkpLmxlbmd0aCk7
Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIlNpb2JoYW4gTHluY2giLCBkb2MuZ2V0RmllbGQo
QXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKLSAgICAg
ICAgICAgIGFzc2VydEVxdWFscygiTHluY2gsIFNpb2JoYW4iLCBkb2MuZ2V0RmllbGQoQXJ0aXN0
SW5kZXhGaWVsZC5TT1JUTkFNRS5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOworICAgICAgICAg
ICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgImx5bmNoIik7CisgICAg
ICAgICAgICBjaGVja1Rlcm1YKGlyLCBBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgInNpb2JoYW4i
LCAxKTsKKworICAgICAgICAgICAgY2hlY2tUZXJtKGlyLCBBcnRpc3RJbmRleEZpZWxkLlNPUlRO
QU1FLCAibHluY2giKTsKKyAgICAgICAgICAgIGNoZWNrVGVybVgoaXIsIEFydGlzdEluZGV4Rmll
bGQuU09SVE5BTUUsICJzaW9iaGFuIiwxKTsKKwogICAgICAgICB9CiAgICAgICAgIGlyLmNsb3Nl
KCk7CiAgICAgfQpAQCAtNTQyLDEyICs0OTYsNyBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9
IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURpcik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBp
ci5udW1Eb2NzKCkpOwogICAgICAgICB7Ci0gICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5k
b2N1bWVudCgxKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFy
dGlzdEluZGV4RmllbGQuQVJUSVNULmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFz
c2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuVEFHLmdldE5hbWUo
KSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiR290aCIsIGRvYy5nZXRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLlRBRy5nZXROYW1lKCkpLnN0cmluZ1ZhbHVlKCkpOwotICAgICAg
ICAgICAgYXNzZXJ0RXF1YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5UQUdD
T1VOVC5nZXROYW1lKCkpLmxlbmd0aCk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIjEwIiwg
ZG9jLmdldEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHQ09VTlQuZ2V0TmFtZSgpKS5zdHJpbmdW
YWx1ZSgpKTsKKyAgICAgICAgICAgIGNoZWNrVGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5UQUcs
ICJnb3RoIik7CiAgICAgICAgIH0KICAgICAgICAgaXIuY2xvc2UoKTsKICAgICB9CkBAIC01Njcs
MTEgKzUxNiwxMCBAQAogICAgICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5v
cGVuKHJhbURpcik7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBpci5kb2N1bWVudCgxKTsKLSAgICAg
ICAgICAgIGFzc2VydEVxdWFscygxLCBkb2MuZ2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQVJU
SVNULmdldE5hbWUoKSkubGVuZ3RoKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBkb2Mu
Z2V0RmllbGRzKEFydGlzdEluZGV4RmllbGQuQUxJQVMuZ2V0TmFtZSgpKS5sZW5ndGgpOwotICAg
ICAgICAgICAgYXNzZXJ0RXF1YWxzKCJTIEx5bmNoIiwgZG9jLmdldEZpZWxkKEFydGlzdEluZGV4
RmllbGQuQUxJQVMuZ2V0TmFtZSgpKS5zdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGNoZWNr
VGVybShpciwgQXJ0aXN0SW5kZXhGaWVsZC5BTElBUywgImx5bmNoIik7CisgICAgICAgICAgICBj
aGVja1Rlcm1YKGlyLCBBcnRpc3RJbmRleEZpZWxkLkFMSUFTLCAicyIsIDEpOwogCisKICAgICAg
ICAgfQogICAgICAgICBpci5jbG9zZSgpOwogICAgIH0KQEAgLTU5MSw4ICs1MzksOCBAQAogICAg
ICAgICBJbmRleFJlYWRlciBpciA9IERpcmVjdG9yeVJlYWRlci5vcGVuKHJhbURpcik7CiAgICAg
ICAgIGFzc2VydEVxdWFscygyLCBpci5udW1Eb2NzKCkpOwogICAgICAgICB7CisKICAgICAgICAg
ICAgIERvY3VtZW50IGRvYyA9IGlyLmRvY3VtZW50KDEpOwotICAgICAgICAgICAgYXNzZXJ0RXF1
YWxzKDEsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QuZ2V0TmFtZSgpKS5s
ZW5ndGgpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGRvYy5nZXRGaWVsZHMoQXJ0aXN0
SW5kZXhGaWVsZC5BTElBUy5nZXROYW1lKCkpLmxlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAg
aXIuY2xvc2UoKTsKQEAgLTYxNyw0ICs1NjUsMzAgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFs
cygiMTIiLCBkb2MuZ2V0RmllbGQoTWV0YUluZGV4RmllbGQuU0NIRU1BX1NFUVVFTkNFLmdldE5h
bWUoKSkuc3RyaW5nVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CisKKworICAgIC8qKgorICAg
ICAqIEB0aHJvd3MgRXhjZXB0aW9uIGV4Y2VwdGlvbgorICAgICAqLworICAgIEBUZXN0CisgICAg
cHVibGljIHZvaWQgdGVzdFN0b3JlZEFydGlzdCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAg
ICAgIGFkZEFydGlzdE9uZSgpOworICAgICAgICBSQU1EaXJlY3RvcnkgcmFtRGlyID0gbmV3IFJB
TURpcmVjdG9yeSgpOworICAgICAgICBjcmVhdGVJbmRleChyYW1EaXIpOworCisgICAgICAgIElu
ZGV4UmVhZGVyIGlyID0gRGlyZWN0b3J5UmVhZGVyLm9wZW4ocmFtRGlyKTsKKyAgICAgICAgYXNz
ZXJ0RXF1YWxzKDIsIGlyLm51bURvY3MoKSk7CisgICAgICAgIHsKKworICAgICAgICAgICAgRG9j
dW1lbnQgZG9jID0gaXIuZG9jdW1lbnQoMSk7CisgICAgICAgICAgICBBcnRpc3QgYXJ0aXN0ID0g
KEFydGlzdCkgTU1EU2VyaWFsaXplci51bnNlcmlhbGl6ZShkb2MuZ2V0KEFydGlzdEluZGV4Rmll
bGQuQVJUSVNUX1NUT1JFLmdldE5hbWUoKSksIEFydGlzdC5jbGFzcyk7CisgICAgICAgICAgICBh
c3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGFydGlz
dC5nZXRJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygiRmFybWluZyBJbmNpZGVudCIs
IGFydGlzdC5nZXROYW1lKCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJBRiIsIGFydGlz
dC5nZXRDb3VudHJ5KCkpOworCisKKyAgICAgICAgfQorICAgICAgICBpci5jbG9zZSgpOworICAg
IH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpNb2RpZmllZDogc2VhcmNoX3NlcnZl
ci90cnVuay9zZXJ2bGV0L3NyYy9tYWluL2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2
bGV0L21tZDEvQXJ0aXN0TW1kMVhtbFdyaXRlci5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlYXJjaF9z
ZXJ2ZXIvdHJ1bmsvc2VydmxldC9zcmMvbWFpbi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gv
c2VydmxldC9tbWQxL0FydGlzdE1tZDFYbWxXcml0ZXIuamF2YQkyMDEzLTA1LTAyIDIwOjM4OjA1
IFVUQyAocmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy9tYWlu
L2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L21tZDEvQXJ0aXN0TW1kMVhtbFdy
aXRlci5qYXZhCTIwMTMtMDUtMDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC0yOCwxMCAr
MjgsMTMgQEAKIAogcGFja2FnZSBvcmcubXVzaWNicmFpbnouc2VhcmNoLnNlcnZsZXQubW1kMTsK
IAoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuU3RyaW5nczsKIGltcG9ydCBjb20uanRo
aW5rLmJyYWluei5tbWQuKjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy5TdHJpbmdV
dGlsczsKIGltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLk1iRG9jdW1lbnQ7CiBpbXBvcnQg
b3JnLm11c2ljYnJhaW56LnNlYXJjaC5pbmRleC5BcnRpc3RJbmRleEZpZWxkOworaW1wb3J0IG9y
Zy5tdXNpY2JyYWluei5zZWFyY2guaW5kZXguTU1EU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcubXVz
aWNicmFpbnouc2VhcmNoLmluZGV4LlJlbGVhc2VJbmRleEZpZWxkOwogaW1wb3J0IG9yZy5tdXNp
Y2JyYWluei5zZWFyY2guc2VydmxldC5SZXN1bHQ7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNl
YXJjaC5zZXJ2bGV0LlJlc3VsdHM7CiAKQEAgLTUzLDQ5ICs1Niw0MCBAQAogICAgICAgICAgICAg
TWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7CiAgICAgICAgICAgICBBcnRpc3QgYXJ0
aXN0ID0gb2YuY3JlYXRlQXJ0aXN0KCk7CiAKLSAgICAgICAgICAgIGFydGlzdC5zZXRJZChkb2Mu
Z2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBh
cnR5cGUgPSBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuVFlQRSk7Ci0gICAgICAgICAgICBpZiAo
aXNOb3RVbmtub3duKGFydHlwZSkpIHsKLSAgICAgICAgICAgICAgICBhcnRpc3Quc2V0VHlwZShT
dHJpbmdVdGlscy5jYXBpdGFsaXplKGFydHlwZSkpOwotICAgICAgICAgICAgfQotCiAgICAgICAg
ICAgICByZXN1bHQuc2V0Tm9ybWFsaXplZFNjb3JlKHJlc3VsdHMuZ2V0TWF4U2NvcmUoKSk7CiAg
ICAgICAgICAgICBhcnRpc3QuZ2V0T3RoZXJBdHRyaWJ1dGVzKCkucHV0KGdldFNjb3JlKCksIFN0
cmluZy52YWx1ZU9mKHJlc3VsdC5nZXROb3JtYWxpemVkU2NvcmUoKSkpOwogCi0gICAgICAgICAg
ICBTdHJpbmcgbmFtZSA9IGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QpOwotICAgICAg
ICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGFydGlzdC5zZXROYW1l
KG5hbWUpOworICAgICAgICAgICAgb3JnLm11c2ljYnJhaW56Lm1tZDIuQXJ0aXN0IGFydGlzdHYy
CisgICAgICAgICAgICAgICAgICAgID0gKG9yZy5tdXNpY2JyYWluei5tbWQyLkFydGlzdCkgTU1E
U2VyaWFsaXplci51bnNlcmlhbGl6ZShkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NU
T1JFKSwgb3JnLm11c2ljYnJhaW56Lm1tZDIuQXJ0aXN0LmNsYXNzKTsKKyAgICAgICAgICAgIGFy
dGlzdC5zZXRJZChhcnRpc3R2Mi5nZXRJZCgpKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRUeXBl
KFN0cmluZ1V0aWxzLmNhcGl0YWxpemUoYXJ0aXN0djIuZ2V0VHlwZSgpKSk7CisgICAgICAgICAg
ICBhcnRpc3Quc2V0TmFtZShhcnRpc3R2Mi5nZXROYW1lKCkpOwogCisgICAgICAgICAgICBpZigh
U3RyaW5ncy5pc051bGxPckVtcHR5KGFydGlzdHYyLmdldFNvcnROYW1lKCkpKSB7CisgICAgICAg
ICAgICAgICAgYXJ0aXN0LnNldFNvcnROYW1lKGFydGlzdHYyLmdldFNvcnROYW1lKCkpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBTdHJpbmcgc29ydG5hbWUgPSBkb2MuZ2V0KEFydGlz
dEluZGV4RmllbGQuU09SVE5BTUUpOwotICAgICAgICAgICAgaWYgKHNvcnRuYW1lICE9IG51bGwp
IHsKLSAgICAgICAgICAgICAgICBhcnRpc3Quc2V0U29ydE5hbWUoc29ydG5hbWUpOwotCisgICAg
ICAgICAgICBpZighU3RyaW5ncy5pc051bGxPckVtcHR5KGFydGlzdHYyLmdldERpc2FtYmlndWF0
aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgYXJ0aXN0LnNldERpc2FtYmlndWF0aW9uKGFydGlz
dHYyLmdldERpc2FtYmlndWF0aW9uKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBT
dHJpbmcgYmVnaW4gPSBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQkVHSU4pOwotICAgICAgICAg
ICAgU3RyaW5nIGVuZCA9IGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5FTkQpOwotICAgICAgICAg
ICAgaWYgKGJlZ2luICE9IG51bGwgfHwgZW5kICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBM
aWZlU3BhbiBsaWZlc3BhbiA9IG9mLmNyZWF0ZUxpZmVTcGFuKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGJlZ2luICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbGlmZXNwYW4uc2V0QmVn
aW4oYmVnaW4pOworICAgICAgICAgICAgaWYoYXJ0aXN0djIuZ2V0TGlmZVNwYW4oKSE9bnVsbCkg
eworICAgICAgICAgICAgICAgIFN0cmluZyBiZWdpbiA9IGFydGlzdHYyLmdldExpZmVTcGFuKCku
Z2V0QmVnaW4oKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZW5kID0gYXJ0aXN0djIuZ2V0TGlm
ZVNwYW4oKS5nZXRFbmQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmVnaW4gIT0gbnVsbCB8fCBl
bmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBMaWZlU3BhbiBsaWZlc3BhbiA9IG9m
LmNyZWF0ZUxpZmVTcGFuKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChiZWdpbiAhPSBudWxs
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaWZlc3Bhbi5zZXRCZWdpbihiZWdpbik7CiAK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGVuZCAhPSBudWxsKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxpZmVzcGFuLnNldEVuZChlbmQpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChlbmQgIT0gbnVsbCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbGlmZXNwYW4uc2V0RW5kKGVuZCk7CiAKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgYXJ0aXN0LnNldExpZmVTcGFuKGxpZmVzcGFuKTsKLQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFydGlzdC5zZXRMaWZlU3Bhbihs
aWZlc3Bhbik7CisgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IFN0cmluZyBjb21tZW50ID0gZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQpOwotICAg
ICAgICAgICAgaWYgKGlzTm90Tm9WYWx1ZShjb21tZW50KSkgewotICAgICAgICAgICAgICAgIGFy
dGlzdC5zZXREaXNhbWJpZ3VhdGlvbihjb21tZW50KTsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICAgICAgYXJ0aXN0TGlzdC5nZXRBcnRpc3QoKS5hZGQoYXJ0aXN0KTsKIAogICAgICAgICB9CgpN
b2RpZmllZDogc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy9tYWluL2phdmEvb3JnL211
c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L21tZDIvQXJ0aXN0V3JpdGVyLmphdmEKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy9tYWluL2phdmEvb3JnL211c2lj
YnJhaW56L3NlYXJjaC9zZXJ2bGV0L21tZDIvQXJ0aXN0V3JpdGVyLmphdmEJMjAxMy0wNS0wMiAy
MDozODowNSBVVEMgKHJldiAxMzY3NykKKysrIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvc2VydmxldC9z
cmMvbWFpbi9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvc2VydmxldC9tbWQyL0FydGlzdFdy
aXRlci5qYXZhCTIwMTMtMDUtMDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC0zMiw2ICsz
Miw4IEBACiBpbXBvcnQgb3JnLm11c2ljYnJhaW56Lm1tZDIuKjsKIGltcG9ydCBvcmcubXVzaWNi
cmFpbnouc2VhcmNoLk1iRG9jdW1lbnQ7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5p
bmRleC5BcnRpc3RJbmRleEZpZWxkOworaW1wb3J0IG9yZy5tdXNpY2JyYWluei5zZWFyY2guaW5k
ZXguTU1EU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLmluZGV4LlJl
bGVhc2VJbmRleEZpZWxkOwogaW1wb3J0IG9yZy5tdXNpY2JyYWluei5zZWFyY2guc2VydmxldC5S
ZXN1bHQ7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5zZXJ2bGV0LlJlc3VsdHM7CiAK
QEAgLTg5LDEwOCArOTEsOSBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIHdyaXRlKExpc3Qg
bGlzdCwgUmVzdWx0IHJlc3VsdCkgdGhyb3dzIElPRXhjZXB0aW9uCiAgICAgewotICAgICAgICBP
YmplY3RGYWN0b3J5IG9mID0gbmV3IE9iamVjdEZhY3RvcnkoKTsKLQogICAgICAgICBNYkRvY3Vt
ZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICAgICAgQXJ0aXN0IGFydGlzdCA9IG9mLmNy
ZWF0ZUFydGlzdCgpOwotCi0gICAgICAgIGFydGlzdC5zZXRJZChkb2MuZ2V0KEFydGlzdEluZGV4
RmllbGQuQVJUSVNUX0lEKSk7CisgICAgICAgIEFydGlzdCBhcnRpc3QgPSAoQXJ0aXN0KSBNTURT
ZXJpYWxpemVyLnVuc2VyaWFsaXplKGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfU1RP
UkUpLCBBcnRpc3QuY2xhc3MpOwogICAgICAgICBhcnRpc3Quc2V0U2NvcmUoU3RyaW5nLnZhbHVl
T2YocmVzdWx0LmdldE5vcm1hbGl6ZWRTY29yZSgpKSk7Ci0KLSAgICAgICAgU3RyaW5nIGFydHlw
ZSA9IGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFKTsKLSAgICAgICAgaWYgKGlzTm90VW5r
bm93bihhcnR5cGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnRpc3Quc2V0VHlwZShhcnR5
cGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIGdlbmRlciA9IGRvYy5nZXQoQXJ0aXN0
SW5kZXhGaWVsZC5HRU5ERVIpOwotICAgICAgICBpZiAoaXNOb3RVbmtub3duKGdlbmRlcikpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGFydGlzdC5zZXRHZW5kZXIoZ2VuZGVyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIFN0cmluZyBjb3VudHJ5ID0gZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkNP
VU5UUlkpOwotICAgICAgICBpZiAoaXNOb3RVbmtub3duKGNvdW50cnkpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBhcnRpc3Quc2V0Q291bnRyeShjb3VudHJ5LnRvVXBwZXJDYXNlKExvY2FsZS5V
UykpOwotCi0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgbmFtZSA9IGRvYy5nZXQoQXJ0aXN0
SW5kZXhGaWVsZC5BUlRJU1QpOwotICAgICAgICBpZiAobmFtZSAhPSBudWxsKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhcnRpc3Quc2V0TmFtZShuYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFN0cmluZ1tdIGlwaUNvZGVzID0gZG9jLmdldFZhbHVlcyhBcnRpc3RJbmRleEZpZWxkLklQSSk7
Ci0gICAgICAgIGlmIChpcGlDb2Rlcy5sZW5ndGggPiAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBJcGlMaXN0IGlwaUxpc3QgPSBvZi5jcmVhdGVJcGlMaXN0KCk7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGlwaUNvZGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlwaUxpc3QuZ2V0SXBpKCkuYWRkKGlwaUNvZGVzW2ldKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGFydGlzdC5zZXRJcGlMaXN0KGlwaUxpc3QpOwotICAgICAgICB9
Ci0KLSAgICAgICAgU3RyaW5nIHNvcnRuYW1lID0gZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLlNP
UlROQU1FKTsKLSAgICAgICAgaWYgKHNvcnRuYW1lICE9IG51bGwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGFydGlzdC5zZXRTb3J0TmFtZShzb3J0bmFtZSk7Ci0KLSAgICAgICAgfQotCi0gICAg
ICAgIFN0cmluZyBiZWdpbiA9IGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTik7Ci0gICAg
ICAgIFN0cmluZyBlbmQgPSBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuRU5EKTsKLSAgICAgICAg
U3RyaW5nIGVuZGVkID0gZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkVOREVEKTsKLQotICAgICAg
ICBMaWZlU3BhbiBsaWZlc3BhbiA9IG9mLmNyZWF0ZUxpZmVTcGFuKCk7Ci0gICAgICAgIGFydGlz
dC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7Ci0KLSAgICAgICAgaWYgKGJlZ2luICE9IG51bGwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGxpZmVzcGFuLnNldEJlZ2luKGJlZ2luKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChlbmQgIT0gbnVsbCkKLSAgICAgICAgewotICAgICAgICAgICAgbGlm
ZXNwYW4uc2V0RW5kKGVuZCk7Ci0gICAgICAgIH0KLSAgICAgICAgbGlmZXNwYW4uc2V0RW5kZWQo
ZW5kZWQpOwotCi0gICAgICAgIFN0cmluZyBjb21tZW50ID0gZG9jLmdldChBcnRpc3RJbmRleEZp
ZWxkLkNPTU1FTlQpOwotICAgICAgICBpZiAoaXNOb3ROb1ZhbHVlKGNvbW1lbnQpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBhcnRpc3Quc2V0RGlzYW1iaWd1YXRpb24oY29tbWVudCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBTdHJpbmdbXSBhbGlhc2VzID0gZG9jLmdldFZhbHVlcyhBcnRpc3RJ
bmRleEZpZWxkLkFMSUFTKTsKLSAgICAgICAgaWYgKGFsaWFzZXMubGVuZ3RoID4gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgQWxpYXNMaXN0IGFsaWFzTGlzdCA9IG9mLmNyZWF0ZUFsaWFzTGlz
dCgpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbGlhc2VzLmxlbmd0aDsgaSsr
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFsaWFzIGFsaWFzID0gb2YuY3JlYXRl
QWxpYXMoKTsKLSAgICAgICAgICAgICAgICBhbGlhcy5zZXRDb250ZW50KGFsaWFzZXNbaV0pOwot
ICAgICAgICAgICAgICAgIGFsaWFzTGlzdC5nZXRBbGlhcygpLmFkZChhbGlhcyk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBhcnRpc3Quc2V0QWxpYXNMaXN0KGFsaWFzTGlzdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBTdHJpbmdbXSB0YWdzID0gZG9jLmdldFZhbHVlcyhBcnRpc3RJbmRl
eEZpZWxkLlRBRyk7Ci0gICAgICAgIFN0cmluZ1tdIHRhZ0NvdW50cyA9IGRvYy5nZXRWYWx1ZXMo
QXJ0aXN0SW5kZXhGaWVsZC5UQUdDT1VOVCk7Ci0gICAgICAgIGlmICh0YWdzLmxlbmd0aCA+IDAp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFRhZ0xpc3QgdGFnTGlzdCA9IG9mLmNyZWF0ZVRhZ0xp
c3QoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7IGkrKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUYWcgdGFnID0gb2YuY3JlYXRlVGFnKCk7
Ci0gICAgICAgICAgICAgICAgdGFnLnNldE5hbWUodGFnc1tpXSk7Ci0gICAgICAgICAgICAgICAg
dGFnLnNldENvdW50KG5ldyBCaWdJbnRlZ2VyKHRhZ0NvdW50c1tpXSkpOwotICAgICAgICAgICAg
ICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhcnRpc3Quc2V0VGFnTGlzdCh0YWdMaXN0KTsKLSAgICAgICAgfQogICAgICAgICBsaXN0LmFk
ZChhcnRpc3QpOwogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpNb2RpZmll
ZDogc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy90ZXN0L2phdmEvb3JnL211c2ljYnJh
aW56L3NlYXJjaC9zZXJ2bGV0L0ZpbmRBcnRpc3RUZXN0LmphdmEKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2Vh
cmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy90ZXN0L2phdmEvb3JnL211c2ljYnJhaW56L3Nl
YXJjaC9zZXJ2bGV0L0ZpbmRBcnRpc3RUZXN0LmphdmEJMjAxMy0wNS0wMiAyMDozODowNSBVVEMg
KHJldiAxMzY3NykKKysrIHNlYXJjaF9zZXJ2ZXIvdHJ1bmsvc2VydmxldC9zcmMvdGVzdC9qYXZh
L29yZy9tdXNpY2JyYWluei9zZWFyY2gvc2VydmxldC9GaW5kQXJ0aXN0VGVzdC5qYXZhCTIwMTMt
MDUtMDggMTY6MDk6MjcgVVRDIChyZXYgMTM2NzgpCkBAIC03LDYgKzcsNyBAQAogCiBpbXBvcnQg
amF2YS5pby5QcmludFdyaXRlcjsKIGltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9y
dCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKIGltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKIAogaW1wb3J0
IG9yZy5hcGFjaGUubHVjZW5lLmFuYWx5c2lzLkFuYWx5emVyOwpAQCAtMTYsNTkyICsxNyw2MTQg
QEAKIGltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zdG9yZS5SQU1EaXJlY3Rvcnk7CiBpbXBvcnQg
b3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcubXVz
aWNicmFpbnoubW1kMi4qOwogaW1wb3J0IG9yZy5tdXNpY2JyYWluei5zZWFyY2guTHVjZW5lVmVy
c2lvbjsKIGltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLk1iRG9jdW1lbnQ7CiBpbXBvcnQg
b3JnLm11c2ljYnJhaW56LnNlYXJjaC5hbmFseXNpcy5NdXNpY2JyYWluelNpbWlsYXJpdHk7Ci1p
bXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5pbmRleC5BcnRpc3RJbmRleEZpZWxkOwotaW1w
b3J0IG9yZy5tdXNpY2JyYWluei5zZWFyY2guaW5kZXguQXJ0aXN0VHlwZTsKLWltcG9ydCBvcmcu
bXVzaWNicmFpbnouc2VhcmNoLmluZGV4LkRhdGFiYXNlSW5kZXg7Ci1pbXBvcnQgb3JnLm11c2lj
YnJhaW56LnNlYXJjaC5pbmRleC5NZXRhSW5kZXhGaWVsZDsKK2ltcG9ydCBvcmcubXVzaWNicmFp
bnouc2VhcmNoLmluZGV4Lio7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5zZXJ2bGV0
Lm1tZDEuQXJ0aXN0TW1kMVhtbFdyaXRlcjsKIGltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNo
LnNlcnZsZXQubW1kMS5NbWQxWG1sV3JpdGVyOwogaW1wb3J0IG9yZy5tdXNpY2JyYWluei5zZWFy
Y2guc2VydmxldC5tbWQyLlJlc3VsdHNXcml0ZXI7CisKIC8qKgogICogVGVzdCByZXRyaWV2aW5n
IGFydGlzdCBmcm9tIGluZGV4IGFuZCBPdXRwdXR0aW5nIGFzIFhtbAogICovCiBwdWJsaWMgY2xh
c3MgRmluZEFydGlzdFRlc3QgewogCi0gIHByaXZhdGUgQWJzdHJhY3RTZWFyY2hTZXJ2ZXIgc3M7
Ci0gIHByaXZhdGUgQWJzdHJhY3REaXNtYXhTZWFyY2hTZXJ2ZXIgc2Q7CisgICAgcHJpdmF0ZSBB
YnN0cmFjdFNlYXJjaFNlcnZlciBzczsKKyAgICBwcml2YXRlIEFic3RyYWN0RGlzbWF4U2VhcmNo
U2VydmVyIHNkOwogCiAKLSAgQEJlZm9yZQotICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBF
eGNlcHRpb24gewotICAgIFJBTURpcmVjdG9yeSByYW1EaXIgPSBuZXcgUkFNRGlyZWN0b3J5KCk7
Ci0gICAgQW5hbHl6ZXIgYW5hbHl6ZXIgPSBEYXRhYmFzZUluZGV4LmdldEFuYWx5emVyKEFydGlz
dEluZGV4RmllbGQuY2xhc3MpOwotICAgIEluZGV4V3JpdGVyQ29uZmlnIHdyaXRlckNvbmZpZyA9
IG5ldyBJbmRleFdyaXRlckNvbmZpZyhMdWNlbmVWZXJzaW9uLkxVQ0VORV9WRVJTSU9OLGFuYWx5
emVyKTsKLSAgICB3cml0ZXJDb25maWcuc2V0U2ltaWxhcml0eShuZXcgTXVzaWNicmFpbnpTaW1p
bGFyaXR5KCkpOwotICAgIEluZGV4V3JpdGVyIHdyaXRlciA9IG5ldyBJbmRleFdyaXRlcihyYW1E
aXIsIHdyaXRlckNvbmZpZyk7CisgICAgQEJlZm9yZQorICAgIHB1YmxpYyB2b2lkIHNldFVwKCkg
dGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIE9iamVjdEZhY3Rvcnkgb2YgPSBuZXcgT2JqZWN0
RmFjdG9yeSgpOworICAgICAgICBSQU1EaXJlY3RvcnkgcmFtRGlyID0gbmV3IFJBTURpcmVjdG9y
eSgpOworICAgICAgICBBbmFseXplciBhbmFseXplciA9IERhdGFiYXNlSW5kZXguZ2V0QW5hbHl6
ZXIoQXJ0aXN0SW5kZXhGaWVsZC5jbGFzcyk7CisgICAgICAgIEluZGV4V3JpdGVyQ29uZmlnIHdy
aXRlckNvbmZpZyA9IG5ldyBJbmRleFdyaXRlckNvbmZpZyhMdWNlbmVWZXJzaW9uLkxVQ0VORV9W
RVJTSU9OLCBhbmFseXplcik7CisgICAgICAgIHdyaXRlckNvbmZpZy5zZXRTaW1pbGFyaXR5KG5l
dyBNdXNpY2JyYWluelNpbWlsYXJpdHkoKSk7CisgICAgICAgIEluZGV4V3JpdGVyIHdyaXRlciA9
IG5ldyBJbmRleFdyaXRlcihyYW1EaXIsIHdyaXRlckNvbmZpZyk7CiAKIAotICAgIC8vR2VuZXJh
bCBQdXJwb3NlIEFydGlzdAotICAgIHsKLSAgICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9j
dW1lbnQoKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCwg
IjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIpOwotICAgICAgZG9jLmFkZEZp
ZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNULCAiRmFybWluZyBJbmNpZGVudCIpOwotICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJJbmNpZGVudCwgRmFybWlu
ZyIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQkVHSU4sICIxOTk5LTA0
Iik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5FTkRFRCwgInRydWUiKTsK
LSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUsICJHcm91cCIpOwotICAg
ICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVCwgInRoZSByZWFsIG9uZSIp
OwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgIkFGIik7Ci0g
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsICJtYWxlIik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJ0aHJhc2giKTsKLSAgICAgIGRv
Yy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiNSIpOwotICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAiZ8O8dGgiKTsKLSAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiMTEiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChB
cnRpc3RJbmRleEZpZWxkLklQSSwiMTAwMSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuSVBJLCIxMDAyIik7CisgICAgICAgIC8vR2VuZXJhbCBQdXJwb3NlIEFydGlzdAor
ICAgICAgICB7CisgICAgICAgICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3VtZW50KCk7
CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQsICI0
MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKKyAgICAgICAgICAgIGRvYy5h
ZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgIkZhcm1pbmcgSW5jaWRlbnQiKTsKKyAg
ICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1FLCAiSW5jaWRl
bnQsIEZhcm1pbmciKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxk
LkJFR0lOLCAiMTk5OS0wNCIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuRU5ERUQsICJ0cnVlIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5k
ZXhGaWVsZC5UWVBFLCAiR3JvdXAiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkNPTU1FTlQsICJ0aGUgcmVhbCBvbmUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkNPVU5UUlksICJBRiIpOworICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuR0VOREVSLCAibWFsZSIpOworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAidGhyYXNoIik7CisgICAgICAgICAgICBk
b2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJnw7x0aCIpOworICAgICAgICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJLCAiMTAwMSIpOworICAgICAgICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJLCAiMTAwMiIpOwogCi0gICAgICB3cml0
ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2VuZURvY3VtZW50KCkpOworICAgICAgICAgICAgQXJ0
aXN0IGFydGlzdCA9IG9mLmNyZWF0ZUFydGlzdCgpOworICAgICAgICAgICAgYXJ0aXN0LnNldElk
KCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKKyAgICAgICAgICAgIGFy
dGlzdC5zZXROYW1lKCJGYXJtaW5nIEluY2lkZW50Iik7CisgICAgICAgICAgICBhcnRpc3Quc2V0
U29ydE5hbWUoIkluY2lkZW50LCBGYXJtaW5nIik7CisgICAgICAgICAgICBMaWZlU3BhbiBsaWZl
c3BhbiA9IG9mLmNyZWF0ZUxpZmVTcGFuKCk7CisgICAgICAgICAgICBsaWZlc3Bhbi5zZXRCZWdp
bigiMTk5OS0wNCIpOworICAgICAgICAgICAgbGlmZXNwYW4uc2V0RW5kZWQoInRydWUiKTsKKyAg
ICAgICAgICAgIGFydGlzdC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7CisgICAgICAgICAgICBhcnRp
c3Quc2V0VHlwZSgiR3JvdXAiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXREaXNhbWJpZ3VhdGlv
bigidGhlIHJlYWwgb25lIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0Q291bnRyeSgiQUYiKTsK
KyAgICAgICAgICAgIGFydGlzdC5zZXRHZW5kZXIoIm1hbGUiKTsKKyAgICAgICAgICAgIFRhZ0xp
c3QgdGFnTGlzdCA9IG9mLmNyZWF0ZVRhZ0xpc3QoKTsKKyAgICAgICAgICAgIFRhZyB0YWcgPSBv
Zi5jcmVhdGVUYWcoKTsKKyAgICAgICAgICAgIHRhZy5zZXROYW1lKCJ0aHJhc2giKTsKKyAgICAg
ICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoNSkpOworICAgICAgICAgICAg
dGFnTGlzdC5nZXRUYWcoKS5hZGQodGFnKTsKKworICAgICAgICAgICAgdGFnID0gb2YuY3JlYXRl
VGFnKCk7CisgICAgICAgICAgICB0YWcuc2V0TmFtZSgiZ8O8dGgiKTsKKyAgICAgICAgICAgIHRh
Zy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoMTEpKTsKKyAgICAgICAgICAgIHRhZ0xpc3Qu
Z2V0VGFnKCkuYWRkKHRhZyk7CisgICAgICAgICAgICBhcnRpc3Quc2V0VGFnTGlzdCh0YWdMaXN0
KTsKKworICAgICAgICAgICAgSXBpTGlzdCBpcGlMaXN0ID0gb2YuY3JlYXRlSXBpTGlzdCgpOwor
ICAgICAgICAgICAgaXBpTGlzdC5nZXRJcGkoKS5hZGQoIjEwMDEiKTsKKyAgICAgICAgICAgIGlw
aUxpc3QuZ2V0SXBpKCkuYWRkKCIxMDAyIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0SXBpTGlz
dChpcGlMaXN0KTsKKworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
QVJUSVNUX1NUT1JFLCBNTURTZXJpYWxpemVyLnNlcmlhbGl6ZShhcnRpc3QpKTsKKyAgICAgICAg
ICAgIHdyaXRlci5hZGREb2N1bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7CisgICAgICAg
IH0KKworICAgICAgICAvL0FydGlzdCB3aXRoICYgb24gbmFtZSBhbmQgYWxpYXNlcworICAgICAg
ICB7CisgICAgICAgICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3VtZW50KCk7CisgICAg
ICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQsICJjY2Q0ODc5
Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgIkVjaG8gJiBUaGUgQnVubnltZW4iKTsKKyAgICAg
ICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1FLCAiRWNobyAmIFRo
ZSBCdW5ueW1lbiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
QkVHSU4sICIxOTc4Iik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5DT1VOVFJZLCAidW5rbm93biIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuVFlQRSwgQXJ0aXN0VHlwZS5HUk9VUC5nZXROYW1lKCkpOworICAgICAgICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQUxJQVMsICJFY2hvIEFuZCBUaGUgQnVubnlt
ZW4iKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFMSUFTLCAi
RWNobyAmIFRoZSBCdW5ueW1hbiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuQUxJQVMsICJFY2hvIGFuZCBUaGUgQnVueW1lbiIpOworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQUxJQVMsICJFY2hvICYgVGhlIEJ1bnltZW4iKTsK
KworICAgICAgICAgICAgQXJ0aXN0IGFydGlzdCA9IG9mLmNyZWF0ZUFydGlzdCgpOworICAgICAg
ICAgICAgYXJ0aXN0LnNldElkKCJjY2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUi
KTsKKworICAgICAgICAgICAgYXJ0aXN0LnNldE5hbWUoIkVjaG8gJiBUaGUgQnVubnltZW4iKTsK
KyAgICAgICAgICAgIGFydGlzdC5zZXRTb3J0TmFtZSgiRWNobyAmIFRoZSBCdW5ueW1lbiIpOwor
ICAgICAgICAgICAgTGlmZVNwYW4gbGlmZXNwYW4gPSBvZi5jcmVhdGVMaWZlU3BhbigpOworICAg
ICAgICAgICAgbGlmZXNwYW4uc2V0QmVnaW4oIjE5NzgiKTsKKyAgICAgICAgICAgIGFydGlzdC5z
ZXRMaWZlU3BhbihsaWZlc3Bhbik7CisgICAgICAgICAgICBhcnRpc3Quc2V0VHlwZSgiR3JvdXAi
KTsKKworICAgICAgICAgICAgQWxpYXNMaXN0IGFsaWFzTGlzdCA9IG9mLmNyZWF0ZUFsaWFzTGlz
dCgpOworICAgICAgICAgICAgQWxpYXMgYWxpYXMgPSBvZi5jcmVhdGVBbGlhcygpOworICAgICAg
ICAgICAgYWxpYXMuc2V0Q29udGVudCgiRWNobyBBbmQgVGhlIEJ1bm55bWVuIik7CisgICAgICAg
ICAgICBhbGlhc0xpc3QuZ2V0QWxpYXMoKS5hZGQoYWxpYXMpOworCisgICAgICAgICAgICBhbGlh
cyA9IG9mLmNyZWF0ZUFsaWFzKCk7CisgICAgICAgICAgICBhbGlhcy5zZXRDb250ZW50KCJFY2hv
ICYgVGhlIEJ1bm55bWFuIik7CisgICAgICAgICAgICBhbGlhc0xpc3QuZ2V0QWxpYXMoKS5hZGQo
YWxpYXMpOworCisgICAgICAgICAgICBhbGlhcyA9IG9mLmNyZWF0ZUFsaWFzKCk7CisgICAgICAg
ICAgICBhbGlhcy5zZXRDb250ZW50KCJFY2hvIGFuZCBUaGUgQnVueW1lbiIpOworICAgICAgICAg
ICAgYWxpYXNMaXN0LmdldEFsaWFzKCkuYWRkKGFsaWFzKTsKKworICAgICAgICAgICAgYWxpYXMg
PSBvZi5jcmVhdGVBbGlhcygpOworICAgICAgICAgICAgYWxpYXMuc2V0Q29udGVudCgiRWNobyAm
IFRoZSBCdW55bWVuIik7CisgICAgICAgICAgICBhbGlhc0xpc3QuZ2V0QWxpYXMoKS5hZGQoYWxp
YXMpOworICAgICAgICAgICAgYXJ0aXN0LnNldEFsaWFzTGlzdChhbGlhc0xpc3QpOworICAgICAg
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NUT1JFLCBNTURTZXJp
YWxpemVyLnNlcmlhbGl6ZShhcnRpc3QpKTsKKyAgICAgICAgICAgIHdyaXRlci5hZGREb2N1bWVu
dChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7CisgICAgICAgIH0KKworICAgICAgICAvL0FydGlz
dCwgdHlwZSBwZXJzb24gdW5rbm93biBnZW5kZXIKKyAgICAgICAgeworICAgICAgICAgICAgTWJE
b2N1bWVudCBkb2MgPSBuZXcgTWJEb2N1bWVudCgpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxk
KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELCAiZGRlNDg3OWMtNWU4OC00Mzg1LWIxMzEtYmY2
NTI5NmJmMjQ1Iik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1QsICJQSiBIYXJ2ZXkiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRl
eEZpZWxkLlRZUEUsICJQZXJzb24iKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkdFTkRFUiwgInVua25vd24iKTsKKworICAgICAgICAgICAgQXJ0aXN0IGFydGlz
dCA9IG9mLmNyZWF0ZUFydGlzdCgpOworICAgICAgICAgICAgYXJ0aXN0LnNldElkKCJkZGU0ODc5
Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRO
YW1lKCJQSiBIYXJ2ZXkiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRUeXBlKCJQZXJzb24iKTsK
KworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NUT1JF
LCBNTURTZXJpYWxpemVyLnNlcmlhbGl6ZShhcnRpc3QpKTsKKyAgICAgICAgICAgIHdyaXRlci5h
ZGREb2N1bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7CisgICAgICAgIH0KKworICAgICAg
ICB7CisgICAgICAgICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3VtZW50KCk7CisgICAg
ICAgICAgICBkb2MuYWRkRmllbGQoTWV0YUluZGV4RmllbGQuTUVUQSwgTWV0YUluZGV4RmllbGQu
TUVUQV9WQUxVRSk7CisgICAgICAgICAgICBkb2MuYWRkTnVtZXJpY0ZpZWxkKE1ldGFJbmRleEZp
ZWxkLkxBU1RfVVBEQVRFRCwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOworICAgICAgICAgICAgd3Jp
dGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVEb2N1bWVudCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHdyaXRlci5jbG9zZSgpOworICAgICAgICBTZWFyY2hlck1hbmFnZXIgc2VhcmNoZXJN
YW5hZ2VyID0gbmV3IFNlYXJjaGVyTWFuYWdlcihyYW1EaXIsIG5ldyBNdXNpY0JyYWluelNlYXJj
aGVyRmFjdG9yeShSZXNvdXJjZVR5cGUuQVJUSVNUKSk7CisgICAgICAgIHNzID0gbmV3IEFydGlz
dFNlYXJjaChzZWFyY2hlck1hbmFnZXIpOworICAgICAgICBzZCA9IG5ldyBBcnRpc3REaXNtYXhT
ZWFyY2goc3MpOworCiAgICAgfQogCi0gICAgLy9BcnRpc3Qgd2l0aCAmIG9uIG5hbWUgYW5kIGFs
aWFzZXMKLSAgICB7Ci0gICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3VtZW50KCk7Ci0g
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQsICJjY2Q0ODc5Yy01
ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkFSVElTVCwgIkVjaG8gJiBUaGUgQnVubnltZW4iKTsKLSAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1FLCAiRWNobyAmIFRoZSBCdW5ueW1lbiIpOwot
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQkVHSU4sICIxOTc4Iik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT1VOVFJZLCAidW5rbm93biIpOwotICAg
ICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVFlQRSwgQXJ0aXN0VHlwZS5HUk9VUC5n
ZXROYW1lKCkpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQUxJQVMsICJF
Y2hvIEFuZCBUaGUgQnVubnltZW4iKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLkFMSUFTLCAiRWNobyAmIFRoZSBCdW5ueW1hbiIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuQUxJQVMsICJFY2hvIGFuZCBUaGUgQnVueW1lbiIpOwotICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQUxJQVMsICJFY2hvICYgVGhlIEJ1bnltZW4iKTsK
LSAgICAgIHdyaXRlci5hZGREb2N1bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7CisgICAg
cHJvdGVjdGVkIFN0cmluZyBnZXRBcnRpc3RJZChNYkRvY3VtZW50IGRvYykgeworICAgICAgICBB
cnRpc3QgYXJ0aXN0ID0gKEFydGlzdCkgTU1EU2VyaWFsaXplci51bnNlcmlhbGl6ZShkb2MuZ2V0
KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NUT1JFKSwgQXJ0aXN0LmNsYXNzKTsKKyAgICAgICAg
cmV0dXJuIGFydGlzdC5nZXRJZCgpOwogICAgIH0KIAotICAgIC8vQXJ0aXN0LCB0eXBlIHBlcnNv
biB1bmtub3duIGdlbmRlcgotICAgIHsKLSAgICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9j
dW1lbnQoKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCwg
ImRkZTQ4NzljLTVlODgtNDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIpOwotICAgICAgZG9jLmFkZEZp
ZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNULCAiUEogSGFydmV5Iik7Ci0gICAgICBkb2MuYWRk
RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCBBcnRpc3RUeXBlLlBFUlNPTi5nZXROYW1lKCkp
OwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuR0VOREVSLCAidW5rbm93biIp
OwotICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVEb2N1bWVudCgpKTsKKwor
ICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeUlkKCkgdGhyb3dzIEV4
Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJhcmlkOlwiNDMwMmUy
NjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2XCIiLCAwLCAxMCk7CisgICAgICAgIGFzc2Vy
dEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIjQz
MDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdldEFydGlzdElkKHJlcy5yZXN1
bHRzLmdldCgwKS5nZXREb2MoKSkpOwogICAgIH0KIAotICAgIHsKLSAgICAgIE1iRG9jdW1lbnQg
ZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsKLSAgICAgIGRvYy5hZGRGaWVsZChNZXRhSW5kZXhGaWVs
ZC5NRVRBLCBNZXRhSW5kZXhGaWVsZC5NRVRBX1ZBTFVFKTsKLSAgICAgIGRvYy5hZGROdW1lcmlj
RmllbGQoTWV0YUluZGV4RmllbGQuTEFTVF9VUERBVEVELCBuZXcgRGF0ZSgpLmdldFRpbWUoKSk7
Ci0gICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2VuZURvY3VtZW50KCkpOworICAg
IEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeU5hbWUoKSB0aHJvd3MgRXhj
ZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIkZhcm1p
bmcgSW5jaWRlbnRcIiIsIDAsIDEwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRU
b3RhbEhpdHMoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFj
YTctMmE2Zjg5ZTM0YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDApLmdldERvYygp
KSk7CiAgICAgfQogCi0gICAgd3JpdGVyLmNsb3NlKCk7Ci0gICAgU2VhcmNoZXJNYW5hZ2VyIHNl
YXJjaGVyTWFuYWdlciA9IG5ldyBTZWFyY2hlck1hbmFnZXIocmFtRGlyLCBuZXcgTXVzaWNCcmFp
bnpTZWFyY2hlckZhY3RvcnkoUmVzb3VyY2VUeXBlLkFSVElTVCkpOwotICAgIHNzID0gbmV3IEFy
dGlzdFNlYXJjaChzZWFyY2hlck1hbmFnZXIpOwotICAgIHNkID0gbmV3IEFydGlzdERpc21heFNl
YXJjaChzcyk7CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21h
eFNpbmdsZVRlcm0oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBz
ZC5zZWFyY2goIkZhcm1pbmciLCAwLCAxMCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCByZXMu
Z2V0VG90YWxIaXRzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQx
Zi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5nZXRE
b2MoKSkpOworICAgIH0KIAotICB9CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Rmlu
ZEFydGlzdERpc21heFBocmFzZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1bHRz
IHJlcyA9IHNkLnNlYXJjaCgiRmFybWluZyBJbmNpZGVudCIsIDAsIDEwKTsKKyAgICAgICAgYXNz
ZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygi
NDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJl
c3VsdHMuZ2V0KDApLmdldERvYygpKSk7CisgICAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lk
IHRlc3RGaW5kQXJ0aXN0QnlJZCgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVz
ID0gc3Muc2VhcmNoKCJhcmlkOlwiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2
XCIiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7Ci0g
ICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAgICBNYkRvY3VtZW50IGRv
YyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQx
Zi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQp
KTsKLSAgICBhc3NlcnRFcXVhbHMoIkZhcm1pbmcgSW5jaWRlbnQiLCBkb2MuZ2V0KEFydGlzdElu
ZGV4RmllbGQuQVJUSVNUKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCIxOTk5LTA0IiwgZG9jLmdldChB
cnRpc3RJbmRleEZpZWxkLkJFR0lOKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJ0aGUgcmVhbCBvbmUi
LCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQ09NTUVOVCkpOwotICAgIGFzc2VydE51bGwoZG9j
LmdldChBcnRpc3RJbmRleEZpZWxkLkVORCkpOwotICAgIGFzc2VydE51bGwoZG9jLmdldChBcnRp
c3RJbmRleEZpZWxkLkFMSUFTKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJJbmNpZGVudCwgRmFybWlu
ZyIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRSkpOwotICAgIGFzc2VydEVxdWFs
cygiR3JvdXAiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuVFlQRSkpOwotICB9CisgICAgQFRl
c3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21heEZ1enp5KCkgdGhyb3dzIEV4
Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVzID0gc2Quc2VhcmNoKCJGYXJtaW4iLCAwLCAx
MCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAg
ICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdl
dEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5nZXREb2MoKSkpOwogCi0gIEBUZXN0Ci0gIHB1
YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlOYW1lKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAg
UmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIkZhcm1pbmcgSW5jaWRlbnRcIiIsIDAs
IDEwKTsKLSAgICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsKLSAgICBSZXN1
bHQgcmVzdWx0ID0gcmVzLnJlc3VsdHMuZ2V0KDApOwotICAgIE1iRG9jdW1lbnQgZG9jID0gcmVz
dWx0LmdldERvYygpOwotICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTct
MmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCkpOwotICB9
CisgICAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0RGlzbWF4U2lu
Z2xlVGVybSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc2Quc2VhcmNo
KCJGYXJtaW5nIiwgMCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRz
KCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7Ci0gICAgTWJEb2N1
bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0x
Y2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJU
SVNUX0lEKSk7Ci0gIH0KKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0
QnlTb3J0TmFtZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNz
LnNlYXJjaCgic29ydG5hbWU6XCJJbmNpZGVudCwgRmFybWluZ1wiIiwgMCwgMTApOworICAgICAg
ICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1
YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBnZXRBcnRpc3RJZChy
ZXMucmVzdWx0cy5nZXQoMCkuZ2V0RG9jKCkpKTsKIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0
ZXN0RmluZEFydGlzdERpc21heFBocmFzZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3Vs
dHMgcmVzID0gc2Quc2VhcmNoKCJGYXJtaW5nIEluY2lkZW50IiwgMCwgMTApOwotICAgIGFzc2Vy
dEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMu
cmVzdWx0cy5nZXQoMCk7Ci0gICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0g
ICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBk
b2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0gIH0KKyAgICB9CiAKLSAgQFRl
c3QKLSAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXhGdXp6eSgpIHRocm93cyBFeGNl
cHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc2Quc2VhcmNoKCJGYXJtaW4iLCAwLCAxMCk7Ci0g
ICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3Vs
dCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAgICBNYkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXRE
b2MoKTsKLSAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUz
NGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQpKTsKLSAgfQogCi0gIEBU
ZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlTb3J0TmFtZSgpIHRocm93cyBFeGNl
cHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJzb3J0bmFtZTpcIkluY2lkZW50
LCBGYXJtaW5nXCIiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhp
dHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAgICBNYkRv
Y3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0
LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1RfSUQpKTsKLSAgfQorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRp
c3RCeVR5cGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5z
ZWFyY2goInR5cGU6XCJncm91cFwiIiwgMCwgMTApOworICAgICAgICBhc3NlcnRFcXVhbHMoMiwg
cmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0xY2Yw
LTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBnZXRBcnRpc3RJZChyZXMucmVzdWx0cy5nZXQoMCku
Z2V0RG9jKCkpKTsKIAorICAgIH0KIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFy
dGlzdEJ5VHlwZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc3Muc2Vh
cmNoKCJ0eXBlOlwiZ3JvdXBcIiIsIDAsIDEwKTsKLSAgICBhc3NlcnRFcXVhbHMoMiwgcmVzLmdl
dFRvdGFsSGl0cygpKTsKLSAgICBSZXN1bHQgcmVzdWx0ID0gcmVzLnJlc3VsdHMuZ2V0KDApOwot
ICAgIE1iRG9jdW1lbnQgZG9jID0gcmVzdWx0LmdldERvYygpOwotICAgIGFzc2VydEVxdWFscygi
NDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRpc3RJbmRl
eEZpZWxkLkFSVElTVF9JRCkpOwotICB9CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0
RmluZEFydGlzdEJ5SXBpKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVz
ID0gc3Muc2VhcmNoKCJpcGk6MTAwMSIsIDAsIDEwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEs
IHJlcy5nZXRUb3RhbEhpdHMoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNm
MC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDAp
LmdldERvYygpKSk7CiAKLSAgQFRlc3QKLSAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeUlw
aSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJpcGk6
MTAwMSIsIDAsIDEwKTsKLSAgICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsK
LSAgICBSZXN1bHQgcmVzdWx0ID0gcmVzLnJlc3VsdHMuZ2V0KDApOwotICAgIE1iRG9jdW1lbnQg
ZG9jID0gcmVzdWx0LmdldERvYygpOwotICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00
ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9J
RCkpOwotICB9CisgICAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0
QnlOdW1lcmljVHlwZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc3Mu
c2VhcmNoKCJ0eXBlOjIiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDIsIHJlcy5nZXRUb3Rh
bEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAgICBN
YkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBhc3NlcnRFcXVhbHMoIjQzMDJl
MjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVs
ZC5BUlRJU1RfSUQpKTsKLSAgfQorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRB
cnRpc3RCeU51bWVyaWNUeXBlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMg
cmVzID0gc3Muc2VhcmNoKCJ0eXBlOjIiLCAwLCAxMCk7CisgICAgICAgIGFzc2VydEVxdWFscygy
LCByZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFj
ZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgw
KS5nZXREb2MoKSkpOwogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlC
ZWdpbkRhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJj
aCgiYmVnaW46XCIxOTk5LTA0XCIiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5n
ZXRUb3RhbEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsK
LSAgICBNYkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBhc3NlcnRFcXVhbHMo
IjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5k
ZXhGaWVsZC5BUlRJU1RfSUQpKTsKLSAgfQorICAgIH0KIAotICBAVGVzdAotICBwdWJsaWMgdm9p
ZCB0ZXN0RmluZEFydGlzdEJ5RW5kZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBSZXN1bHRz
IHJlcyA9IHNzLnNlYXJjaCgiZW5kZWQ6XCJ0cnVlXCIiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1
YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1
bHRzLmdldCgwKTsKLSAgICBNYkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBh
c3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5n
ZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQpKTsKLSAgfQorICAgIEBUZXN0CisgICAgcHVi
bGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeUJlZ2luRGF0ZSgpIHRocm93cyBFeGNlcHRpb24gewor
ICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYmVnaW46XCIxOTk5LTA0XCIiLCAwLCAx
MCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAg
ICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdl
dEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5nZXREb2MoKSkpOwogCisgICAgfQogCi0gIEBU
ZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlFbmREYXRlKCkgdGhyb3dzIEV4Y2Vw
dGlvbiB7Ci0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImVuZDpcIjE5OTktMDRcIiIsIDAs
IDEwKTsKLSAgICBhc3NlcnRFcXVhbHMoMCwgcmVzLmdldFRvdGFsSGl0cygpKTsKLSAgfQorICAg
IEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeUVuZGVkKCkgdGhyb3dzIEV4
Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJlbmRlZDpcInRydWVc
IiIsIDAsIDEwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7
CisgICAgICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0
YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDApLmdldERvYygpKSk7CiAKLSAgQFRl
c3QKLSAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeVR5cGVQZXJzb24oKSB0aHJvd3MgRXhj
ZXB0aW9uIHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgidHlwZTpcInBlcnNvblwiIiwg
MCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOwotICB9Cisg
ICAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlBbGlhcygpIHRo
cm93cyBFeGNlcHRpb24gewotICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJhbGlhczpcIkVj
aG8gQW5kIFRoZSBCdW5ueW1lblwiIiwgMCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMu
Z2V0VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7
Ci0gICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxz
KCJjY2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiLCBkb2MuZ2V0KEFydGlzdElu
ZGV4RmllbGQuQVJUSVNUX0lEKSk7CiAKLSAgfQorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQg
dGVzdEZpbmRBcnRpc3RCeUVuZERhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVz
dWx0cyByZXMgPSBzcy5zZWFyY2goImVuZDpcIjE5OTktMDRcIiIsIDAsIDEwKTsKKyAgICAgICAg
YXNzZXJ0RXF1YWxzKDAsIHJlcy5nZXRUb3RhbEhpdHMoKSk7CisgICAgfQogCi0gIEBUZXN0Ci0g
IHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlDb3VudHJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7
Ci0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImNvdW50cnk6XCJhZlwiIiwgMCwgMTApOwot
ICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCByZXN1
bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7Ci0gICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0
RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODll
MzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0gICAgYXNzZXJ0
RXF1YWxzKCJGYXJtaW5nIEluY2lkZW50IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElT
VCkpOwotICB9CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdEJ5VHlw
ZVBlcnNvbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNl
YXJjaCgidHlwZTpcInBlcnNvblwiIiwgMCwgMTApOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwg
cmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJkZGU0ODc5Yy01ZTg4
LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiLCBnZXRBcnRpc3RJZChyZXMucmVzdWx0cy5nZXQoMCku
Z2V0RG9jKCkpKTsKIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdFdpdGhO
b0NvdW50cnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJj
aCgiY291bnRyeTp1bmtub3duIiwgMCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0
VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7Ci0g
ICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJj
Y2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiLCBkb2MuZ2V0KEFydGlzdEluZGV4
RmllbGQuQVJUSVNUX0lEKSk7Ci0gIH0KKyAgICB9CiAKLSAgQFRlc3QKLSAgcHVibGljIHZvaWQg
dGVzdEZpbmRBcnRpc3RXaXRoTm9HZW5kZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBSZXN1
bHRzIHJlcyA9IHNzLnNlYXJjaCgiZ2VuZGVyOnVua25vd24iLCAwLCAxMCk7Ci0gICAgYXNzZXJ0
RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5y
ZXN1bHRzLmdldCgwKTsKLSAgICBNYkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAg
ICBhc3NlcnRFcXVhbHMoImRkZTQ4NzljLTVlODgtNDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIsIGRv
Yy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQpKTsKLSAgfQorICAgIEBUZXN0CisgICAg
cHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeUFsaWFzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Cisg
ICAgICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJhbGlhczpcIkVjaG8gQW5kIFRoZSBCdW5u
eW1lblwiIiwgMCwgMTApOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0
cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJjY2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1
Mjk2YmYyNDUiLCBnZXRBcnRpc3RJZChyZXMucmVzdWx0cy5nZXQoMCkuZ2V0RG9jKCkpKTsKIAog
Ci0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlDb3VudHJ5VXBwZXJjYXNl
KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImNvdW50
cnk6XCJBRlwiIiwgMCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRz
KCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7Ci0gICAgTWJEb2N1
bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0x
Y2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJU
SVNUX0lEKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJGYXJtaW5nIEluY2lkZW50IiwgZG9jLmdldChB
cnRpc3RJbmRleEZpZWxkLkFSVElTVCkpOwotICB9CisgICAgfQogCi0gIEBUZXN0Ci0gIHB1Ymxp
YyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlHZW5kZXJMb3dlcmNhc2UoKSB0aHJvd3MgRXhjZXB0aW9u
IHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiZ2VuZGVyOlwibWFsZVwiIiwgMCwgMTAp
OwotICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCBy
ZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7Ci0gICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQu
Z2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZm
ODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0gICAgYXNz
ZXJ0RXF1YWxzKCJGYXJtaW5nIEluY2lkZW50IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFS
VElTVCkpOwotICB9CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdEJ5
Q291bnRyeSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNl
YXJjaCgiY291bnRyeTpcImFmXCIiLCAwLCAxMCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBy
ZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIjQzMDJlMjY0LTFjZjAt
NGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5n
ZXREb2MoKSkpOwogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlHZW5k
ZXJUaXRsZWNhc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNl
YXJjaCgiZ2VuZGVyOlwiTWFsZVwiIiwgMCwgMTApOwotICAgIGFzc2VydEVxdWFscygxLCByZXMu
Z2V0VG90YWxIaXRzKCkpOwotICAgIFJlc3VsdCByZXN1bHQgPSByZXMucmVzdWx0cy5nZXQoMCk7
Ci0gICAgTWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgYXNzZXJ0RXF1YWxz
KCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdElu
ZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0gICAgYXNzZXJ0RXF1YWxzKCJGYXJtaW5nIEluY2lkZW50
IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCkpOwotICB9CisgICAgfQogCi0gIEBU
ZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlUYWcoKSB0aHJvd3MgRXhjZXB0aW9u
IHsKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgidGFnOlRocmFzaCIsIDAsIDEwKTsKLSAg
ICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsKLSAgICBSZXN1bHQgcmVzdWx0
ID0gcmVzLnJlc3VsdHMuZ2V0KDApOwotICAgIE1iRG9jdW1lbnQgZG9jID0gcmVzdWx0LmdldERv
YygpOwotICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0
YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCkpOwotICAgIGFzc2VydEVx
dWFscygiRmFybWluZyBJbmNpZGVudCIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1Qp
KTsKLSAgfQorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RXaXRoTm9D
b3VudHJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVzID0gc3Muc2Vh
cmNoKCJjb3VudHJ5OnVua25vd24iLCAwLCAxMCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBy
ZXMuZ2V0VG90YWxIaXRzKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImNjZDQ4NzljLTVlODgt
NDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5n
ZXREb2MoKSkpOwogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlEZWZh
dWx0RmllbGQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB9CiAKLSAgICAvL01hdGNoZXMgb24g
bmFtZSBmaWVsZCB3aXRob3V0IGl0IGJlaW5nIHNwZWNpZmllZAotICAgIHsKLSAgICAgIFJlc3Vs
dHMgcmVzID0gc3Muc2VhcmNoKCJcIkVjaG8gJiBUaGUgQnVubnltZW5cIiIsIDAsIDEwKTsKLSAg
ICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkpOwotICAgICAgUmVzdWx0IHJl
c3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAgICAgIE1iRG9jdW1lbnQgZG9jID0gcmVzdWx0
LmdldERvYygpOwotICAgICAgYXNzZXJ0RXF1YWxzKCJjY2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1i
ZjY1Mjk2YmYyNDUiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lEKSk7Ci0gICAg
ICBhc3NlcnRFcXVhbHMoIkVjaG8gJiBUaGUgQnVubnltZW4iLCBkb2MuZ2V0KEFydGlzdEluZGV4
RmllbGQuQVJUSVNUKSk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIjE5NzgiLCBkb2MuZ2V0KEFydGlz
dEluZGV4RmllbGQuQkVHSU4pKTsKLSAgICAgIGFzc2VydEVxdWFscygiRWNobyAmIFRoZSBCdW5u
eW1lbiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRSkpOwotICAgICAgYXNzZXJ0
RXF1YWxzKCJncm91cCIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFKSk7CisgICAgQFRl
c3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdFdpdGhOb0dlbmRlcigpIHRocm93cyBF
eGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiZ2VuZGVyOnVua25v
d24iLCAwLCAxMCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCByZXMuZ2V0VG90YWxIaXRzKCkp
OworICAgICAgICBhc3NlcnRFcXVhbHMoImRkZTQ4NzljLTVlODgtNDM4NS1iMTMxLWJmNjUyOTZi
ZjI0NSIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgwKS5nZXREb2MoKSkpOworCiAgICAg
fQogCi0gICAgLy9hbmQgYWxpYXMgZmllbGQgIGZpZWxkIHdpdGhvdXQgaXQgYmVpbmcgc3BlY2lm
aWVkCi0gICAgewotICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goIlwiRWNobyAmIFRoZSBC
dW5ueW1hblwiIiwgMCwgMTApOwotICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhp
dHMoKSk7Ci0gICAgICBSZXN1bHQgcmVzdWx0ID0gcmVzLnJlc3VsdHMuZ2V0KDApOwotICAgICAg
TWJEb2N1bWVudCBkb2MgPSByZXN1bHQuZ2V0RG9jKCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoImNj
ZDQ4NzljLTVlODgtNDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhG
aWVsZC5BUlRJU1RfSUQpKTsKLSAgICAgIGFzc2VydEVxdWFscygiRWNobyAmIFRoZSBCdW5ueW1l
biIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QpKTsKLSAgICAgIGFzc2VydEVxdWFs
cygiMTk3OCIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTikpOwotICAgICAgYXNzZXJ0
RXF1YWxzKCJFY2hvICYgVGhlIEJ1bm55bWVuIiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLlNP
UlROQU1FKSk7Ci0gICAgICBhc3NlcnRFcXVhbHMoImdyb3VwIiwgZG9jLmdldChBcnRpc3RJbmRl
eEZpZWxkLlRZUEUpKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRp
c3RCeUNvdW50cnlVcHBlcmNhc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0
cyByZXMgPSBzcy5zZWFyY2goImNvdW50cnk6XCJBRlwiIiwgMCwgMTApOworICAgICAgICBhc3Nl
cnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCI0
MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBnZXRBcnRpc3RJZChyZXMucmVz
dWx0cy5nZXQoMCkuZ2V0RG9jKCkpKTsKKwogICAgIH0KIAotICAgIC8vYnV0IGRvZXNuJ3Qgc2Vh
cmNoIGRlZmF1bHQgZmllbGRzIGlmIGEgZmllbGQgaXMgc3BlY2lmaWVkCi0gICAgewotICAgICAg
UmVzdWx0cyByZXMgPSBzcy5zZWFyY2goInR5cGU6XCJFY2hvICYgVGhlIEJ1bm55bWFuXCIiLCAw
LCAxMCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMCwgcmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICBA
VGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlHZW5kZXJMb3dlcmNhc2UoKSB0
aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImdlbmRl
cjpcIm1hbGVcIiIsIDAsIDEwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3Rh
bEhpdHMoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTct
MmE2Zjg5ZTM0YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDApLmdldERvYygpKSk7
CiAKICAgICB9Ci0gIH0KIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdEJ5
RXhjYWxhbWF0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgUmVzdWx0cyByZXMgPSBzcy5z
ZWFyY2goIkZhcm1pbmdcXCEiLCAwLCAxMCk7Ci0gICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRU
b3RhbEhpdHMoKSk7Ci0gICAgUmVzdWx0IHJlc3VsdCA9IHJlcy5yZXN1bHRzLmdldCgwKTsKLSAg
ICBNYkRvY3VtZW50IGRvYyA9IHJlc3VsdC5nZXREb2MoKTsKLSAgICBhc3NlcnRFcXVhbHMoIjQz
MDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhG
aWVsZC5BUlRJU1RfSUQpKTsKLSAgfQorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZp
bmRBcnRpc3RCeUdlbmRlclRpdGxlY2FzZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBS
ZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiZ2VuZGVyOlwiTWFsZVwiIiwgMCwgMTApOworICAgICAg
ICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygpKTsKKyAgICAgICAgYXNzZXJ0RXF1
YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBnZXRBcnRpc3RJZChy
ZXMucmVzdWx0cy5nZXQoMCkuZ2V0RG9jKCkpKTsKIAotICAvKioKLSAgICogVGVzdHMgZ2V0IHNh
bWUgcmVzdWx0cyBhcwotICAgKiBodHRwOi8vbXVzaWNicmFpbnoub3JnL3dzLzEvYXJ0aXN0Lz90
eXBlPXhtbCZxdWVyeT0lMjJGYXJtaW5nJTIwSW5jaWRlbnQlMjIKLSAgICoKLSAgICogQHRocm93
cyBFeGNlcHRpb24KLSAgICovCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRBc01t
ZDFYbWwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB9CiAKLSAgICBSZXN1bHRzIHJlcyA9IHNz
LnNlYXJjaCgiYXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwiIiwgMCwgMSk7Ci0gICAgTW1kMVht
bFdyaXRlciB2MVdyaXRlciA9IG5ldyBBcnRpc3RNbWQxWG1sV3JpdGVyKCk7Ci0gICAgU3RyaW5n
V3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHByID0gbmV3
IFByaW50V3JpdGVyKHN3KTsKLSAgICB2MVdyaXRlci53cml0ZShwciwgcmVzKTsKLSAgICBwci5j
bG9zZSgpOworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3RCeVRhZygp
IHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgidGFn
OlRocmFzaCIsIDAsIDEwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlcy5nZXRUb3RhbEhp
dHMoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiNDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2
Zjg5ZTM0YjM2IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDApLmdldERvYygpKSk7CiAK
LSAgICBTdHJpbmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50
bG4oIlhtbCBpcyIgKyBvdXRwdXQpOwotICAgIC8vYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMo
IjxhcnRpc3QgaWQ9XCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzZcIiIpKTsg
IGdyb3VwIGNvbWVzIGJlZm9yZSBpZCBpbiBvdXRwdXQKLSAgICAvL2Fzc2VydFRydWUob3V0cHV0
LmNvbnRhaW5zKCI8YXJ0aXN0LWxpc3QgY291bnQ9XCIxXCIgb2Zmc2V0PVwiMFwiPiIpKTsgICAg
ICAgICAgICAgICBvZmZzZXQgY29tZXMgYmVmb3JlIGNvdW50IGluIG91dHB1dAotICAgIGFzc2Vy
dFRydWUob3V0cHV0LmNvbnRhaW5zKCJjb3VudD1cIjFcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91
dHB1dC5jb250YWlucygib2Zmc2V0PVwiMFwiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNv
bnRhaW5zKCJ0eXBlPVwiR3JvdXBcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlu
cygiPG5hbWU+RmFybWluZyBJbmNpZGVudDwvbmFtZT4iKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRw
dXQuY29udGFpbnMoIjxzb3J0LW5hbWU+SW5jaWRlbnQsIEZhcm1pbmc8L3NvcnQtbmFtZT4iKSk7
Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxsaWZlLXNwYW4gYmVnaW49XCIxOTk5
LTA0XCIiKSk7Ci0gICAgYXNzZXJ0RmFsc2Uob3V0cHV0LmNvbnRhaW5zKCJlbmQiKSk7Ci0gICAg
YXNzZXJ0RmFsc2Uob3V0cHV0LmNvbnRhaW5zKCJhbGlhcyIpKTsKLSAgICBhc3NlcnRGYWxzZShv
dXRwdXQuY29udGFpbnMoImRpc2FtYnVnYXRpb24iKSk7Ci0gIH0KKyAgICB9CiAKKyAgICBAVGVz
dAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0QnlEZWZhdWx0RmllbGQoKSB0aHJvd3Mg
RXhjZXB0aW9uIHsKIAotICAvKioKLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovCi0gIEBU
ZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRYbWwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAg
ICAgICAgLy9NYXRjaGVzIG9uIG5hbWUgZmllbGQgd2l0aG91dCBpdCBiZWluZyBzcGVjaWZpZWQK
KyAgICAgICAgeworICAgICAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goIlwiRWNobyAm
IFRoZSBCdW5ueW1lblwiIiwgMCwgMTApOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJl
cy5nZXRUb3RhbEhpdHMoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImNjZDQ4NzljLTVl
ODgtNDM4NS1iMTMxLWJmNjUyOTZiZjI0NSIsIGdldEFydGlzdElkKHJlcy5yZXN1bHRzLmdldCgw
KS5nZXREb2MoKSkpOworICAgICAgICB9CiAKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgi
YXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwiIiwgMCwgMSk7Ci0gICAgUmVzdWx0c1dyaXRlciB2
MVdyaXRlciA9IHNzLmdldE1tZDJXcml0ZXIoKTsKLSAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcg
U3RyaW5nV3JpdGVyKCk7Ci0gICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cp
OwotICAgIHYxV3JpdGVyLndyaXRlKHByLCByZXMpOwotICAgIHByLmNsb3NlKCk7CisgICAgICAg
IC8vYW5kIGFsaWFzIGZpZWxkICBmaWVsZCB3aXRob3V0IGl0IGJlaW5nIHNwZWNpZmllZAorICAg
ICAgICB7CisgICAgICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiXCJFY2hvICYgVGhl
IEJ1bm55bWFuXCIiLCAwLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdl
dFRvdGFsSGl0cygpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygiY2NkNDg3OWMtNWU4OC00
Mzg1LWIxMzEtYmY2NTI5NmJmMjQ1IiwgZ2V0QXJ0aXN0SWQocmVzLnJlc3VsdHMuZ2V0KDApLmdl
dERvYygpKSk7CisgICAgICAgIH0KIAotICAgIFN0cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygp
OwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiWG1sMSBpcyIgKyBvdXRwdXQpOwotICAgIGFzc2Vy
dFRydWUob3V0cHV0LmNvbnRhaW5zKCJpZD1cIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4
OWUzNGIzNlwiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJ4bWxuczpleHQ9
XCJodHRwOi8vbXVzaWNicmFpbnoub3JnL25zL2V4dCMtMi4wXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1
ZShvdXRwdXQuY29udGFpbnMoImNvdW50PVwiMVwiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0
LmNvbnRhaW5zKCJvZmZzZXQ9XCIwXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFp
bnMoInR5cGU9XCJHcm91cFwiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8
bmFtZT5GYXJtaW5nIEluY2lkZW50PC9uYW1lPiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5j
b250YWlucygiPHNvcnQtbmFtZT5JbmNpZGVudCwgRmFybWluZzwvc29ydC1uYW1lPiIpKTsKLSAg
ICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiPGJlZ2luPjE5OTktMDQ8L2JlZ2luPiIpKTsK
LSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiPGNvdW50cnk+QUY8L2NvdW50cnk+Iikp
OwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8ZW5kZWQ+dHJ1ZTwvZW5kZWQ+Iikp
OwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8Z2VuZGVyPm1hbGU8L2dlbmRlcj4i
KSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxpcGktbGlzdD48aXBpPjEwMDE8
L2lwaT48aXBpPjEwMDI8L2lwaT48L2lwaS1saXN0PiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1
dC5jb250YWlucygidGhyYXNoPC9uYW1lPiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250
YWlucygiZ8O8dGg8L25hbWU+IikpOwotICAgIGFzc2VydEZhbHNlKG91dHB1dC5jb250YWlucygi
YWxpYXMiKSk7Ci0gICAgYXNzZXJ0RmFsc2Uob3V0cHV0LmNvbnRhaW5zKCJkaXNhbWJ1Z2F0aW9u
IikpOwotICB9CisgICAgICAgIC8vYnV0IGRvZXNuJ3Qgc2VhcmNoIGRlZmF1bHQgZmllbGRzIGlm
IGEgZmllbGQgaXMgc3BlY2lmaWVkCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlc3VsdHMgcmVz
ID0gc3Muc2VhcmNoKCJ0eXBlOlwiRWNobyAmIFRoZSBCdW5ueW1hblwiIiwgMCwgMTApOworICAg
ICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHJlcy5nZXRUb3RhbEhpdHMoKSk7CiAKLSAgLyoqCi0g
ICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLwotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0
T3V0cHV0WG1sMigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB9CisgICAgfQogCi0gICAg
UmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIkVjaG8gJiB0aGUgQnVubnltZW5cIiIs
IDAsIDEpOwotICAgIFJlc3VsdHNXcml0ZXIgdjFXcml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVyKCk7
Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3Jp
dGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLSAgICB2MVdyaXRlci53cml0ZShwciwgcmVz
KTsKLSAgICBwci5jbG9zZSgpOwotICAgIFN0cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygpOwot
ICAgIFN5c3RlbS5vdXQucHJpbnRsbigiWG1sMiBpcyIgKyBvdXRwdXQpOwotICAgIGFzc2VydFRy
dWUob3V0cHV0LmNvbnRhaW5zKCJjb3VudD1cIjFcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1
dC5jb250YWlucygib2Zmc2V0PVwiMFwiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRh
aW5zKCJ0eXBlPVwiZ3JvdXBcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygi
PG5hbWU+RWNobyAmYW1wOyBUaGUgQnVubnltZW48L25hbWU+IikpOwotICAgIGFzc2VydFRydWUo
b3V0cHV0LmNvbnRhaW5zKCI8c29ydC1uYW1lPkVjaG8gJmFtcDsgVGhlIEJ1bm55bWVuPC9zb3J0
LW5hbWU+IikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8bGlmZS1zcGFuPjxi
ZWdpbj4xOTc4PC9iZWdpbj48L2xpZmUtc3Bhbj4iKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQu
Y29udGFpbnMoIjxhbGlhcz5FY2hvIEFuZCBUaGUgQnVubnltZW48L2FsaWFzPiIpKTsKLSAgICBh
c3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiPGFsaWFzPkVjaG8gJmFtcDsgVGhlIEJ1bm55bWFu
PC9hbGlhcz4iKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxhbGlhcz5FY2hv
IGFuZCBUaGUgQnVueW1lbjwvYWxpYXM+IikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRh
aW5zKCI8YWxpYXM+RWNobyAmYW1wOyBUaGUgQnVueW1lbjwvYWxpYXM+IikpOwotICB9CisgICAg
QFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdEJ5RXhjYWxhbWF0aW9uKCkgdGhy
b3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJGYXJtaW5n
XFwhIiwgMCwgMTApOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgcmVzLmdldFRvdGFsSGl0cygp
KTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODll
MzRiMzYiLCBnZXRBcnRpc3RJZChyZXMucmVzdWx0cy5nZXQoMCkuZ2V0RG9jKCkpKTsKIAotICAv
KioKLSAgICogQHRocm93cyBFeGNlcHRpb24KLSAgICovCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lk
IHRlc3RPdXRwdXRYbWwzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQogCi0gICAgUmVzdWx0
cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIlBKIEhhcnZleVwiIiwgMCwgMSk7Ci0gICAgUmVz
dWx0c1dyaXRlciB3cml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVyKCk7Ci0gICAgU3RyaW5nV3JpdGVy
IHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHByID0gbmV3IFByaW50
V3JpdGVyKHN3KTsKLSAgICB3cml0ZXIud3JpdGUocHIsIHJlcyk7Ci0gICAgcHIuY2xvc2UoKTsK
LSAgICBTdHJpbmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50
bG4oIlhtbDMgaXMiICsgb3V0cHV0KTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygi
Y291bnQ9XCIxXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIm9mZnNldD1c
IjBcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygidHlwZT1cInBlcnNvblwi
IikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8bmFtZT5QSiBIYXJ2ZXk8L25h
bWU+IikpOwotICAgIGFzc2VydEZhbHNlKG91dHB1dC5jb250YWlucygiPGdlbmRlcj4iKSk7IC8v
Tm90IHNob3duIGJlY2F1c2UgdW5rbm93bgotICB9CisgICAgLyoqCisgICAgICogVGVzdHMgZ2V0
IHNhbWUgcmVzdWx0cyBhcworICAgICAqIGh0dHA6Ly9tdXNpY2JyYWluei5vcmcvd3MvMS9hcnRp
c3QvP3R5cGU9eG1sJnF1ZXJ5PSUyMkZhcm1pbmclMjBJbmNpZGVudCUyMgorICAgICAqCisgICAg
ICogQHRocm93cyBFeGNlcHRpb24KKyAgICAgKi8KKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lk
IHRlc3RPdXRwdXRBc01tZDFYbWwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKIAotICAvKioKLSAgICog
VGVzdHMgdGhhdCAmIGlzIGNvbnZlcnRlZCB0byB2YWxpZCB4bWwKLSAgICoKLSAgICogQHRocm93
cyBFeGNlcHRpb24KLSAgICovCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRBc01t
ZDFYbWxTcGVjaWFsQ2hhcmFjdGVycygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSZXN1
bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwiIiwgMCwgMSk7
CisgICAgICAgIE1tZDFYbWxXcml0ZXIgdjFXcml0ZXIgPSBuZXcgQXJ0aXN0TW1kMVhtbFdyaXRl
cigpOworICAgICAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisgICAg
ICAgIFByaW50V3JpdGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKKyAgICAgICAgdjFXcml0
ZXIud3JpdGUocHIsIHJlcyk7CisgICAgICAgIHByLmNsb3NlKCk7CiAKLSAgICBSZXN1bHRzIHJl
cyA9IHNzLnNlYXJjaCgiYWxpYXM6XCJFY2hvIEFuZCBUaGUgQnVubnltZW5cIiIsIDAsIDEpOwot
ICAgIE1tZDFYbWxXcml0ZXIgdjFXcml0ZXIgPSBzcy5nZXRNbWQxV3JpdGVyKCk7Ci0gICAgU3Ry
aW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHByID0g
bmV3IFByaW50V3JpdGVyKHN3KTsKLSAgICB2MVdyaXRlci53cml0ZShwciwgcmVzKTsKLSAgICBw
ci5jbG9zZSgpOworICAgICAgICBTdHJpbmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKKyAgICAg
ICAgU3lzdGVtLm91dC5wcmludGxuKCJYbWwgaXMiICsgb3V0cHV0KTsKKyAgICAgICAgLy9hc3Nl
cnRUcnVlKG91dHB1dC5jb250YWlucygiPGFydGlzdCBpZD1cIjQzMDJlMjY0LTFjZjAtNGQxZi1h
Y2E3LTJhNmY4OWUzNGIzNlwiIikpOyAgZ3JvdXAgY29tZXMgYmVmb3JlIGlkIGluIG91dHB1dAor
ICAgICAgICAvL2Fzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8YXJ0aXN0LWxpc3QgY291bnQ9
XCIxXCIgb2Zmc2V0PVwiMFwiPiIpKTsgICAgICAgICAgICAgICBvZmZzZXQgY29tZXMgYmVmb3Jl
IGNvdW50IGluIG91dHB1dAorICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiY291
bnQ9XCIxXCIiKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJvZmZzZXQ9
XCIwXCIiKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJ0eXBlPVwiR3Jv
dXBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxuYW1lPkZhcm1p
bmcgSW5jaWRlbnQ8L25hbWU+IikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlu
cygiPHNvcnQtbmFtZT5JbmNpZGVudCwgRmFybWluZzwvc29ydC1uYW1lPiIpKTsKKyAgICAgICAg
YXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxsaWZlLXNwYW4gYmVnaW49XCIxOTk5LTA0XCIi
KSk7CisgICAgICAgIGFzc2VydEZhbHNlKG91dHB1dC5jb250YWlucygiZW5kIikpOworICAgICAg
ICBhc3NlcnRGYWxzZShvdXRwdXQuY29udGFpbnMoImFsaWFzIikpOworICAgICAgICBhc3NlcnRG
YWxzZShvdXRwdXQuY29udGFpbnMoImRpc2FtYnVnYXRpb24iKSk7CisgICAgfQogCi0gICAgU3Ry
aW5nIG91dHB1dCA9IHN3LnRvU3RyaW5nKCk7Ci0gICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlht
bCBpcyIgKyBvdXRwdXQpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJjb3VudD1c
IjFcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygib2Zmc2V0PVwiMFwiIikp
OwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJ0eXBlPVwiR3JvdXBcIiIpKTsKLSAg
ICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiPG5hbWU+RWNobyAmYW1wOyBUaGUgQnVubnlt
ZW48L25hbWU+IikpOwotICB9CiAKLSAgLyoqCi0gICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAq
LwotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0T3V0cHV0SnNvbigpIHRocm93cyBFeGNlcHRp
b24geworICAgIC8qKgorICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICovCisgICAgQFRl
c3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0T3V0cHV0WG1sKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAK
LSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwi
IiwgMCwgMSk7Ci0gICAgUmVzdWx0c1dyaXRlciB3cml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVyKCk7
Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3Jp
dGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLSAgICB3cml0ZXIud3JpdGUocHIsIHJlcywg
U2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05TRV9KU09OKTsKLSAgICBwci5jbG9zZSgpOworICAg
ICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwi
IiwgMCwgMSk7CisgICAgICAgIFJlc3VsdHNXcml0ZXIgdjFXcml0ZXIgPSBzcy5nZXRNbWQyV3Jp
dGVyKCk7CisgICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKyAg
ICAgICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOworICAgICAgICB2MVdy
aXRlci53cml0ZShwciwgcmVzKTsKKyAgICAgICAgcHIuY2xvc2UoKTsKIAotICAgIFN0cmluZyBv
dXRwdXQgPSBzdy50b1N0cmluZygpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSnNvbiBpcyIg
KyBvdXRwdXQpOworICAgICAgICBTdHJpbmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKKyAgICAg
ICAgU3lzdGVtLm91dC5wcmludGxuKCJYbWwxIGlzIiArIG91dHB1dCk7CisgICAgICAgIGFzc2Vy
dFRydWUob3V0cHV0LmNvbnRhaW5zKCJpZD1cIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4
OWUzNGIzNlwiIikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygieG1sbnM6
ZXh0PVwiaHR0cDovL211c2ljYnJhaW56Lm9yZy9ucy9leHQjLTIuMFwiIikpOworICAgICAgICBh
c3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiY291bnQ9XCIxXCIiKSk7CisgICAgICAgIGFzc2Vy
dFRydWUob3V0cHV0LmNvbnRhaW5zKCJvZmZzZXQ9XCIwXCIiKSk7CisgICAgICAgIGFzc2VydFRy
dWUob3V0cHV0LmNvbnRhaW5zKCJ0eXBlPVwiR3JvdXBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1
ZShvdXRwdXQuY29udGFpbnMoIjxuYW1lPkZhcm1pbmcgSW5jaWRlbnQ8L25hbWU+IikpOworICAg
ICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiPHNvcnQtbmFtZT5JbmNpZGVudCwgRmFy
bWluZzwvc29ydC1uYW1lPiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMo
IjxiZWdpbj4xOTk5LTA0PC9iZWdpbj4iKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNv
bnRhaW5zKCI8Y291bnRyeT5BRjwvY291bnRyeT4iKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0
cHV0LmNvbnRhaW5zKCI8ZW5kZWQ+dHJ1ZTwvZW5kZWQ+IikpOworICAgICAgICBhc3NlcnRUcnVl
KG91dHB1dC5jb250YWlucygiPGdlbmRlcj5tYWxlPC9nZW5kZXI+IikpOworICAgICAgICBhc3Nl
cnRUcnVlKG91dHB1dC5jb250YWlucygiPGlwaS1saXN0PjxpcGk+MTAwMTwvaXBpPjxpcGk+MTAw
MjwvaXBpPjwvaXBpLWxpc3Q+IikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlu
cygidGhyYXNoPC9uYW1lPiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMo
ImfDvHRoPC9uYW1lPiIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2Uob3V0cHV0LmNvbnRhaW5zKCJh
bGlhcyIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2Uob3V0cHV0LmNvbnRhaW5zKCJkaXNhbWJ1Z2F0
aW9uIikpOworICAgIH0KIAotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJpZFwiOlwi
NDMwMmUyNjQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2XCIiKSk7Ci0gICAgYXNzZXJ0VHJ1
ZShvdXRwdXQuY29udGFpbnMoIlwiY291bnRcIjoxIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0
LmNvbnRhaW5zKCJcIm9mZnNldFwiOjAsIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRh
aW5zKCJcInR5cGVcIjpcIkdyb3VwXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFp
bnMoIm5hbWVcIjpcIkZhcm1pbmcgSW5jaWRlbnRcIiIpKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1
dC5jb250YWlucygiXCJzb3J0LW5hbWVcIjpcIkluY2lkZW50LCBGYXJtaW5nXCIiKSk7Ci0gICAg
YXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwiYmVnaW5cIjpcIjE5OTktMDRcIiIpKTsKLSAg
ICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJlbmRlZFwiOlwidHJ1ZVwiIikpOwotICAg
IGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50cnlcIjpcIkFGXCIiKSk7Ci0gICAg
YXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwiZ2VuZGVyXCI6XCJtYWxlXCIiKSk7Ci0gICAg
YXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwidGFnXCI6W3tcImNvdW50XCI6NSxcIm5hbWVc
IjpcInRocmFzaFwifSx7XCJjb3VudFwiOjExLFwibmFtZVwiOlwiZ8O8dGhcIn0iKSk7Ci0gIH0K
KyAgICAvKioKKyAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAqLworICAgIEBUZXN0Cisg
ICAgcHVibGljIHZvaWQgdGVzdE91dHB1dFhtbDIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKIAorICAg
ICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRWNobyAmIHRoZSBCdW5ueW1l
blwiIiwgMCwgMSk7CisgICAgICAgIFJlc3VsdHNXcml0ZXIgdjFXcml0ZXIgPSBzcy5nZXRNbWQy
V3JpdGVyKCk7CisgICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsK
KyAgICAgICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOworICAgICAgICB2
MVdyaXRlci53cml0ZShwciwgcmVzKTsKKyAgICAgICAgcHIuY2xvc2UoKTsKKyAgICAgICAgU3Ry
aW5nIG91dHB1dCA9IHN3LnRvU3RyaW5nKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi
WG1sMiBpcyIgKyBvdXRwdXQpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygi
Y291bnQ9XCIxXCIiKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJvZmZz
ZXQ9XCIwXCIiKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJ0eXBlPVwi
R3JvdXBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxuYW1lPkVj
aG8gJmFtcDsgVGhlIEJ1bm55bWVuPC9uYW1lPiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRw
dXQuY29udGFpbnMoIjxzb3J0LW5hbWU+RWNobyAmYW1wOyBUaGUgQnVubnltZW48L3NvcnQtbmFt
ZT4iKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8bGlmZS1zcGFuPjxi
ZWdpbj4xOTc4PC9iZWdpbj48L2xpZmUtc3Bhbj4iKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0
cHV0LmNvbnRhaW5zKCI8YWxpYXM+RWNobyBBbmQgVGhlIEJ1bm55bWVuPC9hbGlhcz4iKSk7Cisg
ICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCI8YWxpYXM+RWNobyAmYW1wOyBUaGUg
QnVubnltYW48L2FsaWFzPiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMo
IjxhbGlhcz5FY2hvIGFuZCBUaGUgQnVueW1lbjwvYWxpYXM+IikpOworICAgICAgICBhc3NlcnRU
cnVlKG91dHB1dC5jb250YWlucygiPGFsaWFzPkVjaG8gJmFtcDsgVGhlIEJ1bnltZW48L2FsaWFz
PiIpKTsKKyAgICB9CiAKKyAgICAvKioKKyAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAq
LworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdE91dHB1dFhtbDMoKSB0aHJvd3MgRXhj
ZXB0aW9uIHsKIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0T3V0cHV0SnNvbk11bHRpcGxl
KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlz
dDpcIkZhcm1pbmcgSW5jaWRlbnRcIiBPUiBhcnRpc3Q6XCJFY2hvICYgVGhlIEJ1bm55bWVuXCIi
LCAwLCAyKTsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIlBKIEhh
cnZleVwiIiwgMCwgMSk7CisgICAgICAgIFJlc3VsdHNXcml0ZXIgd3JpdGVyID0gc3MuZ2V0TW1k
MldyaXRlcigpOworICAgICAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7
CisgICAgICAgIFByaW50V3JpdGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKKyAgICAgICAg
d3JpdGVyLndyaXRlKHByLCByZXMpOworICAgICAgICBwci5jbG9zZSgpOworICAgICAgICBTdHJp
bmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJY
bWwzIGlzIiArIG91dHB1dCk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJj
b3VudD1cIjFcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIm9mZnNl
dD1cIjBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoInR5cGU9XCJQ
ZXJzb25cIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIjxuYW1lPlBK
IEhhcnZleTwvbmFtZT4iKSk7CisgICAgICAgIGFzc2VydEZhbHNlKG91dHB1dC5jb250YWlucygi
PGdlbmRlcj4iKSk7IC8vTm90IHNob3duIGJlY2F1c2UgdW5rbm93bgorICAgIH0KIAotICAgIFJl
c3VsdHNXcml0ZXIgd3JpdGVyID0gc3MuZ2V0TW1kMldyaXRlcigpOwotICAgIFN0cmluZ1dyaXRl
ciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKLSAgICBQcmludFdyaXRlciBwciA9IG5ldyBQcmlu
dFdyaXRlcihzdyk7Ci0gICAgd3JpdGVyLndyaXRlKHByLCByZXMsIFNlYXJjaFNlcnZlclNlcnZs
ZXQuUkVTUE9OU0VfSlNPTik7Ci0gICAgcHIuY2xvc2UoKTsKLSAgICBTdHJpbmcgb3V0cHV0ID0g
c3cudG9TdHJpbmcoKTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJzY29yZVwi
OlwiMTAwXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwic2NvcmVcIjpc
IjMxXCIiKSk7Ci0gIH0KKyAgICAvKioKKyAgICAgKiBUZXN0cyB0aGF0ICYgaXMgY29udmVydGVk
IHRvIHZhbGlkIHhtbAorICAgICAqCisgICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAgKi8K
KyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRBc01tZDFYbWxTcGVjaWFsQ2hh
cmFjdGVycygpIHRocm93cyBFeGNlcHRpb24gewogCi0gIC8qKgotICAgKiBAdGhyb3dzIEV4Y2Vw
dGlvbgotICAgKi8KLSAgQFRlc3QKLSAgcHVibGljIHZvaWQgdGVzdE91dHB1dEpzb25OZXcoKSB0
aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFsaWFz
OlwiRWNobyBBbmQgVGhlIEJ1bm55bWVuXCIiLCAwLCAxKTsKKyAgICAgICAgTW1kMVhtbFdyaXRl
ciB2MVdyaXRlciA9IHNzLmdldE1tZDFXcml0ZXIoKTsKKyAgICAgICAgU3RyaW5nV3JpdGVyIHN3
ID0gbmV3IFN0cmluZ1dyaXRlcigpOworICAgICAgICBQcmludFdyaXRlciBwciA9IG5ldyBQcmlu
dFdyaXRlcihzdyk7CisgICAgICAgIHYxV3JpdGVyLndyaXRlKHByLCByZXMpOworICAgICAgICBw
ci5jbG9zZSgpOwogCi0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIkZhcm1p
bmcgSW5jaWRlbnRcIiIsIDAsIDEpOwotICAgIFJlc3VsdHNXcml0ZXIgd3JpdGVyID0gc3MuZ2V0
TW1kMldyaXRlcigpOwotICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsK
LSAgICBQcmludFdyaXRlciBwciA9IG5ldyBQcmludFdyaXRlcihzdyk7Ci0gICAgd3JpdGVyLndy
aXRlKHByLCByZXMsIFNlYXJjaFNlcnZlclNlcnZsZXQuUkVTUE9OU0VfSlNPTl9ORVcpOwotICAg
IHByLmNsb3NlKCk7CisgICAgICAgIFN0cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygpOworICAg
ICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiWG1sIGlzIiArIG91dHB1dCk7CisgICAgICAgIGFz
c2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJjb3VudD1cIjFcIiIpKTsKKyAgICAgICAgYXNzZXJ0
VHJ1ZShvdXRwdXQuY29udGFpbnMoIm9mZnNldD1cIjBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1
ZShvdXRwdXQuY29udGFpbnMoInR5cGU9XCJHcm91cFwiIikpOworICAgICAgICBhc3NlcnRUcnVl
KG91dHB1dC5jb250YWlucygiPG5hbWU+RWNobyAmYW1wOyBUaGUgQnVubnltZW48L25hbWU+Iikp
OworICAgIH0KIAotICAgIFN0cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygpOwotICAgIFN5c3Rl
bS5vdXQucHJpbnRsbigiSk5ldyBpcyIgKyBvdXRwdXQpOworICAgIC8qKgorICAgICAqIEB0aHJv
d3MgRXhjZXB0aW9uCisgICAgICovCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0T3V0
cHV0SnNvbigpIHRocm93cyBFeGNlcHRpb24gewogCi0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29u
dGFpbnMoImlkXCI6XCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzZcIiIpKTsK
LSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJ0eXBlXCI6XCJHcm91cFwiIikpOwot
ICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJuYW1lXCI6XCJGYXJtaW5nIEluY2lkZW50
XCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwic29ydC1uYW1lXCI6XCJJ
bmNpZGVudCwgRmFybWluZ1wiIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJc
ImJlZ2luXCI6XCIxOTk5LTA0XCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMo
IlwiZW5kZWRcIjp0cnVlIikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNv
dW50cnlcIjpcIkFGXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwiZ2Vu
ZGVyXCI6XCJtYWxlXCIiKSk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwidGFn
c1wiOlt7IikpOwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50XCI6NSIp
KTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJuYW1lXCI6XCJ0aHJhc2hcIiIp
KTsKLSAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJuYW1lXCI6XCJnw7x0aFwiIikp
OwotICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50XCI6MSIpKTsKLSAgICBh
c3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJvZmZzZXRcIjowIikpOworICAgICAgICBSZXN1
bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFybWluZyBJbmNpZGVudFwiIiwgMCwgMSk7
CisgICAgICAgIFJlc3VsdHNXcml0ZXIgd3JpdGVyID0gc3MuZ2V0TW1kMldyaXRlcigpOworICAg
ICAgICBTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisgICAgICAgIFByaW50
V3JpdGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKKyAgICAgICAgd3JpdGVyLndyaXRlKHBy
LCByZXMsIFNlYXJjaFNlcnZlclNlcnZsZXQuUkVTUE9OU0VfSlNPTik7CisgICAgICAgIHByLmNs
b3NlKCk7CiAKLSAgfQorICAgICAgICBTdHJpbmcgb3V0cHV0ID0gc3cudG9TdHJpbmcoKTsKKyAg
ICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJKc29uIGlzIiArIG91dHB1dCk7CiAKLSAgLyoqCi0g
ICAqIEB0aHJvd3MgRXhjZXB0aW9uCi0gICAqLwotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0
T3V0cHV0SnNvbk5ld1ByZXR0eSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRU
cnVlKG91dHB1dC5jb250YWlucygiaWRcIjpcIjQzMDJlMjY0LTFjZjAtNGQxZi1hY2E3LTJhNmY4
OWUzNGIzNlwiIikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJjb3Vu
dFwiOjEiKSk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcIm9mZnNldFwi
OjAsIikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJ0eXBlXCI6XCJH
cm91cFwiIikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygibmFtZVwiOlwi
RmFybWluZyBJbmNpZGVudFwiIikpOworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlu
cygiXCJzb3J0LW5hbWVcIjpcIkluY2lkZW50LCBGYXJtaW5nXCIiKSk7CisgICAgICAgIGFzc2Vy
dFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImJlZ2luXCI6XCIxOTk5LTA0XCIiKSk7CisgICAgICAg
IGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImVuZGVkXCI6XCJ0cnVlXCIiKSk7CisgICAg
ICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50cnlcIjpcIkFGXCIiKSk7Cisg
ICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImdlbmRlclwiOlwibWFsZVwiIikp
OworICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJ0YWdcIjpbe1wiY291bnRc
Ijo1LFwibmFtZVwiOlwidGhyYXNoXCJ9LHtcImNvdW50XCI6MTEsXCJuYW1lXCI6XCJnw7x0aFwi
fSIpKTsKKyAgICB9CiAKLSAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFy
bWluZyBJbmNpZGVudFwiIiwgMCwgMSk7Ci0gICAgUmVzdWx0c1dyaXRlciB3cml0ZXIgPSBzcy5n
ZXRNbWQyV3JpdGVyKCk7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigp
OwotICAgIFByaW50V3JpdGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3KTsKLSAgICB3cml0ZXIu
d3JpdGUocHIsIHJlcywgU2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05TRV9KU09OX05FVywgdHJ1
ZSk7Ci0gICAgcHIuY2xvc2UoKTsKIAotICAgIFN0cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygp
OwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSlNPTiBOZXcgUHJldHR5IGlzIiArIG91dHB1dCk7
Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwib2Zmc2V0XCIgOiAwIikpOworICAg
IEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdE91dHB1dEpzb25NdWx0aXBsZSgpIHRocm93cyBF
eGNlcHRpb24geworICAgICAgICBSZXN1bHRzIHJlcyA9IHNzLnNlYXJjaCgiYXJ0aXN0OlwiRmFy
bWluZyBJbmNpZGVudFwiIE9SIGFydGlzdDpcIkVjaG8gJiBUaGUgQnVubnltZW5cIiIsIDAsIDIp
OwogCi0gIH0KKyAgICAgICAgUmVzdWx0c1dyaXRlciB3cml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVy
KCk7CisgICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKyAgICAg
ICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOworICAgICAgICB3cml0ZXIu
d3JpdGUocHIsIHJlcywgU2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05TRV9KU09OKTsKKyAgICAg
ICAgcHIuY2xvc2UoKTsKKyAgICAgICAgU3RyaW5nIG91dHB1dCA9IHN3LnRvU3RyaW5nKCk7Cisg
ICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcInNjb3JlXCI6XCIxMDBcIiIpKTsK
KyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwic2NvcmVcIjpcIjMxXCIiKSk7
CisgICAgfQogCisgICAgLyoqCisgICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAgKi8KKyAg
ICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRKc29uTmV3KCkgdGhyb3dzIEV4Y2Vw
dGlvbiB7CiAKKyAgICAgICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFydGlzdDpcIkZhcm1p
bmcgSW5jaWRlbnRcIiIsIDAsIDEpOworICAgICAgICBSZXN1bHRzV3JpdGVyIHdyaXRlciA9IHNz
LmdldE1tZDJXcml0ZXIoKTsKKyAgICAgICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dy
aXRlcigpOworICAgICAgICBQcmludFdyaXRlciBwciA9IG5ldyBQcmludFdyaXRlcihzdyk7Cisg
ICAgICAgIHdyaXRlci53cml0ZShwciwgcmVzLCBTZWFyY2hTZXJ2ZXJTZXJ2bGV0LlJFU1BPTlNF
X0pTT05fTkVXKTsKKyAgICAgICAgcHIuY2xvc2UoKTsKIAotICAvKioKLSAgICogQHRocm93cyBF
eGNlcHRpb24KLSAgICovCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRKc29uTmV3
UHJldHR5V2l0aEFsaWFzZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIG91
dHB1dCA9IHN3LnRvU3RyaW5nKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSk5ldyBp
cyIgKyBvdXRwdXQpOwogCi0gICAgUmVzdWx0cyByZXMgPSBzcy5zZWFyY2goImFyaWQ6Y2NkNDg3
OWMtNWU4OC00Mzg1LWIxMzEtYmY2NTI5NmJmMjQ1IiwgMCwgMSk7Ci0gICAgUmVzdWx0c1dyaXRl
ciB3cml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVyKCk7Ci0gICAgU3RyaW5nV3JpdGVyIHN3ID0gbmV3
IFN0cmluZ1dyaXRlcigpOwotICAgIFByaW50V3JpdGVyIHByID0gbmV3IFByaW50V3JpdGVyKHN3
KTsKLSAgICB3cml0ZXIud3JpdGUocHIsIHJlcywgU2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05T
RV9KU09OX05FVywgdHJ1ZSk7Ci0gICAgcHIuY2xvc2UoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShv
dXRwdXQuY29udGFpbnMoImlkXCI6XCI0MzAyZTI2NC0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRi
MzZcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwidHlwZVwiOlwi
R3JvdXBcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIm5hbWVcIjpc
IkZhcm1pbmcgSW5jaWRlbnRcIiIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFp
bnMoIlwic29ydC1uYW1lXCI6XCJJbmNpZGVudCwgRmFybWluZ1wiIikpOworICAgICAgICBhc3Nl
cnRUcnVlKG91dHB1dC5jb250YWlucygiXCJiZWdpblwiOlwiMTk5OS0wNFwiIikpOworICAgICAg
ICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJlbmRlZFwiOnRydWUiKSk7CisgICAgICAg
IGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50cnlcIjpcIkFGXCIiKSk7CisgICAg
ICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImdlbmRlclwiOlwibWFsZVwiIikpOwor
ICAgICAgICBhc3NlcnRUcnVlKG91dHB1dC5jb250YWlucygiXCJ0YWdzXCI6W3siKSk7CisgICAg
ICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50XCI6NSIpKTsKKyAgICAgICAg
YXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwibmFtZVwiOlwidGhyYXNoXCIiKSk7CisgICAg
ICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcIm5hbWVcIjpcImfDvHRoXCIiKSk7Cisg
ICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcImNvdW50XCI6MSIpKTsKKyAgICAg
ICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFpbnMoIlwib2Zmc2V0XCI6MCIpKTsKIAotICAgIFN0
cmluZyBvdXRwdXQgPSBzdy50b1N0cmluZygpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSlNP
TiBOZXcgUHJldHR5IGlzIiArIG91dHB1dCk7Ci0gICAgYXNzZXJ0VHJ1ZShvdXRwdXQuY29udGFp
bnMoIlwic29ydC1uYW1lXCIgOiBcIkVjaG8gJiBUaGUgQnVubnltZW5cIiIpKTsKLSAgICBhc3Nl
cnRUcnVlKG91dHB1dC5jb250YWlucygiXCJhbGlhc2VzXCIgOiBbIFwiRWNobyBBbmQgVGhlIEJ1
bm55bWVuXCIsIFwiRWNobyAmIFRoZSBCdW5ueW1hblwiLCBcIkVjaG8gYW5kIFRoZSBCdW55bWVu
XCIsIFwiRWNobyAmIFRoZSBCdW55bWVuXCIgXSIpKTsKLSAgfQorICAgIH0KIAorICAgIC8qKgor
ICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICovCisgICAgQFRlc3QKKyAgICBwdWJsaWMg
dm9pZCB0ZXN0T3V0cHV0SnNvbk5ld1ByZXR0eSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAg
ICAgIFJlc3VsdHMgcmVzID0gc3Muc2VhcmNoKCJhcnRpc3Q6XCJGYXJtaW5nIEluY2lkZW50XCIi
LCAwLCAxKTsKKyAgICAgICAgUmVzdWx0c1dyaXRlciB3cml0ZXIgPSBzcy5nZXRNbWQyV3JpdGVy
KCk7CisgICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKyAgICAg
ICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOworICAgICAgICB3cml0ZXIu
d3JpdGUocHIsIHJlcywgU2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05TRV9KU09OX05FVywgdHJ1
ZSk7CisgICAgICAgIHByLmNsb3NlKCk7CisKKyAgICAgICAgU3RyaW5nIG91dHB1dCA9IHN3LnRv
U3RyaW5nKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSlNPTiBOZXcgUHJldHR5IGlz
IiArIG91dHB1dCk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcIm9mZnNl
dFwiIDogMCIpKTsKKworICAgIH0KKworCisgICAgLyoqCisgICAgICogQHRocm93cyBFeGNlcHRp
b24KKyAgICAgKi8KKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RPdXRwdXRKc29uTmV3
UHJldHR5V2l0aEFsaWFzZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBSZXN1bHRz
IHJlcyA9IHNzLnNlYXJjaCgiYXJpZDpjY2Q0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYy
NDUiLCAwLCAxKTsKKyAgICAgICAgUmVzdWx0c1dyaXRlciB3cml0ZXIgPSBzcy5nZXRNbWQyV3Jp
dGVyKCk7CisgICAgICAgIFN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKyAg
ICAgICAgUHJpbnRXcml0ZXIgcHIgPSBuZXcgUHJpbnRXcml0ZXIoc3cpOworICAgICAgICB3cml0
ZXIud3JpdGUocHIsIHJlcywgU2VhcmNoU2VydmVyU2VydmxldC5SRVNQT05TRV9KU09OX05FVywg
dHJ1ZSk7CisgICAgICAgIHByLmNsb3NlKCk7CisKKyAgICAgICAgU3RyaW5nIG91dHB1dCA9IHN3
LnRvU3RyaW5nKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSlNPTiBOZXcgUHJldHR5
IGlzIiArIG91dHB1dCk7CisgICAgICAgIGFzc2VydFRydWUob3V0cHV0LmNvbnRhaW5zKCJcInNv
cnQtbmFtZVwiIDogXCJFY2hvICYgVGhlIEJ1bm55bWVuXCIiKSk7CisgICAgICAgIGFzc2VydFRy
dWUob3V0cHV0LmNvbnRhaW5zKCJcImFsaWFzZXNcIiA6IFsgXCJFY2hvIEFuZCBUaGUgQnVubnlt
ZW5cIiwgXCJFY2hvICYgVGhlIEJ1bm55bWFuXCIsIFwiRWNobyBhbmQgVGhlIEJ1bnltZW5cIiwg
XCJFY2hvICYgVGhlIEJ1bnltZW5cIiBdIikpOworICAgIH0KKwogfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKCk1vZGlmaWVkOiBzZWFyY2hfc2VydmVyL3RydW5rL3NlcnZsZXQvc3JjL3Rl
c3QvamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL3NlcnZsZXQvSXNzdWVTZWFyY2gxNjdUZXN0
LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3NyYy90ZXN0
L2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L0lzc3VlU2VhcmNoMTY3VGVzdC5q
YXZhCTIwMTMtMDUtMDIgMjA6Mzg6MDUgVVRDIChyZXYgMTM2NzcpCisrKyBzZWFyY2hfc2VydmVy
L3RydW5rL3NlcnZsZXQvc3JjL3Rlc3QvamF2YS9vcmcvbXVzaWNicmFpbnovc2VhcmNoL3NlcnZs
ZXQvSXNzdWVTZWFyY2gxNjdUZXN0LmphdmEJMjAxMy0wNS0wOCAxNjowOToyNyBVVEMgKHJldiAx
MzY3OCkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5h
c3NlcnRFcXVhbHM7CiAKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKIGltcG9ydCBqYXZh
LnV0aWwuRGF0ZTsKIAogaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLmFuYWx5c2lzLkFuYWx5emVy
OwpAQCAtMTcsMTEgKzE4LDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUudXRpbC5OdW1l
cmljVXRpbHM7CiBpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVz
dDsKK2ltcG9ydCBvcmcubXVzaWNicmFpbnoubW1kMi4qOwogaW1wb3J0IG9yZy5tdXNpY2JyYWlu
ei5zZWFyY2guTHVjZW5lVmVyc2lvbjsKIGltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLk1i
RG9jdW1lbnQ7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5hbmFseXNpcy5NdXNpY2Jy
YWluelNpbWlsYXJpdHk7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5pbmRleC5BcnRp
c3RJbmRleEZpZWxkOwogaW1wb3J0IG9yZy5tdXNpY2JyYWluei5zZWFyY2guaW5kZXguRGF0YWJh
c2VJbmRleDsKK2ltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLmluZGV4Lk1NRFNlcmlhbGl6
ZXI7CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5pbmRleC5NZXRhSW5kZXhGaWVsZDsK
IAogLyoqCkBAIC0yOSwzNjggKzMyLDQ2NyBAQAogICovCiBwdWJsaWMgY2xhc3MgSXNzdWVTZWFy
Y2gxNjdUZXN0IHsKIAotICBwcml2YXRlIEFic3RyYWN0RGlzbWF4U2VhcmNoU2VydmVyIHNkOwor
ICAgIHByaXZhdGUgQWJzdHJhY3REaXNtYXhTZWFyY2hTZXJ2ZXIgc2Q7CiAKLSAgQEJlZm9yZQot
ICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFJBTURpcmVjdG9y
eSByYW1EaXIgPSBuZXcgUkFNRGlyZWN0b3J5KCk7Ci0gICAgQW5hbHl6ZXIgYW5hbHl6ZXIgPSBE
YXRhYmFzZUluZGV4LmdldEFuYWx5emVyKEFydGlzdEluZGV4RmllbGQuY2xhc3MpOwotICAgIElu
ZGV4V3JpdGVyQ29uZmlnIHdyaXRlckNvbmZpZyA9IG5ldyBJbmRleFdyaXRlckNvbmZpZyhMdWNl
bmVWZXJzaW9uLkxVQ0VORV9WRVJTSU9OLGFuYWx5emVyKTsKLSAgICB3cml0ZXJDb25maWcuc2V0
U2ltaWxhcml0eShuZXcgTXVzaWNicmFpbnpTaW1pbGFyaXR5KCkpOwotICAgIEluZGV4V3JpdGVy
IHdyaXRlciA9IG5ldyBJbmRleFdyaXRlcihyYW1EaXIsIHdyaXRlckNvbmZpZyk7CisgICAgQEJl
Zm9yZQorICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAg
IE9iamVjdEZhY3Rvcnkgb2YgPSBuZXcgT2JqZWN0RmFjdG9yeSgpOworICAgICAgICBSQU1EaXJl
Y3RvcnkgcmFtRGlyID0gbmV3IFJBTURpcmVjdG9yeSgpOworICAgICAgICBBbmFseXplciBhbmFs
eXplciA9IERhdGFiYXNlSW5kZXguZ2V0QW5hbHl6ZXIoQXJ0aXN0SW5kZXhGaWVsZC5jbGFzcyk7
CisgICAgICAgIEluZGV4V3JpdGVyQ29uZmlnIHdyaXRlckNvbmZpZyA9IG5ldyBJbmRleFdyaXRl
ckNvbmZpZyhMdWNlbmVWZXJzaW9uLkxVQ0VORV9WRVJTSU9OLCBhbmFseXplcik7CisgICAgICAg
IHdyaXRlckNvbmZpZy5zZXRTaW1pbGFyaXR5KG5ldyBNdXNpY2JyYWluelNpbWlsYXJpdHkoKSk7
CisgICAgICAgIEluZGV4V3JpdGVyIHdyaXRlciA9IG5ldyBJbmRleFdyaXRlcihyYW1EaXIsIHdy
aXRlckNvbmZpZyk7CiAKIAotICAgIC8vR2VuZXJhbCBQdXJwb3NlIEFydGlzdAotICAgIHsKLSAg
ICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsKLSAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCwgIjExMTExMTExLTFjZjAtNGQxZi1hY2E3LTJh
NmY4OWUzNGIzNiIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNU
X0FDQ0VOVCwgIlJlcHVibGljYSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuQVJUSVNULCAiUmVwdWJsaWNhIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhG
aWVsZC5TT1JUTkFNRSwgIlJlcHVibGljYSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuQkVHSU4sICIxOTk5LTA0Iik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5k
ZXhGaWVsZC5UWVBFLCAiR3JvdXAiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLkNPTU1FTlQsICJ0aGUgcmVhbCBvbmUiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkNPVU5UUlksICJBRiIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuR0VOREVSLCAibWFsZSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuVEFHLCAidGhyYXNoIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5U
QUdDT1VOVCwgIjUiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBRywg
ImfDvHRoIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUdDT1VOVCwg
IjExIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5JUEksIjEwMDEiKTsK
KyAgICAgICAgLy9HZW5lcmFsIFB1cnBvc2UgQXJ0aXN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCwgIjExMTExMTExLTFjZjAtNGQxZi1hY2E3
LTJhNmY4OWUzNGIzNiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuQVJUSVNUX0FDQ0VOVCwgIlJlcHVibGljYSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxk
KEFydGlzdEluZGV4RmllbGQuQVJUSVNULCAiUmVwdWJsaWNhIik7CisgICAgICAgICAgICBkb2Mu
YWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRSwgIlJlcHVibGljYSIpOworICAgICAg
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQkVHSU4sICIxOTk5LTA0Iik7Cisg
ICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAiR3JvdXAiKTsK
KyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQsICJ0aGUg
cmVhbCBvbmUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNP
VU5UUlksICJBRiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
R0VOREVSLCAibWFsZSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuVEFHLCAidGhyYXNoIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhG
aWVsZC5UQUcsICJnw7x0aCIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuSVBJLCAiMTAwMSIpOwogCi0gICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1
Y2VuZURvY3VtZW50KCkpOwotICAgIH0KKyAgICAgICAgICAgIEFydGlzdCBhcnRpc3QgPSBvZi5j
cmVhdGVBcnRpc3QoKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRJZCgiMTExMTExMTEtMWNmMC00
ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7CisgICAgICAgICAgICBhcnRpc3Quc2V0TmFtZSgiUmVw
dWJsaWNhIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0U29ydE5hbWUoIlJlcHVibGljYSIpOwor
ICAgICAgICAgICAgTGlmZVNwYW4gbGlmZXNwYW4gPSBvZi5jcmVhdGVMaWZlU3BhbigpOworICAg
ICAgICAgICAgbGlmZXNwYW4uc2V0QmVnaW4oIjE5OTktMDQiKTsKKyAgICAgICAgICAgIGxpZmVz
cGFuLnNldEVuZGVkKCJmYWxzZSIpOworICAgICAgICAgICAgYXJ0aXN0LnNldExpZmVTcGFuKGxp
ZmVzcGFuKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRUeXBlKCJHcm91cCIpOworICAgICAgICAg
ICAgYXJ0aXN0LnNldERpc2FtYmlndWF0aW9uKCJ0aGUgcmVhbCBvbmUiKTsKKyAgICAgICAgICAg
IGFydGlzdC5zZXRDb3VudHJ5KCJBRiIpOworICAgICAgICAgICAgYXJ0aXN0LnNldEdlbmRlcigi
bWFsZSIpOworICAgICAgICAgICAgVGFnTGlzdCB0YWdMaXN0ID0gb2YuY3JlYXRlVGFnTGlzdCgp
OworICAgICAgICAgICAgVGFnIHRhZyA9IG9mLmNyZWF0ZVRhZygpOworICAgICAgICAgICAgdGFn
LnNldE5hbWUoInRocmFzaCIpOworICAgICAgICAgICAgdGFnLnNldENvdW50KEJpZ0ludGVnZXIu
dmFsdWVPZig1KSk7CisgICAgICAgICAgICB0YWdMaXN0LmdldFRhZygpLmFkZCh0YWcpOwogCi0g
ICAgLy9HZW5lcmFsIFB1cnBvc2UgQXJ0aXN0Ci0gICAgewotICAgICAgTWJEb2N1bWVudCBkb2Mg
PSBuZXcgTWJEb2N1bWVudCgpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
QVJUSVNUX0lELCAiMjIyMjIyMjItMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfQUNDRU5ULCAiUmVww7pibGlj
YSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNULCAiUmVww7pi
bGljYSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJS
ZXDDumJsaWNhIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTiwg
IjE5OTktMDQiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUsICJH
cm91cCIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVCwgInRo
ZSByZWFsIG9uZSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09VTlRS
WSwgIkFGIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsICJt
YWxlIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJ0aHJhc2gi
KTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiNSIpOwot
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAiZ8O8dGgiKTsKLSAgICAg
IGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiMTEiKTsKLSAgICAgIGRv
Yy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLklQSSwiMTAwMSIpOworICAgICAgICAgICAgdGFn
ID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAgICB0YWcuc2V0TmFtZSgiZ8O8dGgiKTsKKyAg
ICAgICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoMTEpKTsKKyAgICAgICAg
ICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7CisgICAgICAgICAgICBhcnRpc3Quc2V0VGFn
TGlzdCh0YWdMaXN0KTsKIAotICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVE
b2N1bWVudCgpKTsKLSAgICB9CisgICAgICAgICAgICBJcGlMaXN0IGlwaUxpc3QgPSBvZi5jcmVh
dGVJcGlMaXN0KCk7CisgICAgICAgICAgICBpcGlMaXN0LmdldElwaSgpLmFkZCgiMTAwMSIpOwor
ICAgICAgICAgICAgYXJ0aXN0LnNldElwaUxpc3QoaXBpTGlzdCk7CiAKLSAgICAvL0dlbmVyYWwg
UHVycG9zZSBBcnRpc3QKLSAgICB7Ci0gICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3Vt
ZW50KCk7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQsICIz
MzMzMzMzMy0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKLSAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9BQ0NFTlQsICJSZXDDumJsaWNlIik7Ci0gICAgICBk
b2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QsICJSZXDDumJsaWNlIik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRSwgIlJlcMO6YmxpY2UiKTsK
LSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkJFR0lOLCAiMTk5OS0wNCIpOwot
ICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVFlQRSwgIkdyb3VwIik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULCAidGhlIHJlYWwgb25lIik7
Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT1VOVFJZLCAiQUYiKTsKLSAg
ICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRFUiwgIm1hbGUiKTsKLSAgICAg
IGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBRywgInRocmFzaCIpOwotICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHQ09VTlQsICI1Iik7Ci0gICAgICBkb2MuYWRk
RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJnw7x0aCIpOwotICAgICAgZG9jLmFkZEZpZWxk
KEFydGlzdEluZGV4RmllbGQuVEFHQ09VTlQsICIxMSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuSVBJLCIxMDAxIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0
aXN0SW5kZXhGaWVsZC5BUlRJU1RfU1RPUkUsIE1NRFNlcmlhbGl6ZXIuc2VyaWFsaXplKGFydGlz
dCkpOworICAgICAgICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVEb2N1bWVu
dCgpKTsKKyAgICAgICAgfQogCi0gICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2Vu
ZURvY3VtZW50KCkpOwotICAgIH0KKyAgICAgICAgLy9HZW5lcmFsIFB1cnBvc2UgQXJ0aXN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsK
KyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRCwgIjIy
MjIyMjIyLTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIpOworICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0FDQ0VOVCwgIlJlcMO6YmxpY2EiKTsKKyAg
ICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgIlJlcMO6Ymxp
Y2EiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1F
LCAiUmVww7pibGljYSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuQkVHSU4sICIxOTk5LTA0Iik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5k
ZXhGaWVsZC5UWVBFLCAiR3JvdXAiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkNPTU1FTlQsICJ0aGUgcmVhbCBvbmUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkNPVU5UUlksICJBRiIpOworICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuR0VOREVSLCAibWFsZSIpOworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAidGhyYXNoIik7CisgICAgICAgICAgICBk
b2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJnw7x0aCIpOworICAgICAgICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJLCAiMTAwMSIpOwogCi0gICAgLy9HZW5l
cmFsIFB1cnBvc2UgQXJ0aXN0Ci0gICAgewotICAgICAgTWJEb2N1bWVudCBkb2MgPSBuZXcgTWJE
b2N1bWVudCgpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lE
LCAiNDQ0NDQ0NDQtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7Ci0gICAgICBkb2MuYWRk
RmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfQUNDRU5ULCAiUmVww7pibGljIik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QsICJSZXDDumJsaWMiKTsKLSAg
ICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlNPUlROQU1FLCAiUmVww7pibGljIik7
Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTiwgIjE5OTktMDQiKTsK
LSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUsICJHcm91cCIpOwotICAg
ICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVCwgInRoZSByZWFsIG9uZSIp
OwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgIkFGIik7Ci0g
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsICJtYWxlIik7Ci0gICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJ0aHJhc2giKTsKLSAgICAgIGRv
Yy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiNSIpOwotICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAiZ8O8dGgiKTsKLSAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiMTEiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChB
cnRpc3RJbmRleEZpZWxkLklQSSwiMTAwMSIpOworICAgICAgICAgICAgQXJ0aXN0IGFydGlzdCA9
IG9mLmNyZWF0ZUFydGlzdCgpOworICAgICAgICAgICAgYXJ0aXN0LnNldElkKCIyMjIyMjIyMi0x
Y2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXROYW1l
KCJSZXB1YmxpY2EiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRTb3J0TmFtZSgiUmVwdWJsaWNh
Iik7CisgICAgICAgICAgICBMaWZlU3BhbiBsaWZlc3BhbiA9IG9mLmNyZWF0ZUxpZmVTcGFuKCk7
CisgICAgICAgICAgICBsaWZlc3Bhbi5zZXRCZWdpbigiMTk5OS0wNCIpOworICAgICAgICAgICAg
bGlmZXNwYW4uc2V0RW5kZWQoImZhbHNlIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0TGlmZVNw
YW4obGlmZXNwYW4pOworICAgICAgICAgICAgYXJ0aXN0LnNldFR5cGUoIkdyb3VwIik7CisgICAg
ICAgICAgICBhcnRpc3Quc2V0RGlzYW1iaWd1YXRpb24oInRoZSByZWFsIG9uZSIpOworICAgICAg
ICAgICAgYXJ0aXN0LnNldENvdW50cnkoIkFGIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0R2Vu
ZGVyKCJtYWxlIik7CisgICAgICAgICAgICBUYWdMaXN0IHRhZ0xpc3QgPSBvZi5jcmVhdGVUYWdM
aXN0KCk7CisgICAgICAgICAgICBUYWcgdGFnID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAg
ICB0YWcuc2V0TmFtZSgidGhyYXNoIik7CisgICAgICAgICAgICB0YWcuc2V0Q291bnQoQmlnSW50
ZWdlci52YWx1ZU9mKDUpKTsKKyAgICAgICAgICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7
CiAKLSAgICAgIHdyaXRlci5hZGREb2N1bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7Ci0g
ICAgfQorICAgICAgICAgICAgdGFnID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAgICB0YWcu
c2V0TmFtZSgiZ8O8dGgiKTsKKyAgICAgICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZh
bHVlT2YoMTEpKTsKKyAgICAgICAgICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7CisgICAg
ICAgICAgICBhcnRpc3Quc2V0VGFnTGlzdCh0YWdMaXN0KTsKIAotICAgIC8vRm9yIFBocmFzZSBT
ZWFyY2hpbmcgVGVzdHMKLSAgICB7Ci0gICAgICBNYkRvY3VtZW50IGRvYyA9IG5ldyBNYkRvY3Vt
ZW50KCk7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQsICI1
NTU1NTU1NS0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKLSAgICAgIGRvYy5hZGRGaWVs
ZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9BQ0NFTlQsICJlY2hvICYgdGhlIGJ1bm55bWVuIik7
Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1QsICJlY2hvICYgdGhl
IGJ1bm55bWVuIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFN
RSwgImJ1bm55bWVuLCBlY2hvIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5CRUdJTiwgIjE5OTktMDQiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxk
LlRZUEUsICJHcm91cCIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09N
TUVOVCwgInRoZSByZWFsIG9uZSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuQ09VTlRSWSwgIkFGIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5H
RU5ERVIsICJtYWxlIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcs
ICJ0aHJhc2giKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5U
LCAiNSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAiZ8O8dGgi
KTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiMTEiKTsK
LSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLklQSSwiMTAwMSIpOworICAgICAg
ICAgICAgSXBpTGlzdCBpcGlMaXN0ID0gb2YuY3JlYXRlSXBpTGlzdCgpOworICAgICAgICAgICAg
aXBpTGlzdC5nZXRJcGkoKS5hZGQoIjEwMDEiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRJcGlM
aXN0KGlwaUxpc3QpOwogCi0gICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2VuZURv
Y3VtZW50KCkpOwotICAgIH0KKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLkFSVElTVF9TVE9SRSwgTU1EU2VyaWFsaXplci5zZXJpYWxpemUoYXJ0aXN0KSk7CisgICAg
ICAgICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2VuZURvY3VtZW50KCkpOworICAg
ICAgICB9CiAKLSAgICAvL0ZvciBQaHJhc2UgU2VhcmNoaW5nIFRlc3RzCi0gICAgewotICAgICAg
TWJEb2N1bWVudCBkb2MgPSBuZXcgTWJEb2N1bWVudCgpOwotICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuQVJUSVNUX0lELCAiNjY2NjY2NjYtMWNmMC00ZDFmLWFjYTctMmE2Zjg5
ZTM0YjM2Iik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfQUND
RU5ULCAiZWNob2JlbGx5Iik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1QsICJlY2hvYmVsbHkiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxk
LlNPUlROQU1FLCAiZWNob2JlbGx5Iik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhG
aWVsZC5CRUdJTiwgIjE5OTktMDQiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLlRZUEUsICJHcm91cCIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
Q09NTUVOVCwgInRoZSByZWFsIG9uZSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuQ09VTlRSWSwgIkFGIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5HRU5ERVIsICJtYWxlIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5U
QUcsICJ0aHJhc2giKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NP
VU5ULCAiNSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAiZ8O8
dGgiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NPVU5ULCAiMTEi
KTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLklQSSwiMTAwMSIpOworICAg
ICAgICAvL0dlbmVyYWwgUHVycG9zZSBBcnRpc3QKKyAgICAgICAgeworICAgICAgICAgICAgTWJE
b2N1bWVudCBkb2MgPSBuZXcgTWJEb2N1bWVudCgpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxk
KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELCAiMzMzMzMzMzMtMWNmMC00ZDFmLWFjYTctMmE2
Zjg5ZTM0YjM2Iik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5B
UlRJU1RfQUNDRU5ULCAiUmVww7pibGljZSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuQVJUSVNULCAiUmVww7pibGljZSIpOworICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJSZXDDumJsaWNlIik7CisgICAgICAg
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5CRUdJTiwgIjE5OTktMDQiKTsKKyAg
ICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUsICJHcm91cCIpOwor
ICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09NTUVOVCwgInRoZSBy
ZWFsIG9uZSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQ09V
TlRSWSwgIkFGIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5H
RU5ERVIsICJtYWxlIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5UQUcsICJ0aHJhc2giKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLlRBRywgImfDvHRoIik7CisgICAgICAgICAgICA7CisgICAgICAgICAgICBkb2MuYWRkRmll
bGQoQXJ0aXN0SW5kZXhGaWVsZC5JUEksICIxMDAxIik7CiAKLSAgICAgIHdyaXRlci5hZGREb2N1
bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7Ci0gICAgfQorICAgICAgICAgICAgQXJ0aXN0
IGFydGlzdCA9IG9mLmNyZWF0ZUFydGlzdCgpOworICAgICAgICAgICAgYXJ0aXN0LnNldElkKCIz
MzMzMzMzMy0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiKTsKKyAgICAgICAgICAgIGFydGlz
dC5zZXROYW1lKCJSZXDDumJsaWNlIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0U29ydE5hbWUo
IlJlcMO6YmxpY2UiKTsKKyAgICAgICAgICAgIExpZmVTcGFuIGxpZmVzcGFuID0gb2YuY3JlYXRl
TGlmZVNwYW4oKTsKKyAgICAgICAgICAgIGxpZmVzcGFuLnNldEJlZ2luKCIxOTk5LTA0Iik7Cisg
ICAgICAgICAgICBsaWZlc3Bhbi5zZXRFbmRlZCgiZmFsc2UiKTsKKyAgICAgICAgICAgIGFydGlz
dC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7CisgICAgICAgICAgICBhcnRpc3Quc2V0VHlwZSgiR3Jv
dXAiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXREaXNhbWJpZ3VhdGlvbigidGhlIHJlYWwgb25l
Iik7CisgICAgICAgICAgICBhcnRpc3Quc2V0Q291bnRyeSgiQUYiKTsKKyAgICAgICAgICAgIGFy
dGlzdC5zZXRHZW5kZXIoIm1hbGUiKTsKKyAgICAgICAgICAgIFRhZ0xpc3QgdGFnTGlzdCA9IG9m
LmNyZWF0ZVRhZ0xpc3QoKTsKKyAgICAgICAgICAgIFRhZyB0YWcgPSBvZi5jcmVhdGVUYWcoKTsK
KyAgICAgICAgICAgIHRhZy5zZXROYW1lKCJ0aHJhc2giKTsKKyAgICAgICAgICAgIHRhZy5zZXRD
b3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoNSkpOworICAgICAgICAgICAgdGFnTGlzdC5nZXRUYWco
KS5hZGQodGFnKTsKIAotICAgIHsKLSAgICAgIE1iRG9jdW1lbnQgZG9jID0gbmV3IE1iRG9jdW1l
bnQoKTsKLSAgICAgIGRvYy5hZGRGaWVsZChNZXRhSW5kZXhGaWVsZC5NRVRBLCBNZXRhSW5kZXhG
aWVsZC5NRVRBX1ZBTFVFKTsKLSAgICAgICAgZG9jLmFkZE51bWVyaWNGaWVsZChNZXRhSW5kZXhG
aWVsZC5MQVNUX1VQREFURUQsIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTsKLSAgICAgIHdyaXRlci5h
ZGREb2N1bWVudChkb2MuZ2V0THVjZW5lRG9jdW1lbnQoKSk7Ci0gICAgfQorICAgICAgICAgICAg
dGFnID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAgICB0YWcuc2V0TmFtZSgiZ8O8dGgiKTsK
KyAgICAgICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoMTEpKTsKKyAgICAg
ICAgICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7CisgICAgICAgICAgICBhcnRpc3Quc2V0
VGFnTGlzdCh0YWdMaXN0KTsKIAotICAgIHdyaXRlci5jbG9zZSgpOwotICAgIFNlYXJjaGVyTWFu
YWdlciBzZWFyY2hlck1hbmFnZXIgPSBuZXcgU2VhcmNoZXJNYW5hZ2VyKHJhbURpciwgbmV3IE11
c2ljQnJhaW56U2VhcmNoZXJGYWN0b3J5KFJlc291cmNlVHlwZS5BUlRJU1QpKTsKLSAgICBzZCA9
IG5ldyBBcnRpc3REaXNtYXhTZWFyY2gobmV3IEFydGlzdFNlYXJjaChzZWFyY2hlck1hbmFnZXIp
KTsKLSAgfQorICAgICAgICAgICAgSXBpTGlzdCBpcGlMaXN0ID0gb2YuY3JlYXRlSXBpTGlzdCgp
OworICAgICAgICAgICAgaXBpTGlzdC5nZXRJcGkoKS5hZGQoIjEwMDEiKTsKKyAgICAgICAgICAg
IGFydGlzdC5zZXRJcGlMaXN0KGlwaUxpc3QpOwogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRl
c3RGaW5kQXJ0aXN0RGlzbWF4MSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NUT1JFLCBNTURTZXJpYWxpemVyLnNl
cmlhbGl6ZShhcnRpc3QpKTsKIAotICAgIFNlYXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIg
PSBzZC5nZXRTZWFyY2hlck1hbmFnZXIoKTsKLSAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0g
c2VhcmNoZXJNYW5hZ2VyLmFjcXVpcmUoKTsKLSAgICB0cnkgewotICAgICAgUXVlcnkgcSA9IHNk
LnBhcnNlUXVlcnkoIlJlcHVibGljYSIpOwotICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNo
ZXIuc2VhcmNoKHEsIDEwKTsKLSAgICAgIGZvcihTY29yZURvYyBtYXRjaDp0b3Bkb2NzLnNjb3Jl
RG9jcykKLSAgICAgIHsKLSAgICAgICAgRXhwbGFuYXRpb24gZXhwbGFpbiA9IHNlYXJjaGVyLmV4
cGxhaW4ocSwgbWF0Y2guZG9jKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2NObzoi
K21hdGNoLmRvYysiOiIrbWF0Y2guc2NvcmUrIjoiK3NlYXJjaGVyLmRvYyhtYXRjaC5kb2MpLmdl
dEZpZWxkKCJhcmlkIikuc3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRs
bihleHBsYWluKTsKLSAgICAgIH0KLSAgICAgIGFzc2VydEVxdWFscyg0LCB0b3Bkb2NzLnNjb3Jl
RG9jcy5sZW5ndGgpOworICAgICAgICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNl
bmVEb2N1bWVudCgpKTsKKyAgICAgICAgfQogCi0gICAgICBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1
bWVudC5Eb2N1bWVudCBkb2MgID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzBdLmRv
Yyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIjExMTExMTExLTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUz
NGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0TmFtZSgpKSk7Ci0g
ICAgICBkb2MgID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzFdLmRvYyk7Ci0gICAg
ICBhc3NlcnRFcXVhbHMoIjIyMjIyMjIyLTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRv
Yy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0TmFtZSgpKSk7Ci0gICAgfSBmaW5h
bGx5IHsKLSAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNlKHNlYXJjaGVyKTsKKyAgICAgICAg
Ly9HZW5lcmFsIFB1cnBvc2UgQXJ0aXN0CisgICAgICAgIHsKKyAgICAgICAgICAgIE1iRG9jdW1l
bnQgZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRp
c3RJbmRleEZpZWxkLkFSVElTVF9JRCwgIjQ0NDQ0NDQ0LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUz
NGIzNiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNU
X0FDQ0VOVCwgIlJlcMO6YmxpYyIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuQVJUSVNULCAiUmVww7pibGljIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQo
QXJ0aXN0SW5kZXhGaWVsZC5TT1JUTkFNRSwgIlJlcMO6YmxpYyIpOworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQkVHSU4sICIxOTk5LTA0Iik7CisgICAgICAgICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAiR3JvdXAiKTsKKyAgICAgICAg
ICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQsICJ0aGUgcmVhbCBvbmUi
KTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNPVU5UUlksICJB
RiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuR0VOREVSLCAi
bWFsZSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAi
dGhyYXNoIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcs
ICJnw7x0aCIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJ
LCAiMTAwMSIpOworCisgICAgICAgICAgICBBcnRpc3QgYXJ0aXN0ID0gb2YuY3JlYXRlQXJ0aXN0
KCk7CisgICAgICAgICAgICBhcnRpc3Quc2V0SWQoIjQ0NDQ0NDQ0LTFjZjAtNGQxZi1hY2E3LTJh
NmY4OWUzNGIzNiIpOworICAgICAgICAgICAgYXJ0aXN0LnNldE5hbWUoIlJlcMO6YmxpYyIpOwor
ICAgICAgICAgICAgYXJ0aXN0LnNldFNvcnROYW1lKCJSZXDDumJsaWMiKTsKKyAgICAgICAgICAg
IExpZmVTcGFuIGxpZmVzcGFuID0gb2YuY3JlYXRlTGlmZVNwYW4oKTsKKyAgICAgICAgICAgIGxp
ZmVzcGFuLnNldEJlZ2luKCIxOTk5LTA0Iik7CisgICAgICAgICAgICBsaWZlc3Bhbi5zZXRFbmRl
ZCgiZmFsc2UiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7Cisg
ICAgICAgICAgICBhcnRpc3Quc2V0VHlwZSgiR3JvdXAiKTsKKyAgICAgICAgICAgIGFydGlzdC5z
ZXREaXNhbWJpZ3VhdGlvbigidGhlIHJlYWwgb25lIik7CisgICAgICAgICAgICBhcnRpc3Quc2V0
Q291bnRyeSgiQUYiKTsKKyAgICAgICAgICAgIGFydGlzdC5zZXRHZW5kZXIoIm1hbGUiKTsKKyAg
ICAgICAgICAgIFRhZ0xpc3QgdGFnTGlzdCA9IG9mLmNyZWF0ZVRhZ0xpc3QoKTsKKyAgICAgICAg
ICAgIFRhZyB0YWcgPSBvZi5jcmVhdGVUYWcoKTsKKyAgICAgICAgICAgIHRhZy5zZXROYW1lKCJ0
aHJhc2giKTsKKyAgICAgICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoNSkp
OworICAgICAgICAgICAgdGFnTGlzdC5nZXRUYWcoKS5hZGQodGFnKTsKKworICAgICAgICAgICAg
dGFnID0gb2YuY3JlYXRlVGFnKCk7CisgICAgICAgICAgICB0YWcuc2V0TmFtZSgiZ8O8dGgiKTsK
KyAgICAgICAgICAgIHRhZy5zZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoMTEpKTsKKyAgICAg
ICAgICAgIHRhZ0xpc3QuZ2V0VGFnKCkuYWRkKHRhZyk7CisgICAgICAgICAgICBhcnRpc3Quc2V0
VGFnTGlzdCh0YWdMaXN0KTsKKworICAgICAgICAgICAgSXBpTGlzdCBpcGlMaXN0ID0gb2YuY3Jl
YXRlSXBpTGlzdCgpOworICAgICAgICAgICAgaXBpTGlzdC5nZXRJcGkoKS5hZGQoIjEwMDEiKTsK
KyAgICAgICAgICAgIGFydGlzdC5zZXRJcGlMaXN0KGlwaUxpc3QpOworCisgICAgICAgICAgICBk
b2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfU1RPUkUsIE1NRFNlcmlhbGl6ZXIu
c2VyaWFsaXplKGFydGlzdCkpOworICAgICAgICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5n
ZXRMdWNlbmVEb2N1bWVudCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vRm9yIFBocmFzZSBT
ZWFyY2hpbmcgVGVzdHMKKyAgICAgICAgeworICAgICAgICAgICAgTWJEb2N1bWVudCBkb2MgPSBu
ZXcgTWJEb2N1bWVudCgpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuQVJUSVNUX0lELCAiNTU1NTU1NTUtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7Cisg
ICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfQUNDRU5ULCAi
ZWNobyAmIHRoZSBidW5ueW1lbiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuQVJUSVNULCAiZWNobyAmIHRoZSBidW5ueW1lbiIpOworICAgICAgICAgICAgZG9j
LmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJidW5ueW1lbiwgZWNobyIpOwor
ICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuQkVHSU4sICIxOTk5LTA0
Iik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UWVBFLCAiR3Jv
dXAiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkNPTU1FTlQs
ICJ0aGUgcmVhbCBvbmUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZp
ZWxkLkNPVU5UUlksICJBRiIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuR0VOREVSLCAibWFsZSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdElu
ZGV4RmllbGQuVEFHLCAidGhyYXNoIik7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0
SW5kZXhGaWVsZC5UQUcsICJnw7x0aCIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlz
dEluZGV4RmllbGQuSVBJLCAiMTAwMSIpOworCisgICAgICAgICAgICB3cml0ZXIuYWRkRG9jdW1l
bnQoZG9jLmdldEx1Y2VuZURvY3VtZW50KCkpOworICAgICAgICB9CisKKyAgICAgICAgLy9Gb3Ig
UGhyYXNlIFNlYXJjaGluZyBUZXN0cworICAgICAgICB7CisgICAgICAgICAgICBNYkRvY3VtZW50
IGRvYyA9IG5ldyBNYkRvY3VtZW50KCk7CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0
SW5kZXhGaWVsZC5BUlRJU1RfSUQsICI2NjY2NjY2Ni0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRi
MzYiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9B
Q0NFTlQsICJlY2hvYmVsbHkiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRl
eEZpZWxkLkFSVElTVCwgImVjaG9iZWxseSIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFy
dGlzdEluZGV4RmllbGQuU09SVE5BTUUsICJlY2hvYmVsbHkiKTsKKyAgICAgICAgICAgIGRvYy5h
ZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkJFR0lOLCAiMTk5OS0wNCIpOworICAgICAgICAgICAg
ZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVFlQRSwgIkdyb3VwIik7CisgICAgICAgICAg
ICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT01NRU5ULCAidGhlIHJlYWwgb25lIik7
CisgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5DT1VOVFJZLCAiQUYi
KTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRFUiwgIm1h
bGUiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBRywgInRo
cmFzaCIpOworICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVEFHLCAi
Z8O8dGgiKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLklQSSwg
IjEwMDEiKTsKKworICAgICAgICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVE
b2N1bWVudCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE1iRG9jdW1l
bnQgZG9jID0gbmV3IE1iRG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGRvYy5hZGRGaWVsZChNZXRh
SW5kZXhGaWVsZC5NRVRBLCBNZXRhSW5kZXhGaWVsZC5NRVRBX1ZBTFVFKTsKKyAgICAgICAgICAg
IGRvYy5hZGROdW1lcmljRmllbGQoTWV0YUluZGV4RmllbGQuTEFTVF9VUERBVEVELCBuZXcgRGF0
ZSgpLmdldFRpbWUoKSk7CisgICAgICAgICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1
Y2VuZURvY3VtZW50KCkpOworICAgICAgICB9CisKKyAgICAgICAgd3JpdGVyLmNsb3NlKCk7Cisg
ICAgICAgIFNlYXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIgPSBuZXcgU2VhcmNoZXJNYW5h
Z2VyKHJhbURpciwgbmV3IE11c2ljQnJhaW56U2VhcmNoZXJGYWN0b3J5KFJlc291cmNlVHlwZS5B
UlRJU1QpKTsKKyAgICAgICAgc2QgPSBuZXcgQXJ0aXN0RGlzbWF4U2VhcmNoKG5ldyBBcnRpc3RT
ZWFyY2goc2VhcmNoZXJNYW5hZ2VyKSk7CiAgICAgfQotICB9CiAKLSAgQFRlc3QKLSAgcHVibGlj
IHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXgyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgQFRl
c3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21heDEoKSB0aHJvd3MgRXhjZXB0
aW9uIHsKIAotICAgIFNlYXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIgPSBzZC5nZXRTZWFy
Y2hlck1hbmFnZXIoKTsKLSAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0gc2VhcmNoZXJNYW5h
Z2VyLmFjcXVpcmUoKTsKLSAgICB0cnkgewotICAgICAgUXVlcnkgcSA9IHNkLnBhcnNlUXVlcnko
IlJlcMO6YmxpY2EiKTsKLSAgICAgIFRvcERvY3MgdG9wZG9jcyA9IHNlYXJjaGVyLnNlYXJjaChx
LCAxMCk7Ci0gICAgICBmb3IoU2NvcmVEb2MgbWF0Y2g6dG9wZG9jcy5zY29yZURvY3MpCi0gICAg
ICB7Ci0gICAgICAgIEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFyY2hlci5leHBsYWluKHEsIG1h
dGNoLmRvYyk7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9jTm86IittYXRjaC5kb2Mr
IjoiK21hdGNoLnNjb3JlKyI6IitzZWFyY2hlci5kb2MobWF0Y2guZG9jKS5nZXRGaWVsZCgiYXJp
ZCIpLnN0cmluZ1ZhbHVlKCkpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXhwbGFpbik7
Ci0gICAgICB9Ci0gICAgICBhc3NlcnRFcXVhbHMoNCwgdG9wZG9jcy5zY29yZURvY3MubGVuZ3Ro
KTsKKyAgICAgICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNkLmdldFNlYXJj
aGVyTWFuYWdlcigpOworICAgICAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0gc2VhcmNoZXJN
YW5hZ2VyLmFjcXVpcmUoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFF1ZXJ5IHEgPSBz
ZC5wYXJzZVF1ZXJ5KCJSZXB1YmxpY2EiKTsKKyAgICAgICAgICAgIFRvcERvY3MgdG9wZG9jcyA9
IHNlYXJjaGVyLnNlYXJjaChxLCAxMCk7CisgICAgICAgICAgICBmb3IgKFNjb3JlRG9jIG1hdGNo
IDogdG9wZG9jcy5zY29yZURvY3MpIHsKKyAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiBleHBs
YWluID0gc2VhcmNoZXIuZXhwbGFpbihxLCBtYXRjaC5kb2MpOworICAgICAgICAgICAgICAgIFN5
c3RlbS5vdXQucHJpbnRsbigiRG9jTm86IiArIG1hdGNoLmRvYyArICI6IiArIG1hdGNoLnNjb3Jl
ICsgIjoiICsgc2VhcmNoZXIuZG9jKG1hdGNoLmRvYykuZ2V0RmllbGQoImFyaWQiKS5zdHJpbmdW
YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXhwbGFpbik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdG9wZG9jcy5zY29yZURv
Y3MubGVuZ3RoKTsKIAotICAgICAgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuRG9jdW1lbnQg
ZG9jICA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1swXS5kb2MpOwotICAgICAgYXNz
ZXJ0RXF1YWxzKCIyMjIyMjIyMi0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0
KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkpOwotICAgICAgZG9jICA9IHNl
YXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1sxXS5kb2MpOwotICAgICAgYXNzZXJ0RXF1YWxz
KCIxMTExMTExMS0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdElu
ZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkpOwotICAgICAgZG9jICA9IHNlYXJjaGVyLmRv
Yyh0b3Bkb2NzLnNjb3JlRG9jc1syXS5kb2MpOwotICAgICAgYXNzZXJ0RXF1YWxzKCIzMzMzMzMz
My0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQu
QVJUSVNUX0lELmdldE5hbWUoKSkpOwotICAgICAgZG9jICA9IHNlYXJjaGVyLmRvYyh0b3Bkb2Nz
LnNjb3JlRG9jc1szXS5kb2MpOwotICAgICAgYXNzZXJ0RXF1YWxzKCI0NDQ0NDQ0NC0xY2YwLTRk
MWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lE
LmdldE5hbWUoKSkpOwotICAgIH0gZmluYWxseSB7Ci0gICAgICBzZWFyY2hlck1hbmFnZXIucmVs
ZWFzZShzZWFyY2hlcik7CisgICAgICAgICAgICBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5E
b2N1bWVudCBkb2MgPSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURvY3NbMF0uZG9jKTsKKyAg
ICAgICAgICAgIGFzc2VydEVxdWFscygiMTExMTExMTEtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0
YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpKTsKKyAg
ICAgICAgICAgIGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1sxXS5kb2MpOwor
ICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCIyMjIyMjIyMi0xY2YwLTRkMWYtYWNhNy0yYTZmODll
MzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkpOwor
ICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgc2VhcmNoZXJNYW5hZ2VyLnJlbGVhc2Uo
c2VhcmNoZXIpOworICAgICAgICB9CiAgICAgfQotICB9CiAKLSAgQFRlc3QKLSAgcHVibGljIHZv
aWQgdGVzdEZpbmRBcnRpc3REaXNtYXhGdXp6eSgpIHRocm93cyBFeGNlcHRpb24geworICAgIEBU
ZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXgyKCkgdGhyb3dzIEV4Y2Vw
dGlvbiB7CiAKLSAgICBTZWFyY2hlck1hbmFnZXIgc2VhcmNoZXJNYW5hZ2VyID0gc2QuZ2V0U2Vh
cmNoZXJNYW5hZ2VyKCk7Ci0gICAgSW5kZXhTZWFyY2hlciBzZWFyY2hlciA9IHNlYXJjaGVyTWFu
YWdlci5hY3F1aXJlKCk7Ci0gICAgdHJ5IHsKLSAgICAgIFF1ZXJ5IHEgPSBzZC5wYXJzZVF1ZXJ5
KCJSZXDDumJsaWMiKTsKLSAgICAgIFRvcERvY3MgdG9wZG9jcyA9IHNlYXJjaGVyLnNlYXJjaChx
LCAxMCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoNCwgdG9wZG9jcy5zY29yZURvY3MubGVuZ3RoKTsK
LSAgICAgIGZvcihTY29yZURvYyBtYXRjaDp0b3Bkb2NzLnNjb3JlRG9jcykKLSAgICAgIHsKLSAg
ICAgICAgRXhwbGFuYXRpb24gZXhwbGFpbiA9IHNlYXJjaGVyLmV4cGxhaW4ocSwgbWF0Y2guZG9j
KTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2NObzoiK21hdGNoLmRvYysiOiIrbWF0
Y2guc2NvcmUrIjoiK3NlYXJjaGVyLmRvYyhtYXRjaC5kb2MpLmdldEZpZWxkKCJhcmlkIikuc3Ry
aW5nVmFsdWUoKSsiOiIrZXhwbGFpbik7Ci0gICAgICB9CisgICAgICAgIFNlYXJjaGVyTWFuYWdl
ciBzZWFyY2hlck1hbmFnZXIgPSBzZC5nZXRTZWFyY2hlck1hbmFnZXIoKTsKKyAgICAgICAgSW5k
ZXhTZWFyY2hlciBzZWFyY2hlciA9IHNlYXJjaGVyTWFuYWdlci5hY3F1aXJlKCk7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBRdWVyeSBxID0gc2QucGFyc2VRdWVyeSgiUmVww7pibGljYSIp
OworICAgICAgICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNoZXIuc2VhcmNoKHEsIDEwKTsK
KyAgICAgICAgICAgIGZvciAoU2NvcmVEb2MgbWF0Y2ggOiB0b3Bkb2NzLnNjb3JlRG9jcykgewor
ICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFyY2hlci5leHBsYWluKHEs
IG1hdGNoLmRvYyk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2NObzoi
ICsgbWF0Y2guZG9jICsgIjoiICsgbWF0Y2guc2NvcmUgKyAiOiIgKyBzZWFyY2hlci5kb2MobWF0
Y2guZG9jKS5nZXRGaWVsZCgiYXJpZCIpLnN0cmluZ1ZhbHVlKCkpOworICAgICAgICAgICAgICAg
IFN5c3RlbS5vdXQucHJpbnRsbihleHBsYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGFzc2VydEVxdWFscyg0LCB0b3Bkb2NzLnNjb3JlRG9jcy5sZW5ndGgpOwogCi0gICAgICBvcmcu
YXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5Eb2N1bWVudCBkb2MgID0gc2VhcmNoZXIuZG9jKHRvcGRv
Y3Muc2NvcmVEb2NzWzBdLmRvYyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIjQ0NDQ0NDQ0LTFjZjAt
NGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1Rf
SUQuZ2V0TmFtZSgpKSk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIHNlYXJjaGVyTWFuYWdlci5y
ZWxlYXNlKHNlYXJjaGVyKTsKKyAgICAgICAgICAgIG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50
LkRvY3VtZW50IGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1swXS5kb2MpOwor
ICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCIyMjIyMjIyMi0xY2YwLTRkMWYtYWNhNy0yYTZmODll
MzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkpOwor
ICAgICAgICAgICAgZG9jID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzFdLmRvYyk7
CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIjExMTExMTExLTFjZjAtNGQxZi1hY2E3LTJhNmY4
OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0TmFtZSgpKSk7
CisgICAgICAgICAgICBkb2MgPSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURvY3NbMl0uZG9j
KTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygiMzMzMzMzMzMtMWNmMC00ZDFmLWFjYTctMmE2
Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkp
KTsKKyAgICAgICAgICAgIGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1szXS5k
b2MpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCI0NDQ0NDQ0NC0xY2YwLTRkMWYtYWNhNy0y
YTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUo
KSkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgc2VhcmNoZXJNYW5hZ2VyLnJl
bGVhc2Uoc2VhcmNoZXIpOworICAgICAgICB9CiAgICAgfQotICB9CiAKLSAgQFRlc3QKLSAgcHVi
bGljIHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXhXaWxkY2FyZCgpIHRocm93cyBFeGNlcHRpb24g
ewotICAgIFNlYXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIgPSBzZC5nZXRTZWFyY2hlck1h
bmFnZXIoKTsKLSAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0gc2VhcmNoZXJNYW5hZ2VyLmFj
cXVpcmUoKTsKLSAgICB0cnkgewotICAgICAgUXVlcnkgcSA9IHNkLnBhcnNlUXVlcnkoIlJlcMO6
YiIpOwotICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNoZXIuc2VhcmNoKHEsIDEwKTsKLSAg
ICAgIGFzc2VydEVxdWFscyg0LCB0b3Bkb2NzLnNjb3JlRG9jcy5sZW5ndGgpOwotICAgICAgZm9y
KFNjb3JlRG9jIG1hdGNoOnRvcGRvY3Muc2NvcmVEb2NzKQotICAgICAgewotICAgICAgICBFeHBs
YW5hdGlvbiBleHBsYWluID0gc2VhcmNoZXIuZXhwbGFpbihxLCBtYXRjaC5kb2MpOwotICAgICAg
ICBTeXN0ZW0ub3V0LnByaW50bG4oIkRvY05vOiIrbWF0Y2guZG9jKyI6IittYXRjaC5zY29yZSsi
OiIrc2VhcmNoZXIuZG9jKG1hdGNoLmRvYykuZ2V0RmllbGQoImFyaWQiKS5zdHJpbmdWYWx1ZSgp
KyI6IitleHBsYWluKTsKLSAgICAgIH0KLSAgICB9IGZpbmFsbHkgewotICAgICAgc2VhcmNoZXJN
YW5hZ2VyLnJlbGVhc2Uoc2VhcmNoZXIpOworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVz
dEZpbmRBcnRpc3REaXNtYXhGdXp6eSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFNl
YXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIgPSBzZC5nZXRTZWFyY2hlck1hbmFnZXIoKTsK
KyAgICAgICAgSW5kZXhTZWFyY2hlciBzZWFyY2hlciA9IHNlYXJjaGVyTWFuYWdlci5hY3F1aXJl
KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBRdWVyeSBxID0gc2QucGFyc2VRdWVyeSgi
UmVww7pibGljIik7CisgICAgICAgICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hlci5zZWFy
Y2gocSwgMTApOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHRvcGRvY3Muc2NvcmVEb2Nz
Lmxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKFNjb3JlRG9jIG1hdGNoIDogdG9wZG9jcy5zY29y
ZURvY3MpIHsKKyAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiBleHBsYWluID0gc2VhcmNoZXIu
ZXhwbGFpbihxLCBtYXRjaC5kb2MpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRs
bigiRG9jTm86IiArIG1hdGNoLmRvYyArICI6IiArIG1hdGNoLnNjb3JlICsgIjoiICsgc2VhcmNo
ZXIuZG9jKG1hdGNoLmRvYykuZ2V0RmllbGQoImFyaWQiKS5zdHJpbmdWYWx1ZSgpICsgIjoiICsg
ZXhwbGFpbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9yZy5hcGFjaGUubHVjZW5l
LmRvY3VtZW50LkRvY3VtZW50IGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1sw
XS5kb2MpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCI0NDQ0NDQ0NC0xY2YwLTRkMWYtYWNh
Ny0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5h
bWUoKSkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgc2VhcmNoZXJNYW5hZ2Vy
LnJlbGVhc2Uoc2VhcmNoZXIpOworICAgICAgICB9CiAgICAgfQotICB9CiAKLSAgQFRlc3QKLSAg
cHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXhUb29TaG9ydEZvcldpbGRjYXJkKCkgdGhy
b3dzIEV4Y2VwdGlvbiB7Ci0gICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNk
LmdldFNlYXJjaGVyTWFuYWdlcigpOwotICAgIEluZGV4U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFy
Y2hlck1hbmFnZXIuYWNxdWlyZSgpOwotICAgIHRyeSB7Ci0gICAgICBRdWVyeSBxID0gc2QucGFy
c2VRdWVyeSgiUmVwIik7Ci0gICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hlci5zZWFyY2go
cSwgMTApOwotICAgICAgYXNzZXJ0RXF1YWxzKDAsIHRvcGRvY3Muc2NvcmVEb2NzLmxlbmd0aCk7
Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNlKHNlYXJjaGVy
KTsKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0RGlzbWF4V2lsZGNh
cmQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVy
TWFuYWdlciA9IHNkLmdldFNlYXJjaGVyTWFuYWdlcigpOworICAgICAgICBJbmRleFNlYXJjaGVy
IHNlYXJjaGVyID0gc2VhcmNoZXJNYW5hZ2VyLmFjcXVpcmUoKTsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIFF1ZXJ5IHEgPSBzZC5wYXJzZVF1ZXJ5KCJSZXDDumIiKTsKKyAgICAgICAgICAg
IFRvcERvY3MgdG9wZG9jcyA9IHNlYXJjaGVyLnNlYXJjaChxLCAxMCk7CisgICAgICAgICAgICBh
c3NlcnRFcXVhbHMoNCwgdG9wZG9jcy5zY29yZURvY3MubGVuZ3RoKTsKKyAgICAgICAgICAgIGZv
ciAoU2NvcmVEb2MgbWF0Y2ggOiB0b3Bkb2NzLnNjb3JlRG9jcykgeworICAgICAgICAgICAgICAg
IEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFyY2hlci5leHBsYWluKHEsIG1hdGNoLmRvYyk7Cisg
ICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2NObzoiICsgbWF0Y2guZG9jICsg
IjoiICsgbWF0Y2guc2NvcmUgKyAiOiIgKyBzZWFyY2hlci5kb2MobWF0Y2guZG9jKS5nZXRGaWVs
ZCgiYXJpZCIpLnN0cmluZ1ZhbHVlKCkgKyAiOiIgKyBleHBsYWluKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNl
KHNlYXJjaGVyKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2
b2lkIHRlc3RGaW5kQXJ0aXN0RGlzbWF4UGhyYXNlRnV6enkoKSB0aHJvd3MgRXhjZXB0aW9uIHsK
KyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0RGlzbWF4VG9vU2hvcnRG
b3JXaWxkY2FyZCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTZWFyY2hlck1hbmFnZXIg
c2VhcmNoZXJNYW5hZ2VyID0gc2QuZ2V0U2VhcmNoZXJNYW5hZ2VyKCk7CisgICAgICAgIEluZGV4
U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFyY2hlck1hbmFnZXIuYWNxdWlyZSgpOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgUXVlcnkgcSA9IHNkLnBhcnNlUXVlcnkoIlJlcCIpOworICAgICAg
ICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNoZXIuc2VhcmNoKHEsIDEwKTsKKyAgICAgICAg
ICAgIGFzc2VydEVxdWFscygwLCB0b3Bkb2NzLnNjb3JlRG9jcy5sZW5ndGgpOworICAgICAgICB9
IGZpbmFsbHkgeworICAgICAgICAgICAgc2VhcmNoZXJNYW5hZ2VyLnJlbGVhc2Uoc2VhcmNoZXIp
OworICAgICAgICB9CisgICAgfQogCi0gICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdl
ciA9IHNkLmdldFNlYXJjaGVyTWFuYWdlcigpOwotICAgIEluZGV4U2VhcmNoZXIgc2VhcmNoZXIg
PSBzZWFyY2hlck1hbmFnZXIuYWNxdWlyZSgpOwotICAgIHRyeSB7Ci0gICAgICBRdWVyeSBxID0g
c2QucGFyc2VRdWVyeSgiRWNobyBidW5uZXltZW4iKTsKLSAgICAgIFRvcERvY3MgdG9wZG9jcyA9
IHNlYXJjaGVyLnNlYXJjaChxLCAxMCk7Ci0gICAgICBhc3NlcnRFcXVhbHMoMiwgdG9wZG9jcy5z
Y29yZURvY3MubGVuZ3RoKTsKLSAgICAgIGZvcihTY29yZURvYyBtYXRjaDp0b3Bkb2NzLnNjb3Jl
RG9jcykKLSAgICAgIHsKLSAgICAgICAgRXhwbGFuYXRpb24gZXhwbGFpbiA9IHNlYXJjaGVyLmV4
cGxhaW4ocSwgbWF0Y2guZG9jKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2NObzoi
K21hdGNoLmRvYysiOiIrbWF0Y2guc2NvcmUrIjoiK3NlYXJjaGVyLmRvYyhtYXRjaC5kb2MpLmdl
dEZpZWxkKCJhcmlkIikuc3RyaW5nVmFsdWUoKSsiOiIrZXhwbGFpbik7Ci0gICAgICB9CisgICAg
QFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21heFBocmFzZUZ1enp5KCkg
dGhyb3dzIEV4Y2VwdGlvbiB7CiAKLSAgICAgIG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LkRv
Y3VtZW50IGRvYyAgPSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURvY3NbMF0uZG9jKTsKLSAg
ICAgIGFzc2VydEVxdWFscygiNTU1NTU1NTUtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iiwg
ZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpKTsKKyAgICAgICAg
U2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNkLmdldFNlYXJjaGVyTWFuYWdlcigp
OworICAgICAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0gc2VhcmNoZXJNYW5hZ2VyLmFjcXVp
cmUoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFF1ZXJ5IHEgPSBzZC5wYXJzZVF1ZXJ5
KCJFY2hvIGJ1bm5leW1lbiIpOworICAgICAgICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNo
ZXIuc2VhcmNoKHEsIDEwKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCB0b3Bkb2NzLnNj
b3JlRG9jcy5sZW5ndGgpOworICAgICAgICAgICAgZm9yIChTY29yZURvYyBtYXRjaCA6IHRvcGRv
Y3Muc2NvcmVEb2NzKSB7CisgICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gZXhwbGFpbiA9IHNl
YXJjaGVyLmV4cGxhaW4ocSwgbWF0Y2guZG9jKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0
LnByaW50bG4oIkRvY05vOiIgKyBtYXRjaC5kb2MgKyAiOiIgKyBtYXRjaC5zY29yZSArICI6IiAr
IHNlYXJjaGVyLmRvYyhtYXRjaC5kb2MpLmdldEZpZWxkKCJhcmlkIikuc3RyaW5nVmFsdWUoKSAr
ICI6IiArIGV4cGxhaW4pOworICAgICAgICAgICAgfQogCi0gICAgICBkb2MgID0gc2VhcmNoZXIu
ZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzFdLmRvYyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIjY2NjY2
NjY2LTFjZjAtNGQxZi1hY2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVs
ZC5BUlRJU1RfSUQuZ2V0TmFtZSgpKSk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIHNlYXJjaGVy
TWFuYWdlci5yZWxlYXNlKHNlYXJjaGVyKTsKKyAgICAgICAgICAgIG9yZy5hcGFjaGUubHVjZW5l
LmRvY3VtZW50LkRvY3VtZW50IGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1sw
XS5kb2MpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCI1NTU1NTU1NS0xY2YwLTRkMWYtYWNh
Ny0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5h
bWUoKSkpOworCisgICAgICAgICAgICBkb2MgPSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURv
Y3NbMV0uZG9jKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygiNjY2NjY2NjYtMWNmMC00ZDFm
LWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5n
ZXROYW1lKCkpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHNlYXJjaGVyTWFu
YWdlci5yZWxlYXNlKHNlYXJjaGVyKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQogCi0gIEBUZXN0
Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0RGlzbWF4UGhyYXNlRnV6enkyKCkgdGhyb3dz
IEV4Y2VwdGlvbiB7CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERp
c21heFBocmFzZUZ1enp5MigpIHRocm93cyBFeGNlcHRpb24gewogCi0gICAgU2VhcmNoZXJNYW5h
Z2VyIHNlYXJjaGVyTWFuYWdlciA9IHNkLmdldFNlYXJjaGVyTWFuYWdlcigpOwotICAgIEluZGV4
U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFyY2hlck1hbmFnZXIuYWNxdWlyZSgpOwotICAgIHRyeSB7
Ci0gICAgICBRdWVyeSBxID0gc2QucGFyc2VRdWVyeSgiRWNobyAmIHRoZSBidW5ueW1lbiIpOwot
ICAgICAgVG9wRG9jcyB0b3Bkb2NzID0gc2VhcmNoZXIuc2VhcmNoKHEsIDEwKTsKLSAgICAgIGFz
c2VydEVxdWFscygyLCB0b3Bkb2NzLnNjb3JlRG9jcy5sZW5ndGgpOwotICAgICAgZm9yKFNjb3Jl
RG9jIG1hdGNoOnRvcGRvY3Muc2NvcmVEb2NzKQotICAgICAgewotICAgICAgICBFeHBsYW5hdGlv
biBleHBsYWluID0gc2VhcmNoZXIuZXhwbGFpbihxLCBtYXRjaC5kb2MpOwotICAgICAgICBTeXN0
ZW0ub3V0LnByaW50bG4oIkRvY05vOiIrbWF0Y2guZG9jKyI6IittYXRjaC5zY29yZSsiOiIrc2Vh
cmNoZXIuZG9jKG1hdGNoLmRvYykuZ2V0RmllbGQoImFyaWQiKS5zdHJpbmdWYWx1ZSgpKyI6Iitl
eHBsYWluKTsKLSAgICAgIH0KKyAgICAgICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdl
ciA9IHNkLmdldFNlYXJjaGVyTWFuYWdlcigpOworICAgICAgICBJbmRleFNlYXJjaGVyIHNlYXJj
aGVyID0gc2VhcmNoZXJNYW5hZ2VyLmFjcXVpcmUoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIFF1ZXJ5IHEgPSBzZC5wYXJzZVF1ZXJ5KCJFY2hvICYgdGhlIGJ1bm55bWVuIik7CisgICAg
ICAgICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hlci5zZWFyY2gocSwgMTApOworICAgICAg
ICAgICAgYXNzZXJ0RXF1YWxzKDIsIHRvcGRvY3Muc2NvcmVEb2NzLmxlbmd0aCk7CisgICAgICAg
ICAgICBmb3IgKFNjb3JlRG9jIG1hdGNoIDogdG9wZG9jcy5zY29yZURvY3MpIHsKKyAgICAgICAg
ICAgICAgICBFeHBsYW5hdGlvbiBleHBsYWluID0gc2VhcmNoZXIuZXhwbGFpbihxLCBtYXRjaC5k
b2MpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9jTm86IiArIG1hdGNo
LmRvYyArICI6IiArIG1hdGNoLnNjb3JlICsgIjoiICsgc2VhcmNoZXIuZG9jKG1hdGNoLmRvYyku
Z2V0RmllbGQoImFyaWQiKS5zdHJpbmdWYWx1ZSgpICsgIjoiICsgZXhwbGFpbik7CisgICAgICAg
ICAgICB9CiAKLSAgICAgIG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LkRvY3VtZW50IGRvYyAg
PSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURvY3NbMF0uZG9jKTsKLSAgICAgIGFzc2VydEVx
dWFscygiNTU1NTU1NTUtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChBcnRp
c3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpKTsKKyAgICAgICAgICAgIG9yZy5hcGFj
aGUubHVjZW5lLmRvY3VtZW50LkRvY3VtZW50IGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNj
b3JlRG9jc1swXS5kb2MpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCI1NTU1NTU1NS0xY2Yw
LTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNU
X0lELmdldE5hbWUoKSkpOwogCi0gICAgICBkb2MgID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2Nv
cmVEb2NzWzFdLmRvYyk7Ci0gICAgICBhc3NlcnRFcXVhbHMoIjY2NjY2NjY2LTFjZjAtNGQxZi1h
Y2E3LTJhNmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0
TmFtZSgpKSk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNl
KHNlYXJjaGVyKTsKKyAgICAgICAgICAgIGRvYyA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3Jl
RG9jc1sxXS5kb2MpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCI2NjY2NjY2Ni0xY2YwLTRk
MWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2MuZ2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lE
LmdldE5hbWUoKSkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgc2VhcmNoZXJN
YW5hZ2VyLnJlbGVhc2Uoc2VhcmNoZXIpOworICAgICAgICB9CiAgICAgfQotICB9CiAKLSAgQFRl
c3QKLSAgcHVibGljIHZvaWQgdGVzdEZpbmRBcnRpc3REaXNtYXhXaWxkY2FyZDIoKSB0aHJvd3Mg
RXhjZXB0aW9uIHsKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RGaW5kQXJ0aXN0RGlz
bWF4V2lsZGNhcmQyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAKLSAgICBTZWFyY2hlck1hbmFnZXIg
c2VhcmNoZXJNYW5hZ2VyID0gc2QuZ2V0U2VhcmNoZXJNYW5hZ2VyKCk7Ci0gICAgSW5kZXhTZWFy
Y2hlciBzZWFyY2hlciA9IHNlYXJjaGVyTWFuYWdlci5hY3F1aXJlKCk7Ci0gICAgdHJ5IHsKLSAg
ICAgIFF1ZXJ5IHEgPSBzZC5wYXJzZVF1ZXJ5KCJFY2hvIik7Ci0gICAgICBUb3BEb2NzIHRvcGRv
Y3MgPSBzZWFyY2hlci5zZWFyY2gocSwgMTApOwotICAgICAgYXNzZXJ0RXF1YWxzKDIsIHRvcGRv
Y3Muc2NvcmVEb2NzLmxlbmd0aCk7Ci0gICAgICBmb3IoU2NvcmVEb2MgbWF0Y2g6dG9wZG9jcy5z
Y29yZURvY3MpCi0gICAgICB7Ci0gICAgICAgIEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFyY2hl
ci5leHBsYWluKHEsIG1hdGNoLmRvYyk7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9j
Tm86IittYXRjaC5kb2MrIjoiK21hdGNoLnNjb3JlKyI6IitzZWFyY2hlci5kb2MobWF0Y2guZG9j
KS5nZXRGaWVsZCgiYXJpZCIpLnN0cmluZ1ZhbHVlKCkrIjoiK2V4cGxhaW4pOwotICAgICAgfQor
ICAgICAgICBTZWFyY2hlck1hbmFnZXIgc2VhcmNoZXJNYW5hZ2VyID0gc2QuZ2V0U2VhcmNoZXJN
YW5hZ2VyKCk7CisgICAgICAgIEluZGV4U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFyY2hlck1hbmFn
ZXIuYWNxdWlyZSgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgUXVlcnkgcSA9IHNkLnBh
cnNlUXVlcnkoIkVjaG8iKTsKKyAgICAgICAgICAgIFRvcERvY3MgdG9wZG9jcyA9IHNlYXJjaGVy
LnNlYXJjaChxLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdG9wZG9jcy5zY29y
ZURvY3MubGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAoU2NvcmVEb2MgbWF0Y2ggOiB0b3Bkb2Nz
LnNjb3JlRG9jcykgeworICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFy
Y2hlci5leHBsYWluKHEsIG1hdGNoLmRvYyk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5w
cmludGxuKCJEb2NObzoiICsgbWF0Y2guZG9jICsgIjoiICsgbWF0Y2guc2NvcmUgKyAiOiIgKyBz
ZWFyY2hlci5kb2MobWF0Y2guZG9jKS5nZXRGaWVsZCgiYXJpZCIpLnN0cmluZ1ZhbHVlKCkgKyAi
OiIgKyBleHBsYWluKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgb3JnLmFwYWNoZS5sdWNlbmUu
ZG9jdW1lbnQuRG9jdW1lbnQgZG9jICA9IHNlYXJjaGVyLmRvYyh0b3Bkb2NzLnNjb3JlRG9jc1sw
XS5kb2MpOwotICAgICAgLy9hc3NlcnRFcXVhbHMoIjU1NTU1NTU1LTFjZjAtNGQxZi1hY2E3LTJh
NmY4OWUzNGIzNiIsIGRvYy5nZXQoQXJ0aXN0SW5kZXhGaWVsZC5BUlRJU1RfSUQuZ2V0TmFtZSgp
KSk7CisgICAgICAgICAgICBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5Eb2N1bWVudCBkb2Mg
PSBzZWFyY2hlci5kb2ModG9wZG9jcy5zY29yZURvY3NbMF0uZG9jKTsKKyAgICAgICAgICAgIC8v
YXNzZXJ0RXF1YWxzKCI1NTU1NTU1NS0xY2YwLTRkMWYtYWNhNy0yYTZmODllMzRiMzYiLCBkb2Mu
Z2V0KEFydGlzdEluZGV4RmllbGQuQVJUSVNUX0lELmdldE5hbWUoKSkpOwogCi0gICAgICBkb2Mg
ID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzFdLmRvYyk7Ci0gICAgICAvL2Fzc2Vy
dEVxdWFscygiNjY2NjY2NjYtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9jLmdldChB
cnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpKTsKLSAgICB9IGZpbmFsbHkgewot
ICAgICAgc2VhcmNoZXJNYW5hZ2VyLnJlbGVhc2Uoc2VhcmNoZXIpOworICAgICAgICAgICAgZG9j
ID0gc2VhcmNoZXIuZG9jKHRvcGRvY3Muc2NvcmVEb2NzWzFdLmRvYyk7CisgICAgICAgICAgICAv
L2Fzc2VydEVxdWFscygiNjY2NjY2NjYtMWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2IiwgZG9j
LmdldChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9JRC5nZXROYW1lKCkpKTsKKyAgICAgICAgfSBm
aW5hbGx5IHsKKyAgICAgICAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNlKHNlYXJjaGVyKTsK
KyAgICAgICAgfQogICAgIH0KLSAgfQogCi0gIEBUZXN0Ci0gIHB1YmxpYyB2b2lkIHRlc3RGaW5k
QXJ0aXN0RGlzbWF4U3BlY2lhbENoYXJzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgQFRlc3QK
KyAgICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21heFNwZWNpYWxDaGFycygpIHRocm93
cyBFeGNlcHRpb24gewogCi0gICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNk
LmdldFNlYXJjaGVyTWFuYWdlcigpOwotICAgIEluZGV4U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFy
Y2hlck1hbmFnZXIuYWNxdWlyZSgpOwotICAgIHRyeSB7Ci0gICAgICBRdWVyeSBxID0gc2QucGFy
c2VRdWVyeSgiUmVwdWJsaWNhL0RDIik7Ci0gICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hl
ci5zZWFyY2gocSwgMTApOwotICAgICAgYXNzZXJ0RXF1YWxzKDIsIHRvcGRvY3Muc2NvcmVEb2Nz
Lmxlbmd0aCk7Ci0gICAgICBmb3IoU2NvcmVEb2MgbWF0Y2g6dG9wZG9jcy5zY29yZURvY3MpCi0g
ICAgICB7Ci0gICAgICAgIEV4cGxhbmF0aW9uIGV4cGxhaW4gPSBzZWFyY2hlci5leHBsYWluKHEs
IG1hdGNoLmRvYyk7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9jTm86IittYXRjaC5k
b2MrIjoiK21hdGNoLnNjb3JlKyI6IitzZWFyY2hlci5kb2MobWF0Y2guZG9jKS5nZXRGaWVsZCgi
YXJpZCIpLnN0cmluZ1ZhbHVlKCkrIjoiK2V4cGxhaW4pOwotICAgICAgfQotICAgIH0gZmluYWxs
eSB7Ci0gICAgICBzZWFyY2hlck1hbmFnZXIucmVsZWFzZShzZWFyY2hlcik7CisgICAgICAgIFNl
YXJjaGVyTWFuYWdlciBzZWFyY2hlck1hbmFnZXIgPSBzZC5nZXRTZWFyY2hlck1hbmFnZXIoKTsK
KyAgICAgICAgSW5kZXhTZWFyY2hlciBzZWFyY2hlciA9IHNlYXJjaGVyTWFuYWdlci5hY3F1aXJl
KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBRdWVyeSBxID0gc2QucGFyc2VRdWVyeSgi
UmVwdWJsaWNhL0RDIik7CisgICAgICAgICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hlci5z
ZWFyY2gocSwgMTApOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHRvcGRvY3Muc2NvcmVE
b2NzLmxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKFNjb3JlRG9jIG1hdGNoIDogdG9wZG9jcy5z
Y29yZURvY3MpIHsKKyAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiBleHBsYWluID0gc2VhcmNo
ZXIuZXhwbGFpbihxLCBtYXRjaC5kb2MpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJp
bnRsbigiRG9jTm86IiArIG1hdGNoLmRvYyArICI6IiArIG1hdGNoLnNjb3JlICsgIjoiICsgc2Vh
cmNoZXIuZG9jKG1hdGNoLmRvYykuZ2V0RmllbGQoImFyaWQiKS5zdHJpbmdWYWx1ZSgpICsgIjoi
ICsgZXhwbGFpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAg
ICAgICBzZWFyY2hlck1hbmFnZXIucmVsZWFzZShzZWFyY2hlcik7CisgICAgICAgIH0KICAgICB9
Ci0gIH0KIAotICBAVGVzdAotICBwdWJsaWMgdm9pZCB0ZXN0RmluZEFydGlzdERpc21heFNwZWNp
YWxDaGFyczIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lk
IHRlc3RGaW5kQXJ0aXN0RGlzbWF4U3BlY2lhbENoYXJzMigpIHRocm93cyBFeGNlcHRpb24gewog
Ci0gICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNkLmdldFNlYXJjaGVyTWFu
YWdlcigpOwotICAgIEluZGV4U2VhcmNoZXIgc2VhcmNoZXIgPSBzZWFyY2hlck1hbmFnZXIuYWNx
dWlyZSgpOwotICAgIHRyeSB7Ci0gICAgICBRdWVyeSBxID0gc2QucGFyc2VRdWVyeSgiUmVwdWJs
aWNhLURDIik7Ci0gICAgICBUb3BEb2NzIHRvcGRvY3MgPSBzZWFyY2hlci5zZWFyY2gocSwgMTAp
OwotICAgICAgYXNzZXJ0RXF1YWxzKDIsIHRvcGRvY3Muc2NvcmVEb2NzLmxlbmd0aCk7Ci0gICAg
fSBmaW5hbGx5IHsKLSAgICAgIHNlYXJjaGVyTWFuYWdlci5yZWxlYXNlKHNlYXJjaGVyKTsKKyAg
ICAgICAgU2VhcmNoZXJNYW5hZ2VyIHNlYXJjaGVyTWFuYWdlciA9IHNkLmdldFNlYXJjaGVyTWFu
YWdlcigpOworICAgICAgICBJbmRleFNlYXJjaGVyIHNlYXJjaGVyID0gc2VhcmNoZXJNYW5hZ2Vy
LmFjcXVpcmUoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFF1ZXJ5IHEgPSBzZC5wYXJz
ZVF1ZXJ5KCJSZXB1YmxpY2EtREMiKTsKKyAgICAgICAgICAgIFRvcERvY3MgdG9wZG9jcyA9IHNl
YXJjaGVyLnNlYXJjaChxLCAxMCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdG9wZG9j
cy5zY29yZURvY3MubGVuZ3RoKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHNl
YXJjaGVyTWFuYWdlci5yZWxlYXNlKHNlYXJjaGVyKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQog
CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKTW9kaWZpZWQ6IHNlYXJjaF9zZXJ2ZXIv
dHJ1bmsvc2VydmxldC9zcmMvdGVzdC9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvc2Vydmxl
dC9SZWxvYWRJbmRleGVzVGVzdC5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlYXJjaF9zZXJ2ZXIvdHJ1
bmsvc2VydmxldC9zcmMvdGVzdC9qYXZhL29yZy9tdXNpY2JyYWluei9zZWFyY2gvc2VydmxldC9S
ZWxvYWRJbmRleGVzVGVzdC5qYXZhCTIwMTMtMDUtMDIgMjA6Mzg6MDUgVVRDIChyZXYgMTM2Nzcp
CisrKyBzZWFyY2hfc2VydmVyL3RydW5rL3NlcnZsZXQvc3JjL3Rlc3QvamF2YS9vcmcvbXVzaWNi
cmFpbnovc2VhcmNoL3NlcnZsZXQvUmVsb2FkSW5kZXhlc1Rlc3QuamF2YQkyMDEzLTA1LTA4IDE2
OjA5OjI3IFVUQyAocmV2IDEzNjc4KQpAQCAtNTQsOSArNTQsNyBAQAogICAgICAgZG9jLmFkZEZp
ZWxkKEFydGlzdEluZGV4RmllbGQuQ09VTlRSWSwgIkFGIik7CiAgICAgICBkb2MuYWRkRmllbGQo
QXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsICJtYWxlIik7CiAgICAgICBkb2MuYWRkRmllbGQoQXJ0
aXN0SW5kZXhGaWVsZC5UQUcsICJ0aHJhc2giKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLlRBR0NPVU5ULCAiNSIpOwotICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuVEFHLCAiZ8O8dGgiKTsKLSAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxk
LlRBR0NPVU5ULCAiMTEiKTsKKyAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRB
RywgImfDvHRoIik7OwogICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuSVBJLCAi
MTAwMSIpOwogICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVEb2N1bWVudCgp
KTsKICAgICB9CkBAIC0xMjQsOSArMTIyLDcgQEAKICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJ
bmRleEZpZWxkLkNPVU5UUlksICJBRiIpOwogICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuR0VOREVSLCAibWFsZSIpOwogICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4Rmll
bGQuVEFHLCAidGhyYXNoIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5U
QUdDT1VOVCwgIjUiKTsKICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBRywg
ImfDvHRoIik7Ci0gICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUdDT1VOVCwg
IjExIik7CiAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5JUEksICIxMDAxIik7
CiAgICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1Y2VuZURvY3VtZW50KCkpOwogICAg
IH0KCk1vZGlmaWVkOiBzZWFyY2hfc2VydmVyL3RydW5rL3NlcnZsZXQvc3JjL3Rlc3QvamF2YS9v
cmcvbXVzaWNicmFpbnovc2VhcmNoL3NlcnZsZXQvU2VhcmNoQWxsMlRlc3QuamF2YQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzZWFyY2hfc2VydmVyL3RydW5rL3NlcnZsZXQvc3JjL3Rlc3QvamF2YS9vcmcvbXVz
aWNicmFpbnovc2VhcmNoL3NlcnZsZXQvU2VhcmNoQWxsMlRlc3QuamF2YQkyMDEzLTA1LTAyIDIw
OjM4OjA1IFVUQyAocmV2IDEzNjc3KQorKysgc2VhcmNoX3NlcnZlci90cnVuay9zZXJ2bGV0L3Ny
Yy90ZXN0L2phdmEvb3JnL211c2ljYnJhaW56L3NlYXJjaC9zZXJ2bGV0L1NlYXJjaEFsbDJUZXN0
LmphdmEJMjAxMy0wNS0wOCAxNjowOToyNyBVVEMgKHJldiAxMzY3OCkKQEAgLTgsNiArOCw3IEBA
CiBpbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc3RvcmUuUkFNRGlyZWN0b3J5OwogaW1wb3J0IG9y
Zy5qdW5pdC5CZWZvcmU7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLm11c2lj
YnJhaW56Lm1tZDIuKjsKIGltcG9ydCBvcmcubXVzaWNicmFpbnouc2VhcmNoLkx1Y2VuZVZlcnNp
b247CiBpbXBvcnQgb3JnLm11c2ljYnJhaW56LnNlYXJjaC5NYkRvY3VtZW50OwogaW1wb3J0IG9y
Zy5tdXNpY2JyYWluei5zZWFyY2guYW5hbHlzaXMuTXVzaWNicmFpbnpTaW1pbGFyaXR5OwpAQCAt
MTcsNiArMTgsNyBAQAogCiBpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKIGltcG9ydCBqYXZh
LmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKIGltcG9ydCBq
YXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwogaW1wb3J0
IGphdmEudXRpbC5EYXRlOwpAQCAtNDgsNiArNTAsNyBAQAogICAgIEBCZWZvcmUKICAgICBwdWJs
aWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24KICAgICB7CisgICAgICAgIE9iamVjdEZh
Y3Rvcnkgb2YgPSBuZXcgT2JqZWN0RmFjdG9yeSgpOwogICAgICAgICB7CiAgICAgICAgICAgICBS
QU1EaXJlY3RvcnkgcmFtRGlyID0gbmV3IFJBTURpcmVjdG9yeSgpOwogICAgICAgICAgICAgQW5h
bHl6ZXIgYW5hbHl6ZXIgPSBEYXRhYmFzZUluZGV4LmdldEFuYWx5emVyKExhYmVsSW5kZXhGaWVs
ZC5jbGFzcyk7CkBAIC0xNDAsMTIgKzE0Myw0MSBAQAogICAgICAgICAgICAgICAgIGRvYy5hZGRG
aWVsZChBcnRpc3RJbmRleEZpZWxkLkNPVU5UUlksICJBRiIpOwogICAgICAgICAgICAgICAgIGRv
Yy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkdFTkRFUiwgIm1hbGUiKTsKICAgICAgICAgICAg
ICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJ0aHJhc2giKTsKLSAgICAg
ICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUdDT1VOVCwgIjUiKTsK
ICAgICAgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5UQUcsICJnw7x0
aCIpOwotICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRBR0NP
VU5ULCAiMTEiKTsKICAgICAgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVs
ZC5JUEksICIxMDAxIik7CiAgICAgICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4
RmllbGQuSVBJLCAiMTAwMiIpOwogCisgICAgICAgICAgICAgICAgQXJ0aXN0IGFydGlzdCA9IG9m
LmNyZWF0ZUFydGlzdCgpOworICAgICAgICAgICAgICAgIGFydGlzdC5zZXRJZCgiNDMwMmUyNjQt
MWNmMC00ZDFmLWFjYTctMmE2Zjg5ZTM0YjM2Iik7CisgICAgICAgICAgICAgICAgYXJ0aXN0LnNl
dE5hbWUoIkRhcmsgSW5jaWRlbnQiKTsKKyAgICAgICAgICAgICAgICBhcnRpc3Quc2V0U29ydE5h
bWUoIkRhcmsgSW5jaWRlbnQiKTsKKyAgICAgICAgICAgICAgICBMaWZlU3BhbiBsaWZlc3BhbiA9
IG9mLmNyZWF0ZUxpZmVTcGFuKCk7CisgICAgICAgICAgICAgICAgbGlmZXNwYW4uc2V0QmVnaW4o
IjE5OTktMDQiKTsKKyAgICAgICAgICAgICAgICBsaWZlc3Bhbi5zZXRFbmRlZCgidHJ1ZSIpOwor
ICAgICAgICAgICAgICAgIGFydGlzdC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7CisgICAgICAgICAg
ICAgICAgYXJ0aXN0LnNldFR5cGUoIkdyb3VwIik7CisgICAgICAgICAgICAgICAgYXJ0aXN0LnNl
dERpc2FtYmlndWF0aW9uKCJ0aGUgcmVhbCBvbmUiKTsKKyAgICAgICAgICAgICAgICBhcnRpc3Qu
c2V0Q291bnRyeSgiQUYiKTsKKyAgICAgICAgICAgICAgICBhcnRpc3Quc2V0R2VuZGVyKCJtYWxl
Iik7CisgICAgICAgICAgICAgICAgVGFnTGlzdCB0YWdMaXN0ID0gb2YuY3JlYXRlVGFnTGlzdCgp
OworICAgICAgICAgICAgICAgIFRhZyB0YWcgPSBvZi5jcmVhdGVUYWcoKTsKKyAgICAgICAgICAg
ICAgICB0YWcuc2V0TmFtZSgidGhyYXNoIik7CisgICAgICAgICAgICAgICAgdGFnLnNldENvdW50
KEJpZ0ludGVnZXIudmFsdWVPZig1KSk7CisgICAgICAgICAgICAgICAgdGFnTGlzdC5nZXRUYWco
KS5hZGQodGFnKTsKKworICAgICAgICAgICAgICAgIHRhZyA9IG9mLmNyZWF0ZVRhZygpOworICAg
ICAgICAgICAgICAgIHRhZy5zZXROYW1lKCJnw7x0aCIpOworICAgICAgICAgICAgICAgIHRhZy5z
ZXRDb3VudChCaWdJbnRlZ2VyLnZhbHVlT2YoMTEpKTsKKyAgICAgICAgICAgICAgICB0YWdMaXN0
LmdldFRhZygpLmFkZCh0YWcpOworICAgICAgICAgICAgICAgIGFydGlzdC5zZXRUYWdMaXN0KHRh
Z0xpc3QpOworCisgICAgICAgICAgICAgICAgSXBpTGlzdCBpcGlMaXN0ID0gb2YuY3JlYXRlSXBp
TGlzdCgpOworICAgICAgICAgICAgICAgIGlwaUxpc3QuZ2V0SXBpKCkuYWRkKCIxMDAxIik7Cisg
ICAgICAgICAgICAgICAgaXBpTGlzdC5nZXRJcGkoKS5hZGQoIjEwMDIiKTsKKyAgICAgICAgICAg
ICAgICBhcnRpc3Quc2V0SXBpTGlzdChpcGlMaXN0KTsKKworICAgICAgICAgICAgICAgIGRvYy5h
ZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVF9TVE9SRSwgTU1EU2VyaWFsaXplci5zZXJp
YWxpemUoYXJ0aXN0KSk7CisKICAgICAgICAgICAgICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9j
LmdldEx1Y2VuZURvY3VtZW50KCkpOwogICAgICAgICAgICAgfQogCkBAIC0xNTcsOCArMTg5LDI1
IEBACiAgICAgICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQuU09SVE5B
TUUsICJkYXJrLHRoZSIpOwogICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRl
eEZpZWxkLkJFR0lOLCAiMTk3OCIpOwogICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRp
c3RJbmRleEZpZWxkLkNPVU5UUlksICJ1bmtub3duIik7Ci0gICAgICAgICAgICAgICAgZG9jLmFk
ZEZpZWxkKEFydGlzdEluZGV4RmllbGQuVFlQRSwgQXJ0aXN0VHlwZS5HUk9VUC5nZXROYW1lKCkp
OworICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLlRZUEUsICJH
cm91cCIpOwogICAgICAgICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFM
SUFTLCAiVGhlIGRhcmtuZXNzIik7CisKKyAgICAgICAgICAgICAgICBBcnRpc3QgYXJ0aXN0ID0g
b2YuY3JlYXRlQXJ0aXN0KCk7CisgICAgICAgICAgICAgICAgYXJ0aXN0LnNldElkKCJjY2Q0ODc5
Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiKTsKKyAgICAgICAgICAgICAgICBhcnRpc3Qu
c2V0TmFtZSgiVGhlIGRhcmtuZXNzIik7CisgICAgICAgICAgICAgICAgYXJ0aXN0LnNldFNvcnRO
YW1lKCJkYXJrLHRoZSIpOworICAgICAgICAgICAgICAgIExpZmVTcGFuIGxpZmVzcGFuID0gb2Yu
Y3JlYXRlTGlmZVNwYW4oKTsKKyAgICAgICAgICAgICAgICBsaWZlc3Bhbi5zZXRCZWdpbigiMTk3
OCIpOworICAgICAgICAgICAgICAgIGFydGlzdC5zZXRMaWZlU3BhbihsaWZlc3Bhbik7CisgICAg
ICAgICAgICAgICAgYXJ0aXN0LnNldFR5cGUoIkdyb3VwIik7CisKKyAgICAgICAgICAgICAgICBB
bGlhc0xpc3QgYWxpYXNMaXN0ID0gb2YuY3JlYXRlQWxpYXNMaXN0KCk7CisgICAgICAgICAgICAg
ICAgQWxpYXMgYWxpYXMgPSBvZi5jcmVhdGVBbGlhcygpOworICAgICAgICAgICAgICAgIGFsaWFz
LnNldENvbnRlbnQoIlRoZSBkYXJrbmVzcyIpOworICAgICAgICAgICAgICAgIGFsaWFzTGlzdC5n
ZXRBbGlhcygpLmFkZChhbGlhcyk7CisKKyAgICAgICAgICAgICAgICBkb2MuYWRkRmllbGQoQXJ0
aXN0SW5kZXhGaWVsZC5BUlRJU1RfU1RPUkUsIE1NRFNlcmlhbGl6ZXIuc2VyaWFsaXplKGFydGlz
dCkpOworCiAgICAgICAgICAgICAgICAgd3JpdGVyLmFkZERvY3VtZW50KGRvYy5nZXRMdWNlbmVE
b2N1bWVudCgpKTsKICAgICAgICAgICAgIH0KIApAQCAtMTY5LDYgKzIxOCwxNCBAQAogICAgICAg
ICAgICAgICAgIGRvYy5hZGRGaWVsZChBcnRpc3RJbmRleEZpZWxkLkFSVElTVCwgIlRoZSBkYXJr
IHBsYWNlIik7CiAgICAgICAgICAgICAgICAgZG9jLmFkZEZpZWxkKEFydGlzdEluZGV4RmllbGQu
VFlQRSwgQXJ0aXN0VHlwZS5QRVJTT04uZ2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICBkb2Mu
YWRkRmllbGQoQXJ0aXN0SW5kZXhGaWVsZC5HRU5ERVIsICJ1bmtub3duIik7CisKKyAgICAgICAg
ICAgICAgICBBcnRpc3QgYXJ0aXN0ID0gb2YuY3JlYXRlQXJ0aXN0KCk7CisgICAgICAgICAgICAg
ICAgYXJ0aXN0LnNldElkKCJkZGU0ODc5Yy01ZTg4LTQzODUtYjEzMS1iZjY1Mjk2YmYyNDUiKTsK
KyAgICAgICAgICAgICAgICBhcnRpc3Quc2V0TmFtZSgiVGhlIGRhcmsgcGxhY2UiKTsKKyAgICAg
ICAgICAgICAgICBhcnRpc3Quc2V0U29ydE5hbWUoImRhcmssdGhlIik7CisgICAgICAgICAgICAg
ICAgYXJ0aXN0LnNldFR5cGUoIlBlcnNvbiIpOworCisgICAgICAgICAgICAgICAgZG9jLmFkZEZp
ZWxkKEFydGlzdEluZGV4RmllbGQuQVJUSVNUX1NUT1JFLCBNTURTZXJpYWxpemVyLnNlcmlhbGl6
ZShhcnRpc3QpKTsKICAgICAgICAgICAgICAgICB3cml0ZXIuYWRkRG9jdW1lbnQoZG9jLmdldEx1
Y2VuZURvY3VtZW50KCkpOwogICAgICAgICAgICAgfQogCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTXVzaWNCcmFpbnotY29tbWl0cyBtYWlsaW5nIGxp
c3QKTXVzaWNCcmFpbnotY29tbWl0c0BsaXN0cy5tdXNpY2JyYWluei5vcmcKaHR0cDovL2xpc3Rz
Lm11c2ljYnJhaW56Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL211c2ljYnJhaW56LWNvbW1pdHM=