Mail Archives: djgpp-workers/2001/12/19/10:16:26
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.
---494318816-222447275-1008774943=:20191
Content-Type: TEXT/PLAIN; charset=US-ASCII
[The MIME/multipart stuff seems to have been broken somewhere in the mail
chain, but I managed to extract and view the patch nevertheless.]
On Tue, 18 Dec 2001, Alexander Aganichev wrote:
> I have redone the patch (regex.nls+warning.diff) by casting all
> ctype.h function's arguments to unsigned char. Also I have fix the
> warnings caused by the missed brackets and unused values calculated.
> There's 4 more warnings in pedantic mode about possible use of
> uninitialized variables, but they seems to be safe to ignore.
Most of those changes are OK, but of one, I'm quite sure we don't want
to do that:
@@ -865,11 +865,11 @@
static void
ordinary(p, ch)
register struct parse *p;
-register int ch;
{
register cat_t *cap = p->g->categories;
This would be a bad change, as it removes the type declaration for
argument 'ch'. Implicit int declarations of return types and arguments are
no longer allowed as of ANSI/ISO C99, if memory serves.
Compiling patched sources with the fully pedantic warning set (both the
XGCC=$(XLGCC) and CFLAGS=-w overrides commented out in the regex
makefile), I receive a lot more warnings than just those 4 "might be used
uninitialized" ones from my old GCC-2.8.1 Alpha-to-DJGPP cross compiler
here:
2 cast discards `const' from pointer target type
4 might be used uninitialized in this function
132 initialization discards `const' from pointer target type
Those `const' warnings come from cclass.h and cname.h, mainly. They
happen because GCC detects that the code initializes a pointer to
non-const char by a string literal, which is inherently const.
I extended the fix work based on yours to fix all those const-ness issues
(they tend to avalanche quite a bit). I managed to get away with only one
call to DJ's unconst() macro (in regcomp(), where it assigns the 'next'
pointer), and an otherwise clean build in fully pedantic mode. I think
it's a useful achievement that this part now builds with full warning
levels active, too.
While at it, I also fixed some of the indentation, removed the remaining
"uninitialized" warnings and removed some traditionalisms that do more
harm than help, in a post-K&R1 C environment like DJGPP (casting arguments
of free() and strlen(), return values of malloc(), and the likes).
Patch is attached. Note that it also patches 'makefile' to no longer
deactivate pedantic mode.
> The second fix (regex.nls2.diff) is intended for the proper working in
> NLS capable environment.
I haven't really looked into that yet...
--
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.
---494318816-222447275-1008774943=:20191
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="regex.cleanup.20011219"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine DOT LNX DOT 4 DOT 10 DOT 10112191615430 DOT 20191 AT acp3bf>
Content-Description: Updated patch
Content-Disposition: attachment; filename="regex.cleanup.20011219"
ZGlmZiAtdXJwIC14IENWUyAteCBjc2NvcGUub3V0IC1JIERKIERlbG9yaWUg
cmVnZXgvY2NsYXNzLmggcmVnZXgubmV3L2NjbGFzcy5oDQotLS0gcmVnZXgv
Y2NsYXNzLmgJTW9uIEp1bCAxMiAxNzowMjowMyAxOTk5DQorKysgcmVnZXgu
bmV3L2NjbGFzcy5oCVdlZCBEZWMgMTkgMTQ6NTg6NDAgMjAwMQ0KQEAgLTEs
MzIgKzEsMzIgQEANCiAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREogRGVsb3Jp
ZSwgc2VlIENPUFlJTkcuREogZm9yIGRldGFpbHMgKi8NCiAvKiBjaGFyYWN0
ZXItY2xhc3MgdGFibGUgKi8NCiBzdGF0aWMgc3RydWN0IGNjbGFzcyB7DQot
CWNoYXIgKm5hbWU7DQotCWNoYXIgKmNoYXJzOw0KLQljaGFyICptdWx0aXM7
DQorCWNvbnN0IGNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIgKmNoYXJzOw0K
Kwljb25zdCBjaGFyICptdWx0aXM7DQogfSBjY2xhc3Nlc1tdID0gew0KLQki
YWxudW0iLAkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5elwNCi0wMTIzNDU2Nzg5IiwJCQkJIiIsDQotCSJh
bHBoYSIsCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IiwNCi0JCQkJCSIiLA0KLQkiYmxhbmsiLAkiIFx0
IiwJCSIiLA0KLQkiY250cmwiLAkiXDAwN1xiXHRcblx2XGZcclwxXDJcM1w0
XDVcNlwxNlwxN1wyMFwyMVwyMlwyM1wyNFwNCi1cMjVcMjZcMjdcMzBcMzFc
MzJcMzNcMzRcMzVcMzZcMzdcMTc3IiwJIiIsDQotCSJkaWdpdCIsCSIwMTIz
NDU2Nzg5IiwJIiIsDQotCSJncmFwaCIsCSJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XA0KKyAgIHsgImFs
bnVtIiwgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6XA0KKzAxMjM0NTY3ODkiLCAgICAgICAgICAgICAg
ICIiIH0sDQorICAgeyAiYWxwaGEiLCAgIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLA0KKyAgICAgICAg
ICAgICAgICAgICAiIiB9LA0KKyAgIHsgImJsYW5rIiwgICIgXHQiLCAgICAg
ICIiIH0sDQorICAgeyAiY250cmwiLCAgIlwwMDdcYlx0XG5cdlxmXHJcMVwy
XDNcNFw1XDZcMTZcMTdcMjBcMjFcMjJcMjNcMjRcDQorXDI1XDI2XDI3XDMw
XDMxXDMyXDMzXDM0XDM1XDM2XDM3XDE3NyIsICAgICIiIH0sDQorICAgeyAi
ZGlnaXQiLCAgIjAxMjM0NTY3ODkiLCAgICIiIH0sDQorICAgeyAiZ3JhcGgi
LCAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXpcDQogMDEyMzQ1Njc4OSFcIiMkJSYnKCkqKywtLi86Ozw9
Pj9AW1xcXV5fYHt8fX4iLA0KLQkJCQkJIiIsDQotCSJsb3dlciIsCSJhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsDQotCQkJCQkiIiwNCi0JInByaW50
IiwJIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXpcDQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAg
eyAibG93ZXIiLCAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwNCisg
ICAgICAgICAgICAgICAgICAgIiIgfSwNCisgICB7ICJwcmludCIsICAiQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5elwNCiAwMTIzNDU2Nzg5IVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxd
Xl9ge3x9fiAiLA0KLQkJCQkJIiIsDQotCSJwdW5jdCIsCSIhXCIjJCUmJygp
KissLS4vOjs8PT4/QFtcXF1eX2B7fH1+IiwNCi0JCQkJCSIiLA0KLQkic3Bh
Y2UiLAkiXHRcblx2XGZcciAiLAkiIiwNCi0JInVwcGVyIiwJIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaIiwNCi0JCQkJCSIiLA0KLQkieGRpZ2l0IiwJ
IjAxMjM0NTY3ODlBQkNERUZhYmNkZWYiLA0KLQkJCQkJIiIsDQotCU5VTEws
CQkwLAkJIiINCisgICAgICAgICAgICAgICAgICAgIiIgfSwNCisgICB7ICJw
dW5jdCIsICAiIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9fiIs
DQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAgeyAic3BhY2UiLCAg
Ilx0XG5cdlxmXHIgIiwgICIiIH0sDQorICAgeyAidXBwZXIiLCAgIkFCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXWFlaIiwNCisgICAgICAgICAgICAgICAgICAg
IiIgfSwNCisgICB7ICJ4ZGlnaXQiLCAiMDEyMzQ1Njc4OUFCQ0RFRmFiY2Rl
ZiIsDQorICAgICAgICAgICAgICAgICAgICIiIH0sDQorICAgeyBOVUxMLCAg
ICAgMCwgICAgICAiIiB9DQogfTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Nj
b3BlLm91dCAtSSBESiBEZWxvcmllIHJlZ2V4L2NuYW1lLmggcmVnZXgubmV3
L2NuYW1lLmgNCi0tLSByZWdleC9jbmFtZS5oCU1vbiBKdWwgMTIgMTc6MDI6
MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9jbmFtZS5oCVdlZCBEZWMgMTkgMTQ6
NTg6MDkgMjAwMQ0KQEAgLTEsMTAzICsxLDEwNCBAQA0KIC8qIENvcHlyaWdo
dCAoQykgMTk5OCBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0
YWlscyAqLw0KIC8qIGNoYXJhY3Rlci1uYW1lIHRhYmxlICovDQogc3RhdGlj
IHN0cnVjdCBjbmFtZSB7DQotCWNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIg
Km5hbWU7DQogCWNoYXIgY29kZTsNCiB9IGNuYW1lc1tdID0gew0KLQkiTlVM
IiwJJ1wwJywNCi0JIlNPSCIsCSdcMDAxJywNCi0JIlNUWCIsCSdcMDAyJywN
Ci0JIkVUWCIsCSdcMDAzJywNCi0JIkVPVCIsCSdcMDA0JywNCi0JIkVOUSIs
CSdcMDA1JywNCi0JIkFDSyIsCSdcMDA2JywNCi0JIkJFTCIsCSdcMDA3JywN
Ci0JImFsZXJ0IiwJJ1wwMDcnLA0KLQkiQlMiLAkJJ1wwMTAnLA0KLQkiYmFj
a3NwYWNlIiwJJ1xiJywNCi0JIkhUIiwJCSdcMDExJywNCi0JInRhYiIsCQkn
XHQnLA0KLQkiTEYiLAkJJ1wwMTInLA0KLQkibmV3bGluZSIsCSdcbicsDQot
CSJWVCIsCQknXDAxMycsDQotCSJ2ZXJ0aWNhbC10YWIiLAknXHYnLA0KLQki
RkYiLAkJJ1wwMTQnLA0KLQkiZm9ybS1mZWVkIiwJJ1xmJywNCi0JIkNSIiwJ
CSdcMDE1JywNCi0JImNhcnJpYWdlLXJldHVybiIsCSdccicsDQotCSJTTyIs
CSdcMDE2JywNCi0JIlNJIiwJJ1wwMTcnLA0KLQkiRExFIiwJJ1wwMjAnLA0K
LQkiREMxIiwJJ1wwMjEnLA0KLQkiREMyIiwJJ1wwMjInLA0KLQkiREMzIiwJ
J1wwMjMnLA0KLQkiREM0IiwJJ1wwMjQnLA0KLQkiTkFLIiwJJ1wwMjUnLA0K
LQkiU1lOIiwJJ1wwMjYnLA0KLQkiRVRCIiwJJ1wwMjcnLA0KLQkiQ0FOIiwJ
J1wwMzAnLA0KLQkiRU0iLAknXDAzMScsDQotCSJTVUIiLAknXDAzMicsDQot
CSJFU0MiLAknXDAzMycsDQotCSJJUzQiLAknXDAzNCcsDQotCSJGUyIsCSdc
MDM0JywNCi0JIklTMyIsCSdcMDM1JywNCi0JIkdTIiwJJ1wwMzUnLA0KLQki
SVMyIiwJJ1wwMzYnLA0KLQkiUlMiLAknXDAzNicsDQotCSJJUzEiLAknXDAz
NycsDQotCSJVUyIsCSdcMDM3JywNCi0JInNwYWNlIiwJCScgJywNCi0JImV4
Y2xhbWF0aW9uLW1hcmsiLAknIScsDQotCSJxdW90YXRpb24tbWFyayIsCSci
JywNCi0JIm51bWJlci1zaWduIiwJCScjJywNCi0JImRvbGxhci1zaWduIiwJ
CSckJywNCi0JInBlcmNlbnQtc2lnbiIsCQknJScsDQotCSJhbXBlcnNhbmQi
LAkJJyYnLA0KLQkiYXBvc3Ryb3BoZSIsCQknXCcnLA0KLQkibGVmdC1wYXJl
bnRoZXNpcyIsCScoJywNCi0JInJpZ2h0LXBhcmVudGhlc2lzIiwJJyknLA0K
LQkiYXN0ZXJpc2siLAknKicsDQotCSJwbHVzLXNpZ24iLAknKycsDQotCSJj
b21tYSIsCScsJywNCi0JImh5cGhlbiIsCSctJywNCi0JImh5cGhlbi1taW51
cyIsCSctJywNCi0JInBlcmlvZCIsCScuJywNCi0JImZ1bGwtc3RvcCIsCScu
JywNCi0JInNsYXNoIiwJJy8nLA0KLQkic29saWR1cyIsCScvJywNCi0JInpl
cm8iLAkJJzAnLA0KLQkib25lIiwJCScxJywNCi0JInR3byIsCQknMicsDQot
CSJ0aHJlZSIsCSczJywNCi0JImZvdXIiLAkJJzQnLA0KLQkiZml2ZSIsCQkn
NScsDQotCSJzaXgiLAkJJzYnLA0KLQkic2V2ZW4iLAknNycsDQotCSJlaWdo
dCIsCSc4JywNCi0JIm5pbmUiLAkJJzknLA0KLQkiY29sb24iLAknOicsDQot
CSJzZW1pY29sb24iLAknOycsDQotCSJsZXNzLXRoYW4tc2lnbiIsCSc8JywN
Ci0JImVxdWFscy1zaWduIiwJCSc9JywNCi0JImdyZWF0ZXItdGhhbi1zaWdu
IiwJJz4nLA0KLQkicXVlc3Rpb24tbWFyayIsCSc/JywNCi0JImNvbW1lcmNp
YWwtYXQiLAknQCcsDQotCSJsZWZ0LXNxdWFyZS1icmFja2V0IiwJJ1snLA0K
LQkiYmFja3NsYXNoIiwJCSdcXCcsDQotCSJyZXZlcnNlLXNvbGlkdXMiLAkn
XFwnLA0KLQkicmlnaHQtc3F1YXJlLWJyYWNrZXQiLAknXScsDQotCSJjaXJj
dW1mbGV4IiwJCSdeJywNCi0JImNpcmN1bWZsZXgtYWNjZW50IiwJJ14nLA0K
LQkidW5kZXJzY29yZSIsCQknXycsDQotCSJsb3ctbGluZSIsCQknXycsDQot
CSJncmF2ZS1hY2NlbnQiLAkJJ2AnLA0KLQkibGVmdC1icmFjZSIsCQkneycs
DQotCSJsZWZ0LWN1cmx5LWJyYWNrZXQiLAkneycsDQotCSJ2ZXJ0aWNhbC1s
aW5lIiwJJ3wnLA0KLQkicmlnaHQtYnJhY2UiLAkJJ30nLA0KLQkicmlnaHQt
Y3VybHktYnJhY2tldCIsCSd9JywNCi0JInRpbGRlIiwJCSd+JywNCi0JIkRF
TCIsCSdcMTc3JywNCi0JTlVMTCwJMCwNCisgICB7ICJOVUwiLCAgICAnXDAn
IH0sDQorICAgeyAiU09IIiwgICAgJ1wwMDEnIH0sDQorICAgeyAiU1RYIiwg
ICAgJ1wwMDInIH0sDQorICAgeyAiRVRYIiwgICAgJ1wwMDMnIH0sDQorICAg
eyAiRU9UIiwgICAgJ1wwMDQnIH0sDQorICAgeyAiRU5RIiwgICAgJ1wwMDUn
IH0sDQorICAgeyAiQUNLIiwgICAgJ1wwMDYnIH0sDQorICAgeyAiQkVMIiwg
ICAgJ1wwMDcnIH0sDQorICAgeyAiYWxlcnQiLCAgJ1wwMDcnIH0sDQorICAg
eyAiQlMiLCAgICAgJ1wwMTAnIH0sDQorICAgeyAiYmFja3NwYWNlIiwgICdc
YicgfSwNCisgICB7ICJIVCIsICAgICAnXDAxMScgfSwNCisgICB7ICJ0YWIi
LCAgICAgICAgJ1x0JyB9LA0KKyAgIHsgIkxGIiwgICAgICdcMDEyJyB9LA0K
KyAgIHsgIm5ld2xpbmUiLCAgICAnXG4nIH0sDQorICAgeyAiVlQiLCAgICAg
J1wwMTMnIH0sDQorICAgeyAidmVydGljYWwtdGFiIiwgICAnXHYnIH0sDQor
ICAgeyAiRkYiLCAgICAgJ1wwMTQnIH0sDQorICAgeyAiZm9ybS1mZWVkIiwg
ICdcZicgfSwNCisgICB7ICJDUiIsICAgICAnXDAxNScgfSwNCisgICB7ICJj
YXJyaWFnZS1yZXR1cm4iLCAgICAnXHInIH0sDQorICAgeyAiU08iLCAnXDAx
NicgfSwNCisgICB7ICJTSSIsICdcMDE3JyB9LA0KKyAgIHsgIkRMRSIsICAg
ICdcMDIwJyB9LA0KKyAgIHsgIkRDMSIsICAgICdcMDIxJyB9LA0KKyAgIHsg
IkRDMiIsICAgICdcMDIyJyB9LA0KKyAgIHsgIkRDMyIsICAgICdcMDIzJyB9
LA0KKyAgIHsgIkRDNCIsICAgICdcMDI0JyB9LA0KKyAgIHsgIk5BSyIsICAg
ICdcMDI1JyB9LA0KKyAgIHsgIlNZTiIsICAgICdcMDI2JyB9LA0KKyAgIHsg
IkVUQiIsICAgICdcMDI3JyB9LA0KKyAgIHsgIkNBTiIsICAgICdcMDMwJyB9
LA0KKyAgIHsgIkVNIiwgJ1wwMzEnIH0sDQorICAgeyAiU1VCIiwgICAgJ1ww
MzInIH0sDQorICAgeyAiRVNDIiwgICAgJ1wwMzMnIH0sDQorICAgeyAiSVM0
IiwgICAgJ1wwMzQnIH0sDQorICAgeyAiRlMiLCAnXDAzNCcgfSwNCisgICB7
ICJJUzMiLCAgICAnXDAzNScgfSwNCisgICB7ICJHUyIsICdcMDM1JyB9LA0K
KyAgIHsgIklTMiIsICAgICdcMDM2JyB9LA0KKyAgIHsgIlJTIiwgJ1wwMzYn
IH0sDQorICAgeyAiSVMxIiwgICAgJ1wwMzcnIH0sDQorICAgeyAiVVMiLCAn
XDAzNycgfSwNCisgICB7ICJzcGFjZSIsICAgICAgJyAnIH0sDQorICAgeyAi
ZXhjbGFtYXRpb24tbWFyayIsICAgJyEnIH0sDQorICAgeyAicXVvdGF0aW9u
LW1hcmsiLCAnXCInIH0sDQorICAgeyAibnVtYmVyLXNpZ24iLCAgICAgICAg
JyMnIH0sDQorICAgeyAiZG9sbGFyLXNpZ24iLCAgICAgICAgJyQnIH0sDQor
ICAgeyAicGVyY2VudC1zaWduIiwgICAgICAgJyUnIH0sDQorICAgeyAiYW1w
ZXJzYW5kIiwgICAgICAnJicgfSwNCisgICB7ICJhcG9zdHJvcGhlIiwgICAg
ICdcJycgfSwNCisgICB7ICJsZWZ0LXBhcmVudGhlc2lzIiwgICAnKCcgfSwN
CisgICB7ICJyaWdodC1wYXJlbnRoZXNpcyIsICAnKScgfSwNCisgICB7ICJh
c3RlcmlzayIsICAgJyonIH0sDQorICAgeyAicGx1cy1zaWduIiwgICcrJyB9
LA0KKyAgIHsgImNvbW1hIiwgICcsJyB9LA0KKyAgIHsgImh5cGhlbiIsICct
JyB9LA0KKyAgIHsgImh5cGhlbi1taW51cyIsICAgJy0nIH0sDQorICAgeyAi
cGVyaW9kIiwgJy4nIH0sDQorICAgeyAiZnVsbC1zdG9wIiwgICcuJyB9LA0K
KyAgIHsgInNsYXNoIiwgICcvJyB9LA0KKyAgIHsgInNvbGlkdXMiLCAgICAn
LycgfSwNCisgICB7ICJ6ZXJvIiwgICAgICAgJzAnIH0sDQorICAgeyAib25l
IiwgICAgICAgICcxJyB9LA0KKyAgIHsgInR3byIsICAgICAgICAnMicgfSwN
CisgICB7ICJ0aHJlZSIsICAnMycgfSwNCisgICB7ICJmb3VyIiwgICAgICAg
JzQnIH0sDQorICAgeyAiZml2ZSIsICAgICAgICc1JyB9LA0KKyAgIHsgInNp
eCIsICAgICAgICAnNicgfSwNCisgICB7ICJzZXZlbiIsICAnNycgfSwNCisg
ICB7ICJlaWdodCIsICAnOCcgfSwNCisgICB7ICJuaW5lIiwgICAgICAgJzkn
IH0sDQorICAgeyAiY29sb24iLCAgJzonIH0sDQorICAgeyAic2VtaWNvbG9u
IiwgICc7JyB9LA0KKyAgIHsgImxlc3MtdGhhbi1zaWduIiwgJzwnIH0sDQor
ICAgeyAiZXF1YWxzLXNpZ24iLCAgICAgICAgJz0nIH0sDQorICAgeyAiZ3Jl
YXRlci10aGFuLXNpZ24iLCAgJz4nIH0sDQorICAgeyAicXVlc3Rpb24tbWFy
ayIsICAnPycgfSwNCisgICB7ICJjb21tZXJjaWFsLWF0IiwgICdAJyB9LA0K
KyAgIHsgImxlZnQtc3F1YXJlLWJyYWNrZXQiLCAgICAnWycgfSwNCisgICB7
ICJiYWNrc2xhc2giLCAgICAgICdcXCcgfSwNCisgICB7ICJyZXZlcnNlLXNv
bGlkdXMiLCAgICAnXFwnIH0sDQorICAgeyAicmlnaHQtc3F1YXJlLWJyYWNr
ZXQiLCAgICddJyB9LA0KKyAgIHsgImNpcmN1bWZsZXgiLCAgICAgJ14nIH0s
DQorICAgeyAiY2lyY3VtZmxleC1hY2NlbnQiLCAgJ14nIH0sDQorICAgeyAi
dW5kZXJzY29yZSIsICAgICAnXycgfSwNCisgICB7ICJsb3ctbGluZSIsICAg
ICAgICdfJyB9LA0KKyAgIHsgImdyYXZlLWFjY2VudCIsICAgICAgICdgJyB9
LA0KKyAgIHsgImxlZnQtYnJhY2UiLCAgICAgJ3snIH0sDQorICAgeyAibGVm
dC1jdXJseS1icmFja2V0IiwgJ3snIH0sDQorICAgeyAidmVydGljYWwtbGlu
ZSIsICAnfCcgfSwNCisgICB7ICJyaWdodC1icmFjZSIsICAgICAgICAnfScg
fSwNCisgICB7ICJyaWdodC1jdXJseS1icmFja2V0IiwgICAgJ30nIH0sDQor
ICAgeyAidGlsZGUiLCAgICAgICd+JyB9LA0KKyAgIHsgIkRFTCIsICAgICdc
MTc3JyB9LA0KKyAgIHsgTlVMTCwgMCwgfQ0KIH07DQorDQpkaWZmIC11cnAg
LXggQ1ZTIC14IGNzY29wZS5vdXQgLUkgREogRGVsb3JpZSByZWdleC9kZWJ1
Zy5jIHJlZ2V4Lm5ldy9kZWJ1Zy5jDQotLS0gcmVnZXgvZGVidWcuYwlXZWQg
RGVjIDE5IDE0OjMwOjIzIDIwMDENCisrKyByZWdleC5uZXcvZGVidWcuYwlX
ZWQgRGVjIDE5IDE1OjM2OjQ4IDIwMDENCkBAIC0yMzUsNyArMjM1LDcgQEAg
aW50IGNoOw0KIHsNCiAJc3RhdGljIGNoYXIgYnVmWzEwXTsNCiANCi0JaWYg
KGlzcHJpbnQoY2gpIHx8IGNoID09ICcgJykNCisJaWYgKGlzcHJpbnQoKHVu
c2lnbmVkIGNoYXIpIGNoKSB8fCBjaCA9PSAnICcpDQogCQlzcHJpbnRmKGJ1
ZiwgIiVjIiwgY2gpOw0KIAllbHNlDQogCQlzcHJpbnRmKGJ1ZiwgIlxcJW8i
LCBjaCk7DQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29wZS5vdXQgLUkgREog
RGVsb3JpZSByZWdleC9lbmdpbmUuYyByZWdleC5uZXcvZW5naW5lLmMNCi0t
LSByZWdleC9lbmdpbmUuYwlXZWQgRGVjIDE5IDE0OjMwOjI0IDIwMDENCisr
KyByZWdleC5uZXcvZW5naW5lLmMJV2VkIERlYyAxOSAxNTo0MToyNSAyMDAx
DQpAQCAtMzQsMTEgKzM0LDExIEBAIHN0cnVjdCBtYXRjaCB7DQogCXN0cnVj
dCByZV9ndXRzICpnOw0KIAlpbnQgZWZsYWdzOw0KIAlyZWdtYXRjaF90ICpw
bWF0Y2g7CS8qIFtuc3ViKzFdICgwIGVsZW1lbnQgdW51c2VkKSAqLw0KLQlj
aGFyICpvZmZwOwkJLyogb2Zmc2V0cyB3b3JrIGZyb20gaGVyZSAqLw0KLQlj
aGFyICpiZWdpbnA7CQkvKiBzdGFydCBvZiBzdHJpbmcgLS0gdmlydHVhbCBO
VUwgcHJlY2VkZXMgKi8NCi0JY2hhciAqZW5kcDsJCS8qIGVuZCBvZiBzdHJp
bmcgLS0gdmlydHVhbCBOVUwgaGVyZSAqLw0KLQljaGFyICpjb2xkcDsJCS8q
IGNhbiBiZSBubyBtYXRjaCBzdGFydGluZyBiZWZvcmUgaGVyZSAqLw0KLQlj
aGFyICoqbGFzdHBvczsJCS8qIFtucGx1cysxXSAqLw0KKwljb25zdCBjaGFy
ICpvZmZwOwkvKiBvZmZzZXRzIHdvcmsgZnJvbSBoZXJlICovDQorCWNvbnN0
IGNoYXIgKmJlZ2lucDsJLyogc3RhcnQgb2Ygc3RyaW5nIC0tIHZpcnR1YWwg
TlVMIHByZWNlZGVzICovDQorCWNvbnN0IGNoYXIgKmVuZHA7CS8qIGVuZCBv
ZiBzdHJpbmcgLS0gdmlydHVhbCBOVUwgaGVyZSAqLw0KKwljb25zdCBjaGFy
ICpjb2xkcDsJLyogY2FuIGJlIG5vIG1hdGNoIHN0YXJ0aW5nIGJlZm9yZSBo
ZXJlICovDQorCWNvbnN0IGNoYXIgKipsYXN0cG9zOwkvKiBbbnBsdXMrMV0g
Ki8NCiAJU1RBVEVWQVJTOw0KIAlzdGF0ZXMgc3Q7CQkvKiBjdXJyZW50IHN0
YXRlcyAqLw0KIAlzdGF0ZXMgZnJlc2g7CQkvKiBzdGF0ZXMgZm9yIGEgZnJl
c2ggc3RhcnQgKi8NCkBAIC02MCwyNiArNjAsMjYgQEAgc3RydWN0IG1hdGNo
IHsNCiANCiAvKg0KICAtIG1hdGNoZXIgLSB0aGUgYWN0dWFsIG1hdGNoaW5n
IGVuZ2luZQ0KLSA9PSBzdGF0aWMgaW50IG1hdGNoZXIocmVnaXN0ZXIgc3Ry
dWN0IHJlX2d1dHMgKmcsIGNoYXIgKnN0cmluZywgXA0KKyA9PSBzdGF0aWMg
aW50IG1hdGNoZXIocmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmcsIGNvbnN0
IGNoYXIgKnN0cmluZywgXA0KICA9PQlzaXplX3Qgbm1hdGNoLCByZWdtYXRj
aF90IHBtYXRjaFtdLCBpbnQgZWZsYWdzKTsNCiAgKi8NCiBzdGF0aWMgaW50
CQkJLyogMCBzdWNjZXNzLCBSRUdfTk9NQVRDSCBmYWlsdXJlICovDQogbWF0
Y2hlcihnLCBzdHJpbmcsIG5tYXRjaCwgcG1hdGNoLCBlZmxhZ3MpDQogcmVn
aXN0ZXIgc3RydWN0IHJlX2d1dHMgKmc7DQotY2hhciAqc3RyaW5nOw0KK2Nv
bnN0IGNoYXIgKnN0cmluZzsNCiBzaXplX3Qgbm1hdGNoOw0KIHJlZ21hdGNo
X3QgcG1hdGNoW107DQogaW50IGVmbGFnczsNCiB7DQotCXJlZ2lzdGVyIGNo
YXIgKmVuZHA7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmVuZHA7DQogCXJl
Z2lzdGVyIGludCBpOw0KIAlzdHJ1Y3QgbWF0Y2ggbXY7DQogCXJlZ2lzdGVy
IHN0cnVjdCBtYXRjaCAqbSA9ICZtdjsNCi0JcmVnaXN0ZXIgY2hhciAqZHA7
DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmRwOw0KIAljb25zdCByZWdpc3Rl
ciBzb3BubyBnZiA9IGctPmZpcnN0c3RhdGUrMTsJLyogKzEgZm9yIE9FTkQg
Ki8NCiAJY29uc3QgcmVnaXN0ZXIgc29wbm8gZ2wgPSBnLT5sYXN0c3RhdGU7
DQotCWNoYXIgKnN0YXJ0Ow0KLQljaGFyICpzdG9wOw0KKwljb25zdCBjaGFy
ICpzdGFydDsNCisJY29uc3QgY2hhciAqc3RvcDsNCiANCiAJLyogc2ltcGxp
ZnkgdGhlIHNpdHVhdGlvbiB3aGVyZSBwb3NzaWJsZSAqLw0KIAlpZiAoZy0+
Y2ZsYWdzJlJFR19OT1NVQikNCkBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGVm
bGFnczsNCiAJCQlkcCA9IGRpc3NlY3QobSwgbS0+Y29sZHAsIGVuZHAsIGdm
LCBnbCk7DQogCQl9IGVsc2Ugew0KIAkJCWlmIChnLT5ucGx1cyA+IDAgJiYg
bS0+bGFzdHBvcyA9PSBOVUxMKQ0KLQkJCQltLT5sYXN0cG9zID0gKGNoYXIg
KiopbWFsbG9jKChnLT5ucGx1cysxKSAqDQorCQkJCW0tPmxhc3Rwb3MgPSBt
YWxsb2MoKGctPm5wbHVzKzEpICoNCiAJCQkJCQkJc2l6ZW9mKGNoYXIgKikp
Ow0KIAkJCWlmIChnLT5ucGx1cyA+IDAgJiYgbS0+bGFzdHBvcyA9PSBOVUxM
KSB7DQogCQkJCWZyZWUobS0+cG1hdGNoKTsNCkBAIC0yMTcsMzkgKzIxNywz
OSBAQCBpbnQgZWZsYWdzOw0KIAl9DQogDQogCWlmIChtLT5wbWF0Y2ggIT0g
TlVMTCkNCi0JCWZyZWUoKGNoYXIgKiltLT5wbWF0Y2gpOw0KKwkJZnJlZSht
LT5wbWF0Y2gpOw0KIAlpZiAobS0+bGFzdHBvcyAhPSBOVUxMKQ0KLQkJZnJl
ZSgoY2hhciAqKW0tPmxhc3Rwb3MpOw0KKwkJZnJlZShtLT5sYXN0cG9zKTsN
CiAJU1RBVEVURUFSRE9XTihtKTsNCiAJcmV0dXJuKDApOw0KIH0NCiANCiAv
Kg0KICAtIGRpc3NlY3QgLSBmaWd1cmUgb3V0IHdoYXQgbWF0Y2hlZCB3aGF0
LCBubyBiYWNrIHJlZmVyZW5jZXMNCi0gPT0gc3RhdGljIGNoYXIgKmRpc3Nl
Y3QocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpzdGFydCwgXA0K
LSA9PQljaGFyICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3Qp
Ow0KKyA9PSBzdGF0aWMgY29uc3QgY2hhciAqZGlzc2VjdChyZWdpc3RlciBz
dHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0IGNoYXIgKnN0YXJ0LCBcDQorID09CWNv
bnN0IGNoYXIgKnN0b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7
DQogICovDQotc3RhdGljIGNoYXIgKgkJCS8qID09IHN0b3AgKHN1Y2Nlc3Mp
IGFsd2F5cyAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICoJCS8qID09IHN0b3Ag
KHN1Y2Nlc3MpIGFsd2F5cyAqLw0KIGRpc3NlY3QobSwgc3RhcnQsIHN0b3As
IHN0YXJ0c3QsIHN0b3BzdCkNCiByZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm07
DQotY2hhciAqc3RhcnQ7DQotY2hhciAqc3RvcDsNCitjb25zdCBjaGFyICpz
dGFydDsNCitjb25zdCBjaGFyICpzdG9wOw0KIHNvcG5vIHN0YXJ0c3Q7DQog
c29wbm8gc3RvcHN0Ow0KIHsNCiAJcmVnaXN0ZXIgaW50IGk7DQogCXJlZ2lz
dGVyIHNvcG5vIHNzOwkvKiBzdGFydCBzb3Agb2YgY3VycmVudCBzdWJSRSAq
Lw0KIAlyZWdpc3RlciBzb3BubyBlczsJLyogZW5kIHNvcCBvZiBjdXJyZW50
IHN1YlJFICovDQotCXJlZ2lzdGVyIGNoYXIgKnNwOwkvKiBzdGFydCBvZiBz
dHJpbmcgbWF0Y2hlZCBieSBpdCAqLw0KLQlyZWdpc3RlciBjaGFyICpzdHA7
CS8qIHN0cmluZyBtYXRjaGVkIGJ5IGl0IGNhbm5vdCBwYXNzIGhlcmUgKi8N
Ci0JcmVnaXN0ZXIgY2hhciAqcmVzdDsJLyogc3RhcnQgb2YgcmVzdCBvZiBz
dHJpbmcgKi8NCi0JcmVnaXN0ZXIgY2hhciAqdGFpbDsJLyogc3RyaW5nIHVu
bWF0Y2hlZCBieSByZXN0IG9mIFJFICovDQorCXJlZ2lzdGVyIGNvbnN0IGNo
YXIgKnNwOyAvKiBzdGFydCBvZiBzdHJpbmcgbWF0Y2hlZCBieSBpdCAqLw0K
KwlyZWdpc3RlciBjb25zdCBjaGFyICpzdHA7IC8qIHN0cmluZyBtYXRjaGVk
IGJ5IGl0IGNhbm5vdCBwYXNzIGhlcmUgKi8NCisJcmVnaXN0ZXIgY29uc3Qg
Y2hhciAqcmVzdDsgLyogc3RhcnQgb2YgcmVzdCBvZiBzdHJpbmcgKi8NCisJ
cmVnaXN0ZXIgY29uc3QgY2hhciAqdGFpbDsgLyogc3RyaW5nIHVubWF0Y2hl
ZCBieSByZXN0IG9mIFJFICovDQogCXJlZ2lzdGVyIHNvcG5vIHNzdWI7CS8q
IHN0YXJ0IHNvcCBvZiBzdWJzdWJSRSAqLw0KIAlyZWdpc3RlciBzb3BubyBl
c3ViOwkvKiBlbmQgc29wIG9mIHN1YnN1YlJFICovDQotCXJlZ2lzdGVyIGNo
YXIgKnNzcDsJLyogc3RhcnQgb2Ygc3RyaW5nIG1hdGNoZWQgYnkgc3Vic3Vi
UkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqc2VwOwkvKiBlbmQgb2Ygc3RyaW5n
IG1hdGNoZWQgYnkgc3Vic3ViUkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqb2xk
c3NwOwkvKiBwcmV2aW91cyBzc3AgKi8NCi0JcmVnaXN0ZXIgY2hhciAqZHA7
DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnNzcDsgLyogc3RhcnQgb2Ygc3Ry
aW5nIG1hdGNoZWQgYnkgc3Vic3ViUkUgKi8NCisJcmVnaXN0ZXIgY29uc3Qg
Y2hhciAqc2VwOyAvKiBlbmQgb2Ygc3RyaW5nIG1hdGNoZWQgYnkgc3Vic3Vi
UkUgKi8NCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqb2xkc3NwOyAvKiBwcmV2
aW91cyBzc3AgKi8NCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqZHA7DQogDQog
CUFUKCJkaXNzIiwgc3RhcnQsIHN0b3AsIHN0YXJ0c3QsIHN0b3BzdCk7DQog
CXNwID0gc3RhcnQ7DQpAQCAtNDE0LDI1ICs0MTQsMjUgQEAgc29wbm8gc3Rv
cHN0Ow0KIA0KIC8qDQogIC0gYmFja3JlZiAtIGZpZ3VyZSBvdXQgd2hhdCBt
YXRjaGVkIHdoYXQsIGZpZ3VyaW5nIGluIGJhY2sgcmVmZXJlbmNlcw0KLSA9
PSBzdGF0aWMgY2hhciAqYmFja3JlZihyZWdpc3RlciBzdHJ1Y3QgbWF0Y2gg
Km0sIGNoYXIgKnN0YXJ0LCBcDQotID09CWNoYXIgKnN0b3AsIHNvcG5vIHN0
YXJ0c3QsIHNvcG5vIHN0b3BzdCwgc29wbm8gbGV2KTsNCisgPT0gc3RhdGlj
IGNvbnN0IGNoYXIgKmJhY2tyZWYocmVnaXN0ZXIgc3RydWN0IG1hdGNoICpt
LCBjb25zdCBjaGFyICpzdGFydCwgXA0KKyA9PQljb25zdCBjaGFyICpzdG9w
LCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QsIHNvcG5vIGxldik7DQog
ICovDQotc3RhdGljIGNoYXIgKgkJCS8qID09IHN0b3AgKHN1Y2Nlc3MpIG9y
IE5VTEwgKGZhaWx1cmUpICovDQorc3RhdGljIGNvbnN0IGNoYXIgKgkJLyog
PT0gc3RvcCAoc3VjY2Vzcykgb3IgTlVMTCAoZmFpbHVyZSkgKi8NCiBiYWNr
cmVmKG0sIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBzdG9wc3QsIGxldikNCiBy
ZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm07DQotY2hhciAqc3RhcnQ7DQotY2hh
ciAqc3RvcDsNCitjb25zdCBjaGFyICpzdGFydDsNCitjb25zdCBjaGFyICpz
dG9wOw0KIHNvcG5vIHN0YXJ0c3Q7DQogc29wbm8gc3RvcHN0Ow0KIHNvcG5v
IGxldjsJCQkvKiBQTFVTIG5lc3RpbmcgbGV2ZWwgKi8NCiB7DQogCXJlZ2lz
dGVyIGludCBpOw0KIAlyZWdpc3RlciBzb3BubyBzczsJLyogc3RhcnQgc29w
IG9mIGN1cnJlbnQgc3ViUkUgKi8NCi0JcmVnaXN0ZXIgY2hhciAqc3A7CS8q
IHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IGl0ICovDQorCXJlZ2lzdGVy
IGNvbnN0IGNoYXIgKnNwOyAvKiBzdGFydCBvZiBzdHJpbmcgbWF0Y2hlZCBi
eSBpdCAqLw0KIAlyZWdpc3RlciBzb3BubyBzc3ViOwkvKiBzdGFydCBzb3Ag
b2Ygc3Vic3ViUkUgKi8NCiAJcmVnaXN0ZXIgc29wbm8gZXN1YjsJLyogZW5k
IHNvcCBvZiBzdWJzdWJSRSAqLw0KLQlyZWdpc3RlciBjaGFyICpzc3A7CS8q
IHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IHN1YnN1YlJFICovDQotCXJl
Z2lzdGVyIGNoYXIgKmRwOw0KKwlyZWdpc3RlciBjb25zdCBjaGFyICpzc3A7
IC8qIHN0YXJ0IG9mIHN0cmluZyBtYXRjaGVkIGJ5IHN1YnN1YlJFICovDQor
CXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmRwOw0KIAlyZWdpc3RlciBzaXplX3Qg
bGVuOw0KIAlyZWdpc3RlciBpbnQgaGFyZDsNCiAJcmVnaXN0ZXIgc29wIHM7
DQpAQCAtNjE0LDMxICs2MTQsMzEgQEAgc29wbm8gbGV2OwkJCS8qIFBMVVMg
bmVzdGluZyBsZXZlbCAqLw0KIAkvKiAiY2FuJ3QgaGFwcGVuIiAqLw0KIAlh
c3NlcnQobm9wZSk7DQogCS8qIE5PVFJFQUNIRUQgKi8NCi0JcmV0dXJuKChj
aGFyICopTlVMTCk7CS8qIGR1bW15ICovDQorCXJldHVybihOVUxMKTsJLyog
ZHVtbXkgKi8NCiB9DQogDQogLyoNCiAgLSBmYXN0IC0gc3RlcCB0aHJvdWdo
IHRoZSBzdHJpbmcgYXQgdG9wIHNwZWVkDQotID09IHN0YXRpYyBjaGFyICpm
YXN0KHJlZ2lzdGVyIHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIFwN
Ci0gPT0JY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0
KTsNCisgPT0gc3RhdGljIGNvbnN0IGNoYXIgKmZhc3QocmVnaXN0ZXIgc3Ry
dWN0IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFydCwgXA0KKyA9PQljb25z
dCBjaGFyICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QpOw0K
ICAqLw0KLXN0YXRpYyBjaGFyICoJCQkvKiB3aGVyZSB0ZW50YXRpdmUgbWF0
Y2ggZW5kZWQsIG9yIE5VTEwgKi8NCitzdGF0aWMgY29uc3QgY2hhciAqCQkv
KiB3aGVyZSB0ZW50YXRpdmUgbWF0Y2ggZW5kZWQsIG9yIE5VTEwgKi8NCiBm
YXN0KG0sIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBzdG9wc3QpDQogcmVnaXN0
ZXIgc3RydWN0IG1hdGNoICptOw0KLWNoYXIgKnN0YXJ0Ow0KLWNoYXIgKnN0
b3A7DQorY29uc3QgY2hhciAqc3RhcnQ7DQorY29uc3QgY2hhciAqc3RvcDsN
CiBzb3BubyBzdGFydHN0Ow0KIHNvcG5vIHN0b3BzdDsNCiB7DQogCXJlZ2lz
dGVyIHN0YXRlcyBzdCA9IG0tPnN0Ow0KIAlyZWdpc3RlciBzdGF0ZXMgZnJl
c2ggPSBtLT5mcmVzaDsNCiAJcmVnaXN0ZXIgc3RhdGVzIHRtcCA9IG0tPnRt
cDsNCi0JcmVnaXN0ZXIgY2hhciAqcCA9IHN0YXJ0Ow0KKwlyZWdpc3RlciBj
b25zdCBjaGFyICpwID0gc3RhcnQ7DQogCXJlZ2lzdGVyIGludCBjID0gKHN0
YXJ0ID09IG0tPmJlZ2lucCkgPyBPVVQgOiAqKHN0YXJ0LTEpOw0KIAlyZWdp
c3RlciBpbnQgbGFzdGM7CS8qIHByZXZpb3VzIGMgKi8NCiAJcmVnaXN0ZXIg
aW50IGZsYWdjaDsNCiAJcmVnaXN0ZXIgaW50IGk7DQotCXJlZ2lzdGVyIGNo
YXIgKmNvbGRwOwkvKiBsYXN0IHAgYWZ0ZXIgd2hpY2ggbm8gbWF0Y2ggd2Fz
IHVuZGVyd2F5ICovDQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKmNvbGRwOyAv
KiBsYXN0IHAgYWZ0ZXIgd2hpY2ggbm8gbWF0Y2ggd2FzIHVuZGVyd2F5ICov
DQogDQogCUNMRUFSKHN0KTsNCiAJU0VUMShzdCwgc3RhcnRzdCk7DQpAQCAt
NzEwLDI2ICs3MTAsMjYgQEAgc29wbm8gc3RvcHN0Ow0KIA0KIC8qDQogIC0g
c2xvdyAtIHN0ZXAgdGhyb3VnaCB0aGUgc3RyaW5nIG1vcmUgZGVsaWJlcmF0
ZWx5DQotID09IHN0YXRpYyBjaGFyICpzbG93KHJlZ2lzdGVyIHN0cnVjdCBt
YXRjaCAqbSwgY2hhciAqc3RhcnQsIFwNCi0gPT0JY2hhciAqc3RvcCwgc29w
bm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCisgPT0gc3RhdGljIGNvbnN0
IGNoYXIgKnNsb3cocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjb25zdCBj
aGFyICpzdGFydCwgXA0KKyA9PQljb25zdCBjaGFyICpzdG9wLCBzb3BubyBz
dGFydHN0LCBzb3BubyBzdG9wc3QpOw0KICAqLw0KLXN0YXRpYyBjaGFyICoJ
CQkvKiB3aGVyZSBpdCBlbmRlZCAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICoJ
CS8qIHdoZXJlIGl0IGVuZGVkICovDQogc2xvdyhtLCBzdGFydCwgc3RvcCwg
c3RhcnRzdCwgc3RvcHN0KQ0KIHJlZ2lzdGVyIHN0cnVjdCBtYXRjaCAqbTsN
Ci1jaGFyICpzdGFydDsNCi1jaGFyICpzdG9wOw0KK2NvbnN0IGNoYXIgKnN0
YXJ0Ow0KK2NvbnN0IGNoYXIgKnN0b3A7DQogc29wbm8gc3RhcnRzdDsNCiBz
b3BubyBzdG9wc3Q7DQogew0KIAlyZWdpc3RlciBzdGF0ZXMgc3QgPSBtLT5z
dDsNCiAJcmVnaXN0ZXIgc3RhdGVzIGVtcHR5ID0gbS0+ZW1wdHk7DQogCXJl
Z2lzdGVyIHN0YXRlcyB0bXAgPSBtLT50bXA7DQotCXJlZ2lzdGVyIGNoYXIg
KnAgPSBzdGFydDsNCisJcmVnaXN0ZXIgY29uc3QgY2hhciAqcCA9IHN0YXJ0
Ow0KIAlyZWdpc3RlciBpbnQgYyA9IChzdGFydCA9PSBtLT5iZWdpbnApID8g
T1VUIDogKihzdGFydC0xKTsNCiAJcmVnaXN0ZXIgaW50IGxhc3RjOwkvKiBw
cmV2aW91cyBjICovDQogCXJlZ2lzdGVyIGludCBmbGFnY2g7DQogCXJlZ2lz
dGVyIGludCBpOw0KLQlyZWdpc3RlciBjaGFyICptYXRjaHA7CS8qIGxhc3Qg
cCBhdCB3aGljaCBhIG1hdGNoIGVuZGVkICovDQorCXJlZ2lzdGVyIGNvbnN0
IGNoYXIgKm1hdGNocDsgLyogbGFzdCBwIGF0IHdoaWNoIGEgbWF0Y2ggZW5k
ZWQgKi8NCiANCiAJQVQoInNsb3ciLCBzdGFydCwgc3RvcCwgc3RhcnRzdCwg
c3RvcHN0KTsNCiAJQ0xFQVIoc3QpOw0KQEAgLTkyNywxNCArOTI3LDE0IEBA
IHJlZ2lzdGVyIHN0YXRlcyBhZnQ7CQkvKiBzdGF0ZXMgYWxyZWFkeSANCiAv
Kg0KICAtIHByaW50IC0gcHJpbnQgYSBzZXQgb2Ygc3RhdGVzDQogID09ICNp
ZmRlZiBSRURFQlVHDQotID09IHN0YXRpYyB2b2lkIHByaW50KHN0cnVjdCBt
YXRjaCAqbSwgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBcDQorID09IHN0
YXRpYyB2b2lkIHByaW50KHN0cnVjdCBtYXRjaCAqbSwgY29uc3QgY2hhciAq
Y2FwdGlvbiwgc3RhdGVzIHN0LCBcDQogID09CWludCBjaCwgRklMRSAqZCk7
DQogID09ICNlbmRpZg0KICAqLw0KIHN0YXRpYyB2b2lkDQogcHJpbnQobSwg
Y2FwdGlvbiwgc3QsIGNoLCBkKQ0KIHN0cnVjdCBtYXRjaCAqbTsNCi1jaGFy
ICpjYXB0aW9uOw0KK2NvbnN0IGNoYXIgKmNhcHRpb247DQogc3RhdGVzIHN0
Ow0KIGludCBjaDsNCiBGSUxFICpkOw0KQEAgLTk2MCwxNiArOTYwLDE3IEBA
IEZJTEUgKmQ7DQogLyogDQogIC0gYXQgLSBwcmludCBjdXJyZW50IHNpdHVh
dGlvbg0KICA9PSAjaWZkZWYgUkVERUJVRw0KLSA9PSBzdGF0aWMgdm9pZCBh
dChzdHJ1Y3QgbWF0Y2ggKm0sIGNoYXIgKnRpdGxlLCBjaGFyICpzdGFydCwg
Y2hhciAqc3RvcCwgXA0KLSA9PQkJCQkJCXNvcG5vIHN0YXJ0c3QsIHNvcG5v
IHN0b3BzdCk7DQorID09IHN0YXRpYyB2b2lkIGF0KHN0cnVjdCBtYXRjaCAq
bSwgY29uc3QgY2hhciAqdGl0bGUsIFwNCisgPT0JCQljb25zdCBjaGFyICpz
dGFydCwgY29uc3QgY2hhciAqc3RvcCwgXA0KKyA9PQkJCXNvcG5vIHN0YXJ0
c3QsIHNvcG5vIHN0b3BzdCk7DQogID09ICNlbmRpZg0KICAqLw0KIHN0YXRp
YyB2b2lkDQogYXQobSwgdGl0bGUsIHN0YXJ0LCBzdG9wLCBzdGFydHN0LCBz
dG9wc3QpDQogc3RydWN0IG1hdGNoICptOw0KLWNoYXIgKnRpdGxlOw0KLWNo
YXIgKnN0YXJ0Ow0KLWNoYXIgKnN0b3A7DQorY29uc3QgY2hhciAqdGl0bGU7
DQorY29uc3QgY2hhciAqc3RhcnQ7DQorY29uc3QgY2hhciAqc3RvcDsNCiBz
b3BubyBzdGFydHN0Ow0KIHNvcG5vIHN0b3BzdDsNCiB7DQpAQCAtMTAwMCw3
ICsxMDAxLDcgQEAgaW50IGNoOw0KIHsNCiAJc3RhdGljIGNoYXIgcGJ1Zlsx
MF07DQogDQotCWlmIChpc3ByaW50KGNoKSB8fCBjaCA9PSAnICcpDQorCWlm
IChpc3ByaW50KCh1bnNpZ25lZCBjaGFyKWNoKSB8fCBjaCA9PSAnICcpDQog
CQlzcHJpbnRmKHBidWYsICIlYyIsIGNoKTsNCiAJZWxzZQ0KIAkJc3ByaW50
ZihwYnVmLCAiXFwlbyIsIGNoKTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Nj
b3BlLm91dCAtSSBESiBEZWxvcmllIHJlZ2V4L2VuZ2luZS5paCByZWdleC5u
ZXcvZW5naW5lLmloDQotLS0gcmVnZXgvZW5naW5lLmloCU1vbiBKdWwgMTIg
MTc6MDI6MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9lbmdpbmUuaWgJV2VkIERl
YyAxOSAxNjowNzoxMiAyMDAxDQpAQCAtNCwxMSArNCwxMSBAQCBleHRlcm4g
IkMiIHsNCiAjZW5kaWYNCiANCiAvKiA9PT0gZW5naW5lLmMgPT09ICovDQot
c3RhdGljIGludCBtYXRjaGVyKHJlZ2lzdGVyIHN0cnVjdCByZV9ndXRzICpn
LCBjaGFyICpzdHJpbmcsIHNpemVfdCBubWF0Y2gsIHJlZ21hdGNoX3QgcG1h
dGNoW10sIGludCBlZmxhZ3MpOw0KLXN0YXRpYyBjaGFyICpkaXNzZWN0KHJl
Z2lzdGVyIHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIGNoYXIgKnN0
b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQotc3RhdGljIGNo
YXIgKmJhY2tyZWYocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpz
dGFydCwgY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0
LCBzb3BubyBsZXYpOw0KLXN0YXRpYyBjaGFyICpmYXN0KHJlZ2lzdGVyIHN0
cnVjdCBtYXRjaCAqbSwgY2hhciAqc3RhcnQsIGNoYXIgKnN0b3AsIHNvcG5v
IHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQotc3RhdGljIGNoYXIgKnNsb3co
cmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjaGFyICpzdGFydCwgY2hhciAq
c3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCitzdGF0aWMg
aW50IG1hdGNoZXIocmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmcsIGNvbnN0
IGNoYXIgKnN0cmluZywgc2l6ZV90IG5tYXRjaCwgcmVnbWF0Y2hfdCBwbWF0
Y2hbXSwgaW50IGVmbGFncyk7DQorc3RhdGljIGNvbnN0IGNoYXIgKmRpc3Nl
Y3QocmVnaXN0ZXIgc3RydWN0IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFy
dCwgY29uc3QgY2hhciAqc3RvcCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3Rv
cHN0KTsNCitzdGF0aWMgY29uc3QgY2hhciAqYmFja3JlZihyZWdpc3RlciBz
dHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFy
ICpzdG9wLCBzb3BubyBzdGFydHN0LCBzb3BubyBzdG9wc3QsIHNvcG5vIGxl
dik7DQorc3RhdGljIGNvbnN0IGNoYXIgKmZhc3QocmVnaXN0ZXIgc3RydWN0
IG1hdGNoICptLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqc3Rv
cCwgc29wbm8gc3RhcnRzdCwgc29wbm8gc3RvcHN0KTsNCitzdGF0aWMgY29u
c3QgY2hhciAqc2xvdyhyZWdpc3RlciBzdHJ1Y3QgbWF0Y2ggKm0sIGNvbnN0
IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICpzdG9wLCBzb3BubyBzdGFydHN0
LCBzb3BubyBzdG9wc3QpOw0KIHN0YXRpYyBzdGF0ZXMgc3RlcChyZWdpc3Rl
ciBzdHJ1Y3QgcmVfZ3V0cyAqZywgc29wbm8gc3RhcnQsIHNvcG5vIHN0b3As
IHJlZ2lzdGVyIHN0YXRlcyBiZWYsIGludCBjaCwgcmVnaXN0ZXIgc3RhdGVz
IGFmdCk7DQogI2RlZmluZQlCT0wJKE9VVCsxKQ0KICNkZWZpbmUJRU9MCShC
T0wrMSkNCkBAIC0yMCwxMCArMjAsMTEgQEAgc3RhdGljIHN0YXRlcyBzdGVw
KHJlZ2lzdGVyIHN0cnVjdCByZV9ndQ0KICNkZWZpbmUJTk9OQ0hBUihjKQko
KGMpID4gQ0hBUl9NQVgpDQogI2RlZmluZQlOTk9OQ0hBUgkoQ09ERU1BWC1D
SEFSX01BWCkNCiAjaWZkZWYgUkVERUJVRw0KLXN0YXRpYyB2b2lkIHByaW50
KHN0cnVjdCBtYXRjaCAqbSwgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBp
bnQgY2gsIEZJTEUgKmQpOw0KK3N0YXRpYyB2b2lkIHByaW50KHN0cnVjdCBt
YXRjaCAqbSwgY29uc3QgY2hhciAqY2FwdGlvbiwgc3RhdGVzIHN0LCBpbnQg
Y2gsIEZJTEUgKmQpOw0KICNlbmRpZg0KICNpZmRlZiBSRURFQlVHDQotc3Rh
dGljIHZvaWQgYXQoc3RydWN0IG1hdGNoICptLCBjaGFyICp0aXRsZSwgY2hh
ciAqc3RhcnQsIGNoYXIgKnN0b3AsIHNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0
b3BzdCk7DQorc3RhdGljIHZvaWQgYXQoc3RydWN0IG1hdGNoICptLCBjb25z
dCBjaGFyICp0aXRsZSwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIg
KnN0b3AsIFwNCisJCXNvcG5vIHN0YXJ0c3QsIHNvcG5vIHN0b3BzdCk7DQog
I2VuZGlmDQogI2lmZGVmIFJFREVCVUcNCiBzdGF0aWMgY2hhciAqcGNoYXIo
aW50IGNoKTsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAtSSBE
SiBEZWxvcmllIHJlZ2V4L21ha2VmaWxlIHJlZ2V4Lm5ldy9tYWtlZmlsZQ0K
LS0tIHJlZ2V4L21ha2VmaWxlCVdlZCBEZWMgMTkgMTU6MzQ6MzQgMjAwMQ0K
KysrIHJlZ2V4Lm5ldy9tYWtlZmlsZQlXZWQgRGVjIDE5IDE1OjQyOjA1IDIw
MDENCkBAIC0zLDE1ICszLDkgQEANCiAjIENvcHlyaWdodCAoQykgMTk5NSBE
SiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscw0KIFRPUD0u
Li8uLg0KIA0KLSMgc3VwcmVzcyBhbGwgd2FybmluZ3MgaGVyZQ0KLUNGTEFH
UyA9IC13DQotDQogU1JDICs9IHJlZ2NvbXAuYw0KIFNSQyArPSByZWdlcnJv
ci5jDQogU1JDICs9IHJlZ2V4ZWMuYw0KIFNSQyArPSByZWdmcmVlLmMNCiAN
CiBpbmNsdWRlICQoVE9QKS8uLi9tYWtlZmlsZS5pbmMNCi0NCi1YR0NDID0g
JChYTEdDQykNCi0NCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAt
SSBESiBEZWxvcmllIHJlZ2V4L21ha2VmaWxlLmJzZCByZWdleC5uZXcvbWFr
ZWZpbGUuYnNkDQotLS0gcmVnZXgvbWFrZWZpbGUuYnNkCU1vbiBKdWwgMTIg
MTc6MDI6MDQgMTk5OQ0KKysrIHJlZ2V4Lm5ldy9tYWtlZmlsZS5ic2QJV2Vk
IERlYyAxOSAxNjowNDo0MCAyMDAxDQpAQCAtOCw3ICs4LDcgQEAgU0hFTEw9
L2Jpbi9zaA0KICMgUkVHQ0ZMQUdTIGlzbid0IGltcG9ydGFudCB0byB5b3Ug
KGl0J3MgZm9yIG15IHVzZSBpbiBzb21lIHNwZWNpYWwgY29udGV4dHMpLg0K
IA0KICMgQ0ZMQUdTPS1JLiAtRFBPU0lYX01JU1RBS0UgLURSRURFQlVHICQo
UkVHQ0ZMQUdTKQ0KLUNGTEFHUz0tSS4gLURQT1NJWF9NSVNUQUtFIC1PMiAk
KFJFR0NGTEFHUykNCitDRkxBR1M9LUkuIC1EUE9TSVhfTUlTVEFLRSAtTzIg
JChSRUdDRkxBR1MpIC1JIC4uLy4uLy4uLy4uL2luY2x1ZGUNCiANCiAjIElm
IHlvdSBoYXZlIGEgcHJlLUFOU0kgY29tcGlsZXIsIHB1dCAtbyBpbnRvIE1L
SEZMQUdTLiAgSWYgeW91IHdhbnQNCiAjIHRoZSBCZXJrZWxleSBfX1AgbWFj
cm8sIHB1dCAtYiBpbi4NCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91
dCAtSSBESiBEZWxvcmllIHJlZ2V4L3JlZ2NvbXAuYyByZWdleC5uZXcvcmVn
Y29tcC5jDQotLS0gcmVnZXgvcmVnY29tcC5jCVdlZCBEZWMgMTkgMTQ6MzA6
MjQgMjAwMQ0KKysrIHJlZ2V4Lm5ldy9yZWdjb21wLmMJV2VkIERlYyAxOSAx
NjowNjo1OCAyMDAxDQpAQCAtOCw2ICs4LDggQEANCiAjaW5jbHVkZSA8c3Rk
bGliLmg+DQogI2luY2x1ZGUgPHJlZ2V4Lmg+DQogDQorI2luY2x1ZGUgPGxp
YmMvdW5jb25zdC5oPg0KKw0KICNpbmNsdWRlICJ1dGlscy5oIg0KICNpbmNs
dWRlICJyZWdleDIuaCINCiANCkBAIC01MywxMCArNTUsMTAgQEAgc3RhdGlj
IGNoYXIgbnVsc1sxMF07CQkvKiBwbGFjZSB0byBwb2ludA0KICNkZWZpbmUJ
TkVYVG4obikJKHAtPm5leHQgKz0gKG4pKQ0KICNkZWZpbmUJR0VUTkVYVCgp
CSgqcC0+bmV4dCsrKQ0KICNkZWZpbmUJU0VURVJST1IoZSkJc2V0ZXJyKHAs
IChlKSkNCi0jZGVmaW5lCVJFUVVJUkUoY28sIGUpCSgoY28pIHx8IFNFVEVS
Uk9SKGUpKQ0KLSNkZWZpbmUJTVVTVFNFRShjLCBlKQkoUkVRVUlSRShNT1JF
KCkgJiYgUEVFSygpID09IChjKSwgZSkpDQotI2RlZmluZQlNVVNURUFUKGMs
IGUpCShSRVFVSVJFKE1PUkUoKSAmJiBHRVRORVhUKCkgPT0gKGMpLCBlKSkN
Ci0jZGVmaW5lCU1VU1ROT1RTRUUoYywgZSkJKFJFUVVJUkUoIU1PUkUoKSB8
fCBQRUVLKCkgIT0gKGMpLCBlKSkNCisjZGVmaW5lCVJFUVVJUkUoY28sIGUp
ICBkbyB7IGlmICghY28pIFNFVEVSUk9SKGUpOyB9IHdoaWxlICgwKQ0KKyNk
ZWZpbmUJTVVTVFNFRShjLCBlKQlSRVFVSVJFKE1PUkUoKSAmJiBQRUVLKCkg
PT0gKGMpLCBlKQ0KKyNkZWZpbmUJTVVTVEVBVChjLCBlKQlSRVFVSVJFKE1P
UkUoKSAmJiBHRVRORVhUKCkgPT0gKGMpLCBlKQ0KKyNkZWZpbmUJTVVTVE5P
VFNFRShjLCBlKQlSRVFVSVJFKCFNT1JFKCkgfHwgUEVFSygpICE9IChjKSwg
ZSkNCiAjZGVmaW5lCUVNSVQob3AsIHNvcG5kKQlkb2VtaXQocCwgKHNvcCko
b3ApLCAoc2l6ZV90KShzb3BuZCkpDQogI2RlZmluZQlJTlNFUlQob3AsIHBv
cykJZG9pbnNlcnQocCwgKHNvcCkob3ApLCBIRVJFKCktKHBvcykrMSwgcG9z
KQ0KICNkZWZpbmUJQUhFQUQocG9zKQkJZG9md2QocCwgcG9zLCBIRVJFKCkt
KHBvcykpDQpAQCAtMTEwLDcgKzExMiw3IEBAIGludCBjZmxhZ3M7DQogCQkJ
cmV0dXJuKFJFR19JTlZBUkcpOw0KIAkJbGVuID0gcHJlZy0+cmVfZW5kcCAt
IHBhdHRlcm47DQogCX0gZWxzZQ0KLQkJbGVuID0gc3RybGVuKChjaGFyICop
cGF0dGVybik7DQorCQlsZW4gPSBzdHJsZW4ocGF0dGVybik7DQogDQogCS8q
IGRvIHRoZSBtYWxsb2NzIGVhcmx5IHNvIGZhaWx1cmUgaGFuZGxpbmcgaXMg
ZWFzeSAqLw0KIAlnID0gKHN0cnVjdCByZV9ndXRzICopbWFsbG9jKHNpemVv
ZihzdHJ1Y3QgcmVfZ3V0cykgKw0KQEAgLTEyNyw3ICsxMjksNyBAQCBpbnQg
Y2ZsYWdzOw0KIA0KIAkvKiBzZXQgdGhpbmdzIHVwICovDQogCXAtPmcgPSBn
Ow0KLQlwLT5uZXh0ID0gKGNoYXIgKilwYXR0ZXJuOwkvKiBjb252ZW5pZW5j
ZTsgd2UgZG8gbm90IG1vZGlmeSBpdCAqLw0KKwlwLT5uZXh0ID0gdW5jb25z
dChwYXR0ZXJuLCBjaGFyICopOyAvKiBjb252ZW5pZW5jZTsgd2UgZG8gbm90
IG1vZGlmeSBpdCAqLw0KIAlwLT5lbmQgPSBwLT5uZXh0ICsgbGVuOw0KIAlw
LT5lcnJvciA9IDA7DQogCXAtPm5jc2FsbG9jID0gMDsNCkBAIC0xOTQsOCAr
MTk2LDggQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIGludCBzdG9w
OwkJCS8qIGNoYXJhY3RlciB0aGlzIEVSRSBzaG91bGQgZW5kIGF0ICovDQog
ew0KIAlyZWdpc3RlciBjaGFyIGM7DQotCXJlZ2lzdGVyIHNvcG5vIHByZXZi
YWNrOw0KLQlyZWdpc3RlciBzb3BubyBwcmV2ZndkOw0KKwlyZWdpc3RlciBz
b3BubyBwcmV2YmFjayA9IDA7DQorCXJlZ2lzdGVyIHNvcG5vIHByZXZmd2Qg
PSAwOw0KIAlyZWdpc3RlciBzb3BubyBjb25jOw0KIAlyZWdpc3RlciBpbnQg
Zmlyc3QgPSAxOwkJLyogaXMgdGhpcyB0aGUgZmlyc3QgYWx0ZXJuYXRpdmU/
ICovDQogDQpAQCAtMzEyLDcgKzMxNCw3IEBAIHJlZ2lzdGVyIHN0cnVjdCBw
YXJzZSAqcDsNCiAJCW9yZGluYXJ5KHAsIGMpOw0KIAkJYnJlYWs7DQogCWNh
c2UgJ3snOgkJLyogb2theSBhcyBvcmRpbmFyeSBleGNlcHQgaWYgZGlnaXQg
Zm9sbG93cyAqLw0KLQkJUkVRVUlSRSghTU9SRSgpIHx8ICFpc2RpZ2l0KFBF
RUsoKSksIFJFR19CQURSUFQpOw0KKwkJUkVRVUlSRSghTU9SRSgpIHx8ICFp
c2RpZ2l0KCh1bnNpZ25lZCBjaGFyKVBFRUsoKSksIFJFR19CQURSUFQpOw0K
IAkJLyogRkFMTFRIUk9VR0ggKi8NCiAJZGVmYXVsdDoNCiAJCW9yZGluYXJ5
KHAsIGMpOw0KQEAgLTMyNCw3ICszMjYsNyBAQCByZWdpc3RlciBzdHJ1Y3Qg
cGFyc2UgKnA7DQogCWMgPSBQRUVLKCk7DQogCS8qIHdlIGNhbGwgeyBhIHJl
cGV0aXRpb24gaWYgZm9sbG93ZWQgYnkgYSBkaWdpdCAqLw0KIAlpZiAoISgg
YyA9PSAnKicgfHwgYyA9PSAnKycgfHwgYyA9PSAnPycgfHwNCi0JCQkJKGMg
PT0gJ3snICYmIE1PUkUyKCkgJiYgaXNkaWdpdChQRUVLMigpKSkgKSkNCisJ
ICAgICAgIChjID09ICd7JyAmJiBNT1JFMigpICYmIGlzZGlnaXQoKHVuc2ln
bmVkIGNoYXIpUEVFSzIoKSkpICkpDQogCQlyZXR1cm47CQkvKiBubyByZXBl
dGl0aW9uLCB3ZSdyZSBkb25lICovDQogCU5FWFQoKTsNCiANCkBAIC0zNTMs
NyArMzU1LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIAljYXNl
ICd7JzoNCiAJCWNvdW50ID0gcF9jb3VudChwKTsNCiAJCWlmIChFQVQoJywn
KSkgew0KLQkJCWlmIChpc2RpZ2l0KFBFRUsoKSkpIHsNCisJCQlpZiAoaXNk
aWdpdCgodW5zaWduZWQgY2hhcilQRUVLKCkpKSB7DQogCQkJCWNvdW50MiA9
IHBfY291bnQocCk7DQogCQkJCVJFUVVJUkUoY291bnQgPD0gY291bnQyLCBS
RUdfQkFEQlIpOw0KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51bWJlciB3aXRo
IGNvbW1hICovDQpAQCAtMzc0LDcgKzM3Niw3IEBAIHJlZ2lzdGVyIHN0cnVj
dCBwYXJzZSAqcDsNCiAJCXJldHVybjsNCiAJYyA9IFBFRUsoKTsNCiAJaWYg
KCEoIGMgPT0gJyonIHx8IGMgPT0gJysnIHx8IGMgPT0gJz8nIHx8DQotCQkJ
CShjID09ICd7JyAmJiBNT1JFMigpICYmIGlzZGlnaXQoUEVFSzIoKSkpICkg
KQ0KKwkgICAgICAgKGMgPT0gJ3snICYmIE1PUkUyKCkgJiYgaXNkaWdpdCgo
dW5zaWduZWQgY2hhcilQRUVLMigpKSkgKSApDQogCQlyZXR1cm47DQogCVNF
VEVSUk9SKFJFR19CQURSUFQpOw0KIH0NCkBAIC01MzEsNyArNTMzLDcgQEAg
aW50IHN0YXJvcmRpbmFyeTsJCS8qIGlzIGEgbGVhZGluZyAqIGFuIA0KIAl9
IGVsc2UgaWYgKEVBVFRXTygnXFwnLCAneycpKSB7DQogCQljb3VudCA9IHBf
Y291bnQocCk7DQogCQlpZiAoRUFUKCcsJykpIHsNCi0JCQlpZiAoTU9SRSgp
ICYmIGlzZGlnaXQoUEVFSygpKSkgew0KKwkJCWlmIChNT1JFKCkgJiYgaXNk
aWdpdCgodW5zaWduZWQgY2hhcilQRUVLKCkpKSB7DQogCQkJCWNvdW50MiA9
IHBfY291bnQocCk7DQogCQkJCVJFUVVJUkUoY291bnQgPD0gY291bnQyLCBS
RUdfQkFEQlIpOw0KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51bWJlciB3aXRo
IGNvbW1hICovDQpAQCAtNTYyLDcgKzU2NCw3IEBAIHJlZ2lzdGVyIHN0cnVj
dCBwYXJzZSAqcDsNCiAJcmVnaXN0ZXIgaW50IGNvdW50ID0gMDsNCiAJcmVn
aXN0ZXIgaW50IG5kaWdpdHMgPSAwOw0KIA0KLQl3aGlsZSAoTU9SRSgpICYm
IGlzZGlnaXQoUEVFSygpKSAmJiBjb3VudCA8PSBEVVBNQVgpIHsNCisJd2hp
bGUgKE1PUkUoKSAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKVBFRUsoKSkg
JiYgY291bnQgPD0gRFVQTUFYKSB7DQogCQljb3VudCA9IGNvdW50KjEwICsg
KEdFVE5FWFQoKSAtICcwJyk7DQogCQluZGlnaXRzKys7DQogCX0NCkBAIC02
MTcsNyArNjE5LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOw0KIAkJ
cmVnaXN0ZXIgaW50IGNpOw0KIA0KIAkJZm9yIChpID0gcC0+Zy0+Y3NldHNp
emUgLSAxOyBpID49IDA7IGktLSkNCi0JCQlpZiAoQ0hJTihjcywgaSkgJiYg
aXNhbHBoYShpKSkgew0KKwkJCWlmIChDSElOKGNzLCBpKSAmJiBpc2FscGhh
KCh1bnNpZ25lZCBjaGFyKWkpKSB7DQogCQkJCWNpID0gb3RoZXJjYXNlKGkp
Ow0KIAkJCQlpZiAoY2kgIT0gaSkNCiAJCQkJCUNIYWRkKGNzLCBjaSk7DQpA
QCAtNzI2LDEwICs3MjgsMTAgQEAgcmVnaXN0ZXIgY3NldCAqY3M7DQogCXJl
Z2lzdGVyIGNoYXIgKnNwID0gcC0+bmV4dDsNCiAJcmVnaXN0ZXIgc3RydWN0
IGNjbGFzcyAqY3A7DQogCXJlZ2lzdGVyIHNpemVfdCBsZW47DQotCXJlZ2lz
dGVyIGNoYXIgKnU7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnU7DQogCXJl
Z2lzdGVyIGNoYXIgYzsNCiANCi0Jd2hpbGUgKE1PUkUoKSAmJiBpc2FscGhh
KFBFRUsoKSkpDQorCXdoaWxlIChNT1JFKCkgJiYgaXNhbHBoYSgodW5zaWdu
ZWQgY2hhcilQRUVLKCkpKQ0KIAkJTkVYVCgpOw0KIAlsZW4gPSBwLT5uZXh0
IC0gc3A7DQogCWZvciAoY3AgPSBjY2xhc3NlczsgY3AtPm5hbWUgIT0gTlVM
TDsgY3ArKykNCkBAIC04MjIsMTEgKzgyNCwxMSBAQCBzdGF0aWMgY2hhcgkJ
CS8qIGlmIG5vIGNvdW50ZXJwYXJ0LCByZXR1DQogb3RoZXJjYXNlKGNoKQ0K
IGludCBjaDsNCiB7DQotCWFzc2VydChpc2FscGhhKGNoKSk7DQotCWlmIChp
c3VwcGVyKGNoKSkNCi0JCXJldHVybih0b2xvd2VyKGNoKSk7DQotCWVsc2Ug
aWYgKGlzbG93ZXIoY2gpKQ0KLQkJcmV0dXJuKHRvdXBwZXIoY2gpKTsNCisJ
YXNzZXJ0KGlzYWxwaGEoKHVuc2lnbmVkIGNoYXIpY2gpKTsNCisJaWYgKGlz
dXBwZXIoKHVuc2lnbmVkIGNoYXIpY2gpKQ0KKwkJcmV0dXJuKHRvbG93ZXIo
KHVuc2lnbmVkIGNoYXIpY2gpKTsNCisJZWxzZSBpZiAoaXNsb3dlcigodW5z
aWduZWQgY2hhciljaCkpDQorCQlyZXR1cm4odG91cHBlcigodW5zaWduZWQg
Y2hhciljaCkpOw0KIAllbHNlCQkJLyogcGVjdWxpYXIsIGJ1dCBjb3VsZCBo
YXBwZW4gKi8NCiAJCXJldHVybihjaCk7DQogfQ0KQEAgLTg2OCw4ICs4NzAs
OSBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7DQogcmVnaXN0ZXIgaW50
IGNoOw0KIHsNCiAJcmVnaXN0ZXIgY2F0X3QgKmNhcCA9IHAtPmctPmNhdGVn
b3JpZXM7DQotDQotCWlmICgocC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgJiYg
aXNhbHBoYShjaCkgJiYgb3RoZXJjYXNlKGNoKSAhPSBjaCkNCisJDQorCWlm
ICgocC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgJiYgaXNhbHBoYSgodW5zaWdu
ZWQgY2hhciljaCkgJiYNCisJICAgIG90aGVyY2FzZShjaCkgIT0gY2gpDQog
CQlib3RoY2FzZXMocCwgY2gpOw0KIAllbHNlIHsNCiAJCUVNSVQoT0NIQVIs
ICh1bnNpZ25lZCBjaGFyKWNoKTsNCkBAIC0xMTQ3LDEzICsxMTUwLDEzIEBA
IHJlZ2lzdGVyIGNzZXQgKmNzOw0KIC8qDQogIC0gbWNhZGQgLSBhZGQgYSBj
b2xsYXRpbmcgZWxlbWVudCB0byBhIGNzZXQNCiAgPT0gc3RhdGljIHZvaWQg
bWNhZGQocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0
ICpjcywgXA0KLSA9PQlyZWdpc3RlciBjaGFyICpjcCk7DQorID09CXJlZ2lz
dGVyIGNvbnN0IGNoYXIgKmNwKTsNCiAgKi8NCiBzdGF0aWMgdm9pZA0KIG1j
YWRkKHAsIGNzLCBjcCkNCiByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7DQog
cmVnaXN0ZXIgY3NldCAqY3M7DQotcmVnaXN0ZXIgY2hhciAqY3A7DQorcmVn
aXN0ZXIgY29uc3QgY2hhciAqY3A7DQogew0KIAlyZWdpc3RlciBzaXplX3Qg
b2xkZW5kID0gY3MtPnNtdWx0aXM7DQogDQpAQCAtMTE3Miw2NCArMTE3NSw2
IEBAIHJlZ2lzdGVyIGNoYXIgKmNwOw0KIH0NCiANCiAvKg0KLSAtIG1jc3Vi
IC0gc3VidHJhY3QgYSBjb2xsYXRpbmcgZWxlbWVudCBmcm9tIGEgY3NldA0K
LSA9PSBzdGF0aWMgdm9pZCBtY3N1YihyZWdpc3RlciBjc2V0ICpjcywgcmVn
aXN0ZXIgY2hhciAqY3ApOw0KLSAqLw0KLXN0YXRpYyB2b2lkDQotbWNzdWIo
Y3MsIGNwKQ0KLXJlZ2lzdGVyIGNzZXQgKmNzOw0KLXJlZ2lzdGVyIGNoYXIg
KmNwOw0KLXsNCi0JcmVnaXN0ZXIgY2hhciAqZnAgPSBtY2ZpbmQoY3MsIGNw
KTsNCi0JcmVnaXN0ZXIgc2l6ZV90IGxlbiA9IHN0cmxlbihmcCk7DQotDQot
CWFzc2VydChmcCAhPSBOVUxMKTsNCi0JKHZvaWQpIG1lbW1vdmUoZnAsIGZw
ICsgbGVuICsgMSwNCi0JCQkJY3MtPnNtdWx0aXMgLSAoZnAgKyBsZW4gKyAx
IC0gY3MtPm11bHRpcykpOw0KLQljcy0+c211bHRpcyAtPSBsZW47DQotDQot
CWlmIChjcy0+c211bHRpcyA9PSAwKSB7DQotCQlmcmVlKGNzLT5tdWx0aXMp
Ow0KLQkJY3MtPm11bHRpcyA9IE5VTEw7DQotCQlyZXR1cm47DQotCX0NCi0N
Ci0JY3MtPm11bHRpcyA9IHJlYWxsb2MoY3MtPm11bHRpcywgY3MtPnNtdWx0
aXMpOw0KLQlhc3NlcnQoY3MtPm11bHRpcyAhPSBOVUxMKTsNCi19DQotDQot
LyoNCi0gLSBtY2luIC0gaXMgYSBjb2xsYXRpbmcgZWxlbWVudCBpbiBhIGNz
ZXQ/DQotID09IHN0YXRpYyBpbnQgbWNpbihyZWdpc3RlciBjc2V0ICpjcywg
cmVnaXN0ZXIgY2hhciAqY3ApOw0KLSAqLw0KLXN0YXRpYyBpbnQNCi1tY2lu
KGNzLCBjcCkNCi1yZWdpc3RlciBjc2V0ICpjczsNCi1yZWdpc3RlciBjaGFy
ICpjcDsNCi17DQotCXJldHVybihtY2ZpbmQoY3MsIGNwKSAhPSBOVUxMKTsN
Ci19DQotDQotLyoNCi0gLSBtY2ZpbmQgLSBmaW5kIGEgY29sbGF0aW5nIGVs
ZW1lbnQgaW4gYSBjc2V0DQotID09IHN0YXRpYyBjaGFyICptY2ZpbmQocmVn
aXN0ZXIgY3NldCAqY3MsIHJlZ2lzdGVyIGNoYXIgKmNwKTsNCi0gKi8NCi1z
dGF0aWMgY2hhciAqDQotbWNmaW5kKGNzLCBjcCkNCi1yZWdpc3RlciBjc2V0
ICpjczsNCi1yZWdpc3RlciBjaGFyICpjcDsNCi17DQotCXJlZ2lzdGVyIGNo
YXIgKnA7DQotDQotCWlmIChjcy0+bXVsdGlzID09IE5VTEwpDQotCQlyZXR1
cm4oTlVMTCk7DQotCWZvciAocCA9IGNzLT5tdWx0aXM7ICpwICE9ICdcMCc7
IHAgKz0gc3RybGVuKHApICsgMSkNCi0JCWlmIChzdHJjbXAoY3AsIHApID09
IDApDQotCQkJcmV0dXJuKHApOw0KLQlyZXR1cm4oTlVMTCk7DQotfQ0KLQ0K
LS8qDQogIC0gbWNpbnZlcnQgLSBpbnZlcnQgdGhlIGxpc3Qgb2YgY29sbGF0
aW5nIGVsZW1lbnRzIGluIGEgY3NldA0KICA9PSBzdGF0aWMgdm9pZCBtY2lu
dmVydChyZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVyIGNzZXQg
KmNzKTsNCiAgKg0KQEAgLTE0OTcsOCArMTQ0Miw4IEBAIHN0cnVjdCBwYXJz
ZSAqcDsNCiByZWdpc3RlciBzdHJ1Y3QgcmVfZ3V0cyAqZzsNCiB7DQogCXJl
Z2lzdGVyIHNvcCAqc2NhbjsNCi0Jc29wICpzdGFydDsNCi0JcmVnaXN0ZXIg
c29wICpuZXdzdGFydDsNCisJc29wICpzdGFydCA9IE5VTEw7DQorCXJlZ2lz
dGVyIHNvcCAqbmV3c3RhcnQgPSBOVUxMOw0KIAlyZWdpc3RlciBzb3BubyBu
ZXdsZW47DQogCXJlZ2lzdGVyIHNvcCBzOw0KIAlyZWdpc3RlciBjaGFyICpj
cDsNCmRpZmYgLXVycCAteCBDVlMgLXggY3Njb3BlLm91dCAtSSBESiBEZWxv
cmllIHJlZ2V4L3JlZ2NvbXAuaWggcmVnZXgubmV3L3JlZ2NvbXAuaWgNCi0t
LSByZWdleC9yZWdjb21wLmloCU1vbiBKdWwgMTIgMTc6MDI6MDQgMTk5OQ0K
KysrIHJlZ2V4Lm5ldy9yZWdjb21wLmloCVdlZCBEZWMgMTkgMTY6MDc6MDkg
MjAwMQ0KQEAgLTI3LDEwICsyNyw3IEBAIHN0YXRpYyB2b2lkIGZyZWVzZXQo
cmVnaXN0ZXIgc3RydWN0IHBhcnMNCiBzdGF0aWMgaW50IGZyZWV6ZXNldChy
ZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVyIGNzZXQgKmNzKTsN
CiBzdGF0aWMgaW50IGZpcnN0Y2gocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpw
LCByZWdpc3RlciBjc2V0ICpjcyk7DQogc3RhdGljIGludCBuY2gocmVnaXN0
ZXIgc3RydWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0ICpjcyk7DQotc3Rh
dGljIHZvaWQgbWNhZGQocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwLCByZWdp
c3RlciBjc2V0ICpjcywgcmVnaXN0ZXIgY2hhciAqY3ApOw0KLXN0YXRpYyB2
b2lkIG1jc3ViKHJlZ2lzdGVyIGNzZXQgKmNzLCByZWdpc3RlciBjaGFyICpj
cCk7DQotc3RhdGljIGludCBtY2luKHJlZ2lzdGVyIGNzZXQgKmNzLCByZWdp
c3RlciBjaGFyICpjcCk7DQotc3RhdGljIGNoYXIgKm1jZmluZChyZWdpc3Rl
ciBjc2V0ICpjcywgcmVnaXN0ZXIgY2hhciAqY3ApOw0KK3N0YXRpYyB2b2lk
IG1jYWRkKHJlZ2lzdGVyIHN0cnVjdCBwYXJzZSAqcCwgcmVnaXN0ZXIgY3Nl
dCAqY3MsIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmNwKTsNCiBzdGF0aWMgdm9p
ZCBtY2ludmVydChyZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnAsIHJlZ2lzdGVy
IGNzZXQgKmNzKTsNCiBzdGF0aWMgdm9pZCBtY2Nhc2UocmVnaXN0ZXIgc3Ry
dWN0IHBhcnNlICpwLCByZWdpc3RlciBjc2V0ICpjcyk7DQogc3RhdGljIGlu
dCBpc2luc2V0cyhyZWdpc3RlciBzdHJ1Y3QgcmVfZ3V0cyAqZywgaW50IGMp
Ow0KZGlmZiAtdXJwIC14IENWUyAteCBjc2NvcGUub3V0IC1JIERKIERlbG9y
aWUgcmVnZXgvcmVnZXJyb3IuYyByZWdleC5uZXcvcmVnZXJyb3IuYw0KLS0t
IHJlZ2V4L3JlZ2Vycm9yLmMJTW9uIEp1bCAxMiAxNzowMjowNCAxOTk5DQor
KysgcmVnZXgubmV3L3JlZ2Vycm9yLmMJV2VkIERlYyAxOSAxNToxMTo1OSAy
MDAxDQpAQCAtMzMsMjcgKzMzLDI3IEBADQogICovDQogc3RhdGljIHN0cnVj
dCByZXJyIHsNCiAJaW50IGNvZGU7DQotCWNoYXIgKm5hbWU7DQotCWNoYXIg
KmV4cGxhaW47DQorCWNvbnN0IGNoYXIgKm5hbWU7DQorCWNvbnN0IGNoYXIg
KmV4cGxhaW47DQogfSByZXJyc1tdID0gew0KLQlSRUdfT0tBWSwJIlJFR19P
S0FZIiwJIm5vIGVycm9ycyBkZXRlY3RlZCIsDQotCVJFR19OT01BVENILAki
UkVHX05PTUFUQ0giLAkicmVnZXhlYygpIGZhaWxlZCB0byBtYXRjaCIsDQot
CVJFR19CQURQQVQsCSJSRUdfQkFEUEFUIiwJImludmFsaWQgcmVndWxhciBl
eHByZXNzaW9uIiwNCi0JUkVHX0VDT0xMQVRFLAkiUkVHX0VDT0xMQVRFIiwJ
ImludmFsaWQgY29sbGF0aW5nIGVsZW1lbnQiLA0KLQlSRUdfRUNUWVBFLAki
UkVHX0VDVFlQRSIsCSJpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyIsDQotCVJF
R19FRVNDQVBFLAkiUkVHX0VFU0NBUEUiLAkidHJhaWxpbmcgYmFja3NsYXNo
IChcXCkiLA0KLQlSRUdfRVNVQlJFRywJIlJFR19FU1VCUkVHIiwJImludmFs
aWQgYmFja3JlZmVyZW5jZSBudW1iZXIiLA0KLQlSRUdfRUJSQUNLLAkiUkVH
X0VCUkFDSyIsCSJicmFja2V0cyAoWyBdKSBub3QgYmFsYW5jZWQiLA0KLQlS
RUdfRVBBUkVOLAkiUkVHX0VQQVJFTiIsCSJwYXJlbnRoZXNlcyBub3QgYmFs
YW5jZWQiLA0KLQlSRUdfRUJSQUNFLAkiUkVHX0VCUkFDRSIsCSJicmFjZXMg
bm90IGJhbGFuY2VkIiwNCi0JUkVHX0JBREJSLAkiUkVHX0JBREJSIiwJImlu
dmFsaWQgcmVwZXRpdGlvbiBjb3VudChzKSIsDQotCVJFR19FUkFOR0UsCSJS
RUdfRVJBTkdFIiwJImludmFsaWQgY2hhcmFjdGVyIHJhbmdlIiwNCi0JUkVH
X0VTUEFDRSwJIlJFR19FU1BBQ0UiLAkib3V0IG9mIG1lbW9yeSIsDQotCVJF
R19CQURSUFQsCSJSRUdfQkFEUlBUIiwJInJlcGV0aXRpb24tb3BlcmF0b3Ig
b3BlcmFuZCBpbnZhbGlkIiwNCi0JUkVHX0VNUFRZLAkiUkVHX0VNUFRZIiwJ
ImVtcHR5IChzdWIpZXhwcmVzc2lvbiIsDQotCVJFR19BU1NFUlQsCSJSRUdf
QVNTRVJUIiwJIlwiY2FuJ3QgaGFwcGVuXCIgLS0geW91IGZvdW5kIGEgYnVn
IiwNCi0JUkVHX0lOVkFSRywJIlJFR19JTlZBUkciLAkiaW52YWxpZCBhcmd1
bWVudCB0byByZWdleCByb3V0aW5lIiwNCi0JLTEsCQkiIiwJCSIqKiogdW5r
bm93biByZWdleHAgZXJyb3IgY29kZSAqKioiLA0KKyAgIHsgUkVHX09LQVks
ICJSRUdfT0tBWSIsICJubyBlcnJvcnMgZGV0ZWN0ZWQiIH0sDQorICAgeyBS
RUdfTk9NQVRDSCwgICJSRUdfTk9NQVRDSCIsICAicmVnZXhlYygpIGZhaWxl
ZCB0byBtYXRjaCIgfSwNCisgICB7IFJFR19CQURQQVQsICAgIlJFR19CQURQ
QVQiLCAgICJpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiIgfSwNCisgICB7
IFJFR19FQ09MTEFURSwgIlJFR19FQ09MTEFURSIsICJpbnZhbGlkIGNvbGxh
dGluZyBlbGVtZW50IiB9LA0KKyAgIHsgUkVHX0VDVFlQRSwgICAiUkVHX0VD
VFlQRSIsICAgImludmFsaWQgY2hhcmFjdGVyIGNsYXNzIiB9LA0KKyAgIHsg
UkVHX0VFU0NBUEUsICAiUkVHX0VFU0NBUEUiLCAgInRyYWlsaW5nIGJhY2tz
bGFzaCAoXFwpIiB9LA0KKyAgIHsgUkVHX0VTVUJSRUcsICAiUkVHX0VTVUJS
RUciLCAgImludmFsaWQgYmFja3JlZmVyZW5jZSBudW1iZXIiIH0sDQorICAg
eyBSRUdfRUJSQUNLLCAgICJSRUdfRUJSQUNLIiwgICAiYnJhY2tldHMgKFsg
XSkgbm90IGJhbGFuY2VkIiB9LA0KKyAgIHsgUkVHX0VQQVJFTiwgICAiUkVH
X0VQQVJFTiIsICAgInBhcmVudGhlc2VzIG5vdCBiYWxhbmNlZCIgfSwNCisg
ICB7IFJFR19FQlJBQ0UsICAgIlJFR19FQlJBQ0UiLCAgICJicmFjZXMgbm90
IGJhbGFuY2VkIiB9LA0KKyAgIHsgUkVHX0JBREJSLCAgICAiUkVHX0JBREJS
IiwgICAgImludmFsaWQgcmVwZXRpdGlvbiBjb3VudChzKSIgfSwNCisgICB7
IFJFR19FUkFOR0UsICAgIlJFR19FUkFOR0UiLCAgICJpbnZhbGlkIGNoYXJh
Y3RlciByYW5nZSIgfSwNCisgICB7IFJFR19FU1BBQ0UsICAgIlJFR19FU1BB
Q0UiLCAgICJvdXQgb2YgbWVtb3J5IiB9LA0KKyAgIHsgUkVHX0JBRFJQVCwg
ICAiUkVHX0JBRFJQVCIsICAgInJlcGV0aXRpb24tb3BlcmF0b3Igb3BlcmFu
ZCBpbnZhbGlkIiB9LA0KKyAgIHsgUkVHX0VNUFRZLCAgICAiUkVHX0VNUFRZ
IiwgICAgImVtcHR5IChzdWIpZXhwcmVzc2lvbiIgfSwNCisgICB7IFJFR19B
U1NFUlQsICAgIlJFR19BU1NFUlQiLCAgICJcImNhbid0IGhhcHBlblwiIC0t
IHlvdSBmb3VuZCBhIGJ1ZyIgfSwNCisgICB7IFJFR19JTlZBUkcsICAgIlJF
R19JTlZBUkciLCAgICJpbnZhbGlkIGFyZ3VtZW50IHRvIHJlZ2V4IHJvdXRp
bmUiIH0sDQorICAgeyAtMSwgICAgICAgIiIsICAgICAiKioqIHVua25vd24g
cmVnZXhwIGVycm9yIGNvZGUgKioqIiB9DQogfTsNCiANCiAvKg0KQEAgLTcx
LDcgKzcxLDcgQEAgc2l6ZV90IGVycmJ1Zl9zaXplOw0KIAlyZWdpc3RlciBz
dHJ1Y3QgcmVyciAqcjsNCiAJcmVnaXN0ZXIgc2l6ZV90IGxlbjsNCiAJcmVn
aXN0ZXIgaW50IHRhcmdldCA9IGVycmNvZGUgJn4gUkVHX0lUT0E7DQotCXJl
Z2lzdGVyIGNoYXIgKnM7DQorCXJlZ2lzdGVyIGNvbnN0IGNoYXIgKnM7DQog
CWNoYXIgY29udmJ1Zls1MF07DQogDQogCWlmIChlcnJjb2RlID09IFJFR19B
VE9JKQ0KQEAgLTExOSw5ICsxMTksOSBAQCBjaGFyICpsb2NhbGJ1ZjsNCiAJ
Zm9yIChyID0gcmVycnM7IHItPmNvZGUgPj0gMDsgcisrKQ0KIAkJaWYgKHN0
cmNtcChyLT5uYW1lLCBwcmVnLT5yZV9lbmRwKSA9PSAwKQ0KIAkJCWJyZWFr
Ow0KLQlpZiAoci0+Y29kZSA8IDApDQotCQlyZXR1cm4oIjAiKTsNCi0NCi0J
c3ByaW50Zihsb2NhbGJ1ZiwgIiVkIiwgci0+Y29kZSk7DQorCWlmIChyLT5j
b2RlIDwgMCkgDQorCQlzdHJjcHkobG9jYWxidWYsICIwIik7DQorCWVsc2Ug
DQorCQlzcHJpbnRmKGxvY2FsYnVmLCAiJWQiLCByLT5jb2RlKTsNCiAJcmV0
dXJuKGxvY2FsYnVmKTsNCiB9DQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29w
ZS5vdXQgLUkgREogRGVsb3JpZSByZWdleC9yZWdleDIuaCByZWdleC5uZXcv
cmVnZXgyLmgNCi0tLSByZWdleC9yZWdleDIuaAlNb24gSnVsIDEyIDE3OjAy
OjA1IDE5OTkNCisrKyByZWdleC5uZXcvcmVnZXgyLmgJV2VkIERlYyAxOSAx
NjoxMDoyOSAyMDAxDQpAQCAtMTMyLDQgKzEzMiw0IEBAIHN0cnVjdCByZV9n
dXRzIHsNCiANCiAvKiBtaXNjIHV0aWxpdGllcyAqLw0KICNkZWZpbmUJT1VU
CShDSEFSX01BWCsxKQkvKiBhIG5vbi1jaGFyYWN0ZXIgdmFsdWUgKi8NCi0j
ZGVmaW5lCUlTV09SRChjKQkoaXNhbG51bShjKSB8fCAoYykgPT0gJ18nKQ0K
KyNkZWZpbmUJSVNXT1JEKGMpCShpc2FsbnVtKCh1bnNpZ25lZCBjaGFyKWMp
IHx8IChjKSA9PSAnXycpDQpkaWZmIC11cnAgLXggQ1ZTIC14IGNzY29wZS5v
dXQgLUkgREogRGVsb3JpZSByZWdleC9yZWdleGVjLmMgcmVnZXgubmV3L3Jl
Z2V4ZWMuYw0KLS0tIHJlZ2V4L3JlZ2V4ZWMuYwlNb24gSnVsIDEyIDE3OjAy
OjA1IDE5OTkNCisrKyByZWdleC5uZXcvcmVnZXhlYy5jCVdlZCBEZWMgMTkg
MTU6MjY6MTQgMjAwMQ0KQEAgLTE3LDcgKzE3LDkgQEANCiAjaW5jbHVkZSAi
dXRpbHMuaCINCiAjaW5jbHVkZSAicmVnZXgyLmgiDQogDQorI2lmbmRlZiBO
REVCVUcNCiBzdGF0aWMgaW50IG5vcGUgPSAwOwkJLyogZm9yIHVzZSBpbiBh
c3NlcnRzOyBzaHV0cyBsaW50IHVwICovDQorI2VuZGlmDQogDQogLyogbWFj
cm9zIGZvciBtYW5pcHVsYXRpbmcgc3RhdGVzLCBzbWFsbCB2ZXJzaW9uICov
DQogI2RlZmluZQlzdGF0ZXMJdW5zaWduZWQNCkBAIC0xMzMsNyArMTM1LDcg
QEAgaW50IGVmbGFnczsNCiAJZWZsYWdzID0gR09PREZMQUdTKGVmbGFncyk7
DQogDQogCWlmIChnLT5uc3RhdGVzIDw9IENIQVJfQklUKnNpemVvZihzdGF0
ZXMxKSAmJiAhKGVmbGFncyZSRUdfTEFSR0UpKQ0KLQkJcmV0dXJuKHNtYXRj
aGVyKGcsIChjaGFyICopc3RyaW5nLCBubWF0Y2gsIHBtYXRjaCwgZWZsYWdz
KSk7DQorCQlyZXR1cm4oc21hdGNoZXIoZywgc3RyaW5nLCBubWF0Y2gsIHBt
YXRjaCwgZWZsYWdzKSk7DQogCWVsc2UNCi0JCXJldHVybihsbWF0Y2hlcihn
LCAoY2hhciAqKXN0cmluZywgbm1hdGNoLCBwbWF0Y2gsIGVmbGFncykpOw0K
KwkJcmV0dXJuKGxtYXRjaGVyKGcsIHN0cmluZywgbm1hdGNoLCBwbWF0Y2gs
IGVmbGFncykpOw0KIH0NCg==
---494318816-222447275-1008774943=:20191--
- Raw text -