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++/7631: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator


>Number:         7631
>Category:       c++
>Synopsis:       gcc 2.95.3 crashes when compiling a file in the Palm OS emulator
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 19 03:26:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Joel Estes
>Release:        unknown-1.0
>Organization:
>Environment:
UltraSparc II/Solaris 8
>Description:
There is a problem  compiling the ./SrcShared/MetaMemory.cpp
file in the Palm OS Emulator. It gets the following error:

gcc -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_ISA_DEFS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_TYPE_SOCKLEN_T=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_MKDIR=1 -DHAVE_MKSTEMP=1 -DHAVE_TEMPNAM=1 -DHAVE_GL=1 -DHAVE_GL_GLU_H=1 -DHAVE_LIBFLTK=1  -I. -I.  -I./../SrcShared -I./../SrcShared/Hardware -I./../SrcShared/Hardware/TRG -I./../SrcShared/Palm/Device -I./../SrcShared/Palm/Platform -I./../SrcShared/Palm/Platform/Core/Hardware/IncsPrv -I./../SrcShared/Palm/Platform/Core/System/IncsPrv -I./../SrcShared/Palm/Platform/Incs -I./../SrcShared/Palm/Platform/Incs/Core -I./../SrcShared/Palm/Platform/Incs/Core/Hardware -I./../SrcShared/Palm/Platform/Incs/Core/System -I./../SrcShared/Palm/Platform/Incs/Core/UI -I./../SrcShared/Palm/Platform/Incs/Libraries -I./../SrcShared/Gzip -I./../SrcShared/jpeg -I./../SrcShared/omnithread -I./../SrcShared/Patches -I./../SrcShared/UAE -I./../SrcUnix -I./../SrcUnix/espws-2.0    --save-temps -DPLATFORM_UNIX=1 -D__PALMOS_TRAPS__=0 -DEMULATION_LEVEL=EMULATION_UNIX -O2  -DHAS_PROFILING=0 -DNDEBUG  -fexceptions -Wall -Wno-multichar -Wno-unknown-pragmas -Wno-conversion  -fpermissive   -g -D_REENTRANT -DPthreadDraftVersion=10 -DPthreadSupportThreadPriority -I/usr/openwin/include -c ./../SrcShared/MetaMemory.cpp
./../SrcShared/MetaMemory.cpp: In function `static enum Errors::EAccessType MetaMemory::AllowForBugs(long unsigned int, long int, int, Errors::EAccessType)':
./../SrcShared/MetaMemory.cpp:435: Internal compiler error.
./../SrcShared/MetaMemory.cpp:435: Please submit a full bug report.
./../SrcShared/MetaMemory.cpp:435: See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[1]: *** [MetaMemory.o] Error 1
make[1]: Leaving directory `/export/home/local1/pkgs_32/POSE/Emulator_Src_3.4/BuildUnix'
make: *** [all-recursive] Error 1


(The compiler was built from source distribution using the
plain ./configure command, with no special options, and I
have used it to successfully build several dozen other
packages under Solaris 8 ) Attached is the file MetaMemory.ii.
>How-To-Repeat:
The POSE 3.4 distribution is available from the following URL:

http://www.palmos.com/dev/tools/emulator/emulator_archive.html

It requires fltk, as well.
>Fix:

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

