[3.12] gh-90949: expose Expat API to tune exponential expansion protections (GH-139368) (#151401)

Yhg1s <[email protected]> Tue, 04 Aug 2026 05:26:24 -0400 (EDT)
Newsgroups gmane.comp.python.cvs
Message-ID <[email protected]>
aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC9kYjE5NWUzOGE0OTljODM3
YjNlYTJjZjBhYTFjOTM4M2U3NmRkYzgwDQpjb21taXQ6IGRiMTk1ZTM4YTQ5OWM4MzdiM2VhMmNm
MGFhMWM5MzgzZTc2ZGRjODANCmJyYW5jaDogMy4xMg0KYXV0aG9yOiBTdGFuIFVsYnJ5Y2ggPHN0
YW5AcHl0aG9uLm9yZz4NCmNvbW1pdHRlcjogWWhnMXMgPHRob21hc0BweXRob24ub3JnPg0KZGF0
ZTogMjAyNi0wOC0wNFQxMToyMzo1MSswMjowMA0Kc3VtbWFyeToNCg0KWzMuMTJdIGdoLTkwOTQ5
OiBleHBvc2UgRXhwYXQgQVBJIHRvIHR1bmUgZXhwb25lbnRpYWwgZXhwYW5zaW9uIHByb3RlY3Rp
b25zIChHSC0xMzkzNjgpICgjMTUxNDAxKQ0KDQpFeHBvc2UgdGhlIFhNTCBFeHBhdCAyLjcuMiBB
UElzIHRvIHR1bmUgcHJvdGVjdGlvbnMgYWdhaW5zdA0KImJpbGxpb24gbGF1Z2hzIiBbMV0gYXR0
YWNrcy4NCg0KVGhlIGV4cG9zZWQgQVBJcyBhcmUgYXZhaWxhYmxlIG9uIEV4cGF0IHBhcnNlcnMs
IHRoYXQgaXMsDQpwYXJzZXJzIGNyZWF0ZWQgYnkgYHhtbC5wYXJzZXJzLmV4cGF0LlBhcnNlckNy
ZWF0ZSgpYCwgYXM6DQoNCi0gYHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlv
bkFjdGl2YXRpb25UaHJlc2hvbGQodGhyZXNob2xkKWAsIGFuZA0KLSBgcGFyc2VyLlNldEJpbGxp
b25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24obWF4X2ZhY3Rvcilg
Lg0KDQpUaGlzIGNvbXBsZXRlcyB0aGUgd29yayBpbiBmMDRiZWE0NGMzNzc5MzU2MWQ3NTNkZDRj
YTZlN2NkNjU4MTM3NTUzLA0KYW5kIGltcHJvdmVzIHRoZSBleGlzdGluZyByZWxhdGVkIGRvY3Vt
ZW50YXRpb24uDQoNClsxXTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbGlvbl9s
YXVnaHNfYXR0YWNrDQooY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA2NjYxMTIzNzZkNTc0Yzc4
MDI2NDZlZTFkZjYyNDQwNjI2NzFjZDYxKQ0KKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTli
YzM5MTI3ZTVjOTE2YzQyYzU0NDg3YTFhZTY4YmU3NjU4MmY1MCkNCg0KQ28tYXV0aG9yZWQtYnk6
IELDqW7DqWRpa3QgVHJhbiA8MTA3OTY2MDArcGljbml4ekB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j
b20+DQoNCmZpbGVzOg0KQSBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyNS0wOS0yNi0xOC0w
NC0yOC5naC1pc3N1ZS05MDk0OS5ZSGpTelgucnN0DQpNIERvYy9saWJyYXJ5L3B5ZXhwYXQucnN0
DQpNIEluY2x1ZGUvcHlleHBhdC5oDQpNIExpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQ0KTSBNb2R1
bGVzL2NsaW5pYy9weWV4cGF0LmMuaA0KTSBNb2R1bGVzL3B5ZXhwYXQuYw0KDQpkaWZmIC0tZ2l0
IGEvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QgYi9Eb2MvbGlicmFyeS9weWV4cGF0LnJzdA0KaW5k
ZXggYzgwNmEyMWFlZWE2ZjhlLi40MmYxZWM3ZTEwZjFjNmIgMTAwNjQ0DQotLS0gYS9Eb2MvbGli
cmFyeS9weWV4cGF0LnJzdA0KKysrIGIvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QNCkBAIC0yMzks
MTYgKzIzOSw3MSBAQCBYTUxQYXJzZXIgT2JqZWN0cw0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMu
MTIuMw0KIA0KIA0KLTpjbGFzczpgIXhtbHBhcnNlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dp
bmcgbWV0aG9kcyB0byBtaXRpZ2F0ZSBzb21lDQotY29tbW9uIFhNTCB2dWxuZXJhYmlsaXRpZXMu
DQorOmNsYXNzOmAheG1scGFyc2VyYCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2Rz
IHRvIHR1bmUgcHJvdGVjdGlvbnMNCithZ2FpbnN0IHNvbWUgY29tbW9uIFhNTCB2dWxuZXJhYmls
aXRpZXMuDQorDQorLi4gbWV0aG9kOjogeG1scGFyc2VyLlNldEJpbGxpb25MYXVnaHNBdHRhY2tQ
cm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQsIC8pDQorDQorICAgU2V0cyB0
aGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVjdGlvbiBh
Z2FpbnN0DQorICAgYGJpbGxpb24gbGF1Z2hzYF8gYXR0YWNrcy4NCisNCisgICBUaGUgbnVtYmVy
IG9mIG91dHB1dCBieXRlcyBpbmNsdWRlcyBhbXBsaWZpY2F0aW9uIGZyb20gZW50aXR5IGV4cGFu
c2lvbg0KKyAgIGFuZCByZWFkaW5nIERURCBmaWxlcy4NCisNCisgICBQYXJzZXIgb2JqZWN0cyB1
c3VhbGx5IGhhdmUgYSBwcm90ZWN0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDggTWlCLA0K
KyAgIGJ1dCB0aGUgYWN0dWFsIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWlu
ZyBFeHBhdCBsaWJyYXJ5Lg0KKw0KKyAgIEFuIDpleGM6YEV4cGF0RXJyb3JgIGlzIHJhaXNlZCBp
ZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gYQ0KKyAgIHx4bWwtbm9uLXJvb3QtcGFyc2VyfCBw
YXJzZXIuDQorICAgVGhlIGNvcnJlc3BvbmRpbmcgOmF0dHI6YH5FeHBhdEVycm9yLmxpbmVub2Ag
YW5kIDphdHRyOmB+RXhwYXRFcnJvci5vZmZzZXRgDQorICAgc2hvdWxkIG5vdCBiZSB1c2VkIGFz
IHRoZXkgbWF5IGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nLg0KKw0KKyAgIC4uIG5vdGU6Og0KKw0K
KyAgICAgIEFjdGl2YXRpb24gdGhyZXNob2xkcyBiZWxvdyA0IE1pQiBhcmUga25vd24gdG8gYnJl
YWsgc3VwcG9ydCBmb3IgRElUQSAxLjMNCisgICAgICBwYXlsb2FkIGFuZCBhcmUgaGVuY2Ugbm90
IHJlY29tbWVuZGVkLg0KKw0KKyAgIC4uIHZlcnNpb25hZGRlZDo6IG5leHQNCisNCisuLiBtZXRo
b2Q6OiB4bWxwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1w
bGlmaWNhdGlvbihtYXhfZmFjdG9yLCAvKQ0KKw0KKyAgIFNldHMgdGhlIG1heGltdW0gdG9sZXJh
dGVkIGFtcGxpZmljYXRpb24gZmFjdG9yIGZvciBwcm90ZWN0aW9uIGFnYWluc3QNCisgICBgYmls
bGlvbiBsYXVnaHNgXyBhdHRhY2tzLg0KKw0KKyAgIFRoZSBhbXBsaWZpY2F0aW9uIGZhY3RvciBp
cyBjYWxjdWxhdGVkIGFzIGBgKGRpcmVjdCArIGluZGlyZWN0KSAvIGRpcmVjdGBgDQorICAgd2hp
bGUgcGFyc2luZywgd2hlcmUgYGBkaXJlY3RgYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQg
ZnJvbQ0KKyAgIHRoZSBwcmltYXJ5IGRvY3VtZW50IGluIHBhcnNpbmcgYW5kIGBgaW5kaXJlY3Rg
YCBpcyB0aGUgbnVtYmVyIG9mDQorICAgYnl0ZXMgYWRkZWQgYnkgZXhwYW5kaW5nIGVudGl0aWVz
IGFuZCByZWFkaW5nIG9mIGV4dGVybmFsIERURCBmaWxlcy4NCisNCisgICBUaGUgKm1heF9mYWN0
b3IqIHZhbHVlIG11c3QgYmUgYSBub24tTmFOIDpjbGFzczpgZmxvYXRgIHZhbHVlIGdyZWF0ZXIg
dGhhbg0KKyAgIG9yIGVxdWFsIHRvIDEuMC4gUGVhayBhbXBsaWZpY2F0aW9ucyBvZiBmYWN0b3Ig
MTUsMDAwIGZvciB0aGUgZW50aXJlIHBheWxvYWQNCisgICBhbmQgb2YgZmFjdG9yIDMwLDAwMCBp
biB0aGUgbWlkZGxlIG9mIHBhcnNpbmcgaGF2ZSBiZWVuIG9ic2VydmVkIHdpdGggc21hbGwNCisg
ICBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsIHRoZSBhY3RpdmF0aW9u
IHRocmVzaG9sZCBzaG91bGQgYmUNCisgICBjYXJlZnVsbHkgY2hvc2VuIHRvIGF2b2lkIGZhbHNl
IHBvc2l0aXZlcy4NCisNCisgICBQYXJzZXIgb2JqZWN0cyB1c3VhbGx5IGhhdmUgYSBtYXhpbXVt
IGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMCwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0
IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGlicmFyeS4NCisNCisgICBB
biA6ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9u
IGENCisgICB8eG1sLW5vbi1yb290LXBhcnNlcnwgcGFyc2VyIG9yIGlmICptYXhfZmFjdG9yKiBp
cyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4NCisgICBUaGUgY29ycmVzcG9uZGluZyA6YXR0cjpg
fkV4cGF0RXJyb3IubGluZW5vYCBhbmQgOmF0dHI6YH5FeHBhdEVycm9yLm9mZnNldGANCisgICBz
aG91bGQgbm90IGJlIHVzZWQgYXMgdGhleSBtYXkgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmcuDQor
DQorICAgLi4gbm90ZTo6DQorDQorICAgICAgVGhlIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0
b3IgaXMgb25seSBjb25zaWRlcmVkIGlmIHRoZSB0aHJlc2hvbGQNCisgICAgICB0aGF0IGNhbiBi
ZSBhZGp1c3RlZCBieSA6bWV0aDpgLlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0
aXZhdGlvblRocmVzaG9sZGANCisgICAgICBpcyBleGNlZWRlZC4NCisNCisgICAuLiB2ZXJzaW9u
YWRkZWQ6OiBuZXh0DQogDQogLi4gbWV0aG9kOjogeG1scGFyc2VyLlNldEFsbG9jVHJhY2tlckFj
dGl2YXRpb25UaHJlc2hvbGQodGhyZXNob2xkLCAvKQ0KIA0KICAgIFNldHMgdGhlIG51bWJlciBv
ZiBhbGxvY2F0ZWQgYnl0ZXMgb2YgZHluYW1pYyBtZW1vcnkgbmVlZGVkIHRvIGFjdGl2YXRlDQog
ICAgcHJvdGVjdGlvbiBhZ2FpbnN0IGRpc3Byb3BvcnRpb25hdGUgdXNlIG9mIFJBTS4NCiANCi0g
ICBCeSBkZWZhdWx0LCBwYXJzZXIgb2JqZWN0cyBoYXZlIGFuIGFsbG9jYXRpb24gYWN0aXZhdGlv
biB0aHJlc2hvbGQgb2YgNjQgTWlCLA0KLSAgIG9yIGVxdWl2YWxlbnRseSA2NywxMDgsODY0IGJ5
dGVzLg0KKyAgIFBhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2ZSBhbiBhbGxvY2F0aW9uIGFjdGl2
YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQiwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZh
bHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGlicmFyeS4NCiANCiAgICBBbiA6
ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIGEN
CiAgICB8eG1sLW5vbi1yb290LXBhcnNlcnwgcGFyc2VyLg0KQEAgLTI3Miw3ICszMjcsOCBAQCBj
b21tb24gWE1MIHZ1bG5lcmFiaWxpdGllcy4NCiAgICBuZWFyIHRoZSBzdGFydCBvZiBwYXJzaW5n
IGV2ZW4gd2l0aCBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsDQogICAg
dGhlIGFjdGl2YXRpb24gdGhyZXNob2xkIHNob3VsZCBiZSBjYXJlZnVsbHkgY2hvc2VuIHRvIGF2
b2lkIGZhbHNlIHBvc2l0aXZlcy4NCiANCi0gICBCeSBkZWZhdWx0LCBwYXJzZXIgb2JqZWN0cyBo
YXZlIGEgbWF4aW11bSBhbXBsaWZpY2F0aW9uIGZhY3RvciBvZiAxMDAuMC4NCisgICBQYXJzZXIg
b2JqZWN0cyB1c3VhbGx5IGhhdmUgYSBtYXhpbXVtIGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEw
MCwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVy
bHlpbmcgRXhwYXQgbGlicmFyeS4NCiANCiAgICBBbiA6ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlz
ZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIGENCiAgICB8eG1sLW5vbi1yb290LXBhcnNl
cnwgcGFyc2VyIG9yIGlmICptYXhfZmFjdG9yKiBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4N
CkBAIC0xMDA0LDQgKzEwNjAsNiBAQCBUaGUgYGBlcnJvcnNgYCBtb2R1bGUgaGFzIHRoZSBmb2xs
b3dpbmcgYXR0cmlidXRlczoNCiAgICBub3QuIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAw
Ni9SRUMteG1sMTEtMjAwNjA4MTYvI05ULUVuY29kaW5nRGVjbA0KICAgIGFuZCBodHRwczovL3d3
dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cy9jaGFyYWN0ZXItc2V0cy54aHRt
bC4NCiANCisNCisuLiBfYmlsbGlvbiBsYXVnaHM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL0JpbGxpb25fbGF1Z2hzX2F0dGFjaw0KIC4uIHx4bWwtbm9uLXJvb3QtcGFyc2VyfCByZXBs
YWNlOjogOnJlZjpgbm9uLXJvb3QgPHhtbHBhcnNlci1ub24tcm9vdD5gDQpkaWZmIC0tZ2l0IGEv
SW5jbHVkZS9weWV4cGF0LmggYi9JbmNsdWRlL3B5ZXhwYXQuaA0KaW5kZXggMDQ1NDhiNzY4NGEy
ZmRhLi5mNTIzZjhiYjI3Mzk4M2EgMTAwNjQ0DQotLS0gYS9JbmNsdWRlL3B5ZXhwYXQuaA0KKysr
IGIvSW5jbHVkZS9weWV4cGF0LmgNCkBAIC01Nyw2ICs1NywxMSBAQCBzdHJ1Y3QgUHlFeHBhdF9D
QVBJDQogICAgICAgICBYTUxfUGFyc2VyIHBhcnNlciwgdW5zaWduZWQgbG9uZyBsb25nIGFjdGl2
YXRpb25UaHJlc2hvbGRCeXRlcyk7DQogICAgIFhNTF9Cb29sICgqU2V0QWxsb2NUcmFja2VyTWF4
aW11bUFtcGxpZmljYXRpb24pKA0KICAgICAgICAgWE1MX1BhcnNlciBwYXJzZXIsIGZsb2F0IG1h
eEFtcGxpZmljYXRpb25GYWN0b3IpOw0KKyAgICAvKiBtaWdodCBiZSBOVUxMIGZvciBleHBhdCA8
IDIuNC4wICovDQorICAgIFhNTF9Cb29sICgqU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rp
b25BY3RpdmF0aW9uVGhyZXNob2xkKSgNCisgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCB1bnNp
Z25lZCBsb25nIGxvbmcgYWN0aXZhdGlvblRocmVzaG9sZEJ5dGVzKTsNCisgICAgWE1MX0Jvb2wg
KCpTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0aW9uKSgN
CisgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCBmbG9hdCBtYXhBbXBsaWZpY2F0aW9uRmFjdG9y
KTsNCiAgICAgLyogYWx3YXlzIGFkZCBuZXcgc3R1ZmYgdG8gdGhlIGVuZCEgKi8NCiB9Ow0KIA0K
ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weSBiL0xpYi90ZXN0L3Rlc3RfcHll
eHBhdC5weQ0KaW5kZXggMzdkOTA4NmY0MGE4MjdkLi4wNjE4NWNkY2Q1NzEwZmUgMTAwNjQ0DQot
LS0gYS9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkNCisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlleHBh
dC5weQ0KQEAgLTEwMDMsNiArMTAwMyw2NCBAQCBkZWYgdGVzdF9zZXRfbWF4aW11bV9hbXBsaWZp
Y2F0aW9uX19mYWlsX2Zvcl9zdWJwYXJzZXIoc2VsZik6DQogICAgICAgICBzZWxmLmFzc2VydF9y
b290X3BhcnNlcl9mYWlsdXJlKHNldHRlciwgMTIzLjQ1KQ0KIA0KIA0KK0B1bml0dGVzdC5za2lw
SWYoZXhwYXQudmVyc2lvbl9pbmZvIDwgKDIsIDQsIDApLCAicmVxdWlyZXMgRXhwYXQgPj0gMi40
LjAiKQ0KK2NsYXNzIEV4cGFuc2lvblByb3RlY3Rpb25UZXN0KEF0dGFja1Byb3RlY3Rpb25UZXN0
QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOg0KKw0KKyAgICBkZWYgYXNzZXJ0X3JlamVjdGVkKHNl
bGYsIGZ1bmMsIC8sICphcmdzLCAqKmt3YXJncyk6DQorICAgICAgICAiIiJDaGVjayB0aGF0IGZ1
bmMoKmFyZ3MsICoqa3dhcmdzKSBoaXRzIHRoZSBhbGxvY2F0aW9uIGxpbWl0LiIiIg0KKyAgICAg
ICAgbXNnID0gKA0KKyAgICAgICAgICAgIHIibGltaXQgb24gaW5wdXQgYW1wbGlmaWNhdGlvbiBm
YWN0b3IgXChmcm9tIERURCBhbmQgZW50aXRpZXNcKSAiDQorICAgICAgICAgICAgciJicmVhY2hl
ZDogbGluZSBcZCssIGNvbHVtbiBcZCsiDQorICAgICAgICApDQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlc1JlZ2V4KGV4cGF0LkV4cGF0RXJyb3IsIG1zZywgZnVuYywgKmFyZ3MsICoqa3dhcmdz
KQ0KKw0KKyAgICBkZWYgc2V0X2FjdGl2YXRpb25fdGhyZXNob2xkKHNlbGYsIHBhcnNlciwgdGhy
ZXNob2xkKToNCisgICAgICAgIHJldHVybiBwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1By
b3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkNCisNCisgICAgZGVmIHNldF9t
YXhpbXVtX2FtcGxpZmljYXRpb24oc2VsZiwgcGFyc2VyLCBtYXhfZmFjdG9yKToNCisgICAgICAg
IHJldHVybiBwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1w
bGlmaWNhdGlvbihtYXhfZmFjdG9yKQ0KKw0KKyAgICBkZWYgdGVzdF9zZXRfYWN0aXZhdGlvbl90
aHJlc2hvbGRfX3RocmVzaG9sZF9yZWFjaGVkKHNlbGYpOg0KKyAgICAgICAgcGFyc2VyID0gZXhw
YXQuUGFyc2VyQ3JlYXRlKCkNCisgICAgICAgICMgQ2hvb3NlIGEgdGhyZXNob2xkIGV4cGVjdGVk
IHRvIGJlIGFsd2F5cyByZWFjaGVkLg0KKyAgICAgICAgc2VsZi5zZXRfYWN0aXZhdGlvbl90aHJl
c2hvbGQocGFyc2VyLCAzKQ0KKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSB0aHJlc2hvbGQgaXMg
cmVhY2hlZCBieSBjaG9vc2luZyBhIHNtYWxsIGZhY3Rvcg0KKyAgICAgICAgIyBhbmQgYSBwYXls
b2FkIHdob3NlIHBlYWsgYW1wbGlmaWNhdGlvbiBmYWN0b3IgZXhjZWVkcyBpdC4NCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbihwYXJzZXIs
IDEuMCkpDQorICAgICAgICBwYXlsb2FkID0gc2VsZi5leHBvbmVudGlhbF9leHBhbnNpb25fcGF5
bG9hZChuY29scz0xMCwgbnJvd3M9NCkNCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlamVjdGVkKHBh
cnNlci5QYXJzZSwgcGF5bG9hZCwgVHJ1ZSkNCisNCisgICAgZGVmIHRlc3Rfc2V0X2FjdGl2YXRp
b25fdGhyZXNob2xkX190aHJlc2hvbGRfbm90X3JlYWNoZWQoc2VsZik6DQorICAgICAgICBwYXJz
ZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBDaG9vc2UgYSB0aHJlc2hvbGQg
ZXhwZWN0ZWQgdG8gYmUgbmV2ZXIgcmVhY2hlZC4NCisgICAgICAgIHNlbGYuc2V0X2FjdGl2YXRp
b25fdGhyZXNob2xkKHBhcnNlciwgcG93KDEwLCA1KSkNCisgICAgICAgICMgQ2hlY2sgdGhhdCB0
aGUgdGhyZXNob2xkIGlzIHJlYWNoZWQgYnkgY2hvb3NpbmcgYSBzbWFsbCBmYWN0b3INCisgICAg
ICAgICMgYW5kIGEgcGF5bG9hZCB3aG9zZSBwZWFrIGFtcGxpZmljYXRpb24gZmFjdG9yIGV4Y2Vl
ZHMgaXQuDQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnNldF9tYXhpbXVtX2FtcGxp
ZmljYXRpb24ocGFyc2VyLCAxLjApKQ0KKyAgICAgICAgcGF5bG9hZCA9IHNlbGYuZXhwb25lbnRp
YWxfZXhwYW5zaW9uX3BheWxvYWQobmNvbHM9MTAsIG5yb3dzPTQpDQorICAgICAgICBzZWxmLmFz
c2VydElzTm90Tm9uZShwYXJzZXIuUGFyc2UocGF5bG9hZCwgVHJ1ZSkpDQorDQorICAgIGRlZiB0
ZXN0X3NldF9tYXhpbXVtX2FtcGxpZmljYXRpb25fX2FtcGxpZmljYXRpb25fZXhjZWVkZWQoc2Vs
Zik6DQorICAgICAgICBwYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBV
bmNvbmRpdGlvbmFsbHkgZW5hYmxlIG1heGltdW0gYWN0aXZhdGlvbiBmYWN0b3IuDQorICAgICAg
ICBzZWxmLnNldF9hY3RpdmF0aW9uX3RocmVzaG9sZChwYXJzZXIsIDApDQorICAgICAgICAjIENo
b29zZSBhIG1heCBhbXBsaWZpY2F0aW9uIGZhY3RvciBleHBlY3RlZCB0byBhbHdheXMgYmUgZXhj
ZWVkZWQuDQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnNldF9tYXhpbXVtX2FtcGxp
ZmljYXRpb24ocGFyc2VyLCAxLjApKQ0KKyAgICAgICAgIyBDcmFmdCBhIHBheWxvYWQgZm9yIHdo
aWNoIHRoZSBwZWFrIGFtcGxpZmljYXRpb24gZmFjdG9yIGlzID4gMS4wLg0KKyAgICAgICAgcGF5
bG9hZCA9IHNlbGYuZXhwb25lbnRpYWxfZXhwYW5zaW9uX3BheWxvYWQobmNvbHM9MSwgbnJvd3M9
MikNCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlamVjdGVkKHBhcnNlci5QYXJzZSwgcGF5bG9hZCwg
VHJ1ZSkNCisNCisgICAgZGVmIHRlc3Rfc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbl9fYW1wbGlm
aWNhdGlvbl9ub3RfZXhjZWVkZWQoc2VsZik6DQorICAgICAgICBwYXJzZXIgPSBleHBhdC5QYXJz
ZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBVbmNvbmRpdGlvbmFsbHkgZW5hYmxlIG1heGltdW0gYWN0
aXZhdGlvbiBmYWN0b3IuDQorICAgICAgICBzZWxmLnNldF9hY3RpdmF0aW9uX3RocmVzaG9sZChw
YXJzZXIsIDApDQorICAgICAgICAjIENob29zZSBhIG1heCBhbXBsaWZpY2F0aW9uIGZhY3RvciBl
eHBlY3RlZCB0byBuZXZlciBiZSBleGNlZWRlZC4NCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l
KHNlbGYuc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbihwYXJzZXIsIDFlNCkpDQorICAgICAgICAj
IENyYWZ0IGEgcGF5bG9hZCBmb3Igd2hpY2ggdGhlIHBlYWsgYW1wbGlmaWNhdGlvbiBmYWN0b3Ig
aXMgPCAxZTQuDQorICAgICAgICBwYXlsb2FkID0gc2VsZi5leHBvbmVudGlhbF9leHBhbnNpb25f
cGF5bG9hZChuY29scz0xLCBucm93cz0yKQ0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUo
cGFyc2VyLlBhcnNlKHBheWxvYWQsIFRydWUpKQ0KKw0KKw0KIEB1bml0dGVzdC5za2lwSWYoZXhw
YXQudmVyc2lvbl9pbmZvIDwgKDIsIDcsIDIpLCAicmVxdWlyZXMgRXhwYXQgPj0gMi43LjIiKQ0K
IGNsYXNzIE1lbW9yeVByb3RlY3Rpb25UZXN0KEF0dGFja1Byb3RlY3Rpb25UZXN0QmFzZSwgdW5p
dHRlc3QuVGVzdENhc2UpOg0KIA0KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFy
eS8yMDI1LTA5LTI2LTE4LTA0LTI4LmdoLWlzc3VlLTkwOTQ5LllIalN6WC5yc3QgYi9NaXNjL05F
V1MuZC9uZXh0L0xpYnJhcnkvMjAyNS0wOS0yNi0xOC0wNC0yOC5naC1pc3N1ZS05MDk0OS5ZSGpT
elgucnN0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwLi5kYWUx
YjYxOGNhMGQ3NmENCi0tLSAvZGV2L251bGwNCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFy
eS8yMDI1LTA5LTI2LTE4LTA0LTI4LmdoLWlzc3VlLTkwOTQ5LllIalN6WC5yc3QNCkBAIC0wLDAg
KzEsNyBAQA0KK0FkZA0KKzptZXRoOmB+eG1sLnBhcnNlcnMuZXhwYXQueG1scGFyc2VyLlNldEJp
bGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZGANCithbmQNCis6
bWV0aDpgfnhtbC5wYXJzZXJzLmV4cGF0LnhtbHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNr
UHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0aW9uYA0KK3RvIDpyZWY6YHhtbHBhcnNlciA8eG1s
cGFyc2VyLW9iamVjdHM+YCBvYmplY3RzIHRvIHR1bmUgcHJvdGVjdGlvbnMgYWdhaW5zdA0KK2Bi
aWxsaW9uIGxhdWdocyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbGlvbl9sYXVn
aHNfYXR0YWNrPmBfIGF0dGFja3MuDQorUGF0Y2ggYnkgQsOpbsOpZGlrdCBUcmFuLg0KZGlmZiAt
LWdpdCBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHlleHBh
dC5jLmgNCmluZGV4IGMwNmE0NDE1MTQwZTQzNC4uYzdmOWNjODU2NmQ3MWQ4IDEwMDY0NA0KLS0t
IGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgNCisrKyBiL01vZHVsZXMvY2xpbmljL3B5ZXhw
YXQuYy5oDQpAQCAtNDA0LDYgKzQwNCwxMzggQEAgcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWln
bkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWMNCiAN
CiAjZW5kaWYgLyogKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1KSAqLw0KIA0KKyNpZiAo
WE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0MDApDQorDQorUHlEb2NfU1RSVkFSKHB5ZXhwYXRf
eG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVz
aG9sZF9fZG9jX18sDQorIlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlv
blRocmVzaG9sZCgkc2VsZiwgdGhyZXNob2xkLCAvKVxuIg0KKyItLVxuIg0KKyJcbiINCisiU2V0
cyB0aGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVjdGlv
biBhZ2FpbnN0IGJpbGxpb24gbGF1Z2hzIGF0dGFja3MuXG4iDQorIlxuIg0KKyJUaGUgbnVtYmVy
IG9mIG91dHB1dCBieXRlcyBpbmNsdWRlcyBhbXBsaWZpY2F0aW9uIGZyb20gZW50aXR5IGV4cGFu
c2lvblxuIg0KKyJhbmQgcmVhZGluZyBEVEQgZmlsZXMuXG4iDQorIlxuIg0KKyJQYXJzZXIgb2Jq
ZWN0cyB1c3VhbGx5IGhhdmUgYSBwcm90ZWN0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDgg
TWlCLFxuIg0KKyJidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVu
ZGVybHlpbmcgRXhwYXQgbGlicmFyeS5cbiINCisiXG4iDQorIkFjdGl2YXRpb24gdGhyZXNob2xk
cyBiZWxvdyA0IE1pQiBhcmUga25vd24gdG8gYnJlYWsgc3VwcG9ydCBmb3IgRElUQSAxLjNcbiIN
CisicGF5bG9hZCBhbmQgYXJlIGhlbmNlIG5vdCByZWNvbW1lbmRlZC4iKTsNCisNCisjZGVmaW5l
IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OQUNUSVZB
VElPTlRIUkVTSE9MRF9NRVRIT0RERUYgICAgXA0KKyAgICB7IlNldEJpbGxpb25MYXVnaHNBdHRh
Y2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhw
YXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRo
cmVzaG9sZCksIE1FVEhfTUVUSE9EfE1FVEhfRkFTVENBTEx8TUVUSF9LRVlXT1JEUywgcHlleHBh
dF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhy
ZXNob2xkX19kb2NfX30sDQorDQorc3RhdGljIFB5T2JqZWN0ICoNCitweWV4cGF0X3htbHBhcnNl
cl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hvbGRfaW1w
bCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3Qg
KmNscywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGhyZXNob2xkKTsN
CisNCitzdGF0aWMgUHlPYmplY3QgKg0KK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVn
aHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCh4bWxwYXJzZW9iamVjdCAqc2Vs
ZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpjb25zdCAqYXJncywgUHlfc3NpemVfdCBu
YXJncywgUHlPYmplY3QgKmt3bmFtZXMpDQorew0KKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVl
ID0gTlVMTDsNCisgICAgI2lmIGRlZmluZWQoUHlfQlVJTERfQ09SRSkgJiYgIWRlZmluZWQoUHlf
QlVJTERfQ09SRV9NT0RVTEUpDQorICAgICMgIGRlZmluZSBLV1RVUExFIChQeU9iamVjdCAqKSZf
UHlfU0lOR0xFVE9OKHR1cGxlX2VtcHR5KQ0KKyAgICAjZWxzZQ0KKyAgICAjICBkZWZpbmUgS1dU
VVBMRSBOVUxMDQorICAgICNlbmRpZg0KKw0KKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0
IF9rZXl3b3Jkc1tdID0geyIiLCBOVUxMfTsNCisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3Bh
cnNlciA9IHsNCisgICAgICAgIC5rZXl3b3JkcyA9IF9rZXl3b3JkcywNCisgICAgICAgIC5mbmFt
ZSA9ICJTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hvbGQi
LA0KKyAgICAgICAgLmt3dHVwbGUgPSBLV1RVUExFLA0KKyAgICB9Ow0KKyAgICAjdW5kZWYgS1dU
VVBMRQ0KKyAgICBQeU9iamVjdCAqYXJnc2J1ZlsxXTsNCisgICAgdW5zaWduZWQgbG9uZyBsb25n
IHRocmVzaG9sZDsNCisNCisgICAgYXJncyA9IF9QeUFyZ19VbnBhY2tLZXl3b3JkcyhhcmdzLCBu
YXJncywgTlVMTCwga3duYW1lcywgJl9wYXJzZXIsIDEsIDEsIDAsIGFyZ3NidWYpOw0KKyAgICBp
ZiAoIWFyZ3MpIHsNCisgICAgICAgIGdvdG8gZXhpdDsNCisgICAgfQ0KKyAgICBpZiAoIV9QeUxv
bmdfVW5zaWduZWRMb25nTG9uZ19Db252ZXJ0ZXIoYXJnc1swXSwgJnRocmVzaG9sZCkpIHsNCisg
ICAgICAgIGdvdG8gZXhpdDsNCisgICAgfQ0KKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3ht
bHBhcnNlcl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hv
bGRfaW1wbChzZWxmLCBjbHMsIHRocmVzaG9sZCk7DQorDQorZXhpdDoNCisgICAgcmV0dXJuIHJl
dHVybl92YWx1ZTsNCit9DQorDQorI2VuZGlmIC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAy
MDQwMCkgKi8NCisNCisjaWYgKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDIwNDAwKQ0KKw0KK1B5
RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVj
dGlvbk1heGltdW1BbXBsaWZpY2F0aW9uX19kb2NfXywNCisiU2V0QmlsbGlvbkxhdWdoc0F0dGFj
a1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbigkc2VsZiwgbWF4X2ZhY3RvcixcbiINCisi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKVxu
Ig0KKyItLVxuIg0KKyJcbiINCisiU2V0cyB0aGUgbWF4aW11bSB0b2xlcmF0ZWQgYW1wbGlmaWNh
dGlvbiBmYWN0b3IgZm9yIHByb3RlY3Rpb24gYWdhaW5zdCBiaWxsaW9uIGxhdWdocyBhdHRhY2tz
LlxuIg0KKyJcbiINCisiVGhlIGFtcGxpZmljYXRpb24gZmFjdG9yIGlzIGNhbGN1bGF0ZWQgYXMg
XCIoZGlyZWN0ICsgaW5kaXJlY3QpIC8gZGlyZWN0XCJcbiINCisid2hpbGUgcGFyc2luZywgd2hl
cmUgXCJkaXJlY3RcIiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgcHJpbWFy
eVxuIg0KKyJkb2N1bWVudCBpbiBwYXJzaW5nIGFuZCBcImluZGlyZWN0XCIgaXMgdGhlIG51bWJl
ciBvZiBieXRlcyBhZGRlZCBieSBleHBhbmRpbmdcbiINCisiZW50aXRpZXMgYW5kIHJlYWRpbmcg
ZXh0ZXJuYWwgRFREIGZpbGVzLCBjb21iaW5lZC5cbiINCisiXG4iDQorIlRoZSBcJ21heF9mYWN0
b3JcJyB2YWx1ZSBtdXN0IGJlIGEgbm9uLU5hTiBmbG9hdGluZyBwb2ludCB2YWx1ZSBncmVhdGVy
IHRoYW5cbiINCisib3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3RvcnMgZ3JlYXRl
ciB0aGFuIDMwLDAwMCBjYW4gYmUgb2JzZXJ2ZWRcbiINCisiaW4gdGhlIG1pZGRsZSBvZiBwYXJz
aW5nIGV2ZW4gd2l0aCBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsXG4i
DQorInRoZSBhY3RpdmF0aW9uIHRocmVzaG9sZCBzaG91bGQgYmUgY2FyZWZ1bGx5IGNob3NlbiB0
byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuXG4iDQorIlxuIg0KKyJQYXJzZXIgb2JqZWN0cyB1c3Vh
bGx5IGhhdmUgYSBtYXhpbXVtIGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMCxcbiINCisiYnV0
IHRoZSBhY3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0
IGxpYnJhcnkuIik7DQorDQorI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFV
R0hTQVRUQUNLUFJPVEVDVElPTk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRiAgICBcDQor
ICAgIHsiU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlv
biIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNB
dHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24pLCBNRVRIX01FVEhPRHxNRVRIX0ZB
U1RDQUxMfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNB
dHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb25fX2RvY19ffSwNCisNCitzdGF0aWMg
UHlPYmplY3QgKg0KK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90
ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb25faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IG1heF9mYWN0b3IpOw0KKw0KK3N0YXRpYyBQeU9iamVjdCAqDQorcHlleHBhdF94bWxw
YXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlv
bih4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpjb25z
dCAqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpDQorew0KKyAgICBQ
eU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsNCisgICAgI2lmIGRlZmluZWQoUHlfQlVJTERf
Q09SRSkgJiYgIWRlZmluZWQoUHlfQlVJTERfQ09SRV9NT0RVTEUpDQorICAgICMgIGRlZmluZSBL
V1RVUExFIChQeU9iamVjdCAqKSZfUHlfU0lOR0xFVE9OKHR1cGxlX2VtcHR5KQ0KKyAgICAjZWxz
ZQ0KKyAgICAjICBkZWZpbmUgS1dUVVBMRSBOVUxMDQorICAgICNlbmRpZg0KKw0KKyAgICBzdGF0
aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCBOVUxMfTsNCisgICAgc3Rh
dGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsNCisgICAgICAgIC5rZXl3b3JkcyA9IF9rZXl3
b3JkcywNCisgICAgICAgIC5mbmFtZSA9ICJTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlv
bk1heGltdW1BbXBsaWZpY2F0aW9uIiwNCisgICAgICAgIC5rd3R1cGxlID0gS1dUVVBMRSwNCisg
ICAgfTsNCisgICAgI3VuZGVmIEtXVFVQTEUNCisgICAgUHlPYmplY3QgKmFyZ3NidWZbMV07DQor
ICAgIGZsb2F0IG1heF9mYWN0b3I7DQorDQorICAgIGFyZ3MgPSBfUHlBcmdfVW5wYWNrS2V5d29y
ZHMoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsICZfcGFyc2VyLCAxLCAxLCAwLCBhcmdzYnVm
KTsNCisgICAgaWYgKCFhcmdzKSB7DQorICAgICAgICBnb3RvIGV4aXQ7DQorICAgIH0NCisgICAg
aWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChhcmdzWzBdKSkgew0KKyAgICAgICAgbWF4X2ZhY3RvciA9
IChmbG9hdCkgKFB5RmxvYXRfQVNfRE9VQkxFKGFyZ3NbMF0pKTsNCisgICAgfQ0KKyAgICBlbHNl
DQorICAgIHsNCisgICAgICAgIG1heF9mYWN0b3IgPSAoZmxvYXQpIFB5RmxvYXRfQXNEb3VibGUo
YXJnc1swXSk7DQorICAgICAgICBpZiAobWF4X2ZhY3RvciA9PSAtMS4wICYmIFB5RXJyX09jY3Vy
cmVkKCkpIHsNCisgICAgICAgICAgICBnb3RvIGV4aXQ7DQorICAgICAgICB9DQorICAgIH0NCisg
ICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFj
a1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbl9pbXBsKHNlbGYsIGNscywgbWF4X2ZhY3Rv
cik7DQorDQorZXhpdDoNCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsNCit9DQorDQorI2VuZGlm
IC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAyMDQwMCkgKi8NCisNCiAjaWYgKFhNTF9DT01C
SU5FRF9WRVJTSU9OID49IDIwNzAyKQ0KIA0KIFB5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNl
cl9TZXRBbGxvY1RyYWNrZXJBY3RpdmF0aW9uVGhyZXNob2xkX19kb2NfXywNCkBAIC00MTIsNyAr
NTQ0LDggQEAgUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlckFj
dGl2YXRpb25UaHJlc2hvbGRfX2RvY19fLA0KICJcbiINCiAiU2V0cyB0aGUgbnVtYmVyIG9mIGFs
bG9jYXRlZCBieXRlcyBvZiBkeW5hbWljIG1lbW9yeSBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVj
dGlvbiBhZ2FpbnN0IGRpc3Byb3BvcnRpb25hdGUgdXNlIG9mIFJBTS5cbiINCiAiXG4iDQotIkJ5
IGRlZmF1bHQsIHBhcnNlciBvYmplY3RzIGhhdmUgYW4gYWxsb2NhdGlvbiBhY3RpdmF0aW9uIHRo
cmVzaG9sZCBvZiA2NCBNaUIuIik7DQorIlBhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2ZSBhbiBh
bGxvY2F0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQixcbiINCisiYnV0IHRoZSBh
Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh
cnkuIik7DQogDQogI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJ
VkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRiAgICBcDQogICAgIHsiU2V0QWxsb2NUcmFja2VyQWN0
aXZhdGlvblRocmVzaG9sZCIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhwYXRfeG1scGFyc2VyX1Nl
dEFsbG9jVHJhY2tlckFjdGl2YXRpb25UaHJlc2hvbGQpLCBNRVRIX01FVEhPRHxNRVRIX0ZBU1RD
QUxMfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlckFjdGl2
YXRpb25UaHJlc2hvbGRfX2RvY19ffSwNCkBAIC00NzUsNyArNjA4LDggQEAgUHlEb2NfU1RSVkFS
KHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9uX19k
b2NfXywNCiAibmVhciB0aGUgc3RhcnQgb2YgcGFyc2luZyBldmVuIHdpdGggYmVuaWduIGZpbGVz
IGluIHByYWN0aWNlLiBJbiBwYXJ0aWN1bGFyLFxuIg0KICJ0aGUgYWN0aXZhdGlvbiB0aHJlc2hv
bGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4gdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLlxu
Ig0KICJcbiINCi0iQnkgZGVmYXVsdCwgcGFyc2VyIG9iamVjdHMgaGF2ZSBhIG1heGltdW0gYW1w
bGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLjAuIik7DQorIlBhcnNlciBvYmplY3RzIHVzdWFsbHkg
aGF2ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLFxuIg0KKyJidXQgdGhl
IGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGli
cmFyeS4iKTsNCiANCiAjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1B
WElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRiAgICBcDQogICAgIHsiU2V0QWxsb2NUcmFja2Vy
TWF4aW11bUFtcGxpZmljYXRpb24iLCBfUHlDRnVuY3Rpb25fQ0FTVChweWV4cGF0X3htbHBhcnNl
cl9TZXRBbGxvY1RyYWNrZXJNYXhpbXVtQW1wbGlmaWNhdGlvbiksIE1FVEhfTUVUSE9EfE1FVEhf
RkFTVENBTEx8TUVUSF9LRVlXT1JEUywgcHlleHBhdF94bWxwYXJzZXJfU2V0QWxsb2NUcmFja2Vy
TWF4aW11bUFtcGxpZmljYXRpb25fX2RvY19ffSwNCkBAIC02NjksNiArODAzLDE0IEBAIHB5ZXhw
YXRfRXJyb3JTdHJpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykNCiAgICAgI2Rl
ZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRg0KICNlbmRpZiAv
KiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8N
CiANCisjaWZuZGVmIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9U
RUNUSU9OQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RERUYNCisgICAgI2RlZmluZSBQWUVYUEFU
X1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRUQUNLUFJPVEVDVElPTkFDVElWQVRJT05USFJF
U0hPTERfTUVUSE9EREVGDQorI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1MUEFSU0VSX1NF
VEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RE
RUYpICovDQorDQorI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRU
QUNLUFJPVEVDVElPTk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRg0KKyAgICAjZGVmaW5l
IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OTUFYSU1V
TUFNUExJRklDQVRJT05fTUVUSE9EREVGDQorI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1M
UEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OTUFYSU1VTUFNUExJRklDQVRJ
T05fTUVUSE9EREVGKSAqLw0KKw0KICNpZm5kZWYgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NU
UkFDS0VSQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RERUYNCiAgICAgI2RlZmluZSBQWUVYUEFU
X1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJVkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRg0K
ICNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJ
VkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRikgKi8NCkBAIC02NzYsNCArODE4LDQgQEAgcHlleHBh
dF9FcnJvclN0cmluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQ0KICNpZm5kZWYg
UFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NUUkFDS0VSTUFYSU1VTUFNUExJRklDQVRJT05fTUVU
SE9EREVGDQogICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NUUkFDS0VSTUFY
SU1VTUFNUExJRklDQVRJT05fTUVUSE9EREVGDQogI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRf
WE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRikg
Ki8NCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YyYjk2OWNmYWVkNmMw
NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovDQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29k
ZTogb3V0cHV0PWJjMWIxODdkYmE2ZDIwODYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLw0KZGlm
ZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMNCmluZGV4IDg2
NzM1NDBmMzU4MTQyZi4uNmM0NWFlZjVkNGUxYjhlIDEwMDY0NA0KLS0tIGEvTW9kdWxlcy9weWV4
cGF0LmMNCisrKyBiL01vZHVsZXMvcHlleHBhdC5jDQpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgcHll
eHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQ
eVR5cGVPYmplY3QgKmNscywNCiB9DQogI2VuZGlmDQogDQotI2lmIFhNTF9DT01CSU5FRF9WRVJT
SU9OID49IDIwNzAyDQorI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDIwNDAwDQogc3RhdGlj
IFB5T2JqZWN0ICoNCiBzZXRfYWN0aXZhdGlvbl90aHJlc2hvbGQoeG1scGFyc2VvYmplY3QgKnNl
bGYsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqY2xzLA0KQEAgLTEy
MDksNiArMTIwOSw3NiBAQCBzZXRfbWF4aW11bV9hbXBsaWZpY2F0aW9uKHhtbHBhcnNlb2JqZWN0
ICpzZWxmLA0KIH0NCiAjZW5kaWYNCiANCisjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0
MDANCisvKltjbGluaWMgaW5wdXRdDQorcHlleHBhdC54bWxwYXJzZXIuU2V0QmlsbGlvbkxhdWdo
c0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkDQorDQorICAgIGNsczogZGVmaW5p
bmdfY2xhc3MNCisgICAgdGhyZXNob2xkOiB1bnNpZ25lZF9sb25nX2xvbmcNCisgICAgLw0KKw0K
K1NldHMgdGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgbmVlZGVkIHRvIGFjdGl2YXRlIHByb3Rl
Y3Rpb24gYWdhaW5zdCBiaWxsaW9uIGxhdWdocyBhdHRhY2tzLg0KKw0KK1RoZSBudW1iZXIgb2Yg
b3V0cHV0IGJ5dGVzIGluY2x1ZGVzIGFtcGxpZmljYXRpb24gZnJvbSBlbnRpdHkgZXhwYW5zaW9u
DQorYW5kIHJlYWRpbmcgRFREIGZpbGVzLg0KKw0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2
ZSBhIHByb3RlY3Rpb24gYWN0aXZhdGlvbiB0aHJlc2hvbGQgb2YgOCBNaUIsDQorYnV0IHRoZSBh
Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh
cnkuDQorDQorQWN0aXZhdGlvbiB0aHJlc2hvbGRzIGJlbG93IDQgTWlCIGFyZSBrbm93biB0byBi
cmVhayBzdXBwb3J0IGZvciBESVRBIDEuMw0KK3BheWxvYWQgYW5kIGFyZSBoZW5jZSBub3QgcmVj
b21tZW5kZWQuDQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLw0KKw0KK3N0YXRpYyBQ
eU9iamVjdCAqDQorcHlleHBhdF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3Rl
Y3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsDQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIHRocmVzaG9sZCkNCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2Rl
OiBvdXRwdXQ9MGMwODIzNDJmMWM3ODExNCBpbnB1dD01YTUxNjk1YTQ4MWRlZjkyXSovDQorew0K
KyAgICByZXR1cm4gc2V0X2FjdGl2YXRpb25fdGhyZXNob2xkKA0KKyAgICAgICAgc2VsZiwgY2xz
LCB0aHJlc2hvbGQsDQorICAgICAgICBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rp
b25BY3RpdmF0aW9uVGhyZXNob2xkDQorICAgICk7DQorfQ0KKyNlbmRpZg0KKw0KKyNpZiBYTUxf
Q09NQklORURfVkVSU0lPTiA+PSAyMDQwMA0KKy8qW2NsaW5pYyBpbnB1dF0NCitweWV4cGF0Lnht
bHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0
aW9uDQorDQorICAgIGNsczogZGVmaW5pbmdfY2xhc3MNCisgICAgbWF4X2ZhY3RvcjogZmxvYXQN
CisgICAgLw0KKw0KK1NldHMgdGhlIG1heGltdW0gdG9sZXJhdGVkIGFtcGxpZmljYXRpb24gZmFj
dG9yIGZvciBwcm90ZWN0aW9uIGFnYWluc3QgYmlsbGlvbiBsYXVnaHMgYXR0YWNrcy4NCisNCitU
aGUgYW1wbGlmaWNhdGlvbiBmYWN0b3IgaXMgY2FsY3VsYXRlZCBhcyAiKGRpcmVjdCArIGluZGly
ZWN0KSAvIGRpcmVjdCINCit3aGlsZSBwYXJzaW5nLCB3aGVyZSAiZGlyZWN0IiBpcyB0aGUgbnVt
YmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgcHJpbWFyeQ0KK2RvY3VtZW50IGluIHBhcnNpbmcg
YW5kICJpbmRpcmVjdCIgaXMgdGhlIG51bWJlciBvZiBieXRlcyBhZGRlZCBieSBleHBhbmRpbmcN
CitlbnRpdGllcyBhbmQgcmVhZGluZyBleHRlcm5hbCBEVEQgZmlsZXMsIGNvbWJpbmVkLg0KKw0K
K1RoZSAnbWF4X2ZhY3RvcicgdmFsdWUgbXVzdCBiZSBhIG5vbi1OYU4gZmxvYXRpbmcgcG9pbnQg
dmFsdWUgZ3JlYXRlciB0aGFuDQorb3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3Rv
cnMgZ3JlYXRlciB0aGFuIDMwLDAwMCBjYW4gYmUgb2JzZXJ2ZWQNCitpbiB0aGUgbWlkZGxlIG9m
IHBhcnNpbmcgZXZlbiB3aXRoIGJlbmlnbiBmaWxlcyBpbiBwcmFjdGljZS4gSW4gcGFydGljdWxh
ciwNCit0aGUgYWN0aXZhdGlvbiB0aHJlc2hvbGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4g
dG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLg0KKw0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2
ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLA0KK2J1dCB0aGUgYWN0dWFs
IGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyBFeHBhdCBsaWJyYXJ5Lg0K
K1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8NCisNCitzdGF0aWMgUHlPYmplY3QgKg0K
K3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11
bUFtcGxpZmljYXRpb25faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heF9m
YWN0b3IpDQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1OTA0MzllYWRm
NDYzZmEgaW5wdXQ9NWRlN2M2ZGQ3MTY5YjNiMF0qLw0KK3sNCisgICAgcmV0dXJuIHNldF9tYXhp
bXVtX2FtcGxpZmljYXRpb24oDQorICAgICAgICBzZWxmLCBjbHMsIG1heF9mYWN0b3IsDQorICAg
ICAgICBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNh
dGlvbg0KKyAgICApOw0KK30NCisjZW5kaWYNCisNCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04g
Pj0gMjA3MDINCiAvKltjbGluaWMgaW5wdXRdDQogcHlleHBhdC54bWxwYXJzZXIuU2V0QWxsb2NU
cmFja2VyQWN0aXZhdGlvblRocmVzaG9sZA0KQEAgLTEyMTksMTQgKzEyODksMTUgQEAgcHlleHBh
dC54bWxwYXJzZXIuU2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9sZA0KIA0KIFNldHMg
dGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMgb2YgZHluYW1pYyBtZW1vcnkgbmVlZGVkIHRv
IGFjdGl2YXRlIHByb3RlY3Rpb24gYWdhaW5zdCBkaXNwcm9wb3J0aW9uYXRlIHVzZSBvZiBSQU0u
DQogDQotQnkgZGVmYXVsdCwgcGFyc2VyIG9iamVjdHMgaGF2ZSBhbiBhbGxvY2F0aW9uIGFjdGl2
YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQi4NCitQYXJzZXIgb2JqZWN0cyB1c3VhbGx5IGhhdmUg
YW4gYWxsb2NhdGlvbiBhY3RpdmF0aW9uIHRocmVzaG9sZCBvZiA2NCBNaUIsDQorYnV0IHRoZSBh
Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh
cnkuDQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLw0KIA0KIHN0YXRpYyBQeU9iamVj
dCAqDQogcHlleHBhdF94bWxwYXJzZXJfU2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9s
ZF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3QgKmNscywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIHRocmVzaG9sZCkNCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2Rl
OiBvdXRwdXQ9YmVkN2U5MzIwN2JhMDhjNSBpbnB1dD05YzcwNmI3NWMxOGU0ZWExXSovDQorLypb
Y2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZDdlOTMyMDdiYTA4YzUgaW5wdXQ9
Yjc0MTcxNzA5YTc3ZjJkOV0qLw0KIHsNCiAgICAgcmV0dXJuIHNldF9hY3RpdmF0aW9uX3RocmVz
aG9sZCgNCiAgICAgICAgIHNlbGYsIGNscywgdGhyZXNob2xkLA0KQEAgLTEyNTUsMTQgKzEzMjYs
MTUgQEAgb3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3RvcnMgZ3JlYXRlciB0aGFu
IDEwMC4wIGNhbiBiZSBvYnNlcnZlZA0KIG5lYXIgdGhlIHN0YXJ0IG9mIHBhcnNpbmcgZXZlbiB3
aXRoIGJlbmlnbiBmaWxlcyBpbiBwcmFjdGljZS4gSW4gcGFydGljdWxhciwNCiB0aGUgYWN0aXZh
dGlvbiB0aHJlc2hvbGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4gdG8gYXZvaWQgZmFsc2Ug
cG9zaXRpdmVzLg0KIA0KLUJ5IGRlZmF1bHQsIHBhcnNlciBvYmplY3RzIGhhdmUgYSBtYXhpbXVt
IGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMC4wLg0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkg
aGF2ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLA0KK2J1dCB0aGUgYWN0
dWFsIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyBFeHBhdCBsaWJyYXJ5
Lg0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8NCiANCiBzdGF0aWMgUHlPYmplY3Qg
Kg0KIHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9u
X2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3QgKmNscywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IG1heF9mYWN0b3IpDQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZl
NDRiZDQ4YzliMTEyYTAgaW5wdXQ9OTE4YjkyNjZiNDkwYTcyMl0qLw0KKy8qW2NsaW5pYyBlbmQg
Z2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTQ0YmQ0OGM5YjExMmEwIGlucHV0PTIwMDRjNmYwMTk4
MTAyY2JdKi8NCiB7DQogICAgIHJldHVybiBzZXRfbWF4aW11bV9hbXBsaWZpY2F0aW9uKA0KICAg
ICAgICAgc2VsZiwgY2xzLCBtYXhfZmFjdG9yLA0KQEAgLTEyODAsNiArMTM1Miw4IEBAIHN0YXRp
YyBzdHJ1Y3QgUHlNZXRob2REZWYgeG1scGFyc2VfbWV0aG9kc1tdID0gew0KICAgICBQWUVYUEFU
X1hNTFBBUlNFUl9FWFRFUk5BTEVOVElUWVBBUlNFUkNSRUFURV9NRVRIT0RERUYNCiAgICAgUFlF
WFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRg0KICAgICBQWUVY
UEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRg0KKyAgICBQWUVYUEFUX1hNTFBB
UlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRUQUNLUFJPVEVDVElPTkFDVElWQVRJT05USFJFU0hPTERf
TUVUSE9EREVGDQorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQ
Uk9URUNUSU9OTUFYSU1VTUFNUExJRklDQVRJT05fTUVUSE9EREVGDQogICAgIFBZRVhQQVRfWE1M
UEFSU0VSX1NFVEFMTE9DVFJBQ0tFUkFDVElWQVRJT05USFJFU0hPTERfTUVUSE9EREVGDQogICAg
IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1BWElNVU1BTVBMSUZJQ0FUSU9OX01F
VEhPRERFRg0KICAgICBQWUVYUEFUX1hNTFBBUlNFUl9TRVRSRVBBUlNFREVGRVJSQUxFTkFCTEVE
X01FVEhPRERFRg0KQEAgLTIyNzYsNiArMjM1MCwxMyBAQCBweWV4cGF0X2V4ZWMoUHlPYmplY3Qg
Km1vZCkNCiAgICAgY2FwaS0+U2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9sZCA9IE5V
TEw7DQogICAgIGNhcGktPlNldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9uID0gTlVM
TDsNCiAjZW5kaWYNCisjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0MDANCisgICAgY2Fw
aS0+U2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkID0g
WE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZDsN
CisgICAgY2FwaS0+U2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlm
aWNhdGlvbiA9IFhNTF9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBs
aWZpY2F0aW9uOw0KKyNlbHNlDQorICAgIGNhcGktPlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90
ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCA9IE5VTEw7DQorICAgIGNhcGktPlNldEJpbGxpb25M
YXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24gPSBOVUxMOw0KKyNlbmRp
Zg0KIA0KICAgICAvKiBleHBvcnQgdXNpbmcgY2Fwc3VsZSAqLw0KICAgICBQeU9iamVjdCAqY2Fw
aV9vYmplY3QgPSBQeUNhcHN1bGVfTmV3KGNhcGksIFB5RXhwYXRfQ0FQU1VMRV9OQU1FLA0KDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpQeXRob24tY2hl
Y2tpbnMgbWFpbGluZyBsaXN0IC0tIHB5dGhvbi1jaGVja2luc0BweXRob24ub3JnClRvIHVuc3Vi
c2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcHl0aG9uLWNoZWNraW5zLWxlYXZlQHB5dGhvbi5vcmcK
aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbjMvL2xpc3RzL3B5dGhvbi1jaGVja2lucy5w
eXRob24ub3JnCk1lbWJlciBhZGRyZXNzOiBweXRob24tcHl0aG9uLWNoZWNraW5zQG0uZ21hbmUt
bXgub3JnCg==