public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: other/3810: gcov (part of gcc 3.0) crashes
@ 2002-12-11  1:54 nathan
  0 siblings, 0 replies; 4+ messages in thread
From: nathan @ 2002-12-11  1:54 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, meixner, nobody

Synopsis: gcov (part of gcc 3.0) crashes

State-Changed-From-To: feedback->closed
State-Changed-By: nathan
State-Changed-When: Wed Dec 11 01:54:23 2002
State-Changed-Why:
    feedback unavailable. gcov has been significantly revamped anyway

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


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

* Re: other/3810: gcov (part of gcc 3.0) crashes
@ 2002-12-11  0:46 Matthias Meixner
  0 siblings, 0 replies; 4+ messages in thread
From: Matthias Meixner @ 2002-12-11  0:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1796 bytes --]

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

From: Matthias Meixner <meixner@dvs1.informatik.tu-darmstadt.de>
To: bangerth@dealii.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
   meixner@rbg.informatik.tu-darmstadt.de, nobody@gcc.gnu.org,
   gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: other/3810: gcov (part of gcc 3.0) crashes
Date: Wed, 11 Dec 2002 09:43:43 +0100

 Hi,
 
 bangerth@dealii.org wrote:
 > Synopsis: gcov (part of gcc 3.0) crashes
 > 
 > State-Changed-From-To: open->feedback
 > State-Changed-By: bangerth
 > State-Changed-When: Tue Dec 10 16:32:39 2002
 > State-Changed-Why:
 >     Unfortunately, nobody seemed to care to look at your report
 >     earlier, since then they would have noticed that when
 >     running gcov, it wants to see the source files:
 >     tmp/g> /home/bangerth/bin/gcc-3.0.4/bin/gcov test.ii
 >     100.00% of 7 source lines executed in file bufpipe2.h
 >     Could not open source file bufpipe2.h.
 >      93.75% of 48 source lines executed in file pipe.h
 >     Could not open source file pipe.h.
 >      98.78% of 82 source lines executed in file bufpipe2.cxx
 >     Could not open source file bufpipe2.cxx.
 >     
 >     It sad, but these are not part of the file you sent. Do
 >     you still happen to have them around? Or better: do you
 >     have any experience with gcc3.2?
 
 I don't know which version of these files I used. However, I cannot remember
 having seen any problems like this one using gcc3.2.
 
 Regards,
 
 	Matthias Meixner
 
 -- 
 Matthias Meixner                       meixner@informatik.tu-darmstadt.de
 Technische Universität Darmstadt
 Datenbanken und Verteilte Systeme              Telefon (+49) 6151 16 6232
 Wilhelminenstraße 7, D-64283 Darmstadt, Germany    Fax (+49) 6151 16 6229
 


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

* Re: other/3810: gcov (part of gcc 3.0) crashes
@ 2002-12-10 16:32 bangerth
  0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2002-12-10 16:32 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, meixner, nobody

Synopsis: gcov (part of gcc 3.0) crashes

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue Dec 10 16:32:39 2002
State-Changed-Why:
    Unfortunately, nobody seemed to care to look at your report
    earlier, since then they would have noticed that when
    running gcov, it wants to see the source files:
    tmp/g> /home/bangerth/bin/gcc-3.0.4/bin/gcov test.ii
    100.00% of 7 source lines executed in file bufpipe2.h
    Could not open source file bufpipe2.h.
     93.75% of 48 source lines executed in file pipe.h
    Could not open source file pipe.h.
     98.78% of 82 source lines executed in file bufpipe2.cxx
    Could not open source file bufpipe2.cxx.
    
    It sad, but these are not part of the file you sent. Do
    you still happen to have them around? Or better: do you
    have any experience with gcc3.2?
    
    Sorry
     Wolfgang

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


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

* other/3810: gcov (part of gcc 3.0) crashes
@ 2001-07-25  4:46 meixner
  0 siblings, 0 replies; 4+ messages in thread
From: meixner @ 2001-07-25  4:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         3810
>Category:       other
>Synopsis:       gcov (part of gcc 3.0) crashes
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 25 04:46:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Matthias Meixner
>Release:        gcov as part of gcc version 3.0
>Organization:
>Environment:
Suse Linux 6.4
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../configure --prefix=/usr/local --enable-languages=c,c++ --disable-shared
Thread model: single
gcc version 3.0
>Description:
gcov aborts:
Aborted (core dumped)

>How-To-Repeat:
g++  -fprofile-arcs -ftest-coverage test.ii
a.out
gcov test.ii
>Fix:

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