IyAxICIuLy4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5LmNwcCIKIAogCgoKCgoKCgoKCgoKIyAxICIu
Li9TcmNTaGFyZWQvRW1Db21tb24uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAoKIAog
CiAKIAoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiMgMSAiLi4vU3JjU2hhcmVkL1N3aXRj
aGVzLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCgogCiAKCiMgMzQgIi4uL1NyY1No
YXJlZC9Td2l0Y2hlcy5oIgoKCgkgCgkKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAxIDMgNAogCgoK
CgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaXNhX2RlZnMuaAkxLjIwCTk5LzA1LzA0IFNNSSIKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKIAoKCgoKCiMg
MjY3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9p
bmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzIDQKCgogCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCiAKCgoK
IyAzNjYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
L2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAoKCiAKCgoKCgoKCgoKCgp9CgoKCiMgMzcgIi4u
L1NyY1NoYXJlZC9Td2l0Y2hlcy5oIiAyCgoKIyA1MyAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgi
CgoKIAoKIyA3MSAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgiCgoKCQoJCgkKCgkKCQkKCQoKCgoK
CgoKCgoKIyAxMjAgIi4uL1NyY1NoYXJlZC9Td2l0Y2hlcy5oIgoKCQoJCgoKCiAKIAogCiAKCgoJ
CgoKCgogCiAKIAoKCgoKCQoKCgogCiAKIAogCgoKCgogCiAKCgoKCiAKIAoKCgoKIAoKCgoKIAog
CiAKIAoKCgoKIAoKCgoKCQoKCgogCiAKCgoJCgoKCgoKIAoKCgogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyA1MCAiLi4vU3JjU2hhcmVkL0VtQ29tbW9uLmgiIDIKCgoKIAogCiAKCgoK
CgoKCgojIDkzICIuLi9TcmNTaGFyZWQvRW1Db21tb24uaCIKCgogCiAKIAoKIyAxICIuLi9TcmNT
aGFyZWQvRW1UeXBlcy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiAKIAogCgogCgoJdHlwZWRlZglz
aWduZWQgY2hhcgkJCWludDg7Cgl0eXBlZGVmCXVuc2lnbmVkIGNoYXIJCXVpbnQ4OwoKCXR5cGVk
ZWYgc2lnbmVkIHNob3J0CQlpbnQxNjsKCXR5cGVkZWYgdW5zaWduZWQgc2hvcnQJCXVpbnQxNjsK
Cgl0eXBlZGVmIHNpZ25lZCBsb25nCQkJaW50MzI7Cgl0eXBlZGVmIHVuc2lnbmVkIGxvbmcJCXVp
bnQzMjsKCgoKCgoJdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nCWludDY0OwoJdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcJdWludDY0OwoKCnR5cGVkZWYgdWludDMyCQkJCWVtdXB0cjsKCnR5cGVk
ZWYgaW50IAkJCQlCb29sOwoKdHlwZWRlZiBpbnQzMgkJCQlFcnJDb2RlOwp0eXBlZGVmIGludDMy
CQkJCVN0ckNvZGU7Cgp0eXBlZGVmIHVpbnQ4CQkJCVNjYWxlVHlwZTsKdHlwZWRlZiBpbnQzMgkJ
CQlSQU1TaXplVHlwZTsKdHlwZWRlZiBpbnQzMgkJCQlFbUNvb3JkOwoKCgoKCiAKCmVudW0gQ2xv
c2VBY3Rpb25UeXBlCnsKCWtTYXZlQWx3YXlzLAoJa1NhdmVBc2ssCglrU2F2ZU5ldmVyCn07CgoK
ZW51bSBMb2dnaW5nVHlwZQp7CglrTm9ybWFsTG9nZ2luZwk9IDB4MDEsCglrR3JlbWxpbkxvZ2dp
bmcJPSAweDAyLAoJa0FsbExvZ2dpbmcJCT0ga05vcm1hbExvZ2dpbmcgfCBrR3JlbWxpbkxvZ2dp
bmcKfTsKCgplbnVtIEVtUmVzZXRUeXBlCnsKCWtSZXNldFN5cywJCQkgCglrUmVzZXRTb2Z0LAkJ
CSAKCWtSZXNldEhhcmQsCQkJIAoJa1Jlc2V0RGVidWcsCQkgCgoJa1Jlc2V0VHlwZU1hc2sJCT0g
MHgwNywKCWtSZXNldEV4dE1hc2sJCT0gMHgwOCwKCWtSZXNldE5vRXh0CQkJPSAweDA4LAoKCWtS
ZXNldFN5c05vRXh0CQk9IGtSZXNldE5vRXh0IHwga1Jlc2V0U3lzLAkgCglrUmVzZXRTb2Z0Tm9F
eHQJCT0ga1Jlc2V0Tm9FeHQgfCBrUmVzZXRTb2Z0LAkgCglrUmVzZXRIYXJkTm9FeHQJCT0ga1Jl
c2V0Tm9FeHQgfCBrUmVzZXRIYXJkLAkgCglrUmVzZXREZWJ1Z05vRXh0CT0ga1Jlc2V0Tm9FeHQg
fCBrUmVzZXREZWJ1ZwkgCn07CgoKZW51bSBFbUVycm9ySGFuZGxpbmdPcHRpb24KewoJa1Nob3cs
CglrQ29udGludWUsCglrUXVpdCwKCWtTd2l0Y2gKfTsKCgoKIyA5OSAiLi4vU3JjU2hhcmVkL0Vt
Q29tbW9uLmgiIDIKCiAKCgogCiAKIAoKCgoKCgoJCiMgMSAiLi4vU3JjVW5peC9FbUNvbW1vblVu
aXguaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAogCiAKIAoKCgoKIAoKIyAxICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1Bh
bG1QYWNrLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgcGFjaygyKQoKIyAx
NyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCiAKCgoKCiAKCgoKCgoKCgoKCgogCgogCiAKCgkK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0J1aWxkRGVmaW5lcy5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCgoKCiAKIAogCiAKIAogCgoK
CgogCgoKCgogCiAKCgoKCiAKIAoKCgoKCiAKIAoKCgoKCgoKCgogCiAKIAogCgoKCgoKIAogCiAK
IAogCgoKCgoKIAogCgoKCgogCiAKIAogCgoKCgoKIAogCiAKCgoKCiAKIAoKCgoKIAogCgoKCgog
CiAKCgoKCiAKCgoKCgogCiAKIAogCgoKCgoKCgoKCgojIDQxICIuLi9TcmNTaGFyZWQvUGFsbS5o
IiAyCgoKCSAKCSAKCSAKCSAKCgkKCgoJCQoJCgoKCgoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CiAKIAogCgogCiAKIAogCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWls
ZERlZmF1bHRzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKIAogCiAKIAog
CiAKCgogCgoKCgoKCgoKCgoKCgoKCQoKCgoKCgkKCgkKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRzLmgiCgoKCgoKCgogCgoKCgogCiAKCgoKCiAKCgoK
CiAKCgkKCgogCgoJCgoKIAoKCQoKCgoJCgkgCgkgCgkgCgkKCgogCgoKICAgCgoKCgoKCgkgICAK
ICAgCgojIDE0MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRz
LmgiCgoKCiAKCiAgIAoKCgkgICAKICAgCgoKCgoJCgoKIAoKCQoKCiAKCgkKCgoKCQoKCgoJCgoK
CgkKCgoKIAogCiAKIAoKCgkKCgogCgoJCgoKIAoKCQoKCiAKIAoKCQoKCgoKCQoJIAoJIAoJIAoJ
CgoKCgogCiAKIAoKCQoKCgoJCgoKCgkKCgoKCQoKCiAKCgkKCgogCgoJCgoKIAoKCQoKCiAKCgkg
CgkKCgogCgoJIAoJCgoKIAoKCSAKCQoKCiAKCgkgCgkKCgogCgoJIAoJCgoKIAoKCQoKCiAKCgkK
CgogCiAKIAoKCgoKCgoJCgoKCiAKIAogCiAKIAoKCiMgMzUgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs
YXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoK
IAp0eXBlZGVmIHNpZ25lZCBjaGFyCQlJbnQ4Owp0eXBlZGVmIHNpZ25lZCBzaG9ydAkJSW50MTY7
CQp0eXBlZGVmIHNpZ25lZCBsb25nCQlJbnQzMjsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJVUlu
dDg7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFVJbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
ICAgVUludDMyOwoKCgogCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJQm9vbGVhbjsKCgp0eXBlZGVm
IGNoYXIJCQkJQ2hhcjsKdHlwZWRlZiBVSW50MTYJCQkJV0NoYXI7CQkgCgp0eXBlZGVmIFVJbnQx
NgkJCQlFcnI7Cgp0eXBlZGVmIFVJbnQzMgkJCQlMb2NhbElEOwkJIAoKdHlwZWRlZiBJbnQxNiAJ
CQkJQ29vcmQ7CQkgCgoKdHlwZWRlZiB2b2lkICoJCQkJTWVtUHRyOwkJIAp0eXBlZGVmIHN0cnVj
dCBfb3BhcXVlICpNZW1IYW5kbGU7CSAKCgoKdHlwZWRlZiBJbnQzMiAoKlByb2NQdHIpKCk7CgoK
CiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoJCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL1BhbG1UeXBlcy5oIgoKICAgICAgCgoKCgoJCgoKCgoKIAoKCgogCiAKCgoK
IAoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCQoKCgkJCgkKCgoKIAoKCgoKCgoK
CgoKCgoKCiAKCgkKCQoJCgoJCgoKCgkKCgoKCgkKCgoKCgogCgoKCgoKCgojIDI0OCAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgojIDI2NCAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKCgoKCgojIDI4MiAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKIAoKCgoKCgoKIAoKCgoJ
CgoKCgkKCgojIDU4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCgkgCgogCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1hcC5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL0NvcmVUcmFwcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vSW5jcy9Db3JlL0hhcmR3YXJlL002OEtId3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgogCgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IE02OEtFeGNUYWJsZVR5cGUgewoJVUludDMyCWlu
aXRTdGFjazsJCQkJCQkJCSAKCVVJbnQzMglpbml0UEM7CQkJCQkJCQkJIAoJCglVSW50MzIJYnVz
RXJyOwkJCQkJCQkJCSAKCVVJbnQzMglhZGRyZXNzRXJyOwkJCQkJCQkJIAoJVUludDMyCWlsbGVn
YWxJbnN0cjsJCQkJCQkJIAoJVUludDMyCWRpdmlkZUJ5WmVybzsJCQkJCQkJIAoJVUludDMyCWNo
azsJCQkJCQkJCQkJIAoJVUludDMyCXRyYXA7CQkJCQkJCQkJCSAKCVVJbnQzMglwcml2aWxlZ2U7
CQkJCQkJCQkgCglVSW50MzIJdHJhY2U7CQkJCQkJCQkJIAoJVUludDMyCWFUcmFwOwkJCQkJCQkJ
CSAKCVVJbnQzMglmVHJhcDsJCQkJCQkJCQkgCglVSW50MzIJcmVzZXJ2ZWQxMjsJCQkJCQkJCSAK
CVVJbnQzMgljb3Byb2M7CQkJCQkJCQkJIAoJVUludDMyCWZvcm1hdEVycjsJCQkJCQkJCSAKCVVJ
bnQzMgl1bml0aWFsaXplZEludDsJCQkJCQkgCgkKCVVJbnQzMglyZXNlcnZlZFs4XTsJCQkJCQkJ
IAoJCglVSW50MzIJc3B1cmlvdXNJbnQ7CQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMTsJCQkJCQkJ
CSAKCVVJbnQzMglhdXRvVmVjMjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMzsJCQkJCQkJCSAK
CVVJbnQzMglhdXRvVmVjNDsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNTsJCQkJCQkJCSAKCVVJ
bnQzMglhdXRvVmVjNjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNzsJCQkJCQkJCSAKCQoJVUlu
dDMyCXRyYXBOWzE2XTsJCQkJCQkJCSAKCQoJVUludDMyCXVuYXNzaWduZWRbMTZdOwkJCQkJCSAK
CX0gTTY4S0V4Y1RhYmxlVHlwZTsKIAogCgogCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBNNjhLUmVn
c1R5cGUgewoJVUludDMyCWRbOF07CQkJCQkJCSAKCVVJbnQzMglhWzddOwkJCQkJCQkgCglVSW50
MzIJdXNwOwkJCQkJCQkgCglVSW50MzIJc3NwOwkJCQkJCQkgCglVSW50MzIJcGM7CQkJCQkJCSAK
CVVJbnQxNglzcjsJCQkJCQkJIAp9IE02OEtSZWdzVHlwZTsKCgoKIAogCgoKCiAKCgoKIAoKCiAK
CgoKIAoKCgoKCgoKCgojIDU3ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv
Q29yZVRyYXBzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCgoKCiAKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKIAoKCiAKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKCiAKCgoKIAoKCgoK
IAoKCiAKCgoKCgogCgoKCiAKCgoKCiAKCiAKCgogCgoKIAoKCiAKCgoKCgkJCiAKIAogCgogCiAK
IAoJCgoKCgoKCiAKIAogCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKIAoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK
CgoKCiAKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCiAKCgogCgoKIAogCiAKCgoKCgoKCgoK
CQoKCiMgMjQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0
bWFwLmgiIDIKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtT3B0RXJyb3JDaGVja0xldmVsLmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoJCgkJCgkJCgkKCgkKCQkKCQoKCiMgMjYgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0bWFwLmgiIDIKCgoKIAogCiAKCiAK
CgoKCiAKdHlwZWRlZiBlbnVtIHsKCUJpdG1hcENvbXByZXNzaW9uVHlwZVNjYW5MaW5lID0gMCwK
CUJpdG1hcENvbXByZXNzaW9uVHlwZVJMRSwKCQoJQml0bWFwQ29tcHJlc3Npb25UeXBlTm9uZSA9
IDB4RkYKfSBCaXRtYXBDb21wcmVzc2lvblR5cGU7CgoKIAoKdHlwZWRlZiBzdHJ1Y3QgQml0bWFw
RmxhZ3NUeXBlIHsKCVVJbnQxNiBjb21wcmVzc2VkOjE7ICAJCQkgCglVSW50MTYgaGFzQ29sb3JU
YWJsZToxOwkJCSAKCVVJbnQxNiBoYXNUcmFuc3BhcmVuY3k6MTsJCSAKCVVJbnQxNiBpbmRpcmVj
dDoxOwkJCQkgCglVSW50MTYgZm9yU2NyZWVuOjE7CQkJCSAKCVVJbnQxNiByZXNlcnZlZDoxMTsK
fSBCaXRtYXBGbGFnc1R5cGU7CgogCnR5cGVkZWYgc3RydWN0IEJpdG1hcFR5cGUgewoJSW50MTYg
IAkJCQl3aWR0aDsKCUludDE2ICAJCQkJaGVpZ2h0OwoJVUludDE2ICAJCQkJcm93Qnl0ZXM7CglC
aXRtYXBGbGFnc1R5cGUJZmxhZ3M7CglVSW50OAkJCQkJcGl4ZWxTaXplOwkJCSAKCVVJbnQ4CQkJ
CQl2ZXJzaW9uOwkJCQkgCglVSW50MTYJIAkJCW5leHREZXB0aE9mZnNldDsJIAoJCQkJCQkJCQkJ
CQkJIAoJVUludDgJCQkJCXRyYW5zcGFyZW50SW5kZXg7CSAKCQkJCQkJCQkJCQkJCSAKCVVJbnQ4
CQkJCQljb21wcmVzc2lvblR5cGU7CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkKCVVJ
bnQxNgkgCQkJcmVzZXJ2ZWQ7CQkJIAoJCgkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCQkJ
CQkJCQkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0gQml0bWFwVHlwZTsKCnR5cGVkZWYgQml0
bWFwVHlwZSAqQml0bWFwUHRyOwoKCiAKIAogCgp0eXBlZGVmIHN0cnVjdCBSR0JDb2xvclR5cGUg
ewoJVUludDgJaW5kZXg7CQkJCQkJCQkJIAoJVUludDgJcjsJCQkJCQkJCQkJCSAKCVVJbnQ4CWc7
CQkJCQkJCQkJCQkgCglVSW50OAliOwkJCQkJCQkJCQkJIAp9IFJHQkNvbG9yVHlwZTsKCgp0eXBl
ZGVmIHN0cnVjdCBDb2xvclRhYmxlVHlwZSB7CgkJCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCQkJ
bnVtRW50cmllczsJCSAKCSAKCQkJCQkJCQkJCQkJCQkgCn0gQ29sb3JUYWJsZVR5cGU7CgoKIAoK
CiMgMTQ5ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1h
cC5oIgoKCgojIDY2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hhckF0dHIuaCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKIAogCiAKIAogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAogCiAK
CiAKCiMgNzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hh
ckF0dHIuaCIKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgojIDEyNiAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFyQXR0ci5oIgoKCgoKIyA2NyAiLi4v
U3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J
bmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCiAKCgoKCiAKCgoKCQkJCQkJCQkJCQkJCQkJIAogCgoJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgoK
CiAKIAogCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKCgoKCgogCiAKIAogCiAKIAoKCgog
CgoKCiAKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKCgojIDM1MCAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFycy5oIgoKCiMgMzYxICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiCgogCmVudW0gc3lt
Ym9sQ2hhcnMgewoJc3ltYm9sTGVmdEFycm93ID0gMywKCXN5bWJvbFJpZ2h0QXJyb3csCglzeW1i
b2xVcEFycm93LAoJc3ltYm9sRG93bkFycm93LAoJc3ltYm9sU21hbGxEb3duQXJyb3csCglzeW1i
b2xTbWFsbFVwQXJyb3csCglzeW1ib2xNZW1vID0gOSwKCXN5bWJvbEhlbHAsCglzeW1ib2xOb3Rl
LAoJc3ltYm9sTm90ZVNlbGVjdGVkLAoJc3ltYm9sQ2Fwc0xvY2ssCglzeW1ib2xOdW1Mb2NrLAoJ
c3ltYm9sU2hpZnRVcHBlciwKCXN5bWJvbFNoaWZ0UHVuYywKCXN5bWJvbFNoaWZ0RXh0LAoJc3lt
Ym9sU2hpZnROb25lLAoJc3ltYm9sTm9UaW1lLAoJc3ltYm9sQWxhcm0sCglzeW1ib2xSZXBlYXQs
CglzeW1ib2xDaGVja01hcmssCgkgCgkgCglzeW1ib2xEaWFtb25kQ2hyLAoJc3ltYm9sQ2x1YkNo
ciwKCXN5bWJvbEhlYXJ0Q2hyLAoJc3ltYm9sU3BhZGVDaHIKCX07CgogCmVudW0gc3ltYm9sN0No
YXJzIHsKCXN5bWJvbDdTY3JvbGxVcCA9IDEsCglzeW1ib2w3U2Nyb2xsRG93biwKCXN5bWJvbDdT
Y3JvbGxVcERpc2FibGVkLAoJc3ltYm9sN1Njcm9sbERvd25EaXNhYmxlZAoJfTsKCiAKZW51bSBz
eW1ib2wxMUNoYXJzIHsKCXN5bWJvbENoZWNrYm94T2ZmID0gMCwKCXN5bWJvbENoZWNrYm94T24s
CglzeW1ib2wxMUxlZnRBcnJvdywKCXN5bWJvbDExUmlnaHRBcnJvdywKCXN5bWJvbDExTGVmdEFy
cm93RGlzYWJsZWQsCQkgCglzeW1ib2wxMVJpZ2h0QXJyb3dEaXNhYmxlZAkJIAoJfTsKCgoKIyA2
OCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DcmMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgogCgoKCgoKCmV4dGVybiAiQyIgewoKCgoJCgogCiAKIAoKCiAKIAogCiAKVUludDE2
CQlDcmMxNkNhbGNCbG9jayhjb25zdCB2b2lkICpidWZQLCBVSW50MTYgY291bnQsIFVJbnQxNiBj
cmMpCgkJCQkJCQkgIDsKClVJbnQxNgkJQ3JjMTZDYWxjQmlnQmxvY2sodm9pZCAqYnVmUCwgVUlu
dDMyIGNvdW50LCBVSW50MTYgY3JjKTsKCgoKfQoKCgoKCiMgNzEgIi4uL1NyY1NoYXJlZC9QYWxt
LmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl
bS9EYXRhTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAxICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0Vycm9yQmFzZS5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2V0
am1wLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0
am1wLmgJMS4zNgk5OS8wOC8xMCBTTUkiCQoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL2lzby9zZXRqbXBfaXNvLmgiIDEgMyA0
CiAKIAoKIAogCiAKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0
am1wX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0
dXJlX3Rlc3RzLmgiIDEgMyA0CiAKCgoKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZmVh
dHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYgU01JIgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgp9CgoKCiMgMzEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvaXNvL3NldGptcF9pc28uaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CgoKCgogCgoKCgojIDU0
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNs
dWRlL2lzby9zZXRqbXBfaXNvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludAlqbXBf
YnVmWzEyIF07CgoKCgoKCgoKCmV4dGVybiBpbnQgc2V0am1wKGptcF9idWYpOwojcHJhZ21hIHVu
a25vd25fY29udHJvbF9mbG93KHNldGptcCkKZXh0ZXJuIGludCBfc2V0am1wKGptcF9idWYpOwoj
cHJhZ21hIHVua25vd25fY29udHJvbF9mbG93KF9zZXRqbXApCmV4dGVybiB2b2lkIGxvbmdqbXAo
am1wX2J1ZiwgaW50KTsKZXh0ZXJuIHZvaWQgX2xvbmdqbXAoam1wX2J1ZiwgaW50KTsKCiMgOTUg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvaXNvL3NldGptcF9pc28uaCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKfQoKCgojIDE5ICIvdXNy
L2luY2x1ZGUvc2V0am1wLmgiIDIgMyA0CgoKIAoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoK
IAoKCgoKdHlwZWRlZiBpbnQgc2lnam1wX2J1ZlsxOSBdOwoKCmV4dGVybiBpbnQgc2lnc2V0am1w
KHNpZ2ptcF9idWYsIGludCk7CiNwcmFnbWEgdW5rbm93bl9jb250cm9sX2Zsb3coc2lnc2V0am1w
KQpleHRlcm4gdm9pZCBzaWdsb25nam1wKHNpZ2ptcF9idWYsIGludCk7CgoKIyA2MyAiL3Vzci9p
bmNsdWRlL3NldGptcC5oIiAzIDQKCgoKfQoKCgojIDEwMyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh
dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9FcnJvckJhc2UuaCIgMgoKCgogCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgkKCgkKCgoKCQogCnR5cGVkZWYgc3RydWN0IEVyckV4Y2VwdGlvblR5cGUgewoJ
c3RydWN0IEVyckV4Y2VwdGlvblR5cGUqCW5leHRQOwkgCglqbXBfYnVmIAkJCQkJCXN0YXRlOwkg
CglJbnQzMgkJCQkJCQkJZXJyOwkJIAoJfSBFcnJFeGNlcHRpb25UeXBlOwp0eXBlZGVmIEVyckV4
Y2VwdGlvblR5cGUgKkVyckV4Y2VwdGlvblB0cjsKCgogCgoKCgoKCgoKCQkKIAogCiAKIAogCiAK
CgoKCgoKCQkJCgkJCQoKCgoKCgogCgoKIyAyODkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3Jt
L0luY3MvQ29yZS9TeXN0ZW0vRXJyb3JCYXNlLmgiCgoKCgoKCiMgMjMgIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRGF0YU1nci5oIiAyCgoKIAojIDEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTWVtb3J5TWdyLmgiIDEKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgp0eXBlZGVmIGVudW0gewltZW1JRFB0ciwgbWVt
SURIYW5kbGUgfSBMb2NhbElES2luZDsKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCiMgMzM1ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNz
L0NvcmUvU3lzdGVtL01lbW9yeU1nci5oIgoKCgoKCgoKIyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiIDIKCgoKdHlwZWRlZiBVSW50MzIJ
RG1SZXNUeXBlOwp0eXBlZGVmIFVJbnQxNglEbVJlc0lEOwoKIAoKCgoKCgoKCgoKCgoKIAogCiAK
IAogCiAKIAogCiAKIAoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgogCiAKIAogCiAKIAoKCgoJCQkJ
CQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgojIDEyMyAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiCgkJCQkJCQkJCQkJCQkK
IAoKCgoKIAoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCgogCgoKCgoKCgoKCiAKdHlwZWRlZgl2b2lkICoJCQkJ
CQlEbU9wZW5SZWY7CgoKIAoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MzIJCWluZm9bOF07Cgl9
IERtU2VhcmNoU3RhdGVUeXBlOwp0eXBlZGVmIERtU2VhcmNoU3RhdGVUeXBlKglEbVNlYXJjaFN0
YXRlUHRyOwkKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQkJYXR0cmlidXRlczsJCQkJ
CQkJIAoJVUludDgJCQl1bmlxdWVJRFszXTsJCQkJCQkgCgl9IFNvcnRSZWNvcmRJbmZvVHlwZTsK
CnR5cGVkZWYgU29ydFJlY29yZEluZm9UeXBlICpTb3J0UmVjb3JkSW5mb1B0cjsKCnR5cGVkZWYg
SW50MTYgRG1Db21wYXJGICh2b2lkICosIHZvaWQgKiwgSW50MTYgb3RoZXIsIFNvcnRSZWNvcmRJ
bmZvUHRyLCAKCQkJCQkJCQlTb3J0UmVjb3JkSW5mb1B0ciwgTWVtSGFuZGxlIGFwcEluZm9IKTsK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiMgNTM4ICIu
Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGFNZ3IuaCIKCgoK
IyA3MiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGVUaW1lLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGVudW0gCgl7Cgl0ZkNvbG9uLAoJdGZDb2xvbkFNUE0sCQkJIAoJdGZDb2xv
bjI0aCwJCQkJIAoJdGZEb3QsCgl0ZkRvdEFNUE0sCQkJCSAKCXRmRG90MjRoLAkJCQkgCgl0Zkhv
dXJzQU1QTSwJCQkgCgl0ZkhvdXJzMjRoLAkJCQkgCgl0ZkNvbW1hMjRoCQkJCSAKCX0gVGltZUZv
cm1hdFR5cGU7CgoKdHlwZWRlZiBlbnVtIHsKCWRzTm9uZSwJCQkJCSAKCWRzVVNBLAkJCQkJIAoJ
ZHNBdXN0cmFsaWEsCQkJIAoJZHNXZXN0ZXJuRXVyb3BlYW4sCSAKCWRzTWlkZGxlRXVyb3BlYW4s
CQkgCglkc0Vhc3Rlcm5FdXJvcGVhbiwJIAoJZHNHcmVhdEJyaXRhaW4sCQkgCglkc1J1bWFuaWEs
CQkJCSAKCWRzVHVya2V5LAkJCQkgCglkc0F1c3RyYWxpYVNoaWZ0ZWQJIAoJfSBEYXlsaWdodFNh
dmluZ3NUeXBlczsKCgogCgoKCgp0eXBlZGVmIGVudW0gewoJZGZNRFlXaXRoU2xhc2hlcywJCSAK
CWRmRE1ZV2l0aFNsYXNoZXMsCQkgCglkZkRNWVdpdGhEb3RzLAkJCSAKCWRmRE1ZV2l0aERhc2hl
cywJCSAKCWRmWU1EV2l0aFNsYXNoZXMsCQkgCglkZllNRFdpdGhEb3RzLAkJCSAKCWRmWU1EV2l0
aERhc2hlcywJCSAKCglkZk1EWUxvbmdXaXRoQ29tbWEsCSAKCWRmRE1ZTG9uZywJCQkJIAoJZGZE
TVlMb25nV2l0aERvdCwJCSAKCWRmRE1ZTG9uZ05vRGF5LAkJIAoJZGZETVlMb25nV2l0aENvbW1h
LAkgCglkZllNRExvbmdXaXRoRG90LAkJIAoJZGZZTURMb25nV2l0aFNwYWNlLAkgCgoJZGZNWU1l
ZCwJCQkJCSAKCWRmTVlNZWROb1Bvc3QJCQkgCgl9IERhdGVGb3JtYXRUeXBlOwoKdHlwZWRlZiBz
dHJ1Y3QgewoJSW50MTYgc2Vjb25kOwoJSW50MTYgbWludXRlOwoJSW50MTYgaG91cjsKCUludDE2
IGRheTsKCUludDE2IG1vbnRoOwoJSW50MTYgeWVhcjsKCUludDE2IHdlZWtEYXk7CQkgCgl9IERh
dGVUaW1lVHlwZTsKCQp0eXBlZGVmIERhdGVUaW1lVHlwZSAqRGF0ZVRpbWVQdHI7CgoKIAogCiAK
dHlwZWRlZiBzdHJ1Y3QgewoJVUludDggICAgICAgIGhvdXJzOwoJVUludDggICAgICAgIG1pbnV0
ZXM7Cn0gVGltZVR5cGU7Cgp0eXBlZGVmIFRpbWVUeXBlICpUaW1lUHRyOwoKCgoKIAogCiAKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHllYXIgIDo3OyAgICAgICAgICAgICAgICAgICAgCglVSW50
MTYgbW9udGggOjQ7IAoJVUludDE2IGRheSAgIDo1Owp9IERhdGVUeXBlOwoKdHlwZWRlZiBEYXRl
VHlwZSAqRGF0ZVB0cjsKCgogCgoKCiAKIAoKCgoKCgoKCgoKCgoKIAogCgoKCgoKIAoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBlbnVtIHsKCWRvbTFzdFN1
biwgZG9tMXN0TW9uLCBkb20xc3RUdWUsIGRvbTFzdFdlbiwgZG9tMXN0VGh1LCBkb20xc3RGcmks
IGRvbTFzdFNhdCwKCWRvbTJuZFN1biwgZG9tMm5kTW9uLCBkb20ybmRUdWUsIGRvbTJuZFdlbiwg
ZG9tMm5kVGh1LCBkb20ybmRGcmksIGRvbTJuZFNhdCwKCWRvbTNyZFN1biwgZG9tM3JkTW9uLCBk
b20zcmRUdWUsIGRvbTNyZFdlbiwgZG9tM3JkVGh1LCBkb20zcmRGcmksIGRvbTNyZFNhdCwKCWRv
bTR0aFN1biwgZG9tNHRoTW9uLCBkb200dGhUdWUsIGRvbTR0aFdlbiwgZG9tNHRoVGh1LCBkb200
dGhGcmksIGRvbTR0aFNhdCwKCWRvbUxhc3RTdW4sIGRvbUxhc3RNb24sIGRvbUxhc3RUdWUsIGRv
bUxhc3RXZW4sIGRvbUxhc3RUaHUsIGRvbUxhc3RGcmksIAoJZG9tTGFzdFNhdAoJfSBEYXlPZldl
ZWtUeXBlOwoKIAoKCmVudW0gewoJZGF0ZVRlbXBsYXRlRGF5TnVtID0gJzAnLAoJZGF0ZVRlbXBs
YXRlRE9XTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTnVt
LAoJZGF0ZVRlbXBsYXRlWWVhck51bQp9OwoKCgoKCgogCiAKIAoKIAogCiAKIAogCiAKIAogCgog
CiAKIAojIDI4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9E
YXRlVGltZS5oIgoKCgoKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAog
CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0
dXJlTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKIyA4
NyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0dXJlTWdy
LmgiCgoKCiMgODAgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKIAoJCQojIDEgIi4uL1NyY1No
YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRm9udC5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglJbnQ4CQlvZmZzZXQ7CglJ
bnQ4CQl3aWR0aDsKfSBGb250Q2hhckluZm9UeXBlLCAqIEZvbnRDaGFySW5mb1B0cjsKCnR5cGVk
ZWYgc3RydWN0IHsKCUludDE2IGZvbnRUeXBlOyAJCQkgCglJbnQxNiBmaXJzdENoYXI7IAkJCSAK
CUludDE2IGxhc3RDaGFyOyAJCQkgCglJbnQxNiBtYXhXaWR0aDsgCQkJIAoJSW50MTYga2Vybk1h
eDsgCQkJIAoJSW50MTYgbkRlc2NlbnQ7IAkJCSAKCUludDE2IGZSZWN0V2lkdGg7IAkJIAoJSW50
MTYgZlJlY3RIZWlnaHQ7IAkJIAoJSW50MTYgb3dUTG9jOyAJCQkJIAoJSW50MTYgYXNjZW50OyAJ
CQkJIAoJSW50MTYgZGVzY2VudDsgCQkJIAoJSW50MTYgbGVhZGluZzsgCQkJIAoJSW50MTYgcm93
V29yZHM7IAkJCSAKfSBGb250VHlwZTsKCnR5cGVkZWYgRm9udFR5cGUgKkZvbnRQdHI7Cgp0eXBl
ZGVmIEZvbnRQdHIgKkZvbnRUYWJsZVB0cjsKCmVudW0gZm9udElEIHsgCglzdGRGb250ID0gMHgw
MCwJCQkJCSAKCWJvbGRGb250LCAJCQkJCQkJIAoJbGFyZ2VGb250LAkJCQkJCQkgCglzeW1ib2xG
b250LAkJCQkJCQkgCglzeW1ib2wxMUZvbnQsIAkJCQkJCSAKCXN5bWJvbDdGb250LAkJCQkJCSAK
CWxlZEZvbnQsCQkJCQkJCQkgCglsYXJnZUJvbGRGb250LAkJCQkJCSAKCWZudEFwcEZvbnRDdXN0
b21CYXNlID0gMHg4MAkgCn07Cgp0eXBlZGVmIGVudW0gZm9udElEIEZvbnRJRDsKCgoKCgoKCiAK
IAogCiAKIAoKIyAxNDcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0
ZW0vRm9udC5oIgoKCgoKIyA4MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0ludGxNZ3IuaCIg
MQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCgoJCgoKCQkKCQoKCiAKCgoKIAoK
CgogCgoKCgoKCQoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
IyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vSW50bE1n
ci5oIgoKCgojIDg3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9LZXlNZ3IuaCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgNzMgIi4uL1NyY1No
YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vS2V5TWdyLmgiCgoKCQoKIyA4OSAi
Li4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y
bS9JbmNzL0NvcmUvU3lzdGVtL0xvY2FsaXplLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CiAKIAp0eXBlZGVmIGVudW0gewoJbmZDb21tYVBlcmlvZCwKCW5mUGVyaW9kQ29tbWEsCgluZlNw
YWNlQ29tbWEsCgluZkFwb3N0cm9waGVQZXJpb2QsCgluZkFwb3N0cm9waGVDb21tYQoJfSBOdW1i
ZXJGb3JtYXRUeXBlOwoKCQoKIyA1MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9Mb2NhbGl6ZS5oIgoKCgoKIyA5MCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoK
CQkKIAoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0v
TmV0Qml0VXRpbHMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu
Y3MvTGlicmFyaWVzL0xpYlRyYXBzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgogCiAKCiAKCgoKCgoK
IAogCiAKIAoKdHlwZWRlZiBlbnVtIHsKCXN5c0xpYlRyYXBOYW1lID0gMHhBODAwICwKCXN5c0xp
YlRyYXBPcGVuLAoJc3lzTGliVHJhcENsb3NlLAoJc3lzTGliVHJhcFNsZWVwLAoJc3lzTGliVHJh
cFdha2UsCglzeXNMaWJUcmFwQ3VzdG9tCgl9IFN5c0xpYlRyYXBOdW1iZXI7CgoKCgojIDI5ICIu
Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldE1nci5oIiAyCgoj
IDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQu
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1JlY3QuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgQWJzUmVjdFR5cGUgewogIENvb3JkIGxlZnQ7CiAg
Q29vcmQgdG9wOwogIENvb3JkIHJpZ2h0OwogIENvb3JkIGJvdHRvbTsKfSBBYnNSZWN0VHlwZTsK
Cgp0eXBlZGVmIHN0cnVjdCBQb2ludFR5cGUgewogIENvb3JkIHg7CiAgQ29vcmQgeTsKfSBQb2lu
dFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgUmVjdGFuZ2xlVHlwZSB7CiAgUG9pbnRUeXBlICB0b3BM
ZWZ0OwogIFBvaW50VHlwZSAgZXh0ZW50Owp9IFJlY3RhbmdsZVR5cGU7Cgp0eXBlZGVmIFJlY3Rh
bmdsZVR5cGUgKlJlY3RhbmdsZVB0cjsKCgoKIyA4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vSW5jcy9Db3JlL1N5c3RlbS9SZWN0LmgiCgoKCgojIDM0ICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2ZW50LmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9XaW5kb3cuaCIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIGVudW0geyB3aW5VcCA9IDAsIHdpbkRv
d24sIHdpbkxlZnQsIHdpblJpZ2h0IH0gV2luRGlyZWN0aW9uVHlwZTsKCgogCnR5cGVkZWYgZW51
bSB7IHNjcmVlbkZvcm1hdCA9IDAsIGdlbmVyaWNGb3JtYXQgfSBXaW5kb3dGb3JtYXRUeXBlOwoK
CiAKdHlwZWRlZiBlbnVtIHt3aW5Mb2NrQ29weSwgd2luTG9ja0VyYXNlLCB3aW5Mb2NrRG9udENh
cmV9IFdpbkxvY2tJbml0VHlwZTsKCgogCnR5cGVkZWYgZW51bSB7Cgl3aW5TY3JlZW5Nb2RlR2V0
RGVmYXVsdHMsCgl3aW5TY3JlZW5Nb2RlR2V0LAoJd2luU2NyZWVuTW9kZVNldFRvRGVmYXVsdHMs
Cgl3aW5TY3JlZW5Nb2RlU2V0LAoJd2luU2NyZWVuTW9kZUdldFN1cHBvcnRlZERlcHRocywKCXdp
blNjcmVlbk1vZGVHZXRTdXBwb3J0c0NvbG9yCn0gV2luU2NyZWVuTW9kZU9wZXJhdGlvbjsKCiAK
CgoKCiAKdHlwZWRlZiBlbnVtIHt3aW5QYWludCwgd2luRXJhc2UsIHdpbk1hc2ssIHdpbkludmVy
dCwgd2luT3ZlcmxheSwgd2luUGFpbnRJbnZlcnNlLCB3aW5Td2FwfSBXaW5EcmF3T3BlcmF0aW9u
OwoKCnR5cGVkZWYgZW51bSB7IGJsYWNrUGF0dGVybiwgd2hpdGVQYXR0ZXJuLCBncmF5UGF0dGVy
biwgY3VzdG9tUGF0dGVybiB9IFBhdHRlcm5UeXBlOwoKCgoKCiAKIAogCnR5cGVkZWYgZW51bSB7
IG5vVW5kZXJsaW5lLCBncmF5VW5kZXJsaW5lLCBzb2xpZFVuZGVybGluZSwgY29sb3JVbmRlcmxp
bmUgfSBVbmRlcmxpbmVNb2RlVHlwZTsKCgoKCnR5cGVkZWYgVUludDggSW5kZXhlZENvbG9yVHlw
ZTsJCQkJIAoKdHlwZWRlZiBVSW50OCBDdXN0b21QYXR0ZXJuVHlwZSBbOF07CQkgCgogCgoKIAog
CiAKCgp0eXBlZGVmIHN0cnVjdCBEcmF3U3RhdGVUeXBlIHsKCVdpbkRyYXdPcGVyYXRpb24JdHJh
bnNmZXJNb2RlOwoJUGF0dGVyblR5cGUJCQlwYXR0ZXJuOwoJVW5kZXJsaW5lTW9kZVR5cGUJdW5k
ZXJsaW5lTW9kZTsKCUZvbnRJRAkJCQlmb250SWQ7CglGb250UHRyCQkJCWZvbnQ7CglDdXN0b21Q
YXR0ZXJuVHlwZQlwYXR0ZXJuRGF0YTsKCUluZGV4ZWRDb2xvclR5cGUJZm9yZUNvbG9yOwoJSW5k
ZXhlZENvbG9yVHlwZQliYWNrQ29sb3I7CglJbmRleGVkQ29sb3JUeXBlCXRleHRDb2xvcjsKCVVJ
bnQ4CQkJCQlyZXNlcnZlZDsJCn0gRHJhd1N0YXRlVHlwZTsKCgoKCgoKCiAKIAogCgoKIAoKdHlw
ZWRlZiB1bmlvbiBGcmFtZUJpdHNUeXBlIHsKCXN0cnVjdCB7CgkJVUludDE2IGNvcm5lckRpYW0J
CTogODsJCQkJIAoJCVVJbnQxNiByZXNlcnZlZF8zCQk6IDM7IAoJCVVJbnQxNiB0aHJlZUQJCQk6
IDE7CQkJCSAKCQlVSW50MTYgc2hhZG93V2lkdGgJOiAyOwkJCQkgCgkJVUludDE2IHdpZHRoCQkJ
OiAyOwkJCQkgCgl9IGJpdHM7CglVSW50MTYgd29yZDsJCQkJCQkJCQkgCn0gRnJhbWVCaXRzVHlw
ZTsKCnR5cGVkZWYgVUludDE2IEZyYW1lVHlwZTsKCiAKCgoKCgoKCgoKCgoKCgogCgp0eXBlZGVm
IHN0cnVjdCBXaW5kb3dGbGFnc1R5cGUgewoJVUludDE2IGZvcm1hdDoxOyAgICAgICAKCVVJbnQx
NiBvZmZzY3JlZW46MTsgICAgCglVSW50MTYgbW9kYWw6MTsgICAgICAgIAoJVUludDE2IGZvY3Vz
YWJsZToxOyAgICAKCVVJbnQxNiBlbmFibGVkOjE7ICAgICAgCglVSW50MTYgdmlzaWJsZToxOyAg
ICAgIAoJVUludDE2IGRpYWxvZzoxOyAgICAgICAKCVVJbnQxNiBmcmVlQml0bWFwOjE7CSAgCglV
SW50MTYgcmVzZXJ2ZWQgOjg7Cn0gV2luZG93RmxhZ3NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgV2lu
ZG93VHlwZSB7CiAgQ29vcmQJCQkJCQkJZGlzcGxheVdpZHRoVjIwOwkJIAogIENvb3JkCQkJCQkJ
CWRpc3BsYXlIZWlnaHRWMjA7CQkgCiAgdm9pZCAqCQkJCQkJCWRpc3BsYXlBZGRyVjIwOwkJIAog
IFdpbmRvd0ZsYWdzVHlwZQkJCQl3aW5kb3dGbGFnczsKICBSZWN0YW5nbGVUeXBlCQkJCXdpbmRv
d0JvdW5kczsKICBBYnNSZWN0VHlwZQkJCQkJY2xpcHBpbmdCb3VuZHM7CiAgQml0bWFwUHRyCQkJ
CQkJYml0bWFwUDsKICBGcmFtZUJpdHNUeXBlICAgCQkJZnJhbWVUeXBlOwogIERyYXdTdGF0ZVR5
cGUgKgkJCQlkcmF3U3RhdGVQOwkJCQkgCiAgc3RydWN0IFdpbmRvd1R5cGUgKgkJbmV4dFdpbmRv
dzsKfSBXaW5kb3dUeXBlOwoKdHlwZWRlZiBXaW5kb3dUeXBlICpXaW5QdHI7CnR5cGVkZWYgV2lu
ZG93VHlwZSAqV2luSGFuZGxlOwoKCiAKIAogCnR5cGVkZWYgc3RydWN0IFdpbkxpbmVUeXBlIHsK
CUNvb3JkIHgxOwoJQ29vcmQgeTE7CglDb29yZCB4MjsKCUNvb3JkIHkyOwp9IFdpbkxpbmVUeXBl
OwoKIAoKCgogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgR3JhcGhpY1N0YXRlVHlwZSB7CglE
cmF3U3RhdGVUeXBlICoJZHJhd1N0YXRlUDsKCURyYXdTdGF0ZVR5cGUgKglkcmF3U3RhdGVTdGFj
a1A7CglJbnQxNgkJCQkJZHJhd1N0YXRlSW5kZXg7CglVSW50MTYJCQkJc2NyZWVuTG9ja0NvdW50
Owp9IEdyYXBoaWNTdGF0ZVR5cGU7CgogCiAKIAoKCgoKIAogCiAKCiAKIAoKCgoKCgoKCgoKCgkK
CQoJCiMgNTU2ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1dp
bmRvdy5oIgoKCgoKIyAzNSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5
c3RlbS9TeXNFdmVudC5oIiAyCgoKCiAKIAoKCnR5cGVkZWYgZW51bSB7CglzeXNFdmVudE5pbEV2
ZW50ID0gMCwKCXN5c0V2ZW50UGVuRG93bkV2ZW50LAoJc3lzRXZlbnRQZW5VcEV2ZW50LAoJc3lz
RXZlbnRQZW5Nb3ZlRXZlbnQsCglzeXNFdmVudEtleURvd25FdmVudCwKCXN5c0V2ZW50V2luRW50
ZXJFdmVudCwKCXN5c0V2ZW50V2luRXhpdEV2ZW50LAoJc3lzRXZlbnRBcHBTdG9wRXZlbnQgPSAy
MiwKCXN5c0V2ZW50VHNtQ29uZmlybUV2ZW50ID0gMzUsCglzeXNFdmVudFRzbUZlcEJ1dHRvbkV2
ZW50LAoJc3lzRXZlbnRUc21GZXBNb2RlRXZlbnQsCgoJIAoJIAoJc3lzRXZlbnROZXh0VUlFdmVu
dCA9IDB4MDgwMCwKCgkgCglzeXNFdmVudEZpcnN0SU5ldExpYkV2ZW50ID0gMHgxMDAwLAoJc3lz
RXZlbnRGaXJzdFdlYkxpYkV2ZW50ID0gMHgxMTAwLAoJCgkgCgkgCglzeXNFdmVudEZpcnN0VXNl
ckV2ZW50ID0gMHg2MDAwCn0gU3lzRXZlbnRzRW51bTsKCgoKIAoKCgoKCgoKCgoKCgogCgoKCiAK
CgoKc3RydWN0IF9HZW5lcmljRXZlbnRUeXBlIHsKCVVJbnQxNiAgICAgICAgIGRhdHVtWzhdOwog
ICB9OwoKc3RydWN0IF9QZW5VcEV2ZW50VHlwZSB7CiAgIFBvaW50VHlwZSAgICAgIHN0YXJ0OyAg
ICAgICAgICAgICAKICAgUG9pbnRUeXBlICAgICAgZW5kOyAgICAgICAgICAgICAgIAogICB9OwoK
c3RydWN0IF9LZXlEb3duRXZlbnRUeXBlIHsKICAgV0NoYXIgICAgICAgICAgY2hyOyAgICAgICAg
ICAgICAgIAogICBVSW50MTYgICAgICAgICBrZXlDb2RlOyAgICAgICAgICAgCiAgIFVJbnQxNiAg
ICAgICAgIG1vZGlmaWVyczsKICAgfTsKCnN0cnVjdCBfV2luRW50ZXJFdmVudFR5cGUgewogICBX
aW5IYW5kbGUgICAgICBlbnRlcldpbmRvdzsKICAgV2luSGFuZGxlICAgICAgZXhpdFdpbmRvdzsK
ICAgfTsKCnN0cnVjdCBfV2luRXhpdEV2ZW50VHlwZSB7CiAgIFdpbkhhbmRsZSAgICAgIGVudGVy
V2luZG93OwogICBXaW5IYW5kbGUgICAgICBleGl0V2luZG93OwogICB9OwoKc3RydWN0IF9UU01D
b25maXJtVHlwZSB7CglDaGFyICoJCQl5b21pVGV4dDsKCVVJbnQxNgkJCWZvcm1JRDsKICAgfTsK
CnN0cnVjdCBfVFNNRmVwQnV0dG9uVHlwZSB7CglVSW50MTYJCQlidXR0b25JRDsKICAgfTsKCnN0
cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZSB7CglVSW50MTYgICAgICAgICBtb2RlOwkJCQkJIAog
ICB9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzRXZlbnRUeXBlIHsKICAgU3lzRXZlbnRzRW51bSAg
ZVR5cGU7CiAgIEJvb2xlYW4gICAgICAgIHBlbkRvd247CiAgIFVJbnQ4ICAgICAgICAgIHRhcENv
dW50OwogICBDb29yZCAgICAgICAgICBzY3JlZW5YOwogICBDb29yZCAgICAgICAgICBzY3JlZW5Z
OwogICB1bmlvbiB7CiAgICAgIHN0cnVjdCBfR2VuZXJpY0V2ZW50VHlwZQkJZ2VuZXJpYzsKCiAg
ICAgIHN0cnVjdCBfUGVuVXBFdmVudFR5cGUJCQlwZW5VcDsKICAgICAgc3RydWN0IF9LZXlEb3du
RXZlbnRUeXBlCQlrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlCQl3aW5F
bnRlcjsKICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlCQl3aW5FeGl0OwogICAgICBzdHJ1
Y3QgX1RTTUNvbmZpcm1UeXBlCQkJdHNtQ29uZmlybTsKICAgICAgc3RydWN0IF9UU01GZXBCdXR0
b25UeXBlCQl0c21GZXBCdXR0b247CiAgICAgIHN0cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZQl0
c21GZXBNb2RlOwoKICAgICAgfSBkYXRhOwoKfSBTeXNFdmVudFR5cGU7CgoKIAp0eXBlZGVmICBz
dHJ1Y3QgewogICBTeXNFdmVudFR5cGUgICBldmVudDsKICAgVUludDMyICAgICAgICAgaWQ7ICAg
ICAgICAgICAgICAgICAgIAogICB9IFN5c0V2ZW50U3RvcmVUeXBlOwoKCgogCiAKIAoKIyAxOTUg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQuaCIK
CgoKIAoKCgoKCgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lz
dGVtL05ldE1nci5oIiAyCgoKIAogCgoKCgogCgoKIAogCiAKCgogCiAKCgoJCQkgCgkJCSAKCQkJ
IAoJCQkgCgkJCSAKCQkJIAoKCiAKCgoKCiAKCgogCgoKCiAKCgoKIAogCiAKCgogCiAKIAogCgoK
IAogCiAKCgoKCgoKCgogCiAKIAogCgoKCgoKCgogCiAKIAoKCgogCiAKIAogCiAKIAoKIAp0eXBl
ZGVmIGVudW0gewoJIAoJbmV0U29ja2V0T3B0SVBPcHRpb25zID0gMSwJCQkJCQkgCgkKCSAKCW5l
dFNvY2tldE9wdFRDUE5vRGVsYXkgPSAxLAkJCQkJIAoJbmV0U29ja2V0T3B0VENQTWF4U2VnID0g
MiwJCQkJCQkgCgoJIAoJbmV0U29ja2V0T3B0U29ja0RlYnVnID0gMHgwMDAxLAkJCQkgCgluZXRT
b2NrZXRPcHRTb2NrQWNjZXB0Q29ubiA9IDB4MDAwMiwJCSAKCW5ldFNvY2tldE9wdFNvY2tSZXVz
ZUFkZHIgPSAweDAwMDQsCQkJIAoJbmV0U29ja2V0T3B0U29ja0tlZXBBbGl2ZSA9IDB4MDAwOCwJ
CQkgCgluZXRTb2NrZXRPcHRTb2NrRG9udFJvdXRlID0gMHgwMDEwLAkJCSAKCW5ldFNvY2tldE9w
dFNvY2tCcm9hZGNhc3QgPSAweDAwMjAsCQkJIAoJbmV0U29ja2V0T3B0U29ja1VzZUxvb3BiYWNr
ID0gMHgwMDQwLAkJIAoJbmV0U29ja2V0T3B0U29ja0xpbmdlciA9IDB4MDA4MCwJCQkJIAoJbmV0
U29ja2V0T3B0U29ja09PQkluTGluZSA9IDB4MDEwMCwJCQkgCgkKCW5ldFNvY2tldE9wdFNvY2tT
bmRCdWZTaXplID0gMHgxMDAxLAkJIAoJbmV0U29ja2V0T3B0U29ja1JjdkJ1ZlNpemUgPSAweDEw
MDIsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kTG93V2F0ZXIgPSAweDEwMDMsCQkgCgluZXRTb2Nr
ZXRPcHRTb2NrUmN2TG93V2F0ZXIgPSAweDEwMDQsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kVGlt
ZW91dCA9IDB4MTAwNSwJCSAKCW5ldFNvY2tldE9wdFNvY2tSY3ZUaW1lb3V0ID0gMHgxMDA2LAkJ
IAoJbmV0U29ja2V0T3B0U29ja0Vycm9yU3RhdHVzPSAweDEwMDcsCQkgCgluZXRTb2NrZXRPcHRT
b2NrU29ja2V0VHlwZSA9IDB4MTAwOCwJCSAKCQoJIAoJbmV0U29ja2V0T3B0U29ja05vbkJsb2Nr
aW5nID0gMHgyMDAwLAkJIAoJbmV0U29ja2V0T3B0U29ja1JlcXVpcmVFcnJDbGVhciA9IDB4MjAw
MSwJIAoJCQkJCQkJCQkJCQkJCQkgCgluZXRTb2NrZXRPcHRTb2NrTXVsdGlQa3RBZGRyID0gMHgy
MDAyCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJfSBOZXRTb2NrZXRPcHRF
bnVtOwoKCgoKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0T3B0TGV2ZWxJUCA9IDAsCQkJCQkg
CgluZXRTb2NrZXRPcHRMZXZlbFRDUCA9IDYsCQkJCQkgCgluZXRTb2NrZXRPcHRMZXZlbFNvY2tl
dCA9IDB4RkZGRgkJCSAKCX0gTmV0U29ja2V0T3B0TGV2ZWxFbnVtOwoKCiAKdHlwZWRlZiBzdHJ1
Y3QgewoJSW50MTYJCW9uT2ZmOwkJCQkJCQkJIAoJSW50MTYJCXRpbWU7CQkJCQkJCQkJIAoJfSBO
ZXRTb2NrZXRMaW5nZXJUeXBlOwoKIAogCiAKdHlwZWRlZiBlbnVtIHsKCW5ldFNvY2tldEFkZHJS
YXc9MCwJCQkJCQkJCQkgCgluZXRTb2NrZXRBZGRySU5FVD0yCQkJCQkJCQkJIAoJfSBOZXRTb2Nr
ZXRBZGRyRW51bTsKCnR5cGVkZWYgZW51bSB7CgluZXRTb2NrZXRUeXBlU3RyZWFtPTEsCQkJCQkJ
CQkgCgluZXRTb2NrZXRUeXBlRGF0YWdyYW09MiwJCQkJCQkJIAoJbmV0U29ja2V0VHlwZVJhdz0z
LAkJCQkJCQkJCSAKCW5ldFNvY2tldFR5cGVSZWxpYWJsZU1zZz00LAkJCQkJCSAKCW5ldFNvY2tl
dFR5cGVMaWNlbnNlZT04CQkJCQkJCQkgCgl9IE5ldFNvY2tldFR5cGVFbnVtOwoKIAoKCgoKCgog
CiAKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0RGlySW5wdXQ9MCwKCW5ldFNvY2tldERpck91
dHB1dD0xLAoJbmV0U29ja2V0RGlyQm90aD0yCgl9IE5ldFNvY2tldERpckVudW07CgoKIAogCiAK
IAp0eXBlZGVmCUludDE2CQkJTmV0U29ja2V0UmVmOwkJCgogCnR5cGVkZWYJVUludDMyCQlOZXRJ
UEFkZHI7CQkgCgoKCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRySU5UeXBl
IHsKCUludDE2CQkJZmFtaWx5OwkJCQkJIAoJVUludDE2CQlwb3J0OwkJCQkJCSAKCU5ldElQQWRk
cglhZGRyOwkJCQkJCSAKCX0gTmV0U29ja2V0QWRkcklOVHlwZTsKCQogCgoKCiAKIAogCnR5cGVk
ZWYgc3RydWN0ICBOZXRTb2NrZXRBZGRyVHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJCSAKCVVJ
bnQ4CQkJZGF0YVsxNF07CQkJCSAKCX0gTmV0U29ja2V0QWRkclR5cGU7CgkKCiAKIAogCiAKIAp0
eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRyUmF3VHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJ
CSAKCVVJbnQxNgkJaWZJbnN0YW5jZTsJCQkJIAoJVUludDMyCQlpZkNyZWF0b3I7CQkJCSAKCX0g
TmV0U29ja2V0QWRkclJhd1R5cGU7CgkKCQoJCiAKIAogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1
Y3QgTmV0SU9WZWNUeXBlIHsKCVVJbnQ4ICoJCQlidWZQOwkJCQkJCQkgCglVSW50MTYJCQlidWZM
ZW47CQkJCQkJIAoJfSBOZXRJT1ZlY1R5cGUsICpOZXRJT1ZlY1B0cjsKCQoKCiAKdHlwZWRlZiBz
dHJ1Y3QgewoJVUludDggKgkJCWFkZHJQOwkJCQkJCSAKCVVJbnQxNgkJCWFkZHJMZW47CQkJCQkJ
IAoJTmV0SU9WZWNQdHIJCWlvdjsJCQkJCQkJIAoJVUludDE2CQkJaW92TGVuOwkJCQkJCSAKCVVJ
bnQ4ICoJCQlhY2Nlc3NSaWdodHM7CQkJCSAKCVVJbnQxNgkJCWFjY2Vzc1JpZ2h0c0xlbjsJCQkg
Cgl9IE5ldElPUGFyYW1UeXBlLCAqTmV0SU9QYXJhbVB0cjsKCQogCgoKCgoKCQkJCQkJCiAKIAog
CgogCgoKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgIHsKCUNoYXIgKgkJbmFtZVA7CQkJCQkJCQkg
CglDaGFyICoqCQluYW1lQWxpYXNlc1A7CQkJCQkJIAoJVUludDE2CQlhZGRyVHlwZTsJCQkJCQkJ
IAoJVUludDE2CQlhZGRyTGVuOwkJCQkJCQkJIAoJVUludDggKioJCWFkZHJMaXN0UDsJCQkJCQkJ
IAoJfSBOZXRIb3N0SW5mb1R5cGUsICpOZXRIb3N0SW5mb1B0cjsKCQoKIAp0eXBlZGVmIHN0cnVj
dCB7CglOZXRIb3N0SW5mb1R5cGUJaG9zdEluZm87CQkJCQkgCgoJIAoJIAoJQ2hhcgluYW1lWzI1
NSArMV07CQkJIAoKCUNoYXIgKmFsaWFzTGlzdFsxICsxXTsJCSAKCUNoYXIJYWxpYXNlc1sxIF1b
MjU1ICsxXTsKCglOZXRJUEFkZHIqCWFkZHJlc3NMaXN0WzQgXTsKCU5ldElQQWRkcglhZGRyZXNz
WzQgXTsKCgl9IE5ldEhvc3RJbmZvQnVmVHlwZSwgKk5ldEhvc3RJbmZvQnVmUHRyOwoJCgkKIAog
CiAKCiAKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQ2hhciAqCQluYW1lUDsJCQkJCQkJCSAK
CUNoYXIgKioJCW5hbWVBbGlhc2VzUDsJCQkJCQkgCglVSW50MTYJCXBvcnQ7CQkJCQkJCQkJIAoJ
Q2hhciAqCQlwcm90b1A7CQkJCQkJCQkgCgl9IE5ldFNlcnZJbmZvVHlwZSwgKk5ldFNlcnZJbmZv
UHRyOwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJTmV0U2VydkluZm9UeXBlCXNlcnZJbmZvOwkJCQkJ
IAoKCSAKCSAKCUNoYXIJCQluYW1lWzE1ICsxXTsJCQkJCSAKCglDaGFyICoJCWFsaWFzTGlzdFsx
ICsxXTsJCSAKCUNoYXIJCQlhbGlhc2VzWzEgXVsxNSBdOwoJQ2hhcgkJCXByb3RvTmFtZVsxNSAr
MV07CgoJVUludDgJCQlyZXNlcnZlZDsKCX0gTmV0U2VydkluZm9CdWZUeXBlLCAqTmV0U2Vydklu
Zm9CdWZQdHI7CgkKCgogCiAKIAogCgp0eXBlZGVmIHN0cnVjdCB7CglDaGFyCQkJbmFtZVszMiBd
OwkJCSAgIAoJfSBOZXRDb25maWdOYW1lVHlwZSwgKk5ldENvbmZpZ05hbWVQdHI7CgoKCiAKCgoK
CgoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCQkJIAoKCiAKCgoKIAoKCgoKCiNwcmFnbWEgbWFyayBNYXN0ZXIKdHlwZWRlZiBlbnVt
IHsKCSAKCW5ldE1hc3RlckludGVyZmFjZUluZm8sCgluZXRNYXN0ZXJJbnRlcmZhY2VTdGF0cywK
CW5ldE1hc3RlcklQU3RhdHMsCgluZXRNYXN0ZXJJQ01QU3RhdHMsCgluZXRNYXN0ZXJVRFBTdGF0
cywKCW5ldE1hc3RlclRDUFN0YXRzLAoJCgkgCgluZXRNYXN0ZXJUcmFjZUV2ZW50R2V0CQkJCQkg
CgoJfSBOZXRNYXN0ZXJFbnVtOwoJCgkKdHlwZWRlZiBzdHJ1Y3QgTmV0TWFzdGVyUEJUeXBlIHsK
CgkgCgl1bmlvbiB7CgkKCQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJ
CQkJCSAKCQkJVUludDMyCQljcmVhdG9yOwkJCQkJIAoJCQlVSW50MTYJCWluc3RhbmNlOwkJCQkg
CgkJCXZvaWQgKgkJbmV0SUZQOwkJCQkJIAoJCQkKCQkJIAoJCQlDaGFyCQkJZHJ2ck5hbWVbOCBd
OwkJIAoJCQlDaGFyCQkJaHdOYW1lWzE2IF07CQkJIAoJCQlVSW50OAkJCWxvY2FsTmV0SGRyTGVu
OwkJIAoJCQlVSW50OAkJCWxvY2FsTmV0VHJhaWxlckxlbjsJIAoJCQlVSW50MTYJCWxvY2FsTmV0
TWF4RnJhbWU7CQkgCgkJCQoJCQkgCgkJCUNoYXIJCQlpZk5hbWVbMTAgXTsgCgkJCUJvb2xlYW4J
CWRyaXZlclVwOwkJCQkgCgkJCUJvb2xlYW4JCWlmVXA7CQkJCQkJIAoJCQlVSW50MTYJCWh3QWRk
ckxlbjsJCQkJIAoJCQlVSW50OAkJCWh3QWRkclsxNCBdOwkJIAoJCQlVSW50MTYJCW10dTsJCQkJ
CQkgCgkJCVVJbnQzMgkJc3BlZWQ7CQkJCQkgCgkJCVVJbnQzMgkJbGFzdFN0YXRlQ2hhbmdlOwkJ
IAoJCQkKCQkJIAoJCQlOZXRJUEFkZHIJaXBBZGRyOwkJCQkJIAoJCQlOZXRJUEFkZHIJc3VibmV0
TWFzazsJCQkJIAoJCQlOZXRJUEFkZHIJYnJvYWRjYXN0OwkJCQkgCgkJCX0gaW50ZXJmYWNlSW5m
bzsKCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQxNgkJaW5kZXg7CQkJCQkgCgkJ
CVVJbnQzMgkJaW5PY3RldHM7CQkJCSAKCQkJVUludDMyCQlpblVjYXN0UGt0czsKCQkJVUludDMy
CQlpbk5VY2FzdFBrdHM7CgkJCVVJbnQzMgkJaW5EaXNjYXJkczsKCQkJVUludDMyCQlpbkVycm9y
czsKCQkJVUludDMyCQlpblVua25vd25Qcm90b3M7CgkJCVVJbnQzMgkJb3V0T2N0ZXRzOwoJCQlV
SW50MzIJCW91dFVjYXN0UGt0czsKCQkJVUludDMyCQlvdXROVWNhc3RQa3RzOwoJCQlVSW50MzIJ
CW91dERpc2NhcmRzOwoJCQlVSW50MzIJCW91dEVycm9yczsKCQkJfSBpbnRlcmZhY2VTdGF0czsK
CQkJCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJaXBJblJlY2VpdmVzOwkK
CQkJVUludDMyCQlpcEluSGRyRXJyb3JzOwoJCQlVSW50MzIJCWlwSW5BZGRyRXJyb3JzOwoJCQlV
SW50MzIJCWlwRm9yd0RhdGFncmFtczsKCQkJVUludDMyCQlpcEluVW5rbm93blByb3RvczsKCQkJ
VUludDMyCQlpcEluRGlzY2FyZHM7CgkJCVVJbnQzMgkJaXBJbkRlbGl2ZXJzOwoJCQlVSW50MzIJ
CWlwT3V0UmVxdWVzdHM7CgkJCVVJbnQzMgkJaXBPdXREaXNjYXJkczsKCQkJVUludDMyIAkJaXBP
dXROb1JvdXRlczsKCQkJVUludDMyIAkJaXBSZWFzbVJlcWRzOwoJCQlVSW50MzIgCQlpcFJlYXNt
T0tzOwoJCQlVSW50MzIgCQlpcFJlYXNtRmFpbHM7CgkJCVVJbnQzMgkJaXBGcmFnT0tzOwoJCQlV
SW50MzIgCQlpcEZyYWdGYWlsczsKCQkJVUludDMyIAkJaXBGcmFnQ3JlYXRlczsKCQkJVUludDMy
IAkJaXBSb3V0aW5nRGlzY2FyZHM7CgkJCVVJbnQzMiAJCWlwRGVmYXVsdFRUTDsgICAgICAgIAoJ
CQlVSW50MzIgCQlpcFJlYXNtVGltZW91dDsgICAgICAKCQkJfSBpcFN0YXRzOwoJCQkJCQkKCQkg
CgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDMyCQkJaWNtcEluTXNnczsKCQkJVUludDMyCQkJ
aWNtcEluRXJyb3JzOwoJCQlVSW50MzIJCQlpY21wSW5EZXN0VW5yZWFjaHM7CgkJCVVJbnQzMgkJ
CWljbXBJblRpbWVFeGNkczsKCQkJVUludDMyCQkJaWNtcEluUGFybVByb2JzOwoJCQlVSW50MzIJ
CQlpY21wSW5TcmNRdWVuY2hzOwoJCQlVSW50MzIJCQlpY21wSW5SZWRpcmVjdHM7CgkJCVVJbnQz
MgkJCWljbXBJbkVjaG9zOwoJCQlVSW50MzIJCQlpY21wSW5FY2hvUmVwczsKCQkJVUludDMyCQkJ
aWNtcEluVGltZXN0YW1wczsKCQkJVUludDMyCQkJaWNtcEluVGltZXN0YW1wUmVwczsKCQkJVUlu
dDMyCQkJaWNtcEluQWRkck1hc2tzOwoJCQlVSW50MzIJCQlpY21wSW5BZGRyTWFza1JlcHM7CgkJ
CVVJbnQzMgkJCWljbXBPdXRNc2dzOwoJCQlVSW50MzIJCQlpY21wT3V0RXJyb3JzOwoJCQlVSW50
MzIJCQlpY21wT3V0RGVzdFVucmVhY2hzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZUV4Y2RzOwoJ
CQlVSW50MzIJCQlpY21wT3V0UGFybVByb2JzOwoJCQlVSW50MzIJCQlpY21wT3V0U3JjUXVlbmNo
czsKCQkJVUludDMyCQkJaWNtcE91dFJlZGlyZWN0czsKCQkJVUludDMyCQkJaWNtcE91dEVjaG9z
OwoJCQlVSW50MzIJCQlpY21wT3V0RWNob1JlcHM7CgkJCVVJbnQzMgkJCWljbXBPdXRUaW1lc3Rh
bXBzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZXN0YW1wUmVwczsKCQkJVUludDMyCQkJaWNtcE91
dEFkZHJNYXNrczsKCQkJVUludDMyCQkJaWNtcE91dEFkZHJNYXNrUmVwczsKCQkJfSBpY21wU3Rh
dHM7CgkJCQkJCQoJCSAKCQkgCgkJIAoJCXN0cnVjdCAgewoJCQlVSW50MzIJCQl1ZHBJbkRhdGFn
cmFtczsKCQkJVUludDMyCQkJdWRwTm9Qb3J0czsKCQkJVUludDMyCQkJdWRwSW5FcnJvcnM7CgkJ
CVVJbnQzMgkJCXVkcE91dERhdGFncmFtczsKCQkJfSB1ZHBTdGF0czsKCQkJCQkJCgkJIAoJCSAK
CQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJCXRjcFJ0b0FsZ29yaXRobTsKCQkJVUludDMyCQkJ
dGNwUnRvTWluOwoJCQlVSW50MzIJCQl0Y3BSdG9NYXg7CgkJCVVJbnQzMgkJCXRjcE1heENvbm47
CgkJCVVJbnQzMgkJCXRjcEFjdGl2ZU9wZW5zOwoJCQlVSW50MzIJCQl0Y3BQYXNzaXZlT3BlbnM7
CgkJCVVJbnQzMgkJCXRjcEF0dGVtcHRGYWlsczsKCQkJVUludDMyCQkJdGNwRXN0YWJSZXNldHM7
CgkJCVVJbnQzMgkJCXRjcEN1cnJFc3RhYjsKCQkJVUludDMyCQkJdGNwSW5TZWdzOwoJCQlVSW50
MzIJCQl0Y3BPdXRTZWdzOwoJCQlVSW50MzIJCQl0Y3BSZXRyYW5zU2VnczsKCQkJVUludDMyCQkJ
dGNwSW5FcnJzOwoJCQlVSW50MzIJCQl0Y3BPdXRSc3RzOwoJCQl9IHRjcFN0YXRzOwoJCQkJCQkK
CQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJCQkJIAoJCQlDaGFyICoJ
CXRleHRQOwkJCQkgCgkJCX0gdHJhY2VFdmVudEdldDsKCQkJCgkJfSBwYXJhbTsKCgl9IE5ldE1h
c3RlclBCVHlwZSwgKk5ldE1hc3RlclBCUHRyOwoJCgkKCgkKCQogCiAKIAojcHJhZ21hIG1hcmsg
U2V0dGluZ3MKIAogCiAKIAp0eXBlZGVmIGVudW0gewkKCW5ldFNldHRpbmdSZXNldEFsbCwJCQkJ
CQkgCgkJCQkJCQkJCQkJCQkgCgoJbmV0U2V0dGluZ1ByaW1hcnlETlMsCQkJCQkgCgluZXRTZXR0
aW5nU2Vjb25kYXJ5RE5TLAkJCQkJIAoJbmV0U2V0dGluZ0RlZmF1bHRSb3V0ZXIsCQkJCSAKCW5l
dFNldHRpbmdEZWZhdWx0SUZDcmVhdG9yLAkJCSAKCW5ldFNldHRpbmdEZWZhdWx0SUZJbnN0YW5j
ZSwJCQkgCgluZXRTZXR0aW5nSG9zdE5hbWUsCQkJCQkJIAoJbmV0U2V0dGluZ0RvbWFpbk5hbWUs
CQkJCQkgCgluZXRTZXR0aW5nSG9zdFRibCwJCQkJCQkgCgluZXRTZXR0aW5nQ2xvc2VXYWl0VGlt
ZSwJCQkJIAoJbmV0U2V0dGluZ0luaXRpYWxUQ1BSZXNlbmRUaW1lLAkJIAoJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCgkKCSAKCSAK
CW5ldFNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAsCQkJIAoJbmV0U2V0dGluZ1RyYWNlU2l6ZSwJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRTZXR0aW5nVHJhY2VTdGFydCwJCQkJCSAKCW5ldFNl
dHRpbmdUcmFjZVJvbGwsCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgluZXRT
ZXR0aW5nUlRQcmltYXJ5RE5TLAkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0U2V0dGluZ1JUU2Vj
b25kYXJ5RE5TLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkKCW5ldFNldHRpbmdD
b25maWdUYWJsZQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoKCX0gTmV0U2V0dGluZ0VudW07CgoKIAog
CiAKdHlwZWRlZiBlbnVtIHsKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jlc2V0QWxsLAkJCQkJIAoJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdVcCwJCQkJ
CQkJIAoJbmV0SUZTZXR0aW5nTmFtZSwJCQkJCQkJIAoKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jl
cUlQQWRkciwJCQkJCSAKCW5ldElGU2V0dGluZ1N1Ym5ldE1hc2ssCQkJCQkgCgluZXRJRlNldHRp
bmdCcm9hZGNhc3QsCQkJCQkgCgoJIAoJIAoJIAoJbmV0SUZTZXR0aW5nVXNlcm5hbWUsCQkJCQkg
CgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRpbmdQYXNzd29yZCwJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCW5ldElGU2V0dGluZ0RpYWxiYWNrVXNlcm5hbWUsCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0
SUZTZXR0aW5nRGlhbGJhY2tQYXNzd29yZCwJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRp
bmdBdXRoVXNlcm5hbWUsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0F1dGhQYXNz
d29yZCwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJIAoJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdTZXJ2aWNlTmFtZSwJCQkJIAoJ
bmV0SUZTZXR0aW5nTG9naW5TY3JpcHQsCQkJCSAKCW5ldElGU2V0dGluZ0Nvbm5lY3RMb2csCQkJ
CQkgCgluZXRJRlNldHRpbmdJbmFjdGl2aXR5VGltZW91dCwJCSAKCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0VzdGFibGlzaG1lbnRUaW1lb3V0LAkgCgkJCQkJCQkJ
CQkJCQkgCgkKCSAKCW5ldElGU2V0dGluZ0R5bmFtaWNJUCwJCQkJCSAKCQkJCQkJCQkJCQkJCSAK
CW5ldElGU2V0dGluZ1ZKQ29tcEVuYWJsZSwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0
aW5nVkpDb21wU2xvdHMsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElG
U2V0dGluZ01UVSwJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0aW5nQXN5bmNDdGxN
YXAsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCgkgCgluZXRJRlNldHRpbmdQb3J0TnVtLAkJCQkJCSAK
CW5ldElGU2V0dGluZ0JhdWRSYXRlLAkJCQkJIAoJbmV0SUZTZXR0aW5nRmxvd0NvbnRyb2wsCQkJ
CSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ1N0b3BCaXRzLAkJCQkJIAoJbmV0SUZTZXR0
aW5nUGFyaXR5T24sCQkJCQkgCgluZXRJRlNldHRpbmdQYXJpdHlFdmVuLAkJCQkJIAoKCSAKCW5l
dElGU2V0dGluZ1VzZU1vZGVtLAkJCQkJIAoJbmV0SUZTZXR0aW5nUHVsc2VEaWFsLAkJCQkJIAoJ
bmV0SUZTZXR0aW5nTW9kZW1Jbml0LAkJCQkJIAoJbmV0SUZTZXR0aW5nTW9kZW1QaG9uZSwJCQkJ
CSAKCW5ldElGU2V0dGluZ1JlZGlhbENvdW50LAkJCQkgCgkKCgkgCgkgCgkgCgkgCgluZXRJRlNl
dHRpbmdQb3dlclVwLAkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdXaXJlbGVzcywJCQkJ
CSAKCQoKCgkgCgluZXRJRlNldHRpbmdETlNRdWVyeSwJCQkJCSAKCgoJIAoJIAoJIAoJIAoJCQkJ
CQkJCQkJCQkKCW5ldElGU2V0dGluZ1F1aXRPblR4RmFpbCwJCQkJIAoJbmV0SUZTZXR0aW5nUXVl
dWVTaXplLAkJCQkJIAoJbmV0SUZTZXR0aW5nVHhJblF1ZXVlLAkJCQkJIAoJbmV0SUZTZXR0aW5n
VHhTZW50LAkJCQkJCSAKCW5ldElGU2V0dGluZ1R4RGlzY2FyZCwJCQkJCSAKCW5ldElGU2V0dGlu
Z1Jzc2ksCQkJCQkJCSAKCW5ldElGU2V0dGluZ1Jzc2lBc1BlcmNlbnQsCQkJCSAKCW5ldElGU2V0
dGluZ1JhZGlvU3RhdGUsCQkJCQkgCgluZXRJRlNldHRpbmdCYXNlLAkJCQkJCQkgCgluZXRJRlNl
dHRpbmdSYWRpb0lELAkJCQkJCSAKCW5ldElGU2V0dGluZ0JhdHRlcnksCQkJCQkJIAoJbmV0SUZT
ZXR0aW5nTmV0d29ya0xvYWQsCQkJCSAKCgkgCgkgCgkgCgoJbmV0SUZTZXR0aW5nQ29ubmVjdGlv
bk5hbWUsCQkJIAoKCgkgCgkgCgkgCgkgCgluZXRJRlNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAs
CQkgCgluZXRJRlNldHRpbmdHbG9iYWxzUHRyLAkJCQkJIAoJbmV0SUZTZXR0aW5nQWN0dWFsSVBB
ZGRyLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCglu
ZXRJRlNldHRpbmdTZXJ2ZXJJUEFkZHIsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQoJCgkgCgkgCglu
ZXRJRlNldHRpbmdCcmluZ0Rvd25PblBvd2VyRG93biwJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdSYXdNb2RlLAkJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCgkgCgkgCgkgCgluZXRJRlNldHRpbmdDdXN0b20gPSAweDgwMDAKCQoJfSBOZXRJRlNldHRp
bmdFbnVtOwoKCgogCiAKIAogCiAKIAp0eXBlZGVmIGVudW0JewoJbmV0UmFkaW9TdGF0ZU9mZk5v
dENvbm5lY3RlZD0wLAoJbmV0UmFkaW9TdGF0ZU9uTm90Q29ubmVjdGVkLAkJCSAKCW5ldFJhZGlv
U3RhdGVPbkNvbm5lY3RlZCwJCQkJIAoJbmV0UmFkaW9TdGF0ZU9mZkNvbm5lY3RlZAoJfSBOZXRS
YWRpb1N0YXRlRW51bTsgCgoKCiAKCgogCgoKCiAKdHlwZWRlZiBVSW50MzIJCQkJCU5ldEZEU2V0
VHlwZTsKCgoKCgoKCgoKIAogCiAKI3ByYWdtYSBtYXJrIEVycm9yQ29kZXMKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAojcHJhZ21hIG1h
cmsgVHJhcHMKdHlwZWRlZiBlbnVtIHsKCW5ldExpYlRyYXBBZGRySU5Ub0EgPSBzeXNMaWJUcmFw
Q3VzdG9tLAoJbmV0TGliVHJhcEFkZHJBVG9JTiwKCQoJbmV0TGliVHJhcFNvY2tldE9wZW4sCglu
ZXRMaWJUcmFwU29ja2V0Q2xvc2UsCgluZXRMaWJUcmFwU29ja2V0T3B0aW9uU2V0LAoJbmV0TGli
VHJhcFNvY2tldE9wdGlvbkdldCwKCW5ldExpYlRyYXBTb2NrZXRCaW5kLAoJbmV0TGliVHJhcFNv
Y2tldENvbm5lY3QsCgluZXRMaWJUcmFwU29ja2V0TGlzdGVuLAoJbmV0TGliVHJhcFNvY2tldEFj
Y2VwdCwKCW5ldExpYlRyYXBTb2NrZXRTaHV0ZG93biwKCQoJbmV0TGliVHJhcFNlbmRQQiwKCW5l
dExpYlRyYXBTZW5kLAoJbmV0TGliVHJhcFJlY2VpdmVQQiwKCW5ldExpYlRyYXBSZWNlaXZlLAoJ
bmV0TGliVHJhcERtUmVjZWl2ZSwKCW5ldExpYlRyYXBTZWxlY3QsCgoJbmV0TGliVHJhcFByZWZz
R2V0LAoJbmV0TGliVHJhcFByZWZzU2V0LAoKCSAKCSAKCW5ldExpYlRyYXBEcnZyV2FrZSwKCW5l
dExpYlRyYXBJbnRlcmZhY2VQdHIsCgluZXRMaWJUcmFwTWFzdGVyLAoJCgkgCgluZXRMaWJUcmFw
R2V0SG9zdEJ5TmFtZSwKCW5ldExpYlRyYXBTZXR0aW5nR2V0LAoJbmV0TGliVHJhcFNldHRpbmdT
ZXQsCgluZXRMaWJUcmFwSUZBdHRhY2gsCgluZXRMaWJUcmFwSUZEZXRhY2gsCgluZXRMaWJUcmFw
SUZHZXQsCgluZXRMaWJUcmFwSUZTZXR0aW5nR2V0LAoJbmV0TGliVHJhcElGU2V0dGluZ1NldCwK
CW5ldExpYlRyYXBJRlVwLAoJbmV0TGliVHJhcElGRG93biwKCW5ldExpYlRyYXBJRk1lZGlhVXAs
CgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZVYzMiwKCW5ldExpYlRyYXBHZXRIb3N0QnlBZGRyLAoJ
bmV0TGliVHJhcEdldFNlcnZCeU5hbWUsCgluZXRMaWJUcmFwU29ja2V0QWRkciwKCW5ldExpYlRy
YXBGaW5pc2hDbG9zZVdhaXQsCgluZXRMaWJUcmFwR2V0TWFpbEV4Y2hhbmdlQnlOYW1lLAoJbmV0
TGliVHJhcFByZWZzQXBwZW5kLAoJbmV0TGliVHJhcElGTWVkaWFEb3duLAoJbmV0TGliVHJhcE9w
ZW5Db3VudCwKCQoJbmV0TGliVHJhcFRyYWNlUHJpbnRGLAoJbmV0TGliVHJhcFRyYWNlUHV0UywK
CQoJbmV0TGliVHJhcE9wZW5JZkNsb3NlV2FpdCwKCW5ldExpYlRyYXBIYW5kbGVQb3dlck9mZiwK
CQoJbmV0TGliVHJhcENvbm5lY3Rpb25SZWZyZXNoLAoJCgkgCgluZXRMaWJUcmFwQml0TW92ZSwK
CW5ldExpYlRyYXBCaXRQdXRGaXhlZCwKCW5ldExpYlRyYXBCaXRHZXRGaXhlZCwKCW5ldExpYlRy
YXBCaXRQdXRVSW50ViwKCW5ldExpYlRyYXBCaXRHZXRVSW50ViwKCW5ldExpYlRyYXBCaXRQdXRJ
bnRWLAoJbmV0TGliVHJhcEJpdEdldEludFYsCgkKCSAKCW5ldExpYk9wZW5Db25maWcsCgluZXRM
aWJDb25maWdNYWtlQWN0aXZlLAoJbmV0TGliQ29uZmlnTGlzdCwKCW5ldExpYkNvbmZpZ0luZGV4
RnJvbU5hbWUsCgluZXRMaWJDb25maWdEZWxldGUsCgluZXRMaWJDb25maWdTYXZlQXMsCgluZXRM
aWJDb25maWdSZW5hbWUsCgluZXRMaWJDb25maWdBbGlhc1NldCwKCW5ldExpYkNvbmZpZ0FsaWFz
R2V0LAoJCgkgCgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZSwKCQoJbmV0TGliVHJhcExhc3QKCX0g
TmV0TGliVHJhcE51bWJlckVudW07CgoKCiAKCiAKI3ByYWdtYSBtYXJrIEZ1bmN0aW9ucwojIDE1
MDkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgi
CgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05l
dEJpdFV0aWxzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMzUgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0Qml0VXRpbHMuaCIKCiMgMTUxMyAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9OZXRNZ3IuaCIgMgoK
CgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJp
dFV0aWxzLmgiIDIKCgogCgoKCiAKIAoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAoKCQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiMgMTMyICIuLi9TcmNTaGFy
ZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJpdFV0aWxzLmgiCgoKCgojIDkz
ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQoJCQogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1Bh
bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9PdmVybGF5TWdyLmgiIDEKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCiAKCgogCgoK
IAoKCiAKCgogCiAKCgoKIAogCgoKCiAKCgoKCgogCgoKCgoKCgkKCgoKIAogCnR5cGVkZWYgZW51
bSB7CglvbUluaXQgPSAwLAoJb21PcGVuT3ZlcmxheURhdGFiYXNlLAoJb21Mb2NhbGVUb092ZXJs
YXlEQk5hbWUsCglvbU92ZXJsYXlEQk5hbWVUb0xvY2FsZSwKCW9tR2V0Q3VycmVudExvY2FsZSwK
CW9tR2V0SW5kZXhlZExvY2FsZSwKCW9tR2V0U3lzdGVtTG9jYWxlLAoJb21TZXRTeXN0ZW1Mb2Nh
bGUsCglvbUdldFJvdXRpbmVBZGRyZXNzLAoJCglvbU1heFNlbGVjdG9yID0gb21HZXRSb3V0aW5l
QWRkcmVzcywKCW9tQmlnU2VsZWN0b3IgPSAweDdGRkYJIAp9IE9tU2VsZWN0b3I7CgogCgoKCnR5
cGVkZWYgVUludDE2IE9tT3ZlcmxheUtpbmQ7CgoKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglP
bU92ZXJsYXlLaW5kCW92ZXJsYXlUeXBlOwkJIAoJVUludDMyCQkJcnNjVHlwZTsJCQkJIAoJVUlu
dDE2CQkJcnNjSUQ7CQkJCSAKCVVJbnQzMgkJCXJzY0xlbmd0aDsJCQkgCglVSW50MzIJCQlyc2ND
aGVja3N1bTsJCSAKfSBPbU92ZXJsYXlSc2NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2
CQkJbGFuZ3VhZ2U7CQkJIAoJVUludDE2CQkJY291bnRyeTsJCQkJIAp9IE9tTG9jYWxlVHlwZTsK
CiAKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCXZlcnNpb247CQkJCSAKCVVJbnQzMgkJCQlm
bGFnczsJCQkJIAoJVUludDMyCQkJCWJhc2VDaGVja3N1bTsJCSAKCU9tTG9jYWxlVHlwZQkJdGFy
Z2V0TG9jYWxlOwkJIAoJVUludDMyCQkJCWJhc2VEQlR5cGU7CQkJIAoJVUludDMyCQkJCWJhc2VE
QkNyZWF0b3I7CQkgCglVSW50MzIJCQkJYmFzZURCQ3JlYXRlRGF0ZTsgIAoJVUludDMyCQkJCWJh
c2VEQk1vZERhdGU7CQkgCglVSW50MTYJCQkJbnVtT3ZlcmxheXM7CQkgCglPbU92ZXJsYXlSc2NU
eXBlCW92ZXJsYXlzWzBdOwkJIAp9IE9tT3ZlcmxheVNwZWNUeXBlOwoKCiAKCgoKIyAyMTIgIi4u
L1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vT3ZlcmxheU1nci5oIgoK
CgojIDk3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIiAxCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgkKCgoKCgog
CgoKCiAKCgoKCgoKCgogCiAKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKIAogCgogCgog
CgogCgogCgoKIAogCgogCgogCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAK
CgoKCiAKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAK
CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCiAKIAoKIAoKCgojIDEyNTYgIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIgoKCgojIDk4ICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1N5c3RlbS9QZW5NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog
CgoKCgoKCgoKIAoKCiMgODcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9T
eXN0ZW0vUGVuTWdyLmgiCgoKCQogCgoKCgoKCgoKIyAxMDAgIi4uL1NyY1NoYXJlZC9QYWxtLmgi
IDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Q
cmVmZXJlbmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9TeXN0ZW1NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt
L1N5c3RlbVJlc291cmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgkJCQkJCQkJCQkJCSAKCgoKCgoKCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJ
IAoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkgCgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKIAogCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKIAoK
CgogCgoKCQkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCgoKCiAKCgoKIAogCiAKIAogCiAKCiAKCiAK
CgoKCgoKCgoKIyAzOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl
bS9TeXN0ZW1NZ3IuaCIgMgoKCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1VJL0luc1BvaW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyA1
OCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0luc1BvaW50LmgiCgoK
CiMgNDUgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVt
TWdyLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0V2
ZW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSB7Cglu
aWxFdmVudCA9IDAsCQkJCSAKCXBlbkRvd25FdmVudCwJCQkJIAoJcGVuVXBFdmVudCwJCQkJCSAK
CXBlbk1vdmVFdmVudCwJCQkJIAoJa2V5RG93bkV2ZW50LAkJCQkgCgl3aW5FbnRlckV2ZW50LAkJ
CQkgCgl3aW5FeGl0RXZlbnQsCQkJCSAKCWN0bEVudGVyRXZlbnQsCgljdGxFeGl0RXZlbnQsCglj
dGxTZWxlY3RFdmVudCwKCWN0bFJlcGVhdEV2ZW50LAoJbHN0RW50ZXJFdmVudCwKCWxzdFNlbGVj
dEV2ZW50LAoJbHN0RXhpdEV2ZW50LAoJcG9wU2VsZWN0RXZlbnQsCglmbGRFbnRlckV2ZW50LAoJ
ZmxkSGVpZ2h0Q2hhbmdlZEV2ZW50LAoJZmxkQ2hhbmdlZEV2ZW50LAoJdGJsRW50ZXJFdmVudCwK
CXRibFNlbGVjdEV2ZW50LAoJZGF5U2VsZWN0RXZlbnQsCgltZW51RXZlbnQsCglhcHBTdG9wRXZl
bnQgPSAyMiwJCQkgCglmcm1Mb2FkRXZlbnQsCglmcm1PcGVuRXZlbnQsCglmcm1Hb3RvRXZlbnQs
Cglmcm1VcGRhdGVFdmVudCwKCWZybVNhdmVFdmVudCwKCWZybUNsb3NlRXZlbnQsCglmcm1UaXRs
ZUVudGVyRXZlbnQsCglmcm1UaXRsZVNlbGVjdEV2ZW50LAoJdGJsRXhpdEV2ZW50LAoJc2NsRW50
ZXJFdmVudCwKCXNjbEV4aXRFdmVudCwKCXNjbFJlcGVhdEV2ZW50LAoJdHNtQ29uZmlybUV2ZW50
ID0gMzUsCQkgCgl0c21GZXBCdXR0b25FdmVudCwJCQkgCgl0c21GZXBNb2RlRXZlbnQsCQkJCSAK
IAoJYXR0bkluZGljYXRvckVudGVyRXZlbnQsCSAKCWF0dG5JbmRpY2F0b3JTZWxlY3RFdmVudCwJ
IAoJCgkgCgkgCgltZW51Q21kQmFyT3BlbkV2ZW50ID0gMHgwODAwLAoJbWVudU9wZW5FdmVudCwK
CW1lbnVDbG9zZUV2ZW50LAoJZnJtR2FkZ2V0RW50ZXJFdmVudCwKCWZybUdhZGdldE1pc2NFdmVu
dCwKCgkgCglmaXJzdElOZXRMaWJFdmVudCA9IDB4MTAwMCwKCWZpcnN0V2ViTGliRXZlbnQgPSAw
eDExMDAsCgkKCSAKCSAKCWZpcnN0VXNlckV2ZW50ID0gMHg2MDAwCn0gZXZlbnRzRW51bTsKCgog
CnR5cGVkZWYgc3RydWN0IEV2ZW50VHlwZSB7CiAKICAgSW50MTYJCWVUeXBlOwogICBCb29sZWFu
ICAgICAgICBwZW5Eb3duOwogICBVSW50OCAgICAgICAgICB0YXBDb3VudDsKICAgSW50MTYgICAg
ICAgICAgc2NyZWVuWDsKICAgSW50MTYgICAgICAgICAgc2NyZWVuWTsKICAgdW5pb24gewogICAg
ICBzdHJ1Y3QgX0dlbmVyaWNFdmVudFR5cGUJCWdlbmVyaWM7CiAgICAgIHN0cnVjdCBfUGVuVXBF
dmVudFR5cGUgICAgICAgIHBlblVwOwogICAgICBzdHJ1Y3QgX0tleURvd25FdmVudFR5cGUgICAg
ICBrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlICAgICB3aW5FbnRlcjsK
ICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlICAgICAgd2luRXhpdDsKICAgICAgc3RydWN0
IF9UU01Db25maXJtVHlwZQkJCXRzbUNvbmZpcm07CiAgICAgIHN0cnVjdCBfVFNNRmVwQnV0dG9u
VHlwZQkJdHNtRmVwQnV0dG9uOwogICAgICBzdHJ1Y3QgX1RTTUZlcE1vZGVFdmVudFR5cGUJdHNt
RmVwTW9kZTsKCiAgICAgIHN0cnVjdCBjdGxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg
ICAgIGNvbnRyb2xJRDsKICAgICAgICAgc3RydWN0IENvbnRyb2xUeXBlICpwQ29udHJvbDsKICAg
ICAgICAgfSBjdGxFbnRlcjsKCiAgICAgIHN0cnVjdCBjdGxTZWxlY3QgewogICAgICAgICBVSW50
MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqcENv
bnRyb2w7CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIG9uOwogICAgICAgICBVSW50OCAgICAg
ICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIFVJbnQxNgkJCQl2YWx1ZTsJCSAKICAgICAgICAg
fSBjdGxTZWxlY3Q7CgogICAgICBzdHJ1Y3QgY3RsUmVwZWF0IHsKICAgICAgICAgVUludDE2ICAg
ICAgICAgICAgY29udHJvbElEOwogICAgICAgICBzdHJ1Y3QgQ29udHJvbFR5cGUgKnBDb250cm9s
OwogICAgICAgICBVSW50MzIgICAgICAgICAgICB0aW1lOwogICAgICAgICBVSW50MTYJCQkJdmFs
dWU7CQkgCiAgICAgICAgIH0gY3RsUmVwZWF0OwoKICAgICAgc3RydWN0IGN0bEV4aXQgewogICAg
ICAgICBVSW50MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9s
VHlwZSAqcENvbnRyb2w7CiAgICAgICAgIH0gY3RsRXhpdDsKCiAgICAgIHN0cnVjdCBmbGRFbnRl
ciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBG
aWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIH0gZmxkRW50ZXI7CgogICAgICBzdHJ1Y3QgZmxk
SGVpZ2h0Q2hhbmdlZCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAg
ICAgIHN0cnVjdCBGaWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIEludDE2ICAgICAgICAgICAg
IG5ld0hlaWdodDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgY3VycmVudFBvczsKICAgICAg
ICAgfSBmbGRIZWlnaHRDaGFuZ2VkOwoKICAgICAgc3RydWN0IGZsZENoYW5nZWQgewogICAgICAg
ICBVSW50MTYgICAgICAgICAgICBmaWVsZElEOwogICAgICAgICBzdHJ1Y3QgRmllbGRUeXBlIAkq
cEZpZWxkOwogICAgICAgICB9IGZsZENoYW5nZWQ7CgogICAgICBzdHJ1Y3QgZmxkRXhpdCB7CiAg
ICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBGaWVsZFR5
cGUJKnBGaWVsZDsKICAgICAgICAgfSBmbGRFeGl0OwoKICAgICAgc3RydWN0IGxzdEVudGVyIHsK
ICAgICAgICAgVUludDE2ICAgICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5
cGUgCSpwTGlzdDsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAg
ICB9IGxzdEVudGVyOwoKICAgICAgc3RydWN0IGxzdEV4aXQgewogICAgICAgICBVSW50MTYgICAg
ICAgICAgICBsaXN0SUQ7CiAgICAgICAgIHN0cnVjdCBMaXN0VHlwZSAJKnBMaXN0OwogICAgICAg
ICB9IGxzdEV4aXQ7CgogICAgICBzdHJ1Y3QgbHN0U2VsZWN0IHsKICAgICAgICAgVUludDE2ICAg
ICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5cGUgCSpwTGlzdDsKICAgICAg
ICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAgICB9IGxzdFNlbGVjdDsKCiAg
ICAgIHN0cnVjdCB0YmxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHRhYmxlSUQ7
CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUJKnBUYWJsZTsKICAgICAgICAgSW50MTYgICAgICAg
ICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAgICAgICAgICBjb2x1bW47CiAgICAgICAgIH0g
dGJsRW50ZXI7CgogICAgICBzdHJ1Y3QgdGJsRXhpdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg
ICAgIHRhYmxlSUQ7CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUgCSpwVGFibGU7CiAgICAgICAg
IEludDE2ICAgICAgICAgICAgIHJvdzsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgY29sdW1u
OwogICAgICAgICB9IHRibEV4aXQ7CgogICAgICBzdHJ1Y3QgdGJsU2VsZWN0IHsKICAgICAgICAg
VUludDE2ICAgICAgICAgICAgdGFibGVJRDsKICAgICAgICAgc3RydWN0IFRhYmxlVHlwZSAJKnBU
YWJsZTsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAg
ICAgICAgICBjb2x1bW47CiAgICAgICAgIH0gdGJsU2VsZWN0OwoKICAgICAgc3RydWN0IGZybUxv
YWQgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIH0gZnJtTG9h
ZDsKCiAgICAgIHN0cnVjdCBmcm1PcGVuIHsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgZm9y
bUlEOwogICAgICAgICB9IGZybU9wZW47CgogICAgICBzdHJ1Y3QgZnJtR290byB7CiAgICAgICAg
IFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgcmVj
b3JkTnVtOyAgICAgICAgIAogICAgICAgICBVSW50MTYgICAgICAgICAgICBtYXRjaFBvczsgICAg
ICAgICAgCiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIG1hdGNoTGVuOyAgICAgICAgICAKICAg
ICAgICAgVUludDE2ICAgICAgICAgICAgbWF0Y2hGaWVsZE51bTsgICAgIAogICAgICAgICBVSW50
MzIgICAgICAgICAgICBtYXRjaEN1c3RvbTsgICAgICAgCiAgICAgICAgIH0gZnJtR290bzsKCiAg
ICAgIHN0cnVjdCBmcm1DbG9zZSB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsK
ICAgICAgICAgfSBmcm1DbG9zZTsKCiAgICAgIHN0cnVjdCBmcm1VcGRhdGUgewogICAgICAgICBV
SW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHVwZGF0
ZUNvZGU7ICAgICAgICAKICAgICAgICAgfSBmcm1VcGRhdGU7CgogICAgICBzdHJ1Y3QgZnJtVGl0
bGVFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgfSBm
cm1UaXRsZUVudGVyOwoKICAgICAgc3RydWN0IGZybVRpdGxlU2VsZWN0IHsKICAgICAgICAgVUlu
dDE2ICAgICAgICAgICAgZm9ybUlEOwogICAgICAgICB9IGZybVRpdGxlU2VsZWN0OwoKICAgICAg
IHN0cnVjdCBhdHRuSW5kaWNhdG9yRW50ZXIgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBm
b3JtSUQ7CiAgICAgIAl9IGF0dG5JbmRpY2F0b3JFbnRlcjsKCiAgICAgc3RydWN0IGF0dG5JbmRp
Y2F0b3JTZWxlY3QgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgIAl9
IGF0dG5JbmRpY2F0b3JTZWxlY3Q7CgogICAgICBzdHJ1Y3QgZGF5U2VsZWN0IHsKICAgICAgICAg
c3RydWN0IERheVNlbGVjdG9yVHlwZSAqcFNlbGVjdG9yOwogICAgICAgICBJbnQxNiAgICAgICAg
ICAgICBzZWxlY3Rpb247CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIHVzZVRoaXNEYXRlOwog
ICAgICAgICBVSW50OCAgICAgICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIH0gZGF5U2VsZWN0
OwoKICAgICAgc3RydWN0IG1lbnUgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBpdGVtSUQ7
CiAgICAgICAgIH0gbWVudTsKCiAgICAgIHN0cnVjdCBwb3BTZWxlY3QgewogICAgICAgICBVSW50
MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqY29u
dHJvbFA7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGxpc3RJRDsKICAgICAgICAgc3RydWN0
IExpc3RUeXBlIAkqbGlzdFA7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHNlbGVjdGlvbjsK
ICAgICAgICAgSW50MTYgICAgICAgICAgICAgcHJpb3JTZWxlY3Rpb247CiAgICAgICAgIH0gcG9w
U2VsZWN0OwoKICAgICAgc3RydWN0IHNjbEVudGVyIHsKICAgICAgICAgVUludDE2ICAgICAgICAg
ICAgc2Nyb2xsQmFySUQ7CiAgICAgICAgIHN0cnVjdCBTY3JvbGxCYXJUeXBlICpwU2Nyb2xsQmFy
OwogICAgICAgICB9IHNjbEVudGVyOwoKICAgICAgc3RydWN0IHNjbEV4aXQgewogICAgICAgICBV
SW50MTYgICAgICAgICAgICBzY3JvbGxCYXJJRDsKICAgICAgICAgc3RydWN0IFNjcm9sbEJhclR5
cGUgKnBTY3JvbGxCYXI7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHZhbHVlOwogICAgICAg
ICBJbnQxNiAgICAgICAgICAgICBuZXdWYWx1ZTsKICAgICAgICAgfSBzY2xFeGl0OwoKICAgICAg
c3RydWN0IHNjbFJlcGVhdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHNjcm9sbEJhcklE
OwogICAgICAgICBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSAqcFNjcm9sbEJhcjsKICAgICAgICAgSW50
MTYgICAgICAgICAgICAgdmFsdWU7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIG5ld1ZhbHVl
OwogICAgICAgICBJbnQzMiAgICAgICAgICAgICB0aW1lOwogICAgICAgICB9IHNjbFJlcGVhdDsK
CgkJc3RydWN0IG1lbnVDbWRCYXJPcGVuIHsKCQkJQm9vbGVhbiBwcmV2ZW50RmllbGRCdXR0b25z
OyAgIAoJCQlVSW50OCAgIHJlc2VydmVkOwkJCQkJIAoJCQl9IG1lbnVDbWRCYXJPcGVuOwoJCQoJ
CXN0cnVjdCBtZW51T3BlbiB7CgkJCVVJbnQxNgkJCQltZW51UnNjSUQ7CgkJCSAKCQkJSW50MTYJ
CQkJCWNhdXNlOwoJCQl9IG1lbnVPcGVuOwoJCQoJCXN0cnVjdCBnYWRnZXRFbnRlciB7CiAgICAg
ICAgIFVJbnQxNiAgICAgICAgICAgIGdhZGdldElEOwkJCSAKICAgICAgICAgc3RydWN0IEZvcm1H
YWRnZXRUeXBlICoJZ2FkZ2V0UDsJCSAKCQkJfSBnYWRnZXRFbnRlcjsKCQkJCgkJc3RydWN0IGdh
ZGdldE1pc2MgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBnYWRnZXRJRDsJCQkgCiAgICAg
ICAgIHN0cnVjdCBGb3JtR2FkZ2V0VHlwZSAqCWdhZGdldFA7CQkgCiAgICAgICAgIFVJbnQxNgkJ
CQlzZWxlY3RvcjsKICAgICAgICAgdm9pZCAqCQkJCWRhdGFQOwoJCQl9IGdhZGdldE1pc2M7CgkJ
CQogICAgICB9IGRhdGE7Cgp9IEV2ZW50VHlwZTsKCnR5cGVkZWYgRXZlbnRUeXBlICpFdmVudFB0
cjsKCiAKIAogCiAKIAoKCiMgMzQ0ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0Nv
cmUvVUkvRXZlbnQuaCIKCgoKCiMgNDYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9TeXN0ZW0vU3lzdGVtTWdyLmgiIDIKCgoKCgogCgoKCiAKIAogCiAKIAoKIAogCiAKCgoK
CgoKCgkKCSAKCgoKCgkKCQogCgoKCgogCiAKIAogCiAKIAogCiAKIAogCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAK
CgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJCQogCiAKIAoK
CgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgoK
CgoKCgoKCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJ
IAoKCgoKIAogCgogCgogCgoKCgoKCgoKCgoKCiAKIAoKIAoKIAoKIAogCgogCiAKCgoKCiAKIAog
CiAKCgoKCgogCiAKIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkKCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoK
CgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJ
CQkKIAoKIAogCiAKCgogCiAKIAogCiAKIAogCiAKCgoKIAogCiAKCgoJCQkJCQkJCQkJCQkJCQkg
CgoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCiAKIAogCiAKIAoK
IAp0eXBlZGVmIHN0cnVjdCB7CglCb29sZWFuCQl1aUNvbWluZzsJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU2F2ZURhdGFUeXBl
OwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQm9vbGVhbgkJaGFyZFJlc2V0OwkJCQkJCQkgCglCb29s
ZWFuCQljcmVhdGVEZWZhdWx0REI7CQkJCQkgCgl9IFN5c0FwcExhdW5jaENtZFN5c3RlbVJlc2V0
VHlwZTsKCQoKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVuY2hDbWRJbml0RGF0YWJhc2VUeXBl
IHsKCURtT3BlblJlZglkYlA7CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJVUludDMyCQljcmVhdG9yOwkJCQkJCQkJIAoJVUludDMy
CQl0eXBlOwkJCQkJCQkJCSAKCVVJbnQxNgkJdmVyc2lvbjsJCQkJCQkJCSAKCX0gU3lzQXBwTGF1
bmNoQ21kSW5pdERhdGFiYXNlVHlwZTsKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVu
Y2hDbWRTeW5jQ2FsbEFwcGxpY2F0aW9uVHlwZVYxMCB7CglVSW50MTYJCWFjdGlvbjsJCQkJCSAK
CVVJbnQxNgkJcGFyYW1TaXplOwkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQ4CQkJ
cmVtb3RlU29ja2V0OwkJCSAKCVVJbnQ4CQkJdGlkOwkJCQkJCSAKCUJvb2xlYW4JCWhhbmRsZWQ7
CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU3luY0NhbGxBcHBs
aWNhdGlvblR5cGVWMTA7CgoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzQXBwTGF1bmNoQ21kSGFu
ZGxlU3luY0NhbGxBcHBUeXBlIHsKCVVJbnQxNgkJcGJTaXplOwkJCQkJIAoJVUludDE2CQlhY3Rp
b247CQkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQzMgkJZHdQYXJhbVNpemU7CQkJ
IAoJdm9pZCAqCQlkbFJlZlA7CQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCglCb29s
ZWFuCQloYW5kbGVkOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkgCgkKCVVJbnQ4CQkJcmVzZXJ2ZWQxOwoJCQkJCQkJCQkJCQoJRXJyCQkJcmVwbHlFcnI7CQkJ
CSAKCQoJIAoJVUludDMyCQlkd1Jlc2VydmVkMTsJCQkgCglVSW50MzIJCWR3UmVzZXJ2ZWQyOwkJ
CSAKCgkgCgkgCgkKCQlVSW50MzIJCWNyZWF0b3I7CgkJVUludDMyCQl0eXBlOwoJCgoJfSBTeXNB
cHBMYXVuY2hDbWRIYW5kbGVTeW5jQ2FsbEFwcFR5cGU7CgogCnR5cGVkZWYgc3RydWN0IAoJewoJ
VUludDMyCQljcmVhdG9yOwoJVUludDMyCQl0eXBlOwoJRXJyCQkJcmVzdWx0OwoJfSBTeXNBcHBM
YXVuY2hDbWRGYWlsZWRBcHBOb3RpZnlUeXBlOwoJCgkKIAp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJ
bnQxNgkJY2FyZE5vOwoJTG9jYWxJRAkJZGJJRDsKCX0gU3lzQXBwTGF1bmNoQ21kT3BlbkRCVHlw
ZTsKCQoKIAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBTeXNBcHBJbmZvVHlwZSB7CglJ
bnQxNgkJCQljbWQ7CQkJCQkJCSAKCU1lbVB0cgkJCWNtZFBCUDsJCQkJCQkgCglVSW50MTYJCQls
YXVuY2hGbGFnczsJCQkJIAoJCglVSW50MzIJCQl0YXNrSUQ7CQkJCQkJIAoJTWVtSGFuZGxlCQlj
b2RlSDsJCQkJCQkgCglEbU9wZW5SZWYJCWRiUDsJCQkJCQkJIAoJVUludDgJCQkJKnN0YWNrUDsJ
CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsc0NodW5rUDsJCQkgCgoJVUludDE2CQkJbWVtT3duZXJJ
RDsJCQkJCSAKCU1lbVB0cgkJCWRtQWNjZXNzUDsJCQkJCSAKCUVycgkJCQlkbUxhc3RFcnI7CQkJ
CQkgCglNZW1QdHIJCQllcnJFeGNlcHRpb25QOwkJCQkgCgoJIAoJVUludDgJCQkJKmE1UHRyOwkJ
CQkJCSAKCVVJbnQ4CQkJCSpzdGFja0VuZFA7CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsRW5kUDsJ
CQkJIAoJc3RydWN0IFN5c0FwcEluZm9UeXBlICpyb290UDsJCQkJIAoJCQkJCQkJCQkJCQkJCSAK
CU1lbVB0cgkJCWV4dHJhUDsJCQkJCQkgCgl9IFN5c0FwcEluZm9UeXBlOwp0eXBlZGVmIFN5c0Fw
cEluZm9UeXBlICpTeXNBcHBJbmZvUHRyOwoKCiAKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
dHlwZWRlZiBzdHJ1Y3QgU3lzTGliVGJsRW50cnlUeXBlIHsKCU1lbVB0cgkJKmRpc3BhdGNoVGJs
UDsJCQkJCSAKCXZvaWQJCQkqZ2xvYmFsc1A7CQkJCQkJIAoJCgkgCglMb2NhbElECQlkYklEOwkJ
CQkJCQkJIAoJdm9pZAkJCSpjb2RlUnNjSDsJCQkJCQkgCgl9IFN5c0xpYlRibEVudHJ5VHlwZTsK
dHlwZWRlZiBTeXNMaWJUYmxFbnRyeVR5cGUqCVN5c0xpYlRibEVudHJ5UHRyOwoKIAogCgp0eXBl
ZGVmIHN0cnVjdCBTaW1EaXNwYXRjaFRhYmxlVHlwZSB7CglVSW50MzIJbnVtRW50cmllczsJCQkJ
CQkJIAoJdm9pZAkJKmVudHJpZXNbMV07CQkJCQkJIAoJCQkJCQkJCQkJCQkJCSAKICAgfSBTaW1E
aXNwYXRjaFRhYmxlVHlwZTsKdHlwZWRlZiBTaW1EaXNwYXRjaFRhYmxlVHlwZSoJU2ltRGlzcGF0
Y2hUYWJsZVB0cjsKCgoKIAp0eXBlZGVmIEVyciAoKlN5c0xpYkVudHJ5UHJvY1B0cikoVUludDE2
IHJlZk51bSwgU3lzTGliVGJsRW50cnlQdHIgZW50cnlQKTsKCiAKCgogCgoKIAoKCgogCgoKIAp0
eXBlZGVmIHZvaWQgKCpTeXNUZXJtUHJvY1B0cikoVUludDMyIHRhc2tJRCwgSW50MzIgcmVhc29u
KTsKCiAKdHlwZWRlZiB2b2lkICgqU3lzVGltZXJQcm9jUHRyKShJbnQzMiB0aW1lcklELCBJbnQz
MiBwYXJhbSk7CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCgog
CgoKCgogCgoKCgoKCgogCgoKCgoKCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCSAKCgoJCQkg
CgoKCgoKCgkJCSAKCgoKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoJCQkgCgkJCSAK
CQkJIAoJCQkgCgkJCSAKCQkJIAoKCgkJCSAKCQkJIAoJCQkKCgoJCQkKCgkJCSAKCQkJIAoKCgkJ
CSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoKCgkJCSAKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgoKCQkJ
IAoKCQkJIAoKCgoJCQkgCgkJCQoKCQkJCgoJCQkgCgkJCSAKCgoJCQkgCgkJCSAKCgoKCgoJCQkK
IAoKCiAKCgoKIAoKCgogCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoK
IAoKCiAKIAp0eXBlZGVmIGVudW0gewoJc3lzQmF0dGVyeUtpbmRBbGthbGluZT0wLAoJc3lzQmF0
dGVyeUtpbmROaUNhZCwKCXN5c0JhdHRlcnlLaW5kTGlJb24sCglzeXNCYXR0ZXJ5S2luZFJlY2hB
bGssCglzeXNCYXR0ZXJ5S2luZE5pTUgsCglzeXNCYXR0ZXJ5S2luZExpSW9uMTQwMCwKCXN5c0Jh
dHRlcnlLaW5kTGFzdD0weEZGICAgIAoJfSBTeXNCYXR0ZXJ5S2luZDsKCQogCnR5cGVkZWYgZW51
bSB7CglzeXNCYXR0ZXJ5U3RhdGVOb3JtYWw9MCwKCXN5c0JhdHRlcnlTdGF0ZUxvd0JhdHRlcnks
CglzeXNCYXR0ZXJ5U3RhdGVDcml0QmF0dGVyeSwKCXN5c0JhdHRlcnlTdGF0ZVNodXRkb3duCgl9
IFN5c0JhdHRlcnlTdGF0ZTsKCgogCnR5cGVkZWYgc3RydWN0IAoJewoJQ2hhcgkJCW5hbWVbMzIg
XTsKCVVJbnQzMgkJY3JlYXRvcjsKCVVJbnQzMgkJdHlwZTsKCVVJbnQxNgkJdmVyc2lvbjsKCUxv
Y2FsSUQJCWRiSUQ7CglVSW50MTYgCQljYXJkTm87CglCaXRtYXBQdHIJaWNvblA7Cgl9IFN5c0RC
TGlzdEl0ZW1UeXBlOwoJCgogCiAKIAogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQzMgkJZGF0YVsz
XTsKCX0gU3lzTWFpbGJveE1zZ1R5cGU7CgkKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgojIDEx
NzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVtTWdy
LmgiCgoKCgogCgoKCgoKCgoKCgoKCgojIDYwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J
bmNzL0NvcmUvU3lzdGVtL1ByZWZlcmVuY2VzLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Mb2NhbGVNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK
CiAKCgoKdHlwZWRlZiBVSW50MTYgTG1Mb2NhbGVTZXR0aW5nQ2hvaWNlOwoKIAoKCgogCgoKCgoJ
CgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK
CiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoJCgoKCgoJCgoKCgoKIAoKCiAKdHlwZWRlZiBVSW50
MTYgTG1Sb3V0aW5lU2VsZWN0b3I7CgoKCgoKCgogCgoKCnR5cGVkZWYgVUludDggTGFuZ3VhZ2VU
eXBlOwp0eXBlZGVmIFVJbnQ4IENvdW50cnlUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgX0xtTG9jYWxl
VHlwZSBMbUxvY2FsZVR5cGU7CnN0cnVjdCBfTG1Mb2NhbGVUeXBlCnsKCVVJbnQxNglsYW5ndWFn
ZTsJCSAKCVVJbnQxNgljb3VudHJ5OwkJCSAKfTsKCiAKCgoKIyAyMjggIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTG9jYWxlTWdyLmgiCgoKCiMgNjEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUHJlZmVyZW5jZXMuaCIgMgoK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQXR0ZW50aW9uTWdy
LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoJCgog
CgoKCgoKCgoKCgoKCgoKCQkJCgkJCQogCgoKCnR5cGVkZWYgVUludDMyIEF0dG5GbGFnc1R5cGU7
CgoKCgoKCSAKCgoKCiAKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm
IFVJbnQxNiBBdHRuTGV2ZWxUeXBlOwoJCgkKCnR5cGVkZWYgVUludDE2IEF0dG5Db21tYW5kVHlw
ZTsKCQoJCgkKCQoJCgkKCQoJCgp0eXBlZGVmIHVuaW9uIEF0dG5Db21tYW5kQXJnc1RhZyB7Cglz
dHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0RldGFpbFRhZ3sKCQlSZWN0YW5nbGVUeXBlIGJvdW5k
czsKCQlCb29sZWFuIGZpcnN0VGltZTsKCQlBdHRuRmxhZ3NUeXBlIGZsYWdzOwoJfSBkcmF3RGV0
YWlsOwoJCglzdHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0xpc3RUYWcgewoJCVJlY3RhbmdsZVR5
cGUgYm91bmRzOwoJCUJvb2xlYW4gZmlyc3RUaW1lOwoJCUF0dG5GbGFnc1R5cGUgZmxhZ3M7CgkJ
Qm9vbGVhbiBzZWxlY3RlZDsKCX0gZHJhd0xpc3Q7CgkKCXN0cnVjdCBBdHRuQ29tbWFuZEFyZ3NH
b3RJdFRhZyB7CgkJQm9vbGVhbiBkaXNtaXNzZWRCeVVzZXI7Cgl9IGdvdEl0OwoJCglzdHJ1Y3Qg
QXR0bkNvbW1hbmRBcmdzSXRlcmF0ZVRhZyB7CgkJVUludDMyIGl0ZXJhdGlvbkRhdGE7Cgl9IGl0
ZXJhdGU7Cn0gQXR0bkNvbW1hbmRBcmdzVHlwZTsKCnR5cGVkZWYgc3RydWN0IHsKCUF0dG5Db21t
YW5kVHlwZSBjb21tYW5kOwoJVUludDMyIHVzZXJEYXRhOwoJQXR0bkNvbW1hbmRBcmdzVHlwZSAq
Y29tbWFuZEFyZ3NQOwp9IEF0dG5MYXVuY2hDb2RlQXJnc1R5cGU7Cgp0eXBlZGVmIEVyciBBdHRu
Q2FsbGJhY2tQcm9jIChBdHRuQ29tbWFuZFR5cGUgY29tbWFuZCwgVUludDMyIHVzZXJEYXRhLCBB
dHRuQ29tbWFuZEFyZ3NUeXBlICpjb21tYW5kQXJnc1ApOwoKIAp0eXBlZGVmIHN0cnVjdCB7CglB
dHRuRmxhZ3NUeXBlIGZsYWdzOwp9IEF0dG5Ob3RpZnlEZXRhaWxzVHlwZTsKCgogCgoKIyAyMDcg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9BdHRlbnRpb25NZ3IuaCIK
CgoKIyA2MiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm
ZXJlbmNlcy5oIiAyCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCQoJ
CgkKCgoJCgoKCgoKCQoJCgkKCgp0eXBlZGVmIGVudW0KCXsKCXVuaXRzRW5nbGlzaCA9IDAsCQkg
Cgl1bml0c01ldHJpYwkJCQkgCgl9IE1lYXN1cmVtZW50U3lzdGVtVHlwZTsKCgogCiAKIAp0eXBl
ZGVmIGVudW0gewoJc2xPbiA9IDAsCglzbE9mZiA9IDEKCX0gU291bmRMZXZlbFR5cGVWMjA7CgkK
IAp0eXBlZGVmIGVudW0gewogICBuZXZlciA9IDAsCQkJCQkgCiAgIHVwb25Qb3dlck9mZiwJCQkJ
IAogICBhdFByZXNldFRpbWUsCQkJCSAKICAgYWZ0ZXJQcmVzZXREZWxheQkJCQkgCiAgIH0gU2Vj
dXJpdHlBdXRvTG9ja1R5cGU7CgoKIAogCnR5cGVkZWYgZW51bSB7CglhbE9mZiwJCQkJCQkJCQkg
CglhbEV2ZW50c09ubHksCQkJCQkJCSAKCWFsRXZlbnRzQW5kUmFuZG9tLAkJCQkJIAoJYWxFdmVu
dHNBbmRNb3JlUmFuZG9tCQkJCSAKCX0gQW5pbWF0aW9uTGV2ZWxUeXBlOwoKCnR5cGVkZWYgZW51
bSAKCXsKCXByZWZWZXJzaW9uLAoJcHJlZkNvdW50cnksCglwcmVmRGF0ZUZvcm1hdCwKCXByZWZM
b25nRGF0ZUZvcm1hdCwKCXByZWZXZWVrU3RhcnREYXksCglwcmVmVGltZUZvcm1hdCwKCXByZWZO
dW1iZXJGb3JtYXQsCglwcmVmQXV0b09mZkR1cmF0aW9uLAkJCQkJIAoJcHJlZlN5c1NvdW5kTGV2
ZWxWMjAsCQkJCSAKCXByZWZHYW1lU291bmRMZXZlbFYyMCwJCQkJIAoJcHJlZkFsYXJtU291bmRM
ZXZlbFYyMCwJCQkJIAoJcHJlZkhpZGVQcml2YXRlUmVjb3Jkc1YzMywKCXByZWZEZXZpY2VMb2Nr
ZWQsCglwcmVmTG9jYWxTeW5jUmVxdWlyZXNQYXNzd29yZCwKCXByZWZSZW1vdGVTeW5jUmVxdWly
ZXNQYXNzd29yZCwKCXByZWZTeXNCYXR0ZXJ5S2luZCwKCXByZWZBbGxvd0Vhc3RlckVnZ3MsCglw
cmVmTWludXRlc1dlc3RPZkdNVCwJCQkJIAoJcHJlZkRheWxpZ2h0U2F2aW5ncywJCQkJCSAKCXBy
ZWZSb25hbWF0aWNDaGFyLAoJcHJlZkhhcmQxQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQy
Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQzQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhh
cmQ0Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkNhbGNDaGFyQXBwQ3JlYXRvciwJCQkJIAoJcHJl
ZkhhcmRDcmFkbGVDaGFyQXBwQ3JlYXRvciwJCSAKCXByZWZMYXVuY2hlckFwcENyZWF0b3IsCQkJ
CSAKCXByZWZTeXNQcmVmRmxhZ3MsCQkKCXByZWZIYXJkQ3JhZGxlMkNoYXJBcHBDcmVhdG9yLAkg
CglwcmVmQW5pbWF0aW9uTGV2ZWwsCgoJIAoJcHJlZlN5c1NvdW5kVm9sdW1lLAkJCQkJIAoJcHJl
ZkdhbWVTb3VuZFZvbHVtZSwJCQkJCSAKCXByZWZBbGFybVNvdW5kVm9sdW1lLAkJCQkgCglwcmVm
QmVhbVJlY2VpdmUsCQkJCQkJIAoJcHJlZkNhbGlicmF0ZURpZ2l0aXplckF0UmVzZXQsCSAKCXBy
ZWZTeXN0ZW1LZXlib2FyZElELAkJCQkgCglwcmVmRGVmU2VyaWFsUGx1Z0luLAkJCQkJIAoKCSAK
CXByZWZTdGF5T25XaGVuUGx1Z2dlZEluLAkJCSAKCXByZWZTdGF5TGl0V2hlblBsdWdnZWRJbiwJ
CQkgCgoJIAoJcHJlZkFudGVubmFDaGFyQXBwQ3JlYXRvciwJCQkgCgoJIAoJcHJlZk1lYXN1cmVt
ZW50U3lzdGVtLAkJCQkgCgkKCSAKCXByZWZTaG93UHJpdmF0ZVJlY29yZHMsCQkJCSAKCXByZWZB
dXRvT2ZmRHVyYXRpb25TZWNzLAkJCSAKCQoJIAoJcHJlZlRpbWVab25lLAkJCQkJCQkgCglwcmVm
RGF5bGlnaHRTYXZpbmdBZGp1c3RtZW50LAkJIAoKCXByZWZBdXRvTG9ja1R5cGUsCQkJCQkJIAoJ
cHJlZkF1dG9Mb2NrVGltZSwJCQkJCQkgCglwcmVmQXV0b0xvY2tUaW1lRmxhZywgICAgCQkJIAoK
CXByZWZMYW5ndWFnZSwJCQkJCQkJIAoJcHJlZkxvY2FsZSwJCQkJCQkJCSAKCQoJcHJlZlRpbWVa
b25lQ291bnRyeSwJCQkJCSAKCQoJcHJlZkF0dGVudGlvbkZsYWdzLAkJCQkJIAoKCXByZWZEZWZh
dWx0QXBwQ3JlYXRvcgkJCQkgCgoJfSBTeXN0ZW1QcmVmZXJlbmNlc0Nob2ljZTsKCQoJCnR5cGVk
ZWYgc3RydWN0IHsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRyeVR5cGUgY291
bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0ZUZvcm1hdFR5
cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCVVJbnQ4IHdlZWtTdGFydERheTsJCQkJCSAKCVRpbWVGb3Jt
YXRUeXBlIHRpbWVGb3JtYXQ7CQkJIAoJTnVtYmVyRm9ybWF0VHlwZSBudW1iZXJGb3JtYXQ7CSAK
CQoJIAoJVUludDggYXV0b09mZkR1cmF0aW9uOwkJCQkgCglTb3VuZExldmVsVHlwZVYyMCBzeXNT
b3VuZExldmVsOwkJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsOwkgCglCb29s
ZWFuIGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VM
b2NrZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDggcmVzZXJ2ZWQxOwoJVUludDE2IHN5c1By
ZWZGbGFnczsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCglTeXNCYXR0ZXJ5S2lu
ZAlzeXNCYXR0ZXJ5S2luZDsJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4IHJl
c2VydmVkMjsKCQoJfSBTeXN0ZW1QcmVmZXJlbmNlc1R5cGVWMTA7CgoKIAogCiAKIAogCiAKIAog
Cgp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRy
eVR5cGUgY291bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0
ZUZvcm1hdFR5cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCUludDggd2Vla1N0YXJ0RGF5OwkJCQkJIAoJ
VGltZUZvcm1hdFR5cGUgdGltZUZvcm1hdDsJCQkgCglOdW1iZXJGb3JtYXRUeXBlIG51bWJlckZv
cm1hdDsJIAoJCgkgCglVSW50OCBhdXRvT2ZmRHVyYXRpb247CQkJCSAKCVNvdW5kTGV2ZWxUeXBl
VjIwIHN5c1NvdW5kTGV2ZWxWMjA7CQkgCglTb3VuZExldmVsVHlwZVYyMCBnYW1lU291bmRMZXZl
bFYyMDsJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsVjIwOwkgCglCb29sZWFu
IGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VMb2Nr
ZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBsb2NhbFN5bmNSZXF1aXJlc1Bhc3N3b3Jk
OwkgCglCb29sZWFuIHJlbW90ZVN5bmNSZXF1aXJlc1Bhc3N3b3JkOwkgCglVSW50MTYgc3lzUHJl
ZkZsYWdzOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJ
U3lzQmF0dGVyeUtpbmQJc3lzQmF0dGVyeUtpbmQ7CSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkgCglVSW50OCByZXNlcnZlZDE7CglVSW50MzIgbWludXRlc1dlc3RPZkdNVDsJCQkgCglEYXls
aWdodFNhdmluZ3NUeXBlcwlkYXlsaWdodFNhdmluZ3M7CSAKCVVJbnQ4IHJlc2VydmVkMjsKCVVJ
bnQxNiByb25hbWF0aWNDaGFyOwkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMgloYXJkMUNoYXJB
cHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZDJDaGFyQXBwQ3JlYXRvcjsJ
CSAKCQkJCQkJCQkJCQkJIAoJVUludDMyCWhhcmQzQ2hhckFwcENyZWF0b3I7CQkgCgkJCQkJCQkJ
CQkJCSAKCVVJbnQzMgloYXJkNENoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50
MzIJY2FsY0NoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRs
ZUNoYXJBcHBDcmVhdG9yOwkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMglsYXVuY2hlckNoYXJBcHBD
cmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRsZTJDaGFyQXBwQ3JlYXRv
cjsJIAoJCQkJCQkJCQkJCQkgCglBbmltYXRpb25MZXZlbFR5cGUgYW5pbWF0aW9uTGV2ZWw7CSAK
CQoJQm9vbGVhbgltYXNrUHJpdmF0ZVJlY29yZHM7CQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkKCSAKCVVJbnQxNiBzeXNTb3VuZFZvbHVtZTsJCQkJCSAK
CVVJbnQxNiBnYW1lU291bmRWb2x1bWU7CQkJCQkgCglVSW50MTYgYWxhcm1Tb3VuZFZvbHVtZTsJ
CQkJIAoJQm9vbGVhbiBiZWFtUmVjZWl2ZTsJCQkJCQkgCglCb29sZWFuIGNhbGlicmF0ZURpZ2l0
aXplckF0UmVzZXQ7CSAKCVVJbnQxNiBzeXN0ZW1LZXlib2FyZElEOwkJCQkgCglVSW50MzIgZGVm
U2VyaWFsUGx1Z0luOwkJCQkJIAoKCSAKCUJvb2xlYW4gc3RheU9uV2hlblBsdWdnZWRJbjsJCQkg
CglCb29sZWFuIHN0YXlMaXRXaGVuUGx1Z2dlZEluOwkJCSAKCgkgCglVSW50MzIJYW50ZW5uYUNo
YXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkJIAoKCSAKCU1lYXN1cmVtZW50U3lzdGVtVHlw
ZSBtZWFzdXJlbWVudFN5c3RlbTsJIAoJVUludDgJCQkJCQlyZXNlcnZlZDM7CQkJCQoJVUludDE2
IGF1dG9PZmZEdXJhdGlvblNlY3M7CQkJCQkgCgkKCSAKCUludDE2IHRpbWVab25lOwkJCQkJCQkg
CglJbnQxNglkYXlsaWdodFNhdmluZ0FkanVzdG1lbnQ7CQkgCglDb3VudHJ5VHlwZSB0aW1lWm9u
ZUNvdW50cnk7CQkJIAoJU2VjdXJpdHlBdXRvTG9ja1R5cGUgIGF1dG9Mb2NrVHlwZTsJCSAKCVVJ
bnQzMgkJCQlhdXRvTG9ja1RpbWU7CQkgCglCb29sZWFuCQkJCWF1dG9Mb2NrVGltZUZsYWc7CSAK
CUxhbmd1YWdlVHlwZQkJbGFuZ3VhZ2U7CQkJIAoKCUF0dG5GbGFnc1R5cGUJCWF0dGVudGlvbkZs
YWdzOwkJIAoJCglVSW50MzIJCQkJZGVmYXVsdEFwcENyZWF0b3I7CSAKCQkJCQkJCQkJCQkgCgl9
IFN5c3RlbVByZWZlcmVuY2VzVHlwZTsKCgoJCnR5cGVkZWYgU3lzdGVtUHJlZmVyZW5jZXNUeXBl
ICpTeXN0ZW1QcmVmZXJlbmNlc1B0cjsKCgogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBrZXlD
b2RlOwkJCQkJCSAKCVVJbnQzMiBjcmVhdG9yOwkJCQkJCSAKfSBCdXR0b25EZWZhdWx0QXBwVHlw
ZTsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBudW1CdXR0b25zOwkJCQkJIAoJQnV0dG9uRGVm
YXVsdEFwcFR5cGUgYnV0dG9uWzFdOwkgCn0gQnV0dG9uRGVmYXVsdExpc3RUeXBlOwoKCiAKIAog
CgojIDQyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm
ZXJlbmNlcy5oIgoKCgojIDEwMSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIAogCgkJCiMg
MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3Iu
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCiAK
IAoKCgoKCgoKCgoKIAoKCgoKCgoKCQkKCiAKCgoKIAoKCgkKCgoKCgoKCgoKCgoKCgoJCQkJCQkJ
CQkJCQkJCQkJCQkJCSAKCgogCgoKCgkJCQkJCQkJCQkJCQoKCgogCgoKCgoKCgogCiAKIAoKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IERldmljZUluZm9UeXBlIHsKCVVJbnQzMiBzZXJEZXZDcmVhdG9y
OwkJCQkJCQkJIAoJVUludDMyIHNlckRldkZ0ckluZm87CQkJCQkJCQkgCglVSW50MzIgc2VyRGV2
TWF4QmF1ZFJhdGU7CQkJCQkJCSAKCVVJbnQzMiBzZXJEZXZIYW5kc2hha2VCYXVkOwkJCQkJCSAK
CUNoYXIgKnNlckRldlBvcnRJbmZvU3RyOwkJCQkJCQkgCglVSW50OCByZXNlcnZlZFs4XTsJCQkJ
CQkJCQkgCn0gRGV2aWNlSW5mb1R5cGU7Cgp0eXBlZGVmIERldmljZUluZm9UeXBlICpEZXZpY2VJ
bmZvUHRyOwoKCiAKCgoKdHlwZWRlZiB2b2lkICgqV2FrZXVwSGFuZGxlclByb2NQdHIpKFVJbnQz
MiByZWZDb24pOwoKIAoKCgoKCgoKCgoKCnR5cGVkZWYgQm9vbGVhbiAoKkJsb2NraW5nSG9va1By
b2NQdHIpICAoVUludDMyIHVzZXJSZWYpOwoKCiAKCgoKIAoKCnR5cGVkZWYgc3RydWN0IFNybUNh
bGxiYWNrRW50cnlUeXBlIHsKCUJsb2NraW5nSG9va1Byb2NQdHIJZnVuY1A7CQkJCQkgCglVSW50
MzIJCQkJCXVzZXJSZWY7CQkJCQkgCn0gU3JtQ2FsbGJhY2tFbnRyeVR5cGU7CnR5cGVkZWYgU3Jt
Q2FsbGJhY2tFbnRyeVR5cGUqCVNybUNhbGxiYWNrRW50cnlQdHI7CgoKdHlwZWRlZiBlbnVtIFNy
bUN0bEVudW0gewoJc3JtQ3RsRmlyc3RSZXNlcnZlZCA9IDAsCQkgCgkKCXNybUN0bFNldEJhdWRS
YXRlLAkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQoJc3JtQ3RsR2V0QmF1ZFJhdGUsCQkJ
CSAKCQkJCQkJCQkJCQkKCXNybUN0bFNldEZsYWdzLAkJCQkJIAoJCglzcm1DdGxHZXRGbGFncywJ
CQkJCSAKCQoJc3JtQ3RsU2V0Q3RzVGltZW91dCwJCQkJIAoJCglzcm1DdGxHZXRDdHNUaW1lb3V0
LAkJCQkgCgkKCXNybUN0bFN0YXJ0QnJlYWssCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCglzcm1DdGxTdG9wQnJlYWssCQkJCQkgCgkJCQkJ
CQkJCQkJIAoKCXNybUN0bFN0YXJ0TG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJCglzcm1DdGxTdG9wTG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgoKCXNybUN0
bElyREFFbmFibGUsCQkJCQkgCgkJCQkJCQkJCQkJIAoKCXNybUN0bElyREFEaXNhYmxlLAkJCQkg
CgkJCQkJCQkJCQkJIAoKCXNybUN0bFJ4RW5hYmxlLAkJCQkJIAoJCglzcm1DdGxSeERpc2FibGUs
CQkJCQkgCgoJc3JtQ3RsRW11U2V0QmxvY2tpbmdIb29rLAkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
IAoKCXNybUN0bFVzZXJEZWYsCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkKCXNybUN0bEdldE9wdGltYWxUcmFuc21p
dFNpemUsCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQoJc3JtQ3RsU2V0RFRSQXNzZXJ0ZWQsCQkJ
IAoJCglzcm1DdGxHZXREVFJBc3NlcnRlZCwJCQkgCgkKCXNybUN0bExBU1QJCQkJCQkJIAoJCn0g
U3JtQ3RsRW51bTsKCgoKIAoKCgoKCgoJCgoKCgoKIAogCiAKCnR5cGVkZWYgZW51bSB7CQkJCQkg
CglzeXNTZXJpYWxJbnN0YWxsID0gMCwKCXN5c1NlcmlhbE9wZW4sCglzeXNTZXJpYWxPcGVuQmtn
bmQsCQoJc3lzU2VyaWFsQ2xvc2UsCglzeXNTZXJpYWxTbGVlcCwKCXN5c1NlcmlhbFdha2UsCglz
eXNTZXJpYWxHZXREZXZpY2VDb3VudCwKCXN5c1NlcmlhbEdldERldmljZUluZm8sCglzeXNTZXJp
YWxHZXRTdGF0dXMsCglzeXNTZXJpYWxDbGVhckVyciwKCXN5c1NlcmlhbENvbnRyb2wsCglzeXNT
ZXJpYWxTZW5kLAoJc3lzU2VyaWFsU2VuZFdhaXQsCglzeXNTZXJpYWxTZW5kQ2hlY2ssCglzeXNT
ZXJpYWxTZW5kRmx1c2gsCglzeXNTZXJpYWxSZWNlaXZlLAoJc3lzU2VyaWFsUmVjZWl2ZVdhaXQs
CglzeXNTZXJpYWxSZWNlaXZlQ2hlY2ssCglzeXNTZXJpYWxSZWNlaXZlRmx1c2gsCglzeXNTZXJp
YWxTZXRSY3ZCdWZmZXIsCglzeXNTZXJpYWxSY3ZXaW5kb3dPcGVuLAoJc3lzU2VyaWFsUmN2V2lu
ZG93Q2xvc2UsCglzeXNTZXJpYWxTZXRXYWtldXBIYW5kbGVyLAoJc3lzU2VyaWFsUHJpbWVXYWtl
dXBIYW5kbGVyLAoJCgltYXhTZXJpYWxTZWxlY3RvciA9IHN5c1NlcmlhbFByaW1lV2FrZXVwSGFu
ZGxlcgkJIAp9IHN5c1NlcmlhbFNlbGVjdG9yOwoJCgojIDM2OSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3IuaCIKCgoKIyAxMDUgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
IAogCiAKCgoKCgoKCiAKIAogCgoKCgoKCgogCiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAoKdHlw
ZWRlZglVSW50OAlTbGtQa3RIZWFkZXJDaGVja3N1bTsKCnR5cGVkZWYgc3RydWN0IFNsa1BrdEhl
YWRlclR5cGUgewoJVUludDE2CQkJCQlzaWduYXR1cmUxOwkJCQkgCglVSW50OAkJCQkJCXNpZ25h
dHVyZTI7CQkJCSAKCVVJbnQ4CQkJCQkJZGVzdDsJCQkJCQkgCglVSW50OAkJCQkJCXNyYzsJCQkJ
CQkgCglVSW50OAkJCQkJCXR5cGU7CQkJCQkJIAoJVUludDE2CQkJCQlib2R5U2l6ZTsJCQkJIAoJ
VUludDgJCQkJCQl0cmFuc0lkOwkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCglTbGtQa3RIZWFkZXJD
aGVja3N1bQljaGVja3N1bTsJCQkJIAoJfSBTbGtQa3RIZWFkZXJUeXBlOwoKdHlwZWRlZiBTbGtQ
a3RIZWFkZXJUeXBlKglTbGtQa3RIZWFkZXJQdHI7CgoKCgoKCgoKIAogCiAKdHlwZWRlZiBzdHJ1
Y3QgU2xrUGt0Rm9vdGVyVHlwZSB7CglVSW50MTYJCWNyYzE2OwkJCQkgCgl9IFNsa1BrdEZvb3Rl
clR5cGU7Cgp0eXBlZGVmIFNsa1BrdEZvb3RlclR5cGUqCVNsa1BrdEZvb3RlclB0cjsKCgogCiAK
IAogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU2xrV3JpdGVEYXRhVHlwZSB7CglVSW50MTYJc2l6
ZTsJCQkJCSAKCXZvaWQqCQlkYXRhUDsJCQkJIAoJfSBTbGtXcml0ZURhdGFUeXBlOwp0eXBlZGVm
IFNsa1dyaXRlRGF0YVR5cGUqCVNsa1dyaXRlRGF0YVB0cjsKCgoKCiAKIAogCiAKIAoKIAogCiAK
CgoKCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1Nl
cmlhbExpbmtNZ3IuaCIKCgoKCgoKIyAxNDggIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu
Y3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgoKCgoKCgoKCgoJCgoKCQoKCgkK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAyMTAgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs
YXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgojIDIzMCAiLi4v
U3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgi
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCQkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgoK
CnR5cGVkZWYJdm9pZCAoKlNsa1NvY2tldExpc3RlbmVyUHJvY1B0cikKCQkJKFNsa1BrdEhlYWRl
clB0ciBoZWFkZXJQLCB2b2lkICpib2R5UCk7CgkJCQp0eXBlZGVmIHN0cnVjdCBTbGtTb2NrZXRM
aXN0ZW5UeXBlIHsKCVNsa1NvY2tldExpc3RlbmVyUHJvY1B0ciAJbGlzdGVuZXJQOwoJU2xrUGt0
SGVhZGVyUHRyCQkJCWhlYWRlckJ1ZmZlclA7CQkgCgl2b2lkKgkJCQkJCQkJYm9keUJ1ZmZlclA7
CQkgCglVSW50MzIJCQkJCQkJYm9keUJ1ZmZlclNpemU7Cgl9IFNsa1NvY2tldExpc3RlblR5cGU7
CnR5cGVkZWYgU2xrU29ja2V0TGlzdGVuVHlwZSoJU2xrU29ja2V0TGlzdGVuUHRyOwoKCgogCgoK
IyA0MzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFs
TGlua01nci5oIgoKCQoJCgojIDEwNiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMg
MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5o
IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgogCgogCgoKCgoKIAoKCgoKIAog
CiAKdHlwZWRlZiBlbnVtIFNuZENtZElEVHlwZSB7CgkJCQkJCQkJCQoJc25kQ21kRnJlcUR1cmF0
aW9uQW1wID0gMSwJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCXNuZENtZE5vdGVPbiwJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCSAKCQoJc25kQ21kRnJxT24sCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkKCXNuZENtZFF1aWV0
CQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCgl9IFNuZENt
ZElEVHlwZTsKCgoJCgogCiAKIAoKdHlwZWRlZiBzdHJ1Y3QgU25kQ29tbWFuZFR5cGUgewogClVJ
bnQ4CWNtZDsJCQkJCQkgClVJbnQ4IAkJCXJlc2VydmVkOwpJbnQzMgkJCQlwYXJhbTE7CQkJCQkg
ClVJbnQxNgkJCXBhcmFtMjsJCQkJCSAKVUludDE2CQkJcGFyYW0zOwkJCQkJIAp9IFNuZENvbW1h
bmRUeXBlOwoKdHlwZWRlZiBTbmRDb21tYW5kVHlwZSoJCVNuZENvbW1hbmRQdHI7CgoKIAogCiAK
CnR5cGVkZWYgZW51bSBTbmRTeXNCZWVwVHlwZSB7CglzbmRJbmZvID0gMSwKCXNuZFdhcm5pbmcs
CglzbmRFcnJvciwKCXNuZFN0YXJ0VXAsCglzbmRBbGFybSwKCXNuZENvbmZpcm1hdGlvbiwKCXNu
ZENsaWNrCgl9IFNuZFN5c0JlZXBUeXBlOwoKCiAKCgoKCiAKIAogCiAKIAogCiAKCnR5cGVkZWYg
c3RydWN0IFNuZE1pZGlSZWNIZHJUeXBlIHsKCVVJbnQzMgkJc2lnbmF0dXJlOwkJCQkgCglVSW50
OAkJCWJEYXRhT2Zmc2V0OwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQlyZXNlcnZlZDsJCQkJ
IAoJfSBTbmRNaWRpUmVjSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IFNuZE1pZGlSZWNUeXBlIHsK
CVNuZE1pZGlSZWNIZHJUeXBlCQloZHI7CQkJIAoJCQkJCQkJCQkJCQkgCglDaGFyCQkJbmFtZVsy
XTsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gU25k
TWlkaVJlY1R5cGU7CgoKIAp0eXBlZGVmIHN0cnVjdCBTbmRNaWRpTGlzdEl0ZW1UeXBlCgl7CglD
aGFyCQkJbmFtZVszMiBdOwkJCSAKCVVJbnQzMgkJdW5pcXVlUmVjSUQ7CglMb2NhbElECQlkYklE
OwoJVUludDE2IAkJY2FyZE5vOwoJfSBTbmRNaWRpTGlzdEl0ZW1UeXBlOwoKCiAKdHlwZWRlZiBl
bnVtIFNuZFNtZkNtZEVudW0gewoJc25kU21mQ21kUGxheSA9IDEsCQkJCQkgCglzbmRTbWZDbWRE
dXJhdGlvbgkJCQkJCSAKCX0gU25kU21mQ21kRW51bTsKCnR5cGVkZWYgdm9pZCBTbmRDb21wbEZ1
bmNUeXBlKHZvaWQgKmNoYW5QLCBVSW50MzIgZHdVc2VyRGF0YSk7CnR5cGVkZWYgU25kQ29tcGxG
dW5jVHlwZSAqU25kQ29tcGxGdW5jUHRyOwoKCiAKdHlwZWRlZiBCb29sZWFuIFNuZEJsb2NraW5n
RnVuY1R5cGUodm9pZCAqY2hhblAsIFVJbnQzMiBkd1VzZXJEYXRhLCBJbnQzMiBzeXNUaWNrc0F2
YWlsYWJsZSk7CnR5cGVkZWYgU25kQmxvY2tpbmdGdW5jVHlwZSAqU25kQmxvY2tpbmdGdW5jUHRy
OwoKdHlwZWRlZiBzdHJ1Y3QgU25kQ2FsbGJhY2tJbmZvVHlwZSB7CglNZW1QdHIJCWZ1bmNQOwkJ
CSAKCVVJbnQzMglkd1VzZXJEYXRhOwkJIAoJfSBTbmRDYWxsYmFja0luZm9UeXBlOwoKCnR5cGVk
ZWYgc3RydWN0IFNuZFNtZkNhbGxiYWNrc1R5cGUgewoJU25kQ2FsbGJhY2tJbmZvVHlwZQljb21w
bGV0aW9uOwkJIAoJU25kQ2FsbGJhY2tJbmZvVHlwZQlibG9ja2luZzsJCSAKCVNuZENhbGxiYWNr
SW5mb1R5cGUJcmVzZXJ2ZWQ7CQkgCgl9IFNuZFNtZkNhbGxiYWNrc1R5cGU7CgoKCgp0eXBlZGVm
IHN0cnVjdCBTbmRTbWZPcHRpb25zVHlwZSB7CgkgCgkgCglVSW50MzIJZHdTdGFydE1pbGxpU2Vj
OwkJCQkgCglVSW50MzIJZHdFbmRNaWxsaVNlYzsJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCSAKCQoJIAoJVUludDE2CWFtcGxpdHVkZTsJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCQkgCgkKCUJvb2xlYW4JaW50ZXJydXB0aWJsZTsJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQoJVUludDgJCXJl
c2VydmVkMTsKCVVJbnQzMglyZXNlcnZlZDsJCQkJCQkgCgl9IFNuZFNtZk9wdGlvbnNUeXBlOwoK
CnR5cGVkZWYgc3RydWN0IFNuZFNtZkNoYW5SYW5nZVR5cGUgewoJVUludDgJYkZpcnN0Q2hhbjsJ
CQkJCQkJIAoJVUludDgJYkxhc3RDaGFuOwkJCQkJCQkgCgl9IFNuZFNtZkNoYW5SYW5nZVR5cGU7
CgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgojIDMwOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh
dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5oIgoKCgoKIAoKCgoKCiMgMTA5ICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1N5c3RlbS9TeXNFdnRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCiAKCgp0eXBlZGVmIGVudW0KewoJU2V0QXRMZWFzdCwJCSAKCVNldEV4YWN0bHksCQkg
CglTZXRBdE1vc3QsCQkgCglTZXREZWZhdWx0LAkJIAoJUmVzZXRUaW1lcgkJIAoJCn0gRXZ0U2V0
QXV0b09mZkNtZDsKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUGVuQnRuSW5mb1R5cGUgewoJUmVj
dGFuZ2xlVHlwZQlib3VuZHNSOwkJCQkJCSAKCVdDaGFyCQkJCWFzY2lpQ29kZTsJCQkJCSAKCVVJ
bnQxNgkJCWtleUNvZGU7CQkJCQkJIAoJVUludDE2CQkJbW9kaWZpZXJzOwkJCQkJIAoJfSBQZW5C
dG5JbmZvVHlwZTsKdHlwZWRlZiBQZW5CdG5JbmZvVHlwZSogUGVuQnRuSW5mb1B0cjsKCQp0eXBl
ZGVmIHN0cnVjdCBQZW5CdG5MaXN0VHlwZSB7CglVSW50MTYJCQludW1CdXR0b25zOwkJCQkJIAoJ
UGVuQnRuSW5mb1R5cGUJYnV0dG9uc1sxXTsJCQkJCSAKCX0gUGVuQnRuTGlzdFR5cGU7CgoKIAoK
CgoKIAogCiAKCgoKIAoKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTaWxrc2NyZWVuQXJlYVR5cGUg
ewoJUmVjdGFuZ2xlVHlwZQkJCWJvdW5kczsKCVVJbnQzMgkJCQkJYXJlYVR5cGU7CSAKCVVJbnQx
NgkJCQkJaW5kZXg7Cgl9IFNpbGtzY3JlZW5BcmVhVHlwZTsKCQoKIAoKCiMgMjQxICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2dE1nci5oIgoKCgogCgoK
CgoKCgoKIyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgkJCgkJCgkJCiMgMSAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TeXN0ZW1Qa3QuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgogCiAKCgogCiAKIAoKCgogCgoKCgogCiAKIAoK
IAoKCgoJCgogCnR5cGVkZWYgc3RydWN0IFN5c1BrdEJvZHlUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7
CVVJbnQ4CV9maWxsZXIgOwoJVUludDgJCQkJZGF0YVsoMjU2ICsxNikgLTJdOwoJfSBTeXNQa3RC
b2R5VHlwZTsKdHlwZWRlZiBTeXNQa3RCb2R5VHlwZSoJU3lzUGt0Qm9keVB0cjsKCgoKIAogCiAK
IAoKCgoKIAogCiAKCiAKIAogCgoKCiAKIAogCgoKCQkJCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RS
ZWFkTWVtQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAK
CXZvaWQqCQkJCQlhZGRyZXNzOwkJCQkJCSAKCVVJbnQxNgkJCQkJbnVtQnl0ZXM7CQkJCQkgCgl9
IFN5c1BrdFJlYWRNZW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1DbWRUeXBlKglTeXNQ
a3RSZWFkTWVtQ21kUHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVhZE1lbVJzcFR5cGUgewoJ
VUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgkgCgl9IFN5c1BrdFJlYWRN
ZW1Sc3BUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1Sc3BUeXBlKglTeXNQa3RSZWFkTWVtUnNw
UHRyOwoKCiAKIAogCgoKCnR5cGVkZWYgc3RydWN0IFN5c1BrdFdyaXRlTWVtQ21kVHlwZSB7CglV
SW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAKCXZvaWQqCQkJCQlhZGRyZXNz
OwkJCQkJCSAKCVVJbnQxNgkJCQludW1CeXRlczsJCQkJCSAKCSAKCX0gU3lzUGt0V3JpdGVNZW1D
bWRUeXBlOwp0eXBlZGVmIFN5c1BrdFdyaXRlTWVtQ21kVHlwZSoJU3lzUGt0V3JpdGVNZW1DbWRQ
dHI7Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RXcml0ZU1lbVJzcFR5cGUgewoJVUludDgJY29tbWFu
ZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdFdyaXRlTWVtUnNwVHlwZTsKdHlw
ZWRlZiBTeXNQa3RXcml0ZU1lbVJzcFR5cGUqCVN5c1BrdFdyaXRlTWVtUnNwUHRyOwoKCiAKIAog
CgogCgogCiAKIAoKCgogCiAKIAoKCgoKIAogCiAKCgoKIAogCiAKCiAKCgogCiAKIAoKCgp0eXBl
ZGVmIHN0cnVjdCBTeXNQa3RSUENQYXJhbUluZm8gewoJVUludDggYnlSZWY7CQkJCQkJCSAKCVVJ
bnQ4CXNpemU7CQkJCQkJCQkgCglVSW50MTYJZGF0YVsxXTsJCQkJCQkgCgl9IFN5c1BrdFJQQ1Bh
cmFtVHlwZTsKCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSUENUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7
CVVJbnQ4CV9maWxsZXIgOwkJCQkJIAoJVUludDE2CXRyYXBXb3JkOwkJCQkJIAoJVUludDMyCXJl
c3VsdEQwOwkJCQkJIAoJVUludDMyCXJlc3VsdEEwOwkJCQkJIAoJVUludDE2CW51bVBhcmFtczsJ
CQkJCSAKCSAKCVN5c1BrdFJQQ1BhcmFtVHlwZQlwYXJhbVsxXTsKCX0gU3lzUGt0UlBDVHlwZTsK
CgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVVSVVw
ZENtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAK
ICAJVUludDE2CXJvd0J5dGVzOwkJCQkJCSAKCVVJbnQxNglmcm9tWTsJCQkJCQkJIAoJVUludDE2
CWZyb21YOwkJCQkJCQkgCglVSW50MTYJdG9ZOwkJCQkJCQkJIAoJVUludDE2CXRvWDsJCQkJCQkJ
CSAKCVVJbnQxNgloZWlnaHQ7CQkJCQkJCSAKCVVJbnQxNgl3aWR0aDsJCQkJCQkJIAoJCiAgIAog
IAlVSW50MTYJcGl4ZWxzOwkJCQkJCQkgCgkKCX0gU3lzUGt0UmVtb3RlVUlVcGRDbWRUeXBlOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVtb3RlRXZ0Q21kVHlwZSB7CglVSW50OAljb21tYW5k
OwlVSW50OAlfZmlsbGVyIDsJCQkJCQkgCgogICAKICAgCiAgIEJvb2xlYW4gCXBlbkRvd247CQkJ
CQkJCSAKCVVJbnQ4IAlwYWRkaW5nMTsKICAJSW50MTYJCXBlblg7CQkJCQkJCQkgCiAgCUludDE2
CQlwZW5ZOwkJCQkJCQkJIAogIAkKICAJQm9vbGVhbglrZXlQcmVzczsJCQkJCQkgCglVSW50OCAJ
cGFkZGluZzI7CiAgCVVJbnQxNglrZXlNb2RpZmllcnM7CQkJCQkgCiAgCVdDaGFyCQlrZXlBc2Np
aTsJCQkJCQkgCiAgCVVJbnQxNglrZXlDb2RlOwkJCQkJCQkgCiAgCQoJfSBTeXNQa3RSZW1vdGVF
dnRDbWRUeXBlOwoKCiAKIAogCgoKCgogCiAKIAogCiAKIAoKCgoKIAogCiAKCgoKdHlwZWRlZiBz
dHJ1Y3QgU3lzUGt0Q29tbUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7
CQkJCQkJCQkgCglCb29sZWFuCQkJCQkJc2V0OwkJCQkJIAoJVUludDggCQkJCQkJcGFkZGluZzsK
CVVJbnQzMgkJCQkJCWJhdWRSYXRlOwkJCSAKCVVJbnQzMgkJCQkJCWZsYWdzOwkJCQkgCgl9IFN5
c1BrdENvbW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdENvbW1DbWRUeXBlICpTeXNQa3RDb21tQ21k
UHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0Q29tbVJzcFR5cGUgewoJVUludDgJY29tbWFuZDsJ
VUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCglVSW50MzIJCQkJCQliYXVkUmF0ZTsJCQkgCglVSW50
MzIJCQkJCQlmbGFnczsJCQkJIAoJfSBTeXNQa3RDb21tUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RD
b21tUnNwVHlwZSAqU3lzUGt0Q29tbVJzcFB0cjsKCgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0
eXBlZGVmIHN0cnVjdCBTeXNQa3RHcmVtbGluc0NtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUlu
dDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAKICBVSW50MTYJYWN0aW9uOwogIFVJbnQ4CWRhdGFb
MzJdOwoJCgl9IFN5c1BrdEdyZW1saW5zQ21kVHlwZTsKCQogCgoKCgogCiAKIAoKCgp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RGaW5kQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVy
IDsJCQkJCQkJCSAKCglVSW50MzIJZmlyc3RBZGRyOwkJCQkJCQkJIAoJVUludDMyCWxhc3RBZGRy
OwkJCQkJCQkJIAoJVUludDE2CW51bUJ5dGVzOwkJCQkJCQkJIAoJQm9vbGVhbgljYXNlSW5zZW5z
aXRpdmU7CQkJCQkJIAoJVUludDggCXBhZGRpbmc7Cgl9IFN5c1BrdEZpbmRDbWRUeXBlOwp0eXBl
ZGVmIFN5c1BrdEZpbmRDbWRUeXBlKgkJCVN5c1BrdEZpbmRDbWRQdHI7Cgp0eXBlZGVmIHN0cnVj
dCBTeXNQa3RGaW5kUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJ
CQkJCSAKCiAgVUludDMyCQlhZGRyOwkJCQkJCQkJCQkgCiAgQm9vbGVhbglmb3VuZDsJCQkJCQkJ
CQkgCiAgVUludDggCQlwYWRkaW5nOwoJCgl9IFN5c1BrdEZpbmRSc3BUeXBlOwp0eXBlZGVmIFN5
c1BrdEZpbmRSc3BUeXBlKgkJCVN5c1BrdEZpbmRSc3BQdHI7CgoKIAogCiAKIAogCiAKCgoKCgoK
IAogCiAKIAoKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RDaGVja3N1bVR5cGUgewoJVUludDgJY29t
bWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgoJVUludDMyCWZpcnN0QWRkcjsJCQkJCQkJ
CSAKCVVJbnQxNgludW1CeXRlczsJCQkJCQkJCSAKCVVJbnQxNglzZWVkOwkJCQkJCQkJCQkgCglV
SW50MTYJY2hlY2tzdW07CQkJCQkJCQkgCgl9IFN5c1BrdENoZWNrc3VtVHlwZTsKdHlwZWRlZiBT
eXNQa3RDaGVja3N1bVR5cGUqCVN5c1BrdENoZWNrc3VtUHRyOwoKCiAKIAogCiAKIAoKCgoKIAog
CiAKCgoKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVNc2dDbWRUeXBlIHsKCVVJ
bnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJIAoJfSBTeXNQa3RSZW1vdGVN
c2dDbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlbW90ZU1zZ0NtZFR5cGUgKlN5c1BrdFJlbW90ZU1z
Z0NtZFB0cjsKCgoKCgogCgoKIyA0MjYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9TeXN0ZW0vU3lzdGVtUGt0LmgiCgoKCgoKIyAxMTQgIi4uL1NyY1NoYXJlZC9QYWxtLmgi
IDIKCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt
L1RleHRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKdHlwZWRlZiBVSW50OCBDaGFyRW5jb2RpbmdUeXBlOwoK
IAogCiAKdHlwZWRlZiBVSW50MTYgVHJhbnNsaXRPcFR5cGU7CgogCgoKCgoKCgogCiAKCgoKCQkJ
CQkJCQkJCSAKCiAKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQlpb1NyY1N0YXRlWzMyIF07
CglVSW50OAkJaW9Ec3RTdGF0ZVszMiBdOwp9IFR4dENvbnZlcnRTdGF0ZVR5cGU7CgogCgoKCgoK
IAogCiAKCgoKCgogCiAKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAogCiAKIAogCgoKIAoKCiAKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKIAogCiAKCgoKCgoKIAoKCgojIDQwOSAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9UZXh0TWdyLmgiCgoK
CiMgMTE2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCQkKCgkgCgoJCQoKIAogCiAKCQkK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQ29udHJvbC5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50OCB1c2Fi
bGUJCQkJOjE7CSAKCVVJbnQ4IGVuYWJsZWQJCQkJOjE7CSAKCVVJbnQ4IHZpc2libGUJCQkJOjE7
CSAKCVVJbnQ4IG9uCQkJCQkJOjE7CSAKCVVJbnQ4IGxlZnRBbmNob3IJCQk6MTsJIAoJICAgICAg
ICAgICAgICAgICAgICAgICAgCQkgCiAgIFVJbnQ4IGZyYW1lCQkJCQk6MzsKCVVJbnQ4IGRyYXdu
QXNTZWxlY3RlZAk6MTsJIAoJCQkJCQkJCQkJCSAKCVVJbnQ4IGdyYXBoaWNhbAkJCToxOwkgCglV
SW50OCB2ZXJ0aWNhbAkJCQk6MTsJIAoJVUludDggcmVzZXJ2ZWQJCQkJOjU7Cn0gQ29udHJvbEF0
dHJUeXBlOwoKCmVudW0gY29udHJvbFN0eWxlcyB7YnV0dG9uQ3RsLCBwdXNoQnV0dG9uQ3RsLCBj
aGVja2JveEN0bCwgcG9wdXBUcmlnZ2VyQ3RsLAoJCQkJCQkgIHNlbGVjdG9yVHJpZ2dlckN0bCwg
cmVwZWF0aW5nQnV0dG9uQ3RsLCBzbGlkZXJDdGwsCgkJCQkJCSAgZmVlZGJhY2tTbGlkZXJDdGwg
fTsKdHlwZWRlZiBlbnVtIGNvbnRyb2xTdHlsZXMgQ29udHJvbFN0eWxlVHlwZTsKCmVudW0gYnV0
dG9uRnJhbWVzIHtub0J1dHRvbkZyYW1lLCBzdGFuZGFyZEJ1dHRvbkZyYW1lLCBib2xkQnV0dG9u
RnJhbWUsCgkJCQkJCSByZWN0YW5nbGVCdXR0b25GcmFtZX07CnR5cGVkZWYgZW51bSBidXR0b25G
cmFtZXMgQnV0dG9uRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IENvbnRyb2xUeXBlIHsKCVVJ
bnQxNgkJCQkJaWQ7CglSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwoJQ2hhciAqCQkJCSAgIHRleHQ7
CQoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwoJQ29udHJvbFN0eWxlVHlwZQkJc3R5bGU7CglGb250
SUQJCQkJCWZvbnQ7CglVSW50OAkJCQkJCWdyb3VwOwoJVUludDggCQkJCQlyZXNlcnZlZDsKfSBD
b250cm9sVHlwZTsKCnR5cGVkZWYgQ29udHJvbFR5cGUgKiBQYWxtX0NvbnRyb2xQdHIgOwkJCQkg
CgoKIAogCgp0eXBlZGVmIHN0cnVjdCBHcmFwaGljQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlp
ZDsKCVJlY3RhbmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQliaXRtYXBJRDsJCQkgCglE
bVJlc0lECQkJCQlzZWxlY3RlZEJpdG1hcElEOwkgCglDb250cm9sQXR0clR5cGUJCWF0dHI7CglD
b250cm9sU3R5bGVUeXBlCQlzdHlsZTsKCUZvbnRJRAkJCQkJdW51c2VkOwoJVUludDgJCQkJCQln
cm91cDsKCVVJbnQ4IAkJCQkJcmVzZXJ2ZWQ7Cn0gR3JhcGhpY0NvbnRyb2xUeXBlOwoKCiAKIAoK
dHlwZWRlZiBzdHJ1Y3QgU2xpZGVyQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlpZDsKCVJlY3Rh
bmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQl0aHVtYklEOwkJCSAKCURtUmVzSUQJCQkJ
CWJhY2tncm91bmRJRDsJIAoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwkJCQkgCglDb250cm9sU3R5
bGVUeXBlCQlzdHlsZTsJCQkgCglVSW50OAkJCQkJCXJlc2VydmVkOwkJCglJbnQxNgkJCQkJCW1p
blZhbHVlOwoJSW50MTYJCQkJCQltYXhWYWx1ZTsKCUludDE2CQkJCQkJcGFnZVNpemU7CglJbnQx
NgkJCQkJCXZhbHVlOwoJTWVtUHRyCQkJCQlhY3RpdmVTbGlkZXJQOwp9IFNsaWRlckNvbnRyb2xU
eXBlOwoKCiAKIAogCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIHZvaWQgQ3RsRHJhd0NvbnRyb2wg
KENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsRXJhc2VD
b250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIEN0
bEhpZGVDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2
b2lkIEN0bFNob3dDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4
dGVybiBCb29sZWFuIEN0bEVuYWJsZWQgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJ
CQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0RW5hYmxlZCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQ
LCBCb29sZWFuIHVzYWJsZSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VXNhYmxlIChD
b250cm9sVHlwZSAqY29udHJvbFAsIEJvb2xlYW4gdXNhYmxlKQoJCQkJCQkJICA7CgpleHRlcm4g
SW50MTYgQ3RsR2V0VmFsdWUgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAg
OwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VmFsdWUgKENvbnRyb2xUeXBlICpjb250cm9sUCwgSW50MTYg
bmV3VmFsdWUpCgkJCQkJCQkgIDsKCmV4dGVybiBjb25zdCBDaGFyICpDdGxHZXRMYWJlbCAoY29u
c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBDdGxTZXRM
YWJlbCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBjb25zdCBDaGFyICpuZXdMYWJlbCkKCQkJCQkJ
CSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0R3JhcGhpY3MgKENvbnRyb2xUeXBlICpjdGxQLAoJRG1S
ZXNJRCBuZXdCaXRtYXBJRCwgRG1SZXNJRCBuZXdTZWxlY3RlZEJpdG1hcElEKQoJCQkJCQkJICA7
CgpleHRlcm4gdm9pZCBDdGxTZXRTbGlkZXJWYWx1ZXMoQ29udHJvbFR5cGUgKmN0bFAsIGNvbnN0
IFVJbnQxNiAqbWluVmFsdWVQLCBjb25zdCBVSW50MTYgKm1heFZhbHVlUCwKCQkJCQljb25zdCBV
SW50MTYgKnBhZ2VTaXplUCwgY29uc3QgVUludDE2ICp2YWx1ZVApCgkJCQkJCQkgIDsKCmV4dGVy
biB2b2lkIEN0bEdldFNsaWRlclZhbHVlcyhjb25zdCBDb250cm9sVHlwZSAqY3RsUCwgVUludDE2
ICptaW5WYWx1ZVAsIFVJbnQxNiAqbWF4VmFsdWVQLAoJCQkJCVVJbnQxNiAqcGFnZVNpemVQLCBV
SW50MTYgKnZhbHVlUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsSGl0Q29udHJvbCAoY29u
c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBDdGxI
YW5kbGVFdmVudCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBFdmVudFR5cGUgKnBFdmVudCkKCQkJ
CQkJCSAgOwoKZXh0ZXJuIEJvb2xlYW4gQ3RsVmFsaWRhdGVQb2ludGVyIChjb25zdCBDb250cm9s
VHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiBDb250cm9sVHlwZSAqQ3RsTmV3Q29u
dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKIAlDb250cm9sU3R5bGVUeXBlIHN0eWxl
LCBjb25zdCBDaGFyICp0ZXh0UCwgCglDb29yZCB4LCBDb29yZCB5LCBDb29yZCB3aWR0aCwgQ29v
cmQgaGVpZ2h0LCAKCUZvbnRJRCBmb250LCBVSW50OCBncm91cCwgQm9vbGVhbiBsZWZ0QW5jaG9y
KQoJCQkJCQkJICA7CgpleHRlcm4gR3JhcGhpY0NvbnRyb2xUeXBlICpDdGxOZXdHcmFwaGljQ29u
dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJvbFN0eWxlVHlwZSBzdHls
ZSwgRG1SZXNJRCBiaXRtYXBJRCwgRG1SZXNJRCBzZWxlY3RlZEJpdG1hcElELCAKICAgQ29vcmQg
eCwgQ29vcmQgeSwgQ29vcmQgd2lkdGgsIENvb3JkIGhlaWdodCwgCiAgIFVJbnQ4IGdyb3VwLCBC
b29sZWFuIGxlZnRBbmNob3IpCgkJCQkJCQkgIDsKCmV4dGVybiBTbGlkZXJDb250cm9sVHlwZSAq
Q3RsTmV3U2xpZGVyQ29udHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJv
bFN0eWxlVHlwZSBzdHlsZSwgRG1SZXNJRCB0aHVtYklELCBEbVJlc0lEIGJhY2tncm91bmRJRCwg
CiAgIENvb3JkIHgsIENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIFVJbnQxNiBt
aW5WYWx1ZSwgVUludDE2IG1heFZhbHVlLAogICBVSW50MTYgcGFnZVNpemUsIFVJbnQxNiB2YWx1
ZSkKCQkJCQkJCSAgOwoKCn0KCgoKCiMgMTI4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJ
CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxl
cnQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA0MSAiLi4vU3JjU2hhcmVkL1Bh
bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxlcnQuaCIKCgoKIyAxMzEgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1VJL0ZpZWxkLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCmVudW0g
anVzdGlmaWNhdGlvbnMge2xlZnRBbGlnbiwgY2VudGVyQWxpZ24sIHJpZ2h0QWxpZ259Owp0eXBl
ZGVmIGVudW0ganVzdGlmaWNhdGlvbnMgSnVzdGlmaWNhdGlvblR5cGU7CgoKCgp0eXBlZGVmIGVu
dW0geyB1bmRvTm9uZSwgdW5kb1R5cGluZywgdW5kb0JhY2tzcGFjZSwgdW5kb0RlbGV0ZSwKCQkJ
CQl1bmRvUGFzdGUsIHVuZG9DdXQsIHVuZG9JbnB1dCB9IFVuZG9Nb2RlOwoKdHlwZWRlZiBzdHJ1
Y3QgewoJVW5kb01vZGUJCW1vZGU7CglVSW50OCAJCXJlc2VydmVkOwoJVUludDE2CQlzdGFydDsK
CVVJbnQxNgkJZW5kOwoJVUludDE2CQlidWZmZXJMZW47CglDaGFyIAkJCSpidWZmZXI7Cgl9IEZp
ZWxkVW5kb1R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCToxOwkgCglV
SW50MTYgdmlzaWJsZQkJCToxOwkgCglVSW50MTYgZWRpdGFibGUJCToxOwkgCglVSW50MTYgc2lu
Z2xlTGluZQkJOjE7CSAKCVVJbnQxNiBoYXNGb2N1cyAgICAgIDoxOyAgICAKCVVJbnQxNiBkeW5h
bWljU2l6ZQk6MTsgICAgCglVSW50MTYgaW5zUHRWaXNpYmxlCToxOwkgCglVSW50MTYgZGlydHkJ
CQk6MTsJIAoJVUludDE2IHVuZGVybGluZWQJCToyOwkgCglVSW50MTYganVzdGlmaWNhdGlvbgk6
MjsJIAoJVUludDE2IGF1dG9TaGlmdAkJOjE7CSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJOjE7CSAK
CVVJbnQxNiBudW1lcmljCQkJOjE7CSAKfSBGaWVsZEF0dHJUeXBlOwoKdHlwZWRlZiBGaWVsZEF0
dHJUeXBlICpGaWVsZEF0dHJQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgVUludDE2CXN0YXJ0OwkJ
CSAKICBVSW50MTYJbGVuZ3RoOwkJCSAKfSBMaW5lSW5mb1R5cGU7Cgp0eXBlZGVmIExpbmVJbmZv
VHlwZSAqTGluZUluZm9QdHI7CgoKdHlwZWRlZiBzdHJ1Y3QgRmllbGRUeXBlIHsKCVVJbnQxNgkJ
CQlpZDsKCVJlY3RhbmdsZVR5cGUJCXJlY3Q7CglGaWVsZEF0dHJUeXBlCQlhdHRyOwoJQ2hhciAJ
CQkJCSp0ZXh0OwkJCQkJIAoJTWVtSGFuZGxlCQkJdGV4dEhhbmRsZTsJCQkJIAoJTGluZUluZm9Q
dHIJCQlsaW5lczsKCVVJbnQxNgkJCQl0ZXh0TGVuOwoJVUludDE2CQkJCXRleHRCbG9ja1NpemU7
CglVSW50MTYJCQkJbWF4Q2hhcnM7CglVSW50MTYJCQkJc2VsRmlyc3RQb3M7CglVSW50MTYJCQkJ
c2VsTGFzdFBvczsKCVVJbnQxNgkJCQlpbnNQdFhQb3M7CglVSW50MTYJCQkJaW5zUHRZUG9zOwoJ
Rm9udElECQkJCWZvbnRJRDsKCVVJbnQ4IAkJCQlyZXNlcnZlZDsKfSBGaWVsZFR5cGU7CgoKdHlw
ZWRlZiBGaWVsZFR5cGUgKkZpZWxkUHRyOwkJCQkJIAoKCiAKIAogCgojIDI3MyAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZpZWxkLmgiCgoKCiMgMTMyICIuLi9TcmNT
aGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9VSS9GaW5kLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsKCVVJbnQxNgkJCWFwcENhcmRObzsJCQkgCglMb2NhbElECQkJYXBwRGJJRDsJCQkJIAoJ
Qm9vbGVhbgkJCWZvdW5kSW5DYWxsZXI7CQkgCglVSW50OCAJCQlyZXNlcnZlZDsKCglVSW50MTYJ
CQlkYkNhcmRObzsJCQkgCglMb2NhbElECQkJZGJJRDsJCQkJCSAKCVVJbnQxNiAJCQlyZWNvcmRO
dW07CQkJIAoJVUludDE2CQkJbWF0Y2hQb3M7CQkJIAoJVUludDE2CQkJbWF0Y2hGaWVsZE51bTsJ
CSAKCVVJbnQzMgkJCW1hdGNoQ3VzdG9tOwkJIAoJfSBGaW5kTWF0Y2hUeXBlOwoKdHlwZWRlZiBG
aW5kTWF0Y2hUeXBlICpGaW5kTWF0Y2hQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CgoJIAoJVUludDE2
CQkJZGJBY2Nlc01vZGU7CQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCUJvb2xlYW4JCQlt
b3JlOwkJCQkJIAoJQ2hhcgkJCQlzdHJBc1R5cGVkIFsxNiArMV07CSAKCUNoYXIJCQkJc3RyVG9G
aW5kIFsxNiArMV07CSAKCVVJbnQ4IAkJCXJlc2VydmVkMTsKCgoJIAoJIAoJIAoJVUludDE2CQkJ
bnVtTWF0Y2hlczsJCQkgCglVSW50MTYJCQlsaW5lTnVtYmVyOwkJCSAKCUJvb2xlYW4JCQljb250
aW51YXRpb247CQkgCglCb29sZWFuCQkJc2VhcmNoZWRDYWxsZXI7CSAKCglMb2NhbElECQkJY2Fs
bGVyQXBwRGJJRDsJCSAKCVVJbnQxNgkJCWNhbGxlckFwcENhcmRObzsJIAoKCUxvY2FsSUQJCQlh
cHBEYklEOwkJCQkgCglVSW50MTYJCQlhcHBDYXJkTm87CQkJIAoJCglCb29sZWFuCQkJbmV3U2Vh
cmNoOwkJCSAKCVVJbnQ4IAkJCXJlc2VydmVkMjsKCURtU2VhcmNoU3RhdGVUeXBlCXNlYXJjaFN0
YXRlOwkgCglGaW5kTWF0Y2hUeXBlCW1hdGNoIFs5IF07Cn0gRmluZFBhcmFtc1R5cGU7Cgp0eXBl
ZGVmIEZpbmRQYXJhbXNUeXBlICpGaW5kUGFyYW1zUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgewoJ
SW50MTYJCQkJc2VhcmNoU3RyTGVuOwkJIAoJVUludDE2CQkJZGJDYXJkTm87CQkJIAoJTG9jYWxJ
RAkJCWRiSUQ7CQkJCQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCVVJbnQxNgkJCW1hdGNo
UG9zOwkJCSAKCVVJbnQxNgkJCW1hdGNoRmllbGROdW07CQkgCglVSW50MzIJCQltYXRjaEN1c3Rv
bTsJCSAKCX0gR29Ub1BhcmFtc1R5cGU7Cgp0eXBlZGVmIEdvVG9QYXJhbXNUeXBlICpHb1RvUGFy
YW1zUHRyOwoKCiAKIAogCgojIDEyMiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1VJL0ZpbmQuaCIKCgoKIyAxMzMgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvRm9ybS5oIiAxCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9VSS9MaXN0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCQk6MTsJCSAKCVVJbnQxNiBlbmFibGVkCQkJ
CToxOwkJIAoJVUludDE2IHZpc2libGUJCQkJOjE7CQkgCiAgIFVJbnQxNiBwb3BwZWRVcAkJCTox
OyAgICAgCSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJCToxOwkJIAoJVUludDE2IHNlYXJjaAkJCQk6
MTsJCSAKICAgVUludDE2IHJlc2VydmVkCQkJOjI7Cn0gTGlzdEF0dHJUeXBlOwoKCiAKdHlwZWRl
ZiB2b2lkIExpc3REcmF3RGF0YUZ1bmNUeXBlIChJbnQxNiBpdGVtTnVtLCBSZWN0YW5nbGVUeXBl
ICpib3VuZHMsIAoJQ2hhciAqKml0ZW1zVGV4dCk7CgkKdHlwZWRlZiBMaXN0RHJhd0RhdGFGdW5j
VHlwZSAqTGlzdERyYXdEYXRhRnVuY1B0cjsKCgp0eXBlZGVmIHN0cnVjdCBMaXN0VHlwZSB7CglV
SW50MTYJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwogICBMaXN0QXR0clR5cGUJ
CQlhdHRyOwogICBDaGFyICoJCQkJCSppdGVtc1RleHQ7CiAgIEludDE2CQkJCQkJbnVtSXRlbXM7
ICAgICAgICAJCSAKICAgSW50MTYgCSAgCQkJCWN1cnJlbnRJdGVtOyAgICAgCQkgCiAgIEludDE2
ICAgCQkJCQl0b3BJdGVtOyAgICAgICAgIAkJIAogICBGb250SUQgICAgICAgICAgIAkJZm9udDsJ
CQkJCQkgCglVSW50OCAJCQkJCXJlc2VydmVkOwoJV2luSGFuZGxlICAgCQkJcG9wdXBXaW47CQkJ
CSAKICAgTGlzdERyYXdEYXRhRnVuY1B0cglkcmF3SXRlbXNDYWxsYmFjazsJIAp9IExpc3RUeXBl
OwoKdHlwZWRlZiBMaXN0VHlwZSAqIFBhbG1fTGlzdFB0ciA7CgoKIAogCiAKCmV4dGVybiAiQyIg
ewoKCmV4dGVybiB2b2lkIExzdERyYXdMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsK
CmV4dGVybiB2b2lkIExzdEVyYXNlTGlzdCAoTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl
eHRlcm4gSW50MTYgTHN0R2V0U2VsZWN0aW9uIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJ
CQkgIDsKCmV4dGVybiBDaGFyICogTHN0R2V0U2VsZWN0aW9uVGV4dCAoY29uc3QgTGlzdFR5cGUg
Kmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBMc3RIYW5k
bGVFdmVudCAoTGlzdFR5cGUgKmxpc3RQLCBjb25zdCBFdmVudFR5cGUgKmV2ZW50UCkKCQkJCQkJ
CSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0SGVpZ2h0IChMaXN0VHlwZSAqbGlzdFAsIEludDE2IHZp
c2libGVJdGVtcykKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0UG9zaXRpb24gKExpc3RU
eXBlICpsaXN0UCwgQ29vcmQgeCwgQ29vcmQgeSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0
U2V0U2VsZWN0aW9uIChMaXN0VHlwZSAqbGlzdFAsIEludDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsK
CmV4dGVybiB2b2lkIExzdFNldExpc3RDaG9pY2VzIChMaXN0VHlwZSAqbGlzdFAsIENoYXIgKipp
dGVtc1RleHQsIEludDE2IG51bUl0ZW1zKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRE
cmF3RnVuY3Rpb24gKExpc3RUeXBlICpsaXN0UCwgTGlzdERyYXdEYXRhRnVuY1B0ciBmdW5jKQoJ
CQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRUb3BJdGVtIChMaXN0VHlwZSAqbGlzdFAsIElu
dDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIExzdE1ha2VJdGVtVmlzaWJsZSAo
TGlzdFR5cGUgKmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg
THN0R2V0TnVtYmVyT2ZJdGVtcyAoY29uc3QgTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl
eHRlcm4gSW50MTYgTHN0UG9wdXBMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4
dGVybiBCb29sZWFuIExzdFNjcm9sbExpc3QoTGlzdFR5cGUgKmxpc3RQLCBXaW5EaXJlY3Rpb25U
eXBlIGRpcmVjdGlvbiwgSW50MTYgaXRlbUNvdW50KQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg
THN0R2V0VmlzaWJsZUl0ZW1zIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4
dGVybiBFcnIgTHN0TmV3TGlzdCAodm9pZCAqKmZvcm1QUCwgVUludDE2IGlkLCAKCUNvb3JkIHgs
IENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIAoJRm9udElEIGZvbnQsIEludDE2
IHZpc2libGVJdGVtcywgSW50MTYgdHJpZ2dlcklkKQoJCQkJCQkJICA7CgoKCgp9CgoKCiMgMjUg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCiMgMSAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0geyBzY2xVcEFycm93LCBzY2xEb3du
QXJyb3csIHNjbFVwUGFnZSwgc2NsRG93blBhZ2UsIHNjbENhciB9IAoJU2Nyb2xsQmFyUmVnaW9u
VHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CQkgCglVSW50MTYg
dmlzaWJsZQkJCToxOwkJIAoJVUludDE2IGhpbGlnaHRlZAkJOjE7CQkgCglVSW50MTYgc2hvd24J
CQk6MTsJCSAKCVVJbnQxNiBhY3RpdmVSZWdpb24JOjQ7CQkgCn0gU2Nyb2xsQmFyQXR0clR5cGU7
CgoKdHlwZWRlZiBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSB7CglSZWN0YW5nbGVUeXBlCQlib3VuZHM7
CglVSW50MTYJCQkJaWQ7CglTY3JvbGxCYXJBdHRyVHlwZQlhdHRyOwoJSW50MTYJCQkJCXZhbHVl
OwoJSW50MTYJCQkJCW1pblZhbHVlOwoJSW50MTYJCQkJCW1heFZhbHVlOwoJSW50MTYJCQkJCXBh
Z2VTaXplOwoJSW50MTYJCQkJCXBlblBvc0luQ2FyOwoJSW50MTYJCQkJCXNhdmVQb3M7Cn0gU2Ny
b2xsQmFyVHlwZTsKCnR5cGVkZWYgU2Nyb2xsQmFyVHlwZSAqU2Nyb2xsQmFyUHRyOwoKIyA3NCAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIgoKCgoK
IyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0Zvcm0uaCIgMgoK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVGFibGUuaCIgMQog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAplbnVtIHRhYmxlSXRlbVN0
eWxlcyB7IGNoZWNrYm94VGFibGVJdGVtLCAKICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21U
YWJsZUl0ZW0sIAogICAgICAgICAgICAgICAgICAgICAgIGRhdGVUYWJsZUl0ZW0sIAogICAgICAg
ICAgICAgICAgICAgICAgIGxhYmVsVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIG51
bWVyaWNUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBUcmlnZ2VyVGFibGVJ
dGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRleHRUYWJsZUl0ZW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dFdpdGhOb3RlVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRp
bWVUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgbmFycm93VGV4dFRhYmxlSXRlbQog
ICAgICAgICAgICAgICAgICAgICAgIH07CnR5cGVkZWYgZW51bSB0YWJsZUl0ZW1TdHlsZXMgVGFi
bGVJdGVtU3R5bGVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVRhYmxlSXRlbVN0eWxlVHlwZQlp
dGVtVHlwZTsJCQogICBGb250SUQJCQkJCWZvbnRJRDsJCSAKCUludDE2CQkJCQkJaW50VmFsdWU7
CglDaGFyICogIAkJCQkJcHRyOwp9IFRhYmxlSXRlbVR5cGU7CnR5cGVkZWYgVGFibGVJdGVtVHlw
ZSAqVGFibGVJdGVtUHRyOwoKCiAKdHlwZWRlZiB2b2lkIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAg
CgkJKHZvaWQgKnRhYmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIFJlY3RhbmdsZVR5cGUg
KmJvdW5kcyk7Cgp0eXBlZGVmIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAqVGFibGVEcmF3SXRlbUZ1
bmNQdHI7CgoKIAp0eXBlZGVmIEVyciBUYWJsZUxvYWREYXRhRnVuY1R5cGUgCgkJKHZvaWQgKnRh
YmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIEJvb2xlYW4gZWRpdGFibGUsIAoJCU1lbUhh
bmRsZSAqIGRhdGFILCBJbnQxNiAqZGF0YU9mZnNldCwgSW50MTYgKmRhdGFTaXplLCBGaWVsZFB0
ciBmbGQpOwoKdHlwZWRlZiBUYWJsZUxvYWREYXRhRnVuY1R5cGUgKlRhYmxlTG9hZERhdGFGdW5j
UHRyOwoKCiAKdHlwZWRlZglCb29sZWFuIFRhYmxlU2F2ZURhdGFGdW5jVHlwZQoJCSh2b2lkICp0
YWJsZVAsIEludDE2IHJvdywgSW50MTYgY29sdW1uKTsKCnR5cGVkZWYgVGFibGVTYXZlRGF0YUZ1
bmNUeXBlICpUYWJsZVNhdmVEYXRhRnVuY1B0cjsKCnR5cGVkZWYgc3RydWN0IHsKCUNvb3JkCQkJ
CQkJCXdpZHRoOwkJCQkJIAoJVUludDE2CQkJCQkJcmVzZXJ2ZWQxIAkJOiA1OwoJVUludDE2CQkJ
CQkJbWFza2VkCQkJOiAxOyAgIAoJVUludDE2CQkJCQkJZWRpdEluZGljYXRvcgk6IDE7CglVSW50
MTYJCQkJCQl1c2FibGUgCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDg7CglDb29y
ZAkJCQkJCQlzcGFjaW5nOwkJCQkJIAoJVGFibGVEcmF3SXRlbUZ1bmNQdHIJCWRyYXdDYWxsYmFj
azsKCVRhYmxlTG9hZERhdGFGdW5jUHRyCQlsb2FkRGF0YUNhbGxiYWNrOwoJVGFibGVTYXZlRGF0
YUZ1bmNQdHIJCXNhdmVEYXRhQ2FsbGJhY2s7Cgp9IFRhYmxlQ29sdW1uQXR0clR5cGU7CgoKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglDb29yZAkJCQkJCQloZWlnaHQ7CQkJCQkg
CglVSW50MzIJCQkJCQlkYXRhOwoKCVVJbnQxNgkJCQkJCXJlc2VydmVkMQkJOiA3OwoJVUludDE2
CQkJCQkJdXNhYmxlCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDQ7CglVSW50MTYJ
CQkJCQltYXNrZWQJCQk6IDE7ICAgCglVSW50MTYJCQkJCQlpbnZhbGlkCQkJOiAxOwkgCglVSW50
MTYgCQkJCQkJc3RhdGljSGVpZ2h0CTogMTsgICAKCVVJbnQxNgkJCQkJCXNlbGVjdGFibGUJCTog
MTsKCglVSW50MTYJCQkJCQlyZXNlcnZlZDM7Cgp9IFRhYmxlUm93QXR0clR5cGU7CgoKdHlwZWRl
ZiBzdHJ1Y3QgewoJVUludDE2IAkJCQkJCXZpc2libGU6MTsJCQkgCiAgIFVJbnQxNiAJCQkJCQll
ZGl0YWJsZToxOwkJCSAKCVVJbnQxNiAJCQkJCQllZGl0aW5nOjE7CQkJIAoJVUludDE2IAkJCQkJ
CXNlbGVjdGVkOjE7CQkJIAoJVUludDE2CQkJCQkJaGFzU2Nyb2xsQmFyOjE7CSAKCVVJbnQxNgkJ
CQkJCXJlc2VydmVkOjExOwp9IFRhYmxlQXR0clR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgVGFibGVU
eXBlIHsKCVVJbnQxNgkJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJCWJvdW5kczsKICAgVGFi
bGVBdHRyVHlwZQkJCQlhdHRyOwoJSW50MTYJCQkJCQkJbnVtQ29sdW1uczsKCUludDE2CQkJCQkJ
CW51bVJvd3M7CglJbnQxNgkJCQkJCQljdXJyZW50Um93OwoJSW50MTYJCQkJCQkJY3VycmVudENv
bHVtbjsKCUludDE2CQkJCQkJCXRvcFJvdzsKCVRhYmxlQ29sdW1uQXR0clR5cGUgKgljb2x1bW5B
dHRyczsKICAgVGFibGVSb3dBdHRyVHlwZSAqICAgIAlyb3dBdHRyczsKCVRhYmxlSXRlbVB0cgkJ
CQlpdGVtczsKCUZpZWxkVHlwZQkJCQkJY3VycmVudEZpZWxkOwp9IFRhYmxlVHlwZTsKCnR5cGVk
ZWYgVGFibGVUeXBlICpUYWJsZVB0cjsKCgogCiAKIAojIDMxNyAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1VJL1RhYmxlLmgiCgoKCiMgMjcgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCgoKCgoKCiAKCgogCgoKCgogCmVudW0g
YWxlcnRUeXBlcyB7CglpbmZvcm1hdGlvbkFsZXJ0LAoJY29uZmlybWF0aW9uQWxlcnQsCgl3YXJu
aW5nQWxlcnQsCgllcnJvckFsZXJ0IH07CnR5cGVkZWYgZW51bSBhbGVydFR5cGVzIFBhbG1fQWxl
cnRUeXBlIDsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJYWxlcnRUeXBlOwoJVUludDE2CQlo
ZWxwUnNjSUQ7CglVSW50MTYJCW51bUJ1dHRvbnM7CglVSW50MTYJCWRlZmF1bHRCdXR0b247Cn0g
QWxlcnRUZW1wbGF0ZVR5cGU7CgoKIAplbnVtIGZvcm1PYmplY3RzIHsKCWZybUZpZWxkT2JqLAoJ
ZnJtQ29udHJvbE9iaiwKCWZybUxpc3RPYmosCglmcm1UYWJsZU9iaiwKCWZybUJpdG1hcE9iaiwK
CWZybUxpbmVPYmosCglmcm1GcmFtZU9iaiwKCWZybVJlY3RhbmdsZU9iaiwKCWZybUxhYmVsT2Jq
LAoJZnJtVGl0bGVPYmosCglmcm1Qb3B1cE9iaiwKCWZybUdyYWZmaXRpU3RhdGVPYmosCglmcm1H
YWRnZXRPYmosCglmcm1TY3JvbGxCYXJPYmogfTsKdHlwZWRlZiBlbnVtIGZvcm1PYmplY3RzIEZv
cm1PYmplY3RLaW5kOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJCQk6MTsJIAoJ
VUludDE2IHJlc2VydmVkCQk6MTU7CSAKfSBGb3JtT2JqQXR0clR5cGU7CgoKIAoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CSAKCVVJbnQxNiBleHRlbmRlZAkJOjE7
CSAKCVVJbnQxNiB2aXNpYmxlCQkJOjE7CSAKCVVJbnQxNiByZXNlcnZlZAkJOjEzOwkgCn0gRm9y
bUdhZGdldEF0dHJUeXBlOwoKc3RydWN0IEZvcm1UeXBlOyAgCnR5cGVkZWYgQm9vbGVhbiAoRm9y
bUdhZGdldEhhbmRsZXJUeXBlKSAoc3RydWN0IEZvcm1HYWRnZXRUeXBlICpnYWRnZXRQLCBVSW50
MTYgY21kLCB2b2lkICpwYXJhbVApOwoKc3RydWN0IEZvcm1HYWRnZXRUeXBlIHsKCVVJbnQxNgkJ
CQkJCWlkOwoJRm9ybUdhZGdldEF0dHJUeXBlCQlhdHRyOwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0
OwoJY29uc3Qgdm9pZCAqCQkJICAgZGF0YTsKCUZvcm1HYWRnZXRIYW5kbGVyVHlwZQkqaGFuZGxl
cjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRm9ybUdhZGdldFR5cGUgRm9ybUdhZGdldFR5cGU7CgoKIAoK
dHlwZWRlZiBzdHJ1Y3QgewoJRm9ybU9iakF0dHJUeXBlCQkJYXR0cjsKCVBvaW50VHlwZQkJCQkJ
cG9zOwoJVUludDE2CQkgICAgIAkJCXJzY0lEOwp9IEZvcm1CaXRtYXBUeXBlOwoKCnR5cGVkZWYg
c3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7CglQb2ludFR5cGUJICAgICAgCQlwb2lu
dDE7CSAgIAoJUG9pbnRUeXBlCSAgICAgIAkJcG9pbnQyOwkgICAKfSBGb3JtTGluZVR5cGU7CgoK
dHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglGb3JtT2JqQXR0clR5cGUJCQlhdHRy
OwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0OwoJVUludDE2ICAgICAJCQkJCWZyYW1lVHlwZTsKfSBG
b3JtRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7
CglSZWN0YW5nbGVUeXBlCQkJCXJlY3Q7Cn0gRm9ybVJlY3RhbmdsZVR5cGU7CgoKdHlwZWRlZiBz
dHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglQb2ludFR5cGUJCQkJCXBvczsKCUZvcm1PYmpBdHRy
VHlwZQkJCWF0dHI7CglGb250SUQJCQkJCQlmb250SUQ7CglVSW50OCAJCQkJCQlyZXNlcnZlZDsK
CUNoYXIgKgkJCQkJCXRleHQ7Cn0gRm9ybUxhYmVsVHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglS
ZWN0YW5nbGVUeXBlCQkJCXJlY3Q7CglDaGFyICoJCQkJCQl0ZXh0Owp9IEZvcm1UaXRsZVR5cGU7
CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJY29udHJvbElEOwoJVUludDE2CQkJCQkJ
bGlzdElEOwp9IEZvcm1Qb3B1cFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJUG9pbnRUeXBlCQkJ
CQlwb3M7Cn0gRnJtR3JhZmZpdGlTdGF0ZVR5cGU7CgoKdHlwZWRlZiB1bmlvbiB7Cgl2b2lkICog
ICAgICAgICAgICAJCXB0cjsKCUZpZWxkVHlwZSAqCQkJCQlmaWVsZDsKCUNvbnRyb2xUeXBlICoJ
CQkJY29udHJvbDsKCUdyYXBoaWNDb250cm9sVHlwZSAqCQlncmFwaGljQ29udHJvbDsKCVNsaWRl
ckNvbnRyb2xUeXBlICoJCXNsaWRlckNvbnRyb2w7CglMaXN0VHlwZQkqCQkJCQlsaXN0OwoJVGFi
bGVUeXBlICoJCQkJCXRhYmxlOwoJRm9ybUJpdG1hcFR5cGUgKgkJCWJpdG1hcDsKIAogCiAKCUZv
cm1MYWJlbFR5cGUgKgkJCWxhYmVsOwoJRm9ybVRpdGxlVHlwZSAqCQkJdGl0bGU7CQoJRm9ybVBv
cHVwVHlwZSAqCQkJcG9wdXA7CglGcm1HcmFmZml0aVN0YXRlVHlwZSAqCWdyZlN0YXRlOwoJRm9y
bUdhZGdldFR5cGUgKgkJCWdhZGdldDsKCVNjcm9sbEJhclR5cGUgKgkJCXNjcm9sbEJhcjsKfSBG
b3JtT2JqZWN0VHlwZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglGb3JtT2JqZWN0S2luZAkJCQlv
YmplY3RUeXBlOwoJVUludDggCQkJCQkJcmVzZXJ2ZWQ7CglGb3JtT2JqZWN0VHlwZQkJCQlvYmpl
Y3Q7Cn0gRm9ybU9iakxpc3RUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJ
CQk6MTsJIAoJVUludDE2IGVuYWJsZWQJCQk6MTsJIAoJVUludDE2IHZpc2libGUJCQk6MTsJIAoJ
VUludDE2IGRpcnR5CQkJOjE7CSAKCVVJbnQxNiBzYXZlQmVoaW5kCQk6MTsJIAoJVUludDE2IGdy
YWZmaXRpU2hpZnQJOjE7ICAgIAoJVUludDE2IGdsb2JhbHNBdmFpbGFibGU6MTsgIAoJCQkJCQkJ
CQkJIAoJVUludDE2IGRvaW5nRGlhbG9nCToxOwkgCglVSW50MTYgZXhpdERpYWxvZwkJOjE7CSAK
CVVJbnQxNiByZXNlcnZlZAkJOjc7CSAKCVVJbnQxNiByZXNlcnZlZDI7CQkJCSAKfSBGb3JtQXR0
clR5cGU7CgoKdHlwZWRlZiBCb29sZWFuIEZvcm1FdmVudEhhbmRsZXJUeXBlIChFdmVudFR5cGUg
KmV2ZW50UCk7Cgp0eXBlZGVmIEZvcm1FdmVudEhhbmRsZXJUeXBlICpGb3JtRXZlbnRIYW5kbGVy
UHRyOwoKc3RydWN0IEZvcm1UeXBlIHsKCVdpbmRvd1R5cGUJCQkJCXdpbmRvdzsKCVVJbnQxNgkJ
CQkJCWZvcm1JZDsKICAgRm9ybUF0dHJUeXBlCQkJCWF0dHI7CglXaW5IYW5kbGUJICAgICAgIAkJ
Yml0c0JlaGluZEZvcm07CglGb3JtRXZlbnRIYW5kbGVyVHlwZSAqCWhhbmRsZXI7CglVSW50MTYJ
CQkJCQlmb2N1czsKCVVJbnQxNgkJCQkJCWRlZmF1bHRCdXR0b247CglVSW50MTYJCQkJCQloZWxw
UnNjSWQ7CglVSW50MTYJCQkJCQltZW51UnNjSWQ7CglVSW50MTYJCQkJCQludW1PYmplY3RzOwoJ
Rm9ybU9iakxpc3RUeXBlICoJCQlvYmplY3RzOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgRm9ybVR5cGUg
Rm9ybVR5cGU7CnR5cGVkZWYgRm9ybVR5cGUgKkZvcm1QdHI7CgoKIAogCiAKIAogCnR5cGVkZWYg
c3RydWN0IEZvcm1BY3RpdmVTdGF0ZVR5cGUgewoJVUludDE2CWRhdGFbMTFdOwoJfSBGb3JtQWN0
aXZlU3RhdGVUeXBlOwoJCgogCnR5cGVkZWYgQm9vbGVhbiBGb3JtQ2hlY2tSZXNwb25zZUZ1bmNU
eXBlIAoJCShJbnQxNiBidXR0b24sIENoYXIgKiBhdHRlbXB0KTsKCnR5cGVkZWYgRm9ybUNoZWNr
UmVzcG9uc2VGdW5jVHlwZSAqRm9ybUNoZWNrUmVzcG9uc2VGdW5jUHRyOwoKCiAKIAogCgoKCgoK
CgogCiAKIAogCiAKCiMgNTA4ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv
VUkvRm9ybS5oIgoKCgojIDEzNSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAoJ
CQogCiAKIAogCgkJCiAKIAoJCQogCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y
bS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKIAogCiAKCgoKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAK
IAoKCgoJCQkJCQkJCQkJCQkJCQkgCgoKCgoKIAoKIAoKIAogCiAKCgoKCgogCiAKIAoKCgogCiAK
IAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKIAoKCgoKCgoKCgoK
CgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgogCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgoKCiAKIAogCiMgMzIw
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIK
CgoKIyAxNTIgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgogCgoJIAplbnVtIGNsaXBib2FyZEZv
cm1hdHMgeyBjbGlwYm9hcmRUZXh0LCBjbGlwYm9hcmRJbmssIGNsaXBib2FyZEJpdG1hcCB9Owp0
eXBlZGVmIGVudW0gY2xpcGJvYXJkRm9ybWF0cyBDbGlwYm9hcmRGb3JtYXRUeXBlOwoKCgoJCgkJ
CQkJCQkJIAoJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5j
c1Bydi9EZWJ1Z1Bydi5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgogCgoKdHlwZWRlZiBzdHJ1Y3QgQnJlYWtwb2ludFR5cGUgewoJTWVtUHRyCQlhZGRyOwkJCQkJ
CQkJCSAKCUJvb2xlYW4JZW5hYmxlZDsJCQkJCQkJCSAKCUJvb2xlYW4JaW5zdGFsbGVkOwkJCQkJ
CQkgCgl9IEJyZWFrcG9pbnRUeXBlOwoKCgoKCiAKCgogCgogCiAKIAogCiAKIAoKCgp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RTdGF0ZUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxl
ciA7CQkJCQkJCQkgCgl9IFN5c1BrdFN0YXRlQ21kQ21kVHlwZTsKdHlwZWRlZiBTeXNQa3RTdGF0
ZUNtZENtZFR5cGUqCVN5c1BrdFN0YXRlQ21kQ21kUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lz
UGt0U3RhdGVSc3BUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJ
IAoJQm9vbGVhbgkJCQkJCXJlc2V0dGVkOwkJCSAKCVVJbnQ4IAkJCQkJCXJlc2VydmVkMTsKCVVJ
bnQxNgkJCQkJCWV4Y2VwdGlvbklkOwkJIAoJCQkJCQkJCQkJCQkJCQkgCglNNjhLUmVnc1R5cGUJ
CQkJcmVnOwkJCQkJIAoJVUludDE2CQkJCQkJaW5zdFsxNSBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCQkJCSAKCUJyZWFrcG9pbnRUeXBlCQkJCWJwWyg1ICArMSkgXTsJIAoKCXZvaWQJ
CQkJCQkJKnN0YXJ0QWRkcjsJCQkgCgl2b2lkCQkJCQkJCSplbmRBZGRyOwkJCSAKCWNoYXIJCQkJ
CQkJbmFtZVszMiBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJVUludDgJCQkJCQkJdHJhcFRhYmxlUmV2OwkJIAoJCQkJCQkJCQkJCQkJCQkgCglV
SW50OCAJCQkJCQlyZXNlcnZlZDI7Cgl9IFN5c1BrdFN0YXRlUnNwVHlwZTsKdHlwZWRlZiBTeXNQ
a3RTdGF0ZVJzcFR5cGUqCVN5c1BrdFN0YXRlUnNwUHRyOwoKIAogCiAKIAogCiAKIAp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RSdG5OYW1lQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmls
bGVyIDsJCQkJCQkJIAoJdm9pZAkJCQkJCQkqYWRkcmVzczsJCSAKCX0gU3lzUGt0UnRuTmFtZUNt
ZFR5cGU7CnR5cGVkZWYgU3lzUGt0UnRuTmFtZUNtZFR5cGUqCVN5c1