This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/10568: Template instantiation failure on AIX


>Number:         10568
>Category:       c++
>Synopsis:       Template instantiation failure on AIX
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 30 16:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     dje@watson.ibm.com
>Release:        gcc-3.4 200304XX (experimental)
>Organization:
>Environment:
powerpc-ibm-aix4.3.3.0
>Description:
Late April C++ front-end changes cause new libstdc++ testcase
failures.  The testcase now produces linker errors for
templates which are explicitly instantiated in the source
code.
>How-To-Repeat:
g++ -O2 -g -lv3test -L/gcc/dje/build/powerpc-ibm-aix4.3.3.0-20030428/powerpc-ibm-aix4.3.3.0//libstdc++-v3/testsuite -lm
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="3983-fstream.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="3983-fstream.ii"

IyAxICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yN19pby9iYXNpY19pc3Ry
ZWFtL3NlbnRyeS9jaGFyLzM5ODMtZnN0cmVhbS5jYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxj
b21tYW5kIGxpbmU+IgoKCgoKCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk
ZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvc3RkYysrLmgiIDEKIyA4ICI8Y29tbWFuZCBs
aW5lPiIgMgojIDEgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvdGVzdHN1aXRlLzI3X2lvL2Jh
c2ljX2lzdHJlYW0vc2VudHJ5L2NoYXIvMzk4My1mc3RyZWFtLmNjIgojIDMyICIvZ2NjL2RqZS9z
cmMvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yN19pby9iYXNpY19pc3RyZWFtL3NlbnRyeS9jaGFy
LzM5ODMtZnN0cmVhbS5jYyIKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu
My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv
ZnN0cmVhbSIgMQojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvZnN0cmVh
bSIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaXN0cmVhbSIgMSAz
CiMgNDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pc3RyZWFtIiAzCgojIDEg
Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pb3MiIDEgMwojIDQzICIvZ2NjL2Rq
ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaW9zIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bv
d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJz
dGRjKystdjMvaW5jbHVkZS9pb3Nmd2QiIDEgMwojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysr
LXYzL2luY2x1ZGUvaW9zZndkIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j
bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM1ICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9i
aXRzL2MrK2NvbmZpZy5oIiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0cy9vc19kZWZpbmVzLmgiIDEgMwojIDM2ICIvZ2Nj
L2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRz
L2MrK2NvbmZpZy5oIiAyIDMKIyA0NiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl
L2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y
MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAvYml0cy9jKytsb2NhbGUuaCIgMSAzCiMgNDAgIi9nY2MvZGplL2J1
aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC9saWJzdGRjKystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysrbG9j
YWxlLmgiIDMKCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz
MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nsb2NhbGUi
IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xvY2FsZSIgMwoK
IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p
bmNsdWRlL2xvY2FsZS5oIiAxIDMgNAojIDQ1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvc3RhbmRhcmRzLmgiIDEgMyA0CiMgNDYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvbG9jYWxlLmgiIDIgMyA0CgoKCmV4dGVy
biAiQyIgewojIDYwICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L2djYy9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKc3RydWN0IGxjb252IHsKICAgY2hhciAqZGVj
aW1hbF9wb2ludDsKICAgY2hhciAqdGhvdXNhbmRzX3NlcDsKICAgY2hhciAqZ3JvdXBpbmc7CiAg
IGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICBjaGFy
ICptb25fZGVjaW1hbF9wb2ludDsKICAgY2hhciAqbW9uX3Rob3VzYW5kc19zZXA7CiAgIGNoYXIg
Km1vbl9ncm91cGluZzsKICAgY2hhciAqcG9zaXRpdmVfc2lnbjsKICAgY2hhciAqbmVnYXRpdmVf
c2lnbjsKICAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgIGNoYXIgZnJhY19kaWdpdHM7CiAgIGNo
YXIgcF9jc19wcmVjZWRlczsKICAgY2hhciBwX3NlcF9ieV9zcGFjZTsKICAgY2hhciBuX2NzX3By
ZWNlZGVzOwogICBjaGFyIG5fc2VwX2J5X3NwYWNlOwogICBjaGFyIHBfc2lnbl9wb3NuOwogICBj
aGFyIG5fc2lnbl9wb3NuOwoKCiAgIGNoYXIgKmxlZnRfcGFyZW50aGVzaXM7CiAgIGNoYXIgKnJp
Z2h0X3BhcmVudGhlc2lzOwoKCgoKCn0gOwojIDEwNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9sb2NhbGUuaCIgMyA0CnN0cnVjdCBs
Y29udiAqbG9jYWxlY29udih2b2lkKTsKY2hhciAqc2V0bG9jYWxlKGludCwgY29uc3QgY2hhciAq
KTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY29udiBsY29udjsKCgoKfQojIDUwICIvZ2NjL2RqZS9i
dWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xvY2FsZSIgMiAzCgoKCgoKbmFtZXNwYWNlIHN0ZAp7
CiAgdXNpbmcgOjpsY29udjsKICB1c2luZyA6OnNldGxvY2FsZTsKICB1c2luZyA6OmxvY2FsZWNv
bnY7Cn0KIyA0MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy
OC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvYml0cy9jKytsb2NhbGUuaCIgMiAzCgoKCm5hbWVzcGFjZSBzdGQKewogIHR5
cGVkZWYgaW50KiBfX2NfbG9jYWxlOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgogICAg
aW50CiAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAogICAgICAgY29uc3QgaW50IF9f
c2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAogICAgICAgY29uc3QgY2hhciogX19m
bXQsCiAgICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYyA9IC0xKQog
ICAgewogICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZSgtMSwgKDApKTsKICAgICAgY2hhciog
X19zYXYgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmxlbihfX29sZCkgKyAxKSk7CiAg
ICAgIGlmIChfX3NhdikKICAgICAgICBzdHJjcHkoX19zYXYsIF9fb2xkKTsKICAgICAgc2V0bG9j
YWxlKC0xLCAiQyIpOwoKICAgICAgaW50IF9fcmV0OwoKCgoKCgogICAgICBpZiAoX19wcmVjID49
IDApCiAgICAgICAgX19yZXQgPSBzcHJpbnRmKF9fb3V0LCBfX2ZtdCwgX19wcmVjLCBfX3YpOwog
ICAgICBlbHNlCiAgICAgICAgX19yZXQgPSBzcHJpbnRmKF9fb3V0LCBfX2ZtdCwgX192KTsKCiAg
ICAgIHNldGxvY2FsZSgtMSwgX19zYXYpOwogICAgICBmcmVlKF9fc2F2KTsKICAgICAgcmV0dXJu
IF9fcmV0OwogICAgfQp9CiMgNDcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9p
b3Nmd2QiIDIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jY3R5cGUi
IDEgMwojIDQ3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2N0eXBlIiAzCgoK
IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p
bmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgNzkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiBleHRlcm4gaW50IGlz
YWxwaGEoaW50KTsKIGV4dGVybiBpbnQgaXNhbG51bShpbnQpOwogZXh0ZXJuIGludCBpc2NudHJs
KGludCk7CiBleHRlcm4gaW50IGlzZGlnaXQoaW50KTsKIGV4dGVybiBpbnQgaXNncmFwaChpbnQp
OwogZXh0ZXJuIGludCBpc2xvd2VyKGludCk7CiBleHRlcm4gaW50IGlzcHJpbnQoaW50KTsKIGV4
dGVybiBpbnQgaXNwdW5jdChpbnQpOwogZXh0ZXJuIGludCBpc3NwYWNlKGludCk7CiBleHRlcm4g
aW50IGlzdXBwZXIoaW50KTsKIGV4dGVybiBpbnQgaXN4ZGlnaXQoaW50KTsKIGV4dGVybiBpbnQg
dG91cHBlcihpbnQpOwogZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CiMgMTA3ICIvZ2NjL2RqZS9i
dWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2N0eXBlLmgi
IDMgNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2N0eXBlX3Q7CgoKCgogdHlwZWRlZiBpbnQgd2lu
dF90OwoKCgoKCgogZXh0ZXJuIGludCBpc2FzY2lpKGludCk7CiBleHRlcm4gaW50IHRvYXNjaWko
aW50KTsKIyAxMzEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0
MjgvZ2NjL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVk
ZWYuaCIgMSAzIDQKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0CnN0cnVj
dCBfX0xDX2xvY2FsZTsKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsOwoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL2xpbWl0cy5oIiAxIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAz
IDQKZXh0ZXJuICJDIiB7CiMgMjQ3ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAzIDQKIyAx
ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNs
dWRlL2Zsb2F0LmgiIDEgMyA0CiMgMjQ4ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAyIDMg
NAojIDM5NyAiL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCIgMyA0Cn0KIyA0MyAiL3Vzci9pbmNs
dWRlL3N5cy9sb2NhbGVkZWYuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2xjX2NvcmUu
aCIgMSAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL3N5cy9sY19jb3JlLmgiIDMgNAojIDEgIi9nY2Mv
ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDEgMyA0CiMgNTIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsKIyA2
NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAx
IDMgNAojIDU2ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsK
IyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hh
ciBpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGlu
dCBpbnQzMl90OwoKCgoKdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludDY0X3Q7CgoKCnR5cGVk
ZWYgdW5zaWduZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHVpbnQ2NF90OwojIDkyICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0
eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7CnR5cGVkZWYgdWludDY0X3QgdWludG1heF90OwojIDEw
NCAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgbG9uZyBp
bnRwdHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsKCgoKCgp0eXBlZGVmIHNp
Z25lZCBjaGFyIGludF9sZWFzdDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50X2xlYXN0MTZf
dDsKdHlwZWRlZiBzaWduZWQgaW50IGludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIHNpZ25lZCBs
b25nIGxvbmcgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVh
c3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnRfbGVhc3QzMl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
dWludF9sZWFzdDY0X3Q7CiMgMTM4ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0
eXBlZGVmIGludDMyX3QgaW50ZmFzdF90Owp0eXBlZGVmIHVpbnQzMl90IHVpbnRmYXN0X3Q7CgoK
dHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhfdDsKdHlwZWRlZiBpbnQzMl90IGludF9mYXN0
MTZfdDsKdHlwZWRlZiBpbnQzMl90IGludF9mYXN0MzJfdDsKdHlwZWRlZiB1aW50MzJfdCB1aW50
X2Zhc3Q4X3Q7CnR5cGVkZWYgdWludDMyX3QgdWludF9mYXN0MTZfdDsKdHlwZWRlZiB1aW50MzJf
dCB1aW50X2Zhc3QzMl90OwoKdHlwZWRlZiBpbnQ2NF90IGludF9mYXN0NjRfdDsKdHlwZWRlZiB1
aW50NjRfdCB1aW50X2Zhc3Q2NF90OwojIDU3NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5o
IiAzIDQKdHlwZWRlZiBzaWduZWQgbG9uZyBfX2xvbmczMl90Owp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgX191bG9uZzMyX3Q7CiMgNTg3ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0
eXBlZGVmIHNpZ25lZCBpbnQgX19sb25nNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191bG9u
ZzY0X3Q7CiMgNTk5ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHNp
Z25lZCBpbnQgaW50MzJsb25nNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMybG9uZzY0
X3Q7CiMgNjEyICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHNpZ25l
ZCBsb25nIGxvbmczMmludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzMyaW50NjRf
dDsKIyA2MjIgIi91c3IvaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMyA0CnR5cGVkZWYgc2lnbmVk
IGNoYXIgaW50ODsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50MTY7CnR5cGVkZWYgc2lnbmVkIGlu
dCBpbnQzMjsKCgoKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQ2NDsKCgoKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIHVfaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfaW50OF90Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHVfaW50MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9pbnQx
Nl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDMyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9pbnQ2NDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9pbnQ2NF90OwojIDY2NCAiL3Vzci9pbmNsdWRlL3N5cy9p
bnR0eXBlcy5oIiAzIDQKZXh0ZXJuIGxvbmcgc3RydG9pbWF4KGNvbnN0IGNoYXIgKiwgY2hhciAq
KiwgaW50KTsKCgoKCgp9CiMgNjUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgODcgIi9nY2MvZGpl
L2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAxMTQgIi9nY2MvZGplL2J1
aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMgNAp0eXBlZGVmIGxvbmcgZnBvc190OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBmcG9zNjRf
dDsKCgoKCgoKdHlwZWRlZiBpbnQzMmxvbmc2NF90IHRpbWVfdDsKCgoKCnR5cGVkZWYgaW50IGNs
b2NrX3Q7CgoKCgoKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDE0OCAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90Owp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IHVzaG9ydF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1bG9uZ190Owp0eXBlZGVmIHNpZ25lZCBsb25nIHNzaXplX3Q7CgoK
Cgp0eXBlZGVmIGludCBsZXZlbF90Owp0eXBlZGVmIGludDMybG9uZzY0X3QgZGFkZHJfdDsKdHlw
ZWRlZiBpbnQgZGFkZHIzMl90OwoKdHlwZWRlZiBpbnQ2NF90IGRhZGRyNjRfdDsKCnR5cGVkZWYg
Y2hhciAqIGNhZGRyX3Q7CnR5cGVkZWYgdWludDMybG9uZzY0X3QgaW5vX3Q7CnR5cGVkZWYgdWlu
dF90IGlubzMyX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IGlubzY0X3Q7Cgp0eXBlZGVmIHNob3J0IGNu
dF90Owp0eXBlZGVmIHVpbnQzMmxvbmc2NF90IGRldl90Owp0eXBlZGVmIHVpbnRfdCBkZXYzMl90
OwoKdHlwZWRlZiB1aW50NjRfdCBkZXY2NF90OwoKdHlwZWRlZiBpbnQgY2hhbl90Owp0eXBlZGVm
IGludCB0aW1lMzJfdDsKdHlwZWRlZiBpbnQgcGlkMzJfdDsKdHlwZWRlZiBpbnQgdGlkMzJfdDsK
CnR5cGVkZWYgdWludDY0X3QgcGlkNjRfdDsKdHlwZWRlZiB1aW50NjRfdCB0aWQ2NF90Owp0eXBl
ZGVmIHVpbnQ2NF90IHRpbWU2NF90OwoKCgoKCgoKdHlwZWRlZiB2b2lkICogX19wdHIzMjsKdHlw
ZWRlZiBjaGFyICogX19jcHRyMzI7CgoKdHlwZWRlZiBpbnQgc29mZl90OwoKCgoKdHlwZWRlZiBs
b25nIG9mZl90OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBvZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBw
YWRkcl90Owp0eXBlZGVmIGludDMybG9uZzY0X3Qga2V5X3Q7CnR5cGVkZWYgaW50IHRpbWVyX3Q7
CnR5cGVkZWYgc2hvcnQgbmxpbmtfdDsKdHlwZWRlZiB1aW50X3QgbW9kZV90Owp0eXBlZGVmIHVp
bnRfdCB1aWRfdDsKdHlwZWRlZiB1aW50X3QgZ2lkX3Q7CnR5cGVkZWYgX19wdHIzMiBtaWRfdDsK
dHlwZWRlZiBpbnQzMmxvbmc2NF90IHBpZF90Owp0eXBlZGVmIGludDMybG9uZzY0X3QgdGlkX3Q7
CnR5cGVkZWYgY2hhciBzbGFiX3RbMTJdOwp0eXBlZGVmIGxvbmcgbXR5cF90Owp0eXBlZGVmIGlu
dCBib29sZWFuX3Q7CnR5cGVkZWYgaW50IGNyaWRfdDsKCgp0eXBlZGVmIGludCBibGtjbnRfdDsK
dHlwZWRlZiBpbnQgYmxrc2l6ZV90OwojIDIzNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg
dWxvbmdfdCBmc2Jsa2NudF90Owp0eXBlZGVmIHVsb25nX3QgZnNmaWxjbnRfdDsKCgoKCgoKCnR5
cGVkZWYgdWludDMybG9uZzY0X3QgaWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdXNlY29uZHNf
dDsKdHlwZWRlZiBzaWduZWQgaW50IHN1c2Vjb25kc190Owp0eXBlZGVmIGludCBjbG9ja2lkX3Q7
CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdzZXRfdCB7CgogdW5zaWduZWQgaW50IGxvc2lnczsKIHVu
c2lnbmVkIGludCBoaXNpZ3M7CgoKCgp9IHNpZ3NldF90OwoKdHlwZWRlZiBpbnQgc2lnbmFsX3Q7
CgoKCgp0eXBlZGVmIHN0cnVjdCBmc2lkX3QgewoKCgoKIHVuc2lnbmVkIGludCB2YWxbMl07CgoK
Cgp9IGZzaWRfdDsKIyAyODUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX3B0
cV9xdWV1ZSB7CiBzdHJ1Y3QgX19wdHFfcXVldWUgKl9fcHRxX25leHQ7CiBzdHJ1Y3QgX19wdHFf
cXVldWUgKl9fcHRxX3ByZXY7Cn0gX19wdHFfcXVldWU7Cgp0eXBlZGVmIGludCBfX3B0bG9ja190
eXBlOwoKdHlwZWRlZiBzdHJ1Y3QgX19wdF9hdHRyICpwdGhyZWFkX2F0dHJfdDsKdHlwZWRlZiBz
dHJ1Y3QgX19wdF9hdHRyICpwdGhyZWFkX2NvbmRhdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRf
YXR0ciAqcHRocmVhZF9tdXRleGF0dHJfdDsKCgp0eXBlZGVmIHN0cnVjdCBfX3B0X2F0dHIgKnB0
aHJlYWRfcndsb2NrYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKIyAzMzcgIi9nY2MvZGplL2J1aWxkL3Bv
d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMg
NAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX19wdHFfcXVldWUgKiBfX3B0cV9saW5rOwogICAg
ICAgIGludCBfX3Jlc2VydmVkMTsKICAgICAgICBfX3B0bG9ja190eXBlIF9fcHRtdHhfbG9jazsK
ICAgICAgICBpbnQgX19wdG10eF9mbGFnczsKICAgICAgICBwdGhyZWFkX3QgX19wdG10eF9vd25l
cjsKICAgICAgICBpbnQgX19tdHhfaWQ7CiAgICAgICAgaW50IF9fYWNxdWlzaXRpb25zOwogICAg
ICAgIGludCBfX210eF9raW5kOwogICAgICAgIGludCBfX2xvY2tfY3B0OwogICAgICAgIGludCBf
X3NsZWVwczsKICAgICAgICBpbnQgX19taXNzZXM7CiAgICAgICAgaW50IF9fcmVzZXJ2ZWQyOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wdG10eF9kYng7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wdGN2X2RieDsKICAgICAgICBp
bnQgX19yZXNlcnZlZDE7CiAgICAgICAgX19wdGxvY2tfdHlwZSBfX3B0Y3ZfbG9jazsKICAgICAg
ICBpbnQgX19wdGN2X2ZsYWdzOwogICAgICAgIF9fcHRxX3F1ZXVlICogX19wdGN2X3dhaXRlcnM7
CiAgICAgICAgaW50IF9fcmVzZXJ2ZWQyOwogICAgICAgIGludCBfX2N2X2lkOwogICAgICAgIHVu
c2lnbmVkIGludCBfX2N2X211dGV4OwogICAgICAgIGludCBfX3Jlc2VydmVkMzsKICAgICAgICBp
bnQgX19jcHR3YWl0OwogICAgICAgIGludCBfX3Jlc2VydmVkOwoKfSBwdGhyZWFkX2NvbmRfdDsK
CgoKdHlwZWRlZiBzdHJ1Y3QgewogX19wdGxvY2tfdHlwZSBfX3B0b25jZV9sb2NrOwogaW50IF9f
cHRvbmNlX2luaXRpYWxpemVkOwogaW50IF9fcHRvbmNlX2V4ZWN1dGluZzsKIGludCBfX3B0b25j
ZV9jb21wbGV0ZWQ7CiBwdGhyZWFkX211dGV4X3QgX19wdG9uY2VfbXV0ZXg7CiBwdGhyZWFkX2Nv
bmRfdCBfX3B0b25jZV9leGVjdXRlZDsKfSBwdGhyZWFkX29uY2VfdDsKCgp0eXBlZGVmIHN0cnVj
dCB7CgoKCgoKICAgICAgICBpbnQgX19wYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3B0cmxv
Y2tfZGJ4OwoKCiAgICAgICAgcHRocmVhZF9tdXRleF90IF9fcndsX211dGV4OwogICAgICAgIHB0
aHJlYWRfY29uZF90IF9fcndsX3JzbGVlcGVyczsKICAgICAgICBwdGhyZWFkX2NvbmRfdCBfX3J3
bF93c2xlZXBlcnM7CiAgICAgICAgaW50IF9fcndsX2ZsYWdzOwogICAgICAgIHB0aHJlYWRfdCBf
X3J3bF9vd25lcjsKICAgICAgICBpbnQgX19yd2xfcndsb2NrX2lkOwogICAgICAgIGludCBfX3J3
bF9sb2NrX2NvdW50OwoKCiAgICAgICAgaW50IF9fcndsX3dhaXRpbmc7CiAgICAgICAgaW50IF9f
cndsX3dhY3F1aXNpdGlvbnM7CiAgICAgICAgaW50IF9fcndsX3JhY3F1aXNpdGlvbnM7CiAgICAg
ICAgaW50IF9fcndsX3dzbGVlcHM7CiAgICAgICAgaW50IF9fcndsX3JzbGVlcHM7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBfX3Jlc2VydmVkWzZdOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCgoKCgp0
eXBlZGVmIHN0cnVjdCBfcXVhZCB7IGludCB2YWxbMl07IH0gcXVhZDsKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvbV90eXBlcy5oIiAxIDMgNAojIDQwICIvdXNyL2luY2x1ZGUvc3lzL21fdHlwZXMu
aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92bV90eXBlcy5oIiAxIDMgNAojIDM0ICIvdXNy
L2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgdm1pZF90OwojIDQ1ICIv
dXNyL2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVsb25nX3Qgdm1oYW5kbGVf
dDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy92bV90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nMzJp
bnQ2NF90IGt2bWlkX3Q7CnR5cGVkZWYgdWxvbmczMmludDY0X3Qga3ZtaGFuZGxlX3Q7CnR5cGVk
ZWYgaW50IGt2bWlkeF90Owp0eXBlZGVmIGludDMybG9uZzY0X3Qgdm1pZHhfdDsKdHlwZWRlZiBp
bnQzMmxvbmc2NF90IHZta2V5X3Q7CnR5cGVkZWYgaW50MzJsb25nNjRfdCB2cG5fdDsKdHlwZWRl
ZiBpbnQzMmxvbmc2NF90IHJwbl90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgcnBu
NjRfdDsKCgoKCgoKCnR5cGVkZWYgaW50IGt2cG5fdDsKdHlwZWRlZiBpbnQga3Jwbl90Owp0eXBl
ZGVmIGludDMybG9uZzY0X3Qgdm1zaXplX3Q7CgoKCgoKCnR5cGVkZWYgc3RydWN0Cgp2bWFkZHJf
dAoKewoKIHZtaGFuZGxlX3Qgc3J2YWw7CiBjYWRkcl90IG9mZnNldDsKCgoKCn0gdm1hZGRyX3Q7
Cgp0eXBlZGVmIHN0cnVjdAoKYWRzcGFjZV90Cgp7CgogdWxvbmczMmludDY0X3QgYWxsb2M7CiBr
dm1oYW5kbGVfdCBzcnZhbFsxNl07CgoKCgp9IGFkc3BhY2VfdDsKCgoKCgoKCnR5cGVkZWYgZW51
bSBfTVJfQVRUUl9UWVBFIHsKICBWaXJ0QWRkciA9IDEKfSBNUl9BVFRSX1RZUEU7Cgp0eXBlZGVm
IGVudW0gX01SX0xBQkVMX1RZUEUgewogIEZyZWVNZW0gPSAxLAogIElQTENCID0gMiwKICBSTUFM
TE9DID0gMywKICBQTV9IRUFQID0gNCwKICBSVEFTX0hFQVAgPSA1LAogIFRDRV9UQUJMRSA9IDYs
CiAgSU9fU1BBQ0UgPSA3Cn0gTVJfTEFCRUxfVFlQRTsKCnR5cGVkZWYgc3RydWN0IHsKIHVuc2ln
bmVkIGxvbmcgbG9uZyBtcl9hZGRyOwogdW5zaWduZWQgbG9uZyBsb25nIG1yX3NpemU7CiB1bnNp
Z25lZCBjaGFyIG1yX2F0dDsKIHVuc2lnbmVkIGNoYXIgbXJfbGFiZWw7CiB1bnNpZ25lZCBzaG9y
dCBtcl9ub2RlaWQ7CiBjaGFyIHJlc2VydmVkWzRdOwp9IGlwbGNiX21hcF9yZWdfdDsKIyA0MSAi
L3Vzci9pbmNsdWRlL3N5cy9tX3R5cGVzLmgiIDIgMyA0CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBs
YWJlbF90CnsKCiBzdHJ1Y3QgbGFiZWxfdCAqcHJldjsKIHVsb25nX3QgaWFyOwogdWxvbmdfdCBz
dGFjazsKIHVsb25nX3QgdG9jOwogdWxvbmdfdCBjcjsKIHVsb25nX3QgaW50cHJpOwogdWxvbmdf
dCByZWdbMTldOwojIDY3ICIvdXNyL2luY2x1ZGUvc3lzL21fdHlwZXMuaCIgMyA0Cn0gbGFiZWxf
dDsKCnR5cGVkZWYgaW50MzJsb25nNjRfdCBleHRfdDsKIyA0MTcgIi9nY2MvZGplL2J1aWxkL3Bv
d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MyA0CgoKCgp0eXBlZGVmIGNoYXIgKiB2YV9saXN0OwojIDQ2NSAiL2djYy9kamUvYnVpbGQvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fcHRyNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIF9fY3B0cjY0OwoKCgoKCgp0eXBlZGVmIHVzaG9ydF90IFVuaUNoYXI7CgoKCgp0eXBl
ZGVmIHVjaGFyX3QgdWNoYXI7CnR5cGVkZWYgdXNob3J0X3QgdXNob3J0Owp0eXBlZGVmIHVpbnRf
dCB1aW50Owp0eXBlZGVmIHVsb25nX3QgdWxvbmc7Cgp0eXBlZGVmIHN0cnVjdCB7IGludCByWzFd
OyB9ICogcGh5c2Fkcl90Owp0eXBlZGVmIHBoeXNhZHJfdCBwaHlzYWRyOwoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7Cgp0eXBl
ZGVmIGludCBzd2Jsa190OwoKCgoKc3RydWN0IHNpZ3NldCB7CiB1bnNpZ25lZCBpbnQgbG9zaWdz
OwogdW5zaWduZWQgaW50IGhpc2lnczsKfTsKCgpzdHJ1Y3QgZnNpZCB7CgogdW5zaWduZWQgaW50
IHZhbFsyXTsKCgoKfTsKIyA1MTggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgZmlsZWlkIHsK
IHVpbnRfdCBmaWRfbGVuOwogaW5vMzJfdCBmaWRfaW5vOwogdWludF90IGZpZF9nZW47CiBjaGFy
IGZpZF94WzIwIC0gKHNpemVvZihpbm8zMl90KSArIDIpIC0gc2l6ZW9mKHVpbnRfdCldOwp9Owoj
IDUzOSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2Mv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnN0cnVjdCBmaWQgewogdWludF90IGZpZF9sZW47CiBj
aGFyIGZpZF9kYXRhWzIwXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgZmlkIGZpZF90OwoKCnN0cnVjdCBm
aGFuZGxlIHsKIGNoYXIgeFszMl07Cn07CnR5cGVkZWYgc3RydWN0IGZoYW5kbGUgZmhhbmRsZV90
OwoKc3RydWN0IGZpbGVoYW5kbGUgewogZnNpZF90IGZoX2ZzaWQ7CiBzdHJ1Y3QgZmlsZWlkIGZo
X2ZpZDsKfTsKIyA1NjMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgdW5pcXVlX2lkIHsKICAg
ICAgIF9fdWxvbmczMl90IHdvcmQxOwogICAgICAgX191bG9uZzMyX3Qgd29yZDI7CiAgICAgICBf
X3Vsb25nMzJfdCB3b3JkMzsKICAgICAgIF9fdWxvbmczMl90IHdvcmQ0Owp9Owp0eXBlZGVmIHN0
cnVjdCB1bmlxdWVfaWQgdW5pcXVlX2lkX3Q7CiMgNTk1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlw
ZWRlZiBsb25nIGxvbmcgb2Zmc2V0X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
c2l6ZTY0X3Q7CnR5cGVkZWYgbG9uZyBsb25nIHNzaXplNjRfdDsKCgoKCgoKdHlwZWRlZiBsb25n
IGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9sb25nbG9uZ190
OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IGNsYXNzX2lkX3Q7CgoKCn0KIyAzNyAiL3Vzci9pbmNs
dWRlL3N5cy9sY19jb3JlLmgiIDIgMyA0CgoKZXh0ZXJuICJDIiB7CiMgNTIgIi91c3IvaW5jbHVk
ZS9zeXMvbGNfY29yZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIHVuc2lnbmVkIHNob3J0
CiBfX3R5cGVfaWQsCiBfX21hZ2ljOwogICAgdW5zaWduZWQgbG9uZwogX192ZXJzaW9uOwoKICAg
IHNpemVfdCBfX3NpemU7Cgp9IF9MQ19vYmplY3RfdDsKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMv
bGNfY29yZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmplY3RfdCBfX2hkcjsK
CgoKICAgIGludCBfX2NhdGdldHM7CiAgICBpbnQgX19jYXRjbG9zZTsKCgogICAgaW50IF9fY29t
cHJlc3M7CiAgICBpbnQgX19kZWNvbXByZXNzOwogICAgaW50IF9fc3RhcnRfY29tcHJlc3M7CiAg
ICBpbnQgX19lbmRfY29tcHJlc3M7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7
Cn0gX0xDX2NvcmVfY2FyX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9f
aGRyOwoKCiAgICBpbnQgX19ubF9sYW5naW5mbzsKCgogICAgaW50IF9fbWJ0b3djOwogICAgaW50
IF9fbWJzdG93Y3M7CiAgICBpbnQgX193Y3RvbWI7CiAgICBpbnQgX193Y3N0b21iczsKCgogICAg
aW50IF9fbWJsZW47CgoKICAgIGludCBfX3djc3dpZHRoOwogICAgaW50IF9fd2N3aWR0aDsKCgog
ICAgaW50IF9fbWJ0b3BjOwogICAgaW50IF9fbWJzdG9wY3M7CiAgICBpbnQgX19wY3RvbWI7CiAg
ICBpbnQgX19wY3N0b21iczsKCgogICAgaW50IF9fY3NpZDsKICAgIGludCBfX3djc2lkOwoKCiAg
ICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX2NoYXJtYXBfdDsKCgp0
eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoKCiAgICBpbnQgX190b3d1
cHBlcjsKICAgIGludCBfX3Rvd2xvd2VyOwoKCiAgICBpbnQgX19nZXRfd2N0eXBlOwogICAgaW50
IF9faXNfd2N0eXBlOwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19j
b3JlX2N0eXBlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoK
CiAgICBpbnQgX19zdHJjb2xsOwogICAgaW50IF9fc3RyeGZybTsKCgogICAgaW50IF9fd2NzY29s
bDsKICAgIGludCBfX3djc3hmcm07CgoKICAgIGludCBfX2ZubWF0Y2g7CgoKICAgIGludCBfX3Jl
Z2NvbXA7CiAgICBpbnQgX19yZWdlcnJvcjsKICAgIGludCBfX3JlZ2V4ZWM7CiAgICBpbnQgX19y
ZWdmcmVlOwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX2Nv
bGxhdGVfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoKCiAg
ICBpbnQgX19ubF9sYW5naW5mbzsKCgogICAgaW50IF9fc3RyZnRpbWU7CiAgICBpbnQgX19zdHJw
dGltZTsKCgogICAgaW50IF9fd2NzZnRpbWU7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpf
X2RhdGE7Cn0gX0xDX2NvcmVfdGltZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2Jq
ZWN0X3QgX19oZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19zdHJmbW9u
OwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX21vbmV0YXJ5
X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmplY3RfdCBfX2hkcjsKCgogICAgaW50
IF9fbmxfbGFuZ2luZm87CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xD
X2NvcmVfbnVtZXJpY190OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19o
ZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19ycG1hdGNoOwoKCiAgICBp
bnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX3Jlc3BfdDsKCnR5cGVkZWYg
c3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19oZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZv
OwogICAgaW50IF9fbG9jYWxlY29udjsKCgogICAgaW50IF9faW5pdDsKICAgIHZvaWQgKl9fZGF0
YTsKfSBfTENfY29yZV9sb2NhbGVfdDsKCgoKfQojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs
ZWRlZi5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYzMS5oIiAxIDMg
NAojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZjMxLmgiIDMgNAp0eXBlZGVmIHN0cnVj
dCBjb2xkZXNjIHsKIHNob3J0IGNkX3N0cm9mZjsKIHNob3J0IGNkX3JlcG9mZjsKIHNob3J0IGNk
X2N2YWw7CiBzaG9ydCBjZF9jdW5pcTsKfSBjb2xkZXNjX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBj
b2xsYXRpb25fdGFibGUgewogc2hvcnQgbGNfdmVyc2lvbjsKIHNob3J0IGxjX2xlbmd0aDsKIGNo
YXIgKmxjX2xvY2FsZV9uYW1lOwogaW50IGxlbl9jb2xsYXRlOwogc2hvcnQgKmxjX2NvbGxhdGU7
CiBpbnQgbGVuX2NvbHVuaXE7CiBzaG9ydCAqbGNfY29sdW5pcTsKIGludCBsZW5fY29sZGVzYzsK
IGNvbGRlc2NfdCAqbGNfY29sZGVzYzsKIGludCBsZW5fc3RyaW5nczsKIHdjaGFyX3QgKmxjX3N0
cmluZ3M7CiBpbnQgaGlnaF9jdmFsdWU7Cn0gY29sX3Q7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBj
aGFyX2NsYXNzaWZpY2F0aW9uX3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19s
ZW5ndGg7CiBzaG9ydCBsY19jb2RlX3R5cGU7CiBzaG9ydCBtYl9jdXJfbWF4Owogc2hvcnQgbWJf
Y3VyX21pbjsKIHNob3J0IGxjX2RzcF93aWR0aDsKIGNoYXIgKmxjX2xvY2FsZV9uYW1lOwogaW50
IGxlbl9jYXNlY29udjsKIHdjaGFyX3QgKmxjX2Nhc2Vjb252OwogaW50IGxlbl9jdHlwZTsKIHVu
c2lnbmVkIHNob3J0ICpsY19jdHlwZTsKfSBjdHlwZV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxj
X21vbmV0YXJ5X3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBj
aGFyICpsY19sb2NhbGVfbmFtZTsKIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKIGNoYXIgKmN1cnJl
bmN5X3N5bWJvbDsKIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogY2hhciAqbW9uX3Rob3VzYW5k
c19zZXA7CiBjaGFyICptb25fZ3JvdXBpbmc7CiBjaGFyICpwb3NpdGl2ZV9zaWduOwogY2hhciAq
bmVnYXRpdmVfc2lnbjsKIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogY2hhciBmcmFjX2RpZ2l0czsK
IGNoYXIgcF9jc19wcmVjZWRlczsKIGNoYXIgcF9zZXBfYnlfc3BhY2U7CiBjaGFyIG5fY3NfcHJl
Y2VkZXM7CiBjaGFyIG5fc2VwX2J5X3NwYWNlOwogY2hhciBwX3NpZ25fcG9zbjsKIGNoYXIgbl9z
aWduX3Bvc247Cn0gbW9uX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgbnVtZXJpY190YWJsZSB7CiBz
aG9ydCBsY192ZXJzaW9uOwogc2hvcnQgbGNfbGVuZ3RoOwogY2hhciAqbGNfbG9jYWxlX25hbWU7
CiBjaGFyICpkZWNpbWFsX3BvaW50OwogY2hhciAqdGhvdXNhbmRzX3NlcDsKIGNoYXIgKmdyb3Vw
aW5nOwp9IG51bV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxjX21lc3NhZ2VzX3RhYmxlIHsKIHNo
b3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19sb2NhbGVfbmFtZTsK
IGNoYXIgKm1lc3NhZ2VzOwogY2hhciAqeWVzX3N0cmluZzsKIGNoYXIgKm5vX3N0cmluZzsKfSBt
c2dfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY190aW1lX3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNp
b247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19sb2NhbGVfbmFtZTsKIGNoYXIgKnRfZm10
OwogY2hhciAqZF9mbXQ7CiBjaGFyICpubGxkYXRlOwogY2hhciAqZF90X2ZtdDsKIGNoYXIgKmFi
ZGF5OwogY2hhciAqZGF5OwogY2hhciAqYWJtb247CiBjaGFyICptb247CgoKCgogY2hhciAqbWlz
YzsKIGNoYXIgKnRzdHJzOwogY2hhciAqdHVuaXRzOwoKCgogY2hhciAqeWVhcjsKIGNoYXIgKmFt
X3BtOwp9IHRpbV90OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB3Y2hhcl9tYXBwaW5nX3RhYmxlIHsK
IHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19pZGVudGlmaWVy
Owp9IG1hcF90OwojIDE4MyAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYzMS5oIiAzIDQKdHlw
ZWRlZiBzdHJ1Y3QgbG9jYWxlaW5mb190YWJsZSB7CiBjaGFyIGxjX21hZzAsIGxjX21hZzE7CiBz
aG9ydCBsY192ZXJzaW9uOwogc2hvcnQgbGNfY29kZV90eXBlOwogc2hvcnQgbGNfbGVuZ3RoOwog
Y29sX3QgKmxjX2NvbHRibDsKIGN0eXBlX3QgKmxjX2NocnRibDsKIG1vbl90ICpsY19tb250Ymw7
CiBudW1fdCAqbGNfbnVtdGJsOwogdGltX3QgKmxjX3RpbXRibDsKIG1zZ190ICpsY19tc2d0Ymw7
CiBtYXBfdCAqbGNfbWFwdGJsOwp9IGxvY190OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs
ZWRlZi5oIiAyIDMgNAojIDY2ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlw
ZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19jb3JlX2NoYXJtYXBfdCBjb3JlOwoKICAgIGNoYXIgKmNt
X2NzbmFtZTsKCiAgICBzaXplX3QgY21fbWJfY3VyX21heDsKICAgIHNpemVfdCBjbV9tYl9jdXJf
bWluOwoKICAgIHVuc2lnbmVkIGNoYXIKICAgICAgY21fbWF4X2Rpc3Bfd2lkdGg7CgoKICAgIHVu
c2lnbmVkCiBjaGFyICpjbV9jc3RhYjsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAg
ICAgICpsb2NfcmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2b2lkICpfX2RhdGFfcHRy
OwoKfSBfTENfY2hhcm1hcF90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX2NoYXJtYXBfb2JqaGRsIF9M
Q19jaGFybWFwX29iamhkbF90OwoKc3RydWN0IF9MQ19jaGFybWFwX29iamhkbCB7CiBfTENfY2hh
cm1hcF90ICpvYmo7CgoKIHZvaWQgKigqKm1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2Jq
aGRsICpsb2NfaGRsOwoKCn07CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX2NvcmVf
bW9uZXRhcnlfdCBjb3JlOwoKICAgIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICAgIGNoYXIgKmN1
cnJlbmN5X3N5bWJvbDsKICAgIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogICAgY2hhciAqbW9u
X3Rob3VzYW5kc19zZXA7CiAgICBjaGFyICptb25fZ3JvdXBpbmc7CiAgICBjaGFyICpwb3NpdGl2
ZV9zaWduOwogICAgY2hhciAqbmVnYXRpdmVfc2lnbjsKICAgIHNpZ25lZCBjaGFyIGludF9mcmFj
X2RpZ2l0czsKICAgIHNpZ25lZCBjaGFyIGZyYWNfZGlnaXRzOwogICAgc2lnbmVkIGNoYXIgcF9j
c19wcmVjZWRlczsKICAgIHNpZ25lZCBjaGFyIHBfc2VwX2J5X3NwYWNlOwogICAgc2lnbmVkIGNo
YXIgbl9jc19wcmVjZWRlczsKICAgIHNpZ25lZCBjaGFyIG5fc2VwX2J5X3NwYWNlOwogICAgc2ln
bmVkIGNoYXIgcF9zaWduX3Bvc247CiAgICBzaWduZWQgY2hhciBuX3NpZ25fcG9zbjsKICAgIGNo
YXIgKmRlYml0X3NpZ247CiAgICBjaGFyICpjcmVkaXRfc2lnbjsKICAgIGNoYXIgKmxlZnRfcGFy
ZW50aGVzaXM7CiAgICBjaGFyICpyaWdodF9wYXJlbnRoZXNpczsKCiAgICBzdHJ1Y3QgX19MQ19s
b2NhbGUKICAgICAgICAgICAgICpsb2NfcmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2
b2lkICpfX2RhdGFfcHRyOwoKfSBfTENfbW9uZXRhcnlfdDsKCnR5cGVkZWYgc3RydWN0IF9MQ19t
b25ldGFyeV9vYmpoZGwgX0xDX21vbmV0YXJ5X29iamhkbF90OwpzdHJ1Y3QgX0xDX21vbmV0YXJ5
X29iamhkbCB7CiBfTENfbW9uZXRhcnlfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoKCnN0
cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgp0eXBlZGVmIHN0cnVj
dCB7CgogICAgX0xDX2NvcmVfbnVtZXJpY190IGNvcmU7CgogICAgY2hhciAqZGVjaW1hbF9wb2lu
dDsKICAgIGNoYXIgKnRob3VzYW5kc19zZXA7CiAgICB1bnNpZ25lZAogY2hhciAqZ3JvdXBpbmc7
CgogICAgc3RydWN0IF9fTENfbG9jYWxlCiAgICAgICAgICAgICAqbG9jX3JlYzsKCiAgICB2b2lk
ICpfX21ldGhfcHRyOwogICAgdm9pZCAqX19kYXRhX3B0cjsKCn0gX0xDX251bWVyaWNfdDsKCnR5
cGVkZWYgc3RydWN0IF9MQ19udW1lcmljX29iamhkbCBfTENfbnVtZXJpY19vYmpoZGxfdDsKc3Ry
dWN0IF9MQ19udW1lcmljX29iamhkbCB7CiBfTENfbnVtZXJpY190ICpvYmo7CgoKIHZvaWQgKigq
Km1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CgoKCgoK
Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX2NvcmVfcmVzcF90IGNvcmU7CgogICAgY2hhciAq
eWVzZXhwcjsKICAgIGNoYXIgKm5vZXhwcjsKICAgIGNoYXIgKnllc3N0cjsKICAgIGNoYXIgKm5v
c3RyOwoKICAgIHN0cnVjdCBfX0xDX2xvY2FsZQogICAgICAgICAgICAgKmxvY19yZWM7CgogICAg
dm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19yZXNwX3Q7Cgp0
eXBlZGVmIHN0cnVjdCBfTENfcmVzcF9vYmpoZGwgX0xDX3Jlc3Bfb2JqaGRsX3Q7CnN0cnVjdCBf
TENfcmVzcF9vYmpoZGwgewogX0xDX3Jlc3BfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoK
CnN0cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgewoKICAgIF9MQ19jb3JlX3RpbWVfdCBjb3JlOwoKICAgIGNoYXIgKmRfZm10OwogICAg
Y2hhciAqdF9mbXQ7CiAgICBjaGFyICpkX3RfZm10OwogICAgY2hhciAqdF9mbXRfYW1wbTsKICAg
IGNoYXIgKmFiZGF5WzddOwogICAgY2hhciAqZGF5WzddOwogICAgY2hhciAqYWJtb25bMTJdOwog
ICAgY2hhciAqbW9uWzEyXTsKICAgIGNoYXIgKmFtX3BtWzJdOwogICAgY2hhciAqZXJhOwogICAg
Y2hhciAqZXJhX3llYXI7CiAgICBjaGFyICplcmFfZF9mbXQ7CiAgICBjaGFyICphbHRfZGlnaXRz
OwogICAgY2hhciAqZXJhX2RfdF9mbXQ7CiAgICBjaGFyICplcmFfdF9mbXQ7CgogICAgc3RydWN0
IF9fTENfbG9jYWxlCiAgICAgICAgICAgICAqbG9jX3JlYzsKCiAgICB2b2lkICpfX21ldGhfcHRy
OwogICAgdm9pZCAqX19kYXRhX3B0cjsKCn0gX0xDX3RpbWVfdDsKCnR5cGVkZWYgc3RydWN0IF9M
Q190aW1lX29iamhkbCBfTENfdGltZV9vYmpoZGxfdDsKc3RydWN0IF9MQ190aW1lX29iamhkbCB7
CiBfTENfdGltZV90ICpvYmo7CgoKIHZvaWQgKigqKm1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2Nh
bGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkCiBzaG9ydCBuWzQgKzFdOwp9IF9MQ193ZWlnaHRfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewoKICAgIGNoYXIgKmNlX3N5bTsKICAgIF9MQ193ZWlnaHRfdCBjZV93Z3Q7Cgp9IF9MQ19jb2xs
ZWxfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgX0xDX3dlaWdodF90IGN0X3dndDsKCgog
ICAgX0xDX2NvbGxlbF90ICpjdF9jb2xsZWw7Cgp9IF9MQ19jb2x0YmxfdDsKIyAzMTkgIi91c3Iv
aW5jbHVkZS9zeXMvbG9jYWxlZGVmLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICp0
Z3Rfd2d0X3N0cls0ICsxXTsKCgp9IF9MQ19zdWJzX3Q7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7
CgogICAgX0xDX2NvcmVfY29sbGF0ZV90IGNvcmU7CgogICAgdW5zaWduZWQKIGNoYXIgY29fbm9y
ZDsKCiAgICBfTENfd2VpZ2h0X3QgY29fc29ydDsKCgogICAgd2NoYXJfdCBjb193Y19taW47CiAg
ICB3Y2hhcl90IGNvX3djX21heDsKCiAgICB3Y2hhcl90IGNvX2NvbF9taW47CiAgICB3Y2hhcl90
IGNvX2NvbF9tYXg7CgogICAgX0xDX2NvbHRibF90ICpjb19jb2x0Ymw7CgogICAgdW5zaWduZWQK
IGNoYXIgY29fbnN1YnM7CiAgICBfTENfc3Vic190ICpjb19zdWJzOwoKICAgIHVuc2lnbmVkCiBz
aG9ydCBjb19zcGVjaWFsOwoKCgoKICAgIHN0cnVjdCBfX0xDX2xvY2FsZQogICAgICAgICAgICAg
ICAgKmxvY19yZWM7CgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7
Cgp9IF9MQ19jb2xsYXRlX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfTENfY29sbGF0ZV9vYmpoZGwgX0xD
X2NvbGxhdGVfb2JqaGRsX3Q7CnN0cnVjdCBfTENfY29sbGF0ZV9vYmpoZGwgewogX0xDX2NvbGxh
dGVfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoKCnN0cnVjdCBfTENfbG9jYWxlX29iamhk
bCAqbG9jX2hkbDsKCgp9OwojIDM5MiAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0
CnR5cGVkZWYgc3RydWN0IHsKCiAgICBjaGFyICpuYW1lOwogICAgdW5zaWduZWQKIGludCBtYXNr
OwoKfSBfTENfY2xhc3NubV90OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICBfTENfY29yZV9j
dHlwZV90IGNvcmU7CgoKICB3Y2hhcl90IG1pbl93YzsKICB3Y2hhcl90IG1heF93YzsKCgogIHdj
aGFyX3QgKnVwcGVyOwogIHdjaGFyX3QgKmxvd2VyOwoKCiAgdW5zaWduZWQKICAgICAgaW50ICpt
YXNrOwogIHVuc2lnbmVkCiAgICAgIGludCAqcW1hc2s7CiAgdW5zaWduZWQKICAgICAgY2hhciAq
cWlkeDsKCgogIHVuc2lnbmVkCiAgICAgIGNoYXIgbmNsYXNzZXM7CiBfTENfY2xhc3NubV90ICpj
bGFzc25tczsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAgICAgICAgKmxvY19yZWM7
CgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19jdHlw
ZV90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX2N0eXBlX29iamhkbCBfTENfY3R5cGVfb2JqaGRsX3Q7
CnN0cnVjdCBfTENfY3R5cGVfb2JqaGRsIHsKIF9MQ19jdHlwZV90ICpvYmo7CgoKIHZvaWQgKigq
Km1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CiMgNDY1
ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX19MQ19s
b2NhbGUgewoKICAgIF9MQ19jb3JlX2xvY2FsZV90IGNvcmU7CgogICAgY2hhciAqbmxfaW5mb1s2
M107CiAgICBzdHJ1Y3QgbGNvbnYgKm5sX2xjb252OwoKICAgIF9MQ19jaGFybWFwX29iamhkbF90
IGxjX2NoYXJtYXA7CiAgICBfTENfY29sbGF0ZV9vYmpoZGxfdCBsY19jb2xsYXRlOwogICAgX0xD
X2N0eXBlX29iamhkbF90IGxjX2N0eXBlOwogICAgX0xDX21vbmV0YXJ5X29iamhkbF90IGxjX21v
bmV0YXJ5OwogICAgX0xDX251bWVyaWNfb2JqaGRsX3QgbGNfbnVtZXJpYzsKICAgIF9MQ19yZXNw
X29iamhkbF90IGxjX3Jlc3A7CiAgICBfTENfdGltZV9vYmpoZGxfdCBsY190aW1lOwoKICAgIHN0
cnVjdCBfX0xDX2xvY2FsZSAqbG9jX3JlYzsKCgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZv
aWQgKl9fZGF0YV9wdHI7CgogICAgY2hhciAqX19ubF95ZXNzdHI7CiAgICBjaGFyICpfX25sX25v
c3RyOwogICAgY2hhciAqX19ubF9jcm5jeXN0cjsKCn0gX0xDX2xvY2FsZV90OwoKdHlwZWRlZiBz
dHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgX0xDX2xvY2FsZV9vYmpoZGxfdDsKc3RydWN0IF9MQ19s
b2NhbGVfb2JqaGRsIHsKIF9MQ19sb2NhbGVfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoK
CnN0cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwojIDUxMiAiL3Vzci9pbmNs
dWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9MQ19vYmplY3RfaGFuZGxl
IF9MQ19vYmplY3RfaGFuZGxlX3Q7CnN0cnVjdCBfTENfb2JqZWN0X2hhbmRsZSB7CiAgICB1bmlv
biB7CiBfTENfb2JqZWN0X3QgbGNfb2JqZWN0OwogX0xDX2xvY2FsZV9vYmpoZGxfdCBsY19sb2Nh
bGU7CiAgICAgICAgX0xDX2NoYXJtYXBfb2JqaGRsX3QgbGNfY2hhcm1hcDsKICAgICAgICBfTENf
Y29sbGF0ZV9vYmpoZGxfdCBsY19jb2xsYXRlOwogICAgICAgIF9MQ19jdHlwZV9vYmpoZGxfdCBs
Y19jdHlwZTsKICAgICAgICBfTENfbW9uZXRhcnlfb2JqaGRsX3QgbGNfbW9uZXRhcnk7CiAgICAg
ICAgX0xDX251bWVyaWNfb2JqaGRsX3QgbGNfbnVtZXJpYzsKICAgICAgICBfTENfcmVzcF9vYmpo
ZGxfdCBsY19yZXNwOwogICAgICAgIF9MQ190aW1lX29iamhkbF90IGxjX3RpbWU7CiAgICB9IG9i
ajsKCgogICAgdm9pZCAqKCoqbWV0aCkoKTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxv
Y19oZGw7CgoKfTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBfTENfb2JqZWN0X3QgaGRyOwogICAg
X0xDX2xvY2FsZV9vYmpoZGxfdCBoYW5kbGU7Cn0gX0xDX2xvYWRfb2JqZWN0X3Q7CgoKCgoKCgpl
eHRlcm4gX0xDX2NoYXJtYXBfb2JqaGRsX3QgX19sY19jaGFybWFwOwpleHRlcm4gX0xDX2NvbGxh
dGVfb2JqaGRsX3QgX19sY19jb2xsYXRlOwpleHRlcm4gX0xDX2N0eXBlX29iamhkbF90IF9fbGNf
Y3R5cGU7CmV4dGVybiBfTENfbW9uZXRhcnlfb2JqaGRsX3QgX19sY19tb25ldGFyeTsKZXh0ZXJu
IF9MQ19udW1lcmljX29iamhkbF90IF9fbGNfbnVtZXJpYzsKZXh0ZXJuIF9MQ19yZXNwX29iamhk
bF90IF9fbGNfcmVzcDsKZXh0ZXJuIF9MQ190aW1lX29iamhkbF90IF9fbGNfdGltZTsKZXh0ZXJu
IF9MQ19sb2NhbGVfb2JqaGRsX3QgX19sY19sb2NhbGU7CiMgMTMyICIvZ2NjL2RqZS9idWlsZC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2N0eXBlLmgiIDIgMyA0
CgoKCgoKCgogZXh0ZXJuIGludCBpc193Y3R5cGUod2ludF90LCB3Y3R5cGVfdCk7CiBleHRlcm4g
d2N0eXBlX3QgZ2V0X3djdHlwZShjaGFyICopOwogZXh0ZXJuIGludCBpc2JsYW5rKGludCk7CiMg
NTAgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw
Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jY3R5cGUiIDIgMwojIDY2ICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2N0eXBlIiAzCm5hbWVzcGFjZSBzdGQK
ewogIHVzaW5nIDo6aXNhbG51bTsKICB1c2luZyA6OmlzYWxwaGE7CiAgdXNpbmcgOjppc2NudHJs
OwogIHVzaW5nIDo6aXNkaWdpdDsKICB1c2luZyA6OmlzZ3JhcGg7CiAgdXNpbmcgOjppc2xvd2Vy
OwogIHVzaW5nIDo6aXNwcmludDsKICB1c2luZyA6OmlzcHVuY3Q7CiAgdXNpbmcgOjppc3NwYWNl
OwogIHVzaW5nIDo6aXN1cHBlcjsKICB1c2luZyA6OmlzeGRpZ2l0OwogIHVzaW5nIDo6dG9sb3dl
cjsKICB1c2luZyA6OnRvdXBwZXI7Cn0KIyA0OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p
bmNsdWRlL2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl
L2JpdHMvc3RyaW5nZndkLmgiIDEgMwojIDQzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2lu
Y2x1ZGUvYml0cy9zdHJpbmdmd2QuaCIgMwoKCgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQWxsb2M+CiAgICBjbGFzcyBhbGxvY2F0b3I7CgogIHRlbXBsYXRlPGNsYXNzIF9D
aGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBl
bmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmc7
CgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+OwoKICB0eXBlZGVmIGJhc2lj
X3N0cmluZzxjaGFyPiBzdHJpbmc7CgoKCgoKCn0KIyA0OSAiL2djYy9kamUvYnVpbGQvcG93ZXJw
Yy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMr
Ky12My9pbmNsdWRlL2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p
bmNsdWRlL2JpdHMvZnBvcy5oIiAxIDMKIyA0MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p
bmNsdWRlL2JpdHMvZnBvcy5oIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j
bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysraW8uaCIgMSAzCiMgMzUgIi9nY2Mv
ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMv
YysraW8uaCIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8i
IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGlvIiAzCgoK
IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGRlZiIgMSAzCiMgNDcg
Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkZGVmIiAzCgojIDEgIi9nY2Mv
ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgNDkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3Rk
ZGVmIiAyIDMKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6cHRyZGlmZl90OwogIHVzaW5nIDo6
c2l6ZV90Owp9CiMgNTEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8i
IDIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMTQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt
aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzIDQKIyA0MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3Zh
X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyA2MSAiL2djYy9k
amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRp
by5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMTUwICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVj
dCB7CiB1bnNpZ25lZCBjaGFyICpfcHRyOwogaW50IF9jbnQ7CiB1bnNpZ25lZCBjaGFyICpfYmFz
ZTsKIHVuc2lnbmVkIGNoYXIgKl9idWZlbmRwOwogc2hvcnQgX2ZsYWc7CiBzaG9ydCBfZmlsZTsK
IGludCBfX3N0ZGlvaWQ7CiBjaGFyICpfX25ld2Jhc2U7CgoKCiBsb25nIF91bnVzZWRbMV07CgoK
Cgp9IEZJTEU7CgoKCgpleHRlcm4gRklMRSBfaW9iWzE2XTsKIyAxODUgIi9nY2MvZGplL2J1aWxk
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0
CmV4dGVybiBzaXplX3QgZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKZXh0
ZXJuIHNpemVfdCBmd3JpdGUoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCxGSUxFICopOwoj
IDIzNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2Mv
aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBfX2Zsc2J1Zih1bnNpZ25lZCBjaGFyLCBG
SUxFICopOwpleHRlcm4gaW50IF9fZmlsYnVmKEZJTEUgKik7CmV4dGVybiBpbnQgZmVycm9yKEZJ
TEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gdm9pZCBjbGVhcmVycihGSUxF
ICopOwpleHRlcm4gaW50IHB1dGNoYXIoaW50KTsKZXh0ZXJuIGludCBnZXRjaGFyKHZvaWQpOwpl
eHRlcm4gaW50IHB1dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IGdldGMoRklMRSAqKTsKZXh0
ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCByZW5hbWUoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqdG1wZmlsZSh2b2lkKTsKZXh0ZXJuIGNo
YXIgKnRtcG5hbShjaGFyICopOwpleHRlcm4gaW50IGZjbG9zZShGSUxFICopOwpleHRlcm4gaW50
IGZmbHVzaChGSUxFICopOwpleHRlcm4gRklMRSAqZm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICopOwpleHRlcm4gRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
RklMRSAqKTsKZXh0ZXJuIHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKZXh0ZXJuIGludCBz
ZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBpbnQgZnByaW50ZihG
SUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25z
dCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0
ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgc3ByaW50ZihjaGFy
ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc25wcmludGYoY2hhciAqLCBzaXpl
X3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCAuLi4pOwojIDI3MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvdmFfbGlzdC5oIiAxIDMgNAojIDI3MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRpby5oIiAyIDMgNApleHRlcm4gaW50IHZm
cHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQg
dnByaW50Zihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIGludCB2c3ByaW50
ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoKZXh0ZXJuIGludCB2c25w
cmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoKCgpl
eHRlcm4gaW50IGZnZXRjKEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwg
RklMRSAqKTsKZXh0ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMo
Y29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gY2hhciAqZ2V0cyhjaGFyICopOwpleHRlcm4g
aW50IHB1dHMoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB1bmdldGMoaW50LCBGSUxFICopOwpl
eHRlcm4gaW50IGZnZXRwb3MoRklMRSAqLCBmcG9zX3QgKik7CmV4dGVybiBpbnQgZnNlZWsoRklM
RSAqLCBsb25nIGludCwgaW50KTsKZXh0ZXJuIGludCBmc2V0cG9zKEZJTEUgKiwgY29uc3QgZnBv
c190ICopOwpleHRlcm4gbG9uZyBmdGVsbChGSUxFICopOwpleHRlcm4gdm9pZCByZXdpbmQoRklM
RSAqKTsKZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIGludCBn
ZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsK
ZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwdXRjaGFy
X3VubG9ja2VkKGludCk7CiMgMzg4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu
My4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZpbGVubyhG
SUxFICopOwpleHRlcm4gRklMRSAqZmRvcGVuKGludCxjb25zdCBjaGFyICopOwpleHRlcm4gY2hh
ciAqY3Rlcm1pZChjaGFyICopOwoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlKEZJTEUgKik7CmV4dGVy
biB2b2lkIGZ1bmxvY2tmaWxlKEZJTEUgKik7CmV4dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2Zm
X3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVsbG8oRklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9j
a2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKIyA0MTAgIi9n
Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3ZhX2xpc3QuaCIgMSAzIDQKIyA0MTEgIi9n
Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv
c3RkaW8uaCIgMiAzIDQKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0ZXJyOwpl
eHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7CiMgNDI4ICIvZ2NjL2RqZS9idWls
ZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMg
NApleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsK
ZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKZXh0ZXJuIEZJ
TEUgKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwY2xvc2Uo
RklMRSAqKTsKZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICogY29uc3QgW10sIGNvbnN0IGNo
YXIqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKIyA0NDggIi9nY2MvZGplL2J1aWxk
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0
CmV4dGVybiBpbnQgZmdldHBvczY0KEZJTEUgKiwgZnBvczY0X3QgKik7CmV4dGVybiBGSUxFICpm
b3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42
NChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIGludCBmc2Vla282
NChGSUxFICosIG9mZjY0X3QsIGludCk7CmV4dGVybiBpbnQgZnNldHBvczY0KEZJTEUgKiwgY29u
c3QgZnBvczY0X3QgKik7CmV4dGVybiBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKik7CiMgNDYzICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRl
L3N0ZGlvLmgiIDMgNApleHRlcm4gdm9pZCBzZXRidWZmZXIoRklMRSAqLCBjaGFyICosIHNpemVf
dCk7CmV4dGVybiB2b2lkIHNldGxpbmVidWYoRklMRSAqKTsKZXh0ZXJuIGludCB2c2NhbmYoY29u
c3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQgdmZzY2FuZihGSUxFICosIGNv
bnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZzc2NhbmYoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKIyA1MzQgIi9nY2MvZGplL2J1aWxk
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0
Cn0KIyA1MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRpbyIgMiAzCiMg
OTcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw
Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8iIDMKbmFtZXNwYWNl
IHN0ZAp7CiAgdXNpbmcgOjpGSUxFOwogIHVzaW5nIDo6ZnBvc190OwoKICB1c2luZyA6OmNsZWFy
ZXJyOwogIHVzaW5nIDo6ZmNsb3NlOwogIHVzaW5nIDo6ZmVvZjsKICB1c2luZyA6OmZlcnJvcjsK
ICB1c2luZyA6OmZmbHVzaDsKICB1c2luZyA6OmZnZXRjOwogIHVzaW5nIDo6ZmdldHBvczsKICB1
c2luZyA6OmZnZXRzOwogIHVzaW5nIDo6Zm9wZW47CiAgdXNpbmcgOjpmcHJpbnRmOwogIHVzaW5n
IDo6ZnB1dGM7CiAgdXNpbmcgOjpmcHV0czsKICB1c2luZyA6OmZyZWFkOwogIHVzaW5nIDo6ZnJl
b3BlbjsKICB1c2luZyA6OmZzY2FuZjsKICB1c2luZyA6OmZzZWVrOwogIHVzaW5nIDo6ZnNldHBv
czsKICB1c2luZyA6OmZ0ZWxsOwogIHVzaW5nIDo6ZndyaXRlOwogIHVzaW5nIDo6Z2V0YzsKICB1
c2luZyA6OmdldGNoYXI7CiAgdXNpbmcgOjpnZXRzOwogIHVzaW5nIDo6cGVycm9yOwogIHVzaW5n
IDo6cHJpbnRmOwogIHVzaW5nIDo6cHV0YzsKICB1c2luZyA6OnB1dGNoYXI7CiAgdXNpbmcgOjpw
dXRzOwogIHVzaW5nIDo6cmVtb3ZlOwogIHVzaW5nIDo6cmVuYW1lOwogIHVzaW5nIDo6cmV3aW5k
OwogIHVzaW5nIDo6c2NhbmY7CiAgdXNpbmcgOjpzZXRidWY7CiAgdXNpbmcgOjpzZXR2YnVmOwog
IHVzaW5nIDo6c3ByaW50ZjsKICB1c2luZyA6OnNzY2FuZjsKICB1c2luZyA6OnRtcGZpbGU7CiAg
dXNpbmcgOjp0bXBuYW07CiAgdXNpbmcgOjp1bmdldGM7CiAgdXNpbmcgOjp2ZnByaW50ZjsKICB1
c2luZyA6OnZwcmludGY7CiAgdXNpbmcgOjp2c3ByaW50ZjsKfQojIDM2ICIvZ2NjL2RqZS9idWls
ZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAv
bGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2MrK2lvLmgi
IDIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC9iaXRzL2d0aHIuaCIgMSAzCiMgOTYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt
aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKyst
djMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvZ3Roci5oIiAzCiMgMSAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0
cy9ndGhyLWRlZmF1bHQuaCIgMSAzCiMgMzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j
bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKIyAxICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9i
aXRzL2d0aHItc2luZ2xlLmgiIDEgMwojIDM0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2lu
Y2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItc2luZ2xlLmgiIDMKdHlwZWRl
ZiBpbnQgX19ndGhyZWFkX211dGV4X3Q7CiMgMjExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWli
bS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYz
L2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItc2luZ2xlLmgiIDMKc3Rh
dGljIGlubGluZSBpbnQKX19ndGhyZWFkX2FjdGl2ZV9wICh2b2lkKQp7CiAgcmV0dXJuIDA7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2NrIChfX2d0aHJlYWRfbXV0ZXhf
dCAqICkKewogIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfbXV0ZXhf
dHJ5bG9jayAoX19ndGhyZWFkX211dGV4X3QgKiApCnsKICByZXR1cm4gMDsKfQoKc3RhdGljIGlu
bGluZSBpbnQKX19ndGhyZWFkX211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3QgKiApCnsK
ICByZXR1cm4gMDsKfQojIDM2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w
LTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKIyA5NyAiL2djYy9k
amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0cy9n
dGhyLmgiIDIgMwojIDM4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJw
Yy1pYm0tYWl4NC4zLjMuMC9iaXRzL2MrK2lvLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHR5
cGVkZWYgbG9uZyBzdHJlYW1vZmY7CiAgdHlwZWRlZiBwdHJkaWZmX3Qgc3RyZWFtc2l6ZTsKCgoK
ICB0eXBlZGVmIGZwb3NfdCBfX2Nfc3RyZWFtcG9zOwoKICB0eXBlZGVmIF9fZ3RocmVhZF9tdXRl
eF90IF9fY19sb2NrOwoKCiAgdHlwZWRlZiBGSUxFIF9fY19maWxlOwoKCiAgc3RydWN0IF9faW9z
X2ZsYWdzCiAgewogICAgdHlwZWRlZiBzaG9ydCBfX2ludF90eXBlOwoKICAgIHN0YXRpYyBjb25z
dCBfX2ludF90eXBlIF9TX2Jvb2xhbHBoYSA9IDB4MDAwMTsKICAgIHN0YXRpYyBjb25zdCBfX2lu
dF90eXBlIF9TX2RlYyA9IDB4MDAwMjsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2Zp
eGVkID0gMHgwMDA0OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfaGV4ID0gMHgwMDA4
OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfaW50ZXJuYWwgPSAweDAwMTA7CiAgICBz
dGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19sZWZ0ID0gMHgwMDIwOwogICAgc3RhdGljIGNvbnN0
IF9faW50X3R5cGUgX1Nfb2N0ID0gMHgwMDQwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg
X1NfcmlnaHQgPSAweDAwODA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zY2llbnRp
ZmljID0gMHgwMTAwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd2Jhc2UgPSAw
eDAyMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zaG93cG9pbnQgPSAweDA0MDA7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zaG93cG9zID0gMHgwODAwOwogICAgc3Rh
dGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2tpcHdzID0gMHgxMDAwOwogICAgc3RhdGljIGNvbnN0
IF9faW50X3R5cGUgX1NfdW5pdGJ1ZiA9IDB4MjAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90
eXBlIF9TX3VwcGVyY2FzZSA9IDB4NDAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X2FkanVzdGZpZWxkID0gMHgwMDIwIHwgMHgwMDgwIHwgMHgwMDEwOwogICAgc3RhdGljIGNvbnN0
IF9faW50X3R5cGUgX1NfYmFzZWZpZWxkID0gMHgwMDAyIHwgMHgwMDQwIHwgMHgwMDA4OwogICAg
c3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZmxvYXRmaWVsZCA9IDB4MDEwMCB8IDB4MDAwNDsK
CgogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfYmFkYml0ID0gMHgwMTsKICAgIHN0YXRp
YyBjb25zdCBfX2ludF90eXBlIF9TX2VvZmJpdCA9IDB4MDI7CiAgICBzdGF0aWMgY29uc3QgX19p
bnRfdHlwZSBfU19mYWlsYml0ID0gMHgwNDsKCgogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg
X1NfYXBwID0gMHgwMTsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2F0ZSA9IDB4MDI7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19iaW4gPSAweDA0OwogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1NfaW4gPSAweDA4OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg
X1Nfb3V0ID0gMHgxMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3RydW5jID0gMHgy
MDsKICB9Owp9CiMgNDUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Zw
b3MuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz
MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2N3Y2hhciIg
MSAzCiMgNDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDMKCgoK
IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3RpbWUiIDEgMwojIDQ4ICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3RpbWUiIDMKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJu
ICJDIiB7CiMgNzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApzdHJ1Y3QgdG0gewogaW50IHRt
X3NlYzsKIGludCB0bV9taW47CiBpbnQgdG1faG91cjsKIGludCB0bV9tZGF5OwogaW50IHRtX21v
bjsKIGludCB0bV95ZWFyOwogaW50IHRtX3dkYXk7CiBpbnQgdG1feWRheTsKIGludCB0bV9pc2Rz
dDsKfTsKIyAxMTAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAogICAgZXh0ZXJuIHNpemVfdCBz
dHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7
CiAgICBleHRlcm4gY2xvY2tfdCBjbG9jayh2b2lkKTsKICAgIGV4dGVybiBkb3VibGUgZGlmZnRp
bWUodGltZV90LCB0aW1lX3QpOwogICAgZXh0ZXJuIHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICop
OwogICAgZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsKICAgIGV4dGVybiBjaGFyICphc2N0
aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKICAgIGV4dGVybiBjaGFyICpjdGltZShjb25zdCB0aW1l
X3QgKik7CiAgICBleHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90ICopOwogICAg
ZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKIyAxMjggIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDMgNAogICAgZXh0ZXJuIGNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1
Y3QgdG0gKiwgY2hhciAqKTsKICAgIGV4dGVybiBjaGFyICpjdGltZV9yKGNvbnN0IHRpbWVfdCAq
LCBjaGFyICopOwogICAgZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGltZV90ICos
IHN0cnVjdCB0bSAqKTsKICAgIGV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNvbnN0IHRp
bWVfdCAqLCBzdHJ1Y3QgdG0gKik7CiMgMTU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0
ZXJuIGNoYXIgKnR6bmFtZVtdOwoKCgoKICAgIGV4dGVybiB2b2lkIHR6c2V0KHZvaWQpOwoKCgoK
CiAgICBleHRlcm4gbG9uZyB0aW1lem9uZTsKICAgIGV4dGVybiBpbnQgZGF5bGlnaHQ7CgoKCiAg
ICBleHRlcm4gY2hhciAqc3RycHRpbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVj
dCB0bSAqKTsKCgoKCiBleHRlcm4gaW50IGdldGRhdGVfZXJyOwoKCgogZXh0ZXJuIHN0cnVjdCB0
bSAqZ2V0ZGF0ZShjb25zdCBjaGFyICopOwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0
aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVj
IHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIGl0X3ZhbHVlOwp9OwoKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMoY2xvY2tpZF90
LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZShjbG9ja2lkX3Qs
IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lKGNsb2NraWRfdCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKCgpleHRlcm4gaW50IHRpbWVyX2Ny
ZWF0ZShjbG9ja2lkX3QsIHZvaWQgKiwgdGltZXJfdCAqKTsKCmV4dGVybiBpbnQgdGltZXJfZGVs
ZXRlKHRpbWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCwgc3RydWN0IGl0
aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJu
IGludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMg
Kiwgc3RydWN0IGl0aW1lcnNwZWMgKik7CgoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIx
OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyAyMjcgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMgNAogZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKk5MY3RpbWUobG9uZyAqKTsKIGV4dGVybiB1bnNp
Z25lZCBjaGFyICpOTGFzY3RpbWUoc3RydWN0IHRtICopOwogZXh0ZXJuIGNoYXIgKk5Mc3RydGlt
ZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CgoKCgp9
CiMgNTIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jdGltZSIgMiAzCiMgNjQg
Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jdGltZSIgMwpuYW1lc3BhY2Ugc3Rk
CnsKICB1c2luZyA6OmNsb2NrX3Q7CiAgdXNpbmcgOjp0aW1lX3Q7CiAgdXNpbmcgOjp0bTsKCiAg
dXNpbmcgOjpjbG9jazsKICB1c2luZyA6OmRpZmZ0aW1lOwogIHVzaW5nIDo6bWt0aW1lOwogIHVz
aW5nIDo6dGltZTsKICB1c2luZyA6OmFzY3RpbWU7CiAgdXNpbmcgOjpjdGltZTsKICB1c2luZyA6
OmdtdGltZTsKICB1c2luZyA6OmxvY2FsdGltZTsKICB1c2luZyA6OnN0cmZ0aW1lOwp9CiMgNTIg
Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDEgMyA0CiMgNDQgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQK
ZXh0ZXJuICJDIiB7CiMgNjIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKdHlwZWRlZiBjaGFy
ICogbWJzdGF0ZV90OwojIDEyNyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2lu
dF90IGZnZXR3YyhGSUxFICopOwpleHRlcm4gd2NoYXJfdCAqZmdldHdzKHdjaGFyX3QgKiwgaW50
LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXR3cyhjb25zdCB3Y2hhcl90ICosIEZJTEUgKik7CmV4
dGVybiB3aW50X3QgZ2V0d2MoRklMRSAqKTsKZXh0ZXJuIHdpbnRfdCBnZXR3Y2hhcih2b2lkKTsK
CgpleHRlcm4gaW50IGlzd2FsbnVtKHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3YWxwaGEod2ludF90
KTsKZXh0ZXJuIGludCBpc3djbnRybCh3aW50X3QpOwpleHRlcm4gaW50IGlzd2RpZ2l0KHdpbnRf
dCk7CmV4dGVybiBpbnQgaXN3Z3JhcGgod2ludF90KTsKZXh0ZXJuIGludCBpc3dsb3dlcih3aW50
X3QpOwpleHRlcm4gaW50IGlzd3ByaW50KHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3cHVuY3Qod2lu
dF90KTsKZXh0ZXJuIGludCBpc3dzcGFjZSh3aW50X3QpOwpleHRlcm4gaW50IGlzd3VwcGVyKHdp
bnRfdCk7CmV4dGVybiBpbnQgaXN3eGRpZ2l0KHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3Y3R5cGUg
KHdpbnRfdCwgd2N0eXBlX3QpOwpleHRlcm4gaW50IHRvd2xvd2VyKHdpbnRfdCk7CmV4dGVybiBp
bnQgdG93dXBwZXIod2ludF90KTsKCgoKZXh0ZXJuIHdpbnRfdCBmcHV0d2Mod2NoYXJfdCwgRklM
RSAqKTsKZXh0ZXJuIHdpbnRfdCBwdXR3Yyh3Y2hhcl90LCBGSUxFICopOwpleHRlcm4gd2ludF90
IHB1dHdjaGFyKHdjaGFyX3QpOwoKCgoKCgpleHRlcm4gd2ludF90IHVuZ2V0d2Mod2ludF90LCBG
SUxFICopOwpleHRlcm4gd2N0eXBlX3Qgd2N0eXBlKGNvbnN0IGNoYXIqKTsKZXh0ZXJuIHdjaGFy
X3QgKndjc2NhdCh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiB3Y2hhcl90ICp3
Y3NjaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90KTsKZXh0ZXJuIGludCB3Y3NjbXAoY29uc3Qg
d2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdjc2NvbGwoY29uc3Qgd2No
YXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gd2NoYXJfdCAqd2NzY3B5KHdjaGFyX3Qg
KiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHNpemVfdCB3Y3Njc3BuKGNvbnN0IHdjaGFyX3Qg
KiwgY29uc3Qgd2NoYXJfdCAqKTsKCnN0YXRpYyBzaXplX3Qgd2NzZnRpbWUod2NoYXJfdCAqX193
Y3NmdGltZV93Y3MsIHNpemVfdCBfX3djc2Z0aW1lX21heHNpemUsCiAgY29uc3Qgd2NoYXJfdCAq
X193Y3NmdGltZV9mb3JtYXQsCiAgY29uc3Qgc3RydWN0IHRtICpfX3djc2Z0aW1lX3RpbXB0cikK
ewogICAgZXh0ZXJuIHNpemVfdCBfX2lzb193Y3NmdGltZSh3Y2hhcl90ICosIHNpemVfdCwgY29u
c3Qgd2NoYXJfdCAqLAogICAgIGNvbnN0IHN0cnVjdCB0bSAqKTsKICAgIHJldHVybiBfX2lzb193
Y3NmdGltZShfX3djc2Z0aW1lX3djcywgX193Y3NmdGltZV9tYXhzaXplLCBfX3djc2Z0aW1lX2Zv
cm1hdCwKICAgICBfX3djc2Z0aW1lX3RpbXB0cik7Cn0KCgoKZXh0ZXJuIHNpemVfdCB3Y3NsZW4o
Y29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndjc25jYXQod2NoYXJfdCAqLCBjb25z
dCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiBpbnQgd2NzbmNtcChjb25zdCB3Y2hhcl90ICos
IGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkod2NoYXJf
dCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrKGNv
bnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndjc3JjaHIo
Y29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90KTsKZXh0ZXJuIHNpemVfdCB3Y3NzcG4oY29uc3Qgd2No
YXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gZG91YmxlIHdjc3RvZChjb25zdCB3Y2hh
cl90ICosIHdjaGFyX3QgKiopOwoKc3RhdGljIHdjaGFyX3QgKndjc3Rvayh3Y2hhcl90ICpfX3dj
c3Rva193czEsIGNvbnN0IHdjaGFyX3QgKl9fd2NzdG9rX3dzMiwKICAgICAgICAgd2NoYXJfdCAq
Kl9fd2NzdG9rX3B0cikKewogICAgZXh0ZXJuIHdjaGFyX3QgKl9faXNvX3djc3Rvayh3Y2hhcl90
ICosIGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKik7CiAgICByZXR1cm4gX19pc29fd2NzdG9r
KF9fd2NzdG9rX3dzMSwgX193Y3N0b2tfd3MyLCBfX3djc3Rva19wdHIpOwp9CgoKCgoKCmV4dGVy
biBsb25nIHdjc3RvbChjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QgKiosIGludCk7CmV4dGVybiB1
bnNpZ25lZCBsb25nIHdjc3RvdWwoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90ICoqLCBpbnQpOwpl
eHRlcm4gd2NoYXJfdCAqd2Nzd2NzKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsK
ZXh0ZXJuIGludCB3Y3N3aWR0aChjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiBzaXpl
X3Qgd2NzeGZybSh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIGlu
dCB3Y3dpZHRoKHdjaGFyX3QpOwoKCmV4dGVybiB3aW50X3QgYnRvd2MoaW50KTsKZXh0ZXJuIGlu
dCBmd3ByaW50ZihGSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKZXh0ZXJuIGludCBmd3Nj
YW5mKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IGZ3aWRlKEZJTEUg
KiwgaW50KTsKZXh0ZXJuIGludCBtYnNpbml0KGNvbnN0IG1ic3RhdGVfdCAqKTsKZXh0ZXJuIHNp
emVfdCBtYnJsZW4oY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIHNp
emVfdCBtYnJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3RhdGVfdCAq
KTsKZXh0ZXJuIHNpemVfdCBtYnNydG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICoqLCBzaXpl
X3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIGludCBzd3ByaW50Zih3Y2hhcl90ICosIHNpemVfdCwg
Y29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IHN3c2NhbmYoY29uc3Qgd2NoYXJfdCAq
LCBjb25zdCB3Y2hhcl90ICosIC4uLik7CgpleHRlcm4gaW50IHZmd3ByaW50ZihGSUxFICosIGNv
bnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CmV4dGVybiBpbnQgdndwcmludGYoY29uc3Qgd2NoYXJf
dCAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCB2c3dwcmludGYod2NoYXJfdCAqLCBzaXplX3QsIGNv
bnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CgoKCgoKCgpleHRlcm4gc2l6ZV90IHdjcnRvbWIoY2hh
ciAqLCB3Y2hhcl90LCBtYnN0YXRlX3QgKik7CmV4dGVybiBzaXplX3Qgd2NzcnRvbWJzKGNoYXIg
KiwgY29uc3Qgd2NoYXJfdCAqKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7CmV4dGVybiB3Y2hhcl90
ICp3Y3NzdHIoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdj
dG9iKHdpbnRfdCk7CmV4dGVybiB3Y3R5cGVfdCB3Y3R5cGUoY29uc3QgY2hhciAqKTsKZXh0ZXJu
IHdjaGFyX3QgKndtZW1jaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90LCBzaXplX3QpOwpleHRl
cm4gaW50IHdtZW1jbXAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7
CmV4dGVybiB3Y2hhcl90ICp3bWVtY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl
X3QpOwpleHRlcm4gd2NoYXJfdCAqd21lbW1vdmUod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICos
IHNpemVfdCk7CmV4dGVybiB3Y2hhcl90ICp3bWVtc2V0KHdjaGFyX3QgKiwgd2NoYXJfdCwgc2l6
ZV90KTsKZXh0ZXJuIGludCB3cHJpbnRmKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKZXh0ZXJuIGlu
dCB3c2NhbmYoY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwojIDI2OSAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDMgNApleHRlcm4gd2NoYXJfdCAqZ2V0d3Mod2NoYXJfdCAqKTsKZXh0ZXJuIGludCBwdXR3
cyhjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdzcHJpbnRmKHdjaGFyX3QgKiwgY29uc3Qg
Y2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCB2d3NwcmludGYod2NoYXJfdCAqLCBjb25zdCBjaGFy
ICosIHZhX2xpc3QpOwoKCgoKCmV4dGVybiBpbnQgd2NzY2FzZWNtcChjb25zdCB3Y2hhcl90ICos
IGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiB3Y2hhcl90ICp3Y3NkdXAoY29uc3Qgd2NoYXJfdCAq
KTsKZXh0ZXJuIGludCB3Y3NuY2FzZWNtcChjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3Qg
Kiwgc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCB3Y3NubGVuKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90
KTsKZXh0ZXJuIHNpemVfdCB3Y3NucnRvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqKiwgc2l6
ZV90LCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHdjc3RvbGQoY29u
c3Qgd2NoYXJfdCAqLCB3Y2hhcl90ICoqKTsKZXh0ZXJuIGZsb2F0IHdjc3RvZihjb25zdCB3Y2hh
cl90ICosIHdjaGFyX3QgKiopOwpleHRlcm4gc2l6ZV90IG1ic25ydG93Y3Mod2NoYXJfdCAqLCBj
b25zdCBjaGFyICoqLCBzaXplX3QsIHNpemVfdCwgbWJzdGF0ZV90ICopOwpleHRlcm4gd2NoYXJf
dCAqd2NwY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndj
cG5jcHkod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CgoKCmV4dGVybiB3Y2hh
cl90ICpzdHJ0b3dzKHdjaGFyX3QgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKndzdHJ0b3MoY2hh
ciAqLCB3Y2hhcl90ICopOwojIDMxNyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4g
bG9uZyBsb25nIGludCB3Y3N0b2xsKAogICAgIGNvbnN0IHdjaGFyX3QgKiwKICAgICB3Y2hhcl90
ICoqLAogICAgIGludCApOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbCgK
ICAgICBjb25zdCB3Y2hhcl90ICosCiAgICAgd2NoYXJfdCAqKiwKICAgICBpbnQgKTsKCgoKCgp9
CiMgNTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDIgMwojIDY5
ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMt
aWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3djaGFyIiAzCm5hbWVzcGFjZSBz
dGQKewogIHVzaW5nIDo6bWJzdGF0ZV90Owp9CiMgNDYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt
aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKyst
djMvaW5jbHVkZS9iaXRzL2Zwb3MuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKCgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgogICAgY2xhc3MgZnBvcwogICAgewogICAgcHVibGljOgoK
ICAgICAgdHlwZWRlZiBfU3RhdGVUIF9fc3RhdGVfdHlwZTsKCiAgICBwcml2YXRlOgogICAgICBz
dHJlYW1vZmYgX01fb2ZmOwogICAgICBfX3N0YXRlX3R5cGUgX01fc3Q7CgogICAgcHVibGljOgog
ICAgICBfX3N0YXRlX3R5cGUKICAgICAgc3RhdGUoKSBjb25zdCB7IHJldHVybiBfTV9zdDsgfQoK
ICAgICAgdm9pZAogICAgICBzdGF0ZShfX3N0YXRlX3R5cGUgX19zdCkgeyBfTV9zdCA9IF9fc3Q7
IH0KCgoKICAgICAgZnBvcygpOiBfTV9vZmYoc3RyZWFtb2ZmKCkpLCBfTV9zdChfX3N0YXRlX3R5
cGUoKSkgeyB9CgogICAgICBmcG9zKHN0cmVhbW9mZiBfX29mZiwgX19zdGF0ZV90eXBlIF9fc3Qg
PSBfX3N0YXRlX3R5cGUoKSkKICAgICAgOiBfTV9vZmYoX19vZmYpLCBfTV9zdChfX3N0KSB7IH0K
CiAgICAgIG9wZXJhdG9yIHN0cmVhbW9mZigpIGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoKICAg
ICAgZnBvcyYKICAgICAgb3BlcmF0b3IrPShzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmICs9IF9f
b2ZmOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIGZwb3MmCiAgICAgIG9wZXJhdG9yLT0oc3RyZWFt
b2ZmIF9fb2ZmKSB7IF9NX29mZiAtPSBfX29mZjsgcmV0dXJuICp0aGlzOyB9CgogICAgICBmcG9z
CiAgICAgIG9wZXJhdG9yKyhzdHJlYW1vZmYgX19vZmYpCiAgICAgIHsKIGZwb3MgX190KCp0aGlz
KTsKIF9fdCArPSBfX29mZjsKIHJldHVybiBfX3Q7CiAgICAgIH0KCiAgICAgIGZwb3MKICAgICAg
b3BlcmF0b3ItKHN0cmVhbW9mZiBfX29mZikKICAgICAgewogZnBvcyBfX3QoKnRoaXMpOwogX190
IC09IF9fb2ZmOwogcmV0dXJuIF9fdDsKICAgICAgfQoKICAgICAgYm9vbAogICAgICBvcGVyYXRv
cj09KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdAogICAgICB7IHJldHVybiBfTV9vZmYgPT0gX19w
b3MuX01fb2ZmOyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yIT0oY29uc3QgZnBvcyYgX19w
b3MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX29mZiAhPSBfX3Bvcy5fTV9vZmY7IH0KCiAgICAg
IHN0cmVhbW9mZgogICAgICBfTV9wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoK
ICAgICAgdm9pZAogICAgICBfTV9wb3NpdGlvbihzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmID0g
X19vZmY7IH0KICAgIH07CgoKICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiBzdHJlYW1wb3M7CgoK
Cgp9CiMgNTAgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pb3Nmd2QiIDIgMwoj
IDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw
Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Z1bmN0ZXhjZXB0Lmgi
IDEgMwojIDM0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9mdW5jdGV4
Y2VwdC5oIiAzCiMgMSAiL2djYy9kamUvc3JjL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0
aW9uX2RlZmluZXMuaCIgMSAzCiMgMzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk
ZS9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQKICBfX3Ro
cm93X2JhZF9leGNlcHRpb24odm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9p
ZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9fdGhyb3df
YmFkX3R5cGVpZCh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNo
YXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKiBfX3Mp
OwoKICB2b2lkCiAgX190aHJvd19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9fcyk7Cgog
IHZvaWQKICBfX3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAg
X190aHJvd19vdXRfb2ZfcmFuZ2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3df
cnVudGltZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9l
cnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19lcnJvcihj
b25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3IoY29uc3Qg
Y2hhciogX19zKTsKCgogIHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIF9f
cyk7Cn0KIyA1MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy
OC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2lvc2Z3ZCIgMiAz
CgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvczsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0No
YXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mg
YmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyZWFtOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxf
Q2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgIHR5cGVu
YW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0cmluZ2J1
ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90
cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4K
ICAgIGNsYXNzIGJhc2ljX2lzdHJpbmdzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICB0eXBlbmFtZSBf
QWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyaW5nc3RyZWFt
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3Ry
YWl0czxfQ2hhclQ+LAogICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgog
ICAgY2xhc3MgYmFzaWNfc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2lj
X2ZpbGVidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9
IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaWZzdHJlYW07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFy
VD4gPgogICAgY2xhc3MgYmFzaWNfb2ZzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFz
aWNfZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBpc3RyZWFtYnVmX2l0ZXJhdG9yOwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0
czxfQ2hhclQ+ID4KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3I7CgoKCiAgY2xhc3MgaW9z
X2Jhc2U7CiMgMTM2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaW9zZndkIiAz
CiAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhcj4gaW9zOwogIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVm
PGNoYXI+IHN0cmVhbWJ1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsK
ICB0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcj4gb3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX2lv
c3RyZWFtPGNoYXI+IGlvc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0
cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcj4gaXN0cmluZ3N0cmVh
bTsKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcj4gb3N0cmluZ3N0cmVhbTsKICB0
eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBi
YXNpY19maWxlYnVmPGNoYXI+IGZpbGVidWY7CiAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbTxjaGFy
PiBpZnN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtPGNoYXI+IG9mc3RyZWFtOwogIHR5
cGVkZWYgYmFzaWNfZnN0cmVhbTxjaGFyPiBmc3RyZWFtOwojIDE2NiAiL2djYy9kamUvYnVpbGQv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xp
YnN0ZGMrKy12My9pbmNsdWRlL2lvc2Z3ZCIgMwp9CiMgNDUgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj
KystdjMvaW5jbHVkZS9pb3MiIDIgMwojIDEgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGli
c3VwYysrL2V4Y2VwdGlvbiIgMSAzCiMgNDAgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGli
c3VwYysrL2V4Y2VwdGlvbiIgMwpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CiMgNTIg
Ii9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGlic3VwYysrL2V4Y2VwdGlvbiIgMwogIGNsYXNz
IGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBleGNlcHRpb24oKSB0aHJvdygpIHsgfQogICAg
dmlydHVhbCB+ZXhjZXB0aW9uKCkgdGhyb3coKTsKCgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3
aGF0KCkgY29uc3QgdGhyb3coKTsKICB9OwoKCgogIGNsYXNzIGJhZF9leGNlcHRpb24gOiBwdWJs
aWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9leGNlcHRpb24oKSB0aHJvdygpIHsg
fQoKCiAgICB2aXJ0dWFsIH5iYWRfZXhjZXB0aW9uKCkgdGhyb3coKTsKICB9OwoKCiAgdHlwZWRl
ZiB2b2lkICgqdGVybWluYXRlX2hhbmRsZXIpICgpOwoKICB0eXBlZGVmIHZvaWQgKCp1bmV4cGVj
dGVkX2hhbmRsZXIpICgpOwoKCiAgdGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0ZSh0ZXJt
aW5hdGVfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdGVybWluYXRlKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCiAgdW5leHBlY3RlZF9oYW5kbGVyIHNldF91bmV4cGVjdGVk
KHVuZXhwZWN0ZWRfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdW5leHBlY3RlZCgpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyAxMDAgIi9nY2MvZGplL3NyYy9saWJzdGRjKyst
djMvbGlic3VwYysrL2V4Y2VwdGlvbiIgMwogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgdGhy
b3coKTsKfQoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiMgMTE1ICIvZ2NjL2RqZS9zcmMvbGlic3Rk
YysrLXYzL2xpYnN1cGMrKy9leGNlcHRpb24iIDMKICB2b2lkIF9fdmVyYm9zZV90ZXJtaW5hdGVf
aGFuZGxlciAoKTsKfQoKfQojIDQ2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu
My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv
aW9zIiAyIDMKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFy
X3RyYWl0cy5oIiAxIDMKIyA0NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp
dHMvY2hhcl90cmFpdHMuaCIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1
ZGUvY3N0cmluZyIgMSAzCiMgNDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9j
c3RyaW5nIiAzCgoKCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y
MDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMSAzIDQKIyA1NyAiL2djYy9kamUvYnVpbGQv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMyA0
CmV4dGVybiAiQyIgewojIDEwMCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiAgICAgICAgZXh0ZXJuIHZvaWQg
Km1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKICAgICAgICBleHRlcm4gdm9pZCAq
bWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB2b2lk
ICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIHNpemVfdCBzdHJj
c3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gc2l6ZV90IHN0
cmxlbihjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKIyAxMzIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp
eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAogICAgICAgIGV4dGVy
biB2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIGV4
dGVybiBjaGFyICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBj
aGFyICpzdHJuY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgICAgIGV4dGVy
biBjaGFyICpzdHJjYXQoY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFy
ICpzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiBp
bnQgbWVtY21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLHNpemVfdCk7CiAgICAgICAgZXh0
ZXJuIGludCBzdHJjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVy
biBpbnQgc3RybmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqLHNpemVfdCk7CiAgICAgICAg
ZXh0ZXJuIGludCBzdHJuY29sbGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgaW50ICk7CiAgICAgICAg
ZXh0ZXJuIGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CiAgICAgICAgZXh0ZXJuIGNo
YXIgKnN0cnBicmsoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBj
aGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKICAgICAgICBleHRlcm4gY2hhciAqc3Ry
c3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqc3Ry
dG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqc3RyZXJyb3Io
aW50KTsKICAgICAgICBleHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKIGV4dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hh
ciAqKik7CiMgMTYzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L2djYy9pbmNsdWRlL3N0cmluZy5oIiAzIDQKICAgICAgICBleHRlcm4gdm9pZCAqbWVtY2Nw
eSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDE3MiAiL2djYy9kamUvYnVp
bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIg
MyA0CmV4dGVybiBjaGFyICpzdHJkdXAoY29uc3QgY2hhciAqKTsKIyAyMTUgIi9nY2MvZGplL2J1
aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RyaW5nLmgi
IDMgNAogICAgICAgIGV4dGVybiBjaGFyICppbmRleChjb25zdCBjaGFyICosIGludCk7CiAgICAg
ICAgZXh0ZXJuIGNoYXIgKnJpbmRleChjb25zdCBjaGFyICosIGludCk7CiAgICAgICAgZXh0ZXJu
IHZvaWQgc3dhYihjb25zdCB2b2lkICosIHZvaWQgKiwgc3NpemVfdCk7CiAgICAgICAgZXh0ZXJu
IHdjaGFyX3QgKndjc2NhdCh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CiAgICAgICAgZXh0
ZXJuIHdjaGFyX3QgKndjc2Nocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwogICAgICAgIGV4
dGVybiBpbnQgd2NzY21wKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAg
ICBleHRlcm4gd2NoYXJfdCAqd2NzY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAg
ICAgICBleHRlcm4gc2l6ZV90IHdjc2NzcG4oY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90
ICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgd2NzbGVuKGNvbnN0IHdjaGFyX3QgKik7CiAgICAg
ICAgZXh0ZXJuIHdjaGFyX3QgKndjc25jYXQod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNp
emVfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3Y3NuY21wKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qg
d2NoYXJfdCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3Y3NuY3B5KHdjaGFy
X3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3
Y3NwYnJrKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4g
d2NoYXJfdCAqd2NzcmNocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwogICAgICAgIGV4dGVy
biBzaXplX3Qgd2Nzc3BuKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAg
ICBleHRlcm4gd2NoYXJfdCAqd2Nzd2NzKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAq
KTsKICAgICAgICBleHRlcm4gaW50IHdjc3dpZHRoKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsK
ICAgICAgICBleHRlcm4gaW50IHdjd2lkdGgod2NoYXJfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3
Y3Njb2xsKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4g
c2l6ZV90IHdjc3hmcm0od2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CiMgMjk2
ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNs
dWRlL3N0cmluZy5oIiAzIDQKfQojIDUyICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1
ZGUvY3N0cmluZyIgMiAzCiMgNzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z
LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9j
c3RyaW5nIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6bWVtY3B5OwogIHVzaW5nIDo6bWVt
bW92ZTsKICB1c2luZyA6OnN0cmNweTsKICB1c2luZyA6OnN0cm5jcHk7CiAgdXNpbmcgOjpzdHJj
YXQ7CiAgdXNpbmcgOjpzdHJuY2F0OwogIHVzaW5nIDo6bWVtY21wOwogIHVzaW5nIDo6c3RyY21w
OwogIHVzaW5nIDo6c3RyY29sbDsKICB1c2luZyA6OnN0cm5jbXA7CiAgdXNpbmcgOjpzdHJ4ZnJt
OwogIHVzaW5nIDo6c3RyY3NwbjsKICB1c2luZyA6OnN0cnNwbjsKICB1c2luZyA6OnN0cnRvazsK
ICB1c2luZyA6Om1lbXNldDsKICB1c2luZyA6OnN0cmVycm9yOwogIHVzaW5nIDo6c3RybGVuOwoK
ICB1c2luZyA6Om1lbWNocjsKCiAgaW5saW5lIHZvaWQqCiAgbWVtY2hyKHZvaWQqIF9fcCwgaW50
IF9fYywgc2l6ZV90IF9fbikKICB7IHJldHVybiBtZW1jaHIoY29uc3RfY2FzdDxjb25zdCB2b2lk
Kj4oX19wKSwgX19jLCBfX24pOyB9CgogIHVzaW5nIDo6c3RyY2hyOwoKICBpbmxpbmUgY2hhcioK
ICBzdHJjaHIoY2hhciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RyY2hy
KGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBfX24pOyB9CgogIHVzaW5nIDo6c3RycGJy
azsKCiAgaW5saW5lIGNoYXIqCiAgc3RycGJyayhjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3My
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zdHJwYnJrKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9f
czEpLCBfX3MyKTsgfQoKICB1c2luZyA6OnN0cnJjaHI7CgogIGlubGluZSBjaGFyKgogIHN0cnJj
aHIoY2hhciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RycmNocihjb25z
dF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19uKTsgfQoKICB1c2luZyA6OnN0cnN0cjsKCiAg
aW5saW5lIGNoYXIqCiAgc3Ryc3RyKGNoYXIqIF9fczEsIGNvbnN0IGNoYXIqIF9fczIpCiAgeyBy
ZXR1cm4gX19idWlsdGluX3N0cnN0cihjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19z
Mik7IH0KfQojIDQ2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFy
X3RyYWl0cy5oIiAyIDMKCgpuYW1lc3BhY2Ugc3RkCnsKIyA2MSAiL2djYy9kamUvYnVpbGQvcG93
ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0
ZGMrKy12My9pbmNsdWRlL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPGNsYXNzIF9D
aGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0cwogICAgewogICAgICB0eXBlZGVmIF9DaGFyVCBj
aGFyX3R5cGU7CgogICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50X3R5cGU7CiAgICAgIHR5
cGVkZWYgc3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbW9mZiBvZmZfdHlw
ZTsKICAgICAgdHlwZWRlZiBtYnN0YXRlX3Qgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRpYyB2b2lk
CiAgICAgIGFzc2lnbihjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMik7Cgog
ICAgICBzdGF0aWMgYm9vbAogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNo
YXJfdHlwZSYgX19jMik7CgogICAgICBzdGF0aWMgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5
cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMik7CgogICAgICBzdGF0aWMgaW50CiAgICAg
IGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNp
emVfdCBfX24pOwoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3QgY2hhcl90
eXBlKiBfX3MpOwoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25z
dCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpOwoKICAg
ICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNo
YXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAg
ICBjb3B5KGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19u
KTsKCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywg
c2l6ZV90IF9fbiwgY2hhcl90eXBlIF9fYSk7CgogICAgICBzdGF0aWMgY2hhcl90eXBlCiAgICAg
IHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKTsKCiAgICAgIHN0YXRpYyBpbnRfdHlw
ZQogICAgICB0b19pbnRfdHlwZShjb25zdCBjaGFyX3R5cGUmIF9fYyk7CgogICAgICBzdGF0aWMg
Ym9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5
cGUmIF9fYzIpOwoKICAgICAgc3RhdGljIGludF90eXBlCiAgICAgIGVvZigpOwoKICAgICAgc3Rh
dGljIGludF90eXBlCiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIF9fYyk7CiAgICB9OwoK
CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPgogICAgewogICAgICB0
eXBlZGVmIGNoYXIgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIGludCBpbnRfdHlwZTsKICAgICAg
dHlwZWRlZiBzdHJlYW1wb3MgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90
eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZv
aWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQog
ICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBlcShjb25zdCBj
aGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19j
MSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5cGUm
IF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA8IF9fYzI7
IH0KCiAgICAgIHN0YXRpYyBpbnQKICAgICAgY29tcGFyZShjb25zdCBjaGFyX3R5cGUqIF9fczEs
IGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gbWVtY21w
KF9fczEsIF9fczIsIF9fbik7IH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3RoKGNv
bnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7IHJldHVybiBzdHJsZW4oX19zKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywg
c2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXJfdHlwZSo+KG1lbWNocihfX3MsIF9fYSwgX19uKSk7IH0KCiAgICAgIHN0
YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5
cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlw
ZSo+KG1lbW1vdmUoX19zMSwgX19zMiwgX19uKSk7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUq
CiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVf
dCBfX24pCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KG1lbWNweShfX3Mx
LCBfX3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNo
YXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7IHJldHVybiBz
dGF0aWNfY2FzdDxjaGFyX3R5cGUqPihtZW1zZXQoX19zLCBfX2EsIF9fbikpOyB9CgogICAgICBz
dGF0aWMgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKQog
ICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KF9fYyk7IH0KCgoKICAgICAgc3Rh
dGljIGludF90eXBlCiAgICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKQogICAg
ICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oX19jKSk7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxX2ludF90eXBlKGNvbnN0IGlu
dF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9
PSBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgZW9mKCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50X3R5cGU+KCgtMSkpOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAg
bm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiAoX19jID09IGVvZigp
KSA/IDAgOiBfX2M7IH0KICB9OwojIDI1MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNs
dWRlL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIHN0cnVjdCBfQ2hhcl90cmFpdHNfbWF0Y2gKICAgIHsKICAgICAg
X0NoYXJUIF9NX2M7CiAgICAgIF9DaGFyX3RyYWl0c19tYXRjaChfQ2hhclQgY29uc3QmIF9fYykg
OiBfTV9jKF9fYykgeyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoX0NoYXJUIGNvbnN0
JiBfX2EpIHsgcmV0dXJuIF9UcmFpdHM6OmVxKF9NX2MsIF9fYSk7IH0KICAgIH07Cn0KIyA0NyAi
L2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWli
bS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2lvcyIgMiAzCgojIDEgIi9nY2MvZGpl
L2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2xvY2FsZWZ3ZC5oIiAxIDMKIyA0NCAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlZndkLmgiIDMKCgoKCiMg
MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvZnVuY3RleGNlcHQuaCIg
MSAzCiMgMzYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Z1bmN0ZXhj
ZXB0LmgiIDMKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQKICBfX3Rocm93X2JhZF9leGNlcHRpb24o
dm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9pZCk7CgoKICB2b2lkCiAgX190
aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9fdGhyb3dfYmFkX3R5cGVpZCh2b2lkKTsK
CgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQK
ICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJv
d19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2xl
bmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdXRfb2ZfcmFu
Z2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfcnVudGltZV9lcnJvcihjb25z
dCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9lcnJvcihjb25zdCBjaGFyKiBf
X3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoK
ICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCgogIHZv
aWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIF9fcyk7Cn0KIyA0OSAiL2djYy9k
amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlZndkLmgiIDIgMwoKbmFtZXNw
YWNlIHN0ZAp7CgogIGNsYXNzIGxvY2FsZTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K
ICAgIGlubGluZSBib29sCiAgICBpc3NwYWNlKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3ByaW50KF9DaGFy
VCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGlu
ZSBib29sCiAgICBpc2NudHJsKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3VwcGVyKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAg
ICBpc2xvd2VyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2FscGhhKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2RpZ2l0
KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg
IGlubGluZSBib29sCiAgICBpc3B1bmN0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3hkaWdpdChfQ2hhclQs
IGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUg
Ym9vbAogICAgaXNhbG51bShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNncmFwaChfQ2hhclQsIGNvbnN0IGxv
Y2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgX0NoYXJUCiAg
ICB0b3VwcGVyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4KICAgIGlubGluZSBfQ2hhclQKICAgIHRvbG93ZXIoX0NoYXJULCBjb25zdCBsb2NhbGUm
KTsKCgogIGNsYXNzIGN0eXBlX2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg
Y2xhc3MgY3R5cGU7CiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlwZTxjaGFyPjsKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjdHlwZV9ieW5hbWU7CgoKICBjbGFzcyBjb2Rl
Y3Z0X2Jhc2U7CiAgY2xhc3MgX19lbmNfdHJhaXRzOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRl
cm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0YXRlVD4KICAgIGNsYXNzIGNvZGVj
dnQ7CiAgdGVtcGxhdGU8PiBjbGFzcyBjb2RlY3Z0PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD47CgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFt
ZSBfU3RhdGVUPgogICAgY2xhc3MgY29kZWN2dF9ieW5hbWU7CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4g
PgogICAgY2xhc3MgbnVtX2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG51bV9w
dXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPiBjbGFzcyBudW1wdW5jdDsKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQ+IGNsYXNzIG51bXB1bmN0X2J5bmFtZTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGNvbGxhdGU7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPiBjbGFzcwogICAgY29sbGF0ZV9ieW5hbWU7CgoKICBjbGFzcyB0aW1lX2Jhc2U7CiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVy
YXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRpbWVfZ2V0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX0luSXRlciA9IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAg
ICBjbGFzcyB0aW1lX2dldF9ieW5hbWU7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfT3V0SXRlciA9IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyB0
aW1lX3B1dDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0g
b3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRpbWVfcHV0X2J5bmFtZTsK
CgogIGNsYXNzIG1vbmV5X2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5
X2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0
cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X3B1dDsKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIGJvb2wgX0ludGwgPSBmYWxzZT4KICAgIGNsYXNzIG1vbmV5cHVu
Y3Q7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBj
bGFzcyBtb25leXB1bmN0X2J5bmFtZTsKCgogIGNsYXNzIG1lc3NhZ2VzX2Jhc2U7CiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXM7CiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXNfYnluYW1lOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRmFjZXQ+CiAgICBjb25zdCBfRmFjZXQmCiAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJiBf
X2xvYyk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGJvb2wKICAgIGhhc19mYWNl
dChjb25zdCBsb2NhbGUmIF9fbG9jKSB0aHJvdygpOwp9CiMgNDkgIi9nY2MvZGplL2J1aWxkL3Bv
d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJz
dGRjKystdjMvaW5jbHVkZS9pb3MiIDIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMv
aW5jbHVkZS9iaXRzL2lvc19iYXNlLmgiIDEgMwojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysr
LXYzL2luY2x1ZGUvYml0cy9pb3NfYmFzZS5oIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj
KystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYXRvbWljaXR5LmgiIDEg
MwojIDQxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bv
d2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC9iaXRzL2F0b21pY2l0eS5oIiAzCnR5cGVkZWYgaW50IF9BdG9taWNfd29yZDsKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9hdG9taWNfb3AuaCIgMSAzIDQKIyA0MCAiL3Vzci9pbmNsdWRl
L3N5cy9hdG9taWNfb3AuaCIgMyA0CnR5cGVkZWYgaW50ICphdG9taWNfcDsKdHlwZWRlZiB1c2hv
cnQgKmF0b21pY19oOwp0eXBlZGVmIGxvbmcgKmF0b21pY19sOwojIDcwICIvdXNyL2luY2x1ZGUv
c3lzL2F0b21pY19vcC5oIiAzIDQKaW50IGZldGNoX2FuZF9hZGQoYXRvbWljX3AsaW50KTsKdWlu
dCBmZXRjaF9hbmRfYW5kKGF0b21pY19wLHVpbnQpOwp1aW50IGZldGNoX2FuZF9vcihhdG9taWNf
cCx1aW50KTsKYm9vbGVhbl90IGNvbXBhcmVfYW5kX3N3YXAoYXRvbWljX3AsaW50ICosaW50KTsK
bG9uZyBmZXRjaF9hbmRfYWRkbHAoYXRvbWljX2wsbG9uZyk7CnVsb25nIGZldGNoX2FuZF9hbmRs
cChhdG9taWNfbCx1bG9uZyk7CnVsb25nIGZldGNoX2FuZF9vcmxwKGF0b21pY19sLHVsb25nKTsK
Ym9vbGVhbl90IGNvbXBhcmVfYW5kX3N3YXBscChhdG9taWNfbCwgbG9uZyAqLCBsb25nKTsKdXNo
b3J0IGZldGNoX2FuZF9hZGRfaChhdG9taWNfaCxpbnQpOwojIDEwMiAiL3Vzci9pbmNsdWRlL3N5
cy9hdG9taWNfb3AuaCIgMyA0CmJvb2xlYW5fdCBfY2hlY2tfbG9jayhhdG9taWNfcCwgaW50LCBp
bnQpOwp2b2lkIF9jbGVhcl9sb2NrKGF0b21pY19wLCBpbnQpOwppbnQgX3NhZmVfZmV0Y2goYXRv
bWljX3ApOwoKCgoKCgojcHJhZ21hIG1jX2Z1bmMgX2NsZWFyX2xvY2sgeyAiNDgwMDM0MDMiIH0K
CgojcHJhZ21hIG1jX2Z1bmMgX2NoZWNrX2xvY2sgeyAiNDgwMDM0MjMiIH0KCgojcHJhZ21hIG1j
X2Z1bmMgX3NhZmVfZmV0Y2ggeyAiODA2MzAwMDAiICI1NDYzMDAzRiIgIjQxODIwMDA0IiB9CgoK
CgojcHJhZ21hIHJlZ19raWxsZWRfYnkgX3NhZmVfZmV0Y2ggY3IwLGdyMwojIDQ0ICIvZ2NjL2Rq
ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2F0
b21pY2l0eS5oIiAyIDMKCnN0YXRpYyBpbmxpbmUgaW50Cl9fYXR0cmlidXRlX18gKCh1bnVzZWQp
KQpfX2V4Y2hhbmdlX2FuZF9hZGQgKGF0b21pY19wIF9fbWVtLCBpbnQgX192YWwpCnsKICByZXR1
cm4gZmV0Y2hfYW5kX2FkZCAoX19tZW0sIF9fdmFsKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCl9f
YXR0cmlidXRlX18gKCh1bnVzZWQpKQpfX2F0b21pY19hZGQgKGF0b21pY19wIF9fbWVtLCBpbnQg
X192YWwpCnsKICAodm9pZCkgZmV0Y2hfYW5kX2FkZCAoX19tZW0sIF9fdmFsKTsKfQojIDQ2ICIv
Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9pb3NfYmFzZS5oIiAyIDMKCiMg
MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlX2NsYXNzZXMu
aCIgMSAzCiMgNDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0
MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2xvY2Fs
ZV9jbGFzc2VzLmgiIDMKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu
My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv
c3RyaW5nIiAxIDMKIyA0NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y
MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0cmlu
ZyIgMwoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvbWVtb3J5IiAx
IDMKIyA1MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL21lbW9yeSIgMwoKIyAx
ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMt
aWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfYWxnb2Jhc2UuaCIg
MSAzCiMgNjYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF9hbGdv
YmFzZS5oIiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz
MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NsaW1pdHMi
IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xpbWl0cyIgMwoK
IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p
bmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvZ2NjL2Rq
ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5c2xp
bWl0cy5oIiAxIDMgNAoKCgoKCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIyICIvZ2NjL2Rq
ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xpbWl0
cy5oIiAzIDQKIyAxICIvZ2NjL2RqZS9pbnN0YWxsL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw
MzA0MjgvbGliL2djYy1saWIvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC8zLjQvaW5jbHVkZS9saW1p
dHMuaCIgMSAzIDQKIyAxMjIgIi9nY2MvZGplL2luc3RhbGwvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC0yMDAzMDQyOC9saWIvZ2NjLWxpYi9wb3dlcnBjLWlibS1haXg0LjMuMy4wLzMuNC9pbmNsdWRl
L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIzICIv
Z2NjL2RqZS9pbnN0YWxsL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvbGliL2djYy1s
aWIvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC8zLjQvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKIyAx
MjMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2lu
Y2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4
NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzIDQKIyAxMiAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9s
aW1pdHMuaCIgMiAzIDQKIyA1MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu
MC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Ns
aW1pdHMiIDIgMwojIDY3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl
L2NzdGRsaWIiIDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w
LTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0
ZGxpYiIgMwoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMgNAojIDU0ICIvZ2NjL2RqZS9idWlsZC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK
ZXh0ZXJuICJDIiB7CiMgOTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBkaXZfdCB7
CiBpbnQgcXVvdDsKIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCBsZGl2X3Qgewog
bG9uZyBpbnQgcXVvdDsKIGxvbmcgaW50IHJlbTsKfSBsZGl2X3Q7CgoKCgoKCmV4dGVybiBzaXpl
X3QgX19nZXRtYmN1cm1heCAodm9pZCk7CmV4dGVybiBpbnQgX19nZXRtYXhkaXNwd2lkdGggKHZv
aWQpOwojIDEyNiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy
OC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4gaW50IG1ibGVuKGNvbnN0IGNoYXIg
Kiwgc2l6ZV90KTsKIGV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFy
ICosIHNpemVfdCk7CiBleHRlcm4gaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKIGV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICos
IHNpemVfdCk7CiBleHRlcm4gaW50IHdjdG9tYihjaGFyICosIGNvbnN0IHdjaGFyX3QpOwojIDE4
MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5j
bHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4gZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKIGV4
dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwogZXh0ZXJuIGxvbmcgaW50IGF0b2woY29uc3Qg
Y2hhciAqKTsKIGV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqICopOwog
ZXh0ZXJuIGxvbmcgaW50IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiAqLCBpbnQpOwogZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICogKiwgaW50
KTsKIGV4dGVybiBpbnQgcmFuZCh2b2lkKTsKIGV4dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGlu
dCk7CiBleHRlcm4gdm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKIGV4dGVybiB2b2lkIGZy
ZWUodm9pZCAqKTsKIGV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90KTsKIGV4dGVybiB2b2lkICpy
ZWFsbG9jKHZvaWQgKiwgc2l6ZV90KTsKIGV4dGVybiB2b2lkIGFib3J0KHZvaWQpOwogZXh0ZXJu
IGludCBhdGV4aXQodm9pZCAoKikodm9pZCkpOwogZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwogZXh0
ZXJuIGNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwogZXh0ZXJuIGludCBzeXN0ZW0oY29uc3Qg
Y2hhciAqKTsKIGV4dGVybiB2b2lkICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq
LCBzaXplX3QsIHNpemVfdCwgaW50KCopKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICopKTsKIGV4
dGVybiB2b2lkIHFzb3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCgqKShjb25zdCB2b2lk
ICosY29uc3Qgdm9pZCAqKSk7CiMgMjExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4dGVybiBpbnQgYWJz
KGludCk7CiBleHRlcm4gc3RydWN0IGRpdl90IGRpdihpbnQsIGludCk7CiBleHRlcm4gbG9uZyBp
bnQgbGFicyhsb25nIGludCk7CiBleHRlcm4gc3RydWN0IGxkaXZfdCBsZGl2KGxvbmcgaW50LCBs
b25nIGludCk7CiMgMjM1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dl
cnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMyA0
CiMgNTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2Nj
L2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3Jlc291cmNlLmgiIDEgMyA0CiMgNTQgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2Uu
aCIgMyA0CmV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMyA0
CiMgNTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgOTAgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0IHRpbWV2YWwgewogdGltZV90IHR2X3Nl
YzsKCiBzdXNlY29uZHNfdCB0dl91c2VjOwoKCgp9OwoKCgoKc3RydWN0IHRpbWV2YWwzMiB7CiAg
ICBpbnQzMl90IHR2X3NlYzsKICAgIGludDMyX3QgdHZfdXNlYzsKfTsKCgoKCgoKc3RydWN0IHRp
bWV2YWw2NCB7CiAgICBpbnQ2NF90IHR2X3NlYzsKICAgIGludDY0X3QgdHZfdXNlYzsKfTsKCgoK
CgoKc3RydWN0IGl0aW1lcnZhbCB7CiBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKIHN0cnVj
dCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoKCgoKCgoKZXh0ZXJuIGludCBnZXRpdGltZXIoaW50LCBz
dHJ1Y3QgaXRpbWVydmFsICopOwpleHRlcm4gaW50IHNldGl0aW1lcihpbnQsIGNvbnN0IHN0cnVj
dCBpdGltZXJ2YWwgKiwgc3RydWN0IGl0aW1lcnZhbCAqKTsKZXh0ZXJuIGludCBnZXR0aW1lb2Zk
YXkoc3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKZXh0ZXJuIGludCB1dGltZXMoY29uc3QgY2hh
ciAqLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxNTQgIi91c3IvaW5jbHVkZS9zeXMvdGlt
ZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKCmZkX3NldAoKewogICAgICAgIGxvbmcgZmRzX2JpdHNb
KDMyNzY3LyhzaXplb2YobG9uZykgKiA4KSsxKV07Cn0gZmRfc2V0OwojIDE2OSAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDMgNApleHRlcm4gaW50IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9z
ZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwojIDI3MiAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXN0cnVjX3QgewogICAgICAgIHRpbWVfdCB0dl9zZWM7
CiAgICAgICAgc3VzZWNvbmRzX3QgdHZfbnNlYzsKfTsKCgoKCgpzdHJ1Y3QgdGltZXN0cnVjMzJf
dCB7CiAgICBpbnQzMl90IHR2X3NlYzsKICAgIGludDMyX3QgdHZfbnNlYzsKfTsKIyAyOTUgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0IGl0aW1lcnN0cnVjX3QgewogICAgICAg
IHN0cnVjdCB0aW1lc3RydWNfdCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXN0cnVj
X3QgaXRfdmFsdWU7Cn07CgoKCgoKc3RydWN0IGl0aW1lcnN0cnVjMzJfdCB7CiAgICBzdHJ1Y3Qg
dGltZXN0cnVjMzJfdCBpdF9pbnRlcnZhbDsKICAgIHN0cnVjdCB0aW1lc3RydWMzMl90IGl0X3Zh
bHVlOwp9OwojIDMxOCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAp0eXBlZGVmIHN0cnVj
dCB0aW1lYmFzZXN0cnVjdCB7CiBpbnQgZmxhZzsKIHVuc2lnbmVkIGludCB0Yl9oaWdoOwogdW5z
aWduZWQgaW50IHRiX2xvdzsKIH0gdGltZWJhc2VzdHJ1Y3RfdDsKCmludCByZWFkX3JlYWxfdGlt
ZSh0aW1lYmFzZXN0cnVjdF90ICosIHNpemVfdCk7CmludCB0aW1lX2Jhc2VfdG9fdGltZSh0aW1l
YmFzZXN0cnVjdF90ICosIHNpemVfdCk7CiMgNDUwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MyA0CnN0cnVjdCB0aW1lem9uZSB7CiBpbnQgdHpfbWludXRlc3dlc3Q7CiBpbnQgdHpfZHN0dGlt
ZTsKfTsKIyA0ODIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKfQojIDU4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMyA0CiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291
cmNlLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcmxpbV90OwpzdHJ1Y3QgcmxpbWl0IHsK
IHJsaW1fdCBybGltX2N1cjsKIHJsaW1fdCBybGltX21heDsKfTsKCgoKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBybGltNjRfdDsKc3RydWN0IHJsaW1pdDY0IHsKIHJsaW02NF90IHJsaW1f
Y3VyOwogcmxpbTY0X3QgcmxpbV9tYXg7Cn07CiMgMTU0ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291
cmNlLmgiIDMgNApzdHJ1Y3QgcnVzYWdlCnsKIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogc3Ry
dWN0IHRpbWV2YWwgcnVfc3RpbWU7CiBsb25nIHJ1X21heHJzczsKIGxvbmcgcnVfaXhyc3M7CiBs
b25nIHJ1X2lkcnNzOwogbG9uZyBydV9pc3JzczsKIGxvbmcgcnVfbWluZmx0OwogbG9uZyBydV9t
YWpmbHQ7CiBsb25nIHJ1X25zd2FwOwogbG9uZyBydV9pbmJsb2NrOwogbG9uZyBydV9vdWJsb2Nr
OwogbG9uZyBydV9tc2dzbmQ7CiBsb25nIHJ1X21zZ3JjdjsKIGxvbmcgcnVfbnNpZ25hbHM7CiBs
b25nIHJ1X252Y3N3OwogbG9uZyBydV9uaXZjc3c7Cn07CgoKCgoKc3RydWN0IHJ1c2FnZTY0CnsK
IHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CiBsb25n
IGxvbmcgcnVfbWF4cnNzOwogbG9uZyBsb25nIHJ1X2l4cnNzOwogbG9uZyBsb25nIHJ1X2lkcnNz
OwogbG9uZyBsb25nIHJ1X2lzcnNzOwogbG9uZyBsb25nIHJ1X21pbmZsdDsKIGxvbmcgbG9uZyBy
dV9tYWpmbHQ7CiBsb25nIGxvbmcgcnVfbnN3YXA7CiBsb25nIGxvbmcgcnVfaW5ibG9jazsKIGxv
bmcgbG9uZyBydV9vdWJsb2NrOwogbG9uZyBsb25nIHJ1X21zZ3NuZDsKIGxvbmcgbG9uZyBydV9t
c2dyY3Y7CiBsb25nIGxvbmcgcnVfbnNpZ25hbHM7CiBsb25nIGxvbmcgcnVfbnZjc3c7CiBsb25n
IGxvbmcgcnVfbml2Y3N3Owp9OwoKCgoKCnN0cnVjdCB0cnVzYWdlNjQKewogc3RydWN0IHRpbWV2
YWw2NCBydV91dGltZTsKIHN0cnVjdCB0aW1ldmFsNjQgcnVfc3RpbWU7CiBsb25nbG9uZ190IHJ1
X21heHJzczsKIGxvbmdsb25nX3QgcnVfaXhyc3M7CiBsb25nbG9uZ190IHJ1X2lkcnNzOwogbG9u
Z2xvbmdfdCBydV9pc3JzczsKIGxvbmdsb25nX3QgcnVfbWluZmx0OwogbG9uZ2xvbmdfdCBydV9t
YWpmbHQ7CiBsb25nbG9uZ190IHJ1X25zd2FwOwogbG9uZ2xvbmdfdCBydV9pbmJsb2NrOwogbG9u
Z2xvbmdfdCBydV9vdWJsb2NrOwogbG9uZ2xvbmdfdCBydV9tc2dzbmQ7CiBsb25nbG9uZ190IHJ1
X21zZ3JjdjsKIGxvbmdsb25nX3QgcnVfbnNpZ25hbHM7CiBsb25nbG9uZ190IHJ1X252Y3N3Owog
bG9uZ2xvbmdfdCBydV9uaXZjc3c7Cn07CiMgMjQ5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNl
LmgiIDMgNApleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVybiBpbnQgc2V0
cHJpb3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJsaW1pdChpbnQsIHN0cnVj
dCBybGltaXQgKik7CmV4dGVybiBpbnQgc2V0cmxpbWl0KGludCwgY29uc3Qgc3RydWN0IHJsaW1p
dCAqKTsKCgpleHRlcm4gaW50IGdldHJsaW1pdDY0KGludCwgc3RydWN0IHJsaW1pdDY0ICopOwpl
eHRlcm4gaW50IHNldHJsaW1pdDY0KGludCwgY29uc3Qgc3RydWN0IHJsaW1pdDY0ICopOwoKCgoK
CgoKZXh0ZXJuIGludCBnZXRydXNhZ2UoaW50LCBzdHJ1Y3QgcnVzYWdlICopOwoKZXh0ZXJuIGlu
dCBnZXRydXNhZ2U2NChpbnQsIHN0cnVjdCBydXNhZ2U2NCAqKTsKIyAyOTAgIi91c3IvaW5jbHVk
ZS9zeXMvcmVzb3VyY2UuaCIgMyA0Cn0KIyA1OSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMgNAoKCgojIDEg
Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1
ZGUvc3lzL3NpZ25hbC5oIiAxIDMgNAojIDc3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CmV4dGVybiAi
QyIgewojIDEwOCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy
OC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApleHRlcm4gdm9pZCAoKnNpZ25hbChpbnQs
IHZvaWQgKCopKGludCkpKShpbnQpOwoKCgoKCgoKZXh0ZXJuIGludCByYWlzZShpbnQpOwoKCnR5
cGVkZWYgaW50IHNpZ19hdG9taWNfdDsKIyAyMzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKdW5pb24g
c2lndmFsCnsKCgoKICAgICAgICB2b2lkICogc2l2YWxfcHRyOwoKICAgICAgICBpbnQgc2l2YWxf
aW50Owp9OwojIDI1OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz
MDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiBpbnQg
c2lfc2lnbm87CiBpbnQgc2lfZXJybm87CiBpbnQgc2lfY29kZTsKIHBpZF90IHNpX3BpZDsKIHVp
ZF90IHNpX3VpZDsKIyAyODYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKIHZvaWQgKnNpX2FkZHI7CiBp
bnQgc2lfc3RhdHVzOwoKCiBsb25nIHNpX2JhbmQ7CgoKICAgICAgICB1bmlvbiBzaWd2YWwgc2lf
dmFsdWU7CgoKCgoKCgogICAgICAgIGludCBfX3BhZFs3XTsKCgoKfSBzaWdpbmZvX3Q7CgoKCgoK
CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKCiAgIHVuaW9uIHsKCgoKCgoKIHZvaWQgKCpfX3N1X2hhbmRs
ZXIpKGludCk7CgoKCiB2b2lkICgqX19zdV9zaWdhY3Rpb24pIChpbnQsIHNpZ2luZm9fdCAqLCB2
b2lkICopOwoKCgogICAgfSBzYV91bmlvbjsKIHNpZ3NldF90IHNhX21hc2s7CiBpbnQgc2FfZmxh
Z3M7Cn07CiMgMzQ5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9j
b250ZXh0LmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvY29udGV4dC5oIiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL21fcGFyYW0uaCIgMSAzIDQKIyAyNiAiL3Vzci9pbmNsdWRlL3N5
cy9jb250ZXh0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tc3RzYXZlLmgiIDEgMyA0
CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvbXN0c2F2ZS5oIiAzIDQKc3RydWN0Cgptc3RzYXZlCgoK
CnsKCiBzdHJ1Y3QgbXN0c2F2ZSAqcHJldjsKIGxhYmVsX3QgKmtqbXBidWY7CiBjaGFyICpzdGFj
a2ZpeDsKIGNoYXIgaW50cHJpOwogY2hhciBiYWNrdDsKIGNoYXIgcnN2ZFsyXTsKIHBpZF90IGN1
cmlkOwoKIGludCBleGNwX3R5cGU7CiB1bG9uZ190IGlhcjsKIHVsb25nX3QgbXNyOwogdWxvbmdf
dCBjcjsKIHVsb25nX3QgbHI7CiB1bG9uZ190IGN0cjsKIHVsb25nX3QgeGVyOwogdWxvbmdfdCBt
cTsKICB1bG9uZ190IHRpZDsKIHVsb25nX3QgZnBzY3I7CiBjaGFyIGZwZXU7CiBjaGFyIGZwaW5m
bzsKIGNoYXIgcGFkWzJdOwoKIHVsb25nX3QgZXhjZXB0WzVdOwogY2hhciBwYWQxWzRdOwogdWxv
bmdfdCBvX2lhcjsKICAgICAgICB1bG9uZ190IG9fdG9jOwogdWxvbmdfdCBvX2FyZzE7CiB1bG9u
Z190IGV4Y2JyYW5jaDsKCgoKIHVsb25nX3QgZnBzY3J4OwogdWxvbmdfdCBvX3ZhZGRyOwogdWxv
bmdfdCBjYWNoZWFsaWduWzddOwogYWRzcGFjZV90IGFzOwogdWxvbmdfdCBncHJbMzJdOwogZG91
YmxlIGZwclszMl07CiMgMTMxICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIgMyA0Cn07CiMg
MjIwICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIgMyA0CmV4dGVybiBjaGFyIF9fcG1hcF9z
dGFja1tdOwojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL2NvbnRleHQuaCIgMiAzIDQKCgpleHRlcm4g
IkMiIHsKIyA3MSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19jb250
ZXh0NjQgewogdW5zaWduZWQgbG9uZyBsb25nIGdwclszMl07CiB1bnNpZ25lZCBsb25nIGxvbmcg
bXNyOwogdW5zaWduZWQgbG9uZyBsb25nIGlhcjsKIHVuc2lnbmVkIGxvbmcgbG9uZyBscjsKIHVu
c2lnbmVkIGxvbmcgbG9uZyBjdHI7CiB1bnNpZ25lZCBpbnQgY3I7CiB1bnNpZ25lZCBpbnQgeGVy
OwogdW5zaWduZWQgaW50IGZwc2NyOwogdW5zaWduZWQgaW50IGZwc2NyeDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgZXhjZXB0WzFdOwogZG91YmxlIGZwclszMl07CiBjaGFyIGZwZXU7CiBj
aGFyIGZwaW5mbzsKICAgICAgICBjaGFyIHBhZFsyXTsKICAgICAgICBpbnQgZXhjcF90eXBlOwp9
OwojIDExOSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3Qgc2lnY29udGV4
dDY0IHsKIGludCBzY19vbnN0YWNrOwogdW5zaWduZWQgaW50IHNjX21hc2sxOwogdW5zaWduZWQg
aW50IHNjX21hc2syOwogaW50IHNjX3VlcnJvcjsKIHN0cnVjdCBfX2NvbnRleHQ2NCBzY19jb250
ZXh0Owp9OwojIDIxMSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19q
bXBidWYgewoKIHN0cnVjdCBtc3RzYXZlIGptcF9jb250ZXh0OwoKCgp9OwojIDI0NSAiL3Vzci9p
bmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19zaWdjb250ZXh0IHsKCiBpbnQgc2Nf
b25zdGFjazsKIHNpZ3NldF90IHNjX21hc2s7CiBpbnQgc2NfdWVycm9yOwogc3RydWN0IF9fam1w
YnVmIHNjX2ptcGJ1ZjsKCgoKCgoKfTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKCgoKCiB2b2lk
ICpzc19zcDsKIHNpemVfdCBzc19zaXplOwoKCiBpbnQgc3NfZmxhZ3M7CiBpbnQgX19wYWRbNF07
Cn0gc3RhY2tfdDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9fam1wYnVmIG1jb250ZXh0X3Q7Cgp0
eXBlZGVmIHN0cnVjdCB1Y29udGV4dF90IHsKIGludCBfX3NjX29uc3RhY2s7CiAgICAgICAgc2ln
c2V0X3QgdWNfc2lnbWFzazsKCiAgICAgICAgaW50IF9fc2NfdWVycm9yOwogbWNvbnRleHRfdCB1
Y19tY29udGV4dDsKCgoKIHN0cnVjdCB1Y29udGV4dF90ICp1Y19saW5rOwoKCiBzdGFja190IHVj
X3N0YWNrOwogaW50IF9fcGFkWzRdOwp9IHVjb250ZXh0X3Q7CgoKfQojIDM1MCAiL2djYy9kamUv
YnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2ln
bmFsLmgiIDIgMyA0CgoKCgpzdHJ1Y3Qgc2lnc3RhY2sgewogdm9pZCAqc3Nfc3A7CiBpbnQgc3Nf
b25zdGFjazsKfTsKIyA0MzYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBzaWdtYXNr
KGludCk7CiMgNTg5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw
NDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9t
X3NpZ25hbC5oIiAxIDMgNAojIDU5MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z
LjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMyA0CiMgNTk5ICIvZ2Nj
L2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5
cy9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWdldmVudCB7CiB1bmlvbiBzaWd2YWwgc2lnZXZfdmFs
dWU7CiBpbnQgc2lnZXZfc2lnbm87CiBpbnQgc2lnZXZfbm90aWZ5OwoKCgoKIHZvaWQgKCpzaWdl
dl9ub3RpZnlfZnVuY3Rpb24pKHVuaW9uIHNpZ3ZhbCk7CiBwdGhyZWFkX2F0dHJfdCAqIHNpZ2V2
X25vdGlmeV9hdHRyaWJ1dGVzOwoKfTsKIyA2MjcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKc3RydWN0
IG9zaWdldmVudCB7CgoKCiB2b2lkICpzZXZ0X3ZhbHVlOwoKIHNpZ25hbF90IHNldnRfc2lnbm87
Cn07CiMgNzE4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWd2ZWMgewojIDczMCAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z
eXMvc2lnbmFsLmgiIDMgNAogICB1bmlvbiB7CgoKCgoKCiB2b2lkICgqc3ZfaGFuZGxlcikoaW50
KTsKCgoKICAgICAgICB2b2lkICgqc3Zfc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9p
ZCAqKTsKICAgfSBzdl91bmlvbjsKIGludCBzdl9tYXNrOwogaW50IHN2X2ZsYWdzOwoKfTsKIyA4
MDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2lu
Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBzaWd3YWl0KGNvbnN0IHNpZ3NldF90
ICosIGludCAqKTsKCmV4dGVybiBpbnQgc2lnYmxvY2soaW50KTsKZXh0ZXJuIGludCBzaWdsb2Nh
bG1hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWd2ZWMoaW50LCBzdHJ1
Y3Qgc2lndmVjICosIHN0cnVjdCBzaWd2ZWMgKik7CgoKCgoKCgpleHRlcm4gaW50IHNpZ2dldG1h
c2sodm9pZCk7CmV4dGVybiBpbnQgc2lnc2V0bWFzayhpbnQpOwojIDg1NiAiL2djYy9kamUvYnVp
bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFs
LmgiIDMgNApleHRlcm4gaW50IGtpbGwocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lncHJvY21h
c2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdzdXNw
ZW5kKGNvbnN0IHNpZ3NldF90ICopOwoKZXh0ZXJuIGludCBzaWdhY3Rpb24oaW50LCBjb25zdCBz
dHJ1Y3Qgc2lnYWN0aW9uICosIHN0cnVjdCBzaWdhY3Rpb24gKik7CgpleHRlcm4gaW50IHNpZ2Vt
cHR5c2V0KHNpZ3NldF90ICopOwpleHRlcm4gaW50IHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKik7CmV4
dGVybiBpbnQgc2lnYWRkc2V0KHNpZ3NldF90ICosIGludCk7CmV4dGVybiBpbnQgc2lnZGVsc2V0
KHNpZ3NldF90ICosIGludCk7CmV4dGVybiBpbnQgc2lnaXNtZW1iZXIoY29uc3Qgc2lnc2V0X3Qg
KiwgaW50KTsKZXh0ZXJuIGludCBzaWdwZW5kaW5nKHNpZ3NldF90ICopOwoKCmV4dGVybiB2b2lk
ICgqYnNkX3NpZ25hbCAoaW50LCB2b2lkICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBraWxs
cGcocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnaG9sZChpbnQpOwpleHRlcm4gaW50IHNpZ2ln
bm9yZShpbnQpOwpleHRlcm4gaW50IHNpZ2ludGVycnVwdChpbnQsIGludCk7CmV4dGVybiBpbnQg
c2lncGF1c2UoaW50KTsKZXh0ZXJuIGludCBzaWdyZWxzZShpbnQpOwpleHRlcm4gdm9pZCAoKnNp
Z3NldChpbnQsIHZvaWQoKikoaW50KSkpKGludCk7CgpleHRlcm4gaW50IHNpZ2FsdHN0YWNrKGNv
bnN0IHN0YWNrX3QgKiwgc3RhY2tfdCAqKTsKZXh0ZXJuIGludCBzaWdzdGFjayhzdHJ1Y3Qgc2ln
c3RhY2sgKiwgc3RydWN0IHNpZ3N0YWNrICopOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfa2lsbChw
dGhyZWFkX3QsIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2ln
c2V0X3QgKiwgc2lnc2V0X3QgKik7CmV4dGVybiBpbnQgc2lncXVldWUocGlkX3QsIGludCwgY29u
c3QgdW5pb24gc2lndmFsKTsKc3RydWN0IHRpbWVzcGVjOwpleHRlcm4gaW50IHNpZ3RpbWVkd2Fp
dChjb25zdCBzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKiwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICop
OwpleHRlcm4gaW50IHNpZ3dhaXRpbmZvKGNvbnN0IHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsK
IyA5MTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2Nj
L2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKfQojIDYzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj
LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMyA0CiMg
MTQxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p
bmNsdWRlL3N5cy93YWl0LmgiIDMgNAp0eXBlZGVmIGVudW0ge1BfQUxMLCBQX1BJRCwgUF9QR0lE
fSBpZHR5cGVfdDsKIyAxNTkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt
MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4dGVybiBwaWRfdCB3YWl0KGlu
dCAqKTsKCmV4dGVybiBwaWRfdCB3YWl0cGlkKHBpZF90LCBpbnQgKiwgaW50KTsKIyAxNzMgIi9n
Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv
c3lzL3dhaXQuaCIgMyA0CmV4dGVybiBpbnQgd2FpdGlkKGlkdHlwZV90LCBpZF90LCBzaWdpbmZv
X3QgKiwgaW50KTsKCgoKZXh0ZXJuIHBpZF90IHdhaXQzKGludCAqLCBpbnQsIHN0cnVjdCBydXNh
Z2UgKik7CgoKCmV4dGVybiBwaWRfdCBrd2FpdHBpZChpbnQgKiwgcGlkX3QsIGludCwgc3RydWN0
IHJ1c2FnZSAqLCBzaWdpbmZvX3QgKik7CgpleHRlcm4gcGlkX3Qga3dhaXRwaWQ2NChpbnQgKiwg
cGlkX3QsIGludCwgc3RydWN0IHJ1c2FnZTY0ICosIHNpZ2luZm9fdCAqKTsKCgoKZXh0ZXJuIHBp
ZF90IHdhaXQzNjQoaW50ICosIGludCwgc3RydWN0IHJ1c2FnZTY0ICopOwojIDIwMSAiL2djYy9k
amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMv
d2FpdC5oIiAzIDQKZXh0ZXJuIHBpZF90IHdhaXQ0KHBpZF90LCBpbnQgKiwgaW50LCBzdHJ1Y3Qg
cnVzYWdlICopOwojIDIyMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y
MDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQKfQojIDIzNiAiL2djYy9kamUvYnVp
bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzIDQKIyAzMDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0
MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAogZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQp
OwogZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0W10pOwogZXh0ZXJuIGxvbmcg
anJhbmQ0OCh1bnNpZ25lZCBzaG9ydFtdKTsKIGV4dGVybiB2b2lkIGxjb25nNDgodW5zaWduZWQg
c2hvcnQgaW50ICopOwogZXh0ZXJuIGxvbmcgbHJhbmQ0OCh2b2lkKTsKIGV4dGVybiBsb25nIG1y
YW5kNDgodm9pZCk7CiBleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0W10pOwogZXh0
ZXJuIHVuc2lnbmVkIHNob3J0ICpzZWVkNDgodW5zaWduZWQgc2hvcnRbXSk7CiBleHRlcm4gdm9p
ZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKIGV4dGVybiB2b2lkIHNyYW5kNDgobG9uZyk7CgogZXh0
ZXJuIGludCBwdXRlbnYoY2hhciAqKTsKIyAzMzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt
LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAogZXh0ZXJuIGlu
dCByYW5kX3IodW5zaWduZWQgaW50ICopOwojIDM2MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1p
Ym0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4g
bG9uZyBhNjRsKGNvbnN0IGNoYXIgKik7CiBleHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwg
aW50ICosIGludCAqKTsKIGV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50
ICopOwogZXh0ZXJuIGNoYXIgKmdjdnQoZG91YmxlLCBpbnQsIGNoYXIgKik7CiBleHRlcm4gaW50
IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsKIGV4dGVybiBpbnQg
Z3JhbnRwdChpbnQpOwogZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSh1bnNpZ25lZCwgY2hhciAqLCBz
aXplX3QpOwogZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CiBleHRlcm4gY2hhciAqbWt0ZW1wKGNo
YXIgKik7CiBleHRlcm4gaW50IG1rc3RlbXAoY2hhciAqKTsKIGV4dGVybiBjaGFyICpwdHNuYW1l
KGludCk7CiBleHRlcm4gbG9uZyByYW5kb20odm9pZCk7CiBleHRlcm4gY2hhciAqcmVhbHBhdGgo
Y29uc3QgY2hhciAqLCBjaGFyICopOwogZXh0ZXJuIGNoYXIgKnNldHN0YXRlKGNvbnN0IGNoYXIg
Kik7CiBleHRlcm4gdm9pZCBzcmFuZG9tKHVuc2lnbmVkKTsKIGV4dGVybiBpbnQgdW5sb2NrcHQo
aW50KTsKIGV4dGVybiBpbnQgdHR5c2xvdCh2b2lkKTsKIGV4dGVybiB2b2lkICp2YWxsb2Moc2l6
ZV90KTsKIyA0NjQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0
MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4g
aW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRlcnI7CiMgNDgyICIvZ2NjL2RqZS9idWlsZC9wb3dl
cnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4
dGVybiBmbG9hdCBhdG9mZihjaGFyICopOwogZXh0ZXJuIGZsb2F0IHN0cnRvZihjb25zdCBjaGFy
ICosIGNoYXIgKiopOwogZXh0ZXJuIGludCBzZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICosIGludCk7CiBleHRlcm4gdm9pZCBpbXVsX2RibChsb25nLCBsb25nLCBsb25nICopOwogZXh0
ZXJuIHZvaWQgdW11bF9kYmwodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZyAqKTsKIGV4dGVybiBpbnQgb25fZXhpdCh2b2lkICgqKShpbnQsIHZvaWQgKiksIHZvaWQg
Kik7CiMgNTA4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4dGVybiBkb3VibGUgd2NzdG9kKGNvbnN0IHdj
aGFyX3QgKiwgd2NoYXJfdCAqKik7CiBleHRlcm4gbG9uZyBpbnQgd2NzdG9sKGNvbnN0IHdjaGFy
X3QgKiwgd2NoYXJfdCAqKiwgaW50KTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGludCB3Y3N0b3Vs
KGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKiwgaW50KTsKCiBleHRlcm4gaW50IHJwbWF0Y2go
Y29uc3QgY2hhciAqKTsKIGV4dGVybiBpbnQgY2xlYXJlbnYodm9pZCk7CiBleHRlcm4gaW50IGdl
dG9wdChpbnQsIGNoYXIqIGNvbnN0KiwgY29uc3QgY2hhciopOwogZXh0ZXJuIGNoYXIgKmdldHBh
c3MoY29uc3QgY2hhciAqKTsKIyA1MzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBs
bGRpdl90IHsKICAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICAgbG9uZyBsb25nIGludCByZW0g
Owp9IGxsZGl2X3Q7CiMgNTQ5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w
LTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxhYnMoIGxvbmcgbG9uZyBpbnQgKTsKZXh0ZXJuIGxsZGl2X3QgbGxkaXYoIGxvbmcgbG9uZyBp
bnQsIGxvbmcgbG9uZyBpbnQgKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCgKICAgICBj
b25zdCBjaGFyICosCiAgICAgY2hhciAqKiwKICAgICBpbnQgKTsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91bGwoCiAgICAgY29uc3QgY2hhciAqLAogICAgIGNoYXIgKiosCiAg
ICAgaW50ICk7CiMgNTY5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw
MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKfQojIDUzICIvZ2NjL2RqZS9idWlsZC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGli
c3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMiAzCiMgODQgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy
cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj
KystdjMvaW5jbHVkZS9jc3RkbGliIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6ZGl2X3Q7
CiAgdXNpbmcgOjpsZGl2X3Q7CgogIHVzaW5nIDo6YWJvcnQ7CiAgdXNpbmcgOjphYnM7CiAgdXNp
bmcgOjphdGV4aXQ7CiAgdXNpbmcgOjphdG9mOwogIHVzaW5nIDo6YXRvaTsKICB1c2luZyA6OmF0
b2w7CiAgdXNpbmcgOjpic2VhcmNoOwogIHVzaW5nIDo6Y2FsbG9jOwogIHVzaW5nIDo6ZGl2Owog
IHVzaW5nIDo6ZXhpdDsKICB1c2luZyA6OmZyZWU7CiAgdXNpbmcgOjpnZXRlbnY7CiAgdXNpbmcg
OjpsYWJzOwogIHVzaW5nIDo6bGRpdjsKICB1c2luZyA6Om1hbGxvYzsKICB1c2luZyA6Om1ibGVu
OwogIHVzaW5nIDo6bWJzdG93Y3M7CiAgdXNpbmcgOjptYnRvd2M7CiAgdXNpbmcgOjpxc29ydDsK
ICB1c2luZyA6OnJhbmQ7CiAgdXNpbmcgOjpyZWFsbG9jOwogIHVzaW5nIDo6c3JhbmQ7CiAgdXNp
bmcgOjpzdHJ0b2Q7CiAgdXNpbmcgOjpzdHJ0b2w7CiAgdXNpbmcgOjpzdHJ0b3VsOwogIHVzaW5n
IDo6c3lzdGVtOwogIHVzaW5nIDo6d2NzdG9tYnM7CiAgdXNpbmcgOjp3Y3RvbWI7CgogIGlubGlu
ZSBsb25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBsYWJzKF9faSk7IH0KCiAgaW5saW5lIGxk
aXZfdAogIGRpdihsb25nIF9faSwgbG9uZyBfX2opIHsgcmV0dXJuIGxkaXYoX19pLCBfX2opOyB9
Cn0KIyA2OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w
b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ29i
YXNlLmgiIDIgMwoKIyAxICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXci
IDEgMwojIDQ0ICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXciIDMKZXh0
ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQKewoKCgoKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVi
bGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBiYWRfYWxsb2MoKSB0aHJvdygpIHsgfQoK
CiAgICB2aXJ0dWFsIH5iYWRfYWxsb2MoKSB0aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93
X3QgeyB9OwogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgogIHR5cGVkZWYgdm9p
ZCAoKm5ld19oYW5kbGVyKSgpOwoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIobmV3X2hh
bmRsZXIpIHRocm93KCk7Cn0KIyA4MiAiL2djYy9kamUvc3JjL2xpYnN0ZGMrKy12My9saWJzdXBj
KysvbmV3IiAzCnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCkgdGhyb3cgKHN0ZDo6YmFk
X2FsbG9jKTsKdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QpIHRocm93IChzdGQ6OmJh
ZF9hbGxvYyk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB0aHJvdygpOwp2b2lkIG9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQqKSB0aHJvdygpOwp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXpl
X3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCogb3BlcmF0b3IgbmV3W10o
c3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwoKCmlu
bGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7
IHJldHVybiBfX3A7IH0KaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90LCB2
b2lkKiBfX3ApIHRocm93KCkgeyByZXR1cm4gX19wOyB9CgoKaW5saW5lIHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlICh2b2lkKiwgdm9pZCopIHRocm93KCkgeyB9CmlubGluZSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH0KCn0KIyA3MCAiL2djYy9kamUvYnVpbGQv
cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xp
YnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvZ2NjL2Rq
ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA2NCAiL2dj
Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h
aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaCIgMwpuYW1lc3Bh
Y2Ugc3RkCnsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBwYWlyIHsK
ICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBlOwoKICBf
VDEgZmlyc3Q7CiAgX1QyIHNlY29uZDsKCgoKCiAgcGFpcigpIDogZmlyc3QoKSwgc2Vjb25kKCkg
e30KCgoKCiAgcGFpcihjb25zdCBfVDEmIF9fYSwgY29uc3QgX1QyJiBfX2IpIDogZmlyc3QoX19h
KSwgc2Vjb25kKF9fYikge30KCgogIHRlbXBsYXRlIDxjbGFzcyBfVTEsIGNsYXNzIF9VMj4KICBw
YWlyKGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX3ApIDogZmlyc3QoX19wLmZpcnN0KSwgc2Vjb25k
KF9fcC5zZWNvbmQpIHt9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3kpCnsKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3gu
c2Vjb25kID09IF9feS5zZWNvbmQ7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+
CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBw
YWlyPF9UMSwgX1QyPiYgX195KQp7CiAgcmV0dXJuIF9feC5maXJzdCA8IF9feS5maXJzdCB8fAog
ICAgICAgICAoIShfX3kuZmlyc3QgPCBfX3guZmlyc3QpICYmIF9feC5zZWNvbmQgPCBfX3kuc2Vj
b25kKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYg
X195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBj
bGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194
LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuIF9feSA8IF9feDsKfQoKCnRl
bXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0
dXJuICEoX195IDwgX194KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5s
aW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly
PF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsKfQojIDE0MCAiL2djYy9k
amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0
LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaCIgMwp0ZW1wbGF0ZSA8
Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CgoKaW5saW5lIHBhaXI8X1QxLCBfVDI+IG1ha2VfcGFpcihf
VDEgX194LCBfVDIgX195KQoKCgp7CiAgcmV0dXJuIHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsK
fQoKfQojIDcyICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4
L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfYWxn
b2Jhc2UuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y
MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMv
dHlwZV90cmFpdHMuaCIgMSAzCiMgNTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu
My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk
ZS9iaXRzL3R5cGVfdHJhaXRzLmgiIDMKIyA5MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t
YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p
bmNsdWRlL2JpdHMvdHlwZV90cmFpdHMuaCIgMwpzdHJ1Y3QgX190cnVlX3R5cGUge307CnN0cnVj
dCBfX2ZhbHNlX3R5cGUge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX190eXBlX3Ry
YWl0cyB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgdGhpc19kdW1teV9tZW1iZXJfbXVzdF9iZV9m
aXJzdDsKIyAxMTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0
MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3R5cGVf
dHJhaXRzLmgiIDMKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaXNfUE9EX3R5cGU7Cn07CgoKCgp0ZW1wbGF0ZTw+IHN0
cnVjdCBfX3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJp
dmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2
aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxh
dGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo
YXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190
cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsK
CnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8c2lnbmVkIGNoYXI+IHsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlz
X1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBj
aGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90
cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1
bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50
X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVj
dCBfX3R5cGVfdHJhaXRzPHNob3J0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh
bF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRl
PD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgc2hvcnQ+IHsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIG