public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/3938: missing structure member
@ 2002-04-23  2:06 rth
  0 siblings, 0 replies; 2+ messages in thread
From: rth @ 2002-04-23  2:06 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, k_fukui, nobody

Synopsis: missing structure member

State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Tue Apr 23 02:04:30 2002
State-Changed-Why:
    Not a gcc bug.  Report this to gdb as described in 
    http://sources.redhat.com/gdb/bugs/

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


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

* c/3938: missing structure member
@ 2001-08-04  4:26 k_fukui
  0 siblings, 0 replies; 2+ messages in thread
From: k_fukui @ 2001-08-04  4:26 UTC (permalink / raw)
  To: gcc-gnats

>Number:         3938
>Category:       c
>Synopsis:       missing structure member
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Aug 04 04:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Kaoru Fukui
>Release:        gcc-3.0.1 cvs
>Organization:
>Environment:
linuxppc
>Description:
make[1]: Entering directory `/usr/src/redhat/BUILD/insight+dejagnu-20010804/gdb'
gcc -c -O2 -fsigned-char    -I. -I. -I./config -DHAVE_CONFIG_H -I./../include/op
code -I./../readline/.. -I../bfd -I./../bfd  -I./../include -I../intl -I./../int
l  -DMI_OUT=1 -DGDBTK -DUI_OUT=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs 
-Wformat -Wparentheses -Wpointer-arith -Wuninitialized  -I./../libgui/src  -I/us
r/src/redhat/BUILD/insight+dejagnu-20010804/itcl/itcl/generic \
-I/usr/src/redhat/BUILD/insight+dejagnu-20010804/tix/generic -I/usr/src/redhat/B
UILD/insight+dejagnu-20010804/tcl/generic -I/usr/src/redhat/BUILD/insight+dejagn
u-20010804/tk/generic -I/usr/src/redhat/BUILD/insight+dejagnu-20010804/tk/generi
c -I/usr/X11R6/include   \
 ./gdbtk/generic/gdbtk-bp.c \
-DGDBTK_LIBRARY=\"/usr/share/gdbtcl\"
gdbtk/generic/gdbtk-bp.c: In function `gdb_get_breakpoint_info':
gdbtk/generic/gdbtk-bp.c:346: structure has no member named `enable'
gdbtk/generic/gdbtk-bp.c:346: `enabled' undeclared (first use in this function)
gdbtk/generic/gdbtk-bp.c:346: (Each undeclared identifier is reported only once
gdbtk/generic/gdbtk-bp.c:346: for each function it appears in.)
gdbtk/generic/gdbtk-bp.c: In function `gdb_set_bp':
gdbtk/generic/gdbtk-bp.c:459: `del' undeclared (first use in this function)
gdbtk/generic/gdbtk-bp.c:461: `donttouch' undeclared (first use in this function
)
gdbtk/generic/gdbtk-bp.c:434: warning: `disp' might be used uninitialized in thi
s function
gdbtk/generic/gdbtk-bp.c: In function `gdb_set_bp_addr':
gdbtk/generic/gdbtk-bp.c:541: `del' undeclared (first use in this function)
gdbtk/generic/gdbtk-bp.c:543: `donttouch' undeclared (first use in this function
)
gdbtk/generic/gdbtk-bp.c:520: warning: `disp' might be used uninitialized in thi
s function
gdbtk/generic/gdbtk-bp.c: In function `gdb_get_tracepoint_info':
gdbtk/generic/gdbtk-bp.c:820: structure has no member named `enabled'
make[1]: *** [gdbtk-bp.o] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/insight+dejagnu-20010804/gdb'
make: *** [all-gdb] Error 2
[root@g4mpKFUKUI insight+dejagnu-20010804]# gcc -v
Reading specs from /usr/lib/gcc-lib/ppc-linux/3.0.1/specs
Configured with: /usr/src/redhat/BUILD/gcc-3.0.1/configure --prefix=/usr --mandir=/usr/share/man --info
dir=/usr/share/info --enable-shared --enable-threads --enable-checking=gc,misc,tree --enable-languages=
c,c++,f77,objc ppc-linux
Thread model: posix
gcc version 3.0.1 20010802 (prerelease)
[root@g4mpKFUKUI insight+dejagnu-20010804]# 

-------------------- gdbtk.c --------------------------------
  Tcl_ListObjAppendElement (NULL, result_ptr->obj_ptr,
			    Tcl_NewBooleanObj (b->enable == enabled));


  if (strncmp (typestr, "temp", 4) == 0)
    disp = del;
  else if (strncmp (typestr, "normal", 6) == 0)
    disp = donttouch;
  else
    {
      Tcl_SetStringObj (result_ptr->obj_ptr,
			"type must be \"temp\" or \"normal\"", -1);
      return TCL_ERROR;
    }



>How-To-Repeat:
compiling insight+dejagnu-20010804
>Fix:

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