IyAyICJidWZwaXBlMi5jeHgiCiMgMSAiYnVmcGlwZTIuaCIgMQoKCgojIDEgInBpcGUuaCIgMQoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjUwICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMg
MjUxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjc4ICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMjc5ICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMK
CmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE5OSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVu
c2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCiMg
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2du
dWNfdmFfbGlzdDsKIyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0
OwojIDM5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy
IDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBf
X3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25l
ZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVm
IHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcg
aW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191
X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50
IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9k
ZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7
CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYg
aW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVh
ZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJf
dDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7CiMgMTAwICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19i
aXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBfX2ZkX3NldDsK
Cgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBj
X3BpZF90OwoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYg
X191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBp
bnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7
CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUv
Yml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IHNjaGVkX3By
aW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMK
CgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBf
X3NwaW5sb2NrOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9w
dGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsK
ICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07
CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6
ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBf
X3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGlu
ZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9
IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90
OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291
bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3Qg
X3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVm
IHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5
cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcnds
b2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndf
cmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBf
X3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAg
aW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoK
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0
aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFk
X3Q7CiMgMTUxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA1
NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAz
CiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMK
CgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdp
bnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAzNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAzCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMSAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoj
IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUv
c3RkYXJnLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTU0ICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoj
IDE2NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoK
CgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE4NyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciog
X0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciog
X0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7
CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIg
Kl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3Qg
X0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2Zm
X3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVk
IGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tf
dCAqX2xvY2s7CiMgMjMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zm
c2V0OwoKICBpbnQgX3VudXNlZDJbMTZdOwoKfTsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0
IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs
dXMgX0lPXzJfMV9zdGRlcnJfOwojIDI2MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRl
ZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICogX19jb29raWUsIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19uYnl0ZXMpOwojIDI3MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBf
X3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqIF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9f
YnVmLCBzaXplX3QgX19uKTsKIyAyODAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
aW50IF9faW9fc2Vla19mbiAodm9pZCAqIF9fY29va2llLCBfX29mZl90IF9fcG9zLCBpbnQgX193
KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICogX19jb29raWUpOwoKCgoKdHlw
ZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dy
aXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29r
aWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1
bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lv
X3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAq
Y2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lv
X2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCgpzdHJ1Y3QgX0lPX2Nvb2tpZV9m
aWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgX19maWxlOwogIGNvbnN0IHZvaWQgKl9fdnRhYmxlOwog
IHZvaWQgKl9fY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jdGlv
bnM7Cn07CgoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklM
RSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwojIDMzNyAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9f
ZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgpleHRl
cm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHZv
aWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9f
ZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwg
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3Qp
IHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBfX2dudWNfdmFfbGlzdCkgdGhyb3cgKCk7CgpleHRl
cm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgdGhyb3cg
KCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkg
dGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29m
ZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAo
X0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgX0lPX2Zy
ZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwoKCn0KIyA1OCAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgp0eXBlZGVmIF9fb2ZmX3QgZnBvc190OwoKCgoKdHlwZWRlZiBf
X29mZjY0X3QgZnBvczY0X3Q7CiMgMTEwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIyAxMTEgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRl
cm4gRklMRSAqc3RkZXJyOwoKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAq
X19maWxlbmFtZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpf
X29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqdG1w
ZmlsZSAodm9pZCkgdGhyb3cgKCk7CiMgMTQwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqdG1wbmFt
IChjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpf
X3MpIHRocm93ICgpOwojIDE2MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
ZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMpIHRocm93ICgpOwoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMs
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDIwMyAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7
CgpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwg
X19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5j
b29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fYnVmbG9jLCBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBpbnQgX19tb2Rlcywg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0
IF9fYXJnKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQoKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQoKCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3By
aW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgLi4uKSB0aHJvdyAoKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3Qg
X19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKSB0aHJvdyAoKQoKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRl
cm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKSB0aHJvdyAoKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJu
IGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjYW5mIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChG
SUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpl
eHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgp
CgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoK
CgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50
IGdldGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZv
aWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50
IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1
dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpm
Z2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgNDEzICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIg
KipfX3Jlc3RyaWN0IF9fbGluZXB0ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVs
aW1pdGVyLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gX19z
c2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsIHNpemVfdCAqX19y
ZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fbGluZXB0ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB1dHMgKF9f
Y29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tl
ZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZV91
bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLCBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVu
Y2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA0
NzcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoK
CnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoKCgoKCgpleHRlcm4gaW50IGZzZWVrbyAoRklM
RSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRl
cm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3Qg
X19wb3MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9f
Y29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTI3ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2Zm
LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpIHRocm93ICgpOwoKZXh0
ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3Bv
cykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNs
ZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVv
Zl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9y
IChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBf
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoK
CgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAq
X19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVj
dCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpf
X3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNr
ICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIHRocm93ICgpOwojIDYxNCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA2Mzgg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCn0KIyA4ICJwaXBlLmgiIDIKIyAxICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoK
ZXh0ZXJuICJDIiB7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGlu
dCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90
OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJl
bTsKICB9IGxsZGl2X3Q7CiMgODAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6
ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91
YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgYXRv
aSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wg
KF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4g
bG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpOwoKCgpl
eHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHN0cnRv
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cg
KCk7CgoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJv
dyAoKTsKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UpIHRocm93ICgpOwoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwojIDEzMiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
c3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAo
KTsKIyAxNTcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9j
YWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0
IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNbNl07CgoK
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5
cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsK
IyAxNTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0
cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIF9fbG9j
YWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg
aW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cg
KCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0
b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7
CgoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAo
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9j
KSB0aHJvdyAoKTsKIyAxOTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZG91Ymxl
IF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCmV4dGVybiBm
bG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBf
X3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgoKX19leHRl
bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CiMgMzMzICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cg
KCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
Cgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlw
ZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1
YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRf
dCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBp
bm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZf
dCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3Qg
bW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRf
dCB1aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRf
dCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNz
aXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBj
YWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlw
ZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgNjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1l
X3QgdGltZV90OwojIDEyMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDEyNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE2OSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlf
XykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElf
XykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElf
XykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVk
ZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsK
IyAxOTEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRp
YW4uaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNSAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgi
IDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDE5MiAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoj
IDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50
IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25n
IGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAg
fSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA4MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpz
dHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9u
c2VjOwogIH07CiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKZXh0ZXJuICJD
IiB7CgoKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5
cGVkZWYgX19mZF9zZXQgZmRfc2V0OwojIDc0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz
CmV4dGVybiBpbnQgX19zZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsIF9f
ZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsIHN0cnVjdCB0aW1ldmFs
ICpfX3RpbWVvdXQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBf
X2ZkX3NldCAqX19yZWFkZmRzLCBfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhj
ZXB0ZmRzLCBzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KSB0aHJvdyAoKTsKIyA4NyAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIF9f
ZmRfc2V0ICpfX3JlYWRmZHMsIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNl
cHRmZHMsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190aW1lb3V0LCBjb25zdCBfX3NpZ3NldF90
ICpfX3NpZ21hc2spIHRocm93ICgpOwoKCgoKCn0KIyAxOTUgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAxOTgg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJs
a2NudF90Owp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90Owp0eXBlZGVmIF9fZnNmaWxj
bnRfdCBmc2ZpbGNudF90OwoKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0
X3QgZnNmaWxjbnQ2NF90OwoKCn0KIyAzNDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoK
CgoKCmV4dGVybiBpbnQzMl90IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQg
c3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQg
KiBpbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiBfX3N0YXRlYnVmLCBzaXpl
X3QgX19zdGF0ZWxlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCAqIHNldHN0YXRlICh2b2lk
ICogX19zdGF0ZWJ1ZikgdGhyb3cgKCk7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAg
ICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwog
ICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAg
IGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0
cnVjdCByYW5kb21fZGF0YSAqX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBpbml0c3RhdGVf
ciAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqIF9fcmVzdHJpY3QgX19zdGF0ZWJ1Ziwgc2l6
ZV90IF9fc3RhdGVsZW4sIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhy
b3cgKCk7CgoKCgpleHRlcm4gaW50IHNldHN0YXRlX3IgKHZvaWQgKiBfX3Jlc3RyaWN0IF9fc3Rh
dGVidWYsIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAo
dW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93
ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1Ymlb
M10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
dGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRh
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
YVszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjOwogICAgdW5zaWduZWQgc2hvcnQgaW50IG9s
ZF94WzNdOwogICAgaW50IGluaXQ7CiAgfTsKCgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
IGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxy
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBucmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLCBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmlj
dCBfX2J1ZmZlciwgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0
ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLCBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBsb25nIGludCAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19z
ZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLCBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikgdGhyb3cgKCk7CiMgNDc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQg
KiBtYWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgKiBjYWxsb2Mg
KHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9p
ZCAqIHJlYWxsb2MgKHZvaWQgKiBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgpleHRl
cm4gdm9pZCBmcmVlICh2b2lkICogX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJl
ZSAodm9pZCAqIF9fcHRyKSB0aHJvdyAoKTsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi
IDEgMwojIDIyICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKIyAxICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgoK
CmV4dGVybiB2b2lkICogYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMg
NDkzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKiB2YWxsb2Mg
KHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4
aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9fb25f
ZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqIF9fYXJnKSwgdm9pZCAq
IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGlu
dCBfX3N0YXR1cywgdm9pZCAqIF9fYXJnKSwgdm9pZCAqIF9fYXJnKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3Nl
Y3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19y
ZXBsYWNlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgdGhyb3cg
KCk7CiMgNTY2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAo
Y2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBj
aGFyICpfX2NvbW1hbmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXpl
X2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwojIDU5NSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbmFtZSwgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAoKTsK
CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2Nv
bnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKCgoK
CgpleHRlcm4gdm9pZCAqIGJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqIF9fa2V5LCBfX2NvbnN0IHZv
aWQgKiBfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90
IF9fY29tcGFyKTsKCgoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqIF9fYmFzZSwgc2l6ZV90
IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgoKZXh0
ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBs
bGFicyAobG9uZyBsb25nIGludCBfX3gpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVu
b20pIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKSB0aHJvdyAoKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3Qg
bGxkaXYgKGxvbmcgbG9uZyBpbnQgX19udW1lciwgbG9uZyBsb25nIGludCBfX2Rlbm9tKSB0aHJv
dyAoKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNjUxICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBk
b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGZjdnRfciAoZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikg
dGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgpleHRl
cm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CiMgNjk1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdj
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVy
biBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKIyA3MTggIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNw
b25zZSkgdGhyb3cgKCk7CiMgNzI5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGlu
dCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwgX19jb25zdCBjaGFyICpf
X2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLCBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkg
dGhyb3cgKCk7CiMgNzM4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgc2V0
a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3Jh
bnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19m
ZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgp
OwoKCgoKCn0KIyA5ICJwaXBlLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgpleHRlcm4gIkMiIHsKIyAx
NzUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4
X29wdC5oIiAxIDMKIyAxNzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0
cy9lbnZpcm9ubWVudHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg
MwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMiAzCiMgMTgwICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDE5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTkxICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDIgMwojIDE5OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjAwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDIzNSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKIyAyNDggIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGlu
dCBfX3R5cGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBldWlkYWNjZXNzIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgdGhyb3cgKCk7CiMgMjc3ICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgX19sc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz
ZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9f
ZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CiMgMjkxICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwg
X19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IF9fY2xvc2UgKGludCBfX2ZkKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQp
IHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCBfX3JlYWQgKGludCBfX2ZkLCB2b2lkICogX19i
dWYsIHNpemVfdCBfX25ieXRlcykgdGhyb3cgKCk7CmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBf
X2ZkLCB2b2lkICogX19idWYsIHNpemVfdCBfX25ieXRlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIHNz
aXplX3QgX193cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqIF9fYnVmLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQg
KiBfX2J1Ziwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgX19wcmVh
ZDY0IChpbnQgX19mZCwgdm9pZCAqIF9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmNjRfdCBf
X29mZnNldCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IF9fcHdyaXRlNjQgKGludCBfX2Zk
LCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwgX19vZmY2NF90IF9fb2Zmc2V0KSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICogX19idWYs
IHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CgpleHRlcm4gc3Np
emVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwg
X19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CiMgMzM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKiBfX2J1Ziwgc2l6ZV90
IF9fbmJ5dGVzLCBfX29mZjY0X3QgX19vZmZzZXQpIHRocm93ICgpOwoKZXh0ZXJuIHNzaXplX3Qg
cHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwgX19v
ZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKIyAzNDkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIHRocm93ICgpOwojIDM1OCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVk
IGludCBfX3NlY29uZHMpIHRocm93ICgpOwojIDM2NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gdW5zaWduZWQgaW50IHVhbGFybSAodW5zaWduZWQgaW50IF9fdmFs
dWUsIHVuc2lnbmVkIGludCBfX2ludGVydmFsKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHVz
bGVlcCAodW5zaWduZWQgaW50IF9fdXNlY29uZHMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQg
cGF1c2UgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n
cm91cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgZmNoZGlyIChpbnQgX19mZCkgdGhyb3cgKCk7CiMgNDE5ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSAodm9pZCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGR1cDIg
KGludCBfX2ZkLCBpbnQgX19mZDIpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9u
OwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25zdCBfX2Vu
dnBbXSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAq
X19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25zdCBfX2VudnBbXSkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19w
YXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4
ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBleGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpf
X2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIF9leGl0
IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0
cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9D
QU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFU
SF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAg
IF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAg
X1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAg
ICBfUENfRklMRVNJWkVCSVRTCgogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFYLAoKICAg
IF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNfTUFYLAoK
ICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpOQU1FX01B
WCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBfU0NfUkVB
TFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVElN
RVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVEX0lPLAoK
ICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19NQVBQRURf
RklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgogICAgX1ND
X01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAgX1NDX1NF
TUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfQUlPX0xJ
U1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRBX01BWCwK
CiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAgIF9TQ19N
UV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBfU0NfUEFHRVNJWkUsCgoKICAgIF9T
Q19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgsCgogICAgX1NDX1NFTV9WQUxVRV9N
QVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0NfVElNRVJfTUFYLAoKCgoKICAgIF9T
Q19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFY
LAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAg
IF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJ
TkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgs
CgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVW
LAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NX
X0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9Y
VEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0Nf
UElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFY
SU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRf
REdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAg
IF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoK
ICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgs
CgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAg
IF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMs
CgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAg
ICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIs
CgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZ
X1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVB
RF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1ND
X05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BI
WVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAg
ICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9Y
Q1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgog
ICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NI
QVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0Nf
WE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgog
ICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgog
ICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAg
IF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAg
X1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgog
ICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoK
ICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgs
CgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01T
R01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9U
RVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9P
RkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZC
SUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAg
IF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19Q
QVRICgoKCgogICAgLAogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLAoKICAgIF9DU19MRlNfTERG
TEFHUywKCiAgICBfQ1NfTEZTX0xJQlMsCgogICAgX0NTX0xGU19MSU5URkxBR1MsCgogICAgX0NT
X0xGUzY0X0NGTEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBfQ1NfTEZTNjRfTElC
UywKCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTCgoKCgogICAgLAogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoK
ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf
TElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hC
UzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0
X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NT
X1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdT
LAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdf
T0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NT
X1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUwoKCiAgfTsKIyA0OTggIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgaW50IF9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAo
aW50IF9fZmQsIGludCBfX25hbWUpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25m
IChpbnQgX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19u
YW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX3Bp
ZF90IF9fZ2V0cGlkICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lk
KSB0aHJvdyAoKTsKCgpleHRlcm4gX19waWRfdCBnZXRwcGlkICh2b2lkKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIHRocm93ICgpOwojIDUzNCAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkg
dGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGludCBfX3NldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19w
Z2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3BpZF90IF9fcGlkLCBfX3BpZF90
IF9fcGdpZCkgdGhyb3cgKCk7CiMgNTYxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu
IGludCBzZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKIyA1NzkgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gX19w
aWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCgpleHRlcm4gX191aWRfdCBn
ZXR1aWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIHRo
cm93ICgpOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGdldGdyb3Vw
cyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
Z3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBz
ZXR1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVpZCAo
X191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
c2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lk
IChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lk
X3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldGVn
aWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRfdCBfX2Zvcmsg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFy
ICp0dHluYW1lIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChp
bnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHR0eXNsb3Qg
KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJv
bSwgX19jb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChf
X2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQp
IHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIHRocm93ICgpOwojIDcx
NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA3MjQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9nZXRvcHQu
aCIgMwpleHRlcm4gIkMiIHsKIyAzNiAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBj
aGFyICpvcHRhcmc7CiMgNTAgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9w
dGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyAxMzQg
Ii91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywg
Y2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDE2MyAiL3Vz
ci9pbmNsdWRlL2dldG9wdC5oIiAzCn0KIyA3MjUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAz
CiMgNzMzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAo
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldGhv
c3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIHRocm93ICgpOwoKCgoKCmV4dGVy
biBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgp
OwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3Qg
X19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJl
dm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw
cm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXpl
LCBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgY2hyb290IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBj
aGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hl
bGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xv
c2UpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
X19nZXRwYWdlc2l6ZSAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODI5ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2
NF90IF9fbGVuZ3RoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2Z0cnVuY2F0ZSAoaW50IF9f
ZmQsIF9fb2ZmX3QgX19sZW5ndGgpIHRocm93ICgpOwoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGlu
dCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSB0aHJvdyAoKTsKIyA4NDUgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9f
bGVuZ3RoKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIHRo
cm93ICgpOwojIDg2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2
b2lkICogX19hZGRyKSB0aHJvdyAoKTsKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgODY0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK
CgoKCmV4dGVybiB2b2lkICogX19zYnJrIChwdHJkaWZmX3QgX19kZWx0YSkgdGhyb3cgKCk7CmV4
dGVybiB2b2lkICogc2JyayAocHRyZGlmZl90IF9fZGVsdGEpIHRocm93ICgpOwojIDg4NSAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBf
X3N5c25vLCAuLi4pIHRocm93ICgpOwojIDkwNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIHRocm93
ICgpOwojIDkxNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Y2NCAo
aW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSB0aHJvdyAoKTsKIyA5MzggIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IF9fbGliY19lbmFibGVfc2VjdXJlOwoK
CgoKCgpleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBjaGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpf
X3NhbHQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tl
eSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBf
X2VkZmxhZykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAq
IF9fZnJvbSwgdm9pZCAqIF9fdG8sIHNzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy
biBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqY3Vz
ZXJpZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBj
aGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CiMgOTk5ICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJl
cGFyZSkgKHZvaWQpLCB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwgdm9pZCAoKl9fY2hpbGQpICh2
b2lkKSkgdGhyb3cgKCk7CgoKCgp9CiMgMTAgInBpcGUuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9l
cnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgpleHRl
cm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5j
bHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIg
MiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsK
CgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyA1NSAi
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9u
YW1lLCAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWU7CgoKCn0KIyA2OSAiL3Vzci9pbmNs
dWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJyb3JfdDsKIyAxMSAicGlwZS5oIiAyCgoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lz
L2lvY3RsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3Iv
aW5jbHVkZS9zeXMvaW9jdGwuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL2lvY3Rscy5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvaW9jdGxzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
YXNtL2lvY3RsLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIgMwojIDI1
ICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bHMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMv
aW9jdGwuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMK
IyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9hc20vaW9jdGxzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5o
IiAyIDMKCgpzdHJ1Y3Qgd2luc2l6ZQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgd3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdz
X3hwaXhlbDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3Qg
dGVybWlvCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfaWZsYWc7CiAgICB1bnNpZ25lZCBz
aG9ydCBpbnQgY19vZmxhZzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IGNfbGZsYWc7CiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgIHVu
c2lnbmVkIGNoYXIgY19jY1s4XTsKfTsKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAy
IDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R0eWRlZmF1bHRzLmgiIDEgMwojIDM4ICIv
dXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCgoKZXh0ZXJuIGludCBpb2N0bCAoaW50IF9f
ZmQsIHVuc2lnbmVkIGxvbmcgaW50IF9fcmVxdWVzdCwgLi4uKSB0aHJvdyAoKTsKCn0KIyAxNyAi
cGlwZS5oIiAyCgoKCmNsYXNzIEhEUGlwZQp7CiAgIGludCBkaW9bMl07CiAgIGVudW0gRGlyZWN0
aW9uIHtOb25lLFJlYWQsV3JpdGV9IGRpcmVjdGlvbjsKICAgY2hhciBmZXJyb3JfLGZlb2ZfOwoK
ICAgdm9pZCBpbml0KERpcmVjdGlvbiBkaXIpIHsKICAgICAgaWYoZGlyPT1kaXJlY3Rpb24pIHJl
dHVybjsKICAgICAgaWYoZGlyZWN0aW9uIT1Ob25lKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCJIYWxmIGR1cGxleCBwaXBlIHVzZWQgaW4gYm90aCBkaXJlY3Rpb25zXG4iKTsKICAgICAgICAg
YWJvcnQoKTsKICAgICAgfQoKICAgICAgZGlyZWN0aW9uPWRpcjsKICAgICAgc3dpdGNoKGRpcmVj
dGlvbikgewogICAgICAgICBjYXNlIFJlYWQ6IGNsb3NlKGRpb1sxXSk7CiAgICAgICAgICAgICAg
ICAgICAgZGlvWzFdPS0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdyaXRlOiBjbG9zZShkaW9bMF0pOwogICAgICAgICAgICAgICAgICAgICBkaW9bMF09LTE7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgIH0KCnB1YmxpYzoKCiAgIEhEUGlw
ZSgpIHtwaXBlKGRpbyk7ZGlyZWN0aW9uPU5vbmU7ZmVycm9yXz1mZW9mXz0wO30KICAgfkhEUGlw
ZSgpIHtpbnQgaTsgZm9yKGk9MDtpPDI7aSsrKSBpZihkaW9baV0+PTApIGNsb3NlKGRpb1tpXSk7
IH0KCiAgIGludCByZWFkRkQoKSB7IGluaXQoUmVhZCk7IHJldHVybiBkaW9bMF07IH0KICAgaW50
IHdyaXRlRkQoKSB7IGluaXQoV3JpdGUpOyByZXR1cm4gZGlvWzFdOyB9CgogICBpbnQgZW9mKCkg
eyByZXR1cm4gZmVvZl87IH0KICAgaW50IGVycm9yKCkgeyByZXR1cm4gZmVycm9yXzsgfQogICB2
b2lkIGNsZWFyKCkgeyBmZW9mXz1mZXJyb3JfPTA7IH0KCiAgIHNzaXplX3Qgd3JpdGUoY29uc3Qg
dm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQpIHsKCgoKICAgICAgaW5pdChXcml0ZSk7CiAgICAg
IGNvbnN0IGNoYXIgKmJ1Zj0oY29uc3QgY2hhciAqKWJ1ZmZlcjsKICAgICAgc3NpemVfdCByYz0w
LHI7CiAgICAgIHdoaWxlKChyPTo6d3JpdGUod3JpdGVGRCgpLGJ1Zixjb3VudCkpPGNvdW50ICYm
IHIhPS0xKSB7CiAgICAgICAgIGlmKHI+MCkge3JjKz1yO2J1Zis9cjtjb3VudC09cjt9CiAgICAg
IH0KICAgICAgaWYocj4wKSByYys9cjsKCiAgICAgIGlmKHI9PS0xKSBmZXJyb3JfPTE7CiAgICAg
IHJldHVybiByYzsKICAgfQoKICAgc3NpemVfdCByZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNv
dW50KSB7CgoKCiAgICAgIGluaXQoUmVhZCk7CiAgICAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZl
cjsKICAgICAgc3NpemVfdCByYz0wLHI7CiAgICAgIHdoaWxlKChyPTo6cmVhZChyZWFkRkQoKSxi
dWYsY291bnQpKTxjb3VudCAmJiAociE9LTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09MTEg
fHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09NCkpIHsKICAgICAgICAgaWYocj4wKSB7cmMrPXI7
YnVmKz1yO2NvdW50LT1yO30KICAgICAgICAgZWxzZSBpZihyPT0wKSB7IGZwcmludGYoc3RkZXJy
LCJFT0ZcbiIpO2JyZWFrO30KICAgICAgfQogICAgICBpZihyPjApIHJjKz1yOwoKICAgICAgaWYo
cjw9MCkgZmVvZl89MTsKICAgICAgcmV0dXJuIHJjOwogICB9CgogICB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbnQgd3JpdGUoY29uc3QgVCAmYykgeyByZXR1cm4gd3JpdGUoJmMsc2l6ZW9mKFQpKTsgfQog
ICB0ZW1wbGF0ZTxjbGFzcyBUPiBpbnQgcmVhZChUICZjKSB7IHJldHVybiByZWFkKCZjLHNpemVv
ZihUKSk7IH0KCgogICBpbnQgZmx1c2goKSB7cmV0dXJuIDA7fQoKCn07CgoKY2xhc3MgRkRQaXBl
CgoKCgoKCgp7CiAgIGludCBkaW9bNl07CiAgIGNoYXIgZmVycm9yXyxmZW9mXzsKCiAgIHZvaWQg
aW5pdCgpIHsKICAgICAgaWYoZGlvWzRdPj0wKSB7CiAgICAgICAgIGludCBpOwogICAgICAgICBp
PTE7aW9jdGwoZGlvWzRdLDB4NTQyMSwmaSk7CiAgICAgICAgIGNoYXIgZHVtbXk7CiAgICAgICAg
IHNzaXplX3QgcjsKICAgICAgICAgd2hpbGUoKHI9OjpyZWFkKGRpb1s0XSwmZHVtbXksMSkpPT0t
MSAmJiAoKl9fZXJybm9fbG9jYXRpb24gKCkpPT00KTsKICAgICAgICAgaWYocj09MSkgewogICAg
ICAgICAgICBjbG9zZShkaW9bMV0pOwogICAgICAgICAgICBjbG9zZShkaW9bMl0pOwogICAgICAg
ICAgICBkaW9bMV09ZGlvWzNdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjbG9zZShk
aW9bMF0pOwogICAgICAgICAgICBjbG9zZShkaW9bM10pOwogICAgICAgICAgICBkaW9bMF09ZGlv
WzJdOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlKGRpb1s0XSk7CiAgICAgICAgIGNsb3NlKGRp
b1s1XSk7CiAgICAgICAgIGZvcihpPTI7aTw2O2krKykgZGlvW2ldPS0xOwogICAgICB9CiAgIH0K
CnB1YmxpYzoKCiAgIEZEUGlwZSgpIHsKICAgICAgcGlwZShkaW8pOwogICAgICBwaXBlKCZkaW9b
Ml0pOwogICAgICBwaXBlKCZkaW9bNF0pOwogICAgICA6OndyaXRlKGRpb1s1XSwiWCIsMSk7CiAg
ICAgIGZlcnJvcl89ZmVvZl89MDsKICAgfQoKICAgfkZEUGlwZSgpIHsKICAgICAgaW50IGk7CiAg
ICAgIGZvcihpPTA7aTw2O2krKykgaWYoZGlvW2ldPj0wKSBjbG9zZShkaW9baV0pOwogICB9Cgog
ICBpbnQgcmVhZEZEKCkgeyBpbml0KCk7IHJldHVybiBkaW9bMF07IH0KICAgaW50IHdyaXRlRkQo
KSB7IGluaXQoKTsgcmV0dXJuIGRpb1sxXTsgfQogICBpbnQgZW9mKCkgeyByZXR1cm4gZmVvZl87
IH0KICAgaW50IGVycm9yKCkgeyByZXR1cm4gZmVycm9yXzsgfQogICB2b2lkIGNsZWFyKCkgeyBm
ZW9mXz1mZXJyb3JfPTA7IH0KCiAgIHNzaXplX3Qgd3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBz
aXplX3QgY291bnQpIHsKCgoKICAgICAgaW5pdCgpOwogICAgICBjb25zdCBjaGFyICpidWY9KGNv
bnN0IGNoYXIgKilidWZmZXI7CiAgICAgIHNzaXplX3QgcmM9MCxyOwogICAgICB3aGlsZSgocj06
OndyaXRlKHdyaXRlRkQoKSxidWYsY291bnQpKTxjb3VudCAmJiByIT0tMSkgewogICAgICAgICBp
ZihyPjApIHtyYys9cjtidWYrPXI7Y291bnQtPXI7fQogICAgICB9CiAgICAgIGlmKHI+MCkgcmMr
PXI7CgogICAgICBpZihyPT0tMSkgZmVycm9yXz0xOwogICAgICByZXR1cm4gcmM7CiAgIH0KCiAg
IHNzaXplX3QgcmVhZCh2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCkgewoKCgogICAgICBpbml0
KCk7CiAgICAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZlcjsKICAgICAgc3NpemVfdCByYz0wLHI7
CiAgICAgIHdoaWxlKChyPTo6cmVhZChyZWFkRkQoKSxidWYsY291bnQpKTxjb3VudCAmJiAociE9
LTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09MTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgp
KT09NCkpIHsKICAgICAgICAgaWYocj4wKSB7cmMrPXI7YnVmKz1yO2NvdW50LT1yO30KICAgICAg
ICAgZWxzZSBpZihyPT0wKSB7ZnByaW50ZihzdGRlcnIsIkVPRlxuIik7YnJlYWs7fQogICAgICB9
CiAgICAgIGlmKHI+MCkgcmMrPXI7CgogICAgICBpZihyPD0wKSBmZW9mXz0xOwogICAgICByZXR1
cm4gcmM7CiAgIH0KCiAgIHRlbXBsYXRlPGNsYXNzIFQ+IGludCB3cml0ZShjb25zdCBUICZjKSB7
IHJldHVybiB3cml0ZSgmYyxzaXplb2YoVCkpOyB9CiAgIHRlbXBsYXRlPGNsYXNzIFQ+IGludCBy
ZWFkKFQgJmMpIHsgcmV0dXJuIHJlYWQoJmMsc2l6ZW9mKFQpKTsgfQoKCiAgIGludCBmbHVzaCgp
IHtyZXR1cm4gMDt9CgogICBpbnQgcmVhZGJ1ZnNpemUoKSB7IHJldHVybiAwOyB9Cgp9OwojIDUg
ImJ1ZnBpcGUyLmgiIDIKCmNsYXNzIEJ1ZlBpcGUgewoKICAgRkRQaXBlIHBpcGU7CiAgIGVudW0g
e0J1ZmZlclRocmVzaG9sZD02NCxCdWZmZXJTaXplPTQwOTZ9OwoKICAgc3RydWN0IEJ1ZmZlciB7
CiAgICAgIHNpemVfdCBzaXplOwogICAgICBjaGFyIGJ1ZmZlcltCdWZmZXJTaXplK3NpemVvZihz
aXplX3QpXTsKICAgfTsKCiAgIEJ1ZmZlciAqcmJ1Ziwqd2J1ZjsKICAgc2l6ZV90IHJwb3MscmNv
dW50OwoKICAgQnVmUGlwZShjb25zdCBCdWZQaXBlICYpIHt9OwogICB2b2lkIG9wZXJhdG9yPShj
b25zdCBCdWZQaXBlICYpIHt9OwogICBpbnQgZmx1c2goaW50IGFkZHNpemUpOwoKcHVibGljOgoK
ICAgQnVmUGlwZSgpIHtyYnVmPW5ldyBCdWZmZXI7d2J1Zj1uZXcgQnVmZmVyOyByYnVmLT5zaXpl
PXdidWYtPnNpemU9MDtycG9zPTA7cmNvdW50PTA7fQogICB+QnVmUGlwZSgpIHtkZWxldGUgcmJ1
ZjsgZGVsZXRlIHdidWY7IH0KCiAgIGludCByZWFkRkQoKSB7IHJldHVybiBwaXBlLnJlYWRGRCgp
OyB9CiAgIGludCB3cml0ZUZEKCkgeyByZXR1cm4gcGlwZS53cml0ZUZEKCk7IH0KCiAgIHNzaXpl
X3Qgd3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQpOwogICBpbnQgZmx1c2go
KSB7CiAgICAgIGlmKHdidWYtPnNpemU9PTApIHJldHVybiAwOwogICAgICByZXR1cm4gZmx1c2go
MCk7CiAgIH0KICAgc3NpemVfdCByZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KTsKCiAg
IGludCByZWFkYnVmc2l6ZSgpIHsgcmV0dXJuIHJidWYtPnNpemUtcnBvczsgfQoKICAgdGVtcGxh
dGU8Y2xhc3MgVD4gaW50IHdyaXRlKGNvbnN0IFQgJmMpIHsgcmV0dXJuIHdyaXRlKCZjLHNpemVv
ZihUKSk7IH0KICAgdGVtcGxhdGU8Y2xhc3MgVD4gaW50IHJlYWQoVCAmYykgeyByZXR1cm4gcmVh
ZCgmYyxzaXplb2YoVCkpOyB9Cn07CiMgMyAiYnVmcGlwZTIuY3h4IiAyCiMgMSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIg
MwoKZXh0ZXJuICJDIiB7CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqIG1lbWNweSAodm9pZCAqIF9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IHZvaWQgKiBfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIHZvaWQgKiBtZW1tb3ZlICh2b2lkICogX19kZXN0LCBfX2NvbnN0IHZvaWQg
KiBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICogbWVtY2Nw
eSAodm9pZCAqIF9fZGVzdCwgX19jb25zdCB2b2lkICogX19zcmMsIGludCBfX2MsIHNpemVfdCBf
X24pIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICogbWVtc2V0ICh2b2lkICogX19zLCBpbnQg
X19jLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2
b2lkICogX19zMSwgX19jb25zdCB2b2lkICogX19zMiwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoK
CmV4dGVybiB2b2lkICogbWVtY2hyIChfX2NvbnN0IHZvaWQgKiBfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgKiByYXdtZW1jaHIgKF9fY29uc3Qgdm9p
ZCAqIF9fcywgaW50IF9fYykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJv
dyAoKTsKCgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCmV4
dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIpIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJv
dyAoKTsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAxMDAgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKZXh0ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsK
CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19zcmMsIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
Y2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIg
KnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAq
c3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CiMg
MTQ2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJj
aHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBz
aXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3Qp
IHRocm93ICgpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX2FjY2VwdCkgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpIHRocm93ICgpOwoKZXh0ZXJu
IGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyY2FzZXN0ciAoX19jb25zdCBj
aGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSB0aHJvdyAoKTsKCmV4dGVy
biBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hh
ciAqX19uZWVkbGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIp
IHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwgY2hhciAqKl9fcmVzdHJpY3QgX19z
YXZlX3B0cikgdGhyb3cgKCk7CiMgMTk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJu
IHZvaWQgKiBtZW1tZW0gKF9fY29uc3Qgdm9pZCAqIF9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0
YWNrbGVuLCBfX2NvbnN0IHZvaWQgKiBfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiB2b2lkICogX19tZW1wY3B5ICh2b2lkICogX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgp
OwoKZXh0ZXJuIHZvaWQgKiBtZW1wY3B5ICh2b2lkICogX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4
dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRl
cm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxl
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHJlcnJvcl9y
IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoK
CgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqIF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKiBfX3NyYywgdm9pZCAqIF9fZGVz
dCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKiBfX3Ms
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICog
X19zMSwgX19jb25zdCB2b2lkICogX19zMiwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCk7CgoKZXh0
ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpOwoK
CgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwoKCgoKZXh0ZXJuIGludCBmZnNsIChsb25nIGludCBfX2wpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25n
IGxvbmcgaW50IF9fbGwpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoK
CgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpIHRocm93ICgpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN0cm5jYXNl
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHN0cnZl
cnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsK
CgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93ICgpOwoKCmV4dGVybiBj
aGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYykgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJu
IGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc3Ry
ZnJ5IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKiBtZW1mcm9iICh2
b2lkICogX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2Vu
YW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwojIDM1MCAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCn0KIyA0ICJidWZwaXBlMi5jeHgiIDIKIyAxICIvdXNyL2luY2x1ZGUv
YXNzZXJ0LmgiIDEgMwojIDM1ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzCiMg
NTggIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwpleHRlcm4gIkMiIHsKCgpleHRlcm4gdm9pZCBf
X2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSB0aHJv
dyAoKQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9p
ZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAoaW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSB0aHJvdyAo
KQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCn0KIyA1ICJidWZwaXBl
Mi5jeHgiIDIKCnNzaXplX3QgQnVmUGlwZTo6d3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXpl
X3QgY291bnQpCnsKICAgY29uc3QgY2hhciAqYnVmPShjb25zdCBjaGFyICopYnVmZmVyOwoKICAg
aWYoY291bnQ+QnVmZmVyVGhyZXNob2xkKSB7CiAgICAgIGlmKHdidWYtPnNpemUpIHsKCgogICAg
ICAgICBtZW1jcHkod2J1Zi0+YnVmZmVyK3didWYtPnNpemUsJmNvdW50LHNpemVvZihjb3VudCkp
OwogICAgICAgICBmbHVzaChzaXplb2YoY291bnQpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAg
cGlwZS53cml0ZShjb3VudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBpcGUud3JpdGUoYnVmZmVy
LGNvdW50KTsKICAgfQogICBlbHNlIGlmKGNvdW50K3didWYtPnNpemU+QnVmZmVyU2l6ZSkgewog
ICAgICBpZihmbHVzaCgpPT0tMSkgcmV0dXJuIC0xOwogICB9CiAgIGVsc2UgewogICAgICBtZW1j
cHkod2J1Zi0+YnVmZmVyK3didWYtPnNpemUsYnVmLGNvdW50KTsKICAgICAgd2J1Zi0+c2l6ZSs9
Y291bnQ7CiAgIH0KICAgcmV0dXJuIGNvdW50Owp9CgppbnQgQnVmUGlwZTo6Zmx1c2goaW50IGFk
ZHNpemUpCgp7CiAgIHNzaXplX3QgcjsKICAgcj0ocGlwZS53cml0ZSh3YnVmLHNpemVvZih3YnVm
LT5zaXplKSt3YnVmLT5zaXplK2FkZHNpemUpPT1zaXplb2Yod2J1Zi0+c2l6ZSkrd2J1Zi0+c2l6
ZSktMTsKICAgd2J1Zi0+c2l6ZT0wOwogICByZXR1cm4gcjsKfQoKc3NpemVfdCBCdWZQaXBlOjpy
ZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQp7CiAgIHNpemVfdCBjb3VudF89Y291bnQ7
CiAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZlcjsKCiAgIGlmKHdidWYtPnNpemUpIGZsdXNoKDAp
OwoKICAgd2hpbGUoY291bnQ+MCkgewogICAgICBpZihycG9zPT1yYnVmLT5zaXplICYmIHJjb3Vu
dD09MCkgewogICAgICAgICBwaXBlLnJlYWQocmNvdW50KTsKICAgICAgICAgcHJpbnRmKCJyY291
bnQgJWRcbiIscmNvdW50KTsKICAgICAgfQoKCiAgICAgIGlmKHJwb3M8cmJ1Zi0+c2l6ZSkgewog
ICAgICAgICBzaXplX3Qgbj1yYnVmLT5zaXplLXJwb3M7CiAgICAgICAgIGlmKG4+PWNvdW50KSB7
CiAgICAgICAgICAgIHByaW50ZigicjFcbiIpOwogICAgICAgICAgICBtZW1jcHkoYnVmLHJidWYt
PmJ1ZmZlcitycG9zLGNvdW50KTsKICAgICAgICAgICAgcnBvcys9Y291bnQ7CiAgICAgICAgICAg
IHJldHVybiBjb3VudF87CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigicjJc
biIpOwogICAgICAgICAgICBtZW1jcHkoYnVmLHJidWYtPmJ1ZmZlcitycG9zLG4pOwogICAgICAg
ICAgICBidWYrPW47CiAgICAgICAgICAgIGNvdW50LT1uOwogICAgICAgICAgICBycG9zKz1uOwog
ICAgICAgICB9CiAgICAgIH0KCiAgICAgICgodm9pZCkgKChycG9zPT1yYnVmLT5zaXplKSA/IDAg
OiAoX19hc3NlcnRfZmFpbCAoInJwb3M9PXJidWYtPnNpemUiLCAiYnVmcGlwZTIuY3h4IiwgNzAs
IF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwoKCiAgICAgIGlmKGNvdW50PEJ1ZmZlclRocmVz
aG9sZCkgewogICAgICAgICBwcmludGYoInIzXG4iKTsKICAgICAgICAgc2l6ZV90IG49cmNvdW50
OwogICAgICAgICBpZihuPkJ1ZmZlclNpemUpIG49QnVmZmVyU2l6ZTsKICAgICAgICAgcGlwZS5y
ZWFkKHJidWYtPmJ1ZmZlcixuKTsKICAgICAgICAgcmNvdW50LT1uOwogICAgICAgICByYnVmLT5z
aXplPW47CiAgICAgICAgIHJwb3M9MDsKICAgICAgfSBlbHNlIHsKICAgICAgICAgcHJpbnRmKCJy
NFxuIik7CiAgICAgICAgIHNpemVfdCBuPXJjb3VudDsKICAgICAgICAgaWYobj5jb3VudCkgbj1j
b3VudDsKICAgICAgICAgcGlwZS5yZWFkKGJ1ZixuKTsKICAgICAgICAgYnVmKz1uOwogICAgICAg
ICBjb3VudC09bjsKICAgICAgICAgcmNvdW50LT1uOwogICAgICB9CiAgIH0KICAgcmV0dXJuIGNv
dW50XzsKfQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgOTggImJ1ZnBpcGUy
LmN4eCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgOTkgImJ1ZnBpcGUy
LmN4eCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL3N5cy93YWl0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcg
Ii91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIg
MwojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3dhaXRmbGFncy5oIiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDgx
ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRz
dGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRz
dGF0dXMuaCIgMiAzCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0
CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5z
aWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29k
ZTo4OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1p
bmF0ZWQ7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2
YWw6ODsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25l
ZCBpbnQ6MTY7CgoKCgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA4MiAiL3Vzci9p
bmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwp0
eXBlZGVmIGVudW0KewogIFBfQUxMLAogIFBfUElELAogIFBfUEdJRAp9IGlkdHlwZV90OwoKCgoK
CmV4dGVybiBfX3BpZF90IF9fd2FpdCAodm9pZCAqIF9fc3RhdF9sb2MpIHRocm93ICgpOwpleHRl
cm4gX19waWRfdCB3YWl0ICh2b2lkICogX19zdGF0X2xvYykgdGhyb3cgKCk7CiMgMTMxICIvdXNy
L2luY2x1ZGUvc3lzL3dhaXQuaCIgMwpleHRlcm4gX19waWRfdCB3YWl0cGlkIChfX3BpZF90IF9f
cGlkLCBpbnQgKl9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMpIHRocm93ICgpOwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdpbmZvLmgiIDMKdHlwZWRlZiB1bmlvbiBzaWd2YWwKICB7CiAgICBpbnQgc2l2YWxfaW50Owog
ICAgdm9pZCAqc2l2YWxfcHRyOwogIH0gc2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdp
bmZvCiAgewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAgIGludCBzaV9j
b2RlOwoKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBpbnQgX3BhZFsoKDEyOCAvIHNpemVvZiAo
aW50KSkgLSAzKV07CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19w
aWRfdCBzaV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgfSBfa2ls
bDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X3RpbWVyMTsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICB9IF90
aW1lcjsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNp
X3BpZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICAgIHNpZ3ZhbF90IHNp
X3NpZ3ZhbDsKICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAg
ICAgICAgICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAg
ICAgICAgICAgaW50IHNpX3N0YXR1czsKICAgICAgICAgICAgX19jbG9ja190IHNpX3V0aW1lOwog
ICAgICAgICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAg
ICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKnNpX2FkZHI7CiAgICAg
ICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAg
ICBpbnQgc2lfYmFuZDsKICAgICAgICAgICAgaW50IHNpX2ZkOwogICAgICAgICAgfSBfc2lncG9s
bDsKICAgICAgfSBfc2lmaWVsZHM7CiAgfSBzaWdpbmZvX3Q7CiMgMTEzICIvdXNyL2luY2x1ZGUv
Yml0cy9zaWdpbmZvLmgiIDMKZW51bQp7CiAgU0lfU0lHSU8gPSAtNSwKCiAgU0lfQVNZTkNJTywK
CiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBTSV9RVUVVRSwKCiAgU0lfVVNFUgoKfTsKCgoK
ZW51bQp7CiAgSUxMX0lMTE9QQyA9IDEsCgogIElMTF9JTExPUE4sCgogIElMTF9JTExBRFIsCgog
IElMTF9JTExUUlAsCgogIElMTF9QUlZPUEMsCgogIElMTF9QUlZSRUcsCgogIElMTF9DT1BST0Ms
CgogIElMTF9CQURTVEsKCn07CgoKZW51bQp7CiAgRlBFX0lOVERJViA9IDEsCgogIEZQRV9JTlRP
VkYsCgogIEZQRV9GTFRESVYsCgogIEZQRV9GTFRPVkYsCgogIEZQRV9GTFRVTkQsCgogIEZQRV9G
TFRSRVMsCgogIEZQRV9GTFRJTlYsCgogIEZQRV9GTFRTVUIKCn07CgoKZW51bQp7CiAgU0VHVl9N
QVBFUlIgPSAxLAoKICBTRUdWX0FDQ0VSUgoKfTsKCgplbnVtCnsKICBCVVNfQURSQUxOID0gMSwK
CiAgQlVTX0FEUkVSUiwKCiAgQlVTX09CSkVSUgoKfTsKCgplbnVtCnsKICBUUkFQX0JSS1BUID0g
MSwKCiAgVFJBUF9UUkFDRQoKfTsKCgplbnVtCnsKICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJ
TExFRCwKCiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RSQVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBD
TERfQ09OVElOVUVECgp9OwoKCmVudW0KewogIFBPTExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAg
UE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xMX1BSSSwKCiAgUE9MTF9IVVAKCn07CiMgMTM3
ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCiMgMTQ1ICIvdXNyL2luY2x1ZGUvc3lzL3dh
aXQuaCIgMwpleHRlcm4gaW50IHdhaXRpZCAoaWR0eXBlX3QgX19pZHR5cGUsIF9faWRfdCBfX2lk
LCBzaWdpbmZvX3QgKl9faW5mb3AsIGludCBfX29wdGlvbnMpIHRocm93ICgpOwoKCgoKCgpzdHJ1
Y3QgcnVzYWdlOwoKCgoKCgpleHRlcm4gX19waWRfdCB3YWl0MyAodm9pZCAqIF9fc3RhdF9sb2Ms
IGludCBfX29wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBfX3VzYWdlKSB0aHJvdyAoKTsKCgoKCgoK
c3RydWN0IHJ1c2FnZTsKCgpleHRlcm4gX19waWRfdCB3YWl0NCAoX19waWRfdCBfX3BpZCwgdm9p
ZCAqIF9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIHRo
cm93ICgpOwoKCgoKfQojIDEwMCAiYnVmcGlwZTIuY3h4IiAyCgptYWluKCkKewogICBCdWZQaXBl
IHBpcGU7CgogICBpbnQgYnVmZmVyW109ezAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMs
MTQsMTUsMTYsMTcsMTgsMTksMjB9OwogICBidWZmZXJbMF09c2l6ZW9mKGJ1ZmZlcikvc2l6ZW9m
KGludCktMTsKCiAgIGludCBwaWQ7CiAgIGlmKChwaWQ9Zm9yaygpKT09MCkgewoKICAgICAgaW50
IGNudCxzPTA7CiAgICAgIHBpcGUucmVhZChjbnQpOwogICAgICB3aGlsZShjbnQtLSkgewogICAg
ICAgICBpbnQgaTsKICAgICAgICAgcGlwZS5yZWFkKGkpOwogICAgICAgICBzKz1pOwogICAgICB9
CiAgICAgIHBpcGUud3JpdGUocyk7CiAgICAgIHBpcGUud3JpdGUoYnVmZmVyLHNpemVvZihidWZm
ZXIpKTsKICAgICAgcGlwZS53cml0ZShidWZmZXIsc2l6ZW9mKGJ1ZmZlcikpOwogICAgICBwaXBl
LndyaXRlKHMpOwogICAgICBwaXBlLmZsdXNoKCk7CiAgICAgIHJldHVybiAwOwogICB9CgoKICAg
aW50IHM7CiAgIHBpcGUud3JpdGUoYnVmZmVyLHNpemVvZihidWZmZXIpKTsKICAgcGlwZS5yZWFk
KGJ1ZmZlcixzaXplb2YoYnVmZmVyKSk7CiAgIHBpcGUucmVhZChzKTsKICAgcGlwZS5yZWFkKHMp
OwogICBwaXBlLnJlYWQoYnVmZmVyLHNpemVvZihidWZmZXIpKTsKCiAgIHdhaXRwaWQocGlkLF9f
bnVsbCwwKTsKICAgcHJpbnRmKCIlZFxuIixidWZmZXJbc2l6ZW9mKGJ1ZmZlcikvc2l6ZW9mKGlu
dCktMV0pOwoKfQo=


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

end of thread, other threads:[~2002-12-11  9:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-11  1:54 other/3810: gcov (part of gcc 3.0) crashes nathan
  -- strict thread matches above, loose matches on Subject: below --
2002-12-11  0:46 Matthias Meixner
2002-12-10 16:32 bangerth
2001-07-25  4:46 meixner

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).