public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
@ 2002-10-10 11:30 hubicka
  0 siblings, 0 replies; 4+ messages in thread
From: hubicka @ 2002-10-10 11:30 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, obrien, sobomax

Synopsis: Can't compile XFree86-4.2.0 with gcc 3.1

State-Changed-From-To: open->closed
State-Changed-By: hubicka
State-Changed-When: Thu Oct 10 11:30:09 2002
State-Changed-Why:
    FIxed in 3.1.1 according to audit

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7200


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
@ 2002-07-15  2:36 Maxim Sobolev
  0 siblings, 0 replies; 4+ messages in thread
From: Maxim Sobolev @ 2002-07-15  2:36 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/7200; it has been noted by GNATS.

From: Maxim Sobolev <sobomax@FreeBSD.org>
To: Reichelt <reichelt@igpm.rwth-aachen.de>
Cc: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, gcc-bugs@gcc.gnu.org,
   obrien@FreeBSD.org
Subject: Re: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
Date: Mon, 15 Jul 2002 12:30:47 +0300

 Reichelt wrote:
 > 
 > Hi,
 > 
 > the bug seems to be fixed in gcc 3.1.1 20020708 (prerelease).
 
 Yes, David O'Brien already applied the fix to FreeBSD.
 
 > 
 > BTW, one might need to add "-march=pentium-mmx" to the command line to
 > trigger the bug in gcc 3.1.
 
 Not quite sure. I was successfully triggering the bug with just `cc -c
 -O -fPIC translate.i'.
 
 Thanks!
 
 -Maxim


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
@ 2002-07-15  2:26 Reichelt
  0 siblings, 0 replies; 4+ messages in thread
From: Reichelt @ 2002-07-15  2:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/7200; it has been noted by GNATS.

From: Reichelt <reichelt@igpm.rwth-aachen.de>
To: gcc-gnats@gcc.gnu.org, sobomax@FreeBSD.org, nobody@gcc.gnu.org,
        gcc-bugs@gcc.gnu.org
Cc: obrien@FreeBSD.org
Subject: Re: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
Date: Mon, 15 Jul 2002 11:56:48 +0200

 Hi,
 
 the bug seems to be fixed in gcc 3.1.1 20020708 (prerelease).
 
 BTW, one might need to add "-march=pentium-mmx" to the command line to
 trigger the bug in gcc 3.1.
 
 Greetings,
 Volker Reichelt
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7200
 
 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* c/7200: Can't compile XFree86-4.2.0 with gcc 3.1
@ 2002-07-03  9:56 sobomax
  0 siblings, 0 replies; 4+ messages in thread
From: sobomax @ 2002-07-03  9:56 UTC (permalink / raw)
  To: gcc-gnats; +Cc: obrien


>Number:         7200
>Category:       c
>Synopsis:       Can't compile XFree86-4.2.0 with gcc 3.1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 03 09:56:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Maxim Sobolev
>Release:        gcc (GCC) 3.1 [FreeBSD] 20020509 (prerelease)
>Organization:
>Environment:
$ uname -a
FreeBSD notebook 5.0-CURRENT FreeBSD 5.0-CURRENT #43: Fri Jun 28 14:12:22 EEST 2
002     root@notebook:/usr/src/sys/i386/compile/NOTEBOOK  i386
>Description:
When I am trying to compile XFree86-4.2.0 on FreeBSD 5.0-CURRENT system
with gcc 3.1 base system compiler I am getting the following error
message:

rm -f translate.o
LD_LIBRARY_PATH=../../../../exports/lib cc -c -pipe -O -mpreferred-stack-boundar
y=2 -march=pentium-mmx  -ansi -pedantic -Dasm=__asm -Wall -Wpointer-arith   -I..
/../../../exports/include -I../../../../exports/include/X11 -I../../../../includ
e/extensions            -I../../../../extras/Mesa/src -I../../../../lib/GL/dri
-I../../../.. -I../../../../exports/include   -DCSRG_BASED  -DFUNCPROTO=15 -DNAR
ROWPROTO -DXTHREADS   -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWDAPI    -DMALLOC_0_RETURN
S_NULL -DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING -DGLX_USE_DLOPEN -DGLX_USE_MESA
		-DUSE_X86_ASM -DUSE_MMX_ASM       -ansi -pedantic -Dasm=__asm -W
all -Wpointer-arith  -I../../../../exports/include -I../../../../exports/include
/X11 -I../../../../include/extensions           -I../../../../extras/Mesa/src -I
../../../../lib/GL/dri  -I../../../.. -I../../../../exports/include   -DCSRG_BAS
ED  -DFUNCPROTO=15 -DNARROWPROTO -DXTHREADS   -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWD
API    -DMALLOC_0_RETURNS_NULL -DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING -DGLX_U
SE_DLOPEN -DGLX_USE_MESA                -DUSE_X86_ASM -DUSE_MMX_ASM        -fPIC
 translate.c
In file included from translate.c:779:
../../../../extras/Mesa/src/trans_tmp.h: In function `trans_1_GLdouble_1ub_elt':

../../../../extras/Mesa/src/trans_tmp.h:124: could not find a spill register
(insn 96 94 97 (set (subreg:SF (reg:QI 75) 0)
	(plus:SF (reg:SF 8 st(0) [76])
	    (reg:SF 9 st(1) [80]))) 525 {*fop_sf_comm_nosse} (insn_list 87 (nil)
)
    (expr_list:REG_DEAD (reg:SF 8 st(0) [76])
	(nil)))
../../../../extras/Mesa/src/trans_tmp.h:124: Internal compiler error in failed_r
eload, at reload1.c:5050
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
*** Error code 1

Stop in /tmp/portbuild/usr/ports/x11-servers/XFree86-4-Server/work/xc/lib/GL/mes
a/src.
*** Error code 1


Pre-processed translate.c is attached, the bug could be triggered as follows:

$ cc -c -O -fPIC translate.i
In file included from translate.c:779:
../../../../extras/Mesa/src/trans_tmp.h: In function `trans_1_GLdouble_1ub_elt':

../../../../extras/Mesa/src/trans_tmp.h:124: could not find a spill register
(insn 96 94 97 (set (subreg:SF (reg:QI 75) 0)
	(plus:SF (reg:SF 8 st(0) [76])
	    (reg:SF 9 st(1) [80]))) 525 {*fop_sf_comm_nosse} (insn_list 87 (nil)
)
    (expr_list:REG_DEAD (reg:SF 8 st(0) [76])
	(nil)))
../../../../extras/Mesa/src/trans_tmp.h:124: Internal compiler error in failed_r
eload, at reload1.c:5050
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
$ cc -c -O -fPIC translate.i
>Fix:

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

IyAxICJ0cmFuc2xhdGUuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+Igoj
IDEgInRyYW5zbGF0ZS5jIgojIDM0ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvZ2xoZWFkZXIuaCIgMQojIDUxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvZ2xoZWFkZXIuaCIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwojIDQyICIvdXNy
L2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwoj
IDQzICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDIgMwojIDYyICIvdXNyL2luY2x1ZGUvYXNzZXJ0
LmgiIDMKCnZvaWQgX19hc3NlcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY29u
c3QgY2hhciAqKTsKCiMgNTIgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5o
IiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDUyICIvdXNyL2luY2x1ZGUvY3R5
cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9ydW5ldHlwZS5oIiAxIDMKIyA0NCAiL3Vzci9pbmNs
dWRlL3J1bmV0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMwoj
IDgxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFf
bGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMjkgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIg
Mwp0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSkgX19pbnQ2NF90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSkg
X191aW50NjRfdDsKIyAxNDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMwp0eXBlZGVm
IHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0
eXBlZGVmIHNob3J0IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VpbnQxNl90
Owp0eXBlZGVmIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7
Cgp0eXBlZGVmIGludCBfX2ludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnRwdHJf
dDsKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgX19pbnRfbGVhc3QxNl90Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IF9fdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IF9faW50X2xl
YXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50X2xlYXN0MzJfdDsKdHlwZWRlZiBf
X2ludDY0X3QgX19pbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9fdWludDY0X3QgX191aW50X2xlYXN0
NjRfdDsKCnR5cGVkZWYgaW50IF9faW50X2Zhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dWludF9mYXN0OF90Owp0eXBlZGVmIGludCBfX2ludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191aW50X2Zhc3QxNl90Owp0eXBlZGVmIGludCBfX2ludF9mYXN0MzJfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX191aW50X2Zhc3QzMl90Owp0eXBlZGVmIF9faW50NjRfdCBfX2ludF9m
YXN0NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdWludF9mYXN0NjRfdDsKCnR5cGVkZWYgX19p
bnQ2NF90IF9faW50bWF4X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3VpbnRtYXhfdDsKIyAxODkg
Ii91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMwp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBj
aGFyIF9fbWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX21ic3RhdGVMOwp9IF9fbWJz
dGF0ZV90OwojIDQ1ICIvdXNyL2luY2x1ZGUvcnVuZXR5cGUuaCIgMiAzCgoKdHlwZWRlZiBpbnQg
cnVuZV90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKdHlwZWRlZiBpbnQg
d2NoYXJfdDsKIyA2NyAiL3Vzci9pbmNsdWRlL3J1bmV0eXBlLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIHJ1bmVfdCBtaW47CiAgICAgICAgcnVuZV90IG1heDsKICAgICAgICBydW5lX3Qg
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnR5cGVzOwp9IF9SdW5lRW50cnk7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgaW50IG5yYW5nZXM7CiAgICAgICAgX1J1bmVFbnRyeSAqcmFuZ2Vz
Owp9IF9SdW5lUmFuZ2U7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY2hhciBtYWdpY1s4XTsK
ICAgICAgICBjaGFyIGVuY29kaW5nWzMyXTsKCiAgICAgICAgcnVuZV90ICgqc2dldHJ1bmUpKGNv
bnN0IGNoYXIgKiwgc2l6ZV90LCBjaGFyIGNvbnN0ICoqKTsKICAgICAgICBpbnQgKCpzcHV0cnVu
ZSkocnVuZV90LCBjaGFyICosIHNpemVfdCwgY2hhciAqKik7CiAgICAgICAgcnVuZV90IGludmFs
aWRfcnVuZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBydW5ldHlwZVsoMSA8PDggKV07CiAgICAg
ICAgcnVuZV90IG1hcGxvd2VyWygxIDw8OCApXTsKICAgICAgICBydW5lX3QgbWFwdXBwZXJbKDEg
PDw4ICldOwoKCgoKCgogICAgICAgIF9SdW5lUmFuZ2UgcnVuZXR5cGVfZXh0OwogICAgICAgIF9S
dW5lUmFuZ2UgbWFwbG93ZXJfZXh0OwogICAgICAgIF9SdW5lUmFuZ2UgbWFwdXBwZXJfZXh0OwoK
ICAgICAgICB2b2lkICp2YXJpYWJsZTsKICAgICAgICBpbnQgdmFyaWFibGVfbGVuOwp9IF9SdW5l
TG9jYWxlOwoKCgpleHRlcm4gX1J1bmVMb2NhbGUgX0RlZmF1bHRSdW5lTG9jYWxlOwpleHRlcm4g
X1J1bmVMb2NhbGUgKl9DdXJyZW50UnVuZUxvY2FsZTsKIyA1MyAiL3Vzci9pbmNsdWRlL2N0eXBl
LmgiIDIgMwojIDY5ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwoKaW50IGlzYWxudW0oaW50KTsK
aW50IGlzYWxwaGEoaW50KTsKaW50IGlzY250cmwoaW50KTsKaW50IGlzZGlnaXQoaW50KTsKaW50
IGlzZ3JhcGgoaW50KTsKaW50IGlzbG93ZXIoaW50KTsKaW50IGlzcHJpbnQoaW50KTsKaW50IGlz
cHVuY3QoaW50KTsKaW50IGlzc3BhY2UoaW50KTsKaW50IGlzdXBwZXIoaW50KTsKaW50IGlzeGRp
Z2l0KGludCk7CmludCB0b2xvd2VyKGludCk7CmludCB0b3VwcGVyKGludCk7CgoKaW50IGRpZ2l0
dG9pbnQoaW50KTsKaW50IGlzYXNjaWkoaW50KTsKaW50IGlzYmxhbmsoaW50KTsKaW50IGlzaGV4
bnVtYmVyKGludCk7CmludCBpc2lkZW9ncmFtKGludCk7CmludCBpc251bWJlcihpbnQpOwppbnQg
aXNwaG9ub2dyYW0oaW50KTsKaW50IGlzcnVuZShpbnQpOwppbnQgaXNzcGVjaWFsKGludCk7Cmlu
dCB0b2FzY2lpKGludCk7CgoKIyAxMjYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgp1bnNpZ25l
ZCBsb25nIF9fX3J1bmV0eXBlKGludCk7CmludCBfX190b2xvd2VyKGludCk7CmludCBfX190b3Vw
cGVyKGludCk7CgojIDE0NyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKc3RhdGljIF9faW5saW5l
IGludApfX21hc2tydW5lKGludCBfYywgdW5zaWduZWQgbG9uZyBfZikKewogICAgICAgIHJldHVy
biAoKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkgPyBfX19ydW5ldHlwZShfYykgOgogICAgICAg
ICAgICAgICAgX0N1cnJlbnRSdW5lTG9jYWxlLT5ydW5ldHlwZVtfY10pICYgX2Y7Cn0KCnN0YXRp
YyBfX2lubGluZSBpbnQKX19pc3R5cGUoaW50IF9jLCB1bnNpZ25lZCBsb25nIF9mKQp7CiAgICAg
ICAgcmV0dXJuICghIV9fbWFza3J1bmUoX2MsIF9mKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBpbnQK
X19pc2N0eXBlKGludCBfYywgdW5zaWduZWQgbG9uZyBfZikKewogICAgICAgIHJldHVybiAoX2Mg
PCAwIHx8IF9jID49ICgxIDw8OCApKSA/IDAgOgogICAgICAgICAgICAgICAhIShfRGVmYXVsdFJ1
bmVMb2NhbGUucnVuZXR5cGVbX2NdICYgX2YpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50Cl9fdG91
cHBlcihpbnQgX2MpCnsKICAgICAgICByZXR1cm4gKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkg
PyBfX190b3VwcGVyKF9jKSA6CiAgICAgICAgICAgICAgIF9DdXJyZW50UnVuZUxvY2FsZS0+bWFw
dXBwZXJbX2NdOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50Cl9fdG9sb3dlcihpbnQgX2MpCnsKICAg
ICAgICByZXR1cm4gKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkgPyBfX190b2xvd2VyKF9jKSA6
CiAgICAgICAgICAgICAgIF9DdXJyZW50UnVuZUxvY2FsZS0+bWFwbG93ZXJbX2NdOwp9CiMgNTMg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBj
aGFyIF9faW5maW5pdHlbXTsKIyA0NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50
IHNpZ25nYW07CgoKZW51bSBmZHZlcnNpb24ge2ZkbGlibV9pZWVlID0gLTEsIGZkbGlibV9zdmlk
LCBmZGxpYm1feG9wZW4sIGZkbGlibV9wb3NpeH07CiMgNjAgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKZXh0ZXJuIGVudW0gZmR2ZXJzaW9uIF9mZGxpYl92ZXJzaW9uOwojIDcwICIvdXNyL2luY2x1
ZGUvbWF0aC5oIiAzCnN0cnVjdCBleGNlcHRpb24gewogICAgICAgIGludCB0eXBlOwogICAgICAg
IGNoYXIgKm5hbWU7CiAgICAgICAgZG91YmxlIGFyZzE7CiAgICAgICAgZG91YmxlIGFyZzI7CiAg
ICAgICAgZG91YmxlIHJldHZhbDsKfTsKIyAxMDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoK
CmRvdWJsZSBhY29zKGRvdWJsZSk7CmRvdWJsZSBhc2luKGRvdWJsZSk7CmRvdWJsZSBhdGFuKGRv
dWJsZSk7CmRvdWJsZSBhdGFuMihkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBjb3MoZG91YmxlKTsK
ZG91YmxlIHNpbihkb3VibGUpOwpkb3VibGUgdGFuKGRvdWJsZSk7Cgpkb3VibGUgY29zaChkb3Vi
bGUpOwpkb3VibGUgc2luaChkb3VibGUpOwpkb3VibGUgdGFuaChkb3VibGUpOwoKZG91YmxlIGV4
cChkb3VibGUpOwpkb3VibGUgZnJleHAoZG91YmxlLCBpbnQgKik7CmRvdWJsZSBsZGV4cChkb3Vi
bGUsIGludCk7CmRvdWJsZSBsb2coZG91YmxlKTsKZG91YmxlIGxvZzEwKGRvdWJsZSk7CmRvdWJs
ZSBtb2RmKGRvdWJsZSwgZG91YmxlICopOwoKZG91YmxlIHBvdyhkb3VibGUsIGRvdWJsZSk7CmRv
dWJsZSBzcXJ0KGRvdWJsZSk7Cgpkb3VibGUgY2VpbChkb3VibGUpOwpkb3VibGUgZmFicyhkb3Vi
bGUpOwpkb3VibGUgZmxvb3IoZG91YmxlKTsKZG91YmxlIGZtb2QoZG91YmxlLCBkb3VibGUpOwoK
CmRvdWJsZSBlcmYoZG91YmxlKTsKZG91YmxlIGVyZmMoZG91YmxlKTsKZG91YmxlIGdhbW1hKGRv
dWJsZSk7CmRvdWJsZSBoeXBvdChkb3VibGUsIGRvdWJsZSk7CmludCBpc2luZihkb3VibGUpOwpp
bnQgaXNuYW4oZG91YmxlKTsKaW50IGZpbml0ZShkb3VibGUpOwpkb3VibGUgajAoZG91YmxlKTsK
ZG91YmxlIGoxKGRvdWJsZSk7CmRvdWJsZSBqbihpbnQsIGRvdWJsZSk7CmRvdWJsZSBsZ2FtbWEo
ZG91YmxlKTsKZG91YmxlIHkwKGRvdWJsZSk7CmRvdWJsZSB5MShkb3VibGUpOwpkb3VibGUgeW4o
aW50LCBkb3VibGUpOwoKCmRvdWJsZSBhY29zaChkb3VibGUpOwpkb3VibGUgYXNpbmgoZG91Ymxl
KTsKZG91YmxlIGF0YW5oKGRvdWJsZSk7CmRvdWJsZSBjYnJ0KGRvdWJsZSk7CmRvdWJsZSBsb2di
KGRvdWJsZSk7CmRvdWJsZSBuZXh0YWZ0ZXIoZG91YmxlLCBkb3VibGUpOwpkb3VibGUgcmVtYWlu
ZGVyKGRvdWJsZSwgZG91YmxlKTsKZG91YmxlIHNjYWxiKGRvdWJsZSwgZG91YmxlKTsKZG91Ymxl
IHRnYW1tYShkb3VibGUpOwoKCmludCBtYXRoZXJyKHN0cnVjdCBleGNlcHRpb24gKik7CgoKCgoK
ZG91YmxlIHNpZ25pZmljYW5kKGRvdWJsZSk7CgoKCgpkb3VibGUgY29weXNpZ24oZG91YmxlLCBk
b3VibGUpOwppbnQgaWxvZ2IoZG91YmxlKTsKZG91YmxlIHJpbnQoZG91YmxlKTsKZG91YmxlIHNj
YWxibihkb3VibGUsIGludCk7CgoKCgpkb3VibGUgZHJlbShkb3VibGUsIGRvdWJsZSk7CmRvdWJs
ZSBleHBtMShkb3VibGUpOwpkb3VibGUgbG9nMXAoZG91YmxlKTsKIyAxOTIgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDMKZmxvYXQgYWNvc2YoZmxvYXQpOwpmbG9hdCBhc2luZihmbG9hdCk7CmZsb2F0
IGF0YW5mKGZsb2F0KTsKZmxvYXQgYXRhbjJmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IGNvc2YoZmxv
YXQpOwpmbG9hdCBzaW5mKGZsb2F0KTsKZmxvYXQgdGFuZihmbG9hdCk7CgpmbG9hdCBjb3NoZihm
bG9hdCk7CmZsb2F0IHNpbmhmKGZsb2F0KTsKZmxvYXQgdGFuaGYoZmxvYXQpOwoKZmxvYXQgZXhw
ZihmbG9hdCk7CmZsb2F0IGZyZXhwZihmbG9hdCwgaW50ICopOwpmbG9hdCBsZGV4cGYoZmxvYXQs
IGludCk7CmZsb2F0IGxvZ2YoZmxvYXQpOwpmbG9hdCBsb2cxMGYoZmxvYXQpOwpmbG9hdCBtb2Rm
ZihmbG9hdCwgZmxvYXQgKik7CgpmbG9hdCBwb3dmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IHNxcnRm
KGZsb2F0KTsKCmZsb2F0IGNlaWxmKGZsb2F0KTsKZmxvYXQgZmFic2YoZmxvYXQpOwpmbG9hdCBm
bG9vcmYoZmxvYXQpOwpmbG9hdCBmbW9kZihmbG9hdCwgZmxvYXQpOwoKZmxvYXQgZXJmZihmbG9h
dCk7CmZsb2F0IGVyZmNmKGZsb2F0KTsKZmxvYXQgZ2FtbWFmKGZsb2F0KTsKZmxvYXQgaHlwb3Rm
KGZsb2F0LCBmbG9hdCk7CmludCBpc25hbmYoZmxvYXQpOwppbnQgZmluaXRlZihmbG9hdCk7CmZs
b2F0IGowZihmbG9hdCk7CmZsb2F0IGoxZihmbG9hdCk7CmZsb2F0IGpuZihpbnQsIGZsb2F0KTsK
ZmxvYXQgbGdhbW1hZihmbG9hdCk7CmZsb2F0IHkwZihmbG9hdCk7CmZsb2F0IHkxZihmbG9hdCk7
CmZsb2F0IHluZihpbnQsIGZsb2F0KTsKCmZsb2F0IGFjb3NoZihmbG9hdCk7CmZsb2F0IGFzaW5o
ZihmbG9hdCk7CmZsb2F0IGF0YW5oZihmbG9hdCk7CmZsb2F0IGNicnRmKGZsb2F0KTsKZmxvYXQg
bG9nYmYoZmxvYXQpOwpmbG9hdCBuZXh0YWZ0ZXJmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IHJlbWFp
bmRlcmYoZmxvYXQsIGZsb2F0KTsKZmxvYXQgc2NhbGJmKGZsb2F0LCBmbG9hdCk7CgoKCgpmbG9h
dCBzaWduaWZpY2FuZGYoZmxvYXQpOwoKCgoKCmZsb2F0IGNvcHlzaWduZihmbG9hdCwgZmxvYXQp
OwppbnQgaWxvZ2JmKGZsb2F0KTsKZmxvYXQgcmludGYoZmxvYXQpOwpmbG9hdCBzY2FsYm5mKGZs
b2F0LCBpbnQpOwoKCgoKZmxvYXQgZHJlbWYoZmxvYXQsIGZsb2F0KTsKZmxvYXQgZXhwbTFmKGZs
b2F0KTsKZmxvYXQgbG9nMXBmKGZsb2F0KTsKIyAyNzUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK
CiMgNTggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCgojIDEgIi91
c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvX3Bvc2l4LmgiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvbGlt
aXRzLmgiIDIgMwojIDk1ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbWFjaGluZS9saW1pdHMuaCIgMSAzCiMgOTYgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDEgMwojIDk4ICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDIgMwojIDYwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2xoZWFk
ZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgNjEgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAgICAgICAg
aW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1b3Q7CiAg
ICAgICAgbG9uZyByZW07Cn0gbGRpdl90OwojIDg5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7CgoKCnZvaWQgYWJvcnQodm9pZCkgX19hdHRyaWJ1dGVf
XygoX19ub3JldHVybl9fKSk7CmludCBhYnMoaW50KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18p
KTsKaW50IGF0ZXhpdCh2b2lkICgqKSh2b2lkKSk7CmRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7
CmludCBhdG9pKGNvbnN0IGNoYXIgKik7CmxvbmcgYXRvbChjb25zdCBjaGFyICopOwp2b2lkICpi
c2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsCiAgICAgICAgICAgIHNp
emVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwp2b2lkICpjYWxsb2Mo
c2l6ZV90LCBzaXplX3QpOwpkaXZfdCBkaXYoaW50LCBpbnQpIF9fYXR0cmlidXRlX18oKF9fY29u
c3RfXykpOwp2b2lkIGV4aXQoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKdm9p
ZCBmcmVlKHZvaWQgKik7CmNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwpsb25nIGxhYnMobG9u
ZykgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7CmxkaXZfdCBsZGl2KGxvbmcsIGxvbmcpIF9f
YXR0cmlidXRlX18oKF9fY29uc3RfXykpOwp2b2lkICptYWxsb2Moc2l6ZV90KTsKdm9pZCBxc29y
dCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgICAgICBpbnQgKCopKGNvbnN0IHZvaWQg
KiwgY29uc3Qgdm9pZCAqKSk7CmludCByYW5kKHZvaWQpOwp2b2lkICpyZWFsbG9jKHZvaWQgKiwg
c2l6ZV90KTsKdm9pZCBzcmFuZCh1bnNpZ25lZCk7CmRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciAq
LCBjaGFyICoqKTsKbG9uZyBzdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwp1bnNp
Z25lZCBsb25nCiAgICAgICAgIHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpp
bnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CgppbnQgbWJsZW4oY29uc3QgY2hhciAqLCBzaXplX3Qp
OwpzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCB3
Y3RvbWIoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIg
Kiwgc2l6ZV90KTsKc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl
X3QpOwoKCmV4dGVybiBjb25zdCBjaGFyICpfbWFsbG9jX29wdGlvbnM7CmV4dGVybiB2b2lkICgq
X21hbGxvY19tZXNzYWdlKShjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIsIGNvbnN0IGNo
YXIgKnAzLCBjb25zdCBjaGFyICpwNCk7CgppbnQgcHV0ZW52KGNvbnN0IGNoYXIgKik7CmludCBz
ZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Cgpkb3VibGUgZHJhbmQ0OCh2
b2lkKTsKZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnRbM10pOwpsb25nIGpyYW5kNDgodW5z
aWduZWQgc2hvcnRbM10pOwp2b2lkIGxjb25nNDgodW5zaWduZWQgc2hvcnRbN10pOwpsb25nIGxy
YW5kNDgodm9pZCk7CmxvbmcgbXJhbmQ0OCh2b2lkKTsKbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNo
b3J0WzNdKTsKdW5zaWduZWQgc2hvcnQKICAgICAgICAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0WzNd
KTsKdm9pZCBzcmFuZDQ4KGxvbmcpOwoKdm9pZCAqYWxsb2NhKHNpemVfdCk7CgpfX3VpbnQzMl90
CiAgICAgICAgIGFyYzRyYW5kb20odm9pZCk7CnZvaWQgYXJjNHJhbmRvbV9hZGRyYW5kb20odW5z
aWduZWQgY2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7
CgoKCgpjaGFyICpnZXRic2l6ZShpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNhcChjaGFyICos
IGNvbnN0IGNoYXIgKiwgaW50KTsKaW50IGNnZXRjbG9zZSh2b2lkKTsKaW50IGNnZXRlbnQoY2hh
ciAqKiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IGNnZXRmaXJzdChjaGFyICoqLCBjaGFy
ICoqKTsKaW50IGNnZXRtYXRjaChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBjZ2V0
bmV4dChjaGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0oY2hhciAqLCBjb25zdCBjaGFyICos
IGxvbmcgKik7CmludCBjZ2V0c2V0KGNvbnN0IGNoYXIgKik7CmludCBjZ2V0c3RyKGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IGNnZXR1c3RyKGNoYXIgKiwgY29uc3QgY2hhciAq
LCBjaGFyICoqKTsKCmludCBkYWVtb24oaW50LCBpbnQpOwpjaGFyICpkZXZuYW1lKGludCwgaW50
KTsKaW50IGdldGxvYWRhdmcoZG91YmxlIFtdLCBpbnQpOwpjb25zdCBjaGFyICoKICAgICAgICAg
Z2V0cHJvZ25hbWUodm9pZCk7CgppbnQgaGVhcHNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwg
aW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwpjaGFyICppbml0c3RhdGUodW5z
aWduZWQgbG9uZywgY2hhciAqLCBsb25nKTsKCgoKCgppbnQgbWVyZ2Vzb3J0KHZvaWQgKiwgc2l6
ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKaW50IHJh
ZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KiwKICAgICAgICAgICAgdW5zaWduZWQpOwppbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBj
aGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgdW5zaWduZWQp
OwppbnQgcmFuZF9yKHVuc2lnbmVkICopOwpsb25nIHJhbmRvbSh2b2lkKTsKdm9pZCAqcmVhbGxv
Y2Yodm9pZCAqLCBzaXplX3QpOwpjaGFyICpyZWFscGF0aChjb25zdCBjaGFyICosIGNoYXIgcmVz
b2x2ZWRfcGF0aFtdKTsKdm9pZCBzZXRwcm9nbmFtZShjb25zdCBjaGFyICopOwpjaGFyICpzZXRz
dGF0ZShjaGFyICopOwp2b2lkIHNyYW5kZGV2KHZvaWQpOwp2b2lkIHNyYW5kb20odW5zaWduZWQg
bG9uZyk7CnZvaWQgc3JhbmRvbWRldih2b2lkKTsKCgoKCl9faW50NjRfdCBzdHJ0b3EoY29uc3Qg
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwoKCgoKX191aW50NjRfdAogICAgICAgICBzdHJ0b3VxKGNv
bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdm9pZCB1bnNldGVudihjb25zdCBjaGFyICopOwoK
CiMgNjEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMSAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDU1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBl
ZGVmIF9faW50NjRfdCBmcG9zX3Q7CiMgNjYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnN0cnVj
dCBfX3NidWYgewogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIGludCBfc2l6
ZTsKfTsKCgpzdHJ1Y3QgX19zRklMRVg7CiMgMTAwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0
eXBlZGVmIHN0cnVjdCBfX3NGSUxFIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfcDsKICAgICAg
ICBpbnQgX3I7CiAgICAgICAgaW50IF93OwogICAgICAgIHNob3J0IF9mbGFnczsKICAgICAgICBz
aG9ydCBfZmlsZTsKICAgICAgICBzdHJ1Y3QgX19zYnVmIF9iZjsKICAgICAgICBpbnQgX2xiZnNp
emU7CgoKICAgICAgICB2b2lkICpfY29va2llOwogICAgICAgIGludCAoKl9jbG9zZSkodm9pZCAq
KTsKICAgICAgICBpbnQgKCpfcmVhZCkodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAgZnBv
c190ICgqX3NlZWspKHZvaWQgKiwgZnBvc190LCBpbnQpOwogICAgICAgIGludCAoKl93cml0ZSko
dm9pZCAqLCBjb25zdCBjaGFyICosIGludCk7CgoKICAgICAgICBzdHJ1Y3QgX19zYnVmIF91YjsK
ICAgICAgICBzdHJ1Y3QgX19zRklMRVggKl9leHRyYTsKICAgICAgICBpbnQgX3VyOwoKCiAgICAg
ICAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFd
OwoKCiAgICAgICAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7CiAg
ICAgICAgZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107CmV4dGVy
biBGSUxFICpfX3N0ZGlucDsKZXh0ZXJuIEZJTEUgKl9fc3Rkb3V0cDsKZXh0ZXJuIEZJTEUgKl9f
c3RkZXJycDsKCiMgMjE0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKdm9pZCBjbGVhcmVycihG
SUxFICopOwppbnQgZmNsb3NlKEZJTEUgKik7CmludCBmZW9mKEZJTEUgKik7CmludCBmZXJyb3Io
RklMRSAqKTsKaW50IGZmbHVzaChGSUxFICopOwppbnQgZmdldGMoRklMRSAqKTsKaW50IGZnZXRw
b3MoRklMRSAqLCBmcG9zX3QgKik7CmNoYXIgKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpG
SUxFICpmb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJpbnRmKEZJTEUg
KiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnB1dGMoaW50LCBGSUxFICopOwppbnQgZnB1dHMo
Y29uc3QgY2hhciAqLCBGSUxFICopOwpzaXplX3QgZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVf
dCwgRklMRSAqKTsKRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklM
RSAqKTsKaW50IGZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGZzZWVrKEZJ
TEUgKiwgbG9uZywgaW50KTsKaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7Cmxv
bmcgZnRlbGwoRklMRSAqKTsKc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6
ZV90LCBGSUxFICopOwppbnQgZ2V0YyhGSUxFICopOwppbnQgZ2V0Y2hhcih2b2lkKTsKY2hhciAq
Z2V0cyhjaGFyICopOwoKZXh0ZXJuIGNvbnN0IGludCBzeXNfbmVycjsKZXh0ZXJuIGNvbnN0IGNo
YXIgKmNvbnN0IHN5c19lcnJsaXN0W107Cgp2b2lkIHBlcnJvcihjb25zdCBjaGFyICopOwppbnQg
cHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHB1dGMoaW50LCBGSUxFICopOwppbnQgcHV0
Y2hhcihpbnQpOwppbnQgcHV0cyhjb25zdCBjaGFyICopOwppbnQgcmVtb3ZlKGNvbnN0IGNoYXIg
Kik7CmludCByZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIHJld2luZChG
SUxFICopOwppbnQgc2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIHNldGJ1ZihGSUxFICos
IGNoYXIgKik7CmludCBzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CmludCBz
cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc3NjYW5mKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCAuLi4pOwpGSUxFICp0bXBmaWxlKHZvaWQpOwpjaGFyICp0bXBuYW0o
Y2hhciAqKTsKaW50IHVuZ2V0YyhpbnQsIEZJTEUgKik7CmludCB2ZnByaW50ZihGSUxFICosIGNv
bnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwppbnQgdnByaW50Zihjb25zdCBjaGFyICos
IF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBf
X2J1aWx0aW5fdmFfbGlzdCk7CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCmNoYXIg
KmN0ZXJtaWQoY2hhciAqKTsKRklMRSAqZmRvcGVuKGludCwgY29uc3QgY2hhciAqKTsKaW50IGZp
bGVubyhGSUxFICopOwppbnQgZnRyeWxvY2tmaWxlKEZJTEUgKik7CnZvaWQgZmxvY2tmaWxlKEZJ
TEUgKik7CnZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKCgoKCgoKCgoKCmludCBmdHJ1bmNhdGUo
aW50LCBfX2ludDY0X3QpOwoKCgpfX2ludDY0X3QgbHNlZWsoaW50LCBfX2ludDY0X3QsIGludCk7
CgoKCnZvaWQgKm1tYXAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIF9faW50NjRfdCk7
CgoKCmludCB0cnVuY2F0ZShjb25zdCBjaGFyICosIF9faW50NjRfdCk7CgoKCgoKCgoKCmludCBh
c3ByaW50ZihjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKY2hhciAqY3Rlcm1pZF9yKGNoYXIgKik7CmNoYXIg
KmZnZXRsbihGSUxFICosIHNpemVfdCAqKTsKCgoKCgpjb25zdCBjaGFyICpmbXRjaGVjayhjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18oMikp
KTsKaW50IGZwdXJnZShGSUxFICopOwppbnQgZnNlZWtvKEZJTEUgKiwgX19pbnQ2NF90LCBpbnQp
OwpfX2ludDY0X3QgZnRlbGxvKEZJTEUgKik7CmludCBnZXR3KEZJTEUgKik7CmludCBwY2xvc2Uo
RklMRSAqKTsKRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgcHV0
dyhpbnQsIEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyKEZJTEUgKiwgY2hhciAqLCBpbnQpOwppbnQg
c2V0bGluZWJ1ZihGSUxFICopOwpjaGFyICp0ZW1wbmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKaW50IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLikgX19h
dHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKaW50IHZhc3ByaW50
ZihjaGFyICoqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwppbnQgdnNucHJp
bnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpp
bnQgdnNjYW5mKGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpIF9fYXR0cmlidXRlX18o
KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKaW50IHZzc2NhbmYoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgojIDM0OSAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKCkZJTEUgKmZ1bm9wZW4oY29uc3Qgdm9pZCAqLAogICAgICAgICAgICBpbnQg
KCopKHZvaWQgKiwgY2hhciAqLCBpbnQpLAogICAgICAgICAgICBpbnQgKCopKHZvaWQgKiwgY29u
c3QgY2hhciAqLCBpbnQpLAogICAgICAgICAgICBmcG9zX3QgKCopKHZvaWQgKiwgZnBvc190LCBp
bnQpLAogICAgICAgICAgICBpbnQgKCopKHZvaWQgKikpOwoKCgoKCgoKCgppbnQgX19zcmdldChG
SUxFICopOwppbnQgX192ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFf
bGlzdCk7CmludCBfX3N2ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFf
bGlzdCk7CmludCBfX3N3YnVmKGludCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUg
aW50IF9fc3B1dGMoaW50IF9jLCBGSUxFICpfcCkgewogICAgICAgIGlmICgtLV9wLT5fdyA+PSAw
IHx8IChfcC0+X3cgPj0gX3AtPl9sYmZzaXplICYmIChjaGFyKV9jICE9ICdcbicpKQogICAgICAg
ICAgICAgICAgcmV0dXJuICgqX3AtPl9wKysgPSBfYyk7CiAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgcmV0dXJuIChfX3N3YnVmKF9jLCBfcCkpOwp9CiMgNjIgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMK
IyA0OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZ3Mu
aCIgMSAzCiMgNDAgIi91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDMKCmludCBiY21wKGNvbnN0IHZv
aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkIGJjb3B5KGNvbnN0IHZvaWQgKiwgdm9p
ZCAqLCBzaXplX3QpOwp2b2lkIGJ6ZXJvKHZvaWQgKiwgc2l6ZV90KTsKaW50IGZmcyhpbnQpOwpj
aGFyICppbmRleChjb25zdCBjaGFyICosIGludCk7CmNoYXIgKnJpbmRleChjb25zdCBjaGFyICos
IGludCk7CmludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0
cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKIyA0OSAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyA2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgp2
b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmludCBtZW1jbXAoY29uc3Qg
dm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbWNweSh2b2lkICogLCBjb25z
dCB2b2lkICogLCBzaXplX3QpOwp2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz
aXplX3QpOwp2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmNhdChj
aGFyICogLCBjb25zdCBjaGFyICogKTsKY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsK
aW50IHN0cmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBzdHJjb2xsKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5KGNoYXIgKiAsIGNvbnN0IGNoYXIg
KiApOwpzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0
cmVycm9yKGludCk7CnNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKY2hhciAqc3RybmNhdChj
aGFyICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwppbnQgc3RybmNtcChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweShjaGFyICogLCBjb25zdCBjaGFy
ICogLCBzaXplX3QpOwpjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
Y2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBzdHJzcG4oY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwpjaGFyICpzdHJ0b2soY2hhciAqICwgY29uc3QgY2hhciAqICk7CnNpemVfdCBzdHJ4ZnJt
KGNoYXIgKiAsIGNvbnN0IGNoYXIgKiAsIHNpemVfdCk7CgoKdm9pZCAqbWVtY2NweSh2b2lkICog
LCBjb25zdCB2b2lkICogLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmR1cChjb25zdCBjaGFyICop
OwpjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgoKCmludCBz
dHJlcnJvcl9yKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgpjaGFyICpzdHJjYXNlc3RyKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKc2l6ZV90IHN0cmxjYXQoY2hhciAqLCBjb25zdCBjaGFy
ICosIHNpemVfdCk7CnNpemVfdCBzdHJsY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp
Owp2b2lkIHN0cm1vZGUoaW50LCBjaGFyICopOwpjaGFyICpzdHJuc3RyKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJzZXAoY2hhciAqKiwgY29uc3QgY2hhciAq
KTsKY2hhciAqc3Ryc2lnbmFsKGludCk7CnZvaWQgc3dhYihjb25zdCB2b2lkICosIHZvaWQgKiwg
c2l6ZV90KTsKCgojIDYzICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2xoZWFkZXIuaCIg
MgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmxvYXQuaCIgMSAzCiMgNjggIi4uLy4uLy4uLy4uL2V4
dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvZ2xoZWFkZXIuaCIKIyAxICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wu
aCIgMQojIDk3ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgR0xlbnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBl
ZGVmIHVuc2lnbmVkIGludCBHTGJpdGZpZWxkOwp0eXBlZGVmIHZvaWQgR0x2b2lkOwp0eXBlZGVm
IHNpZ25lZCBjaGFyIEdMYnl0ZTsKdHlwZWRlZiBzaG9ydCBHTHNob3J0Owp0eXBlZGVmIGludCBH
TGludDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgR0x1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBpbnQgR0xz
aXplaTsKdHlwZWRlZiBmbG9hdCBHTGZsb2F0Owp0eXBlZGVmIGZsb2F0IEdMY2xhbXBmOwp0eXBl
ZGVmIGRvdWJsZSBHTGRvdWJsZTsKdHlwZWRlZiBkb3VibGUgR0xjbGFtcGQ7CiMgODY4ICIuLi8u
Li8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIKZXh0ZXJuIHZvaWQgZ2xDbGVhckluZGV4
KCBHTGZsb2F0IGMgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXJDb2xvciggR0xjbGFtcGYgcmVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2xhbXBmIGJsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFt
cGYgYWxwaGEgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0
ZXJuIHZvaWQgZ2xJbmRleE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbENvbG9y
TWFzayggR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLAogICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xB
bHBoYUZ1bmMoIEdMZW51bSBmdW5jLCBHTGNsYW1wZiByZWYgKTsKCmV4dGVybiB2b2lkIGdsQmxl
bmRGdW5jKCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGds
TG9naWNPcCggR0xlbnVtIG9wY29kZSApOwoKZXh0ZXJuIHZvaWQgZ2xDdWxsRmFjZSggR0xlbnVt
IG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRnJvbnRGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJu
IHZvaWQgZ2xQb2ludFNpemUoIEdMZmxvYXQgc2l6ZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lV2lk
dGgoIEdMZmxvYXQgd2lkdGggKTsKCmV4dGVybiB2b2lkIGdsTGluZVN0aXBwbGUoIEdMaW50IGZh
Y3RvciwgR0x1c2hvcnQgcGF0dGVybiApOwoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29uTW9kZSggR0xl
bnVtIGZhY2UsIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25PZmZzZXQoIEdM
ZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25TdGlw
cGxlKCBjb25zdCBHTHVieXRlICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEdldFBvbHlnb25TdGlw
cGxlKCBHTHVieXRlICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEVkZ2VGbGFnKCBHTGJvb2xlYW4g
ZmxhZyApOwoKZXh0ZXJuIHZvaWQgZ2xFZGdlRmxhZ3YoIGNvbnN0IEdMYm9vbGVhbiAqZmxhZyAp
OwoKZXh0ZXJuIHZvaWQgZ2xTY2lzc29yKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKCmV4
dGVybiB2b2lkIGdsQ2xpcFBsYW5lKCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVh
dGlvbiApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDbGlwUGxhbmUoIEdMZW51bSBwbGFuZSwgR0xkb3Vi
bGUgKmVxdWF0aW9uICk7CgpleHRlcm4gdm9pZCBnbERyYXdCdWZmZXIoIEdMZW51bSBtb2RlICk7
CgpleHRlcm4gdm9pZCBnbFJlYWRCdWZmZXIoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBn
bEVuYWJsZSggR0xlbnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlKCBHTGVudW0gY2Fw
ICk7CgpleHRlcm4gR0xib29sZWFuIGdsSXNFbmFibGVkKCBHTGVudW0gY2FwICk7CgoKZXh0ZXJu
IHZvaWQgZ2xFbmFibGVDbGllbnRTdGF0ZSggR0xlbnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xE
aXNhYmxlQ2xpZW50U3RhdGUoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gdm9pZCBnbEdldEJvb2xl
YW52KCBHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdl
dERvdWJsZXYoIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg
Z2xHZXRGbG9hdHYoIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9p
ZCBnbEdldEludGVnZXJ2KCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRlcm4g
dm9pZCBnbFB1c2hBdHRyaWIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BB
dHRyaWIoIHZvaWQgKTsKCgpleHRlcm4gdm9pZCBnbFB1c2hDbGllbnRBdHRyaWIoIEdMYml0Zmll
bGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BDbGllbnRBdHRyaWIoIHZvaWQgKTsKCgpleHRl
cm4gR0xpbnQgZ2xSZW5kZXJNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIEdMZW51bSBnbEdl
dEVycm9yKCB2b2lkICk7CgpleHRlcm4gY29uc3QgR0x1Ynl0ZSogZ2xHZXRTdHJpbmcoIEdMZW51
bSBuYW1lICk7CgpleHRlcm4gdm9pZCBnbEZpbmlzaCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xG
bHVzaCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xIaW50KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0g
bW9kZSApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCAp
OwoKZXh0ZXJuIHZvaWQgZ2xEZXB0aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gdm9pZCBn
bERlcHRoTWFzayggR0xib29sZWFuIGZsYWcgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhSYW5nZSgg
R0xjbGFtcGQgbmVhcl92YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgoKCgoKZXh0ZXJuIHZvaWQg
Z2xDbGVhckFjY3VtKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsKCmV4
dGVybiB2b2lkIGdsQWNjdW0oIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSApOwoKCgoKCgoKZXh0
ZXJuIHZvaWQgZ2xNYXRyaXhNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xPcnRo
byggR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xkb3VibGUgZmFyX3ZhbCApOwoK
ZXh0ZXJuIHZvaWQgZ2xGcnVzdHVtKCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sIEdMZG91Ymxl
IHRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3Zh
bCwgR0xkb3VibGUgZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQgZ2xWaWV3cG9ydCggR0xpbnQgeCwg
R0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE1hdHJpeCggdm9pZCApOwoK
ZXh0ZXJuIHZvaWQgZ2xQb3BNYXRyaXgoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsTG9hZElkZW50
aXR5KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAq
bSApOwpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRl
cm4gdm9pZCBnbE11bHRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwpleHRlcm4gdm9pZCBn
bE11bHRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRlcm4gdm9pZCBnbFJvdGF0ZWQo
IEdMZG91YmxlIGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91
YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xSb3RhdGVmKCBH
TGZsb2F0IGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkIGdsU2NhbGVkKCBHTGRvdWJs
ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lkIGdsU2NhbGVmKCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgpleHRlcm4gdm9pZCBnbFRyYW5zbGF0ZWQo
IEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xUcmFu
c2xhdGVmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgoKCgoKCgpleHRlcm4g
R0xib29sZWFuIGdsSXNMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuIHZvaWQgZ2xEZWxldGVM
aXN0cyggR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UgKTsKCmV4dGVybiBHTHVpbnQgZ2xHZW5M
aXN0cyggR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuIHZvaWQgZ2xOZXdMaXN0KCBHTHVpbnQgbGlz
dCwgR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5kTGlzdCggdm9pZCApOwoKZXh0ZXJu
IHZvaWQgZ2xDYWxsTGlzdCggR0x1aW50IGxpc3QgKTsKCmV4dGVybiB2b2lkIGdsQ2FsbExpc3Rz
KCBHTHNpemVpIG4sIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICpsaXN0cyApOwoKZXh0ZXJuIHZvaWQgZ2xMaXN0QmFzZSggR0x1
aW50IGJhc2UgKTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsQmVnaW4oIEdMZW51bSBtb2RlICk7Cgpl
eHRlcm4gdm9pZCBnbEVuZCggdm9pZCApOwoKCmV4dGVybiB2b2lkIGdsVmVydGV4MmQoIEdMZG91
YmxlIHgsIEdMZG91YmxlIHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZiggR0xmbG9hdCB4LCBH
TGZsb2F0IHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyaSggR0xpbnQgeCwgR0xpbnQgeSApOwpl
eHRlcm4gdm9pZCBnbFZlcnRleDJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0ZXJuIHZv
aWQgZ2xWZXJ0ZXgzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRl
cm4gdm9pZCBnbFZlcnRleDNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CmV4
dGVybiB2b2lkIGdsVmVydGV4M2koIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHogKTsKZXh0ZXJu
IHZvaWQgZ2xWZXJ0ZXgzcyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiApOwoKZXh0
ZXJuIHZvaWQgZ2xWZXJ0ZXg0ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwg
R0xkb3VibGUgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRmKCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0aSggR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzKCBH
THNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcgKTsKCmV4dGVybiB2b2lk
IGdsVmVydGV4MmR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJm
diggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJpdiggY29uc3QgR0xp
bnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4
dGVybiB2b2lkIGdsVmVydGV4M2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBn
bFZlcnRleDNmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNpdigg
Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzc3YoIGNvbnN0IEdMc2hvcnQg
KnYgKTsKCmV4dGVybiB2b2lkIGdsVmVydGV4NGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRl
cm4gdm9pZCBnbFZlcnRleDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZl
cnRleDRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0c3YoIGNvbnN0
IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbE5vcm1hbDNiKCBHTGJ5dGUgbngsIEdMYnl0
ZSBueSwgR0xieXRlIG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2QoIEdMZG91YmxlIG54LCBH
TGRvdWJsZSBueSwgR0xkb3VibGUgbnogKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZiggR0xmbG9h
dCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNpKCBH
TGludCBueCwgR0xpbnQgbnksIEdMaW50IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM3MoIEdM
c2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnogKTsKCmV4dGVybiB2b2lkIGdsTm9ybWFs
M2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZHYoIGNvbnN0IEdM
ZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7
CmV4dGVybiB2b2lkIGdsTm9ybWFsM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBn
bE5vcm1hbDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsSW5kZXhkKCBH
TGRvdWJsZSBjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhmKCBHTGZsb2F0IGMgKTsKZXh0ZXJuIHZv
aWQgZ2xJbmRleGkoIEdMaW50IGMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHMoIEdMc2hvcnQgYyAp
OwpleHRlcm4gdm9pZCBnbEluZGV4dWIoIEdMdWJ5dGUgYyApOwoKZXh0ZXJuIHZvaWQgZ2xJbmRl
eGR2KCBjb25zdCBHTGRvdWJsZSAqYyApOwpleHRlcm4gdm9pZCBnbEluZGV4ZnYoIGNvbnN0IEdM
ZmxvYXQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleGl2KCBjb25zdCBHTGludCAqYyApOwpleHRl
cm4gdm9pZCBnbEluZGV4c3YoIGNvbnN0IEdMc2hvcnQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRl
eHVidiggY29uc3QgR0x1Ynl0ZSAqYyApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNiKCBHTGJ5dGUg
cmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZCgg
R0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSApOwpleHRlcm4gdm9p
ZCBnbENvbG9yM2YoIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUgKTsK
ZXh0ZXJuIHZvaWQgZ2xDb2xvcjNpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVl
ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzcyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdM
c2hvcnQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM3ViKCBHTHVieXRlIHJlZCwgR0x1Ynl0
ZSBncmVlbiwgR0x1Ynl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdWkoIEdMdWludCBy
ZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1cygg
R0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSApOwoKZXh0ZXJuIHZv
aWQgZ2xDb2xvcjRiKCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSApOwpleHRlcm4gdm9p
ZCBnbENvbG9yNGQoIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgYmx1ZSwgR0xkb3VibGUgYWxwaGEgKTsKZXh0
ZXJuIHZvaWQgZ2xDb2xvcjRmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsK
ZXh0ZXJuIHZvaWQgZ2xDb2xvcjRpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJsdWUsIEdMaW50IGFscGhhICk7CmV4dGVy
biB2b2lkIGdsQ29sb3I0cyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBibHVlLCBHTHNob3J0IGFscGhhICk7CmV4
dGVybiB2b2lkIGdsQ29sb3I0dWIoIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGJsdWUsIEdMdWJ5dGUgYWxwaGEg
KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1aSggR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhh
ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0dXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdXNob3J0IGJsdWUsIEdMdXNo
b3J0IGFscGhhICk7CgoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNidiggY29uc3QgR0xieXRlICp2ICk7
CmV4dGVybiB2b2lkIGdsQ29sb3IzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lk
IGdsQ29sb3IzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNpdigg
Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNzdiggY29uc3QgR0xzaG9ydCAq
diApOwpleHRlcm4gdm9pZCBnbENvbG9yM3VidiggY29uc3QgR0x1Ynl0ZSAqdiApOwpleHRlcm4g
dm9pZCBnbENvbG9yM3VpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3Iz
dXN2KCBjb25zdCBHTHVzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRidiggY29uc3Qg
R0xieXRlICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7
CmV4dGVybiB2b2lkIGdsQ29sb3I0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRzdiggY29u
c3QgR0xzaG9ydCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVidiggY29uc3QgR0x1Ynl0ZSAq
diApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2
b2lkIGdsQ29sb3I0dXN2KCBjb25zdCBHTHVzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsVGV4
Q29vcmQxZCggR0xkb3VibGUgcyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWYoIEdMZmxvYXQg
cyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWkoIEdMaW50IHMgKTsKZXh0ZXJuIHZvaWQgZ2xU
ZXhDb29yZDFzKCBHTHNob3J0IHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZCggR0xkb3Vi
bGUgcywgR0xkb3VibGUgdCApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmYoIEdMZmxvYXQgcywg
R0xmbG9hdCB0ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyaSggR0xpbnQgcywgR0xpbnQgdCAp
OwpleHRlcm4gdm9pZCBnbFRleENvb3JkMnMoIEdMc2hvcnQgcywgR0xzaG9ydCB0ICk7CgpleHRl
cm4gdm9pZCBnbFRleENvb3JkM2QoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIg
KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9h
dCByICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzaSggR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQg
ciApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM3MoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNo
b3J0IHIgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZCggR0xkb3VibGUgcywgR0xkb3VibGUg
dCwgR0xkb3VibGUgciwgR0xkb3VibGUgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGYoIEdM
ZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSApOwpleHRlcm4gdm9pZCBn
bFRleENvb3JkNGkoIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEgKTsKZXh0ZXJu
IHZvaWQgZ2xUZXhDb29yZDRzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNo
b3J0IHEgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7
CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZv
aWQgZ2xUZXhDb29yZDFpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y
ZDFzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkdiggY29u
c3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmdiggY29uc3QgR0xmbG9h
dCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMml2KCBjb25zdCBHTGludCAqdiApOwpleHRl
cm4gdm9pZCBnbFRleENvb3JkMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBn
bFRleENvb3JkM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3Jk
M2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzaXYoIGNvbnN0
IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzc3YoIGNvbnN0IEdMc2hvcnQgKnYg
KTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVy
biB2b2lkIGdsVGV4Q29vcmQ0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xU
ZXhDb29yZDRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRzdigg
Y29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmQoIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZiggR0xmbG9hdCB4LCBH
TGZsb2F0IHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyaSggR0xpbnQgeCwgR0xpbnQgeSAp
OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0
ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
eiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2koIEdMaW50IHgsIEdMaW50IHksIEdM
aW50IHogKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzcyggR0xzaG9ydCB4LCBHTHNob3J0IHks
IEdMc2hvcnQgeiApOwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0ZCggR0xkb3VibGUgeCwgR0xk
b3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBv
czRmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJu
IHZvaWQgZ2xSYXN0ZXJQb3M0aSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyAp
OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9y
dCB6LCBHTHNob3J0IHcgKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmR2KCBjb25zdCBHTGRv
dWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJmdiggY29uc3QgR0xmbG9hdCAqdiAp
OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZv
aWQgZ2xSYXN0ZXJQb3Myc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsUmFz
dGVyUG9zM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNm
diggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNpdiggY29uc3Qg
R0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3Mzc3YoIGNvbnN0IEdMc2hvcnQgKnYg
KTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRl
cm4gdm9pZCBnbFJhc3RlclBvczRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBn
bFJhc3RlclBvczRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0
c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkKCBHTGRvdWJsZSB4
MSwgR0xkb3VibGUgeTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MiApOwpleHRlcm4gdm9pZCBn
bFJlY3RmKCBHTGZsb2F0IHgxLCBHTGZsb2F0IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyICk7
CmV4dGVybiB2b2lkIGdsUmVjdGkoIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50
IHkyICk7CmV4dGVybiB2b2lkIGdsUmVjdHMoIEdMc2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hv
cnQgeDIsIEdMc2hvcnQgeTIgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkdiggY29uc3QgR0xkb3Vi
bGUgKnYxLCBjb25zdCBHTGRvdWJsZSAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0ZnYoIGNvbnN0
IEdMZmxvYXQgKnYxLCBjb25zdCBHTGZsb2F0ICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3Rpdigg
Y29uc3QgR0xpbnQgKnYxLCBjb25zdCBHTGludCAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0c3Yo
IGNvbnN0IEdMc2hvcnQgKnYxLCBjb25zdCBHTHNob3J0ICp2MiApOwoKCgoKCgoKZXh0ZXJuIHZv
aWQgZ2xWZXJ0ZXhQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAq
cHRyICk7CgpleHRlcm4gdm9pZCBnbE5vcm1hbFBvaW50ZXIoIEdMZW51bSB0eXBlLCBHTHNpemVp
IHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyKCBHTGludCBzaXplLCBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0
cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsSW5kZXhQb2ludGVyKCBH
TGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmRQb2lu
dGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVy
biB2b2lkIGdsRWRnZUZsYWdQb2ludGVyKCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpw
dHIgKTsKCmV4dGVybiB2b2lkIGdsR2V0UG9pbnRlcnYoIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBh
cmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xBcnJheUVsZW1lbnQoIEdMaW50IGkgKTsKCmV4dGVybiB2
b2lkIGdsRHJhd0FycmF5cyggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
ICk7CgpleHRlcm4gdm9pZCBnbERyYXdFbGVtZW50cyggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQgZ2xJbnRlcmxlYXZlZEFycmF5cygg
R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIgKTsKCgoKCgoKZXh0ZXJuIHZv
aWQgZ2xTaGFkZU1vZGVsKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaWdodGYoIEdM
ZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGds
TGlnaHRpKCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJu
IHZvaWQgZ2xMaWdodGZ2KCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lk
IGdsTGlnaHRpdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0
TGlnaHRmdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdldExpZ2h0
aXYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmKCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodE1vZGVsaSgg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmdigg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xMaWdo
dE1vZGVsaXYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZv
aWQgZ2xNYXRlcmlhbGYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0g
KTsKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlhbGkoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxmdiggR0xlbnVtIGZhY2UsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxp
diggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0
ZXJuIHZvaWQgZ2xHZXRNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXRlcmlhbGl2KCBHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbG9yTWF0ZXJp
YWwoIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSApOwojIDEzMjUgIi4uLy4uLy4uLy4uL2V4cG9y
dHMvaW5jbHVkZS9HTC9nbC5oIgpleHRlcm4gdm9pZCBnbFBpeGVsWm9vbSggR0xmbG9hdCB4ZmFj
dG9yLCBHTGZsb2F0IHlmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGdsUGl4ZWxTdG9yZWYoIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFBpeGVsU3RvcmVpKCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFBpeGVsVHJhbnNmZXJmKCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZmVy
aSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcGZ2
KCBHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcHVp
diggR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXB1
c3YoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldFBp
eGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcyApOwpleHRlcm4gdm9pZCBnbEdl
dFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyApOwpleHRlcm4gdm9pZCBn
bEdldFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4g
dm9pZCBnbEJpdG1hcCggR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4b3JpZywgR0xmbG9hdCB5b3JpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHhtb3ZlLCBHTGZsb2F0IHltb3ZlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmJpdG1hcCApOwoK
ZXh0ZXJuIHZvaWQgZ2xSZWFkUGl4ZWxzKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7
CgpleHRlcm4gdm9pZCBnbERyYXdQaXhlbHMoIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsQ29weVBpeGVscyggR0xpbnQgeCwgR0xpbnQgeSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
ICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbFN0ZW5jaWxGdW5jKCBHTGVudW0gZnVuYywgR0xpbnQg
cmVmLCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xTdGVuY2lsTWFzayggR0x1aW50IG1h
c2sgKTsKCmV4dGVybiB2b2lkIGdsU3RlbmNpbE9wKCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls
LCBHTGVudW0genBhc3MgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXJTdGVuY2lsKCBHTGludCBzICk7
CgoKCgoKCgpleHRlcm4gdm9pZCBnbFRleEdlbmQoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l
LCBHTGRvdWJsZSBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEdlbmYoIEdMZW51bSBjb29yZCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsVGV4R2VuaSggR0xl
bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFRl
eEdlbmR2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xkb3VibGUgKnBhcmFt
cyApOwpleHRlcm4gdm9pZCBnbFRleEdlbmZ2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsVGV4R2VuaXYoIEdMZW51bSBj
b29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBn
bEdldFRleEdlbmR2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFt
cyApOwpleHRlcm4gdm9pZCBnbEdldFRleEdlbmZ2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4R2VuaXYoIEdMZW51bSBj
b29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhF
bnZmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJu
IHZvaWQgZ2xUZXhFbnZpKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
ICk7CgpleHRlcm4gdm9pZCBnbFRleEVudmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbFRleEVudml2KCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk
IGdsR2V0VGV4RW52ZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4UGFyYW1ldGVyZiggR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGds
VGV4UGFyYW1ldGVyaSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp
OwoKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldFRleFBhcmFtZXRlcmZ2
KCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldFRleFBh
cmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBn
bEdldFRleExldmVsUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdldFRleExldmVsUGFyYW1ldGVyaXYo
IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRl
cm4gdm9pZCBnbFRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVy
bmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiB2b2lk
IGdsR2V0VGV4SW1hZ2UoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscyApOwoKCgoKCmV4
dGVybiB2b2lkIGdsR2VuVGV4dHVyZXMoIEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyApOwoK
ZXh0ZXJuIHZvaWQgZ2xEZWxldGVUZXh0dXJlcyggR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRl
eHR1cmVzKTsKCmV4dGVybiB2b2lkIGdsQmluZFRleHR1cmUoIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCB0ZXh0dXJlICk7CgpleHRlcm4gdm9pZCBnbFByaW9yaXRpemVUZXh0dXJlcyggR0xzaXplaSBu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMgKTsKCmV4dGVybiBHTGJvb2xlYW4gZ2xBcmVUZXh0
dXJlc1Jlc2lkZW50KCBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKnJlc2lkZW5jZXMg
KTsKCmV4dGVybiBHTGJvb2xlYW4gZ2xJc1RleHR1cmUoIEdMdWludCB0ZXh0dXJlICk7CgoKZXh0
ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTJEKCBH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KnBpeGVscyApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRl
eEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyICk7
CgoKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4U3ViSW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRleFN1Yklt
YWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCApOwojIDE1MDQgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n
bC5oIgpleHRlcm4gdm9pZCBnbE1hcDFkKCBHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xk
b3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdHJpZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwgY29uc3QgR0xkb3VibGUg
KnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1hcDFmKCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHUx
LCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZmxv
YXQgKnBvaW50cyApOwoKZXh0ZXJuIHZvaWQgZ2xNYXAyZCggR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBH
TGludCB1b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2
MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4dGVybiB2b2lkIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJp
ZGUsIEdMaW50IHVvcmRlciwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwgR0xmbG9h
dCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwb2ludHMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWFwZHYoIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXBm
diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lk
IGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsKCmV4
dGVybiB2b2lkIGdsRXZhbENvb3JkMWQoIEdMZG91YmxlIHUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFs
Q29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDFkdiggY29uc3Qg
R0xkb3VibGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZnYoIGNvbnN0IEdMZmxvYXQg
KnUgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMmQoIEdMZG91YmxlIHUsIEdMZG91YmxlIHYg
KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZiggR0xmbG9hdCB1LCBHTGZsb2F0IHYgKTsKCmV4
dGVybiB2b2lkIGdsRXZhbENvb3JkMmR2KCBjb25zdCBHTGRvdWJsZSAqdSApOwpleHRlcm4gdm9p
ZCBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9hdCAqdSApOwoKZXh0ZXJuIHZvaWQgZ2xNYXBH
cmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIgKTsKZXh0ZXJuIHZvaWQg
Z2xNYXBHcmlkMWYoIEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4g
dm9pZCBnbE1hcEdyaWQyZCggR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdM
ZG91YmxlIHYyICk7CmV4dGVybiB2b2lkIGdsTWFwR3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1
MSwgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2
biwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiApOwoKZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQxKCBH
TGludCBpICk7CgpleHRlcm4gdm9pZCBnbEV2YWxQb2ludDIoIEdMaW50IGksIEdMaW50IGogKTsK
CmV4dGVybiB2b2lkIGdsRXZhbE1lc2gxKCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGky
ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxNZXNoMiggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGlu
dCBpMiwgR0xpbnQgajEsIEdMaW50IGoyICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbEZvZ2YoIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpKCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbEZvZ2Z2KCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpdiggR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbEZlZWRiYWNr
QnVmZmVyKCBHTHNpemVpIHNpemUsIEdMZW51bSB0eXBlLCBHTGZsb2F0ICpidWZmZXIgKTsKCmV4
dGVybiB2b2lkIGdsUGFzc1Rocm91Z2goIEdMZmxvYXQgdG9rZW4gKTsKCmV4dGVybiB2b2lkIGds
U2VsZWN0QnVmZmVyKCBHTHNpemVpIHNpemUsIEdMdWludCAqYnVmZmVyICk7CgpleHRlcm4gdm9p
ZCBnbEluaXROYW1lcyggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xMb2FkTmFtZSggR0x1aW50IG5h
bWUgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE5hbWUoIEdMdWludCBuYW1lICk7CgpleHRlcm4gdm9p
ZCBnbFBvcE5hbWUoIHZvaWQgKTsKCgoKCmV4dGVybiB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHMo
IEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsCiAgICAgICAgR0x1aW50IGVuZCwgR0xzaXplaSBj
b3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQg
Z2xUZXhJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLCBHTGlu
dCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UzRCggR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCmV4dGVybiB2b2lkIGdsQ29weVRleFN1Yklt
YWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBH
TGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCApOwoKCgoKZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlKCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxl
ICk7CgpleHRlcm4gdm9pZCBnbENvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwoKZXh0ZXJuIHZvaWQgZ2xDb2xv
clRhYmxlUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1z
KTsKCmV4dGVybiB2b2lkIGdsQ29weUNvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWkgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclRh
YmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
ICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJm
diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg
Z2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb24oIEdMZW51bSBtb2RlICk7Cgpl
eHRlcm4gdm9pZCBnbEJsZW5kQ29sb3IoIEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBm
IGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rICk7CgpleHRlcm4gdm9pZCBnbFJlc2V0SGlzdG9ncmFt
KCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbSggR0xlbnVtIHRh
cmdldCwgR0xib29sZWFuIHJlc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3Jh
bVBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4
dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHNpbmsgKTsKCmV4dGVybiB2b2lkIGdsUmVzZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQg
KTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFs
dWVzICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1heFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4UGFyYW1ldGVy
aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29u
dm9sdXRpb25GaWx0ZXIxRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAg
IGNvbnN0IEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIy
RCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1l
dGVyZiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgIEdMZmxvYXQgcGFyYW1z
ICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2
b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
CiAgICAgICAgR0xpbnQgcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1l
dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvcHlDb252b2x1dGlvbkZpbHRlcjFEKCBHTGVudW0g
dGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQgZ2xDb3B5Q29udm9sdXRpb25GaWx0ZXIyRCgg
R0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgR0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZv
aWQgZ2xHZXRDb252b2x1dGlvbkZpbHRlciggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwK
ICAgICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICppbWFnZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRD
b252b2x1dGlvblBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAg
ICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1l
dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBHTGludCAqcGFyYW1z
ICk7CgpleHRlcm4gdm9pZCBnbFNlcGFyYWJsZUZpbHRlcjJEKCBHTGVudW0gdGFyZ2V0LAogICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBj
b25zdCBHTHZvaWQgKmNvbHVtbiApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXIo
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9p
ZCAqcm93LCBHTHZvaWQgKmNvbHVtbiwgR0x2b2lkICpzcGFuICk7CiMgMTc2NyAiLi4vLi4vLi4v
Li4vZXhwb3J0cy9pbmNsdWRlL0dML2dsLmgiCmV4dGVybiB2b2lkIGdsQWN0aXZlVGV4dHVyZUFS
QihHTGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsQ2xpZW50QWN0aXZlVGV4dHVyZUFSQihH
TGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdMZW51bSB0
YXJnZXQsIEdMZG91YmxlIHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZHZBUkIoR0xl
bnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v
cmQxZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4
Q29vcmQxZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lk
IGdsTXVsdGlUZXhDb29yZDFpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRlcm4gdm9p
ZCBnbE11bHRpVGV4Q29vcmQxaXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpl
eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMp
OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJkQVJCKEdMZW51bSB0YXJn
ZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQy
ZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11
bHRpVGV4Q29vcmQyZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CmV4
dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZs
b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmlBUkIoR0xlbnVtIHRhcmdldCwg
R0xpbnQgcywgR0xpbnQgdCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJpdkFSQihHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJz
QVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuIHZvaWQgZ2xN
dWx0aVRleENvb3JkMnN2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBH
TGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2R2QVJC
KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRl
eENvb3JkM2ZBUkIoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg
cik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25z
dCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xlbnVtIHRh
cmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhD
b29yZDNpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGds
TXVsdGlUZXhDb29yZDNzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkQVJCKEdM
ZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91Ymxl
IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRhcmdldCwgY29u
c3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZkFSQihHTGVudW0g
dGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9h
dCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpQVJCKEdMZW51bSB0YXJnZXQsIEdM
aW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4
Q29vcmQ0aXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBn
bE11bHRpVGV4Q29vcmQ0c0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwg
R0xzaG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0c3ZBUkIo
R0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CiMgMjI0NSAiLi4vLi4vLi4vLi4vZXhw
b3J0cy9pbmNsdWRlL0dML2dsLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dM
L2dsZXh0LmgiIDEKIyAxNjcyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQu
aCIKZXh0ZXJuIHZvaWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZkFSQiAoY29uc3QgR0xmbG9hdCAq
KTsKZXh0ZXJuIHZvaWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZEFSQiAoY29uc3QgR0xkb3VibGUg
Kik7CmV4dGVybiB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGZBUkIgKGNvbnN0IEdMZmxvYXQg
Kik7CmV4dGVybiB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGRBUkIgKGNvbnN0IEdMZG91Ymxl
ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykg
KGNvbnN0IEdMZmxvYXQgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9BRFRSQU5TUE9TRU1B
VFJJWERBUkJQUk9DKSAoY29uc3QgR0xkb3VibGUgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
TVVMVFRSQU5TUE9TRU1BVFJJWEZBUkJQUk9DKSAoY29uc3QgR0xmbG9hdCAqbSk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xNVUxUVFJBTlNQT1NFTUFUUklYREFSQlBST0MpIChjb25zdCBHTGRvdWJs
ZSAqbSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xTYW1wbGVDb3ZlcmFnZUFSQiAoR0xjbGFtcGYsIEdM
Ym9vbGVhbik7CmV4dGVybiB2b2lkIGdsU2FtcGxlUGFzc0FSQiAoR0xlbnVtKTsKCnR5cGVkZWYg
dm9pZCAoICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1wZiB2YWx1ZSwgR0xi
b29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQQVNTQVJCUFJPQykg
KEdMZW51bSBwYXNzKTsKIyAxNzA0ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xl
eHQuaCIKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzREFSQiAoR0xlbnVtLCBHTGlu
dCwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTHNpemVpLCBHTGludCwgR0xzaXplaSwgY29u
c3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTJEQVJCIChHTGVu
dW0sIEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMaW50LCBHTHNpemVpLCBjb25z
dCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlMURBUkIgKEdMZW51
bSwgR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAq
KTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzREFSQiAoR0xlbnVtLCBHTGlu
dCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVt
LCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleFN1
YkltYWdlMkRBUkIgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xzaXpl
aSwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJl
c3NlZFRleFN1YkltYWdlMURBUkIgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTGVu
dW0sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb21wcmVzc2Vk
VGV4SW1hZ2VBUkIgKEdMZW51bSwgR0xpbnQsIHZvaWQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMQ09NUFJFU1NFRFRFWElNQUdFM0RBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdM
dm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UyREFS
QlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGlt
YWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBS
RVNTRURURVhJTUFHRTFEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBp
bWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01Q
UkVTU0VEVEVYU1VCSU1BR0UzREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09N
UFJFU1NFRFRFWFNVQklNQUdFMkRBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRh
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTFEQVJCUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgdm9pZCAqaW1nKTsKIyAxNzI4ICIuLi8uLi8uLi8uLi9l
eHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xCbGVuZENvbG9yRVhUIChH
TGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Cgp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMQkxFTkRDT0xPUkVYVFBST0MpIChHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBH
TGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29u
T2Zmc2V0RVhUIChHTGZsb2F0LCBHTGZsb2F0KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xQT0xZ
R09OT0ZGU0VURVhUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IGJpYXMpOwojIDE3NDgg
Ii4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFRl
eEltYWdlM0RFWFQgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgR0xz
aXplaSwgR0xpbnQsIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lk
IGdsVGV4U3ViSW1hZ2UzREVYVCAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwg
R0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAq
KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgpleHRlcm4gdm9pZCBnbEdldFRleEZpbHRlckZ1
bmNTR0lTIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhGaWx0
ZXJGdW5jU0dJUyAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKik7Cgp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUVEVYRklMVEVSRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGZpbHRlciwgR0xmbG9hdCAqd2VpZ2h0cyk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xURVhGSUxURVJGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZmlsdGVy
LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKndlaWdodHMpOwoKCgoKCmV4dGVybiB2b2lkIGds
VGV4U3ViSW1hZ2UxREVYVCAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMZW51bSwg
R0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UyREVYVCAo
R0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNpemVpLCBHTGVudW0sIEdM
ZW51bSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdF
MURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBp
eGVscyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhTVUJJTUFHRTJERVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTFERVhU
IChHTGVudW0sIEdMaW50LCBHTGVudW0sIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xpbnQpOwpl
eHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTJERVhUIChHTGVudW0sIEdMaW50LCBHTGVudW0sIEdM
aW50LCBHTGludCwgR0xzaXplaSwgR0xzaXplaSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbENvcHlU
ZXhTdWJJbWFnZTFERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNp
emVpKTsKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4U3ViSW1hZ2UyREVYVCAoR0xlbnVtLCBHTGludCwg
R0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwpleHRlcm4gdm9p
ZCBnbENvcHlUZXhTdWJJbWFnZTNERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTENPUFlURVhJTUFHRTFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
aW50IGJvcmRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYSU1BR0UyREVYVFBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVy
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhTVUJJTUFHRTFERVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhTVUJJTUFHRTJERVhU
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYU1VCSU1BR0UzREVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
em9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwoKCgoKCmV4dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtRVhUIChHTGVudW0sIEdMYm9vbGVhbiwg
R0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0b2dyYW1QYXJh
bWV0ZXJmdkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0
SGlzdG9ncmFtUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJu
IHZvaWQgZ2xHZXRNaW5tYXhFWFQgKEdMZW51bSwgR0xib29sZWFuLCBHTGVudW0sIEdMZW51bSwg
R0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdldE1pbm1heFBhcmFtZXRlcmZ2RVhUIChHTGVudW0s
IEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNaW5tYXhQYXJhbWV0ZXJpdkVY
VCAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEhpc3RvZ3JhbUVYVCAo
R0xlbnVtLCBHTHNpemVpLCBHTGVudW0sIEdMYm9vbGVhbik7CmV4dGVybiB2b2lkIGdsTWlubWF4
RVhUIChHTGVudW0sIEdMZW51bSwgR0xib29sZWFuKTsKZXh0ZXJuIHZvaWQgZ2xSZXNldEhpc3Rv
Z3JhbUVYVCAoR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xSZXNldE1pbm1heEVYVCAoR0xlbnVtKTsK
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2
YWx1ZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNUEFSQU1FVEVSRlZFWFRQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEdFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRNSU5NQVhQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRNSU5N
QVhQQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSElTVE9HUkFNRVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFu
IHNpbmspOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTUlOTUFYRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFuIHNpbmspOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMUkVTRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xSRVNFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKCgoKCgpl
eHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uRmlsdGVyMURFWFQgKEdMZW51bSwgR0xlbnVtLCBHTHNp
emVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbnZv
bHV0aW9uRmlsdGVyMkRFWFQgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTGVu
dW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFy
YW1ldGVyZkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbnZv
bHV0aW9uUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpl
eHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaUVYVCAoR0xlbnVtLCBHTGVudW0sIEdM
aW50KTsKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvblBhcmFtZXRlcml2RVhUIChHTGVudW0sIEdM
ZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsQ29weUNvbnZvbHV0aW9uRmlsdGVy
MURFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9p
ZCBnbENvcHlDb252b2x1dGlvbkZpbHRlcjJERVhUIChHTGVudW0sIEdMZW51bSwgR0xpbnQsIEdM
aW50LCBHTHNpemVpLCBHTHNpemVpKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvbkZpbHRl
ckVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdl
dENvbnZvbHV0aW9uUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpl
eHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVt
LCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXJFWFQgKEdMZW51bSwg
R0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqLCBHTHZvaWQgKiwgR0x2b2lkICopOwpleHRlcm4gdm9p
ZCBnbFNlcGFyYWJsZUZpbHRlcjJERVhUIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXpl
aSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAqLCBjb25zdCBHTHZvaWQgKik7Cgp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05GSUxURVIxREVYVFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TENPTlZPTFVUSU9ORklMVEVSMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
Q09OVk9MVVRJT05QQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJB
TUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUklF
WFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMQ09QWUNPTlZPTFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT05WT0xVVElPTkZJTFRFUjJERVhUUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09O
Vk9MVVRJT05GSUxURVJFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09OVk9M
VVRJT05QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT05WT0xVVElPTlBBUkFN
RVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRTRVBBUkFCTEVGSUxURVJFWFRQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcm93LCBHTHZv
aWQgKmNvbHVtbiwgR0x2b2lkICpzcGFuKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFUEFSQUJM
RUZJTFRFUjJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwojIDE4NTYgIi4uLy4u
Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbENvbG9yVGFi
bGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2
b2lkICopOwpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVQYXJhbWV0ZXJmdlNHSSAoR0xlbnVtLCBH
TGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRl
cml2U0dJIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsQ29w
eUNvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWkpOwpl
eHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdM
dm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyZnZTR0kgKEdMZW51
bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVQYXJhbWV0
ZXJpdlNHSSAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5H
TENPTE9SVEFCTEVTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xDT1BZQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU
Q09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRleEdlblNHSVggKEdM
ZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5TR0lYUFJPQykgKEdMZW51
bSBtb2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVyaVNHSVMgKEdM
ZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVyaXZTR0lTIChH
TGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVy
ZlNHSVMgKEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUZXhHZW5QYXJhbWV0
ZXJmdlNHSVMgKEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhl
bFRleEdlblBhcmFtZXRlcml2U0dJUyAoR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xH
ZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUyAoR0xlbnVtLCBHTGZsb2F0ICopOwoKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSSVNHSVNQUk9DKSAoR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQSVhFTFRFWEdFTlBBUkFN
RVRFUklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5Q
QVJBTUVURVJGVlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUElYRUxURVhHRU5QQVJBTUVURVJJVlNHSVNQUk9D
KSAoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF
VFBJWEVMVEVYR0VOUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
cGFyYW1zKTsKCgoKCgpleHRlcm4gdm9pZCBnbFRleEltYWdlNERTR0lTIChHTGVudW0sIEdMaW50
LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMaW50LCBHTGVu
dW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFRleFN1YkltYWdlNERT
R0lTIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwg
R0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAq
KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTREU0dJU1BST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMaW50IGJvcmRl
ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0
LCBHTGludCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQgKnBpeGVscyk7CiMgMTkyMCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2ds
ZXh0LmgiCmV4dGVybiBHTGJvb2xlYW4gZ2xBcmVUZXh0dXJlc1Jlc2lkZW50RVhUIChHTHNpemVp
LCBjb25zdCBHTHVpbnQgKiwgR0xib29sZWFuICopOwpleHRlcm4gdm9pZCBnbEJpbmRUZXh0dXJl
RVhUIChHTGVudW0sIEdMdWludCk7CmV4dGVybiB2b2lkIGdsRGVsZXRlVGV4dHVyZXNFWFQgKEdM
c2l6ZWksIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZW5UZXh0dXJlc0VYVCAoR0xz
aXplaSwgR0x1aW50ICopOwpleHRlcm4gR0xib29sZWFuIGdsSXNUZXh0dXJlRVhUIChHTHVpbnQp
OwpleHRlcm4gdm9pZCBnbFByaW9yaXRpemVUZXh0dXJlc0VYVCAoR0xzaXplaSwgY29uc3QgR0x1
aW50ICosIGNvbnN0IEdMY2xhbXBmICopOwoKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdMQVJF
VEVYVFVSRVNSRVNJREVOVEVYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVy
ZXMsIEdMYm9vbGVhbiAqcmVzaWRlbmNlcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5EVEVY
VFVSRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xERUxFVEVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqdGV4dHVyZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VOVEVYVFVSRVNFWFRQUk9DKSAo
R0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKTsKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdM
SVNURVhUVVJFRVhUUFJPQykgKEdMdWludCB0ZXh0dXJlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFBSSU9SSVRJWkVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4
dHVyZXMsIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVzKTsKCgoKCgpleHRlcm4gdm9pZCBnbERl
dGFpbFRleEZ1bmNTR0lTIChHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVy
biB2b2lkIGdsR2V0RGV0YWlsVGV4RnVuY1NHSVMgKEdMZW51bSwgR0xmbG9hdCAqKTsKCnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBH
THNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH
RVRERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMp
OwoKCgoKCmV4dGVybiB2b2lkIGdsU2hhcnBlblRleEZ1bmNTR0lTIChHTGVudW0sIEdMc2l6ZWks
IGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0U2hhcnBlblRleEZ1bmNTR0lTIChH
TGVudW0sIEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0hBUlBFTlRFWEZVTkNT
R0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRz
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFNIQVJQRU5URVhGVU5DU0dJU1BST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMpOwojIDE5NjYgIi4uLy4uLy4uLy4uL2V4cG9ydHMv
aW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFNhbXBsZU1hc2tTR0lTIChHTGNsYW1w
ZiwgR0xib29sZWFuKTsKZXh0ZXJuIHZvaWQgZ2xTYW1wbGVQYXR0ZXJuU0dJUyAoR0xlbnVtKTsK
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVNQVNLU0dJU1BST0MpIChHTGNsYW1wZiB2YWx1
ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQQVRURVJO
U0dJU1BST0MpIChHTGVudW0gcGF0dGVybik7CiMgMTk4MCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9p
bmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQXJyYXlFbGVtZW50RVhUIChHTGludCk7
CmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyRVhUIChHTGludCwgR0xlbnVtLCBHTHNpemVpLCBH
THNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsRHJhd0FycmF5c0VYVCAoR0xl
bnVtLCBHTGludCwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGdsRWRnZUZsYWdQb2ludGVyRVhUIChH
THNpemVpLCBHTHNpemVpLCBjb25zdCBHTGJvb2xlYW4gKik7CmV4dGVybiB2b2lkIGdsR2V0UG9p
bnRlcnZFWFQgKEdMZW51bSwgR0x2b2lkKiAqKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleFBvaW50ZXJF
WFQgKEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9p
ZCBnbE5vcm1hbFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2
b2lkICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkUG9pbnRlckVYVCAoR0xpbnQsIEdMZW51bSwg
R0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFBv
aW50ZXJFWFQgKEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAq
KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xBUlJBWUVMRU1FTlRFWFRQUk9DKSAoR0xpbnQgaSk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg
KnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJBV0FSUkFZU0VYVFBST0MpIChHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMRURHRUZMQUdQT0lOVEVSRVhUUFJPQykgKEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGJvb2xlYW4gKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUE9J
TlRFUlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTHZvaWQqICpwYXJhbXMpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMSU5ERVhQT0lOVEVSRVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0
cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTE5PUk1BTFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBl
LCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg
KnBvaW50ZXIpOwojIDIwMjggIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5o
IgpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb25FWFQgKEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMQkxFTkRFUVVBVElPTkVYVFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjA1NiAiLi4v
Li4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsU3ByaXRl
UGFyYW1ldGVyZlNHSVggKEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsU3ByaXRlUGFy
YW1ldGVyZnZTR0lYIChHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsU3By
aXRlUGFyYW1ldGVyaVNHSVggKEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFNwcml0ZVBh
cmFtZXRlcml2U0dJWCAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKCnR5cGVkZWYgdm9pZCAoICog
UEZOR0xTUFJJVEVQQVJBTUVURVJGU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFNQUklURVBBUkFNRVRFUklTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CiMgMjA3NCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9p
bmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmRVhUIChHTGVu
dW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyZnZFWFQgKEdMZW51bSwg
Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xQb2ludFBhcmFtZXRlcmZTR0lTIChHTGVu
dW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyZnZTR0lTIChHTGVudW0s
IGNvbnN0IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE9JTlRQQVJBTUVURVJG
RVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xQT0lOVFBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlNHSVNQUk9D
KSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBP
SU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFy
YW1zKTsKCgoKCgpleHRlcm4gR0xpbnQgZ2xHZXRJbnN0cnVtZW50c1NHSVggKHZvaWQpOwpleHRl
cm4gdm9pZCBnbEluc3RydW1lbnRzQnVmZmVyU0dJWCAoR0xzaXplaSwgR0xpbnQgKik7CmV4dGVy
biBHTGludCBnbFBvbGxJbnN0cnVtZW50c1NHSVggKEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFJl
YWRJbnN0cnVtZW50c1NHSVggKEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xTdGFydEluc3RydW1lbnRz
U0dJWCAodm9pZCk7CmV4dGVybiB2b2lkIGdsU3RvcEluc3RydW1lbnRzU0dJWCAoR0xpbnQpOwoK
dHlwZWRlZiBHTGludCAoICogUEZOR0xHRVRJTlNUUlVNRU5UU1NHSVhQUk9DKSAodm9pZCk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xJTlNUUlVNRU5UU0JVRkZFUlNHSVhQUk9DKSAoR0xzaXplaSBz
aXplLCBHTGludCAqYnVmZmVyKTsKdHlwZWRlZiBHTGludCAoICogUEZOR0xQT0xMSU5TVFJVTUVO
VFNTR0lYUFJPQykgKEdMaW50ICptYXJrZXJfcCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRUFE
SU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50IG1hcmtlcik7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xTVEFSVElOU1RSVU1FTlRTU0dJWFBST0MpICh2b2lkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFNUT1BJTlNUUlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKIyAyMTEwICIuLi8uLi8u
Li8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xGcmFtZVpvb21T
R0lYIChHTGludCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBTUVaT09NU0dJWFBST0MpIChH
TGludCBmYWN0b3IpOwoKCgoKCmV4dGVybiB2b2lkIGdsVGFnU2FtcGxlQnVmZmVyU0dJWCAodm9p
ZCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lk
KTsKCgoKCgpleHRlcm4gdm9pZCBnbERlZm9ybWF0aW9uTWFwM2RTR0lYIChHTGVudW0sIEdMZG91
YmxlLCBHTGRvdWJsZSwgR0xpbnQsIEdMaW50LCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMaW50LCBH
TGludCwgR0xkb3VibGUsIEdMZG91YmxlLCBHTGludCwgR0xpbnQsIGNvbnN0IEdMZG91YmxlICop
OwpleHRlcm4gdm9pZCBnbERlZm9ybWF0aW9uTWFwM2ZTR0lYIChHTGVudW0sIEdMZmxvYXQsIEdM
ZmxvYXQsIEdMaW50LCBHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xpbnQsIEdMaW50LCBHTGZs
b2F0LCBHTGZsb2F0LCBHTGludCwgR0xpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk
IGdsRGVmb3JtU0dJWCAoR0xiaXRmaWVsZCk7CmV4dGVybiB2b2lkIGdsTG9hZElkZW50aXR5RGVm
b3JtYXRpb25NYXBTR0lYIChHTGJpdGZpZWxkKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUZP
Uk1BVElPTk1BUDNEU0dJWFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3Vi
bGUgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwgR0xkb3VibGUgdjEsIEdMZG91Ymxl
IHYyLCBHTGludCB2c3RyaWRlLCBHTGludCB2b3JkZXIsIEdMZG91YmxlIHcxLCBHTGRvdWJsZSB3
MiwgR0xpbnQgd3N0cmlkZSwgR0xpbnQgd29yZGVyLCBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTERFRk9STUFUSU9OTUFQM0ZTR0lYUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRl
ciwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBH
TGZsb2F0IHcxLCBHTGZsb2F0IHcyLCBHTGludCB3c3RyaWRlLCBHTGludCB3b3JkZXIsIGNvbnN0
IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUZPUk1TR0lYUFJPQykg
KEdMYml0ZmllbGQgbWFzayk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FESURFTlRJVFlERUZP
Uk1BVElPTk1BUFNHSVhQUk9DKSAoR0xiaXRmaWVsZCBtYXNrKTsKCgoKCgpleHRlcm4gdm9pZCBn
bFJlZmVyZW5jZVBsYW5lU0dJWCAoY29uc3QgR0xkb3VibGUgKik7Cgp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMUkVGRVJFTkNFUExBTkVTR0lYUFJPQykgKGNvbnN0IEdMZG91YmxlICplcXVhdGlvbik7
CgoKCgoKZXh0ZXJuIHZvaWQgZ2xGbHVzaFJhc3RlclNHSVggKHZvaWQpOwoKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTEZMVVNIUkFTVEVSU0dJWFBST0MpICh2b2lkKTsKIyAyMTYwICIuLi8uLi8uLi8u
Li9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xGb2dGdW5jU0dJUyAo
R0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGb2dGdW5jU0dJUyAo
Y29uc3QgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xGT0dGVU5DU0dJU1BST0Mp
IChHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xHRVRGT0dGVU5DU0dJU1BST0MpIChjb25zdCBHTGZsb2F0ICpwb2ludHMpOwojIDIxNzQgIi4u
Ly4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEltYWdl
VHJhbnNmb3JtUGFyYW1ldGVyaUhQIChHTGVudW0sIEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9p
ZCBnbEltYWdlVHJhbnNmb3JtUGFyYW1ldGVyZkhQIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7
CmV4dGVybiB2b2lkIGdsSW1hZ2VUcmFuc2Zvcm1QYXJhbWV0ZXJpdkhQIChHTGVudW0sIEdMZW51
bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsSW1hZ2VUcmFuc2Zvcm1QYXJhbWV0ZXJm
dkhQIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRJ
bWFnZVRyYW5zZm9ybVBhcmFtZXRlcml2SFAgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0
ZXJuIHZvaWQgZ2xHZXRJbWFnZVRyYW5zZm9ybVBhcmFtZXRlcmZ2SFAgKEdMZW51bSwgR0xlbnVt
LCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1F
VEVSSUhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGSFBQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSVZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
SU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVElN
QUdFVFJBTlNGT1JNUEFSQU1FVEVSSVZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSU1BR0VUUkFOU0ZP
Uk1QQVJBTUVURVJGVkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKTsKIyAyMjAwICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQu
aCIKZXh0ZXJuIHZvaWQgZ2xDb2xvclN1YlRhYmxlRVhUIChHTGVudW0sIEdMc2l6ZWksIEdMc2l6
ZWksIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29weUNv
bG9yU3ViVGFibGVFWFQgKEdMZW51bSwgR0xzaXplaSwgR0xpbnQsIEdMaW50LCBHTHNpemVpKTsK
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWUNPTE9S
U1VCVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFydCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CiMgMjIxNCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNs
dWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsSGludFBHSSAoR0xlbnVtLCBHTGludCk7Cgp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBt
b2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVFWFQgKEdMZW51bSwgR0xlbnVtLCBH
THNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdl
dENvbG9yVGFibGVFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKTsKZXh0ZXJu
IHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwg
R0xlbnVtLCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SVEFCTEVFWFRQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICp0YWJsZSk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMR0VUQ09MT1JUQUJMRVBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xP
UlRBQkxFUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpOwojIDIyNDAgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n
bGV4dC5oIgpleHRlcm4gdm9pZCBnbEdldExpc3RQYXJhbWV0ZXJmdlNHSVggKEdMdWludCwgR0xl
bnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldExpc3RQYXJhbWV0ZXJpdlNHSVggKEdM
dWludCwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZlNHSVgg
KEdMdWludCwgR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZnZT
R0lYIChHTHVpbnQsIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0
UGFyYW1ldGVyaVNHSVggKEdMdWludCwgR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsTGlz
dFBhcmFtZXRlcml2U0dJWCAoR0x1aW50LCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwoKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNHSVhQUk9DKSAoR0x1aW50IGxpc3Qs
IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF
VExJU1RQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlNHSVhQUk9D
KSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNU
UEFSQU1FVEVSSVNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUklWU0dJWFBST0MpIChHTHVp
bnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKIyAyMjc4ICIuLi8u
Li8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xJbmRleE1h
dGVyaWFsRVhUIChHTGVudW0sIEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU5ERVhN
QVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwoKCgoKCmV4dGVybiB2
b2lkIGdsSW5kZXhGdW5jRVhUIChHTGVudW0sIEdMY2xhbXBmKTsKCnR5cGVkZWYgdm9pZCAoICog
UEZOR0xJTkRFWEZVTkNFWFRQUk9DKSAoR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJlZik7CiMgMjI5
OCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGds
TG9ja0FycmF5c0VYVCAoR0xpbnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbFVubG9ja0FycmF5
c0VYVCAodm9pZCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9DS0FSUkFZU0VYVFBST0MpIChH
TGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xVTkxPQ0tB
UlJBWVNFWFRQUk9DKSAodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xDdWxsUGFyYW1ldGVyZHZF
WFQgKEdMZW51bSwgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsQ3VsbFBhcmFtZXRlcmZ2RVhU
IChHTGVudW0sIEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ1VMTFBBUkFNRVRF
UkRWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xDVUxMUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICpwYXJhbXMpOwojIDIzMjIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5o
IgpleHRlcm4gdm9pZCBnbEZyYWdtZW50Q29sb3JNYXRlcmlhbFNHSVggKEdMZW51bSwgR0xlbnVt
KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0ZlNHSVggKEdMZW51bSwgR0xlbnVtLCBHTGZs
b2F0KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0ZnZTR0lYIChHTGVudW0sIEdMZW51bSwg
Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0aVNHSVggKEdMZW51
bSwgR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRMaWdodGl2U0dJWCAoR0xl
bnVtLCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRN
b2RlbGZTR0lYIChHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRN
b2RlbGZ2U0dJWCAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEZyYWdt
ZW50TGlnaHRNb2RlbGlTR0lYIChHTGVudW0sIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVu
dExpZ2h0TW9kZWxpdlNHSVggKEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGds
RnJhZ21lbnRNYXRlcmlhbGZTR0lYIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2
b2lkIGdsRnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMZmxv
YXQgKik7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRNYXRlcmlhbGlTR0lYIChHTGVudW0sIEdMZW51
bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TWF0ZXJpYWxpdlNHSVggKEdMZW51bSwg
R0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVudExpZ2h0ZnZT
R0lYIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVu
dExpZ2h0aXZTR0lYIChHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0
RnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVy
biB2b2lkIGdsR2V0RnJhZ21lbnRNYXRlcmlhbGl2U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMaW50
ICopOwpleHRlcm4gdm9pZCBnbExpZ2h0RW52aVNHSVggKEdMZW51bSwgR0xpbnQpOwoKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UQ09MT1JNQVRFUklBTFNHSVhQUk9DKSAoR0xlbnVtIGZh
Y2UsIEdMZW51bSBtb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRGU0dJ
WFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMRlJBR01FTlRMSUdIVElTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUSVZTR0lYUFJP
QykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBw
bmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hU
TU9ERUxGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVE1PREVMSVNHSVhQUk9DKSAoR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hU
TU9ERUxJVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxGU0dJWFBST0MpIChHTGVudW0gZmFj
ZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZS
QUdNRU5UTUFURVJJQUxGVlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJ
QUxJU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBm
YWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMR0VURlJBR01FTlRMSUdIVEZWU0dJWFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZSQUdNRU5U
TElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0Mp
IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMR0VURlJBR01FTlRNQVRFUklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExJR0hU
RU5WSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiMgMjM3MiAiLi4vLi4v
Li4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRHJhd1Jhbmdl
RWxlbWVudHNFWFQgKEdMZW51bSwgR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMZW51bSwgY29u
c3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTERSQVdSQU5HRUVMRU1FTlRTRVhU
UFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMpOwojIDIzODggIi4uLy4uLy4u
Ly4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEFwcGx5VGV4dHVy
ZUVYVCAoR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xUZXh0dXJlTGlnaHRFWFQgKEdMZW51bSk7CmV4
dGVybiB2b2lkIGdsVGV4dHVyZU1hdGVyaWFsRVhUIChHTGVudW0sIEdMZW51bSk7Cgp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQVBQTFlURVhUVVJFRVhUUFJPQykgKEdMZW51bSBtb2RlKTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFRFWFRVUkVMSUdIVEVYVFBST0MpIChHTGVudW0gcG5hbWUpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRU1BVEVSSUFMRVhUUFJPQykgKEdMZW51bSBmYWNlLCBH
TGVudW0gbW9kZSk7CiMgMjQwOCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0
LmgiCmV4dGVybiB2b2lkIGdsQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwpleHRlcm4gR0xpbnQg
Z2xGaW5pc2hBc3luY1NHSVggKEdMdWludCAqKTsKZXh0ZXJuIEdMaW50IGdsUG9sbEFzeW5jU0dJ
WCAoR0x1aW50ICopOwpleHRlcm4gR0x1aW50IGdsR2VuQXN5bmNNYXJrZXJzU0dJWCAoR0xzaXpl
aSk7CmV4dGVybiB2b2lkIGdsRGVsZXRlQXN5bmNNYXJrZXJzU0dJWCAoR0x1aW50LCBHTHNpemVp
KTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwoKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEFTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKdHlw
ZWRlZiBHTGludCAoICogUEZOR0xGSU5JU0hBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICptYXJrZXJw
KTsKdHlwZWRlZiBHTGludCAoICogUEZOR0xQT0xMQVNZTkNTR0lYUFJPQykgKEdMdWludCAqbWFy
a2VycCk7CnR5cGVkZWYgR0x1aW50ICggKiBQRk5HTEdFTkFTWU5DTUFSS0VSU1NHSVhQUk9DKSAo
R0xzaXplaSByYW5nZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUxFVEVBU1lOQ01BUktFUlNT
R0lYUFJPQykgKEdMdWludCBtYXJrZXIsIEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIEdMYm9vbGVh
biAoICogUEZOR0xJU0FTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKIyAyNDM0
ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xW
ZXJ0ZXhQb2ludGVydklOVEVMIChHTGludCwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICopOwpleHRl
cm4gdm9pZCBnbE5vcm1hbFBvaW50ZXJ2SU5URUwgKEdMZW51bSwgY29uc3QgR0x2b2lkKiAqKTsK
ZXh0ZXJuIHZvaWQgZ2xDb2xvclBvaW50ZXJ2SU5URUwgKEdMaW50LCBHTGVudW0sIGNvbnN0IEdM
dm9pZCogKik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmRQb2ludGVydklOVEVMIChHTGludCwgR0xl
bnVtLCBjb25zdCBHTHZvaWQqICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5U
RVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBv
aW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xDT0xPUlBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0
IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVS
VklOVEVMUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2lu
dGVyKTsKIyAyNDUyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0
ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZm9ybVBhcmFtZXRlcmlFWFQgKEdMZW51bSwgR0xlbnVtLCBH
TGludCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2Zvcm1QYXJhbWV0ZXJmRVhUIChHTGVudW0s
IEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2Zvcm1QYXJhbWV0ZXJp
dkVYVCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFBpeGVs
VHJhbnNmb3JtUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGZsb2F0ICop
OwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSSUVYVFBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElY
RUxUUkFOU0ZPUk1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFO
U0ZPUk1QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcyk7CiMgMjQ3OCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRl
L0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYkVYVCAoR0xieXRlLCBH
TGJ5dGUsIEdMYnl0ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYnZFWFQgKGNvbnN0
IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkRVhUIChHTGRvdWJsZSwg
R0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkdkVYVCAo
Y29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZkVYVCAoR0xm
bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZnZF
WFQgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaUVYVCAo
R0xpbnQsIEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaXZFWFQg
KGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3NFWFQgKEdMc2hv
cnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3N2RVhU
IChjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3ViRVhUIChH
THVieXRlLCBHTHVieXRlLCBHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1
YnZFWFQgKGNvbnN0IEdMdWJ5dGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWlF
WFQgKEdMdWludCwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9y
M3VpdkVYVCAoY29uc3QgR0x1aW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3Vz
RVhUIChHTHVzaG9ydCwgR0x1c2hvcnQsIEdMdXNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRh
cnlDb2xvcjN1c3ZFWFQgKGNvbnN0IEdMdXNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFy
eUNvbG9yUG9pbnRlckVYVCAoR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0x2b2lkICopOwoKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JFWFRQUk9DKSAoR0xieXRlIHJlZCwg
R0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRB
UllDT0xPUjNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMU0VDT05EQVJZQ09MT1IzREVYVFBST0MpIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu
LCBHTGRvdWJsZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RW
RVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09O
REFSWUNPTE9SM0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg
Ymx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNGVkVYVFBST0MpIChj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lF
WFRQUk9DKSAoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTRVhUUFJPQykgKEdMc2hvcnQgcmVk
LCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VD
T05EQVJZQ09MT1IzU1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQkVYVFBST0MpIChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBn
cmVlbiwgR0x1Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9S
M1VCVkVYVFBST0MpIChjb25zdCBHTHVieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNF
Q09OREFSWUNPTE9SM1VJRVhUUFJPQykgKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50
IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykg
KGNvbnN0IEdMdWludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNV
U0VYVFBST0MpIChHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTVkVYVFBST0MpIChjb25zdCBH
THVzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJF
WFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHZvaWQg
KnBvaW50ZXIpOwoKCgoKCmV4dGVybiB2b2lkIGdsVGV4dHVyZU5vcm1hbEVYVCAoR0xlbnVtKTsK
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTk9STUFMRVhUUFJPQykgKEdMZW51bSBtb2Rl
KTsKCgoKCgpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtLCBHTGludCAq
LCBHTHNpemVpICosIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0VsZW1lbnRzRVhU
IChHTGVudW0sIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICosIEdMc2l6
ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVu
dW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElEUkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVt
IG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAq
aW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwoKCgoKCmV4dGVybiB2b2lkIGdsRm9nQ29vcmRm
RVhUIChHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xGb2dDb29yZGZ2RVhUIChjb25zdCBHTGZsb2F0
ICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZEVYVCAoR0xkb3VibGUpOwpleHRlcm4gdm9pZCBn
bEZvZ0Nvb3JkZHZFWFQgKGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3Jk
UG9pbnRlckVYVCAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7Cgp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMRk9HQ09PUkRGRVhUUFJPQykgKEdMZmxvYXQgY29vcmQpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMRk9HQ09PUkRGVkVYVFBST0MpIChjb25zdCBHTGZsb2F0ICpjb29yZCk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29vcmQpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkREVkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAq
Y29vcmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdM
ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyNTU2
ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xU
YW5nZW50M2JFWFQgKEdMYnl0ZSwgR0xieXRlLCBHTGJ5dGUpOwpleHRlcm4gdm9pZCBnbFRhbmdl
bnQzYnZFWFQgKGNvbnN0IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2RFWFQgKEdM
ZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzZHZFWFQg
KGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzZkVYVCAoR0xmbG9hdCwg
R0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVGFuZ2VudDNmdkVYVCAoY29uc3QgR0xm
bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2lFWFQgKEdMaW50LCBHTGludCwgR0xpbnQp
OwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzaXZFWFQgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9p
ZCBnbFRhbmdlbnQzc0VYVCAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lk
IGdsVGFuZ2VudDNzdkVYVCAoY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1h
bDNiRVhUIChHTGJ5dGUsIEdMYnl0ZSwgR0xieXRlKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNi
dkVYVCAoY29uc3QgR0xieXRlICopOwpleHRlcm4gdm9pZCBnbEJpbm9ybWFsM2RFWFQgKEdMZG91
YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbEJpbm9ybWFsM2R2RVhUIChj
b25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNmRVhUIChHTGZsb2F0LCBH
TGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNmdkVYVCAoY29uc3QgR0xm
bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNpRVhUIChHTGludCwgR0xpbnQsIEdMaW50
KTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNpdkVYVCAoY29uc3QgR0xpbnQgKik7CmV4dGVybiB2
b2lkIGdsQmlub3JtYWwzc0VYVCAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2
b2lkIGdsQmlub3JtYWwzc3ZFWFQgKGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVGFu
Z2VudFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4g
dm9pZCBnbEJpbm9ybWFsUG9pbnRlckVYVCAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQg
Kik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNCRVhUUFJPQykgKEdMYnl0ZSB0eCwg
R0xieXRlIHR5LCBHTGJ5dGUgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNCVkVY
VFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNE
RVhUUFJPQykgKEdMZG91YmxlIHR4LCBHTGRvdWJsZSB0eSwgR0xkb3VibGUgdHopOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNEVkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0ZFWFRQUk9DKSAoR0xmbG9hdCB0eCwgR0xmbG9h
dCB0eSwgR0xmbG9hdCB0eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0ZWRVhUUFJP
QykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNJRVhU
UFJPQykgKEdMaW50IHR4LCBHTGludCB0eSwgR0xpbnQgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEFOR0VOVDNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xUQU5HRU5UM1NFWFRQUk9DKSAoR0xzaG9ydCB0eCwgR0xzaG9ydCB0eSwgR0xzaG9ydCB0
eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hv
cnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzQkVYVFBST0MpIChHTGJ5dGUg
YngsIEdMYnl0ZSBieSwgR0xieXRlIGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFM
M0JWRVhUUFJPQykgKGNvbnN0IEdMYnl0ZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5P
Uk1BTDNERVhUUFJPQykgKEdMZG91YmxlIGJ4LCBHTGRvdWJsZSBieSwgR0xkb3VibGUgYnopOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUg
KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRkVYVFBST0MpIChHTGZsb2F0IGJ4
LCBHTGZsb2F0IGJ5LCBHTGZsb2F0IGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFM
M0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklO
T1JNQUwzSUVYVFBST0MpIChHTGludCBieCwgR0xpbnQgYnksIEdMaW50IGJ6KTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTEJJTk9STUFMM0lWRVhUUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM1NFWFRQUk9DKSAoR0xzaG9ydCBieCwgR0xzaG9ydCBi
eSwgR0xzaG9ydCBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNTVkVYVFBST0Mp
IChjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlRQT0lOVEVS
RVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2lu
dGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVu
dW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjYyMiAi
Li4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRmlu
aXNoVGV4dHVyZVNVTlggKHZvaWQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZJTklTSFRFWFRV
UkVTVU5YUFJPQykgKHZvaWQpOwoKCgoKCmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3Ji
U1VOIChHTGJ5dGUpOwpleHRlcm4gdm9pZCBnbEdsb2JhbEFscGhhRmFjdG9yc1NVTiAoR0xzaG9y
dCk7CmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3JpU1VOIChHTGludCk7CmV4dGVybiB2
b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3JmU1VOIChHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xHbG9i
YWxBbHBoYUZhY3RvcmRTVU4gKEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZh
Y3RvcnViU1VOIChHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZhY3RvcnVzU1VO
IChHTHVzaG9ydCk7CmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3J1aVNVTiAoR0x1aW50
KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkJTVU5QUk9DKSAoR0xi
eXRlIGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlNTVU5Q
Uk9DKSAoR0xzaG9ydCBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFG
QUNUT1JJU1VOUFJPQykgKEdMaW50IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9C
QUxBTFBIQUZBQ1RPUkZTVU5QUk9DKSAoR0xmbG9hdCBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JEU1VOUFJPQykgKEdMZG91YmxlIGZhY3Rvcik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVCU1VOUFJPQykgKEdMdWJ5dGUgZmFj
dG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SVVNTVU5QUk9DKSAo
R0x1c2hvcnQgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9S
VUlTVU5QUk9DKSAoR0x1aW50IGZhY3Rvcik7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVu
dENvZGV1aVNVTiAoR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1c1NVTiAo
R0x1c2hvcnQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXViU1VOIChHTHVieXRlKTsK
ZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aXZTVU4gKGNvbnN0IEdMdWludCAqKTsKZXh0
ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1c3ZTVU4gKGNvbnN0IEdMdXNob3J0ICopOwpleHRl
cm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVidlNVTiAoY29uc3QgR0x1Ynl0ZSAqKTsKZXh0ZXJu
IHZvaWQgZ2xSZXBsYWNlbWVudENvZGVQb2ludGVyU1VOIChHTGVudW0sIEdMc2l6ZWksIGNvbnN0
IEdMdm9pZCogKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5Q
Uk9DKSAoR0x1aW50IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RF
VVNTVU5QUk9DKSAoR0x1c2hvcnQgY29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNF
TUVOVENPREVVQlNVTlBST0MpIChHTHVieXRlIGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UkVQTEFDRU1FTlRDT0RFVUlWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVU1ZTVU5QUk9DKSAoY29uc3QgR0x1c2hvcnQg
KmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUJWU1VOUFJPQykg
KGNvbnN0IEdMdWJ5dGUgKmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRD
T0RFUE9JTlRFUlNVTlBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdM
dm9pZCogKnBvaW50ZXIpOwoKCgoKCmV4dGVybiB2b2lkIGdsQ29sb3I0dWJWZXJ0ZXgyZlNVTiAo
R0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4
dGVybiB2b2lkIGdsQ29sb3I0dWJWZXJ0ZXgyZnZTVU4gKGNvbnN0IEdMdWJ5dGUgKiwgY29uc3Qg
R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1YlZlcnRleDNmU1VOIChHTHVieXRlLCBH
THVieXRlLCBHTHVieXRlLCBHTHVieXRlLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0
ZXJuIHZvaWQgZ2xDb2xvcjR1YlZlcnRleDNmdlNVTiAoY29uc3QgR0x1Ynl0ZSAqLCBjb25zdCBH
TGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbENvbG9yM2ZWZXJ0ZXgzZlNVTiAoR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGds
Q29sb3IzZlZlcnRleDNmdlNVTiAoY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpl
eHRlcm4gdm9pZCBnbE5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv
YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNmVmVy
dGV4M2Z2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk
IGdsQ29sb3I0Zk5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQs
IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM
ZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbG9yNGZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3Qg
R0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk
IGdsVGV4Q29vcmQyZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs
b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmVmVydGV4M2Z2U1VOIChjb25z
dCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZlZl
cnRleDRmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBH
TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmVmVydGV4
NGZ2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGds
VGV4Q29vcmQyZkNvbG9yNHViVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMdWJ5dGUs
IEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpl
eHRlcm4gdm9pZCBnbFRleENvb3JkMmZDb2xvcjR1YlZlcnRleDNmdlNVTiAoY29uc3QgR0xmbG9h
dCAqLCBjb25zdCBHTHVieXRlICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVGV4
Q29vcmQyZkNvbG9yM2ZWZXJ0ZXgzZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGds
VGV4Q29vcmQyZkNvbG9yM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xm
bG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZOb3JtYWwz
ZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0
LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmTm9y
bWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAqLCBjb25z
dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZDb2xvcjRmTm9ybWFsM2ZWZXJ0
ZXgzZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h
dCk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRleDNmdlNVTiAo
Y29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3Qg
R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmQ29sb3I0Zk5vcm1hbDNmVmVydGV4
NGZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv
YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQs
IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGZDb2xv
cjRmTm9ybWFsM2ZWZXJ0ZXg0ZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAq
LCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFj
ZW1lbnRDb2RldWlWZXJ0ZXgzZlNVTiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0
KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVZlcnRleDNmdlNVTiAoY29uc3QgR0xl
bnVtICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD
b2xvcjR1YlZlcnRleDNmU1VOIChHTGVudW0sIEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdM
dWJ5dGUsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2Vt
ZW50Q29kZXVpQ29sb3I0dWJWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZW51bSAqLCBjb25zdCBHTHVi
eXRlICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD
b2xvcjNmVmVydGV4M2ZTVU4gKEdMZW51bSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD
b2xvcjNmVmVydGV4M2Z2U1VOIChjb25zdCBHTGVudW0gKiwgY29uc3QgR0xmbG9hdCAqLCBjb25z
dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpTm9ybWFsM2ZWZXJ0
ZXgzZlNVTiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs
b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aU5vcm1hbDNmVmVy
dGV4M2Z2U1VOIChjb25zdCBHTGVudW0gKiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0
ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpQ29sb3I0Zk5vcm1hbDNmVmVydGV4
M2ZTVU4gKEdMZW51bSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h
dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2
b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlDb2xvcjRmTm9ybWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0
IEdMZW51bSAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9h
dCAqKTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENvb3JkMmZWZXJ0ZXgzZlNV
TiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsK
ZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENvb3JkMmZWZXJ0ZXgzZnZTVU4gKGNv
bnN0IEdMZW51bSAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2
b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlUZXhDb29yZDJmTm9ybWFsM2ZWZXJ0ZXgzZlNVTiAoR0xl
bnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0
LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENv
b3JkMmZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3QgR0xlbnVtICosIGNvbnN0IEdMZmxvYXQg
KiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFJlcGxh
Y2VtZW50Q29kZXVpVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRleDNmU1VOIChHTGVudW0s
IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM
ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRl
cm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRl
eDNmdlNVTiAoY29uc3QgR0xlbnVtICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAq
LCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMQ09MT1I0VUJWRVJURVgyRlNVTlBST0MpIChHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0
ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTENPTE9SNFVCVkVSVEVYMkZWU1VOUFJPQykgKGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJURVgzRlNVTlBST0Mp
IChHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJU
RVgzRlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCByLCBHTGZs
b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQg
KmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJU
RVgzRlNVTlBST0MpIChHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTDNG
VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xm
bG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZs
b2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTENPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25z
dCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdM
ZmxvYXQgdCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xURVhDT09SRDJGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JENEZWRVJURVg0
RlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBwLCBHTGZsb2F0IHEsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xURVhDT09SRDRGVkVSVEVYNEZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRV
QlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTHVieXRlIHIsIEdMdWJ5
dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNFVCVkVSVEVYM0ZWU1VO
UFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTHVieXRlICpjLCBjb25zdCBHTGZsb2F0
ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjNGVkVSVEVYM0ZTVU5Q
Uk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0
IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMs
IGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0
IHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNG
VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpuLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRG
Tk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBy
LCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55
LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAo
Y29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNv
bnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZO
T1JNQUwzRlZFUlRFWDRGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAs
IEdMZmxvYXQgcSwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBH
TGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6LCBHTGZsb2F0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RkNP
TE9SNEZOT1JNQUwzRlZFUlRFWDRGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3Qg
R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSBy
YywgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xSRVBMQUNFTUVOVENPREVVSVZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJ
Q09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBn
LCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNFVCVkVSVEVYM0ZW
U1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxv
YXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVS
VEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBi
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFJFUExBQ0VNRU5UQ09ERVVJQ09MT1IzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0g
KnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGVudW0g
cmMsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlO
T1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0
ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5U
Q09ERVVJQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0
IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQg
bnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlZT
VU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9h
dCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVO
VENPREVVSVRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgcywg
R0xmbG9hdCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRlZFUlRFWDNGVlNVTlBST0MpIChj
b25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqdik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZF
UlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg
bngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGTk9S
TUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAq
dGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZT
VU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZs
b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZs
b2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNG
VlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xm
bG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CgoKCgoKZXh0ZXJu
IHZvaWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xl
bnVtKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xCTEVOREZVTkNTRVBBUkFURUVYVFBST0MpIChH
TGVudW0gc2ZhY3RvclJHQiwgR0xlbnVtIGRmYWN0b3JSR0IsIEdMZW51bSBzZmFjdG9yQWxwaGEs
IEdMZW51bSBkZmFjdG9yQWxwaGEpOwojIDI4MDIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVk
ZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFZlcnRleFdlaWdodGZFWFQgKEdMZmxvYXQpOwpl
eHRlcm4gdm9pZCBnbFZlcnRleFdlaWdodGZ2RVhUIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4g
dm9pZCBnbFZlcnRleFdlaWdodFBvaW50ZXJFWFQgKEdMc2l6ZWksIEdMZW51bSwgR0xzaXplaSwg
Y29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFdFSUdIVEZFWFRQ
Uk9DKSAoR0xmbG9hdCB3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYV0VJR0hU
RlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqd2VpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFZFUlRFWFdFSUdIVFBPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwg
R0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjgxOCAiLi4vLi4vLi4v
Li4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRmx1c2hWZXJ0ZXhB
cnJheVJhbmdlTlYgKHZvaWQpOwpleHRlcm4gdm9pZCBnbFZlcnRleEFycmF5UmFuZ2VOViAoR0xz
aXplaSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZMVVNIVkVSVEVY
QVJSQVlSQU5HRU5WUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVJS
QVlSQU5HRU5WUFJPQykgKEdMc2l6ZWkgc2l6ZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKCgoK
CgpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyZnZOViAoR0xlbnVtLCBjb25zdCBHTGZs
b2F0ICopOwpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyZk5WIChHTGVudW0sIEdMZmxv
YXQpOwpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyaXZOViAoR0xlbnVtLCBjb25zdCBH
TGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb21iaW5lclBhcmFtZXRlcmlOViAoR0xlbnVtLCBHTGlu
dCk7CmV4dGVybiB2b2lkIGdsQ29tYmluZXJJbnB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVt
LCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xDb21iaW5lck91dHB1dE5W
IChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0s
IEdMYm9vbGVhbiwgR0xib29sZWFuLCBHTGJvb2xlYW4pOwpleHRlcm4gdm9pZCBnbEZpbmFsQ29t
YmluZXJJbnB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pOwpleHRlcm4gdm9p
ZCBnbEdldENvbWJpbmVySW5wdXRQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVt
LCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29tYmluZXJJbnB1dFBhcmFt
ZXRlcml2TlYgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVy
biB2b2lkIGdsR2V0Q29tYmluZXJPdXRwdXRQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwg
R0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldENvbWJpbmVyT3V0cHV0UGFyYW1l
dGVyaXZOViAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGds
R2V0RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyZnZOViAoR0xlbnVtLCBHTGVudW0sIEdMZmxv
YXQgKik7CmV4dGVybiB2b2lkIGdsR2V0RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyaXZOViAo
R0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVS
UEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJB
TUVURVJJVk5WUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUlBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0Mp
IChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBp
bnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xDT01CSU5FUk9VVFBVVE5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBv
cnRpb24sIEdMZW51bSBhYk91dHB1dCwgR0xlbnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0
LCBHTGVudW0gc2NhbGUsIEdMZW51bSBiaWFzLCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJv
b2xlYW4gY2REb3RQcm9kdWN0LCBHTGJvb2xlYW4gbXV4U3VtKTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEZJTkFMQ09NQklORVJJTlBVVE5WUFJPQykgKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlu
cHV0LCBHTGVudW0gbWFwcGluZywgR0xlbnVtIGNvbXBvbmVudFVzYWdlKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTEdFVENPTUJJTkVSSU5QVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFn
ZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJJTlBVVFBBUkFNRVRF
UklWTlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxl
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU
Q09NQklORVJPVVRQVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBv
cnRpb24sIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEdFVENPTUJJTkVST1VUUFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdM
ZW51bSBwb3J0aW9uLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMR0VURklOQUxDT01CSU5FUklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0g
dmFyaWFibGUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTEdFVEZJTkFMQ09NQklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHZh
cmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwojIDI4NzYgIi4uLy4uLy4uLy4u
L2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFJlc2l6ZUJ1ZmZlcnNN
RVNBICh2b2lkKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0Mp
ICh2b2lkKTsKCgoKCgpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJkTUVTQSAoR0xkb3VibGUsIEdM
ZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZHZNRVNBIChjb25zdCBHTGRvdWJsZSAq
KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZk1FU0EgKEdMZmxvYXQsIEdMZmxvYXQpOwpleHRl
cm4gdm9pZCBnbFdpbmRvd1BvczJmdk1FU0EgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk
IGdsV2luZG93UG9zMmlNRVNBIChHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1Bv
czJpdk1FU0EgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJzTUVTQSAo
R0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMnN2TUVTQSAoY29uc3Qg
R0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZE1FU0EgKEdMZG91YmxlLCBHTGRv
dWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNkdk1FU0EgKGNvbnN0IEdM
ZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNmTUVTQSAoR0xmbG9hdCwgR0xmbG9h
dCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2Z2TUVTQSAoY29uc3QgR0xmbG9h
dCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzaU1FU0EgKEdMaW50LCBHTGludCwgR0xpbnQp
OwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNpdk1FU0EgKGNvbnN0IEdMaW50ICopOwpleHRlcm4g
dm9pZCBnbFdpbmRvd1BvczNzTUVTQSAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVy
biB2b2lkIGdsV2luZG93UG9zM3N2TUVTQSAoY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQg
Z2xXaW5kb3dQb3M0ZE1FU0EgKEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91Ymxl
KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0ZHZNRVNBIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0
ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0Zk1FU0EgKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM
ZmxvYXQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczRmdk1FU0EgKGNvbnN0IEdMZmxvYXQgKik7
CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGlNRVNBIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu
dCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGl2TUVTQSAoY29uc3QgR0xpbnQgKik7CmV4dGVy
biB2b2lkIGdsV2luZG93UG9zNHNNRVNBIChHTHNob3J0LCBHTHNob3J0LCBHTHNob3J0LCBHTHNo
b3J0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0c3ZNRVNBIChjb25zdCBHTHNob3J0ICopOwoK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJETUVTQVBST0MpIChHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJEVk1FU0FQUk9DKSAo
Y29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkZNRVNB
UFJPQykgKEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRP
V1BPUzJGVk1FU0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xXSU5ET1dQT1MySU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xXSU5ET1dQT1MySVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFdJTkRPV1BPUzJTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hv
cnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0RNRVNBUFJPQykgKEdMZG91
YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO
RE9XUE9TM0RWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xXSU5ET1dQT1MzRk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRlZNRVNBUFJPQykgKGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0lNRVNBUFJPQykgKEdM
aW50IHgsIEdMaW50IHksIEdMaW50IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9T
M0lWTUVTQVBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5E
T1dQT1MzU01FU0FQUk9DKSAoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNERNRVNBUFJPQykgKEdMZG91YmxlIHgs
IEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMV0lORE9XUE9TNERWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xXSU5ET1dQT1M0Rk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRGVk1F
U0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQ
T1M0SU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0SVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRTTUVTQVBST0MpIChHTHNob3J0IHgsIEdM
c2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO
RE9XUE9TNFNWTUVTQVBST0MpIChjb25zdCBHTHNob3J0ICp2KTsKIyAyOTQyICIuLi8uLi8uLi8u
Li9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xNdWx0aU1vZGVEcmF3
QXJyYXlzSUJNIChHTGVudW0sIGNvbnN0IEdMaW50ICosIGNvbnN0IEdMc2l6ZWkgKiwgR0xzaXpl
aSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbE11bHRpTW9kZURyYXdFbGVtZW50c0lCTSAoY29uc3Qg
R0xlbnVtICosIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICosIEdMc2l6
ZWksIEdMaW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSU1PREVEUkFXQVJSQVlTSUJN
UFJPQykgKEdMZW51bSBtb2RlLCBjb25zdCBHTGludCAqZmlyc3QsIGNvbnN0IEdMc2l6ZWkgKmNv
dW50LCBHTHNpemVpIHByaW1jb3VudCwgR0xpbnQgbW9kZXN0cmlkZSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xNVUxUSU1PREVEUkFXRUxFTUVOVFNJQk1QUk9DKSAoY29uc3QgR0xlbnVtICptb2Rl
LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGlj
ZXMsIEdMc2l6ZWkgcHJpbWNvdW50LCBHTGludCBtb2Rlc3RyaWRlKTsKCgoKCgpleHRlcm4gdm9p
ZCBnbENvbG9yUG9pbnRlckxpc3RJQk0gKEdMaW50LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHZv
aWQqICosIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvclBvaW50ZXJMaXN0SUJN
IChHTGludCwgR0xlbnVtLCBHTGludCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2
b2lkIGdsRWRnZUZsYWdQb2ludGVyTGlzdElCTSAoR0xpbnQsIGNvbnN0IEdMYm9vbGVhbiogKiwg
R0xpbnQpOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkUG9pbnRlckxpc3RJQk0gKEdMZW51bSwgR0xp
bnQsIGNvbnN0IEdMdm9pZCogKiwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEluZGV4UG9pbnRlckxp
c3RJQk0gKEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMdm9pZCogKiwgR0xpbnQpOwpleHRlcm4gdm9p
ZCBnbE5vcm1hbFBvaW50ZXJMaXN0SUJNIChHTGVudW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICos
IEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZFBvaW50ZXJMaXN0SUJNIChHTGludCwgR0xl
bnVtLCBHTGludCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2b2lkIGdsVmVydGV4
UG9pbnRlckxpc3RJQk0gKEdMaW50LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICosIEdM
aW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJMSVNUSUJNUFJPQykgKEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50
ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xP
UlBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJp
ZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xFREdFRkxBR1BPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHN0cmlkZSwgY29u
c3QgR0xib29sZWFuKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTEZPR0NPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50IHN0
cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTElOREVYUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50
IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTE5PUk1BTFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0eXBlLCBH
TGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNp
emUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdM
aW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhQT0lOVEVSTElTVElC
TVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZv
aWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwojIDI5OTggIi4uLy4uLy4uLy4uL2V4cG9y
dHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFRidWZmZXJNYXNrM0RGWCAoR0x1
aW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQlVGRkVSTUFTSzNERlhQUk9DKSAoR0x1aW50
IG1hc2spOwoKCgoKCmV4dGVybiB2b2lkIGdsU2FtcGxlTWFza0VYVCAoR0xjbGFtcGYsIEdMYm9v
bGVhbik7CmV4dGVybiB2b2lkIGdsU2FtcGxlUGF0dGVybkVYVCAoR0xlbnVtKTsKCnR5cGVkZWYg
dm9pZCAoICogUEZOR0xTQU1QTEVNQVNLRVhUUFJPQykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xl
YW4gaW52ZXJ0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNBTVBMRVBBVFRFUk5FWFRQUk9DKSAo
R0xlbnVtIHBhdHRlcm4pOwojIDMwMzIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n
bGV4dC5oIgpleHRlcm4gdm9pZCBnbFRleHR1cmVDb2xvck1hc2tTR0lTIChHTGJvb2xlYW4sIEdM
Ym9vbGVhbiwgR0xib29sZWFuLCBHTGJvb2xlYW4pOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRF
WFRVUkVDT0xPUk1BU0tTR0lTUFJPQykgKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwg
R0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xJZ2xv
b0ludGVyZmFjZVNHSVggKEdMZW51bSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTElHTE9PSU5URVJGQUNFU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMdm9p
ZCAqcGFyYW1zKTsKIyAyMjQ2ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIg
MgojIDE2NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2dsaGVhZGVyLmgiIDIKIyAzNSAi
dHJhbnNsYXRlLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbWVtLmgiIDEK
IyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL21lbS5oIgpleHRlcm4gdm9pZCAqX21l
c2FfbWFsbG9jKHNpemVfdCBieXRlcyk7CmV4dGVybiB2b2lkICpfbWVzYV9jYWxsb2Moc2l6ZV90
IGJ5dGVzKTsKZXh0ZXJuIHZvaWQgX21lc2FfZnJlZSh2b2lkICpwdHIpOwoKZXh0ZXJuIHZvaWQg
Kl9tZXNhX2FsaWduX21hbGxvYyhzaXplX3QgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgYWxpZ25tZW50
KTsKZXh0ZXJuIHZvaWQgKl9tZXNhX2FsaWduX2NhbGxvYyhzaXplX3QgYnl0ZXMsIHVuc2lnbmVk
IGxvbmcgYWxpZ25tZW50KTsKZXh0ZXJuIHZvaWQgX21lc2FfYWxpZ25fZnJlZSh2b2lkICpwdHIp
OwojIDM2ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9t
YWNyb3MuaCIgMQojIDM3ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy9tbWF0aC5oIiAxCiMgMTU1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbW1h
dGguaCIKc3RhdGljIF9faW5saW5lX18gaW50IEZsb2F0VG9JbnQoZmxvYXQgZikKewogICBpbnQg
cjsKICAgX19hc21fXyAoImZpc3RwbCAlMCIgOiAiPW0iIChyKSA6ICJ0IiAoZikgOiAic3QiKTsK
ICAgcmV0dXJuIHI7Cn0KIyAxOTggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9tbWF0aC5o
IgpleHRlcm4gZmxvYXQgZ2xfc3FydChmbG9hdCB4KTsKIyAyOTEgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy9tbWF0aC5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgSVNfSU5GX09SX05BTigg
ZmxvYXQgeCApCnsKICAgdW5pb24ge2Zsb2F0IGY7IGludCBpO30gdG1wOwogICB0bXAuZiA9IHg7
CiAgIHJldHVybiAhKGludCkoKHVuc2lnbmVkIGludCkoKHRtcC5pICYgMHg3ZmZmZmZmZiktMHg3
ZjgwMDAwMCkgPj4gMzEpOwp9CgoKCgpleHRlcm4gZmxvYXQgZ2xfdWJ5dGVfdG9fZmxvYXRfY29s
b3JfdGFiWzI1Nl07CmV4dGVybiBmbG9hdCBnbF91Ynl0ZV90b19mbG9hdF8yNTVfY29sb3JfdGFi
WzI1Nl07CiMgMzQ1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbW1hdGguaCIKZXh0ZXJu
IHZvaWQKX21lc2FfaW5pdF9tYXRoKHZvaWQpOwoKCmV4dGVybiBHTHVpbnQKX21lc2FfYml0Y291
bnQoR0x1aW50IG4pOwojIDM4ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy90cmFuc2xhdGUuaCIgMQojIDMwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvdHJhbnNsYXRlLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgi
IDEKIyAzMyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCiMgMSAiLi4vLi4v
Li4vLi4vZXh0cmFzL01lc2Evc3JjL2NvbmZpZy5oIiAxCiMgMTk3ICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvY29uZmlnLmgiCnR5cGVkZWYgc3RydWN0IGdsX2NvbnRleHQgR0xjb250ZXh0
OwoKZXh0ZXJuIHZvaWQKZ2xfcmVhZF9jb25maWdfZmlsZSggc3RydWN0IGdsX2NvbnRleHQgKmN0
eCApOwoKZXh0ZXJuIHZvaWQKZ2xfcmVnaXN0ZXJfY29uZmlnX3Zhcihjb25zdCBjaGFyICpuYW1l
LCB2b2lkICgqbm90aWZ5KSggY29uc3QgY2hhciAqLCBpbnQgKSk7CiMgMzQgIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL2ZpeGVkLmgiIDEKIyAzMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2ZpeGVkLmgi
CnR5cGVkZWYgaW50IEdMZml4ZWQ7CiMgMzUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2dsYXBpdGFibGUuaCIg
MQoKCgoKCgpzdHJ1Y3QgX2dsYXBpX3RhYmxlCnsKICAgdm9pZCAoKk5ld0xpc3QpKEdMdWludCBs
aXN0LCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpFbmRMaXN0KSh2b2lkKTsKICAgdm9pZCAoKkNh
bGxMaXN0KShHTHVpbnQgbGlzdCk7CiAgIHZvaWQgKCpDYWxsTGlzdHMpKEdMc2l6ZWkgbiwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIGxpc3RzKTsKICAgdm9pZCAoKkRlbGV0ZUxpc3RzKShH
THVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSk7CiAgIEdMdWludCAoKkdlbkxpc3RzKShHTHNpemVp
IHJhbmdlKTsKICAgdm9pZCAoKkxpc3RCYXNlKShHTHVpbnQgYmFzZSk7CiAgIHZvaWQgKCpCZWdp
bikoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqQml0bWFwKShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xmbG9hdCB4b3JpZywgR0xmbG9hdCB5b3JpZywgR0xmbG9hdCB4bW92ZSwgR0xm
bG9hdCB5bW92ZSwgY29uc3QgR0x1Ynl0ZSAqIGJpdG1hcCk7CiAgIHZvaWQgKCpDb2xvcjNiKShH
TGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKICAgdm9pZCAoKkNvbG9yM2J2
KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9pZCAoKkNvbG9yM2QpKEdMZG91YmxlIHJlZCwgR0xk
b3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwogICB2b2lkICgqQ29sb3IzZHYpKGNvbnN0IEdM
ZG91YmxlICogdik7CiAgIHZvaWQgKCpDb2xvcjNmKShHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVl
biwgR0xmbG9hdCBibHVlKTsKICAgdm9pZCAoKkNvbG9yM2Z2KShjb25zdCBHTGZsb2F0ICogdik7
CiAgIHZvaWQgKCpDb2xvcjNpKShHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKTsK
ICAgdm9pZCAoKkNvbG9yM2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqQ29sb3Izcyko
R0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7CiAgIHZvaWQgKCpDb2xv
cjNzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqQ29sb3IzdWIpKEdMdWJ5dGUgcmVk
LCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwogICB2b2lkICgqQ29sb3IzdWJ2KShjb25z
dCBHTHVieXRlICogdik7CiAgIHZvaWQgKCpDb2xvcjN1aSkoR0x1aW50IHJlZCwgR0x1aW50IGdy
ZWVuLCBHTHVpbnQgYmx1ZSk7CiAgIHZvaWQgKCpDb2xvcjN1aXYpKGNvbnN0IEdMdWludCAqIHYp
OwogICB2b2lkICgqQ29sb3IzdXMpKEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNo
b3J0IGJsdWUpOwogICB2b2lkICgqQ29sb3IzdXN2KShjb25zdCBHTHVzaG9ydCAqIHYpOwogICB2
b2lkICgqQ29sb3I0YikoR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSwgR0xi
eXRlIGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNGJ2KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9p
ZCAoKkNvbG9yNGQpKEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUs
IEdMZG91YmxlIGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNGR2KShjb25zdCBHTGRvdWJsZSAqIHYp
OwogICB2b2lkICgqQ29sb3I0ZikoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg
Ymx1ZSwgR0xmbG9hdCBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjRmdikoY29uc3QgR0xmbG9hdCAq
IHYpOwogICB2b2lkICgqQ29sb3I0aSkoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1
ZSwgR0xpbnQgYWxwaGEpOwogICB2b2lkICgqQ29sb3I0aXYpKGNvbnN0IEdMaW50ICogdik7CiAg
IHZvaWQgKCpDb2xvcjRzKShHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVl
LCBHTHNob3J0IGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNHN2KShjb25zdCBHTHNob3J0ICogdik7
CiAgIHZvaWQgKCpDb2xvcjR1YikoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUg
Ymx1ZSwgR0x1Ynl0ZSBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjR1YnYpKGNvbnN0IEdMdWJ5dGUg
KiB2KTsKICAgdm9pZCAoKkNvbG9yNHVpKShHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWlu
dCBibHVlLCBHTHVpbnQgYWxwaGEpOwogICB2b2lkICgqQ29sb3I0dWl2KShjb25zdCBHTHVpbnQg
KiB2KTsKICAgdm9pZCAoKkNvbG9yNHVzKShHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBH
THVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjR1c3YpKGNvbnN0
IEdMdXNob3J0ICogdik7CiAgIHZvaWQgKCpFZGdlRmxhZykoR0xib29sZWFuIGZsYWcpOwogICB2
b2lkICgqRWRnZUZsYWd2KShjb25zdCBHTGJvb2xlYW4gKiBmbGFnKTsKICAgdm9pZCAoKkVuZCko
dm9pZCk7CiAgIHZvaWQgKCpJbmRleGQpKEdMZG91YmxlIGMpOwogICB2b2lkICgqSW5kZXhkdiko
Y29uc3QgR0xkb3VibGUgKiBjKTsKICAgdm9pZCAoKkluZGV4ZikoR0xmbG9hdCBjKTsKICAgdm9p
ZCAoKkluZGV4ZnYpKGNvbnN0IEdMZmxvYXQgKiBjKTsKICAgdm9pZCAoKkluZGV4aSkoR0xpbnQg
Yyk7CiAgIHZvaWQgKCpJbmRleGl2KShjb25zdCBHTGludCAqIGMpOwogICB2b2lkICgqSW5kZXhz
KShHTHNob3J0IGMpOwogICB2b2lkICgqSW5kZXhzdikoY29uc3QgR0xzaG9ydCAqIGMpOwogICB2
b2lkICgqTm9ybWFsM2IpKEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnopOwogICB2b2lk
ICgqTm9ybWFsM2J2KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9pZCAoKk5vcm1hbDNkKShHTGRv
dWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KTsKICAgdm9pZCAoKk5vcm1hbDNkdiko
Y29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKk5vcm1hbDNmKShHTGZsb2F0IG54LCBHTGZs
b2F0IG55LCBHTGZsb2F0IG56KTsKICAgdm9pZCAoKk5vcm1hbDNmdikoY29uc3QgR0xmbG9hdCAq
IHYpOwogICB2b2lkICgqTm9ybWFsM2kpKEdMaW50IG54LCBHTGludCBueSwgR0xpbnQgbnopOwog
ICB2b2lkICgqTm9ybWFsM2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqTm9ybWFsM3Mp
KEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnopOwogICB2b2lkICgqTm9ybWFsM3N2
KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZCkoR0xkb3VibGUgeCwg
R0xkb3VibGUgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZHYpKGNvbnN0IEdMZG91YmxlICogdik7
CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZikoR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwogICB2b2lkICgq
UmFzdGVyUG9zMmZ2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyaSko
R0xpbnQgeCwgR0xpbnQgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyaXYpKGNvbnN0IEdMaW50ICog
dik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MycykoR0xzaG9ydCB4LCBHTHNob3J0IHkpOwogICB2b2lk
ICgqUmFzdGVyUG9zMnN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3Mz
ZCkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7CiAgIHZvaWQgKCpSYXN0ZXJQ
b3MzZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MzZikoR0xmbG9h
dCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MzZnYpKGNvbnN0
IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczNpKShHTGludCB4LCBHTGludCB5LCBH
TGludCB6KTsKICAgdm9pZCAoKlJhc3RlclBvczNpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9p
ZCAoKlJhc3RlclBvczNzKShHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKICAgdm9p
ZCAoKlJhc3RlclBvczNzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqUmFzdGVyUG9z
NGQpKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwogICB2
b2lkICgqUmFzdGVyUG9zNGR2KShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqUmFzdGVy
UG9zNGYpKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgIHZv
aWQgKCpSYXN0ZXJQb3M0ZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBv
czRpKShHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKICAgdm9pZCAoKlJhc3Rl
clBvczRpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczRzKShHTHNob3J0
IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpOwogICB2b2lkICgqUmFzdGVyUG9z
NHN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSZWN0ZCkoR0xkb3VibGUgeDEsIEdM
ZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xkb3VibGUgeTIpOwogICB2b2lkICgqUmVjdGR2KShj
b25zdCBHTGRvdWJsZSAqIHYxLCBjb25zdCBHTGRvdWJsZSAqIHYyKTsKICAgdm9pZCAoKlJlY3Rm
KShHTGZsb2F0IHgxLCBHTGZsb2F0IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyKTsKICAgdm9p
ZCAoKlJlY3RmdikoY29uc3QgR0xmbG9hdCAqIHYxLCBjb25zdCBHTGZsb2F0ICogdjIpOwogICB2
b2lkICgqUmVjdGkpKEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyKTsKICAg
dm9pZCAoKlJlY3RpdikoY29uc3QgR0xpbnQgKiB2MSwgY29uc3QgR0xpbnQgKiB2Mik7CiAgIHZv
aWQgKCpSZWN0cykoR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5
Mik7CiAgIHZvaWQgKCpSZWN0c3YpKGNvbnN0IEdMc2hvcnQgKiB2MSwgY29uc3QgR0xzaG9ydCAq
IHYyKTsKICAgdm9pZCAoKlRleENvb3JkMWQpKEdMZG91YmxlIHMpOwogICB2b2lkICgqVGV4Q29v
cmQxZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDFmKShHTGZsb2F0
IHMpOwogICB2b2lkICgqVGV4Q29vcmQxZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAo
KlRleENvb3JkMWkpKEdMaW50IHMpOwogICB2b2lkICgqVGV4Q29vcmQxaXYpKGNvbnN0IEdMaW50
ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDFzKShHTHNob3J0IHMpOwogICB2b2lkICgqVGV4Q29v
cmQxc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkMmQpKEdMZG91Ymxl
IHMsIEdMZG91YmxlIHQpOwogICB2b2lkICgqVGV4Q29vcmQyZHYpKGNvbnN0IEdMZG91YmxlICog
dik7CiAgIHZvaWQgKCpUZXhDb29yZDJmKShHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CiAgIHZvaWQg
KCpUZXhDb29yZDJmdikoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQyaSko
R0xpbnQgcywgR0xpbnQgdCk7CiAgIHZvaWQgKCpUZXhDb29yZDJpdikoY29uc3QgR0xpbnQgKiB2
KTsKICAgdm9pZCAoKlRleENvb3JkMnMpKEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKICAgdm9pZCAo
KlRleENvb3JkMnN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDNkKShH
TGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKICAgdm9pZCAoKlRleENvb3JkM2R2
KShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQzZikoR0xmbG9hdCBzLCBH
TGZsb2F0IHQsIEdMZmxvYXQgcik7CiAgIHZvaWQgKCpUZXhDb29yZDNmdikoY29uc3QgR0xmbG9h
dCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQzaSkoR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7
CiAgIHZvaWQgKCpUZXhDb29yZDNpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlRleENv
b3JkM3MpKEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpOwogICB2b2lkICgqVGV4Q29v
cmQzc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkNGQpKEdMZG91Ymxl
IHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEpOwogICB2b2lkICgqVGV4Q29v
cmQ0ZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDRmKShHTGZsb2F0
IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0
ZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkNGkpKEdMaW50IHMsIEdM
aW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0aXYpKGNvbnN0IEdM
aW50ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDRzKShHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xz
aG9ydCByLCBHTHNob3J0IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0c3YpKGNvbnN0IEdMc2hvcnQg
KiB2KTsKICAgdm9pZCAoKlZlcnRleDJkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKICAgdm9p
ZCAoKlZlcnRleDJkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlZlcnRleDJmKShH
TGZsb2F0IHgsIEdMZmxvYXQgeSk7CiAgIHZvaWQgKCpWZXJ0ZXgyZnYpKGNvbnN0IEdMZmxvYXQg
KiB2KTsKICAgdm9pZCAoKlZlcnRleDJpKShHTGludCB4LCBHTGludCB5KTsKICAgdm9pZCAoKlZl
cnRleDJpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlZlcnRleDJzKShHTHNob3J0IHgs
IEdMc2hvcnQgeSk7CiAgIHZvaWQgKCpWZXJ0ZXgyc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAg
dm9pZCAoKlZlcnRleDNkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKICAg
dm9pZCAoKlZlcnRleDNkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlZlcnRleDNm
KShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKlZlcnRleDNmdiko
Y29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4M2kpKEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHopOwogICB2b2lkICgqVmVydGV4M2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lk
ICgqVmVydGV4M3MpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwogICB2b2lkICgq
VmVydGV4M3N2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXg0ZCkoR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7CiAgIHZvaWQgKCpWZXJ0
ZXg0ZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpWZXJ0ZXg0ZikoR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgdm9pZCAoKlZlcnRleDRmdiko
Y29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4NGkpKEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHosIEdMaW50IHcpOwogICB2b2lkICgqVmVydGV4NGl2KShjb25zdCBHTGludCAqIHYp
OwogICB2b2lkICgqVmVydGV4NHMpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdM
c2hvcnQgdyk7CiAgIHZvaWQgKCpWZXJ0ZXg0c3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p
ZCAoKkNsaXBQbGFuZSkoR0xlbnVtIHBsYW5lLCBjb25zdCBHTGRvdWJsZSAqIGVxdWF0aW9uKTsK
ICAgdm9pZCAoKkNvbG9yTWF0ZXJpYWwpKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAgIHZv
aWQgKCpDdWxsRmFjZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqRm9nZikoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKkZvZ2Z2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqRm9naSkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh
bSk7CiAgIHZvaWQgKCpGb2dpdikoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7
CiAgIHZvaWQgKCpGcm9udEZhY2UpKEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkhpbnQpKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkxpZ2h0ZikoR0xlbnVtIGxpZ2h0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqTGlnaHRmdikoR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqTGln
aHRpKShHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2b2lkICgq
TGlnaHRpdikoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1z
KTsKICAgdm9pZCAoKkxpZ2h0TW9kZWxmKShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwog
ICB2b2lkICgqTGlnaHRNb2RlbGZ2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJh
bXMpOwogICB2b2lkICgqTGlnaHRNb2RlbGkpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwog
ICB2b2lkICgqTGlnaHRNb2RlbGl2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1z
KTsKICAgdm9pZCAoKkxpbmVTdGlwcGxlKShHTGludCBmYWN0b3IsIEdMdXNob3J0IHBhdHRlcm4p
OwogICB2b2lkICgqTGluZVdpZHRoKShHTGZsb2F0IHdpZHRoKTsKICAgdm9pZCAoKk1hdGVyaWFs
ZikoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpN
YXRlcmlhbGZ2KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICogcGFy
YW1zKTsKICAgdm9pZCAoKk1hdGVyaWFsaSkoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pOwogICB2b2lkICgqTWF0ZXJpYWxpdikoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqUG9pbnRTaXplKShHTGZsb2F0IHNp
emUpOwogICB2b2lkICgqUG9seWdvbk1vZGUpKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAg
IHZvaWQgKCpQb2x5Z29uU3RpcHBsZSkoY29uc3QgR0x1Ynl0ZSAqIG1hc2spOwogICB2b2lkICgq
U2Npc3NvcikoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwogICB2b2lkICgqU2hhZGVNb2RlbCkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqVGV4UGFyYW1l
dGVyZikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9p
ZCAoKlRleFBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqVGV4UGFyYW1ldGVyaSkoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpUZXhQYXJhbWV0ZXJpdikoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg
KCpUZXhJbWFnZTFEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQgKCpUZXhJbWFnZTJEKShHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lkICgqVGV4RW52ZikoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKlRleEVudmZ2KShH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2
b2lkICgqVGV4RW52aSkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7
CiAgIHZvaWQgKCpUZXhFbnZpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhHZW5kKShHTGVudW0gY29vcmQsIEdMZW51bSBw
bmFtZSwgR0xkb3VibGUgcGFyYW0pOwogICB2b2lkICgqVGV4R2VuZHYpKEdMZW51bSBjb29yZCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhHZW5m
KShHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpU
ZXhHZW5mdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJh
bXMpOwogICB2b2lkICgqVGV4R2VuaSkoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtKTsKICAgdm9pZCAoKlRleEdlbml2KShHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqRmVlZGJhY2tCdWZmZXIpKEdMc2l6ZWkg
c2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKiBidWZmZXIpOwogICB2b2lkICgqU2VsZWN0QnVm
ZmVyKShHTHNpemVpIHNpemUsIEdMdWludCAqIGJ1ZmZlcik7CiAgIEdMaW50ICgqUmVuZGVyTW9k
ZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqSW5pdE5hbWVzKSh2b2lkKTsKICAgdm9pZCAoKkxv
YWROYW1lKShHTHVpbnQgbmFtZSk7CiAgIHZvaWQgKCpQYXNzVGhyb3VnaCkoR0xmbG9hdCB0b2tl
bik7CiAgIHZvaWQgKCpQb3BOYW1lKSh2b2lkKTsKICAgdm9pZCAoKlB1c2hOYW1lKShHTHVpbnQg
bmFtZSk7CiAgIHZvaWQgKCpEcmF3QnVmZmVyKShHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpDbGVh
cikoR0xiaXRmaWVsZCBtYXNrKTsKICAgdm9pZCAoKkNsZWFyQWNjdW0pKEdMZmxvYXQgcmVkLCBH
TGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOwogICB2b2lkICgqQ2xl
YXJJbmRleCkoR0xmbG9hdCBjKTsKICAgdm9pZCAoKkNsZWFyQ29sb3IpKEdMY2xhbXBmIHJlZCwg
R0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgdm9pZCAo
KkNsZWFyU3RlbmNpbCkoR0xpbnQgcyk7CiAgIHZvaWQgKCpDbGVhckRlcHRoKShHTGNsYW1wZCBk
ZXB0aCk7CiAgIHZvaWQgKCpTdGVuY2lsTWFzaykoR0x1aW50IG1hc2spOwogICB2b2lkICgqQ29s
b3JNYXNrKShHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBH
TGJvb2xlYW4gYWxwaGEpOwogICB2b2lkICgqRGVwdGhNYXNrKShHTGJvb2xlYW4gZmxhZyk7CiAg
IHZvaWQgKCpJbmRleE1hc2spKEdMdWludCBtYXNrKTsKICAgdm9pZCAoKkFjY3VtKShHTGVudW0g
b3AsIEdMZmxvYXQgdmFsdWUpOwogICB2b2lkICgqRGlzYWJsZSkoR0xlbnVtIGNhcCk7CiAgIHZv
aWQgKCpFbmFibGUpKEdMZW51bSBjYXApOwogICB2b2lkICgqRmluaXNoKSh2b2lkKTsKICAgdm9p
ZCAoKkZsdXNoKSh2b2lkKTsKICAgdm9pZCAoKlBvcEF0dHJpYikodm9pZCk7CiAgIHZvaWQgKCpQ
dXNoQXR0cmliKShHTGJpdGZpZWxkIG1hc2spOwogICB2b2lkICgqTWFwMWQpKEdMZW51bSB0YXJn
ZXQsIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgc3RyaWRlLCBHTGludCBvcmRlciwg
Y29uc3QgR0xkb3VibGUgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMWYpKEdMZW51bSB0YXJnZXQs
IEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHN0cmlkZSwgR0xpbnQgb3JkZXIsIGNvbnN0
IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMmQpKEdMZW51bSB0YXJnZXQsIEdMZG91
YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGRvdWJs
ZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgY29uc3QgR0xk
b3VibGUgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMmYpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQg
dTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwgR0xmbG9hdCB2MSwg
R0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBjb25zdCBHTGZsb2F0ICog
cG9pbnRzKTsKICAgdm9pZCAoKk1hcEdyaWQxZCkoR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRv
dWJsZSB1Mik7CiAgIHZvaWQgKCpNYXBHcmlkMWYpKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZs
b2F0IHUyKTsKICAgdm9pZCAoKk1hcEdyaWQyZCkoR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRv
dWJsZSB1MiwgR0xpbnQgdm4sIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2Mik7CiAgIHZvaWQgKCpN
YXBHcmlkMmYpKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB2biwgR0xm
bG9hdCB2MSwgR0xmbG9hdCB2Mik7CiAgIHZvaWQgKCpFdmFsQ29vcmQxZCkoR0xkb3VibGUgdSk7
CiAgIHZvaWQgKCpFdmFsQ29vcmQxZHYpKGNvbnN0IEdMZG91YmxlICogdSk7CiAgIHZvaWQgKCpF
dmFsQ29vcmQxZikoR0xmbG9hdCB1KTsKICAgdm9pZCAoKkV2YWxDb29yZDFmdikoY29uc3QgR0xm
bG9hdCAqIHUpOwogICB2b2lkICgqRXZhbENvb3JkMmQpKEdMZG91YmxlIHUsIEdMZG91YmxlIHYp
OwogICB2b2lkICgqRXZhbENvb3JkMmR2KShjb25zdCBHTGRvdWJsZSAqIHUpOwogICB2b2lkICgq
RXZhbENvb3JkMmYpKEdMZmxvYXQgdSwgR0xmbG9hdCB2KTsKICAgdm9pZCAoKkV2YWxDb29yZDJm
dikoY29uc3QgR0xmbG9hdCAqIHUpOwogICB2b2lkICgqRXZhbE1lc2gxKShHTGVudW0gbW9kZSwg
R0xpbnQgaTEsIEdMaW50IGkyKTsKICAgdm9pZCAoKkV2YWxQb2ludDEpKEdMaW50IGkpOwogICB2
b2lkICgqRXZhbE1lc2gyKShHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyLCBHTGludCBq
MSwgR0xpbnQgajIpOwogICB2b2lkICgqRXZhbFBvaW50MikoR0xpbnQgaSwgR0xpbnQgaik7CiAg
IHZvaWQgKCpBbHBoYUZ1bmMpKEdMZW51bSBmdW5jLCBHTGNsYW1wZiByZWYpOwogICB2b2lkICgq
QmxlbmRGdW5jKShHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwogICB2b2lkICgqTG9n
aWNPcCkoR0xlbnVtIG9wY29kZSk7CiAgIHZvaWQgKCpTdGVuY2lsRnVuYykoR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogICB2b2lkICgqU3RlbmNpbE9wKShHTGVudW0gZmFp
bCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwogICB2b2lkICgqRGVwdGhGdW5jKShHTGVu
dW0gZnVuYyk7CiAgIHZvaWQgKCpQaXhlbFpvb20pKEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5
ZmFjdG9yKTsKICAgdm9pZCAoKlBpeGVsVHJhbnNmZXJmKShHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwogICB2b2lkICgqUGl4ZWxUcmFuc2ZlcmkpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwogICB2b2lkICgqUGl4ZWxTdG9yZWYpKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7
CiAgIHZvaWQgKCpQaXhlbFN0b3JlaSkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZv
aWQgKCpQaXhlbE1hcGZ2KShHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLCBjb25zdCBHTGZsb2F0
ICogdmFsdWVzKTsKICAgdm9pZCAoKlBpeGVsTWFwdWl2KShHTGVudW0gbWFwLCBHTGludCBtYXBz
aXplLCBjb25zdCBHTHVpbnQgKiB2YWx1ZXMpOwogICB2b2lkICgqUGl4ZWxNYXB1c3YpKEdMZW51
bSBtYXAsIEdMaW50IG1hcHNpemUsIGNvbnN0IEdMdXNob3J0ICogdmFsdWVzKTsKICAgdm9pZCAo
KlJlYWRCdWZmZXIpKEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkNvcHlQaXhlbHMpKEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gdHlwZSk7CiAg
IHZvaWQgKCpSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHBpeGVscyk7
CiAgIHZvaWQgKCpEcmF3UGl4ZWxzKShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQg
KCpHZXRCb29sZWFudikoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKiBwYXJhbXMpOwogICB2b2lk
ICgqR2V0Q2xpcFBsYW5lKShHTGVudW0gcGxhbmUsIEdMZG91YmxlICogZXF1YXRpb24pOwogICB2
b2lkICgqR2V0RG91YmxldikoR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIEdM
ZW51bSAoKkdldEVycm9yKSh2b2lkKTsKICAgdm9pZCAoKkdldEZsb2F0dikoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEludGVnZXJ2KShHTGVudW0gcG5hbWUs
IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldExpZ2h0ZnYpKEdMZW51bSBsaWdodCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldExpZ2h0aXYpKEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRNYXBk
dikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgq
R2V0TWFwZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9hdCAqIHYpOwogICB2
b2lkICgqR2V0TWFwaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKiB2KTsK
ICAgdm9pZCAoKkdldE1hdGVyaWFsZnYpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0TWF0ZXJpYWxpdikoR0xlbnVtIGZhY2UsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0UGl4ZWxNYXBmdikoR0xlbnVt
IG1hcCwgR0xmbG9hdCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRQaXhlbE1hcHVpdikoR0xlbnVt
IG1hcCwgR0x1aW50ICogdmFsdWVzKTsKICAgdm9pZCAoKkdldFBpeGVsTWFwdXN2KShHTGVudW0g
bWFwLCBHTHVzaG9ydCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRQb2x5Z29uU3RpcHBsZSkoR0x1
Ynl0ZSAqIG1hc2spOwogICBjb25zdCBHTHVieXRlICogKCpHZXRTdHJpbmcpKEdMZW51bSBuYW1l
KTsKICAgdm9pZCAoKkdldFRleEVudmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0VGV4RW52aXYpKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0VGV4R2VuZHYpKEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRU
ZXhHZW5mdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwog
ICB2b2lkICgqR2V0VGV4R2VuaXYpKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
IHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhJbWFnZSkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lk
ICgqR2V0VGV4UGFyYW1ldGVyZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhQYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldFRleExldmVsUGFyYW1ldGVyaXYpKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgR0xib29s
ZWFuICgqSXNFbmFibGVkKShHTGVudW0gY2FwKTsKICAgR0xib29sZWFuICgqSXNMaXN0KShHTHVp
bnQgbGlzdCk7CiAgIHZvaWQgKCpEZXB0aFJhbmdlKShHTGNsYW1wZCBuZWFyLCBHTGNsYW1wZCBm
YXIpOwogICB2b2lkICgqRnJ1c3R1bSkoR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdM
ZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6TmVhciwgR0xkb3VibGUgekZh
cik7CiAgIHZvaWQgKCpMb2FkSWRlbnRpdHkpKHZvaWQpOwogICB2b2lkICgqTG9hZE1hdHJpeGYp
KGNvbnN0IEdMZmxvYXQgKiBtKTsKICAgdm9pZCAoKkxvYWRNYXRyaXhkKShjb25zdCBHTGRvdWJs
ZSAqIG0pOwogICB2b2lkICgqTWF0cml4TW9kZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqTXVs
dE1hdHJpeGYpKGNvbnN0IEdMZmxvYXQgKiBtKTsKICAgdm9pZCAoKk11bHRNYXRyaXhkKShjb25z
dCBHTGRvdWJsZSAqIG0pOwogICB2b2lkICgqT3J0aG8pKEdMZG91YmxlIGxlZnQsIEdMZG91Ymxl
IHJpZ2h0LCBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCwgR0xkb3VibGUgek5lYXIsIEdM
ZG91YmxlIHpGYXIpOwogICB2b2lkICgqUG9wTWF0cml4KSh2b2lkKTsKICAgdm9pZCAoKlB1c2hN
YXRyaXgpKHZvaWQpOwogICB2b2lkICgqUm90YXRlZCkoR0xkb3VibGUgYW5nbGUsIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqUm90YXRlZikoR0xmbG9hdCBh
bmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpTY2FsZWQp
KEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqU2NhbGVmKShH
TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKlRyYW5zbGF0ZWQpKEdM
ZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqVHJhbnNsYXRlZiko
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpWaWV3cG9ydCkoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgq
QXJyYXlFbGVtZW50KShHTGludCBpKTsKICAgdm9pZCAoKkJpbmRUZXh0dXJlKShHTGVudW0gdGFy
Z2V0LCBHTGVudW0gdGV4dHVyZSk7CiAgIHZvaWQgKCpDb2xvclBvaW50ZXIpKEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAg
IHZvaWQgKCpEaXNhYmxlQ2xpZW50U3RhdGUpKEdMZW51bSBhcnJheSk7CiAgIHZvaWQgKCpEcmF3
QXJyYXlzKShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwogICB2b2lk
ICgqRHJhd0VsZW1lbnRzKShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqIGluZGljZXMpOwogICB2b2lkICgqRWRnZUZsYWdQb2ludGVyKShHTHNp
emVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpFbmFibGVDbGll
bnRTdGF0ZSkoR0xlbnVtIGFycmF5KTsKICAgdm9pZCAoKkluZGV4UG9pbnRlcikoR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKklu
ZGV4dWIpKEdMdWJ5dGUgYyk7CiAgIHZvaWQgKCpJbmRleHVidikoY29uc3QgR0x1Ynl0ZSAqIGMp
OwogICB2b2lkICgqSW50ZXJsZWF2ZWRBcnJheXMpKEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKk5vcm1hbFBvaW50ZXIpKEdM
ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZv
aWQgKCpQb2x5Z29uT2Zmc2V0KShHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CiAgIHZv
aWQgKCpUZXhDb29yZFBvaW50ZXIpKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0
cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpWZXJ0ZXhQb2ludGVyKShH
TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBv
aW50ZXIpOwogICBHTGJvb2xlYW4gKCpBcmVUZXh0dXJlc1Jlc2lkZW50KShHTHNpemVpIG4sIGNv
bnN0IEdMZW51bSAqIHRleHR1cmVzLCBHTGJvb2xlYW4gKiByZXNpZGVuY2VzKTsKICAgdm9pZCAo
KkNvcHlUZXhJbWFnZTFEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIp
OwogICB2b2lkICgqQ29weVRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwogICB2b2lkICgqQ29weVRleFN1YkltYWdlMUQp
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNvcHlUZXhTdWJJbWFnZTJEKShHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgqRGVs
ZXRlVGV4dHVyZXMpKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICogdGV4dHVyZXMpOwogICB2b2lk
ICgqR2VuVGV4dHVyZXMpKEdMc2l6ZWkgbiwgR0xlbnVtICogdGV4dHVyZXMpOwogICB2b2lkICgq
R2V0UG9pbnRlcnYpKEdMZW51bSBwbmFtZSwgR0x2b2lkICogKiBwYXJhbXMpOwogICBHTGJvb2xl
YW4gKCpJc1RleHR1cmUpKEdMZW51bSB0ZXh0dXJlKTsKICAgdm9pZCAoKlByaW9yaXRpemVUZXh0
dXJlcykoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKiB0ZXh0dXJlcywgY29uc3QgR0xjbGFtcGYg
KiBwcmlvcml0aWVzKTsKICAgdm9pZCAoKlRleFN1YkltYWdlMUQpKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4ZWxzKTsKICAgdm9pZCAoKlRleFN1YkltYWdl
MkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQgKCpQb3BDbGllbnRBdHRyaWIp
KHZvaWQpOwogICB2b2lkICgqUHVzaENsaWVudEF0dHJpYikoR0xiaXRmaWVsZCBtYXNrKTsKICAg
dm9pZCAoKkJsZW5kQ29sb3IpKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBm
IGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgdm9pZCAoKkJsZW5kRXF1YXRpb24pKEdMZW51bSBt
b2RlKTsKICAgdm9pZCAoKkRyYXdSYW5nZUVsZW1lbnRzKShHTGVudW0gbW9kZSwgR0x1aW50IHN0
YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICogaW5kaWNlcyk7CiAgIHZvaWQgKCpDb2xvclRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKiB0YWJsZSk7CiAgIHZvaWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyZnYp
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAg
IHZvaWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqQ29weUNvbG9yVGFibGUpKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCk7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdGFibGUpOwogICB2b2lkICgqR2V0Q29sb3JU
YWJsZVBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBw
YXJhbXMpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkNvbG9yU3ViVGFibGUp
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiBkYXRhKTsKICAgdm9pZCAoKkNvcHlDb2xv
clN1YlRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHN0YXJ0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNvbnZvbHV0aW9uRmlsdGVyMUQpKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIGltYWdlKTsKICAgdm9pZCAoKkNvbnZvbHV0
aW9uRmlsdGVyMkQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHZvaWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpDb252b2x1dGlvblBhcmFtZXRlcmYpKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbXMpOwogICB2b2lkICgqQ29udm9s
dXRpb25QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs
b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkNvbnZvbHV0aW9uUGFyYW1ldGVyaSkoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbXMpOwogICB2b2lkICgqQ29udm9sdXRpb25Q
YXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBh
cmFtcyk7CiAgIHZvaWQgKCpDb3B5Q29udm9sdXRpb25GaWx0ZXIxRCkoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsK
ICAgdm9pZCAoKkNvcHlDb252b2x1dGlvbkZpbHRlcjJEKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKICAgdm9pZCAoKkdldENvbnZvbHV0aW9uRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogaW1hZ2UpOwogICB2b2lkICgqR2V0
Q29udm9sdXRpb25QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXYpKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0U2Vw
YXJhYmxlRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0x2b2lkICogcm93LCBHTHZvaWQgKiBjb2x1bW4sIEdMdm9pZCAqIHNwYW4pOwogICB2b2lkICgq
U2VwYXJhYmxlRmlsdGVyMkQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKiByb3csIGNvbnN0IEdMdm9pZCAqIGNvbHVtbik7CiAgIHZvaWQgKCpH
ZXRIaXN0b2dyYW0pKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1Q
YXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1z
KTsKICAgdm9pZCAoKkdldEhpc3RvZ3JhbVBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldE1pbm1heCkoR0xlbnVtIHRh
cmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk
ICogdmFsdWVzKTsKICAgdm9pZCAoKkdldE1pbm1heFBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFy
YW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwog
ICB2b2lkICgqSGlzdG9ncmFtKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKICAgdm9pZCAoKk1pbm1heCkoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayk7CiAgIHZvaWQg
KCpSZXNldEhpc3RvZ3JhbSkoR0xlbnVtIHRhcmdldCk7CiAgIHZvaWQgKCpSZXNldE1pbm1heCko
R0xlbnVtIHRhcmdldCk7CiAgIHZvaWQgKCpUZXhJbWFnZTNEKShHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lkICgqVGV4U3ViSW1hZ2UzRCkoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4ZWxzKTsKICAg
dm9pZCAoKkNvcHlUZXhTdWJJbWFnZTNEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgqQWN0aXZlVGV4dHVy
ZUFSQikoR0xlbnVtIHRleHR1cmUpOwogICB2b2lkICgqQ2xpZW50QWN0aXZlVGV4dHVyZUFSQiko
R0xlbnVtIHRleHR1cmUpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDFkQVJCKShHTGVudW0gdGFy
Z2V0LCBHTGRvdWJsZSBzKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQxZHZBUkIpKEdMZW51bSB0
YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWZBUkIp
KEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWZ2QVJC
KShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENv
b3JkMWlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwogICB2b2lkICgqTXVsdGlUZXhDb29y
ZDFpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRp
VGV4Q29vcmQxc0FSQikoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzKTsKICAgdm9pZCAoKk11bHRp
VGV4Q29vcmQxc3ZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p
ZCAoKk11bHRpVGV4Q29vcmQyZEFSQikoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3Vi
bGUgdCk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMmR2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25z
dCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJmQVJCKShHTGVudW0gdGFy
Z2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMmZ2QVJC
KShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENv
b3JkMmlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpOwogICB2b2lkICgqTXVs
dGlUZXhDb29yZDJpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9p
ZCAoKk11bHRpVGV4Q29vcmQyc0FSQikoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0
IHQpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJzdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xzaG9ydCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNkQVJCKShHTGVudW0gdGFyZ2V0
LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKICAgdm9pZCAoKk11bHRpVGV4
Q29vcmQzZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQg
KCpNdWx0aVRleENvb3JkM2ZBUkIpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0
LCBHTGZsb2F0IHIpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNmdkFSQikoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNpQVJCKShHTGVu
dW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKICAgdm9pZCAoKk11bHRpVGV4
Q29vcmQzaXZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpN
dWx0aVRleENvb3JkM3NBUkIpKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNzdkFSQikoR0xlbnVtIHRhcmdldCwg
Y29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDRkQVJCKShHTGVudW0g
dGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsK
ICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0ZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91
YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkNGZBUkIpKEdMZW51bSB0YXJnZXQsIEdM
ZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSk7CiAgIHZvaWQgKCpNdWx0
aVRleENvb3JkNGZ2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZv
aWQgKCpNdWx0aVRleENvb3JkNGlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQs
IEdMaW50IHIsIEdMaW50IHEpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDRpdkFSQikoR0xlbnVt
IHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0c0FSQiko
R0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBx
KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0c3ZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdM
c2hvcnQgKiB2KTsKICAgdm9pZCAoKkxvYWRUcmFuc3Bvc2VNYXRyaXhmQVJCKShjb25zdCBHTGZs
b2F0ICogbSk7CiAgIHZvaWQgKCpMb2FkVHJhbnNwb3NlTWF0cml4ZEFSQikoY29uc3QgR0xkb3Vi
bGUgKiBtKTsKICAgdm9pZCAoKk11bHRUcmFuc3Bvc2VNYXRyaXhmQVJCKShjb25zdCBHTGZsb2F0
ICogbSk7CiAgIHZvaWQgKCpNdWx0VHJhbnNwb3NlTWF0cml4ZEFSQikoY29uc3QgR0xkb3VibGUg
KiBtKTsKICAgdm9pZCAoKlNhbXBsZUNvdmVyYWdlQVJCKShHTGNsYW1wZiB2YWx1ZSwgR0xib29s
ZWFuIGludmVydCk7CiAgIHZvaWQgKCpTYW1wbGVQYXNzQVJCKShHTGVudW0gcGFzcyk7CiAgIHZv
aWQgKCpQb2x5Z29uT2Zmc2V0RVhUKShHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCBiaWFzKTsKICAg
dm9pZCAoKkdldFRleEZpbHRlckZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZmlsdGVy
LCBHTGZsb2F0ICogd2VpZ2h0cyk7CiAgIHZvaWQgKCpUZXhGaWx0ZXJGdW5jU0dJUykoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGZpbHRlciwgR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICogd2VpZ2h0
cyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1FWFQpKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiBy
ZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHZhbHVlcyk7CiAgIHZv
aWQgKCpHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdkVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEhpc3RvZ3JhbVBhcmFtZXRlcml2
RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9p
ZCAoKkdldE1pbm1heEVYVCkoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdmFsdWVzKTsKICAgdm9pZCAoKkdldE1pbm1h
eFBhcmFtZXRlcmZ2RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBw
YXJhbXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFyYW1ldGVyaXZFWFQpKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29udm9sdXRpb25G
aWx0ZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv
aWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpHZXRDb252b2x1dGlvblBhcmFtZXRlcmZ2RVhUKShHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0
Q29udm9sdXRpb25QYXJhbWV0ZXJpdkVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRTZXBhcmFibGVGaWx0ZXJFWFQpKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiByb3csIEdMdm9pZCAq
IGNvbHVtbiwgR0x2b2lkICogc3Bhbik7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlU0dJKShHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdGFibGUpOwog
ICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcmZ2U0dJKShHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFt
ZXRlcml2U0dJKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsK
ICAgdm9pZCAoKlBpeGVsVGV4R2VuU0dJWCkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqUGl4ZWxU
ZXhHZW5QYXJhbWV0ZXJpU0dJUykoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQg
KCpQaXhlbFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
IHBhcmFtcyk7CiAgIHZvaWQgKCpQaXhlbFRleEdlblBhcmFtZXRlcmZTR0lTKShHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqUGl4ZWxUZXhHZW5QYXJhbWV0ZXJmdlNHSVMp
KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRQaXhl
bFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAg
IHZvaWQgKCpHZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUykoR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKlRleEltYWdlNERTR0lTKShHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQg
KCpUZXhTdWJJbWFnZTREU0dJUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHdvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIEdM
Ym9vbGVhbiAoKkFyZVRleHR1cmVzUmVzaWRlbnRFWFQpKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVt
ICogdGV4dHVyZXMsIEdMYm9vbGVhbiAqIHJlc2lkZW5jZXMpOwogICB2b2lkICgqR2VuVGV4dHVy
ZXNFWFQpKEdMc2l6ZWkgbiwgR0xlbnVtICogdGV4dHVyZXMpOwogICBHTGJvb2xlYW4gKCpJc1Rl
eHR1cmVFWFQpKEdMZW51bSB0ZXh0dXJlKTsKICAgdm9pZCAoKkRldGFpbFRleEZ1bmNTR0lTKShH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lk
ICgqR2V0RGV0YWlsVGV4RnVuY1NHSVMpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgKiBwb2ludHMp
OwogICB2b2lkICgqU2hhcnBlblRleEZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4s
IGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqR2V0U2hhcnBlblRleEZ1bmNTR0lT
KShHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICogcG9pbnRzKTsKICAgdm9pZCAoKlNhbXBsZU1hc2tT
R0lTKShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CiAgIHZvaWQgKCpTYW1wbGVQ
YXR0ZXJuU0dJUykoR0xlbnVtIHBhdHRlcm4pOwogICB2b2lkICgqQ29sb3JQb2ludGVyRVhUKShH
TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRWRnZUZsYWdQb2ludGVyRVhUKShHTHNp
emVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xib29sZWFuICogcG9pbnRlcik7CiAg
IHZvaWQgKCpJbmRleFBvaW50ZXJFWFQpKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpOb3JtYWxQb2lu
dGVyRVhUKShHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVGV4Q29vcmRQb2ludGVyRVhUKShHTGludCBz
aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVmVydGV4UG9pbnRlckVYVCkoR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg
KiBwb2ludGVyKTsKICAgdm9pZCAoKlNwcml0ZVBhcmFtZXRlcmZTR0lYKShHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqU3ByaXRlUGFyYW1ldGVyZnZTR0lYKShHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqU3ByaXRlUGFyYW1ldGVy
aVNHSVgpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2b2lkICgqU3ByaXRlUGFyYW1l
dGVyaXZTR0lYKShHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAo
KlBvaW50UGFyYW1ldGVyZkVYVCkoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9p
ZCAoKlBvaW50UGFyYW1ldGVyZnZFWFQpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBh
cmFtcyk7CiAgIEdMaW50ICgqR2V0SW5zdHJ1bWVudHNTR0lYKSh2b2lkKTsKICAgdm9pZCAoKklu
c3RydW1lbnRzQnVmZmVyU0dJWCkoR0xzaXplaSBzaXplLCBHTGludCAqIGJ1ZmZlcik7CiAgIEdM
aW50ICgqUG9sbEluc3RydW1lbnRzU0dJWCkoR0xpbnQgKiBtYXJrZXJfcCk7CiAgIHZvaWQgKCpS
ZWFkSW5zdHJ1bWVudHNTR0lYKShHTGludCBtYXJrZXIpOwogICB2b2lkICgqU3RhcnRJbnN0cnVt
ZW50c1NHSVgpKHZvaWQpOwogICB2b2lkICgqU3RvcEluc3RydW1lbnRzU0dJWCkoR0xpbnQgbWFy
a2VyKTsKICAgdm9pZCAoKkZyYW1lWm9vbVNHSVgpKEdMaW50IGZhY3Rvcik7CiAgIHZvaWQgKCpU
YWdTYW1wbGVCdWZmZXJTR0lYKSh2b2lkKTsKICAgdm9pZCAoKlJlZmVyZW5jZVBsYW5lU0dJWCko
Y29uc3QgR0xkb3VibGUgKiBlcXVhdGlvbik7CiAgIHZvaWQgKCpGbHVzaFJhc3RlclNHSVgpKHZv
aWQpOwogICB2b2lkICgqR2V0TGlzdFBhcmFtZXRlcmZ2U0dJWCkoR0x1aW50IGxpc3QsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRMaXN0UGFyYW1ldGVyaXZT
R0lYKShHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg
KCpMaXN0UGFyYW1ldGVyZlNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwogICB2b2lkICgqTGlzdFBhcmFtZXRlcmZ2U0dJWCkoR0x1aW50IGxpc3QsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpMaXN0UGFyYW1ldGVy
aVNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAo
Kkxpc3RQYXJhbWV0ZXJpdlNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50Q29sb3JNYXRlcmlhbFNHSVgpKEdMZW51
bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpGcmFnbWVudExpZ2h0ZlNHSVgpKEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50
TGlnaHRmdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICog
cGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRpU0dJWCkoR0xlbnVtIGxpZ2h0LCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRpdlNHSVgpKEdM
ZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg
KCpGcmFnbWVudExpZ2h0TW9kZWxmU0dJWCkoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsK
ICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGZ2U0dJWCkoR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGlTR0lYKShHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGl2U0dJ
WCkoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpGcmFnbWVu
dE1hdGVyaWFsZlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
OwogICB2b2lkICgqRnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCkoR0xlbnVtIGZhY2UsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpGcmFnbWVudE1hdGVyaWFs
aVNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAo
KkZyYWdtZW50TWF0ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZyYWdtZW50TGlnaHRmdlNHSVgpKEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZy
YWdtZW50TGlnaHRpdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBh
cmFtcyk7CiAgIHZvaWQgKCpHZXRGcmFnbWVudE1hdGVyaWFsZnZTR0lYKShHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZyYWdtZW50TWF0
ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsK
ICAgdm9pZCAoKkxpZ2h0RW52aVNHSVgpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2
b2lkICgqVmVydGV4V2VpZ2h0ZkVYVCkoR0xmbG9hdCB3ZWlnaHQpOwogICB2b2lkICgqVmVydGV4
V2VpZ2h0ZnZFWFQpKGNvbnN0IEdMZmxvYXQgKiB3ZWlnaHQpOwogICB2b2lkICgqVmVydGV4V2Vp
Z2h0UG9pbnRlckVYVCkoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRmx1c2hWZXJ0ZXhBcnJheVJhbmdl
TlYpKHZvaWQpOwogICB2b2lkICgqVmVydGV4QXJyYXlSYW5nZU5WKShHTHNpemVpIHNpemUsIGNv
bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqQ29tYmluZXJQYXJhbWV0ZXJmdk5WKShH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqQ29tYmluZXJQ
YXJhbWV0ZXJmTlYpKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpDb21i
aW5lclBhcmFtZXRlcml2TlYpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwog
ICB2b2lkICgqQ29tYmluZXJQYXJhbWV0ZXJpTlYpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
OwogICB2b2lkICgqQ29tYmluZXJJbnB1dE5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9u
LCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBj
b21wb25lbnRVc2FnZSk7CiAgIHZvaWQgKCpDb21iaW5lck91dHB1dE5WKShHTGVudW0gc3RhZ2Us
IEdMZW51bSBwb3J0aW9uLCBHTGVudW0gYWJPdXRwdXQsIEdMZW51bSBjZE91dHB1dCwgR0xlbnVt
IHN1bU91dHB1dCwgR0xlbnVtIHNjYWxlLCBHTGVudW0gYmlhcywgR0xib29sZWFuIGFiRG90UHJv
ZHVjdCwgR0xib29sZWFuIGNkRG90UHJvZHVjdCwgR0xib29sZWFuIG11eFN1bSk7CiAgIHZvaWQg
KCpGaW5hbENvbWJpbmVySW5wdXROVikoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gaW5wdXQsIEdM
ZW51bSBtYXBwaW5nLCBHTGVudW0gY29tcG9uZW50VXNhZ2UpOwogICB2b2lkICgqR2V0Q29tYmlu
ZXJJbnB1dFBhcmFtZXRlcmZ2TlYpKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51
bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdl
dENvbWJpbmVySW5wdXRQYXJhbWV0ZXJpdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9u
LCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lk
ICgqR2V0Q29tYmluZXJPdXRwdXRQYXJhbWV0ZXJmdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBw
b3J0aW9uLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29t
YmluZXJPdXRwdXRQYXJhbWV0ZXJpdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBH
TGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZpbmFsQ29tYmluZXJJ
bnB1dFBhcmFtZXRlcmZ2TlYpKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZpbmFsQ29tYmluZXJJbnB1dFBhcmFtZXRlcml2TlYp
KEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg
KCpSZXNpemVCdWZmZXJzTUVTQSkodm9pZCk7CiAgIHZvaWQgKCpXaW5kb3dQb3MyZE1FU0EpKEdM
ZG91YmxlIHgsIEdMZG91YmxlIHkpOwogICB2b2lkICgqV2luZG93UG9zMmR2TUVTQSkoY29uc3Qg
R0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczJmTUVTQSkoR0xmbG9hdCB4LCBHTGZs
b2F0IHkpOwogICB2b2lkICgqV2luZG93UG9zMmZ2TUVTQSkoY29uc3QgR0xmbG9hdCAqIHYpOwog
ICB2b2lkICgqV2luZG93UG9zMmlNRVNBKShHTGludCB4LCBHTGludCB5KTsKICAgdm9pZCAoKldp
bmRvd1BvczJpdk1FU0EpKGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3Myc01F
U0EpKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKICAgdm9pZCAoKldpbmRvd1BvczJzdk1FU0EpKGNv
bnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczNkTUVTQSkoR0xkb3VibGUgeCwg
R0xkb3VibGUgeSwgR0xkb3VibGUgeik7CiAgIHZvaWQgKCpXaW5kb3dQb3MzZHZNRVNBKShjb25z
dCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqV2luZG93UG9zM2ZNRVNBKShHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKldpbmRvd1BvczNmdk1FU0EpKGNvbnN0IEdM
ZmxvYXQgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczNpTUVTQSkoR0xpbnQgeCwgR0xpbnQgeSwg
R0xpbnQgeik7CiAgIHZvaWQgKCpXaW5kb3dQb3MzaXZNRVNBKShjb25zdCBHTGludCAqIHYpOwog
ICB2b2lkICgqV2luZG93UG9zM3NNRVNBKShHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
KTsKICAgdm9pZCAoKldpbmRvd1BvczNzdk1FU0EpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p
ZCAoKldpbmRvd1BvczRkTUVTQSkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwg
R0xkb3VibGUgdyk7CiAgIHZvaWQgKCpXaW5kb3dQb3M0ZHZNRVNBKShjb25zdCBHTGRvdWJsZSAq
IHYpOwogICB2b2lkICgqV2luZG93UG9zNGZNRVNBKShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6LCBHTGZsb2F0IHcpOwogICB2b2lkICgqV2luZG93UG9zNGZ2TUVTQSkoY29uc3QgR0xm
bG9hdCAqIHYpOwogICB2b2lkICgqV2luZG93UG9zNGlNRVNBKShHTGludCB4LCBHTGludCB5LCBH
TGludCB6LCBHTGludCB3KTsKICAgdm9pZCAoKldpbmRvd1BvczRpdk1FU0EpKGNvbnN0IEdMaW50
ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3M0c01FU0EpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH
THNob3J0IHosIEdMc2hvcnQgdyk7CiAgIHZvaWQgKCpXaW5kb3dQb3M0c3ZNRVNBKShjb25zdCBH
THNob3J0ICogdik7CiAgIHZvaWQgKCpCbGVuZEZ1bmNTZXBhcmF0ZUVYVCkoR0xlbnVtIHNmYWN0
b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZh
Y3RvckFscGhhKTsKICAgdm9pZCAoKkluZGV4TWF0ZXJpYWxFWFQpKEdMZW51bSBmYWNlLCBHTGVu
dW0gbW9kZSk7CiAgIHZvaWQgKCpJbmRleEZ1bmNFWFQpKEdMZW51bSBmdW5jLCBHTGNsYW1wZiBy
ZWYpOwogICB2b2lkICgqTG9ja0FycmF5c0VYVCkoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQp
OwogICB2b2lkICgqVW5sb2NrQXJyYXlzRVhUKSh2b2lkKTsKICAgdm9pZCAoKkN1bGxQYXJhbWV0
ZXJkdkVYVCkoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQg
KCpDdWxsUGFyYW1ldGVyZnZFWFQpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFt
cyk7CiAgIHZvaWQgKCpIaW50UEdJKShHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKICAgdm9p
ZCAoKkZvZ0Nvb3JkZkVYVCkoR0xmbG9hdCBjb29yZCk7CiAgIHZvaWQgKCpGb2dDb29yZGZ2RVhU
KShjb25zdCBHTGZsb2F0ICogY29vcmQpOwogICB2b2lkICgqRm9nQ29vcmRkRVhUKShHTGRvdWJs
ZSBjb29yZCk7CiAgIHZvaWQgKCpGb2dDb29yZGR2RVhUKShjb25zdCBHTGRvdWJsZSAqIGNvb3Jk
KTsKICAgdm9pZCAoKkZvZ0Nvb3JkUG9pbnRlckVYVCkoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKkdldENvbG9yVGFibGVFWFQp
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiBkYXRh
KTsKICAgdm9pZCAoKkdldENvbG9yVGFibGVQYXJhbWV0ZXJpdkVYVCkoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlUGFy
YW1ldGVyZnZFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFt
cyk7CiAgIHZvaWQgKCpUYnVmZmVyTWFzazNERlgpKEdMdWludCBtYXNrKTsKICAgdm9pZCAoKkNv
bXByZXNzZWRUZXhJbWFnZTNEQVJCKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICogZGF0
YSk7CiAgIHZvaWQgKCpDb21wcmVzc2VkVGV4SW1hZ2UyREFSQikoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRh
dGEpOwogICB2b2lkICgqQ29tcHJlc3NlZFRleEltYWdlMURBUkIpKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJv
cmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgq
Q29tcHJlc3NlZFRleFN1YkltYWdlM0RBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBp
bWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgqQ29tcHJlc3NlZFRleFN1
YkltYWdlMkRBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgqQ29t
cHJlc3NlZFRleFN1YkltYWdlMURBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3QgR0x2b2lkICogZGF0YSk7CiAgIHZvaWQgKCpHZXRDb21wcmVzc2VkVGV4SW1hZ2VB
UkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCB2b2lkICogaW1nKTsKfTsKIyAzNiAiLi4v
Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIgMQojIDE3NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL2dsdGhyZWFkLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YdGhy
ZWFkcy5oIiAxCiMgMTk5ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1h0aHJlYWRz
LmgiCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzCiMgNDIgIi91c3IvaW5jbHVkZS9w
dGhyZWFkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDQ5ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4u
aCIgMSAzCiMgOTcgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAzCnN0YXRpYyBfX2lu
bGluZSBfX3VpbnQ2NF90Cl9fYnN3YXA2NChfX3VpbnQ2NF90IF94KQp7CiAgICAgICAgcmV0dXJu
ICgoX3ggPj4gNTYpIHwgKChfeCA+PiA0MCkgJiAweGZmMDApIHwgKChfeCA+PiAyNCkgJiAweGZm
MDAwMCkgfAogICAgICAgICAgICAoKF94ID4+IDgpICYgMHhmZjAwMDAwMCkgfCAoKF94IDw8IDgp
ICYgKChfX3VpbnQ2NF90KTB4ZmYgPDwgMzIpKSB8CiAgICAgICAgICAgICgoX3ggPDwgMjQpICYg
KChfX3VpbnQ2NF90KTB4ZmYgPDwgNDApKSB8CiAgICAgICAgICAgICgoX3ggPDwgNDApICYgKChf
X3VpbnQ2NF90KTB4ZmYgPDwgNDgpKSB8ICgoX3ggPDwgNTYpKSk7Cn0KCnN0YXRpYyBfX2lubGlu
ZSBfX3VpbnQzMl90Cl9fYnN3YXAzMihfX3VpbnQzMl90IF94KQp7CgogICAgICAgIHJldHVybiAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBfX3VpbnQzMl90IF9fWCA9IChfeCk7IF9fYXNtICgi
eGNoZ2IgJWgwLCAlYjBcblx0cm9ybCAkMTYsICUwXG5cdHhjaGdiICVoMCwgJWIwIiA6ICIrcSIg
KF9fWCkpOyBfX1g7IH0pKTsKfQoKc3RhdGljIF9faW5saW5lIF9fdWludDE2X3QKX19ic3dhcDE2
KF9fdWludDE2X3QgX3gpCnsKCiAgICAgICAgcmV0dXJuIChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIF9fdWludDE2X3QgX19YID0gKF94KTsgX19hc20gKCJ4Y2hnYiAlaDAsICViMCIgOiAiK3Ei
IChfX1gpKTsgX19YOyB9KSk7Cn0KIyA1MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRl
L21hY2hpbmUvdHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBfcGh5c2FkciB7CiAgICAgICAgaW50
IHJbMV07Cn0gKnBoeXNhZHI7Cgp0eXBlZGVmIHN0cnVjdCBsYWJlbF90IHsKICAgICAgICBpbnQg
dmFsWzZdOwp9IGxhYmVsX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdm1fb2Zmc2V0X3Q7CnR5
cGVkZWYgX19pbnQ2NF90IHZtX29vZmZzZXRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IHZtX3BpbmRl
eF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB2bV9zaXplX3Q7Cgp0eXBlZGVmIF9faW50MzJfdCBy
ZWdpc3Rlcl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9yZWdpc3Rlcl90OwoKCgoKCgoKdHlwZWRl
ZiByZWdpc3Rlcl90IGNyaXRpY2FsX3Q7CgoKdHlwZWRlZiBfX3VpbnQzMl90IGludHJtYXNrX3Q7
CgoKdHlwZWRlZiB2b2lkIG9pbnRoYW5kMl90KGludCBfZGV2aWNlX2lkKTsKIyA1MSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAx
IDMKIyA1MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKCgoKdHlw
ZWRlZiBfX2ludDhfdCBpbnQ4X3Q7CgoKCgp0eXBlZGVmIF9faW50MTZfdCBpbnQxNl90OwoKCgoK
dHlwZWRlZiBfX2ludDMyX3QgaW50MzJfdDsKCgoKCnR5cGVkZWYgX19pbnQ2NF90IGludDY0X3Q7
CgoKCgp0eXBlZGVmIF9fdWludDhfdCB1aW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQxNl90IHVp
bnQxNl90OwoKCgoKdHlwZWRlZiBfX3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX3Vp
bnQ2NF90IHVpbnQ2NF90OwoKCgoKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90Owp0eXBlZGVm
IF9fdWludHB0cl90IHVpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3VpbnQ4X3QgdV9pbnQ4X3Q7
CnR5cGVkZWYgX191aW50MTZfdCB1X2ludDE2X3Q7CnR5cGVkZWYgX191aW50MzJfdCB1X2ludDMy
X3Q7CnR5cGVkZWYgX191aW50NjRfdCB1X2ludDY0X3Q7CgoKCgp0eXBlZGVmIHVfaW50NjRfdCB1
X3F1YWRfdDsKdHlwZWRlZiBpbnQ2NF90IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgKiBxYWRkcl90
OwoKdHlwZWRlZiBjaGFyICogY2FkZHJfdDsKdHlwZWRlZiBjb25zdCBjaGFyICogY19jYWRkcl90
Owp0eXBlZGVmIHZvbGF0aWxlIGNoYXIgKnZfY2FkZHJfdDsKdHlwZWRlZiBpbnQ2NF90IGRhZGRy
X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX3VpbnQzMl90IGdpZF90
OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBpbm9fdDsKdHlwZWRlZiBsb25nIGtleV90Owp0eXBlZGVm
IHVfaW50MTZfdCBtb2RlX3Q7CnR5cGVkZWYgdV9pbnQxNl90IG5saW5rX3Q7CnR5cGVkZWYgX19p
bnQ2NF90IG9mZl90Owp0eXBlZGVmIGludCBwaWRfdDsKdHlwZWRlZiBxdWFkX3QgcmxpbV90OwoK
CnR5cGVkZWYgX19pbnQzMl90IHNlZ3N6X3Q7CgoKCnR5cGVkZWYgaW50MzJfdCBzd2Jsa190OwoK
CnR5cGVkZWYgX191aW50MzJfdCB1aWRfdDsKIyAxNzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwp0eXBlZGVmIHVfaW50MzJfdCBkZXZfdDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2xvY2tfdDsKCgoKCnR5cGVkZWYgaW50IGNs
b2NraWRfdDsKCgoKCnR5cGVkZWYgX191aW50X2xlYXN0MzJfdCBmZmxhZ3NfdDsKCgoKCnR5cGVk
ZWYgX191aW50NjRfdCBmc2Jsa2NudF90Owp0eXBlZGVmIF9fdWludDY0X3QgZnNmaWxjbnRfdDsK
IyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBzc2l6ZV90OwoK
CgoKdHlwZWRlZiBpbnQgdGltZV90OwoKCgoKdHlwZWRlZiBpbnQgdGltZXJfdDsKIyAyNDMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZmRfbWFzazsK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZmRfc2V0IHsKICAgICAgICBmZF9tYXNrIGZkc19iaXRzWygo
KDEwMjRVKSArICgoKHNpemVvZihmZF9tYXNrKSAqIDgpKSAtIDFVKSkgLyAoKHNpemVvZihmZF9t
YXNrKSAqIDgpKSldOwp9IGZkX3NldDsKIyAyNjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MwoKIyAyODQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKIyA0MyAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDQxICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZXNwZWMu
aCIgMSAzCiMgNTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZXNwZWMuaCIgMwpzdHJ1Y3QgdGltZXNw
ZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDQy
ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCgoKc3RydWN0IHRpbWV2YWwgewogICAg
ICAgIGxvbmcgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9u
ZSB7CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9
OwojIDY1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgYmludGltZSB7CiAgICAg
ICAgdGltZV90IHNlYzsKICAgICAgICB1aW50NjRfdCBmcmFjOwp9OwoKc3RhdGljIF9faW5saW5l
IHZvaWQKYmludGltZV9hZGR4KHN0cnVjdCBiaW50aW1lICpidCwgdWludDY0X3QgeCkKewogICAg
ICAgIHVpbnQ2NF90IHU7CgogICAgICAgIHUgPSBidC0+ZnJhYzsKICAgICAgICBidC0+ZnJhYyAr
PSB4OwogICAgICAgIGlmICh1ID4gYnQtPmZyYWMpCiAgICAgICAgICAgICAgICBidC0+c2VjKys7
Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCmJpbnRpbWVfYWRkKHN0cnVjdCBiaW50aW1lICpidCwg
c3RydWN0IGJpbnRpbWUgKmJ0MikKewogICAgICAgIHVpbnQ2NF90IHU7CgogICAgICAgIHUgPSBi
dC0+ZnJhYzsKICAgICAgICBidC0+ZnJhYyArPSBidDItPmZyYWM7CiAgICAgICAgaWYgKHUgPiBi
dC0+ZnJhYykKICAgICAgICAgICAgICAgIGJ0LT5zZWMrKzsKICAgICAgICBidC0+c2VjICs9IGJ0
Mi0+c2VjOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZApiaW50aW1lX3N1YihzdHJ1Y3QgYmludGlt
ZSAqYnQsIHN0cnVjdCBiaW50aW1lICpidDIpCnsKICAgICAgICB1aW50NjRfdCB1OwoKICAgICAg
ICB1ID0gYnQtPmZyYWM7CiAgICAgICAgYnQtPmZyYWMgLT0gYnQyLT5mcmFjOwogICAgICAgIGlm
ICh1IDwgYnQtPmZyYWMpCiAgICAgICAgICAgICAgICBidC0+c2VjLS07CiAgICAgICAgYnQtPnNl
YyAtPSBidDItPnNlYzsKfQojIDExOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RhdGlj
IF9faW5saW5lIHZvaWQKYmludGltZTJ0aW1lc3BlYyhzdHJ1Y3QgYmludGltZSAqYnQsIHN0cnVj
dCB0aW1lc3BlYyAqdHMpCnsKCiAgICAgICAgdHMtPnR2X3NlYyA9IGJ0LT5zZWM7CiAgICAgICAg
dHMtPnR2X25zZWMgPSAoKHVpbnQ2NF90KTEwMDAwMDAwMDAgKiAodWludDMyX3QpKGJ0LT5mcmFj
ID4+IDMyKSkgPj4gMzI7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCnRpbWVzcGVjMmJpbnRpbWUo
c3RydWN0IHRpbWVzcGVjICp0cywgc3RydWN0IGJpbnRpbWUgKmJ0KQp7CgogICAgICAgIGJ0LT5z
ZWMgPSB0cy0+dHZfc2VjOwoKICAgICAgICBidC0+ZnJhYyA9IHRzLT50dl9uc2VjICogKHVpbnQ2
NF90KTE4NDQ2NzQ0MDczTEw7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCmJpbnRpbWUydGltZXZh
bChzdHJ1Y3QgYmludGltZSAqYnQsIHN0cnVjdCB0aW1ldmFsICp0dikKewoKICAgICAgICB0di0+
dHZfc2VjID0gYnQtPnNlYzsKICAgICAgICB0di0+dHZfdXNlYyA9ICgodWludDY0X3QpMTAwMDAw
MCAqICh1aW50MzJfdCkoYnQtPmZyYWMgPj4gMzIpKSA+PiAzMjsKfQoKc3RhdGljIF9faW5saW5l
IHZvaWQKdGltZXZhbDJiaW50aW1lKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IGJpbnRpbWUg
KmJ0KQp7CgogICAgICAgIGJ0LT5zZWMgPSB0di0+dHZfc2VjOwoKICAgICAgICBidC0+ZnJhYyA9
IHR2LT50dl91c2VjICogKHVpbnQ2NF90KTE4NDQ2NzQ0MDczNzA5TEw7Cn0KIyAyMzEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0
aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoK
CgoKc3RydWN0IGNsb2NraW5mbyB7CiAgICAgICAgaW50IGh6OwogICAgICAgIGludCB0aWNrOwog
ICAgICAgIGludCBzcGFyZTsKICAgICAgICBpbnQgc3RhdGh6OwogICAgICAgIGludCBwcm9maHo7
Cn07CiMgMzA4ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDk4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0bSB7CiAgICAg
ICAgaW50IHRtX3NlYzsKICAgICAgICBpbnQgdG1fbWluOwogICAgICAgIGludCB0bV9ob3VyOwog
ICAgICAgIGludCB0bV9tZGF5OwogICAgICAgIGludCB0bV9tb247CiAgICAgICAgaW50IHRtX3ll
YXI7CiAgICAgICAgaW50IHRtX3dkYXk7CiAgICAgICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50
IHRtX2lzZHN0OwogICAgICAgIGxvbmcgdG1fZ210b2ZmOwogICAgICAgIGNoYXIgKnRtX3pvbmU7
Cn07CgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVtdOwoKCgpjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVj
dCB0bSAqKTsKY2xvY2tfdCBjbG9jayh2b2lkKTsKY2hhciAqY3RpbWUoY29uc3QgdGltZV90ICop
Owpkb3VibGUgZGlmZnRpbWUodGltZV90LCB0aW1lX3QpOwpzdHJ1Y3QgdG0gKmdtdGltZShjb25z
dCB0aW1lX3QgKik7CnN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKdGltZV90
IG1rdGltZShzdHJ1Y3QgdG0gKik7CnNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29u
c3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CnRpbWVfdCB0aW1lKHRpbWVfdCAqKTsKCgp2
b2lkIHR6c2V0KHZvaWQpOwoKCmNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1Y3QgdG0gKiwgY2hh
ciAqKTsKY2hhciAqY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKc3RydWN0IHRtICpn
bXRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGlt
ZV9yKGNvbnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CgoKCmNoYXIgKnN0cnB0aW1lKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CgoKCmNoYXIgKnRpbWV6b25lKGlu
dCwgaW50KTsKdm9pZCB0enNldHdhbGwodm9pZCk7CnRpbWVfdCB0aW1lbG9jYWwoc3RydWN0IHRt
ICogY29uc3QpOwp0aW1lX3QgdGltZWdtKHN0cnVjdCB0bSAqIGNvbnN0KTsKCgoKCmludCBjbG9j
a19nZXRyZXMoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBjbG9ja19nZXR0aW1l
KGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwppbnQgY2xvY2tfc2V0dGltZShjbG9ja2lk
X3QsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1Y3Qg
dGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKCiMgMzA5ICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWUuaCIgMiAzCgoKCgppbnQgYWRqdGltZShjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBzdHJ1
Y3QgdGltZXZhbCAqKTsKaW50IGZ1dGltZXMoaW50LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsK
aW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBnZXR0aW1lb2ZkYXko
c3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV6b25lICopOwppbnQgbHV0aW1lcyhjb25zdCBj
aGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qg
c3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0dGltZW9mZGF5
KGNvbnN0IHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqKTsKaW50IHV0
aW1lcyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKIyA0NCAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAz
CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L19zaWdzZXQuaCIgMSAzCiMgNTUgIi91c3IvaW5jbHVkZS9zeXMvX3NpZ3NldC5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9fc2lnc2V0IHsKICAgICAgICBfX3VpbnQzMl90IF9fYml0c1s0XTsKfSBzaWdz
ZXRfdDsKIyA0OCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzCiMgMTEzICIvdXNyL2lu
Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzCnR5cGVkZWYgdm9pZCBfX3NpZ2hhbmRsZXJfdChpbnQpOwoK
CgoKCgp1bmlvbiBzaWd2YWwgewoKICAgICAgICBpbnQgc2lndmFsX2ludDsKICAgICAgICB2b2lk
ICpzaWd2YWxfcHRyOwp9OwoKc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBpbnQgc2lnZXZfbm90
aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfX3NpZ2V2X3NpZ25vOwog
ICAgICAgICAgICAgICAgaW50IF9fc2lnZXZfbm90aWZ5X2txdWV1ZTsKICAgICAgICB9IF9fc2ln
ZXZfdTsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7Cn07CgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfX3NpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lf
ZXJybm87CgoKCgoKCiAgICAgICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50IHNpX3BpZDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgc2lfdWlkOwogICAgICAgIGludCBzaV9zdGF0dXM7CiAgICAgICAg
dm9pZCAqc2lfYWRkcjsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lfdmFsdWU7CiAgICAgICAgbG9u
ZyBzaV9iYW5kOwogICAgICAgIGludCBfX3NwYXJlX19bN107Cn0gc2lnaW5mb190OwoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NpZ25hbC5oIiAxIDMKIyA0NCAiL3Vzci9pbmNsdWRl
L21hY2hpbmUvc2lnbmFsLmgiIDMKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190OwojIDU0ICIvdXNy
L2luY2x1ZGUvbWFjaGluZS9zaWduYWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3Ry
YXAuaCIgMSAzCiMgNTUgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NpZ25hbC5oIiAyIDMKIyA5OCAi
L3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDMKc3RydWN0IHNpZ2NvbnRleHQgewogICAg
ICAgIHNpZ3NldF90IHNjX21hc2s7CiAgICAgICAgaW50IHNjX29uc3RhY2s7CiAgICAgICAgaW50
IHNjX2dzOwogICAgICAgIGludCBzY19mczsKICAgICAgICBpbnQgc2NfZXM7CiAgICAgICAgaW50
IHNjX2RzOwogICAgICAgIGludCBzY19lZGk7CiAgICAgICAgaW50IHNjX2VzaTsKICAgICAgICBp
bnQgc2NfZWJwOwogICAgICAgIGludCBzY19pc3A7CiAgICAgICAgaW50IHNjX2VieDsKICAgICAg
ICBpbnQgc2NfZWR4OwogICAgICAgIGludCBzY19lY3g7CiAgICAgICAgaW50IHNjX2VheDsKICAg
ICAgICBpbnQgc2NfdHJhcG5vOwogICAgICAgIGludCBzY19lcnI7CiAgICAgICAgaW50IHNjX2Vp
cDsKICAgICAgICBpbnQgc2NfY3M7CiAgICAgICAgaW50IHNjX2VmbDsKICAgICAgICBpbnQgc2Nf
ZXNwOwogICAgICAgIGludCBzY19zczsKCgoKCgogICAgICAgIGludCBzY19mcHJlZ3NbMjhdOwog
ICAgICAgIGludCBzY19zcGFyZVsxN107Cn07CiMgMTY2ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h
bC5oIiAyIDMKCgoKc3RydWN0IF9fc2lnaW5mbzsKCgoKCnN0cnVjdCBzaWdhY3Rpb24gewogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHZvaWQgKCpfX3NhX2hhbmRsZXIpKGludCk7CiAg
ICAgICAgICAgICAgICB2b2lkICgqX19zYV9zaWdhY3Rpb24pKGludCwgc3RydWN0IF9fc2lnaW5m
byAqLCB2b2lkICopOwogICAgICAgIH0gX19zaWdhY3Rpb25fdTsKICAgICAgICBpbnQgc2FfZmxh
Z3M7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKIyAyMTQgIi91c3IvaW5jbHVkZS9zeXMv
c2lnbmFsLmgiIDMKdHlwZWRlZiB2b2lkIF9fc2lnaW5mb2hhbmRsZXJfdChpbnQsIHN0cnVjdCBf
X3NpZ2luZm8gKiwgdm9pZCAqKTsKCnR5cGVkZWYgX19zaWdoYW5kbGVyX3QgKnNpZ190OwojIDIy
NiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMwp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFj
ayB7CiAgICAgICAgY2hhciAqc3Nfc3A7CiAgICAgICAgc2l6ZV90IHNzX3NpemU7CiAgICAgICAg
aW50IHNzX2ZsYWdzOwp9IHN0YWNrX3Q7CiMgMjQwICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o
IiAzCnN0cnVjdCBfX3Vjb250ZXh0OwoKCgoKCnN0cnVjdCBzaWd2ZWMgewogICAgICAgIF9fc2ln
aGFuZGxlcl90ICpzdl9oYW5kbGVyOwogICAgICAgIGludCBzdl9tYXNrOwogICAgICAgIGludCBz
dl9mbGFnczsKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKc3RydWN0IHNp
Z3N0YWNrIHsKICAgICAgICBjaGFyICpzc19zcDsKICAgICAgICBpbnQgc3Nfb25zdGFjazsKfTsK
IyAyOTEgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKCl9fc2lnaGFuZGxlcl90ICpzaWdu
YWwoaW50LCBfX3NpZ2hhbmRsZXJfdCAqKTsKCiMgNDUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9z
Y2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbQp7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5
Owp9OwoKCgoKCmludCBzY2hlZF9zZXRwYXJhbShwaWRfdCwgY29uc3Qgc3RydWN0IHNjaGVkX3Bh
cmFtICopOwppbnQgc2NoZWRfZ2V0cGFyYW0ocGlkX3QsIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsK
CmludCBzY2hlZF9zZXRzY2hlZHVsZXIocGlkX3QsIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3Bh
cmFtICopOwppbnQgc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZF90KTsKCmludCBzY2hlZF95aWVsZCh2
b2lkKTsKaW50IHNjaGVkX2dldF9wcmlvcml0eV9tYXgoaW50KTsKaW50IHNjaGVkX2dldF9wcmlv
cml0eV9taW4oaW50KTsKaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWRfdCwgc3RydWN0IHRp
bWVzcGVjICopOwoKIyA0NyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCiMgODkgIi91c3Iv
aW5jbHVkZS9wdGhyZWFkLmgiIDMKc3RydWN0IHB0aHJlYWQ7CnN0cnVjdCBwdGhyZWFkX2F0dHI7
CnN0cnVjdCBwdGhyZWFkX2NvbmQ7CnN0cnVjdCBwdGhyZWFkX2NvbmRfYXR0cjsKc3RydWN0IHB0
aHJlYWRfbXV0ZXg7CnN0cnVjdCBwdGhyZWFkX211dGV4X2F0dHI7CnN0cnVjdCBwdGhyZWFkX29u
Y2U7CnN0cnVjdCBwdGhyZWFkX3J3bG9jazsKc3RydWN0IHB0aHJlYWRfcndsb2NrYXR0cjsKIyAx
MDYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZCAqcHRo
cmVhZF90Owp0eXBlZGVmIHN0cnVjdCBwdGhyZWFkX2F0dHIgKnB0aHJlYWRfYXR0cl90Owp0eXBl
ZGVmIHN0cnVjdCBwdGhyZWFkX211dGV4ICpwdGhyZWFkX211dGV4X3Q7CnR5cGVkZWYgc3RydWN0
IHB0aHJlYWRfbXV0ZXhfYXR0ciAqcHRocmVhZF9tdXRleGF0dHJfdDsKdHlwZWRlZiBzdHJ1Y3Qg
cHRocmVhZF9jb25kICpwdGhyZWFkX2NvbmRfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9jb25k
X2F0dHIgKnB0aHJlYWRfY29uZGF0dHJfdDsKdHlwZWRlZiBpbnQgcHRocmVhZF9rZXlfdDsKdHlw
ZWRlZiBzdHJ1Y3QgcHRocmVhZF9vbmNlIHB0aHJlYWRfb25jZV90Owp0eXBlZGVmIHN0cnVjdCBw
dGhyZWFkX3J3bG9jayAqcHRocmVhZF9yd2xvY2tfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9y
d2xvY2thdHRyICpwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgoKCnR5cGVkZWYgdm9pZCAqcHRo
cmVhZF9hZGRyX3Q7CnR5cGVkZWYgdm9pZCAqKCpwdGhyZWFkX3N0YXJ0cm91dGluZV90KSh2b2lk
ICopOwoKCgoKc3RydWN0IHB0aHJlYWRfb25jZSB7CiAgICAgICAgaW50IHN0YXRlOwogICAgICAg
IHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKfTsKIyAxNzcgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi
IDMKZW51bSBwdGhyZWFkX211dGV4dHlwZSB7CiAgICAgICAgUFRIUkVBRF9NVVRFWF9FUlJPUkNI
RUNLID0gMSwKICAgICAgICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSA9IDIsCiAgICAgICAgUFRI
UkVBRF9NVVRFWF9OT1JNQUwgPSAzLAogICAgICAgIE1VVEVYX1RZUEVfTUFYCn07CiMgMTkxICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgppbnQgcHRocmVhZF9hdHRyX2Rlc3Ryb3kocHRocmVh
ZF9hdHRyX3QgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplKGNvbnN0IHB0aHJlYWRf
YXR0cl90ICosIHNpemVfdCAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRndWFyZHNpemUoY29uc3Qg
cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90ICopOwppbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRk
cihjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCB2b2lkICoqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRk
ZXRhY2hzdGF0ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0
dHJfaW5pdChwdGhyZWFkX2F0dHJfdCAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUo
cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUo
cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIo
cHRocmVhZF9hdHRyX3QgKiwgdm9pZCAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0
ZShwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwp2b2lkIHB0aHJlYWRfY2xlYW51cF9wb3AoaW50KTsK
dm9pZCBwdGhyZWFkX2NsZWFudXBfcHVzaCh2b2lkICgqKSAodm9pZCAqKSwgdm9pZCAqcm91dGlu
ZV9hcmcpOwppbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95KHB0aHJlYWRfY29uZGF0dHJfdCAq
KTsKaW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdChwdGhyZWFkX2NvbmRhdHRyX3QgKik7CgoKCgoK
CmludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJlYWRfY29uZF90ICopOwppbnQgcHRocmVh
ZF9jb25kX2Rlc3Ryb3kocHRocmVhZF9jb25kX3QgKik7CmludCBwdGhyZWFkX2NvbmRfaW5pdChw
dGhyZWFkX2NvbmRfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdGhyZWFkX2Nv
bmRhdHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICopOwpp
bnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdChwdGhyZWFkX2NvbmRfdCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICBwdGhyZWFkX211dGV4X3QgKiwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpp
bnQgcHRocmVhZF9jb25kX3dhaXQocHRocmVhZF9jb25kX3QgKiwgcHRocmVhZF9tdXRleF90ICop
OwppbnQgcHRocmVhZF9jcmVhdGUocHRocmVhZF90ICosIGNvbnN0IHB0aHJlYWRfYXR0cl90ICos
CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqKSAodm9pZCAqKSwgdm9pZCAqKTsKaW50
IHB0aHJlYWRfZGV0YWNoKHB0aHJlYWRfdCk7CmludCBwdGhyZWFkX2VxdWFsKHB0aHJlYWRfdCwg
cHRocmVhZF90KTsKdm9pZCBwdGhyZWFkX2V4aXQodm9pZCAqKSBfX2F0dHJpYnV0ZV9fKChfX25v
cmV0dXJuX18pKTsKdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90KTsKaW50
IHB0aHJlYWRfam9pbihwdGhyZWFkX3QsIHZvaWQgKiopOwppbnQgcHRocmVhZF9rZXlfY3JlYXRl
KHB0aHJlYWRfa2V5X3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikgKHZvaWQg
KikpOwppbnQgcHRocmVhZF9rZXlfZGVsZXRlKHB0aHJlYWRfa2V5X3QpOwppbnQgcHRocmVhZF9r
aWxsKHB0aHJlYWRfdCwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQocHRocmVhZF9t
dXRleGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kocHRocmVhZF9tdXRl
eGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUocHRocmVhZF9tdXRleGF0
dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKHB0aHJlYWRfbXV0
ZXhhdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveShwdGhyZWFkX211dGV4
X3QgKik7CmludCBwdGhyZWFkX211dGV4X2luaXQocHRocmVhZF9tdXRleF90ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKik7CmludCBwdGhyZWFk
X211dGV4X2xvY2socHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9tdXRleF90cnlsb2Nr
KHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHB0aHJlYWRfbXV0
ZXhfdCAqKTsKaW50IHB0aHJlYWRfb25jZShwdGhyZWFkX29uY2VfdCAqLCB2b2lkICgqKSAodm9p
ZCkpOwppbnQgcHRocmVhZF9yd2xvY2tfZGVzdHJveShwdGhyZWFkX3J3bG9ja190ICopOwppbnQg
cHRocmVhZF9yd2xvY2tfaW5pdChwdGhyZWFkX3J3bG9ja190ICosCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwppbnQgcHRocmVhZF9yd2xvY2tf
cmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmludCBwdGhyZWFkX3J3bG9ja190cnlyZGxvY2so
cHRocmVhZF9yd2xvY2tfdCAqKTsKaW50IHB0aHJlYWRfcndsb2NrX3RyeXdybG9jayhwdGhyZWFk
X3J3bG9ja190ICopOwppbnQgcHRocmVhZF9yd2xvY2tfdW5sb2NrKHB0aHJlYWRfcndsb2NrX3Qg
Kik7CmludCBwdGhyZWFkX3J3bG9ja193cmxvY2socHRocmVhZF9yd2xvY2tfdCAqKTsKaW50IHB0
aHJlYWRfcndsb2NrYXR0cl9pbml0KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwppbnQgcHRocmVh
ZF9yd2xvY2thdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ICopOwppbnQgcHRocmVhZF9yd2xvY2thdHRyX3NldHBz
aGFyZWQocHRocmVhZF9yd2xvY2thdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfcndsb2NrYXR0
cl9kZXN0cm95KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpwdGhyZWFkX3QgcHRocmVhZF9zZWxm
KHZvaWQpOwppbnQgcHRocmVhZF9zZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90LCBjb25zdCB2b2lk
ICopOwppbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2lnc2V0X3QgKiwgc2lnc2V0X3Qg
Kik7CgppbnQgcHRocmVhZF9jYW5jZWwocHRocmVhZF90KTsKaW50IHB0aHJlYWRfc2V0Y2FuY2Vs
c3RhdGUoaW50LCBpbnQgKik7CmludCBwdGhyZWFkX3NldGNhbmNlbHR5cGUoaW50LCBpbnQgKik7
CnZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsKHZvaWQpOwoKaW50IHB0aHJlYWRfZ2V0cHJpbyhwdGhy
ZWFkX3QpOwppbnQgcHRocmVhZF9zZXRwcmlvKHB0aHJlYWRfdCwgaW50KTsKdm9pZCBwdGhyZWFk
X3lpZWxkKHZvaWQpOwojIDI3NSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwppbnQgcHRocmVh
ZF9tdXRleGF0dHJfZ2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleGF0dHJfdCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcmlvY2Vp
bGluZyhwdGhyZWFkX211dGV4YXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgIGludCk7
CmludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBpbnQg
Kik7CmludCBwdGhyZWFkX211dGV4X3NldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBp
bnQsIGludCAqKTsKCmludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2NvbChwdGhyZWFkX211
dGV4YXR0cl90ICosIGludCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHByb3RvY29sKHB0
aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKCmludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNj
aGVkKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIGludCAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRz
Y2hlZHBhcmFtKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeShj
b25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUo
Y29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX3NldGluaGVy
aXRzY2hlZChwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9hdHRyX3NldHNjaGVk
cGFyYW0ocHRocmVhZF9hdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IHNjaGVkX3BhcmFtICopOwppbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KHB0aHJl
YWRfYXR0cl90ICosIGludCk7CmludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUocHRocmVhZF9hdHRy
X3QgKiwgaW50KTsKaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbShwdGhyZWFkX3QgcHRocmVhZCwg
aW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50
IHB0aHJlYWRfc2V0c2NoZWRwYXJhbShwdGhyZWFkX3QsIGludCwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwoKIyAyMDAgIi4uLy4uLy4uLy4uL2V4
cG9ydHMvaW5jbHVkZS9YMTEvWHRocmVhZHMuaCIgMgp0eXBlZGVmIHB0aHJlYWRfdCB4dGhyZWFk
X3Q7CnR5cGVkZWYgcHRocmVhZF9rZXlfdCB4dGhyZWFkX2tleV90Owp0eXBlZGVmIHB0aHJlYWRf
Y29uZF90IHhjb25kaXRpb25fcmVjOwp0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCB4bXV0ZXhfcmVj
OwojIDI1NSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YdGhyZWFkcy5oIgp0eXBl
ZGVmIHhjb25kaXRpb25fcmVjICp4Y29uZGl0aW9uX3Q7CnR5cGVkZWYgeG11dGV4X3JlYyAqeG11
dGV4X3Q7CiMgMTc3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIgMgoK
dHlwZWRlZiBzdHJ1Y3QgewogICB4dGhyZWFkX2tleV90IGtleTsKICAgaW50IGluaXRNYWdpYzsK
fSBfZ2x0aHJlYWRfVFNEOwoKdHlwZWRlZiB4dGhyZWFkX3QgX2dsdGhyZWFkX1RocmVhZDsKCnR5
cGVkZWYgeG11dGV4X3JlYyBfZ2x0aHJlYWRfTXV0ZXg7CiMgMjM3ICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcKX2dsdGhyZWFkX0dl
dElEKHZvaWQpOwoKCmV4dGVybiB2b2lkCl9nbHRocmVhZF9Jbml0VFNEKF9nbHRocmVhZF9UU0Qg
Kik7CgoKZXh0ZXJuIHZvaWQgKgpfZ2x0aHJlYWRfR2V0VFNEKF9nbHRocmVhZF9UU0QgKik7CgoK
ZXh0ZXJuIHZvaWQKX2dsdGhyZWFkX1NldFRTRChfZ2x0aHJlYWRfVFNEICosIHZvaWQgKik7CiMg
MzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIiAyCgojIDEgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy9tYXRyaXguaCIgMQojIDMxICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvbWF0cml4LmgiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz
LmgiIDEKIyAzMiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL21hdHJpeC5oIiAyCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgR0xmbG9hdCAqbTsKICAgR0xmbG9hdCAqaW52OwogICBHTHVpbnQg
ZmxhZ3M7CiAgIEdMdWludCB0eXBlOwp9IEdMbWF0cml4OwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xf
bWF0cml4X3RyYW5zcG9zZWYoIEdMZmxvYXQgdG9bMTZdLCBjb25zdCBHTGZsb2F0IGZyb21bMTZd
ICk7CgpleHRlcm4gdm9pZCBnbF9tYXRyaXhfdHJhbnNwb3NlZCggR0xkb3VibGUgdG9bMTZdLCBj
b25zdCBHTGRvdWJsZSBmcm9tWzE2XSApOwoKCmV4dGVybiB2b2lkIGdsX3JvdGF0aW9uX21hdHJp
eCggR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1bXSApOwoKCmV4dGVybiB2b2lkIGds
X21hdF9tdWxfZmxvYXRzKCBHTG1hdHJpeCAqbWF0LCBjb25zdCBHTGZsb2F0ICptLCBHTHVpbnQg
ZmxhZ3MgKTsKCmV4dGVybiB2b2lkIGdsX21hdF9tdWxfbWF0KCBHTG1hdHJpeCAqbWF0LCBjb25z
dCBHTG1hdHJpeCAqbWF0MiApOwoKZXh0ZXJuIHZvaWQgZ2xfY2FsY3VsYXRlX21vZGVsX3Byb2pl
Y3RfbWF0cml4KCBHTGNvbnRleHQgKmN0eCApOwoKZXh0ZXJuIHZvaWQgZ2xfbWF0cml4X2NvcHko
IEdMbWF0cml4ICp0bywgY29uc3QgR0xtYXRyaXggKmZyb20gKTsKCmV4dGVybiB2b2lkIGdsX21h
dHJpeF9jdHIoIEdMbWF0cml4ICptICk7CgpleHRlcm4gdm9pZCBnbF9tYXRyaXhfZHRyKCBHTG1h
dHJpeCAqbSApOwoKZXh0ZXJuIHZvaWQgZ2xfbWF0cml4X2FsbG9jX2ludiggR0xtYXRyaXggKm0g
KTsKCmV4dGVybiB2b2lkIGdsX21hdHJpeF9tdWwoIEdMbWF0cml4ICpkZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTG1hdHJpeCAqYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xtYXRyaXggKmIgKTsKCmV4dGVybiB2b2lkIGdsX21hdHJpeF9hbmFseXpl
KCBHTG1hdHJpeCAqbWF0ICk7CgpleHRlcm4gR0xib29sZWFuIGdsX21hdHJpeF9pbnZlcnQoIEdM
bWF0cml4ICptYXQgKTsKCmV4dGVybiB2b2lkIGdsX3ByaW50X21hdHJpeCggY29uc3QgR0xtYXRy
aXggKm0gKTsKCgoKZXh0ZXJuIHZvaWQKX21lc2FfRnJ1c3R1bSggR0xkb3VibGUgbGVmdCwgR0xk
b3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9w
LAogICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFydmFsLCBHTGRvdWJsZSBmYXJ2YWwgKTsKCmV4
dGVybiB2b2lkCl9tZXNhX09ydGhvKCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAg
ICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAgICAgR0xk
b3VibGUgbmVhcnZhbCwgR0xkb3VibGUgZmFydmFsICk7CgpleHRlcm4gdm9pZApfbWVzYV9QdXNo
TWF0cml4KCB2b2lkICk7CgpleHRlcm4gdm9pZApfbWVzYV9Qb3BNYXRyaXgoIHZvaWQgKTsKCmV4
dGVybiB2b2lkCl9tZXNhX0xvYWRJZGVudGl0eSggdm9pZCApOwoKZXh0ZXJuIHZvaWQKX21lc2Ff
TG9hZE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNhX0xvYWRN
YXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwoKZXh0ZXJuIHZvaWQKX21lc2FfTWF0cml4TW9k
ZSggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkCl9tZXNhX011bHRNYXRyaXhmKCBjb25zdCBH
TGZsb2F0ICptICk7CgpleHRlcm4gdm9pZApfbWVzYV9NdWx0TWF0cml4ZCggY29uc3QgR0xkb3Vi
bGUgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNhX1JvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkCl9tZXNhX1JvdGF0ZWQo
IEdMZG91YmxlIGFuZ2xlLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7Cgpl
eHRlcm4gdm9pZApfbWVzYV9TY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHog
KTsKCmV4dGVybiB2b2lkCl9tZXNhX1NjYWxlZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVHJhbnNsYXRlZiggR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVHJhbnNsYXRlZCggR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfTG9hZFRy
YW5zcG9zZU1hdHJpeGZBUkIoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNh
X0xvYWRUcmFuc3Bvc2VNYXRyaXhkQVJCKCBjb25zdCBHTGRvdWJsZSAqbSApOwoKZXh0ZXJuIHZv
aWQKX21lc2FfTXVsdFRyYW5zcG9zZU1hdHJpeGZBUkIoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4
dGVybiB2b2lkCl9tZXNhX011bHRUcmFuc3Bvc2VNYXRyaXhkQVJCKCBjb25zdCBHTGRvdWJsZSAq
bSApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVmlld3BvcnQoIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CgpleHRlcm4gdm9pZApnbF9WaWV3cG9ydCggR0xj
b250ZXh0ICpjdHgsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0ICk7CgpleHRlcm4gdm9pZApfbWVzYV9EZXB0aFJhbmdlKCBHTGNsYW1wZCBuZWFydmFsLCBH
TGNsYW1wZCBmYXJ2YWwgKTsKIyAzOSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz
LmgiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIgMQojIDUxICIuLi8u
Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdmVjdG9yLmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3ZlY3Rv
ci5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgIEdMZmxvYXQgKCpkYXRhKVs0XTsKICAgR0xmbG9hdCAq
c3RhcnQ7CiAgIEdMdWludCBjb3VudDsKICAgR0x1aW50IHN0cmlkZTsKICAgR0x1aW50IHNpemU7
CiAgIEdMdWludCBmbGFnczsKICAgdm9pZCAqc3RvcmFnZTsKfSBHTHZlY3RvcjRmOwoKCmV4dGVy
biB2b2lkIGdsX3ZlY3RvcjRmX3ByaW50KCBHTHZlY3RvcjRmICp2LCBHTHVieXRlICosIEdMYm9v
bGVhbiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9pbml0KCBHTHZlY3RvcjRmICp2LCBHTHVp
bnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKCpzdG9yYWdl
KVs0XSApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9hbGxvYyggR0x2ZWN0b3I0ZiAqdiwgR0x1
aW50IHN6LCBHTHVpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgY291bnQsIEdMdWludCBhbGlnbm1lbnQgKTsKZXh0ZXJuIHZvaWQgZ2xfdmVjdG9yNGZfZnJl
ZSggR0x2ZWN0b3I0ZiAqdiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9jbGVhbl9lbGVtKCBH
THZlY3RvcjRmICp2ZWMsIEdMdWludCBuciwgR0x1aW50IGVsdCApOwojIDg5ICIuLi8uLi8uLi8u
Li9leHRyYXMvTWVzYS9zcmMvdmVjdG9yLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgR0xmbG9hdCAo
KmRhdGEpWzNdOwogICBHTGZsb2F0ICpzdGFydDsKICAgR0x1aW50IGNvdW50OwogICBHTHVpbnQg
c3RyaWRlOwogICBHTHVpbnQgZmxhZ3M7CiAgIHZvaWQgKnN0b3JhZ2U7Cn0gR0x2ZWN0b3IzZjsK
CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjNmX3ByaW50KCBHTHZlY3RvcjNmICp2LCBHTHVieXRlICos
IEdMYm9vbGVhbiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IzZl9mcmVlKCBHTHZlY3RvcjNmICp2
ICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjNmX2luaXQoIEdMdmVjdG9yM2YgKnYsIEdMdWludCBm
bGFncywgR0xmbG9hdCAoKilbM10gKTsKZXh0ZXJuIHZvaWQgZ2xfdmVjdG9yM2ZfYWxsb2MoIEdM
dmVjdG9yM2YgKnYsIEdMdWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGFsaWdubWVudCApOwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICBHTHVieXRlICgqZGF0YSlbNF07CiAgIEdMdWJ5dGUgKnN0YXJ0OwogICBHTHVpbnQgY291bnQ7
CiAgIEdMdWludCBzdHJpZGU7CiAgIEdMdWludCBmbGFnczsKICAgdm9pZCAqc3RvcmFnZTsKfSBH
THZlY3RvcjR1YjsKCmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9pbml0KCBHTHZlY3RvcjR1YiAq
diwgR0x1aW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSAo
KnN0b3JhZ2UpWzRdICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9mcmVlKCBHTHZlY3RvcjR1
YiAqICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9hbGxvYyggR0x2ZWN0b3I0dWIgKnYsIEdM
dWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBhbGlnbm1lbnQgKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICBHTHVieXRlICpk
YXRhOwogICBHTHVieXRlICpzdGFydDsKICAgR0x1aW50IGNvdW50OwogICBHTHVpbnQgc3RyaWRl
OwogICBHTHVpbnQgZmxhZ3M7CiAgIHZvaWQgKnN0b3JhZ2U7Cn0gR0x2ZWN0b3IxdWI7CgpleHRl
cm4gdm9pZCBnbF92ZWN0b3IxdWJfaW5pdCggR0x2ZWN0b3IxdWIgKnYsIEdMdWludCBmbGFncywg
R0x1Ynl0ZSAqc3RvcmFnZSk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjF1Yl9mcmVlKCBHTHZlY3Rv
cjF1YiAqICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjF1Yl9hbGxvYyggR0x2ZWN0b3IxdWIgKnYs
IEdMdWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBhbGlnbm1lbnQgKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICBHTHVpbnQg
KmRhdGE7CiAgIEdMdWludCAqc3RhcnQ7CiAgIEdMdWludCBjb3VudDsKICAgR0x1aW50IHN0cmlk
ZTsKICAgR0x1aW50IGZsYWdzOwogICB2b2lkICpzdG9yYWdlOwp9IEdMdmVjdG9yMXVpOwoKZXh0
ZXJuIHZvaWQgZ2xfdmVjdG9yMXVpX2luaXQoIEdMdmVjdG9yMXVpICp2LCBHTHVpbnQgZmxhZ3Ms
IEdMdWludCAqc3RvcmFnZSApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IxdWlfZnJlZSggR0x2ZWN0
b3IxdWkgKiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IxdWlfYWxsb2MoIEdMdmVjdG9yMXVpICp2
LCBHTHVpbnQgZmxhZ3MsIEdMdWludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYWxpZ25tZW50ICk7CiMgNTIgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny
Yy92Yi5oIiAyCgoKCgplbnVtIHsKICAgVkJfSU1NRURJQVRFLAogICBWQl9DVkFfUFJFQ0FMQwp9
OwoKCgoKCnN0cnVjdCB2ZXJ0ZXhfZGF0YQp7CiAgIEdMZmxvYXQgKCpPYmopWzRdOwogICBHTGZs
b2F0ICgqTm9ybWFsKVszXTsKICAgR0x1Ynl0ZSAoKkNvbG9yKVs0XTsKICAgR0x1aW50ICpJbmRl
eDsKICAgR0x1Ynl0ZSAqRWRnZUZsYWc7CiAgIEdMZmxvYXQgKCpUZXhDb29yZFsyXSlbNF07CiAg
IEdMdWludCAqRWx0Owp9OwoKc3RydWN0IHZlcnRleF9hcnJheXMKewogICBHTHZlY3RvcjRmIE9i
ajsKICAgR0x2ZWN0b3IzZiBOb3JtYWw7CiAgIEdMdmVjdG9yNHViIENvbG9yOwogICBHTHZlY3Rv
cjF1aSBJbmRleDsKICAgR0x2ZWN0b3IxdWIgRWRnZUZsYWc7CiAgIEdMdmVjdG9yNGYgVGV4Q29v
cmRbMl07CiAgIEdMdmVjdG9yMXVpIEVsdDsKfTsKCnN0cnVjdCB2ZXJ0ZXhfYXJyYXlfcG9pbnRl
cnMKewogICBHTHZlY3RvcjRmICpPYmo7CiAgIEdMdmVjdG9yM2YgKk5vcm1hbDsKICAgR0x2ZWN0
b3I0dWIgKkNvbG9yOwogICBHTHZlY3RvcjF1aSAqSW5kZXg7CiAgIEdMdmVjdG9yMXViICpFZGdl
RmxhZzsKICAgR0x2ZWN0b3I0ZiAqVGV4Q29vcmRbMl07CiAgIEdMdmVjdG9yMXVpICpFbHQ7Cn07
CgoKCgoKCnN0cnVjdCBnbF9tYXRlcmlhbAp7CiAgIEdMZmxvYXQgQW1iaWVudFs0XTsKICAgR0xm
bG9hdCBEaWZmdXNlWzRdOwogICBHTGZsb2F0IFNwZWN1bGFyWzRdOwogICBHTGZsb2F0IEVtaXNz
aW9uWzRdOwogICBHTGZsb2F0IFNoaW5pbmVzczsKICAgR0xmbG9hdCBBbWJpZW50SW5kZXg7CiAg
IEdMZmxvYXQgRGlmZnVzZUluZGV4OwogICBHTGZsb2F0IFNwZWN1bGFySW5kZXg7Cn07CiMgMTI1
ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIKc3RydWN0IGltbWVkaWF0ZQp7CiAg
IHN0cnVjdCBpbW1lZGlhdGUgKm5leHQ7CiAgIEdMdWludCBpZCwgcmVmX2NvdW50OwoKCgogICBH
THVpbnQgU3RhcnQsIENvdW50OwogICBHTHVpbnQgTGFzdERhdGE7CiAgIEdMdWludCBBbmRGbGFn
LCBPckZsYWcsIEJlZ2luU3RhdGU7CiAgIEdMdWludCBMYXN0UHJpbWl0aXZlOwoKICAgR0x1aW50
IEFycmF5QW5kRmxhZ3M7CiAgIEdMdWludCBBcnJheUluY3I7CiAgIEdMdWludCBBcnJheUVsdEZs
dXNoOwogICBHTHVpbnQgRmx1c2hFbHQ7CgogICBHTHVpbnQgVEYxWzJdOwogICBHTHVpbnQgVEYy
WzJdOwogICBHTHVpbnQgVEYzWzJdOwogICBHTHVpbnQgVEY0WzJdOwoKICAgR0x1aW50IFByaW1p
dGl2ZVsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkpXTsKICAgR0x1aW50IE5leHRQcmlt
aXRpdmVbKCgyMTYgKyAzKSArICgoMiAqICg2ICsgNikpKzEpKV07CgoKCiAgIHN0cnVjdCBnbF9t
YXRlcmlhbCAoKk1hdGVyaWFsKVsyXTsKICAgR0x1aW50ICpNYXRlcmlhbE1hc2s7CgogICBHTGZs
b2F0ICgqVGV4Q29vcmRQdHJbMl0pWzRdOwoKICAgc3RydWN0IHZlcnRleF9hcnJheXMgdjsKCiAg
IHN0cnVjdCBnbF9jb250ZXh0ICpiYWNrcmVmOwogICB2b2lkICgqbWF5YmVfdHJhbnNmb3JtX3Zi
KSggc3RydWN0IGltbWVkaWF0ZSAqICk7CgoKCiAgIEdMZmxvYXQgKk5vcm1hbExlbmd0aHM7CiAg
IEdMdWludCBMYXN0Q2FsY2VkTGVuZ3RoOwoKICAgR0x1aW50IEZsYWdbKCgyMTYgKyAzKSArICgo
MiAqICg2ICsgNikpKzEpKV07CiAgIEdMdWJ5dGUgQ29sb3JbKCgyMTYgKyAzKSArICgoMiAqICg2
ICsgNikpKzEpKV1bNF07CiAgIEdMZmxvYXQgT2JqWygoMjE2ICsgMykgKyAoKDIgKiAoNiArIDYp
KSsxKSldWzRdOwogICBHTGZsb2F0IE5vcm1hbFsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkr
MSkpXVszXTsKICAgR0xmbG9hdCBUZXhDb29yZFsyXVsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2
KSkrMSkpXVs0XTsKICAgR0x1aW50IEVsdFsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkp
XTsKICAgR0x1Ynl0ZSBFZGdlRmxhZ1soKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkpXTsK
ICAgR0x1aW50IEluZGV4WygoMjE2ICsgMykgKyAoKDIgKiAoNiArIDYpKSsxKSldOwp9OwoKCgoK
CgoKc3RydWN0IHZlcnRleF9idWZmZXIKewoKCgoKCiAgIHN0cnVjdCBnbF9jb250ZXh0ICpjdHg7
CiAgIHN0cnVjdCBnbF9waXBlbGluZSAqcGlwZWxpbmU7CiAgIHZvaWQgKmRyaXZlcl9kYXRhOwoj
IDIwMiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3ZiLmgiCiAgIHN0cnVjdCBpbW1lZGlh
dGUgKklNOwogICBzdHJ1Y3QgdmVydGV4X2FycmF5X3BvaW50ZXJzIHN0b3JlOwoKCgogICBzdHJ1
Y3QgaW1tZWRpYXRlICpwcmV2X2J1ZmZlcjsKCgogICBHTHVpbnQgVHlwZTsKICAgR0x1aW50IFNp
emUsIFN0YXJ0LCBDb3VudDsKICAgR0x1aW50IEZyZWUsIEZpcnN0RnJlZTsKICAgR0x1aW50IENv
cHlTdGFydDsKICAgR0x1aW50IFBhcml0eSwgT3ZmOwogICBHTHVpbnQgUHVyZ2VGbGFnczsKICAg
R0x1aW50IEluZGlyZWN0Q291bnQ7CiAgIEdMdWludCBPckZsYWcsIFNhdmVkT3JGbGFnOwogICBH
THVpbnQgRWFybHlDdWxsOwogICBHTHVpbnQgQ3VsbGVkLCBDdWxsRG9uZTsKCgoKICAgR0x2ZWN0
b3I0ZiAqT2JqUHRyOwogICBHTHZlY3RvcjNmICpOb3JtYWxQdHI7CiAgIEdMdmVjdG9yNHViICpD
b2xvclB0cjsKICAgR0x2ZWN0b3IxdWkgKkluZGV4UHRyOwogICBHTHZlY3RvcjF1YiAqRWRnZUZs
YWdQdHI7CiAgIEdMdmVjdG9yNGYgKlRleENvb3JkUHRyWzJdOwogICBHTHZlY3RvcjF1aSAqRWx0
UHRyOwogICBHTHVpbnQgKkZsYWcsIEZsYWdNYXg7CiAgIHN0cnVjdCBnbF9tYXRlcmlhbCAoKk1h
dGVyaWFsKVsyXTsKICAgR0x1aW50ICpNYXRlcmlhbE1hc2s7CgogICBHTHVpbnQgKk5leHRQcmlt
aXRpdmU7CiAgIEdMdWludCAqUHJpbWl0aXZlOwogICBHTHVpbnQgTGFzdFByaW1pdGl2ZTsKCiAg
IEdMZmxvYXQgKCpCb3VuZHNQdHIpWzNdOwogICBHTGZsb2F0ICpOb3JtYWxMZW5ndGhQdHI7CgoK
CgoKICAgR0x2ZWN0b3I0ZiBFeWU7CiAgIEdMdmVjdG9yNGYgQ2xpcDsKICAgR0x2ZWN0b3I0ZiBX
aW47CiAgIEdMdmVjdG9yNHViIEJDb2xvcjsKICAgR0x2ZWN0b3IxdWkgQkluZGV4OwogICBHTHVi
eXRlICgqU3BlY3VsYXIpWzRdOwogICBHTHVieXRlICgqU3BlY1syXSlbNF07CgoKCgogICBHTHVi
eXRlICpDbGlwTWFzazsKICAgR0x1Ynl0ZSAqVXNlckNsaXBNYXNrOwoKCgoKCiAgIEdMdmVjdG9y
NGYgKkV5ZVB0cjsKICAgR0x2ZWN0b3I0ZiAqQ2xpcFB0cjsKICAgR0x2ZWN0b3I0ZiAqVW5wcm9q
ZWN0ZWQ7CiAgIEdMdmVjdG9yNGYgKlByb2plY3RlZDsKICAgR0x2ZWN0b3I0ZiAqQ3VycmVudFRl
eENvb3JkOwogICBHTHVpbnQgKkluZGlyZWN0OwoKCgoKICAgR0x2ZWN0b3I0dWIgKkNvbG9yWzJd
OwogICBHTHZlY3RvcjF1aSAqSW5kZXhbMl07CgoKCgogICBHTHZlY3RvcjR1YiAqTGl0Q29sb3Jb
Ml07CiAgIEdMdmVjdG9yMXVpICpMaXRJbmRleFsyXTsKICAgR0x2ZWN0b3I0dWIgKkZvZ2dlZENv
bG9yWzJdOwogICBHTHZlY3RvcjF1aSAqRm9nZ2VkSW5kZXhbMl07CgoKCgogICBHTGZsb2F0ICgq
dG1wX2YpWzNdOwogICBHTGZsb2F0ICp0bXBfbTsKCgoKICAgR0x1aW50ICpFdmFsdWF0ZWRGbGFn
czsKCgoKICAgR0x1Ynl0ZSAqTm9ybUN1bGxTdGFydDsKICAgR0x1Ynl0ZSAqQ3VsbE1hc2s7CiAg
IEdMdWJ5dGUgKk5vcm1DdWxsTWFzazsKCgogICBHTHVieXRlIENsaXBPck1hc2s7CiAgIEdMdWJ5
dGUgQ2xpcEFuZE1hc2s7CiAgIEdMdWJ5dGUgQ3VsbEZsYWdbMl07CiAgIEdMdWJ5dGUgQ3VsbE1v
ZGU7CgogICBHTHVpbnQgQ29weUNvdW50OwogICBHTHVpbnQgQ29weVszXTsKICAgR0xmbG9hdCBD
b3B5UHJvalszXVs0XTsKfTsKCgpleHRlcm4gc3RydWN0IHZlcnRleF9idWZmZXIgKmdsX2FsbG9j
X3ZiKCBHTGNvbnRleHQgKmN0eCApOwpleHRlcm4gc3RydWN0IGltbWVkaWF0ZSAqZ2xfYWxsb2Nf
aW1tZWRpYXRlKCBHTGNvbnRleHQgKmN0eCApOwpleHRlcm4gdm9pZCBnbF9mcmVlX2ltbWVkaWF0
ZSggc3RydWN0IGltbWVkaWF0ZSAqaW0gKTsKCmV4dGVybiBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAq
Z2xfdmJfY3JlYXRlX2Zvcl9pbW1lZGlhdGUoIEdMY29udGV4dCAqY3R4ICk7CmV4dGVybiBzdHJ1
Y3QgdmVydGV4X2J1ZmZlciAqZ2xfdmJfY3JlYXRlX2Zvcl9jdmEoIEdMY29udGV4dCAqY3R4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c2l6ZSApOwpleHRlcm4gdm9pZCBnbF92Yl9mcmVlKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqICk7
CmV4dGVybiBzdHJ1Y3QgaW1tZWRpYXRlICpnbF9pbW1lZGlhdGVfYWxsb2MoIEdMY29udGV4dCAq
Y3R4ICk7CmV4dGVybiB2b2lkIGdsX2ltbWVkaWF0ZV9mcmVlKCBzdHJ1Y3QgaW1tZWRpYXRlICpp
bSApOwojIDQwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIgMgoKCgoKCgoK
ICAgdHlwZWRlZiBHTHVieXRlIEdMY2hhbjsKIyA2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3R5cGVzLmgiCiAgIHR5cGVkZWYgR0xzaG9ydCBHTGFjY3VtOwojIDcxICIuLi8uLi8uLi8u
Li9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIKICAgdHlwZWRlZiBHTHVieXRlIEdMc3RlbmNpbDsK
IyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnR5cGVkZWYgR0x1aW50
IEdMZGVwdGg7CgoKCgoKCnN0cnVjdCBfbWVzYV9IYXNoVGFibGU7Cgp0eXBlZGVmIHN0cnVjdCBn
bF92aXN1YWwgR0x2aXN1YWw7Cgp0eXBlZGVmIHN0cnVjdCBnbF9mcmFtZV9idWZmZXIgR0xmcmFt
ZWJ1ZmZlcjsKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIG5vcm1hbF9mdW5jKSggY29uc3QgR0xtYXRy
aXggKm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHNjYWxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdmVjdG9yM2YgKmluLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgbGVuZ3Roc1tdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdmVjdG9yM2YgKmRlc3QgKTsKCgoKCgoKdHlwZWRlZiB2b2lkICgqcG9pbnRz
X2Z1bmMpKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IGZpcnN0LCBHTHVpbnQgbGFzdCApOwoKdHlw
ZWRlZiB2b2lkICgqbGluZV9mdW5jKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCB2MSwgR0x1aW50
IHYyLCBHTHVpbnQgcHYgKTsKCnR5cGVkZWYgdm9pZCAoKnRyaWFuZ2xlX2Z1bmMpKCBHTGNvbnRl
eHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwgR0x1aW50
IHYyLCBHTHVpbnQgdjMsIEdMdWludCBwdiApOwoKdHlwZWRlZiB2b2lkICgqcXVhZF9mdW5jKSgg
R0xjb250ZXh0ICpjdHgsIEdMdWludCB2MSwgR0x1aW50IHYyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjMsIEdMdWludCB2NCwgR0x1aW50IHB2ICk7Cgp0eXBlZGVmIHZvaWQg
KCpyZWN0X2Z1bmMpKCBHTGNvbnRleHQgKmN0eCwgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCApOwoKCgoKCgoKdHlw
ZWRlZiB2b2lkICgqY2xpcF9pbnRlcnBfZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwg
R0x1aW50IGRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdCwg
R0x1aW50IGluLCBHTHVpbnQgb3V0ICk7CgoKCgoKdHlwZWRlZiB2b2lkICgqcmVuZGVyX3ZiX2Z1
bmMpKCBHTGNvbnRleHQgKmN0eCApOwoKCgp0eXBlZGVmIHZvaWQgKCpyZW5kZXJfZnVuYykoIHN0
cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXJpdHkgKTsKCgoKCgoKdHlwZWRlZiB2
b2lkICggKiBibGVuZF9mdW5jKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlIG1hc2tbXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBzcmNbXVs0XSwgY29uc3QgR0x1Ynl0
ZSBkc3RbXVs0XSApOwojIDE2NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgi
CnN0cnVjdCBnbF90ZXh0dXJlX29iamVjdDsKCnR5cGVkZWYgdm9pZCAoKlRleHR1cmVTYW1wbGVG
dW5jKSggY29uc3Qgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0T2JqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgc1tdLCBjb25zdCBHTGZsb2F0IHRbXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0IHVbXSwgY29uc3QgR0xmbG9h
dCBsYW1iZGFbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJn
YmFbXVs0XSApOwoKCgpzdHJ1Y3QgZ2xfdGV4dHVyZV9mb3JtYXQgewogICBHTGludCBJbnRGb3Jt
YXQ7CgogICBHTHVieXRlIFJlZEJpdHM7CiAgIEdMdWJ5dGUgR3JlZW5CaXRzOwogICBHTHVieXRl
IEJsdWVCaXRzOwogICBHTHVieXRlIEFscGhhQml0czsKICAgR0x1Ynl0ZSBMdW1pbmFuY2VCaXRz
OwogICBHTHVieXRlIEludGVuc2l0eUJpdHM7CiAgIEdMdWJ5dGUgSW5kZXhCaXRzOwoKICAgR0xp
bnQgVGV4ZWxCeXRlczsKfTsKCgpzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSB7CiAgIEdMZW51bSBG
b3JtYXQ7CgoKCiAgIEdMZW51bSBJbnRGb3JtYXQ7CiAgIEdMdWludCBCb3JkZXI7CiAgIEdMdWlu
dCBXaWR0aDsKICAgR0x1aW50IEhlaWdodDsKICAgR0x1aW50IERlcHRoOwogICBHTHVpbnQgV2lk
dGgyOwogICBHTHVpbnQgSGVpZ2h0MjsKICAgR0x1aW50IERlcHRoMjsKICAgR0x1aW50IFdpZHRo
TG9nMjsKICAgR0x1aW50IEhlaWdodExvZzI7CiAgIEdMdWludCBEZXB0aExvZzI7CiAgIEdMdWlu
dCBNYXhMb2cyOwogICBHTHVieXRlICpEYXRhOwoKICAgY29uc3Qgc3RydWN0IGdsX3RleHR1cmVf
Zm9ybWF0ICpUZXhGb3JtYXQ7CgogICBHTGJvb2xlYW4gSXNDb21wcmVzc2VkOwogICBHTHVpbnQg
Q29tcHJlc3NlZFNpemU7CgoKICAgdm9pZCAqRHJpdmVyRGF0YTsKfTsKCgoKc3RydWN0IGdsX2Nv
bG9yX3RhYmxlIHsKICAgR0x2b2lkICpUYWJsZTsKICAgR0xlbnVtIFRhYmxlVHlwZTsKICAgR0x1
aW50IFNpemU7CiAgIEdMZW51bSBGb3JtYXQ7CiAgIEdMZW51bSBJbnRGb3JtYXQ7CiAgIEdMaW50
IFJlZFNpemU7CiAgIEdMaW50IEdyZWVuU2l6ZTsKICAgR0xpbnQgQmx1ZVNpemU7CiAgIEdMaW50
IEFscGhhU2l6ZTsKICAgR0xpbnQgTHVtaW5hbmNlU2l6ZTsKICAgR0xpbnQgSW50ZW5zaXR5U2l6
ZTsKfTsKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiIDEKIyAzNSAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCnN0cnVjdCBnbF9waXhlbHN0b3JlX2F0
dHJpYjsKCgpzdHJ1Y3QgdmVydGV4X2J1ZmZlcjsKc3RydWN0IGltbWVkaWF0ZTsKc3RydWN0IGds
X3BpcGVsaW5lX3N0YWdlOwojIDEzNCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgi
CnN0cnVjdCBkZF9mdW5jdGlvbl90YWJsZSB7CgoKCgoKCiAgIGNvbnN0IEdMdWJ5dGUgKiAoKkdl
dFN0cmluZykoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gbmFtZSApOwoKCgoKCiAgIHZvaWQgKCpV
cGRhdGVTdGF0ZSkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgoKCiAgIHZvaWQgKCpDbGVhckluZGV4
KSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBpbmRleCApOwoKCgoKCiAgIHZvaWQgKCpDbGVhckNv
bG9yKSggR0xjb250ZXh0ICpjdHgsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFs
cGhhICk7CgoKCgoKICAgR0xiaXRmaWVsZCAoKkNsZWFyKSggR0xjb250ZXh0ICpjdHgsIEdMYml0
ZmllbGQgbWFzaywgR0xib29sZWFuIGFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCApOwojIDE4MCAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpJbmRleCkoIEdMY29udGV4dCAqY3R4
LCBHTHVpbnQgaW5kZXggKTsKCgoKCgogICB2b2lkICgqQ29sb3IpKCBHTGNvbnRleHQgKmN0eCwK
ICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgZ2x1
ZSwgR0x1Ynl0ZSBhbHBoYSApOwoKCgoKCiAgIEdMYm9vbGVhbiAoKlNldERyYXdCdWZmZXIpKCBH
TGNvbnRleHQgKmN0eCwgR0xlbnVtIGJ1ZmZlciApOwojIDIxMyAiLi4vLi4vLi4vLi4vZXh0cmFz
L01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpTZXRSZWFkQnVmZmVyKSggR0xjb250ZXh0ICpjdHgs
IEdMZnJhbWVidWZmZXIgKmNvbG9yQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBidWZmZXIgKTsKIyAyMjQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgog
ICB2b2lkICgqR2V0QnVmZmVyU2l6ZSkoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgKndpZHRoLCBH
THVpbnQgKmhlaWdodCApOwojIDIzNCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgi
CiAgIHZvaWQgKCpXcml0ZVJHQkFTcGFuKSggY29uc3QgR0xjb250ZXh0ICpjdHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSByZ2JhW11bNF0sIGNvbnN0IEdMdWJ5dGUgbWFz
a1tdICk7CiAgIHZvaWQgKCpXcml0ZVJHQlNwYW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLCBHTGludCB4LCBHTGludCB5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSByZ2JbXVszXSwgY29uc3QgR0x1Ynl0ZSBt
YXNrW10gKTsKCgoKCgogICB2b2lkICgqV3JpdGVNb25vUkdCQVNwYW4pKCBjb25zdCBHTGNvbnRl
eHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgogICB2b2lkICgqV3JpdGVSR0JB
UGl4ZWxzKSggY29uc3QgR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlIHJnYmFbXVs0XSwgY29uc3QgR0x1Ynl0ZSBt
YXNrW10gKTsKCgoKICAgdm9pZCAoKldyaXRlTW9ub1JHQkFQaXhlbHMpKCBjb25zdCBHTGNvbnRl
eHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3Qg
R0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKCgoKICAgdm9pZCAoKldyaXRlQ0kzMlNwYW4pKCBj
b25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50IGluZGV4W10sIGNvbnN0IEdMdWJ5dGUgbWFz
a1tdICk7CiAgIHZvaWQgKCpXcml0ZUNJOFNwYW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1
aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVieXRlIGluZGV4W10sIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgoKICAgdm9pZCAoKldy
aXRlTW9ub0NJU3BhbikoIGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwg
R0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1td
ICk7CgoKCgogICB2b2lkICgqV3JpdGVDSTMyUGl4ZWxzKSggY29uc3QgR0xjb250ZXh0ICpjdHgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBj
b25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
aW5kZXhbXSwgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKCgoKCiAgIHZvaWQgKCpXcml0ZU1vbm9D
SVBpeGVscykoIGNvbnN0IEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CiMgMjk3ICIuLi8u
Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIKICAgdm9pZCAoKlJlYWRDSTMyU3BhbikoIGNv
bnN0IEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdM
aW50IHgsIEdMaW50IHksIEdMdWludCBpbmRleFtdICk7CgoKCiAgIHZvaWQgKCpSZWFkUkdCQVNw
YW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJnYmFbXVs0XSApOwoKCgogICB2b2lkICgq
UmVhZENJMzJQaXhlbHMpKCBjb25zdCBHTGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMaW50IHhbXSwgY29uc3QgR0xpbnQgeVtdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5keFtdLCBjb25zdCBHTHVieXRlIG1hc2tb
XSApOwoKCgogICB2b2lkICgqUmVhZFJHQkFQaXhlbHMpKCBjb25zdCBHTGNvbnRleHQgKmN0eCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMaW50IHhbXSwgY29u
c3QgR0xpbnQgeVtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJnYmFbXVs0
XSwgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKIyAzMjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy9kZC5oIgogICB2b2lkICgqRmluaXNoKSggR0xjb250ZXh0ICpjdHggKTsKCgoKCiAgIHZv
aWQgKCpGbHVzaCkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgogICBHTGJvb2xlYW4gKCpJbmRleE1h
c2spKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG1hc2sgKTsKCgoKCiAgIEdMYm9vbGVhbiAoKkNv
bG9yTWFzaykoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gcm1hc2ssIEdMYm9vbGVhbiBnbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGJtYXNrLCBHTGJvb2xlYW4gYW1hc2sgKTsKCgoKCiAgIEdMYm9vbGVhbiAoKkxv
Z2ljT3ApKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIG9wICk7CgoKCgogICB2b2lkICgqRGl0aGVy
KSggR0xjb250ZXh0ICpjdHgsIEdMYm9vbGVhbiBlbmFibGUgKTsKCgoKCgoKICAgdm9pZCAoKkVy
cm9yKSggR0xjb250ZXh0ICpjdHggKTsKCgoKCgogICB2b2lkICgqTmVhckZhcikoIEdMY29udGV4
dCAqY3R4LCBHTGZsb2F0IG5lYXJWYWwsIEdMZmxvYXQgZmFyVmFsICk7CgoKCgoKCiAgIEdMaW50
ICgqR2V0UGFyYW1ldGVyaSkoIGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTGludCBwYXJhbSApOwoj
IDM5NyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpXcml0ZURl
cHRoU3BhbikoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwgR0xpbnQgeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkZXB0aCBkZXB0aFtdLCBjb25zdCBHTHVi
eXRlIG1hc2tbXSApOwoKCgoKICAgdm9pZCAoKlJlYWREZXB0aFNwYW4pKCBHTGNvbnRleHQgKmN0
eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xkZXB0aCBkZXB0aFtdICk7CgoKCgogICB2b2lkICgqV3JpdGVEZXB0aFBpeGVscykoIEdMY29u
dGV4dCAqY3R4LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCB4W10sIGNvbnN0IEdMaW50IHlbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRlcHRoIGRlcHRoW10sIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgogICB2b2lk
ICgqUmVhZERlcHRoUGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGRlcHRoIGRlcHRoW10gKTsKIyA0MjkgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICB2b2lkICgqV3JpdGVTdGVuY2lsU3BhbikoIEdM
Y29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHN0ZW5jaWwgc3RlbmNpbFtdLCBjb25zdCBHTHVieXRlIG1h
c2tbXSApOwoKCgoKCiAgIHZvaWQgKCpSZWFkU3RlbmNpbFNwYW4pKCBHTGNvbnRleHQgKmN0eCwg
R0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THN0ZW5jaWwgc3RlbmNpbFtdICk7CgoKCiAgIHZvaWQgKCpXcml0ZVN0ZW5jaWxQaXhlbHMpKCBH
TGNvbnRleHQgKmN0eCwgR0x1aW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCB4W10sIGNvbnN0IEdMaW50IHlbXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc3RlbmNpbCBzdGVuY2lsW10sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVieXRlIG1hc2tbXSApOwoKCgoKCiAgIHZvaWQgKCpSZWFkU3RlbmNp
bFBpeGVscykoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc3RlbmNpbCBzdGVuY2lsW10gKTsKIyA0NjEgIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICBHTGJvb2xlYW4gKCpEcmF3UGl4ZWxzKSggR0xjb250
ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1bnBhY2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKCgoKCgogICBHTGJvb2xlYW4g
KCpSZWFkUGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1
bnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKmRlc3QgKTsKCgoKCgog
ICBHTGJvb2xlYW4gKCpDb3B5UGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzcmN4LCBHTGludCBzcmN5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBkc3R4LCBHTGludCBkc3R5LCBHTGVudW0gdHlwZSApOwoKCgoKCiAg
IEdMYm9vbGVhbiAoKkJpdG1hcCkoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1
bnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmJpdG1hcCApOwoj
IDUwMyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpUZXhJbWFn
ZSkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRPYmosIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKmltYWdlICk7CiMgNTE2ICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvZGQuaCIKICAgdm9pZCAoKlRleFN1YkltYWdlKSggR0xjb250ZXh0ICpjdHgs
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl
X29iamVjdCAqdE9iaiwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRl
cm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3RleHR1
cmVfaW1hZ2UgKmltYWdlICk7CgoKCgoKICAgR0xib29sZWFuICgqVGV4SW1hZ2UxRCkoIEdMY29u
dGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3Jl
X2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90
ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKICAgR0xib29sZWFuICgqVGV4SW1hZ2Uy
RCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9w
aXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKICAgR0xib29sZWFuICgq
VGV4SW1hZ2UzRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKIyA1NjEg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICBHTGJvb2xlYW4gKCpUZXhTdWJJ
bWFnZTFEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9h
dHRyaWIgKnBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xf
dGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBnbF90ZXh0dXJlX2ltYWdlICp0ZXhJbWFnZSApOwogICBHTGJvb2xlYW4gKCpUZXhTdWJJ
bWFnZTJEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0
b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CiAgIEdMYm9vbGVhbiAoKlRl
eFN1YkltYWdlM0QpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTGludCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGRlcHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4
T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1h
Z2UgKnRleEltYWdlICk7CiMgNTk4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIK
ICAgR0xib29sZWFuICgqQ29weVRleEltYWdlMUQpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciApOwogICBHTGJvb2xlYW4gKCpD
b3B5VGV4SW1hZ2UyRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciApOwoKCgoKCgogICBHTGJvb2xl
YW4gKCpDb3B5VGV4U3ViSW1hZ2UxRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGggKTsKICAgR0xib29sZWFuICgqQ29weVRleFN1YkltYWdlMkQpKCBHTGNv
bnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CiAg
IEdMYm9vbGVhbiAoKkNvcHlUZXhTdWJJbWFnZTNEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCApOwoKCgoKCgog
ICBHTHZvaWQgKigqR2V0VGV4SW1hZ2UpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF90
ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KmZvcm1hdE91dCwgR0xlbnVtICp0eXBlT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gKmZyZWVJbWFnZU91dCApOwojIDY0MyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL2RkLmgiCiAgIEdMYm9vbGVhbiAoKlRlc3RQcm94eVRleEltYWdlKShHTGNvbnRleHQgKmN0
eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLCBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRlcHRoLCBHTGludCBib3JkZXIpOwoKCgoKCiAgIEdMYm9v
bGVhbiAoKkNvbXByZXNzZWRUZXhJbWFnZTFEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsIEdM
c2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1hZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENv
cHkpOwogICBHTGJvb2xlYW4gKCpDb21wcmVzc2VkVGV4SW1hZ2UyRCkoIEdMY29udGV4dCAqY3R4
LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsLCBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleElt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqcmV0
YWluSW50ZXJuYWxDb3B5KTsKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleEltYWdlM0QpKCBH
TGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2Jq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl
X2ltYWdlICp0ZXhJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gKnJldGFpbkludGVybmFsQ29weSk7CiMgNjgzICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvZGQuaCIKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleFN1YkltYWdlMUQpKCBH
TGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdl
ICk7CiAgIEdMYm9vbGVhbiAoKkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKSggR0xjb250ZXh0ICpj
dHgsIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IEdMdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1h
Z2UgKTsKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleFN1YkltYWdlM0QpKCBHTGNvbnRleHQg
KmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXB0aCwg
R0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl
X2ltYWdlICp0ZXhJbWFnZSApOwojIDcxNSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2Rk
LmgiCiAgIEdMaW50ICgqQmFzZUNvbXByZXNzZWRUZXhGb3JtYXQpKEdMY29udGV4dCAqY3R4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCk7
CgoKCgoKCgogICBHTGludCAoKlNwZWNpZmljQ29tcHJlc3NlZFRleEZvcm1hdCkoR0xjb250ZXh0
ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRl
cm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IG51bURpbWVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqbGV2ZWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqd2lkdGhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqaGVpZ2h0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmRlcHRocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpib3JkZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICpmb3JtYXRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlcCk7CiMgNzQ0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIKICAg
R0xib29sZWFuICgqSXNDb21wcmVzc2VkRm9ybWF0KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgaW50
ZXJuYWxGb3JtYXQpOwoKCgogICBHTHNpemVpICgqQ29tcHJlc3NlZEltYWdlU2l6ZSkoR0xjb250
ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtRGlt
ZW5zaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoZWlnaHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVwdGgpOwoKCgoKICAgdm9pZCAoKkdl
dENvbXByZXNzZWRUZXhJbWFnZSkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9kLCB2b2lkICppbWFnZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF90ZXh0dXJlX29i
amVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGds
X3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CgoKCgoKCiAgIHZvaWQgKCpUZXhFbnYpKCBHTGNv
bnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqcGFyYW0gKTsKCgoKICAgdm9pZCAoKlRleFBhcmFtZXRlcikoIEdM
Y29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwojIDc4NCAiLi4vLi4vLi4vLi4v
ZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpCaW5kVGV4dHVyZSkoIEdMY29udGV4dCAq
Y3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4
dHVyZV9vYmplY3QgKnRPYmogKTsKCgoKICAgdm9pZCAoKkRlbGV0ZVRleHR1cmUpKCBHTGNvbnRl
eHQgKmN0eCwgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0T2JqICk7CgoKCgogICBHTGJvb2xl
YW4gKCpJc1RleHR1cmVSZXNpZGVudCkoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdCApOwoKCgogICB2
b2lkICgqUHJpb3JpdGl6ZVRleHR1cmUpKCBHTGNvbnRleHQgKmN0eCwgc3RydWN0IGdsX3RleHR1
cmVfb2JqZWN0ICp0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBwcmlv
cml0eSApOwoKCgogICB2b2lkICgqQWN0aXZlVGV4dHVyZSkoIEdMY29udGV4dCAqY3R4LCBHTHVp
bnQgdGV4VW5pdE51bWJlciApOwoKCgogICB2b2lkICgqVXBkYXRlVGV4dHVyZVBhbGV0dGUpKCBH
TGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGds
X3RleHR1cmVfb2JqZWN0ICp0T2JqICk7CiMgODIxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvZGQuaCIKICAgcG9pbnRzX2Z1bmMgUG9pbnRzRnVuYzsKICAgbGluZV9mdW5jIExpbmVGdW5j
OwogICB0cmlhbmdsZV9mdW5jIFRyaWFuZ2xlRnVuYzsKICAgcXVhZF9mdW5jIFF1YWRGdW5jOwog
ICByZWN0X2Z1bmMgUmVjdEZ1bmM7CgoKCgoKCiAgIHZvaWQgKCpSZW5kZXJTdGFydCkoIEdMY29u
dGV4dCAqY3R4ICk7CiAgIHZvaWQgKCpSZW5kZXJGaW5pc2gpKCBHTGNvbnRleHQgKmN0eCApOwoK
CgoKCgoKICAgdm9pZCAoKlJhc3RlclNldHVwKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCLCBH
THVpbnQgc3RhcnQsIEdMdWludCBlbmQgKTsKIyA4NTEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy9kZC5oIgogICByZW5kZXJfZnVuYyAqUmVuZGVyVkJDbGlwcGVkVGFiOwogICByZW5kZXJf
ZnVuYyAqUmVuZGVyVkJDdWxsZWRUYWI7CiAgIHJlbmRlcl9mdW5jICpSZW5kZXJWQlJhd1RhYjsK
CgoKCgogICB2b2lkICgqUmVkdWNlZFByaW1pdGl2ZUNoYW5nZSkoIEdMY29udGV4dCAqY3R4LCBH
TGVudW0gcHJpbWl0aXZlICk7CgoKCgoKCiAgIEdMdWludCBUcmlhbmdsZUNhcHM7CgoKCgoKCiAg
IEdMYm9vbGVhbiAoKk11bHRpcGFzc0Z1bmMpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIsIEdM
dWludCBwYXNzbm8gKTsKIyA4ODcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgog
ICB2b2lkICgqUmVnaXN0ZXJWQikoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiApOwogICB2b2lk
ICgqVW5yZWdpc3RlclZCKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCICk7CgoKCgoKICAgdm9p
ZCAoKlJlc2V0VkIpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIgKTsKICAgdm9pZCAoKlJlc2V0
Q3ZhVkIpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIsIEdMdWludCBzdGFnZXMgKTsKCgoKCiAg
IEdMdWludCBSZW5kZXJWZWN0b3JGbGFnczsKCgoKCiAgIEdMdWludCAoKlJlZ2lzdGVyUGlwZWxp
bmVTdGFnZXMpKCBzdHJ1Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgKm91dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXBlbGluZV9zdGFnZSAqaW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnIgKTsKCgoKCgog
ICBHTGJvb2xlYW4gKCpCdWlsZFByZWNhbGNQaXBlbGluZSkoIEdMY29udGV4dCAqY3R4ICk7CiAg
IEdMYm9vbGVhbiAoKkJ1aWxkRWx0UGlwZWxpbmUpKCBHTGNvbnRleHQgKmN0eCApOwoKCgoKICAg
dm9pZCAoKk9wdGltaXplUHJlY2FsY1BpcGVsaW5lKSggR0xjb250ZXh0ICpjdHgsIHN0cnVjdCBn
bF9waXBlbGluZSAqcGlwZSApOwogICB2b2lkICgqT3B0aW1pemVJbW1lZGlhdGVQaXBlbGluZSko
IEdMY29udGV4dCAqY3R4LCBzdHJ1Y3QgZ2xfcGlwZWxpbmUgKnBpcGUpOwojIDkzNSAiLi4vLi4v
Li4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpBbHBoYUZ1bmMpKEdMY29udGV4
dCAqY3R4LCBHTGVudW0gZnVuYywgR0xjbGFtcGYgcmVmKTsKICAgdm9pZCAoKkJsZW5kRXF1YXRp
b24pKEdMY29udGV4dCAqY3R4LCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpCbGVuZEZ1bmMpKEdM
Y29udGV4dCAqY3R4LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwogICB2b2lkICgq
QmxlbmRGdW5jU2VwYXJhdGUpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHNmYWN0b3JSR0IsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2Zh
Y3RvckEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZmFjdG9yQSApOwog
ICB2b2lkICgqQmxlbmRDb25zdENvbG9yKShHTGNvbnRleHQgKmN0eCwgR0xmbG9hdCByZWQsIEdM
ZmxvYXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xm
bG9hdCBhbHBoYSk7CiAgIHZvaWQgKCpDbGVhckRlcHRoKShHTGNvbnRleHQgKmN0eCwgR0xjbGFt
cGQgZCk7CiAgIHZvaWQgKCpDdWxsRmFjZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlKTsK
ICAgdm9pZCAoKkZyb250RmFjZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlKTsKICAgdm9p
ZCAoKkRlcHRoRnVuYykoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBmdW5jKTsKICAgdm9pZCAoKkRl
cHRoTWFzaykoR0xjb250ZXh0ICpjdHgsIEdMYm9vbGVhbiBmbGFnKTsKICAgdm9pZCAoKkRlcHRo
UmFuZ2UpKEdMY29udGV4dCAqY3R4LCBHTGNsYW1wZCBuZWFydmFsLCBHTGNsYW1wZCBmYXJ2YWwp
OwogICB2b2lkICgqRW5hYmxlKShHTGNvbnRleHQqIGN0eCwgR0xlbnVtIGNhcCwgR0xib29sZWFu
IHN0YXRlKTsKICAgdm9pZCAoKkZvZ2Z2KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpOwogICB2b2lkICgqSGludCkoR0xjb250ZXh0ICpjdHgsIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkxpZ2h0ZnYpKEdMY29udGV4dCAq
Y3R4LCBHTGVudW0gbGlnaHQsCiAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMZmxvYXQgKnBhcmFtcywgR0xpbnQgbnBhcmFtcyApOwogICB2b2lkICgqTGlnaHRNb2RlbGZ2
KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwog
ICB2b2lkICgqTGluZVN0aXBwbGUpKEdMY29udGV4dCAqY3R4LCBHTGludCBmYWN0b3IsIEdMdXNo
b3J0IHBhdHRlcm4gKTsKICAgdm9pZCAoKkxpbmVXaWR0aCkoR0xjb250ZXh0ICpjdHgsIEdMZmxv
YXQgd2lkdGgpOwogICB2b2lkICgqTG9naWNPcGNvZGUpKEdMY29udGV4dCAqY3R4LCBHTGVudW0g
b3Bjb2RlKTsKICAgdm9pZCAoKlBvaW50U2l6ZSkoR0xjb250ZXh0ICpjdHgsIEdMZmxvYXQgc2l6
ZSk7CiAgIHZvaWQgKCpQb2x5Z29uTW9kZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBmYWNlLCBH
TGVudW0gbW9kZSk7CiAgIHZvaWQgKCpQb2x5Z29uU3RpcHBsZSkoR0xjb250ZXh0ICpjdHgsIGNv
bnN0IEdMdWJ5dGUgKm1hc2sgKTsKICAgdm9pZCAoKlNjaXNzb3IpKEdMY29udGV4dCAqY3R4LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHcsIEdMc2l6ZWkgaCk7CiAgIHZvaWQgKCpTaGFkZU1v
ZGVsKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIG1vZGUpOwogICB2b2lkICgqQ2xlYXJTdGVuY2ls
KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgcyk7CiAgIHZvaWQgKCpTdGVuY2lsRnVuYykoR0xjb250
ZXh0ICpjdHgsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKICAgdm9pZCAo
KlN0ZW5jaWxNYXNrKShHTGNvbnRleHQgKmN0eCwgR0x1aW50IG1hc2spOwogICB2b2lkICgqU3Rl
bmNpbE9wKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVt
IHpwYXNzKTsKICAgdm9pZCAoKlZpZXdwb3J0KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3LCBHTHNpemVpIGgpOwoKCgoKCiAgIEdMYm9vbGVhbiAoKkdldEJvb2xl
YW52KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnJlc3VsdCk7CiAg
IEdMYm9vbGVhbiAoKkdldERvdWJsZXYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIEdM
ZG91YmxlICpyZXN1bHQpOwogICBHTGJvb2xlYW4gKCpHZXRGbG9hdHYpKEdMY29udGV4dCAqY3R4
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnJlc3VsdCk7CiAgIEdMYm9vbGVhbiAoKkdldEludGVn
ZXJ2KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcmVzdWx0KTsKICAgR0xi
b29sZWFuICgqR2V0UG9pbnRlcnYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIEdMdm9p
ZCAqKnJlc3VsdCk7Cn07CiMgMjM5ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMu
aCIgMgojIDI3NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBn
bF9saWdodCB7CiAgIHN0cnVjdCBnbF9saWdodCAqbmV4dDsKICAgc3RydWN0IGdsX2xpZ2h0ICpw
cmV2OwoKICAgR0xmbG9hdCBBbWJpZW50WzRdOwogICBHTGZsb2F0IERpZmZ1c2VbNF07CiAgIEdM
ZmxvYXQgU3BlY3VsYXJbNF07CiAgIEdMZmxvYXQgRXllUG9zaXRpb25bNF07CiAgIEdMZmxvYXQg
RXllRGlyZWN0aW9uWzRdOwogICBHTGZsb2F0IFNwb3RFeHBvbmVudDsKICAgR0xmbG9hdCBTcG90
Q3V0b2ZmOwogICBHTGZsb2F0IENvc0N1dG9mZjsKICAgR0xmbG9hdCBDb25zdGFudEF0dGVudWF0
aW9uOwogICBHTGZsb2F0IExpbmVhckF0dGVudWF0aW9uOwogICBHTGZsb2F0IFF1YWRyYXRpY0F0
dGVudWF0aW9uOwogICBHTGJvb2xlYW4gRW5hYmxlZDsKCgogICBHTHVpbnQgRmxhZ3M7CgogICBH
TGZsb2F0IFBvc2l0aW9uWzRdOwogICBHTGZsb2F0IFZQX2luZl9ub3JtWzNdOwogICBHTGZsb2F0
IGhfaW5mX25vcm1bM107CiAgIEdMZmxvYXQgTm9ybURpcmVjdGlvbls0XTsKICAgR0xmbG9hdCBW
UF9pbmZfc3BvdF9hdHRlbnVhdGlvbjsKCiAgIEdMZmxvYXQgU3BvdEV4cFRhYmxlWzUxMl1bMl07
CiAgIEdMZmxvYXQgTWF0QW1iaWVudFsyXVszXTsKICAgR0xmbG9hdCBNYXREaWZmdXNlWzJdWzNd
OwogICBHTGZsb2F0IE1hdFNwZWN1bGFyWzJdWzNdOwogICBHTGZsb2F0IGRsaTsKICAgR0xmbG9h
dCBzbGk7CiAgIEdMYm9vbGVhbiBJc01hdFNwZWN1bGFyWzJdOwp9OwoKCnN0cnVjdCBnbF9saWdo
dG1vZGVsIHsKICAgR0xmbG9hdCBBbWJpZW50WzRdOwogICBHTGJvb2xlYW4gTG9jYWxWaWV3ZXI7
CiAgIEdMYm9vbGVhbiBUd29TaWRlOwogICBHTGVudW0gQ29sb3JDb250cm9sOwoKfTsKIyAzMjcg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfYWNjdW1fYXR0
cmliIHsKICAgR0xmbG9hdCBDbGVhckNvbG9yWzRdOwp9OwojIDM0MSAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBnbF9jb2xvcmJ1ZmZlcl9hdHRyaWIgewogICBH
THVpbnQgQ2xlYXJJbmRleDsKICAgR0xmbG9hdCBDbGVhckNvbG9yWzRdOwoKICAgR0x1aW50IElu
ZGV4TWFzazsKICAgR0x1Ynl0ZSBDb2xvck1hc2tbNF07CiAgIEdMYm9vbGVhbiBTV21hc2tpbmc7
CgogICBHTGVudW0gRHJhd0J1ZmZlcjsKICAgR0xlbnVtIERyaXZlckRyYXdCdWZmZXI7CiAgIEdM
Ym9vbGVhbiBNdWx0aURyYXdCdWZmZXI7CiAgIEdMdWJ5dGUgRHJhd0Rlc3RNYXNrOwoKCiAgIEdM
Ym9vbGVhbiBBbHBoYUVuYWJsZWQ7CiAgIEdMZW51bSBBbHBoYUZ1bmM7CiAgIEdMdWJ5dGUgQWxw
aGFSZWY7CgoKICAgR0xib29sZWFuIEJsZW5kRW5hYmxlZDsKICAgR0xlbnVtIEJsZW5kU3JjUkdC
OwogICBHTGVudW0gQmxlbmREc3RSR0I7CiAgIEdMZW51bSBCbGVuZFNyY0E7CiAgIEdMZW51bSBC
bGVuZERzdEE7CiAgIEdMZW51bSBCbGVuZEVxdWF0aW9uOwogICBHTGZsb2F0IEJsZW5kQ29sb3Jb
NF07CiAgIGJsZW5kX2Z1bmMgQmxlbmRGdW5jOwoKCiAgIEdMZW51bSBMb2dpY09wOwogICBHTGJv
b2xlYW4gSW5kZXhMb2dpY09wRW5hYmxlZDsKICAgR0xib29sZWFuIENvbG9yTG9naWNPcEVuYWJs
ZWQ7CiAgIEdMYm9vbGVhbiBTV0xvZ2ljT3BFbmFibGVkOwoKICAgR0xib29sZWFuIERpdGhlckZs
YWc7Cn07CgoKc3RydWN0IGdsX2N1cnJlbnRfYXR0cmliIHsKCgogICBHTHVpbnQgRmxhZzsKICAg
R0xmbG9hdCBOb3JtYWxbM107CiAgIEdMdWJ5dGUgQnl0ZUNvbG9yWzRdOwogICBHTHVpbnQgSW5k
ZXg7CiAgIEdMYm9vbGVhbiBFZGdlRmxhZzsKICAgR0xmbG9hdCBUZXhjb29yZFsyXVs0XTsKICAg
R0xlbnVtIFByaW1pdGl2ZTsKCgoKICAgR0xmbG9hdCBSYXN0ZXJQb3NbNF07CiAgIEdMZmxvYXQg
UmFzdGVyRGlzdGFuY2U7CiAgIEdMZmxvYXQgUmFzdGVyQ29sb3JbNF07CiAgIEdMdWludCBSYXN0
ZXJJbmRleDsKICAgR0xmbG9hdCAqUmFzdGVyVGV4Q29vcmQ7CiAgIEdMZmxvYXQgUmFzdGVyTXVs
dGlUZXhDb29yZFsyXVs0XTsKICAgR0xib29sZWFuIFJhc3RlclBvc1ZhbGlkOwp9OwoKCnN0cnVj
dCBnbF9kZXB0aGJ1ZmZlcl9hdHRyaWIgewogICBHTGVudW0gRnVuYzsKICAgR0xmbG9hdCBDbGVh
cjsKICAgR0xib29sZWFuIFRlc3Q7CiAgIEdMYm9vbGVhbiBNYXNrOwogICBHTGJvb2xlYW4gT2Nj
bHVzaW9uVGVzdDsKfTsKCgpzdHJ1Y3QgZ2xfZW5hYmxlX2F0dHJpYiB7CiAgIEdMYm9vbGVhbiBB
bHBoYVRlc3Q7CiAgIEdMYm9vbGVhbiBBdXRvTm9ybWFsOwogICBHTGJvb2xlYW4gQmxlbmQ7CiAg
IEdMYm9vbGVhbiBDbGlwUGxhbmVbNl07CiAgIEdMYm9vbGVhbiBDb2xvck1hdGVyaWFsOwogICBH
TGJvb2xlYW4gQ29udm9sdXRpb24xRDsKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMkQ7CiAgIEdM
Ym9vbGVhbiBTZXBhcmFibGUyRDsKICAgR0xib29sZWFuIEN1bGxGYWNlOwogICBHTGJvb2xlYW4g
RGVwdGhUZXN0OwogICBHTGJvb2xlYW4gRGl0aGVyOwogICBHTGJvb2xlYW4gRm9nOwogICBHTGJv
b2xlYW4gSGlzdG9ncmFtOwogICBHTGJvb2xlYW4gTGlnaHRbOF07CiAgIEdMYm9vbGVhbiBMaWdo
dGluZzsKICAgR0xib29sZWFuIExpbmVTbW9vdGg7CiAgIEdMYm9vbGVhbiBMaW5lU3RpcHBsZTsK
ICAgR0xib29sZWFuIEluZGV4TG9naWNPcDsKICAgR0xib29sZWFuIENvbG9yTG9naWNPcDsKICAg
R0xib29sZWFuIE1hcDFDb2xvcjQ7CiAgIEdMYm9vbGVhbiBNYXAxSW5kZXg7CiAgIEdMYm9vbGVh
biBNYXAxTm9ybWFsOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDE7CiAgIEdMYm9vbGVh
biBNYXAxVGV4dHVyZUNvb3JkMjsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29vcmQzOwogICBH
TGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDQ7CiAgIEdMYm9vbGVhbiBNYXAxVmVydGV4MzsKICAg
R0xib29sZWFuIE1hcDFWZXJ0ZXg0OwogICBHTGJvb2xlYW4gTWFwMkNvbG9yNDsKICAgR0xib29s
ZWFuIE1hcDJJbmRleDsKICAgR0xib29sZWFuIE1hcDJOb3JtYWw7CiAgIEdMYm9vbGVhbiBNYXAy
VGV4dHVyZUNvb3JkMTsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQyOwogICBHTGJvb2xl
YW4gTWFwMlRleHR1cmVDb29yZDM7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3JkNDsKICAg
R0xib29sZWFuIE1hcDJWZXJ0ZXgzOwogICBHTGJvb2xlYW4gTWFwMlZlcnRleDQ7CiAgIEdMYm9v
bGVhbiBNaW5NYXg7CiAgIEdMYm9vbGVhbiBOb3JtYWxpemU7CiAgIEdMYm9vbGVhbiBQaXhlbFRl
eHR1cmU7CiAgIEdMYm9vbGVhbiBQb2ludFNtb290aDsKICAgR0xib29sZWFuIFBvbHlnb25PZmZz
ZXRQb2ludDsKICAgR0xib29sZWFuIFBvbHlnb25PZmZzZXRMaW5lOwogICBHTGJvb2xlYW4gUG9s
eWdvbk9mZnNldEZpbGw7CiAgIEdMYm9vbGVhbiBQb2x5Z29uU21vb3RoOwogICBHTGJvb2xlYW4g
UG9seWdvblN0aXBwbGU7CiAgIEdMYm9vbGVhbiBSZXNjYWxlTm9ybWFsczsKICAgR0xib29sZWFu
IFNjaXNzb3I7CiAgIEdMYm9vbGVhbiBTdGVuY2lsOwogICBHTHVpbnQgVGV4dHVyZVsyXTsKICAg
R0x1aW50IFRleEdlblsyXTsKfTsKCgpzdHJ1Y3QgZ2xfZXZhbF9hdHRyaWIgewoKICAgR0xib29s
ZWFuIE1hcDFDb2xvcjQ7CiAgIEdMYm9vbGVhbiBNYXAxSW5kZXg7CiAgIEdMYm9vbGVhbiBNYXAx
Tm9ybWFsOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDE7CiAgIEdMYm9vbGVhbiBNYXAx
VGV4dHVyZUNvb3JkMjsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29vcmQzOwogICBHTGJvb2xl
YW4gTWFwMVRleHR1cmVDb29yZDQ7CiAgIEdMYm9vbGVhbiBNYXAxVmVydGV4MzsKICAgR0xib29s
ZWFuIE1hcDFWZXJ0ZXg0OwogICBHTGJvb2xlYW4gTWFwMkNvbG9yNDsKICAgR0xib29sZWFuIE1h
cDJJbmRleDsKICAgR0xib29sZWFuIE1hcDJOb3JtYWw7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVy
ZUNvb3JkMTsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQyOwogICBHTGJvb2xlYW4gTWFw
MlRleHR1cmVDb29yZDM7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3JkNDsKICAgR0xib29s
ZWFuIE1hcDJWZXJ0ZXgzOwogICBHTGJvb2xlYW4gTWFwMlZlcnRleDQ7CiAgIEdMYm9vbGVhbiBB
dXRvTm9ybWFsOwoKICAgR0xpbnQgTWFwR3JpZDF1bjsKICAgR0xmbG9hdCBNYXBHcmlkMXUxLCBN
YXBHcmlkMXUyLCBNYXBHcmlkMWR1OwogICBHTGludCBNYXBHcmlkMnVuLCBNYXBHcmlkMnZuOwog
ICBHTGZsb2F0IE1hcEdyaWQydTEsIE1hcEdyaWQydTIsIE1hcEdyaWQyZHU7CiAgIEdMZmxvYXQg
TWFwR3JpZDJ2MSwgTWFwR3JpZDJ2MiwgTWFwR3JpZDJkdjsKfTsKCgpzdHJ1Y3QgZ2xfZm9nX2F0
dHJpYiB7CiAgIEdMYm9vbGVhbiBFbmFibGVkOwogICBHTGZsb2F0IENvbG9yWzRdOwogICBHTGZs
b2F0IERlbnNpdHk7CiAgIEdMZmxvYXQgU3RhcnQ7CiAgIEdMZmxvYXQgRW5kOwogICBHTGZsb2F0
IEluZGV4OwogICBHTGVudW0gTW9kZTsKfTsKCgpzdHJ1Y3QgZ2xfaGludF9hdHRyaWIgewoKICAg
R0xlbnVtIFBlcnNwZWN0aXZlQ29ycmVjdGlvbjsKICAgR0xlbnVtIFBvaW50U21vb3RoOwogICBH
TGVudW0gTGluZVNtb290aDsKICAgR0xlbnVtIFBvbHlnb25TbW9vdGg7CiAgIEdMZW51bSBGb2c7
CgoKICAgR0xlbnVtIEFsbG93RHJhd1dpbjsKICAgR0xlbnVtIEFsbG93RHJhd0ZyZzsKICAgR0xl
bnVtIEFsbG93RHJhd01lbTsKICAgR0xlbnVtIFN0cmljdExpZ2h0aW5nOwoKCiAgIEdMZW51bSBD
bGlwVm9sdW1lQ2xpcHBpbmc7CgoKICAgR0xlbnVtIFRleHR1cmVDb21wcmVzc2lvbjsKfTsKCgpz
dHJ1Y3QgZ2xfaGlzdG9ncmFtX2F0dHJpYiB7CiAgIEdMdWludCBXaWR0aDsKICAgR0xpbnQgRm9y
bWF0OwogICBHTGJvb2xlYW4gU2luazsKICAgR0x1aW50IFJlZFNpemU7CiAgIEdMdWludCBHcmVl
blNpemU7CiAgIEdMdWludCBCbHVlU2l6ZTsKICAgR0x1aW50IEFscGhhU2l6ZTsKICAgR0x1aW50
IEx1bWluYW5jZVNpemU7CiAgIEdMdWludCBDb3VudFsyNTZdWzRdOwp9OwoKCnN0cnVjdCBnbF9t
aW5tYXhfYXR0cmliIHsKICAgR0xlbnVtIEZvcm1hdDsKICAgR0xib29sZWFuIFNpbms7CiAgIEdM
ZmxvYXQgTWluWzRdLCBNYXhbNF07Cn07CgoKc3RydWN0IGdsX2NvbnZvbHV0aW9uX2F0dHJpYiB7
CgogICBHTGVudW0gRm9ybWF0OwogICBHTGVudW0gSW50ZXJuYWxGb3JtYXQ7CiAgIEdMdWludCBX
aWR0aDsKICAgR0x1aW50IEhlaWdodDsKICAgR0xmbG9hdCBGaWx0ZXJbNSAqIDUgKiA0XTsKfTsK
CgpzdHJ1Y3QgZ2xfbGlnaHRfYXR0cmliIHsKICAgc3RydWN0IGdsX2xpZ2h0IExpZ2h0WzhdOwog
ICBzdHJ1Y3QgZ2xfbGlnaHRtb2RlbCBNb2RlbDsKICAgc3RydWN0IGdsX21hdGVyaWFsIE1hdGVy
aWFsWzJdOwogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xlbnVtIFNoYWRlTW9kZWw7CiAgIEdM
ZW51bSBDb2xvck1hdGVyaWFsRmFjZTsKICAgR0xlbnVtIENvbG9yTWF0ZXJpYWxNb2RlOwogICBH
THVpbnQgQ29sb3JNYXRlcmlhbEJpdG1hc2s7CiAgIEdMYm9vbGVhbiBDb2xvck1hdGVyaWFsRW5h
YmxlZDsKCiAgIHN0cnVjdCBnbF9saWdodCBFbmFibGVkTGlzdDsKCgogICBHTGJvb2xlYW4gTmVl
ZFZlcnRpY2VzOwogICBHTHVpbnQgRmxhZ3M7CiAgIEdMZmxvYXQgQmFzZUNvbG9yWzJdWzNdOwog
ICBHTHVieXRlIEJhc2VBbHBoYVsyXTsKfTsKIyA1ODggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfbGluZV9hdHRyaWIgewogICBHTGJvb2xlYW4gU21vb3Ro
RmxhZzsKICAgR0xib29sZWFuIFN0aXBwbGVGbGFnOwogICBHTHVzaG9ydCBTdGlwcGxlUGF0dGVy
bjsKICAgR0xpbnQgU3RpcHBsZUZhY3RvcjsKICAgR0xmbG9hdCBXaWR0aDsKfTsKCgpzdHJ1Y3Qg
Z2xfbGlzdF9hdHRyaWIgewogICBHTHVpbnQgTGlzdEJhc2U7Cn07CgoKc3RydWN0IGdsX3BpeGVs
X2F0dHJpYiB7CiAgIEdMZW51bSBSZWFkQnVmZmVyOwogICBHTGVudW0gRHJpdmVyUmVhZEJ1ZmZl
cjsKICAgR0xmbG9hdCBSZWRCaWFzLCBSZWRTY2FsZTsKICAgR0xmbG9hdCBHcmVlbkJpYXMsIEdy
ZWVuU2NhbGU7CiAgIEdMZmxvYXQgQmx1ZUJpYXMsIEJsdWVTY2FsZTsKICAgR0xmbG9hdCBBbHBo
YUJpYXMsIEFscGhhU2NhbGU7CiAgIEdMYm9vbGVhbiBTY2FsZU9yQmlhc1JHQkE7CiAgIEdMZmxv
YXQgRGVwdGhCaWFzLCBEZXB0aFNjYWxlOwogICBHTGludCBJbmRleFNoaWZ0LCBJbmRleE9mZnNl
dDsKICAgR0xib29sZWFuIE1hcENvbG9yRmxhZzsKICAgR0xib29sZWFuIE1hcFN0ZW5jaWxGbGFn
OwogICBHTGZsb2F0IFpvb21YLCBab29tWTsKICAgR0xpbnQgTWFwU3RvU3NpemU7CiAgIEdMaW50
IE1hcEl0b0lzaXplOwogICBHTGludCBNYXBJdG9Sc2l6ZTsKICAgR0xpbnQgTWFwSXRvR3NpemU7
CiAgIEdMaW50IE1hcEl0b0JzaXplOwogICBHTGludCBNYXBJdG9Bc2l6ZTsKICAgR0xpbnQgTWFw
UnRvUnNpemU7CiAgIEdMaW50IE1hcEd0b0dzaXplOwogICBHTGludCBNYXBCdG9Cc2l6ZTsKICAg
R0xpbnQgTWFwQXRvQXNpemU7CiAgIEdMaW50IE1hcFN0b1NbMjU2XTsKICAgR0xpbnQgTWFwSXRv
SVsyNTZdOwogICBHTGZsb2F0IE1hcEl0b1JbMjU2XTsKICAgR0xmbG9hdCBNYXBJdG9HWzI1Nl07
CiAgIEdMZmxvYXQgTWFwSXRvQlsyNTZdOwogICBHTGZsb2F0IE1hcEl0b0FbMjU2XTsKICAgR0x1
Ynl0ZSBNYXBJdG9SOFsyNTZdOwogICBHTHVieXRlIE1hcEl0b0c4WzI1Nl07CiAgIEdMdWJ5dGUg
TWFwSXRvQjhbMjU2XTsKICAgR0x1Ynl0ZSBNYXBJdG9BOFsyNTZdOwogICBHTGZsb2F0IE1hcFJ0
b1JbMjU2XTsKICAgR0xmbG9hdCBNYXBHdG9HWzI1Nl07CiAgIEdMZmxvYXQgTWFwQnRvQlsyNTZd
OwogICBHTGZsb2F0IE1hcEF0b0FbMjU2XTsKCiAgIEdMYm9vbGVhbiBIaXN0b2dyYW1FbmFibGVk
OwogICBHTGJvb2xlYW4gTWluTWF4RW5hYmxlZDsKCiAgIEdMYm9vbGVhbiBQaXhlbFRleHR1cmVF
bmFibGVkOwogICBHTGVudW0gRnJhZ21lbnRSZ2JTb3VyY2U7CiAgIEdMZW51bSBGcmFnbWVudEFs
cGhhU291cmNlOwoKICAgR0xmbG9hdCBQb3N0Q29sb3JNYXRyaXhTY2FsZVs0XTsKICAgR0xmbG9h
dCBQb3N0Q29sb3JNYXRyaXhCaWFzWzRdOwogICBHTGJvb2xlYW4gU2NhbGVPckJpYXNSR0JBcGNt
OwoKICAgR0xmbG9hdCBDb2xvclRhYmxlU2NhbGVbNF07CiAgIEdMZmxvYXQgQ29sb3JUYWJsZUJp
YXNbNF07CiAgIEdMYm9vbGVhbiBDb2xvclRhYmxlRW5hYmxlZDsKICAgR0xmbG9hdCBQQ0NUc2Nh
bGVbNF07CiAgIEdMZmxvYXQgUENDVGJpYXNbNF07CiAgIEdMYm9vbGVhbiBQb3N0Q29udm9sdXRp
b25Db2xvclRhYmxlRW5hYmxlZDsKICAgR0xmbG9hdCBQQ01DVHNjYWxlWzRdOwogICBHTGZsb2F0
IFBDTUNUYmlhc1s0XTsKICAgR0xib29sZWFuIFBvc3RDb2xvck1hdHJpeENvbG9yVGFibGVFbmFi
bGVkOwoKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMURFbmFibGVkOwogICBHTGJvb2xlYW4gQ29u
dm9sdXRpb24yREVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBTZXBhcmFibGUyREVuYWJsZWQ7CiAgIEdM
ZmxvYXQgQ29udm9sdXRpb25Cb3JkZXJDb2xvclszXVs0XTsKICAgR0xlbnVtIENvbnZvbHV0aW9u
Qm9yZGVyTW9kZVszXTsKICAgR0xmbG9hdCBDb252b2x1dGlvbkZpbHRlclNjYWxlWzNdWzRdOwog
ICBHTGZsb2F0IENvbnZvbHV0aW9uRmlsdGVyQmlhc1szXVs0XTsKICAgR0xmbG9hdCBQb3N0Q29u
dm9sdXRpb25TY2FsZVs0XTsKICAgR0xmbG9hdCBQb3N0Q29udm9sdXRpb25CaWFzWzRdOwp9OwoK
CnN0cnVjdCBnbF9wb2ludF9hdHRyaWIgewogICBHTGJvb2xlYW4gU21vb3RoRmxhZzsKICAgR0xm
bG9hdCBVc2VyU2l6ZTsKICAgR0xmbG9hdCBTaXplOwogICBHTGZsb2F0IFBhcmFtc1szXTsKCiAg
IEdMZmxvYXQgTWluU2l6ZTsKICAgR0xmbG9hdCBNYXhTaXplOwogICBHTGZsb2F0IFRocmVzaG9s
ZDsKICAgR0xib29sZWFuIEF0dGVudWF0ZWQ7Cn07CgoKc3RydWN0IGdsX3BvbHlnb25fYXR0cmli
IHsKICAgR0xlbnVtIEZyb250RmFjZTsKICAgR0xlbnVtIEZyb250TW9kZTsKICAgR0xlbnVtIEJh
Y2tNb2RlOwogICBHTGJvb2xlYW4gRnJvbnRCaXQ7CiAgIEdMYm9vbGVhbiBVbmZpbGxlZDsKICAg
R0xib29sZWFuIEN1bGxGbGFnOwogICBHTHVieXRlIEN1bGxCaXRzOwogICBHTGJvb2xlYW4gU21v
b3RoRmxhZzsKICAgR0xib29sZWFuIFN0aXBwbGVGbGFnOwogICBHTGVudW0gQ3VsbEZhY2VNb2Rl
OwogICBHTGZsb2F0IE9mZnNldEZhY3RvcjsKICAgR0xmbG9hdCBPZmZzZXRVbml0czsKICAgR0xi
b29sZWFuIE9mZnNldFBvaW50OwogICBHTGJvb2xlYW4gT2Zmc2V0TGluZTsKICAgR0xib29sZWFu
IE9mZnNldEZpbGw7Cn07CgoKc3RydWN0IGdsX3NjaXNzb3JfYXR0cmliIHsKICAgR0xib29sZWFu
IEVuYWJsZWQ7CiAgIEdMaW50IFgsIFk7CiAgIEdMc2l6ZWkgV2lkdGgsIEhlaWdodDsKfTsKCgpz
dHJ1Y3QgZ2xfc3RlbmNpbF9hdHRyaWIgewogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xlbnVt
IEZ1bmN0aW9uOwogICBHTGVudW0gRmFpbEZ1bmM7CiAgIEdMZW51bSBaUGFzc0Z1bmM7CiAgIEdM
ZW51bSBaRmFpbEZ1bmM7CiAgIEdMc3RlbmNpbCBSZWY7CiAgIEdMc3RlbmNpbCBWYWx1ZU1hc2s7
CiAgIEdMc3RlbmNpbCBDbGVhcjsKICAgR0xzdGVuY2lsIFdyaXRlTWFzazsKfTsKIyA3ODcgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgp0eXBlZGVmIHZvaWQgKCp0ZXhnZW5f
ZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZVNldCk7CgoKCnN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCB7CiAg
IF9nbHRocmVhZF9NdXRleCBNdXRleDsKICAgR0xpbnQgUmVmQ291bnQ7CiAgIEdMdWludCBOYW1l
OwogICBHTHVpbnQgRGltZW5zaW9uczsKICAgR0xmbG9hdCBQcmlvcml0eTsKICAgR0x1Ynl0ZSBC
b3JkZXJDb2xvcls0XTsKICAgR0xlbnVtIFdyYXBTOwogICBHTGVudW0gV3JhcFQ7CiAgIEdMZW51
bSBXcmFwUjsKICAgR0xlbnVtIE1pbkZpbHRlcjsKICAgR0xlbnVtIE1hZ0ZpbHRlcjsKICAgR0xm
bG9hdCBNaW5Mb2Q7CiAgIEdMZmxvYXQgTWF4TG9kOwogICBHTGludCBCYXNlTGV2ZWw7CiAgIEdM
aW50IE1heExldmVsOwogICBHTGludCBQOwogICBHTGZsb2F0IE07CiAgIEdMZmxvYXQgTWluTWFn
VGhyZXNoOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqSW1hZ2VbMTJdOwoKCgogICBzdHJ1
Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqTmVnWFsxMl07CiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdl
ICpQb3NZWzEyXTsKICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKk5lZ1lbMTJdOwogICBzdHJ1
Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqUG9zWlsxMl07CiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdl
ICpOZWdaWzEyXTsKCgogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUGFsZXR0ZTsKCgogICBHTGJv
b2xlYW4gRGlydHk7CiAgIHZvaWQgKkRyaXZlckRhdGE7CgogICBHTGJvb2xlYW4gQ29tcGxldGU7
CiAgIFRleHR1cmVTYW1wbGVGdW5jIFNhbXBsZUZ1bmM7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29i
amVjdCAqTmV4dDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpOZXh0RGlydHk7Cn07CgoK
CgoKCnN0cnVjdCBnbF90ZXh0dXJlX3VuaXQgewogICBHTHVpbnQgRW5hYmxlZDsKICAgR0x1aW50
IFJlYWxseUVuYWJsZWQ7CgogICBHTGVudW0gRW52TW9kZTsKICAgR0xlbnVtIExhc3RFbnZNb2Rl
OwoKICAgR0xlbnVtIENvbWJpbmVTb3VyY2VSR0JbM107CiAgIEdMZW51bSBDb21iaW5lU291cmNl
QVszXTsKICAgR0xlbnVtIENvbWJpbmVNb2RlUkdCOwogICBHTGVudW0gQ29tYmluZU1vZGVBOwog
ICBHTGVudW0gQ29tYmluZU9wZXJhbmRSR0JbM107CiAgIEdMZW51bSBDb21iaW5lT3BlcmFuZEFb
M107CiAgIEdMdWludCBDb21iaW5lU2NhbGVTaGlmdFJHQjsKICAgR0x1aW50IENvbWJpbmVTY2Fs
ZVNoaWZ0QTsKCiAgIEdMZmxvYXQgRW52Q29sb3JbNF07CiAgIEdMdWludCBUZXhHZW5FbmFibGVk
OwogICBHTGVudW0gR2VuTW9kZVM7CiAgIEdMZW51bSBHZW5Nb2RlVDsKICAgR0xlbnVtIEdlbk1v
ZGVSOwogICBHTGVudW0gR2VuTW9kZVE7CiAgIEdMdWludCBHZW5CaXRTOwogICBHTHVpbnQgR2Vu
Qml0VDsKICAgR0x1aW50IEdlbkJpdFI7CiAgIEdMdWludCBHZW5CaXRROwogICBHTHVpbnQgR2Vu
RmxhZ3M7CiAgIEdMZmxvYXQgT2JqZWN0UGxhbmVTWzRdOwogICBHTGZsb2F0IE9iamVjdFBsYW5l
VFs0XTsKICAgR0xmbG9hdCBPYmplY3RQbGFuZVJbNF07CiAgIEdMZmxvYXQgT2JqZWN0UGxhbmVR
WzRdOwogICBHTGZsb2F0IEV5ZVBsYW5lU1s0XTsKICAgR0xmbG9hdCBFeWVQbGFuZVRbNF07CiAg
IEdMZmxvYXQgRXllUGxhbmVSWzRdOwogICBHTGZsb2F0IEV5ZVBsYW5lUVs0XTsKICAgdGV4Z2Vu
X2Z1bmMgKmZ1bmM7CiAgIEdMdWJ5dGUgSG9sZXM7CiAgIEdMdWludCBUZXhnZW5TaXplOwogICBH
TGJvb2xlYW4gQW55VHJhbnNmb3JtOwogICBHTGZsb2F0IExvZEJpYXM7CgogICBzdHJ1Y3QgZ2xf
dGV4dHVyZV9vYmplY3QgKkN1cnJlbnREWzRdOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3Qg
KkN1cnJlbnRDdWJlTWFwOwoKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpDdXJyZW50Owog
ICBHTHVpbnQgQ3VycmVudERpbWVuc2lvbjsKCiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCBT
YXZlZDFEOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgU2F2ZWQyRDsKICAgc3RydWN0IGds
X3RleHR1cmVfb2JqZWN0IFNhdmVkM0Q7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCBTYXZl
ZEN1YmVNYXA7Cn07CgoKc3RydWN0IGdsX3RleHR1cmVfYXR0cmliIHsKCiAgIEdMdWludCBDdXJy
ZW50VW5pdDsKICAgR0x1aW50IEN1cnJlbnRUcmFuc2Zvcm1Vbml0OwoKICAgR0x1aW50IFJlYWxs
eUVuYWJsZWQ7CgogICBHTHVpbnQgTGFzdEVuYWJsZWQ7CgogICBHTGJvb2xlYW4gTmVlZE5vcm1h
bHM7CiAgIEdMYm9vbGVhbiBOZWVkRXllQ29vcmRzOwoKICAgc3RydWN0IGdsX3RleHR1cmVfdW5p
dCBVbml0WzJdOwoKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpQcm94eTFEOwogICBzdHJ1
Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKlByb3h5MkQ7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVj
dCAqUHJveHkzRDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpQcm94eUN1YmVNYXA7CgoK
ICAgR0xib29sZWFuIFNoYXJlZFBhbGV0dGU7CiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBQYWxl
dHRlOwp9OwoKCgoKCnN0cnVjdCBnbF90cmFuc2Zvcm1fYXR0cmliIHsKICAgR0xlbnVtIE1hdHJp
eE1vZGU7CiAgIEdMZmxvYXQgRXllVXNlclBsYW5lWzZdWzRdOwogICBHTGZsb2F0IENsaXBVc2Vy
UGxhbmVbNl1bNF07CiAgIEdMYm9vbGVhbiBDbGlwRW5hYmxlZFs2XTsKICAgR0x1Ynl0ZSBBbnlD
bGlwOwogICBHTGJvb2xlYW4gTm9ybWFsaXplOwogICBHTGJvb2xlYW4gUmVzY2FsZU5vcm1hbHM7
Cn07CgoKc3RydWN0IGdsX3ZpZXdwb3J0X2F0dHJpYiB7CiAgIEdMaW50IFgsIFk7CiAgIEdMc2l6
ZWkgV2lkdGgsIEhlaWdodDsKICAgR0xmbG9hdCBOZWFyLCBGYXI7CiAgIEdMbWF0cml4IFdpbmRv
d01hcDsKfTsKCgoKc3RydWN0IGdsX2F0dHJpYl9ub2RlIHsKICAgR0xiaXRmaWVsZCBraW5kOwog
ICB2b2lkICpkYXRhOwogICBzdHJ1Y3QgZ2xfYXR0cmliX25vZGUgKm5leHQ7Cn07CgoKCgoKCnN0
cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiB7CiAgIEdMaW50IEFsaWdubWVudDsKICAgR0xpbnQg
Um93TGVuZ3RoOwogICBHTGludCBTa2lwUGl4ZWxzOwogICBHTGludCBTa2lwUm93czsKICAgR0xp
bnQgSW1hZ2VIZWlnaHQ7CiAgIEdMaW50IFNraXBJbWFnZXM7CiAgIEdMYm9vbGVhbiBTd2FwQnl0
ZXM7CiAgIEdMYm9vbGVhbiBMc2JGaXJzdDsKfTsKCgoKCgpzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5
IHsKICAgR0xpbnQgU2l6ZTsKICAgR0xlbnVtIFR5cGU7CiAgIEdMc2l6ZWkgU3RyaWRlOwogICBH
THNpemVpIFN0cmlkZUI7CiAgIHZvaWQgKlB0cjsKICAgR0xib29sZWFuIEVuYWJsZWQ7Cn07CgoK
CgoKCnR5cGVkZWYgdm9pZCAoKnRyYW5zXzF1aV9mdW5jKShHTHVpbnQgKnRvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc18xdWJf
ZnVuYykoR0x1Ynl0ZSAqdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4g
KTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zXzR1Yl9mdW5jKShHTHVieXRlICgqdG8pWzRdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq
ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFu
c180Zl9mdW5jKShHTGZsb2F0ICgqdG8pWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc18zZl9mdW5jKShHTGZsb2F0ICgqdG8pWzNd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2Fy
cmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7CgoKCnR5cGVkZWYgdm9pZCAo
KnRyYW5zX2VsdF8xdWlfZnVuYykoR0x1aW50ICp0bywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICplbHRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG4gKTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zX2VsdF8xdWJfZnVuYykoR0x1Ynl0ZSAqdG8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9h
cnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZs
YWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZWx0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF0Y2gsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc19lbHRfNHVi
X2Z1bmMpKEdMdWJ5dGUgKCp0bylbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqZWx0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWF0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0
eXBlZGVmIHZvaWQgKCp0cmFuc19lbHRfNGZfZnVuYykoR0xmbG9hdCAoKnRvKVs0XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICplbHRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hdGNoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG4gKTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zX2VsdF8zZl9mdW5jKShHTGZs
b2F0ICgqdG8pWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCAqZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKmVsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF0Y2gs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiApOwojIDEwODggIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfYXJyYXlfYXR0cmliIHsKCgoKCgog
ICBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5IFZlcnRleDsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJh
eSBOb3JtYWw7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgQ29sb3I7CiAgIHN0cnVjdCBnbF9j
bGllbnRfYXJyYXkgSW5kZXg7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVGV4Q29vcmRbMl07
CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgRWRnZUZsYWc7CgogICB0cmFuc180Zl9mdW5jIFZl
cnRleEZ1bmM7CiAgIHRyYW5zXzNmX2Z1bmMgTm9ybWFsRnVuYzsKICAgdHJhbnNfNHViX2Z1bmMg
Q29sb3JGdW5jOwogICB0cmFuc18xdWlfZnVuYyBJbmRleEZ1bmM7CiAgIHRyYW5zXzRmX2Z1bmMg
VGV4Q29vcmRGdW5jWzJdOwogICB0cmFuc18xdWJfZnVuYyBFZGdlRmxhZ0Z1bmM7CgogICB0cmFu
c19lbHRfNGZfZnVuYyBWZXJ0ZXhFbHRGdW5jOwogICB0cmFuc19lbHRfM2ZfZnVuYyBOb3JtYWxF
bHRGdW5jOwogICB0cmFuc19lbHRfNHViX2Z1bmMgQ29sb3JFbHRGdW5jOwogICB0cmFuc19lbHRf
MXVpX2Z1bmMgSW5kZXhFbHRGdW5jOwogICB0cmFuc19lbHRfNGZfZnVuYyBUZXhDb29yZEVsdEZ1
bmNbMl07CiAgIHRyYW5zX2VsdF8xdWJfZnVuYyBFZGdlRmxhZ0VsdEZ1bmM7CgogICBHTGludCBU
ZXhDb29yZEludGVybGVhdmVGYWN0b3I7CiAgIEdMaW50IEFjdGl2ZVRleHR1cmU7CgogICBHTHVp
bnQgTG9ja0ZpcnN0OwogICBHTHVpbnQgTG9ja0NvdW50OwoKICAgR0x1aW50IEZsYWdbKCgyMTYg
KyAzKSArICgoMiAqICg2ICsgNikpKzEpKV07CiAgIEdMdWludCBGbGFnczsKICAgR0x1aW50IFN1
bW1hcnk7CiAgIEdMdWludCBOZXdBcnJheVN0YXRlOwoKfTsKCgoKCgpzdHJ1Y3QgZ2xfZmFsbGJh
Y2tfYXJyYXlzIHsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJheSBOb3JtYWw7CiAgIHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgQ29sb3I7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgSW5kZXg7CiAg
IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVGV4Q29vcmRbMl07CiAgIHN0cnVjdCBnbF9jbGllbnRf
YXJyYXkgRWRnZUZsYWc7Cn07CiMgMTE2MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5
cGVzLmgiCnN0cnVjdCBnbF9wcmltX3N0YXRlIHsKICAgR0x1aW50IHYwLCB2MTsKICAgR0xib29s
ZWFuIGRyYXc7CiAgIEdMYm9vbGVhbiBmaW5pc2hfbG9vcDsKICAgc3RydWN0IGdsX3ByaW1fc3Rh
dGUgKm5leHQ7Cn07CgoKdHlwZWRlZiB2b2lkICgqdmJfZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVm
ZmVyICpWQiApOwp0eXBlZGVmIHZvaWQgKCpjdHhfZnVuYykoIEdMY29udGV4dCAqICk7CgpzdHJ1
Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgewogICBjb25zdCBjaGFyICpuYW1lOwogICBHTHVpbnQgb3Bz
OwogICBHTHVpbnQgdHlwZTsKICAgR0x1aW50IHNwZWNpYWw7CiAgIEdMdWludCBzdGF0ZV9jaGFu
Z2U7CiAgIEdMdWludCBjdmFfc3RhdGVfY2hhbmdlOwogICBHTHVpbnQgZWx0X2ZvcmJpZGRlbl9p
bnB1dHM7CiAgIEdMdWludCBwcmVfZm9yYmlkZGVuX2lucHV0czsKICAgR0x1aW50IGFjdGl2ZTsK
ICAgR0x1aW50IGlucHV0czsKICAgR0x1aW50IG91dHB1dHM7CiAgIHZvaWQgKCpjaGVjaykoIEdM
Y29udGV4dCAqY3R4LCBzdHJ1Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgKiApOwogICB2b2lkICgqcnVu
KSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCICk7Cn07CgoKc3RydWN0IGdsX3BpcGVsaW5lIHsK
ICAgR0x1aW50IHN0YXRlX2NoYW5nZTsKICAgR0x1aW50IGN2YV9zdGF0ZV9jaGFuZ2U7CiAgIEdM
dWludCBmb3JiaWRkZW5faW5wdXRzOwogICBHTHVpbnQgb3BzOwogICBHTHVpbnQgY2hhbmdlZF9v
cHM7CiAgIEdMdWludCBpbnB1dHM7CiAgIEdMdWludCBvdXRwdXRzOwogICBHTHVpbnQgbmV3X2lu
cHV0czsKICAgR0x1aW50IG5ld19vdXRwdXRzOwogICBHTHVpbnQgZmFsbGJhY2s7CiAgIEdMdWlu
dCB0eXBlOwogICBHTHVpbnQgcGlwZWxpbmVfdmFsaWQ6MTsKICAgR0x1aW50IGRhdGFfdmFsaWQ6
MTsKICAgR0x1aW50IGNvcHlfdHJhbnNmb3JtZWRfZGF0YToxOwogICBHTHVpbnQgcmVwbGF5X2Nv
cGllZF92ZXJ0aWNlczoxOwogICBHTHVpbnQgbmV3X3N0YXRlOwogICBzdHJ1Y3QgZ2xfcGlwZWxp
bmVfc3RhZ2UgKnN0YWdlc1szMF07Cn07CgoKc3RydWN0IGdsX2N2YSB7CiAgIHN0cnVjdCBnbF9w
aXBlbGluZSBwcmU7CiAgIHN0cnVjdCBnbF9waXBlbGluZSBlbHQ7CgogICBzdHJ1Y3QgZ2xfY2xp
ZW50X2FycmF5IEVsdDsKICAgdHJhbnNfMXVpX2Z1bmMgRWx0RnVuYzsKCiAgIHN0cnVjdCB2ZXJ0
ZXhfYnVmZmVyICpWQjsKICAgc3RydWN0IHZlcnRleF9hcnJheXMgdjsKICAgc3RydWN0IHZlcnRl
eF9kYXRhIHN0b3JlOwoKICAgR0x1aW50IGVsdF9jb3VudDsKICAgR0xlbnVtIGVsdF9tb2RlOwog
ICBHTHVpbnQgZWx0X3NpemU7CgogICBHTHVpbnQgZm9yYmlkZGVuX2lucHV0czsKICAgR0x1aW50
IG9yZmxhZzsKICAgR0x1aW50IG1lcmdlOwoKICAgR0x1aW50IGxvY2tfY2hhbmdlZDsKICAgR0x1
aW50IGxhc3Rfb3JmbGFnOwogICBHTHVpbnQgbGFzdF9hcnJheV9mbGFnczsKICAgR0x1aW50IGxh
c3RfYXJyYXlfbmV3X3N0YXRlOwp9OwoKCnN0cnVjdCBnbF9mZWVkYmFjayB7CiAgIEdMZW51bSBU
eXBlOwogICBHTHVpbnQgTWFzazsKICAgR0xmbG9hdCAqQnVmZmVyOwogICBHTHVpbnQgQnVmZmVy
U2l6ZTsKICAgR0x1aW50IENvdW50Owp9OwoKCgpzdHJ1Y3QgZ2xfc2VsZWN0aW9uIHsKICAgR0x1
aW50ICpCdWZmZXI7CiAgIEdMdWludCBCdWZmZXJTaXplOwogICBHTHVpbnQgQnVmZmVyQ291bnQ7
CiAgIEdMdWludCBIaXRzOwogICBHTHVpbnQgTmFtZVN0YWNrRGVwdGg7CiAgIEdMdWludCBOYW1l
U3RhY2tbNjRdOwogICBHTGJvb2xlYW4gSGl0RmxhZzsKICAgR0xmbG9hdCBIaXRNaW5aLCBIaXRN
YXhaOwp9OwoKCgoKCgpzdHJ1Y3QgZ2xfMWRfbWFwIHsKICAgR0x1aW50IE9yZGVyOwogICBHTGZs
b2F0IHUxLCB1MiwgZHU7CiAgIEdMZmxvYXQgKlBvaW50czsKfTsKCgoKCgpzdHJ1Y3QgZ2xfMmRf
bWFwIHsKICAgR0x1aW50IFVvcmRlcjsKICAgR0x1aW50IFZvcmRlcjsKICAgR0xmbG9hdCB1MSwg
dTIsIGR1OwogICBHTGZsb2F0IHYxLCB2MiwgZHY7CiAgIEdMZmxvYXQgKlBvaW50czsKfTsKCgoK
CgpzdHJ1Y3QgZ2xfZXZhbHVhdG9ycyB7CgogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1hcDFWZXJ0ZXgz
OwogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1hcDFWZXJ0ZXg0OwogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1h
cDFJbmRleDsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxQ29sb3I0OwogICBzdHJ1Y3QgZ2xfMWRf
bWFwIE1hcDFOb3JtYWw7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVRleHR1cmUxOwogICBzdHJ1
Y3QgZ2xfMWRfbWFwIE1hcDFUZXh0dXJlMjsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxVGV4dHVy
ZTM7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVRleHR1cmU0OwoKCiAgIHN0cnVjdCBnbF8yZF9t
YXAgTWFwMlZlcnRleDM7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMlZlcnRleDQ7CiAgIHN0cnVj
dCBnbF8yZF9tYXAgTWFwMkluZGV4OwogICBzdHJ1Y3QgZ2xfMmRfbWFwIE1hcDJDb2xvcjQ7CiAg
IHN0cnVjdCBnbF8yZF9tYXAgTWFwMk5vcm1hbDsKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVGV4
dHVyZTE7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMlRleHR1cmUyOwogICBzdHJ1Y3QgZ2xfMmRf
bWFwIE1hcDJUZXh0dXJlMzsKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVGV4dHVyZTQ7Cn07CgoK
CgoKCnN0cnVjdCBnbF9zaGFyZWRfc3RhdGUgewogICBfZ2x0aHJlYWRfTXV0ZXggTXV0ZXg7CiAg
IEdMaW50IFJlZkNvdW50OwogICBzdHJ1Y3QgX21lc2FfSGFzaFRhYmxlICpEaXNwbGF5TGlzdDsK
ICAgc3RydWN0IF9tZXNhX0hhc2hUYWJsZSAqVGV4T2JqZWN0czsKCgoKICAgc3RydWN0IGdsX3Rl
eHR1cmVfb2JqZWN0ICpUZXhPYmplY3RMaXN0OwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3Qg
KkRpcnR5VGV4T2JqTGlzdDsKCgogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkRlZmF1bHRE
WzRdOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkRlZmF1bHRDdWJlTWFwOwoKICAgdm9p
ZCAqRHJpdmVyRGF0YTsKfTsKIyAxMzM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlw
ZXMuaCIKc3RydWN0IGdsX3Zpc3VhbCB7CiAgIEdMYm9vbGVhbiBSR0JBZmxhZzsKICAgR0xib29s
ZWFuIERCZmxhZzsKICAgR0xib29sZWFuIFN0ZXJlb0ZsYWc7CgogICBHTGludCBSZWRCaXRzOwog
ICBHTGludCBHcmVlbkJpdHM7CiAgIEdMaW50IEJsdWVCaXRzOwogICBHTGludCBBbHBoYUJpdHM7
CgogICBHTGludCBJbmRleEJpdHM7CgogICBHTGludCBBY2N1bVJlZEJpdHM7CiAgIEdMaW50IEFj
Y3VtR3JlZW5CaXRzOwogICBHTGludCBBY2N1bUJsdWVCaXRzOwogICBHTGludCBBY2N1bUFscGhh
Qml0czsKICAgR0xpbnQgRGVwdGhCaXRzOwogICBHTGludCBTdGVuY2lsQml0czsKICAgR0xpbnQg
TnVtU2FtcGxlczsKCiAgIEdMdWludCBEZXB0aE1heDsKICAgR0xmbG9hdCBEZXB0aE1heEY7Cn07
CiMgMTM2OSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBnbF9m
cmFtZV9idWZmZXIgewogICBHTHZpc3VhbCAqVmlzdWFsOwoKICAgR0xpbnQgV2lkdGgsIEhlaWdo
dDsKCiAgIEdMYm9vbGVhbiBVc2VTb2Z0d2FyZURlcHRoQnVmZmVyOwogICBHTGJvb2xlYW4gVXNl
U29mdHdhcmVBY2N1bUJ1ZmZlcjsKICAgR0xib29sZWFuIFVzZVNvZnR3YXJlU3RlbmNpbEJ1ZmZl
cjsKICAgR0xib29sZWFuIFVzZVNvZnR3YXJlQWxwaGFCdWZmZXJzOwoKCiAgIEdMdm9pZCAqRGVw
dGhCdWZmZXI7CgoKICAgR0xzdGVuY2lsICpTdGVuY2lsOwoKCiAgIEdMYWNjdW0gKkFjY3VtOwoK
CiAgIEdMdWJ5dGUgKkZyb250TGVmdEFscGhhOwogICBHTHVieXRlICpCYWNrTGVmdEFscGhhOwog
ICBHTHVieXRlICpGcm9udFJpZ2h0QWxwaGE7CiAgIEdMdWJ5dGUgKkJhY2tSaWdodEFscGhhOwog
ICBHTHVieXRlICpBbHBoYTsKCgogICBHTGludCBYbWluLCBYbWF4LCBZbWluLCBZbWF4Owp9OwoK
CgoKCnN0cnVjdCBnbF9jb25zdGFudHMgewogICBHTGludCBNYXhUZXh0dXJlU2l6ZTsKICAgR0xp
bnQgTWF4Q3ViZVRleHR1cmVTaXplOwogICBHTGludCBNYXhUZXh0dXJlTGV2ZWxzOwogICBHTHVp
bnQgTWF4VGV4dHVyZVVuaXRzOwogICBHTHVpbnQgTWF4QXJyYXlMb2NrU2l6ZTsKICAgR0xpbnQg
U3ViUGl4ZWxCaXRzOwogICBHTGZsb2F0IE1pblBvaW50U2l6ZSwgTWF4UG9pbnRTaXplOwogICBH
TGZsb2F0IE1pblBvaW50U2l6ZUFBLCBNYXhQb2ludFNpemVBQTsKICAgR0xmbG9hdCBQb2ludFNp
emVHcmFudWxhcml0eTsKICAgR0xmbG9hdCBNaW5MaW5lV2lkdGgsIE1heExpbmVXaWR0aDsKICAg
R0xmbG9hdCBNaW5MaW5lV2lkdGhBQSwgTWF4TGluZVdpZHRoQUE7CiAgIEdMZmxvYXQgTGluZVdp
ZHRoR3JhbnVsYXJpdHk7CiAgIEdMdWludCBOdW1BdXhCdWZmZXJzOwogICBHTHVpbnQgTWF4Q29s
b3JUYWJsZVNpemU7CiAgIEdMdWludCBNYXhDb252b2x1dGlvbldpZHRoOwogICBHTHVpbnQgTWF4
Q29udm9sdXRpb25IZWlnaHQ7CiAgIEdMdWludCBOdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7
CiAgIEdMZW51bSBDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHNbMjVdOwp9OwoKCgoKCnN0cnVjdCBl
eHRlbnNpb247CnN0cnVjdCBnbF9leHRlbnNpb25zIHsKICAgY2hhciAqZXh0X3N0cmluZzsKICAg
c3RydWN0IGV4dGVuc2lvbiAqZXh0X2xpc3Q7CgogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVFbnZB
ZGQ7CiAgIEdMYm9vbGVhbiBIYXZlVGV4dHVyZUVudkNvbWJpbmU7CiAgIEdMYm9vbGVhbiBIYXZl
VGV4dHVyZUVudkRvdDM7CiAgIEdMYm9vbGVhbiBIYXZlVGV4dHVyZUxvZEJpYXM7CiAgIEdMYm9v
bGVhbiBIYXZlSHBPY2NsdXNpb25UZXN0OwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDdWJlTWFw
OwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDb21wcmVzc2lvbjsKICAgR0xib29sZWFuIEhhdmVU
ZXh0dXJlQ29tcHJlc3Npb25TM1RDOwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDb21wcmVzc2lv
bkZYVDE7CiAgIEdMYm9vbGVhbiBIYXZlQmxlbmRTcXVhcmU7Cn07CiMgMTY3NSAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnR5cGVkZWYgdm9pZCAoKmdsX3NoYWRlX2Z1bmMp
KCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIgKTsKCgoKCgoKdW5pb24gbm9kZTsKdHlwZWRlZiB1
bmlvbiBub2RlIE5vZGU7CiMgMTc5NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz
LmgiCnR5cGVkZWYgdm9pZCAoKnZiX3RyYW5zZm9ybV9mdW5jKSggR0xjb250ZXh0ICpjdHggKTsK
Cgp0eXBlZGVmIEdMdWludCAoKmNsaXBfbGluZV9mdW5jKSggc3RydWN0IHZlcnRleF9idWZmZXIg
KlZCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppLCBHTHVpbnQg
KmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIG1hc2spOwp0eXBl
ZGVmIEdMdWludCAoKmNsaXBfcG9seV9mdW5jKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdMdWludCB2bGlzdFtd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBtYXNrICk7CgoKCgoK
c3RydWN0IGdsX2NvbnRleHQgewoKICAgc3RydWN0IGdsX3NoYXJlZF9zdGF0ZSAqU2hhcmVkOwoK
CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKlNhdmU7CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKkV4
ZWM7CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKkN1cnJlbnREaXNwYXRjaDsKCiAgIEdMdmlzdWFs
ICpWaXN1YWw7CiAgIEdMZnJhbWVidWZmZXIgKkRyYXdCdWZmZXI7CiAgIEdMZnJhbWVidWZmZXIg
KlJlYWRCdWZmZXI7CgoKICAgc3RydWN0IGRkX2Z1bmN0aW9uX3RhYmxlIERyaXZlcjsKCiAgIHRy
aWFuZ2xlX2Z1bmMgVHJpYW5nbGVGdW5jOwogICBxdWFkX2Z1bmMgUXVhZEZ1bmM7CiAgIHRyaWFu
Z2xlX2Z1bmMgQ2xpcHBlZFRyaWFuZ2xlRnVuYzsKICAgY2xpcF9wb2x5X2Z1bmMgKnBvbHlfY2xp
cF90YWI7CiAgIGNsaXBfbGluZV9mdW5jICpsaW5lX2NsaXBfdGFiOwoKICAgdm9pZCAqRHJpdmVy
Q3R4OwogICB2b2lkICpEcml2ZXJNZ3JDdHg7CgoKICAgc3RydWN0IGdsX2NvbnN0YW50cyBDb25z
dDsKCgogICBHTG1hdHJpeCBNb2RlbFZpZXc7CiAgIEdMdWludCBNb2RlbFZpZXdTdGFja0RlcHRo
OwogICBHTG1hdHJpeCBNb2RlbFZpZXdTdGFja1szMiAtIDFdOwoKCiAgIEdMbWF0cml4IFByb2pl
Y3Rpb25NYXRyaXg7CiAgIEdMdWludCBQcm9qZWN0aW9uU3RhY2tEZXB0aDsKICAgR0xtYXRyaXgg
UHJvamVjdGlvblN0YWNrWzMyIC0gMV07CiAgIEdMZmxvYXQgTmVhckZhclN0YWNrWzMyXVsyXTsK
CgogICBHTG1hdHJpeCBNb2RlbFByb2plY3RNYXRyaXg7CgoKICAgR0xtYXRyaXggTW9kZWxQcm9q
ZWN0V2luTWF0cml4OwogICBHTGJvb2xlYW4gTW9kZWxQcm9qZWN0V2luTWF0cml4VXB0b2RhdGU7
CgoKICAgR0xtYXRyaXggVGV4dHVyZU1hdHJpeFsyXTsKICAgR0x1aW50IFRleHR1cmVTdGFja0Rl
cHRoWzJdOwogICBHTG1hdHJpeCBUZXh0dXJlU3RhY2tbMl1bMTAgLSAxXTsKCgogICBHTG1hdHJp
eCBDb2xvck1hdHJpeDsKICAgR0x1aW50IENvbG9yU3RhY2tEZXB0aDsKICAgR0xtYXRyaXggQ29s
b3JTdGFja1s0IC0gMV07CgoKICAgR0x1aW50IENhbGxEZXB0aDsKICAgR0xib29sZWFuIEV4ZWN1
dGVGbGFnOwogICBHTGJvb2xlYW4gQ29tcGlsZUZsYWc7CiAgIEdMYm9vbGVhbiBDb21waWxlQ1ZB
RmxhZzsKICAgTm9kZSAqQ3VycmVudExpc3RQdHI7CiAgIEdMdWludCBDdXJyZW50TGlzdE51bTsK
ICAgTm9kZSAqQ3VycmVudEJsb2NrOwogICBHTHVpbnQgQ3VycmVudFBvczsKCgogICBzdHJ1Y3Qg
Z2xfZXh0ZW5zaW9ucyBFeHRlbnNpb25zOwoKCgoKCiAgIHN0cnVjdCBnbF9waXBlbGluZV9zdGFn
ZSBQaXBlbGluZVN0YWdlWzMwXTsKICAgR0x1aW50IE5yUGlwZWxpbmVTdGFnZXM7CgoKICAgc3Ry
dWN0IGdsX2N2YSBDVkE7CgoKICAgR0x1aW50IEF0dHJpYlN0YWNrRGVwdGg7CiAgIHN0cnVjdCBn
bF9hdHRyaWJfbm9kZSAqQXR0cmliU3RhY2tbMTZdOwoKCiAgIHN0cnVjdCBnbF9hY2N1bV9hdHRy
aWIgQWNjdW07CiAgIHN0cnVjdCBnbF9jb2xvcmJ1ZmZlcl9hdHRyaWIgQ29sb3I7CiAgIHN0cnVj
dCBnbF9jdXJyZW50X2F0dHJpYiBDdXJyZW50OwogICBzdHJ1Y3QgZ2xfZGVwdGhidWZmZXJfYXR0
cmliIERlcHRoOwogICBzdHJ1Y3QgZ2xfZXZhbF9hdHRyaWIgRXZhbDsKICAgc3RydWN0IGdsX2Zv
Z19hdHRyaWIgRm9nOwogICBzdHJ1Y3QgZ2xfaGludF9hdHRyaWIgSGludDsKICAgc3RydWN0IGds
X2xpZ2h0X2F0dHJpYiBMaWdodDsKICAgc3RydWN0IGdsX2xpbmVfYXR0cmliIExpbmU7CiAgIHN0
cnVjdCBnbF9saXN0X2F0dHJpYiBMaXN0OwogICBzdHJ1Y3QgZ2xfcGl4ZWxfYXR0cmliIFBpeGVs
OwogICBzdHJ1Y3QgZ2xfcG9pbnRfYXR0cmliIFBvaW50OwogICBzdHJ1Y3QgZ2xfcG9seWdvbl9h
dHRyaWIgUG9seWdvbjsKICAgR0x1aW50IFBvbHlnb25TdGlwcGxlWzMyXTsKICAgc3RydWN0IGds
X3NjaXNzb3JfYXR0cmliIFNjaXNzb3I7CiAgIHN0cnVjdCBnbF9zdGVuY2lsX2F0dHJpYiBTdGVu
Y2lsOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9hdHRyaWIgVGV4dHVyZTsKICAgc3RydWN0IGdsX3Ry
YW5zZm9ybV9hdHRyaWIgVHJhbnNmb3JtOwogICBzdHJ1Y3QgZ2xfdmlld3BvcnRfYXR0cmliIFZp
ZXdwb3J0OwoKCiAgIHN0cnVjdCBnbF9oaXN0b2dyYW1fYXR0cmliIEhpc3RvZ3JhbTsKICAgc3Ry
dWN0IGdsX21pbm1heF9hdHRyaWIgTWluTWF4OwogICBzdHJ1Y3QgZ2xfY29udm9sdXRpb25fYXR0
cmliIENvbnZvbHV0aW9uMUQ7CiAgIHN0cnVjdCBnbF9jb252b2x1dGlvbl9hdHRyaWIgQ29udm9s
dXRpb24yRDsKICAgc3RydWN0IGdsX2NvbnZvbHV0aW9uX2F0dHJpYiBTZXBhcmFibGUyRDsKCgog
ICBHTHVpbnQgQ2xpZW50QXR0cmliU3RhY2tEZXB0aDsKICAgc3RydWN0IGdsX2F0dHJpYl9ub2Rl
ICpDbGllbnRBdHRyaWJTdGFja1sxNl07CgoKICAgc3RydWN0IGdsX2FycmF5X2F0dHJpYiBBcnJh
eTsKICAgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliIFBhY2s7CiAgIHN0cnVjdCBnbF9waXhl
bHN0b3JlX2F0dHJpYiBVbnBhY2s7CgogICBzdHJ1Y3QgZ2xfZXZhbHVhdG9ycyBFdmFsTWFwOwog
ICBzdHJ1Y3QgZ2xfZmVlZGJhY2sgRmVlZGJhY2s7CiAgIHN0cnVjdCBnbF9zZWxlY3Rpb24gU2Vs
ZWN0OwoKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIENvbG9yVGFibGU7CiAgIHN0cnVjdCBnbF9j
b2xvcl90YWJsZSBQcm94eUNvbG9yVGFibGU7CiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBQb3N0
Q29udm9sdXRpb25Db2xvclRhYmxlOwogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUHJveHlQb3N0
Q29udm9sdXRpb25Db2xvclRhYmxlOwogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUG9zdENvbG9y
TWF0cml4Q29sb3JUYWJsZTsKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIFByb3h5UG9zdENvbG9y
TWF0cml4Q29sb3JUYWJsZTsKCgogICBHTGJvb2xlYW4gSW50ZWdlckFjY3VtTW9kZTsKICAgR0xm
bG9hdCBJbnRlZ2VyQWNjdW1TY2FsZXI7CgogICBzdHJ1Y3QgZ2xfZmFsbGJhY2tfYXJyYXlzIEZh
bGxiYWNrOwoKICAgR0xlbnVtIEVycm9yVmFsdWU7CgoKICAgR0x1aW50IE5ld1N0YXRlOwogICBH
THVpbnQgRW5hYmxlZDsKICAgR0xlbnVtIFJlbmRlck1vZGU7CiAgIEdMdWludCBTdGlwcGxlQ291
bnRlcjsKICAgR0x1aW50IFJhc3Rlck1hc2s7CiAgIEdMdWludCBUcmlhbmdsZUNhcHM7CiAgIEdM
dWludCBJbmRpcmVjdFRyaWFuZ2xlczsKICAgR0xmbG9hdCBQb2x5Z29uWm9mZnNldDsKICAgR0xm
bG9hdCBMaW5lWm9mZnNldDsKICAgR0xmbG9hdCBQb2ludFpvZmZzZXQ7CiAgIEdMYm9vbGVhbiBO
ZWVkTm9ybWFsczsKICAgR0x1aW50IEZvZ01vZGU7CgogICBHTGJvb2xlYW4gRG9WaWV3cG9ydE1h
cHBpbmc7CgogICBHTHVpbnQgUmVuZGVyRmxhZ3M7CgogICBHTHVpbnQgUmVxdWlyZVdyaXRlYWJs
ZUZsYWdzOwoKCiAgIGNsaXBfaW50ZXJwX2Z1bmMgQ2xpcEludGVycEZ1bmM7CiAgIEdMdWludCBD
bGlwVGFiTWFzazsKCiAgIG5vcm1hbF9mdW5jICpOb3JtYWxUcmFuc2Zvcm07CgoKICAgZ2xfc2hh
ZGVfZnVuYyAqc2hhZGVfZnVuY190YWI7CgogICBHTGZsb2F0IEV5ZVpEaXJbM107CiAgIEdMZmxv
YXQgcmVzY2FsZV9mYWN0b3I7CgogICBHTGZsb2F0IHZiX3Jlc2NhbGVfZmFjdG9yOwogICBHTG1h
dHJpeCAqdmJfcHJval9tYXRyaXg7CgogICBHTHVieXRlIEFsbG93VmVydGV4Q3VsbDsKICAgR0xi
b29sZWFuIE5lZWRFeWVDb29yZHM7CiAgIEdMYm9vbGVhbiBOZWVkRXllTm9ybWFsczsKICAgR0xi
b29sZWFuIE5lZWRDbGlwQ29vcmRzOwoKICAgR0xmbG9hdCBiYWNrZmFjZV9zaWduOwoKICAgR0xi
b29sZWFuIE9jY2x1c2lvblJlc3VsdDsKICAgR0xib29sZWFuIE9jY2x1c2lvblJlc3VsdFNhdmVk
OwoKCiAgIHN0cnVjdCBpbW1lZGlhdGUgKmlucHV0OwoKCgoKICAgc3RydWN0IGltbWVkaWF0ZSAq
ZnJlZWRfaW1fcXVldWU7CiAgIEdMdWludCBucl9pbV9xdWV1ZWQ7CgoKCiAgIHN0cnVjdCB2ZXJ0
ZXhfYnVmZmVyICpWQjsKCgogICBzdHJ1Y3QgcGl4ZWxfYnVmZmVyKiBQQjsKCiAgIHN0cnVjdCBn
bF9zaGluZV90YWIgKlNoaW5lVGFibGVbNF07CiAgIHN0cnVjdCBnbF9zaGluZV90YWIgKlNoaW5l
VGFiTGlzdDsKCgogICBHTGJvb2xlYW4gQ2F0Y2hTaWduYWxzOwoKCiAgIEdMYm9vbGVhbiBOb1Jh
c3RlcjsKICAgR0xib29sZWFuIEZpcnN0VGltZUN1cnJlbnQ7CgoKICAgR0xib29sZWFuIE5vRGl0
aGVyOwoKCgoKfTsKIyAyMDQwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIK
ZW51bSBfdmVyYm9zZSB7CiAgICAgICAgVkVSQk9TRV9WQVJSQVkgPSAweDEsCiAgICAgICAgVkVS
Qk9TRV9URVhUVVJFID0gMHgyLAogICAgICAgIFZFUkJPU0VfSU1NRURJQVRFID0gMHg0LAogICAg
ICAgIFZFUkJPU0VfUElQRUxJTkUgPSAweDgsCiAgICAgICAgVkVSQk9TRV9EUklWRVIgPSAweDEw
LAogICAgICAgIFZFUkJPU0VfU1RBVEUgPSAweDIwLAogICAgICAgIFZFUkJPU0VfQVBJID0gMHg0
MCwKICAgICAgICBWRVJCT1NFX1RSSUFOR0xFX0NIRUNLUyA9IDB4ODAsCiAgICAgICAgVkVSQk9T
RV9DVUxMID0gMHgxMDAsCiAgICAgICAgVkVSQk9TRV9ESVNQTEFZX0xJU1QgPSAweDIwMCwKICAg
ICAgICBWRVJCT1NFX0xJR0hUSU5HID0gMHg0MDAKfTsKCgplbnVtIF9kZWJ1ZyB7CiAgICAgICAg
REVCVUdfQUxXQVlTX0ZMVVNIID0gMHgxCn07CgoKZXh0ZXJuIHZvaWQgZ2xfZmx1c2hfdmIoIEdM
Y29udGV4dCAqY3R4LCBjb25zdCBjaGFyICp3aGVyZSApOwoKZXh0ZXJuIHZvaWQgUkVTRVRfSU1N
RURJQVRFKCBHTGNvbnRleHQgKmN0eCApOwojIDMxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvdHJhbnNsYXRlLmgiIDIKIyA0MiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z
bGF0ZS5oIgpleHRlcm4gdHJhbnNfMXVpX2Z1bmMgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwQSkg
JiAweGYpKzFdOwpleHRlcm4gdHJhbnNfMXViX2Z1bmMgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQw
QSkgJiAweGYpKzFdOwpleHRlcm4gdHJhbnNfM2ZfZnVuYyBnbF90cmFuc18zZl90YWJbKCgweDE0
MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRyYW5zXzR1Yl9mdW5jIGdsX3RyYW5zXzR1Yl90YWJbNV1b
KCgweDE0MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRyYW5zXzRmX2Z1bmMgZ2xfdHJhbnNfNGZfdGFi
WzVdWygoMHgxNDBBKSAmIDB4ZikrMV07CgpleHRlcm4gdHJhbnNfZWx0XzF1aV9mdW5jIGdsX3Ry
YW5zX2VsdF8xdWlfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CmV4dGVybiB0cmFuc19lbHRfMXVi
X2Z1bmMgZ2xfdHJhbnNfZWx0XzF1Yl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRy
YW5zX2VsdF8zZl9mdW5jIGdsX3RyYW5zX2VsdF8zZl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsK
ZXh0ZXJuIHRyYW5zX2VsdF80dWJfZnVuYyBnbF90cmFuc19lbHRfNHViX3RhYls1XVsoKDB4MTQw
QSkgJiAweGYpKzFdOwpleHRlcm4gdHJhbnNfZWx0XzRmX2Z1bmMgZ2xfdHJhbnNfZWx0XzRmX3Rh
Yls1XVsoKDB4MTQwQSkgJiAweGYpKzFdOwoKCmV4dGVybiB2b2lkIGdsX2luaXRfdHJhbnNsYXRl
KCB2b2lkICk7CiMgMzkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCgp0cmFuc18xdWlfZnVuYyBnbF90
cmFuc18xdWlfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zXzF1Yl9mdW5jIGdsX3RyYW5z
XzF1Yl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKdHJhbnNfM2ZfZnVuYyBnbF90cmFuc18zZl90
YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKdHJhbnNfNHViX2Z1bmMgZ2xfdHJhbnNfNHViX3RhYls1
XVsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc180Zl9mdW5jIGdsX3RyYW5zXzRmX3RhYls1XVso
KDB4MTQwQSkgJiAweGYpKzFdOwoKdHJhbnNfZWx0XzF1aV9mdW5jIGdsX3RyYW5zX2VsdF8xdWlf
dGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zX2VsdF8xdWJfZnVuYyBnbF90cmFuc19lbHRf
MXViX3RhYlsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc19lbHRfM2ZfZnVuYyBnbF90cmFuc19l
bHRfM2ZfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zX2VsdF80dWJfZnVuYyBnbF90cmFu
c19lbHRfNHViX3RhYls1XVsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc19lbHRfNGZfZnVuYyBn
bF90cmFuc19lbHRfNGZfdGFiWzVdWygoMHgxNDBBKSAmIDB4ZikrMV07CiMgODggInRyYW5zbGF0
ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3
ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRy
YW5zXzRfR0xieXRlXzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJp
ZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQg
KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAo
dm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsr
LCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkg
dFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMF0pICk7CiAgICAgICAgIGlmICg0
ID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzFdKSApOwogICAgICAg
ICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsyXSkgKTsK
ICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilb
M10pICk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGJ5dGVfNHViX3JhdyggR0x1Ynl0ZSAo
KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJh
eSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsK
ICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAo
R0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq
Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7
CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAg
ICAgICA7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoKCgoR0xieXRlICopZilbMF0p
IDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMF0pKTsKICAgICAgICAgaWYgKDQg
Pj0gMikgdFtpXVsxXSA9ICgoKChHTGJ5dGUgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAo
KChHTGJ5dGUgKilmKVsxXSkpOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKCgoKEdM
Ynl0ZSAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzJdKSk7CiAg
ICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoKCgoR0xieXRlICopZilbM10pIDwgMCA/IDAg
OiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbM10pKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAg
ICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzRfR0xieXRlX3Jhdyh2b2lkKQp7CiMgMTY1ICIuLi8u
Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzR1Yl90YWJb
NF1bKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc180X0dMYnl0ZV80dWJfcmF3OwoKCiAgIGdsX3Ry
YW5zXzRmX3RhYls0XVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzRmX3JhdzsK
Cgp9CiMgODkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l
c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGJ5dGVfNGZfcmF3KCBHTGZsb2F0ICgq
dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg
R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1
Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly
c3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0Owog
ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg
ICAgOwogICAgICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg
KilmKVswXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo
R0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h
dCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0g
KEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRp
YyB2b2lkIHRyYW5zXzNfR0xieXRlXzNmX3JhdyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm
cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy
ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50
IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8
IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ld
WzBdID0gKCgyLjBGICogKCgoKEdMYnl0ZSAqKWYpWzBdKSkgKyAxLjBGKSAqICgxLjBGLzI1NS4w
RikpOwogICAgICAgICB0W2ldWzFdID0gKCgyLjBGICogKCgoKEdMYnl0ZSAqKWYpWzFdKSkgKyAx
LjBGKSAqICgxLjBGLzI1NS4wRikpOwogICAgICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdM
Ynl0ZSAqKWYpWzJdKSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikpOwogICAgICB9CiAgIH0KfQoK
CgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMYnl0ZV80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAog
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg
c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop
IGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7
CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChp
ID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAg
ICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKChHTGJ5dGUgKilmKVswXSkgPCAwID8gMCA6
IChHTHVieXRlKSAoKChHTGJ5dGUgKilmKVswXSkpOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ld
WzFdID0gKCgoKEdMYnl0ZSAqKWYpWzFdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAq
KWYpWzFdKSk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xieXRlICopZilb
Ml0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMl0pKTsKICAgICAgICAgaWYg
KDMgPT0gNCkgdFtpXVszXSA9ICgoKChHTGJ5dGUgKilmKVszXSkgPCAwID8gMCA6IChHTHVieXRl
KSAoKChHTGJ5dGUgKilmKVszXSkpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9
CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2
b2lkIGluaXRfdHJhbnNfM19HTGJ5dGVfcmF3KHZvaWQpCnsKIyAxNjEgIi4uLy4uLy4uLy4uL2V4
dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFuc18zZl90YWJbKCgweDE0
MDApICYgMHhmKV0gPSB0cmFuc18zX0dMYnl0ZV8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3Rh
YlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzR1Yl9yYXc7CgoKICAgZ2xf
dHJhbnNfNGZfdGFiWzNdWygoMHgxNDAwKSAmIDB4ZildID0gdHJhbnNfM19HTGJ5dGVfNGZfcmF3
OwoKCn0KIyA5NiAidHJhbnNsYXRlLmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l
c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9HTGJ5dGVfNGZfcmF3KCBHTGZsb2F0ICgq
dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg
R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1
Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly
c3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0Owog
ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg
ICAgOwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg
KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo
R0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h
dCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0g
KEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90
cmFuc18yX0dMYnl0ZV9yYXcodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180Zl90YWJbMl1bKCgweDE0MDApICYgMHhmKV0g
PSB0cmFuc18yX0dMYnl0ZV80Zl9yYXc7CgoKfQojIDEwMSAidHJhbnNsYXRlLmMiIDIKCgoKCgoK
IyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4v
Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18x
X0dMYnl0ZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK
ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry
aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQp
IGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiAr
PSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1b
MF0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAy
KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsxXSkgKTsKICAgICAgICAgaWYg
KDEgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMl0pICk7CiAgICAg
ICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzNdKSAp
OwogICAgICB9CiAgIH0KfQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z
X3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMYnl0ZV8xdWJfcmF3KCBHTHVieXRlICp0LAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50
IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq
KSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBm
OwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAo
aSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAg
ICAgICAgICB0W2ldID0gKCgoKEdMYnl0ZSAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo
KEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18x
X0dMYnl0ZV8xdWlfcmF3KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAg
Y29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRl
OwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3Rh
cnQ7CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBz
dHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV0gPSAoKCgoR0xieXRlICop
ZilbMF0pIDwgMCA/IDAgOiAoR0x1aW50KSAoKChHTGJ5dGUgKilmKVswXSkpOwogICAgICB9CiAg
IH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0xieXRlX3Jhdyh2b2lkKQp7CgogICA7
CiAgIGdsX3RyYW5zXzF1aV90YWJbKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc18xX0dMYnl0ZV8x
dWlfcmF3OwoKCiAgIDsKICAgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMCkgJiAweGYpXSA9IHRy
YW5zXzFfR0xieXRlXzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRy
YW5zXzFfR0xieXRlXzRmX3JhdzsKCgp9CiMgMTA4ICJ0cmFuc2xhdGUuYyIgMgojIDEzMSAidHJh
bnNsYXRlLmMiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAx
CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv
aWQgdHJhbnNfM19HTHVieXRlXzR1Yl9yYXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm
cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy
ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50
IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8
IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAo
MyA+PSAxKSB0W2ldWzBdID0gKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDMgPj0g
MikgdFtpXVsxXSA9ICgoKEdMdWJ5dGUgKilmKVsxXSk7CiAgICAgICAgIGlmICgzID49IDMpIHRb
aV1bMl0gPSAoKChHTHVieXRlICopZilbMl0pOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNd
ID0gKCgoR0x1Ynl0ZSAqKWYpWzNdKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0K
fQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg
dm9pZCBpbml0X3RyYW5zXzNfR0x1Ynl0ZV9yYXcodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4v
ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180dWJfdGFiWzNdWygoMHgx
NDAxKSAmIDB4ZildID0gdHJhbnNfM19HTHVieXRlXzR1Yl9yYXc7CgoKCgoKfQojIDEzMiAidHJh
bnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf
dG1wLmgiIDEKIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIK
c3RhdGljIHZvaWQgdHJhbnNfMV9HTHVieXRlXzF1Yl9yYXcoIEdMdWJ5dGUgKnQsCiAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRl
ID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20t
PlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM
dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7
IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg
IHRbaV0gPSAoKChHTHVieXRlICopZilbMF0pOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZv
aWQgdHJhbnNfMV9HTHVieXRlXzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T
dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh
cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAg
ICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg
aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChH
THVpbnQpKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQg
aW5pdF90cmFuc18xX0dMdWJ5dGVfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3Rh
YlsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1Ynl0ZV8xdWlfcmF3OwoKCiAgIDsKICAg
Z2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1Ynl0ZV8xdWJf
cmF3OwojIDE3MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgp9CiMg
MTM5ICJ0cmFuc2xhdGUuYyIgMgojIDE2MiAidHJhbnNsYXRlLmMiCiMgMSAiLi4vLi4vLi4vLi4v
ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTHNob3J0XzRmX3Jhdygg
R0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xp
ZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu
dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl
ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM
dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lk
KSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAg
ICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSgg
KCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdM
ZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1b
Ml0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0g
NCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAg
IH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp
YyB2b2lkIHRyYW5zXzRfR0xzaG9ydF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRl
ID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20t
PlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM
dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7
IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg
aWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1
Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykpOwogICAgICAgICBpZiAoNCA+PSAyKSB0
W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xz
aG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoKCgo
R0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTHNob3J0ICopZilbMl0p
ID4+IDcpKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9ICgoKChHTHNob3J0ICopZilb
M10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVszXSkgPj4gNykpOyBlbHNl
IHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTHNob3J0X3Jh
dyh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
CiAgIGdsX3RyYW5zXzR1Yl90YWJbNF1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc180X0dMc2hv
cnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbNF1bKCgweDE0MDIpICYgMHhmKV0gPSB0
cmFuc180X0dMc2hvcnRfNGZfcmF3OwoKCn0KIyAxNjMgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMg
MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u
Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19H
THNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog
ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp
ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkg
Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9
IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVsw
XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMyA+PSAy
KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm
ICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAg
ICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNd
KSApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHNob3J0XzNmX3Jh
dyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf
Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZv
aWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAg
ICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMc2hvcnQg
KilmKVswXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICAgICB0W2ldWzFdID0g
KCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikp
OwogICAgICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsyXSkpICsgMS4w
RikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCB0cmFu
c18zX0dMc2hvcnRfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0
cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFy
dCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAg
KHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkr
KywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgzID49IDEp
IHRbaV1bMF0gPSAoKCgoR0xzaG9ydCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChH
THNob3J0ICopZilbMF0pID4+IDcpKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9ICgo
KChHTHNob3J0ICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVsx
XSkgPj4gNykpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdMc2hvcnQgKilm
KVsyXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA+PiA3KSk7CiAg
ICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xzaG9ydCAqKWYpWzNdKSA8IDAgPyAw
IDogKEdMdWJ5dGUpICgoKChHTHNob3J0ICopZilbM10pID4+IDcpKTsgZWxzZSB0W2ldWzNdID0g
MjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry
YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xzaG9ydF9yYXcodm9pZCkKewoj
IDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICA7CiAgIGds
X3RyYW5zXzNmX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xzaG9ydF8zZl9yYXc7
CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xz
aG9ydF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwMikgJiAweGYpXSA9
IHRyYW5zXzNfR0xzaG9ydF80Zl9yYXc7CgoKfQojIDE3MCAidHJhbnNsYXRlLmMiIDIKCgoKCiMg
MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u
Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9H
THNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog
ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp
ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkg
Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9
IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVsw
XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAy
KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm
ICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAg
ICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNd
KSApOwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry
YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xzaG9ydF9yYXcodm9pZCkKewoj
IDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFu
c180Zl90YWJbMl1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18yX0dMc2hvcnRfNGZfcmF3OwoK
Cn0KIyAxNzUgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l
c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzRmX3JhdyggR0xmbG9hdCAo
KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5
ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg
IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM
dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp
cnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsK
ICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAg
ICAgIDsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xzaG9y
dCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAo
KChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMpIHRbaV1bMl0gPSAoR0xm
bG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVsz
XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDEw
OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0
cmFuc18xX0dMc2hvcnRfMXViX3JhdyggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJp
ZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQg
KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2
b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyss
IGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICAgdFtpXSA9ICgoKChH
THNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkg
Pj4gNykpOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzF1
aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9j
bGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv
aWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog
ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9ICgoKChHTHNob3J0ICopZilbMF0pIDwg
MCA/IDAgOiAoR0x1aW50KSAoKChHTHNob3J0ICopZilbMF0pKTsKICAgICAgfQogICB9Cn0KCgoK
c3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dMc2hvcnRfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xf
dHJhbnNfMXVpX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFfR0xzaG9ydF8xdWlfcmF3
OwoKCiAgIDsKICAgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFf
R0xzaG9ydF8xdWJfcmF3OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z
X3RtcC5oIgogICBnbF90cmFuc180Zl90YWJbMV1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18x
X0dMc2hvcnRfNGZfcmF3OwoKCn0KIyAxODIgInRyYW5zbGF0ZS5jIiAyCiMgMjA2ICJ0cmFuc2xh
dGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAz
NyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0
cmFuc180X0dMdXNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T
dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh
cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog
ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg
aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0g
MSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVswXSkgKTsKICAgICAgICAg
aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsxXSkgKTsK
ICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilm
KVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0x1
c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFz
L01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMdXNob3J0XzR1Yl9y
YXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs
IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH
THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv
bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAg
KHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7
CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5
dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsKICAgICAgICAgaWYgKDQgPj0gMikgdFtp
XVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVsxXSkgPj4gOCk7CiAgICAgICAgIGlm
ICg0ID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgoKEdMdXNob3J0ICopZilbMl0pID4+IDgp
OwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAq
KWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0
X3RyYW5zXzRfR0x1c2hvcnRfcmF3KHZvaWQpCnsKIyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNHViX3RhYls0XVsoKDB4MTQwMykgJiAw
eGYpXSA9IHRyYW5zXzRfR0x1c2hvcnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbNF1b
KCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc180X0dMdXNob3J0XzRmX3JhdzsKCgp9CiMgMjA3ICJ0
cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu
c190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1c2hvcnRfNGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0
cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm
cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog
ICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkg
PSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAg
ICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzBd
KSApOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9y
dCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAo
KChHTHVzaG9ydCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdM
ZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGlj
IHZvaWQgdHJhbnNfM19HTHVzaG9ydF8zZl9yYXcoIEdMZmxvYXQgKCp0KVszXSwKICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g
ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0
ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWlu
dCBpOwogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg
PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtp
XVswXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMF0pKSAqICgxLjBGIC8gNjU1MzUu
MEYpKTsKICAgICAgICAgdFtpXVsxXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMV0p
KSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgICAgdFtpXVsyXSA9ICgoR0xmbG9hdCkgKCgo
KEdMdXNob3J0ICopZilbMl0pKSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgfQogICB9Cn0K
CgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVzaG9ydF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0s
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVp
bnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRl
ICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9
IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9y
IChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsK
ICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm
KVswXSkgPj4gOCk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0x1Ynl0ZSkgKCgo
KEdMdXNob3J0ICopZilbMV0pID4+IDgpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0g
KEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzJdKSA+PiA4KTsKICAgICAgICAgaWYgKDMgPT0g
NCkgdFtpXVszXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVszXSkgPj4gOCk7IGVsc2Ug
dFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMdXNob3J0X3Jh
dyh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
CiAgIDsKICAgZ2xfdHJhbnNfM2ZfdGFiWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfM19HTHVz
aG9ydF8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwMykgJiAweGYpXSA9
IHRyYW5zXzNfR0x1c2hvcnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbM11bKCgweDE0
MDMpICYgMHhmKV0gPSB0cmFuc18zX0dMdXNob3J0XzRmX3JhdzsKCgp9CiMgMjE0ICJ0cmFuc2xh
dGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg
dm9pZCB0cmFuc18yX0dMdXNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm
cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy
ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50
IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg
PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYg
KDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVswXSkgKTsKICAg
ICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsx
XSkgKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1c2hv
cnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSgg
KCgoR0x1c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18yX0dM
dXNob3J0X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwMykgJiAweGYpXSA9IHRyYW5z
XzJfR0x1c2hvcnRfNGZfcmF3OwoKCn0KIyAyMTkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHVz
aG9ydF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAg
Y29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRl
OwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZp
cnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBz
dHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0g
PSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICgxID49IDIp
IHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm
ICgxID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAg
ICAgICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilb
M10pICk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1c2hvcnRfMXViX3JhdyggR0x1Ynl0
ZSAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg
IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM
dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp
cnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0Owog
ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg
ICAgOwogICAgICAgICAgdFtpXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVswXSkgPj4g
OCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNob3J0XzF1aV9y
YXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGll
bnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu
dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl
ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM
dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp
IGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAg
ICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpICgoKEdMdXNob3J0ICopZilb
MF0pOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0x1c2hvcnRf
cmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwMykgJiAweGYpXSA9
IHRyYW5zXzFfR0x1c2hvcnRfMXVpX3JhdzsKCgogICA7CiAgIGdsX3RyYW5zXzF1Yl90YWJbKCgw
eDE0MDMpICYgMHhmKV0gPSB0cmFuc18xX0dMdXNob3J0XzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8u
Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVso
KDB4MTQwMykgJiAweGYpXSA9IHRyYW5zXzFfR0x1c2hvcnRfNGZfcmF3OwoKCn0KIyAyMjYgInRy
YW5zbGF0ZS5jIiAyCiMgMjQ5ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj
L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMaW50XzRmX3JhdyggR0xmbG9hdCAo
KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5
ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg
IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM
dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp
cnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsK
ICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAg
ICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQg
KilmKVswXSkgKTsKICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo
R0xpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0
KSggKCgoR0xpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChH
TGZsb2F0KSggKCgoR0xpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4v
Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dM
aW50XzR1Yl9yYXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog
ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp
ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBz
dGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0g
c3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBd
ID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilb
MF0pID4+IDIzKSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0gPSAoKCgoR0xpbnQgKilm
KVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVsxXSkgPj4gMjMpKTsKICAg
ICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKChHTGludCAqKWYpWzJdKSA8IDAgPyAwIDog
KEdMdWJ5dGUpICgoKChHTGludCAqKWYpWzJdKSA+PiAyMykpOwogICAgICAgICBpZiAoNCA9PSA0
KSB0W2ldWzNdID0gKCgoKEdMaW50ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdM
aW50ICopZilbM10pID4+IDIzKSk7IGVsc2UgdFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0K
IyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv
aWQgaW5pdF90cmFuc180X0dMaW50X3Jhdyh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzR1Yl90YWJbNF1bKCgweDE0MDQp
ICYgMHhmKV0gPSB0cmFuc180X0dMaW50XzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzRd
WygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfNF9HTGludF80Zl9yYXc7CgoKfQojIDI1MCAidHJh
bnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf
dG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpz
dGF0aWMgdm9pZCB0cmFuc18zX0dMaW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg
PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+
UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1
aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7
IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg
aWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVswXSkgKTsKICAg
ICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsxXSkg
KTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilm
KVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xp
bnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xp
bnRfM2ZfcmF3KCBHTGZsb2F0ICgqdClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNv
bnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsK
ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0
OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp
ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYgKiAoKCgo
R0xpbnQgKilmKVswXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAg
IHRbaV1bMV0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi80
Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilm
KVsyXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgIH0KICAgfQp9CgoK
CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xpbnRfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0
cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm
cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog
ICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9
IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAg
ICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKCgoR0xpbnQgKilmKVswXSkgPCAwID8gMCA6IChH
THVieXRlKSAoKCgoR0xpbnQgKilmKVswXSkgPj4gMjMpKTsKICAgICAgICAgaWYgKDMgPj0gMikg
dFtpXVsxXSA9ICgoKChHTGludCAqKWYpWzFdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTGlu
dCAqKWYpWzFdKSA+PiAyMykpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdM
aW50ICopZilbMl0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMl0pID4+IDIz
KSk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xpbnQgKilmKVszXSkgPCAw
ID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVszXSkgPj4gMjMpKTsgZWxzZSB0W2ldWzNd
ID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj
L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xpbnRfcmF3KHZvaWQpCnsK
IyAxNjEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBn
bF90cmFuc18zZl90YWJbKCgweDE0MDQpICYgMHhmKV0gPSB0cmFuc18zX0dMaW50XzNmX3JhdzsK
CgogICBnbF90cmFuc180dWJfdGFiWzNdWygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfM19HTGlu
dF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwNCkgJiAweGYpXSA9IHRy
YW5zXzNfR0xpbnRfNGZfcmF3OwoKCn0KIyAyNTcgInRyYW5zbGF0ZS5jIiAyCgoKCgojIDEgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8u
Li9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzJfR0xpbnRf
NGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFy
dCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0
IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAg
Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK
ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRl
KSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdM
ZmxvYXQpKCAoKChHTGludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ldWzFd
ID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0
W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9
PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzNdKSApOwogICAgICB9CiAg
IH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0
aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xpbnRfcmF3KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNGZfdGFiWzJdWygoMHgx
NDA0KSAmIDB4ZildID0gdHJhbnNfMl9HTGludF80Zl9yYXc7CgoKfQojIDI2MiAidHJhbnNsYXRl
LmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg
dm9pZCB0cmFuc18xX0dMaW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9t
LT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsg
c3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7
CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBu
IDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDEg
Pj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVswXSkgKTsKICAgICAgICAg
aWYgKDEgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsxXSkgKTsKICAg
ICAgICAgaWYgKDEgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsyXSkg
KTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilm
KVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny
Yy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGludF8xdWJfcmF3KCBHTHVieXRl
ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq
ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg
R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1
Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly
c3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAg
IGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAg
ICA7CiAgICAgICAgICB0W2ldID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0
ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMg
dm9pZCB0cmFuc18xX0dMaW50XzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T
dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh
cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAg
ICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg
aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9ICgo
KChHTGludCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWludCkgKCgoR0xpbnQgKilmKVswXSkpOwog
ICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0xpbnRfcmF3KHZvaWQp
CnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5zXzFf
R0xpbnRfMXVpX3JhdzsKCgogICA7CiAgIGdsX3RyYW5zXzF1Yl90YWJbKCgweDE0MDQpICYgMHhm
KV0gPSB0cmFuc18xX0dMaW50XzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVsoKDB4MTQwNCkgJiAweGYp
XSA9IHRyYW5zXzFfR0xpbnRfNGZfcmF3OwoKCn0KIyAyNjkgInRyYW5zbGF0ZS5jIiAyCiMgMjkz
ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1w
LmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0
aWMgdm9pZCB0cmFuc180X0dMdWludF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g
ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0
ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWlu
dCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBp
IDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlm
ICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAg
ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkg
KTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICop
ZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdM
dWludCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1aW50XzR1Yl9yYXco
IEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9j
bGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv
aWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAg
ICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUp
ICgoKChHTHVpbnQgKilmKVswXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFd
ID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsxXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+
PSAzKSB0W2ldWzJdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsyXSkgPj4gMjQpOwogICAg
ICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVszXSkg
Pj4gMjQpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8u
Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNf
NF9HTHVpbnRfcmF3KHZvaWQpCnsKIyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90
cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNHViX3RhYls0XVsoKDB4MTQwNSkgJiAweGYpXSA9IHRy
YW5zXzRfR0x1aW50XzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzRdWygoMHgxNDA1KSAm
IDB4ZildID0gdHJhbnNfNF9HTHVpbnRfNGZfcmF3OwoKCn0KIyAyOTQgInRyYW5zbGF0ZS5jIiAy
CgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMg
MzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQg
dHJhbnNfM19HTHVpbnRfNGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0
cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFy
dCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAg
ICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBp
KyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoMyA+PSAx
KSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVswXSkgKTsKICAgICAgICAgaWYg
KDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMV0pICk7CiAgICAg
ICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzJdKSAp
OwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilm
KVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1aW50XzNm
X3JhdyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg
Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs
IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH
THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv
bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAg
KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7
CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMdWlu
dCAqKWYpWzBdKSkgKyAxLjBGKSAqICgxLjBGLzQyOTQ5NjcyOTQuMEYpKTsKICAgICAgICAgdFtp
XVsxXSA9ICgoMi4wRiAqICgoKChHTHVpbnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0
OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0x1aW50ICopZilb
Ml0pKSArIDEuMEYpICogKDEuMEYvNDI5NDk2NzI5NC4wRikpOwogICAgICB9CiAgIH0KfQoKCgpz
dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3Ry
aWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZy
b20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg
IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g
MCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAg
ICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTHVieXRlKSAoKCgoR0x1aW50ICopZilbMF0pID4+
IDI0KTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1aW50
ICopZilbMV0pID4+IDI0KTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9IChHTHVieXRl
KSAoKCgoR0x1aW50ICopZilbMl0pID4+IDI0KTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVsz
XSA9IChHTHVieXRlKSAoKCgoR0x1aW50ICopZilbM10pID4+IDI0KTsgZWxzZSB0W2ldWzNdID0g
MjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry
YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0x1aW50X3Jhdyh2b2lkKQp7CiMg
MTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xf
dHJhbnNfM2ZfdGFiWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfM2ZfcmF3OwoK
CiAgIGdsX3RyYW5zXzR1Yl90YWJbM11bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFuc18zX0dMdWlu
dF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwNSkgJiAweGYpXSA9IHRy
YW5zXzNfR0x1aW50XzRmX3JhdzsKCgp9CiMgMzAxICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIu
Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMdWlu
dF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0
YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u
c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwog
ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0
OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp
ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAo
R0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ld
WzFdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDIgPj0g
MykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMl0pICk7CiAgICAgICAgIGlm
ICgyID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzNdKSApOwogICAg
ICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0x1aW50X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8u
Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsy
XVsoKDB4MTQwNSkgJiAweGYpXSA9IHRyYW5zXzJfR0x1aW50XzRmX3JhdzsKCgp9CiMgMzA2ICJ0
cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu
c190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
CnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1aW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJp
ZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJv
bS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAg
R0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0g
MCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAg
ICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMF0pICk7
CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYp
WzFdKSApOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHVp
bnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSgg
KCgoR0x1aW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9l
eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1aW50XzF1
Yl9yYXcoIEdMdWJ5dGUgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf
Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBH
THVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1
Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25z
dCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2
b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog
ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgIHRbaV0gPSAoR0x1Ynl0ZSkgKCgoKEdMdWludCAq
KWYpWzBdKSA+PiAyNCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dM
dWludF8xdWlfcmF3KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0
YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u
c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwog
ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7
CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp
ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV0gPSAoKChHTHVpbnQgKilmKVsw
XSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTHVpbnRfcmF3
KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwNSkgJiAweGYpXSA9IHRy
YW5zXzFfR0x1aW50XzF1aV9yYXc7CgoKICAgOwogICBnbF90cmFuc18xdWJfdGFiWygoMHgxNDA1
KSAmIDB4ZildID0gdHJhbnNfMV9HTHVpbnRfMXViX3JhdzsKIyAxNjggIi4uLy4uLy4uLy4uL2V4
dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNGZfdGFiWzFdWygoMHgxNDA1
KSAmIDB4ZildID0gdHJhbnNfMV9HTHVpbnRfNGZfcmF3OwoKCn0KIyAzMTMgInRyYW5zbGF0ZS5j
IiAyCiMgMzM2ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt
cC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMZG91YmxlXzRmX3JhdyggR0xmbG9hdCAoKnQpWzRd
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWlu
dCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUg
KikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0g
ZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9y
IChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsK
ICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKEdMZG91YmxlICopZilbMF0pOwogICAg
ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgoR0xkb3VibGUgKilmKVsxXSk7CiAgICAgICAg
IGlmICg0ID49IDMpIHRbaV1bMl0gPSAoKChHTGRvdWJsZSAqKWYpWzJdKTsKICAgICAgICAgaWYg
KDQgPT0gNCkgdFtpXVszXSA9ICgoKEdMZG91YmxlICopZilbM10pOwogICAgICB9CiAgIH0KfQoj
IDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IHRyYW5zXzRfR0xkb3VibGVfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZy
b20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIg
KyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg
aTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwg
biA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICg0
ID49IDEpIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAo
KChHTGRvdWJsZSAqKWYpWzBdKTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAo
KEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0g
dG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hp
bGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVp
bnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRt
cC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChH
THVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAo
R0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDQgPj0gMykgZG8geyB1
bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICop
ZilbMl0pOyB0W2ldWzJdID0gKCh0bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkg
PCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBG
LzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgIGlmICg0ID09IDQpIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsg
dG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdm
MDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDog
KHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5p
KSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUw
ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGlu
aXRfdHJhbnNfNF9HTGRvdWJsZV9yYXcodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0cmFz
L01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180dWJfdGFiWzRdWygoMHgxNDBBKSAm
IDB4ZildID0gdHJhbnNfNF9HTGRvdWJsZV80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYls0
XVsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzRfR0xkb3VibGVfNGZfcmF3OwoKCn0KIyAzMzcg
InRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry
YW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAu
aCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg
c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop
IGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7
CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAo
aSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAg
ICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAg
ICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBp
ZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgz
ID09IDQpIHRbaV1bM10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KCgoK
CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVfM2ZfcmF3KCBHTGZsb2F0ICgqdClbM10sCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0
cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm
cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog
ICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9
IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAg
ICAgIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgdFtpXVsxXSA9ICgo
KEdMZG91YmxlICopZilbMV0pOwogICAgICAgICB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsy
XSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVfNHViX3Jh
dyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGds
X2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwg
R0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdM
dWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29u
c3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAo
dm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsK
ICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgzID49IDEpIGRvIHsgdW5pb24geyBHTGZs
b2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsgdFtp
XVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1
Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsg
MzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoMyA+
PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgo
R0xkb3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChH
TGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRt
cC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxl
ICgwKTsKICAgICAgICAgaWYgKDMgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50
IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMl0pOyB0W2ldWzJdID0gKCh0bXAu
aSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1
Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdM
dWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICgzID09IDQpIGRvIHsgdW5p
b24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYp
WzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwg
MCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8y
NTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRb
aV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGRvdWJsZV9yYXco
dm9pZCkKewojIDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog
ICA7CiAgIGdsX3RyYW5zXzNmX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzNfR0xkb3Vi
bGVfM2ZfcmF3OwoKCiAgIGdsX3RyYW5zXzR1Yl90YWJbM11bKCgweDE0MEEpICYgMHhmKV0gPSB0
cmFuc18zX0dMZG91YmxlXzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzNdWygoMHgxNDBB
KSAmIDB4ZildID0gdHJhbnNfM19HTGRvdWJsZV80Zl9yYXc7CgoKfQojIDM0NCAidHJhbnNsYXRl
LmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAx
CiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv
aWQgdHJhbnNfMl9HTGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv
bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr
IHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp
OwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwg
biA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgy
ID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDIgPj0g
MikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoMiA+PSAzKSB0
W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1b
M10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18y
X0dMZG91YmxlX3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwQSkgJiAweGYpXSA9IHRy
YW5zXzJfR0xkb3VibGVfNGZfcmF3OwoKCn0KIyAzNDkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMg
MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u
Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9H
TGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK
ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry
aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQp
IGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiAr
PSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1b
MF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtpXVsxXSA9
ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgo
R0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoKChHTGRv
dWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGRvdWJsZV8xdWJfcmF3
KCBHTHVieXRlICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVu
dF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50
IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg
KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1
Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkg
Zmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAg
ewogICAgICAgICA7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsg
fSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVswXSk7IHRbaV0gPSAoKHRtcC5pID49IDB4
M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1
NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0
bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5z
XzFfR0xkb3VibGVfMXVpX3JhdyggR0x1aW50ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7
CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0
cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQp
IHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYg
Kz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldID0gKEdMdWludCkg
KEdMaW50KSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZv
aWQgaW5pdF90cmFuc18xX0dMZG91YmxlX3Jhdyh2b2lkKQp7CgogICA7CiAgIGdsX3RyYW5zXzF1
aV90YWJbKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91YmxlXzF1aV9yYXc7CgoKICAg
OwogICBnbF90cmFuc18xdWJfdGFiWygoMHgxNDBBKSAmIDB4ZildID0gdHJhbnNfMV9HTGRvdWJs
ZV8xdWJfcmF3OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IgogICBnbF90cmFuc180Zl90YWJbMV1bKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91
YmxlXzRmX3JhdzsKCgp9CiMgMzU2ICJ0cmFuc2xhdGUuYyIgMgojIDM2OCAidHJhbnNsYXRlLmMi
CiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNf
NF9HTGZsb2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVC
OwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBz
dHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9p
ZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBm
ICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtp
XVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0g
PSAoKChHTGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKCgo
R0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxv
YXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGZsb2F0XzR1Yl9yYXcoIEdM
dWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGll
bnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu
dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl
ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM
dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp
IGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAg
IHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCBy
OyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXVswXSA9
ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkw
IDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3Njgu
MEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBk
byB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9h
dCAqKWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRt
cC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1
NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwog
ICAgICAgICBpZiAoNCA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0
bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgodG1wLmkgPj0gMHgz
ZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1
IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRt
cC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA9PSA0KSBkbyB7IHVuaW9uIHsgR0xm
bG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzNdKTsgdFtp
XVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1
Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsg
MzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAy
NTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTGZsb2F0X3Jhdyh2b2lkKQp7CiMg
MTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5z
XzR1Yl90YWJbNF1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc180X0dMZmxvYXRfNHViX3JhdzsK
CgogICBnbF90cmFuc180Zl90YWJbNF1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc180X0dMZmxv
YXRfNGZfcmF3OwoKCn0KIyAzNjkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGZsb2F0XzRmX3Jh
dyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf
Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2
b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog
ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxv
YXQgKilmKVswXSk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICop
ZilbMV0pOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJd
KTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAg
ICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZmxvYXRfM2ZfcmF3KCBHTGZs
b2F0ICgqdClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRf
YXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4p
CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg
PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0
ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3Rh
cnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewog
ICAgICAgICA7CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAg
ICB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgdFtpXVsyXSA9ICgoKEdM
ZmxvYXQgKilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xm
bG9hdF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK
ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry
aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkg
c3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9
IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgZG8geyB1
bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxvYXQgKilm
KVswXSk7IHRbaV1bMF0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8
IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYv
MjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAg
ICAgaWYgKDMgPj0gMikgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0
bXAuciA9ICgoKEdMZmxvYXQgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAw
MDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0
bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkp
OyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQg
cjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxvYXQgKilmKVsyXSk7IHRbaV1bMl0g
PSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUp
MCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4
LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPT0gNCkg
ZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxv
YXQgKilmKVszXSk7IHRbaV1bM10gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0
bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigy
NTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsg
ZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xmbG9h
dF9yYXcodm9pZCkKewojIDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt
cC5oIgogICA7CiAgIGdsX3RyYW5zXzNmX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzNf
R0xmbG9hdF8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwNikgJiAweGYp
XSA9IHRyYW5zXzNfR0xmbG9hdF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4
MTQwNikgJiAweGYpXSA9IHRyYW5zXzNfR0xmbG9hdF80Zl9yYXc7CgoKfQojIDM3NiAidHJhbnNs
YXRlLmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGlj
IHZvaWQgdHJhbnNfMl9HTGZsb2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm
cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy
ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50
IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg
PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYg
KDIgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICgyID49
IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoMiA+PSAzKSB0
W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVsz
XSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8u
Li9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9H
TGZsb2F0X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5z
XzJfR0xmbG9hdF80Zl9yYXc7CgoKfQojIDM4MSAidHJhbnNsYXRlLmMiIDIKCgoKCgoKCiMgMSAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGZs
b2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj
b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7
CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmly
c3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0
cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9
ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChH
TGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9h
dCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilm
KVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0xmbG9hdF8xdWJfcmF3KCBHTHVieXRl
ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq
ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg
R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1
Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly
c3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAg
IGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAg
ICA7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRt
cC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkg
PyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5y
ID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0g
d2hpbGUgKDApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGZsb2F0
XzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs
IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH
THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv
bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAg
KHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkg
ewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpIChHTGludCkgKCgo
R0xmbG9hdCAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFu
c18xX0dMZmxvYXRfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQw
NikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8xdWlfcmF3OwoKCiAgIDsKICAgZ2xfdHJhbnNf
MXViX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8xdWJfcmF3OwojIDE2
OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180
Zl90YWJbMV1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc18xX0dMZmxvYXRfNGZfcmF3OwoKCn0K
IyAzODkgInRyYW5zbGF0ZS5jIiAyCiMgMzk4ICJ0cmFuc2xhdGUuYyIKc3RhdGljIHZvaWQgdHJh
bnNfNF9HTHVieXRlXzR1Yl9yYXcgKEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBu
ICkKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAq
ZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBHTHVpbnQgaTsK
CiAgIGlmICgoKCgobG9uZykgZiB8IChsb25nKSBzdHJpZGUpKSAmIDNMKSA9PSAwTCkgewoKCiAg
ICAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgICAgZG8g
eyAqKChHTHVpbnQqKSh0W2ldKSkgPSAqKChHTHVpbnQqKShmKSk7IH0gd2hpbGUgKDApOwogICAg
ICB9CiAgIH0gZWxzZSB7CiAgICAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp
ZGUpIHsKICAgICAgICAgdFtpXVswXSA9IGZbMF07CiAgICAgICAgIHRbaV1bMV0gPSBmWzFdOwog
ICAgICAgICB0W2ldWzJdID0gZlsyXTsKICAgICAgICAgdFtpXVszXSA9IGZbM107CiAgICAgIH0K
ICAgfQp9CgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc2xhdGVfcmF3KHZvaWQpCnsKICAgbWVtc2V0
KCAodm9pZCAqKSAoZ2xfdHJhbnNfMXVpX3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVv
ZihnbF90cmFuc18xdWlfdGFiKSkgKTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfMXVi
X3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVvZihnbF90cmFuc18xdWJfdGFiKSkgKTsK
ICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfM2ZfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90
KSAoc2l6ZW9mKGdsX3RyYW5zXzNmX3RhYikpICk7CiAgIG1lbXNldCggKHZvaWQgKikgKGdsX3Ry
YW5zXzR1Yl90YWIpLCAoaW50KSAoMCksIChzaXplX3QpIChzaXplb2YoZ2xfdHJhbnNfNHViX3Rh
YikpICk7CiAgIG1lbXNldCggKHZvaWQgKikgKGdsX3RyYW5zXzRmX3RhYiksIChpbnQpICgwKSwg
KHNpemVfdCkgKHNpemVvZihnbF90cmFuc180Zl90YWIpKSApOwoKICAgZ2xfdHJhbnNfNHViX3Rh
Yls0XVsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzRfR0x1Ynl0ZV80dWJfcmF3OwoKICAgaW5p
dF90cmFuc180X0dMYnl0ZV9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMYnl0ZV9yYXcoKTsKICAg
aW5pdF90cmFuc18yX0dMYnl0ZV9yYXcoKTsKICAgaW5pdF90cmFuc18xX0dMYnl0ZV9yYXcoKTsK
ICAgaW5pdF90cmFuc18xX0dMdWJ5dGVfcmF3KCk7CiAgIGluaXRfdHJhbnNfM19HTHVieXRlX3Jh
dygpOwogICBpbml0X3RyYW5zXzRfR0xzaG9ydF9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMc2hv
cnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHNob3J0X3JhdygpOwogICBpbml0X3RyYW5zXzFf
R0xzaG9ydF9yYXcoKTsKICAgaW5pdF90cmFuc180X0dMdXNob3J0X3JhdygpOwogICBpbml0X3Ry
YW5zXzNfR0x1c2hvcnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9yYXcoKTsKICAg
aW5pdF90cmFuc18xX0dMdXNob3J0X3JhdygpOwogICBpbml0X3RyYW5zXzRfR0xpbnRfcmF3KCk7
CiAgIGluaXRfdHJhbnNfM19HTGludF9yYXcoKTsKICAgaW5pdF90cmFuc18yX0dMaW50X3Jhdygp
OwogICBpbml0X3RyYW5zXzFfR0xpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfNF9HTHVpbnRfcmF3
KCk7CiAgIGluaXRfdHJhbnNfM19HTHVpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVpbnRf
cmF3KCk7CiAgIGluaXRfdHJhbnNfMV9HTHVpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfNF9HTGRv
dWJsZV9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMZG91YmxlX3JhdygpOwogICBpbml0X3RyYW5z
XzJfR0xkb3VibGVfcmF3KCk7CiAgIGluaXRfdHJhbnNfMV9HTGRvdWJsZV9yYXcoKTsKICAgaW5p
dF90cmFuc180X0dMZmxvYXRfcmF3KCk7CiAgIGluaXRfdHJhbnNfM19HTGZsb2F0X3JhdygpOwog
ICBpbml0X3RyYW5zXzJfR0xmbG9hdF9yYXcoKTsKICAgaW5pdF90cmFuc18xX0dMZmxvYXRfcmF3
KCk7Cn0KIyA1MTIgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny
Yy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf
dG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRd
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWlu
dCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv
bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr
IDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog
ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg
biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7
CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoNCA+
PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAgICAg
aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7CiAg
ICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzJd
KSApOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg
KilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMYnl0ZV80dWJfZWx0KCBHTHVi
eXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50
X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50
ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50
IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq
KSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg
IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g
c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo
KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg
ICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKCgoKEdMYnl0ZSAqKWYpWzBdKSA8IDAgPyAwIDog
KEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1b
MV0gPSAoKCgoR0xieXRlICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICop
ZilbMV0pKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKChHTGJ5dGUgKilmKVsy
XSkgPCAwID8gMCA6IChHTHVieXRlKSAoKChHTGJ5dGUgKilmKVsyXSkpOwogICAgICAgICBpZiAo
NCA9PSA0KSB0W2ldWzNdID0gKCgoKEdMYnl0ZSAqKWYpWzNdKSA8IDAgPyAwIDogKEdMdWJ5dGUp
ICgoKEdMYnl0ZSAqKWYpWzNdKSk7IGVsc2UgdFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0K
IyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv
aWQgaW5pdF90cmFuc180X0dMYnl0ZV9lbHQodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNHViX3RhYls0XVsoKDB4
MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0
XzRmX3RhYls0XVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzRmX2VsdDsKCgp9
CiMgNTEzICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQp
WzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm
cm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdM
dWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g
ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0
ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7
CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBp
IDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIw
KSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAo
MyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAg
ICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7
CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYp
WzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5
dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xi
eXRlXzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQg
bikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAq
ZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUg
KmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0
OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgo
ZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAq
IHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYgKiAoKCgoR0xieXRlICopZilbMF0p
KSArIDEuMEYpICogKDEuMEYvMjU1LjBGKSk7CiAgICAgICAgIHRbaV1bMV0gPSAoKDIuMEYgKiAo
KCgoR0xieXRlICopZilbMV0pKSArIDEuMEYpICogKDEuMEYvMjU1LjBGKSk7CiAgICAgICAgIHRb
aV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xieXRlICopZilbMl0pKSArIDEuMEYpICogKDEuMEYvMjU1
LjBGKSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xieXRlXzR1Yl9l
bHQoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz
LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog
ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH
THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0
ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBm
b3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3Nb
aV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlk
ZTs7CiAgICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKCgoR0xieXRlICopZilbMF0pIDwg
MCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMF0pKTsKICAgICAgICAgaWYgKDMgPj0g
MikgdFtpXVsxXSA9ICgoKChHTGJ5dGUgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKChH
TGJ5dGUgKilmKVsxXSkpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdMYnl0
ZSAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzJdKSk7CiAgICAg
ICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xieXRlICopZilbM10pIDwgMCA/IDAgOiAo
R0x1Ynl0ZSkgKCgoR0xieXRlICopZilbM10pKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9
CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpz
dGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xieXRlX2VsdCh2b2lkKQp7CiMgMTYxICIuLi8uLi8u
Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNm
X3RhYlsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzNmX2VsdDsKCgogICBnbF90
cmFuc19lbHRfNHViX3RhYlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzR1
Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRy
YW5zXzNfR0xieXRlXzRmX2VsdDsKCgp9CiMgNTIwICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIu
Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMYnl0
ZV80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm
bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p
CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg
PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm
aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7
CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm
bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog
c3RyaWRlOzsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xi
eXRlICopZilbMF0pICk7CiAgICAgICAgIGlmICgyID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCko
ICgoKEdMYnl0ZSAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0W2ldWzJdID0gKEdM
ZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVsz
XSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgMTUw
ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGlu
aXRfdHJhbnNfMl9HTGJ5dGVfZWx0KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsyXVsoKDB4MTQwMCkg
JiAweGYpXSA9IHRyYW5zXzJfR0xieXRlXzRmX2VsdDsKCgp9CiMgNTI1ICJ0cmFuc2xhdGUuYyIg
MgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQoj
IDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IHRyYW5zXzFfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0
YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u
c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNv
bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAg
ICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkg
ewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJz
dCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKEdM
ZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtpXVsx
XSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMp
IHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAo
MSA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAg
fQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIK
c3RhdGljIHZvaWQgdHJhbnNfMV9HTGJ5dGVfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwg
R0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRl
QjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJp
ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBz
dGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo
dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg
ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICB0W2ldID0gKCgoKEdMYnl0
ZSAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAg
IH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMYnl0ZV8xdWlfZWx0KCBHTHVpbnQg
KnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm
cm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBH
THVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9
IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5Q
dHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp
OwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsg
aSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgy
MCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtp
XSA9ICgoKChHTGJ5dGUgKilmKVswXSkgPCAwID8gMCA6IChHTHVpbnQpICgoKEdMYnl0ZSAqKWYp
WzBdKSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTGJ5dGVf
ZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1aV90YWJbKCgweDE0MDApICYgMHhm
KV0gPSB0cmFuc18xX0dMYnl0ZV8xdWlfZWx0OwoKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1Yl90
YWJbKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc18xX0dMYnl0ZV8xdWJfZWx0OwojIDE2OCAiLi4v
Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZf
dGFiWzFdWygoMHgxNDAwKSAmIDB4ZildID0gdHJhbnNfMV9HTGJ5dGVfNGZfZWx0OwoKCn0KIyA1
MzIgInRyYW5zbGF0ZS5jIiAyCiMgNTU1ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9l
eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01l
c2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMdWJ5dGVfNHViX2VsdCgg
R0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2Ns
aWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdM
dWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdM
dWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5
dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBm
OwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAo
aSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZt
YXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsK
ICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKEdMdWJ5dGUgKilmKVswXSk7CiAgICAg
ICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTHVieXRlICopZilbMV0pOwogICAgICAgICBp
ZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0x1Ynl0ZSAqKWYpWzJdKTsKICAgICAgICAgaWYgKDMg
PT0gNCkgdFtpXVszXSA9ICgoKEdMdWJ5dGUgKilmKVszXSk7IGVsc2UgdFtpXVszXSA9IDI1NTsK
ICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190
bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMdWJ5dGVfZWx0KHZvaWQpCnsKIyAxNjUg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0
XzR1Yl90YWJbM11bKCgweDE0MDEpICYgMHhmKV0gPSB0cmFuc18zX0dMdWJ5dGVfNHViX2VsdDsK
CgoKCgp9CiMgNTU2ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdWJ5dGVfMXViX2VsdCggR0x1
Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJy
YXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVs
dHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3Ry
aWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZy
b20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1
aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFy
dCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09
IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAg
ICB0W2ldID0gKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2
b2lkIHRyYW5zXzFfR0x1Ynl0ZV8xdWlfZWx0KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBz
dGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNv
bnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBj
b25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAg
ICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEp
IHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmly
c3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpKCgoR0x1Ynl0
ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dM
dWJ5dGVfZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1aV90YWJbKCgweDE0MDEp
ICYgMHhmKV0gPSB0cmFuc18xX0dMdWJ5dGVfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2Vs
dF8xdWJfdGFiWygoMHgxNDAxKSAmIDB4ZildID0gdHJhbnNfMV9HTHVieXRlXzF1Yl9lbHQ7CiMg
MTcxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCn0KIyA1NjMgInRy
YW5zbGF0ZS5jIiAyCiMgNTg2ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj
L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0
ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJy
YXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0
cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJp
ZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJv
bS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVp
bnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFy
dCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09
IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAg
IGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsK
ICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYp
WzFdKSApOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNo
b3J0ICopZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCko
ICgoKEdMc2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4v
ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMc2hvcnRf
NHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq
ZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBu
KQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpm
ID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq
Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7
CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm
bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog
c3RyaWRlOzsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0ICopZilb
MF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykpOwogICAg
ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAwID8gMCA6
IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlmICg0ID49
IDMpIHRbaV1bMl0gPSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo
KChHTHNob3J0ICopZilbMl0pID4+IDcpKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9
ICgoKChHTHNob3J0ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilm
KVszXSkgPj4gNykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIu
Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRf
dHJhbnNfNF9HTHNob3J0X2VsdCh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgxNDAyKSAm
IDB4ZildID0gdHJhbnNfNF9HTHNob3J0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3Rh
Yls0XVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzRfR0xzaG9ydF80Zl9lbHQ7CgoKfQojIDU4
NyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt
cC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0s
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20s
CiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50
IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9t
LT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsg
MCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAg
ICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBu
IDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsK
ICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgzID49
IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsKICAgICAgICAg
aWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzFdKSApOwog
ICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilb
Ml0pICk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMc2hv
cnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xz
aG9ydF8zZl9lbHQoIEdMZmxvYXQgKCp0KVszXSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50
IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg
KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRl
ICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFy
dDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAo
KGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0g
KiBzdHJpZGU7OwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsw
XSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICAgICB0W2ldWzFdID0gKCgyLjBG
ICogKCgoKEdMc2hvcnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAg
ICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsyXSkpICsgMS4wRikgKiAo
MS4wRi82NTUzNS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dM
c2hvcnRfNHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1
Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkg
Zmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAg
aWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRz
W2ldICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0
ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykp
OwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAw
ID8gMCA6IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlm
ICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5
dGUpICgoKChHTHNob3J0ICopZilbMl0pID4+IDcpKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtp
XVszXSA9ICgoKChHTHNob3J0ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hv
cnQgKilmKVszXSkgPj4gNykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMg
MTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IGluaXRfdHJhbnNfM19HTHNob3J0X2VsdCh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNmX3RhYlsoKDB4
MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xzaG9ydF8zZl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0
XzR1Yl90YWJbM11bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18zX0dMc2hvcnRfNHViX2VsdDsK
CgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDAyKSAmIDB4ZildID0gdHJhbnNfM19H
THNob3J0XzRmX2VsdDsKCgp9CiMgNTk0ICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIuLi8uLi8u
Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMc2hvcnRfNGZf
ZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3Ms
IEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg
IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM
dWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3Qg
PSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBm
b3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3Nb
aV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlk
ZTs7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQg
KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo
R0xzaG9ydCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0W2ldWzJdID0gKEdMZmxv
YXQpKCAoKChHTHNob3J0ICopZilbMl0pICk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1bM10g
PSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5p
dF90cmFuc18yX0dMc2hvcnRfZWx0KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsyXVsoKDB4MTQwMikg
JiAweGYpXSA9IHRyYW5zXzJfR0xzaG9ydF80Zl9lbHQ7CgoKfQojIDU5OSAidHJhbnNsYXRlLmMi
IDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEK
IyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9p
ZCB0cmFuc18xX0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg
c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj
b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg
Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK
ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx
KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp
cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAo
R0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtp
XVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMSA+
PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMl0pICk7CiAgICAgICAg
IGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVszXSkgKTsK
ICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190
bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzF1Yl9lbHQoIEdMdWJ5dGUgKnQsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAog
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQg
bWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20t
PlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAw
ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAo
dm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7
IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAg
ICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICAgdFtpXSA9ICgo
KChHTHNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVsw
XSkgPj4gNykpOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0
XzF1aV9lbHQoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn
bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz
LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog
ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH
THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0
ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAg
Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz
W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp
ZGU7OwogICAgICAgICB0W2ldID0gKCgoKEdMc2hvcnQgKilmKVswXSkgPCAwID8gMCA6IChHTHVp
bnQpICgoKEdMc2hvcnQgKilmKVswXSkpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBp
bml0X3RyYW5zXzFfR0xzaG9ydF9lbHQodm9pZCkKewoKICAgOwogICBnbF90cmFuc19lbHRfMXVp
X3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFfR0xzaG9ydF8xdWlfZWx0OwoKCiAgIDsK
ICAgZ2xfdHJhbnNfZWx0XzF1Yl90YWJbKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18xX0dMc2hv
cnRfMXViX2VsdDsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAu
aCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsxXVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFf
R0xzaG9ydF80Zl9lbHQ7CgoKfQojIDYwNiAidHJhbnNsYXRlLmMiIDIKIyA2MzAgInRyYW5zbGF0
ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3
ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRy
YW5zXzRfR0x1c2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3Rh
cnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25z
dCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29u
c3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAg
KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7
CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0
ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xm
bG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1b
MV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICg0ID49
IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAgICAgICAg
IGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbM10pICk7
CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190
bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTHVzaG9ydF80dWJfZWx0KCBHTHVieXRlICgqdClb
NF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm
cm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBH
THVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9
IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5Q
dHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp
OwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBp
IDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIw
KSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAo
NCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsK
ICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm
KVsxXSkgPj4gOCk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgo
KEdMdXNob3J0ICopZilbMl0pID4+IDgpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0g
KEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1
OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z
X3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzRfR0x1c2hvcnRfZWx0KHZvaWQpCnsKIyAx
NjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNf
ZWx0XzR1Yl90YWJbNF1bKCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc180X0dMdXNob3J0XzR1Yl9l
bHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYls0XVsoKDB4MTQwMykgJiAweGYpXSA9IHRyYW5z
XzRfR0x1c2hvcnRfNGZfZWx0OwoKCn0KIyA2MzEgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVz
aG9ydF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50
IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg
KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRl
ICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3Rh
cnQ7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYg
KChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ld
ICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgo
R0x1c2hvcnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZs
b2F0KSggKCgoR0x1c2hvcnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsy
XSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0g
NCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQog
ICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1c2hvcnRfM2ZfZWx0KCBHTGZsb2F0ICgq
dClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg
R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg
PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+
UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg
aTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IHN0YXJ0IDsg
aSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgy
MCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtp
XVswXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMF0pKSAqICgxLjBGIC8gNjU1MzUu
MEYpKTsKICAgICAgICAgdFtpXVsxXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMV0p
KSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgICAgdFtpXVsyXSA9ICgoR0xmbG9hdCkgKCgo
KEdMdXNob3J0ICopZilbMl0pKSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgfQogICB9Cn0K
CgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVzaG9ydF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0s
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVp
bnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZy
b20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIg
KyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwog
ICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg
biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7
CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+
PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsKICAg
ICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVsx
XSkgPj4gOCk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgoKEdM
dXNob3J0ICopZilbMl0pID4+IDgpOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdM
dWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1Owog
ICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt
cC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0x1c2hvcnRfZWx0KHZvaWQpCnsKIyAxNjEg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFu
c19lbHRfM2ZfdGFiWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfM19HTHVzaG9ydF8zZl9lbHQ7
CgoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbM11bKCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc18z
X0dMdXNob3J0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlszXVsoKDB4MTQwMykg
JiAweGYpXSA9IHRyYW5zXzNfR0x1c2hvcnRfNGZfZWx0OwoKCn0KIyA2MzggInRyYW5zbGF0ZS5j
IiAyCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQoj
IDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IHRyYW5zXzJfR0x1c2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg
c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj
b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg
Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK
ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx
KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp
cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAo
R0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICgyID49IDIpIHRb
aV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICgy
ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAgICAg
ICAgIGlmICgyID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbM10p
ICk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9lbHQodm9pZCkKewoj
IDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFu
c19lbHRfNGZfdGFiWzJdWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMl9HTHVzaG9ydF80Zl9l
bHQ7CgoKfQojIDY0MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNob3J0XzRmX2VsdCggR0xm
bG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50
X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQg
KmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg
c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop
IGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAg
R0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0g
c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo
KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg
ICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzBd
KSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9y
dCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAo
KChHTHVzaG9ydCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMSA9PSA0KSB0W2ldWzNdID0gKEdM
ZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDEwOCAiLi4v
Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18x
X0dMdXNob3J0XzF1Yl9lbHQoIEdMdWJ5dGUgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1
aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5
dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVi
eXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBm
aXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBp
ZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNb
aV0gKiBzdHJpZGU7OwogICAgICAgICAgdFtpXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm
KVswXSkgPj4gOCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNo
b3J0XzF1aV9lbHQoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZs
YWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikK
ewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9
IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp
cnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoK
ICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZs
YWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBz
dHJpZGU7OwogICAgICAgICB0W2ldID0gKEdMdWludCkgKCgoR0x1c2hvcnQgKilmKVswXSk7CiAg
ICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTHVzaG9ydF9lbHQodm9p
ZCkKewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwMykgJiAweGYpXSA9IHRy
YW5zXzFfR0x1c2hvcnRfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWJfdGFiWygo
MHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMV9HTHVzaG9ydF8xdWJfZWx0OwojIDE2OCAiLi4vLi4v
Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFi
WzFdWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMV9HTHVzaG9ydF80Zl9lbHQ7CgoKfQojIDY1
MCAidHJhbnNsYXRlLmMiIDIKIyA2NzMgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4
dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xpbnRfNGZfZWx0KCBHTGZs
b2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRf
YXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAq
ZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBz
dHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikg
ZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBH
THVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBz
dGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gp
ID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAg
ICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbMF0pICk7
CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilb
MV0pICk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMaW50
ICopZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgo
KEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJh
cy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGludF80dWJfZWx0
KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf
Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywg
R0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg
R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1
Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9
IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9y
IChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ld
Jm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7
OwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/
IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgICAgIGlmICg0
ID49IDIpIHRbaV1bMV0gPSAoKCgoR0xpbnQgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAo
KCgoR0xpbnQgKilmKVsxXSkgPj4gMjMpKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9
ICgoKChHTGludCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTGludCAqKWYpWzJd
KSA+PiAyMykpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKCgoKEdMaW50ICopZilb
M10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbM10pID4+IDIzKSk7IGVsc2Ug
dFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9N
ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc180X0dMaW50X2VsdCh2
b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAg
IGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfNF9HTGlu
dF80dWJfZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbNF1bKCgweDE0MDQpICYgMHhmKV0g
PSB0cmFuc180X0dMaW50XzRmX2VsdDsKCgp9CiMgNjc0ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgoj
IDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8u
Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzNf
R0xpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWlu
dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl
ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0
ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0
YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlm
ICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tp
XSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgo
KEdMaW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0xmbG9h
dCkoICgoKEdMaW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAo
R0xmbG9hdCkoICgoKEdMaW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1b
M10gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CgoKCgpz
dGF0aWMgdm9pZCB0cmFuc18zX0dMaW50XzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwg
R0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRl
QjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJp
ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBm
aXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo
dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg
ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYg
KiAoKCgoR0xpbnQgKilmKVswXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAg
ICAgICAgIHRbaV1bMV0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilmKVsxXSkpICsgMS4wRikgKiAo
MS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xp
bnQgKilmKVsyXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgIH0KICAg
fQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xpbnRfNHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRd
LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJv
bSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1
aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm
cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy
ICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsK
ICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8
IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkg
ewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMg
Pj0gMSkgdFtpXVswXSA9ICgoKChHTGludCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo
KChHTGludCAqKWYpWzBdKSA+PiAyMykpOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0g
KCgoKEdMaW50ICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMV0p
ID4+IDIzKSk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xpbnQgKilmKVsy
XSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVsyXSkgPj4gMjMpKTsKICAgICAg
ICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9ICgoKChHTGludCAqKWYpWzNdKSA8IDAgPyAwIDogKEdM
dWJ5dGUpICgoKChHTGludCAqKWYpWzNdKSA+PiAyMykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAg
ICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1w
LmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGludF9lbHQodm9pZCkKewojIDE2MSAiLi4v
Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICA7CiAgIGdsX3RyYW5zX2Vs
dF8zZl90YWJbKCgweDE0MDQpICYgMHhmKV0gPSB0cmFuc18zX0dMaW50XzNmX2VsdDsKCgogICBn
bF90cmFuc19lbHRfNHViX3RhYlszXVsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5zXzNfR0xpbnRf
NHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDA0KSAmIDB4ZildID0g
dHJhbnNfM19HTGludF80Zl9lbHQ7CgoKfQojIDY4MSAidHJhbnNsYXRlLmMiIDIKCgoKCiMgMSAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u
Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9HTGlu
dF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm
bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p
CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg
PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm
aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7
CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm
bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog
c3RyaWRlOzsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xp
bnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSgg
KCgoR0xpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9IChHTGZs
b2F0KSggKCgoR0xpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9
IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90
cmFuc18yX0dMaW50X2VsdCh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbMl1bKCgweDE0MDQpICYgMHhm
KV0gPSB0cmFuc18yX0dMaW50XzRmX2VsdDsKCgp9CiMgNjg2ICJ0cmFuc2xhdGUuYyIgMgoKCgoK
CgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIu
Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5z
XzFfR0xpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdM
dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi
eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1
Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQp
IHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAg
IGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0
c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCko
ICgoKEdMaW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoR0xm
bG9hdCkoICgoKEdMaW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMpIHRbaV1bMl0g
PSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgxID09IDQpIHRb
aV1bM10gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMg
MTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IHRyYW5zXzFfR0xpbnRfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0
LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3Qg
R0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv
aWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAg
ICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsg
ZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICB0W2ldID0gKCgoKEdMaW50ICopZilbMF0pIDwg
MCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgIH0KICAg
fQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMaW50XzF1aV9lbHQoIEdMdWludCAqdCwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBt
YXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+
U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAg
KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2
b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7
IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAg
ICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICB0W2ldID0gKCgo
KEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1aW50KSAoKChHTGludCAqKWYpWzBdKSk7CiAg
ICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTGludF9lbHQodm9pZCkK
ewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5z
XzFfR0xpbnRfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWJfdGFiWygoMHgxNDA0
KSAmIDB4ZildID0gdHJhbnNfMV9HTGludF8xdWJfZWx0OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFiWzFdWygoMHgx
NDA0KSAmIDB4ZildID0gdHJhbnNfMV9HTGludF80Zl9lbHQ7CgoKfQojIDY5MyAidHJhbnNsYXRl
LmMiIDIKIyA3MTcgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny
Yy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf
dG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1aW50XzRmX2VsdCggR0xmbG9hdCAoKnQpWzRd
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWlu
dCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv
bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr
IDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog
ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg
biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7
CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoNCA+
PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVswXSkgKTsKICAgICAgICAg
aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMV0pICk7CiAg
ICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzJd
KSApOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQg
KilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMdWludF80dWJfZWx0KCBHTHVi
eXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50
X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50
ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50
IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq
KSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg
IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g
c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo
KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg
ICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVswXSkg
Pj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdMdWJ5dGUpICgoKChHTHVp
bnQgKilmKVsxXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMdWJ5
dGUpICgoKChHTHVpbnQgKilmKVsyXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ld
WzNdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVszXSkgPj4gMjQpOyBlbHNlIHRbaV1bM10g
PSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTHVpbnRfZWx0KHZvaWQpCnsK
IyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJh
bnNfZWx0XzR1Yl90YWJbNF1bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFuc180X0dMdWludF80dWJf
ZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbNF1bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFu
c180X0dMdWludF80Zl9lbHQ7CgoKfQojIDcxOCAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIu
Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v
Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMdWlu
dF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm
bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p
CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg
PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm
aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7
CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm
bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog
c3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1
aW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCko
ICgoKEdMdWludCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdM
ZmxvYXQpKCAoKChHTHVpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVsz
XSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CgoKCgpz
dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF8zZl9lbHQoIEdMZmxvYXQgKCp0KVszXSwKICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gs
IEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlk
ZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3Ry
aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkg
Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywg
KHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAg
IGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICB0W2ldWzBdID0gKChHTGZs
b2F0KSAoKCgoR0x1aW50ICopZilbMF0pKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOwogICAg
ICAgICB0W2ldWzFdID0gKChHTGZsb2F0KSAoKCgoR0x1aW50ICopZilbMV0pKSAqICgxLjBGIC8g
NDI5NDk2NzI5NS4wRikpOwogICAgICAgICB0W2ldWzJdID0gKChHTGZsb2F0KSAoKCgoR0x1aW50
ICopZilbMl0pKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpz
dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0sCiAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0
Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0
cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICog
c3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9p
ZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkr
KywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAg
ICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSB0
W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVswXSkgPj4gMjQpOwogICAgICAgICBp
ZiAoMyA+PSAyKSB0W2ldWzFdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsxXSkgPj4gMjQp
OwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilm
KVsyXSkgPj4gMjQpOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgo
KChHTHVpbnQgKilmKVszXSkgPj4gMjQpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAg
fQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp
YyB2b2lkIGluaXRfdHJhbnNfM19HTHVpbnRfZWx0KHZvaWQpCnsKIyAxNjEgIi4uLy4uLy4uLy4u
L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFuc19lbHRfM2ZfdGFi
WygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfM2ZfZWx0OwoKCiAgIGdsX3RyYW5z
X2VsdF80dWJfdGFiWzNdWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfNHViX2Vs
dDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNf
M19HTHVpbnRfNGZfZWx0OwoKCn0KIyA3MjUgInRyYW5zbGF0ZS5jIiAyCgoKCgojIDEgIi4uLy4u
Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9l
eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzJfR0x1aW50XzRm
X2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg
Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz
LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog
ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH
THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0
ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAg
Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz
W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp
ZGU7OwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQg
KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo
R0x1aW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h
dCkoICgoKEdMdWludCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0g
KEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u
Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90
cmFuc18yX0dMdWludF9lbHQodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev
c3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDA1KSAmIDB4
ZildID0gdHJhbnNfMl9HTHVpbnRfNGZfZWx0OwoKCn0KIyA3MzAgInRyYW5zbGF0ZS5jIiAyCgoK
CgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcg
Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJh
bnNfMV9HTHVpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg
IEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQs
IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH
THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3Qg
R0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZv
aWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAg
ICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsg
ZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAoR0xmbG9h
dCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0g
KEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMykgdFtp
XVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgxID09
IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzNdKSApOwogICAgICB9CiAg
IH0KfQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0
aWMgdm9pZCB0cmFuc18xX0dMdWludF8xdWJfZWx0KCBHTHVieXRlICp0LAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVp
bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog
ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsK
ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0
OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lk
KTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0g
Zmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgIHRbaV0gPSAoR0x1Ynl0ZSkgKCgo
KEdMdWludCAqKWYpWzBdKSA+PiAyNCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0
cmFuc18xX0dMdWludF8xdWlfZWx0KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwg
R0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdM
dWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBH
THVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lk
KSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAg
ICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBl
bHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtpXSA9ICgoKEdMdWludCAqKWYpWzBdKTsKICAg
ICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dMdWludF9lbHQodm9pZCkK
ewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwNSkgJiAweGYpXSA9IHRyYW5z
XzFfR0x1aW50XzF1aV9lbHQ7CgoKICAgOwogICBnbF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQw
NSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1aW50XzF1Yl9lbHQ7CiMgMTY4ICIuLi8uLi8uLi8uLi9l
eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbMV1bKCgw
eDE0MDUpICYgMHhmKV0gPSB0cmFuc18xX0dMdWludF80Zl9lbHQ7CgoKfQojIDczNyAidHJhbnNs
YXRlLmMiIDIKIyA3NjAgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh
L3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xkb3VibGVfNGZfZWx0KCBHTGZsb2F0ICgq
dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg
R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg
PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+
UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg
aTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7
IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4
MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlm
ICg0ID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDQg
Pj0gMikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoNCA+PSAz
KSB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICg0ID09IDQpIHRb
aV1bM10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4v
Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dM
ZG91YmxlXzR1Yl9lbHQoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBH
THVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1
Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdM
dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp
IGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAg
IGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0
c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIGRvIHsgdW5pb24geyBHTGZsb2F0
IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsgdFtpXVsw
XSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0
ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3
NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAy
KSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xk
b3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGlu
dCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5y
KigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgw
KTsKICAgICAgICAgaWYgKDQgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7
IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMl0pOyB0W2ldWzJdID0gKCh0bXAuaSA+
PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0
ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdMdWJ5
dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICg0ID09IDQpIGRvIHsgdW5pb24g
eyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzNd
KTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkg
PyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYu
MEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1b
M10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z
cmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTGRvdWJsZV9lbHQodm9p
ZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBn
bF90cmFuc19lbHRfNHViX3RhYls0XVsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzRfR0xkb3Vi
bGVfNHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzRdWygoMHgxNDBBKSAmIDB4Zild
ID0gdHJhbnNfNF9HTGRvdWJsZV80Zl9lbHQ7CgoKfQojIDc2MSAidHJhbnNsYXRlLmMiIDIKCgoK
CgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAi
Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFu
c18zX0dMZG91YmxlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0
LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3Qg
R0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0
IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2
b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewog
ICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCAr
IGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKCgoR0xk
b3VibGUgKilmKVswXSk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTGRvdWJs
ZSAqKWYpWzFdKTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9ICgoKEdMZG91YmxlICop
ZilbMl0pOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3VibGUgKilmKVsz
XSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZG91YmxlXzNmX2Vs
dCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf
Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBH
THVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBH
THVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVi
eXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0g
ZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3Ig
KGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0m
bWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7
CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgdFtpXVsx
XSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICB0W2ldWzJdID0gKCgoR0xkb3VibGUg
KilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVf
NHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq
ZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBu
KQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpm
ID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq
Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7
CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm
bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog
c3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1
aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMF0pOyB0W2ldWzBdID0gKCh0
bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAo
R0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwg
KEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICgzID49IDIpIGRvIHsg
dW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAq
KWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5p
IDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4w
Ri8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAg
ICAgICBpZiAoMyA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7
IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVsyXSk7IHRbaV1bMl0gPSAoKHRtcC5pID49IDB4M2Y3
ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6
ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAu
aSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPT0gNCkgZG8geyB1bmlvbiB7IEdMZmxv
YXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbM10pOyB0W2ld
WzNdID0gKCh0bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVi
eXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAz
Mjc2OC4wRiwgKEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7IGVsc2UgdFtpXVszXSA9IDI1
NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu
c190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMZG91YmxlX2VsdCh2b2lkKQp7CiMg
MTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xf
dHJhbnNfZWx0XzNmX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzNfR0xkb3VibGVfM2Zf
ZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzNdWygoMHgxNDBBKSAmIDB4ZildID0gdHJh
bnNfM19HTGRvdWJsZV80dWJfZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbM11bKCgweDE0
MEEpICYgMHhmKV0gPSB0cmFuc18zX0dMZG91YmxlXzRmX2VsdDsKCgp9CiMgNzY4ICJ0cmFuc2xh
dGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg
dm9pZCB0cmFuc18yX0dMZG91YmxlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK
ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7
CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmly
c3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZv
aWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYg
PSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBd
ID0gKCgoR0xkb3VibGUgKilmKVswXSk7CiAgICAgICAgIGlmICgyID49IDIpIHRbaV1bMV0gPSAo
KChHTGRvdWJsZSAqKWYpWzFdKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9ICgoKEdM
ZG91YmxlICopZilbMl0pOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3Vi
bGUgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9HTGRvdWJsZV9lbHQo
dm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog
ICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDBBKSAmIDB4ZildID0gdHJhbnNfMl9HTGRv
dWJsZV80Zl9lbHQ7CgoKfQojIDc3MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8u
Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0
cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMZG91YmxlXzRm
X2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg
Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz
LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog
ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH
THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0
ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAg
Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz
W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp
ZGU7OwogICAgICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKCgoR0xkb3VibGUgKilmKVswXSk7
CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChHTGRvdWJsZSAqKWYpWzFdKTsKICAg
ICAgICAgaWYgKDEgPj0gMykgdFtpXVsyXSA9ICgoKEdMZG91YmxlICopZilbMl0pOwogICAgICAg
ICBpZiAoMSA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3VibGUgKilmKVszXSk7CiAgICAgIH0KICAg
fQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp
YyB2b2lkIHRyYW5zXzFfR0xkb3VibGVfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1
aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK
ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7
CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFy
dDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9p
ZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9
IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9h
dCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVswXSk7IHRbaV0g
PSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUp
MCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4
LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgfQogICB9Cn0KCgoKCnN0
YXRpYyB2b2lkIHRyYW5zXzFfR0xkb3VibGVfMXVpX2VsdCggR0x1aW50ICp0LAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBH
THVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVC
OwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlk
ZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0
YXJ0OwogICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo
dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg
ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV0gPSAoR0x1aW50KSAo
R0xpbnQpICgoKEdMZG91YmxlICopZilbMF0pOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9p
ZCBpbml0X3RyYW5zXzFfR0xkb3VibGVfZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0
XzF1aV90YWJbKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91YmxlXzF1aV9lbHQ7CgoK
ICAgOwogICBnbF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzFf
R0xkb3VibGVfMXViX2VsdDsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu
c190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsxXVsoKDB4MTQwQSkgJiAweGYpXSA9IHRy
YW5zXzFfR0xkb3VibGVfNGZfZWx0OwoKCn0KIyA3ODAgInRyYW5zbGF0ZS5jIiAyCiMgNzkyICJ0
cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg
dm9pZCB0cmFuc180X0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVp
bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog
ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsK
ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJz
dDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9p
ZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9
IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0g
PSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgo
R0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKEdMZmxv
YXQgKilmKVsyXSk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoKChHTGZsb2F0ICop
ZilbM10pOwogICAgICB9CiAgIH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv
dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xmbG9hdF80dWJfZWx0KCBHTHVieXRl
ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2Fy
cmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICpl
bHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0
cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm
cm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM
dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3Rh
cnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9
PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAg
ICBpZiAoNCA+PSAxKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRt
cC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAw
MCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRt
cC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7
IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCBy
OyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsgdFtpXVsxXSA9
ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkw
IDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3Njgu
MEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAzKSBk
byB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9h
dCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRt
cC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1
NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwog
ICAgICAgICBpZiAoNCA9PSA0KSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0
bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgz
ZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1
IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRt
cC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMg
MTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk
IGluaXRfdHJhbnNfNF9HTGZsb2F0X2VsdCh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRy
YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgx
NDA2KSAmIDB4ZildID0gdHJhbnNfNF9HTGZsb2F0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0
XzRmX3RhYls0XVsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzRfR0xmbG9hdF80Zl9lbHQ7CgoK
fQojIDc5MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz
YS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry
YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgq
dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg
KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg
R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg
PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+
UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg
aTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7
IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4
MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlm
ICgzID49IDEpIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoMyA+
PSAyKSB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDMgPj0gMykg
dFtpXVsyXSA9ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1b
M10gPSAoKChHTGZsb2F0ICopZilbM10pOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQg
dHJhbnNfM19HTGZsb2F0XzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0
YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u
c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNv
bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAg
KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7
CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0
ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilb
MF0pOwogICAgICAgICB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgdFtp
XVsyXSA9ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lk
IHRyYW5zXzNfR0xmbG9hdF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWlu
dCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAg
IGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwog
ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7
CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQp
MSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBm
aXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSBkbyB7IHVuaW9u
IHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzBd
KTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkg
PyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYu
MEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBp
ZiAoMyA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5y
ID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkg
PyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5y
ID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0g
d2hpbGUgKDApOwogICAgICAgICBpZiAoMyA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBH
THVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgo
dG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDog
KEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYs
IChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoMyA9PSA0KSBkbyB7
IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAq
KWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5p
IDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4w
Ri8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNl
IHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMv
TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGZsb2F0X2Vs
dCh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi
CiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNmX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzNf
R0xmbG9hdF8zZl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbM11bKCgweDE0MDYpICYg
MHhmKV0gPSB0cmFuc18zX0dMZmxvYXRfNHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFi
WzNdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfM19HTGZsb2F0XzRmX2VsdDsKCgp9CiMgODAw
ICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh
bnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1h
dGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T
dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAq
IHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2
b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsg
aSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAg
ICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgyID49IDEp
IHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ld
WzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9
ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1bM10gPSAoKChH
TGZsb2F0ICopZilbM10pOwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFz
L01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xmbG9hdF9l
bHQodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o
IgogICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMl9H
TGZsb2F0XzRmX2VsdDsKCgp9CiMgODA1ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4u
Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9l
eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0xmbG9hdF8z
Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0
IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFn
cywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsK
ICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAo
R0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJz
dCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAg
IGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFn
c1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3Ry
aWRlOzsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7
CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICopZilbMV0pOwogICAg
ICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAg
aWYgKDEgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9
CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2
b2lkIHRyYW5zXzFfR0xmbG9hdF8xdWJfZWx0KCBHTHVieXRlICp0LAogICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg
c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj
b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg
Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0Owog
ICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEp
IHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmly
c3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7
IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGZsb2F0ICopZilbMF0pOyB0W2ldID0gKCh0
bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAo
R0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwg
KEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMg
dm9pZCB0cmFuc18xX0dMZmxvYXRfMXVpX2VsdCggR0x1aW50ICp0LAogICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg
c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj
b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg
Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0Owog
ICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx
KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp
cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV0gPSAoR0x1aW50KSAoR0xpbnQp
ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRf
dHJhbnNfMV9HTGZsb2F0X2VsdCh2b2lkKQp7CgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWlfdGFi
WygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMV9HTGZsb2F0XzF1aV9lbHQ7CgoKICAgOwogICBn
bF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8x
dWJfZWx0OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog
ICBnbF90cmFuc19lbHRfNGZfdGFiWzFdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMV9HTGZs
b2F0XzNmX2VsdDsKCgp9CiMgODEyICJ0cmFuc2xhdGUuYyIgMgojIDgyMSAidHJhbnNsYXRlLmMi
CnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1Ynl0ZV80dWIoR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZy
b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50
ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4gKQp7CiAgIEdMdWlu
dCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUg
KikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog
ICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICBpZiAoKCgoKGxvbmcpIGYgfCAobG9uZykg
c3RyaWRlKSkgJiAzTCkgPT0gMEwpIHsKCgogICAgICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsg
aSsrLCAodm9pZCkxKSB7CiAgICAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsK
ICAgICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICAgIGRv
IHsgKigoR0x1aW50KikodFtpXSkpID0gKigoR0x1aW50KikoZikpOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgfQogICAgICB9CiAgIH0gZWxzZSB7CiAgICAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4g
OyBpKyssICh2b2lkKTEpIHsKICAgICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkg
ewogICAgICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgICAg
dFtpXVswXSA9IGZbMF07CiAgICAgICAgICAgIHRbaV1bMV0gPSBmWzFdOwogICAgICAgICAgICB0
W2ldWzJdID0gZlsyXTsKICAgICAgICAgICAgdFtpXVszXSA9IGZbM107CiAgICAgICAgIH0KICAg
ICAgfQogICB9Cn0KCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zbGF0ZV9lbHQodm9pZCkKewogICBt
ZW1zZXQoICh2b2lkICopIChnbF90cmFuc19lbHRfMXVpX3RhYiksIChpbnQpICgwKSwgKHNpemVf
dCkgKHNpemVvZihnbF90cmFuc19lbHRfMXVpX3RhYikpICk7CiAgIG1lbXNldCggKHZvaWQgKikg
KGdsX3RyYW5zX2VsdF8xdWJfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90KSAoc2l6ZW9mKGdsX3Ry
YW5zX2VsdF8xdWJfdGFiKSkgKTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfZWx0XzNm
X3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVvZihnbF90cmFuc19lbHRfM2ZfdGFiKSkg
KTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfZWx0XzR1Yl90YWIpLCAoaW50KSAoMCks
IChzaXplX3QpIChzaXplb2YoZ2xfdHJhbnNfZWx0XzR1Yl90YWIpKSApOwogICBtZW1zZXQoICh2
b2lkICopIChnbF90cmFuc19lbHRfNGZfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90KSAoc2l6ZW9m
KGdsX3RyYW5zX2VsdF80Zl90YWIpKSApOwoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbNF1bKCgw
eDE0MDEpICYgMHhmKV0gPSB0cmFuc180X0dMdWJ5dGVfNHViOwoKICAgaW5pdF90cmFuc180X0dM
Ynl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18zX0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18y
X0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18xX0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFu
c18xX0dMdWJ5dGVfZWx0KCk7CiAgIGluaXRfdHJhbnNfM19HTHVieXRlX2VsdCgpOwogICBpbml0
X3RyYW5zXzRfR0xzaG9ydF9lbHQoKTsKICAgaW5pdF90cmFuc18zX0dMc2hvcnRfZWx0KCk7CiAg
IGluaXRfdHJhbnNfMl9HTHNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzFfR0xzaG9ydF9lbHQo
KTsKICAgaW5pdF90cmFuc180X0dMdXNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzNfR0x1c2hv
cnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9lbHQoKTsKICAgaW5pdF90cmFuc18x
X0dMdXNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzRfR0xpbnRfZWx0KCk7CiAgIGluaXRfdHJh
bnNfM19HTGludF9lbHQoKTsKICAgaW5pdF90cmFuc18yX0dMaW50X2VsdCgpOwogICBpbml0X3Ry
YW5zXzFfR0xpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfNF9HTHVpbnRfZWx0KCk7CiAgIGluaXRf
dHJhbnNfM19HTHVpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVpbnRfZWx0KCk7CiAgIGlu
aXRfdHJhbnNfMV9HTHVpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfNF9HTGRvdWJsZV9lbHQoKTsK
ICAgaW5pdF90cmFuc18zX0dMZG91YmxlX2VsdCgpOwogICBpbml0X3RyYW5zXzJfR0xkb3VibGVf
ZWx0KCk7CiAgIGluaXRfdHJhbnNfMV9HTGRvdWJsZV9lbHQoKTsKICAgaW5pdF90cmFuc180X0dM
ZmxvYXRfZWx0KCk7CiAgIGluaXRfdHJhbnNfM19HTGZsb2F0X2VsdCgpOwogICBpbml0X3RyYW5z
XzJfR0xmbG9hdF9lbHQoKTsKICAgaW5pdF90cmFuc18xX0dMZmxvYXRfZWx0KCk7Cn0KIyA5MDUg
InRyYW5zbGF0ZS5jIgp2b2lkIGdsX2luaXRfdHJhbnNsYXRlKCB2b2lkICkKewogICBpbml0X3Ry
YW5zbGF0ZV9yYXcoKTsKICAgaW5pdF90cmFuc2xhdGVfZWx0KCk7Cn0K


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-10-10 18:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-10 11:30 c/7200: Can't compile XFree86-4.2.0 with gcc 3.1 hubicka
  -- strict thread matches above, loose matches on Subject: below --
2002-07-15  2:36 Maxim Sobolev
2002-07-15  2:26 Reichelt
2002-07-03  9:56 sobomax

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).