public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: paul_hodor@merck.com To: gcc-gnats@gcc.gnu.org Subject: c++/4064: floats and doubles produce wrong output on cout when formatted with setw() Date: Mon, 20 Aug 2001 09:16:00 -0000 [thread overview] Message-ID: <20010820161029.19403.qmail@sourceware.cygnus.com> (raw) >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
next reply other threads:[~2001-08-20 9:16 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2001-08-20 9:16 paul_hodor [this message] 2001-08-20 22:42 rodrigc 2001-11-15 13:36 rodrigc 2001-11-15 16:56 rodrigc
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20010820161029.19403.qmail@sourceware.cygnus.com \ --to=paul_hodor@merck.com \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).