optimization/6566: sparc64-unknown-netbsd-gcc loops consuming memory

thorpej@wasabisystems.com thorpej@wasabisystems.com
Sun May 5 12:06:00 GMT 2002


>Number:         6566
>Category:       optimization
>Synopsis:       sparc64-unknown-netbsd-gcc loops consuming memory
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun May 05 12:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jason R Thorpe
>Release:        gcc version 3.2 20020503 (experimental)
>Organization:
>Environment:
sparc64-unknown-netbsd target on i386-unknown-netbsdelf host
>Description:
When compiling the NetBSD libc's getusershell.c, GCC goes into an apparent loop where it consumes memory until is is killed.
>How-To-Repeat:
Compile attached file with:
sparc64-unknown-netbsd-gcc -c -O -ffixed-g4

Problem exists with or without -ffixed-g4.
>Fix:
The file can be compiled without optimization.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="getusershell.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="getusershell.i"

IyAxICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiCiMgMSAiPGJ1
aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAxICIvdTEvbmV0YnNkL3NyYy9saWIvbGli
Yy9nZW4vZ2V0dXNlcnNoZWxsLmMiCiMgMzYgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9n
ZXR1c2Vyc2hlbGwuYyIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lz
L2NkZWZzLmgiIDEgMyA0CiMgNjMgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21h
Y2hpbmUvY2RlZnMuaCIgMSAzIDQKIyA2NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvc3lzL2NkZWZzX2VsZi5oIiAxIDMgNAojIDY2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMzcgIi91MS9uZXRic2Qvc3JjL2xpYi9s
aWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCgoKX19hc21fXygiLnNlY3Rpb24gIiAiLmlkZW50
IiAiIDsgLmFzY2l6IFwiIiAiJE5ldEJTRDogZ2V0dXNlcnNoZWxsLmMsdiAxLjIxIDIwMDAvMDcv
MDcgMDg6MDM6MzcgaXRvaHkgRXhwICQiICJcIiA7IC50ZXh0Iik7CgoKCiMgMSAiL3UxL25ldGJz
ZC9zcmMvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaCIgMQojIDQ2ICIvdTEvbmV0YnNkL3Ny
Yy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMyA0CiMgODYgIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL3N5cy9udWxsLmgiIDEgMyA0CiMgODcgIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9j
cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMSAzIDQKIyA0NiAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKIyAxICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAxIDMgNAojIDQyICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAzIDQKIyAxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfdHlwZXMuaCIgMSAzIDQK
IyA1NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVz
LmgiIDMgNAp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgX191aW50OF90Owp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19pbnQ2NF90
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludDY0X3Q7CiMgODQgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF90eXBlcy5oIiAzIDQKdHlwZWRlZiBs
b25nIGludCBfX2ludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludHB0cl90
OwojIDQzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAy
IDMgNAoKCnR5cGVkZWYgX19pbnQ4X3QgaW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQ4X3QgdWlu
dDhfdDsKCgoKCnR5cGVkZWYgX19pbnQxNl90IGludDE2X3Q7CgoKCgp0eXBlZGVmIF9fdWludDE2
X3QgdWludDE2X3Q7CgoKCgp0eXBlZGVmIF9faW50MzJfdCBpbnQzMl90OwoKCgoKdHlwZWRlZiBf
X3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsKCgoKCnR5
cGVkZWYgX191aW50NjRfdCB1aW50NjRfdDsKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJf
dDsKCgoKCnR5cGVkZWYgX191aW50cHRyX3QgdWludHB0cl90OwoKCgojIDEgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9td2d3dHlwZXMuaCIgMSAzIDQKIyA0
OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBl
cy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50
X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCgoKdHlw
ZWRlZiBsb25nIGludCBpbnRfbGVhc3Q2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVp
bnRfbGVhc3Q2NF90OwojIDcyICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFj
aGluZS9pbnRfbXdnd3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0OF90Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgbG9uZyBpbnQg
aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2Zhc3QxNl90OwoK
CgoKCnR5cGVkZWYgbG9uZyBpbnQgaW50X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1
aW50X2Zhc3QzMl90OwojIDk3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFj
aGluZS9pbnRfbXdnd3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0NjRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50X2Zhc3Q2NF90OwojIDExNCAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBlcy5oIiAzIDQKdHlw
ZWRlZiBsb25nIGludCBpbnRtYXhfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50bWF4
X3Q7CiMgOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc3RkaW50Lmgi
IDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9p
bnRfbGltaXRzLmgiIDEgMyA0CiMgOTggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9zeXMvc3RkaW50LmgiIDIgMyA0CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL21hY2hpbmUvaW50X2NvbnN0LmgiIDEgMyA0CiMgMTAyICIvdTEvZGlza2xlc3MvY3Ax
NTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAyIDMgNAojIDQ3ICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfZm10aW8uaCIgMSAzIDQKIyA1
MCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAyIDMg
NAojIDkwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIg
MyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAx
IDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVz
LmgiIDEgMyA0CiMgNjggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5l
L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHJlZ2lzdGVyX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHJlZ2lzdGVyMzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
cmVnaXN0ZXI2NF90OwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHZhZGRyX3Q7CnR5
cGVkZWYgdmFkZHJfdCB2c2l6ZV90OwojIDg4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvbWFjaGluZS90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwYWRk
cl90OwoKdHlwZWRlZiBwYWRkcl90IHBzaXplX3Q7CiMgNDggIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAxIDMgNAojIDg4ICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDMgNAp0eXBlZGVmIHVuaW9uIHsK
ICAgICAgICBjaGFyIF9fbWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX19tYnN0YXRl
TDsKfSBfX21ic3RhdGVfdDsKIyA1MCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMgNAoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9zeXMvYW5zaS5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvc3lzL2Fuc2kuaCIgMyA0CnR5cGVkZWYgY2hhciAqIF9fY2FkZHJfdDsKdHlwZWRlZiBf
X3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKdHlwZWRlZiBf
X2ludDY0X3QgX19vZmZfdDsKdHlwZWRlZiBfX2ludDMyX3QgX19waWRfdDsKdHlwZWRlZiBfX3Vp
bnQ4X3QgX19zYV9mYW1pbHlfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CnR5
cGVkZWYgX191aW50MzJfdCBfX3VpZF90OwojIDU0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0
eXBlZGVmIF9fdWludDE2X3QgdV9pbnQxNl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90
Owp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2NF90OwoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMSAzIDQKCgojIDEgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDEgMyA0CiMgNDkgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDMgNAojIDEgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDEgMyA0
CiMgNTAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDIg
MyA0CiMgODAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgi
IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MSAzIDQKIyA4MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4u
aCIgMiAzIDQKCnR5cGVkZWYgdV9pbnQzMl90IGluX2FkZHJfdDsKdHlwZWRlZiB1X2ludDE2X3Qg
aW5fcG9ydF90OwoKCl9fdWludDMyX3QgaHRvbmwgKF9fdWludDMyX3QpIF9fYXR0cmlidXRlX18o
KF9fY29uc3RfXykpOwpfX3VpbnQxNl90IGh0b25zIChfX3VpbnQxNl90KSBfX2F0dHJpYnV0ZV9f
KChfX2NvbnN0X18pKTsKX191aW50MzJfdCBudG9obCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVf
XygoX19jb25zdF9fKSk7Cl9fdWludDE2X3QgbnRvaHMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRl
X18oKF9fY29uc3RfXykpOwoKIyAxMTggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9zeXMvZW5kaWFuLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9tYWNoaW5lL2Jzd2FwLmgiIDEgMyA0CgoKCgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvc3lzL2Jzd2FwLmgiIDEgMyA0CiMgMTYgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9zeXMvYnN3YXAuaCIgMyA0CgoKdV9pbnQxNl90IGJzd2FwMTYgKHVfaW50
MTZfdCk7CnVfaW50MzJfdCBic3dhcDMyICh1X2ludDMyX3QpOwoKCgoKdV9pbnQ2NF90IGJzd2Fw
NjQgKHVfaW50NjRfdCk7CgojIDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9t
YWNoaW5lL2Jzd2FwLmgiIDIgMyA0CiMgMTE5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvc3lzL2VuZGlhbi5oIiAyIDMgNAojIDQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3Iv
aW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAyIDMgNAojIDEwMSAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7Cgp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKdHlwZWRlZiB1
X2xvbmcgY3B1aWRfdDsKCgp0eXBlZGVmIHVfaW50NjRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2lu
dDY0X3QgcXVhZF90Owp0eXBlZGVmIHF1YWRfdCAqIHFhZGRyX3Q7CiMgMTMwICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHF1YWRfdCBs
b25nbG9uZ190Owp0eXBlZGVmIHVfcXVhZF90IHVfbG9uZ2xvbmdfdDsKCnR5cGVkZWYgX19pbnQ2
NF90IGJsa2NudF90Owp0eXBlZGVmIHVfaW50MzJfdCBibGtzaXplX3Q7CgoKdHlwZWRlZiBfX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2ludDMyX3QgZGFkZHJfdDsKdHlwZWRlZiB1X2lu
dDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX2dpZF90
IGdpZF90OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbm9f
dDsKdHlwZWRlZiBsb25nIGtleV90OwoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgp0eXBl
ZGVmIHVfaW50MzJfdCBubGlua190OwoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCnR5cGVk
ZWYgX19waWRfdCBwaWRfdDsKCgoKdHlwZWRlZiBxdWFkX3QgcmxpbV90Owp0eXBlZGVmIF9faW50
MzJfdCBzZWdzel90Owp0eXBlZGVmIF9faW50MzJfdCBzd2Jsa190OwoKCnR5cGVkZWYgX191aWRf
dCB1aWRfdDsKCgoKdHlwZWRlZiBfX2ludDMyX3QgZHRpbWVfdDsKCgoKCgoKCnVuaW9uIF9fc2Vt
dW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlkX2RzICpidWY7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgKmFycmF5Owp9OwojIDIwNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKCl9fb2ZmX3QgX2xzZWVrIChpbnQsIF9fb2Zm
X3QsIGludCk7CmludCBfZnRydW5jYXRlIChpbnQsIF9fb2ZmX3QpOwppbnQgdHJ1bmNhdGUgKGNv
bnN0IGNoYXIgKiwgX19vZmZfdCk7CgojIDIyNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgY2xvY2tfdDsKCgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBzaXplX3Q7CgoKCgoKdHlwZWRlZiBsb25nIHNzaXplX3Q7CgoKCgp0eXBl
ZGVmIGludCB0aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCgp0eXBlZGVmIGlu
dCB0aW1lcl90OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCB1c2Vjb25kc190OwojIDI3NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2ludDMyX3QgX19mZF9tYXNrOwojIDI5MyAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRl
ZiBzdHJ1Y3QgZmRfc2V0IHsKICAgICAgICBfX2ZkX21hc2sgZmRzX2JpdHNbKCgoMjU2KSArICgo
KHNpemVvZihfX2ZkX21hc2spICogOCkpIC0gMSkpIC8gKChzaXplb2YoX19mZF9tYXNrKSAqIDgp
KSldOwp9IGZkX3NldDsKIyA5MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5
cy9wYXJhbS5oIiAyIDMgNAojIDEwMCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3N5cy9wYXJhbS5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv
c3lzL3N5c2xpbWl0cy5oIiAxIDMgNAojIDQxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvc3lzL3N5c2xpbWl0cy5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNy
L2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDIgMyA0CiMgMTAxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMgMTQxICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMgNAojIDEgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDEgMyA0CiMgNDYgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAojIDEgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA0
NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzIDQK
IyAxNDYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMg
NAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdV9pbnQzMl90IF9fYml0c1s0XTsKfSBzaWdzZXRf
dDsKIyAxOTIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi
IDMgNApzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICB2b2lkICgqc2FfaGFuZGxlcikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChpbnQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7CiAg
ICAgICAgaW50IHNhX2ZsYWdzOwp9OwojIDIyNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnR5cGVkZWYgdm9pZCAoKnNpZ190KSAoaW50KTsKIyAy
NDIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp0
eXBlZGVmIHN0cnVjdAoKICAgICAgICAgICAgICAgc2lnYWx0c3RhY2sKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBzaXplX3Qgc3Nfc2l6
ZTsKICAgICAgICBpbnQgc3NfZmxhZ3M7Cn0gc3RhY2tfdDsKIyAyNjYgIi91MS9kaXNrbGVzcy9j
cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApzdHJ1Y3Qgc2lndmVjIHsKICAg
ICAgICB2b2lkICgqc3ZfaGFuZGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQp
OwogICAgICAgIGludCBzdl9tYXNrOwogICAgICAgIGludCBzdl9mbGFnczsKfTsKIyAyODQgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApzdHJ1Y3Qg
c2lnc3RhY2sgewogICAgICAgIHZvaWQgKnNzX3NwOwogICAgICAgIGludCBzc19vbnN0YWNrOwp9
OwoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFs
LmgiIDEgMyA0CiMgNTEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5l
L3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190OwojIDg0ICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWdj
b250ZXh0IHsKICAgICAgICBpbnQgc2Nfb25zdGFjazsKICAgICAgICBpbnQgX19zY19tYXNrMTM7
CgogICAgICAgIGxvbmcgc2Nfc3A7CiAgICAgICAgbG9uZyBzY19wYzsKICAgICAgICBsb25nIHNj
X25wYzsKCiAgICAgICAgbG9uZyBzY190c3RhdGU7CgoKCiAgICAgICAgbG9uZyBzY19nMTsKICAg
ICAgICBsb25nIHNjX28wOwogICAgICAgIHNpZ3NldF90IHNjX21hc2s7Cn07CiMgMjkxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAyIDMgNAojIDMwOCAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0Cgp2b2lk
ICgqX3NpZ25hbCAoaW50LCB2b2lkICgqKSAoaW50KSkpIChpbnQpOwoKIyAxNDIgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzIDQKCgojIDEgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDEgMyA0CiMgMTQ1
ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMg
MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmgiIDEg
MyA0CiMgMTQ2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgi
IDIgMyA0CiMgNDcgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIg
MgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAxIDMg
NAojIDQxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZpbGUuaCIgMyA0
CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAxIDMg
NAojIDUzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMg
NAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3Qu
aCIgMSAzIDQKIyA1NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250
bC5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9z
dGF0LmgiIDEgMyA0CiMgNDYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2Zl
YXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAyIDMgNAoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9zeXMvdGltZS5oIiAxIDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICBsb25nIHR2X3Nl
YzsKICAgICAgICBsb25nIHR2X3VzZWM7Cn07CgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAgICAg
IHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDczICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lem9uZSB7
CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9Owoj
IDEzOCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApz
dHJ1Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAg
ICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKCgoKCnN0cnVjdCBjbG9ja2luZm8gewog
ICAgICAgIGludCBoejsKICAgICAgICBpbnQgdGljazsKICAgICAgICBpbnQgdGlja2FkajsKICAg
ICAgICBpbnQgc3RhdGh6OwogICAgICAgIGludCBwcm9maHo7Cn07CiMgMTc2ICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz
L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyA0NyAiL3UxL2Rpc2tsZXNzL2Nw
MTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x
L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAojIDgwICIvdTEvZGlza2xlc3MvY3Ax
NTAwLTEvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKc3RydWN0IHRtIHsKICAgICAgICBpbnQgdG1f
c2VjOwogICAgICAgIGludCB0bV9taW47CiAgICAgICAgaW50IHRtX2hvdXI7CiAgICAgICAgaW50
IHRtX21kYXk7CiAgICAgICAgaW50IHRtX21vbjsKICAgICAgICBpbnQgdG1feWVhcjsKICAgICAg
ICBpbnQgdG1fd2RheTsKICAgICAgICBpbnQgdG1feWRheTsKICAgICAgICBpbnQgdG1faXNkc3Q7
CiAgICAgICAgbG9uZyB0bV9nbXRvZmY7CiAgICAgICAgY2hhciAqdG1fem9uZTsKfTsKCgpjaGFy
ICphc2N0aW1lIChjb25zdCBzdHJ1Y3QgdG0gKik7CmNsb2NrX3QgY2xvY2sgKHZvaWQpOwpjaGFy
ICpjdGltZSAoY29uc3QgdGltZV90ICopOwpkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCwgdGltZV90
KTsKc3RydWN0IHRtICpnbXRpbWUgKGNvbnN0IHRpbWVfdCAqKTsKc3RydWN0IHRtICpsb2NhbHRp
bWUgKGNvbnN0IHRpbWVfdCAqKTsKdGltZV90IG1rdGltZSAoc3RydWN0IHRtICopOwpzaXplX3Qg
c3RyZnRpbWUgKGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3Ry
aWN0LCBjb25zdCBzdHJ1Y3QgdG0gKiBfX3Jlc3RyaWN0KTsKCnRpbWVfdCBfdGltZSAodGltZV90
ICopOwoKCgpleHRlcm4gY2hhciAqX3R6bmFtZVsyXTsKdm9pZCBfdHpzZXQgKHZvaWQpOwoKCgoK
CgpleHRlcm4gaW50IF9kYXlsaWdodDsKCmV4dGVybiBsb25nIGludCB0aW1lem9uZSBfX2FzbV9f
KCJfX3RpbWV6b25lMTMiKTsKCmNoYXIgKl9zdHJwdGltZSAoY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzdHJ1Y3QgdG0gKiBfX3Jlc3RyaWN0KTsKCgoK
CgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMg
NAojIDEyNyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQK
c3RydWN0IHNpZ2V2ZW50OwpzdHJ1Y3QgaXRpbWVyc3BlYzsKaW50IGNsb2NrX2dldHJlcyAoY2xv
Y2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBjbG9ja19nZXR0aW1lIChjbG9ja2lkX3Qs
IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IF9jbG9ja19zZXR0aW1lIChjbG9ja2lkX3QsIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IG5hbm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICosIHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90LCBzdHJ1
Y3Qgc2lnZXZlbnQgKiwgdGltZXJfdCAqKTsKaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCk7Cmlu
dCB0aW1lcl9nZXRvdmVycnVuICh0aW1lcl90KTsKaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3Qs
IHN0cnVjdCBpdGltZXJzcGVjICopOwppbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCwgaW50LCBj
b25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqKTsKCgoKCgoKY2hh
ciAqX2FzY3RpbWVfciAoY29uc3Qgc3RydWN0IHRtICogX19yZXN0cmljdCwgY2hhciAqIF9fcmVz
dHJpY3QpOwpjaGFyICpfY3RpbWVfciAoY29uc3QgdGltZV90ICosIGNoYXIgKik7CnN0cnVjdCB0
bSAqX2dtdGltZV9yIChjb25zdCB0aW1lX3QgKiBfX3Jlc3RyaWN0LCBzdHJ1Y3QgdG0gKiBfX3Jl
c3RyaWN0KTsKc3RydWN0IHRtICpfbG9jYWx0aW1lX3IgKGNvbnN0IHRpbWVfdCAqIF9fcmVzdHJp
Y3QsIHN0cnVjdCB0bSAqIF9fcmVzdHJpY3QpOwoKCgp0aW1lX3QgX3RpbWUycG9zaXggKHRpbWVf
dCk7CnRpbWVfdCBfcG9zaXgydGltZSAodGltZV90KTsKdGltZV90IF90aW1lZ20gKHN0cnVjdCB0
bSAqY29uc3QpOwp0aW1lX3QgX3RpbWVvZmYgKHN0cnVjdCB0bSAqY29uc3QsIGNvbnN0IGxvbmcp
Owp0aW1lX3QgX3RpbWVsb2NhbCAoc3RydWN0IHRtICpjb25zdCk7CgoKCnZvaWQgX3R6c2V0d2Fs
bCAodm9pZCk7CnN0cnVjdCB0bSAqX29mZnRpbWUgKGNvbnN0IHRpbWVfdCAqY29uc3QsIGNvbnN0
IGxvbmcpOwoKCgoKIyAxNzcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv
dGltZS5oIiAyIDMgNAoKCgoKCmludCBfYWRqdGltZSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwg
c3RydWN0IHRpbWV2YWwgKik7CmludCBmdXRpbWVzIChpbnQsIGNvbnN0IHN0cnVjdCB0aW1ldmFs
ICopOwppbnQgZ2V0aXRpbWVyIChpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBnZXR0aW1l
b2ZkYXkgKHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1lem9uZSAqKTsKaW50IGx1dGltZXMg
KGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CmludCBzZXRpdGltZXIgKGlu
dCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgX3Nl
dHRpbWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgY29uc3Qgc3RydWN0IHRpbWV6b25l
ICopOwppbnQgdXRpbWVzIChjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoK
IyA1MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMyA0
CiMgMTA5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0
CnN0cnVjdCBzdGF0IHsKICAgICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5v
OwogICAgICAgIF9fbW9kZV90IHN0X21vZGU7CiAgICAgICAgbmxpbmtfdCBzdF9ubGluazsKICAg
ICAgICBfX3VpZF90IHN0X3VpZDsKICAgICAgICBfX2dpZF90IHN0X2dpZDsKICAgICAgICBkZXZf
dCBzdF9yZGV2OwoKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfYXRpbWVzcGVjOwogICAgICAg
IHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltZXNwZWM7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0
X2N0aW1lc3BlYzsKIyAxMzMgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAzIDQKICAgICAgICBfX29mZl90IHN0X3NpemU7CiAgICAgICAgYmxrY250X3Qgc3Rf
YmxvY2tzOwogICAgICAgIGJsa3NpemVfdCBzdF9ibGtzaXplOwogICAgICAgIHVfaW50MzJfdCBz
dF9mbGFnczsKICAgICAgICB1X2ludDMyX3Qgc3RfZ2VuOwogICAgICAgIF9faW50NjRfdCBzdF9x
c3BhcmVbMl07Cn07CiMgMjYzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMyA0CgppbnQgY2htb2QgKGNvbnN0IGNoYXIgKiwgX19tb2RlX3QpOwppbnQgbWtk
aXIgKGNvbnN0IGNoYXIgKiwgX19tb2RlX3QpOwppbnQgbWtmaWZvIChjb25zdCBjaGFyICosIF9f
bW9kZV90KTsKCgoKCgoKaW50IHN0YXQgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKikgX19h
c21fXygiX19zdGF0MTMiKTsKaW50IGZzdGF0IChpbnQsIHN0cnVjdCBzdGF0ICopIF9fYXNtX18o
Il9fZnN0YXQxMyIpOwoKX19tb2RlX3QgdW1hc2sgKF9fbW9kZV90KTsKCmludCBmY2htb2QgKGlu
dCwgX19tb2RlX3QpOwoKCgoKaW50IGxzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICop
IF9fYXNtX18oIl9fbHN0YXQxMyIpOwoKaW50IG1rbm9kIChjb25zdCBjaGFyICosIF9fbW9kZV90
LCBkZXZfdCk7CgoKCmludCBjaGZsYWdzIChjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpp
bnQgZmNoZmxhZ3MgKGludCwgdW5zaWduZWQgbG9uZyk7CmludCBsY2hmbGFncyAoY29uc3QgY2hh
ciAqLCB1bnNpZ25lZCBsb25nKTsKaW50IGxjaG1vZCAoY29uc3QgY2hhciAqLCBfX21vZGVfdCk7
CgoKIyA1NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAy
IDMgNAojIDIzMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5o
IiAzIDQKc3RydWN0IGZsb2NrIHsKICAgICAgICBfX29mZl90IGxfc3RhcnQ7CiAgICAgICAgX19v
ZmZfdCBsX2xlbjsKICAgICAgICBfX3BpZF90IGxfcGlkOwogICAgICAgIHNob3J0IGxfdHlwZTsK
ICAgICAgICBzaG9ydCBsX3doZW5jZTsKfTsKIyAyNjQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91
c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CgppbnQgb3BlbiAoY29uc3QgY2hhciAqLCBpbnQs
IC4uLik7CmludCBjcmVhdCAoY29uc3QgY2hhciAqLCBfX21vZGVfdCk7CmludCBmY250bCAoaW50
LCBpbnQsIC4uLik7CgppbnQgZmxvY2sgKGludCwgaW50KTsKCgojIDQyICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZpbGUuaCIgMiAzIDQKIyAxICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMgNAojIDQxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKIyAxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDIgMyA0CiMgNDMg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAyIDMgNAojIDQ4
ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKCiMgMSAiL3Ux
L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgNDYgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKIyAxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMgNAojIDU5ICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CmV4dGVybiBjb25zdCB1
bnNpZ25lZCBjaGFyICpfY3R5cGVfOwpleHRlcm4gY29uc3Qgc2hvcnQgKl90b2xvd2VyX3RhYl87
CmV4dGVybiBjb25zdCBzaG9ydCAqX3RvdXBwZXJfdGFiXzsKCgoKaW50IGlzYWxudW0gKGludCk7
CmludCBpc2FscGhhIChpbnQpOwppbnQgaXNjbnRybCAoaW50KTsKaW50IGlzZGlnaXQgKGludCk7
CmludCBpc2dyYXBoIChpbnQpOwppbnQgaXNsb3dlciAoaW50KTsKaW50IGlzcHJpbnQgKGludCk7
CmludCBpc3B1bmN0IChpbnQpOwppbnQgaXNzcGFjZSAoaW50KTsKaW50IGlzdXBwZXIgKGludCk7
CmludCBpc3hkaWdpdCAoaW50KTsKaW50IHRvbG93ZXIgKGludCk7CmludCB0b3VwcGVyIChpbnQp
OwoKCgppbnQgaXNhc2NpaSAoaW50KTsKaW50IHRvYXNjaWkgKGludCk7CmludCBfdG9sb3dlciAo
aW50KTsKaW50IF90b3VwcGVyIChpbnQpOwoKCgoKaW50IGlzYmxhbmsgKGludCk7CgoKIyA1MCAi
L3UxL25ldGJzZC9zcmMvbGliL2xpYmMvZ2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgNDcgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDEgMyA0CiMgNDggIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9j
cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA0OSAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CgoKCmludCAqX19lcnJu
byAodm9pZCk7CgoKCgoKZXh0ZXJuIGNvbnN0IGludCBfc3lzX25lcnIgX19hc21fXygiX19zeXNf
bmVycjE0Iik7CmV4dGVybiBjb25zdCBjaGFyICpjb25zdCAqX3N5c19lcnJsaXN0IF9fYXNtX18o
Il9fc3lzX2Vycmxpc3QxNCIpOwoKCiMgNTEgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9n
ZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u
c3N3aXRjaC5oIiAxIDMgNAojIDEwOSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L25zc3dpdGNoLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqc3Jj
OwogICAgICAgIGludCAoKmNhbGxiYWNrKSAodm9pZCAqcmV0dmFsLCB2b2lkICpjYl9kYXRhLCBj
aGFyICopOwoKICAgICAgICB2b2lkICpjYl9kYXRhOwp9IG5zX2R0YWI7CiMgMTM5ICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbnNzd2l0Y2guaCIgMyA0CnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHVfaW50MzJfdCBmbGFnczsKfSBu
c19zcmM7CgoKCgoKCmV4dGVybiBjb25zdCBuc19zcmMgX19uc2RlZmF1bHRzcmNbXTsKIyAxNzQg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uc3N3aXRjaC5oIiAzIDQKCmludCBf
bnNkaXNwYXRjaCAodm9pZCAqLCBjb25zdCBuc19kdGFiIFtdLCBjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwgY29uc3QgbnNfc3JjIFtdLCAuLi4pOwojIDE4NyAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL25zc3dpdGNoLmgiIDMgNAoKIyA1MiAiL3UxL25ldGJzZC9zcmMvbGli
L2xpYmMvZ2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz
ci9pbmNsdWRlL3BhdGhzLmgiIDEgMyA0CiMgNTMgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dl
bi9nZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9zdGRpby5oIiAxIDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9m
ZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMiAzIDQKIyA2MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMgNAp0eXBlZGVmIF9fb2ZmX3QgZnBvc190OwojIDc5ICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnN0cnVjdCBfX3NidWYgewogICAgICAg
IHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIGludCBfc2l6ZTsKfTsKIyAxMTAgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg
X19zRklMRSB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX3A7CiAgICAgICAgaW50IF9yOwogICAg
ICAgIGludCBfdzsKICAgICAgICBzaG9ydCBfZmxhZ3M7CiAgICAgICAgc2hvcnQgX2ZpbGU7CiAg
ICAgICAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgICAgICAgaW50IF9sYmZzaXplOwoKCiAgICAgICAg
dm9pZCAqX2Nvb2tpZTsKICAgICAgICBpbnQgKCpfY2xvc2UpICh2b2lkICopOwogICAgICAgIGlu
dCAoKl9yZWFkKSAodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAgZnBvc190ICgqX3NlZWsp
ICh2b2lkICosIGZwb3NfdCwgaW50KTsKICAgICAgICBpbnQgKCpfd3JpdGUpICh2b2lkICosIGNv
bnN0IGNoYXIgKiwgaW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYgX2V4dDsKCgogICAgICAg
IHVuc2lnbmVkIGNoYXIgKl91cDsKICAgICAgICBpbnQgX3VyOwoKCiAgICAgICAgdW5zaWduZWQg
Y2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgICAgICAg
c3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7CiAgICAgICAgZnBvc190
IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107CgojIDIxNiAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKdm9pZCBjbGVhcmVyciAoRklM
RSAqKTsKaW50IGZjbG9zZSAoRklMRSAqKTsKaW50IGZlb2YgKEZJTEUgKik7CmludCBmZXJyb3Ig
KEZJTEUgKik7CmludCBmZmx1c2ggKEZJTEUgKik7CmludCBmZ2V0YyAoRklMRSAqKTsKaW50IGZn
ZXRwb3MgKEZJTEUgKiBfX3Jlc3RyaWN0LCBmcG9zX3QgKiBfX3Jlc3RyaWN0KTsKY2hhciAqZmdl
dHMgKGNoYXIgKiBfX3Jlc3RyaWN0LCBpbnQsIEZJTEUgKiBfX3Jlc3RyaWN0KTsKRklMRSAqZm9w
ZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IGZwcmludGYgKEZJTEUgKiBfX3Jl
c3RyaWN0ICwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBmcHV0YyAoaW50LCBG
SUxFICopOwppbnQgZnB1dHMgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBGSUxFICogX19yZXN0
cmljdCk7CnNpemVfdCBmcmVhZCAodm9pZCAqIF9fcmVzdHJpY3QsIHNpemVfdCwgc2l6ZV90LCBG
SUxFICogX19yZXN0cmljdCk7CkZJTEUgKmZyZW9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBGSUxFICogX19yZXN0cmljdCk7CmludCBmc2NhbmYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICogX19yZXN0cmljdCwgLi4uKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcsIGlu
dCk7CmludCBmc2V0cG9zIChGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAoRklM
RSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAqIF9fcmVzdHJpY3QsIHNpemVfdCwgc2l6
ZV90LCBGSUxFICogX19yZXN0cmljdCk7CgppbnQgZ2V0YyAoRklMRSAqKTsKaW50IGdldGNoYXIg
KHZvaWQpOwp2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqKTsKaW50IHByaW50ZiAoY29uc3QgY2hh
ciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBwdXRjIChpbnQsIEZJTEUgKik7CmludCBwdXRjaGFy
IChpbnQpOwppbnQgcHV0cyAoY29uc3QgY2hhciAqKTsKaW50IHJlbW92ZSAoY29uc3QgY2hhciAq
KTsKdm9pZCByZXdpbmQgKEZJTEUgKik7CmludCBzY2FuZiAoY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QsIC4uLik7CnZvaWQgc2V0YnVmIChGSUxFICogX19yZXN0cmljdCwgY2hhciAqIF9fcmVzdHJp
Y3QpOwppbnQgc2V0dmJ1ZiAoRklMRSAqIF9fcmVzdHJpY3QsIGNoYXIgKiBfX3Jlc3RyaWN0LCBp
bnQsIHNpemVfdCk7CmludCBzc2NhbmYgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwgLi4uKTsKRklMRSAqdG1wZmlsZSAodm9pZCk7CmludCB1bmdldGMg
KGludCwgRklMRSAqKTsKaW50IHZmcHJpbnRmIChGSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hh
ciAqIF9fcmVzdHJpY3QsIGNoYXIgKik7CgppbnQgdnByaW50ZiAoY29uc3QgY2hhciAqIF9fcmVz
dHJpY3QsIGNoYXIgKik7CgoKY2hhciAqZ2V0cyAoY2hhciAqKTsKaW50IHNwcmludGYgKGNoYXIg
KiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgLi4uKTsKY2hhciAqdG1wbmFt
IChjaGFyICopOwppbnQgdnNwcmludGYgKGNoYXIgKiBfX3Jlc2l0cmN0LCBjb25zdCBjaGFyICog
X19yZXN0cmljdCwgY2hhciAqKTsKCgoKCgoKaW50IHJlbmFtZSAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwoKCiMgMjc4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CgpjaGFyICpfY3Rlcm1pZCAoY2hhciAqKTsKCgoKY2hhciAqY3VzZXJpZCAoY2hh
ciAqKTsKCkZJTEUgKl9mZG9wZW4gKGludCwgY29uc3QgY2hhciAqKTsKaW50IGZpbGVubyAoRklM
RSAqKTsKCiMgMjk2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CgoKCgoKCmludCBnZXRjX3VubG9ja2VkIChGSUxFICopOwppbnQgZ2V0Y2hhcl91bmxvY2tl
ZCAodm9pZCk7CmludCBwdXRjX3VubG9ja2VkIChpbnQsIEZJTEUgKik7CmludCBwdXRjaGFyX3Vu
bG9ja2VkIChpbnQpOwoKIyAzMTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKCmludCBfcGNsb3NlIChGSUxFICopOwpGSUxFICpfcG9wZW4gKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKaW50IGdldHcgKEZJTEUgKik7CmludCBwdXR3
IChpbnQsIEZJTEUgKik7CmludCBfc25wcmludGYgKGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3Qs
IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18o
KF9fZm9ybWF0X18oX19wcmludGZfXywgMywgNCkpKTsKaW50IF92c25wcmludGYgKGNoYXIgKiBf
X3Jlc3RyaWN0LCBzaXplX3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICopCgogICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDMsIDApKSk7CgoK
Y2hhciAqdGVtcG5hbSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCiMgMzUxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgppbnQgX2ZzZWVrbyAo
RklMRSAqLCBfX29mZl90LCBpbnQpOwpfX29mZl90IF9mdGVsbG8gKEZJTEUgKik7CgoKCgoKCgoK
CmludCBfYXNwcmludGYgKGNoYXIgKiogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QsIC4uLikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9f
LCAyLCAzKSkpOwpjaGFyICpfZmdldGxuIChGSUxFICogX19yZXN0cmljdCwgc2l6ZV90ICogX19y
ZXN0cmljdCk7CmludCBmcHVyZ2UgKEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNo
YXIgKiwgaW50KTsKaW50IHNldGxpbmVidWYgKEZJTEUgKik7CmludCB2YXNwcmludGYgKGNoYXIg
KiogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKCiAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMCkpKTsKaW50IHZz
Y2FuZiAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXygoX19mb3JtYXRfXyhfX3NjYW5mX18sIDEsIDApKSk7CmludCB2c3NjYW5mIChjb25z
dCBjaGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKCiAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19zY2FuZl9fLCAyLCAwKSkpOwpj
b25zdCBjaGFyICpfX2ZtdGNoZWNrIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikKICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18oMikpKTsKCiMgMzkxICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgpGSUxFICpmdW5vcGVuIChj
b25zdCB2b2lkICosIGludCAoKikodm9pZCAqLCBjaGFyICosIGludCksIGludCAoKikodm9pZCAq
LCBjb25zdCBjaGFyICosIGludCksIGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCksIGlu
dCAoKikodm9pZCAqKSk7CgoKCgoKCgoKCgoKCgppbnQgX19zcmdldCAoRklMRSAqKTsKaW50IF9f
c3Zmc2NhbmYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgY2hh
ciAqKTsKCmludCBfX3N3YnVmIChpbnQsIEZJTEUgKik7CgoKCgoKCgoKc3RhdGljIF9faW5saW5l
IGludCBfX3NwdXRjKGludCBfYywgRklMRSAqX3ApIHsKICAgICAgICBpZiAoLS1fcC0+X3cgPj0g
MCB8fCAoX3AtPl93ID49IF9wLT5fbGJmc2l6ZSAmJiAoY2hhcilfYyAhPSAnXG4nKSkKICAgICAg
ICAgICAgICAgIHJldHVybiAoKl9wLT5fcCsrID0gX2MpOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIHJldHVybiAoX19zd2J1ZihfYywgX3ApKTsKfQojIDU0ICIvdTEvbmV0YnNkL3NyYy9s
aWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQzICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgNTcgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CnR5cGVkZWYgaW50IHdjaGFyX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRpdl90OwoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJlbTsKfSBs
ZGl2X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsK
CiAgICAgICAgbG9uZyBsb25nIGludCByZW07Cn0gbGxkaXZfdDsKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBxdWFkX3QgcXVvdDsKICAgICAgICBxdWFkX3QgcmVtOwp9IHFkaXZfdDsKIyA5
OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJu
IHNpemVfdCBfX21iX2N1cl9tYXg7CgoKCiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f
KChfX25vcmV0dXJuX18pKTsKIGludCBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCopKHZv
aWQpKTsKZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7CmludCBhdG9pIChjb25zdCBjaGFyICop
Owpsb25nIGF0b2wgKGNvbnN0IGNoYXIgKik7CgoKCnZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQg
KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNv
bnN0IHZvaWQgKikpOwoKCnZvaWQgKmNhbGxvYyAoc2l6ZV90LCBzaXplX3QpOwpkaXZfdCBkaXYg
KGludCwgaW50KTsKIHZvaWQgZXhpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18p
KTsKdm9pZCBmcmVlICh2b2lkICopOwogY2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICopOwogbG9u
ZwogICAgICAgICBsYWJzIChsb25nKTsKbGRpdl90IGxkaXYgKGxvbmcsIGxvbmcpOwp2b2lkICpt
YWxsb2MgKHNpemVfdCk7CnZvaWQgcXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAo
KikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKCmludCByYW5kICh2b2lkKTsKdm9pZCAq
cmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwp2b2lkIHNyYW5kICh1bnNpZ25lZCk7CmRvdWJsZSBz
dHJ0b2QgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QpOwpsb25n
IHN0cnRvbCAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKiogX19yZXN0cmljdCwgaW50
KTsKdW5zaWduZWQgbG9uZwogICAgICAgICBzdHJ0b3VsIChjb25zdCBjaGFyICogX19yZXN0cmlj
dCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwppbnQgc3lzdGVtIChjb25zdCBjaGFyICopOwoK
CmludCBtYmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgbWJzdG93Y3MgKHdjaGFy
X3QgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKaW50IHdj
dG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1idG93YyAod2NoYXJfdCAqIF9fcmVzdHJpY3Qs
IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QpOwpzaXplX3Qgd2NzdG9tYnMgKGNoYXIg
KiBfX3Jlc3RyaWN0LCBjb25zdCB3Y2hhcl90ICogX19yZXN0cmljdCwgc2l6ZV90KTsKIyAxNTAg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmludCByYW5k
X3IgKHVuc2lnbmVkIGludCAqKTsKIyAxNTkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMyA0CmRvdWJsZSBfZHJhbmQ0OCAodm9pZCk7CmRvdWJsZSBfZXJhbmQ0
OCAodW5zaWduZWQgc2hvcnRbM10pOwpsb25nIF9qcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7
CnZvaWQgX2xjb25nNDggKHVuc2lnbmVkIHNob3J0WzddKTsKbG9uZyBfbHJhbmQ0OCAodm9pZCk7
CmxvbmcgX21yYW5kNDggKHZvaWQpOwpsb25nIF9ucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7
CnVuc2lnbmVkIHNob3J0ICoKICAgICAgICAgX3NlZWQ0OCAodW5zaWduZWQgc2hvcnRbM10pOwp2
b2lkIF9zcmFuZDQ4IChsb25nKTsKCmludCBfcHV0ZW52IChjb25zdCBjaGFyICopOwojIDE4MCAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKbG9uZyBfYTY0
bCAoY29uc3QgY2hhciAqKTsKY2hhciAqX2w2NGEgKGxvbmcpOwoKY2hhciAqX2luaXRzdGF0ZSAo
dW5zaWduZWQgbG9uZywgY2hhciAqLCBzaXplX3QpOwpsb25nIF9yYW5kb20gKHZvaWQpOwpjaGFy
ICpfc2V0c3RhdGUgKGNoYXIgKik7CnZvaWQgX3NyYW5kb20gKHVuc2lnbmVkIGxvbmcpOwoKY2hh
ciAqbWtkdGVtcCAoY2hhciAqKTsKaW50IG1rc3RlbXAgKGNoYXIgKik7CgpjaGFyICpta3RlbXAg
KGNoYXIgKik7CgoKaW50IHNldGtleSAoY29uc3QgY2hhciAqKTsKCmNoYXIgKl9yZWFscGF0aCAo
Y29uc3QgY2hhciAqLCBjaGFyICopOwoKaW50IF90dHlzbG90ICh2b2lkKTsKCnZvaWQgKl92YWxs
b2MgKHNpemVfdCk7CiMgMjA5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMgNApsb25nIGxvbmcgaW50IF9hdG9sbCAoY29uc3QgY2hhciAqKTsKCmxvbmcgbG9u
ZyBpbnQgX2xsYWJzIChsb25nIGxvbmcgaW50KTsKCmxsZGl2X3QgX2xsZGl2IChsb25nIGxvbmcg
aW50LCBsb25nIGxvbmcgaW50KTsKCmxvbmcgbG9uZyBpbnQgX3N0cnRvbGwgKGNvbnN0IGNoYXIg
KiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cgp1bnNpZ25lZCBsb25nIGxv
bmcgaW50CiAgICAgICAgICAgICAgICBfc3RydG91bGwgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0
LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7CiMgMjI5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp2b2lkICphbGxvY2EgKHNpemVfdCk7CgoKY2hhciAq
X2dldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqX2NnZXRjYXAgKGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBpbnQpOwppbnQgX2NnZXRjbG9zZSAodm9pZCk7CmludCBfY2dldGVudCAoY2hhciAq
KiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IF9jZ2V0Zmlyc3QgKGNoYXIgKiosIGNoYXIg
KiopOwppbnQgX2NnZXRtYXRjaCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX2Nn
ZXRuZXh0IChjaGFyICoqLCBjaGFyICoqKTsKaW50IF9jZ2V0bnVtIChjaGFyICosIGNvbnN0IGNo
YXIgKiwgbG9uZyAqKTsKaW50IF9jZ2V0c2V0IChjb25zdCBjaGFyICopOwppbnQgX2NnZXRzdHIg
KGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IF9jZ2V0dXN0ciAoY2hhciAqLCBj
b25zdCBjaGFyICosIGNoYXIgKiopOwoKaW50IF9kYWVtb24gKGludCwgaW50KTsKIGNoYXIgKl9k
ZXZuYW1lIChkZXZfdCwgX19tb2RlX3QpOwppbnQgX2dldGxvYWRhdmcgKGRvdWJsZSBbXSwgaW50
KTsKCnZvaWQgY2ZyZWUgKHZvaWQgKik7CgppbnQgX2hlYXBzb3J0ICh2b2lkICosIHNpemVfdCwg
c2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgppbnQgX21lcmdl
c29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKikpOwoKaW50IF9yYWRpeHNvcnQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGludCwg
Y29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7CgppbnQgX3NyYWRpeHNvcnQgKGNvbnN0
IHVuc2lnbmVkIGNoYXIgKiosIGludCwgY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7
CgoKaW50IF9zZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp2b2lkIF91
bnNldGVudiAoY29uc3QgY2hhciAqKTsKdm9pZCBfc2V0cHJvY3RpdGxlIChjb25zdCBjaGFyICos
IC4uLikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAx
LCAyKSkpOwpjb25zdCBjaGFyICpfZ2V0cHJvZ25hbWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f
Y29uc3RfXykpOwp2b2lkIHNldHByb2duYW1lIChjb25zdCBjaGFyICopOwoKcXVhZF90IF9xYWJz
IChxdWFkX3QpOwpxdWFkX3Qgc3RydG9xIChjb25zdCBjaGFyICogX19yZXN0cmljdCwgY2hhciAq
KiBfX3Jlc3RyaWN0LCBpbnQpOwp1X3F1YWRfdCBzdHJ0b3VxIChjb25zdCBjaGFyICogX19yZXN0
cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKaW50IF9sNjRhX3IgKGxvbmcsIGNoYXIg
KiwgaW50KTsKCnNpemVfdCBzaHF1b3RlIChjb25zdCBjaGFyICphcmcsIGNoYXIgKmJ1Ziwgc2l6
ZV90IGJ1ZnNpemUpOwpzaXplX3Qgc2hxdW90ZXYgKGludCBhcmdjLCBjaGFyICogY29uc3QgKiBh
cmd2LCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKCgoKCgoKcWRpdl90IF9xZGl2IChxdWFk
X3QsIHF1YWRfdCk7CgoKIyA1NSAiL3UxL25ldGJzZC9zcmMvbGliL2xpYmMvZ2VuL2dldHVzZXJz
aGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAxIDMgNAojIDUwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRl
c3QuaCIgMSAzIDQKIyA1MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAyIDMgNAoKCnZvaWQgKm1lbWNociAoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7Cmlu
dCBtZW1jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1j
cHkgKHZvaWQgKiBfX3Jlc3RyaWN0LCBjb25zdCB2b2lkICogX19yZXN0cmljdCwgc2l6ZV90KTsK
dm9pZCAqbWVtbW92ZSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbXNl
dCAodm9pZCAqLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmNhdCAoY2hhciAqIF9fcmVzdHJpY3Qs
IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0KTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICosIGlu
dCk7CmludCBzdHJjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0cmNvbGwg
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5IChjaGFyICogX19yZXN0
cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QpOwpzaXplX3Qgc3RyY3NwbiAoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwogY2hhciAqc3RyZXJyb3IgKGludCk7CnNpemVfdCBzdHJsZW4g
KGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cm5jYXQgKGNoYXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJuY3B5IChjaGFyICogX19yZXN0cmljdCwgY29u
c3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVfdCk7CmNoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RycmNociAoY29uc3QgY2hhciAqLCBpbnQpOwpzaXpl
X3Qgc3Ryc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnN0ciAoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJ0b2sgKGNoYXIgKiBfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICogX19yZXN0cmljdCk7CgoKCmNoYXIgKl9zdHJ0b2tfciAoY2hhciAqLCBj
b25zdCBjaGFyICosIGNoYXIgKiopOwoKc2l6ZV90IHN0cnhmcm0gKGNoYXIgKiBfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKCgoKdm9pZCAqbWVtY2NweSAodm9p
ZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqX3N0cmR1cCAoY29uc3QgY2hh
ciAqKTsKCgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZ3Mu
aCIgMSAzIDQKIyA0MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZ3Mu
aCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJl
dGVzdC5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Ry
aW5ncy5oIiAyIDMgNAojIDU2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Ry
aW5ncy5oIiAzIDQKCmludCBiY21wIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90
KTsKdm9pZCBiY29weSAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgYnplcm8g
KHZvaWQgKiwgc2l6ZV90KTsKaW50IGZmcyAoaW50KTsKY2hhciAqaW5kZXggKGNvbnN0IGNoYXIg
KiwgaW50KTsKY2hhciAqcmluZGV4IChjb25zdCBjaGFyICosIGludCk7CmludCBfc3RyY2FzZWNt
cCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX3N0cm5jYXNlY21wIChjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgNjkgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDIgMyA0CiMgOTAgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKc2l6ZV90IF9zdHJsY2F0IChjaGFyICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IF9zdHJsY3B5IChjaGFyICosIGNvbnN0IGNoYXIg
Kiwgc2l6ZV90KTsKY2hhciAqX3N0cnNlcCAoY2hhciAqKiwgY29uc3QgY2hhciAqKTsKCgojIDU2
ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nbGlzdC5oIiAxIDMgNAojIDQyICIv
dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nbGlzdC5oIiAzIDQKdHlwZWRl
ZiBzdHJ1Y3QgX3N0cmluZ2xpc3QgewogICAgICAgIGNoYXIgKipzbF9zdHI7CiAgICAgICAgc2l6
ZV90IHNsX21heDsKICAgICAgICBzaXplX3Qgc2xfY3VyOwp9IFN0cmluZ0xpc3Q7CgoKU3RyaW5n
TGlzdCAqX3NsX2luaXQgKHZvaWQpOwppbnQgX3NsX2FkZCAoU3RyaW5nTGlzdCAqLCBjaGFyICop
Owp2b2lkIF9zbF9mcmVlIChTdHJpbmdMaXN0ICosIGludCk7CmNoYXIgKl9zbF9maW5kIChTdHJp
bmdMaXN0ICosIGNoYXIgKik7CgojIDU3ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0
dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDEgMyA0CiMgODAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mZWF0
dXJldGVzdC5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDIgMyA0CiMgOTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMyA0Cgogdm9pZCBfZXhpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJu
X18pKTsKaW50IGFjY2VzcyAoY29uc3QgY2hhciAqLCBpbnQpOwp1bnNpZ25lZCBpbnQgX2FsYXJt
ICh1bnNpZ25lZCBpbnQpOwppbnQgY2hkaXIgKGNvbnN0IGNoYXIgKik7CgoKCmludCBjaG93biAo
Y29uc3QgY2hhciAqLCBfX3VpZF90LCBfX2dpZF90KTsKCmludCBjbG9zZSAoaW50KTsKc2l6ZV90
IF9jb25mc3RyIChpbnQsIGNoYXIgKiwgc2l6ZV90KTsKCgoKCgppbnQgZHVwIChpbnQpOwppbnQg
ZHVwMiAoaW50LCBpbnQpOwppbnQgX2V4ZWNsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
Li4uKTsKaW50IF9leGVjbGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQg
X2V4ZWNscCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfZXhlY3YgKGNv
bnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZXhlY3ZlIChjb25zdCBjaGFyICosIGNo
YXIgKiBjb25zdCAqLCBjaGFyICogY29uc3QgKik7CmludCBfZXhlY3ZwIChjb25zdCBjaGFyICos
IGNoYXIgKiBjb25zdCAqKTsKX19waWRfdCBfZm9yayAodm9pZCk7CmxvbmcgZnBhdGhjb25mIChp
bnQsIGludCk7CmNoYXIgKl9nZXRjd2QgKGNoYXIgKiwgc2l6ZV90KTsKX19naWRfdCBnZXRlZ2lk
ICh2b2lkKTsKX191aWRfdCBnZXRldWlkICh2b2lkKTsKX19naWRfdCBnZXRnaWQgKHZvaWQpOwpp
bnQgZ2V0Z3JvdXBzIChpbnQsIF9fZ2lkX3QgW10pOwogY2hhciAqX2dldGxvZ2luICh2b2lkKTsK
X19waWRfdCBnZXRwZ3JwICh2b2lkKTsKX19waWRfdCBnZXRwaWQgKHZvaWQpOwpfX3BpZF90IGdl
dHBwaWQgKHZvaWQpOwpfX3VpZF90IGdldHVpZCAodm9pZCk7CmludCBfaXNhdHR5IChpbnQpOwpp
bnQgbGluayAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpsb25nIHBhdGhjb25mIChjb25z
dCBjaGFyICosIGludCk7CmludCBfcGF1c2UgKHZvaWQpOwppbnQgX3BpcGUgKGludCAqKTsKc3Np
emVfdCByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKaW50IHJtZGlyIChjb25zdCBjaGFyICop
OwppbnQgc2V0Z2lkIChfX2dpZF90KTsKaW50IHNldHBnaWQgKF9fcGlkX3QsIF9fcGlkX3QpOwpf
X3BpZF90IHNldHNpZCAodm9pZCk7CmludCBzZXR1aWQgKF9fdWlkX3QpOwp1bnNpZ25lZCBpbnQg
X3NsZWVwICh1bnNpZ25lZCBpbnQpOwpsb25nIF9fc3lzY29uZiAoaW50KTsKX19waWRfdCBfdGNn
ZXRwZ3JwIChpbnQpOwppbnQgX3Rjc2V0cGdycCAoaW50LCBfX3BpZF90KTsKIGNoYXIgKl90dHlu
YW1lIChpbnQpOwppbnQgdW5saW5rIChjb25zdCBjaGFyICopOwpzc2l6ZV90IHdyaXRlIChpbnQs
IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKCgoKCgoKCmludCBfZ2V0b3B0IChpbnQsIGNoYXIgKiBj
b25zdCBbXSwgY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQg
b3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTkxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAppbnQgZmRhdGFzeW5j
IChpbnQpOwppbnQgZnN5bmMgKGludCk7CgoKCgoKCgppbnQgY2hyb290IChjb25zdCBjaGFyICop
OwppbnQgX25pY2UgKGludCk7CiMgMjE4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMgNAogY2hhciAqY3J5cHQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKaW50IGVuY3J5cHQgKGNoYXIgKiwgaW50KTsKY2hhciAqX2dldHBhc3MgKGNvbnN0IGNoYXIg
Kik7Cl9fcGlkX3QgZ2V0c2lkIChfX3BpZF90KTsKIyAyNDEgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmludCBfYnJrICh2b2lkICopOwppbnQgZmNoZGly
IChpbnQpOwoKCgppbnQgZmNob3duIChpbnQsIF9fdWlkX3QsIF9fZ2lkX3QpOwoKaW50IGdldGR0
YWJsZXNpemUgKHZvaWQpOwpsb25nIGdldGhvc3RpZCAodm9pZCk7CmludCBfZ2V0aG9zdG5hbWUg
KGNoYXIgKiwgc2l6ZV90KTsKIGludAogICAgICAgICBfZ2V0cGFnZXNpemUgKHZvaWQpOwpfX3Bp
ZF90IGdldHBnaWQgKF9fcGlkX3QpOwoKCgppbnQgbGNob3duIChjb25zdCBjaGFyICosIF9fdWlk
X3QsIF9fZ2lkX3QpOwoKaW50IF9sb2NrZiAoaW50LCBpbnQsIF9fb2ZmX3QpOwppbnQgcmVhZGxp
bmsgKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwp2b2lkICpfc2JyayAoX19pbnRwdHJf
dCk7CgppbnQgc2V0cGdycCAoX19waWRfdCBwaWQsIF9fcGlkX3QgcGdycCk7CmludCBzZXRyZWdp
ZCAoX19naWRfdCwgX19naWRfdCk7CmludCBzZXRyZXVpZCAoX191aWRfdCwgX191aWRfdCk7CnZv
aWQgc3dhYiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CmludCBzeW1saW5rIChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgc3luYyAodm9pZCk7CnVzZWNvbmRzX3QgX3Vh
bGFybSAodXNlY29uZHNfdCwgdXNlY29uZHNfdCk7CmludCBfdXNsZWVwICh1c2Vjb25kc190KTsK
CgoKCl9fcGlkX3QgdmZvcmsgKHZvaWQpIF9fYXNtX18oIl9fdmZvcmsxNCIpOwoKCgpjaGFyICpn
ZXR3ZCAoY2hhciAqKTsKCgoKCnN0cnVjdCB0aW1ldmFsOwoKaW50IHNlbGVjdCAoaW50LCBmZF9z
ZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAyOTUgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnNzaXplX3QgX3ByZWFk
IChpbnQsIHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKc3NpemVfdCBfcHdyaXRlIChpbnQsIGNv
bnN0IHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKCgoKCgoKCmludCBhY2N0IChjb25zdCBjaGFy
ICopOwppbnQgZGVzX2NpcGhlciAoY29uc3QgY2hhciAqLCBjaGFyICosIGxvbmcsIGludCk7Cmlu
dCBkZXNfc2V0a2V5IChjb25zdCBjaGFyICopOwp2b2lkIF9lbmR1c2Vyc2hlbGwgKHZvaWQpOwpp
bnQgZXhlY3QgKGNvbnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiBjb25zdCAqKTsK
aW50IGZjaHJvb3QgKGludCk7CmludCBfZ2V0ZG9tYWlubmFtZSAoY2hhciAqLCBzaXplX3QpOwpp
bnQgX2dldGdyb3VwbGlzdCAoY29uc3QgY2hhciAqLCBfX2dpZF90LCBfX2dpZF90ICosIGludCAq
KTsKX19tb2RlX3QgX2dldG1vZGUgKGNvbnN0IHZvaWQgKiwgX19tb2RlX3QpOwppbnQgX2dldHN1
Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogY2hhciAqX2dldHVzZXJz
aGVsbCAodm9pZCk7CmludCBfaW5pdGdyb3VwcyAoY29uc3QgY2hhciAqLCBfX2dpZF90KTsKaW50
IGlydXNlcm9rICh1X2ludDMyX3QsIGludCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpp
bnQgaXNzZXR1Z2lkICh2b2lkKTsKaW50IG5mc3N2YyAoaW50LCB2b2lkICopOwppbnQgcHJvZmls
IChjaGFyICosIHNpemVfdCwgdV9sb25nLCB1X2ludCk7CgoKCnZvaWQgX3BzaWduYWwgKHVuc2ln
bmVkIGludCwgY29uc3QgY2hhciAqKTsKCmludCByY21kIChjaGFyICoqLCBpbnQsIGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCAqKTsKCmludCByZWJvb3QgKGlu
dCwgY2hhciAqKTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50
ICopOwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKaW50IF9zZXRkb21haW5uYW1lIChjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBz
ZXRlZ2lkIChfX2dpZF90KTsKaW50IHNldGV1aWQgKF9fdWlkX3QpOwppbnQgc2V0Z3JvdXBzIChp
bnQsIGNvbnN0IF9fZ2lkX3QgKik7CmludCBzZXRob3N0aWQgKGxvbmcpOwppbnQgX3NldGhvc3Ru
YW1lIChjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBzZXRsb2dpbiAoY29uc3QgY2hhciAqKTsK
dm9pZCAqX3NldG1vZGUgKGNvbnN0IGNoYXIgKik7CmludCBzZXRyZ2lkIChfX2dpZF90KTsKaW50
IHNldHJ1aWQgKF9fdWlkX3QpOwp2b2lkIF9zZXR1c2Vyc2hlbGwgKHZvaWQpOwp2b2lkIHN0cm1v
ZGUgKF9fbW9kZV90LCBjaGFyICopOwogY2hhciAqX3N0cnNpZ25hbCAoaW50KTsKaW50IHN3YXBj
dGwgKGludCwgY29uc3Qgdm9pZCAqLCBpbnQpOwppbnQgc3dhcG9uIChjb25zdCBjaGFyICopOwpp
bnQgc3lzY2FsbCAoaW50LCAuLi4pOwpxdWFkX3QgX19zeXNjYWxsIChxdWFkX3QsIC4uLik7Cmlu
dCB1bmRlbGV0ZSAoY29uc3QgY2hhciAqKTsKCgppbnQgcmNtZF9hZiAoY2hhciAqKiwgaW50LCBj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKiwgaW50KTsKCmlu
dCBycmVzdnBvcnRfYWYgKGludCAqLCBpbnQpOwppbnQgaXJ1c2Vyb2tfc2EgKGNvbnN0IHZvaWQg
KiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgpleHRlcm4gY29u
c3QgY2hhciAqY29uc3QgKl9zeXNfc2lnbGlzdCBfX2FzbV9fKCJfX3N5c19zaWdsaXN0MTQiKTsK
CmV4dGVybiBpbnQgb3B0cmVzZXQ7CmV4dGVybiBjaGFyICpzdWJvcHRhcmc7CgoKCiMgNTggIi91
MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCiMgMSAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDUxICIvdTEvZGlz
a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAojIDEgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA1MiAiL3Ux
L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMgNAojIDYwICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIGNoYXIg
KiB2YV9saXN0OwojIDYxICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxs
LmMiIDIKCgoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9oZXNpb2Qu
aCIgMSAzIDQKIyA4MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2hlc2lvZC5o
IiAzIDQKCmludCBfaGVzaW9kX2luaXQgKHZvaWQgKiopOwpjaGFyICoqX2hlc2lvZF9yZXNvbHZl
ICh2b2lkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBfaGVzaW9kX2ZyZWVf
bGlzdCAodm9pZCAqLCBjaGFyICoqKTsKY2hhciAqX2hlc2lvZF90b19iaW5kICh2b2lkICosIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBfaGVzaW9kX2VuZCAodm9pZCAqKTsKCgpp
bnQgX2hlc19pbml0ICh2b2lkKTsKY2hhciAqX2hlc190b19iaW5kIChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CmNoYXIgKipfaGVzX3Jlc29sdmUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKaW50IF9oZXNfZXJyb3IgKHZvaWQpOwp2b2lkIF9oZXNfZnJlZSAoY2hhciAqKik7Cgoj
IDY3ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKCgojIDEg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDEgMyA0CiMgNDQg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDMgNAojIDEgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMSAzIDQKIyA0MyAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy90eXBlcy5oIiAzIDQKdHlwZWRl
ZiBfX2ludDMyX3QgYm9vbF90Owp0eXBlZGVmIF9faW50MzJfdCBlbnVtX3Q7Cgp0eXBlZGVmIHVf
aW50MzJfdCBycGNwcm9nX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHJwY3ZlcnNfdDsKdHlwZWRlZiB1
X2ludDMyX3QgcnBjcHJvY190Owp0eXBlZGVmIHVfaW50MzJfdCBycGNwcm90X3Q7CnR5cGVkZWYg
dV9pbnQzMl90IHJwY3BvcnRfdDsKdHlwZWRlZiBfX2ludDMyX3QgcnBjX2lubGluZV90OwojIDY5
ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDMgNAojIDEg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRjb25maWcuaCIgMSAzIDQKIyAx
MiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGNvbmZpZy5oIiAzIDQKc3Ry
dWN0IG5ldGNvbmZpZyB7CiAgICAgICAgY2hhciAqbmNfbmV0aWQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBuY19zZW1hbnRpY3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuY19mbGFnOwogICAgICAg
IGNoYXIgKm5jX3Byb3RvZm1seTsKICAgICAgICBjaGFyICpuY19wcm90bzsKICAgICAgICBjaGFy
ICpuY19kZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuY19ubG9va3VwczsKICAgICAgICBj
aGFyICoqbmNfbG9va3VwczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5jX3VudXNlZFs5XTsKfTsK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbmV0Y29uZmlnICoqbmNfaGVhZDsKICAg
ICAgICBzdHJ1Y3QgbmV0Y29uZmlnICoqbmNfY3VycjsKfSBOQ09ORl9IQU5ETEU7CiMgODAgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRjb25maWcuaCIgMyA0Cgp2b2lkICpf
c2V0bmV0Y29uZmlnICh2b2lkKTsKc3RydWN0IG5ldGNvbmZpZyAqX2dldG5ldGNvbmZpZyAodm9p
ZCAqKTsKc3RydWN0IG5ldGNvbmZpZyAqX2dldG5ldGNvbmZpZ2VudCAoY2hhciAqKTsKdm9pZCBf
ZnJlZW5ldGNvbmZpZ2VudCAoc3RydWN0IG5ldGNvbmZpZyAqKTsKaW50IF9lbmRuZXRjb25maWcg
KHZvaWQgKik7Cgp2b2lkICpfc2V0bmV0cGF0aCAodm9pZCk7CnN0cnVjdCBuZXRjb25maWcgKl9n
ZXRuZXRwYXRoICh2b2lkICopOwppbnQgZW5kbmV0cGF0aCh2b2lkICopOwoKdm9pZCBfbmNfcGVy
cm9yIChjb25zdCBjaGFyICopOwpjaGFyICpfbmNfc3BlcnJvciAodm9pZCk7CgojIDcwICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDIgMyA0CiMgODAgIi91
MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMyA0CnN0cnVjdCBu
ZXRidWYgewogICAgICAgIHVuc2lnbmVkIGludCBtYXhsZW47CiAgICAgICAgdW5zaWduZWQgaW50
IGxlbjsKICAgICAgICB2b2lkICpidWY7Cn07CgoKCgoKCnN0cnVjdCB0X2JpbmQgewogICAgICAg
IHN0cnVjdCBuZXRidWYgYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcWxlbjsKfTsKCgoKCgpz
dHJ1Y3QgX19ycGNfc29ja2luZm8gewogICAgICAgIGludCBzaV9hZjsKICAgICAgICBpbnQgc2lf
cHJvdG87CiAgICAgICAgaW50IHNpX3NvY2t0eXBlOwogICAgICAgIGludCBzaV9hbGVuOwp9Owoj
IDQ1ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoj
IDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMyA0
CiMgNDkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMg
NAp0eXBlZGVmIF9fc2FfZmFtaWx5X3Qgc2FfZmFtaWx5X3Q7CiMgMTMxICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKc3RydWN0IGluX2FkZHIgewog
ICAgICAgIHVfaW50MzJfdCBzX2FkZHI7Cn0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoj
IDIwMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMyA0
CnN0cnVjdCBzb2NrYWRkcl9pbiB7CiAgICAgICAgdV9pbnQ4X3Qgc2luX2xlbjsKICAgICAgICBf
X3NhX2ZhbWlseV90IHNpbl9mYW1pbHk7CiAgICAgICAgdV9pbnQxNl90IHNpbl9wb3J0OwogICAg
ICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwogICAgICAgIF9faW50OF90IHNpbl96ZXJvWzhd
Owp9OwojIDIyMCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGluZXQvaW4u
aCIgMyA0CnN0cnVjdCBpcF9vcHRzIHsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAg
ICAgICAgX19pbnQ4X3QgaXBfb3B0c1s0MF07Cn07CiMgMjU5ICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKc3RydWN0IGlwX21yZXEgewogICAgICAg
IHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CiAgICAgICAgc3RydWN0IGluX2FkZHIgaW1y
X2ludGVyZmFjZTsKfTsKIyAzODggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u
ZXRpbmV0L2luLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u
ZXRpbmV0Ni9pbjYuaCIgMSAzIDQKIyAxMjAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CnN0cnVjdCBpbjZfYWRkciB7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgdV9pbnQ4X3QgX191Nl9hZGRyOFsxNl07CiAgICAgICAgICAgICAg
ICB1X2ludDE2X3QgX191Nl9hZGRyMTZbOF07CiAgICAgICAgICAgICAgICB1X2ludDMyX3QgX191
Nl9hZGRyMzJbNF07CiAgICAgICAgfSBfX3U2X2FkZHI7Cn07CiMgMTQzICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldDYvaW42LmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJf
aW42IHsKICAgICAgICB1X2ludDhfdCBzaW42X2xlbjsKICAgICAgICBfX3NhX2ZhbWlseV90IHNp
bjZfZmFtaWx5OwogICAgICAgIHVfaW50MTZfdCBzaW42X3BvcnQ7CiAgICAgICAgdV9pbnQzMl90
IHNpbjZfZmxvd2luZm87CiAgICAgICAgc3RydWN0IGluNl9hZGRyIHNpbjZfYWRkcjsKICAgICAg
ICB1X2ludDMyX3Qgc2luNl9zY29wZV9pZDsKfTsKIyAyMjEgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42
X2FkZHIgX2luNmFkZHJfYW55OwpleHRlcm4gY29uc3Qgc3RydWN0IGluNl9hZGRyIF9pbjZhZGRy
X2xvb3BiYWNrOwpleHRlcm4gY29uc3Qgc3RydWN0IGluNl9hZGRyIF9pbjZhZGRyX25vZGVsb2Nh
bF9hbGxub2RlczsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBfaW42YWRkcl9saW5rbG9j
YWxfYWxsbm9kZXM7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9saW5rbG9j
YWxfYWxscm91dGVyczsKIyAzNjUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u
ZXRpbmV0Ni9pbjYuaCIgMyA0CnN0cnVjdCByb3V0ZV9pbjYgewogICAgICAgIHN0cnVjdCBydGVu
dHJ5ICpyb19ydDsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHJvX2RzdDsKfTsKIyA0MTkg
Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CnN0
cnVjdCBpcHY2X21yZXEgewogICAgICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRy
OwogICAgICAgIHVuc2lnbmVkIGludCBpcHY2bXJfaW50ZXJmYWNlOwp9OwoKCgoKc3RydWN0IGlu
Nl9wa3RpbmZvIHsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaXBpNl9hZGRyOwogICAgICAgIHVu
c2lnbmVkIGludCBpcGk2X2lmaW5kZXg7Cn07CiMgNjM4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvbmV0aW5ldDYvaW42LmgiIDMgNAoKc3RydWN0IGNtc2doZHI7CgpleHRlcm4g
aW50IF9pbmV0Nl9vcHRpb25fc3BhY2UgKGludCk7CmV4dGVybiBpbnQgX2luZXQ2X29wdGlvbl9p
bml0ICh2b2lkICosIHN0cnVjdCBjbXNnaGRyICoqLCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9v
cHRpb25fYXBwZW5kIChzdHJ1Y3QgY21zZ2hkciAqLCBjb25zdCB1X2ludDhfdCAqLCBpbnQsIGlu
dCk7CgpleHRlcm4gdV9pbnQ4X3QgKl9pbmV0Nl9vcHRpb25fYWxsb2MgKHN0cnVjdCBjbXNnaGRy
ICosIGludCwgaW50LCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9vcHRpb25fbmV4dCAoY29uc3Qg
c3RydWN0IGNtc2doZHIgKiwgdV9pbnQ4X3QgKiopOwpleHRlcm4gaW50IF9pbmV0Nl9vcHRpb25f
ZmluZCAoY29uc3Qgc3RydWN0IGNtc2doZHIgKiwgdV9pbnQ4X3QgKiosIGludCk7CgpleHRlcm4g
c2l6ZV90IF9pbmV0Nl9ydGhkcl9zcGFjZSAoaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGNtc2do
ZHIgKl9pbmV0Nl9ydGhkcl9pbml0ICh2b2lkICosIGludCk7CmV4dGVybiBpbnQgX2luZXQ2X3J0
aGRyX2FkZCAoc3RydWN0IGNtc2doZHIgKiwgY29uc3Qgc3RydWN0IGluNl9hZGRyICosIHVuc2ln
bmVkIGludCk7CgpleHRlcm4gaW50IF9pbmV0Nl9ydGhkcl9sYXN0aG9wIChzdHJ1Y3QgY21zZ2hk
ciAqLCB1bnNpZ25lZCBpbnQpOwoKCgpleHRlcm4gaW50IF9pbmV0Nl9ydGhkcl9zZWdtZW50cyAo
Y29uc3Qgc3RydWN0IGNtc2doZHIgKik7CmV4dGVybiBzdHJ1Y3QgaW42X2FkZHIgKl9pbmV0Nl9y
dGhkcl9nZXRhZGRyIChzdHJ1Y3QgY21zZ2hkciAqLCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9y
dGhkcl9nZXRmbGFncyAoY29uc3Qgc3RydWN0IGNtc2doZHIgKiwgaW50KTsKCiMgMzg5ICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMgNAojIDQ2ICIv
dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMSAzIDQKIyA4MCAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMyA0CmVudW0geGRy
X29wIHsKICAgICAgICBYRFJfRU5DT0RFPTAsCiAgICAgICAgWERSX0RFQ09ERT0xLAogICAgICAg
IFhEUl9GUkVFPTIKfTsKIyA5OSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3Jw
Yy94ZHIuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fcnBjX3hkciB7CiAgICAgICAgZW51bSB4ZHJf
b3AgeF9vcDsKICAgICAgICBjb25zdCBzdHJ1Y3QgeGRyX29wcyB7CgogICAgICAgICAgICAgICAg
Ym9vbF90ICgqeF9nZXRsb25nKSAoc3RydWN0IF9fcnBjX3hkciAqLCBsb25nICopOwoKICAgICAg
ICAgICAgICAgIGJvb2xfdCAoKnhfcHV0bG9uZykgKHN0cnVjdCBfX3JwY194ZHIgKiwgY29uc3Qg
bG9uZyAqKTsKCiAgICAgICAgICAgICAgICBib29sX3QgKCp4X2dldGJ5dGVzKSAoc3RydWN0IF9f
cnBjX3hkciAqLCBjaGFyICosIHVfaW50KTsKCiAgICAgICAgICAgICAgICBib29sX3QgKCp4X3B1
dGJ5dGVzKSAoc3RydWN0IF9fcnBjX3hkciAqLCBjb25zdCBjaGFyICosIHVfaW50KTsKCiAgICAg
ICAgICAgICAgICB1X2ludCAoKnhfZ2V0cG9zdG4pIChzdHJ1Y3QgX19ycGNfeGRyICopOwoKICAg
ICAgICAgICAgICAgIGJvb2xfdCAoKnhfc2V0cG9zdG4pIChzdHJ1Y3QgX19ycGNfeGRyICosIHVf
aW50KTsKCiAgICAgICAgICAgICAgICBfX2ludDMyX3QgKigqeF9pbmxpbmUpIChzdHJ1Y3QgX19y
cGNfeGRyICosIHVfaW50KTsKCiAgICAgICAgICAgICAgICB2b2lkICgqeF9kZXN0cm95KSAoc3Ry
dWN0IF9fcnBjX3hkciAqKTsKICAgICAgICAgICAgICAgIGJvb2xfdCAoKnhfY29udHJvbCkgKHN0
cnVjdCBfX3JwY194ZHIgKiwgaW50LCB2b2lkICopOwogICAgICAgIH0gKnhfb3BzOwogICAgICAg
IGNoYXIgKiB4X3B1YmxpYzsKICAgICAgICB2b2lkICogeF9wcml2YXRlOwogICAgICAgIGNoYXIg
KiB4X2Jhc2U7CiAgICAgICAgaW50IHhfaGFuZHk7Cn0gWERSOwojIDEzNiAiL3UxL2Rpc2tsZXNz
L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMyA0CnR5cGVkZWYgYm9vbF90ICgqeGRy
cHJvY190KSAoICk7CiMgMTU3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj
L3hkci5oIiAzIDQKc3RhdGljIF9faW5saW5lIGludAp4ZHJfZ2V0aW50MzIoWERSICp4ZHJzLCBf
X2ludDMyX3QgKmlwKQp7CiAgICAgICAgbG9uZyBsOwoKICAgICAgICBpZiAoISgqKHhkcnMpLT54
X29wcy0+eF9nZXRsb25nKSh4ZHJzLCAmbCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKCgwKSk7
CiAgICAgICAgKmlwID0gKF9faW50MzJfdClsOwogICAgICAgIHJldHVybiAoKDEpKTsKfQoKc3Rh
dGljIF9faW5saW5lIGludAp4ZHJfcHV0aW50MzIoWERSICp4ZHJzLCBfX2ludDMyX3QgKmlwKQp7
CiAgICAgICAgbG9uZyBsOwoKICAgICAgICBsID0gKGxvbmcpKmlwOwogICAgICAgIHJldHVybiAo
Kih4ZHJzKS0+eF9vcHMtPnhfcHV0bG9uZykoeGRycywgJmwpOwp9CiMgMjM4ICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3hkci5oIiAzIDQKc3RydWN0IHhkcl9kaXNjcmlt
IHsKICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgeGRycHJvY190IHByb2M7Cn07CiMgMjgxICIv
dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3hkci5oIiAzIDQKCmV4dGVybiBi
b29sX3QgX3hkcl92b2lkICh2b2lkKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2ludCAoWERSICosIGlu
dCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaW50IChYRFIgKiwgdV9pbnQgKik7CmV4dGVybiBi
b29sX3QgX3hkcl9sb25nIChYRFIgKiwgbG9uZyAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfbG9u
ZyAoWERSICosIHVfbG9uZyAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3Nob3J0IChYRFIgKiwgc2hv
cnQgKik7CmV4dGVybiBib29sX3QgX3hkcl91X3Nob3J0IChYRFIgKiwgdV9zaG9ydCAqKTsKZXh0
ZXJuIGJvb2xfdCBfeGRyX2ludDE2X3QgKFhEUiAqLCBfX2ludDE2X3QgKik7CmV4dGVybiBib29s
X3QgX3hkcl91X2ludDE2X3QgKFhEUiAqLCB1X2ludDE2X3QgKik7CmV4dGVybiBib29sX3QgX3hk
cl9pbnQzMl90IChYRFIgKiwgX19pbnQzMl90ICopOwpleHRlcm4gYm9vbF90IF94ZHJfdV9pbnQz
Ml90IChYRFIgKiwgdV9pbnQzMl90ICopOwpleHRlcm4gYm9vbF90IF94ZHJfaW50NjRfdCAoWERS
ICosIF9faW50NjRfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaW50NjRfdCAoWERSICosIHVf
aW50NjRfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2Jvb2wgKFhEUiAqLCBib29sX3QgKik7CmV4
dGVybiBib29sX3QgX3hkcl9lbnVtIChYRFIgKiwgZW51bV90ICopOwpleHRlcm4gYm9vbF90IF94
ZHJfYXJyYXkgKFhEUiAqLCBjaGFyICoqLCB1X2ludCAqLCB1X2ludCwgdV9pbnQsIHhkcnByb2Nf
dCk7CmV4dGVybiBib29sX3QgX3hkcl9ieXRlcyAoWERSICosIGNoYXIgKiosIHVfaW50ICosIHVf
aW50KTsKZXh0ZXJuIGJvb2xfdCBfeGRyX29wYXF1ZSAoWERSICosIGNoYXIgKiwgdV9pbnQpOwpl
eHRlcm4gYm9vbF90IF94ZHJfc3RyaW5nIChYRFIgKiwgY2hhciAqKiwgdV9pbnQpOwpleHRlcm4g
Ym9vbF90IF94ZHJfdW5pb24gKFhEUiAqLCBlbnVtX3QgKiwgY2hhciAqLCBjb25zdCBzdHJ1Y3Qg
eGRyX2Rpc2NyaW0gKiwgeGRycHJvY190KTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2NoYXIgKFhEUiAq
LCBjaGFyICopOwpleHRlcm4gYm9vbF90IF94ZHJfdV9jaGFyIChYRFIgKiwgdV9jaGFyICopOwpl
eHRlcm4gYm9vbF90IF94ZHJfdmVjdG9yIChYRFIgKiwgY2hhciAqLCB1X2ludCwgdV9pbnQsIHhk
cnByb2NfdCk7CmV4dGVybiBib29sX3QgX3hkcl9mbG9hdCAoWERSICosIGZsb2F0ICopOwpleHRl
cm4gYm9vbF90IF94ZHJfZG91YmxlIChYRFIgKiwgZG91YmxlICopOwpleHRlcm4gYm9vbF90IHhk
cl9xdWFkcnVwbGUgKFhEUiAqLCBsb25nIGRvdWJsZSAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3Jl
ZmVyZW5jZSAoWERSICosIGNoYXIgKiosIHVfaW50LCB4ZHJwcm9jX3QpOwpleHRlcm4gYm9vbF90
IF94ZHJfcG9pbnRlciAoWERSICosIGNoYXIgKiosIHVfaW50LCB4ZHJwcm9jX3QpOwpleHRlcm4g
Ym9vbF90IF94ZHJfd3JhcHN0cmluZyAoWERSICosIGNoYXIgKiopOwpleHRlcm4gdm9pZCBfeGRy
X2ZyZWUgKHhkcnByb2NfdCwgY2hhciAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2h5cGVyIChYRFIg
KiwgbG9uZ2xvbmdfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaHlwZXIgKFhEUiAqLCB1X2xv
bmdsb25nX3QgKik7CmV4dGVybiBib29sX3QgX3hkcl9sb25nbG9uZ190IChYRFIgKiwgbG9uZ2xv
bmdfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfbG9uZ2xvbmdfdCAoWERSICosIHVfbG9uZ2xv
bmdfdCAqKTsKCgoKCgoKCnN0cnVjdCBuZXRvYmogewogICAgICAgIHVfaW50IG5fbGVuOwogICAg
ICAgIGNoYXIgKm5fYnl0ZXM7Cn07CnR5cGVkZWYgc3RydWN0IG5ldG9iaiBuZXRvYmo7CmV4dGVy
biBib29sX3QgX3hkcl9uZXRvYmogKFhEUiAqLCBzdHJ1Y3QgbmV0b2JqICopOwoKCgoKCgoKZXh0
ZXJuIHZvaWQgX3hkcm1lbV9jcmVhdGUgKFhEUiAqLCBjaGFyICosIHVfaW50LCBlbnVtIHhkcl9v
cCk7CgoKCmV4dGVybiB2b2lkIF94ZHJzdGRpb19jcmVhdGUgKFhEUiAqLCBGSUxFICosIGVudW0g
eGRyX29wKTsKCgoKZXh0ZXJuIHZvaWQgX3hkcnJlY19jcmVhdGUgKFhEUiAqLCB1X2ludCwgdV9p
bnQsIGNoYXIgKiwgaW50ICgqKSAoY2hhciAqLCBjaGFyICosIGludCksIGludCAoKikgKGNoYXIg
KiwgY2hhciAqLCBpbnQpKTsKCgoKCmV4dGVybiBib29sX3QgX3hkcnJlY19lbmRvZnJlY29yZCAo
WERSICosIGludCk7CgoKZXh0ZXJuIGJvb2xfdCBfeGRycmVjX3NraXByZWNvcmQgKFhEUiAqKTsK
CgpleHRlcm4gYm9vbF90IF94ZHJyZWNfZW9mIChYRFIgKik7CmV4dGVybiB1X2ludCB4ZHJyZWNf
cmVhZGJ5dGVzIChYRFIgKiwgX19jYWRkcl90LCB1X2ludCk7CgojIDQ5ICIvdTEvZGlza2xlc3Mv
Y3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNz
L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9hdXRoLmgiIDEgMyA0CiMgNTUgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvYXV0aC5oIiAzIDQKZW51bSBhdXRoX3N0YXQgewog
ICAgICAgIEFVVEhfT0s9MCwKCgoKICAgICAgICBBVVRIX0JBRENSRUQ9MSwKICAgICAgICBBVVRI
X1JFSkVDVEVEQ1JFRD0yLAogICAgICAgIEFVVEhfQkFEVkVSRj0zLAogICAgICAgIEFVVEhfUkVK
RUNURURWRVJGPTQsCiAgICAgICAgQVVUSF9UT09XRUFLPTUsCgoKCiAgICAgICAgQVVUSF9JTlZB
TElEUkVTUD02LAogICAgICAgIEFVVEhfRkFJTEVEPTcKfTsKCnR5cGVkZWYgdV9pbnQzMl90IHVf
aW50MzI7Cgp1bmlvbiBkZXNfYmxvY2sgewogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICB1X2ludDMyIGhpZ2g7CiAgICAgICAgICAgICAgICB1X2ludDMyIGxvdzsKICAgICAgICB9IGtl
eTsKICAgICAgICBjaGFyIGNbOF07Cn07CnR5cGVkZWYgdW5pb24gZGVzX2Jsb2NrIGRlc19ibG9j
azsKCmV4dGVybiBib29sX3QgX3hkcl9kZXNfYmxvY2sgKFhEUiAqLCBkZXNfYmxvY2sgKik7CgoK
CgoKc3RydWN0IG9wYXF1ZV9hdXRoIHsKICAgICAgICBlbnVtX3Qgb2FfZmxhdm9yOwogICAgICAg
IF9fY2FkZHJfdCBvYV9iYXNlOwogICAgICAgIHVfaW50IG9hX2xlbmd0aDsKfTsKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBfX3JwY19hdXRoIHsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggYWhfY3Jl
ZDsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggYWhfdmVyZjsKICAgICAgICB1bmlvbiBkZXNf
YmxvY2sgYWhfa2V5OwogICAgICAgIGNvbnN0IHN0cnVjdCBhdXRoX29wcyB7CiAgICAgICAgICAg
ICAgICB2b2lkICgqYWhfbmV4dHZlcmYpIChzdHJ1Y3QgX19ycGNfYXV0aCAqKTsKCiAgICAgICAg
ICAgICAgICBpbnQgKCphaF9tYXJzaGFsKSAoc3RydWN0IF9fcnBjX2F1dGggKiwgWERSICopOwoK
ICAgICAgICAgICAgICAgIGludCAoKmFoX3ZhbGlkYXRlKSAoc3RydWN0IF9fcnBjX2F1dGggKiwg
c3RydWN0IG9wYXF1ZV9hdXRoICopOwoKCiAgICAgICAgICAgICAgICBpbnQgKCphaF9yZWZyZXNo
KSAoc3RydWN0IF9fcnBjX2F1dGggKik7CgogICAgICAgICAgICAgICAgdm9pZCAoKmFoX2Rlc3Ry
b3kpIChzdHJ1Y3QgX19ycGNfYXV0aCAqKTsKICAgICAgICB9ICphaF9vcHM7CiAgICAgICAgdm9p
ZCAqYWhfcHJpdmF0ZTsKfSBBVVRIOwojIDE1MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL3JwYy9hdXRoLmgiIDMgNApleHRlcm4gc3RydWN0IG9wYXF1ZV9hdXRoIF9udWxsX2F1
dGg7CiMgMTY5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGguaCIg
MyA0CgpzdHJ1Y3Qgc29ja2FkZHJfaW47CmV4dGVybiBBVVRIICpfYXV0aHVuaXhfY3JlYXRlIChj
aGFyICosIGludCwgaW50LCBpbnQsIGludCAqKTsKZXh0ZXJuIEFVVEggKl9hdXRodW5peF9jcmVh
dGVfZGVmYXVsdCAodm9pZCk7CmV4dGVybiBBVVRIICpfYXV0aG5vbmVfY3JlYXRlICh2b2lkKTsK
ZXh0ZXJuIEFVVEggKmF1dGhkZXNfY3JlYXRlIChjaGFyICosIHVfaW50LCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gKiwgZGVzX2Jsb2NrICopOwoKZXh0ZXJuIGJvb2xfdCBfeGRyX29wYXF1ZV9hdXRoIChY
RFIgKiwgc3RydWN0IG9wYXF1ZV9hdXRoICopOwoKCgoKc3RydWN0IHN2Y19yZXE7CnN0cnVjdCBy
cGNfbXNnOwplbnVtIGF1dGhfc3RhdCBfc3ZjYXV0aF9udWxsIChzdHJ1Y3Qgc3ZjX3JlcSAqLCBz
dHJ1Y3QgcnBjX21zZyAqKTsKZW51bSBhdXRoX3N0YXQgX3N2Y2F1dGhfc2hvcnQgKHN0cnVjdCBz
dmNfcmVxICosIHN0cnVjdCBycGNfbXNnICopOwplbnVtIGF1dGhfc3RhdCBfc3ZjYXV0aF91bml4
IChzdHJ1Y3Qgc3ZjX3JlcSAqLCBzdHJ1Y3QgcnBjX21zZyAqKTsKCiMgNTIgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMSAzIDQKIyA1NSAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNAplbnVtIGNsbnRfc3RhdCB7
CiAgICAgICAgUlBDX1NVQ0NFU1M9MCwKCgoKICAgICAgICBSUENfQ0FOVEVOQ09ERUFSR1M9MSwK
ICAgICAgICBSUENfQ0FOVERFQ09ERVJFUz0yLAogICAgICAgIFJQQ19DQU5UU0VORD0zLAogICAg
ICAgIFJQQ19DQU5UUkVDVj00LAogICAgICAgIFJQQ19USU1FRE9VVD01LAoKCgogICAgICAgIFJQ
Q19WRVJTTUlTTUFUQ0g9NiwKICAgICAgICBSUENfQVVUSEVSUk9SPTcsCiAgICAgICAgUlBDX1BS
T0dVTkFWQUlMPTgsCiAgICAgICAgUlBDX1BST0dWRVJTTUlTTUFUQ0g9OSwKICAgICAgICBSUENf
UFJPQ1VOQVZBSUw9MTAsCiAgICAgICAgUlBDX0NBTlRERUNPREVBUkdTPTExLAogICAgICAgIFJQ
Q19TWVNURU1FUlJPUj0xMiwKCgoKCiAgICAgICAgUlBDX1VOS05PV05IT1NUPTEzLAogICAgICAg
IFJQQ19VTktOT1dOUFJPVE89MTcsCiAgICAgICAgUlBDX1VOS05PV05BRERSID0gMTksCiAgICAg
ICAgUlBDX05PQlJPQURDQVNUID0gMjEsCgoKCgogICAgICAgIFJQQ19SUENCRkFJTFVSRT0xNCwK
CiAgICAgICAgUlBDX1BST0dOT1RSRUdJU1RFUkVEPTE1LAogICAgICAgIFJQQ19OMkFYTEFURUZB
SUxVUkUgPSAyMiwKCgoKCiAgICAgICAgUlBDX1RMSUVSUk9SID0gMjAsCgoKCgogICAgICAgIFJQ
Q19GQUlMRUQ9MTYsCgoKCgogICAgICAgIFJQQ19JTlBST0dSRVNTID0gMjQsCiAgICAgICAgUlBD
X1NUQUxFUkFDSEFORExFID0gMjUKfTsKCgoKCgpzdHJ1Y3QgcnBjX2VyciB7CiAgICAgICAgZW51
bSBjbG50X3N0YXQgcmVfc3RhdHVzOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGlu
dCBSRV9lcnJubzsKICAgICAgICAgICAgICAgIGVudW0gYXV0aF9zdGF0IFJFX3doeTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBsb3c7
CiAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBoaWdoOwogICAgICAgICAgICAgICAg
fSBSRV92ZXJzOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19pbnQzMl90IHMxOwogICAgICAgICAgICAgICAgICAgICAgICBfX2ludDMyX3QgczI7CiAg
ICAgICAgICAgICAgICB9IFJFX2xiOwogICAgICAgIH0gcnU7CgoKCgp9OwoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX19ycGNfY2xpZW50IHsKICAgICAgICBBVVRIICpjbF9hdXRoOwogICAgICAgIGNv
bnN0IHN0cnVjdCBjbG50X29wcyB7CgogICAgICAgICAgICAgICAgZW51bSBjbG50X3N0YXQgKCpj
bF9jYWxsKSAoc3RydWN0IF9fcnBjX2NsaWVudCAqLCBycGNwcm9jX3QsIHhkcnByb2NfdCwgX19j
YWRkcl90LCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCwgc3RydWN0IHRpbWV2YWwpOwoKCgogICAgICAg
ICAgICAgICAgdm9pZCAoKmNsX2Fib3J0KSAoc3RydWN0IF9fcnBjX2NsaWVudCAqKTsKCiAgICAg
ICAgICAgICAgICB2b2lkICgqY2xfZ2V0ZXJyKSAoc3RydWN0IF9fcnBjX2NsaWVudCAqLCBzdHJ1
Y3QgcnBjX2VyciAqKTsKCgogICAgICAgICAgICAgICAgYm9vbF90ICgqY2xfZnJlZXJlcykgKHN0
cnVjdCBfX3JwY19jbGllbnQgKiwgeGRycHJvY190LCBfX2NhZGRyX3QpOwoKCiAgICAgICAgICAg
ICAgICB2b2lkICgqY2xfZGVzdHJveSkgKHN0cnVjdCBfX3JwY19jbGllbnQgKik7CgogICAgICAg
ICAgICAgICAgYm9vbF90ICgqY2xfY29udHJvbCkgKHN0cnVjdCBfX3JwY19jbGllbnQgKiwgdV9p
bnQsIGNoYXIgKik7CgogICAgICAgIH0gKmNsX29wczsKICAgICAgICB2b2lkICpjbF9wcml2YXRl
OwogICAgICAgIGNoYXIgKmNsX25ldGlkOwogICAgICAgIGNoYXIgKmNsX3RwOwp9IENMSUVOVDsK
CgoKCgpzdHJ1Y3QgcnBjX3RpbWVycyB7CiAgICAgICAgdV9zaG9ydCBydF9zcnR0OwogICAgICAg
IHVfc2hvcnQgcnRfZGV2aWF0ZTsKICAgICAgICB1X2xvbmcgcnRfcnR4Y3VyOwp9OwojIDMxNyAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNAoKZXh0ZXJu
IENMSUVOVCAqX2NsbnRfY3JlYXRlIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29u
c3QgcnBjdmVyc190LCBjb25zdCBjaGFyICopOwojIDMzMiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x
L3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5UICpfY2xudF9jcmVhdGVf
dmVycyAoY29uc3QgY2hhciAqLCBjb25zdCBycGNwcm9nX3QsIHJwY3ZlcnNfdCAqLCBjb25zdCBy
cGN2ZXJzX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgY2hhciAqKTsKIyAzNDkgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvY2xudC5oIiAzIDQKZXh0ZXJuIENMSUVOVCAq
X2NsbnRfdHBfY3JlYXRlIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29uc3QgcnBj
dmVyc190LCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICopOwojIDM2MiAiL3UxL2Rpc2tsZXNzL2Nw
MTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5UICpfY2xudF90
bGlfY3JlYXRlIChjb25zdCBpbnQsIGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3Ry
dWN0IG5ldGJ1ZiAqLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgdV9p
bnQsIGNvbnN0IHVfaW50KTsKIyAzNzggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9ycGMvY2xudC5oIiAzIDQKZXh0ZXJuIENMSUVOVCAqX2NsbnRfdmNfY3JlYXRlIChjb25zdCBp
bnQsIGNvbnN0IHN0cnVjdCBuZXRidWYgKiwgY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJz
X3QsIGNvbnN0IHVfaW50LCBjb25zdCB1X2ludCk7CiMgMzkzICIvdTEvZGlza2xlc3MvY3AxNTAw
LTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CmV4dGVybiBDTElFTlQgKl9jbG50X2RnX2Ny
ZWF0ZSAoY29uc3QgaW50LCBjb25zdCBzdHJ1Y3QgbmV0YnVmICosIGNvbnN0IHJwY3Byb2dfdCwg
Y29uc3QgcnBjdmVyc190LCBjb25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwojIDQxMiAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5U
ICpfY2xudF9yYXdfY3JlYXRlIChycGNwcm9nX3QsIHJwY3ZlcnNfdCk7CgoKCgoKCgoKZXh0ZXJu
IHZvaWQgX2NsbnRfcGNyZWF0ZWVycm9yIChjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqX2Ns
bnRfc3BjcmVhdGVlcnJvciAoY29uc3QgY2hhciAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgX2NsbnRf
cGVycm5vIChlbnVtIGNsbnRfc3RhdCk7CmV4dGVybiBjaGFyICpfY2xudF9zcGVycm5vIChlbnVt
IGNsbnRfc3RhdCk7CgoKCgoKCmV4dGVybiB2b2lkIF9jbG50X3BlcnJvciAoQ0xJRU5UICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpfY2xudF9zcGVycm9yIChDTElFTlQgKiwgY29uc3Qg
Y2hhciAqKTsKCgoKCgoKc3RydWN0IHJwY19jcmVhdGVlcnIgewogICAgICAgIGVudW0gY2xudF9z
dGF0IGNmX3N0YXQ7CiAgICAgICAgc3RydWN0IHJwY19lcnIgY2ZfZXJyb3I7Cn07CgoKCmV4dGVy
biBzdHJ1Y3QgcnBjX2NyZWF0ZWVyciAqX19ycGNfY3JlYXRlZXJyICh2b2lkKTsKCiMgNDcyICIv
dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CgpleHRlcm4g
ZW51bSBjbG50X3N0YXQgX3JwY19jYWxsIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwg
Y29uc3QgcnBjdmVyc190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgY29uc3Qg
Y2hhciAqLCBjb25zdCB4ZHJwcm9jX3QsIGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCiMgNTIz
ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CnR5cGVk
ZWYgYm9vbF90ICgqcmVzdWx0cHJvY190KSAoX19jYWRkcl90LCAuLi4pOwoKCmV4dGVybiBlbnVt
IGNsbnRfc3RhdCBfcnBjX2Jyb2FkY2FzdCAoY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJz
X3QsIGNvbnN0IHJwY3Byb2NfdCwgY29uc3QgeGRycHJvY190LCBfX2NhZGRyX3QsIGNvbnN0IHhk
cnByb2NfdCwgX19jYWRkcl90LCBjb25zdCByZXN1bHRwcm9jX3QsIGNvbnN0IGNoYXIgKik7CgoK
CmV4dGVybiBlbnVtIGNsbnRfc3RhdCBfcnBjX2Jyb2FkY2FzdF9leHAgKGNvbnN0IHJwY3Byb2df
dCwgY29uc3QgcnBjdmVyc190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgX19j
YWRkcl90LCBjb25zdCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCwgY29uc3QgcmVzdWx0cHJvY190LCBj
b25zdCBpbnQsIGNvbnN0IGludCwgY29uc3QgY2hhciAqKTsKCgoKCgoKCiMgMSAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50X3NvYy5oIiAxIDMgNAojIDY0ICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnRfc29jLmgiIDMgNAoKZXh0ZXJu
IENMSUVOVCAqX2NsbnR0Y3BfY3JlYXRlIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgdV9sb25nLCB1
X2xvbmcsIGludCAqLCB1X2ludCwgdV9pbnQpOwoKCgoKCgoKCgoKCmV4dGVybiBDTElFTlQgKl9j
bG50cmF3X2NyZWF0ZSAodV9sb25nLCB1X2xvbmcpOwoKIyAxMDIgIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9ycGMvY2xudF9zb2MuaCIgMyA0CgpleHRlcm4gQ0xJRU5UICpfY2xu
dHVkcF9jcmVhdGUgKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCB1X2xvbmcsIHVfbG9uZywgc3RydWN0
IHRpbWV2YWwsIGludCAqKTsKCgoKCmV4dGVybiBDTElFTlQgKl9jbG50dWRwX2J1ZmNyZWF0ZSAo
c3RydWN0IHNvY2thZGRyX2luICosIHVfbG9uZywgdV9sb25nLCBzdHJ1Y3QgdGltZXZhbCwgaW50
ICosIHVfaW50LCB1X2ludCk7CgoKCgoKCgojIDUzOSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz
ci9pbmNsdWRlL3JwYy9jbG50LmgiIDIgMyA0CiMgNTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91
c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMSAzIDQKIyA1NCAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDMgNAplbnVtIG1zZ190eXBlIHsKICAgICAg
ICBDQUxMPTAsCiAgICAgICAgUkVQTFk9MQp9OwoKZW51bSByZXBseV9zdGF0IHsKICAgICAgICBN
U0dfQUNDRVBURUQ9MCwKICAgICAgICBNU0dfREVOSUVEPTEKfTsKCmVudW0gYWNjZXB0X3N0YXQg
ewogICAgICAgIFNVQ0NFU1M9MCwKICAgICAgICBQUk9HX1VOQVZBSUw9MSwKICAgICAgICBQUk9H
X01JU01BVENIPTIsCiAgICAgICAgUFJPQ19VTkFWQUlMPTMsCiAgICAgICAgR0FSQkFHRV9BUkdT
PTQsCiAgICAgICAgU1lTVEVNX0VSUj01Cn07CgplbnVtIHJlamVjdF9zdGF0IHsKICAgICAgICBS
UENfTUlTTUFUQ0g9MCwKICAgICAgICBBVVRIX0VSUk9SPTEKfTsKIyA4NyAiL3UxL2Rpc2tsZXNz
L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDMgNApzdHJ1Y3QgYWNjZXB0ZWRf
cmVwbHkgewogICAgICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBhcl92ZXJmOwogICAgICAgIGVudW0g
YWNjZXB0X3N0YXQgYXJfc3RhdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgbG93OwogICAgICAgICAgICAg
ICAgICAgICAgICBycGN2ZXJzX3QgaGlnaDsKICAgICAgICAgICAgICAgIH0gQVJfdmVyc2lvbnM7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX2NhZGRy
X3Qgd2hlcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHhkcnByb2NfdCBwcm9jOwogICAgICAg
ICAgICAgICAgfSBBUl9yZXN1bHRzOwoKICAgICAgICB9IHJ1OwoKCn07CgoKCgpzdHJ1Y3QgcmVq
ZWN0ZWRfcmVwbHkgewogICAgICAgIGVudW0gcmVqZWN0X3N0YXQgcmpfc3RhdDsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBy
cGN2ZXJzX3QgbG93OwogICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgaGlnaDsKICAg
ICAgICAgICAgICAgIH0gUkpfdmVyc2lvbnM7CiAgICAgICAgICAgICAgICBlbnVtIGF1dGhfc3Rh
dCBSSl93aHk7CiAgICAgICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IHJlcGx5X2JvZHkgewogICAg
ICAgIGVudW0gcmVwbHlfc3RhdCBycF9zdGF0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBhY2NlcHRlZF9yZXBseSBSUF9hcjsKICAgICAgICAgICAgICAgIHN0cnVjdCBy
ZWplY3RlZF9yZXBseSBSUF9kcjsKICAgICAgICB9IHJ1OwoKCn07CgoKCgpzdHJ1Y3QgY2FsbF9i
b2R5IHsKICAgICAgICBycGN2ZXJzX3QgY2JfcnBjdmVyczsKICAgICAgICBycGNwcm9nX3QgY2Jf
cHJvZzsKICAgICAgICBycGN2ZXJzX3QgY2JfdmVyczsKICAgICAgICBycGNwcm9jX3QgY2JfcHJv
YzsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggY2JfY3JlZDsKICAgICAgICBzdHJ1Y3Qgb3Bh
cXVlX2F1dGggY2JfdmVyZjsKfTsKCgoKCnN0cnVjdCBycGNfbXNnIHsKICAgICAgICB1X2ludDMy
X3Qgcm1feGlkOwogICAgICAgIGVudW0gbXNnX3R5cGUgcm1fZGlyZWN0aW9uOwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBjYWxsX2JvZHkgUk1fY21iOwogICAgICAgICAg
ICAgICAgc3RydWN0IHJlcGx5X2JvZHkgUk1fcm1iOwogICAgICAgIH0gcnU7CgoKfTsKCgoKCgoK
CgoKCmV4dGVybiBib29sX3QgX3hkcl9jYWxsbXNnIChYRFIgKiwgc3RydWN0IHJwY19tc2cgKik7
CgoKCgoKCgpleHRlcm4gYm9vbF90IF94ZHJfY2FsbGhkciAoWERSICosIHN0cnVjdCBycGNfbXNn
ICopOwoKCgoKCgoKZXh0ZXJuIGJvb2xfdCBfeGRyX3JlcGx5bXNnIChYRFIgKiwgc3RydWN0IHJw
Y19tc2cgKik7CiMgMTk0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3Jw
Y19tc2cuaCIgMyA0CmV4dGVybiBib29sX3QgX3hkcl9hY2NlcHRlZF9yZXBseSAoWERSICosIHN0
cnVjdCBhY2NlcHRlZF9yZXBseSAqKTsKCgoKCgoKCmV4dGVybiBib29sX3QgX3hkcl9yZWplY3Rl
ZF9yZXBseSAoWERSICosIHN0cnVjdCByZWplY3RlZF9yZXBseSAqKTsKCgoKCgoKCmV4dGVybiB2
b2lkIF9zZXRlcnJfcmVwbHkgKHN0cnVjdCBycGNfbXNnICosIHN0cnVjdCBycGNfZXJyICopOwoK
IyA1OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzIDQK
IyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGhfdW5peC5oIiAx
IDMgNAojIDYxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGhfdW5p
eC5oIiAzIDQKc3RydWN0IGF1dGh1bml4X3Bhcm1zIHsKICAgICAgICB1X2xvbmcgYXVwX3RpbWU7
CiAgICAgICAgY2hhciAqYXVwX21hY2huYW1lOwogICAgICAgIGludCBhdXBfdWlkOwogICAgICAg
IGludCBhdXBfZ2lkOwogICAgICAgIHVfaW50IGF1cF9sZW47CiAgICAgICAgaW50ICphdXBfZ2lk
czsKfTsKCgpleHRlcm4gYm9vbF90IF94ZHJfYXV0aHVuaXhfcGFybXMgKFhEUiAqLCBzdHJ1Y3Qg
YXV0aHVuaXhfcGFybXMgKik7CgoKCgoKCgpzdHJ1Y3Qgc2hvcnRfaGFuZF92ZXJmIHsKICAgICAg
ICBzdHJ1Y3Qgb3BhcXVlX2F1dGggbmV3X2NyZWQ7Cn07CiMgNTkgIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CiMgNjggIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDEgMyA0CiMgNzQgIi91MS9kaXNrbGVzcy9jcDE1MDAt
MS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNAplbnVtIHhwcnRfc3RhdCB7CiAgICAgICAgWFBS
VF9ESUVELAogICAgICAgIFhQUlRfTU9SRVJFUVMsCiAgICAgICAgWFBSVF9JRExFCn07CgoKCgp0
eXBlZGVmIHN0cnVjdCBfX3JwY19zdmN4cHJ0IHsKICAgICAgICBpbnQgeHBfZmQ7CiAgICAgICAg
dV9zaG9ydCB4cF9wb3J0OwogICAgICAgIGNvbnN0IHN0cnVjdCB4cF9vcHMgewoKICAgICAgICAg
ICAgICAgIGJvb2xfdCAoKnhwX3JlY3YpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAqLCBzdHJ1Y3Qg
cnBjX21zZyAqKTsKCgogICAgICAgICAgICAgICAgZW51bSB4cHJ0X3N0YXQgKCp4cF9zdGF0KSAo
c3RydWN0IF9fcnBjX3N2Y3hwcnQgKik7CgogICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfZ2V0
YXJncykgKHN0cnVjdCBfX3JwY19zdmN4cHJ0ICosIHhkcnByb2NfdCwgX19jYWRkcl90KTsKCgog
ICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfcmVwbHkpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAq
LCBzdHJ1Y3QgcnBjX21zZyAqKTsKCgogICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfZnJlZWFy
Z3MpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAqLCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCk7CgoKICAg
ICAgICAgICAgICAgIHZvaWQgKCp4cF9kZXN0cm95KSAoc3RydWN0IF9fcnBjX3N2Y3hwcnQgKik7
CiAgICAgICAgfSAqeHBfb3BzOwogICAgICAgIGludCB4cF9hZGRybGVuOwogICAgICAgIHN0cnVj
dCBzb2NrYWRkcl9pbiB4cF9yYWRkcjsKCiAgICAgICAgY29uc3Qgc3RydWN0IHhwX29wczIgewoK
ICAgICAgICAgICAgICAgIGJvb2xfdCAoKnhwX2NvbnRyb2wpIChzdHJ1Y3QgX19ycGNfc3ZjeHBy
dCAqLCBjb25zdCB1X2ludCwgdm9pZCAqKTsKCiAgICAgICAgfSAqeHBfb3BzMjsKICAgICAgICBj
aGFyICp4cF90cDsKICAgICAgICBjaGFyICp4cF9uZXRpZDsKICAgICAgICBzdHJ1Y3QgbmV0YnVm
IHhwX2x0YWRkcjsKICAgICAgICBzdHJ1Y3QgbmV0YnVmIHhwX3J0YWRkcjsKICAgICAgICBzdHJ1
Y3Qgb3BhcXVlX2F1dGggeHBfdmVyZjsKICAgICAgICB2b2lkICp4cF9wMTsKICAgICAgICB2b2lk
ICp4cF9wMjsKICAgICAgICB2b2lkICp4cF9wMzsKICAgICAgICBpbnQgeHBfdHlwZTsKfSBTVkNY
UFJUOwoKCgoKc3RydWN0IHN2Y19yZXEgewogICAgICAgIHVfaW50MzJfdCBycV9wcm9nOwogICAg
ICAgIHVfaW50MzJfdCBycV92ZXJzOwogICAgICAgIHVfaW50MzJfdCBycV9wcm9jOwogICAgICAg
IHN0cnVjdCBvcGFxdWVfYXV0aCBycV9jcmVkOwogICAgICAgIHZvaWQgKnJxX2NsbnRjcmVkOwog
ICAgICAgIFNWQ1hQUlQgKnJxX3hwcnQ7Cn07CiMgMTk3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvcnBjL3N2Yy5oIiAzIDQKCmV4dGVybiBib29sX3QgX3N2Y19yZWcgKFNWQ1hQ
UlQgKiwgY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJzX3QsIHZvaWQgKCopIChzdHJ1Y3Qg
c3ZjX3JlcSAqLCBTVkNYUFJUICopLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICopOwoKCgojIDIx
MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmMuaCIgMyA0CgpleHRl
cm4gdm9pZCBfc3ZjX3VucmVnIChjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCk7CgoK
CgoKCgoKCmV4dGVybiB2b2lkIF94cHJ0X3JlZ2lzdGVyIChTVkNYUFJUICopOwoKCgoKCgoKCgpl
eHRlcm4gdm9pZCBfeHBydF91bnJlZ2lzdGVyIChTVkNYUFJUICopOwoKIyAyNjIgIi91MS9kaXNr
bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNAoKZXh0ZXJuIGJvb2xfdCBf
c3ZjX3NlbmRyZXBseSAoU1ZDWFBSVCAqLCB4ZHJwcm9jX3QsIGNoYXIgKik7CmV4dGVybiB2b2lk
IF9zdmNlcnJfZGVjb2RlIChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3ZjZXJyX3dlYWthdXRo
IChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3ZjZXJyX25vcHJvYyAoU1ZDWFBSVCAqKTsKZXh0
ZXJuIHZvaWQgX3N2Y2Vycl9wcm9ndmVycyAoU1ZDWFBSVCAqLCBycGN2ZXJzX3QsIHJwY3ZlcnNf
dCk7CmV4dGVybiB2b2lkIF9zdmNlcnJfYXV0aCAoU1ZDWFBSVCAqLCBlbnVtIGF1dGhfc3RhdCk7
CmV4dGVybiB2b2lkIF9zdmNlcnJfbm9wcm9nIChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3Zj
ZXJyX3N5c3RlbWVyciAoU1ZDWFBSVCAqKTsKZXh0ZXJuIGludCBfcnBjX3JlZyAocnBjcHJvZ190
LCBycGN2ZXJzX3QsIHJwY3Byb2NfdCwgY2hhciAqKCopIChjaGFyICopLCB4ZHJwcm9jX3QsIHhk
cnByb2NfdCwgY2hhciAqKTsKCgoKIyAyOTEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9ycGMvc3ZjLmgiIDMgNApleHRlcm4gaW50IHN2Y19tYXhmZDsKCmV4dGVybiBmZF9zZXQg
c3ZjX2Zkc2V0OwojIDMwMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9z
dmMuaCIgMyA0CgpleHRlcm4gdm9pZCBycGN0ZXN0X3NlcnZpY2UgKHZvaWQpOwoKCgpleHRlcm4g
dm9pZCBfc3ZjX2dldHJlcSAoaW50KTsKZXh0ZXJuIHZvaWQgX3N2Y19nZXRyZXFzZXQgKGZkX3Nl
dCAqKTsKZXh0ZXJuIHZvaWQgX3N2Y19nZXRyZXFfY29tbW9uIChpbnQpOwpzdHJ1Y3QgcG9sbGZk
OwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxX3BvbGwgKHN0cnVjdCBwb2xsZmQgKiwgaW50KTsKCmV4
dGVybiB2b2lkIF9zdmNfcnVuICh2b2lkKTsKZXh0ZXJuIHZvaWQgX3N2Y19leGl0ICh2b2lkKTsK
CiMgMzI4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3N2Yy5oIiAzIDQK
CgoKCmV4dGVybiBpbnQgX3N2Y19jcmVhdGUgKHZvaWQgKCopIChzdHJ1Y3Qgc3ZjX3JlcSAqLCBT
VkNYUFJUICopLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgY2hhciAq
KTsKIyAzNDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMg
NApleHRlcm4gU1ZDWFBSVCAqX3N2Y190cF9jcmVhdGUgKHZvaWQgKCopIChzdHJ1Y3Qgc3ZjX3Jl
cSAqLCBTVkNYUFJUICopLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qg
c3RydWN0IG5ldGNvbmZpZyAqKTsKIyAzNjEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j
bHVkZS9ycGMvc3ZjLmgiIDMgNApleHRlcm4gU1ZDWFBSVCAqX3N2Y190bGlfY3JlYXRlIChjb25z
dCBpbnQsIGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3RydWN0IHRfYmluZCAqLCBj
b25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwojIDM3NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz
ci9pbmNsdWRlL3JwYy9zdmMuaCIgMyA0CmV4dGVybiBTVkNYUFJUICpfc3ZjX3ZjX2NyZWF0ZSAo
Y29uc3QgaW50LCBjb25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwoKCgoKCgpleHRlcm4gU1ZDWFBS
VCAqX3N2Y19kZ19jcmVhdGUgKGNvbnN0IGludCwgY29uc3QgdV9pbnQsIGNvbnN0IHVfaW50KTsK
IyAzOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNApl
eHRlcm4gU1ZDWFBSVCAqX3N2Y19mZF9jcmVhdGUgKGNvbnN0IGludCwgY29uc3QgdV9pbnQsIGNv
bnN0IHVfaW50KTsKIyA0MDUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv
c3ZjLmgiIDMgNApleHRlcm4gU1ZDWFBSVCAqX3N2Y19yYXdfY3JlYXRlICh2b2lkKTsKCgoKCmlu
dCBzdmNfZGdfZW5hYmxlY2FjaGUgKFNWQ1hQUlQgKiwgY29uc3QgdV9pbnQpOwoKCgoKCiMgMSAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmNfc29jLmgiIDEgMyA0CiMg
NjYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjX3NvYy5oIiAzIDQK
CmV4dGVybiBib29sX3QgX3N2Y19yZWdpc3RlciAoU1ZDWFBSVCAqLCB1X2xvbmcsIHVfbG9uZywg
dm9pZCAoKikgKHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiksIGludCk7CgoKIyA3OCAiL3Ux
L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmNfc29jLmgiIDMgNAoKZXh0ZXJu
IHZvaWQgX3N2Y191bnJlZ2lzdGVyICh1X2xvbmcsIHVfbG9uZyk7CgoKCgoKCgpleHRlcm4gU1ZD
WFBSVCAqX3N2Y3Jhd19jcmVhdGUgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIFNWQ1hQUlQgKl9zdmN1
ZHBfY3JlYXRlIChpbnQpOwpleHRlcm4gU1ZDWFBSVCAqX3N2Y3VkcF9idWZjcmVhdGUgKGludCwg
dV9pbnQsIHVfaW50KTsKZXh0ZXJuIGludCBfc3ZjdWRwX2VuYWJsZWNhY2hlIChTVkNYUFJUICos
IHVfbG9uZyk7CgoKCgoKCgpleHRlcm4gU1ZDWFBSVCAqX3N2Y3RjcF9jcmVhdGUgKGludCwgdV9p
bnQsIHVfaW50KTsKCgoKCgoKZXh0ZXJuIFNWQ1hQUlQgKl9zdmNmZF9jcmVhdGUgKGludCwgdV9p
bnQsIHVfaW50KTsKCiMgNDE3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj
L3N2Yy5oIiAyIDMgNAojIDY5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj
L3JwYy5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv
c3ZjX2F1dGguaCIgMSAzIDQKIyA0NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3JwYy9zdmNfYXV0aC5oIiAzIDQKCmV4dGVybiBlbnVtIGF1dGhfc3RhdCBfYXV0aGVudGljYXRl
IChzdHJ1Y3Qgc3ZjX3JlcSAqLCBzdHJ1Y3QgcnBjX21zZyAqKTsKZXh0ZXJuIGludCBfc3ZjX2F1
dGhfcmVnIChpbnQsIGVudW0gYXV0aF9zdGF0ICgqKSAoc3RydWN0IHN2Y19yZXEgKiwgc3RydWN0
IHJwY19tc2cgKikpOwoKCgojIDcwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv
cnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3JwYy9wbWFwX2NsbnQuaCIgMSAzIDQKIyA2OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p
bmNsdWRlL3JwYy9wbWFwX2NsbnQuaCIgMyA0CgpleHRlcm4gYm9vbF90IF9wbWFwX3NldCAodV9s
b25nLCB1X2xvbmcsIGludCwgaW50KTsKZXh0ZXJuIGJvb2xfdCBfcG1hcF91bnNldCAodV9sb25n
LCB1X2xvbmcpOwpleHRlcm4gc3RydWN0IHBtYXBsaXN0ICpfcG1hcF9nZXRtYXBzIChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKik7CmV4dGVybiBlbnVtIGNsbnRfc3RhdCBfcG1hcF9ybXRjYWxsIChzdHJ1
Y3Qgc29ja2FkZHJfaW4gKiwgdV9sb25nLCB1X2xvbmcsIHVfbG9uZywgeGRycHJvY190LCBfX2Nh
ZGRyX3QsIHhkcnByb2NfdCwgX19jYWRkcl90LCBzdHJ1Y3QgdGltZXZhbCwgdV9sb25nICopOwoK
CgoKZXh0ZXJuIGVudW0gY2xudF9zdGF0IF9jbG50X2Jyb2FkY2FzdCAodV9sb25nLCB1X2xvbmcs
IHVfbG9uZywgeGRycHJvY190LCBjaGFyICosIHhkcnByb2NfdCwgY2hhciAqLCByZXN1bHRwcm9j
X3QpOwoKCgpleHRlcm4gdV9zaG9ydCBfcG1hcF9nZXRwb3J0IChzdHJ1Y3Qgc29ja2FkZHJfaW4g
KiwgdV9sb25nLCB1X2xvbmcsIHVfaW50KTsKCgojIDczICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv
dXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91
c3IvaW5jbHVkZS9ycGMvcG1hcF9wcm90LmgiIDEgMyA0CiMgODggIi91MS9kaXNrbGVzcy9jcDE1
MDAtMS91c3IvaW5jbHVkZS9ycGMvcG1hcF9wcm90LmgiIDMgNApzdHJ1Y3QgcG1hcCB7CiAgICAg
ICAgbG9uZyB1bnNpZ25lZCBwbV9wcm9nOwogICAgICAgIGxvbmcgdW5zaWduZWQgcG1fdmVyczsK
ICAgICAgICBsb25nIHVuc2lnbmVkIHBtX3Byb3Q7CiAgICAgICAgbG9uZyB1bnNpZ25lZCBwbV9w
b3J0Owp9OwoKc3RydWN0IHBtYXBsaXN0IHsKICAgICAgICBzdHJ1Y3QgcG1hcCBwbWxfbWFwOwog
ICAgICAgIHN0cnVjdCBwbWFwbGlzdCAqcG1sX25leHQ7Cn07CgoKZXh0ZXJuIGJvb2xfdCBfeGRy
X3BtYXAgKFhEUiAqLCBzdHJ1Y3QgcG1hcCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3BtYXBsaXN0
IChYRFIgKiwgc3RydWN0IHBtYXBsaXN0ICoqKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfcG1hcGxpc3Rf
cHRyIChYRFIgKiwgc3RydWN0IHBtYXBsaXN0ICopOwoKIyA3NCAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzIDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw
MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX2NsbnQuaCIgMSAzIDQKIyA2MSAiL3UxL2Rpc2tsZXNz
L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX2NsbnQuaCIgMyA0CiMgMSAiL3UxL2Rpc2ts
ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMSAzIDQKIyAxMSAiL3Ux
L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CiMgMSAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMSAzIDQKIyAxMiAi
L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMiAzIDQK
IyAxMjkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjYl9wcm90Lmgi
IDMgNApzdHJ1Y3QgcnBjYiB7CiAgICAgICAgcnBjcHJvZ190IHJfcHJvZzsKICAgICAgICBycGN2
ZXJzX3Qgcl92ZXJzOwogICAgICAgIGNoYXIgKnJfbmV0aWQ7CiAgICAgICAgY2hhciAqcl9hZGRy
OwogICAgICAgIGNoYXIgKnJfb3duZXI7Cn07CnR5cGVkZWYgc3RydWN0IHJwY2IgcnBjYjsKCgoK
ZXh0ZXJuIGJvb2xfdCBfeGRyX3JwY2IoWERSICosIHJwY2IgKik7CgoKCgoKdHlwZWRlZiBycGNi
IFJQQ0I7CiMgMTYwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwY2Jf
cHJvdC5oIiAzIDQKc3RydWN0IHJwX19saXN0IHsKICAgICAgICBycGNiIHJwY2JfbWFwOwogICAg
ICAgIHN0cnVjdCBycF9fbGlzdCAqcnBjYl9uZXh0Owp9Owp0eXBlZGVmIHN0cnVjdCBycF9fbGlz
dCBycF9fbGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfcnBfX2xpc3QoWERSICosIHJwX19saXN0
ICopOwoKCgoKCnR5cGVkZWYgcnBfX2xpc3QgKnJwY2JsaXN0X3B0cjsKCgoKZXh0ZXJuIGJvb2xf
dCBfeGRyX3JwY2JsaXN0X3B0cihYRFIgKiwgcnBjYmxpc3RfcHRyICopOwoKCgoKCnR5cGVkZWYg
c3RydWN0IHJwX19saXN0IHJwY2JsaXN0Owp0eXBlZGVmIHN0cnVjdCBycF9fbGlzdCBSUENCTElT
VDsKCgpzdHJ1Y3QgcnBjYmxpc3QgewogUlBDQiBycGNiX21hcDsKIHN0cnVjdCBycGNibGlzdCAq
cnBjYl9uZXh0Owp9OwoKCgoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYmxpc3QoWERSICosIHJw
Y2JsaXN0KiopOwojIDIxMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9y
cGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBycGNiX3JtdGNhbGxhcmdzIHsKICAgICAgICBycGNwcm9n
X3QgcHJvZzsKICAgICAgICBycGN2ZXJzX3QgdmVyczsKICAgICAgICBycGNwcm9jX3QgcHJvYzsK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdV9pbnQgYXJnc19sZW47CiAgICAgICAg
ICAgICAgICBjaGFyICphcmdzX3ZhbDsKICAgICAgICB9IGFyZ3M7Cn07CnR5cGVkZWYgc3RydWN0
IHJwY2Jfcm10Y2FsbGFyZ3MgcnBjYl9ybXRjYWxsYXJnczsKCgoKZXh0ZXJuIGJvb2xfdCBfeGRy
X3JwY2Jfcm10Y2FsbGFyZ3MoWERSICosIHJwY2Jfcm10Y2FsbGFyZ3MgKik7CiMgMjQxICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwY2JfcHJvdC5oIiAzIDQKc3RydWN0
IHJfcnBjYl9ybXRjYWxsYXJncyB7CiBycGNwcm9nX3QgcHJvZzsKIHJwY3ZlcnNfdCB2ZXJzOwog
cnBjcHJvY190IHByb2M7CiBzdHJ1Y3QgewogdV9pbnQgYXJnc19sZW47CiBjaGFyICphcmdzX3Zh
bDsKIH0gYXJnczsKIHhkcnByb2NfdCB4ZHJfYXJnczsKfTsKCgoKCgoKc3RydWN0IHJwY2Jfcm10
Y2FsbHJlcyB7CiAgICAgICAgY2hhciAqYWRkcjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdV9pbnQgcmVzdWx0c19sZW47CiAgICAgICAgICAgICAgICBjaGFyICpyZXN1bHRzX3Zh
bDsKICAgICAgICB9IHJlc3VsdHM7Cn07CnR5cGVkZWYgc3RydWN0IHJwY2Jfcm10Y2FsbHJlcyBy
cGNiX3JtdGNhbGxyZXM7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX3JtdGNhbGxyZXMoWERS
ICosIHJwY2Jfcm10Y2FsbHJlcyAqKTsKIyAyNzcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3Iv
aW5jbHVkZS9ycGMvcnBjYl9wcm90LmgiIDMgNApzdHJ1Y3Qgcl9ycGNiX3JtdGNhbGxyZXMgewog
Y2hhciAqYWRkcjsKIHN0cnVjdCB7CiB1X2ludDMyX3QgcmVzdWx0c19sZW47CiBjaGFyICpyZXN1
bHRzX3ZhbDsKIH0gcmVzdWx0czsKIHhkcnByb2NfdCB4ZHJfcmVzOwp9OwojIDI5MyAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBy
cGNiX2VudHJ5IHsKICAgICAgICBjaGFyICpyX21hZGRyOwogICAgICAgIGNoYXIgKnJfbmNfbmV0
aWQ7CiAgICAgICAgdV9pbnQgcl9uY19zZW1hbnRpY3M7CiAgICAgICAgY2hhciAqcl9uY19wcm90
b2ZtbHk7CiAgICAgICAgY2hhciAqcl9uY19wcm90bzsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYl9l
bnRyeSBycGNiX2VudHJ5OwoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYl9lbnRyeShYRFIgKiwg
cnBjYl9lbnRyeSAqKTsKIyAzMTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9y
cGMvcnBjYl9wcm90LmgiIDMgNApzdHJ1Y3QgcnBjYl9lbnRyeV9saXN0IHsKICAgICAgICBycGNi
X2VudHJ5IHJwY2JfZW50cnlfbWFwOwogICAgICAgIHN0cnVjdCBycGNiX2VudHJ5X2xpc3QgKnJw
Y2JfZW50cnlfbmV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYl9lbnRyeV9saXN0IHJwY2JfZW50
cnlfbGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfcnBjYl9lbnRyeV9saXN0KFhEUiAqLCBycGNi
X2VudHJ5X2xpc3QgKik7CgoKCgoKdHlwZWRlZiBycGNiX2VudHJ5X2xpc3QgKnJwY2JfZW50cnlf
bGlzdF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX2VudHJ5X2xpc3RfcHRyKFhEUiAq
LCBycGNiX2VudHJ5X2xpc3RfcHRyICopOwojIDM1MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz
ci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBycGNic19hZGRybGlzdCB7CiAg
ICAgICAgcnBjcHJvZ190IHByb2c7CiAgICAgICAgcnBjdmVyc190IHZlcnM7CiAgICAgICAgaW50
IHN1Y2Nlc3M7CiAgICAgICAgaW50IGZhaWx1cmU7CiAgICAgICAgY2hhciAqbmV0aWQ7CiAgICAg
ICAgc3RydWN0IHJwY2JzX2FkZHJsaXN0ICpuZXh0Owp9Owp0eXBlZGVmIHN0cnVjdCBycGNic19h
ZGRybGlzdCBycGNic19hZGRybGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCBfeGRyX3JwY2JzX2FkZHJs
aXN0KFhEUiAqLCBycGNic19hZGRybGlzdCAqKTsKCgoKCgoKCnN0cnVjdCBycGNic19ybXRjYWxs
bGlzdCB7CiAgICAgICAgcnBjcHJvZ190IHByb2c7CiAgICAgICAgcnBjdmVyc190IHZlcnM7CiAg
ICAgICAgcnBjcHJvY190IHByb2M7CiAgICAgICAgaW50IHN1Y2Nlc3M7CiAgICAgICAgaW50IGZh
aWx1cmU7CiAgICAgICAgaW50IGluZGlyZWN0OwogICAgICAgIGNoYXIgKm5ldGlkOwogICAgICAg
IHN0cnVjdCBycGNic19ybXRjYWxsbGlzdCAqbmV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYnNf
cm10Y2FsbGxpc3QgcnBjYnNfcm10Y2FsbGxpc3Q7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNi
c19ybXRjYWxsbGlzdChYRFIgKiwgcnBjYnNfcm10Y2FsbGxpc3QgKik7CgoKCgoKdHlwZWRlZiBp
bnQgcnBjYnNfcHJvY1sxM107CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19wcm9jKFhEUiAq
LCBycGNic19wcm9jKTsKCgoKCgp0eXBlZGVmIHJwY2JzX2FkZHJsaXN0ICpycGNic19hZGRybGlz
dF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19hZGRybGlzdF9wdHIoWERSICosIHJw
Y2JzX2FkZHJsaXN0X3B0ciAqKTsKCgoKCgp0eXBlZGVmIHJwY2JzX3JtdGNhbGxsaXN0ICpycGNi
c19ybXRjYWxsbGlzdF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19ybXRjYWxsbGlz
dF9wdHIoWERSICosIHJwY2JzX3JtdGNhbGxsaXN0X3B0ciAqKTsKCgoKCgpzdHJ1Y3QgcnBjYl9z
dGF0IHsKICAgICAgICBycGNic19wcm9jIGluZm87CiAgICAgICAgaW50IHNldGluZm87CiAgICAg
ICAgaW50IHVuc2V0aW5mbzsKICAgICAgICBycGNic19hZGRybGlzdF9wdHIgYWRkcmluZm87CiAg
ICAgICAgcnBjYnNfcm10Y2FsbGxpc3RfcHRyIHJtdGluZm87Cn07CnR5cGVkZWYgc3RydWN0IHJw
Y2Jfc3RhdCBycGNiX3N0YXQ7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX3N0YXQoWERSICos
IHJwY2Jfc3RhdCAqKTsKIyA0NDUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9y
cGMvcnBjYl9wcm90LmgiIDMgNAp0eXBlZGVmIHJwY2Jfc3RhdCBycGNiX3N0YXRfYnl2ZXJzWzNd
OwoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYl9zdGF0X2J5dmVycyhYRFIgKiwgcnBjYl9zdGF0
X2J5dmVycyk7CiMgNDY1ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3Jw
Y2JfcHJvdC5oIiAzIDQKZXh0ZXJuIGJvb2xfdCBfeGRyX25ldGJ1ZihYRFIgKiwgc3RydWN0IG5l
dGJ1ZiAqKTsKIyA2NDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBj
Yl9wcm90LmgiIDMgNApleHRlcm4gYm9vbF90ICpycGNicHJvY19zZXRfMyhycGNiICosIENMSUVO
VCAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2Nfc2V0XzNfc3ZjKHJwY2IgKiwgc3RydWN0IHN2
Y19yZXEgKik7CgpleHRlcm4gYm9vbF90ICpycGNicHJvY191bnNldF8zKHJwY2IgKiwgQ0xJRU5U
ICopOwpleHRlcm4gYm9vbF90ICpycGNicHJvY191bnNldF8zX3N2YyhycGNiICosIHN0cnVjdCBz
dmNfcmVxICopOwoKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXRhZGRyXzMocnBjYiAqLCBDTElF
TlQgKik7CmV4dGVybiBjaGFyICoqcnBjYnByb2NfZ2V0YWRkcl8zX3N2YyhycGNiICosIHN0cnVj
dCBzdmNfcmVxICopOwoKZXh0ZXJuIHJwY2JsaXN0X3B0ciAqcnBjYnByb2NfZHVtcF8zKHZvaWQg
KiwgQ0xJRU5UICopOwpleHRlcm4gcnBjYmxpc3RfcHRyICpycGNicHJvY19kdW1wXzNfc3ZjKHZv
aWQgKiwgc3RydWN0IHN2Y19yZXEgKik7CgpleHRlcm4gcnBjYl9ybXRjYWxscmVzICpycGNicHJv
Y19jYWxsaXRfMyhycGNiX3JtdGNhbGxhcmdzICosIENMSUVOVCAqKTsKZXh0ZXJuIHJwY2Jfcm10
Y2FsbHJlcyAqcnBjYnByb2NfY2FsbGl0XzNfc3ZjKHJwY2Jfcm10Y2FsbGFyZ3MgKiwgc3RydWN0
IHN2Y19yZXEgKik7CgpleHRlcm4gdV9pbnQgKnJwY2Jwcm9jX2dldHRpbWVfMyh2b2lkICosIENM
SUVOVCAqKTsKZXh0ZXJuIHVfaW50ICpycGNicHJvY19nZXR0aW1lXzNfc3ZjKHZvaWQgKiwgc3Ry
dWN0IHN2Y19yZXEgKik7CgpleHRlcm4gc3RydWN0IG5ldGJ1ZiAqcnBjYnByb2NfdWFkZHIydGFk
ZHJfMyhjaGFyICoqLCBDTElFTlQgKik7CmV4dGVybiBzdHJ1Y3QgbmV0YnVmICpycGNicHJvY191
YWRkcjJ0YWRkcl8zX3N2YyhjaGFyICoqLCBzdHJ1Y3Qgc3ZjX3JlcSAqKTsKCmV4dGVybiBjaGFy
ICoqcnBjYnByb2NfdGFkZHIydWFkZHJfMyhzdHJ1Y3QgbmV0YnVmICosIENMSUVOVCAqKTsKZXh0
ZXJuIGNoYXIgKipycGNicHJvY190YWRkcjJ1YWRkcl8zX3N2YyhzdHJ1Y3QgbmV0YnVmICosIHN0
cnVjdCBzdmNfcmVxICopOwojIDczMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl
L3JwYy9ycGNiX3Byb3QuaCIgMyA0CmV4dGVybiBib29sX3QgKnJwY2Jwcm9jX3NldF80KHJwY2Ig
KiwgQ0xJRU5UICopOwpleHRlcm4gYm9vbF90ICpycGNicHJvY19zZXRfNF9zdmMocnBjYiAqLCBz
dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2NfdW5zZXRfNChycGNiICos
IENMSUVOVCAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2NfdW5zZXRfNF9zdmMocnBjYiAqLCBz
dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXRhZGRyXzQocnBjYiAq
LCBDTElFTlQgKik7CmV4dGVybiBjaGFyICoqcnBjYnByb2NfZ2V0YWRkcl80X3N2YyhycGNiICos
IHN0cnVjdCBzdmNfcmVxICopOwpleHRlcm4gcnBjYmxpc3RfcHRyICpycGNicHJvY19kdW1wXzQo
dm9pZCAqLCBDTElFTlQgKik7CmV4dGVybiBycGNibGlzdF9wdHIgKnJwY2Jwcm9jX2R1bXBfNF9z
dmModm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqKTsKCmV4dGVybiBycGNiX3JtdGNhbGxyZXMgKnJw
Y2Jwcm9jX2JjYXN0XzQocnBjYl9ybXRjYWxsYXJncyAqLCBDTElFTlQgKik7CmV4dGVybiBycGNi
X3JtdGNhbGxyZXMgKnJwY2Jwcm9jX2JjYXN0XzRfc3ZjKHJwY2Jfcm10Y2FsbGFyZ3MgKiwgc3Ry
dWN0IHN2Y19yZXEgKik7CmV4dGVybiB1X2ludCAqcnBjYnByb2NfZ2V0dGltZV80KHZvaWQgKiwg
Q0xJRU5UICopOwpleHRlcm4gdV9pbnQgKnJwY2Jwcm9jX2dldHRpbWVfNF9zdmModm9pZCAqLCBz
dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIHN0cnVjdCBuZXRidWYgKnJwY2Jwcm9jX3VhZGRyMnRh
ZGRyXzQoY2hhciAqKiwgQ0xJRU5UICopOwpleHRlcm4gc3RydWN0IG5ldGJ1ZiAqcnBjYnByb2Nf
dWFkZHIydGFkZHJfNF9zdmMoY2hhciAqKiwgc3RydWN0IHN2Y19yZXEgKik7CmV4dGVybiBjaGFy
ICoqcnBjYnByb2NfdGFkZHIydWFkZHJfNChzdHJ1Y3QgbmV0YnVmICosIENMSUVOVCAqKTsKZXh0
ZXJuIGNoYXIgKipycGNicHJvY190YWRkcjJ1YWRkcl80X3N2YyhzdHJ1Y3QgbmV0YnVmICosIHN0
cnVjdCBzdmNfcmVxICopOwoKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXR2ZXJzYWRkcl80KHJw
Y2IgKiwgQ0xJRU5UICopOwpleHRlcm4gY2hhciAqKnJwY2Jwcm9jX2dldHZlcnNhZGRyXzRfc3Zj
KHJwY2IgKiwgc3RydWN0IHN2Y19yZXEgKik7CgpleHRlcm4gcnBjYl9ybXRjYWxscmVzICpycGNi
cHJvY19pbmRpcmVjdF80KHJwY2Jfcm10Y2FsbGFyZ3MgKiwgQ0xJRU5UICopOwpleHRlcm4gcnBj
Yl9ybXRjYWxscmVzICpycGNicHJvY19pbmRpcmVjdF80X3N2YyhycGNiX3JtdGNhbGxhcmdzICos
IHN0cnVjdCBzdmNfcmVxICopOwoKZXh0ZXJuIHJwY2JfZW50cnlfbGlzdF9wdHIgKnJwY2Jwcm9j
X2dldGFkZHJsaXN0XzQocnBjYiAqLCBDTElFTlQgKik7CmV4dGVybiBycGNiX2VudHJ5X2xpc3Rf
cHRyICpycGNicHJvY19nZXRhZGRybGlzdF80X3N2YyhycGNiICosIHN0cnVjdCBzdmNfcmVxICop
OwoKZXh0ZXJuIHJwY2Jfc3RhdCAqcnBjYnByb2NfZ2V0c3RhdF80KHZvaWQgKiwgQ0xJRU5UICop
OwpleHRlcm4gcnBjYl9zdGF0ICpycGNicHJvY19nZXRzdGF0XzRfc3ZjKHZvaWQgKiwgc3RydWN0
IHN2Y19yZXEgKik7CiMgNjIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv
cnBjYl9jbG50LmgiIDIgMyA0CgoKZXh0ZXJuIGJvb2xfdCBfcnBjYl9zZXQgKGNvbnN0IHJwY3By
b2dfdCwgY29uc3QgcnBjdmVyc190LCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICosIGNvbnN0IHN0
cnVjdCBuZXRidWYgKik7CgpleHRlcm4gYm9vbF90IF9ycGNiX3Vuc2V0IChjb25zdCBycGNwcm9n
X3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqKTsKCmV4dGVybiBy
cGNibGlzdCAqX3JwY2JfZ2V0bWFwcyAoY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqLCBjb25zdCBj
aGFyICopOwpleHRlcm4gZW51bSBjbG50X3N0YXQgX3JwY2Jfcm10Y2FsbCAoY29uc3Qgc3RydWN0
IG5ldGNvbmZpZyAqLCBjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29uc3QgcnBjdmVy
c190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgY29uc3QgX19jYWRkcl90LCBj
b25zdCB4ZHJwcm9jX3QsIGNvbnN0IF9fY2FkZHJfdCwgY29uc3Qgc3RydWN0IHRpbWV2YWwsIGNv
bnN0IHN0cnVjdCBuZXRidWYgKik7CgoKCgoKCmV4dGVybiBib29sX3QgcnBjYl9nZXRhZGRyIChj
b25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAq
LCBzdHJ1Y3QgbmV0YnVmICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGJvb2xfdCBfcnBjYl9n
ZXR0aW1lIChjb25zdCBjaGFyICosIHRpbWVfdCAqKTsKZXh0ZXJuIGNoYXIgKl9ycGNiX3RhZGRy
MnVhZGRyIChzdHJ1Y3QgbmV0Y29uZmlnICosIHN0cnVjdCBuZXRidWYgKik7CmV4dGVybiBzdHJ1
Y3QgbmV0YnVmICpfcnBjYl91YWRkcjJ0YWRkciAoc3RydWN0IG5ldGNvbmZpZyAqLCBjaGFyICop
OwoKIyA3NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAz
IDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNlbnQuaCIg
MSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNlbnQu
aCIgMyA0CnN0cnVjdCBycGNlbnQgewogICAgICBjaGFyICpyX25hbWU7CiAgICAgIGNoYXIgKipy
X2FsaWFzZXM7CiAgICAgIGludCByX251bWJlcjsKfTsKCgpleHRlcm4gc3RydWN0IHJwY2VudCAq
Z2V0cnBjYnluYW1lX3IgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHJwY2VudCAqLCBjaGFyICosIGlu
dCk7CgpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnludW1iZXJfciAoaW50LCBzdHJ1Y3Qg
cnBjZW50ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2VudF9y
IChzdHJ1Y3QgcnBjZW50ICosIGNoYXIgKiwgaW50KTsKCgpleHRlcm4gc3RydWN0IHJwY2VudCAq
X2dldHJwY2J5bmFtZSAoY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKl9nZXRycGNieW51
bWJlciAoaW50KTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKl9nZXRycGNlbnQgKHZvaWQpOwpleHRl
cm4gdm9pZCBfc2V0cnBjZW50IChpbnQpOwpleHRlcm4gdm9pZCBfZW5kcnBjZW50ICh2b2lkKTsK
CiMgNzggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0
CgoKZXh0ZXJuIGludCBfZ2V0X215YWRkcmVzcyAoc3RydWN0IHNvY2thZGRyX2luICopOwpleHRl
cm4gaW50IF9iaW5kcmVzdnBvcnQgKGludCwgc3RydWN0IHNvY2thZGRyX2luICopOwpleHRlcm4g
aW50IF9yZWdpc3RlcnJwYyAoaW50LCBpbnQsIGludCwgY2hhciAqKCopIChjaGFyIFs4ODAwXSks
IHhkcnByb2NfdCwgeGRycHJvY190KTsKCmV4dGVybiBpbnQgX2NhbGxycGMgKGNoYXIgKiwgaW50
LCBpbnQsIGludCwgeGRycHJvY190LCBjaGFyICosIHhkcnByb2NfdCAsIGNoYXIgKik7CgpleHRl
cm4gaW50IF9nZXRycGNwb3J0IChjaGFyICosIGludCwgaW50LCBpbnQpOwoKY2hhciAqdGFkZHIy
dWFkZHIgKGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3RydWN0IG5ldGJ1ZiAqKTsK
c3RydWN0IG5ldGJ1ZiAqdWFkZHIydGFkZHIgKGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29u
c3QgY2hhciAqKTsKCnN0cnVjdCBzb2NrYWRkcjsKZXh0ZXJuIGludCBfYmluZHJlc3Zwb3J0X3Nh
IChpbnQsIHN0cnVjdCBzb2NrYWRkciAqKTsKCgoKCgoKCmludCBfX3JwY19uY29uZjJmZCAoY29u
c3Qgc3RydWN0IG5ldGNvbmZpZyAqKTsKaW50IF9fcnBjX25jb25mMnNvY2tpbmZvIChjb25zdCBz
dHJ1Y3QgbmV0Y29uZmlnICosIHN0cnVjdCBfX3JwY19zb2NraW5mbyAqKTsKCmludCBfX3JwY19m
ZDJzb2NraW5mbyAoaW50LCBzdHJ1Y3QgX19ycGNfc29ja2luZm8gKik7CnVfaW50IF9fcnBjX2dl
dF90X3NpemUgKGludCwgaW50LCBpbnQpOwoKIyA3MCAiL3UxL25ldGJzZC9zcmMvbGliL2xpYmMv
Z2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs
dWRlL3JwY3N2Yy95cGNsbnQuaCIgMSAzIDQKIyA2MiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz
ci9pbmNsdWRlL3JwY3N2Yy95cGNsbnQuaCIgMyA0CnN0cnVjdCB5cGFsbF9jYWxsYmFjayB7Cgog
ICAgICAgIGludCAoKmZvcmVhY2gpIChpbnQsIGNoYXIgKiwgaW50LCBjaGFyICosIGludCwgY2hh
ciAqKTsKICAgICAgICBjaGFyICpkYXRhOwp9OwoKCmludCBfeXBfYmluZCAoY29uc3QgY2hhciAq
KTsKc3RydWN0IGRvbV9iaW5kaW5nOwppbnQgX3lwX2RvYmluZCAoY29uc3QgY2hhciAqLCBzdHJ1
Y3QgZG9tX2JpbmRpbmcgKiopOwppbnQgX3lwX2NoZWNrIChjaGFyICoqKTsKdm9pZCBfeXBfdW5i
aW5kIChjb25zdCBjaGFyICopOwppbnQgX3lwX2dldF9kZWZhdWx0X2RvbWFpbiAoY2hhciAqKik7
CnN0cnVjdCB5cG1hcGxpc3Q7CmludCBfeXBfbWFwbGlzdCAoY29uc3QgY2hhciAqLCBzdHJ1Y3Qg
eXBtYXBsaXN0ICoqKTsKaW50IF95cF9tYXRjaCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgaW50ICwgY2hhciAqKiwgaW50ICopOwoKaW50IF95cF9maXJzdCAoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiosIGludCAqLCBjaGFyICoqLCBpbnQgKik7
CgppbnQgX3lwX25leHQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IGludCwgY2hhciAqKiwgaW50ICosIGNoYXIgKiosIGludCAqKTsKCmludCBfeXBfbWFzdGVyIChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmludCBfeXBfb3JkZXIgKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKik7CmludCBfeXBfYWxsIChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgc3RydWN0IHlwYWxsX2NhbGxiYWNrICopOwoKY2hhciAqIF95cGVycl9z
dHJpbmcgKGludCk7CmludCBfeXBwcm90X2VyciAodW5zaWduZWQgaW50KTsKCiMgNzEgIi91MS9u
ZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVz
cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5oIiAxIDMgNAojIDczICIvdTEv
ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMyA0CnR5cGVk
ZWYgdV9pbnQgYm9vbDsKIyA5NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3Jw
Y3N2Yy95cF9wcm90LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAq
ZHB0cjsKICAgICAgICBpbnQgZHNpemU7Cn0gZGF0dW07CgoKCnN0cnVjdCB5cG1hcF9wYXJtcyB7
CiAgICAgICAgY29uc3QgY2hhciAqZG9tYWluOwogICAgICAgIGNvbnN0IGNoYXIgKm1hcDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgb3JkZXJudW07CiAgICAgICAgY2hhciAqb3duZXI7Cn07CgpzdHJ1
Y3QgeXByZXFfa2V5IHsKICAgICAgICBjb25zdCBjaGFyICpkb21haW47CiAgICAgICAgY29uc3Qg
Y2hhciAqbWFwOwogICAgICAgIGRhdHVtIGtleWRhdDsKfTsKCnN0cnVjdCB5cHJlcV9ub2tleSB7
CiAgICAgICAgY29uc3QgY2hhciAqZG9tYWluOwogICAgICAgIGNvbnN0IGNoYXIgKm1hcDsKfTsK
CnN0cnVjdCB5cHJlcV94ZnIgewogICAgICAgIHN0cnVjdCB5cG1hcF9wYXJtcyBtYXBfcGFybXM7
CiAgICAgICAgdW5zaWduZWQgaW50IHRyYW5zaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHByb3Rv
OwogICAgICAgIHVuc2lnbmVkIGludCBwb3J0Owp9OwoKCgoKCnN0cnVjdCB5cHJlc3BfdmFsIHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwogICAgICAgIGRhdHVtIHZhbGRhdDsKfTsKCnN0
cnVjdCB5cHJlc3Bfa2V5X3ZhbCB7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsKICAgICAg
ICBkYXR1bSBrZXlkYXQ7CiAgICAgICAgZGF0dW0gdmFsZGF0Owp9OwoKc3RydWN0IHlwcmVzcF9t
YXN0ZXIgewogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAgICAgY2hhciAqbWFzdGVy
Owp9OwoKc3RydWN0IHlwcmVzcF9vcmRlciB7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsK
ICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXJudW07Cn07CgpzdHJ1Y3QgeXBtYXBsaXN0IHsKICAg
ICAgICBjaGFyIHlwbWxfbmFtZVs2NCArIDFdOwogICAgICAgIHN0cnVjdCB5cG1hcGxpc3QgKnlw
bWxfbmV4dDsKfTsKCnN0cnVjdCB5cHJlc3BfbWFwbGlzdCB7CiAgICAgICAgdW5zaWduZWQgaW50
IHN0YXR1czsKICAgICAgICBzdHJ1Y3QgeXBtYXBsaXN0ICpsaXN0Owp9OwojIDIwMiAiL3UxL2Rp
c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMgNApzdHJ1Y3Qg
ZG9tX2JpbmRpbmcgewogICAgICAgIHN0cnVjdCBkb21fYmluZGluZyAqZG9tX3BuZXh0OwogICAg
ICAgIGNoYXIgZG9tX2RvbWFpbls2NCArIDFdOwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBk
b21fc2VydmVyX2FkZHI7CiAgICAgICAgdV9zaG9ydCBkb21fc2VydmVyX3BvcnQ7CiAgICAgICAg
aW50IGRvbV9zb2NrZXQ7CiAgICAgICAgQ0xJRU5UICpkb21fY2xpZW50OwogICAgICAgIHVfc2hv
cnQgZG9tX2xvY2FsX3BvcnQ7CiAgICAgICAgbG9uZyBkb21fdmVyczsKfTsKIyAyMzcgIi91MS9k
aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5oIiAzIDQKZW51bSB5
cGJpbmRfcmVzcHR5cGUgewogICAgICAgIFlQQklORF9TVUNDX1ZBTCA9IDEsCiAgICAgICAgWVBC
SU5EX0ZBSUxfVkFMID0gMgp9OwoKCnN0cnVjdCB5cGJpbmRfYmluZGluZyB7CiAgICAgICAgc3Ry
dWN0IGluX2FkZHIgeXBiaW5kX2JpbmRpbmdfYWRkcjsKICAgICAgICB1X2ludDE2X3QgeXBiaW5k
X2JpbmRpbmdfcG9ydDsKfTsKCnN0cnVjdCB5cGJpbmRfcmVzcCB7CiAgICAgICAgZW51bSB5cGJp
bmRfcmVzcHR5cGUgeXBiaW5kX3N0YXR1czsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgeXBiaW5kX2Vycm9yOwogICAgICAgICAgICAgICAgc3RydWN0IHlwYmlu
ZF9iaW5kaW5nIHlwYmluZF9iaW5kaW5mbzsKICAgICAgICB9IHlwYmluZF9yZXNwYm9keTsKfTsK
IyAyNjQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5o
IiAzIDQKc3RydWN0IHlwYmluZF9zZXRkb20gewogICAgICAgIGNoYXIgeXBzZXRkb21fZG9tYWlu
WzY0ICsgMV07CiAgICAgICAgc3RydWN0IHlwYmluZF9iaW5kaW5nIHlwc2V0ZG9tX2JpbmRpbmc7
CiAgICAgICAgdW5zaWduZWQgaW50IHlwc2V0ZG9tX3ZlcnM7Cn07CiMgMjkxICIvdTEvZGlza2xl
c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMyA0CnN0cnVjdCB5cHB1
c2hyZXNwX3hmciB7CiAgICAgICAgdW5zaWduZWQgaW50IHRyYW5zaWQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHN0YXR1czsKfTsKIyAzMTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk
ZS9ycGNzdmMveXBfcHJvdC5oIiAzIDQKc3RydWN0IHlwYWxsX2NhbGxiYWNrOwoKCmJvb2xfdCBf
eGRyX2RvbWFpbm5hbWUgKFhEUiAqLCBjaGFyICopOwpib29sX3QgX3hkcl9wZWVybmFtZSAoWERS
ICosIGNoYXIgKik7CmJvb2xfdCBfeGRyX21hcG5hbWUgKFhEUiAqLCBjaGFyICopOwpib29sX3Qg
X3hkcl9kYXR1bSAoWERSICosIGRhdHVtICopOwpib29sX3QgX3hkcl95cGRvbWFpbl93cmFwX3N0
cmluZyAoWERSICosIGNoYXIgKiopOwpib29sX3QgX3hkcl95cG1hcF93cmFwX3N0cmluZyAoWERS
ICosIGNoYXIgKiopOwpib29sX3QgX3hkcl95cHJlcV9rZXkgKFhEUiAqLCBzdHJ1Y3QgeXByZXFf
a2V5ICopOwpib29sX3QgX3hkcl95cHJlcV9ub2tleSAoWERSICosIHN0cnVjdCB5cHJlcV9ub2tl
eSAqKTsKYm9vbF90IF94ZHJfeXByZXFfeGZyIChYRFIgKiwgc3RydWN0IHlwcmVxX3hmciAqKTsK
Ym9vbF90IF94ZHJfeXByZXNwX3ZhbCAoWERSICosIHN0cnVjdCB5cHJlc3BfdmFsICopOwpib29s
X3QgX3hkcl95cHJlc3Bfa2V5X3ZhbCAoWERSICosIHN0cnVjdCB5cHJlc3Bfa2V5X3ZhbCAqKTsK
Ym9vbF90IF94ZHJfeXBtYXBfcGFybXMgKFhEUiAqLCBzdHJ1Y3QgeXBtYXBfcGFybXMgKik7CmJv
b2xfdCBfeGRyX3lwb3duZXJfd3JhcF9zdHJpbmcgKFhEUiAqLCBjaGFyICoqKTsKYm9vbF90IF94
ZHJfeXBwdXNocmVzcF94ZnIgKFhEUiAqLCBzdHJ1Y3QgeXBwdXNocmVzcF94ZnIgKik7CmJvb2xf
dCBfeGRyX3lwcmVzcF9vcmRlciAoWERSICosIHN0cnVjdCB5cHJlc3Bfb3JkZXIgKik7CmJvb2xf
dCBfeGRyX3lwcmVzcF9tYXN0ZXIgKFhEUiAqLCBzdHJ1Y3QgeXByZXNwX21hc3RlciAqKTsKYm9v
bF90IF94ZHJfeXBhbGwgKFhEUiAqLCBzdHJ1Y3QgeXBhbGxfY2FsbGJhY2sgKik7CmJvb2xfdCBf
eGRyX3lwcmVzcF9tYXBsaXN0IChYRFIgKiwgc3RydWN0IHlwcmVzcF9tYXBsaXN0ICopOwpib29s
X3QgX3hkcl95cGJpbmRfcmVzcCAoWERSICosIHN0cnVjdCB5cGJpbmRfcmVzcCAqKTsKYm9vbF90
IF94ZHJfeXBiaW5kX3NldGRvbSAoWERSICosIHN0cnVjdCB5cGJpbmRfc2V0ZG9tICopOwpib29s
X3QgX3hkcl95cG1hcGxpc3QgKFhEUiAqLCBzdHJ1Y3QgeXBtYXBsaXN0ICopOwpib29sX3QgX3hk
cl95cF9pbmFkZHIgKFhEUiAqLCBzdHJ1Y3QgaW5fYWRkciAqKTsKCiMgNzIgIi91MS9uZXRic2Qv
c3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCgpfX2FzbV9fKCIud2VhayAiICJl
bmR1c2Vyc2hlbGwiICIgOyAiICJlbmR1c2Vyc2hlbGwiICIgPSAiICJfZW5kdXNlcnNoZWxsIik7
Cl9fYXNtX18oIi53ZWFrICIgImdldHVzZXJzaGVsbCIgIiA7ICIgImdldHVzZXJzaGVsbCIgIiA9
ICIgIl9nZXR1c2Vyc2hlbGwiKTsKX19hc21fXygiLndlYWsgIiAic2V0dXNlcnNoZWxsIiAiIDsg
IiAic2V0dXNlcnNoZWxsIiAiID0gIiAiX3NldHVzZXJzaGVsbCIpOwoKCgoKCgoKc3RhdGljIGNv
bnN0IGNoYXIgKmNvbnN0IG9rc2hlbGxzW10gPSB7ICIvYmluL3NoIiwgIi9iaW4vY3NoIiwgMCB9
OwpzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgKmN1cnNoZWxsOwpzdGF0aWMgU3RyaW5nTGlzdCAq
c2w7CgpzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgKmluaXRzaGVsbHMgKHZvaWQpOwoKCgoKIGNo
YXIgKgpfZ2V0dXNlcnNoZWxsKCkKewogICAgICAgIGNoYXIgKnJldDsKCiAgICAgICAgaWYgKGN1
cnNoZWxsID09IDApCiAgICAgICAgICAgICAgICBjdXJzaGVsbCA9IGluaXRzaGVsbHMoKTsKCiAg
ICAgICAgcmV0ID0gKCBjaGFyICopKmN1cnNoZWxsOwogICAgICAgIGlmIChyZXQgIT0gMCkKICAg
ICAgICAgICAgICAgIGN1cnNoZWxsKys7CiAgICAgICAgcmV0dXJuIChyZXQpOwp9Cgp2b2lkCl9l
bmR1c2Vyc2hlbGwoKQp7CiAgICAgICAgaWYgKHNsKQogICAgICAgICAgICAgICAgX3NsX2ZyZWUo
c2wsIDEpOwogICAgICAgIHNsID0gMDsKICAgICAgICBjdXJzaGVsbCA9IDA7Cn0KCnZvaWQKX3Nl
dHVzZXJzaGVsbCgpCnsKCiAgICAgICAgY3Vyc2hlbGwgPSBpbml0c2hlbGxzKCk7Cn0KCgpzdGF0
aWMgaW50IF9sb2NhbF9pbml0c2hlbGxzICh2b2lkICosIHZvaWQgKiwgdmFfbGlzdCk7CgoKc3Rh
dGljIGludApfbG9jYWxfaW5pdHNoZWxscyhydiwgY2JfZGF0YSwgYXApCiAgICAgICAgdm9pZCAq
cnY7CiAgICAgICAgdm9pZCAqY2JfZGF0YTsKICAgICAgICB2YV9saXN0IGFwOwp7CiAgICAgICAg
Y2hhciAqc3AsICpjcDsKICAgICAgICBGSUxFICpmcDsKICAgICAgICBjaGFyIGxpbmVbMTAyNCAr
IDJdOwoKICAgICAgICBpZiAoc2wpCiAgICAgICAgICAgICAgICBfc2xfZnJlZShzbCwgMSk7CiAg
ICAgICAgc2wgPSBfc2xfaW5pdCgpOwogICAgICAgIGlmICghc2wpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKCgxPDwxKSk7CgogICAgICAgIGlmICgoZnAgPSBmb3BlbigiL2V0Yy9zaGVsbHMiLCAi
ciIpKSA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuICgoMTw8MSkpOwoKICAgICAgICBzcCA9
IGNwID0gbGluZTsKICAgICAgICB3aGlsZSAoZmdldHMoY3AsIDEwMjQgKyAxLCBmcCkgIT0gMCkg
ewogICAgICAgICAgICAgICAgd2hpbGUgKCpjcCAhPSAnIycgJiYgKmNwICE9ICcvJyAmJiAqY3Ag
IT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKICAgICAgICAgICAgICAgIGlm
ICgqY3AgPT0gJyMnIHx8ICpjcCA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgIHNwID0gY3A7CiAgICAgICAgICAgICAgICB3aGlsZSAoISgo
aW50KSgoX2N0eXBlXyArIDEpWyhpbnQpKCh1bnNpZ25lZCBjaGFyKSAqY3ApXSAmIDB4MDgpKSAm
JiAqY3AgIT0gJyMnCiAgICAgICAgICAgICAgICAgICAgJiYgKmNwICE9ICdcMCcpCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNwKys7CiAgICAgICAgICAgICAgICAqY3ArKyA9ICdcMCc7CiAgICAg
ICAgICAgICAgICBpZiAoX3NsX2FkZChzbCwgX3N0cmR1cChzcCkpID09IC0xKQogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgfQogICAgICAgICh2b2lkKWZj
bG9zZShmcCk7CiAgICAgICAgcmV0dXJuICgoMTw8MCkpOwp9CgoKc3RhdGljIGludCBfZG5zX2lu
aXRzaGVsbHMgKHZvaWQgKiwgdm9pZCAqLCB2YV9saXN0KTsKCgpzdGF0aWMgaW50Cl9kbnNfaW5p
dHNoZWxscyhydiwgY2JfZGF0YSwgYXApCiAgICAgICAgdm9pZCAqcnY7CiAgICAgICAgdm9pZCAq
Y2JfZGF0YTsKICAgICAgICB2YV9saXN0IGFwOwp7CiAgICAgICAgY2hhciBzaGVsbG5hbWVbXSA9
ICJzaGVsbHMtWFhYWFgiOwogICAgICAgIGludCBoc2luZGV4LCBocGksIHI7CiAgICAgICAgY2hh
ciAqKmhwOwogICAgICAgIHZvaWQgKmNvbnRleHQ7CgogICAgICAgIGlmIChzbCkKICAgICAgICAg
ICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAgICAgICAg
aWYgKCFzbCkKICAgICAgICAgICAgICAgIHJldHVybiAoKDE8PDEpKTsKCiAgICAgICAgciA9ICgx
PDwxKTsKICAgICAgICBpZiAoX2hlc2lvZF9pbml0KCZjb250ZXh0KSA9PSAtMSkKICAgICAgICAg
ICAgICAgIHJldHVybiAocik7CgogICAgICAgIGZvciAoaHNpbmRleCA9IDA7IDsgaHNpbmRleCsr
KSB7CiAgICAgICAgICAgICAgICBfc25wcmludGYoc2hlbGxuYW1lLCBzaXplb2Yoc2hlbGxuYW1l
KS0xLCAic2hlbGxzLSVkIiwgaHNpbmRleCk7CiAgICAgICAgICAgICAgICBocCA9IF9oZXNpb2Rf
cmVzb2x2ZShjb250ZXh0LCBzaGVsbG5hbWUsICJzaGVsbHMiKTsKICAgICAgICAgICAgICAgIGlm
IChocCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKl9fZXJybm8oKSkgPT0g
MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoc2luZGV4ID09IDApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gKDE8PDIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHIgPSAoMTw8MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgYmFkID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoaHBpID0gMDsgaHBbaHBpXTsgaHBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKF9zbF9hZGQoc2wsIGhwW2hwaV0pID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBmcmVlKGhwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGJhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICAgICAgX2hlc2lvZF9lbmQoY29udGV4dCk7CiAgICAgICAgcmV0
dXJuIChyKTsKfQoKCgpzdGF0aWMgaW50IF9uaXNfaW5pdHNoZWxscyAodm9pZCAqLCB2b2lkICos
IHZhX2xpc3QpOwoKCnN0YXRpYyBpbnQKX25pc19pbml0c2hlbGxzKHJ2LCBjYl9kYXRhLCBhcCkK
ICAgICAgICB2b2lkICpydjsKICAgICAgICB2b2lkICpjYl9kYXRhOwogICAgICAgIHZhX2xpc3Qg
YXA7CnsKICAgICAgICBzdGF0aWMgY2hhciAqeXBkb21haW47CgogICAgICAgIGlmIChzbCkKICAg
ICAgICAgICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAg
ICAgICAgaWYgKCFzbCkKICAgICAgICAgICAgICAgIHJldHVybiAoKDE8PDEpKTsKCiAgICAgICAg
aWYgKHlwZG9tYWluID09IDApIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoX3lwX2dldF9kZWZh
dWx0X2RvbWFpbigmeXBkb21haW4pKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKCgxPDwzKSk7CiAgICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfQoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBjaGFyICp5cGN1
ciA9IDA7CiAgICAgICAgICAgICAgICBpbnQgeXBjdXJsZW4gPSAwOwogICAgICAgICAgICAgICAg
Y2hhciAqa2V5LCAqZGF0YTsKICAgICAgICAgICAgICAgIGludCBrZXlsZW4sIGRhdGFsZW47CiAg
ICAgICAgICAgICAgICBpbnQgcjsKCiAgICAgICAgICAgICAgICBrZXkgPSBkYXRhID0gMDsKICAg
ICAgICAgICAgICAgIGlmICh5cGN1cikgewogICAgICAgICAgICAgICAgICAgICAgICByID0gX3lw
X25leHQoeXBkb21haW4sICJzaGVsbHMiLCB5cGN1ciwgeXBjdXJsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAma2V5bGVuLCAmZGF0YSwgJmRhdGFsZW4p
OwogICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHlwY3VyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoa2V5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGRhdGEpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoKDE8PDApKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGtleSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgeXBjdXIgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHlwY3VybGVuID0ga2V5bGVuOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKF95cF9maXJzdCh5cGRvbWFpbiwgInNoZWxscyIsICZ5cGN1ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnlwY3VybGVuLCAmZGF0YSwgJmRhdGFs
ZW4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGFbZGF0YWxl
bl0gPSAnXDAnOwogICAgICAgICAgICAgICAgaWYgKF9zbF9hZGQoc2wsIGRhdGEpID09IC0xKQog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgfQp9CgoKc3Rh
dGljIGNvbnN0IGNoYXIgKmNvbnN0ICoKaW5pdHNoZWxscygpCnsKICAgICAgICBzdGF0aWMgY29u
c3QgbnNfZHRhYiBkdGFiW10gPSB7CiAgICAgICAgICAgICAgICB7ICJmaWxlcyIsIF9sb2NhbF9p
bml0c2hlbGxzLCAwIH0sCiAgICAgICAgICAgICAgICB7ICJkbnMiLCBfZG5zX2luaXRzaGVsbHMs
IDAgfSwKICAgICAgICAgICAgICAgIHsgIm5pcyIsIF9uaXNfaW5pdHNoZWxscywgMCB9LAogICAg
ICAgICAgICAgICAgeyAwIH0KICAgICAgICB9OwogICAgICAgIGlmIChzbCkKICAgICAgICAgICAg
ICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAgICAgICAgaWYg
KCFzbCkKICAgICAgICAgICAgICAgIGdvdG8gYmFkaW5pdHNoZWxsczsKCiAgICAgICAgaWYgKF9u
c2Rpc3BhdGNoKDAsIGR0YWIsICJzaGVsbHMiLCAiaW5pdHNoZWxscyIsIF9fbnNkZWZhdWx0c3Jj
KQogICAgICAgICAgICAhPSAoMTw8MCkpIHsKIGJhZGluaXRzaGVsbHM6CiAgICAgICAgICAgICAg
ICBpZiAoc2wpCiAgICAgICAgICAgICAgICAgICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAg
ICAgICAgICAgIHNsID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAob2tzaGVsbHMpOwogICAg
ICAgIH0KICAgICAgICBpZiAoX3NsX2FkZChzbCwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICBn
b3RvIGJhZGluaXRzaGVsbHM7CgogICAgICAgIHJldHVybiAoY29uc3QgY2hhciAqY29uc3QgKiko
c2wtPnNsX3N0cik7Cn0K



More information about the Gcc-bugs mailing list