[utilities/krusader] /: refactor: fix variable shadowing

Toni Asensi Esteve <[email protected]> Tue, 4 Aug 2026 20:52:49 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
R2l0IGNvbW1pdCBiMGRjYjc4ZDVjZGM3MzE4YTcyZDY4ODA3Y2I3Njc1YWZiOTE1ZjIwIGJ5IFRv
bmkgQXNlbnNpIEVzdGV2ZSwgb24gYmVoYWxmIG9mIE1hZ29tZWQgR2FkemhpdW1hcm92LgpDb21t
aXR0ZWQgb24gMDQvMDgvMjAyNiBhdCAyMDo1Mi4KUHVzaGVkIGJ5IGFzZW5zaSBpbnRvIGJyYW5j
aCAnbWFzdGVyJy4KCnJlZmFjdG9yOiBmaXggdmFyaWFibGUgc2hhZG93aW5nCgoqKlN1bW1hcnk6
KiogUmVzb2x2ZWQgdmFyaWFibGUgc2hhZG93aW5nIHdhcm5pbmdzLgoKKipXaHk6KiogVGhpcyBp
cyBwYXJ0IG9mIHRoZSAiSnVuaW9yIEpvYiIgdGFzayB0byBtb2Rlcm5pemUgdGhlIGNvZGViYXNl
IGFuZCBjbGVhbiB1cCBjb21waWxlciB3YXJuaW5ncy4gRml4aW5nIHZhcmlhYmxlIHNoYWRvd2lu
ZyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBwcmV2ZW50cyBzdWJ0bGUgbG9naWMgZXJyb3JzIHdo
ZXJlIGEgbG9jYWwgdmFyaWFibGUgdW5pbnRlbnRpb25hbGx5IGhpZGVzIGEgY2xhc3MgbWVtYmVy
IG9yIGFuIG91dGVyIHNjb3BlIHZhcmlhYmxlLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByb2J1c3Qg
YW5kIGVhc2llciB0byByZWFkLgoKKipDaGFuZ2VzOioqCgoqIFJlbmFtZWQgbG9jYWwgdmFyaWFi
bGVzIGluIGBhcHBgIGFuZCBgcGx1Z2luc2AgdGhhdCB3ZXJlIHRyaWdnZXJpbmcgYC1Xc2hhZG93
YCB3YXJuaW5ncy4KKiBWZXJpZmllZCB0aGUgZml4IGJ5IGNvbXBpbGluZyB3aXRoIGAtV3NoYWRv
d2AgZW5hYmxlZCB1c2luZyBib3RoICoqR0NDKiogKGcrKyAxNi4xLjEpLgoqIFBlcmZvcm1lZCBh
IHNtb2tlIHRlc3Qgb2YgdGhlIFVJIChLb25maWd1cmF0b3Igc2V0dGluZ3MgYW5kIFBhbmVsIHJl
bmRlcmluZykgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIHdlcmUgaW50cm9kdWNlZCBieSByZW5h
bWluZy4KCioqUmV2aXNpb246KiogaHR0cHM6Ly9pbnZlbnQua2RlLm9yZy91dGlsaXRpZXMva3J1
c2FkZXIvLS9tZXJnZV9yZXF1ZXN0cy8xODQKCk0gICsxICAgIC0xICAgIENNYWtlTGlzdHMudHh0
Ck0gICs2ICAgIC02ICAgIGFwcC9BY3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcApNICAr
OSAgICAtMTEgICBhcHAvQm9va01hbi9rcmJvb2ttYXJraGFuZGxlci5jcHAKTSAgKzIgICAgLTIg
ICAgYXBwL0RpYWxvZ3MvY2hlY2tzdW1kbGcuY3BwCk0gICsyICAgIC0yICAgIGFwcC9EaWFsb2dz
L3BhY2tndWkuY3BwCk0gICsxMCAgIC0xMCAgIGFwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5j
cHAKTSAgKzYgICAgLTYgICAgYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvc2VnbWVudFRpcC5jcHAK
TSAgKzAgICAgLTEgICAgYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcApN
ICArMiAgICAtMiAgICBhcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcApNICArMiAgICAtMiAg
ICBhcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKTSAgKzMgICAgLTMgICAgYXBw
L0ZpbHRlci9hZHZhbmNlZGZpbHRlci5jcHAKTSAgKzMgICAgLTMgICAgYXBwL0ZpbHRlci9maWx0
ZXJ0YWJzLmNwcApNICArMSAgICAtMSAgICBhcHAvRmlsdGVyL2ZpbHRlcnRhYnMuaApNICArMTcg
ICAtMTcgICBhcHAvRmlsdGVyL2dlbmVyYWxmaWx0ZXIuY3BwCk0gICsxICAgIC0xICAgIGFwcC9G
aWx0ZXIvZ2VuZXJhbGZpbHRlci5oCk0gICsxICAgIC0xICAgIGFwcC9HVUkva2Zua2V5cy5jcHAK
TSAgKzEgICAgLTEgICAgYXBwL0dVSS9rZm5rZXlzLmgKTSAgKzE1ICAgLTE1ICAgYXBwL0dVSS9w
cm9maWxlbWFuYWdlci5jcHAKTSAgKzEgICAgLTEgICAgYXBwL0dVSS9wcm9maWxlbWFuYWdlci5o
Ck0gICsxMiAgIC0xMiAgIGFwcC9Lb25maWd1cmF0b3Iva2dwcm90b2NvbHMuY3BwCk0gICszMCAg
IC0yNCAgIGFwcC9Lb25maWd1cmF0b3Iva29uZmlndXJhdG9yaXRlbXMuY3BwCk0gICsyMiAgIC0x
MiAgIGFwcC9Lb25maWd1cmF0b3Iva29uZmlndXJhdG9yaXRlbXMuaApNICArMyAgICAtMyAgICBh
cHAvS29uZmlndXJhdG9yL2tycmVzdWx0dGFibGUuY3BwCk0gICs5ICAgIC03ICAgIGFwcC9LclZp
ZXdlci9saXN0ZXIuY3BwCk0gICsyNiAgIC0yMCAgIGFwcC9LclZpZXdlci9wYW5lbHZpZXdlci5j
cHAKTSAgKzIzICAgLTIzICAgYXBwL01vdW50TWFuL2ttb3VudG1hbmd1aS5jcHAKTSAgKzM4ICAg
LTQwICAgYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQuY3BwCk0gICsxNCAgIC0xNCAgIGFwcC9Q
YW5lbC9QYW5lbFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAKTSAgKzIwICAgLTMgICAgYXBwL1Bh
bmVsL1BhbmVsVmlldy9rcnZpZXdwcm9wZXJ0aWVzLmgKTSAgKzMgICAgLTMgICAgYXBwL1BhbmVs
L2tybGF5b3V0ZmFjdG9yeS5oCk0gICsyICAgIC0yICAgIGFwcC9QYW5lbC9rcnBhbmVsLmgKTSAg
KzIgICAgLTQgICAgYXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcApNICArOCAgICAtOCAgICBhcHAv
UGFuZWwvbGlzdHBhbmVsLmNwcApNICArMyAgICAtMyAgICBhcHAvUGFuZWwvbGlzdHBhbmVsZnJh
bWUuY3BwCk0gICsxMiAgIC0xMiAgIGFwcC9QYW5lbC9wYW5lbGNvbnRleHRtZW51LmNwcApNICAr
OCAgICAtOSAgICBhcHAvUGFuZWwvcGFuZWxmdW5jLmNwcApNICArMSAgICAtMiAgICBhcHAvU2Vh
cmNoL2tyc2VhcmNoZGlhbG9nLmNwcApNICArNyAgICAtNyAgICBhcHAvU2VhcmNoL2tyc2VhcmNo
bW9kLmNwcApNICArMTcgICAtMTYgICBhcHAvU3BsaXR0ZXIvY29tYmluZXIuY3BwCk0gICszICAg
IC0zICAgIGFwcC9TcGxpdHRlci9zcGxpdHRlcmd1aS5jcHAKTSAgKzQ2ICAgLTQ2ICAgYXBwL1N5
bmNocm9uaXplci9zeW5jaHJvbml6ZXIuY3BwCk0gICsxMCAgIC0xMCAgIGFwcC9TeW5jaHJvbml6
ZXIvc3luY2hyb25pemVyLmgKTSAgKzggICAgLTggICAgYXBwL1N5bmNocm9uaXplci9zeW5jaHJv
bml6ZXJ0YXNrLmNwcApNICArMiAgICAtMiAgICBhcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXpl
cnRhc2suaApNICArMjEgICAtMTUgICBhcHAvaWNvbi5jcHAKTSAgKzYgICAgLTggICAgYXBwL2ty
ZGVidWdsb2dnZXIuY3BwCk0gICszICAgIC01ICAgIGFwcC9rcmRlYnVnbG9nZ2VyLmgKTSAgKzUg
ICAgLTUgICAgYXBwL2tydXNhZGVyLmNwcApNICArMiAgICAtMiAgICBhcHAva3J1c2FkZXIuaApN
ICArMCAgICAtMSAgICBhcHAvbWFpbi5jcHAKTSAgKzI3MCAgLTI3MCAgcGx1Z2lucy9rcmFyYy9r
cmFyYy5jcHAKTSAgKzE5ICAgLTE5ICAgcGx1Z2lucy9rcmFyYy9rcmFyYy5oCgpodHRwczovL2lu
dmVudC5rZGUub3JnL3V0aWxpdGllcy9rcnVzYWRlci8tL2NvbW1pdC9iMGRjYjc4ZDVjZGM3MzE4
YTcyZDY4ODA3Y2I3Njc1YWZiOTE1ZjIwCgpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9D
TWFrZUxpc3RzLnR4dAppbmRleCAxMDlmZDdiYjEuLmYwZjdiYTI2ZCAxMDA2NDQKLS0tIGEvQ01h
a2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTE0Myw3ICsxNDMsNyBAQCBpZiAo
Q01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQogICAgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01B
S0VfQ1hYX0ZMQUdTfSAtV2FsbCAtV2V4dHJhIC1mbm8tY29tbW9uIC1hbnNpIC1XcGVkYW50aWMg
LVdjb252ZXJzaW9uIC1XcG9pbnRlci1hcml0aCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
LVdjYXN0LXF1YWwgLVdjYXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncyAtV3N1Z2dlc3Qtb3ZlcnJp
ZGUgLVdmbG9hdC1lcXVhbCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgLVdvdmVybG9hZGVk
LXZpcnR1YWwgLVd1bmRlZiAtV2xvZ2ljYWwtb3AgLVd1bmluaXRpYWxpemVkIC1XcmVkdW5kYW50
LWRlY2xzIC1Xbm9leGNlcHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm9uLXZpcnR1
YWwtZHRvciAtV2N0b3ItZHRvci1wcml2YWN5IC1XemVyby1hcy1udWxsLXBvaW50ZXItY29uc3Rh
bnQgLVdzaWduLXByb21vIiBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgLVdub24tdmlydHVhbC1kdG9yIC1XY3Rvci1kdG9yLXByaXZhY3kgLVd6ZXJvLWFz
LW51bGwtcG9pbnRlci1jb25zdGFudCAtV3NpZ24tcHJvbW8gLVdzaGFkb3ciIENBQ0hFIFNUUklO
RyAiIiBGT1JDRSkKIGVuZGlmKCkKIAogcmVtb3ZlX2RlZmluaXRpb25zKC1EUVRfTk9fS0VZV09S
RFMgIC1EUVRfTk9fQ0FTVF9GUk9NX0FTQ0lJIC1EUVRfTk9fQ0FTVF9UT19BU0NJSSkKZGlmZiAt
LWdpdCBhL2FwcC9BY3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcCBiL2FwcC9BY3Rpb25N
YW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcAppbmRleCA1ZWZjNjEzOTguLjYzYmIyNWEwOSAxMDA2
NDQKLS0tIGEvYXBwL0FjdGlvbk1hbi91c2VyYWN0aW9ubGlzdHZpZXcuY3BwCisrKyBiL2FwcC9B
Y3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcApAQCAtMTg2LDE2ICsxODYsMTYgQEAgdm9p
ZCBVc2VyQWN0aW9uTGlzdFZpZXc6OnJlbW92ZVNlbGVjdGVkQWN0aW9ucygpCiAKIC8vIFVzZXJB
Y3Rpb25MaXN0Vmlld0l0ZW0KIAotVXNlckFjdGlvbkxpc3RWaWV3SXRlbTo6VXNlckFjdGlvbkxp
c3RWaWV3SXRlbShRVHJlZVdpZGdldCAqdmlldywgS3JBY3Rpb24gKmFjdGlvbikKLSAgICA6IFFU
cmVlV2lkZ2V0SXRlbSh2aWV3KQorVXNlckFjdGlvbkxpc3RWaWV3SXRlbTo6VXNlckFjdGlvbkxp
c3RWaWV3SXRlbShRVHJlZVdpZGdldCAqaW5pdFZpZXcsIEtyQWN0aW9uICppbml0QWN0aW9uKQor
ICAgIDogUVRyZWVXaWRnZXRJdGVtKGluaXRWaWV3KQogewotICAgIHNldEFjdGlvbihhY3Rpb24p
OworICAgIHNldEFjdGlvbihpbml0QWN0aW9uKTsKIH0KIAotVXNlckFjdGlvbkxpc3RWaWV3SXRl
bTo6VXNlckFjdGlvbkxpc3RWaWV3SXRlbShRVHJlZVdpZGdldEl0ZW0gKml0ZW0sIEtyQWN0aW9u
ICphY3Rpb24pCi0gICAgOiBRVHJlZVdpZGdldEl0ZW0oaXRlbSkKK1VzZXJBY3Rpb25MaXN0Vmll
d0l0ZW06OlVzZXJBY3Rpb25MaXN0Vmlld0l0ZW0oUVRyZWVXaWRnZXRJdGVtICppbml0SXRlbSwg
S3JBY3Rpb24gKmluaXRBY3Rpb24pCisgICAgOiBRVHJlZVdpZGdldEl0ZW0oaW5pdEl0ZW0pCiB7
Ci0gICAgc2V0QWN0aW9uKGFjdGlvbik7CisgICAgc2V0QWN0aW9uKGluaXRBY3Rpb24pOwogfQog
CiBVc2VyQWN0aW9uTGlzdFZpZXdJdGVtOjp+VXNlckFjdGlvbkxpc3RWaWV3SXRlbSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL2FwcC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcCBiL2Fw
cC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcAppbmRleCA4NGNjMWZhMDIuLmM1YjcxOTUz
YSAxMDA2NDQKLS0tIGEvYXBwL0Jvb2tNYW4va3Jib29rbWFya2hhbmRsZXIuY3BwCisrKyBiL2Fw
cC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQg
S3JCb29rbWFya0hhbmRsZXI6OmV4cG9ydFRvRmlsZSgpCiAgICAgUUZpbGUgZmlsZShmaWxlbmFt
ZSk7CiAgICAgaWYgKGZpbGUub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSkpIHsKICAgICAgICAg
UVRleHRTdHJlYW0gc3RyZWFtKCZmaWxlKTsKLSAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVURi04
IGlzIHVzZWQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaW4gUVRleHRTdHJlYW0KKyAgICAgICAg
Ly8gQnkgZGVmYXVsdCwgVVRGLTggaXMgdXNlZCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBpbiBR
VGV4dFN0cmVhbQogICAgICAgICBzdHJlYW0gPDwgZG9jLnRvU3RyaW5nKCk7CiAgICAgICAgIGZp
bGUuY2xvc2UoKTsKICAgICB9IGVsc2UgewpAQCAtNDQ3LDE4ICs0NDcsMTcgQEAgdm9pZCBLckJv
b2ttYXJrSGFuZGxlcjo6YnVpbGRNZW51KEtyQm9va21hcmsgKnBhcmVudCwgUU1lbnUgKm1lbnUs
IGludCBkZXB0aCkKICAgICAgICAgICAgIC8vIGFkZCB0aGUgdG9wIDE1IHVybHMKICNkZWZpbmUg
TUFYIDE1CiAgICAgICAgICAgICBRTGlzdDxRVXJsPiBsaXN0ID0gX21haW5XaW5kb3ctPnBvcHVs
YXJVcmxzKCktPmdldE1vc3RQb3B1bGFyVXJscyhNQVgpOwotICAgICAgICAgICAgUUxpc3Q8UVVy
bD46Okl0ZXJhdG9yIGl0OwotICAgICAgICAgICAgZm9yIChpdCA9IGxpc3QuYmVnaW4oKTsgaXQg
IT0gbGlzdC5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgZm9yIChjb25zdCBRVXJsICZ1cmwg
OiBsaXN0KSB7CiAgICAgICAgICAgICAgICAgUVN0cmluZyBuYW1lOwotICAgICAgICAgICAgICAg
IGlmICgoKml0KS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gKCpp
dCkucGF0aCgpOworICAgICAgICAgICAgICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IHVybC5wYXRoKCk7CiAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBuYW1lID0gKCppdCkudG9EaXNwbGF5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgLy8gbm90ZTogdGhlc2UgYm9va21hcmsgYXJlIHB1dCBpbnRvIHRoZSBwcml2
YXRlIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHVybC50b0Rpc3BsYXlT
dHJpbmcoKTsKKyAgICAgICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBib29rbWFyayBhcmUgcHV0
IGludG8gdGhlIHByaXZhdGUgY29sbGVjdGlvbgogICAgICAgICAgICAgICAgIC8vIGFzIHRvIG5v
dCBzcGFtIHRoZSBnZW5lcmFsIGNvbGxlY3Rpb24KICAgICAgICAgICAgICAgICBLckJvb2ttYXJr
ICpibSA9IEtyQm9va21hcms6OmdldEV4aXN0aW5nQm9va21hcmsobmFtZSwgX3ByaXZhdGVDb2xs
ZWN0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIWJtKQotICAgICAgICAgICAgICAgICAgICBi
bSA9IG5ldyBLckJvb2ttYXJrKG5hbWUsICppdCwgX3ByaXZhdGVDb2xsZWN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgYm0gPSBuZXcgS3JCb29rbWFyayhuYW1lLCB1cmwsIF9wcml2YXRlQ29s
bGVjdGlvbik7CiAgICAgICAgICAgICAgICAgbmV3TWVudS0+YWRkQWN0aW9uKGJtKTsKICAgICAg
ICAgICAgICAgICBDT05ORUNUX0JNKGJtKTsKICAgICAgICAgICAgIH0KQEAgLTcxNCw4ICs3MTMs
NyBAQCBib29sIEtyQm9va21hcmtIYW5kbGVyOjpldmVudEZpbHRlcihRT2JqZWN0ICpvYmosIFFF
dmVudCAqZXYpCiAgICAgICAgIHN3aXRjaCAoZHluYW1pY19jYXN0PFFNb3VzZUV2ZW50ICo+KGV2
KS0+YnV0dG9uKCkpIHsKICAgICAgICAgY2FzZSBRdDo6UmlnaHRCdXR0b246CiAgICAgICAgICAg
ICBfbWlkZGxlQ2xpY2sgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCJR
TWVudSIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byAqbWVudSA9IGR5bmFtaWNfY2FzdDxRTWVu
dSAqPihvYmopOworICAgICAgICAgICAgaWYgKG1lbnUgIT0gbnVsbHB0cikgewogICAgICAgICAg
ICAgICAgIFFBY3Rpb24gKmFjdCA9IG1lbnUtPmFjdGlvbkF0KGR5bmFtaWNfY2FzdDxRTW91c2VF
dmVudCAqPihldiktPnBvcygpKTsKIAogICAgICAgICAgICAgICAgIGlmIChvYmogPT0gX21haW5C
b29rbWFya1BvcHVwICYmIF9zcGVjaWFsQm9va21hcmtzLmNvbnRhaW5zKGFjdCkpIHsKQEAgLTcy
OCw3ICs3MjYsNyBAQCBib29sIEtyQm9va21hcmtIYW5kbGVyOjpldmVudEZpbHRlcihRT2JqZWN0
ICpvYmosIFFFdmVudCAqZXYpCiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2xpY2tlZChtZW51
LCBibSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoYWN0ICYmIGFjdC0+ZGF0YSgpLmNhbkNvbnZlcnQ8S3JCb29rbWFyayAqPigp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gKmJtID0gYWN0LT5kYXRhKCkudmFsdWU8S3JC
b29rbWFyayAqPigpOworICAgICAgICAgICAgICAgICAgICBibSA9IGFjdC0+ZGF0YSgpLnZhbHVl
PEtyQm9va21hcmsgKj4oKTsKICAgICAgICAgICAgICAgICAgICAgcmlnaHRDbGlja2VkKG1lbnUs
IGJtKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hcHAv
RGlhbG9ncy9jaGVja3N1bWRsZy5jcHAgYi9hcHAvRGlhbG9ncy9jaGVja3N1bWRsZy5jcHAKaW5k
ZXggODlhOGYxMTA5Li4wNjVjZDhiNDEgMTAwNjQ0Ci0tLSBhL2FwcC9EaWFsb2dzL2NoZWNrc3Vt
ZGxnLmNwcAorKysgYi9hcHAvRGlhbG9ncy9jaGVja3N1bWRsZy5jcHAKQEAgLTM5MSw3ICszOTEs
NyBAQCBib29sIENyZWF0ZVdpemFyZDo6c2F2ZVBlckZpbGUoKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIENyZWF0ZVdpemFyZDo6c2F2ZUNoZWNrc3VtRmlsZShjb25zdCBRU3RyaW5nTGlz
dCAmZGF0YSwgY29uc3QgUVN0cmluZyAmZmlsZW5hbWUpCitib29sIENyZWF0ZVdpemFyZDo6c2F2
ZUNoZWNrc3VtRmlsZShjb25zdCBRU3RyaW5nTGlzdCAmY2hlY2tzdW1MaW5lcywgY29uc3QgUVN0
cmluZyAmZmlsZW5hbWUpCiB7CiAgICAgUVN0cmluZyBmaWxlUGF0aCA9IGZpbGVuYW1lLmlzRW1w
dHkoKSA/IG1fc3VnZ2VzdGVkRmlsZVBhdGggOiBmaWxlbmFtZTsKICAgICBpZiAoZmlsZW5hbWUu
aXNFbXB0eSgpIHx8IFFGaWxlOjpleGlzdHMoZmlsZVBhdGgpKSB7CkBAIC00MDMsNyArNDAzLDcg
QEAgYm9vbCBDcmVhdGVXaXphcmQ6OnNhdmVDaGVja3N1bUZpbGUoY29uc3QgUVN0cmluZ0xpc3Qg
JmRhdGEsIGNvbnN0IFFTdHJpbmcgJmZpbGUKICAgICBRRmlsZSBmaWxlKGZpbGVQYXRoKTsKICAg
ICBpZiAoZmlsZS5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KSkgewogICAgICAgICBRVGV4dFN0
cmVhbSBzdHJlYW0oJmZpbGUpOwotICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJmxpbmUgOiBk
YXRhKQorICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJmxpbmUgOiBjaGVja3N1bUxpbmVzKQog
ICAgICAgICAgICAgc3RyZWFtIDw8IGxpbmUgPDwgIlxuIjsKICAgICAgICAgZmlsZS5jbG9zZSgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL2FwcC9EaWFsb2dzL3BhY2tndWkuY3BwIGIvYXBwL0RpYWxv
Z3MvcGFja2d1aS5jcHAKaW5kZXggNTMyYzM3ODQzLi5hMWUzODE3ZTIgMTAwNjQ0Ci0tLSBhL2Fw
cC9EaWFsb2dzL3BhY2tndWkuY3BwCisrKyBiL2FwcC9EaWFsb2dzL3BhY2tndWkuY3BwCkBAIC0z
MywxMiArMzMsMTIgQEAgUVN0cmluZyBQYWNrR1VJOjpkZXN0aW5hdGlvbiA9IG51bGxwdHI7CiBR
U3RyaW5nIFBhY2tHVUk6OnR5cGUgPSBudWxscHRyOwogUU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBQ
YWNrR1VJOjpleHRyYVByb3BzOwogCi1QYWNrR1VJOjpQYWNrR1VJKGNvbnN0IFFTdHJpbmcgJmRl
ZmF1bHROYW1lLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0UGF0aCwgcXNpemV0eXBlIG5vT2ZGaWxl
cywgY29uc3QgUVN0cmluZyAmZmlsZW5hbWUpCitQYWNrR1VJOjpQYWNrR1VJKGNvbnN0IFFTdHJp
bmcgJmRlZmF1bHROYW1lLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0UGF0aCwgcXNpemV0eXBlIG5v
T2ZGaWxlcywgY29uc3QgUVN0cmluZyAmZmlsZU5hbWUpCiAgICAgOiBQYWNrR1VJQmFzZShudWxs
cHRyKQogewogICAgIC8vIGZpcnN0LCBmaWxsIHRoZSBXaGF0VG9QYWNrIHRleHRmaWVsZCB3aXRo
IGluZm9ybWF0aW9uCiAgICAgaWYgKG5vT2ZGaWxlcyA9PSAxKQotICAgICAgICBUZXh0TGFiZWwx
LT5zZXRUZXh0KGkxOG4oIlBhY2sgJTEiLCBmaWxlbmFtZSkpOworICAgICAgICBUZXh0TGFiZWwx
LT5zZXRUZXh0KGkxOG4oIlBhY2sgJTEiLCBmaWxlTmFtZSkpOwogICAgIGVsc2UKICAgICAgICAg
VGV4dExhYmVsMS0+c2V0VGV4dChpMThucCgiUGFjayAlMSBmaWxlIiwgIlBhY2sgJTEgZmlsZXMi
LCBub09mRmlsZXMpKTsKIApkaWZmIC0tZ2l0IGEvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvbWFw
LmNwcCBiL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5jcHAKaW5kZXggYTE3NjA5ODM3Li41
ZGEyZWU0YTMgMTAwNjQ0Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5jcHAKKysr
IGIvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvbWFwLmNwcApAQCAtMjc3LDkgKzI3Nyw5IEBAIHZv
aWQgUmFkaWFsTWFwOjpNYXA6OnBhaW50KHVuc2lnbmVkIGludCBzY2FsZUZhY3RvcikKICAgICBm
aWxsKCk7IC8vIGVyYXNlIGJhY2tncm91bmQKIAogICAgIGZvciAoaW50IHggPSBtX3Zpc2libGVE
ZXB0aDsgeCA+PSAwOyAtLXgpIHsKLSAgICAgICAgaW50IHdpZHRoID0gcmVjdC53aWR0aCgpIC8g
MjsKKyAgICAgICAgaW50IGJhc2VSYWRpdXMgPSByZWN0LndpZHRoKCkgLyAyOwogICAgICAgICAv
LyBjbGV2ZXIgZ2VvbWV0cmljIHRyaWNrIHRvIGZpbmQgbGFyZ2VzdCBhbmdsZSB0aGF0IHdpbGwg
Z2l2ZSBiaWdnZXN0IGFycm93IGhlYWQKLSAgICAgICAgYXV0byBhX21heCA9IHN0YXRpY19jYXN0
PGludD4oYWNvcygoZG91YmxlKXdpZHRoIC8gZG91YmxlKCh3aWR0aCArIDUpICogc2NhbGVGYWN0
b3IpKSAqICgxODAgKiAxNiAvIE1fUEkpKTsKKyAgICAgICAgYXV0byBhX21heCA9IHN0YXRpY19j
YXN0PGludD4oYWNvcygoZG91YmxlKWJhc2VSYWRpdXMgLyBkb3VibGUoKGJhc2VSYWRpdXMgKyA1
KSAqIHNjYWxlRmFjdG9yKSkgKiAoMTgwICogMTYgLyBNX1BJKSk7CiAKICAgICAgICAgZm9yIChD
b25zdEl0ZXJhdG9yPFNlZ21lbnQ+IGl0ID0gbV9zaWduYXR1cmVbeF0uY29uc3RJdGVyYXRvcigp
OyBpdCAhPSBtX3NpZ25hdHVyZVt4XS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgLy8gZHJh
dyB0aGUgcGllIHNlZ21lbnRzLCBtb3N0IG9mIHRoaXMgY29kZSBpcyBjb25jZXJuZWQgd2l0aCBk
cmF3aW5nIHRoZSBsaXR0bGUKQEAgLTMwMSwxNSArMzAxLDE1IEBAIHZvaWQgUmFkaWFsTWFwOjpN
YXA6OnBhaW50KHVuc2lnbmVkIGludCBzY2FsZUZhY3RvcikKIAogICAgICAgICAgICAgICAgIGFb
MV0gKz0gYVswXTsKIAotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCByYWRpdXMgPSB3
aWR0aDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCBjdXJy
ZW50UmFkaXVzID0gYmFzZVJhZGl1czsgaSA8IDM7ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgcmEgPSBNX1BJIC8gKDE4MCAqIDE2KSAqIGFbaV0sIHNpbnJhLCBjb3NyYTsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmFkaXVzICs9IDUgKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRSYWRpdXMgKz0gNSAqIHNjYWxlRmFjdG9yOwogICAgICAgICAgICAgICAgICAgICBzaW5yYSA9
IHNpbihyYSk7CiAgICAgICAgICAgICAgICAgICAgIGNvc3JhID0gY29zKHJhKTsKLSAgICAgICAg
ICAgICAgICAgICAgcG9zLnJ4KCkgPSBjcG9zLngoKSArIHN0YXRpY19jYXN0PGludD4oY29zcmEg
KiByYWRpdXMpOwotICAgICAgICAgICAgICAgICAgICBwb3MucnkoKSA9IGNwb3MueSgpIC0gc3Rh
dGljX2Nhc3Q8aW50PihzaW5yYSAqIHJhZGl1cyk7CisgICAgICAgICAgICAgICAgICAgIHBvcy5y
eCgpID0gY3Bvcy54KCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGNvc3JhICogY3VycmVudFJhZGl1cyk7
CisgICAgICAgICAgICAgICAgICAgIHBvcy5yeSgpID0gY3Bvcy55KCkgLSBzdGF0aWNfY2FzdDxp
bnQ+KHNpbnJhICogY3VycmVudFJhZGl1cyk7CiAgICAgICAgICAgICAgICAgICAgIHB0cy5zZXRQ
b2ludChpLCBwb3MpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMzI0LDEyICszMjQsMTIgQEAg
dm9pZCBSYWRpYWxNYXA6Ok1hcDo6cGFpbnQodW5zaWduZWQgaW50IHNjYWxlRmFjdG9yKQogICAg
ICAgICAgICAgICAgIC8vKioqKiBjb2RlIGlzIGJsb2F0ZWQhCiAgICAgICAgICAgICAgICAgcGFp
bnQuc2F2ZSgpOwogICAgICAgICAgICAgICAgIFFQZW4gcGVuID0gcGFpbnQucGVuKCk7Ci0gICAg
ICAgICAgICAgICAgaW50IHdpZHRoID0gMiAqIHNjYWxlRmFjdG9yOwotICAgICAgICAgICAgICAg
IHBlbi5zZXRXaWR0aCh3aWR0aCk7CisgICAgICAgICAgICAgICAgaW50IHBlbldpZHRoID0gMiAq
IHNjYWxlRmFjdG9yOworICAgICAgICAgICAgICAgIHBlbi5zZXRXaWR0aChwZW5XaWR0aCk7CiAg
ICAgICAgICAgICAgICAgcGFpbnQuc2V0UGVuKHBlbik7CiAgICAgICAgICAgICAgICAgUVJlY3Qg
cmVjdDIgPSByZWN0OwotICAgICAgICAgICAgICAgIHdpZHRoIC89IDI7Ci0gICAgICAgICAgICAg
ICAgcmVjdDIuYWRqdXN0KHdpZHRoLCB3aWR0aCwgLXdpZHRoLCAtd2lkdGgpOworICAgICAgICAg
ICAgICAgIHBlbldpZHRoIC89IDI7CisgICAgICAgICAgICAgICAgcmVjdDIuYWRqdXN0KHBlbldp
ZHRoLCBwZW5XaWR0aCwgLXBlbldpZHRoLCAtcGVuV2lkdGgpOwogICAgICAgICAgICAgICAgIHBh
aW50LmRyYXdBcmMocmVjdDIsICgqaXQpLT5zdGFydCgpLCAoKml0KS0+bGVuZ3RoKCkpOwogICAg
ICAgICAgICAgICAgIHBhaW50LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwIGIvYXBwL0Rpc2tVc2FnZS9y
YWRpYWxNYXAvc2VnbWVudFRpcC5jcHAKaW5kZXggZmM2MTYxZDE5Li4zMTRhZGMxYWEgMTAwNjQ0
Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwCisrKyBiL2FwcC9E
aXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCB2
b2lkIFNlZ21lbnRUaXA6OnVwZGF0ZVRpcChjb25zdCBGaWxlICpjb25zdCBmaWxlLCBjb25zdCBE
aXJlY3RvcnkgKmNvbnN0IHJvb3QpCiAgICAgUVN0cmluZyBzMiA9IGZpbGUtPmh1bWFuUmVhZGFi
bGVTaXplKCk7CiAgICAgUUxvY2FsZSBsb2M7CiAgICAgY29uc3QgdWludCBNQVJHSU4gPSAzOwot
ICAgIGNvbnN0IEZpbGVTaXplIHBjID0gMTAwICogZmlsZS0+c2l6ZSgpIC8gcm9vdC0+c2l6ZSgp
OworICAgIGNvbnN0IEZpbGVTaXplIHNpemVQZXJjZW50ID0gMTAwICogZmlsZS0+c2l6ZSgpIC8g
cm9vdC0+c2l6ZSgpOwogICAgIHVpbnQgbWF4dyA9IDA7CiAgICAgdWludCBoID0gZm9udE1ldHJp
Y3MoKS5oZWlnaHQoKSAqIDIgKyAyICogTUFSR0lOOwogCi0gICAgaWYgKHBjID4gMCkKLSAgICAg
ICAgczIgKz0gUVN0cmluZygiICglMSUpIikuYXJnKGxvYy50b1N0cmluZyhwYykpOworICAgIGlm
IChzaXplUGVyY2VudCA+IDApCisgICAgICAgIHMyICs9IFFTdHJpbmcoIiAoJTElKSIpLmFyZyhs
b2MudG9TdHJpbmcoc2l6ZVBlcmNlbnQpKTsKIAogICAgIG1fdGV4dCA9IHMxOwogICAgIG1fdGV4
dCArPSAnXG4nOwpAQCAtMTE2LDExICsxMTYsMTEgQEAgdm9pZCBTZWdtZW50VGlwOjp1cGRhdGVU
aXAoY29uc3QgRmlsZSAqY29uc3QgZmlsZSwgY29uc3QgRGlyZWN0b3J5ICpjb25zdCByb290KQog
CiAgICAgaWYgKGZpbGUtPmlzRGlyKCkpIHsKICAgICAgICAgZG91YmxlIGZpbGVzID0gZHluYW1p
Y19jYXN0PGNvbnN0IERpcmVjdG9yeSAqPihmaWxlKS0+ZmlsZUNvdW50KCk7Ci0gICAgICAgIGNv
bnN0IGF1dG8gcGMgPSB1aW50KCgxMDAgKiBmaWxlcykgLyAoZG91YmxlKXJvb3QtPmZpbGVDb3Vu
dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byBmaWxlQ291bnRQZXJjZW50ID0gdWludCgoMTAwICog
ZmlsZXMpIC8gKGRvdWJsZSlyb290LT5maWxlQ291bnQoKSk7CiAgICAgICAgIFFTdHJpbmcgczMg
PSBpMThuKCJGaWxlczogJTEiLCBsb2MudG9TdHJpbmcoZmlsZXMsICdmJywgMCkpOwogCi0gICAg
ICAgIGlmIChwYyA+IDApCi0gICAgICAgICAgICBzMyArPSBRU3RyaW5nKCIgKCUxJSkiKS5hcmco
bG9jLnRvU3RyaW5nKHBjKSk7CisgICAgICAgIGlmIChmaWxlQ291bnRQZXJjZW50ID4gMCkKKyAg
ICAgICAgICAgIHMzICs9IFFTdHJpbmcoIiAoJTElKSIpLmFyZyhsb2MudG9TdHJpbmcoZmlsZUNv
dW50UGVyY2VudCkpOwogCiAgICAgICAgIG1heHcgPSBmb250TWV0cmljcygpLmhvcml6b250YWxB
ZHZhbmNlKHMzKTsKICAgICAgICAgaCArPSBmb250TWV0cmljcygpLmhlaWdodCgpOwpkaWZmIC0t
Z2l0IGEvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcCBiL2FwcC9EaXNr
VXNhZ2UvcmFkaWFsTWFwL3dpZGdldEV2ZW50cy5jcHAKaW5kZXggMTViY2IxZmNjLi42MjMwOWQ5
M2YgMTAwNjQ0Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3dpZGdldEV2ZW50cy5jcHAK
KysrIGIvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcApAQCAtMTgyLDcg
KzE4Miw2IEBAIHZvaWQgUmFkaWFsTWFwOjpXaWRnZXQ6Om1vdXNlUHJlc3NFdmVudChRTW91c2VF
dmVudCAqZSkKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IGFjdFZpZXdNYWcgfHwg
cmVzdWx0ID09IGFjdEZpbGVPcGVuKSB7CiAgICAgICAgICAgICAgICAgZ290byBzZWN0aW9uVHdv
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gYWN0RWRpdERlbCkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFFVcmwgdXJsID0gV2lkZ2V0Ojp1cmwobV9mb2N1cy0+ZmlsZSgpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG1lc3NhZ2UgPQogICAgICAgICAgICAgICAg
ICAgICAobV9mb2N1cy0+ZmlsZSgpLT5pc0RpcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBpMThuKCI8cXQ+VGhlIGZvbGRlciBhdCA8aT4nJTEnPC9pPiB3aWxsIGJlIDxiPnJlY3Vyc2l2
ZWx5PC9iPiBhbmQgPGI+cGVybWFuZW50bHk8L2I+IGRlbGV0ZWQuPC9xdD4iLCB1cmwudG9EaXNw
bGF5U3RyaW5nKCkpCmRpZmYgLS1naXQgYS9hcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcCBi
L2FwcC9GaWxlU3lzdGVtL2ZpbGVzeXN0ZW0uY3BwCmluZGV4IDdiY2M3MzM0Ny4uYzQ1ZTA0OWI5
IDEwMDY0NAotLS0gYS9hcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcAorKysgYi9hcHAvRmls
ZVN5c3RlbS9maWxlc3lzdGVtLmNwcApAQCAtMTc3LDggKzE3Nyw4IEBAIHZvaWQgRmlsZVN5c3Rl
bTo6Y29ubmVjdEpvYlRvRGVzdGluYXRpb24oS0pvYiAqam9iLCBjb25zdCBRVXJsICZkZXN0aW5h
dGlvbikKICAgICB9KTsKICAgICAvLyAoYWRkaXRpb25hbCkgZGlyZWN0IHJlZnJlc2ggaWYgb24g
bG9jYWwgZnMgYmVjYXVzZSB3YXRjaGVyIGlzIHRvbyBzbG93CiAgICAgY29uc3QgYm9vbCByZWZy
ZXNoID0gY2xlYW5VcmwoZGVzdGluYXRpb24pID09IF9jdXJyZW50RGlyZWN0b3J5ICYmIGlzTG9j
YWwoKTsKLSAgICBjb25uZWN0KGpvYiwgJktJTzo6Sm9iOjpyZXN1bHQsIHRoaXMsIFs9XShLSm9i
ICpqb2IpIHsKLSAgICAgICAgc2xvdEpvYlJlc3VsdChqb2IsIHJlZnJlc2gpOworICAgIGNvbm5l
Y3Qoam9iLCAmS0lPOjpKb2I6OnJlc3VsdCwgdGhpcywgWz1dKEtKb2IgKmZpbmlzaGVkSm9iKSB7
CisgICAgICAgIHNsb3RKb2JSZXN1bHQoZmluaXNoZWRKb2IsIHJlZnJlc2gpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9hcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAgYi9h
cHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKaW5kZXggNzM4ZjBlYzJmLi44NGEx
MDg0MTEgMTAwNjQ0Ci0tLSBhL2FwcC9GaWxlU3lzdGVtL3ZpcnR1YWxmaWxlc3lzdGVtLmNwcAor
KysgYi9hcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKQEAgLTE1OCw4ICsxNTgs
OCBAQCB2b2lkIFZpcnR1YWxGaWxlU3lzdGVtOjpyZW5hbWUoY29uc3QgUVN0cmluZyAmZmlsZU5h
bWUsIGNvbnN0IFFTdHJpbmcgJm5ld05hbWUpCiAgICAgX3ZpcnRGaWxlc3lzdGVtRGljdFtjdXJy
ZW50RGlyKCldLT5hcHBlbmQoZGVzdCk7CiAKICAgICBLSU86OkpvYiAqam9iID0gS0lPOjptb3Zl
QXMoaXRlbS0+Z2V0VXJsKCksIGRlc3QsIEtJTzo6SGlkZVByb2dyZXNzSW5mbyk7Ci0gICAgY29u
bmVjdChqb2IsICZLSU86OkpvYjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqam9iKSB7Ci0gICAg
ICAgIHNsb3RKb2JSZXN1bHQoam9iLCBmYWxzZSk7CisgICAgY29ubmVjdChqb2IsICZLSU86Okpv
Yjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqZmluaXNoZWRKb2IpIHsKKyAgICAgICAgc2xvdEpv
YlJlc3VsdChmaW5pc2hlZEpvYiwgZmFsc2UpOwogICAgIH0pOwogICAgIGNvbm5lY3Qoam9iLCAm
S0lPOjpKb2I6OnJlc3VsdCwgdGhpcywgWz1dKCkgewogICAgICAgICBlbWl0IGZpbGVTeXN0ZW1D
aGFuZ2VkKGN1cnJlbnREaXJlY3RvcnkoKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvYXBwL0ZpbHRl
ci9hZHZhbmNlZGZpbHRlci5jcHAgYi9hcHAvRmlsdGVyL2FkdmFuY2VkZmlsdGVyLmNwcAppbmRl
eCBmYTFiNjdlOWYuLmQ5M2U0MWY5MSAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9hZHZhbmNlZGZp
bHRlci5jcHAKKysrIGIvYXBwL0ZpbHRlci9hZHZhbmNlZGZpbHRlci5jcHAKQEAgLTQ0NSwxMyAr
NDQ1LDEzIEBAIHZvaWQgQWR2YW5jZWRGaWx0ZXI6OmNoYW5nZURhdGUoS0xpbmVFZGl0ICpwKQog
CiB2b2lkIEFkdmFuY2VkRmlsdGVyOjpmaWxsTGlzdChLQ29tYm9Cb3ggKmxpc3QsIGNvbnN0IFFT
dHJpbmcgJmZpbGVuYW1lKQogewotICAgIFFGaWxlIGRhdGEoZmlsZW5hbWUpOwotICAgIGlmICgh
ZGF0YS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpKSB7CisgICAgUUZpbGUgaW5wdXRGaWxlKGZp
bGVuYW1lKTsKKyAgICBpZiAoIWlucHV0RmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpKSB7
CiAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlNlYXJjaDogVW5hYmxlIHRvIHJlYWQgIiA8PCBmaWxl
bmFtZSA8PCAiICEhISI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gYW5kIHJlYWQg
aXQgaW50byB0aGUgdGVtcG9yYXJ5IGFycmF5Ci0gICAgUVRleHRTdHJlYW0gdCgmZGF0YSk7Cisg
ICAgUVRleHRTdHJlYW0gdCgmaW5wdXRGaWxlKTsKICAgICB3aGlsZSAoIXQuYXRFbmQoKSkgewog
ICAgICAgICBRU3RyaW5nIHMgPSB0LnJlYWRMaW5lKCk7CiAgICAgICAgIFFTdHJpbmcgbmFtZSA9
IHMubGVmdChzLmluZGV4T2YoJzonKSk7CmRpZmYgLS1naXQgYS9hcHAvRmlsdGVyL2ZpbHRlcnRh
YnMuY3BwIGIvYXBwL0ZpbHRlci9maWx0ZXJ0YWJzLmNwcAppbmRleCBjY2E2M2ZiZjguLmVjZTli
MzBjMiAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9maWx0ZXJ0YWJzLmNwcAorKysgYi9hcHAvRmls
dGVyL2ZpbHRlcnRhYnMuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiBGaWx0ZXJUYWJzOjpGaWx0ZXJU
YWJzKGludCBwcm9wZXJ0aWVzLCBRVGFiV2lkZ2V0ICp0YWJXaWRnZXQsIFFPYmplY3QgKnBhcmVu
dCwgUVN0cmluZ0xpc3QgZXh0cmFPcHRpb25zKQogICAgIDogUU9iamVjdChwYXJlbnQpCiB7Ci0g
ICAgdGhpcy0+dGFiV2lkZ2V0ID0gdGFiV2lkZ2V0OworICAgIHRoaXMtPm1fdGFiV2lkZ2V0ID0g
dGFiV2lkZ2V0OwogCiAgICAgR2VuZXJhbEZpbHRlciAqZ2VuZXJhbEZpbHRlciA9IG5ldyBHZW5l
cmFsRmlsdGVyKHRoaXMsIHByb3BlcnRpZXMsIHRhYldpZGdldCwgc3RkOjptb3ZlKGV4dHJhT3B0
aW9ucykpOwogICAgIHRhYldpZGdldC0+YWRkVGFiKGdlbmVyYWxGaWx0ZXIsIGkxOG4oIiZHZW5l
cmFsIikpOwpAQCAtNTgsNyArNTgsNyBAQCBGaWx0ZXJTZXR0aW5ncyBGaWx0ZXJUYWJzOjpnZXRT
ZXR0aW5ncygpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBmaWx0ZXJMaXN0LmNvdW50KCk7
IGkrKykgewogICAgICAgICBpZiAoIWZpbHRlckxpc3RbaV0tPmdldFNldHRpbmdzKHMpKSB7Ci0g
ICAgICAgICAgICB0YWJXaWRnZXQtPnNldEN1cnJlbnRJbmRleChwYWdlTnVtYmVyc1tpXSk7Cisg
ICAgICAgICAgICBtX3RhYldpZGdldC0+c2V0Q3VycmVudEluZGV4KHBhZ2VOdW1iZXJzW2ldKTsK
ICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJTZXR0aW5ncygpOwogICAgICAgICB9CiAgICAgfQpA
QCAtOTgsNyArOTgsNyBAQCB2b2lkIEZpbHRlclRhYnM6OmxvYWRGcm9tUHJvZmlsZShjb25zdCBR
U3RyaW5nICZuYW1lKQogICAgIEZpbHRlclNldHRpbmdzIHM7CiAgICAgcy5sb2FkKEtDb25maWdH
cm91cChrckNvbmZpZywgbmFtZSkpOwogICAgIGlmICghcy5pc1ZhbGlkKCkpCi0gICAgICAgIEtN
ZXNzYWdlQm94OjplcnJvcih0YWJXaWRnZXQsIGkxOG4oIkNvdWxkIG5vdCBsb2FkIHByb2ZpbGUu
IikpOworICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IobV90YWJXaWRnZXQsIGkxOG4oIkNvdWxk
IG5vdCBsb2FkIHByb2ZpbGUuIikpOwogICAgIGVsc2UKICAgICAgICAgYXBwbHlTZXR0aW5ncyhz
KTsKIH0KZGlmZiAtLWdpdCBhL2FwcC9GaWx0ZXIvZmlsdGVydGFicy5oIGIvYXBwL0ZpbHRlci9m
aWx0ZXJ0YWJzLmgKaW5kZXggNGI5YTU1ZmJlLi4xNjUyN2EwZjUgMTAwNjQ0Ci0tLSBhL2FwcC9G
aWx0ZXIvZmlsdGVydGFicy5oCisrKyBiL2FwcC9GaWx0ZXIvZmlsdGVydGFicy5oCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgUUxpc3Q8RmlsdGVyQmFzZSAqPiBmaWx0ZXJMaXN0Owog
ICAgIFFMaXN0PGludD4gcGFnZU51bWJlcnM7CiAKLSAgICBRVGFiV2lkZ2V0ICp0YWJXaWRnZXQ7
CisgICAgUVRhYldpZGdldCAqbV90YWJXaWRnZXQ7CiB9OwogCiAjZW5kaWYgLyogRklMVEVSVEFC
U19IICovCmRpZmYgLS1naXQgYS9hcHAvRmlsdGVyL2dlbmVyYWxmaWx0ZXIuY3BwIGIvYXBwL0Zp
bHRlci9nZW5lcmFsZmlsdGVyLmNwcAppbmRleCAxYjU5MDJkZjUuLmIwYWI4NWQ4ZCAxMDA2NDQK
LS0tIGEvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmNwcAorKysgYi9hcHAvRmlsdGVyL2dlbmVy
YWxmaWx0ZXIuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSA8UVB1c2hCdXR0b24+CiAK
ICNpbmNsdWRlIDxLQ2hhcnNldHM+Ci0jaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KICNpbmNs
dWRlIDxLTGF6eUxvY2FsaXplZFN0cmluZz4KKyNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgog
I2luY2x1ZGUgPEtNZXNzYWdlQm94PgogI2luY2x1ZGUgPEtTaGFyZWRDb25maWc+CiAjaW5jbHVk
ZSA8S1NoZWxsPgpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIGludCBtQ3Vyc29yOwog
fTsKIAotR2VuZXJhbEZpbHRlcjo6R2VuZXJhbEZpbHRlcihGaWx0ZXJUYWJzICp0YWJzLCBpbnQg
cHJvcGVydGllcywgUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nTGlzdCBleHRyYU9wdGlvbnMpCitH
ZW5lcmFsRmlsdGVyOjpHZW5lcmFsRmlsdGVyKEZpbHRlclRhYnMgKnRhYnMsIGludCBwcm9wZXJ0
aWVzLCBRV2lkZ2V0ICpwYXJlbnQsIFFTdHJpbmdMaXN0IGV4dHJhT3B0aW9uS2V5cykKICAgICA6
IFFXaWRnZXQocGFyZW50KQogICAgICwgcHJvZmlsZU1hbmFnZXIobnVsbHB0cikKICAgICAsIGZs
dFRhYnModGFicykKQEAgLTg4LDcgKzg4LDcgQEAgR2VuZXJhbEZpbHRlcjo6R2VuZXJhbEZpbHRl
cihGaWx0ZXJUYWJzICp0YWJzLCBpbnQgcHJvcGVydGllcywgUVdpZGdldCAqcGFyZW50LAogICAg
IGZpbHRlckxheW91dC0+c2V0U3BhY2luZyg2KTsKICAgICBmaWx0ZXJMYXlvdXQtPnNldENvbnRl
bnRzTWFyZ2lucygxMSwgMTEsIDExLCAxMSk7CiAKLSAgICB0aGlzLT5wcm9wZXJ0aWVzID0gcHJv
cGVydGllczsKKyAgICB0aGlzLT5tX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwogCiAgICAgLy8g
T3B0aW9ucyBmb3IgbmFtZSBmaWx0ZXJpbmcKIApAQCAtMzY0LDExICszNjQsMTEgQEAgR2VuZXJh
bEZpbHRlcjo6R2VuZXJhbEZpbHRlcihGaWx0ZXJUYWJzICp0YWJzLCBpbnQgcHJvcGVydGllcywg
UVdpZGdldCAqcGFyZW50LAogICAgIH0KICAgICBmaWx0ZXJMYXlvdXQtPmFkZExheW91dChyZWN1
cnNlTGF5b3V0LCAzLCAwKTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0cmFPcHRpb25z
Lmxlbmd0aCgpOyBpKyspIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dHJhT3B0aW9uS2V5
cy5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8gKm9wdGlvbiA9IG5ldyBRQ2hlY2tCb3go
dGhpcyk7Ci0gICAgICAgIG9wdGlvbi0+c2V0VGV4dChleHRyYU9wdGlvbnNbaV0pOworICAgICAg
ICBvcHRpb24tPnNldFRleHQoZXh0cmFPcHRpb25LZXlzW2ldKTsKICAgICAgICAgcmVjdXJzZUxh
eW91dC0+YWRkV2lkZ2V0KG9wdGlvbik7Ci0gICAgICAgIHRoaXMtPmV4dHJhT3B0aW9ucy5pbnNl
cnQoZXh0cmFPcHRpb25zW2ldLCBvcHRpb24pOworICAgICAgICB0aGlzLT5leHRyYU9wdGlvbnMu
aW5zZXJ0KGV4dHJhT3B0aW9uS2V5c1tpXSwgb3B0aW9uKTsKICAgICB9CiAKICAgICAvLyBDb25u
ZWN0aW9uIHRhYmxlCkBAIC00MTksNyArNDE5LDcgQEAgR2VuZXJhbEZpbHRlcjo6fkdlbmVyYWxG
aWx0ZXIoKQogICAgIGdyb3VwLndyaXRlRW50cnkoIkNvbnRhaW5zVGV4dCBDb21wbGV0aW9uIiwg
bGlzdCk7CiAgICAgbGlzdCA9IGNvbnRhaW5zVGV4dC0+aGlzdG9yeUl0ZW1zKCk7CiAgICAgZ3Jv
dXAud3JpdGVFbnRyeSgiQ29udGFpbnNUZXh0IEhpc3RvcnkiLCBsaXN0KTsKLSAgICBpZiAoKHBy
b3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChwcm9wZXJ0aWVzICYg
RmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpKSB7CisgICAgaWYgKChtX3Byb3BlcnRpZXMg
JiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJU
YWJzOjpIYXNSZWN1cnNlT3B0aW9ucykpIHsKICAgICAgICAgbGlzdCA9IGV4Y2x1ZGVGb2xkZXJO
YW1lcy0+aGlzdG9yeUl0ZW1zKCk7CiAgICAgICAgIGdyb3VwLndyaXRlRW50cnkoIkV4Y2x1ZGVG
b2xkZXJOYW1lc0hpc3RvcnkiLCBsaXN0KTsKICAgICAgICAgZ3JvdXAud3JpdGVFbnRyeSgiRXhj
bHVkZUZvbGRlck5hbWVzIiwgZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4dCgpKTsKQEAg
LTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEdlbmVyYWxGaWx0ZXI6OnF1ZXJ5QWNjZXB0ZWQoKQogewog
ICAgIHNlYXJjaEZvci0+YWRkVG9IaXN0b3J5KHNlYXJjaEZvci0+Y3VycmVudFRleHQoKSk7CiAg
ICAgY29udGFpbnNUZXh0LT5hZGRUb0hpc3RvcnkoY29udGFpbnNUZXh0LT5jdXJyZW50VGV4dCgp
KTsKLSAgICBpZiAoKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYm
IChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpKSB7CisgICAgaWYg
KChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChtX3Byb3Bl
cnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNSZWN1cnNlT3B0aW9ucykpIHsKICAgICAgICAgZXhjbHVk
ZUZvbGRlck5hbWVzLT5hZGRUb0hpc3RvcnkoZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4
dCgpKTsKICAgICB9CiB9CkBAIC01MzcsNyArNTM3LDcgQEAgdm9pZCBHZW5lcmFsRmlsdGVyOjpz
bG90RGlzYWJsZSgpCiAgICAgYm9vbCBzdGF0ZSA9IGNvbnRhaW5zUmVnRXhwLT5pc0NoZWNrZWQo
KTsKICAgICBib29sIGdsb2JhbCA9IG9mVHlwZS0+Y3VycmVudFRleHQoKSAhPSBpMThuKCJGb2xk
ZXJzIik7CiAgICAgYm9vbCByZW1vdGVPbmx5ID0gZmFsc2U7Ci0gICAgaWYgKHByb3BlcnRpZXMg
JiBGaWx0ZXJUYWJzOjpIYXNTZWFyY2hJbikgeworICAgIGlmIChtX3Byb3BlcnRpZXMgJiBGaWx0
ZXJUYWJzOjpIYXNTZWFyY2hJbikgewogICAgICAgICBjb25zdCBRTGlzdDxRVXJsPiB1cmxMaXN0
ID0gc2VhcmNoSW4tPnVybExpc3QoKTsKICAgICAgICAgcmVtb3RlT25seSA9IHVybExpc3QuY291
bnQoKSAhPSAwOwogICAgICAgICBmb3IgKGNvbnN0IFFVcmwgJnVybCA6IHVybExpc3QpCkBAIC01
NTEsNyArNTUxLDcgQEAgdm9pZCBHZW5lcmFsRmlsdGVyOjpzbG90RGlzYWJsZSgpCiAgICAgY29u
dGVudEVuY29kaW5nLT5zZXRFbmFibGVkKGdsb2JhbCk7CiAgICAgY29udGFpbnNUZXh0Q2FzZS0+
c2V0RW5hYmxlZChnbG9iYWwpOwogICAgIGNvbnRhaW5zUmVnRXhwLT5zZXRFbmFibGVkKGdsb2Jh
bCk7Ci0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNSZWN1cnNlT3B0aW9ucykK
KyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpCiAg
ICAgICAgIHNlYXJjaEluQXJjaGl2ZXMtPnNldEVuYWJsZWQoZ2xvYmFsICYmICFyZW1vdGVPbmx5
KTsKICAgICBjb250YWluc0xhYmVsLT5zZXRFbmFibGVkKGdsb2JhbCk7CiAgICAgY29udGFpbnNU
ZXh0LT5zZXRFbmFibGVkKGdsb2JhbCk7CkBAIC01OTQsMTMgKzU5NCwxMyBAQCBib29sIEdlbmVy
YWxGaWx0ZXI6OmdldFNldHRpbmdzKEZpbHRlclNldHRpbmdzICZzKQogICAgIGlmIChjb250ZW50
RW5jb2RpbmctPmN1cnJlbnRJbmRleCgpICE9IDApCiAgICAgICAgIHMuY29udGVudEVuY29kaW5n
ID0gS0NoYXJzZXRzOjpjaGFyc2V0cygpLT5lbmNvZGluZ0Zvck5hbWUoY29udGVudEVuY29kaW5n
LT5jdXJyZW50VGV4dCgpKTsKIAotICAgIGlmIChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFz
UmVjdXJzZU9wdGlvbnMpIHsKKyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFz
UmVjdXJzZU9wdGlvbnMpIHsKICAgICAgICAgcy5yZWN1cnNpdmUgPSBzZWFyY2hJbkRpcnMtPmlz
Q2hlY2tlZCgpOwogICAgICAgICBzLnNlYXJjaEluQXJjaGl2ZXMgPSBzZWFyY2hJbkFyY2hpdmVz
LT5pc0NoZWNrZWQoKTsKICAgICAgICAgcy5mb2xsb3dMaW5rcyA9IGZvbGxvd0xpbmtzLT5pc0No
ZWNrZWQoKTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1Nl
YXJjaEluKSB7CisgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1NlYXJjaElu
KSB7CiAgICAgICAgIHMuc2VhcmNoSW4gPSBzZWFyY2hJbi0+dXJsTGlzdCgpOwogICAgICAgICBp
ZiAocy5zZWFyY2hJbi5pc0VtcHR5KCkpIHsgLy8gd2UgbmVlZCBhIHBsYWNlIHRvIHNlYXJjaCBp
bgogICAgICAgICAgICAgS01lc3NhZ2VCb3g6OmVycm9yKHRoaXMsIGkxOG4oIlBsZWFzZSBzcGVj
aWZ5IGEgbG9jYXRpb24gdG8gc2VhcmNoIGluLiIpKTsKQEAgLTYwOSw5ICs2MDksOSBAQCBib29s
IEdlbmVyYWxGaWx0ZXI6OmdldFNldHRpbmdzKEZpbHRlclNldHRpbmdzICZzKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNo
SW4pIHsKKyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzRG9udFNlYXJjaElu
KSB7CiAgICAgICAgIHMuZG9udFNlYXJjaEluID0gZG9udFNlYXJjaEluLT51cmxMaXN0KCk7Ci0g
ICAgICAgIGlmIChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpIHsK
KyAgICAgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1JlY3Vyc2VPcHRpb25z
KSB7CiAgICAgICAgICAgICBpZiAodXNlRXhjbHVkZUZvbGRlck5hbWVzLT5pc0NoZWNrZWQoKSkg
ewogICAgICAgICAgICAgICAgIHMuZXhjbHVkZUZvbGRlck5hbWVzID0gS1NoZWxsOjpzcGxpdEFy
Z3MoZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4dCgpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CkBAIC02MzYsMTkgKzYzNiwxOSBAQCB2b2lkIEdlbmVyYWxGaWx0ZXI6OmFwcGx5U2V0dGlu
Z3MoY29uc3QgRmlsdGVyU2V0dGluZ3MgJnMpCiAKICAgICBzZXRDb21ib0JveFZhbHVlKGNvbnRl
bnRFbmNvZGluZywgS0NoYXJzZXRzOjpjaGFyc2V0cygpLT5kZXNjcmlwdGlvbkZvckVuY29kaW5n
KHMuY29udGVudEVuY29kaW5nKSk7CiAKLSAgICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6
Okhhc1JlY3Vyc2VPcHRpb25zKSB7CisgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6
Okhhc1JlY3Vyc2VPcHRpb25zKSB7CiAgICAgICAgIHNlYXJjaEluRGlycy0+c2V0Q2hlY2tlZChz
LnJlY3Vyc2l2ZSk7CiAgICAgICAgIHNlYXJjaEluQXJjaGl2ZXMtPnNldENoZWNrZWQocy5zZWFy
Y2hJbkFyY2hpdmVzKTsKICAgICAgICAgZm9sbG93TGlua3MtPnNldENoZWNrZWQocy5mb2xsb3dM
aW5rcyk7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNTZWFy
Y2hJbikgeworICAgIGlmIChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNTZWFyY2hJbikg
ewogICAgICAgICBzZWFyY2hJbi0+bGluZUVkaXQoKS0+Y2xlYXIoKTsKICAgICAgICAgc2VhcmNo
SW4tPmxpc3RCb3goKS0+Y2xlYXIoKTsKICAgICAgICAgc2VhcmNoSW4tPmxpc3RCb3goKS0+YWRk
SXRlbXMoS3JTZXJ2aWNlczo6dG9TdHJpbmdMaXN0KHMuc2VhcmNoSW4pKTsKICAgICB9CiAKLSAg
ICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc0RvbnRTZWFyY2hJbikgeworICAgIGlm
IChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pIHsKICAgICAgICAg
ZG9udFNlYXJjaEluLT5saW5lRWRpdCgpLT5jbGVhcigpOwogICAgICAgICBkb250U2VhcmNoSW4t
Pmxpc3RCb3goKS0+Y2xlYXIoKTsKICAgICAgICAgZG9udFNlYXJjaEluLT5saXN0Qm94KCktPmFk
ZEl0ZW1zKEtyU2VydmljZXM6OnRvU3RyaW5nTGlzdChzLmRvbnRTZWFyY2hJbikpOwpkaWZmIC0t
Z2l0IGEvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmggYi9hcHAvRmlsdGVyL2dlbmVyYWxmaWx0
ZXIuaAppbmRleCBlOTQxYmRjNTUuLmJhYTRlNzEyNSAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9n
ZW5lcmFsZmlsdGVyLmgKKysrIGIvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmgKQEAgLTk0LDcg
Kzk0LDcgQEAgcHVibGljOgogCiAgICAgUHJvZmlsZU1hbmFnZXIgKnByb2ZpbGVNYW5hZ2VyOwog
Ci0gICAgaW50IHByb3BlcnRpZXM7CisgICAgaW50IG1fcHJvcGVydGllczsKIAogICAgIEZpbHRl
clRhYnMgKmZsdFRhYnM7CiAKZGlmZiAtLWdpdCBhL2FwcC9HVUkva2Zua2V5cy5jcHAgYi9hcHAv
R1VJL2tmbmtleXMuY3BwCmluZGV4IDg1MmE0ZTNkOC4uNmMzYjA5MWVlIDEwMDY0NAotLS0gYS9h
cHAvR1VJL2tmbmtleXMuY3BwCisrKyBiL2FwcC9HVUkva2Zua2V5cy5jcHAKQEAgLTIwLDcgKzIw
LDcgQEAKIAogS0ZuS2V5czo6S0ZuS2V5cyhRV2lkZ2V0ICpwYXJlbnQsIEtyTWFpbldpbmRvdyAq
bWFpbldpbmRvdykKICAgICA6IFFXaWRnZXQocGFyZW50KQotICAgICwgbWFpbldpbmRvdyhtYWlu
V2luZG93KQorICAgICwgbV9tYWluV2luZG93KG1haW5XaW5kb3cpCiB7CiAgICAgYnV0dG9uTGlz
dCA8PCBzZXR1cChtYWluV2luZG93LT5saXN0UGFuZWxBY3Rpb25zKCktPmFjdFJlbmFtZUYyLCBp
MThuKCJSZW5hbWUiKSkgPDwgc2V0dXAobWFpbldpbmRvdy0+bGlzdFBhbmVsQWN0aW9ucygpLT5h
Y3RWaWV3RmlsZUYzLCBpMThuKCJWaWV3IikpCiAgICAgICAgICAgICAgICA8PCBzZXR1cChtYWlu
V2luZG93LT5saXN0UGFuZWxBY3Rpb25zKCktPmFjdEVkaXRGaWxlRjQsIGkxOG4oIkVkaXQiKSkg
PDwgc2V0dXAobWFpbldpbmRvdy0+bGlzdFBhbmVsQWN0aW9ucygpLT5hY3RDb3B5RjUsIGkxOG4o
IkNvcHkiKSkKZGlmZiAtLWdpdCBhL2FwcC9HVUkva2Zua2V5cy5oIGIvYXBwL0dVSS9rZm5rZXlz
LmgKaW5kZXggMjRlNTg3N2Y4Li4zZjRlOWM3ZTYgMTAwNjQ0Ci0tLSBhL2FwcC9HVUkva2Zua2V5
cy5oCisrKyBiL2FwcC9HVUkva2Zua2V5cy5oCkBAIC0zMyw3ICszMyw3IEBAIHByaXZhdGU6CiAK
ICAgICBCdXR0b25FbnRyeSBzZXR1cChRQWN0aW9uICphY3Rpb24sIGNvbnN0IFFTdHJpbmcgJnRl
eHQpOwogCi0gICAgS3JNYWluV2luZG93ICptYWluV2luZG93OworICAgIEtyTWFpbldpbmRvdyAq
bV9tYWluV2luZG93OwogICAgIFFMaXN0PEJ1dHRvbkVudHJ5PiBidXR0b25MaXN0OwogfTsKIApk
aWZmIC0tZ2l0IGEvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5jcHAgYi9hcHAvR1VJL3Byb2ZpbGVt
YW5hZ2VyLmNwcAppbmRleCAyMDIzM2YxZTguLmE3ZDYyNmZlMSAxMDA2NDQKLS0tIGEvYXBwL0dV
SS9wcm9maWxlbWFuYWdlci5jcHAKKysrIGIvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAgUHJvZmlsZU1hbmFnZXI6OlByb2ZpbGVNYW5hZ2VyKGNvbnN0IFFTdHJp
bmcgJnByb2ZpbGVUeXBlLCBRV2lkZ2V0ICpwYXJlbnQpCiAgICAgc2V0Rml4ZWRXaWR0aCgxNiAr
IDE1KTsKICAgICBzZXRUb29sVGlwKGkxOG4oIlByb2ZpbGVzIikpOwogCi0gICAgdGhpcy0+cHJv
ZmlsZVR5cGUgPSBwcm9maWxlVHlwZTsKKyAgICB0aGlzLT5tX3Byb2ZpbGVUeXBlID0gcHJvZmls
ZVR5cGU7CiAKICAgICBjb25uZWN0KHRoaXMsICZQcm9maWxlTWFuYWdlcjo6Y2xpY2tlZCwgdGhp
cywgJlByb2ZpbGVNYW5hZ2VyOjpwcm9maWxlUG9wdXApOwogCkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgUHJvZmlsZU1hbmFnZXI6OnByb2ZpbGVQb3B1cCgpCiAgICAgcG9wdXAuc2V0VGl0bGUoaTE4
bigiUHJvZmlsZXMiKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBwcm9maWxlTGlzdC5j
b3VudCgpOyBpKyspIHsKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9m
aWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0pOworICAgICAgICBLQ29uZmlnR3JvdXAg
Z3JvdXAoa3JDb25maWcsIG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsK
ICAgICAgICAgUVN0cmluZyBuYW1lID0gZ3JvdXAucmVhZEVudHJ5KCJOYW1lIik7CiAgICAgICAg
IHBvcHVwLmFkZEFjdGlvbihuYW1lKS0+c2V0RGF0YShRVmFyaWFudCgoaW50KShMT0FEX0VOVFJZ
X0lEICsgaSkpKTsKICAgICAgICAgcmVtb3ZlUG9wdXAuYWRkQWN0aW9uKG5hbWUpLT5zZXREYXRh
KFFWYXJpYW50KChpbnQpKFJFTU9WRV9FTlRSWV9JRCArIGkpKSk7CkBAIC03MywxNiArNzMsMTYg
QEAgdm9pZCBQcm9maWxlTWFuYWdlcjo6cHJvZmlsZVBvcHVwKCkKICAgICBpZiAocmVzdWx0ID09
IEFERF9ORVdfRU5UUllfSUQpCiAgICAgICAgIG5ld1Byb2ZpbGUoKTsKICAgICBlbHNlIGlmIChy
ZXN1bHQgPj0gTE9BRF9FTlRSWV9JRCAmJiByZXN1bHQgPCBMT0FEX0VOVFJZX0lEICsgcHJvZmls
ZUxpc3QuY291bnQoKSkgewotICAgICAgICBlbWl0IGxvYWRGcm9tUHJvZmlsZShwcm9maWxlVHlw
ZSArICIgLSAiICsgcHJvZmlsZUxpc3RbcmVzdWx0IC0gTE9BRF9FTlRSWV9JRF0pOworICAgICAg
ICBlbWl0IGxvYWRGcm9tUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlz
dFtyZXN1bHQgLSBMT0FEX0VOVFJZX0lEXSk7CiAgICAgfSBlbHNlIGlmIChyZXN1bHQgPj0gUkVN
T1ZFX0VOVFJZX0lEICYmIHJlc3VsdCA8IFJFTU9WRV9FTlRSWV9JRCArIHByb2ZpbGVMaXN0LmNv
dW50KCkpIHsKLSAgICAgICAga3JDb25maWctPmRlbGV0ZUdyb3VwKHByb2ZpbGVUeXBlICsgIiAt
ICIgKyBwcm9maWxlTGlzdFtyZXN1bHQgLSBSRU1PVkVfRU5UUllfSURdKTsKKyAgICAgICAga3JD
b25maWctPmRlbGV0ZUdyb3VwKG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W3Jl
c3VsdCAtIFJFTU9WRV9FTlRSWV9JRF0pOwogICAgICAgICBwcm9maWxlTGlzdC5yZW1vdmVBbGwo
cHJvZmlsZUxpc3RbcmVzdWx0IC0gUkVNT1ZFX0VOVFJZX0lEXSk7CiAKICAgICAgICAgS0NvbmZp
Z0dyb3VwIGdyb3VwKGtyQ29uZmlnLCAiUHJpdmF0ZSIpOwotICAgICAgICBncm91cC53cml0ZUVu
dHJ5KHByb2ZpbGVUeXBlLCBwcm9maWxlTGlzdCk7CisgICAgICAgIGdyb3VwLndyaXRlRW50cnko
bV9wcm9maWxlVHlwZSwgcHJvZmlsZUxpc3QpOwogICAgICAgICBrckNvbmZpZy0+c3luYygpOwog
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID49IE9WRVJXUklURV9FTlRSWV9JRCAmJiByZXN1bHQgPCBP
VkVSV1JJVEVfRU5UUllfSUQgKyBwcm9maWxlTGlzdC5jb3VudCgpKSB7Ci0gICAgICAgIGVtaXQg
c2F2ZVRvUHJvZmlsZShwcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbcmVzdWx0IC0g
T1ZFUldSSVRFX0VOVFJZX0lEXSk7CisgICAgICAgIGVtaXQgc2F2ZVRvUHJvZmlsZShtX3Byb2Zp
bGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtyZXN1bHQgLSBPVkVSV1JJVEVfRU5UUllfSURd
KTsKICAgICB9CiB9CiAKQEAgLTk1LDExICs5NSwxMSBAQCB2b2lkIFByb2ZpbGVNYW5hZ2VyOjpu
ZXdQcm9maWxlKGNvbnN0IFFTdHJpbmcgJmRlZmF1bHROYW1lKQogICAgICAgICAgICAgcHJvZmls
ZU51bSsrOwogCiAgICAgICAgIFFTdHJpbmcgcHJvZmlsZVN0cmluZyA9IFFTdHJpbmcoIiUxIiku
YXJnKHByb2ZpbGVOdW0pOwotICAgICAgICBRU3RyaW5nIHByb2ZpbGVOYW1lID0gcHJvZmlsZVR5
cGUgKyAiIC0gIiArIHByb2ZpbGVTdHJpbmc7CisgICAgICAgIFFTdHJpbmcgcHJvZmlsZU5hbWUg
PSBtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlU3RyaW5nOwogICAgICAgICBwcm9maWxl
TGlzdC5hcHBlbmQoUVN0cmluZygiJTEiKS5hcmcocHJvZmlsZVN0cmluZykpOwogCiAgICAgICAg
IEtDb25maWdHcm91cCBncm91cChrckNvbmZpZywgIlByaXZhdGUiKTsKLSAgICAgICAgZ3JvdXAu
d3JpdGVFbnRyeShwcm9maWxlVHlwZSwgcHJvZmlsZUxpc3QpOworICAgICAgICBncm91cC53cml0
ZUVudHJ5KG1fcHJvZmlsZVR5cGUsIHByb2ZpbGVMaXN0KTsKIAogICAgICAgICBLQ29uZmlnR3Jv
dXAgcGcoa3JDb25maWcsIHByb2ZpbGVOYW1lKTsKICAgICAgICAgcGcud3JpdGVFbnRyeSgiTmFt
ZSIsIHByb2ZpbGUpOwpAQCAtMTExLDE1ICsxMTEsMTUgQEAgdm9pZCBQcm9maWxlTWFuYWdlcjo6
bmV3UHJvZmlsZShjb25zdCBRU3RyaW5nICZkZWZhdWx0TmFtZSkKIHZvaWQgUHJvZmlsZU1hbmFn
ZXI6OmRlbGV0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkKIHsKICAgICBmb3IgKGludCBp
ID0gMDsgaSAhPSBwcm9maWxlTGlzdC5jb3VudCgpOyBpKyspIHsKLSAgICAgICAgS0NvbmZpZ0dy
b3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0p
OworICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsIG1fcHJvZmlsZVR5cGUgKyAi
IC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKICAgICAgICAgUVN0cmluZyBjdXJyZW50TmFtZSA9IGdy
b3VwLnJlYWRFbnRyeSgiTmFtZSIpOwogCiAgICAgICAgIGlmIChuYW1lID09IGN1cnJlbnROYW1l
KSB7Ci0gICAgICAgICAgICBrckNvbmZpZy0+ZGVsZXRlR3JvdXAocHJvZmlsZVR5cGUgKyAiIC0g
IiArIHByb2ZpbGVMaXN0W2ldKTsKKyAgICAgICAgICAgIGtyQ29uZmlnLT5kZWxldGVHcm91cCht
X3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAgICAgICAgICAgICBwcm9m
aWxlTGlzdC5yZW1vdmVBbGwocHJvZmlsZUxpc3RbaV0pOwogCiAgICAgICAgICAgICBLQ29uZmln
R3JvdXAgcGcoa3JDb25maWcsICJQcml2YXRlIik7Ci0gICAgICAgICAgICBwZy53cml0ZUVudHJ5
KHByb2ZpbGVUeXBlLCBwcm9maWxlTGlzdCk7CisgICAgICAgICAgICBwZy53cml0ZUVudHJ5KG1f
cHJvZmlsZVR5cGUsIHByb2ZpbGVMaXN0KTsKICAgICAgICAgICAgIGtyQ29uZmlnLT5zeW5jKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyOSwxMSArMTI5LDExIEBAIHZv
aWQgUHJvZmlsZU1hbmFnZXI6OmRlbGV0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkKIHZv
aWQgUHJvZmlsZU1hbmFnZXI6Om92ZXJ3cml0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkK
IHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBwcm9maWxlTGlzdC5jb3VudCgpOyBpKyspIHsK
LSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9maWxlVHlwZSArICIgLSAi
ICsgcHJvZmlsZUxpc3RbaV0pOworICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcs
IG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKICAgICAgICAgUVN0cmlu
ZyBjdXJyZW50TmFtZSA9IGdyb3VwLnJlYWRFbnRyeSgiTmFtZSIpOwogCiAgICAgICAgIGlmIChu
YW1lID09IGN1cnJlbnROYW1lKSB7Ci0gICAgICAgICAgICBlbWl0IHNhdmVUb1Byb2ZpbGUocHJv
ZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKKyAgICAgICAgICAgIGVtaXQgc2F2
ZVRvUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDIsMTEgKzE0MiwxMSBAQCB2
b2lkIFByb2ZpbGVNYW5hZ2VyOjpvdmVyd3JpdGVQcm9maWxlKGNvbnN0IFFTdHJpbmcgJm5hbWUp
CiBib29sIFByb2ZpbGVNYW5hZ2VyOjpsb2FkUHJvZmlsZShjb25zdCBRU3RyaW5nICZuYW1lKQog
ewogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IHByb2ZpbGVMaXN0LmNvdW50KCk7IGkrKykgewot
ICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsIHByb2ZpbGVUeXBlICsgIiAtICIg
KyBwcm9maWxlTGlzdFtpXSk7CisgICAgICAgIEtDb25maWdHcm91cCBncm91cChrckNvbmZpZywg
bV9wcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0pOwogICAgICAgICBRU3RyaW5n
IGN1cnJlbnROYW1lID0gZ3JvdXAucmVhZEVudHJ5KCJOYW1lIik7CiAKICAgICAgICAgaWYgKG5h
bWUgPT0gY3VycmVudE5hbWUpIHsKLSAgICAgICAgICAgIGVtaXQgbG9hZEZyb21Qcm9maWxlKHBy
b2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CisgICAgICAgICAgICBlbWl0IGxv
YWRGcm9tUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2Fw
cC9HVUkvcHJvZmlsZW1hbmFnZXIuaCBiL2FwcC9HVUkvcHJvZmlsZW1hbmFnZXIuaAppbmRleCAw
NjgxNTAzNjcuLmFhMGYzODBlNCAxMDA2NDQKLS0tIGEvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5o
CisrKyBiL2FwcC9HVUkvcHJvZmlsZW1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBzaWduYWxz
OgogICAgIHZvaWQgbG9hZEZyb21Qcm9maWxlKFFTdHJpbmcgcHJvZmlsZU5hbWUpOwogCiBwcml2
YXRlOgotICAgIFFTdHJpbmcgcHJvZmlsZVR5cGU7CisgICAgUVN0cmluZyBtX3Byb2ZpbGVUeXBl
OwogICAgIFFTdHJpbmdMaXN0IHByb2ZpbGVMaXN0OwogfTsKIApkaWZmIC0tZ2l0IGEvYXBwL0tv
bmZpZ3VyYXRvci9rZ3Byb3RvY29scy5jcHAgYi9hcHAvS29uZmlndXJhdG9yL2tncHJvdG9jb2xz
LmNwcAppbmRleCAzNGViMDkzNTcuLjZmYjA5ZWE0NSAxMDA2NDQKLS0tIGEvYXBwL0tvbmZpZ3Vy
YXRvci9rZ3Byb3RvY29scy5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rZ3Byb3RvY29scy5j
cHAKQEAgLTIwNCwxMCArMjA0LDEwIEBAIHZvaWQgS2dQcm90b2NvbHM6OnNsb3RSZW1vdmVQcm90
b2NvbCgpCiAKIHZvaWQgS2dQcm90b2NvbHM6OnJlbW92ZVByb3RvY29sKGNvbnN0IFFTdHJpbmcg
Jm5hbWUpCiB7Ci0gICAgUUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IGl0ZW1MaXN0ID0gbGlua0xp
c3QtPmZpbmRJdGVtcyhuYW1lLCBRdDo6TWF0Y2hFeGFjdGx5LCAwKTsKKyAgICBRTGlzdDxRVHJl
ZVdpZGdldEl0ZW0gKj4gbWF0Y2hpbmdJdGVtcyA9IGxpbmtMaXN0LT5maW5kSXRlbXMobmFtZSwg
UXQ6Ok1hdGNoRXhhY3RseSwgMCk7CiAKLSAgICBpZiAoaXRlbUxpc3QuY291bnQoKSkgewotICAg
ICAgICBRVHJlZVdpZGdldEl0ZW0gKml0ZW0gPSBpdGVtTGlzdFswXTsKKyAgICBpZiAobWF0Y2hp
bmdJdGVtcy5jb3VudCgpKSB7CisgICAgICAgIFFUcmVlV2lkZ2V0SXRlbSAqaXRlbSA9IG1hdGNo
aW5nSXRlbXNbMF07CiAKICAgICAgICAgd2hpbGUgKGl0ZW0tPmNoaWxkQ291bnQoKSAhPSAwKQog
ICAgICAgICAgICAgcmVtb3ZlTWltZShpdGVtLT5jaGlsZCgwKS0+dGV4dCgwKSk7CkBAIC0yMzYs
MTEgKzIzNiwxMSBAQCB2b2lkIEtnUHJvdG9jb2xzOjphZGRNaW1lKFFTdHJpbmcgbmFtZSwgY29u
c3QgUVN0cmluZyAmcHJvdG9jb2wpCiB7CiAgICAgUUxpc3Q8UUxpc3RXaWRnZXRJdGVtICo+IGxp
c3QgPSBtaW1lTGlzdC0+ZmluZEl0ZW1zKG5hbWUsIFF0OjpNYXRjaEV4YWN0bHkpOwogCi0gICAg
UUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IGl0ZW1MaXN0ID0gbGlua0xpc3QtPmZpbmRJdGVtcyhw
cm90b2NvbCwgUXQ6Ok1hdGNoRXhhY3RseSB8IFF0OjpNYXRjaFJlY3Vyc2l2ZSwgMCk7CisgICAg
UUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IG1hdGNoaW5nSXRlbXMgPSBsaW5rTGlzdC0+ZmluZEl0
ZW1zKHByb3RvY29sLCBRdDo6TWF0Y2hFeGFjdGx5IHwgUXQ6Ok1hdGNoUmVjdXJzaXZlLCAwKTsK
IAogICAgIFFUcmVlV2lkZ2V0SXRlbSAqY3VycmVudExpc3RJdGVtID0gbnVsbHB0cjsKLSAgICBp
ZiAoaXRlbUxpc3QuY291bnQoKSAhPSAwKQotICAgICAgICBjdXJyZW50TGlzdEl0ZW0gPSBpdGVt
TGlzdFswXTsKKyAgICBpZiAobWF0Y2hpbmdJdGVtcy5jb3VudCgpICE9IDApCisgICAgICAgIGN1
cnJlbnRMaXN0SXRlbSA9IG1hdGNoaW5nSXRlbXNbMF07CiAKICAgICBpZiAobGlzdC5jb3VudCgp
ID4gMCAmJiBjdXJyZW50TGlzdEl0ZW0gJiYgY3VycmVudExpc3RJdGVtLT5wYXJlbnQoKSA9PSBu
dWxscHRyKSB7CiAgICAgICAgIGRlbGV0ZSBsaXN0WzBdOwpAQCAtMjYzLDExICsyNjMsMTEgQEAg
dm9pZCBLZ1Byb3RvY29sczo6c2xvdFJlbW92ZU1pbWUoKQogCiB2b2lkIEtnUHJvdG9jb2xzOjpy
ZW1vdmVNaW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUpCiB7Ci0gICAgUUxpc3Q8UVRyZWVXaWRnZXRJ
dGVtICo+IGl0ZW1MaXN0ID0gbGlua0xpc3QtPmZpbmRJdGVtcyhuYW1lLCBRdDo6TWF0Y2hFeGFj
dGx5IHwgUXQ6Ok1hdGNoUmVjdXJzaXZlLCAwKTsKKyAgICBRTGlzdDxRVHJlZVdpZGdldEl0ZW0g
Kj4gbWF0Y2hpbmdJdGVtcyA9IGxpbmtMaXN0LT5maW5kSXRlbXMobmFtZSwgUXQ6Ok1hdGNoRXhh
Y3RseSB8IFF0OjpNYXRjaFJlY3Vyc2l2ZSwgMCk7CiAKICAgICBRVHJlZVdpZGdldEl0ZW0gKmN1
cnJlbnRNaW1lSXRlbSA9IG51bGxwdHI7Ci0gICAgaWYgKGl0ZW1MaXN0LmNvdW50KCkgIT0gMCkK
LSAgICAgICAgY3VycmVudE1pbWVJdGVtID0gaXRlbUxpc3RbMF07CisgICAgaWYgKG1hdGNoaW5n
SXRlbXMuY291bnQoKSAhPSAwKQorICAgICAgICBjdXJyZW50TWltZUl0ZW0gPSBtYXRjaGluZ0l0
ZW1zWzBdOwogCiAgICAgaWYgKGN1cnJlbnRNaW1lSXRlbSAmJiBjdXJyZW50TWltZUl0ZW0tPnBh
cmVudCgpICE9IG51bGxwdHIpIHsKICAgICAgICAgbWltZUxpc3QtPmFkZEl0ZW0oY3VycmVudE1p
bWVJdGVtLT50ZXh0KDApKTsKQEAgLTM0NiwxMiArMzQ2LDEyIEBAIGJvb2wgS2dQcm90b2NvbHM6
OmFwcGx5KCkKIHsKICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsICJQcm90b2NvbHMi
KTsKIAotICAgIFFTdHJpbmdMaXN0IHByb3RvY29sTGlzdDsKKyAgICBRU3RyaW5nTGlzdCBoYW5k
bGVkUHJvdG9jb2xzOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gbGlua0xpc3QtPnRvcExl
dmVsSXRlbUNvdW50KCk7IGkrKykgewogICAgICAgICBRVHJlZVdpZGdldEl0ZW0gKml0ZW0gPSBs
aW5rTGlzdC0+dG9wTGV2ZWxJdGVtKGkpOwogCi0gICAgICAgIHByb3RvY29sTGlzdC5hcHBlbmQo
aXRlbS0+dGV4dCgwKSk7CisgICAgICAgIGhhbmRsZWRQcm90b2NvbHMuYXBwZW5kKGl0ZW0tPnRl
eHQoMCkpOwogCiAgICAgICAgIFFTdHJpbmdMaXN0IG1pbWVzOwogCkBAIC0zNjIsNyArMzYyLDcg
QEAgYm9vbCBLZ1Byb3RvY29sczo6YXBwbHkoKQogICAgICAgICB9CiAgICAgICAgIGdyb3VwLndy
aXRlRW50cnkoUVN0cmluZygiTWltZXMgRm9yICUxIikuYXJnKGl0ZW0tPnRleHQoMCkpLCBtaW1l
cyk7CiAgICAgfQotICAgIGdyb3VwLndyaXRlRW50cnkoIkhhbmRsZWQgUHJvdG9jb2xzIiwgcHJv
dG9jb2xMaXN0KTsKKyAgICBncm91cC53cml0ZUVudHJ5KCJIYW5kbGVkIFByb3RvY29scyIsIGhh
bmRsZWRQcm90b2NvbHMpOwogICAgIGtyQ29uZmlnLT5zeW5jKCk7CiAKICAgICBLckFyY0hhbmRs
ZXI6OmNsZWFyUHJvdG9jb2xDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvYXBwL0tvbmZpZ3VyYXRvci9r
b25maWd1cmF0b3JpdGVtcy5jcHAgYi9hcHAvS29uZmlndXJhdG9yL2tvbmZpZ3VyYXRvcml0ZW1z
LmNwcAppbmRleCBhMWMxNmQwZGUuLjNjYjE4ZThlZCAxMDA2NDQKLS0tIGEvYXBwL0tvbmZpZ3Vy
YXRvci9rb25maWd1cmF0b3JpdGVtcy5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rb25maWd1
cmF0b3JpdGVtcy5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgPEtTaGFyZWRDb25m
aWc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAotS29uZmlndXJhdG9yRXh0ZW5zaW9uOjpLb25maWd1
cmF0b3JFeHRlbnNpb24oUU9iamVjdCAqb2JqLCBRU3RyaW5nIGNmZ0dyb3VwLCBRU3RyaW5nIGNm
Z05hbWUsIGJvb2wgcmVzdGFydE5lZWRlZCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JFeHRlbnNp
b246OktvbmZpZ3VyYXRvckV4dGVuc2lvbihRT2JqZWN0ICpvYmosIFFTdHJpbmcgY2ZnR3JvdXAs
IFFTdHJpbmcgY2ZnTmFtZSwgYm9vbCBpc1Jlc3RhcnROZWVkZWQsIGludCBwYWdlKQogICAgIDog
b2JqZWN0UHRyKG9iaikKICAgICAsIGFwcGx5Q29ubmVjdGVkKGZhbHNlKQogICAgICwgc2V0RGVm
YXVsdHNDb25uZWN0ZWQoZmFsc2UpCiAgICAgLCBjaGFuZ2VkKGZhbHNlKQotICAgICwgcmVzdGFy
dE5lZWRlZChyZXN0YXJ0TmVlZGVkKQorICAgICwgcmVzdGFydE5lZWRlZChpc1Jlc3RhcnROZWVk
ZWQpCiAgICAgLCBzdWJwYWdlKHBhZ2UpCiAgICAgLCBjb25maWdHcm91cChzdGQ6Om1vdmUoY2Zn
R3JvdXApKQogICAgICwgY29uZmlnTmFtZShzdGQ6Om1vdmUoY2ZnTmFtZSkpCkBAIC04Myw5ICs4
MywxNSBAQCBib29sIEtvbmZpZ3VyYXRvckV4dGVuc2lvbjo6aXNDaGFuZ2VkKCkKIC8vIEtvbmZp
Z3VyYXRvckNoZWNrQm94IGNsYXNzCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK
LUtvbmZpZ3VyYXRvckNoZWNrQm94OjpLb25maWd1cmF0b3JDaGVja0JveChRU3RyaW5nIGNvbmZp
Z0dyb3VwLCBRU3RyaW5nIG5hbWUsIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBRU3RyaW5nICZ0
ZXh0LCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0
b3JDaGVja0JveDo6S29uZmlndXJhdG9yQ2hlY2tCb3goUVN0cmluZyBjb25maWdHcm91cCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbml0aWFsRGVm
YXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFFTdHJpbmcgJnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUVdpZGdldCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgcGFnZSkKICAgICA6IFFDaGVja0JveCh0ZXh0LCBwYXJlbnQpCi0gICAg
LCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKQorICAgICwgZGVmYXVsdFZhbHVlKGluaXRpYWxE
ZWZhdWx0VmFsdWUpCiB7CiAgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lvbih0aGlz
LCBzdGQ6Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUobmFtZSksIHJlc3RhcnQsIHBhZ2Up
OwogICAgIGNvbm5lY3QoZXh0LCAmS29uZmlndXJhdG9yRXh0ZW5zaW9uOjphcHBseUF1dG8sIHRo
aXMsICZLb25maWd1cmF0b3JDaGVja0JveDo6c2xvdEFwcGx5KTsKQEAgLTE0OCwxNiArMTU0LDE2
IEBAIHZvaWQgS29uZmlndXJhdG9yQ2hlY2tCb3g6OnNsb3RTZXREZWZhdWx0cyhRT2JqZWN0ICop
CiAKIEtvbmZpZ3VyYXRvclNwaW5Cb3g6OktvbmZpZ3VyYXRvclNwaW5Cb3goUVN0cmluZyBjb25m
aWdHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmlu
ZyBjb25maWdOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5pdGlhbERlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG1heCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UVdpZGdldCAqcGFyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHJlc3RhcnROZWVkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNSZXN0YXJ0TmVlZGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcGFnZSkKICAgICA6IFFTcGluQm94KHBhcmVudCkKLSAgICAsIGRl
ZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0VmFsdWUoaW5pdGlhbERlZmF1
bHRWYWx1ZSkKIHsKLSAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0
ZDo6bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShjb25maWdOYW1lKSwgcmVzdGFydE5lZWRl
ZCwgcGFnZSk7CisgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lvbih0aGlzLCBzdGQ6
Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUoY29uZmlnTmFtZSksIGlzUmVzdGFydE5lZWRl
ZCwgcGFnZSk7CiAgICAgY29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5
QXV0bywgdGhpcywgJktvbmZpZ3VyYXRvclNwaW5Cb3g6OnNsb3RBcHBseSk7CiAgICAgY29ubmVj
dChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OnNldERlZmF1bHRzQXV0bywgdGhpcywgJktv
bmZpZ3VyYXRvclNwaW5Cb3g6OnNsb3RTZXREZWZhdWx0cyk7CiAgICAgY29ubmVjdChleHQsICZL
b25maWd1cmF0b3JFeHRlbnNpb246OnNldEluaXRpYWxWYWx1ZSwgdGhpcywgJktvbmZpZ3VyYXRv
clNwaW5Cb3g6OmxvYWRJbml0aWFsVmFsdWUpOwpAQCAtMjI0LDkgKzIzMCw5IEBAIEtvbmZpZ3Vy
YXRvckNoZWNrQm94ICpLb25maWd1cmF0b3JDaGVja0JveEdyb3VwOjpmaW5kKGNvbnN0IFFTdHJp
bmcgJm5hbWUpCiAvLyBLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMgY2xhc3MKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KIAotS29uZmlndXJhdG9yUmFkaW9CdXR0b25zOjpLb25maWd1
cmF0b3JSYWRpb0J1dHRvbnMoUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3Ry
aW5nIGRlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50LCBib29sIHJlc3RhcnQsIGludCBwYWdl
KQorS29uZmlndXJhdG9yUmFkaW9CdXR0b25zOjpLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMoUVN0
cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3RyaW5nIGluaXRpYWxEZWZhdWx0VmFs
dWUsIFFXaWRnZXQgKnBhcmVudCwgYm9vbCByZXN0YXJ0LCBpbnQgcGFnZSkKICAgICA6IFFXaWRn
ZXQocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShkZWZhdWx0VmFsdWUpKQor
ICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZhbHVlKSkKIHsKICAg
ICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6bW92ZShjb25maWdH
cm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAgICAgY29ubmVjdChleHQs
ICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywgJktvbmZpZ3VyYXRvclJh
ZGlvQnV0dG9uczo6c2xvdEFwcGx5KTsKQEAgLTMyNyw5ICszMzMsOSBAQCB2b2lkIEtvbmZpZ3Vy
YXRvclJhZGlvQnV0dG9uczo6c2xvdFNldERlZmF1bHRzKFFPYmplY3QgKikKIC8vIEtvbmZpZ3Vy
YXRvckVkaXRCb3ggY2xhc3MKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotS29u
ZmlndXJhdG9yRWRpdEJveDo6S29uZmlndXJhdG9yRWRpdEJveChRU3RyaW5nIGNvbmZpZ0dyb3Vw
LCBRU3RyaW5nIG5hbWUsIFFTdHJpbmcgZGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJlbnQsIGJv
b2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JFZGl0Qm94OjpLb25maWd1cmF0b3JF
ZGl0Qm94KFFTdHJpbmcgY29uZmlnR3JvdXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZyBpbml0aWFs
RGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCiAg
ICAgOiBRTGluZUVkaXQocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShkZWZh
dWx0VmFsdWUpKQorICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZh
bHVlKSkKIHsKICAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6
bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAgICAg
Y29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywgJktv
bmZpZ3VyYXRvckVkaXRCb3g6OnNsb3RBcHBseSk7CkBAIC0zNjksMTQgKzM3NSwxNCBAQCB2b2lk
IEtvbmZpZ3VyYXRvckVkaXRCb3g6OnNsb3RTZXREZWZhdWx0cyhRT2JqZWN0ICopCiAKIEtvbmZp
Z3VyYXRvclVSTFJlcXVlc3Rlcjo6S29uZmlndXJhdG9yVVJMUmVxdWVzdGVyKFFTdHJpbmcgY29u
ZmlnR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBRU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgaW5pdGlhbERlZmF1bHRWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFX
aWRnZXQgKnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBwYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbnNpb24pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRXhwYW5zaW9uKQogICAg
IDogS1VybFJlcXVlc3RlcihwYXJlbnQpCi0gICAgLCBkZWZhdWx0VmFsdWUoc3RkOjptb3ZlKGRl
ZmF1bHRWYWx1ZSkpCi0gICAgLCBleHBhbnNpb24oZXhwYW5zaW9uKQorICAgICwgZGVmYXVsdFZh
bHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZhbHVlKSkKKyAgICAsIGV4cGFuc2lvbihpc0V4
cGFuc2lvbikKIHsKICAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0
ZDo6bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAg
ICAgY29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywg
JktvbmZpZ3VyYXRvclVSTFJlcXVlc3Rlcjo6c2xvdEFwcGx5KTsKQEAgLTQxNCw5ICs0MjAsOSBA
QCB2b2lkIEtvbmZpZ3VyYXRvclVSTFJlcXVlc3Rlcjo6c2xvdFNldERlZmF1bHRzKFFPYmplY3Qg
KikKIC8vIEtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyIGNsYXNzCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAKLUtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyOjpLb25maWd1cmF0b3JGb250
Q2hvb3NlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIGNvbnN0IFFGb250ICZk
ZWZhdWx0VmFsdWUsIFFXaWRnZXQgKnBhcmVudCwgYm9vbCByZXN0YXJ0LCBpbnQgcGFnZSkKK0tv
bmZpZ3VyYXRvckZvbnRDaG9vc2VyOjpLb25maWd1cmF0b3JGb250Q2hvb3NlcihRU3RyaW5nIGNv
bmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIGNvbnN0IFFGb250ICZpbml0aWFsRGVmYXVsdFZhbHVl
LCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCiAgICAgOiBRV2lkZ2V0
KHBhcmVudCkKLSAgICAsIGRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0
VmFsdWUoaW5pdGlhbERlZmF1bHRWYWx1ZSkKIHsKICAgICBhdXRvICpsYXlvdXQgPSBuZXcgUUhC
b3hMYXlvdXQodGhpcyk7CiAKQEAgLTQ4NSw3ICs0OTEsNyBAQCB2b2lkIEtvbmZpZ3VyYXRvckZv
bnRDaG9vc2VyOjpzbG90QnJvd3NlRm9udCgpCiAKIEtvbmZpZ3VyYXRvckNvbWJvQm94OjpLb25m
aWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGluaXRpYWxEZWZhdWx0
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS09ORklH
VVJBVE9SX05BTUVfVkFMVUVfUEFJUiAqbGlzdEluLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBsaXN0SW5MZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50LApAQCAtNDkzLDcgKzQ5OSw3IEBA
IEtvbmZpZ3VyYXRvckNvbWJvQm94OjpLb25maWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZp
Z0dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZWRpdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHBhZ2UpCiAgICAgOiBRQ29tYm9Cb3gocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6
bW92ZShkZWZhdWx0VmFsdWUpKQorICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFs
RGVmYXVsdFZhbHVlKSkKICAgICAsIGxpc3RMZW4obGlzdEluTGVuKQogewogICAgIGxpc3QgPSBu
ZXcgS09ORklHVVJBVE9SX05BTUVfVkFMVUVfUEFJUltsaXN0SW5MZW5dOwpAQCAtNTY4LDE0ICs1
NzQsMTQgQEAgdm9pZCBLb25maWd1cmF0b3JDb21ib0JveDo6c2xvdFNldERlZmF1bHRzKFFPYmpl
Y3QgKikKIAogS29uZmlndXJhdG9yQ29sb3JDaG9vc2VyOjpLb25maWd1cmF0b3JDb2xvckNob29z
ZXIoUVN0cmluZyBjb25maWdHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvciAmZGVmYXVsdFZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UUNvbG9yICZpbml0aWFsRGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURESVRJT05BTF9D
T0xPUiAqYWRkQ29sUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGFkZENvbE51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlKQogICAgIDogUUNvbWJvQm94KHBhcmVudCkK
LSAgICAsIGRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0VmFsdWUoaW5p
dGlhbERlZmF1bHRWYWx1ZSkKICAgICAsIGRpc2FibGVDb2xvckNob29zZXIodHJ1ZSkKIHsKICAg
ICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6bW92ZShjb25maWdH
cm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CkBAIC03NzcsOSArNzgzLDkg
QEAgUUNvbG9yIEtvbmZpZ3VyYXRvckNvbG9yQ2hvb3Nlcjo6Z2V0Q29sb3IoKQogLy8gS29uZmln
dXJhdG9yTGlzdEJveCBjbGFzcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1L
b25maWd1cmF0b3JMaXN0Qm94OjpLb25maWd1cmF0b3JMaXN0Qm94KFFTdHJpbmcgY29uZmlnR3Jv
dXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZ0xpc3QgZGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJl
bnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JMaXN0Qm94OjpLb25maWd1
cmF0b3JMaXN0Qm94KFFTdHJpbmcgY29uZmlnR3JvdXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZ0xp
c3QgaW5pdGlhbERlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50LCBib29sIHJlc3RhcnQsIGlu
dCBwYWdlKQogICAgIDogS3JMaXN0V2lkZ2V0KHBhcmVudCkKLSAgICAsIGRlZmF1bHRWYWx1ZShz
dGQ6Om1vdmUoZGVmYXVsdFZhbHVlKSkKKyAgICAsIGRlZmF1bHRWYWx1ZShzdGQ6Om1vdmUoaW5p
dGlhbERlZmF1bHRWYWx1ZSkpCiB7CiAgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lv
bih0aGlzLCBzdGQ6Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUobmFtZSksIHJlc3RhcnQs
IHBhZ2UpOwogICAgIGNvbm5lY3QoZXh0LCAmS29uZmlndXJhdG9yRXh0ZW5zaW9uOjphcHBseUF1
dG8sIHRoaXMsICZLb25maWd1cmF0b3JMaXN0Qm94OjpzbG90QXBwbHkpOwpkaWZmIC0tZ2l0IGEv
YXBwL0tvbmZpZ3VyYXRvci9rb25maWd1cmF0b3JpdGVtcy5oIGIvYXBwL0tvbmZpZ3VyYXRvci9r
b25maWd1cmF0b3JpdGVtcy5oCmluZGV4IGFmNGZmNjg3Yi4uZjYwMWJhODlkIDEwMDY0NAotLS0g
YS9hcHAvS29uZmlndXJhdG9yL2tvbmZpZ3VyYXRvcml0ZW1zLmgKKysrIGIvYXBwL0tvbmZpZ3Vy
YXRvci9rb25maWd1cmF0b3JpdGVtcy5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEtvbmZpZ3Vy
YXRvckV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgot
ICAgIEtvbmZpZ3VyYXRvckV4dGVuc2lvbihRT2JqZWN0ICpvYmosIFFTdHJpbmcgY2ZnR3JvdXAs
IFFTdHJpbmcgY2ZnTmFtZSwgYm9vbCByZXN0YXJ0TmVlZGVkID0gZmFsc2UsIGludCBwYWdlID0g
RklSU1RfUEFHRSk7CisgICAgS29uZmlndXJhdG9yRXh0ZW5zaW9uKFFPYmplY3QgKm9iaiwgUVN0
cmluZyBjZmdHcm91cCwgUVN0cmluZyBjZmdOYW1lLCBib29sIGlzUmVzdGFydE5lZWRlZCA9IGZh
bHNlLCBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOwogCiAgICAgdmlydHVhbCB2b2lkIGxvYWRJbml0
aWFsVmFsdWUoKTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoKTsKQEAgLTEwOSw3ICsxMDksNyBA
QCBjbGFzcyBLb25maWd1cmF0b3JDaGVja0JveCA6IHB1YmxpYyBRQ2hlY2tCb3gKIHB1YmxpYzoK
ICAgICBLb25maWd1cmF0b3JDaGVja0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluaXRpYWxE
ZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmdGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdGFydCA9IGZhbHNlLApAQCAtMTUwLDEx
ICsxNTAsMTEgQEAgY2xhc3MgS29uZmlndXJhdG9yU3BpbkJveCA6IHB1YmxpYyBRU3BpbkJveAog
cHVibGljOgogICAgIEtvbmZpZ3VyYXRvclNwaW5Cb3goUVN0cmluZyBjb25maWdHcm91cCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgY29uZmlnTmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBkZWZhdWx0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5pdGlhbERlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAg
UVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cmVzdGFydE5lZWRlZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Jl
c3RhcnROZWVkZWQgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlID0g
RklSU1RfUEFHRSk7CiAgICAgfktvbmZpZ3VyYXRvclNwaW5Cb3goKSBvdmVycmlkZTsKIApAQCAt
MjA0LDcgKzIwNCwxMiBAQCBjbGFzcyBLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMgOiBwdWJsaWMg
UVdpZGdldAogICAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKLSAgICBLb25maWd1cmF0b3JSYWRpb0J1
dHRvbnMoUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3RyaW5nIGRlZmF1bHRW
YWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwgYm9vbCByZXN0YXJ0ID0gZmFsc2UsIGlu
dCBwYWdlID0gRklSU1RfUEFHRSk7CisgICAgS29uZmlndXJhdG9yUmFkaW9CdXR0b25zKFFTdHJp
bmcgY29uZmlnR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBpbml0aWFsRGVmYXVsdFZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQgPSBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3RhcnQgPSBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhZ2UgPSBGSVJTVF9QQUdFKTsKICAg
ICB+S29uZmlndXJhdG9yUmFkaW9CdXR0b25zKCkgb3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgS29u
ZmlndXJhdG9yRXh0ZW5zaW9uICpleHRlbnNpb24oKQpAQCAtMjQ3LDcgKzI1Miw3IEBAIGNsYXNz
IEtvbmZpZ3VyYXRvckVkaXRCb3ggOiBwdWJsaWMgUUxpbmVFZGl0CiAgICAgUV9PQkpFQ1QKIAog
cHVibGljOgotICAgIEtvbmZpZ3VyYXRvckVkaXRCb3goUVN0cmluZyBjb25maWdHcm91cCwgUVN0
cmluZyBuYW1lLCBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0
ciwgYm9vbCByZXN0YXJ0ID0gZmFsc2UsIGludCBwYWdlID0gRklSU1RfUEFHRSk7CisgICAgS29u
ZmlndXJhdG9yRWRpdEJveChRU3RyaW5nIGNvbmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIFFTdHJp
bmcgaW5pdGlhbERlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwgYm9vbCBy
ZXN0YXJ0ID0gZmFsc2UsIGludCBwYWdlID0gRklSU1RfUEFHRSk7CiAgICAgfktvbmZpZ3VyYXRv
ckVkaXRCb3goKSBvdmVycmlkZTsKIAogICAgIGlubGluZSBLb25maWd1cmF0b3JFeHRlbnNpb24g
KmV4dGVuc2lvbigpCkBAIC0yNzUsMTEgKzI4MCwxMSBAQCBjbGFzcyBLb25maWd1cmF0b3JVUkxS
ZXF1ZXN0ZXIgOiBwdWJsaWMgS1VybFJlcXVlc3RlcgogcHVibGljOgogICAgIEtvbmZpZ3VyYXRv
clVSTFJlcXVlc3RlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJp
bmcgZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGlu
aXRpYWxEZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXaWRnZXQg
KnBhcmVudCA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVz
dGFydCA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZSA9IEZJ
UlNUX1BBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwYW5zaW9uID0g
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNFeHBhbnNpb24gPSB0
cnVlKTsKICAgICB+S29uZmlndXJhdG9yVVJMUmVxdWVzdGVyKCkgb3ZlcnJpZGU7CiAKICAgICBp
bmxpbmUgS29uZmlndXJhdG9yRXh0ZW5zaW9uICpleHRlbnNpb24oKQpAQCAtMzA4LDcgKzMxMyw3
IEBAIGNsYXNzIEtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyIDogcHVibGljIFFXaWRnZXQKIHB1Ymxp
YzoKICAgICBLb25maWd1cmF0b3JGb250Q2hvb3NlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBRRm9udCAmZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFFGb250ICZpbml0aWFsRGVmYXVsdFZhbHVlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFXaWRnZXQgKnBhcmVudCA9IG51bGxwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHBhZ2UgPSBGSVJTVF9QQUdFKTsKQEAgLTM2Myw3ICszNjgsNyBAQCBjbGFz
cyBLb25maWd1cmF0b3JDb21ib0JveCA6IHB1YmxpYyBRQ29tYm9Cb3gKIHB1YmxpYzoKICAgICBL
b25maWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n
IGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGluaXRpYWxE
ZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgS09ORklHVVJBVE9SX05BTUVf
VkFMVUVfUEFJUiAqbGlzdEluLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0SW5M
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwK
QEAgLTQwNyw3ICs0MTIsNyBAQCBjbGFzcyBLb25maWd1cmF0b3JDb2xvckNob29zZXIgOiBwdWJs
aWMgUUNvbWJvQm94CiBwdWJsaWM6CiAgICAgS29uZmlndXJhdG9yQ29sb3JDaG9vc2VyKFFTdHJp
bmcgY29uZmlnR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yICZkZWZhdWx0VmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvciAmaW5pdGlhbERl
ZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50
ID0gbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0g
ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFERElUSU9OQUxfQ09MT1IgKmFk
ZENvbFB0ciA9IG51bGxwdHIsCkBAIC00NTgsNyArNDYzLDEyIEBAIGNsYXNzIEtvbmZpZ3VyYXRv
ckxpc3RCb3ggOiBwdWJsaWMgS3JMaXN0V2lkZ2V0CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgot
ICAgIEtvbmZpZ3VyYXRvckxpc3RCb3goUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1l
LCBRU3RyaW5nTGlzdCBkZWZhdWx0VmFsdWUsIFFXaWRnZXQgKnBhcmVudCA9IG51bGxwdHIsIGJv
b2wgcmVzdGFydCA9IGZhbHNlLCBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOworICAgIEtvbmZpZ3Vy
YXRvckxpc3RCb3goUVN0cmluZyBjb25maWdHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFFTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXN0IGluaXRp
YWxEZWZhdWx0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQg
PSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0gZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOwogICAgIH5L
b25maWd1cmF0b3JMaXN0Qm94KCkgb3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgS29uZmlndXJhdG9y
RXh0ZW5zaW9uICpleHRlbnNpb24oKQpkaWZmIC0tZ2l0IGEvYXBwL0tvbmZpZ3VyYXRvci9rcnJl
c3VsdHRhYmxlLmNwcCBiL2FwcC9Lb25maWd1cmF0b3Iva3JyZXN1bHR0YWJsZS5jcHAKaW5kZXgg
MjQ1ZmFhZmQ0Li5iZmE4MzZlMDEgMTAwNjQ0Ci0tLSBhL2FwcC9Lb25maWd1cmF0b3Iva3JyZXN1
bHR0YWJsZS5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rcnJlc3VsdHRhYmxlLmNwcApAQCAt
MzEwLDcgKzMxMCw3IEBAIEtyVG9vbFJlc3VsdFRhYmxlOjp+S3JUb29sUmVzdWx0VGFibGUoKSA9
IGRlZmF1bHQ7CiBib29sIEtyVG9vbFJlc3VsdFRhYmxlOjphZGRSb3coU2VhcmNoT2JqZWN0ICpz
ZWFyY2gsIFFHcmlkTGF5b3V0ICpncmlkKQogewogICAgIGF1dG8gKmFwcEdyb3VwID0gZHluYW1p
Y19jYXN0PEFwcGxpY2F0aW9uR3JvdXAgKj4oc2VhcmNoKTsKLSAgICBRTGlzdDxBcHBsaWNhdGlv
biAqPiBfYXBwcyA9IGFwcEdyb3VwLT5nZXRBcHBWZWMoKTsKKyAgICBRTGlzdDxBcHBsaWNhdGlv
biAqPiBfYXBwc1ZlYyA9IGFwcEdyb3VwLT5nZXRBcHBWZWMoKTsKIAogICAgIC8vIE5hbWUgY29s
dW1uCiAgICAgX2xhYmVsID0gbmV3IFFMYWJlbChhcHBHcm91cC0+Z2V0U2VhcmNoTmFtZSgpLCB0
aGlzKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBib29sIEtyVG9vbFJlc3VsdFRhYmxlOjphZGRSb3co
U2VhcmNoT2JqZWN0ICpzZWFyY2gsIFFHcmlkTGF5b3V0ICpncmlkKQogICAgIFFXaWRnZXQgKnRv
b2xCb3hXaWRnZXQgPSBuZXcgUVdpZGdldCh0aGlzKTsKICAgICBhdXRvICp0b29sQm94ID0gbmV3
IFFWQm94TGF5b3V0KHRvb2xCb3hXaWRnZXQpOwogCi0gICAgZm9yIChhdXRvICZfYXBwIDogX2Fw
cHMpIHsKKyAgICBmb3IgKGF1dG8gJl9hcHAgOiBfYXBwc1ZlYykgewogICAgICAgICBhdXRvICps
ID0gbmV3IEtVcmxMYWJlbChfYXBwLT5nZXRXZWJzaXRlKCksIF9hcHAtPmdldEFwcE5hbWUoKSwg
dG9vbEJveFdpZGdldCk7CiAgICAgICAgIHRvb2xCb3gtPmFkZFdpZGdldChsKTsKIApAQCAtMzM4
LDcgKzMzOCw3IEBAIGJvb2wgS3JUb29sUmVzdWx0VGFibGU6OmFkZFJvdyhTZWFyY2hPYmplY3Qg
KnNlYXJjaCwgUUdyaWRMYXlvdXQgKmdyaWQpCiAgICAgUVdpZGdldCAqdmJveFdpZGdldCA9IG5l
dyBRV2lkZ2V0KHRoaXMpOwogICAgIGF1dG8gKnZib3ggPSBuZXcgUVZCb3hMYXlvdXQodmJveFdp
ZGdldCk7CiAKLSAgICBmb3IgKGF1dG8gJl9hcHAgOiBfYXBwcykgeworICAgIGZvciAoYXV0byAm
X2FwcCA6IF9hcHBzVmVjKSB7CiAgICAgICAgIF9sYWJlbCA9IG5ldyBRTGFiZWwoX2FwcC0+Z2V0
UGF0aCgpLCB2Ym94V2lkZ2V0KTsKICAgICAgICAgX2xhYmVsLT5zZXRDb250ZW50c01hcmdpbnMo
NSwgNSwgNSwgNSk7CiAgICAgICAgIF9sYWJlbC0+c2V0QWxpZ25tZW50KFF0OjpBbGlnblRvcCk7
CmRpZmYgLS1naXQgYS9hcHAvS3JWaWV3ZXIvbGlzdGVyLmNwcCBiL2FwcC9LclZpZXdlci9saXN0
ZXIuY3BwCmluZGV4IDg5ODNlMDY1MC4uMWQzNzQzMDE2IDEwMDY0NAotLS0gYS9hcHAvS3JWaWV3
ZXIvbGlzdGVyLmNwcAorKysgYi9hcHAvS3JWaWV3ZXIvbGlzdGVyLmNwcApAQCAtMTEsOSArMTEs
OSBAQAogI2luY2x1ZGUgPFFEYXRlPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFSZWN0
PgorI2luY2x1ZGUgPFFTdHJpbmdDb252ZXJ0ZXI+CiAjaW5jbHVkZSA8UVRlbXBvcmFyeUZpbGU+
CiAjaW5jbHVkZSA8UVRleHRTdHJlYW0+Ci0jaW5jbHVkZSA8UVN0cmluZ0NvbnZlcnRlcj4KIC8v
IFF0R3VpCiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRRm9udERhdGFiYXNlPgpA
QCAtNDAsMTAgKzQwLDEwIEBACiAjaW5jbHVkZSA8S0FjdGlvbkNvbGxlY3Rpb24+CiAjaW5jbHVk
ZSA8S0NoYXJzZXRzPgogI2luY2x1ZGUgPEtJTy9Db3B5Sm9iPgorI2luY2x1ZGUgPEtJTy9Kb2JU
cmFja2VyPgogI2luY2x1ZGUgPEtJTy9Kb2JVaURlbGVnYXRlPgogI2luY2x1ZGUgPEtJTy9Kb2JV
aURlbGVnYXRlRmFjdG9yeT4KICNpbmNsdWRlIDxLSU8vVHJhbnNmZXJKb2I+Ci0jaW5jbHVkZSA8
S0lPL0pvYlRyYWNrZXI+CiAjaW5jbHVkZSA8S0pvYlRyYWNrZXJJbnRlcmZhY2U+CiAjaW5jbHVk
ZSA8S0xvY2FsaXplZFN0cmluZz4KICNpbmNsdWRlIDxLTWVzc2FnZUJveD4KQEAgLTE4NDgsMTEg
KzE4NDgsMTMgQEAgdm9pZCBMaXN0ZXI6OnVwZGF0ZVByb2dyZXNzQmFyKCkKIAogdm9pZCBMaXN0
ZXI6Omp1bXBUb1Bvc2l0aW9uKCkKIHsKLSAgICBib29sIG9rID0gdHJ1ZTsKLSAgICBRU3RyaW5n
IHJlcyA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dChfdGV4dEFyZWEsIGkxOG4oIkp1bXAgdG8gcG9z
aXRpb24iKSwgaTE4bigiVGV4dCBwb3NpdGlvbjoiKSwgUUxpbmVFZGl0OjpOb3JtYWwsICIwIiwg
Jm9rKTsKLSAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm47Ci0KKyAgICBRU3RyaW5nIHJlczsK
KyAgICB7CisgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICByZXMgPSBRSW5wdXREaWFs
b2c6OmdldFRleHQoX3RleHRBcmVhLCBpMThuKCJKdW1wIHRvIHBvc2l0aW9uIiksIGkxOG4oIlRl
eHQgcG9zaXRpb246IiksIFFMaW5lRWRpdDo6Tm9ybWFsLCAiMCIsICZvayk7CisgICAgICAgIGlm
ICghb2spCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogICAgIHJlcyA9IHJlcy50cmltbWVk
KCk7CiAgICAgcWludDY0IHBvcyA9IC0xOwogICAgIGlmIChyZXMuc3RhcnRzV2l0aChRTGF0aW4x
U3RyaW5nKCIweCIpKSkgewpkaWZmIC0tZ2l0IGEvYXBwL0tyVmlld2VyL3BhbmVsdmlld2VyLmNw
cCBiL2FwcC9LclZpZXdlci9wYW5lbHZpZXdlci5jcHAKaW5kZXggODIzOGQyNTY1Li43ODNhMzVi
M2MgMTAwNjQ0Ci0tLSBhL2FwcC9LclZpZXdlci9wYW5lbHZpZXdlci5jcHAKKysrIGIvYXBwL0ty
Vmlld2VyL3BhbmVsdmlld2VyLmNwcApAQCAtMTQsMjcgKzE0LDI4IEBACiAvLyBRdFdpZGdldHMK
ICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAKKyNpbmNsdWRlIDxLSU8vU3RhdEpvYj4KICNpbmNs
dWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1ZGUgPEtQYXJ0cy9OYXZpZ2F0aW9uRXh0ZW5z
aW9uPgotI2luY2x1ZGUgPEtQYXJ0cy9SZWFkV3JpdGVQYXJ0PgotI2luY2x1ZGUgPEtTaGFyZWRD
b25maWc+CiAjaW5jbHVkZSA8S1BhcnRzL1BhcnRMb2FkZXI+Ci0jaW5jbHVkZSA8S0lPL1N0YXRK
b2I+CisjaW5jbHVkZSA8S1BhcnRzL1JlYWRXcml0ZVBhcnQ+CiAjaW5jbHVkZSA8S1NlcnZpY2U+
CisjaW5jbHVkZSA8S1NoYXJlZENvbmZpZz4KIAogI2luY2x1ZGUgPEtGaWxlSXRlbT4KICNpbmNs
dWRlIDxLTWVzc2FnZUJveD4KIAogI2luY2x1ZGUgIi4uL2RlZmF1bHRzLmgiCisjaW5jbHVkZSAi
a3J2aWV3ZXIuaCIKICNpbmNsdWRlICJsaXN0ZXIuaCIKIAogI2RlZmluZSBESUNUU0laRSAyMTEK
IAotUGFuZWxWaWV3ZXJCYXNlOjpQYW5lbFZpZXdlckJhc2UoUVdpZGdldCAqcGFyZW50LCBLclZp
ZXdlcjo6TW9kZSBtb2RlKQorUGFuZWxWaWV3ZXJCYXNlOjpQYW5lbFZpZXdlckJhc2UoUVdpZGdl
dCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUpCiAgICAgOiBRU3RhY2tlZFdpZGdl
dChwYXJlbnQpCiAgICAgLCBtaW1lcyhudWxscHRyKQogICAgICwgY3BhcnQobnVsbHB0cikKLSAg
ICAsIG1vZGUobW9kZSkKKyAgICAsIG1vZGUocGFuZWxNb2RlKQogewogICAgIHNldFNpemVQb2xp
Y3koUVNpemVQb2xpY3koUVNpemVQb2xpY3k6OlByZWZlcnJlZCwgUVNpemVQb2xpY3k6Oklnbm9y
ZWQpKTsKIApAQCAtMTEwLDggKzExMSw4IEBAIHZvaWQgUGFuZWxWaWV3ZXJCYXNlOjpvcGVuVXJs
KGNvbnN0IFFVcmwgJnVybCkKIAogLyogLS0tLT09PXsgUGFuZWxWaWV3ZXIgfT09PS0tLS0gKi8K
IAotUGFuZWxWaWV3ZXI6OlBhbmVsVmlld2VyKFFXaWRnZXQgKnBhcmVudCwgS3JWaWV3ZXI6Ok1v
ZGUgbW9kZSkKLSAgICA6IFBhbmVsVmlld2VyQmFzZShwYXJlbnQsIG1vZGUpCitQYW5lbFZpZXdl
cjo6UGFuZWxWaWV3ZXIoUVdpZGdldCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUp
CisgICAgOiBQYW5lbFZpZXdlckJhc2UocGFyZW50LCBwYW5lbE1vZGUpCiB7CiB9CiAKQEAgLTE2
NywyMCArMTY4LDI1IEBAIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpQYW5lbFZpZXdlcjo6Z2V0RGVm
YXVsdFBhcnQoY29uc3QgS0ZpbGVJdGVtICZmaSkKICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JD
b25maWcsICJHZW5lcmFsIik7CiAgICAgUVN0cmluZyBtb2RlU3RyaW5nID0gZ3JvdXAucmVhZEVu
dHJ5KCJEZWZhdWx0IFZpZXdlciBNb2RlIiwgUVN0cmluZygiZ2VuZXJpYyIpKTsKIAotICAgIEty
Vmlld2VyOjpNb2RlIG1vZGUgPSBLclZpZXdlcjo6R2VuZXJpYzsKKyAgICBLclZpZXdlcjo6TW9k
ZSBhY3RpdmVNb2RlID0gS3JWaWV3ZXI6OkdlbmVyaWM7CiAKLSAgICBpZiAobW9kZVN0cmluZyA9
PSAiZ2VuZXJpYyIpCi0gICAgICAgIG1vZGUgPSBLclZpZXdlcjo6R2VuZXJpYzsKLSAgICBlbHNl
IGlmIChtb2RlU3RyaW5nID09ICJ0ZXh0IikKLSAgICAgICAgbW9kZSA9IEtyVmlld2VyOjpUZXh0
OwotICAgIGVsc2UgaWYgKG1vZGVTdHJpbmcgPT0gImhleCIpCi0gICAgICAgIG1vZGUgPSBLclZp
ZXdlcjo6SGV4OwotICAgIGVsc2UgaWYgKG1vZGVTdHJpbmcgPT0gImxpc3RlciIpCi0gICAgICAg
IG1vZGUgPSBLclZpZXdlcjo6TGlzdGVyOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eTxzdGQ6OnBhaXI8Y29uc3QgY2hhciAqLCBLclZpZXdlcjo6TW9kZT4sIDQ+IG1hcHBpbmcgPSB7
eworICAgICAgICB7ImdlbmVyaWMiLCBLclZpZXdlcjo6R2VuZXJpY30sCisgICAgICAgIHsidGV4
dCIsIEtyVmlld2VyOjpUZXh0fSwKKyAgICAgICAgeyJoZXgiLCBLclZpZXdlcjo6SGV4fSwKKyAg
ICAgICAgeyJsaXN0ZXIiLCBLclZpZXdlcjo6TGlzdGVyfSwKKyAgICB9fTsKKworICAgIGZvciAo
Y29uc3QgYXV0byAmW2tleSwgdmFsdWVdIDogbWFwcGluZykgeworICAgICAgICBpZiAoa2V5ID09
IG1vZGVTdHJpbmcpIHsKKyAgICAgICAgICAgIGFjdGl2ZU1vZGUgPSB2YWx1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCiAgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0g
ZmkuZGV0ZXJtaW5lTWltZVR5cGUoKTsKICAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7Ci0gICAg
aWYgKG1vZGUgPT0gS3JWaWV3ZXI6OkdlbmVyaWMgfHwgbW9kZSA9PSBLclZpZXdlcjo6TGlzdGVy
KSB7CisgICAgaWYgKGFjdGl2ZU1vZGUgPT0gS3JWaWV3ZXI6OkdlbmVyaWMgfHwgYWN0aXZlTW9k
ZSA9PSBLclZpZXdlcjo6TGlzdGVyKSB7CiAgICAgICAgIGlzQmluYXJ5ID0gIW1pbWVUeXBlLmlu
aGVyaXRzKFFTdHJpbmdMaXRlcmFsKCJ0ZXh0L3BsYWluIikpOwogICAgIH0KIApAQCAtMTkxLDcg
KzE5Nyw3IEBAIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpQYW5lbFZpZXdlcjo6Z2V0RGVmYXVsdFBh
cnQoY29uc3QgS0ZpbGVJdGVtICZmaSkKIAogICAgIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpwYXJ0
ID0gbnVsbHB0cjsKIAotICAgIHN3aXRjaCAobW9kZSkgeworICAgIHN3aXRjaCAoYWN0aXZlTW9k
ZSkgewogICAgIGNhc2UgS3JWaWV3ZXI6OkdlbmVyaWM6CiAgICAgICAgIGlmICgobWltZXR5cGUu
c3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJ0ZXh0LyIpKSB8fCBtaW1ldHlwZS5zdGFydHNXaXRo
KFFMYXRpbjFTdHJpbmcoImFsbC8iKSkpICYmIGZpbGVTaXplID4gbGltaXQpIHsKICAgICAgICAg
ICAgIHBhcnQgPSBnZXRMaXN0ZXJQYXJ0KGlzQmluYXJ5KTsKQEAgLTMxNCw4ICszMjAsOCBAQCBL
UGFydHM6OlJlYWRPbmx5UGFydCAqUGFuZWxWaWV3ZXI6OmNyZWF0ZVBhcnQoUVN0cmluZyBtaW1l
dHlwZSkKIAogLyogLS0tLT09PXsgUGFuZWxFZGl0b3IgfT09PS0tLS0gKi8KIAotUGFuZWxFZGl0
b3I6OlBhbmVsRWRpdG9yKFFXaWRnZXQgKnBhcmVudCwgS3JWaWV3ZXI6Ok1vZGUgbW9kZSkKLSAg
ICA6IFBhbmVsVmlld2VyQmFzZShwYXJlbnQsIG1vZGUpCitQYW5lbEVkaXRvcjo6UGFuZWxFZGl0
b3IoUVdpZGdldCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUpCisgICAgOiBQYW5l
bFZpZXdlckJhc2UocGFyZW50LCBwYW5lbE1vZGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2FwcC9N
b3VudE1hbi9rbW91bnRtYW5ndWkuY3BwIGIvYXBwL01vdW50TWFuL2ttb3VudG1hbmd1aS5jcHAK
aW5kZXggOWIxNDRjNjEzLi44ZTlmOTFiNzIgMTAwNjQ0Ci0tLSBhL2FwcC9Nb3VudE1hbi9rbW91
bnRtYW5ndWkuY3BwCisrKyBiL2FwcC9Nb3VudE1hbi9rbW91bnRtYW5ndWkuY3BwCkBAIC0xNSw5
ICsxNSw5IEBACiAKIC8vIFF0Q29yZQogI2luY2x1ZGUgPFFDcnlwdG9ncmFwaGljSGFzaD4KKyNp
bmNsdWRlIDxRRXZlbnRMb29wPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNsdWRlIDxRTGlz
dD4KLSNpbmNsdWRlIDxRRXZlbnRMb29wPgogLy8gUXRHdWkKICNpbmNsdWRlIDxRQml0bWFwPgog
I2luY2x1ZGUgPFFDdXJzb3I+CkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlIDxRUHVzaEJ1
dHRvbj4KIAogI2luY2x1ZGUgPEtHdWlJdGVtPgorI2luY2x1ZGUgPEtJTy9GaWxlU3lzdGVtRnJl
ZVNwYWNlSm9iPgogI2luY2x1ZGUgPEtMb2NhbGl6ZWRTdHJpbmc+CiAjaW5jbHVkZSA8S01lc3Nh
Z2VCb3g+CiAjaW5jbHVkZSA8S01vdW50UG9pbnQ+CiAjaW5jbHVkZSA8S1NoYXJlZENvbmZpZz4K
LSNpbmNsdWRlIDxLSU8vRmlsZVN5c3RlbUZyZWVTcGFjZUpvYj4KIAogI2luY2x1ZGUgPFNvbGlk
L1N0b3JhZ2VWb2x1bWU+CiAKQEAgLTIxNywxOCArMjE3LDE4IEBAIHZvaWQgS01vdW50TWFuR1VJ
OjpnZXRTcGFjZURhdGEoKQogICAgICAgICBpZiAobW91bnRNYW4tPmludmFsaWRGaWxlc3lzdGVt
KGl0LT5tb3VudFR5cGUoKSkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0g
ICAgICAgIGZzRGF0YSBkYXRhOworICAgICAgICBmc0RhdGEgbW91bnRJbmZvOwogCi0gICAgICAg
IGRhdGEuc2V0TW50UG9pbnQoaXQtPm1vdW50UG9pbnQoKSk7Ci0gICAgICAgIGRhdGEuc2V0TW91
bnRlZCh0cnVlKTsKLSAgICAgICAgZGF0YS5zZXROYW1lKGl0LT5tb3VudGVkRnJvbSgpKTsKLSAg
ICAgICAgZGF0YS5zZXRUeXBlKGl0LT5tb3VudFR5cGUoKSk7CisgICAgICAgIG1vdW50SW5mby5z
ZXRNbnRQb2ludChpdC0+bW91bnRQb2ludCgpKTsKKyAgICAgICAgbW91bnRJbmZvLnNldE1vdW50
ZWQodHJ1ZSk7CisgICAgICAgIG1vdW50SW5mby5zZXROYW1lKGl0LT5tb3VudGVkRnJvbSgpKTsK
KyAgICAgICAgbW91bnRJbmZvLnNldFR5cGUoaXQtPm1vdW50VHlwZSgpKTsKICAgICAgICAgS0lP
OjpGaWxlU3lzdGVtRnJlZVNwYWNlSm9iICpqb2IgPSBLSU86OmZpbGVTeXN0ZW1GcmVlU3BhY2Uo
UVVybDo6ZnJvbUxvY2FsRmlsZShpdC0+bW91bnRQb2ludCgpKSk7CiAgICAgICAgIFFfQVNTRVJU
KGpvYiAhPSBudWxscHRyKTsKIAogICAgICAgICBzaWduYWxzVG9XYWl0Rm9yLT5vcGVyYXRvcisr
KCk7Ci0gICAgICAgIGNvbm5lY3Qoam9iLCAmS0lPOjpGaWxlU3lzdGVtRnJlZVNwYWNlSm9iOjpm
aW5pc2hlZCwgdGhpcywgW3RoaXMsIGRhdGEsIGV2ZW50TG9vcCwgc2lnbmFsc1RvV2FpdEZvcl0o
S0pvYiAqam9iKSB7Ci0gICAgICAgICAgICB0aGlzLT5mcmVlU3BhY2VSZXN1bHQoam9iLCBkYXRh
KTsKKyAgICAgICAgY29ubmVjdChqb2IsICZLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2I6OmZp
bmlzaGVkLCB0aGlzLCBbdGhpcywgbW91bnRJbmZvLCBldmVudExvb3AsIHNpZ25hbHNUb1dhaXRG
b3JdKEtKb2IgKmZpbmlzaGVkSm9iKSB7CisgICAgICAgICAgICB0aGlzLT5mcmVlU3BhY2VSZXN1
bHQoZmluaXNoZWRKb2IsIG1vdW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmICghc2lnbmFsc1Rv
V2FpdEZvci0+ZGVyZWYoKSkgewogICAgICAgICAgICAgICAgIGV2ZW50TG9vcC0+cXVpdCgpOyAv
LyBhbGwgZG9uZQpAQCAtMjQ4LDIxICsyNDgsMjEgQEAgdm9pZCBLTW91bnRNYW5HVUk6OmdldFNw
YWNlRGF0YSgpCiAgICAgdXBkYXRlTGlzdCgpOwogfQogCi12b2lkIEtNb3VudE1hbkdVSTo6ZnJl
ZVNwYWNlUmVzdWx0KEtKb2IgKmpvYiwgZnNEYXRhIGRhdGEpCit2b2lkIEtNb3VudE1hbkdVSTo6
ZnJlZVNwYWNlUmVzdWx0KEtKb2IgKmpvYiwgZnNEYXRhIGZzSW5mbykKIHsKICAgICBpZiAoIWpv
Yi0+ZXJyb3IoKSkgewogICAgICAgICBLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2IgKmZyZWVT
cGFjZUpvYiA9IHFvYmplY3RfY2FzdDxLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2IgKj4oam9i
KTsKICAgICAgICAgUV9BU1NFUlQoZnJlZVNwYWNlSm9iICE9IG51bGxwdHIpOwogICAgICAgICAv
LyBTZXQgdGhlIG1pc3NpbmcgaW5mb3JtYXRpb24sIHdpdGggdGhlIGFzc3VtcHRpb24gdGhlIGNh
bGxlciBhbHJlYWR5IHNldCB0aGUgcmVzdAotICAgICAgICBkYXRhLnNldFRvdGFsQmxrcyhmcmVl
U3BhY2VKb2ItPnNpemUoKSAvIDEwMjQpOwotICAgICAgICBkYXRhLnNldEZyZWVCbGtzKGZyZWVT
cGFjZUpvYi0+YXZhaWxhYmxlU2l6ZSgpIC8gMTAyNCk7CisgICAgICAgIGZzSW5mby5zZXRUb3Rh
bEJsa3MoZnJlZVNwYWNlSm9iLT5zaXplKCkgLyAxMDI0KTsKKyAgICAgICAgZnNJbmZvLnNldEZy
ZWVCbGtzKGZyZWVTcGFjZUpvYi0+YXZhaWxhYmxlU2l6ZSgpIC8gMTAyNCk7CiAKLSAgICAgICAg
ZmlsZVN5c3RlbXMuYXBwZW5kKGRhdGEpOworICAgICAgICBmaWxlU3lzdGVtcy5hcHBlbmQoZnNJ
bmZvKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBIb3cgY2FuIHdlIHNpZ25hbCB0aGUgZXJy
b3IKLSAgICAgICAgZGF0YS5zZXRUb3RhbEJsa3MoMCk7Ci0gICAgICAgIGRhdGEuc2V0RnJlZUJs
a3MoMCk7Ci0gICAgICAgIGZpbGVTeXN0ZW1zLmFwcGVuZChkYXRhKTsKKyAgICAgICAgZnNJbmZv
LnNldFRvdGFsQmxrcygwKTsKKyAgICAgICAgZnNJbmZvLnNldEZyZWVCbGtzKDApOworICAgICAg
ICBmaWxlU3lzdGVtcy5hcHBlbmQoZnNJbmZvKTsKICAgICB9CiB9CiAKQEAgLTI3NCwxNiArMjc0
LDE2IEBAIHZvaWQgS01vdW50TWFuR1VJOjphZGROb25Nb3VudGVkKCkKICAgICAgICAgaWYgKEtN
b3VudE1hbjo6ZmluZEluTGlzdEJ5TW50UG9pbnQobW91bnRlZCwgaXQtPm1vdW50UG9pbnQoKSkp
IHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ZnNEYXRhIGRhdGE7Ci0gICAgICAgICAgICBkYXRhLnNldE1udFBvaW50KGl0LT5tb3VudFBvaW50
KCkpOwotICAgICAgICAgICAgZGF0YS5zZXRNb3VudGVkKGZhbHNlKTsKLSAgICAgICAgICAgIGRh
dGEuc2V0VHlwZShpdC0+bW91bnRUeXBlKCkpOwotICAgICAgICAgICAgZGF0YS5zZXROYW1lKGl0
LT5tb3VudGVkRnJvbSgpKTsKKyAgICAgICAgICAgIGZzRGF0YSBtb3VudEluZm87CisgICAgICAg
ICAgICBtb3VudEluZm8uc2V0TW50UG9pbnQoaXQtPm1vdW50UG9pbnQoKSk7CisgICAgICAgICAg
ICBtb3VudEluZm8uc2V0TW91bnRlZChmYWxzZSk7CisgICAgICAgICAgICBtb3VudEluZm8uc2V0
VHlwZShpdC0+bW91bnRUeXBlKCkpOworICAgICAgICAgICAgbW91bnRJbmZvLnNldE5hbWUoaXQt
Pm1vdW50ZWRGcm9tKCkpOwogCi0gICAgICAgICAgICBpZiAobW91bnRNYW4tPmludmFsaWRGaWxl
c3lzdGVtKGRhdGEudHlwZSgpKSkKKyAgICAgICAgICAgIGlmIChtb3VudE1hbi0+aW52YWxpZEZp
bGVzeXN0ZW0obW91bnRJbmZvLnR5cGUoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGZpbGVTeXN0ZW1zLmFwcGVuZChkYXRhKTsKKyAgICAgICAgICAgIGZpbGVT
eXN0ZW1zLmFwcGVuZChtb3VudEluZm8pOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQuY3BwIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9r
cnNvcnQuY3BwCmluZGV4IGI2NTNkNjM3YS4uMzNlOWI4MzJjIDEwMDY0NAotLS0gYS9hcHAvUGFu
ZWwvUGFuZWxWaWV3L2tyc29ydC5jcHAKKysrIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQu
Y3BwCkBAIC0xMDAsNDggKzEwMCw0NiBAQCBpbnQgY29tcGFyZU51bWJlcnMoUVN0cmluZyAmYVMx
LCBpbnQgJmFQb3MxLCBRU3RyaW5nICZhUzIsIGludCAmYVBvczIpCiAgICAgcmV0dXJuIHJlczsK
IH0KIAotYm9vbCBjb21wYXJlVGV4dHNBbHBoYWJldGljYWwoUVN0cmluZyAmYVMxLCBRU3RyaW5n
ICZhUzIsIGNvbnN0IEtyVmlld1Byb3BlcnRpZXMgKl92aWV3UHJvcGVydGllcywgYm9vbCBhTnVt
YmVycykKK2Jvb2wgY29tcGFyZVRleHRzQWxwaGFiZXRpY2FsKFFTdHJpbmcgJmxlZnRTdHJpbmcs
IFFTdHJpbmcgJnJpZ2h0U3RyaW5nLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3Bl
cnRpZXMsIGJvb2wgYU51bWJlcnMpCiB7Ci0gICAgaW50IGxQb3NpdGlvblMxID0gMDsKLSAgICBp
bnQgbFBvc2l0aW9uUzIgPSAwOworICAgIGludCBsZWZ0UG9zID0gMDsKKyAgICBpbnQgcmlnaHRQ
b3MgPSAwOwogICAgIC8vIHNvbWV0aW1lcywgbG9jYWxlQXdhcmVDb21wYXJlIGlzIG5vdCBjYXNl
IHNlbnNpdGl2ZS4gaW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGZhbGxiYWNrIHRvIGEgc2ltcGxl
IHN0cmluZyBjb21wYXJlIChLREUgYnVnICM0MDEzMSkKICAgICBib29sIGxVc2VMb2NhbGVBd2Fy
ZSA9ICgoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0T3B0aW9ucyAmIEtyVmlld1Byb3BlcnRpZXM6Okln
bm9yZUNhc2UpIHx8IF92aWV3UHJvcGVydGllcy0+bG9jYWxlQXdhcmVDb21wYXJlSXNDYXNlU2Vu
c2l0aXZlKQogICAgICAgICAmJiAoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0T3B0aW9ucyAmIEtyVmll
d1Byb3BlcnRpZXM6OkxvY2FsZUF3YXJlU29ydCk7Ci0gICAgaW50IGogPSAwOwotICAgIFFDaGFy
IGxjaGFyMTsKLSAgICBRQ2hhciBsY2hhcjI7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
bGNoYXIxID0gYVMxW2xQb3NpdGlvblMxXTsKLSAgICAgICAgbGNoYXIyID0gYVMyW2xQb3NpdGlv
blMyXTsKKyAgICAgICAgY29uc3QgUUNoYXIgbGVmdENoYXIgPSBsZWZ0U3RyaW5nW2xlZnRQb3Nd
OworICAgICAgICBjb25zdCBRQ2hhciByaWdodENoYXIgPSByaWdodFN0cmluZ1tyaWdodFBvc107
CiAgICAgICAgIC8vIGRldGVjdCBudW1iZXJzCi0gICAgICAgIGlmIChhTnVtYmVycyAmJiBsY2hh
cjEuaXNEaWdpdCgpICYmIGxjaGFyMi5pc0RpZ2l0KCkpIHsKLSAgICAgICAgICAgIGludCBqID0g
Y29tcGFyZU51bWJlcnMoYVMxLCBsUG9zaXRpb25TMSwgYVMyLCBsUG9zaXRpb25TMik7Ci0gICAg
ICAgICAgICBpZiAoaiAhPSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBqIDwgMDsKKyAgICAg
ICAgaWYgKGFOdW1iZXJzICYmIGxlZnRDaGFyLmlzRGlnaXQoKSAmJiByaWdodENoYXIuaXNEaWdp
dCgpKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gY29tcGFyZU51bWJlcnMobGVmdFN0cmlu
ZywgbGVmdFBvcywgcmlnaHRTdHJpbmcsIHJpZ2h0UG9zKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IDwgMDsKICAgICAgICAgfSBl
bHNlIGlmIChsVXNlTG9jYWxlQXdhcmUKLSAgICAgICAgICAgICAgICAgICAmJiAoKGxjaGFyMSA+
PSBRQ2hhcigxMjgpICYmICgobGNoYXIyID49ICdBJyAmJiBsY2hhcjIgPD0gJ1onKSB8fCAobGNo
YXIyID49ICdhJyAmJiBsY2hhcjIgPD0gJ3onKSB8fCBsY2hhcjIgPj0gUUNoYXIoMTI4KSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgIHx8IChsY2hhcjIgPj0gUUNoYXIoMTI4KSAmJiAoKGxjaGFy
MSA+PSAnQScgJiYgbGNoYXIxIDw9ICdaJykgfHwgKGxjaGFyMSA+PSAnYScgJiYgbGNoYXIxIDw9
ICd6JykgfHwgbGNoYXIxID49IFFDaGFyKDEyOCkpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAm
JiAoKGxlZnRDaGFyID49IFFDaGFyKDEyOCkgJiYgKChyaWdodENoYXIgPj0gJ0EnICYmIHJpZ2h0
Q2hhciA8PSAnWicpIHx8IChyaWdodENoYXIgPj0gJ2EnICYmIHJpZ2h0Q2hhciA8PSAneicpIHx8
IHJpZ2h0Q2hhciA+PSBRQ2hhcigxMjgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgKHJp
Z2h0Q2hhciA+PSBRQ2hhcigxMjgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoKGxl
ZnRDaGFyID49ICdBJyAmJiBsZWZ0Q2hhciA8PSAnWicpIHx8IChsZWZ0Q2hhciA+PSAnYScgJiYg
bGVmdENoYXIgPD0gJ3onKSB8fCBsZWZ0Q2hhciA+PSBRQ2hhcigxMjgpKSkpKSB7CiAgICAgICAg
ICAgICAvLyB1c2UgbG9jYWxlQXdhcmVDb21wYXJlIHdoZW4gYSB1bmljb2RlIGNoYXJhY3RlciBp
cyBlbmNvdW50ZXJlZAotICAgICAgICAgICAgaiA9IFFTdHJpbmc6OmxvY2FsZUF3YXJlQ29tcGFy
ZShsY2hhcjEsIGxjaGFyMik7Ci0gICAgICAgICAgICBpZiAoaiAhPSAwKQotICAgICAgICAgICAg
ICAgIHJldHVybiBqIDwgMDsKLSAgICAgICAgICAgIGxQb3NpdGlvblMxKys7Ci0gICAgICAgICAg
ICBsUG9zaXRpb25TMisrOworICAgICAgICAgICAgaW50IHJlc3VsdCA9IFFTdHJpbmc6OmxvY2Fs
ZUF3YXJlQ29tcGFyZShsZWZ0Q2hhciwgcmlnaHRDaGFyKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IDwgMDsKKyAgICAgICAgICAg
IGxlZnRQb3MrKzsKKyAgICAgICAgICAgIHJpZ2h0UG9zKys7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBpZiBjaGFyYWN0ZXJzIGFyZSBsYXRpbiBvciBsb2NhbGVBd2FyZUNvbXBh
cmUgaXMgbm90IGNhc2Ugc2Vuc2l0aXZlIHRoZW4gdXNlIHNpbXBsZSBjaGFyYWN0ZXJzIGNvbXBh
cmUgaXMgZW5vdWdoCi0gICAgICAgICAgICBpZiAobGNoYXIxIDwgbGNoYXIyKQorICAgICAgICAg
ICAgaWYgKGxlZnRDaGFyIDwgcmlnaHRDaGFyKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgaWYgKGxjaGFyMSA+IGxjaGFyMikKKyAgICAgICAgICAgIGlmIChsZWZ0
Q2hhciA+IHJpZ2h0Q2hhcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBsUG9zaXRpb25TMSsrOwotICAgICAgICAgICAgbFBvc2l0aW9uUzIrKzsKKyAgICAgICAg
ICAgIGxlZnRQb3MrKzsKKyAgICAgICAgICAgIHJpZ2h0UG9zKys7CiAgICAgICAgIH0KICAgICAg
ICAgLy8gYXQgdGhpcyBwb2ludCBzdHJpbmdzIGFyZSBlcXVhbCwgY2hlY2sgaWYgZW5kcyBvZiBz
dHJpbmdzIGFyZSByZWFjaGVkCi0gICAgICAgIGlmIChsUG9zaXRpb25TMSA9PSBhUzEubGVuZ3Ro
KCkgJiYgbFBvc2l0aW9uUzIgPT0gYVMyLmxlbmd0aCgpKQorICAgICAgICBpZiAobGVmdFBvcyA9
PSBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zID09IHJpZ2h0U3RyaW5nLmxlbmd0aCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobFBvc2l0aW9uUzEgPT0g
YVMxLmxlbmd0aCgpICYmIGxQb3NpdGlvblMyIDwgYVMyLmxlbmd0aCgpKQorICAgICAgICBpZiAo
bGVmdFBvcyA9PSBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zIDwgcmlnaHRTdHJpbmcu
bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGxQb3NpdGlv
blMxIDwgYVMxLmxlbmd0aCgpICYmIGxQb3NpdGlvblMyID09IGFTMi5sZW5ndGgoKSkKKyAgICAg
ICAgaWYgKGxlZnRQb3MgPCBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zID09IHJpZ2h0
U3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KQEAg
LTE3Niw0OSArMTc0LDQ5IEBAIGJvb2wgY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShRU3RyaW5n
ICZhUzEsIFFTdHJpbmcgJmFTMiwgY29uc3QgS3JWaWV3UHJvcGVydGllCiAgICAgfQogfQogCi1i
b29sIGNvbXBhcmVUZXh0c0tydXNhZGVyKGNvbnN0IFFTdHJpbmcgJmFTMSwgY29uc3QgUVN0cmlu
ZyAmYVMyLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3BlcnRpZXMpCitib29sIGNv
bXBhcmVUZXh0c0tydXNhZGVyKGNvbnN0IFFTdHJpbmcgJmxlZnRTdHJpbmcsIGNvbnN0IFFTdHJp
bmcgJnJpZ2h0U3RyaW5nLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3BlcnRpZXMp
CiB7CiAgICAgLy8gc29tZXRpbWVzLCBsb2NhbGVBd2FyZUNvbXBhcmUgaXMgbm90IGNhc2Ugc2Vu
c2l0aXZlLiBpbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gZmFsbGJhY2sgdG8gYSBzaW1wbGUgc3Ry
aW5nIGNvbXBhcmUgKEtERSBidWcgIzQwMTMxKQogICAgIGlmICgoKF92aWV3UHJvcGVydGllcy0+
c29ydE9wdGlvbnMgJiBLclZpZXdQcm9wZXJ0aWVzOjpJZ25vcmVDYXNlKSB8fCBfdmlld1Byb3Bl
cnRpZXMtPmxvY2FsZUF3YXJlQ29tcGFyZUlzQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgJiYgKF92
aWV3UHJvcGVydGllcy0+c29ydE9wdGlvbnMgJiBLclZpZXdQcm9wZXJ0aWVzOjpMb2NhbGVBd2Fy
ZVNvcnQpKQotICAgICAgICByZXR1cm4gUVN0cmluZzo6bG9jYWxlQXdhcmVDb21wYXJlKGFTMSwg
YVMyKSA8IDA7CisgICAgICAgIHJldHVybiBRU3RyaW5nOjpsb2NhbGVBd2FyZUNvbXBhcmUobGVm
dFN0cmluZywgcmlnaHRTdHJpbmcpIDwgMDsKICAgICBlbHNlCiAgICAgICAgIC8vIGlmIGxvY2Fs
ZUF3YXJlQ29tcGFyZSBpcyBub3QgY2FzZSBzZW5zaXRpdmUgdGhlbiB1c2Ugc2ltcGxlIGNvbXBh
cmUgaXMgZW5vdWdoCi0gICAgICAgIHJldHVybiBRU3RyaW5nOjpjb21wYXJlKGFTMSwgYVMyKSA8
IDA7CisgICAgICAgIHJldHVybiBRU3RyaW5nOjpjb21wYXJlKGxlZnRTdHJpbmcsIHJpZ2h0U3Ry
aW5nKSA8IDA7CiB9CiAKLWJvb2wgY29tcGFyZVRleHRzKFFTdHJpbmcgYVMxLCBRU3RyaW5nIGFT
MiwgY29uc3QgS3JWaWV3UHJvcGVydGllcyAqX3ZpZXdQcm9wZXJ0aWVzLCBib29sIGFzYywgYm9v
bCBpc05hbWUpCitib29sIGNvbXBhcmVUZXh0cyhRU3RyaW5nIGxlZnRTdHJpbmcsIFFTdHJpbmcg
cmlnaHRTdHJpbmcsIGNvbnN0IEtyVmlld1Byb3BlcnRpZXMgKl92aWV3UHJvcGVydGllcywgYm9v
bCBhc2MsIGJvb2wgaXNOYW1lKQogewogICAgIC8vIGNoZWNrIGVtcHR5IHN0cmluZ3MKLSAgICBp
ZiAoYVMxLmxlbmd0aCgpID09IDAgJiYgYVMyLmxlbmd0aCgpID09IDApIHsKKyAgICBpZiAobGVm
dFN0cmluZy5pc0VtcHR5KCkgJiYgcmlnaHRTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGFTMS5sZW5ndGgoKSA9PSAwKSB7CisgICAgfSBl
bHNlIGlmIChsZWZ0U3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9IGVsc2UgaWYgKGFTMi5sZW5ndGgoKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChyaWdodFN0
cmluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
IChpc05hbWUpIHsKLSAgICAgICAgaWYgKGFTMSA9PSAiLi4iKSB7CisgICAgICAgIGlmIChsZWZ0
U3RyaW5nID09ICIuLiIpIHsKICAgICAgICAgICAgIHJldHVybiAhYXNjOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaWYgKGFTMiA9PSAiLi4iKQorICAgICAgICAgICAgaWYgKHJpZ2h0
U3RyaW5nID09ICIuLiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzYzsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIHN3aXRjaCAoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0TWV0aG9kKSB7CiAgICAg
Y2FzZSBLclZpZXdQcm9wZXJ0aWVzOjpBbHBoYWJldGljYWw6Ci0gICAgICAgIHJldHVybiBjb21w
YXJlVGV4dHNBbHBoYWJldGljYWwoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcywgZmFsc2UpOwor
ICAgICAgICByZXR1cm4gY29tcGFyZVRleHRzQWxwaGFiZXRpY2FsKGxlZnRTdHJpbmcsIHJpZ2h0
U3RyaW5nLCBfdmlld1Byb3BlcnRpZXMsIGZhbHNlKTsKICAgICBjYXNlIEtyVmlld1Byb3BlcnRp
ZXM6OkFscGhhYmV0aWNhbE51bWJlcnM6Ci0gICAgICAgIHJldHVybiBjb21wYXJlVGV4dHNBbHBo
YWJldGljYWwoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcywgdHJ1ZSk7CisgICAgICAgIHJldHVy
biBjb21wYXJlVGV4dHNBbHBoYWJldGljYWwobGVmdFN0cmluZywgcmlnaHRTdHJpbmcsIF92aWV3
UHJvcGVydGllcywgdHJ1ZSk7CiAgICAgY2FzZSBLclZpZXdQcm9wZXJ0aWVzOjpDaGFyYWN0ZXJD
b2RlOgotICAgICAgICByZXR1cm4gY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShhUzEsIGFTMiwg
X3ZpZXdQcm9wZXJ0aWVzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBjb21wYXJlVGV4dHNDaGFy
YWN0ZXJDb2RlKGxlZnRTdHJpbmcsIHJpZ2h0U3RyaW5nLCBfdmlld1Byb3BlcnRpZXMsIGZhbHNl
KTsKICAgICBjYXNlIEtyVmlld1Byb3BlcnRpZXM6OkNoYXJhY3RlckNvZGVOdW1iZXJzOgotICAg
ICAgICByZXR1cm4gY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShhUzEsIGFTMiwgX3ZpZXdQcm9w
ZXJ0aWVzLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVUZXh0c0NoYXJhY3RlckNvZGUo
bGVmdFN0cmluZywgcmlnaHRTdHJpbmcsIF92aWV3UHJvcGVydGllcywgdHJ1ZSk7CiAgICAgY2Fz
ZSBLclZpZXdQcm9wZXJ0aWVzOjpLcnVzYWRlcjoKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gY29tcGFyZVRleHRzS3J1c2FkZXIoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcyk7CisgICAg
ICAgIHJldHVybiBjb21wYXJlVGV4dHNLcnVzYWRlcihsZWZ0U3RyaW5nLCByaWdodFN0cmluZywg
X3ZpZXdQcm9wZXJ0aWVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9QYW5l
bFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAgYi9hcHAvUGFuZWwvUGFuZWxWaWV3L2tydmlld3By
b3BlcnRpZXMuY3BwCmluZGV4IGJlZjgyNDZmYS4uZTQ4YTJkYjA0IDEwMDY0NAotLS0gYS9hcHAv
UGFuZWwvUGFuZWxWaWV3L2tydmlld3Byb3BlcnRpZXMuY3BwCisrKyBiL2FwcC9QYW5lbC9QYW5l
bFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAKQEAgLTgsMjQgKzgsMjQgQEAKIAogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKLUtyVmlld1Byb3BlcnRpZXM6OktyVmlld1Byb3BlcnRpZXMoYm9vbCBkaXNw
bGF5SWNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbnVtZXJp
Y1Blcm1pc3Npb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLclZpZXdQ
cm9wZXJ0aWVzOjpTb3J0T3B0aW9ucyBzb3J0T3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgS3JWaWV3UHJvcGVydGllczo6U29ydE1ldGhvZCBzb3J0TWV0aG9kLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGh1bWFuUmVhZGFibGVTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2FsZUF3YXJlQ29t
cGFyZUlzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UVN0cmluZ0xpc3QgYXRvbWljRXh0ZW5zaW9ucykKLSAgICA6IG51bWVyaWNQZXJtaXNzaW9ucyhu
dW1lcmljUGVybWlzc2lvbnMpCi0gICAgLCBkaXNwbGF5SWNvbnMoZGlzcGxheUljb25zKQorS3JW
aWV3UHJvcGVydGllczo6S3JWaWV3UHJvcGVydGllcyhib29sIHNob3dJY29ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VOdW1lcmljUGVybWlzc2lvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtyVmlld1Byb3BlcnRpZXM6OlNvcnRP
cHRpb25zIGluaXRTb3J0T3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgS3JWaWV3UHJvcGVydGllczo6U29ydE1ldGhvZCBpbml0U29ydE1ldGhvZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VIdW1hblJlYWRhYmxlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VMb2NhbGVBd2FyZUNvbXBh
cmVJc0Nhc2VTZW5zaXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFT
dHJpbmdMaXN0IGluaXRBdG9taWNFeHRlbnNpb25zKQorICAgIDogbnVtZXJpY1Blcm1pc3Npb25z
KHVzZU51bWVyaWNQZXJtaXNzaW9ucykKKyAgICAsIGRpc3BsYXlJY29ucyhzaG93SWNvbnMpCiAg
ICAgLCBzb3J0Q29sdW1uKE5hbWUpCi0gICAgLCBzb3J0T3B0aW9ucyhzb3J0T3B0aW9ucykKLSAg
ICAsIHNvcnRNZXRob2Qoc29ydE1ldGhvZCkKKyAgICAsIHNvcnRPcHRpb25zKGluaXRTb3J0T3B0
aW9ucykKKyAgICAsIHNvcnRNZXRob2QoaW5pdFNvcnRNZXRob2QpCiAgICAgLCBmaWx0ZXIoS3JW
aWV3UHJvcGVydGllczo6QWxsKQogICAgICwgZmlsdGVyTWFzayhLclF1ZXJ5KCIqIikpCiAgICAg
LCBmaWx0ZXJBcHBseXNUb0RpcnMoZmFsc2UpCi0gICAgLCBsb2NhbGVBd2FyZUNvbXBhcmVJc0Nh
c2VTZW5zaXRpdmUobG9jYWxlQXdhcmVDb21wYXJlSXNDYXNlU2Vuc2l0aXZlKQotICAgICwgaHVt
YW5SZWFkYWJsZVNpemUoaHVtYW5SZWFkYWJsZVNpemUpCi0gICAgLCBhdG9taWNFeHRlbnNpb25z
KHN0ZDo6bW92ZShhdG9taWNFeHRlbnNpb25zKSkKKyAgICAsIGxvY2FsZUF3YXJlQ29tcGFyZUlz
Q2FzZVNlbnNpdGl2ZSh1c2VMb2NhbGVBd2FyZUNvbXBhcmVJc0Nhc2VTZW5zaXRpdmUpCisgICAg
LCBodW1hblJlYWRhYmxlU2l6ZSh1c2VIdW1hblJlYWRhYmxlU2l6ZSkKKyAgICAsIGF0b21pY0V4
dGVuc2lvbnMoc3RkOjptb3ZlKGluaXRBdG9taWNFeHRlbnNpb25zKSkKICAgICAsIG51bWJlck9m
Q29sdW1ucygxKQogewogfQpkaWZmIC0tZ2l0IGEvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnZpZXdw
cm9wZXJ0aWVzLmggYi9hcHAvUGFuZWwvUGFuZWxWaWV3L2tydmlld3Byb3BlcnRpZXMuaAppbmRl
eCAzNTFlYjVkMmQuLmFkMmIxZjE3MiAxMDA2NDQKLS0tIGEvYXBwL1BhbmVsL1BhbmVsVmlldy9r
cnZpZXdwcm9wZXJ0aWVzLmgKKysrIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnZpZXdwcm9wZXJ0
aWVzLmgKQEAgLTUzLDkgKzUzLDI2IEBAIHB1YmxpYzoKICAgICAgICAgQWNjZXNzZWQgPSAweGEs
CiAgICAgICAgIE1BWF9DT0xVTU5TID0gMHgwYgogICAgIH07Ci0gICAgZW51bSBTb3J0T3B0aW9u
cyB7IERlc2NlbmRpbmcgPSAweDIwMCwgRGlyc0ZpcnN0ID0gMHg0MDAsIElnbm9yZUNhc2UgPSAw
eDgwMCwgQWx3YXlzU29ydERpcnNCeU5hbWUgPSAweDEwMDAsIExvY2FsZUF3YXJlU29ydCA9IDB4
MjAwMCB9OwotICAgIGVudW0gU29ydE1ldGhvZCB7IEFscGhhYmV0aWNhbCA9IDB4MSwgQWxwaGFi
ZXRpY2FsTnVtYmVycyA9IDB4MiwgQ2hhcmFjdGVyQ29kZSA9IDB4NCwgQ2hhcmFjdGVyQ29kZU51
bWJlcnMgPSAweDgsIEtydXNhZGVyID0gMHgxMCB9OwotICAgIGVudW0gRmlsdGVyU3BlYyB7IERp
cnMgPSAweDEsIEZpbGVzID0gMHgyLCBBbGwgPSAweDMsIEN1c3RvbSA9IDB4NCB9OworICAgIGVu
dW0gU29ydE9wdGlvbnMgeworICAgICAgICBEZXNjZW5kaW5nID0gMHgyMDAsCisgICAgICAgIERp
cnNGaXJzdCA9IDB4NDAwLAorICAgICAgICBJZ25vcmVDYXNlID0gMHg4MDAsCisgICAgICAgIEFs
d2F5c1NvcnREaXJzQnlOYW1lID0gMHgxMDAwLAorICAgICAgICBMb2NhbGVBd2FyZVNvcnQgPSAw
eDIwMDAKKyAgICB9OworICAgIGVudW0gU29ydE1ldGhvZCB7CisgICAgICAgIEFscGhhYmV0aWNh
bCA9IDB4MSwKKyAgICAgICAgQWxwaGFiZXRpY2FsTnVtYmVycyA9IDB4MiwKKyAgICAgICAgQ2hh
cmFjdGVyQ29kZSA9IDB4NCwKKyAgICAgICAgQ2hhcmFjdGVyQ29kZU51bWJlcnMgPSAweDgsCisg
ICAgICAgIEtydXNhZGVyID0gMHgxMAorICAgIH07CisgICAgZW51bSBGaWx0ZXJTcGVjIHsKKyAg
ICAgICAgRGlycyA9IDB4MSwKKyAgICAgICAgRmlsZXMgPSAweDIsCisgICAgICAgIEFsbCA9IDB4
MywKKyAgICAgICAgQ3VzdG9tID0gMHg0CisgICAgfTsKIAogICAgIEtyVmlld1Byb3BlcnRpZXMo
Ym9vbCBkaXNwbGF5SWNvbnMsCiAgICAgICAgICAgICAgICAgICAgICBib29sIG51bWVyaWNQZXJt
aXNzaW9ucywKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9rcmxheW91dGZhY3RvcnkuaCBiL2FwcC9Q
YW5lbC9rcmxheW91dGZhY3RvcnkuaAppbmRleCBhNTk3MGM3OTEuLjBhMDMxZjkzYSAxMDA2NDQK
LS0tIGEvYXBwL1BhbmVsL2tybGF5b3V0ZmFjdG9yeS5oCisrKyBiL2FwcC9QYW5lbC9rcmxheW91
dGZhY3RvcnkuaApAQCAtMjMsOSArMjMsOSBAQCBjbGFzcyBMaXN0UGFuZWw7CiBjbGFzcyBLckxh
eW91dEZhY3RvcnkKIHsKIHB1YmxpYzoKLSAgICBLckxheW91dEZhY3RvcnkoTGlzdFBhbmVsICpw
YW5lbCwgUUhhc2g8UVN0cmluZywgUVdpZGdldCAqPiAmd2lkZ2V0cykKLSAgICAgICAgOiBwYW5l
bChwYW5lbCkKLSAgICAgICAgLCB3aWRnZXRzKHdpZGdldHMpCisgICAgS3JMYXlvdXRGYWN0b3J5
KExpc3RQYW5lbCAqbGlzdFBhbmVsLCBRSGFzaDxRU3RyaW5nLCBRV2lkZ2V0ICo+ICZ3aWRnZXRz
TWFwKQorICAgICAgICA6IHBhbmVsKGxpc3RQYW5lbCkKKyAgICAgICAgLCB3aWRnZXRzKHdpZGdl
dHNNYXApCiAgICAgewogICAgIH0KICAgICAvLyBjcmVhdGVzIHRoZSBsYXlvdXQgYW5kIGFkZHMg
dGhlIHdpZGdldHMgdG8gaXQKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9rcnBhbmVsLmggYi9hcHAv
UGFuZWwva3JwYW5lbC5oCmluZGV4IGIwNDU1ZTUwOS4uMGVmMjM4NTVjIDEwMDY0NAotLS0gYS9h
cHAvUGFuZWwva3JwYW5lbC5oCisrKyBiL2FwcC9QYW5lbC9rcnBhbmVsLmgKQEAgLTE5LDkgKzE5
LDkgQEAgY2xhc3MgS3JWaWV3OwogY2xhc3MgS3JQYW5lbAogewogcHVibGljOgotICAgIEtyUGFu
ZWwoQWJzdHJhY3RQYW5lbE1hbmFnZXIgKm1hbmFnZXIsIExpc3RQYW5lbCAqcGFuZWwsIExpc3RQ
YW5lbEZ1bmMgKmZ1bmMpCisgICAgS3JQYW5lbChBYnN0cmFjdFBhbmVsTWFuYWdlciAqbWFuYWdl
ciwgTGlzdFBhbmVsICpwYW5lbCwgTGlzdFBhbmVsRnVuYyAqcGFuZWxDYWxsYmFjaykKICAgICAg
ICAgOiBndWkocGFuZWwpCi0gICAgICAgICwgZnVuYyhmdW5jKQorICAgICAgICAsIGZ1bmMocGFu
ZWxDYWxsYmFjaykKICAgICAgICAgLCB2aWV3KG51bGxwdHIpCiAgICAgICAgICwgX21hbmFnZXIo
bWFuYWdlcikKICAgICB7CmRpZmYgLS1naXQgYS9hcHAvUGFuZWwva3JzZWFyY2hiYXIuY3BwIGIv
YXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcAppbmRleCBmZjk1YTk4YTEuLjA2Yzc4M2RlNSAxMDA2
NDQKLS0tIGEvYXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcAorKysgYi9hcHAvUGFuZWwva3JzZWFy
Y2hiYXIuY3BwCkBAIC0yNjAsMTYgKzI2MCwxNCBAQCBib29sIEtyU2VhcmNoQmFyOjpldmVudEZp
bHRlcihRT2JqZWN0ICp3YXRjaGVkLCBRRXZlbnQgKmV2ZW50KQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAod2F0Y2hlZCA9PSBfdGV4dEJveCkgewotICAg
ICAgICBjb25zdCBib29sIGhhbmRsZWQgPSBoYW5kbGVLZXlQcmVzc0V2ZW50KGtlKTsKLSAgICAg
ICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgaWYgKGhhbmRsZUtleVByZXNzRXZlbnQoa2UpKSB7
CiAgICAgICAgICAgICBfdmlldy0+d2lkZ2V0KCktPnNldEZvY3VzKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBhbGxvdyB0aGUgdmlldyB0byBoYW5k
bGUgKG1vc3QpIGtleSBldmVudHMgZnJvbSB0aGUgdGV4dCBib3gKICAgICAgICAgaWYgKChtb2Rp
ZmllcnMgPT0gUXQ6Ok5vTW9kaWZpZXIgfHwgbW9kaWZpZXJzID09IFF0OjpLZXlwYWRNb2RpZmll
cikgJiYga2UtPmtleSgpICE9IFF0OjpLZXlfU3BhY2UgJiYga2UtPmtleSgpICE9IFF0OjpLZXlf
QmFja3NwYWNlCiAgICAgICAgICAgICAmJiBrZS0+a2V5KCkgIT0gUXQ6OktleV9MZWZ0ICYmIGtl
LT5rZXkoKSAhPSBRdDo6S2V5X1JpZ2h0KSB7Ci0gICAgICAgICAgICBjb25zdCBib29sIGhhbmRs
ZWQgPSBfdmlldy0+aGFuZGxlS2V5RXZlbnQoa2UpOwotICAgICAgICAgICAgaWYgKGhhbmRsZWQp
IHsKKyAgICAgICAgICAgIGlmIChfdmlldy0+aGFuZGxlS2V5RXZlbnQoa2UpKSB7CiAgICAgICAg
ICAgICAgICAgX3ZpZXctPndpZGdldCgpLT5zZXRGb2N1cygpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYXBwL1BhbmVsL2xpc3RwYW5l
bC5jcHAgYi9hcHAvUGFuZWwvbGlzdHBhbmVsLmNwcAppbmRleCA3OTZkODk1MWUuLmRiNWNiZmE5
YSAxMDA2NDQKLS0tIGEvYXBwL1BhbmVsL2xpc3RwYW5lbC5jcHAKKysrIGIvYXBwL1BhbmVsL2xp
c3RwYW5lbC5jcHAKQEAgLTg2LDggKzg2LDggQEAgY2xhc3MgQWN0aW9uQnV0dG9uIDogcHVibGlj
IFFUb29sQnV0dG9uCiBwdWJsaWM6CiAgICAgQWN0aW9uQnV0dG9uKFFXaWRnZXQgKnBhcmVudCwg
TGlzdFBhbmVsICpwYW5lbCwgUUFjdGlvbiAqYWN0aW9uLCBjb25zdCBRU3RyaW5nICZ0ZXh0ID0g
UVN0cmluZygpKQogICAgICAgICA6IFFUb29sQnV0dG9uKHBhcmVudCkKLSAgICAgICAgLCBwYW5l
bChwYW5lbCkKLSAgICAgICAgLCBhY3Rpb24oYWN0aW9uKQorICAgICAgICAsIG1fcGFuZWwocGFu
ZWwpCisgICAgICAgICwgbV9hY3Rpb24oYWN0aW9uKQogICAgIHsKICAgICAgICAgc2V0VGV4dCh0
ZXh0KTsKICAgICAgICAgc2V0QXV0b1JhaXNlKHRydWUpOwpAQCAtOTksMTIgKzk5LDEyIEBAIHB1
YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAq
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcGFuZWwtPnNsb3RGb2N1c09uTWUoKTsKLSAgICAg
ICAgYWN0aW9uLT50cmlnZ2VyKCk7CisgICAgICAgIG1fcGFuZWwtPnNsb3RGb2N1c09uTWUoKTsK
KyAgICAgICAgbV9hY3Rpb24tPnRyaWdnZXIoKTsKICAgICB9CiAKLSAgICBMaXN0UGFuZWwgKnBh
bmVsOwotICAgIFFBY3Rpb24gKmFjdGlvbjsKKyAgICBMaXN0UGFuZWwgKm1fcGFuZWw7CisgICAg
UUFjdGlvbiAqbV9hY3Rpb247CiB9OwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgTGlzdFBhbmVs
Ojpjb21wYXJlRGlycyhib29sIG90aGVyUGFuZWxUb28pCiAgICAgfQogCiAgICAgS0NvbmZpZ0dy
b3VwIHBnKGtyQ29uZmlnLCAiUHJpdmF0ZSIpOwotICAgIGludCBjb21wYXJlTW9kZSA9IHBnLnJl
YWRFbnRyeSgiQ29tcGFyZSBNb2RlIiwgMCk7CisgICAgaW50IGNvbXBhcmVTdHJhdGVneSA9IHBn
LnJlYWRFbnRyeSgiQ29tcGFyZSBNb2RlIiwgMCk7CiAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGty
Q29uZmlnLCAiTG9vayZGZWVsIik7CiAgICAgYm9vbCBzZWxlY3REaXJzID0gZ3JvdXAucmVhZEVu
dHJ5KCJNYXJrIERpcnMiLCBmYWxzZSk7CiAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIExpc3RQ
YW5lbDo6Y29tcGFyZURpcnMoYm9vbCBvdGhlclBhbmVsVG9vKQogICAgICAgICAgICAgaXNOZXdl
ciA9IGZ1bmMtPmdldEZpbGVJdGVtKGl0ZW0pLT5nZXRNb2RpZmljYXRpb25UaW1lKCkgPiBvdGhl
clBhbmVsKCktPmZ1bmMtPmdldEZpbGVJdGVtKG90aGVySXRlbSktPmdldE1vZGlmaWNhdGlvblRp
bWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAoY29tcGFyZU1vZGUpIHsKKyAgICAg
ICAgc3dpdGNoIChjb21wYXJlU3RyYXRlZ3kpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgaXRlbS0+c2V0U2VsZWN0ZWQoaXNOZXdlciB8fCBpc1NpbmdsZSk7CiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9saXN0cGFuZWxmcmFtZS5jcHAgYi9hcHAvUGFu
ZWwvbGlzdHBhbmVsZnJhbWUuY3BwCmluZGV4IDY3YmVhZDFmOS4uNTI4MWUyNjExIDEwMDY0NAot
LS0gYS9hcHAvUGFuZWwvbGlzdHBhbmVsZnJhbWUuY3BwCisrKyBiL2FwcC9QYW5lbC9saXN0cGFu
ZWxmcmFtZS5jcHAKQEAgLTE5LDExICsxOSwxMSBAQAogI2luY2x1ZGUgPEtTaGFyZWRDb25maWc+
CiAjaW5jbHVkZSA8S1VybE1pbWVEYXRhPgogCi1MaXN0UGFuZWxGcmFtZTo6TGlzdFBhbmVsRnJh
bWUoUVdpZGdldCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZjb2xvcikKK0xpc3RQYW5lbEZyYW1l
OjpMaXN0UGFuZWxGcmFtZShRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJmNvbG9yTmFt
ZSkKICAgICA6IFFGcmFtZShwYXJlbnQpCi0gICAgLCBjb2xvcihjb2xvcikKKyAgICAsIGNvbG9y
KGNvbG9yTmFtZSkKIHsKLSAgICBpZiAoIWNvbG9yLmlzRW1wdHkoKSkgeworICAgIGlmICghY29s
b3JOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjb2xvcnNDaGFuZ2VkKCk7CiAgICAgICAgIHJl
ZnJlc2hDb2xvcnMoZmFsc2UpOwogICAgICAgICBzZXRBdXRvRmlsbEJhY2tncm91bmQodHJ1ZSk7
CmRpZmYgLS1naXQgYS9hcHAvUGFuZWwvcGFuZWxjb250ZXh0bWVudS5jcHAgYi9hcHAvUGFuZWwv
cGFuZWxjb250ZXh0bWVudS5jcHAKaW5kZXggNWQxYjBjNTBlLi42Y2Q0NjMzOGMgMTAwNjQ0Ci0t
LSBhL2FwcC9QYW5lbC9wYW5lbGNvbnRleHRtZW51LmNwcAorKysgYi9hcHAvUGFuZWwvcGFuZWxj
b250ZXh0bWVudS5jcHAKQEAgLTE4LDggKzE4LDggQEAKICNpbmNsdWRlIDxLRmlsZUl0ZW1MaXN0
UHJvcGVydGllcz4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1ZGUgPEtNZXNz
YWdlQm94PgotI2luY2x1ZGUgPEtQbHVnaW5NZXRhRGF0YT4KICNpbmNsdWRlIDxLUGx1Z2luRmFj
dG9yeT4KKyNpbmNsdWRlIDxLUGx1Z2luTWV0YURhdGE+CiAjaW5jbHVkZSA8S1Byb2Nlc3M+CiAK
ICNpbmNsdWRlICIuLi9BcmNoaXZlL2tyYXJjaGFuZGxlci5oIgpAQCAtODcsNyArODcsNyBAQCBQ
YW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRn
ZXQgKnBhcmVudCkKICAgICBjb25zdCBib29sIGluVHJhc2ggPSBwcm90b2NvbHMuY29udGFpbnMo
InRyYXNoIik7CiAgICAgY29uc3QgYm9vbCB0cmFzaE9ubHkgPSBpblRyYXNoICYmIHByb3RvY29s
cy5jb3VudCgpID09IDE7CiAKLSAgICBGaWxlSXRlbSAqZmlsZSA9IGZpbGVzLmZpcnN0KCk7Cisg
ICAgRmlsZUl0ZW0gKmN1cnJlbnRGaWxlID0gZmlsZXMuZmlyc3QoKTsKIAogICAgIC8vIC0tLS0t
LS0tLS0tLSB0aGUgT1BFTi9CUk9XU0Ugb3B0aW9uIC0gb3BlbiBwcmVmZXJyZWQgc2VydmljZQog
CkBAIC05OCw3ICs5OCw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29udGV4dE1lbnUoS3JQ
YW5lbCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICBpZiAobXVsdGlwbGVTZWxl
Y3Rpb25zKSB7CiAgICAgICAgICAgICBvcGVuQWN0aW9uLT5zZXRUZXh0KGkxOG4oIk9wZW4vUnVu
IEZpbGVzIikpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3BlbkFjdGlvbi0+c2V0
VGV4dChmaWxlLT5pc0V4ZWN1dGFibGUoKSAmJiAhZmlsZS0+aXNEaXIoKSA/IGkxOG4oIlJ1biIp
IDogaTE4bigiT3BlbiIpKTsKKyAgICAgICAgICAgIG9wZW5BY3Rpb24tPnNldFRleHQoY3VycmVu
dEZpbGUtPmlzRXhlY3V0YWJsZSgpICYmICFjdXJyZW50RmlsZS0+aXNEaXIoKSA/IGkxOG4oIlJ1
biIpIDogaTE4bigiT3BlbiIpKTsKICAgICAgICAgICAgIGNvbnN0IEtyVmlld0l0ZW1MaXN0IHZp
ZXdJdGVtcyA9IHBhbmVsLT52aWV3LT5nZXRTZWxlY3RlZEtyVmlld0l0ZW1zKCk7CiAgICAgICAg
ICAgICBvcGVuQWN0aW9uLT5zZXRJY29uKHZpZXdJdGVtcy5maXJzdCgpLT5pY29uKCkpOwogICAg
ICAgICB9CkBAIC0xMTQsMTEgKzExNCwxMSBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRl
eHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKIAogICAgIC8vIGJyb3dz
ZSBhcmNoaXZlIC0gaWYgb25lIGZpbGUgaXMgc2VsZWN0ZWQgYW5kIHRoZSBmaWxlIGNhbiBiZSBi
cm93c2VkIGFzIGFyY2hpdmUuLi4KICAgICBpZiAoIW11bHRpcGxlU2VsZWN0aW9ucwotICAgICAg
ICAmJiAhcGFuZWwtPmZ1bmMtPmJyb3dzYWJsZUFyY2hpdmVQYXRoKGZpbGUtPmdldE5hbWUoKSku
aXNFbXB0eSgpCisgICAgICAgICYmICFwYW5lbC0+ZnVuYy0+YnJvd3NhYmxlQXJjaGl2ZVBhdGgo
Y3VycmVudEZpbGUtPmdldE5hbWUoKSkuaXNFbXB0eSgpCiAgICAgICAgIC8vIC4uLmJ1dCB1c2Vy
IGRpc2FibGVkIGFyY2hpdmUgYnJvd3NpbmcuLi4KICAgICAgICAgJiYgKCFLQ29uZmlnR3JvdXAo
a3JDb25maWcsICJBcmNoaXZlcyIpLnJlYWRFbnRyeSgiQXJjaGl2ZXNBc0RpcmVjdG9yaWVzIiwg
X0FyY2hpdmVzQXNEaXJlY3RvcmllcykKICAgICAgICAgICAgIC8vIC4uLm9yIHRoZSBmaWxlIGlz
IG5vdCBhIHN0YW5kYXJkIGFyY2hpdmUgKGUuZy4gb2R0LCBkb2N4LCBldGMuKS4uLgotICAgICAg
ICAgICAgfHwgIUtyQXJjSGFuZGxlcjo6YXJjU3VwcG9ydGVkKGZpbGUtPmdldE1pbWUoKSkpKSB7
CisgICAgICAgICAgICB8fCAhS3JBcmNIYW5kbGVyOjphcmNTdXBwb3J0ZWQoY3VycmVudEZpbGUt
PmdldE1pbWUoKSkpKSB7CiAgICAgICAgIC8vIC4uLml0IHdpbGwgbm90IGJlIGJyb3dzZWQgYXMg
YSBkaXJlY3RvcnkgYnkgZGVmYXVsdCwgYnV0IGFkZCBhbiBvcHRpb24gZm9yIGl0CiAgICAgICAg
IFFBY3Rpb24gKmJyb3dzZUFjdCA9IGFkZEFjdGlvbihpMThuKCJCcm93c2UgQXJjaGl2ZSIpKTsK
ICAgICAgICAgYnJvd3NlQWN0LT5zZXREYXRhKFFWYXJpYW50KHN0YXRpY19jYXN0PGludD4oQlJP
V1NFX0lEKSkpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29u
dGV4dE1lbnUoS3JQYW5lbCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIG9wZW5XaXRoTWVudS0+YWRkU2VwYXJhdG9yKCk7Ci0gICAg
ICAgIGlmICghbXVsdGlwbGVTZWxlY3Rpb25zICYmIGZpbGUtPmlzRGlyKCkpIHsKKyAgICAgICAg
aWYgKCFtdWx0aXBsZVNlbGVjdGlvbnMgJiYgY3VycmVudEZpbGUtPmlzRGlyKCkpIHsKICAgICAg
ICAgICAgIG9wZW5XaXRoTWVudS0+YWRkQWN0aW9uKEljb24oInV0aWxpdGllcy10ZXJtaW5hbCIp
LCBpMThuKCJUZXJtaW5hbCIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE9Q
RU5fVEVSTV9JRCkpKTsKICAgICAgICAgfQogICAgICAgICBvcGVuV2l0aE1lbnUtPmFkZEFjdGlv
bihpMThuKCJPdGhlci4uLiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KENI
T09TRV9JRCkpKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENv
bnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKICAgICBhZGRTZXBh
cmF0b3IoKTsKIAogICAgIC8vIC0tLS0tLS0tLS0tLS0tLSB1c2VyIGFjdGlvbnMKLSAgICBRQWN0
aW9uICp1c2VyQWN0aW9uID0gbmV3IFVzZXJBY3Rpb25Qb3B1cE1lbnUoZmlsZS0+Z2V0VXJsKCks
IHRoaXMpOworICAgIFFBY3Rpb24gKnVzZXJBY3Rpb24gPSBuZXcgVXNlckFjdGlvblBvcHVwTWVu
dShjdXJyZW50RmlsZS0+Z2V0VXJsKCksIHRoaXMpOwogICAgIHVzZXJBY3Rpb24tPnNldFRleHQo
aTE4bigiVXNlciBBY3Rpb25zIikpOwogICAgIGFkZEFjdGlvbih1c2VyQWN0aW9uKTsKIApAQCAt
MjE0LDcgKzIxNCw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29udGV4dE1lbnUoS3JQYW5l
bCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICBhdXRvICpsaW5rTWVudSA9IG5l
dyBRTWVudSh0aGlzKTsKICAgICAgICAgbGlua01lbnUtPmFkZEFjdGlvbihpMThuKCJOZXcgU3lt
bGluay4uLiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE5FV19TWU1MSU5L
X0lEKSkpOwogICAgICAgICBsaW5rTWVudS0+YWRkQWN0aW9uKGkxOG4oIk5ldyBIYXJkbGluay4u
LiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE5FV19MSU5LX0lEKSkpOwot
ICAgICAgICBpZiAoZmlsZS0+aXNTeW1MaW5rKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRGaWxl
LT5pc1N5bUxpbmsoKSkgewogICAgICAgICAgICAgbGlua01lbnUtPmFkZEFjdGlvbihpMThuKCJS
ZWRpcmVjdCBMaW5rLi4uIikpLT5zZXREYXRhKFFWYXJpYW50KHN0YXRpY19jYXN0PGludD4oUkVE
SVJFQ1RfTElOS19JRCkpKTsKICAgICAgICAgfQogICAgICAgICBRQWN0aW9uICpsaW5rQWN0aW9u
ID0gYWRkTWVudShsaW5rTWVudSk7CkBAIC0yMjQsMTIgKzIyNCwxMiBAQCBQYW5lbENvbnRleHRN
ZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkK
ICAgICBhZGRTZXBhcmF0b3IoKTsKIAogICAgIC8vIC0tLS0tLS0tLS0gY2FsY3VsYXRlIHNwYWNl
Ci0gICAgaWYgKHBhbmVsLT5mdW5jLT5maWxlcygpLT5pc0xvY2FsKCkgJiYgKGZpbGUtPmlzRGly
KCkgfHwgbXVsdGlwbGVTZWxlY3Rpb25zKSkKKyAgICBpZiAocGFuZWwtPmZ1bmMtPmZpbGVzKCkt
PmlzTG9jYWwoKSAmJiAoY3VycmVudEZpbGUtPmlzRGlyKCkgfHwgbXVsdGlwbGVTZWxlY3Rpb25z
KSkKICAgICAgICAgYWRkQWN0aW9uKHBhbmVsLT5ndWktPmFjdGlvbnMoKS0+YWN0Q2FsY3VsYXRl
KTsKIAogICAgIC8vIC0tLS0tLS0tLS0gbW91bnQvdW1vdW50L2VqZWN0Ci0gICAgaWYgKHBhbmVs
LT5mdW5jLT5maWxlcygpLT5pc0xvY2FsKCkgJiYgZmlsZS0+aXNEaXIoKSAmJiAhbXVsdGlwbGVT
ZWxlY3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0IFFTdHJpbmcgc2VsZWN0ZWREaXJlY3RvcnlQYXRo
ID0gZmlsZS0+Z2V0VXJsKCkucGF0aCgpOworICAgIGlmIChwYW5lbC0+ZnVuYy0+ZmlsZXMoKS0+
aXNMb2NhbCgpICYmIGN1cnJlbnRGaWxlLT5pc0RpcigpICYmICFtdWx0aXBsZVNlbGVjdGlvbnMp
IHsKKyAgICAgICAgY29uc3QgUVN0cmluZyBzZWxlY3RlZERpcmVjdG9yeVBhdGggPSBjdXJyZW50
RmlsZS0+Z2V0VXJsKCkucGF0aCgpOwogICAgICAgICBpZiAoa3JNdE1hbi5nZXRTdGF0dXMoc2Vs
ZWN0ZWREaXJlY3RvcnlQYXRoKSA9PSBLTW91bnRNYW46Ok1PVU5URUQpCiAgICAgICAgICAgICBh
ZGRBY3Rpb24oaTE4bigiVW5tb3VudCIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxp
bnQ+KFVOTU9VTlRfSUQpKSk7CiAgICAgICAgIGVsc2UgaWYgKGtyTXRNYW4uZ2V0U3RhdHVzKHNl
bGVjdGVkRGlyZWN0b3J5UGF0aCkgPT0gS01vdW50TWFuOjpOT1RfTU9VTlRFRCkKQEAgLTIzOSw3
ICsyMzksNyBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmty
UGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKICAgICB9CiAKICAgICAvLyAtLS0tLS0tLS0gc2VuZCBi
eSBtYWlsCi0gICAgaWYgKEtyU2VydmljZXM6OnN1cHBvcnRlZFRvb2xzKCkuY29udGFpbnMoIk1B
SUwiKSAmJiAhZmlsZS0+aXNEaXIoKSkgeworICAgIGlmIChLclNlcnZpY2VzOjpzdXBwb3J0ZWRU
b29scygpLmNvbnRhaW5zKCJNQUlMIikgJiYgIWN1cnJlbnRGaWxlLT5pc0RpcigpKSB7CiAgICAg
ICAgIGFkZEFjdGlvbihJY29uKCJtYWlsLXNlbmQiKSwgaTE4bigiU2VuZCBieSBFbWFpbCIpKS0+
c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KFNFTkRfQllfRU1BSUxfSUQpKSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9hcHAvUGFuZWwvcGFuZWxmdW5jLmNwcCBiL2FwcC9QYW5lbC9w
YW5lbGZ1bmMuY3BwCmluZGV4IGNjMmZkMjM2Yi4uNGZmODQxMmRlIDEwMDY0NAotLS0gYS9hcHAv
UGFuZWwvcGFuZWxmdW5jLmNwcAorKysgYi9hcHAvUGFuZWwvcGFuZWxmdW5jLmNwcApAQCAtMjIs
OCArMjIsOCBAQAogCiAjaW5jbHVkZSA8S0Rlc2t0b3BGaWxlPgogI2luY2x1ZGUgPEtJTy9EZXNr
dG9wRXhlY1BhcnNlcj4KLSNpbmNsdWRlIDxLSU8vSm9iVWlEZWxlZ2F0ZT4KICNpbmNsdWRlIDxL
SU8vSm9iVHJhY2tlcj4KKyNpbmNsdWRlIDxLSU8vSm9iVWlEZWxlZ2F0ZT4KICNpbmNsdWRlIDxL
Sm9iVHJhY2tlckludGVyZmFjZT4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1
ZGUgPEtQcm9jZXNzPgpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPEtVcmxNaW1lRGF0YT4K
IAogI2luY2x1ZGUgPEtJTy9Db21tYW5kTGF1bmNoZXJKb2I+Ci0jaW5jbHVkZSA8S0lPL09wZW5V
cmxKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVpRGVsZWdhdGVGYWN0b3J5PgorI2luY2x1ZGUgPEtJ
Ty9PcGVuVXJsSm9iPgogI2luY2x1ZGUgPEtJTy9TdGF0Sm9iPgogCiAjaW5jbHVkZSA8S09wZW5X
aXRoRGlhbG9nPgpAQCAtNzYsNyArNzYsNiBAQAogI2luY2x1ZGUgImxpc3RwYW5lbGFjdGlvbnMu
aCIKICNpbmNsdWRlICJwYW5lbGZ1bmMuaCIKIAotCiBRUG9pbnRlcjxMaXN0UGFuZWxGdW5jPiBM
aXN0UGFuZWxGdW5jOjpjb3B5VG9DbGlwYm9hcmRPcmlnaW47CiAKIExpc3RQYW5lbEZ1bmM6Okxp
c3RQYW5lbEZ1bmMoTGlzdFBhbmVsICpwYXJlbnQpCkBAIC01MzksMTMgKzUzOCwxMyBAQCB2b2lk
IExpc3RQYW5lbEZ1bmM6OnNsb3RTdGF0RWRpdChLSm9iICpqb2IpCiAgICAgICAgICAgICB0ZW1w
RmlsZS0+c2V0QXV0b1JlbW92ZShmYWxzZSk7IC8vIGRvbmUgYmVsb3cKICAgICAgICAgICAgIHRl
bXBGaWxlLT5vcGVuKCk7IC8vIGNyZWF0ZSBmaWxlCiAKLSAgICAgICAgICAgIEtJTzo6Q29weUpv
YiAqam9iID0gS0lPOjpjb3B5KFFVcmw6OmZyb21Mb2NhbEZpbGUodGVtcEZpbGUtPmZpbGVOYW1l
KCkpLCB1cmwpOwotICAgICAgICAgICAgam9iLT5zZXRVaURlbGVnYXRlKG51bGxwdHIpOwotICAg
ICAgICAgICAgam9iLT5zZXREZWZhdWx0UGVybWlzc2lvbnModHJ1ZSk7Ci0gICAgICAgICAgICBj
b25uZWN0KGpvYiwgJktJTzo6Q29weUpvYjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqam9iKSB7
Ci0gICAgICAgICAgICAgICAgc2xvdEZpbGVDcmVhdGVkKGpvYiwgdXJsKTsKKyAgICAgICAgICAg
IEtJTzo6Q29weUpvYiAqY29weUpvYiA9IEtJTzo6Y29weShRVXJsOjpmcm9tTG9jYWxGaWxlKHRl
bXBGaWxlLT5maWxlTmFtZSgpKSwgdXJsKTsKKyAgICAgICAgICAgIGNvcHlKb2ItPnNldFVpRGVs
ZWdhdGUobnVsbHB0cik7CisgICAgICAgICAgICBjb3B5Sm9iLT5zZXREZWZhdWx0UGVybWlzc2lv
bnModHJ1ZSk7CisgICAgICAgICAgICBjb25uZWN0KGNvcHlKb2IsICZLSU86OkNvcHlKb2I6OnJl
c3VsdCwgdGhpcywgWz1dKEtKb2IgKmZpbmlzaGVkSm9iKSB7CisgICAgICAgICAgICAgICAgc2xv
dEZpbGVDcmVhdGVkKGZpbmlzaGVkSm9iLCB1cmwpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBjb25uZWN0KGpvYiwgJktJTzo6Q29weUpvYjo6cmVzdWx0LCB0ZW1wRmlsZSwgJlFUZW1w
b3JhcnlGaWxlOjpkZWxldGVMYXRlcik7CisgICAgICAgICAgICBjb25uZWN0KGNvcHlKb2IsICZL
SU86OkNvcHlKb2I6OnJlc3VsdCwgdGVtcEZpbGUsICZRVGVtcG9yYXJ5RmlsZTo6ZGVsZXRlTGF0
ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
S01lc3NhZ2VCb3g6OmVycm9yKG51bGxwdHIsIGpvYi0+ZXJyb3JTdHJpbmcoKSk7CmRpZmYgLS1n
aXQgYS9hcHAvU2VhcmNoL2tyc2VhcmNoZGlhbG9nLmNwcCBiL2FwcC9TZWFyY2gva3JzZWFyY2hk
aWFsb2cuY3BwCmluZGV4IDlhZmQwODczZS4uM2Y3NzU3Y2M1IDEwMDY0NAotLS0gYS9hcHAvU2Vh
cmNoL2tyc2VhcmNoZGlhbG9nLmNwcAorKysgYi9hcHAvU2VhcmNoL2tyc2VhcmNoZGlhbG9nLmNw
cApAQCAtMTUzLDggKzE1Myw3IEBAIEtyU2VhcmNoRGlhbG9nOjpLclNlYXJjaERpYWxvZyhjb25z
dCBRU3RyaW5nICZwcm9maWxlLCBRV2lkZ2V0ICpwYXJlbnQpCiAgICAgc2VhcmNoVGV4dFRvQ2xp
cGJvYXJkLT5zZXRUZXh0KGkxOG4oIlF1ZXJ5IHRvIGNsaXBib2FyZCIpKTsKICAgICBzZWFyY2hU
ZXh0VG9DbGlwYm9hcmQtPnNldFRvb2xUaXAoaTE4bigiUGxhY2Ugc2VhcmNoIHRleHQgdG8gY2xp
cGJvYXJkIHdoZW4gYSBmb3VuZCBmaWxlIGlzIG9wZW5lZC4iKSk7CiAgICAgc2VhcmNoVGV4dFRv
Q2xpcGJvYXJkLT5zZXRDaGVja1N0YXRlKHN0YXRpY19jYXN0PFF0OjpDaGVja1N0YXRlPihncm91
cC5yZWFkRW50cnkoIlF1ZXJ5VG9DbGlwYm9hcmQiLCAwKSkpOwotICAgIGNvbm5lY3Qoc2VhcmNo
VGV4dFRvQ2xpcGJvYXJkLCAmUUNoZWNrQm94OjpzdGF0ZUNoYW5nZWQsIHRoaXMsIFs9XShpbnQg
c3RhdGUpIHsKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCAiU2VhcmNoIik7
CisgICAgY29ubmVjdChzZWFyY2hUZXh0VG9DbGlwYm9hcmQsICZRQ2hlY2tCb3g6OnN0YXRlQ2hh
bmdlZCwgdGhpcywgW2dyb3VwXShpbnQgc3RhdGUpIG11dGFibGUgewogICAgICAgICBncm91cC53
cml0ZUVudHJ5KCJRdWVyeVRvQ2xpcGJvYXJkIiwgc3RhdGUpOwogICAgIH0pOwogICAgIGJ1dHRv
bnNMYXlvdXQtPmFkZFdpZGdldChzZWFyY2hUZXh0VG9DbGlwYm9hcmQpOwpkaWZmIC0tZ2l0IGEv
YXBwL1NlYXJjaC9rcnNlYXJjaG1vZC5jcHAgYi9hcHAvU2VhcmNoL2tyc2VhcmNobW9kLmNwcApp
bmRleCA4OGViZTJmM2EuLjNmYzViOTU4ZSAxMDA2NDQKLS0tIGEvYXBwL1NlYXJjaC9rcnNlYXJj
aG1vZC5jcHAKKysrIGIvYXBwL1NlYXJjaC9rcnNlYXJjaG1vZC5jcHAKQEAgLTgxLDI1ICs4MSwy
NSBAQCB2b2lkIEtyU2VhcmNoTW9kOjpzY2FuVXJsKGNvbnN0IFFVcmwgJnVybCkKIAogICAgIG1f
dW5TY2FubmVkVXJscy5wdXNoKHVybCk7CiAgICAgd2hpbGUgKCFtX3VuU2Nhbm5lZFVybHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGNvbnN0IFFVcmwgdXJsID0gbV91blNjYW5uZWRVcmxzLnBvcCgp
OworICAgICAgICBjb25zdCBRVXJsIGN1cnJlbnRVcmwgPSBtX3VuU2Nhbm5lZFVybHMucG9wKCk7
CiAKICAgICAgICAgaWYgKG1fc3RvcFNlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAobV9xdWVyeS0+aXNFeGNsdWRlZCh1cmwpKSB7Ci0gICAgICAgICAgICBpZiAoIW1f
cXVlcnktPnNlYXJjaEluRGlycygpLmNvbnRhaW5zKHVybCkpCisgICAgICAgIGlmIChtX3F1ZXJ5
LT5pc0V4Y2x1ZGVkKGN1cnJlbnRVcmwpKSB7CisgICAgICAgICAgICBpZiAoIW1fcXVlcnktPnNl
YXJjaEluRGlycygpLmNvbnRhaW5zKGN1cnJlbnRVcmwpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fc2Nhbm5lZFVybHMuY29udGFpbnModXJs
KSkKKyAgICAgICAgaWYgKG1fc2Nhbm5lZFVybHMuY29udGFpbnMoY3VycmVudFVybCkpCiAgICAg
ICAgICAgICAvLyBhdm9pZCBlbmRsZXNzIGxvb3AKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIG1fc2Nhbm5lZFVybHMucHVzaCh1cmwpOworICAgICAgICBtX3NjYW5uZWRVcmxzLnB1
c2goY3VycmVudFVybCk7CiAKLSAgICAgICAgZW1pdCBzZWFyY2hpbmcodXJsLnRvRGlzcGxheVN0
cmluZyhRVXJsOjpQcmVmZXJMb2NhbEZpbGUpKTsKKyAgICAgICAgZW1pdCBzZWFyY2hpbmcoY3Vy
cmVudFVybC50b0Rpc3BsYXlTdHJpbmcoUVVybDo6UHJlZmVyTG9jYWxGaWxlKSk7CiAKLSAgICAg
ICAgc2NhbkRpcmVjdG9yeSh1cmwpOworICAgICAgICBzY2FuRGlyZWN0b3J5KGN1cnJlbnRVcmwp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvYXBwL1NwbGl0dGVyL2NvbWJpbmVyLmNwcCBiL2Fw
cC9TcGxpdHRlci9jb21iaW5lci5jcHAKaW5kZXggYmYxYzZmMmVhLi4xMWM2ZTYxZDQgMTAwNjQ0
Ci0tLSBhL2FwcC9TcGxpdHRlci9jb21iaW5lci5jcHAKKysrIGIvYXBwL1NwbGl0dGVyL2NvbWJp
bmVyLmNwcApAQCAtMTMsOCArMTMsOCBAQAogCiAjaW5jbHVkZSA8S0ZpbGVJdGVtPgogI2luY2x1
ZGUgPEtJTy9Kb2I+Ci0jaW5jbHVkZSA8S0lPL1N0YXRKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVp
RGVsZWdhdGU+CisjaW5jbHVkZSA8S0lPL1N0YXRKb2I+CiAjaW5jbHVkZSA8S0xvY2FsaXplZFN0
cmluZz4KICNpbmNsdWRlIDxLTWVzc2FnZUJveD4KICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNjgs
MTIgKzY4LDEyIEBAIHZvaWQgQ29tYmluZXI6OmNvbWJpbmUoKQogCiAgICAgaWYgKCFmaWxlLmlz
UmVhZGFibGUoKSkgewogICAgICAgICBpbnQgcmV0ID0gS01lc3NhZ2VCb3g6OnF1ZXN0aW9uVHdv
QWN0aW9ucyhudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaTE4bigiVGhlIENSQyBpbmZvcm1hdGlvbiBmaWxlICglMSkgaXMgbWlzc2luZy5cbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbGlk
aXR5IGNoZWNraW5nIGlzIGltcG9zc2libGUgd2l0aG91dCBpdC4gQ29udGludWUgY29tYmluaW5n
PyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw
bFVSTC50b0Rpc3BsYXlTdHJpbmcoUVVybDo6UHJlZmVyTG9jYWxGaWxlKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNvbnQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0
ZW06OmNhbmNlbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaTE4bigiVGhlIENSQyBpbmZvcm1hdGlvbiBmaWxlICglMSkgaXMgbWlzc2luZy5c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsaWRpdHkgY2hlY2tpbmcgaXMgaW1wb3NzaWJsZSB3aXRob3V0IGl0LiBDb250aW51ZSBj
b21iaW5pbmc/IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGxVUkwudG9EaXNwbGF5U3RyaW5nKFFVcmw6OlByZWZlckxvY2FsRmlsZSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1N0YW5k
YXJkR3VpSXRlbTo6Y29udCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBLU3RhbmRhcmRHdWlJdGVtOjpjYW5jZWwoKSk7CiAKICAgICAgICAgaWYg
KHJldCA9PSBLTWVzc2FnZUJveDo6U2Vjb25kYXJ5QWN0aW9uKSB7CiAgICAgICAgICAgICByZWpl
Y3QoKTsKQEAgLTEwMSwxMCArMTAxLDEwIEBAIHZvaWQgQ29tYmluZXI6OmNvbWJpbmVTcGxpdEZp
bGVEYXRhUmVjZWl2ZWQoS0lPOjpKb2IgKiwgY29uc3QgUUJ5dGVBcnJheSAmYnl0ZUFyCiB2b2lk
IENvbWJpbmVyOjpjb21iaW5lU3BsaXRGaWxlRmluaXNoZWQoS0pvYiAqam9iKQogewogICAgIGNv
bWJpbmVSZWFkSm9iID0gbnVsbHB0cjsKLSAgICBRU3RyaW5nIGVycm9yOworICAgIFFTdHJpbmcg
ZXJyOwogCiAgICAgaWYgKGpvYi0+ZXJyb3IoKSkKLSAgICAgICAgZXJyb3IgPSBpMThuKCJFcnJv
ciBhdCByZWFkaW5nIHRoZSBDUkMgZmlsZSAoJTEpLiIsIHNwbFVSTC50b0Rpc3BsYXlTdHJpbmco
UVVybDo6UHJlZmVyTG9jYWxGaWxlKSk7CisgICAgICAgIGVyciA9IGkxOG4oIkVycm9yIGF0IHJl
YWRpbmcgdGhlIENSQyBmaWxlICglMSkuIiwgc3BsVVJMLnRvRGlzcGxheVN0cmluZyhRVXJsOjpQ
cmVmZXJMb2NhbEZpbGUpKTsKICAgICBlbHNlIHsKICAgICAgICAgc3BsaXRGaWxlLnJlbW92ZSgn
XHInKTsgLy8gV2luZG93cyBjb21wYXRpYmlsaXR5CiAgICAgICAgIFFTdHJpbmdMaXN0IHNwbGl0
RmlsZUNvbnRlbnQgPSBzcGxpdEZpbGUuc3BsaXQoJ1xuJyk7CkBAIC0xMzMsMTcgKzEzMywxNyBA
QCB2b2lkIENvbWJpbmVyOjpjb21iaW5lU3BsaXRGaWxlRmluaXNoZWQoS0pvYiAqam9iKQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNGaWxlTmFtZSB8fCAhaGFzU2l6ZSB8fCAhaGFzQ3Jj
KQotICAgICAgICAgICAgZXJyb3IgPSBpMThuKCJOb3QgYSB2YWxpZCBDUkMgZmlsZS4iKTsKKyAg
ICAgICAgICAgIGVyciA9IGkxOG4oIk5vdCBhIHZhbGlkIENSQyBmaWxlLiIpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBoYXNWYWxpZFNwbGl0RmlsZSA9IHRydWU7CiAgICAgfQogCi0gICAg
aWYgKCFlcnJvci5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWVyci5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaW50IHJldCA9IEtNZXNzYWdlQm94OjpxdWVzdGlvblR3b0FjdGlvbnMobnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICsgaTE4bigi
XG5WYWxpZGl0eSBjaGVja2luZyBpcyBpbXBvc3NpYmxlIHdpdGhvdXQgYSBnb29kIENSQyBmaWxl
LiBDb250aW51ZSBjb21iaW5pbmc/IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNvbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNhbmNlbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyICsgaTE4bigi
XG5WYWxpZGl0eSBjaGVja2luZyBpcyBpbXBvc3NpYmxlIHdpdGhvdXQgYSBnb29kIENSQyBmaWxl
LiBDb250aW51ZSBjb21iaW5pbmc/IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBLU3RhbmRhcmRHdWlJdGVtOjpjb250KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNh
bmNlbCgpKTsKICAgICAgICAgaWYgKHJldCA9PSBLTWVzc2FnZUJveDo6U2Vjb25kYXJ5QWN0aW9u
KSB7CiAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4MSw3
ICsxODEsOCBAQCB2b2lkIENvbWJpbmVyOjpzdGF0RGVzdFJlc3VsdChLSm9iICpqb2IpCiAgICAg
ICAgICAgICByZWplY3QoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7IC8vIGRlc3RpbmF0aW9u
IGFscmVhZHkgZXhpc3RzCi0gICAgICAgIEtJTzo6UmVuYW1lRGlhbG9nX09wdGlvbnMgbW9kZSA9
IGR5bmFtaWNfY2FzdDxLSU86OlN0YXRKb2IgKj4oam9iKS0+c3RhdFJlc3VsdCgpLmlzRGlyKCkg
PyBLSU86OlJlbmFtZURpYWxvZ19EZXN0SXNEaXJlY3RvcnkgOiBLSU86OlJlbmFtZURpYWxvZ19P
dmVyd3JpdGU7CisgICAgICAgIEtJTzo6UmVuYW1lRGlhbG9nX09wdGlvbnMgbW9kZSA9CisgICAg
ICAgICAgICBkeW5hbWljX2Nhc3Q8S0lPOjpTdGF0Sm9iICo+KGpvYiktPnN0YXRSZXN1bHQoKS5p
c0RpcigpID8gS0lPOjpSZW5hbWVEaWFsb2dfRGVzdElzRGlyZWN0b3J5IDogS0lPOjpSZW5hbWVE
aWFsb2dfT3ZlcndyaXRlOwogICAgICAgICBLSU86OlJlbmFtZURpYWxvZyBkbGcodGhpcywgaTE4
bigiRmlsZSBBbHJlYWR5IEV4aXN0cyIpLCBRVXJsKCksIHdyaXRlVVJMLCBtb2RlKTsKICAgICAg
ICAgc3dpdGNoIChkbGcuZXhlYygpKSB7CiAgICAgICAgIGNhc2UgS0lPOjpSZXN1bHRfT3Zlcndy
aXRlOgpkaWZmIC0tZ2l0IGEvYXBwL1NwbGl0dGVyL3NwbGl0dGVyZ3VpLmNwcCBiL2FwcC9TcGxp
dHRlci9zcGxpdHRlcmd1aS5jcHAKaW5kZXggNzI0YzgwZDUyLi5hNjVjNGFlZTcgMTAwNjQ0Ci0t
LSBhL2FwcC9TcGxpdHRlci9zcGxpdHRlcmd1aS5jcHAKKysrIGIvYXBwL1NwbGl0dGVyL3NwbGl0
dGVyZ3VpLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKIHN0cnVj
dCBTcGxpdHRlckdVSTo6UHJlZGVmaW5lZERldmljZSB7Ci0gICAgUHJlZGVmaW5lZERldmljZShR
U3RyaW5nIG5hbWUsIEtJTzo6ZmlsZXNpemVfdCBjYXBhY2l0eSkKLSAgICAgICAgOiBuYW1lKHN0
ZDo6bW92ZShuYW1lKSkKLSAgICAgICAgLCBjYXBhY2l0eShjYXBhY2l0eSkKKyAgICBQcmVkZWZp
bmVkRGV2aWNlKFFTdHJpbmcgaW5pdE5hbWUsIEtJTzo6ZmlsZXNpemVfdCBpbml0Q2FwYWNpdHkp
CisgICAgICAgIDogbmFtZShzdGQ6Om1vdmUoaW5pdE5hbWUpKQorICAgICAgICAsIGNhcGFjaXR5
KGluaXRDYXBhY2l0eSkKICAgICB7CiAgICAgfQogICAgIFByZWRlZmluZWREZXZpY2UoY29uc3Qg
UHJlZGVmaW5lZERldmljZSAmb3RoZXIpCmRpZmYgLS1naXQgYS9hcHAvU3luY2hyb25pemVyL3N5
bmNocm9uaXplci5jcHAgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplci5jcHAKaW5kZXgg
Y2IxZDZkNWY4Li5iZTc3OGRmMTkgMTAwNjQ0Ci0tLSBhL2FwcC9TeW5jaHJvbml6ZXIvc3luY2hy
b25pemVyLmNwcAorKysgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplci5jcHAKQEAgLTMz
LDEwICszMywxMCBAQAogI2luY2x1ZGUgPFFWQm94TGF5b3V0PgogCiAjaW5jbHVkZSA8S0lPL0Rl
bGV0ZUpvYj4KKyNpbmNsdWRlIDxLSU8vRmlsZUNvcHlKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVp
RGVsZWdhdGU+Ci0jaW5jbHVkZSA8S0lPL1NraXBEaWFsb2c+CiAjaW5jbHVkZSA8S0lPL01rZGly
Sm9iPgotI2luY2x1ZGUgPEtJTy9GaWxlQ29weUpvYj4KKyNpbmNsdWRlIDxLSU8vU2tpcERpYWxv
Zz4KICNpbmNsdWRlIDxLSU8vV2lkZ2V0c0Fza1VzZXJBY3Rpb25IYW5kbGVyPgogI2luY2x1ZGUg
PEtMb2NhbGl6ZWRTdHJpbmc+CiAjaW5jbHVkZSA8S01lc3NhZ2VCb3g+CkBAIC05Nyw5ICs5Nyw5
IEBAIHZvaWQgU3luY2hyb25pemVyOjpyZXNldCgpCiAgICAgc3RvcHBlZCA9IGZhbHNlOwogICAg
IHJlY3Vyc2VTdWJEaXJzID0gZm9sbG93U3ltTGlua3MgPSBpZ25vcmVEYXRlID0gYXN5bW1ldHJp
YyA9IGNtcEJ5Q29udGVudCA9IGlnbm9yZUNhc2UgPSBhdXRvU2Nyb2xsID0gZmFsc2U7CiAgICAg
bWFya0VxdWFscyA9IG1hcmtEaWZmZXJzID0gbWFya0NvcHlUb0xlZnQgPSBtYXJrQ29weVRvUmln
aHQgPSBtYXJrRGVsZXRhYmxlID0gbWFya0R1cGxpY2F0ZXMgPSBtYXJrU2luZ2xlcyA9IGZhbHNl
OwotICAgIGxlZnRDb3B5RW5hYmxlZCA9IHJpZ2h0Q29weUVuYWJsZWQgPSBkZWxldGVFbmFibGVk
ID0gb3ZlcldyaXRlID0gYXV0b1NraXAgPSBwYXVzZWQgPSBmYWxzZTsKLSAgICBsZWZ0Q29weU5y
ID0gcmlnaHRDb3B5TnIgPSBkZWxldGVOciA9IDA7Ci0gICAgbGVmdENvcHlTaXplID0gcmlnaHRD
b3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOworICAgIG1fbGVmdENvcHlFbmFibGVkID0gbV9yaWdo
dENvcHlFbmFibGVkID0gbV9kZWxldGVFbmFibGVkID0gbV9vdmVyV3JpdGUgPSBhdXRvU2tpcCA9
IHBhdXNlZCA9IGZhbHNlOworICAgIG1fbGVmdENvcHlOciA9IG1fcmlnaHRDb3B5TnIgPSBtX2Rl
bGV0ZU5yID0gMDsKKyAgICBtX2xlZnRDb3B5U2l6ZSA9IG1fcmlnaHRDb3B5U2l6ZSA9IGRlbGV0
ZVNpemUgPSAwOwogICAgIGNvbXBhcmVkRGlycyA9IGZpbGVDb3VudCA9IDA7CiAgICAgbGVmdEJh
c2VEaXIuY2xlYXIoKTsKICAgICByaWdodEJhc2VEaXIuY2xlYXIoKTsKQEAgLTEzOSw3ICsxMzks
NyBAQCBpbnQgU3luY2hyb25pemVyOjpjb21wYXJlKFFTdHJpbmcgbGVmdFVSTCwKIAogICAgIHN0
b3BwZWQgPSBmYWxzZTsKIAotICAgIHRoaXMtPnF1ZXJ5ID0gcXVlcnk7CisgICAgdGhpcy0+bV9x
dWVyeSA9IHF1ZXJ5OwogCiAgICAgbGVmdFVSTCA9IEtVcmxDb21wbGV0aW9uOjpyZXBsYWNlZFBh
dGgobGVmdFVSTCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgcmlnaHRVUkwgPSBLVXJsQ29tcGxldGlvbjo6
cmVwbGFjZWRQYXRoKHJpZ2h0VVJMLCB0cnVlLCB0cnVlKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2
b2lkIFN5bmNocm9uaXplcjo6Y29tcGFyZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAq
cGFyZW50LAogICAgICAgICBpZiAoY2hlY2tJZlNlbGVjdGVkICYmICFzZWxlY3RlZEZpbGVzLmNv
bnRhaW5zKGZpbGVfbmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo
IXF1ZXJ5LT5tYXRjaChsZWZ0X2ZpbGUpKQorICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoKGxl
ZnRfZmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoKHJpZ2h0X2Zp
bGUgPSByaWdodF9kaXJlY3RvcnktPnNlYXJjaChmaWxlX25hbWUsIGlnbm9yZUNhc2UpKSA9PSBu
dWxscHRyKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpjb21wYXJlRGly
ZWN0b3J5KFN5bmNocm9uaXplckZpbGVJdGVtICpwYXJlbnQsCiAgICAgICAgIGlmIChjaGVja0lm
U2VsZWN0ZWQgJiYgIXNlbGVjdGVkRmlsZXMuY29udGFpbnMoZmlsZV9uYW1lKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKQor
ICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGxlZnRfZGlyZWN0b3J5LT5zZWFyY2goZmlsZV9uYW1lLCBp
Z25vcmVDYXNlKSA9PSBudWxscHRyKQpAQCAtMzIyLDEwICszMjIsMTAgQEAgdm9pZCBTeW5jaHJv
bml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0gKnBhcmVudCwKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAvLyBFeGNsdWRl
IHRoZSBsZWZ0LXNpZGUgZm9sZGVyIGlmIGl0J3MgaW5zaWRlIHRoZSBleGNsdXNpb24gbGlzdAot
ICAgICAgICAgICAgICAgIGlmIChxdWVyeS0+aXNFeGNsdWRlZChsZWZ0X2ZpbGUtPmdldFVybCgp
KSkKKyAgICAgICAgICAgICAgICBpZiAobV9xdWVyeS0+aXNFeGNsdWRlZChsZWZ0X2ZpbGUtPmdl
dFVybCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAg
ICBpZiAoIXF1ZXJ5LT5tYXRjaERpck5hbWUobGVmdF9maWxlX25hbWUpKQorICAgICAgICAgICAg
ICAgIGlmICghbV9xdWVyeS0+bWF0Y2hEaXJOYW1lKGxlZnRfZmlsZV9uYW1lKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICBpZiAoKHJpZ2h0X2ZpbGUg
PSByaWdodF9kaXJlY3RvcnktPnNlYXJjaChsZWZ0X2ZpbGVfbmFtZSwgaWdub3JlQ2FzZSkpID09
IG51bGxwdHIpIHsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFN5bmNocm9uaXplcjo6Y29tcGFy
ZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdF9maWxl
LT5nZXRNb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICFxdWVyeS0+bWF0Y2gobGVmdF9maWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbV9xdWVyeS0+bWF0Y2gobGVm
dF9maWxlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChuZXcgQ29tcGFyZVRh
c2sobWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVSTCArIGxlZnRfZmlsZV9uYW1lICsgJy8nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnREaXIuaXNFbXB0eSgpID8gbGVmdF9maWxlX25h
bWUgOiBsZWZ0RGlyICsgJy8nICsgbGVmdF9maWxlX25hbWUsCkBAIC0zNjgsNyArMzY4LDcgQEAg
dm9pZCBTeW5jaHJvbml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0g
KnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZWZ0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2ZpbGUt
PmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5tYXRjaChsZWZ0X2ZpbGUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAhbV9xdWVyeS0+bWF0Y2gobGVmdF9maWxlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrLmFwcGVuZChuZXcgQ29tcGFyZVRhc2sobWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVSTCArIGxlZnRfZmlsZV9uYW1lICsg
Jy8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJp
Z2h0VVJMICsgcmlnaHRfZmlsZV9uYW1lICsgJy8nLApAQCAtMzg4LDEwICszODgsMTAgQEAgdm9p
ZCBTeW5jaHJvbml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0gKnBh
cmVudCwKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAv
LyBFeGNsdWRlIHRoZSByaWdodC1zaWRlIGZvbGRlciBpZiBpdCdzIGluc2lkZSB0aGUgZXhjbHVz
aW9uIGxpc3QKLSAgICAgICAgICAgICAgICBpZiAocXVlcnktPmlzRXhjbHVkZWQocmlnaHRfZmls
ZS0+Z2V0VXJsKCkpKQorICAgICAgICAgICAgICAgIGlmIChtX3F1ZXJ5LT5pc0V4Y2x1ZGVkKHJp
Z2h0X2ZpbGUtPmdldFVybCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LT5tYXRjaERpck5hbWUoZmlsZV9uYW1lKSkKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoRGlyTmFtZShmaWxlX25hbWUpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGlmIChsZWZ0X2RpcmVj
dG9yeS0+c2VhcmNoKGZpbGVfbmFtZSwgaWdub3JlQ2FzZSkgPT0gbnVsbHB0cikgewpAQCAtNDA2
LDcgKzQwNiw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpjb21wYXJlRGlyZWN0b3J5KFN5bmNocm9u
aXplckZpbGVJdGVtICpwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfZmlsZS0+Z2V0TW9kZSgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJpZ2h0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5t
YXRjaChyaWdodF9maWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1fcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IENvbXBhcmVUYXNrKG1lLCByaWdodFVSTCArIGZpbGVfbmFtZSArICcvJywgcmlnaHRE
aXIuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogcmlnaHREaXIgKyAnLycgKyBmaWxlX25hbWUsIGZh
bHNlLCBpZ25vcmVIaWRkZW4pKTsKICAgICAgICAgICAgICAgICB9CkBAIC02OTYsOCArNjk2LDgg
QEAgU3luY2hyb25pemVyRmlsZUl0ZW0gKlN5bmNocm9uaXplcjo6YWRkRHVwbGljYXRlSXRlbShT
eW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNUZW1wKTsKIAogICAgIGlmICh1bmNlcnRhaW4gPT0gVFRfVU5LTk9XTikg
ewotICAgICAgICBRVXJsIGxlZnRVUkwgPSBTeW5jaHJvbml6ZXI6OmZzVXJsKGxlZnREaXIuaXNF
bXB0eSgpID8gKFFTdHJpbmcpIChsZWZ0QmFzZURpciArIGxlZnROYW1lKTogbGVmdEJhc2VEaXIg
KyBsZWZ0RGlyICsgUVN0cmluZygnLycpICsgbGVmdE5hbWUpOwotICAgICAgICBRVXJsIHJpZ2h0
VVJMID0gU3luY2hyb25pemVyOjpmc1VybChyaWdodERpci5pc0VtcHR5KCkgPyAoUVN0cmluZykg
KHJpZ2h0QmFzZURpciArIHJpZ2h0TmFtZSkgOiByaWdodEJhc2VEaXIgKyByaWdodERpciArICcv
JyArIHJpZ2h0TmFtZSk7CisgICAgICAgIFFVcmwgbGVmdFVSTCA9IFN5bmNocm9uaXplcjo6ZnNV
cmwobGVmdERpci5pc0VtcHR5KCkgPyAoUVN0cmluZykobGVmdEJhc2VEaXIgKyBsZWZ0TmFtZSkg
OiBsZWZ0QmFzZURpciArIGxlZnREaXIgKyBRU3RyaW5nKCcvJykgKyBsZWZ0TmFtZSk7CisgICAg
ICAgIFFVcmwgcmlnaHRVUkwgPSBTeW5jaHJvbml6ZXI6OmZzVXJsKHJpZ2h0RGlyLmlzRW1wdHko
KSA/IChRU3RyaW5nKShyaWdodEJhc2VEaXIgKyByaWdodE5hbWUpIDogcmlnaHRCYXNlRGlyICsg
cmlnaHREaXIgKyAnLycgKyByaWdodE5hbWUpOwogICAgICAgICBzdGFjay5hcHBlbmQobmV3IENv
bXBhcmVDb250ZW50VGFzayh0aGlzLCBpdGVtLCBsZWZ0VVJMLCByaWdodFVSTCwgbGVmdFNpemUp
KTsKICAgICB9CiAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFN5bmNocm9uaXplcjo6YWRkU2lu
Z2xlRGlyZWN0b3J5KFN5bmNocm9uaXplckZpbGVJdGVtICpwYXJlbnQsIFN5bmNocm9uaXplcgog
CiAgICAgICAgIGZpbGVfbmFtZSA9IGZpbGUtPmdldE5hbWUoKTsKIAotICAgICAgICBpZiAoIXF1
ZXJ5LT5tYXRjaChmaWxlKSkKKyAgICAgICAgaWYgKCFtX3F1ZXJ5LT5tYXRjaChmaWxlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0xlZnQpCkBAIC03NTIsNyArNzUy
LDcgQEAgdm9pZCBTeW5jaHJvbml6ZXI6OmFkZFNpbmdsZURpcmVjdG9yeShTeW5jaHJvbml6ZXJG
aWxlSXRlbSAqcGFyZW50LCBTeW5jaHJvbml6ZXIKICAgICAgICAgICAgIGlmIChleGNsdWRlZFBh
dGhzLmNvbnRhaW5zKGRpck5hbWUuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogZGlyTmFtZSArICcv
JyArIGZpbGVfbmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IGlmICghcXVlcnktPm1hdGNoRGlyTmFtZShmaWxlX25hbWUpKQorICAgICAgICAgICAgaWYgKCFt
X3F1ZXJ5LT5tYXRjaERpck5hbWUoZmlsZV9uYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgU3luY2hyb25pemVyRmlsZUl0ZW0gKm1lOwpAQCAtNzY5LDcgKzc2
OSw3IEBAIHZvaWQgU3luY2hyb25pemVyOjphZGRTaW5nbGVEaXJlY3RvcnkoU3luY2hyb25pemVy
RmlsZUl0ZW0gKnBhcmVudCwgU3luY2hyb25pemVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZS0+Z2V0TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5
LT5tYXRjaChmaWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1f
cXVlcnktPm1hdGNoKGZpbGUpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBt
ZSA9IGFkZFJpZ2h0T25seUl0ZW0ocGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlX25hbWUsCkBAIC03ODIsNyArNzgyLDcgQEAgdm9pZCBTeW5jaHJvbml6
ZXI6OmFkZFNpbmdsZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW50LCBTeW5j
aHJvbml6ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS0+Z2V0
TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLT5nZXRB
Q0woKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5tYXRjaChmaWxlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtX3F1ZXJ5LT5tYXRjaChmaWxl
KSk7CiAgICAgICAgICAgICBzdGFjay5hcHBlbmQobmV3IENvbXBhcmVUYXNrKG1lLCB1cmwgKyBm
aWxlX25hbWUgKyAnLycsIGRpck5hbWUuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogZGlyTmFtZSAr
ICcvJyArIGZpbGVfbmFtZSwgaXNMZWZ0LCBpZ25vcmVIaWRkZW4pKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTg3MywxMSArODczLDExIEBAIHZvaWQgU3luY2hyb25pemVyOjpvcGVyYXRlKFN5bmNo
cm9uaXplckZpbGVJdGVtICppdGVtLCB2b2lkICgqZXhlY3V0ZU9wZXJhdGlvbikoCiAKICAgICAg
ICAgUUxpc3RJdGVyYXRvcjxTeW5jaHJvbml6ZXJGaWxlSXRlbSAqPiBpdChyZXN1bHRMaXN0KTsK
ICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgU3luY2hyb25pemVy
RmlsZUl0ZW0gKml0ZW0gPSBpdC5uZXh0KCk7CisgICAgICAgICAgICBTeW5jaHJvbml6ZXJGaWxl
SXRlbSAqbmV4dEl0ZW0gPSBpdC5uZXh0KCk7CiAKLSAgICAgICAgICAgIGlmIChpdGVtLT5sZWZ0
RGlyZWN0b3J5KCkgPT0gbGVmdERpck5hbWUgfHwgaXRlbS0+bGVmdERpcmVjdG9yeSgpLnN0YXJ0
c1dpdGgobGVmdERpck5hbWUgKyAnLycpIHx8IGl0ZW0tPnJpZ2h0RGlyZWN0b3J5KCkgPT0gcmln
aHREaXJOYW1lCi0gICAgICAgICAgICAgICAgfHwgaXRlbS0+cmlnaHREaXJlY3RvcnkoKS5zdGFy
dHNXaXRoKHJpZ2h0RGlyTmFtZSArICcvJykpCi0gICAgICAgICAgICAgICAgZXhlY3V0ZU9wZXJh
dGlvbihpdGVtKTsKKyAgICAgICAgICAgIGlmIChuZXh0SXRlbS0+bGVmdERpcmVjdG9yeSgpID09
IGxlZnREaXJOYW1lIHx8IG5leHRJdGVtLT5sZWZ0RGlyZWN0b3J5KCkuc3RhcnRzV2l0aChsZWZ0
RGlyTmFtZSArICcvJykKKyAgICAgICAgICAgICAgICB8fCBuZXh0SXRlbS0+cmlnaHREaXJlY3Rv
cnkoKSA9PSByaWdodERpck5hbWUgfHwgbmV4dEl0ZW0tPnJpZ2h0RGlyZWN0b3J5KCkuc3RhcnRz
V2l0aChyaWdodERpck5hbWUgKyAnLycpKQorICAgICAgICAgICAgICAgIGV4ZWN1dGVPcGVyYXRp
b24obmV4dEl0ZW0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTA2NiwxNyArMTA2NiwxNyBA
QCB2b2lkIFN5bmNocm9uaXplcjo6c2V0U2Nyb2xsaW5nKGJvb2wgc2Nyb2xsKQogCiB2b2lkIFN5
bmNocm9uaXplcjo6c3luY2hyb25pemUoUVdpZGdldCAqc3luY1dkZywgYm9vbCBsZWZ0Q29weUVu
YWJsZWQsIGJvb2wgcmlnaHRDb3B5RW5hYmxlZCwgYm9vbCBkZWxldGVFbmFibGVkLCBib29sIG92
ZXJXcml0ZSwgaW50IHBhclRocmVhZHMpCiB7Ci0gICAgdGhpcy0+bGVmdENvcHlFbmFibGVkID0g
bGVmdENvcHlFbmFibGVkOwotICAgIHRoaXMtPnJpZ2h0Q29weUVuYWJsZWQgPSByaWdodENvcHlF
bmFibGVkOwotICAgIHRoaXMtPmRlbGV0ZUVuYWJsZWQgPSBkZWxldGVFbmFibGVkOwotICAgIHRo
aXMtPm92ZXJXcml0ZSA9IG92ZXJXcml0ZTsKKyAgICB0aGlzLT5tX2xlZnRDb3B5RW5hYmxlZCA9
IGxlZnRDb3B5RW5hYmxlZDsKKyAgICB0aGlzLT5tX3JpZ2h0Q29weUVuYWJsZWQgPSByaWdodENv
cHlFbmFibGVkOworICAgIHRoaXMtPm1fZGVsZXRlRW5hYmxlZCA9IGRlbGV0ZUVuYWJsZWQ7Cisg
ICAgdGhpcy0+bV9vdmVyV3JpdGUgPSBvdmVyV3JpdGU7CiAgICAgdGhpcy0+cGFyYWxsZWxUaHJl
YWRzID0gcGFyVGhyZWFkczsKICAgICB0aGlzLT5zeW5jRGxnV2lkZ2V0ID0gc3luY1dkZzsKIAog
ICAgIGF1dG9Ta2lwID0gcGF1c2VkID0gZGlzYWJsZU5ld1Rhc2tzID0gZmFsc2U7CiAKLSAgICBs
ZWZ0Q29weU5yID0gcmlnaHRDb3B5TnIgPSBkZWxldGVOciA9IDA7Ci0gICAgbGVmdENvcHlTaXpl
ID0gcmlnaHRDb3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOworICAgIG1fbGVmdENvcHlOciA9IG1f
cmlnaHRDb3B5TnIgPSBtX2RlbGV0ZU5yID0gMDsKKyAgICBtX2xlZnRDb3B5U2l6ZSA9IG1fcmln
aHRDb3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOwogCiAgICAgaW5UYXNrRmluaXNoZWQgPSAwOwog
ICAgIGxhc3RUYXNrID0gbnVsbHB0cjsKQEAgLTExMjMsMTEgKzExMjMsMTEgQEAgU3luY2hyb25p
emVyRmlsZUl0ZW0gKlN5bmNocm9uaXplcjo6Z2V0TmV4dFRhc2soKQogICAgICAgICBpZiAoY3Vy
cmVudFRhc2stPmlzTWFya2VkKCkpIHsKICAgICAgICAgICAgIHRhc2sgPSBjdXJyZW50VGFzay0+
dGFzaygpOwogCi0gICAgICAgICAgICBpZiAobGVmdENvcHlFbmFibGVkICYmIHRhc2sgPT0gVFRf
Q09QWV9UT19MRUZUKQorICAgICAgICAgICAgaWYgKG1fbGVmdENvcHlFbmFibGVkICYmIHRhc2sg
PT0gVFRfQ09QWV9UT19MRUZUKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZWxzZSBpZiAocmlnaHRDb3B5RW5hYmxlZCAmJiB0YXNrID09IFRUX0NPUFlfVE9fUklHSFQpCisg
ICAgICAgICAgICBlbHNlIGlmIChtX3JpZ2h0Q29weUVuYWJsZWQgJiYgdGFzayA9PSBUVF9DT1BZ
X1RPX1JJR0hUKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAo
ZGVsZXRlRW5hYmxlZCAmJiB0YXNrID09IFRUX0RFTEVURSkKKyAgICAgICAgICAgIGVsc2UgaWYg
KG1fZGVsZXRlRW5hYmxlZCAmJiB0YXNrID09IFRUX0RFTEVURSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKHRydWUpOwpAQCAtMTE2MSwxMyArMTE2MSwx
MyBAQCB2b2lkIFN5bmNocm9uaXplcjo6ZXhlY3V0ZVRhc2soU3luY2hyb25pemVyRmlsZUl0ZW0g
KnRhc2spCiAKICAgICAgICAgICAgIGlmICh0YXNrLT5yaWdodExpbmsoKS5pc051bGwoKSkgewog
ICAgICAgICAgICAgICAgIEtJTzo6RmlsZUNvcHlKb2IgKmpvYiA9Ci0gICAgICAgICAgICAgICAg
ICAgIEtJTzo6ZmlsZV9jb3B5KHJpZ2h0VVJMLCBkZXN0VVJMLCAtMSwgKChvdmVyV3JpdGUgfHwg
dGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFncykg
fCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOworICAgICAgICAgICAgICAgICAgICBLSU86OmZpbGVf
Y29weShyaWdodFVSTCwgZGVzdFVSTCwgLTEsICgobV9vdmVyV3JpdGUgfHwgdGFzay0+b3Zlcldy
aXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFncykgfCBLSU86OkhpZGVQ
cm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5lY3Qoam9iLCBTSUdOQUwocHJvY2Vz
c2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSwgdGhpcywgU0xPVChzbG90UHJvY2Vzc2VkU2l6
ZShLSm9iICosIHF1bG9uZ2xvbmcpKSk7CiAgICAgICAgICAgICAgICAgY29ubmVjdChqb2IsICZL
SU86OkZpbGVDb3B5Sm9iOjpyZXN1bHQsIHRoaXMsICZTeW5jaHJvbml6ZXI6OnNsb3RUYXNrRmlu
aXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2JdID0gdGFzazsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgS0lPOjpTaW1wbGVKb2IgKmpvYiA9Ci0gICAgICAg
ICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5yaWdodExpbmsoKSwgZGVzdFVSTCwgKChv
dmVyV3JpdGUgfHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRl
ZmF1bHRGbGFncykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOworICAgICAgICAgICAgICAgICAg
ICBLSU86OnN5bWxpbmsodGFzay0+cmlnaHRMaW5rKCksIGRlc3RVUkwsICgobV9vdmVyV3JpdGUg
fHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFn
cykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5lY3Qoam9i
LCAmS0lPOjpTaW1wbGVKb2I6OnJlc3VsdCwgdGhpcywgJlN5bmNocm9uaXplcjo6c2xvdFRhc2tG
aW5pc2hlZCk7CiAgICAgICAgICAgICAgICAgam9iTWFwW2pvYl0gPSB0YXNrOwogICAgICAgICAg
ICAgfQpAQCAtMTE4NiwxMyArMTE4NiwxMyBAQCB2b2lkIFN5bmNocm9uaXplcjo6ZXhlY3V0ZVRh
c2soU3luY2hyb25pemVyRmlsZUl0ZW0gKnRhc2spCiAKICAgICAgICAgICAgIGlmICh0YXNrLT5s
ZWZ0TGluaygpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgS0lPOjpGaWxlQ29weUpvYiAq
am9iID0KLSAgICAgICAgICAgICAgICAgICAgS0lPOjpmaWxlX2NvcHkobGVmdFVSTCwgZGVzdFVS
TCwgLTEsICgob3ZlcldyaXRlIHx8IHRhc2stPm92ZXJXcml0ZSgpKSA/IEtJTzo6T3ZlcndyaXRl
IDogS0lPOjpEZWZhdWx0RmxhZ3MpIHwgS0lPOjpIaWRlUHJvZ3Jlc3NJbmZvKTsKKyAgICAgICAg
ICAgICAgICAgICAgS0lPOjpmaWxlX2NvcHkobGVmdFVSTCwgZGVzdFVSTCwgLTEsICgobV9vdmVy
V3JpdGUgfHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1
bHRGbGFncykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5l
Y3Qoam9iLCBTSUdOQUwocHJvY2Vzc2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSwgdGhpcywg
U0xPVChzbG90UHJvY2Vzc2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSk7CiAgICAgICAgICAg
ICAgICAgY29ubmVjdChqb2IsICZLSU86OkZpbGVDb3B5Sm9iOjpyZXN1bHQsIHRoaXMsICZTeW5j
aHJvbml6ZXI6OnNsb3RUYXNrRmluaXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2Jd
ID0gdGFzazsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgS0lPOjpTaW1w
bGVKb2IgKmpvYiA9Ci0gICAgICAgICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5sZWZ0
TGluaygpLCBkZXN0VVJMLCAoKG92ZXJXcml0ZSB8fCB0YXNrLT5vdmVyV3JpdGUoKSkgPyBLSU86
Ok92ZXJ3cml0ZSA6IEtJTzo6RGVmYXVsdEZsYWdzKSB8IEtJTzo6SGlkZVByb2dyZXNzSW5mbyk7
CisgICAgICAgICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5sZWZ0TGluaygpLCBkZXN0
VVJMLCAoKG1fb3ZlcldyaXRlIHx8IHRhc2stPm92ZXJXcml0ZSgpKSA/IEtJTzo6T3ZlcndyaXRl
IDogS0lPOjpEZWZhdWx0RmxhZ3MpIHwgS0lPOjpIaWRlUHJvZ3Jlc3NJbmZvKTsKICAgICAgICAg
ICAgICAgICBjb25uZWN0KGpvYiwgJktJTzo6U2ltcGxlSm9iOjpyZXN1bHQsIHRoaXMsICZTeW5j
aHJvbml6ZXI6OnNsb3RUYXNrRmluaXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2Jd
ID0gdGFzazsKICAgICAgICAgICAgIH0KQEAgLTEzNjUsNyArMTM2NSw3IEBAIHZvaWQgU3luY2hy
b25pemVyOjpzbG90VGFza0ZpbmlzaGVkKEtKb2IgKmpvYikKICAgICAgICAgICAgICAgICAgICAg
aW5UYXNrRmluaXNoZWQtLTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIGNhc2UgS0lPOjpSZXN1bHRfT3ZlcndyaXRlQWxsOgotICAgICAgICAgICAgICAgICAg
ICBvdmVyV3JpdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX292ZXJXcml0ZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVUYXNrKGl0ZW0pOwogICAgICAgICAgICAg
ICAgICAgICBpblRhc2tGaW5pc2hlZC0tOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDIxLDIyICsxNDIxLDIyIEBAIHZvaWQgU3luY2hyb25pemVyOjpzbG90VGFza0ZpbmlzaGVk
KEtKb2IgKmpvYikKIAogICAgIHN3aXRjaCAoaXRlbS0+dGFzaygpKSB7CiAgICAgY2FzZSBUVF9D
T1BZX1RPX0xFRlQ6Ci0gICAgICAgIGxlZnRDb3B5TnIrKzsKLSAgICAgICAgbGVmdENvcHlTaXpl
ICs9IGl0ZW0tPnJpZ2h0U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOworICAgICAgICBtX2xlZnRDb3B5
TnIrKzsKKyAgICAgICAgbV9sZWZ0Q29weVNpemUgKz0gaXRlbS0+cmlnaHRTaXplKCkgLSByZWNl
aXZlZFNpemU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVFRfQ09QWV9UT19SSUdIVDoKLSAg
ICAgICAgcmlnaHRDb3B5TnIrKzsKLSAgICAgICAgcmlnaHRDb3B5U2l6ZSArPSBpdGVtLT5sZWZ0
U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOworICAgICAgICBtX3JpZ2h0Q29weU5yKys7CisgICAgICAg
IG1fcmlnaHRDb3B5U2l6ZSArPSBpdGVtLT5sZWZ0U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFRUX0RFTEVURToKLSAgICAgICAgZGVsZXRlTnIrKzsKKyAg
ICAgICAgbV9kZWxldGVOcisrOwogICAgICAgICBkZWxldGVTaXplICs9IGl0ZW0tPmxlZnRTaXpl
KCkgLSByZWNlaXZlZFNpemU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGVtaXQgcHJvY2Vzc2VkU2l6ZXMobGVmdENvcHlOciwgbGVm
dENvcHlTaXplLCByaWdodENvcHlOciwgcmlnaHRDb3B5U2l6ZSwgZGVsZXRlTnIsIGRlbGV0ZVNp
emUpOworICAgIGVtaXQgcHJvY2Vzc2VkU2l6ZXMobV9sZWZ0Q29weU5yLCBtX2xlZnRDb3B5U2l6
ZSwgbV9yaWdodENvcHlOciwgbV9yaWdodENvcHlTaXplLCBtX2RlbGV0ZU5yLCBkZWxldGVTaXpl
KTsKIAogICAgIGlmICgtLWluVGFza0ZpbmlzaGVkID09IDApIHsKICAgICAgICAgaWYgKHBhdXNl
ZCkKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpzbG90UHJvY2Vzc2Vk
U2l6ZShLSm9iICpqb2IsIHF1bG9uZ2xvbmcgc2l6ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgZW1pdCBwcm9jZXNzZWRTaXplcyhsZWZ0Q29weU5yLCBsZWZ0Q29weVNpemUgKz0gZGws
IHJpZ2h0Q29weU5yLCByaWdodENvcHlTaXplICs9IGRyLCBkZWxldGVOciwgZGVsZXRlU2l6ZSAr
PSBkZCk7CisgICAgZW1pdCBwcm9jZXNzZWRTaXplcyhtX2xlZnRDb3B5TnIsIG1fbGVmdENvcHlT
aXplICs9IGRsLCBtX3JpZ2h0Q29weU5yLCBtX3JpZ2h0Q29weVNpemUgKz0gZHIsIG1fZGVsZXRl
TnIsIGRlbGV0ZVNpemUgKz0gZGQpOwogfQogCiB2b2lkIFN5bmNocm9uaXplcjo6cGF1c2UoKQpk
aWZmIC0tZ2l0IGEvYXBwL1N5bmNocm9uaXplci9zeW5jaHJvbml6ZXIuaCBiL2FwcC9TeW5jaHJv
bml6ZXIvc3luY2hyb25pemVyLmgKaW5kZXggZGI2MmY0MzI1Li5hNTIxYTk4ZWQgMTAwNjQ0Ci0t
LSBhL2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVyLmgKKysrIGIvYXBwL1N5bmNocm9uaXpl
ci9zeW5jaHJvbml6ZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHByb3RlY3RlZDoKICAgICBRU3Ry
aW5nIGxlZnRCYXNlRGlyOyAvLyB0aGUgbGVmdC1zaWRlIGJhc2UgZGlyZWN0b3J5CiAgICAgUVN0
cmluZyByaWdodEJhc2VEaXI7IC8vIHRoZSByaWdodC1zaWRlIGJhc2UgZGlyZWN0b3J5CiAgICAg
UVN0cmluZ0xpc3QgZXhjbHVkZWRQYXRoczsgLy8gbGlzdCBvZiB0aGUgZXhjbHVkZWQgcGF0aHMK
LSAgICBLclF1ZXJ5ICpxdWVyeTsgLy8gdGhlIGZpbHRlciB1c2VkIGZvciB0aGUgcXVlcnkKKyAg
ICBLclF1ZXJ5ICptX3F1ZXJ5OyAvLyB0aGUgZmlsdGVyIHVzZWQgZm9yIHRoZSBxdWVyeQogICAg
IGJvb2wgc3RvcHBlZDsgLy8gJ1N0b3AnIGJ1dHRvbiB3YXMgcHJlc3NlZAogCiAgICAgaW50IGVx
dWFsc1RocmVzaG9sZDsgLy8gdGhyZXNob2xkIHRvIHRyZWF0IGZpbGVzIGVxdWFsCkBAIC0yMTks
MjAgKzIxOSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtYXJrRHVwbGljYXRlczsgLy8gc2hv
dyB0aGUgZHVwbGljYXRlZCBpdGVtcwogICAgIGJvb2wgbWFya1NpbmdsZXM7IC8vIHNob3cgdGhl
IHNpbmdsZSBpdGVtcwogCi0gICAgYm9vbCBsZWZ0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gbGVm
dCBpcyBlbmFibGVkIGF0IHN5bmNocm9uaXplCi0gICAgYm9vbCByaWdodENvcHlFbmFibGVkOyAv
LyBjb3B5IHRvIHJpZ2h0IGlzIGVuYWJsZWQgYXQgc3luY2hyb25pemUKLSAgICBib29sIGRlbGV0
ZUVuYWJsZWQ7IC8vIGRlbGV0ZSBpcyBlbmFibGVkIGF0IHN5bmNocm9uaXplCi0gICAgYm9vbCBv
dmVyV3JpdGU7IC8vIG92ZXJ3cml0ZSBvciBxdWVyeSBlYWNoIG1vZGlmaWNhdGlvbgorICAgIGJv
b2wgbV9sZWZ0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gbGVmdCBpcyBlbmFibGVkIGF0IHN5bmNo
cm9uaXplCisgICAgYm9vbCBtX3JpZ2h0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gcmlnaHQgaXMg
ZW5hYmxlZCBhdCBzeW5jaHJvbml6ZQorICAgIGJvb2wgbV9kZWxldGVFbmFibGVkOyAvLyBkZWxl
dGUgaXMgZW5hYmxlZCBhdCBzeW5jaHJvbml6ZQorICAgIGJvb2wgbV9vdmVyV3JpdGU7IC8vIG92
ZXJ3cml0ZSBvciBxdWVyeSBlYWNoIG1vZGlmaWNhdGlvbgogICAgIGJvb2wgYXV0b1NraXA7IC8v
IGF1dG9tYXRpYyBza2lwcGluZwogICAgIGJvb2wgcGF1c2VkOyAvLyBwYXVzZSBmbGFnCiAgICAg
Ym9vbCBkaXNhYmxlTmV3VGFza3M7IC8vIGF0IG1rZGlyIHRoZSBmdXJ0aGVyIHRhc2sgY3JlYXRp
b24gaXMgZGlzYWJsZWQKIAotICAgIGludCBsZWZ0Q29weU5yOyAvLyB0aGUgZmlsZSBudW1iZXIg
Y29waWVkIHRvIGxlZnQKLSAgICBpbnQgcmlnaHRDb3B5TnI7IC8vIHRoZSBmaWxlIG51bWJlciBj
b3BpZWQgdG8gcmlnaHQKLSAgICBpbnQgZGVsZXRlTnI7IC8vIHRoZSBudW1iZXIgb2YgdGhlIGRl
bGV0ZWQgZmlsZXMKKyAgICBpbnQgbV9sZWZ0Q29weU5yOyAvLyB0aGUgZmlsZSBudW1iZXIgY29w
aWVkIHRvIGxlZnQKKyAgICBpbnQgbV9yaWdodENvcHlOcjsgLy8gdGhlIGZpbGUgbnVtYmVyIGNv
cGllZCB0byByaWdodAorICAgIGludCBtX2RlbGV0ZU5yOyAvLyB0aGUgbnVtYmVyIG9mIHRoZSBk
ZWxldGVkIGZpbGVzCiAgICAgaW50IHBhcmFsbGVsVGhyZWFkczsgLy8gdGhlIG51bWJlciBvZiB0
aGUgcGFyYWxsZWwgcHJvY2Vzc2luZyB0aHJlYWRzCi0gICAgS0lPOjpmaWxlc2l6ZV90IGxlZnRD
b3B5U2l6ZTsgLy8gdGhlIHRvdGFsIHNpemUgY29waWVkIHRvIGxlZnQKLSAgICBLSU86OmZpbGVz
aXplX3QgcmlnaHRDb3B5U2l6ZTsgLy8gdGhlIHRvdGFsIHNpemUgY29waWVkIHRvIHJpZ2h0Cisg
ICAgS0lPOjpmaWxlc2l6ZV90IG1fbGVmdENvcHlTaXplOyAvLyB0aGUgdG90YWwgc2l6ZSBjb3Bp
ZWQgdG8gbGVmdAorICAgIEtJTzo6ZmlsZXNpemVfdCBtX3JpZ2h0Q29weVNpemU7IC8vIHRoZSB0
b3RhbCBzaXplIGNvcGllZCB0byByaWdodAogICAgIEtJTzo6ZmlsZXNpemVfdCBkZWxldGVTaXpl
OyAvLyB0aGUgc2l6ZSBvZiB0aGUgZGVsZXRlZCBmaWxlcwogCiAgICAgaW50IGNvbXBhcmVkRGly
czsgLy8gdGhlIG51bWJlciBvZiB0aGUgY29tcGFyZWQgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBh
L2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVydGFzay5jcHAgYi9hcHAvU3luY2hyb25pemVy
L3N5bmNocm9uaXplcnRhc2suY3BwCmluZGV4IGEyNTdmYjY1ZS4uOGY3YTM2N2I4IDEwMDY0NAot
LS0gYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suY3BwCisrKyBiL2FwcC9TeW5j
aHJvbml6ZXIvc3luY2hyb25pemVydGFzay5jcHAKQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIENv
bXBhcmVUYXNrOjpzdGFydCgpCiAgICAgICAgIG1fc3RhdGUgPSBTVF9TVEFURV9QRU5ESU5HOwog
ICAgICAgICBtX2xvYWRGaW5pc2hlZCA9IG1fb3RoZXJMb2FkRmluaXNoZWQgPSBmYWxzZTsKIAot
ICAgICAgICBtX2Rpckxpc3QgPSBuZXcgU3luY2hyb25pemVyRGlyTGlzdChwYXJlbnRXaWRnZXQs
IGlnbm9yZUhpZGRlbik7CisgICAgICAgIG1fZGlyTGlzdCA9IG5ldyBTeW5jaHJvbml6ZXJEaXJM
aXN0KG1fcGFyZW50V2lkZ2V0LCBpZ25vcmVIaWRkZW4pOwogICAgICAgICBjb25uZWN0KG1fZGly
TGlzdCwgJlN5bmNocm9uaXplckRpckxpc3Q6OmZpbmlzaGVkLCB0aGlzLCAmQ29tcGFyZVRhc2s6
OnNsb3RGaW5pc2hlZCk7CiAgICAgICAgIG1fZGlyTGlzdC0+bG9hZChtX3VybCwgZmFsc2UpOwog
CiAgICAgICAgIGlmIChtX2R1cGxpY2F0ZSkgewotICAgICAgICAgICAgbV9vdGhlckRpckxpc3Qg
PSBuZXcgU3luY2hyb25pemVyRGlyTGlzdChwYXJlbnRXaWRnZXQsIGlnbm9yZUhpZGRlbik7Cisg
ICAgICAgICAgICBtX290aGVyRGlyTGlzdCA9IG5ldyBTeW5jaHJvbml6ZXJEaXJMaXN0KG1fcGFy
ZW50V2lkZ2V0LCBpZ25vcmVIaWRkZW4pOwogICAgICAgICAgICAgY29ubmVjdChtX290aGVyRGly
TGlzdCwgJlN5bmNocm9uaXplckRpckxpc3Q6OmZpbmlzaGVkLCB0aGlzLCAmQ29tcGFyZVRhc2s6
OnNsb3RPdGhlckZpbmlzaGVkKTsKICAgICAgICAgICAgIG1fb3RoZXJEaXJMaXN0LT5sb2FkKG1f
b3RoZXJVcmwsIGZhbHNlKTsKICAgICAgICAgfQpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgdm9pZCBD
b21wYXJlQ29udGVudFRhc2s6OnN0YXJ0KCkKICAgICBpZiAobGVmdFVSTC5pc0xvY2FsRmlsZSgp
ICYmIHJpZ2h0VVJMLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgbGVmdEZpbGUgPSBuZXcgUUZp
bGUobGVmdFVSTC5wYXRoKCkpOwogICAgICAgICBpZiAoIWxlZnRGaWxlLT5vcGVuKFFJT0Rldmlj
ZTo6UmVhZE9ubHkpKSB7Ci0gICAgICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IocGFyZW50V2lk
Z2V0LCBpMThuKCJFcnJvciBhdCBvcGVuaW5nICUxLiIsIGxlZnRVUkwucGF0aCgpKSk7CisgICAg
ICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IobV9wYXJlbnRXaWRnZXQsIGkxOG4oIkVycm9yIGF0
IG9wZW5pbmcgJTEuIiwgbGVmdFVSTC5wYXRoKCkpKTsKICAgICAgICAgICAgIG1fc3RhdGUgPSBT
VF9TVEFURV9FUlJPUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IHJpZ2h0RmlsZSA9IG5ldyBRRmlsZShyaWdodFVSTC5wYXRoKCkpOwogICAgICAgICBpZiAoIXJp
Z2h0RmlsZS0+b3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5KSkgewotICAgICAgICAgICAgS01lc3Nh
Z2VCb3g6OmVycm9yKHBhcmVudFdpZGdldCwgaTE4bigiRXJyb3IgYXQgb3BlbmluZyAlMS4iLCBy
aWdodFVSTC5wYXRoKCkpKTsKKyAgICAgICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihtX3BhcmVu
dFdpZGdldCwgaTE4bigiRXJyb3IgYXQgb3BlbmluZyAlMS4iLCByaWdodFVSTC5wYXRoKCkpKTsK
ICAgICAgICAgICAgIG1fc3RhdGUgPSBTVF9TVEFURV9FUlJPUjsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTg0LDggKzE4NCw4IEBAIHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNr
Ojpsb2NhbEZpbGVDb21wYXJlQ3ljbGUoKQogICAgIGNoYXIgbGVmdEJ1ZmZlclsxNDQwXTsKICAg
ICBjaGFyIHJpZ2h0QnVmZmVyWzE0NDBdOwogCi0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKLSAg
ICB0aW1lci5zdGFydCgpOworICAgIFFFbGFwc2VkVGltZXIgbG9jYWxUaW1lcjsKKyAgICBsb2Nh
bFRpbWVyLnN0YXJ0KCk7CiAKICAgICBpbnQgY250ID0gMDsKIApAQCAtMjA4LDcgKzIwOCw3IEBA
IHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNrOjpsb2NhbEZpbGVDb21wYXJlQ3ljbGUoKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKCsrY250ICUgMTYpID09IDAg
JiYgdGltZXIuZWxhcHNlZCgpID49IDI1MCkKKyAgICAgICAgaWYgKCgrK2NudCAlIDE2KSA9PSAw
ICYmIGxvY2FsVGltZXIuZWxhcHNlZCgpID49IDI1MCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNrOjpzbG90Rmlu
aXNoZWQoS0pvYiAqam9iKQogCiAgICAgaWYgKGpvYi0+ZXJyb3IoKSAmJiBqb2ItPmVycm9yKCkg
IT0gS0lPOjpFUlJfVVNFUl9DQU5DRUxFRCAmJiAhZXJyb3JQcmludGVkKSB7CiAgICAgICAgIGVy
cm9yUHJpbnRlZCA9IHRydWU7Ci0gICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihwYXJlbnRXaWRn
ZXQsCisgICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihtX3BhcmVudFdpZGdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGkxOG4oIkkvTyBlcnJvciB3aGlsZSBjb21wYXJpbmcgZmlsZSAl
MSB3aXRoICUyLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVUkwudG9E
aXNwbGF5U3RyaW5nKFFVcmw6OlByZWZlckxvY2FsRmlsZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJpZ2h0VVJMLnRvRGlzcGxheVN0cmluZyhRVXJsOjpQcmVmZXJMb2NhbEZp
bGUpKSk7CmRpZmYgLS1naXQgYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaCBi
L2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVydGFzay5oCmluZGV4IDZiMTg4MTU2Yy4uZmIy
OTRiOThlIDEwMDY0NAotLS0gYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaAor
KysgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAKICAgICBpbmxpbmUgaW50IHN0YXJ0KFFXaWRnZXQgKnBhcmVudFdpZGdldCkK
ICAgICB7Ci0gICAgICAgIHRoaXMtPnBhcmVudFdpZGdldCA9IHBhcmVudFdpZGdldDsKKyAgICAg
ICAgdGhpcy0+bV9wYXJlbnRXaWRnZXQgPSBwYXJlbnRXaWRnZXQ7CiAgICAgICAgIHN0YXJ0KCk7
CiAgICAgICAgIHJldHVybiBzdGF0ZSgpOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVj
dGVkOgogICAgIH0KICAgICBpbnQgbV9zdGF0ZTsKICAgICBRU3RyaW5nIG1fc3RhdHVzTWVzc2Fn
ZTsKLSAgICBRV2lkZ2V0ICpwYXJlbnRXaWRnZXQ7CisgICAgUVdpZGdldCAqbV9wYXJlbnRXaWRn
ZXQ7CiB9OwogCiBjbGFzcyBDb21wYXJlVGFzayA6IHB1YmxpYyBTeW5jaHJvbml6ZXJUYXNrCmRp
ZmYgLS1naXQgYS9hcHAvaWNvbi5jcHAgYi9hcHAvaWNvbi5jcHAKaW5kZXggMjIxOGQwYjYxLi5i
ZDE0NjkzYmYgMTAwNjQ0Ci0tLSBhL2FwcC9pY29uLmNwcAorKysgYi9hcHAvaWNvbi5jcHAKQEAg
LTkxLDkgKzkxLDkgQEAgc3RydWN0IEljb25TZWFyY2hSZXN1bHQgewogICAgIFFJY29uIGljb247
IC8vLzwgaWNvbiByZXR1cm5lZCBieSBzZWFyY2g7IG51bGwgaWNvbiBpZiBub3QgZm91bmQKICAg
ICBRU3RyaW5nIG9yaWdpbmFsVGhlbWVOYW1lOyAvLy88IG9yaWdpbmFsIHRoZW1lIG5hbWUgaWYg
dGhlbWUgaXMgbW9kaWZpZWQgYnkgc2VhcmNoCiAKLSAgICBJY29uU2VhcmNoUmVzdWx0KFFJY29u
IGljb24sIFFTdHJpbmcgb3JpZ2luYWxUaGVtZU5hbWUpCi0gICAgICAgIDogaWNvbihzdGQ6Om1v
dmUoaWNvbikpCi0gICAgICAgICwgb3JpZ2luYWxUaGVtZU5hbWUoc3RkOjptb3ZlKG9yaWdpbmFs
VGhlbWVOYW1lKSkKKyAgICBJY29uU2VhcmNoUmVzdWx0KFFJY29uIGluaXRJY29uLCBRU3RyaW5n
IGluaXRPcmlnaW5hbFRoZW1lTmFtZSkKKyAgICAgICAgOiBpY29uKHN0ZDo6bW92ZShpbml0SWNv
bikpCisgICAgICAgICwgb3JpZ2luYWxUaGVtZU5hbWUoc3RkOjptb3ZlKGluaXRPcmlnaW5hbFRo
ZW1lTmFtZSkpCiAgICAgewogICAgIH0KIH07CkBAIC0xODgsMTkgKzE4OCwyNSBAQCBjbGFzcyBJ
Y29uQ2FjaGVLZXkKIHsKIHB1YmxpYzoKICAgICBJY29uQ2FjaGVLZXkoY29uc3QgUVN0cmluZyAm
bmFtZSwgY29uc3QgUVN0cmluZ0xpc3QgJm92ZXJsYXlzLCBjb25zdCBRU2l6ZSAmc2l6ZSwgUUlj
b246Ok1vZGUgbW9kZSwgUUljb246OlN0YXRlIHN0YXRlKQotICAgICAgICA6IG5hbWUobmFtZSkK
LSAgICAgICAgLCBvdmVybGF5cyhvdmVybGF5cykKLSAgICAgICAgLCBzaXplKHNpemUpCi0gICAg
ICAgICwgbW9kZShtb2RlKQotICAgICAgICAsIHN0YXRlKHN0YXRlKQorICAgICAgICA6IG1fbmFt
ZShuYW1lKQorICAgICAgICAsIG1fb3ZlcmxheXMob3ZlcmxheXMpCisgICAgICAgICwgbV9zaXpl
KHNpemUpCisgICAgICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gcmVwciA9IFFTdHJpbmcoIiUxIFslMl0gJTN4JTQgJTUgJTYi
KS5hcmcobmFtZSkuYXJnKG92ZXJsYXlzLmpvaW4oJzsnKSkuYXJnKHNpemUud2lkdGgoKSkuYXJn
KHNpemUuaGVpZ2h0KCkpLmFyZygoaW50KW1vZGUpLmFyZygoaW50KXN0YXRlKTsKKyAgICAgICAg
YXV0byByZXByID0gUVN0cmluZygiJTEgWyUyXSAlM3glNCAlNSAlNiIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAuYXJnKG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXJnKG92ZXJs
YXlzLmpvaW4oJzsnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcmcoc2l6ZS53aWR0aCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyhzaXplLmhlaWdodCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgLmFyZyhzdGF0aWNfY2FzdDxpbnQ+KG1vZGUpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgLmFyZyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSk7CiAgICAgICAgIF9oYXNo
ID0gcUhhc2gocmVwcik7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEljb25D
YWNoZUtleSAmeCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBuYW1lID09IHgubmFtZSAm
JiBvdmVybGF5cyA9PSB4Lm92ZXJsYXlzICYmIHNpemUgPT0geC5zaXplICYmIG1vZGUgPT0geC5t
b2RlICYmIHN0YXRlID09IHguc3RhdGU7CisgICAgICAgIHJldHVybiBtX25hbWUgPT0geC5tX25h
bWUgJiYgbV9vdmVybGF5cyA9PSB4Lm1fb3ZlcmxheXMgJiYgbV9zaXplID09IHgubV9zaXplICYm
IG1fbW9kZSA9PSB4Lm1fbW9kZSAmJiBtX3N0YXRlID09IHgubV9zdGF0ZTsKICAgICB9CiAKICAg
ICBzaXplX3QgaGFzaCgpIGNvbnN0CkBAIC0yMDgsMTEgKzIxNCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBfaGFzaDsKICAgICB9CiAKLSAgICBRU3RyaW5nIG5hbWU7Ci0gICAgUVN0cmlu
Z0xpc3Qgb3ZlcmxheXM7Ci0gICAgUVNpemUgc2l6ZTsKLSAgICBRSWNvbjo6TW9kZSBtb2RlOwot
ICAgIFFJY29uOjpTdGF0ZSBzdGF0ZTsKKyAgICBRU3RyaW5nIG1fbmFtZTsKKyAgICBRU3RyaW5n
TGlzdCBtX292ZXJsYXlzOworICAgIFFTaXplIG1fc2l6ZTsKKyAgICBRSWNvbjo6TW9kZSBtX21v
ZGU7CisgICAgUUljb246OlN0YXRlIG1fc3RhdGU7CiAKIHByaXZhdGU6CiAgICAgc2l6ZV90IF9o
YXNoOwpkaWZmIC0tZ2l0IGEvYXBwL2tyZGVidWdsb2dnZXIuY3BwIGIvYXBwL2tyZGVidWdsb2dn
ZXIuY3BwCmluZGV4IDkwMTVhMmJhYi4uYzM3OTM4Yjg5IDEwMDY0NAotLS0gYS9hcHAva3JkZWJ1
Z2xvZ2dlci5jcHAKKysrIGIvYXBwL2tyZGVidWdsb2dnZXIuY3BwCkBAIC0yMSwxMiArMjEsMTAg
QEAgS3JEZWJ1Z0xvZ2dlcjo6S3JEZWJ1Z0xvZ2dlcigpCiAKIFFTdHJpbmcgS3JEZWJ1Z0xvZ2dl
cjo6aW5kZW50ZWRDb2RlUG9pbnQoY29uc3QgUVN0cmluZyAmZnVuY3Rpb25OYW1lLCBpbnQgbGlu
ZSwgY29uc3QgUVN0cmluZyAmaW5kZW50YXRpb25TeW1ib2wpIGNvbnN0CiB7Ci0gICAgUVN0cmlu
ZyByZXN1bHQgPSBRU3RyaW5nKGluZGVudGF0aW9uLCAnICcpICUgIC8vIEFwcGxpZXMgdGhlIGlu
ZGVudGF0aW9uIGxldmVsIHRvIG1ha2UgbG9ncyBjbGVhcmVyCi0gICAgICAgICAgICAgICAgICAg
ICBpbmRlbnRhdGlvblN5bWJvbCAlIGZ1bmN0aW9uTmFtZTsgIC8vIFVzZXMgUVN0cmluZ0J1aWxk
ZXIgdG8gY29uY2F0ZW5hdGUKKyAgICBRU3RyaW5nIHJlc3VsdCA9IFFTdHJpbmcoaW5kZW50YXRp
b24sICcgJykgJSAvLyBBcHBsaWVzIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB0byBtYWtlIGxvZ3Mg
Y2xlYXJlcgorICAgICAgICBpbmRlbnRhdGlvblN5bWJvbCAlIGZ1bmN0aW9uTmFtZTsgLy8gVXNl
cyBRU3RyaW5nQnVpbGRlciB0byBjb25jYXRlbmF0ZQogICAgIGlmICghYnJpZWZNb2RlKQotICAg
ICAgICByZXN1bHQgPSBRU3RyaW5nKCJQaWQ6JTEgIikuYXJnKGdldHBpZCgpKSAlCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ICUKLSAgICAgICAgICAgICAgICAobGluZSAhPSAwID8gUVN0cmluZygi
KCUxKSIpLmFyZyhsaW5lKSA6ICIiKTsKKyAgICAgICAgcmVzdWx0ID0gUVN0cmluZygiUGlkOiUx
ICIpLmFyZyhnZXRwaWQoKSkgJSByZXN1bHQgJSAobGluZSAhPSAwID8gUVN0cmluZygiKCUxKSIp
LmFyZyhsaW5lKSA6ICIiKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NCw4ICs0Miw4
IEBAIHZvaWQgS3JEZWJ1Z0xvZ2dlcjo6aW5jcmVhc2VJbmRlbnRhdGlvbigpCiAvLyBNZW1iZXIg
ZnVuY3Rpb25zIG9mIHRoZSBLckRlYnVnRnVuY3Rpb25Mb2dnZXIgY2xhc3MKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1LckRlYnVnRnVuY3Rpb25Mb2dnZXI6OktyRGVidWdG
dW5jdGlvbkxvZ2dlcihjb25zdCBRU3RyaW5nICZmdW5jdGlvbk5hbWUsIGludCBsaW5lKSA6Ci0g
ICAgZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKK0tyRGVidWdGdW5jdGlvbkxvZ2dlcjo6S3JE
ZWJ1Z0Z1bmN0aW9uTG9nZ2VyKGNvbnN0IFFTdHJpbmcgJmZ1bmN0aW9uTmFtZSwgaW50IGxpbmUp
CisgICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiB7CiAgICAgLy8gU2hvd3MgdGhh
dCBhIGZ1bmN0aW9uIGhhcyBiZWVuIHN0YXJ0ZWQKICAgICBxRGVidWcoKS5ub3NwYWNlKCkubm9x
dW90ZSgpIDw8IGtyRGVidWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQoZnVuY3Rpb25OYW1lLCBs
aW5lLCAi4pSPIik7CkBAIC01Nyw1ICs1NSw1IEBAIEtyRGVidWdGdW5jdGlvbkxvZ2dlcjo6fkty
RGVidWdGdW5jdGlvbkxvZ2dlcigpCiB7CiAgICAga3JEZWJ1Z0xvZ2dlci5kZWNyZWFzZUluZGVu
dGF0aW9uKCk7CiAgICAgLy8gU2hvd3MgdGhhdCBhIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZpbmlz
aAotICAgIHFEZWJ1ZygpLm5vc3BhY2UoKS5ub3F1b3RlKCkgPDwga3JEZWJ1Z0xvZ2dlci5pbmRl
bnRlZENvZGVQb2ludChmdW5jdGlvbk5hbWUsIDAsICLilJciKTsKKyAgICBxRGVidWcoKS5ub3Nw
YWNlKCkubm9xdW90ZSgpIDw8IGtyRGVidWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQobV9mdW5j
dGlvbk5hbWUsIDAsICLilJciKTsKIH0KZGlmZiAtLWdpdCBhL2FwcC9rcmRlYnVnbG9nZ2VyLmgg
Yi9hcHAva3JkZWJ1Z2xvZ2dlci5oCmluZGV4IDQ5MDFjYmRiYS4uZWYwYjQ2YWFiIDEwMDY0NAot
LS0gYS9hcHAva3JkZWJ1Z2xvZ2dlci5oCisrKyBiL2FwcC9rcmRlYnVnbG9nZ2VyLmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vISBUaGUgbmFtZSBvZiBhIGZ1
bmN0aW9uIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHdyaXR0ZW4gYWJvdXQKLSAgICBRU3RyaW5nIGZ1
bmN0aW9uTmFtZTsKKyAgICBRU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwogfTsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NCwxMCArNzQsOCBAQCBleHRlcm4gS3JEZWJ1
Z0xvZ2dlciBrckRlYnVnTG9nZ2VyOwogICAgIGNhdXNlZCB0aGF0IHdoZW4gdGhlIG9iamVjdCBp
cyBkZXN0cm95ZWQgKGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIGZpbmlzaGVkKSB0aGUgZGVzdHJ1
Y3RvciBzaG93cwogICAgIG90aGVyIGluZm9ybWF0aW9uICh1c2VmdWwgdG8ga25vdyBlLmcuIHRo
YXQgdGhlIGZ1bmN0aW9uIGhhcyBmaW5pc2hlZCkKICovCi0jZGVmaW5lIEtSRlVOQyBcCi0gICAg
S3JEZWJ1Z0Z1bmN0aW9uTG9nZ2VyIGZ1bmN0aW9uTG9nZ2VyKF9fRlVOQ1RJT05fXywgX19MSU5F
X18pOworI2RlZmluZSBLUkZVTkMgS3JEZWJ1Z0Z1bmN0aW9uTG9nZ2VyIGZ1bmN0aW9uTG9nZ2Vy
KF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogCi0jZGVmaW5lIEtSREVCVUcoLi4uKSBcCi0gICAg
cURlYnVnKCkubm9zcGFjZSgpLm5vcXVvdGUoKSA8PCBrckRlYnVnTG9nZ2VyLmluZGVudGVkQ29k
ZVBvaW50KF9fRlVOQ1RJT05fXywgX19MSU5FX18pIDw8ICI6ICIgPDwgX19WQV9BUkdTX187Cisj
ZGVmaW5lIEtSREVCVUcoLi4uKSBxRGVidWcoKS5ub3NwYWNlKCkubm9xdW90ZSgpIDw8IGtyRGVi
dWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQoX19GVU5DVElPTl9fLCBfX0xJTkVfXykgPDwgIjog
IiA8PCBfX1ZBX0FSR1NfXzsKIAogI2VuZGlmIC8vIEtSREVCVUdMT0dHRVJfSApkaWZmIC0tZ2l0
IGEvYXBwL2tydXNhZGVyLmNwcCBiL2FwcC9rcnVzYWRlci5jcHAKaW5kZXggNjIxOGQyYTFhLi5h
MzJjYmY3NDQgMTAwNjQ0Ci0tLSBhL2FwcC9rcnVzYWRlci5jcHAKKysrIGIvYXBwL2tydXNhZGVy
LmNwcApAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgIkdVSS9rcnVzYWRlcnN0YXR1cy5oIgog
I2luY2x1ZGUgIkdVSS90ZXJtaW5hbGRvY2suaCIKICNpbmNsdWRlICJKb2JNYW4vam9ibWFuLmgi
Ci0jaW5jbHVkZSAiS3JWaWV3ZXIva3J2aWV3ZXIuaCIKICNpbmNsdWRlICJLb25maWd1cmF0b3Iv
a2dwcm90b2NvbHMuaCIKKyNpbmNsdWRlICJLclZpZXdlci9rcnZpZXdlci5oIgogI2luY2x1ZGUg
Ik1vdW50TWFuL2ttb3VudG1hbi5oIgogI2luY2x1ZGUgIlBhbmVsL1BhbmVsVmlldy9rcnZpZXcu
aCIKICNpbmNsdWRlICJQYW5lbC9QYW5lbFZpZXcva3J2aWV3ZmFjdG9yeS5oIgpAQCAtNTg5LDE4
ICs1ODksMTggQEAgdm9pZCBLcnVzYWRlcjo6ZG9PcGVuVXJsKCkKICAgICAgICAgQUNUSVZFX01O
Ry0+c2xvdE5ld1RhYih1cmwpOwogfQogCi12b2lkIEtydXNhZGVyOjpzbG90R290TmV3U3RhcnR1
cChjb25zdCBLU3RhcnR1cEluZm9JZCAmaWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmRhdGEp
Cit2b2lkIEtydXNhZGVyOjpzbG90R290TmV3U3RhcnR1cChjb25zdCBLU3RhcnR1cEluZm9JZCAm
aWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmluZm9EYXRhKQogewogICAgIFFfVU5VU0VEKGlk
KQotICAgIFFfVU5VU0VEKGRhdGEpCisgICAgUV9VTlVTRUQoaW5mb0RhdGEpCiAgICAgLy8gVGhp
cyBpcyBoZXJlIHRvIHNob3cgYnVzeSBtb3VzZSBjdXJzb3Igd2hlbiBfb3RoZXJfIGFwcGxpY2F0
aW9ucyBhcmUgbGF1bmNoZWQsIG5vdCBmb3Iga3J1c2FkZXIgaXRzZWxmLgogICAgIHFBcHAtPnNl
dE92ZXJyaWRlQ3Vyc29yKFF0OjpCdXN5Q3Vyc29yKTsKIH0KIAotdm9pZCBLcnVzYWRlcjo6c2xv
dEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3RhcnR1
cEluZm9EYXRhICZkYXRhKQordm9pZCBLcnVzYWRlcjo6c2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29u
c3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3RhcnR1cEluZm9EYXRhICZpbmZvRGF0YSkK
IHsKICAgICBRX1VOVVNFRChpZCkKLSAgICBRX1VOVVNFRChkYXRhKQorICAgIFFfVU5VU0VEKGlu
Zm9EYXRhKQogICAgIHFBcHAtPnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOwogfQogCmRpZmYgLS1n
aXQgYS9hcHAva3J1c2FkZXIuaCBiL2FwcC9rcnVzYWRlci5oCmluZGV4IDllOGRjMWI3Zi4uMjIw
Yjk3ZTVhIDEwMDY0NAotLS0gYS9hcHAva3J1c2FkZXIuaAorKysgYi9hcHAva3J1c2FkZXIuaApA
QCAtMTE2LDggKzExNiw4IEBAIHB1YmxpYyBzbG90czoKIAogcHJvdGVjdGVkIHNsb3RzOgogICAg
IHZvaWQgZG9PcGVuVXJsKCk7Ci0gICAgdm9pZCBzbG90R290TmV3U3RhcnR1cChjb25zdCBLU3Rh
cnR1cEluZm9JZCAmaWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmRhdGEpOwotICAgIHZvaWQg
c2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3Rh
cnR1cEluZm9EYXRhICZkYXRhKTsKKyAgICB2b2lkIHNsb3RHb3ROZXdTdGFydHVwKGNvbnN0IEtT
dGFydHVwSW5mb0lkICZpZCwgY29uc3QgS1N0YXJ0dXBJbmZvRGF0YSAmaW5mb0RhdGEpOworICAg
IHZvaWQgc2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25z
dCBLU3RhcnR1cEluZm9EYXRhICZpbmZvRGF0YSk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGNs
b3NlRXZlbnQoUUNsb3NlRXZlbnQgKmV2ZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL2FwcC9t
YWluLmNwcCBiL2FwcC9tYWluLmNwcAppbmRleCA0YzU1ZjYyZGIuLjc0NjcwMTM5ZiAxMDA2NDQK
LS0tIGEvYXBwL21haW4uY3BwCisrKyBiL2FwcC9tYWluLmNwcApAQCAtMjc2LDcgKzI3Niw2IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgLy8gc3BsYXNoIHNjcmVlbiAt
IGlmIHRoZSB1c2VyIHdhbnRzIG9uZQogICAgIFFTcGxhc2hTY3JlZW4gKnNwbGFzaCA9IG51bGxw
dHI7CiAgICAgeyAvLyBkb24ndCByZW1vdmUgYnJhY2tldAotICAgICAgICBLQ29uZmlnR3JvdXAg
Y2ZnKEtTaGFyZWRDb25maWc6Om9wZW5Db25maWcoKSwgUVN0cmluZ0xpdGVyYWwoIkxvb2smRmVl
bCIpKTsKICAgICAgICAgaWYgKGNmZy5yZWFkRW50cnkoIlNob3cgc3BsYXNoc2NyZWVuIiwgX1No
b3dTcGxhc2hTY3JlZW4pKSB7CiAgICAgICAgICAgICBRU3RyaW5nIHNwbGFzaEZpbGVuYW1lID0g
UVN0YW5kYXJkUGF0aHM6OmxvY2F0ZShRU3RhbmRhcmRQYXRoczo6QXBwRGF0YUxvY2F0aW9uLCBR
U3RyaW5nTGl0ZXJhbCgic3BsYXNoLnBuZyIpKTsKICAgICAgICAgICAgIFFQaXhtYXAgcGl4bWFw
KHNwbGFzaEZpbGVuYW1lKTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMva3JhcmMva3JhcmMuY3BwIGIv
cGx1Z2lucy9rcmFyYy9rcmFyYy5jcHAKaW5kZXggM2RkOTBhMTkwLi45NzljN2VhZDkgMTAwNjQ0
Ci0tLSBhL3BsdWdpbnMva3JhcmMva3JhcmMuY3BwCisrKyBiL3BsdWdpbnMva3JhcmMva3JhcmMu
Y3BwCkBAIC0yNCw4ICsyNCw4IEBACiAjaW5jbHVkZSA8cXBsYXRmb3JtZGVmcy5oPgogCiAjaW5j
bHVkZSA8S0ZpbGVJdGVtPgotI2luY2x1ZGUgPEtJTy9Kb2I+CiAjaW5jbHVkZSA8S0lPL0F1dGhJ
bmZvPgorI2luY2x1ZGUgPEtJTy9Kb2I+CiAjaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KICNp
bmNsdWRlIDxLUHJvY2Vzcz4KICNpbmNsdWRlIDxLVGFyPgpAQCAtMTE1LDkgKzExNSw5IEBAIGNs
YXNzIER1bW15V29ya2VyIDogcHVibGljIEtJTzo6V29ya2VyQmFzZQogewogcHVibGljOgogICAg
IER1bW15V29ya2VyKGNvbnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUFy
cmF5ICZhcHBfc29ja2V0KQotICAgICAgICA6IFdvcmtlckJhc2UoImtpb19rcmFyYyIsIHBvb2xf
c29ja2V0LCBhcHBfc29ja2V0KXsKLQotICAgICAgICB9CisgICAgICAgIDogV29ya2VyQmFzZSgi
a2lvX2tyYXJjIiwgcG9vbF9zb2NrZXQsIGFwcF9zb2NrZXQpCisgICAgeworICAgIH0KIH07CiAK
IGludCBRX0RFQ0xfRVhQT1JUIGtkZW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQpAQCAtMTUw
LDExICsxNTAsMTEgQEAgaW50IFFfREVDTF9FWFBPUlQga2RlbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAjaWZkZWYgS1JBUkNfRU5BQkxFRAoga2lvX2tyYXJjUHJvdG9jb2w6Omtpb19rcmFy
Y1Byb3RvY29sKGNvbnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUFycmF5
ICZhcHBfc29ja2V0KQogICAgIDogV29ya2VyQmFzZSgia2lvX2tyYXJjIiwgcG9vbF9zb2NrZXQs
IGFwcF9zb2NrZXQpCi0gICAgLCBhcmNoaXZlQ2hhbmdlZCh0cnVlKQotICAgICwgYXJjRmlsZShu
dWxscHRyKQotICAgICwgZXh0QXJjUmVhZHkoZmFsc2UpCi0gICAgLCBwYXNzd29yZChRU3RyaW5n
KCkpCi0gICAgLCBjb2RlYyhudWxscHRyKQorICAgICwgbV9hcmNoaXZlQ2hhbmdlZCh0cnVlKQor
ICAgICwgbV9hcmNGaWxlKG51bGxwdHIpCisgICAgLCBtX2V4dEFyY1JlYWR5KGZhbHNlKQorICAg
ICwgbV9wYXNzd29yZChRU3RyaW5nKCkpCisgICAgLCBtX2NvZGVjKG51bGxwdHIpCiB7CiAgICAg
S1JGVU5DOwogICAgIEtDb25maWdHcm91cCBncm91cCgma3JDb25mLCAiR2VuZXJhbCIpOwpAQCAt
MTY2LDExICsxNjYsMTEgQEAga2lvX2tyYXJjUHJvdG9jb2w6Omtpb19rcmFyY1Byb3RvY29sKGNv
bnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUEKICAgICAgICAgUURpcigp
Lm1rZGlyKHRtcERpclBhdGgpOwogICAgIH0KIAotICAgIGFyY1RlbXBEaXIgPSB0bXBEaXJQYXRo
ICsgRElSX1NFUEFSQVRPUjsKKyAgICBtX2FyY1RlbXBEaXIgPSB0bXBEaXJQYXRoICsgRElSX1NF
UEFSQVRPUjsKICAgICBRU3RyaW5nIGRpck5hbWUgPSAia3JBcmMiICsgUURhdGVUaW1lOjpjdXJy
ZW50RGF0ZVRpbWUoKS50b1N0cmluZyhRdDo6SVNPRGF0ZSk7CiAgICAgZGlyTmFtZS5yZXBsYWNl
KFFSZWd1bGFyRXhwcmVzc2lvbigiOiIpLCAiXyIpOwogICAgIHRtcERpci5ta2RpcihkaXJOYW1l
KTsKLSAgICBhcmNUZW1wRGlyID0gYXJjVGVtcERpciArIGRpck5hbWUgKyBESVJfU0VQQVJBVE9S
OworICAgIG1fYXJjVGVtcERpciA9IG1fYXJjVGVtcERpciArIGRpck5hbWUgKyBESVJfU0VQQVJB
VE9SOwogCiAgICAga3JBcmNDb2RlYyA9IG5ldyBLckFyY0NvZGVjKFFUZXh0Q29kZWM6OmNvZGVj
Rm9yTG9jYWxlKCkpOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIGtpb19rcmFyY1Byb3RvY29sOjp+
a2lvX2tyYXJjUHJvdG9jb2woKQogICAgIEtSRlVOQzsKICAgICAvLyBkZWxldGUgdGhlIHRlbXAg
ZGlyZWN0b3J5CiAgICAgS1Byb2Nlc3MgcHJvYzsKLSAgICBwcm9jIDw8IGZ1bGxQYXRoTmFtZSgi
cm0iKSA8PCAiLXJmIiA8PCBhcmNUZW1wRGlyOworICAgIHByb2MgPDwgZnVsbFBhdGhOYW1lKCJy
bSIpIDw8ICItcmYiIDw8IG1fYXJjVGVtcERpcjsKICAgICBwcm9jLnN0YXJ0KCk7CiAgICAgcHJv
Yy53YWl0Rm9yRmluaXNoZWQoKTsKIH0KQEAgLTIwMCwxMyArMjAwLDEzIEBAIEtJTzo6V29ya2Vy
UmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpjaGVja1dyaXRlU3VwcG9ydCgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2FuIGVuYWJsZSBpdCBvbiB0aGUgJ0FyY2hp
dmVzJyBwYWdlIGluIEtvbmZpZ3VyYXRvci4iKSk7CiB9CiAKLXZvaWQga2lvX2tyYXJjUHJvdG9j
b2w6OnJlY2VpdmVkRGF0YShLUHJvY2VzcyAqLCBRQnl0ZUFycmF5ICZkKQordm9pZCBraW9fa3Jh
cmNQcm90b2NvbDo6cmVjZWl2ZWREYXRhKEtQcm9jZXNzICosIFFCeXRlQXJyYXkgJmJ5dGVEYXRh
KQogewogICAgIEtSRlVOQzsKLSAgICBjb25zdCBRQnl0ZUFycmF5ICZidWYoZCk7Ci0gICAgZGF0
YShidWYpOwotICAgIHByb2Nlc3NlZFNpemUoZC5sZW5ndGgoKSk7Ci0gICAgZGVjb21wcmVzc2Vk
TGVuICs9IGQubGVuZ3RoKCk7CisgICAgY29uc3QgYXV0byBsZW4gPSBieXRlRGF0YS5sZW5ndGgo
KTsKKyAgICBkYXRhKGJ5dGVEYXRhKTsKKyAgICBwcm9jZXNzZWRTaXplKGxlbik7CisgICAgbV9k
ZWNvbXByZXNzZWRMZW4gKz0gbGVuOwogfQogCiBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ
cm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMpCkBAIC0yMTks
OSArMjE5LDkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Om1rZGlyKGNv
bnN0IFFVcmwgJnVybCwgaW50IHBlcm1pc3Npb25zKQogICAgIGlmICghd3JpdGVTdXBwb3J0UmVz
dWx0LnN1Y2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHdyaXRlU3VwcG9ydFJlc3VsdDsKIAotICAg
ICAgICAvLyBJbiBjYXNlIG9mIEtJTzo6bWtwYXRoIGNhbGwgdGhlcmUgaXMgYSBta2RpciBjYWxs
IGZvciBldmVyeSBwYXRoIGVsZW1lbnQuCi0gICAgICAgIC8vIFRoZXJlZm9yZSB0aGUgcGF0aCBh
bGwgdGhlIHdheSB1cCB0byBvdXIgYXJjaGl2ZSBuZWVkcyB0byBiZSBjaGVja2VkIGZvciBleGlz
dGVuY2UKLSAgICAgICAgLy8gYW5kIHJlcG9ydGVkIGFzIHN1Y2Nlc3MuCisgICAgLy8gSW4gY2Fz
ZSBvZiBLSU86Om1rcGF0aCBjYWxsIHRoZXJlIGlzIGEgbWtkaXIgY2FsbCBmb3IgZXZlcnkgcGF0
aCBlbGVtZW50LgorICAgIC8vIFRoZXJlZm9yZSB0aGUgcGF0aCBhbGwgdGhlIHdheSB1cCB0byBv
dXIgYXJjaGl2ZSBuZWVkcyB0byBiZSBjaGVja2VkIGZvciBleGlzdGVuY2UKKyAgICAvLyBhbmQg
cmVwb3J0ZWQgYXMgc3VjY2Vzcy4KICAgICBpZiAoUURpcigpLmV4aXN0cyhwYXRoKSkgewogICAg
ICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpwYXNzKCk7CiAgICAgfQpAQCAtMjMxLDIyICsyMzEs
MjIgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Om1rZGlyKGNvbnN0IFFV
cmwgJnVybCwgaW50IHBlcm1pc3Npb25zKQogICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3Vs
dDsKICAgICB9CiAKLSAgICBpZiAobmV3QXJjaGl2ZVVSTCAmJiAhaW5pdERpckRpY3QodXJsKSkg
eworICAgIGlmIChtX25ld0FyY2hpdmVVUkwgJiYgIWluaXREaXJEaWN0KHVybCkpIHsKICAgICAg
ICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9UX0VOVEVSX0RJUkVDVE9SWSwg
cGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHB1dENtZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmV0
dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJDcmVh
dGluZyBmb2xkZXJzIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCAlMSBhcmNoaXZlcy4iLCBhcmNUeXBl
KSk7CisgICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FD
VElPTiwgaTE4bigiQ3JlYXRpbmcgZm9sZGVycyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggJTEgYXJj
aGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogCi0gICAgY29uc3QgUVN0cmluZyBhcmNGaWxl
UGF0aCA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpOworICAgIGNvbnN0IFFTdHJpbmcgYXJjRmls
ZVBhdGggPSBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCkpOwogCi0gICAgaWYgKGFyY1R5cGUgPT0g
ImFyaiIgfHwgYXJjVHlwZSA9PSAibGhhIikgeworICAgIGlmIChtX2FyY1R5cGUgPT0gImFyaiIg
fHwgbV9hcmNUeXBlID09ICJsaGEiKSB7CiAgICAgICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5t
aWQoYXJjRmlsZVBhdGgubGVuZ3RoKCkpOwogICAgICAgICBpZiAoYXJjRGlyLnJpZ2h0KDEpICE9
IERJUl9TRVBBUkFUT1IpCiAgICAgICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJB
VE9SOwogCi0gICAgICAgIGlmIChkaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBkaXJEaWN0LmVuZCgp
KQorICAgICAgICBpZiAobV9kaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBtX2RpckRpY3QuZW5kKCkp
CiAgICAgICAgICAgICBhZGROZXdEaXIoYXJjRGlyKTsKICAgICAgICAgcmV0dXJuIFdvcmtlclJl
c3VsdDo6cGFzcygpOwogICAgIH0KQEAgLTI1OSw3ICsyNTksNyBAQCBLSU86OldvcmtlclJlc3Vs
dCBraW9fa3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lv
bnMpCiAgICAgaWYgKHBlcm1pc3Npb25zID09IC0xKQogICAgICAgICBwZXJtaXNzaW9ucyA9IDA3
Nzc7IC8vIHNldCBkZWZhdWx0IHBlcm1pc3Npb25zCiAKLSAgICBRQnl0ZUFycmF5IGFyY1RlbXBE
aXJFbmMgPSBhcmNUZW1wRGlyLnRvTG9jYWw4Qml0KCk7CisgICAgUUJ5dGVBcnJheSBhcmNUZW1w
RGlyRW5jID0gbV9hcmNUZW1wRGlyLnRvTG9jYWw4Qml0KCk7CiAgICAgZm9yIChxc2l6ZXR5cGUg
aSA9IDA7IGkgPCB0ZW1wRGlyLmxlbmd0aCgpICYmIGkgPj0gMDsgaSA9IHRlbXBEaXIuaW5kZXhP
ZihESVJfU0VQQVJBVE9SLCBpICsgMSkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBuZXdEaXJzID0g
ZW5jb2RlU3RyaW5nKHRlbXBEaXIubGVmdChpKSk7CiAgICAgICAgIG5ld0RpcnMucHJlcGVuZChh
cmNUZW1wRGlyRW5jKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9f
a3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMpCiAg
ICAgS3JMaW5lY291bnRpbmdQcm9jZXNzIHByb2M7CiAgICAgcHJvYyA8PCBwdXRDbWQgPDwgYXJj
RmlsZVBhdGggPDwgbG9jYWxlRW5jb2RlZFN0cmluZyh0ZW1wRGlyKTsKICAgICBpbmZvTWVzc2Fn
ZShpMThuKCJDcmVhdGluZyAlMS4uLiIsIHVybC5maWxlTmFtZSgpKSk7Ci0gICAgUURpcjo6c2V0
Q3VycmVudChhcmNUZW1wRGlyKTsKKyAgICBRRGlyOjpzZXRDdXJyZW50KG1fYXJjVGVtcERpcik7
CiAKICAgICBTRVRfS1JDT0RFQwogICAgIHByb2Muc3RhcnQoKTsKQEAgLTI4Miw3ICsyODIsNyBA
QCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAm
dXJsLCBpbnQgcGVybWlzc2lvbnMpCiAgICAgcHJvYy53YWl0Rm9yRmluaXNoZWQoKTsKIAogICAg
IC8vIGRlbGV0ZSB0aGUgdGVtcCBkaXJlY3RvcnkKLSAgICBRRGlyKCkucm1kaXIoYXJjVGVtcERp
cik7CisgICAgUURpcigpLnJtZGlyKG1fYXJjVGVtcERpcik7CiAKICAgICBpZiAocHJvYy5leGl0
U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNoZWNrU3RhdHVzKHByb2MuZXhp
dENvZGUoKSkpIHsKICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9U
X1dSSVRFLCBwYXRoICsgIlxuXG4iICsgcHJvYy5nZXRFcnJvck1zZygpKTsKQEAgLTMwOSwxMiAr
MzA5LDEyIEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpwdXQoY29uc3Qg
UVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMsIEtJTzo6CiAgICAgaWYgKCFzZXRBcmNGaWxlUmVz
dWx0LnN1Y2Nlc3MoKSkgewogICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICB9
Ci0gICAgaWYgKG5ld0FyY2hpdmVVUkwgJiYgIWluaXREaXJEaWN0KHVybCkpIHsKKyAgICBpZiAo
bV9uZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwpKSB7CiAgICAgICAgIHJldHVybiBX
b3JrZXJSZXN1bHQ6OmZhaWwoRVJSX0NBTk5PVF9FTlRFUl9ESVJFQ1RPUlksIGdldFBhdGgodXJs
KSk7CiAgICAgfQogCiAgICAgaWYgKHB1dENtZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmV0dXJu
IFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJXcml0aW5n
IHRvICUxIGFyY2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQuIiwgYXJjVHlwZSkpOworICAgICAgICBy
ZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIldy
aXRpbmcgdG8gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBtX2FyY1R5cGUpKTsKICAg
ICB9CiAgICAgaWYgKCFvdmVyd3JpdGUgJiYgZmluZEZpbGVFbnRyeSh1cmwpKSB7CiAgICAgICAg
IHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX0ZJTEVfQUxSRUFEWV9FWElTVCwgZ2V0UGF0
aCh1cmwpKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ
cm90b2NvbDo6cHV0KGNvbnN0IFFVcmwgJnVybCwgaW50IHBlcm1pc3Npb25zLCBLSU86OgogICAg
IGlmIChwZXJtaXNzaW9ucyA9PSAtMSkKICAgICAgICAgcGVybWlzc2lvbnMgPSAwNzc3OyAvLyBz
ZXQgZGVmYXVsdCBwZXJtaXNzaW9ucwogCi0gICAgUUJ5dGVBcnJheSBhcmNUZW1wRGlyRW5jID0g
YXJjVGVtcERpci50b0xvY2FsOEJpdCgpOworICAgIFFCeXRlQXJyYXkgYXJjVGVtcERpckVuYyA9
IG1fYXJjVGVtcERpci50b0xvY2FsOEJpdCgpOwogICAgIGZvciAocXNpemV0eXBlIGkgPSAwOyBp
IDwgdGVtcERpci5sZW5ndGgoKSAmJiBpID49IDA7IGkgPSB0ZW1wRGlyLmluZGV4T2YoRElSX1NF
UEFSQVRPUiwgaSArIDEpKSB7CiAgICAgICAgIFFCeXRlQXJyYXkgbmV3RGlycyA9IGVuY29kZVN0
cmluZyh0ZW1wRGlyLmxlZnQoaSkpOwogICAgICAgICBuZXdEaXJzLnByZXBlbmQoYXJjVGVtcERp
ckVuYyk7CkBAIC0zNzksOSArMzc5LDkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJv
dG9jb2w6OnB1dChjb25zdCBRVXJsICZ1cmwsIGludCBwZXJtaXNzaW9ucywgS0lPOjoKIAogICAg
IC8vIHBhY2sgdGhlIGZpbGUKICAgICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICBw
cm9jIDw8IHB1dENtZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpKSA8PCBsb2NhbGVFbmNvZGVk
U3RyaW5nKHRlbXBGaWxlKTsKKyAgICBwcm9jIDw8IHB1dENtZCA8PCBnZXRQYXRoKG1fYXJjRmls
ZS0+dXJsKCkpIDw8IGxvY2FsZUVuY29kZWRTdHJpbmcodGVtcEZpbGUpOwogICAgIGluZm9NZXNz
YWdlKGkxOG4oIlBhY2tpbmcgJTEuLi4iLCB1cmwuZmlsZU5hbWUoKSkpOwotICAgIFFEaXI6OnNl
dEN1cnJlbnQoYXJjVGVtcERpcik7CisgICAgUURpcjo6c2V0Q3VycmVudChtX2FyY1RlbXBEaXIp
OwogCiAgICAgU0VUX0tSQ09ERUMKICAgICBwcm9jLnN0YXJ0KCk7CkBAIC0zOTAsNyArMzkwLDcg
QEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnB1dChjb25zdCBRVXJsICZ1
cmwsIGludCBwZXJtaXNzaW9ucywgS0lPOjoKICAgICBwcm9jLndhaXRGb3JGaW5pc2hlZCgpOwog
CiAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlcwotICAgIFFEaXIoKS5ybWRpcihhcmNUZW1wRGlyKTsK
KyAgICBRRGlyKCkucm1kaXIobV9hcmNUZW1wRGlyKTsKIAogICAgIGlmIChwcm9jLmV4aXRTdGF0
dXMoKSAhPSBRUHJvY2Vzczo6Tm9ybWFsRXhpdCB8fCAhY2hlY2tTdGF0dXMocHJvYy5leGl0Q29k
ZSgpKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfV1JJ
VEUsIGdldFBhdGgodXJsKSArICJcblxuIiArIHByb2MuZ2V0RXJyb3JNc2coKSk7CkBAIC00MTYs
MTIgKzQxNiwxMiBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNv
bnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNj
ZXNzKCkpIHsKICAgICAgICAgcmV0dXJuIHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlm
IChuZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJj
aGl2ZVVSTCAmJiAhaW5pdERpckRpY3QodXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVz
dWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAg
IH0KIAogICAgIGlmIChnZXRDbWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJS
ZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FDVElPTiwgaTE4bigiUmV0cmlldmluZyBkYXRh
IGZyb20gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBhcmNUeXBlKSk7CisgICAgICAg
IHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FDVElPTiwgaTE4bigi
UmV0cmlldmluZyBkYXRhIGZyb20gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBtX2Fy
Y1R5cGUpKTsKICAgICB9CiAgICAgVURTRW50cnkgKmVudHJ5ID0gZmluZEZpbGVFbnRyeSh1cmwp
OwogICAgIGlmICghZW50cnkpIHsKQEAgLTQzMywxMCArNDMzLDEwIEBAIEtJTzo6V29ya2VyUmVz
dWx0IGtpb19rcmFyY1Byb3RvY29sOjpnZXQoY29uc3QgUVVybCAmdXJsLCBpbnQgdHJpZXMpCiAK
ICAgICBLSU86OmZpbGVzaXplX3QgZXhwZWN0ZWRTaXplID0gS0ZpbGVJdGVtKCplbnRyeSwgdXJs
KS5zaXplKCk7CiAgICAgLy8gZm9yIFJQTSBmaWxlcyBleHRyYWN0IHRoZSBjcGlvIGZpbGUgZmly
c3QKLSAgICBpZiAoIWV4dEFyY1JlYWR5ICYmIGFyY1R5cGUgPT0gInJwbSIpIHsKKyAgICBpZiAo
IW1fZXh0QXJjUmVhZHkgJiYgbV9hcmNUeXBlID09ICJycG0iKSB7CiAgICAgICAgIEtyTGluZWNv
dW50aW5nUHJvY2VzcyBjcGlvOwotICAgICAgICBjcGlvIDw8ICJycG0yY3BpbyIgPDwgZ2V0UGF0
aChhcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKTsKLSAgICAgICAgY3Bp
by5zZXRTdGFuZGFyZE91dHB1dEZpbGUoYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7Cisg
ICAgICAgIGNwaW8gPDwgInJwbTJjcGlvIiA8PCBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCksIFFV
cmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgIGNwaW8uc2V0U3RhbmRhcmRPdXRwdXRG
aWxlKG1fYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7CiAKICAgICAgICAgY3Bpby5zdGFy
dCgpOwogICAgICAgICBjcGlvLndhaXRGb3JGaW5pc2hlZCgpOwpAQCAtNDQ0LDEzICs0NDQsMTMg
QEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmdldChjb25zdCBRVXJsICZ1
cmwsIGludCB0cmllcykKICAgICAgICAgaWYgKGNwaW8uZXhpdFN0YXR1cygpICE9IFFQcm9jZXNz
OjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhjcGlvLmV4aXRDb2RlKCkpKSB7CiAgICAgICAg
ICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfUkVBRCwgZ2V0UGF0aCh1
cmwpICsgIlxuXG4iICsgY3Bpby5nZXRFcnJvck1zZygpKTsKICAgICAgICAgfQotICAgICAgICBl
eHRBcmNSZWFkeSA9IHRydWU7CisgICAgICAgIG1fZXh0QXJjUmVhZHkgPSB0cnVlOwogICAgIH0K
ICAgICAvLyBmb3IgREVCIGZpbGVzIGV4dHJhY3QgdGhlIHRhciBmaWxlIGZpcnN0Ci0gICAgaWYg
KCFleHRBcmNSZWFkeSAmJiBhcmNUeXBlID09ICJkZWIiKSB7CisgICAgaWYgKCFtX2V4dEFyY1Jl
YWR5ICYmIG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICBLckxpbmVjb3VudGluZ1Byb2Nl
c3MgZHBrZzsKLSAgICAgICAgZHBrZyA8PCBjbWQgPDwgIi0tZnN5cy10YXJmaWxlIiA8PCBnZXRQ
YXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpOwotICAgICAgICBk
cGtnLnNldFN0YW5kYXJkT3V0cHV0RmlsZShhcmNUZW1wRGlyICsgImNvbnRlbnRzLmNwaW8iKTsK
KyAgICAgICAgZHBrZyA8PCBjbWQgPDwgIi0tZnN5cy10YXJmaWxlIiA8PCBnZXRQYXRoKG1fYXJj
RmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgIGRwa2cuc2V0
U3RhbmRhcmRPdXRwdXRGaWxlKG1fYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7CiAKICAg
ICAgICAgZHBrZy5zdGFydCgpOwogICAgICAgICBkcGtnLndhaXRGb3JGaW5pc2hlZCgpOwpAQCAt
NDU4LDQxICs0NTgsNDEgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omdl
dChjb25zdCBRVXJsICZ1cmwsIGludCB0cmllcykKICAgICAgICAgaWYgKGRwa2cuZXhpdFN0YXR1
cygpICE9IFFQcm9jZXNzOjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhkcGtnLmV4aXRDb2Rl
KCkpKSB7CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1Rf
UkVBRCwgZ2V0UGF0aCh1cmwpICsgIlxuXG4iICsgZHBrZy5nZXRFcnJvck1zZygpKTsKICAgICAg
ICAgfQotICAgICAgICBleHRBcmNSZWFkeSA9IHRydWU7CisgICAgICAgIG1fZXh0QXJjUmVhZHkg
PSB0cnVlOwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZXh0ZXJuYWwgdW5wYWNrZXIgdG8gdW5w
YWNrIHRoZSBmaWxlCi0gICAgUVN0cmluZyBmaWxlID0gZ2V0UGF0aCh1cmwpLm1pZChnZXRQYXRo
KGFyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSArIDEpOworICAgIFFTdHJpbmcgZmlsZSA9IGdldFBh
dGgodXJsKS5taWQoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSArIDEpOwogICAg
IEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwotICAgIGlmIChleHRBcmNSZWFkeSkgewotICAg
ICAgICBwcm9jIDw8IGdldENtZCA8PCBhcmNUZW1wRGlyICsgImNvbnRlbnRzLmNwaW8iIDw8ICcq
JyArIGxvY2FsZUVuY29kZWRTdHJpbmcoZmlsZSk7Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09
ICJhcmoiIHx8IGFyY1R5cGUgPT0gImFjZSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7Ci0gICAgICAg
IHByb2MgPDwgZ2V0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh
aWxpbmdTbGFzaCkgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhmaWxlKTsKLSAgICAgICAgaWYgKGFy
Y1R5cGUgPT0gImFjZSIgJiYgUUZpbGUoIi9kZXYvcHRteCIpLmV4aXN0cygpKSAvLyBEb24ndCBy
ZW1vdmUsIHVuYWNlIGNyYXNoZXMgaWYgbWlzc2luZyEhIQorICAgIGlmIChtX2V4dEFyY1JlYWR5
KSB7CisgICAgICAgIHByb2MgPDwgZ2V0Q21kIDw8IG1fYXJjVGVtcERpciArICJjb250ZW50cy5j
cGlvIiA8PCAnKicgKyBsb2NhbGVFbmNvZGVkU3RyaW5nKGZpbGUpOworICAgIH0gZWxzZSBpZiAo
bV9hcmNUeXBlID09ICJhcmoiIHx8IG1fYXJjVHlwZSA9PSAiYWNlIiB8fCBtX2FyY1R5cGUgPT0g
Ijd6IikgeworICAgICAgICBwcm9jIDw8IGdldENtZCA8PCBnZXRQYXRoKG1fYXJjRmlsZS0+dXJs
KCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhmaWxl
KTsKKyAgICAgICAgaWYgKG1fYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9wdG14Iiku
ZXhpc3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5nISEhCiAg
ICAgICAgICAgICBwcm9jLnNldFN0YW5kYXJkSW5wdXRGaWxlKCIvZGV2L3B0bXgiKTsKICAgICAg
ICAgZmlsZSA9IHVybC5maWxlTmFtZSgpOwogICAgICAgICBkZWNvbXByZXNzVG9GaWxlID0gdHJ1
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBkZWNvbXByZXNzZWRMZW4gPSAwOworICAgICAgICBt
X2RlY29tcHJlc3NlZExlbiA9IDA7CiAgICAgICAgIC8vIERldGVybWluZSB0aGUgbWltZXR5cGUg
b2YgdGhlIGZpbGUgdG8gYmUgcmV0cmlldmVkLCBhbmQgZW1pdCBpdC4KICAgICAgICAgLy8gVGhp
cyBpcyBtYW5kYXRvcnkgaW4gYWxsIHNsYXZlcyAoZm9yIEtSdW4vQnJvd3NlclJ1biB0byB3b3Jr
KS4KICAgICAgICAgUU1pbWVEYXRhYmFzZSBkYjsKLSAgICAgICAgUU1pbWVUeXBlIG10ID0gZGIu
bWltZVR5cGVGb3JGaWxlKGFyY1RlbXBEaXIgKyBmaWxlKTsKKyAgICAgICAgUU1pbWVUeXBlIG10
ID0gZGIubWltZVR5cGVGb3JGaWxlKG1fYXJjVGVtcERpciArIGZpbGUpOwogICAgICAgICBpZiAo
bXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgbWltZVR5cGUobXQubmFtZSgpKTsKIAogICAgICAg
ICBRU3RyaW5nIGVzY2FwZWRGaWxlbmFtZSA9IGZpbGU7Ci0gICAgICAgIGlmIChhcmNUeXBlID09
ICJ6aXAiKSAvLyBsZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAorICAgICAgICBpZiAo
bV9hcmNUeXBlID09ICJ6aXAiKSAvLyBsZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAog
ICAgICAgICAgICAgZXNjYXBlZEZpbGVuYW1lLnJlcGxhY2UoJ1snLCAiW1tdIik7Ci0gICAgICAg
IHByb2MgPDwgZ2V0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpOwotICAgICAgICBpZiAo
YXJjVHlwZSAhPSAiZ3ppcCIgJiYgYXJjVHlwZSAhPSAiYnppcDIiICYmIGFyY1R5cGUgIT0gImx6
bWEiICYmIGFyY1R5cGUgIT0gInh6IikKKyAgICAgICAgcHJvYyA8PCBnZXRDbWQgPDwgZ2V0UGF0
aChtX2FyY0ZpbGUtPnVybCgpKTsKKyAgICAgICAgaWYgKG1fYXJjVHlwZSAhPSAiZ3ppcCIgJiYg
bV9hcmNUeXBlICE9ICJiemlwMiIgJiYgbV9hcmNUeXBlICE9ICJsem1hIiAmJiBtX2FyY1R5cGUg
IT0gInh6IikKICAgICAgICAgICAgIHByb2MgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhlc2NhcGVk
RmlsZW5hbWUpOwogICAgICAgICBjb25uZWN0KCZwcm9jLCAmS3JMaW5lY291bnRpbmdQcm9jZXNz
OjpuZXdPdXRwdXREYXRhLCB0aGlzLCAma2lvX2tyYXJjUHJvdG9jb2w6OnJlY2VpdmVkRGF0YSk7
CiAgICAgICAgIHByb2Muc2V0TWVyZ2UoZmFsc2UpOwogICAgIH0KICAgICBpbmZvTWVzc2FnZShp
MThuKCJVbnBhY2tpbmcgJTEuLi4iLCB1cmwuZmlsZU5hbWUoKSkpOwogICAgIC8vIGNoYW5nZSB0
aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gb3VyIGFyY1RlbXBEaXIKLSAgICBRRGlyOjpzZXRDdXJy
ZW50KGFyY1RlbXBEaXIpOworICAgIFFEaXI6OnNldEN1cnJlbnQobV9hcmNUZW1wRGlyKTsKIAog
ICAgIFNFVF9LUkNPREVDCiAgICAgcHJvYy5zZXRUZXh0TW9kZUVuYWJsZWQoZmFsc2UpOwpAQCAt
NTA4LDIwICs1MDgsMjAgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omdl
dChjb25zdCBRVXJsICZ1cmwsIGludCB0cmllcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2MuZXJyb3JTdHJpbmcoKSkpOwogICAgIH0KIAotICAgIGlmICghZXh0
QXJjUmVhZHkgJiYgIWRlY29tcHJlc3NUb0ZpbGUpIHsKKyAgICBpZiAoIW1fZXh0QXJjUmVhZHkg
JiYgIWRlY29tcHJlc3NUb0ZpbGUpIHsKICAgICAgICAgaWYgKHByb2MuZXhpdFN0YXR1cygpICE9
IFFQcm9jZXNzOjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhwcm9jLmV4aXRDb2RlKCkpCi0g
ICAgICAgICAgICB8fCAoYXJjVHlwZSAhPSAiYnppcDIiICYmIGFyY1R5cGUgIT0gImx6bWEiICYm
IGFyY1R5cGUgIT0gInh6IiAmJiBleHBlY3RlZFNpemUgIT0gZGVjb21wcmVzc2VkTGVuKSkgewot
ICAgICAgICAgICAgaWYgKGVuY3J5cHRlZCAmJiB0cmllcykgeworICAgICAgICAgICAgfHwgKG1f
YXJjVHlwZSAhPSAiYnppcDIiICYmIG1fYXJjVHlwZSAhPSAibHptYSIgJiYgbV9hcmNUeXBlICE9
ICJ4eiIgJiYgZXhwZWN0ZWRTaXplICE9IG1fZGVjb21wcmVzc2VkTGVuKSkgeworICAgICAgICAg
ICAgaWYgKG1fZW5jcnlwdGVkICYmIHRyaWVzKSB7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0
ZVBhc3N3b3JkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldCh1cmwsIHRyaWVzIC0gMSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEtJ
Tzo6RVJSX0FDQ0VTU19ERU5JRUQsIGdldFBhdGgodXJsKSArICJcblxuIiArIHByb2MuZ2V0RXJy
b3JNc2coKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAocHJvYy5leGl0
U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNoZWNrU3RhdHVzKHByb2MuZXhp
dENvZGUoKSkgfHwgIVFGaWxlSW5mbzo6ZXhpc3RzKGFyY1RlbXBEaXIgKyBmaWxlKSkgeworICAg
ICAgICBpZiAocHJvYy5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNo
ZWNrU3RhdHVzKHByb2MuZXhpdENvZGUoKSkgfHwgIVFGaWxlSW5mbzo6ZXhpc3RzKG1fYXJjVGVt
cERpciArIGZpbGUpKSB7CiAgICAgICAgICAgICBpZiAoZGVjb21wcmVzc1RvRmlsZSkKLSAgICAg
ICAgICAgICAgICBRRmlsZShhcmNUZW1wRGlyICsgZmlsZSkucmVtb3ZlKCk7Ci0gICAgICAgICAg
ICBpZiAoZW5jcnlwdGVkICYmIHRyaWVzKSB7CisgICAgICAgICAgICAgICAgUUZpbGUobV9hcmNU
ZW1wRGlyICsgZmlsZSkucmVtb3ZlKCk7CisgICAgICAgICAgICBpZiAobV9lbmNyeXB0ZWQgJiYg
dHJpZXMpIHsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlUGFzc3dvcmQoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2V0KHVybCwgdHJpZXMgLSAxKTsKICAgICAgICAgICAgIH0KQEAgLTUy
OSw3ICs1MjksNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNv
bnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAgICAgICB9CiAgICAgICAgIC8vIHRoZSBmb2xs
b3dpbmcgYmxvY2sgaXMgcmlwcGVkIGZyb20gS0RFIGZpbGUgS0lPOjpTbGF2ZQogICAgICAgICAv
LyAkSWQ6IGtyYXJjLmNwcCx2IDEuNDMgMjAwNy8wMS8xMyAxMzozOTo1MSBja2FyYWkgRXhwICQK
LSAgICAgICAgUUJ5dGVBcnJheSBfcGF0aChRRmlsZTo6ZW5jb2RlTmFtZShhcmNUZW1wRGlyICsg
ZmlsZSkpOworICAgICAgICBRQnl0ZUFycmF5IF9wYXRoKFFGaWxlOjplbmNvZGVOYW1lKG1fYXJj
VGVtcERpciArIGZpbGUpKTsKICAgICAgICAgUVRfU1RBVEJVRiBidWZmOwogICAgICAgICBpZiAo
UVRfTFNUQVQoX3BhdGguY29uc3REYXRhKCksICZidWZmKSA9PSAtMSkgewogICAgICAgICAgICAg
aWYgKGVycm5vID09IEVBQ0NFUykKQEAgLTU0OSw3ICs1NDksNyBAQCBLSU86OldvcmtlclJlc3Vs
dCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNvbnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAg
ICAgICAvLyBEZXRlcm1pbmUgdGhlIG1pbWV0eXBlIG9mIHRoZSBmaWxlIHRvIGJlIHJldHJpZXZl
ZCwgYW5kIGVtaXQgaXQuCiAgICAgICAgIC8vIFRoaXMgaXMgbWFuZGF0b3J5IGluIGFsbCBzbGF2
ZXMgKGZvciBLUnVuL0Jyb3dzZXJSdW4gdG8gd29yaykuCiAgICAgICAgIFFNaW1lRGF0YWJhc2Ug
ZGI7Ci0gICAgICAgIFFNaW1lVHlwZSBtdCA9IGRiLm1pbWVUeXBlRm9yRmlsZShhcmNUZW1wRGly
ICsgZmlsZSk7CisgICAgICAgIFFNaW1lVHlwZSBtdCA9IGRiLm1pbWVUeXBlRm9yRmlsZShtX2Fy
Y1RlbXBEaXIgKyBmaWxlKTsKICAgICAgICAgaWYgKG10LmlzVmFsaWQoKSkKICAgICAgICAgICAg
IG1pbWVUeXBlKG10Lm5hbWUoKSk7CiAKQEAgLTU5NCw3ICs1OTQsNyBAQCBLSU86OldvcmtlclJl
c3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNvbnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQog
ICAgICAgICBwcm9jZXNzZWRTaXplKGJ1ZmYuc3Rfc2l6ZSk7CiAKICAgICAgICAgaWYgKGRlY29t
cHJlc3NUb0ZpbGUpCi0gICAgICAgICAgICBRRmlsZShhcmNUZW1wRGlyICsgZmlsZSkucmVtb3Zl
KCk7CisgICAgICAgICAgICBRRmlsZShtX2FyY1RlbXBEaXIgKyBmaWxlKS5yZW1vdmUoKTsKICAg
ICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6cGFzcygpOwogICAgIH0KICAgICAvLyBzZW5kIGVt
cHR5IGJ1ZmZlciB0byBtYXJrIEVPRgpAQCAtNjE1LDI2ICs2MTUsMjYgQEAgS0lPOjpXb3JrZXJS
ZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmRlbChRVXJsIGNvbnN0ICZ1cmwsIGJvb2wgaXNGaWxl
KQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNzKCkpIHsKICAgICAgICAgcmV0dXJu
IHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlmIChuZXdBcmNoaXZlVVJMICYmICFpbml0
RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJjaGl2ZVVSTCAmJiAhaW5pdERpckRpY3Qo
dXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5U
RVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAgIH0KIAogICAgIGlmIChkZWxDbWQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9S
VEVEX0FDVElPTiwgaTE4bigiRGVsZXRpbmcgZmlsZXMgZnJvbSAlMSBhcmNoaXZlcyBpcyBub3Qg
c3VwcG9ydGVkLiIsIGFyY1R5cGUpKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFp
bChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJEZWxldGluZyBmaWxlcyBmcm9tICUxIGFy
Y2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogICAgIGlmICgh
ZmluZEZpbGVFbnRyeSh1cmwpKSB7Ci0gICAgICAgIGlmICgoYXJjVHlwZSAhPSAiYXJqIiAmJiBh
cmNUeXBlICE9ICJsaGEiKSB8fCBpc0ZpbGUpIHsKKyAgICAgICAgaWYgKChtX2FyY1R5cGUgIT0g
ImFyaiIgJiYgbV9hcmNUeXBlICE9ICJsaGEiKSB8fCBpc0ZpbGUpIHsKICAgICAgICAgICAgIHJl
dHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoS0lPOjpFUlJfRE9FU19OT1RfRVhJU1QsIGdldFBhdGgo
dXJsKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRoKHVy
bCkubWlkKGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpLmxlbmd0aCgpICsgMSk7CisgICAgUVN0cmlu
ZyBmaWxlID0gZ2V0UGF0aCh1cmwpLm1pZChnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCkpLmxlbmd0
aCgpICsgMSk7CiAgICAgaWYgKCFpc0ZpbGUgJiYgZmlsZS5yaWdodCgxKSAhPSBESVJfU0VQQVJB
VE9SKSB7Ci0gICAgICAgIGlmIChhcmNUeXBlID09ICJ6aXAiKQorICAgICAgICBpZiAobV9hcmNU
eXBlID09ICJ6aXAiKQogICAgICAgICAgICAgZmlsZSA9IGZpbGUgKyBESVJfU0VQQVJBVE9SOwog
ICAgIH0KICAgICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICBwcm9jIDw8IGRlbENt
ZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpKSA8PCBsb2NhbGVFbmNvZGVkU3RyaW5nKGZpbGUp
OworICAgIHByb2MgPDwgZGVsQ21kIDw8IGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSkgPDwgbG9j
YWxlRW5jb2RlZFN0cmluZyhmaWxlKTsKICAgICBpbmZvTWVzc2FnZShpMThuKCJEZWxldGluZyAl
MS4uLiIsIHVybC5maWxlTmFtZSgpKSk7CiAKICAgICBTRVRfS1JDT0RFQwpAQCAtNjU5LDE5ICs2
NTksMTkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnN0YXQoY29uc3Qg
UVVybCAmdXJsKQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNzKCkpIHsKICAgICAg
ICAgcmV0dXJuIHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlmIChuZXdBcmNoaXZlVVJM
ICYmICFpbml0RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJjaGl2ZVVSTCAmJiAhaW5p
dERpckRpY3QodXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9D
QU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAgIH0KIAogICAgIGlmIChs
aXN0Q21kLmlzRW1wdHkoKSkgewotICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVS
Ul9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIkFjY2Vzc2luZyBmaWxlcyBpcyBub3Qgc3VwcG9y
dGVkIHdpdGggJTEgYXJjaGl2ZXMuIiwgYXJjVHlwZSkpOworICAgICAgICByZXR1cm4gV29ya2Vy
UmVzdWx0OjpmYWlsKEVSUl9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIkFjY2Vzc2luZyBmaWxl
cyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggJTEgYXJjaGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAg
fQogCiAgICAgUVN0cmluZyBwYXRoID0gZ2V0UGF0aCh1cmwsIFFVcmw6OlN0cmlwVHJhaWxpbmdT
bGFzaCk7CiAgICAgUVVybCBuZXdVcmwgPSB1cmw7CiAKICAgICAvLyBidXQgdHJlYXQgdGhlIGFy
Y2hpdmUgaXRzZWxmIGFzIHRoZSBhcmNoaXZlIHJvb3QKLSAgICBpZiAocGF0aCA9PSBnZXRQYXRo
KGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpKSB7CisgICAgaWYgKHBh
dGggPT0gZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gp
KSB7CiAgICAgICAgIG5ld1VybC5zZXRQYXRoKHBhdGggKyBESVJfU0VQQVJBVE9SKTsKICAgICAg
ICAgcGF0aCA9IGdldFBhdGgobmV3VXJsKTsKICAgICB9CkBAIC03MDcsMTIgKzcwNywxMiBAQCBL
SU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Y29weShjb25zdCBRVXJsICZ1cmws
IGNvbnN0IFFVcmwgJmRlc3QsIGludAogCiAgICAgLy8gS0RFIEhBQ0s6IG9wZW5pbmcgdGhlIHBh
c3N3b3JkIGRsZyBpbiBjb3B5IGNhdXNlcyBlcnJvciBmb3IgdGhlIENPUFksIGFuZCBmdXJ0aGVy
IHByb2JsZW1zCiAgICAgLy8gdGhhdCdzIHdoeSBlbmNyeXB0ZWQgZmlsZXMgYXJlIG5vdCBhbGxv
d2VkIHRvIGNvcHkKLSAgICBpZiAoIWVuY3J5cHRlZCAmJiBkZXN0LmlzTG9jYWxGaWxlKCkpCisg
ICAgaWYgKCFtX2VuY3J5cHRlZCAmJiBkZXN0LmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgIGlmICh1cmwuZmlsZU5hbWUoKSAhPSBkZXN0LmZpbGVOYW1lKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChRVGV4dENvZGVjOjpjb2RlY0Zv
ckxvY2FsZSgpLT5uYW1lKCkgIT0gY29kZWMtPm5hbWUoKSkKKyAgICAgICAgICAgIGlmIChRVGV4
dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpLT5uYW1lKCkgIT0gbV9jb2RlYy0+bmFtZSgpKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvLyB0aGUgZmlsZSBleGlzdHMgYW5k
IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlCkBAIC03MjQsNyArNzI0LDcgQEAgS0lPOjpXb3Jr
ZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmNvcHkoY29uc3QgUVVybCAmdXJsLCBjb25zdCBR
VXJsICZkZXN0LCBpbnQKICAgICAgICAgICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNz
KCkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChuZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwp
KSB7CisgICAgICAgICAgICBpZiAobV9uZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwp
KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9U
X0VOVEVSX0RJUkVDVE9SWSwgZ2V0UGF0aCh1cmwpKTsKICAgICAgICAgICAgIH0KIApAQCAtNzMy
LDcgKzczMiw3IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpjb3B5KGNv
bnN0IFFVcmwgJnVybCwgY29uc3QgUVVybCAmZGVzdCwgaW50CiAgICAgICAgICAgICBpZiAoY29w
eUNtZC5pc0VtcHR5KCkgfHwgIWVudHJ5KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRoKHVybCkubWlkKGdldFBhdGgoYXJjRmlsZS0+
dXJsKCkpLmxlbmd0aCgpICsgMSk7CisgICAgICAgICAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRo
KHVybCkubWlkKGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSkubGVuZ3RoKCkgKyAxKTsKIAogICAg
ICAgICAgICAgUVN0cmluZyBkZXN0RGlyID0gZ2V0UGF0aChkZXN0LCBRVXJsOjpTdHJpcFRyYWls
aW5nU2xhc2gpOwogICAgICAgICAgICAgaWYgKCFRRGlyKGRlc3REaXIpLmV4aXN0cygpKSB7CkBA
IC03NDQsMTQgKzc0NCwxNCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6
Y29weShjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFVcmwgJmRlc3QsIGludAogICAgICAgICAgICAg
UURpcjo6c2V0Q3VycmVudChkZXN0RGlyKTsKIAogICAgICAgICAgICAgUVN0cmluZyBlc2NhcGVk
RmlsZW5hbWUgPSBmaWxlOwotICAgICAgICAgICAgaWYgKGFyY1R5cGUgPT0gInppcCIpIHsKKyAg
ICAgICAgICAgIGlmIChtX2FyY1R5cGUgPT0gInppcCIpIHsKICAgICAgICAgICAgICAgICAvLyBs
ZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAogICAgICAgICAgICAgICAgIGVzY2FwZWRG
aWxlbmFtZS5yZXBsYWNlKCdbJywgIltbXSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICAgICAgICAgIHByb2MgPDwgY29weUNt
ZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpIDw8
IGVzY2FwZWRGaWxlbmFtZTsKLSAgICAgICAgICAgIGlmIChhcmNUeXBlID09ICJhY2UiICYmIFFG
aWxlKCIvZGV2L3B0bXgiKS5leGlzdHMoKSkgLy8gRG9uJ3QgcmVtb3ZlLCB1bmFjZSBjcmFzaGVz
IGlmIG1pc3NpbmchISEKKyAgICAgICAgICAgIHByb2MgPDwgY29weUNtZCA8PCBnZXRQYXRoKG1f
YXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPDwgZXNjYXBlZEZpbGVu
YW1lOworICAgICAgICAgICAgaWYgKG1fYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9w
dG14IikuZXhpc3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5n
ISEhCiAgICAgICAgICAgICAgICAgcHJvYy5zZXRTdGFuZGFyZElucHV0RmlsZSgiL2Rldi9wdG14
Iik7CiAgICAgICAgICAgICBwcm9jLnNldE91dHB1dENoYW5uZWxNb2RlKEtQcm9jZXNzOjpTZXBh
cmF0ZUNoYW5uZWxzKTsgLy8gd2l0aG91dCB0aGlzIG91dHB1dCByZWRpcmVjdGlvbiBoYXMgbm8g
ZWZmZWN0CiAKQEAgLTc3MCw3ICs3NzAsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ
cm90b2NvbDo6Y29weShjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFVcmwgJmRlc3QsIGludAogICAg
ICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6cGFzcygpOwogICAgICAgICB9IHdoaWxlIChm
YWxzZSk7CiAKLSAgICBpZiAoZW5jcnlwdGVkKQorICAgIGlmIChtX2VuY3J5cHRlZCkKICAgICAg
ICAgS1JERUJVRygiRVJST1I6ICIgPDwgdXJsLnBhdGgoKSA8PCAiIGlzIGVuY3J5cHRlZC4iKTsK
ICAgICBpZiAoIWRlc3QuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgS1JERUJVRygiRVJST1I6ICIg
PDwgZGVzdC5wYXRoKCkgPDwgIiBpcyBub3QgYSBsb2NhbCBmaWxlLiIpOwpAQCAtNzg4LDcgKzc4
OCw3IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpyZW5hbWUoY29uc3Qg
UVVybCAmc3JjLCBjb25zdCBRVXJsICZkZXN0LCBLCiAgICAgUV9VTlVTRUQoZmxhZ3MpOwogCiAg
ICAgS1JERUJVRygicmVuYW1pbmcgZnJvbTogIiA8PCBzcmMucGF0aCgpIDw8ICIgdG86ICIgPDwg
ZGVzdC5wYXRoKCkpOwotICAgIEtSREVCVUcoImNvbW1hbmQ6ICIgPDwgYXJjUGF0aCk7CisgICAg
S1JERUJVRygiY29tbWFuZDogIiA8PCBtX2FyY1BhdGgpOwogCiAgICAgY29uc3QgYXV0byB3cml0
ZVN1cHBvcnRSZXN1bHQgPSBjaGVja1dyaXRlU3VwcG9ydCgpOwogICAgIGlmICghd3JpdGVTdXBw
b3J0UmVzdWx0LnN1Y2Nlc3MoKSkKQEAgLTgwMyw3ICs4MDMsNyBAQCBLSU86OldvcmtlclJlc3Vs
dCBraW9fa3JhcmNQcm90b2NvbDo6cmVuYW1lKGNvbnN0IFFVcmwgJnNyYywgY29uc3QgUVVybCAm
ZGVzdCwgSwogICAgIH0KIAogICAgIEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwotICAgIHBy
b2MgPDwgcmVuQ21kIDw8IGFyY1BhdGggPDwgc3JjLnBhdGgoKS5yZW1vdmUoYXJjUGF0aCArICcv
JykgPDwgZGVzdC5wYXRoKCkucmVtb3ZlKGFyY1BhdGggKyAnLycpOworICAgIHByb2MgPDwgcmVu
Q21kIDw8IG1fYXJjUGF0aCA8PCBzcmMucGF0aCgpLnJlbW92ZShtX2FyY1BhdGggKyAnLycpIDw8
IGRlc3QucGF0aCgpLnJlbW92ZShtX2FyY1BhdGggKyAnLycpOwogICAgIHByb2Muc3RhcnQoKTsK
ICAgICBwcm9jLndhaXRGb3JGaW5pc2hlZCgpOwogCkBAIC04MjMsNyArODIzLDcgQEAgS0lPOjpX
b3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omxpc3REaXIoY29uc3QgUVVybCAmdXJsKQog
ICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICB9CiAgICAgaWYgKGxpc3RDbWQu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQ
UE9SVEVEX0FDVElPTiwgaTE4bigiTGlzdGluZyBmb2xkZXJzIGlzIG5vdCBzdXBwb3J0ZWQgZm9y
ICUxIGFyY2hpdmVzLiIsIGFyY1R5cGUpKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6
ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJMaXN0aW5nIGZvbGRlcnMgaXMgbm90
IHN1cHBvcnRlZCBmb3IgJTEgYXJjaGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogICAgIFFT
dHJpbmcgcGF0aCA9IGdldFBhdGgodXJsKTsKICAgICBpZiAocGF0aC5yaWdodCgxKSAhPSBESVJf
U0VQQVJBVE9SKQpAQCAtODQ0LDE1ICs4NDQsMTUgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2ty
YXJjUHJvdG9jb2w6Omxpc3REaXIoY29uc3QgUVVybCAmdXJsKQogICAgICAgICByZXR1cm4gV29y
a2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkp
OwogICAgIH0KIAotICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChhcmNGaWxl
LT51cmwoKSkubGVuZ3RoKCkpOworICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0
aChtX2FyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSk7CiAgICAgYXJjRGlyLnRydW5jYXRlKGFyY0Rp
ci5sYXN0SW5kZXhPZihESVJfU0VQQVJBVE9SKSk7CiAgICAgaWYgKGFyY0Rpci5yaWdodCgxKSAh
PSBESVJfU0VQQVJBVE9SKQogICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJBVE9S
OwogCi0gICAgaWYgKGRpckRpY3QuZmluZChhcmNEaXIpID09IGRpckRpY3QuZW5kKCkpIHsKKyAg
ICBpZiAobV9kaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBtX2RpckRpY3QuZW5kKCkpIHsKICAgICAg
ICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9UX0VOVEVSX0RJUkVDVE9SWSwg
Z2V0UGF0aCh1cmwpKTsKICAgICB9Ci0gICAgVURTRW50cnlMaXN0ICpkaXJMaXN0ID0gZGlyRGlj
dFthcmNEaXJdOworICAgIFVEU0VudHJ5TGlzdCAqZGlyTGlzdCA9IG1fZGlyRGljdFthcmNEaXJd
OwogICAgIHRvdGFsU2l6ZShkaXJMaXN0LT5zaXplKCkpOwogICAgIGxpc3RFbnRyaWVzKCpkaXJM
aXN0KTsKICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpwYXNzKCk7CkBAIC04NjQsNDAgKzg2NCw0
MCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6c2V0QXJjRmlsZShjb25z
dCBRVXJsICZ1cmwpCiAgICAgS1JERUJVRyh1cmwuZmlsZU5hbWUoKSk7CiAgICAgUVN0cmluZyBw
YXRoID0gZ2V0UGF0aCh1cmwpOwogICAgIHRpbWVfdCBjdXJyVGltZSA9IHRpbWUobnVsbHB0cik7
Ci0gICAgYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOwotICAgIG5ld0FyY2hpdmVVUkwgPSB0cnVlOwor
ICAgIG1fYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOworICAgIG1fbmV3QXJjaGl2ZVVSTCA9IHRydWU7
CiAgICAgLy8gaXMgdGhlIGZpbGUgYWxyZWFkeSBzZXQgPwotICAgIGlmIChhcmNGaWxlICYmIGdl
dFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPT0gcGF0aC5s
ZWZ0KGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkubGVu
Z3RoKCkpKSB7Ci0gICAgICAgIG5ld0FyY2hpdmVVUkwgPSBmYWxzZTsKKyAgICBpZiAobV9hcmNG
aWxlICYmIGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNo
KSA9PSBwYXRoLmxlZnQoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWls
aW5nU2xhc2gpLmxlbmd0aCgpKSkgeworICAgICAgICBtX25ld0FyY2hpdmVVUkwgPSBmYWxzZTsK
ICAgICAgICAgLy8gSGFzIGl0IGNoYW5nZWQgPwotICAgICAgICBLRmlsZUl0ZW0gKm5ld0FyY0Zp
bGUgPSBuZXcgS0ZpbGVJdGVtKGFyY0ZpbGUtPnVybCgpLCBRU3RyaW5nKCksIGFyY0ZpbGUtPm1v
ZGUoKSk7Ci0gICAgICAgIGlmIChtZXRhRGF0YSgiQ2hhcnNldCIpICE9IGN1cnJlbnRDaGFyc2V0
IHx8ICFuZXdBcmNGaWxlLT5jbXAoKmFyY0ZpbGUpKSB7Ci0gICAgICAgICAgICBjdXJyZW50Q2hh
cnNldCA9IG1ldGFEYXRhKCJDaGFyc2V0Iik7Ci0KLSAgICAgICAgICAgIGNvZGVjID0gUVRleHRD
b2RlYzo6Y29kZWNGb3JOYW1lKGN1cnJlbnRDaGFyc2V0LnRvTGF0aW4xKCkpOwotICAgICAgICAg
ICAgaWYgKGNvZGVjID09IG51bGxwdHIpCi0gICAgICAgICAgICAgICAgY29kZWMgPSBRVGV4dENv
ZGVjOjpjb2RlY0Zvck1pYig0IC8qIGxhdGluLTEgKi8pOwotCi0gICAgICAgICAgICBkZWxldGUg
YXJjRmlsZTsKLSAgICAgICAgICAgIHBhc3N3b3JkLmNsZWFyKCk7Ci0gICAgICAgICAgICBleHRB
cmNSZWFkeSA9IGZhbHNlOwotICAgICAgICAgICAgYXJjRmlsZSA9IG5ld0FyY0ZpbGU7CisgICAg
ICAgIEtGaWxlSXRlbSAqbmV3QXJjRmlsZSA9IG5ldyBLRmlsZUl0ZW0obV9hcmNGaWxlLT51cmwo
KSwgUVN0cmluZygpLCBtX2FyY0ZpbGUtPm1vZGUoKSk7CisgICAgICAgIGlmIChtZXRhRGF0YSgi
Q2hhcnNldCIpICE9IG1fY3VycmVudENoYXJzZXQgfHwgIW5ld0FyY0ZpbGUtPmNtcCgqbV9hcmNG
aWxlKSkgeworICAgICAgICAgICAgbV9jdXJyZW50Q2hhcnNldCA9IG1ldGFEYXRhKCJDaGFyc2V0
Iik7CisKKyAgICAgICAgICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUobV9j
dXJyZW50Q2hhcnNldC50b0xhdGluMSgpKTsKKyAgICAgICAgICAgIGlmIChtX2NvZGVjID09IG51
bGxwdHIpCisgICAgICAgICAgICAgICAgbV9jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTWli
KDQgLyogbGF0aW4tMSAqLyk7CisKKyAgICAgICAgICAgIGRlbGV0ZSBtX2FyY0ZpbGU7CisgICAg
ICAgICAgICBtX3Bhc3N3b3JkLmNsZWFyKCk7CisgICAgICAgICAgICBtX2V4dEFyY1JlYWR5ID0g
ZmFsc2U7CisgICAgICAgICAgICBtX2FyY0ZpbGUgPSBuZXdBcmNGaWxlOwogICAgICAgICB9IGVs
c2UgeyAvLyBzYW1lIG9sZCBmaWxlCiAgICAgICAgICAgICBkZWxldGUgbmV3QXJjRmlsZTsKLSAg
ICAgICAgICAgIGFyY2hpdmVDaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZW5jcnlw
dGVkICYmIHBhc3N3b3JkLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9hcmNoaXZlQ2hhbmdlZCA9
IGZhbHNlOworICAgICAgICAgICAgaWYgKG1fZW5jcnlwdGVkICYmIG1fcGFzc3dvcmQuaXNOdWxs
KCkpCiAgICAgICAgICAgICAgICAgKHZvaWQpaW5pdEFyY1BhcmFtZXRlcnMoKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7IC8vIGl0J3MgYSBuZXcgZmlsZS4uLgotICAgICAgICBleHRBcmNSZWFk
eSA9IGZhbHNlOworICAgICAgICBtX2V4dEFyY1JlYWR5ID0gZmFsc2U7CiAKICAgICAgICAgLy8g
bmV3IGFyY2hpdmUgZmlsZSBtZWFucyBuZXcgZGlyRGljdCwgdG9vCi0gICAgICAgIGRpckRpY3Qu
Y2xlYXIoKTsKKyAgICAgICAgbV9kaXJEaWN0LmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKGFyY0Zp
bGUpIHsKLSAgICAgICAgICAgIGRlbGV0ZSBhcmNGaWxlOwotICAgICAgICAgICAgcGFzc3dvcmQu
Y2xlYXIoKTsKLSAgICAgICAgICAgIGFyY0ZpbGUgPSBudWxscHRyOworICAgICAgICBpZiAobV9h
cmNGaWxlKSB7CisgICAgICAgICAgICBkZWxldGUgbV9hcmNGaWxlOworICAgICAgICAgICAgbV9w
YXNzd29yZC5jbGVhcigpOworICAgICAgICAgICAgbV9hcmNGaWxlID0gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgICAgICBRU3RyaW5nIG5ld1BhdGggPSBwYXRoOwogICAgICAgICBpZiAobmV3UGF0
aC5yaWdodCgxKSAhPSBESVJfU0VQQVJBVE9SKQpAQCAtOTA3LDE5ICs5MDcsMTkgQEAgS0lPOjpX
b3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnNldEFyY0ZpbGUoY29uc3QgUVVybCAmdXJs
KQogICAgICAgICAgICAgaWYgKHFmaS5leGlzdHMoKSAmJiAhcWZpLmlzRGlyKCkpIHsKICAgICAg
ICAgICAgICAgICBRVF9TVEFUQlVGIHN0YXRfcDsKICAgICAgICAgICAgICAgICBRVF9MU1RBVChu
ZXdQYXRoLmxlZnQocG9zKS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpLCAmc3RhdF9wKTsKLSAg
ICAgICAgICAgICAgICBhcmNGaWxlID0gbmV3IEtGaWxlSXRlbShRVXJsOjpmcm9tTG9jYWxGaWxl
KG5ld1BhdGgubGVmdChwb3MpKSwgUVN0cmluZygpLCBzdGF0X3Auc3RfbW9kZSk7CisgICAgICAg
ICAgICAgICAgbV9hcmNGaWxlID0gbmV3IEtGaWxlSXRlbShRVXJsOjpmcm9tTG9jYWxGaWxlKG5l
d1BhdGgubGVmdChwb3MpKSwgUVN0cmluZygpLCBzdGF0X3Auc3RfbW9kZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFhcmNG
aWxlKSB7CisgICAgICAgIGlmICghbV9hcmNGaWxlKSB7CiAgICAgICAgICAgICAvLyBLUkRFQlVH
KCJFUlJPUjogIiA8PCBwYXRoIDw8ICIgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEtJTzo6RVJSX0RPRVNfTk9UX0VYSVNULCB1cmwudG9T
dHJpbmcoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudENoYXJzZXQgPSBtZXRhRGF0YSgi
Q2hhcnNldCIpOworICAgICAgICBtX2N1cnJlbnRDaGFyc2V0ID0gbWV0YURhdGEoIkNoYXJzZXQi
KTsKIAotICAgICAgICBjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShjdXJyZW50Q2hh
cnNldC50b0xhdGluMSgpKTsKLSAgICAgICAgaWYgKGNvZGVjID09IG51bGxwdHIpCi0gICAgICAg
ICAgICBjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTWliKDQgLyogbGF0aW4tMSAqLyk7Cisg
ICAgICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUobV9jdXJyZW50Q2hhcnNl
dC50b0xhdGluMSgpKTsKKyAgICAgICAgaWYgKG1fY29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAg
ICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck1pYig0IC8qIGxhdGluLTEgKi8pOwog
ICAgIH0KIAogICAgIC8qIEZJWDogZmlsZSBjaGFuZ2UgY2FuIG9ubHkgYmUgZGV0ZWN0ZWQgaWYg
dGhlIHRpbWVzdGFtcCBiZXR3ZWVuIHRoZSB0d28gY29uc2VxdWVudApAQCAtOTI5LDI3ICs5Mjks
MjcgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnNldEFyY0ZpbGUoY29u
c3QgUVVybCAmdXJsKQogICAgICAgIGlmIHRoZSBtb2RpZmljYXRpb24gdGltZSBlcXVhbHMgd2l0
aCB0aGUgY3VycmVudCB0aW1lLiBXaGlsZSB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLAogICAgICAg
IHdlIGNhbiBzYXksIHRoYXQgdGhlIGFyY2hpdmUgaXMgY2hhbmdpbmcsIHNvIGNvbnRlbnQgcmVy
ZWFkIGlzIGFsd2F5cyBuZWNlc3NhcnkKICAgICAgICBkdXJpbmcgdGhhdCBwZXJpb2QuICovCi0g
ICAgaWYgKGFyY2hpdmVDaGFuZ2luZykKLSAgICAgICAgYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOwot
ICAgIGFyY2hpdmVDaGFuZ2luZyA9IChjdXJyVGltZSA9PSAodGltZV90KWFyY0ZpbGUtPnRpbWUo
S0ZpbGVJdGVtOjpNb2RpZmljYXRpb25UaW1lKS50b1NlY3NTaW5jZUVwb2NoKCkpOworICAgIGlm
IChtX2FyY2hpdmVDaGFuZ2luZykKKyAgICAgICAgbV9hcmNoaXZlQ2hhbmdlZCA9IHRydWU7Cisg
ICAgbV9hcmNoaXZlQ2hhbmdpbmcgPSAoY3VyclRpbWUgPT0gKHRpbWVfdCltX2FyY0ZpbGUtPnRp
bWUoS0ZpbGVJdGVtOjpNb2RpZmljYXRpb25UaW1lKS50b1NlY3NTaW5jZUVwb2NoKCkpOwogCi0g
ICAgYXJjUGF0aCA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdT
bGFzaCk7Ci0gICAgYXJjVHlwZSA9IGRldGVjdEFyY2hpdmUoZW5jcnlwdGVkLCBhcmNQYXRoKTsK
KyAgICBtX2FyY1BhdGggPSBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh
aWxpbmdTbGFzaCk7CisgICAgbV9hcmNUeXBlID0gZGV0ZWN0QXJjaGl2ZShtX2VuY3J5cHRlZCwg
bV9hcmNQYXRoKTsKIAotICAgIGlmIChhcmNUeXBlID09ICJ0YnoiKQotICAgICAgICBhcmNUeXBl
ID0gImJ6aXAyIjsKLSAgICBlbHNlIGlmIChhcmNUeXBlID09ICJ0Z3oiKQotICAgICAgICBhcmNU
eXBlID0gImd6aXAiOwotICAgIGVsc2UgaWYgKGFyY1R5cGUgPT0gInRseiIpCi0gICAgICAgIGFy
Y1R5cGUgPSAibHptYSI7Ci0gICAgZWxzZSBpZiAoYXJjVHlwZSA9PSAidHh6IikKLSAgICAgICAg
YXJjVHlwZSA9ICJ4eiI7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAidGJ6IikKKyAgICAgICAgbV9h
cmNUeXBlID0gImJ6aXAyIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInRneiIpCisgICAg
ICAgIG1fYXJjVHlwZSA9ICJnemlwIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInRseiIp
CisgICAgICAgIG1fYXJjVHlwZSA9ICJsem1hIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0g
InR4eiIpCisgICAgICAgIG1fYXJjVHlwZSA9ICJ4eiI7CiAKLSAgICBpZiAoYXJjVHlwZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYXJjVHlwZSA9IGFyY0ZpbGUtPm1pbWV0eXBlKCk7Ci0gICAgICAg
IGFyY1R5cGUgPSBnZXRTaG9ydFR5cGVGcm9tTWltZShhcmNUeXBlKTsKLSAgICAgICAgaWYgKGFy
Y1R5cGUgPT0gImphciIpCi0gICAgICAgICAgICBhcmNUeXBlID0gInppcCI7CisgICAgaWYgKG1f
YXJjVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9hcmNUeXBlID0gbV9hcmNGaWxlLT5taW1l
dHlwZSgpOworICAgICAgICBtX2FyY1R5cGUgPSBnZXRTaG9ydFR5cGVGcm9tTWltZShtX2FyY1R5
cGUpOworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJqYXIiKQorICAgICAgICAgICAgbV9hcmNU
eXBlID0gInppcCI7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRBcmNQYXJhbWV0ZXJzKCk7CkBA
IC05NjMsMTIgKzk2MywxMiBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChj
b25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIC8vIGlmKCAhc2V0QXJjRmlsZShnZXRQ
YXRoKHVybCkpICkgcmV0dXJuIGZhbHNlOwogICAgIC8vIG5vIG5lZWQgdG8gcmVzY2FuIHRoZSBh
cmNoaXZlIGlmIGl0J3Mgbm90IGNoYW5nZWQKICAgICAvLyBLUkRFQlVHKCJhY2hpdmVDaGFuZ2Vk
OiAiIDw8IGFyY2hpdmVDaGFuZ2VkIDw8ICIgZm9yY2VkOiAiIDw8IGZvcmNlZCk7Ci0gICAgaWYg
KCFhcmNoaXZlQ2hhbmdlZCAmJiAhZm9yY2VkKSB7CisgICAgaWYgKCFtX2FyY2hpdmVDaGFuZ2Vk
ICYmICFmb3JjZWQpIHsKICAgICAgICAgLy8gS1JERUJVRygiZG9pbmcgbm90aGluZy4iKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZXh0QXJjUmVhZHkgPSBmYWxzZTsKKyAg
ICBtX2V4dEFyY1JlYWR5ID0gZmFsc2U7CiAKICAgICBjb25zdCBhdXRvIHNldEFyY0ZpbGVSZXN1
bHQgPSBzZXRBcmNGaWxlKHVybCk7CiAgICAgaWYgKCFzZXRBcmNGaWxlUmVzdWx0LnN1Y2Nlc3Mo
KSkgeyAvKiBpZiB0aGUgYXJjaGl2ZSB3YXMgY2hhbmdlZCByZWZyZXNoIHRoZSBmaWxlIGluZm9y
bWF0aW9uICovCkBAIC05ODQsMTUgKzk4NCwxNSBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjpp
bml0RGlyRGljdChjb25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGFyY1R5cGUgIT0gImJ6aXAyIiAmJiBhcmNUeXBlICE9
ICJsem1hIiAmJiBhcmNUeXBlICE9ICJ4eiIpIHsKLSAgICAgICAgaWYgKGFyY1R5cGUgPT0gInJw
bSIpIHsKLSAgICAgICAgICAgIHByb2MgPDwgbGlzdENtZCA8PCBhcmNQYXRoOworICAgIGlmICht
X2FyY1R5cGUgIT0gImJ6aXAyIiAmJiBtX2FyY1R5cGUgIT0gImx6bWEiICYmIG1fYXJjVHlwZSAh
PSAieHoiKSB7CisgICAgICAgIGlmIChtX2FyY1R5cGUgPT0gInJwbSIpIHsKKyAgICAgICAgICAg
IHByb2MgPDwgbGlzdENtZCA8PCBtX2FyY1BhdGg7CiAgICAgICAgICAgICBwcm9jLnNldFN0YW5k
YXJkT3V0cHV0RmlsZSh0ZW1wLmZpbGVOYW1lKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcHJvYyA8PCBsaXN0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0
cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgICAgICBwcm9jIDw8IGxpc3RDbWQgPDwgZ2V0UGF0
aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpOwogICAgICAgICAg
ICAgcHJvYy5zZXRTdGFuZGFyZE91dHB1dEZpbGUodGVtcC5maWxlTmFtZSgpKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9wdG14IikuZXhp
c3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5nISEhCisgICAg
ICAgIGlmIChtX2FyY1R5cGUgPT0gImFjZSIgJiYgUUZpbGUoIi9kZXYvcHRteCIpLmV4aXN0cygp
KSAvLyBEb24ndCByZW1vdmUsIHVuYWNlIGNyYXNoZXMgaWYgbWlzc2luZyEhIQogICAgICAgICAg
ICAgcHJvYy5zZXRTdGFuZGFyZElucHV0RmlsZSgiL2Rldi9wdG14Iik7CiAKICAgICAgICAgcHJv
Yy5zZXRPdXRwdXRDaGFubmVsTW9kZShLUHJvY2Vzczo6U2VwYXJhdGVDaGFubmVscyk7IC8vIHdp
dGhvdXQgdGhpcyBvdXRwdXQgcmVkaXJlY3Rpb24gaGFzIG5vIGVmZmVjdApAQCAtMTAwMywxNCAr
MTAwMywxNCBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChjb25zdCBRVXJs
ICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIH0KICAgICAvLyBjbGVhciB0aGUgZGlyIGRpY3Rpb25h
cnkKIAotICAgIFFIYXNoSXRlcmF0b3I8UVN0cmluZywgS0lPOjpVRFNFbnRyeUxpc3QgKj4gbGl0
KGRpckRpY3QpOworICAgIFFIYXNoSXRlcmF0b3I8UVN0cmluZywgS0lPOjpVRFNFbnRyeUxpc3Qg
Kj4gbGl0KG1fZGlyRGljdCk7CiAgICAgd2hpbGUgKGxpdC5oYXNOZXh0KCkpCiAgICAgICAgIGRl
bGV0ZSBsaXQubmV4dCgpLnZhbHVlKCk7Ci0gICAgZGlyRGljdC5jbGVhcigpOworICAgIG1fZGly
RGljdC5jbGVhcigpOwogCiAgICAgLy8gYWRkIHRoZSAiLyIgZGlyZWN0b3J5CiAgICAgYXV0byAq
cm9vdCA9IG5ldyBVRFNFbnRyeUxpc3QoKTsKLSAgICBkaXJEaWN0Lmluc2VydChESVJfU0VQQVJB
VE9SLCByb290KTsKKyAgICBtX2RpckRpY3QuaW5zZXJ0KERJUl9TRVBBUkFUT1IsIHJvb3QpOwog
ICAgIC8vIGFuZCB0aGUgIi8iIFVEU0VudHJ5CiAgICAgVURTRW50cnkgZW50cnk7CiAgICAgZW50
cnkuZmFzdEluc2VydChLSU86OlVEU0VudHJ5OjpVRFNfTkFNRSwgIi4iKTsKQEAgLTEwMjAsNyAr
MTAyMCw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwg
JnVybCwgYm9vbCBmb3JjZWQpCiAKICAgICByb290LT5hcHBlbmQoZW50cnkpOwogCi0gICAgaWYg
KGFyY1R5cGUgPT0gImJ6aXAyIiB8fCBhcmNUeXBlID09ICJsem1hIiB8fCBhcmNUeXBlID09ICJ4
eiIpCisgICAgaWYgKG1fYXJjVHlwZSA9PSAiYnppcDIiIHx8IG1fYXJjVHlwZSA9PSAibHptYSIg
fHwgbV9hcmNUeXBlID09ICJ4eiIpCiAgICAgICAgIGFib3J0KCk7CiAKICAgICBjaGFyIGJ1Zlsx
MDAwXTsKQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXRE
aXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9vbCBmb3JjZWQpCiAgICAgaW50IGxpbmVObyA9IDA7
CiAgICAgYm9vbCBpbnZhbGlkTGluZSA9IGZhbHNlOwogICAgIC8vIHRoZSByYXIgbGlzdCBpcyBz
dGFydGVkIHdpdGggYSAtLS0tLS0gbGluZS4KLSAgICBpZiAoYXJjVHlwZSA9PSAicmFyIiB8fCBh
cmNUeXBlID09ICJhcmoiIHx8IGFyY1R5cGUgPT0gImxoYSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7
CisgICAgaWYgKG1fYXJjVHlwZSA9PSAicmFyIiB8fCBtX2FyY1R5cGUgPT0gImFyaiIgfHwgbV9h
cmNUeXBlID09ICJsaGEiIHx8IG1fYXJjVHlwZSA9PSAiN3oiKSB7CiAgICAgICAgIHdoaWxlICh0
ZW1wLnJlYWRMaW5lKGJ1ZiwgMTAwMCkgIT0gLTEpIHsKICAgICAgICAgICAgIGxpbmUgPSBkZWNv
ZGVTdHJpbmcoYnVmKTsKICAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoUUxhdGluMVN0
cmluZygiLS0tLS0tLS0tLSIpKSkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIGJvb2wga2lvX2tyYXJj
UHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9vbCBmb3JjZWQpCiAgICAg
fQogICAgIHdoaWxlICh0ZW1wLnJlYWRMaW5lKGJ1ZiwgMTAwMCkgIT0gLTEpIHsKICAgICAgICAg
bGluZSA9IGRlY29kZVN0cmluZyhidWYpOwotICAgICAgICBpZiAoYXJjVHlwZSA9PSAicmFyIikg
eworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJyYXIiKSB7CiAgICAgICAgICAgICAvLyB0aGUg
cmFyIGxpc3QgaXMgZW5kZWQgd2l0aCBhIC0tLS0tLSBsaW5lLgogICAgICAgICAgICAgaWYgKGxp
bmUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCItLS0tLS0tLS0tIikpKSB7CiAgICAgICAgICAg
ICAgICAgaW52YWxpZExpbmUgPSAhaW52YWxpZExpbmU7CkBAIC0xMDUxLDEyICsxMDUxLDEyIEBA
IGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9v
bCBmb3JjZWQpCiAgICAgICAgICAgICAgICAgICAgIGxpbmVbMF0gPSAnICc7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFyY1R5cGUgPT0gImFjZSIpIHsKKyAgICAgICAg
aWYgKG1fYXJjVHlwZSA9PSAiYWNlIikgewogICAgICAgICAgICAgLy8gdGhlIGFjZSBsaXN0IGJl
Z2lucyB3aXRoIGEgbnVtYmVyLgogICAgICAgICAgICAgaWYgKCFsaW5lWzBdLmlzRGlnaXQoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXJjVHlw
ZSA9PSAiYXJqIikgeworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAgICAgICAg
ICAgICAvLyB0aGUgYXJqIGxpc3QgaXMgZW5kZWQgd2l0aCBhIC0tLS0tLSBsaW5lLgogICAgICAg
ICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCItLS0tLS0tLS0tIikpKSB7
CiAgICAgICAgICAgICAgICAgaW52YWxpZExpbmUgPSAhaW52YWxpZExpbmU7CkBAIC0xMDczLDcg
KzEwNzMsNyBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChjb25zdCBRVXJs
ICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgZGVjb2Rl
U3RyaW5nKGJ1Zik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFyY1R5
cGUgPT0gImxoYSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7CisgICAgICAgIGlmIChtX2FyY1R5cGUg
PT0gImxoYSIgfHwgbV9hcmNUeXBlID09ICI3eiIpIHsKICAgICAgICAgICAgIC8vIHRoZSBhcmog
bGlzdCBpcyBlbmRlZCB3aXRoIGEgLS0tLS0tIGxpbmUuCiAgICAgICAgICAgICBpZiAobGluZS5z
dGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIi0tLS0tLS0tLS0iKSkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0
RGlyRGljdChjb25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIC8vIGNsb3NlIGFuZCBk
ZWxldGUgb3VyIGZpbGUKICAgICB0ZW1wLmNsb3NlKCk7CiAKLSAgICBhcmNoaXZlQ2hhbmdlZCA9
IGZhbHNlOworICAgIG1fYXJjaGl2ZUNoYW5nZWQgPSBmYWxzZTsKICAgICAvLyBLUkRFQlVHKCJk
b25lLiIpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgUVN0cmlu
ZyBraW9fa3JhcmNQcm90b2NvbDo6ZmluZEFyY0RpcmVjdG9yeShjb25zdCBRVXJsICZ1cmwpCiAg
ICAgaWYgKCFpbml0RGlyRGljdCh1cmwpKSB7CiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAg
ICAgfQotICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChhcmNGaWxlLT51cmwo
KSkubGVuZ3RoKCkpOworICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChtX2Fy
Y0ZpbGUtPnVybCgpKS5sZW5ndGgoKSk7CiAgICAgYXJjRGlyLnRydW5jYXRlKGFyY0Rpci5sYXN0
SW5kZXhPZihESVJfU0VQQVJBVE9SKSk7CiAgICAgaWYgKGFyY0Rpci5yaWdodCgxKSAhPSBESVJf
U0VQQVJBVE9SKQogICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJBVE9SOwpAQCAt
MTExNSwxMyArMTExNSwxMyBAQCBVRFNFbnRyeSAqa2lvX2tyYXJjUHJvdG9jb2w6OmZpbmRGaWxl
RW50cnkoY29uc3QgUVVybCAmdXJsKQogICAgIGlmIChhcmNEaXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0
ICo+OjppdGVyYXRvciBpdGVmID0gZGlyRGljdC5maW5kKGFyY0Rpcik7Ci0gICAgaWYgKGl0ZWYg
PT0gZGlyRGljdC5lbmQoKSkKKyAgICBRSGFzaDxRU3RyaW5nLCBLSU86OlVEU0VudHJ5TGlzdCAq
Pjo6aXRlcmF0b3IgaXRlZiA9IG1fZGlyRGljdC5maW5kKGFyY0Rpcik7CisgICAgaWYgKGl0ZWYg
PT0gbV9kaXJEaWN0LmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBVRFNFbnRy
eUxpc3QgKmRpckxpc3QgPSBpdGVmLnZhbHVlKCk7CiAKICAgICBRU3RyaW5nIG5hbWUgPSBnZXRQ
YXRoKHVybCk7Ci0gICAgaWYgKGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh
aWxpbmdTbGFzaCkgPT0gZ2V0UGF0aCh1cmwsIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkpCisg
ICAgaWYgKGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNo
KSA9PSBnZXRQYXRoKHVybCwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKSkKICAgICAgICAgbmFt
ZSA9ICcuJzsgLy8gdGhlICcvJyBjYXNlCiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChuYW1lLnJp
Z2h0KDEpID09IERJUl9TRVBBUkFUT1IpCkBAIC0xMTM4LDE0ICsxMTM4LDE0IEBAIFVEU0VudHJ5
ICpraW9fa3JhcmNQcm90b2NvbDo6ZmluZEZpbGVFbnRyeShjb25zdCBRVXJsICZ1cmwpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVFTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6Om5leHRXb3Jk
KFFTdHJpbmcgJnMsIGNoYXIgZCkKK1FTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6Om5leHRXb3Jk
KFFTdHJpbmcgJnNvdXJjZVN0cmluZywgY2hhciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8gTm90ZTog
S1JGVU5DIHdhcyBub3QgdXNlZCBoZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhlIGxv
ZyB3aXRoIHRvbyBtdWNoIGluZm9ybWF0aW9uCi0gICAgcyA9IHMudHJpbW1lZCgpOwotICAgIHFz
aXpldHlwZSBqID0gcy5pbmRleE9mKGQsIDApOwotICAgIFFTdHJpbmcgdGVtcCA9IHMubGVmdChq
KTsgLy8gZmluZCB0aGUgbGVmdG1vc3Qgd29yZC4KLSAgICBzLnJlbW92ZSgwLCBqKTsKLSAgICBy
ZXR1cm4gdGVtcDsKKyAgICBzb3VyY2VTdHJpbmcgPSBzb3VyY2VTdHJpbmcudHJpbW1lZCgpOwor
ICAgIHFzaXpldHlwZSBkZWxpbWl0ZXJJbmRleCA9IHNvdXJjZVN0cmluZy5pbmRleE9mKGRlbGlt
aXRlciwgMCk7CisgICAgUVN0cmluZyB0ZW1wU3RyaW5nID0gc291cmNlU3RyaW5nLmxlZnQoZGVs
aW1pdGVySW5kZXgpOyAvLyBmaW5kIHRoZSBsZWZ0bW9zdCB3b3JkLgorICAgIHNvdXJjZVN0cmlu
Zy5yZW1vdmUoMCwgZGVsaW1pdGVySW5kZXgpOworICAgIHJldHVybiB0ZW1wU3RyaW5nOwogfQog
CiBtb2RlX3Qga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNlUGVybVN0cmluZyhRU3RyaW5nIHBlcm0p
CkBAIC0xMTkzLDggKzExOTMsOCBAQCBVRFNFbnRyeUxpc3QgKmtpb19rcmFyY1Byb3RvY29sOjph
ZGROZXdEaXIoY29uc3QgUVN0cmluZyAmcGF0aCkKICAgICBVRFNFbnRyeUxpc3QgKmRpcjsKIAog
ICAgIC8vIGNoZWNrIGlmIHRoZSBjdXJyZW50IGRpciBleGlzdHMKLSAgICBRSGFzaDxRU3RyaW5n
LCBLSU86OlVEU0VudHJ5TGlzdCAqPjo6aXRlcmF0b3IgaXRlZiA9IGRpckRpY3QuZmluZChwYXRo
KTsKLSAgICBpZiAoaXRlZiAhPSBkaXJEaWN0LmVuZCgpKQorICAgIFFIYXNoPFFTdHJpbmcsIEtJ
Tzo6VURTRW50cnlMaXN0ICo+OjppdGVyYXRvciBpdGVmID0gbV9kaXJEaWN0LmZpbmQocGF0aCk7
CisgICAgaWYgKGl0ZWYgIT0gbV9kaXJEaWN0LmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlZi52
YWx1ZSgpOwogCiAgICAgLy8gc2V0IGRpciB0byB0aGUgcGFyZW50IGRpcgpAQCAtMTIxNywxMyAr
MTIxNywxMyBAQCBVRFNFbnRyeUxpc3QgKmtpb19rcmFyY1Byb3RvY29sOjphZGROZXdEaXIoY29u
c3QgUVN0cmluZyAmcGF0aCkKICAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURTRW50cnk6OlVE
U19GSUxFX1RZUEUsIG1vZGUgJiBTX0lGTVQpOyAvLyBrZWVwIGZpbGUgdHlwZSBvbmx5CiAgICAg
ZW50cnkuZmFzdEluc2VydChLSU86OlVEU0VudHJ5OjpVRFNfQUNDRVNTLCBtb2RlICYgMDc3Nzcp
OyAvLyBrZWVwIHBlcm1pc3Npb25zIG9ubHkKICAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURT
RW50cnk6OlVEU19TSVpFLCAwKTsKLSAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURTRW50cnk6
OlVEU19NT0RJRklDQVRJT05fVElNRSwgYXJjRmlsZS0+dGltZShLRmlsZUl0ZW06Ok1vZGlmaWNh
dGlvblRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKSk7CisgICAgZW50cnkuZmFzdEluc2VydChLSU86
OlVEU0VudHJ5OjpVRFNfTU9ESUZJQ0FUSU9OX1RJTUUsIG1fYXJjRmlsZS0+dGltZShLRmlsZUl0
ZW06Ok1vZGlmaWNhdGlvblRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKSk7CiAKICAgICBkaXItPmFw
cGVuZChlbnRyeSk7CiAKICAgICAvLyBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGVudHJ5IGFuZCBh
ZGQgaXQuLgogICAgIGRpciA9IG5ldyBVRFNFbnRyeUxpc3QoKTsKLSAgICBkaXJEaWN0Lmluc2Vy
dChwYXRoLCBkaXIpOworICAgIG1fZGlyRGljdC5pbnNlcnQocGF0aCwgZGlyKTsKIAogICAgIHJl
dHVybiBkaXI7CiB9CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29s
OjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgIHRpbWVfdCB0aW1lID0g
Ojp0aW1lKG51bGxwdHIpOwogICAgIFFTdHJpbmcgZnVsbE5hbWU7CiAKLSAgICBpZiAoYXJjVHlw
ZSA9PSAiemlwIikgeworICAgIGlmIChtX2FyY1R5cGUgPT0gInppcCIpIHsKICAgICAgICAgLy8g
cGVybWlzc2lvbnMKICAgICAgICAgcGVybSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBp
Z25vcmUgdGhlIG5leHQgMiBmaWVsZHMKQEAgLTEyNTUsOSArMTI1NSw5IEBAIHZvaWQga2lvX2ty
YXJjUHJvdG9jb2w6OnBhcnNlTGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxpbmUpCiAgICAgICAg
IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBuZXh0V29yZChsaW5lKTsKICAgICAgICAgLy8gZGF0
ZSAmIHRpbWUKLSAgICAgICAgUVN0cmluZyBkID0gbmV4dFdvcmQobGluZSk7Ci0gICAgICAgIFFE
YXRlIHFkYXRlKGQubWlkKDAsIDQpLnRvSW50KCksIGQubWlkKDQsIDIpLnRvSW50KCksIGQubWlk
KDYsIDIpLnRvSW50KCkpOwotICAgICAgICBRVGltZSBxdGltZShkLm1pZCg5LCAyKS50b0ludCgp
LCBkLm1pZCgxMSwgMikudG9JbnQoKSwgZC5taWQoMTMsIDIpLnRvSW50KCkpOworICAgICAgICBR
U3RyaW5nIGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAgICAgUURhdGUgcWRhdGUoZGF0
ZVN0ci5taWQoMCwgNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNCwgMikudG9JbnQoKSwgZGF0ZVN0
ci5taWQoNiwgMikudG9JbnQoKSk7CisgICAgICAgIFFUaW1lIHF0aW1lKGRhdGVTdHIubWlkKDks
IDIpLnRvSW50KCksIGRhdGVTdHIubWlkKDExLCAyKS50b0ludCgpLCBkYXRlU3RyLm1pZCgxMywg
MikudG9JbnQoKSk7CiAgICAgICAgIHRpbWUgPSBRRGF0ZVRpbWUocWRhdGUsIHF0aW1lKS50b1Nl
Y3NTaW5jZUVwb2NoKCk7CiAgICAgICAgIC8vIGZ1bGwgbmFtZQogICAgICAgICBmdWxsTmFtZSA9
IG5leHRXb3JkKGxpbmUsICdcbicpOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBraW9fa3Jh
cmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAg
ICAgIHBlcm0gPSAocGVybS5hdCgwKSA9PSAnZCcgfHwgZnVsbE5hbWUuZW5kc1dpdGgoRElSX1NF
UEFSQVRPUikpID8gImRyd3hyLXhyLXgiIDogIi1ydy1yLS1yLS0iOwogICAgICAgICBtb2RlID0g
cGFyc2VQZXJtU3RyaW5nKHBlcm0pOwogICAgIH0KLSAgICBpZiAoYXJjVHlwZSA9PSAicmFyIikg
eworICAgIGlmIChtX2FyY1R5cGUgPT0gInJhciIpIHsKICAgICAgICAgLy8gcGVybWlzc2lvbnMK
ICAgICAgICAgcGVybSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBzaXplCkBAIC0xMjc1
LDggKzEyNzUsOCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVO
bywgUVN0cmluZyBsaW5lKQogICAgICAgICBuZXh0V29yZChsaW5lKTsKICAgICAgICAgbmV4dFdv
cmQobGluZSk7CiAgICAgICAgIC8vIGRhdGUgJiB0aW1lCi0gICAgICAgIFFTdHJpbmcgZCA9IG5l
eHRXb3JkKGxpbmUpOwotICAgICAgICBRRGF0ZSBxZGF0ZShkLmxlZnQoNCkudG9JbnQoKSwgZC5t
aWQoNSwgMikudG9JbnQoKSwgZC5taWQoOCwgMikudG9JbnQoKSk7CisgICAgICAgIFFTdHJpbmcg
ZGF0ZVN0ciA9IG5leHRXb3JkKGxpbmUpOworICAgICAgICBRRGF0ZSBxZGF0ZShkYXRlU3RyLmxl
ZnQoNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNSwgMikudG9JbnQoKSwgZGF0ZVN0ci5taWQoOCwg
MikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJpbmcgdCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAg
ICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50b0ludCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAw
KTsKICAgICAgICAgdGltZSA9IFFEYXRlVGltZShxZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBv
Y2goKTsKQEAgLTEyOTksNyArMTI5OSw3IEBAIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNl
TGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxpbmUpCiAgICAgICAgICAgICBwZXJtID0gKHBlcm0u
YXQoMCkgPT0gJ2QnKSA/ICJkcnd4ci14ci14IiA6ICItcnctci0tci0tIjsKICAgICAgICAgbW9k
ZSA9IHBhcnNlUGVybVN0cmluZyhwZXJtKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImFy
aiIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAgICAgICAgIG5leHRXb3JkKGxp
bmUpOwogICAgICAgICAvLyBmdWxsIG5hbWUKICAgICAgICAgZnVsbE5hbWUgPSBuZXh0V29yZChs
aW5lLCAnXG4nKTsKQEAgLTEzMTIsMTEgKzEzMTIsMTEgQEAgdm9pZCBraW9fa3JhcmNQcm90b2Nv
bDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgbmV4dFdvcmQo
bGluZSk7CiAgICAgICAgIG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBkYXRlICYgdGltZQot
ICAgICAgICBRU3RyaW5nIGQgPSBuZXh0V29yZChsaW5lKTsKLSAgICAgICAgaW50IHllYXIgPSAx
OTAwICsgZC5taWQoMCwgMikudG9JbnQoKTsKKyAgICAgICAgUVN0cmluZyBkYXRlU3RyID0gbmV4
dFdvcmQobGluZSk7CisgICAgICAgIGludCB5ZWFyID0gMTkwMCArIGRhdGVTdHIubWlkKDAsIDIp
LnRvSW50KCk7CiAgICAgICAgIGlmICh5ZWFyIDwgMTkzMCkKICAgICAgICAgICAgIHllYXIgKz0g
MTAwOwotICAgICAgICBRRGF0ZSBxZGF0ZSh5ZWFyLCBkLm1pZCgzLCAyKS50b0ludCgpLCBkLm1p
ZCg2LCAyKS50b0ludCgpKTsKKyAgICAgICAgUURhdGUgcWRhdGUoeWVhciwgZGF0ZVN0ci5taWQo
MywgMikudG9JbnQoKSwgZGF0ZVN0ci5taWQoNiwgMikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJp
bmcgdCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50
b0ludCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAwKTsKICAgICAgICAgdGltZSA9IFFEYXRlVGlt
ZShxZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKTsKQEAgLTEzMjYsNyArMTMyNiw3IEBA
IHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNlTGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxp
bmUpCiAgICAgICAgICAgICBwZXJtID0gKHBlcm0uYXQoMCkgPT0gJ2QnKSA/ICJkcnd4ci14ci14
IiA6ICItcnctci0tci0tIjsKICAgICAgICAgbW9kZSA9IHBhcnNlUGVybVN0cmluZyhwZXJtKTsK
ICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gInJwbSIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09
ICJycG0iKSB7CiAgICAgICAgIC8vIGZ1bGwgbmFtZQogICAgICAgICBmdWxsTmFtZSA9IG5leHRX
b3JkKGxpbmUpOwogICAgICAgICAvLyBzaXplCkBAIC0xMzUxLDcgKzEzNTEsNyBAQCB2b2lkIGtp
b19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAg
ICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImd6aXAiKSB7CisgICAg
aWYgKG1fYXJjVHlwZSA9PSAiZ3ppcCIpIHsKICAgICAgICAgaWYgKCFsaW5lTm8pCiAgICAgICAg
ICAgICByZXR1cm47IC8vIGlnbm9yZSB0aGUgZmlyc3QgbGluZQogICAgICAgICAvLyBmaXJzdCBm
aWVsZCBpcyB1bmNvbXByZXNzZWQgc2l6ZSAtIGlnbm9yZSBpdApAQCAtMTM2NCwzMyArMTM2NCwz
MyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmlu
ZyBsaW5lKQogICAgICAgICBmdWxsTmFtZSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBmdWxs
TmFtZSA9IGZ1bGxOYW1lLm1pZChmdWxsTmFtZS5sYXN0SW5kZXhPZihESVJfU0VQQVJBVE9SKSAr
IDEpOwogICAgIH0KLSAgICBpZiAoYXJjVHlwZSA9PSAibHptYSIpIHsKLSAgICAgICAgZnVsbE5h
bWUgPSBhcmNGaWxlLT5uYW1lKCk7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAibHptYSIpIHsKKyAg
ICAgICAgZnVsbE5hbWUgPSBtX2FyY0ZpbGUtPm5hbWUoKTsKICAgICAgICAgaWYgKGZ1bGxOYW1l
LmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoImx6bWEiKSkpIHsKICAgICAgICAgICAgIGZ1bGxOYW1l
LnRydW5jYXRlKGZ1bGxOYW1lLmxlbmd0aCgpIC0gNSk7CiAgICAgICAgIH0KLSAgICAgICAgbW9k
ZSA9IGFyY0ZpbGUtPm1vZGUoKTsKLSAgICAgICAgc2l6ZSA9IGFyY0ZpbGUtPnNpemUoKTsKKyAg
ICAgICAgbW9kZSA9IG1fYXJjRmlsZS0+bW9kZSgpOworICAgICAgICBzaXplID0gbV9hcmNGaWxl
LT5zaXplKCk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJ4eiIpIHsKLSAgICAgICAgZnVs
bE5hbWUgPSBhcmNGaWxlLT5uYW1lKCk7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAieHoiKSB7Cisg
ICAgICAgIGZ1bGxOYW1lID0gbV9hcmNGaWxlLT5uYW1lKCk7CiAgICAgICAgIGlmIChmdWxsTmFt
ZS5lbmRzV2l0aChRTGF0aW4xU3RyaW5nKCJ4eiIpKSkgewogICAgICAgICAgICAgZnVsbE5hbWUu
dHJ1bmNhdGUoZnVsbE5hbWUubGVuZ3RoKCkgLSAzKTsKICAgICAgICAgfQotICAgICAgICBtb2Rl
ID0gYXJjRmlsZS0+bW9kZSgpOwotICAgICAgICBzaXplID0gYXJjRmlsZS0+c2l6ZSgpOworICAg
ICAgICBtb2RlID0gbV9hcmNGaWxlLT5tb2RlKCk7CisgICAgICAgIHNpemUgPSBtX2FyY0ZpbGUt
PnNpemUoKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImJ6aXAyIikgeworICAgIGlmICht
X2FyY1R5cGUgPT0gImJ6aXAyIikgewogICAgICAgICAvLyBUaGVyZSBpcyBubyB3YXkgdG8gbGlz
dCBiemlwMiBmaWxlcywgc28gd2UgdGFrZSBvdXIgaW5mb3JtYXRpb24gZnJvbQogICAgICAgICAv
LyB0aGUgYXJjaGl2ZSBpdHNlbGYuLi4KLSAgICAgICAgZnVsbE5hbWUgPSBhcmNGaWxlLT5uYW1l
KCk7CisgICAgICAgIGZ1bGxOYW1lID0gbV9hcmNGaWxlLT5uYW1lKCk7CiAgICAgICAgIGlmIChm
dWxsTmFtZS5lbmRzV2l0aChRTGF0aW4xU3RyaW5nKCJiejIiKSkpIHsKICAgICAgICAgICAgIGZ1
bGxOYW1lLnRydW5jYXRlKGZ1bGxOYW1lLmxlbmd0aCgpIC0gNCk7CiAgICAgICAgIH0KLSAgICAg
ICAgbW9kZSA9IGFyY0ZpbGUtPm1vZGUoKTsKLSAgICAgICAgc2l6ZSA9IGFyY0ZpbGUtPnNpemUo
KTsKKyAgICAgICAgbW9kZSA9IG1fYXJjRmlsZS0+bW9kZSgpOworICAgICAgICBzaXplID0gbV9h
cmNGaWxlLT5zaXplKCk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJsaGEiKSB7CisgICAg
aWYgKG1fYXJjVHlwZSA9PSAibGhhIikgewogICAgICAgICAvLyBwZXJtaXNzaW9ucwogICAgICAg
ICBwZXJtID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIGlmIChwZXJtLmxlbmd0aCgpICE9IDEw
KQpAQCAtMTQyMCwxMyArMTQyMCwxMyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxp
bmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgICAgICAvLyBmdWxsIG5hbWUKICAgICAg
ICAgZnVsbE5hbWUgPSBuZXh0V29yZChsaW5lLCAnXG4nKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5
cGUgPT0gImFjZSIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09ICJhY2UiKSB7CiAgICAgICAgIC8v
IGRhdGUgJiB0aW1lCi0gICAgICAgIFFTdHJpbmcgZCA9IG5leHRXb3JkKGxpbmUpOwotICAgICAg
ICBpbnQgeWVhciA9IDE5MDAgKyBkLm1pZCg2LCAyKS50b0ludCgpOworICAgICAgICBRU3RyaW5n
IGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAgICAgaW50IHllYXIgPSAxOTAwICsgZGF0
ZVN0ci5taWQoNiwgMikudG9JbnQoKTsKICAgICAgICAgaWYgKHllYXIgPCAxOTMwKQogICAgICAg
ICAgICAgeWVhciArPSAxMDA7Ci0gICAgICAgIFFEYXRlIHFkYXRlKHllYXIsIGQubWlkKDMsIDIp
LnRvSW50KCksIGQubWlkKDAsIDIpLnRvSW50KCkpOworICAgICAgICBRRGF0ZSBxZGF0ZSh5ZWFy
LCBkYXRlU3RyLm1pZCgzLCAyKS50b0ludCgpLCBkYXRlU3RyLm1pZCgwLCAyKS50b0ludCgpKTsK
ICAgICAgICAgUVN0cmluZyB0ID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIFFUaW1lIHF0aW1l
KHQubWlkKDAsIDIpLnRvSW50KCksIHQubWlkKDMsIDIpLnRvSW50KCksIDApOwogICAgICAgICB0
aW1lID0gUURhdGVUaW1lKHFkYXRlLCBxdGltZSkudG9TZWNzU2luY2VFcG9jaCgpOwpAQCAtMTQ0
MSw3ICsxNDQxLDcgQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5l
Tm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgaWYgKGZ1bGxOYW1lWzBdID09ICcqJykgLy8gZW5j
cnlwdGVkIGFyY2hpdmVzIHN0YXJ0cyB3aXRoICcqJwogICAgICAgICAgICAgZnVsbE5hbWUgPSBm
dWxsTmFtZS5taWQoMSk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJkZWIiKSB7CisgICAg
aWYgKG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICAvLyBwZXJtaXNzaW9ucwogICAgICAg
ICBwZXJtID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIG1vZGUgPSBwYXJzZVBlcm1TdHJpbmco
cGVybSk7CkBAIC0xNDUxLDggKzE0NTEsOCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJz
ZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgICAgICAvLyBzaXplCiAgICAgICAg
IHNpemUgPSBuZXh0V29yZChsaW5lKS50b0xvbmcoKTsKICAgICAgICAgLy8gZGF0ZSAmIHRpbWUK
LSAgICAgICAgUVN0cmluZyBkID0gbmV4dFdvcmQobGluZSk7Ci0gICAgICAgIFFEYXRlIHFkYXRl
KGQubWlkKDAsIDQpLnRvSW50KCksIGQubWlkKDUsIDIpLnRvSW50KCksIGQubWlkKDgsIDIpLnRv
SW50KCkpOworICAgICAgICBRU3RyaW5nIGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAg
ICAgUURhdGUgcWRhdGUoZGF0ZVN0ci5taWQoMCwgNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNSwg
MikudG9JbnQoKSwgZGF0ZVN0ci5taWQoOCwgMikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJpbmcg
dCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50b0lu
dCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAwKTsKICAgICAgICAgdGltZSA9IFFEYXRlVGltZShx
ZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKTsKQEAgLTE0NjQsMTAgKzE0NjQsMTAgQEAg
dm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGlu
ZSkKICAgICAgICAgICAgIGZ1bGxOYW1lID0gZnVsbE5hbWUubGVmdChmdWxsTmFtZS5pbmRleE9m
KCItPiIpIC0gMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gIjd6Iikg
eworICAgIGlmIChtX2FyY1R5cGUgPT0gIjd6IikgewogICAgICAgICAvLyBkYXRlICYgdGltZQot
ICAgICAgICBRU3RyaW5nIGQgPSBuZXh0V29yZChsaW5lKTsKLSAgICAgICAgUURhdGUgcWRhdGUo
ZC5taWQoMCwgNCkudG9JbnQoKSwgZC5taWQoNSwgMikudG9JbnQoKSwgZC5taWQoOCwgMikudG9J
bnQoKSk7CisgICAgICAgIFFTdHJpbmcgZGF0ZVN0ciA9IG5leHRXb3JkKGxpbmUpOworICAgICAg
ICBRRGF0ZSBxZGF0ZShkYXRlU3RyLm1pZCgwLCA0KS50b0ludCgpLCBkYXRlU3RyLm1pZCg1LCAy
KS50b0ludCgpLCBkYXRlU3RyLm1pZCg4LCAyKS50b0ludCgpKTsKICAgICAgICAgUVN0cmluZyB0
ID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIFFUaW1lIHF0aW1lKHQubWlkKDAsIDIpLnRvSW50
KCksIHQubWlkKDMsIDIpLnRvSW50KCksIHQubWlkKDYsIDIpLnRvSW50KCkpOwogICAgICAgICB0
aW1lID0gUURhdGVUaW1lKHFkYXRlLCBxdGltZSkudG9TZWNzU2luY2VFcG9jaCgpOwpAQCAtMTQ5
OCw4ICsxNDk4LDggQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5l
Tm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgZnVsbE5hbWUgPSBESVJfU0VQQVJBVE9SICsgZnVs
bE5hbWU7CiAgICAgUVN0cmluZyBwYXRoID0gZnVsbE5hbWUubGVmdChmdWxsTmFtZS5sYXN0SW5k
ZXhPZihESVJfU0VQQVJBVE9SKSArIDEpOwogICAgIC8vIHNldC9jcmVhdGUgdGhlIGRpcmVjdG9y
eSBVRFNFbnRyeUxpc3QKLSAgICBRSGFzaDxRU3RyaW5nLCBLSU86OlVEU0VudHJ5TGlzdCAqPjo6
aXRlcmF0b3IgaXRlZiA9IGRpckRpY3QuZmluZChwYXRoKTsKLSAgICBpZiAoaXRlZiA9PSBkaXJE
aWN0LmVuZCgpKQorICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0ICo+OjppdGVy
YXRvciBpdGVmID0gbV9kaXJEaWN0LmZpbmQocGF0aCk7CisgICAgaWYgKGl0ZWYgPT0gbV9kaXJE
aWN0LmVuZCgpKQogICAgICAgICBkaXIgPSBhZGROZXdEaXIocGF0aCk7CiAgICAgZWxzZQogICAg
ICAgICBkaXIgPSBpdGVmLnZhbHVlKCk7CkBAIC0xNTIxLDggKzE1MjEsOCBAQCB2b2lkIGtpb19r
cmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgIH0K
ICAgICBpZiAoU19JU0RJUihtb2RlKSkgewogICAgICAgICBmdWxsTmFtZSA9IGZ1bGxOYW1lICsg
RElSX1NFUEFSQVRPUjsKLSAgICAgICAgaWYgKGRpckRpY3QuZmluZChmdWxsTmFtZSkgPT0gZGly
RGljdC5lbmQoKSkKLSAgICAgICAgICAgIGRpckRpY3QuaW5zZXJ0KGZ1bGxOYW1lLCBuZXcgVURT
RW50cnlMaXN0KCkpOworICAgICAgICBpZiAobV9kaXJEaWN0LmZpbmQoZnVsbE5hbWUpID09IG1f
ZGlyRGljdC5lbmQoKSkKKyAgICAgICAgICAgIG1fZGlyRGljdC5pbnNlcnQoZnVsbE5hbWUsIG5l
dyBVRFNFbnRyeUxpc3QoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gdHJ5IHRv
IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBlbnRyeQogICAgICAgICAgICAgVURTRW50cnlMaXN0Ojpp
dGVyYXRvciBlbnRyeUl0OwpAQCAtMTU1MSw5ICsxNTUxLDkgQEAgdm9pZCBraW9fa3JhcmNQcm90
b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKIEtJTzo6V29ya2VyUmVz
dWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0QXJjUGFyYW1ldGVycygpCiB7CiAgICAgS1JGVU5D
OwotICAgIEtSREVCVUcoImFyY1R5cGU6ICIgPDwgYXJjVHlwZSk7CisgICAgS1JERUJVRygiYXJj
VHlwZTogIiA8PCBtX2FyY1R5cGUpOwogCi0gICAgbm9lbmNvZGluZyA9IGZhbHNlOworICAgIG1f
bm9lbmNvZGluZyA9IGZhbHNlOwogCiAgICAgY21kLmNsZWFyKCk7CiAgICAgbGlzdENtZCA9IFFT
dHJpbmdMaXN0KCk7CkBAIC0xNTYzLDggKzE1NjMsOCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9f
a3JhcmNQcm90b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgIHB1dENtZCA9IFFTdHJpbmdM
aXN0KCk7CiAgICAgcmVuQ21kID0gUVN0cmluZ0xpc3QoKTsKIAotICAgIGlmIChhcmNUeXBlID09
ICJ6aXAiKSB7Ci0gICAgICAgIG5vZW5jb2RpbmcgPSB0cnVlOworICAgIGlmIChtX2FyY1R5cGUg
PT0gInppcCIpIHsKKyAgICAgICAgbV9ub2VuY29kaW5nID0gdHJ1ZTsKICAgICAgICAgY21kID0g
ZnVsbFBhdGhOYW1lKCJ1bnppcCIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgi
dW56aXAiKSA8PCAiLVpUcy16LXQtaCI7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUo
InVuemlwIikgPDwgIi1wIjsKQEAgLTE1ODQsMTIgKzE1ODQsMTIgQEAgS0lPOjpXb3JrZXJSZXN1
bHQga2lvX2tyYXJjUHJvdG9jb2w6OmluaXRBcmNQYXJhbWV0ZXJzKCkKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghZ2V0UGFzc3dvcmQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGdldENt
ZCA8PCAiLVAiIDw8IHBhc3N3b3JkOwotICAgICAgICAgICAgY29weUNtZCA8PCAiLVAiIDw8IHBh
c3N3b3JkOwotICAgICAgICAgICAgcHV0Q21kIDw8ICItUCIgPDwgcGFzc3dvcmQ7CisgICAgICAg
ICAgICBnZXRDbWQgPDwgIi1QIiA8PCBtX3Bhc3N3b3JkOworICAgICAgICAgICAgY29weUNtZCA8
PCAiLVAiIDw8IG1fcGFzc3dvcmQ7CisgICAgICAgICAgICBwdXRDbWQgPDwgIi1QIiA8PCBtX3Bh
c3N3b3JkOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09ICJyYXIiKSB7Ci0g
ICAgICAgIG5vZW5jb2RpbmcgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJy
YXIiKSB7CisgICAgICAgIG1fbm9lbmNvZGluZyA9IHRydWU7CiAgICAgICAgIGlmIChRU3RhbmRh
cmRQYXRoczo6ZmluZEV4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoInJhciIpKS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgidW5yYXIiKTsKICAgICAgICAgICAg
IGxpc3RDbWQgPDwgZnVsbFBhdGhOYW1lKCJ1bnJhciIpIDw8ICItYy0iCkBAIC0xNjIxLDE1ICsx
NjIxLDE1IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0QXJjUGFy
YW1ldGVycygpCiAgICAgICAgICAgICAgICAgICAgPDwgImEiOwogICAgICAgICB9CiAgICAgICAg
IGlmICghZ2V0UGFzc3dvcmQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGdldENtZCA8PCBR
U3RyaW5nKCItcCUxIikuYXJnKHBhc3N3b3JkKTsKLSAgICAgICAgICAgIGxpc3RDbWQgPDwgUVN0
cmluZygiLXAlMSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJp
bmcoIi1wJTEiKS5hcmcocGFzc3dvcmQpOworICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmco
Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBsaXN0Q21kIDw8IFFTdHJpbmco
Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmco
Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CiAgICAgICAgICAgICBpZiAoIXB1dENtZC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICBwdXRDbWQgPDwgUVN0cmluZygiLXAlMSIpLmFyZyhwYXNz
d29yZCk7Ci0gICAgICAgICAgICAgICAgZGVsQ21kIDw8IFFTdHJpbmcoIi1wJTEiKS5hcmcocGFz
c3dvcmQpOworICAgICAgICAgICAgICAgIHB1dENtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1f
cGFzc3dvcmQpOworICAgICAgICAgICAgICAgIGRlbENtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJn
KG1fcGFzc3dvcmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChh
cmNUeXBlID09ICJycG0iKSB7CisgICAgfSBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInJwbSIpIHsK
ICAgICAgICAgY21kID0gZnVsbFBhdGhOYW1lKCJycG0iKTsKICAgICAgICAgbGlzdENtZCA8PCBm
dWxsUGF0aE5hbWUoInJwbSIpIDw8ICItLWR1bXAiCiAgICAgICAgICAgICAgICAgPDwgIi1scHEi
OwpAQCAtMTYzOSwzNSArMTYzOSwzNSBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90
b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlzdCgp
OwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBjb3B5Q21kID0gUVN0
cmluZ0xpc3QoKTsKLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImd6aXAiKSB7CisgICAgfSBl
bHNlIGlmIChtX2FyY1R5cGUgPT0gImd6aXAiKSB7CiAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFt
ZSgiZ3ppcCIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgiZ3ppcCIpIDw8ICIt
bCI7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUoImd6aXAiKSA8PCAiLWRjIjsKICAg
ICAgICAgY29weUNtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENtZCA9IFFTdHJpbmdM
aXN0KCk7CiAgICAgICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAgfSBlbHNlIGlmIChh
cmNUeXBlID09ICJiemlwMiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAiYnppcDIi
KSB7CiAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgiYnppcDIiKTsKICAgICAgICAgbGlzdENt
ZCA8PCBmdWxsUGF0aE5hbWUoImJ6aXAyIik7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5h
bWUoImJ6aXAyIikgPDwgIi1kYyI7CiAgICAgICAgIGNvcHlDbWQgPSBRU3RyaW5nTGlzdCgpOwog
ICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5n
TGlzdCgpOwotICAgIH0gZWxzZSBpZiAoYXJjVHlwZSA9PSAibHptYSIpIHsKKyAgICB9IGVsc2Ug
aWYgKG1fYXJjVHlwZSA9PSAibHptYSIpIHsKICAgICAgICAgY21kID0gZnVsbFBhdGhOYW1lKCJs
em1hIik7CiAgICAgICAgIGxpc3RDbWQgPDwgZnVsbFBhdGhOYW1lKCJsem1hIik7CiAgICAgICAg
IGdldENtZCA8PCBmdWxsUGF0aE5hbWUoImx6bWEiKSA8PCAiLWRjIjsKICAgICAgICAgY29weUNt
ZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAg
ICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09ICJ4
eiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAieHoiKSB7CiAgICAgICAgIGNtZCA9
IGZ1bGxQYXRoTmFtZSgieHoiKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUoInh6
Iik7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUoInh6IikgPDwgIi1kYyI7CiAgICAg
ICAgIGNvcHlDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlz
dCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoYXJj
VHlwZSA9PSAiYXJqIikgeworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAg
ICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgiYXJqIik7CiAgICAgICAgIGxpc3RDbWQgPDwgZnVs
bFBhdGhOYW1lKCJhcmoiKSA8PCAidiIKICAgICAgICAgICAgICAgICA8PCAiLXkiCkBAIC0xNjgy
LDE4ICsxNjgyLDE4IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0
QXJjUGFyYW1ldGVycygpCiAgICAgICAgIHB1dENtZCA8PCBmdWxsUGF0aE5hbWUoImFyaiIpIDw8
ICItciIKICAgICAgICAgICAgICAgIDw8ICJhIjsKICAgICAgICAgaWYgKCFnZXRQYXNzd29yZCgp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmcoIi1nJTEiKS5hcmco
cGFzc3dvcmQpOwotICAgICAgICAgICAgY29weUNtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKHBh
c3N3b3JkKTsKLSAgICAgICAgICAgIHB1dENtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKHBhc3N3
b3JkKTsKKyAgICAgICAgICAgIGdldENtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKG1fcGFzc3dv
cmQpOworICAgICAgICAgICAgY29weUNtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKG1fcGFzc3dv
cmQpOworICAgICAgICAgICAgcHV0Q21kIDw8IFFTdHJpbmcoIi1nJTEiKS5hcmcobV9wYXNzd29y
ZCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImxoYSIpIHsKKyAgICB9
IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAibGhhIikgewogICAgICAgICBjbWQgPSBmdWxsUGF0aE5h
bWUoImxoYSIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgibGhhIikgPDwgImwi
OwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJsaGEiKSA8PCAicHEiOwogICAgICAg
ICBjb3B5Q21kIDw8IGZ1bGxQYXRoTmFtZSgibGhhIikgPDwgImVpZiI7CiAgICAgICAgIGRlbENt
ZCA8PCBmdWxsUGF0aE5hbWUoImxoYSIpIDw8ICJkIjsKICAgICAgICAgcHV0Q21kIDw8IGZ1bGxQ
YXRoTmFtZSgibGhhIikgPDwgImEiOwotICAgIH0gZWxzZSBpZiAoYXJjVHlwZSA9PSAiYWNlIikg
eworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJhY2UiKSB7CiAgICAgICAgIGNtZCA9IGZ1
bGxQYXRoTmFtZSgidW5hY2UiKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUoInVu
YWNlIikgPDwgInYiOwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJ1bmFjZSIpIDw8
ICJlIgpAQCAtMTcwMywxOCArMTcwMywxOCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ
cm90b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlz
dCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBpZiAoIWdldFBh
c3N3b3JkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBnZXRDbWQgPDwgUVN0cmluZygiLXAl
MSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmcoIi1wJTEi
KS5hcmcocGFzc3dvcmQpOworICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5h
cmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5h
cmcobV9wYXNzd29yZCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImRl
YiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICBjbWQg
PSBmdWxsUGF0aE5hbWUoImRwa2ciKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUo
ImRwa2ciKSA8PCAiLWMiOwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJ0YXIiKSA8
PCAieHZmIjsKICAgICAgICAgY29weUNtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENt
ZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAg
fSBlbHNlIGlmIChhcmNUeXBlID09ICI3eiIpIHsKLSAgICAgICAgbm9lbmNvZGluZyA9IHRydWU7
CisgICAgfSBlbHNlIGlmIChtX2FyY1R5cGUgPT0gIjd6IikgeworICAgICAgICBtX25vZW5jb2Rp
bmcgPSB0cnVlOwogICAgICAgICBjbWQgPSBmaW5kN3pFeGVjdXRhYmxlKCk7CiAgICAgICAgIGlm
IChjbWQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWls
KEtJTzo6RVJSX0NBTk5PVF9MQVVOQ0hfUFJPQ0VTUywge30pOwpAQCAtMTczMiwxMiArMTczMiwx
MiBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6aW5pdEFyY1BhcmFtZXRl
cnMoKQogICAgICAgICAgICAgICAgPDwgIi15IjsKICAgICAgICAgcmVuQ21kIDw8IGNtZCA8PCAi
cm4iOwogICAgICAgICBpZiAoIWdldFBhc3N3b3JkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBnZXRDbWQgPDwgUVN0cmluZygiLXAlMSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBs
aXN0Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5hcmcocGFzc3dvcmQpOwotICAgICAgICAgICAgY29w
eUNtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKHBhc3N3b3JkKTsKKyAgICAgICAgICAgIGdldENt
ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOworICAgICAgICAgICAgbGlzdENt
ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOworICAgICAgICAgICAgY29weUNt
ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOwogICAgICAgICAgICAgaWYgKCFw
dXRDbWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcHV0Q21kIDw8IFFTdHJpbmcoIi1w
JTEiKS5hcmcocGFzc3dvcmQpOwotICAgICAgICAgICAgICAgIGRlbENtZCA8PCBRU3RyaW5nKCIt
cCUxIikuYXJnKHBhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICBwdXRDbWQgPDwgUVN0cmluZygi
LXAlMSIpLmFyZyhtX3Bhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICBkZWxDbWQgPDwgUVN0cmlu
ZygiLXAlMSIpLmFyZyhtX3Bhc3N3b3JkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTE3NjIsNyArMTc2Miw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrU3Rh
dHVzKGludCBleGl0Q29kZSkKIHsKICAgICBLUkZVTkM7CiAgICAgS1JERUJVRyhleGl0Q29kZSk7
Ci0gICAgcmV0dXJuIEtyQXJjQmFzZU1hbmFnZXI6OmNoZWNrU3RhdHVzKGFyY1R5cGUsIGV4aXRD
b2RlKTsKKyAgICByZXR1cm4gS3JBcmNCYXNlTWFuYWdlcjo6Y2hlY2tTdGF0dXMobV9hcmNUeXBl
LCBleGl0Q29kZSk7CiB9CiAKIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrSWY3eklzRW5j
cnlwdGVkKGJvb2wgJmVuY3J5cHRlZCwgUVN0cmluZyBmaWxlTmFtZSkKQEAgLTE3NzEsNyArMTc3
MSw3IEBAIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrSWY3eklzRW5jcnlwdGVkKGJvb2wg
JmVuY3J5cHRlZCwgUVN0cmluZyBmaWxlTmFtZSkKICAgICAvLyBjaGFuZ2VzIG11c3QgYWxzbyBi
ZSBhcHBsaWVkIHRvIGBLckFyY0hhbmRsZXI6OmNoZWNrSWY3eklzRW5jcnlwdGVkKClgCiAKICAg
ICBLUkZVTkM7Ci0gICAgaWYgKGVuY3J5cHRlZEFyY2hQYXRoID09IGZpbGVOYW1lKQorICAgIGlm
IChtX2VuY3J5cHRlZEFyY2hQYXRoID09IGZpbGVOYW1lKQogICAgICAgICBlbmNyeXB0ZWQgPSB0
cnVlOwogICAgIGVsc2UgeyAvLyB3ZSB0cnkgdG8gZmluZCB3aGV0aGVyIHRoZSA3eiBhcmNoaXZl
IGlzIGVuY3J5cHRlZAogICAgICAgICAvLyB0aGlzIGlzIGhhcmQgYXMgdGhlIGhlYWRlcnMgYXJl
IGFsc28gY29tcHJlc3NlZApAQCAtMTc4MCw3ICsxNzgwLDcgQEAgdm9pZCBraW9fa3JhcmNQcm90
b2NvbDo6Y2hlY2tJZjd6SXNFbmNyeXB0ZWQoYm9vbCAmZW5jcnlwdGVkLCBRU3RyaW5nIGZpbGVO
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbGFzdERhdGEg
PSBlbmNyeXB0ZWRBcmNoUGF0aCA9ICIiOworICAgICAgICBtX2xhc3REYXRhID0gbV9lbmNyeXB0
ZWRBcmNoUGF0aCA9ICIiOwogCiAgICAgICAgIEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwog
ICAgICAgICAvLyBOb3RlOiBUaGF0IGNvbW1hbmQgdXNlcyBpbmZvcm1hdGlvbiBnaXZlbiBpbiBh
IGNvbW1lbnQgZnJvbQpAQCAtMTc5MCwxMCArMTc5MCwxMCBAQCB2b2lkIGtpb19rcmFyY1Byb3Rv
Y29sOjpjaGVja0lmN3pJc0VuY3J5cHRlZChib29sICZlbmNyeXB0ZWQsIFFTdHJpbmcgZmlsZU5h
bWUpCiAgICAgICAgIGNvbm5lY3QoJnByb2MsICZLckxpbmVjb3VudGluZ1Byb2Nlc3M6Om5ld091
dHB1dERhdGEsIHRoaXMsICZraW9fa3JhcmNQcm90b2NvbDo6Y2hlY2s3ek91dHB1dEZvclBhc3N3
b3JkKTsKICAgICAgICAgcHJvYy5zdGFydCgpOwogICAgICAgICBwcm9jLndhaXRGb3JGaW5pc2hl
ZCgpOwotICAgICAgICBlbmNyeXB0ZWQgPSB0aGlzLT5lbmNyeXB0ZWQ7CisgICAgICAgIGVuY3J5
cHRlZCA9IHRoaXMtPm1fZW5jcnlwdGVkOwogCiAgICAgICAgIGlmIChlbmNyeXB0ZWQpCi0gICAg
ICAgICAgICBlbmNyeXB0ZWRBcmNoUGF0aCA9IGZpbGVOYW1lOworICAgICAgICAgICAgbV9lbmNy
eXB0ZWRBcmNoUGF0aCA9IGZpbGVOYW1lOwogICAgIH0KIH0KIApAQCAtMTgwNSwxMCArMTgwNSwx
MCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpjaGVjazd6T3V0cHV0Rm9yUGFzc3dvcmQoS1By
b2Nlc3MgKnByb2MsIFFCeXRlQXJyYXkgJmJ1ZgogICAgIEtSRlVOQzsKICAgICBRU3RyaW5nIGRh
dGEgPSBRU3RyaW5nKGJ1Zik7CiAKLSAgICBRU3RyaW5nIGNoZWNrYWJsZSA9IGxhc3REYXRhICsg
ZGF0YTsKKyAgICBRU3RyaW5nIGNoZWNrYWJsZSA9IG1fbGFzdERhdGEgKyBkYXRhOwogCiAgICAg
UVN0cmluZ0xpc3QgbGluZXMgPSBjaGVja2FibGUuc3BsaXQoJ1xuJyk7Ci0gICAgbGFzdERhdGEg
PSBsaW5lc1tsaW5lcy5jb3VudCgpIC0gMV07CisgICAgbV9sYXN0RGF0YSA9IGxpbmVzW2xpbmVz
LmNvdW50KCkgLSAxXTsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBsaW5lcy5jb3VudCgpOyBp
KyspIHsKICAgICAgICAgUVN0cmluZyBsaW5lID0gbGluZXNbaV0udHJpbW1lZCgpLnRvTG93ZXIo
KTsKICAgICAgICAgcXNpemV0eXBlIG5keCA9IGxpbmUuaW5kZXhPZigibGlzdGluZyIpOyAvLyBS
ZW1pbmRlcjogTG93ZXItY2FzZSBsZXR0ZXJzIGFyZSB1c2VkCkBAIC0xODE5LDcgKzE4MTksNyBA
QCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpjaGVjazd6T3V0cHV0Rm9yUGFzc3dvcmQoS1Byb2Nl
c3MgKnByb2MsIFFCeXRlQXJyYXkgJmJ1ZgogCiAgICAgICAgIGlmICgobGluZS5jb250YWlucygi
cGFzc3dvcmQiKSAmJiBsaW5lLmNvbnRhaW5zKCJlbnRlciIpKSB8fCBsaW5lID09IFFTdHJpbmdM
aXRlcmFsKCJlbmNyeXB0ZWQgPSArIikpIHsKICAgICAgICAgICAgIEtSREVCVUcoIkVuY3J5cHRl
ZCA3eiBhcmNoaXZlIGZvdW5kISIpOwotICAgICAgICAgICAgZW5jcnlwdGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIG1fZW5jcnlwdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHByb2MtPmtpbGwoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTgyOSw5ICsxODI5LDkgQEAgdm9p
ZCBraW9fa3JhcmNQcm90b2NvbDo6Y2hlY2s3ek91dHB1dEZvclBhc3N3b3JkKEtQcm9jZXNzICpw
cm9jLCBRQnl0ZUFycmF5ICZidWYKIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmludmFsaWRhdGVQ
YXNzd29yZCgpCiB7CiAgICAgS1JGVU5DOwotICAgIEtSREVCVUcoZ2V0UGF0aChhcmNGaWxlLT51
cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKSArIERJUl9TRVBBUkFUT1IpOworICAgIEtS
REVCVUcoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gp
ICsgRElSX1NFUEFSQVRPUik7CiAKLSAgICBpZiAoIWVuY3J5cHRlZCkKKyAgICBpZiAoIW1fZW5j
cnlwdGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBLSU86OkF1dGhJbmZvIGF1dGhJbmZvOwpA
QCAtMTg0MCwxMiArMTg0MCwxMiBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjppbnZhbGlkYXRl
UGFzc3dvcmQoKQogICAgIGF1dGhJbmZvLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICBhdXRoSW5mby5r
ZWVwUGFzc3dvcmQgPSB0cnVlOwogICAgIGF1dGhJbmZvLnZlcmlmeVBhdGggPSB0cnVlOwotICAg
IFFTdHJpbmcgZmlsZU5hbWUgPSBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRy
YWlsaW5nU2xhc2gpOworICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBnZXRQYXRoKG1fYXJjRmlsZS0+
dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CiAgICAgYXV0aEluZm8udXJsID0gUVVy
bDo6ZnJvbUxvY2FsRmlsZShST09UX0RJUik7CiAgICAgYXV0aEluZm8udXJsLnNldEhvc3QoZmls
ZU5hbWUgLyoucmVwbGFjZSgnLycsJ18nKSovKTsKICAgICBhdXRoSW5mby51cmwuc2V0U2NoZW1l
KCJrcmFyYyIpOwogCi0gICAgcGFzc3dvcmQuY2xlYXIoKTsKKyAgICBtX3Bhc3N3b3JkLmNsZWFy
KCk7CiAKICAgICBjYWNoZUF1dGhlbnRpY2F0aW9uKGF1dGhJbmZvKTsKIH0KQEAgLTE4NTMsMTIg
KzE4NTMsMTIgQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6aW52YWxpZGF0ZVBhc3N3b3JkKCkK
IFFTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6OmdldFBhc3N3b3JkKCkKIHsKICAgICBLUkZVTkM7
Ci0gICAgS1JERUJVRygiRW5jcnlwdGVkOiAiIDw8IGVuY3J5cHRlZCk7CisgICAgS1JERUJVRygi
RW5jcnlwdGVkOiAiIDw8IG1fZW5jcnlwdGVkKTsKIAotICAgIGlmICghcGFzc3dvcmQuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBwYXNzd29yZDsKLSAgICBpZiAoIWVuY3J5cHRlZCkKLSAgICAg
ICAgcmV0dXJuIChwYXNzd29yZCA9ICIiKTsKKyAgICBpZiAoIW1fcGFzc3dvcmQuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBtX3Bhc3N3b3JkOworICAgIGlmICghbV9lbmNyeXB0ZWQpCisgICAg
ICAgIHJldHVybiAobV9wYXNzd29yZCA9ICIiKTsKIAogICAgIEtJTzo6QXV0aEluZm8gYXV0aElu
Zm87CiAgICAgYXV0aEluZm8uY2FwdGlvbiA9IGkxOG4oIktyYXJjIFBhc3N3b3JkIERpYWxvZyIp
OwpAQCAtMTg2NiwxNCArMTg2NiwxNCBAQCBRU3RyaW5nIGtpb19rcmFyY1Byb3RvY29sOjpnZXRQ
YXNzd29yZCgpCiAgICAgYXV0aEluZm8ucmVhZE9ubHkgPSB0cnVlOwogICAgIGF1dGhJbmZvLmtl
ZXBQYXNzd29yZCA9IHRydWU7CiAgICAgYXV0aEluZm8udmVyaWZ5UGF0aCA9IHRydWU7Ci0gICAg
UVN0cmluZyBmaWxlTmFtZSA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh
aWxpbmdTbGFzaCk7CisgICAgUVN0cmluZyBmaWxlTmFtZSA9IGdldFBhdGgobV9hcmNGaWxlLT51
cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKTsKICAgICBhdXRoSW5mby51cmwgPSBRVXJs
Ojpmcm9tTG9jYWxGaWxlKFJPT1RfRElSKTsKICAgICBhdXRoSW5mby51cmwuc2V0SG9zdChmaWxl
TmFtZSAvKi5yZXBsYWNlKCcvJywnXycpKi8pOwogICAgIGF1dGhJbmZvLnVybC5zZXRTY2hlbWUo
ImtyYXJjIik7CiAKICAgICBpZiAoY2hlY2tDYWNoZWRBdXRoZW50aWNhdGlvbihhdXRoSW5mbykg
JiYgIWF1dGhJbmZvLnBhc3N3b3JkLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEtSREVCVUcoYXV0
aEluZm8ucGFzc3dvcmQpOwotICAgICAgICByZXR1cm4gKHBhc3N3b3JkID0gYXV0aEluZm8ucGFz
c3dvcmQpOworICAgICAgICByZXR1cm4gKG1fcGFzc3dvcmQgPSBhdXRoSW5mby5wYXNzd29yZCk7
CiAgICAgfQogCiAgICAgYXV0aEluZm8ucGFzc3dvcmQuY2xlYXIoKTsKQEAgLTE4ODEsMjIgKzE4
ODEsMjIgQEAgUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6Z2V0UGFzc3dvcmQoKQogICAgIGlu
dCBlcnJDb2RlID0gb3BlblBhc3N3b3JkRGlhbG9nKGF1dGhJbmZvLCBpMThuKCJBY2Nlc3Npbmcg
dGhlIGZpbGUgcmVxdWlyZXMgYSBwYXNzd29yZC4iKSk7CiAgICAgaWYgKCFlcnJDb2RlICYmICFh
dXRoSW5mby5wYXNzd29yZC5pc051bGwoKSkgewogICAgICAgICAvLyBLUkRFQlVHKGF1dGhJbmZv
LnBhc3N3b3JkKTsKLSAgICAgICAgcmV0dXJuIChwYXNzd29yZCA9IGF1dGhJbmZvLnBhc3N3b3Jk
KTsKKyAgICAgICAgcmV0dXJuIChtX3Bhc3N3b3JkID0gYXV0aEluZm8ucGFzc3dvcmQpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHBhc3N3b3JkLmNsZWFyKCk7CisgICAgICAgIG1fcGFzc3dvcmQu
Y2xlYXIoKTsKICAgICB9CiAKICAgICAvLyBLUkRFQlVHKHBhc3N3b3JkKTsKLSAgICByZXR1cm4g
cGFzc3dvcmQ7CisgICAgcmV0dXJuIG1fcGFzc3dvcmQ7CiB9CiAKIFFTdHJpbmcga2lvX2tyYXJj
UHJvdG9jb2w6OmxvY2FsZUVuY29kZWRTdHJpbmcoUVN0cmluZyBzdHIpCiB7CiAgICAgLy8gTm90
ZTogS1JGVU5DIHdhcyBub3QgdXNlZCBoZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhl
IGxvZyB3aXRoIHRvbyBtdWNoIGluZm9ybWF0aW9uCi0gICAgaWYgKG5vZW5jb2RpbmcpCisgICAg
aWYgKG1fbm9lbmNvZGluZykKICAgICAgICAgcmV0dXJuIHN0cjsKIAotICAgIFFCeXRlQXJyYXkg
YXJyYXkgPSBjb2RlYy0+ZnJvbVVuaWNvZGUoc3RyKTsKKyAgICBRQnl0ZUFycmF5IGFycmF5ID0g
bV9jb2RlYy0+ZnJvbVVuaWNvZGUoc3RyKTsKIAogICAgIC8vIGVuY29kaW5nIHRoZSBieXRlIGFy
cmF5IHRvIFFTdHJpbmcsIG1hcHBpbmcgMHgwMDAwLTB4MDBGRiB0byAweEUwMDAtMHhFMEZGCiAg
ICAgLy8gc2VlIEtyQXJjQ29kZWMgZm9yIG1vcmUgZXhwbGFuYXRpb24KQEAgLTE5MTQsMTcgKzE5
MTQsMTcgQEAgUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6bG9jYWxlRW5jb2RlZFN0cmluZyhR
U3RyaW5nIHN0cikKIFFCeXRlQXJyYXkga2lvX2tyYXJjUHJvdG9jb2w6OmVuY29kZVN0cmluZyhj
b25zdCBRU3RyaW5nICZzdHIpCiB7CiAgICAgLy8gTm90ZTogS1JGVU5DIHdhcyBub3QgdXNlZCBo
ZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhlIGxvZyB3aXRoIHRvbyBtdWNoIGluZm9y
bWF0aW9uCi0gICAgaWYgKG5vZW5jb2RpbmcpCisgICAgaWYgKG1fbm9lbmNvZGluZykKICAgICAg
ICAgcmV0dXJuIFFUZXh0Q29kZWM6OmNvZGVjRm9yTG9jYWxlKCktPmZyb21Vbmljb2RlKHN0cik7
Ci0gICAgcmV0dXJuIGNvZGVjLT5mcm9tVW5pY29kZShzdHIpOworICAgIHJldHVybiBtX2NvZGVj
LT5mcm9tVW5pY29kZShzdHIpOwogfQogCiBRU3RyaW5nIGtpb19rcmFyY1Byb3RvY29sOjpkZWNv
ZGVTdHJpbmcoY2hhciAqYnVmKQogewogICAgIC8vIE5vdGU6IEtSRlVOQyB3YXMgbm90IHVzZWQg
aGVyZSBpbiBvcmRlciB0byBhdm9pZCBmaWxsaW5nIHRoZSBsb2cgd2l0aCB0b28gbXVjaCBpbmZv
cm1hdGlvbgotICAgIGlmIChub2VuY29kaW5nKQorICAgIGlmIChtX25vZW5jb2RpbmcpCiAgICAg
ICAgIHJldHVybiBRVGV4dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpLT50b1VuaWNvZGUoYnVmKTsK
LSAgICByZXR1cm4gY29kZWMtPnRvVW5pY29kZShidWYpOworICAgIHJldHVybiBtX2NvZGVjLT50
b1VuaWNvZGUoYnVmKTsKIH0KIAogUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6Z2V0UGF0aChj
b25zdCBRVXJsICZ1cmwsIFFVcmw6OkZvcm1hdHRpbmdPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9wbHVnaW5zL2tyYXJjL2tyYXJjLmggYi9wbHVnaW5zL2tyYXJjL2tyYXJjLmgKaW5kZXgg
OTBiOGQxYTljLi41MjNmZDE1ZTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMva3JhcmMva3JhcmMuaAor
KysgYi9wbHVnaW5zL2tyYXJjL2tyYXJjLmgKQEAgLTg2LDI1ICs4NiwyNSBAQCBwcml2YXRlOgog
ICAgIEtJTzo6VURTRW50cnlMaXN0ICphZGROZXdEaXIoY29uc3QgUVN0cmluZyAmcGF0aCk7CiAg
ICAgUV9SRVFVSVJFRF9SRVNVTFQgS0lPOjpXb3JrZXJSZXN1bHQgY2hlY2tXcml0ZVN1cHBvcnQo
KTsKIAotICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0ICo+IGRpckRpY3Q7IC8v
PCB0aGUgZGlyZWN0b3JpZXMgZGF0YSBzdHJ1Y3R1cmUuCi0gICAgYm9vbCBlbmNyeXB0ZWQ7IC8v
PCB0ZWxscyB3aGV0aGVyIHRoZSBhcmNoaXZlIGlzIGVuY3J5cHRlZAotICAgIGJvb2wgYXJjaGl2
ZUNoYW5nZWQ7IC8vPCB0cnVlIGlmIHRoZSBhcmNoaXZlIHdhcyBjaGFuZ2VkLgotICAgIGJvb2wg
YXJjaGl2ZUNoYW5naW5nOyAvLzwgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBpcyBjdXJyZW50bHkgY2hh
bmdpbmcuCi0gICAgYm9vbCBuZXdBcmNoaXZlVVJMOyAvLzwgdHJ1ZSBpZiBuZXcgYXJjaGl2ZSB3
YXMgZW50ZXJlZCBmb3IgdGhlIHByb3RvY29sCi0gICAgYm9vbCBub2VuY29kaW5nOyAvLzwgN3og
ZmlsZXMgdXNlIFVURi0xNiwgc28gZW5jb2RpbmcgaXMgdW5uZWNlc3NhcnkKLSAgICBLSU86OmZp
bGVzaXplX3QgZGVjb21wcmVzc2VkTGVuOyAvLzwgdGhlIG51bWJlciBvZiB0aGUgZGVjb21wcmVz
c2VkIGJ5dGVzCi0gICAgS0ZpbGVJdGVtICphcmNGaWxlOyAvLzwgdGhlIGFyY2hpdmUgZmlsZSBp
dGVtLgotICAgIFFTdHJpbmcgYXJjUGF0aDsgLy88IHRoZSBhcmNoaXZlIGxvY2F0aW9uCi0gICAg
UVN0cmluZyBhcmNUZW1wRGlyOyAvLzwgdGhlIGN1cnJlbnRseSB1c2VkIHRlbXAgZGlyZWN0b3J5
LgotICAgIFFTdHJpbmcgYXJjVHlwZTsgLy88IHRoZSBhcmNoaXZlIHR5cGUuCi0gICAgYm9vbCBl
eHRBcmNSZWFkeTsgLy88IFVzZWQgZm9yIFJQTSAmIERFQiBmaWxlcy4KLSAgICBRU3RyaW5nIHBh
c3N3b3JkOyAvLzwgUGFzc3dvcmQgZm9yIHRoZSBhcmNoaXZlcwotCi0gICAgUVN0cmluZyBsYXN0
RGF0YTsKLSAgICBRU3RyaW5nIGVuY3J5cHRlZEFyY2hQYXRoOwotCi0gICAgUVN0cmluZyBjdXJy
ZW50Q2hhcnNldDsKLSAgICBRVGV4dENvZGVjICpjb2RlYzsKKyAgICBRSGFzaDxRU3RyaW5nLCBL
SU86OlVEU0VudHJ5TGlzdCAqPiBtX2RpckRpY3Q7IC8vPCB0aGUgZGlyZWN0b3JpZXMgZGF0YSBz
dHJ1Y3R1cmUuCisgICAgYm9vbCBtX2VuY3J5cHRlZDsgLy88IHRlbGxzIHdoZXRoZXIgdGhlIGFy
Y2hpdmUgaXMgZW5jcnlwdGVkCisgICAgYm9vbCBtX2FyY2hpdmVDaGFuZ2VkOyAvLzwgdHJ1ZSBp
ZiB0aGUgYXJjaGl2ZSB3YXMgY2hhbmdlZC4KKyAgICBib29sIG1fYXJjaGl2ZUNoYW5naW5nOyAv
LzwgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBpcyBjdXJyZW50bHkgY2hhbmdpbmcuCisgICAgYm9vbCBt
X25ld0FyY2hpdmVVUkw7IC8vPCB0cnVlIGlmIG5ldyBhcmNoaXZlIHdhcyBlbnRlcmVkIGZvciB0
aGUgcHJvdG9jb2wKKyAgICBib29sIG1fbm9lbmNvZGluZzsgLy88IDd6IGZpbGVzIHVzZSBVVEYt
MTYsIHNvIGVuY29kaW5nIGlzIHVubmVjZXNzYXJ5CisgICAgS0lPOjpmaWxlc2l6ZV90IG1fZGVj
b21wcmVzc2VkTGVuOyAvLzwgdGhlIG51bWJlciBvZiB0aGUgZGVjb21wcmVzc2VkIGJ5dGVzCisg
ICAgS0ZpbGVJdGVtICptX2FyY0ZpbGU7IC8vPCB0aGUgYXJjaGl2ZSBmaWxlIGl0ZW0uCisgICAg
UVN0cmluZyBtX2FyY1BhdGg7IC8vPCB0aGUgYXJjaGl2ZSBsb2NhdGlvbgorICAgIFFTdHJpbmcg
bV9hcmNUZW1wRGlyOyAvLzwgdGhlIGN1cnJlbnRseSB1c2VkIHRlbXAgZGlyZWN0b3J5LgorICAg
IFFTdHJpbmcgbV9hcmNUeXBlOyAvLzwgdGhlIGFyY2hpdmUgdHlwZS4KKyAgICBib29sIG1fZXh0
QXJjUmVhZHk7IC8vPCBVc2VkIGZvciBSUE0gJiBERUIgZmlsZXMuCisgICAgUVN0cmluZyBtX3Bh
c3N3b3JkOyAvLzwgUGFzc3dvcmQgZm9yIHRoZSBhcmNoaXZlcworCisgICAgUVN0cmluZyBtX2xh
c3REYXRhOworICAgIFFTdHJpbmcgbV9lbmNyeXB0ZWRBcmNoUGF0aDsKKworICAgIFFTdHJpbmcg
bV9jdXJyZW50Q2hhcnNldDsKKyAgICBRVGV4dENvZGVjICptX2NvZGVjOwogfTsKIAogI2lmZGVm
IFFfT1NfV0lOCg==