[PR] tests/checkasm: Use init callback to reset parameters with --repeat (PR #23940)

mkver via ffmpeg-devel <[email protected]> Tue, 28 Jul 2026 14:43:28 -0000
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178524980878.51.8066532097484245206@29965ddac10e>
UFIgIzIzOTQwIG9wZW5lZCBieSBta3ZlcgpVUkw6IGh0dHBzOi8vY29kZS5mZm1wZWcub3JnL0ZG
bXBlZy9GRm1wZWcvcHVsbHMvMjM5NDAKUGF0Y2ggVVJMOiBodHRwczovL2NvZGUuZmZtcGVnLm9y
Zy9GRm1wZWcvRkZtcGVnL3B1bGxzLzIzOTQwLnBhdGNoCgpBbHNvIGZpeCBhIHNlZ2ZhdWx0IGlu
IGF2X3R4IHdoZW4gdXNpbmcgLS1yZXBlYXQgKGluIGEgZGlmZmVyZW50IHdheSB0byAjMjM3OTYp
LgoKCkZyb20gMGQ2YjY0M2E2N2RiNjY3OWM2MjA0MjU1YTliZDRhOGRjY2Y0ZjFlZCBNb24gU2Vw
IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWlu
aGFyZHRAb3V0bG9vay5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTE6MzY6MzAgKzAyMDAK
U3ViamVjdDogW1BBVENIIDEvOV0gU3F1YXNoZWQgJ3Rlc3RzL2NoZWNrYXNtL2V4dC8nIGNoYW5n
ZXMgZnJvbQogZTEzYjBiYjNmZi4uZTQ2YzQ3M2Y3MwoKZTQ2YzQ3M2Y3MyBSZS1vcmRlciBjb25k
aXRpb25hbCAobW9zdGx5IGNvc21ldGljKQoxNjczOGYwMjhkIFNlZWQgUFJORyBiZWZvcmUgcnVu
bmluZyBDaGVja2FzbVRlc3QuaW5pdCgpCjkyOTJmOWNmNmQgQmlrZXNoZWQgc3VtbWFyeSBsaW5l
IGEgYml0IG1vcmUsIGVzcGVjaWFsbHkgZm9yIGludGVycnVwdGVkIHJ1bnMKMGYwMzYxMmVjOSBT
dXBwcmVzcyBub24tZmFpbHVyZSBvdXRwdXQgYWZ0ZXIgZmlyc3QgaXRlcmF0aW9uCmJmZGIyMzBk
ZDkgY2hlY2thc206IFByaW50IHN0YXR1c2xpbmUgdG8gdHJhY2sgY3VycmVudCB0ZXN0L2JlbmNo
IHByb2dyZXNzCmM4OTk2YTI4NGIgY2hlY2thc206IE1vdmUgdGVzdCBpdGVyYXRpb24gdmFyaWFi
bGUgdG8gZ2xvYmFsIHN0YXRlCjQ2ZTEzNmVlMGUgdXRpbHM6IEFkZCBzZWxmLXJlcGFpbnRpbmcg
c3RhdHVzbGluZSBidWZmZXIKODAwMDUzZWRjYSBSb3V0ZSBhbGwgbG9nIG1lc3NhZ2VzIHRocm91
Z2ggY2hlY2thc21fZnByaW50ZigpCmY2NzkxZmVlNTkgdXRpbHM6IFJlZGVmaW5lIGNoZWNrYXNt
X2ZwcmludGYoKSBhcyBjaGVja2FzbV92ZnByaW50ZigpCjYyOWEyMTFmZWIgQWRkIG9wdGlvbmFs
IENoZWNrYXNtVGVzdC5pbml0KCkgYW5kIHVuaW5pdCgpCjM1NGYzZDNlOGQgcmlzY3YvY2FsbGNo
ZWNrOiBBdm9pZCBvdXQtb2YtcmFuZ2UgbGkgaW1tZWRpYXRlIHVuZGVyIExMVk0gb24gcnYzMgo2
ZTFiNGNkNmNhIHJpc2N2L2NwdTogSW5jbHVkZSA8YXNtL3VuaXN0ZC5oPiBmb3IgX19OUl9yaXNj
dl9od3Byb2JlCjgxMzAwNDNiMzIgRml4IENQVSBkZXRlY3Rpb24gZm9yIEFWWDUxMkYKOTc2MDgx
MGI0OSBTdXBwb3J0IFlNTSBjb3B5IHRlc3RzIG9uIHByb2Nlc3NvcnMgd2l0aCBvbmx5IEFWWApk
YzhjMzIwMzEzIFN1cHBvcnQgWE1NIGNvcHkgdGVzdHMgb24gcHJvY2Vzc29ycyB3aXRoIG9ubHkg
U1NFCgpnaXQtc3VidHJlZS1kaXI6IHRlc3RzL2NoZWNrYXNtL2V4dApnaXQtc3VidHJlZS1zcGxp
dDogZTQ2YzQ3M2Y3M2U3NDczMDFkNDRkMmU3ZjgxMTdlMjNmOWEwNmY2NAotLS0KIGluY2x1ZGUv
Y2hlY2thc20vY2hlY2thc20uaCB8ICAxOCArKystCiBzcmMvY2hlY2thc20uYyAgICAgICAgICAg
ICAgfCAxNzQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvaW50ZXJu
YWwuaCAgICAgICAgICAgICAgfCAgMjEgKysrKy0KIHNyYy9yaXNjdi9jYWxsY2hlY2suUyAgICAg
ICB8ICAgMiArLQogc3JjL3Jpc2N2L2NwdS5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy91dGls
cy5jICAgICAgICAgICAgICAgICB8ICA1MSArKysrKysrKystLQogc3JjL3g4Ni9jcHUuYyAgICAg
ICAgICAgICAgIHwgICAyICstCiB0ZXN0cy9zZWxmdGVzdC5jICAgICAgICAgICAgfCAgIDQgKy0K
IHRlc3RzL3Rlc3RzLmggICAgICAgICAgICAgICB8ICAgNCArLQogdGVzdHMveDg2L3Rlc3RzLmMg
ICAgICAgICAgIHwgIDM3ICsrKystLS0tCiB0ZXN0cy94ODYvdGVzdHNfYXNtLmFzbSAgICAgfCAg
MTAgKy0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2hlY2thc20vY2hlY2thc20uaCBiL2luY2x1ZGUv
Y2hlY2thc20vY2hlY2thc20uaAppbmRleCBmYzQwZmFiNGNkLi5hODZmNDFjNzJhIDEwMDY0NAot
LS0gYS9pbmNsdWRlL2NoZWNrYXNtL2NoZWNrYXNtLmgKKysrIGIvaW5jbHVkZS9jaGVja2FzbS9j
aGVja2FzbS5oCkBAIC0xMTcsNiArMTE3LDIwIEBAIHR5cGVkZWYgc3RydWN0IENoZWNrYXNtQ3B1
SW5mbyB7CiB0eXBlZGVmIHN0cnVjdCBDaGVja2FzbVRlc3QgewogICAgIGNvbnN0IGNoYXIgKm5h
bWU7ICAgLyoqPCBOYW1lIG9mIHRoZSB0ZXN0ICh1c2VkIGZvciBmaWx0ZXJpbmcgYW5kIHJlcG9y
dGluZykgKi8KICAgICB2b2lkICgqZnVuYykodm9pZCk7IC8qKjwgVGVzdCBmdW5jdGlvbiB0byBp
bnZva2UgKi8KKworICAgIC8qKgorICAgICAqIEBicmllZiBPcHRpb25hbCBpbml0aWFsaXphdGlv
biBmdW5jdGlvbgorICAgICAqCisgICAgICogVGhlc2UgZnVuY3Rpb25zLCBpZiBzZXQsIGFyZSBp
bnZva2VkIGJlZm9yZSB0ZXN0aW5nIGFueSBDUFUgZmxhZ3MKKyAgICAgKiBhbmQgYWZ0ZXIgdGVz
dGluZyBhbGwgQ1BVIGZsYWdzLCByZXNwZWN0aXZlbHkuCisgICAgICoKKyAgICAgKiBAbm90ZSBJ
ZiBDaGVja2FzbUNvbmZpZy5yZXBlYXQgPiAxLCB0aGV5IHdpbGwgYmUgY2FsbGVkIGZvciBldmVy
eQorICAgICAqIGl0ZXJhdGlvbi4KKyAgICAgKgorICAgICAqIEB3YXJuaW5nIFRoZXNlIGFyZSBj
YWxsZWQgZXZlbiB3aGVuIHJ1bm5pbmcgY2hlY2thc21fbGlzdF9mdW5jdGlvbnMoKS4KKyAgICAg
Ki8KKyAgICB2b2lkICgqaW5pdCkodm9pZCk7CisgICAgdm9pZCAoKnVuaW5pdCkodm9pZCk7CiB9
IENoZWNrYXNtVGVzdDsKIAogLyoqCkBAIC0zNjIsNyArMzc2LDkgQEAgQ0hFQ0tBU01fQVBJIHZv
aWQgY2hlY2thc21fbGlzdF90ZXN0cyhjb25zdCBDaGVja2FzbUNvbmZpZyAqY29uZmlnKTsKICAq
IEBub3RlIFRoaXMgcmVxdWlyZXMgZXhlY3V0aW5nIGFsbCB0ZXN0cyB0byBnYXRoZXIgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlCiAgKiAgICAgICBhdmFpbGFibGUgZnVuY3Rpb25zLiBEdXJpbmcgdGhp
cyBwcm9jZXNzLCBjaGVja2FzbV9jaGVja19mdW5jKCkgYWx3YXlzCiAgKiAgICAgICByZXR1cm5z
IDAgdG8gc2tpcCB0aGUgYWN0dWFsIHRlc3RpbmcuIEhvd2V2ZXIsIGFueSBzaWRlIGVmZmVjdHMg
ZnJvbQotICogICAgICAgdGVzdCBmdW5jdGlvbnMgd2lsbCBzdGlsbCBvY2N1ciwgdW5sZXNzIHBy
b3Blcmx5IGd1YXJkZWQuCisgKiAgICAgICB0ZXN0IGZ1bmN0aW9ucyB3aWxsIHN0aWxsIG9jY3Vy
LCB1bmxlc3MgcHJvcGVybHkgZ3VhcmRlZC4gSW4KKyAqICAgICAgIHBhcnRpY3VsYXIsIENoZWNr
YXNtVGVzdC5pbml0KCkgYW5kIENoZWNrYXNtVGVzdC51bmluaXQoKSB3aWxsIHN0aWxsCisgKiAg
ICAgICBiZSBleGVjdXRlZC4KICAqLwogQ0hFQ0tBU01fQVBJIHZvaWQgY2hlY2thc21fbGlzdF9m
dW5jdGlvbnMoY29uc3QgQ2hlY2thc21Db25maWcgKmNvbmZpZyk7CiAKZGlmZiAtLWdpdCBhL3Ny
Yy9jaGVja2FzbS5jIGIvc3JjL2NoZWNrYXNtLmMKaW5kZXggZTEwY2ZhMjNlYi4uMmViZWJhZWMz
ZCAxMDA2NDQKLS0tIGEvc3JjL2NoZWNrYXNtLmMKKysrIGIvc3JjL2NoZWNrYXNtLmMKQEAgLTEw
OCw2ICsxMDgsNyBAQCBzdGF0aWMgc3RydWN0IHsKICAgICAvKiBNaXNjZWxsYW5lb3VzIGdsb2Jh
bCBzdGF0ZSAoY29zbWV0aWMpICovCiAgICAgaW50IG1heF9mdW5jdGlvbl9uYW1lX2xlbmd0aDsK
ICAgICBpbnQgbWF4X3JlcG9ydF9uYW1lX2xlbmd0aDsKKyAgICB1bnNpZ25lZCB0ZXN0X2l0ZXI7
CiAKICAgICAvKiBUaW1pbmcgY29kZSBtZWFzdXJlbWVudHMgKGFnZ3JlZ2F0ZWQgb3ZlciBtdWx0
aXBsZSB0cmlhbHMpICovCiAgICAgQ2hlY2thc21NZWFzdXJlbWVudCBub3BfY3ljbGVzOwpAQCAt
NTIzLDYgKzUyNCwxMiBAQCBzdGF0aWMgaW50IHdpbGRzdHJjbXAoY29uc3QgY2hhciAqc3RyLCBj
b25zdCBjaGFyICpwYXR0ZXJuKQogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVfaW50ZXJydXB0KHZv
aWQpOworc3RhdGljIHZvaWQgdXBkYXRlX3N0YXR1c2xpbmUodm9pZCk7CisKK3N0YXRpYyBpbnQg
dGVzdF9lbmFibGVkKGNvbnN0IENoZWNrYXNtVGVzdCAqdGVzdCkKK3sKKyAgICByZXR1cm4gIWNm
Zy50ZXN0X3BhdHRlcm4gfHwgIXdpbGRzdHJjbXAodGVzdC0+bmFtZSwgY2ZnLnRlc3RfcGF0dGVy
bik7Cit9CiAKIC8qIFBlcmZvcm0gdGVzdHMgYW5kIGJlbmNobWFya3MgZm9yIHRoZSBzcGVjaWZp
ZWQKICAqIGNwdSBmbGFnIGlmIHN1cHBvcnRlZCBieSB0aGUgaG9zdCAqLwpAQCAtNTUwLDkgKzU1
NywxMCBAQCBzdGF0aWMgdm9pZCBjaGVja19jcHVfZmxhZyhjb25zdCBDaGVja2FzbUNwdUluZm8g
KmNwdSkKICAgICAgICAgY2ZnLnNldF9jcHVfZmxhZ3MoY3VycmVudC5jcHVfZmxhZ3MpOwogCiAg
ICAgZm9yIChjb25zdCBDaGVja2FzbVRlc3QgKnRlc3QgPSBjZmcudGVzdHM7IHRlc3QtPmZ1bmM7
IHRlc3QrKykgewotICAgICAgICBpZiAoY2ZnLnRlc3RfcGF0dGVybiAmJiB3aWxkc3RyY21wKHRl
c3QtPm5hbWUsIGNmZy50ZXN0X3BhdHRlcm4pKQorICAgICAgICBpZiAoIXRlc3RfZW5hYmxlZCh0
ZXN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjdXJyZW50LnRlc3RfbmFtZSA9
IHRlc3QtPm5hbWU7CisgICAgICAgIHVwZGF0ZV9zdGF0dXNsaW5lKCk7CiAKICAgICAgICAgaWYg
KGNoZWNrYXNtX3NhdmVfY29udGV4dChjaGVja2FzbV9jb250ZXh0KSkgewogICAgICAgICAgICAg
Y29uc3QgY2hhciAqc2lnbmFsID0gY2hlY2thc21fZ2V0X2xhc3Rfc2lnbmFsX2Rlc2MoKTsKQEAg
LTU5Miw4ICs2MDAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19jcHVfZmxhZyhjb25zdCBDaGVja2Fz
bUNwdUluZm8gKmNwdSkKIHN0YXRpYyB2b2lkIHByaW50X2NwdV9uYW1lKHZvaWQpCiB7CiAgICAg
aWYgKCFjdXJyZW50LmNwdV9uYW1lX3ByaW50ZWQpIHsKLSAgICAgICAgY2hlY2thc21fZnByaW50
ZihzdGRlcnIsIENPTE9SX1lFTExPVywgIiVzOlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50LmNwdSA/IGN1cnJlbnQuY3B1LT5uYW1lIDogIkMiKTsKKyAgICAgICAgTE9HX0NP
TE9SKENPTE9SX1lFTExPVywgIiVzOlxuIiwgY3VycmVudC5jcHUgPyBjdXJyZW50LmNwdS0+bmFt
ZSA6ICJDIik7CiAgICAgICAgIGN1cnJlbnQuY3B1X25hbWVfcHJpbnRlZCA9IDE7CiAgICAgfQog
fQpAQCAtNjUyLDE1ICs2NTksMTUgQEAgc3RhdGljIGludCBzZXRfY3B1X2FmZmluaXR5KGNvbnN0
IHVuc2lnbmVkIGFmZmluaXR5KQogI2Vsc2UKICAgICAodm9pZCkgYWZmaW5pdHk7CiAgICAgKHZv
aWQpIGFmZmluaXR5X2VycjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNrYXNtOiAtLWFmZmlu
aXR5IGlzIG5vdCBzdXBwb3J0ZWQgb24geW91ciBzeXN0ZW1cbiIpOworICAgIExPRygiY2hlY2th
c206IC0tYWZmaW5pdHkgaXMgbm90IHN1cHBvcnRlZCBvbiB5b3VyIHN5c3RlbVxuIik7CiAgICAg
cmV0dXJuIDE7CiAjZW5kaWYKIAogICAgIGlmIChhZmZpbml0eV9lcnIpIHsKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJjaGVja2FzbTogaW52YWxpZCBjcHUgYWZmaW5pdHkgKCV1KVxuIiwgYWZm
aW5pdHkpOworICAgICAgICBMT0coImNoZWNrYXNtOiBpbnZhbGlkIGNwdSBhZmZpbml0eSAoJXUp
XG4iLCBhZmZpbml0eSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiY2hlY2thc206IHJ1bm5pbmcgb24gY3B1ICV1XG4iLCBhZmZpbml0
eSk7CisgICAgICAgIExPRygiY2hlY2thc206IHJ1bm5pbmcgb24gY3B1ICV1XG4iLCBhZmZpbml0
eSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTY5Nyw2ICs3MDQsMjUgQEAgc3Rh
dGljIHZvaWQgcHJpbnRfZnVuY3Rpb25zKGNvbnN0IENoZWNrYXNtRnVuYyAqY29uc3QgZikKICAg
ICB9CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bl9hbGxfdGVzdHModm9pZCkKK3sKKyAgICBmb3IgKGNv
bnN0IENoZWNrYXNtVGVzdCAqdGVzdCA9IGNmZy50ZXN0czsgdGVzdC0+ZnVuYzsgdGVzdCsrKSB7
CisgICAgICAgIGlmICh0ZXN0LT5pbml0ICYmIHRlc3RfZW5hYmxlZCh0ZXN0KSkgeworICAgICAg
ICAgICAgY2hlY2thc21fc3JhbmQoY2ZnLnNlZWQpOworICAgICAgICAgICAgdGVzdC0+aW5pdCgp
OworICAgICAgICB9CisgICAgfQorCisgICAgY2hlY2tfY3B1X2ZsYWcoTlVMTCk7CisgICAgZm9y
IChjb25zdCBDaGVja2FzbUNwdUluZm8gKmluZm8gPSBjZmcuY3B1X2ZsYWdzOyBpbmZvLT5mbGFn
OyBpbmZvKyspCisgICAgICAgIGNoZWNrX2NwdV9mbGFnKGluZm8pOworCisgICAgZm9yIChjb25z
dCBDaGVja2FzbVRlc3QgKnRlc3QgPSBjZmcudGVzdHM7IHRlc3QtPmZ1bmM7IHRlc3QrKykgewor
ICAgICAgICBpZiAodGVzdC0+dW5pbml0ICYmIHRlc3RfZW5hYmxlZCh0ZXN0KSkKKyAgICAgICAg
ICAgIHRlc3QtPnVuaW5pdCgpOworICAgIH0KK30KKwogdm9pZCBjaGVja2FzbV9saXN0X2Z1bmN0
aW9ucyhjb25zdCBDaGVja2FzbUNvbmZpZyAqY29uZmlnKQogewogICAgIG1lbXNldCgmc3RhdGUs
IDAsIHNpemVvZihzdGF0ZSkpOwpAQCAtNzA0LDkgKzczMCw3IEBAIHZvaWQgY2hlY2thc21fbGlz
dF9mdW5jdGlvbnMoY29uc3QgQ2hlY2thc21Db25maWcgKmNvbmZpZykKICAgICBzdGF0ZS5za2lw
X3Rlc3RzID0gMTsKICAgICBjZmcgICAgICAgICAgICAgID0gKmNvbmZpZzsKIAotICAgIGNoZWNr
X2NwdV9mbGFnKE5VTEwpOwotICAgIGZvciAoY29uc3QgQ2hlY2thc21DcHVJbmZvICppbmZvID0g
Y2ZnLmNwdV9mbGFnczsgaW5mby0+ZmxhZzsgaW5mbysrKQotICAgICAgICBjaGVja19jcHVfZmxh
ZyhpbmZvKTsKKyAgICBydW5fYWxsX3Rlc3RzKCk7CiAKICAgICBwcmludF9mdW5jdGlvbnMoY3Vy
cmVudC50cmVlLnJvb3QpOwogICAgIGNoZWNrYXNtX2Z1bmNfdHJlZV91bmluaXQoJmN1cnJlbnQu
dHJlZSk7CkBAIC03MjYsNDUgKzc1MCw3OSBAQCBzdGF0aWMgdm9pZCBjcHVfZnByaW50Zih2b2lk
ICpwcml2LCBjb25zdCBjaGFyICpmbXQsIC4uLikKIAogc3RhdGljIENPTEQgdm9pZCBwcmludF9p
bmZvKHZvaWQpCiB7Ci0gICAgY2hlY2thc21fZnByaW50ZihzdGRlcnIsIENPTE9SX1lFTExPVywg
ImNoZWNrYXNtOlxuIik7CisgICAgTE9HX0NPTE9SKENPTE9SX1lFTExPVywgImNoZWNrYXNtOlxu
Iik7CiAgICAgY2hlY2thc21fY3B1X2luZm8oY3B1X2ZwcmludGYsIHN0ZGVyciwgJmNmZyk7CiAK
ICAgICBpZiAoY2ZnLmJlbmNoKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIC0gVGltaW5n
IHNvdXJjZTogJXNcbiIsIGNoZWNrYXNtX3BlcmYubmFtZSk7CisgICAgICAgIExPRygiIC0gVGlt
aW5nIHNvdXJjZTogJXNcbiIsIGNoZWNrYXNtX3BlcmYubmFtZSk7CiAgICAgICAgIGlmIChjZmcu
dmVyYm9zZSkgewogICAgICAgICAgICAgY29uc3QgQ2hlY2thc21WYXIgcGVyZl9zY2FsZSA9IGNo
ZWNrYXNtX21lYXN1cmVtZW50X3Jlc3VsdChzdGF0ZS5wZXJmX3NjYWxlKTsKICAgICAgICAgICAg
IGNvbnN0IENoZWNrYXNtVmFyIG5vcF9jeWNsZXMgPSBjaGVja2FzbV9tZWFzdXJlbWVudF9yZXN1
bHQoc3RhdGUubm9wX2N5Y2xlcyk7CiAgICAgICAgICAgICBjb25zdCBDaGVja2FzbVZhciBtaHog
PSBjaGVja2FzbV92YXJfZGl2KGNoZWNrYXNtX3Zhcl9jb25zdCgxZTMpLCBwZXJmX3NjYWxlKTsK
LSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiIC0gVGlt
aW5nIHJlc29sdXRpb246ICUuNGYgKy8tICUuM2YgbnMvJXMgKCUuMGYgKy8tICUuMWYgIgotICAg
ICAgICAgICAgICAgICAgICAiTUh6KSAocHJvdmlzaW9uYWwpXG4iLAotICAgICAgICAgICAgICAg
ICAgICBjaGVja2FzbV9tb2RlKHBlcmZfc2NhbGUpLCBjaGVja2FzbV9zdGRkZXYocGVyZl9zY2Fs
ZSksCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrYXNtX3BlcmYudW5pdCwgY2hlY2thc21fbW9k
ZShtaHopLCBjaGVja2FzbV9zdGRkZXYobWh6KSk7CisgICAgICAgICAgICBMT0coIiAtIFRpbWlu
ZyByZXNvbHV0aW9uOiAlLjRmICsvLSAlLjNmIG5zLyVzICglLjBmICsvLSAlLjFmICIKKyAgICAg
ICAgICAgICAgICAiTUh6KSAocHJvdmlzaW9uYWwpXG4iLAorICAgICAgICAgICAgICAgIGNoZWNr
YXNtX21vZGUocGVyZl9zY2FsZSksIGNoZWNrYXNtX3N0ZGRldihwZXJmX3NjYWxlKSwKKyAgICAg
ICAgICAgICAgICBjaGVja2FzbV9wZXJmLnVuaXQsIGNoZWNrYXNtX21vZGUobWh6KSwgY2hlY2th
c21fc3RkZGV2KG1oeikpOwogCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAg
ICAgICAgICAgICAgIiAtIE5vLW9wIG92ZXJoZWFkOiAlLjJmICsvLSAlLjNmICVzcyBwZXIgY2Fs
bCAocHJvdmlzaW9uYWwpXG4iLAotICAgICAgICAgICAgICAgICAgICBjaGVja2FzbV9tb2RlKG5v
cF9jeWNsZXMpLCBjaGVja2FzbV9zdGRkZXYobm9wX2N5Y2xlcyksCi0gICAgICAgICAgICAgICAg
ICAgIGNoZWNrYXNtX3BlcmYudW5pdCk7CisgICAgICAgICAgICBMT0coIiAtIE5vLW9wIG92ZXJo
ZWFkOiAlLjJmICsvLSAlLjNmICVzcyBwZXIgY2FsbCAocHJvdmlzaW9uYWwpXG4iLAorICAgICAg
ICAgICAgICAgIGNoZWNrYXNtX21vZGUobm9wX2N5Y2xlcyksIGNoZWNrYXNtX3N0ZGRldihub3Bf
Y3ljbGVzKSwKKyAgICAgICAgICAgICAgICBjaGVja2FzbV9wZXJmLnVuaXQpOwogICAgICAgICB9
Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIC0gQmVuY2ggZHVyYXRpb246ICVkIMK1cyBwZXIg
ZnVuY3Rpb24gKCUiIFBSSXU2NCAiICVzcylcbiIsCi0gICAgICAgICAgICAgICAgY2ZnLmJlbmNo
X3VzZWMsIHN0YXRlLnRhcmdldF9jeWNsZXMsIGNoZWNrYXNtX3BlcmYudW5pdCk7CisgICAgICAg
IExPRygiIC0gQmVuY2ggZHVyYXRpb246ICVkIMK1cyBwZXIgZnVuY3Rpb24gKCUiIFBSSXU2NCAi
ICVzcylcbiIsIGNmZy5iZW5jaF91c2VjLAorICAgICAgICAgICAgc3RhdGUudGFyZ2V0X2N5Y2xl
cywgY2hlY2thc21fcGVyZi51bml0KTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICIgLSBS
YW5kb20gc2VlZDogJXVcbiIsIGNmZy5zZWVkKTsKKyAgICBMT0coIiAtIFJhbmRvbSBzZWVkOiAl
dVxuIiwgY2ZnLnNlZWQpOwogfQogCi1zdGF0aWMgaW50IHByaW50X3N1bW1hcnkodm9pZCkKK3N0
YXRpYyB2b2lkIHVwZGF0ZV9zdGF0dXNsaW5lKHZvaWQpCiB7CisgICAgaWYgKHN0YXRlLnNraXBf
dGVzdHMpCisgICAgICAgIHJldHVybjsKKworICAgIGNoYXIgc3RhdHVzWzI1Nl07CisgICAgaW50
IGxlbiA9IDA7CisKKyAgICBsZW4gKz0gc25wcmludGYoc3RhdHVzLCBzaXplb2Yoc3RhdHVzKSwg
ImNoZWNrYXNtOiBpdGVyPSVkLyVkIGNwdT0lcyB0ZXN0PSVzIiwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUudGVzdF9pdGVyICsgMSwgY2ZnLnJlcGVhdCwgY3B1X3N1ZmZpeChjdXJyZW50LmNw
dSksCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQudGVzdF9uYW1lKTsKKworICAgIGlmIChj
dXJyZW50LmZ1bmMgJiYgY3VycmVudC5mdW5jLT5yZXBvcnRfbmFtZSkgeworICAgICAgICBzbnBy
aW50ZihzdGF0dXMgKyBsZW4sIHNpemVvZihzdGF0dXMpIC0gbGVuLCAiIGZ1bmM9JXMiLAorICAg
ICAgICAgICAgICAgICBjdXJyZW50LmZ1bmMtPnJlcG9ydF9uYW1lKTsKKyAgICB9CisKKyAgICBj
aGVja2FzbV9zdGF0dXNsaW5lKHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQgcHJpbnRfc3VtbWFy
eShpbnQgaW50ZXJydXB0ZWQpCit7CisgICAgY2hlY2thc21fc3RhdHVzbGluZShOVUxMKTsKKwor
ICAgIExPRygiY2hlY2thc206ICIpOworICAgIGlmIChpbnRlcnJ1cHRlZCkKKyAgICAgICAgTE9H
X0NPTE9SKENPTE9SX0JMVUUsICIoaW50ZXJydXB0ZWQpICIpOworCiAgICAgLyogRXhjbHVkZSBD
L3JlZiB2ZXJzaW9ucyBmcm9tIGNvdW50IHJlcG9ydGVkIHRvIHVzZXIgKi8KICAgICBjb25zdCBp
bnQgbnVtX2NoZWNrZWRfYXNtID0gY3VycmVudC5udW1fY2hlY2tlZCAtIGN1cnJlbnQubnVtX2Z1
bmNzOwogICAgIGlmIChjdXJyZW50Lm51bV9mYWlsZWQpIHsKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsICJjaGVja2FzbTogJWQgb2YgJWQgdGVzdHMgZmFpbGVkXG4iLCBjdXJyZW50Lm51bV9mYWls
ZWQsCi0gICAgICAgICAgICAgICAgbnVtX2NoZWNrZWRfYXNtKTsKKyAgICAgICAgTE9HX0NPTE9S
KENPTE9SX1JFRCwgIiVkICIsIGN1cnJlbnQubnVtX2ZhaWxlZCk7CisgICAgICAgIExPRygib2Yg
JWQgdGVzdHMgZmFpbGVkIiwgbnVtX2NoZWNrZWRfYXNtKTsKICAgICB9IGVsc2UgaWYgKG51bV9j
aGVja2VkX2FzbSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNrYXNtOiBhbGwgJWQg
dGVzdHMgcGFzc2VkXG4iLCBudW1fY2hlY2tlZF9hc20pOworICAgICAgICBpZiAoIWludGVycnVw
dGVkKQorICAgICAgICAgICAgTE9HKCJhbGwgIik7CisgICAgICAgIExPRygiJWQgdGVzdHMgcGFz
c2VkIiwgbnVtX2NoZWNrZWRfYXNtKTsKKyAgICB9IGVsc2UgaWYgKGludGVycnVwdGVkKSB7Cisg
ICAgICAgIExPRygibm8gdGVzdHMgcGVyZm9ybWVkIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJjaGVja2FzbTogbm8gdGVzdHMgdG8gcGVyZm9ybVxuIik7CisgICAg
ICAgIC8qIFVzZXIgZGlkIG5vdCBkZWZpbmUgYW55IHRlc3RzICovCisgICAgICAgIExPR19DT0xP
UihDT0xPUl9ZRUxMT1csICJubyB0ZXN0cyB0byBwZXJmb3JtIik7CiAgICAgfQogCisgICAgaWYg
KGNmZy5yZXBlYXQgPiAxKQorICAgICAgICBMT0coIiwgaXRlcmF0aW9uICVkIG9mICVkLCBzZWVk
ICV1XG4iLCBzdGF0ZS50ZXN0X2l0ZXIgKyAxLCBjZmcucmVwZWF0LCBjZmcuc2VlZCk7CisgICAg
ZWxzZQorICAgICAgICBMT0coIlxuIik7CisKICAgICBpZiAoY3VycmVudC5udW1fYmVuY2hlZCAm
JiAhY3VycmVudC5udW1fZmFpbGVkKQogICAgICAgICBwcmludF9iZW5jaG1hcmtzKCk7CiAKQEAg
LTc3NCw4ICs4MzIsNyBAQCBzdGF0aWMgaW50IHByaW50X3N1bW1hcnkodm9pZCkKIHN0YXRpYyB2
b2lkIGhhbmRsZV9pbnRlcnJ1cHQodm9pZCkKIHsKICAgICBpZiAoY2hlY2thc21faW50ZXJydXB0
ZWQpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJjaGVja2FzbTogaW50ZXJydXB0ZWRcbiIp
OwotICAgICAgICBwcmludF9zdW1tYXJ5KCk7CisgICAgICAgIHByaW50X3N1bW1hcnkoMSk7CiAg
ICAgICAgIGV4aXQoMTI4ICsgY2hlY2thc21faW50ZXJydXB0ZWQpOwogICAgIH0KIH0KQEAgLTc4
NCw3ICs4NDEsNyBAQCBpbnQgY2hlY2thc21fcnVuKGNvbnN0IENoZWNrYXNtQ29uZmlnICpjb25m
aWcpCiB7CiAjaWYgIUhBVkVfSFRNTF9EQVRBCiAgICAgaWYgKGNmZy5mb3JtYXQgPT0gQ0hFQ0tB
U01fRk9STUFUX0hUTUwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJjaGVja2FzbTogYnVp
bHQgd2l0aG91dCBIVE1MIHN1cHBvcnRcbiIpOworICAgICAgICBMT0coImNoZWNrYXNtOiBidWls
dCB3aXRob3V0IEhUTUwgc3VwcG9ydFxuIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICNl
bmRpZgpAQCAtODM3LDE3ICs4OTQsMTAgQEAgaW50IGNoZWNrYXNtX3J1bihjb25zdCBDaGVja2Fz
bUNvbmZpZyAqY29uZmlnKQogCiAgICAgcHJpbnRfaW5mbygpOwogCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNmZy5yZXBlYXQ7IGkrKykgewotICAgICAgICBpZiAoaSA+IDApIHsKLSAg
ICAgICAgICAgIGNoZWNrYXNtX2ZwcmludGYoc3RkZXJyLCBDT0xPUl9ZRUxMT1csICJcblRlc3Qg
IyVkOlxuIiwgaSArIDEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgLSBSYW5kb20g
c2VlZDogJXVcbiIsIGNmZy5zZWVkKTsKLSAgICAgICAgfQorICAgIGZvciAoc3RhdGUudGVzdF9p
dGVyID0gMDsgc3RhdGUudGVzdF9pdGVyIDwgY2ZnLnJlcGVhdDsgc3RhdGUudGVzdF9pdGVyKysp
IHsKKyAgICAgICAgcnVuX2FsbF90ZXN0cygpOwogCi0gICAgICAgIGNoZWNrX2NwdV9mbGFnKE5V
TEwpOwotICAgICAgICBmb3IgKGNvbnN0IENoZWNrYXNtQ3B1SW5mbyAqaW5mbyA9IGNmZy5jcHVf
ZmxhZ3M7IGluZm8tPmZsYWc7IGluZm8rKykKLSAgICAgICAgICAgIGNoZWNrX2NwdV9mbGFnKGlu
Zm8pOwotCi0gICAgICAgIGludCByZXMgPSBwcmludF9zdW1tYXJ5KCk7CisgICAgICAgIGludCBy
ZXMgPSBwcmludF9zdW1tYXJ5KDApOwogICAgICAgICBjaGVja2FzbV9mdW5jX3RyZWVfdW5pbml0
KCZjdXJyZW50LnRyZWUpOwogICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgcmV0dXJuIHJl
czsKQEAgLTk0OSw2ICs5OTksNyBAQCBDaGVja2FzbUtleSBjaGVja2FzbV9jaGVja19rZXkoY29u
c3QgQ2hlY2thc21LZXkgdmVyc2lvbiwgY29uc3QgY2hhciAqY29uc3QgbmFtZQogICAgIGN1cnJl
bnQuZnVuY192ZXIgPSB2OwogICAgIGN1cnJlbnQubnVtX2NoZWNrZWQrKzsKICAgICBjaGVja2Fz
bV9zcmFuZChjZmcuc2VlZCk7CisgICAgdXBkYXRlX3N0YXR1c2xpbmUoKTsKIAogICAgIGlmIChj
ZmcuYmVuY2gpIHsKICNpZiBBUkNIX1g4NgpAQCAtOTgyLDggKzEwMzMsOCBAQCBzdGF0aWMgaW50
IGZhaWxfaW50ZXJuYWwoY29uc3QgY2hhciAqY29uc3QgbXNnLCB2YV9saXN0IGFyZykKICAgICBp
ZiAodiAmJiB2LT5zdGF0ZSA9PSBDSEVDS0FTTV9GVU5DX09LKSB7CiAgICAgICAgIGlmICghY3Vy
cmVudC5zaG91bGRfZmFpbCkgewogICAgICAgICAgICAgcHJpbnRfY3B1X25hbWUoKTsKLSAgICAg
ICAgICAgIGNoZWNrYXNtX2ZwcmludGYoc3RkZXJyLCBDT0xPUl9SRUQsICJGQUlMVVJFOiIpOwot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgJXNfJXMgKCIsIGN1cnJlbnQuZnVuYy0+bmFt
ZSwgdmVyX3N1ZmZpeCh2KSk7CisgICAgICAgICAgICBMT0dfQ09MT1IoQ09MT1JfUkVELCAiRkFJ
TFVSRToiKTsKKyAgICAgICAgICAgIExPRygiICVzXyVzICgiLCBjdXJyZW50LmZ1bmMtPm5hbWUs
IHZlcl9zdWZmaXgodikpOwogICAgICAgICAgICAgdmZwcmludGYoc3RkZXJyLCBtc2csIGFyZyk7
CiAgICAgICAgICAgICBmcHV0cygiKVxuIiwgc3RkZXJyKTsKICAgICAgICAgfQpAQCAtMTA1NCwy
OCArMTEwNSwyNyBAQCB2b2lkIGNoZWNrYXNtX3JlcG9ydChjb25zdCBjaGFyICpjb25zdCBuYW1l
LCAuLi4pCiAgICAgICAgIGlmIChjdXJyZW50LnNob3VsZF9mYWlsKQogICAgICAgICAgICAgY3Vy
cmVudC5udW1fZmFpbGVkID0gY3VycmVudC5wcmV2X2ZhaWxlZCArIChuZXdfY2hlY2tlZCAtIGZh
aWxzKTsKIAotICAgICAgICAvKiBPbWl0ICJPSyIgZm9yIG5vbi12ZXJib3NlIG5vbi1iZW5jaG1h
cmsgQyBmdW5jdGlvbiBzdWNjZXNzZXMgKi8KLSAgICAgICAgY29uc3QgaW50IHdhbnRfcHJpbnQg
PSBjdXJyZW50Lm51bV9mYWlsZWQgIT0gY3VycmVudC5wcmV2X2ZhaWxlZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IGN1cnJlbnQuc2hvdWxkX2ZhaWwgfHwgY2ZnLnZlcmJvc2UgfHwg
Y2ZnLmJlbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY3VycmVudC5jcHU7Cisg
ICAgICAgIC8qIE9taXQgJ09LJyBhZnRlciB0aGUgZmlyc3QgcnVuLCB1bmxlc3MgZmFpbGVkIG9y
IHZlcmJvc2UgKi8KKyAgICAgICAgaW50IHdhbnRfcHJpbnQgPSBjdXJyZW50Lm51bV9mYWlsZWQg
IT0gY3VycmVudC5wcmV2X2ZhaWxlZCB8fCBjZmcudmVyYm9zZTsKKyAgICAgICAgaWYgKHN0YXRl
LnRlc3RfaXRlciA9PSAwKQorICAgICAgICAgICAgd2FudF9wcmludCB8PSBjdXJyZW50LnNob3Vs
ZF9mYWlsIHx8IGN1cnJlbnQuY3B1OwogCiAgICAgICAgIGlmICh3YW50X3ByaW50KSB7CiAgICAg
ICAgICAgICBwcmludF9jcHVfbmFtZSgpOwogICAgICAgICAgICAgaWYgKG5hbWUpIHsKLSAgICAg
ICAgICAgICAgICBwYWRfbGVuZ3RoIC09IGZwcmludGYoc3RkZXJyLCAiIC0gJXMuJXMiLCBjdXJy
ZW50LnRlc3RfbmFtZSwgcmVwb3J0X25hbWUpOworICAgICAgICAgICAgICAgIHBhZF9sZW5ndGgg
LT0gTE9HKCIgLSAlcy4lcyIsIGN1cnJlbnQudGVzdF9uYW1lLCByZXBvcnRfbmFtZSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhZF9sZW5ndGggLT0gZnByaW50Zihz
dGRlcnIsICIgLSAlcyIsIGN1cnJlbnQudGVzdF9uYW1lKTsKKyAgICAgICAgICAgICAgICBwYWRf
bGVuZ3RoIC09IExPRygiIC0gJXMiLCBjdXJyZW50LnRlc3RfbmFtZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUqYyIsIGltYXgocGFkX2xlbmd0aCwgMCkg
KyAyLCAnWycpOworICAgICAgICAgICAgTE9HKCIlKmMiLCBpbWF4KHBhZF9sZW5ndGgsIDApICsg
MiwgJ1snKTsKIAotICAgICAgICAgICAgaWYgKGN1cnJlbnQubnVtX2ZhaWxlZCA9PSBjdXJyZW50
LnByZXZfZmFpbGVkKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2thc21fZnByaW50ZihzdGRlcnIs
IENPTE9SX0dSRUVOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5z
aG91bGRfZmFpbCA/ICJFWFBFQ1RFRCIgOiAiT0siKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
IWN1cnJlbnQuc2hvdWxkX2ZhaWwpCi0gICAgICAgICAgICAgICAgY2hlY2thc21fZnByaW50Zihz
dGRlcnIsIENPTE9SX1JFRCwgIkZBSUxFRCIpOworICAgICAgICAgICAgaWYgKGN1cnJlbnQubnVt
X2ZhaWxlZCA9PSBjdXJyZW50LnByZXZfZmFpbGVkKQorICAgICAgICAgICAgICAgIExPR19DT0xP
UihDT0xPUl9HUkVFTiwgY3VycmVudC5zaG91bGRfZmFpbCA/ICJFWFBFQ1RFRCIgOiAiT0siKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKCFjdXJyZW50LnNob3VsZF9mYWlsKQorICAgICAgICAgICAg
ICAgIExPR19DT0xPUihDT0xPUl9SRUQsICJGQUlMRUQiKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjaGVja2FzbV9mcHJpbnRmKHN0ZGVyciwgQ09MT1JfUkVELCAiJWQvJWQg
RVhQRUNURUQiLCBmYWlscywgbmV3X2NoZWNrZWQpOwotICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJdXG4iKTsKKyAgICAgICAgICAgICAgICBMT0dfQ09MT1IoQ09MT1JfUkVELCAiJWQvJWQg
RVhQRUNURUQiLCBmYWlscywgbmV3X2NoZWNrZWQpOworICAgICAgICAgICAgTE9HKCJdXG4iKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGN1cnJlbnQucHJldl9jaGVja2VkID0gY3VycmVudC5udW1f
Y2hlY2tlZDsKQEAgLTExNzAsMTMgKzEyMjAsMTMgQEAgaW50IGNoZWNrYXNtX21haW4oQ2hlY2th
c21Db25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICNpZiBIQVZF
X0hUTUxfREFUQQogICAgICAgICAgICAgY29uZmlnLT5mb3JtYXQgPSBDSEVDS0FTTV9GT1JNQVRf
SFRNTDsKICNlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNrYXNtOiBidWls
dCB3aXRob3V0IEhUTUwgc3VwcG9ydFxuIik7CisgICAgICAgICAgICBMT0coImNoZWNrYXNtOiBi
dWlsdCB3aXRob3V0IEhUTUwgc3VwcG9ydFxuIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICNl
bmRpZgogICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbMV0sICItLWR1cmF0aW9uPSIs
IDExKSkgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgcyA9IGFyZ3ZbMV0gKyAxMTsK
ICAgICAgICAgICAgIGlmICghcGFyc2V1KCZjb25maWctPmJlbmNoX3VzZWMsIHMsIDEwKSkgewot
ICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2hlY2thc206IGludmFsaWQgZHVyYXRp
b24gKCVzKVxuIiwgcyk7CisgICAgICAgICAgICAgICAgTE9HKCJjaGVja2FzbTogaW52YWxpZCBk
dXJhdGlvbiAoJXMpXG4iLCBzKTsKICAgICAgICAgICAgICAgICBwcmludF91c2FnZShhcmd2WzBd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KQEAgLTExOTgsMTQg
KzEyNDgsMTQgQEAgaW50IGNoZWNrYXNtX21haW4oQ2hlY2thc21Db25maWcgKmNvbmZpZywgaW50
IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0
IHMgICAgICA9IGFyZ3ZbMV0gKyAxMTsKICAgICAgICAgICAgIGNvbmZpZy0+Y3B1X2FmZmluaXR5
X3NldCA9IDE7CiAgICAgICAgICAgICBpZiAoIXBhcnNldSgmY29uZmlnLT5jcHVfYWZmaW5pdHks
IHMsIDE2KSkgewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2hlY2thc206IGlu
dmFsaWQgY3B1IGFmZmluaXR5ICglcylcbiIsIHMpOworICAgICAgICAgICAgICAgIExPRygiY2hl
Y2thc206IGludmFsaWQgY3B1IGFmZmluaXR5ICglcylcbiIsIHMpOwogICAgICAgICAgICAgICAg
IHByaW50X3VzYWdlKGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbMV0sICItLXJlcGVhdD0i
LCA5KSkgewogICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgcyA9IGFyZ3ZbMV0gKyA5Owog
ICAgICAgICAgICAgaWYgKCFwYXJzZXUoJmNvbmZpZy0+cmVwZWF0LCBzLCAxMCkpIHsKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNoZWNrYXNtOiBpbnZhbGlkIG51bWJlciBvZiBy
ZXBldGl0aW9ucyAoJXMpXG4iLCBzKTsKKyAgICAgICAgICAgICAgICBMT0coImNoZWNrYXNtOiBp
bnZhbGlkIG51bWJlciBvZiByZXBldGl0aW9ucyAoJXMpXG4iLCBzKTsKICAgICAgICAgICAgICAg
ICBwcmludF91c2FnZShhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAg
ICAgICAgIH0KQEAgLTEyMTQsNyArMTI2NCw3IEBAIGludCBjaGVja2FzbV9tYWluKENoZWNrYXNt
Q29uZmlnICpjb25maWcsIGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBjb25maWctPnNlZWRfc2V0ID0gMTsKICAgICAgICAgICAgIGlm
ICghcGFyc2V1KCZjb25maWctPnNlZWQsIGFyZ3ZbMV0sIDEwKSkgewotICAgICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiY2hlY2thc206IHVua25vd24gb3B0aW9uICglcylcbiIsIGFyZ3Zb
MV0pOworICAgICAgICAgICAgICAgIExPRygiY2hlY2thc206IHVua25vd24gb3B0aW9uICglcylc
biIsIGFyZ3ZbMV0pOwogICAgICAgICAgICAgICAgIHByaW50X3VzYWdlKGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2lu
dGVybmFsLmggYi9zcmMvaW50ZXJuYWwuaAppbmRleCBkZDY5OGNiYzg0Li42MTkyZWRlMjIxIDEw
MDY0NAotLS0gYS9zcmMvaW50ZXJuYWwuaAorKysgYi9zcmMvaW50ZXJuYWwuaApAQCAtMTA5LDgg
KzEwOSwyNSBAQCBOT1JFVFVSTiB2b2lkIGNoZWNrYXNtX2ZhaWxfYWJvcnQoY29uc3QgY2hhciAq
bXNnLCAuLi4pIENIRUNLQVNNX1BSSU5URigxLCAyKTsKIAogLyogQ29sb3JlZCB2YXJpYW50IG9m
IGZwcmludGYgZm9yIHRlcm1pbmFscyB0aGF0IHN1cHBvcnQgaXQgKi8KIHZvaWQgY2hlY2thc21f
c2V0dXBfZnByaW50Zih2b2lkKTsKLXZvaWQgY2hlY2thc21fZnByaW50ZihGSUxFICpjb25zdCBm
LCBjb25zdCBpbnQgY29sb3IsIGNvbnN0IGNoYXIgKmNvbnN0IGZtdCwgLi4uKQotICAgIENIRUNL
QVNNX1BSSU5URigzLCA0KTsKK2ludCBjaGVja2FzbV92ZnByaW50ZihGSUxFICpjb25zdCBmLCBp
bnQgY29sb3IsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmcpCisgICAgQ0hFQ0tBU01fUFJJ
TlRGKDMsIDApOworCitDSEVDS0FTTV9QUklOVEYoMywgNCkKK3N0YXRpYyBpbmxpbmUgaW50IGNo
ZWNrYXNtX2ZwcmludGYoRklMRSAqY29uc3QgZiwgaW50IGNvbG9yLCBjb25zdCBjaGFyICpmbXQs
IC4uLikKK3sKKyAgICB2YV9saXN0IGFwOworICAgIHZhX3N0YXJ0KGFwLCBmbXQpOworICAgIGlu
dCByZXQgPSBjaGVja2FzbV92ZnByaW50ZihmLCBjb2xvciwgZm10LCBhcCk7CisgICAgdmFfZW5k
KGFwKTsKKyAgICByZXR1cm4gcmV0OworfQorCisjZGVmaW5lIExPR19DT0xPUiguLi4pIGNoZWNr
YXNtX2ZwcmludGYoc3RkZXJyLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTE9HKC4uLikgICAgICAg
TE9HX0NPTE9SKENPTE9SX0RFRkFVTFQsIF9fVkFfQVJHU19fKQorCisvKiBVcGRhdGUgdGhlIHN0
YXR1c2xpbmUsIHJlcHJpbnRlZCBhdXRvbWF0aWNhbGx5IGFzIG5lZWRlZC4gUGFzcyBOVUxMIG9y
IGFuCisgKiBlbXB0eSBzdHJpbmcgKCIiKSB0byBjbGVhciBpdCBlbnRpcmVseS4gTWF4aW11bSAy
NTYgY2hhcmFjdGVycyAqLwordm9pZCBjaGVja2FzbV9zdGF0dXNsaW5lKGNvbnN0IGNoYXIgKnN0
YXR1cyk7CiAKIC8qIExpZ2h0LXdlaWdodCBoZWxwZXIgZm9yIHByaW50aW5nIG5lc3RlZCBKU09O
IG9iamVjdHMgKi8KIHR5cGVkZWYgc3RydWN0IENoZWNrYXNtSnNvbiB7CmRpZmYgLS1naXQgYS9z
cmMvcmlzY3YvY2FsbGNoZWNrLlMgYi9zcmMvcmlzY3YvY2FsbGNoZWNrLlMKaW5kZXggMmZhNmQz
YTg3My4uMmZhZDk5OGVlYyAxMDA2NDQKLS0tIGEvc3JjL3Jpc2N2L2NhbGxjaGVjay5TCisrKyBi
L3NyYy9yaXNjdi9jYWxsY2hlY2suUwpAQCAtMzEyLDcgKzMxMiw3IEBAIGZ1bmN0aW9uIGNoZWNr
ZWRfY2FsbF9pZnYsIGV4cG9ydD0xLCBleHQ9enZlMzJ4CiAuTGNsb2JiZXJfdjoKICAgICAgICAg
IyBDbG9iYmVyIHRoZSB2ZWN0b3IgcmVnaXN0ZXJzCiAgICAgICAgIHZzZXR2bGkgdDEsIHplcm8s
IGUzMiwgbTgsIHRhLCBtYQotICAgICAgICBsaSAgICAgIHQxLCAtMHhkZWFkYmVlZgorICAgICAg
ICBsaSAgICAgIHQxLCAweDBiYWRmMDBkCiAgICAgICAgIHZtdi52LnggdjAsIHQxCiAgICAgICAg
IHZtdi52LnggdjgsIHQxCiAgICAgICAgIHZtdi52LnggdjE2LCB0MQpkaWZmIC0tZ2l0IGEvc3Jj
L3Jpc2N2L2NwdS5jIGIvc3JjL3Jpc2N2L2NwdS5jCmluZGV4IDkyNDhiYWJlZGQuLjRmMzEyMTA4
NmMgMTAwNjQ0Ci0tLSBhL3NyYy9yaXNjdi9jcHUuYworKysgYi9zcmMvcmlzY3YvY3B1LmMKQEAg
LTQ0LDYgKzQ0LDcgQEAKICAgICAjaW5jbHVkZSA8c3lzL2h3cHJvYmUuaD4KICAgI2VsaWYgSEFW
RV9BU01fSFdQUk9CRV9ICiAgICAgI2luY2x1ZGUgPGFzbS9od3Byb2JlLmg+CisgICAgI2luY2x1
ZGUgPGFzbS91bmlzdGQuaD4KICAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICAgICAjaW5j
bHVkZSA8dW5pc3RkLmg+CiAKZGlmZiAtLWdpdCBhL3NyYy91dGlscy5jIGIvc3JjL3V0aWxzLmMK
aW5kZXggNzY4ZDMwMjhlZi4uOTZlMzM1MjViZCAxMDA2NDQKLS0tIGEvc3JjL3V0aWxzLmMKKysr
IGIvc3JjL3V0aWxzLmMKQEAgLTM2MSwyMiArMzYxLDU3IEBAIERFRl9DSEVDS0FTTV9JTklUX01B
U0soOCwgdWludDhfdCkKIERFRl9DSEVDS0FTTV9JTklUX01BU0soMTYsIHVpbnQxNl90KQogCiBz
dGF0aWMgaW50IHVzZV9wcmludGZfY29sb3JbMl07CitzdGF0aWMgY2hhciBzdGF0dXNsaW5lWzI1
Nl07CitzdGF0aWMgaW50IHN0YXR1c2xpbmVfdmlzaWJsZTsKIAogLyogUHJpbnQgY29sb3JlZCB0
ZXh0IHRvIHN0ZGVyciBpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgaXQgKi8KLXZvaWQgY2hlY2th
c21fZnByaW50ZihGSUxFICpjb25zdCBmLCBjb25zdCBpbnQgY29sb3IsIGNvbnN0IGNoYXIgKmNv
bnN0IGZtdCwgLi4uKQoraW50IGNoZWNrYXNtX3ZmcHJpbnRmKEZJTEUgKmNvbnN0IGYsIGNvbnN0
IGludCBjb2xvciwgY29uc3QgY2hhciAqY29uc3QgZm10LCB2YV9saXN0IGFyZykKIHsKLSAgICB2
YV9saXN0IGFyZzsKLSAgICBpbnQgICAgIHVzZV9jb2xvciA9IHVzZV9wcmludGZfY29sb3JbZiA9
PSBzdGRlcnJdOworICAgIHNpemVfdCBmbXRfbGVuID0gc3RybGVuKGZtdCk7CisgICAgaW50IHVz
ZV9jb2xvciA9IHVzZV9wcmludGZfY29sb3JbZiA9PSBzdGRlcnJdOworICAgIGlmICghdXNlX2Nv
bG9yIHx8ICFmbXRfbGVuKQorICAgICAgICByZXR1cm4gdmZwcmludGYoZiwgZm10LCBhcmcpOwog
Ci0gICAgaWYgKGNvbG9yID49IDAgJiYgdXNlX2NvbG9yKQorICAgIGlmIChmID09IHN0ZGVyciAm
JiBzdGF0dXNsaW5lX3Zpc2libGUpIHsKKyAgICAgICAgZnByaW50ZihmLCAiXHJcMDMzW0siKTsg
LyogY2xlYXIgbGluZSAqLworICAgICAgICBzdGF0dXNsaW5lX3Zpc2libGUgPSAwOworICAgIH0K
KworICAgIGlmIChjb2xvciA+PSAwKQogICAgICAgICBmcHJpbnRmKGYsICJceDFiWzA7JWRtIiwg
Y29sb3IpOwogCi0gICAgdmFfc3RhcnQoYXJnLCBmbXQpOwotICAgIHZmcHJpbnRmKGYsIGZtdCwg
YXJnKTsKLSAgICB2YV9lbmQoYXJnKTsKKyAgICBpbnQgcmV0ID0gdmZwcmludGYoZiwgZm10LCBh
cmcpOwogCi0gICAgaWYgKGNvbG9yID49IDAgJiYgdXNlX2NvbG9yKQorICAgIGlmIChjb2xvciA+
PSAwKQogICAgICAgICBmcHJpbnRmKGYsICJceDFiWzBtIik7CisKKyAgICBpZiAoZiA9PSBzdGRl
cnIgJiYgc3RhdHVzbGluZVswXSAmJiBmbXRbZm10X2xlbiAtIDFdID09ICdcbicpIHsKKyAgICAg
ICAgZnByaW50ZihmLCAiJXMiLCBzdGF0dXNsaW5lKTsKKyAgICAgICAgc3RhdHVzbGluZV92aXNp
YmxlID0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIGNoZWNrYXNtX3N0
YXR1c2xpbmUoY29uc3QgY2hhciAqc3RhdHVzKQoreworICAgIGlmICghc3RhdHVzKQorICAgICAg
ICBzdGF0dXMgPSAiIjsKKworICAgIGlmICghdXNlX3ByaW50Zl9jb2xvclsxXSB8fCAhc3RyY21w
KHN0YXR1c2xpbmUsIHN0YXR1cykpCisgICAgICAgIHJldHVybjsgLyogZG9uJ3QgcmUtcGFpbnQg
dW5jaGFuZ2VkIHN0YXR1cyAqLworCisgICAgc25wcmludGYoc3RhdHVzbGluZSwgc2l6ZW9mKHN0
YXR1c2xpbmUpLCAiJXMiLCBzdGF0dXMpOworCisgICAgaWYgKHN0YXR1c2xpbmVfdmlzaWJsZSkg
eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxyXDAzM1tLIik7CisgICAgICAgIHN0YXR1c2xp
bmVfdmlzaWJsZSA9IDA7CisgICAgfQorCisgICAgaWYgKHN0YXR1c2xpbmVbMF0pIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHN0YXR1c2xpbmUpOworICAgICAgICBzdGF0dXNsaW5l
X3Zpc2libGUgPSAxOworICAgIH0KIH0KIAogc3RhdGljIENPTEQgaW50IHNob3VsZF91c2VfY29s
b3IoRklMRSAqY29uc3QgZikKZGlmZiAtLWdpdCBhL3NyYy94ODYvY3B1LmMgYi9zcmMveDg2L2Nw
dS5jCmluZGV4IDYyZmE0YzU1YTAuLmY0MDQyMDQwNzIgMTAwNjQ0Ci0tLSBhL3NyYy94ODYvY3B1
LmMKKysrIGIvc3JjL3g4Ni9jcHUuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBDT0xEIGNo
ZWNrYXNtX3NpbWRfd2FybXVwX2Z1bmMgZ2V0X3NpbWRfd2FybXVwKHZvaWQpCiAgICAgICAgIHJl
dHVybiBzaW1kX3dhcm11cDsKIAogICAgIGNoZWNrYXNtX2NwdV9jcHVpZCgmciwgNywgMCk7Ci0g
ICAgaWYgKHIuZWJ4ICYgMHgwMDAwMDAyMCkgLyogQVZYNTEyRiAqLworICAgIGlmIChyLmVieCAm
IDB4MDAwMTAwMDApIC8qIEFWWDUxMkYgKi8KICAgICAgICAgc2ltZF93YXJtdXAgPSBjaGVja2Fz
bV93YXJtdXBfYXZ4NTEyOwogCiAgICAgcmV0dXJuIHNpbWRfd2FybXVwOwpkaWZmIC0tZ2l0IGEv
dGVzdHMvc2VsZnRlc3QuYyBiL3Rlc3RzL3NlbGZ0ZXN0LmMKaW5kZXggN2FjNTJkN2ExYi4uNDcx
MTEyOWVkNyAxMDA2NDQKLS0tIGEvdGVzdHMvc2VsZnRlc3QuYworKysgYi90ZXN0cy9zZWxmdGVz
dC5jCkBAIC02LDggKzYsOCBAQCBzdGF0aWMgY29uc3QgQ2hlY2thc21DcHVJbmZvIGNwdXNbXSA9
IHsKICNpZiBBUkNIX1g4NgogICAgIHsgIkdlbmVyaWMgeDg2IiwgICAgICJ4ODYiLCAgICAgU0VM
RlRFU1RfQ1BVX0ZMQUdfWDg2ICAgICB9LAogICAgIHsgIk1NWCIsICAgICAgICAgICAgICJtbXgi
LCAgICAgU0VMRlRFU1RfQ1BVX0ZMQUdfTU1YICAgICB9LAotICAgIHsgIlNTRTIiLCAgICAgICAg
ICAgICJzc2UyIiwgICAgU0VMRlRFU1RfQ1BVX0ZMQUdfU1NFMiAgICB9LAotICAgIHsgIkFWWC0y
IiwgICAgICAgICAgICJhdngyIiwgICAgU0VMRlRFU1RfQ1BVX0ZMQUdfQVZYMiAgICB9LAorICAg
IHsgIlNTRSIsICAgICAgICAgICAgICJzc2UiLCAgICAgU0VMRlRFU1RfQ1BVX0ZMQUdfU1NFICAg
ICB9LAorICAgIHsgIkFWWCIsICAgICAgICAgICAgICJhdngiLCAgICAgU0VMRlRFU1RfQ1BVX0ZM
QUdfQVZYICAgICB9LAogICAgIHsgIkFWWC01MTIiLCAgICAgICAgICJhdng1MTIiLCAgU0VMRlRF
U1RfQ1BVX0ZMQUdfQVZYNTEyICB9LAogI2VuZGlmCiAjaWYgQVJDSF9SSVNDVgpkaWZmIC0tZ2l0
IGEvdGVzdHMvdGVzdHMuaCBiL3Rlc3RzL3Rlc3RzLmgKaW5kZXggZjNmOWMwNDYzNS4uNWYyZDk5
MDgwMiAxMDA2NDQKLS0tIGEvdGVzdHMvdGVzdHMuaAorKysgYi90ZXN0cy90ZXN0cy5oCkBAIC00
MSw4ICs0MSw4IEBAIGVudW0gewogI2lmIEFSQ0hfWDg2CiAgICAgU0VMRlRFU1RfQ1BVX0ZMQUdf
WDg2ICAgID0gMSA8PCAxLAogICAgIFNFTEZURVNUX0NQVV9GTEFHX01NWCAgICA9IDEgPDwgMiwK
LSAgICBTRUxGVEVTVF9DUFVfRkxBR19TU0UyICAgPSAxIDw8IDMsCi0gICAgU0VMRlRFU1RfQ1BV
X0ZMQUdfQVZYMiAgID0gMSA8PCA0LAorICAgIFNFTEZURVNUX0NQVV9GTEFHX1NTRSAgICA9IDEg
PDwgMywKKyAgICBTRUxGVEVTVF9DUFVfRkxBR19BVlggICAgPSAxIDw8IDQsCiAgICAgU0VMRlRF
U1RfQ1BVX0ZMQUdfQVZYNTEyID0gMSA8PCA1LAogI2VsaWYgQVJDSF9SSVNDVgogICAgIFNFTEZU
RVNUX0NQVV9GTEFHX1JWSSAgICA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL3Rlc3RzL3g4Ni90ZXN0
cy5jIGIvdGVzdHMveDg2L3Rlc3RzLmMKaW5kZXggN2M3Mjc3ZDlkNS4uMzc3ZWM0MjhhMCAxMDA2
NDQKLS0tIGEvdGVzdHMveDg2L3Rlc3RzLmMKKysrIGIvdGVzdHMveDg2L3Rlc3RzLmMKQEAgLTIw
LDMxICsyMCwzMCBAQCB1aW50NjRfdCBzZWxmdGVzdF9nZXRfY3B1X2ZsYWdzX3g4Nih2b2lkKQog
ICAgIGNoZWNrYXNtX2NwdV9jcHVpZCgmciwgMSwgMCk7CiAgICAgaWYgKHIuZWR4ICYgMHgwMDgw
MDAwMCkgLyogTU1YICovCiAgICAgICAgIGZsYWdzIHw9IFNFTEZURVNUX0NQVV9GTEFHX01NWDsK
LSAgICBpZiAoci5lZHggJiAweDAyMDAwMDAwKSAvKiBTU0UyICovCi0gICAgICAgIGZsYWdzIHw9
IFNFTEZURVNUX0NQVV9GTEFHX1NTRTI7CisgICAgaWYgKHIuZWR4ICYgMHgwMjAwMDAwMCkgLyog
U1NFICovCisgICAgICAgIGZsYWdzIHw9IFNFTEZURVNUX0NQVV9GTEFHX1NTRTsKICAgICBpZiAo
fnIuZWN4ICYgMHgxODAwMDAwMCkgLyogT1NYU0FWRS9BVlggKi8KICAgICAgICAgcmV0dXJuIGZs
YWdzOwogCiAgICAgY29uc3QgdWludDY0X3QgeGNyMCA9IGNoZWNrYXNtX2NwdV94Z2V0YnYoMCk7
Ci0gICAgaWYgKG1heF9sZWFmIDwgNyB8fCB+eGNyMCAmIDB4NikgLyogWE1NL1lNTSAqLworICAg
IGlmICh+eGNyMCAmIDB4NikgLyogWE1NL1lNTSAqLworICAgICAgICByZXR1cm4gZmxhZ3M7CisK
KyAgICBmbGFncyB8PSBTRUxGVEVTVF9DUFVfRkxBR19BVlg7CisKKyAgICBpZiAobWF4X2xlYWYg
PCA3IHx8IH54Y3IwICYgMHhlMCkgLyogWk1NL09QTUFTSyAqLwogICAgICAgICByZXR1cm4gZmxh
Z3M7CiAKICAgICBjaGVja2FzbV9jcHVfY3B1aWQoJnIsIDcsIDApOwotICAgIGlmIChyLmVieCAm
IDB4MDAwMDAwMjApIC8qIEFWWDIgKi8KLSAgICAgICAgZmxhZ3MgfD0gU0VMRlRFU1RfQ1BVX0ZM
QUdfQVZYMjsKLQotICAgIGlmICh+eGNyMCAmIDB4ZTApIC8qIFpNTS9PUE1BU0sgKi8KLSAgICAg
ICAgcmV0dXJuIGZsYWdzOwotCi0gICAgaWYgKHIuZWJ4ICYgMHgwMDAwMDAyMCkgLyogQVZYNTEy
RiAqLworICAgIGlmIChyLmVieCAmIDB4MDAwMTAwMDApIC8qIEFWWDUxMkYgKi8KICAgICAgICAg
ZmxhZ3MgfD0gU0VMRlRFU1RfQ1BVX0ZMQUdfQVZYNTEyOwogICAgIHJldHVybiBmbGFnczsKIH0K
IAogREVGX0NPUFlfRlVOQyhjb3B5X3g4Nik7CiBERUZfQ09QWV9GVU5DKGNvcHlfbW14KTsKLURF
Rl9DT1BZX0ZVTkMoY29weV9zc2UyKTsKLURFRl9DT1BZX0ZVTkMoY29weV9hdngyKTsKK0RFRl9D
T1BZX0ZVTkMoY29weV9zc2UpOworREVGX0NPUFlfRlVOQyhjb3B5X2F2eCk7CiBERUZfQ09QWV9G
VU5DKGNvcHlfYXZ4NTEyKTsKIAogREVGX05PT1BfRlVOQyhjbG9iYmVyX3IwKTsKQEAgLTY5LDcg
KzY4LDcgQEAgREVGX05PT1BfRlVOQyhzaWdpbGxfeDg2KTsKIERFRl9OT09QX0ZVTkMoY29ycnVw
dF9zdGFja194ODYpOwogCiBERUZfQ09QWV9GVU5DKGNvcHlfbm9lbW1zX21teCk7Ci1ERUZfQ09Q
WV9GVU5DKGNvcHlfbm92emVyb3VwcGVyX2F2eDIpOworREVGX0NPUFlfRlVOQyhjb3B5X25vdnpl
cm91cHBlcl9hdngpOwogCiBzdGF0aWMgY29weV9mdW5jICpnZXRfY29weV94ODYodm9pZCkKIHsK
QEAgLTc3LDEwICs3NiwxMCBAQCBzdGF0aWMgY29weV9mdW5jICpnZXRfY29weV94ODYodm9pZCkK
ICNpZiBBUkNIX1g4NgogICAgIGlmIChmbGFncyAmIFNFTEZURVNUX0NQVV9GTEFHX0FWWDUxMikK
ICAgICAgICAgcmV0dXJuIHNlbGZ0ZXN0X2NvcHlfYXZ4NTEyOwotICAgIGlmIChmbGFncyAmIFNF
TEZURVNUX0NQVV9GTEFHX0FWWDIpCi0gICAgICAgIHJldHVybiBzZWxmdGVzdF9jb3B5X2F2eDI7
Ci0gICAgaWYgKGZsYWdzICYgU0VMRlRFU1RfQ1BVX0ZMQUdfU1NFMikKLSAgICAgICAgcmV0dXJu
IHNlbGZ0ZXN0X2NvcHlfc3NlMjsKKyAgICBpZiAoZmxhZ3MgJiBTRUxGVEVTVF9DUFVfRkxBR19B
VlgpCisgICAgICAgIHJldHVybiBzZWxmdGVzdF9jb3B5X2F2eDsKKyAgICBpZiAoZmxhZ3MgJiBT
RUxGVEVTVF9DUFVfRkxBR19TU0UpCisgICAgICAgIHJldHVybiBzZWxmdGVzdF9jb3B5X3NzZTsK
ICAgICBpZiAoZmxhZ3MgJiBTRUxGVEVTVF9DUFVfRkxBR19NTVgpCiAgICAgICAgIHJldHVybiBz
ZWxmdGVzdF9jb3B5X21teDsKICAgICBpZiAoZmxhZ3MgJiBTRUxGVEVTVF9DUFVfRkxBR19YODYp
CkBAIC0xMzQsNyArMTMzLDcgQEAgc3RhdGljIG5vb3BfZnVuYyAqZ2V0X2Nsb2JiZXIoaW50IHJl
ZykKIERFRl9OT09QX0dFVFRFUihTRUxGVEVTVF9DUFVfRkxBR19YODYsIHNpZ2lsbF94ODYpCiBE
RUZfTk9PUF9HRVRURVIoU0VMRlRFU1RfQ1BVX0ZMQUdfWDg2LCBjb3JydXB0X3N0YWNrX3g4NikK
IERFRl9DT1BZX0dFVFRFUihTRUxGVEVTVF9DUFVfRkxBR19NTVgsIGNvcHlfbm9lbW1zX21teCkK
LURFRl9DT1BZX0dFVFRFUihTRUxGVEVTVF9DUFVfRkxBR19BVlgyLCBjb3B5X25vdnplcm91cHBl
cl9hdngyKQorREVGX0NPUFlfR0VUVEVSKFNFTEZURVNUX0NQVV9GTEFHX0FWWCwgY29weV9ub3Z6
ZXJvdXBwZXJfYXZ4KQogCiB1aW50cHRyX3Qgc2VsZnRlc3RfZ2V0X3N0YWNrX3BvaW50ZXJfeDg2
KGludCB1bnVzZWQpOwogCkBAIC0yMTQsNyArMjEzLDcgQEAgdm9pZCBzZWxmdGVzdF9jaGVja194
ODYodm9pZCkKICAgICBjaGVja19jbG9iYmVyKE5VTV9TQUZFLCBOVU1fUkVHUyk7CiAKICAgICBp
ZiAoY2hlY2thc21fZ2V0X2NoZWNrX3Z6ZXJvdXBwZXIoKSkKLSAgICAgICAgc2VsZnRlc3RfdGVz
dF9jb3B5KGdldF9jb3B5X25vdnplcm91cHBlcl9hdngyKCksICJub3Z6ZXJvdXBwZXIiLCAzMik7
CisgICAgICAgIHNlbGZ0ZXN0X3Rlc3RfY29weShnZXRfY29weV9ub3Z6ZXJvdXBwZXJfYXZ4KCks
ICJub3Z6ZXJvdXBwZXIiLCAzMik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdHMveDg2
L3Rlc3RzX2FzbS5hc20gYi90ZXN0cy94ODYvdGVzdHNfYXNtLmFzbQppbmRleCAxYWY5ZTEyZGFl
Li5hMmVlZmY0N2VlIDEwMDY0NAotLS0gYS90ZXN0cy94ODYvdGVzdHNfYXNtLmFzbQorKysgYi90
ZXN0cy94ODYvdGVzdHNfYXNtLmFzbQpAQCAtOTksMTUgKzk5LDE1IEBAIGNvcHlfbW0gX25vZW1t
cwogY2dsb2JhbCBub2VtbXMsIDMsIDMsIDAsIGRzdCwgc3JjLCBzaXplCiAgICAgUkVUCiAKLTsg
U1NFMiBmdW5jdGlvbnMKLUlOSVRfWE1NIHNzZTIKKzsgU1NFIGZ1bmN0aW9ucworSU5JVF9YTU0g
c3NlCiBjb3B5X21tCiAKLTsgQVZYMiBmdW5jdGlvbnMKLUlOSVRfWU1NIGF2eDIKKzsgQVZYIGZ1
bmN0aW9ucworSU5JVF9ZTU0gYXZ4CiBjb3B5X21tCiBjb3B5X21tIF9ub3Z6ZXJvdXBwZXIKIAog
OyBBVlg1MTIgZnVuY3Rpb25zCi1JTklUX1lNTSBhdng1MTIKK0lOSVRfWk1NIGF2eDUxMgogY29w
eV9tbQotLSAKMi41Mi4wCgoKRnJvbSBlZDA3MmNkMDAyZmE0MTYzNmI1NWJkZGE4YWViMWFkNTdl
ZWQ1ODY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQg
PGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KRGF0ZTogVHVlLCAyOCBKdWwgMjAyNiAw
MTo0MDoxMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi85XSB0ZXN0cy9jaGVja2FzbS9hdl90eDog
Rml4IHNlZ2ZhdWx0IHdoZW4gdXNpbmcgLS1yZXBlYXQKClRoZSBUWCB0ZXN0cyByZXF1aXJlIGEg
Y29udGV4dCB0aGF0IGlzIGluaXRpYWxpemVkCmZvciBhIHNwZWNpZmljIHNldCBvZiBDUFUgZmxh
Z3MuIFNvIGluIG9yZGVyIHRvIGhhdmUKYSBjb250ZXh0IGZvciB0aGUgcmVmZXJlbmNlIGZ1bmN0
aW9uIHRvIHVzZSwgdGhlIGxhc3QKY29udGV4dCBpcyBzdG9yZWQgKGluIHN0YXRpYyBzdG9yYWdl
KS4gVGhpcyB3b3JrcyB3ZWxsCmluIG5vcm1hbCB1c2FnZSwgYnV0IGl0IGRvZXMgd29yayB0aGUg
LS1yZXBlYXQgZmVhdHVyZQp0aGF0IGhhcyBiZWVuIGFkZGVkIHRvIGNoZWNrYXNtIGJ5IHRoZSBz
d2l0Y2ggdG8gbGliY2hlY2thc206CldoZW4gdGhlIEMgZnVuY3Rpb25zIG91Z2h0IHRvIGJlIHRl
c3RlZCBhIHNlY29uZCB0aW1lLAp0aGVyZSBpcyBhIG1pc21hdGNoIGJldHdlZW4gdGhlIG5ldyBm
dW5jdGlvbiBwb2ludGVyCih3aGljaCBpcyB0aGUgQyB2ZXJzaW9uKSBhbmQgdGhlIHJlZmVyZW5j
ZSBjb250ZXh0Cih3aGljaCBpcyBpbml0aWFsaXplZCB0byBvcHRpbWl6ZWQgQ1BVIGZsYWdzOyB1
cCB1bnRpbCBub3csCnRoZXJlIHdhcyBubyBzdG9yZWQgY29udGV4dCB3aGVuIHRlc3RpbmcgdGhl
IEMgdmVyc2lvbnMpLApsZWFkaW5nIHRvIHNlZ2ZhdWx0cy4KCkZpeCB0aGlzIGJ5IGFkZGluZyBh
biB1bmluaXQgY2FsbGJhY2sgZm9yIHRoZSBUWCB0ZXN0LApyZXBsYWNpbmcgdGhlIGF0ZXhpdCBo
YW5kbGVyLgoKU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWlu
aGFyZHRAb3V0bG9vay5jb20+Ci0tLQogdGVzdHMvY2hlY2thc20vYXZfdHguYyAgICB8IDggKy0t
LS0tLS0KIHRlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMgfCAyICstCiB0ZXN0cy9jaGVja2FzbS9j
aGVja2FzbS5oIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDggZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vYXZfdHguYyBiL3Rlc3RzL2No
ZWNrYXNtL2F2X3R4LmMKaW5kZXggMmQ3YjRlNjYyZC4uM2JjNjZlZGYyNSAxMDA2NDQKLS0tIGEv
dGVzdHMvY2hlY2thc20vYXZfdHguYworKysgYi90ZXN0cy9jaGVja2FzbS9hdl90eC5jCkBAIC00
NSw5ICs0NSw4IEBAIHN0YXRpYyBjb25zdCBpbnQgY2hlY2tfbGVuc1tdID0gewogfTsKIAogc3Rh
dGljIEFWVFhDb250ZXh0ICp0eF9yZWZzW0FWX1RYX05CXVsyIC8qIERpcmVjdGlvbiAqL11bRkZf
QVJSQVlfRUxFTVMoY2hlY2tfbGVucyldID0geyAwIH07Ci1zdGF0aWMgaW50IGluaXQgPSAwOwog
Ci1zdGF0aWMgdm9pZCBmcmVlX3R4X3JlZnModm9pZCkKK3ZvaWQgY2hlY2thc21fdW5pbml0X3R4
KHZvaWQpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyh0eF9yZWZz
KTsgaSsrKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEZGX0FSUkFZX0VMRU1TKCp0eF9y
ZWZzKTsgaisrKQpAQCAtMTIxLDkgKzEyMCw0IEBAIHZvaWQgY2hlY2thc21fY2hlY2tfYXZfdHgo
dm9pZCkKICAgICBhdl9mcmVlKGluKTsKICAgICBhdl9mcmVlKG91dF9yZWYpOwogICAgIGF2X2Zy
ZWUob3V0X25ldyk7Ci0KLSAgICBpZiAoIWluaXQpIHsKLSAgICAgICAgaW5pdCA9IDE7Ci0gICAg
ICAgIGF0ZXhpdChmcmVlX3R4X3JlZnMpOwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2No
ZWNrYXNtL2NoZWNrYXNtLmMgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCmluZGV4IGE4Y2Fk
NTlkNGMuLmQzOTRkM2M2MWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMK
KysrIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uYwpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRp
YyBjb25zdCBDaGVja2FzbVRlc3QgdGVzdHNbXSA9IHsKICNpZiBDT05GSUdfUElYRUxVVElMUwog
ICAgICAgICB7ICJwaXhlbHV0aWxzIixjaGVja2FzbV9jaGVja19waXhlbHV0aWxzIH0sCiAjZW5k
aWYKLSAgICAgICAgeyAiYXZfdHgiLCAgICAgY2hlY2thc21fY2hlY2tfYXZfdHggfSwKKyAgICAg
ICAgeyAiYXZfdHgiLCAgICAgY2hlY2thc21fY2hlY2tfYXZfdHgsIC51bmluaXQgPSBjaGVja2Fz
bV91bmluaXRfdHggfSwKICNlbmRpZgogICAgIHsgTlVMTCB9CiAgICAgLyogTk9URTogV2hlbiBh
ZGRpbmcgYSBuZXcgdGVzdCB0byB0aGlzIGxpc3QgaGVyZSwgaXQgYWxzbyBuZWVkcyB0byBiZQpk
aWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaCBiL3Rlc3RzL2NoZWNrYXNtL2No
ZWNrYXNtLmgKaW5kZXggNzA5ODdiNTJmMS4uM2UyNjZjMTYyNiAxMDA2NDQKLS0tIGEvdGVzdHMv
Y2hlY2thc20vY2hlY2thc20uaAorKysgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCkBAIC0x
MzMsNiArMTMzLDggQEAgdm9pZCBjaGVja2FzbV9jaGVja192dmNfYWxmKHZvaWQpOwogdm9pZCBj
aGVja2FzbV9jaGVja192dmNfbWModm9pZCk7CiB2b2lkIGNoZWNrYXNtX2NoZWNrX3Z2Y19zYW8o
dm9pZCk7CiAKK3ZvaWQgY2hlY2thc21fdW5pbml0X3R4KHZvaWQpOworCiAjZGVmaW5lIHJuZCBj
aGVja2FzbV9yYW5kX3VpbnQzMgogI2RlZmluZSBkZWNsYXJlX2Z1bmNfZmxvYXQgZGVjbGFyZV9m
dW5jCiAjZGVmaW5lIGJlbmNoKC4uLikgY2hlY2thc21fYmVuY2goX19WQV9BUkdTX18pCi0tIAoy
LjUyLjAKCgpGcm9tIGFiODNkNmU3Yjk0ZmVjMTBhNWIyNWZkNmIxMWJiY2QyZTFjZTExMWUgTW9u
IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5y
aGVpbmhhcmR0QG91dGxvb2suY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDEyOjEyOjQ3ICsw
MjAwClN1YmplY3Q6IFtQQVRDSCAzLzldIHRlc3RzL2NoZWNrYXNtL2NyYzogUmVzZXQgc3RhdGlj
IHN0dWZmIG9uIHJlcGVhdAoKSW4gb3JkZXIgdG8gdGVzdCByYW5kb20gZW5kaWFubmVzcyBhbmQg
cG9seW5vbWlhbCBjb21iaW5hdGlvbnMsCnRoZSBwYXJhbWV0ZXJzIChlbmRpYW5uZXNzLCBuYiBv
ZiBiaXRzLCBwb2x5bm9taWFsKSBoYXZlIHRvIGJlCnRoZSBzYW1lIGZvciB0aGUgb3B0aW1pemVk
IGFuZCB0aGUgcmVmZXJlbmNlIHRhYmxlczsgdGhlcmVmb3JlCnNhaWQgcGFyYW1ldGVycyBhcmUg
a2VwdCAoaW4gc3RhdGljIHN0b3JhZ2UpIGFuZCB1cCB1bnRpbCBub3cKaW5pdGlhbGl6ZWQgZHVy
aW5nIHRoZSBmaXJzdCBydW4uCgpUaGlzIGhhcyB0aGUgZG93bnNpZGUgdGhhdCB3aXRoIC0tcmVw
ZWF0IG9uZSBvbmx5IGV2ZXIgdGVzdHMKb25lIHJhbmRvbSBwb2x5bm9taWFsLiBGaXggdGhpcyBi
eSBpbml0aWFsaXppbmcgdGhlIHBhcmFtZXRlcnMKaW4gYW4gaW5pdCBjYWxsYmFjay4gQWxzbyBp
bml0IHRoZSBzaXplcyBhbmQgb2Zmc2V0cyB0aGVyZQoodGhleSB3ZXJlIGFsc28ga2VwdCBmb3Ig
YmVuY2htYXJrIHN0YWJpbGl0eSkuCgpBbHNvIGZyZWUgdGhlIHByZXZpb3VzbHkgYWxsb2NhdGVk
IGN1c3RvbSB0YWJsZXMgaW4gYW4gdW5pbml0CmNhbGxiYWNrIHRvIGF2b2lkIHVzaW5nIHVubmVj
ZXNzYXJpbHkgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnk7Cml0IGFsc28gbWFrZXMgVmFsZ3JpbmQg
bm8gbG9uZ2VyIHJlcG9ydCB0aGVtIGFzICJzdGlsbCByZWFjaGFibGUiLgoKU2lnbmVkLW9mZi1i
eTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0t
LQogdGVzdHMvY2hlY2thc20vY2hlY2thc20uYyB8ICAyICstCiB0ZXN0cy9jaGVja2FzbS9jaGVj
a2FzbS5oIHwgIDMgKysKIHRlc3RzL2NoZWNrYXNtL2NyYy5jICAgICAgfCA2NSArKysrKysrKysr
KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0
aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vY2hl
Y2thc20uYyBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKaW5kZXggZDM5NGQzYzYxYS4uYjlj
ZmMwMjdlNCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vY2hlY2thc20uYworKysgYi90ZXN0
cy9jaGVja2FzbS9jaGVja2FzbS5jCkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGNvbnN0IENo
ZWNrYXNtVGVzdCB0ZXN0c1tdID0gewogI2VuZGlmCiAjaWYgQ09ORklHX0FWVVRJTAogICAgICAg
ICB7ICJhZXMiLCAgICAgICBjaGVja2FzbV9jaGVja19hZXMgfSwKLSAgICAgICAgeyAiY3JjIiwg
ICAgICAgY2hlY2thc21fY2hlY2tfY3JjIH0sCisgICAgICAgIHsgImNyYyIsICAgICAgIGNoZWNr
YXNtX2NoZWNrX2NyYywgLmluaXQgPSBjaGVja2FzbV9pbml0X2NyYywgLnVuaW5pdCA9IGNoZWNr
YXNtX3VuaW5pdF9jcmMgfSwKICAgICAgICAgeyAiZml4ZWRfZHNwIiwgY2hlY2thc21fY2hlY2tf
Zml4ZWRfZHNwIH0sCiAgICAgICAgIHsgImZsb2F0X2RzcCIsIGNoZWNrYXNtX2NoZWNrX2Zsb2F0
X2RzcCB9LAogICAgICAgICB7ICJsbHMiLCAgICAgICBjaGVja2FzbV9jaGVja19sbHMgfSwKZGlm
ZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmggYi90ZXN0cy9jaGVja2FzbS9jaGVj
a2FzbS5oCmluZGV4IDNlMjY2YzE2MjYuLjhjYzBlYjcyZjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2No
ZWNrYXNtL2NoZWNrYXNtLmgKKysrIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaApAQCAtMTMz
LDYgKzEzMyw5IEBAIHZvaWQgY2hlY2thc21fY2hlY2tfdnZjX2FsZih2b2lkKTsKIHZvaWQgY2hl
Y2thc21fY2hlY2tfdnZjX21jKHZvaWQpOwogdm9pZCBjaGVja2FzbV9jaGVja192dmNfc2FvKHZv
aWQpOwogCit2b2lkIGNoZWNrYXNtX2luaXRfY3JjKHZvaWQpOworCit2b2lkIGNoZWNrYXNtX3Vu
aW5pdF9jcmModm9pZCk7CiB2b2lkIGNoZWNrYXNtX3VuaW5pdF90eCh2b2lkKTsKIAogI2RlZmlu
ZSBybmQgY2hlY2thc21fcmFuZF91aW50MzIKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2Ny
Yy5jIGIvdGVzdHMvY2hlY2thc20vY3JjLmMKaW5kZXggZDZmYzljMjUyNi4uMDcwZjhhYTZkNCAx
MDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vY3JjLmMKKysrIGIvdGVzdHMvY2hlY2thc20vY3Jj
LmMKQEAgLTMzLDYgKzMzLDQxIEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL21hY3Jvcy5oIgogI2lu
Y2x1ZGUgImxpYmF2dXRpbC9tZW1faW50ZXJuYWwuaCIKIAorZW51bSB7CisgICAgQlVGX1NJWkUg
PSAxNjM4NCwKK307CisKK3R5cGVkZWYgc3RydWN0IEN1c3RvbVRlc3QgeworICAgIHN0cnVjdCBD
dXN0b21UZXN0ICpwcmV2OworICAgIEFWQ1JDIGN0eFsxMDI0XTsKK30gQ3VzdG9tVGVzdDsKKwor
c3RhdGljIEN1c3RvbVRlc3QgKmN0eF9saXN0ID0gTlVMTDsKK3N0YXRpYyBzaXplX3Qgb2Zmc2V0
c1tBVl9DUkNfTUFYICsgMV07CitzdGF0aWMgc2l6ZV90IHNpemVzW0FWX0NSQ19NQVggKyAxXTsK
K3N0YXRpYyB1aW50MzJfdCBwb2x5Oworc3RhdGljIGludCBsZSwgYml0czsKKwordm9pZCBjaGVj
a2FzbV9pbml0X2NyYyh2b2lkKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRkZfQVJS
QVlfRUxFTVMob2Zmc2V0cyk7ICsraSkgeworICAgICAgICBvZmZzZXRzW2ldID0gcm5kKCkgJiAz
MTsKKyAgICAgICAgc2l6ZXNbaV0gICA9IHJuZCgpICUgKEJVRl9TSVpFIC0gMSAtIG9mZnNldHNb
aV0pOworICAgIH0KKyAgICBsZSAgID0gcm5kKCkgJiAxOworICAgIGJpdHMgPSA4ICsgcm5kKCkg
JSAyNTsgLy8gYXZfY3JjX2luaXQoKSBhY2NlcHRzIGJldHdlZW4gOCBhbmQgMzIgYml0cworICAg
IHBvbHkgPSBybmQoKSA+PiAoMzIgLSBiaXRzKTsKK30KKwordm9pZCBjaGVja2FzbV91bmluaXRf
Y3JjKHZvaWQpCit7CisgICAgZm9yIChDdXN0b21UZXN0ICpjdXIgPSBjdHhfbGlzdDsgY3VyOykg
eworICAgICAgICBDdXN0b21UZXN0ICpwcmV2ID0gY3VyLT5wcmV2OworICAgICAgICBhdl9mcmVl
KGN1cik7CisgICAgICAgIGN1ciA9IHByZXY7CisgICAgfQorICAgIGN0eF9saXN0ID0gTlVMTDsK
K30KIAogc3RhdGljIHZvaWQgY2hlY2tfY3JjKGNvbnN0IEFWQ1JDICp0YWJsZV9uZXcsIGNvbnN0
IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGlkeCkKIHsKQEAgLTQzLDE4ICs3OCw5IEBAIHN0YXRpYyB2
b2lkIGNoZWNrX2NyYyhjb25zdCBBVkNSQyAqdGFibGVfbmV3LCBjb25zdCBjaGFyICpuYW1lLCB1
bnNpZ25lZCBpZHgpCiAgICAgaWYgKCF0YWJsZV9yZWYpCiAgICAgICAgIHJldHVybjsKIAotICAg
IERFQ0xBUkVfQUxJR05FRCg0LCB1aW50OF90LCBidWYpWzE2Mzg0XTsKLSAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldHNbQVZfQ1JDX01BWCArIDFdOwotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZXNbQVZf
Q1JDX01BWCArIDFdOwotICAgIHN0YXRpYyB1bnNpZ25lZCBzaXplc19pbml0aWFsaXplZCA9IDA7
CisgICAgREVDTEFSRV9BTElHTkVEKDQsIHVpbnQ4X3QsIGJ1ZilbQlVGX1NJWkVdOwogICAgIHVp
bnQzMl90IHByZXZfY3JjID0gcm5kKCk7CiAKLSAgICBpZiAoIShzaXplc19pbml0aWFsaXplZCAm
ICgxIDw8IGlkeCkpKSB7Ci0gICAgICAgIHNpemVzX2luaXRpYWxpemVkIHw9IDEgPDwgaWR4Owot
ICAgICAgICBvZmZzZXRzW2lkeF0gPSBybmQoKSAmIDMxOwotICAgICAgICBzaXplc1tpZHhdID0g
cm5kKCkgJSAoc2l6ZW9mKGJ1ZikgLSAxIC0gb2Zmc2V0c1tpZHhdKTsKLSAgICB9Ci0KICAgICBz
aXplX3Qgc2l6ZSA9IHNpemVzW2lkeF07CiAgICAgc2l6ZV90IG9mZnNldCA9IG9mZnNldHNbaWR4
XTsKIApAQCAtODMsMzAgKzEwOSwxOSBAQCB2b2lkIGNoZWNrYXNtX2NoZWNrX2NyYyh2b2lkKQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBVl9DUkNfTUFYOyArK2kpCiAgICAgICAgIGNo
ZWNrX2NyYyhhdl9jcmNfZ2V0X3RhYmxlKGkpLCB0ZXN0c1tpXSwgaSk7CiAKLSAgICBzdGF0aWMg
c3RydWN0IEN1c3RvbVRlc3QgewotICAgICAgICBzdHJ1Y3QgQ3VzdG9tVGVzdCAqcHJldjsKLSAg
ICAgICAgQVZDUkMgY3R4WzEwMjRdOwotICAgIH0gKmN0eCA9IE5VTEw7CiAgICAgc3RydWN0IEN1
c3RvbVRlc3QgKm5ldyA9IGF2X21hbGxvY3ooc2l6ZW9mKCpuZXcpKTsKLSAgICBzdGF0aWMgaW50
IGxlLCBiaXRzOwotICAgIHN0YXRpYyB1aW50MzJfdCBwb2x5OwogCiAgICAgaWYgKCFuZXcpCiAg
ICAgICAgIGZhaWwoKTsKIAotICAgIGlmICghY3R4KSB7Ci0gICAgICAgIGxlICAgPSBybmQoKSAm
IDE7Ci0gICAgICAgIGJpdHMgPSA4ICsgcm5kKCkgJSAyNTsgLy8gYXZfY3JjX2luaXQoKSBhY2Nl
cHRzIGJldHdlZW4gOCBhbmQgMzIgYml0cwotICAgICAgICBwb2x5ID0gcm5kKCkgPj4gKDMyIC0g
Yml0cyk7Ci0gICAgfQogICAgIGF2X2Fzc2VydDAoYXZfY3JjX2luaXQobmV3LT5jdHgsIGxlLCBi
aXRzLCBwb2x5LCBzaXplb2YobmV3LT5jdHgpKSA+PSAwKTsKLSAgICBpZiAoY3R4ICYmICFtZW1j
bXAoY3R4LT5jdHgsIG5ldy0+Y3R4LCBzaXplb2YobmV3LT5jdHgpKSkgeworICAgIGlmIChjdHhf
bGlzdCAmJiAhbWVtY21wKGN0eF9saXN0LT5jdHgsIG5ldy0+Y3R4LCBzaXplb2YobmV3LT5jdHgp
KSkgewogICAgICAgICBhdl9mcmVlKG5ldyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbmV3LT5w
cmV2ID0gY3R4OwotICAgICAgICBjdHggPSBuZXc7CisgICAgICAgIG5ldy0+cHJldiA9IGN0eF9s
aXN0OworICAgICAgICBjdHhfbGlzdCA9IG5ldzsKICAgICB9CiAKLSAgICBjaGVja19jcmMoY3R4
LT5jdHgsICJjdXN0b21fcG9seW5vbWlhbCIsIEFWX0NSQ19NQVgpOworICAgIGNoZWNrX2NyYyhj
dHhfbGlzdC0+Y3R4LCAiY3VzdG9tX3BvbHlub21pYWwiLCBBVl9DUkNfTUFYKTsKICAgICByZXBv
cnQoImNyYyIpOwogfQotLSAKMi41Mi4wCgoKRnJvbSA4OGU2ZDg4ODUyOWU3NjJkYmRjYmE2NGQz
ZjM3MGU1M2Q5YjVlMzE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJo
ZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KRGF0ZTogVHVlLCAyOCBK
dWwgMjAyNiAxMjo0ODowMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggNC85XSB0ZXN0cy9jaGVja2Fz
bS9zYmNkc3A6IFNldCBuYiBvZiBibG9ja3MgdG8gdGVzdCBpbiBpbml0CgpJdCBtZWFucyB0aGF0
IG9uZSBkb2VzIG5vdCBvbmx5IHRlc3Qgb25lIG51bWJlciBvZiBibG9ja3MKd2hlbiB1c2luZyAt
LXJlcGVhdC4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVp
bmhhcmR0QG91dGxvb2suY29tPgotLS0KIHRlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMgfCAgMiAr
LQogdGVzdHMvY2hlY2thc20vY2hlY2thc20uaCB8ICAxICsKIHRlc3RzL2NoZWNrYXNtL3NiY2Rz
cC5jICAgfCAxMCArKysrKysrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwg
NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jIGIv
dGVzdHMvY2hlY2thc20vY2hlY2thc20uYwppbmRleCBiOWNmYzAyN2U0Li42NmJjZTIzNzY0IDEw
MDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCisrKyBiL3Rlc3RzL2NoZWNrYXNt
L2NoZWNrYXNtLmMKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgY29uc3QgQ2hlY2thc21UZXN0
IHRlc3RzW10gPSB7CiAgICAgICAgIHsgInJ2NDBkc3AiLCBjaGVja2FzbV9jaGVja19ydjQwZHNw
IH0sCiAgICAgI2VuZGlmCiAgICAgI2lmIENPTkZJR19TQkNfRU5DT0RFUgotICAgICAgICB7ICJz
YmNkc3AiLCBjaGVja2FzbV9jaGVja19zYmNkc3AgfSwKKyAgICAgICAgeyAic2JjZHNwIiwgY2hl
Y2thc21fY2hlY2tfc2JjZHNwLCAuaW5pdCA9IGNoZWNrYXNtX2luaXRfc2JjIH0sCiAgICAgI2Vu
ZGlmCiAgICAgI2lmIENPTkZJR19TTk9XX0RFQ09ERVIKICAgICAgICAgeyAic25vd2RzcCIsIGNo
ZWNrYXNtX2NoZWNrX3Nub3dkc3AgfSwKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNr
YXNtLmggYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCmluZGV4IDhjYzBlYjcyZjIuLjQ0OWVj
YjE4OGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmgKKysrIGIvdGVzdHMv
Y2hlY2thc20vY2hlY2thc20uaApAQCAtMTM0LDYgKzEzNCw3IEBAIHZvaWQgY2hlY2thc21fY2hl
Y2tfdnZjX21jKHZvaWQpOwogdm9pZCBjaGVja2FzbV9jaGVja192dmNfc2FvKHZvaWQpOwogCiB2
b2lkIGNoZWNrYXNtX2luaXRfY3JjKHZvaWQpOwordm9pZCBjaGVja2FzbV9pbml0X3NiYyh2b2lk
KTsKIAogdm9pZCBjaGVja2FzbV91bmluaXRfY3JjKHZvaWQpOwogdm9pZCBjaGVja2FzbV91bmlu
aXRfdHgodm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9zYmNkc3AuYyBiL3Rlc3Rz
L2NoZWNrYXNtL3NiY2RzcC5jCmluZGV4IDgwMmViNDMwZWQuLmI3NzI2MDViMTYgMTAwNjQ0Ci0t
LSBhL3Rlc3RzL2NoZWNrYXNtL3NiY2RzcC5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL3NiY2RzcC5j
CkBAIC0zNSw2ICszNSwxMyBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgYnVmW2tdID0gcm5kKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogfSB3aGlsZSAoMCkKIAorc3RhdGljIGludCBibG9ja3M7CisKK3Zv
aWQgY2hlY2thc21faW5pdF9zYmModm9pZCkKK3sKKyAgICBibG9ja3MgPSAoKGNvbnN0IGludFtd
KXs0LCA4LCAxMiwgMTUsIDE2fSlbcm5kKCkgJSA1XTsKK30KKwogc3RhdGljIHZvaWQgY2hlY2tf
c2JjX2FuYWx5emUoU0JDRFNQQ29udGV4dCAqc2JjZHNwKQogewogICAgIERFQ0xBUkVfQUxJR05F
RChTQkNfQUxJR04sIGludDE2X3QsIGluKVsxMCAqIFNCQ19NQVhfU1VCQkFORFNdOwpAQCAtNzks
OSArODYsNiBAQCBzdGF0aWMgdm9pZCBjaGVja19zYmNfY2FsY19zY2FsZWZhY3RvcnMoY29uc3Qg
U0JDRFNQQ29udGV4dCAqY29uc3Qgc2JjZHNwKQogICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBzY2FsZV9mYWN0b3JbMl1bOF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9j
a3MsIGludCBjaGFubmVscywgaW50IHN1YmJhbmRzKTsKIAotICAgIHN0YXRpYyBpbnQgYmxvY2tz
ID0gMDsKLSAgICBpZiAoIWJsb2NrcykKLSAgICAgICAgYmxvY2tzID0gKChjb25zdCBpbnRbXSl7
NCwgOCwgMTIsIDE1LCAxNn0pW3JuZCgpICUgNV07CiAgICAgaW50IGluaXRlZCA9IDA7CiAKICAg
ICBmb3IgKGludCBjaCA9IDE7IGNoIDw9IDI7ICsrY2gpIHsKLS0gCjIuNTIuMAoKCkZyb20gOWMw
MTRmMzBhMGY4ZWM2MmEyNGRjNDIyYzlhYTQ2NjQ2NzU2YTI3ZiBNb24gU2VwIDE3IDAwOjAwOjAw
IDIwMDEKRnJvbTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9v
ay5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTI6NTc6MDcgKzAyMDAKU3ViamVjdDogW1BB
VENIIDUvOV0gdGVzdHMvY2hlY2thc20vaHVmZnl1dmVuY2RzcDogU2V0IHdpZHRoIGluIGluaXQK
Ckl0IG1lYW5zIHRoYXQgb25lIG5vdyB0ZXN0cyBtdWx0aXBsZSB3aWR0aCB2YWx1ZXMgd2hlbiB1
c2luZwotLXJlcGVhdC4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVh
cy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIHRlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMg
ICAgICB8ICAyICstCiB0ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oICAgICAgfCAgMSArCiB0ZXN0
cy9jaGVja2FzbS9odWZmeXV2ZW5jZHNwLmMgfCAxNSArKysrKysrKy0tLS0tLS0KIDMgZmlsZXMg
Y2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90
ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uYwppbmRl
eCA2NmJjZTIzNzY0Li45YTE1NmIzYzIzIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9jaGVj
a2FzbS5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKQEAgLTE0MCw3ICsxNDAsNyBA
QCBzdGF0aWMgY29uc3QgQ2hlY2thc21UZXN0IHRlc3RzW10gPSB7CiAgICAgICAgIHsgImh1ZmZ5
dXZkc3AiLCBjaGVja2FzbV9jaGVja19odWZmeXV2ZHNwIH0sCiAgICAgI2VuZGlmCiAgICAgI2lm
IENPTkZJR19IVUZGWVVWRU5DRFNQCi0gICAgICAgIHsgImh1ZmZ5dXZlbmNkc3AiLCBjaGVja2Fz
bV9jaGVja19odWZmeXV2ZW5jZHNwIH0sCisgICAgICAgIHsgImh1ZmZ5dXZlbmNkc3AiLCBjaGVj
a2FzbV9jaGVja19odWZmeXV2ZW5jZHNwLCAuaW5pdCA9IGNoZWNrYXNtX2luaXRfaHVmZnl1dmVu
Y2RzcCB9LAogICAgICNlbmRpZgogICAgICNpZiBDT05GSUdfSURDVERTUAogICAgICAgICB7ICJp
ZGN0ZHNwIiwgY2hlY2thc21fY2hlY2tfaWRjdGRzcCB9LApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hl
Y2thc20vY2hlY2thc20uaCBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmgKaW5kZXggNDQ5ZWNi
MTg4Yy4uMzUwYWE1Y2JjOSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaAor
KysgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBj
aGVja2FzbV9jaGVja192dmNfbWModm9pZCk7CiB2b2lkIGNoZWNrYXNtX2NoZWNrX3Z2Y19zYW8o
dm9pZCk7CiAKIHZvaWQgY2hlY2thc21faW5pdF9jcmModm9pZCk7Cit2b2lkIGNoZWNrYXNtX2lu
aXRfaHVmZnl1dmVuY2RzcCh2b2lkKTsKIHZvaWQgY2hlY2thc21faW5pdF9zYmModm9pZCk7CiAK
IHZvaWQgY2hlY2thc21fdW5pbml0X2NyYyh2b2lkKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNr
YXNtL2h1ZmZ5dXZlbmNkc3AuYyBiL3Rlc3RzL2NoZWNrYXNtL2h1ZmZ5dXZlbmNkc3AuYwppbmRl
eCBiNWQwMmNkYTZkLi43OTViZTI0MWVhIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9odWZm
eXV2ZW5jZHNwLmMKKysrIGIvdGVzdHMvY2hlY2thc20vaHVmZnl1dmVuY2RzcC5jCkBAIC0zNiw2
ICszNiwxMyBAQCBlbnVtIHsKICAgICAgICAgICAgIGJ1ZltqXSA9IHJuZCgpICYgbWFzazsgICAg
ICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAorc3RhdGljIHVuc2lnbmVkIHNhdmVkX3dpZHRoOwor
Cit2b2lkIGNoZWNrYXNtX2luaXRfaHVmZnl1dmVuY2RzcCh2b2lkKQoreworICAgIHNhdmVkX3dp
ZHRoID0gcm5kKCkgJSBNQVhfV0lEVEg7CisgICAgc2F2ZWRfd2lkdGggPSBzYXZlZF93aWR0aCA/
IHNhdmVkX3dpZHRoIDogMTsKK30KIAogc3RhdGljIHZvaWQgY2hlY2tfc3ViX2hmeXVfbWVkaWFu
X3ByZWRfaW50MTYoY29uc3QgY2hhciAqYWxpZ25lZCwgdW5zaWduZWQgd2lkdGgpCiB7CkBAIC03
MiwxNCArNzksOCBAQCBzdGF0aWMgdm9pZCBjaGVja19zdWJfaGZ5dV9tZWRpYW5fcHJlZF9pbnQx
Nihjb25zdCBjaGFyICphbGlnbmVkLCB1bnNpZ25lZCB3aWR0aAogCiB2b2lkIGNoZWNrYXNtX2No
ZWNrX2h1ZmZ5dXZlbmNkc3Aodm9pZCkKIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgd2lkdGggPSAw
OwotCi0gICAgaWYgKCF3aWR0aCkgewotICAgICAgICB3aWR0aCA9IHJuZCgpICUgTUFYX1dJRFRI
OwotICAgICAgICB3aWR0aCA9IHdpZHRoID8gd2lkdGggOiAxOwotICAgIH0KLQogICAgIGNvbnN0
IHNpemVfdCBhbGlnbiA9IGF2X2NwdV9tYXhfYWxpZ24oKTsKKyAgICB1bnNpZ25lZCB3aWR0aCA9
IHNhdmVkX3dpZHRoOwogCiAgICAgY2hlY2tfc3ViX2hmeXVfbWVkaWFuX3ByZWRfaW50MTYoIl9h
bGlnbmVkIiwgRkZBTElHTih3aWR0aCwgYWxpZ24gLyBzaXplb2YodWludDE2X3QpKSk7CiAgICAg
cmVwb3J0KCJzdWJfaGZ5dV9tZWRpYW5fcHJlZF9pbnQxNl9hbGlnbmVkIik7Ci0tIAoyLjUyLjAK
CgpGcm9tIGM4NTgwMjIzMDgyMDc0Yjc1NDY0MDc1NjFlOGRiY2U2ZGI0MjcwMWYgTW9uIFNlcCAx
NyAwMDowMDowMCAyMDAxCkZyb206IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhh
cmR0QG91dGxvb2suY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDEzOjE2OjA1ICswMjAwClN1
YmplY3Q6IFtQQVRDSCA2LzldIHRlc3RzL2NoZWNrYXNtL2xsdmlkZHNwOiBTZXQgd2lkdGggaW4g
aW5pdAoKSXQgbWVhbnMgdGhhdCBvbmUgbm93IHRlc3RzIG11bHRpcGxlIHdpZHRoIHZhbHVlcyB3
aGVuIHVzaW5nCi0tcmVwZWF0LgoKU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxh
bmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogdGVzdHMvY2hlY2thc20vY2hlY2th
c20uYyB8ICAyICstCiB0ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oIHwgIDEgKwogdGVzdHMvY2hl
Y2thc20vbGx2aWRkc3AuYyB8IDExICsrKysrKystLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDkgaW5z
ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9j
aGVja2FzbS5jIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uYwppbmRleCA5YTE1NmIzYzIzLi5m
NTBhMmM4MzcwIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCisrKyBiL3Rl
c3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgY29uc3Qg
Q2hlY2thc21UZXN0IHRlc3RzW10gPSB7CiAgICAgICAgIHsgImxsYXVkZHNwIiwgY2hlY2thc21f
Y2hlY2tfbGxhdWRkc3AgfSwKICAgICAjZW5kaWYKICAgICAjaWYgQ09ORklHX0hVRkZZVVZEU1AK
LSAgICAgICAgeyAibGx2aWRkc3AiLCBjaGVja2FzbV9jaGVja19sbHZpZGRzcCB9LAorICAgICAg
ICB7ICJsbHZpZGRzcCIsIGNoZWNrYXNtX2NoZWNrX2xsdmlkZHNwLCAuaW5pdCA9IGNoZWNrYXNt
X2luaXRfbGx2aWRkc3AgfSwKICAgICAjZW5kaWYKICAgICAjaWYgQ09ORklHX0xMVklERU5DRFNQ
CiAgICAgICAgIHsgImxsdmlkZW5jZHNwIiwgY2hlY2thc21fY2hlY2tfbGx2aWRlbmNkc3AgfSwK
ZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmggYi90ZXN0cy9jaGVja2FzbS9j
aGVja2FzbS5oCmluZGV4IDM1MGFhNWNiYzkuLjRiZTYxMWYxMzYgMTAwNjQ0Ci0tLSBhL3Rlc3Rz
L2NoZWNrYXNtL2NoZWNrYXNtLmgKKysrIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaApAQCAt
MTM1LDYgKzEzNSw3IEBAIHZvaWQgY2hlY2thc21fY2hlY2tfdnZjX3Nhbyh2b2lkKTsKIAogdm9p
ZCBjaGVja2FzbV9pbml0X2NyYyh2b2lkKTsKIHZvaWQgY2hlY2thc21faW5pdF9odWZmeXV2ZW5j
ZHNwKHZvaWQpOwordm9pZCBjaGVja2FzbV9pbml0X2xsdmlkZHNwKHZvaWQpOwogdm9pZCBjaGVj
a2FzbV9pbml0X3NiYyh2b2lkKTsKIAogdm9pZCBjaGVja2FzbV91bmluaXRfY3JjKHZvaWQpOwpk
aWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vbGx2aWRkc3AuYyBiL3Rlc3RzL2NoZWNrYXNtL2xs
dmlkZHNwLmMKaW5kZXggMTA5NDYzODIyOS4uMTlmNzNlNGVlOSAxMDA2NDQKLS0tIGEvdGVzdHMv
Y2hlY2thc20vbGx2aWRkc3AuYworKysgYi90ZXN0cy9jaGVja2FzbS9sbHZpZGRzcC5jCkBAIC00
Miw2ICs0MiwxMyBAQAogICAgIHJhbmRvbWl6ZV9idWZmZXJzKGEwLCB3aWR0aCAqIHNpemVvZih0
eXBlKSk7XAogICAgIG1lbWNweShhMSwgYTAsIHdpZHRoKnNpemVvZih0eXBlKSk7XAogCitzdGF0
aWMgaW50IHNhdmVkX3dpZHRoOworCit2b2lkIGNoZWNrYXNtX2luaXRfbGx2aWRkc3AoKQorewor
ICAgIHNhdmVkX3dpZHRoID0gMTYgKiBhdl9jbGlwKHJuZCgpLCAxNiwgMTI4KTsKK30KKwogc3Rh
dGljIHZvaWQgY2hlY2tfYWRkX2J5dGVzKExMVmlkRFNQQ29udGV4dCAqYywgaW50IHdpZHRoKQog
ewogICAgIHVpbnQ4X3QgKmRzdDAgPSBhdl9tYWxsb2N6KHdpZHRoKTsKQEAgLTE4MywxMyArMTkw
LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfYWRkX2dyYWRpZW50X3ByZWQoTExWaWREU1BDb250ZXh0
ICpjLCBpbnQgdykgewogdm9pZCBjaGVja2FzbV9jaGVja19sbHZpZGRzcCh2b2lkKQogewogICAg
IExMVmlkRFNQQ29udGV4dCBjOwotICAgIHN0YXRpYyBpbnQgc2F2ZWRfd2lkdGggPSAwOwogICAg
IGludCB3aWR0aCA9IHNhdmVkX3dpZHRoOwogICAgIGludCBhY2NSbmQgPSBybmQoKSAmIDB4RkY7
CiAKLSAgICBpZiAoIXdpZHRoKQotICAgICAgICBzYXZlZF93aWR0aCA9IHdpZHRoID0gMTYgKiBh
dl9jbGlwKHJuZCgpLCAxNiwgMTI4KTsKLQogICAgIGZmX2xsdmlkZHNwX2luaXQoJmMpOwogCiAg
ICAgaWYgKGNoZWNrX2Z1bmMoYy5hZGRfYnl0ZXMsICJhZGRfYnl0ZXMiKSkKLS0gCjIuNTIuMAoK
CkZyb20gZGRhZTlmNGRlNDdjYjczY2M2YWNkMmMyMTk5NTlhYmQ2YmQ0YWI3MSBNb24gU2VwIDE3
IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFy
ZHRAb3V0bG9vay5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTM6MzM6MTUgKzAyMDAKU3Vi
amVjdDogW1BBVENIIDcvOV0gdGVzdHMvY2hlY2thc20vaHBlbGRzcDogU2V0IG5iIG9mIGxpbmVz
IHRvIHByb2Nlc3MgZHVyaW5nCiBpbml0CgpJdCBlbnN1cmVzIHRoYXQgaGVpZ2h0IGlzIG5vdCBj
b25zdGFudCAocGVyIHRlc3QpIHdoZW4gdXNpbmcKLS1yZXBlYXQuCgpTaWduZWQtb2ZmLWJ5OiBB
bmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiB0
ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jIHwgIDIgKy0KIHRlc3RzL2NoZWNrYXNtL2NoZWNrYXNt
LmggfCAgMSArCiB0ZXN0cy9jaGVja2FzbS9ocGVsZHNwLmMgIHwgNDIgKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMo
KyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNt
LmMgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCmluZGV4IGY1MGEyYzgzNzAuLjEwNzhmMTEx
NmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKKysrIGIvdGVzdHMvY2hl
Y2thc20vY2hlY2thc20uYwpAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBDaGVja2Fz
bVRlc3QgdGVzdHNbXSA9IHsKICAgICAgICAgeyAiaGV2Y19zYW8iLCBjaGVja2FzbV9jaGVja19o
ZXZjX3NhbyB9LAogICAgICNlbmRpZgogICAgICNpZiBDT05GSUdfSFBFTERTUAotICAgICAgICB7
ICJocGVsZHNwIiwgY2hlY2thc21fY2hlY2tfaHBlbGRzcCB9LAorICAgICAgICB7ICJocGVsZHNw
IiwgY2hlY2thc21fY2hlY2tfaHBlbGRzcCwgLmluaXQgPSBjaGVja2FzbV9pbml0X2hwZWxkc3Ag
fSwKICAgICAjZW5kaWYKICAgICAjaWYgQ09ORklHX0hVRkZZVVZEU1AKICAgICAgICAgeyAiaHVm
Znl1dmRzcCIsIGNoZWNrYXNtX2NoZWNrX2h1ZmZ5dXZkc3AgfSwKZGlmZiAtLWdpdCBhL3Rlc3Rz
L2NoZWNrYXNtL2NoZWNrYXNtLmggYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCmluZGV4IDRi
ZTYxMWYxMzYuLmEzMDQzMWEzNTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNt
LmgKKysrIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaApAQCAtMTM0LDYgKzEzNCw3IEBAIHZv
aWQgY2hlY2thc21fY2hlY2tfdnZjX21jKHZvaWQpOwogdm9pZCBjaGVja2FzbV9jaGVja192dmNf
c2FvKHZvaWQpOwogCiB2b2lkIGNoZWNrYXNtX2luaXRfY3JjKHZvaWQpOwordm9pZCBjaGVja2Fz
bV9pbml0X2hwZWxkc3Aodm9pZCk7CiB2b2lkIGNoZWNrYXNtX2luaXRfaHVmZnl1dmVuY2RzcCh2
b2lkKTsKIHZvaWQgY2hlY2thc21faW5pdF9sbHZpZGRzcCh2b2lkKTsKIHZvaWQgY2hlY2thc21f
aW5pdF9zYmModm9pZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9ocGVsZHNwLmMgYi90
ZXN0cy9jaGVja2FzbS9ocGVsZHNwLmMKaW5kZXggZmQ4NzUwOWRkYy4uZGU1NDViMTViMSAxMDA2
NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vaHBlbGRzcC5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL2hw
ZWxkc3AuYwpAQCAtNTAsNiArNTAsMzIgQEAKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKK3N0YXRp
YyBjb25zdCBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgc2l6ZV90IG9mZnNl
dDsKKyAgICB1bnNpZ25lZCBuYl9ibG9ja3NpemVzOworfSB0ZXN0c1tdID0geworI2RlZmluZSBU
RVNUKE5BTUUsIE5CKSB7IC5uYW1lID0gI05BTUUsIC5vZmZzZXQgPSBvZmZzZXRvZihIcGVsRFNQ
Q29udGV4dCwgTkFNRSksIC5uYl9ibG9ja3NpemVzID0gTkIgfQorICAgIFRFU1QocHV0X3BpeGVs
c190YWIsIDQpLAorICAgIFRFU1QoYXZnX3BpeGVsc190YWIsIDQpLAorICAgIFRFU1QocHV0X25v
X3JuZF9waXhlbHNfdGFiLCAyKSwgLy8gcHV0X25vX3JuZF9waXhlbHNfdGFiIG9ubHkgaGFzIHR3
byB1c2FibGUgYmxvY2tzaXplcworICAgIFRFU1QoYXZnX25vX3JuZF9waXhlbHNfdGFiLCAxKSwK
K307CisKK3N0YXRpYyBpbnQgc2F2ZWRfaGVpZ2h0c1tGRl9BUlJBWV9FTEVNUyh0ZXN0cyldWzRd
WzRdOworCit2b2lkIGNoZWNrYXNtX2luaXRfaHBlbGRzcCh2b2lkKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoc2F2ZWRfaGVpZ2h0cyk7ICsraSkKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHRlc3RzW2ldLm5iX2Jsb2Nrc2l6ZXM7ICsraikg
eworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgYmxvY2tzaXplID0gTUFYX0JMT0NLX1NJWkUg
Pj4gajsKKyAgICAgICAgICAgIC8vIGggbXVzdCBhbHdheXMgYmUgYSBtdWx0aXBsZSBvZiBmb3Vy
LCBleGNlcHQgd2hlbiB3aWR0aCBpcyB0d28gb3IgZm91ci4KKyAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGhfbXVsdCA9IGJsb2Nrc2l6ZSA8PSA0ID8gMiA6IDQ7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgZHh5ID0gMDsgZHh5IDwgNDsgKytkeHkpCisgICAgICAgICAgICAgICAgc2F2
ZWRfaGVpZ2h0c1tpXVtqXVtkeHldID0gKHJuZCgpICUgKE1BWF9IRUlHSFQgLyBoX211bHQpICsg
MSkgKiBoX211bHQ7CisgICAgICAgIH0KK30KIAogdm9pZCBjaGVja2FzbV9jaGVja19ocGVsZHNw
KHZvaWQpCiB7CkBAIC01OCwxNyArODQsNiBAQCB2b2lkIGNoZWNrYXNtX2NoZWNrX2hwZWxkc3Ao
dm9pZCkKICAgICBERUNMQVJFX0FMSUdORUQoTUFYX0JMT0NLX1NJWkUsIHVpbnQ4X3QsIGRzdGJ1
ZjApW0JVRl9TSVpFXTsKICAgICBERUNMQVJFX0FMSUdORUQoTUFYX0JMT0NLX1NJWkUsIHVpbnQ4
X3QsIGRzdGJ1ZjEpW0JVRl9TSVpFXTsKICAgICBIcGVsRFNQQ29udGV4dCBoZHNwOwotICAgIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgewotICAgICAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICAgICBz
aXplX3Qgb2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBuYl9ibG9ja3NpemVzOwotICAgIH0gdGVz
dHNbXSA9IHsKLSNkZWZpbmUgVEVTVChOQU1FLCBOQikgeyAubmFtZSA9ICNOQU1FLCAub2Zmc2V0
ID0gb2Zmc2V0b2YoSHBlbERTUENvbnRleHQsIE5BTUUpLCAubmJfYmxvY2tzaXplcyA9IE5CIH0K
LSAgICAgICAgVEVTVChwdXRfcGl4ZWxzX3RhYiwgNCksCi0gICAgICAgIFRFU1QoYXZnX3BpeGVs
c190YWIsIDQpLAotICAgICAgICBURVNUKHB1dF9ub19ybmRfcGl4ZWxzX3RhYiwgMiksIC8vIHB1
dF9ub19ybmRfcGl4ZWxzX3RhYiBvbmx5IGhhcyB0d28gdXNhYmxlIGJsb2Nrc2l6ZXMKLSAgICAg
ICAgVEVTVChhdmdfbm9fcm5kX3BpeGVsc190YWIsIDEpLAotICAgIH07CiAgICAgZGVjbGFyZV9m
dW5jKHZvaWQsIHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3Ry
aWRlLCBpbnQgaCk7CiAKICAgICBmZl9ocGVsZHNwX2luaXQoJmhkc3AsIEFWX0NPREVDX0ZMQUdf
QklURVhBQ1QpOwpAQCAtNzcsOCArOTIsNiBAQCB2b2lkIGNoZWNrYXNtX2NoZWNrX2hwZWxkc3Ao
dm9pZCkKICAgICAgICAgb3BfcGl4ZWxzX2Z1bmMgKCpmdW5jX3RhYilbNF0gPSAob3BfcGl4ZWxz
X2Z1bmMgKCopWzRdKSgoY2hhciopJmhkc3AgKyB0ZXN0c1tpXS5vZmZzZXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgdGVzdHNbaV0ubmJfYmxvY2tzaXplczsgKytqKSB7CiAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBibG9ja3NpemUgPSBNQVhfQkxPQ0tfU0laRSA+PiBq
OwotICAgICAgICAgICAgLy8gaCBtdXN0IGFsd2F5cyBiZSBhIG11bHRpcGxlIG9mIGZvdXIsIGV4
Y2VwdCB3aGVuIHdpZHRoIGlzIHR3byBvciBmb3VyLgotICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaF9tdWx0ID0gYmxvY2tzaXplIDw9IDQgPyAyIDogNDsKIAogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBkeHkgPSAwOyBkeHkgPCA0OyArK2R4eSkgewogICAgICAgICAgICAgICAgIGlmIChj
aGVja19mdW5jKGZ1bmNfdGFiW2pdW2R4eV0sICIlc1sldV1bJXVdIiwgdGVzdHNbaV0ubmFtZSwg
aiwgZHh5KSkgewpAQCAtOTEsMTAgKzEwNCw3IEBAIHZvaWQgY2hlY2thc21fY2hlY2tfaHBlbGRz
cCh2b2lkKQogCiAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgdGhlIHNhbWUgaGVp
Z2h0IGZvciBlYWNoIHRlc3QsIHNvIHRoYXQgY29tcGFyaXNvbnMgb2YgYmVuY2htYXJrcwogICAg
ICAgICAgICAgICAgICAgICAvLyBmcm9tIGRpZmZlcmVudCBpbnN0cnVjdGlvbiBzZXRzIGFyZSBt
ZWFuaW5nZnVsLgotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgaW50IHNhdmVkX2hlaWdodHNb
RkZfQVJSQVlfRUxFTVModGVzdHMpXVs0XVs0XTsKICAgICAgICAgICAgICAgICAgICAgaW50IGgg
PSBzYXZlZF9oZWlnaHRzW2ldW2pdW2R4eV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkX2hlaWdodHNbaV1bal1bZHh5XSA9IGggPSAo
cm5kKCkgJSAoTUFYX0hFSUdIVCAvIGhfbXVsdCkgKyAxKSAqIGhfbXVsdDsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAocm5kKCkgJiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
bGlwIHN0cmlkZS4KLS0gCjIuNTIuMAoKCkZyb20gZDY1YjVlYmFjODE4OWM4MzllYTU1Y2E2Yzg3
M2RkOTUzMjg5YTg4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmVhcyBSaGVp
bmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+CkRhdGU6IFR1ZSwgMjggSnVs
IDIwMjYgMTY6MTU6MDAgKzAyMDAKU3ViamVjdDogW1BBVENIIDgvOV0gdGVzdHMvY2hlY2thc20v
Y2hlY2thc206IFJlbW92ZSBpbmFwcHJvcHJpYXRlIGhlYWRlcnMKClNpbmNlIHRoZSBzd2l0Y2gg
dG8gbGliY2hlY2thc20sIGNoZWNrYXNtIG5vIGxvbmdlciB1c2VzCkZGbXBlZydzIGVtbXNfYywg
dGltZXJzLCBBVkxGRyBvciBzdHJpbmcgaGFuZGxpbmcgZnVuY3Rpb25zLApzbyByZW1vdmUgdGhl
c2UgaGVhZGVycy4KVGhpcyBuZWNlc3NpdGF0ZWQgYWRkaW5nIHNvbWUgbWlzc2luZyBoZWFkZXJz
IChtb3N0bHkgc3RyaW5nLmgpCnRvIHNvbWUgZmlsZXMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZWFz
IFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiB0ZXN0cy9j
aGVja2FzbS9hYWNwc2RzcC5jICAgICAgfCAyICsrCiB0ZXN0cy9jaGVja2FzbS9hZXMuYyAgICAg
ICAgICAgfCAyICsrCiB0ZXN0cy9jaGVja2FzbS9hZl9hZmlyLmMgICAgICAgfCAyICsrCiB0ZXN0
cy9jaGVja2FzbS9hcHZfZHNwLmMgICAgICAgfCAyICstCiB0ZXN0cy9jaGVja2FzbS9jYXZzZHNw
LmMgICAgICAgfCAxICsKIHRlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmggICAgICB8IDUgLS0tLS0K
IHRlc3RzL2NoZWNrYXNtL2NyYy5jICAgICAgICAgICB8IDEgKwogdGVzdHMvY2hlY2thc20vZGly
YWNkc3AuYyAgICAgIHwgMiArKwogdGVzdHMvY2hlY2thc20vZmxvYXRfZHNwLmMgICAgIHwgMSAr
CiB0ZXN0cy9jaGVja2FzbS9sbHMuYyAgICAgICAgICAgfCAzICsrKwogdGVzdHMvY2hlY2thc20v
bXBlZzR2aWRlb2RzcC5jIHwgMSArCiB0ZXN0cy9jaGVja2FzbS9vcHVzZHNwLmMgICAgICAgfCAy
ICsrCiB0ZXN0cy9jaGVja2FzbS9wbmcuYyAgICAgICAgICAgfCAxICsKIHRlc3RzL2NoZWNrYXNt
L3FwZWxkc3AuYyAgICAgICB8IDEgKwogdGVzdHMvY2hlY2thc20vc2JjZHNwLmMgICAgICAgIHwg
MSArCiB0ZXN0cy9jaGVja2FzbS9zYnJkc3AuYyAgICAgICAgfCAyICsrCiB0ZXN0cy9jaGVja2Fz
bS92Zl9ubG1lYW5zLmMgICAgfCAyICsrCiB0ZXN0cy9jaGVja2FzbS92Zl9wcDcuYyAgICAgICAg
fCAxICsKIHRlc3RzL2NoZWNrYXNtL3ZvcmJpc2RzcC5jICAgICB8IDIgKysKIDE5IGZpbGVzIGNo
YW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVz
dHMvY2hlY2thc20vYWFjcHNkc3AuYyBiL3Rlc3RzL2NoZWNrYXNtL2FhY3BzZHNwLmMKaW5kZXgg
MzU5YjFlOWEwMC4uNzM4OGVkMDNlZiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vYWFjcHNk
c3AuYworKysgYi90ZXN0cy9jaGVja2FzbS9hYWNwc2RzcC5jCkBAIC0xNiw2ICsxNiw4IEBACiAg
KiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg
VVNBLgogICovCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogI2luY2x1ZGUgImxpYmF2Y29kZWMv
YWFjcHNkc3AuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZmxvYXQuaCIKICNpbmNsdWRlICJs
aWJhdnV0aWwvbWVtX2ludGVybmFsLmgiCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9hZXMu
YyBiL3Rlc3RzL2NoZWNrYXNtL2Flcy5jCmluZGV4IDRiYmZjNTc1MGIuLmIwMzkxYWIxY2IgMTAw
NjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2Flcy5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL2Flcy5j
CkBAIC0xOCw2ICsxOCw4IEBACiAgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogICovCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwog
I2luY2x1ZGUgImNoZWNrYXNtLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL2Flcy5oIgogI2luY2x1
ZGUgImxpYmF2dXRpbC9hZXNfaW50ZXJuYWwuaCIKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNt
L2FmX2FmaXIuYyBiL3Rlc3RzL2NoZWNrYXNtL2FmX2FmaXIuYwppbmRleCBkYmExNTMxNDczLi5m
MzBkMjJmMjY2IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9hZl9hZmlyLmMKKysrIGIvdGVz
dHMvY2hlY2thc20vYWZfYWZpci5jCkBAIC0yMCw2ICsyMCw4IEBACiAKICNpbmNsdWRlIDxmbG9h
dC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
c3RyaW5nLmg+CiAKICNpbmNsdWRlICJsaWJhdmZpbHRlci9hZl9hZmlyZHNwLmgiCiAjaW5jbHVk
ZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9hcHZf
ZHNwLmMgYi90ZXN0cy9jaGVja2FzbS9hcHZfZHNwLmMKaW5kZXggNjhjMGYwMzEzYy4uMTQ5YzQ2
Mzc2MyAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vYXB2X2RzcC5jCisrKyBiL3Rlc3RzL2No
ZWNrYXNtL2Fwdl9kc3AuYwpAQCAtMTcsMTAgKzE3LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgPHN0
ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAiY2hlY2thc20uaCIKIAot
I2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21l
bV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvYXB2X2RzcC5oIgogCmRpZmYgLS1n
aXQgYS90ZXN0cy9jaGVja2FzbS9jYXZzZHNwLmMgYi90ZXN0cy9jaGVja2FzbS9jYXZzZHNwLmMK
aW5kZXggYWI2YjY5NWFlNC4uNDdjMjUxMDY4NyAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20v
Y2F2c2RzcC5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL2NhdnNkc3AuYwpAQCAtMTgsNiArMTgsNyBA
QAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8
c3RyaW5nLmg+CiAKICNpbmNsdWRlICJjaGVja2FzbS5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9p
bnRyZWFkd3JpdGUuaCIKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmggYi90
ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCmluZGV4IGEzMDQzMWEzNTEuLjQ5MzgwYzE4OTggMTAw
NjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmgKKysrIGIvdGVzdHMvY2hlY2thc20v
Y2hlY2thc20uaApAQCAtMjcsMTMgKzI3LDggQEAKICNpbmNsdWRlIDxjaGVja2FzbS90ZXN0Lmg+
CiAjaW5jbHVkZSA8Y2hlY2thc20vdXRpbHMuaD4KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIK
LSNpbmNsdWRlICJsaWJhdnV0aWwvZW1tcy5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5h
bC5oIgotI2luY2x1ZGUgImxpYmF2dXRpbC9sZmcuaCIKLSNpbmNsdWRlICJsaWJhdnV0aWwvdGlt
ZXIuaCIKIAogdm9pZCBjaGVja2FzbV9jaGVja19hYWNlbmNkc3Aodm9pZCk7CiB2b2lkIGNoZWNr
YXNtX2NoZWNrX2FhY3BzZHNwKHZvaWQpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vY3Jj
LmMgYi90ZXN0cy9jaGVja2FzbS9jcmMuYwppbmRleCAwNzBmOGFhNmQ0Li4xMzM4ODMwYzhjIDEw
MDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9jcmMuYworKysgYi90ZXN0cy9jaGVja2FzbS9jcmMu
YwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImxpYmF2dXRpbC9jcmMuaCIKICNpbmNsdWRl
ICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21hY3Jvcy5o
IgorI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtX2lu
dGVybmFsLmgiCiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vZGlyYWNkc3Au
YyBiL3Rlc3RzL2NoZWNrYXNtL2RpcmFjZHNwLmMKaW5kZXggYWEwOWM0M2RkZi4uNDdlYWVmYzkw
YiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vZGlyYWNkc3AuYworKysgYi90ZXN0cy9jaGVj
a2FzbS9kaXJhY2RzcC5jCkBAIC0xOCw2ICsxOCw4IEBACiAgKiA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogICovCiAKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KKwogI2luY2x1ZGUgImNoZWNrYXNtLmgiCiAKICNpbmNsdWRlICJsaWJhdmNv
ZGVjL2RpcmFjZHNwLmgiCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9mbG9hdF9kc3AuYyBi
L3Rlc3RzL2NoZWNrYXNtL2Zsb2F0X2RzcC5jCmluZGV4IGMyODM0M2U0YTguLjk1ZmVlNTc5NDEg
MTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2Zsb2F0X2RzcC5jCisrKyBiL3Rlc3RzL2NoZWNr
YXNtL2Zsb2F0X2RzcC5jCkBAIC0xOCw2ICsxOCw3IEBACiAKICNpbmNsdWRlIDxmbG9hdC5oPgog
I2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAibGli
YXZ1dGlsL2Zsb2F0X2RzcC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgpkaWZm
IC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vbGxzLmMgYi90ZXN0cy9jaGVja2FzbS9sbHMuYwppbmRl
eCA4Yjg3NmIxYmI5Li4wNjcwOTQxNDAzIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9sbHMu
YworKysgYi90ZXN0cy9jaGVja2FzbS9sbHMuYwpAQCAtMTcsNiArMTcsOSBAQAogICovCiAKICNp
bmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKICNpbmNsdWRlICJsaWJhdnV0aWwvbGxzLmgiCiAjaW5jbHVkZSAiY2hlY2thc20uaCIKIApk
aWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vbXBlZzR2aWRlb2RzcC5jIGIvdGVzdHMvY2hlY2th
c20vbXBlZzR2aWRlb2RzcC5jCmluZGV4IDdjN2U4MmM0YjAuLjQ5NTU3MjI0ZjUgMTAwNjQ0Ci0t
LSBhL3Rlc3RzL2NoZWNrYXNtL21wZWc0dmlkZW9kc3AuYworKysgYi90ZXN0cy9jaGVja2FzbS9t
cGVnNHZpZGVvZHNwLmMKQEAgLTE3LDYgKzE3LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8YXNzZXJ0
Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJjaGVja2FzbS5oIgogI2luY2x1
ZGUgImxpYmF2Y29kZWMvbXBlZzR2aWRlb2RzcC5oIgpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2th
c20vb3B1c2RzcC5jIGIvdGVzdHMvY2hlY2thc20vb3B1c2RzcC5jCmluZGV4IDg4NTExZjZlMTMu
Ljk4MzEzZGEyZWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL29wdXNkc3AuYworKysgYi90
ZXN0cy9jaGVja2FzbS9vcHVzZHNwLmMKQEAgLTE2LDYgKzE2LDggQEAKICAqIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAgKi8KIAor
I2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5o
IgogCiAjaW5jbHVkZSAibGliYXZjb2RlYy9vcHVzL2RzcC5oIgpkaWZmIC0tZ2l0IGEvdGVzdHMv
Y2hlY2thc20vcG5nLmMgYi90ZXN0cy9jaGVja2FzbS9wbmcuYwppbmRleCA5ODg4OGI5OWRiLi43
MjdhOWIwMzBjIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9wbmcuYworKysgYi90ZXN0cy9j
aGVja2FzbS9wbmcuYwpAQCAtMTgsNiArMTgsNyBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQog
ICovCiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgImxpYmF2dXRpbC9tZW1faW50
ZXJuYWwuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL3BuZ2RzcC5oIgpkaWZmIC0tZ2l0IGEvdGVz
dHMvY2hlY2thc20vcXBlbGRzcC5jIGIvdGVzdHMvY2hlY2thc20vcXBlbGRzcC5jCmluZGV4IDFm
MThiNGZmZGEuLjJkYjcyMGMxMzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL3FwZWxkc3Au
YworKysgYi90ZXN0cy9jaGVja2FzbS9xcGVsZHNwLmMKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2lu
Y2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgogCiAjaW5jbHVkZSAiY2hlY2thc20uaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdy
aXRlLmgiCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9zYmNkc3AuYyBiL3Rlc3RzL2NoZWNr
YXNtL3NiY2RzcC5jCmluZGV4IGI3NzI2MDViMTYuLjBlMTJmYzQ5N2YgMTAwNjQ0Ci0tLSBhL3Rl
c3RzL2NoZWNrYXNtL3NiY2RzcC5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL3NiY2RzcC5jCkBAIC0x
OCw2ICsxOCw3IEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4K
KyNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgImNoZWNrYXNtLmgiCiAjaW5jbHVkZSAi
bGliYXZjb2RlYy9zYmNkc3AuaCIKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL3NicmRzcC5j
IGIvdGVzdHMvY2hlY2thc20vc2JyZHNwLmMKaW5kZXggZDZjMTA4NTNhZi4uZWVlMDhhNDYyZiAx
MDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vc2JyZHNwLmMKKysrIGIvdGVzdHMvY2hlY2thc20v
c2JyZHNwLmMKQEAgLTE2LDYgKzE2LDggQEAKICAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAgKi8KIAorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5oIgogCiAjaW5jbHVkZSAi
bGliYXZjb2RlYy9zYnJkc3AuaCIKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL3ZmX25sbWVh
bnMuYyBiL3Rlc3RzL2NoZWNrYXNtL3ZmX25sbWVhbnMuYwppbmRleCAyNmJkMmQ1ODkwLi42YWI1
MDYwN2Y3IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS92Zl9ubG1lYW5zLmMKKysrIGIvdGVz
dHMvY2hlY2thc20vdmZfbmxtZWFucy5jCkBAIC0xOSw2ICsxOSw4IEBACiAgKi8KIAogI2luY2x1
ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogI2luY2x1ZGUgImNoZWNrYXNtLmgi
CiAjaW5jbHVkZSAibGliYXZmaWx0ZXIvdmZfbmxtZWFuc19pbml0LmgiCiAjaW5jbHVkZSAibGli
YXZ1dGlsL2F2YXNzZXJ0LmgiCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS92Zl9wcDcuYyBi
L3Rlc3RzL2NoZWNrYXNtL3ZmX3BwNy5jCmluZGV4IGU1MDZlZWIxNmMuLjNmMWZhOWE3NWYgMTAw
NjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL3ZmX3BwNy5jCisrKyBiL3Rlc3RzL2NoZWNrYXNtL3Zm
X3BwNy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8
c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNp
bmNsdWRlICJjaGVja2FzbS5oIgogI2luY2x1ZGUgImxpYmF2ZmlsdGVyL3ZmX3BwN2RzcC5oIgpk
aWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vdm9yYmlzZHNwLmMgYi90ZXN0cy9jaGVja2FzbS92
b3JiaXNkc3AuYwppbmRleCBiNGQ2MGNjNDQ2Li5lOTdmZjk2ZTBjIDEwMDY0NAotLS0gYS90ZXN0
cy9jaGVja2FzbS92b3JiaXNkc3AuYworKysgYi90ZXN0cy9jaGVja2FzbS92b3JiaXNkc3AuYwpA
QCAtMTcsNiArMTcsOCBAQAogICovCiAKICNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtX2lu
dGVybmFsLmgiCiAKLS0gCjIuNTIuMAoKCkZyb20gNjY2ZjRhZDJkYTcyZWU4ZTgzODg1N2IzOGNk
OGE2NWYyNzE3NDg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmVhcyBSaGVp
bmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+CkRhdGU6IFR1ZSwgMjggSnVs
IDIwMjYgMTY6MzM6MzQgKzAyMDAKU3ViamVjdDogW1BBVENIIDkvOV0gdGVzdHMvY2hlY2thc20v
bXBlZ3ZpZGVvX3VucXVhbnRpemU6IFNldCBwYXJhbWV0ZXJzIGluCiBpbml0IGNiCgpJdCBtZWFu
cyB0aGF0IHRoZXNlIHBhcmFtZXRlcnMgY2hhbmdlIHJhbmRvbWx5IGZvciBlYWNoIHJ1bgp3aGVu
IHVzaW5nIC0tcmVwZWF0LgoKU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRy
ZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogdGVzdHMvY2hlY2thc20vY2hlY2thc20u
YyAgICAgICAgICAgICB8ICAgMyArLQogdGVzdHMvY2hlY2thc20vY2hlY2thc20uaCAgICAgICAg
ICAgICB8ICAgMSArCiB0ZXN0cy9jaGVja2FzbS9tcGVndmlkZW9fdW5xdWFudGl6ZS5jIHwgMTM5
ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlv
bnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNr
YXNtLmMgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCmluZGV4IDEwNzhmMTExNmQuLjQ5ODYz
MGFmNmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKKysrIGIvdGVzdHMv
Y2hlY2thc20vY2hlY2thc20uYwpAQCAtMTY3LDcgKzE2Nyw4IEBAIHN0YXRpYyBjb25zdCBDaGVj
a2FzbVRlc3QgdGVzdHNbXSA9IHsKICAgICAgICAgeyAibXBlZzR2aWRlb2RzcCIsIGNoZWNrYXNt
X2NoZWNrX21wZWc0dmlkZW9kc3AgfSwKICAgICAjZW5kaWYKICAgICAjaWYgQ09ORklHX01QRUdW
SURFTwotICAgICAgICB7ICJtcGVndmlkZW9fdW5xdWFudGl6ZSIsIGNoZWNrYXNtX2NoZWNrX21w
ZWd2aWRlb191bnF1YW50aXplIH0sCisgICAgICAgIHsgIm1wZWd2aWRlb191bnF1YW50aXplIiwg
Y2hlY2thc21fY2hlY2tfbXBlZ3ZpZGVvX3VucXVhbnRpemUsCisgICAgICAgICAgLmluaXQgPSBj
aGVja2FzbV9pbml0X21wZWd2aWRlb191bnF1YW50aXplIH0sCiAgICAgI2VuZGlmCiAgICAgI2lm
IENPTkZJR19NUEVHVklERU9FTkNEU1AKICAgICAgICAgeyAibXBlZ3ZpZGVvZW5jZHNwIiwgY2hl
Y2thc21fY2hlY2tfbXBlZ3ZpZGVvZW5jZHNwIH0sCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2Fz
bS9jaGVja2FzbS5oIGIvdGVzdHMvY2hlY2thc20vY2hlY2thc20uaAppbmRleCA0OTM4MGMxODk4
Li5iOGU3MzE4OWFmIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCisrKyBi
L3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmgKQEAgLTEzMiw2ICsxMzIsNyBAQCB2b2lkIGNoZWNr
YXNtX2luaXRfY3JjKHZvaWQpOwogdm9pZCBjaGVja2FzbV9pbml0X2hwZWxkc3Aodm9pZCk7CiB2
b2lkIGNoZWNrYXNtX2luaXRfaHVmZnl1dmVuY2RzcCh2b2lkKTsKIHZvaWQgY2hlY2thc21faW5p
dF9sbHZpZGRzcCh2b2lkKTsKK3ZvaWQgY2hlY2thc21faW5pdF9tcGVndmlkZW9fdW5xdWFudGl6
ZSh2b2lkKTsKIHZvaWQgY2hlY2thc21faW5pdF9zYmModm9pZCk7CiAKIHZvaWQgY2hlY2thc21f
dW5pbml0X2NyYyh2b2lkKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL21wZWd2aWRlb191
bnF1YW50aXplLmMgYi90ZXN0cy9jaGVja2FzbS9tcGVndmlkZW9fdW5xdWFudGl6ZS5jCmluZGV4
IDlkZTBiYjQyODQuLjg1Mjk3MjExNmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrYXNtL21wZWd2
aWRlb191bnF1YW50aXplLmMKKysrIGIvdGVzdHMvY2hlY2thc20vbXBlZ3ZpZGVvX3VucXVhbnRp
emUuYwpAQCAtNDgsNzYgKzQ4LDg2IEBAIGVudW0gVGVzdFR5cGUgewogICAgIE1QRUcyLAogfTsK
IAotc3RhdGljIHZvaWQgaW5pdF9pZGN0X3NjYW50YWJsZShNUFZDb250ZXh0ICpjb25zdCBzLCBp
bnQgaW50cmFfc2NhbnRhYmxlKQotewotICAgIHN0YXRpYyBjb25zdCBlbnVtIGlkY3RfcGVybXV0
YXRpb25fdHlwZSBwZXJtdXRhdGlvbl90eXBlc1tdID0gewotICAgICAgICBGRl9JRENUX1BFUk1f
Tk9ORSwKLSAgICAgICAgRkZfSURDVF9QRVJNX0xJQk1QRUcyLAorc3RhdGljIGNvbnN0IGVudW0g
aWRjdF9wZXJtdXRhdGlvbl90eXBlIHBlcm11dGF0aW9uX3R5cGVzW10gPSB7CisgICAgRkZfSURD
VF9QRVJNX05PTkUsCisgICAgRkZfSURDVF9QRVJNX0xJQk1QRUcyLAogI2lmIEFSQ0hfWDg2XzMy
ICYmIEhBVkVfWDg2QVNNCi0gICAgICAgIEZGX0lEQ1RfUEVSTV9TSU1QTEUsCisgICAgRkZfSURD
VF9QRVJNX1NJTVBMRSwKICNlbmRpZgogI2lmIEFSQ0hfUFBDIHx8IEFSQ0hfWDg2Ci0gICAgICAg
IEZGX0lEQ1RfUEVSTV9UUkFOU1BPU0UsCisgICAgRkZfSURDVF9QRVJNX1RSQU5TUE9TRSwKICNl
bmRpZgogI2lmIEFSQ0hfQVJNIHx8IEFSQ0hfQUFSQ0g2NAotICAgICAgICBGRl9JRENUX1BFUk1f
UEFSVFRSQU5TLAorICAgIEZGX0lEQ1RfUEVSTV9QQVJUVFJBTlMsCiAjZW5kaWYKICNpZiBBUkNI
X1g4NiAmJiBIQVZFX1g4NkFTTQotICAgICAgICBGRl9JRENUX1BFUk1fU1NFMiwKKyAgICBGRl9J
RENUX1BFUk1fU1NFMiwKICNlbmRpZgotICAgIH07Ci0gICAgLy8gQ29waWVkIGhlcmUgdG8gYXZv
aWQgI2lmcy4KLSAgICBzdGF0aWMgY29uc3QgdWludDhfdCBmZl93bXYxX3NjYW50YWJsZVtdWzY0
XSA9IHsKLSAgICB7IDB4MDAsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDksIDB4MTAsIDB4MTgsIDB4
MTEsCi0gICAgICAweDBBLCAweDAzLCAweDA0LCAweDBCLCAweDEyLCAweDE5LCAweDIwLCAweDI4
LAotICAgICAgMHgzMCwgMHgzOCwgMHgyOSwgMHgyMSwgMHgxQSwgMHgxMywgMHgwQywgMHgwNSwK
LSAgICAgIDB4MDYsIDB4MEQsIDB4MTQsIDB4MUIsIDB4MjIsIDB4MzEsIDB4MzksIDB4M0EsCi0g
ICAgICAweDMyLCAweDJBLCAweDIzLCAweDFDLCAweDE1LCAweDBFLCAweDA3LCAweDBGLAotICAg
ICAgMHgxNiwgMHgxRCwgMHgyNCwgMHgyQiwgMHgzMywgMHgzQiwgMHgzQywgMHgzNCwKLSAgICAg
IDB4MkMsIDB4MjUsIDB4MUUsIDB4MTcsIDB4MUYsIDB4MjYsIDB4MkQsIDB4MzUsCi0gICAgICAw
eDNELCAweDNFLCAweDM2LCAweDJFLCAweDI3LCAweDJGLCAweDM3LCAweDNGLCB9LAotICAgIHsg
MHgwMCwgMHgwOCwgMHgwMSwgMHgwMiwgMHgwOSwgMHgxMCwgMHgxOCwgMHgxMSwKLSAgICAgIDB4
MEEsIDB4MDMsIDB4MDQsIDB4MEIsIDB4MTIsIDB4MTksIDB4MjAsIDB4MjgsCi0gICAgICAweDIx
LCAweDMwLCAweDFBLCAweDEzLCAweDBDLCAweDA1LCAweDA2LCAweDBELAotICAgICAgMHgxNCwg
MHgxQiwgMHgyMiwgMHgyOSwgMHgzOCwgMHgzMSwgMHgzOSwgMHgyQSwKLSAgICAgIDB4MjMsIDB4
MUMsIDB4MTUsIDB4MEUsIDB4MDcsIDB4MEYsIDB4MTYsIDB4MUQsCi0gICAgICAweDI0LCAweDJC
LCAweDMyLCAweDNBLCAweDMzLCAweDNCLCAweDJDLCAweDI1LAotICAgICAgMHgxRSwgMHgxNywg
MHgxRiwgMHgyNiwgMHgyRCwgMHgzNCwgMHgzQywgMHgzNSwKLSAgICAgIDB4M0QsIDB4MkUsIDB4
MjcsIDB4MkYsIDB4MzYsIDB4M0UsIDB4MzcsIDB4M0YsIH0sCi0gICAgeyAweDAwLCAweDAxLCAw
eDA4LCAweDAyLCAweDAzLCAweDA5LCAweDEwLCAweDE4LAotICAgICAgMHgxMSwgMHgwQSwgMHgw
NCwgMHgwNSwgMHgwQiwgMHgxMiwgMHgxOSwgMHgyMCwKLSAgICAgIDB4MjgsIDB4MzAsIDB4MjEs
IDB4MUEsIDB4MTMsIDB4MEMsIDB4MDYsIDB4MDcsCi0gICAgICAweDBELCAweDE0LCAweDFCLCAw
eDIyLCAweDI5LCAweDM4LCAweDMxLCAweDM5LAotICAgICAgMHgyQSwgMHgyMywgMHgxQywgMHgx
NSwgMHgwRSwgMHgwRiwgMHgxNiwgMHgxRCwKLSAgICAgIDB4MjQsIDB4MkIsIDB4MzIsIDB4M0Es
IDB4MzMsIDB4MkMsIDB4MjUsIDB4MUUsCi0gICAgICAweDE3LCAweDFGLCAweDI2LCAweDJELCAw
eDM0LCAweDNCLCAweDNDLCAweDM1LAotICAgICAgMHgyRSwgMHgyNywgMHgyRiwgMHgzNiwgMHgz
RCwgMHgzRSwgMHgzNywgMHgzRiwgfSwKLSAgICB7IDB4MDAsIDB4MDgsIDB4MTAsIDB4MDEsIDB4
MTgsIDB4MjAsIDB4MjgsIDB4MDksCi0gICAgICAweDAyLCAweDAzLCAweDBBLCAweDExLCAweDE5
LCAweDMwLCAweDM4LCAweDI5LAotICAgICAgMHgyMSwgMHgxQSwgMHgxMiwgMHgwQiwgMHgwNCwg
MHgwNSwgMHgwQywgMHgxMywKLSAgICAgIDB4MUIsIDB4MjIsIDB4MzEsIDB4MzksIDB4MzIsIDB4
MkEsIDB4MjMsIDB4MUMsCi0gICAgICAweDE0LCAweDBELCAweDA2LCAweDA3LCAweDBFLCAweDE1
LCAweDFELCAweDI0LAotICAgICAgMHgyQiwgMHgzMywgMHgzQSwgMHgzQiwgMHgzNCwgMHgyQywg
MHgyNSwgMHgxRSwKLSAgICAgIDB4MTYsIDB4MEYsIDB4MTcsIDB4MUYsIDB4MjYsIDB4MkQsIDB4
M0MsIDB4MzUsCi0gICAgICAweDJFLCAweDI3LCAweDJGLCAweDM2LCAweDNELCAweDNFLCAweDM3
LCAweDNGLCB9Ci0gICAgfTsKK307CisvLyBDb3BpZWQgaGVyZSB0byBhdm9pZCAjaWZzLgorc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgZmZfd212MV9zY2FudGFibGVbXVs2NF0gPSB7CisgIHsgMHgwMCwg
MHgwOCwgMHgwMSwgMHgwMiwgMHgwOSwgMHgxMCwgMHgxOCwgMHgxMSwKKyAgICAweDBBLCAweDAz
LCAweDA0LCAweDBCLCAweDEyLCAweDE5LCAweDIwLCAweDI4LAorICAgIDB4MzAsIDB4MzgsIDB4
MjksIDB4MjEsIDB4MUEsIDB4MTMsIDB4MEMsIDB4MDUsCisgICAgMHgwNiwgMHgwRCwgMHgxNCwg
MHgxQiwgMHgyMiwgMHgzMSwgMHgzOSwgMHgzQSwKKyAgICAweDMyLCAweDJBLCAweDIzLCAweDFD
LCAweDE1LCAweDBFLCAweDA3LCAweDBGLAorICAgIDB4MTYsIDB4MUQsIDB4MjQsIDB4MkIsIDB4
MzMsIDB4M0IsIDB4M0MsIDB4MzQsCisgICAgMHgyQywgMHgyNSwgMHgxRSwgMHgxNywgMHgxRiwg
MHgyNiwgMHgyRCwgMHgzNSwKKyAgICAweDNELCAweDNFLCAweDM2LCAweDJFLCAweDI3LCAweDJG
LCAweDM3LCAweDNGLCB9LAorICB7IDB4MDAsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDksIDB4MTAs
IDB4MTgsIDB4MTEsCisgICAgMHgwQSwgMHgwMywgMHgwNCwgMHgwQiwgMHgxMiwgMHgxOSwgMHgy
MCwgMHgyOCwKKyAgICAweDIxLCAweDMwLCAweDFBLCAweDEzLCAweDBDLCAweDA1LCAweDA2LCAw
eDBELAorICAgIDB4MTQsIDB4MUIsIDB4MjIsIDB4MjksIDB4MzgsIDB4MzEsIDB4MzksIDB4MkEs
CisgICAgMHgyMywgMHgxQywgMHgxNSwgMHgwRSwgMHgwNywgMHgwRiwgMHgxNiwgMHgxRCwKKyAg
ICAweDI0LCAweDJCLCAweDMyLCAweDNBLCAweDMzLCAweDNCLCAweDJDLCAweDI1LAorICAgIDB4
MUUsIDB4MTcsIDB4MUYsIDB4MjYsIDB4MkQsIDB4MzQsIDB4M0MsIDB4MzUsCisgICAgMHgzRCwg
MHgyRSwgMHgyNywgMHgyRiwgMHgzNiwgMHgzRSwgMHgzNywgMHgzRiwgfSwKKyAgeyAweDAwLCAw
eDAxLCAweDA4LCAweDAyLCAweDAzLCAweDA5LCAweDEwLCAweDE4LAorICAgIDB4MTEsIDB4MEEs
IDB4MDQsIDB4MDUsIDB4MEIsIDB4MTIsIDB4MTksIDB4MjAsCisgICAgMHgyOCwgMHgzMCwgMHgy
MSwgMHgxQSwgMHgxMywgMHgwQywgMHgwNiwgMHgwNywKKyAgICAweDBELCAweDE0LCAweDFCLCAw
eDIyLCAweDI5LCAweDM4LCAweDMxLCAweDM5LAorICAgIDB4MkEsIDB4MjMsIDB4MUMsIDB4MTUs
IDB4MEUsIDB4MEYsIDB4MTYsIDB4MUQsCisgICAgMHgyNCwgMHgyQiwgMHgzMiwgMHgzQSwgMHgz
MywgMHgyQywgMHgyNSwgMHgxRSwKKyAgICAweDE3LCAweDFGLCAweDI2LCAweDJELCAweDM0LCAw
eDNCLCAweDNDLCAweDM1LAorICAgIDB4MkUsIDB4MjcsIDB4MkYsIDB4MzYsIDB4M0QsIDB4M0Us
IDB4MzcsIDB4M0YsIH0sCisgIHsgMHgwMCwgMHgwOCwgMHgxMCwgMHgwMSwgMHgxOCwgMHgyMCwg
MHgyOCwgMHgwOSwKKyAgICAweDAyLCAweDAzLCAweDBBLCAweDExLCAweDE5LCAweDMwLCAweDM4
LCAweDI5LAorICAgIDB4MjEsIDB4MUEsIDB4MTIsIDB4MEIsIDB4MDQsIDB4MDUsIDB4MEMsIDB4
MTMsCisgICAgMHgxQiwgMHgyMiwgMHgzMSwgMHgzOSwgMHgzMiwgMHgyQSwgMHgyMywgMHgxQywK
KyAgICAweDE0LCAweDBELCAweDA2LCAweDA3LCAweDBFLCAweDE1LCAweDFELCAweDI0LAorICAg
IDB4MkIsIDB4MzMsIDB4M0EsIDB4M0IsIDB4MzQsIDB4MkMsIDB4MjUsIDB4MUUsCisgICAgMHgx
NiwgMHgwRiwgMHgxNywgMHgxRiwgMHgyNiwgMHgyRCwgMHgzQywgMHgzNSwKKyAgICAweDJFLCAw
eDI3LCAweDJGLCAweDM2LCAweDNELCAweDNFLCAweDM3LCAweDNGLCB9Cit9OwogCi0gICAgc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgKmNvbnN0IHNjYW50YWJsZXNbXSA9IHsKLSAgICAgICAgZmZfYWx0
ZXJuYXRlX3ZlcnRpY2FsX3NjYW4sCi0gICAgICAgIGZmX2FsdGVybmF0ZV9ob3Jpem9udGFsX3Nj
YW4sCi0gICAgICAgIGZmX3ppZ3phZ19kaXJlY3QsCi0gICAgICAgIGZmX3dtdjFfc2NhbnRhYmxl
WzBdLAotICAgICAgICBmZl93bXYxX3NjYW50YWJsZVsxXSwKLSAgICAgICAgZmZfd212MV9zY2Fu
dGFibGVbMl0sCi0gICAgICAgIGZmX3dtdjFfc2NhbnRhYmxlWzNdLAotICAgIH07Ci0gICAgc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgKnNjYW50YWJsZSA9IE5VTEw7Ci0gICAgc3RhdGljIGVudW0gaWRj
dF9wZXJtdXRhdGlvbl90eXBlIGlkY3RfcGVybXV0YXRpb247CitzdGF0aWMgY29uc3QgdWludDhf
dCAqY29uc3Qgc2NhbnRhYmxlc1tdID0geworICAgIGZmX2FsdGVybmF0ZV92ZXJ0aWNhbF9zY2Fu
LAorICAgIGZmX2FsdGVybmF0ZV9ob3Jpem9udGFsX3NjYW4sCisgICAgZmZfemlnemFnX2RpcmVj
dCwKKyAgICBmZl93bXYxX3NjYW50YWJsZVswXSwKKyAgICBmZl93bXYxX3NjYW50YWJsZVsxXSwK
KyAgICBmZl93bXYxX3NjYW50YWJsZVsyXSwKKyAgICBmZl93bXYxX3NjYW50YWJsZVszXSwKK307
CitzdGF0aWMgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlOworc3RhdGljIGVudW0gaWRjdF9wZXJt
dXRhdGlvbl90eXBlIGlkY3RfcGVybXV0YXRpb247CiAKLSAgICBpZiAoIXNjYW50YWJsZSkgewot
ICAgICAgICBzY2FudGFibGUgICAgICAgID0gc2NhbnRhYmxlc1tybmQoKSAlIEZGX0FSUkFZX0VM
RU1TKHNjYW50YWJsZXMpXTsKLSAgICAgICAgaWRjdF9wZXJtdXRhdGlvbiA9IHBlcm11dGF0aW9u
X3R5cGVzW3JuZCgpICUgRkZfQVJSQVlfRUxFTVMocGVybXV0YXRpb25fdHlwZXMpXTsKLSAgICB9
CitzdGF0aWMgaW50IGgyNjNfYWljLCBhY19wcmVkOworc3RhdGljIGludCBibG9ja19sYXN0X2lu
ZGV4OworCit2b2lkIGNoZWNrYXNtX2luaXRfbXBlZ3ZpZGVvX3VucXVhbnRpemUodm9pZCkKK3sK
KyAgICBzY2FudGFibGUgICAgICAgID0gc2NhbnRhYmxlc1tybmQoKSAlIEZGX0FSUkFZX0VMRU1T
KHNjYW50YWJsZXMpXTsKKyAgICBpZGN0X3Blcm11dGF0aW9uID0gcGVybXV0YXRpb25fdHlwZXNb
cm5kKCkgJSBGRl9BUlJBWV9FTEVNUyhwZXJtdXRhdGlvbl90eXBlcyldOworCisgICAgaDI2M19h
aWMgPSBybmQoKSAmIDE7CisgICAgYWNfcHJlZCAgPSBybmQoKSAmIDE7CisKKyAgICBibG9ja19s
YXN0X2luZGV4ID0gcm5kKCkgJSA2NDsKK30KKworc3RhdGljIHZvaWQgaW5pdF9pZGN0X3NjYW50
YWJsZShNUFZDb250ZXh0ICpjb25zdCBzLCBpbnQgaW50cmFfc2NhbnRhYmxlKQorewogICAgIGZm
X2luaXRfc2NhbnRhYmxlX3Blcm11dGF0aW9uKHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbiwgaWRj
dF9wZXJtdXRhdGlvbik7CiAgICAgZmZfaW5pdF9zY2FudGFibGUocy0+aWRzcC5pZGN0X3Blcm11
dGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgIGludHJhX3NjYW50YWJsZSA/ICZzLT5pbnRy
YV9zY2FudGFibGUgOiAmcy0+aW50ZXJfc2NhbnRhYmxlLApAQCAtMTMxLDExICsxNDEsNiBAQCBz
dGF0aWMgdm9pZCBpbml0X2gyNjNfdGVzdChNUFZDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJs
b2NrWzY0XSwKICAgICBpZiAoaW50cmEpIHsKICAgICAgICAgcGVybXV0YXRpb24gPSBzLT5pbnRy
YV9zY2FudGFibGUucGVybXV0YXRlZDsKICAgICAgICAgYmxvY2tbMF0gICAgPSBybmQoKSAmIDUx
MTsKLSAgICAgICAgc3RhdGljIGludCBoMjYzX2FpYyA9IC0xLCBhY19wcmVkOwotICAgICAgICBp
ZiAoaDI2M19haWMgPCAwKSB7Ci0gICAgICAgICAgICBoMjYzX2FpYyA9IHJuZCgpICYgMTsKLSAg
ICAgICAgICAgIGFjX3ByZWQgID0gcm5kKCkgJiAxOwotICAgICAgICB9CiAgICAgICAgIHMtPmgy
NjNfYWljID0gaDI2M19haWM7CiAgICAgICAgIHMtPmFjX3ByZWQgID0gYWNfcHJlZDsKICAgICAg
ICAgaWYgKHMtPmFjX3ByZWQpCkBAIC0yMjQsNyArMjI5LDYgQEAgdm9pZCBjaGVja2FzbV9jaGVj
a19tcGVndmlkZW9fdW5xdWFudGl6ZSh2b2lkKQogICAgICAgICAgICAgTVBWQ29udGV4dCBuZXcs
IHJlZjsKICAgICAgICAgICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgaW50MTZfdCwgYmxvY2tfbmV3
KVs2NF07CiAgICAgICAgICAgICBERUNMQVJFX0FMSUdORUQoMTYsIGludDE2X3QsIGJsb2NrX3Jl
ZilbNjRdOwotICAgICAgICAgICAgc3RhdGljIGludCBibG9ja19sYXN0X2luZGV4ID0gLTE7CiAK
ICAgICAgICAgICAgIHJhbmRvbWl6ZV9zdHJ1Y3QoTVBWQ29udGV4dCwgJnJlZik7CiAKQEAgLTIz
Miw5ICsyMzYsNiBAQCB2b2lkIGNoZWNrYXNtX2NoZWNrX21wZWd2aWRlb191bnF1YW50aXplKHZv
aWQpCiAKICAgICAgICAgICAgIGluaXRfaWRjdF9zY2FudGFibGUoJnJlZiwgdGVzdHNbaV0uaW50
cmFfc2NhbnRhYmxlKTsKIAotICAgICAgICAgICAgaWYgKGJsb2NrX2xhc3RfaW5kZXggPCAwKQot
ICAgICAgICAgICAgICAgIGJsb2NrX2xhc3RfaW5kZXggPSBybmQoKSAlIDY0OwotCiAgICAgICAg
ICAgICBtZW1zZXQoYmxvY2tfcmVmLCAwLCBzaXplb2YoYmxvY2tfcmVmKSk7CiAKICAgICAgICAg
ICAgIGlmICh0ZXN0c1tpXS5pbnRyYSkgewotLSAKMi41Mi4wCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0IC0t
IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8g
ZmZtcGVnLWRldmVsLWxlYXZlQGZmbXBlZy5vcmcK