<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>65624</bug_id>
          
          <creation_ts>2004-09-27 20:07 0000</creation_ts>
          <short_desc>Emerge of gcc-3.4.2-r2 gives internal compiler error: Illegal instruction</short_desc>
          <delta_ts>2004-10-10 07:33:20 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Core system</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>lars@ioflux.net</reporter>
          <assigned_to>docs-team@gentoo.org</assigned_to>
          <cc>Sebastian@SSpaeth.de</cc>

      

      
          <long_desc isprivate="0">
            <who>lars@ioflux.net</who>
            <bug_when>2004-09-27 20:07:08 0000</bug_when>
            <thetext>I did an emerge -uD world and got this from gcc-3.4.2-r2 (paste from first apparent error):

( nm -pg libgcc/./_floatdidf.o | gawk &apos;NF == 3 &amp;&amp; $2 !~ /^[UN]$/ { print &quot;\t.hidden&quot;, $3 }&apos;; cat libgcc//stacknote.s ) | /var/tmp/portage/gcc-3.4.2-r2/work/build/gcc/xgcc -B/var/tmp/portage/gcc-3.4.2-r2/work/build/gcc/ -B/usr/i586-pc-linux-gnu/bin/ -B/usr/i586-pc-linux-gnu/lib/ -isystem /usr/i586-pc-linux-gnu/include -isystem /usr/i586-pc-linux-gnu/sys-include -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -DHAVE_SYSLOG -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -D_LIBC_PROVIDES_SSP_  -r -nostdinc -nostdlib -o libgcc/./_floatdidf.oS libgcc/./_floatdidf.o -xassembler -
/var/tmp/portage/gcc-3.4.2-r2/work/build/gcc/xgcc -B/var/tmp/portage/gcc-3.4.2-r2/work/build/gcc/ -B/usr/i586-pc-linux-gnu/bin/ -B/usr/i586-pc-linux-gnu/lib/ -isystem /usr/i586-pc-linux-gnu/include -isystem /usr/i586-pc-linux-gnu/sys-include -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -DHAVE_SYSLOG -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -D_LIBC_PROVIDES_SSP_ -I. -I. -I/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc -I/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc/. -I/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc/../include   -DL_floatdisf -c /var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc/libgcc2.c -o libgcc/./_floatdisf.o
/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc/libgcc2.c: In function `__floatdisf&apos;:
/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/gcc/libgcc2.c:1342: internal compiler error: Illegal instruction
Please submit a full bug report,
with preprocessed source if appropriate.
See &lt;URL:http://bugs.gentoo.org/&gt; for instructions.
Preprocessed source stored into /var/tmp/portage/gcc-3.4.2-r2/temp/ccsynhkD.out file, please attach this to your bugreport.
make[2]: *** [libgcc/./_floatdisf.o] Error 1
make[2]: Leaving directory `/var/tmp/portage/gcc-3.4.2-r2/work/build/gcc&apos;
make[1]: *** [libgcc.a] Error 2
make[1]: Leaving directory `/var/tmp/portage/gcc-3.4.2-r2/work/build/gcc&apos;
make: *** [all-gcc] Error 2

!!! ERROR: sys-devel/gcc-3.4.2-r2 failed.
!!! Function gcc_do_make, Line 916, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.




Reproducible: Always
Steps to Reproduce:




Portage 2.0.51_rc6 (default-x86-1.4, gcc-3.3.4, glibc-2.3.4.20040808-r0,
2.6.7-gentoo-r10 i686)
=================================================================
System uname: 2.6.7-gentoo-r10 i686 VIA Nehemiah
Gentoo Base System version 1.5.3
distcc 2.17 i586-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled]
ccache version 2.3 [enabled]
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
Binutils: sys-devel/binutils-2.15.90.0.1.1-r3
Headers:  sys-kernel/linux-headers-2.4.22,sys-kernel/linux-headers-2.4.19-r1
Libtools: sys-devel/libtool-1.5.2-r5
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
AUTOCLEAN=&quot;yes&quot;
CFLAGS=&quot;-mcpu=c3 -march=c3 -msse -mmmx -mfpmath=sse -O2 -pipe -fomit-frame-pointer&quot;
CHOST=&quot;i586-pc-linux-gnu&quot;
COMPILER=&quot;&quot;
CONFIG_PROTECT=&quot;/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3/share/config /usr/share/config /var/bind /var/qmail/alias
/var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot;
CXXFLAGS=&quot;-mcpu=c3 -march=c3 -msse -mmmx -mfpmath=sse -O2 -pipe
-fomit-frame-pointer&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoaddcvs ccache distcc distlocks sandbox&quot;
GENTOO_MIRRORS=&quot;http://trumpetti.atm.tut.fi/gentoo/ http://ftp.gentoo.skynet.be/
http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo&quot;
MAKEOPTS=&quot;-j7&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/usr/local/portage&quot;
SYNC=&quot;rsync://rsync.europe.gentoo.org/gentoo-portage&quot;
USE=&quot;alsa apache2 avi berkdb bitmap-fonts bzlib calendar crypt cups curl
curlwrappers dba encode esd exif firebird foomaticdb ftp gd gdbm gif gmp gpm gtk
gtk2 imap imlib inifile interbase java jpeg libwww mad maildir mcal mhash mime
mmx motif mpeg mysql ncurses nls oggvorbis opengl oss pam pcre pdflib perl png
python qt readline session sharedmem simplexml slang snmp soap sockets sqlite
sse ssl svga tcltk tcpd tokenizer truetype usb wddx x86 xml xml2 xmlrpc xmms
xprint xsl zlib&quot;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lars@ioflux.net</who>
            <bug_when>2004-09-27 20:09:35 0000</bug_when>
            <thetext>Created an attachment (id=40578)
ccsynhkD.out

The error said to send this file along with the bug report!</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sebastian@SSpaeth.de</who>
            <bug_when>2004-09-30 05:25:00 0000</bug_when>
            <thetext>I can confirm this bug. I get the same &quot;crash&quot; on a Nehemica C3 processor
.../gcc-3.4.2-r2/work/gcc-3.4.2/gcc/libgcc2.c: In function `__floatdisf&apos;:
.../gcc-3.4.2-r2/work/gcc-3.4.2/gcc/libgcc2.c:1342: internal compiler error: illegal instruction

uname: Linux 2.6.4-rc1 i686 VIA Nehemiah CentaurHauls GNU/Linux

If needed I can post the crash .out file.

FYI: Old C3 CPUs did not have the CMOV instruction, so a i686 compilation would crash because of that. Newer C3 CPUS, such as the Nehemiah do have the CMOV instruction, so it shouldn&apos;t be because of this. I&apos;ll check some gcc bug sites and report back if I find anything interesting.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sebastian@SSpaeth.de</who>
            <bug_when>2004-09-30 05:39:15 0000</bug_when>
            <thetext>I saw that we both have the newer Nehemiah core but use march/mcpu=c3. This might be the culprit.

A post (admittedly from Feb 2003) from Dave Jones states that:
&quot;The Nehemiah (model 9) core of the VIA C3 is significantly different
from the earlier C3s. It now has cmov (so we can generate i686
code for it now), and it dropped 3dnow, and implements SSE instead.
This means that the existing -march=c3 will generate code that the
C3-2 cannot run (and vice versa)&quot;
&lt;http://gcc.gnu.org/ml/gcc-patches/2003-02/msg00653.html&gt;

So it might simply be that we need a different mcpu/march option. This VIA site suggests to use mcpu/march i696 for a Via Nehemiah: &lt;http://www.viaarena.com/Default.aspx?PageID=5&amp;ArticleID=61&gt;

I am compiling gcc with mcpu=i686 right now and will report back if that fails as well. Otherwise we would simply need to include in some documentation (handbook, make.conf.example ?) that Nehemiah and newer C3 CPUs should use i686 as a target. (A C3-2 option was discussed but hasn&apos;t been implemented so far).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lv@gentoo.org</who>
            <bug_when>2004-10-02 17:26:56 0000</bug_when>
            <thetext>so... did that do it?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>staff@tektronic.org</who>
            <bug_when>2004-10-03 09:14:11 0000</bug_when>
            <thetext>/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/libiberty/cplus-dem.c: In function 
`demangle_qualified&apos;:
/var/tmp/portage/gcc-3.4.2-r2/work/gcc-3.4.2/libiberty/cplus-dem.c:3310: warning
: implicit declaration of function `atoi&apos;
make[1]: *** [cplus-dem.o] Error 1
make[1]: Leaving directory `/var/tmp/portage/gcc-3.4.2-r2/work/build/i686-pc-lin
ux-gnu/libiberty&apos;
make: *** [all-target-libiberty] Error 2

!!! ERROR: sys-devel/gcc-3.4.2-r2 failed.
!!! Function gcc_do_make, Line 916, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message. 


# emerge info
Portage 2.0.51_rc7 (default-x86-2004.2, gcc-3.3.3, glibc-2.3.3.20040420-r0, 2.6.9-rc3 i686)
=================================================================
System uname: 2.6.9-rc3 i686 Pentium II (Deschutes)
Gentoo Base System version 1.5.3
distcc 2.17 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled]
ccache version 2.3 [enabled]
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
Binutils: sys-devel/binutils-2.15.90.0.1.1-r3
Headers:  sys-kernel/linux-headers-2.4.22
Libtools: sys-devel/libtool-1.5.2-r5
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
AUTOCLEAN=&quot;yes&quot;
CFLAGS=&quot;-march=pentium2 -O3 -pipe -fomit-frame-pointer -funroll-loops -ftracer -ffast-math -fprefetch-loop-arrays&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
COMPILER=&quot;&quot;
CONFIG_PROTECT=&quot;/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot;
CXXFLAGS=&quot;-march=pentium2 -O3 -pipe -fomit-frame-pointer -funroll-loops -ftracer -ffast-math -fprefetch-loop-arrays&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoaddcvs ccache distcc distlocks fixpackages sandbox&quot;
GENTOO_MIRRORS=&quot;http://mirror.datapipe.net/gentoo/&quot;
MAKEOPTS=&quot;-j5&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;&quot;
USE=&quot;apm avi berkdb bitmap-fonts crypt cups encode foomaticdb gdbm gif gpm gtk gtk2 imap imlib jpeg libg++ libwww mad mikmod motif mpeg ncurses nls oggvorbis opengl oss pam pdflib perl png python quicktime readline sdl slang spell ssl svga tcpd truetype x86 xml2 xmms xprint xv zlib&quot;
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>Sebastian@SSpaeth.de</who>
            <bug_when>2004-10-04 00:45:20 0000</bug_when>
            <thetext>RE: comment #4 From Travis Tilley: so... did that do it?
Yes, setting -march i686 solved all my problems, it compiles like a charm.

So no bug involved here, the solution for newer Via C3 CPUs (&gt;Nehemiah) is simply to set -march=i686. It should still be recorded somewhere in the appropriate docs.

Jonathans issue from comment #5 seems unrelated to the issue reported here...
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>solar@gentoo.org</who>
            <bug_when>2004-10-04 09:48:01 0000</bug_when>
            <thetext>Ok then. toolchain is all done with this bug. 
Passing along to the docs team so it can be noted somewhere.

Swift/other. See comment #6</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>swift@gentoo.org</who>
            <bug_when>2004-10-10 07:33:20 0000</bug_when>
            <thetext>Oh come on, our docs don&apos;t inform users about -march=c3, if they choose this it means they got that from somewhere else. Locate the source and adjust that. 

Even our make.conf.example file doesn&apos;t list &quot;c3&quot;. Not that c3 is illegal or anything, I just feel that there are other locations where this should be put. </thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40578</attachid>
            <date>2004-09-27 20:09 0000</date>
            <desc>ccsynhkD.out</desc>
            <filename>ccsynhkD.out</filename>
            <type>text/plain</type>
            <data encoding="base64">Ly8gL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvY2MxIC1xdWll
dCAtSS4gLUkuIC1JL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIv
Z2NjIC1JL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjLy4g
LUkvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvLi4vaW5j
bHVkZSAtaXByZWZpeCAvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2dj
Yy8uLi8uLi8uLi9saWIvZ2NjL2k1ODYtcGMtbGludXgtZ251LzMuNC4yLyAtaXN5c3RlbSAvdmFy
L3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2djYy9pbmNsdWRlIC1pc3lzdGVt
IC91c3IvaTU4Ni1wYy1saW51eC1nbnUvYmluL2luY2x1ZGUgLWlzeXN0ZW0gL3Vzci9pNTg2LXBj
LWxpbnV4LWdudS9saWIvaW5jbHVkZSAtRElOX0dDQyAtREhBVkVfU1lTTE9HIC1ESEFWRV9HVEhS
X0RFRkFVTFQgLURJTl9MSUJHQ0MyIC1EX19HQ0NfRkxPQVRfTk9UX05FRURFRCAtRF9MSUJDX1BS
T1ZJREVTX1NTUF8gLURMX2Zsb2F0ZGlzZiAtaXN5c3RlbSAvdXNyL2k1ODYtcGMtbGludXgtZ251
L2luY2x1ZGUgLWlzeXN0ZW0gL3Vzci9pNTg2LXBjLWxpbnV4LWdudS9zeXMtaW5jbHVkZSAtaXN5
c3RlbSAuL2luY2x1ZGUgL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40
LjIvZ2NjL2xpYmdjYzIuYyAtbW5vLXNzZTIgLXF1aWV0IC1kdW1wYmFzZSBsaWJnY2MyLmMgLW10
dW5lPXBlbnRpdW0gLWF1eGJhc2Utc3RyaXAgbGliZ2NjLy4vX2Zsb2F0ZGlzZi5vIC1nIC1PMiAt
VyAtV2FsbCAtV3dyaXRlLXN0cmluZ3MgLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJv
dG90eXBlcyAtV29sZC1zdHlsZS1kZWZpbml0aW9uIC1mUElDIC1vIC0gLWZyYW5kb20tc2VlZD0w
CiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xp
YmdjYzIuYyIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2dj
Yy8vIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAiL3Zhci90bXAv
cG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuYyIKIyAzNSAi
L3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIu
YyIKIyAxICIuL2F1dG8taG9zdC5oIiAxCiMgMzYgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4y
LXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9saWJnY2MyLmMiIDIKCgoKCiMgMSAiLi90Y29uZmlnLmgi
IDEKCgoKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9n
Y2MvLi4vaW5jbHVkZS9hbnNpZGVjbC5oIiAxCiMgNSAiLi90Y29uZmlnLmgiIDIKIyA0MSAiL3Zh
ci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuYyIg
MgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90
c3lzdGVtLmgiIDEKIyA0NCAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2Mt
My40LjIvZ2NjL3RzeXN0ZW0uaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93
b3JrL2J1aWxkL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE1MSAiL3Zhci90bXAvcG9y
dGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5
cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAyMTMgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIy
L3dvcmsvYnVpbGQvZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBzaXplX3Q7CiMgMzI1ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxk
L2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDQ1
ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvdHN5c3Rl
bS5oIiAyCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2Mv
aW5jbHVkZS9mbG9hdC5oIiAxIDMgNAojIDQ2ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1y
Mi93b3JrL2djYy0zLjQuMi9nY2MvdHN5c3RlbS5oIiAyCiMgNzYgIi92YXIvdG1wL3BvcnRhZ2Uv
Z2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiCiMgMSAiL3Zhci90bXAv
cG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRhcmcuaCIgMSAz
IDQKIyA0MyAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5j
bHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xp
c3Q7CiMgMTA1ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2djYy9p
bmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDc3
ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvdHN5c3Rl
bS5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMgNAojIDI5
NiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2Rl
ZnMuaCIgMSAzIDQKIyAyOTcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDMxOSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMu
aCIgMSAzIDQKIyAzMjAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDI5ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMu
NC4yLXIyL3dvcmsvYnVpbGQvZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzUgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAyIDMgNAoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9n
Y2MvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9uZzsKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9f
aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBz
aG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90
Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vp
bnQzMl90OwoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9f
aW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191
aW50NjRfdDsKCgoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVh
ZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVh
ZF90OwojIDEyOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXNpemVzLmgiIDEgMyA0CiMgMTMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAyIDMgNAoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX2Rldl90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWlkX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19naWRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9faW5vX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9faW5vNjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm
IHVuc2lnbmVkIGludCBfX21vZGVfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX25saW5rX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGludCBfX29mZl90OwpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX29mZjY0X3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBpbnQgX19waWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7IGludCBf
X3ZhbFsyXTsgfSBfX2ZzaWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fY2xv
Y2tfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3JsaW02NF90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIGxvbmcgaW50IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQg
aW50IF9fdXNlY29uZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNv
bmRzX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFkZHJfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBf
X2tleV90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKX19leHRl
bnNpb25fXyB0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxv
bmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9f
YmxrY250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fYmxrY250NjRf
dDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudF90
OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2ZzYmxrY250
NjRfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2ZpbGNu
dF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2ZzZmls
Y250NjRfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19zc2l6ZV90OwoKCgp0eXBlZGVm
IF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Owp0eXBlZGVm
IGNoYXIgKl9fY2FkZHJfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9faW50cHRyX3Q7
CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKIyAzNyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19G
SUxFIEZJTEU7CgoKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMgNAojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzIDQKIyAxNCAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAzIDQKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93
b3JrL2J1aWxkL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM1NCAiL3Zhci90bXAvcG9y
dGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5
cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAxIDMgNAojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAi
L3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzIDQKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAy
IDMgNAojIDc2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hi
WzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMgNAoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3Qg
X19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzIDQK
IyAyOCAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAxIDMgNAojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAiL3Zhci90bXAvcG9y
dGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQK
IyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9nY29u
di5oIiAyIDMgNAoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWls
ZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMyA0CgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAg
X19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAg
X19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9J
TkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05W
X0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwK
ICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3Rl
cDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0
OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgd2lu
dF90ICgqX19nY29udl9idG93Y19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHVuc2lnbmVk
IGNoYXIpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n
Y29udl9zdGVwICosCiAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KiosCiAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAg
ICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAo
dm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgIF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqLAogICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25z
dCBjaGFyICoqKiwKICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5z
X2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29u
dl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoK
ICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRleHRf
ZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNf
ZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19u
ZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRf
b2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50
IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190b19uYW1lOwoKICBf
X2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2J0b3djX2ZjdCBfX2J0b3djX2ZjdDsKICBfX2dj
b252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoK
ICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBf
X21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVs
OwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5z
aWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAg
aW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2lu
dGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3Rh
dGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YSBfX2RhdGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMgNAp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3Ry
dWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYg
aW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk
ZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMyA0
CiMgMTYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1
Y3QgX0lPX0ZJTEU7CiMgMTczICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnR5cGVkZWYgdm9p
ZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtl
ciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTYg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewog
IF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAg
X19jb2RlY3Z0X25vY29udgp9OwojIDI2NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApzdHJ1
Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBj
aGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3Jp
dGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAg
Y2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2
ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7Cgog
IHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47
CgogIGludCBfZmlsZW5vOwoKCgogIGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0
OwoKCgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVf
b2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMx
MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAg
dm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVz
ZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVk
ZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0
ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9J
T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMg
X0lPXzJfMV9zdGRlcnJfOwojIDM1MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZv
aWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgIHNpemVfdCBfX24pOwoKCgoK
CgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpf
X3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29r
aWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlw
ZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9f
c2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29v
a2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAq
cmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19p
b19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBf
SU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBf
SU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lP
X2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19yZWFkX3dyaXRlLAogICAgICAgIHZvaWQgKl9f
Y29va2llLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBp
bnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklM
RSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3
aW50X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cg
KF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2lu
dF90KSA7CiMgNDQxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CmV4dGVybiBpbnQgX0lPX2dl
dGMgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19G
SUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVy
biBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtj
X2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApIDsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxl
IChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikg
OwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKIyA0NzEgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzIDQKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBf
X3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgX19nbnVjX3ZhX2xpc3QsIGlu
dCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRl
cm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRl
cm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVy
biBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQp
IDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBp
bnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMg
NzMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDg2ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CgoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKCnR5cGVkZWYgX0dfZnBvczY0
X3QgZnBvczY0X3Q7CiMgMTM4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMyA0CiMgMTM5ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMiAzIDQKCgoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkaW47CmV4dGVybiBzdHJ1Y3Qg
X0lPX0ZJTEUgKnN0ZG91dDsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkZXJyOwoKCgoKCgoK
ZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGlu
dCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoK
CgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpOwojIDE3NCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMgNApleHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKTsKCgoKZXh0ZXJuIGNoYXIg
KnRtcG5hbSAoY2hhciAqX19zKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpf
X3MpIDsKIyAxOTYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIgKnRlbXBu
YW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAq
X19zdHJlYW0pOwoKCgoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsKCiMgMjIx
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSk7CiMgMjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBp
bnQgZmNsb3NlYWxsICh2b2lkKTsKCgoKCgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbW9kZXMpOwoKCgoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwojIDI2MiAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNAoKCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2Rlcyk7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZpbGVuYW1lLAogICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwg
X19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2
b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX21vZGVzLAogICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykg
OwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29u
c3QgY2hhciAqX19tb2RlcykgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFy
ICoqX19yZXN0cmljdCBfX2J1ZmxvYywKICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXpl
bG9jKSA7CgoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgIGludCBf
X21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICBzaXpl
X3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCgoKCmV4dGVybiBp
bnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7CgpleHRl
cm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg
ICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgoKCgpleHRlcm4gaW50IHZwcmludGYgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpOwoKZXh0
ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCgoKZXh0
ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwK
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2
c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoK
CgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4g
aW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9f
cmVzdHJpY3QgX19wdHIsCiAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4u
LikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsK
CgoKCgoKCmV4dGVybiBpbnQgdmRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mbXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRm
IChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKCgoKZXh0
ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJuIGludCBzY2FuZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pIDsKCgoKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3Nj
YW5mX18sIDIsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCgoKCgoKZXh0ZXJuIGludCBmZ2V0
YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKTsKCgoK
CgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKIyA0NTQgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzIDQKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBp
bnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCk7CiMgNDY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKCgoK
CgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQg
cHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQgcHV0Y2hhciAo
aW50IF9fYyk7CgojIDQ5OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZw
dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgpleHRlcm4gaW50
IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRj
aGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0
cmVhbSk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSk7CgoKCgoK
CgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpf
X3MpOwoKIyA1NDMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIgKmZnZXRz
X3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKTsKIyA1NTkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0
ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAg
ICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAg
ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X24sIGludCBfX2RlbGltaXRlciwKICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsK
CgoKCgoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5l
cHRyLAogICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pOwoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQg
cHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zKTsKCiMgNjIwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4
dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMgNApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9f
cHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUg
Kl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKTsKCgoKCmV4dGVybiBsb25n
IGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxF
ICpfX3N0cmVhbSk7CgojIDY2NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50
IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSk7CgoK
CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKTsKIyA2ODYgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKCgoKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpOwoKCgoKZXh0ZXJuIGludCBm
c2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsKIyA3MDkgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19z
dHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKTsKZXh0ZXJuIF9fb2ZmNjRfdCBm
dGVsbG82NCAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpOwpleHRlcm4gaW50
IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKTsKCgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9m
IChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0
ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJv
cl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKCgpleHRlcm4gdm9pZCBwZXJyb3Ig
KF9fY29uc3QgY2hhciAqX19zKTsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJy
bGlzdC5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQK
ZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJy
bGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2Nv
bnN0IF9zeXNfZXJybGlzdFtdOwojIDc0OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoK
CgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmls
ZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwojIDc2NyAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMgNApleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2Nv
bnN0IGNoYXIgKl9fbW9kZXMpOwoKCgoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVh
bSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBj
aGFyICpjdXNlcmlkIChjaGFyICpfX3MpOwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGlu
dCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAog
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBvYnN0
YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJncykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoK
ZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQg
ZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgODI4ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzIDQKIyAzMyAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW8uaCIgMyA0CmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJl
dHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5l
IGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4
dGVybiBfX2lubGluZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAo
X19idWlsdGluX2V4cGVjdCAoKF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVh
ZF9lbmQsIDApID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5f
SU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQg
KHZvaWQpCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QgKChzdGRpbiktPl9JT19yZWFkX3B0
ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQsIDApID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNp
Z25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5s
aW5lIGludApwdXRjaGFyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91
dCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoX19zdHJlYW0pLT5f
SU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQsIDApID8gX19vdmVyZmxv
dyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
X19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5s
aW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVy
biAoX19idWlsdGluX2V4cGVjdCAoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJl
YW0pLT5fSU9fd3JpdGVfZW5kLCAwKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQg
Y2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0
cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKHN0ZG91dCktPl9JT193cml0
ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQsIDApID8gX19vdmVyZmxvdyAoc3Rkb3V0
LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9J
T193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90
CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkK
ewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9
CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkK
ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJu
IF9faW5saW5lIGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu
ICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA4MjkgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAyIDMgNAoKCgojIDgwICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93
b3JrL2djYy0zLjQuMi9nY2MvdHN5c3RlbS5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CgoKCgoKCnR5
cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVm
IF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90
IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZz
aWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5v
X3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3Qg
ZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1v
ZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3Qg
dWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRf
dCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3Qg
aWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRy
X3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5
X3Qga2V5X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgNTggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5
cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCiMgNzQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg
NAoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgojIDkyICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzIDQKdHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgMTA0ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzIDQKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMzQgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsK
CgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Zhci90bXAv
cG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
IDQKIyAxNDggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0
eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzIDQKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9f
KSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9f
KSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9f
KSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9f
KSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRl
ZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwoj
IDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDEgMyA0CiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIg
MiAzIDQKIyAyMTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMgNAojIDMyICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln
c2V0LmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzIDQKdHlwZWRl
ZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVk
IGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkp
XTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0
CgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMyA0CiMgMTE4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKc3RydWN0IHRpbWVz
cGVjCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9Owoj
IDQ1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy90aW1lLmgiIDEgMyA0CiMgNjkgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMyA0CnN0
cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0
dl91c2VjOwogIH07CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0CiMgNTUg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFz
azsKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3RydWN0CiAg
ewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNr
KSldOwoKCgoKCiAgfSBmZF9zZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMg
OTkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAoKIyAxMDkgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDMgNApleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpf
X3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywK
ICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgc3RydWN0IHRpbWV2YWwg
Kl9fcmVzdHJpY3QgX190aW1lb3V0KTsKIyAxMjEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDMgNApleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBf
X3JlYWRmZHMsCiAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICBmZF9z
ZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq
X19yZXN0cmljdCBfX3RpbWVvdXQsCiAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3Qg
X19zaWdtYXNrKTsKCgoKIyAyMTcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVk
ZS9zeXMvc3lzbWFjcm9zLmgiIDMgNApfX2V4dGVuc2lvbl9fCmV4dGVybiBfX2lubGluZSB1bnNp
Z25lZCBpbnQgZ251X2Rldl9tYWpvciAodW5zaWduZWQgbG9uZyBsb25nIGludCBfX2RldikKICAg
ICA7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGludCBnbnVfZGV2X21p
bm9yICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KQogICAgIDsKX19leHRlbnNpb25fXwpl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludCBnbnVfZGV2X21ha2VkZXYgKHVu
c2lnbmVkIGludCBfX21ham9yLAogICAgICAgdW5zaWduZWQgaW50IF9fbWlub3IpCiAgICAgOwoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGludApnbnVfZGV2X21ham9y
ICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KQp7CiAgcmV0dXJuICgoX19kZXYgPj4gOCkg
JiAweGZmZikgfCAoKHVuc2lnbmVkIGludCkgKF9fZGV2ID4+IDMyKSAmIH4weGZmZik7Cn0KCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGludApnbnVfZGV2X21pbm9yICh1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KQp7CiAgcmV0dXJuIChfX2RldiAmIDB4ZmYpIHwg
KCh1bnNpZ25lZCBpbnQpIChfX2RldiA+PiAxMikgJiB+MHhmZik7Cn0KCl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKZ251X2Rldl9tYWtlZGV2ICh1
bnNpZ25lZCBpbnQgX19tYWpvciwgdW5zaWduZWQgaW50IF9fbWlub3IpCnsKICByZXR1cm4gKChf
X21pbm9yICYgMHhmZikgfCAoKF9fbWFqb3IgJiAweGZmZikgPDwgOCkKICAgfCAoKCh1bnNpZ25l
ZCBsb25nIGxvbmcgaW50KSAoX19taW5vciAmIH4weGZmKSkgPDwgMTIpCiAgIHwgKCgodW5zaWdu
ZWQgbG9uZyBsb25nIGludCkgKF9fbWFqb3IgJiB+MHhmZmYpKSA8PCAzMikpOwp9CiMgMjIwICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgp0eXBlZGVmIF9fYmxrc2l6ZV90IGJs
a3NpemVfdDsKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVmIF9f
ZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90
OwojIDI1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2Jsa2NudDY0
X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVk
ZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMgNAojIDgzICIv
dXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzIDQKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAg
ICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhy
ZWFkdHlwZXMuaCIgMiAzIDQKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50
IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJl
YWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0
aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsK
ICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVk
OwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJf
c2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFk
X2F0dHJfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9fcHRocmVhZF9j
b25kX2FsaWduX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rs
b2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwogIGNoYXIgX19wYWRk
aW5nWzQ4IC0gc2l6ZW9mIChzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2spCiAgIC0gc2l6ZW9mIChf
cHRocmVhZF9kZXNjcikgLSBzaXplb2YgKF9fcHRocmVhZF9jb25kX2FsaWduX3QpXTsKICBfX3B0
aHJlYWRfY29uZF9hbGlnbl90IF9fYWxpZ247Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYg
c3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9f
bV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsK
ICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0
aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBw
dGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5
cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxv
Y2sgX19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193
cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVz
Y3IgX19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJl
ZDsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tp
bmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYg
dm9sYXRpbGUgaW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBp
bnQgX19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFk
X2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFk
X2JhcnJpZXJhdHRyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7
CiMgMjY3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCiMgODMgIi92YXIvdG1w
L3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKCgoj
IDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMgNAojIDMyICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMyA0CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMyA0CiMgMjUgIi91
c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJu
by5oIiAxIDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzIDQKIyA1ICIv
dXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzIDQKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMv
ZXJybm8uaCIgMiAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMyA0CmV4dGVy
biBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CiMgNTUgIi91c3IvaW5jbHVkZS9l
cnJuby5oIiAzIDQKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lLCAqcHJvZ3Jh
bV9pbnZvY2F0aW9uX3Nob3J0X25hbWU7CgoKCgojIDY5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIg
MyA0CnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgODYgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4y
LXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgoKCgoK
IyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2djYy9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMgNAojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgoKCgpl
eHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICpt
ZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAg
ICAgOwoKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICBpbnQgX19jLCBzaXplX3Qg
X19uKQogICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBf
X2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVy
biB2b2lkICpyYXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoKZXh0
ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3Ry
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS94bG9jYWxlLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMg
NAp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEg
Kl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsK
ICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBl
cjsKCgogIGNvbnN0IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90OwojIDExNSAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc3RyY29sbF9sIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAq
X19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgX19sb2NhbGVfdCBf
X2wpIDsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJp
YnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25z
dCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwojIDE2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgpleHRlcm4gY2hhciAq
c3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBz
aXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChf
X2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19o
YXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIDsKCgoKCmV4dGVybiBjaGFyICpf
X3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAogICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJu
IGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0sCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsK
CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9f
Y29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90
IF9faGF5c3RhY2tsZW4sCiAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19u
ZWVkbGVsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiB2b2lk
ICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICBfX2NvbnN0IHZvaWQgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIg
Kl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJu
bGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19l
cnJudW0pIDsKCiMgMjY4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAq
c3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7
CgoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4
dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoK
ZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hh
ciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19p
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcg
aW50IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRl
cm4gaW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpl
eHRlcm4gaW50IHN0cmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsCiAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBpbnQgc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsCiAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19y
ZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp
bSkgOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
Y2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAg
ICAgOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNw
eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsCiAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg
X19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4g
dm9pZCAqbWVtZnJvYiAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFy
ICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CiMgMzkzICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMgNAoj
IDM5NCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAxIDMgNAojIDM5NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
IDQKZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwoj
IDk2OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIHNp
emVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jl
c3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJj
c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgaW50IF9f
cmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19y
ZXN1bHRdICE9IF9fcmVqZWN0MQogICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQogICAg
KytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3Qg
X19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAg
aW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19z
dHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0
MiwKICAgICAgIGludCBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA0NSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0
XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRl
cm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YWNjZXB0MSwKICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApf
X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19f
cmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0
cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgaW50IF9f
YWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5f
YzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLCBpbnQg
X19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAg
fHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBf
X3Jlc3VsdDsKfQojIDExMjEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMyA0CmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19h
Y2NlcHQxLAogICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2Nl
cHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9f
cyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lk
ICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICBp
bnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0
cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQy
LAogICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3Mg
IT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCiAgJiYgKl9fcyAhPSBfX2FjY2VwdDMp
CiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAq
KSAoc2l6ZV90KSBfX3M7Cn0KIyAxMTczICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMg
NApleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9f
c2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJ0b2tfcl8x
YyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVz
dWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGls
ZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwogIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAg
aWYgKCpfX3MgIT0gJ1wwJykKICAgIHsKICAgICAgX19yZXN1bHQgPSBfX3MrKzsKICAgICAgd2hp
bGUgKCpfX3MgIT0gJ1wwJykKIGlmICgqX19zKysgPT0gX19zZXApCiAgIHsKICAgICBfX3NbLTFd
ID0gJ1wwJzsKICAgICBicmVhazsKICAgfQogICAgICAqX19uZXh0cCA9IF9fczsKICAgIH0KICBy
ZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMjA1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMg
NApleHRlcm4gY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9fc3RyaW5ncCwgX19jb25zdCBjaGFy
ICpfX2RlbGltKTsKIyAxMjIzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMgNApleHRl
cm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3Qp
OwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9f
cmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZh
bCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29u
c3RhbnRfcCAoX19yZWplY3QpICYmICFfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZXR2YWwpICYm
IChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19y
ZWplY3QpIDogX19idWlsdGluX3N0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZv
aWQgKikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRl
cm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMmMgKGNo
YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNo
YXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7
CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiB7
CiAgIGlmICgqX19jcCA9PSAnXDAnKQogICAgIHsKICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsK
ICAgYnJlYWs7CiAgICAgfQogICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9f
cmVqZWN0MikKICAgICB7CiAgICAgICAqX19jcCsrID0gJ1wwJzsKICAgICAgIGJyZWFrOwogICAg
IH0KICAgKytfX2NwOwogfQogICAgICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2
YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hh
ciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19y
ZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAg
cmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKIHsKICAgaWYg
KCpfX2NwID09ICdcMCcpCiAgICAgewogICAgICAgX19jcCA9ICgodm9pZCAqKTApOwogICBicmVh
azsKICAgICB9CiAgIGlmICgqX19jcCA9PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3Qy
IHx8ICpfX2NwID09IF9fcmVqZWN0MykKICAgICB7CiAgICAgICAqX19jcCsrID0gJ1wwJzsKICAg
ICAgIGJyZWFrOwogICAgIH0KICAgKytfX2NwOwogfQogICAgICAqX19zID0gX19jcDsKICAgIH0K
ICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMjk5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMgNAojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzIDQKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1
aWxkL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDIgMyA0CgoKIyA1NTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKZXh0ZXJuIHZv
aWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAg
IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgojIDkyMiAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzIDQKCiMgMTMwMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMgNAoKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwojIDEzMjMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MyA0CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVf
dCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzOTcgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMiAzIDQKCgoKCiMgOTMgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4y
LXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiMgMSAiL3Zhci90
bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMyA0CiMgNDMgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMyA0CiMg
NjUgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMyA0CnVuaW9uIHdhaXQKICB7CiAg
ICBpbnQgd19zdGF0dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKIHVuc2lnbmVkIGludCBfX3dfdGVy
bXNpZzo3OwogdW5zaWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogdW5zaWduZWQgaW50IF9fd19y
ZXRjb2RlOjg7CiB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5h
dGVkOwogICAgc3RydWN0CiAgICAgIHsKCiB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKIHVu
c2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OwogdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9
IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQK
IyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiB1bmlvbgogIHsKICAgIHVu
aW9uIHdhaXQgKl9fdXB0cjsKICAgIGludCAqX19pcHRyOwogIH0gX19XQUlUX1NUQVRVUyBfX2F0
dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7CiMgOTMgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMyA0CgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCBy
ZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90Owog
ICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVt
OwogIH0gbGxkaXZfdDsKCgojIDEzNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJu
IHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCgpleHRlcm4gZG91Ymxl
IGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25n
IGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoK
CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBpbnQgX19iYXNlKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25n
IGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKICAgICA7CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7
CgojIDIyOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcgaW50IHN0cnRv
bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9f
YmFzZSwgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25n
IGludCBzdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgIF9fbG9jYWxlX3QgX19sb2Mp
IDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGxf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7
CgpleHRlcm4gZG91YmxlIHN0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7
CgpleHRlcm4gZmxvYXQgc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSA7
CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgX19s
b2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRv
bGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCmV4
dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3Jv
dXApIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVy
bmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dy
b3VwKQogICAgIDsKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsK
ICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVy
biBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogaW50IF9fYmFzZSkKewogIHJldHVybiBf
X3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4g
X19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KCgoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3Ry
dG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9u
ZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICBpbnQg
X19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IF9fYmFzZSwgMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9u
ZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRl
cm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFy
ICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICBpbnQg
X19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IF9fYmFzZSwgMCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBj
aGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQg
KikwKSk7Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK
ewogIHJldHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAx
MCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRy
KQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsK
fQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAo
X19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAq
KikgKCh2b2lkICopMCksIDEwKTsKfQoKIyA0MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0
CmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0
bCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDQyMyAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkg
OwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRl
cm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVm
LAogICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIg
Kl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3Qg
KmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFu
ZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAq
ZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmLAogICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoK
ZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21f
ZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3Nl
ZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAg
IHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJuIGludCBzZXRz
dGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgIHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQp
IDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgpleHRlcm4g
aW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUg
ZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJu
IGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9u
ZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5z
aWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNp
Z25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f
b2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJu
IGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CiAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgZXJhbmQ0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwK
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3Ig
KHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
CgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX2J1ZmZlcikKICAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBz
aG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZm
ZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3
XSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDU2NCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzIDQKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRy
LCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZv
aWQgZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0
cikgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNs
dWRlL2FsbG9jYS5oIiAzIDQKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3Jr
L2J1aWxkL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvYWxs
b2NhLmgiIDIgMyA0CgoKCgoKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSA7
CgoKCgoKCiMgNTc5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgpleHRlcm4gdm9p
ZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19h
bGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p
KTsKCgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIDsKCgoK
CgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQg
Kl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgOwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQg
X19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKZXh0ZXJuIHZv
aWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKZXh0
ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpl
eHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVw
bGFjZSkKICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUp
IDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDY2MyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoj
IDY3NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKTsKIyA2ODMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBp
bnQgbWtzdGVtcDY0IChjaGFyICpfX3RlbXBsYXRlKTsKIyA2OTMgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMyA0CmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgoK
CgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKTsKCgoKCgoKCmV4
dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
OwojIDcyMCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKnJlYWxwYXRo
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fcmVzb2x2ZWQpIDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19j
b25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29t
cGFyaXNvbl9mbl90OwoKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpf
X2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAo
dm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICBfX2NvbXBh
cl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxv
bmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVu
b20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYg
KGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u
ZyBsb25nIGludCBfX251bWVyLAogICAgICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDc4NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzIDQKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoK
CmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRl
cm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYp
IDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
bikgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24p
IDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICBzaXplX3QgX19sZW4pIDsKZXh0
ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYsCiAgICAgc2l6ZV90IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
IHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0
cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikg
OwoKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCB3
Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJz
dG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLAogICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6
ZV90IF9fbikKICAgICA7CgoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIg
Kl9fcmVzcG9uc2UpIDsKIyA4NjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBp
bnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgY2hhciAq
X19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tleSkg
OwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKTsKCgoKCgoKCmV4
dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB1bmxvY2twdCAoaW50
IF9fZmQpIDsKCgoKCmV4dGVybiBjaGFyICpwdHNuYW1lIChpbnQgX19mZCkgOwoKCgoKCgpleHRl
cm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4p
IDsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZn
IChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CgoKCgoKCiMgOTQgIi92YXIvdG1w
L3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKIyAx
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMyA0CgojIDE3MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzIDQKIyAxNzIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzIDQKIyAy
MyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25t
ZW50cy5oIiAyIDMgNAojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDE5NSAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQu
Mi1yMi93b3JrL2J1aWxkL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE5NiAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDIzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK
dHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNv
Y2tsZW5fdDsKIyAyNTYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYWNj
ZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgOwoKCgoKZXh0ZXJuIGludCBl
dWlkYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgOwojIDI4NiAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBf
X29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKIyAyOTggIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMyA0CmV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBf
X29mZnNldCwgaW50IF9fd2hlbmNlKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2Zk
KTsKCgoKCgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOwoKCgoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25z
dCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbik7CiMgMzI4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMgNApleHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uYnl0ZXMsCiAgICAgICAgX19vZmZfdCBfX29mZnNldCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90
IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAg
ICAgIF9fb2ZmX3QgX19vZmZzZXQpOwojIDM1NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK
ZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMsCiAgIF9fb2ZmNjRfdCBfX29mZnNldCk7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlNjQg
KGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgX19vZmY2NF90
IF9fb2Zmc2V0KTsKCgoKCgoKCmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1syXSkgOwoj
IDM3OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFy
bSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzIDQKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcyk7
CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwg
X191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgOwoKCgoKCgpleHRlcm4gaW50IHVzbGVlcCAo
X191c2Vjb25kc190IF9fdXNlY29uZHMpOwojIDQxNCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
IDQKZXh0ZXJuIGludCBwYXVzZSAodm9pZCk7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3Qg
Y2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoK
CmV4dGVybiBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9f
Z3JvdXApIDsKCgoKCmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191
aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgOwoKCgoKZXh0ZXJuIGludCBjaGRp
ciAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2Zk
KSA7CiMgNDQ4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqZ2V0Y3dk
IChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3Vy
cmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIgKl9f
YnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IGR1cDIg
KGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4dGVy
biBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBjaGFyICpf
X3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgY2hhciAqX19jb25zdCBfX2VudnBb
XSkgOwoKCgoKZXh0ZXJuIGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25zdCBfX2Fy
Z3ZbXSwgY2hhciAqX19jb25zdCBfX2VudnBbXSkKICAgICA7CgoKCgpleHRlcm4gaW50IGV4ZWN2
IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgOwoKCgpleHRl
cm4gaW50IGV4ZWNsZSAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcs
IC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25z
dCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgOwoKCgoKZXh0ZXJuIGludCBleGVjbHAg
KF9fY29uc3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKCmV4
dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSA7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9f
c3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9jb25m
bmFtZS5oIiAzIDQKZW51bQogIHsKICAgIF9QQ19MSU5LX01BWCwKCiAgICBfUENfTUFYX0NBTk9O
LAoKICAgIF9QQ19NQVhfSU5QVVQsCgogICAgX1BDX05BTUVfTUFYLAoKICAgIF9QQ19QQVRIX01B
WCwKCiAgICBfUENfUElQRV9CVUYsCgogICAgX1BDX0NIT1dOX1JFU1RSSUNURUQsCgogICAgX1BD
X05PX1RSVU5DLAoKICAgIF9QQ19WRElTQUJMRSwKCiAgICBfUENfU1lOQ19JTywKCiAgICBfUENf
QVNZTkNfSU8sCgogICAgX1BDX1BSSU9fSU8sCgogICAgX1BDX1NPQ0tfTUFYQlVGLAoKICAgIF9Q
Q19GSUxFU0laRUJJVFMsCgogICAgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSwKCiAgICBfUENfUkVD
X01BWF9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNf
WEZFUl9BTElHTiwKCiAgICBfUENfQUxMT0NfU0laRV9NSU4sCgogICAgX1BDX1NZTUxJTktfTUFY
LAoKICAgIF9QQ18yX1NZTUxJTktTCgogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFYLAoK
ICAgIF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNfTUFY
LAoKICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpOQU1F
X01BWCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBfU0Nf
UkVBTFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0Nf
VElNRVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVEX0lP
LAoKICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19NQVBQ
RURfRklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgogICAg
X1NDX01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAgX1ND
X1NFTUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfQUlP
X0xJU1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRBX01B
WCwKCiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAgIF9T
Q19NUV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBfU0NfUEFHRVNJWkUsCgoKICAg
IF9TQ19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgsCgogICAgX1NDX1NFTV9WQUxV
RV9NQVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0NfVElNRVJfTUFYLAoKCgoKICAg
IF9TQ19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVf
TUFYLAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoK
ICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1ND
X0xJTkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9N
QVgsCgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0Nf
REVWLAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18y
X1NXX0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJ
SV9YVEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBf
U0NfUElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9f
TUFYSU9WLAoKICAgIF9TQ19JT1ZfTUFYID0gX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX1BJSV9J
TlRFUk5FVF9TVFJFQU0sCgogICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKCiAgICBfU0NfUElJ
X09TSV9DT1RTLAoKICAgIF9TQ19QSUlfT1NJX0NMVFMsCgogICAgX1NDX1BJSV9PU0lfTSwKCiAg
ICBfU0NfVF9JT1ZfTUFYLAoKCgogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RIUkVBRF9TQUZF
X0ZVTkNUSU9OUywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0NfR0VUUFdfUl9T
SVpFX01BWCwKCiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9OQU1FX01BWCwK
CiAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0NfVEhSRUFEX0tF
WVNfTUFYLAoKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJFQURfVEhSRUFE
U19NQVgsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0NfVEhSRUFEX0FU
VFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBf
U0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwKCiAg
ICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NPUlNfQ09ORiwK
CiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywKCiAgICBfU0Nf
QVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNTX01BWCwKCgog
ICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9OLAoKICAgIF9T
Q19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9QRU5fRU5IX0kx
OE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoKICAgIF9TQ18y
X0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcyLAoKICAgIF9T
Q19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hBUl9CSVQsCgog
ICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5UX01BWCwKCiAg
ICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRfQklULAoKICAg
IF9TQ19NQl9MRU5fTUFYLAoKICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVfTUFYLAoKICAg
IF9TQ19TQ0hBUl9NQVgsCgogICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hSVF9NQVgsCgog
ICAgX1NDX1NIUlRfTUlOLAoKICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJTlRfTUFYLAoK
ICAgIF9TQ19VTE9OR19NQVgsCgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1NDX05MX0FSR01B
WCwKCiAgICBfU0NfTkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAgIF9TQ19OTF9O
TUFYLAoKICAgIF9TQ19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoKICAgIF9TQ19Y
QlM1X0lMUDMyX09GRjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAgICBfU0NfWEJT
NV9MUDY0X09GRjY0LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAgX1NDX1hPUEVO
X0xFR0FDWSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVOX1JFQUxUSU1F
X1RIUkVBRFMsCgoKICAgIF9TQ19BRFZJU09SWV9JTkZPLAoKICAgIF9TQ19CQVJSSUVSUywKCiAg
ICBfU0NfQkFTRSwKCiAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCgogICAgX1NDX0NfTEFOR19TVVBQ
T1JUX1IsCgogICAgX1NDX0NMT0NLX1NFTEVDVElPTiwKCiAgICBfU0NfQ1BVVElNRSwKCiAgICBf
U0NfVEhSRUFEX0NQVVRJTUUsCgogICAgX1NDX0RFVklDRV9JTywKCiAgICBfU0NfREVWSUNFX1NQ
RUNJRklDLAoKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiwKCiAgICBfU0NfRkRfTUdNVCwKCiAg
ICBfU0NfRklGTywKCiAgICBfU0NfUElQRSwKCiAgICBfU0NfRklMRV9BVFRSSUJVVEVTLAoKICAg
IF9TQ19GSUxFX0xPQ0tJTkcsCgogICAgX1NDX0ZJTEVfU1lTVEVNLAoKICAgIF9TQ19NT05PVE9O
SUNfQ0xPQ0ssCgogICAgX1NDX01VTFRJX1BST0NFU1MsCgogICAgX1NDX1NJTkdMRV9QUk9DRVNT
LAoKICAgIF9TQ19ORVRXT1JLSU5HLAoKICAgIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTLAoKICAg
IF9TQ19TUElOX0xPQ0tTLAoKICAgIF9TQ19SRUdFWFAsCgogICAgX1NDX1JFR0VYX1ZFUlNJT04s
CgogICAgX1NDX1NIRUxMLAoKICAgIF9TQ19TSUdOQUxTLAoKICAgIF9TQ19TUEFXTiwKCiAgICBf
U0NfU1BPUkFESUNfU0VSVkVSLAoKICAgIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSLAoKICAg
IF9TQ19TWVNURU1fREFUQUJBU0UsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRV9SLAoKICAgIF9T
Q19USU1FT1VUUywKCiAgICBfU0NfVFlQRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX1VTRVJf
R1JPVVBTLAoKICAgIF9TQ19VU0VSX0dST1VQU19SLAoKICAgIF9TQ18yX1BCUywKCiAgICBfU0Nf
Ml9QQlNfQUNDT1VOVElORywKCiAgICBfU0NfMl9QQlNfTE9DQVRFLAoKICAgIF9TQ18yX1BCU19N
RVNTQUdFLAoKICAgIF9TQ18yX1BCU19UUkFDSywKCiAgICBfU0NfU1lNTE9PUF9NQVgsCgogICAg
X1NDX1NUUkVBTVMsCgogICAgX1NDXzJfUEJTX0NIRUNLUE9JTlQsCgoKICAgIF9TQ19WNl9JTFAz
Ml9PRkYzMiwKCiAgICBfU0NfVjZfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19WNl9MUDY0X09GRjY0
LAoKICAgIF9TQ19WNl9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19IT1NUX05BTUVfTUFYLAoKICAg
IF9TQ19UUkFDRSwKCiAgICBfU0NfVFJBQ0VfRVZFTlRfRklMVEVSLAoKICAgIF9TQ19UUkFDRV9J
TkhFUklULAoKICAgIF9TQ19UUkFDRV9MT0csCgoKICAgIF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUs
CgogICAgX1NDX0xFVkVMMV9JQ0FDSEVfQVNTT0MsCgogICAgX1NDX0xFVkVMMV9JQ0FDSEVfTElO
RVNJWkUsCgogICAgX1NDX0xFVkVMMV9EQ0FDSEVfU0laRSwKCiAgICBfU0NfTEVWRUwxX0RDQUNI
RV9BU1NPQywKCiAgICBfU0NfTEVWRUwxX0RDQUNIRV9MSU5FU0laRSwKCiAgICBfU0NfTEVWRUwy
X0NBQ0hFX1NJWkUsCgogICAgX1NDX0xFVkVMMl9DQUNIRV9BU1NPQywKCiAgICBfU0NfTEVWRUwy
X0NBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDNfQ0FDSEVfU0laRSwKCiAgICBfU0NfTEVW
RUwzX0NBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDNfQ0FDSEVfTElORVNJWkUsCgogICAgX1ND
X0xFVkVMNF9DQUNIRV9TSVpFLAoKICAgIF9TQ19MRVZFTDRfQ0FDSEVfQVNTT0MsCgogICAgX1ND
X0xFVkVMNF9DQUNIRV9MSU5FU0laRQoKCiAgfTsKCgplbnVtCiAgewogICAgX0NTX1BBVEgsCgoK
ICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMsCgoKICAgIF9DU19HTlVfTElCQ19WRVJT
SU9OLAoKICAgIF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLAoKCiAgICBfQ1NfTEZTX0NGTEFH
UyA9IDEwMDAsCgogICAgX0NTX0xGU19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBf
Q1NfTEZTX0xJTlRGTEFHUywKCiAgICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9M
REZMQUdTLAoKICAgIF9DU19MRlM2NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoK
ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDExMDAsCgogICAgX0NTX1hCUzVfSUxQ
MzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9D
U19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdf
Q0ZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1
X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1Ms
CgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2
NF9MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfWEJTNV9M
UDY0X09GRjY0X0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoK
ICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09G
RkJJR19MSUJTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKICAgIF9D
U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09G
RjMyX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NT
X1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJf
T0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgog
ICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAz
Ml9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywK
CiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9M
UDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9M
UEJJR19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MKCiAgfTsKIyA1MjYgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYgKF9f
Y29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRo
Y29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAo
aW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gc2l6ZV90
IGNvbmZzdHIgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCmV4
dGVybiBfX3BpZF90IGdldHBpZCAodm9pZCkgOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZv
aWQpIDsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIDsKIyA1NjEgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3Bp
ZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKCgoKCgpleHRl
cm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTg3ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIDsKIyA2
MDUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBfX3BpZF90IHNldHNpZCAodm9p
ZCkgOwoKCgpleHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIDsKCgoKZXh0ZXJu
IF9fdWlkX3QgZ2V0dWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0ZXVpZCAodm9pZCkg
OwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgOwoKCmV4dGVybiBfX2dpZF90IGdldGVn
aWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90
IF9fbGlzdFtdKSA7CgoKCmV4dGVybiBpbnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSA7
CgoKCgoKCmV4dGVybiBpbnQgc2V0dWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgpleHRlcm4gaW50
IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIDsKCgoKCmV4dGVybiBp
bnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAoX19n
aWRfdCBfX2dpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9f
Z2lkX3QgX19lZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIDsK
CgoKCgpleHRlcm4gaW50IGdldHJlc3VpZCAoX191aWRfdCAqX19ldWlkLCBfX3VpZF90ICpfX3J1
aWQsIF9fdWlkX3QgKl9fc3VpZCk7CgoKCmV4dGVybiBpbnQgZ2V0cmVzZ2lkIChfX2dpZF90ICpf
X2VnaWQsIF9fZ2lkX3QgKl9fcmdpZCwgX19naWRfdCAqX19zZ2lkKTsKCgoKZXh0ZXJuIGludCBz
ZXRyZXN1aWQgKF9fdWlkX3QgX19ldWlkLCBfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX3N1aWQp
OwoKCgpleHRlcm4gaW50IHNldHJlc2dpZCAoX19naWRfdCBfX2VnaWQsIF9fZ2lkX3QgX19yZ2lk
LCBfX2dpZF90IF9fc2dpZCk7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIDsKCgoK
CgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIDsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFt
ZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkg
OwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChf
X2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQg
c3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoK
ZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50
IHVubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50IHJtZGlyIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGludCBfX2Zk
KSA7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9fcGdycF9pZCkg
OwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBn
ZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVfbGVuKTsKCgoKCmV4dGVybiBp
bnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNzc1ICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMgNAojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2Nj
LTMuNC4yL2djYy8uLi9pbmNsdWRlL2dldG9wdC5oIiAxIDMgNAojIDM2ICIvdmFyL3RtcC9wb3J0
YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvLi4vaW5jbHVkZS9nZXRvcHQuaCIg
MyA0CmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNTAgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4y
LXIyL3dvcmsvZ2NjLTMuNC4yL2djYy8uLi9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGlu
dCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMg
ODIgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy8uLi9p
bmNsdWRlL2dldG9wdC5oIiAzIDQKc3RydWN0IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIgKm5hbWU7
CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQgKmZsYWc7CiAgaW50IHZhbDsKfTsKIyAxMTMgIi92
YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy8uLi9pbmNsdWRl
L2dldG9wdC5oIiAzIDQKZXh0ZXJuIGludCBnZXRvcHQgKGludCBhcmdjLCBjaGFyICpjb25zdCAq
YXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0b3B0X2xv
bmcgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAog
ICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2luZCk7CmV4
dGVybiBpbnQgZ2V0b3B0X2xvbmdfb25seSAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAog
ICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0
IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2luZCk7CgoKZXh0ZXJuIGludCBfZ2V0b3B0X2lu
dGVybmFsIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCiAgICAgICAgY29uc3QgY2hhciAq
c2hvcnRvcHRzLAogICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywg
aW50ICpsb25naW5kLAogICAgICAgIGludCBsb25nX29ubHkpOwojIDc3NiAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19u
YW1lLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25z
dCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAo
bG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19u
YW1lLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lk
KSA7CgoKZXh0ZXJuIGludCByZXZva2UgKF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpl
eHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNp
emVfdCBfX3NpemUsCiAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkg
OwoKCgoKCmV4dGVybiBpbnQgYWNjdCAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJu
IGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZv
aWQpIDsKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGludCBk
YWVtb24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIDsKCgoKCgoKZXh0ZXJuIGludCBj
aHJvb3QgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChf
X2NvbnN0IGNoYXIgKl9fcHJvbXB0KTsKIyA4NTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0
CmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhv
c3RpZCAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBn
ZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIDsK
IyA4ODggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgdHJ1bmNhdGU2NCAo
X19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgOwoKCgoKZXh0ZXJuIGlu
dCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSA7CiMgOTAzICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19v
ZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7
CiMgOTE4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGJyayAodm9pZCAq
X19hZGRyKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEpIDsKIyA5
MzkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBsb25nIGludCBzeXNjYWxsIChs
b25nIGludCBfX3N5c25vLCAuLi4pIDsKIyA5NjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0
CmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pOwoj
IDk3MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQg
X19mZCwgaW50IF9fY21kLCBfX29mZjY0X3QgX19sZW4pOwojIDk5MyAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcykgOwoKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmNyeXB0IChfX2NvbnN0IGNoYXIgKl9fa2V5LCBfX2NvbnN0IGNoYXIgKl9f
c2FsdCkgOwoKCgpleHRlcm4gdm9pZCBlbmNyeXB0IChjaGFyICpfX2Jsb2NrLCBpbnQgX19lZGZs
YWcpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9f
ZnJvbSwgdm9pZCAqX19yZXN0cmljdCBfX3RvLAogICAgc3NpemVfdCBfX24pIDsKCgoKCgoKCmV4
dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKCgoKIyA5NSAiL3Zhci90bXAvcG9ydGFn
ZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL3RzeXN0ZW0uaCIgMgoKCiMgMSAiL3Zh
ci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9saW1pdHMu
aCIgMSAzIDQKIyAxMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9n
Y2MvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjIt
cjIvd29yay9idWlsZC9nY2MvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzIDQKCgoKCgoKIyAxICIv
dmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2djYy9pbmNsdWRlL2xpbWl0
cy5oIiAxIDMgNAojIDEyMiAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWls
ZC9nY2MvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAx
IDMgNAojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9wb3NpeDFfbGltLmgiIDEgMyA0CiMgMTQ1ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFf
bGltLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMgNAojIDM2
ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xp
bnV4L2xpbWl0cy5oIiAxIDMgNAojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIg
MiAzIDQKIyAxNDYgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzIDQKIyAxNDUg
Ii91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9w
b3NpeDJfbGltLmgiIDEgMyA0CiMgMTQ5ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMyA0CiMgMzQgIi91c3IvaW5j
bHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19s
aW0uaCIgMSAzIDQKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMyA0CiMg
MTUzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgMTIzICIvdmFyL3RtcC9wb3J0YWdl
L2djYy0zLjQuMi1yMi93b3JrL2J1aWxkL2djYy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDgg
Ii92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvYnVpbGQvZ2NjL2luY2x1ZGUvc3lz
bGltaXRzLmgiIDIgMyA0CiMgMTIgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsv
YnVpbGQvZ2NjL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOTggIi92YXIvdG1wL3BvcnRhZ2Uv
Z2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKCgojIDEgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgMzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCgoK
CgoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9idWlsZC9nY2MvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKCgoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0CiMgNDMgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDIgMyA0CiMgMTI5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKCgpzdHJ1Y3QgdG0K
ewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRh
eTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95
ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNo
YXIgKnRtX3pvbmU7CgoKCgp9OwoKCgoKCgoKCnN0cnVjdCBpdGltZXJzcGVjCiAgewogICAgc3Ry
dWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwog
IH07CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE3OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CgoK
CmV4dGVybiBjbG9ja190IGNsb2NrICh2b2lkKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1l
X3QgKl9fdGltZXIpIDsKCgpleHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwg
dGltZV90IF9fdGltZTApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biB0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0
cmZ0aW1lIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0
cmljdCBfX3RwKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0
cnVjdCB0bSAqX190cCkKICAgICA7CgoKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBf
X3RwLAogICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHAsCiAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgoKCgoKCmV4
dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0
ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoK
CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBf
X3RpbWVyLAogICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKZXh0ZXJuIHN0
cnVjdCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIs
CiAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgoKCmV4dGVybiBjaGFy
ICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgOwoKCmV4dGVybiBjaGFyICpjdGlt
ZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1l
X3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYpIDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVz
dHJpY3QgX190aW1lciwKICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgpleHRl
cm4gY2hhciAqX190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdodDsKZXh0ZXJuIGxvbmcg
aW50IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKCgpleHRlcm4gdm9p
ZCB0enNldCAodm9pZCkgOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQg
dGltZXpvbmU7CgoKCgoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikg
OwojIDMwOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiB0aW1lX3QgdGltZWdtIChz
dHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpf
X3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKIyAzMjQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IG5h
bm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAgICAg
ICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZyk7CgoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0
cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3JlcykgOwoKCmV4
dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1l
c3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xv
Y2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIDsKCgoKCgoKZXh0ZXJu
IGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQgX19mbGFncywK
ICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcSwKICAgICAgIHN0cnVjdCB0aW1l
c3BlYyAqX19yZW0pOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0Y3B1Y2xvY2tpZCAocGlkX3QgX19w
aWQsIGNsb2NraWRfdCAqX19jbG9ja19pZCkgOwoKCgoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUg
KGNsb2NraWRfdCBfX2Nsb2NrX2lkLAogICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9f
ZXZwLAogICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRp
bWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRpbWVyX3NldHRp
bWUgKHRpbWVyX3QgX190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICBfX2NvbnN0IHN0cnVjdCBp
dGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAgc3RydWN0IGl0aW1lcnNwZWMgKl9f
cmVzdHJpY3QgX19vdmFsdWUpIDsKCgpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3Qg
X190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX192YWx1ZSkKICAgICA7CgoKZXh0ZXJuIGlu
dCB0aW1lcl9nZXRvdmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkgOwojIDM4NiAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CiMgMzk1ICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZSAoX19jb25zdCBjaGFyICpf
X3N0cmluZyk7CiMgNDA5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRk
YXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0cmluZywKICAgICAgICBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKTsKCgoKIyAxMDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2Nj
LTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy90c3lzdGVtLmgiIDIKIyA0MiAiL3Zhci90bXAv
cG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuYyIgMgojIDEg
Ii92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9jb3JldHlw
ZXMuaCIgMQojIDU1ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQu
Mi9nY2MvY29yZXR5cGVzLmgiCnN0cnVjdCBfZG9udF91c2VfcnR4X2hlcmVfOwpzdHJ1Y3QgX2Rv
bnRfdXNlX3J0dmVjX2hlcmVfOwp1bmlvbiBfZG9udF91c2VfdHJlZV9oZXJlXzsKIyA0MyAiL3Zh
ci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuYyIg
MgojIDEgIi4vdG0uaCIgMQoKCgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dv
cmsvZ2NjLTMuNC4yL2djYy9jb25maWcvaTM4Ni9pMzg2LmgiIDEKIyAzOSAiL3Zhci90bXAvcG9y
dGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIK
c3RydWN0IHByb2Nlc3Nvcl9jb3N0cyB7CiAgY29uc3QgaW50IGFkZDsKICBjb25zdCBpbnQgbGVh
OwogIGNvbnN0IGludCBzaGlmdF92YXI7CiAgY29uc3QgaW50IHNoaWZ0X2NvbnN0OwogIGNvbnN0
IGludCBtdWx0X2luaXRbNV07CgogIGNvbnN0IGludCBtdWx0X2JpdDsKICBjb25zdCBpbnQgZGl2
aWRlWzVdOwoKICBpbnQgbW92c3g7CiAgaW50IG1vdnp4OwogIGNvbnN0IGludCBsYXJnZV9pbnNu
OwogIGNvbnN0IGludCBtb3ZlX3JhdGlvOwoKICBjb25zdCBpbnQgbW92emJsX2xvYWQ7CiAgY29u
c3QgaW50IGludF9sb2FkWzNdOwoKCiAgY29uc3QgaW50IGludF9zdG9yZVszXTsKCiAgY29uc3Qg
aW50IGZwX21vdmU7CiAgY29uc3QgaW50IGZwX2xvYWRbM107CgogIGNvbnN0IGludCBmcF9zdG9y
ZVszXTsKCiAgY29uc3QgaW50IG1teF9tb3ZlOwogIGNvbnN0IGludCBtbXhfbG9hZFsyXTsKCiAg
Y29uc3QgaW50IG1teF9zdG9yZVsyXTsKCiAgY29uc3QgaW50IHNzZV9tb3ZlOwogIGNvbnN0IGlu
dCBzc2VfbG9hZFszXTsKCiAgY29uc3QgaW50IHNzZV9zdG9yZVszXTsKCiAgY29uc3QgaW50IG1t
eHNzZV90b19pbnRlZ2VyOwoKICBjb25zdCBpbnQgcHJlZmV0Y2hfYmxvY2s7CiAgY29uc3QgaW50
IHNpbXVsdGFuZW91c19wcmVmZXRjaGVzOwoKICBjb25zdCBpbnQgYnJhbmNoX2Nvc3Q7CiAgY29u
c3QgaW50IGZhZGQ7CiAgY29uc3QgaW50IGZtdWw7CiAgY29uc3QgaW50IGZkaXY7CiAgY29uc3Qg
aW50IGZhYnM7CiAgY29uc3QgaW50IGZjaHM7CiAgY29uc3QgaW50IGZzcXJ0Owp9OwoKZXh0ZXJu
IGNvbnN0IHN0cnVjdCBwcm9jZXNzb3JfY29zdHMgKml4ODZfY29zdDsKCgoKZXh0ZXJuIGludCB0
YXJnZXRfZmxhZ3M7CiMgMjI0ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2dj
Yy0zLjQuMi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgpleHRlcm4gY29uc3QgaW50IHg4Nl91c2Vf
bGVhdmUsIHg4Nl9wdXNoX21lbW9yeSwgeDg2X3plcm9fZXh0ZW5kX3dpdGhfYW5kOwpleHRlcm4g
Y29uc3QgaW50IHg4Nl91c2VfYml0X3Rlc3QsIHg4Nl9jbW92ZSwgeDg2X2RlZXBfYnJhbmNoOwpl
eHRlcm4gY29uc3QgaW50IHg4Nl9icmFuY2hfaGludHMsIHg4Nl91bnJvbGxfc3RybGVuOwpleHRl
cm4gY29uc3QgaW50IHg4Nl9kb3VibGVfd2l0aF9hZGQsIHg4Nl9wYXJ0aWFsX3JlZ19zdGFsbCwg
eDg2X21vdng7CmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9sb29wLCB4ODZfdXNlX2Zpb3AsIHg4
Nl91c2VfbW92MDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfdXNlX2NsdGQsIHg4Nl9yZWFkX21vZGlm
eV93cml0ZTsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcmVhZF9tb2RpZnksIHg4Nl9zcGxpdF9sb25n
X21vdmVzOwpleHRlcm4gY29uc3QgaW50IHg4Nl9wcm9tb3RlX1FJbW9kZSwgeDg2X3NpbmdsZV9z
dHJpbmdvcCwgeDg2X2Zhc3RfcHJlZml4OwpleHRlcm4gY29uc3QgaW50IHg4Nl9oaW1vZGVfbWF0
aCwgeDg2X3FpbW9kZV9tYXRoLCB4ODZfcHJvbW90ZV9xaV9yZWdzOwpleHRlcm4gY29uc3QgaW50
IHg4Nl9wcm9tb3RlX2hpX3JlZ3MsIHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlczsKZXh0ZXJuIGNv
bnN0IGludCB4ODZfYWRkX2VzcF80LCB4ODZfYWRkX2VzcF84LCB4ODZfc3ViX2VzcF80LCB4ODZf
c3ViX2VzcF84OwpleHRlcm4gY29uc3QgaW50IHg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4
ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsOwpleHRlcm4gY29uc3QgaW50IHg4Nl9hY2N1bXVsYXRl
X291dGdvaW5nX2FyZ3MsIHg4Nl9wcm9sb2d1ZV91c2luZ19tb3ZlOwpleHRlcm4gY29uc3QgaW50
IHg4Nl9lcGlsb2d1ZV91c2luZ19tb3ZlLCB4ODZfZGVjb21wb3NlX2xlYTsKZXh0ZXJuIGNvbnN0
IGludCB4ODZfYXJjaF9hbHdheXNfZmFuY3lfbWF0aF8zODcsIHg4Nl9zaGlmdDE7CmV4dGVybiBj
b25zdCBpbnQgeDg2X3NzZV9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfc3NlX3BhcnRpYWxf
cmVnczsKZXh0ZXJuIGNvbnN0IGludCB4ODZfc3NlX3R5cGVsZXNzX3N0b3JlcywgeDg2X3NzZV9s
b2FkMF9ieV9weG9yOwpleHRlcm4gY29uc3QgaW50IHg4Nl91c2VfZmZyZWVwLCB4ODZfc3NlX3Bh
cnRpYWxfcmVnc19mb3JfY3Z0c2Qyc3M7CmV4dGVybiBjb25zdCBpbnQgeDg2X2ludGVyX3VuaXRf
bW92ZXM7CmV4dGVybiBpbnQgeDg2X3ByZWZldGNoX3NzZTsKIyAxMjgyICIvdmFyL3RtcC9wb3J0
YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgpl
bnVtIHJlZ19jbGFzcwp7CiAgTk9fUkVHUywKICBBUkVHLCBEUkVHLCBDUkVHLCBCUkVHLCBTSVJF
RywgRElSRUcsCiAgQURfUkVHUywKICBRX1JFR1MsCiAgTk9OX1FfUkVHUywKICBJTkRFWF9SRUdT
LAogIExFR0FDWV9SRUdTLAogIEdFTkVSQUxfUkVHUywKICBGUF9UT1BfUkVHLCBGUF9TRUNPTkRf
UkVHLAogIEZMT0FUX1JFR1MsCiAgU1NFX1JFR1MsCiAgTU1YX1JFR1MsCiAgRlBfVE9QX1NTRV9S
RUdTLAogIEZQX1NFQ09ORF9TU0VfUkVHUywKICBGTE9BVF9TU0VfUkVHUywKICBGTE9BVF9JTlRf
UkVHUywKICBJTlRfU1NFX1JFR1MsCiAgRkxPQVRfSU5UX1NTRV9SRUdTLAogIEFMTF9SRUdTLCBM
SU1fUkVHX0NMQVNTRVMKfTsKIyAxNzUyICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93
b3JrL2djYy0zLjQuMi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIgp0eXBlZGVmIHN0cnVjdCBpeDg2
X2FyZ3MgewogIGludCB3b3JkczsKICBpbnQgbnJlZ3M7CiAgaW50IHJlZ25vOwogIGludCBmYXN0
Y2FsbDsKICBpbnQgc3NlX3dvcmRzOwogIGludCBzc2VfbnJlZ3M7CiAgaW50IHdhcm5fc3NlOwog
IGludCB3YXJuX21teDsKICBpbnQgc3NlX3JlZ25vOwogIGludCBtbXhfd29yZHM7CiAgaW50IG1t
eF9ucmVnczsKICBpbnQgbW14X3JlZ25vOwogIGludCBtYXliZV92YWFyZzsKfSBDVU1VTEFUSVZF
X0FSR1M7CiMgMjA5MCAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40
LjIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZW51bSBpeDg2X2J1aWx0aW5zCnsKICBJWDg2X0JV
SUxUSU5fQUREUFMsCiAgSVg4Nl9CVUlMVElOX0FERFNTLAogIElYODZfQlVJTFRJTl9ESVZQUywK
ICBJWDg2X0JVSUxUSU5fRElWU1MsCiAgSVg4Nl9CVUlMVElOX01VTFBTLAogIElYODZfQlVJTFRJ
Tl9NVUxTUywKICBJWDg2X0JVSUxUSU5fU1VCUFMsCiAgSVg4Nl9CVUlMVElOX1NVQlNTLAoKICBJ
WDg2X0JVSUxUSU5fQ01QRVFQUywKICBJWDg2X0JVSUxUSU5fQ01QTFRQUywKICBJWDg2X0JVSUxU
SU5fQ01QTEVQUywKICBJWDg2X0JVSUxUSU5fQ01QR1RQUywKICBJWDg2X0JVSUxUSU5fQ01QR0VQ
UywKICBJWDg2X0JVSUxUSU5fQ01QTkVRUFMsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFBTLAogIElY
ODZfQlVJTFRJTl9DTVBOTEVQUywKICBJWDg2X0JVSUxUSU5fQ01QTkdUUFMsCiAgSVg4Nl9CVUlM
VElOX0NNUE5HRVBTLAogIElYODZfQlVJTFRJTl9DTVBPUkRQUywKICBJWDg2X0JVSUxUSU5fQ01Q
VU5PUkRQUywKICBJWDg2X0JVSUxUSU5fQ01QTkVQUywKICBJWDg2X0JVSUxUSU5fQ01QRVFTUywK
ICBJWDg2X0JVSUxUSU5fQ01QTFRTUywKICBJWDg2X0JVSUxUSU5fQ01QTEVTUywKICBJWDg2X0JV
SUxUSU5fQ01QTkVRU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFNTLAogIElYODZfQlVJTFRJTl9D
TVBOTEVTUywKICBJWDg2X0JVSUxUSU5fQ01QT1JEU1MsCiAgSVg4Nl9CVUlMVElOX0NNUFVOT1JE
U1MsCiAgSVg4Nl9CVUlMVElOX0NNUE5FU1MsCgogIElYODZfQlVJTFRJTl9DT01JRVFTUywKICBJ
WDg2X0JVSUxUSU5fQ09NSUxUU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlMRVNTLAogIElYODZfQlVJ
TFRJTl9DT01JR1RTUywKICBJWDg2X0JVSUxUSU5fQ09NSUdFU1MsCiAgSVg4Nl9CVUlMVElOX0NP
TUlORVFTUywKICBJWDg2X0JVSUxUSU5fVUNPTUlFUVNTLAogIElYODZfQlVJTFRJTl9VQ09NSUxU
U1MsCiAgSVg4Nl9CVUlMVElOX1VDT01JTEVTUywKICBJWDg2X0JVSUxUSU5fVUNPTUlHVFNTLAog
IElYODZfQlVJTFRJTl9VQ09NSUdFU1MsCiAgSVg4Nl9CVUlMVElOX1VDT01JTkVRU1MsCgogIElY
ODZfQlVJTFRJTl9DVlRQSTJQUywKICBJWDg2X0JVSUxUSU5fQ1ZUUFMyUEksCiAgSVg4Nl9CVUlM
VElOX0NWVFNJMlNTLAogIElYODZfQlVJTFRJTl9DVlRTSTY0MlNTLAogIElYODZfQlVJTFRJTl9D
VlRTUzJTSSwKICBJWDg2X0JVSUxUSU5fQ1ZUU1MyU0k2NCwKICBJWDg2X0JVSUxUSU5fQ1ZUVFBT
MlBJLAogIElYODZfQlVJTFRJTl9DVlRUU1MyU0ksCiAgSVg4Nl9CVUlMVElOX0NWVFRTUzJTSTY0
LAoKICBJWDg2X0JVSUxUSU5fTUFYUFMsCiAgSVg4Nl9CVUlMVElOX01BWFNTLAogIElYODZfQlVJ
TFRJTl9NSU5QUywKICBJWDg2X0JVSUxUSU5fTUlOU1MsCgogIElYODZfQlVJTFRJTl9MT0FEQVBT
LAogIElYODZfQlVJTFRJTl9MT0FEVVBTLAogIElYODZfQlVJTFRJTl9TVE9SRUFQUywKICBJWDg2
X0JVSUxUSU5fU1RPUkVVUFMsCiAgSVg4Nl9CVUlMVElOX0xPQURTUywKICBJWDg2X0JVSUxUSU5f
U1RPUkVTUywKICBJWDg2X0JVSUxUSU5fTU9WU1MsCgogIElYODZfQlVJTFRJTl9NT1ZITFBTLAog
IElYODZfQlVJTFRJTl9NT1ZMSFBTLAogIElYODZfQlVJTFRJTl9MT0FESFBTLAogIElYODZfQlVJ
TFRJTl9MT0FETFBTLAogIElYODZfQlVJTFRJTl9TVE9SRUhQUywKICBJWDg2X0JVSUxUSU5fU1RP
UkVMUFMsCgogIElYODZfQlVJTFRJTl9NQVNLTU9WUSwKICBJWDg2X0JVSUxUSU5fTU9WTVNLUFMs
CiAgSVg4Nl9CVUlMVElOX1BNT1ZNU0tCLAoKICBJWDg2X0JVSUxUSU5fTU9WTlRQUywKICBJWDg2
X0JVSUxUSU5fTU9WTlRRLAoKICBJWDg2X0JVSUxUSU5fTE9BRERRQSwKICBJWDg2X0JVSUxUSU5f
TE9BRERRVSwKICBJWDg2X0JVSUxUSU5fU1RPUkVEUUEsCiAgSVg4Nl9CVUlMVElOX1NUT1JFRFFV
LAogIElYODZfQlVJTFRJTl9NT1ZRLAogIElYODZfQlVJTFRJTl9MT0FERCwKICBJWDg2X0JVSUxU
SU5fU1RPUkVELAoKICBJWDg2X0JVSUxUSU5fQ0xSVEksCgogIElYODZfQlVJTFRJTl9QQUNLU1NX
QiwKICBJWDg2X0JVSUxUSU5fUEFDS1NTRFcsCiAgSVg4Nl9CVUlMVElOX1BBQ0tVU1dCLAoKICBJ
WDg2X0JVSUxUSU5fUEFEREIsCiAgSVg4Nl9CVUlMVElOX1BBRERXLAogIElYODZfQlVJTFRJTl9Q
QURERCwKICBJWDg2X0JVSUxUSU5fUEFERFEsCiAgSVg4Nl9CVUlMVElOX1BBRERTQiwKICBJWDg2
X0JVSUxUSU5fUEFERFNXLAogIElYODZfQlVJTFRJTl9QQUREVVNCLAogIElYODZfQlVJTFRJTl9Q
QUREVVNXLAogIElYODZfQlVJTFRJTl9QU1VCQiwKICBJWDg2X0JVSUxUSU5fUFNVQlcsCiAgSVg4
Nl9CVUlMVElOX1BTVUJELAogIElYODZfQlVJTFRJTl9QU1VCUSwKICBJWDg2X0JVSUxUSU5fUFNV
QlNCLAogIElYODZfQlVJTFRJTl9QU1VCU1csCiAgSVg4Nl9CVUlMVElOX1BTVUJVU0IsCiAgSVg4
Nl9CVUlMVElOX1BTVUJVU1csCgogIElYODZfQlVJTFRJTl9QQU5ELAogIElYODZfQlVJTFRJTl9Q
QU5ETiwKICBJWDg2X0JVSUxUSU5fUE9SLAogIElYODZfQlVJTFRJTl9QWE9SLAoKICBJWDg2X0JV
SUxUSU5fUEFWR0IsCiAgSVg4Nl9CVUlMVElOX1BBVkdXLAoKICBJWDg2X0JVSUxUSU5fUENNUEVR
QiwKICBJWDg2X0JVSUxUSU5fUENNUEVRVywKICBJWDg2X0JVSUxUSU5fUENNUEVRRCwKICBJWDg2
X0JVSUxUSU5fUENNUEdUQiwKICBJWDg2X0JVSUxUSU5fUENNUEdUVywKICBJWDg2X0JVSUxUSU5f
UENNUEdURCwKCiAgSVg4Nl9CVUlMVElOX1BFWFRSVywKICBJWDg2X0JVSUxUSU5fUElOU1JXLAoK
ICBJWDg2X0JVSUxUSU5fUE1BRERXRCwKCiAgSVg4Nl9CVUlMVElOX1BNQVhTVywKICBJWDg2X0JV
SUxUSU5fUE1BWFVCLAogIElYODZfQlVJTFRJTl9QTUlOU1csCiAgSVg4Nl9CVUlMVElOX1BNSU5V
QiwKCiAgSVg4Nl9CVUlMVElOX1BNVUxIVVcsCiAgSVg4Nl9CVUlMVElOX1BNVUxIVywKICBJWDg2
X0JVSUxUSU5fUE1VTExXLAoKICBJWDg2X0JVSUxUSU5fUFNBREJXLAogIElYODZfQlVJTFRJTl9Q
U0hVRlcsCgogIElYODZfQlVJTFRJTl9QU0xMVywKICBJWDg2X0JVSUxUSU5fUFNMTEQsCiAgSVg4
Nl9CVUlMVElOX1BTTExRLAogIElYODZfQlVJTFRJTl9QU1JBVywKICBJWDg2X0JVSUxUSU5fUFNS
QUQsCiAgSVg4Nl9CVUlMVElOX1BTUkxXLAogIElYODZfQlVJTFRJTl9QU1JMRCwKICBJWDg2X0JV
SUxUSU5fUFNSTFEsCiAgSVg4Nl9CVUlMVElOX1BTTExXSSwKICBJWDg2X0JVSUxUSU5fUFNMTERJ
LAogIElYODZfQlVJTFRJTl9QU0xMUUksCiAgSVg4Nl9CVUlMVElOX1BTUkFXSSwKICBJWDg2X0JV
SUxUSU5fUFNSQURJLAogIElYODZfQlVJTFRJTl9QU1JMV0ksCiAgSVg4Nl9CVUlMVElOX1BTUkxE
SSwKICBJWDg2X0JVSUxUSU5fUFNSTFFJLAoKICBJWDg2X0JVSUxUSU5fUFVOUENLSEJXLAogIElY
ODZfQlVJTFRJTl9QVU5QQ0tIV0QsCiAgSVg4Nl9CVUlMVElOX1BVTlBDS0hEUSwKICBJWDg2X0JV
SUxUSU5fUFVOUENLTEJXLAogIElYODZfQlVJTFRJTl9QVU5QQ0tMV0QsCiAgSVg4Nl9CVUlMVElO
X1BVTlBDS0xEUSwKCiAgSVg4Nl9CVUlMVElOX1NIVUZQUywKCiAgSVg4Nl9CVUlMVElOX1JDUFBT
LAogIElYODZfQlVJTFRJTl9SQ1BTUywKICBJWDg2X0JVSUxUSU5fUlNRUlRQUywKICBJWDg2X0JV
SUxUSU5fUlNRUlRTUywKICBJWDg2X0JVSUxUSU5fU1FSVFBTLAogIElYODZfQlVJTFRJTl9TUVJU
U1MsCgogIElYODZfQlVJTFRJTl9VTlBDS0hQUywKICBJWDg2X0JVSUxUSU5fVU5QQ0tMUFMsCgog
IElYODZfQlVJTFRJTl9BTkRQUywKICBJWDg2X0JVSUxUSU5fQU5ETlBTLAogIElYODZfQlVJTFRJ
Tl9PUlBTLAogIElYODZfQlVJTFRJTl9YT1JQUywKCiAgSVg4Nl9CVUlMVElOX0VNTVMsCiAgSVg4
Nl9CVUlMVElOX0xETVhDU1IsCiAgSVg4Nl9CVUlMVElOX1NUTVhDU1IsCiAgSVg4Nl9CVUlMVElO
X1NGRU5DRSwKCgogIElYODZfQlVJTFRJTl9GRU1NUywKICBJWDg2X0JVSUxUSU5fUEFWR1VTQiwK
ICBJWDg2X0JVSUxUSU5fUEYySUQsCiAgSVg4Nl9CVUlMVElOX1BGQUNDLAogIElYODZfQlVJTFRJ
Tl9QRkFERCwKICBJWDg2X0JVSUxUSU5fUEZDTVBFUSwKICBJWDg2X0JVSUxUSU5fUEZDTVBHRSwK
ICBJWDg2X0JVSUxUSU5fUEZDTVBHVCwKICBJWDg2X0JVSUxUSU5fUEZNQVgsCiAgSVg4Nl9CVUlM
VElOX1BGTUlOLAogIElYODZfQlVJTFRJTl9QRk1VTCwKICBJWDg2X0JVSUxUSU5fUEZSQ1AsCiAg
SVg4Nl9CVUlMVElOX1BGUkNQSVQxLAogIElYODZfQlVJTFRJTl9QRlJDUElUMiwKICBJWDg2X0JV
SUxUSU5fUEZSU1FJVDEsCiAgSVg4Nl9CVUlMVElOX1BGUlNRUlQsCiAgSVg4Nl9CVUlMVElOX1BG
U1VCLAogIElYODZfQlVJTFRJTl9QRlNVQlIsCiAgSVg4Nl9CVUlMVElOX1BJMkZELAogIElYODZf
QlVJTFRJTl9QTVVMSFJXLAoKCiAgSVg4Nl9CVUlMVElOX1BGMklXLAogIElYODZfQlVJTFRJTl9Q
Rk5BQ0MsCiAgSVg4Nl9CVUlMVElOX1BGUE5BQ0MsCiAgSVg4Nl9CVUlMVElOX1BJMkZXLAogIElY
ODZfQlVJTFRJTl9QU1dBUERTSSwKICBJWDg2X0JVSUxUSU5fUFNXQVBEU0YsCgogIElYODZfQlVJ
TFRJTl9TU0VfWkVSTywKICBJWDg2X0JVSUxUSU5fTU1YX1pFUk8sCgoKICBJWDg2X0JVSUxUSU5f
QUREUEQsCiAgSVg4Nl9CVUlMVElOX0FERFNELAogIElYODZfQlVJTFRJTl9ESVZQRCwKICBJWDg2
X0JVSUxUSU5fRElWU0QsCiAgSVg4Nl9CVUlMVElOX01VTFBELAogIElYODZfQlVJTFRJTl9NVUxT
RCwKICBJWDg2X0JVSUxUSU5fU1VCUEQsCiAgSVg4Nl9CVUlMVElOX1NVQlNELAoKICBJWDg2X0JV
SUxUSU5fQ01QRVFQRCwKICBJWDg2X0JVSUxUSU5fQ01QTFRQRCwKICBJWDg2X0JVSUxUSU5fQ01Q
TEVQRCwKICBJWDg2X0JVSUxUSU5fQ01QR1RQRCwKICBJWDg2X0JVSUxUSU5fQ01QR0VQRCwKICBJ
WDg2X0JVSUxUSU5fQ01QTkVRUEQsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFBELAogIElYODZfQlVJ
TFRJTl9DTVBOTEVQRCwKICBJWDg2X0JVSUxUSU5fQ01QTkdUUEQsCiAgSVg4Nl9CVUlMVElOX0NN
UE5HRVBELAogIElYODZfQlVJTFRJTl9DTVBPUkRQRCwKICBJWDg2X0JVSUxUSU5fQ01QVU5PUkRQ
RCwKICBJWDg2X0JVSUxUSU5fQ01QTkVQRCwKICBJWDg2X0JVSUxUSU5fQ01QRVFTRCwKICBJWDg2
X0JVSUxUSU5fQ01QTFRTRCwKICBJWDg2X0JVSUxUSU5fQ01QTEVTRCwKICBJWDg2X0JVSUxUSU5f
Q01QTkVRU0QsCiAgSVg4Nl9CVUlMVElOX0NNUE5MVFNELAogIElYODZfQlVJTFRJTl9DTVBOTEVT
RCwKICBJWDg2X0JVSUxUSU5fQ01QT1JEU0QsCiAgSVg4Nl9CVUlMVElOX0NNUFVOT1JEU0QsCiAg
SVg4Nl9CVUlMVElOX0NNUE5FU0QsCgogIElYODZfQlVJTFRJTl9DT01JRVFTRCwKICBJWDg2X0JV
SUxUSU5fQ09NSUxUU0QsCiAgSVg4Nl9CVUlMVElOX0NPTUlMRVNELAogIElYODZfQlVJTFRJTl9D
T01JR1RTRCwKICBJWDg2X0JVSUxUSU5fQ09NSUdFU0QsCiAgSVg4Nl9CVUlMVElOX0NPTUlORVFT
RCwKICBJWDg2X0JVSUxUSU5fVUNPTUlFUVNELAogIElYODZfQlVJTFRJTl9VQ09NSUxUU0QsCiAg
SVg4Nl9CVUlMVElOX1VDT01JTEVTRCwKICBJWDg2X0JVSUxUSU5fVUNPTUlHVFNELAogIElYODZf
QlVJTFRJTl9VQ09NSUdFU0QsCiAgSVg4Nl9CVUlMVElOX1VDT01JTkVRU0QsCgogIElYODZfQlVJ
TFRJTl9NQVhQRCwKICBJWDg2X0JVSUxUSU5fTUFYU0QsCiAgSVg4Nl9CVUlMVElOX01JTlBELAog
IElYODZfQlVJTFRJTl9NSU5TRCwKCiAgSVg4Nl9CVUlMVElOX0FORFBELAogIElYODZfQlVJTFRJ
Tl9BTkROUEQsCiAgSVg4Nl9CVUlMVElOX09SUEQsCiAgSVg4Nl9CVUlMVElOX1hPUlBELAoKICBJ
WDg2X0JVSUxUSU5fU1FSVFBELAogIElYODZfQlVJTFRJTl9TUVJUU0QsCgogIElYODZfQlVJTFRJ
Tl9VTlBDS0hQRCwKICBJWDg2X0JVSUxUSU5fVU5QQ0tMUEQsCgogIElYODZfQlVJTFRJTl9TSFVG
UEQsCgogIElYODZfQlVJTFRJTl9MT0FEQVBELAogIElYODZfQlVJTFRJTl9MT0FEVVBELAogIElY
ODZfQlVJTFRJTl9TVE9SRUFQRCwKICBJWDg2X0JVSUxUSU5fU1RPUkVVUEQsCiAgSVg4Nl9CVUlM
VElOX0xPQURTRCwKICBJWDg2X0JVSUxUSU5fU1RPUkVTRCwKICBJWDg2X0JVSUxUSU5fTU9WU0Qs
CgogIElYODZfQlVJTFRJTl9MT0FESFBELAogIElYODZfQlVJTFRJTl9MT0FETFBELAogIElYODZf
QlVJTFRJTl9TVE9SRUhQRCwKICBJWDg2X0JVSUxUSU5fU1RPUkVMUEQsCgogIElYODZfQlVJTFRJ
Tl9DVlREUTJQRCwKICBJWDg2X0JVSUxUSU5fQ1ZURFEyUFMsCgogIElYODZfQlVJTFRJTl9DVlRQ
RDJEUSwKICBJWDg2X0JVSUxUSU5fQ1ZUUEQyUEksCiAgSVg4Nl9CVUlMVElOX0NWVFBEMlBTLAog
IElYODZfQlVJTFRJTl9DVlRUUEQyRFEsCiAgSVg4Nl9CVUlMVElOX0NWVFRQRDJQSSwKCiAgSVg4
Nl9CVUlMVElOX0NWVFBJMlBELAogIElYODZfQlVJTFRJTl9DVlRTSTJTRCwKICBJWDg2X0JVSUxU
SU5fQ1ZUU0k2NDJTRCwKCiAgSVg4Nl9CVUlMVElOX0NWVFNEMlNJLAogIElYODZfQlVJTFRJTl9D
VlRTRDJTSTY0LAogIElYODZfQlVJTFRJTl9DVlRTRDJTUywKICBJWDg2X0JVSUxUSU5fQ1ZUU1My
U0QsCiAgSVg4Nl9CVUlMVElOX0NWVFRTRDJTSSwKICBJWDg2X0JVSUxUSU5fQ1ZUVFNEMlNJNjQs
CgogIElYODZfQlVJTFRJTl9DVlRQUzJEUSwKICBJWDg2X0JVSUxUSU5fQ1ZUUFMyUEQsCiAgSVg4
Nl9CVUlMVElOX0NWVFRQUzJEUSwKCiAgSVg4Nl9CVUlMVElOX01PVk5USSwKICBJWDg2X0JVSUxU
SU5fTU9WTlRQRCwKICBJWDg2X0JVSUxUSU5fTU9WTlREUSwKCiAgSVg4Nl9CVUlMVElOX1NFVFBE
MSwKICBJWDg2X0JVSUxUSU5fU0VUUEQsCiAgSVg4Nl9CVUlMVElOX0NMUlBELAogIElYODZfQlVJ
TFRJTl9TRVRSUEQsCiAgSVg4Nl9CVUlMVElOX0xPQURQRDEsCiAgSVg4Nl9CVUlMVElOX0xPQURS
UEQsCiAgSVg4Nl9CVUlMVElOX1NUT1JFUEQxLAogIElYODZfQlVJTFRJTl9TVE9SRVJQRCwKCgog
IElYODZfQlVJTFRJTl9NQVNLTU9WRFFVLAogIElYODZfQlVJTFRJTl9NT1ZNU0tQRCwKICBJWDg2
X0JVSUxUSU5fUE1PVk1TS0IxMjgsCiAgSVg4Nl9CVUlMVElOX01PVlEyRFEsCiAgSVg4Nl9CVUlM
VElOX01PVkRRMlEsCgogIElYODZfQlVJTFRJTl9QQUNLU1NXQjEyOCwKICBJWDg2X0JVSUxUSU5f
UEFDS1NTRFcxMjgsCiAgSVg4Nl9CVUlMVElOX1BBQ0tVU1dCMTI4LAoKICBJWDg2X0JVSUxUSU5f
UEFEREIxMjgsCiAgSVg4Nl9CVUlMVElOX1BBRERXMTI4LAogIElYODZfQlVJTFRJTl9QQURERDEy
OCwKICBJWDg2X0JVSUxUSU5fUEFERFExMjgsCiAgSVg4Nl9CVUlMVElOX1BBRERTQjEyOCwKICBJ
WDg2X0JVSUxUSU5fUEFERFNXMTI4LAogIElYODZfQlVJTFRJTl9QQUREVVNCMTI4LAogIElYODZf
QlVJTFRJTl9QQUREVVNXMTI4LAogIElYODZfQlVJTFRJTl9QU1VCQjEyOCwKICBJWDg2X0JVSUxU
SU5fUFNVQlcxMjgsCiAgSVg4Nl9CVUlMVElOX1BTVUJEMTI4LAogIElYODZfQlVJTFRJTl9QU1VC
UTEyOCwKICBJWDg2X0JVSUxUSU5fUFNVQlNCMTI4LAogIElYODZfQlVJTFRJTl9QU1VCU1cxMjgs
CiAgSVg4Nl9CVUlMVElOX1BTVUJVU0IxMjgsCiAgSVg4Nl9CVUlMVElOX1BTVUJVU1cxMjgsCgog
IElYODZfQlVJTFRJTl9QQU5EMTI4LAogIElYODZfQlVJTFRJTl9QQU5ETjEyOCwKICBJWDg2X0JV
SUxUSU5fUE9SMTI4LAogIElYODZfQlVJTFRJTl9QWE9SMTI4LAoKICBJWDg2X0JVSUxUSU5fUEFW
R0IxMjgsCiAgSVg4Nl9CVUlMVElOX1BBVkdXMTI4LAoKICBJWDg2X0JVSUxUSU5fUENNUEVRQjEy
OCwKICBJWDg2X0JVSUxUSU5fUENNUEVRVzEyOCwKICBJWDg2X0JVSUxUSU5fUENNUEVRRDEyOCwK
ICBJWDg2X0JVSUxUSU5fUENNUEdUQjEyOCwKICBJWDg2X0JVSUxUSU5fUENNUEdUVzEyOCwKICBJ
WDg2X0JVSUxUSU5fUENNUEdURDEyOCwKCiAgSVg4Nl9CVUlMVElOX1BFWFRSVzEyOCwKICBJWDg2
X0JVSUxUSU5fUElOU1JXMTI4LAoKICBJWDg2X0JVSUxUSU5fUE1BRERXRDEyOCwKCiAgSVg4Nl9C
VUlMVElOX1BNQVhTVzEyOCwKICBJWDg2X0JVSUxUSU5fUE1BWFVCMTI4LAogIElYODZfQlVJTFRJ
Tl9QTUlOU1cxMjgsCiAgSVg4Nl9CVUlMVElOX1BNSU5VQjEyOCwKCiAgSVg4Nl9CVUlMVElOX1BN
VUxVRFEsCiAgSVg4Nl9CVUlMVElOX1BNVUxVRFExMjgsCiAgSVg4Nl9CVUlMVElOX1BNVUxIVVcx
MjgsCiAgSVg4Nl9CVUlMVElOX1BNVUxIVzEyOCwKICBJWDg2X0JVSUxUSU5fUE1VTExXMTI4LAoK
ICBJWDg2X0JVSUxUSU5fUFNBREJXMTI4LAogIElYODZfQlVJTFRJTl9QU0hVRkhXLAogIElYODZf
QlVJTFRJTl9QU0hVRkxXLAogIElYODZfQlVJTFRJTl9QU0hVRkQsCgogIElYODZfQlVJTFRJTl9Q
U0xMVzEyOCwKICBJWDg2X0JVSUxUSU5fUFNMTEQxMjgsCiAgSVg4Nl9CVUlMVElOX1BTTExRMTI4
LAogIElYODZfQlVJTFRJTl9QU1JBVzEyOCwKICBJWDg2X0JVSUxUSU5fUFNSQUQxMjgsCiAgSVg4
Nl9CVUlMVElOX1BTUkxXMTI4LAogIElYODZfQlVJTFRJTl9QU1JMRDEyOCwKICBJWDg2X0JVSUxU
SU5fUFNSTFExMjgsCiAgSVg4Nl9CVUlMVElOX1BTTExEUUkxMjgsCiAgSVg4Nl9CVUlMVElOX1BT
TExXSTEyOCwKICBJWDg2X0JVSUxUSU5fUFNMTERJMTI4LAogIElYODZfQlVJTFRJTl9QU0xMUUkx
MjgsCiAgSVg4Nl9CVUlMVElOX1BTUkFXSTEyOCwKICBJWDg2X0JVSUxUSU5fUFNSQURJMTI4LAog
IElYODZfQlVJTFRJTl9QU1JMRFFJMTI4LAogIElYODZfQlVJTFRJTl9QU1JMV0kxMjgsCiAgSVg4
Nl9CVUlMVElOX1BTUkxESTEyOCwKICBJWDg2X0JVSUxUSU5fUFNSTFFJMTI4LAoKICBJWDg2X0JV
SUxUSU5fUFVOUENLSEJXMTI4LAogIElYODZfQlVJTFRJTl9QVU5QQ0tIV0QxMjgsCiAgSVg4Nl9C
VUlMVElOX1BVTlBDS0hEUTEyOCwKICBJWDg2X0JVSUxUSU5fUFVOUENLSFFEUTEyOCwKICBJWDg2
X0JVSUxUSU5fUFVOUENLTEJXMTI4LAogIElYODZfQlVJTFRJTl9QVU5QQ0tMV0QxMjgsCiAgSVg4
Nl9CVUlMVElOX1BVTlBDS0xEUTEyOCwKICBJWDg2X0JVSUxUSU5fUFVOUENLTFFEUTEyOCwKCiAg
SVg4Nl9CVUlMVElOX0NMRkxVU0gsCiAgSVg4Nl9CVUlMVElOX01GRU5DRSwKICBJWDg2X0JVSUxU
SU5fTEZFTkNFLAoKCiAgSVg4Nl9CVUlMVElOX0FERFNVQlBTLAogIElYODZfQlVJTFRJTl9IQURE
UFMsCiAgSVg4Nl9CVUlMVElOX0hTVUJQUywKICBJWDg2X0JVSUxUSU5fTU9WU0hEVVAsCiAgSVg4
Nl9CVUlMVElOX01PVlNMRFVQLAogIElYODZfQlVJTFRJTl9BRERTVUJQRCwKICBJWDg2X0JVSUxU
SU5fSEFERFBELAogIElYODZfQlVJTFRJTl9IU1VCUEQsCiAgSVg4Nl9CVUlMVElOX0xPQURERFVQ
LAogIElYODZfQlVJTFRJTl9NT1ZERFVQLAogIElYODZfQlVJTFRJTl9MRERRVSwKCiAgSVg4Nl9C
VUlMVElOX01PTklUT1IsCiAgSVg4Nl9CVUlMVElOX01XQUlULAoKICBJWDg2X0JVSUxUSU5fTUFY
Cn07CiMgMjc4NyAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIv
Z2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZXh0ZXJuIGludCBjb25zdCBkYnhfcmVnaXN0ZXJfbWFw
WzUzXTsKZXh0ZXJuIGludCBjb25zdCBkYng2NF9yZWdpc3Rlcl9tYXBbNTNdOwpleHRlcm4gaW50
IGNvbnN0IHN2cjRfZGJ4X3JlZ2lzdGVyX21hcFs1M107CiMgMzAwNCAiL3Zhci90bXAvcG9ydGFn
ZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCIKZW51
bSBwcm9jZXNzb3JfdHlwZQp7CiAgUFJPQ0VTU09SX0kzODYsCiAgUFJPQ0VTU09SX0k0ODYsCiAg
UFJPQ0VTU09SX1BFTlRJVU0sCiAgUFJPQ0VTU09SX1BFTlRJVU1QUk8sCiAgUFJPQ0VTU09SX0s2
LAogIFBST0NFU1NPUl9BVEhMT04sCiAgUFJPQ0VTU09SX1BFTlRJVU00LAogIFBST0NFU1NPUl9L
OCwKICBQUk9DRVNTT1JfbWF4Cn07CgpleHRlcm4gZW51bSBwcm9jZXNzb3JfdHlwZSBpeDg2X3R1
bmU7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X3R1bmVfc3RyaW5nOwoKZXh0ZXJuIGVudW0gcHJv
Y2Vzc29yX3R5cGUgaXg4Nl9hcmNoOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9hcmNoX3N0cmlu
ZzsKCmVudW0gZnBtYXRoX3VuaXQKewogIEZQTUFUSF8zODcgPSAxLAogIEZQTUFUSF9TU0UgPSAy
Cn07CgpleHRlcm4gZW51bSBmcG1hdGhfdW5pdCBpeDg2X2ZwbWF0aDsKZXh0ZXJuIGNvbnN0IGNo
YXIgKml4ODZfZnBtYXRoX3N0cmluZzsKCmVudW0gdGxzX2RpYWxlY3QKewogIFRMU19ESUFMRUNU
X0dOVSwKICBUTFNfRElBTEVDVF9TVU4KfTsKCmV4dGVybiBlbnVtIHRsc19kaWFsZWN0IGl4ODZf
dGxzX2RpYWxlY3Q7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X3Rsc19kaWFsZWN0X3N0cmluZzsK
CmVudW0gY21vZGVsIHsKICBDTV8zMiwKICBDTV9TTUFMTCwKICBDTV9LRVJORUwsCiAgQ01fTUVE
SVVNLAogIENNX0xBUkdFLAogIENNX1NNQUxMX1BJQwp9OwoKZXh0ZXJuIGVudW0gY21vZGVsIGl4
ODZfY21vZGVsOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9jbW9kZWxfc3RyaW5nOwoKCgoKCgpl
bnVtIGFzbV9kaWFsZWN0IHsKICBBU01fQVRULAogIEFTTV9JTlRFTAp9OwoKZXh0ZXJuIGNvbnN0
IGNoYXIgKml4ODZfYXNtX3N0cmluZzsKZXh0ZXJuIGVudW0gYXNtX2RpYWxlY3QgaXg4Nl9hc21f
ZGlhbGVjdDsKCmV4dGVybiBpbnQgaXg4Nl9yZWdwYXJtOwpleHRlcm4gY29uc3QgY2hhciAqaXg4
Nl9yZWdwYXJtX3N0cmluZzsKCmV4dGVybiBpbnQgaXg4Nl9wcmVmZXJyZWRfc3RhY2tfYm91bmRh
cnk7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X3ByZWZlcnJlZF9zdGFja19ib3VuZGFyeV9zdHJp
bmc7CgpleHRlcm4gaW50IGl4ODZfYnJhbmNoX2Nvc3Q7CmV4dGVybiBjb25zdCBjaGFyICppeDg2
X2JyYW5jaF9jb3N0X3N0cmluZzsKCmV4dGVybiBjb25zdCBjaGFyICppeDg2X2RlYnVnX2FyZ19z
dHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X2RlYnVnX2FkZHJfc3RyaW5nOwoKCmV4dGVy
biBjb25zdCBjaGFyICppeDg2X2FsaWduX2xvb3BzX3N0cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIg
Kml4ODZfYWxpZ25fanVtcHNfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9hbGlnbl9m
dW5jc19zdHJpbmc7CgoKZXh0ZXJuIGVudW0gcmVnX2NsYXNzIGNvbnN0IHJlZ2NsYXNzX21hcFs1
M107CgpleHRlcm4gc3RydWN0IF9kb250X3VzZV9ydHhfaGVyZV8gKiBpeDg2X2NvbXBhcmVfb3Aw
OwpleHRlcm4gc3RydWN0IF9kb250X3VzZV9ydHhfaGVyZV8gKiBpeDg2X2NvbXBhcmVfb3AxOwoj
IDMxMDQgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9j
b25maWcvaTM4Ni9pMzg2LmgiCmVudW0gZnBfY3dfbW9kZSB7RlBfQ1dfU1RPUkVELCBGUF9DV19V
TklOSVRJQUxJWkVELCBGUF9DV19BTll9OwojIDMxNjUgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMu
NC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9jb25maWcvaTM4Ni9pMzg2LmgiCnN0cnVjdCBtYWNo
aW5lX2Z1bmN0aW9uCnsKICBzdHJ1Y3Qgc3RhY2tfbG9jYWxfZW50cnkgKnN0YWNrX2xvY2FsczsK
ICBjb25zdCBjaGFyICpzb21lX2xkX25hbWU7CiAgaW50IHNhdmVfdmFycmFyZ3NfcmVnaXN0ZXJz
OwogIGludCBhY2Nlc3Nlc19wcmV2X2ZyYW1lOwogIGludCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGlu
ZzsKCgogIGludCB1c2VfZmFzdF9wcm9sb2d1ZV9lcGlsb2d1ZTsKCgogIGludCB1c2VfZmFzdF9w
cm9sb2d1ZV9lcGlsb2d1ZV9ucmVnczsKfTsKIyA1ICIuL3RtLmgiIDIKIyAxICIvdmFyL3RtcC9w
b3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvY29uZmlnL2kzODYvdW5peC5o
IiAxCiMgNiAiLi90bS5oIiAyCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29y
ay9nY2MtMy40LjIvZ2NjL2NvbmZpZy9pMzg2L2F0dC5oIiAxCiMgNyAiLi90bS5oIiAyCiMgMSAi
L3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2NvbmZpZy9k
YnhlbGYuaCIgMQojIDggIi4vdG0uaCIgMgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4y
LXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9jb25maWcvZWxmb3MuaCIgMQojIDkgIi4vdG0uaCIgMgoj
IDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9jb25m
aWcvc3ZyNC5oIiAxCiMgMTAgIi4vdG0uaCIgMgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMu
NC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9jb25maWcvbGludXguaCIgMQojIDExICIuL3RtLmgi
IDIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2Mv
Y29uZmlnL2kzODYvbGludXguaCIgMQojIDIyNyAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjIt
cjIvd29yay9nY2MtMy40LjIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgiCiMgMSAiL3Vzci9pbmNs
dWRlL3NpZ25hbC5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMyA0CiMgMTAzICIvdXNyL2luY2x1ZGUv
Yml0cy9zaWdzZXQuaCIgMyA0CmV4dGVybiBpbnQgX19zaWdpc21lbWJlciAoX19jb25zdCBfX3Np
Z3NldF90ICosIGludCk7CmV4dGVybiBpbnQgX19zaWdhZGRzZXQgKF9fc2lnc2V0X3QgKiwgaW50
KTsKZXh0ZXJuIGludCBfX3NpZ2RlbHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwojIDExNyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMgNApleHRlcm4gX19pbmxpbmUgaW50IF9fc2lnaXNt
ZW1iZXIgKF9fY29uc3QgX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBs
b25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0g
MSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGlu
dCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKTsgcmV0dXJuIChfX3NldC0+X192YWxbX193b3JkXSAmIF9fbWFzaykgPyAxIDogMDsgfQpl
eHRlcm4gX19pbmxpbmUgaW50IF9fc2lnYWRkc2V0ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBf
X3NpZykgeyB1bnNpZ25lZCBsb25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkg
MSkgPDwgKCgoX19zaWcpIC0gMSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkp
OyB1bnNpZ25lZCBsb25nIGludCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9m
ICh1bnNpZ25lZCBsb25nIGludCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29yZF0gfD0g
X19tYXNrKSwgMCk7IH0KZXh0ZXJuIF9faW5saW5lIGludCBfX3NpZ2RlbHNldCAoIF9fc2lnc2V0
X3QgKl9fc2V0LCBpbnQgX19zaWcpIHsgdW5zaWduZWQgbG9uZyBpbnQgX19tYXNrID0gKCgodW5z
aWduZWQgbG9uZyBpbnQpIDEpIDw8ICgoKF9fc2lnKSAtIDEpICUgKDggKiBzaXplb2YgKHVuc2ln
bmVkIGxvbmcgaW50KSkpKTsgdW5zaWduZWQgbG9uZyBpbnQgX193b3JkID0gKCgoX19zaWcpIC0g
MSkgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSk7IHJldHVybiAoKF9fc2V0LT5f
X3ZhbFtfX3dvcmRdICY9IH5fX21hc2spLCAwKTsgfQojIDM0ICIvdXNyL2luY2x1ZGUvc2lnbmFs
LmgiIDIgMyA0CgoKCgoKCgp0eXBlZGVmIF9fc2lnX2F0b21pY190IHNpZ19hdG9taWNfdDsKCiMg
NTggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln
bnVtLmgiIDEgMyA0CiMgNTkgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKIyA3NSAiL3Vz
ci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3QpIChp
bnQpOwoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWduYWwgKGludCBfX3NpZywg
X19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIDsKCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBz
eXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCiAgICAgOwoK
CgoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHNpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRs
ZXJfdCBfX2hhbmRsZXIpIDsKIyAxMDQgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CgoKCgoK
ZXh0ZXJuIF9fc2lnaGFuZGxlcl90IGJzZF9zaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVy
X3QgX19oYW5kbGVyKSA7CgoKCgoKCmV4dGVybiBpbnQga2lsbCAoX19waWRfdCBfX3BpZCwgaW50
IF9fc2lnKSA7CgoKCgoKCmV4dGVybiBpbnQga2lsbHBnIChfX3BpZF90IF9fcGdycCwgaW50IF9f
c2lnKSA7CgoKCgpleHRlcm4gaW50IHJhaXNlIChpbnQgX19zaWcpIDsKCgoKCmV4dGVybiBfX3Np
Z2hhbmRsZXJfdCBzc2lnbmFsIChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9faGFuZGxlcikg
OwpleHRlcm4gaW50IGdzaWduYWwgKGludCBfX3NpZykgOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25h
bCAoaW50IF9fc2lnLCBfX2NvbnN0IGNoYXIgKl9fcyk7CiMgMTUxICIvdXNyL2luY2x1ZGUvc2ln
bmFsLmgiIDMgNApleHRlcm4gaW50IF9fc2lncGF1c2UgKGludCBfX3NpZ19vcl9tYXNrLCBpbnQg
X19pc19zaWcpOwojIDE2MSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBz
aWdwYXVzZSAoaW50IF9fc2lnKSBfX2FzbV9fICgiX194cGdfc2lncGF1c2UiKTsKIyAxODAgIi91
c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CmV4dGVybiBpbnQgc2lnYmxvY2sgKGludCBfX21hc2sp
IDsKCgpleHRlcm4gaW50IHNpZ3NldG1hc2sgKGludCBfX21hc2spIDsKCgpleHRlcm4gaW50IHNp
Z2dldG1hc2sgKHZvaWQpIDsKIyAxOTUgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CnR5cGVk
ZWYgX19zaWdoYW5kbGVyX3Qgc2lnaGFuZGxlcl90OwoKCgoKdHlwZWRlZiBfX3NpZ2hhbmRsZXJf
dCBzaWdfdDsKIyAyMTEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2lnaW5mby5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZv
LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjYgIi91
c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMiAzIDQKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2ln
dmFsCiAgewogICAgaW50IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0cjsKICB9IHNpZ3Zh
bF90OwojIDUxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDMgNAp0eXBlZGVmIHN0cnVj
dCBzaWdpbmZvCiAgewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAgIGlu
dCBzaV9jb2RlOwoKICAgIHVuaW9uCiAgICAgIHsKIGludCBfcGFkWygoMTI4IC8gc2l6ZW9mIChp
bnQpKSAtIDMpXTsKCgogc3RydWN0CiAgIHsKICAgICBfX3BpZF90IHNpX3BpZDsKICAgICBfX3Vp
ZF90IHNpX3VpZDsKICAgfSBfa2lsbDsKCgogc3RydWN0CiAgIHsKICAgICBpbnQgc2lfdGlkOwog
ICAgIGludCBzaV9vdmVycnVuOwogICAgIHNpZ3ZhbF90IHNpX3NpZ3ZhbDsKICAgfSBfdGltZXI7
CgoKIHN0cnVjdAogICB7CiAgICAgX19waWRfdCBzaV9waWQ7CiAgICAgX191aWRfdCBzaV91aWQ7
CiAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwogICB9IF9ydDsKCgogc3RydWN0CiAgIHsKICAgICBf
X3BpZF90IHNpX3BpZDsKICAgICBfX3VpZF90IHNpX3VpZDsKICAgICBpbnQgc2lfc3RhdHVzOwog
ICAgIF9fY2xvY2tfdCBzaV91dGltZTsKICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgIH0gX3Np
Z2NobGQ7CgoKIHN0cnVjdAogICB7CiAgICAgdm9pZCAqc2lfYWRkcjsKICAgfSBfc2lnZmF1bHQ7
CgoKIHN0cnVjdAogICB7CiAgICAgbG9uZyBpbnQgc2lfYmFuZDsKICAgICBpbnQgc2lfZmQ7CiAg
IH0gX3NpZ3BvbGw7CiAgICAgIH0gX3NpZmllbGRzOwogIH0gc2lnaW5mb190OwojIDEyOSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzIDQKZW51bQp7CiAgU0lfQVNZTkNOTCA9IC02MCwK
CiAgU0lfVEtJTEwgPSAtNiwKCiAgU0lfU0lHSU8sCgogIFNJX0FTWU5DSU8sCgogIFNJX01FU0dR
LAoKICBTSV9USU1FUiwKCiAgU0lfUVVFVUUsCgogIFNJX1VTRVIsCgogIFNJX0tFUk5FTCA9IDB4
ODAKCn07CgoKCmVudW0KewogIElMTF9JTExPUEMgPSAxLAoKICBJTExfSUxMT1BOLAoKICBJTExf
SUxMQURSLAoKICBJTExfSUxMVFJQLAoKICBJTExfUFJWT1BDLAoKICBJTExfUFJWUkVHLAoKICBJ
TExfQ09QUk9DLAoKICBJTExfQkFEU1RLCgp9OwoKCmVudW0KewogIEZQRV9JTlRESVYgPSAxLAoK
ICBGUEVfSU5UT1ZGLAoKICBGUEVfRkxURElWLAoKICBGUEVfRkxUT1ZGLAoKICBGUEVfRkxUVU5E
LAoKICBGUEVfRkxUUkVTLAoKICBGUEVfRkxUSU5WLAoKICBGUEVfRkxUU1VCCgp9OwoKCmVudW0K
ewogIFNFR1ZfTUFQRVJSID0gMSwKCiAgU0VHVl9BQ0NFUlIKCn07CgoKZW51bQp7CiAgQlVTX0FE
UkFMTiA9IDEsCgogIEJVU19BRFJFUlIsCgogIEJVU19PQkpFUlIKCn07CgoKZW51bQp7CiAgVFJB
UF9CUktQVCA9IDEsCgogIFRSQVBfVFJBQ0UKCn07CgoKZW51bQp7CiAgQ0xEX0VYSVRFRCA9IDEs
CgogIENMRF9LSUxMRUQsCgogIENMRF9EVU1QRUQsCgogIENMRF9UUkFQUEVELAoKICBDTERfU1RP
UFBFRCwKCiAgQ0xEX0NPTlRJTlVFRAoKfTsKCgplbnVtCnsKICBQT0xMX0lOID0gMSwKCiAgUE9M
TF9PVVQsCgogIFBPTExfTVNHLAoKICBQT0xMX0VSUiwKCiAgUE9MTF9QUkksCgogIFBPTExfSFVQ
Cgp9OwojIDI3MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzIDQKdHlwZWRlZiBzdHJ1
Y3Qgc2lnZXZlbnQKICB7CiAgICBzaWd2YWxfdCBzaWdldl92YWx1ZTsKICAgIGludCBzaWdldl9z
aWdubzsKICAgIGludCBzaWdldl9ub3RpZnk7CgogICAgdW5pb24KICAgICAgewogaW50IF9wYWRb
KCg2NCAvIHNpemVvZiAoaW50KSkgLSAzKV07CgoKCiBfX3BpZF90IF90aWQ7Cgogc3RydWN0CiAg
IHsKICAgICB2b2lkICgqX2Z1bmN0aW9uKSAoc2lndmFsX3QpOwogICAgIHZvaWQgKl9hdHRyaWJ1
dGU7CiAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgfSBfc2lnZXZfdW47CiAgfSBzaWdldmVudF90
OwoKCgoKCgplbnVtCnsKICBTSUdFVl9TSUdOQUwgPSAwLAoKICBTSUdFVl9OT05FLAoKICBTSUdF
Vl9USFJFQUQsCgoKICBTSUdFVl9USFJFQURfSUQgPSA0Cgp9OwojIDIxMiAiL3Vzci9pbmNsdWRl
L3NpZ25hbC5oIiAyIDMgNAoKCgpleHRlcm4gaW50IHNpZ2VtcHR5c2V0IChzaWdzZXRfdCAqX19z
ZXQpIDsKCgpleHRlcm4gaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVy
biBpbnQgc2lnYWRkc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25vKSA7CgoKZXh0ZXJu
IGludCBzaWdkZWxzZXQgKHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnbm8pIDsKCgpleHRlcm4g
aW50IHNpZ2lzbWVtYmVyIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnbm8pIDsK
CgoKZXh0ZXJuIGludCBzaWdpc2VtcHR5c2V0IChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCkgOwoK
CmV4dGVybiBpbnQgc2lnYW5kc2V0IChzaWdzZXRfdCAqX19zZXQsIF9fY29uc3Qgc2lnc2V0X3Qg
Kl9fbGVmdCwKICAgICAgICBfX2NvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSA7CgoKZXh0ZXJuIGlu
dCBzaWdvcnNldCAoc2lnc2V0X3QgKl9fc2V0LCBfX2NvbnN0IHNpZ3NldF90ICpfX2xlZnQsCiAg
ICAgICBfX2NvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSA7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ2FjdGlvbi5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdhY3Rpb24u
aCIgMyA0CnN0cnVjdCBzaWdhY3Rpb24KICB7CgoKICAgIHVuaW9uCiAgICAgIHsKCiBfX3NpZ2hh
bmRsZXJfdCBzYV9oYW5kbGVyOwoKIHZvaWQgKCpzYV9zaWdhY3Rpb24pIChpbnQsIHNpZ2luZm9f
dCAqLCB2b2lkICopOwogICAgICB9CiAgICBfX3NpZ2FjdGlvbl9oYW5kbGVyOwoKCgoKCgoKICAg
IF9fc2lnc2V0X3Qgc2FfbWFzazsKCgogICAgaW50IHNhX2ZsYWdzOwoKCiAgICB2b2lkICgqc2Ff
cmVzdG9yZXIpICh2b2lkKTsKICB9OwojIDI0NSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMg
NAoKCmV4dGVybiBpbnQgc2lncHJvY21hc2sgKGludCBfX2hvdywgX19jb25zdCBzaWdzZXRfdCAq
X19yZXN0cmljdCBfX3NldCwKICAgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vc2V0KSA7CgoKCgoK
CmV4dGVybiBpbnQgc2lnc3VzcGVuZCAoX19jb25zdCBzaWdzZXRfdCAqX19zZXQpOwoKCmV4dGVy
biBpbnQgc2lnYWN0aW9uIChpbnQgX19zaWcsIF9fY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19y
ZXN0cmljdCBfX2FjdCwKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uICpfX3Jlc3RyaWN0IF9fb2Fj
dCkgOwoKCmV4dGVybiBpbnQgc2lncGVuZGluZyAoc2lnc2V0X3QgKl9fc2V0KSA7CgoKCgoKCmV4
dGVybiBpbnQgc2lnd2FpdCAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnKTsKCgoKCgoKZXh0ZXJuIGludCBzaWd3YWl0aW5mbyAoX19jb25z
dCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9f
aW5mbyk7CgoKCgoKCmV4dGVybiBpbnQgc2lndGltZWR3YWl0IChfX2NvbnN0IHNpZ3NldF90ICpf
X3Jlc3RyaWN0IF9fc2V0LAogICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbywKICAgIF9f
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CgoKCmV4dGVybiBp
bnQgc2lncXVldWUgKF9fcGlkX3QgX19waWQsIGludCBfX3NpZywgX19jb25zdCB1bmlvbiBzaWd2
YWwgX192YWwpCiAgICAgOwojIDMwMCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0ZXJu
IF9fY29uc3QgY2hhciAqX19jb25zdCBfc3lzX3NpZ2xpc3RbNjVdOwpleHRlcm4gX19jb25zdCBj
aGFyICpfX2NvbnN0IHN5c19zaWdsaXN0WzY1XTsKCgpzdHJ1Y3Qgc2lndmVjCiAgewogICAgX19z
aWdoYW5kbGVyX3Qgc3ZfaGFuZGxlcjsKICAgIGludCBzdl9tYXNrOwoKICAgIGludCBzdl9mbGFn
czsKCiAgfTsKIyAzMjQgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CmV4dGVybiBpbnQgc2ln
dmVjIChpbnQgX19zaWcsIF9fY29uc3Qgc3RydWN0IHNpZ3ZlYyAqX192ZWMsCiAgICAgc3RydWN0
IHNpZ3ZlYyAqX19vdmVjKSA7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5o
IiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDMgNAojIDEgIi91
c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxIDMgNAojIDE4ICIvdXNyL2luY2x1ZGUvYXNt
L3NpZ2NvbnRleHQuaCIgMyA0CnN0cnVjdCBfZnByZWcgewogdW5zaWduZWQgc2hvcnQgc2lnbmlm
aWNhbmRbNF07CiB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsK
IHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7
CiB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1yZWcgewogdW5zaWdu
ZWQgbG9uZyBlbGVtZW50WzRdOwp9OwoKc3RydWN0IF9mcHN0YXRlIHsKCiB1bnNpZ25lZCBsb25n
IGN3OwogdW5zaWduZWQgbG9uZyBzdzsKIHVuc2lnbmVkIGxvbmcgdGFnOwogdW5zaWduZWQgbG9u
ZyBpcG9mZjsKIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiB1bnNpZ25lZCBsb25nIGRhdGFvZmY7CiB1
bnNpZ25lZCBsb25nIGRhdGFzZWw7CiBzdHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKIHVuc2lnbmVkIHNo
b3J0IHN0YXR1czsKIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiB1bnNpZ25lZCBsb25nIF9meHNy
X2Vudls2XTsKIHVuc2lnbmVkIGxvbmcgbXhjc3I7CiB1bnNpZ25lZCBsb25nIHJlc2VydmVkOwog
c3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiBzdHJ1Y3QgX3htbXJlZyBfeG1tWzhdOwogdW5z
aWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsKCgoKc3RydWN0IHNpZ2NvbnRleHQgewogdW5zaWdu
ZWQgc2hvcnQgZ3MsIF9fZ3NoOwogdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogdW5zaWduZWQg
c2hvcnQgZXMsIF9fZXNoOwogdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogdW5zaWduZWQgbG9u
ZyBlZGk7CiB1bnNpZ25lZCBsb25nIGVzaTsKIHVuc2lnbmVkIGxvbmcgZWJwOwogdW5zaWduZWQg
bG9uZyBlc3A7CiB1bnNpZ25lZCBsb25nIGVieDsKIHVuc2lnbmVkIGxvbmcgZWR4OwogdW5zaWdu
ZWQgbG9uZyBlY3g7CiB1bnNpZ25lZCBsb25nIGVheDsKIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwog
dW5zaWduZWQgbG9uZyBlcnI7CiB1bnNpZ25lZCBsb25nIGVpcDsKIHVuc2lnbmVkIHNob3J0IGNz
LCBfX2NzaDsKIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogdW5zaWduZWQgbG9uZyBlc3BfYXRfc2ln
bmFsOwogdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwogc3RydWN0IF9mcHN0YXRlICogZnBzdGF0
ZTsKIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDI5ICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDIgMyA0CiMgMzMwICIvdXNyL2luY2x1ZGUv
c2lnbmFsLmgiIDIgMyA0CgoKZXh0ZXJuIGludCBzaWdyZXR1cm4gKHN0cnVjdCBzaWdjb250ZXh0
ICpfX3NjcCkgOwojIDM0MiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBz
aWdpbnRlcnJ1cHQgKGludCBfX3NpZywgaW50IF9faW50ZXJydXB0KSA7CgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3N0YWNrLmgiIDEgMyA0CiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3N0
YWNrLmgiIDMgNApzdHJ1Y3Qgc2lnc3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGludCBz
c19vbnN0YWNrOwogIH07CgoKCmVudW0KewogIFNTX09OU1RBQ0sgPSAxLAoKICBTU19ESVNBQkxF
Cgp9OwojIDUwICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAzIDQKdHlwZWRlZiBzdHJ1
Y3Qgc2lnYWx0c3RhY2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGludCBzc19mbGFnczsKICAg
IHNpemVfdCBzc19zaXplOwogIH0gc3RhY2tfdDsKIyAzNDUgIi91c3IvaW5jbHVkZS9zaWduYWwu
aCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMSAzIDQKIyAyMyAi
L3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc2lnbmFs
LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMiAzIDQKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0LmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVk
ZS9zeXMvdWNvbnRleHQuaCIgMiAzIDQKCgoKdHlwZWRlZiBpbnQgZ3JlZ190OwoKCgoKCnR5cGVk
ZWYgZ3JlZ190IGdyZWdzZXRfdFsxOV07CgoKCmVudW0KewogIFJFR19HUyA9IDAsCgogIFJFR19G
UywKCiAgUkVHX0VTLAoKICBSRUdfRFMsCgogIFJFR19FREksCgogIFJFR19FU0ksCgogIFJFR19F
QlAsCgogIFJFR19FU1AsCgogIFJFR19FQlgsCgogIFJFR19FRFgsCgogIFJFR19FQ1gsCgogIFJF
R19FQVgsCgogIFJFR19UUkFQTk8sCgogIFJFR19FUlIsCgogIFJFR19FSVAsCgogIFJFR19DUywK
CiAgUkVHX0VGTCwKCiAgUkVHX1VFU1AsCgogIFJFR19TUwoKfTsKCgoKc3RydWN0IF9saWJjX2Zw
cmVnCnsKICB1bnNpZ25lZCBzaG9ydCBpbnQgc2lnbmlmaWNhbmRbNF07CiAgdW5zaWduZWQgc2hv
cnQgaW50IGV4cG9uZW50Owp9OwoKc3RydWN0IF9saWJjX2Zwc3RhdGUKewogIHVuc2lnbmVkIGxv
bmcgaW50IGN3OwogIHVuc2lnbmVkIGxvbmcgaW50IHN3OwogIHVuc2lnbmVkIGxvbmcgaW50IHRh
ZzsKICB1bnNpZ25lZCBsb25nIGludCBpcG9mZjsKICB1bnNpZ25lZCBsb25nIGludCBjc3NlbDsK
ICB1bnNpZ25lZCBsb25nIGludCBkYXRhb2ZmOwogIHVuc2lnbmVkIGxvbmcgaW50IGRhdGFzZWw7
CiAgc3RydWN0IF9saWJjX2ZwcmVnIF9zdFs4XTsKICB1bnNpZ25lZCBsb25nIGludCBzdGF0dXM7
Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSAqZnByZWdzZXRfdDsKCgp0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGdyZWdzZXRfdCBncmVnczsKCgogICAgZnByZWdzZXRfdCBmcHJlZ3M7
CiAgICB1bnNpZ25lZCBsb25nIGludCBvbGRtYXNrOwogICAgdW5zaWduZWQgbG9uZyBpbnQgY3Iy
OwogIH0gbWNvbnRleHRfdDsKCgp0eXBlZGVmIHN0cnVjdCB1Y29udGV4dAogIHsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IHVjX2ZsYWdzOwogICAgc3RydWN0IHVjb250ZXh0ICp1Y19saW5rOwogICAg
c3RhY2tfdCB1Y19zdGFjazsKICAgIG1jb250ZXh0X3QgdWNfbWNvbnRleHQ7CiAgICBfX3NpZ3Nl
dF90IHVjX3NpZ21hc2s7CiAgICBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBfX2ZwcmVnc19tZW07CiAg
fSB1Y29udGV4dF90OwojIDM0OCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCgoKCmV4
dGVybiBpbnQgc2lnc3RhY2sgKHN0cnVjdCBzaWdzdGFjayAqX19zcywgc3RydWN0IHNpZ3N0YWNr
ICpfX29zcykgOwoKCgpleHRlcm4gaW50IHNpZ2FsdHN0YWNrIChfX2NvbnN0IHN0cnVjdCBzaWdh
bHRzdGFjayAqX19yZXN0cmljdCBfX3NzLAogICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJp
Y3QgX19vc3MpIDsKCgoKCgoKCmV4dGVybiBpbnQgc2lnaG9sZCAoaW50IF9fc2lnKSA7CgoKZXh0
ZXJuIGludCBzaWdyZWxzZSAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGludCBzaWdpZ25vcmUgKGlu
dCBfX3NpZykgOwoKCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzaWdzZXQgKGludCBfX3NpZywgX19z
aWdoYW5kbGVyX3QgX19kaXNwKSA7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFk
dHlwZXMuaCIgMSAzIDQKIyAzODIgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMSAzIDQKIyAzMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lndGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAoaW50IF9faG93
LAogICAgICAgX19jb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fbmV3bWFzaywKICAgICAg
IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vbGRtYXNrKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
a2lsbCAocHRocmVhZF90IF9fdGhyZWFkaWQsIGludCBfX3NpZ25vKSA7CiMgMzgzICIvdXNyL2lu
Y2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2ln
cnRtaW4gKHZvaWQpIDsKCmV4dGVybiBpbnQgX19saWJjX2N1cnJlbnRfc2lncnRtYXggKHZvaWQp
IDsKCgoKCiMgMjI4ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQu
Mi9nY2MvY29uZmlnL2kzODYvbGludXguaCIgMgojIDEyICIuL3RtLmgiIDIKIyAxICIvdmFyL3Rt
cC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvZGVmYXVsdHMuaCIgMQoj
IDEzICIuL3RtLmgiIDIKIyA0NCAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9n
Y2MtMy40LjIvZ2NjL2xpYmdjYzIuYyIgMgojIDU2ICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQu
Mi1yMi93b3JrL2djYy0zLjQuMi9nY2MvbGliZ2NjMi5jIgojIDEgIi92YXIvdG1wL3BvcnRhZ2Uv
Z2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9saWJnY2MyLmgiIDEKIyAzMyAiL3Zhci90
bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuaCIKZXh0
ZXJuIGludCBfX2djY19iY21wIChjb25zdCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgX19jbGVhcl9jYWNoZSAoY2hhciAqLCBjaGFy
ICopOwpleHRlcm4gdm9pZCBfX2VwcmludGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1
bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKikKICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgpzdHJ1Y3QgZXhjZXB0aW9uX2Rlc2NyaXB0b3I7CmV4dGVybiBzaG9ydCBpbnQgX19nZXRf
ZWhfdGFibGVfbGFuZ3VhZ2UgKHN0cnVjdCBleGNlcHRpb25fZGVzY3JpcHRvciAqKTsKZXh0ZXJu
IHNob3J0IGludCBfX2dldF9laF90YWJsZV92ZXJzaW9uIChzdHJ1Y3QgZXhjZXB0aW9uX2Rlc2Ny
aXB0b3IgKik7CiMgNjcgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMu
NC4yL2djYy9saWJnY2MyLmgiCnR5cGVkZWYgaW50IFFJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9k
ZSAoUUkpKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IFVRSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1v
ZGUgKFFJKSkpOwp0eXBlZGVmIGludCBISXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKEhJKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBVSEl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChISSkp
KTsKCgp0eXBlZGVmIGludCBTSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFNJKSkpOwp0eXBl
ZGVmIHVuc2lnbmVkIGludCBVU0l0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChTSSkpKTsKCgp0
eXBlZGVmIGludCBESXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKERJKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCBVREl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKIyA4OSAiL3Zh
ci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuaCIK
dHlwZWRlZiBmbG9hdCBTRnR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFNGKSkpOwp0eXBlZGVm
IGZsb2F0IERGdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoREYpKSk7CgoKdHlwZWRlZiBmbG9h
dCBYRnR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFhGKSkpOwojIDEyMiAiL3Zhci90bXAvcG9y
dGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuaCIKdHlwZWRlZiBp
bnQgd29yZF90eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKIyAyMjQgIi92
YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dvcmsvZ2NjLTMuNC4yL2djYy9saWJnY2MyLmgi
CmV4dGVybiBESXR5cGUgX19tdWxkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIERJdHlwZSBf
X2RpdmRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gVURJdHlwZSBfX3VkaXZkaTMgKFVESXR5
cGUsIFVESXR5cGUpOwpleHRlcm4gVURJdHlwZSBfX3Vtb2RkaTMgKFVESXR5cGUsIFVESXR5cGUp
OwpleHRlcm4gREl0eXBlIF9fbW9kZGkzIChESXR5cGUsIERJdHlwZSk7CgoKCgpleHRlcm4gVURJ
dHlwZSBfX3VkaXZtb2RkaTQgKFVESXR5cGUsIFVESXR5cGUsIFVESXR5cGUgKik7CgoKCgpleHRl
cm4gREl0eXBlIF9fbmVnZGkyIChESXR5cGUpOwoKCmV4dGVybiBESXR5cGUgX19sc2hyZGkzIChE
SXR5cGUsIHdvcmRfdHlwZSk7CmV4dGVybiBESXR5cGUgX19hc2hsZGkzIChESXR5cGUsIHdvcmRf
dHlwZSk7CmV4dGVybiBESXR5cGUgX19hc2hyZGkzIChESXR5cGUsIHdvcmRfdHlwZSk7CgoKCgpl
eHRlcm4gVVNJdHlwZSBfX3VkaXZfd19zZGl2IChVU0l0eXBlICosIFVTSXR5cGUsIFVTSXR5cGUs
IFVTSXR5cGUpOwoKCmV4dGVybiB3b3JkX3R5cGUgX19jbXBkaTIgKERJdHlwZSwgREl0eXBlKTsK
ZXh0ZXJuIHdvcmRfdHlwZSBfX3VjbXBkaTIgKERJdHlwZSwgREl0eXBlKTsKCmV4dGVybiBTSXR5
cGUgX19hYnN2c2kyIChTSXR5cGUpOwpleHRlcm4gREl0eXBlIF9fYWJzdmRpMiAoREl0eXBlKTsK
ZXh0ZXJuIFNJdHlwZSBfX2FkZHZzaTMgKFNJdHlwZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBf
X2FkZHZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX3N1YnZzaTMgKFNJdHlw
ZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX3N1YnZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0
ZXJuIFNJdHlwZSBfX211bHZzaTMgKFNJdHlwZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX211
bHZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX25lZ3ZzaTIgKFNJdHlwZSk7
CmV4dGVybiBESXR5cGUgX19uZWd2ZGkyIChESXR5cGUpOwoKCmV4dGVybiBESXR5cGUgX19maXhk
ZmRpIChERnR5cGUpOwpleHRlcm4gREl0eXBlIF9fZml4c2ZkaSAoU0Z0eXBlKTsKZXh0ZXJuIERG
dHlwZSBfX2Zsb2F0ZGlkZiAoREl0eXBlKTsKZXh0ZXJuIFNGdHlwZSBfX2Zsb2F0ZGlzZiAoREl0
eXBlKTsKZXh0ZXJuIFVTSXR5cGUgX19maXh1bnNkZnNpIChERnR5cGUpOwpleHRlcm4gVVNJdHlw
ZSBfX2ZpeHVuc3Nmc2kgKFNGdHlwZSk7CmV4dGVybiBESXR5cGUgX19maXh1bnNkZmRpIChERnR5
cGUpOwpleHRlcm4gREl0eXBlIF9fZml4dW5zc2ZkaSAoU0Z0eXBlKTsKCgpleHRlcm4gREl0eXBl
IF9fZml4eGZkaSAoWEZ0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2ZpeHVuc3hmZGkgKFhGdHlwZSk7
CmV4dGVybiBYRnR5cGUgX19mbG9hdGRpeGYgKERJdHlwZSk7CmV4dGVybiBVU0l0eXBlIF9fZml4
dW5zeGZzaSAoWEZ0eXBlKTsKIyAyOTUgIi92YXIvdG1wL3BvcnRhZ2UvZ2NjLTMuNC4yLXIyL3dv
cmsvZ2NjLTMuNC4yL2djYy9saWJnY2MyLmgiCiAgc3RydWN0IERXc3RydWN0IHtTSXR5cGUgbG93
LCBoaWdoO307CgoKCgoKCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBEV3N0cnVjdCBzOwogIERJ
dHlwZSBsbDsKfSBEV3VuaW9uOwoKIyAxICIvdmFyL3RtcC9wb3J0YWdlL2djYy0zLjQuMi1yMi93
b3JrL2djYy0zLjQuMi9nY2MvbG9uZ2xvbmcuaCIgMQojIDMwOSAiL3Zhci90bXAvcG9ydGFnZS9n
Y2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xpYmdjYzIuaCIgMgojIDU3ICIvdmFyL3Rt
cC9wb3J0YWdlL2djYy0zLjQuMi1yMi93b3JrL2djYy0zLjQuMi9nY2MvbGliZ2NjMi5jIiAyCiMg
MTMxMCAiL3Zhci90bXAvcG9ydGFnZS9nY2MtMy40LjItcjIvd29yay9nY2MtMy40LjIvZ2NjL2xp
YmdjYzIuYyIKU0Z0eXBlCl9fZmxvYXRkaXNmIChESXR5cGUgdSkKewoKCgoKCgogIGlmICg1MyA8
IChzaXplb2YgKERJdHlwZSkgKiA4KQogICAgICAmJiA1MyA+ICgoc2l6ZW9mIChESXR5cGUpICog
OCkgLSA1MyArIDI0KSkKICAgIHsKCiAgICAgIGlmICghICgtICgoREl0eXBlKSAxIDw8IDUzKSA8
IHUKICAgICAgJiYgdSA8ICgoREl0eXBlKSAxIDw8IDUzKSkpCiB7CiAgIGlmICgoVURJdHlwZSkg
dSAmICgoKFVESXR5cGUpIDEgPDwgKChzaXplb2YgKERJdHlwZSkgKiA4KSAtIDUzKSkgLSAxKSkK
ICAgICB7CiAgICAgICB1ICY9IH4gKCgoVURJdHlwZSkgMSA8PCAoKHNpemVvZiAoREl0eXBlKSAq
IDgpIC0gNTMpKSAtIDEpOwogICAgICAgdSB8PSAoKFVESXR5cGUpIDEgPDwgKChzaXplb2YgKERJ
dHlwZSkgKiA4KSAtIDUzKSk7CiAgICAgfQogfQogICAgfQoKCgogIERGdHlwZSBmID0gKFNJdHlw
ZSkgKHUgPj4gKHNpemVvZiAoU0l0eXBlKSAqIDgpKTsKICBmICo9ICgoKFVESXR5cGUpIDEpIDw8
ICgoc2l6ZW9mIChTSXR5cGUpICogOCkgLyAyKSk7CiAgZiAqPSAoKChVREl0eXBlKSAxKSA8PCAo
KHNpemVvZiAoU0l0eXBlKSAqIDgpIC8gMikpOwogIGYgKz0gKFVTSXR5cGUpICh1ICYgKCgoKFVE
SXR5cGUpIDEpIDw8IChzaXplb2YgKFNJdHlwZSkgKiA4KSkgLSAxKSk7CgogIHJldHVybiAoU0Z0
eXBlKSBmOwp9Cg==
</data>        

          </attachment>
    </bug>

</bugzilla>