This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
>Number: 5203 >Category: c >Synopsis: initializer element is not constant >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 27 02:26:00 PST 2001 >Closed-Date: >Last-Modified: >Originator: georg.wild@gmx.de >Release: latest cvs >Organization: >Environment: glibc-2.2.90 i686-pc-linux-gnu >Description: I don't exactly know whether this is really a bug! It might also be possible that this is only because of less error tolerance. When I compile the attachment with gcc 3.0.1 it works, with current cvs I got errors in the following manor: libsmb/errormap.c:1357: initializer element is not constant libsmb/errormap.c:1357: (near initialization for `ntstatus_to_werror_map[531]') >How-To-Repeat: gcc errormap.i >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="errormap.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="errormap.i" IyAxICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxp bmU+IgojIDEgImxpYnNtYi9lcnJvcm1hcC5jIgojIDIyICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAx ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDEKIyAyNSAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgImlu Y2x1ZGUvY29uZmlnLmgiIDEKIyAyNiAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICJpbmNs dWRlL2xvY2FsLmgiIDEKIyAyOSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgNzYgImluY2x1ZGUv aW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2 ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIg MwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2xv Y2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzIwICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVh dHVyZXMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzIx ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91c3IvbG9jYWwvaW5j bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlw ZXMuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAxICIv dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl L3N0ZGRlZi5oIiAxIDMKIyAyMDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQg c2l6ZV90OwojIDMwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBl ZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3No b3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg X191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf X3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsK IyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBj aGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNp Z25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3Vp bnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50 IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg X191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1 YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9f Z2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90 Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5 cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50 IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90 IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsK ICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsK dHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25k c190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9j a190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsK CgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf X2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYg bG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlw ZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250 NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90 IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRl ZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2lu dHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp dHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMK c3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9Owoj IDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0 IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9j azsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRf ZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0 YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0 CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3Ig X19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQg X19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRo cmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBp bnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7 CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsK CgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0 cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9w dGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOwog IGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0aHJl YWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZV93 YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFkX3J3 bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNo YXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50IHB0 aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFkX2Zh c3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVzZW50 OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCgp0 eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7 CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2xv Y2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5 cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3No b3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xv bmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7 CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoK CgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90 OwoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190 OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKdHlwZWRlZiBfX29mZjY0X3Qgb2Zm X3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBp ZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXpl X3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2Fk ZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1 OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190 OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX190aW1lX3QgdGlt ZV90OwojIDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lk X3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYg X190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDIgMwoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3Vz ZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91 c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIg Mwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7 CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7 CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7 CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7 CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f IChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9f ICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9f YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1 X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGlu dCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEy ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAx ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvbG9jYWwv aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjEzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEg Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0 LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIz ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGludCBfX3NpZ19h dG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192 YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdz ZXRfdDsKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVk ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1l LmgiIDEgMwojIDEwNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNw ZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMg NDUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90 aW1lLmgiIDMKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1 c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxl Y3QuaCIgMiAzCiMgNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRl ZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9f ZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgog IH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDk1ICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50 IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAg IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0 ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2 YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQg X19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAg IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3Nl dCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNv bnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMjE2ICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5 cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CiMgMjQzICIvdXNyL2xvY2Fs L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoK CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250 NjRfdCBmc2ZpbGNudF90OwoKCgoKCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7CnR5 cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxjbnQ2NF90 IGZzZmlsY250NjRfdDsKCgoKIyA3NyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9z eXMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMjcgIi91 c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl L2JpdHMvdGltZS5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90aW1lLmgiIDIg MwojIDM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoKIyA1NiAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RydWN0IHRpbWV6b25lCiAgewogICAgaW50IHR6X21p bnV0ZXN3ZXN0OwogICAgaW50IHR6X2RzdHRpbWU7CiAgfTsKCnR5cGVkZWYgc3RydWN0IHRpbWV6 b25lICpfX3Jlc3RyaWN0IF9fdGltZXpvbmVfcHRyX3Q7CiMgNzIgIi91c3IvbG9jYWwvaW5jbHVk ZS9zeXMvdGltZS5oIiAzCmV4dGVybiBpbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAq X19yZXN0cmljdCBfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX190aW1lem9uZV9wdHJf dCBfX3R6KSA7CgoKCgpleHRlcm4gaW50IHNldHRpbWVvZmRheSAoX19jb25zdCBzdHJ1Y3QgdGlt ZXZhbCAqX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWV6 b25lICpfX3R6KSA7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1l dmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRl bHRhKSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAgIElUSU1FUl9SRUFMID0gMCwK CgogICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgoK CnN0cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7Cgog ICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgoKCnR5cGVkZWYgZW51bSBfX2l0aW1l cl93aGljaCBfX2l0aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4gaW50IGdldGl0aW1lciAoX19p dGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1l cnZhbCAqX192YWx1ZSkgOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVyX3doaWNo X3QgX193aGljaCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZh bCAqX19yZXN0cmljdCBfX25ldywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2 YWwgKl9fcmVzdHJpY3QgX19vbGQpIDsKCgoKZXh0ZXJuIGludCB1dGltZXMgKF9fY29uc3QgY2hh ciAqX19maWxlLCBfX2NvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKQogICAgIDsKIyAxNzEg Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgojIDgwICJpbmNsdWRlL2luY2x1ZGVz LmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMCAiL3Vzci9sb2Nh bC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzkgIi91 c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9i aXRzL3RpbWUuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwojIDEx OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7 CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9u OwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9p c2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoK Cgp9OwoKCgoKc3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50 ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZl bnQ7CiMgMTYzICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNs b2NrICh2b2lkKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpl eHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChz dHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfX3Jl c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBf X2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqc3Ry cHRpbWUgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAg ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAg OwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIp IDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1l cikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jl c3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9f cmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19jb25z dCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqYXNjdGlt ZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29u c3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29u c3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNo YXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0 aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f cmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGlu dCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFy ICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQg ZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1l IChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMjcxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGlt ZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4g dGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUg KGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50 IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4 dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVz cGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGlt ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQog ICAgIDsKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lk LCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1l c3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBpZF90IF9f cGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVybiBpbnQgdGltZXJfY3JlYXRl IChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz aWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVy X3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRp bWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9f dGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBz dHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSA7CgoKZXh0ZXJu IGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMg Kl9fdmFsdWUpCiAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1biAodGltZXJfdCBf X3RpbWVyaWQpIDsKIyAzNDIgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGlu dCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChfX2NvbnN0IGNo YXIgKl9fc3RyaW5nKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVy biBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7CgoKCgoj IDgxICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyA5MCAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEg Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwv aW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Jl c291cmNlLmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAz CmVudW0gX19ybGltaXRfcmVzb3VyY2UKewoKICBSTElNSVRfQ1BVID0gMCwKCgoKICBSTElNSVRf RlNJWkUgPSAxLAoKCgogIFJMSU1JVF9EQVRBID0gMiwKCgoKICBSTElNSVRfU1RBQ0sgPSAzLAoK CgogIFJMSU1JVF9DT1JFID0gNCwKCgoKCgoKICBSTElNSVRfUlNTID0gNSwKCgoKICBSTElNSVRf Tk9GSUxFID0gNywKICBSTElNSVRfT0ZJTEUgPSBSTElNSVRfTk9GSUxFLAoKCgoKICBSTElNSVRf QVMgPSA5LAoKCgogIFJMSU1JVF9OUFJPQyA9IDYsCgoKCiAgUkxJTUlUX01FTUxPQ0sgPSA4LAoK CgogIFJMSU1JVF9MT0NLUyA9IDEwLAoKCiAgUkxJTUlUX05MSU1JVFMgPSAxMSwKICBSTElNX05M SU1JVFMgPSBSTElNSVRfTkxJTUlUUwoKCn07CiMgMTA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy9yZXNvdXJjZS5oIiAzCnR5cGVkZWYgX19ybGltNjRfdCBybGltX3Q7CgoKdHlwZWRlZiBfX3Js aW02NF90IHJsaW02NF90OwoKCnN0cnVjdCBybGltaXQKICB7CgogICAgcmxpbV90IHJsaW1fY3Vy OwoKICAgIHJsaW1fdCBybGltX21heDsKICB9OwoKCnN0cnVjdCBybGltaXQ2NAogIHsKCiAgICBy bGltNjRfdCBybGltX2N1cjsKCiAgICBybGltNjRfdCBybGltX21heDsKIH07CgoKCmVudW0gX19y dXNhZ2Vfd2hvCnsKCiAgUlVTQUdFX1NFTEYgPSAwLAoKCgogIFJVU0FHRV9DSElMRFJFTiA9IC0x LAoKCgogIFJVU0FHRV9CT1RIID0gLTIKCn07CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy90aW1lLmgiIDEgMwojIDE1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIg MiAzCgoKc3RydWN0IHJ1c2FnZQogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKCiAg ICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICBsb25nIGludCBydV9tYXhyc3M7CgoKICAg IGxvbmcgaW50IHJ1X2l4cnNzOwoKICAgIGxvbmcgaW50IHJ1X2lkcnNzOwoKICAgIGxvbmcgaW50 IHJ1X2lzcnNzOwoKCiAgICBsb25nIGludCBydV9taW5mbHQ7CgogICAgbG9uZyBpbnQgcnVfbWFq Zmx0OwoKICAgIGxvbmcgaW50IHJ1X25zd2FwOwoKCiAgICBsb25nIGludCBydV9pbmJsb2NrOwoK ICAgIGxvbmcgaW50IHJ1X291YmxvY2s7CgogICAgbG9uZyBpbnQgcnVfbXNnc25kOwoKICAgIGxv bmcgaW50IHJ1X21zZ3JjdjsKCiAgICBsb25nIGludCBydV9uc2lnbmFsczsKCgoKICAgIGxvbmcg aW50IHJ1X252Y3N3OwoKCiAgICBsb25nIGludCBydV9uaXZjc3c7CiAgfTsKCgoKCgoKCmVudW0g X19wcmlvcml0eV93aGljaAp7CiAgUFJJT19QUk9DRVNTID0gMCwKCiAgUFJJT19QR1JQID0gMSwK CiAgUFJJT19VU0VSID0gMgoKfTsKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9yZXNvdXJj ZS5oIiAyIDMKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSBfX3JsaW1pdF9yZXNvdXJjZSBfX3Js aW1pdF9yZXNvdXJjZV90Owp0eXBlZGVmIGVudW0gX19ydXNhZ2Vfd2hvIF9fcnVzYWdlX3dob190 Owp0eXBlZGVmIGVudW0gX19wcmlvcml0eV93aGljaCBfX3ByaW9yaXR5X3doaWNoX3Q7CiMgNTUg Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwpleHRlcm4gaW50IGdldHJsaW1p dCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1p dHMpIF9fYXNtX18gKCIiICJnZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRybGlt aXQ2NCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcmxpbWl0NjQgKl9fcmxpbWl0cykgOwojIDc1ICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGludCBzZXRybGltaXQgKF9fcmxpbWl0X3Jlc291 cmNlX3QgX19yZXNvdXJjZSwgX19jb25zdCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIF9fYXNt X18gKCIiICJzZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NCAoX19y bGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IHN0cnVjdCBybGltaXQ2NCAqX19ybGltaXRzKSA7CgoKCgpleHRlcm4gaW50IGdldHJ1c2Fn ZSAoX19ydXNhZ2Vfd2hvX3QgX193aG8sIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCgpl eHRlcm4gaW50IGdldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193aGljaCwgaWRfdCBf X3dobykgOwoKCgpleHRlcm4gaW50IHNldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193 aGljaCwgaWRfdCBfX3dobywgaW50IF9fcHJpbykKICAgICA7CgoKIyA5MSAiaW5jbHVkZS9pbmNs dWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyOCAi L3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9sb2NhbC9pbmNsdWRl L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEg MwojIDE3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2xv Y2FsL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv d29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50 cy5oIiAyIDMKIyAxODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIv dXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAg Ii91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2xvY2FsL2luY2x1 ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVm IF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQu aCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUp IDsKCgoKCmV4dGVybiBpbnQgZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBf X3R5cGUpIDsKIyAyOTMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19v ZmY2NF90IGxzZWVrIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2Up IF9fYXNtX18gKCIiICJsc2VlazY0Iik7CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3Rk LmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zm c2V0LCBpbnQgX193aGVuY2UpIDsKCgoKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIDsKCgoK ZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0 ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19i dWYsIHNpemVfdCBfX24pIDsKIyAzMjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpl eHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0 ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInByZWFkNjQiKTsKCgpleHRlcm4g c3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19u Ynl0ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInB3cml0ZTY0Iik7CiMgMzQw ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAo aW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAg ICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChp bnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAg ICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCgoKCgoKZXh0ZXJuIGludCBwaXBlIChp bnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMK ZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM3 MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xl ZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1 YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAg ICA7CgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgOwoKCgoK CmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBj aGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoK ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n cm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3Vp ZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGly IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQp IDsKIyA0MjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0 Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCmV4dGVybiBjaGFyICpnZXRf Y3VycmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIg Kl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IGR1 cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4 dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBjaGFy ICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAgICBjaGFy ICpfX2NvbnN0IF9fZW52cFtdKSA7CgoKCgpleHRlcm4gaW50IGZleGVjdmUgKGludCBfX2ZkLCBj aGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFyICpfX2NvbnN0IF9fZW52cFtdKQogICAgIDsKCgoK CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f YXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19j b25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hh ciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVj dnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpl eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h cmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2 b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK CgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIv dXNyL2xvY2FsL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElO S19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19O QU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19D SE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgog ICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAg IF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5D Ul9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlO X1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FMTE9DX1NJWkVf TUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01B WCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBT X01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1Ra TkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAg X1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAg X1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpF RF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0Nf TUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoK ICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAg IF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1ND X0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxU QV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAg ICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoK CiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1f VkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoK CiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1ND QUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01B WCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAg IF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05B TUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0Nf Ml9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBf U0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9T Q19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgog ICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0Nf VUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s CgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURf U0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBX X1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9N QVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVB RF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RI UkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVB RF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgog ICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1Qs CgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NP TkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAg X1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgs CgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAg ICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VO SF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBf U0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAg ICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklU LAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgs CgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwK CiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwK CiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFY LAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01B WCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9B UkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0Nf TkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBf U0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1ND X1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19Y T1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFM VElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMs CgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdf U1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgog ICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklD RV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQs CgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywK CiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9O T1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJP Q0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywK CiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJT SU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgog ICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwK CiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAg ICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19V U0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAg X1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9Q QlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoK ICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZf SUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9P RkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwK CiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJB Q0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9D U19QQVRILAoKCgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxB R1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19M RlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMs CgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9D RkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NT X1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxB R1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAz Ml9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAgICBf Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRf Q0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9M UDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAg X0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdf TERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9M UEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NG TEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfUE9T SVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElO VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19Q T1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG QklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAg X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09G RjY0X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1Nf UE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09G RkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAg IF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdf T0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAg fTsKIyA1MDEgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcg aW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVy biBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxv bmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90 IF9fbGVuKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19w aWRfdCBnZXRwcGlkICh2b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7 CiMgNTM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19n ZXRwZ2lkIChfX3BpZF90IF9fcGlkKSA7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90 IF9fcGlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRf dCBfX3BnaWQpIDsKIyA1NjIgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g aW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIg MwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0c2lk IChfX3BpZF90IF9fcGlkKSA7CgoKCmV4dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgOwoKCmV4 dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZv aWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdl dGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgOwoKCgpleHRlcm4gaW50IGdy b3VwX21lbWJlciAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHVpZCAoX191 aWRfdCBfX3VpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9f dWlkX3QgX19ldWlkKSA7CgoKCgpleHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIDsK CgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCmV4dGVybiBpbnQg c2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgOwoKCgoKZXh0ZXJuIGlu dCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZv aWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIDsKCgoKCgpleHRlcm4gY2hh ciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2Zk LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChp bnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGlu dCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4 dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190 bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK CmV4dGVybiBpbnQgcm1kaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3Bp ZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9f ZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkg OwoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVf bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoj IDcyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs dWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9wdC5oIiAzCmV4 dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpl eHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9w dG9wdDsKIyAxNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdl dG9wdCAoaW50IF9fX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3No b3J0b3B0cyk7CiMgNzI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgoK ZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoK CgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBf X2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4 dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKZXh0 ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu KSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSA7CgoKZXh0ZXJuIGludCByZXZva2Ug KF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWdu ZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg ICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSA7CgoKCgoKZXh0 ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0 dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRl cm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50 IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19j b25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hh ciAqX19wcm9tcHQpIDsKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgOwoKCgoKCgpl eHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9p ZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2Zp bGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgX19hc21fXyAoIiIgInRydW5jYXRlNjQiKTsKCgoKCgoK CmV4dGVybiBpbnQgdHJ1bmNhdGU2NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBf X2xlbmd0aCkgOwoKCgoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZjY0 X3QgX19sZW5ndGgpIF9fYXNtX18gKCIiICJmdHJ1bmNhdGU2NCIpOwoKCgoKCgpleHRlcm4gaW50 IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJu IGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p c3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lk ICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMgODg3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p c3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikg OwojIDkxMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Yg KGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgX19hc21fXyAoIiIgImxvY2tm NjQiKTsKCgoKCgoKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29m ZjY0X3QgX19sZW4pIDsKIyA5MzggIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl cm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5 cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSA7CgoKCmV4dGVy biB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgOwoKCgoKCgpleHRl cm4gdm9pZCBzd2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9tLCB2b2lkICpfX3Jl c3RyaWN0IF9fdG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7CgoKCgoKCgpleHRl cm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIvdXNyL2xvY2FsL2luY2x1ZGUv dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkg KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lk KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoK CgojIDk1ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9z dGRpby5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMgMSAi L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzCiMgMzUgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA0 NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUg RklMRTsKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg X0lPX0ZJTEUgX19GSUxFOwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg Ii91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9pbmNsdWRl L2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0 ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8z L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK IyAyOTMgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4x L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMyMCAiL3Vz ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9z dGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvbG9jYWwv aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m aWcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9s b2NhbC9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9s b2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy93 Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIv dXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291 bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9 IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m aWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVf dCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3Bv czsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2xvY2Fs L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIg MSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9p bmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwoj IDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2lu Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMiAz CiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwv Z2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi IDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAg X19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NP TlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwK ICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBf X0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoK CmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJP UlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu c19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3Rl cCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50 LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252 X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252 X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n Y29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19n Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9f Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAq LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90 cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu dCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBl ZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2Nv bnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2Nv bnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5z X2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29u dl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVj dCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAq X19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFy ICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0 YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291 dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252 X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq X19nY29udl90OwojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2 X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0 eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g KF9fU0lfXykpKTsKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIv dXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIv dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl L3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMg NTQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjAgIi91c3IvbG9jYWwvaW5j bHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcw ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsK CgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0 cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkzICIvdXNyL2xvY2FsL2lu Y2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0 X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRf bm9jb252Cn07CiMgMjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lP X0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBf SU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFz ZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciog X0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNl OwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVj dCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGlu dCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVu c2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0Owog IGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAiL3Vzci9s b2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQg Kl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsx NSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0 cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBz dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM RV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y XzFfc3RkZXJyXzsKIyAzNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl X3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9p ZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2 b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQg X19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4g Y29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0 ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90 Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRl ZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsK ICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tp ZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tp ZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQg X0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19y ZWFkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBf SU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRl cmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4 dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193 dW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxF ICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMg NDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChf SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAq X19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50 IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr ZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lP X0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0 ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIvdXNyL2xvY2Fs L2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9f cmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAg ICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJp bnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAg ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lP X3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3Nn ZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f c2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2 NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZv aWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA2NiAiL3Vzci9sb2NhbC9p bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0Owoj IDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3M2NF90IGZw b3NfdDsKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEyOSAiL3Vzci9sb2NhbC9p bmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGRpb19saW0u aCIgMSAzCiMgMTMwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBG SUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoK CgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJu IGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsK CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSBfX2FzbV9fICgiIiAidG1wZmlsZTY0 Iik7CgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVybiBjaGFyICp0 bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3Mp IDsKIyAxNzggIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1w bmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIF9fYXR0 cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19z dHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4g aW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNs b3NlYWxsICh2b2lkKSA7CiMgMjA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl cm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgX19hc21fXyAoIiIgImZvcGVuNjQiKTsKCgpl eHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtKSBfX2FzbV9fICgiIiAiZnJlb3BlbjY0Iik7CiMgMjIyICIvdXNyL2xvY2FsL2luY2x1ZGUv c3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp Y3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0 IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9f cmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lP X2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSA7CgoKZXh0ZXJuIEZJTEUgKmZtZW1v cGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoK CgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9j LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVs b2MpIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s IGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpf X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg ICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZm ZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxp bmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpf X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp c3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f cHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmlj dCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVy biBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw cmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQg X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAg ICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo X19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBf X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBp bnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f YXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7 CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMg KEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpl eHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0 Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3Ry ZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRl cm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2Nr ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2Nr ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tl ZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpl eHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hh ciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0 IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19z KSA7CiMgNDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90 IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p IDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGlu dCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0 cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz dHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4dGVybiBpbnQgZnB1 dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBw dXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXpl X3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp Y3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9p ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4 dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hl bmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4g dm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNTAyICIvdXNyL2xvY2FsL2luY2x1ZGUv c3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBf X29mZiwgaW50IF9fd2hlbmNlKSBfX2FzbV9fICgiIiAiZnNlZWtvNjQiKTsKCgpleHRlcm4gX19v ZmY2NF90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIF9fYXNtX18gKCIiICJmdGVsbG82NCIpOwoK ZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9f cmVzdHJpY3QgX19wb3MpIF9fYXNtX18gKCIiICJmZ2V0cG9zNjQiKTsKCmV4dGVybiBpbnQgZnNl dHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgX19hc21fXyAoIiIg ImZzZXRwb3M2NCIpOwojIDUyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu IGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl bmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVy biBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19y ZXN0cmljdCBfX3BvcykKICAgICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVh bSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJ TEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRl cm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJf dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt KSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRl cm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0 W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qg X3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7 CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoK ZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFy ICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoK ZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFyICpjdXNl cmlkIChjaGFyICpfX3MpIDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFj a19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p IDsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0 IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s aXN0IF9fYXJncykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVh bSkgOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRl cm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKIyA2MzAgIi91c3IvbG9jYWwv aW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIg MSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5s aW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192 YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7 Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dl dGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxF ICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19y ZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lP X3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2 b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3Jl YWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9J T19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19j KQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGlu ZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu ICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5k KSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2ln bmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoK CmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJl YW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSkt Pl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAo X19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAo X19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19j KQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193 cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDog KHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K CgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIs IHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xp bmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApm ZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9m bGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2Nr ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgy MCkgIT0gMCk7Cn0KIyA2MzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIyA5 OCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNy L2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0 ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA5OSAiaW5jbHVkZS9pbmNsdWRlcy5o IiAyCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMwojIDIyICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGlt aXRzLmgiIDEgMwojIDEyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9s aW1pdHMuaCIgMSAzCiMgMTI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDE0 NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl L2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bv c2l4MV9saW0uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAx IDMKIyAzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1 ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzCiMgMTI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9w b3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMK CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwojIDE0OSAi L3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvYml0cy94b3Blbl9saW0uaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3hv cGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEg MwojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTUzICIv dXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUv c3lzL3BhcmFtLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIg MSAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMKIyA1ICIvdXNy L2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMiAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVk ZS9zeXMvcGFyYW0uaCIgMiAzCiMgMTAyICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2luY2x1ZGUv c3RkbGliLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRl L3N0ZGxpYi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3dhaXRm bGFncy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDY1ICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0 YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNp Zzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25l ZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAg ICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWdu ZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7 CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwog IH07CiMgNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNjggIi91c3IvbG9j YWwvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewogICAgdW5pb24gd2FpdCAq X191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVTIF9fYXR0cmlidXRlX18g KChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxp Yi5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0g ZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcg aW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAg ewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRp dl90OwojIDEzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXplX3Qg X19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9f Y29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBp bnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp OwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBh dG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK CgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCmV4dGVy biBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK CgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0 ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVu c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg bG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv bmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg c3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50 IF9fYmFzZSkKICAgICA7CiMgMjExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAx ICIvdXNyL2xvY2FsL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9pbmNs dWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1 Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBp bnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQg Kl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAyMTIgIi91c3IvbG9jYWwvaW5jbHVk ZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9sIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0 b3VsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xv YykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25f XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAg ICA7CgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIGxv bmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCgoK CgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9m X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91 cCkKICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoK CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgoK X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoK X19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2lu dGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf X2Jhc2UsIGludCBfX2dyb3VwKQogICAgIDsKCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUK c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0 ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50 IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg X19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAo X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChf X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0 cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg X19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVy biBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCl9fZXh0ZW5z aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBp bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0 ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBs b25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJu IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoK X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK ICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0 ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg dW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmlj dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFz ZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jh c2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9f bnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsK fQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0 dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpl eHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICBy ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19l eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBj aGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lk ICopMCksIDEwKTsKfQojIDM4NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy biBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19j b25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDM5NyAiL3Vzci9s b2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsK CgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJu IGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwK ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNo YXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2Rh dGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3Qg KnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5k X3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0 cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg aW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVu c2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBp bnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19z dGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zikg OwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm KSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5z aWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpf X3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91 YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxv bmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVk IHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQp IDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd KSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1 bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlsz XSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkg OwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194 WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9y dCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFu ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3Vi bGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVk IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5k NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJs ZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3Qg ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVu c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3Ig KHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAg ICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5k NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAg ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNy YW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl cikKICAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVk MTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl cikgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzdd LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsK IyA1MjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9j IChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZv aWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19w dHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4g dm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19w dHIpIDsKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIvdXNy L2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vz ci9sb2NhbC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2Eg KHNpemVfdCBfX3NpemUpIDsKCgoKCgoKIyA1NDcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIu aCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0 ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAq Kl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0 cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpf X2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAo aW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIDsKCgoKCgpleHRl cm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p KTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChf X25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u YW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19u YW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0 ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFs dWUsIGludCBfX3JlcGxhY2UpCiAgICAgOwoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3Qg Y2hhciAqX19uYW1lKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjMg Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFy ICpfX3RlbXBsYXRlKSA7CiMgNjM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0 ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSBfX2FzbV9fICgiIiAibWtzdGVtcDY0 Iik7CgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NTAg Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hh ciAqX190ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19j b21tYW5kKSA7CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2Nv bnN0IGNoYXIgKl9fbmFtZSkgOwojIDY3MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAz CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoK CgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qg dm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4 dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9f YmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl LCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9f YmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBf X2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9f eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u ZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f ZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj IDcyOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0IChk b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAg ICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFy ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k ZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4 dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1 ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u ZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq X19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3Zh bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25n IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4g aW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0 IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFy ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CmV4 dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p IDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0 LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz dHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs IHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19j b25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJf dCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19z LCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAq X19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNo YXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy X3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgoKCmV4dGVybiBp bnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODA4ICIvdXNyL2xvY2Fs L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3Ry aWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVz dHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf X3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tleSkg OwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoKCgpl eHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQgKGlu dCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKCgoKCgoKZXh0 ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu KSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRh dmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyAxMDYgImluY2x1 ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc29ja2V0Lmgi IDEgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3Vpby5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5 cy91aW8uaCIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMKIyA0 MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAgewogICAg dm9pZCAqaW92X2Jhc2U7CiAgICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNyL2xvY2Fs L2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQg X19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkKICAgICA7 CgoKCgoKCmV4dGVybiBzc2l6ZV90IHdyaXRldiAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IGlv dmVjICpfX3ZlY3RvciwgaW50IF9fY291bnQpCiAgICAgOwoKCiMgMjggIi91c3IvbG9jYWwvaW5j bHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9s b2NhbC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvYml0cy9zb2NrZXQuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tl dC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz L3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAz MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMwojIDQxICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMwplbnVtIF9fc29ja2V0X3R5cGUKewogIFNPQ0tfU1RS RUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcgPSAzLAoKICBTT0NLX1JE TSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tfUEFDS0VUID0gMTAKCgoKfTsK IyAxNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9i aXRzL3NvY2thZGRyLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7 CiMgMTQzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNv Y2thZGRyCiAgewogICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0 XTsKICB9OwojIDE2MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0 IHNvY2thZGRyX3N0b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3Vp bnQzMl90IF9fc3NfYWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXpl b2YgKF9fdWludDMyX3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwK CiAgICBNU0dfUEVFSyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCiAgICBN U0dfVFJZSEFSRCA9IE1TR19ET05UUk9VVEUsCgoKICAgIE1TR19DVFJVTkMgPSAweDA4LAoKICAg IE1TR19QUk9YWSA9IDB4MTAsCgogICAgTVNHX1RSVU5DID0gMHgyMCwKCiAgICBNU0dfRE9OVFdB SVQgPSAweDQwLAoKICAgIE1TR19FT1IgPSAweDgwLAoKICAgIE1TR19XQUlUQUxMID0gMHgxMDAs CgogICAgTVNHX0ZJTiA9IDB4MjAwLAoKICAgIE1TR19TWU4gPSAweDQwMCwKCiAgICBNU0dfQ09O RklSTSA9IDB4ODAwLAoKICAgIE1TR19SU1QgPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFID0g MHgyMDAwLAoKICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwKCiAgICBNU0dfTU9SRSA9IDB4ODAw MAoKICB9OwoKCgoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKm1zZ19uYW1lOwogICAgc29j a2xlbl90IG1zZ19uYW1lbGVuOwoKICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgIGludCBt c2dfaW92bGVuOwoKICAgIHZvaWQgKm1zZ19jb250cm9sOwogICAgc29ja2xlbl90IG1zZ19jb250 cm9sbGVuOwoKICAgIGludCBtc2dfZmxhZ3M7CiAgfTsKCgpzdHJ1Y3QgY21zZ2hkcgogIHsKICAg IHNpemVfdCBjbXNnX2xlbjsKCiAgICBpbnQgY21zZ19sZXZlbDsKICAgIGludCBjbXNnX3R5cGU7 CgogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBjaGFyIF9fY21zZ19kYXRhIFtdOwoKICB9Owoj IDI1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKZXh0ZXJuIHN0cnVjdCBj bXNnaGRyICpfX2Ntc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21oZHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKl9fY21zZykgOwoKCgoK ZXh0ZXJuIF9faW5saW5lIHN0cnVjdCBjbXNnaGRyICoKX19jbXNnX254dGhkciAoc3RydWN0IG1z Z2hkciAqX19taGRyLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgaWYgKChzaXplX3QpIF9f Y21zZy0+Y21zZ19sZW4gPCBzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSkKCiAgICByZXR1cm4gMDsK CiAgX19jbXNnID0gKHN0cnVjdCBjbXNnaGRyICopICgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKCgoX19jbXNnLT5jbXNnX2xlbikgKyBz aXplb2YgKHNpemVfdCkgLSAxKSAmIChzaXplX3QpIH4oc2l6ZW9mIChzaXplX3QpIC0gMSkpKTsK ICBpZiAoKHVuc2lnbmVkIGNoYXIgKikgKF9fY21zZyArIDEpID4gKCh1bnNpZ25lZCBjaGFyICop IF9fbWhkci0+bXNnX2NvbnRyb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsgX19taGRyLT5tc2dfY29udHJvbGxlbikKICAgICAgfHwgKCh1bnNpZ25lZCBjaGFyICop IF9fY21zZyArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXplX3QpIC0gMSkgJiAo c2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKQogICAgICAgICAgPiAoKHVuc2lnbmVkIGNo YXIgKikgX19taGRyLT5tc2dfY29udHJvbCArIF9fbWhkci0+bXNnX2NvbnRyb2xsZW4pKSkKCiAg ICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoKCgplbnVtCiAgewogICAgU0NNX1JJR0hU UyA9IDB4MDEsCgoKICAgIFNDTV9DUkVERU5USUFMUyA9IDB4MDIsCgoKICAgIF9fU0NNX0NPTk5F Q1QgPSAweDAzCiAgfTsKCgoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCBwaWQ7CiAgdWlkX3QgdWlk OwogIGdpZF90IGdpZDsKfTsKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2V0Lmgi IDEgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyA1ICIv dXNyL2xvY2FsL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKIyAzMDYgIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgoKc3RydWN0IGxpbmdlcgogIHsKICAgIGludCBsX29u b2ZmOwogICAgaW50IGxfbGluZ2VyOwogIH07CiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv c29ja2V0LmgiIDIgMwoKCgoKc3RydWN0IG9zb2NrYWRkcgogIHsKICAgIHVuc2lnbmVkIHNob3J0 IGludCBzYV9mYW1pbHk7CiAgICB1bnNpZ25lZCBjaGFyIHNhX2RhdGFbMTRdOwogIH07CgoKCgpl bnVtCnsKICBTSFVUX1JEID0gMCwKCiAgU0hVVF9XUiwKCiAgU0hVVF9SRFdSCgp9OwojIDg3ICIv dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCnR5cGVkZWYgdW5pb24geyBzdHJ1Y3Qg c29ja2FkZHIgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXQgKl9f cmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXgyNSAqX19yZXN0cmlj dCBfX3NvY2thZGRyX2F4MjVfXzsgc3RydWN0IHNvY2thZGRyX2RsICpfX3Jlc3RyaWN0IF9fc29j a2FkZHJfZGxfXzsgc3RydWN0IHNvY2thZGRyX2VvbiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vv bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pbl9fOyBzdHJ1 Y3Qgc29ja2FkZHJfaW42ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfaW42X187IHN0cnVjdCBzb2Nr YWRkcl9pbmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IHN0cnVjdCBzb2NrYWRk cl9pcHggKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pcHhfXzsgc3RydWN0IHNvY2thZGRyX2lzbyAq X19yZXN0cmljdCBfX3NvY2thZGRyX2lzb19fOyBzdHJ1Y3Qgc29ja2FkZHJfbnMgKl9fcmVzdHJp Y3QgX19zb2NrYWRkcl9uc19fOyBzdHJ1Y3Qgc29ja2FkZHJfdW4gKl9fcmVzdHJpY3QgX19zb2Nr YWRkcl91bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfeDI1ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfeDI1 X187CiAgICAgICAgICAgICAgfSBfX1NPQ0tBRERSX0FSRyBfX2F0dHJpYnV0ZV9fICgoX190cmFu c3BhcmVudF91bmlvbl9fKSk7CgoKdHlwZWRlZiB1bmlvbiB7IF9fY29uc3Qgc3RydWN0IHNvY2th ZGRyICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfXzsgX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHJfYXQg Kl9fcmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9heDI1 ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfYXgyNV9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9k bCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2RsX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2Vv biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vvbl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2lu NiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luNl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p bmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IF9fY29uc3Qgc3RydWN0IHNvY2th ZGRyX2lweCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2lweF9fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr YWRkcl9pc28gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pc29fXzsgX19jb25zdCBzdHJ1Y3Qgc29j a2FkZHJfbnMgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9uc19fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr YWRkcl91biAqX19yZXN0cmljdCBfX3NvY2thZGRyX3VuX187IF9fY29uc3Qgc3RydWN0IHNvY2th ZGRyX3gyNSAqX19yZXN0cmljdCBfX3NvY2thZGRyX3gyNV9fOwogICAgICAgICAgICAgIH0gX19D T05TVF9TT0NLQUREUl9BUkcgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykp OwoKCgoKCgoKZXh0ZXJuIGludCBzb2NrZXQgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50 IF9fcHJvdG9jb2wpIDsKCgoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwg aW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f ZmRzWzJdKSA7CgoKZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwgX19DT05TVF9TT0NLQUREUl9B UkcgX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pCiAgICAgOwoKCmV4dGVybiBpbnQgZ2V0c29ja25h bWUgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAg ICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2xlbikgOwoKCgoKCmV4dGVybiBpbnQgY29ubmVj dCAoaW50IF9fZmQsIF9fQ09OU1RfU09DS0FERFJfQVJHIF9fYWRkciwgc29ja2xlbl90IF9fbGVu KQogICAgIDsKCgoKZXh0ZXJuIGludCBnZXRwZWVybmFtZSAoaW50IF9fZmQsIF9fU09DS0FERFJf QVJHIF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0 IF9fbGVuKSA7CgoKCmV4dGVybiBzc2l6ZV90IHNlbmQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQg Kl9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncykKICAgICA7CgoKCmV4dGVybiBzc2l6ZV90 IHJlY3YgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50IF9fZmxhZ3MpCiAg ICAgOwoKCgpleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9f YnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBfX0NP TlNUX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90 IF9fYWRkcl9sZW4pIDsKCgoKCgpleHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQsIHZv aWQgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzLAogICAgICAgICAg ICAgICAgICAgICAgICAgX19TT0NLQUREUl9BUkcgX19hZGRyLCBzb2NrbGVuX3QgKl9fcmVzdHJp Y3QgX19hZGRyX2xlbikKICAgICA7CgoKCgpleHRlcm4gc3NpemVfdCBzZW5kbXNnIChpbnQgX19m ZCwgX19jb25zdCBzdHJ1Y3QgbXNnaGRyICpfX21lc3NhZ2UsIGludCBfX2ZsYWdzKQogICAgIDsK CgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVz c2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgZ2V0c29ja29wdCAoaW50 IF9fZmQsIGludCBfX2xldmVsLCBpbnQgX19vcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKl9fcmVzdHJpY3QgX19vcHR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xl bl90ICpfX3Jlc3RyaWN0IF9fb3B0bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldHNvY2tvcHQgKGlu dCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICBfX2NvbnN0IHZvaWQgKl9fb3B0dmFsLCBzb2NrbGVuX3QgX19vcHRsZW4pIDsKCgoKCgpleHRl cm4gaW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIDsKCgoKCgoKZXh0ZXJuIGludCBhY2Nl cHQgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICBz b2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbikKICAgICA7CgoKCgoKCgpleHRlcm4gaW50 IHNodXRkb3duIChpbnQgX19mZCwgaW50IF9faG93KSA7CgoKCgpleHRlcm4gaW50IHNvY2thdG1h cmsgKGludCBfX2ZkKSA7CgoKCgoKCgpleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwgaW50 IF9fZmR0eXBlKSA7CgoKCiMgMTEwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDEgMwojIDI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz L3VuLmgiIDMKCgoKc3RydWN0IHNvY2thZGRyX3VuCiAgewogICAgc2FfZmFtaWx5X3Qgc3VuX2Zh bWlseTsKICAgIGNoYXIgc3VuX3BhdGhbMTA4XTsKICB9OwoKCgojIDEgIi91c3IvbG9jYWwvaW5j bHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwoK CgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcu aCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf dCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZv aWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAo dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywK ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKZXh0 ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0 ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBz aXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lk ICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICBf X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9f Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl eHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf X24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0 cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl c3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMs IHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9f ZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFy ICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBp bnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBj aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9f czEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK CmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u KSA7CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0 cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxl X3QgX19sKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBf X3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19u LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkgOwoKCgoKZXh0ZXJu IGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIv dXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z dCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu IGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAq X19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXpl X3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9f Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19z LCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp OwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0 IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl cm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNo YXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g Y2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0 IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBf X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAg ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1l bW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAg ICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxl bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19t ZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAg X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2b2lk ICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg IF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJu IHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl X18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywg c2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0 ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVy cm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoK ZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2 b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24p IDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJu IGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90 IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5k ZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9f bCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50 IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g aW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwg c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4g aW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBj aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3Ry aW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs aW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv bnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChj aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQog ICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5j cHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIgKnN0 cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIg KnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAq X19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBj aGFyICpfX2ZpbGVuYW1lKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMK IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv c3RyaW5nMi5oIiAxIDMKIyAyMjEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg MwpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2b2lkICosIGNoYXIsIGNo YXIsIGNoYXIsIGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f dWludDE2X3QsIF9fdWludDE2X3QsIF9fdWludDMyX3QsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSB2b2lk ICoKX19tZW1wY3B5X3NtYWxsICh2b2lkICpfX2Rlc3QxLAogICAgICAgICAgICAgICAgIGNoYXIg X19zcmMwXzEsIGNoYXIgX19zcmMyXzEsIGNoYXIgX19zcmM0XzEsIGNoYXIgX19zcmM2XzEsCiAg ICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwK ICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80 LAogICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWlu dDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7 CiAgICB1bnNpZ25lZCBjaGFyIF9fYzsKICB9ICpfX3UgPSBfX2Rlc3QxOwogIHN3aXRjaCAoKHVu c2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X19jID0g X19zcmMwXzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwog ICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAg ICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRl bnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19jID0gX19zcmMyXzE7CiAg ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK ICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0 ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAg ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk ICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNF8xOwogICAgICBfX3UgPSBfX2V4 dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6 CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3Ny YzZfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAg IGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191 ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9f c3JjNF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg ICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICh2b2lkICopIF9fdTsKfQojIDM3NyAiL3Vzci9sb2Nh bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29u c3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyA0MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0 cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwg X191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hh ciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQx Nl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50 MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVf dCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2 X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19k ZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6 CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBf X3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3Ut Pl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f dSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAg ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg KikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2Fz ZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25f XyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAg YnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9f c3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAg ICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+ X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug KyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJl dHVybiBfX2Rlc3Q7Cn0KIyA1NzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg MwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHBjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZf dCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Vp bnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Rw Y3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3Jj MF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3Ny YzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xl bikKewogIHVuaW9uIHsKICAgIHVuc2lnbmVkIGludCBfX3VpOwogICAgdW5zaWduZWQgc2hvcnQg aW50IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgY2hhciBfX2M7CiAgfSAqX191 ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAg ICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg Y2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5z aW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg X191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl IDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f ICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+ X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug KyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6 CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1ww JzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80Owog ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5f X3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr IDMpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gJl9fdS0+X19jOwp9CiMgODkzICIvdXNy L2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf X3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19p bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVj dCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3Vs dF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsK ICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2My IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9f c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVj dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1 bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19z W19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAq X19zLCBpbnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19z dHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0 MiwKICAgICAgICAgICAgICBpbnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz dWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0g IT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9f c1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1 bHQ7Cn0KIyA5NTAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4g X19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj ZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf X3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdo aWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4g X19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3Qg Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAo X19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdp c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19j b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUg c2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50 IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9 IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRd ID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAg ICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTAwNyAiL3Vzci9sb2NhbC9pbmNs dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIg KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0 MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg IT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAq KTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykK ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g X19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0 dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9 CiMgMTA1OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lu bGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipf X25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3Ms IGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9f cyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9f c2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAn XDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAn XDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAgICAg IF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgKl9f bmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5MSAiL3Vzci9sb2Nh bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cnNlcF9nIChjaGFy ICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwojIDExMDkgIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBf MWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f c3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAq X19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9 IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3Jl amVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3Qp IDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigq X19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFy ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBf X3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq X19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIg Y2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAg ICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAo KHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAo Kl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewog ICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAg IH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8z YyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5l IGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19y ZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9f czsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNo YXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAg aWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2 b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpf X2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWpl Y3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAg ICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQojIDExOTAgIi91c3Iv bG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9f Y29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIw OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0 cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIg MiAzCgoKCgojIDM5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDIgMwoKCgoKCgoKIyAx MTQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv c3lzY2FsbC5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDMK IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9iaXRzL3N5c2NhbGwuaCIgMSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzY2Fs bC5oIiAyIDMKIyAxMTggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEyNyAiaW5jbHVkZS9pbmNs dWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmdzLmgiIDEgMwojIDEyOCAiaW5j bHVkZS9pbmNsdWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL21lbW9yeS5oIiAx IDMKIyAxMzIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvZmNudGwuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9mY250bC5oIiAzCgoK CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDEgMwojIDEzNiAiL3Vzci9s b2NhbC9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwpzdHJ1Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBp bnQgbF90eXBlOwogICAgc