Xen Security Advisory 498 v2 (CVE-2026-42491) - XAPI: Missing TLS verification in some SDKs

Xen.org security team <[email protected]> Tue, 14 Jul 2026 12:05:22 +0000
Newsgroups gmane.comp.emulators.xen.announce
Message-ID <E1wjbt4-001ipR-2I__7600.53855353675$1784030853$gmane$org@xenbits.xenproject.org>
--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

            Xen Security Advisory CVE-2026-42491 / XSA-498
                               version 2

              XAPI: Missing TLS verification in some SDKs

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

XAPI provides SDKs; bindings for the API in various programming
languages.  These are artefacts from a build of XAPI, intended for
integration into 3rd party products.

In all SDKs, there is a main RPC connection to the XAPI host.  TLS for
this connection is verified properly, or delegated to the 3rd party
logic, in all language bindings.

There are also certain HTTP handlers which open a separate connection to
the XAPI host.  For two of the language bindings only (C# and
Powershell), TLS verification is improperly implemented on these
connections.

IMPACT
======

A malicious actor able to perform a Man-in-the-Middle attack on the
network communication between a program using one of the affected SDKs
and a host running XAPI may be able to intercept the communication and:

 * Steal a session token, allowing for hijack of the administrative
   session, or
 * Read or tamper with exported/imported disk images, host backups, RRD
   (performance) data and patches/updates in transit.

VULNERABLE SYSTEMS
==================

This issues has been present in the XAPI C# and Powershell SDKs since
TLS support was added.

MITIGATION
==========

There are no known mitigations.

CREDITS
=======

This issue was discovered by the Veeam Team.

RESOLUTION
==========

Applying the attached patch to XAPI master will generate fixed SDKs.
3rd party programs using vulnerable SDKs must be rebuilt against the
fixed SDKs.

xsa498.patch           XAPI master

$ sha256sum xsa498*
f2db9e16561edc59b920e0ed95cce3a19147abc6eb2b8500bd73b87dc285d4ba  xsa498.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches and/or mitigations described above (or
others which are substantially similar) is permitted during the
embargo, even on public-facing systems with untrusted guest users and
administrators.

But: Distribution of updated software is prohibited (except to other
members of the predisclosure list).

Predisclosure list members who wish to deploy significantly different
patches and/or mitigations, please contact the Xen Project Security
Team.