LyogVGNsL1RrIGNvbW1hbmQgZGVmaW5pdGlvbnMgZm9yIEluc2lnaHQgLSBCcmVha3BvaW50cy4K
ICAgQ29weXJpZ2h0IDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgogICBUaGlz
IGZpbGUgaXMgcGFydCBvZiBHREIuCgogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvcgogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUKICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KCiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwoK
I2luY2x1ZGUgImRlZnMuaCIKI2luY2x1ZGUgInN5bXRhYi5oIgojaW5jbHVkZSAic3ltZmlsZS5o
IgojaW5jbHVkZSAibGluZXNwZWMuaCIKI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKI2luY2x1ZGUg
InRyYWNlcG9pbnQuaCIKI2luY2x1ZGUgImdkYi1ldmVudHMuaCIKCiNpbmNsdWRlIDx0Y2wuaD4K
I2luY2x1ZGUgImdkYnRrLmgiCiNpbmNsdWRlICJnZGJ0ay1jbWRzLmgiCgovKiBGcm9tIGJyZWFr
cG9pbnQuYyAqLwpleHRlcm4gc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnRfY2hhaW47Cgov
KiBGcm9tIGdkYnRrLWhvb2tzLmMgKi8KZXh0ZXJuIHZvaWQgcmVwb3J0X2Vycm9yICh2b2lkKTsK
Ci8qIFRoZXNlIHR3byBsb29rdXAgdGFibGVzIGFyZSB1c2VkIHRvIHRyYW5zbGF0ZSB0aGUgdHlw
ZSAmIGRpc3Bvc2l0aW9uIGZpZWxkcwogICBvZiB0aGUgYnJlYWtwb2ludCBzdHJ1Y3R1cmUgKHJl
c3BlY3RpdmVseSkgaW50byBzb21ldGhpbmcgZ2RidGsgdW5kZXJzdGFuZHMuCiAgIFRoZXkgYXJl
IGFsc28gdXNlZCBpbiBnZGJ0ay1ob29rcy5jICovCgpjaGFyICpicHR5cGVzW10gPQp7Im5vbmUi
LCAiYnJlYWtwb2ludCIsICJodyBicmVha3BvaW50IiwgInVudGlsIiwKICJmaW5pc2giLCAid2F0
Y2hwb2ludCIsICJodyB3YXRjaHBvaW50IiwKICJyZWFkIHdhdGNocG9pbnQiLCAiYWNjIHdhdGNo
cG9pbnQiLAogImxvbmdqbXAiLCAibG9uZ2ptcCByZXN1bWUiLCAic3RlcCByZXN1bWUiLAogInNp
Z3RyYW1wIiwgIndhdGNocG9pbnQgc2NvcGUiLAogImNhbGwgZHVtbXkiLCAic2hsaWIgZXZlbnRz
IiwgImNhdGNoIGxvYWQiLAogImNhdGNoIHVubG9hZCIsICJjYXRjaCBmb3JrIiwgImNhdGNoIHZm
b3JrIiwKICJjYXRjaCBleGVjIiwgImNhdGNoIGNhdGNoIiwgImNhdGNoIHRocm93Igp9OwpjaGFy
ICpicGRpc3BbXSA9CnsiZGVsZXRlIiwgImRlbHN0b3AiLCAiZGlzYWJsZSIsICJkb250dG91Y2gi
fTsKCi8qIElzIHRoaXMgYnJlYWtwb2ludCBpbnRlcmVzdGluZyB0byBhIHVzZXIgaW50ZXJmYWNl
PyAqLwojZGVmaW5lIEJSRUFLUE9JTlRfSVNfSU5URVJFU1RJTkcoYnApIFwKKChicCktPnR5cGUg
PT0gYnBfYnJlYWtwb2ludCAgICAgICAgICAgICBcCiB8fCAoYnApLT50eXBlID09IGJwX2hhcmR3
YXJlX2JyZWFrcG9pbnQgXAogfHwgKGJwKS0+dHlwZSA9PSBicF93YXRjaHBvaW50ICAgICAgICAg
IFwKIHx8IChicCktPnR5cGUgPT0gYnBfaGFyZHdhcmVfd2F0Y2hwb2ludCBcCiB8fCAoYnApLT50
eXBlID09IGJwX3JlYWRfd2F0Y2hwb2ludCAgICAgXAogfHwgKGJwKS0+dHlwZSA9PSBicF9hY2Nl
c3Nfd2F0Y2hwb2ludCkKCi8qIElzIHRoaXMgYnJlYWtwb2ludCBhIHdhdGNocG9pbnQ/ICAqLwoj
ZGVmaW5lIEJSRUFLUE9JTlRfSVNfV0FUQ0hQT0lOVChicCkJCQkJCSAgICAgIFwKKChicCktPnR5
cGUgPT0gYnBfd2F0Y2hwb2ludAkJCQkJCSAgICAgIFwKIHx8IChicCktPnR5cGUgPT0gYnBfaGFy
ZHdhcmVfd2F0Y2hwb2ludAkJCQkgICAgICBcCiB8fCAoYnApLT50eXBlID09IGJwX3JlYWRfd2F0
Y2hwb2ludAkJCQkJICAgICAgXAogfHwgKGJwKS0+dHlwZSA9PSBicF9hY2Nlc3Nfd2F0Y2hwb2lu
dCkKCi8qCiAqIFRoZXNlIGFyZSByb3V0aW5lcyB3ZSBuZWVkIGZyb20gYnJlYWtwb2ludC5jLgog
KiBhdCBzb21lIHBvaW50IG1ha2UgdGhlc2Ugc3RhdGljIGluIGJyZWFrcG9pbnQuYyBhbmQgbW92
ZSBHVUkgY29kZSB0aGVyZQogKi8KCmV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqc2V0X3Jhd19i
cmVha3BvaW50IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCwKCQkJCQkgICAgICBlbnVtIGJw
dHlwZSBicF90eXBlKTsKZXh0ZXJuIHZvaWQgc2V0X2JyZWFrcG9pbnRfY291bnQgKGludCk7CmV4
dGVybiBpbnQgYnJlYWtwb2ludF9jb3VudDsKCi8qIEJyZWFrcG9pbnQvVHJhY2Vwb2ludCBsaXN0
cy4gVW5mb3J0dW5hdGVseSwgZ2RiIGZvcmNlcyB1cyB0bwogICBrZWVwIGEgbGlzdCBvZiBicmVh
a3BvaW50cywgdG9vLiBXaHkgY291bGRuJ3QgaXQgYmUgZG9uZSBsaWtlCiAgIHRyZWFjZXBvaW50
cz8gKi8KI2RlZmluZSBERUZBVUxUX0xJU1RfU0laRSAzMgpzdGF0aWMgc3RydWN0IGJyZWFrcG9p
bnQgKipicmVha3BvaW50X2xpc3Q7CnN0YXRpYyBpbnQgYnJlYWtwb2ludF9saXN0X3NpemUgPSBE
RUZBVUxUX0xJU1RfU0laRTsKCi8qCiAqIEZvcndhcmQgZGVjbGFyYXRpb25zCiAqLwoKLyogQnJl
YWtwb2ludC1yZWxhdGVkIGZ1bmN0aW9ucyAqLwpzdGF0aWMgaW50IGdkYl9maW5kX2JwX2F0X2Fk
ZHIgKENsaWVudERhdGEsIFRjbF9JbnRlcnAgKiwgaW50LAoJCQkJVGNsX09iaiAqIENPTlNUIG9i
anZbXSk7CnN0YXRpYyBpbnQgZ2RiX2ZpbmRfYnBfYXRfbGluZSAoQ2xpZW50RGF0YSwgVGNsX0lu
dGVycCAqLCBpbnQsCgkJCQlUY2xfT2JqICogQ09OU1Qgb2JqdltdKTsKc3RhdGljIGludCBnZGJf
Z2V0X2JyZWFrcG9pbnRfaW5mbyAoQ2xpZW50RGF0YSwgVGNsX0ludGVycCAqLCBpbnQsCgkJCQkg
ICAgVGNsX09iaiAqIENPTlNUW10pOwpzdGF0aWMgaW50IGdkYl9nZXRfYnJlYWtwb2ludF9saXN0
IChDbGllbnREYXRhLCBUY2xfSW50ZXJwICosIGludCwKCQkJCSAgICBUY2xfT2JqICogQ09OU1Rb
XSk7CnN0YXRpYyBpbnQgZ2RiX3NldF9icCAoQ2xpZW50RGF0YSwgVGNsX0ludGVycCAqLCBpbnQs
IFRjbF9PYmogKiBDT05TVCBvYmp2W10pOwpzdGF0aWMgaW50IGdkYl9zZXRfYnBfYWRkciAoQ2xp
ZW50RGF0YSwgVGNsX0ludGVycCAqLCBpbnQsCgkJCSAgICBUY2xfT2JqICogQ09OU1Qgb2Jqdltd
KTsKCi8qIFRyYWNlcG9pbnQtcmVsYXRlZCBmdW5jdGlvbnMgKi8Kc3RhdGljIGludCBnZGJfYWN0
aW9uc19jb21tYW5kIChDbGllbnREYXRhLCBUY2xfSW50ZXJwICosIGludCwKCQkJCVRjbF9PYmog
KiBDT05TVCBvYmp2W10pOwpzdGF0aWMgaW50IGdkYl9nZXRfdHJhY2VfZnJhbWVfbnVtIChDbGll
bnREYXRhLCBUY2xfSW50ZXJwICosIGludCwKCQkJCSAgICBUY2xfT2JqICogQ09OU1Qgb2Jqdltd
KTsKc3RhdGljIGludCBnZGJfZ2V0X3RyYWNlcG9pbnRfaW5mbyAoQ2xpZW50RGF0YSwgVGNsX0lu
dGVycCAqLCBpbnQsCgkJCQkgICAgVGNsX09iaiAqIENPTlNUIG9ianZbXSk7CnN0YXRpYyBpbnQg
Z2RiX2dldF90cmFjZXBvaW50X2xpc3QgKENsaWVudERhdGEsIFRjbF9JbnRlcnAgKiwgaW50LAoJ
CQkJICAgIFRjbF9PYmogKiBDT05TVCBvYmp2W10pOwpzdGF0aWMgaW50IGdkYl90cmFjZV9zdGF0
dXMgKENsaWVudERhdGEsIFRjbF9JbnRlcnAgKiwgaW50LAoJCQkgICAgIFRjbF9PYmogKiBDT05T
VFtdKTsKc3RhdGljIGludCBnZGJfdHJhY2Vwb2ludF9leGlzdHNfY29tbWFuZCAoQ2xpZW50RGF0
YSwgVGNsX0ludGVycCAqLAoJCQkJCSAgaW50LCBUY2xfT2JqICogQ09OU1Qgb2JqdltdKTsKc3Rh
dGljIGludCB0cmFjZXBvaW50X2V4aXN0cyAoY2hhciAqYXJncyk7CgovKiBCcmVha3BvaW50L3Ry
YWNlcG9pbnQgZXZlbnRzIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyAqLwoKdm9pZCBnZGJ0a19jcmVh
dGVfYnJlYWtwb2ludCAoaW50KTsKdm9pZCBnZGJ0a19kZWxldGVfYnJlYWtwb2ludCAoaW50KTsK
dm9pZCBnZGJ0a19tb2RpZnlfYnJlYWtwb2ludCAoaW50KTsKdm9pZCBnZGJ0a19jcmVhdGVfdHJh
Y2Vwb2ludCAoaW50KTsKdm9pZCBnZGJ0a19kZWxldGVfdHJhY2Vwb2ludCAoaW50KTsKdm9pZCBn
ZGJ0a19tb2RpZnlfdHJhY2Vwb2ludCAoaW50KTsKc3RhdGljIHZvaWQgYnJlYWtwb2ludF9ub3Rp
ZnkgKGludCwgY29uc3QgY2hhciAqKTsKc3RhdGljIHZvaWQgdHJhY2Vwb2ludF9ub3RpZnkgKGlu
dCwgY29uc3QgY2hhciAqKTsKCmludApHZGJ0a19CcmVha3BvaW50X0luaXQgKFRjbF9JbnRlcnAg
KmludGVycCkKewogIC8qIEJyZWFrcG9pbnQgY29tbWFuZHMgKi8KICBUY2xfQ3JlYXRlT2JqQ29t
bWFuZCAoaW50ZXJwLCAiZ2RiX2ZpbmRfYnBfYXRfYWRkciIsIGdkYnRrX2NhbGxfd3JhcHBlciwK
CQkJZ2RiX2ZpbmRfYnBfYXRfYWRkciwgTlVMTCk7CiAgVGNsX0NyZWF0ZU9iakNvbW1hbmQgKGlu
dGVycCwgImdkYl9maW5kX2JwX2F0X2xpbmUiLCBnZGJ0a19jYWxsX3dyYXBwZXIsCgkJCWdkYl9m
aW5kX2JwX2F0X2xpbmUsIE5VTEwpOwogIFRjbF9DcmVhdGVPYmpDb21tYW5kIChpbnRlcnAsICJn
ZGJfZ2V0X2JyZWFrcG9pbnRfaW5mbyIsIGdkYnRrX2NhbGxfd3JhcHBlciwKCQkJZ2RiX2dldF9i
cmVha3BvaW50X2luZm8sIE5VTEwpOwogIFRjbF9DcmVhdGVPYmpDb21tYW5kIChpbnRlcnAsICJn
ZGJfZ2V0X2JyZWFrcG9pbnRfbGlzdCIsIGdkYnRrX2NhbGxfd3JhcHBlciwKCQkJZ2RiX2dldF9i
cmVha3BvaW50X2xpc3QsIE5VTEwpOwogIFRjbF9DcmVhdGVPYmpDb21tYW5kIChpbnRlcnAsICJn
ZGJfc2V0X2JwIiwgZ2RidGtfY2FsbF93cmFwcGVyLCBnZGJfc2V0X2JwLCBOVUxMKTsKICBUY2xf
Q3JlYXRlT2JqQ29tbWFuZCAoaW50ZXJwLCAiZ2RiX3NldF9icF9hZGRyIiwgZ2RidGtfY2FsbF93
cmFwcGVyLAoJCQlnZGJfc2V0X2JwX2FkZHIsIE5VTEwpOwoKICAvKiBUcmFjZXBvaW50IGNvbW1h
bmRzICovCiAgVGNsX0NyZWF0ZU9iakNvbW1hbmQgKGludGVycCwgImdkYl9hY3Rpb25zIiwKCQkJ
Z2RidGtfY2FsbF93cmFwcGVyLCBnZGJfYWN0aW9uc19jb21tYW5kLCBOVUxMKTsKICBUY2xfQ3Jl
YXRlT2JqQ29tbWFuZCAoaW50ZXJwLCAiZ2RiX2dldF90cmFjZV9mcmFtZV9udW0iLAoJCQlnZGJ0
a19jYWxsX3dyYXBwZXIsIGdkYl9nZXRfdHJhY2VfZnJhbWVfbnVtLCBOVUxMKTsKICBUY2xfQ3Jl
YXRlT2JqQ29tbWFuZCAoaW50ZXJwLCAiZ2RiX2dldF90cmFjZXBvaW50X2luZm8iLAoJCQlnZGJ0
a19jYWxsX3dyYXBwZXIsIGdkYl9nZXRfdHJhY2Vwb2ludF9pbmZvLCBOVUxMKTsKICBUY2xfQ3Jl
YXRlT2JqQ29tbWFuZCAoaW50ZXJwLCAiZ2RiX2dldF90cmFjZXBvaW50X2xpc3QiLAoJCQlnZGJ0
a19jYWxsX3dyYXBwZXIsIGdkYl9nZXRfdHJhY2Vwb2ludF9saXN0LCBOVUxMKTsKICBUY2xfQ3Jl
YXRlT2JqQ29tbWFuZCAoaW50ZXJwLCAiZ2RiX2lzX3RyYWNpbmciLAoJCQlnZGJ0a19jYWxsX3dy
YXBwZXIsIGdkYl90cmFjZV9zdGF0dXMsCU5VTEwpOwogIFRjbF9DcmVhdGVPYmpDb21tYW5kIChp
bnRlcnAsICJnZGJfdHJhY2Vwb2ludF9leGlzdHMiLAoJCQlnZGJ0a19jYWxsX3dyYXBwZXIsIGdk
Yl90cmFjZXBvaW50X2V4aXN0c19jb21tYW5kLCBOVUxMKTsKCiAgLyogSW5pdGlhbGl6ZSBvdXIg
dGFibGVzIG9mIEJQcy4gKi8KICBicmVha3BvaW50X2xpc3QgPSAoc3RydWN0IGJyZWFrcG9pbnQg
KiopIHhtYWxsb2MgKGJyZWFrcG9pbnRfbGlzdF9zaXplICogc2l6ZW9mIChzdHJ1Y3QgYnJlYWtw
b2ludCAqKSk7CiAgbWVtc2V0IChicmVha3BvaW50X2xpc3QsIDAsIGJyZWFrcG9pbnRfbGlzdF9z
aXplICogc2l6ZW9mIChzdHJ1Y3QgYnJlYWtwb2ludCAqKSk7CgogIHJldHVybiBUQ0xfT0s7Cn0K
DAovKgogKiAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGNvbW1hbmRzIGZvciBtYW5pcHVsYXRpb24g
b2YgYnJlYWtwb2ludHMuCiAqLwoKLyogc2V0IGEgYnJlYWtwb2ludCBieSBzb3VyY2UgZmlsZSBh
bmQgbGluZSBudW1iZXIKICAgZmxhZ3MgYXJlIGFzIGZvbGxvd3M6CiAgIGxlYXN0IHNpZ25pZmlj
YW50IDIgYml0cyBhcmUgZGlzcG9zaXRpb24sIHJlc3QgaXMgCiAgIHR5cGUgKG5vcm1hbGx5IDAp
LgoKICAgZW51bSBicHR5cGUgewogICBicF9icmVha3BvaW50LCAgICAgICAgICAgICAgICBOb3Jt
YWwgYnJlYWtwb2ludCAKICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludCwgICAgICBIYXJkd2FyZSBh
c3Npc3RlZCBicmVha3BvaW50CiAgIH0KCiAgIERpc3Bvc2l0aW9uIG9mIGJyZWFrcG9pbnQuICBJ
ZTogd2hhdCB0byBkbyBhZnRlciBoaXR0aW5nIGl0LgogICBlbnVtIGJwZGlzcCB7CiAgIGRlbCwg
ICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlIGl0CiAgIGRlbF9hdF9uZXh0X3N0b3AsICAg
ICAgICAgICAgRGVsZXRlIGF0IG5leHQgc3RvcCwgd2hldGhlciBoaXQgb3Igbm90CiAgIGRpc2Fi
bGUsICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSBpdCAKICAgZG9udHRvdWNoICAgICAgICAg
ICAgICAgICAgICBMZWF2ZSBpdCBhbG9uZSAKICAgfTsKICovCgoKLyogVGhpcyBpbXBsZW1lbnRz
IHRoZSB0Y2wgY29tbWFuZCAiZ2RiX2ZpbmRfYnBfYXRfYWRkciIKCiAqIFRjbCBBcmd1bWVudHM6
CiAqICAgIGFkZHI6ICAgICBhZGRyZXNzCiAqIFRjbCBSZXN1bHQ6CiAqICAgIEl0IHJldHVybnMg
YSBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycwogKi8Kc3RhdGljIGludApnZGJfZmluZF9icF9h
dF9hZGRyIChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCiAgICAgQ2xpZW50RGF0YSBj
bGllbnREYXRhOwogICAgIFRjbF9JbnRlcnAgKmludGVycDsKICAgICBpbnQgb2JqYzsKICAgICBU
Y2xfT2JqICpDT05TVCBvYmp2W107Cgp7CiAgaW50IGk7CiAgbG9uZyBhZGRyOwoKICBpZiAob2Jq
YyAhPSAyKQogICAgewogICAgICBUY2xfV3JvbmdOdW1BcmdzIChpbnRlcnAsIDEsIG9ianYsICJh
ZGRyZXNzIik7CiAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIGlmIChUY2xfR2V0TG9u
Z0Zyb21PYmogKGludGVycCwgb2JqdlsxXSwgJmFkZHIpID09IFRDTF9FUlJPUikKICAgIHsKICAg
ICAgcmVzdWx0X3B0ci0+ZmxhZ3MgPSBHREJUS19JTl9UQ0xfUkVTVUxUOwogICAgICByZXR1cm4g
VENMX0VSUk9SOwogICAgfQoKICBUY2xfU2V0TGlzdE9iaiAocmVzdWx0X3B0ci0+b2JqX3B0ciwg
MCwgTlVMTCk7CiAgZm9yIChpID0gMDsgaSA8IGJyZWFrcG9pbnRfbGlzdF9zaXplOyBpKyspCiAg
ICB7CiAgICAgIGlmIChicmVha3BvaW50X2xpc3RbaV0gIT0gTlVMTAoJICAmJiBicmVha3BvaW50
X2xpc3RbaV0tPmFkZHJlc3MgPT0gKENPUkVfQUREUikgYWRkcikKCVRjbF9MaXN0T2JqQXBwZW5k
RWxlbWVudCAoTlVMTCwgcmVzdWx0X3B0ci0+b2JqX3B0ciwKCQkJCSAgVGNsX05ld0ludE9iaiAo
aSkpOwogICAgfQoKICByZXR1cm4gVENMX09LOwp9CgovKiBUaGlzIGltcGxlbWVudHMgdGhlIHRj
bCBjb21tYW5kICJnZGJfZmluZF9icF9hdF9saW5lIgoKICogVGNsIEFyZ3VtZW50czoKICogICAg
ZmlsZW5hbWU6IHRoZSBmaWxlIGluIHdoaWNoIHRvIGZpbmQgdGhlIGJyZWFrcG9pbnQKICogICAg
bGluZTogICAgIHRoZSBsaW5lIG51bWJlciBmb3IgdGhlIGJyZWFrcG9pbnQKICogVGNsIFJlc3Vs
dDoKICogICAgSXQgcmV0dXJucyBhIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzCiAqLwpzdGF0
aWMgaW50CmdkYl9maW5kX2JwX2F0X2xpbmUgKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2Jq
dikKICAgICBDbGllbnREYXRhIGNsaWVudERhdGE7CiAgICAgVGNsX0ludGVycCAqaW50ZXJwOwog
ICAgIGludCBvYmpjOwogICAgIFRjbF9PYmogKkNPTlNUIG9ianZbXTsKCnsKICBzdHJ1Y3Qgc3lt
dGFiICpzOwogIGludCBsaW5lOwogIGludCBpOwoKICBpZiAob2JqYyAhPSAzKQogICAgewogICAg
ICBUY2xfV3JvbmdOdW1BcmdzIChpbnRlcnAsIDEsIG9ianYsICJmaWxlbmFtZSBsaW5lIik7CiAg
ICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIHMgPSBmdWxsX2xvb2t1cF9zeW10YWIgKFRj
bF9HZXRTdHJpbmdGcm9tT2JqIChvYmp2WzFdLCBOVUxMKSk7CiAgaWYgKHMgPT0gTlVMTCkKICAg
IHJldHVybiBUQ0xfRVJST1I7CgogIGlmIChUY2xfR2V0SW50RnJvbU9iaiAoaW50ZXJwLCBvYmp2
WzJdLCAmbGluZSkgPT0gVENMX0VSUk9SKQogICAgewogICAgICByZXN1bHRfcHRyLT5mbGFncyA9
IEdEQlRLX0lOX1RDTF9SRVNVTFQ7CiAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIFRj
bF9TZXRMaXN0T2JqIChyZXN1bHRfcHRyLT5vYmpfcHRyLCAwLCBOVUxMKTsKICBmb3IgKGkgPSAw
OyBpIDwgYnJlYWtwb2ludF9saXN0X3NpemU7IGkrKykKICAgIGlmIChicmVha3BvaW50X2xpc3Rb
aV0gIT0gTlVMTAoJJiYgYnJlYWtwb2ludF9saXN0W2ldLT5saW5lX251bWJlciA9PSBsaW5lCgkm
JiAhc3RyY21wIChicmVha3BvaW50X2xpc3RbaV0tPnNvdXJjZV9maWxlLCBzLT5maWxlbmFtZSkp
CiAgICAgIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoTlVMTCwgcmVzdWx0X3B0ci0+b2JqX3B0
ciwKCQkJCVRjbF9OZXdJbnRPYmogKGkpKTsKCiAgcmV0dXJuIFRDTF9PSzsKfQoKLyogVGhpcyBp
bXBsZW1lbnRzIHRoZSB0Y2wgY29tbWFuZCBnZGJfZ2V0X2JyZWFrcG9pbnRfaW5mbwogKgogKiBU
Y2wgQXJndW1lbnRzOgogKiAgIGJyZWFrcG9pbnRfbnVtYmVyCiAqIFRjbCBSZXN1bHQ6CiAqICAg
QSBsaXN0IHdpdGgge2ZpbGUsIGZ1bmN0aW9uLCBsaW5lX251bWJlciwgYWRkcmVzcywgdHlwZSwg
ZW5hYmxlZD8sCiAqICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uLCBpZ25vcmVfY291bnQsIHts
aXN0X29mX2NvbW1hbmRzfSwKICogICAgICAgICAgICAgICAgY29uZGl0aW9uLCB0aHJlYWQsIGhp
dF9jb3VudCB1c2VyX3NwZWNpZmljYXRpb259CiAqLwpzdGF0aWMgaW50CmdkYl9nZXRfYnJlYWtw
b2ludF9pbmZvIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50
IG9iamMsCgkJCSBUY2xfT2JqICpDT05TVCBvYmp2W10pCnsKICBzdHJ1Y3Qgc3ltdGFiX2FuZF9s
aW5lIHNhbDsKICBzdHJ1Y3QgY29tbWFuZF9saW5lICpjbWQ7CiAgaW50IGJwbnVtOwogIHN0cnVj
dCBicmVha3BvaW50ICpiOwogIGNoYXIgKmZ1bmNuYW1lLCAqZmlsZW5hbWU7CgogIFRjbF9PYmog
Km5ld19vYmo7CgogIGlmIChvYmpjICE9IDIpCiAgICB7CiAgICAgIFRjbF9Xcm9uZ051bUFyZ3Mg
KGludGVycCwgMSwgb2JqdiwgImJyZWFrcG9pbnQiKTsKICAgICAgcmV0dXJuIFRDTF9FUlJPUjsK
ICAgIH0KCiAgaWYgKFRjbF9HZXRJbnRGcm9tT2JqIChOVUxMLCBvYmp2WzFdLCAmYnBudW0pICE9
IFRDTF9PSykKICAgIHsKICAgICAgcmVzdWx0X3B0ci0+ZmxhZ3MgPSBHREJUS19JTl9UQ0xfUkVT
VUxUOwogICAgICByZXR1cm4gVENMX0VSUk9SOwogICAgfQoKICBiID0gKGJwbnVtIDw9IGJyZWFr
cG9pbnRfbGlzdF9zaXplID8gYnJlYWtwb2ludF9saXN0W2JwbnVtXSA6IE5VTEwpOwogIGlmICgh
YiB8fCBiLT50eXBlICE9IGJwX2JyZWFrcG9pbnQpCiAgICB7CiAgICAgIGNoYXIgKmVycl9idWY7
CiAgICAgIHhhc3ByaW50ZiAoJmVycl9idWYsICJCcmVha3BvaW50ICMlZCBkb2VzIG5vdCBleGlz
dC4iLCBicG51bSk7CiAgICAgIFRjbF9TZXRTdHJpbmdPYmogKHJlc3VsdF9wdHItPm9ial9wdHIs
IGVycl9idWYsIC0xKTsKICAgICAgZnJlZShlcnJfYnVmKTsKICAgICAgcmV0dXJuIFRDTF9FUlJP
UjsKICAgIH0KCiAgc2FsID0gZmluZF9wY19saW5lIChiLT5hZGRyZXNzLCAwKTsKCiAgZmlsZW5h
bWUgPSBzeW10YWJfdG9fZmlsZW5hbWUgKHNhbC5zeW10YWIpOwogIGlmIChmaWxlbmFtZSA9PSBO
VUxMKQogICAgZmlsZW5hbWUgPSAiIjsKCiAgVGNsX1NldExpc3RPYmogKHJlc3VsdF9wdHItPm9i
al9wdHIsIDAsIE5VTEwpOwogIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoTlVMTCwgcmVzdWx0
X3B0ci0+b2JqX3B0ciwKCQkJICAgIFRjbF9OZXdTdHJpbmdPYmogKGZpbGVuYW1lLCAtMSkpOwoK
ICBmdW5jbmFtZSA9IHBjX2Z1bmN0aW9uX25hbWUgKGItPmFkZHJlc3MpOwogIG5ld19vYmogPSBU
Y2xfTmV3U3RyaW5nT2JqIChmdW5jbmFtZSwgLTEpOwogIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVu
dCAoTlVMTCwgcmVzdWx0X3B0ci0+b2JqX3B0ciwgbmV3X29iaik7CgogIFRjbF9MaXN0T2JqQXBw
ZW5kRWxlbWVudCAoTlVMTCwgcmVzdWx0X3B0ci0+b2JqX3B0ciwKCQkJICAgIFRjbF9OZXdJbnRP
YmogKGItPmxpbmVfbnVtYmVyKSk7CiAgc3ByaW50Zl9hcHBlbmRfZWxlbWVudF90b19vYmogKHJl
c3VsdF9wdHItPm9ial9wdHIsICIweCVzIiwKCQkJCSBwYWRkcl9ueiAoYi0+YWRkcmVzcykpOwog
IFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoTlVMTCwgcmVzdWx0X3B0ci0+b2JqX3B0ciwKCQkJ
ICAgIFRjbF9OZXdTdHJpbmdPYmogKGJwdHlwZXNbYi0+dHlwZV0sIC0xKSk7CiAgVGNsX0xpc3RP
YmpBcHBlbmRFbGVtZW50IChOVUxMLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkgICAgVGNsX05l
d0Jvb2xlYW5PYmogKGItPmVuYWJsZSA9PSBlbmFibGVkKSk7CiAgVGNsX0xpc3RPYmpBcHBlbmRF
bGVtZW50IChOVUxMLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkgICAgVGNsX05ld1N0cmluZ09i
aiAoYnBkaXNwW2ItPmRpc3Bvc2l0aW9uXSwgLTEpKTsKICBUY2xfTGlzdE9iakFwcGVuZEVsZW1l
bnQgKE5VTEwsIHJlc3VsdF9wdHItPm9ial9wdHIsCgkJCSAgICBUY2xfTmV3SW50T2JqIChiLT5p
Z25vcmVfY291bnQpKTsKCiAgbmV3X29iaiA9IFRjbF9OZXdPYmogKCk7CiAgZm9yIChjbWQgPSBi
LT5jb21tYW5kczsgY21kOyBjbWQgPSBjbWQtPm5leHQpCiAgICBUY2xfTGlzdE9iakFwcGVuZEVs
ZW1lbnQgKE5VTEwsIG5ld19vYmosCgkJCSAgICAgIFRjbF9OZXdTdHJpbmdPYmogKGNtZC0+bGlu
ZSwgLTEpKTsKICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKE5VTEwsIHJlc3VsdF9wdHItPm9i
al9wdHIsIG5ld19vYmopOwoKICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKE5VTEwsIHJlc3Vs
dF9wdHItPm9ial9wdHIsCgkJCSAgICBUY2xfTmV3U3RyaW5nT2JqIChiLT5jb25kX3N0cmluZywg
LTEpKTsKCiAgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50IChOVUxMLCByZXN1bHRfcHRyLT5vYmpf
cHRyLAoJCQkgICAgVGNsX05ld0ludE9iaiAoYi0+dGhyZWFkKSk7CiAgVGNsX0xpc3RPYmpBcHBl
bmRFbGVtZW50IChOVUxMLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkgICAgVGNsX05ld0ludE9i
aiAoYi0+aGl0X2NvdW50KSk7CgogIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoTlVMTCwgcmVz
dWx0X3B0ci0+b2JqX3B0ciwKCQkJICAgIFRjbF9OZXdTdHJpbmdPYmogKEJSRUFLUE9JTlRfSVNf
V0FUQ0hQT0lOVCAoYikKCQkJCQkgICAgICA/IGItPmV4cF9zdHJpbmcKCQkJCQkgICAgICA6IGIt
PmFkZHJfc3RyaW5nLCAtMSkpOwoKICByZXR1cm4gVENMX09LOwp9CgoKLyogVGhpcyBpbXBsZW1l
bnRzIHRoZSB0Y2wgY29tbWFuZCBnZGJfZ2V0X2JyZWFrcG9pbnRfbGlzdAogKiBJdCBidWlsZHMg
dXAgYSBsaXN0IG9mIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRzLgogKgogKiBUY2wgQXJndW1lbnRz
OgogKiAgICBOb25lLgogKiBUY2wgUmVzdWx0OgogKiAgICBBIGxpc3Qgb2YgYnJlYWtwb2ludCBu
dW1iZXJzLgogKi8Kc3RhdGljIGludApnZGJfZ2V0X2JyZWFrcG9pbnRfbGlzdCAoY2xpZW50RGF0
YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQogICAgIENsaWVudERhdGEgY2xpZW50RGF0YTsKICAgICBU
Y2xfSW50ZXJwICppbnRlcnA7CiAgICAgaW50IG9iamM7CiAgICAgVGNsX09iaiAqQ09OU1Qgb2Jq
dltdOwp7CiAgaW50IGk7CiAgVGNsX09iaiAqbmV3X29iajsKCiAgaWYgKG9iamMgIT0gMSkKICAg
IHsKICAgICAgVGNsX1dyb25nTnVtQXJncyAoaW50ZXJwLCAxLCBvYmp2LCBOVUxMKTsKICAgICAg
cmV0dXJuIFRDTF9FUlJPUjsKICAgIH0KCiAgZm9yIChpID0gMDsgaSA8IGJyZWFrcG9pbnRfbGlz
dF9zaXplOyBpKyspCiAgICB7CiAgICAgIGlmIChicmVha3BvaW50X2xpc3RbaV0gIT0gTlVMTAoJ
ICAmJiBicmVha3BvaW50X2xpc3RbaV0tPnR5cGUgPT0gYnBfYnJlYWtwb2ludCkKCXsKCSAgbmV3
X29iaiA9IFRjbF9OZXdJbnRPYmogKGkpOwoJICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKE5V
TEwsIHJlc3VsdF9wdHItPm9ial9wdHIsIG5ld19vYmopOwoJfQogICAgfQoKICByZXR1cm4gVENM
X09LOwp9CgovKiBUaGlzIGltcGxlbWVudHMgdGhlIHRjbCBjb21tYW5kICJnZGJfc2V0X2JwIgog
KiBJdCBzZXRzIGJyZWFrcG9pbnRzLCBhbmQgbm90aWZpZXMgdGhlIEdVSS4KICoKICogVGNsIEFy
Z3VtZW50czoKICogICAgZmlsZW5hbWU6IHRoZSBmaWxlIGluIHdoaWNoIHRvIHNldCB0aGUgYnJl
YWtwb2ludAogKiAgICBsaW5lOiAgICAgdGhlIGxpbmUgbnVtYmVyIGZvciB0aGUgYnJlYWtwb2lu
dAogKiAgICB0eXBlOiAgICAgdGhlIHR5cGUgb2YgdGhlIGJyZWFrcG9pbnQKICogICAgdGhyZWFk
OiAgIG9wdGlvbmFsIHRocmVhZCBudW1iZXIKICogVGNsIFJlc3VsdDoKICogICAgVGhlIHJldHVy
biB2YWx1ZSBvZiB0aGUgY2FsbCB0byBnZGJ0a190Y2xfYnJlYWtwb2ludC4KICovCnN0YXRpYyBp
bnQKZ2RiX3NldF9icCAoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQogICAgIENsaWVu
dERhdGEgY2xpZW50RGF0YTsKICAgICBUY2xfSW50ZXJwICppbnRlcnA7CiAgICAgaW50IG9iamM7
CiAgICAgVGNsX09iaiAqQ09OU1Qgb2JqdltdOwp7CiAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBz
YWw7CiAgaW50IGxpbmUsIHRocmVhZCA9IC0xOwogIHN0cnVjdCBicmVha3BvaW50ICpiOwogIGNo
YXIgKmJ1ZiwgKnR5cGVzdHI7CiAgZW51bSBicGRpc3AgZGlzcDsKCiAgaWYgKG9iamMgIT0gNCAm
JiBvYmpjICE9IDUpCiAgICB7CiAgICAgIFRjbF9Xcm9uZ051bUFyZ3MgKGludGVycCwgMSwgb2Jq
diwgImZpbGVuYW1lIGxpbmUgdHlwZSA/dGhyZWFkPyIpOwogICAgICByZXR1cm4gVENMX0VSUk9S
OwogICAgfQoKICBzYWwuc3ltdGFiID0gZnVsbF9sb29rdXBfc3ltdGFiIChUY2xfR2V0U3RyaW5n
RnJvbU9iaiAob2JqdlsxXSwgTlVMTCkpOwogIGlmIChzYWwuc3ltdGFiID09IE5VTEwpCiAgICBy
ZXR1cm4gVENMX0VSUk9SOwoKICBpZiAoVGNsX0dldEludEZyb21PYmogKGludGVycCwgb2Jqdlsy
XSwgJmxpbmUpID09IFRDTF9FUlJPUikKICAgIHsKICAgICAgcmVzdWx0X3B0ci0+ZmxhZ3MgPSBH
REJUS19JTl9UQ0xfUkVTVUxUOwogICAgICByZXR1cm4gVENMX0VSUk9SOwogICAgfQoKICB0eXBl
c3RyID0gVGNsX0dldFN0cmluZ0Zyb21PYmogKG9ianZbM10sIE5VTEwpOwogIGlmICh0eXBlc3Ry
ID09IE5VTEwpCiAgICB7CiAgICAgIHJlc3VsdF9wdHItPmZsYWdzID0gR0RCVEtfSU5fVENMX1JF
U1VMVDsKICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgIH0KICBpZiAoc3RybmNtcCAodHlwZXN0
ciwgInRlbXAiLCA0KSA9PSAwKQogICAgZGlzcCA9IGRlbDsKICBlbHNlIGlmIChzdHJuY21wICh0
eXBlc3RyLCAibm9ybWFsIiwgNikgPT0gMCkKICAgIGRpc3AgPSBkb250dG91Y2g7CiAgZWxzZQog
ICAgewogICAgICBUY2xfU2V0U3RyaW5nT2JqIChyZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkidHlw
ZSBtdXN0IGJlIFwidGVtcFwiIG9yIFwibm9ybWFsXCIiLCAtMSk7CiAgICAgIHJldHVybiBUQ0xf
RVJST1I7CiAgICB9CgogIGlmIChvYmpjID09IDUpCiAgICB7CiAgICAgIGlmIChUY2xfR2V0SW50
RnJvbU9iaiAoaW50ZXJwLCBvYmp2WzRdLCAmdGhyZWFkKSA9PSBUQ0xfRVJST1IpCgl7CgkgIHJl
c3VsdF9wdHItPmZsYWdzID0gR0RCVEtfSU5fVENMX1JFU1VMVDsKCSAgcmV0dXJuIFRDTF9FUlJP
UjsKCX0KICAgIH0KCiAgc2FsLmxpbmUgPSBsaW5lOwogIGlmICghZmluZF9saW5lX3BjIChzYWwu
c3ltdGFiLCBzYWwubGluZSwgJnNhbC5wYykpCiAgICByZXR1cm4gVENMX0VSUk9SOwoKICBzYWwu
c2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsKICBiID0gc2V0X3Jhd19icmVha3Bv
aW50IChzYWwsIGJwX2JyZWFrcG9pbnQpOwogIHNldF9icmVha3BvaW50X2NvdW50IChicmVha3Bv
aW50X2NvdW50ICsgMSk7CiAgYi0+bnVtYmVyID0gYnJlYWtwb2ludF9jb3VudDsKICBiLT5kaXNw
b3NpdGlvbiA9IGRpc3A7CiAgYi0+dGhyZWFkID0gdGhyZWFkOwoKICAvKiBGSVhNRTogdGhpcyB3
b24ndCB3b3JrIGZvciBkdXBsaWNhdGUgYmFzZW5hbWVzISAqLwogIHhhc3ByaW50ZiAoJmJ1Ziwg
IiVzOiVkIiwgYmFzZW5hbWUgKFRjbF9HZXRTdHJpbmdGcm9tT2JqIChvYmp2WzFdLCBOVUxMKSks
CgkgICBsaW5lKTsKICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKGJ1Zik7CiAgZnJlZShidWYp
OwoKICAvKiBub3cgc2VuZCBub3RpZmljYXRpb24gY29tbWFuZCBiYWNrIHRvIEdVSSAqLwogIGJy
ZWFrcG9pbnRfY3JlYXRlX2V2ZW50IChiLT5udW1iZXIpOwogIHJldHVybiBUQ0xfT0s7Cn0KCi8q
IFRoaXMgaW1wbGVtZW50cyB0aGUgdGNsIGNvbW1hbmQgImdkYl9zZXRfYnBfYWRkciIKICogSXQg
c2V0cyBicmVha3BvaW50cywgYW5kIG5vdGlmaWVzIHRoZSBHVUkuCiAqCiAqIFRjbCBBcmd1bWVu
dHM6CiAqICAgIGFkZHI6IHRoZSBhZGRyZXNzIGF0IHdoaWNoIHRvIHNldCB0aGUgYnJlYWtwb2lu
dAogKiAgICB0eXBlOiAgICAgdGhlIHR5cGUgb2YgdGhlIGJyZWFrcG9pbnQKICogICAgdGhyZWFk
OiAgIG9wdGlvbmFsIHRocmVhZCBudW1iZXIKICogVGNsIFJlc3VsdDoKICogICAgVGhlIHJldHVy
biB2YWx1ZSBvZiB0aGUgY2FsbCB0byBnZGJ0a190Y2xfYnJlYWtwb2ludC4KICovCnN0YXRpYyBp
bnQKZ2RiX3NldF9icF9hZGRyIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmlu
dGVycCwgaW50IG9iamMsCgkJIFRjbF9PYmogKkNPTlNUIG9ianZbXSkKICAgICAKewogIHN0cnVj
dCBzeW10YWJfYW5kX2xpbmUgc2FsOwogIGludCB0aHJlYWQgPSAtMTsKICBsb25nIGFkZHI7CiAg
c3RydWN0IGJyZWFrcG9pbnQgKmI7CiAgY2hhciAqdHlwZXN0ciwgKmJ1ZjsKICBlbnVtIGJwZGlz
cCBkaXNwOwoKICBpZiAob2JqYyAhPSAzICYmIG9iamMgIT0gNCkKICAgIHsKICAgICAgVGNsX1dy
b25nTnVtQXJncyAoaW50ZXJwLCAxLCBvYmp2LCAiYWRkcmVzcyB0eXBlID90aHJlYWQ/Iik7CiAg
ICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIGlmIChUY2xfR2V0TG9uZ0Zyb21PYmogKGlu
dGVycCwgb2JqdlsxXSwgJmFkZHIpID09IFRDTF9FUlJPUikKICAgIHsKICAgICAgcmVzdWx0X3B0
ci0+ZmxhZ3MgPSBHREJUS19JTl9UQ0xfUkVTVUxUOwogICAgICByZXR1cm4gVENMX0VSUk9SOwog
ICAgfQoKICB0eXBlc3RyID0gVGNsX0dldFN0cmluZ0Zyb21PYmogKG9ianZbMl0sIE5VTEwpOwog
IGlmICh0eXBlc3RyID09IE5VTEwpCiAgICB7CiAgICAgIHJlc3VsdF9wdHItPmZsYWdzID0gR0RC
VEtfSU5fVENMX1JFU1VMVDsKICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgIH0KICBpZiAoc3Ry
bmNtcCAodHlwZXN0ciwgInRlbXAiLCA0KSA9PSAwKQogICAgZGlzcCA9IGRlbDsKICBlbHNlIGlm
IChzdHJuY21wICh0eXBlc3RyLCAibm9ybWFsIiwgNikgPT0gMCkKICAgIGRpc3AgPSBkb250dG91
Y2g7CiAgZWxzZQogICAgewogICAgICBUY2xfU2V0U3RyaW5nT2JqIChyZXN1bHRfcHRyLT5vYmpf
cHRyLAoJCQkidHlwZSBtdXN0IGJlIFwidGVtcFwiIG9yIFwibm9ybWFsXCIiLCAtMSk7CiAgICAg
IHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIGlmIChvYmpjID09IDQpCiAgICB7CiAgICAgIGlm
IChUY2xfR2V0SW50RnJvbU9iaiAoaW50ZXJwLCBvYmp2WzNdLCAmdGhyZWFkKSA9PSBUQ0xfRVJS
T1IpCgl7CgkgIHJlc3VsdF9wdHItPmZsYWdzID0gR0RCVEtfSU5fVENMX1JFU1VMVDsKCSAgcmV0
dXJuIFRDTF9FUlJPUjsKCX0KICAgIH0KCiAgc2FsID0gZmluZF9wY19saW5lIChhZGRyLCAwKTsK
ICBzYWwucGMgPSBhZGRyOwogIGIgPSBzZXRfcmF3X2JyZWFrcG9pbnQgKHNhbCwgYnBfYnJlYWtw
b2ludCk7CiAgc2V0X2JyZWFrcG9pbnRfY291bnQgKGJyZWFrcG9pbnRfY291bnQgKyAxKTsKICBi
LT5udW1iZXIgPSBicmVha3BvaW50X2NvdW50OwogIGItPmRpc3Bvc2l0aW9uID0gZGlzcDsKICBi
LT50aHJlYWQgPSB0aHJlYWQ7CgogIHhhc3ByaW50ZiAoJmJ1ZiwgIiooMHglbHgpIiwgYWRkcik7
CiAgYi0+YWRkcl9zdHJpbmcgPSB4c3RyZHVwIChidWYpOwoKICAvKiBub3cgc2VuZCBub3RpZmlj
YXRpb24gY29tbWFuZCBiYWNrIHRvIEdVSSAqLwogIGJyZWFrcG9pbnRfY3JlYXRlX2V2ZW50IChi
LT5udW1iZXIpOwogIHJldHVybiBUQ0xfT0s7Cn0KDAovKgogKiBUaGlzIHNlY3Rpb24gY29udGFp
bnMgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGJyZWFrcG9pbnQKICogZXZlbnRzIGZyb20gZ2Ri
LgogKi8KCi8qIFRoZSBuZXh0IHRocmVlIGZ1bmN0aW9ucyB1c2UgYnJlYWtwb2ludF9ub3RpZnkg
dG8gYWxsb3cgdGhlIEdVSSAKICogdG8gaGFuZGxlIGNyZWF0aW5nLCBkZWxldGluZyBhbmQgbW9k
aWZ5aW5nIGJyZWFrcG9pbnRzLiAgVGhlc2UgdGhyZWUKICogZnVuY3Rpb25zIGFyZSBwdXQgaW50
byB0aGUgYXBwcm9wcmlhdGUgZ2RiIGhvb2tzIGluIGdkYnRrX2luaXQuCiAqLwoKdm9pZApnZGJ0
a19jcmVhdGVfYnJlYWtwb2ludCAoaW50IG51bSkKewogIHN0cnVjdCBicmVha3BvaW50ICpiOwog
IGZvciAoYiA9IGJyZWFrcG9pbnRfY2hhaW47IGIgIT0gTlVMTDsgYiA9IGItPm5leHQpCiAgICB7
CiAgICAgIGlmIChiLT5udW1iZXIgPT0gbnVtKQoJYnJlYWs7CiAgICB9CgogIGlmIChiID09IE5V
TEwgfHwgIUJSRUFLUE9JTlRfSVNfSU5URVJFU1RJTkcgKGIpKQogICAgcmV0dXJuOwoKICAvKiBD
aGVjayBpZiB0aGVyZSBpcyByb29tIHRvIHN0b3JlIGl0ICovCiAgaWYgKG51bSA+PSBicmVha3Bv
aW50X2xpc3Rfc2l6ZSkKICAgIHsKICAgICAgaW50IG9sZHNpemUgPSBicmVha3BvaW50X2xpc3Rf
c2l6ZTsKICAgICAgd2hpbGUgKG51bSA+PSBicmVha3BvaW50X2xpc3Rfc2l6ZSkKCWJyZWFrcG9p
bnRfbGlzdF9zaXplICs9IERFRkFVTFRfTElTVF9TSVpFOwogICAgICBicmVha3BvaW50X2xpc3Qg
PSAoc3RydWN0IGJyZWFrcG9pbnQgKiopIHhyZWFsbG9jIChicmVha3BvaW50X2xpc3QsIGJyZWFr
cG9pbnRfbGlzdF9zaXplICogc2l6ZW9mIChzdHJ1Y3QgYnJlYWtwb2ludCAqKSk7CiAgICAgIG1l
bXNldCAoJihicmVha3BvaW50X2xpc3Rbb2xkc2l6ZV0pLCAwLCAoYnJlYWtwb2ludF9saXN0X3Np
emUgLSBvbGRzaXplKSAqIHNpemVvZiAoc3RydWN0IGJyZWFrcG9pbnQgKikpOwogICAgfQoKICBi
cmVha3BvaW50X2xpc3RbbnVtXSA9IGI7CiAgYnJlYWtwb2ludF9ub3RpZnkgKG51bSwgImNyZWF0
ZSIpOwp9Cgp2b2lkCmdkYnRrX2RlbGV0ZV9icmVha3BvaW50IChpbnQgbnVtKQp7CiAgaWYgKG51
bSA+PSAwCiAgICAgICYmIG51bSA8PSBicmVha3BvaW50X2xpc3Rfc2l6ZQogICAgICAmJiBicmVh
a3BvaW50X2xpc3RbbnVtXSAhPSBOVUxMKQogICAgewogICAgICBicmVha3BvaW50X25vdGlmeSAo
bnVtLCAiZGVsZXRlIik7CiAgICAgIGJyZWFrcG9pbnRfbGlzdFtudW1dID0gTlVMTDsKICAgIH0K
fQoKdm9pZApnZGJ0a19tb2RpZnlfYnJlYWtwb2ludCAoaW50IG51bSkKewogIGlmIChudW0gPj0g
MCkKICAgIGJyZWFrcG9pbnRfbm90aWZ5IChudW0sICJtb2RpZnkiKTsKfQoKLyogVGhpcyBpcyB0
aGUgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgY2hhbmdlcyBpbgogKiBhIGJyZWFrcG9p
bnQuICBJdCByb3V0ZXMgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBUY2wKICogY29tbWFuZCAiZ2Ri
dGtfdGNsX2JyZWFrcG9pbnQiIGluIHRoZSBmb3JtOgogKiAgIGdkYnRrX3RjbF9icmVha3BvaW50
IGFjdGlvbiBiX251bWJlciBiX2FkZHJlc3MgYl9saW5lIGJfZmlsZQogKiBPbiBlcnJvciwgdGhl
IGVycm9yIHN0cmluZyBpcyB3cml0dGVuIHRvIGdkYl9zdGRvdXQuCiAqLwpzdGF0aWMgdm9pZApi
cmVha3BvaW50X25vdGlmeSAobnVtLCBhY3Rpb24pCiAgICAgaW50IG51bTsKICAgICBjb25zdCBj
aGFyICphY3Rpb247CnsKICBjaGFyICpidWY7CgogIGlmIChudW0gPiBicmVha3BvaW50X2xpc3Rf
c2l6ZQogICAgICB8fCBudW0gPCAwCiAgICAgIHx8IGJyZWFrcG9pbnRfbGlzdFtudW1dID09IE5V
TEwKICAgICAgLyogRklYTUU6IHNob3VsZCBub3QgYmUgc28gcmVzdHJpY3RpdmUuLi4gKi8KICAg
ICAgfHwgYnJlYWtwb2ludF9saXN0W251bV0tPnR5cGUgIT0gYnBfYnJlYWtwb2ludCkKICAgIHJl
dHVybjsKCiAgLyogV2UgZW5zdXJlIHRoYXQgQUNUSU9OIGNvbnRhaW5zIG5vIHNwZWNpYWwgVGNs
IGNoYXJhY3RlcnMsIHNvIHdlCiAgICAgY2FuIGRvIHRoaXMuICAqLwogIHhhc3ByaW50ZiAoJmJ1
ZiwgImdkYnRrX3RjbF9icmVha3BvaW50ICVzICVkIiwgYWN0aW9uLCBudW0pOwoKICBpZiAoVGNs
X0V2YWwgKGdkYnRrX2ludGVycCwgYnVmKSAhPSBUQ0xfT0spCiAgICByZXBvcnRfZXJyb3IgKCk7
CiAgZnJlZShidWYpOyAKfQoMCi8qCiAqIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgY29tbWFu
ZHMgdGhhdCBkZWFsIHdpdGggdHJhY2Vwb2ludHM6CiAqLwoKLyogVGhpcyBpbXBsZW1lbnRzIHRo
ZSB0Y2wgY29tbWFuZCBnZGJfYWN0aW9ucwogKiBJdCBzZXRzIGFjdGlvbnMgZm9yIGEgZ2l2ZW4g
dHJhY2Vwb2ludC4KICoKICogVGNsIEFyZ3VtZW50czoKICogICAgbnVtYmVyOiB0aGUgdHJhY2Vw
b2ludCBpbiBxdWVzdGlvbgogKiAgICBhY3Rpb25zOiB0aGUgYWN0aW9ucyB0byBhZGQgdG8gdGhp
cyB0cmFjZXBvaW50CiAqIFRjbCBSZXN1bHQ6CiAqICAgIE5vbmUuCiAqLwoKc3RhdGljIGludApn
ZGJfYWN0aW9uc19jb21tYW5kIChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCiAgICAg
Q2xpZW50RGF0YSBjbGllbnREYXRhOwogICAgIFRjbF9JbnRlcnAgKmludGVycDsKICAgICBpbnQg
b2JqYzsKICAgICBUY2xfT2JqICpDT05TVCBvYmp2W107CnsKICBzdHJ1Y3QgdHJhY2Vwb2ludCAq
dHA7CiAgVGNsX09iaiAqKmFjdGlvbnM7CiAgaW50IG5hY3Rpb25zLCBpLCBsZW47CiAgY2hhciAq
bnVtYmVyLCAqYXJncywgKmFjdGlvbjsKICBsb25nIHN0ZXBfY291bnQ7CiAgc3RydWN0IGFjdGlv
bl9saW5lICpuZXh0ID0gTlVMTCwgKnRlbXA7CiAgZW51bSBhY3Rpb25saW5lX3R5cGUgbGluZXR5
cGU7CgogIGlmIChvYmpjICE9IDMpCiAgICB7CiAgICAgIFRjbF9Xcm9uZ051bUFyZ3MgKGludGVy
cCwgMSwgb2JqdiwgIm51bWJlciBhY3Rpb25zIik7CiAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAg
ICB9CgogIGFyZ3MgPSBudW1iZXIgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2JqdlsxXSwgTlVM
TCk7CiAgdHAgPSBnZXRfdHJhY2Vwb2ludF9ieV9udW1iZXIgKCZhcmdzLCAwLCAwKTsKICBpZiAo
dHAgPT0gTlVMTCkKICAgIHsKICAgICAgVGNsX0FwcGVuZFN0cmluZ3NUb09iaiAocmVzdWx0X3B0
ci0+b2JqX3B0ciwgIlRyYWNlcG9pbnQgXCIiLAoJCQkgICAgICBudW1iZXIsICJcIiBkb2VzIG5v
dCBleGlzdCIsIE5VTEwpOwogICAgICByZXR1cm4gVENMX0VSUk9SOwogICAgfQoKICAvKiBGcmVl
IGFueSBleGlzdGluZyBhY3Rpb25zICovCiAgaWYgKHRwLT5hY3Rpb25zICE9IE5VTEwpCiAgICBm
cmVlX2FjdGlvbnMgKHRwKTsKCiAgc3RlcF9jb3VudCA9IDA7CgogIFRjbF9MaXN0T2JqR2V0RWxl
bWVudHMgKGludGVycCwgb2JqdlsyXSwgJm5hY3Rpb25zLCAmYWN0aW9ucyk7CgogIC8qIEFkZCB0
aGUgYWN0aW9ucyB0byB0aGUgdHJhY2Vwb2ludCAqLwogIGZvciAoaSA9IDA7IGkgPCBuYWN0aW9u
czsgaSsrKQogICAgewogICAgICB0ZW1wID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgYWN0aW9u
X2xpbmUpKTsKICAgICAgdGVtcC0+bmV4dCA9IE5VTEw7CiAgICAgIGFjdGlvbiA9IFRjbF9HZXRT
dHJpbmdGcm9tT2JqIChhY3Rpb25zW2ldLCAmbGVuKTsKICAgICAgdGVtcC0+YWN0aW9uID0gc2F2
ZXN0cmluZyAoYWN0aW9uLCBsZW4pOwoKICAgICAgbGluZXR5cGUgPSB2YWxpZGF0ZV9hY3Rpb25s
aW5lICgmKHRlbXAtPmFjdGlvbiksIHRwKTsKCiAgICAgIGlmIChsaW5ldHlwZSA9PSBCQURMSU5F
KQoJewoJICBmcmVlICh0ZW1wKTsKCSAgY29udGludWU7Cgl9CgogICAgICBpZiAobmV4dCA9PSBO
VUxMKQoJewoJICB0cC0+YWN0aW9ucyA9IHRlbXA7CgkgIG5leHQgPSB0ZW1wOwoJfQogICAgICBl
bHNlCgl7CgkgIG5leHQtPm5leHQgPSB0ZW1wOwoJICBuZXh0ID0gdGVtcDsKCX0KICAgIH0KCiAg
cmV0dXJuIFRDTF9PSzsKfQoKc3RhdGljIGludApnZGJfZ2V0X3RyYWNlX2ZyYW1lX251bSAoY2xp
ZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQogICAgIENsaWVudERhdGEgY2xpZW50RGF0YTsK
ICAgICBUY2xfSW50ZXJwICppbnRlcnA7CiAgICAgaW50IG9iamM7CiAgICAgVGNsX09iaiAqQ09O
U1Qgb2JqdltdOwp7CiAgaWYgKG9iamMgIT0gMSkKICAgIHsKICAgICAgVGNsX1dyb25nTnVtQXJn
cyAoaW50ZXJwLCAxLCBvYmp2LCAibGluZXNwZWMiKTsKICAgICAgcmV0dXJuIFRDTF9FUlJPUjsK
ICAgIH0KCiAgVGNsX1NldEludE9iaiAocmVzdWx0X3B0ci0+b2JqX3B0ciwgZ2V0X3RyYWNlZnJh
bWVfbnVtYmVyICgpKTsKICByZXR1cm4gVENMX09LOwoKfQoKc3RhdGljIGludApnZGJfZ2V0X3Ry
YWNlcG9pbnRfaW5mbyAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAs
CgkJCSBpbnQgb2JqYywgVGNsX09iaiAqQ09OU1Qgb2JqdltdKQp7CiAgc3RydWN0IHN5bXRhYl9h
bmRfbGluZSBzYWw7CiAgaW50IHRwbnVtOwogIHN0cnVjdCB0cmFjZXBvaW50ICp0cDsKICBzdHJ1
Y3QgYWN0aW9uX2xpbmUgKmFsOwogIFRjbF9PYmogKmFjdGlvbl9saXN0OwogIGNoYXIgKmZpbGVu
YW1lLCAqZnVuY25hbWU7CgogIGlmIChvYmpjICE9IDIpCiAgICB7CiAgICAgIFRjbF9Xcm9uZ051
bUFyZ3MgKGludGVycCwgMSwgb2JqdiwgInRwbnVtIik7CiAgICAgIHJldHVybiBUQ0xfRVJST1I7
CiAgICB9CgogIGlmIChUY2xfR2V0SW50RnJvbU9iaiAoTlVMTCwgb2JqdlsxXSwgJnRwbnVtKSAh
PSBUQ0xfT0spCiAgICB7CiAgICAgIHJlc3VsdF9wdHItPmZsYWdzIHw9IEdEQlRLX0lOX1RDTF9S
RVNVTFQ7CiAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIEFMTF9UUkFDRVBPSU5UUyAo
dHApCiAgICBpZiAodHAtPm51bWJlciA9PSB0cG51bSkKICAgIGJyZWFrOwoKICBpZiAodHAgPT0g
TlVMTCkKICAgIHsKICAgICAgY2hhciAqYnVmZjsKICAgICAgeGFzcHJpbnRmICgmYnVmZiwgIlRy
YWNlcG9pbnQgIyVkIGRvZXMgbm90IGV4aXN0IiwgdHBudW0pOwogICAgICBUY2xfU2V0U3RyaW5n
T2JqIChyZXN1bHRfcHRyLT5vYmpfcHRyLCBidWZmLCAtMSk7CiAgICAgIGZyZWUoYnVmZik7CiAg
ICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICB9CgogIFRjbF9TZXRMaXN0T2JqIChyZXN1bHRfcHRy
LT5vYmpfcHRyLCAwLCBOVUxMKTsKICBzYWwgPSBmaW5kX3BjX2xpbmUgKHRwLT5hZGRyZXNzLCAw
KTsKICBmaWxlbmFtZSA9IHN5bXRhYl90b19maWxlbmFtZSAoc2FsLnN5bXRhYik7CiAgaWYgKGZp
bGVuYW1lID09IE5VTEwpCiAgICBmaWxlbmFtZSA9ICJOL0EiOwogIFRjbF9MaXN0T2JqQXBwZW5k
RWxlbWVudCAoaW50ZXJwLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkgICAgVGNsX05ld1N0cmlu
Z09iaiAoZmlsZW5hbWUsIC0xKSk7CgogIGZ1bmNuYW1lID0gcGNfZnVuY3Rpb25fbmFtZSAodHAt
PmFkZHJlc3MpOwogIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoaW50ZXJwLCByZXN1bHRfcHRy
LT5vYmpfcHRyLCBUY2xfTmV3U3RyaW5nT2JqCgkJCSAgICAoZnVuY25hbWUsIC0xKSk7CgogIFRj
bF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoaW50ZXJwLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkg
ICAgVGNsX05ld0ludE9iaiAoc2FsLmxpbmUpKTsKICB7CiAgICBjaGFyICp0bXA7CiAgICB4YXNw
cmludGYgKCZ0bXAsICIweCVzIiwgcGFkZHJfbnogKHRwLT5hZGRyZXNzKSk7CiAgICBUY2xfTGlz
dE9iakFwcGVuZEVsZW1lbnQgKGludGVycCwgcmVzdWx0X3B0ci0+b2JqX3B0ciwKCQkJICAgICAg
VGNsX05ld1N0cmluZ09iaiAodG1wLCAtMSkpOwogICAgZnJlZSAodG1wKTsKICB9CiAgVGNsX0xp
c3RPYmpBcHBlbmRFbGVtZW50IChpbnRlcnAsIHJlc3VsdF9wdHItPm9ial9wdHIsCgkJCSAgICBU
Y2xfTmV3SW50T2JqICh0cC0+ZW5hYmxlZCkpOwogIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAo
aW50ZXJwLCByZXN1bHRfcHRyLT5vYmpfcHRyLAoJCQkgICAgVGNsX05ld0ludE9iaiAodHAtPnBh
c3NfY291bnQpKTsKICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKGludGVycCwgcmVzdWx0X3B0
ci0+b2JqX3B0ciwKCQkJICAgIFRjbF9OZXdJbnRPYmogKHRwLT5zdGVwX2NvdW50KSk7CiAgVGNs
X0xpc3RPYmpBcHBlbmRFbGVtZW50IChpbnRlcnAsIHJlc3VsdF9wdHItPm9ial9wdHIsCgkJCSAg
ICBUY2xfTmV3SW50T2JqICh0cC0+dGhyZWFkKSk7CiAgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50
IChpbnRlcnAsIHJlc3VsdF9wdHItPm9ial9wdHIsCgkJCSAgICBUY2xfTmV3SW50T2JqICh0cC0+
aGl0X2NvdW50KSk7CgogIC8qIEFwcGVuZCBhIGxpc3Qgb2YgYWN0aW9ucyAqLwogIGFjdGlvbl9s
aXN0ID0gVGNsX05ld09iaiAoKTsKICBmb3IgKGFsID0gdHAtPmFjdGlvbnM7IGFsICE9IE5VTEw7
IGFsID0gYWwtPm5leHQpCiAgICB7CiAgICAgIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCAoaW50
ZXJwLCBhY3Rpb25fbGlzdCwKCQkJCVRjbF9OZXdTdHJpbmdPYmogKGFsLT5hY3Rpb24sIC0xKSk7
CiAgICB9CiAgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50IChpbnRlcnAsIHJlc3VsdF9wdHItPm9i
al9wdHIsIGFjdGlvbl9saXN0KTsKCiAgcmV0dXJuIFRDTF9PSzsKfQoKLyogcmV0dXJuIGEgbGlz
dCBvZiBhbGwgdHJhY2Vwb2ludCBudW1iZXJzIGluIGludGVycHJldGVyICovCnN0YXRpYyBpbnQK
Z2RiX2dldF90cmFjZXBvaW50X2xpc3QgKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikK
ICAgICBDbGllbnREYXRhIGNsaWVudERhdGE7CiAgICAgVGNsX0ludGVycCAqaW50ZXJwOwogICAg
IGludCBvYmpjOwogICAgIFRjbF9PYmogKkNPTlNUIG9ianZbXTsKewogIHN0cnVjdCB0cmFjZXBv
aW50ICp0cDsKCiAgVGNsX1NldExpc3RPYmogKHJlc3VsdF9wdHItPm9ial9wdHIsIDAsIE5VTEwp
OwoKICBBTExfVFJBQ0VQT0lOVFMgKHRwKQogICAgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50IChp
bnRlcnAsIHJlc3VsdF9wdHItPm9ial9wdHIsCgkJCSAgICAgIFRjbF9OZXdJbnRPYmogKHRwLT5u
dW1iZXIpKTsKCiAgcmV0dXJuIFRDTF9PSzsKfQoKc3RhdGljIGludApnZGJfdHJhY2Vfc3RhdHVz
IChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCiAgICAgQ2xpZW50RGF0YSBjbGllbnRE
YXRhOwogICAgIFRjbF9JbnRlcnAgKmludGVycDsKICAgICBpbnQgb2JqYzsKICAgICBUY2xfT2Jq
ICpDT05TVCBvYmp2W107CnsKICBpbnQgcmVzdWx0ID0gMDsKCiAgaWYgKHRyYWNlX3J1bm5pbmdf
cCkKICAgIHJlc3VsdCA9IDE7CgogIFRjbF9TZXRJbnRPYmogKHJlc3VsdF9wdHItPm9ial9wdHIs
IHJlc3VsdCk7CiAgcmV0dXJuIFRDTF9PSzsKfQoKLyogcmV0dXJucyAtMSBpZiBub3QgZm91bmQs
IHRyYWNlcG9pbnQgIyBpZiBmb3VuZCAqLwpzdGF0aWMgaW50CnRyYWNlcG9pbnRfZXhpc3RzIChj
aGFyICphcmdzKQp7CiAgc3RydWN0IHRyYWNlcG9pbnQgKnRwOwogIGNoYXIgKipjYW5vbmljYWw7
CiAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7CiAgY2hhciAqZmlsZSA9IE5VTEw7CiAg
aW50IHJlc3VsdCA9IC0xOwoKICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmFyZ3MsIDEsIE5VTEws
IDAsICZjYW5vbmljYWwpOwogIGlmIChzYWxzLm5lbHRzID09IDEpCiAgICB7CiAgICAgIHJlc29s
dmVfc2FsX3BjICgmc2Fscy5zYWxzWzBdKTsKICAgICAgZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAo
c2Fscy5zYWxzWzBdLnN5bXRhYi0+ZGlybmFtZSkKCQkgICAgICArIHN0cmxlbiAoc2Fscy5zYWxz
WzBdLnN5bXRhYi0+ZmlsZW5hbWUpICsgMSk7CiAgICAgIGlmIChmaWxlICE9IE5VTEwpCgl7Cgkg
IHN0cmNweSAoZmlsZSwgc2Fscy5zYWxzWzBdLnN5bXRhYi0+ZGlybmFtZSk7CgkgIHN0cmNhdCAo
ZmlsZSwgc2Fscy5zYWxzWzBdLnN5bXRhYi0+ZmlsZW5hbWUpOwoKCSAgQUxMX1RSQUNFUE9JTlRT
ICh0cCkKCSAgewoJICAgIGlmICh0cC0+YWRkcmVzcyA9PSBzYWxzLnNhbHNbMF0ucGMpCgkgICAg
ICByZXN1bHQgPSB0cC0+bnVtYmVyOwojaWYgMAoJICAgIC8qIFdoeSBpcyB0aGlzIGhlcmU/IFRo
aXMgbWVzc2VzIHVwIGFzc2VtYmx5IHRyYWNlcyAqLwoJICAgIGVsc2UgaWYgKHRwLT5zb3VyY2Vf
ZmlsZSAhPSBOVUxMCgkJICAgICAmJiBzdHJjbXAgKHRwLT5zb3VyY2VfZmlsZSwgZmlsZSkgPT0g
MAoJCSAgICAgJiYgc2Fscy5zYWxzWzBdLmxpbmUgPT0gdHAtPmxpbmVfbnVtYmVyKQoJICAgICAg
cmVzdWx0ID0gdHAtPm51bWJlcjsKI2VuZGlmCgkgIH0KCX0KICAgIH0KICBpZiAoZmlsZSAhPSBO
VUxMKQogICAgZnJlZSAoZmlsZSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKc3RhdGljIGludApnZGJf
dHJhY2Vwb2ludF9leGlzdHNfY29tbWFuZCAoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2
KQogICAgIENsaWVudERhdGEgY2xpZW50RGF0YTsKICAgICBUY2xfSW50ZXJwICppbnRlcnA7CiAg
ICAgaW50IG9iamM7CiAgICAgVGNsX09iaiAqQ09OU1Qgb2JqdltdOwp7CiAgY2hhciAqYXJnczsK
CiAgaWYgKG9iamMgIT0gMikKICAgIHsKICAgICAgVGNsX1dyb25nTnVtQXJncyAoaW50ZXJwLCAx
LCBvYmp2LAoJCQkiZnVuY3Rpb246bGluZXxmdW5jdGlvbnxsaW5lfCphZGRyIik7CiAgICAgIHJl
dHVybiBUQ0xfRVJST1I7CiAgICB9CgogIGFyZ3MgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2Jq
dlsxXSwgTlVMTCk7CgogIFRjbF9TZXRJbnRPYmogKHJlc3VsdF9wdHItPm9ial9wdHIsIHRyYWNl
cG9pbnRfZXhpc3RzIChhcmdzKSk7CiAgcmV0dXJuIFRDTF9PSzsKfQoMCi8qCiAqIFRoaXMgc2Vj
dGlvbiBjb250YWlucyBmdW5jdGlvbnMgd2hpY2ggZGVhbCB3aXRoIHRyYWNlcG9pbnQKICogZXZl
bnRzIGZyb20gZ2RiLgogKi8KCnZvaWQKZ2RidGtfY3JlYXRlX3RyYWNlcG9pbnQgKGludCBudW0p
CnsKICB0cmFjZXBvaW50X25vdGlmeSAobnVtLCAiY3JlYXRlIik7Cn0KCnZvaWQKZ2RidGtfZGVs
ZXRlX3RyYWNlcG9pbnQgKGludCBudW0pCnsKICB0cmFjZXBvaW50X25vdGlmeSAobnVtLCAiZGVs
ZXRlIik7Cn0KCnZvaWQKZ2RidGtfbW9kaWZ5X3RyYWNlcG9pbnQgKGludCBudW0pCnsKICB0cmFj
ZXBvaW50X25vdGlmeSAobnVtLCAibW9kaWZ5Iik7Cn0KCnN0YXRpYyB2b2lkCnRyYWNlcG9pbnRf
bm90aWZ5IChudW0sIGFjdGlvbikKICAgICBpbnQgbnVtOwogICAgIGNvbnN0IGNoYXIgKmFjdGlv
bjsKewogIGNoYXIgKmJ1ZjsKCiAgLyogV2UgZW5zdXJlIHRoYXQgQUNUSU9OIGNvbnRhaW5zIG5v
IHNwZWNpYWwgVGNsIGNoYXJhY3RlcnMsIHNvIHdlCiAgICAgY2FuIGRvIHRoaXMuICAqLwogIHhh
c3ByaW50ZiAoJmJ1ZiwgImdkYnRrX3RjbF90cmFjZXBvaW50ICVzICVkIiwgYWN0aW9uLCBudW0p
OwoKICBpZiAoVGNsX0V2YWwgKGdkYnRrX2ludGVycCwgYnVmKSAhPSBUQ0xfT0spCiAgICByZXBv
cnRfZXJyb3IgKCk7CiAgZnJlZShidWYpOyAKfQo=


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

end of thread, other threads:[~2002-04-23  9:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-23  2:06 c/3938: missing structure member rth
  -- strict thread matches above, loose matches on Subject: below --
2001-08-04  4:26 k_fukui

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