public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/4064: floats and doubles produce wrong output on cout when formatted with setw()
@ 2001-11-15 13:36 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-11-15 13:36 UTC (permalink / raw)
  To: gcc-bugs, gcc-gnats, gcc-prs, nobody, paul_hodor, rodrigc

Synopsis: floats and doubles produce wrong output on cout when formatted with setw()

State-Changed-From-To: feedback->closed
State-Changed-By: rodrigc
State-Changed-When: Tue Nov 20 18:01:52 2001
State-Changed-Why:
    Problem not reproduced in gcc 3.0 branch.

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


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

* Re: c++/4064: floats and doubles produce wrong output on cout when formatted with setw()
@ 2001-11-15 16:56 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-11-15 16:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c++/4064; it has been noted by GNATS.

From: rodrigc@gcc.gnu.org
To: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org,
  nobody@gcc.gnu.org, paul_hodor@merck.com, rodrigc@gcc.gnu.org
Cc:  
Subject: Re: c++/4064: floats and doubles produce wrong output on cout when formatted with setw()
Date: 21 Nov 2001 02:01:53 -0000

 Synopsis: floats and doubles produce wrong output on cout when formatted with setw()
 
 State-Changed-From-To: feedback->closed
 State-Changed-By: rodrigc
 State-Changed-When: Tue Nov 20 18:01:52 2001
 State-Changed-Why:
     Problem not reproduced in gcc 3.0 branch.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4064&database=gcc


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

* Re: c++/4064: floats and doubles produce wrong output on cout when formatted with setw()
@ 2001-08-20 22:42 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-08-20 22:42 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, paul_hodor, rodrigc

Synopsis: floats and doubles produce wrong output on cout when formatted with setw()

State-Changed-From-To: open->feedback
State-Changed-By: rodrigc
State-Changed-When: Mon Aug 20 22:42:04 2001
State-Changed-Why:
    Cannot reproduce problem with gcc 3.0.1
    
    Please contact SUSE and/or Caldera and see if they
    have a newer version of their release of gcc which fixes the problem.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4064&database=gcc


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

* c++/4064: floats and doubles produce wrong output on cout when formatted with setw()
@ 2001-08-20  9:16 paul_hodor
  0 siblings, 0 replies; 4+ messages in thread
From: paul_hodor @ 2001-08-20  9:16 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4064
>Category:       c++
>Synopsis:       floats and doubles produce wrong output on cout when formatted with setw()
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 20 09:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     paul_hodor@merck.com
>Release:        gcc version 2.95.3 20010315 (SuSE)
>Organization:
>Environment:
Reading specs from /usr/lib/gcc-lib/i486-suse-linux/2.95.3/specs
>Description:
cout << setw(4) << 1. << endl;
produces 3 '\0' characters (instead of 3 spaces) followed
by a '1'. This bug also occurs in SuSE 7.1 (gcc 2.95.2-149)
and in Caldera OpenLinux 3.1. The output is fine in older
versions: Suse 6.4 (gcc v. 2.95.2-19) and Caldera eDesktop
2.4.

Compilation was simply
g++ setw.test.cc -save-temps
with no errors.

Attached is the preprocessed file.
>How-To-Repeat:

>Fix:

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