(Note: this during-embargo deployment notice is retained in
post-embargo publicly released Xen Project advisories, even though it
is then no longer applicable.  This is to enable the community to have
oversight of the Xen Project Security Team's decisionmaking.)

For more information about permissible uses of embargoed information,
consult the Xen Project community's agreed Security Policy:
  http://www.xenproject.org/security-policy.html
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmpWJfMMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZgYEH/jqpKmvSl2oVn5v8Wdk3KZfOxW67ejyA5NpUyW1i
MOwFQyA7gCrxwDaHN62u0aabs4kJNErOzeuVPCtElIyQN+bpB/5lR6nxnxQaQM8K
Ddhtg6rFQfP121+XGYjtbUOr5fvDkLu290XExow5XWKNmk3P1B3HKImPtkmzGpN6
z9FceAqzGX9N7eCPw3waMGsy50/n8L9cLvkyjPHpfb5beTq0AVQFJVD38P8humk0
xY9r+Iq0aGCxyyEZkHJsDaQfuKo3OYGPVoEEB5YiXPS+1P72lRrwkSFL+qJqAPLn
pDAqAGx1wRYvM6zITDnqbwnBYQ7je3UNZlMVEJj2dHWDOLs=
=3Knk
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa498.patch"
Content-Disposition: attachment; filename="xsa498.patch"
Content-Transfer-Encoding: base64

RnJvbSA3MzY4MzQ2NmIyN2Q3NTMyNDU1ZjMwMjUyMzQ2NjEwOWEwM2U4NDMy
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25zdGFudGluYSBD
aHJlbW1vdSA8a29uc3RhbnRpbmEuY2hyZW1tb3VAY2l0cml4LmNvbT4KRGF0
ZTogRnJpLCAzIEp1bCAyMDI2IDE0OjU1OjI2ICswMTAwClN1YmplY3Q6IFtQ
QVRDSF0gQ29ycmVjdGVkIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gZm9yIEhU
VFAgY2FsbHMKClRoaXMgaXMgWFNBLTQ5OCAvIENWRS0yMDI2LTQyNDkxLgoK
U2lnbmVkLW9mZi1ieTogS29uc3RhbnRpbmEgQ2hyZW1tb3UgPGtvbnN0YW50
aW5hLmNocmVtbW91QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBNb2hhbW1l
ZCBaYWhpZCA8bW9oYW1tZWQuemFoaWRAY2l0cml4LmNvbT4KCmRpZmYgLS1n
aXQgYS9vY2FtbC9zZGstZ2VuL2NzaGFycC9hdXRvZ2VuL3NyYy9IVFRQLmNz
IGIvb2NhbWwvc2RrLWdlbi9jc2hhcnAvYXV0b2dlbi9zcmMvSFRUUC5jcwpp
bmRleCBjOWIwN2ViYTkuLjQxNjA5MTAxYSAxMDA2NDQKLS0tIGEvb2NhbWwv
c2RrLWdlbi9jc2hhcnAvYXV0b2dlbi9zcmMvSFRUUC5jcworKysgYi9vY2Ft
bC9zZGstZ2VuL2NzaGFycC9hdXRvZ2VuL3NyYy9IVFRQLmNzCkBAIC0yMDMs
NyArMjAzLDcgQEAgbmFtZXNwYWNlIFhlbkFQSQogICAgICAgICAvLy8gUmVh
ZCBIVFRQIGhlYWRlcnMsIGRvaW5nIGFueSByZWRpcmVjdHMgYXMgbmVjZXNz
YXJ5DQogICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAgLy8vIDxy
ZXR1cm5zPlRydWUgaWYgYSByZWRpcmVjdCBoYXMgb2NjdXJyZWQgLSBoZWFk
ZXJzIHdpbGwgbmVlZCB0byBiZSByZXNlbnQuPC9yZXR1cm5zPg0KLSAgICAg
ICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBSZWFkSHR0cEhlYWRlcnMocmVmIFN0
cmVhbSBzdHJlYW0sIElXZWJQcm94eSBwcm94eSwgYm9vbCBub2RlbGF5LCBp
bnQgdGltZW91dF9tcywgTGlzdDxzdHJpbmc+IGhlYWRlcnMgPSBudWxsKQ0K
KyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBSZWFkSHR0cEhlYWRlcnMo
cmVmIFN0cmVhbSBzdHJlYW0sIElXZWJQcm94eSBwcm94eSwgUmVtb3RlQ2Vy
dGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGJvb2wgbm9k
ZWxheSwgaW50IHRpbWVvdXRNcywgTGlzdDxzdHJpbmc+IGhlYWRlcnMgPSBu
dWxsKQ0KICAgICAgICAgew0KICAgICAgICAgICAgIC8vIHJlYWQgaGVhZGVy
cy9maWVsZHMNCiAgICAgICAgICAgICBzdHJpbmcgbGluZSA9IFJlYWRMaW5l
KHN0cmVhbSk7DQpAQCAtMjc3LDcgKzI3Nyw3IEBAIG5hbWVzcGFjZSBYZW5B
UEkKICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHVybCA9IGhlYWRlciA9
PSBudWxsID8gIiIgOiBoZWFkZXIuU3Vic3RyaW5nKDkpLlRyaW0oKTsNCiAg
ICAgICAgICAgICAgICAgICAgIFVyaSByZWRpcmVjdCA9IG5ldyBVcmkodXJs
KTsNCiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5DbG9zZSgpOw0KLSAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtID0gQ29ubmVjdFN0cmVhbShyZWRp
cmVjdCwgcHJveHksIG5vZGVsYXksIHRpbWVvdXRfbXMpOw0KKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtID0gQ29ubmVjdFN0cmVhbShyZWRpcmVjdCwg
cHJveHksIGNhbGxiYWNrLCBub2RlbGF5LCB0aW1lb3V0TXMpOw0KICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIGhlYWRlcnMgbmVlZCB0
byBiZSBzZW50IGFnYWluDQogDQogICAgICAgICAgICAgICAgIGRlZmF1bHQ6
DQpAQCAtMzA5LDIwICszMDksNiBAQCBuYW1lc3BhY2UgWGVuQVBJCiAgICAg
ICAgICAgICByZXR1cm4gYml0cy5MZW5ndGggPCAyID8gMCA6IEludDMyLlBh
cnNlKGJpdHNbMV0pOw0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgcHVibGlj
IHN0YXRpYyBib29sIFVzZVNTTChVcmkgdXJpKQ0KLSAgICAgICAgew0KLSAg
ICAgICAgICAgIHJldHVybiB1cmkuU2NoZW1lID09ICJodHRwcyIgfHwgdXJp
LlBvcnQgPT0gREVGQVVMVF9IVFRQU19QT1JUOw0KLSAgICAgICAgfQ0KLQ0K
LSAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBWYWxpZGF0ZVNlcnZlckNl
cnRpZmljYXRlKA0KLSAgICAgICAgICAgICAgb2JqZWN0IHNlbmRlciwNCi0g
ICAgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0aWZpY2F0ZSwNCi0g
ICAgICAgICAgICAgIFg1MDlDaGFpbiBjaGFpbiwNCi0gICAgICAgICAgICAg
IFNzbFBvbGljeUVycm9ycyBzc2xQb2xpY3lFcnJvcnMpDQotICAgICAgICB7
DQotICAgICAgICAgICAgcmV0dXJuIHRydWU7DQotICAgICAgICB9DQotDQog
ICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgICAvLy8gUmV0dXJucyBh
IHNlY3VyZSBNRDUgaGFzaCBvZiB0aGUgZ2l2ZW4gaW5wdXQgc3RyaW5nLg0K
ICAgICAgICAgLy8vIDwvc3VtbWFyeT4NCkBAIC00NzUsNDUgKzQ2MSwyNCBA
QCBuYW1lc3BhY2UgWGVuQVBJCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+DQog
ICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVyaSI+PC9wYXJhbT4NCiAgICAg
ICAgIC8vLyA8cGFyYW0gbmFtZT0icHJveHkiPjwvcGFyYW0+DQorICAgICAg
ICAvLy8gPHBhcmFtIG5hbWU9ImNhbGxiYWNrIj48L3BhcmFtPg0KICAgICAg
ICAgLy8vIDxwYXJhbSBuYW1lPSJub2RlbGF5Ij48L3BhcmFtPg0KICAgICAg
ICAgLy8vIDxwYXJhbSBuYW1lPSJ0aW1lb3V0TXMiPlRpbWVvdXQsIGluIG1z
LiAwIGZvciBubyB0aW1lb3V0LjwvcGFyYW0+DQotICAgICAgICBwdWJsaWMg
c3RhdGljIFN0cmVhbSBDb25uZWN0U3RyZWFtKFVyaSB1cmksIElXZWJQcm94
eSBwcm94eSwgYm9vbCBub2RlbGF5LCBpbnQgdGltZW91dE1zKQ0KKyAgICAg
ICAgcHJpdmF0ZSBzdGF0aWMgU3RyZWFtIENvbm5lY3RTdHJlYW0oVXJpIHVy
aSwgSVdlYlByb3h5IHByb3h5LCBSZW1vdGVDZXJ0aWZpY2F0ZVZhbGlkYXRp
b25DYWxsYmFjayBjYWxsYmFjaywgYm9vbCBub2RlbGF5LCBpbnQgdGltZW91
dE1zKQ0KICAgICAgICAgew0KICAgICAgICAgICAgIGlmIChwcm94eSBpcyBJ
TW9ja1dlYlByb3h5IG1vY2tQcm94eSkNCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG1vY2tQcm94eS5HZXRTdHJlYW0odXJpKTsNCiANCi0gICAgICAgICAg
ICBTdHJlYW0gc3RyZWFtOw0KLSAgICAgICAgICAgIGJvb2wgdXNlUHJveHkg
PSBwcm94eSAhPSBudWxsICYmICFwcm94eS5Jc0J5cGFzc2VkKHVyaSk7DQot
DQotICAgICAgICAgICAgaWYgKHVzZVByb3h5KQ0KLSAgICAgICAgICAgIHsN
Ci0gICAgICAgICAgICAgICAgVXJpIHByb3h5VVJJID0gcHJveHkuR2V0UHJv
eHkodXJpKTsNCi0gICAgICAgICAgICAgICAgc3RyZWFtID0gQ29ubmVjdFNv
Y2tldChwcm94eVVSSSwgbm9kZWxheSwgdGltZW91dE1zKTsNCi0gICAgICAg
ICAgICB9DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIHsNCi0g
ICAgICAgICAgICAgICAgc3RyZWFtID0gQ29ubmVjdFNvY2tldCh1cmksIG5v
ZGVsYXksIHRpbWVvdXRNcyk7DQotICAgICAgICAgICAgfQ0KKyAgICAgICAg
ICAgIFN0cmVhbSBzdHJlYW0gPSBudWxsOw0KIA0KICAgICAgICAgICAgIHRy
eQ0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgaWYgKHVzZVBy
b3h5KQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAg
ICBzdHJpbmcgbGluZSA9ICQiQ09OTkVDVCB7dXJpLkhvc3R9Ont1cmkuUG9y
dH0gSFRUUC8xLjAiOw0KLSAgICAgICAgICAgICAgICAgICAgV3JpdGVMaW5l
KGxpbmUsIHN0cmVhbSk7DQotICAgICAgICAgICAgICAgICAgICBXcml0ZUxp
bmUoc3RyZWFtKTsNCisgICAgICAgICAgICAgICAgc3RyZWFtID0gQXV0aGVu
dGljYXRlUHJveHkodXJpLCBwcm94eSwgY2FsbGJhY2ssIG5vZGVsYXksIHRp
bWVvdXRNcyk7DQogDQotICAgICAgICAgICAgICAgICAgICBMaXN0PHN0cmlu
Zz4gaW5pdGlhbFJlc3BvbnNlID0gbmV3IExpc3Q8c3RyaW5nPigpOw0KLSAg
ICAgICAgICAgICAgICAgICAgUmVhZEh0dHBIZWFkZXJzKHJlZiBzdHJlYW0s
IHByb3h5LCBub2RlbGF5LCB0aW1lb3V0TXMsIGluaXRpYWxSZXNwb25zZSk7
DQotDQotICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGVQcm94eShy
ZWYgc3RyZWFtLCB1cmksIHByb3h5LCBub2RlbGF5LCB0aW1lb3V0TXMsIGlu
aXRpYWxSZXNwb25zZSwgbGluZSk7DQotICAgICAgICAgICAgICAgIH0NCi0N
Ci0gICAgICAgICAgICAgICAgaWYgKFVzZVNTTCh1cmkpKQ0KKyAgICAgICAg
ICAgICAgICBpZiAodXJpLlNjaGVtZSA9PSAiaHR0cHMiIHx8IHVyaS5Qb3J0
ID09IERFRkFVTFRfSFRUUFNfUE9SVCkNCiAgICAgICAgICAgICAgICAgew0K
LSAgICAgICAgICAgICAgICAgICAgU3NsU3RyZWFtIHNzbFN0cmVhbSA9IG5l
dyBTc2xTdHJlYW0oc3RyZWFtLCBmYWxzZSwgVmFsaWRhdGVTZXJ2ZXJDZXJ0
aWZpY2F0ZSwgbnVsbCk7DQorICAgICAgICAgICAgICAgICAgICBTc2xTdHJl
YW0gc3NsU3RyZWFtID0gbmV3IFNzbFN0cmVhbShzdHJlYW0sIGZhbHNlLCBj
YWxsYmFjaywgbnVsbCk7DQogICAgICAgICAgICAgICAgICAgICBzc2xTdHJl
YW0uQXV0aGVudGljYXRlQXNDbGllbnQoIiIsIG51bGwsIFNzbFByb3RvY29s
cy5UbHMxMiwgdHJ1ZSk7DQotDQogICAgICAgICAgICAgICAgICAgICBzdHJl
YW0gPSBzc2xTdHJlYW07DQogICAgICAgICAgICAgICAgIH0NCiANCkBAIC01
MjEsMjUgKzQ4NiwzNyBAQCBuYW1lc3BhY2UgWGVuQVBJCiAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgY2F0Y2gNCiAgICAgICAgICAgICB7DQotICAg
ICAgICAgICAgICAgIHN0cmVhbS5DbG9zZSgpOw0KKyAgICAgICAgICAgICAg
ICBzdHJlYW0/LkNsb3NlKCk7DQogICAgICAgICAgICAgICAgIHRocm93Ow0K
ICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCi0gICAgICAgIHByaXZh
dGUgc3RhdGljIHZvaWQgQXV0aGVudGljYXRlUHJveHkocmVmIFN0cmVhbSBz
dHJlYW0sIFVyaSB1cmksIElXZWJQcm94eSBwcm94eSwgYm9vbCBub2RlbGF5
LCBpbnQgdGltZW91dE1zLCBMaXN0PHN0cmluZz4gaW5pdGlhbFJlc3BvbnNl
LCBzdHJpbmcgaGVhZGVyKQ0KKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU3Ry
ZWFtIEF1dGhlbnRpY2F0ZVByb3h5KFVyaSB1cmksIElXZWJQcm94eSBwcm94
eSwgUmVtb3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJh
Y2ssIGJvb2wgbm9kZWxheSwgaW50IHRpbWVvdXRNcykNCiAgICAgICAgIHsN
CisgICAgICAgICAgICBpZiAocHJveHkgPT0gbnVsbCB8fCBwcm94eS5Jc0J5
cGFzc2VkKHVyaSkpDQorICAgICAgICAgICAgICAgIHJldHVybiBDb25uZWN0
U29ja2V0KHVyaSwgbm9kZWxheSwgdGltZW91dE1zKTsNCisNCisgICAgICAg
ICAgICBVcmkgcHJveHlVcmkgPSBwcm94eS5HZXRQcm94eSh1cmkpOw0KKyAg
ICAgICAgICAgIFN0cmVhbSBzdHJlYW0gPSBDb25uZWN0U29ja2V0KHByb3h5
VXJpLCBub2RlbGF5LCB0aW1lb3V0TXMpOw0KKw0KKyAgICAgICAgICAgIHN0
cmluZyBoZWFkZXIgPSAkIkNPTk5FQ1Qge3VyaS5Ib3N0fTp7dXJpLlBvcnR9
IEhUVFAvMS4wIjsNCisgICAgICAgICAgICBXcml0ZUxpbmUoaGVhZGVyLCBz
dHJlYW0pOw0KKyAgICAgICAgICAgIFdyaXRlTGluZShzdHJlYW0pOw0KKw0K
KyAgICAgICAgICAgIHZhciBpbml0aWFsUmVzcG9uc2UgPSBuZXcgTGlzdDxz
dHJpbmc+KCk7DQorICAgICAgICAgICAgUmVhZEh0dHBIZWFkZXJzKHJlZiBz
dHJlYW0sIHByb3h5LCBjYWxsYmFjaywgbm9kZWxheSwgdGltZW91dE1zLCBp
bml0aWFsUmVzcG9uc2UpOw0KKw0KICAgICAgICAgICAgIC8vIHBlcmZvcm0g
YXV0aGVudGljYXRpb24gb25seSBpZiBwcm94eSByZXF1aXJlcyBpdA0KICAg
ICAgICAgICAgIExpc3Q8c3RyaW5nPiBmaWVsZHMgPSBpbml0aWFsUmVzcG9u
c2UuRmluZEFsbChzdHIgPT4gc3RyLlN0YXJ0c1dpdGgoIlByb3h5LUF1dGhl
bnRpY2F0ZToiLCBTdHJpbmdDb21wYXJpc29uLkludmFyaWFudEN1bHR1cmVJ
Z25vcmVDYXNlKSk7DQogICAgICAgICAgICAgaWYgKGZpZWxkcy5Db3VudCA8
PSAwKQ0KLSAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdHJlYW07DQogDQogICAgICAgICAgICAgLy8gY2xlYW4g
dXAgKGlmIGluaXRpYWwgc2VydmVyIHJlc3BvbnNlIHNwZWNpZmllcyAiUHJv
eHktQ29ubmVjdGlvbjogQ2xvc2UiIHRoZW4gc3RyZWFtIGNhbm5vdCBiZSBy
ZS11c2VkKQ0KICAgICAgICAgICAgIHN0cmluZyBmaWVsZCA9IGluaXRpYWxS
ZXNwb25zZS5GaW5kKHN0ciA9PiBzdHIuU3RhcnRzV2l0aCgiUHJveHktQ29u
bmVjdGlvbjogQ2xvc2UiLCBTdHJpbmdDb21wYXJpc29uLkludmFyaWFudEN1
bHR1cmVJZ25vcmVDYXNlKSk7DQogICAgICAgICAgICAgaWYgKCFzdHJpbmcu
SXNOdWxsT3JFbXB0eShmaWVsZCkpDQogICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICBzdHJlYW0uQ2xvc2UoKTsNCi0gICAgICAgICAgICAgICAg
VXJpIHByb3h5VVJJID0gcHJveHkuR2V0UHJveHkodXJpKTsNCi0gICAgICAg
ICAgICAgICAgc3RyZWFtID0gQ29ubmVjdFNvY2tldChwcm94eVVSSSwgbm9k
ZWxheSwgdGltZW91dE1zKTsNCisgICAgICAgICAgICAgICAgc3RyZWFtID0g
Q29ubmVjdFNvY2tldChwcm94eVVyaSwgbm9kZWxheSwgdGltZW91dE1zKTsN
CiAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgaWYgKHByb3h5LkNy
ZWRlbnRpYWxzID09IG51bGwpDQpAQCAtNjc1LDcgKzY1Miw4IEBAIG5hbWVz
cGFjZSBYZW5BUEkKIA0KICAgICAgICAgICAgIC8vIGhhbmRsZSBhdXRoZW50
aWNhdGlvbiBhdHRlbXB0IHJlc3BvbnNlDQogICAgICAgICAgICAgTGlzdDxz
dHJpbmc+IGF1dGhlbnRpY2F0ZWRSZXNwb25zZSA9IG5ldyBMaXN0PHN0cmlu
Zz4oKTsNCi0gICAgICAgICAgICBSZWFkSHR0cEhlYWRlcnMocmVmIHN0cmVh
bSwgcHJveHksIG5vZGVsYXksIHRpbWVvdXRNcywgYXV0aGVudGljYXRlZFJl
c3BvbnNlKTsNCisgICAgICAgICAgICBSZWFkSHR0cEhlYWRlcnMocmVmIHN0
cmVhbSwgcHJveHksIGNhbGxiYWNrLCBub2RlbGF5LCB0aW1lb3V0TXMsIGF1
dGhlbnRpY2F0ZWRSZXNwb25zZSk7DQorDQogICAgICAgICAgICAgaWYgKGF1
dGhlbnRpY2F0ZWRSZXNwb25zZS5Db3VudCA9PSAwKQ0KICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgQmFkU2VydmVyUmVzcG9uc2VFeGNlcHRpb24oIk5v
IHJlc3BvbnNlIGZyb20gdGhlIHByb3h5IHNlcnZlciBhZnRlciBhdXRoZW50
aWNhdGlvbiBhdHRlbXB0LiIpOw0KIA0KQEAgLTY4OCwxMSArNjY2LDEzIEBA
IG5hbWVzcGFjZSBYZW5BUEkKICAgICAgICAgICAgICAgICBkZWZhdWx0Og0K
ICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJhZFNlcnZlclJlc3Bv
bnNlRXhjZXB0aW9uKCQiUmVjZWl2ZWQgZXJyb3IgY29kZSB7YXV0aGVudGlj
YXRlZFJlc3BvbnNlWzBdfSBmcm9tIHRoZSBzZXJ2ZXIiKTsNCiAgICAgICAg
ICAgICB9DQorDQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbTsNCiAgICAg
ICAgIH0NCiANCi0gICAgICAgIHByaXZhdGUgc3RhdGljIFN0cmVhbSBEb0h0
dHAoVXJpIHVyaSwgSVdlYlByb3h5IHByb3h5LCBib29sIG5vRGVsYXksIGlu
dCB0aW1lb3V0TXMsIHBhcmFtcyBzdHJpbmdbXSBoZWFkZXJzKQ0KKyAgICAg
ICAgcHJpdmF0ZSBzdGF0aWMgU3RyZWFtIERvSHR0cChVcmkgdXJpLCBJV2Vi
UHJveHkgcHJveHksIFJlbW90ZUNlcnRpZmljYXRlVmFsaWRhdGlvbkNhbGxi
YWNrIGNhbGxiYWNrLCBib29sIG5vRGVsYXksIGludCB0aW1lb3V0TXMsIHBh
cmFtcyBzdHJpbmdbXSBoZWFkZXJzKQ0KICAgICAgICAgew0KLSAgICAgICAg
ICAgIFN0cmVhbSBzdHJlYW0gPSBDb25uZWN0U3RyZWFtKHVyaSwgcHJveHks
IG5vRGVsYXksIHRpbWVvdXRNcyk7DQorICAgICAgICAgICAgU3RyZWFtIHN0
cmVhbSA9IENvbm5lY3RTdHJlYW0odXJpLCBwcm94eSwgY2FsbGJhY2ssIG5v
RGVsYXksIHRpbWVvdXRNcyk7DQogDQogICAgICAgICAgICAgaW50IHJlZGly
ZWN0cyA9IDA7DQogDQpAQCAtNzA5LDcgKzY4OSw3IEBAIG5hbWVzcGFjZSBY
ZW5BUEkKIA0KICAgICAgICAgICAgICAgICBzdHJlYW0uRmx1c2goKTsNCiAg
ICAgICAgICAgICB9DQotICAgICAgICAgICAgd2hpbGUgKFJlYWRIdHRwSGVh
ZGVycyhyZWYgc3RyZWFtLCBwcm94eSwgbm9EZWxheSwgdGltZW91dE1zKSk7
DQorICAgICAgICAgICAgd2hpbGUgKFJlYWRIdHRwSGVhZGVycyhyZWYgc3Ry
ZWFtLCBwcm94eSwgY2FsbGJhY2ssIG5vRGVsYXksIHRpbWVvdXRNcykpOw0K
IA0KICAgICAgICAgICAgIHJldHVybiBzdHJlYW07DQogICAgICAgICB9DQpA
QCAtNzE3LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBYZW5BUEkKICAgICAgICAg
Ly8vIDxzdW1tYXJ5Pg0KICAgICAgICAgLy8vIEFkZHMgSFRUUCBDT05ORUNU
IGhlYWRlcnMgcmV0dXJuaW5nIHRoZSBzdHJlYW0gcmVhZHkgZm9yIHVzZQ0K
ICAgICAgICAgLy8vIDwvc3VtbWFyeT4NCi0gICAgICAgIHB1YmxpYyBzdGF0
aWMgU3RyZWFtIEh0dHBDb25uZWN0U3RyZWFtKFVyaSB1cmksIElXZWJQcm94
eSBwcm94eSwgc3RyaW5nIHNlc3Npb24sIGludCB0aW1lb3V0TXMsIERpY3Rp
b25hcnk8c3RyaW5nLCBzdHJpbmc+IGFkZGl0aW9uYWxIZWFkZXJzID0gbnVs
bCkNCisgICAgICAgIHB1YmxpYyBzdGF0aWMgU3RyZWFtIEh0dHBDb25uZWN0
U3RyZWFtKFVyaSB1cmksIElXZWJQcm94eSBwcm94eSwgUmVtb3RlQ2VydGlm
aWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHN0cmluZyBzZXNz
aW9uLCBpbnQgdGltZW91dE1zLCBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5n
PiBhZGRpdGlvbmFsSGVhZGVycyA9IG51bGwpDQogICAgICAgICB7DQogICAg
ICAgICAgICAgdmFyIGFsbEhlYWRlcnMgPSBuZXcgTGlzdDxzdHJpbmc+DQog
ICAgICAgICAgICAgew0KQEAgLTczMiwxMyArNzEyLDEzIEBAIG5hbWVzcGFj
ZSBYZW5BUEkKICAgICAgICAgICAgICAgICAgICAgYWxsSGVhZGVycy5BZGQo
JCJ7a3ZwLktleX06IHtrdnAuVmFsdWV9Iik7DQogICAgICAgICAgICAgfQ0K
IA0KLSAgICAgICAgICAgIHJldHVybiBEb0h0dHAodXJpLCBwcm94eSwgdHJ1
ZSwgdGltZW91dE1zLCBhbGxIZWFkZXJzLlRvQXJyYXkoKSk7DQorICAgICAg
ICAgICAgcmV0dXJuIERvSHR0cCh1cmksIHByb3h5LCBjYWxsYmFjaywgdHJ1
ZSwgdGltZW91dE1zLCBhbGxIZWFkZXJzLlRvQXJyYXkoKSk7DQogICAgICAg
ICB9DQogDQogICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgICAvLy8g
QWRkcyBIVFRQIFBVVCBoZWFkZXJzIHJldHVybmluZyB0aGUgc3RyZWFtIHJl
YWR5IGZvciB1c2UNCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+DQotICAgICAg
ICBwdWJsaWMgc3RhdGljIFN0cmVhbSBIdHRwUHV0U3RyZWFtKFVyaSB1cmks
IElXZWJQcm94eSBwcm94eSwgbG9uZyBjb250ZW50TGVuZ3RoLCBpbnQgdGlt
ZW91dE1zLCBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBhZGRpdGlvbmFs
SGVhZGVycyA9IG51bGwpDQorICAgICAgICBwdWJsaWMgc3RhdGljIFN0cmVh
bSBIdHRwUHV0U3RyZWFtKFVyaSB1cmksIElXZWJQcm94eSBwcm94eSwgUmVt
b3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGxv
bmcgY29udGVudExlbmd0aCwgaW50IHRpbWVvdXRNcywgRGljdGlvbmFyeTxz
dHJpbmcsIHN0cmluZz4gYWRkaXRpb25hbEhlYWRlcnMgPSBudWxsKQ0KICAg
ICAgICAgew0KICAgICAgICAgICAgIHZhciBhbGxIZWFkZXJzID0gbmV3IExp
c3Q8c3RyaW5nPg0KICAgICAgICAgICAgIHsNCkBAIC03NTMsMTMgKzczMywx
MyBAQCBuYW1lc3BhY2UgWGVuQVBJCiAgICAgICAgICAgICAgICAgICAgIGFs
bEhlYWRlcnMuQWRkKCQie2t2cC5LZXl9OiB7a3ZwLlZhbHVlfSIpOw0KICAg
ICAgICAgICAgIH0NCiANCi0gICAgICAgICAgICByZXR1cm4gRG9IdHRwKHVy
aSwgcHJveHksIGZhbHNlLCB0aW1lb3V0TXMsIGFsbEhlYWRlcnMuVG9BcnJh
eSgpKTsNCisgICAgICAgICAgICByZXR1cm4gRG9IdHRwKHVyaSwgcHJveHks
IGNhbGxiYWNrLCBmYWxzZSwgdGltZW91dE1zLCBhbGxIZWFkZXJzLlRvQXJy
YXkoKSk7DQogICAgICAgICB9DQogDQogICAgICAgICAvLy8gPHN1bW1hcnk+
DQogICAgICAgICAvLy8gQWRkcyBIVFRQIEdFVCBoZWFkZXJzIHJldHVybmlu
ZyB0aGUgc3RyZWFtIHJlYWR5IGZvciB1c2UNCiAgICAgICAgIC8vLyA8L3N1
bW1hcnk+DQotICAgICAgICBwdWJsaWMgc3RhdGljIFN0cmVhbSBIdHRwR2V0
U3RyZWFtKFVyaSB1cmksIElXZWJQcm94eSBwcm94eSwgaW50IHRpbWVvdXRN
cywgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gYWRkaXRpb25hbEhlYWRl
cnMgPSBudWxsKQ0KKyAgICAgICAgcHVibGljIHN0YXRpYyBTdHJlYW0gSHR0
cEdldFN0cmVhbShVcmkgdXJpLCBJV2ViUHJveHkgcHJveHksIFJlbW90ZUNl
cnRpZmljYXRlVmFsaWRhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBpbnQgdGlt
ZW91dE1zLCBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBhZGRpdGlvbmFs
SGVhZGVycyA9IG51bGwpDQogICAgICAgICB7DQogICAgICAgICAgICAgdmFy
IGFsbEhlYWRlcnMgPSBuZXcgTGlzdDxzdHJpbmc+DQogICAgICAgICAgICAg
ew0KQEAgLTc3Myw3ICs3NTMsNyBAQCBuYW1lc3BhY2UgWGVuQVBJCiAgICAg
ICAgICAgICAgICAgICAgIGFsbEhlYWRlcnMuQWRkKCQie2t2cC5LZXl9OiB7
a3ZwLlZhbHVlfSIpOw0KICAgICAgICAgICAgIH0NCiANCi0gICAgICAgICAg
ICByZXR1cm4gRG9IdHRwKHVyaSwgcHJveHksIGZhbHNlLCB0aW1lb3V0TXMs
IGFsbEhlYWRlcnMuVG9BcnJheSgpKTsNCisgICAgICAgICAgICByZXR1cm4g
RG9IdHRwKHVyaSwgcHJveHksIGNhbGxiYWNrLCBmYWxzZSwgdGltZW91dE1z
LCBhbGxIZWFkZXJzLlRvQXJyYXkoKSk7DQogICAgICAgICB9DQogDQogICAg
ICAgICAvLy8gPHN1bW1hcnk+DQpAQCAtNzgzLDEzICs3NjMsMTQgQEAgbmFt
ZXNwYWNlIFhlbkFQSQogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNhbmNl
bGxpbmdEZWxlZ2F0ZSI+RGVsZWdhdGUgY2FsbGVkIHBlcmlvZGljYWxseSB0
byBzZWUgaWYgbmVlZCB0byBjYW5jZWw8L3BhcmFtPg0KICAgICAgICAgLy8v
IDxwYXJhbSBuYW1lPSJ1cmkiPlVSSSB0byBQVVQgdG88L3BhcmFtPg0KICAg
ICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm94eSI+QSBwcm94eSB0byBoYW5k
bGUgdGhlIEhUVFAgY29ubmVjdGlvbjwvcGFyYW0+DQorICAgICAgICAvLy8g
PHBhcmFtIG5hbWU9ImNhbGxiYWNrIj48L3BhcmFtPg0KICAgICAgICAgLy8v
IDxwYXJhbSBuYW1lPSJwYXRoIj5QYXRoIHRvIGZpbGUgdG8gcHV0PC9wYXJh
bT4NCiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGltZW91dE1zIj5UaW1l
b3V0IGZvciB0aGUgY29ubmVjdGlvbiBpbiBtcy4gMCBmb3Igbm8gdGltZW91
dC48L3BhcmFtPg0KICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFB1dChV
cGRhdGVQcm9ncmVzc0RlbGVnYXRlIHByb2dyZXNzRGVsZWdhdGUsIEZ1bmNC
b29sIGNhbmNlbGxpbmdEZWxlZ2F0ZSwNCi0gICAgICAgICAgICBVcmkgdXJp
LCBJV2ViUHJveHkgcHJveHksIHN0cmluZyBwYXRoLCBpbnQgdGltZW91dE1z
KQ0KKyAgICAgICAgICAgIFVyaSB1cmksIElXZWJQcm94eSBwcm94eSwgUmVt
b3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHN0
cmluZyBwYXRoLCBpbnQgdGltZW91dE1zKQ0KICAgICAgICAgew0KICAgICAg
ICAgICAgIHVzaW5nIChTdHJlYW0gZmlsZVN0cmVhbSA9IG5ldyBGaWxlU3Ry
ZWFtKHBhdGgsIEZpbGVNb2RlLk9wZW4sIEZpbGVBY2Nlc3MuUmVhZCksDQot
ICAgICAgICAgICAgICAgIHJlcXVlc3RTdHJlYW0gPSBIdHRwUHV0U3RyZWFt
KHVyaSwgcHJveHksIGZpbGVTdHJlYW0uTGVuZ3RoLCB0aW1lb3V0TXMpKQ0K
KyAgICAgICAgICAgICAgICByZXF1ZXN0U3RyZWFtID0gSHR0cFB1dFN0cmVh
bSh1cmksIHByb3h5LCBjYWxsYmFjaywgZmlsZVN0cmVhbS5MZW5ndGgsIHRp
bWVvdXRNcykpDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICBs
b25nIGxlbiA9IGZpbGVTdHJlYW0uTGVuZ3RoOw0KICAgICAgICAgICAgICAg
ICBEYXRhQ29waWVkRGVsZWdhdGUgZGF0YUNvcGllZERlbGVnYXRlID0gZGVs
ZWdhdGUobG9uZyBieXRlcykNCkBAIC04MDksMTAgKzc5MCwxMSBAQCBuYW1l
c3BhY2UgWGVuQVBJCiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY2FuY2Vs
bGluZ0RlbGVnYXRlIj5EZWxlZ2F0ZSBjYWxsZWQgcGVyaW9kaWNhbGx5IHRv
IHNlZSBpZiBuZWVkIHRvIGNhbmNlbDwvcGFyYW0+DQogICAgICAgICAvLy8g
PHBhcmFtIG5hbWU9InVyaSI+VVJJIHRvIEdFVCBmcm9tPC9wYXJhbT4NCiAg
ICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJveHkiPkEgcHJveHkgdG8gaGFu
ZGxlIHRoZSBIVFRQIGNvbm5lY3Rpb248L3BhcmFtPg0KKyAgICAgICAgLy8v
IDxwYXJhbSBuYW1lPSJjYWxsYmFjayI+PC9wYXJhbT4NCiAgICAgICAgIC8v
LyA8cGFyYW0gbmFtZT0icGF0aCI+UGF0aCB0byBmaWxlIHRvIHJlY2VpdmUg
dGhlIGRhdGE8L3BhcmFtPg0KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0
aW1lb3V0TXMiPlRpbWVvdXQgZm9yIHRoZSBjb25uZWN0aW9uIGluIG1zLiAw
IGZvciBubyB0aW1lb3V0LjwvcGFyYW0+DQogICAgICAgICBwdWJsaWMgc3Rh
dGljIHZvaWQgR2V0KERhdGFDb3BpZWREZWxlZ2F0ZSBkYXRhQ29waWVkRGVs
ZWdhdGUsIEZ1bmNCb29sIGNhbmNlbGxpbmdEZWxlZ2F0ZSwNCi0gICAgICAg
ICAgICBVcmkgdXJpLCBJV2ViUHJveHkgcHJveHksIHN0cmluZyBwYXRoLCBp
bnQgdGltZW91dE1zKQ0KKyAgICAgICAgICAgIFVyaSB1cmksIElXZWJQcm94
eSBwcm94eSwgUmVtb3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sg
Y2FsbGJhY2ssIHN0cmluZyBwYXRoLCBpbnQgdGltZW91dE1zKQ0KICAgICAg
ICAgew0KICAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNw
YWNlKHBhdGgpKQ0KICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1l
bnRFeGNlcHRpb24obmFtZW9mKHBhdGgpKTsNCkBAIC04MzMsNyArODE1LDcg
QEAgbmFtZXNwYWNlIFhlbkFQSQogICAgICAgICAgICAgdHJ5DQogICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICB1c2luZyAoU3RyZWFtIGZpbGVT
dHJlYW0gPSBuZXcgRmlsZVN0cmVhbSh0bXBGaWxlLCBGaWxlTW9kZS5DcmVh
dGUsIEZpbGVBY2Nlc3MuV3JpdGUsIEZpbGVTaGFyZS5Ob25lKSwNCi0gICAg
ICAgICAgICAgICAgICAgICAgIGRvd25sb2FkU3RyZWFtID0gSHR0cEdldFN0
cmVhbSh1cmksIHByb3h5LCB0aW1lb3V0TXMpKQ0KKyAgICAgICAgICAgICAg
ICAgICAgICAgZG93bmxvYWRTdHJlYW0gPSBIdHRwR2V0U3RyZWFtKHVyaSwg
cHJveHksIGNhbGxiYWNrLCB0aW1lb3V0TXMpKQ0KICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICBDb3B5U3RyZWFtKGRvd25sb2Fk
U3RyZWFtLCBmaWxlU3RyZWFtLCBkYXRhQ29waWVkRGVsZWdhdGUsIGNhbmNl
bGxpbmdEZWxlZ2F0ZSk7DQogICAgICAgICAgICAgICAgICAgICBmaWxlU3Ry
ZWFtLkZsdXNoKCk7DQpkaWZmIC0tZ2l0IGEvb2NhbWwvc2RrLWdlbi9jc2hh
cnAvdGVtcGxhdGVzL0hUVFBfYWN0aW9ucy5tdXN0YWNoZSBiL29jYW1sL3Nk
ay1nZW4vY3NoYXJwL3RlbXBsYXRlcy9IVFRQX2FjdGlvbnMubXVzdGFjaGUK
aW5kZXggM2M3MDJjMmFmLi5mMTUzMWJiNjMgMTAwNjQ0Ci0tLSBhL29jYW1s
L3Nkay1nZW4vY3NoYXJwL3RlbXBsYXRlcy9IVFRQX2FjdGlvbnMubXVzdGFj
aGUKKysrIGIvb2NhbWwvc2RrLWdlbi9jc2hhcnAvdGVtcGxhdGVzL0hUVFBf
YWN0aW9ucy5tdXN0YWNoZQpAQCAtMjgsNDQgKzI4LDQ1IEBACiAgKi8KIAog
dXNpbmcgU3lzdGVtLk5ldDsKK3VzaW5nIFN5c3RlbS5OZXQuU2VjdXJpdHk7
CiAKIG5hbWVzcGFjZSBYZW5BUEkKIHsKICAgICBwdWJsaWMgcGFydGlhbCBj
bGFzcyBIVFRQX2FjdGlvbnMKICAgICB7CiAgICAgICAgIHByaXZhdGUgc3Rh
dGljIHZvaWQgR2V0KEhUVFAuRGF0YUNvcGllZERlbGVnYXRlIGRhdGFDb3Bp
ZWREZWxlZ2F0ZSwgSFRUUC5GdW5jQm9vbCBjYW5jZWxsaW5nRGVsZWdhdGUs
IGludCB0aW1lb3V0X21zLAotICAgICAgICAgICAgc3RyaW5nIGhvc3RuYW1l
LCBzdHJpbmcgcmVtb3RlUGF0aCwgSVdlYlByb3h5IHByb3h5LCBzdHJpbmcg
bG9jYWxQYXRoLCBwYXJhbXMgb2JqZWN0W10gYXJncykKKyAgICAgICAgICAg
IHN0cmluZyBob3N0bmFtZSwgc3RyaW5nIHJlbW90ZVBhdGgsIElXZWJQcm94
eSBwcm94eSwgUmVtb3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sg
Y2FsbGJhY2ssIHN0cmluZyBsb2NhbFBhdGgsIHBhcmFtcyBvYmplY3RbXSBh
cmdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBIVFRQLkdldChkYXRhQ29w
aWVkRGVsZWdhdGUsIGNhbmNlbGxpbmdEZWxlZ2F0ZSwgSFRUUC5CdWlsZFVy
aShob3N0bmFtZSwgcmVtb3RlUGF0aCwgYXJncyksIHByb3h5LCBsb2NhbFBh
dGgsIHRpbWVvdXRfbXMpOworICAgICAgICAgICAgSFRUUC5HZXQoZGF0YUNv
cGllZERlbGVnYXRlLCBjYW5jZWxsaW5nRGVsZWdhdGUsIEhUVFAuQnVpbGRV
cmkoaG9zdG5hbWUsIHJlbW90ZVBhdGgsIGFyZ3MpLCBwcm94eSwgY2FsbGJh
Y2ssIGxvY2FsUGF0aCwgdGltZW91dF9tcyk7CiAgICAgICAgIH0KIAogICAg
ICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFB1dChIVFRQLlVwZGF0ZVByb2dy
ZXNzRGVsZWdhdGUgcHJvZ3Jlc3NEZWxlZ2F0ZSwgSFRUUC5GdW5jQm9vbCBj
YW5jZWxsaW5nRGVsZWdhdGUsIGludCB0aW1lb3V0X21zLAotICAgICAgICAg
ICAgc3RyaW5nIGhvc3RuYW1lLCBzdHJpbmcgcmVtb3RlUGF0aCwgSVdlYlBy
b3h5IHByb3h5LCBzdHJpbmcgbG9jYWxQYXRoLCBwYXJhbXMgb2JqZWN0W10g
YXJncykKKyAgICAgICAgICAgIHN0cmluZyBob3N0bmFtZSwgc3RyaW5nIHJl
bW90ZVBhdGgsIElXZWJQcm94eSBwcm94eSwgUmVtb3RlQ2VydGlmaWNhdGVW
YWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHN0cmluZyBsb2NhbFBhdGgs
IHBhcmFtcyBvYmplY3RbXSBhcmdzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBIVFRQLlB1dChwcm9ncmVzc0RlbGVnYXRlLCBjYW5jZWxsaW5nRGVsZWdh
dGUsIEhUVFAuQnVpbGRVcmkoaG9zdG5hbWUsIHJlbW90ZVBhdGgsIGFyZ3Mp
LCBwcm94eSwgbG9jYWxQYXRoLCB0aW1lb3V0X21zKTsKKyAgICAgICAgICAg
IEhUVFAuUHV0KHByb2dyZXNzRGVsZWdhdGUsIGNhbmNlbGxpbmdEZWxlZ2F0
ZSwgSFRUUC5CdWlsZFVyaShob3N0bmFtZSwgcmVtb3RlUGF0aCwgYXJncyks
IHByb3h5LCBjYWxsYmFjaywgbG9jYWxQYXRoLCB0aW1lb3V0X21zKTsKICAg
ICAgICAgfQogCiB7eyNodHRwX2FjdGlvbnN9fQogICAgICAgICBwdWJsaWMg
c3RhdGljIHZvaWQge3tuYW1lfX0oSFRUUC57eyNpc1B1dH19VXBkYXRlUHJv
Z3Jlc3NEZWxlZ2F0ZSBwcm9ncmVzc0RlbGVnYXRle3svaXNQdXR9fXt7I2lz
R2V0fX1EYXRhQ29waWVkRGVsZWdhdGUgZGF0YUNvcGllZERlbGVnYXRle3sv
aXNHZXR9fSwgSFRUUC5GdW5jQm9vbCBjYW5jZWxsaW5nRGVsZWdhdGUsIGlu
dCB0aW1lb3V0X21zLAotICAgICAgICAgICAgc3RyaW5nIGhvc3RuYW1lLCBJ
V2ViUHJveHkgcHJveHksIHN0cmluZyBwYXRoLCBzdHJpbmcgdGFza19pZCA9
IG51bGwsIHN0cmluZyBzZXNzaW9uX2lkID0gbnVsbHt7I2FyZ3N9fSwge3t7
YXJnX2RlY2x9fX17ey9hcmdzfX0pCisgICAgICAgICAgICBzdHJpbmcgaG9z
dG5hbWUsIElXZWJQcm94eSBwcm94eSwgUmVtb3RlQ2VydGlmaWNhdGVWYWxp
ZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHN0cmluZyBwYXRoLCBzdHJpbmcg
dGFza19pZCA9IG51bGwsIHN0cmluZyBzZXNzaW9uX2lkID0gbnVsbHt7I2Fy
Z3N9fSwge3t7YXJnX2RlY2x9fX17ey9hcmdzfX0pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHt7I2lzUHV0fX1QdXR7ey9pc1B1dH19e3sjaXNHZXR9fUdl
dHt7L2lzR2V0fX0oe3sjaXNQdXR9fXByb2dyZXNzRGVsZWdhdGV7ey9pc1B1
dH19e3sjaXNHZXR9fWRhdGFDb3BpZWREZWxlZ2F0ZXt7L2lzR2V0fX0sIGNh
bmNlbGxpbmdEZWxlZ2F0ZSwgdGltZW91dF9tcywgaG9zdG5hbWUsICJ7e3Vy
aX19IiwgcHJveHksIHBhdGgsCisgICAgICAgICAgICB7eyNpc1B1dH19UHV0
e3svaXNQdXR9fXt7I2lzR2V0fX1HZXR7ey9pc0dldH19KHt7I2lzUHV0fX1w
cm9ncmVzc0RlbGVnYXRle3svaXNQdXR9fXt7I2lzR2V0fX1kYXRhQ29waWVk
RGVsZWdhdGV7ey9pc0dldH19LCBjYW5jZWxsaW5nRGVsZWdhdGUsIHRpbWVv
dXRfbXMsIGhvc3RuYW1lLCAie3t1cml9fSIsIHByb3h5LCBjYWxsYmFjaywg
cGF0aCwKICAgICAgICAgICAgICAgICAidGFza19pZCIsIHRhc2tfaWQsICJz
ZXNzaW9uX2lkIiwgc2Vzc2lvbl9pZHt7I2FyZ3N9fSwge3t7YXJnX3VzZX19
fXt7L2FyZ3N9fSk7CiAgICAgICAgIH0KIAoge3svaHR0cF9hY3Rpb25zfX0K
IAogICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZ2V0X3Bvb2xfcGF0Y2hf
ZG93bmxvYWQoSFRUUC5EYXRhQ29waWVkRGVsZWdhdGUgZGF0YUNvcGllZERl
bGVnYXRlLCBIVFRQLkZ1bmNCb29sIGNhbmNlbGxpbmdEZWxlZ2F0ZSwgaW50
IHRpbWVvdXRfbXMsCi0gICAgICAgICAgICBzdHJpbmcgaG9zdG5hbWUsIElX
ZWJQcm94eSBwcm94eSwgc3RyaW5nIHBhdGgsIHN0cmluZyB0YXNrX2lkLCBz
dHJpbmcgc2Vzc2lvbl9pZCwgc3RyaW5nIHV1aWQpCisgICAgICAgICAgICBz
dHJpbmcgaG9zdG5hbWUsIElXZWJQcm94eSBwcm94eSwgUmVtb3RlQ2VydGlm
aWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHN0cmluZyBwYXRo
LCBzdHJpbmcgdGFza19pZCwgc3RyaW5nIHNlc3Npb25faWQsIHN0cmluZyB1
dWlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBHZXQoZGF0YUNvcGllZERl
bGVnYXRlLCBjYW5jZWxsaW5nRGVsZWdhdGUsIHRpbWVvdXRfbXMsIGhvc3Ru
YW1lLCAiL3Bvb2xfcGF0Y2hfZG93bmxvYWQiLCBwcm94eSwgcGF0aCwKKyAg
ICAgICAgICAgIEdldChkYXRhQ29waWVkRGVsZWdhdGUsIGNhbmNlbGxpbmdE
ZWxlZ2F0ZSwgdGltZW91dF9tcywgaG9zdG5hbWUsICIvcG9vbF9wYXRjaF9k
b3dubG9hZCIsIHByb3h5LCBjYWxsYmFjaywgcGF0aCwKICAgICAgICAgICAg
ICAgICAidGFza19pZCIsIHRhc2tfaWQsICJzZXNzaW9uX2lkIiwgc2Vzc2lv
bl9pZCwgInV1aWQiLCB1dWlkKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1
YmxpYyBzdGF0aWMgdm9pZCBwdXRfb2VtX3BhdGNoX3N0cmVhbShIVFRQLlVw
ZGF0ZVByb2dyZXNzRGVsZWdhdGUgcHJvZ3Jlc3NEZWxlZ2F0ZSwgSFRUUC5G
dW5jQm9vbCBjYW5jZWxsaW5nRGVsZWdhdGUsIGludCB0aW1lb3V0X21zLAot
ICAgICAgICAgICAgc3RyaW5nIGhvc3RuYW1lLCBJV2ViUHJveHkgcHJveHks
IHN0cmluZyBwYXRoLCBzdHJpbmcgdGFza19pZCwgc3RyaW5nIHNlc3Npb25f
aWQpCisgICAgICAgICAgICBzdHJpbmcgaG9zdG5hbWUsIElXZWJQcm94eSBw
cm94eSwgUmVtb3RlQ2VydGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2ssIHN0cmluZyBwYXRoLCBzdHJpbmcgdGFza19pZCwgc3RyaW5nIHNl
c3Npb25faWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFB1dChwcm9ncmVz
c0RlbGVnYXRlLCBjYW5jZWxsaW5nRGVsZWdhdGUsIHRpbWVvdXRfbXMsIGhv
c3RuYW1lLCAiL29lbV9wYXRjaF9zdHJlYW0iLCBwcm94eSwgcGF0aCwKKyAg
ICAgICAgICAgIFB1dChwcm9ncmVzc0RlbGVnYXRlLCBjYW5jZWxsaW5nRGVs
ZWdhdGUsIHRpbWVvdXRfbXMsIGhvc3RuYW1lLCAiL29lbV9wYXRjaF9zdHJl
YW0iLCBwcm94eSwgY2FsbGJhY2ssIHBhdGgsCiAgICAgICAgICAgICAgICAg
InRhc2tfaWQiLCB0YXNrX2lkLCAic2Vzc2lvbl9pZCIsIHNlc3Npb25faWQp
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvb2NhbWwvc2RrLWdl
bi9wb3dlcnNoZWxsL2F1dG9nZW4vc3JjL0NvbW1vbkNtZGxldEZ1bmN0aW9u
cy5jcyBiL29jYW1sL3Nkay1nZW4vcG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9D
b21tb25DbWRsZXRGdW5jdGlvbnMuY3MKaW5kZXggOTQzYzkxYTc2Li41YzEw
NjU2YTAgMTAwNjQ0Ci0tLSBhL29jYW1sL3Nkay1nZW4vcG93ZXJzaGVsbC9h
dXRvZ2VuL3NyYy9Db21tb25DbWRsZXRGdW5jdGlvbnMuY3MKKysrIGIvb2Nh
bWwvc2RrLWdlbi9wb3dlcnNoZWxsL2F1dG9nZW4vc3JjL0NvbW1vbkNtZGxl
dEZ1bmN0aW9ucy5jcwpAQCAtMzAsNyArMzAsMTEgQEAKIHVzaW5nIFN5c3Rl
bTsNCiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7DQogdXNpbmcgU3lzdGVt
LkNvbGxlY3Rpb25zLkdlbmVyaWM7DQordXNpbmcgU3lzdGVtLklPOw0KIHVz
aW5nIFN5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb247DQordXNpbmcgU3lz
dGVtLlNlY3VyaXR5LkNyeXB0b2dyYXBoeTsNCit1c2luZyBTeXN0ZW0uU2Vj
dXJpdHkuQ3J5cHRvZ3JhcGh5Llg1MDlDZXJ0aWZpY2F0ZXM7DQordXNpbmcg
U3lzdGVtLlhtbDsNCiB1c2luZyBYZW5BUEk7DQogDQogbmFtZXNwYWNlIENp
dHJpeC5YZW5TZXJ2ZXINCkBAIC0zOSw2ICs0Myw3IEBAIG5hbWVzcGFjZSBD
aXRyaXguWGVuU2VydmVyCiAgICAgew0KICAgICAgICAgcHJpdmF0ZSBjb25z
dCBzdHJpbmcgU2Vzc2lvbnNWYXJpYWJsZSA9ICJnbG9iYWw6Q2l0cml4Llhl
blNlcnZlci5TZXNzaW9ucyI7DQogICAgICAgICBwcml2YXRlIGNvbnN0IHN0
cmluZyBEZWZhdWx0U2Vzc2lvblZhcmlhYmxlID0gImdsb2JhbDpYZW5TZXJ2
ZXJfRGVmYXVsdF9TZXNzaW9uIjsNCisgICAgICAgIHByaXZhdGUgY29uc3Qg
c3RyaW5nIENlcnRpZmljYXRlc1BhdGhWYXJpYWJsZSA9ICJnbG9iYWw6S25v
d25TZXJ2ZXJDZXJ0aWZpY2F0ZXNGaWxlUGF0aCI7DQogDQogICAgICAgICBp
bnRlcm5hbCBzdGF0aWMgRGljdGlvbmFyeTxzdHJpbmcsIFNlc3Npb24+IEdl
dEFsbFNlc3Npb25zKFBTQ21kbGV0IGNtZGxldCkNCiAgICAgICAgIHsNCkBA
IC0xMzcsNSArMTQyLDEyNSBAQCBuYW1lc3BhY2UgQ2l0cml4LlhlblNlcnZl
cgogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQogICAgICAg
ICB9DQorDQorICAgICAgICBpbnRlcm5hbCBzdGF0aWMgYm9vbCBWZXJpZnlJ
bkFsbFN0b3JlcyhYNTA5Q2VydGlmaWNhdGUyIGNlcnRpZmljYXRlMikNCisg
ICAgICAgIHsNCisgICAgICAgICAgICB0cnkNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgICAgIFg1MDlDaGFpbiBjaGFpbiA9IG5ldyBYNTA5Q2hh
aW4odHJ1ZSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFpbi5CdWls
ZChjZXJ0aWZpY2F0ZTIpIHx8IGNlcnRpZmljYXRlMi5WZXJpZnkoKTsNCisg
ICAgICAgICAgICB9DQorICAgICAgICAgICAgY2F0Y2ggKENyeXB0b2dyYXBo
aWNFeGNlcHRpb24pDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0K
Kw0KKyAgICAgICAgaW50ZXJuYWwgc3RhdGljIHN0cmluZyBHZXRDZXJ0aWZp
Y2F0ZXNQYXRoKFBTQ21kbGV0IGNtZGxldCkNCisgICAgICAgIHsNCisgICAg
ICAgICAgICB2YXIgY2VydFBhdGhPYmplY3QgPSBjbWRsZXQuU2Vzc2lvblN0
YXRlLlBTVmFyaWFibGUuR2V0VmFsdWUoQ2VydGlmaWNhdGVzUGF0aFZhcmlh
YmxlKTsNCisNCisgICAgICAgICAgICByZXR1cm4gY2VydFBhdGhPYmplY3Qg
aXMgUFNPYmplY3QgcHNPYmplY3QNCisgICAgICAgICAgICAgICAgPyBwc09i
amVjdC5CYXNlT2JqZWN0IGFzIHN0cmluZw0KKyAgICAgICAgICAgICAgICA6
IGNlcnRQYXRoT2JqZWN0Py5Ub1N0cmluZygpID8/IHN0cmluZy5FbXB0eTsN
CisgICAgICAgIH0NCisNCisgICAgICAgIGludGVybmFsIHN0YXRpYyBEaWN0
aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBMb2FkQ2VydGlmaWNhdGVzKHN0cmlu
ZyBjZXJ0UGF0aCkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXIgY2Vy
dGlmaWNhdGVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KCk7
DQorDQorICAgICAgICAgICAgaWYgKEZpbGUuRXhpc3RzKGNlcnRQYXRoKSkN
CisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhciBkb2MgPSBu
ZXcgWG1sRG9jdW1lbnQoKTsNCisgICAgICAgICAgICAgICAgZG9jLkxvYWQo
Y2VydFBhdGgpOw0KKw0KKyAgICAgICAgICAgICAgICBmb3JlYWNoIChYbWxO
b2RlIG5vZGUgaW4gZG9jLkdldEVsZW1lbnRzQnlUYWdOYW1lKCJjZXJ0aWZp
Y2F0ZSIpKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAg
ICAgICB2YXIgaG9zdEF0dCA9IG5vZGUuQXR0cmlidXRlcz9bImhvc3RuYW1l
Il07DQorICAgICAgICAgICAgICAgICAgICB2YXIgZm5ncHJ0QXR0ID0gbm9k
ZS5BdHRyaWJ1dGVzP1siZmluZ2VycHJpbnQiXTsNCisNCisgICAgICAgICAg
ICAgICAgICAgIGlmIChob3N0QXR0ICE9IG51bGwgJiYgZm5ncHJ0QXR0ICE9
IG51bGwpDQorICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVz
W2hvc3RBdHQuVmFsdWVdID0gZm5ncHJ0QXR0LlZhbHVlOw0KKyAgICAgICAg
ICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHJl
dHVybiBjZXJ0aWZpY2F0ZXM7DQorICAgICAgICB9DQorDQorICAgICAgICBp
bnRlcm5hbCBzdGF0aWMgdm9pZCBTYXZlQ2VydGlmaWNhdGVzKHN0cmluZyBj
ZXJ0UGF0aCwgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gY2VydGlmaWNh
dGVzKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHN0cmluZyBkaXJOYW1l
ID0gUGF0aC5HZXREaXJlY3RvcnlOYW1lKGNlcnRQYXRoKTsNCisNCisgICAg
ICAgICAgICBpZiAoIURpcmVjdG9yeS5FeGlzdHMoZGlyTmFtZSkpDQorICAg
ICAgICAgICAgICAgIERpcmVjdG9yeS5DcmVhdGVEaXJlY3RvcnkoZGlyTmFt
ZSk7DQorDQorICAgICAgICAgICAgWG1sRG9jdW1lbnQgZG9jID0gbmV3IFht
bERvY3VtZW50KCk7DQorICAgICAgICAgICAgWG1sRGVjbGFyYXRpb24gZGVj
bCA9IGRvYy5DcmVhdGVYbWxEZWNsYXJhdGlvbigiMS4wIiwgInV0Zi04Iiwg
bnVsbCk7DQorICAgICAgICAgICAgZG9jLkFwcGVuZENoaWxkKGRlY2wpOw0K
KyAgICAgICAgICAgIFhtbE5vZGUgbm9kZSA9IGRvYy5DcmVhdGVFbGVtZW50
KCJjZXJ0aWZpY2F0ZXMiKTsNCisNCisgICAgICAgICAgICBmb3JlYWNoIChL
ZXlWYWx1ZVBhaXI8c3RyaW5nLCBzdHJpbmc+IGNlcnQgaW4gY2VydGlmaWNh
dGVzKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgWG1sTm9k
ZSBjZXJ0Tm9kZSA9IGRvYy5DcmVhdGVFbGVtZW50KCJjZXJ0aWZpY2F0ZSIp
Ow0KKyAgICAgICAgICAgICAgICBYbWxBdHRyaWJ1dGUgaG9zdG5hbWUgPSBk
b2MuQ3JlYXRlQXR0cmlidXRlKCJob3N0bmFtZSIpOw0KKyAgICAgICAgICAg
ICAgICBYbWxBdHRyaWJ1dGUgZmluZ2VycHJpbnQgPSBkb2MuQ3JlYXRlQXR0
cmlidXRlKCJmaW5nZXJwcmludCIpOw0KKyAgICAgICAgICAgICAgICBob3N0
bmFtZS5WYWx1ZSA9IGNlcnQuS2V5Ow0KKyAgICAgICAgICAgICAgICBmaW5n
ZXJwcmludC5WYWx1ZSA9IGNlcnQuVmFsdWU7DQorICAgICAgICAgICAgICAg
IGNlcnROb2RlLkF0dHJpYnV0ZXM/LkFwcGVuZChob3N0bmFtZSk7DQorICAg
ICAgICAgICAgICAgIGNlcnROb2RlLkF0dHJpYnV0ZXM/LkFwcGVuZChmaW5n
ZXJwcmludCk7DQorICAgICAgICAgICAgICAgIG5vZGUuQXBwZW5kQ2hpbGQo
Y2VydE5vZGUpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBk
b2MuQXBwZW5kQ2hpbGQobm9kZSk7DQorICAgICAgICAgICAgZG9jLlNhdmUo
Y2VydFBhdGgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIGludGVy
bmFsIGFic3RyYWN0IGNsYXNzIENlcnRpZmljYXRlVmFsaWRhdGlvbkV4Y2Vw
dGlvbiA6IEV4Y2VwdGlvbg0KKyAgICB7DQorICAgICAgICBwcm90ZWN0ZWQg
Y29uc3Qgc3RyaW5nIENFUlRfVFJVU1RFRCA9ICJUaGUgY2VydGlmaWNhdGUg
b24gdGhpcyBzZXJ2ZXIgaXMgdHJ1c3RlZC4gSXQgaXMgcmVjb21tZW5kZWQg
eW91IHJlLWlzc3VlIHRoaXMgc2VydmVyJ3MgY2VydGlmaWNhdGUuIjsNCisg
ICAgICAgIHByb3RlY3RlZCBjb25zdCBzdHJpbmcgQ0VSVF9OT1RfVFJVU1RF
RCA9ICJUaGUgY2VydGlmaWNhdGUgb24gdGhpcyBzZXJ2ZXIgaXMgbm90IHRy
dXN0ZWQuIjsNCisNCisgICAgICAgIHByb3RlY3RlZCBDZXJ0aWZpY2F0ZVZh
bGlkYXRpb25FeGNlcHRpb24oc3RyaW5nIGZpbmdlcnByaW50LCBib29sIHRy
dXN0ZWQsIHN0cmluZyBob3N0bmFtZSkNCisgICAgICAgIHsNCisgICAgICAg
ICAgICBGaW5nZXJwcmludCA9IGZpbmdlcnByaW50Ow0KKyAgICAgICAgICAg
IFRydXN0ZWQgPSB0cnVzdGVkOw0KKyAgICAgICAgICAgIEhvc3RuYW1lID0g
aG9zdG5hbWU7DQorICAgICAgICB9DQorDQorICAgICAgICBwcm90ZWN0ZWQg
Ym9vbCBUcnVzdGVkIHsgZ2V0OyB9DQorICAgICAgICBwdWJsaWMgc3RyaW5n
IEZpbmdlcnByaW50IHsgZ2V0OyB9DQorICAgICAgICBwdWJsaWMgc3RyaW5n
IEhvc3RuYW1lIHsgZ2V0OyB9DQorICAgICAgICBwdWJsaWMgYWJzdHJhY3Qg
c3RyaW5nIENhcHRpb24geyBnZXQ7IH0NCisgICAgfQ0KKw0KKyAgICBpbnRl
cm5hbCBjbGFzcyBDZXJ0aWZpY2F0ZUNoYW5nZWRFeGNlcHRpb24gOiBDZXJ0
aWZpY2F0ZVZhbGlkYXRpb25FeGNlcHRpb24NCisgICAgew0KKyAgICAgICAg
cHVibGljIENlcnRpZmljYXRlQ2hhbmdlZEV4Y2VwdGlvbihzdHJpbmcgZmlu
Z2VycHJpbnQsIGJvb2wgdHJ1c3RlZCwgc3RyaW5nIGhvc3RuYW1lKQ0KKyAg
ICAgICAgICAgIDogYmFzZShmaW5nZXJwcmludCwgdHJ1c3RlZCwgaG9zdG5h
bWUpDQorICAgICAgICB7DQorICAgICAgICB9DQorDQorICAgICAgICBwdWJs
aWMgb3ZlcnJpZGUgc3RyaW5nIENhcHRpb24gPT4gIlNlY3VyaXR5IENlcnRp
ZmljYXRlIENoYW5nZWQiOw0KKw0KKyAgICAgICAgcHVibGljIG92ZXJyaWRl
IHN0cmluZyBNZXNzYWdlID0+DQorICAgICAgICAgICAgJCJUaGUgY2VydGlm
aWNhdGUgdGh1bWJwcmludCBvZiBzZXJ2ZXIge0hvc3RuYW1lfSBoYXMgY2hh
bmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHlvdSBjb25uZWN0ZWQuXG4iICsN
CisgICAgICAgICAgICAkIlRoZSBjZXJ0aWZpY2F0ZSB0aHVtYnByaW50IG9m
IHRoZSBzZXJ2ZXIgaXM6XG57RmluZ2VycHJpbnR9XG4iICsNCisgICAgICAg
ICAgICAoVHJ1c3RlZCA/IENFUlRfVFJVU1RFRCA6IENFUlRfTk9UX1RSVVNU
RUQpICsNCisgICAgICAgICAgICAiXG5EbyB5b3Ugd2lzaCB0byBjb250aW51
ZT8iOw0KKyAgICB9DQorDQorICAgIGludGVybmFsIGNsYXNzIENlcnRpZmlj
YXRlTm90Rm91bmRFeGNlcHRpb24gOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb25F
eGNlcHRpb24NCisgICAgew0KKyAgICAgICAgcHVibGljIENlcnRpZmljYXRl
Tm90Rm91bmRFeGNlcHRpb24oc3RyaW5nIGZpbmdlcnByaW50LCBib29sIHRy
dXN0ZWQsIHN0cmluZyBob3N0bmFtZSkNCisgICAgICAgICAgICA6IGJhc2Uo
ZmluZ2VycHJpbnQsIHRydXN0ZWQsIGhvc3RuYW1lKQ0KKyAgICAgICAgew0K
KyAgICAgICAgfQ0KKw0KKyAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmlu
ZyBDYXB0aW9uID0+ICJOZXcgU2VjdXJpdHkgQ2VydGlmaWNhdGUiOw0KKw0K
KyAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBNZXNzYWdlID0+ICQi
VGhlIGNlcnRpZmljYXRlIHRodW1icHJpbnQgb2YgdGhlIHNlcnZlciB5b3Ug
aGF2ZSBjb25uZWN0ZWQgdG8gaXMgOlxue0ZpbmdlcnByaW50fVxuIiArDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRy
dXN0ZWQgPyBDRVJUX1RSVVNURUQgOiBDRVJUX05PVF9UUlVTVEVEKSArDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
RG8geW91IHdpc2ggdG8gY29udGludWU/IjsNCiAgICAgfQ0KIH0NCmRpZmYg
LS1naXQgYS9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMv
Q29ubmVjdC1YZW5TZXJ2ZXIuY3MgYi9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hl
bGwvYXV0b2dlbi9zcmMvQ29ubmVjdC1YZW5TZXJ2ZXIuY3MKaW5kZXggZGQ2
MWYzNTg1Li5mOTcxOTk3OTEgMTAwNjQ0Ci0tLSBhL29jYW1sL3Nkay1nZW4v
cG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9Db25uZWN0LVhlblNlcnZlci5jcwor
KysgYi9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMvQ29u
bmVjdC1YZW5TZXJ2ZXIuY3MKQEAgLTI5LDcgKzI5LDYgQEAKIA0KIHVzaW5n
IFN5c3RlbTsNCiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsN
Ci11c2luZyBTeXN0ZW0uSU87DQogdXNpbmcgU3lzdGVtLk1hbmFnZW1lbnQu
QXV0b21hdGlvbjsNCiB1c2luZyBTeXN0ZW0uTmV0Ow0KICNpZiBORVQ4XzBf
T1JfR1JFQVRFUg0KQEAgLTM4LDkgKzM3LDcgQEAgdXNpbmcgU3lzdGVtLk5l
dC5IdHRwOwogdXNpbmcgU3lzdGVtLk5ldC5TZWN1cml0eTsNCiB1c2luZyBT
eXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7DQogdXNpbmcgU3lzdGVt
LlNlY3VyaXR5Ow0KLXVzaW5nIFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFw
aHk7DQogdXNpbmcgU3lzdGVtLlNlY3VyaXR5LkNyeXB0b2dyYXBoeS5YNTA5
Q2VydGlmaWNhdGVzOw0KLXVzaW5nIFN5c3RlbS5YbWw7DQogdXNpbmcgWGVu
QVBJOw0KIA0KIG5hbWVzcGFjZSBDaXRyaXguWGVuU2VydmVyLkNvbW1hbmRz
DQpAQCAtNDgsMTEgKzQ1LDggQEAgbmFtZXNwYWNlIENpdHJpeC5YZW5TZXJ2
ZXIuQ29tbWFuZHMKICAgICBbQ21kbGV0KCJDb25uZWN0IiwgIlhlblNlcnZl
ciIpXQ0KICAgICBwdWJsaWMgY2xhc3MgQ29ubmVjdFhlblNlcnZlckNvbW1h
bmQgOiBQU0NtZGxldA0KICAgICB7DQotICAgICAgICBwcml2YXRlIGNvbnN0
IHN0cmluZyBDZXJ0aWZpY2F0ZXNQYXRoVmFyaWFibGUgPSAiZ2xvYmFsOktu
b3duU2VydmVyQ2VydGlmaWNhdGVzRmlsZVBhdGgiOw0KLQ0KLSAgICAgICAg
cHJpdmF0ZSByZWFkb25seSBvYmplY3QgX2NlcnRpZmljYXRlVmFsaWRhdGlv
bkxvY2sgPSBuZXcgb2JqZWN0KCk7DQotDQotICAgICAgICBwcml2YXRlIHN0
YXRpYyByZWFkb25seSBzdHJpbmcgRGVmYXVsdFVzZXJBZ2VudCA9ICQiWGVu
U2VydmVyUFNNb2R1bGUvQFNES19WRVJTSU9OQCI7DQorICAgICAgICBwcml2
YXRlIHN0YXRpYyByZWFkb25seSBzdHJpbmcgRGVmYXVsdFVzZXJBZ2VudCA9
ICJYZW5TZXJ2ZXJQU01vZHVsZS9AU0RLX1ZFUlNJT05AIjsNCisgICAgICAg
IHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IG9iamVjdCBDZXJ0aWZpY2F0ZVZh
bGlkYXRpb25Mb2NrID0gbmV3IG9iamVjdCgpOw0KIA0KICAgICAgICAgcHVi
bGljIENvbm5lY3RYZW5TZXJ2ZXJDb21tYW5kKCkNCiAgICAgICAgIHsNCkBA
IC0yMjgsMTAgKzIyMiwxMCBAQCBuYW1lc3BhY2UgQ2l0cml4LlhlblNlcnZl
ci5Db21tYW5kcwogICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2hvdWxkQ29udGludWUoZXgu
TWVzc2FnZSwgZXguQ2FwdGlvbikpDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBjZXJ0UGF0aCA9IEdldENlcnRpZmljYXRlc1BhdGgoKTsNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZXJ0aWZpY2F0ZXMgPSBM
b2FkQ2VydGlmaWNhdGVzKGNlcnRQYXRoKTsNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBjZXJ0UGF0aCA9IENvbW1vbkNtZGxldEZ1
bmN0aW9ucy5HZXRDZXJ0aWZpY2F0ZXNQYXRoKHRoaXMpOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNlcnRpZmljYXRlcyA9IENv
bW1vbkNtZGxldEZ1bmN0aW9ucy5Mb2FkQ2VydGlmaWNhdGVzKGNlcnRQYXRo
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmlj
YXRlc1tleC5Ib3N0bmFtZV0gPSBleC5GaW5nZXJwcmludDsNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVDZXJ0aWZpY2F0ZXMoY2Vy
dFBhdGgsIGNlcnRpZmljYXRlcyk7DQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tb25DbWRsZXRGdW5jdGlvbnMuU2F2ZUNlcnRpZmlj
YXRlcyhjZXJ0UGF0aCwgY2VydGlmaWNhdGVzKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGktLTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQpAQCAtMjc0LDE3MSArMjY4LDUzIEBAIG5hbWVzcGFjZSBD
aXRyaXguWGVuU2VydmVyLkNvbW1hbmRzCiAgICAgICAgICAgICAgICAgV3Jp
dGVPYmplY3QobmV3U2Vzc2lvbnMuVmFsdWVzLCB0cnVlKTsNCiAgICAgICAg
IH0NCiANCi0gICAgICAgIHByaXZhdGUgYm9vbCBWYWxpZGF0ZVNlcnZlckNl
cnRpZmljYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0
aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lFcnJvcnMgc3Ns
UG9saWN5RXJyb3JzKQ0KKyAgICAgICAgcHJpdmF0ZSBib29sIFZhbGlkYXRl
U2VydmVyQ2VydGlmaWNhdGUob2JqZWN0IHNlbmRlciwgWDUwOUNlcnRpZmlj
YXRlIGNlcnRpZmljYXRlLCBYNTA5Q2hhaW4gY2hhaW4sDQorICAgICAgICAg
ICAgU3NsUG9saWN5RXJyb3JzIHNzbFBvbGljeUVycm9ycykNCiAgICAgICAg
IHsNCiAgICAgICAgICAgICBpZiAoc3NsUG9saWN5RXJyb3JzID09IFNzbFBv
bGljeUVycm9ycy5Ob25lKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsNCiANCi0gICAgICAgICAgICBsb2NrIChfY2VydGlmaWNhdGVWYWxpZGF0
aW9uTG9jaykNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGJv
b2wgaWdub3JlQ2hhbmdlZCA9IEZvcmNlIHx8IE5vV2FybkNlcnRpZmljYXRl
cyB8fCAoYm9vbClHZXRWYXJpYWJsZVZhbHVlKCJOb1dhcm5DZXJ0aWZpY2F0
ZXMiLCBmYWxzZSk7DQotICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlTmV3
ID0gRm9yY2UgfHwgTm9XYXJuTmV3Q2VydGlmaWNhdGVzIHx8IChib29sKUdl
dFZhcmlhYmxlVmFsdWUoIk5vV2Fybk5ld0NlcnRpZmljYXRlcyIsIGZhbHNl
KTsNCi0NCiAjaWYgTkVUOF8wX09SX0dSRUFURVINCi0gICAgICAgICAgICAg
ICAgdmFyIHJlcXVlc3RNZXNzYWdlID0gc2VuZGVyIGFzIEh0dHBSZXF1ZXN0
TWVzc2FnZTsNCi0gICAgICAgICAgICAgICAgc3RyaW5nIGhvc3RuYW1lID0g
cmVxdWVzdE1lc3NhZ2U/LlJlcXVlc3RVcmk/Lkhvc3QgPz8gc3RyaW5nLkVt
cHR5Ow0KKyAgICAgICAgICAgIHZhciByZXF1ZXN0TWVzc2FnZSA9IHNlbmRl
ciBhcyBIdHRwUmVxdWVzdE1lc3NhZ2U7DQorICAgICAgICAgICAgc3RyaW5n
IGhvc3RuYW1lID0gcmVxdWVzdE1lc3NhZ2U/LlJlcXVlc3RVcmk/Lkhvc3Qg
Pz8gc3RyaW5nLkVtcHR5Ow0KICNlbHNlDQotICAgICAgICAgICAgICAgIHZh
ciB3ZWJyZXEgPSBzZW5kZXIgYXMgSHR0cFdlYlJlcXVlc3Q7DQotICAgICAg
ICAgICAgICAgIHN0cmluZyBob3N0bmFtZSA9IHdlYnJlcT8uQWRkcmVzcz8u
SG9zdCA/PyBzdHJpbmcuRW1wdHk7DQorICAgICAgICAgICAgdmFyIHdlYnJl
cSA9IHNlbmRlciBhcyBIdHRwV2ViUmVxdWVzdDsNCisgICAgICAgICAgICBz
dHJpbmcgaG9zdG5hbWUgPSB3ZWJyZXE/LkFkZHJlc3M/Lkhvc3QgPz8gc3Ry
aW5nLkVtcHR5Ow0KICNlbmRpZg0KLSAgICAgICAgICAgICAgICBzdHJpbmcg
ZmluZ2VycHJpbnQgPSBDb21tb25DbWRsZXRGdW5jdGlvbnMuRmluZ2VycHJp
bnRQcmV0dHlTdHJpbmcoY2VydGlmaWNhdGUuR2V0Q2VydEhhc2hTdHJpbmco
KSk7DQogDQotICAgICAgICAgICAgICAgIGJvb2wgdHJ1c3RlZCA9IFZlcmlm
eUluQWxsU3RvcmVzKG5ldyBYNTA5Q2VydGlmaWNhdGUyKGNlcnRpZmljYXRl
KSk7DQorICAgICAgICAgICAgc3RyaW5nIGZpbmdlcnByaW50ID0gQ29tbW9u
Q21kbGV0RnVuY3Rpb25zLkZpbmdlcnByaW50UHJldHR5U3RyaW5nKGNlcnRp
ZmljYXRlLkdldENlcnRIYXNoU3RyaW5nKCkpOw0KIA0KLSAgICAgICAgICAg
ICAgICB2YXIgY2VydFBhdGggPSBHZXRDZXJ0aWZpY2F0ZXNQYXRoKCk7DQot
ICAgICAgICAgICAgICAgIHZhciBjZXJ0aWZpY2F0ZXMgPSBMb2FkQ2VydGlm
aWNhdGVzKGNlcnRQYXRoKTsNCisgICAgICAgICAgICBsb2NrIChDZXJ0aWZp
Y2F0ZVZhbGlkYXRpb25Mb2NrKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgdmFyIGNlcnRQYXRoID0gQ29tbW9uQ21kbGV0RnVuY3Rpb25z
LkdldENlcnRpZmljYXRlc1BhdGgodGhpcyk7DQorICAgICAgICAgICAgICAg
IHZhciBjZXJ0aWZpY2F0ZXMgPSBDb21tb25DbWRsZXRGdW5jdGlvbnMuTG9h
ZENlcnRpZmljYXRlcyhjZXJ0UGF0aCk7DQogDQogICAgICAgICAgICAgICAg
IGlmIChjZXJ0aWZpY2F0ZXMuVHJ5R2V0VmFsdWUoaG9zdG5hbWUsIG91dCB2
YXIgZmluZ2VycHJpbnRPbGQpKQ0KICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICBpZiAoZmluZ2VycHJpbnRPbGQgPT0gZmluZ2Vy
cHJpbnQpDQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
DQogDQorICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNoYW5nZWQg
PSBGb3JjZSB8fCBOb1dhcm5DZXJ0aWZpY2F0ZXMgfHwgKGJvb2wpR2V0VmFy
aWFibGVWYWx1ZSgiTm9XYXJuQ2VydGlmaWNhdGVzIiwgZmFsc2UpOw0KICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVDaGFuZ2VkKQ0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDZXJ0aWZpY2F0ZUNoYW5n
ZWRFeGNlcHRpb24oZmluZ2VycHJpbnQsIGZpbmdlcnByaW50T2xkLCB0cnVz
dGVkLCBob3N0bmFtZSk7DQorICAgICAgICAgICAgICAgICAgICB7DQorICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIHRydXN0ZWQgPSBDb21tb25DbWRs
ZXRGdW5jdGlvbnMuVmVyaWZ5SW5BbGxTdG9yZXMobmV3IFg1MDlDZXJ0aWZp
Y2F0ZTIoY2VydGlmaWNhdGUpKTsNCisgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgQ2VydGlmaWNhdGVDaGFuZ2VkRXhjZXB0aW9uKGZpbmdl
cnByaW50LCB0cnVzdGVkLCBob3N0bmFtZSk7DQorICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZU5ldyA9IEZvcmNlIHx8IE5vV2Fybk5ld0NlcnRpZmlj
YXRlcyB8fCAoYm9vbClHZXRWYXJpYWJsZVZhbHVlKCJOb1dhcm5OZXdDZXJ0
aWZpY2F0ZXMiLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICBpZiAo
IWlnbm9yZU5ldykNCisgICAgICAgICAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgdHJ1c3RlZCA9IENvbW1vbkNtZGxldEZ1
bmN0aW9ucy5WZXJpZnlJbkFsbFN0b3JlcyhuZXcgWDUwOUNlcnRpZmljYXRl
MihjZXJ0aWZpY2F0ZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBDZXJ0aWZpY2F0ZU5vdEZvdW5kRXhjZXB0aW9uKGZpbmdlcnBy
aW50LCB0cnVzdGVkLCBob3N0bmFtZSk7DQorICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICAgICAg
Y2VydGlmaWNhdGVzW2hvc3RuYW1lXSA9IGZpbmdlcnByaW50Ow0KLSAgICAg
ICAgICAgICAgICBTYXZlQ2VydGlmaWNhdGVzKGNlcnRQYXRoLCBjZXJ0aWZp
Y2F0ZXMpOw0KKyAgICAgICAgICAgICAgICBDb21tb25DbWRsZXRGdW5jdGlv
bnMuU2F2ZUNlcnRpZmljYXRlcyhjZXJ0UGF0aCwgY2VydGlmaWNhdGVzKTsN
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAg
fQ0KICAgICAgICAgfQ0KLQ0KLSAgICAgICAgcHJpdmF0ZSBib29sIFZlcmlm
eUluQWxsU3RvcmVzKFg1MDlDZXJ0aWZpY2F0ZTIgY2VydGlmaWNhdGUyKQ0K
LSAgICAgICAgew0KLSAgICAgICAgICAgIHRyeQ0KLSAgICAgICAgICAgIHsN
Ci0gICAgICAgICAgICAgICAgWDUwOUNoYWluIGNoYWluID0gbmV3IFg1MDlD
aGFpbih0cnVlKTsNCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWluLkJ1
aWxkKGNlcnRpZmljYXRlMikgfHwgY2VydGlmaWNhdGUyLlZlcmlmeSgpOw0K
LSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBjYXRjaCAoQ3J5cHRvZ3Jh
cGhpY0V4Y2VwdGlvbikNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9
DQotDQotICAgICAgICBwcml2YXRlIHN0cmluZyBHZXRDZXJ0aWZpY2F0ZXNQ
YXRoKCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB2YXIgY2VydFBhdGhP
YmplY3QgPSBTZXNzaW9uU3RhdGUuUFNWYXJpYWJsZS5HZXRWYWx1ZShDZXJ0
aWZpY2F0ZXNQYXRoVmFyaWFibGUpOw0KLQ0KLSAgICAgICAgICAgIHJldHVy
biBjZXJ0UGF0aE9iamVjdCBpcyBQU09iamVjdCBwc09iamVjdA0KLSAgICAg
ICAgICAgICAgICA/IHBzT2JqZWN0LkJhc2VPYmplY3QgYXMgc3RyaW5nDQot
ICAgICAgICAgICAgICAgIDogY2VydFBhdGhPYmplY3Q/LlRvU3RyaW5nKCkg
Pz8gc3RyaW5nLkVtcHR5Ow0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgcHJp
dmF0ZSBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBMb2FkQ2VydGlmaWNh
dGVzKHN0cmluZyBjZXJ0UGF0aCkNCi0gICAgICAgIHsNCi0gICAgICAgICAg
ICB2YXIgY2VydGlmaWNhdGVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBz
dHJpbmc+KCk7DQotDQotICAgICAgICAgICAgaWYgKEZpbGUuRXhpc3RzKGNl
cnRQYXRoKSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHZh
ciBkb2MgPSBuZXcgWG1sRG9jdW1lbnQoKTsNCi0gICAgICAgICAgICAgICAg
ZG9jLkxvYWQoY2VydFBhdGgpOw0KLQ0KLSAgICAgICAgICAgICAgICBmb3Jl
YWNoIChYbWxOb2RlIG5vZGUgaW4gZG9jLkdldEVsZW1lbnRzQnlUYWdOYW1l
KCJjZXJ0aWZpY2F0ZSIpKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAg
ICAgICAgICAgICAgICB2YXIgaG9zdEF0dCA9IG5vZGUuQXR0cmlidXRlcz9b
Imhvc3RuYW1lIl07DQotICAgICAgICAgICAgICAgICAgICB2YXIgZm5ncHJ0
QXR0ID0gbm9kZS5BdHRyaWJ1dGVzP1siZmluZ2VycHJpbnQiXTsNCi0NCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChob3N0QXR0ICE9IG51bGwgJiYgZm5n
cHJ0QXR0ICE9IG51bGwpDQotICAgICAgICAgICAgICAgICAgICAgICAgY2Vy
dGlmaWNhdGVzW2hvc3RBdHQuVmFsdWVdID0gZm5ncHJ0QXR0LlZhbHVlOw0K
LSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAg
ICAgICAgIHJldHVybiBjZXJ0aWZpY2F0ZXM7DQotICAgICAgICB9DQotDQot
ICAgICAgICBwcml2YXRlIHZvaWQgU2F2ZUNlcnRpZmljYXRlcyhzdHJpbmcg
Y2VydFBhdGgsIERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IGNlcnRpZmlj
YXRlcykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBzdHJpbmcgZGlyTmFt
ZSA9IFBhdGguR2V0RGlyZWN0b3J5TmFtZShjZXJ0UGF0aCk7DQotDQotICAg
ICAgICAgICAgaWYgKCFEaXJlY3RvcnkuRXhpc3RzKGRpck5hbWUpKQ0KLSAg
ICAgICAgICAgICAgICBEaXJlY3RvcnkuQ3JlYXRlRGlyZWN0b3J5KGRpck5h
bWUpOw0KLQ0KLSAgICAgICAgICAgIFhtbERvY3VtZW50IGRvYyA9IG5ldyBY
bWxEb2N1bWVudCgpOw0KLSAgICAgICAgICAgIFhtbERlY2xhcmF0aW9uIGRl
Y2wgPSBkb2MuQ3JlYXRlWG1sRGVjbGFyYXRpb24oIjEuMCIsICJ1dGYtOCIs
IG51bGwpOw0KLSAgICAgICAgICAgIGRvYy5BcHBlbmRDaGlsZChkZWNsKTsN
Ci0gICAgICAgICAgICBYbWxOb2RlIG5vZGUgPSBkb2MuQ3JlYXRlRWxlbWVu
dCgiY2VydGlmaWNhdGVzIik7DQotDQotICAgICAgICAgICAgZm9yZWFjaCAo
S2V5VmFsdWVQYWlyPHN0cmluZywgc3RyaW5nPiBjZXJ0IGluIGNlcnRpZmlj
YXRlcykNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIFhtbE5v
ZGUgY2VydE5vZGUgPSBkb2MuQ3JlYXRlRWxlbWVudCgiY2VydGlmaWNhdGUi
KTsNCi0gICAgICAgICAgICAgICAgWG1sQXR0cmlidXRlIGhvc3RuYW1lID0g
ZG9jLkNyZWF0ZUF0dHJpYnV0ZSgiaG9zdG5hbWUiKTsNCi0gICAgICAgICAg
ICAgICAgWG1sQXR0cmlidXRlIGZpbmdlcnByaW50ID0gZG9jLkNyZWF0ZUF0
dHJpYnV0ZSgiZmluZ2VycHJpbnQiKTsNCi0gICAgICAgICAgICAgICAgaG9z
dG5hbWUuVmFsdWUgPSBjZXJ0LktleTsNCi0gICAgICAgICAgICAgICAgZmlu
Z2VycHJpbnQuVmFsdWUgPSBjZXJ0LlZhbHVlOw0KLSAgICAgICAgICAgICAg
ICBjZXJ0Tm9kZS5BdHRyaWJ1dGVzPy5BcHBlbmQoaG9zdG5hbWUpOw0KLSAg
ICAgICAgICAgICAgICBjZXJ0Tm9kZS5BdHRyaWJ1dGVzPy5BcHBlbmQoZmlu
Z2VycHJpbnQpOw0KLSAgICAgICAgICAgICAgICBub2RlLkFwcGVuZENoaWxk
KGNlcnROb2RlKTsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAg
ZG9jLkFwcGVuZENoaWxkKG5vZGUpOw0KLSAgICAgICAgICAgIGRvYy5TYXZl
KGNlcnRQYXRoKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICBpbnRl
cm5hbCBhYnN0cmFjdCBjbGFzcyBDZXJ0aWZpY2F0ZVZhbGlkYXRpb25FeGNl
cHRpb24gOiBFeGNlcHRpb24NCi0gICAgew0KLSAgICAgICAgcHJvdGVjdGVk
IGNvbnN0IHN0cmluZyBDRVJUX1RSVVNURUQgPSAiVGhlIGNlcnRpZmljYXRl
IG9uIHRoaXMgc2VydmVyIGlzIHRydXN0ZWQuIEl0IGlzIHJlY29tbWVuZGVk
IHlvdSByZS1pc3N1ZSB0aGlzIHNlcnZlcidzIGNlcnRpZmljYXRlLiI7DQot
ICAgICAgICBwcm90ZWN0ZWQgY29uc3Qgc3RyaW5nIENFUlRfTk9UX1RSVVNU
RUQgPSAiVGhlIGNlcnRpZmljYXRlIG9uIHRoaXMgc2VydmVyIGlzIG5vdCB0
cnVzdGVkLiI7DQotDQotICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYm9v
bCBUcnVzdGVkOw0KLSAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0cmluZyBG
aW5nZXJwcmludDsNCi0gICAgICAgIHB1YmxpYyByZWFkb25seSBzdHJpbmcg
SG9zdG5hbWU7DQotDQotICAgICAgICBwcm90ZWN0ZWQgQ2VydGlmaWNhdGVW
YWxpZGF0aW9uRXhjZXB0aW9uKHN0cmluZyBmaW5nZXJwcmludCwgYm9vbCB0
cnVzdGVkLCBzdHJpbmcgaG9zdG5hbWUpDQotICAgICAgICB7DQotICAgICAg
ICAgICAgRmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDsNCi0gICAgICAgICAg
ICBUcnVzdGVkID0gdHJ1c3RlZDsNCi0gICAgICAgICAgICBIb3N0bmFtZSA9
IGhvc3RuYW1lOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgcHVibGljIGFi
c3RyYWN0IHN0cmluZyBDYXB0aW9uIHsgZ2V0OyB9DQotICAgIH0NCi0NCi0g
ICAgaW50ZXJuYWwgY2xhc3MgQ2VydGlmaWNhdGVDaGFuZ2VkRXhjZXB0aW9u
IDogQ2VydGlmaWNhdGVWYWxpZGF0aW9uRXhjZXB0aW9uDQotICAgIHsNCi0g
ICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF9vbGRGaW5nZXJwcmlu
dDsNCi0NCi0gICAgICAgIHB1YmxpYyBDZXJ0aWZpY2F0ZUNoYW5nZWRFeGNl
cHRpb24oc3RyaW5nIGZpbmdlcnByaW50LCBzdHJpbmcgb2xkRmluZ2VycHJp
bnQsIGJvb2wgdHJ1c3RlZCwgc3RyaW5nIGhvc3RuYW1lKQ0KLSAgICAgICAg
ICAgIDogYmFzZShmaW5nZXJwcmludCwgdHJ1c3RlZCwgaG9zdG5hbWUpDQot
ICAgICAgICB7DQotICAgICAgICAgICAgX29sZEZpbmdlcnByaW50ID0gb2xk
RmluZ2VycHJpbnQ7DQotICAgICAgICB9DQotDQotICAgICAgICBwdWJsaWMg
b3ZlcnJpZGUgc3RyaW5nIENhcHRpb24gPT4gIlNlY3VyaXR5IENlcnRpZmlj
YXRlIENoYW5nZWQiOw0KLQ0KLSAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0
cmluZyBNZXNzYWdlID0+ICQiVGhlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50
IG9mIHRoZSBzZXJ2ZXIgeW91IGhhdmUgY29ubmVjdGVkIHRvIGlzOlxue0Zp
bmdlcnByaW50fVxuIiArDQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJCJCdXQgd2FzIGV4cGVjdGVkIHRvIGJlOlxue19v
bGRGaW5nZXJwcmludH1cbiIgKw0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChUcnVzdGVkID8gQ0VSVF9UUlVTVEVEIDog
Q0VSVF9OT1RfVFJVU1RFRCkgKw0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbkRvIHlvdSB3aXNoIHRvIGNvbnRpbnVl
PyI7DQotICAgIH0NCi0NCi0gICAgaW50ZXJuYWwgY2xhc3MgQ2VydGlmaWNh
dGVOb3RGb3VuZEV4Y2VwdGlvbiA6IENlcnRpZmljYXRlVmFsaWRhdGlvbkV4
Y2VwdGlvbg0KLSAgICB7DQotICAgICAgICBwdWJsaWMgQ2VydGlmaWNhdGVO
b3RGb3VuZEV4Y2VwdGlvbihzdHJpbmcgZmluZ2VycHJpbnQsIGJvb2wgdHJ1
c3RlZCwgc3RyaW5nIGhvc3RuYW1lKQ0KLSAgICAgICAgICAgIDogYmFzZShm
aW5nZXJwcmludCwgdHJ1c3RlZCwgaG9zdG5hbWUpDQotICAgICAgICB7DQot
ICAgICAgICB9DQotDQotICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5n
IENhcHRpb24gPT4gIk5ldyBTZWN1cml0eSBDZXJ0aWZpY2F0ZSI7DQotDQot
ICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIE1lc3NhZ2UgPT4gJCJU
aGUgY2VydGlmaWNhdGUgZmluZ2VycHJpbnQgb2YgdGhlIHNlcnZlciB5b3Ug
aGF2ZSBjb25uZWN0ZWQgdG8gaXMgOlxue0ZpbmdlcnByaW50fVxuIiArDQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRy
dXN0ZWQgPyBDRVJUX1RSVVNURUQgOiBDRVJUX05PVF9UUlVTVEVEKSArDQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
RG8geW91IHdpc2ggdG8gY29udGludWU/IjsNCiAgICAgfQ0KIH0NCmRpZmYg
LS1naXQgYS9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMv
UmVjZWl2ZS1YZW5Qb29sUGF0Y2guY3MgYi9vY2FtbC9zZGstZ2VuL3Bvd2Vy
c2hlbGwvYXV0b2dlbi9zcmMvUmVjZWl2ZS1YZW5Qb29sUGF0Y2guY3MKaW5k
ZXggNzQ0MmUwNDdlLi44MzY4MTllMTIgMTAwNjQ0Ci0tLSBhL29jYW1sL3Nk
ay1nZW4vcG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9SZWNlaXZlLVhlblBvb2xQ
YXRjaC5jcworKysgYi9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dl
bi9zcmMvUmVjZWl2ZS1YZW5Qb29sUGF0Y2guY3MKQEAgLTU4LDggKzU4LDgg
QEAgbmFtZXNwYWNlIENpdHJpeC5YZW5TZXJ2ZXIuQ29tbWFuZHMKICAgICAg
ICAgICAgIEdldFNlc3Npb24oKTsNCiANCiAgICAgICAgICAgICBSdW5BcGlD
YWxsKCgpID0+IFhlbkFQSS5IVFRQX2FjdGlvbnMuZ2V0X3Bvb2xfcGF0Y2hf
ZG93bmxvYWQoRGF0YUNvcGllZERlbGVnYXRlLA0KLSAgICAgICAgICAgICAg
ICBDYW5jZWxsaW5nRGVsZWdhdGUsIFRpbWVvdXRNcywgWGVuSG9zdCwgUHJv
eHksIFBhdGgsIFRhc2tSZWYsDQotICAgICAgICAgICAgICAgIHNlc3Npb24u
b3BhcXVlX3JlZiwgVXVpZCkpOw0KKyAgICAgICAgICAgICAgICBDYW5jZWxs
aW5nRGVsZWdhdGUsIFRpbWVvdXRNcywgWGVuSG9zdCwgUHJveHksIENlcnRp
ZmljYXRlVmFsaWRhdGlvbkNhbGxiYWNrLA0KKyAgICAgICAgICAgICAgICBQ
YXRoLCBUYXNrUmVmLCBzZXNzaW9uLm9wYXF1ZV9yZWYsIFV1aWQpKTsNCiAg
ICAgICAgIH0NCiANCiAgICAgICAgICNlbmRyZWdpb24NCmRpZmYgLS1naXQg
YS9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMvU2VuZC1Y
ZW5PZW1QYXRjaFN0cmVhbS5jcyBiL29jYW1sL3Nkay1nZW4vcG93ZXJzaGVs
bC9hdXRvZ2VuL3NyYy9TZW5kLVhlbk9lbVBhdGNoU3RyZWFtLmNzCmluZGV4
IDNjNjc2OGY2ZC4uMmRhMDU3ODFjIDEwMDY0NAotLS0gYS9vY2FtbC9zZGst
Z2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMvU2VuZC1YZW5PZW1QYXRjaFN0
cmVhbS5jcworKysgYi9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dl
bi9zcmMvU2VuZC1YZW5PZW1QYXRjaFN0cmVhbS5jcwpAQCAtNTgsOCArNTgs
OCBAQCBuYW1lc3BhY2UgQ2l0cml4LlhlblNlcnZlci5Db21tYW5kcwogICAg
ICAgICAgICAgICAgIHJldHVybjsNCiANCiAgICAgICAgICAgICBSdW5BcGlD
YWxsKCgpID0+IFhlbkFQSS5IVFRQX2FjdGlvbnMucHV0X29lbV9wYXRjaF9z
dHJlYW0oUHJvZ3Jlc3NEZWxlZ2F0ZSwNCi0gICAgICAgICAgICAgICAgQ2Fu
Y2VsbGluZ0RlbGVnYXRlLCBUaW1lb3V0TXMsIFhlbkhvc3QsIFByb3h5LCBQ
YXRoLCBUYXNrUmVmLA0KLSAgICAgICAgICAgICAgICBzZXNzaW9uLm9wYXF1
ZV9yZWYpKTsNCisgICAgICAgICAgICAgICAgQ2FuY2VsbGluZ0RlbGVnYXRl
LCBUaW1lb3V0TXMsIFhlbkhvc3QsIFByb3h5LCBDZXJ0aWZpY2F0ZVZhbGlk
YXRpb25DYWxsYmFjaywNCisgICAgICAgICAgICAgICAgUGF0aCwgVGFza1Jl
Ziwgc2Vzc2lvbi5vcGFxdWVfcmVmKSk7DQogICAgICAgICB9DQogDQogICAg
ICAgICAjZW5kcmVnaW9uDQpkaWZmIC0tZ2l0IGEvb2NhbWwvc2RrLWdlbi9w
b3dlcnNoZWxsL2F1dG9nZW4vc3JjL1hlblNlcnZlckNtZGxldC5jcyBiL29j
YW1sL3Nkay1nZW4vcG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9YZW5TZXJ2ZXJD
bWRsZXQuY3MKaW5kZXggZmZmYTY1YjU4Li4xNTcyYjM0NmQgMTAwNjQ0Ci0t
LSBhL29jYW1sL3Nkay1nZW4vcG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9YZW5T
ZXJ2ZXJDbWRsZXQuY3MKKysrIGIvb2NhbWwvc2RrLWdlbi9wb3dlcnNoZWxs
L2F1dG9nZW4vc3JjL1hlblNlcnZlckNtZGxldC5jcwpAQCAtMjksNyArMjks
NiBAQAogDQogDQogdXNpbmcgU3lzdGVtOw0KLXVzaW5nIFN5c3RlbS5Db2xs
ZWN0aW9uczsNCiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsN
CiB1c2luZyBTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uOw0KIA0KQEAg
LTExMywyMyArMTEyLDQ0IEBAIG5hbWVzcGFjZSBDaXRyaXguWGVuU2VydmVy
LkNvbW1hbmRzCiANCiAgICAgICAgIHByb3RlY3RlZCB2b2lkIFJ1bkFwaUNh
bGwoWGVuQXBpQ2FsbCBjYWxsKQ0KICAgICAgICAgew0KLSAgICAgICAgICAg
IHRyeQ0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTsgaSsr
KQ0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgY2FsbC5JbnZv
a2UoKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgY2F0Y2ggKEV4
Y2VwdGlvbiBlKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAg
Ly8gaWYgeW91IHdhbnQgdG8gdHJhcCBlcnJvcnMgZWl0aGVyIHNldCBjb21t
YW5kLWxpbmUgc3dpdGNoICItQmVzdEVmZm9ydCINCi0gICAgICAgICAgICAg
ICAgLy8gb3Igc2Vzc2lvbi1zdGF0ZSB2YXJpYWJsZSAiJEJlc3RFZmZvcnQi
IHRvICIkdHJ1ZSINCi0NCi0gICAgICAgICAgICAgICAgYm9vbCBiZXN0RWZm
b3J0ID0gKGJvb2wpR2V0VmFyaWFibGVWYWx1ZSgiQmVzdEVmZm9ydCIsIGZh
bHNlKSB8fCBCZXN0RWZmb3J0Ow0KLSAgICAgICAgICAgICAgICBpZiAoIWJl
c3RFZmZvcnQpDQotICAgICAgICAgICAgICAgICAgICB0aHJvdzsNCi0NCi0g
ICAgICAgICAgICAgICAgLy8gY2F0Y2ggZXhjZXB0aW9uIGFuZCB3cml0ZSBp
dCB0byB0aGUgdGVybWluYWwgdGhlbiByZXR1cm4NCi0gICAgICAgICAgICAg
ICAgLy8gZG9uJ3QgdGhyb3cgaXQgYmVjYXVzZSB0aGlzIHdpbGwgYnJlYWsg
cGlwaW5nIGEgbGlzdCBpbnRvIHRoZSBjbWQgKHdvbid0IHJ1biByZXN0IG9m
IGxpc3QpDQotDQotICAgICAgICAgICAgICAgIFRocm93VGVybWluYXRpbmdF
cnJvcihuZXcgRXJyb3JSZWNvcmQoZSwgc3RyaW5nLkVtcHR5LCBFcnJvckNh
dGVnb3J5LkludmFsaWRPcGVyYXRpb24sIG51bGwpKTsNCisgICAgICAgICAg
ICAgICAgdHJ5DQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAg
ICAgICAgIGNhbGwuSW52b2tlKCk7DQorICAgICAgICAgICAgICAgIH0NCisg
ICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQ0KKyAgICAgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoZSBpcyBDZXJ0
aWZpY2F0ZVZhbGlkYXRpb25FeGNlcHRpb24gZXgpDQorICAgICAgICAgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNob3Vs
ZENvbnRpbnVlKGV4Lk1lc3NhZ2UsIGV4LkNhcHRpb24pKQ0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNlcnRQYXRoID0gQ29tbW9uQ21kbGV0RnVuY3Rpb25zLkdldENl
cnRpZmljYXRlc1BhdGgodGhpcyk7DQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBjZXJ0aWZpY2F0ZXMgPSBDb21tb25DbWRsZXRGdW5jdGlv
bnMuTG9hZENlcnRpZmljYXRlcyhjZXJ0UGF0aCk7DQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlc1tleC5Ib3N0bmFtZV0gPSBl
eC5GaW5nZXJwcmludDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29tbW9uQ21kbGV0RnVuY3Rpb25zLlNhdmVDZXJ0aWZpY2F0ZXMoY2VydFBh
dGgsIGNlcnRpZmljYXRlcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGktLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIFRocm93VGVybWluYXRpbmdFcnJvcihuZXcgRXJy
b3JSZWNvcmQoZXgsICIiLCBFcnJvckNhdGVnb3J5LkF1dGhlbnRpY2F0aW9u
RXJyb3IsIGV4Lkhvc3RuYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg
IHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JEZXRhaWxz
ID0gbmV3IEVycm9yRGV0YWlscygkIkNlcnRpZmljYXRlIGZpbmdlcnByaW50
IHJlamVjdGVkLiAoe2V4LkZpbmdlcnByaW50fSAtIHtleC5Ib3N0bmFtZX0p
LiIpDQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQorICAgICAgICAg
ICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgICAgICAgICAvLyBpZiB5
b3Ugd2FudCB0byB0cmFwIGVycm9ycyBlaXRoZXIgc2V0IGNvbW1hbmQtbGlu
ZSBzd2l0Y2ggIi1CZXN0RWZmb3J0Ig0KKyAgICAgICAgICAgICAgICAgICAg
Ly8gb3Igc2Vzc2lvbi1zdGF0ZSB2YXJpYWJsZSAiJEJlc3RFZmZvcnQiIHRv
ICIkdHJ1ZSINCisNCisgICAgICAgICAgICAgICAgICAgIGJvb2wgYmVzdEVm
Zm9ydCA9IChib29sKUdldFZhcmlhYmxlVmFsdWUoIkJlc3RFZmZvcnQiLCBm
YWxzZSkgfHwgQmVzdEVmZm9ydDsNCisgICAgICAgICAgICAgICAgICAgIGlm
ICghYmVzdEVmZm9ydCkNCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dzsNCisNCisgICAgICAgICAgICAgICAgICAgIC8vIGNhdGNoIGV4Y2VwdGlv
biBhbmQgd3JpdGUgaXQgdG8gdGhlIHRlcm1pbmFsIHRoZW4gcmV0dXJuDQor
ICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCB0aHJvdyBpdCBiZWNhdXNl
IHRoaXMgd2lsbCBicmVhayBwaXBpbmcgYSBsaXN0IGludG8gdGhlIGNtZCAo
d29uJ3QgcnVuIHJlc3Qgb2YgbGlzdCkNCisNCisgICAgICAgICAgICAgICAg
ICAgIFRocm93VGVybWluYXRpbmdFcnJvcihuZXcgRXJyb3JSZWNvcmQoZSwg
c3RyaW5nLkVtcHR5LCBFcnJvckNhdGVnb3J5LkludmFsaWRPcGVyYXRpb24s
IG51bGwpKTsNCisgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0N
CiAgICAgICAgIH0NCiANCmRpZmYgLS1naXQgYS9vY2FtbC9zZGstZ2VuL3Bv
d2Vyc2hlbGwvYXV0b2dlbi9zcmMvWGVuU2VydmVySHR0cENtZGxldC5jcyBi
L29jYW1sL3Nkay1nZW4vcG93ZXJzaGVsbC9hdXRvZ2VuL3NyYy9YZW5TZXJ2
ZXJIdHRwQ21kbGV0LmNzCmluZGV4IDBmZGVjYmFiMC4uZmNiZjRkMThiIDEw
MDY0NAotLS0gYS9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvYXV0b2dlbi9z
cmMvWGVuU2VydmVySHR0cENtZGxldC5jcworKysgYi9vY2FtbC9zZGstZ2Vu
L3Bvd2Vyc2hlbGwvYXV0b2dlbi9zcmMvWGVuU2VydmVySHR0cENtZGxldC5j
cwpAQCAtMjksMTYgKzI5LDI0IEBACiANCiANCiB1c2luZyBTeXN0ZW07DQot
dXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQogdXNpbmcgU3lz
dGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbjsNCiB1c2luZyBTeXN0ZW0uTmV0
Ow0KLQ0KK3VzaW5nIFN5c3RlbS5OZXQuU2VjdXJpdHk7DQordXNpbmcgU3lz
dGVtLlNlY3VyaXR5LkNyeXB0b2dyYXBoeS5YNTA5Q2VydGlmaWNhdGVzOw0K
IHVzaW5nIFhlbkFQSTsNCiANCiBuYW1lc3BhY2UgQ2l0cml4LlhlblNlcnZl
ci5Db21tYW5kcw0KIHsNCiAgICAgcHVibGljIGNsYXNzIFhlblNlcnZlckh0
dHBDbWRsZXQgOiBYZW5TZXJ2ZXJDbWRsZXQNCiAgICAgew0KKyAgICAgICAg
cHJpdmF0ZSBib29sIF9oaXRvbmNlOw0KKyAgICAgICAgcHJpdmF0ZSBzdGF0
aWMgcmVhZG9ubHkgb2JqZWN0IENlcnRpZmljYXRlVmFsaWRhdGlvbkxvY2sg
PSBuZXcgb2JqZWN0KCk7DQorDQorICAgICAgICBwcm90ZWN0ZWQgWGVuU2Vy
dmVySHR0cENtZGxldCgpDQorICAgICAgICB7DQorICAgICAgICAgICAgQ2Vy
dGlmaWNhdGVWYWxpZGF0aW9uQ2FsbGJhY2sgPSBWYWxpZGF0ZVNlcnZlckNl
cnRpZmljYXRlOw0KKyAgICAgICAgfQ0KKw0KICAgICAgICAgI3JlZ2lvbiBD
bWRsZXQgUGFyYW1ldGVycw0KIA0KICAgICAgICAgW1BhcmFtZXRlcl0NCkBA
IC01Myw2ICs2MSwxNSBAQCBuYW1lc3BhY2UgQ2l0cml4LlhlblNlcnZlci5D
b21tYW5kcwogICAgICAgICBbUGFyYW1ldGVyXQ0KICAgICAgICAgcHVibGlj
IElXZWJQcm94eSBQcm94eSB7IGdldDsgc2V0OyB9DQogDQorICAgICAgICBb
UGFyYW1ldGVyXQ0KKyAgICAgICAgcHVibGljIFJlbW90ZUNlcnRpZmljYXRl
VmFsaWRhdGlvbkNhbGxiYWNrIENlcnRpZmljYXRlVmFsaWRhdGlvbkNhbGxi
YWNrIHsgZ2V0OyBzZXQ7IH0NCisNCisgICAgICAgIFtQYXJhbWV0ZXJdDQor
ICAgICAgICBwdWJsaWMgU3dpdGNoUGFyYW1ldGVyIE5vV2Fybk5ld0NlcnRp
ZmljYXRlcyB7IGdldDsgc2V0OyB9DQorDQorICAgICAgICBbUGFyYW1ldGVy
XQ0KKyAgICAgICAgcHVibGljIFN3aXRjaFBhcmFtZXRlciBOb1dhcm5DZXJ0
aWZpY2F0ZXMgeyBnZXQ7IHNldDsgfQ0KKw0KICAgICAgICAgW1BhcmFtZXRl
cihNYW5kYXRvcnkgPSB0cnVlKV0NCiAgICAgICAgIHB1YmxpYyBzdHJpbmcg
UGF0aCB7IGdldDsgc2V0OyB9DQogDQpAQCAtNjAsNSArNzcsNTUgQEAgbmFt
ZXNwYWNlIENpdHJpeC5YZW5TZXJ2ZXIuQ29tbWFuZHMKICAgICAgICAgcHVi
bGljIHN0cmluZyBUYXNrUmVmIHsgZ2V0OyBzZXQ7IH0NCiANCiAgICAgICAg
ICNlbmRyZWdpb24NCisNCisgICAgICAgIHByaXZhdGUgYm9vbCBWYWxpZGF0
ZVNlcnZlckNlcnRpZmljYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0aWZp
Y2F0ZSBjZXJ0aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lF
cnJvcnMgc3NsUG9saWN5RXJyb3JzKQ0KKyAgICAgICAgew0KKyAgICAgICAg
ICAgIHRyeQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgaWYg
KHNzbFBvbGljeUVycm9ycyA9PSBTc2xQb2xpY3lFcnJvcnMuTm9uZSkNCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKw0KKyAgICAgICAg
ICAgICAgICBzdHJpbmcgZmluZ2VycHJpbnRUb0NoZWNrID0gQ29tbW9uQ21k
bGV0RnVuY3Rpb25zLkZpbmdlcnByaW50UHJldHR5U3RyaW5nKGNlcnRpZmlj
YXRlLkdldENlcnRIYXNoU3RyaW5nKCkpOw0KKw0KKyAgICAgICAgICAgICAg
ICBsb2NrIChDZXJ0aWZpY2F0ZVZhbGlkYXRpb25Mb2NrKQ0KKyAgICAgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICB2YXIgY2VydFBhdGgg
PSBDb21tb25DbWRsZXRGdW5jdGlvbnMuR2V0Q2VydGlmaWNhdGVzUGF0aCh0
aGlzKTsNCisgICAgICAgICAgICAgICAgICAgIHZhciBjZXJ0aWZpY2F0ZXMg
PSBDb21tb25DbWRsZXRGdW5jdGlvbnMuTG9hZENlcnRpZmljYXRlcyhjZXJ0
UGF0aCk7DQorDQorICAgICAgICAgICAgICAgICAgICBpZiAoY2VydGlmaWNh
dGVzLlRyeUdldFZhbHVlKFhlbkhvc3QsIG91dCB2YXIgaG9zdEZpbmdlcnBy
aW50KSkNCisgICAgICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZmluZ2VycHJpbnRUb0NoZWNrID09IGhvc3RGaW5n
ZXJwcmludCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25v
cmVDaGFuZ2VkID0gTm9XYXJuQ2VydGlmaWNhdGVzIHx8IChib29sKUdldFZh
cmlhYmxlVmFsdWUoIk5vV2FybkNlcnRpZmljYXRlcyIsIGZhbHNlKTsNCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZUNoYW5nZWQpDQor
ICAgICAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoX2hpdG9uY2UpDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCQie1hlbkhvc3R9
IGlzIG5vdCB0aGUgY29ycmVjdCBzZXJ2ZXIgZm9yIHRoaXMgb3BlcmF0aW9u
LiBQbGVhc2Ugc3BlY2lmeSBhIGRpZmZlcmVudCBzZXJ2ZXIgaW4gdGhlIHBv
b2wuIik7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0
cnVzdGVkID0gQ29tbW9uQ21kbGV0RnVuY3Rpb25zLlZlcmlmeUluQWxsU3Rv
cmVzKG5ldyBYNTA5Q2VydGlmaWNhdGUyKGNlcnRpZmljYXRlKSk7DQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDZXJ0aWZpY2F0
ZUNoYW5nZWRFeGNlcHRpb24oZmluZ2VycHJpbnRUb0NoZWNrLCB0cnVzdGVk
LCBYZW5Ib3N0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAg
ICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBlbHNl
DQorICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpZ25vcmVOZXcgPSBOb1dhcm5OZXdDZXJ0aWZpY2F0ZXMg
fHwgKGJvb2wpR2V0VmFyaWFibGVWYWx1ZSgiTm9XYXJuTmV3Q2VydGlmaWNh
dGVzIiwgZmFsc2UpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
aWdub3JlTmV3KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRydXN0ZWQgPSBDb21tb25D
bWRsZXRGdW5jdGlvbnMuVmVyaWZ5SW5BbGxTdG9yZXMobmV3IFg1MDlDZXJ0
aWZpY2F0ZTIoY2VydGlmaWNhdGUpKTsNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IENlcnRpZmljYXRlTm90Rm91bmRFeGNlcHRp
b24oZmluZ2VycHJpbnRUb0NoZWNrLCB0cnVzdGVkLCBYZW5Ib3N0KTsNCisg
ICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAg
ICB9DQorDQorICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZXNbWGVu
SG9zdF0gPSBmaW5nZXJwcmludFRvQ2hlY2s7DQorICAgICAgICAgICAgICAg
ICAgICBDb21tb25DbWRsZXRGdW5jdGlvbnMuU2F2ZUNlcnRpZmljYXRlcyhj
ZXJ0UGF0aCwgY2VydGlmaWNhdGVzKTsNCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAg
ICAgfQ0KKyAgICAgICAgICAgIGZpbmFsbHkNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgICAgIF9oaXRvbmNlID0gdHJ1ZTsNCisgICAgICAgICAg
ICB9DQorICAgICAgICB9DQogICAgIH0NCiB9DQpkaWZmIC0tZ2l0IGEvb2Nh
bWwvc2RrLWdlbi9wb3dlcnNoZWxsL3RlbXBsYXRlcy9IdHRwQWN0aW9uLm11
c3RhY2hlIGIvb2NhbWwvc2RrLWdlbi9wb3dlcnNoZWxsL3RlbXBsYXRlcy9I
dHRwQWN0aW9uLm11c3RhY2hlCmluZGV4IGUzNDZhNjhiOC4uNDBiNWI4OTc3
IDEwMDY0NAotLS0gYS9vY2FtbC9zZGstZ2VuL3Bvd2Vyc2hlbGwvdGVtcGxh
dGVzL0h0dHBBY3Rpb24ubXVzdGFjaGUKKysrIGIvb2NhbWwvc2RrLWdlbi9w
b3dlcnNoZWxsL3RlbXBsYXRlcy9IdHRwQWN0aW9uLm11c3RhY2hlCkBAIC03
MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBDaXRyaXguWGVuU2VydmVyLkNvbW1h
bmRzCiB7ey9pc1B1dH19CiAKICAgICAgICAgICAgIFJ1bkFwaUNhbGwoKCkg
PT4gSFRUUF9hY3Rpb25zLnt7YWN0aW9uX25hbWV9fSh7eyNpc1B1dH19UHJv
Z3Jlc3NEZWxlZ2F0ZXt7L2lzUHV0fX17eyNpc0dldH19RGF0YUNvcGllZERl
bGVnYXRle3svaXNHZXR9fSwKLSAgICAgICAgICAgICAgICBDYW5jZWxsaW5n
RGVsZWdhdGUsIFRpbWVvdXRNcywgWGVuSG9zdCwgUHJveHksIFBhdGgsIFRh
c2tSZWYsCisgICAgICAgICAgICAgICAgQ2FuY2VsbGluZ0RlbGVnYXRlLCBU
aW1lb3V0TXMsIFhlbkhvc3QsIFByb3h5LCBDZXJ0aWZpY2F0ZVZhbGlkYXRp
b25DYWxsYmFjaywgUGF0aCwgVGFza1JlZiwKICAgICAgICAgICAgICAgICBz
ZXNzaW9uLm9wYXF1ZV9yZWZ7eyNhcmdzfX0sIHt7YXJnX25hbWV9fXt7L2Fy
Z3N9fSkpOwogICAgICAgICB9CiAK

--=separator--