www.delorie.com/archives/browse.cgi   search  
Mail Archives: pgcc/1999/04/14/14:17:25

Date: Wed, 14 Apr 1999 14:26:44 -0400 (EDT)
From: root <root AT sparky DOT student DOT umd DOT edu>
To: pgcc AT delorie DOT com
Subject: Internal Compiler Error
Message-ID: <Pine.LNX.4.10.9904141423330.19269-200000@sparky.student.umd.edu>
MIME-Version: 1.0
Reply-To: pgcc AT delorie DOT com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info.

--42040716-1647221785-924114404=:19269
Content-Type: TEXT/PLAIN; charset=US-ASCII

egcs-1.1.2
with the pgcc patch

on a Pentium 2 / 400 (Deschutes), running
Linux 2.2.5, glibc2.1 (redhat 5.9)

 ../egcs-1.1.2/configure --prefix=/usr/share/egcs/ --enable-shared
--enable-threads --enable-version-specific-runtime-libs

then make bootstrap...

this error does NOT occur when I compile the source without the patch...

the error is at the end, but there is some weirdness prior, so you get the
whole nine yards...

thanx
Rahul Sinha
rsinha AT glue DOT umd DOT edu

------beginning of buffer dump from the actual compile
mv *.o insn-flags.h insn-config.h insn-codes.h insn-output.c insn-recog.c
insn-e 
mit.c insn-extract.c insn-peep.c insn-attr.h insn-attrtab.c insn-opinit.c
genrtl 
.c genrtl.h tree-check.h s-flags s-config s-codes s-mlib s-under s-output
s-reco 
g s-emit s-extract s-peep s-check s-attr s-attrtab s-opinit s-crt s-crtS
s-crt0  
genemit genoutput genrecog genextract genflags gencodes genconfig genpeep
genatt 
rtab genattr genopinit gengenrtl gencheck xgcc cc1 cpp  crtbegin.o
crtbeginS.o c 
rtend.o crtendS.o  gcc-cross cccp cc1obj enquire protoize unprotoize specs
colle 
ct2 collect2 underscore.c gcov *.bp *.greg *.lreg *.combine *.flow *.cse
*.jump  
*.rtl *.tree *.loop *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack *.gcse
*.[si]  
g++ g++-cross cc1plus g77 g77-cross f771  stage1
mv: s-crt: No such file or directory
mv: s-crt0: No such file or directory
mv: crtbegin.o: No such file or directory
mv: crtbeginS.o: No such file or directory
mv: crtend.o: No such file or directory
mv: crtendS.o: No such file or directory
mv: gcc-cross: No such file or directory
mv: cc1obj: No such file or directory
mv: enquire: No such file or directory
mv: protoize: No such file or directory
mv: unprotoize: No such file or directory
mv: collect2: No such file or directory
mv: gcov: No such file or directory
mv: *.bp: No such file or directory
mv: *.greg: No such file or directory
mv: *.lreg: No such file or directory
mv: *.combine: No such file or directory
mv: *.flow: No such file or directory
mv: *.cse: No such file or directory
mv: *.jump: No such file or directory
mv: *.rtl: No such file or directory
mv: *.tree: No such file or directory
mv: *.loop: No such file or directory
mv: *.dbr: No such file or directory
mv: *.jump2: No such file or directory
mv: *.sched: No such file or directory
mv: *.cse2: No such file or directory
mv: *.sched2: No such file or directory
mv: *.stack: No such file or directory
mv: *.gcse: No such file or directory
mv: *.[si]: No such file or directory
mv: g++-cross: No such file or directory
mv: cc1plus: No such file or directory
mv: g77: No such file or directory
mv: g77-cross: No such file or directory
mv: f771: No such file or directory
make[2]: [stage1-start] Error 1 (ignored)
if [ -f as ] ; then ln -s ../as stage1 ; else true ; fi
if [ -f ld ] ; then ln -s ../ld stage1 ; else true ; fi
if [ -f collect-ld ] ; then ln -s ../collect-ld stage1 ; else true ; fi
rm -f stage1/libgcc.a
cp libgcc.a stage1
if [ -f ` if [ -f /home/root/nc/egcs_out/gcc/../binutils/ranlib ] ; then
echo /h 
ome/root/nc/egcs_out/gcc/../binutils/ranlib ; else if [
"i686-pc-linux-gnu" = "i 
686-pc-linux-gnu" ] ; then echo ranlib; else t='s,x,x,'; echo ranlib | sed
-e $t 
 ; fi; fi` ] || ( [ "i686-pc-linux-gnu" = "i686-pc-linux-gnu" ] && [ -f
/usr/bin 
/ranlib -o -f /bin/ranlib ] ) ; then ` if [ -f
/home/root/nc/egcs_out/gcc/../bin 
utils/ranlib ] ; then echo /home/root/nc/egcs_out/gcc/../binutils/ranlib ;
else  
if [ "i686-pc-linux-gnu" = "i686-pc-linux-gnu" ] ; then echo ranlib; else
t='s,x 
,x,'; echo ranlib | sed -e $t ; fi; fi` stage1/libgcc.a; else true; fi
for f in .. ; do if [ x${f} != x.. ]; then \
  cp stage1/${f} . ; \