IyAxICJzZXR3LnRlc3QuY2MiDQojIDEgIi91c3IvaW5jbHVkZS9nKysvaW9zdHJlYW0iIDEgMw0K
IA0KIA0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvZysrL2lvc3RyZWFtLmgiIDEgMw0KIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIGlu
dGVyZmFjZQ0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvZysrL3N0cmVhbWJ1Zi5oIiAxIDMNCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIGludGVyZmFjZQ0KDQoNCiAgIA0KDQoNCg0KZXh0ZXJuICJDIiB7DQojIDEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMw0K
IA0KDQoNCg0KDQoNCiANCg0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMNCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQojIDEgIi91
c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCiANCiMg
MTQyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoN
CiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojIDIwOCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KIA0KDQoNCg0KIA0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQogDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0K
DQoNCg0KIA0KDQoNCg0KIyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzDQoNCg0KIA0K
DQoNCg0KDQoNCiANCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCiANCg0K
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0K
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQojIDI4
MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMw0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoN
CiANCg0KDQoNCg0KIA0KDQogDQoNCg0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvZ251
L3N0dWJzLmgiIDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAzMTEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAyIDMNCg0KDQoNCg0KIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzDQoNCg0K
DQojIDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k0
ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KIA0KDQoNCiAN
Cg0KDQoNCg0KDQogDQoNCg0KIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KIA0KDQojIDEzMSAi
L3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMNCg0KDQogDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Ow0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCiAN
Cg0KIyAyNzEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzDQoNCg0KIyAyODMgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCiMgMzE3ICIvdXNyL2xp
Yi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoN
Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDI5ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMNCg0KDQogDQp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgX191X2NoYXI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsNCnR5cGVkZWYg
dW5zaWduZWQgaW50IF9fdV9pbnQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7DQoN
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7
DQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsNCiMgNDggIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMNCg0KdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhf
dDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7DQp0eXBlZGVmIHNpZ25lZCBzaG9y
dCBpbnQgX19pbnQxNl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsN
CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vp
bnQzMl90Ow0KDQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19p
bnQ2NF90Ow0KX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191
aW50NjRfdDsNCg0KdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90Ow0KDQp0eXBlZGVmIF9fdV9x
dWFkX3QgX19kZXZfdDsJCSANCnR5cGVkZWYgX191X2ludCBfX3VpZF90OwkJIA0KdHlwZWRlZiBf
X3VfaW50IF9fZ2lkX3Q7CQkgDQp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CQkgDQp0eXBlZGVm
IF9fdV9pbnQgX19tb2RlX3Q7CQkgDQp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190OyAJCSANCnR5
cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsJCSANCnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkg
DQp0eXBlZGVmIGludCBfX3BpZF90OwkJCSANCnR5cGVkZWYgaW50IF9fc3NpemVfdDsJCQkgDQp0
eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90OwkJIA0KdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0
X3Q7CQkgDQp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwkJCSANCg0KdHlwZWRlZiBzdHJ1Y3QNCiAg
ew0KICAgIGludCBfX3ZhbFsyXTsNCiAgfSBfX2ZzaWRfdDsJCQkJIA0KDQogDQp0eXBlZGVmIGlu
dCBfX2RhZGRyX3Q7CQkJIA0KdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7DQp0eXBlZGVmIGxvbmcg
aW50IF9fdGltZV90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Ow0KdHlwZWRl
ZiBsb25nIGludCBfX3N1c2Vjb25kc190Ow0KdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkg
DQoMDQp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsNCg0KIA0KdHlwZWRlZiBpbnQgX19jbG9j
a2lkX3Q7DQoNCiANCnR5cGVkZWYgaW50IF9fdGltZXJfdDsNCg0KDQogDQp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IF9fZmRfbWFzazsNCg0KIA0KDQoNCiANCg0KDQoNCg0KIA0KdHlwZWRlZiBz
dHJ1Y3QNCiAgew0KICAgICANCg0KDQoNCg0KDQogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAy
NCAgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSkgXTsNCg0KDQogIH0gX19mZF9zZXQ7DQoNCg0K
dHlwZWRlZiBpbnQgX19rZXlfdDsNCg0KIA0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19p
cGNfcGlkX3Q7DQoNCg0KIA0KdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsNCg0KIA0KDQog
DQp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7DQp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250
NjRfdDsNCg0KIA0KdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7DQp0eXBlZGVmIF9fdV9x
dWFkX3QgX19mc2Jsa2NudDY0X3Q7DQoNCiANCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90
Ow0KdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90Ow0KDQogDQp0eXBlZGVmIF9fdV9x
dWFkX3QgX19pbm82NF90Ow0KDQogDQp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsNCg0KIA0K
dHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IF9fdF91c2NhbGFyX3Q7DQoNCiANCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7DQoNCiANCnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90Ow0KDQoNCiANCg0KIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzDQogDQogDQogDQogDQogDQogDQogDQogDQogDQogDQog
DQogDQogDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgi
IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDYyICIvdXNy
L2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzDQoNCg0KDQoNCg0KIA0Kc3RydWN0IF9fc2NoZWRfcGFy
YW0NCiAgew0KICAgIGludCBzY2hlZF9wcmlvcml0eTsNCiAgfTsNCg0KDQojIDIzICIvdXNyL2lu
Y2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzDQoNCg0KIA0Kc3RydWN0IF9wdGhyZWFkX2Zh
c3Rsb2NrDQp7DQogIGxvbmcgaW50IF9fc3RhdHVzOyAgICANCiAgaW50IF9fc3BpbmxvY2s7ICAg
ICAgIA0KDQp9Ow0KDQoNCiANCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAq
X3B0aHJlYWRfZGVzY3I7DQoNCg0KDQoNCiANCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBfX2Rl
dGFjaHN0YXRlOw0KICBpbnQgX19zY2hlZHBvbGljeTsNCiAgc3RydWN0IF9fc2NoZWRfcGFyYW0g
X19zY2hlZHBhcmFtOw0KICBpbnQgX19pbmhlcml0c2NoZWQ7DQogIGludCBfX3Njb3BlOw0KICBz
aXplX3QgX19ndWFyZHNpemU7DQogIGludCBfX3N0YWNrYWRkcl9zZXQ7DQogIHZvaWQgKl9fc3Rh
Y2thZGRyOw0KICBzaXplX3QgX19zdGFja3NpemU7DQp9IHB0aHJlYWRfYXR0cl90Ow0KDQoNCiAN
CnR5cGVkZWYgc3RydWN0DQp7DQogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsg
IA0KICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsgICAgICAgICANCn0gcHRocmVhZF9jb25k
X3Q7DQoNCg0KIA0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgaW50IF9fZHVtbXk7DQp9IHB0aHJlYWRf
Y29uZGF0dHJfdDsNCg0KIA0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsNCg0K
DQogDQogDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBfX21fcmVzZXJ2ZWQ7ICAgICAgICAg
ICAgICAgIA0KICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICANCiAgX3B0aHJlYWRf
ZGVzY3IgX19tX293bmVyOyAgICAgICAgDQogIGludCBfX21fa2luZDsgICAgICAgICAgICAgICAg
ICAgIA0KICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICANCn0gcHRocmVhZF9t
dXRleF90Ow0KDQoNCiANCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBfX211dGV4a2luZDsNCn0g
cHRocmVhZF9tdXRleGF0dHJfdDsNCg0KDQogDQp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsN
Cg0KDQojIDExNyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMNCg0KDQojIDEz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMNCg0KDQoNCiANCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90Ow0KDQoNCiMgMTY1ICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAyIDMNCg0KDQoNCg0KIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
Mw0KDQoNCg0KDQoNCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0KDQoNCg0KDQoNCg0KIA0KDQoNCiMgMTkgIi91c3IvbGli
L2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0K
DQogDQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYt
c3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQog
DQoNCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMw0KDQoNCiANCg0KIA0KDQoNCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k0
ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0K
DQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7DQoNCg0KDQoNCiANCg0KIA0KDQojIDMxNyAi
L3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IyAxNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNDMgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzDQoNCg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQoNCg0KDQoNCg0KDQogDQoNCg0KIyAxOSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0K
DQoNCiANCg0KDQogDQoNCg0KDQoNCg0KIA0KDQoNCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTQ4
Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQoNCg0KDQoN
CiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQogDQoN
CiANCg0KIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzDQoNCg0KIA0KDQogDQoNCiMgMTkwICIvdXNyL2xpYi9nY2MtbGliL2k0
ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KIA0KDQoNCg0K
DQogDQoNCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KIA0KDQoj
IDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KIyA0NSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMw0KDQoNCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvd2NoYXIuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiMgNDcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMNCg0KDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBf
X2NvdW50Ow0KICB1bmlvbg0KICB7DQogICAgd2ludF90IF9fd2NoOw0KICAgIGNoYXIgX193Y2hi
WzRdOw0KICB9IF9fdmFsdWU7CQkgDQp9IF9fbWJzdGF0ZV90Ow0KDQoNCg0KDQogDQoNCiMgNjgx
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMw0KDQoNCg0KIyAyNCAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMNCg0KDQp0eXBlZGVmIHN0cnVjdA0Kew0KICBfX29mZl90IF9fcG9zOw0KICBf
X21ic3RhdGVfdCBfX3N0YXRlOw0KfSBfR19mcG9zX3Q7DQp0eXBlZGVmIHN0cnVjdA0Kew0KICBf
X29mZjY0X3QgX19wb3M7DQogIF9fbWJzdGF0ZV90IF9fc3RhdGU7DQp9IF9HX2Zwb3M2NF90Ow0K
DQoNCg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMw0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQojIDEgIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA0MyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMN
Cg0KDQojIDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMNCg0KDQoNCg0KDQoNCiANCg0KDQojIDE5ICIvdXNyL2xpYi9nY2MtbGli
L2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KIA0KDQoN
CiANCg0KDQoNCg0KDQogDQoNCg0KIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KIA0KDQojIDEz
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDMNCg0KDQogDQoNCiANCg0KIyAxOTAgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxp
bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQogDQoNCg0KDQoNCiANCg0KIyAy
NzEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQogDQoNCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0K
DQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDQ1
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojIDczICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMw0KDQoNCg0KDQogDQoNCiMgNjgxICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMw0KDQoNCg0KIyAyOCAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMw0KDQoNCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMw0KDQoNCg0KDQoNCg0KIA0KDQoNCiMgMTkgIi91c3IvbGliL2dj
Yy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzDQoNCg0KDQog
DQoNCg0KIA0KDQoNCg0KDQoNCiANCg0KDQojIDYxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3Vz
ZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCiANCg0KDQoNCg0KDQogDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0KDQogDQoN
CiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMw0KDQoNCiANCg0KIA0KDQoNCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k0ODYt
c3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMw0KDQoNCg0KDQoNCiANCg0KDQoN
Cg0KIA0KDQojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2Ut
bGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMNCg0KDQogDQoNCiANCg0KIyAzMTcgIi91
c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMg
MzAgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMNCg0KDQogDQoNCg0KIA0KZW51bQ0Kew0KICBf
X0dDT05WX09LID0gMCwNCiAgX19HQ09OVl9OT0NPTlYsDQogIF9fR0NPTlZfTk9EQiwNCiAgX19H
Q09OVl9OT01FTSwNCg0KICBfX0dDT05WX0VNUFRZX0lOUFVULA0KICBfX0dDT05WX0ZVTExfT1VU
UFVULA0KICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsDQogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBV
VCwNCg0KICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwNCiAgX19HQ09OVl9JTlRFUk5BTF9F
UlJPUg0KfTsNCg0KDQogDQplbnVtDQp7DQogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwNCiAg
X19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyDQp9Ow0KDQoNCiANCnN0cnVjdCBfX2djb252
X3N0ZXA7DQpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7DQpzdHJ1Y3QgX19nY29udl9sb2FkZWRf
b2JqZWN0Ow0Kc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsNCg0KDQogDQp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEgKiwNCgkJCSAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLA0KCQkJICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7
DQoNCiANCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0
ZXAgKik7DQp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICopOw0KDQoNCiANCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICosDQoJCQkJICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAq
LA0KCQkJCSAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosDQoJCQkJICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiosDQoJCQkJICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAq
KiwNCgkJCQkgIHNpemVfdCAqKTsNCg0KIA0KdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2Nv
bnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwNCgkJCQkJICBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiwNCgkJCQkJICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNo
YXIgKik7DQoNCiANCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2Nv
bnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwNCgkJCQkJc2l6ZV90ICopOw0KDQogDQp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICop
Ow0KdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsNCg0Kc3Ry
dWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQ0Kew0KICAgDQogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJh
bnNfZmN0Ow0KICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7
DQogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7DQogIHZvaWQgKl9fZGF0
YTsNCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Ow0KfTsNCg0KDQogDQpzdHJ1
Y3QgX19nY29udl9zdGVwDQp7DQogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hs
aWJfaGFuZGxlOw0KICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsNCg0KICBpbnQgX19jb3VudGVy
Ow0KDQogIF9fY29uc3QgY2hhciAqX19mcm9tX25hbWU7DQogIF9fY29uc3QgY2hhciAqX190b19u
YW1lOw0KDQogIF9fZ2NvbnZfZmN0IF9fZmN0Ow0KICBfX2djb252X2luaXRfZmN0IF9faW5pdF9m
Y3Q7DQogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7DQoNCiAgIA0KDQogIGludCBfX21pbl9u
ZWVkZWRfZnJvbTsNCiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOw0KICBpbnQgX19taW5fbmVlZGVk
X3RvOw0KICBpbnQgX19tYXhfbmVlZGVkX3RvOw0KDQogICANCiAgaW50IF9fc3RhdGVmdWw7DQoN
CiAgdm9pZCAqX19kYXRhOwkJIA0KfTsNCg0KIA0KDQpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEN
CnsNCiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7ICAgICANCiAgdW5zaWduZWQgY2hhciAqX19v
dXRidWZlbmQ7ICANCg0KDQogICANCiAgaW50IF9fZmxhZ3M7DQoNCiAgIA0KDQogIGludCBfX2lu
dm9jYXRpb25fY291bnRlcjsNCg0KICAgDQoNCiAgaW50IF9faW50ZXJuYWxfdXNlOw0KDQogIF9f
bWJzdGF0ZV90ICpfX3N0YXRlcDsNCiAgX19tYnN0YXRlX3QgX19zdGF0ZTsJIA0KDQoNCiAgIA0K
ICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOw0KfTsNCg0KDQogDQp0eXBlZGVm
IHN0cnVjdCBfX2djb252X2luZm8NCnsNCiAgc2l6ZV90IF9fbnN0ZXBzOw0KICBzdHJ1Y3QgX19n
Y29udl9zdGVwICpfX3N0ZXBzOw0KICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YSBfX2RhdGFbMF07DQp9ICpfX2djb252X3Q7DQoNCg0KIyA0NCAiL3Vzci9pbmNsdWRlL19H
X2NvbmZpZy5oIiAyIDMNCg0KdHlwZWRlZiB1bmlvbg0Kew0KICBzdHJ1Y3QgX19nY29udl9pbmZv
IF9fY2Q7DQogIHN0cnVjdA0KICB7DQogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOw0KICAg
IHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7DQogIH0gX19jb21iaW5lZDsNCn0gX0df
aWNvbnZfdDsNCg0KdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fSElfXykpKTsNCnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX1NJX18pKSk7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsNCnR5cGVkZWYgdW5zaWduZWQgaW50IF9H
X3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOw0KDQoNCg0KDQog
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCiANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDMwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzDQoN
CiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMw0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgKl9fZ251Y192YV9saXN0
Ow0KDQoNCg0KIA0KDQojIDEyMiAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojIDIwOSAiL3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkYXJnLmgiIDMNCg0KDQoNCg0KIyA1MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIg
Mw0KDQoNCg0KDQoNCg0KDQojIDcwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMw0KDQoNCiANCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEwMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0Kc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJTEU7DQoNCiANCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7DQoNCg0KDQogDQoNCnN0cnVjdCBfSU9f
bWFya2VyIHsNCiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0Ow0KICBzdHJ1Y3QgX0lPX0ZJTEUg
Kl9zYnVmOw0KICAgDQoNCiAgIA0KICBpbnQgX3BvczsNCiMgMTkwICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMw0KDQp9Ow0KDQogDQplbnVtIF9fY29kZWN2dF9yZXN1bHQNCnsNCiAgX19jb2RlY3Z0
X29rLA0KICBfX2NvZGVjdnRfcGFydGlhbCwNCiAgX19jb2RlY3Z0X2Vycm9yLA0KICBfX2NvZGVj
dnRfbm9jb252DQp9Ow0KDQojIDI2MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMNCg0KDQpzdHJ1
Y3QgX0lPX0ZJTEUgew0KICBpbnQgX2ZsYWdzOwkJIA0KDQoNCiAgIA0KICAgDQogIGNoYXIqIF9J
T19yZWFkX3B0cjsJIA0KICBjaGFyKiBfSU9fcmVhZF9lbmQ7CSANCiAgY2hhciogX0lPX3JlYWRf
YmFzZTsJIA0KICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIA0KICBjaGFyKiBfSU9fd3JpdGVfcHRy
OwkgDQogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSANCiAgY2hhciogX0lPX2J1Zl9iYXNlOwkgDQog
IGNoYXIqIF9JT19idWZfZW5kOwkgDQogICANCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsgIA0KICBj
aGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgDQogIGNoYXIgKl9JT19zYXZlX2VuZDsgIA0KDQogIHN0
cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsNCg0KICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsN
Cg0KICBpbnQgX2ZpbGVubzsNCiAgaW50IF9ibGtzaXplOw0KICBfX29mZl90ICAgX29sZF9vZmZz
ZXQ7ICANCg0KDQogICANCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47DQogIHNpZ25lZCBj
aGFyIF92dGFibGVfb2Zmc2V0Ow0KICBjaGFyIF9zaG9ydGJ1ZlsxXTsNCg0KICAgDQoNCiAgX0lP
X2xvY2tfdCAqX2xvY2s7DQoNCg0KDQoNCg0KDQoNCg0KICBfX29mZjY0X3QgICBfb2Zmc2V0Ow0K
DQoNCg0KDQoNCiAgdm9pZCAqX19wYWQxOw0KICB2b2lkICpfX3BhZDI7DQoNCiAgaW50IF9tb2Rl
Ow0KICAgDQogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2
b2lkICopXTsNCg0KfTsNCg0KDQoNCg0KDQpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsNCg0KZXh0ZXJu
IHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOw0KZXh0ZXJuIHN0cnVjdCBfSU9f
RklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsNCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBf
SU9fMl8xX3N0ZGVycl87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQogDQoNCnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOw0KDQogDQoNCg0KDQoNCg0KdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0
ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsDQoJCQkJIHNpemVfdCBf
X24pOw0KDQogDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nv
b2tpZSwgX19vZmY2NF90ICAgKl9fcG9zLCBpbnQgX193KTsNCg0KIA0KdHlwZWRlZiBpbnQgX19p
b19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOw0KDQoNCiMgMzkxICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMw0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCg0KDQpleHRlcm4gaW50IF9fdW5kZXJmbG93
IChfSU9fRklMRSAqKSB0aHJvdyAoKSA7DQpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICop
IHRocm93ICgpIDsNCmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJv
dyAoKSA7DQpleHRlcm4gd2ludF90ICAgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAo
KSA7DQpleHRlcm4gd2ludF90ICAgX193dWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpIDsNCmV4
dGVybiB3aW50X3QgICBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90ICApIHRocm93ICgp
IDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKSA7DQpleHRlcm4gaW50IF9J
T19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOw0KZXh0ZXJuIGludCBf
SU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpIDsNCmV4dGVybiBpbnQgX0lPX2ZlcnJv
ciAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpIDsNCg0KZXh0ZXJuIGludCBfSU9fcGVla2NfbG9j
a2VkIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCkgOw0KDQogDQoNCg0KDQpleHRlcm4gdm9pZCBf
SU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKSA7DQpleHRlcm4gdm9pZCBfSU9fZnVu
bG9ja2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgpIDsNCmV4dGVybiBpbnQgX0lPX2Z0cnlsb2Nr
ZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCkgOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0
IGNoYXIgKiBfX3Jlc3RyaWN0LA0KCQkJX19nbnVjX3ZhX2xpc3QgLCBpbnQgKl9fcmVzdHJpY3Qp
IHRocm93ICgpIDsNCmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmlj
dCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwNCgkJCSBfX2dudWNfdmFfbGlzdCApIHRocm93ICgp
IDsNCmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXpl
X3QgICkgdGhyb3cgKCkgOw0KZXh0ZXJuIHNpemVfdCAgIF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwg
dm9pZCAqLCBzaXplX3QgICkgdGhyb3cgKCkgOw0KDQpleHRlcm4gX19vZmY2NF90ICAgX0lPX3Nl
ZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCAgLCBpbnQsIGludCkgdGhyb3cgKCkgOw0KZXh0
ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50
KSB0aHJvdyAoKSA7DQoNCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklM
RSAqKSB0aHJvdyAoKSA7DQoNCiMgNTExICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMw0KDQoNCg0K
fQ0KDQoNCg0KIyAzNiAiL3Vzci9pbmNsdWRlL2crKy9zdHJlYW1idWYuaCIgMiAzDQoNCn0NCiAN
Cg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0K
DQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnZvaWQgdmFfZW5kIChf
X2dudWNfdmFfbGlzdCk7CQkgDQoNCg0KIA0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCiAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAxNzUgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1z
dXNlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzDQoNCg0KIA0KDQoNCg0KDQogDQoN
CiANCg0KIA0KDQp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDQwICIvdXNyL2luY2x1ZGUvZysr
L3N0cmVhbWJ1Zi5oIiAyIDMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDKysiIHsNCmNsYXNzIGlzdHJlYW07ICANCmNsYXNzIG9zdHJl
YW07IGNsYXNzIHN0cmVhbWJ1ZjsNCg0KIA0KDQoNCg0KDQp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0
cmVhbW9mZjsNCnR5cGVkZWYgX19vZmY2NF90ICAgc3RyZWFtcG9zOw0KDQoNCg0KDQp0eXBlZGVm
IF9fc3NpemVfdCAgIHN0cmVhbXNpemU7DQoNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2ZtdGZs
YWdzOw0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9faW9zdGF0ZTsNCg0Kc3RydWN0IF9pb3NfZmll
bGRzDQp7ICANCiAgICBzdHJlYW1idWYgKl9zdHJidWY7DQogICAgb3N0cmVhbSogX3RpZTsNCiAg
ICBpbnQgX3dpZHRoOw0KICAgIF9fZm10ZmxhZ3MgX2ZsYWdzOw0KICAgIHdjaGFyX3QgICBfZmls
bDsNCiAgICBfX2lvc3RhdGUgX3N0YXRlOw0KICAgIF9faW9zdGF0ZSBfZXhjZXB0aW9uczsNCiAg
ICBpbnQgX3ByZWNpc2lvbjsNCg0KICAgIHZvaWQgKl9hcnJheXM7ICANCn07DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojIDEyNCAiL3Vzci9pbmNsdWRlL2crKy9zdHJlYW1idWYuaCIg
Mw0KDQoNCmNsYXNzIGlvcyA6IHB1YmxpYyBfaW9zX2ZpZWxkcyB7DQogIGlvcyYgb3BlcmF0b3I9
KGlvcyYpOyAgIA0KICBpb3MgKGNvbnN0IGlvcyYpOyAgDQogIHB1YmxpYzoNCiAgICB0eXBlZGVm
IF9fZm10ZmxhZ3MgZm10ZmxhZ3M7DQogICAgdHlwZWRlZiBpbnQgaW9zdGF0ZTsNCiAgICB0eXBl
ZGVmIGludCBvcGVubW9kZTsNCiAgICB0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7DQog
ICAgZW51bSBpb19zdGF0ZSB7DQoJZ29vZGJpdCA9IDAgLA0KCWVvZmJpdCA9IDEgLA0KCWZhaWxi
aXQgPSAyICwNCgliYWRiaXQgPSA0ICB9Ow0KICAgIGVudW0gb3Blbl9tb2RlIHsNCglpbiA9IDEg
LA0KCW91dCA9IDIgLA0KCWF0ZSA9IDQgLA0KCWFwcCA9IDggLA0KCXRydW5jID0gMTYgLA0KCW5v
Y3JlYXRlID0gMzIgLA0KCW5vcmVwbGFjZSA9IDY0ICwNCgliaW4gPSAxMjggLCAgDQoJYmluYXJ5
ID0gMTI4ICB9Ow0KICAgIGVudW0gc2Vla19kaXIgeyBiZWcsIGN1ciwgZW5kfTsNCiAgICB0eXBl
ZGVmIGVudW0gc2Vla19kaXIgc2Vla2RpcjsNCiAgICAgDQogICAgZW51bSB7IHNraXB3cz0gMDEg
LA0KCSAgIGxlZnQ9IDAyICwgcmlnaHQ9IDA0ICwgaW50ZXJuYWw9IDAxMCAsDQoJICAgZGVjPSAw
MjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsDQoJICAgc2hvd2Jhc2U9IDAyMDAgLCBzaG93cG9p
bnQ9IDA0MDAgLA0KCSAgIHVwcGVyY2FzZT0gMDEwMDAgLCBzaG93cG9zPSAwMjAwMCAsDQoJICAg
c2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwNCgkgICB1bml0YnVmPSAwMjAwMDAg
LCBzdGRpbz0gMDQwMDAwIA0KDQoNCg0KCSAgIH07DQogICAgZW51bSB7ICANCgliYXNlZmllbGQ9
ZGVjK29jdCtoZXgsDQoJZmxvYXRmaWVsZCA9IHNjaWVudGlmaWMrZml4ZWQsDQoJYWRqdXN0Zmll
bGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsDQogICAgfTsNCg0KIyAxNzcgIi91c3IvaW5jbHVkZS9n
Kysvc3RyZWFtYnVmLmgiIDMNCg0KDQogICAgb3N0cmVhbSogdGllKCkgY29uc3QgeyByZXR1cm4g
X3RpZTsgfQ0KICAgIG9zdHJlYW0qIHRpZShvc3RyZWFtKiB2YWwpIHsgb3N0cmVhbSogc2F2ZT1f
dGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7IH0NCg0KICAgICANCiAgICB3Y2hhcl90ICAgZmls
bCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9DQogICAgd2NoYXJfdCAgIGZpbGwod2NoYXJfdCAg
IG5ld2YpDQoJe3djaGFyX3QgICBvbGRmID0gX2ZpbGw7IF9maWxsID0gbmV3ZjsgcmV0dXJuIG9s
ZGY7fQ0KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdzOyB9DQogICAg
Zm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3X3ZhbCkgew0KCWZtdGZsYWdzIG9sZF92YWwgPSBf
ZmxhZ3M7IF9mbGFncyA9IG5ld192YWw7IHJldHVybiBvbGRfdmFsOyB9DQogICAgaW50IHByZWNp
c2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0NCiAgICBpbnQgcHJlY2lzaW9uKGlu
dCBuZXdwKSB7DQoJdW5zaWduZWQgc2hvcnQgb2xkcCA9IF9wcmVjaXNpb247IF9wcmVjaXNpb24g
PSAodW5zaWduZWQgc2hvcnQpbmV3cDsNCglyZXR1cm4gb2xkcDsgfQ0KICAgIGZtdGZsYWdzIHNl
dGYoZm10ZmxhZ3MgdmFsKSB7DQoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsNCglfZmxhZ3Mg
fD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQ0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFs
LCBmbXRmbGFncyBtYXNrKSB7DQoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsNCglfZmxhZ3Mg
PSAoX2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQ0KICAg
IGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7DQoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9m
bGFnczsNCglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9DQogICAgaW50IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9DQogICAgaW50IHdpZHRoKGludCB2YWwpIHsgaW50
IHNhdmUgPSBfd2lkdGg7IF93aWR0aCA9IHZhbDsgcmV0dXJuIHNhdmU7IH0NCg0KDQoNCg0KICAg
IHZvaWQgX3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0NCg0KICAgIHZvaWQgY2xlYXIoaW9zdGF0
ZSBzdGF0ZSA9IDApIHsNCglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxiYWRiaXQ7
DQoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9DQogICAgdm9p
ZCBzZXQoaW9zdGF0ZSBmbGFnKSB7IF9zdGF0ZSB8PSBmbGFnOw0KCWlmIChfc3RhdGUgJiBfZXhj
ZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQ0KICAgIHZvaWQgc2V0c3RhdGUoaW9zdGF0ZSBm
bGFnKSB7IF9zdGF0ZSB8PSBmbGFnOyAgDQoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhy
b3dfZmFpbHVyZSgpOyB9DQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0g
MDsgfQ0KICAgIGludCBlb2YoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmVvZmJpdDsg
fQ0KICAgIGludCBmYWlsKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlv
czo6ZmFpbGJpdCk7IH0NCiAgICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9z
OjpiYWRiaXQ7IH0NCiAgICBpb3N0YXRlIHJkc3RhdGUoKSBjb25zdCB7IHJldHVybiBfc3RhdGU7
IH0NCiAgICBvcGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikw
IDogKHZvaWQqKSgtMSk7IH0NCiAgICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gZmFp
bCgpOyB9DQogICAgaW9zdGF0ZSBleGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4gX2V4Y2VwdGlv
bnM7IH0NCiAgICB2b2lkIGV4Y2VwdGlvbnMoaW9zdGF0ZSBlbmFibGUpIHsNCglfZXhjZXB0aW9u
cyA9IGVuYWJsZTsNCglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7
IH0NCg0KICAgIHN0cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9DQog
ICAgc3RyZWFtYnVmKiByZGJ1ZihzdHJlYW1idWYgKl9zKSB7DQogICAgICBzdHJlYW1idWYgKl9v
bGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFyICgpOyByZXR1cm4gX29sZDsgfQ0KDQog
ICAgc3RhdGljIGludCBzeW5jX3dpdGhfc3RkaW8oaW50IG9uKTsNCiAgICBzdGF0aWMgdm9pZCBz
eW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygxKTsgfQ0KICAgIHN0YXRpYyBmbXRm
bGFncyBiaXRhbGxvYygpOw0KICAgIHN0YXRpYyBpbnQgeGFsbG9jKCk7DQogICAgdm9pZComIHB3
b3JkKGludCk7DQogICAgdm9pZCogcHdvcmQoaW50KSBjb25zdDsNCiAgICBsb25nJiBpd29yZChp
bnQpOw0KICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAg
DQogICAgY2xhc3MgSW5pdCB7DQogICAgcHVibGljOg0KICAgICAgSW5pdCAoKSB7IH0NCiAgICB9
Ow0KDQogIHByb3RlY3RlZDoNCiAgICBpbmxpbmUgaW9zKHN0cmVhbWJ1Ziogc2IgPSAwLCBvc3Ry
ZWFtKiB0aWVfdG8gPSAwKTsNCiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7DQogICAgaW5saW5l
IHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAwKTsNCn07DQoNCg0KDQoN
CnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7DQoNCg0KIA0KIA0KIA0KIA0KIA0KDQog
DQogDQpjbGFzcyBzdHJlYW1tYXJrZXIgOiBwcml2YXRlIF9JT19tYXJrZXIgew0KICAgIGZyaWVu
ZCBjbGFzcyBzdHJlYW1idWY7DQogICAgdm9pZCBzZXRfb2Zmc2V0KGludCBvZmZzZXQpIHsgX3Bv
cyA9IG9mZnNldDsgfQ0KICBwdWJsaWM6DQogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAqc2Ip
Ow0KICAgIH5zdHJlYW1tYXJrZXIoKTsNCiAgICBpbnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0N
CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFya2VyJik7DQogICAgaW50IGRlbHRhKCk7DQp9Ow0KDQpz
dHJ1Y3Qgc3RyZWFtYnVmIDogcHVibGljIF9JT19GSUxFIHsgIA0KICAgIGZyaWVuZCBjbGFzcyBp
b3M7DQogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07DQogICAgZnJpZW5kIGNsYXNzIG9zdHJlYW07
DQogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsNCiAgICBjb25zdCB2b2lkIComX3Z0YWJs
ZSgpIHsgcmV0dXJuICooY29uc3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQ0KICBw
cm90ZWN0ZWQ6DQogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3RfYWxsOyAgDQogICAgX0lPX0ZJ
TEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0NCiAgICB2b2lkIF91bl9saW5rKCk7DQog
ICAgdm9pZCBfbGlua19pbigpOw0KICAgIGNoYXIqIGdwdHIoKSBjb25zdA0KICAgICAgeyByZXR1
cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9wdHI7IH0NCiAg
ICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsgfQ0KICAgIGNoYXIq
IGVncHRyKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2
ZV9lbmQgOiBfSU9fcmVhZF9lbmQ7IH0NCiAgICBjaGFyKiBlcHB0cigpIGNvbnN0IHsgcmV0dXJu
IF9JT193cml0ZV9lbmQ7IH0NCiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9JT193
cml0ZV9iYXNlOyB9DQogICAgY2hhciogZWJhY2soKSBjb25zdA0KICAgICAgeyByZXR1cm4gX2Zs
YWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30NCiAgICBjaGFy
KiBiYXNlKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9DQogICAgY2hhciogZWJ1Zigp
IGNvbnN0IHsgcmV0dXJuIF9JT19idWZfZW5kOyB9DQogICAgaW50IGJsZW4oKSBjb25zdCB7IHJl
dHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQ0KICAgIHZvaWQgeHB1dF9jaGFyKGNo
YXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0gYzsgfQ0KICAgIGludCB4ZmxhZ3MoKSB7IHJldHVy
biBfZmxhZ3MgOyB9DQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9m
bGFncyAgPSBmOyByZXR1cm4gZmw7fQ0KICAgIHZvaWQgeHNldGZsYWdzKGludCBmKSB7IF9mbGFn
cyAgfD0gZjsgfQ0KICAgIHZvaWQgeHNldGZsYWdzKGludCBmLCBpbnQgbWFzaykNCiAgICAgIHsg
X2ZsYWdzICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQ0KICAgIHZvaWQgZ2J1
bXAoaW50IG4pDQogICAgICB7IF9mbGFncyAgJiAweDEwMCAgPyAoX0lPX3NhdmVfYmFzZSs9bik6
KF9JT19yZWFkX3B0cis9bik7fQ0KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0
ciArPSBuOyB9DQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBpbnQgYT0wKTsNCiAg
ICB2b2lkIHNldHAoY2hhciogcCwgY2hhciogZXApDQogICAgICB7IF9JT193cml0ZV9iYXNlPV9J
T193cml0ZV9wdHI9cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQ0KICAgIHZvaWQgc2V0ZyhjaGFyKiBl
YiwgY2hhciogZywgY2hhciAqZWcpIHsNCiAgICAgIGlmIChfZmxhZ3MgICYgMHgxMDAgKSBfSU9f
ZnJlZV9iYWNrdXBfYXJlYSh0aGlzKTsgDQogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19y
ZWFkX3B0ciA9IGc7IF9JT19yZWFkX2VuZCA9IGVnOyB9DQogICAgY2hhciAqc2hvcnRidWYoKSB7
IHJldHVybiBfc2hvcnRidWY7IH0NCg0KICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxh
Z3MgJiAweDEwMCA7IH0NCiAgICAgDQogICAgY2hhciAqR2Jhc2UoKSB7IHJldHVybiBpbl9iYWNr
dXAoKSA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlOyB9DQogICAgIA0KICAgIGNoYXIg
KmVHcHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9l
bmQ7IH0NCiAgICAgDQogICAgY2hhciAqQmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9J
T19yZWFkX2Jhc2UgOiBfSU9fc2F2ZV9iYXNlOyB9DQogICAgY2hhciAqQnB0cigpIHsgcmV0dXJu
IF9JT19iYWNrdXBfYmFzZTsgfQ0KICAgICANCiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGlu
X2JhY2t1cCgpID8gX0lPX3JlYWRfZW5kIDogX0lPX3NhdmVfZW5kOyB9DQogICAgY2hhciAqTmJh
c2UoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9DQogICAgY2hhciAqZU5wdHIoKSB7IHJldHVy
biBfSU9fc2F2ZV9lbmQ7IH0NCiAgICBpbnQgaGF2ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2
ZV9iYXNlICE9IF9fbnVsbCA7IH0NCiAgICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21h
cmtlcnMgIT0gX19udWxsIDsgfQ0KICAgIHZvaWQgZnJlZV9iYWNrdXBfYXJlYSgpOw0KICAgIHZv
aWQgdW5zYXZlX21hcmtlcnMoKTsgIA0KICAgIGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFn
cyAmIDB4ODAwIDsgfQ0KICAgIGludCBzd2l0Y2hfdG9fZ2V0X21vZGUoKTsNCiAgICANCiAgICBz
dHJlYW1idWYoaW50IGZsYWdzPTApOw0KICBwdWJsaWM6DQogICAgc3RhdGljIGludCBmbHVzaF9h
bGwoKTsNCiAgICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxfbGluZWJ1ZmZlcmVkKCk7ICANCiAgICB2
aXJ0dWFsIH5zdHJlYW1idWYoKTsNCiAgICB2aXJ0dWFsIGludCBvdmVyZmxvdyhpbnQgYyA9ICgt
MSkgKTsgIA0KICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOyAgDQogICAgdmlydHVhbCBpbnQg
dWZsb3coKTsgIA0KICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQgYyk7DQogDQogICAgdmly
dHVhbCBzdHJlYW1zaXplIHhzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOw0KICAg
IHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6ZSBuKTsNCiAgICB2
aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1p
b3M6OmlufGlvczo6b3V0KTsNCiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrcG9zKHN0cmVhbXBv
cyBwb3MsIGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7DQoNCiAgICBzdHJlYW1wb3MgcHVi
c2Vla29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGlyIGQsIGludCBtb2RlPWlvczo6aW58aW9zOjpv
dXQpDQogICAgICB7IHJldHVybiBfSU9fc2Vla29mZiAodGhpcywgbywgZCwgbW9kZSk7IH0NCiAg
ICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58
aW9zOjpvdXQpDQogICAgICB7IHJldHVybiBfSU9fc2Vla3BvcyAodGhpcywgcG9zLCBtb2RlKTsg
fQ0KICAgIHN0cmVhbXBvcyBzc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9
aW9zOjppbnxpb3M6Om91dCk7DQogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBwb3Ms
IGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7DQogICAgdmlydHVhbCBzdHJlYW1idWYqIHNl
dGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsNCiAgICB2aXJ0dWFsIGludCBzeW5jKCk7DQogICAgdmly
dHVhbCBpbnQgZG9hbGxvY2F0ZSgpOw0KDQogICAgaW50IHNlZWttYXJrKHN0cmVhbW1hcmtlciYg
bWFyaywgaW50IGRlbHRhID0gMCk7DQogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOw0KICAgIGlu
dCBzdW5nZXRjKCk7DQogICAgaW50IHVuYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAyICA/
IDEgOiAwOyB9DQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAw
ICA/IDEgOiAwOyB9DQogICAgdm9pZCB1bmJ1ZmZlcmVkKGludCBpKQ0KCXsgaWYgKGkpIF9mbGFn
cyB8PSAyIDsgZWxzZSBfZmxhZ3MgJj0gfjIgOyB9DQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50
IGkpDQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsg
fQ0KICAgIGludCBhbGxvY2F0ZSgpIHsgIA0KCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSBy
ZXR1cm4gMDsNCgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0NCiAgICAgDQogICAgdm9pZCBh
bGxvY2J1ZigpIHsgaWYgKGJhc2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0NCiAgICB2
b2lkIGRvYWxsb2NidWYoKTsNCiAgICBpbnQgaW5fYXZhaWwoKSB7IHJldHVybiBfSU9fcmVhZF9l
bmQgLSBfSU9fcmVhZF9wdHI7IH0NCiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9f
d3JpdGVfcHRyIC0gX0lPX3dyaXRlX2Jhc2U7IH0NCiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0
IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9DQogICAgc3Ry
ZWFtc2l6ZSBwYWRuKGNoYXIgcGFkLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIF9JT19wYWRuKHRo
aXMsIHBhZCwgbik7IH0NCiAgICBzdHJlYW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUg
bikgeyByZXR1cm4gX0lPX3NnZXRuKHRoaXMsIHMsIG4pOyB9DQogICAgaW50IGlnbm9yZShpbnQp
Ow0KICAgIGludCBnZXRfY29sdW1uKCk7DQogICAgaW50IHNldF9jb2x1bW4oaW50KTsNCiAgICBs
b25nIHNnZXRsaW5lKGNoYXIqIGJ1Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1dGJh
Y2tfZGVsaW0pOw0KICAgIGludCBzcHV0YyhpbnQgYykgeyByZXR1cm4gX0lPX3B1dGMoYywgdGhp
cyk7IH0NCiAgICBpbnQgc2J1bXBjKCkgeyByZXR1cm4gX0lPX2dldGModGhpcyk7IH0NCiAgICBp
bnQgc2dldGMoKSB7IHJldHVybiAoKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMg
ICktPl9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0x
KSAgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9DQog
ICAgaW50IHNuZXh0YygpIHsNCglpZiAoX0lPX3JlYWRfcHRyID49IF9JT19yZWFkX2VuZCAmJiBf
X3VuZGVyZmxvdyh0aGlzKSA9PSAoLTEpICkNCgkgIHJldHVybiAoLTEpIDsNCgllbHNlIHJldHVy
biBfSU9fcmVhZF9wdHIrKywgc2dldGMoKTsgfQ0KICAgIHZvaWQgc3Rvc3NjKCkgeyBpZiAoX0lP
X3JlYWRfcHRyIDwgX0lPX3JlYWRfZW5kKSBfSU9fcmVhZF9wdHIrKzsgfQ0KICAgIGludCB2c2Nh
bihjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19u
dWxsICk7DQogICAgaW50IHNjYW4oY2hhciBjb25zdCAqZm10MCAuLi4pOw0KICAgIGludCB2Zm9y
bShjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXApOw0KICAgIGludCBmb3JtKGNo
YXIgY29uc3QgKmZtdDAgLi4uKTsNCg0KDQoNCg0KICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNf
cmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7DQogICAgdmlydHVhbCBzdHJlYW1zaXpl
IHN5c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7DQogICAgdmlydHVhbCBzdHJlYW1w
b3Mgc3lzX3NlZWsoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOw0KICAgIHZpcnR1YWwgaW50IHN5c19j
bG9zZSgpOw0KICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIA0KDQogICAgdmlydHVh
bCBpbnQgc2hvd21hbnljKCk7DQogICAgdmlydHVhbCB2b2lkIGltYnVlKHZvaWQgKik7DQoNCn07
DQoNCiANCiANCg0KY2xhc3MgZmlsZWJ1ZiA6IHB1YmxpYyBzdHJlYW1idWYgew0KICBwcm90ZWN0
ZWQ6DQogICAgdm9pZCBpbml0KCk7DQogIHB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3QgaW50IG9w
ZW5wcm90OyAgDQogICAgZmlsZWJ1ZigpOw0KICAgIGZpbGVidWYoaW50IGZkKTsNCiAgICBmaWxl
YnVmKGludCBmZCwgY2hhciogcCwgaW50IGxlbik7DQoNCg0KDQogICAgfmZpbGVidWYoKTsNCiAg
ICBmaWxlYnVmKiBhdHRhY2goaW50IGZkKTsNCiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIg
KmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKTsNCiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNo
YXIgKmZpbGVuYW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7DQogICAg
dmlydHVhbCBpbnQgdW5kZXJmbG93KCk7DQogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMg
PSAoLTEpICk7DQogICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7
IH0NCiAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBpc19vcGVuKCkgPyBfZmlsZW5vIDogKC0x
KSA7IH0NCiAgICBmaWxlYnVmKiBjbG9zZSgpOw0KICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUo
KTsNCiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBp
bnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsNCiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0YnVm
KGNoYXIqIHAsIGludCBsZW4pOw0KICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMs
IHN0cmVhbXNpemUgbik7DQogICAgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsNCiAgICB2aXJ0dWFsIGludCBzeW5jKCk7DQogIHByb3RlY3RlZDogIA0KIA0KICAgIGlu
dCBpc19yZWFkaW5nKCkgeyByZXR1cm4gZWJhY2soKSAhPSBlZ3B0cigpOyB9DQogICAgY2hhciog
Y3VyX3B0cigpIHsgcmV0dXJuIGlzX3JlYWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0NCiAg
ICAgDQogICAgY2hhciogZmlsZV9wdHIoKSB7IHJldHVybiBlR3B0cigpOyB9DQogICAgIA0KICAg
IHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7
DQogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3NlZWsoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOw0K
ICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3JpdGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUp
Ow0KICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIA0KICAgIHZpcnR1YWwgaW50IHN5
c19jbG9zZSgpOw0KDQoNCg0KDQp9Ow0KDQppbmxpbmUgdm9pZCBpb3M6OmluaXQoc3RyZWFtYnVm
KiBzYiwgb3N0cmVhbSogdGllX3RvKSB7DQoJCV9zdGF0ZSA9IHNiID8gaW9zOjpnb29kYml0IDog
aW9zOjpiYWRiaXQ7IF9leGNlcHRpb25zPTA7DQoJCV9zdHJidWY9c2I7IF90aWUgPSB0aWVfdG87
IF93aWR0aD0wOyBfZmlsbD0nICc7DQoNCgkJX2ZsYWdzPWlvczo6c2tpcHdzfGlvczo6ZGVjOw0K
DQoNCg0KCQlfcHJlY2lzaW9uPTY7IF9hcnJheXMgPSAwOyB9DQoNCmlubGluZSBpb3M6Omlvcyhz
dHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVfdG8pIHsgaW5pdChzYiwgdGllX3RvKTsgfQ0KDQpp
bmxpbmUgaW9zOjp+aW9zKCkgew0KDQoNCg0KICAgICANCiAgICAgDQogICAgb3BlcmF0b3IgZGVs
ZXRlW10gKF9hcnJheXMpOw0KfQ0KfSAgDQoNCiMgMzEgIi91c3IvaW5jbHVkZS9nKysvaW9zdHJl
YW0uaCIgMiAzDQoNCg0KZXh0ZXJuICJDKysiIHsNCmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJl
YW07DQp0eXBlZGVmIGlvcyYgKCpfX21hbmlwKShpb3MmKTsNCnR5cGVkZWYgaXN0cmVhbSYgKCpf
X2ltYW5pcCkoaXN0cmVhbSYpOw0KdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShvc3RyZWFt
Jik7DQoNCmV4dGVybiBpc3RyZWFtJiB3cyhpc3RyZWFtJiBpbnMpOw0KZXh0ZXJuIG9zdHJlYW0m
IGZsdXNoKG9zdHJlYW0mIG91dHMpOw0KZXh0ZXJuIG9zdHJlYW0mIGVuZGwob3N0cmVhbSYgb3V0
cyk7DQpleHRlcm4gb3N0cmVhbSYgZW5kcyhvc3RyZWFtJiBvdXRzKTsNCg0KY2xhc3Mgb3N0cmVh
bSA6IHZpcnR1YWwgcHVibGljIGlvcw0Kew0KICAgICANCiAgICB2b2lkIGRvX29zZngoKTsNCiAg
cHVibGljOg0KICAgIG9zdHJlYW0oKSB7IH0NCiAgICBvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9z
dHJlYW0qIHRpZWQ9IF9fbnVsbCApOw0KICAgIGludCBvcGZ4KCkgew0KCWlmICghZ29vZCgpKSBy
ZXR1cm4gMDsNCgllbHNlIHsgaWYgKF90aWUpIF90aWUtPmZsdXNoKCk7ICA7IHJldHVybiAxO30g
fQ0KICAgIHZvaWQgb3NmeCgpIHsgIDsNCgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRidWZ8
aW9zOjpzdGRpbykpDQoJCSAgICAgIGRvX29zZngoKTsgfQ0KICAgIG9zdHJlYW0mIGZsdXNoKCk7
DQogICAgb3N0cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0
aGlzOyB9DQoNCg0KDQoNCg0KICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMsIHN0cmVh
bXNpemUgbik7DQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgdW5zaWduZWQgY2hhciAqcywgc3Ry
ZWFtc2l6ZSBuKQ0KICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30NCiAg
ICBvc3RyZWFtJiB3cml0ZShjb25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQ0KICAg
ICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30NCiAgICBvc3RyZWFtJiB3cml0
ZShjb25zdCB2b2lkICpzLCBzdHJlYW1zaXplIG4pDQogICAgICB7IHJldHVybiB3cml0ZSgoY29u
c3QgY2hhciopcywgbik7fQ0KICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbXBvcyk7DQogICAgb3N0
cmVhbSYgc2Vla3Aoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOw0KICAgIHN0cmVhbXBvcyB0ZWxscCgp
Ow0KICAgIG9zdHJlYW0mIGZvcm0oY29uc3QgY2hhciAqZm9ybWF0IC4uLik7DQogICAgb3N0cmVh
bSYgdmZvcm0oY29uc3QgY2hhciAqZm9ybWF0LCBfX2dudWNfdmFfbGlzdCAgYXJncyk7DQoNCiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNoYXIgYyk7DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1
bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQ0KICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhcilj
OyB9DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyICpzKTsNCiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMpDQoJeyByZXR1cm4gKCp0aGlzKSA8
PCAoY29uc3QgY2hhciopczsgfQ0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVk
IGNoYXIgKnMpDQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQ0KICAgIG9z
dHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCAqcCk7DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChpbnQgbik7DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBpbnQgbik7DQogICAg
b3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIG4pOw0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgbG9uZyBuKTsNCg0KICAgIF9fZXh0ZW5zaW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8PChs
b25nIGxvbmcgbik7DQogICAgX19leHRlbnNpb25fXyBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2ln
bmVkIGxvbmcgbG9uZyBuKTsNCg0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2hvcnQgbikge3Jl
dHVybiBvcGVyYXRvcjw8KChpbnQpbik7fQ0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWdu
ZWQgc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KCh1bnNpZ25lZCBpbnQpbik7fQ0KDQogICAg
b3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIpIHsgcmV0dXJuIG9wZXJhdG9yPDwoKGludCliKTsg
fQ0KDQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChkb3VibGUgbik7DQogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0NCg0KICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBkb3VibGUgbik7DQoNCg0KDQogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQ0KICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwoX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVy
biAqdGhpczt9DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChzdHJlYW1idWYqKTsNCg0KDQoNCn07
DQoNCmNsYXNzIGlzdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MNCnsNCiAgICAgDQpwcm90ZWN0
ZWQ6DQogICAgc2l6ZV90ICAgX2djb3VudDsNCg0KICAgIGludCBfc2tpcF93cygpOw0KICBwdWJs
aWM6DQogICAgaXN0cmVhbSgpOiBfZ2NvdW50ICgwKSB7IH0NCiAgICBpc3RyZWFtKHN0cmVhbWJ1
Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7DQogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0
ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOw0KICAgIGlzdHJlYW0mIGdldCh1bnNpZ25l
ZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQ0KCXsgcmV0dXJuIGdldCgo
Y2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQ0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsNCiAg
ICBpc3RyZWFtJiBnZXQodW5zaWduZWQgY2hhciYgYykgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsg
fQ0KICAgIGlzdHJlYW0mIGdldGxpbmUoY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0g
J1xuJyk7DQogICAgaXN0cmVhbSYgZ2V0bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4s
IGNoYXIgZGVsaW0gPSAnXG4nKQ0KCXsgcmV0dXJuIGdldGxpbmUoKGNoYXIqKXB0ciwgbGVuLCBk
ZWxpbSk7IH0NCiAgICBpc3RyZWFtJiBnZXQoc2lnbmVkIGNoYXImIGMpICB7IHJldHVybiBnZXQo
KGNoYXImKWMpOyB9DQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4s
IGNoYXIgZGVsaW0gPSAnXG4nKQ0KCXsgcmV0dXJuIGdldCgoY2hhciopcHRyLCBsZW4sIGRlbGlt
KTsgfQ0KICAgIGlzdHJlYW0mIGdldGxpbmUoc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hh
ciBkZWxpbSA9ICdcbicpDQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGlt
KTsgfQ0KICAgIGlzdHJlYW0mIHJlYWQoY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pOw0KICAgIGlz
dHJlYW0mIHJlYWQodW5zaWduZWQgY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pDQogICAgICB7IHJl
dHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9DQogICAgaXN0cmVhbSYgcmVhZChzaWduZWQgY2hh
ciAqcHRyLCBzdHJlYW1zaXplIG4pDQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4p
OyB9DQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0cmVhbXNpemUgbikNCiAgICAgIHsg
cmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7IH0NCiAgICBpc3RyZWFtJiBnZXQoc3RyZWFtYnVm
JiBzYiwgY2hhciBkZWxpbSA9ICdcbicpOw0KICAgIGlzdHJlYW0mIGdldHMoY2hhciAqKnMsIGNo
YXIgZGVsaW0gPSAnXG4nKTsNCiAgICBpbnQgaXBmeChpbnQgbmVlZCA9IDApIHsNCglpZiAoIWdv
b2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0NCgllbHNlIHsNCgkgICA7DQoJ
ICBpZiAoX3RpZSAmJiAobmVlZCA9PSAwIHx8IHJkYnVmKCktPmluX2F2YWlsKCkgPCBuZWVkKSkg
X3RpZS0+Zmx1c2goKTsNCgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSkg
cmV0dXJuIF9za2lwX3dzKCk7DQoJICBlbHNlIHJldHVybiAxOw0KCX0NCiAgICB9DQogICAgaW50
IGlwZngwKCkgeyAgDQoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAw
OyB9DQoJZWxzZSB7DQoJICAgOw0KCSAgaWYgKF90aWUpIF90aWUtPmZsdXNoKCk7DQoJICBpZiAo
ZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsNCgkgIGVsc2UgcmV0dXJu
IDE7DQoJfQ0KICAgIH0NCiAgICBpbnQgaXBmeDEoKSB7ICANCglpZiAoIWdvb2QoKSkgeyBzZXQo
aW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0NCgllbHNlIHsNCgkgICA7DQoJICBpZiAoX3RpZSAm
JiByZGJ1ZigpLT5pbl9hdmFpbCgpID09IDApIF90aWUtPmZsdXNoKCk7DQoJICByZXR1cm4gMTsN
Cgl9DQogICAgfQ0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQ0KICAgIGludCBnZXQoKSB7IGlmICgh
aXBmeDEoKSkgcmV0dXJuICgtMSkgOw0KCQllbHNlIHsgaW50IGNoID0gX3N0cmJ1Zi0+c2J1bXBj
KCk7DQoJCSAgICAgICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7DQoJCSAgICAg
ICBpc2Z4KCk7DQoJCSAgICAgICByZXR1cm4gY2g7DQoJCSAgICAgfSB9DQogICAgaW50IHBlZWso
KTsNCiAgICBzaXplX3QgICBnY291bnQoKSB7IHJldHVybiBfZ2NvdW50OyB9DQogICAgaXN0cmVh
bSYgaWdub3JlKGludCBuPTEsIGludCBkZWxpbSA9ICgtMSkgKTsNCiAgICBpbnQgc3luYyAoKTsN
CiAgICBpc3RyZWFtJiBzZWVrZyhzdHJlYW1wb3MpOw0KICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVh
bW9mZiwgX3NlZWtfZGlyKTsNCiAgICBzdHJlYW1wb3MgdGVsbGcoKTsNCiAgICBpc3RyZWFtJiBw
dXRiYWNrKGNoYXIgY2gpIHsNCglpZiAoZ29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkg
PT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0KTsNCglyZXR1cm4gKnRoaXM7fQ0KICAgIGlzdHJl
YW0mIHVuZ2V0KCkgew0KCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkg
KSBjbGVhcihpb3M6OmJhZGJpdCk7DQoJcmV0dXJuICp0aGlzO30NCiAgICBpc3RyZWFtJiBzY2Fu
KGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOw0KICAgIGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIg
KmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOw0KDQoNCg0KDQoNCg0KICAgIGlzdHJlYW0m
IG9wZXJhdG9yPj4oY2hhciopOw0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgY2hh
ciogcCkgeyByZXR1cm4gb3BlcmF0b3I+PigoY2hhciopcCk7IH0NCiAgICBpc3RyZWFtJiBvcGVy
YXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9DQog
ICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsNCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+
KHVuc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7fQ0KICAgIGlz
dHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+PigoY2hh
ciYpYyk7fQ0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50Jik7DQogICAgaXN0cmVhbSYgb3Bl
cmF0b3I+Pihsb25nJik7DQoNCiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4o
bG9uZyBsb25nJik7DQogICAgX19leHRlbnNpb25fXyBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2ln
bmVkIGxvbmcgbG9uZyYpOw0KDQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaG9ydCYpOw0KICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgaW50Jik7DQogICAgaXN0cmVhbSYgb3BlcmF0
b3I+Pih1bnNpZ25lZCBsb25nJik7DQogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBz
aG9ydCYpOw0KDQogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7DQoNCiAgICBpc3RyZWFt
JiBvcGVyYXRvcj4+KGZsb2F0Jik7DQogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUmKTsN
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJik7DQogICAgaXN0cmVhbSYgb3Bl
cmF0b3I+PiggX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9DQog
ICAgaXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0
aGlzKTsgfQ0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7DQp9Ow0KDQpjbGFz
cyBpb3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtLCBwdWJsaWMgb3N0cmVhbQ0Kew0KICBwdWJsaWM6
DQogICAgaW9zdHJlYW0oKSB7IH0NCiAgICBpb3N0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFt
KnRpZWQ9IF9fbnVsbCApOw0KfTsNCg0KY2xhc3MgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiA6IHB1
YmxpYyBpc3RyZWFtIHsNCnB1YmxpYzoNCiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0
b3I9KGlzdHJlYW0mKTsNCiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19p
c3RyZWFtX3dpdGhhc3NpZ24mIHJocykNCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19j
YXN0PGlzdHJlYW0mPiAocmhzKSk7IH0NCn07DQoNCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3Np
Z24gOiBwdWJsaWMgb3N0cmVhbSB7DQpwdWJsaWM6DQogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24m
IG9wZXJhdG9yPShvc3RyZWFtJik7DQogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9y
PShfSU9fb3N0cmVhbV93aXRoYXNzaWduJiByaHMpDQogICAgeyByZXR1cm4gb3BlcmF0b3I9IChz
dGF0aWNfY2FzdDxvc3RyZWFtJj4gKHJocykpOyB9DQp9Ow0KDQpleHRlcm4gX0lPX2lzdHJlYW1f
d2l0aGFzc2lnbiBjaW47DQogDQpleHRlcm4gX0lPX29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBj
ZXJyOw0KDQpleHRlcm4gX0lPX29zdHJlYW1fd2l0aGFzc2lnbiBjbG9nDQoNCg0KDQo7DQoNCmV4
dGVybiBpc3RyZWFtJiBsb2NrKGlzdHJlYW0mIGlucyk7DQpleHRlcm4gaXN0cmVhbSYgdW5sb2Nr
KGlzdHJlYW0mIGlucyk7DQpleHRlcm4gb3N0cmVhbSYgbG9jayhvc3RyZWFtJiBvdXRzKTsNCmV4
dGVybiBvc3RyZWFtJiB1bmxvY2sob3N0cmVhbSYgb3V0cyk7DQoNCnN0cnVjdCBJb3N0cmVhbV9p
bml0IHsgfSA7ICAgDQoNCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpDQp7IGkuc2V0Zihpb3M6OmRl
YywgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQ0KaW5saW5lIGlvcyYg
aGV4KGlvcyYgaSkNCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9j
dCk7IHJldHVybiBpOyB9DQppbmxpbmUgaW9zJiBvY3QoaW9zJiBpKQ0KeyBpLnNldGYoaW9zOjpv
Y3QsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7IH0NCn0gIA0KDQoNCiMg
NiAiL3Vzci9pbmNsdWRlL2crKy9pb3N0cmVhbSIgMiAzDQoNCg0KIyAxICJzZXR3LnRlc3QuY2Mi
IDINCg0KIyAxICIvdXNyL2luY2x1ZGUvZysrL2lvbWFuaXAiIDEgMw0KIA0KIA0KDQoNCg0KIyAx
ICIvdXNyL2luY2x1ZGUvZysrL2lvbWFuaXAuaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgaW50ZXJmYWNlDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDKysiIHsNCiANCiANCiANCg0KIA0KIA0KIA0KIA0KdGVtcGxhdGU8Y2xhc3Mg
VFA+IGNsYXNzIHNtYW5pcDsgIA0KDQp0ZW1wbGF0ZTxjbGFzcyBUUD4gY2xhc3Mgc2FwcCB7DQog
ICAgaW9zJiAoKl9mKShpb3MmLCBUUCk7DQpwdWJsaWM6IA0KICAgIHNhcHAoaW9zJiAoKmYpKGlv
cyYsIFRQKSkgOiBfZihmKSB7fQ0KICAgICANCiAgICBzbWFuaXA8VFA+IG9wZXJhdG9yKCkoVFAg
YSkgDQogICAgICB7IHJldHVybiBzbWFuaXA8VFA+KF9mLCBhKTsgfQ0KfTsNCg0KdGVtcGxhdGU8
Y2xhc3MgVFA+DQppbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBpLCBjb25zdCBz
bWFuaXA8VFA+JiBtKTsNCnRlbXBsYXRlPGNsYXNzIFRQPg0KaW5saW5lIG9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYgbywgY29uc3Qgc21hbmlwPFRQPiYgbSk7DQoNCnRlbXBsYXRlIDxjbGFz
cyBUUD4gY2xhc3Mgc21hbmlwIHsNCiAgICBpb3MmICgqX2YpKGlvcyYsIFRQKTsNCiAgICBUUCBf
YTsNCnB1YmxpYzoNCiAgICBzbWFuaXAoaW9zJiAoKmYpKGlvcyYsIFRQKSwgVFAgYSkgOiBfZihm
KSwgX2EoYSkge30NCiAgICAgDQogICAgZnJpZW5kIA0KICAgICAgaXN0cmVhbSYgb3BlcmF0b3I+
PiA8Pihpc3RyZWFtJiBpLCBjb25zdCBzbWFuaXA8VFA+JiBtKTsNCiAgICBmcmllbmQNCiAgICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwgPD4ob3N0cmVhbSYgbywgY29uc3Qgc21hbmlwPFRQPiYgbSk7
DQp9Ow0KDQoNCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIHNtYW5pcDxpbnQ+
Ow0KX19leHRlbnNpb25fXyBleHRlcm4gdGVtcGxhdGUgY2xhc3Mgc21hbmlwPGlvczo6Zm10Zmxh
Z3M+Ow0KDQoNCnRlbXBsYXRlPGNsYXNzIFRQPg0KaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4o
aXN0cmVhbSYgaSwgY29uc3Qgc21hbmlwPFRQPiYgbSkNCnsgKCptLl9mKShpLCBtLl9hKTsgcmV0
dXJuIGk7IH0NCg0KdGVtcGxhdGU8Y2xhc3MgVFA+DQppbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8
PChvc3RyZWFtJiBvLCBjb25zdCBzbWFuaXA8VFA+JiBtKQ0KeyAoKm0uX2YpKG8sIG0uX2EpOyBy
ZXR1cm4gbzt9DQoNCg0KX19leHRlbnNpb25fXyBleHRlcm4gDQp0ZW1wbGF0ZSBpc3RyZWFtJiBv
cGVyYXRvcj4+KGlzdHJlYW0mLCBjb25zdCBzbWFuaXA8aW50PiYpOw0KX19leHRlbnNpb25fXyBl
eHRlcm4gDQp0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBjb25zdCBzbWFu
aXA8aW9zOjpmbXRmbGFncz4mKTsNCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIA0KdGVtcGxhdGUgb3N0
cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3Qgc21hbmlwPGludD4mKTsNCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIA0KdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29u
c3Qgc21hbmlwPGlvczo6Zm10ZmxhZ3M+Jik7DQoNCg0KIA0KIA0KIA0KIA0KdGVtcGxhdGU8Y2xh
c3MgVFA+IGNsYXNzIGltYW5pcDsgDQoNCnRlbXBsYXRlPGNsYXNzIFRQPiBjbGFzcyBpYXBwIHsN
CiAgICBpc3RyZWFtJiAoKl9mKShpc3RyZWFtJiwgVFApOw0KcHVibGljOiANCiAgICBpYXBwKGlz
dHJlYW0mICgqZikoaXN0cmVhbSYsVFApKSA6IF9mKGYpIHt9DQogICAgIA0KICAgIGltYW5pcDxU
UD4gb3BlcmF0b3IoKShUUCBhKQ0KICAgICAgIHsgcmV0dXJuIGltYW5pcDxUUD4oX2YsIGEpOyB9
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVFA+DQppbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+Pihp
c3RyZWFtJiwgY29uc3QgaW1hbmlwPFRQPiYpOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVFA+IGNsYXNz
IGltYW5pcCB7DQogICAgaXN0cmVhbSYgKCpfZikoaXN0cmVhbSYsIFRQKTsNCiAgICBUUCBfYTsN
CnB1YmxpYzoNCiAgICBpbWFuaXAoaXN0cmVhbSYgKCpmKShpc3RyZWFtJiwgVFApLCBUUCBhKSA6
IF9mKGYpLCBfYShhKSB7fQ0KICAgICANCiAgICBmcmllbmQNCiAgICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4gPD4oaXN0cmVhbSYgaSwgY29uc3QgaW1hbmlwPFRQPiYgbSk7DQp9Ow0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgVFA+DQppbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBpLCBjb25z
dCBpbWFuaXA8VFA+JiBtKQ0KeyByZXR1cm4gKCptLl9mKSggaSwgbS5fYSk7IH0NCg0KIA0KIA0K
IA0KIA0KdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIG9tYW5pcDsgDQoNCnRlbXBsYXRlPGNsYXNz
IFRQPiBjbGFzcyBvYXBwIHsNCiAgICBvc3RyZWFtJiAoKl9mKShvc3RyZWFtJiwgVFApOw0KcHVi
bGljOiANCiAgICBvYXBwKG9zdHJlYW0mICgqZikob3N0cmVhbSYsVFApKSA6IF9mKGYpIHt9DQog
ICAgIA0KICAgIG9tYW5pcDxUUD4gb3BlcmF0b3IoKShUUCBhKQ0KICAgICAgeyByZXR1cm4gb21h
bmlwPFRQPihfZiwgYSk7IH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBUUD4NCmlubGluZSBvc3Ry
ZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25zdCBvbWFuaXA8VFA+Jik7DQoNCnRlbXBsYXRl
IDxjbGFzcyBUUD4gY2xhc3Mgb21hbmlwIHsNCiAgICBvc3RyZWFtJiAoKl9mKShvc3RyZWFtJiwg
VFApOw0KICAgIFRQIF9hOw0KcHVibGljOg0KICAgIG9tYW5pcChvc3RyZWFtJiAoKmYpKG9zdHJl
YW0mLCBUUCksIFRQIGEpIDogX2YoZiksIF9hKGEpIHt9DQogICAgIA0KICAgIGZyaWVuZA0KICAg
ICAgb3N0cmVhbSYgb3BlcmF0b3I8PCA8Pihvc3RyZWFtJiBvLCBjb25zdCBvbWFuaXA8VFA+JiBt
KTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBUUD4NCmlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8
KG9zdHJlYW0mIG8sIGNvbnN0IG9tYW5pcDxUUD4mIG0pDQp7IHJldHVybiAoKm0uX2YpKG8sIG0u
X2EpOyB9DQoNCiANCiANCiANCg0KIA0KIA0KIA0KIA0KDQoNCg0KDQoNCmV4dGVybiBpb3MmIF9f
aW9tYW5pcF9zZXRiYXNlICAoaW9zJiwgICBpbnQgKTsgaW5saW5lICAgc21hbmlwIDwgIGludCA+
ICAgc2V0YmFzZSAgKCAgaW50ICBuKSB7IHJldHVybiAgIHNtYW5pcCA8ICBpbnQgPiAoX19pb21h
bmlwX3NldGJhc2UgLCBuKTsgfSANCmV4dGVybiBpb3MmIF9faW9tYW5pcF9zZXRmaWxsICAoaW9z
JiwgICBpbnQgKTsgaW5saW5lICAgc21hbmlwIDwgIGludCA+ICAgc2V0ZmlsbCAgKCAgaW50ICBu
KSB7IHJldHVybiAgIHNtYW5pcCA8ICBpbnQgPiAoX19pb21hbmlwX3NldGZpbGwgLCBuKTsgfSAN
CmV4dGVybiBpb3MmIF9faW9tYW5pcF9zZXRwcmVjaXNpb24gIChpb3MmLCAgIGludCApOyBpbmxp
bmUgICBzbWFuaXAgPCAgaW50ID4gICBzZXRwcmVjaXNpb24gICggIGludCAgbikgeyByZXR1cm4g
ICBzbWFuaXAgPCAgaW50ID4gKF9faW9tYW5pcF9zZXRwcmVjaXNpb24gLCBuKTsgfSANCmV4dGVy
biBpb3MmIF9faW9tYW5pcF9zZXR3ICAoaW9zJiwgICBpbnQgKTsgaW5saW5lICAgc21hbmlwIDwg
IGludCA+ICAgc2V0dyAgKCAgaW50ICBuKSB7IHJldHVybiAgIHNtYW5pcCA8ICBpbnQgPiAoX19p
b21hbmlwX3NldHcgLCBuKTsgfSANCg0KZXh0ZXJuIGlvcyYgX19pb21hbmlwX3Jlc2V0aW9zZmxh
Z3MgIChpb3MmLCAgIGlvczo6Zm10ZmxhZ3MgKTsgaW5saW5lICAgc21hbmlwIDwgIGlvczo6Zm10
ZmxhZ3MgPiAgIHJlc2V0aW9zZmxhZ3MgICggIGlvczo6Zm10ZmxhZ3MgIG4pIHsgcmV0dXJuICAg
c21hbmlwIDwgIGlvczo6Zm10ZmxhZ3MgPiAoX19pb21hbmlwX3Jlc2V0aW9zZmxhZ3MgLCBuKTsg
fSANCmV4dGVybiBpb3MmIF9faW9tYW5pcF9zZXRpb3NmbGFncyAgKGlvcyYsICAgaW9zOjpmbXRm
bGFncyApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW9zOjpmbXRmbGFncyA+ICAgc2V0aW9zZmxhZ3Mg
ICggIGlvczo6Zm10ZmxhZ3MgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGlvczo6Zm10ZmxhZ3Mg
PiAoX19pb21hbmlwX3NldGlvc2ZsYWdzICwgbik7IH0gDQp9ICANCg0KDQojIDYgIi91c3IvaW5j
bHVkZS9nKysvaW9tYW5pcCIgMiAzDQoNCg0KIyAyICJzZXR3LnRlc3QuY2MiIDINCg0KDQppbnQg
bWFpbiAoKSB7DQogIGNvdXQgPDwgc2V0dyg0KSA8PCAxLiA8PCBlbmRsOw0KDQogIHJldHVybiAw
Ow0KfQ0K


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

end of thread, other threads:[~2001-11-21  2:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-15 13:36 c++/4064: floats and doubles produce wrong output on cout when formatted with setw() rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-11-15 16:56 rodrigc
2001-08-20 22:42 rodrigc
2001-08-20  9:16 paul_hodor

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