[COMMIT] Fix a bug with silent corruption of a fixnum used in a string's plist.

Aidan Kehoe <[email protected]> Sun, 24 Apr 2016 23:40:47 +0100
Newsgroups gmane.emacs.xemacs.patches
Message-ID <[email protected]>
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg
SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u
ZXQ+CiMgRGF0ZSAxNDYxNTM3NTk3IC0zNjAwCiMgICAgICBTdW4gQXByIDI0IDIzOjM5OjU3IDIw
MTYgKzAxMDAKIyBOb2RlIElEIGI3YWM2NmFjNWU1NDc0MzM5YzNlOGE3ZWE0ODYxZmE1NWQ5NGE4
NzEKIyBQYXJlbnQgIDlmY2E3NjZmOWQzMWYxNDIyZjEyODc3MjMxYmMyM2I0YmQ4MzNhOTcKRml4
IGEgYnVnIHdpdGggc2lsZW50IGNvcnJ1cHRpb24gb2YgYSBmaXhudW0gdXNlZCBpbiBhIHN0cmlu
ZydzIHBsaXN0LgoKc3JjL0NoYW5nZUxvZyBhZGRpdGlvbjoKCjIwMTYtMDQtMjQgIEFpZGFuIEtl
aG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CgoJRml4IGEgYnVnIHdoZXJlIGEgZml4bnVtIHVz
ZWQgYXMgYSBrZXkgaW4gYSBzdHJpbmcncyBwbGlzdCB3YXMKCXNpbGVudGx5IGNvcnJ1cHRlZC4K
CSogYWxsb2MuYzoKCSogYWxsb2MuYyAoc3RyaW5nX3BsaXN0X3B0cik6CglDaGVjayBhIGZsYWcg
aW4gdGhlIGhlYWRlciB0byBmaW5kIG91dCB3aGV0aGVyIHRoaXMgc3RyaW5nIHdhcwoJZXZlciBt
b2RpZmllZCwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlCglj
b3JyZXNwb25kaW5nIGVudHJ5IG9mIHRoZSBwbGlzdC4KCSogYWxsb2MuYyAoc3RyaW5nX2V4dGVu
dF9pbmZvKToKCU5ldyBmdW5jdGlvbiwgZW5jYXBzdWxhdGUgYWNjZXNzIHRvIHRoZSBzdHJpbmcn
cyBwbGlzdC4KCSogYWxsb2MuYyAoYnVtcF9zdHJpbmdfbW9kaWZmKToKCU1vdmUgdGhpcyBhY2Nl
c3NvciBoZXJlLgoJKiBhbGxvYy5jIChtYWtlX3VuaW5pdF9zdHJpbmcpOgoJQ2xlYXIgdGhlIE1P
RElGRlAgaGVhZGVyIGZsYWcgb24gYWxsb2NhdGlvbi4KCSogYWxsb2MuYyAoRnN0cmluZ19tb2Rp
ZmllZF90aWNrKToKCU1vdmUgdGhpcyBoZXJlIGZyb20gZm5zLmMsIGl0J3MgYW4gYWNjZXNzb3Ig
ZnVuY3Rpb24sIGl0IG1ha2VzCgltb3JlIHNlbnNlIHRvIGhhdmUgaXQgaGVyZS4KCSogYWxsb2Mu
YyAoc3ltc19vZl9hbGxvYyk6CgkqIGV4dGVudHMuYzoKCSogZXh0ZW50cy5jIChidWZmZXJfb3Jf
c3RyaW5nX2V4dGVudF9pbmZvKToKCVVzZSBzdHJpbmdfZXh0ZW50X2luZm8gKCkgaGVyZS4KCSog
Zm5zLmM6CgkqIGZucy5jIChzeW1zX29mX2Zucyk6CglSZW1vdmUgIydzdHJpbmctbW9kaWZpZWQt
dGljaywgYnVtcF9zdHJpbmdfbW9kaWZmKCkgZnJvbSB0aGlzCglmaWxlLgoJKiBsaXNwLmg6Cgkq
IGxpc3AuaCAoc3RydWN0IExpc3BfU3RyaW5nKToKCUFkZCBhIGhlYWRlciBmbGFnIGhlcmUsIGRv
Y3VtZW50aW5nIHdoZXRoZXIgYSBzdHJpbmcgaGFzIGV2ZXIgYmVlbgoJbW9kaWZpZWQuCgkqIGxp
c3AuaCAoTUFYX1NUUklOR19BU0NJSV9CRUdJTik6IE5ldyBkZWZpbml0aW9uLgoJKiBsaXNwLmgg
KFhTVFJJTkdfTU9ESUZGUCk6CglNYWtlIHRoZSBmbGFnIGF2YWlsYWJsZS4KCnRlc3RzL0NoYW5n
ZUxvZyBhZGRpdGlvbjoKCjIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2Fy
ZC5uZXQ+CgoJKiBhdXRvbWF0ZWQvbGlzcC10ZXN0cy5lbDoKCUNoZWNrIHRoYXQgYSBmaXhudW0g
d29ya3MgY29ycmVjdGx5IGFzIGEga2V5IGluIGEgc3RyaW5nIHBsaXN0LCBhCglidWcganVzdCBm
aXhlZC4KCmRpZmYgLXIgOWZjYTc2NmY5ZDMxIC1yIGI3YWM2NmFjNWU1NCBzcmMvQ2hhbmdlTG9n
Ci0tLSBhL3NyYy9DaGFuZ2VMb2cJVGh1IEFwciAxNCAwMToxMjoxMiAyMDE2ICswMTAwCisrKyBi
L3NyYy9DaGFuZ2VMb2cJU3VuIEFwciAyNCAyMzozOTo1NyAyMDE2ICswMTAwCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisK
KwlGaXggYSBidWcgd2hlcmUgYSBmaXhudW0gdXNlZCBhcyBhIGtleSBpbiBhIHN0cmluZydzIHBs
aXN0IHdhcworCXNpbGVudGx5IGNvcnJ1cHRlZC4KKwkqIGFsbG9jLmM6CisJKiBhbGxvYy5jIChz
dHJpbmdfcGxpc3RfcHRyKToKKwlDaGVjayBhIGZsYWcgaW4gdGhlIGhlYWRlciB0byBmaW5kIG91
dCB3aGV0aGVyIHRoaXMgc3RyaW5nIHdhcworCWV2ZXIgbW9kaWZpZWQsIHJhdGhlciB0aGFuIGFz
c3VtaW5nIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQorCWNvcnJlc3BvbmRpbmcgZW50cnkgb2Yg
dGhlIHBsaXN0LgorCSogYWxsb2MuYyAoc3RyaW5nX2V4dGVudF9pbmZvKToKKwlOZXcgZnVuY3Rp
b24sIGVuY2Fwc3VsYXRlIGFjY2VzcyB0byB0aGUgc3RyaW5nJ3MgcGxpc3QuCisJKiBhbGxvYy5j
IChidW1wX3N0cmluZ19tb2RpZmYpOgorCU1vdmUgdGhpcyBhY2Nlc3NvciBoZXJlLgorCSogYWxs
b2MuYyAobWFrZV91bmluaXRfc3RyaW5nKToKKwlDbGVhciB0aGUgTU9ESUZGUCBoZWFkZXIgZmxh
ZyBvbiBhbGxvY2F0aW9uLgorCSogYWxsb2MuYyAoRnN0cmluZ19tb2RpZmllZF90aWNrKToKKwlN
b3ZlIHRoaXMgaGVyZSBmcm9tIGZucy5jLCBpdCdzIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLCBpdCBt
YWtlcworCW1vcmUgc2Vuc2UgdG8gaGF2ZSBpdCBoZXJlLgorCSogYWxsb2MuYyAoc3ltc19vZl9h
bGxvYyk6CisJKiBleHRlbnRzLmM6CisJKiBleHRlbnRzLmMgKGJ1ZmZlcl9vcl9zdHJpbmdfZXh0
ZW50X2luZm8pOgorCVVzZSBzdHJpbmdfZXh0ZW50X2luZm8gKCkgaGVyZS4KKwkqIGZucy5jOgor
CSogZm5zLmMgKHN5bXNfb2ZfZm5zKToKKwlSZW1vdmUgIydzdHJpbmctbW9kaWZpZWQtdGljaywg
YnVtcF9zdHJpbmdfbW9kaWZmKCkgZnJvbSB0aGlzCisJZmlsZS4KKwkqIGxpc3AuaDoKKwkqIGxp
c3AuaCAoc3RydWN0IExpc3BfU3RyaW5nKToKKwlBZGQgYSBoZWFkZXIgZmxhZyBoZXJlLCBkb2N1
bWVudGluZyB3aGV0aGVyIGEgc3RyaW5nIGhhcyBldmVyIGJlZW4KKwltb2RpZmllZC4KKwkqIGxp
c3AuaCAoTUFYX1NUUklOR19BU0NJSV9CRUdJTik6IE5ldyBkZWZpbml0aW9uLgorCSogbGlzcC5o
IChYU1RSSU5HX01PRElGRlApOgorCU1ha2UgdGhlIGZsYWcgYXZhaWxhYmxlLgorCiAyMDE2LTA0
LTE0ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgogCiAJKiBwcmludC5jIChv
dXRwdXRfc3RyaW5nKToKZGlmZiAtciA5ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9h
bGxvYy5jCi0tLSBhL3NyYy9hbGxvYy5jCVRodSBBcHIgMTQgMDE6MTI6MTIgMjAxNiArMDEwMAor
KysgYi9zcmMvYWxsb2MuYwlTdW4gQXByIDI0IDIzOjM5OjU3IDIwMTYgKzAxMDAKQEAgLTI2NzIs
MTUgKzI2NzIsMjEgQEAKICAgeyBYRF9FTkQgfQogfTsKIAotLyogV2Ugc3RvcmUgdGhlIHN0cmlu
ZydzIGV4dGVudCBpbmZvIGFzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBzdHJpbmcncwotICAg
cHJvcGVydHkgbGlzdDsgYW5kIHRoZSBzdHJpbmcncyBNT0RJRkYgYXMgdGhlIGZpcnN0IG9yIHNl
Y29uZCBlbGVtZW50Ci0gICBvZiB0aGUgc3RyaW5nJ3MgcHJvcGVydHkgbGlzdCAoZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIGV4dGVudCBpbmZvCi0gICBpcyBwcmVzZW50KSwgYnV0IG9ubHkgaWYg
dGhlIHN0cmluZyBoYXMgYmVlbiBtb2RpZmllZC4gIFRoaXMgaXMgdWdseQotICAgYnV0IGl0IHJl
ZHVjZXMgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHZhc3QKLSAg
IG1ham9yaXR5IG9mIGNhc2VzLCB3aGVyZSB0aGUgc3RyaW5nIGlzIG5ldmVyIG1vZGlmaWVkIGFu
ZCBoYXMgbm8KLSAgIGV4dGVudCBpbmZvLgotCi0gICAjIyMjIFRoaXMgbWVhbnMgeW91IGNhbid0
IHVzZSBhbiBpbnQgYXMgYSBrZXkgaW4gYSBzdHJpbmcncyBwbGlzdC4gKi8KKy8qIFRoZSB2YXN0
IG1ham9yaXR5IG9mIHN0cmluZ3MgaGF2ZSBubyBhc3NvY2lhdGVkIGV4dGVudCBpbmZvIGFuZCB3
aWxsIG5ldmVyCisgICBiZSBtb2RpZmllZC4gSW4gdGhlIGludGVyZXN0IG9mIGNvbnNlcnZpbmcg
bWVtb3J5LCB3ZSBkbyBub3Qga2VlcCBleHRlbnQKKyAgIGluZm8gb3IgdGhlIG1vZGlmaWVkIGNv
dW50ZXIgZGlyZWN0bHkgaW4gdGhlIHN0cmluZyBvYmplY3QuIEluc3RlYWQsIHdlCisgICBhYnVz
ZSB0aGUgc3RyaW5nIHBsaXN0IGF0dHJpYnV0ZS4KKworICAgSWYgdGhlIGZpcnN0IGVsZW1lbnQg
b2YgdGhlIHBsaXN0IGlzIEVYVEVOVF9JTkZPUCAoYSB0eXBlIG9mIG9iamVjdCBub3QKKyAgIHZp
c2libGUgdG8gTGlzcCBhbmQgd2hpY2ggY29uc2VxdWVudGx5IHdpbGwgbmV2ZXIgZW5kIHVwIGlu
IHRoZSBwbGlzdCBpbgorICAgdGhlIG5vcm1hbCBjb3Vyc2Ugb2YgZXZlbnRzKSwgdGhlbiB0aGF0
IGlzIHRoZSBzdHJpbmcncyBleHRlbnQgaW5mby4KKworICAgSWYgdGhlIG5leHQgZWxlbWVudCBv
ZiB0aGUgcGxpc3QgaXMgYSBmaXhudW0gYW5kIHdlIGhhdmUgZmxpcHBlZCBhIGJpdCBpbgorICAg
dGhlIGhlYWRlciB0byBkb2N1bWVudCB0aGF0IHRoaXMgc3RyaW5nIGhhcyBldmVyIGJlZW4gbW9k
aWZpZWQsIHRoZW4gdGhhdAorICAgZml4bnVtIGlzIHRoZSBzdHJpbmcncyBtb2RpZmllZCBjb3Vu
dGVyLgorCisgICBUaGUgc3RyaW5nJ3MgdHJ1ZSBwbGlzdCBzdGFydHMgYWZ0ZXIgYW55IGV4dGVu
dCBpbmZvIGFuZCBhbnkgbW9kaWZpZWQKKyAgIHRpY2suICovCiAKIHN0YXRpYyBMaXNwX09iamVj
dCAqCiBzdHJpbmdfcGxpc3RfcHRyIChMaXNwX09iamVjdCBzdHJpbmcpCkBAIC0yNjg5LDggKzI2
OTUsMTEgQEAKIAogICBpZiAoQ09OU1AgKCpwdHIpICYmIEVYVEVOVF9JTkZPUCAoWENBUiAoKnB0
cikpKQogICAgIHB0ciA9ICZYQ0RSICgqcHRyKTsKLSAgaWYgKENPTlNQICgqcHRyKSAmJiBGSVhO
VU1QIChYQ0FSICgqcHRyKSkpCi0gICAgcHRyID0gJlhDRFIgKCpwdHIpOworICBpZiAoQ09OU1Ag
KCpwdHIpICYmIFhTVFJJTkdfTU9ESUZGUCAoc3RyaW5nKSkKKyAgICB7CisgICAgICBzdHJ1Y3R1
cmVfY2hlY2tpbmdfYXNzZXJ0IChGSVhOVU1QIChYQ0FSICgqcHRyKSkpOworICAgICAgcHRyID0g
JlhDRFIgKCpwdHIpOworICAgIH0KICAgcmV0dXJuIHB0cjsKIH0KIApAQCAtMjcxOSw2ICsyNzI4
LDQyIEBACiAgIHJldHVybiAqc3RyaW5nX3BsaXN0X3B0ciAoc3RyaW5nKTsKIH0KIAorc3RydWN0
IGV4dGVudF9pbmZvICoKK3N0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmplY3Qgc3RyaW5nKQor
eworICBMaXNwX09iamVjdCBwbGlzdCA9IFhTVFJJTkdfUExJU1QgKHN0cmluZyk7CisKKyAgaWYg
KENPTlNQIChwbGlzdCkgJiYgRVhURU5UX0lORk9QIChYQ0FSIChwbGlzdCkpKQorICAgIHJldHVy
biBYRVhURU5UX0lORk8gKFhDQVIgKHBsaXN0KSk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3Zv
aWQKK2J1bXBfc3RyaW5nX21vZGlmZiAoTGlzcF9PYmplY3Qgc3RyKQoreworICBMaXNwX09iamVj
dCAqcHRyID0gJlhTVFJJTkdfUExJU1QgKHN0cik7CisKKyNpZmRlZiBJMThOMworICAvKiAjIyMj
IHJlbW92ZSB0aGUgYHN0cmluZy10cmFuc2xhdGFibGUnIHByb3BlcnR5IGZyb20gdGhlIHN0cmlu
ZywKKyAgICAgaWYgdGhlcmUgaXMgb25lLiAqLworI2VuZGlmCisKKyAgLyogc2tpcCBvdmVyIGV4
dGVudCBpbmZvIGlmIGl0J3MgdGhlcmUgKi8KKyAgaWYgKENPTlNQICgqcHRyKSAmJiBFWFRFTlRf
SU5GT1AgKFhDQVIgKCpwdHIpKSkKKyAgICBwdHIgPSAmWENEUiAoKnB0cik7CisgIGlmIChDT05T
UCAoKnB0cikgJiYgWFNUUklOR19NT0RJRkZQIChzdHIpKQorICAgIHsKKyAgICAgIHN0cnVjdHVy
ZV9jaGVja2luZ19hc3NlcnQgKEZJWE5VTVAgKFhDQVIgKCpwdHIpKSk7CisgICAgICBYQ0FSICgq
cHRyKSA9IG1ha2VfZml4bnVtICgxICsgWEZJWE5VTSAoWENBUiAoKnB0cikpKTsKKyAgICB9Cisg
IGVsc2UKKyAgICB7CisgICAgICBYU0VUX1NUUklOR19NT0RJRkZQIChzdHIpOworICAgICAgKnB0
ciA9IEZjb25zIChtYWtlX2ZpeG51bSAoMSksICpwdHIpOworICAgIH0KK30KKwogI2lmbmRlZiBO
RVdfR0MKIC8qIE5vIGBmaW5hbGl6ZScsIG9yIGBoYXNoJyBtZXRob2RzLgogICAgaW50ZXJuYWxf
aGFzaCgpIGFscmVhZHkga25vd3MgaG93IHRvIGhhc2ggc3RyaW5ncyBhbmQgZmluYWxpemF0aW9u
CkBAIC0yOTIzLDYgKzI5NjgsOSBAQAogICAgICBhc2NpaS1sZW5ndGggZmllbGQsIHRvIHNvbWUg
bm9uLXplcm8gdmFsdWUuICBXZSBuZWVkIHRvIHplcm8gaXQuICovCiAgIFhTRVRfU1RSSU5HX0FT
Q0lJX0JFR0lOICh3cmFwX3N0cmluZyAocyksIDApOwogCisgIC8qIFRoZXkgYWxzbyBvdmVycmlk
ZSB0aGUgTU9ESUZGUCBmbGFnLiAqLworICBYQ0xFQVJfU1RSSU5HX01PRElGRlAgKHdyYXBfc3Ry
aW5nIChzKSk7CisKICNpZmRlZiBORVdfR0MKICAgc2V0X2xpc3BzdHJpbmdwX2RpcmVjdCAocyk7
CiAgIFNUUklOR19EQVRBX09CSkVDVCAocykgPSAKQEAgLTMyMTYsNiArMzI2NCwzMCBAQAogICBy
ZXR1cm4gbWFrZV9zdHJpbmcgKHN0b3JhZ2UsIHAgLSBzdG9yYWdlKTsKIH0KIAorREVGVU4gKCJz
dHJpbmctbW9kaWZpZWQtdGljayIsIEZzdHJpbmdfbW9kaWZpZWRfdGljaywgMSwgMSwgMCwgLyoK
K1JldHVybiBTVFJJTkcncyB0aWNrIGNvdW50ZXIsIGluY3JlbWVudGVkIGZvciBlYWNoIGNoYW5n
ZSB0byB0aGUgc3RyaW5nLgorRWFjaCBzdHJpbmcgaGFzIGEgdGljayBjb3VudGVyIHdoaWNoIGlz
IGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgY29udGVudHMKK29mIHRoZSBzdHJpbmcgYXJlIGNo
YW5nZWQgKGUuZy4gd2l0aCBgYXNldCcpLiAgSXQgd3JhcHMgYXJvdW5kIG9jY2FzaW9uYWxseS4K
KyovCisgICAgICAgKHN0cmluZykpCit7CisgIExpc3BfT2JqZWN0IHBsaXN0OworICBDSEVDS19T
VFJJTkcgKHN0cmluZyk7CisKKyAgcGxpc3QgPSBYU1RSSU5HX1BMSVNUIChzdHJpbmcpOworICBp
ZiAoQ09OU1AgKHBsaXN0KSAmJiBFWFRFTlRfSU5GT1AgKFhDQVIgKHBsaXN0KSkpCisgICAgewor
ICAgICAgcGxpc3QgPSBYQ0RSIChwbGlzdCk7CisgICAgfQorCisgIGlmIChDT05TUCAocGxpc3Qp
ICYmIFhTVFJJTkdfTU9ESUZGUCAoc3RyaW5nKSkKKyAgICB7CisgICAgICByZXR1cm4gWENBUiAo
cGxpc3QpOworICAgIH0KKworICByZXR1cm4gUXplcm87Cit9CisKIC8qIEluaXRpYWxpemUgdGhl
IGFzY2lpX2JlZ2luIG1lbWJlciBvZiBhIHN0cmluZyB0byB0aGUgY29ycmVjdCB2YWx1ZS4gKi8K
IAogdm9pZApAQCAtNTk5MSw2ICs2MDYzLDcgQEAKICAgREVGU1VCUiAoRm1ha2VfYml0X3ZlY3Rv
cik7CiAgIERFRlNVQlIgKEZtYWtlX3N0cmluZyk7CiAgIERFRlNVQlIgKEZzdHJpbmcpOworICBE
RUZTVUJSIChGc3RyaW5nX21vZGlmaWVkX3RpY2spOwogICBERUZTVUJSIChGbWFrZV9zeW1ib2wp
OwogICBERUZTVUJSIChGbWFrZV9tYXJrZXIpOwogI2lmZGVmIEFMTE9DX1RZUEVfU1RBVFMKZGlm
ZiAtciA5ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9leHRlbnRzLmMKLS0tIGEvc3Jj
L2V4dGVudHMuYwlUaHUgQXByIDE0IDAxOjEyOjEyIDIwMTYgKzAxMDAKKysrIGIvc3JjL2V4dGVu
dHMuYwlTdW4gQXByIDI0IDIzOjM5OjU3IDIwMTYgKzAxMDAKQEAgLTk0NywyMCArOTQ3LDE3IEBA
CiB9CiAKIC8qIEdpdmVuIGFuIGV4dGVudCBvYmplY3QgKHN0cmluZyBvciBidWZmZXIgb3Igbmls
KSwgcmV0dXJuIGl0cyBleHRlbnQgaW5mby4KLSAgIFRoaXMgbWF5IGJlIDAgZm9yIGEgc3RyaW5n
LiAqLworICAgVGhpcyBtYXkgYmUgTlVMTCBmb3IgYSBzdHJpbmcuICovCiAKIHN0YXRpYyBzdHJ1
Y3QgZXh0ZW50X2luZm8gKgogYnVmZmVyX29yX3N0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmpl
Y3Qgb2JqZWN0KQogewogICBpZiAoU1RSSU5HUCAob2JqZWN0KSkKICAgICB7Ci0gICAgICBMaXNw
X09iamVjdCBwbGlzdCA9IFhTVFJJTkdfUExJU1QgKG9iamVjdCk7Ci0gICAgICBpZiAoIUNPTlNQ
IChwbGlzdCkgfHwgIUVYVEVOVF9JTkZPUCAoWENBUiAocGxpc3QpKSkKLQlyZXR1cm4gMDsKLSAg
ICAgIHJldHVybiBYRVhURU5UX0lORk8gKFhDQVIgKHBsaXN0KSk7CisgICAgICByZXR1cm4gc3Ry
aW5nX2V4dGVudF9pbmZvIChvYmplY3QpOwogICAgIH0KICAgZWxzZSBpZiAoTklMUCAob2JqZWN0
KSkKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKICAgZWxzZQogICAgIHJldHVybiBY
RVhURU5UX0lORk8gKFhCVUZGRVIgKG9iamVjdCktPmV4dGVudF9pbmZvKTsKIH0KZGlmZiAtciA5
ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9mbnMuYwotLS0gYS9zcmMvZm5zLmMJVGh1
IEFwciAxNCAwMToxMjoxMiAyMDE2ICswMTAwCisrKyBiL3NyYy9mbnMuYwlTdW4gQXByIDI0IDIz
OjM5OjU3IDIwMTYgKzAxMDAKQEAgLTMyMCwzOCArMzIwLDYgQEAKICAgcmV0dXJuIGVuZCA8IGxl
bjIgPyBRdCA6IFFuaWw7CiB9CiAKLURFRlVOICgic3RyaW5nLW1vZGlmaWVkLXRpY2siLCBGc3Ry
aW5nX21vZGlmaWVkX3RpY2ssIDEsIDEsIDAsIC8qCi1SZXR1cm4gU1RSSU5HJ3MgdGljayBjb3Vu
dGVyLCBpbmNyZW1lbnRlZCBmb3IgZWFjaCBjaGFuZ2UgdG8gdGhlIHN0cmluZy4KLUVhY2ggc3Ry
aW5nIGhhcyBhIHRpY2sgY291bnRlciB3aGljaCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhl
IGNvbnRlbnRzCi1vZiB0aGUgc3RyaW5nIGFyZSBjaGFuZ2VkIChlLmcuIHdpdGggYGFzZXQnKS4g
IEl0IHdyYXBzIGFyb3VuZCBvY2Nhc2lvbmFsbHkuCi0qLwotICAgICAgIChzdHJpbmcpKQotewot
ICBDSEVDS19TVFJJTkcgKHN0cmluZyk7Ci0gIGlmIChDT05TUCAoWFNUUklOR19QTElTVCAoc3Ry
aW5nKSkgJiYgRklYTlVNUCAoWENBUiAoWFNUUklOR19QTElTVCAoc3RyaW5nKSkpKQotICAgIHJl
dHVybiBYQ0FSIChYU1RSSU5HX1BMSVNUIChzdHJpbmcpKTsKLSAgZWxzZQotICAgIHJldHVybiBR
emVybzsKLX0KLQotdm9pZAotYnVtcF9zdHJpbmdfbW9kaWZmIChMaXNwX09iamVjdCBzdHIpCi17
Ci0gIExpc3BfT2JqZWN0ICpwdHIgPSAmWFNUUklOR19QTElTVCAoc3RyKTsKLQotI2lmZGVmIEkx
OE4zCi0gIC8qICMjIyMgcmVtb3ZlIHRoZSBgc3RyaW5nLXRyYW5zbGF0YWJsZScgcHJvcGVydHkg
ZnJvbSB0aGUgc3RyaW5nLAotICAgICBpZiB0aGVyZSBpcyBvbmUuICovCi0jZW5kaWYKLSAgLyog
c2tpcCBvdmVyIGV4dGVudCBpbmZvIGlmIGl0J3MgdGhlcmUgKi8KLSAgaWYgKENPTlNQICgqcHRy
KSAmJiBFWFRFTlRfSU5GT1AgKFhDQVIgKCpwdHIpKSkKLSAgICBwdHIgPSAmWENEUiAoKnB0cik7
Ci0gIGlmIChDT05TUCAoKnB0cikgJiYgRklYTlVNUCAoWENBUiAoKnB0cikpKQotICAgIFhDQVIg
KCpwdHIpID0gbWFrZV9maXhudW0gKDErWEZJWE5VTSAoWENBUiAoKnB0cikpKTsKLSAgZWxzZQot
ICAgICpwdHIgPSBGY29ucyAobWFrZV9maXhudW0gKDEpLCAqcHRyKTsKLX0KLQogDAogZW51bSAg
Y29uY2F0X3RhcmdldF90eXBlIHsgY19jb25zLCBjX3N0cmluZywgY192ZWN0b3IsIGNfYml0X3Zl
Y3RvciB9Owogc3RhdGljIExpc3BfT2JqZWN0IGNvbmNhdCAoaW50IG5hcmdzLCBMaXNwX09iamVj
dCAqYXJncywKQEAgLTMzNjAsNyArMzMyOCw2IEBACiAgIERFRlNVQlIgKEZzdHJpbmdfZXF1YWwp
OwogICBERUZTVUJSIChGY29tcGFyZV9zdHJpbmdzKTsKICAgREVGU1VCUiAoRnN0cmluZ19sZXNz
cCk7Ci0gIERFRlNVQlIgKEZzdHJpbmdfbW9kaWZpZWRfdGljayk7CiAgIERFRlNVQlIgKEZhcHBl
bmQpOwogICBERUZTVUJSIChGY29uY2F0KTsKICAgREVGU1VCUiAoRnZjb25jYXQpOwpkaWZmIC1y
IDlmY2E3NjZmOWQzMSAtciBiN2FjNjZhYzVlNTQgc3JjL2xpc3AuaAotLS0gYS9zcmMvbGlzcC5o
CVRodSBBcHIgMTQgMDE6MTI6MTIgMjAxNiArMDEwMAorKysgYi9zcmMvbGlzcC5oCVN1biBBcHIg
MjQgMjM6Mzk6NTcgMjAxNiArMDEwMApAQCAtMjU4NSwyNSArMjU4NSwyOCBAQAogICAgICAgc3Ry
dWN0IGxyZWNvcmRfaGVhZGVyIGxoZWFkZXI7CiAgICAgICBzdHJ1Y3QKIAl7Ci0JICAvKiBXQVJO
SU5HOiBFdmVyeXRoaW5nIGJlZm9yZSBhc2NpaV9iZWdpbiBtdXN0IGFncmVlIGV4YWN0bHkgd2l0
aAorCSAgLyogV0FSTklORzogRXZlcnl0aGluZyBiZWZvcmUgbW9kaWZmcCBtdXN0IGFncmVlIGV4
YWN0bHkgd2l0aAogCSAgICAgc3RydWN0IGxyZWNvcmRfaGVhZGVyLiAoQWN0dWFsbHksIHRoZSBg
ZnJlZScgZmllbGQgaW4gb2xkLUdDCi0JICAgICBvdmVybGFwcyB3aXRoIGFzY2lpX2JlZ2luIHRo
ZXJlOyB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzCisJICAgICBvdmVybGFwcyB3aXRoIG1vZGlm
ZnAgdGhlcmU7IHdlIGNhbiBnZXQgYXdheSB3aXRoIHRoaXMKIAkgICAgIGJlY2F1c2UgaW4gb2xk
LUdDIHRoZSBgZnJlZScgZmllbGQgaXMgdXNlZCBvbmx5IGZvciBsY3JlY29yZHMuICovCiAJICB1
bnNpZ25lZCBpbnQgdHlwZSA6ODsKICNpZmRlZiBORVdfR0MKIAkgIHVuc2lnbmVkIGludCBsaXNw
X3JlYWRvbmx5IDoxOwogCSAgdW5zaWduZWQgaW50IGZyZWUgOjE7Ci0JICAvKiBOdW1iZXIgb2Yg
Y2hhcnMgYXQgYmVnaW5uaW5nIG9mIHN0cmluZyB0aGF0IGFyZSBvbmUgYnl0ZSBpbiBsZW5ndGgK
LQkgICAgIChieXRlX2FzY2lpX3ApICovCi0JICB1bnNpZ25lZCBpbnQgYXNjaWlfYmVnaW4gOjIy
OworI2RlZmluZSBOVU1fQVNDSUlfQkVHSU5fQklUUyAyMQogI2Vsc2UgLyogbm90IE5FV19HQyAq
LwogCSAgdW5zaWduZWQgaW50IG1hcmsgOjE7CiAJICB1bnNpZ25lZCBpbnQgY19yZWFkb25seSA6
MTsKIAkgIHVuc2lnbmVkIGludCBsaXNwX3JlYWRvbmx5IDoxOworI2RlZmluZSBOVU1fQVNDSUlf
QkVHSU5fQklUUyAyMAorI2VuZGlmIC8qIG5vdCBORVdfR0MgKi8KKwkgIC8qIEEgZmxhZyBkZXNj
cmliaW5nIHdoZXRoZXIgdGhpcyBzdHJpbmcgaGFzIGV2ZXIgYmVlbgorCSAgICAgbW9kaWZpZWQ7
IHRoZSBhY3R1YWwgbW9kaWZpZWQgdGljayBpcyBzdG9yZWQgb24gdGhlIHBsaXN0CisJICAgICBp
ZiBhbmQgb25seSBpZiB0aGlzIGZsYWcgaXMgbm9uLXplcm8uICovCisJICB1bnNpZ25lZCBpbnQg
bW9kaWZmcCA6MTsKIAkgIC8qIE51bWJlciBvZiBjaGFycyBhdCBiZWdpbm5pbmcgb2Ygc3RyaW5n
IHRoYXQgYXJlIG9uZSBieXRlIGluIGxlbmd0aAogCSAgICAgKGJ5dGVfYXNjaWlfcCkgKi8KLQkg
IHVuc2lnbmVkIGludCBhc2NpaV9iZWdpbiA6MjE7Ci0jZW5kaWYgLyogbm90IE5FV19HQyAqLwor
CSAgdW5zaWduZWQgaW50IGFzY2lpX2JlZ2luIDpOVU1fQVNDSUlfQkVHSU5fQklUUzsKIAl9IHY7
CiAgICAgfSB1OwogI2lmZGVmIE5FV19HQwpAQCAtMjYxNywxMSArMjYyMCw3IEBACiB9OwogdHlw
ZWRlZiBzdHJ1Y3QgTGlzcF9TdHJpbmcgTGlzcF9TdHJpbmc7CiAKLSNpZmRlZiBORVdfR0MKLSNk
ZWZpbmUgTUFYX1NUUklOR19BU0NJSV9CRUdJTiAoKDEgPDwgMjIpIC0gMSkKLSNlbHNlIC8qIG5v
dCBORVdfR0MgKi8KLSNkZWZpbmUgTUFYX1NUUklOR19BU0NJSV9CRUdJTiAoKDEgPDwgMjEpIC0g
MSkKLSNlbmRpZiAvKiBub3QgTkVXX0dDICovCisjZGVmaW5lIE1BWF9TVFJJTkdfQVNDSUlfQkVH
SU4gKCgxIDw8IE5VTV9BU0NJSV9CRUdJTl9CSVRTKSAtIDEpCiAKIERFQ0xBUkVfTU9EVUxFX0FQ
SV9MSVNQX09CSkVDVCAoc3RyaW5nLCBMaXNwX1N0cmluZyk7CiAjZGVmaW5lIFhTVFJJTkcoeCkg
WFJFQ09SRCAoeCwgc3RyaW5nLCBMaXNwX1N0cmluZykKQEAgLTI2ODMsNiArMjY4MiwxMCBAQAog
ICAoKHZvaWQpIChYU1RSSU5HIChzKS0+dS52LmFzY2lpX2JlZ2luID0gKHZhbCkpKQogI2RlZmlu
ZSBYU1RSSU5HX0ZPUk1BVChzKSBGT1JNQVRfREVGQVVMVAogCisjZGVmaW5lIFhTVFJJTkdfTU9E
SUZGUChzKSAoWFNUUklORyAocyktPnUudi5tb2RpZmZwICsgMCkKKyNkZWZpbmUgWFNFVF9TVFJJ
TkdfTU9ESUZGUChzKSAoWFNUUklORyAocyktPnUudi5tb2RpZmZwID0gMSkKKyNkZWZpbmUgWENM
RUFSX1NUUklOR19NT0RJRkZQKHMpICgoWFNUUklORyAocyktPnUudi5tb2RpZmZwID0gMCksIDEp
CisKIC8qIFJldHVybiB0aGUgdHJ1ZSBhbGlnbmVkIHNpemUgb2YgYSBzdHJ1Y3Qgd2hvc2UgbGFz
dCBtZW1iZXIgaXMgYQogICAgdmFyaWFibGUtbGVuZ3RoIGFycmF5IGZpZWxkLiAgKHRoaXMgaXMg
a25vd24gYXMgdGhlICJzdHJ1Y3QgaGFjayIpICovCiAvKiBJbXBsZW1lbnRhdGlvbjogaW4gcHJh
Y3RpY2UsIHN0cnVjdHR5cGUgYW5kIGZpZWxkdHlwZSB1c3VhbGx5IGhhdmUKQEAgLTQ0MDcsNiAr
NDQxMCw4IEBACiBNT0RVTEVfQVBJIExpc3BfT2JqZWN0IG1ha2VfZXh0c3RyaW5nIChjb25zdCBF
eHRieXRlICosIEVNQUNTX0lOVCwgTGlzcF9PYmplY3QpOwogdm9pZCBpbml0X3N0cmluZ19hc2Np
aV9iZWdpbiAoTGlzcF9PYmplY3Qgc3RyaW5nKTsKIExpc3BfT2JqZWN0IG1ha2VfdW5pbml0X3N0
cmluZyAoQnl0ZWNvdW50KTsKK3ZvaWQgYnVtcF9zdHJpbmdfbW9kaWZmIChMaXNwX09iamVjdCk7
CitzdHJ1Y3QgZXh0ZW50X2luZm8gKnN0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmplY3QpOwog
TU9EVUxFX0FQSSBMaXNwX09iamVjdCBtYWtlX2Zsb2F0IChkb3VibGUpOwogTGlzcF9PYmplY3Qg
bWFrZV9zdHJpbmdfbm9jb3B5IChjb25zdCBJYnl0ZSAqLCBCeXRlY291bnQpOwogdm9pZCBmcmVl
X2NvbnMgKExpc3BfT2JqZWN0KTsKQEAgLTUzNzAsNyArNTM3NSw2IEBACiAJCSAgICAgICBjaGVj
a190ZXN0X2Z1bmNfdCBjaGVja19tZXJnZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGlzcF9P
YmplY3QgcHJlZGljYXRlLCBMaXNwX09iamVjdCBrZXlfZnVuYyk7CiAKLXZvaWQgYnVtcF9zdHJp
bmdfbW9kaWZmIChMaXNwX09iamVjdCk7CiBMaXNwX09iamVjdCBtZW1xX25vX3F1aXQgKExpc3Bf
T2JqZWN0LCBMaXNwX09iamVjdCk7CiBMaXNwX09iamVjdCBhc3NvY19ub19xdWl0IChMaXNwX09i
amVjdCwgTGlzcF9PYmplY3QpOwogTGlzcF9PYmplY3QgYXNzcV9ub19xdWl0IChMaXNwX09iamVj
dCwgTGlzcF9PYmplY3QpOwpkaWZmIC1yIDlmY2E3NjZmOWQzMSAtciBiN2FjNjZhYzVlNTQgdGVz
dHMvQ2hhbmdlTG9nCi0tLSBhL3Rlc3RzL0NoYW5nZUxvZwlUaHUgQXByIDE0IDAxOjEyOjEyIDIw
MTYgKzAxMDAKKysrIGIvdGVzdHMvQ2hhbmdlTG9nCVN1biBBcHIgMjQgMjM6Mzk6NTcgMjAxNiAr
MDEwMApAQCAtMSwzICsxLDkgQEAKKzIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBh
cmhhc2FyZC5uZXQ+CisKKwkqIGF1dG9tYXRlZC9saXNwLXRlc3RzLmVsOgorCUNoZWNrIHRoYXQg
YSBmaXhudW0gd29ya3MgY29ycmVjdGx5IGFzIGEga2V5IGluIGEgc3RyaW5nIHBsaXN0LCBhCisJ
YnVnIGp1c3QgZml4ZWQuCisKIDIwMTYtMDQtMTQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhh
c2FyZC5uZXQ+CiAKIAkqIGF1dG9tYXRlZC9tdWxlLXRlc3RzLmVsOgpkaWZmIC1yIDlmY2E3NjZm
OWQzMSAtciBiN2FjNjZhYzVlNTQgdGVzdHMvYXV0b21hdGVkL2xpc3AtdGVzdHMuZWwKLS0tIGEv
dGVzdHMvYXV0b21hdGVkL2xpc3AtdGVzdHMuZWwJVGh1IEFwciAxNCAwMToxMjoxMiAyMDE2ICsw
MTAwCisrKyBiL3Rlc3RzL2F1dG9tYXRlZC9saXNwLXRlc3RzLmVsCVN1biBBcHIgMjQgMjM6Mzk6
NTcgMjAxNiArMDEwMApAQCAtMTM0NywxMSArMTM0NywxMSBAQAogICAoQXNzZXJ0IChlcSB0IChy
ZW1wcm9wIG9iaiA/MykpIG9iaikKICAgKHdoZW4gKG9yIChzdHJpbmdwIG9iaikgKHN5bWJvbHAg
b2JqKSkKICAgICAoQXNzZXJ0IChlcSAnKCkgKG9iamVjdC1wbGlzdCBvYmopKSBvYmopKQotICAo
QXNzZXJ0IChlcSBuaWwgKHJlbXByb3Agb2JqID8zKSkgb2JqKQorICAoQXNzZXJ0IChlcWwgMjAw
IChwdXQgb2JqIG1vc3QtcG9zaXRpdmUtZml4bnVtIDIwMCkpKQorICAoQXNzZXJ0IChlcWwgKGdl
dCBvYmogbW9zdC1wb3NpdGl2ZS1maXhudW0pIDIwMCkpCisgIChBc3NlcnQgKGVxIDUgKGdldCBv
YmogPzMgNSkpIG9iaikKICAgKHdoZW4gKG9yIChzdHJpbmdwIG9iaikgKHN5bWJvbHAgb2JqKSkK
LSAgICAoQXNzZXJ0IChlcSAnKCkgKG9iamVjdC1wbGlzdCBvYmopKSBvYmopKQotICAoQXNzZXJ0
IChlcSA1IChnZXQgb2JqID8zIDUpKSBvYmopCi0gICkKKyAgICAoQXNzZXJ0IChlcSAnKCkgKG9i
amVjdC1wbGlzdCBvYmopKSBvYmopKSkKIAogKENoZWNrLUVycm9yLU1lc3NhZ2UKICBlcnJvciAi
T2JqZWN0IHR5cGUgaGFzIG5vIHByb3BlcnRpZXMiCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRo
ZXIgZmVkIHRvIGNhdHRsZSBb4oCmXSB3aGVuIHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQK
YW5pbWFscykgc28gdGhhdCB0aGUgYW5pbWFscyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKA
puKAmQoJ4oCUIEFuZ2V3YW5kdGUgQ2hlbWllLCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNv
Y2lhbCBjb250ZXh0IG9mCgkoc3ludGhldGljKSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBp
biBDYW1lcm9vbiB0cmVlIHJvb3RzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KWEVtYWNzLVBhdGNoZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVz
QHhlbWFjcy5vcmcKaHR0cDovL2xpc3RzLnhlbWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1h
Y3MtcGF0Y2hlcwo=