else true; \
fi; done
mv cp/*.o stage1/cp
mv: cp/*.o: No such file or directory
make[2]: [c++.stage1] Error 1 (ignored)
if [ -f lang-f77 ]; then \
  mv -f f/*.o f/fini f/stamp-str f/str-*.h f/str-*.j lang-f77 g77.c g77.o
g77spe 
c.o g77version.o stage1/f; \
fi
mv objc/*.o stage1/objc
mv: objc/*.o: No such file or directory
make[2]: [objc.stage1] Error 1 (ignored)
mv cc1obj stage1
mv: cc1obj: No such file or directory
make[2]: [objc.stage1] Error 1 (ignored)
mv libobjc.a stage1
mv: libobjc.a: No such file or directory
make[2]: [objc.stage1] Error 1 (ignored)
make[2]: Leaving directory `/home/root/nc/egcs_out/gcc'
make CC="stage1/xgcc -Bstage1/" CFLAGS=" -O2 -g -O2" LDFLAGS=""
libdir=/usr/shar 
e/egcs//lib STAGE_PREFIX=stage1/ LANGUAGES="c proto gcov  c++ f77 objc"
make[2]: Entering directory `/home/root/nc/egcs_out/gcc'
stage1/xgcc -Bstage1/  -DIN_GCC    -O2 -g -O2  -DHAVE_CONFIG_H -DHAIFA
-I. - 
I../../egcs-1.1.2/gcc -I../../egcs-1.1.2/gcc/config \

-DGCC_INCLUDE_DIR=\"/usr/share/egcs//lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.91.6 
6/include\" \

-DGPLUSPLUS_INCLUDE_DIR=\"/usr/share/egcs//lib/gcc-lib/i686-pc-linux-gnu/pgcc- 
2.91.66/include/g++\" \
  -DOLD_GPLUSPLUS_INCLUDE_DIR=\"/usr/share/egcs//lib/g++-include\" \
  -DLOCAL_INCLUDE_DIR=\"/usr/local/include\" \
  -DCROSS_INCLUDE_DIR=\"/usr/share/egcs//i686-pc-linux-gnu/sys-include\" \
  -DTOOL_INCLUDE_DIR=\"/usr/share/egcs//i686-pc-linux-gnu/include\" \
  -c `echo ../../egcs-1.1.2/gcc/cccp.c | sed 's,^\./,,'`
stage1/xgcc -Bstage1/  -DIN_GCC    -O2 -g -O2  -DHAVE_CONFIG_H -DHAIFA
-I. - 
I../../egcs-1.1.2/gcc -I../../egcs-1.1.2/gcc/config -c
../../egcs-1.1.2/gcc/cexp 
.c
../../egcs-1.1.2/gcc/haifa-sched.c:8259: Internal compiler error in
function upd 
ate_flow_info
make[2]: *** [cexp.o] Error 1
make[2]: Leaving directory `/home/root/nc/egcs_out/gcc'
make[1]: *** [bootstrap] Error 2
make[1]: Leaving directory `/home/root/nc/egcs_out/gcc'
make: *** [bootstrap] Error 2
[root AT sparky egcs_out]# 



--42040716-1647221785-924114404=:19269
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pgcc.error.report"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine DOT LNX DOT 4 DOT 10 DOT 9904141426440 DOT 19269 AT sparky DOT student DOT umd DOT edu>
Content-Description: PREPROCESSOR RESULTS
Content-Disposition: attachment; filename="pgcc.error.report"

IyAxICIuLi8uLi9lZ2NzLTEuMS4yL2djYy9jZXhwLmMiDQoNCiANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAyNiAiY2V4cC55
Ig0KDQoNCg0KDQojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMw0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHZvaWQgKl9fZ251Y192YV9saXN0Ow0KDQoNCg0KIA0KDQoN
Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnZvaWQgdmFfZW5k
IChfX2dudWNfdmFfbGlzdCk7CQkgDQoNCg0KIA0KDQoNCg0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQogDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiMgMTY4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzDQoNCg0KIA0K
DQoNCg0KDQogDQoNCiANCg0KIA0KDQp0eXBlZGVmIF9fZ251Y192YV9saXN0
IHZhX2xpc3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojIDMwICJjZXhwLnkiIDINCg0KDQoNCg0KDQoNCg0K
DQoNCiMgMSAiLi4vLi4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDENCiAN
Cg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRp
by5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K
DQoNCg0KIA0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQogDQojIDEzNyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMNCg0KDQogDQoNCg0KDQoN
Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAxOTUgIi91
c3IvbG9jYWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAzDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiANCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K
DQoNCiANCg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL2NkZWZzLmgi
IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiANCg0KDQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0K
DQogDQoNCg0KDQoNCiMgNzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2Rl
ZnMuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KIyAxMDMg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMw0KDQoNCg0KIA0K
DQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQojIDI0OSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMw0KDQoNCiANCg0KDQoN
Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQogDQoNCg0KDQoNCg0KDQoN
Cg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMw0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAyNzcgIi91c3IvbG9j
YWwvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMNCg0KDQoNCg0KIyAyNyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCiANCg0KDQoNCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQoNCg0KDQoNCg0KDQogDQoN
Cg0KIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9l
Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KIA0KDQoN
CiANCg0KDQoNCg0KDQogDQoNCg0KIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMw0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQogDQoNCiMgMTMx
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45
MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IA0KDQoNCg0KDQogDQoNCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz
DQoNCg0KIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoN
CiANCg0KIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQoNCg0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCg0K
DQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzDQoNCg0KDQoNCg0KDQogDQoNCg0KIyAxOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRk
ZWYuaCIgMw0KDQoNCg0KIA0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KIyA2
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K
DQoNCg0KIA0KDQogDQoNCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz
DQoNCg0KIA0KDQogDQoNCg0KIyAxODggIi91c3IvbGliL2djYy1saWIvaTM4
Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgi
IDMNCg0KDQoNCg0KDQogDQoNCg0KDQoNCiANCg0KIyAyNzEgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1
ZGUvc3RkZGVmLmgiIDMNCg0KDQojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMw0KDQoNCiANCg0KIA0KDQojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu
aCIgMw0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90
eXBlcy5oIiAyIDMNCg0KDQogDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191
X2NoYXI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsNCnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7DQp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgX191X2xvbmc7DQoNCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7DQpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsNCiMgNDggIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMNCg0KdHlwZWRlZiBzaWdu
ZWQgY2hhciBfX2ludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp
bnQ4X3Q7DQp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Ow0K
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsNCnR5cGVk
ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VpbnQzMl90Ow0KDQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVk
IGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Ow0KX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsNCg0KdHlw
ZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Ow0KDQp0eXBlZGVmIF9fdV9xdWFk
X3QgX19kZXZfdDsJCSANCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIA0K
dHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkgDQp0eXBlZGVmIF9fdV9sb25n
IF9faW5vX3Q7CQkgDQp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgDQp0
eXBlZGVmIF9fdV9pbnQgX19ubGlua190OyAJCSANCnR5cGVkZWYgbG9uZyBp
bnQgX19vZmZfdDsJCSANCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkg
DQp0eXBlZGVmIGludCBfX3BpZF90OwkJCSANCnR5cGVkZWYgaW50IF9fc3Np
emVfdDsJCQkgDQp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIA0KdHlw
ZWRlZiBfX3F1YWRfdCBfX3JsaW02NF90OwkJIA0KdHlwZWRlZiBfX3VfaW50
IF9faWRfdDsJCQkgDQoNCnR5cGVkZWYgc3RydWN0DQogIHsNCiAgICBpbnQg
X192YWxbMl07DQogIH0gX19mc2lkX3Q7CQkJCSANCg0KIA0KdHlwZWRlZiBp
bnQgX19kYWRkcl90OwkJCSANCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Ow0K
dHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsNCnR5cGVkZWYgbG9uZyBpbnQg
X19zd2Jsa190OwkJIA0KDA0KdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7
DQoNCiANCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mZF9tYXNrOw0K
DQogDQoNCg0KIA0KDQoNCg0KDQogDQp0eXBlZGVmIHN0cnVjdA0KICB7DQog
ICAgIA0KDQoNCg0KDQoNCiAgICBfX2ZkX21hc2sgX19mZHNfYml0c1sxMDI0
ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOw0KDQoNCiAgfSBfX2Zk
X3NldDsNCg0KDQp0eXBlZGVmIGludCBfX2tleV90Ow0KDQogDQp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsNCg0KDQogDQoNCiAN
CnR5cGVkZWYgX191X2xvbmcgX19ibGtjbnRfdDsNCnR5cGVkZWYgX191X3F1
YWRfdCBfX2Jsa2NudDY0X3Q7DQoNCiANCnR5cGVkZWYgbG9uZyBpbnQgX19m
c2Jsa2NudF90Ow0KdHlwZWRlZiBfX3F1YWRfdCBfX2ZzYmxrY250NjRfdDsN
Cg0KIA0KdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7DQp0eXBlZGVm
IF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7DQoNCiANCnR5cGVkZWYgX191
X2xvbmcgX19pbm82NF90Ow0KDQogDQp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm
NjRfdDsNCg0KIA0KdHlwZWRlZiBpbnQgX190X3NjYWxhcl90Ow0KdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX190X3VzY2FsYXJfdDsNCg0KIA0KdHlwZWRlZiBp
bnQgX19pbnRwdHJfdDsNCg0KDQogDQoNCg0KDQoNCg0KIyA0MCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCg0KDQoNCg0KDQogDQp0
eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOw0KDQoNCg0KDQoNCg0KDQoN
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDEgMw0KIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25maWcuaCIg
MSAzDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2xp
Yi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQojIDE5ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQogDQoNCg0KIA0KDQoNCg0K
DQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0K
IA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxMzEgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1
ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCiANCg0KDQojIDE4OCAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5j
bHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0KDQoNCg0KIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90Ow0KDQoNCg0KDQog
DQoNCiANCg0KIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQoN
Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KIyAxNCAiL3Vzci9sb2NhbC9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7DQp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X0hJX18pKSk7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsNCg0KDQoNCg0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoN
Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAzMCAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIyA2NyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMNCg0KDQogDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA5OCAiL3Vzci9sb2NhbC9pbmNs
dWRlL2xpYmlvLmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnN0cnVj
dCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOw0KDQogDQoNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190Ow0KDQoNCg0KIA0KDQpz
dHJ1Y3QgX0lPX21hcmtlciB7DQogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4
dDsNCiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsNCiAgIA0KDQogICANCiAg
aW50IF9wb3M7DQojIDE4NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgi
IDMNCg0KfTsNCg0Kc3RydWN0IF9JT19GSUxFIHsNCiAgaW50IF9mbGFnczsJ
CSANCg0KDQogICANCiAgIA0KICBjaGFyKiBfSU9fcmVhZF9wdHI7CSANCiAg
Y2hhciogX0lPX3JlYWRfZW5kOwkgDQogIGNoYXIqIF9JT19yZWFkX2Jhc2U7
CSANCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSANCiAgY2hhciogX0lPX3dy
aXRlX3B0cjsJIA0KICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgDQogIGNoYXIq
IF9JT19idWZfYmFzZTsJIA0KICBjaGFyKiBfSU9fYnVmX2VuZDsJIA0KICAg
DQogIGNoYXIgKl9JT19zYXZlX2Jhc2U7ICANCiAgY2hhciAqX0lPX2JhY2t1
cF9iYXNlOyAgIA0KICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICANCg0KICBzdHJ1
Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7DQoNCiAgc3RydWN0IF9JT19GSUxF
ICpfY2hhaW47DQoNCiAgaW50IF9maWxlbm87DQogIGludCBfYmxrc2l6ZTsN
CiAgX19vZmZfdCAgIF9vbGRfb2Zmc2V0OyAgDQoNCg0KICAgDQogIHVuc2ln
bmVkIHNob3J0IF9jdXJfY29sdW1uOw0KICBzaWduZWQgY2hhciBfdnRhYmxl
X29mZnNldDsNCiAgY2hhciBfc2hvcnRidWZbMV07DQoNCiAgIA0KDQogIF9J
T19sb2NrX3QgKl9sb2NrOw0KDQoNCg0KDQoNCg0KDQoNCiAgX19vZmY2NF90
ICAgX29mZnNldDsNCiAgIA0KICBpbnQgX3VudXNlZDJbMTZdOw0KDQp9Ow0K
DQoNCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOw0KDQoNCnN0
cnVjdCBfSU9fRklMRV9wbHVzOw0KZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3RkaW5fOw0KZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3Rkb3V0XzsNCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVf
cGx1cyBfSU9fMl8xX3N0ZGVycl87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IyAyNzYgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiBpbnQgX191bmRlcmZsb3cgIChfSU9fRklMRSAqKSAg
ICA7DQpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7DQpl
eHRlcm4gaW50IF9fb3ZlcmZsb3cgIChfSU9fRklMRSAqLCBpbnQpICAgIDsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBf
SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7DQpleHRlcm4gaW50IF9J
T19wdXRjICAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApICAgIDsNCmV4dGVy
biBpbnQgX0lPX2Zlb2YgIChfSU9fRklMRSAqX19mcCkgICAgOw0KZXh0ZXJu
IGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICAgIDsNCg0KZXh0
ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICAg
IDsNCg0KIA0KDQoNCg0KZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAgKF9J
T19GSUxFICopICAgIDsNCmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAg
KF9JT19GSUxFICopICAgIDsNCmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmls
ZSAgKF9JT19GSUxFICopICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgIChfSU9fRklMRSAqICAsIGNvbnN0
IGNoYXIgKiAgLA0KCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqICAp
ICAgIDsNCmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKiAg
LCBjb25zdCBjaGFyICogICwNCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkg
ICAgOw0KZXh0ZXJuIF9fc3NpemVfdCAgIF9JT19wYWRuICAoX0lPX0ZJTEUg
KiwgaW50LCBfX3NzaXplX3QgICkgICAgOw0KZXh0ZXJuIHNpemVfdCAgIF9J
T19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90ICApICAgIDsN
Cg0KZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUg
KiwgX19vZmY2NF90ICAsIGludCwgaW50KSAgICA7DQpleHRlcm4gX19vZmY2
NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwg
aW50KSAgICA7DQoNCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
ICAoX0lPX0ZJTEUgKikgICAgOw0KDQoNCg0KDQoNCg0KIyA1NyAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KDQoNCiANCg0KdHlwZWRlZiBf
X29mZl90ICBmcG9zX3Q7DQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQog
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMNCiANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiMgMTEwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzDQoNCg0KDQogDQpleHRlcm4gRklMRSAqc3RkaW47CQkgDQpl
eHRlcm4gRklMRSAqc3Rkb3V0OwkJIA0KZXh0ZXJuIEZJTEUgKnN0ZGVycjsJ
CSANCg0KDQogDQpleHRlcm4gaW50IHJlbW92ZSAgKF9fY29uc3QgY2hhciAq
X19maWxlbmFtZSkgICAgOw0KIA0KZXh0ZXJuIGludCByZW5hbWUgIChfX2Nv
bnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSAgICA7DQoN
Cg0KIA0KDQpleHRlcm4gRklMRSAqdG1wZmlsZSAgKHZvaWQpICAgIDsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KIA0KZXh0ZXJuIGNoYXIgKnRtcG5hbSAgKGNo
YXIgKl9fcykgICAgOw0KDQoNCiANCg0KZXh0ZXJuIGNoYXIgKnRtcG5hbV9y
ICAoY2hhciAqX19zKSAgICA7DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCmV4
dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19j
b25zdCBjaGFyICpfX3BmeCkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIGludCBm
Y2xvc2UgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KIA0KZXh0ZXJuIGludCBm
Zmx1c2ggIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCiANCmV4dGVybiBp
bnQgZmZsdXNoX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0K
DQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiBGSUxFICpmb3BlbiAgKF9fY29u
c3QgY2hhciAqICAgX19maWxlbmFtZSwNCgkJCSBfX2NvbnN0IGNoYXIgKiAg
IF9fbW9kZXMpICAgIDsNCiANCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19j
b25zdCBjaGFyICogICBfX2ZpbGVuYW1lLA0KCQkJICAgX19jb25zdCBjaGFy
ICogICBfX21vZGVzLA0KCQkJICAgRklMRSAqICAgX19zdHJlYW0pICAgIDsN
CiMgMTk3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogDQpleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgICAgOw0KDQoNCiMgMjIzICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0KIA0KDQpleHRl
cm4gdm9pZCBzZXRidWYgIChGSUxFICogICBfX3N0cmVhbSwgY2hhciAqICAg
X19idWYpICAgIDsNCiANCg0KDQpleHRlcm4gaW50IHNldHZidWYgIChGSUxF
ICogICBfX3N0cmVhbSwgY2hhciAqICAgX19idWYsDQoJCQkgaW50IF9fbW9k
ZXMsIHNpemVfdCBfX24pICAgIDsNCg0KDQogDQoNCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlciAgKEZJTEUgKiAgIF9fc3RyZWFtLCBjaGFyICogICBfX2J1ZiwN
CgkJCSAgICBzaXplX3QgX19zaXplKSAgICA7DQoNCiANCmV4dGVybiB2b2lk
IHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0K
ZXh0ZXJuIGludCBmcHJpbnRmICAoRklMRSAqICAgX19zdHJlYW0sDQoJCQkg
X19jb25zdCBjaGFyICogICBfX2Zvcm1hdCwgLi4uKSAgICA7DQogDQpleHRl
cm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4u
LikgICAgOw0KIA0KZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqICAgX19z
LA0KCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgICAgOw0K
DQogDQpleHRlcm4gaW50IHZmcHJpbnRmICAoRklMRSAqICAgX19zLA0KCQkJ
ICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LA0KCQkJICBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICAgIDsNCiANCmV4dGVybiBpbnQgdnByaW50ZiAgKF9f
Y29uc3QgY2hhciAqICAgX19mb3JtYXQsDQoJCQkgX19nbnVjX3ZhX2xpc3Qg
IF9fYXJnKSAgICA7DQogDQpleHRlcm4gaW50IHZzcHJpbnRmICAoY2hhciAq
ICAgX19zLA0KCQkJICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LA0KCQkJ
ICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAgIDsNCg0KDQogDQpleHRlcm4g
aW50IHNucHJpbnRmICAoY2hhciAqICAgX19zLCBzaXplX3QgX19tYXhsZW4s
DQoJCQkgIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgICAgDQog
ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz
LCA0KSkpOw0KDQpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hhciAqICAg
X19zLCBzaXplX3QgX19tYXhsZW4sDQoJCQkgICAgIF9fY29uc3QgY2hhciAq
ICAgX19mb3JtYXQsDQoJCQkgICAgIF9fZ251Y192YV9saXN0ICBfX2FyZykg
ICAgDQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50
Zl9fLCAzLCAwKSkpOw0KZXh0ZXJuIGludCB2c25wcmludGYgIChjaGFyICog
ICBfX3MsIHNpemVfdCBfX21heGxlbiwNCgkJCSAgIF9fY29uc3QgY2hhciAq
ICAgX19mb3JtYXQsDQoJCQkgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAg
IA0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf
XywgMywgMCkpKTsNCg0KDQojIDMwMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0
ZGlvLmgiIDMNCg0KDQoNCiANCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAq
ICAgX19zdHJlYW0sDQoJCQlfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LCAu
Li4pICAgIDsNCiANCmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIg
KiAgIF9fZm9ybWF0LCAuLi4pICAgIDsNCiANCmV4dGVybiBpbnQgc3NjYW5m
ICAoX19jb25zdCBjaGFyICogICBfX3MsDQoJCQlfX2NvbnN0IGNoYXIgKiAg
IF9fZm9ybWF0LCAuLi4pICAgIDsNCg0KIyAzMzAgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdGRpby5oIiAzDQoNCg0KDQogDQpleHRlcm4gaW50IGZnZXRjICAo
RklMRSAqX19zdHJlYW0pICAgIDsNCmV4dGVybiBpbnQgZ2V0YyAgKEZJTEUg
Kl9fc3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgZ2V0Y2hhciAgKHZv
aWQpICAgIDsNCg0KIA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGdldGNfdW5s
b2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOw0KZXh0ZXJuIGludCBnZXRj
aGFyX3VubG9ja2VkICAodm9pZCkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIGlu
dCBmZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCg0K
DQogDQpleHRlcm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pICAgIDsNCmV4dGVybiBpbnQgcHV0YyAgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgcHV0Y2hhciAgKGludCBf
X2MpICAgIDsNCg0KIA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGZwdXRjX3Vu
bG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsNCg0KDQoN
CiANCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUg
Kl9fc3RyZWFtKSAgICA7DQpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQg
IChpbnQgX19jKSAgICA7DQoNCg0KDQoNCiANCmV4dGVybiBpbnQgZ2V0dyAg
KEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCiANCmV4dGVybiBpbnQgcHV0dyAg
KGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgICA7DQoNCg0KDQogDQpleHRl
cm4gY2hhciAqZmdldHMgIChjaGFyICogICBfX3MsIGludCBfX24sDQoJCQkg
RklMRSAqICAgX19zdHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KIA0KDQpl
eHRlcm4gY2hhciAqZ2V0cyAgKGNoYXIgKl9fcykgICAgOw0KDQoNCiMgNDIw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMw0KDQoNCg0KIA0KZXh0
ZXJuIGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqICAgX19zLA0KCQkgICAg
ICAgRklMRSAqICAgX19zdHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KIA0K
ZXh0ZXJuIGludCBwdXRzICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsNCg0K
DQogDQpleHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSAgICA7DQoNCg0KIA0KZXh0ZXJuIHNpemVfdCBmcmVhZCAgKHZvaWQg
KiAgIF9fcHRyLCBzaXplX3QgX19zaXplLA0KCQkJICBzaXplX3QgX19uLCBG
SUxFICogICBfX3N0cmVhbSkgICAgOw0KIA0KZXh0ZXJuIHNpemVfdCBmd3Jp
dGUgIChfX2NvbnN0IHZvaWQgKiAgIF9fcHRyLCBzaXplX3QgX19zaXplLA0K
CQkJICAgc2l6ZV90IF9fbiwgRklMRSAqICAgX19zKSAgICA7DQoNCg0KIA0K
ZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAgKHZvaWQgKiAgIF9fcHRy
LCBzaXplX3QgX19zaXplLA0KCQkJCSAgIHNpemVfdCBfX24sIEZJTEUgKiAg
IF9fc3RyZWFtKSAgICA7DQpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tl
ZCAgKF9fY29uc3Qgdm9pZCAqICAgX19wdHIsDQoJCQkJICAgIHNpemVfdCBf
X3NpemUsIHNpemVfdCBfX24sDQoJCQkJICAgIEZJTEUgKiAgIF9fc3RyZWFt
KSAgICA7DQoNCg0KDQogDQpleHRlcm4gaW50IGZzZWVrICAoRklMRSAqX19z
dHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpICAgIDsNCiAN
CmV4dGVybiBsb25nIGludCBmdGVsbCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7
DQogDQpleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVhbSkgICAg
Ow0KDQogDQoNCg0KDQoNCiANCg0KDQp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K
ZXh0ZXJuIGludCBmZ2V0cG9zICAoRklMRSAqICAgX19zdHJlYW0sDQoJCQkg
ZnBvc190ICogICBfX3BvcykgICAgOw0KIA0KZXh0ZXJuIGludCBmc2V0cG9z
ICAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgICAg
Ow0KIyA1MTkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0K
IyA1MjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0KIA0K
ZXh0ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgICAgOw0K
IA0KZXh0ZXJuIGludCBmZW9mICAoRklMRSAqX19zdHJlYW0pICAgIDsNCiAN
CmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0K
DQogDQpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAgKEZJTEUgKl9f
c3RyZWFtKSAgICA7DQpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxF
ICpfX3N0cmVhbSkgICAgOw0KZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0KZXh0ZXJuIHZvaWQg
cGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsNCg0KIA0KDQoNCmV4
dGVybiBpbnQgc3lzX25lcnI7DQpleHRlcm4gX19jb25zdCBjaGFyICpfX2Nv
bnN0IHN5c19lcnJsaXN0W107DQoNCg0KDQoNCg0KDQoNCg0KIA0KZXh0ZXJu
IGludCBmaWxlbm8gIChGSUxFICpfX3N0cmVhbSkgICAgOw0KDQoNCg0KIA0K
ZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkg
ICAgOw0KDQoNCg0KDQoNCiANCmV4dGVybiBGSUxFICpwb3BlbiAgKF9fY29u
c3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpICAg
IDsNCg0KIA0KZXh0ZXJuIGludCBwY2xvc2UgIChGSUxFICpfX3N0cmVhbSkg
ICAgOw0KDQoNCg0KDQogDQpleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIg
Kl9fcykgICAgOw0KDQoNCg0KDQoNCg0KDQoNCg0KIyA2MDMgIi91c3IvbG9j
YWwvaW5jbHVkZS9zdGRpby5oIiAzDQoNCg0KDQoNCiANCg0KIA0KZXh0ZXJu
IHZvaWQgZmxvY2tmaWxlICAoRklMRSAqX19zdHJlYW0pICAgIDsNCg0KIA0K
DQpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAg
ICA7DQoNCiANCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlICAoRklMRSAqX19z
dHJlYW0pICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzDQogDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KIA0KZXh0ZXJuIF9faW5saW5lICBpbnQNCnZwcmludGYgKF9f
Y29uc3QgY2hhciAqICAgX19mbXQsIF9fZ251Y192YV9saXN0ICBfX2FyZykg
IA0Kew0KICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJn
KTsNCn0NCg0KIA0KZXh0ZXJuIF9faW5saW5lICBpbnQNCmdldGNoYXIgKHZv
aWQpICANCnsNCiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7DQp9DQoNCg0K
DQogDQpleHRlcm4gX19pbmxpbmUgIGludA0KZ2V0Y191bmxvY2tlZCAoRklM
RSAqX19mcCkgIA0Kew0KICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9w
dHIgPj0gKCBfX2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2Zw
ICkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCBfX2ZwICktPl9JT19yZWFkX3B0
cisrKSA7DQp9DQoNCiANCmV4dGVybiBfX2lubGluZSAgaW50DQpnZXRjaGFy
X3VubG9ja2VkICh2b2lkKSAgDQp7DQogIHJldHVybiAoKCBzdGRpbiApLT5f
SU9fcmVhZF9wdHIgPj0gKCBzdGRpbiApLT5fSU9fcmVhZF9lbmQgPyBfX3Vm
bG93ICggc3RkaW4gKSA6ICoodW5zaWduZWQgY2hhciAqKSAoIHN0ZGluICkt
Pl9JT19yZWFkX3B0cisrKSA7DQp9DQoNCg0KDQogDQpleHRlcm4gX19pbmxp
bmUgIGludA0KcHV0Y2hhciAoaW50IF9fYykgIA0Kew0KICByZXR1cm4gX0lP
X3B1dGMgKF9fYywgc3Rkb3V0KTsNCn0NCg0KDQoNCiANCmV4dGVybiBfX2lu
bGluZSAgaW50DQpmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pICANCnsNCiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dy
aXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/IF9f
b3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikgKCBfX2Mg
KSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9fd3Jp
dGVfcHRyKysgPSAoIF9fYyApKSkgOw0KfQ0KDQoNCg0KDQogDQpleHRlcm4g
X19pbmxpbmUgIGludA0KcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pICANCnsNCiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lP
X3dyaXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/
IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikgKCBf
X2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9f
d3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOw0KfQ0KDQogDQpleHRlcm4gX19p
bmxpbmUgIGludA0KcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgIA0Kew0K
ICByZXR1cm4gKCgoICBzdGRvdXQgKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBz
dGRvdXQgKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIHN0ZG91
dCAsICh1bnNpZ25lZCBjaGFyKSAoIF9fYyApKSA6ICh1bnNpZ25lZCBjaGFy
KSAoKiggIHN0ZG91dCApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkg
Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiBf
X2lubGluZSAgaW50DQpmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
IA0Kew0KICByZXR1cm4gKCgoIF9fc3RyZWFtICktPl9mbGFncyAmIDB4MTAg
KSAhPSAwKSA7DQp9DQoNCiANCmV4dGVybiBfX2lubGluZSAgaW50DQpmZXJy
b3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSAgDQp7DQogIHJldHVybiAo
KCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsNCn0NCg0K
DQoNCg0KDQoNCiANCg0KIyAxNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz
L3N0ZGlvLmgiIDMNCg0KDQojIDE2NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvc3RkaW8uaCIgMw0KDQoNCiANCg0KIyA2MzEgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdGRpby5oIiAyIDMNCg0KDQoNCiANCg0KDQoNCg0KIyAxMCAiLi4v
Li4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDINCg0KDQogDQoNCg0KDQoN
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDEgMw0KIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoN
Cg0KDQoNCiANCg0KDQogDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KIA0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIg
MSAzDQogDQoNCg0KDQoNCg0KDQojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUv
ZW5kaWFuLmgiIDIgMw0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KIyA0MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgiIDIgMw0KDQoN
Cg0KDQoNCg0KDQplbnVtDQp7DQogIF9JU3VwcGVyID0gKCggMCApIDwgOCA/
ICgoMSA8PCAoIDAgKSkgPDwgOCkgOiAoKDEgPDwgKCAwICkpID4+IDgpKSAs
CSANCiAgX0lTbG93ZXIgPSAoKCAxICkgPCA4ID8gKCgxIDw8ICggMSApKSA8
PCA4KSA6ICgoMSA8PCAoIDEgKSkgPj4gOCkpICwJIA0KICBfSVNhbHBoYSA9
ICgoIDIgKSA8IDggPyAoKDEgPDwgKCAyICkpIDw8IDgpIDogKCgxIDw8ICgg
MiApKSA+PiA4KSkgLAkgDQogIF9JU2RpZ2l0ID0gKCggMyApIDwgOCA/ICgo
MSA8PCAoIDMgKSkgPDwgOCkgOiAoKDEgPDwgKCAzICkpID4+IDgpKSAsCSAN
CiAgX0lTeGRpZ2l0ID0gKCggNCApIDwgOCA/ICgoMSA8PCAoIDQgKSkgPDwg
OCkgOiAoKDEgPDwgKCA0ICkpID4+IDgpKSAsCSANCiAgX0lTc3BhY2UgPSAo
KCA1ICkgPCA4ID8gKCgxIDw8ICggNSApKSA8PCA4KSA6ICgoMSA8PCAoIDUg
KSkgPj4gOCkpICwJIA0KICBfSVNwcmludCA9ICgoIDYgKSA8IDggPyAoKDEg
PDwgKCA2ICkpIDw8IDgpIDogKCgxIDw8ICggNiApKSA+PiA4KSkgLAkgDQog
IF9JU2dyYXBoID0gKCggNyApIDwgOCA/ICgoMSA8PCAoIDcgKSkgPDwgOCkg
OiAoKDEgPDwgKCA3ICkpID4+IDgpKSAsCSANCiAgX0lTYmxhbmsgPSAoKCA4
ICkgPCA4ID8gKCgxIDw8ICggOCApKSA8PCA4KSA6ICgoMSA8PCAoIDggKSkg
Pj4gOCkpICwJIA0KICBfSVNjbnRybCA9ICgoIDkgKSA8IDggPyAoKDEgPDwg
KCA5ICkpIDw8IDgpIDogKCgxIDw8ICggOSApKSA+PiA4KSkgLAkgDQogIF9J
U3B1bmN0ID0gKCggMTAgKSA8IDggPyAoKDEgPDwgKCAxMCApKSA8PCA4KSA6
ICgoMSA8PCAoIDEwICkpID4+IDgpKSAsCSANCiAgX0lTYWxudW0gPSAoKCAx
MSApIDwgOCA/ICgoMSA8PCAoIDExICkpIDw8IDgpIDogKCgxIDw8ICggMTEg
KSkgPj4gOCkpIAkgDQp9Ow0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7
CSANCmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2Vy
OyAgDQpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBl
cjsgIA0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KZXh0ZXJuIGludCAg
aXNhbG51bSAgIChpbnQpICAgICA7DQpleHRlcm4gaW50ICBpc2FscGhhICAg
KGludCkgICAgIDsNCmV4dGVybiBpbnQgIGlzY250cmwgICAoaW50KSAgICAg
Ow0KZXh0ZXJuIGludCAgaXNkaWdpdCAgIChpbnQpICAgICA7DQpleHRlcm4g
aW50ICBpc2xvd2VyICAgKGludCkgICAgIDsNCmV4dGVybiBpbnQgIGlzZ3Jh
cGggICAoaW50KSAgICAgOw0KZXh0ZXJuIGludCAgaXNwcmludCAgIChpbnQp
ICAgICA7DQpleHRlcm4gaW50ICBpc3B1bmN0ICAgKGludCkgICAgIDsNCmV4
dGVybiBpbnQgIGlzc3BhY2UgICAoaW50KSAgICAgOw0KZXh0ZXJuIGludCAg
aXN1cHBlciAgIChpbnQpICAgICA7DQpleHRlcm4gaW50ICBpc3hkaWdpdCAg
IChpbnQpICAgICA7DQoNCg0KDQoNCg0KDQogDQpleHRlcm4gaW50IHRvbG93
ZXIgIChpbnQgX19jKSAgICA7DQoNCiANCmV4dGVybiBpbnQgdG91cHBlciAg
KGludCBfX2MpICAgIDsNCg0KDQoNCg0KIA0KDQpleHRlcm4gaW50IGlzYXNj
aWkgIChpbnQgX19jKSAgICA7DQoNCiANCg0KZXh0ZXJuIGludCB0b2FzY2lp
ICAoaW50IF9fYykgICAgOw0KDQoNCg0KDQogDQoNCmV4dGVybiBpbnQgIF90
b3VwcGVyICAgKGludCkgICAgIDsNCmV4dGVybiBpbnQgIF90b2xvd2VyICAg
KGludCkgICAgIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiBfX2lubGluZSBpbnQNCnRvbG93ZXIgKGludCBf
X2MpDQp7DQogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBf
X2N0eXBlX3RvbG93ZXJbX19jXSA6IF9fYzsNCn0NCg0KZXh0ZXJuIF9faW5s
aW5lIGludA0KdG91cHBlciAoaW50IF9fYykNCnsNCiAgcmV0dXJuIF9fYyA+
PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDog
X19jOw0KfQ0KDQoNCg0KDQojIDE4MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0
eXBlLmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAy
NzIgIi91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzDQoNCg0KIA0KDQoN
CiMgMTcgIi4uLy4uL2VnY3MtMS4xLjIvZ2NjL3N5c3RlbS5oIiAyDQoNCg0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N5cy90eXBlcy5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0K
DQp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsNCnR5cGVkZWYgX191X3Nob3J0
IHVfc2hvcnQ7DQp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7DQp0eXBlZGVmIF9f
dV9sb25nIHVfbG9uZzsNCnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Ow0KdHlw
ZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Ow0KdHlwZWRlZiBfX2ZzaWRfdCBm
c2lkX3Q7DQoNCg0KdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7DQoNCg0KDQp0
eXBlZGVmIF9faW5vX3QgaW5vX3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgX19kZXZfdCBkZXZfdDsNCg0KDQoNCg0KdHlwZWRlZiBfX2dpZF90
IGdpZF90Ow0KDQoNCg0KDQp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsNCg0K
DQoNCg0KdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsNCg0KDQoNCg0KdHlw
ZWRlZiBfX3VpZF90IHVpZF90Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgX19waWRfdCBwaWRfdDsNCg0KDQoNCg0KdHlw
ZWRlZiBfX2lkX3QgaWRfdDsNCg0KDQoNCnR5cGVkZWYgX19zc2l6ZV90IHNz
aXplX3Q7DQoNCg0KDQoNCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7DQp0
eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90Ow0KDQoNCg0KdHlwZWRlZiBfX2tl
eV90IGtleV90Ow0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvdGltZS5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA1MSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMw0KDQoNCg0KIyA2MiAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMw0KDQoNCg0KDQoNCg0KDQoNCiAN
CnR5cGVkZWYgX190aW1lX3QgdGltZV90Ow0KDQoNCg0KDQoNCiMgODkgIi91
c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMNCg0KDQoNCg0KIyAyNzkgIi91
c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMNCg0KDQoNCiMgMTIxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KDQoNCg0KIyAxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42
Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQoj
IDE5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3Mt
Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQogDQoNCg0KIA0K
DQoNCg0KDQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz
DQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxMzEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2
L2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCiANCg0KDQojIDE4OCAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEu
NjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0KDQoNCg0K
IA0KDQojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51
eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiMgMjgz
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45
MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCiMgMzE3
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45
MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQoNCiANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMTI0ICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0KDQoNCg0KIA0KdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsNCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IHVzaG9ydDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVp
bnQ7DQoNCg0KIA0KDQojIDE1OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGludCBp
bnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkg
Ow0KdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKCAgX19ISV9fICkpKSA7DQp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsNCnR5cGVkZWYg
aW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElf
XyApKSkgOw0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsNCnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKCAgX19ISV9fICkpKSA7DQp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyAp
KSkgOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsNCg0KdHlwZWRlZiBp
bnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29y
ZF9fKSkpOw0KDQoNCiANCg0KDQoNCg0KDQoNCiANCg0KDQogDQojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMw0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0K
IA0KDQoNCiANCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0
LmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9zZWxlY3QuaCIgMw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA1NyAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMNCg0KIyA3MyAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMNCg0KIyAzMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzDQoNCg0KIA0K
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsNCg0KIA0KDQoNCnR5cGVkZWYg
c3RydWN0DQogIHsNCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAy
NCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSBdOw0KICB9
IF9fc2lnc2V0X3Q7DQoNCg0KDQoNCiANCg0KDQoNCg0KDQojIDEyNSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMNCg0KIyAzNCAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzDQoNCg0KIA0KDQoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDEgMw0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojIDUxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5o
IiAzDQoNCg0KDQojIDYyICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAz
DQoNCg0KDQojIDczICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzDQoN
Cg0KDQoNCg0KDQoNCg0KIA0KDQpzdHJ1Y3QgdGltZXNwZWMNCiAgew0KICAg
IGxvbmcgaW50IHR2X3NlYzsJCSANCiAgICBsb25nIGludCB0dl9uc2VjOwkJ
IA0KICB9Ow0KDQoNCg0KDQoNCiMgMjc5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
dGltZS5oIiAzDQoNCg0KDQojIDM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIiAyIDMNCg0KDQogDQoNCiANCg0KDQoNCnN0cnVjdCB0aW1l
dmFsOw0KDQp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOw0KDQogDQp0eXBl
ZGVmIF9fZmRfc2V0IGZkX3NldDsNCg0KIA0KDQoNCg0KIA0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCmV4dGVybiBpbnQgX19zZWxlY3Qg
IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLA0KCQkJICBfX2Zk
X3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLA0KCQkJ
ICBzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KSAgICA7DQpleHRlcm4gaW50
IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsDQoJ
CQlfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRz
LA0KCQkJc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOw0KDQojIDkx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzDQoNCg0KIA0K
DQoNCiMgMTkzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
Mw0KDQoNCiANCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zeXNtYWNy
b3MuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAx
OTYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQoNCg0K
DQoNCiANCg0KdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwkgIA0KdHlw
ZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsgIA0KdHlwZWRlZiBfX2Zz
ZmlsY250X3QgZnNmaWxjbnRfdDsgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KIA0KDQoNCiMgNzcgIi4uLy4uL2VnY3MtMS4xLjIvZ2NjL3N5c3RlbS5o
IiAyDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Vycm5vLmgiIDEgMw0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoN
Cg0KDQogDQoNCg0KDQoNCg0KDQogDQoNCiANCg0KIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMNCg0KDQoNCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxIDMNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNCAiL3Vzci9sb2NhbC9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMw0KDQoNCiMgMTQgIi91c3IvbG9j
YWwvaW5jbHVkZS9saW51eC9lcnJuby5oIiAzDQoNCg0KDQojIDI1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMNCg0KDQogDQoNCg0K
IA0KDQoNCg0KDQogDQpleHRlcm4gaW50IGVycm5vOw0KDQogDQpleHRlcm4g
aW50ICpfX2Vycm5vX2xvY2F0aW9uICAodm9pZCkgICAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojIDM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvZXJy
bm8uaCIgMiAzDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiANCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IyA3OCAiLi4vLi4vZWdjcy0xLjEuMi9nY2Mvc3lzdGVtLmgiIDINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBp
bnQgc3lzX25lcnI7DQpleHRlcm4gY2hhciAqc3lzX2Vycmxpc3RbXTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQojIDM5ICJjZXhwLnkiIDIN
Cg0KIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc2V0am1wLmgiIDEgMw0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K
DQoNCg0KDQogDQoNCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2V0
am1wLmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
aW50IF9fam1wX2J1Zls2XTsNCg0KDQogDQoNCg0KDQojIDMwICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc2V0am1wLmgiIDIgMw0KDQojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3NpZ3NldC5oIiAzDQoNCg0KDQogDQoNCg0KDQoNCg0KIyAxMjUg
Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzDQoNCiMgMzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zZXRqbXAuaCIgMiAzDQoNCg0KIA0KdHlw
ZWRlZiBzdHJ1Y3QgX19qbXBfYnVmX3RhZwkgDQogIHsNCiAgICAgDQoNCg0K
ICAgIF9fam1wX2J1ZiBfX2ptcGJ1ZjsJCSANCiAgICBpbnQgX19tYXNrX3dh
c19zYXZlZDsJIA0KICAgIF9fc2lnc2V0X3QgX19zYXZlZF9tYXNrOwkgDQog
IH0gam1wX2J1ZlsxXTsNCg0KDQogDQoNCg0KZXh0ZXJuIGludCBfX3NpZ3Nl
dGptcCAgKGptcF9idWYgX19lbnYsIGludCBfX3NhdmVtYXNrKSAgICA7DQoN
Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQpl
eHRlcm4gdm9pZCBsb25nam1wICAoam1wX2J1ZiBfX2VudiwgaW50IF9fdmFs
KSAgICANCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOw0K
DQogDQoNCg0KZXh0ZXJuIHZvaWQgX2xvbmdqbXAgIChqbXBfYnVmIF9fZW52
LCBpbnQgX192YWwpICAgIA0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7DQoNCg0KDQoNCiANCg0KDQp0eXBlZGVmIGptcF9idWYgc2ln
am1wX2J1ZjsNCg0KIA0KDQoNCg0KIA0KDQoNCg0KZXh0ZXJuIHZvaWQgc2ln
bG9uZ2ptcCAgKHNpZ2ptcF9idWYgX19lbnYsIGludCBfX3ZhbCkgICAgDQog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsNCg0KDQogDQoN
Cg0KIyA0MCAiY2V4cC55IiAyDQoNCiANCg0KDQoNCg0KDQojIDEgIi4uLy4u
L2VnY3MtMS4xLjIvZ2NjL2dhbnNpZGVjbC5oIiAxDQogDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNDcgImNl
eHAueSIgMg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBVX0NIQVI7DQoN
CiANCnN0cnVjdCBhcmdsaXN0IHsNCiAgc3RydWN0IGFyZ2xpc3QgKm5leHQ7
DQogIFVfQ0hBUiAqbmFtZTsNCiAgaW50IGxlbmd0aDsNCiAgaW50IGFyZ25v
Ow0KfTsNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmludCAgcGFyc2VfY19l
eHByZXNzaW9uICAoY2hhciAqLCBpbnQpICA7DQoNCnN0YXRpYyBpbnQgeXls
ZXggICh2b2lkKSAgOw0Kc3RhdGljIHZvaWQgeXllcnJvciAgKGNoYXIgKikg
ICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsNCnN0YXRpYyBpbnQgIGV4
cHJlc3Npb25fdmFsdWU7DQoNCg0KDQoNCnN0YXRpYyBqbXBfYnVmIHBhcnNl
X3JldHVybl9lcnJvcjsNCg0KIA0Kc3RhdGljIGludCBrZXl3b3JkX3BhcnNp
bmcgPSAwOw0KDQogDQoNCnN0YXRpYyBpbnQgc2tpcF9ldmFsdWF0aW9uOw0K
DQogDQpzdGF0aWMgaW50IHdhcm5fdW5kZWY7DQoNCiANCmV4dGVybiB1bnNp
Z25lZCBjaGFyIGlzX2lkc3RhcnRbXSwgaXNfaWRjaGFyW10sIGlzX3NwYWNl
W107DQoNCiANCmV4dGVybiBpbnQgcGVkYW50aWM7DQoNCiANCmV4dGVybiBp
bnQgdHJhZGl0aW9uYWw7DQoNCiANCmV4dGVybiBpbnQgYzg5Ow0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoN
Cg0KDQoNCnN0cnVjdCBjb25zdGFudDsNCg0Kdm9pZCAqICB4bWFsbG9jICAo
c2l6ZV90KSAgOw0KaW50ICBwYXJzZV9lc2NhcGUgIChjaGFyICoqLCBpbnQg
KSAgOw0KaW50IGNoZWNrX2Fzc2VydGlvbiAgKFVfQ0hBUiAqLCBpbnQsIGlu
dCwgc3RydWN0IGFyZ2xpc3QgKikgIDsNCnN0cnVjdCBoYXNobm9kZSAqbG9v
a3VwICAoVV9DSEFSICosIGludCwgaW50KSAgOw0Kdm9pZCBlcnJvciAgICAo
Y2hhciAqLCAuLi4pICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChfX3By
aW50Zl9fLCAgICAxICAsICAgICAyICApKSkgICA7DQp2b2lkIHBlZHdhcm4g
ICAgKGNoYXIgKiwgLi4uKSAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo
X19wcmludGZfXywgICAgMSAgLCAgICAgMiAgKSkpICAgOw0Kdm9pZCB3YXJu
aW5nICAgIChjaGFyICosIC4uLikgICAgIF9fYXR0cmlidXRlX18gKChmb3Jt
YXQgKF9fcHJpbnRmX18sICAgIDEgICwgICAgIDIgICkpKSAgIDsNCg0Kc3Rh
dGljIGludCBwYXJzZV9udW1iZXIgIChpbnQpICA7DQpzdGF0aWMgaW50ICBs
ZWZ0X3NoaWZ0ICAoc3RydWN0IGNvbnN0YW50ICosIHVuc2lnbmVkIGludCAg
KSAgOw0Kc3RhdGljIGludCAgcmlnaHRfc2hpZnQgIChzdHJ1Y3QgY29uc3Rh
bnQgKiwgdW5zaWduZWQgaW50ICApICA7DQpzdGF0aWMgdm9pZCBpbnRlZ2Vy
X292ZXJmbG93ICAodm9pZCkgIDsNCg0KIA0KDQoNCg0KIyAyNTAgImNleHAu
eSINCg0KdHlwZWRlZiB1bmlvbiB7DQogIHN0cnVjdCBjb25zdGFudCB7aW50
ICB2YWx1ZTsgaW50IHNpZ25lZHA7fSBpbnRlZ2VyOw0KICBzdHJ1Y3QgbmFt
ZSB7VV9DSEFSICphZGRyZXNzOyBpbnQgbGVuZ3RoO30gbmFtZTsNCiAgc3Ry
dWN0IGFyZ2xpc3QgKmtleXdvcmRzOw0KfSBZWVNUWVBFOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpzdGF0aWMgY29uc3QgY2hhciB5eXRy
YW5zbGF0ZVtdID0geyAgICAgMCwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgIDI5LCAgICAgMiwgICAg
MzEsICAgICAyLCAgICAyNywgICAgMTQsICAgICAyLCAgICAzMiwNCiAgICAz
MywgICAgMjUsICAgIDIzLCAgICAgOSwgICAgMjQsICAgICAyLCAgICAyNiwg
ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDgsICAgICAyLCAgICAx
NywNCiAgICAgMiwgICAgMTgsICAgICA3LCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg
MiwgICAgIDIsICAgICAyLCAgICAxMywgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAxMiwgICAgIDIsICAgIDMwLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwNCiAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
NSwNCiAgICAgNiwgICAgMTAsICAgIDExLCAgICAxNSwgICAgMTYsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyOA0KfTsNCg0KIyAzMjcgImNl
eHAueSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnN0YXRpYyBjb25zdCBzaG9ydCB5eXIxW10gPSB7ICAgICAwLA0KICAg
IDM0LCAgICAzNSwgICAgMzUsICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2
LCAgICAzNiwgICAgMzcsICAgIDM2LA0KICAgIDM2LCAgICAzNiwgICAgMzYs
ICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICAzNiwgICAgMzYsICAg
IDM2LA0KICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICAzNiwgICAg
MzYsICAgIDM2LCAgICAzOCwgICAgMzYsICAgIDM5LA0KICAgIDM2LCAgICA0
MCwgICAgNDEsICAgIDM2LCAgICAzNiwgICAgMzYsICAgIDM2LCAgICA0Miwg
ICAgNDIsICAgIDQyDQp9Ow0KDQpzdGF0aWMgY29uc3Qgc2hvcnQgeXlyMltd
ID0geyAgICAgMCwNCiAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAwLCAgICAgNiwNCiAgICAg
MywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsICAgICAzLCAgICAgMywNCiAgICAgMywgICAgIDMsICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDAsICAgICA0LCAgICAg
MCwNCiAgICAgNCwgICAgIDAsICAgICAwLCAgICAgNywgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDAsICAgICA0LCAgICAgMg0KfTsNCg0Kc3RhdGljIGNv
bnN0IHNob3J0IHl5ZGVmYWN0W10gPSB7ICAgICAwLA0KICAgIDM1LCAgICAz
NiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAxLA0KICAgICAyLCAgICAgNiwgICAgIDQsICAgICA1LCAg
ICAgNywgICAgIDgsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMwLA0KICAg
IDI4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLA0KICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAg
ICAzLA0KICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI3LCAgICAyNiwgICAg
MjUsICAgIDE5LCAgICAyMCwgICAgMjMsICAgIDI0LA0KICAgIDIxLCAgICAy
MiwgICAgMTcsICAgIDE4LCAgICAxNSwgICAgMTYsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDM4LA0KICAgICAwLCAgICAzMSwgICAgMjksICAgIDM4LCAg
ICAzOCwgICAgIDAsICAgIDMzLCAgICA0MCwgICAgIDAsICAgIDEwLA0KICAg
ICAwLCAgICAzOCwgICAgMzQsICAgIDM5LCAgICAgMCwgICAgIDAsICAgICAw
DQp9Ow0KDQpzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZnb3RvW10gPSB7ICAg
IDc1LA0KICAgIDEwLCAgICAxMSwgICAgMzgsICAgIDQzLCAgICA0MiwgICAg
NDEsICAgIDcxLCAgICA2Ng0KfTsNCg0Kc3RhdGljIGNvbnN0IHNob3J0IHl5
cGFjdFtdID0geyAgICAxMiwNCi0zMjc2OCwtMzI3NjgsLTMyNzY4LCAgICAx
MiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgIDEsICAgIDEyLCAgICAgNCwN
CiAgICA3OSwtMzI3NjgsLTMyNzY4LC0zMjc2OCwtMzI3NjgsICAgLTIxLCAg
ICAzMSwgICAgMTIsLTMyNzY4LC0zMjc2OCwNCi0zMjc2OCwgICAgMTIsICAg
IDEyLCAgICAxMiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgMTIsICAgIDEy
LCAgICAxMiwNCiAgICAxMiwgICAgMTIsICAgIDEyLCAgICAxMiwgICAgMTIs
ICAgIDEyLCAgICAxMiwgICAgMzAsLTMyNzY4LCAgICA3OSwNCiAgICAxMiwg
ICAgMTIsICAgIDEyLCAgIDExMCwgICAxMjQsICAgMTM3LCAgIDE0OCwgICAx
NDgsICAgMTU1LCAgIDE1NSwNCiAgIDE1NSwgICAxNTUsICAgMTYwLCAgIDE2
MCwgICAtMTcsICAgLTE3LC0zMjc2OCwtMzI3NjgsLTMyNzY4LCAgICAgMiwN
CiAgICA1OCwgICAgMzQsICAgIDk1LCAgICAgMiwgICAgIDIsICAgIDU0LC0z
Mjc2OCwtMzI3NjgsICAgIDU1LC0zMjc2OCwNCiAgICAxMiwgICAgIDIsICAg
IDc5LC0zMjc2OCwgICAgNjMsICAgMTg4LC0zMjc2OA0KfTsNCg0Kc3RhdGlj
IGNvbnN0IHNob3J0IHl5cGdvdG9bXSA9IHstMzI3NjgsDQogICAxODAsICAg
IC00LC0zMjc2OCwtMzI3NjgsLTMyNzY4LC0zMjc2OCwtMzI3NjgsICAgLTYw
DQp9Ow0KDQoNCg0KDQoNCnN0YXRpYyBjb25zdCBzaG9ydCB5eXRhYmxlW10g
PSB7ICAgIDEyLA0KICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDY4LCAgICA2
OSwgICAgMTYsICAgIDY0LCAgICAzNSwgICAgMzYsICAgIDM3LA0KICAgIC05
LCAgICA3NCwgICAgMTgsICAgIDQwLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LA0KICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2
LA0KICAgIDU3LCAgICA1OCwgICAgNTksICAgIDY1LCAgICAgNCwgICAgIDUs
ICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDE4LA0KICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LA0KICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LA0KICAgIDM3
LCAgICA2MCwgICAgNzYsICAgIDM5LCAgICAxOSwgICAgNjcsICAgIDczLCAg
ICAyMCwgICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LA0KICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMTks
ICAgIDcwLCAgICA3MiwgICAgMjAsICAgIDIxLA0KICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDMxLA0KICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwgICAgMzcsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LA0KICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAzMywgICAgMzQsICAgIDM1LA0KICAgIDM2LCAgICAzNywgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LA0KICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAyNCwgICAgMjUsICAgIDI2LA0KICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LA0KICAgIDM3LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLA0KICAgIDM0
LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLA0KICAgIDMzLCAgICAzNCwgICAgMzUsICAg
IDM2LCAgICAzNywgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LA0KICAgIDM2LCAgICAzNywgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA3NywgICAgMTcNCn07DQoNCnN0YXRpYyBjb25zdCBzaG9y
dCB5eWNoZWNrW10gPSB7ICAgICA0LA0KICAgICA1LCAgICAgNiwgICAgIDcs
ICAgIDY0LCAgICA2NSwgICAgIDUsICAgICA1LCAgICAyNSwgICAgMjYsICAg
IDI3LA0KICAgIDMyLCAgICA3MiwgICAgIDksICAgIDE4LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAyMiwgICAgMjMsICAgIDI0LA0KICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LA0KICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDMyLCAg
ICAyMywgICAgMjQsICAgIDQxLCAgICA0MiwgICAgNDMsICAgICA5LA0KICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LA0KICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LA0KICAgIDI3LCAgICAzMiwgICAgIDAsICAgIDMzLCAgICAgNywgICAg
IDgsICAgIDcxLCAgICAxMCwgICAgMTEsICAgIDEyLA0KICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgIDcsICAgIDMzLCAgICAzMywgICAgMTAsICAgIDExLA0KICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLA0KICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LA0KICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LA0KICAgIDI2LCAgICAy
NywgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLA0KICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAxNCwgICAgMTUsICAgIDE2LA0KICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LA0KICAgIDI3LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IDIzLA0KICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLA0KICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LA0KICAgIDI2LCAgICAyNywgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAgMCwgICAgIDkNCn07DQogDQojIDIg
Ii91c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxl
Ig0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K
DQoNCg0KDQoNCg0KDQojIDUyICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAz
L3NoYXJlL2Jpc29uLnNpbXBsZSINCg0KDQoNCiANCg0KDQoNCg0KIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQojIDg4ICIvdXNyL2N5
Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNpbXBsZSINCg0KDQoN
Cg0KDQoNCg0KDQojIDExMCAiL3Vzci9jeWdudXMvbGF0ZXN0LTk0MDEwMy9z
aGFyZS9iaXNvbi5zaW1wbGUiDQoNCg0KIA0KDQoNCg0KaW50CXl5Y2hhcjsJ
CQkgDQpZWVNUWVBFCXl5bHZhbDsJCQkgDQoJCQkJIA0KDQoNCg0KDQoNCg0K
aW50IHl5bmVycnM7CQkJIA0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KaW50IHl5cGFyc2UgKHZv
aWQpOw0KDQoMDQoNCg0KIyAxOTMgIi91c3IvY3lnbnVzL2xhdGVzdC05NDAx
MDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoMDQojIDE5NSAiL3Vzci9jeWdu
dXMvbGF0ZXN0LTk0MDEwMy9zaGFyZS9iaXNvbi5zaW1wbGUiDQoNCg0KIA0K
DQoNCg0KDQoNCiMgMjExICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3No
YXJlL2Jpc29uLnNpbXBsZSINCg0KDQoNCg0KDQppbnQNCnl5cGFyc2UoICkN
CiAgICAgIA0Kew0KICByZWdpc3RlciBpbnQgeXlzdGF0ZTsNCiAgcmVnaXN0
ZXIgaW50IHl5bjsNCiAgcmVnaXN0ZXIgc2hvcnQgKnl5c3NwOw0KICByZWdp
c3RlciBZWVNUWVBFICp5eXZzcDsNCiAgaW50IHl5ZXJyc3RhdHVzOwkgDQog
IGludCB5eWNoYXIxID0gMDsJCSANCg0KICBzaG9ydAl5eXNzYVsyMDAgXTsJ
IA0KICBZWVNUWVBFIHl5dnNhWzIwMCBdOwkgDQoNCiAgc2hvcnQgKnl5c3Mg
PSB5eXNzYTsJCSANCiAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwkgDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KICBpbnQgeXlzdGFja3NpemUgPSAyMDAgOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQogIFlZU1RZUEUgeXl2YWw7CQkgDQoJCQkJ
IA0KCQkJCSANCg0KICBpbnQgeXlsZW47DQoNCg0KDQoNCg0KDQogIHl5c3Rh
dGUgPSAwOw0KICB5eWVycnN0YXR1cyA9IDA7DQogIHl5bmVycnMgPSAwOw0K
ICB5eWNoYXIgPSAtMiA7CQkgDQoNCiAgIA0KDQoNCg0KDQogIHl5c3NwID0g
eXlzcyAtIDE7DQogIHl5dnNwID0geXl2czsNCg0KDQoNCg0KIA0KIA0KDQp5
eW5ld3N0YXRlOg0KDQogICorK3l5c3NwID0geXlzdGF0ZTsNCg0KICBpZiAo
eXlzc3AgPj0geXlzcyArIHl5c3RhY2tzaXplIC0gMSkNCiAgICB7DQogICAg
ICAgDQogICAgICAgDQogICAgICBZWVNUWVBFICp5eXZzMSA9IHl5dnM7DQog
ICAgICBzaG9ydCAqeXlzczEgPSB5eXNzOw0KDQoNCg0KDQogICAgICAgDQog
ICAgICBpbnQgc2l6ZSA9IHl5c3NwIC0geXlzcyArIDE7DQoNCiMgMzIzICIv
dXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNpbXBsZSIN
Cg0KICAgICAgIA0KICAgICAgaWYgKHl5c3RhY2tzaXplID49IDEwMDAwICkN
Cgl7DQoJICB5eWVycm9yKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciKTsNCgkg
IHJldHVybiAyOw0KCX0NCiAgICAgIHl5c3RhY2tzaXplICo9IDI7DQogICAg
ICBpZiAoeXlzdGFja3NpemUgPiAxMDAwMCApDQoJeXlzdGFja3NpemUgPSAx
MDAwMCA7DQogICAgICB5eXNzID0gKHNob3J0ICopIF9fYnVpbHRpbl9hbGxv
Y2EgICh5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKnl5c3NwKSk7DQogICAgICBf
X2J1aWx0aW5fbWVtY3B5KCAoY2hhciAqKXl5c3MgLCAgKGNoYXIgKil5eXNz
MSAsICBzaXplICogc2l6ZW9mICgqeXlzc3ApICkgOw0KICAgICAgeXl2cyA9
IChZWVNUWVBFICopIF9fYnVpbHRpbl9hbGxvY2EgICh5eXN0YWNrc2l6ZSAq
IHNpemVvZiAoKnl5dnNwKSk7DQogICAgICBfX2J1aWx0aW5fbWVtY3B5KCAo
Y2hhciAqKXl5dnMgLCAgKGNoYXIgKil5eXZzMSAsICBzaXplICogc2l6ZW9m
ICgqeXl2c3ApICkgOw0KDQoNCg0KDQoNCg0KICAgICAgeXlzc3AgPSB5eXNz
ICsgc2l6ZSAtIDE7DQogICAgICB5eXZzcCA9IHl5dnMgKyBzaXplIC0gMTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgIGlmICh5eXNzcCA+PSB5eXNzICsg
eXlzdGFja3NpemUgLSAxKQ0KCXJldHVybigxKSA7DQogICAgfQ0KDQoNCg0K
DQoNCg0KICBnb3RvIHl5YmFja3VwOw0KIHl5YmFja3VwOg0KDQogDQogDQog
DQoNCiAgIA0KDQogIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsNCiAgaWYgKHl5
biA9PSAtMzI3NjggKQ0KICAgIGdvdG8geXlkZWZhdWx0Ow0KDQogICANCg0K
ICAgDQoNCg0KICBpZiAoeXljaGFyID09IC0yICkNCiAgICB7DQoNCg0KDQoN
CiAgICAgIHl5Y2hhciA9IHl5bGV4KCkgOw0KICAgIH0NCg0KICAgDQoNCiAg
aWYgKHl5Y2hhciA8PSAwKQkJIA0KICAgIHsNCiAgICAgIHl5Y2hhcjEgPSAw
Ow0KICAgICAgeXljaGFyID0gMCA7CQkgDQoNCg0KDQoNCg0KICAgIH0NCiAg
ZWxzZQ0KICAgIHsNCiAgICAgIHl5Y2hhcjEgPSAoKHVuc2lnbmVkKSggeXlj
aGFyICkgPD0gMjcwID8geXl0cmFuc2xhdGVbIHl5Y2hhciBdIDogNDMpIDsN
Cg0KIyA0MTcgIi91c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlz
b24uc2ltcGxlIg0KDQogICAgfQ0KDQogIHl5biArPSB5eWNoYXIxOw0KICBp
ZiAoeXluIDwgMCB8fCB5eW4gPiAxODkgIHx8IHl5Y2hlY2tbeXluXSAhPSB5
eWNoYXIxKQ0KICAgIGdvdG8geXlkZWZhdWx0Ow0KDQogIHl5biA9IHl5dGFi
bGVbeXluXTsNCg0KICAgDQoNCg0KDQoNCg0KDQogIGlmICh5eW4gPCAwKQ0K
ICAgIHsNCiAgICAgIGlmICh5eW4gPT0gLTMyNzY4ICkNCglnb3RvIHl5ZXJy
bGFiOw0KICAgICAgeXluID0gLXl5bjsNCiAgICAgIGdvdG8geXlyZWR1Y2U7
DQogICAgfQ0KICBlbHNlIGlmICh5eW4gPT0gMCkNCiAgICBnb3RvIHl5ZXJy
bGFiOw0KDQogIGlmICh5eW4gPT0gNzcgKQ0KICAgIHJldHVybigwKSA7DQoN
CiAgIA0KDQoNCg0KDQoNCg0KICAgDQogIGlmICh5eWNoYXIgIT0gMCApDQog
ICAgeXljaGFyID0gLTIgOw0KDQogICorK3l5dnNwID0geXlsdmFsOw0KDQoN
Cg0KDQogICANCiAgaWYgKHl5ZXJyc3RhdHVzKSB5eWVycnN0YXR1cy0tOw0K
DQogIHl5c3RhdGUgPSB5eW47DQogIGdvdG8geXluZXdzdGF0ZTsNCg0KIA0K
eXlkZWZhdWx0Og0KDQogIHl5biA9IHl5ZGVmYWN0W3l5c3RhdGVdOw0KICBp
ZiAoeXluID09IDApDQogICAgZ290byB5eWVycmxhYjsNCg0KIA0KeXlyZWR1
Y2U6DQogIHl5bGVuID0geXlyMlt5eW5dOw0KICBpZiAoeXlsZW4gPiAwKQ0K
ICAgIHl5dmFsID0geXl2c3BbMS15eWxlbl07ICANCg0KIyA0OTQgIi91c3Iv
Y3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoN
Cg0KICBzd2l0Y2ggKHl5bikgew0KDQpjYXNlIDE6DQojIDI4MSAiY2V4cC55
Ig0KDQp7DQoJCSAgZXhwcmVzc2lvbl92YWx1ZSA9IHl5dnNwWzBdLmludGVn
ZXIudmFsdWU7DQoNCg0KDQoJCTsNCiAgICBicmVhazt9DQpjYXNlIDM6DQoj
IDI5MiAiY2V4cC55Ig0KDQp7IGlmIChwZWRhbnRpYykNCgkJCSAgICBwZWR3
YXJuICgiY29tbWEgb3BlcmF0b3IgaW4gb3BlcmFuZCBvZiBgI2lmJyIpOw0K
CQkJICB5eXZhbC5pbnRlZ2VyID0geXl2c3BbMF0uaW50ZWdlcjsgOw0KICAg
IGJyZWFrO30NCmNhc2UgNDoNCiMgMjk5ICJjZXhwLnkiDQoNCnsgeXl2YWwu
aW50ZWdlci52YWx1ZSA9IC0geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJ
CSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbMF0uaW50ZWdlci5z
aWduZWRwOw0KCQkJICBpZiAoKHl5dmFsLmludGVnZXIudmFsdWUgJiB5eXZz
cFswXS5pbnRlZ2VyLnZhbHVlICYgeXl2YWwuaW50ZWdlci5zaWduZWRwKSA8
IDApDQoJCQkgICAgaW50ZWdlcl9vdmVyZmxvdyAoKTsgOw0KICAgIGJyZWFr
O30NCmNhc2UgNToNCiMgMzA0ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdl
ci52YWx1ZSA9ICEgeXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2
YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVhazt9DQpj
YXNlIDY6DQojIDMwNyAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIgPSB5
eXZzcFswXS5pbnRlZ2VyOyA7DQogICAgYnJlYWs7fQ0KY2FzZSA3Og0KIyAz
MDkgImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnZhbHVlID0gfiB5eXZz
cFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25l
ZHAgPSB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHA7IDsNCiAgICBicmVhazt9
DQpjYXNlIDg6DQojIDMxMiAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIu
dmFsdWUgPSBjaGVja19hc3NlcnRpb24gKHl5dnNwWzBdLm5hbWUuYWRkcmVz
cywgeXl2c3BbMF0ubmFtZS5sZW5ndGgsDQoJCQkJCQkgICAgICAwLCAoKHZv
aWQgKiApIDApICk7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+
MCkgOyA7DQogICAgYnJlYWs7fQ0KY2FzZSA5Og0KIyAzMTYgImNleHAueSIN
Cg0KeyBrZXl3b3JkX3BhcnNpbmcgPSAxOyA7DQogICAgYnJlYWs7fQ0KY2Fz
ZSAxMDoNCiMgMzE4ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1
ZSA9IGNoZWNrX2Fzc2VydGlvbiAoeXl2c3BbLTRdLm5hbWUuYWRkcmVzcywg
eXl2c3BbLTRdLm5hbWUubGVuZ3RoLA0KCQkJCQkJICAgICAgMSwgeXl2c3Bb
LTFdLmtleXdvcmRzKTsNCgkJCSAga2V5d29yZF9wYXJzaW5nID0gMDsNCgkJ
CSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVh
azt9DQpjYXNlIDExOg0KIyAzMjMgImNleHAueSINCg0KeyB5eXZhbC5pbnRl
Z2VyID0geXl2c3BbLTFdLmludGVnZXI7IDsNCiAgICBicmVhazt9DQpjYXNl
IDEyOg0KIyAzMjggImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnNpZ25l
ZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWduZWRwICYgeXl2c3BbMF0uaW50
ZWdlci5zaWduZWRwOw0KCQkJICBpZiAoeXl2YWwuaW50ZWdlci5zaWduZWRw
KQ0KCQkJICAgIHsNCgkJCSAgICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSB5
eXZzcFstMl0uaW50ZWdlci52YWx1ZSAqIHl5dnNwWzBdLmludGVnZXIudmFs
dWU7DQoJCQkgICAgICBpZiAoeXl2c3BbLTJdLmludGVnZXIudmFsdWUNCgkJ
CQkgICYmICh5eXZhbC5pbnRlZ2VyLnZhbHVlIC8geXl2c3BbLTJdLmludGVn
ZXIudmFsdWUgIT0geXl2c3BbMF0uaW50ZWdlci52YWx1ZQ0KCQkJCSAgICAg
IHx8ICh5eXZhbC5pbnRlZ2VyLnZhbHVlICYgeXl2c3BbLTJdLmludGVnZXIu
dmFsdWUgJiB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKSA8IDApKQ0KCQkJCWlu
dGVnZXJfb3ZlcmZsb3cgKCk7DQoJCQkgICAgfQ0KCQkJICBlbHNlDQoJCQkg
ICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9ICgodW5zaWduZWQgaW50ICApIHl5
dnNwWy0yXS5pbnRlZ2VyLnZhbHVlDQoJCQkJCSogeXl2c3BbMF0uaW50ZWdl
ci52YWx1ZSk7IDsNCiAgICBicmVhazt9DQpjYXNlIDEzOg0KIyAzNDEgImNl
eHAueSINCg0KeyBpZiAoeXl2c3BbMF0uaW50ZWdlci52YWx1ZSA9PSAwKQ0K
CQkJICAgIHsNCgkJCSAgICAgIGlmICghc2tpcF9ldmFsdWF0aW9uKQ0KCQkJ
CWVycm9yICgiZGl2aXNpb24gYnkgemVybyBpbiAjaWYiKTsNCgkJCSAgICAg
IHl5dnNwWzBdLmludGVnZXIudmFsdWUgPSAxOw0KCQkJICAgIH0NCgkJCSAg
eXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2ln
bmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKHl5
dmFsLmludGVnZXIuc2lnbmVkcCkNCgkJCSAgICB7DQoJCQkgICAgICB5eXZh
bC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmludGVnZXIudmFsdWUgLyB5
eXZzcFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICAgICAgaWYgKCh5eXZhbC5p
bnRlZ2VyLnZhbHVlICYgeXl2c3BbLTJdLmludGVnZXIudmFsdWUgJiB5eXZz
cFswXS5pbnRlZ2VyLnZhbHVlKSA8IDApDQoJCQkJaW50ZWdlcl9vdmVyZmxv
dyAoKTsNCgkJCSAgICB9DQoJCQkgIGVsc2UNCgkJCSAgICB5eXZhbC5pbnRl
Z2VyLnZhbHVlID0gKCh1bnNpZ25lZCBpbnQgICkgeXl2c3BbLTJdLmludGVn
ZXIudmFsdWUNCgkJCQkJLyB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0K
ICAgIGJyZWFrO30NCmNhc2UgMTQ6DQojIDM1OCAiY2V4cC55Ig0KDQp7IGlm
ICh5eXZzcFswXS5pbnRlZ2VyLnZhbHVlID09IDApDQoJCQkgICAgew0KCQkJ
ICAgICAgaWYgKCFza2lwX2V2YWx1YXRpb24pDQoJCQkJZXJyb3IgKCJkaXZp
c2lvbiBieSB6ZXJvIGluICNpZiIpOw0KCQkJICAgICAgeXl2c3BbMF0uaW50
ZWdlci52YWx1ZSA9IDE7DQoJCQkgICAgfQ0KCQkJICB5eXZhbC5pbnRlZ2Vy
LnNpZ25lZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWduZWRwICYgeXl2c3Bb
MF0uaW50ZWdlci5zaWduZWRwOw0KCQkJICBpZiAoeXl2YWwuaW50ZWdlci5z
aWduZWRwKQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSB5eXZzcFst
Ml0uaW50ZWdlci52YWx1ZSAlIHl5dnNwWzBdLmludGVnZXIudmFsdWU7DQoJ
CQkgIGVsc2UNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0gKCh1bnNp
Z25lZCBpbnQgICkgeXl2c3BbLTJdLmludGVnZXIudmFsdWUNCgkJCQkJJSB5
eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0KICAgIGJyZWFrO30NCmNhc2Ug
MTU6DQojIDM3MSAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIudmFsdWUg
PSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSArIHl5dnNwWzBdLmludGVnZXIu
dmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9IHl5dnNwWy0y
XS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHA7
DQoJCQkgIGlmICgoKH4oKCB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSApIF4g
KCAgeXl2c3BbMF0uaW50ZWdlci52YWx1ZSApKSAmICgoIHl5dnNwWy0yXS5p
bnRlZ2VyLnZhbHVlICkgXiAoIA0KCQkJCQkJIHl5dmFsLmludGVnZXIudmFs
dWUgKSkgJiAoICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAgKSkgPCAwKSApDQoJ
CQkgICAgaW50ZWdlcl9vdmVyZmxvdyAoKTsgOw0KICAgIGJyZWFrO30NCmNh
c2UgMTY6DQojIDM3NyAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIudmFs
dWUgPSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSAtIHl5dnNwWzBdLmludGVn
ZXIudmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9IHl5dnNw
Wy0yXS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25l
ZHA7DQoJCQkgIGlmICgoKH4oKCB5eXZhbC5pbnRlZ2VyLnZhbHVlICkgXiAo
ICB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlICkpICYgKCggeXl2YWwuaW50ZWdl
ci52YWx1ZSApIF4gKCANCgkJCQkJCSB5eXZzcFstMl0uaW50ZWdlci52YWx1
ZSApKSAmICggIHl5dmFsLmludGVnZXIuc2lnbmVkcCApKSA8IDApICkNCgkJ
CSAgICBpbnRlZ2VyX292ZXJmbG93ICgpOyA7DQogICAgYnJlYWs7fQ0KY2Fz
ZSAxNzoNCiMgMzgzICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci5zaWdu
ZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKCh5
eXZzcFswXS5pbnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci5zaWdu
ZWRwKSA8IDApDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHJpZ2h0
X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIC15eXZzcFswXS5pbnRlZ2Vy
LnZhbHVlKTsNCgkJCSAgZWxzZQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFs
dWUgPSBsZWZ0X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIHl5dnNwWzBd
LmludGVnZXIudmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAxODoNCiMg
Mzg5ICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2
c3BbLTJdLmludGVnZXIuc2lnbmVkcDsNCgkJCSAgaWYgKCh5eXZzcFswXS5p
bnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwKSA8IDAp
DQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IGxlZnRfc2hpZnQgKCZ5
eXZzcFstMl0uaW50ZWdlciwgLXl5dnNwWzBdLmludGVnZXIudmFsdWUpOw0K
CQkJICBlbHNlDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHJpZ2h0
X3NoaWZ0ICgmeXl2c3BbLTJdLmludGVnZXIsIHl5dnNwWzBdLmludGVnZXIu
dmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAxOToNCiMgMzk1ICJjZXhw
LnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1ZSA9ICh5eXZzcFstMl0uaW50
ZWdlci52YWx1ZSA9PSB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsNCgkJCSAg
eXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsNCiAgICBicmVhazt9
DQpjYXNlIDIwOg0KIyAzOTggImNleHAueSINCg0KeyB5eXZhbC5pbnRlZ2Vy
LnZhbHVlID0gKHl5dnNwWy0yXS5pbnRlZ2VyLnZhbHVlICE9IHl5dnNwWzBd
LmludGVnZXIudmFsdWUpOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAg
PSAofjApIDsgOw0KICAgIGJyZWFrO30NCmNhc2UgMjE6DQojIDQwMSAiY2V4
cC55Ig0KDQp7IHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0KCQkJ
ICBpZiAoeXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcCAmIHl5dnNwWzBdLmlu
dGVnZXIuc2lnbmVkcCkNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0g
eXl2c3BbLTJdLmludGVnZXIudmFsdWUgPD0geXl2c3BbMF0uaW50ZWdlci52
YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJICAgIHl5dmFsLmludGVnZXIudmFsdWUg
PSAoKHVuc2lnbmVkIGludCAgKSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0K
CQkJCQk8PSB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlKTsgOw0KICAgIGJyZWFr
O30NCmNhc2UgMjI6DQojIDQwOCAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVn
ZXIuc2lnbmVkcCA9ICh+MCkgOw0KCQkJICBpZiAoeXl2c3BbLTJdLmludGVn
ZXIuc2lnbmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcCkNCgkJCSAg
ICB5eXZhbC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmludGVnZXIudmFs
dWUgPj0geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJ
ICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSAoKHVuc2lnbmVkIGludCAgKSB5
eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0KCQkJCQk+PSB5eXZzcFswXS5pbnRl
Z2VyLnZhbHVlKTsgOw0KICAgIGJyZWFrO30NCmNhc2UgMjM6DQojIDQxNSAi
Y2V4cC55Ig0KDQp7IHl5dmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0K
CQkJICBpZiAoeXl2c3BbLTJdLmludGVnZXIuc2lnbmVkcCAmIHl5dnNwWzBd
LmludGVnZXIuc2lnbmVkcCkNCgkJCSAgICB5eXZhbC5pbnRlZ2VyLnZhbHVl
ID0geXl2c3BbLTJdLmludGVnZXIudmFsdWUgPCB5eXZzcFswXS5pbnRlZ2Vy
LnZhbHVlOw0KCQkJICBlbHNlDQoJCQkgICAgeXl2YWwuaW50ZWdlci52YWx1
ZSA9ICgodW5zaWduZWQgaW50ICApIHl5dnNwWy0yXS5pbnRlZ2VyLnZhbHVl
DQoJCQkJCTwgeXl2c3BbMF0uaW50ZWdlci52YWx1ZSk7IDsNCiAgICBicmVh
azt9DQpjYXNlIDI0Og0KIyA0MjIgImNleHAueSINCg0KeyB5eXZhbC5pbnRl
Z2VyLnNpZ25lZHAgPSAofjApIDsNCgkJCSAgaWYgKHl5dnNwWy0yXS5pbnRl
Z2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2VyLnNpZ25lZHApDQoJCQkg
ICAgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy0yXS5pbnRlZ2VyLnZh
bHVlID4geXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAgZWxzZQ0KCQkJ
ICAgIHl5dmFsLmludGVnZXIudmFsdWUgPSAoKHVuc2lnbmVkIGludCAgKSB5
eXZzcFstMl0uaW50ZWdlci52YWx1ZQ0KCQkJCQk+IHl5dnNwWzBdLmludGVn
ZXIudmFsdWUpOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAyNToNCiMgNDI5ICJj
ZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy0yXS5p
bnRlZ2VyLnZhbHVlICYgeXl2c3BbMF0uaW50ZWdlci52YWx1ZTsNCgkJCSAg
eXl2YWwuaW50ZWdlci5zaWduZWRwID0geXl2c3BbLTJdLmludGVnZXIuc2ln
bmVkcCAmIHl5dnNwWzBdLmludGVnZXIuc2lnbmVkcDsgOw0KICAgIGJyZWFr
O30NCmNhc2UgMjY6DQojIDQzMiAiY2V4cC55Ig0KDQp7IHl5dmFsLmludGVn
ZXIudmFsdWUgPSB5eXZzcFstMl0uaW50ZWdlci52YWx1ZSBeIHl5dnNwWzBd
LmludGVnZXIudmFsdWU7DQoJCQkgIHl5dmFsLmludGVnZXIuc2lnbmVkcCA9
IHl5dnNwWy0yXS5pbnRlZ2VyLnNpZ25lZHAgJiB5eXZzcFswXS5pbnRlZ2Vy
LnNpZ25lZHA7IDsNCiAgICBicmVhazt9DQpjYXNlIDI3Og0KIyA0MzUgImNl
eHAueSINCg0KeyB5eXZhbC5pbnRlZ2VyLnZhbHVlID0geXl2c3BbLTJdLmlu
dGVnZXIudmFsdWUgfCB5eXZzcFswXS5pbnRlZ2VyLnZhbHVlOw0KCQkJICB5
eXZhbC5pbnRlZ2VyLnNpZ25lZHAgPSB5eXZzcFstMl0uaW50ZWdlci5zaWdu
ZWRwICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwOyA7DQogICAgYnJlYWs7
fQ0KY2FzZSAyODoNCiMgNDM4ICJjZXhwLnkiDQoNCnsgc2tpcF9ldmFsdWF0
aW9uICs9ICF5eXZzcFstMV0uaW50ZWdlci52YWx1ZTsgOw0KICAgIGJyZWFr
O30NCmNhc2UgMjk6DQojIDQ0MCAiY2V4cC55Ig0KDQp7IHNraXBfZXZhbHVh
dGlvbiAtPSAheXl2c3BbLTNdLmludGVnZXIudmFsdWU7DQoJCQkgIHl5dmFs
LmludGVnZXIudmFsdWUgPSAoeXl2c3BbLTNdLmludGVnZXIudmFsdWUgJiYg
eXl2c3BbMF0uaW50ZWdlci52YWx1ZSk7DQoJCQkgIHl5dmFsLmludGVnZXIu
c2lnbmVkcCA9ICh+MCkgOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzMDoNCiMg
NDQ0ICJjZXhwLnkiDQoNCnsgc2tpcF9ldmFsdWF0aW9uICs9ICEheXl2c3Bb
LTFdLmludGVnZXIudmFsdWU7IDsNCiAgICBicmVhazt9DQpjYXNlIDMxOg0K
IyA0NDYgImNleHAueSINCg0KeyBza2lwX2V2YWx1YXRpb24gLT0gISF5eXZz
cFstM10uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2YWwuaW50ZWdlci52YWx1
ZSA9ICh5eXZzcFstM10uaW50ZWdlci52YWx1ZSB8fCB5eXZzcFswXS5pbnRl
Z2VyLnZhbHVlKTsNCgkJCSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4w
KSA7IDsNCiAgICBicmVhazt9DQpjYXNlIDMyOg0KIyA0NTAgImNleHAueSIN
Cg0KeyBza2lwX2V2YWx1YXRpb24gKz0gIXl5dnNwWy0xXS5pbnRlZ2VyLnZh
bHVlOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzMzoNCiMgNDUyICJjZXhwLnki
DQoNCnsgc2tpcF9ldmFsdWF0aW9uICs9ICEheXl2c3BbLTRdLmludGVnZXIu
dmFsdWUgLSAheXl2c3BbLTRdLmludGVnZXIudmFsdWU7IDsNCiAgICBicmVh
azt9DQpjYXNlIDM0Og0KIyA0NTQgImNleHAueSINCg0KeyBza2lwX2V2YWx1
YXRpb24gLT0gISF5eXZzcFstNl0uaW50ZWdlci52YWx1ZTsNCgkJCSAgeXl2
YWwuaW50ZWdlci52YWx1ZSA9IHl5dnNwWy02XS5pbnRlZ2VyLnZhbHVlID8g
eXl2c3BbLTNdLmludGVnZXIudmFsdWUgOiB5eXZzcFswXS5pbnRlZ2VyLnZh
bHVlOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnNpZ25lZHAgPSB5eXZzcFstM10u
aW50ZWdlci5zaWduZWRwICYgeXl2c3BbMF0uaW50ZWdlci5zaWduZWRwOyA7
DQogICAgYnJlYWs7fQ0KY2FzZSAzNToNCiMgNDU4ICJjZXhwLnkiDQoNCnsg
eXl2YWwuaW50ZWdlciA9IHl5bHZhbC5pbnRlZ2VyOyA7DQogICAgYnJlYWs7
fQ0KY2FzZSAzNjoNCiMgNDYwICJjZXhwLnkiDQoNCnsgeXl2YWwuaW50ZWdl
ciA9IHl5bHZhbC5pbnRlZ2VyOyA7DQogICAgYnJlYWs7fQ0KY2FzZSAzNzoN
CiMgNDYyICJjZXhwLnkiDQoNCnsgaWYgKHdhcm5fdW5kZWYgJiYgIXNraXBf
ZXZhbHVhdGlvbikNCgkJCSAgICB3YXJuaW5nICgiYCUuKnMnIGlzIG5vdCBk
ZWZpbmVkIiwNCgkJCQkgICAgIHl5dnNwWzBdLm5hbWUubGVuZ3RoLCB5eXZz
cFswXS5uYW1lLmFkZHJlc3MpOw0KCQkJICB5eXZhbC5pbnRlZ2VyLnZhbHVl
ID0gMDsNCgkJCSAgeXl2YWwuaW50ZWdlci5zaWduZWRwID0gKH4wKSA7IDsN
CiAgICBicmVhazt9DQpjYXNlIDM4Og0KIyA0NzAgImNleHAueSINCg0KeyB5
eXZhbC5rZXl3b3JkcyA9IDA7IDsNCiAgICBicmVhazt9DQpjYXNlIDM5Og0K
IyA0NzIgImNleHAueSINCg0KeyBzdHJ1Y3QgYXJnbGlzdCAqdGVtcDsNCgkJ
CSAgeXl2YWwua2V5d29yZHMgPSAoc3RydWN0IGFyZ2xpc3QgKikgeG1hbGxv
YyAoc2l6ZW9mIChzdHJ1Y3QgYXJnbGlzdCkpOw0KCQkJICB5eXZhbC5rZXl3
b3Jkcy0+bmV4dCA9IHl5dnNwWy0yXS5rZXl3b3JkczsNCgkJCSAgeXl2YWwu
a2V5d29yZHMtPm5hbWUgPSAoVV9DSEFSICopICIoIjsNCgkJCSAgeXl2YWwu
a2V5d29yZHMtPmxlbmd0aCA9IDE7DQoJCQkgIHRlbXAgPSB5eXZhbC5rZXl3
b3JkczsNCgkJCSAgd2hpbGUgKHRlbXAgIT0gMCAmJiB0ZW1wLT5uZXh0ICE9
IDApDQoJCQkgICAgdGVtcCA9IHRlbXAtPm5leHQ7DQoJCQkgIHRlbXAtPm5l
eHQgPSAoc3RydWN0IGFyZ2xpc3QgKikgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1
Y3QgYXJnbGlzdCkpOw0KCQkJICB0ZW1wLT5uZXh0LT5uZXh0ID0geXl2c3Bb
MF0ua2V5d29yZHM7DQoJCQkgIHRlbXAtPm5leHQtPm5hbWUgPSAoVV9DSEFS
ICopICIpIjsNCgkJCSAgdGVtcC0+bmV4dC0+bGVuZ3RoID0gMTsgOw0KICAg
IGJyZWFrO30NCmNhc2UgNDA6DQojIDQ4NSAiY2V4cC55Ig0KDQp7IHl5dmFs
LmtleXdvcmRzID0gKHN0cnVjdCBhcmdsaXN0ICopIHhtYWxsb2MgKHNpemVv
ZiAoc3RydWN0IGFyZ2xpc3QpKTsNCgkJCSAgeXl2YWwua2V5d29yZHMtPm5h
bWUgPSB5eXZzcFstMV0ubmFtZS5hZGRyZXNzOw0KCQkJICB5eXZhbC5rZXl3
b3Jkcy0+bGVuZ3RoID0geXl2c3BbLTFdLm5hbWUubGVuZ3RoOw0KCQkJICB5
eXZhbC5rZXl3b3Jkcy0+bmV4dCA9IHl5dnNwWzBdLmtleXdvcmRzOyA7DQog
ICAgYnJlYWs7fQ0KfQ0KICAgIA0KIyA0OTcgIi91c3IvY3lnbnVzL2xhdGVz
dC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoMDQogIHl5dnNwIC09
IHl5bGVuOw0KICB5eXNzcCAtPSB5eWxlbjsNCg0KDQoNCg0KIyA1MTQgIi91
c3IvY3lnbnVzL2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0K
DQoNCiAgKisreXl2c3AgPSB5eXZhbDsNCg0KIyA1MzMgIi91c3IvY3lnbnVz
L2xhdGVzdC05NDAxMDMvc2hhcmUvYmlzb24uc2ltcGxlIg0KDQoNCiAgIA0K
DQoNCg0KDQogIHl5biA9IHl5cjFbeXluXTsNCg0KICB5eXN0YXRlID0geXlw
Z290b1t5eW4gLSAzNCBdICsgKnl5c3NwOw0KICBpZiAoeXlzdGF0ZSA+PSAw
ICYmIHl5c3RhdGUgPD0gMTg5ICAmJiB5eWNoZWNrW3l5c3RhdGVdID09ICp5
eXNzcCkNCiAgICB5eXN0YXRlID0geXl0YWJsZVt5eXN0YXRlXTsNCiAgZWxz
ZQ0KICAgIHl5c3RhdGUgPSB5eWRlZmdvdG9beXluIC0gMzQgXTsNCg0KICBn
b3RvIHl5bmV3c3RhdGU7DQoNCnl5ZXJybGFiOiAgICANCg0KICBpZiAoISB5
eWVycnN0YXR1cykNCiAgICAgDQogICAgew0KICAgICAgKyt5eW5lcnJzOw0K
DQojIDU5NyAiL3Vzci9jeWdudXMvbGF0ZXN0LTk0MDEwMy9zaGFyZS9iaXNv
bi5zaW1wbGUiDQoNCgl5eWVycm9yKCJwYXJzZSBlcnJvciIpOw0KICAgIH0N
Cg0KICBnb3RvIHl5ZXJybGFiMTsNCnl5ZXJybGFiMTogICAgDQoNCiAgaWYg
KHl5ZXJyc3RhdHVzID09IDMpDQogICAgew0KICAgICAgIA0KDQogICAgICAg
DQogICAgICBpZiAoeXljaGFyID09IDAgKQ0KCXJldHVybigxKSA7DQoNCg0K
DQoNCg0KDQogICAgICB5eWNoYXIgPSAtMiA7DQogICAgfQ0KDQogICANCg0K
DQogIHl5ZXJyc3RhdHVzID0gMzsJCSANCg0KICBnb3RvIHl5ZXJyaGFuZGxl
Ow0KDQp5eWVycmRlZmF1bHQ6ICAgDQoNCg0KDQoNCg0KDQoNCg0KeXllcnJw
b3A6ICAgIA0KDQogIGlmICh5eXNzcCA9PSB5eXNzKSByZXR1cm4oMSkgOw0K
ICB5eXZzcC0tOw0KICB5eXN0YXRlID0gKi0teXlzc3A7DQoNCg0KDQoNCiMg
NjU0ICIvdXNyL2N5Z251cy9sYXRlc3QtOTQwMTAzL3NoYXJlL2Jpc29uLnNp
bXBsZSINCg0KDQp5eWVycmhhbmRsZToNCg0KICB5eW4gPSB5eXBhY3RbeXlz
dGF0ZV07DQogIGlmICh5eW4gPT0gLTMyNzY4ICkNCiAgICBnb3RvIHl5ZXJy
ZGVmYXVsdDsNCg0KICB5eW4gKz0gMSA7DQogIGlmICh5eW4gPCAwIHx8IHl5
biA+IDE4OSAgfHwgeXljaGVja1t5eW5dICE9IDEgKQ0KICAgIGdvdG8geXll
cnJkZWZhdWx0Ow0KDQogIHl5biA9IHl5dGFibGVbeXluXTsNCiAgaWYgKHl5
biA8IDApDQogICAgew0KICAgICAgaWYgKHl5biA9PSAtMzI3NjggKQ0KCWdv
dG8geXllcnJwb3A7DQogICAgICB5eW4gPSAteXluOw0KICAgICAgZ290byB5
eXJlZHVjZTsNCiAgICB9DQogIGVsc2UgaWYgKHl5biA9PSAwKQ0KICAgIGdv
dG8geXllcnJwb3A7DQoNCiAgaWYgKHl5biA9PSA3NyApDQogICAgcmV0dXJu
KDApIDsNCg0KDQoNCg0KDQoNCiAgKisreXl2c3AgPSB5eWx2YWw7DQoNCg0K
DQoNCiAgeXlzdGF0ZSA9IHl5bjsNCiAgZ290byB5eW5ld3N0YXRlOw0KfQ0K
IyA0OTAgImNleHAueSINCg0KDQoMDQogDQoNCg0Kc3RhdGljIGNoYXIgKmxl
eHB0cjsNCg0KIA0KDQoNCg0KIA0KDQpzdGF0aWMgaW50DQpwYXJzZV9udW1i
ZXIgKG9sZW4pDQogICAgIGludCBvbGVuOw0Kew0KICByZWdpc3RlciBjaGFy
ICpwID0gbGV4cHRyOw0KICByZWdpc3RlciBpbnQgYzsNCiAgcmVnaXN0ZXIg
dW5zaWduZWQgaW50ICAgbiA9IDAsIG5kLCBtYXhfb3Zlcl9iYXNlOw0KICBy
ZWdpc3RlciBpbnQgYmFzZSA9IDEwOw0KICByZWdpc3RlciBpbnQgbGVuID0g
b2xlbjsNCiAgcmVnaXN0ZXIgaW50IG92ZXJmbG93ID0gMDsNCiAgcmVnaXN0
ZXIgaW50IGRpZ2l0LCBsYXJnZXN0X2RpZ2l0ID0gMDsNCiAgaW50IHNwZWNf
bG9uZyA9IDA7DQoNCiAgeXlsdmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkg
Ow0KDQogIGlmICgqcCA9PSAnMCcpIHsNCiAgICBiYXNlID0gODsNCiAgICBp
ZiAobGVuID49IDMgJiYgKHBbMV0gPT0gJ3gnIHx8IHBbMV0gPT0gJ1gnKSkg
ew0KICAgICAgcCArPSAyOw0KICAgICAgYmFzZSA9IDE2Ow0KICAgICAgbGVu
IC09IDI7DQogICAgfQ0KICB9DQoNCiAgbWF4X292ZXJfYmFzZSA9ICh1bnNp
Z25lZCBpbnQgICkgLTEgLyBiYXNlOw0KDQogIGZvciAoOyBsZW4gPiAwOyBs
ZW4tLSkgew0KICAgIGMgPSAqcCsrOw0KDQogICAgaWYgKGMgPj0gJzAnICYm
IGMgPD0gJzknKQ0KICAgICAgZGlnaXQgPSBjIC0gJzAnOw0KICAgIGVsc2Ug
aWYgKGJhc2UgPT0gMTYgJiYgYyA+PSAnYScgJiYgYyA8PSAnZicpDQogICAg
ICBkaWdpdCA9IGMgLSAnYScgKyAxMDsNCiAgICBlbHNlIGlmIChiYXNlID09
IDE2ICYmIGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQ0KICAgICAgZGlnaXQgPSBj
IC0gJ0EnICsgMTA7DQogICAgZWxzZSB7DQogICAgICAgDQogICAgICB3aGls
ZSAoMSkgew0KCWlmIChjID09ICdsJyB8fCBjID09ICdMJykNCgkgIHsNCgkg
ICAgaWYgKCFwZWRhbnRpYyA8IHNwZWNfbG9uZykNCgkgICAgICB5eWVycm9y
ICgidG9vIG1hbnkgYGwncyBpbiBpbnRlZ2VyIGNvbnN0YW50Iik7DQoJICAg
IHNwZWNfbG9uZysrOw0KCSAgfQ0KCWVsc2UgaWYgKGMgPT0gJ3UnIHx8IGMg
PT0gJ1UnKQ0KCSAgew0KCSAgICBpZiAoISB5eWx2YWwuaW50ZWdlci5zaWdu
ZWRwKQ0KCSAgICAgIHl5ZXJyb3IgKCJ0d28gYHUncyBpbiBpbnRlZ2VyIGNv
bnN0YW50Iik7DQoJICAgIHl5bHZhbC5pbnRlZ2VyLnNpZ25lZHAgPSAwIDsN
CgkgIH0NCgllbHNlIHsNCgkgIGlmIChjID09ICcuJyB8fCBjID09ICdlJyB8
fCBjID09ICdFJyB8fCBjID09ICdwJyB8fCBjID09ICdQJykNCgkgICAgeXll
cnJvciAoIkZsb2F0aW5nIHBvaW50IG51bWJlcnMgbm90IGFsbG93ZWQgaW4g
I2lmIGV4cHJlc3Npb25zIik7DQoJICBlbHNlIHsNCgkgICAgY2hhciAqYnVm
ID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9jYSAgKHAgLSBsZXhwdHIgKyA0
MCk7DQoJICAgIHNwcmludGYgKGJ1ZiwgIm1pc3Npbmcgd2hpdGUgc3BhY2Ug
YWZ0ZXIgbnVtYmVyIGAlLipzJyIsDQoJCSAgICAgKGludCkgKHAgLSBsZXhw
dHIgLSAxKSwgbGV4cHRyKTsNCgkgICAgeXllcnJvciAoYnVmKTsNCgkgIH0N
Cgl9DQoNCglpZiAoLS1sZW4gPT0gMCkNCgkgIGJyZWFrOw0KCWMgPSAqcCsr
Ow0KICAgICAgfQ0KICAgICAgIA0KICAgICAgYnJlYWs7DQogICAgfQ0KICAg
IGlmIChsYXJnZXN0X2RpZ2l0IDwgZGlnaXQpDQogICAgICBsYXJnZXN0X2Rp
Z2l0ID0gZGlnaXQ7DQogICAgbmQgPSBuICogYmFzZSArIGRpZ2l0Ow0KICAg
IG92ZXJmbG93IHw9IChtYXhfb3Zlcl9iYXNlIDwgbikgfCAobmQgPCBuKTsN
CiAgICBuID0gbmQ7DQogIH0NCg0KICBpZiAoYmFzZSA8PSBsYXJnZXN0X2Rp
Z2l0KQ0KICAgIHBlZHdhcm4gKCJpbnRlZ2VyIGNvbnN0YW50IGNvbnRhaW5z
IGRpZ2l0cyBiZXlvbmQgdGhlIHJhZGl4Iik7DQoNCiAgaWYgKG92ZXJmbG93
KQ0KICAgIHBlZHdhcm4gKCJpbnRlZ2VyIGNvbnN0YW50IG91dCBvZiByYW5n
ZSIpOw0KDQogICANCiAgaWYgKCgoaW50ICkgbiAmIHl5bHZhbC5pbnRlZ2Vy
LnNpZ25lZHApIDwgMCkNCiAgICB7DQogICAgICBpZiAoYmFzZSA9PSAxMCkN
Cgl3YXJuaW5nICgiaW50ZWdlciBjb25zdGFudCBpcyBzbyBsYXJnZSB0aGF0
IGl0IGlzIHVuc2lnbmVkIik7DQogICAgICB5eWx2YWwuaW50ZWdlci5zaWdu
ZWRwID0gMCA7DQogICAgfQ0KDQogIGxleHB0ciA9IHA7DQogIHl5bHZhbC5p
bnRlZ2VyLnZhbHVlID0gbjsNCiAgcmV0dXJuIDI1OCA7DQp9DQoNCnN0cnVj
dCB0b2tlbiB7DQogIGNoYXIgKm9wZXJhdG9yOw0KICBpbnQgdG9rZW47DQp9
Ow0KDQpzdGF0aWMgc3RydWN0IHRva2VuIHRva2VudGFiMltdID0gew0KICB7
IiYmIiwgMjYzIH0sDQogIHsifHwiLCAyNjIgfSwNCiAgeyI8PCIsIDI2OCB9
LA0KICB7Ij4+IiwgMjY5IH0sDQogIHsiPT0iLCAyNjQgfSwNCiAgeyIhPSIs
IDI2NSB9LA0KICB7Ijw9IiwgMjY2IH0sDQogIHsiPj0iLCAyNjcgfSwNCiAg
eyIrKyIsIDI2MSB9LA0KICB7Ii0tIiwgMjYxIH0sDQogIHsoKHZvaWQgKikw
KSAsIDI2MSB9DQp9Ow0KDQogDQoNCnN0YXRpYyBpbnQNCnl5bGV4ICgpDQp7
DQogIHJlZ2lzdGVyIGludCBjOw0KICByZWdpc3RlciBpbnQgbmFtZWxlbjsN
CiAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqdG9rc3RhcnQ7DQogIHJlZ2lz
dGVyIHN0cnVjdCB0b2tlbiAqdG9rdGFiOw0KICBpbnQgd2lkZV9mbGFnOw0K
ICBpbnQgIG1hc2s7DQoNCiByZXRyeToNCg0KICB0b2tzdGFydCA9ICh1bnNp
Z25lZCBjaGFyICopIGxleHB0cjsNCiAgYyA9ICp0b2tzdGFydDsNCiAgIA0K
ICBpZiAoISBrZXl3b3JkX3BhcnNpbmcpDQogICAgZm9yICh0b2t0YWIgPSB0
b2tlbnRhYjI7IHRva3RhYi0+b3BlcmF0b3IgIT0gKCh2b2lkICopMCkgOyB0
b2t0YWIrKykNCiAgICAgIGlmIChjID09ICp0b2t0YWItPm9wZXJhdG9yICYm
IHRva3N0YXJ0WzFdID09IHRva3RhYi0+b3BlcmF0b3JbMV0pIHsNCglsZXhw
dHIgKz0gMjsNCglpZiAodG9rdGFiLT50b2tlbiA9PSAyNjEgKQ0KCSAgew0K
CSAgICBjaGFyICpidWYgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICAo
NDApOw0KCSAgICBzcHJpbnRmIChidWYsICJgJXMnIG5vdCBhbGxvd2VkIGlu
IG9wZXJhbmQgb2YgYCNpZiciLCB0b2t0YWItPm9wZXJhdG9yKTsNCgkgICAg
eXllcnJvciAoYnVmKTsNCgkgIH0NCglyZXR1cm4gdG9rdGFiLT50b2tlbjsN
CiAgICAgIH0NCg0KICBzd2l0Y2ggKGMpIHsNCiAgY2FzZSAnXG4nOg0KICAg
IHJldHVybiAwOw0KICAgIA0KICBjYXNlICcgJzoNCiAgY2FzZSAnXHQnOg0K
ICBjYXNlICdccic6DQogICAgbGV4cHRyKys7DQogICAgZ290byByZXRyeTsN
CiAgICANCiAgY2FzZSAnTCc6DQogICAgIA0KICAgIGlmIChsZXhwdHJbMV0g
PT0gJ1wnJykNCiAgICAgIHsNCglsZXhwdHIrKzsNCgl3aWRlX2ZsYWcgPSAx
Ow0KCW1hc2sgPSAoQklUU19QRVJfV09SRCAgICA8ICg4ICAqIHNpemVvZiAo
aW50ICkpICA/IH4gKH4gKGludCApIDAgPDwgQklUU19QRVJfV09SRCAgICkg
OiB+IChpbnQgKSAwKSA7DQoJZ290byBjaGFyX2NvbnN0YW50Ow0KICAgICAg
fQ0KICAgIGlmIChsZXhwdHJbMV0gPT0gJyInKQ0KICAgICAgew0KCWxleHB0
cisrOw0KCXdpZGVfZmxhZyA9IDE7DQoJbWFzayA9IChCSVRTX1BFUl9XT1JE
ICAgIDwgKDggICogc2l6ZW9mIChpbnQgKSkgID8gfiAofiAoaW50ICkgMCA8
PCBCSVRTX1BFUl9XT1JEICAgKSA6IH4gKGludCApIDApIDsNCglnb3RvIHN0
cmluZ19jb25zdGFudDsNCiAgICAgIH0NCiAgICBicmVhazsNCg0KICBjYXNl
ICdcJyc6DQogICAgd2lkZV9mbGFnID0gMDsNCiAgICBtYXNrID0gKEJJVFNf
UEVSX1VOSVQgICA8ICg4ICAqIHNpemVvZiAoaW50ICkpICA/ICh+ICh+IChp
bnQgKSAwIDw8IEJJVFNfUEVSX1VOSVQgICkpIDogfiAoaW50ICkgMCkgOw0K
ICBjaGFyX2NvbnN0YW50Og0KICAgIGxleHB0cisrOw0KICAgIGlmIChrZXl3
b3JkX3BhcnNpbmcpIHsNCiAgICAgIGNoYXIgKnN0YXJ0X3B0ciA9IGxleHB0
ciAtIDE7DQogICAgICB3aGlsZSAoMSkgew0KCWMgPSAqbGV4cHRyKys7DQoJ
aWYgKGMgPT0gJ1xcJykNCgkgIGMgPSBwYXJzZV9lc2NhcGUgKCZsZXhwdHIs
IG1hc2spOw0KCWVsc2UgaWYgKGMgPT0gJ1wnJykNCgkgIGJyZWFrOw0KICAg
ICAgfQ0KICAgICAgeXlsdmFsLm5hbWUuYWRkcmVzcyA9IHRva3N0YXJ0Ow0K
ICAgICAgeXlsdmFsLm5hbWUubGVuZ3RoID0gbGV4cHRyIC0gc3RhcnRfcHRy
Ow0KICAgICAgcmV0dXJuIDI2MCA7DQogICAgfQ0KDQogICAgIA0KDQoNCiAg
ICB7DQogICAgICByZWdpc3RlciBpbnQgIHJlc3VsdCA9IDA7DQogICAgICBy
ZWdpc3RlciBpbnQgbnVtX2NoYXJzID0gMDsNCiAgICAgIHVuc2lnbmVkIHdp
ZHRoID0gQklUU19QRVJfVU5JVCAgOw0KICAgICAgaW50IG1heF9jaGFyczsN
CiAgICAgIGNoYXIgKnRva2VuX2J1ZmZlcjsNCg0KICAgICAgaWYgKHdpZGVf
ZmxhZykNCgl7DQoJICB3aWR0aCA9IEJJVFNfUEVSX1dPUkQgICA7DQoNCg0K
DQoJICBtYXhfY2hhcnMgPSAxOw0KDQoJfQ0KICAgICAgZWxzZQ0KCW1heF9j
aGFycyA9IEJJVFNfUEVSX1dPUkQgICAvIHdpZHRoOw0KDQogICAgICB0b2tl
bl9idWZmZXIgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICAobWF4X2No
YXJzICsgMSk7DQoNCiAgICAgIHdoaWxlICgxKQ0KCXsNCgkgIGMgPSAqbGV4
cHRyKys7DQoNCgkgIGlmIChjID09ICdcJycgfHwgYyA9PSAoLTEpICkNCgkg
ICAgYnJlYWs7DQoNCgkgIGlmIChjID09ICdcXCcpDQoJICAgIHsNCgkgICAg
ICBjID0gcGFyc2VfZXNjYXBlICgmbGV4cHRyLCBtYXNrKTsNCgkgICAgfQ0K
DQoJICBudW1fY2hhcnMrKzsNCg0KCSAgIA0KCSAgaWYgKG51bV9jaGFycyA8
PSBtYXhfY2hhcnMpDQoJICAgIHsNCgkgICAgICBpZiAod2lkdGggPCAoOCAg
KiBzaXplb2YgKGludCApKSApDQoJCXJlc3VsdCA9IChyZXN1bHQgPDwgd2lk
dGgpIHwgYzsNCgkgICAgICBlbHNlDQoJCXJlc3VsdCA9IGM7DQoJICAgICAg
dG9rZW5fYnVmZmVyW251bV9jaGFycyAtIDFdID0gYzsNCgkgICAgfQ0KCX0N
Cg0KICAgICAgdG9rZW5fYnVmZmVyW251bV9jaGFyc10gPSAwOw0KDQogICAg
ICBpZiAoYyAhPSAnXCcnKQ0KCWVycm9yICgibWFsZm9ybWF0dGVkIGNoYXJh
Y3RlciBjb25zdGFudCIpOw0KICAgICAgZWxzZSBpZiAobnVtX2NoYXJzID09
IDApDQoJZXJyb3IgKCJlbXB0eSBjaGFyYWN0ZXIgY29uc3RhbnQiKTsNCiAg
ICAgIGVsc2UgaWYgKG51bV9jaGFycyA+IG1heF9jaGFycykNCgl7DQoJICBu
dW1fY2hhcnMgPSBtYXhfY2hhcnM7DQoJICBlcnJvciAoImNoYXJhY3RlciBj
b25zdGFudCB0b28gbG9uZyIpOw0KCX0NCiAgICAgIGVsc2UgaWYgKG51bV9j
aGFycyAhPSAxICYmICEgdHJhZGl0aW9uYWwpDQoJd2FybmluZyAoIm11bHRp
LWNoYXJhY3RlciBjaGFyYWN0ZXIgY29uc3RhbnQiKTsNCg0KICAgICAgIA0K
ICAgICAgaWYgKCEgd2lkZV9mbGFnKQ0KCXsNCgkgIGludCBudW1fYml0cyA9
IG51bV9jaGFycyAqIHdpZHRoOw0KDQoJICBpZiAobG9va3VwICgoVV9DSEFS
ICopICJfX0NIQVJfVU5TSUdORURfXyIsDQoJCSAgICAgIHNpemVvZiAoIl9f
Q0hBUl9VTlNJR05FRF9fIikgLSAxLCAtMSkNCgkgICAgICB8fCAoKHJlc3Vs
dCA+PiAobnVtX2JpdHMgLSAxKSkgJiAxKSA9PSAwKQ0KCSAgICB5eWx2YWwu
aW50ZWdlci52YWx1ZQ0KCSAgICAgID0gcmVzdWx0ICYgKH4gKHVuc2lnbmVk
IGludCAgKSAwDQoJCQkgID4+ICgoOCAgKiBzaXplb2YgKGludCApKSAgLSBu
dW1fYml0cykpOw0KCSAgZWxzZQ0KCSAgICB5eWx2YWwuaW50ZWdlci52YWx1
ZQ0KCSAgICAgID0gcmVzdWx0IHwgfih+ICh1bnNpZ25lZCBpbnQgICkgMA0K
CQkJICAgPj4gKCg4ICAqIHNpemVvZiAoaW50ICkpICAtIG51bV9iaXRzKSk7
DQoJfQ0KICAgICAgZWxzZQ0KCXsNCiMgNzkwICJjZXhwLnkiDQoNCgkgIHl5
bHZhbC5pbnRlZ2VyLnZhbHVlID0gcmVzdWx0Ow0KCX0NCiAgICB9DQoNCiAg
ICAgDQogICAgeXlsdmFsLmludGVnZXIuc2lnbmVkcCA9ICh+MCkgOw0KICAg
IA0KICAgIHJldHVybiAyNTkgOw0KDQogICAgIA0KDQogIGNhc2UgJy8nOg0K
ICBjYXNlICcrJzoNCiAgY2FzZSAnLSc6DQogIGNhc2UgJyonOg0KICBjYXNl
ICclJzoNCiAgY2FzZSAnfCc6DQogIGNhc2UgJyYnOg0KICBjYXNlICdeJzoN
CiAgY2FzZSAnfic6DQogIGNhc2UgJyEnOg0KICBjYXNlICdAJzoNCiAgY2Fz
ZSAnPCc6DQogIGNhc2UgJz4nOg0KICBjYXNlICdbJzoNCiAgY2FzZSAnXSc6
DQogIGNhc2UgJy4nOg0KICBjYXNlICc/JzoNCiAgY2FzZSAnOic6DQogIGNh
c2UgJz0nOg0KICBjYXNlICd7JzoNCiAgY2FzZSAnfSc6DQogIGNhc2UgJywn
Og0KICBjYXNlICcjJzoNCiAgICBpZiAoa2V5d29yZF9wYXJzaW5nKQ0KICAg
ICAgYnJlYWs7DQogIGNhc2UgJygnOg0KICBjYXNlICcpJzoNCiAgICBsZXhw
dHIrKzsNCiAgICByZXR1cm4gYzsNCg0KICBjYXNlICciJzoNCiAgICBtYXNr
ID0gKEJJVFNfUEVSX1VOSVQgICA8ICg4ICAqIHNpemVvZiAoaW50ICkpICA/
ICh+ICh+IChpbnQgKSAwIDw8IEJJVFNfUEVSX1VOSVQgICkpIDogfiAoaW50
ICkgMCkgOw0KICBzdHJpbmdfY29uc3RhbnQ6DQogICAgaWYgKGtleXdvcmRf
cGFyc2luZykgew0KICAgICAgY2hhciAqc3RhcnRfcHRyID0gbGV4cHRyOw0K
ICAgICAgbGV4cHRyKys7DQogICAgICB3aGlsZSAoMSkgew0KCWMgPSAqbGV4
cHRyKys7DQoJaWYgKGMgPT0gJ1xcJykNCgkgIGMgPSBwYXJzZV9lc2NhcGUg
KCZsZXhwdHIsIG1hc2spOw0KCWVsc2UgaWYgKGMgPT0gJyInKQ0KCSAgYnJl
YWs7DQogICAgICB9DQogICAgICB5eWx2YWwubmFtZS5hZGRyZXNzID0gdG9r
c3RhcnQ7DQogICAgICB5eWx2YWwubmFtZS5sZW5ndGggPSBsZXhwdHIgLSBz
dGFydF9wdHI7DQogICAgICByZXR1cm4gMjYwIDsNCiAgICB9DQogICAgeXll
cnJvciAoInN0cmluZyBjb25zdGFudHMgbm90IGFsbG93ZWQgaW4gI2lmIGV4
cHJlc3Npb25zIik7DQogICAgcmV0dXJuIDI2MSA7DQogIH0NCg0KICBpZiAo
YyA+PSAnMCcgJiYgYyA8PSAnOScgJiYgIWtleXdvcmRfcGFyc2luZykgew0K
ICAgICANCiAgICBmb3IgKG5hbWVsZW4gPSAxOyA7IG5hbWVsZW4rKykgew0K
ICAgICAgaW50IGQgPSB0b2tzdGFydFtuYW1lbGVuXTsNCiAgICAgIGlmICgh
ICgoaXNfaWRjaGFyW2RdIHx8IGQgPT0gJy4nKQ0KCSAgICAgfHwgKChkID09
ICctJyB8fCBkID09ICcrJykNCgkJICYmIChjID09ICdlJyB8fCBjID09ICdF
Jw0KCQkgICAgIHx8ICgoYyA9PSAncCcgfHwgYyA9PSAnUCcpICYmICEgYzg5
KSkNCgkJICYmICEgdHJhZGl0aW9uYWwpKSkNCglicmVhazsNCiAgICAgIGMg
PSBkOw0KICAgIH0NCiAgICByZXR1cm4gcGFyc2VfbnVtYmVyIChuYW1lbGVu
KTsNCiAgfQ0KDQogICANCg0KICBpZiAoa2V5d29yZF9wYXJzaW5nKSB7DQog
ICAgZm9yIChuYW1lbGVuID0gMDs7IG5hbWVsZW4rKykgew0KICAgICAgaWYg
KGlzX3NwYWNlW3Rva3N0YXJ0W25hbWVsZW5dXSkNCglicmVhazsNCiAgICAg
IGlmICh0b2tzdGFydFtuYW1lbGVuXSA9PSAnKCcgfHwgdG9rc3RhcnRbbmFt
ZWxlbl0gPT0gJyknKQ0KCWJyZWFrOw0KICAgICAgaWYgKHRva3N0YXJ0W25h
bWVsZW5dID09ICciJyB8fCB0b2tzdGFydFtuYW1lbGVuXSA9PSAnXCcnKQ0K
CWJyZWFrOw0KICAgIH0NCiAgfSBlbHNlIHsNCiAgICBpZiAoIWlzX2lkc3Rh
cnRbY10pIHsNCiAgICAgIHl5ZXJyb3IgKCJJbnZhbGlkIHRva2VuIGluIGV4
cHJlc3Npb24iKTsNCiAgICAgIHJldHVybiAyNjEgOw0KICAgIH0NCg0KICAg
IGZvciAobmFtZWxlbiA9IDA7IGlzX2lkY2hhclt0b2tzdGFydFtuYW1lbGVu
XV07IG5hbWVsZW4rKykNCiAgICAgIDsNCiAgfQ0KICANCiAgbGV4cHRyICs9
IG5hbWVsZW47DQogIHl5bHZhbC5uYW1lLmFkZHJlc3MgPSB0b2tzdGFydDsN
CiAgeXlsdmFsLm5hbWUubGVuZ3RoID0gbmFtZWxlbjsNCiAgcmV0dXJuIDI2
MCA7DQp9DQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQppbnQgDQpwYXJzZV9lc2NhcGUgKHN0cmluZ19wdHIsIHJlc3VsdF9tYXNr
KQ0KICAgICBjaGFyICoqc3RyaW5nX3B0cjsNCiAgICAgaW50ICByZXN1bHRf
bWFzazsNCnsNCiAgcmVnaXN0ZXIgaW50IGMgPSAqKCpzdHJpbmdfcHRyKSsr
Ow0KICBzd2l0Y2ggKGMpDQogICAgew0KICAgIGNhc2UgJ2EnOg0KICAgICAg
cmV0dXJuIFRBUkdFVF9CRUxMOw0KICAgIGNhc2UgJ2InOg0KICAgICAgcmV0
dXJuIFRBUkdFVF9CUzsNCiAgICBjYXNlICdlJzoNCiAgICBjYXNlICdFJzoN
CiAgICAgIGlmIChwZWRhbnRpYykNCglwZWR3YXJuICgibm9uLUFOU0ktc3Rh
bmRhcmQgZXNjYXBlIHNlcXVlbmNlLCBgXFwlYyciLCBjKTsNCiAgICAgIHJl
dHVybiAwMzM7DQogICAgY2FzZSAnZic6DQogICAgICByZXR1cm4gVEFSR0VU
X0ZGOw0KICAgIGNhc2UgJ24nOg0KICAgICAgcmV0dXJuIFRBUkdFVF9ORVdM
SU5FOw0KICAgIGNhc2UgJ3InOg0KICAgICAgcmV0dXJuIFRBUkdFVF9DUjsN
CiAgICBjYXNlICd0JzoNCiAgICAgIHJldHVybiBUQVJHRVRfVEFCOw0KICAg
IGNhc2UgJ3YnOg0KICAgICAgcmV0dXJuIFRBUkdFVF9WVDsNCiAgICBjYXNl
ICdcbic6DQogICAgICByZXR1cm4gLTI7DQogICAgY2FzZSAwOg0KICAgICAg
KCpzdHJpbmdfcHRyKS0tOw0KICAgICAgcmV0dXJuIDA7DQogICAgICANCiAg
ICBjYXNlICcwJzoNCiAgICBjYXNlICcxJzoNCiAgICBjYXNlICcyJzoNCiAg
ICBjYXNlICczJzoNCiAgICBjYXNlICc0JzoNCiAgICBjYXNlICc1JzoNCiAg
ICBjYXNlICc2JzoNCiAgICBjYXNlICc3JzoNCiAgICAgIHsNCglyZWdpc3Rl
ciBpbnQgIGkgPSBjIC0gJzAnOw0KCXJlZ2lzdGVyIGludCBjb3VudCA9IDA7
DQoJd2hpbGUgKCsrY291bnQgPCAzKQ0KCSAgew0KCSAgICBjID0gKigqc3Ry
aW5nX3B0cikrKzsNCgkgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzcnKQ0K
CSAgICAgIGkgPSAoaSA8PCAzKSArIGMgLSAnMCc7DQoJICAgIGVsc2UNCgkg
ICAgICB7DQoJCSgqc3RyaW5nX3B0ciktLTsNCgkJYnJlYWs7DQoJICAgICAg
fQ0KCSAgfQ0KCWlmIChpICE9IChpICYgcmVzdWx0X21hc2spKQ0KCSAgew0K
CSAgICBpICY9IHJlc3VsdF9tYXNrOw0KCSAgICBwZWR3YXJuICgib2N0YWwg
ZXNjYXBlIHNlcXVlbmNlIG91dCBvZiByYW5nZSIpOw0KCSAgfQ0KCXJldHVy
biBpOw0KICAgICAgfQ0KICAgIGNhc2UgJ3gnOg0KICAgICAgew0KCXJlZ2lz
dGVyIHVuc2lnbmVkIGludCAgIGkgPSAwLCBvdmVyZmxvdyA9IDA7DQoJcmVn
aXN0ZXIgaW50IGRpZ2l0c19mb3VuZCA9IDAsIGRpZ2l0Ow0KCWZvciAoOzsp
DQoJICB7DQoJICAgIGMgPSAqKCpzdHJpbmdfcHRyKSsrOw0KCSAgICBpZiAo
YyA+PSAnMCcgJiYgYyA8PSAnOScpDQoJICAgICAgZGlnaXQgPSBjIC0gJzAn
Ow0KCSAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykNCgkgICAg
ICBkaWdpdCA9IGMgLSAnYScgKyAxMDsNCgkgICAgZWxzZSBpZiAoYyA+PSAn
QScgJiYgYyA8PSAnRicpDQoJICAgICAgZGlnaXQgPSBjIC0gJ0EnICsgMTA7
DQoJICAgIGVsc2UNCgkgICAgICB7DQoJCSgqc3RyaW5nX3B0ciktLTsNCgkJ
YnJlYWs7DQoJICAgICAgfQ0KCSAgICBvdmVyZmxvdyB8PSBpIF4gKGkgPDwg
NCA+PiA0KTsNCgkgICAgaSA9IChpIDw8IDQpICsgZGlnaXQ7DQoJICAgIGRp
Z2l0c19mb3VuZCA9IDE7DQoJICB9DQoJaWYgKCFkaWdpdHNfZm91bmQpDQoJ
ICB5eWVycm9yICgiXFx4IHVzZWQgd2l0aCBubyBmb2xsb3dpbmcgaGV4IGRp
Z2l0cyIpOw0KCWlmIChvdmVyZmxvdyB8IChpICE9IChpICYgcmVzdWx0X21h
c2spKSkNCgkgIHsNCgkgICAgaSAmPSByZXN1bHRfbWFzazsNCgkgICAgcGVk
d2FybiAoImhleCBlc2NhcGUgc2VxdWVuY2Ugb3V0IG9mIHJhbmdlIik7DQoJ
ICB9DQoJcmV0dXJuIGk7DQogICAgICB9DQogICAgZGVmYXVsdDoNCiAgICAg
IHJldHVybiBjOw0KICAgIH0NCn0NCg0Kc3RhdGljIHZvaWQNCnl5ZXJyb3Ig
KHMpDQogICAgIGNoYXIgKnM7DQp7DQogIGVycm9yICgiJXMiLCBzKTsNCiAg
c2tpcF9ldmFsdWF0aW9uID0gMDsNCiAgbG9uZ2ptcCAocGFyc2VfcmV0dXJu
X2Vycm9yLCAxKTsNCn0NCg0Kc3RhdGljIHZvaWQNCmludGVnZXJfb3ZlcmZs
b3cgKCkNCnsNCiAgaWYgKCFza2lwX2V2YWx1YXRpb24gJiYgcGVkYW50aWMp
DQogICAgcGVkd2FybiAoImludGVnZXIgb3ZlcmZsb3cgaW4gcHJlcHJvY2Vz
c29yIGV4cHJlc3Npb24iKTsNCn0NCg0Kc3RhdGljIGludCANCmxlZnRfc2hp
ZnQgKGEsIGIpDQogICAgIHN0cnVjdCBjb25zdGFudCAqYTsNCiAgICAgdW5z
aWduZWQgaW50ICAgYjsNCnsNCiAgICANCg0KDQogIGlmIChiID49ICg4ICAq
IHNpemVvZiAoaW50ICkpICkNCiAgICByZXR1cm4gMDsNCiAgZWxzZQ0KICAg
IHJldHVybiAodW5zaWduZWQgaW50ICApIGEtPnZhbHVlIDw8IGI7DQp9DQoN
CnN0YXRpYyBpbnQgDQpyaWdodF9zaGlmdCAoYSwgYikNCiAgICAgc3RydWN0
IGNvbnN0YW50ICphOw0KICAgICB1bnNpZ25lZCBpbnQgICBiOw0Kew0KICBp
ZiAoYiA+PSAoOCAgKiBzaXplb2YgKGludCApKSApDQogICAgcmV0dXJuIGEt
PnNpZ25lZHAgPyBhLT52YWx1ZSA+PiAoKDggICogc2l6ZW9mIChpbnQgKSkg
IC0gMSkgOiAwOw0KICBlbHNlIGlmIChhLT5zaWduZWRwKQ0KICAgIHJldHVy
biBhLT52YWx1ZSA+PiBiOw0KICBlbHNlDQogICAgcmV0dXJuICh1bnNpZ25l
ZCBpbnQgICkgYS0+dmFsdWUgPj4gYjsNCn0NCgwNCiANCg0KIA0KDQoNCg0K
DQoNCg0KDQppbnQgDQpwYXJzZV9jX2V4cHJlc3Npb24gKHN0cmluZywgd2Fy
bl91bmRlZmluZWQpDQogICAgIGNoYXIgKnN0cmluZzsNCiAgICAgaW50IHdh
cm5fdW5kZWZpbmVkOw0Kew0KICBsZXhwdHIgPSBzdHJpbmc7DQogIHdhcm5f
dW5kZWYgPSB3YXJuX3VuZGVmaW5lZDsNCg0KICAgDQoNCg0KICBpZiAoX19z
aWdzZXRqbXAgKCggcGFyc2VfcmV0dXJuX2Vycm9yICksIDApICkNCiAgICBy
ZXR1cm4gMDsNCg0KICBpZiAoeXlwYXJzZSAoKSAhPSAwKQ0KICAgIChmcHJp
bnRmIChzdGRlcnIsCSIlczolZDogSW50ZXJuYWwgY29tcGlsZXIgZXJyb3Ig
aW4gZnVuY3Rpb24gJXNcbiIsCSJjZXhwLnkiLCAxMDc5LCBfX1BSRVRUWV9G
VU5DVElPTl9fKSwJZXhpdCAoRkFUQUxfRVhJVF9DT0RFKSkgOw0KDQogIGlm
ICgqbGV4cHRyICE9ICdcbicpDQogICAgZXJyb3IgKCJKdW5rIGFmdGVyIGVu
ZCBvZiBleHByZXNzaW9uLiIpOw0KDQogIHJldHVybiBleHByZXNzaW9uX3Zh
bHVlOwkgDQp9DQoMDQojIDEyODAgImNleHAueSINCg0KZWdjczogZmlsZSBw
YXRoIHByZWZpeCBgc3RhZ2UxLycgbmV2ZXIgdXNlZA0K
--42040716-1647221785-924114404=:19269--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019