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 bnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNlOwoKCgoKICAgIF9fb2ZmNjRfdCBsX3N0 YXJ0OwogICAgX19vZmY2NF90IGxfbGVuOwoKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKCgpzdHJ1 Y3QgZmxvY2s2NAogIHsKICAgIHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVu Y2U7CiAgICBfX29mZjY0X3QgbF9zdGFydDsKICAgIF9fb2ZmNjRfdCBsX2xlbjsKICAgIF9fcGlk X3QgbF9waWQ7CiAgfTsKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKCgoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMKIyA5NiAiL3Vzci9sb2NhbC9p bmNsdWRlL3N5cy9zdGF0LmgiIDMKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXQu aCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMwpzdHJ1Y3Qgc3Rh dAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMTsK CgoKICAgIF9faW5vX3QgX19zdF9pbm87CgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxp bmtfdCBzdF9ubGluazsKICAgIF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAg ICBfX2Rldl90IHN0X3JkZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKCgogICAg X19vZmY2NF90IHN0X3NpemU7CgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCgoKCiAgICBf X2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwoKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWdu ZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25l ZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVk IGxvbmcgaW50IF9fdW51c2VkMzsKCgoKCiAgICBfX2lubzY0X3Qgc3RfaW5vOwoKICB9OwoKCnN0 cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIGludCBfX3Bh ZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9kZV90IHN0X21vZGU7CiAgICBfX25s aW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3RfZ2lkOwog ICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50IF9fcGFkMjsKICAgIF9fb2ZmNjRf dCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCiAgICBfX2Jsa2NudDY0X3Qg c3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBf X3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f dW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191 bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9OwojIDk5ICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjA4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3N0YXQuaCIg MwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsIHN0cnVj dCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2FzbV9fICgiIiAic3RhdDY0Iik7CgoKCmV4dGVy biBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIF9fYXNtX18gKCIiICJm c3RhdDY0Iik7CgoKCgoKCmV4dGVybiBpbnQgc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBf X2J1ZikgOwpleHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX2J1 ZikgOwojIDIzMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBs c3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwgc3RydWN0IHN0YXQgKl9fcmVz dHJpY3QgX19idWYpIF9fYXNtX18gKCIiICJsc3RhdDY0Iik7CiMgMjQxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxzdGF0NjQgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0 cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4gaW50IGNobW9kIChfX2NvbnN0IGNoYXIgKl9fZmls ZSwgX19tb2RlX3QgX19tb2RlKSA7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19t b2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21h c2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBnZXR1bWFzayAodm9pZCkgOwoKCgpleHRlcm4gaW50 IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0 ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwgX19k ZXZfdCBfX2RldikKICAgICA7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBjaGFyICpf X3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwojIDMxMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9z dGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0 cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSBfX2FzbV9fICgiIiAiX19meHN0YXQ2NCIpOwoKCmV4dGVy biBpbnQgX194c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsIHN0cnVj dCBzdGF0ICpfX3N0YXRfYnVmKSBfX2FzbV9fICgiIiAiX194c3RhdDY0Iik7CgpleHRlcm4gaW50 IF9fbHhzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwgc3RydWN0IHN0 YXQgKl9fc3RhdF9idWYpIF9fYXNtX18gKCIiICJfX2x4c3RhdDY0Iik7CiMgMzMwICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3Zl ciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJu IGludCBfX3hzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50 IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQg X194bWtub2QgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k ZSwKICAgICAgICAgICAgICAgICAgICAgX19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lu bGluZV9fIGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMywg X19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2Nv bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh dCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fbHhzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7 Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAq X19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoK ZXh0ZXJuIF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2Rl X3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsK ICByZXR1cm4gX194bWtub2QgKDEsIF9fcGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0 ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVy biBfX3hzdGF0NjQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9f IGludCBsc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0 ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2 NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3Rh dDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKCgoKIyAzOCAiL3Vzci9sb2NhbC9pbmNsdWRl L2ZjbnRsLmgiIDIgMwojIDYwICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g aW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pIDsKIyA2OSAiL3Vzci9sb2NhbC9p bmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBvcGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg aW50IF9fb2ZsYWcsIC4uLikgX19hc21fXyAoIiIgIm9wZW42NCIpOwoKCgoKCgpleHRlcm4gaW50 IG9wZW42NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIDsKIyA4NiAi L3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBj aGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgX19hc21fXyAoIiIgImNyZWF0NjQiKTsKCgoK CgoKZXh0ZXJuIGludCBjcmVhdDY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19t b2RlKSA7CiMgMTM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBv c2l4X2ZhZHZpc2UgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbiwg aW50IF9fYWR2aXNlKSBfX2FzbV9fICgiIiAicG9zaXhfZmFkdmlzZTY0Iik7CgoKCgoKCgpleHRl cm4gaW50IHBvc2l4X2ZhZHZpc2U2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6 ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWR2aXNlKSA7CiMg MTUyICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBvc2l4X2ZhbGxv Y2F0ZSAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuKSBfX2FzbV9f ICgiIiAicG9zaXhfZmFsbG9jYXRlNjQiKTsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfZmFsbG9j YXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikKICAgICA7 CgoKCgojIDE0MCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMTQ5ICJpbmNsdWRlL2luY2x1ZGVz LmgiCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxNTAgImluY2x1ZGUv aW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMSAz CiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMwoKCgojIDEgIi91c3IvbG9j YWwvaW5jbHVkZS9iaXRzL2lvY3Rscy5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp dHMvaW9jdGxzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAxIDMK CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEgMwojIDUgIi91c3IvbG9j YWwvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy9pb2N0bHMuaCIgMiAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMiAz CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMKIyAyOCAi L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMwpzdHJ1Y3Qgd2luc2l6ZQog IHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg d3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX3hwaXhlbDsKICAgIHVuc2lnbmVkIHNo b3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3QgdGVybWlvCiAgewogICAgdW5zaWduZWQg c2hvcnQgaW50IGNfaWZsYWc7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgY19vZmxhZzsKICAgIHVu c2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfbGZsYWc7 CiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4XTsKfTsK IyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgoKCgoKIyAxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3R0eWRlZmF1bHRzLmgiIDEgMwojIDM4ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCgoKZXh0ZXJuIGludCBpb2N0bCAoaW50IF9fZmQsIHVu c2lnbmVkIGxvbmcgaW50IF9fcmVxdWVzdCwgLi4uKSA7CgoKIyAxNTQgImluY2x1ZGUvaW5jbHVk ZXMuaCIgMgoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMSAzCiMgMzEg Ii91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl L2JpdHMvc2lnc2V0LmgiIDEgMwojIDEwMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0 LmgiIDMKZXh0ZXJuIGludCBfX3NpZ2lzbWVtYmVyIChfX2NvbnN0IF9fc2lnc2V0X3QgKiwgaW50 KTsKZXh0ZXJuIGludCBfX3NpZ2FkZHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50 IF9fc2lnZGVsc2V0IChfX3NpZ3NldF90ICosIGludCk7CiMgMTE3ICIvdXNyL2xvY2FsL2luY2x1 ZGUvYml0cy9zaWdzZXQuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50IF9fc2lnaXNtZW1iZXIgKF9f Y29uc3QgX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBsb25nIGludCBf X21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0gMSkgJSAoOCAq IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGludCBfX3dvcmQg PSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKTsgcmV0 dXJuIChfX3NldC0+X192YWxbX193b3JkXSAmIF9fbWFzaykgPyAxIDogMDsgfQpleHRlcm4gX19p bmxpbmUgaW50IF9fc2lnYWRkc2V0ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1 bnNpZ25lZCBsb25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgo X19zaWcpIC0gMSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25l ZCBsb25nIGludCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25l ZCBsb25nIGludCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29yZF0gfD0gX19tYXNrKSwg MCk7IH0KZXh0ZXJuIF9faW5saW5lIGludCBfX3NpZ2RlbHNldCAoIF9fc2lnc2V0X3QgKl9fc2V0 LCBpbnQgX19zaWcpIHsgdW5zaWduZWQgbG9uZyBpbnQgX19tYXNrID0gKCgodW5zaWduZWQgbG9u ZyBpbnQpIDEpIDw8ICgoKF9fc2lnKSAtIDEpICUgKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcg aW50KSkpKTsgdW5zaWduZWQgbG9uZyBpbnQgX193b3JkID0gKCgoX19zaWcpIC0gMSkgLyAoOCAq IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSk7IHJldHVybiAoKF9fc2V0LT5fX3ZhbFtfX3dv cmRdICY9IH5fX21hc2spLCAwKTsgfQojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgi IDIgMwoKCgoKCgp0eXBlZGVmIF9fc2lnX2F0b21pY190IHNpZ19hdG9taWNfdDsKIyA1NiAiL3Vz ci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv c2lnbnVtLmgiIDEgMwojIDU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwojIDcx ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5k bGVyX3QpIChpbnQpOwoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWduYWwgKGlu dCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIDsKCmV4dGVybiBfX3NpZ2hh bmRsZXJfdCBzeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIp CiAgICAgOwoKCgoKCgpleHRlcm4gX19zaWdoYW5kbGVyX3Qgc2lnbmFsIChpbnQgX19zaWcsIF9f c2lnaGFuZGxlcl90IF9faGFuZGxlcikgOwojIDEwMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25h bC5oIiAzCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBic2Rfc2lnbmFsIChpbnQgX19zaWcsIF9fc2ln aGFuZGxlcl90IF9faGFuZGxlcikgOwoKCgoKCgpleHRlcm4gaW50IGtpbGwgKF9fcGlkX3QgX19w aWQsIGludCBfX3NpZykgOwoKCgoKCgpleHRlcm4gaW50IGtpbGxwZyAoX19waWRfdCBfX3BncnAs IGludCBfX3NpZykgOwoKCgpleHRlcm4gaW50IHJhaXNlIChpbnQgX19zaWcpIDsKCgoKZXh0ZXJu IF9fc2lnaGFuZGxlcl90IHNzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5k bGVyKSA7CmV4dGVybiBpbnQgZ3NpZ25hbCAoaW50IF9fc2lnKSA7CgoKCgpleHRlcm4gdm9pZCBw c2lnbmFsIChpbnQgX19zaWcsIF9fY29uc3QgY2hhciAqX19zKSA7CiMgMTQwICIvdXNyL2xvY2Fs L2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIGludCBfX3NpZ3BhdXNlIChpbnQgX19zaWdfb3Jf bWFzaywgaW50IF9faXNfc2lnKSA7CgoKCgpleHRlcm4gaW50IHNpZ3BhdXNlIChpbnQgX19tYXNr KSA7CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIGludCBzaWdi bG9jayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykg OwoKCmV4dGVybiBpbnQgc2lnZ2V0bWFzayAodm9pZCkgOwojIDE4MyAiL3Vzci9sb2NhbC9pbmNs dWRlL3NpZ25hbC5oIiAzCnR5cGVkZWYgX19zaWdoYW5kbGVyX3Qgc2lnaGFuZGxlcl90OwoKCgoK dHlwZWRlZiBfX3NpZ2hhbmRsZXJfdCBzaWdfdDsKIyAxOTkgIi91c3IvbG9jYWwvaW5jbHVkZS9z aWduYWwuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMg MjUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwv aW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0 cy9zaWdpbmZvLmgiIDIgMwoKCgoKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwKICB7CiAgICBpbnQg c2l2YWxfaW50OwogICAgdm9pZCAqc2l2YWxfcHRyOwogIH0gc2lndmFsX3Q7CiMgNTEgIi91c3Iv bG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvCiAg ewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAgIGludCBzaV9jb2RlOwoK ICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBpbnQgX3BhZFsoKDEyOCAvIHNpemVvZiAoaW50KSkg LSAzKV07CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19waWRfdCBz aV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgfSBfa2lsbDsKCgog ICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3RpbWVy MTsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICB9IF90aW1lcjsK CgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNpX3BpZDsK ICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICAgIHNpZ3ZhbF90IHNpX3NpZ3Zh bDsKICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAg ICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAg ICAgaW50IHNpX3N0YXR1czsKICAgICAgICAgICAgX19jbG9ja190IHNpX3V0aW1lOwogICAgICAg ICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAgICAg c3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKnNpX2FkZHI7CiAgICAgICAgICB9 IF9zaWdmYXVsdDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBsb25n IGludCBzaV9iYW5kOwogICAgICAgICAgICBpbnQgc2lfZmQ7CiAgICAgICAgICB9IF9zaWdwb2xs OwogICAgICB9IF9zaWZpZWxkczsKICB9IHNpZ2luZm9fdDsKIyAxMjggIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwplbnVtCnsKICBTSV9BU1lOQ05MID0gLTYsCgogIFNJX1NJ R0lPLAoKICBTSV9BU1lOQ0lPLAoKICBTSV9NRVNHUSwKCiAgU0lfVElNRVIsCgogIFNJX1FVRVVF LAoKICBTSV9VU0VSLAoKICBTSV9LRVJORUwgPSAweDgwCgp9OwoKCgplbnVtCnsKICBJTExfSUxM T1BDID0gMSwKCiAgSUxMX0lMTE9QTiwKCiAgSUxMX0lMTEFEUiwKCiAgSUxMX0lMTFRSUCwKCiAg SUxMX1BSVk9QQywKCiAgSUxMX1BSVlJFRywKCiAgSUxMX0NPUFJPQywKCiAgSUxMX0JBRFNUSwoK fTsKCgplbnVtCnsKICBGUEVfSU5URElWID0gMSwKCiAgRlBFX0lOVE9WRiwKCiAgRlBFX0ZMVERJ ViwKCiAgRlBFX0ZMVE9WRiwKCiAgRlBFX0ZMVFVORCwKCiAgRlBFX0ZMVFJFUywKCiAgRlBFX0ZM VElOViwKCiAgRlBFX0ZMVFNVQgoKfTsKCgplbnVtCnsKICBTRUdWX01BUEVSUiA9IDEsCgogIFNF R1ZfQUNDRVJSCgp9OwoKCmVudW0KewogIEJVU19BRFJBTE4gPSAxLAoKICBCVVNfQURSRVJSLAoK ICBCVVNfT0JKRVJSCgp9OwoKCmVudW0KewogIFRSQVBfQlJLUFQgPSAxLAoKICBUUkFQX1RSQUNF Cgp9OwoKCmVudW0KewogIENMRF9FWElURUQgPSAxLAoKICBDTERfS0lMTEVELAoKICBDTERfRFVN UEVELAoKICBDTERfVFJBUFBFRCwKCiAgQ0xEX1NUT1BQRUQsCgogIENMRF9DT05USU5VRUQKCn07 CgoKZW51bQp7CiAgUE9MTF9JTiA9IDEsCgogIFBPTExfT1VULAoKICBQT0xMX01TRywKCiAgUE9M TF9FUlIsCgogIFBPTExfUFJJLAoKICBQT0xMX0hVUAoKfTsKIyAyNzEgIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwpzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfczsKCnR5cGVkZWYg c3RydWN0IHNpZ2V2ZW50CiAgewogICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICBpbnQgc2ln ZXZfc2lnbm87CiAgICBpbnQgc2lnZXZfbm90aWZ5OwoKICAgIHVuaW9uCiAgICAgIHsKICAgICAg ICBpbnQgX3BhZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCiAgICAgICAgc3RydWN0CiAg ICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7CiAgICAg ICAgICAgIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zICpfYXR0cmlidXRlOwogICAgICAgICAgfSBf c2lnZXZfdGhyZWFkOwogICAgICB9IF9zaWdldl91bjsKICB9IHNpZ2V2ZW50X3Q7CgoKCgoKCmVu dW0KewogIFNJR0VWX1NJR05BTCA9IDAsCgogIFNJR0VWX05PTkUsCgogIFNJR0VWX1RIUkVBRAoK fTsKIyAyMDAgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKCmV4dGVybiBpbnQg c2lnZW1wdHlzZXQgKHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnZmlsbHNldCAo c2lnc2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhZGRzZXQgKHNpZ3NldF90ICpfX3Nl dCwgaW50IF9fc2lnbm8pIDsKCgpleHRlcm4gaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKl9fc2V0 LCBpbnQgX19zaWdubykgOwoKCmV4dGVybiBpbnQgc2lnaXNtZW1iZXIgKF9fY29uc3Qgc2lnc2V0 X3QgKl9fc2V0LCBpbnQgX19zaWdubykgOwoKCgpleHRlcm4gaW50IHNpZ2lzZW1wdHlzZXQgKF9f Y29uc3Qgc2lnc2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhbmRzZXQgKHNpZ3NldF90 ICpfX3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAgICAg X19jb25zdCBzaWdzZXRfdCAqX19yaWdodCkgOwoKCmV4dGVybiBpbnQgc2lnb3JzZXQgKHNpZ3Nl dF90ICpfX3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAg ICBfX2NvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSA7CgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9iaXRzL3NpZ2FjdGlvbi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2ln YWN0aW9uLmgiIDMKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5pb24KICAgICAgewoKICAg ICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwoKICAgICAgICB2b2lkICgqc2Ffc2lnYWN0 aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsKICAgICAgfQogICAgX19zaWdhY3Rpb25f aGFuZGxlcjsKCgoKCgoKCiAgICBfX3NpZ3NldF90IHNhX21hc2s7CgoKICAgIGludCBzYV9mbGFn czsKCgogICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgfTsKIyAyMzMgIi91c3IvbG9j YWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdwcm9jbWFzayAoaW50IF9f aG93LCBfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAg ICAgICAgICBzaWdzZXRfdCAqX19yZXN0cmljdCBfX29zZXQpIDsKCgoKZXh0ZXJuIGludCBzaWdz dXNwZW5kIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnYWN0aW9u IChpbnQgX19zaWcsIF9fY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX2FjdCwK ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKl9fcmVzdHJpY3QgX19vYWN0 KSA7CgoKZXh0ZXJuIGludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqX19zZXQpIDsKCgoKZXh0ZXJu IGludCBzaWd3YWl0IChfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LCBpbnQgKl9f cmVzdHJpY3QgX19zaWcpCiAgICAgOwoKCgpleHRlcm4gaW50IHNpZ3dhaXRpbmZvIChfX2NvbnN0 IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaWdp bmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvKSA7CgoKCmV4dGVybiBpbnQgc2lndGltZWR3YWl0IChf X2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAgICAgICAg ICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbywKICAgICAgICAgICAgICAgICAgICAgICAg IF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCkKICAgICA7CgoK CmV4dGVybiBpbnQgc2lncXVldWUgKF9fcGlkX3QgX19waWQsIGludCBfX3NpZywgX19jb25zdCB1 bmlvbiBzaWd2YWwgX192YWwpCiAgICAgOwojIDI3OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25h bC5oIiAzCmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19zaWdsaXN0WzY0XTsKZXh0 ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfc2lnbGlzdFs2NF07CgoKc3RydWN0IHNpZ3Zl YwogIHsKICAgIF9fc2lnaGFuZGxlcl90IHN2X2hhbmRsZXI7CiAgICBpbnQgc3ZfbWFzazsKCiAg ICBpbnQgc3ZfZmxhZ3M7CgogIH07CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgi IDMKZXh0ZXJuIGludCBzaWd2ZWMgKGludCBfX3NpZywgX19jb25zdCBzdHJ1Y3Qgc2lndmVjICpf X3ZlYywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWd2ZWMgKl9fb3ZlYykgOwoKCgojIDEg Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMSAzCiMgMjggIi91c3IvbG9j YWwvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9h c20vc2lnY29udGV4dC5oIiAxIDMKIyAxOCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9zaWdjb250 ZXh0LmgiIDMKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNh bmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJl ZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsK CnN0cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07Cgpz dHJ1Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2ln bmVkIGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQg bG9uZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVk IGxvbmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3Ry dWN0IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAg IHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZb Nl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJl c2VydmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVj dCBfeG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsK CgoKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg ZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNp Z25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25l ZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBs b25nIGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25n IGVjeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRy YXBubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVp cDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVu c2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRl OwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNy MjsKfTsKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAyIDMKIyAz MDggIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdyZXR1 cm4gKHN0cnVjdCBzaWdjb250ZXh0ICpfX3NjcCkgOwojIDMyMCAiL3Vzci9sb2NhbC9pbmNsdWRl L3NpZ25hbC5oIiAzCmV4dGVybiBpbnQgc2lnaW50ZXJydXB0IChpbnQgX19zaWcsIGludCBfX2lu dGVycnVwdCkgOwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAxIDMK IyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc3RhY2suaCIgMwpzdHJ1Y3Qgc2lnc3Rh Y2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGludCBzc19vbnN0YWNrOwogIH07CgoKCmVudW0K ewogIFNTX09OU1RBQ0sgPSAxLAoKICBTU19ESVNBQkxFCgp9OwojIDUwICIvdXNyL2xvY2FsL2lu Y2x1ZGUvYml0cy9zaWdzdGFjay5oIiAzCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrCiAgewog ICAgdm9pZCAqc3Nfc3A7CiAgICBpbnQgc3NfZmxhZ3M7CiAgICBzaXplX3Qgc3Nfc2l6ZTsKICB9 IHN0YWNrX3Q7CiMgMzIzICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvdWNvbnRleHQuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5jbHVk ZS91Y29udGV4dC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAx IDMKIyAyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzCiMgMSAiL3Vzci9s b2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91 Y29udGV4dC5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0 LmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDIgMwoKCgp0 eXBlZGVmIGludCBncmVnX3Q7CgoKCgoKdHlwZWRlZiBncmVnX3QgZ3JlZ3NldF90WzE5XTsKCgoK ZW51bQp7CiAgUkVHX0dTID0gMCwKCiAgUkVHX0ZTLAoKICBSRUdfRVMsCgogIFJFR19EUywKCiAg UkVHX0VESSwKCiAgUkVHX0VTSSwKCiAgUkVHX0VCUCwKCiAgUkVHX0VTUCwKCiAgUkVHX0VCWCwK CiAgUkVHX0VEWCwKCiAgUkVHX0VDWCwKCiAgUkVHX0VBWCwKCiAgUkVHX1RSQVBOTywKCiAgUkVH X0VSUiwKCiAgUkVHX0VJUCwKCiAgUkVHX0NTLAoKICBSRUdfRUZMLAoKICBSRUdfVUVTUCwKCiAg UkVHX1NTCgp9OwoKCgpzdHJ1Y3QgX2xpYmNfZnByZWcKewogIHVuc2lnbmVkIHNob3J0IGludCBz aWduaWZpY2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBpbnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3Qg X2xpYmNfZnBzdGF0ZQp7CiAgdW5zaWduZWQgbG9uZyBpbnQgY3c7CiAgdW5zaWduZWQgbG9uZyBp bnQgc3c7CiAgdW5zaWduZWQgbG9uZyBpbnQgdGFnOwogIHVuc2lnbmVkIGxvbmcgaW50IGlwb2Zm OwogIHVuc2lnbmVkIGxvbmcgaW50IGNzc2VsOwogIHVuc2lnbmVkIGxvbmcgaW50IGRhdGFvZmY7 CiAgdW5zaWduZWQgbG9uZyBpbnQgZGF0YXNlbDsKICBzdHJ1Y3QgX2xpYmNfZnByZWcgX3N0Wzhd OwogIHVuc2lnbmVkIGxvbmcgaW50IHN0YXR1czsKfTsKCgp0eXBlZGVmIHN0cnVjdCBfbGliY19m cHN0YXRlICpmcHJlZ3NldF90OwoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgZ3JlZ3NldF90IGdy ZWdzOwoKCiAgICBmcHJlZ3NldF90IGZwcmVnczsKICAgIHVuc2lnbmVkIGxvbmcgaW50IG9sZG1h c2s7CiAgICB1bnNpZ25lZCBsb25nIGludCBjcjI7CiAgfSBtY29udGV4dF90OwoKCnR5cGVkZWYg c3RydWN0IHVjb250ZXh0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgdWNfZmxhZ3M7CiAgICBz dHJ1Y3QgdWNvbnRleHQgKnVjX2xpbms7CiAgICBzdGFja190IHVjX3N0YWNrOwogICAgbWNvbnRl eHRfdCB1Y19tY29udGV4dDsKICAgIF9fc2lnc2V0X3QgdWNfc2lnbWFzazsKICAgIHN0cnVjdCBf bGliY19mcHN0YXRlIF9fZnByZWdzX21lbTsKICB9IHVjb250ZXh0X3Q7CiMgMjggIi91c3IvbG9j YWwvaW5jbHVkZS91Y29udGV4dC5oIiAyIDMKCgoKCmV4dGVybiBpbnQgZ2V0Y29udGV4dCAodWNv bnRleHRfdCAqX191Y3ApIDsKCgpleHRlcm4gaW50IHNldGNvbnRleHQgKF9fY29uc3QgdWNvbnRl eHRfdCAqX191Y3ApIDsKCgoKZXh0ZXJuIGludCBzd2FwY29udGV4dCAodWNvbnRleHRfdCAqX19y ZXN0cmljdCBfX291Y3AsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdWNvbnRleHRf dCAqX19yZXN0cmljdCBfX3VjcCkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgbWFrZWNvbnRleHQgKHVj b250ZXh0X3QgKl9fdWNwLCB2b2lkICgqX19mdW5jKSAodm9pZCksCiAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgX19hcmdjLCAuLi4pIDsKCgojIDMyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Np Z25hbC5oIiAyIDMKCgoKCgpleHRlcm4gaW50IHNpZ3N0YWNrIChzdHJ1Y3Qgc2lnc3RhY2sgKl9f c3MsIHN0cnVjdCBzaWdzdGFjayAqX19vc3MpIDsKCgoKZXh0ZXJuIGludCBzaWdhbHRzdGFjayAo X19jb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJpY3QgX19zcywKICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fb3NzKSA7CgoKCgoK CgpleHRlcm4gaW50IHNpZ2hvbGQgKGludCBfX3NpZykgOwoKCmV4dGVybiBpbnQgc2lncmVsc2Ug KGludCBfX3NpZykgOwoKCmV4dGVybiBpbnQgc2lnaWdub3JlIChpbnQgX19zaWcpIDsKCgpleHRl cm4gX19zaWdoYW5kbGVyX3Qgc2lnc2V0IChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9fZGlz cCkgOwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDEgMwoj IDMxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0 aHJlYWRfc2lnbWFzayAoaW50IF9faG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19j b25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fbmV3bWFzaywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vbGRtYXNrKTsKCgpleHRlcm4gaW50 IHB0aHJlYWRfa2lsbCAocHRocmVhZF90IF9fdGhyZWFkLCBpbnQgX19zaWdubykgOwojIDM1OSAi L3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludCBfX2xpYmNf Y3VycmVudF9zaWdydG1pbiAodm9pZCkgOwoKZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdy dG1heCAodm9pZCkgOwoKCgoKIyAxNjEgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCiMgMSAiL3Vz ci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUv c3lzL3dhaXQuaCIgMwoKIyA5OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDMKdHlw ZWRlZiBlbnVtCnsKICBQX0FMTCwKICBQX1BJRCwKICBQX1BHSUQKfSBpZHR5cGVfdDsKCgoKCgpl eHRlcm4gX19waWRfdCB3YWl0IChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MpIDsKIyAxMjkgIi91 c3IvbG9jYWwvaW5jbHVkZS9zeXMvd2FpdC5oIiAzCmV4dGVybiBfX3BpZF90IHdhaXRwaWQgKF9f cGlkX3QgX19waWQsIGludCAqX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucykgOwoKCgojIDEgIi91 c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3dvcmRz aXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDIgMwoj IDEzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDE0MiAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIGludCB3YWl0aWQgKGlkdHlwZV90IF9faWR0 eXBlLCBfX2lkX3QgX19pZCwgc2lnaW5mb190ICpfX2luZm9wLAogICAgICAgICAgICAgICAgICAg aW50IF9fb3B0aW9ucykgOwoKCgoKCnN0cnVjdCBydXNhZ2U7CgoKCgoKCmV4dGVybiBfX3BpZF90 IHdhaXQzIChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMsCiAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcnVzYWdlICogX191c2FnZSkgOwoKCgoKCnN0cnVjdCBydXNh Z2U7CgoKZXh0ZXJuIF9fcGlkX3Qgd2FpdDQgKF9fcGlkX3QgX19waWQsIF9fV0FJVF9TVEFUVVMg X19zdGF0X2xvYywgaW50IF9fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy dXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCiMgMTY0ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEg Ii91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRl L2N0eXBlLmgiIDMKCiMgNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzCmVudW0Kewog IF9JU3VwcGVyID0gKCgwKSA8IDggPyAoKDEgPDwgKDApKSA8PCA4KSA6ICgoMSA8PCAoMCkpID4+ IDgpKSwKICBfSVNsb3dlciA9ICgoMSkgPCA4ID8gKCgxIDw8ICgxKSkgPDwgOCkgOiAoKDEgPDwg KDEpKSA+PiA4KSksCiAgX0lTYWxwaGEgPSAoKDIpIDwgOCA/ICgoMSA8PCAoMikpIDw8IDgpIDog KCgxIDw8ICgyKSkgPj4gOCkpLAogIF9JU2RpZ2l0ID0gKCgzKSA8IDggPyAoKDEgPDwgKDMpKSA8 PCA4KSA6ICgoMSA8PCAoMykpID4+IDgpKSwKICBfSVN4ZGlnaXQgPSAoKDQpIDwgOCA/ICgoMSA8 PCAoNCkpIDw8IDgpIDogKCgxIDw8ICg0KSkgPj4gOCkpLAogIF9JU3NwYWNlID0gKCg1KSA8IDgg PyAoKDEgPDwgKDUpKSA8PCA4KSA6ICgoMSA8PCAoNSkpID4+IDgpKSwKICBfSVNwcmludCA9ICgo NikgPCA4ID8gKCgxIDw8ICg2KSkgPDwgOCkgOiAoKDEgPDwgKDYpKSA+PiA4KSksCiAgX0lTZ3Jh cGggPSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgpIDogKCgxIDw8ICg3KSkgPj4gOCkpLAog IF9JU2JsYW5rID0gKCg4KSA8IDggPyAoKDEgPDwgKDgpKSA8PCA4KSA6ICgoMSA8PCAoOCkpID4+ IDgpKSwKICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgxIDw8ICg5KSkgPDwgOCkgOiAoKDEgPDwg KDkpKSA+PiA4KSksCiAgX0lTcHVuY3QgPSAoKDEwKSA8IDggPyAoKDEgPDwgKDEwKSkgPDwgOCkg OiAoKDEgPDwgKDEwKSkgPj4gOCkpLAogIF9JU2FsbnVtID0gKCgxMSkgPCA4ID8gKCgxIDw8ICgx MSkpIDw8IDgpIDogKCgxIDw8ICgxMSkpID4+IDgpKQp9OwojIDc1ICIvdXNyL2xvY2FsL2luY2x1 ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19jb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVf YjsKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7CmV4dGVybiBfX2Nv bnN0IF9faW50MzJfdCAqX19jdHlwZV90b3VwcGVyOwojIDkxICIvdXNyL2xvY2FsL2luY2x1ZGUv Y3R5cGUuaCIgMwpleHRlcm4gaW50IGlzYWxudW0gKGludCkgOwpleHRlcm4gaW50IGlzYWxwaGEg KGludCkgOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgOwpleHRlcm4gaW50IGlzZGlnaXQgKGlu dCkgOwpleHRlcm4gaW50IGlzbG93ZXIgKGludCkgOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkg OwpleHRlcm4gaW50IGlzcHJpbnQgKGludCkgOwpleHRlcm4gaW50IGlzcHVuY3QgKGludCkgOwpl eHRlcm4gaW50IGlzc3BhY2UgKGludCkgOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgOwpleHRl cm4gaW50IGlzeGRpZ2l0IChpbnQpIDsKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgOwoKCgoK ZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSA7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQg X19jKSA7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50 IHRvYXNjaWkgKGludCBfX2MpIDsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSA7CmV4dGVy biBpbnQgX3RvbG93ZXIgKGludCkgOwojIDE2NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgi IDMKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+ PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG9sb3dlcltfX2NdIDogX19jOwp9CgpleHRl cm4gX19pbmxpbmUgaW50CnRvdXBwZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjgg JiYgX19jIDwgMjU2ID8gX19jdHlwZV90b3VwcGVyW19fY10gOiBfX2M7Cn0KIyAyMjMgIi91c3Iv bG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgX19pc2FsbnVtX2wgKGludCwgX19s b2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0 ZXJuIGludCBfX2lzY250cmxfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc2Rp Z2l0X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChpbnQsIF9f bG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4 dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNw dW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBf X2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgOwpl eHRlcm4gaW50IF9faXN4ZGlnaXRfbCAoaW50LCBfX2xvY2FsZV90KSA7CgpleHRlcm4gaW50IF9f aXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIDsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAo aW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKCgpleHRlcm4gaW50IF9fdG91cHBlcl9sIChpbnQg X19jLCBfX2xvY2FsZV90IF9fbCkgOwojIDI3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgi IDMKCiMgMTY3ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9ncnAuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwoKCgoKCiMgMSAi L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk ZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMiAzCiMgNDMg Ii91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwpzdHJ1Y3QgZ3JvdXAKICB7CiAgICBjaGFyICpn cl9uYW1lOwogICAgY2hhciAqZ3JfcGFzc3dkOwogICAgX19naWRfdCBncl9naWQ7CiAgICBjaGFy ICoqZ3JfbWVtOwogIH07CiMgNjAgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwpleHRlcm4g dm9pZCBzZXRncmVudCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIGVuZGdyZW50ICh2b2lkKSA7CgoK ZXh0ZXJuIHN0cnVjdCBncm91cCAqZ2V0Z3JlbnQgKHZvaWQpIDsKCgoKCmV4dGVybiBzdHJ1Y3Qg Z3JvdXAgKmZnZXRncmVudCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Z3Jl bnQgKF9fY29uc3Qgc3RydWN0IGdyb3VwICpfX3Jlc3RyaWN0IF9fcCwKICAgICAgICAgICAgICAg ICAgICAgRklMRSAqX19yZXN0cmljdCBfX2YpIDsKCgoKZXh0ZXJuIHN0cnVjdCBncm91cCAqZ2V0 Z3JnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgpleHRlcm4gc3RydWN0IGdyb3VwICpnZXRncm5hbSAo X19jb25zdCBjaGFyICpfX25hbWUpIDsKIyAxMDMgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIg MwpleHRlcm4gaW50IGdldGdyZW50X3IgKHN0cnVjdCBncm91cCAqX19yZXN0cmljdCBfX3Jlc3Vs dGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBz aXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdyb3VwICoqX19y ZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgpleHRlcm4gaW50IGdldGdyZ2lkX3IgKF9fZ2lkX3QgX19n aWQsIHN0cnVjdCBncm91cCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGdyb3VwICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoK CmV4dGVybiBpbnQgZ2V0Z3JuYW1fciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ3JvdXAgKl9fcmVzdHJpY3QgX19yZXN1bHRi dWYsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6 ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncm91cCAqKl9fcmVz dHJpY3QgX19yZXN1bHQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGdyZW50X3IgKEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncm91cCAqX19y ZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZ3JvdXAgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CiMgMTM0ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvZ3JwLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxMzUgIi91c3IvbG9jYWwvaW5j bHVkZS9ncnAuaCIgMiAzCgoKZXh0ZXJuIGludCBzZXRncm91cHMgKHNpemVfdCBfX24sIF9fY29u c3QgX19naWRfdCAqX19ncm91cHMpIDsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBsaXN0IChfX2Nv bnN0IGNoYXIgKl9fdXNlciwgX19naWRfdCBfX2dyb3VwLAogICAgICAgICAgICAgICAgICAgICAg ICAgX19naWRfdCAqX19ncm91cHMsIGludCAqX19uZ3JvdXBzKSA7CgoKCgpleHRlcm4gaW50IGlu aXRncm91cHMgKF9fY29uc3QgY2hhciAqX191c2VyLCBfX2dpZF90IF9fZ3JvdXApIDsKCgoKCiMg MTcwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxNzggImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAx ICIvdXNyL2xvY2FsL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVk ZS9lcnJuby5oIiAzCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEg MwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9h c20vZXJybm8uaCIgMSAzCiMgNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIg MwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9s b2NhbC9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBp bnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK IyAzNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvZXJybm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUsICpw cm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKCiMgNjkgIi91c3IvbG9jYWwvaW5jbHVk ZS9lcnJuby5oIiAzCnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgMTc5ICJpbmNsdWRlL2luY2x1ZGVz LmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS91dGltZS5oIiAxIDMKIyAyOCAiL3Vzci9s b2NhbC9pbmNsdWRlL3V0aW1lLmgiIDMKCiMgMzggIi91c3IvbG9jYWwvaW5jbHVkZS91dGltZS5o IiAzCnN0cnVjdCB1dGltYnVmCiAgewogICAgX190aW1lX3QgYWN0aW1lOwogICAgX190aW1lX3Qg bW9kdGltZTsKICB9OwoKCgpleHRlcm4gaW50IHV0aW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwK ICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqX19maWxlX3RpbWVzKSA7 CgoKIyAxODIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDE5NiAiaW5jbHVkZS9pbmNsdWRlcy5o IgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nbG9iLmgiIDEgMwojIDExMSAiL3Vzci9sb2NhbC9p bmNsdWRlL2dsb2IuaCIgMwpzdHJ1Y3Qgc3RhdDsKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHNp emVfdCBnbF9wYXRoYzsKICAgIGNoYXIgKipnbF9wYXRodjsKICAgIHNpemVfdCBnbF9vZmZzOwog ICAgaW50IGdsX2ZsYWdzOwoKCgogICAgdm9pZCAoKmdsX2Nsb3NlZGlyKSAodm9pZCAqKTsKCiAg ICBzdHJ1Y3QgZGlyZW50ICooKmdsX3JlYWRkaXIpICh2b2lkICopOwoKCgogICAgdm9pZCAqICgq Z2xfb3BlbmRpcikgKF9fY29uc3QgY2hhciAqKTsKCiAgICBpbnQgKCpnbF9sc3RhdCkgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCwgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QpOwoKICAgIGludCAo KmdsX3N0YXQpIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QsIHN0cnVjdCBzdGF0ICpfX3Jlc3Ry aWN0KTsKCgoKCiAgfSBnbG9iX3Q7CgoKCnN0cnVjdCBzdGF0NjQ7Cgp0eXBlZGVmIHN0cnVjdAog IHsKICAgIHNpemVfdCBnbF9wYXRoYzsKICAgIGNoYXIgKipnbF9wYXRodjsKICAgIHNpemVfdCBn bF9vZmZzOwogICAgaW50IGdsX2ZsYWdzOwoKCgogICAgdm9pZCAoKmdsX2Nsb3NlZGlyKSAodm9p ZCAqKTsKCiAgICBzdHJ1Y3QgZGlyZW50NjQgKigqZ2xfcmVhZGRpcikgKHZvaWQgKik7CgoKCiAg ICB2b2lkICogKCpnbF9vcGVuZGlyKSAoX19jb25zdCBjaGFyICopOwoKICAgIGludCAoKmdsX2xz dGF0KSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0 KTsKCiAgICBpbnQgKCpnbF9zdGF0KSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBzdHJ1Y3Qg c3RhdDY0ICpfX3Jlc3RyaWN0KTsKCgoKCgogIH0gZ2xvYjY0X3Q7CiMgMTkzICIvdXNyL2xvY2Fs L2luY2x1ZGUvZ2xvYi5oIiAzCmV4dGVybiBpbnQgZ2xvYiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcGF0dGVybiwgaW50IF9fZmxhZ3MsIGludCAoKl9fZXJyZnVuYykgKF9fY29uc3QgY2hh ciAqLCBpbnQpLCBnbG9iX3QgKl9fcmVzdHJpY3QgX19wZ2xvYikgX19hc21fXyAoImdsb2I2NCIp OwoKCgpleHRlcm4gdm9pZCBnbG9iZnJlZSAoZ2xvYl90ICpfX3BnbG9iKSBfX2FzbV9fICgiZ2xv YmZyZWU2NCIpOwoKCgpleHRlcm4gaW50IGdsb2I2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fcGF0dGVybiwgaW50IF9fZmxhZ3MsIGludCAoKl9fZXJyZnVuYykgKF9fY29uc3QgY2hhciAq LCBpbnQpLCBnbG9iNjRfdCAqX19yZXN0cmljdCBfX3BnbG9iKSA7CgoKCmV4dGVybiB2b2lkIGds b2JmcmVlNjQgKGdsb2I2NF90ICpfX3BnbG9iKSA7CiMgMjE1ICIvdXNyL2xvY2FsL2luY2x1ZGUv Z2xvYi5oIiAzCmV4dGVybiBpbnQgZ2xvYl9wYXR0ZXJuX3AgKF9fY29uc3QgY2hhciAqX19wYXR0 ZXJuLCBpbnQgX19xdW90ZSkgOwojIDE5NyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdk LmgiIDMKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUv cHdkLmgiIDIgMwojIDUwICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDMKc3RydWN0IHBhc3N3 ZAp7CiAgY2hhciAqcHdfbmFtZTsKICBjaGFyICpwd19wYXNzd2Q7CiAgX191aWRfdCBwd191aWQ7 CiAgX19naWRfdCBwd19naWQ7CiAgY2hhciAqcHdfZ2Vjb3M7CiAgY2hhciAqcHdfZGlyOwogIGNo YXIgKnB3X3NoZWxsOwp9OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDMKZXh0ZXJu IHZvaWQgc2V0cHdlbnQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBlbmRwd2VudCAodm9pZCkgOwoK CmV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRwd2VudCAodm9pZCkgOwoKCgoKZXh0ZXJuIHN0cnVj dCBwYXNzd2QgKmZnZXRwd2VudCAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHB3 ZW50IChfX2NvbnN0IHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19wLAogICAgICAgICAgICAg ICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fZikgOwoKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAq Z2V0cHd1aWQgKF9fdWlkX3QgX191aWQpIDsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdu YW0gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdk LmgiIDMKZXh0ZXJuIGludCBnZXRwd2VudF9yIChzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0IF9f cmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZm ZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dk ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgZ2V0cHd1aWRfciAoX191aWRf dCBfX3VpZCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0 IF9fcmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19i dWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFz c3dkICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBnZXRwd25hbV9yIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKCgoKZXh0 ZXJuIGludCBmZ2V0cHdlbnRfciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9f YnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmlj dCBfX3Jlc3VsdCkgOwojIDE0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3B3ZC5oIiAzCmV4dGVybiBp bnQgZ2V0cHcgKF9fdWlkX3QgX191aWQsIGNoYXIgKl9fYnVmZmVyKSA7CgoKCiMgMjAwICJpbmNs dWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4 Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDIwMyAiaW5jbHVkZS9p bmNsdWRlcy5oIiAyCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEg MwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL3N0ZGludC5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGludC5o IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjkgIi91 c3IvbG9jYWwvaW5jbHVkZS9zdGRpbnQuaCIgMiAzCiMgNTIgIi91c3IvbG9jYWwvaW5jbHVkZS9z dGRpbnQuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKCgoK CgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50NjRfdDsK CgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50 IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9u X18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWdu ZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xl YXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5z aW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCgoK Cgp0eXBlZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgaW50IGludF9m YXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYg bG9uZyBsb25nIGludCBpbnRfZmFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50 X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyBpbnQgdWludF9mYXN0NjRfdDsKIyAxMzIgIi91c3IvbG9jYWwvaW5jbHVk ZS9zdGRpbnQuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50cHRyX3Q7CiMgMTQxICIvdXNy L2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDMKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9u ZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg aW50IHVpbnRtYXhfdDsKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAz CgoKCgoKCmVudW0KICB7CiAgICBJUFBST1RPX0lQID0gMCwKCiAgICBJUFBST1RPX0hPUE9QVFMg PSAwLAoKICAgIElQUFJPVE9fSUNNUCA9IDEsCgogICAgSVBQUk9UT19JR01QID0gMiwKCiAgICBJ UFBST1RPX0lQSVAgPSA0LAoKICAgIElQUFJPVE9fVENQID0gNiwKCiAgICBJUFBST1RPX0VHUCA9 IDgsCgogICAgSVBQUk9UT19QVVAgPSAxMiwKCiAgICBJUFBST1RPX1VEUCA9IDE3LAoKICAgIElQ UFJPVE9fSURQID0gMjIsCgogICAgSVBQUk9UT19UUCA9IDI5LAoKICAgIElQUFJPVE9fSVBWNiA9 IDQxLAoKICAgIElQUFJPVE9fUk9VVElORyA9IDQzLAoKICAgIElQUFJPVE9fRlJBR01FTlQgPSA0 NCwKCiAgICBJUFBST1RPX1JTVlAgPSA0NiwKCiAgICBJUFBST1RPX0dSRSA9IDQ3LAoKICAgIElQ UFJPVE9fRVNQID0gNTAsCgogICAgSVBQUk9UT19BSCA9IDUxLAoKICAgIElQUFJPVE9fSUNNUFY2 ID0gNTgsCgogICAgSVBQUk9UT19OT05FID0gNTksCgogICAgSVBQUk9UT19EU1RPUFRTID0gNjAs CgogICAgSVBQUk9UT19NVFAgPSA5MiwKCiAgICBJUFBST1RPX0VOQ0FQID0gOTgsCgogICAgSVBQ Uk9UT19QSU0gPSAxMDMsCgogICAgSVBQUk9UT19DT01QID0gMTA4LAoKICAgIElQUFJPVE9fUkFX ID0gMjU1LAoKICAgIElQUFJPVE9fTUFYCiAgfTsKCgoKdHlwZWRlZiB1aW50MTZfdCBpbl9wb3J0 X3Q7CgoKZW51bQogIHsKICAgIElQUE9SVF9FQ0hPID0gNywKICAgIElQUE9SVF9ESVNDQVJEID0g OSwKICAgIElQUE9SVF9TWVNUQVQgPSAxMSwKICAgIElQUE9SVF9EQVlUSU1FID0gMTMsCiAgICBJ UFBPUlRfTkVUU1RBVCA9IDE1LAogICAgSVBQT1JUX0ZUUCA9IDIxLAogICAgSVBQT1JUX1RFTE5F VCA9IDIzLAogICAgSVBQT1JUX1NNVFAgPSAyNSwKICAgIElQUE9SVF9USU1FU0VSVkVSID0gMzcs CiAgICBJUFBPUlRfTkFNRVNFUlZFUiA9IDQyLAogICAgSVBQT1JUX1dIT0lTID0gNDMsCiAgICBJ UFBPUlRfTVRQID0gNTcsCgogICAgSVBQT1JUX1RGVFAgPSA2OSwKICAgIElQUE9SVF9SSkUgPSA3 NywKICAgIElQUE9SVF9GSU5HRVIgPSA3OSwKICAgIElQUE9SVF9UVFlMSU5LID0gODcsCiAgICBJ UFBPUlRfU1VQRFVQID0gOTUsCgoKICAgIElQUE9SVF9FWEVDU0VSVkVSID0gNTEyLAogICAgSVBQ T1JUX0xPR0lOU0VSVkVSID0gNTEzLAogICAgSVBQT1JUX0NNRFNFUlZFUiA9IDUxNCwKICAgIElQ UE9SVF9FRlNTRVJWRVIgPSA1MjAsCgoKICAgIElQUE9SVF9CSUZGVURQID0gNTEyLAogICAgSVBQ T1JUX1dIT1NFUlZFUiA9IDUxMywKICAgIElQUE9SVF9ST1VURVNFUlZFUiA9IDUyMCwKCgogICAg SVBQT1JUX1JFU0VSVkVEID0gMTAyNCwKCgogICAgSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAK ICB9OwoKCgp0eXBlZGVmIHVpbnQzMl90IGluX2FkZHJfdDsKc3RydWN0IGluX2FkZHIKICB7CiAg ICBpbl9hZGRyX3Qgc19hZGRyOwogIH07CiMgMTkwICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5l dC9pbi5oIiAzCnN0cnVjdCBpbjZfYWRkcgogIHsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICB1 aW50OF90IHU2X2FkZHI4WzE2XTsKICAgICAgICB1aW50MTZfdCB1Nl9hZGRyMTZbOF07CiAgICAg ICAgdWludDMyX3QgdTZfYWRkcjMyWzRdOwogICAgICB9IGluNl91OwoKCgogIH07CgpleHRlcm4g Y29uc3Qgc3RydWN0IGluNl9hZGRyIGluNmFkZHJfYW55OwpleHRlcm4gY29uc3Qgc3RydWN0IGlu Nl9hZGRyIGluNmFkZHJfbG9vcGJhY2s7CiMgMjE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5l dC9pbi5oIiAzCnN0cnVjdCBzb2NrYWRkcl9pbgogIHsKICAgIHNhX2ZhbWlseV90IHNpbl9mYW1p bHk7CiAgICBpbl9wb3J0X3Qgc2luX3BvcnQ7CiAgICBzdHJ1Y3QgaW5fYWRkciBzaW5fYWRkcjsK CgogICAgdW5zaWduZWQgY2hhciBzaW5femVyb1tzaXplb2YgKHN0cnVjdCBzb2NrYWRkcikgLQog ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZW9mICh1bnNpZ25lZCBzaG9ydCBpbnQpKSAt CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoaW5fcG9ydF90KSAtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IGluX2FkZHIpXTsKICB9OwoKCnN0cnVj dCBzb2NrYWRkcl9pbjYKICB7CiAgICBzYV9mYW1pbHlfdCBzaW42X2ZhbWlseTsKICAgIGluX3Bv cnRfdCBzaW42X3BvcnQ7CiAgICB1aW50MzJfdCBzaW42X2Zsb3dpbmZvOwogICAgc3RydWN0IGlu Nl9hZGRyIHNpbjZfYWRkcjsKICAgIHVpbnQzMl90IHNpbjZfc2NvcGVfaWQ7CiAgfTsKCgpzdHJ1 Y3QgaXB2Nl9tcmVxCiAgewoKICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwoK CiAgICB1bnNpZ25lZCBpbnQgaXB2Nm1yX2ludGVyZmFjZTsKICB9OwoKCiMgMSAiL3Vzci9sb2Nh bC9pbmNsdWRlL2JpdHMvaW4uaCIgMSAzCiMgNjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2lu LmgiIDMKc3RydWN0IGlwX29wdHMKICB7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAgICBj aGFyIGlwX29wdHNbNDBdOwogIH07CgoKc3RydWN0IGlwX21yZXEKICB7CiAgICBzdHJ1Y3QgaW5f YWRkciBpbXJfbXVsdGlhZGRyOwogICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFjZTsKICB9 OwoKCnN0cnVjdCBpcF9tcmVxbgogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7 CiAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfYWRkcmVzczsKICAgIGludCBpbXJfaWZpbmRleDsKICB9 OwoKCnN0cnVjdCBpbl9wa3RpbmZvCiAgewogICAgaW50IGlwaV9pZmluZGV4OwogICAgc3RydWN0 IGluX2FkZHIgaXBpX3NwZWNfZHN0OwogICAgc3RydWN0IGluX2FkZHIgaXBpX2FkZHI7CiAgfTsK IyAyNTEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwojIDI1OSAiL3Vzci9s b2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwpleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQz Ml90IF9fbmV0bG9uZykgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2 X3QgbnRvaHMgKHVpbnQxNl90IF9fbmV0c2hvcnQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwpleHRlcm4gdWludDMyX3QgaHRvbmwgKHVpbnQzMl90IF9faG9zdGxvbmcpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRvbnMgKHVpbnQx Nl90IF9faG9zdHNob3J0KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCiMg MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMSAzCiMgMjcxICIvdXNyL2xv Y2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKIyAzMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9u ZXRpbmV0L2luLmgiIDMKZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQgKGludCBfX3NvY2tmZCwgc3Ry dWN0IHNvY2thZGRyX2luICpfX3NvY2tfaW4pIDsKCgpleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYg KGludCBfX3NvY2tmZCwgc3RydWN0IHNvY2thZGRyX2luNiAqX19zb2NrX2luKQogICAgIDsKIyAz NjEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IGluNl9wa3RpbmZv CiAgewogICAgc3RydWN0IGluNl9hZGRyIGlwaTZfYWRkcjsKICAgIHVuc2lnbmVkIGludCBpcGk2 X2lmaW5kZXg7CiAgfTsKCgojIDIwOCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9s b2NhbC9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Fy cGEvaW5ldC5oIiAzCgoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYWRkciAoX19jb25zdCBjaGFy ICpfX2NwKSA7CgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2xuYW9mIChzdHJ1Y3QgaW5fYWRkciBf X2luKSA7CgoKCmV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21ha2VhZGRyIChpbl9hZGRyX3Qg X19uZXQsIGluX2FkZHJfdCBfX2hvc3QpCiAgICAgOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9u ZXRvZiAoc3RydWN0IGluX2FkZHIgX19pbikgOwoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0 d29yayAoX19jb25zdCBjaGFyICpfX2NwKSA7CgoKCmV4dGVybiBjaGFyICppbmV0X250b2EgKHN0 cnVjdCBpbl9hZGRyIF9faW4pIDsKCgoKCmV4dGVybiBpbnQgaW5ldF9wdG9uIChpbnQgX19hZiwg X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY3AsCiAgICAgICAgICAgICAgICAgICAgICB2b2lk ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgpleHRlcm4gX19jb25zdCBjaGFyICppbmV0X250b3Ag KGludCBfX2FmLCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19jcCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzb2NrbGVuX3QgX19sZW4p CiAgICAgOwoKCgoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYXRvbiAoX19jb25zdCBjaGFyICpf X2NwLCBzdHJ1Y3QgaW5fYWRkciAqX19pbnApIDsKCgoKZXh0ZXJuIGNoYXIgKmluZXRfbmV0YSAo aW5fYWRkcl90IF9fbmV0LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgpleHRlcm4g Y2hhciAqaW5ldF9uZXRfbnRvcCAoaW50IF9fYWYsIF9fY29uc3Qgdm9pZCAqX19jcCwgaW50IF9f Yml0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmLCBzaXplX3QgX19s ZW4pIDsKCgoKCmV4dGVybiBpbnQgaW5ldF9uZXRfcHRvbiAoaW50IF9fYWYsIF9fY29uc3QgY2hh ciAqX19jcCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2J1Ziwgc2l6ZV90IF9f bGVuKSA7CgoKCgpleHRlcm4gdW5zaWduZWQgaW50IGluZXRfbnNhcF9hZGRyIChfX2NvbnN0IGNo YXIgKl9fY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKl9fYnVmLCBpbnQgX19sZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKmluZXRfbnNhcF9udG9hIChp bnQgX19sZW4sIF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19jcCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyICpfX2J1ZikgOwoKCgojIDIwOSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAy CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGRiLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2lu Y2x1ZGUvbmV0ZGIuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvbmV0ZGIuaCIgMSAz CiMgNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvbmV0ZGIuaCIgMwojIDEgIi91c3IvbG9jYWwv Z2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi IDEgMwojIDQzICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL25ldGRiLmgiIDIgMwoKCgpzdHJ1Y3Qg cnBjZW50CnsKICBjaGFyICpyX25hbWU7CiAgY2hhciAqKnJfYWxpYXNlczsKICBpbnQgcl9udW1i ZXI7Cn07CgpleHRlcm4gdm9pZCBzZXRycGNlbnQgKGludCBfX3N0YXlvcGVuKSA7CmV4dGVybiB2 b2lkIGVuZHJwY2VudCAodm9pZCkgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnluYW1l IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnlu dW1iZXIgKGludCBfX251bWJlcikgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjZW50ICh2 b2lkKSA7CgoKZXh0ZXJuIGludCBnZXRycGNieW5hbWVfciAoX19jb25zdCBjaGFyICpfX25hbWUs IHN0cnVjdCBycGNlbnQgKl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSA7CgpleHRlcm4gaW50IGdldHJwY2J5bnVtYmVy X3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAqX19yZXN1bHRfYnVmLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSA7CgpleHRl cm4gaW50IGdldHJwY2VudF9yIChzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsIGNoYXIgKl9f YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19idWZsZW4sIHN0cnVjdCBy cGNlbnQgKipfX3Jlc3VsdCkgOwoKCgojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIg MiAzCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMgMjUg Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5j bHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9z aWdpbmZvLmgiIDIgMwojIDM5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIgMiAzCgoKCgoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL25ldGRiLmgiIDEgMwojIDI3ICIvdXNyL2xvY2Fs L2luY2x1ZGUvYml0cy9uZXRkYi5oIiAzCnN0cnVjdCBuZXRlbnQKewogIGNoYXIgKm5fbmFtZTsK ICBjaGFyICoqbl9hbGlhc2VzOwogIGludCBuX2FkZHJ0eXBlOwogIHVpbnQzMl90IG5fbmV0Owp9 OwojIDQ0ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIgMiAzCiMgNTQgIi91c3IvbG9jYWwv aW5jbHVkZS9uZXRkYi5oIiAzCgoKCmV4dGVybiBpbnQgaF9lcnJubzsKCgpleHRlcm4gaW50ICpf X2hfZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAx MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRkYi5oIiAzCmV4dGVybiB2b2lkIGhlcnJvciAoX19j b25zdCBjaGFyICpfX3N0cikgOwoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmhzdHJlcnJvciAoaW50 IF9fZXJyX251bSkgOwoKCgoKc3RydWN0IGhvc3RlbnQKewogIGNoYXIgKmhfbmFtZTsKICBjaGFy ICoqaF9hbGlhc2VzOwogIGludCBoX2FkZHJ0eXBlOwogIGludCBoX2xlbmd0aDsKICBjaGFyICoq aF9hZGRyX2xpc3Q7Cgp9OwoKCgpleHRlcm4gdm9pZCBzZXRob3N0ZW50IChpbnQgX19zdGF5X29w ZW4pIDsKCgpleHRlcm4gdm9pZCBlbmRob3N0ZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3Qg aG9zdGVudCAqZ2V0aG9zdGVudCAodm9pZCkgOwoKCgpleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdl dGhvc3RieWFkZHIgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBfX3NvY2tsZW5fdCBfX2xlbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX190eXBlKSA7CgoKZXh0ZXJu IHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK CgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZTIgKF9fY29uc3QgY2hhciAq X19uYW1lLCBpbnQgX19hZikgOwoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RlbnRfciAoc3RydWN0 IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAg ICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAogICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIDsKCmV4dGVybiBp bnQgZ2V0aG9zdGJ5YWRkcl9yIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19hZGRyLCBfX3Nv Y2tsZW5fdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3R5cGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jl c3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f YnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1l X3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJp Y3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg X19oX2Vycm5vcCkgOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1lMl9yIChfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19uYW1lLCBpbnQgX19hZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBf X3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19o X2Vycm5vcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldG5ldGVudCAoaW50IF9fc3RheV9vcGVuKSA7 CgoKZXh0ZXJuIHZvaWQgZW5kbmV0ZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3QgbmV0ZW50 ICpnZXRuZXRlbnQgKHZvaWQpIDsKCgoKZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5YWRk ciAodWludDMyX3QgX19uZXQsIGludCBfX3R5cGUpCiAgICAgOwoKCmV4dGVybiBzdHJ1Y3QgbmV0 ZW50ICpnZXRuZXRieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKCgpleHRlcm4g aW50IGdldG5ldGVudF9yIChzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwK ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f YnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmlj dCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9l cnJub3ApIDsKCmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0LCBpbnQg X190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3Ry aWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIDsKCmV4dGVybiBpbnQgZ2V0bmV0Ynlu YW1lX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0 IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19o X2Vycm5vcCkgOwoKCgoKc3RydWN0IHNlcnZlbnQKewogIGNoYXIgKnNfbmFtZTsKICBjaGFyICoq c19hbGlhc2VzOwogIGludCBzX3BvcnQ7CiAgY2hhciAqc19wcm90bzsKfTsKCgoKZXh0ZXJuIHZv aWQgc2V0c2VydmVudCAoaW50IF9fc3RheV9vcGVuKSA7CgoKZXh0ZXJuIHZvaWQgZW5kc2VydmVu dCAodm9pZCkgOwoKCgpleHRlcm4gc3RydWN0IHNlcnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpIDsK CgoKZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2YnluYW1lIChfX2NvbnN0IGNoYXIgKl9f bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg Kl9fcHJvdG8pIDsKCgoKZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0IChpbnQg X19wb3J0LCBfX2NvbnN0IGNoYXIgKl9fcHJvdG8pCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgZ2V0 c2VydmVudF9yIChzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3Qg X19yZXN1bHQpIDsKCmV4dGVybiBpbnQgZ2V0c2VydmJ5bmFtZV9yIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK CmV4dGVybiBpbnQgZ2V0c2VydmJ5cG9ydF9yIChpbnQgX19wb3J0LCBfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZXJ2 ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgoK c3RydWN0IHByb3RvZW50CnsKICBjaGFyICpwX25hbWU7CiAgY2hhciAqKnBfYWxpYXNlczsKICBp bnQgcF9wcm90bzsKfTsKCgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQgKGludCBfX3N0YXlfb3Bl bikgOwoKCmV4dGVybiB2b2lkIGVuZHByb3RvZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3Qg cHJvdG9lbnQgKmdldHByb3RvZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAq Z2V0cHJvdG9ieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0ZXJuIHN0cnVjdCBw cm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50IF9fcHJvdG8pIDsKCgoKCgpleHRlcm4gaW50 IGdldHByb3RvZW50X3IgKHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90 IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcm90b2VudCAqKl9f cmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW5hbWVfciAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9f cmVzdWx0KSA7CgpleHRlcm4gaW50IGdldHByb3RvYnludW1iZXJfciAoaW50IF9fcHJvdG8sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3Qg X19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0 cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHByb3RvZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgoKZXh0ZXJuIGlu dCBzZXRuZXRncmVudCAoX19jb25zdCBjaGFyICpfX25ldGdyb3VwKSA7CgoKZXh0ZXJuIHZvaWQg ZW5kbmV0Z3JlbnQgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBnZXRuZXRncmVudCAoY2hhciAqKl9f cmVzdHJpY3QgX19ob3N0cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp Y3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19k b21haW5wKSA7CgoKCmV4dGVybiBpbnQgaW5uZXRnciAoX19jb25zdCBjaGFyICpfX25ldGdyb3Vw LCBfX2NvbnN0IGNoYXIgKl9faG9zdCwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg Kl9fdXNlciwgX19jb25zdCBjaGFyICpkb21haW4pIDsKCgpleHRlcm4gaW50IGdldG5ldGdyZW50 X3IgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq X19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKSA7CiMgMzUxICIvdXNyL2xvY2Fs L2luY2x1ZGUvbmV0ZGIuaCIgMwpleHRlcm4gaW50IHJjbWQgKGNoYXIgKipfX3Jlc3RyaWN0IF9f YWhvc3QsIHVuc2lnbmVkIHNob3J0IGludCBfX3Jwb3J0LAogICAgICAgICAgICAgICAgIF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX2xvY3VzZXIsCiAgICAgICAgICAgICAgICAgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fcmVtdXNlciwKICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnApCiAgICAgOwoKCgpleHRl cm4gaW50IHJjbWRfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0 IGludCBfX3Jwb3J0LAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX2xvY3VzZXIsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fcmVtdXNlciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCiAgICAgICAgICAgICAgICAgICAgc2FfZmFt aWx5X3QgX19hZikgOwoKCgoKCgpleHRlcm4gaW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBf X2Fob3N0LCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fcGFzcywKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21k LCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIDsKCgoKZXh0ZXJuIGludCByZXhlY19hZiAo Y2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgaW50IF9fcnBvcnQsCiAgICAgICAgICAgICAgICAg ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAg IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Bhc3MsCiAgICAgICAgICAgICAgICAgICAgIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCwKICAg ICAgICAgICAgICAgICAgICAgc2FfZmFtaWx5X3QgX19hZikgOwoKCgoKZXh0ZXJuIGludCBydXNl cm9rIChfX2NvbnN0IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAogICAgICAgICAgICAgICAg ICAgIF9fY29uc3QgY2hhciAqX19yZW11c2VyLCBfX2NvbnN0IGNoYXIgKl9fbG9jdXNlcikgOwoK CgpleHRlcm4gaW50IHJ1c2Vyb2tfYWYgKF9fY29uc3QgY2hhciAqX19yaG9zdCwgaW50IF9fc3Vz ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9fY29u c3QgY2hhciAqX19sb2N1c2VyLAogICAgICAgICAgICAgICAgICAgICAgIHNhX2ZhbWlseV90IF9f YWYpIDsKCgoKCmV4dGVybiBpbnQgcnJlc3Zwb3J0IChpbnQgKl9fYWxwb3J0KSA7CgoKCmV4dGVy biBpbnQgcnJlc3Zwb3J0X2FmIChpbnQgKl9fYWxwb3J0LCBzYV9mYW1pbHlfdCBfX2FmKSA7CgoK CgoKCnN0cnVjdCBhZGRyaW5mbwp7CiAgaW50IGFpX2ZsYWdzOwogIGludCBhaV9mYW1pbHk7CiAg aW50IGFpX3NvY2t0eXBlOwogIGludCBhaV9wcm90b2NvbDsKICBzb2NrbGVuX3QgYWlfYWRkcmxl bjsKICBzdHJ1Y3Qgc29ja2FkZHIgKmFpX2FkZHI7CiAgY2hhciAqYWlfY2Fub25uYW1lOwogIHN0 cnVjdCBhZGRyaW5mbyAqYWlfbmV4dDsKfTsKCgoKc3RydWN0IGdhaWNiCnsKICBjb25zdCBjaGFy ICphcl9uYW1lOwogIGNvbnN0IGNoYXIgKmFyX3NlcnZpY2U7CiAgY29uc3Qgc3RydWN0IGFkZHJp bmZvICphcl9yZXF1ZXN0OwogIHN0cnVjdCBhZGRyaW5mbyAqYXJfcmVzdWx0OwoKICBpbnQgX19y ZXR1cm47CiAgaW50IF9fdW51c2VkWzVdOwp9OwojIDQ3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL25l dGRiLmgiIDMKZXh0ZXJuIGludCBnZXRhZGRyaW5mbyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgYWRkcmlu Zm8gKl9fcmVzdHJpY3QgX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRy aW5mbyAqKl9fcmVzdHJpY3QgX19wYWkpIDsKCgpleHRlcm4gdm9pZCBmcmVlYWRkcmluZm8gKHN0 cnVjdCBhZGRyaW5mbyAqX19haSkgOwoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmdhaV9zdHJlcnJv ciAoaW50IF9fZWNvZGUpIDsKCgpleHRlcm4gaW50IGdldG5hbWVpbmZvIChfX2NvbnN0IHN0cnVj dCBzb2NrYWRkciAqX19yZXN0cmljdCBfX3NhLAogICAgICAgICAgICAgICAgICAgICAgICBzb2Nr bGVuX3QgX19zYWxlbiwgY2hhciAqX19yZXN0cmljdCBfX2hvc3QsCiAgICAgICAgICAgICAgICAg ICAgICAgIHNvY2tsZW5fdCBfX2hvc3RsZW4sIGNoYXIgKl9fcmVzdHJpY3QgX19zZXJ2LAogICAg ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19zZXJ2bGVuLCB1bnNpZ25lZCBpbnQgX19m bGFncykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0YWRkcmluZm9fYSAoaW50IF9fbW9kZSwgc3RydWN0 IGdhaWNiICpfX2xpc3RbX19yZXN0cmljdF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IF9fZW50LCBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAgICAgOwoKCgoKZXh0 ZXJuIGludCBnYWlfc3VzcGVuZCAoX19jb25zdCBzdHJ1Y3QgZ2FpY2IgKl9fY29uc3QgX19saXN0 W10sIGludCBfX2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGlt ZXNwZWMgKl9fdGltZW91dCkgOwoKCmV4dGVybiBpbnQgZ2FpX2Vycm9yIChzdHJ1Y3QgZ2FpY2Ig Kl9fcmVxKSA7CgoKZXh0ZXJuIGludCBnYWlfY2FuY2VsIChzdHJ1Y3QgZ2FpY2IgKl9fZ2FpY2Jw KSA7CgoKCgojIDIxMCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNs dWRlL3N5c2xvZy5oIiAxIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3N5c2xvZy5oIiAx IDMKIyAxNjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzbG9nLmgiIDMKCgoKZXh0ZXJuIHZv aWQgY2xvc2Vsb2cgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBvcGVubG9nIChfX2NvbnN0IGNoYXIg Kl9faWRlbnQsIGludCBfX29wdGlvbiwgaW50IF9fZmFjaWxpdHkpCiAgICAgOwoKCmV4dGVybiBp bnQgc2V0bG9nbWFzayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiB2b2lkIHN5c2xvZyAoaW50IF9f cHJpLCBfX2NvbnN0IGNoYXIgKl9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y bWF0X18oX19wcmludGZfXywgMiwgMykpKTsKCgoKZXh0ZXJuIHZvaWQgdnN5c2xvZyAoaW50IF9f cHJpLCBfX2NvbnN0IGNoYXIgKl9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FwKQogICAgIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDApKSk7CgoKCiMgMiAiL3Vzci9s b2NhbC9pbmNsdWRlL3N5c2xvZy5oIiAyIDMKIyAyMTEgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmlsZS5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9p bmNsdWRlL3N5cy9maWxlLmgiIDMKCiMgNTEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmlsZS5o IiAzCmV4dGVybiBpbnQgZmxvY2sgKGludCBfX2ZkLCBpbnQgX19vcGVyYXRpb24pIDsKCgoKIyAy MTIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGlu ZXQvdGNwLmgiIDEgMwojIDg5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCIgMwpz dHJ1Y3QgdGNwaGRyCiAgewogICAgdV9pbnQxNl90IHNvdXJjZTsKICAgIHVfaW50MTZfdCBkZXN0 OwogICAgdV9pbnQzMl90IHNlcTsKICAgIHVfaW50MzJfdCBhY2tfc2VxOwoKICAgIHVfaW50MTZf dCByZXMxOjQ7CiAgICB1X2ludDE2X3QgZG9mZjo0OwogICAgdV9pbnQxNl90IGZpbjoxOwogICAg dV9pbnQxNl90IHN5bjoxOwogICAgdV9pbnQxNl90IHJzdDoxOwogICAgdV9pbnQxNl90IHBzaDox OwogICAgdV9pbnQxNl90IGFjazoxOwogICAgdV9pbnQxNl90IHVyZzoxOwogICAgdV9pbnQxNl90 IHJlczI6MjsKIyAxMTggIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIiAzCiAgICB1 X2ludDE2X3Qgd2luZG93OwogICAgdV9pbnQxNl90IGNoZWNrOwogICAgdV9pbnQxNl90IHVyZ19w dHI7Cn07CgoKZW51bQp7CiAgVENQX0VTVEFCTElTSEVEID0gMSwKICBUQ1BfU1lOX1NFTlQsCiAg VENQX1NZTl9SRUNWLAogIFRDUF9GSU5fV0FJVDEsCiAgVENQX0ZJTl9XQUlUMiwKICBUQ1BfVElN RV9XQUlULAogIFRDUF9DTE9TRSwKICBUQ1BfQ0xPU0VfV0FJVCwKICBUQ1BfTEFTVF9BQ0ssCiAg VENQX0xJU1RFTiwKICBUQ1BfQ0xPU0lORwp9OwojIDE3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL25l dGluZXQvdGNwLmgiIDMKZW51bSB0Y3BfY2Ffc3RhdGUKewogIFRDUF9DQV9PcGVuID0gMCwKICBU Q1BfQ0FfRGlzb3JkZXIgPSAxLAogIFRDUF9DQV9DV1IgPSAyLAogIFRDUF9DQV9SZWNvdmVyeSA9 IDMsCiAgVENQX0NBX0xvc3MgPSA0Cn07CgpzdHJ1Y3QgdGNwX2luZm8KewogIHVfaW50OF90IHRj cGlfc3RhdGU7CiAgdV9pbnQ4X3QgdGNwaV9jYV9zdGF0ZTsKICB1X2ludDhfdCB0Y3BpX3JldHJh bnNtaXRzOwogIHVfaW50OF90IHRjcGlfcHJvYmVzOwogIHVfaW50OF90IHRjcGlfYmFja29mZjsK ICB1X2ludDhfdCB0Y3BpX29wdGlvbnM7CiAgdV9pbnQ4X3QgdGNwaV9zbmRfd3NjYWxlIDogNCwg dGNwaV9yY3Zfd3NjYWxlIDogNDsKCiAgdV9pbnQzMl90IHRjcGlfcnRvOwogIHVfaW50MzJfdCB0 Y3BpX2F0bzsKICB1X2ludDMyX3QgdGNwaV9zbmRfbXNzOwogIHVfaW50MzJfdCB0Y3BpX3Jjdl9t c3M7CgogIHVfaW50MzJfdCB0Y3BpX3VuYWNrZWQ7CiAgdV9pbnQzMl90IHRjcGlfc2Fja2VkOwog IHVfaW50MzJfdCB0Y3BpX2xvc3Q7CiAgdV9pbnQzMl90IHRjcGlfcmV0cmFuczsKICB1X2ludDMy X3QgdGNwaV9mYWNrZXRzOwoKCiAgdV9pbnQzMl90IHRjcGlfbGFzdF9kYXRhX3NlbnQ7CiAgdV9p bnQzMl90IHRjcGlfbGFzdF9hY2tfc2VudDsKICB1X2ludDMyX3QgdGNwaV9sYXN0X2RhdGFfcmVj djsKICB1X2ludDMyX3QgdGNwaV9sYXN0X2Fja19yZWN2OwoKCiAgdV9pbnQzMl90IHRjcGlfcG10 dTsKICB1X2ludDMyX3QgdGNwaV9yY3Zfc3N0aHJlc2g7CiAgdV9pbnQzMl90IHRjcGlfcnR0Owog IHVfaW50MzJfdCB0Y3BpX3J0dHZhcjsKICB1X2ludDMyX3QgdGNwaV9zbmRfc3N0aHJlc2g7CiAg dV9pbnQzMl90IHRjcGlfc25kX2N3bmQ7CiAgdV9pbnQzMl90IHRjcGlfYWR2bXNzOwogIHVfaW50 MzJfdCB0Y3BpX3Jlb3JkZXJpbmc7Cn07CiMgMjE1ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAy MjMgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9p bl9zeXN0bS5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0u aCIgMwoKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0uaCIgMwp0eXBl ZGVmIHVfaW50MTZfdCBuX3Nob3J0Owp0eXBlZGVmIHVfaW50MzJfdCBuX2xvbmc7CnR5cGVkZWYg dV9pbnQzMl90IG5fdGltZTsKCgojIDIyNCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKCgoKCgoj IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDEgMwojIDI3ICIvdXNyL2xvY2Fs L2luY2x1ZGUvbmV0aW5ldC9pcC5oIiAzCgoKc3RydWN0IHRpbWVzdGFtcAogIHsKICAgIHVfaW50 OF90IGxlbjsKICAgIHVfaW50OF90IHB0cjsKCiAgICB1bnNpZ25lZCBpbnQgZmxhZ3M6NDsKICAg IHVuc2lnbmVkIGludCBvdmVyZmxvdzo0OwoKCgoKCgogICAgdV9pbnQzMl90IGRhdGFbOV07CiAg fTsKCnN0cnVjdCBpcGhkcgogIHsKCiAgICB1bnNpZ25lZCBpbnQgaWhsOjQ7CiAgICB1bnNpZ25l ZCBpbnQgdmVyc2lvbjo0OwoKCgoKCgogICAgdV9pbnQ4X3QgdG9zOwogICAgdV9pbnQxNl90IHRv dF9sZW47CiAgICB1X2ludDE2X3QgaWQ7CiAgICB1X2ludDE2X3QgZnJhZ19vZmY7CiAgICB1X2lu dDhfdCB0dGw7CiAgICB1X2ludDhfdCBwcm90b2NvbDsKICAgIHVfaW50MTZfdCBjaGVjazsKICAg IHVfaW50MzJfdCBzYWRkcjsKICAgIHVfaW50MzJfdCBkYWRkcjsKCiAgfTsKIyAxMDggIi91c3Iv bG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMKc3RydWN0IGlwCiAgewoKICAgIHVuc2lnbmVk IGludCBpcF9obDo0OwogICAgdW5zaWduZWQgaW50IGlwX3Y6NDsKCgoKCgogICAgdV9pbnQ4X3Qg aXBfdG9zOwogICAgdV9zaG9ydCBpcF9sZW47CiAgICB1X3Nob3J0IGlwX2lkOwogICAgdV9zaG9y dCBpcF9vZmY7CgoKCgogICAgdV9pbnQ4X3QgaXBfdHRsOwogICAgdV9pbnQ4X3QgaXBfcDsKICAg IHVfc2hvcnQgaXBfc3VtOwogICAgc3RydWN0IGluX2FkZHIgaXBfc3JjLCBpcF9kc3Q7CiAgfTsK CgoKCnN0cnVjdCBpcF90aW1lc3RhbXAKICB7CiAgICB1X2ludDhfdCBpcHRfY29kZTsKICAgIHVf aW50OF90IGlwdF9sZW47CiAgICB1X2ludDhfdCBpcHRfcHRyOwoKICAgIHVuc2lnbmVkIGludCBp cHRfZmxnOjQ7CiAgICB1bnNpZ25lZCBpbnQgaXB0X29mbHc6NDsKCgoKCgogICAgdV9pbnQzMl90 IGRhdGFbOV07CiAgfTsKIyAyNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMK CiMgMjMyICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl L3Rlcm1pb3MuaCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS90ZXJtaW9zLmgiIDMKCgoK CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdGVybWlvcy5oIiAxIDMKIyAyNCAiL3Vzci9s b2NhbC9pbmNsdWRlL2JpdHMvdGVybWlvcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190 Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2Zs YWdfdDsKCgpzdHJ1Y3QgdGVybWlvcwogIHsKICAgIHRjZmxhZ190IGNfaWZsYWc7CiAgICB0Y2Zs YWdfdCBjX29mbGFnOwogICAgdGNmbGFnX3QgY19jZmxhZzsKICAgIHRjZmxhZ190IGNfbGZsYWc7 CiAgICBjY190IGNfbGluZTsKICAgIGNjX3QgY19jY1szMl07CiAgICBzcGVlZF90IGNfaXNwZWVk OwogICAgc3BlZWRfdCBjX29zcGVlZDsKICB9OwojIDQxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGVy bWlvcy5oIiAyIDMKIyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Rlcm1pb3MuaCIgMwpleHRlcm4g c3BlZWRfdCBjZmdldG9zcGVlZCAoX19jb25zdCBzdHJ1Y3QgdGVybWlvcyAqX190ZXJtaW9zX3Ap IDsKCgpleHRlcm4gc3BlZWRfdCBjZmdldGlzcGVlZCAoX19jb25zdCBzdHJ1Y3QgdGVybWlvcyAq X190ZXJtaW9zX3ApIDsKCgpleHRlcm4gaW50IGNmc2V0b3NwZWVkIChzdHJ1Y3QgdGVybWlvcyAq X190ZXJtaW9zX3AsIHNwZWVkX3QgX19zcGVlZCkgOwoKCmV4dGVybiBpbnQgY2ZzZXRpc3BlZWQg KHN0cnVjdCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCwgc3BlZWRfdCBfX3NwZWVkKSA7CgoKCmV4dGVy biBpbnQgY2ZzZXRzcGVlZCAoc3RydWN0IHRlcm1pb3MgKl9fdGVybWlvc19wLCBzcGVlZF90IF9f c3BlZWQpIDsKCgoKCmV4dGVybiBpbnQgdGNnZXRhdHRyIChpbnQgX19mZCwgc3RydWN0IHRlcm1p b3MgKl9fdGVybWlvc19wKSA7CgoKCmV4dGVybiBpbnQgdGNzZXRhdHRyIChpbnQgX19mZCwgaW50 IF9fb3B0aW9uYWxfYWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0 IHRlcm1pb3MgKl9fdGVybWlvc19wKSA7CgoKCgpleHRlcm4gdm9pZCBjZm1ha2VyYXcgKHN0cnVj dCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCkgOwoKCgpleHRlcm4gaW50IHRjc2VuZGJyZWFrIChpbnQg X19mZCwgaW50IF9fZHVyYXRpb24pIDsKCgpleHRlcm4gaW50IHRjZHJhaW4gKGludCBfX2ZkKSA7 CgoKCmV4dGVybiBpbnQgdGNmbHVzaCAoaW50IF9fZmQsIGludCBfX3F1ZXVlX3NlbGVjdG9yKSA7 CgoKCmV4dGVybiBpbnQgdGNmbG93IChpbnQgX19mZCwgaW50IF9fYWN0aW9uKSA7CgoKCgpleHRl cm4gX19waWRfdCB0Y2dldHNpZCAoaW50IF9fZmQpIDsKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNs dWRlL3N5cy90dHlkZWZhdWx0cy5oIiAxIDMKIyAxMDMgIi91c3IvbG9jYWwvaW5jbHVkZS90ZXJt aW9zLmgiIDIgMwoKCgojIDIzNyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMjQ2ICJpbmNsdWRl L2luY2x1ZGVzLmgiCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAxIDMKIyAyOCAi L3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCgojIDYyICIvdXNyL2xvY2FsL2luY2x1ZGUv ZGlyZW50LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9kaXJlbnQuaCIgMSAzCiMg MjMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2RpcmVudC5oIiAzCnN0cnVjdCBkaXJlbnQKICB7 CgoKCgogICAgX19pbm82NF90IGRfaW5vOwogICAgX19vZmY2NF90IGRfb2ZmOwoKICAgIHVuc2ln bmVkIHNob3J0IGludCBkX3JlY2xlbjsKICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgY2hh ciBkX25hbWVbMjU2XTsKICB9OwoKCnN0cnVjdCBkaXJlbnQ2NAogIHsKICAgIF9faW5vNjRfdCBk X2lubzsKICAgIF9fb2ZmNjRfdCBkX29mZjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBkX3JlY2xl bjsKICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgY2hhciBkX25hbWVbMjU2XTsKICB9Owoj IDYzICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50LmgiIDIgMwojIDk4ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvZGlyZW50LmgiIDMKZW51bQogIHsKICAgIERUX1VOS05PV04gPSAwLAoKICAgIERUX0ZJ Rk8gPSAxLAoKICAgIERUX0NIUiA9IDIsCgogICAgRFRfRElSID0gNCwKCiAgICBEVF9CTEsgPSA2 LAoKICAgIERUX1JFRyA9IDgsCgogICAgRFRfTE5LID0gMTAsCgogICAgRFRfU09DSyA9IDEyLAoK ICAgIERUX1dIVCA9IDE0CgogIH07CiMgMTI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50Lmgi IDMKdHlwZWRlZiBzdHJ1Y3QgX19kaXJzdHJlYW0gRElSOwoKCgpleHRlcm4gRElSICpvcGVuZGly IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlZGlyIChESVIgKl9f ZGlycCkgOwojIDE0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBzdHJ1 Y3QgZGlyZW50ICpyZWFkZGlyIChESVIgKl9fZGlycCkgX19hc21fXyAoIiIgInJlYWRkaXI2NCIp OwoKCgoKCgpleHRlcm4gc3RydWN0IGRpcmVudDY0ICpyZWFkZGlyNjQgKERJUiAqX19kaXJwKSA7 CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIGludCByZWFkZGly X3IgKERJUiAqX19yZXN0cmljdCBfX2RpcnAsIHN0cnVjdCBkaXJlbnQgKl9fcmVzdHJpY3QgX19l bnRyeSwgc3RydWN0IGRpcmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fYXNtX18gKCIiICJy ZWFkZGlyNjRfciIpOwojIDE3OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVy biBpbnQgcmVhZGRpcjY0X3IgKERJUiAqX19yZXN0cmljdCBfX2RpcnAsCiAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoK CgpleHRlcm4gdm9pZCByZXdpbmRkaXIgKERJUiAqX19kaXJwKSA7CgoKCgoKZXh0ZXJuIHZvaWQg c2Vla2RpciAoRElSICpfX2RpcnAsIGxvbmcgaW50IF9fcG9zKSA7CgoKZXh0ZXJuIGxvbmcgaW50 IHRlbGxkaXIgKERJUiAqX19kaXJwKSA7CgoKCgoKZXh0ZXJuIGludCBkaXJmZCAoRElSICpfX2Rp cnApIDsKIyAyMjAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwojIDEgIi91c3IvbG9j YWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMwojIDIyMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyAyMzMgIi91 c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gaW50IHNjYW5kaXIgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2Rpciwgc3RydWN0IGRpcmVudCAqKipfX3Jlc3RyaWN0IF9fbmFt ZWxpc3QsIGludCAoKl9fc2VsZWN0b3IpIChfX2NvbnN0IHN0cnVjdCBkaXJlbnQgKiksIGludCAo Kl9fY21wKSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKSkgX19hc21fXyAoIiIgInNj YW5kaXI2NCIpOwojIDI0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBp bnQgc2NhbmRpcjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kaXIsCiAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKioqX19yZXN0cmljdCBfX25hbWVsaXN0LAogICAg ICAgICAgICAgICAgICAgICAgaW50ICgqX19zZWxlY3RvcikgKF9fY29uc3Qgc3RydWN0IGRpcmVu dDY0ICopLAogICAgICAgICAgICAgICAgICAgICAgaW50ICgqX19jbXApIChfX2NvbnN0IHZvaWQg KiwgX19jb25zdCB2b2lkICopKSA7CiMgMjU5ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50Lmgi IDMKZXh0ZXJuIGludCBhbHBoYXNvcnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lk ICpfX2UyKSBfX2FzbV9fICgiIiAiYWxwaGFzb3J0NjQiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl X18pKTsKIyAyNjkgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gaW50IGFs cGhhc29ydDY0IChfX2NvbnN0IHZvaWQgKl9fZTEsIF9fY29uc3Qgdm9pZCAqX19lMikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAyODAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJl bnQuaCIgMwpleHRlcm4gaW50IHZlcnNpb25zb3J0IChfX2NvbnN0IHZvaWQgKl9fZTEsIF9fY29u c3Qgdm9pZCAqX19lMikgX19hc21fXyAoIiIgInZlcnNpb25zb3J0NjQiKSBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKTsKIyAyOTAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRl cm4gaW50IHZlcnNpb25zb3J0NjQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpf X2UyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDMwNSAiL3Vzci9sb2NhbC9p bmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBfX3NzaXplX3QgZ2V0ZGlyZW50cmllcyAoaW50IF9f ZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmY2NF90ICpf X3Jlc3RyaWN0IF9fYmFzZXApIF9fYXNtX18gKCIiICJnZXRkaXJlbnRyaWVzNjQiKTsKIyAzMTYg Ii91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gX19zc2l6ZV90IGdldGRpcmVu dHJpZXM2NCAoaW50IF9fZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX29mZjY0X3QgKl9fcmVzdHJpY3QgX19iYXNlcCkgOwoKCgoKCiMgMjQ3 ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAyNjMgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvc3lzL21tYW4uaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVk ZS9zeXMvbW1hbi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBj LWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5j bHVkZS9zeXMvbW1hbi5oIiAyIDMKIyA0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9tbWFuLmgi IDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tbWFuLmgiIDEgMwojIDQzICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3lzL21tYW4uaCIgMiAzCgoKCgoKIyA2MiAiL3Vzci9sb2NhbC9pbmNsdWRl L3N5cy9tbWFuLmgiIDMKZXh0ZXJuIHZvaWQgKiBtbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBf X2xlbiwgaW50IF9fcHJvdCwgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZz ZXQpIF9fYXNtX18gKCIiICJtbWFwNjQiKTsKIyA3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9t bWFuLmgiIDMKZXh0ZXJuIHZvaWQgKm1tYXA2NCAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4s IGludCBfX3Byb3QsCiAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBpbnQgX19mZCwg X19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgpleHRlcm4gaW50IG11bm1hcCAodm9pZCAqX19hZGRy LCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbXByb3RlY3QgKHZvaWQgKl9fYWRkciwg c2l6ZV90IF9fbGVuLCBpbnQgX19wcm90KSA7CgoKCgpleHRlcm4gaW50IG1zeW5jICh2b2lkICpf X2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fZmxhZ3MpIDsKCgoKCmV4dGVybiBpbnQgbWFkdmlz ZSAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX2FkdmljZSkgOwoKCgpleHRlcm4g aW50IHBvc2l4X21hZHZpc2UgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19hZHZp Y2UpIDsKCgoKCmV4dGVybiBpbnQgbWxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXplX3Qg X19sZW4pIDsKCgpleHRlcm4gaW50IG11bmxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXpl X3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbWxvY2thbGwgKGludCBfX2ZsYWdzKSA7CgoKCmV4 dGVybiBpbnQgbXVubG9ja2FsbCAodm9pZCkgOwoKCgoKCmV4dGVybiB2b2lkICptcmVtYXAgKHZv aWQgKl9fYWRkciwgc2l6ZV90IF9fb2xkX2xlbiwgc2l6ZV90IF9fbmV3X2xlbiwKICAgICAgICAg ICAgICAgICAgICAgaW50IF9fbWF5X21vdmUpIDsKCgoKCgoKZXh0ZXJuIGludCBtaW5jb3JlICh2 b2lkICpfX3N0YXJ0LCBzaXplX3QgX19sZW4sIHVuc2lnbmVkIGNoYXIgKl9fdmVjKTsKCgoKCmV4 dGVybiBpbnQgc2htX29wZW4gKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19vZmxhZywgbW9k ZV90IF9fbW9kZSk7CgoKZXh0ZXJuIGludCBzaG1fdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFt ZSk7CgoKIyAyNjQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5j bHVkZS9uZXQvaWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXQvaWYuaCIgMwpz dHJ1Y3QgaWZfbmFtZWluZGV4CiAgewogICAgdW5zaWduZWQgaW50IGlmX2luZGV4OwogICAgY2hh ciAqaWZfbmFtZTsKICB9OwoKCgoKZW51bQogIHsKICAgIElGRl9VUCA9IDB4MSwKCiAgICBJRkZf QlJPQURDQVNUID0gMHgyLAoKICAgIElGRl9ERUJVRyA9IDB4NCwKCiAgICBJRkZfTE9PUEJBQ0sg PSAweDgsCgogICAgSUZGX1BPSU5UT1BPSU5UID0gMHgxMCwKCiAgICBJRkZfTk9UUkFJTEVSUyA9 IDB4MjAsCgogICAgSUZGX1JVTk5JTkcgPSAweDQwLAoKICAgIElGRl9OT0FSUCA9IDB4ODAsCgog ICAgSUZGX1BST01JU0MgPSAweDEwMCwKCgoKICAgIElGRl9BTExNVUxUSSA9IDB4MjAwLAoKCiAg ICBJRkZfTUFTVEVSID0gMHg0MDAsCgogICAgSUZGX1NMQVZFID0gMHg4MDAsCgoKICAgIElGRl9N VUxUSUNBU1QgPSAweDEwMDAsCgoKICAgIElGRl9QT1JUU0VMID0gMHgyMDAwLAoKICAgIElGRl9B VVRPTUVESUEgPSAweDQwMDAKCiAgfTsKCgoKCgoKc3RydWN0IGlmYWRkcgogIHsKICAgIHN0cnVj dCBzb2NrYWRkciBpZmFfYWRkcjsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBzdHJ1Y3Qgc29j a2FkZHIgaWZ1X2Jyb2FkYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZ1X2RzdGFkZHI7 CiAgICAgIH0gaWZhX2lmdTsKICAgIHN0cnVjdCBpZmFjZSAqaWZhX2lmcDsKICAgIHN0cnVjdCBp ZmFkZHIgKmlmYV9uZXh0OwogIH07CiMgMTEwICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0L2lmLmgi IDMKc3RydWN0IGlmbWFwCiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgbWVtX3N0YXJ0OwogICAg dW5zaWduZWQgbG9uZyBpbnQgbWVtX2VuZDsKICAgIHVuc2lnbmVkIHNob3J0IGludCBiYXNlX2Fk ZHI7CiAgICB1bnNpZ25lZCBjaGFyIGlycTsKICAgIHVuc2lnbmVkIGNoYXIgZG1hOwogICAgdW5z aWduZWQgY2hhciBwb3J0OwoKICB9OwoKCgoKCnN0cnVjdCBpZnJlcQogIHsKCgogICAgdW5pb24K ICAgICAgewogICAgICAgIGNoYXIgaWZybl9uYW1lWzE2XTsKICAgICAgfSBpZnJfaWZybjsKCiAg ICB1bmlvbgogICAgICB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfYWRkcjsKICAgICAg ICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9kc3RhZGRyOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciBp ZnJ1X2Jyb2FkYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9uZXRtYXNrOwogICAg ICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2h3YWRkcjsKICAgICAgICBzaG9ydCBpbnQgaWZydV9m bGFnczsKICAgICAgICBpbnQgaWZydV9pdmFsdWU7CiAgICAgICAgaW50IGlmcnVfbXR1OwogICAg ICAgIHN0cnVjdCBpZm1hcCBpZnJ1X21hcDsKICAgICAgICBjaGFyIGlmcnVfc2xhdmVbMTZdOwog ICAgICAgIGNoYXIgaWZydV9uZXduYW1lWzE2XTsKICAgICAgICBfX2NhZGRyX3QgaWZydV9kYXRh OwogICAgICB9IGlmcl9pZnJ1OwogIH07CiMgMTc1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0L2lm LmgiIDMKc3RydWN0IGlmY29uZgogIHsKICAgIGludCBpZmNfbGVuOwogICAgdW5pb24KICAgICAg ewogICAgICAgIF9fY2FkZHJfdCBpZmN1X2J1ZjsKICAgICAgICBzdHJ1Y3QgaWZyZXEgKmlmY3Vf cmVxOwogICAgICB9IGlmY19pZmN1OwogIH07CgoKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBp Zl9uYW1ldG9pbmRleCAoX19jb25zdCBjaGFyICpfX2lmbmFtZSkgOwpleHRlcm4gY2hhciAqaWZf aW5kZXh0b25hbWUgKHVuc2lnbmVkIGludCBfX2lmaW5kZXgsIGNoYXIgKl9faWZuYW1lKSA7CgoK ZXh0ZXJuIHN0cnVjdCBpZl9uYW1laW5kZXggKmlmX25hbWVpbmRleCAodm9pZCkgOwoKCmV4dGVy biB2b2lkIGlmX2ZyZWVuYW1laW5kZXggKHN0cnVjdCBpZl9uYW1laW5kZXggKl9fcHRyKSA7CgoK IyAyNjggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv c3lzL21vdW50LmgiIDEgMwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL21vdW50LmgiIDMK ZW51bQp7CiAgTVNfUkRPTkxZID0gMSwKCiAgTVNfTk9TVUlEID0gMiwKCiAgTVNfTk9ERVYgPSA0 LAoKICBNU19OT0VYRUMgPSA4LAoKICBNU19TWU5DSFJPTk9VUyA9IDE2LAoKICBNU19SRU1PVU5U ID0gMzIsCgogIE1TX01BTkRMT0NLID0gNjQsCgogIFNfV1JJVEUgPSAxMjgsCgogIFNfQVBQRU5E ID0gMjU2LAoKICBTX0lNTVVUQUJMRSA9IDUxMiwKCiAgTVNfTk9BVElNRSA9IDEwMjQsCgogIE1T X05PRElSQVRJTUUgPSAyMDQ4LAoKICBNU19CSU5EID0gNDA5NiwKCn07CiMgODggIi91c3IvbG9j YWwvaW5jbHVkZS9zeXMvbW91bnQuaCIgMwplbnVtCnsKICBNTlRfRk9SQ0UgPSAxCgp9OwoKCgoK CmV4dGVybiBpbnQgbW91bnQgKF9fY29uc3QgY2hhciAqX19zcGVjaWFsX2ZpbGUsIF9fY29uc3Qg Y2hhciAqX19kaXIsCiAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mc3R5cGUsIHVu c2lnbmVkIGxvbmcgaW50IF9fcndmbGFnLAogICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQg Kl9fZGF0YSkgOwoKCmV4dGVybiBpbnQgdW1vdW50IChfX2NvbnN0IGNoYXIgKl9fc3BlY2lhbF9m aWxlKSA7CgoKZXh0ZXJuIGludCB1bW91bnQyIChfX2NvbnN0IGNoYXIgKl9fc3BlY2lhbF9maWxl LCBpbnQgX19mbGFncykgOwoKCiMgMjczICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Zmcy5oIiAxIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3lzL3N0YXRmcy5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0ZnMu aCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXRmcy5oIiAxIDMKIyAyNSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdGZzLmgiIDMKc3RydWN0IHN0YXRmcwogIHsKICAgIGlu dCBmX3R5cGU7CiAgICBpbnQgZl9ic2l6ZTsKCgoKCgoKCiAgICBfX2ZzYmxrY250NjRfdCBmX2Js b2NrczsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmZyZWU7CiAgICBfX2ZzYmxrY250NjRfdCBmX2Jh dmFpbDsKICAgIF9fZnNmaWxjbnQ2NF90IGZfZmlsZXM7CiAgICBfX2ZzZmlsY250NjRfdCBmX2Zm cmVlOwoKICAgIF9fZnNpZF90IGZfZnNpZDsKICAgIGludCBmX25hbWVsZW47CiAgICBpbnQgZl9z cGFyZVs2XTsKICB9OwoKCnN0cnVjdCBzdGF0ZnM2NAogIHsKICAgIGludCBmX3R5cGU7CiAgICBp bnQgZl9ic2l6ZTsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0 X3QgZl9iZnJlZTsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0 X3QgZl9maWxlczsKICAgIF9fZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzaWRfdCBmX2Zz aWQ7CiAgICBpbnQgZl9uYW1lbGVuOwogICAgaW50IGZfc3BhcmVbNl07CiAgfTsKIyAyNyAiL3Vz ci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMiAzCgoKCgoKCgoKZXh0ZXJuIGludCBzdGF0 ZnMgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3Qgc3RhdGZzICpfX2J1ZikgX19hc21fXyAo IiIgInN0YXRmczY0Iik7CgoKCgoKCgpleHRlcm4gaW50IHN0YXRmczY0IChfX2NvbnN0IGNoYXIg Kl9fZmlsZSwgc3RydWN0IHN0YXRmczY0ICpfX2J1ZikgOwojIDUyICIvdXNyL2xvY2FsL2luY2x1 ZGUvc3lzL3N0YXRmcy5oIiAzCmV4dGVybiBpbnQgZnN0YXRmcyAoaW50IF9fZmlsZGVzLCBzdHJ1 Y3Qgc3RhdGZzICpfX2J1ZikgX19hc21fXyAoIiIgImZzdGF0ZnM2NCIpOwoKCgoKCgpleHRlcm4g aW50IGZzdGF0ZnM2NCAoaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdGZzNjQgKl9fYnVmKSA7CgoK CiMgNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy92ZnMuaCIgMiAzCiMgMjc3ICJpbmNsdWRlL2lu Y2x1ZGVzLmgiIDIKIyAzMDAgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvc3lzL3N0YXR2ZnMuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3Rh dHZmcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdHZmcy5oIiAxIDMKIyAy NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdHZmcy5oIiAzCnN0cnVjdCBzdGF0dmZzCiAg ewogICAgdW5zaWduZWQgbG9uZyBpbnQgZl9ic2l6ZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IGZf ZnJzaXplOwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGF0dmZzLmgiIDMKICAgIF9f ZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0X3QgZl9iZnJlZTsKICAgIF9f ZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0X3QgZl9maWxlczsKICAgIF9f ZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzZmlsY250NjRfdCBmX2ZhdmFpbDsKCiAgICB1 bnNpZ25lZCBsb25nIGludCBmX2ZzaWQ7CiAgICBpbnQgX19mX3VudXNlZDsKICAgIHVuc2lnbmVk IGxvbmcgaW50IGZfZmxhZzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IGZfbmFtZW1heDsKICAgIGlu dCBfX2Zfc3BhcmVbNl07CiAgfTsKCgoKc3RydWN0IHN0YXR2ZnM2NAogIHsKICAgIHVuc2lnbmVk IGxvbmcgaW50IGZfYnNpemU7CiAgICB1bnNpZ25lZCBsb25nIGludCBmX2Zyc2l6ZTsKICAgIF9f ZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0X3QgZl9iZnJlZTsKICAgIF9f ZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0X3QgZl9maWxlczsKICAgIF9f ZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzZmlsY250NjRfdCBmX2ZhdmFpbDsKICAgIHVu c2lnbmVkIGxvbmcgaW50IGZfZnNpZDsKICAgIGludCBfX2ZfdW51c2VkOwogICAgdW5zaWduZWQg bG9uZyBpbnQgZl9mbGFnOwogICAgdW5zaWduZWQgbG9uZyBpbnQgZl9uYW1lbWF4OwogICAgaW50 IF9fZl9zcGFyZVs2XTsKICB9OwoKCgoKZW51bQp7CiAgU1RfUkRPTkxZID0gMSwKCiAgU1RfTk9T VUlEID0gMiwKCgogIFNUX05PREVWID0gNCwKCiAgU1RfTk9FWEVDID0gOCwKCiAgU1RfU1lOQ0hS T05PVVMgPSAxNiwKCiAgU1RfTUFORExPQ0sgPSA2NCwKCiAgU1RfV1JJVEUgPSAxMjgsCgogIFNU X0FQUEVORCA9IDI1NiwKCiAgU1RfSU1NVVRBQkxFID0gNTEyLAoKICBTVF9OT0FUSU1FID0gMTAy NCwKCiAgU1RfTk9ESVJBVElNRQoKCn07CiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3Rh dHZmcy5oIiAyIDMKIyA0OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0dmZzLmgiIDMKCgoK CgoKCgpleHRlcm4gaW50IHN0YXR2ZnMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUs IHN0cnVjdCBzdGF0dmZzICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2FzbV9fICgiIiAic3RhdHZmczY0 Iik7CiMgNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3RhdHZmcy5oIiAzCmV4dGVybiBpbnQg c3RhdHZmczY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHN0YXR2ZnM2NCAqX19yZXN0cmljdCBfX2J1ZikgOwojIDc1ICIvdXNy L2xvY2FsL2luY2x1ZGUvc3lzL3N0YXR2ZnMuaCIgMwpleHRlcm4gaW50IGZzdGF0dmZzIChpbnQg X19maWxkZXMsIHN0cnVjdCBzdGF0dmZzICpfX2J1ZikgX19hc21fXyAoIiIgImZzdGF0dmZzNjQi KTsKCgoKCgoKZXh0ZXJuIGludCBmc3RhdHZmczY0IChpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0 dmZzNjQgKl9fYnVmKSA7CgoKCiMgMzAxICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93LmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUv c2hhZG93LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcGF0aHMuaCIgMSAzCiMgMjcgIi91 c3IvbG9jYWwvaW5jbHVkZS9zaGFkb3cuaCIgMiAzCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj IDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93LmgiIDIgMwoKCgoKCgoKCnN0cnVjdCBzcHdk CiAgewogICAgY2hhciAqc3BfbmFtcDsKICAgIGNoYXIgKnNwX3B3ZHA7CiAgICBsb25nIGludCBz cF9sc3RjaGc7CiAgICBsb25nIGludCBzcF9taW47CiAgICBsb25nIGludCBzcF9tYXg7CiAgICBs b25nIGludCBzcF93YXJuOwoKICAgIGxvbmcgaW50IHNwX2luYWN0OwoKICAgIGxvbmcgaW50IHNw X2V4cGlyZTsKCiAgICB1bnNpZ25lZCBsb25nIGludCBzcF9mbGFnOwogIH07CgoKCmV4dGVybiB2 b2lkIHNldHNwZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgZW5kc3BlbnQgKHZvaWQpIDsKCgpl eHRlcm4gc3RydWN0IHNwd2QgKmdldHNwZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHN0cnVjdCBzcHdk ICpnZXRzcG5hbSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gc3RydWN0IHNwd2Qg KnNnZXRzcGVudCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiBzdHJ1Y3Qgc3B3 ZCAqZmdldHNwZW50IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0c3BlbnQgKF9f Y29uc3Qgc3RydWN0IHNwd2QgKl9fcCwgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQg Z2V0c3BlbnRfciAoc3RydWN0IHNwd2QgKl9fcmVzdWx0X2J1ZiwgY2hhciAqX19idWZmZXIsCiAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYnVmbGVuLCBzdHJ1Y3Qgc3B3ZCAqKl9fcmVz dWx0KSA7CgpleHRlcm4gaW50IGdldHNwbmFtX3IgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzdHJ1 Y3Qgc3B3ZCAqX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVm ZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNwd2Qg KipfX3Jlc3VsdCk7CgpleHRlcm4gaW50IHNnZXRzcGVudF9yIChfX2NvbnN0IGNoYXIgKl9fc3Ry aW5nLCBzdHJ1Y3Qgc3B3ZCAqX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgc3B3ZCAqKl9fcmVzdWx0KSA7CgpleHRlcm4gaW50IGZnZXRzcGVudF9yIChGSUxFICpf X3N0cmVhbSwgc3RydWN0IHNwd2QgKl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAg ICAgY2hhciAqX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHNwd2QgKipfX3Jlc3VsdCkgOwoKCgpleHRlcm4gaW50IGxja3B3ZGYgKHZvaWQp IDsKCgpleHRlcm4gaW50IHVsY2twd2RmICh2b2lkKSA7CgoKIyAzMDUgImluY2x1ZGUvaW5jbHVk ZXMuaCIgMgojIDMyNCAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9zdHJvcHRzLmgiIDEgMwojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Ryb3B0cy5oIiAzCnR5 cGVkZWYgX190X3VzY2FsYXJfdCB0X3VzY2FsYXJfdDsKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk ZS9iaXRzL3N0cm9wdHMuaCIgMSAzCiMgMTcwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJv cHRzLmgiIDMKc3RydWN0IGJhbmRpbmZvCiAgewogICAgdW5zaWduZWQgY2hhciBiaV9wcmk7CiAg ICBpbnQgYmlfZmxhZzsKICB9OwoKc3RydWN0IHN0cmJ1ZgogIHsKICAgIGludCBtYXhsZW47CiAg ICBpbnQgbGVuOwogICAgY2hhciAqYnVmOwogIH07CgpzdHJ1Y3Qgc3RycGVlawogIHsKICAgIHN0 cnVjdCBzdHJidWYgY3RsYnVmOwogICAgc3RydWN0IHN0cmJ1ZiBkYXRhYnVmOwogICAgdF91c2Nh bGFyX3QgZmxhZ3M7CiAgfTsKCnN0cnVjdCBzdHJmZGluc2VydAogIHsKICAgIHN0cnVjdCBzdHJi dWYgY3RsYnVmOwogICAgc3RydWN0IHN0cmJ1ZiBkYXRhYnVmOwogICAgdF91c2NhbGFyX3QgZmxh Z3M7CiAgICBpbnQgZmlsZGVzOwogICAgaW50IG9mZnNldDsKICB9OwoKc3RydWN0IHN0cmlvY3Rs CiAgewogICAgaW50IGljX2NtZDsKICAgIGludCBpY190aW1vdXQ7CiAgICBpbnQgaWNfbGVuOwog ICAgY2hhciAqaWNfZHA7CiAgfTsKCnN0cnVjdCBzdHJyZWN2ZmQKICB7CiAgICBpbnQgZmQ7CiAg ICB1aWRfdCB1aWQ7CiAgICBnaWRfdCBnaWQ7CiAgICBjaGFyIF9fZmlsbFs4XTsKICB9OwoKCnN0 cnVjdCBzdHJfbWxpc3QKICB7CiAgICBjaGFyIGxfbmFtZVs4ICsgMV07CiAgfTsKCnN0cnVjdCBz dHJfbGlzdAogIHsKICAgIGludCBzbF9ubW9kczsKICAgIHN0cnVjdCBzdHJfbWxpc3QgKnNsX21v ZGxpc3Q7CiAgfTsKIyAzOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cm9wdHMuaCIgMiAzCgoKCgoK ZXh0ZXJuIGludCBpc2FzdHJlYW0gKGludCBfX2ZpbGRlcykgOwoKCmV4dGVybiBpbnQgZ2V0bXNn IChpbnQgX19maWxkZXMsIHN0cnVjdCBzdHJidWYgKl9fcmVzdHJpY3QgX19jdGxwdHIsCiAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpfX3Jlc3RyaWN0IF9fZGF0YXB0ciwKICAgICAg ICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2ZsYWdzcCkgOwoKCgpleHRlcm4gaW50IGdl dHBtc2cgKGludCBfX2ZpbGRlcywgc3RydWN0IHN0cmJ1ZiAqX19yZXN0cmljdCBfX2N0bHB0ciwK ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpfX3Jlc3RyaWN0IF9fZGF0YXB0ciwK ICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19iYW5kcCwgaW50ICpfX3Jlc3Ry aWN0IF9fZmxhZ3NwKQogICAgIDsKCgoKCmV4dGVybiBpbnQgaW9jdGwgKGludCBfX2ZkLCB1bnNp Z25lZCBsb25nIGludCBfX3JlcXVlc3QsIC4uLikgOwoKCmV4dGVybiBpbnQgcHV0bXNnIChpbnQg X19maWxkZXMsIF9fY29uc3Qgc3RydWN0IHN0cmJ1ZiAqX19jdGxwdHIsCiAgICAgICAgICAgICAg ICAgICBfX2NvbnN0IHN0cnVjdCBzdHJidWYgKl9fZGF0YXB0ciwgaW50IF9fZmxhZ3MpIDsKCgpl eHRlcm4gaW50IHB1dHBtc2cgKGludCBfX2ZpbGRlcywgX19jb25zdCBzdHJ1Y3Qgc3RyYnVmICpf X2N0bHB0ciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBzdHJidWYgKl9fZGF0 YXB0ciwgaW50IF9fYmFuZCwgaW50IF9fZmxhZ3MpCiAgICAgOwoKCgpleHRlcm4gaW50IGZhdHRh Y2ggKGludCBfX2ZpbGRlcywgX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgpleHRlcm4gaW50IGZk ZXRhY2ggKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKIyAzMjUgImluY2x1ZGUvaW5jbHVkZXMu aCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9wb2xsLmgiIDEgMwojIDEgIi91c3IvbG9j YWwvaW5jbHVkZS9zeXMvcG9sbC5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9w b2xsLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb2xsLmgiIDEgMwojIDI3ICIv dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3BvbGwuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgbmZkc190OwoKCnN0cnVjdCBwb2xsZmQKICB7CiAgICBpbnQgZmQ7CiAgICBzaG9ydCBp bnQgZXZlbnRzOwogICAgc2hvcnQgaW50IHJldmVudHM7CiAgfTsKCgoKCgoKCgoKZXh0ZXJuIGlu dCBwb2xsIChzdHJ1Y3QgcG9sbGZkICpfX2ZkcywgbmZkc190IF9fbmZkcywgaW50IF9fdGltZW91 dCkgOwoKCiMgMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3BvbGwuaCIgMiAzCiMgMzI5ICJpbmNsdWRl L2luY2x1ZGVzLmgiIDIKIyAzNTQgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2Fs L2luY2x1ZGUvcnBjL3JwYy5oIiAxIDMKIyA0MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMu aCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMSAzCiMgMzYgIi91c3Iv bG9jYWwvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBib29sX3Q7CnR5cGVkZWYg aW50IGVudW1fdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm9nX3Q7CnR5cGVkZWYgdW5z aWduZWQgbG9uZyBycGN2ZXJzX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm9jX3Q7CnR5 cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm90X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNw b3J0X3Q7CiMgNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwoKCgojIDEgIi91 c3IvbG9jYWwvaW5jbHVkZS9ycGMveGRyLmgiIDEgMwojIDQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUv cnBjL3hkci5oIiAzCgojIDgzICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3hkci5oIiAzCmVudW0g eGRyX29wIHsKICBYRFJfRU5DT0RFID0gMCwKICBYRFJfREVDT0RFID0gMSwKICBYRFJfRlJFRSA9 IDIKfTsKIyAxMTEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMveGRyLmgiIDMKdHlwZWRlZiBzdHJ1 Y3QgWERSIFhEUjsKc3RydWN0IFhEUgogIHsKICAgIGVudW0geGRyX29wIHhfb3A7CiAgICBzdHJ1 Y3QgeGRyX29wcwogICAgICB7CiAgICAgICAgYm9vbF90ICgqeF9nZXRsb25nKSAoWERSICpfX3hk cnMsIGxvbmcgKl9fbHApOwoKICAgICAgICBib29sX3QgKCp4X3B1dGxvbmcpIChYRFIgKl9feGRy cywgX19jb25zdCBsb25nICpfX2xwKTsKCiAgICAgICAgYm9vbF90ICgqeF9nZXRieXRlcykgKFhE UiAqX194ZHJzLCBjYWRkcl90IF9fYWRkciwgdV9pbnQgX19sZW4pOwoKICAgICAgICBib29sX3Qg KCp4X3B1dGJ5dGVzKSAoWERSICpfX3hkcnMsIF9fY29uc3QgY2hhciAqX19hZGRyLCB1X2ludCBf X2xlbik7CgogICAgICAgIHVfaW50ICgqeF9nZXRwb3N0bikgKF9fY29uc3QgWERSICpfX3hkcnMp OwoKICAgICAgICBib29sX3QgKCp4X3NldHBvc3RuKSAoWERSICpfX3hkcnMsIHVfaW50IF9fcG9z KTsKCiAgICAgICAgaW50MzJfdCAqKCp4X2lubGluZSkgKFhEUiAqX194ZHJzLCBpbnQgX19sZW4p OwoKICAgICAgICB2b2lkICgqeF9kZXN0cm95KSAoWERSICpfX3hkcnMpOwoKICAgICAgICBib29s X3QgKCp4X2dldGludDMyKSAoWERSICpfX3hkcnMsIGludDMyX3QgKl9faXApOwoKICAgICAgICBi b29sX3QgKCp4X3B1dGludDMyKSAoWERSICpfX3hkcnMsIF9fY29uc3QgaW50MzJfdCAqX19pcCk7 CgogICAgICB9CiAgICAgKnhfb3BzOwogICAgY2FkZHJfdCB4X3B1YmxpYzsKICAgIGNhZGRyX3Qg eF9wcml2YXRlOwogICAgY2FkZHJfdCB4X2Jhc2U7CiAgICBpbnQgeF9oYW5keTsKICB9OwojIDE1 NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy94ZHIuaCIgMwp0eXBlZGVmIGJvb2xfdCAoKnhkcnBy b2NfdCkgKFhEUiAqLCB2b2lkICosLi4uKTsKIyAyMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv eGRyLmgiIDMKc3RydWN0IHhkcl9kaXNjcmltCnsKICBpbnQgdmFsdWU7CiAgeGRycHJvY190IHBy b2M7Cn07CiMgMjg5ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3hkci5oIiAzCmV4dGVybiBib29s X3QgeGRyX3ZvaWQgKHZvaWQpIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfc2hvcnQgKFhEUiAqX194ZHJz LCBzaG9ydCAqX19zcCkgOwpleHRlcm4gYm9vbF90IHhkcl91X3Nob3J0IChYRFIgKl9feGRycywg dV9zaG9ydCAqX191c3ApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfaW50IChYRFIgKl9feGRycywgaW50 ICpfX2lwKSA7CmV4dGVybiBib29sX3QgeGRyX3VfaW50IChYRFIgKl9feGRycywgdV9pbnQgKl9f dXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfbG9uZyAoWERSICpfX3hkcnMsIGxvbmcgKl9fbHApIDsK ZXh0ZXJuIGJvb2xfdCB4ZHJfdV9sb25nIChYRFIgKl9feGRycywgdV9sb25nICpfX3VscCkgOwpl eHRlcm4gYm9vbF90IHhkcl9oeXBlciAoWERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHApIDsKZXh0 ZXJuIGJvb2xfdCB4ZHJfdV9oeXBlciAoWERSICpfX3hkcnMsIHVfcXVhZF90ICpfX3VsbHApIDsK ZXh0ZXJuIGJvb2xfdCB4ZHJfbG9uZ2xvbmdfdCAoWERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHAp IDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdV9sb25nbG9uZ190IChYRFIgKl9feGRycywgdV9xdWFkX3Qg Kl9fdWxscCkgOwpleHRlcm4gYm9vbF90IHhkcl9pbnQ4X3QgKFhEUiAqX194ZHJzLCBpbnQ4X3Qg Kl9faXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdWludDhfdCAoWERSICpfX3hkcnMsIHVpbnQ4X3Qg Kl9fdXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfaW50MTZfdCAoWERSICpfX3hkcnMsIGludDE2X3Qg Kl9faXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdWludDE2X3QgKFhEUiAqX194ZHJzLCB1aW50MTZf dCAqX191cCkgOwpleHRlcm4gYm9vbF90IHhkcl9pbnQzMl90IChYRFIgKl9feGRycywgaW50MzJf dCAqX19pcCkgOwpleHRlcm4gYm9vbF90IHhkcl91aW50MzJfdCAoWERSICpfX3hkcnMsIHVpbnQz Ml90ICpfX3VwKSA7CmV4dGVybiBib29sX3QgeGRyX2ludDY0X3QgKFhEUiAqX194ZHJzLCBpbnQ2 NF90ICpfX2lwKSA7CmV4dGVybiBib29sX3QgeGRyX3VpbnQ2NF90IChYRFIgKl9feGRycywgdWlu dDY0X3QgKl9fdXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfYm9vbCAoWERSICpfX3hkcnMsIGJvb2xf dCAqX19icCkgOwpleHRlcm4gYm9vbF90IHhkcl9lbnVtIChYRFIgKl9feGRycywgZW51bV90ICpf X2VwKSA7CmV4dGVybiBib29sX3QgeGRyX2FycmF5IChYRFIgKiBfeGRycywgY2FkZHJfdCAqX19h ZGRycCwgdV9pbnQgKl9fc2l6ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX21h eHNpemUsIHVfaW50IF9fZWxzaXplLCB4ZHJwcm9jX3QgX19lbHByb2MpCiAgICAgOwpleHRlcm4g Ym9vbF90IHhkcl9ieXRlcyAoWERSICpfX3hkcnMsIGNoYXIgKipfX2NwcCwgdV9pbnQgKl9fc2l6 ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX21heHNpemUpIDsKZXh0ZXJuIGJv b2xfdCB4ZHJfb3BhcXVlIChYRFIgKl9feGRycywgY2FkZHJfdCBfX2NwLCB1X2ludCBfX2NudCkg OwpleHRlcm4gYm9vbF90IHhkcl9zdHJpbmcgKFhEUiAqX194ZHJzLCBjaGFyICoqX19jcHAsIHVf aW50IF9fbWF4c2l6ZSkgOwpleHRlcm4gYm9vbF90IHhkcl91bmlvbiAoWERSICpfX3hkcnMsIGVu dW1fdCAqX19kc2NtcCwgY2hhciAqX191bnAsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv bnN0IHN0cnVjdCB4ZHJfZGlzY3JpbSAqX19jaG9pY2VzLAogICAgICAgICAgICAgICAgICAgICAg ICAgeGRycHJvY190IGRmYXVsdCkgOwpleHRlcm4gYm9vbF90IHhkcl9jaGFyIChYRFIgKl9feGRy cywgY2hhciAqX19jcCkgOwpleHRlcm4gYm9vbF90IHhkcl91X2NoYXIgKFhEUiAqX194ZHJzLCB1 X2NoYXIgKl9fY3ApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdmVjdG9yIChYRFIgKl9feGRycywgY2hh ciAqX19iYXNlcCwgdV9pbnQgX19uZWxlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1X2lu dCBfX2VsZW1zaXplLCB4ZHJwcm9jX3QgX194ZHJfZWxlbSkgOwpleHRlcm4gYm9vbF90IHhkcl9m bG9hdCAoWERSICpfX3hkcnMsIGZsb2F0ICpfX2ZwKSA7CmV4dGVybiBib29sX3QgeGRyX2RvdWJs ZSAoWERSICpfX3hkcnMsIGRvdWJsZSAqX19kcCkgOwpleHRlcm4gYm9vbF90IHhkcl9yZWZlcmVu Y2UgKFhEUiAqX194ZHJzLCBjYWRkcl90ICpfX3hwcCwgdV9pbnQgX19zaXplLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhkcnByb2NfdCBfX3Byb2MpIDsKZXh0ZXJuIGJvb2xfdCB4ZHJf cG9pbnRlciAoWERSICpfX3hkcnMsIGNoYXIgKipfX29ianBwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICB1X2ludCBfX29ial9zaXplLCB4ZHJwcm9jX3QgX194ZHJfb2JqKSA7CmV4dGVybiBi b29sX3QgeGRyX3dyYXBzdHJpbmcgKFhEUiAqX194ZHJzLCBjaGFyICoqX19jcHApIDsKZXh0ZXJu IHVfbG9uZyB4ZHJfc2l6ZW9mICh4ZHJwcm9jX3QsIHZvaWQgKikgOwoKCgoKCgpzdHJ1Y3QgbmV0 b2JqCnsKICB1X2ludCBuX2xlbjsKICBjaGFyICpuX2J5dGVzOwp9Owp0eXBlZGVmIHN0cnVjdCBu ZXRvYmogbmV0b2JqOwpleHRlcm4gYm9vbF90IHhkcl9uZXRvYmogKFhEUiAqX194ZHJzLCBzdHJ1 Y3QgbmV0b2JqICpfX25wKSA7CgoKCgoKCgpleHRlcm4gdm9pZCB4ZHJtZW1fY3JlYXRlIChYRFIg Kl9feGRycywgX19jb25zdCBjYWRkcl90IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgdV9pbnQgX19zaXplLCBlbnVtIHhkcl9vcCBfX3hvcCkgOwoKCmV4dGVybiB2b2lkIHhkcnN0 ZGlvX2NyZWF0ZSAoWERSICpfX3hkcnMsIEZJTEUgKl9fZmlsZSwgZW51bSB4ZHJfb3AgX194b3Ap CiAgICAgOwoKCmV4dGVybiB2b2lkIHhkcnJlY19jcmVhdGUgKFhEUiAqX194ZHJzLCB1X2ludCBf X3NlbmRzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX3JlY3ZzaXplLCBj YWRkcl90IF9fdGNwX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqX19y ZWFkaXQpIChjaGFyICosIGNoYXIgKiwgaW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICgqX193cml0ZWl0KSAoY2hhciAqLCBjaGFyICosIGludCkpIDsKCgpleHRlcm4gYm9vbF90 IHhkcnJlY19lbmRvZnJlY29yZCAoWERSICpfX3hkcnMsIGJvb2xfdCBfX3NlbmRub3cpIDsKCgpl eHRlcm4gYm9vbF90IHhkcnJlY19za2lwcmVjb3JkIChYRFIgKl9feGRycykgOwoKCmV4dGVybiBi b29sX3QgeGRycmVjX2VvZiAoWERSICpfX3hkcnMpIDsKCgpleHRlcm4gdm9pZCB4ZHJfZnJlZSAo eGRycHJvY190IF9fcHJvYywgY2hhciAqX19vYmpwKSA7CgoKIyA0NiAiL3Vzci9sb2NhbC9pbmNs dWRlL3JwYy9ycGMuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2F1dGguaCIg MSAzCiMgNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aC5oIiAzCgoKCgoKCgoKZW51bSBh dXRoX3N0YXQgewogICAgICAgIEFVVEhfT0s9MCwKCgoKICAgICAgICBBVVRIX0JBRENSRUQ9MSwK ICAgICAgICBBVVRIX1JFSkVDVEVEQ1JFRD0yLAogICAgICAgIEFVVEhfQkFEVkVSRj0zLAogICAg ICAgIEFVVEhfUkVKRUNURURWRVJGPTQsCiAgICAgICAgQVVUSF9UT09XRUFLPTUsCgoKCiAgICAg ICAgQVVUSF9JTlZBTElEUkVTUD02LAogICAgICAgIEFVVEhfRkFJTEVEPTcKfTsKCnVuaW9uIGRl c19ibG9jayB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVfaW50MzJfdCBoaWdo OwogICAgICAgICAgICAgICAgdV9pbnQzMl90IGxvdzsKICAgICAgICB9IGtleTsKICAgICAgICBj aGFyIGNbOF07Cn07CnR5cGVkZWYgdW5pb24gZGVzX2Jsb2NrIGRlc19ibG9jazsKZXh0ZXJuIGJv b2xfdCB4ZHJfZGVzX2Jsb2NrIChYRFIgKl9feGRycywgZGVzX2Jsb2NrICpfX2Jsa3ApIDsKCgoK CnN0cnVjdCBvcGFxdWVfYXV0aCB7CiAgICAgICAgZW51bV90IG9hX2ZsYXZvcjsKICAgICAgICBj YWRkcl90IG9hX2Jhc2U7CiAgICAgICAgdV9pbnQgb2FfbGVuZ3RoOwp9OwoKCgoKdHlwZWRlZiBz dHJ1Y3QgQVVUSCBBVVRIOwpzdHJ1Y3QgQVVUSCB7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIGFoX2Ny ZWQ7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIGFoX3ZlcmY7CiAgdW5pb24gZGVzX2Jsb2NrIGFoX2tl eTsKICBzdHJ1Y3QgYXV0aF9vcHMgewogICAgdm9pZCAoKmFoX25leHR2ZXJmKSAoQVVUSCAqKTsK ICAgIGludCAoKmFoX21hcnNoYWwpIChBVVRIICosIFhEUiAqKTsKICAgIGludCAoKmFoX3ZhbGlk YXRlKSAoQVVUSCAqLCBzdHJ1Y3Qgb3BhcXVlX2F1dGggKik7CgogICAgaW50ICgqYWhfcmVmcmVz aCkgKEFVVEggKik7CiAgICB2b2lkICgqYWhfZGVzdHJveSkgKEFVVEggKik7CiAgfSAqYWhfb3Bz OwogIGNhZGRyX3QgYWhfcHJpdmF0ZTsKfTsKIyAxNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv YXV0aC5oIiAzCmV4dGVybiBzdHJ1Y3Qgb3BhcXVlX2F1dGggX251bGxfYXV0aDsKIyAxNjEgIi91 c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aC5oIiAzCmV4dGVybiBBVVRIICphdXRodW5peF9jcmVh dGUgKGNoYXIgKl9fbWFjaG5hbWUsIF9fdWlkX3QgX191aWQsIF9fZ2lkX3QgX19naWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2xlbiwgX19naWRfdCAqX19hdXBfZ2lkcykg OwpleHRlcm4gQVVUSCAqYXV0aHVuaXhfY3JlYXRlX2RlZmF1bHQgKHZvaWQpIDsKZXh0ZXJuIEFV VEggKmF1dGhub25lX2NyZWF0ZSAodm9pZCkgOwpleHRlcm4gQVVUSCAqYXV0aGRlc19jcmVhdGUg KGNvbnN0IGNoYXIgKl9fc2VydmVybmFtZSwgdV9pbnQgX193aW5kb3csCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpfX3N5bmNhZGRyLCBkZXNfYmxvY2sgKl9f Y2tleSkKICAgICA7CmV4dGVybiBBVVRIICphdXRoZGVzX3BrX2NyZWF0ZSAoY29uc3QgY2hhciAq LCBuZXRvYmogKiwgdV9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHNvY2thZGRyICosIGRlc19ibG9jayAqKSA7CiMgMTg1ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBj L2F1dGguaCIgMwpleHRlcm4gaW50IGdldG5ldG5hbWUgKGNoYXIgKikgOwpleHRlcm4gaW50IGhv c3QybmV0bmFtZSAoY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICopIDsKZXh0 ZXJuIGludCB1c2VyMm5ldG5hbWUgKGNoYXIgKiwgX19jb25zdCB1aWRfdCwgX19jb25zdCBjaGFy ICopIDsKZXh0ZXJuIGludCBuZXRuYW1lMnVzZXIgKF9fY29uc3QgY2hhciAqLCB1aWRfdCAqLCBn aWRfdCAqLCBpbnQgKiwgZ2lkX3QgKikKICAgICA7CmV4dGVybiBpbnQgbmV0bmFtZTJob3N0IChf X2NvbnN0IGNoYXIgKiwgY2hhciAqLCBfX2NvbnN0IGludCkgOwoKCgoKCgpleHRlcm4gaW50IGtl eV9kZWNyeXB0c2Vzc2lvbiAoY2hhciAqLCBkZXNfYmxvY2sgKikgOwpleHRlcm4gaW50IGtleV9k ZWNyeXB0c2Vzc2lvbl9wayAoY2hhciAqLCBuZXRvYmogKiwgZGVzX2Jsb2NrICopIDsKZXh0ZXJu IGludCBrZXlfZW5jcnlwdHNlc3Npb24gKGNoYXIgKiwgZGVzX2Jsb2NrICopIDsKZXh0ZXJuIGlu dCBrZXlfZW5jcnlwdHNlc3Npb25fcGsgKGNoYXIgKiwgbmV0b2JqICosIGRlc19ibG9jayAqKSA7 CmV4dGVybiBpbnQga2V5X2dlbmRlcyAoZGVzX2Jsb2NrICopIDsKZXh0ZXJuIGludCBrZXlfc2V0 c2VjcmV0IChjaGFyICopIDsKZXh0ZXJuIGludCBrZXlfc2VjcmV0a2V5X2lzX3NldCAodm9pZCkg OwpleHRlcm4gaW50IGtleV9nZXRfY29udiAoY2hhciAqLCBkZXNfYmxvY2sgKikgOwoKCgoKZXh0 ZXJuIGJvb2xfdCB4ZHJfb3BhcXVlX2F1dGggKFhEUiAqLCBzdHJ1Y3Qgb3BhcXVlX2F1dGggKikg OwoKCiMgNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwoKCiMgMSAiL3Vzci9s b2NhbC9pbmNsdWRlL3JwYy9jbG50LmgiIDEgMwojIDQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBj L2NsbnQuaCIgMwoKCgoKCgoKZW51bSBjbG50X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNTPTAs CgoKCiAgICAgICAgUlBDX0NBTlRFTkNPREVBUkdTPTEsCiAgICAgICAgUlBDX0NBTlRERUNPREVS RVM9MiwKICAgICAgICBSUENfQ0FOVFNFTkQ9MywKICAgICAgICBSUENfQ0FOVFJFQ1Y9NCwKICAg ICAgICBSUENfVElNRURPVVQ9NSwKCgoKICAgICAgICBSUENfVkVSU01JU01BVENIPTYsCiAgICAg ICAgUlBDX0FVVEhFUlJPUj03LAogICAgICAgIFJQQ19QUk9HVU5BVkFJTD04LAogICAgICAgIFJQ Q19QUk9HVkVSU01JU01BVENIPTksCiAgICAgICAgUlBDX1BST0NVTkFWQUlMPTEwLAogICAgICAg IFJQQ19DQU5UREVDT0RFQVJHUz0xMSwKICAgICAgICBSUENfU1lTVEVNRVJST1I9MTIsCiAgICAg ICAgUlBDX05PQlJPQURDQVNUID0gMjEsCgoKCiAgICAgICAgUlBDX1VOS05PV05IT1NUPTEzLAog ICAgICAgIFJQQ19VTktOT1dOUFJPVE89MTcsCiAgICAgICAgUlBDX1VOS05PV05BRERSID0gMTks CgoKCgogICAgICAgIFJQQ19SUENCRkFJTFVSRT0xNCwKCiAgICAgICAgUlBDX1BST0dOT1RSRUdJ U1RFUkVEPTE1LAogICAgICAgIFJQQ19OMkFYTEFURUZBSUxVUkUgPSAyMiwKCgoKICAgICAgICBS UENfRkFJTEVEPTE2LAogICAgICAgIFJQQ19JTlRSPTE4LAogICAgICAgIFJQQ19UTElFUlJPUj0y MCwKICAgICAgICBSUENfVURFUlJPUj0yMywKCgoKICAgICAgICBSUENfSU5QUk9HUkVTUyA9IDI0 LAogICAgICAgIFJQQ19TVEFMRVJBQ0hBTkRMRSA9IDI1Cn07CgoKCgoKc3RydWN0IHJwY19lcnIg ewogIGVudW0gY2xudF9zdGF0IHJlX3N0YXR1czsKICB1bmlvbiB7CiAgICBpbnQgUkVfZXJybm87 CiAgICBlbnVtIGF1dGhfc3RhdCBSRV93aHk7CiAgICBzdHJ1Y3QgewogICAgICB1X2xvbmcgbG93 OwogICAgICB1X2xvbmcgaGlnaDsKICAgIH0gUkVfdmVyczsKICAgIHN0cnVjdCB7CiAgICAgIGxv bmcgczE7CiAgICAgIGxvbmcgczI7CiAgICB9IFJFX2xiOwogIH0gcnU7CgoKCgp9OwoKCgoKCgoK dHlwZWRlZiBzdHJ1Y3QgQ0xJRU5UIENMSUVOVDsKc3RydWN0IENMSUVOVCB7CiAgQVVUSCAqY2xf YXV0aDsKICBzdHJ1Y3QgY2xudF9vcHMgewogICAgZW51bSBjbG50X3N0YXQgKCpjbF9jYWxsKSAo Q0xJRU5UICosIHVfbG9uZywgeGRycHJvY190LCBjYWRkcl90LCB4ZHJwcm9jX3QsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90LCBzdHJ1Y3QgdGltZXZhbCk7CgogICAgdm9p ZCAoKmNsX2Fib3J0KSAodm9pZCk7CiAgICB2b2lkICgqY2xfZ2V0ZXJyKSAoQ0xJRU5UICosIHN0 cnVjdCBycGNfZXJyICopOwoKICAgIGJvb2xfdCAoKmNsX2ZyZWVyZXMpIChDTElFTlQgKiwgeGRy cHJvY190LCBjYWRkcl90KTsKCiAgICB2b2lkICgqY2xfZGVzdHJveSkgKENMSUVOVCAqKTsKICAg IGJvb2xfdCAoKmNsX2NvbnRyb2wpIChDTElFTlQgKiwgaW50LCBjaGFyICopOwoKICB9ICpjbF9v cHM7CiAgY2FkZHJfdCBjbF9wcml2YXRlOwp9OwojIDI4MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw Yy9jbG50LmgiIDMKZXh0ZXJuIENMSUVOVCAqY2xudHJhd19jcmVhdGUgKF9fY29uc3QgdV9sb25n IF9fcHJvZywgX19jb25zdCB1X2xvbmcgX192ZXJzKQogICAgIDsKIyAyOTQgIi91c3IvbG9jYWwv aW5jbHVkZS9ycGMvY2xudC5oIiAzCmV4dGVybiBDTElFTlQgKmNsbnRfY3JlYXRlIChfX2NvbnN0 IGNoYXIgKl9faG9zdCwgX19jb25zdCB1X2xvbmcgX19wcm9nLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19jb25zdCB1X2xvbmcgX192ZXJzLCBfX2NvbnN0IGNoYXIgKl9fcHJvdCkKICAg ICA7CiMgMzEwICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2NsbnQuaCIgMwpleHRlcm4gQ0xJRU5U ICpjbG50dGNwX2NyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3JhZGRyLCB1X2xvbmcgX19w cm9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIF9fdmVyc2lvbiwgaW50 ICpfX3NvY2twLCB1X2ludCBfX3NlbmRzeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVfaW50IF9fcmVjdnN6KSA7CiMgMzM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2NsbnQuaCIg MwpleHRlcm4gQ0xJRU5UICpjbG50dWRwX2NyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3Jh ZGRyLCB1X2xvbmcgX19wcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9s b25nIF9fdmVyc2lvbiwgc3RydWN0IHRpbWV2YWwgX193YWl0X3Jlc2VuZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqX19zb2NrcCkgOwpleHRlcm4gQ0xJRU5UICpjbG50dWRw X2J1ZmNyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3JhZGRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdV9sb25nIF9fcHJvZ3JhbSwgdV9sb25nIF9fdmVyc2lvbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIF9fd2FpdF9yZXNl bmQsIGludCAqX19zb2NrcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50 IF9fc2VuZHN6LCB1X2ludCBfX3JlY3ZzeikgOwojIDM1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw Yy9jbG50LmgiIDMKZXh0ZXJuIENMSUVOVCAqY2xudHVuaXhfY3JlYXRlIChzdHJ1Y3Qgc29ja2Fk ZHJfdW4gKl9fcmFkZHIsIHVfbG9uZyBfX3Byb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVfbG9uZyBfX3ZlcnNpb24sIGludCAqX19zb2NrcCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdV9pbnQgX19zZW5kc3osIHVfaW50IF9fcmVjdnN6KSA7CgoKZXh0 ZXJuIGludCBjYWxscnBjIChfX2NvbnN0IGNoYXIgKl9faG9zdCwgX19jb25zdCB1X2xvbmcgX19w cm9nbnVtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdV9sb25nIF9fdmVyc251bSwgX19j b25zdCB1X2xvbmcgX19wcm9jbnVtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgeGRycHJv Y190IF9faW5wcm9jLCBfX2NvbnN0IGNoYXIgKl9faW4sCiAgICAgICAgICAgICAgICAgICAgX19j b25zdCB4ZHJwcm9jX3QgX19vdXRwcm9jLCBjaGFyICpfX291dCkgOwpleHRlcm4gaW50IF9ycGNf ZHRhYmxlc2l6ZSAodm9pZCkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xudF9wY3JlYXRlZXJyb3IgKF9f Y29uc3QgY2hhciAqX19tc2cpIDsKZXh0ZXJuIGNoYXIgKmNsbnRfc3BjcmVhdGVlcnJvcihfX2Nv bnN0IGNoYXIgKl9fbXNnKSA7CgoKCgpleHRlcm4gdm9pZCBjbG50X3BlcnJubyAoZW51bSBjbG50 X3N0YXQgX19udW0pIDsKCgoKCmV4dGVybiB2b2lkIGNsbnRfcGVycm9yIChDTElFTlQgKl9fY2xu dCwgX19jb25zdCBjaGFyICpfX21zZykgOwoKZXh0ZXJuIGNoYXIgKmNsbnRfc3BlcnJvciAoQ0xJ RU5UICpfX2NsbnQsIF9fY29uc3QgY2hhciAqX19tc2cpIDsKCgoKCgpzdHJ1Y3QgcnBjX2NyZWF0 ZWVyciB7CiAgICAgICAgZW51bSBjbG50X3N0YXQgY2Zfc3RhdDsKICAgICAgICBzdHJ1Y3QgcnBj X2VyciBjZl9lcnJvcjsKfTsKCmV4dGVybiBzdHJ1Y3QgcnBjX2NyZWF0ZWVyciBycGNfY3JlYXRl ZXJyOwoKCgoKCgpleHRlcm4gY2hhciAqY2xudF9zcGVycm5vIChlbnVtIGNsbnRfc3RhdCBfX251 bSkgOwoKCgoKZXh0ZXJuIGludCBnZXRycGNwb3J0IChfX2NvbnN0IGNoYXIgKiBfX2hvc3QsIHVf bG9uZyBfX3Byb2dudW0sCiAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIF9fdmVyc251bSwg dV9pbnQgcHJvdG8pIDsKCgoKCgpleHRlcm4gdm9pZCBnZXRfbXlhZGRyZXNzIChzdHJ1Y3Qgc29j a2FkZHJfaW4gKikgOwoKCgoKCiMgNTIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIg MwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDEgMwojIDUwICIvdXNy L2xvY2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwoKCgoKCgoKCmVudW0gbXNnX3R5cGUgewog ICAgICAgIENBTEw9MCwKICAgICAgICBSRVBMWT0xCn07CgplbnVtIHJlcGx5X3N0YXQgewogICAg ICAgIE1TR19BQ0NFUFRFRD0wLAogICAgICAgIE1TR19ERU5JRUQ9MQp9OwoKZW51bSBhY2NlcHRf c3RhdCB7CiAgICAgICAgU1VDQ0VTUz0wLAogICAgICAgIFBST0dfVU5BVkFJTD0xLAogICAgICAg IFBST0dfTUlTTUFUQ0g9MiwKICAgICAgICBQUk9DX1VOQVZBSUw9MywKICAgICAgICBHQVJCQUdF X0FSR1M9NCwKICAgICAgICBTWVNURU1fRVJSPTUKfTsKCmVudW0gcmVqZWN0X3N0YXQgewogICAg ICAgIFJQQ19NSVNNQVRDSD0wLAogICAgICAgIEFVVEhfRVJST1I9MQp9OwojIDkxICIvdXNyL2xv Y2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwpzdHJ1Y3QgYWNjZXB0ZWRfcmVwbHkgewogICAg ICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBhcl92ZXJmOwogICAgICAgIGVudW0gYWNjZXB0X3N0YXQg YXJfc3RhdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg ICAgICAgICAgICAgICAgICB1X2xvbmcgbG93OwogICAgICAgICAgICAgICAgICAgICAgICB1X2xv bmcgaGlnaDsKICAgICAgICAgICAgICAgIH0gQVJfdmVyc2lvbnM7CiAgICAgICAgICAgICAgICBz dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90IHdoZXJlOwogICAgICAgICAg ICAgICAgICAgICAgICB4ZHJwcm9jX3QgcHJvYzsKICAgICAgICAgICAgICAgIH0gQVJfcmVzdWx0 czsKCiAgICAgICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IHJlamVjdGVkX3JlcGx5IHsKICAgICAg ICBlbnVtIHJlamVjdF9zdGF0IHJqX3N0YXQ7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGxvdzsKICAgICAgICAg ICAgICAgICAgICAgICAgdV9sb25nIGhpZ2g7CiAgICAgICAgICAgICAgICB9IFJKX3ZlcnNpb25z OwogICAgICAgICAgICAgICAgZW51bSBhdXRoX3N0YXQgUkpfd2h5OwogICAgICAgIH0gcnU7CgoK fTsKCgoKCnN0cnVjdCByZXBseV9ib2R5IHsKICAgICAgICBlbnVtIHJlcGx5X3N0YXQgcnBfc3Rh dDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNjZXB0ZWRfcmVwbHkg UlBfYXI7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVqZWN0ZWRfcmVwbHkgUlBfZHI7CiAgICAg ICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IGNhbGxfYm9keSB7CiAgICAgICAgdV9sb25nIGNiX3Jw Y3ZlcnM7CiAgICAgICAgdV9sb25nIGNiX3Byb2c7CiAgICAgICAgdV9sb25nIGNiX3ZlcnM7CiAg ICAgICAgdV9sb25nIGNiX3Byb2M7CiAgICAgICAgc3RydWN0IG9wYXF1ZV9hdXRoIGNiX2NyZWQ7 CiAgICAgICAgc3RydWN0IG9wYXF1ZV9hdXRoIGNiX3ZlcmY7Cn07CgoKCgpzdHJ1Y3QgcnBjX21z ZyB7CiAgICAgICAgdV9sb25nIHJtX3hpZDsKICAgICAgICBlbnVtIG1zZ190eXBlIHJtX2RpcmVj dGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgY2FsbF9ib2R5IFJN X2NtYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZXBseV9ib2R5IFJNX3JtYjsKICAgICAgICB9 IHJ1OwoKCn07CiMgMTczICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwpleHRl cm4gYm9vbF90IHhkcl9jYWxsbXNnIChYRFIgKl9feGRycywgc3RydWN0IHJwY19tc2cgKl9fY21z ZykgOwoKCgoKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfY2FsbGhkciAoWERSICpfX3hkcnMsIHN0cnVj dCBycGNfbXNnICpfX2Ntc2cpIDsKCgoKCgoKCmV4dGVybiBib29sX3QgeGRyX3JlcGx5bXNnIChY RFIgKl9feGRycywgc3RydWN0IHJwY19tc2cgKl9fcm1zZykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQg X3NldGVycl9yZXBseSAoc3RydWN0IHJwY19tc2cgKl9fbXNnLCBzdHJ1Y3QgcnBjX2VyciAqX19l cnJvcikKICAgICA7CgoKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCiMg MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9hdXRoX3VuaXguaCIgMSAzCiMgNTQgIi91c3IvbG9j YWwvaW5jbHVkZS9ycGMvYXV0aF91bml4LmgiIDMKCiMgNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9y cGMvYXV0aF91bml4LmgiIDMKc3RydWN0IGF1dGh1bml4X3Bhcm1zCiAgewogICAgdV9sb25nIGF1 cF90aW1lOwogICAgY2hhciAqYXVwX21hY2huYW1lOwogICAgX191aWRfdCBhdXBfdWlkOwogICAg X19naWRfdCBhdXBfZ2lkOwogICAgdV9pbnQgYXVwX2xlbjsKICAgIF9fZ2lkX3QgKmF1cF9naWRz OwogIH07CgpleHRlcm4gYm9vbF90IHhkcl9hdXRodW5peF9wYXJtcyAoWERSICpfX3hkcnMsIHN0 cnVjdCBhdXRodW5peF9wYXJtcyAqX19wKQogICAgIDsKCgoKCgoKc3RydWN0IHNob3J0X2hhbmRf dmVyZgogIHsKICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBuZXdfY3JlZDsKICB9OwoKCiMgNTYgIi91 c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9y cGMvYXV0aF9kZXMuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aF9kZXMu aCIgMwoKCgplbnVtIGF1dGhkZXNfbmFtZWtpbmQKICB7CiAgICBBRE5fRlVMTE5BTUUsCiAgICBB RE5fTklDS05BTUUKICB9OwoKCgpzdHJ1Y3QgYXV0aGRlc19mdWxsbmFtZQogIHsKICAgIGNoYXIg Km5hbWU7CiAgICBkZXNfYmxvY2sga2V5OwogICAgdWludDMyX3Qgd2luZG93OwogIH07CgoKc3Ry dWN0IGF1dGhkZXNfY3JlZAogIHsKICAgIGVudW0gYXV0aGRlc19uYW1la2luZCBhZGNfbmFtZWtp bmQ7CiAgICBzdHJ1Y3QgYXV0aGRlc19mdWxsbmFtZSBhZGNfZnVsbG5hbWU7CiAgICB1aW50MzJf dCBhZGNfbmlja25hbWU7CiAgfTsKCgpzdHJ1Y3QgcnBjX3RpbWV2YWwKICB7CiAgICB1aW50MzJf dCB0dl9zZWM7CiAgICB1aW50MzJfdCB0dl91c2VjOwogIH07CgoKc3RydWN0IGF1dGhkZXNfdmVy ZgogIHsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgcnBjX3RpbWV2YWwgYWR2X2N0 aW1lOwogICAgICAgIGRlc19ibG9jayBhZHZfeHRpbWU7CiAgICAgIH0KICAgIGFkdl90aW1lX3U7 CiAgICB1aW50MzJfdCBhZHZfaW50X3U7CiAgfTsKIyA4OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw Yy9hdXRoX2Rlcy5oIiAzCmV4dGVybiBpbnQgYXV0aGRlc19nZXR1Y3JlZCAoX19jb25zdCBzdHJ1 Y3QgYXV0aGRlc19jcmVkICogX19hZGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlk X3QgKiBfX3VpZCwgZ2lkX3QgKiBfX2dpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aG9ydCAqX19ncm91cGxlbiwgZ2lkX3QgKiBfX2dyb3VwcykgOwoKCgoKZXh0ZXJuIGludCBnZXRw dWJsaWNrZXkgKF9fY29uc3QgY2hhciAqX19uYW1lLCBjaGFyICpfX2tleSkgOwoKCgoKCgpleHRl cm4gaW50IGdldHNlY3JldGtleSAoX19jb25zdCBjaGFyICpfX25hbWUsIGNoYXIgKl9fa2V5LAog ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Bhc3N3ZCkgOwoKZXh0ZXJu IGludCBydGltZSAoc3RydWN0IHNvY2thZGRyX2luICpfX2FkZHJwLCBzdHJ1Y3QgcnBjX3RpbWV2 YWwgKl9fdGltZXAsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBycGNfdGltZXZhbCAqX190aW1l b3V0KSA7CgoKIyA1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCgoKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvcnBjL3N2Yy5oIiAxIDMKIyA0MiAiL3Vzci9sb2NhbC9pbmNsdWRl L3JwYy9zdmMuaCIgMwoKIyA2NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9zdmMuaCIgMwplbnVt IHhwcnRfc3RhdCB7CiAgICAgICAgWFBSVF9ESUVELAogICAgICAgIFhQUlRfTU9SRVJFUVMsCiAg ICAgICAgWFBSVF9JRExFCn07CgoKCgp0eXBlZGVmIHN0cnVjdCBTVkNYUFJUIFNWQ1hQUlQ7CnN0 cnVjdCBTVkNYUFJUIHsKICBpbnQgeHBfc29jazsKICB1X3Nob3J0IHhwX3BvcnQ7CiAgY29uc3Qg c3RydWN0IHhwX29wcyB7CiAgICBib29sX3QgKCp4cF9yZWN2KSAoU1ZDWFBSVCAqX194cHJ0LCBz dHJ1Y3QgcnBjX21zZyAqX19tc2cpOwoKICAgIGVudW0geHBydF9zdGF0ICgqeHBfc3RhdCkgKFNW Q1hQUlQgKl9feHBydCk7CgogICAgYm9vbF90ICgqeHBfZ2V0YXJncykgKFNWQ1hQUlQgKl9feHBy dCwgeGRycHJvY190IF9feGRyX2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YWRkcl90IGFyZ3NfcHRyKTsKICAgIGJvb2xfdCAoKnhwX3JlcGx5KSAoU1ZDWFBSVCAqX194cHJ0 LCBzdHJ1Y3QgcnBjX21zZyAqX19tc2cpOwoKICAgIGJvb2xfdCAoKnhwX2ZyZWVhcmdzKSAoU1ZD WFBSVCAqX194cHJ0LCB4ZHJwcm9jX3QgX194ZHJfYXJncywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYWRkcl90IGFyZ3NfcHRyKTsKCiAgICB2b2lkICgqeHBfZGVzdHJveSkgKFNW Q1hQUlQgKl9feHBydCk7CgogIH0gKnhwX29wczsKICBpbnQgeHBfYWRkcmxlbjsKICBzdHJ1Y3Qg c29ja2FkZHJfaW4geHBfcmFkZHI7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIHhwX3ZlcmY7CiAgY2Fk ZHJfdCB4cF9wMTsKICBjYWRkcl90IHhwX3AyOwogIGNoYXIgeHBfcGFkIFsyNTZdOwp9OwojIDE0 OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9zdmMuaCIgMwpzdHJ1Y3Qgc3ZjX3JlcSB7CiAgcnBj cHJvZ190IHJxX3Byb2c7CiAgcnBjdmVyc190IHJxX3ZlcnM7CiAgcnBjcHJvY190IHJxX3Byb2M7 CiAgc3RydWN0IG9wYXF1ZV9hdXRoIHJxX2NyZWQ7CiAgY2FkZHJfdCBycV9jbG50Y3JlZDsKICBT VkNYUFJUICpycV94cHJ0Owp9OwoKCgp0eXBlZGVmIHZvaWQgKCpfX2Rpc3BhdGNoX2ZuX3QpIChz dHJ1Y3Qgc3ZjX3JlcSosIFNWQ1hQUlQqKTsKIyAxNzMgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv c3ZjLmgiIDMKZXh0ZXJuIGJvb2xfdCBzdmNfcmVnaXN0ZXIgKFNWQ1hQUlQgKl9feHBydCwgcnBj cHJvZ190IF9fcHJvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBfX3Zl cnMsIF9fZGlzcGF0Y2hfZm5fdCBfX2Rpc3BhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnBjcHJvdF90IF9fcHJvdG9jb2wpIDsKIyAxODQgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv c3ZjLmgiIDMKZXh0ZXJuIHZvaWQgc3ZjX3VucmVnaXN0ZXIgKHJwY3Byb2dfdCBfX3Byb2csIHJw Y3ZlcnNfdCBfX3ZlcnMpIDsKCgoKCgoKCmV4dGVybiB2b2lkIHhwcnRfcmVnaXN0ZXIgKFNWQ1hQ UlQgKl9feHBydCkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgeHBydF91bnJlZ2lzdGVyIChTVkNYUFJU ICpfX3hwcnQpIDsKIyAyMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvc3ZjLmgiIDMKZXh0ZXJu IGJvb2xfdCBzdmNfc2VuZHJlcGx5IChTVkNYUFJUICp4cHJ0LCB4ZHJwcm9jX3QgX194ZHJfcmVz dWx0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX194ZHJfbG9jYXRp b24pIDsKCmV4dGVybiB2b2lkIHN2Y2Vycl9kZWNvZGUgKFNWQ1hQUlQgKl9feHBydCkgOwoKZXh0 ZXJuIHZvaWQgc3ZjZXJyX3dlYWthdXRoIChTVkNYUFJUICpfX3hwcnQpIDsKCmV4dGVybiB2b2lk IHN2Y2Vycl9ub3Byb2MgKFNWQ1hQUlQgKl9feHBydCkgOwoKZXh0ZXJuIHZvaWQgc3ZjZXJyX3By b2d2ZXJzIChTVkNYUFJUICpfX3hwcnQsIHJwY3ZlcnNfdCBfX2xvd192ZXJzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgX19oaWdoX3ZlcnMpIDsKCmV4dGVybiB2 b2lkIHN2Y2Vycl9hdXRoIChTVkNYUFJUICpfX3hwcnQsIGVudW0gYXV0aF9zdGF0IF9fd2h5KSA7 CgpleHRlcm4gdm9pZCBzdmNlcnJfbm9wcm9nIChTVkNYUFJUICpfX3hwcnQpIDsKCmV4dGVybiB2 b2lkIHN2Y2Vycl9zeXN0ZW1lcnIgKFNWQ1hQUlQgKl9feHBydCkgOwojIDI2MyAiL3Vzci9sb2Nh bC9pbmNsdWRlL3JwYy9zdmMuaCIgMwpleHRlcm4gc3RydWN0IHBvbGxmZCAqc3ZjX3BvbGxmZDsK ZXh0ZXJuIGludCBzdmNfbWF4X3BvbGxmZDsKZXh0ZXJuIGZkX3NldCBzdmNfZmRzZXQ7CgoKCgoK CmV4dGVybiB2b2lkIHN2Y19nZXRyZXEgKGludCBfX3JkZmRzKSA7CmV4dGVybiB2b2lkIHN2Y19n ZXRyZXFfY29tbW9uIChjb25zdCBpbnQgX19mZCkgOwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxc2V0 IChmZF9zZXQgKl9fcmVhZGZkcykgOwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxX3BvbGwgKHN0cnVj dCBwb2xsZmQgKiwgY29uc3QgaW50KSA7CmV4dGVybiB2b2lkIHN2Y19leGl0ICh2b2lkKSA7CmV4 dGVybiB2b2lkIHN2Y19ydW4gKHZvaWQpIDsKIyAyOTEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv c3ZjLmgiIDMKZXh0ZXJuIFNWQ1hQUlQgKnN2Y3Jhd19jcmVhdGUgKHZvaWQpIDsKCgoKCmV4dGVy biBTVkNYUFJUICpzdmN1ZHBfY3JlYXRlIChpbnQgX19zb2NrKSA7CmV4dGVybiBTVkNYUFJUICpz dmN1ZHBfYnVmY3JlYXRlIChpbnQgX19zb2NrLCB1X2ludCBfX3NlbmRzeiwgdV9pbnQgX19yZWN2 c3opCiAgICAgOwoKCgoKZXh0ZXJuIFNWQ1hQUlQgKnN2Y3RjcF9jcmVhdGUgKGludCBfX3NvY2ss IHVfaW50IF9fc2VuZHNpemUsIHVfaW50IF9fcmVjdnNpemUpCiAgICAgOwoKCgoKCmV4dGVybiBT VkNYUFJUICpzdmN1bml4X2NyZWF0ZSAoaW50IF9fc29jaywgdV9pbnQgX19zZW5kc2l6ZSwgdV9p bnQgX19yZWN2c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Bh dGgpIDsKCgoKIyA2MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCiMgMSAiL3Vz ci9sb2NhbC9pbmNsdWRlL3JwYy9zdmNfYXV0aC5oIiAxIDMKIyA0NCAiL3Vzci9sb2NhbC9pbmNs dWRlL3JwYy9zdmNfYXV0aC5oIiAzCgoKCgoKZXh0ZXJuIGVudW0gYXV0aF9zdGF0IF9hdXRoZW50 aWNhdGUgKHN0cnVjdCBzdmNfcmVxICpfX3Jxc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcnBjX21zZyAqX19tc2cpIDsKCgojIDYxICIvdXNyL2xvY2FsL2lu Y2x1ZGUvcnBjL3JwYy5oIiAyIDMKIyA3MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIg MwoKCgpleHRlcm4gZmRfc2V0ICpfX3JwY190aHJlYWRfc3ZjX2Zkc2V0ICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHN0cnVjdCBycGNfY3JlYXRlZXJyICpfX3Jw Y190aHJlYWRfY3JlYXRlZXJyICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKIyA4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMwpleHRlcm4gc3RydWN0IHBv bGxmZCAqKl9fcnBjX3RocmVhZF9zdmNfcG9sbGZkICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50ICpfX3JwY190aHJlYWRfc3ZjX21heF9wb2xsZmQg KHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKIyAzNTUgImluY2x1ZGUvaW5j bHVkZXMuaCIgMgojIDM2MyAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5j bHVkZS9ycGNzdmMveXBfcHJvdC5oIiAxIDMKIyAxMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2 Yy95cF9wcm90LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjc3ZjL3lwY2xudC5oIiAx IDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cGNsbnQuaCIgMwoKCgpzdHJ1Y3Qg eXBhbGxfY2FsbGJhY2sKICB7CiAgICBpbnQgKCpmb3JlYWNoKSAoaW50IF9fc3RhdHVzLCBjaGFy ICpfX2tleSwgaW50IF9fa2V5bGVuLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fdmFsLCBp bnQgX192YWxsZW4sIGNoYXIgKl9fZGF0YSk7CiAgICBjaGFyICpkYXRhOwogIH07CgoKZXh0ZXJu IGludCB5cF9iaW5kIChfX2NvbnN0IGNoYXIgKikgOwpleHRlcm4gdm9pZCB5cF91bmJpbmQgKF9f Y29uc3QgY2hhciAqKSA7CmV4dGVybiBpbnQgeXBfZ2V0X2RlZmF1bHRfZG9tYWluIChjaGFyICoq KSA7CmV4dGVybiBpbnQgeXBfbWF0Y2ggKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwg X19jb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgaW50LCBjaGFyICoq LCBpbnQgKikgOwpleHRlcm4gaW50IHlwX2ZpcnN0IChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBj aGFyICosIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICoqLCBpbnQg KikgOwpleHRlcm4gaW50IHlwX25leHQgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwg X19jb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBpbnQsIGNoYXIgKios IGludCAqLCBjaGFyICoqLCBpbnQgKikgOwpleHRlcm4gaW50IHlwX21hc3RlciAoX19jb25zdCBj aGFyICosIF9fY29uc3QgY2hhciAqLCBjaGFyICoqKSA7CmV4dGVybiBpbnQgeXBfb3JkZXIgKF9f Y29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50ICopIDsKZXh0ZXJuIGlu dCB5cF9hbGwgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAg ICAgIF9fY29uc3Qgc3RydWN0IHlwYWxsX2NhbGxiYWNrICopIDsKZXh0ZXJuIF9fY29uc3QgY2hh ciAqeXBlcnJfc3RyaW5nIChfX2NvbnN0IGludCkgOwpleHRlcm4gX19jb25zdCBjaGFyICp5cGJp bmRlcnJfc3RyaW5nIChfX2NvbnN0IGludCkgOwpleHRlcm4gaW50IHlwcHJvdF9lcnIgKF9fY29u c3QgaW50KSA7CmV4dGVybiBpbnQgeXBfdXBkYXRlIChjaGFyICosIGNoYXIgKiwgdW5zaWduZWQg aW50LCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICBpbnQsIGNoYXIgKiwgaW50KSA7CgoK CgoKZXh0ZXJuIGludCBfX3lwX2NoZWNrIChjaGFyICoqKSA7CgoKIyAxNCAiL3Vzci9sb2NhbC9p bmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDIgMwoKCiMgNzQgIi91c3IvbG9jYWwvaW5jbHVkZS9y cGNzdmMveXBfcHJvdC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICB1X2ludCBrZXlkYXRfbGVuOwog IGNoYXIgKmtleWRhdF92YWw7Cn0ga2V5ZGF0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdV9pbnQg dmFsZGF0X2xlbjsKICBjaGFyICp2YWxkYXRfdmFsOwp9IHZhbGRhdF90OwoKc3RydWN0IHlwbWFw X3Bhcm1zIHsKICBjaGFyICpkb21haW47CiAgY2hhciAqbWFwOwogIHVuc2lnbmVkIGludCBvcmRl cm51bTsKICBjaGFyICpvd25lcjsKfTsKCgoKCgpzdHJ1Y3QgeXByZXFfa2V5IHsKICBjb25zdCBj aGFyICpkb21haW47CiAgY29uc3QgY2hhciAqbWFwOwogIGtleWRhdF90IGtleWRhdDsKfTsKCnN0 cnVjdCB5cHJlcV9ub2tleSB7CiAgY2hhciAqZG9tYWluOwogIGNoYXIgKm1hcDsKfTsKCnN0cnVj dCB5cHJlcV94ZnIgewogIHN0cnVjdCB5cG1hcF9wYXJtcyBtYXBfcGFybXM7CiAgdV9pbnQgdHJh bnNpZDsKICB1X2ludCBwcm90bzsKICB1X2ludCBwb3J0Owp9OwojIDEyMCAiL3Vzci9sb2NhbC9p bmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMKZW51bSB5cHN0YXQgewogIFlQX1RSVUUgPSAxLAoK ICBZUF9OT01PUkUgPSAyLAoKICBZUF9GQUxTRSA9IDAsCgogIFlQX05PTUFQID0gLTEsCgogIFlQ X05PRE9NID0gLTIsCgogIFlQX05PS0VZID0gLTMsCgogIFlQX0JBRE9QID0gLTQsCgogIFlQX0JB RERCID0gLTUsCgogIFlQX1lQRVJSID0gLTYsCgogIFlQX0JBREFSR1MgPSAtNywKCiAgWVBfVkVS UyA9IC04LAoKCn07CgoKCgoKdHlwZWRlZiBlbnVtIHlwc3RhdCB5cHN0YXQ7CgpzdHJ1Y3QgeXBy ZXNwX3ZhbCB7CiAgeXBzdGF0IHN0YXR1czsKICB2YWxkYXRfdCB2YWxkYXQ7Cn07CgpzdHJ1Y3Qg eXByZXNwX2tleV92YWwgewogIHlwc3RhdCBzdGF0dXM7CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1 ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMwogIHZhbGRhdF90IHZhbGRhdDsKICBrZXlkYXRfdCBrZXlk YXQ7Cgp9OwoKc3RydWN0IHlwcmVzcF9tYXN0ZXIgewogIHlwc3RhdCBzdGF0dXM7CiAgY2hhciAq bWFzdGVyOwp9OwoKc3RydWN0IHlwcmVzcF9vcmRlciB7CiAgeXBzdGF0IHN0YXR1czsKICB1X2lu dCBvcmRlcm51bTsKfTsKCnN0cnVjdCB5cG1hcGxpc3QgewogIGNoYXIgKm1hcDsKCiAgc3RydWN0 IHlwbWFwbGlzdCAqbmV4dDsKCn07CgpzdHJ1Y3QgeXByZXNwX21hcGxpc3QgewogIHlwc3RhdCBz dGF0dXM7CiAgc3RydWN0IHlwbWFwbGlzdCAqbGlzdDsKfTsKIyAyNDYgIi91c3IvbG9jYWwvaW5j bHVkZS9ycGNzdmMveXBfcHJvdC5oIiAzCmVudW0geXBiaW5kX3Jlc3B0eXBlIHtZUEJJTkRfU1VD Q19WQUwgPSAxLCBZUEJJTkRfRkFJTF9WQUwgPSAyfTsKCnN0cnVjdCB5cGJpbmRfYmluZGluZyB7 CiAgc3RydWN0IGluX2FkZHIgeXBiaW5kX2JpbmRpbmdfYWRkcjsKICB1bnNpZ25lZCBzaG9ydCBp bnQgeXBiaW5kX2JpbmRpbmdfcG9ydDsKfTsKCnN0cnVjdCB5cGJpbmRfcmVzcCB7CiAgZW51bSB5 cGJpbmRfcmVzcHR5cGUgeXBiaW5kX3N0YXR1czsKICB1bmlvbiB7CiAgICB1X2ludCB5cGJpbmRf ZXJyb3I7CiAgICBzdHJ1Y3QgeXBiaW5kX2JpbmRpbmcgeXBiaW5kX2JpbmRpbmZvOwogIH0geXBi aW5kX3Jlc3Bib2R5Owp9OwojIDI3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cF9wcm90 LmgiIDMKc3RydWN0IHlwYmluZF9zZXRkb20gewogIGNoYXIgKnlwc2V0ZG9tX2RvbWFpbjsKICBz dHJ1Y3QgeXBiaW5kX2JpbmRpbmcgeXBzZXRkb21fYmluZGluZzsKICB1X2ludCB5cHNldGRvbV92 ZXJzOwp9OwojIDI5NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMKZW51 bSB5cHB1c2hfc3RhdHVzIHsKICBZUFBVU0hfU1VDQyA9IDEsCgogIFlQUFVTSF9BR0UgPSAyLAoK ICBZUFBVU0hfTk9NQVAgPSAtMSwKCiAgWVBQVVNIX05PRE9NID0gLTIsCgogIFlQUFVTSF9SU1JD ID0gLTMsCgogIFlQUFVTSF9SUEMgPSAtNCwKCiAgWVBQVVNIX01BRERSID0gLTUsCgogIFlQUFVT SF9ZUEVSUiA9IC02LAoKICBZUFBVU0hfQkFEQVJHUyA9IC03LAoKICBZUFBVU0hfREJNID0gLTgs CgogIFlQUFVTSF9GSUxFID0gLTksCgogIFlQUFVTSF9TS0VXID0gLTEwLAoKICBZUFBVU0hfQ0xF QVIgPSAtMTEsCgogIFlQUFVTSF9GT1JDRSA9IC0xMiwKCiAgWVBQVVNIX1hGUkVSUiA9IC0xMywK CiAgWVBQVVNIX1JFRlVTRUQgPSAtMTQsCgogIFlQUFVTSF9OT0FMSUFTID0gLTE1Cgp9Owp0eXBl ZGVmIGVudW0geXBwdXNoX3N0YXR1cyB5cHB1c2hfc3RhdHVzOwoKc3RydWN0IHlwcHVzaHJlc3Bf eGZyIHsKICB1X2ludCB0cmFuc2lkOwogIHlwcHVzaF9zdGF0dXMgc3RhdHVzOwp9OwoKc3RydWN0 IHlwcmVzcF9hbGwgewogIGJvb2xfdCBtb3JlOwogIHVuaW9uIHsKICAgIHN0cnVjdCB5cHJlc3Bf a2V5X3ZhbCB2YWw7CiAgfSB5cHJlc3BfYWxsX3U7Cn07CgpleHRlcm4gYm9vbF90IHhkcl95cHJl cV9rZXkgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXFfa2V5ICogX19vYmpwKTsKZXh0ZXJuIGJv b2xfdCB4ZHJfeXByZXFfbm9rZXkgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXFfbm9rZXkgKiBf X29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlcV94ZnIgKFhEUiAqX194ZHJzLCBzdHJ1Y3Qg eXByZXFfeGZyICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXByZXNwX3ZhbCAoWERSICpf X3hkcnMsIHN0cnVjdCB5cHJlc3BfdmFsICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBy ZXNwX2tleV92YWwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX2tleV92YWwgKiBfX29ianAp OwpleHRlcm4gYm9vbF90IHhkcl95cGJpbmRfcmVzcCAoWERSICpfX3hkcnMsIHN0cnVjdCB5cGJp bmRfcmVzcCAqIF9fb2JqcCk7CmV4dGVybiBib29sX3QgeGRyX3lwYmluZF9zZXRkb20gKFhEUiAq X194ZHJzLCBzdHJ1Y3QgeXBiaW5kX3NldGRvbSAqIF9fb2JqcCk7CmV4dGVybiBib29sX3QgeGRy X3lwbWFwX3Bhcm1zIChYRFIgKl9feGRycywgc3RydWN0IHlwbWFwX3Bhcm1zICogX19vYmpwKTsK ZXh0ZXJuIGJvb2xfdCB4ZHJfeXBwdXNocmVzcF94ZnIgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXBw dXNocmVzcF94ZnIgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlc3Bfb3JkZXIgKFhE UiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX29yZGVyICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4 ZHJfeXByZXNwX21hc3RlciAoWERSICpfX3hkcnMsIHN0cnVjdCB5cHJlc3BfbWFzdGVyICogX19v YmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBhbGwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXBhbGxf Y2FsbGJhY2sgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlc3BfbWFwbGlzdCAoWERS ICpfX3hkcnMsIHN0cnVjdCB5cHJlc3BfbWFwbGlzdCAqIF9fb2JqcCk7CmV4dGVybiBib29sX3Qg eGRyX3lwYmluZF9iaW5kaW5nIChYRFIgKl9feGRycywgc3RydWN0IHlwYmluZF9iaW5kaW5nICog X19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBiaW5kX3Jlc3B0eXBlIChYRFIgKl9feGRycywg ZW51bSB5cGJpbmRfcmVzcHR5cGUgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHN0YXQg KFhEUiAqX194ZHJzLCBlbnVtIHlwYmluZF9yZXNwdHlwZSAqIF9fb2JqcCk7CmV4dGVybiBib29s X3QgeGRyX3lwcmVzcF9hbGwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX2FsbCAqIF9fb2Jq cCk7CmV4dGVybiBib29sX3QgeGRyX2RvbWFpbm5hbWUgKFhEUiAqX194ZHJzLCBjaGFyICoqIF9f b2JqcCk7CgoKIyAzNjQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2xv Y2FsL2luY2x1ZGUvc3lzL2lwYy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9p cGMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2lwYy5oIiAxIDMKIyA0MyAiL3Vz ci9sb2NhbC9pbmNsdWRlL2JpdHMvaXBjLmgiIDMKc3RydWN0IGlwY19wZXJtCiAgewogICAgX19r ZXlfdCBfX2tleTsKICAgIF9fdWlkX3QgdWlkOwogICAgX19naWRfdCBnaWQ7CiAgICBfX3VpZF90 IGN1aWQ7CiAgICBfX2dpZF90IGNnaWQ7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgbW9kZTsKICAg IHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19zZXE7 CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191 bnVzZWQxOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogIH07CiMgMzAgIi91c3Iv bG9jYWwvaW5jbHVkZS9zeXMvaXBjLmgiIDIgMwojIDUxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz L2lwYy5oIiAzCgoKCmV4dGVybiBrZXlfdCBmdG9rIChfX2NvbnN0IGNoYXIgKl9fcGF0aG5hbWUs IGludCBfX3Byb2pfaWQpIDsKCgojIDM3MiAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKCiMgMSAi L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zaG0uaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVk ZS9zeXMvc2htLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNs dWRlL3N5cy9zaG0uaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaG0u aCIgMSAzCiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NobS5oIiAzCnR5cGVkZWYgdW5z aWduZWQgbG9uZyBpbnQgc2htYXR0X3Q7CgoKc3RydWN0IHNobWlkX2RzCiAgewogICAgc3RydWN0 IGlwY19wZXJtIHNobV9wZXJtOwogICAgc2l6ZV90IHNobV9zZWdzejsKICAgIF9fdGltZV90IHNo bV9hdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHNo bV9kdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHNo bV9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgIF9fcGlkX3Qgc2ht X2NwaWQ7CiAgICBfX3BpZF90IHNobV9scGlkOwogICAgc2htYXR0X3Qgc2htX25hdHRjaDsKICAg IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51 c2VkNTsKICB9OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaG0uaCIgMwpzdHJ1Y3Qg c2htaW5mbwogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobW1heDsKICAgIHVuc2lnbmVkIGxv bmcgaW50IHNobW1pbjsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobW1uaTsKICAgIHVuc2lnbmVk IGxvbmcgaW50IHNobXNlZzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobWFsbDsKICAgIHVuc2ln bmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f dW51c2VkNDsKICB9OwoKc3RydWN0IHNobV9pbmZvCiAgewogICAgaW50IHVzZWRfaWRzOwogICAg dW5zaWduZWQgbG9uZyBpbnQgc2htX3RvdDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobV9yc3M7 CiAgICB1bnNpZ25lZCBsb25nIGludCBzaG1fc3dwOwogICAgdW5zaWduZWQgbG9uZyBpbnQgc3dh cF9hdHRlbXB0czsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHN3YXBfc3VjY2Vzc2VzOwogIH07CiMg MzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2htLmgiIDIgMwojIDQ0ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvc3lzL3NobS5oIiAzCgoKCgpleHRlcm4gaW50IF9fZ2V0cGFnZXNpemUgKHZvaWQpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGludCBzaG1jdGwgKGludCBf X3NobWlkLCBpbnQgX19jbWQsIHN0cnVjdCBzaG1pZF9kcyAqX19idWYpIDsKCgpleHRlcm4gaW50 IHNobWdldCAoa2V5X3QgX19rZXksIHNpemVfdCBfX3NpemUsIGludCBfX3NobWZsZykgOwoKCmV4 dGVybiB2b2lkICpzaG1hdCAoaW50IF9fc2htaWQsIF9fY29uc3Qgdm9pZCAqX19zaG1hZGRyLCBp bnQgX19zaG1mbGcpCiAgICAgOwoKCmV4dGVybiBpbnQgc2htZHQgKF9fY29uc3Qgdm9pZCAqX19z aG1hZGRyKSA7CgoKIyAzNzYgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9j YWwvaW5jbHVkZS9pY29udi5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2ljb252Lmgi IDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu MS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ljb252Lmgi IDIgMwoKCgoKCnR5cGVkZWYgdm9pZCAqaWNvbnZfdDsKCgoKCmV4dGVybiBpY29udl90IGljb252 X29wZW4gKF9fY29uc3QgY2hhciAqX190b2NvZGUsIF9fY29uc3QgY2hhciAqX19mcm9tY29kZSkK ICAgICA7CgoKCgpleHRlcm4gc2l6ZV90IGljb252IChpY29udl90IF9fY2QsIGNoYXIgKipfX3Jl c3RyaWN0IF9faW5idWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf X2luYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX291 dGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fb3V0Ynl0ZXNs ZWZ0KTsKCgpleHRlcm4gaW50IGljb252X2Nsb3NlIChpY29udl90IF9fY2QpIDsKCgojIDM4MCAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMzg5ICJpbmNsdWRlL2luY2x1ZGVzLmgiCiMgMSAiL3Vz ci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFw LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAxIDMKIyAyNyAiL3Vzci9sb2Nh bC9pbmNsdWRlL2xiZXIuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyX3R5cGVzLmgi IDEgMwojIDIxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlcl90eXBlcy5oIiAzCiMgMSAiL3Vzci9s b2NhbC9pbmNsdWRlL2xkYXBfY2RlZnMuaCIgMSAzCiMgMjIgIi91c3IvbG9jYWwvaW5jbHVkZS9s YmVyX3R5cGVzLmgiIDIgMwoKCiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyX3R5cGVzLmgi IDMKdHlwZWRlZiBpbnQgYmVyX2ludF90OwoKCnR5cGVkZWYgc2lnbmVkIGludCBiZXJfc2ludF90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCBiZXJfdWludF90OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBiZXJfdGFnX3Q7CgoKdHlwZWRlZiBpbnQgYmVyX3NvY2tldF90OwoKCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBiZXJfbGVuX3Q7CgoKdHlwZWRlZiBzaWduZWQgbG9uZyBiZXJfc2xlbl90OwoKCiMg MjggIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyLmgiIDIgMwoKCiMgMTA4ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvbGJlci5oIiAzCnR5cGVkZWYgaW50KiAoKkJFUl9FUlJOT19GTikgKCB2b2lkICk7Cgp0 eXBlZGVmIHZvaWQgKCpCRVJfTE9HX1BSSU5UX0ZOKSAoIGNvbnN0IGNoYXIgKmJ1ZiApOwoKdHlw ZWRlZiB2b2lkKiAoKkJFUl9NRU1BTExPQ19GTikgKCBiZXJfbGVuX3Qgc2l6ZSApOwp0eXBlZGVm IHZvaWQqICgqQkVSX01FTUNBTExPQ19GTikgKCBiZXJfbGVuX3QgbiwgYmVyX2xlbl90IHNpemUg KTsKdHlwZWRlZiB2b2lkKiAoKkJFUl9NRU1SRUFMTE9DX0ZOKSAoIHZvaWQgKnAsIGJlcl9sZW5f dCBzaXplICk7CnR5cGVkZWYgdm9pZCAoKkJFUl9NRU1GUkVFX0ZOKSAoIHZvaWQgKnAgKTsKCnR5 cGVkZWYgc3RydWN0IGxiZXJfbWVtb3J5X2ZucyB7CiAgICAgICAgQkVSX01FTUFMTE9DX0ZOIGJt Zl9tYWxsb2M7CiAgICAgICAgQkVSX01FTUNBTExPQ19GTiBibWZfY2FsbG9jOwogICAgICAgIEJF Ul9NRU1SRUFMTE9DX0ZOIGJtZl9yZWFsbG9jOwogICAgICAgIEJFUl9NRU1GUkVFX0ZOIGJtZl9m cmVlOwp9IEJlck1lbW9yeUZ1bmN0aW9uczsKIyAxNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVy LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgYmVyZWxlbWVudCBCZXJFbGVtZW50Owp0eXBlZGVmIHN0cnVj dCBzb2NrYnVmIFNvY2tidWY7CnR5cGVkZWYgc3RydWN0IHNlcW9yc2V0IFNlcW9yc2V0OwoKdHlw ZWRlZiBzdHJ1Y3Qgc29ja2J1Zl9pbyBTb2NrYnVmX0lPOwoKCnR5cGVkZWYgc3RydWN0IHNvY2ti dWZfaW9fZGVzYyB7CiAgICAgICAgaW50IHNiaW9kX2xldmVsOwogICAgICAgIFNvY2tidWYgKnNi aW9kX3NiOwogICAgICAgIFNvY2tidWZfSU8gKnNiaW9kX2lvOwogICAgICAgIHZvaWQgKnNiaW9k X3B2dDsKICAgICAgICBzdHJ1Y3Qgc29ja2J1Zl9pb19kZXNjICpzYmlvZF9uZXh0Owp9IFNvY2ti dWZfSU9fRGVzYzsKCgpzdHJ1Y3Qgc29ja2J1Zl9pbyB7CiAgICAgICAgaW50ICgqc2JpX3NldHVw KSggU29ja2J1Zl9JT19EZXNjICpzYmlvZCwgdm9pZCAqYXJnICk7CiAgICAgICAgaW50ICgqc2Jp X3JlbW92ZSkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QgKTsKICAgICAgICBpbnQgKCpzYmlfY3Ry bCkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QsIGludCBvcHQsIHZvaWQgKmFyZyk7CgogICAgICAg IGJlcl9zbGVuX3QgKCpzYmlfcmVhZCkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QsIHZvaWQgKmJ1 ZiwKICAgICAgICAgICAgICAgIGJlcl9sZW5fdCBsZW4gKTsKICAgICAgICBiZXJfc2xlbl90ICgq c2JpX3dyaXRlKSggU29ja2J1Zl9JT19EZXNjICpzYmlvZCwgdm9pZCAqYnVmLAogICAgICAgICAg ICAgICAgYmVyX2xlbl90IGxlbiApOwoKICAgICAgICBpbnQgKCpzYmlfY2xvc2UpKCBTb2NrYnVm X0lPX0Rlc2MgKnNiaW9kICk7Cn07CiMgMTk5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAz CnR5cGVkZWYgc3RydWN0IGJlcnZhbCB7CiAgICAgICAgYmVyX2xlbl90IGJ2X2xlbjsKICAgICAg ICBjaGFyICpidl92YWw7Cn0gQmVyVmFsdWU7CgoKCgoKCmV4dGVybiB2b2lkCmJlcl9lcnJvcl9w cmludCAoIGNvbnN0IGNoYXIgKmRhdGEgKTsKCgpleHRlcm4gdm9pZApiZXJfYnByaW50ICggY29u c3QgY2hhciAqZGF0YSwgYmVyX2xlbl90IGxlbiApOwoKCmV4dGVybiB2b2lkCmJlcl9kdW1wICgg QmVyRWxlbWVudCAqYmVyLCBpbnQgaW5vdXQgKTsKCgpleHRlcm4gdm9pZApiZXJfc29zX2R1bXAg KCBTZXFvcnNldCAqc29zICk7CgoKCgoKCnR5cGVkZWYgaW50ICgqQkVSRGVjb2RlQ2FsbGJhY2sp ICggQmVyRWxlbWVudCAqYmVyLCB2b2lkICpkYXRhLCBpbnQgbW9kZSApOwoKCgoKZXh0ZXJuIGJl cl90YWdfdApiZXJfZ2V0X3RhZyAoIEJlckVsZW1lbnQgKmJlciApOwoKCmV4dGVybiBiZXJfdGFn X3QKYmVyX3NraXBfdGFnICggQmVyRWxlbWVudCAqYmVyLCBiZXJfbGVuX3QgKmxlbiApOwoKCgpl eHRlcm4gYmVyX3RhZ190CmJlcl9wZWVrX3RhZyAoIEJlckVsZW1lbnQgKmJlciwgYmVyX2xlbl90 ICpsZW4gKTsKCgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2ludCAoIEJlckVsZW1lbnQgKmJl ciwgYmVyX2ludF90ICpudW0gKTsKCgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2VudW0gKCBC ZXJFbGVtZW50ICpiZXIsIGJlcl9pbnRfdCAqbnVtICk7CgoKCmV4dGVybiBiZXJfdGFnX3QKYmVy X2dldF9zdHJpbmdiICggQmVyRWxlbWVudCAqYmVyLCBjaGFyICpidWYsIGJlcl9sZW5fdCAqbGVu ICk7CgoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9nZXRfc3RyaW5nYSAoIEJlckVsZW1lbnQgKmJl ciwgY2hhciAqKmJ1ZiApOwoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9nZXRfc3RyaW5nYWwgKCBC ZXJFbGVtZW50ICpiZXIsIHN0cnVjdCBiZXJ2YWwgKipidiApOwoKCgpleHRlcm4gYmVyX3RhZ190 CmJlcl9nZXRfYml0c3RyaW5nYSAoIEJlckVsZW1lbnQgKmJlciwgY2hhciAqKmJ1ZiwgYmVyX2xl bl90ICpsZW4gKTsKCgoKCmV4dGVybiBiZXJfdGFnX3QKYmVyX2dldF9udWxsICggQmVyRWxlbWVu dCAqYmVyICk7CgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2Jvb2xlYW4gKCBCZXJFbGVtZW50 ICpiZXIsIGJlcl9pbnRfdCAqYm9vbHZhbCApOwoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9maXJz dF9lbGVtZW50ICggQmVyRWxlbWVudCAqYmVyLCBiZXJfbGVuX3QgKmxlbiwgY2hhciAqKmxhc3Qg KTsKCgoKCmV4dGVybiBiZXJfdGFnX3QKYmVyX25leHRfZWxlbWVudCAoIEJlckVsZW1lbnQgKmJl ciwgYmVyX2xlbl90ICpsZW4sIGNvbnN0IGNoYXIgKmxhc3QgKTsKCgoKCmV4dGVybiBiZXJfdGFn X3QKYmVyX3NjYW5mICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBjaGFyICpmbXQsIC4uLiApOwoK CgoKCgoKdHlwZWRlZiBpbnQgKCpCRVJFbmNvZGVDYWxsYmFjaykgKCBCZXJFbGVtZW50ICpiZXIs IHZvaWQgKmRhdGEgKTsKCgoKZXh0ZXJuIGludApiZXJfcHV0X2VudW0gKCBCZXJFbGVtZW50ICpi ZXIsIGJlcl9pbnRfdCBudW0sIGJlcl90YWdfdCB0YWcgKTsKCgoKCmV4dGVybiBpbnQKYmVyX3B1 dF9pbnQgKCBCZXJFbGVtZW50ICpiZXIsIGJlcl9pbnRfdCBudW0sIGJlcl90YWdfdCB0YWcgKTsK CgoKCmV4dGVybiBpbnQKYmVyX3B1dF9vc3RyaW5nICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBj aGFyICpzdHIsIGJlcl9sZW5fdCBsZW4sIGJlcl90YWdfdCB0YWcgKTsKCgoKCgpleHRlcm4gaW50 CmJlcl9wdXRfYmVydmFsICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBzdHJ1Y3QgYmVydmFsICpi diwgYmVyX3RhZ190IHRhZyApOwoKCgoKZXh0ZXJuIGludApiZXJfcHV0X3N0cmluZyAoIEJlckVs ZW1lbnQgKmJlciwgY29uc3QgY2hhciAqc3RyLCBiZXJfdGFnX3QgdGFnICk7CgoKCgpleHRlcm4g aW50CmJlcl9wdXRfYml0c3RyaW5nICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBjaGFyICpzdHIs IGJlcl9sZW5fdCBiaXRsZW4sIGJlcl90YWdfdCB0YWcgKTsKCgoKCgpleHRlcm4gaW50CmJlcl9w dXRfbnVsbCAoIEJlckVsZW1lbnQgKmJlciwgYmVyX3RhZ190IHRhZyApOwoKCgpleHRlcm4gaW50 CmJlcl9wdXRfYm9vbGVhbiAoIEJlckVsZW1lbnQgKmJlciwgYmVyX2ludF90IGJvb2x2YWwsIGJl cl90YWdfdCB0YWcgKTsKCgoKCmV4dGVybiBpbnQKYmVyX3N0YXJ0X3NlcSAoIEJlckVsZW1lbnQg KmJlciwgYmVyX3RhZ190IHRhZyApOwoKCgpleHRlcm4gaW50CmJlcl9zdGFydF9zZXQgKCBCZXJF bGVtZW50ICpiZXIsIGJlcl90YWdfdCB0YWcgKTsKCgoKZXh0ZXJuIGludApiZXJfcHV0X3NlcSAo IEJlckVsZW1lbnQgKmJlciApOwoKCmV4dGVybiBpbnQKYmVyX3B1dF9zZXQgKCBCZXJFbGVtZW50 ICpiZXIgKTsKCgpleHRlcm4gaW50CmJlcl9wcmludGYgKCBCZXJFbGVtZW50ICpiZXIsIGNvbnN0 IGNoYXIgKmZtdCwgLi4uICk7CiMgMzkyICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAzCmV4 dGVybiBiZXJfc2xlbl90CmJlcl9yZWFkICggQmVyRWxlbWVudCAqYmVyLCBjaGFyICpidWYsIGJl cl9sZW5fdCBsZW4gKTsKCgoKCmV4dGVybiBiZXJfc2xlbl90CmJlcl93cml0ZSAoIEJlckVsZW1l bnQgKmJlciwgY29uc3QgY2hhciAqYnVmLCBiZXJfbGVuX3QgbGVuLCBpbnQgbm9zb3MgKTsKCgoK CgpleHRlcm4gdm9pZApiZXJfZnJlZSAoIEJlckVsZW1lbnQgKmJlciwgaW50IGZyZWVidWYgKTsK CgoKZXh0ZXJuIGludApiZXJfZmx1c2ggKCBTb2NrYnVmICpzYiwgQmVyRWxlbWVudCAqYmVyLCBp bnQgZnJlZWl0ICk7CgoKCgpleHRlcm4gQmVyRWxlbWVudCAqCmJlcl9hbGxvYyAoIHZvaWQgKTsK CmV4dGVybiBCZXJFbGVtZW50ICoKZGVyX2FsbG9jICggdm9pZCApOwoKZXh0ZXJuIEJlckVsZW1l bnQgKgpiZXJfYWxsb2NfdCAoIGludCBiZXJvcHRpb25zICk7CgoKZXh0ZXJuIEJlckVsZW1lbnQg KgpiZXJfZHVwICggQmVyRWxlbWVudCAqYmVyICk7CgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0 X25leHQgKCBTb2NrYnVmICpzYiwgYmVyX2xlbl90ICpsZW4sIEJlckVsZW1lbnQgKmJlciApOwoK CgoKZXh0ZXJuIHZvaWQKYmVyX2luaXRfd19udWxsYyAoIEJlckVsZW1lbnQgKmJlciwgaW50IG9w dGlvbnMgKTsKCgoKZXh0ZXJuIHZvaWQKYmVyX3Jlc2V0ICggQmVyRWxlbWVudCAqYmVyLCBpbnQg d2FzX3dyaXRpbmcgKTsKCgoKZXh0ZXJuIEJlckVsZW1lbnQgKgpiZXJfaW5pdCAoIHN0cnVjdCBi ZXJ2YWwgKmJ2ICk7CgoKZXh0ZXJuIGludApiZXJfZmxhdHRlbiAoIEJlckVsZW1lbnQgKmJlciwg c3RydWN0IGJlcnZhbCAqKmJ2UHRyICk7CgoKCgoKCgpleHRlcm4gaW50CmJlcl9nZXRfb3B0aW9u ICggdm9pZCAqaXRlbSwgaW50IG9wdGlvbiwgdm9pZCAqb3V0dmFsdWUpOwoKCgoKZXh0ZXJuIGlu dApiZXJfc2V0X29wdGlvbiAoIHZvaWQgKml0ZW0sIGludCBvcHRpb24sIGNvbnN0IHZvaWQgKmlu dmFsdWUpOwojIDQ3NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xiZXIuaCIgMwpleHRlcm4gU29ja2J1 ZiAqCmJlcl9zb2NrYnVmX2FsbG9jICggdm9pZCApOwoKCmV4dGVybiB2b2lkCmJlcl9zb2NrYnVm X2ZyZWUgKCBTb2NrYnVmICpzYiApOwoKCmV4dGVybiBpbnQKYmVyX3NvY2tidWZfYWRkX2lvICgg U29ja2J1ZiAqc2IsIFNvY2tidWZfSU8gKnNiaW8sIGludCBsYXllciwgdm9pZCAqYXJnICk7CgoK CgoKZXh0ZXJuIGludApiZXJfc29ja2J1Zl9yZW1vdmVfaW8gKCBTb2NrYnVmICpzYiwgU29ja2J1 Zl9JTyAqc2JpbywgaW50IGxheWVyICk7CgoKCgpleHRlcm4gaW50CmJlcl9zb2NrYnVmX2N0cmwg KCBTb2NrYnVmICpzYiwgaW50IG9wdCwgdm9pZCAqYXJnICk7CgoKCgpleHRlcm4gU29ja2J1Zl9J TyBiZXJfc29ja2J1Zl9pb190Y3A7CmV4dGVybiBTb2NrYnVmX0lPIGJlcl9zb2NrYnVmX2lvX3Jl YWRhaGVhZDsKZXh0ZXJuIFNvY2tidWZfSU8gYmVyX3NvY2tidWZfaW9fZmQ7CmV4dGVybiBTb2Nr YnVmX0lPIGJlcl9zb2NrYnVmX2lvX2RlYnVnOwoKCgoKZXh0ZXJuIHZvaWQgKgpiZXJfbWVtYWxs b2MgKCBiZXJfbGVuX3QgcyApOwoKCmV4dGVybiB2b2lkICoKYmVyX21lbXJlYWxsb2MgKCB2b2lk KiBwLCBiZXJfbGVuX3QgcyApOwoKCgpleHRlcm4gdm9pZCAqCmJlcl9tZW1jYWxsb2MgKCBiZXJf bGVuX3QgbiwgYmVyX2xlbl90IHMgKTsKCgoKZXh0ZXJuIHZvaWQKYmVyX21lbWZyZWUgKCB2b2lk KiBwICk7CgoKZXh0ZXJuIHZvaWQKYmVyX21lbXZmcmVlICggdm9pZCoqIHZlY3RvciApOwoKCmV4 dGVybiB2b2lkCmJlcl9idmZyZWUgKCBzdHJ1Y3QgYmVydmFsICpidiApOwoKCmV4dGVybiB2b2lk CmJlcl9idmVjZnJlZSAoIHN0cnVjdCBiZXJ2YWwgKipidiApOwoKCmV4dGVybiBpbnQKYmVyX2J2 ZWNhZGQgKCBzdHJ1Y3QgYmVydmFsICoqKmJ2ZWMsIHN0cnVjdCBiZXJ2YWwgKmJ2ICk7CgoKCmV4 dGVybiBzdHJ1Y3QgYmVydmFsICoKYmVyX2J2ZHVwICggY29uc3Qgc3RydWN0IGJlcnZhbCAqYnYg KTsKCgpleHRlcm4gc3RydWN0IGJlcnZhbCAqCmJlcl9idnN0ciAoIGNvbnN0IGNoYXIgKiApOwoK CmV4dGVybiBzdHJ1Y3QgYmVydmFsICoKYmVyX2J2c3RyZHVwICggY29uc3QgY2hhciAqICk7CgoK ZXh0ZXJuIGNoYXIgKgpiZXJfc3RyZHVwICggY29uc3QgY2hhciAqICk7CgoKCgoKZXh0ZXJuIGlu dCAqIGJlcl9lcnJub19hZGRyICh2b2lkKTsKCgoKCgoKCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVk ZS9sZGFwLmgiIDIgMwoKCiMgNTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKIyAxICIv dXNyL2xvY2FsL2luY2x1ZGUvbGRhcF9mZWF0dXJlcy5oIiAxIDMKIyA2MCAiL3Vzci9sb2NhbC9p bmNsdWRlL2xkYXAuaCIgMiAzCiMgMTY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCnR5 cGVkZWYgc3RydWN0IGxkYXBhcGlpbmZvIHsKICAgICAgICBpbnQgbGRhcGFpX2luZm9fdmVyc2lv bjsKICAgICAgICBpbnQgbGRhcGFpX2FwaV92ZXJzaW9uOwogICAgICAgIGludCBsZGFwYWlfcHJv dG9jb2xfdmVyc2lvbjsKICAgICAgICBjaGFyICoqbGRhcGFpX2V4dGVuc2lvbnM7CiAgICAgICAg Y2hhciAqbGRhcGFpX3ZlbmRvcl9uYW1lOwogICAgICAgIGludCBsZGFwYWlfdmVuZG9yX3ZlcnNp b247Cn0gTERBUEFQSUluZm87CgoKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9hcGlmZWF0dXJlX2luZm8g ewogICAgICAgIGludCBsZGFwYWlmX2luZm9fdmVyc2lvbjsKICAgICAgICBjaGFyKiBsZGFwYWlm X25hbWU7CiAgICAgICAgaW50IGxkYXBhaWZfdmVyc2lvbjsKfSBMREFQQVBJRmVhdHVyZUluZm87 Cgp0eXBlZGVmIHN0cnVjdCBsZGFwY29udHJvbCB7CiAgICAgICAgY2hhciAqIGxkY3RsX29pZDsK ICAgICAgICBzdHJ1Y3QgYmVydmFsIGxkY3RsX3ZhbHVlOwogICAgICAgIGNoYXIgbGRjdGxfaXNj cml0aWNhbDsKfSBMREFQQ29udHJvbDsKIyA0MzYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgi IDMKdHlwZWRlZiBzdHJ1Y3QgbGRhcG1zZyBMREFQTWVzc2FnZTsKCgp0eXBlZGVmIHN0cnVjdCBs ZGFwbW9kIHsKICAgICAgICBpbnQgbW9kX29wOwojIDQ1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xk YXAuaCIgMwogICAgICAgIGNoYXIgKm1vZF90eXBlOwogICAgICAgIHVuaW9uIG1vZF92YWxzX3Ug ewogICAgICAgICAgICAgICAgY2hhciAqKm1vZHZfc3RydmFsczsKICAgICAgICAgICAgICAgIHN0 cnVjdCBiZXJ2YWwgKiptb2R2X2J2YWxzOwogICAgICAgIH0gbW9kX3ZhbHM7CgoKfSBMREFQTW9k OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxkYXBfZmlsdF9pbmZvIHsKICAgICAgICBjaGFyICpsZmlf ZmlsdGVyOwogICAgICAgIGNoYXIgKmxmaV9kZXNjOwogICAgICAgIGludCBsZmlfc2NvcGU7CiAg ICAgICAgaW50IGxmaV9pc2V4YWN0OwogICAgICAgIHN0cnVjdCBsZGFwX2ZpbHRfaW5mbyAqbGZp X25leHQ7Cn0gTERBUEZpbHRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9maWx0X2xpc3Qgewog ICAgY2hhciAqbGZsX3RhZzsKICAgIGNoYXIgKmxmbF9wYXR0ZXJuOwogICAgY2hhciAqbGZsX2Rl bGltczsKICAgIExEQVBGaWx0SW5mbyAqbGZsX2lsaXN0OwogICAgc3RydWN0IGxkYXBfZmlsdF9s aXN0ICpsZmxfbmV4dDsKfSBMREFQRmlsdExpc3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBsZGFwX2Zp bHRfZGVzYyB7CiAgICAgICAgTERBUEZpbHRMaXN0ICpsZmRfZmlsdGxpc3Q7CiAgICAgICAgTERB UEZpbHRJbmZvICpsZmRfY3VyZmlwOwogICAgICAgIExEQVBGaWx0SW5mbyBsZmRfcmV0Zmk7CiAg ICAgICAgY2hhciBsZmRfZmlsdGVyWyAxMDI0IF07CiAgICAgICAgY2hhciAqbGZkX2N1cnZhbDsK ICAgICAgICBjaGFyICpsZmRfY3VydmFsY29weTsKICAgICAgICBjaGFyICoqbGZkX2N1cnZhbHdv cmRzOwogICAgICAgIGNoYXIgKmxmZF9maWx0cHJlZml4OwogICAgICAgIGNoYXIgKmxmZF9maWx0 c3VmZml4Owp9IExEQVBGaWx0RGVzYzsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IGxkYXAgTERBUDsK IyA1MTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9m cmllbmRseSB7CiAgICAgICAgY2hhciAqbGZfdW5mcmllbmRseTsKICAgICAgICBjaGFyICpsZl9m cmllbmRseTsKfSBMREFQRnJpZW5kbHlNYXA7CgoKCgp0eXBlZGVmIHN0cnVjdCBsZGFwX3VybF9k ZXNjIHsKICAgICAgICBzdHJ1Y3QgbGRhcF91cmxfZGVzYyAqbHVkX25leHQ7CiAgICAgICAgY2hh ciAqbHVkX3NjaGVtZTsKICAgICAgICBjaGFyICpsdWRfaG9zdDsKICAgICAgICBpbnQgbHVkX3Bv cnQ7CiAgICAgICAgY2hhciAqbHVkX2RuOwogICAgICAgIGNoYXIgKipsdWRfYXR0cnM7CiAgICAg ICAgaW50IGx1ZF9zY29wZTsKICAgICAgICBjaGFyICpsdWRfZmlsdGVyOwogICAgICAgIGNoYXIg KipsdWRfZXh0czsKICAgICAgICBpbnQgbHVkX2NyaXRfZXh0czsKfSBMREFQVVJMRGVzYzsKIyA1 NTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKc3RydWN0IHRpbWV2YWw7CgoKCgpleHRl cm4gaW50CmxkYXBfZ2V0X29wdGlvbiAoIExEQVAgKmxkLCBpbnQgb3B0aW9uLCB2b2lkICpvdXR2 YWx1ZSk7CgoKCgpleHRlcm4gaW50CmxkYXBfc2V0X29wdGlvbiAoIExEQVAgKmxkLCBpbnQgb3B0 aW9uLCBjb25zdCB2b2lkICppbnZhbHVlKTsKCgoKCgp0eXBlZGVmIGludCAoTERBUF9SRUJJTkRf UFJPQykgKCBMREFQICpsZCwgY29uc3QgY2hhciAqdXJsLCBpbnQgcmVxdWVzdCwgYmVyX2ludF90 IG1zZ2lkICk7CgoKZXh0ZXJuIGludApsZGFwX3NldF9yZWJpbmRfcHJvYyAoIExEQVAgKmxkLCBM REFQX1JFQklORF9QUk9DICpsZGFwX3Byb2MpOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRl X2NvbnRyb2wgKCBjb25zdCBjaGFyICpyZXF1ZXN0T0lELCBCZXJFbGVtZW50ICpiZXIsIGludCBp c2NyaXRpY2FsLCBMREFQQ29udHJvbCAqKmN0cmxwICk7CgoKCgoKZXh0ZXJuIHZvaWQKbGRhcF9j b250cm9sX2ZyZWUgKCBMREFQQ29udHJvbCAqY3RybCApOwoKCmV4dGVybiB2b2lkCmxkYXBfY29u dHJvbHNfZnJlZSAoIExEQVBDb250cm9sICoqY3RybHMgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBf ZG9tYWluMmRuICggY29uc3QgY2hhciogZG9tYWluLCBjaGFyKiogZG4gKTsKCgoKZXh0ZXJuIGlu dApsZGFwX2RuMmRvbWFpbiAoIGNvbnN0IGNoYXIqIGRuLCBjaGFyKiogZG9tYWluICk7CgoKCmV4 dGVybiBpbnQKbGRhcF9kb21haW4yaG9zdGxpc3QgKCBjb25zdCBjaGFyICpkb21haW4sIGNoYXIq KiBob3N0bGlzdCApOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfZXh0ZW5kZWRfb3BlcmF0aW9uICgg TERBUCAqbGQsIGNvbnN0IGNoYXIgKnJlcW9pZCwgc3RydWN0IGJlcnZhbCAqcmVxZGF0YSwgTERB UENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscywgaW50ICpt c2dpZHAgKTsKCgoKCgoKCmV4dGVybiBpbnQKbGRhcF9leHRlbmRlZF9vcGVyYXRpb25fcyAoIExE QVAgKmxkLCBjb25zdCBjaGFyICpyZXFvaWQsIHN0cnVjdCBiZXJ2YWwgKnJlcWRhdGEsIExEQVBD b250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGNoYXIgKipy ZXRvaWRwLCBzdHJ1Y3QgYmVydmFsICoqcmV0ZGF0YXAgKTsKIyA2NDEgIi91c3IvbG9jYWwvaW5j bHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFwX3BhcnNlX2V4dGVuZGVkX3Jlc3VsdCAoIExE QVAgKmxkLCBMREFQTWVzc2FnZSAqcmVzLCBjaGFyICoqcmV0b2lkcCwgc3RydWN0IGJlcnZhbCAq KnJldGRhdGFwLCBpbnQgZnJlZWl0ICk7CgoKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9leHRl bmRlZF9wYXJ0aWFsICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpyZXMsIGNoYXIgKipyZXRvaWRw LCBzdHJ1Y3QgYmVydmFsICoqcmV0ZGF0YXAsIExEQVBDb250cm9sICoqKnNlcnZlcmN0cmxzLCBp bnQgZnJlZWl0ICk7CiMgNjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBp bnQKbGRhcF9hYmFuZG9uX2V4dCAoIExEQVAgKmxkLCBpbnQgbXNnaWQsIExEQVBDb250cm9sICoq c2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgpleHRlcm4gaW50 CmxkYXBfYWJhbmRvbiAoIExEQVAgKmxkLCBpbnQgbXNnaWQgKTsKCgoKCgoKCmV4dGVybiBpbnQK bGRhcF9hZGRfZXh0ICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBMREFQTW9kICoqYXR0cnMs IExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGlu dCAqbXNnaWRwICk7CgoKCgoKCgpleHRlcm4gaW50CmxkYXBfYWRkX2V4dF9zICggTERBUCAqbGQs IGNvbnN0IGNoYXIgKmRuLCBMREFQTW9kICoqYXR0cnMsIExEQVBDb250cm9sICoqc2VydmVyY3Ry bHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgoKZXh0ZXJuIGludApsZGFwX2Fk ZCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKmF0dHJzICk7CgoKCgpleHRl cm4gaW50CmxkYXBfYWRkX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBNb2QgKiph dHRycyApOwojIDcxMCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50Cmxk YXBfc2FzbF9iaW5kICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBjb25zdCBjaGFyICptZWNo YW5pc20sIHN0cnVjdCBiZXJ2YWwgKmNyZWQsIExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExE QVBDb250cm9sICoqY2xpZW50Y3RybHMsIGludCAqbXNnaWRwICk7CiMgNzM0ICIvdXNyL2xvY2Fs L2luY2x1ZGUvbGRhcC5oIiAzCnR5cGVkZWYgaW50IChMREFQX1NBU0xfSU5URVJBQ1RfUFJPQykg KCBMREFQICpsZCwgdW5zaWduZWQgZmxhZ3MsIHZvaWQqIGRlZmF1bHRzLCB2b2lkICppbnRlcmFj dCApOwoKCmV4dGVybiBpbnQKbGRhcF9zYXNsX2ludGVyYWN0aXZlX2JpbmRfcyAoIExEQVAgKmxk LCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqc2FzbE1lY2hhbmlzbSwgTERBUENvbnRyb2wg KipzZXJ2ZXJDb250cm9scywgTERBUENvbnRyb2wgKipjbGllbnRDb250cm9scywgdW5zaWduZWQg ZmxhZ3MsIExEQVBfU0FTTF9JTlRFUkFDVF9QUk9DICpwcm9jLCB2b2lkICpkZWZhdWx0cyApOwoj IDc1MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfc2FzbF9i aW5kX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKm1lY2hhbmlzbSwg c3RydWN0IGJlcnZhbCAqY3JlZCwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRy b2wgKipjbGllbnRjdHJscywgc3RydWN0IGJlcnZhbCAqKnNlcnZlcmNyZWRwICk7CiMgNzYwICIv dXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9zYXNsX2Jp bmRfcmVzdWx0ICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpyZXMsIHN0cnVjdCBiZXJ2YWwgKipz ZXJ2ZXJjcmVkcCwgaW50IGZyZWVpdCApOwojIDc3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAu aCIgMwpleHRlcm4gaW50CmxkYXBfYmluZCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICp3aG8sIGNv bnN0IGNoYXIgKnBhc3N3ZCwgaW50IGF1dGhtZXRob2QgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBf YmluZF9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobywgY29uc3QgY2hhciAqY3JlZCwgaW50 IGF1dGhtZXRob2QgKTsKIyA3ODggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJu IGludApsZGFwX3NpbXBsZV9iaW5kICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobywgY29uc3Qg Y2hhciAqcGFzc3dkICk7CgoKCgpleHRlcm4gaW50CmxkYXBfc2ltcGxlX2JpbmRfcyAoIExEQVAg KmxkLCBjb25zdCBjaGFyICp3aG8sIGNvbnN0IGNoYXIgKnBhc3N3ZCApOwojIDgwNSAiL3Vzci9s b2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfa2VyYmVyb3NfYmluZF9zICgg TERBUCAqbGQsIGNvbnN0IGNoYXIgKndobyApOwoKCgpleHRlcm4gaW50CmxkYXBfa2VyYmVyb3Nf YmluZDEgKCBMREFQICpsZCwgY29uc3QgY2hhciAqd2hvICk7CgoKCmV4dGVybiBpbnQKbGRhcF9r ZXJiZXJvc19iaW5kMV9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobyApOwoKCgpleHRlcm4g aW50CmxkYXBfa2VyYmVyb3NfYmluZDIgKCBMREFQICpsZCwgY29uc3QgY2hhciAqd2hvICk7CgoK CmV4dGVybiBpbnQKbGRhcF9rZXJiZXJvc19iaW5kMl9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIg KndobyApOwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX2VuYWJsZV9jYWNoZSAoIExEQVAgKmxkLCBs b25nIHRpbWVvdXQsIGJlcl9sZW5fdCBtYXhtZW0gKTsKCmV4dGVybiB2b2lkCmxkYXBfZGlzYWJs ZV9jYWNoZSAoIExEQVAgKmxkICk7CgpleHRlcm4gdm9pZApsZGFwX3NldF9jYWNoZV9vcHRpb25z ICggTERBUCAqbGQsIHVuc2lnbmVkIGxvbmcgb3B0cyApOwoKZXh0ZXJuIHZvaWQKbGRhcF9kZXN0 cm95X2NhY2hlICggTERBUCAqbGQgKTsKCmV4dGVybiB2b2lkCmxkYXBfZmx1c2hfY2FjaGUgKCBM REFQICpsZCApOwoKZXh0ZXJuIHZvaWQKbGRhcF91bmNhY2hlX2VudHJ5ICggTERBUCAqbGQsIGNv bnN0IGNoYXIgKmRuICk7CgpleHRlcm4gdm9pZApsZGFwX3VuY2FjaGVfcmVxdWVzdCAoIExEQVAg KmxkLCBpbnQgbXNnaWQgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBfY29tcGFyZV9leHQgKCBMREFQ ICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKmF0dHIsIHN0cnVjdCBiZXJ2YWwgKmJ2 YWx1ZSwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJs cywgaW50ICptc2dpZHAgKTsKIyA4NjkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0 ZXJuIGludApsZGFwX2NvbXBhcmVfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNv bnN0IGNoYXIgKmF0dHIsIHN0cnVjdCBiZXJ2YWwgKmJ2YWx1ZSwgTERBUENvbnRyb2wgKipzZXJ2 ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscyApOwoKCgoKCgoKZXh0ZXJuIGludAps ZGFwX2NvbXBhcmUgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKmF0dHIs IGNvbnN0IGNoYXIgKnZhbHVlICk7CgoKCgoKZXh0ZXJuIGludApsZGFwX2NvbXBhcmVfcyAoIExE QVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqYXR0ciwgY29uc3QgY2hhciAqdmFs dWUgKTsKIyA4OTYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFw X2RlbGV0ZV9leHQgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBDb250cm9sICoqc2Vy dmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGludCAqbXNnaWRwICk7CgoKCgoK CmV4dGVybiBpbnQKbGRhcF9kZWxldGVfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4s IExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsK CgoKCgpleHRlcm4gaW50CmxkYXBfZGVsZXRlICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuICk7 CgoKCmV4dGVybiBpbnQKbGRhcF9kZWxldGVfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiAp OwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX3BhcnNlX3Jlc3VsdCAoIExEQVAgKmxkLCBMREFQTWVz c2FnZSAqcmVzLCBpbnQgKmVycmNvZGVwLCBjaGFyICoqbWF0Y2hlZGRucCwgY2hhciAqKmVycm1z Z3AsIGNoYXIgKioqcmVmZXJyYWxzcCwgTERBUENvbnRyb2wgKioqc2VydmVyY3RybHMsIGludCBm cmVlaXQgKTsKIyA5MzYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGNoYXIg KgpsZGFwX2VycjJzdHJpbmcgKCBpbnQgZXJyICk7CgoKZXh0ZXJuIGludApsZGFwX3Jlc3VsdDJl cnJvciAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqciwgaW50IGZyZWVpdCApOwoKCgoKZXh0ZXJu IHZvaWQKbGRhcF9wZXJyb3IgKCBMREFQICpsZCwgY29uc3QgY2hhciAqcyApOwoKCgoKCgoKZXh0 ZXJuIGludApsZGFwX21vZGlmeV9leHQgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBN b2QgKiptb2RzLCBMREFQQ29udHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNsaWVu dGN0cmxzLCBpbnQgKm1zZ2lkcCApOwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX21vZGlmeV9leHRf cyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKm1vZHMsIExEQVBDb250cm9s ICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgoKZXh0ZXJu IGludApsZGFwX21vZGlmeSAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKm1v ZHMgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9tb2RpZnlfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFy ICpkbiwgTERBUE1vZCAqKm1vZHMgKTsKIyA5ODggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgi IDMKZXh0ZXJuIGludApsZGFwX3JlbmFtZSAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29u c3QgY2hhciAqbmV3cmRuLCBjb25zdCBjaGFyICpuZXdTdXBlcmlvciwgaW50IGRlbGV0ZW9sZHJk biwgTERBUENvbnRyb2wgKipzY3RybHMsIExEQVBDb250cm9sICoqY2N0cmxzLCBpbnQgKm1zZ2lk cCApOwojIDk5OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBf cmVuYW1lX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKm5ld3Jkbiwg Y29uc3QgY2hhciAqbmV3U3VwZXJpb3IsIGludCBkZWxldGVvbGRyZG4sIExEQVBDb250cm9sICoq c2N0cmxzLCBMREFQQ29udHJvbCAqKmNjdHJscyApOwojIDEwMDkgIi91c3IvbG9jYWwvaW5jbHVk ZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFwX3JlbmFtZTIgKCBMREFQICpsZCwgY29uc3QgY2hh ciAqZG4sIGNvbnN0IGNoYXIgKm5ld3JkbiwgY29uc3QgY2hhciAqbmV3U3VwZXJpb3IsIGludCBk ZWxldGVvbGRyZG4gKTsKCgoKCgoKZXh0ZXJuIGludApsZGFwX3JlbmFtZTJfcyAoIExEQVAgKmxk LCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqbmV3cmRuLCBjb25zdCBjaGFyICpuZXdTdXBl cmlvciwgaW50IGRlbGV0ZW9sZHJkbiApOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfbW9kcmRuICgg TERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBjb25zdCBjaGFyICpuZXdyZG4gKTsKCgoKCmV4dGVy biBpbnQKbGRhcF9tb2RyZG5fcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hh ciAqbmV3cmRuICk7CgoKCgpleHRlcm4gaW50CmxkYXBfbW9kcmRuMiAoIExEQVAgKmxkLCBjb25z dCBjaGFyICpkbiwgY29uc3QgY2hhciAqbmV3cmRuLCBpbnQgZGVsZXRlb2xkcmRuICk7CgoKCgoK ZXh0ZXJuIGludApsZGFwX21vZHJkbjJfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29u c3QgY2hhciAqbmV3cmRuLCBpbnQgZGVsZXRlb2xkcmRuKTsKIyAxMDU1ICIvdXNyL2xvY2FsL2lu Y2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBMREFQICoKbGRhcF9pbml0ICggY29uc3QgY2hhciAqaG9z dCwgaW50IHBvcnQgKTsKCgoKZXh0ZXJuIExEQVAgKgpsZGFwX29wZW4gKCBjb25zdCBjaGFyICpo b3N0LCBpbnQgcG9ydCApOwoKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRlICggTERBUCAqKmxkcCAp OwoKCmV4dGVybiBpbnQKbGRhcF9pbml0aWFsaXplICggTERBUCAqKmxkcCwgY29uc3QgY2hhciAq dXJsICk7CgoKCmV4dGVybiBpbnQKbGRhcF9zdGFydF90bHNfcyAoIExEQVAgKmxkLCBMREFQQ29u dHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNsaWVudGN0cmxzICk7CgoKCgoKCgpl eHRlcm4gTERBUE1lc3NhZ2UgKgpsZGFwX2ZpcnN0X21lc3NhZ2UgKCBMREFQICpsZCwgTERBUE1l c3NhZ2UgKmNoYWluICk7CgoKCmV4dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9tZXNzYWdl ICggTERBUCAqbGQsIExEQVBNZXNzYWdlICptc2cgKTsKCgoKZXh0ZXJuIGludApsZGFwX2NvdW50 X21lc3NhZ2VzICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpjaGFpbiApOwoKCgoKCgoKZXh0ZXJu IExEQVBNZXNzYWdlICoKbGRhcF9maXJzdF9yZWZlcmVuY2UgKCBMREFQICpsZCwgTERBUE1lc3Nh Z2UgKmNoYWluICk7CgoKCmV4dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9yZWZlcmVuY2Ug KCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKnJlZiApOwoKCgpleHRlcm4gaW50CmxkYXBfY291bnRf cmVmZXJlbmNlcyAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqY2hhaW4gKTsKCgoKZXh0ZXJuIGlu dApsZGFwX3BhcnNlX3JlZmVyZW5jZSAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqcmVmLCBjaGFy ICoqKnJlZmVycmFsc3AsIExEQVBDb250cm9sICoqKnNlcnZlcmN0cmxzLCBpbnQgZnJlZWl0KTsK IyAxMTI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBMREFQTWVzc2FnZSAq CmxkYXBfZmlyc3RfZW50cnkgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmNoYWluICk7CgoKCmV4 dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9lbnRyeSAoIExEQVAgKmxkLCBMREFQTWVzc2Fn ZSAqZW50cnkgKTsKCgoKZXh0ZXJuIGludApsZGFwX2NvdW50X2VudHJpZXMgKCBMREFQICpsZCwg TERBUE1lc3NhZ2UgKmNoYWluICk7CgoKCmV4dGVybiBpbnQKbGRhcF9nZXRfZW50cnlfY29udHJv bHMgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBMREFQQ29udHJvbCAqKipzZXJ2ZXJj dHJscyk7CiMgMTE1NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gTERBUE1l c3NhZ2UgKgpsZGFwX2RlbGV0ZV9yZXN1bHRfZW50cnkgKCBMREFQTWVzc2FnZSAqKmxpc3QsIExE QVBNZXNzYWdlICplICk7CgoKCmV4dGVybiB2b2lkCmxkYXBfYWRkX3Jlc3VsdF9lbnRyeSAoIExE QVBNZXNzYWdlICoqbGlzdCwgTERBUE1lc3NhZ2UgKmUgKTsKCgoKCgoKCmV4dGVybiBjaGFyICoK bGRhcF9nZXRfZG4gKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5ICk7CgoKCmV4dGVybiBj aGFyICoKbGRhcF9kbjJ1Zm4gKCBjb25zdCBjaGFyICpkbiApOwoKCmV4dGVybiBjaGFyICoqCmxk YXBfZXhwbG9kZV9kbiAoIGNvbnN0IGNoYXIgKmRuLCBpbnQgbm90eXBlcyApOwoKCgpleHRlcm4g Y2hhciAqKgpsZGFwX2V4cGxvZGVfcmRuICggY29uc3QgY2hhciAqcmRuLCBpbnQgbm90eXBlcyAp OwoKCgpleHRlcm4gY2hhciAqCmxkYXBfZG4yZGNlZG4gKCBjb25zdCBjaGFyICpkbiApOwoKZXh0 ZXJuIGNoYXIgKgpsZGFwX2RjZWRuMmRuICggY29uc3QgY2hhciAqZGNlICk7CgoKCgpleHRlcm4g Y2hhciAqCmxkYXBfZmlyc3RfYXR0cmlidXRlICggTERBUCAqbGQsIExEQVBNZXNzYWdlICplbnRy eSwgQmVyRWxlbWVudCAqKmJlciApOwoKCgoKZXh0ZXJuIGNoYXIgKgpsZGFwX25leHRfYXR0cmli dXRlICggTERBUCAqbGQsIExEQVBNZXNzYWdlICplbnRyeSwgQmVyRWxlbWVudCAqYmVyICk7CiMg MTIxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gY2hhciAqKgpsZGFwX2dl dF92YWx1ZXMgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBjb25zdCBjaGFyICp0YXJn ZXQgKTsKCgoKCmV4dGVybiBzdHJ1Y3QgYmVydmFsICoqCmxkYXBfZ2V0X3ZhbHVlc19sZW4gKCBM REFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBjb25zdCBjaGFyICp0YXJnZXQgKTsKCgoKCmV4 dGVybiBpbnQKbGRhcF9jb3VudF92YWx1ZXMgKCBjaGFyICoqdmFscyApOwoKCmV4dGVybiBpbnQK bGRhcF9jb3VudF92YWx1ZXNfbGVuICggc3RydWN0IGJlcnZhbCAqKnZhbHMgKTsKCgpleHRlcm4g dm9pZApsZGFwX3ZhbHVlX2ZyZWUgKCBjaGFyICoqdmFscyApOwoKCmV4dGVybiB2b2lkCmxkYXBf dmFsdWVfZnJlZV9sZW4gKCBzdHJ1Y3QgYmVydmFsICoqdmFscyApOwoKCgoKCmV4dGVybiBpbnQK bGRhcF9yZXN1bHQgKCBMREFQICpsZCwgaW50IG1zZ2lkLCBpbnQgYWxsLCBzdHJ1Y3QgdGltZXZh bCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXN1bHQgKTsKCgoKCgoKZXh0ZXJuIGludApsZGFw X21zZ3R5cGUgKCBMREFQTWVzc2FnZSAqbG0gKTsKCgpleHRlcm4gaW50CmxkYXBfbXNnaWQgKCBM REFQTWVzc2FnZSAqbG0gKTsKCgpleHRlcm4gaW50CmxkYXBfbXNnZnJlZSAoIExEQVBNZXNzYWdl ICpsbSApOwoKCmV4dGVybiBpbnQKbGRhcF9tc2dkZWxldGUgKCBMREFQICpsZCwgaW50IG1zZ2lk ICk7CgoKCgoKCgpleHRlcm4gaW50CmxkYXBfc2VhcmNoX2V4dCAoIExEQVAgKmxkLCBjb25zdCBj aGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0IGNoYXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBp bnQgYXR0cnNvbmx5LCBMREFQQ29udHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNs aWVudGN0cmxzLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50IHNpemVsaW1pdCwgaW50ICpt c2dpZHAgKTsKIyAxMjg2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQK bGRhcF9zZWFyY2hfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqYmFzZSwgaW50IHNjb3Bl LCBjb25zdCBjaGFyICpmaWx0ZXIsIGNoYXIgKiphdHRycywgaW50IGF0dHJzb25seSwgTERBUENv bnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscywgc3RydWN0IHRp bWV2YWwgKnRpbWVvdXQsIGludCBzaXplbGltaXQsIExEQVBNZXNzYWdlICoqcmVzICk7CiMgMTMw MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfc2VhcmNoICgg TERBUCAqbGQsIGNvbnN0IGNoYXIgKmJhc2UsIGludCBzY29wZSwgY29uc3QgY2hhciAqZmlsdGVy LCBjaGFyICoqYXR0cnMsIGludCBhdHRyc29ubHkgKTsKCgoKCgoKCmV4dGVybiBpbnQKbGRhcF9z ZWFyY2hfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0IGNo YXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBpbnQgYXR0cnNvbmx5LCBMREFQTWVzc2FnZSAqKnJl cyApOwojIDEzMTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFw X3NlYXJjaF9zdCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0 IGNoYXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBpbnQgYXR0cnNvbmx5LCBzdHJ1Y3QgdGltZXZh bCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXMgKTsKIyAxMzMzICIvdXNyL2xvY2FsL2luY2x1 ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQKbGRhcF91bmJpbmQgKCBMREFQICpsZCApOwoKCmV4dGVy biBpbnQKbGRhcF91bmJpbmRfcyAoIExEQVAgKmxkICk7CgoKZXh0ZXJuIGludApsZGFwX3VuYmlu ZF9leHQgKCBMREFQICpsZCwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wg KipjbGllbnRjdHJscyk7CgoKCgpleHRlcm4gaW50CmxkYXBfdW5iaW5kX2V4dF9zICggTERBUCAq bGQsIExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMp OwojIDEzNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIExEQVBGaWx0RGVz YyAqCmxkYXBfaW5pdF9nZXRmaWx0ZXIgKCBjb25zdCBjaGFyICpmbmFtZSApOwoKCmV4dGVybiBM REFQRmlsdERlc2MgKgpsZGFwX2luaXRfZ2V0ZmlsdGVyX2J1ZiAoIGNoYXIgKmJ1ZiwgYmVyX2xl bl90IGJ1ZmxlbiApOwoKCgpleHRlcm4gTERBUEZpbHRJbmZvICoKbGRhcF9nZXRmaXJzdGZpbHRl ciAoIExEQVBGaWx0RGVzYyAqbGZkcCwgY2hhciAqdGFncGF0LCBjaGFyICp2YWx1ZSApOwoKCgoK ZXh0ZXJuIExEQVBGaWx0SW5mbyAqCmxkYXBfZ2V0bmV4dGZpbHRlciAoIExEQVBGaWx0RGVzYyAq bGZkcCApOwoKCmV4dGVybiB2b2lkCmxkYXBfc2V0ZmlsdGVyYWZmaXhlcyAoIExEQVBGaWx0RGVz YyAqbGZkcCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXggKTsKCgoKCmV4 dGVybiB2b2lkCmxkYXBfYnVpbGRfZmlsdGVyICggY2hhciAqYnVmLCBiZXJfbGVuX3QgYnVmbGVu LCBjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnN1 ZmZpeCwgY29uc3QgY2hhciAqYXR0ciwgY29uc3QgY2hhciAqdmFsdWUsIGNoYXIgKip2YWx3b3Jk cyApOwojIDEzOTggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIHZvaWQgKgps ZGFwX21lbWFsbG9jICggYmVyX2xlbl90IHMgKTsKCgpleHRlcm4gdm9pZCAqCmxkYXBfbWVtcmVh bGxvYyAoIHZvaWQqIHAsIGJlcl9sZW5fdCBzICk7CgoKCmV4dGVybiB2b2lkICoKbGRhcF9tZW1j YWxsb2MgKCBiZXJfbGVuX3QgbiwgYmVyX2xlbl90IHMgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9t ZW1mcmVlICggdm9pZCogcCApOwoKCmV4dGVybiB2b2lkCmxkYXBfbWVtdmZyZWUgKCB2b2lkKiog diApOwoKCmV4dGVybiBjaGFyICoKbGRhcF9zdHJkdXAgKCBjb25zdCBjaGFyICogKTsKCgpleHRl cm4gdm9pZApsZGFwX2dldGZpbHRlcl9mcmVlICggTERBUEZpbHREZXNjICpsZmRwICk7CgoKZXh0 ZXJuIHZvaWQKbGRhcF9tb2RzX2ZyZWUgKCBMREFQTW9kICoqbW9kcywgaW50IGZyZWVtb2RzICk7 CiMgMTQzOCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gY2hhciAqCmxkYXBf ZnJpZW5kbHlfbmFtZSAoIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICp1bmFtZSwgTERBUEZy aWVuZGx5TWFwICoqbWFwICk7CgoKCgpleHRlcm4gdm9pZApsZGFwX2ZyZWVfZnJpZW5kbHltYXAg KCBMREFQRnJpZW5kbHlNYXAgKiptYXAgKTsKCgoKCgoKdHlwZWRlZiBpbnQgKExEQVBfU09SVF9B RF9DTVBfUFJPQykgKCBjb25zdCBjaGFyICpsZWZ0LCBjb25zdCBjaGFyICpyaWdodCApOwoKCgp0 eXBlZGVmIGludCAoTERBUF9TT1JUX0FWX0NNUF9QUk9DKSAoIGNvbnN0IHZvaWQgKmxlZnQsIGNv bnN0IHZvaWQgKnJpZ2h0ICk7CgoKCmV4dGVybiBpbnQKbGRhcF9zb3J0X2VudHJpZXMgKCBMREFQ ICpsZCwgTERBUE1lc3NhZ2UgKipjaGFpbiwgY29uc3QgY2hhciAqYXR0ciwgTERBUF9TT1JUX0FE X0NNUF9QUk9DICpjbXAgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9zb3J0X3ZhbHVlcyAoIExEQVAg KmxkLCBjaGFyICoqdmFscywgTERBUF9TT1JUX0FWX0NNUF9QUk9DICpjbXAgKTsKCgoKCmV4dGVy biBpbnQKbGRhcF9zb3J0X3N0cmNhc2VjbXAgKCBjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpi ICk7CiMgMTQ4MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBf aXNfbGRhcF91cmwgKCBjb25zdCBjaGFyICp1cmwgKTsKCgpleHRlcm4gaW50CmxkYXBfaXNfbGRh cHNfdXJsICggY29uc3QgY2hhciAqdXJsICk7CgoKZXh0ZXJuIGludApsZGFwX2lzX2xkYXBpX3Vy bCAoIGNvbnN0IGNoYXIgKnVybCApOwoKCmV4dGVybiBpbnQKbGRhcF91cmxfcGFyc2UgKCBjb25z dCBjaGFyICp1cmwsIExEQVBVUkxEZXNjICoqbHVkcHAgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9m cmVlX3VybGRlc2MgKCBMREFQVVJMRGVzYyAqbHVkcCApOwoKCmV4dGVybiBpbnQKbGRhcF91cmxf c2VhcmNoICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKnVybCwgaW50IGF0dHJzb25seSApOwoKCgoK ZXh0ZXJuIGludApsZGFwX3VybF9zZWFyY2hfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICp1cmws IGludCBhdHRyc29ubHksIExEQVBNZXNzYWdlICoqcmVzICk7CgoKCgoKZXh0ZXJuIGludApsZGFw X3VybF9zZWFyY2hfc3QgKCBMREFQICpsZCwgY29uc3QgY2hhciAqdXJsLCBpbnQgYXR0cnNvbmx5 LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXMgKTsKIyAxNTMxICIv dXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCnR5cGVkZWYgc3RydWN0IGxkYXBzb3J0a2V5IHsK ICAgICAgICBjaGFyICogYXR0cmlidXRlVHlwZTsKICAgICAgICBjaGFyICogb3JkZXJpbmdSdWxl OwogICAgICAgIGludCByZXZlcnNlT3JkZXI7Cn0gTERBUFNvcnRLZXk7CgpleHRlcm4gaW50Cmxk YXBfY3JlYXRlX3NvcnRfa2V5bGlzdCAoIExEQVBTb3J0S2V5ICoqKnNvcnRLZXlMaXN0LCBjaGFy ICprZXlTdHJpbmcgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9mcmVlX3NvcnRfa2V5bGlzdCAoIExE QVBTb3J0S2V5ICoqc29ydGtleWxpc3QgKTsKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRlX3NvcnRf Y29udHJvbCAoIExEQVAgKmxkLCBMREFQU29ydEtleSAqKmtleUxpc3QsIGludCBjdGxfaXNjcml0 aWNhbCwgTERBUENvbnRyb2wgKipjdHJscCApOwoKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9z b3J0X2NvbnRyb2wgKCBMREFQICpsZCwgTERBUENvbnRyb2wgKipjdHJscCwgdW5zaWduZWQgbG9u ZyAqcmVzdWx0LCBjaGFyICoqYXR0cmlidXRlICk7CiMgMTU2OCAiL3Vzci9sb2NhbC9pbmNsdWRl L2xkYXAuaCIgMwp0eXBlZGVmIHN0cnVjdCBsZGFwdmx2aW5mbyB7CiAgICAgICAgaW50IGxkdmx2 X3ZlcnNpb247CiAgICB1bnNpZ25lZCBsb25nIGxkdmx2X2JlZm9yZV9jb3VudDsKICAgIHVuc2ln bmVkIGxvbmcgbGR2bHZfYWZ0ZXJfY291bnQ7CiAgICB1bnNpZ25lZCBsb25nIGxkdmx2X29mZnNl dDsKICAgIHVuc2lnbmVkIGxvbmcgbGR2bHZfY291bnQ7CiAgICBzdHJ1Y3QgYmVydmFsICpsZHZs dl9hdHRydmFsdWU7CiAgICBzdHJ1Y3QgYmVydmFsICpsZHZsdl9jb250ZXh0OwogICAgdm9pZCAq bGR2bHZfZXh0cmFkYXRhOwp9IExEQVBWTFZJbmZvOwoKZXh0ZXJuIGludApsZGFwX2NyZWF0ZV92 bHZfY29udHJvbCAoIExEQVAgKmxkLCBMREFQVkxWSW5mbyAqbGR2bGlzdHAsIExEQVBDb250cm9s ICoqY3RybHAgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV92bHZfY29udHJvbCAoIExEQVAg KmxkLCBMREFQQ29udHJvbCAqKmN0cmxzLCB1bnNpZ25lZCBsb25nICp0YXJnZXRfcG9zcCwgdW5z aWduZWQgbG9uZyAqbGlzdF9jb3VudHAsIHN0cnVjdCBiZXJ2YWwgKipjb250ZXh0cCwgaW50ICpl cnJjb2RlcCApOwojIDE1OTUgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKCiMgMzkwICJp bmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv Z3NzYXBpLmgiIDEgMwojIDkyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAz CiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgOTMgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3Nz YXBpLmgiIDIgMwojIDExNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMwp0 eXBlZGVmIHZvaWQgKiBnc3NfbmFtZV90Owp0eXBlZGVmIHZvaWQgKiBnc3NfY3JlZF9pZF90Owp0 eXBlZGVmIHZvaWQgKiBnc3NfY3R4X2lkX3Q7CiMgMTI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3Nz YXBpL2dzc2FwaS5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IGdzc191aW50MzI7CnR5cGVkZWYg aW50IGdzc19pbnQzMjsKIyAxNDYgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgi IDMKdHlwZWRlZiBnc3NfdWludDMyIE9NX3VpbnQzMjsKCnR5cGVkZWYgc3RydWN0IGdzc19PSURf ZGVzY19zdHJ1Y3QgewogICAgICBPTV91aW50MzIgbGVuZ3RoOwogICAgICB2b2lkICplbGVtZW50 czsKfSBnc3NfT0lEX2Rlc2MsICpnc3NfT0lEOwoKCnR5cGVkZWYgc3RydWN0IGdzc19PSURfc2V0 X2Rlc2Nfc3RydWN0IHsKICAgICAgc2l6ZV90IGNvdW50OwogICAgICBnc3NfT0lEIGVsZW1lbnRz Owp9IGdzc19PSURfc2V0X2Rlc2MsICpnc3NfT0lEX3NldDsKCnR5cGVkZWYgc3RydWN0IGdzc19i dWZmZXJfZGVzY19zdHJ1Y3QgewogICAgICBzaXplX3QgbGVuZ3RoOwogICAgICB2b2lkICp2YWx1 ZTsKfSBnc3NfYnVmZmVyX2Rlc2MsICpnc3NfYnVmZmVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBnc3Nf Y2hhbm5lbF9iaW5kaW5nc19zdHJ1Y3QgewogICAgICBPTV91aW50MzIgaW5pdGlhdG9yX2FkZHJ0 eXBlOwogICAgICBnc3NfYnVmZmVyX2Rlc2MgaW5pdGlhdG9yX2FkZHJlc3M7CiAgICAgIE9NX3Vp bnQzMiBhY2NlcHRvcl9hZGRydHlwZTsKICAgICAgZ3NzX2J1ZmZlcl9kZXNjIGFjY2VwdG9yX2Fk ZHJlc3M7CiAgICAgIGdzc19idWZmZXJfZGVzYyBhcHBsaWNhdGlvbl9kYXRhOwp9ICpnc3NfY2hh bm5lbF9iaW5kaW5nc190OwoKCgoKCnR5cGVkZWYgT01fdWludDMyIGdzc19xb3BfdDsKdHlwZWRl ZiBpbnQgZ3NzX2NyZWRfdXNhZ2VfdDsKIyAzNTYgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv Z3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3NfYWNxdWlyZV9jcmVkCihPTV91aW50MzIgKiwgZ3Nz X25hbWVfdCwgT01fdWludDMyLCBnc3NfT0lEX3NldCwgZ3NzX2NyZWRfdXNhZ2VfdCwgZ3NzX2Ny ZWRfaWRfdCAqLCBnc3NfT0lEX3NldCAqLCBPTV91aW50MzIgKiApOwojIDM2NyAiL3Vzci9sb2Nh bC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMwogT01fdWludDMyIGdzc19yZWxlYXNlX2NyZWQK KE9NX3VpbnQzMiAqLCBnc3NfY3JlZF9pZF90ICogKTsKCgoKIE9NX3VpbnQzMiBnc3NfaW5pdF9z ZWNfY29udGV4dAooT01fdWludDMyICosIGdzc19jcmVkX2lkX3QsIGdzc19jdHhfaWRfdCAqLCBn c3NfbmFtZV90LCBnc3NfT0lELCBPTV91aW50MzIsIE9NX3VpbnQzMiwgZ3NzX2NoYW5uZWxfYmlu ZGluZ3NfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICosIGdzc19idWZmZXJfdCwgT01fdWludDMy ICosIE9NX3VpbnQzMiAqICk7CiMgMzg4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2Fw aS5oIiAzCiBPTV91aW50MzIgZ3NzX2FjY2VwdF9zZWNfY29udGV4dAooT01fdWludDMyICosIGdz c19jdHhfaWRfdCAqLCBnc3NfY3JlZF9pZF90LCBnc3NfYnVmZmVyX3QsIGdzc19jaGFubmVsX2Jp bmRpbmdzX3QsIGdzc19uYW1lX3QgKiwgZ3NzX09JRCAqLCBnc3NfYnVmZmVyX3QsIE9NX3VpbnQz MiAqLCBPTV91aW50MzIgKiwgZ3NzX2NyZWRfaWRfdCAqICk7CiMgNDAyICIvdXNyL2xvY2FsL2lu Y2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX3Byb2Nlc3NfY29udGV4dF90 b2tlbgooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90ICk7CgoKCgogT01f dWludDMyIGdzc19kZWxldGVfc2VjX2NvbnRleHQKKE9NX3VpbnQzMiAqLCBnc3NfY3R4X2lkX3Qg KiwgZ3NzX2J1ZmZlcl90ICk7CgoKCgogT01fdWludDMyIGdzc19jb250ZXh0X3RpbWUKKE9NX3Vp bnQzMiAqLCBnc3NfY3R4X2lkX3QsIE9NX3VpbnQzMiAqICk7CgoKCgoKIE9NX3VpbnQzMiBnc3Nf Z2V0X21pYwooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX3FvcF90LCBnc3NfYnVmZmVy X3QsIGdzc19idWZmZXJfdCApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3NfdmVyaWZ5X21pYwooT01f dWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfYnVmZmVyX3QsIGdzc19x b3BfdCAqICk7CgoKCgoKCgogT01fdWludDMyIGdzc193cmFwCihPTV91aW50MzIgKiwgZ3NzX2N0 eF9pZF90LCBpbnQsIGdzc19xb3BfdCwgZ3NzX2J1ZmZlcl90LCBpbnQgKiwgZ3NzX2J1ZmZlcl90 ICk7CiMgNDUwICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50 MzIgZ3NzX3Vud3JhcAooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBn c3NfYnVmZmVyX3QsIGludCAqLCBnc3NfcW9wX3QgKiApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3Nf ZGlzcGxheV9zdGF0dXMKKE9NX3VpbnQzMiAqLCBPTV91aW50MzIsIGludCwgZ3NzX09JRCwgT01f dWludDMyICosIGdzc19idWZmZXJfdCApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3NfaW5kaWNhdGVf bWVjaHMKKE9NX3VpbnQzMiAqLCBnc3NfT0lEX3NldCAqICk7CgoKCiBPTV91aW50MzIgZ3NzX2Nv bXBhcmVfbmFtZQooT01fdWludDMyICosIGdzc19uYW1lX3QsIGdzc19uYW1lX3QsIGludCAqICk7 CgoKCgoKIE9NX3VpbnQzMiBnc3NfZGlzcGxheV9uYW1lCihPTV91aW50MzIgKiwgZ3NzX25hbWVf dCwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICogKTsKCgoKCgogT01fdWludDMyIGdzc19pbXBvcnRf bmFtZQooT01fdWludDMyICosIGdzc19idWZmZXJfdCwgZ3NzX09JRCwgZ3NzX25hbWVfdCAqICk7 CgoKCgoKIE9NX3VpbnQzMiBnc3NfcmVsZWFzZV9uYW1lCihPTV91aW50MzIgKiwgZ3NzX25hbWVf dCAqICk7CgoKCiBPTV91aW50MzIgZ3NzX3JlbGVhc2VfYnVmZmVyCihPTV91aW50MzIgKiwgZ3Nz X2J1ZmZlcl90ICk7CgoKCiBPTV91aW50MzIgZ3NzX3JlbGVhc2Vfb2lkX3NldAooT01fdWludDMy ICosIGdzc19PSURfc2V0ICogKTsKCgoKIE9NX3VpbnQzMiBnc3NfaW5xdWlyZV9jcmVkCihPTV91 aW50MzIgKiwgZ3NzX2NyZWRfaWRfdCwgZ3NzX25hbWVfdCAqLCBPTV91aW50MzIgKiwgZ3NzX2Ny ZWRfdXNhZ2VfdCAqLCBnc3NfT0lEX3NldCAqICk7CiMgNTE5ICIvdXNyL2xvY2FsL2luY2x1ZGUv Z3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX2lucXVpcmVfY29udGV4dAooT01fdWlu dDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX25hbWVfdCAqLCBnc3NfbmFtZV90ICosIE9NX3VpbnQz MiAqLCBnc3NfT0lEICosIE9NX3VpbnQzMiAqLCBpbnQgKiwgaW50ICogKTsKIyA1MzIgIi91c3Iv bG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3Nfd3JhcF9zaXpl X2xpbWl0CihPTV91aW50MzIgKiwgZ3NzX2N0eF9pZF90LCBpbnQsIGdzc19xb3BfdCwgT01fdWlu dDMyLCBPTV91aW50MzIgKiApOwojIDU0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3Nh cGkuaCIgMwogT01fdWludDMyIGdzc19pbXBvcnRfbmFtZV9vYmplY3QKKE9NX3VpbnQzMiAqLCB2 b2lkICosIGdzc19PSUQsIGdzc19uYW1lX3QgKiApOwoKCgoKCgogT01fdWludDMyIGdzc19leHBv cnRfbmFtZV9vYmplY3QKKE9NX3VpbnQzMiAqLCBnc3NfbmFtZV90LCBnc3NfT0lELCB2b2lkICog KiApOwoKCgoKCgogT01fdWludDMyIGdzc19hZGRfY3JlZAooT01fdWludDMyICosIGdzc19jcmVk X2lkX3QsIGdzc19uYW1lX3QsIGdzc19PSUQsIGdzc19jcmVkX3VzYWdlX3QsIE9NX3VpbnQzMiwg T01fdWludDMyLCBnc3NfY3JlZF9pZF90ICosIGdzc19PSURfc2V0ICosIE9NX3VpbnQzMiAqLCBP TV91aW50MzIgKiApOwojIDU3MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIg MwogT01fdWludDMyIGdzc19pbnF1aXJlX2NyZWRfYnlfbWVjaAooT01fdWludDMyICosIGdzc19j cmVkX2lkX3QsIGdzc19PSUQsIGdzc19uYW1lX3QgKiwgT01fdWludDMyICosIE9NX3VpbnQzMiAq LCBnc3NfY3JlZF91c2FnZV90ICogKTsKIyA1ODQgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv Z3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3NfZXhwb3J0X3NlY19jb250ZXh0CihPTV91aW50MzIg KiwgZ3NzX2N0eF9pZF90ICosIGdzc19idWZmZXJfdCApOwoKCgoKCiBPTV91aW50MzIgZ3NzX2lt cG9ydF9zZWNfY29udGV4dAooT01fdWludDMyICosIGdzc19idWZmZXJfdCwgZ3NzX2N0eF9pZF90 ICogKTsKCgoKCgogT01fdWludDMyIGdzc19yZWxlYXNlX29pZAooT01fdWludDMyICosIGdzc19P SUQgKiApOwoKCgoKIE9NX3VpbnQzMiBnc3NfY3JlYXRlX2VtcHR5X29pZF9zZXQKKE9NX3VpbnQz MiAqLCBnc3NfT0lEX3NldCAqICk7CgoKCgogT01fdWludDMyIGdzc19hZGRfb2lkX3NldF9tZW1i ZXIKKE9NX3VpbnQzMiAqLCBnc3NfT0lELCBnc3NfT0lEX3NldCAqICk7CgoKCgoKIE9NX3VpbnQz MiBnc3NfdGVzdF9vaWRfc2V0X21lbWJlcgooT01fdWludDMyICosIGdzc19PSUQsIGdzc19PSURf c2V0LCBpbnQgKiApOwoKCgoKCgogT01fdWludDMyIGdzc19zdHJfdG9fb2lkCihPTV91aW50MzIg KiwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICogKTsKCgoKCgogT01fdWludDMyIGdzc19vaWRfdG9f c3RyCihPTV91aW50MzIgKiwgZ3NzX09JRCwgZ3NzX2J1ZmZlcl90ICk7CgoKCgoKIE9NX3VpbnQz MiBnc3NfaW5xdWlyZV9uYW1lc19mb3JfbWVjaAooT01fdWludDMyICosIGdzc19PSUQsIGdzc19P SURfc2V0ICogKTsKIyA2NTIgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgiIDMK IE9NX3VpbnQzMiBnc3Nfc2lnbgooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgaW50LCBnc3Nf YnVmZmVyX3QsIGdzc19idWZmZXJfdCApOwoKCgoKCgogT01fdWludDMyIGdzc192ZXJpZnkKKE9N X3VpbnQzMiAqLCBnc3NfY3R4X2lkX3QsIGdzc19idWZmZXJfdCwgZ3NzX2J1ZmZlcl90LCBpbnQg KiApOwoKCgoKCgogT01fdWludDMyIGdzc19zZWFsCihPTV91aW50MzIgKiwgZ3NzX2N0eF9pZF90 LCBpbnQsIGludCwgZ3NzX2J1ZmZlcl90LCBpbnQgKiwgZ3NzX2J1ZmZlcl90ICk7CiMgNjc4ICIv dXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX3Vuc2Vh bAooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfYnVmZmVyX3Qs IGludCAqLCBpbnQgKiApOwojIDY4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGku aCIgMwogT01fdWludDMyIGdzc19leHBvcnRfbmFtZQooT01fdWludDMyICosIGNvbnN0IGdzc19u YW1lX3QsIGdzc19idWZmZXJfdCApOwoKCgoKCiBPTV91aW50MzIgZ3NzX2R1cGxpY2F0ZV9uYW1l CihPTV91aW50MzIgKiwgY29uc3QgZ3NzX25hbWVfdCwgZ3NzX25hbWVfdCAqICk7CgoKCgoKIE9N X3VpbnQzMiBnc3NfY2Fub25pY2FsaXplX25hbWUKKE9NX3VpbnQzMiAqLCBjb25zdCBnc3NfbmFt ZV90LCBjb25zdCBnc3NfT0lELCBnc3NfbmFtZV90ICogKTsKIyAzOTYgImluY2x1ZGUvaW5jbHVk ZXMuaCIgMgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGlfZ2VuZXJp Yy5oIiAxIDMKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGlfZ2VuZXJpYy5o IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMSAzCiMgMzQgIi91 c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpX2dlbmVyaWMuaCIgMiAzCgoKIGV4dGVybiBn c3NfT0lEIGdzc19udF91c2VyX25hbWU7CiBleHRlcm4gZ3NzX09JRCBnc3NfbnRfbWFjaGluZV91 aWRfbmFtZTsKIGV4dGVybiBnc3NfT0lEIGdzc19udF9zdHJpbmdfdWlkX25hbWU7CiBleHRlcm4g Z3NzX09JRCBnc3NfbnRfc2VydmljZV9uYW1lOwogZXh0ZXJuIGdzc19PSUQgZ3NzX250X2V4cG9y dGVkX25hbWU7CiBleHRlcm4gZ3NzX09JRCBnc3NfbnRfc2VydmljZV9uYW1lX3YyOwojIDQwMiAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgNjcyICJpbmNsdWRlL2luY2x1ZGVzLmgiCiMgMSAiaW5j bHVkZS94ZmlsZS5oIiAxCiMgMjggImluY2x1ZGUveGZpbGUuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgIGludCBmZDsKICAgICAgICBjaGFyICpidWY7CiAgICAgICAgY2hhciAqbmV4dDsKICAg ICAgICBpbnQgYnVmc2l6ZTsKICAgICAgICBpbnQgYnVmdXNlZDsKICAgICAgICBpbnQgb3Blbl9m bGFnczsKICAgICAgICBpbnQgYnVmdHlwZTsKICAgICAgICBpbnQgZmxhZ3M7Cn0gWEZJTEU7Cgpl eHRlcm4gWEZJTEUgKnhfc3RkaW4sICp4X3N0ZG91dCwgKnhfc3RkZXJyOwojIDY3MyAiaW5jbHVk ZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9pbnRsLmgiIDEKIyA2NzQgImluY2x1ZGUvaW5j bHVkZXMuaCIgMgojIDEgInViaXF4L3ViaV9zTGlua0xpc3QuaCIgMQojIDEwNiAidWJpcXgvdWJp X3NMaW5rTGlzdC5oIgojIDEgInViaXF4L3N5c19pbmNsdWRlLmgiIDEKIyAxMDcgInViaXF4L3Vi aV9zTGlua0xpc3QuaCIgMgojIDExOCAidWJpcXgvdWJpX3NMaW5rTGlzdC5oIgp0eXBlZGVmIHN0 cnVjdCB1Ymlfc2xMaXN0Tm9kZQogIHsKICBzdHJ1Y3QgdWJpX3NsTGlzdE5vZGUgKk5leHQ7CiAg fSB1Ymlfc2xOb2RlOwoKdHlwZWRlZiB1Ymlfc2xOb2RlICp1Ymlfc2xOb2RlUHRyOwoKdHlwZWRl ZiBzdHJ1Y3QKICB7CiAgdWJpX3NsTm9kZVB0ciBIZWFkOwogIHViaV9zbE5vZGVQdHIgVGFpbDsK ICB1bnNpZ25lZCBsb25nIGNvdW50OwogIH0gdWJpX3NsTGlzdDsKCnR5cGVkZWYgdWJpX3NsTGlz dCAqdWJpX3NsTGlzdFB0cjsKIyAyMDUgInViaXF4L3ViaV9zTGlua0xpc3QuaCIKdWJpX3NsTGlz dFB0ciB1Ymlfc2xJbml0TGlzdCggdWJpX3NsTGlzdFB0ciBMaXN0UHRyICk7CiMgMjE4ICJ1Ymlx eC91Ymlfc0xpbmtMaXN0LmgiCnViaV9zbE5vZGVQdHIgdWJpX3NsSW5zZXJ0KCB1Ymlfc2xMaXN0 UHRyIExpc3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Ymlfc2xOb2RlUHRyIE5l dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9zbE5vZGVQdHIgQWZ0ZXIgKTsKIyAy MzcgInViaXF4L3ViaV9zTGlua0xpc3QuaCIKdWJpX3NsTm9kZVB0ciB1Ymlfc2xSZW1vdmVOZXh0 KCB1Ymlfc2xMaXN0UHRyIExpc3RQdHIsIHViaV9zbE5vZGVQdHIgQWZ0ZXJNZSApOwojIDY3NSAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIiAxCiMgOTMg InViaXF4L3ViaV9kTGlua0xpc3QuaCIKdHlwZWRlZiBzdHJ1Y3QgdWJpX2RsTGlzdE5vZGUKICB7 CiAgc3RydWN0IHViaV9kbExpc3ROb2RlICpOZXh0OwogIHN0cnVjdCB1YmlfZGxMaXN0Tm9kZSAq UHJldjsKICB9IHViaV9kbE5vZGU7Cgp0eXBlZGVmIHViaV9kbE5vZGUgKnViaV9kbE5vZGVQdHI7 Cgp0eXBlZGVmIHN0cnVjdAogIHsKICB1YmlfZGxOb2RlUHRyIEhlYWQ7CiAgdWJpX2RsTm9kZVB0 ciBUYWlsOwogIHVuc2lnbmVkIGxvbmcgY291bnQ7CiAgfSB1YmlfZGxMaXN0OwoKdHlwZWRlZiB1 YmlfZGxMaXN0ICp1YmlfZGxMaXN0UHRyOwojIDE5NCAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIgp1 YmlfZGxMaXN0UHRyIHViaV9kbEluaXRMaXN0KCB1YmlfZGxMaXN0UHRyIExpc3RQdHIgKTsKIyAy MDcgInViaXF4L3ViaV9kTGlua0xpc3QuaCIKdWJpX2RsTm9kZVB0ciB1YmlfZGxJbnNlcnQoIHVi aV9kbExpc3RQdHIgTGlzdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9kbE5v ZGVQdHIgTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2RsTm9kZVB0ciBBZnRl ciApOwojIDIyNyAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIgp1YmlfZGxOb2RlUHRyIHViaV9kbFJl bW92ZSggdWJpX2RsTGlzdFB0ciBMaXN0UHRyLCB1YmlfZGxOb2RlUHRyIE9sZCApOwojIDY3NiAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9kbGlua2xpc3QuaCIgMQojIDY3NyAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAidGRiL3RkYi5oIiAxCiMgNDYgInRkYi90ZGIuaCIK ZW51bSBUREJfRVJST1Ige1REQl9TVUNDRVNTPTAsIFREQl9FUlJfQ09SUlVQVCwgVERCX0VSUl9J TywgVERCX0VSUl9MT0NLLAogICAgICAgICAgICAgICAgVERCX0VSUl9PT00sIFREQl9FUlJfRVhJ U1RTLCBUREJfRVJSX05PRVhJU1QsIFREQl9FUlJfTk9MT0NLIH07CgoKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgICAgIGNoYXIgKmRwdHI7CiAgICAgICAgc2l6ZV90IGRzaXplOwp9IFREQl9EQVRB OwoKdHlwZWRlZiB1bnNpZ25lZCB0ZGJfbGVuOwp0eXBlZGVmIHVuc2lnbmVkIHRkYl9vZmY7CgoK c3RydWN0IHRkYl9oZWFkZXIgewogICAgICAgIGNoYXIgbWFnaWNfZm9vZFszMl07CiAgICAgICAg dW5zaWduZWQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBoYXNoX3NpemU7CiAgICAgICAgdGRi X29mZiByd2xvY2tzOwogICAgICAgIHRkYl9vZmYgcmVzZXJ2ZWRbMzFdOwp9OwoKc3RydWN0IHRk Yl9sb2NrX3R5cGUgewogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgIHVuc2lnbmVkIGx0 eXBlOwp9OwoKc3RydWN0IHRkYl90cmF2ZXJzZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgdGRiX3Ry YXZlcnNlX2xvY2sgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgb2ZmOwogICAgICAgIHVuc2lnbmVk IGhhc2g7Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgdGRiX2NvbnRleHQgewogICAgICAgIGNoYXIgKm5h bWU7CiAgICAgICAgdm9pZCAqbWFwX3B0cjsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgdGRiX2xl biBtYXBfc2l6ZTsKICAgICAgICBpbnQgcmVhZF9vbmx5OwogICAgICAgIHN0cnVjdCB0ZGJfbG9j a190eXBlICpsb2NrZWQ7CiAgICAgICAgZW51bSBUREJfRVJST1IgZWNvZGU7CiAgICAgICAgc3Ry dWN0IHRkYl9oZWFkZXIgaGVhZGVyOwogICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgICAgIHVu c2lnbmVkICpsb2NrZWRrZXlzOwogICAgICAgIHN0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayB0cmF2 bG9ja3M7CiAgICAgICAgc3RydWN0IHRkYl9jb250ZXh0ICpuZXh0OwogICAgICAgIGRldl90IGRl dmljZTsKICAgICAgICBpbm9fdCBpbm9kZTsKICAgICAgICB2b2lkICgqbG9nX2ZuKShzdHJ1Y3Qg dGRiX2NvbnRleHQgKnRkYiwgaW50IGxldmVsLCBjb25zdCBjaGFyICosIC4uLik7CiAgICAgICAg aW50IG9wZW5fZmxhZ3M7Cn0gVERCX0NPTlRFWFQ7Cgp0eXBlZGVmIGludCAoKnRkYl90cmF2ZXJz ZV9mdW5jKShUREJfQ09OVEVYVCAqLCBUREJfREFUQSwgVERCX0RBVEEsIHZvaWQgKik7CnR5cGVk ZWYgdm9pZCAoKnRkYl9sb2dfZnVuYykoVERCX0NPTlRFWFQgKiwgaW50ICwgY29uc3QgY2hhciAq LCAuLi4pOwoKVERCX0NPTlRFWFQgKnRkYl9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNo X3NpemUsIGludCB0ZGJfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgb3Blbl9mbGFn cywgbW9kZV90IG1vZGUpOwpUREJfQ09OVEVYVCAqdGRiX29wZW5fZXgoY29uc3QgY2hhciAqbmFt ZSwgaW50IGhhc2hfc2l6ZSwgaW50IHRkYl9mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg IGludCBvcGVuX2ZsYWdzLCBtb2RlX3QgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRk Yl9sb2dfZnVuYyBsb2dfZm4pOwoKaW50IHRkYl9yZW9wZW4oVERCX0NPTlRFWFQgKnRkYik7Cmlu dCB0ZGJfcmVvcGVuX2FsbCh2b2lkKTsKdm9pZCB0ZGJfbG9nZ2luZ19mdW5jdGlvbihUREJfQ09O VEVYVCAqdGRiLCB0ZGJfbG9nX2Z1bmMpOwplbnVtIFREQl9FUlJPUiB0ZGJfZXJyb3IoVERCX0NP TlRFWFQgKnRkYik7CmNvbnN0IGNoYXIgKnRkYl9lcnJvcnN0cihUREJfQ09OVEVYVCAqdGRiKTsK VERCX0RBVEEgdGRiX2ZldGNoKFREQl9DT05URVhUICp0ZGIsIFREQl9EQVRBIGtleSk7CmludCB0 ZGJfZGVsZXRlKFREQl9DT05URVhUICp0ZGIsIFREQl9EQVRBIGtleSk7CmludCB0ZGJfc3RvcmUo VERCX0NPTlRFWFQgKnRkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCBpbnQgZmxhZyk7 CmludCB0ZGJfY2xvc2UoVERCX0NPTlRFWFQgKnRkYik7ClREQl9EQVRBIHRkYl9maXJzdGtleShU REJfQ09OVEVYVCAqdGRiKTsKVERCX0RBVEEgdGRiX25leHRrZXkoVERCX0NPTlRFWFQgKnRkYiwg VERCX0RBVEEga2V5KTsKaW50IHRkYl90cmF2ZXJzZShUREJfQ09OVEVYVCAqdGRiLCB0ZGJfdHJh dmVyc2VfZnVuYyBmbiwgdm9pZCAqc3RhdGUpOwppbnQgdGRiX2V4aXN0cyhUREJfQ09OVEVYVCAq dGRiLCBUREJfREFUQSBrZXkpOwppbnQgdGRiX2xvY2trZXlzKFREQl9DT05URVhUICp0ZGIsIHVu c2lnbmVkIG51bWJlciwgVERCX0RBVEEga2V5c1tdKTsKdm9pZCB0ZGJfdW5sb2Nra2V5cyhUREJf Q09OVEVYVCAqdGRiKTsKaW50IHRkYl9sb2NrYWxsKFREQl9DT05URVhUICp0ZGIpOwp2b2lkIHRk Yl91bmxvY2thbGwoVERCX0NPTlRFWFQgKnRkYik7CgoKaW50IHRkYl9jaGFpbmxvY2soVERCX0NP TlRFWFQgKnRkYiwgVERCX0RBVEEga2V5KTsKdm9pZCB0ZGJfY2hhaW51bmxvY2soVERCX0NPTlRF WFQgKnRkYiwgVERCX0RBVEEga2V5KTsKCgp2b2lkIHRkYl9kdW1wX2FsbChUREJfQ09OVEVYVCAq dGRiKTsKdm9pZCB0ZGJfcHJpbnRmcmVlbGlzdChUREJfQ09OVEVYVCAqdGRiKTsKCmV4dGVybiBU REJfREFUQSB0ZGJfbnVsbDsKIyA2NzggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgInRkYi9z cGlubG9jay5oIiAxCiMgNDggInRkYi9zcGlubG9jay5oIgppbnQgdGRiX3NwaW5sb2NrKFREQl9D T05URVhUICp0ZGIsIGludCBsaXN0LCBpbnQgcndfdHlwZSk7CmludCB0ZGJfc3BpbnVubG9jayhU REJfQ09OVEVYVCAqdGRiLCBpbnQgbGlzdCwgaW50IHJ3X3R5cGUpOwppbnQgdGRiX2NyZWF0ZV9y d2xvY2tzKGludCBmZCwgdW5zaWduZWQgaW50IGhhc2hfc2l6ZSk7CgppbnQgdGRiX2NsZWFyX3Nw aW5sb2NrcyhUREJfQ09OVEVYVCAqdGRiKTsKIyA2NzkgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoj IDEgImluY2x1ZGUvdGFsbG9jLmgiIDEKIyAzNCAiaW5jbHVkZS90YWxsb2MuaCIKdHlwZWRlZiBz dHJ1Y3QgdGFsbG9jX2N0eCBUQUxMT0NfQ1RYOwoKVEFMTE9DX0NUWCAqdGFsbG9jX2luaXRfbmFt ZWQoY2hhciBjb25zdCAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKF9fcHJpbnRm X18sIDEsIDIpKSk7CgpjaGFyICp0YWxsb2NfdmFzcHJpbnRmKFRBTExPQ19DVFggKnQsIGNvbnN0 IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChf X3ByaW50Zl9fLCAyLCAwKSkpOwoKY2hhciAqdGFsbG9jX2FzcHJpbnRmKFRBTExPQ19DVFggKnQs IGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKF9f cHJpbnRmX18sIDIsIDMpKSk7CiMgNjgwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxICJpbmNs dWRlL2Fkcy5oIiAxCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lkICpsZDsKICAg ICAgICBjaGFyICpyZWFsbTsKICAgICAgICBjaGFyICpsZGFwX3NlcnZlcjsKICAgICAgICBjaGFy ICpsZGFwX3NlcnZlcl9uYW1lOwogICAgICAgIGNoYXIgKmtkY19zZXJ2ZXI7CiAgICAgICAgaW50 IGxkYXBfcG9ydDsKICAgICAgICBjaGFyICpiaW5kX3BhdGg7CiAgICAgICAgdGltZV90IGxhc3Rf YXR0ZW1wdDsKICAgICAgICBjaGFyICpwYXNzd29yZDsKICAgICAgICBjaGFyICp1c2VyX25hbWU7 CiAgICAgICAgY2hhciAqc2VydmVyX3JlYWxtOwp9IEFEU19TVFJVQ1Q7CgoKZW51bSBhZHNfZXJy b3JfdHlwZSB7QURTX0VSUk9SX0tSQjUsIEFEU19FUlJPUl9HU1MsCiAgICAgICAgICAgICAgICAg ICAgIEFEU19FUlJPUl9MREFQLCBBRFNfRVJST1JfU1lTVEVNfTsKCnR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBlbnVtIGFkc19lcnJvcl90eXBlIGVycm9yX3R5cGU7CiAgICAgICAgaW50IHJjOwoK CiAgICAgICAgaW50IG1pbm9yX3N0YXR1czsKfSBBRFNfU1RBVFVTOwojIDY4MSAiaW5jbHVkZS9p bmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9pbnRlcmZhY2VzLmgiIDEKCgoKCgoKCnN0cnVjdCBp ZmFjZV9zdHJ1Y3QgewogICAgICAgIGNoYXIgbmFtZVsxNl07CiAgICAgICAgc3RydWN0IGluX2Fk ZHIgaXA7CiAgICAgICAgc3RydWN0IGluX2FkZHIgbmV0bWFzazsKfTsKIyA2ODIgImluY2x1ZGUv aW5jbHVkZXMuaCIgMgojIDEgImluY2x1ZGUvaGFzaC5oIiAxCiMgMjggImluY2x1ZGUvaGFzaC5o Igp0eXBlZGVmIGludCAoKmNvbXBhcmVfZnVuY3Rpb24pKGNoYXIgKiwgY2hhciAqKTsKdHlwZWRl ZiBpbnQgKCpoYXNoX2Z1bmN0aW9uKShpbnQsIGNoYXIgKik7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg bHJ1X25vZGUgewogICAgICAgIHViaV9kbE5vZGUgbHJ1X2xpbms7CiAgICAgICAgdm9pZCAqaGFz aF9lbGVtOwp9IGxydV9ub2RlOwojIDUxICJpbmNsdWRlL2hhc2guaCIKdHlwZWRlZiBzdHJ1Y3Qg aGFzaF9lbGVtZW50IHsKICAgICAgICB1YmlfZGxOb2RlIGJ1Y2tldF9saW5rOwogICAgICAgIGxy dV9ub2RlIGxydV9saW5rOwogICAgICAgIHViaV9kbExpc3QgKmJ1Y2tldDsKICAgICAgICB2b2lk ICp2YWx1ZTsKICAgICAgICBjaGFyIGtleVsxXTsKfSBoYXNoX2VsZW1lbnQ7CiMgNjcgImluY2x1 ZGUvaGFzaC5oIgp0eXBlZGVmIHN0cnVjdCBoYXNoX3RhYmxlIHsKICAgICAgICB1YmlfZGxMaXN0 ICpidWNrZXRzOwogICAgICAgIHViaV9kbExpc3QgbHJ1X2NoYWluOwogICAgICAgIGludCBudW1f ZWxlbWVudHM7CiAgICAgICAgaW50IHNpemU7CiAgICAgICAgY29tcGFyZV9mdW5jdGlvbiBjb21w X2Z1bmM7Cn0gaGFzaF90YWJsZTsKIyA2ODMgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImlu Y2x1ZGUvdHJhbnMyLmgiIDEKIyA2ODQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImluY2x1 ZGUvbnRlcnIuaCIgMQojIDY4NSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9z ZWNyZXRzLmgiIDEKIyAzNSAiaW5jbHVkZS9zZWNyZXRzLmgiCnN0cnVjdCBtYWNoaW5lX2FjY3Rf cGFzcyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBoYXNoWzE2XTsKICAgICAgICB0aW1lX3QgbW9k X3RpbWU7Cn07CiMgNjg2ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxICJpbmNsdWRlL21lc3Nh Z2VzLmgiIDEKIyA2ODcgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImluY2x1ZGUvdXRpbF9s aXN0LmgiIDEKIyAyOCAiaW5jbHVkZS91dGlsX2xpc3QuaCIKIyAxICJpbmNsdWRlL3NtYi5oIiAx CiMgNDEgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgaW50IEJPT0w7CiMgNjUgImluY2x1ZGUvc21i LmgiCiMgMSAiaW5jbHVkZS9kZWJ1Zy5oIiAxCiMgNDAgImluY2x1ZGUvZGVidWcuaCIKaW50IERl YnVnMSggY2hhciAqLCAuLi4gKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChfX3ByaW50Zl9fLCAx LCAyKSkpOwpCT09MIGRiZ3RleHQoIGNoYXIgKiwgLi4uICkgX19hdHRyaWJ1dGVfXyAoKGZvcm1h dCAoX19wcmludGZfXywgMSwgMikpKTsKCmV4dGVybiBYRklMRSAqZGJmOwojIDk0ICJpbmNsdWRl L2RlYnVnLmgiCmV4dGVybiBpbnQgREVCVUdMRVZFTF9DTEFTU1s4XTsKZXh0ZXJuIEJPT0wgREVC VUdMRVZFTF9DTEFTU19JU1NFVFs4XTsKCnN0cnVjdCBkZWJ1Z2xldmVsX21lc3NhZ2UgewogICAg ICAgIGludCBkZWJ1Z2xldmVsX2NsYXNzWzhdOwogICAgICAgIEJPT0wgZGVidWdsZXZlbF9jbGFz c19pc3NldFs4XTsKfTsKIyA2NiAiaW5jbHVkZS9zbWIuaCIgMgojIDE1NSAiaW5jbHVkZS9zbWIu aCIKIyAxICJpbmNsdWRlL2Rvc2Vyci5oIiAxCiMgMTU2ICJpbmNsdWRlL3NtYi5oIiAyCgoKCgoK CnR5cGVkZWYgY2hhciBwc3RyaW5nWzEwMjRdOwp0eXBlZGVmIGNoYXIgZnN0cmluZ1syNTZdOwoj IDE3MyAiaW5jbHVkZS9zbWIuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzbWJfdWNzMl90OwoK CnR5cGVkZWYgc21iX3VjczJfdCB3cHN0cmluZ1sxMDI0XTsKdHlwZWRlZiBzbWJfdWNzMl90IHdm c3RyaW5nWzI1Nl07CiMgMjA0ICJpbmNsdWRlL3NtYi5oIgp0eXBlZGVmIHN0cnVjdCBudHRpbWVf aW5mbwp7CiAgdW5zaWduZWQgaW50IGxvdzsKICB1bnNpZ25lZCBpbnQgaGlnaDsKfSBOVFRJTUU7 CiMgMjE3ICJpbmNsdWRlL3NtYi5oIgp0eXBlZGVmIHN0cnVjdCB7dW5zaWduZWQgaW50IHY7fSBO VFNUQVRVUzsKIyAyMjcgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0IHt1bnNpZ25lZCBp bnQgdjt9IFdFUlJPUjsKIyAyNTcgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0CnsKICAg ICAgICB1bnNpZ25lZCBpbnQgcGlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZ1aWQ7Cgp9CnZ1 c2VyX2tleTsKCgpzdHJ1Y3QgdXNlX2luZm8KewogICAgICAgIEJPT0wgY29ubmVjdGVkOwogICAg ICAgIGNoYXIgKnNydl9uYW1lOwogICAgICAgIHZ1c2VyX2tleSBrZXk7CiAgICAgICAgY2hhciAq dXNlcl9uYW1lOwogICAgICAgIGNoYXIgKmRvbWFpbjsKfTsKIyAyODUgImluY2x1ZGUvc21iLmgi CnR5cGVkZWYgc3RydWN0IHNpZF9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIHNpZF9yZXZfbnVtOwog IHVuc2lnbmVkIGNoYXIgbnVtX2F1dGhzOwogIHVuc2lnbmVkIGNoYXIgaWRfYXV0aFs2XTsKCgoK CgoKICB1bnNpZ25lZCBpbnQgc3ViX2F1dGhzWzE1XTsKCn0gRE9NX1NJRDsKIyAzMTYgImluY2x1 ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0IF9udF91c2VyX3Rva2VuIHsKICAgICAgICBzaXplX3Qg bnVtX3NpZHM7CiAgICAgICAgRE9NX1NJRCAqdXNlcl9zaWRzOwp9IE5UX1VTRVJfVE9LRU47CgoK CgoKCnR5cGVkZWYgc3RydWN0IGxvY2FsX2dycF9tZW1iZXJfaW5mbwp7CiAgICAgICAgRE9NX1NJ RCBzaWQgOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2lkX3VzZTsKICAgICAgICBmc3RyaW5nIG5h bWUgOwoKfSBMT0NBTF9HUlBfTUVNQkVSOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgbG9jYWxfZ3JwX2lu Zm8KewogICAgICAgIGZzdHJpbmcgbmFtZTsKICAgICAgICBmc3RyaW5nIGNvbW1lbnQ7Cgp9IExP Q0FMX0dSUDsKCgoKCnR5cGVkZWYgc3RydWN0IGRvbWFpbl9ncnBfaW5mbwp7CiAgICAgICAgZnN0 cmluZyBuYW1lOwogICAgICAgIGZzdHJpbmcgY29tbWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg cmlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYXR0cjsKCn0gRE9NQUlOX0dSUDsKCgoKCnR5cGVk ZWYgc3RydWN0IGRvbWFpbl9ncnBfbWVtYmVyX2luZm8KewogICAgICAgIGZzdHJpbmcgbmFtZTsK ICAgICAgICB1bnNpZ25lZCBjaGFyIGF0dHI7Cgp9IERPTUFJTl9HUlBfTUVNQkVSOwoKCnR5cGVk ZWYgc3RydWN0IHRpbWVfaW5mbwp7CiAgdW5zaWduZWQgaW50IHRpbWU7Cn0gVVRJTUU7CgoKdHlw ZWRlZiBzdHJ1Y3QKewogIHNpemVfdCB3cl90b3RhbF93cml0dGVuOwogIGludCB3cl90aW1lb3V0 OwogIGludCB3cl9lcnJjbGFzczsKICBpbnQgd3JfZXJyb3I7CiAgQk9PTCB3cl9tb2RlOwogIEJP T0wgd3JfZGlzY2FyZDsKfSB3cml0ZV9ibXB4X3N0cnVjdDsKCnR5cGVkZWYgc3RydWN0IHdyaXRl X2NhY2hlCnsKICAgIG9mZl90IGZpbGVfc2l6ZTsKICAgIG9mZl90IG9mZnNldDsKICAgIHNpemVf dCBhbGxvY19zaXplOwogICAgc2l6ZV90IGRhdGFfc2l6ZTsKICAgIGNoYXIgKmRhdGE7Cn0gd3Jp dGVfY2FjaGU7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgc21iX3VjczJfdCAqcGF0aDsKICAg ICAgICBzbWJfdWNzMl90ICpuYW1lOwogICAgICAgIHNtYl91Y3MyX3QgKnVuaXhuYW1lOwogICAg ICAgIHNtYl91Y3MyX3QgKmRvc25hbWU7CiAgICAgICAgc3RydWN0IHN0YXQgKnN0YXRpbmZvOwp9 IHNtYl9maWxlbmFtZTsKCgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3QKewogICAgICAgIHN0 cnVjdCBmaWxlc19zdHJ1Y3QgKm5leHQsICpwcmV2OwogICAgICAgIGludCBmbnVtOwogICAgICAg IHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubjsKICAgICAgICBpbnQgZmQ7CiAgICAgICAg aW50IHByaW50X2pvYmlkOwogICAgICAgIGRldl90IGRldjsKICAgICAgICBpbm9fdCBpbm9kZTsK ICAgICAgICBCT09MIGRlbGV0ZV9vbl9jbG9zZTsKICAgICAgICBvZmZfdCBwb3M7CiAgICAgICAg b2ZmX3Qgc2l6ZTsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2 dWlkOwogICAgICAgIHdyaXRlX2JtcHhfc3RydWN0ICp3Ym1weF9wdHI7CiAgICAgICAgd3JpdGVf Y2FjaGUgKndjcDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBvcGVuX3RpbWU7CiAgICAgICAgaW50 IHNoYXJlX21vZGU7CiAgICAgICAgdGltZV90IHBlbmRpbmdfbW9kdGltZTsKICAgICAgICBpbnQg b3Bsb2NrX3R5cGU7CiAgICAgICAgaW50IHNlbnRfb3Bsb2NrX2JyZWFrOwogICAgICAgIHVuc2ln bmVkIGxvbmcgZmlsZV9pZDsKICAgICAgICBCT09MIGNhbl9sb2NrOwogICAgICAgIEJPT0wgY2Fu X3JlYWQ7CiAgICAgICAgQk9PTCBjYW5fd3JpdGU7CiAgICAgICAgQk9PTCBwcmludF9maWxlOwog ICAgICAgIEJPT0wgbW9kaWZpZWQ7CiAgICAgICAgQk9PTCBpc19kaXJlY3Rvcnk7CiAgICAgICAg Qk9PTCBkaXJlY3RvcnlfZGVsZXRlX29uX2Nsb3NlOwogICAgICAgIEJPT0wgc3RhdF9vcGVuOwog ICAgICAgIGNoYXIgKmZzcF9uYW1lOwp9IGZpbGVzX3N0cnVjdDsKCgoKCgoKdHlwZWRlZiBzdHJ1 Y3QKewogIHRpbWVfdCBtb2RpZnlfdGltZTsKICB0aW1lX3Qgc3RhdHVzX3RpbWU7Cn0gZGlyX3N0 YXR1c19zdHJ1Y3Q7CgpzdHJ1Y3QgdWlkX2NhY2hlIHsKICBpbnQgZW50cmllczsKICB1aWRfdCBs aXN0WzRdOwp9OwoKdHlwZWRlZiBzdHJ1Y3QKewogIGNoYXIgKm5hbWU7CiAgQk9PTCBpc193aWxk Owp9IG5hbWVfY29tcGFyZV9lbnRyeTsKCgoKIyAxICJpbmNsdWRlL3Zmcy5oIiAxCiMgNDYgImlu Y2x1ZGUvdmZzLmgiCnN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdDsKc3RydWN0IGZpbGVzX3N0cnVj dDsKc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbzsKCnN0cnVjdCB2ZnNfb3BzIHsKCgoK ICAgIGludCAoKmNvbm5lY3QpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3Qg Y2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqdXNlcik7CiAgICB2b2lkICgqZGlzY29ubmVjdCko c3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uKTsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAo KmRpc2tfZnJlZSkoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBjb25zdCBjaGFyICpw YXRoLCBCT09MIHNtYWxsX3F1ZXJ5LCB1bnNpZ25lZCBsb25nIGxvbmcgKmJzaXplLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKmRmcmVlLCB1bnNpZ25l ZCBsb25nIGxvbmcgKmRzaXplKTsKCgoKICAgIERJUiAqKCpvcGVuZGlyKShzdHJ1Y3QgY29ubmVj dGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKmZuYW1lKTsKICAgIHN0cnVjdCBkaXJlbnQg KigqcmVhZGRpcikoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBESVIgKmRpcnApOwog ICAgaW50ICgqbWtkaXIpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hh ciAqcGF0aCwgbW9kZV90IG1vZGUpOwogICAgaW50ICgqcm1kaXIpKHN0cnVjdCBjb25uZWN0aW9u X3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCk7CiAgICBpbnQgKCpjbG9zZWRpcikoc3Ry dWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBESVIgKmRpcik7CgoKCiAgICBpbnQgKCpvcGVu KShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQg ZmxhZ3MsIG1vZGVfdCBtb2RlKTsKICAgIGludCAoKmNsb3NlKShzdHJ1Y3QgZmlsZXNfc3RydWN0 ICpmc3AsIGludCBmZCk7CiAgICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IGZpbGVzX3N0cnVjdCAq ZnNwLCBpbnQgZmQsIHZvaWQgKmRhdGEsIHNpemVfdCBuKTsKICAgIHNzaXplX3QgKCp3cml0ZSko c3RydWN0IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf dCBuKTsKICAgIG9mZl90ICgqbHNlZWspKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZp bGVkZXMsIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CiAgICBpbnQgKCpyZW5hbWUpKHN0cnVj dCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqb2xkLCBjb25zdCBjaGFyICpu ZXcpOwogICAgaW50ICgqZnN5bmMpKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZkKTsK ICAgIGludCAoKnN0YXQpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hh ciAqZm5hbWUsIHN0cnVjdCBzdGF0ICpzYnVmKTsKICAgIGludCAoKmZzdGF0KShzdHJ1Y3QgZmls ZXNfc3RydWN0ICpmc3AsIGludCBmZCwgc3RydWN0IHN0YXQgKnNidWYpOwogICAgaW50ICgqbHN0 YXQpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCwgc3Ry dWN0IHN0YXQgKnNidWYpOwogICAgaW50ICgqdW5saW5rKShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1 Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKnBhdGgpOwogICAgaW50ICgqY2htb2QpKHN0cnVjdCBjb25u ZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOwogICAg aW50ICgqZmNobW9kKShzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmc3AsIGludCBmZCwgbW9kZV90IG1v ZGUpOwogICAgICAgIGludCAoKmNob3duKShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4s IGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKICAgICAgICBpbnQgKCpm Y2hvd24pKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZkLCB1aWRfdCB1aWQsIGdpZF90 IGdpZCk7CiAgICAgICAgaW50ICgqY2hkaXIpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29u biwgY29uc3QgY2hhciAqcGF0aCk7CiAgICAgICAgY2hhciAqKCpnZXR3ZCkoc3RydWN0IGNvbm5l Y3Rpb25fc3RydWN0ICpjb25uLCBjaGFyICpidWYpOwogICAgICAgIGludCAoKnV0aW1lKShzdHJ1 Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCB1dGlt YnVmICp0aW1lcyk7CiAgICAgICAgaW50ICgqZnRydW5jYXRlKShzdHJ1Y3QgZmlsZXNfc3RydWN0 ICpmc3AsIGludCBmZCwgb2ZmX3Qgb2Zmc2V0KTsKICAgICAgICBCT09MICgqbG9jaykoc3RydWN0 IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIGludCBvcCwgb2ZmX3Qgb2Zmc2V0LCBvZmZfdCBj b3VudCwgaW50IHR5cGUpOwogICAgICAgIGludCAoKnN5bWxpbmspKHN0cnVjdCBjb25uZWN0aW9u X3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCk7 CiAgICAgICAgaW50ICgqcmVhZGxpbmspKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwg Y29uc3QgY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6KTsKCgoKICAgICAgICBz aXplX3QgKCpmZ2V0X250X2FjbCkoc3RydWN0IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIHN0 cnVjdCBzZWN1cml0eV9kZXNjcmlwdG9yX2luZm8gKipwcGRlc2MpOwogICAgICAgIHNpemVfdCAo KmdldF9udF9hY2wpKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgY29uc3QgY2hhciAqbmFtZSwg c3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbyAqKnBwZGVzYyk7CiAgICAgICAgQk9PTCAo KmZzZXRfbnRfYWNsKShzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmc3AsIGludCBmZCwgdW5zaWduZWQg aW50IHNlY3VyaXR5X2luZm9fc2VudCwgc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbyAq cHNkKTsKICAgICAgICBCT09MICgqc2V0X250X2FjbCkoc3RydWN0IGZpbGVzX3N0cnVjdCAqZnNw LCBjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgc2VjdXJpdHlfaW5mb19zZW50LCBzdHJ1 Y3Qgc2VjdXJpdHlfZGVzY3JpcHRvcl9pbmZvICpwc2QpOwoKCgogICAgICAgIGludCAoKmNobW9k X2FjbCkoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBjb25zdCBjaGFyICpuYW1lLCBt b2RlX3QgbW9kZSk7CiAgICAgICAgaW50ICgqZmNobW9kX2FjbCkoc3RydWN0IGZpbGVzX3N0cnVj dCAqZnNwLCBpbnQgZmQsIG1vZGVfdCBtb2RlKTsKCn07CgpzdHJ1Y3QgdmZzX29wdGlvbnMgewog ICAgc3RydWN0IHZmc19vcHRpb25zICpwcmV2LCAqbmV4dDsKICAgIGNoYXIgKm5hbWU7CiAgICBj aGFyICp2YWx1ZTsKfTsKIyA0NjAgImluY2x1ZGUvc21iLmgiIDIKCnR5cGVkZWYgc3RydWN0IGNv bm5lY3Rpb25fc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKm5leHQs ICpwcmV2OwogICAgICAgIHVuc2lnbmVkIGNudW07CiAgICAgICAgaW50IHNlcnZpY2U7CiAgICAg ICAgQk9PTCBmb3JjZV91c2VyOwogICAgICAgIHN0cnVjdCB1aWRfY2FjaGUgdWlkX2NhY2hlOwog ICAgICAgIHZvaWQgKmRpcnB0cjsKICAgICAgICBCT09MIHByaW50ZXI7CiAgICAgICAgQk9PTCBp cGM7CiAgICAgICAgQk9PTCByZWFkX29ubHk7CiAgICAgICAgQk9PTCBhZG1pbl91c2VyOwogICAg ICAgIGNoYXIgKmRpcnBhdGg7CiAgICAgICAgY2hhciAqY29ubmVjdHBhdGg7CiAgICAgICAgY2hh ciAqb3JpZ3BhdGg7CgogICAgICAgIHN0cnVjdCB2ZnNfb3BzIHZmc19vcHM7CgogICAgICAgIHZv aWQgKmRsX2hhbmRsZTsKCiAgICAgICAgY2hhciAqdXNlcjsKICAgICAgICB1aWRfdCB1aWQ7CiAg ICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIGNoYXIgY2xpZW50X2FkZHJlc3NbMThdOwoKICAgICAg ICB1bnNpZ25lZCBzaG9ydCB2dWlkOwoKCgoKICAgICAgICBpbnQgbmdyb3VwczsKICAgICAgICBn aWRfdCAqZ3JvdXBzOwogICAgICAgIE5UX1VTRVJfVE9LRU4gKm50X3VzZXJfdG9rZW47CgogICAg ICAgIHRpbWVfdCBsYXN0dXNlZDsKICAgICAgICBCT09MIHVzZWQ7CiAgICAgICAgaW50IG51bV9m aWxlc19vcGVuOwogICAgICAgIG5hbWVfY29tcGFyZV9lbnRyeSAqaGlkZV9saXN0OwogICAgICAg IG5hbWVfY29tcGFyZV9lbnRyeSAqdmV0b19saXN0OwogICAgICAgIG5hbWVfY29tcGFyZV9lbnRy eSAqdmV0b19vcGxvY2tfbGlzdDsKCn0gY29ubmVjdGlvbl9zdHJ1Y3Q7CgpzdHJ1Y3QgY3VycmVu dF91c2VyCnsKICAgICAgICBjb25uZWN0aW9uX3N0cnVjdCAqY29ubjsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCB2dWlkOwogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAg ICAgaW50IG5ncm91cHM7CiAgICAgICAgZ2lkX3QgKmdyb3VwczsKICAgICAgICBOVF9VU0VSX1RP S0VOICpudF91c2VyX3Rva2VuOwp9OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZnN0 cmluZyBzbWJfbmFtZTsKICAgICAgICBmc3RyaW5nIHVuaXhfbmFtZTsKICAgICAgICBmc3RyaW5n IGZ1bGxfbmFtZTsKICAgICAgICBmc3RyaW5nIGRvbWFpbjsKfSB1c2VyZG9tX3N0cnVjdDsKCgoK ZW51bSB7TFBRX1FVRVVFRD0wLExQUV9QQVVTRUQsTFBRX1NQT09MSU5HLExQUV9QUklOVElORyxM UFFfRVJST1IsTFBRX0RFTEVUSU5HLAogICAgICBMUFFfT0ZGTElORSxMUFFfUEFQRVJPVVQsTFBR X1BSSU5URUQsTFBRX0RFTEVURUQsTFBRX0JMT0NLRUQsTFBRX1VTRVJfSU5URVJWRU5USU9OfTsK CnR5cGVkZWYgc3RydWN0IF9wcmludF9xdWV1ZV9zdHJ1Y3QKewogIGludCBqb2I7CiAgaW50IHNp emU7CiAgaW50IHN0YXR1czsKICBpbnQgcHJpb3JpdHk7CiAgdGltZV90IHRpbWU7CiAgZnN0cmlu ZyB1c2VyOwogIGZzdHJpbmcgZmlsZTsKfSBwcmludF9xdWV1ZV9zdHJ1Y3Q7CgplbnVtIHtMUFNU QVRfT0ssIExQU1RBVF9TVE9QUEVELCBMUFNUQVRfRVJST1J9OwoKdHlwZWRlZiBzdHJ1Y3QKewog IGZzdHJpbmcgbWVzc2FnZTsKICBpbnQgcWNvdW50OwogIGludCBzdGF0dXM7Cn0gcHJpbnRfc3Rh dHVzX3N0cnVjdDsKCgpzdHJ1Y3Qgc2VydmVyX2luZm9fc3RydWN0CnsKICBmc3RyaW5nIG5hbWU7 CiAgdW5zaWduZWQgaW50IHR5cGU7CiAgZnN0cmluZyBjb21tZW50OwogIGZzdHJpbmcgZG9tYWlu OwogIEJPT0wgc2VydmVyX2FkZGVkOwp9OwoKCgpzdHJ1Y3QgaW50ZXJmYWNlCnsKICAgICAgICBz dHJ1Y3QgaW50ZXJmYWNlICpuZXh0LCAqcHJldjsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpcDsK ICAgICAgICBzdHJ1Y3QgaW5fYWRkciBiY2FzdDsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBubWFz azsKfTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHVuc2ln bmVkIHNob3J0IG9wX3BvcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3BfdHlwZTsKICAgICAg ICBpbnQgc2hhcmVfbW9kZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lOwogICAgICAgIGRl dl90IGRldjsKICAgICAgICBpbm9fdCBpbm9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJl X2ZpbGVfaWQ7Cn0gc2hhcmVfbW9kZV9lbnRyeTsKIyA2MDcgImluY2x1ZGUvc21iLmgiCnR5cGVk ZWYgc3RydWN0IHNhbV9wYXNzd2QKewoKICAgICAgICB1bnNpZ25lZCBpbnQgaW5pdF9mbGFnOwoK ICAgICAgICB0aW1lX3QgbG9nb25fdGltZTsKICAgICAgICB0aW1lX3QgbG9nb2ZmX3RpbWU7CiAg ICAgICAgdGltZV90IGtpY2tvZmZfdGltZTsKICAgICAgICB0aW1lX3QgcGFzc19sYXN0X3NldF90 aW1lOwogICAgICAgIHRpbWVfdCBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsKICAgICAgICB0aW1lX3Qg cGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBwc3RyaW5nIHVzZXJuYW1lOwogICAgICAg IHBzdHJpbmcgZG9tYWluOwogICAgICAgIHBzdHJpbmcgbnRfdXNlcm5hbWU7CiAgICAgICAgcHN0 cmluZyBmdWxsX25hbWU7CiAgICAgICAgcHN0cmluZyBob21lX2RpcjsKICAgICAgICBwc3RyaW5n IGRpcl9kcml2ZTsKICAgICAgICBwc3RyaW5nIGxvZ29uX3NjcmlwdDsKICAgICAgICBwc3RyaW5n IHByb2ZpbGVfcGF0aDsKICAgICAgICBwc3RyaW5nIGFjY3RfZGVzYyA7CiAgICAgICAgcHN0cmlu ZyB3b3Jrc3RhdGlvbnM7CiAgICAgICAgcHN0cmluZyB1bmtub3duX3N0ciA7CiAgICAgICAgcHN0 cmluZyBtdW5nZWRfZGlhbCA7CgogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7 CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2lnbmVkIGludCBncm91 cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKmxtX3B3OwogICAgICAgIHVuc2lnbmVkIGNo YXIgKm50X3B3OwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2N0X2N0cmw7CiAgICAgICAgdW5z aWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25fZGl2czsK ICAgICAgICB1bnNpZ25lZCBpbnQgaG91cnNfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaG91 cnNbMzJdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl81OwogICAgICAgIHVuc2lnbmVk IGludCB1bmtub3duXzY7Cgp9IFNBTV9BQ0NPVU5UOwojIDY4MSAiaW5jbHVkZS9zbWIuaCIKc3Ry dWN0IGNvbm5lY3Rpb25zX2tleSB7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIGludCBjbnVt OwogICAgICAgIGZzdHJpbmcgbmFtZTsKfTsKCnN0cnVjdCBjb25uZWN0aW9uc19kYXRhIHsKICAg ICAgICBpbnQgbWFnaWM7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIGludCBjbnVtOwogICAg ICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAgICAgY2hhciBuYW1lWzI0XTsK ICAgICAgICBjaGFyIGFkZHJbMjRdOwogICAgICAgIGNoYXIgbWFjaGluZVsyNTZdOwogICAgICAg IHRpbWVfdCBzdGFydDsKfTsKCgoKc3RydWN0IGxvY2tpbmdfa2V5IHsKICAgICAgICBkZXZfdCBk ZXY7CiAgICAgICAgaW5vX3QgaW5vZGU7Cn07CgpzdHJ1Y3QgbG9ja2luZ19kYXRhIHsKICAgICAg ICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgbnVtX3NoYXJlX21vZGVfZW50cmllczsKICAg ICAgICAgICAgICAgIHNoYXJlX21vZGVfZW50cnkgZHVtbXk7CiAgICAgICAgfSB1OwoKCgoKfTsK CgoKdHlwZWRlZiBlbnVtCnsKICBQX0JPT0wsUF9CT09MUkVWLFBfQ0hBUixQX0lOVEVHRVIsUF9P Q1RBTCxQX0xJU1QsCiAgUF9TVFJJTkcsUF9VU1RSSU5HLFBfR1NUUklORyxQX1VHU1RSSU5HLFBf RU5VTSxQX1NFUAp9IHBhcm1fdHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgUF9MT0NBTCxQX0dMT0JB TCxQX1NFUEFSQVRPUixQX05PTkUKfSBwYXJtX2NsYXNzOwoKCmVudW0gYnJsX3R5cGUge1JFQURf TE9DSywgV1JJVEVfTE9DS307CgpzdHJ1Y3QgZW51bV9saXN0IHsKICAgICAgICBpbnQgdmFsdWU7 CiAgICAgICAgY2hhciAqbmFtZTsKfTsKIyA3NDYgImluY2x1ZGUvc21iLmgiCnN0cnVjdCBwYXJt X3N0cnVjdAp7CiAgICAgICAgY2hhciAqbGFiZWw7CiAgICAgICAgcGFybV90eXBlIHR5cGU7CiAg ICAgICAgcGFybV9jbGFzcyBjbGFzczsKICAgICAgICB2b2lkICpwdHI7CiAgICAgICAgQk9PTCAo KnNwZWNpYWwpKGNoYXIgKiwgY2hhciAqKik7CiAgICAgICAgc3RydWN0IGVudW1fbGlzdCAqZW51 bV9saXN0OwogICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg ICAgICAgIEJPT0wgYnZhbHVlOwogICAgICAgICAgICAgICAgaW50IGl2YWx1ZTsKICAgICAgICAg ICAgICAgIGNoYXIgKnN2YWx1ZTsKICAgICAgICAgICAgICAgIGNoYXIgY3ZhbHVlOwogICAgICAg ICAgICAgICAgY2hhciAqKmx2YWx1ZTsKICAgICAgICB9IGRlZjsKfTsKCnN0cnVjdCBiaXRtYXAg ewogICAgICAgIHVuc2lnbmVkIGludCAqYjsKICAgICAgICBpbnQgbjsKfTsKIyAxMzE3ICJpbmNs dWRlL3NtYi5oIgplbnVtIHByb3RvY29sX3R5cGVzIHtQUk9UT0NPTF9OT05FLFBST1RPQ09MX0NP UkUsUFJPVE9DT0xfQ09SRVBMVVMsUFJPVE9DT0xfTEFOTUFOMSxQUk9UT0NPTF9MQU5NQU4yLFBS T1RPQ09MX05UMX07CgoKZW51bSBzZWN1cml0eV90eXBlcyB7U0VDX1NIQVJFLFNFQ19VU0VSLFNF Q19TRVJWRVIsU0VDX0RPTUFJTixTRUNfQURTfTsKCgplbnVtIHNlcnZlcl90eXBlcwp7CiAgICAg ICAgUk9MRV9TVEFOREFMT05FLAogICAgICAgIFJPTEVfRE9NQUlOX01FTUJFUiwKICAgICAgICBS T0xFX0RPTUFJTl9CREMsCiAgICAgICAgUk9MRV9ET01BSU5fUERDCn07CgoKZW51bSBwcmludGlu Z190eXBlcyB7UFJJTlRfQlNELFBSSU5UX1NZU1YsUFJJTlRfQUlYLFBSSU5UX0hQVVgsCiAgICAg ICAgICAgICAgICAgICAgIFBSSU5UX1FOWCxQUklOVF9QTFAsUFJJTlRfTFBSTkcsUFJJTlRfU09G VFEsCiAgICAgICAgICAgICAgICAgICAgIFBSSU5UX0NVUFMsUFJJTlRfTFBSTlQsUFJJTlRfTFBS T1MyCgoKCn07CgoKZW51bSBzY2hlbWFfdHlwZXMge1NDSEVNQV9DT01QQVQsIFNDSEVNQV9BRCwg U0NIRU1BX1NBTUJBfTsKCgplbnVtIGxkYXBfc3NsX3R5cGVzIHtMREFQX1NTTF9PTiwgTERBUF9T U0xfT0ZGLCBMREFQX1NTTF9TVEFSVF9UTFN9OwoKCmVudW0gcmVtb3RlX2FyY2hfdHlwZXMge1JB X1VOS05PV04sIFJBX1dGV0csIFJBX09TMiwgUkFfV0lOOTUsIFJBX1dJTk5ULCBSQV9XSU4ySywg UkFfU0FNQkF9OwoKCmVudW0gY2FzZV9oYW5kbGluZyB7Q0FTRV9MT1dFUixDQVNFX1VQUEVSfTsK CgoKZW51bSBzc2xfdmVyc2lvbl9lbnVtIHtTTUJfU1NMX1YyLFNNQl9TU0xfVjMsU01CX1NTTF9W MjMsU01CX1NTTF9UTFMxfTsKIyAxMzg1ICJpbmNsdWRlL3NtYi5oIgpleHRlcm4gaW50IGdsb2Jh bF9pc19tdWx0aWJ5dGVfY29kZXBhZ2U7CiMgMTM5NyAiaW5jbHVkZS9zbWIuaCIKZXh0ZXJuIGlu dCB1bml4X0VSUl9jbGFzczsKZXh0ZXJuIGludCB1bml4X0VSUl9jb2RlOwoKCgoKZXh0ZXJuIGlu dCBjaGFpbl9zaXplOwojIDE1MTMgImluY2x1ZGUvc21iLmgiCnN0cnVjdCBrZXJuZWxfb3Bsb2Nr cyB7CiAgICAgICAgQk9PTCAoKnJlY2VpdmVfbWVzc2FnZSkoZmRfc2V0ICpmZHMsIGNoYXIgKmJ1 ZmZlciwgaW50IGJ1ZmZlcl9sZW4pOwogICAgICAgIEJPT0wgKCpzZXRfb3Bsb2NrKShmaWxlc19z dHJ1Y3QgKmZzcCwgaW50IG9wbG9ja190eXBlKTsKICAgICAgICB2b2lkICgqcmVsZWFzZV9vcGxv Y2spKGZpbGVzX3N0cnVjdCAqZnNwKTsKICAgICAgICBCT09MICgqcGFyc2VfbWVzc2FnZSkoY2hh ciAqbXNnX3N0YXJ0LCBpbnQgbXNnX2xlbiwgaW5vX3QgKmlub2RlLCBkZXZfdCAqZGV2LCB1bnNp Z25lZCBsb25nICpmaWxlX2lkKTsKICAgICAgICBCT09MICgqbXNnX3dhaXRpbmcpKGZkX3NldCAq ZmRzKTsKICAgICAgICBpbnQgbm90aWZpY2F0aW9uX2ZkOwp9OwoKCgoKCgpzdHJ1Y3QgY25vdGlm eV9mbnMgewogICAgICAgIHZvaWQgKiAoKnJlZ2lzdGVyX25vdGlmeSkoY29ubmVjdGlvbl9zdHJ1 Y3QgKmNvbm4sIGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBmbGFncyk7CiAgICAgICAgQk9PTCAo KmNoZWNrX25vdGlmeSkoY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIHVuc2lnbmVkIHNob3J0IHZ1 aWQsIGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBmbGFncywgdm9pZCAqZGF0YSwgdGltZV90IHQp OwogICAgICAgIHZvaWQgKCpyZW1vdmVfbm90aWZ5KSh2b2lkICpkYXRhKTsKICAgICAgICBpbnQg c2VsZWN0X3RpbWU7Cn07CgoKCiMgMSAiaW5jbHVkZS9zbWJfbWFjcm9zLmgiIDEKIyAxNTM3ICJp bmNsdWRlL3NtYi5oIiAyCgoKc3RydWN0IG5tYl9uYW1lIHsKICBjaGFyIG5hbWVbMTddOwogIGNo YXIgc2NvcGVbNjRdOwogIHVuc2lnbmVkIGludCBuYW1lX3R5cGU7Cn07CgoKCnN0cnVjdCBub2Rl X3N0YXR1cyB7CiAgICAgICAgY2hhciBuYW1lWzE2XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHR5 cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnczsKfTsKCgoKCgoKCnN0cnVjdCBwd2RfaW5m bwp7CiAgICAgICAgQk9PTCBudWxsX3B3ZDsKICAgICAgICBCT09MIGNsZWFydGV4dDsKICAgICAg ICBCT09MIGNyeXB0ZWQ7CgogICAgICAgIGZzdHJpbmcgcGFzc3dvcmQ7CgogICAgICAgIHVuc2ln bmVkIGNoYXIgc21iX2xtX3B3ZFsxNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbWJfbnRfcHdk WzE2XTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzbWJfbG1fb3dmWzI0XTsKICAgICAgICB1bnNp Z25lZCBjaGFyIHNtYl9udF9vd2ZbMTI4XTsKICAgICAgICBzaXplX3QgbnRfb3dmX2xlbjsKCiAg ICAgICAgdW5zaWduZWQgY2hhciBsbV9jbGlfY2hhbFs4XTsKICAgICAgICB1bnNpZ25lZCBjaGFy IG50X2NsaV9jaGFsWzEyOF07CiAgICAgICAgc2l6ZV90IG50X2NsaV9jaGFsX2xlbjsKCiAgICAg ICAgdW5zaWduZWQgY2hhciBzZXNzX2tleVsxNl07Cn07CgoKCgoKc3RydWN0IG5jYWNuX25wCnsK ICAgICAgICBmc3RyaW5nIHBpcGVfbmFtZTsKICAgICAgICBzdHJ1Y3QgY2xpX3N0YXRlICpzbWI7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm51bTsKICAgICAgICBCT09MIGluaXRpYWxpc2VkOwp9 OwoKIyAxICJpbmNsdWRlL3JwY19jcmVkcy5oIiAxCiMgMjcgImluY2x1ZGUvcnBjX2NyZWRzLmgi CnR5cGVkZWYgc3RydWN0IG50dXNlcl9jcmVkcwp7CiAgICAgICAgZnN0cmluZyB1c2VyX25hbWU7 CiAgICAgICAgZnN0cmluZyBkb21haW47CiAgICAgICAgc3RydWN0IHB3ZF9pbmZvIHB3ZDsKCiAg ICAgICAgdW5zaWduZWQgaW50IG50bG1zc3BfZmxhZ3M7Cgp9IENSRURTX05UOwoKdHlwZWRlZiBz dHJ1Y3QgdW5peHVzZXJfY3JlZHMKewogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAg IGZzdHJpbmcgcmVxdWVzdGVkX25hbWU7CiAgICAgICAgZnN0cmluZyByZWFsX25hbWU7CiAgICAg ICAgQk9PTCBndWVzdDsKCn0gQ1JFRFNfVU5JWDsKCnR5cGVkZWYgc3RydWN0IHVuaXhzZWNfY3Jl ZHMKewogICAgICAgIHVuc2lnbmVkIGludCB1aWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdpZDsK ICAgICAgICBpbnQgbnVtX2dycHM7CiAgICAgICAgdW5zaWduZWQgaW50ICpncnBzOwoKfSBDUkVE U19VTklYX1NFQzsKCnR5cGVkZWYgc3RydWN0IG50c2VjX2NyZWRzCnsKICAgICAgICBET01fU0lE IHNpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2dycHM7CiAgICAgICAgdW5zaWduZWQgaW50 ICpncnBfcmlkczsKCn0gQ1JFRFNfTlRfU0VDOwoKdHlwZWRlZiBzdHJ1Y3QgdXNlcl9jcmVkcwp7 CiAgICAgICAgQk9PTCByZXVzZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9udGM7CiAgICAg ICAgdW5zaWduZWQgaW50IHB0cl91eGM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9udHM7CiAg ICAgICAgdW5zaWduZWQgaW50IHB0cl91eHM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zc2s7 CgogICAgICAgIENSRURTX05UIG50YzsKICAgICAgICBDUkVEU19VTklYIHV4YzsKCiAgICAgICAg Q1JFRFNfTlRfU0VDIG50czsKICAgICAgICBDUkVEU19VTklYX1NFQyB1eHM7CgogICAgICAgIHVu c2lnbmVkIGNoYXIgdXNyX3Nlc3Nfa2V5WzE2XTsKCn0gQ1JFRFNfSFlCUklEOwoKdHlwZWRlZiBz dHJ1Y3QgY3JlZF9jb21tYW5kCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGNvbW1hbmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHBpZDsKCiAg ICAgICAgZnN0cmluZyBuYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2NyZWRzOwogICAg ICAgIENSRURTX0hZQlJJRCAqY3JlZDsKCn0gQ1JFRFNfQ01EOwojIDE1OTQgImluY2x1ZGUvc21i LmgiIDIKIyAxICJpbmNsdWRlL3JwY19taXNjLmgiIDEKIyAyNCAiaW5jbHVkZS9ycGNfbWlzYy5o IgojIDEgImluY2x1ZGUvbnRkb21haW4uaCIgMQojIDI4ICJpbmNsdWRlL250ZG9tYWluLmgiCiMg MSAiaW5jbHVkZS9ycGNfZGNlLmgiIDEKIyAyNyAiaW5jbHVkZS9ycGNfZGNlLmgiCiMgMSAiaW5j bHVkZS9ycGNfbWlzYy5oIiAxCiMgMjQgImluY2x1ZGUvcnBjX21pc2MuaCIKIyAxICJpbmNsdWRl L250ZG9tYWluLmgiIDEKIyAyNSAiaW5jbHVkZS9ycGNfbWlzYy5oIiAyCiMgMSAiaW5jbHVkZS9y cGNfZGNlLmgiIDEKIyAyNiAiaW5jbHVkZS9ycGNfbWlzYy5oIiAyCiMgNzAgImluY2x1ZGUvcnBj X21pc2MuaCIKdHlwZWRlZiBzdHJ1Y3QgZW51bV9obmRfaW5mbwp7CiAgICAgICAgdW5zaWduZWQg aW50IHB0cl9obmQ7CiAgICAgICAgdW5zaWduZWQgaW50IGhhbmRsZTsKCn0gRU5VTV9ITkQ7CgoK dHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2xldmVsX2luZm8KewogIHVuc2lnbmVkIHNob3J0IHZhbHVl OwoKfSBMT09LVVBfTEVWRUw7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2lkX2luZm9fMgp7CiAgICAgICAg dW5zaWduZWQgaW50IG51bV9hdXRoczsKCiAgICAgICAgRE9NX1NJRCBzaWQ7Cgp9IERPTV9TSUQy OwoKCnR5cGVkZWYgc3RydWN0IGhlYWRlcl9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCBzdHJfc3Ry X2xlbjsKICB1bnNpZ25lZCBzaG9ydCBzdHJfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgYnVmZmVy OwoKfSBTVFJIRFI7CgoKdHlwZWRlZiBzdHJ1Y3QgdW5paGRyX2luZm8KewogIHVuc2lnbmVkIHNo b3J0IHVuaV9zdHJfbGVuOwogIHVuc2lnbmVkIHNob3J0IHVuaV9tYXhfbGVuOwogIHVuc2lnbmVk IGludCBidWZmZXI7Cgp9IFVOSUhEUjsKCgp0eXBlZGVmIHN0cnVjdCB1bmloZHIyX2luZm8Kewog IFVOSUhEUiB1bmloZHI7CiAgdW5zaWduZWQgaW50IGJ1ZmZlcjsKCn0gVU5JSERSMjsKCgoKCgoK CnR5cGVkZWYgc3RydWN0IHVuaXN0cl9pbmZvCnsKCiAgdW5zaWduZWQgc2hvcnQgKmJ1ZmZlcjsK fSBVTklTVFI7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmaGRyX2luZm8KewogIHVuc2lnbmVkIGludCBi dWZfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgYnVmX2xlbjsKCn0gQlVGSERSOwoKCgoKdHlwZWRl ZiBzdHJ1Y3QgYnVmZmVyMl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgYnVmX21heF9sZW47CiAgdW5z aWduZWQgaW50IHVuZG9jOwogIHVuc2lnbmVkIGludCBidWZfbGVuOwoKICB1bnNpZ25lZCBzaG9y dCAqYnVmZmVyOwoKfSBCVUZGRVIyOwoKCnR5cGVkZWYgc3RydWN0IGJ1ZmZlcjNfaW5mbwp7CiAg dW5zaWduZWQgaW50IGJ1Zl9tYXhfbGVuOwogIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKICB1bnNp Z25lZCBpbnQgYnVmX2xlbjsKCn0gQlVGRkVSMzsKCgp0eXBlZGVmIHN0cnVjdCBidWZmZXI1X2lu Zm8KewogIHVuc2lnbmVkIGludCBidWZfbGVuOwogIHVuc2lnbmVkIHNob3J0ICpidWZmZXI7Cn0g QlVGRkVSNTsKCgp0eXBlZGVmIHN0cnVjdCB1bmlzdHIyX2luZm8KewogIHVuc2lnbmVkIGludCB1 bmlfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgdW5kb2M7CiAgdW5zaWduZWQgaW50IHVuaV9zdHJf bGVuOwoKCgogIHVuc2lnbmVkIHNob3J0ICpidWZmZXI7Cgp9IFVOSVNUUjI7CgoKdHlwZWRlZiBz dHJ1Y3Qgc3RyaW5nMl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgc3RyX21heF9sZW47CiAgdW5zaWdu ZWQgaW50IHVuZG9jOwogIHVuc2lnbmVkIGludCBzdHJfc3RyX2xlbjsKICB1bnNpZ25lZCBjaGFy ICpidWZmZXI7Cgp9IFNUUklORzI7CgoKdHlwZWRlZiBzdHJ1Y3QgdW5pc3RyM19pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgdW5pX3N0cl9sZW47CiAgICAgICAgVU5JU1RSIHN0cjsKCn0gVU5J U1RSMzsKCgoKdHlwZWRlZiBzdHJ1Y3QgZG9tcmlkMl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBj aGFyIHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKICAgICAgICB1bnNpZ25lZCBpbnQg cmlkX2lkeDsKCn0gRE9NX1JJRDI7CgoKdHlwZWRlZiBzdHJ1Y3QgZG9tcmlkM19pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgcmlkOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlMTsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyX3R5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHR5cGUyOwogICAg ICAgIHVuc2lnbmVkIGludCB1bms7Cgp9IERPTV9SSUQzOwoKCnR5cGVkZWYgc3RydWN0IGRvbXJp ZDRfaW5mbwp7CiAgdW5zaWduZWQgaW50IHVua25vd247CiAgdW5zaWduZWQgc2hvcnQgYXR0cjsK ICB1bnNpZ25lZCBpbnQgcmlkOwoKfSBET01fUklENDsKCgp0eXBlZGVmIHN0cnVjdCBjbG50X3Ny dl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyOwogIFVOSVNUUjIgdW5pX2xvZ29u X3NydjsKICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyMjsKICBVTklTVFIyIHVuaV9jb21wX25h bWU7Cgp9IERPTV9DTE5UX1NSVjsKCgp0eXBlZGVmIHN0cnVjdCBsb2dfaW5mbwp7CiAgdW5zaWdu ZWQgaW50IHVuZG9jX2J1ZmZlcjsKICBVTklTVFIyIHVuaV9sb2dvbl9zcnY7CiAgVU5JU1RSMiB1 bmlfYWNjdF9uYW1lOwogIHVuc2lnbmVkIHNob3J0IHNlY19jaGFuOwogIFVOSVNUUjIgdW5pX2Nv bXBfbmFtZTsKCn0gRE9NX0xPR19JTkZPOwoKCnR5cGVkZWYgc3RydWN0IGNoYWxfaW5mbwp7CiAg ICB1bnNpZ25lZCBjaGFyIGRhdGFbOF07Cn0gRE9NX0NIQUw7CgoKdHlwZWRlZiBzdHJ1Y3QgY3Jl ZF9pbmZvCnsKICAgIERPTV9DSEFMIGNoYWxsZW5nZTsKICAgIFVUSU1FIHRpbWVzdGFtcDsKfSBE T01fQ1JFRDsKCgp0eXBlZGVmIHN0cnVjdCBjbG50X2luZm8KewogIERPTV9MT0dfSU5GTyBsb2dp bjsKICBET01fQ1JFRCBjcmVkOwoKfSBET01fQ0xOVF9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IGNs bnRfaW5mbzIKewogIERPTV9DTE5UX1NSViBsb2dpbjsKICB1bnNpZ25lZCBpbnQgcHRyX2NyZWQ7 CiAgRE9NX0NSRUQgY3JlZDsKCn0gRE9NX0NMTlRfSU5GTzI7CgoKdHlwZWRlZiBzdHJ1Y3QgbG9n b25faW5mbwp7CiAgdW5zaWduZWQgaW50IGxvdzsKICB1bnNpZ25lZCBpbnQgaGlnaDsKCn0gRE9N X0xPR09OX0lEOwoKCnR5cGVkZWYgc3RydWN0IG93Zl9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIGRh dGFbMTZdOwoKfSBPV0ZfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgZ2lkX2luZm8KewogIHVuc2ln bmVkIGludCBnX3JpZDsKICB1bnNpZ25lZCBpbnQgYXR0cjsKCn0gRE9NX0dJRDsKCgp0eXBlZGVm IHN0cnVjdCBsc2FfcG9saWN5X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBkYXRhMTsKICAg ICAgICB1bnNpZ25lZCBpbnQgZGF0YTI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGF0YTM7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgZGF0YTQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhNVs4 XTsKfSBQT0xJQ1lfSE5EOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9jbGlfYXV0aF9mbnMgY2xpX2F1 dGhfZm5zOwpzdHJ1Y3QgdXNlcl9jcmVkczsKc3RydWN0IGNsaV9jb25uZWN0aW9uIHsKCiAgICAg ICAgY2hhciAqc3J2X25hbWU7CiAgICAgICAgY2hhciAqcGlwZV9uYW1lOwogICAgICAgIHN0cnVj dCB1c2VyX2NyZWRzIHVzcl9jcmVkczsKCiAgICAgICAgc3RydWN0IGNsaV9zdGF0ZSAqcENsaV9z dGF0ZTsKCiAgICAgICAgY2xpX2F1dGhfZm5zICphdXRoOwoKICAgICAgICB2b2lkICphdXRoX2lu Zm87CiAgICAgICAgdm9pZCAqYXV0aF9jcmVkczsKfTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBycGNf aG5kX25vZGUgewoKICAgICAgICBQT0xJQ1lfSE5EIGhuZDsKICAgICAgICBzdHJ1Y3QgY2xpX2Nv bm5lY3Rpb24gKmNsaTsKCn0gUlBDX0hORF9OT0RFOwoKdHlwZWRlZiBzdHJ1Y3QgdWludDY0X3MK ewogICAgICAgIHVuc2lnbmVkIGludCBsb3c7CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2g7Cn0g VUlOVDY0X1M7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmaGRyMl9pbmZvCnsKICAgICAgICB1bnNpZ25l ZCBpbnQgaW5mb19sZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwogICAgICAgIHVu c2lnbmVkIGludCBidWZmZXI7Cgp9CkJVRkhEUjI7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmZmVyNF9p bmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFy IGJ1ZmZlcls1MTJdOwoKfQpCVUZGRVI0OwojIDI4ICJpbmNsdWRlL3JwY19kY2UuaCIgMgoKCgoK ZW51bSBSUENfUEtUX1RZUEUKewogICAgICAgIFJQQ19SRVFVRVNUID0gMHgwMCwKICAgICAgICBS UENfUkVTUE9OU0UgPSAweDAyLAogICAgICAgIFJQQ19GQVVMVCA9IDB4MDMsCiAgICAgICAgUlBD X0JJTkQgPSAweDBCLAogICAgICAgIFJQQ19CSU5EQUNLID0gMHgwQywKICAgICAgICBSUENfQklO RE5BQ0sgPSAweDBELAogICAgICAgIFJQQ19BTFRDT05UID0gMHgwRSwKICAgICAgICBSUENfQUxU Q09OVFJFU1AgPSAweDBGLAogICAgICAgIFJQQ19CSU5EUkVTUCA9IDB4MTAKfTsKCgoKCgoKCmVu dW0gTlRMTV9NRVNTQUdFX1RZUEUKewogICAgICAgIE5UTE1TU1BfTkVHT1RJQVRFID0gMSwKICAg ICAgICBOVExNU1NQX0NIQUxMRU5HRSA9IDIsCiAgICAgICAgTlRMTVNTUF9BVVRIID0gMywKICAg ICAgICBOVExNU1NQX1VOS05PV04gPSA0Cn07CiMgOTEgImluY2x1ZGUvcnBjX2RjZS5oIgp0eXBl ZGVmIHN0cnVjdCBycGNfdXVpZAp7CiAgdW5zaWduZWQgaW50IHRpbWVfbG93OwogIHVuc2lnbmVk IHNob3J0IHRpbWVfbWlkOwogIHVuc2lnbmVkIHNob3J0IHRpbWVfaGlfYW5kX3ZlcnNpb247CiAg dW5zaWduZWQgY2hhciByZW1haW5pbmdbOF07Cn0gUlBDX1VVSUQ7CgoKCgp0eXBlZGVmIHN0cnVj dCBycGNfaWZhY2VfaW5mbwp7CiAgUlBDX1VVSUQgdXVpZDsKICB1bnNpZ25lZCBpbnQgdmVyc2lv bjsKCn0gUlBDX0lGQUNFOwoKCgpzdHJ1Y3QgcGlwZV9pZF9pbmZvCnsKCgogICAgICAgIGNoYXIg KmNsaWVudF9waXBlOwogICAgICAgIFJQQ19JRkFDRSBhYnN0cl9zeW50YXg7CgogICAgICAgIGNo YXIgKnNlcnZlcl9waXBlOwogICAgICAgIFJQQ19JRkFDRSB0cmFuc19zeW50YXg7Cn07CgoKdHlw ZWRlZiBzdHJ1Y3QgcnBjX2hkcl9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIG1ham9yOwogIHVuc2ln bmVkIGNoYXIgbWlub3I7CiAgdW5zaWduZWQgY2hhciBwa3RfdHlwZTsKICB1bnNpZ25lZCBjaGFy IGZsYWdzOwogIHVuc2lnbmVkIGNoYXIgcGFja190eXBlWzRdOwogIHVuc2lnbmVkIHNob3J0IGZy YWdfbGVuOwogIHVuc2lnbmVkIHNob3J0IGF1dGhfbGVuOwogIHVuc2lnbmVkIGludCBjYWxsX2lk OwoKfSBSUENfSERSOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2hkcl9yZXFfaW5mbwp7CiAgdW5z aWduZWQgaW50IGFsbG9jX2hpbnQ7CiAgdW5zaWduZWQgc2hvcnQgY29udGV4dF9pZDsKICB1bnNp Z25lZCBzaG9ydCBvcG51bTsKCn0gUlBDX0hEUl9SRVE7CgoKCgp0eXBlZGVmIHN0cnVjdCBycGNf aGRyX3Jlc3BfaW5mbwp7CiAgdW5zaWduZWQgaW50IGFsbG9jX2hpbnQ7CiAgdW5zaWduZWQgc2hv cnQgY29udGV4dF9pZDsKICB1bnNpZ25lZCBjaGFyIGNhbmNlbF9jb3VudDsKICB1bnNpZ25lZCBj aGFyIHJlc2VydmVkOwoKfSBSUENfSERSX1JFU1A7CgoKCgp0eXBlZGVmIHN0cnVjdCBycGNfaGRy X2ZhdWx0X2luZm8KewogIE5UU1RBVFVTIHN0YXR1czsKICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ7 Cn0gUlBDX0hEUl9GQVVMVDsKIyAxNzggImluY2x1ZGUvcnBjX2RjZS5oIgp0eXBlZGVmIHN0cnVj dCBycGNfYWRkcl9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCBsZW47CiAgZnN0cmluZyBzdHI7Cgp9 IFJQQ19BRERSX1NUUjsKCgp0eXBlZGVmIHN0cnVjdCBycGNfaGRyX2JiYV9pbmZvCnsKICB1bnNp Z25lZCBzaG9ydCBtYXhfdHNpemU7CiAgdW5zaWduZWQgc2hvcnQgbWF4X3JzaXplOwogIHVuc2ln bmVkIGludCBhc3NvY19naWQ7Cgp9IFJQQ19IRFJfQkJBOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBj X2hkcl9hdXRoYV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYXhfdHNpemU7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgbWF4X3JzaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIGF1dGhf dHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGF1dGhfbGV2ZWw7CiAgICAgICAgdW5zaWduZWQg Y2hhciBzdHViX3R5cGVfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKCiAgICAg ICAgdW5zaWduZWQgaW50IHVua25vd247Cgp9IFJQQ19IRFJfQVVUSEE7CgoKCgp0eXBlZGVmIHN0 cnVjdCBycGNfaGRyX2F1dGhfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBhdXRoX3R5cGU7 CiAgICAgICAgdW5zaWduZWQgY2hhciBhdXRoX2xldmVsOwogICAgICAgIHVuc2lnbmVkIGNoYXIg c3R1Yl90eXBlX2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmc7CgogICAgICAgIHVu c2lnbmVkIGludCB1bmtub3duOwoKfSBSUENfSERSX0FVVEg7CgoKCgp0eXBlZGVmIHN0cnVjdCBy cGNfYmluZF9yZXFfaW5mbwp7CiAgUlBDX0hEUl9CQkEgYmJhOwoKICB1bnNpZ25lZCBpbnQgbnVt X2VsZW1lbnRzOwogIHVuc2lnbmVkIHNob3J0IGNvbnRleHRfaWQ7CiAgdW5zaWduZWQgY2hhciBu dW1fc3ludGF4ZXM7CgogIFJQQ19JRkFDRSBhYnN0cmFjdDsKICBSUENfSUZBQ0UgdHJhbnNmZXI7 Cgp9IFJQQ19IRFJfUkI7CiMgMjQ5ICJpbmNsdWRlL3JwY19kY2UuaCIKdHlwZWRlZiBzdHJ1Y3Qg cnBjX3Jlc3VsdHNfaW5mbwp7CgoKICB1bnNpZ25lZCBjaGFyIG51bV9yZXN1bHRzOwoKCgogIHVu c2lnbmVkIHNob3J0IHJlc3VsdDsKICB1bnNpZ25lZCBzaG9ydCByZWFzb247Cgp9IFJQQ19SRVNV TFRTOwoKCnR5cGVkZWYgc3RydWN0IHJwY19oZHJfYmFfaW5mbwp7CiAgUlBDX0hEUl9CQkEgYmJh OwoKICBSUENfQUREUl9TVFIgYWRkciA7CiAgUlBDX1JFU1VMVFMgcmVzIDsKICBSUENfSUZBQ0Ug dHJhbnNmZXI7Cgp9IFJQQ19IRFJfQkE7CgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2F1dGhfdmVyaWZf aW5mbwp7CiAgICAgICAgZnN0cmluZyBzaWduYXR1cmU7CiAgICAgICAgdW5zaWduZWQgaW50IG1z Z190eXBlOwoKfSBSUENfQVVUSF9WRVJJRklFUjsKCgoKCnR5cGVkZWYgc3RydWN0IHJwY19hdXRo X250bG1zc3BfbmVnX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZWdfZmxnczsKCiAgICAg ICAgU1RSSERSIGhkcl9teW5hbWU7CiAgICAgICAgU1RSSERSIGhkcl9kb21haW47CgogICAgICAg IGZzdHJpbmcgbXluYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWluOwoKfSBSUENfQVVUSF9OVExN U1NQX05FRzsKCgoKCnR5cGVkZWYgc3RydWN0IHJwY19hdXRoX250bG1zc3BfY2hhbF9pbmZvCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtu b3duXzI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZ19mbGFnczsKCiAgICAgICAgdW5zaWduZWQg Y2hhciBjaGFsbGVuZ2VbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciByZXNlcnZlZCBbOF07Cgp9 IFJQQ19BVVRIX05UTE1TU1BfQ0hBTDsKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2F1dGhfbnRsbXNz cF9yZXNwX2luZm8KewogICAgICAgIFNUUkhEUiBoZHJfbG1fcmVzcDsKICAgICAgICBTVFJIRFIg aGRyX250X3Jlc3A7CiAgICAgICAgU1RSSERSIGhkcl9kb21haW47CiAgICAgICAgU1RSSERSIGhk cl91c3I7CiAgICAgICAgU1RSSERSIGhkcl93a3M7CiAgICAgICAgU1RSSERSIGhkcl9zZXNzX2tl eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVnX2ZsYWdzOwoKICAgICAgICBmc3RyaW5nIHNlc3Nf a2V5OwogICAgICAgIGZzdHJpbmcgd2tzOwogICAgICAgIGZzdHJpbmcgdXNlcjsKICAgICAgICBm c3RyaW5nIGRvbWFpbjsKICAgICAgICBmc3RyaW5nIG50X3Jlc3A7CiAgICAgICAgZnN0cmluZyBs bV9yZXNwOwoKfSBSUENfQVVUSF9OVExNU1NQX1JFU1A7CgoKCnR5cGVkZWYgc3RydWN0IHJwY19h dXRoX250bG1zc3BfY2hrX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCB2ZXI7CiAgICAgICAg dW5zaWduZWQgaW50IHJlc2VydmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjcmMzMjsKICAgICAg ICB1bnNpZ25lZCBpbnQgc2VxX251bTsKCn0gUlBDX0FVVEhfTlRMTVNTUF9DSEs7CiMgMjkgImlu Y2x1ZGUvbnRkb21haW4uaCIgMgoKCiMgMSAiaW5jbHVkZS9ycGNfbWlzYy5oIiAxCiMgMzIgImlu Y2x1ZGUvbnRkb21haW4uaCIgMgojIDQyICJpbmNsdWRlL250ZG9tYWluLmgiCnR5cGVkZWYgc3Ry dWN0IF9wcnNfc3RydWN0CnsKICAgICAgICBCT09MIGlvOwoKCgoKICAgICAgICBCT09MIGJpZ2Vu ZGlhbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWxpZ247CiAgICAgICAgQk9PTCBpc19k eW5hbWljOwogICAgICAgIHVuc2lnbmVkIGludCBkYXRhX29mZnNldDsKICAgICAgICB1bnNpZ25l ZCBpbnQgYnVmZmVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3dfc2l6ZTsKICAgICAg ICBjaGFyICpkYXRhX3A7CiAgICAgICAgVEFMTE9DX0NUWCAqbWVtX2N0eDsKfSBwcnNfc3RydWN0 OwojIDc0ICJpbmNsdWRlL250ZG9tYWluLmgiCnR5cGVkZWYgc3RydWN0IF9vdXRwdXRfZGF0YSB7 CgoKCiAgICAgICAgcHJzX3N0cnVjdCByZGF0YTsKCgogICAgICAgIHVuc2lnbmVkIGludCBkYXRh X3NlbnRfbGVuZ3RoOwoKCgoKCiAgICAgICAgdW5zaWduZWQgY2hhciBjdXJyZW50X3BkdVsweDE2 MzBdOwoKCiAgICAgICAgdW5zaWduZWQgaW50IGN1cnJlbnRfcGR1X2xlbjsKCgogICAgICAgIHVu c2lnbmVkIGludCBjdXJyZW50X3BkdV9zZW50Owp9IG91dHB1dF9kYXRhOwoKdHlwZWRlZiBzdHJ1 Y3QgX2lucHV0X2RhdGEgewoKCgoKCgogICAgdW5zaWduZWQgY2hhciBjdXJyZW50X2luX3BkdVsw eDE2MzBdOwoKCgoKCgogICAgdW5zaWduZWQgaW50IHBkdV9uZWVkZWRfbGVuOwoKCgoKCgogICAg dW5zaWduZWQgaW50IHBkdV9yZWNlaXZlZF9sZW47CgoKCgoKCiAgICBwcnNfc3RydWN0IGRhdGE7 Cn0gaW5wdXRfZGF0YTsKCgoKCgpzdHJ1Y3QgcG9saWN5CnsKICAgIHN0cnVjdCBwb2xpY3kgKm5l eHQsICpwcmV2OwoKICAgIFBPTElDWV9ITkQgcG9sX2huZDsKCiAgICB2b2lkICpkYXRhX3B0cjsK ICAgIHZvaWQgKCpmcmVlX2ZuKSh2b2lkICopOwoKfTsKCnN0cnVjdCBoYW5kbGVfbGlzdCB7CiAg ICAgICAgc3RydWN0IHBvbGljeSAqUG9saWN5OwogICAgICAgIHNpemVfdCBjb3VudDsKICAgICAg ICBzaXplX3QgcGlwZV9yZWZfY291bnQ7Cn07CgoKc3RydWN0IGRjaW5mbwp7CiAgICAgICAgRE9N X0NIQUwgY2xudF9jaGFsOwogICAgICAgIERPTV9DSEFMIHNydl9jaGFsOwogICAgICAgIERPTV9D UkVEIGNsbnRfY3JlZDsKICAgICAgICBET01fQ1JFRCBzcnZfY3JlZDsKCiAgICAgICAgdW5zaWdu ZWQgY2hhciBzZXNzX2tleVs4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1kNHB3WzE2XTsKCiAg ICAgICAgZnN0cmluZyBtYWNoX2FjY3Q7Cn07Cgp0eXBlZGVmIHN0cnVjdCBwaXBlc19zdHJ1Y3QK ewogICAgICAgIHN0cnVjdCBwaXBlc19zdHJ1Y3QgKm5leHQsICpwcmV2OwogICAgICAgIGludCBw bnVtOwogICAgICAgIGNvbm5lY3Rpb25fc3RydWN0ICpjb25uOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHZ1aWQ7CiAgICAgICAgQk9PTCBvcGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRldmlj ZV9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcmlvcml0eTsKICAgICAgICBmc3RyaW5n IG5hbWU7CiAgICAgICAgZnN0cmluZyBwaXBlX3Nydl9uYW1lOwoKICAgICAgICBSUENfSERSIGhk cjsKICAgICAgICBSUENfSERSX1JFUSBoZHJfcmVxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnRs bXNzcF9jaGFsX2ZsYWdzOwogICAgICAgIEJPT0wgbnRsbXNzcF9hdXRoX3JlcXVlc3RlZDsKICAg ICAgICBCT09MIG50bG1zc3BfYXV0aF92YWxpZGF0ZWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBj aGFsbGVuZ2VbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciBudGxtc3NwX2hhc2hbMjU4XTsKICAg ICAgICB1bnNpZ25lZCBpbnQgbnRsbXNzcF9zZXFfbnVtOwogICAgICAgIHN0cnVjdCBkY2luZm8g ZGM7CgoKCgogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWlu OwogICAgICAgIGZzdHJpbmcgd2tzOwoKCgoKCiAgICAgICAgZnN0cmluZyBwaXBlX3VzZXJfbmFt ZTsKICAgICAgICBzdHJ1Y3QgY3VycmVudF91c2VyIHBpcGVfdXNlcjsKCgoKCgogICAgICAgIEJP T0wgcGlwZV9ib3VuZDsKCgoKCgogICAgICAgIEJPT0wgZmF1bHRfc3RhdGU7CgoKCgoKICAgICAg ICBCT09MIGVuZGlhbjsKCgoKCgogICAgICAgIGlucHV0X2RhdGEgaW5fZGF0YTsKCgoKCgogICAg ICAgIG91dHB1dF9kYXRhIG91dF9kYXRhOwoKCgogICAgICAgIGludCBtYXhfdHJhbnNfcmVwbHk7 CgoKICAgICAgICBUQUxMT0NfQ1RYICptZW1fY3R4OwoKCiAgICAgICAgc3RydWN0IGhhbmRsZV9s aXN0ICpwaXBlX2hhbmRsZXM7Cgp9IHBpcGVzX3N0cnVjdDsKCnN0cnVjdCBhcGlfc3RydWN0CnsK ICBjaGFyICpuYW1lOwogIHVuc2lnbmVkIGNoYXIgb3BudW07CiAgQk9PTCAoKmZuKSAocGlwZXNf c3RydWN0ICopOwp9OwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIHVuc2lnbmVkIGludCByaWQ7 CiAgICAgICAgY2hhciAqbmFtZTsKCn0gcmlkX25hbWU7CgpzdHJ1Y3QgYWNjdF9pbmZvCnsKICAg IGZzdHJpbmcgYWNjdF9uYW1lOwogICAgZnN0cmluZyBhY2N0X2Rlc2M7CiAgICB1bnNpZ25lZCBp bnQgcmlkOwp9OwojIDI3NSAiaW5jbHVkZS9udGRvbWFpbi5oIgojIDEgImluY2x1ZGUvcnBjX3Nl Y2Rlcy5oIiAxCiMgODEgImluY2x1ZGUvcnBjX3NlY2Rlcy5oIgp0eXBlZGVmIHN0cnVjdCBzZWN1 cml0eV9pbmZvX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBtYXNrOwoKfSBTRUNfQUNDRVNT OwoKCgoKCnR5cGVkZWYgc3RydWN0IHNlY3VyaXR5X2FjZV9pbmZvCnsKICAgICAgICB1bnNpZ25l ZCBjaGFyIHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnczsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBzaXplOwoKICAgICAgICBTRUNfQUNDRVNTIGluZm87CiAgICAgICAgRE9NX1NJRCB0 cnVzdGVlOwoKfSBTRUNfQUNFOwojIDExNCAiaW5jbHVkZS9ycGNfc2VjZGVzLmgiCnR5cGVkZWYg c3RydWN0IHNlY3VyaXR5X2FjbF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXZpc2lv bjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBudW1f YWNlczsKCiAgICAgICAgU0VDX0FDRSAqYWNlOwoKfSBTRUNfQUNMOwojIDEzMiAiaW5jbHVkZS9y cGNfc2VjZGVzLmgiCnR5cGVkZWYgc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbwp7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgcmV2aXNpb247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG9mZl9vd25lcl9zaWQ7CiAgICAgICAgdW5zaWduZWQg aW50IG9mZl9ncnBfc2lkIDsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmX3NhY2wgOwogICAgICAg IHVuc2lnbmVkIGludCBvZmZfZGFjbCA7CgogICAgICAgIFNFQ19BQ0wgKmRhY2w7CiAgICAgICAg U0VDX0FDTCAqc2FjbDsKICAgICAgICBET01fU0lEICpvd25lcl9zaWQ7CiAgICAgICAgRE9NX1NJ RCAqZ3JwX3NpZDsKCn0gU0VDX0RFU0M7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2VjX2Rlc2NfYnVm X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBtYXhfbGVuOwogICAgICAgIHVuc2lnbmVkIGlu dCBwdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKCiAgICAgICAgU0VDX0RFU0MgKnNlYzsK Cn0gU0VDX0RFU0NfQlVGOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBnZW5lcmljX21hcHBpbmcgewog ICAgICAgIHVuc2lnbmVkIGludCBnZW5lcmljX3JlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdl bmVyaWNfd3JpdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGdlbmVyaWNfZXhlY3V0ZTsKICAgICAg ICB1bnNpZ25lZCBpbnQgZ2VuZXJpY19hbGw7Cn0gR0VORVJJQ19NQVBQSU5HOwojIDI3NiAiaW5j bHVkZS9udGRvbWFpbi5oIiAyCgoKIyAxICJpbmNsdWRlL3JwY19sc2EuaCIgMQojIDI3ICJpbmNs dWRlL3JwY19sc2EuaCIKIyAxICJpbmNsdWRlL3JwY19taXNjLmgiIDEKIyAyOCAiaW5jbHVkZS9y cGNfbHNhLmgiIDIKCmVudW0gU0lEX05BTUVfVVNFCnsKICAgICAgICBTSURfTkFNRV9VU0VfTk9O RSA9IDAsCiAgICAgICAgU0lEX05BTUVfVVNFUiA9IDEsCiAgICAgICAgU0lEX05BTUVfRE9NX0dS UCA9IDIsCiAgICAgICAgU0lEX05BTUVfRE9NQUlOID0gMywKICAgICAgICBTSURfTkFNRV9BTElB UyA9IDQsCiAgICAgICAgU0lEX05BTUVfV0tOX0dSUCA9IDUsCiAgICAgICAgU0lEX05BTUVfREVM RVRFRCA9IDYsCiAgICAgICAgU0lEX05BTUVfSU5WQUxJRCA9IDcsCiAgICAgICAgU0lEX05BTUVf VU5LTk9XTiA9IDgKfTsKIyA5OCAiaW5jbHVkZS9ycGNfbHNhLmgiCnR5cGVkZWYgc3RydWN0IGRv bV9xdWVyeV9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCB1bmlfZG9tX21heF9sZW47CiAgdW5zaWdu ZWQgc2hvcnQgdW5pX2RvbV9zdHJfbGVuOwogIHVuc2lnbmVkIGludCBidWZmZXJfZG9tX25hbWU7 CiAgdW5zaWduZWQgaW50IGJ1ZmZlcl9kb21fc2lkOwogIFVOSVNUUjIgdW5pX2RvbWFpbl9uYW1l OwogIERPTV9TSUQyIGRvbV9zaWQ7Cgp9IERPTV9RVUVSWTsKCgp0eXBlZGVmIERPTV9RVUVSWSBE T01fUVVFUllfMzsKdHlwZWRlZiBET01fUVVFUlkgRE9NX1FVRVJZXzU7CgoKdHlwZWRlZiBzdHJ1 Y3QgZG9tX3F1ZXJ5XzIKewogICAgICAgIHVuc2lnbmVkIGludCBhdWRpdGluZ19lbmFibGVkOwog ICAgICAgIHVuc2lnbmVkIGludCBjb3VudDE7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50MjsK ICAgICAgICB1bnNpZ25lZCBpbnQgKmF1ZGl0c2V0dGluZ3M7Cn0gRE9NX1FVRVJZXzI7CgoKdHlw ZWRlZiBzdHJ1Y3QgZG9tX3F1ZXJ5XzYKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcnZlcl9y b2xlOwp9IERPTV9RVUVSWV82OwoKdHlwZWRlZiBzdHJ1Y3Qgc2VxX3Fvc19pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlY19pbXBfbGV2ZWw7 CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNfY3R4dF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGNo YXIgZWZmZWN0aXZlX29ubHk7Cgp9IExTQV9TRUNfUU9TOwoKdHlwZWRlZiBzdHJ1Y3Qgb2JqX2F0 dHJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQg cHRyX3Jvb3RfZGlyOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfb2JqX25hbWU7CiAgICAgICAg dW5zaWduZWQgaW50IGF0dHJpYnV0ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zZWNfZGVz YzsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NlY19xb3M7CiAgICAgICAgTFNBX1NFQ19RT1Mg KnNlY19xb3M7Cgp9IExTQV9PQkpfQVRUUjsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9vcGVuX3Bv bF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHN5c3RlbV9uYW1lOwogICAgICAgIExTQV9PQkpfQVRUUiBhdHRyIDsKCiAgICAgICAgdW5zaWdu ZWQgaW50IGRlc19hY2Nlc3M7Cgp9IExTQV9RX09QRU5fUE9MOwoKCnR5cGVkZWYgc3RydWN0IGxz YV9yX29wZW5fcG9sX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RB VFVTIHN0YXR1czsKCn0gTFNBX1JfT1BFTl9QT0w7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ffb3Bl bl9wb2wyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RSMiB1 bmlfc2VydmVyX25hbWU7CiAgICAgICAgTFNBX09CSl9BVFRSIGF0dHIgOwoKICAgICAgICB1bnNp Z25lZCBpbnQgZGVzX2FjY2VzczsKCn0gTFNBX1FfT1BFTl9QT0wyOwoKCnR5cGVkZWYgc3RydWN0 IGxzYV9yX29wZW5fcG9sMl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBO VFNUQVRVUyBzdGF0dXM7Cgp9IExTQV9SX09QRU5fUE9MMjsKIyAyMzUgImluY2x1ZGUvcnBjX2xz YS5oIgp0eXBlZGVmIHN0cnVjdCBsc2FfcXVlcnlfc2VjX29ial9pbmZvCnsKICAgICAgICBQT0xJ Q1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87Cgp9IExTQV9RX1FVRVJZ X1NFQ19PQko7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9sc2FfcXVlcnlfc2VjX29ial9pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIFNFQ19ERVNDX0JVRiAqYnVmOwoKICAgICAg ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IExTQV9SX1FVRVJZX1NFQ19PQko7CgoKdHlwZWRlZiBzdHJ1 Y3QgbHNhX3F1ZXJ5X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgdW5zaWduZWQg c2hvcnQgaW5mb19jbGFzczsKCn0gTFNBX1FfUVVFUllfSU5GTzsKCgp0eXBlZGVmIHVuaW9uIGxz YV9pbmZvX3VuaW9uCnsKICAgICAgICBET01fUVVFUllfMiBpZDI7CiAgICAgICAgRE9NX1FVRVJZ XzMgaWQzOwogICAgICAgIERPTV9RVUVSWV81IGlkNTsKICAgICAgICBET01fUVVFUllfNiBpZDY7 Cn0gTFNBX0lORk9fVU5JT047CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfcXVlcnlfaW5mbwp7CiAg ICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyOwogICAgdW5zaWduZWQgc2hvcnQgaW5mb19jbGFz czsKCiAgICAgICAgTFNBX0lORk9fVU5JT04gZG9tOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7 Cgp9IExTQV9SX1FVRVJZX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX2VudW1fdHJ1c3RfZG9t X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgdW5zaWduZWQgaW50IGVudW1fY29u dGV4dDsKICAgIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfbGVuOwoKfSBMU0FfUV9FTlVNX1RSVVNU X0RPTTsKCgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9lbnVtX3RydXN0X2RvbV9pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgZW51bV9jb250ZXh0OwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZG9t YWluczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudW1fZG9tYWluczsKCgogICAgICAgIHVu c2lnbmVkIGludCBudW1fZG9tYWluczI7CiAgICAgICAgVU5JSERSMiAqaGRyX2RvbWFpbl9uYW1l OwogICAgICAgIFVOSVNUUjIgKnVuaV9kb21haW5fbmFtZTsKICAgICAgICBET01fU0lEMiAqZG9t YWluX3NpZDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBMU0FfUl9FTlVNX1RSVVNUX0RP TTsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9jbG9zZV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5E IHBvbDsKCn0gTFNBX1FfQ0xPU0U7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfY2xvc2VfaW5mbwp7 CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gTFNB X1JfQ0xPU0U7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZG9tX3RydXN0X2hkcgp7CiAgICAgICAgVU5J SERSIGhkcl9kb21fbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2RvbV9zaWQ7Cgp9IERP TV9UUlVTVF9IRFI7CgoKdHlwZWRlZiBzdHJ1Y3QgZG9tX3RydXN0X2luZm8KewogICAgICAgIFVO SVNUUjIgdW5pX2RvbV9uYW1lOwogICAgICAgIERPTV9TSUQyIHJlZl9kb20gOwoKfSBET01fVFJV U1RfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBkb21fcmVmX2luZm8KewogICAgdW5zaWduZWQgaW50 IG51bV9yZWZfZG9tc18xOwogICAgdW5zaWduZWQgaW50IHB0cl9yZWZfZG9tOwogICAgdW5zaWdu ZWQgaW50IG1heF9lbnRyaWVzOwogICAgdW5zaWduZWQgaW50IG51bV9yZWZfZG9tc18yOwoKICAg IERPTV9UUlVTVF9IRFIgaGRyX3JlZl9kb21bMzJdOwogICAgRE9NX1RSVVNUX0lORk8gcmVmX2Rv bSBbMzJdOwoKfSBET01fUl9SRUY7CgoKCgp0eXBlZGVmIHN0cnVjdCBsc2FfdHJhbnNfbmFtZV9p bmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWRfbmFtZV91c2U7CiAgICAgICAgVU5JSERS IGhkcl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBkb21haW5faWR4OwoKfSBMU0FfVFJBTlNf TkFNRTsKCgoKCnR5cGVkZWYgc3RydWN0IGxzYV90cmFuc19uYW1lX2VudW1faW5mbwp7CiAgICAg ICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfdHJh bnNfbmFtZXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKCiAgICAgICAgTFNB X1RSQU5TX05BTUUgKm5hbWU7CiAgICAgICAgVU5JU1RSMiAqdW5pX25hbWU7Cgp9IExTQV9UUkFO U19OQU1FX0VOVU07CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3NpZF9lbnVtX2luZm8KewogICAgICAg IHVuc2lnbmVkIGludCBudW1fZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NpZF9l bnVtOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczI7CgogICAgICAgIHVuc2lnbmVk IGludCAqcHRyX3NpZDsKICAgICAgICBET01fU0lEMiAqc2lkOwoKfSBMU0FfU0lEX0VOVU07CgoK dHlwZWRlZiBzdHJ1Y3QgbHNhX3FfbG9va3VwX3NpZHMKewogICAgICAgIFBPTElDWV9ITkQgcG9s OwogICAgICAgIExTQV9TSURfRU5VTSBzaWRzOwogICAgICAgIExTQV9UUkFOU19OQU1FX0VOVU0g bmFtZXM7CiAgICAgICAgTE9PS1VQX0xFVkVMIGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBt YXBwZWRfY291bnQ7Cgp9IExTQV9RX0xPT0tVUF9TSURTOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9y X2xvb2t1cF9zaWRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2RvbV9yZWY7CiAgICAgICAg RE9NX1JfUkVGICpkb21fcmVmOwoKICAgICAgICBMU0FfVFJBTlNfTkFNRV9FTlVNICpuYW1lczsK ICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGVkX2NvdW50OwoKICAgICAgICBOVFNUQVRVUyBzdGF0 dXM7Cgp9IExTQV9SX0xPT0tVUF9TSURTOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX2xvb2t1cF9u YW1lcwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9l bnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczI7CiAgICAgICAgVU5JSERS ICpoZHJfbmFtZTsKICAgICAgICBVTklTVFIyICp1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQg aW50IG51bV90cmFuc19lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfdHJhbnNfc2lk czsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2xldmVsOwogICAgICAgIHVuc2lnbmVkIGlu dCBtYXBwZWRfY291bnQ7Cgp9IExTQV9RX0xPT0tVUF9OQU1FUzsKCgp0eXBlZGVmIHN0cnVjdCBs c2Ffcl9sb29rdXBfbmFtZXMKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZG9tX3JlZjsKICAg ICAgICBET01fUl9SRUYgKmRvbV9yZWY7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll czsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXM7CiAgICAgICAgdW5zaWduZWQgaW50 IG51bV9lbnRyaWVzMjsKICAgICAgICBET01fUklEMiAqZG9tX3JpZDsKCiAgICAgICAgdW5zaWdu ZWQgaW50IG1hcHBlZF9jb3VudDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwp9IExTQV9SX0xP T0tVUF9OQU1FUzsKCgoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX29wZW5fc2VjcmV0CnsKICAgICAg ICB1bnNpZ25lZCBpbnQgZHVtbXk7Cn0gTFNBX1FfT1BFTl9TRUNSRVQ7CgoKCnR5cGVkZWYgc3Ry dWN0IGxzYV9yX29wZW5fc2VjcmV0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVtbXkxOwogICAg ICAgIHVuc2lnbmVkIGludCBkdW1teTI7CiAgICAgICAgdW5zaWduZWQgaW50IGR1bW15MzsKICAg ICAgICB1bnNpZ25lZCBpbnQgZHVtbXk0OwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0Ff Ul9PUEVOX1NFQ1JFVDsKCnR5cGVkZWYgc3RydWN0IGxzYV9lbnVtX3ByaXZfZW50cnkKewogICAg ICAgIFVOSUhEUiBoZHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbHVpZF9sb3c7CiAgICAg ICAgdW5zaWduZWQgaW50IGx1aWRfaGlnaDsKICAgICAgICBVTklTVFIyIG5hbWU7Cgp9IExTQV9Q UklWX0VOVFJZOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX2VudW1fcHJpdnMKewogICAgICAgIFBP TElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBlbnVtX2NvbnRleHQ7CiAgICAgICAg dW5zaWduZWQgaW50IHByZWZfbWF4X2xlbmd0aDsKfSBMU0FfUV9FTlVNX1BSSVZTOwoKdHlwZWRl ZiBzdHJ1Y3QgbHNhX3JfZW51bV9wcml2cwp7CiAgICAgICAgdW5zaWduZWQgaW50IGVudW1fY29u dGV4dDsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHB0 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQxOwoKICAgICAgICBMU0FfUFJJVl9FTlRSWSAq cHJpdnM7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9FTlVNX1BSSVZTOwoKCnR5 cGVkZWYgc3RydWN0IGxzYV9xX3ByaXZfZ2V0X2Rpc3BuYW1lCnsKICAgICAgICBQT0xJQ1lfSE5E IHBvbDsKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGxhbmdfaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGFuZ19p ZF9zeXM7Cn0gTFNBX1FfUFJJVl9HRVRfRElTUE5BTUU7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9w cml2X2dldF9kaXNwbmFtZQp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9pbmZvOwogICAgICAg IFVOSUhEUiBoZHJfZGVzYzsKICAgICAgICBVTklTVFIyIGRlc2M7CgogICAgICAgIHVuc2lnbmVk IHNob3J0IGxhbmdfaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9QUklWX0dF VF9ESVNQTkFNRTsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9lbnVtX2FjY291bnRzCnsKICAgICAg ICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgZW51bV9jb250ZXh0OwogICAg ICAgIHVuc2lnbmVkIGludCBwcmVmX21heF9sZW5ndGg7Cn0gTFNBX1FfRU5VTV9BQ0NPVU5UUzsK Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9lbnVtX2FjY291bnRzCnsKICAgICAgICB1bnNpZ25lZCBp bnQgZW51bV9jb250ZXh0OwogICAgICAgIExTQV9TSURfRU5VTSBzaWRzOwogICAgICAgIE5UU1RB VFVTIHN0YXR1czsKfSBMU0FfUl9FTlVNX0FDQ09VTlRTOwoKCgp0eXBlZGVmIHN0cnVjdCBsc2Ff cV91bmtfZ2V0X2Nvbm51c2VyCnsKICB1bnNpZ25lZCBpbnQgcHRyX3Nydm5hbWU7CiAgVU5JU1RS MiB1bmkyX3Nydm5hbWU7CiAgdW5zaWduZWQgaW50IHVuazE7CiAgdW5zaWduZWQgaW50IHVuazI7 CiAgdW5zaWduZWQgaW50IHVuazM7Cn0gTFNBX1FfVU5LX0dFVF9DT05OVVNFUjsKCgp0eXBlZGVm IHN0cnVjdCBsc2Ffcl91bmtfZ2V0X2Nvbm51c2VyCnsKICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJf bmFtZTsKICBVTklIRFIgaGRyX3VzZXJfbmFtZTsKICBVTklTVFIyIHVuaTJfdXNlcl9uYW1lOwoK ICB1bnNpZ25lZCBpbnQgdW5rMTsKCiAgdW5zaWduZWQgaW50IHB0cl9kb21fbmFtZTsKICBVTklI RFIgaGRyX2RvbV9uYW1lOwogIFVOSVNUUjIgdW5pMl9kb21fbmFtZTsKCiAgTlRTVEFUVVMgc3Rh dHVzOwp9IExTQV9SX1VOS19HRVRfQ09OTlVTRVI7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ffb3Bl bmFjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIERPTV9TSUQyIHNpZDsK ICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzOwp9IExTQV9RX09QRU5BQ0NPVU5UOwoKdHlwZWRl ZiBzdHJ1Y3QgbHNhX3Jfb3BlbmFjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAg ICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9PUEVOQUNDT1VOVDsKCnR5cGVkZWYgc3RydWN0 IGxzYV9xX2VudW1wcml2c2FjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwp9IExTQV9R X0VOVU1QUklWU0FDQ09VTlQ7CgoKdHlwZWRlZiBzdHJ1Y3QgTFVJRAp7CiAgICAgICAgdW5zaWdu ZWQgaW50IGxvdzsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlnaDsKfSBMVUlEOwoKdHlwZWRlZiBz dHJ1Y3QgTFVJRF9BVFRSCnsKICAgICAgICBMVUlEIGx1aWQ7CiAgICAgICAgdW5zaWduZWQgaW50 IGF0dHI7Cn0gTFVJRF9BVFRSIDsKCnR5cGVkZWYgc3RydWN0IHByaXZpbGVnZV9zZXQKewogICAg ICAgIHVuc2lnbmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgY29udHJvbDsKICAg ICAgICBMVUlEX0FUVFIgKnNldDsKfSBQUklWSUxFR0VfU0VUOwoKdHlwZWRlZiBzdHJ1Y3QgbHNh X3JfZW51bXByaXZzYWNjb3VudAp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKICAgICAgICB1 bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgUFJJVklMRUdFX1NFVCBzZXQ7CiAgICAgICAgTlRT VEFUVVMgc3RhdHVzOwp9IExTQV9SX0VOVU1QUklWU0FDQ09VTlQ7Cgp0eXBlZGVmIHN0cnVjdCBs c2FfcV9nZXRzeXN0ZW1hY2NvdW50CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKfSBMU0FfUV9H RVRTWVNURU1BQ0NPVU5UOwoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfZ2V0c3lzdGVtYWNjb3VudAp7 CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2VzczsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0g TFNBX1JfR0VUU1lTVEVNQUNDT1VOVDsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9zZXRzeXN0ZW1h Y2NvdW50CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNj ZXNzOwp9IExTQV9RX1NFVFNZU1RFTUFDQ09VTlQ7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9zZXRz eXN0ZW1hY2NvdW50CnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTFNBX1JfU0VUU1lTVEVN QUNDT1VOVDsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9sb29rdXBwcml2dmFsdWUKewogICAgICAg IFBPTElDWV9ITkQgcG9sOwogICAgICAgIFVOSUhEUiBoZHJfcmlnaHQ7CiAgICAgICAgVU5JU1RS MiB1bmkyX3JpZ2h0Owp9IExTQV9RX0xPT0tVUFBSSVZWQUxVRTsKCnR5cGVkZWYgc3RydWN0IGxz YV9yX2xvb2t1cHByaXZ2YWx1ZQp7CiAgICAgICAgTFVJRCBsdWlkOwogICAgICAgIE5UU1RBVFVT IHN0YXR1czsKfSBMU0FfUl9MT09LVVBQUklWVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ff YWRkcHJpdnMKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBj b3VudDsKICAgICAgICBQUklWSUxFR0VfU0VUIHNldDsKfSBMU0FfUV9BRERQUklWUzsKCnR5cGVk ZWYgc3RydWN0IGxzYV9yX2FkZHByaXZzCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTFNB X1JfQUREUFJJVlM7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3FfcmVtb3ZlcHJpdnMKewogICAgICAg IFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxyaWdodHM7CiAgICAgICAg dW5zaWduZWQgaW50IHB0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgUFJJ VklMRUdFX1NFVCBzZXQ7Cn0gTFNBX1FfUkVNT1ZFUFJJVlM7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ff cl9yZW1vdmVwcml2cwp7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwp9IExTQV9SX1JFTU9WRVBS SVZTOwojIDI3OSAiaW5jbHVkZS9udGRvbWFpbi5oIiAyCiMgMSAiaW5jbHVkZS9ycGNfbmV0bG9n b24uaCIgMQojIDEyNSAiaW5jbHVkZS9ycGNfbmV0bG9nb24uaCIKdHlwZWRlZiBzdHJ1Y3QgbmV0 X3VzZXJfaW5mb18zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJfaW5mbzsKCiAgICAg ICAgTlRUSU1FIGxvZ29uX3RpbWU7CiAgICAgICAgTlRUSU1FIGxvZ29mZl90aW1lOwogICAgICAg IE5UVElNRSBraWNrb2ZmX3RpbWU7CiAgICAgICAgTlRUSU1FIHBhc3NfbGFzdF9zZXRfdGltZTsK ICAgICAgICBOVFRJTUUgcGFzc19jYW5fY2hhbmdlX3RpbWU7CiAgICAgICAgTlRUSU1FIHBhc3Nf bXVzdF9jaGFuZ2VfdGltZTsKCiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAg VU5JSERSIGhkcl9mdWxsX25hbWU7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAg ICAgICAgVU5JSERSIGhkcl9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JSERSIGhkcl9ob21lX2Rp cjsKICAgICAgICBVTklIRFIgaGRyX2Rpcl9kcml2ZTsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQg bG9nb25fY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYmFkX3B3X2NvdW50OwoKICAgICAg ICB1bnNpZ25lZCBpbnQgdXNlcl9yaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3VwX3JpZDsK CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9ncm91cHM7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1 ZmZlcl9ncm91cHM7CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfZmxnczsKCiAgICAgICAgdW5z aWduZWQgY2hhciB1c2VyX3Nlc3Nfa2V5WzE2XTsKCiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9z cnY7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9kb207CgogICAgICAgIHVuc2lnbmVkIGludCBi dWZmZXJfZG9tX2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1s0MF07CgogICAgICAg IHVuc2lnbmVkIGludCBudW1fb3RoZXJfc2lkczsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVy X290aGVyX3NpZHM7CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAgICBVTklT VFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfbG9nb25fc2NyaXB0OwogICAg ICAgIFVOSVNUUjIgdW5pX3Byb2ZpbGVfcGF0aDsKICAgICAgICBVTklTVFIyIHVuaV9ob21lX2Rp cjsKICAgICAgICBVTklTVFIyIHVuaV9kaXJfZHJpdmU7CgogICAgICAgIHVuc2lnbmVkIGludCBu dW1fZ3JvdXBzMjsKICAgICAgICBET01fR0lEICpnaWRzOwoKICAgICAgICBVTklTVFIyIHVuaV9s b2dvbl9zcnY7CiAgICAgICAgVU5JU1RSMiB1bmlfbG9nb25fZG9tOwoKICAgICAgICBET01fU0lE MiBkb21fc2lkOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX290aGVyX2dyb3VwczsKICAgICAg ICBET01fR0lEICpvdGhlcl9naWRzOwogICAgICAgIERPTV9TSUQyICpvdGhlcl9zaWRzOwoKfSBO RVRfVVNFUl9JTkZPXzM7CgoKCnR5cGVkZWYgc3RydWN0IG5ldGxvZ29uXzFfaW5mbwp7CiAgICAg ICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCBwZGNfc3RhdHVzOwoK fSBORVRMT0dPTl9JTkZPXzE7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0bG9nb25fMl9pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHBkY19zdGF0dXM7 CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90cnVzdGVkX2RjX25hbWU7CiAgICAgICAgdW5zaWdu ZWQgaW50IHRjX3N0YXR1czsKICAgICAgICBVTklTVFIyIHVuaV90cnVzdGVkX2RjX25hbWU7Cgp9 IE5FVExPR09OX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBuZXRsb2dvbl8zX2luZm8KewogICAg ICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9nb25fYXR0ZW1w dHM7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzE7CiAgICAgICAgdW5zaWduZWQgaW50 IHJlc2VydmVkXzI7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzM7CiAgICAgICAgdW5z aWduZWQgaW50IHJlc2VydmVkXzQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzU7Cgp9 IE5FVExPR09OX0lORk9fMzsKIyAyMjkgImluY2x1ZGUvcnBjX25ldGxvZ29uLmgiCnR5cGVkZWYg c3RydWN0IG5ldF9xX2xvZ29uX2N0cmxfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK ICAgICAgICBVTklTVFIyIHVuaV9zZXJ2ZXJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgZnVu Y3Rpb25fY29kZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcXVlcnlfbGV2ZWw7Cn0gTkVUX1FfTE9H T05fQ1RSTDsKCgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3JfbG9nb25fY3RybF9pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7Cgog ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIE5FVExPR09OX0lORk9fMSBpbmZvMTsKICAg ICAgICB9IGxvZ29uOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTkVUX1JfTE9HT05fQ1RS TDsKIyAyNjAgImluY2x1ZGUvcnBjX25ldGxvZ29uLmgiCnR5cGVkZWYgc3RydWN0IG5ldF9xX2xv Z29uX2N0cmwyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RS MiB1bmlfc2VydmVyX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBmdW5jdGlvbl9jb2RlOwog ICAgICAgIHVuc2lnbmVkIGludCBxdWVyeV9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dp dGNoX3ZhbHVlOwoKfSBORVRfUV9MT0dPTl9DVFJMMjsKIyAyNzggImluY2x1ZGUvcnBjX25ldGxv Z29uLmgiCnR5cGVkZWYgc3RydWN0IG5ldF9yX2xvZ29uX2N0cmwyX2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKCiAgICAg ICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBORVRMT0dPTl9JTkZPXzEgaW5mbzE7 CiAgICAgICAgICAgICAgICBORVRMT0dPTl9JTkZPXzIgaW5mbzI7CiAgICAgICAgICAgICAgICBO RVRMT0dPTl9JTkZPXzMgaW5mbzM7CgogICAgICAgIH0gbG9nb247CgogICAgICAgIE5UU1RBVFVT IHN0YXR1czsKCn0gTkVUX1JfTE9HT05fQ1RSTDI7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3FfdHJ1 c3RfZG9tX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RSMiB1 bmlfc2VydmVyX25hbWU7Cgp9IE5FVF9RX1RSVVNUX0RPTV9MSVNUOwoKCgoKdHlwZWRlZiBzdHJ1 Y3QgbmV0X3JfdHJ1c3RfZG9tX2luZm8KewogICAgICAgIFVOSVNUUjIgdW5pX3RydXN0X2RvbV9u YW1lWzFdOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IE5FVF9SX1RSVVNUX0RPTV9MSVNU OwoKCgp0eXBlZGVmIHN0cnVjdCBuZWdfZmxhZ3NfaW5mbwp7CiAgICB1bnNpZ25lZCBpbnQgbmVn X2ZsYWdzOwoKfSBORUdfRkxBR1M7CgoKCnR5cGVkZWYgc3RydWN0IG5ldF9xX3JlcV9jaGFsX2lu Zm8KewogICAgdW5zaWduZWQgaW50IHVuZG9jX2J1ZmZlcjsKICAgIFVOSVNUUjIgdW5pX2xvZ29u X3NydjsKICAgIFVOSVNUUjIgdW5pX2xvZ29uX2NsbnQ7CiAgICBET01fQ0hBTCBjbG50X2NoYWw7 Cgp9IE5FVF9RX1JFUV9DSEFMOwoKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9yZXFfY2hhbF9pbmZv CnsKICAgICAgICBET01fQ0hBTCBzcnZfY2hhbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0g TkVUX1JfUkVRX0NIQUw7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3FfYXV0aF9pbmZvCnsKICAgICAg ICBET01fTE9HX0lORk8gY2xudF9pZDsKICAgICAgICBET01fQ0hBTCBjbG50X2NoYWw7Cn0gTkVU X1FfQVVUSDsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9hdXRoX2luZm8KewogICAgICAgIERPTV9D SEFMIHNydl9jaGFsOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBORVRfUl9BVVRIOwoKCnR5 cGVkZWYgc3RydWN0IG5ldF9xX2F1dGgyX2luZm8KewogICAgRE9NX0xPR19JTkZPIGNsbnRfaWQ7 CiAgICBET01fQ0hBTCBjbG50X2NoYWw7CgogICAgTkVHX0ZMQUdTIGNsbnRfZmxnczsKCn0gTkVU X1FfQVVUSF8yOwoKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9hdXRoMl9pbmZvCnsKICAgICAgICBE T01fQ0hBTCBzcnZfY2hhbDsKICAgICAgICBORUdfRkxBR1Mgc3J2X2ZsZ3M7CiAgICAgICAgTlRT VEFUVVMgc3RhdHVzOwp9IE5FVF9SX0FVVEhfMjsKCgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Ffc3J2 X3B3c2V0X2luZm8KewogICAgRE9NX0NMTlRfSU5GTyBjbG50X2lkOwogICAgdW5zaWduZWQgY2hh ciBwd2RbMTZdOwoKfSBORVRfUV9TUlZfUFdTRVQ7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Jfc3J2 X3B3c2V0X2luZm8KewogICAgRE9NX0NSRUQgc3J2X2NyZWQ7CgogIE5UU1RBVFVTIHN0YXR1czsK Cn0gTkVUX1JfU1JWX1BXU0VUOwoKCnR5cGVkZWYgc3RydWN0IG5ldF9uZXR3b3JrX2luZm9fMgp7 CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9pZF9pbmZvMjsKICAgICAgICBVTklIRFIgaGRyX2Rv bWFpbl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwYXJhbV9jdHJsOwogICAgICAgIERPTV9M T0dPTl9JRCBsb2dvbl9pZDsKICAgICAgICBVTklIRFIgaGRyX3VzZXJfbmFtZTsKICAgICAgICBV TklIRFIgaGRyX3drc3RhX25hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9jaGFsWzhdOwog ICAgICAgIFNUUkhEUiBoZHJfbnRfY2hhbF9yZXNwOwogICAgICAgIFNUUkhEUiBoZHJfbG1fY2hh bF9yZXNwOwoKICAgICAgICBVTklTVFIyIHVuaV9kb21haW5fbmFtZTsKICAgICAgICBVTklTVFIy IHVuaV91c2VyX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfd2tzdGFfbmFtZTsKICAgICAgICBT VFJJTkcyIG50X2NoYWxfcmVzcDsKICAgICAgICBTVFJJTkcyIGxtX2NoYWxfcmVzcDsKCn0gTkVU X0lEX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBpZF9pbmZvXzEKewogICAgICAgIHVuc2lnbmVk IGludCBwdHJfaWRfaW5mbzE7CiAgICAgICAgVU5JSERSIGhkcl9kb21haW5fbmFtZTsKICAgICAg ICB1bnNpZ25lZCBpbnQgcGFyYW1fY3RybDsKICAgICAgICBET01fTE9HT05fSUQgbG9nb25faWQ7 CiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAgVU5JSERSIGhkcl93a3N0YV9u YW1lOwogICAgICAgIE9XRl9JTkZPIGxtX293ZjsKICAgICAgICBPV0ZfSU5GTyBudF9vd2Y7CiAg ICAgICAgVU5JU1RSMiB1bmlfZG9tYWluX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfdXNlcl9u YW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3drc3RhX25hbWU7Cgp9IE5FVF9JRF9JTkZPXzE7CgoK CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X2lkX2luZm9fY3RyX2luZm8KewogIHVuc2lnbmVkIHNob3J0 IHN3aXRjaF92YWx1ZTsKCiAgdW5pb24KICB7CiAgICBORVRfSURfSU5GT18xIGlkMTsKICAgIE5F VF9JRF9JTkZPXzIgaWQyOwoKICB9IGF1dGg7Cgp9IE5FVF9JRF9JTkZPX0NUUjsKCgp0eXBlZGVm IHN0cnVjdCBzYW1faW5mbwp7CiAgRE9NX0NMTlRfSU5GTzIgY2xpZW50OwogIHVuc2lnbmVkIGlu dCBwdHJfcnRuX2NyZWQ7CiAgRE9NX0NSRUQgcnRuX2NyZWQ7CiAgdW5zaWduZWQgc2hvcnQgbG9n b25fbGV2ZWw7CiAgTkVUX0lEX0lORk9fQ1RSICpjdHI7Cgp9IERPTV9TQU1fSU5GTzsKCgp0eXBl ZGVmIHN0cnVjdCBuZXRfcV9zYW1fbG9nb25faW5mbwp7CiAgICBET01fU0FNX0lORk8gc2FtX2lk OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZhbGlkYXRpb25fbGV2ZWw7Cgp9IE5FVF9RX1NBTV9M T0dPTjsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9zYW1fbG9nb25faW5mbwp7CiAgICB1bnNpZ25l ZCBpbnQgYnVmZmVyX2NyZWRzOwogICAgRE9NX0NSRUQgc3J2X2NyZWRzOwoKICAgICAgICB1bnNp Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CiAgICBORVRfVVNFUl9JTkZPXzMgKnVzZXI7CgogICAg dW5zaWduZWQgaW50IGF1dGhfcmVzcDsKCiAgTlRTVEFUVVMgc3RhdHVzOwoKfSBORVRfUl9TQU1f TE9HT047CgoKCnR5cGVkZWYgc3RydWN0IG5ldF9xX3NhbV9sb2dvZmZfaW5mbwp7CiAgICBET01f U0FNX0lORk8gc2FtX2lkOwoKfSBORVRfUV9TQU1fTE9HT0ZGOwoKCnR5cGVkZWYgc3RydWN0IG5l dF9yX3NhbV9sb2dvZmZfaW5mbwp7CiAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX2NyZWRzOwogICAg RE9NX0NSRUQgc3J2X2NyZWRzOwoKICBOVFNUQVRVUyBzdGF0dXM7Cgp9IE5FVF9SX1NBTV9MT0dP RkY7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Ffc2FtX3N5bmNfaW5mbwp7CiAgICAgICAgVU5JU1RS MiB1bmlfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfY2xpX25hbWU7CiAgICAgICAgRE9N X0NSRUQgY2xpX2NyZWRzOwogICAgICAgIERPTV9DUkVEIHJldF9jcmVkczsKCiAgICAgICAgdW5z aWduZWQgaW50IGRhdGFiYXNlX2lkOwogICAgICAgIHVuc2lnbmVkIGludCByZXN0YXJ0X3N0YXRl OwogICAgICAgIHVuc2lnbmVkIGludCBzeW5jX2NvbnRleHQ7CgogICAgICAgIHVuc2lnbmVkIGlu dCBtYXhfc2l6ZTsKCn0gTkVUX1FfU0FNX1NZTkM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX2RlbHRh X2hkcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHR5cGUyOwogICAgICAgIHVuc2lnbmVkIGludCB0YXJnZXRfcmlkOwoKICAgICAgICB1 bnNpZ25lZCBpbnQgdHlwZTM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9kZWx0YTsKCn0gU0FN X0RFTFRBX0hEUjsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fZG9tYWluX2luZm9faW5mbwp7CiAgICAg ICAgVU5JSERSIGhkcl9kb21fbmFtZTsKICAgICAgICBVTklIRFIgaGRyX29lbV9pbmZvOwoKICAg ICAgICBVSU5UNjRfUyBmb3JjZV9sb2dvZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluX3B3 ZF9sZW47CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHdkX2hpc3RvcnlfbGVuOwogICAgICAgIFVJ TlQ2NF9TIG1heF9wd2RfYWdlOwogICAgICAgIFVJTlQ2NF9TIG1pbl9wd2RfYWdlOwogICAgICAg IFVJTlQ2NF9TIGRvbV9tb2RfY291bnQ7CiAgICAgICAgTlRUSU1FIGNyZWF0aW9uX3RpbWU7Cgog ICAgICAgIEJVRkhEUjIgaGRyX3NlY19kZXNjOwogICAgICAgIFVOSUhEUiBoZHJfdW5rbm93bjsK ICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzQwXTsKCiAgICAgICAgVU5JU1RSMiB1bmlf ZG9tX25hbWU7CiAgICAgICAgVU5JU1RSMiBidWZfb2VtX2luZm87CgogICAgICAgIEJVRkZFUjQg YnVmX3NlY19kZXNjOwogICAgICAgIFVOSVNUUjIgYnVmX3Vua25vd247Cgp9IFNBTV9ET01BSU5f SU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fZ3JvdXBfaW5mb19pbmZvCnsKICAgICAgICBVTklI RFIgaGRyX2dycF9uYW1lOwogICAgICAgIERPTV9HSUQgZ2lkOwogICAgICAgIFVOSUhEUiBoZHJf Z3JwX2Rlc2M7CiAgICAgICAgQlVGSERSMiBoZHJfc2VjX2Rlc2M7CiAgICAgICAgdW5zaWduZWQg Y2hhciByZXNlcnZlZFs0OF07CgogICAgICAgIFVOSVNUUjIgdW5pX2dycF9uYW1lOwogICAgICAg IFVOSVNUUjIgdW5pX2dycF9kZXNjOwogICAgICAgIEJVRkZFUjQgYnVmX3NlY19kZXNjOwoKfSBT QU1fR1JPVVBfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fcGFzc3dkX2luZm8KewoKCiAgICAg ICAgdW5zaWduZWQgaW50IHVua18wOwoKICAgICAgICBVTklIRFIgaGRyX2xtX3B3ZDsKICAgICAg ICB1bnNpZ25lZCBjaGFyIGJ1Zl9sbV9wd2RbMTZdOwoKICAgICAgICBVTklIRFIgaGRyX250X3B3 ZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1Zl9udF9wd2RbMTZdOwoKICAgICAgICBVTklIRFIg aGRyX2VtcHR5X2xtOwogICAgICAgIFVOSUhEUiBoZHJfZW1wdHlfbnQ7Cgp9IFNBTV9QV0Q7CgoK dHlwZWRlZiBzdHJ1Y3Qgc2FtX2FjY291bnRfaW5mb19pbmZvCnsKICAgICAgICBVTklIRFIgaGRy X2FjY3RfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKCiAgICAgICAgdW5zaWdu ZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2lnbmVkIGludCBncm91cF9yaWQ7CgogICAgICAg IFVOSUhEUiBoZHJfaG9tZV9kaXI7CiAgICAgICAgVU5JSERSIGhkcl9kaXJfZHJpdmU7CiAgICAg ICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2M7 CiAgICAgICAgVU5JSERSIGhkcl93b3Jrc3RhdGlvbnM7CgogICAgICAgIE5UVElNRSBsb2dvbl90 aW1lOwogICAgICAgIE5UVElNRSBsb2dvZmZfdGltZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGxv Z29uX2RpdnM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sb2dvbl9ocnM7CgogICAgICAgIHVu c2lnbmVkIHNob3J0IGJhZF9wd2RfY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25f Y291bnQ7CiAgICAgICAgTlRUSU1FIHB3ZF9sYXN0X3NldF90aW1lOwogICAgICAgIE5UVElNRSBh Y2N0X2V4cGlyeV90aW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgYWNiX2luZm87CiAgICAgICAg dW5zaWduZWQgY2hhciBudF9wd2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG1fcHdkWzE2 XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG50X3B3ZF9wcmVzZW50OwogICAgICAgIHVuc2lnbmVk IGNoYXIgbG1fcHdkX3ByZXNlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBwd2RfZXhwaXJlZDsK CiAgICAgICAgVU5JSERSIGhkcl9jb21tZW50OwogICAgICAgIFVOSUhEUiBoZHJfcGFyYW1ldGVy czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudHJ5OwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGNvZGVwYWdlOwoKICAgICAgICBCVUZIRFIyIGhkcl9zZWNfZGVzYzsKCiAgICAgICAgVU5JSERS IGhkcl9wcm9maWxlOwogICAgICAgIFVOSUhEUiBoZHJfcmVzZXJ2ZWRbM107CiAgICAgICAgdW5z aWduZWQgaW50IGR3X3Jlc2VydmVkWzRdOwoKCiAgICAgICAgVU5JU1RSMiB1bmlfYWNjdF9uYW1l OwogICAgICAgIFVOSVNUUjIgdW5pX2Z1bGxfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9ob21l X2RpcjsKICAgICAgICBVTklTVFIyIHVuaV9kaXJfZHJpdmU7CiAgICAgICAgVU5JU1RSMiB1bmlf bG9nb25fc2NyaXB0OwogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfZGVzYzsKICAgICAgICBVTklT VFIyIHVuaV93b3Jrc3RhdGlvbnM7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTsKICAg ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjI7CgogICAgICAgIEJVRkZFUjQgYnVmX2xvZ29uX2hy czsKICAgICAgICBVTklTVFIyIHVuaV9jb21tZW50OwogICAgICAgIFVOSVNUUjIgdW5pX3BhcmFt ZXRlcnM7CiAgICAgICAgU0FNX1BXRCBwYXNzOwogICAgICAgIEJVRkZFUjQgYnVmX3NlY19kZXNj OwogICAgICAgIFVOSVNUUjIgdW5pX3Byb2ZpbGU7Cgp9IFNBTV9BQ0NPVU5UX0lORk87CgoKdHlw ZWRlZiBzdHJ1Y3Qgc2FtX2dyb3VwX21lbV9pbmZvX2luZm8KewogICAgICAgIHVuc2lnbmVkIGlu dCBwdHJfcmlkczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2F0dHJpYnM7CiAgICAgICAgdW5z aWduZWQgaW50IG51bV9tZW1iZXJzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5rbm93blsxNl07 CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVtYmVyczI7CiAgICAgICAgdW5zaWduZWQgaW50 ICpyaWRzOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX21lbWJlcnMzOwogICAgICAgIHVuc2ln bmVkIGludCAqYXR0cmliczsKCn0gU0FNX0dST1VQX01FTV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0 IHNhbV9hbGlhc19pbmZvX2luZm8KewogICAgICAgIFVOSUhEUiBoZHJfYWxzX25hbWU7CiAgICAg ICAgdW5zaWduZWQgaW50IGFsc19yaWQ7CiAgICAgICAgQlVGSERSMiBoZHJfc2VjX2Rlc2M7CiAg ICAgICAgVU5JSERSIGhkcl9hbHNfZGVzYzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVk WzQwXTsKCiAgICAgICAgVU5JU1RSMiB1bmlfYWxzX25hbWU7CiAgICAgICAgQlVGRkVSNCBidWZf c2VjX2Rlc2M7CiAgICAgICAgVU5JU1RSMiB1bmlfYWxzX2Rlc2M7Cgp9IFNBTV9BTElBU19JTkZP OwoKCnR5cGVkZWYgc3RydWN0IHNhbV9hbGlhc19tZW1faW5mb19pbmZvCnsKICAgICAgICB1bnNp Z25lZCBpbnQgbnVtX21lbWJlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9tZW1iZXJzOwog ICAgICAgIHVuc2lnbmVkIGNoYXIgdW5rbm93blsxNl07CgogICAgICAgIHVuc2lnbmVkIGludCBu dW1fc2lkczsKICAgICAgICB1bnNpZ25lZCBpbnQgKnB0cl9zaWRzOwogICAgICAgIERPTV9TSUQy ICpzaWRzOwoKfSBTQU1fQUxJQVNfTUVNX0lORk87CgoKCnR5cGVkZWYgc3RydWN0CnsKICAgICAg ICB1bnNpZ25lZCBpbnQgdW5rbm93bjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24yOwog ICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMzsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93 bjQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg Y291bnQzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGludCBw dHIzOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjRiOwogICAgICAgIHVuc2lnbmVkIGlu dCB1bmtub3duNTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjY7CiAgICAgICAgdW5zaWdu ZWQgaW50IHVua25vd243OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duODsKICAgICAgICB1 bnNpZ25lZCBpbnQgdW5rbm93bjk7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xMDsKICAg ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjExOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3du MTI7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTM7CiAgICAgICAgdW5zaWduZWQgaW50 IHVua25vd24xNDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE1OwogICAgICAgIHVuc2ln bmVkIGludCB1bmtub3duMTY7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xNzsKCiAgICAg ICAgdW5zaWduZWQgaW50IGNvdW50NDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE4OwoK ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE5OwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5r bm93bjIwOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyNDsKCiAgICAgICAgVU5JU1RSMiBkb21h aW5fbmFtZTsKICAgICAgICBET01fU0lEMiBkb21haW5fc2lkOwoKfSBTQU1fREVMVEFfRE9NOwoK CnR5cGVkZWYgc3RydWN0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX3NpemU7CiAgICAgICAg U0VDX0RFU0MgKnNlY19kZXNjOwogICAgICAgIERPTV9TSUQyIHNpZDsKICAgICAgICBVTklIRFIg aGRyX2RvbWFpbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24wOwogICAgICAgIHVuc2ln bmVkIGludCB1bmtub3duMTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjI7CgogICAgICAg IHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKCiAgICAg ICAgdW5zaWduZWQgaW50IHVua25vd24zOwogICAgICAgIFVOSVNUUjIgZG9tYWluOwoKfSBTQU1f REVMVEFfVU5LMEU7CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIHVuc2lnbmVkIGludCBidWZf c2l6ZTsKICAgICAgICBTRUNfREVTQyAqc2VjX2Rlc2M7CiAgICAgICAgRE9NX1NJRDIgc2lkOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgcHJpdl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVz ZXJ2ZWQxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMTsKICAgICAgICB1bnNpZ25lZCBpbnQg cHRyMjsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xOwogICAgICAgIHVuc2lnbmVkIGlu dCB1bmtub3duMjsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjM7CiAgICAgICAgdW5zaWdu ZWQgaW50IHVua25vd240OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duNTsKICAgICAgICB1 bnNpZ25lZCBpbnQgdW5rbm93bjY7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd243OwogICAg ICAgIHVuc2lnbmVkIGludCB1bmtub3duODsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjk7 CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHB0 cjM7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xMDsKCiAgICAgICAgdW5zaWduZWQgaW50 IGF0dHJpYnV0ZV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgKmF0dHJpYnV0ZXM7CgogICAg ICAgIHVuc2lnbmVkIGludCBwcml2bGlzdF9jb3VudDsKICAgICAgICBVTklIRFIgKmhkcl9wcml2 c2xpc3Q7CiAgICAgICAgVU5JU1RSMiAqdW5pX3ByaXZzbGlzdDsKCgp9IFNBTV9ERUxUQV9QUklW UzsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1Zl9zaXplOwogICAg ICAgIFNFQ19ERVNDICpzZWNfZGVzYzsKICAgICAgICBVTklTVFIyIHNlY3JldDsKCiAgICAgICAg dW5zaWduZWQgaW50IGNvdW50MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQyOwogICAgICAg IHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgTlRUSU1FIHRpbWUxOwogICAgICAgIHVuc2lnbmVk IGludCBjb3VudDM7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50NDsKICAgICAgICB1bnNpZ25l ZCBpbnQgcHRyMjsKICAgICAgICBOVFRJTUUgdGltZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHVu a25vdzE7CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQg aW50IHB0cjM7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vdzI7CgogICAgICAgIHVuc2lnbmVk IGludCBjaGFsX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQxOwogICAgICAgIHVu c2lnbmVkIGludCBjaGFsX2xlbjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGFsWzE2XTsKCiAg ICAgICAgdW5zaWduZWQgaW50IGtleV9sZW47CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVk MjsKICAgICAgICB1bnNpZ25lZCBpbnQga2V5X2xlbjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBr ZXlbOF07CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTM7CiAgICAgICAgU0VDX0RFU0Mg KnNlY19kZXNjMjsKCn0gU0FNX0RFTFRBX1VOSzEyOwoKCnR5cGVkZWYgc3RydWN0CnsKICAgICAg ICB1bnNpZ25lZCBpbnQgc2VxbnVtOwogICAgICAgIHVuc2lnbmVkIGludCBkb21fbW9kX2NvdW50 X3B0cjsKICAgICAgICBVSU5UNjRfUyBkb21fbW9kX2NvdW50Owp9IFNBTV9ERUxUQV9TVEFNUDsK CnR5cGVkZWYgdW5pb24gc2FtX2RlbHRhX2N0cl9pbmZvCnsKICAgICAgICBTQU1fRE9NQUlOX0lO Rk8gZG9tYWluX2luZm8gOwogICAgICAgIFNBTV9HUk9VUF9JTkZPIGdyb3VwX2luZm8gOwogICAg ICAgIFNBTV9BQ0NPVU5UX0lORk8gYWNjb3VudF9pbmZvOwogICAgICAgIFNBTV9HUk9VUF9NRU1f SU5GTyBncnBfbWVtX2luZm87CiAgICAgICAgU0FNX0FMSUFTX0lORk8gYWxpYXNfaW5mbyA7CiAg ICAgICAgU0FNX0FMSUFTX01FTV9JTkZPIGFsc19tZW1faW5mbzsKICAgICAgICBTQU1fREVMVEFf RE9NIGRvbV9pbmZvOwogICAgICAgIFNBTV9ERUxUQV9QUklWUyBwcml2c19pbmZvOwogICAgICAg IFNBTV9ERUxUQV9TVEFNUCBzdGFtcDsKICAgICAgICBTQU1fREVMVEFfVU5LMEUgdW5rMGVfaW5m bzsKICAgICAgICBTQU1fREVMVEFfVU5LMTIgdW5rMTJfaW5mbzsKfSBTQU1fREVMVEFfQ1RSOwoK CnR5cGVkZWYgc3RydWN0IG5ldF9yX3NhbV9zeW5jX2luZm8KewogICAgICAgIERPTV9DUkVEIHNy dl9jcmVkczsKCiAgICAgICAgdW5zaWduZWQgaW50IHN5bmNfY29udGV4dDsKCiAgICAgICAgdW5z aWduZWQgaW50IHB0cl9kZWx0YXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9kZWx0YXM7CiAg ICAgICAgdW5zaWduZWQgaW50IHB0cl9kZWx0YXMyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1f ZGVsdGFzMjsKCiAgICAgICAgU0FNX0RFTFRBX0hEUiAqaGRyX2RlbHRhczsKICAgICAgICBTQU1f REVMVEFfQ1RSICpkZWx0YXM7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBORVRfUl9TQU1f U1lOQzsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcV9zYW1fZGVsdGFzX2luZm8KewogICAgICAgIFVO SVNUUjIgdW5pX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2NsaV9uYW1lOwogICAgICAg IERPTV9DUkVEIGNsaV9jcmVkczsKICAgICAgICBET01fQ1JFRCByZXRfY3JlZHM7CgogICAgICAg IHVuc2lnbmVkIGludCBkYXRhYmFzZV9pZDsKICAgICAgICBVSU5UNjRfUyBkb21fbW9kX2NvdW50 OwoKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7Cgp9IE5FVF9RX1NBTV9ERUxUQVM7CgoK dHlwZWRlZiBzdHJ1Y3QgbmV0X3Jfc2FtX2RlbHRhc19pbmZvCnsKICAgICAgICBET01fQ1JFRCBz cnZfY3JlZHM7CgogICAgICAgIFVJTlQ2NF9TIGRvbV9tb2RfY291bnQ7CgogICAgICAgIHVuc2ln bmVkIGludCBwdHJfZGVsdGFzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZGVsdGFzOwogICAg ICAgIHVuc2lnbmVkIGludCBudW1fZGVsdGFzMjsKCiAgICAgICAgU0FNX0RFTFRBX0hEUiAqaGRy X2RlbHRhczsKICAgICAgICBTQU1fREVMVEFfQ1RSICpkZWx0YXM7CgogICAgICAgIE5UU1RBVFVT IHN0YXR1czsKfSBORVRfUl9TQU1fREVMVEFTOwojIDI4MCAiaW5jbHVkZS9udGRvbWFpbi5oIiAy CiMgMSAiaW5jbHVkZS9ycGNfcmVnLmgiIDEKIyA3OCAiaW5jbHVkZS9ycGNfcmVnLmgiCnR5cGVk ZWYgc3RydWN0IHFfcmVnX29wZW5faGtjcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd25fMDsKICAgICAgICB1bnNpZ25lZCBzaG9y dCB1bmtub3duXzE7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwoKfSBSRUdfUV9PUEVOX0hL Q1IgOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX29wZW5faGtjcl9pbmZvCnsKICAgICAgICBQT0xJ Q1lfSE5EIHBvbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFJFR19SX09QRU5fSEtDUjsK CgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfb3Blbl9oa2xtX2luZm8KewogICAgICAgIHVuc2lnbmVk IGludCBwdHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHVua25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9 ClJFR19RX09QRU5fSEtMTTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19vcGVuX2hrbG1faW5mbwp7 CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfQpSRUdf Ul9PUEVOX0hLTE07CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX29wZW5faGt1X2luZm8KewogICAg ICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2 ZWw7Cgp9IFJFR19RX09QRU5fSEtVOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX29wZW5faGt1X2lu Zm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g UkVHX1JfT1BFTl9IS1U7CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX29wZW5fZmx1c2hfa2V5X2lu Zm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKfSBSRUdfUV9GTFVTSF9LRVk7CgoKdHlwZWRl ZiBzdHJ1Y3Qgcl9yZWdfb3Blbl9mbHVzaF9rZXlfaW5mbwp7CiAgICAgICAgTlRTVEFUVVMgc3Rh dHVzOwoKfSBSRUdfUl9GTFVTSF9LRVk7CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX3NldF9rZXlf c2VjX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNpZ25lZCBpbnQg c2VjX2luZm87CgogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgQlVGSERSIGhkcl9z ZWM7CiAgICAgICAgU0VDX0RFU0NfQlVGICpkYXRhOwoKfSBSRUdfUV9TRVRfS0VZX1NFQzsKCgp0 eXBlZGVmIHN0cnVjdCByX3JlZ19zZXRfa2V5X3NlY19pbmZvCnsKICAgICAgICBOVFNUQVRVUyBz dGF0dXM7Cgp9IFJFR19SX1NFVF9LRVlfU0VDOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3JlZ19nZXRf a2V5X3NlY19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQg aW50IHNlY19pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEJVRkhEUiBo ZHJfc2VjOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCn0gUkVHX1FfR0VUX0tFWV9TRUM7 CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfZ2V0X2tleV9zZWNfaW5mbwp7CiAgICAgICAgdW5zaWdu ZWQgaW50IHNlY19pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEJVRkhE UiBoZHJfc2VjOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCiAgICAgICAgTlRTVEFUVVMg c3RhdHVzOwoKfSBSRUdfUl9HRVRfS0VZX1NFQzsKCgp0eXBlZGVmIHN0cnVjdCBxX3JlZ19jcmVh dGVfdmFsdWVfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIFVOSUhEUiBo ZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQg dHlwZTsKCiAgICAgICAgQlVGRkVSMyAqYnVmX3ZhbHVlOwoKfSBSRUdfUV9DUkVBVEVfVkFMVUU7 CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfY3JlYXRlX3ZhbHVlX2luZm8KewogICAgICAgIE5UU1RB VFVTIHN0YXR1czsKCn0gUkVHX1JfQ1JFQVRFX1ZBTFVFOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVn X3F1ZXJ5X3ZhbHVlX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNp Z25lZCBpbnQgdmFsX2luZGV4OwoKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5J U1RSMiB1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlOwogICAgICAgIHVu c2lnbmVkIGludCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3ZhbHVlOwogICAgICAg IEJVRkZFUjIgYnVmX3ZhbHVlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMTsKICAgICAgICB1 bnNpZ25lZCBpbnQgbGVuX3ZhbHVlMTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjI7CiAgICAg ICAgdW5zaWduZWQgaW50IGxlbl92YWx1ZTI7Cgp9IFJFR19RX0VOVU1fVkFMVUU7CgoKdHlwZWRl ZiBzdHJ1Y3Qgcl9yZWdfZW51bV92YWx1ZV9pbmZvCnsKICAgICAgICBVTklIRFIgaGRyX25hbWU7 CiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBl OwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Zh bHVlOwogICAgICAgIEJVRkZFUjIgKmJ1Zl92YWx1ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0 cjE7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbl92YWx1ZTE7CgogICAgICAgIHVuc2lnbmVkIGlu dCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5fdmFsdWUyOwoKICAgICAgICBOVFNUQVRV UyBzdGF0dXM7Cgp9IFJFR19SX0VOVU1fVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfY3Jl YXRlX2tleV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBudF9wb2w7CgogICAgICAgIFVOSUhE UiBoZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKICAgICAgICBVTklIRFIgaGRy X2NsYXNzOwogICAgICAgIFVOSVNUUjIgdW5pX2NsYXNzOwoKICAgICAgICB1bnNpZ25lZCBpbnQg cmVzZXJ2ZWQ7CiAgICAgICAgU0VDX0FDQ0VTUyBzYW1fYWNjZXNzOwoKICAgICAgICB1bnNpZ25l ZCBpbnQgcHRyMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87CgogICAgICAgIHVuc2ln bmVkIGludCBwdHIyOwogICAgICAgIEJVRkhEUiBoZHJfc2VjOwogICAgICAgIHVuc2lnbmVkIGlu dCBwdHIzOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCiAgICAgICAgdW5zaWduZWQgaW50 IHVua25vd25fMjsKCn0gUkVHX1FfQ1JFQVRFX0tFWTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19j cmVhdGVfa2V5X2luZm8KewogICAgICAgIFBPTElDWV9ITkQga2V5X3BvbDsKICAgICAgICB1bnNp Z25lZCBpbnQgdW5rbm93bjsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9DUkVB VEVfS0VZOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX2RlbGV0ZV9rZXlfaW5mbwp7CiAgICAgICAg UE9MSUNZX0hORCBwbnRfcG9sOwoKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5J U1RSMiB1bmlfbmFtZTsKfSBSRUdfUV9ERUxFVEVfS0VZOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVn X2RlbGV0ZV9rZXlfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBrZXlfcG9sOwoKICAgICAgICBO VFNUQVRVUyBzdGF0dXM7Cgp9IFJFR19SX0RFTEVURV9LRVk7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9y ZWdfZGVsZXRlX3ZhbF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBudF9wb2w7CgogICAgICAg IFVOSUhEUiBoZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKfSBSRUdfUV9ERUxF VEVfVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfZGVsZXRlX3ZhbF9pbmZvCnsKICAgICAg ICBQT0xJQ1lfSE5EIGtleV9wb2w7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gUkVHX1Jf REVMRVRFX1ZBTFVFOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX3F1ZXJ5X2luZm8KewogICAgICAg IFBPTElDWV9ITkQgcG9sOwogICAgICAgIFVOSUhEUiBoZHJfY2xhc3M7CiAgICAgICAgVU5JU1RS MiB1bmlfY2xhc3M7Cgp9IFJFR19RX1FVRVJZX0tFWTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19x dWVyeV9rZXlfaW5mbwp7CiAgICAgICAgVU5JSERSIGhkcl9jbGFzczsKICAgICAgICBVTklTVFIy IHVuaV9jbGFzczsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9zdWJrZXlzOwogICAgICAgIHVu c2lnbmVkIGludCBtYXhfc3Via2V5bGVuOwogICAgICAgIHVuc2lnbmVkIGludCBtYXhfc3Via2V5 c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3ZhbHVlczsKICAgICAgICB1bnNpZ25lZCBp bnQgbWF4X3ZhbG5hbWVsZW47CiAgICAgICAgdW5zaWduZWQgaW50IG1heF92YWxidWZzaXplOwog ICAgICAgIHVuc2lnbmVkIGludCBzZWNfZGVzYzsKICAgICAgICBOVFRJTUUgbW9kX3RpbWU7Cgog ICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gUkVHX1JfUVVFUllfS0VZOwoKCgp0eXBlZGVmIHN0 cnVjdCBxX3JlZ191bmtfMWFfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7Cgp9IFJFR19R X1VOS18xQTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ191bmtfMWFfaW5mbwp7CiAgICAgICAgdW5z aWduZWQgaW50IHVua25vd247CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9VTktf MUE7CgoKCnR5cGVkZWYgc3RydWN0IHJlZ19xX2Nsb3NlX2luZm8KewogICAgICAgIFBPTElDWV9I TkQgcG9sOwoKfSBSRUdfUV9DTE9TRTsKCgp0eXBlZGVmIHN0cnVjdCByZWdfcl9jbG9zZV9pbmZv CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBS RUdfUl9DTE9TRTsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfZW51bV92YWx1ZV9pbmZvCnsKICAg ICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQgaW50IGtleV9pbmRleDsKCiAg ICAgICAgdW5zaWduZWQgc2hvcnQga2V5X25hbWVfbGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHVua25vd25fMTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjE7CiAgICAgICAgdW5zaWduZWQg aW50IHVua25vd25fMjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZDFbOF07CgogICAgICAgIHVu c2lnbmVkIGludCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkMls4XTsKCiAgICAgICAg dW5zaWduZWQgaW50IHB0cjM7CiAgICAgICAgTlRUSU1FIHRpbWU7Cgp9IFJFR19RX0VOVU1fS0VZ OwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX2VudW1fa2V5X2luZm8KewogICAgICAgIHVuc2lnbmVk IHNob3J0IGtleV9uYW1lX2xlbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzE7Cgog ICAgICAgIHVuc2lnbmVkIGludCBwdHIxOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzI7 CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgVU5JU1RSMyBrZXlfbmFt ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYWQy WzhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMzsKICAgICAgICBOVFRJTUUgdGltZTsKCiAg ICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9FTlVNX0tFWTsKCgoKdHlwZWRlZiBzdHJ1 Y3QgcV9yZWdfaW5mb19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgVU5J SERSIGhkcl90eXBlOwogICAgICAgIFVOSVNUUjIgdW5pX3R5cGU7CgogICAgICAgIHVuc2lnbmVk IGludCBwdHJfcmVzZXJ2ZWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBwdHJfYnVmOwogICAgICAg IHVuc2lnbmVkIGludCBwdHJfYnVmc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX3VuazsKCiAgICAgICAgdW5zaWduZWQgaW50IHVuazE7 CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9idWZsZW47CiAgICAgICAgdW5zaWduZWQgaW50IGJ1 ZmxlbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9idWZsZW4yOwogICAgICAgIHVuc2lnbmVk IGludCBidWZsZW4yOwoKfSBSRUdfUV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX2luZm9f aW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlOwogICAgICAgIHVuc2lnbmVkIGlu dCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VuaV92YWw7CiAgICAgICAgQlVGRkVS MiAqdW5pX3ZhbDsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9tYXhfbGVuOwogICAgICAgIHVu c2lnbmVkIGludCBidWZfbWF4X2xlbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sZW47CiAg ICAgICAgdW5zaWduZWQgaW50IGJ1Zl9sZW47CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g UkVHX1JfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfb3Blbl9lbnRyeV9pbmZvCnsKICAg ICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgVU5JSERSIGhkcl9uYW1lOwogICAgICAgIFVO SVNUUjIgdW5pX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7CiAgICAgICAg dW5zaWduZWQgaW50IHVua25vd25fMTsKCn0gUkVHX1FfT1BFTl9FTlRSWTsKCgoKCnR5cGVkZWYg c3RydWN0IHJfcmVnX29wZW5fZW50cnlfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAg ICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9PUEVOX0VOVFJZOwoKCnR5cGVkZWYgc3Ry dWN0IHFfcmVnX3NodXRkb3duX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAg ICAgICB1bnNpZ25lZCBpbnQgcHRyXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl8yOwogICAg ICAgIFVOSUhEUiBoZHJfbXNnOwogICAgICAgIFVOSVNUUjIgdW5pX21zZzsKICAgICAgICB1bnNp Z25lZCBpbnQgdGltZW91dDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmbGFnczsKCn0gUkVHX1Ff U0hVVERPV047CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfc2h1dGRvd25faW5mbwp7CiAgICAgICAg TlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9TSFVURE9XTjsKCgp0eXBlZGVmIHN0cnVjdCBxX3Jl Z19hYm9ydF9zaHV0ZG93bl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NlcnZlcjsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXJ2ZXI7Cgp9IFJFR19RX0FCT1JUX1NIVVRET1dOOwoK CnR5cGVkZWYgc3RydWN0IHJfcmVnX2Fib3J0X3NodXRkb3duX2luZm8KewogICAgICAgIE5UU1RB VFVTIHN0YXR1czsKCn0gUkVHX1JfQUJPUlRfU0hVVERPV047CiMgMjgxICJpbmNsdWRlL250ZG9t YWluLmgiIDIKIyAxICJpbmNsdWRlL3JwY19zYW1yLmgiIDEKIyAyOSAiaW5jbHVkZS9ycGNfc2Ft ci5oIgojIDEgImluY2x1ZGUvcnBjX21pc2MuaCIgMQojIDMwICJpbmNsdWRlL3JwY19zYW1yLmgi IDIKIyAxNTAgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgX0RJU1BfVVNFUl9J TkZPIHsKICAgICAgICBTQU1fQUNDT1VOVCAqc2FtOwp9IERJU1BfVVNFUl9JTkZPOwoKdHlwZWRl ZiBzdHJ1Y3QgX0RJU1BfR1JPVVBfSU5GTyB7CiAgICAgICAgRE9NQUlOX0dSUCAqZ3JwOwp9IERJ U1BfR1JPVVBfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBsb2dvbl9ob3Vyc19pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaG91cnNbMzJdOwoKfSBM T0dPTl9IUlM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18yMwp7CgogICAgICAgIE5U VElNRSBsb2dvbl90aW1lOwogICAgICAgIE5UVElNRSBsb2dvZmZfdGltZTsKICAgICAgICBOVFRJ TUUga2lja29mZl90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2xhc3Rfc2V0X3RpbWU7CiAgICAg ICAgTlRUSU1FIHBhc3NfY2FuX2NoYW5nZV90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX211c3Rf Y2hhbmdlX3RpbWU7CgogICAgICAgIFVOSUhEUiBoZHJfdXNlcl9uYW1lOwogICAgICAgIFVOSUhE UiBoZHJfZnVsbF9uYW1lOwogICAgICAgIFVOSUhEUiBoZHJfaG9tZV9kaXI7CiAgICAgICAgVU5J SERSIGhkcl9kaXJfZHJpdmU7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAgICAg ICAgVU5JSERSIGhkcl9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2Mg OwogICAgICAgIFVOSUhEUiBoZHJfd29ya3N0YXRpb25zOwogICAgICAgIFVOSUhEUiBoZHJfdW5r bm93bl9zdHIgOwogICAgICAgIFVOSUhEUiBoZHJfbXVuZ2VkX2RpYWwgOwoKICAgICAgICB1bnNp Z25lZCBjaGFyIGxtX3B3ZFsxNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBudF9wd2RbMTZdOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9yaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3Vw X3JpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjYl9pbmZvOwoKICAgICAgICB1bnNpZ25lZCBp bnQgdW5rbm93bl8zOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsb2dvbl9kaXZzOwoKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyX2xvZ29uX2hyczsKCiAgICAgICAgdW5zaWduZWQgY2hhciBwYWRk aW5nMVs4XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNTsKCiAgICAgICAgdW5zaWdu ZWQgY2hhciBwYXNzWzUxNl07CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAg ICBVTklTVFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAg ICAgICAgVU5JU1RSMiB1bmlfZGlyX2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3Nj cmlwdDsKICAgICAgICBVTklTVFIyIHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1 bmlfYWNjdF9kZXNjIDsKICAgICAgICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAg VU5JU1RSMiB1bmlfdW5rbm93bl9zdHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFs IDsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBpbnQg cGFkZGluZzQ7CgogICAgICAgIExPR09OX0hSUyBsb2dvbl9ocnM7Cgp9IFNBTV9VU0VSX0lORk9f MjM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18yNAp7CiAgICAgICAgdW5zaWduZWQg Y2hhciBwYXNzWzUxNl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHdfbGVuOwp9IFNBTV9VU0VS X0lORk9fMjQ7CiMgMjQwICJpbmNsdWRlL3JwY19zYW1yLmgiCnR5cGVkZWYgc3RydWN0IHNhbV91 c2VyX2luZm9fMjUKewoKICAgICAgICBOVFRJTUUgbG9nb25fdGltZTsKICAgICAgICBOVFRJTUUg bG9nb2ZmX3RpbWU7CiAgICAgICAgTlRUSU1FIGtpY2tvZmZfdGltZTsKICAgICAgICBOVFRJTUUg cGFzc19sYXN0X3NldF90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsK ICAgICAgICBOVFRJTUUgcGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBVTklIRFIgaGRy X3VzZXJfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKICAgICAgICBVTklIRFIg aGRyX2hvbWVfZGlyOwogICAgICAgIFVOSUhEUiBoZHJfZGlyX2RyaXZlOwogICAgICAgIFVOSUhE UiBoZHJfbG9nb25fc2NyaXB0OwogICAgICAgIFVOSUhEUiBoZHJfcHJvZmlsZV9wYXRoOwogICAg ICAgIFVOSUhEUiBoZHJfYWNjdF9kZXNjIDsKICAgICAgICBVTklIRFIgaGRyX3dvcmtzdGF0aW9u czsKICAgICAgICBVTklIRFIgaGRyX3Vua25vd25fc3RyIDsKICAgICAgICBVTklIRFIgaGRyX211 bmdlZF9kaWFsIDsKCiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9wd2RbMTZdOwogICAgICAgIHVu c2lnbmVkIGNoYXIgbnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwog ICAgICAgIHVuc2lnbmVkIGludCBncm91cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2Jf aW5mbzsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNls2XTsKCiAgICAgICAgdW5zaWdu ZWQgY2hhciBwYXNzWzUzMl07CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAg ICBVTklTVFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAg ICAgICAgVU5JU1RSMiB1bmlfZGlyX2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3Nj cmlwdDsKICAgICAgICBVTklTVFIyIHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1 bmlfYWNjdF9kZXNjIDsKICAgICAgICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAg VU5JU1RSMiB1bmlfdW5rbm93bl9zdHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFs IDsKfSBTQU1fVVNFUl9JTkZPXzI1OwoKCgp0eXBlZGVmIHN0cnVjdCBzYW1fdXNlcl9pbmZvXzIx CnsKICAgICAgICBOVFRJTUUgbG9nb25fdGltZTsKICAgICAgICBOVFRJTUUgbG9nb2ZmX3RpbWU7 CiAgICAgICAgTlRUSU1FIGtpY2tvZmZfdGltZTsKICAgICAgICBOVFRJTUUgcGFzc19sYXN0X3Nl dF90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsKICAgICAgICBOVFRJ TUUgcGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBVTklIRFIgaGRyX3VzZXJfbmFtZTsK ICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2hvbWVfZGly OwogICAgICAgIFVOSUhEUiBoZHJfZGlyX2RyaXZlOwogICAgICAgIFVOSUhEUiBoZHJfbG9nb25f c2NyaXB0OwogICAgICAgIFVOSUhEUiBoZHJfcHJvZmlsZV9wYXRoOwogICAgICAgIFVOSUhEUiBo ZHJfYWNjdF9kZXNjIDsKICAgICAgICBVTklIRFIgaGRyX3dvcmtzdGF0aW9uczsKICAgICAgICBV TklIRFIgaGRyX3Vua25vd25fc3RyIDsKICAgICAgICBVTklIRFIgaGRyX211bmdlZF9kaWFsIDsK CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9wd2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg bnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2ln bmVkIGludCBncm91cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2JfaW5mbzsKCiAgICAg ICAgdW5zaWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25f ZGl2czsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sb2dvbl9ocnM7CgogICAgICAgIHVuc2ln bmVkIGludCB1bmtub3duXzU7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZzFbOF07Cgog ICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9mdWxsX25h bWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAgICAgICAgVU5JU1RSMiB1bmlfZGly X2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3NjcmlwdDsKICAgICAgICBVTklTVFIy IHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfYWNjdF9kZXNjIDsKICAgICAg ICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAgVU5JU1RSMiB1bmlfdW5rbm93bl9z dHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFsIDsKCiAgICAgICAgdW5zaWduZWQg aW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFkZGluZzQ7CgogICAgICAgIExP R09OX0hSUyBsb2dvbl9ocnM7Cgp9IFNBTV9VU0VSX0lORk9fMjE7CgoKCnR5cGVkZWYgc3RydWN0 IHNhbV91c2VyX2luZm9fMjAKewogICAgICAgIFVOSUhEUiBoZHJfbXVuZ2VkX2RpYWwgOwoKICAg ICAgICBVTklTVFIyIHVuaV9tdW5nZWRfZGlhbCA7Cgp9IFNBTV9VU0VSX0lORk9fMjA7CgoKdHlw ZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18xMgp7CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9w d2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWdu ZWQgY2hhciBsbV9wd2RfYWN0aXZlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnRfcHdkX2FjdGl2 ZTsKCn0gU0FNX1VTRVJfSU5GT18xMjsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fdXNlcl9pbmZvXzEx CnsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfMFsxNl07CiAgICAgICAgTlRUSU1FIGV4 cGlyeTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfMVsyNF07CgogICAgICAgIFVOSUhE UiBoZHJfbWFjaF9hY2N0OwogICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nXzI7CgogICAgICAg IHVuc2lnbmVkIGludCBwdHJfMTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfM1szMl07 CiAgICAgICAgdW5zaWduZWQgaW50IHBhZGRpbmdfNDsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0 cl8yOwogICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nXzU7CgogICAgICAgIHVuc2lnbmVkIGlu dCBwdHJfMzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfNlszMl07CgogICAgICAgIHVu c2lnbmVkIGludCByaWRfdXNlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmlkX2dyb3VwOwoKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBhY2N0X2N0cmw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r bm93bl8zOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzQ7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgdW5rbm93bl81OwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfN1sxNl07 CiAgICAgICAgdW5zaWduZWQgaW50IHBhZGRpbmdfODsKCiAgICAgICAgVU5JU1RSMiB1bmlfbWFj aF9hY2N0OwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfOVs0OF07Cgp9IFNBTV9VU0VS X0lORk9fMTE7CgoKCnR5cGVkZWYgc3RydWN0IHNhbV91c2VyX2luZm9fMTAKewogICAgICAgIHVu c2lnbmVkIGludCBhY2JfaW5mbzsKCn0gU0FNX1VTRVJfSU5GT18xMDsKCgoKCnR5cGVkZWYgc3Ry dWN0IHFfc2Ftcl9jbG9zZV9obmRfaW5mbwp7CiAgICBQT0xJQ1lfSE5EIHBvbDsKCn0gU0FNUl9R X0NMT1NFX0hORDsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2Nsb3NlX2huZF9pbmZvCnsKICAg ICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9D TE9TRV9ITkQ7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfdXNyZG9tX3B3aW5mb19pbmZv CnsKICAgICAgICBQT0xJQ1lfSE5EIHVzZXJfcG9sOwoKfSBTQU1SX1FfR0VUX1VTUkRPTV9QV0lO Rk87CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfdXNyZG9tX3B3aW5mb19pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r bm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzI7CiAgICAgICAgTlRTVEFUVVMg c3RhdHVzOwoKfSBTQU1SX1JfR0VUX1VTUkRPTV9QV0lORk87CgoKCgoKCgp0eXBlZGVmIHN0cnVj dCBxX3NhbXJfcXVlcnlfc2VjX29ial9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHVzZXJfcG9s OwogICAgICAgIHVuc2lnbmVkIGludCBzZWNfaW5mbzsKCn0gU0FNUl9RX1FVRVJZX1NFQ19PQko7 CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X3NlY19vYmpfaW5mbwp7CiAgICAgICAgdW5z aWduZWQgaW50IHB0cjsKICAgICAgICBTRUNfREVTQ19CVUYgKmJ1ZjsKCiAgICAgICAgTlRTVEFU VVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfU0VDX09CSjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0 IHFfc2Ftcl9xdWVyeV9kb21haW5faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBkb21haW5fcG9s OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKCn0gU0FNUl9RX1FVRVJZX0RP TUFJTl9JTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb18zX2luZm8KewogICAg ICAgIE5UVElNRSBsb2dvdXQ7CgoKCgp9IFNBTV9VTktfSU5GT18zOwoKdHlwZWRlZiBzdHJ1Y3Qg c2FtX3Vua25vd25faW5mb182X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7 CgogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRp bmdbMTJdOwoKfSBTQU1fVU5LX0lORk9fNjsKCnR5cGVkZWYgc3RydWN0IHNhbV91bmtub3duX2lu Zm9fN19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzA7Cgp9IFNBTV9VTktf SU5GT183OwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb18xMl9pbmYKewogICAgICAg IE5UVElNRSBkdXJhdGlvbjsKICAgICAgICBOVFRJTUUgcmVzZXRfY291bnQ7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgYmFkX2F0dGVtcHRfbG9ja291dDsKCn0gU0FNX1VOS19JTkZPXzEyOwoKdHlw ZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb181X2luZgp7CiAgICAgICAgVU5JSERSIGhkcl9z ZXJ2ZXI7CiAgICAgICAgVU5JU1RSMiB1bmlfc2VydmVyOwoKfSBTQU1fVU5LX0lORk9fNTsKCnR5 cGVkZWYgc3RydWN0IHNhbV91bmtub3duX2luZm9fMl9pbmYKewogICAgICAgIHVuc2lnbmVkIGlu dCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fMTsKICAgICAgICB1bnNp Z25lZCBpbnQgdW5rbm93bl8yOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzA7CiAgICAgICAg VU5JSERSIGhkcl9kb21haW47CiAgICAgICAgVU5JSERSIGhkcl9zZXJ2ZXI7CgoKCgoKICAgICAg ICB1bnNpZ25lZCBpbnQgc2VxX251bTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl8zOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl80OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtu b3duXzU7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBp bnQgbnVtX2RvbWFpbl91c3JzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZG9tYWluX2dycHM7 CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9sb2NhbF9ncnBzOwoKICAgICAgICB1bnNpZ25lZCBj aGFyIHBhZGRpbmdbMTJdOwoKICAgICAgICBVTklTVFIyIHVuaV9kb21haW47CiAgICAgICAgVU5J U1RSMiB1bmlfc2VydmVyOwoKfSBTQU1fVU5LX0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IHNhbV91 bmtub3duX2luZm9fMV9pbmYKewogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbl9sZW5ndGhfcGFz c3dvcmQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFzc3dvcmRfaGlzdG9yeTsKICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZzsKICAgICAgICBOVFRJTUUgZXhwaXJlOwogICAgICAgIE5UVElNRSBt aW5fcGFzc3dvcmRhZ2U7Cgp9IFNBTV9VTktfSU5GT18xOwoKCnR5cGVkZWYgc3RydWN0IHNhbV91 bmtub3duX2N0cl9pbmZvCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAg IFNBTV9VTktfSU5GT18xIGluZjE7CiAgICAgICAgICAgICAgICBTQU1fVU5LX0lORk9fMiBpbmYy OwogICAgICAgICAgICAgICAgU0FNX1VOS19JTkZPXzMgaW5mMzsKICAgICAgICAgICAgICAgIFNB TV9VTktfSU5GT181IGluZjU7CiAgICAgICAgICAgICAgICBTQU1fVU5LX0lORk9fNiBpbmY2Owog ICAgICAgICAgICAgICAgU0FNX1VOS19JTkZPXzcgaW5mNzsKICAgICAgICAgICAgICAgIFNBTV9V TktfSU5GT18xMiBpbmYxMjsKCiAgICAgICAgfSBpbmZvOwoKfSBTQU1fVU5LX0NUUjsKCgoKdHlw ZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X2RvbWFpbl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBp bnQgcHRyXzA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNoX3ZhbHVlOwoKICAgICAgICBT QU1fVU5LX0NUUiAqY3RyOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVS WV9ET01BSU5fSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2xvb2t1cF9kb21haW5faW5m bwp7CiAgICAgICAgUE9MSUNZX0hORCBjb25uZWN0X3BvbDsKCiAgICAgICAgVU5JSERSIGhkcl9k b21haW47CiAgICAgICAgVU5JU1RSMiB1bmlfZG9tYWluOwoKfSBTQU1SX1FfTE9PS1VQX0RPTUFJ TjsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2xvb2t1cF9kb21haW5faW5mbwp7CiAgICAgICAg dW5zaWduZWQgaW50IHB0cl9zaWQ7CiAgICAgICAgRE9NX1NJRDIgZG9tX3NpZDsKCiAgICAgICAg TlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfTE9PS1VQX0RPTUFJTjsKIyA2MzIgImluY2x1ZGUv cnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX29wZW5fZG9tYWluX2luZm8KewogICAg ICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBE T01fU0lEMiBkb21fc2lkOwoKfSBTQU1SX1FfT1BFTl9ET01BSU47CgoKCnR5cGVkZWYgc3RydWN0 IHJfc2Ftcl9vcGVuX2RvbWFpbl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGRvbWFpbl9wb2w7 CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfT1BFTl9ET01BSU47CgoKCnR5cGVk ZWYgc3RydWN0IHNhbXJfZW50cnlfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKICAg ICAgICBVTklIRFIgaGRyX25hbWU7Cgp9IFNBTV9FTlRSWTsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9z YW1yX2VudW1fZG9tYWluc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAg dW5zaWduZWQgaW50IHN0YXJ0X2lkeDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7Cgp9 IFNBTVJfUV9FTlVNX0RPTUFJTlM7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2VudW1fZG9tYWlu c19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pZHg7CiAgICAgICAgdW5zaWduZWQg aW50IHB0cl9lbnRyaWVzMTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKICAg ICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVt X2VudHJpZXMzOwoKICAgICAgICBTQU1fRU5UUlkgKnNhbTsKICAgICAgICBVTklTVFIyICp1bmlf ZG9tX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczQ7CgogICAgICAgIE5U U1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0VOVU1fRE9NQUlOUzsKCgp0eXBlZGVmIHN0cnVjdCBx X3NhbXJfZW51bV9kb21fdXNlcnNfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAg ICAgIHVuc2lnbmVkIGludCBzdGFydF9pZHg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYWNiX21h c2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8xOwoKICAgICAgICB1bnNpZ25lZCBp bnQgbWF4X3NpemU7Cgp9IFNBTVJfUV9FTlVNX0RPTV9VU0VSUzsKCgoKdHlwZWRlZiBzdHJ1Y3Qg cl9zYW1yX2VudW1fZG9tX3VzZXJzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2lk eDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMxOwoKICAgICAgICB1bnNpZ25lZCBp bnQgbnVtX2VudHJpZXMyOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZW50cmllczI7CgogICAg ICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczM7CgogICAgICAgIFNBTV9FTlRSWSAqc2FtOwog ICAgICAgIFVOSVNUUjIgKnVuaV9hY2N0X25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1f ZW50cmllczQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0VOVU1fRE9NX1VT RVJTOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZW51bV9kb21fZ3JvdXBzX2luZm8KewogICAg ICAgIFBPTElDWV9ITkQgcG9sOwoKCiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X2lkeDsKCiAg ICAgICAgdW5zaWduZWQgaW50IG1heF9zaXplOwoKfSBTQU1SX1FfRU5VTV9ET01fR1JPVVBTOwoK Cgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfZW51bV9kb21fZ3JvdXBzX2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBuZXh0X2lkeDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMxOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwogICAgICAgIHVuc2lnbmVkIGludCBw dHJfZW50cmllczI7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczM7CgogICAgICAg IFNBTV9FTlRSWSAqc2FtOwogICAgICAgIFVOSVNUUjIgKnVuaV9ncnBfbmFtZTsKCiAgICAgICAg dW5zaWduZWQgaW50IG51bV9lbnRyaWVzNDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBT QU1SX1JfRU5VTV9ET01fR1JPVVBTOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZW51bV9kb21f YWxpYXNlc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCgogICAgICAgIHVuc2lnbmVk IGludCBzdGFydF9pZHg7CgogICAgICAgIHVuc2lnbmVkIGludCBtYXhfc2l6ZTsKCn0gU0FNUl9R X0VOVU1fRE9NX0FMSUFTRVM7CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9lbnVtX2RvbV9hbGlh c2VzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2lkeDsKICAgICAgICB1bnNpZ25l ZCBpbnQgcHRyX2VudHJpZXMxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwog ICAgICAgIHVuc2lnbmVkIGludCBwdHJfZW50cmllczI7CgogICAgICAgIHVuc2lnbmVkIGludCBu dW1fZW50cmllczM7CgogICAgICAgIFNBTV9FTlRSWSAqc2FtOwogICAgICAgIFVOSVNUUjIgKnVu aV9ncnBfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzNDsKCiAgICAgICAg TlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfRU5VTV9ET01fQUxJQVNFUzsKCgoKCnR5cGVkZWYg c3RydWN0IHNhbXJfZW50cnlfaW5mbzEKewogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX2lkeDsK CiAgICAgICAgdW5zaWduZWQgaW50IHJpZF91c2VyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGFj Yl9pbmZvOwoKICAgICAgICBVTklIRFIgaGRyX2FjY3RfbmFtZTsKICAgICAgICBVTklIRFIgaGRy X3VzZXJfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX3VzZXJfZGVzYzsKCn0gU0FNX0VOVFJZMTsK CnR5cGVkZWYgc3RydWN0IHNhbXJfc3RyX2VudHJ5X2luZm8xCnsKICAgICAgICBVTklTVFIyIHVu aV9hY2N0X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfZnVsbF9uYW1lOwogICAgICAgIFVOSVNU UjIgdW5pX2FjY3RfZGVzYzsKCn0gU0FNX1NUUjE7Cgp0eXBlZGVmIHN0cnVjdCBzYW1fZW50cnlf aW5mb18xCnsKICAgICAgICBTQU1fRU5UUlkxICpzYW07CiAgICAgICAgU0FNX1NUUjEgKnN0cjsK Cn0gU0FNX0RJU1BJTkZPXzE7CgoKCgp0eXBlZGVmIHN0cnVjdCBzYW1yX2VudHJ5X2luZm8yCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9pZHg7CgogICAgICAgIHVuc2lnbmVkIGludCByaWRf dXNlcjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2JfaW5mbzsKCiAgICAgICAgVU5JSERSIGhk cl9zcnZfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX3Nydl9kZXNjOwoKfSBTQU1fRU5UUlkyOwoK dHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzIKewogICAgICAgIFVOSVNUUjIgdW5p X3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9kZXNjOwoKfSBTQU1fU1RSMjsKCnR5 cGVkZWYgc3RydWN0IHNhbV9lbnRyeV9pbmZvXzIKewogICAgICAgIFNBTV9FTlRSWTIgKnNhbTsK ICAgICAgICBTQU1fU1RSMiAqc3RyOwoKfSBTQU1fRElTUElORk9fMjsKCgoKCnR5cGVkZWYgc3Ry dWN0IHNhbXJfZW50cnlfaW5mbzMKewogICAgICAgIHVuc2lnbmVkIGludCBncnBfaWR4OwoKICAg ICAgICB1bnNpZ25lZCBpbnQgcmlkX2dycDsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKCiAg ICAgICAgVU5JSERSIGhkcl9ncnBfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2dycF9kZXNjOwoK fSBTQU1fRU5UUlkzOwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzMKewogICAg ICAgIFVOSVNUUjIgdW5pX2dycF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2dycF9kZXNjOwoK fSBTQU1fU1RSMzsKCnR5cGVkZWYgc3RydWN0IHNhbV9lbnRyeV9pbmZvXzMKewogICAgICAgIFNB TV9FTlRSWTMgKnNhbTsKICAgICAgICBTQU1fU1RSMyAqc3RyOwoKfSBTQU1fRElTUElORk9fMzsK CgoKCnR5cGVkZWYgc3RydWN0IHNhbXJfZW50cnlfaW5mbzQKewogICAgICAgIHVuc2lnbmVkIGlu dCB1c2VyX2lkeDsKICAgICAgICBTVFJIRFIgaGRyX2FjY3RfbmFtZTsKCn0gU0FNX0VOVFJZNDsK CnR5cGVkZWYgc3RydWN0IHNhbXJfc3RyX2VudHJ5X2luZm80CnsKICAgICAgICBTVFJJTkcyIGFj Y3RfbmFtZTsKCn0gU0FNX1NUUjQ7Cgp0eXBlZGVmIHN0cnVjdCBzYW1fZW50cnlfaW5mb180CnsK ICAgICAgICBTQU1fRU5UUlk0ICpzYW07CiAgICAgICAgU0FNX1NUUjQgKnN0cjsKCn0gU0FNX0RJ U1BJTkZPXzQ7CgoKCgp0eXBlZGVmIHN0cnVjdCBzYW1yX2VudHJ5X2luZm81CnsKICAgICAgICB1 bnNpZ25lZCBpbnQgZ3JwX2lkeDsKICAgICAgICBTVFJIRFIgaGRyX2dycF9uYW1lOwoKfSBTQU1f RU5UUlk1OwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzUKewogICAgICAgIFNU UklORzIgZ3JwX25hbWU7Cgp9IFNBTV9TVFI1OwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX2VudHJ5X2lu Zm9fNQp7CiAgICAgICAgU0FNX0VOVFJZNSAqc2FtOwogICAgICAgIFNBTV9TVFI1ICpzdHI7Cgp9 IFNBTV9ESVNQSU5GT181OwoKCnR5cGVkZWYgc3RydWN0IHNhbV9kaXNwaW5mb19jdHJfaW5mbwp7 CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fMSAq aW5mbzE7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fMiAqaW5mbzI7CiAgICAgICAgICAg ICAgICBTQU1fRElTUElORk9fMyAqaW5mbzM7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9f NCAqaW5mbzQ7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fNSAqaW5mbzU7CiAgICAgICAg ICAgICAgICB2b2lkICppbmZvOwoKICAgICAgICB9IHNhbTsKCn0gU0FNX0RJU1BJTkZPX0NUUjsK CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X2Rpc3BfaW5mbwp7CiAgICAgICAgUE9MSUNZ X0hORCBkb21haW5fcG9sOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfbGV2ZWw7CgoK ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRfaWR4OwogICAgICAgIHVuc2lnbmVkIGludCBtYXhf ZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7CgoKfSBTQU1SX1FfUVVFUllf RElTUElORk87CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9xdWVyeV9kaXNwaW5mb19pbmZvCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGRh dGFfc2l6ZTsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF9sZXZlbDsKCgogICAgICAg IHVuc2lnbmVkIGludCBudW1fZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJp ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKCiAgICAgICAgU0FNX0RJU1BJ TkZPX0NUUiAqY3RyOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVSWV9E SVNQSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2RlbGV0ZV9kb21fZ3JvdXBfaW5mbwp7 CiAgICBQT0xJQ1lfSE5EIGdyb3VwX3BvbDsKCn0gU0FNUl9RX0RFTEVURV9ET01fR1JPVVA7CgoK CnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9kZWxldGVfZG9tX2dyb3VwX2luZm8KewogICAgICAgIFBP TElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0RFTEVURV9E T01fR1JPVVA7CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9jcmVhdGVfZG9tX2dyb3VwX2luZm8K ewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICBVTklIRFIgaGRyX2FjY3RfZGVzYzsK ICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2Nl c3NfbWFzazsKCn0gU0FNUl9RX0NSRUFURV9ET01fR1JPVVA7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9z YW1yX2NyZWF0ZV9kb21fZ3JvdXBfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAg ICAgIHVuc2lnbmVkIGludCByaWQ7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1Jf Q1JFQVRFX0RPTV9HUk9VUDsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfcXVlcnlfZ3JvdXBfaW5m bwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRj aF9sZXZlbDsKCn0gU0FNUl9RX1FVRVJZX0dST1VQSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNhbXJf Z3JvdXBfaW5mbzEKewogICAgICAgIFVOSUhEUiBoZHJfYWNjdF9uYW1lOwoKICAgICAgICB1bnNp Z25lZCBpbnQgdW5rbm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVtYmVyczsKCiAg ICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2M7CgogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfbmFt ZTsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7Cgp9IEdST1VQX0lORk8xOwoKdHlwZWRl ZiBzdHJ1Y3Qgc2Ftcl9ncm91cF9pbmZvMwp7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25f MTsKCn0gR1JPVVBfSU5GTzM7Cgp0eXBlZGVmIHN0cnVjdCBzYW1yX2dyb3VwX2luZm80CnsKICAg ICAgICBVTklIRFIgaGRyX2FjY3RfZGVzYzsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7 Cgp9IEdST1VQX0lORk80OwoKCnR5cGVkZWYgc3RydWN0IGdyb3VwX2luZm9fY3RyCnsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfdmFsdWUxOwoKICAgICAgICB1bmlvbgogICAgICAgIHsK ICAgICAgICAgICAgICAgIEdST1VQX0lORk8xIGluZm8xOwogICAgICAgICAgICAgICAgR1JPVVBf SU5GTzMgaW5mbzM7CiAgICAgICAgICAgICAgICBHUk9VUF9JTkZPNCBpbmZvNDsKCiAgICAgICAg fSBncm91cDsKCn0gR1JPVVBfSU5GT19DVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5 X2dyb3VwaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEdST1VQ X0lORk9fQ1RSICpjdHI7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FVRVJZ X0dST1VQSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3NldF9ncm91cF9pbmZvCnsKICAg ICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBHUk9VUF9JTkZPX0NUUiAqY3RyOwoKfSBTQU1S X1FfU0VUX0dST1VQSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfc2V0X2dyb3VwX2luZm8K ewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9HUk9VUElORk87CgoKCnR5 cGVkZWYgc3RydWN0IHFfc2Ftcl9kZWxldGVfZG9tX2FsaWFzX2luZm8KewogICAgUE9MSUNZX0hO RCBhbGlhc19wb2w7Cgp9IFNBTVJfUV9ERUxFVEVfRE9NX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj dCByX3NhbXJfZGVsZXRlX2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsK ICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9ERUxFVEVfRE9NX0FMSUFTOwoKCgp0 eXBlZGVmIHN0cnVjdCBxX3NhbXJfY3JlYXRlX2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJ Q1lfSE5EIGRvbV9wb2w7CgogICAgICAgIFVOSUhEUiBoZHJfYWNjdF9kZXNjOwogICAgICAgIFVO SVNUUjIgdW5pX2FjY3RfZGVzYzsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwoK fSBTQU1SX1FfQ1JFQVRFX0RPTV9BTElBUzsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfY3JlYXRl X2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGFsaWFzX3BvbDsKCiAgICAgICAg dW5zaWduZWQgaW50IHJpZDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9DUkVB VEVfRE9NX0FMSUFTOwoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9xdWVyeV9hbGlhc19pbmZvCnsK ICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNoX2xl dmVsOwoKfSBTQU1SX1FfUVVFUllfQUxJQVNJTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9hbGlh c19pbmZvMQp7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X25hbWU7CiAgICAgICAgVU5JSERSIGhk cl9hY2N0X2Rlc2M7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9tZW1iZXI7CiAgICAgICAgVU5J U1RSMiB1bmlfYWNjdF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfZGVzYzsKCn0gQUxJ QVNfSU5GTzE7Cgp0eXBlZGVmIHN0cnVjdCBzYW1yX2FsaWFzX2luZm8zCnsKICAgICAgICBVTklI RFIgaGRyX2FjY3RfZGVzYzsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7Cgp9IEFMSUFT X0lORk8zOwoKCnR5cGVkZWYgc3RydWN0IGFsaWFzX2luZm9fY3RyCnsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBzd2l0Y2hfdmFsdWUxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1 ZTI7CgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgQUxJQVNfSU5GTzEg aW5mbzE7CiAgICAgICAgICAgICAgICBBTElBU19JTkZPMyBpbmZvMzsKCiAgICAgICAgfSBhbGlh czsKCn0gQUxJQVNfSU5GT19DVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X2FsaWFz aW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEFMSUFTX0lORk9f Q1RSIGN0cjsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfQUxJQVNJ TkZPOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfc2V0X2FsaWFzX2luZm8KewogICAgICAgIFBP TElDWV9ITkQgYWxpYXNfcG9sOwogICAgICAgIEFMSUFTX0lORk9fQ1RSIGN0cjsKCn0gU0FNUl9R X1NFVF9BTElBU0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3NldF9hbGlhc2luZm9faW5m bwp7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfU0VUX0FMSUFTSU5GTzsKCgoK dHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X3VzZXJncm91cF9pbmZvCnsKICAgICAgICBQT0xJ Q1lfSE5EIHBvbDsKCn0gU0FNUl9RX1FVRVJZX1VTRVJHUk9VUFM7CgoKdHlwZWRlZiBzdHJ1Y3Qg cl9zYW1yX3F1ZXJ5X3VzZXJncm91cF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzA7 CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBw dHJfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwoKICAgICAgICBET01fR0lE ICpnaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FVRVJZX1VTRVJHUk9V UFM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJpbmZvX2N0cl9pbmZvCnsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAg ICAgICAgICAgU0FNX1VTRVJfSU5GT18xMCAqaWQxMDsKICAgICAgICAgICAgICAgIFNBTV9VU0VS X0lORk9fMTEgKmlkMTE7CiAgICAgICAgICAgICAgICBTQU1fVVNFUl9JTkZPXzEyICppZDEyOwog ICAgICAgICAgICAgICAgU0FNX1VTRVJfSU5GT18yMCAqaWQyMDsKICAgICAgICAgICAgICAgIFNB TV9VU0VSX0lORk9fMjEgKmlkMjE7CiAgICAgICAgICAgICAgICBTQU1fVVNFUl9JTkZPXzIzICpp ZDIzOwogICAgICAgICAgICAgICAgU0FNX1VTRVJfSU5GT18yNCAqaWQyNDsKICAgICAgICAgICAg ICAgIFNBTV9VU0VSX0lORk9fMjUgKmlkMjU7CiAgICAgICAgICAgICAgICB2b2lkKiBpZDsKCiAg ICAgICAgfSBpbmZvOwoKfSBTQU1fVVNFUklORk9fQ1RSOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3Nh bXJfc2V0X3VzZXJfaW5mbzIKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKCiAgICAgICAgU0FNX1VTRVJJTkZPX0NUUiAqY3RyOwoK fSBTQU1SX1FfU0VUX1VTRVJJTkZPMjsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfc2V0X3VzZXJf aW5mbzIKewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9VU0VSSU5GTzI7 CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3NldF91c2VyX2luZm8KewogICAgICAgIFBPTElDWV9I TkQgcG9sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKICAgICAgICBTQU1f VVNFUklORk9fQ1RSICpjdHI7Cgp9IFNBTVJfUV9TRVRfVVNFUklORk87CgoKdHlwZWRlZiBzdHJ1 Y3Qgcl9zYW1yX3NldF91c2VyX2luZm8KewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FN Ul9SX1NFVF9VU0VSSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X3VzZXJfaW5m bwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNo X3ZhbHVlOwoKfSBTQU1SX1FfUVVFUllfVVNFUklORk87CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1y X3F1ZXJ5X3VzZXJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKICAgICAgICBTQU1f VVNFUklORk9fQ1RSICpjdHI7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FV RVJZX1VTRVJJTkZPOwojIDEzMDkgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3Qg cV9zYW1yX3F1ZXJ5X3VzZXJhbGlhc2VzX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3NpZHMxOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7 CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9zaWRzMjsKCiAgICAgICAgdW5zaWduZWQgaW50ICpw dHJfc2lkOwogICAgICAgIERPTV9TSUQyICpzaWQgOwoKfSBTQU1SX1FfUVVFUllfVVNFUkFMSUFT RVM7CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9xdWVyeV91c2VyYWxpYXNlc19pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKICAgICAgICB1bnNpZ25lZCBpbnQg KnJpZDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfVVNFUkFMSUFT RVM7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9sb29rdXBfbmFtZXNfaW5mbwp7CiAgICAg ICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fbmFtZXMxOwogICAg ICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAg IHVuc2lnbmVkIGludCBudW1fbmFtZXMyOwoKICAgICAgICBVTklIRFIgKmhkcl9uYW1lOwogICAg ICAgIFVOSVNUUjIgKnVuaV9uYW1lOwoKfSBTQU1SX1FfTE9PS1VQX05BTUVTOwoKCgp0eXBlZGVm IHN0cnVjdCByX3NhbXJfbG9va3VwX25hbWVzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBu dW1fcmlkczE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9yaWRzOwogICAgICAgIHVuc2lnbmVk IGludCBudW1fcmlkczI7CgogICAgICAgIHVuc2lnbmVkIGludCAqcmlkczsKCiAgICAgICAgdW5z aWduZWQgaW50IG51bV90eXBlczE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlczsKICAg ICAgICB1bnNpZ25lZCBpbnQgbnVtX3R5cGVzMjsKCiAgICAgICAgdW5zaWduZWQgaW50ICp0eXBl czsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfTE9PS1VQX05BTUVTOwojIDEz ODIgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2xvb2t1cF9yaWRz X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVt X3JpZHMxOwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQg cHRyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fcmlkczI7CgogICAgICAgIHVuc2lnbmVkIGlu dCAqcmlkOwoKfSBTQU1SX1FfTE9PS1VQX1JJRFM7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCByX3Nh bXJfbG9va3VwX3JpZHNfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9uYW1lczE7CiAg ICAgICAgdW5zaWduZWQgaW50IHB0cl9uYW1lczsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX25h bWVzMjsKCiAgICAgICAgVU5JSERSICpoZHJfbmFtZTsKICAgICAgICBVTklTVFIyICp1bmlfbmFt ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV90eXBlczE7CiAgICAgICAgdW5zaWduZWQgaW50 IHB0cl90eXBlczsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3R5cGVzMjsKCiAgICAgICAgdW5z aWduZWQgaW50ICp0eXBlOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9MT09L VVBfUklEUzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX29wZW5fdXNlcl9pbmZvCnsKICAgICAg ICBQT0xJQ1lfSE5EIGRvbWFpbl9wb2w7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNr OwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3JpZDsKCn0gU0FNUl9RX09QRU5fVVNFUjsKCgoK dHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX29wZW5fdXNlcl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5E IHVzZXJfcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX09QRU5fVVNFUjsK CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2NyZWF0ZV91c2VyX2luZm8KewogICAgICAgIFBPTElD WV9ITkQgZG9tYWluX3BvbDsKCiAgICAgICAgVU5JSERSIGhkcl9uYW1lOwogICAgICAgIFVOSVNU UjIgdW5pX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2JfaW5mbzsKICAgICAgICB1bnNp Z25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9DUkVBVEVfVVNFUjsKCgoKdHlwZWRlZiBz dHJ1Y3Qgcl9zYW1yX2NyZWF0ZV91c2VyX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgdXNlcl9w b2w7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgaW50 IHVzZXJfcmlkOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0NSRUFURV9VU0VS OwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZGVsZXRlX2RvbV91c2VyX2luZm8KewogICAgUE9M SUNZX0hORCB1c2VyX3BvbDsKCn0gU0FNUl9RX0RFTEVURV9ET01fVVNFUjsKCgoKdHlwZWRlZiBz dHJ1Y3Qgcl9zYW1yX2RlbGV0ZV9kb21fdXNlcl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBv bDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9ERUxFVEVfRE9NX1VTRVI7CgoK CnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9xdWVyeV9ncm91cG1lbV9pbmZvCnsKICAgICAgICBQT0xJ Q1lfSE5EIGdyb3VwX3BvbDsKCn0gU0FNUl9RX1FVRVJZX0dST1VQTUVNOwoKCgp0eXBlZGVmIHN0 cnVjdCByX3NhbXJfcXVlcnlfZ3JvdXBtZW1faW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CgogICAgICAgIHVuc2lnbmVkIGlu dCBwdHJfcmlkczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2F0dHJzOwoKICAgICAgICB1bnNp Z25lZCBpbnQgbnVtX3JpZHM7CiAgICAgICAgdW5zaWduZWQgaW50ICpyaWQ7CgogICAgICAgIHVu c2lnbmVkIGludCBudW1fYXR0cnM7CiAgICAgICAgdW5zaWduZWQgaW50ICphdHRyOwoKICAgICAg ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVSWV9HUk9VUE1FTTsKCgoKdHlwZWRlZiBz dHJ1Y3QgcV9zYW1yX2RlbF9ncm91cF9tZW1faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7 CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKCn0gU0FNUl9RX0RFTF9HUk9VUE1FTTsKCgoKdHlw ZWRlZiBzdHJ1Y3Qgcl9zYW1yX2RlbF9ncm91cF9tZW1faW5mbwp7CiAgICAgICAgTlRTVEFUVVMg c3RhdHVzOwoKfSBTQU1SX1JfREVMX0dST1VQTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJf YWRkX2dyb3VwX21lbV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5z aWduZWQgaW50IHJpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjsKCn0gU0FNUl9RX0FE RF9HUk9VUE1FTTsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2FkZF9ncm91cF9tZW1faW5mbwp7 CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfQUREX0dST1VQTUVNOwoKCgp0eXBl ZGVmIHN0cnVjdCBxX3NhbXJfb3Blbl9ncm91cF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGRv bWFpbl9wb2w7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwogICAgICAgIHVuc2ln bmVkIGludCByaWRfZ3JvdXA7Cgp9IFNBTVJfUV9PUEVOX0dST1VQOwoKCgp0eXBlZGVmIHN0cnVj dCByX3NhbXJfb3Blbl9ncm91cF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAg ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9PUEVOX0dST1VQOwoKCgp0eXBlZGVmIHN0cnVj dCBxX3NhbXJfcXVlcnlfYWxpYXNtZW1faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBhbGlhc19w b2w7Cgp9IFNBTVJfUV9RVUVSWV9BTElBU01FTTsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1 ZXJ5X2FsaWFzbWVtX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBudW1fc2lkczsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fc2lkczE7CgogICAg ICAgIERPTV9TSUQyICpzaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FV RVJZX0FMSUFTTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfYWRkX2FsaWFzX21lbV9pbmZv CnsKICAgICAgICBQT0xJQ1lfSE5EIGFsaWFzX3BvbDsKCiAgICAgICAgRE9NX1NJRDIgc2lkOwoK fSBTQU1SX1FfQUREX0FMSUFTTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfYWRkX2FsaWFz X21lbV9pbmZvCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9BRERfQUxJQVNN RU07CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9kZWxfYWxpYXNfbWVtX2luZm8KewogICAgICAg IFBPTElDWV9ITkQgYWxpYXNfcG9sOwoKICAgICAgICBET01fU0lEMiBzaWQ7Cgp9IFNBTVJfUV9E RUxfQUxJQVNNRU07CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9kZWxfYWxpYXNfbWVtX2luZm8K ewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0RFTF9BTElBU01FTTsKCgoKCnR5 cGVkZWYgc3RydWN0IHFfc2Ftcl9vcGVuX2FsaWFzX2luZm8KewogICAgICAgIFBPTElDWV9ITkQg ZG9tX3BvbDsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwogICAgICAgIHVuc2ln bmVkIGludCByaWRfYWxpYXM7Cgp9IFNBTVJfUV9PUEVOX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj dCByX3NhbXJfb3Blbl9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAg ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9PUEVOX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj dCBxX3NhbXJfY29ubmVjdF9hbm9uX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVu a25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9DT05O RUNUX0FOT047CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2Nvbm5lY3RfYW5vbl9pbmZvCnsKICAg ICAgICBQT0xJQ1lfSE5EIGNvbm5lY3RfcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g U0FNUl9SX0NPTk5FQ1RfQU5PTjsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfY29ubmVjdF9pbmZv CnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5p X3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9D T05ORUNUOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfY29ubmVjdF9pbmZvCnsKICAgIFBPTElD WV9ITkQgY29ubmVjdF9wb2w7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfQ09O TkVDVDsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZ2V0X2RvbV9wd2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JSERSIGhkcl9zcnZfbmFtZTsKICAgICAgICBVTklT VFIyIHVuaV9zcnZfbmFtZTsKCn0gU0FNUl9RX0dFVF9ET01fUFdJTkZPOwoKCnR5cGVkZWYgc3Ry dWN0IHJfc2Ftcl9nZXRfZG9tX3B3aW5mbwp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rXzA7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rXzE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r XzI7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfR0VUX0RPTV9QV0lORk87CgoK dHlwZWRlZiBzdHJ1Y3QgZW5jX3Bhc3N3ZF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFzc1s1MTZdOwoKfSBTQU1SX0VOQ19QQVNTV0Q7CgoK dHlwZWRlZiBzdHJ1Y3QgZW5jX2hhc2hfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK ICAgICAgICB1bnNpZ25lZCBjaGFyIGhhc2hbMTZdOwoKfSBTQU1SX0VOQ19IQVNIOwoKCnR5cGVk ZWYgc3RydWN0IHFfc2Ftcl9jaGdwYXNzd2RfdXNlcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBp bnQgcHRyXzA7CgogICAgICAgIFVOSUhEUiBoZHJfZGVzdF9ob3N0OwogICAgICAgIFVOSVNUUjIg dW5pX2Rlc3RfaG9zdDsKCiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAgVU5J U1RSMiB1bmlfdXNlcl9uYW1lOwoKICAgICAgICBTQU1SX0VOQ19QQVNTV0QgbnRfbmV3cGFzczsK ICAgICAgICBTQU1SX0VOQ19IQVNIIG50X29sZGhhc2g7CgogICAgICAgIHVuc2lnbmVkIGludCB1 bmtub3duOwoKICAgICAgICBTQU1SX0VOQ19QQVNTV0QgbG1fbmV3cGFzczsKICAgICAgICBTQU1S X0VOQ19IQVNIIGxtX29sZGhhc2g7Cgp9IFNBTVJfUV9DSEdQQVNTV0RfVVNFUjsKCgp0eXBlZGVm IHN0cnVjdCByX3NhbXJfY2hncGFzc3dkX3VzZXJfaW5mbwp7CiAgICAgICAgTlRTVEFUVVMgc3Rh dHVzOwoKfSBTQU1SX1JfQ0hHUEFTU1dEX1VTRVI7CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl91 bmtub3duXzJkX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgZG9tX3BvbDsKICAgICAgICBET01f U0lEMiBzaWQ7Cgp9IFNBTVJfUV9VTktOT1dOXzJEOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJf dW5rbm93bl8yZF9pbmZvCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9VTktO T1dOXzJEOwojIDE3NjkgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lkX2lu Zm9fMwp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGVuOwoKCiAgICAgICAgRE9NX1NJRCBzaWQ7 Cgp9IERPTV9TSUQzOwoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl91bmtub3duXzJlX2luZm8Kewog ICAgICAgIFBPTElDWV9ITkQgZG9tYWluX3BvbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0 Y2hfdmFsdWU7Cgp9IFNBTVJfUV9VTktOT1dOXzJFOwoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl91 bmtub3duXzJlX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgU0FNX1VOS19DVFIgKmN0cjsKICAgICAg ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9VTktOT1dOXzJFOwoKCnR5cGVkZWYgc3RydWN0 IHFfc2Ftcl9zZXRfZG9tYWluX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgZG9tYWluX3BvbDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfdmFsdWUwOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHN3aXRjaF92YWx1ZTsKICAgICAgICBTQU1fVU5LX0NUUiAqY3RyOwoKfSBTQU1SX1FfU0VU X0RPTUFJTl9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9zZXRfZG9tYWluX2luZm8Kewog ICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9ET01BSU5fSU5GTzsKIyAyODIg ImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX3NydnN2Yy5oIiAxCiMgNDgg ImluY2x1ZGUvcnBjX3NydnN2Yy5oIgp0eXBlZGVmIHN0cnVjdCBkaXNrX2luZm8gewogICAgICAg IHVuc2lnbmVkIGludCB1bmtub3duOwogICAgICAgIFVOSVNUUjMgZGlza19uYW1lOwp9IERJU0tf SU5GTzsKCnR5cGVkZWYgc3RydWN0IGRpc2tfZW51bV9jb250YWluZXIgewogICAgICAgIHVuc2ln bmVkIGludCBsZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgZW50cmllc19yZWFkOwogICAgICAg IHVuc2lnbmVkIGludCB1bmtub3duOwogICAgICAgIHVuc2lnbmVkIGludCBkaXNrX2luZm9fcHRy OwogICAgICAgIERJU0tfSU5GTyBkaXNrX2luZm9bMTVdOwp9IERJU0tfRU5VTV9DT05UQUlORVI7 Cgp0eXBlZGVmIHN0cnVjdCBuZXRfc3J2X2Rpc2tfZW51bSB7CiAgICAgICAgdW5zaWduZWQgaW50 IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKCiAgICAgICAgRElT S19FTlVNX0NPTlRBSU5FUiBkaXNrX2VudW1fY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJl ZmVycmVkX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfZW50cmllczsKICAgICAgICBF TlVNX0hORCBlbnVtX2huZDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gU1JWX1FfTkVUX0RJ U0tfRU5VTSwgU1JWX1JfTkVUX0RJU0tfRU5VTTsKCnR5cGVkZWYgc3RydWN0IG5ldF9uYW1lX3Zh bGlkYXRlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNU UjIgdW5pX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX25hbWU7CiAgICAgICAgdW5zaWdu ZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIE5UU1RBVFVT IHN0YXR1czsKfSBTUlZfUV9ORVRfTkFNRV9WQUxJREFURSwgU1JWX1JfTkVUX05BTUVfVkFMSURB VEU7CgoKdHlwZWRlZiBzdHJ1Y3QgcHRyX3Nlc3NfaW5mbzAKewogICAgICAgIHVuc2lnbmVkIGlu dCBwdHJfbmFtZTsKCn0gU0VTU19JTkZPXzA7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3RyX3Nlc3NfaW5m bzAKewogICAgICAgIFVOSVNUUjIgdW5pX25hbWU7Cgp9IFNFU1NfSU5GT18wX1NUUjsKCgoKCgoK dHlwZWRlZiBzdHJ1Y3Qgc3J2X3Nlc3NfaW5mb18wX2luZm8KewogICAgICAgIHVuc2lnbmVkIGlu dCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc2Vzc19pbmZvOwog ICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkMjsKCiAgICAgICAgU0VTU19JTkZP XzAgaW5mb18wIFszMl07CiAgICAgICAgU0VTU19JTkZPXzBfU1RSIGluZm9fMF9zdHJbMzJdOwoK fSBTUlZfU0VTU19JTkZPXzA7CgoKdHlwZWRlZiBzdHJ1Y3QgcHRyX3Nlc3NfaW5mbzEKewogICAg ICAgIHVuc2lnbmVkIGludCBwdHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXI7 CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fb3BlbnM7CiAgICAgICAgdW5zaWduZWQgaW50IG9w ZW5fdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWRsZV90aW1lOwogICAgICAgIHVuc2lnbmVk IGludCB1c2VyX2ZsYWdzOwoKfSBTRVNTX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2Vz c19pbmZvMQp7CiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV91 c2VyOwoKfSBTRVNTX0lORk9fMV9TVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2X3Nlc3NfaW5mb18x X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVu c2lnbmVkIGludCBwdHJfc2Vzc19pbmZvOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll c19yZWFkMjsKCiAgICAgICAgU0VTU19JTkZPXzEgaW5mb18xIFszMl07CiAgICAgICAgU0VTU19J TkZPXzFfU1RSIGluZm9fMV9zdHJbMzJdOwoKfSBTUlZfU0VTU19JTkZPXzE7CgoKdHlwZWRlZiBz dHJ1Y3Qgc3J2X3Nlc3NfaW5mb19jdHJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRj aF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nlc3NfY3RyOwogICAgICAgIHVuaW9u CiAgICB7CiAgICAgICAgICAgICAgICBTUlZfU0VTU19JTkZPXzAgaW5mbzA7CiAgICAgICAgICAg ICAgICBTUlZfU0VTU19JTkZPXzEgaW5mbzE7CgogICAgfSBzZXNzOwoKfSBTUlZfU0VTU19JTkZP X0NUUjsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfc2Vzc19lbnVtX2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7Cgog ICAgICAgIHVuc2lnbmVkIGludCBwdHJfcXVhbF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3F1 YWxfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHNlc3NfbGV2ZWw7CgogICAgICAgIFNSVl9T RVNTX0lORk9fQ1RSICpjdHI7CgogICAgICAgIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfbGVuOwog ICAgICAgIEVOVU1fSE5EIGVudW1faG5kOwoKfSBTUlZfUV9ORVRfU0VTU19FTlVNOwoKCnR5cGVk ZWYgc3RydWN0IHJfbmV0X3Nlc3NfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Vz c19sZXZlbDsKCiAgICAgICAgU1JWX1NFU1NfSU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWdu ZWQgaW50IHRvdGFsX2VudHJpZXM7CiAgICAgICAgRU5VTV9ITkQgZW51bV9obmQ7CgogICAgICAg IE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX1NFU1NfRU5VTTsKCgp0eXBlZGVmIHN0cnVj dCBwdHJfY29ubl9pbmZvMAp7CiAgICAgICAgdW5zaWduZWQgaW50IGlkOwoKfSBDT05OX0lORk9f MDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2X2Nvbm5faW5mb18wX2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfY29u bl9pbmZvOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkMjsKCiAgICAgICAg Q09OTl9JTkZPXzAgaW5mb18wIFszMl07Cgp9IFNSVl9DT05OX0lORk9fMDsKCgp0eXBlZGVmIHN0 cnVjdCBwdHJfY29ubl9pbmZvMQp7CiAgICAgICAgdW5zaWduZWQgaW50IGlkOwogICAgICAgIHVu c2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fb3BlbnM7CiAgICAgICAg dW5zaWduZWQgaW50IG51bV91c2VyczsKICAgICAgICB1bnNpZ25lZCBpbnQgb3Blbl90aW1lOwoK ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Vzcl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBw dHJfbmV0X25hbWU7Cgp9IENPTk5fSU5GT18xOwoKCnR5cGVkZWYgc3RydWN0IHN0cl9jb25uX2lu Zm8xCnsKICAgICAgICBVTklTVFIyIHVuaV91c3JfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9u ZXRfbmFtZTsKCn0gQ09OTl9JTkZPXzFfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNydl9jb25uX2lu Zm9fMV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXNfcmVhZDsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyX2Nvbm5faW5mbzsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2Vu dHJpZXNfcmVhZDI7CgogICAgICAgIENPTk5fSU5GT18xIGluZm9fMSBbMzJdOwogICAgICAgIENP Tk5fSU5GT18xX1NUUiBpbmZvXzFfc3RyWzMyXTsKCn0gU1JWX0NPTk5fSU5GT18xOwoKCnR5cGVk ZWYgc3RydWN0IHNydl9jb25uX2luZm9fY3RyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBz d2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9jb25uX2N0cjsKICAgICAgICB1 bmlvbgogICAgewogICAgICAgICAgICAgICAgU1JWX0NPTk5fSU5GT18wIGluZm8wOwogICAgICAg ICAgICAgICAgU1JWX0NPTk5fSU5GT18xIGluZm8xOwoKICAgIH0gY29ubjsKCn0gU1JWX0NPTk5f SU5GT19DVFI7CgoKCnR5cGVkZWYgc3RydWN0IHFfbmV0X2Nvbm5fZW51bV9pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1l OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3F1YWxfbmFtZTsKICAgICAgICBVTklTVFIyIHVu aV9xdWFsX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBjb25uX2xldmVsOwoKICAgICAgICBT UlZfQ09OTl9JTkZPX0NUUiAqY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2xl bjsKICAgICAgICBFTlVNX0hORCBlbnVtX2huZDsKCn0gU1JWX1FfTkVUX0NPTk5fRU5VTTsKCgp0 eXBlZGVmIHN0cnVjdCByX25ldF9jb25uX2VudW1faW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50 IGNvbm5fbGV2ZWw7CgogICAgICAgIFNSVl9DT05OX0lORk9fQ1RSICpjdHI7CgogICAgICAgIHVu c2lnbmVkIGludCB0b3RhbF9lbnRyaWVzOwogICAgICAgIEVOVU1fSE5EIGVudW1faG5kOwoKICAg ICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNSVl9SX05FVF9DT05OX0VOVU07CgoKdHlwZWRlZiBz dHJ1Y3QgcHRyX3NoYXJlX2luZm8xCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX25ldG5hbWU7 CiAgICAgICAgdW5zaWduZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9yZW1h cms7Cgp9IFNIX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2hhcmVfaW5mbzEKewogICAg ICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcmVtYXJrOwoKfSBT SF9JTkZPXzFfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNoYXJlX2luZm9fMV9pbmZvCnsKICAgICAg ICBTSF9JTkZPXzEgaW5mb18xOwogICAgICAgIFNIX0lORk9fMV9TVFIgaW5mb18xX3N0cjsKCn0g U1JWX1NIQVJFX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBwdHJfc2hhcmVfaW5mbzIKewogICAg ICAgIHVuc2lnbmVkIGludCBwdHJfbmV0bmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3JlbWFyazsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVy bXM7CiAgICAgICAgdW5zaWduZWQgaW50IG1heF91c2VzOwogICAgICAgIHVuc2lnbmVkIGludCBu dW1fdXNlczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3BhdGg7CiAgICAgICAgdW5zaWduZWQg aW50IHB0cl9wYXNzd2Q7Cgp9IFNIX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2hhcmVf aW5mbzIKewogICAgICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlf cmVtYXJrOwogICAgICAgIFVOSVNUUjIgdW5pX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfcGFz c3dkOwoKfSBTSF9JTkZPXzJfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNoYXJlX2luZm9fMl9pbmZv CnsKICAgICAgICBTSF9JTkZPXzIgaW5mb18yOwogICAgICAgIFNIX0lORk9fMl9TVFIgaW5mb18y X3N0cjsKCn0gU1JWX1NIQVJFX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBwdHJfc2hhcmVfaW5m bzUwMgp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9uZXRuYW1lOwogICAgICAgIHVuc2lnbmVk IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcmVtYXJrOwogICAgICAgIHVuc2ln bmVkIGludCBwZXJtczsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3VzZXM7CiAgICAgICAgdW5z aWduZWQgaW50IG51bV91c2VzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcGF0aDsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyX3Bhc3N3ZDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Rfc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NkOwoKfSBTSF9JTkZPXzUwMjsKCgp0eXBlZGVmIHN0 cnVjdCBzdHJfc2hhcmVfaW5mbzUwMgp7CiAgICAgICAgU0hfSU5GT181MDIgKnB0cnM7CgogICAg ICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcmVtYXJrOwogICAg ICAgIFVOSVNUUjIgdW5pX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfcGFzc3dkOwoKICAgICAg ICB1bnNpZ25lZCBpbnQgc2Rfc2l6ZTsKICAgICAgICBTRUNfREVTQyAqc2Q7Cgp9IFNIX0lORk9f NTAyX1NUUjsKCgp0eXBlZGVmIHN0cnVjdCBzaGFyZV9pbmZvXzUwMl9pbmZvCnsKICAgICAgICBT SF9JTkZPXzUwMiBpbmZvXzUwMjsKICAgICAgICBTSF9JTkZPXzUwMl9TVFIgaW5mb181MDJfc3Ry OwoKfSBTUlZfU0hBUkVfSU5GT181MDI7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVfaW5mb18xMDA1 X2luZm8KewogIHVuc2lnbmVkIGludCBkZnNfcm9vdF9mbGFnOwp9IFNSVl9TSEFSRV9JTkZPXzEw MDU7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVfaW5mb18xNTAxX2luZm8KewogICAgICAgIFNFQ19E RVNDX0JVRiAqc2RiOwp9IFNSVl9TSEFSRV9JTkZPXzE1MDE7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2 X3NoYXJlX2luZm9fY3RyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBpbmZvX2xldmVsOwog ICAgICAgIHVuc2lnbmVkIGludCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0 cl9zaGFyZV9pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAg dW5zaWduZWQgaW50IHB0cl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll czI7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIFNSVl9TSEFSRV9JTkZPXzEgKmlu Zm8xOwogICAgICAgICAgICAgICAgU1JWX1NIQVJFX0lORk9fMiAqaW5mbzI7CiAgICAgICAgICAg ICAgICBTUlZfU0hBUkVfSU5GT181MDIgKmluZm81MDI7CiAgICAgICAgICAgICAgICB2b2lkICpp bmZvOwoKICAgICAgICB9IHNoYXJlOwoKfSBTUlZfU0hBUkVfSU5GT19DVFI7CgoKdHlwZWRlZiBz dHJ1Y3QgcV9uZXRfc2hhcmVfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Ny dl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICBTUlZfU0hBUkVf SU5GT19DVFIgY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2xlbjsKCiAgICAg ICAgRU5VTV9ITkQgZW51bV9obmQ7Cgp9IFNSVl9RX05FVF9TSEFSRV9FTlVNOwoKCgp0eXBlZGVm IHN0cnVjdCByX25ldF9zaGFyZV9lbnVtX2luZm8KewogICAgICAgIFNSVl9TSEFSRV9JTkZPX0NU UiBjdHI7CgogICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9lbnRyaWVzOwogICAgICAgIEVOVU1f SE5EIGVudW1faG5kOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNSVl9SX05FVF9TSEFS RV9FTlVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9zaGFyZV9nZXRfaW5mb19pbmZvCnsKICAg ICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9u YW1lOwoKICAgICAgICBVTklTVFIyIHVuaV9zaGFyZV9uYW1lOwogICAgICAgIHVuc2lnbmVkIGlu dCBpbmZvX2xldmVsOwoKfSBTUlZfUV9ORVRfU0hBUkVfR0VUX0lORk87CgoKCgp0eXBlZGVmIHN0 cnVjdCBzcnZfc2hhcmVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRjaF92YWx1ZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NoYXJlX2N0cjsKCiAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgICAgU1JWX1NIQVJFX0lORk9fMSBpbmZvMTsKICAgICAgICAgICAgICAgIFNSVl9T SEFSRV9JTkZPXzIgaW5mbzI7CiAgICAgICAgICAgICAgICBTUlZfU0hBUkVfSU5GT181MDIgaW5m bzUwMjsKICAgICAgICBTUlZfU0hBUkVfSU5GT18xMDA1IGluZm8xMDA1OwogICAgICAgIFNSVl9T SEFSRV9JTkZPXzE1MDEgaW5mbzE1MDE7CiAgICAgICAgfSBzaGFyZTsKfSBTUlZfU0hBUkVfSU5G TzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9nZXRfaW5mb19pbmZvCnsKICAgICAgICBT UlZfU0hBUkVfSU5GTyBpbmZvOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVU X1NIQVJFX0dFVF9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHFfbmV0X3NoYXJlX3NldF9pbmZvX2lu Zm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1 bmlfc3J2X25hbWU7CgogICAgICAgIFVOSVNUUjIgdW5pX3NoYXJlX25hbWU7CiAgICAgICAgdW5z aWduZWQgaW50IGluZm9fbGV2ZWw7CgogICAgICAgIFNSVl9TSEFSRV9JTkZPIGluZm87Cgp9IFNS Vl9RX05FVF9TSEFSRV9TRVRfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9zZXRf aW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRjaF92YWx1ZTsKCiAgICAgICAgTlRTVEFU VVMgc3RhdHVzOwoKfSBTUlZfUl9ORVRfU0hBUkVfU0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qg cV9uZXRfc2hhcmVfYWRkCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAg ICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaW5mb19sZXZl bDsKCiAgICAgICAgU1JWX1NIQVJFX0lORk8gaW5mbzsKCn0gU1JWX1FfTkVUX1NIQVJFX0FERDsK Cgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9hZGQKewogICAgICAgIHVuc2lnbmVkIGludCBz d2l0Y2hfdmFsdWU7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX1NIQVJF X0FERDsKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9zaGFyZV9kZWwKewogICAgICAgIHVuc2lnbmVk IGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7CiAgICAgICAg VU5JU1RSMiB1bmlfc2hhcmVfbmFtZTsKCn0gU1JWX1FfTkVUX1NIQVJFX0RFTDsKCgp0eXBlZGVm IHN0cnVjdCByX25ldF9zaGFyZV9kZWwKewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JW X1JfTkVUX1NIQVJFX0RFTDsKCgp0eXBlZGVmIHN0cnVjdCBmaWxlX2luZm8zX2luZm8KewogICAg ICAgIHVuc2lnbmVkIGludCBpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVybXM7CiAgICAgICAg dW5zaWduZWQgaW50IG51bV9sb2NrczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3BhdGhfbmFt ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJfbmFtZTsKCn0gRklMRV9JTkZPXzM7CgoK dHlwZWRlZiBzdHJ1Y3Qgc3RyX2ZpbGVfaW5mbzNfaW5mbwp7CiAgICAgICAgVU5JU1RSMiB1bmlf cGF0aF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKCn0gRklMRV9JTkZPXzNf U1RSOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBzcnZfZmlsZV9pbmZvXzMKewogICAgICAgIHVuc2ln bmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZmlsZV9p bmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXNfcmVhZDI7CgogICAgICAgIEZJ TEVfSU5GT18zIGluZm9fMyBbMzJdOwogICAgICAgIEZJTEVfSU5GT18zX1NUUiBpbmZvXzNfc3Ry WzMyXTsKCn0gU1JWX0ZJTEVfSU5GT18zOwoKCnR5cGVkZWYgc3RydWN0IHNydl9maWxlX2luZm9f M19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2ln bmVkIGludCBwdHJfZmlsZV9jdHI7CiAgICAgICAgdW5pb24KICAgIHsKICAgICAgICAgICAgICAg IFNSVl9GSUxFX0lORk9fMyBpbmZvMzsKCiAgICB9IGZpbGU7Cgp9IFNSVl9GSUxFX0lORk9fQ1RS OwoKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9maWxlX2VudW1faW5mbwp7CiAgICAgICAgdW5zaWdu ZWQgaW50IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKCiAgICAg ICAgdW5zaWduZWQgaW50IHB0cl9xdWFsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcXVhbF9u YW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZV9sZXZlbDsKCiAgICAgICAgU1JWX0ZJTEVf SU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWduZWQgaW50IHByZWZlcnJlZF9sZW47CiAgICAg ICAgRU5VTV9ITkQgZW51bV9obmQ7Cgp9IFNSVl9RX05FVF9GSUxFX0VOVU07CgoKCnR5cGVkZWYg c3RydWN0IHJfbmV0X2ZpbGVfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZV9s ZXZlbDsKCiAgICAgICAgU1JWX0ZJTEVfSU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWduZWQg aW50IHRvdGFsX2VudHJpZXM7CiAgICAgICAgRU5VTV9ITkQgZW51bV9obmQ7CgogICAgICAgIE5U U1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX0ZJTEVfRU5VTTsKCgp0eXBlZGVmIHN0cnVjdCBz cnZfaW5mb18xMDBfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHBsYXRmb3JtX2lkOwogICAg ICAgIHVuc2lnbmVkIGludCBwdHJfbmFtZTsKCiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKCn0g U1JWX0lORk9fMTAwOwoKCnR5cGVkZWYgc3RydWN0IHNydl9pbmZvXzEwMV9pbmZvCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgcGxhdGZvcm1faWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9uYW1l OwogICAgICAgIHVuc2lnbmVkIGludCB2ZXJfbWFqb3I7CiAgICAgICAgdW5zaWduZWQgaW50IHZl cl9taW5vcjsKICAgICAgICB1bnNpZ25lZCBpbnQgc3J2X3R5cGU7CiAgICAgICAgdW5zaWduZWQg aW50IHB0cl9jb21tZW50OwoKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwogICAgICAgIFVOSVNU UjIgdW5pX2NvbW1lbnQ7Cgp9IFNSVl9JTkZPXzEwMTsKCgp0eXBlZGVmIHN0cnVjdCBzcnZfaW5m b18xMDJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHBsYXRmb3JtX2lkOwogICAgICAgIHVu c2lnbmVkIGludCBwdHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVyX21ham9yOwogICAg ICAgIHVuc2lnbmVkIGludCB2ZXJfbWlub3I7CiAgICAgICAgdW5zaWduZWQgaW50IHNydl90eXBl OwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfY29tbWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg dXNlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IGRpc2M7CiAgICAgICAgdW5zaWduZWQgaW50IGhp ZGRlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYW5ub3VuY2U7CiAgICAgICAgdW5zaWduZWQgaW50 IGFubl9kZWx0YTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGljZW5zZXM7CiAgICAgICAgdW5zaWdu ZWQgaW50IHB0cl91c3JfcGF0aDsKCiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKICAgICAgICBV TklTVFIyIHVuaV9jb21tZW50OwogICAgICAgIFVOSVNUUjIgdW5pX3Vzcl9wYXRoOwoKfSBTUlZf SU5GT18xMDI7CgoKCnR5cGVkZWYgc3RydWN0IHNydl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICB1 bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X2N0 cjsKICAgICAgICB1bmlvbgogICAgewogICAgICAgICAgICAgICAgU1JWX0lORk9fMTAyIHN2MTAy OwogICAgICAgICAgICAgICAgU1JWX0lORk9fMTAxIHN2MTAxOwogICAgICAgICAgICAgICAgU1JW X0lORk9fMTAwIHN2MTAwOwoKICAgIH0gc3J2OwoKfSBTUlZfSU5GT19DVFI7CgoKdHlwZWRlZiBz dHJ1Y3QgcV9uZXRfc3J2X2dldF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9u YW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBz d2l0Y2hfdmFsdWU7Cgp9IFNSVl9RX05FVF9TUlZfR0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qg cl9uZXRfc3J2X2dldF9pbmZvCnsKICAgICAgICBTUlZfSU5GT19DVFIgKmN0cjsKCiAgICAgICAg TlRTVEFUVVMgc3RhdHVzOwoKfSBTUlZfUl9ORVRfU1JWX0dFVF9JTkZPOwoKCnR5cGVkZWYgc3Ry dWN0IHFfbmV0X3Nydl9zZXRfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zcnZfbmFt ZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dp dGNoX3ZhbHVlOwoKICAgICAgICBTUlZfSU5GT19DVFIgKmN0cjsKCn0gU1JWX1FfTkVUX1NSVl9T RVRfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9uZXRfc3J2X3NldF9pbmZvCnsKICAgICAgICB1 bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNS Vl9SX05FVF9TUlZfU0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfcmVtb3RlX3RvZAp7 CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9z cnZfbmFtZTsKCn0gU1JWX1FfTkVUX1JFTU9URV9UT0Q7CgoKdHlwZWRlZiBzdHJ1Y3QgdGltZV9v Zl9kYXlfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IGVsYXBzZWR0OwogICAgICAgIHVuc2ln bmVkIGludCBtc2VjczsKICAgICAgICB1bnNpZ25lZCBpbnQgaG91cnM7CiAgICAgICAgdW5zaWdu ZWQgaW50IG1pbnM7CiAgICAgICAgdW5zaWduZWQgaW50IHNlY3M7CiAgICAgICAgdW5zaWduZWQg aW50IGh1bmRzOwogICAgICAgIHVuc2lnbmVkIGludCB6b25lOwogICAgICAgIHVuc2lnbmVkIGlu dCB0aW50ZXJ2YWxzOwogICAgICAgIHVuc2lnbmVkIGludCBkYXk7CiAgICAgICAgdW5zaWduZWQg aW50IG1vbnRoOwogICAgICAgIHVuc2lnbmVkIGludCB5ZWFyOwogICAgICAgIHVuc2lnbmVkIGlu dCB3ZWVrZGF5OwoKfSBUSU1FX09GX0RBWV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfbmV0X3Jl bW90ZV90b2QKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X3RvZDsKICAgICAgICBUSU1F X09GX0RBWV9JTkZPICp0b2Q7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVU X1JFTU9URV9UT0Q7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfZmlsZV9xdWVyeV9zZWNkZXNjCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Ny dl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcXVhbF9uYW1lOwogICAgICAgIFVOSVNU UjIgdW5pX3F1YWxfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9maWxlX25hbWU7CiAgICAgICAg dW5zaWduZWQgaW50IHVua25vd24xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMjsKICAg ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjM7Cn0gU1JWX1FfTkVUX0ZJTEVfUVVFUllfU0VDREVT QzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9maWxlX3F1ZXJ5X3NlY2Rlc2MKewogICAgICAgIHVu c2lnbmVkIGludCBwdHJfcmVzcG9uc2U7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemVfcmVzcG9u c2U7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zZWNkZXNjOwogICAgICAgIHVuc2lnbmVkIGlu dCBzaXplX3NlY2Rlc2M7CiAgICAgICAgU0VDX0RFU0MgKnNlY19kZXNjOwogICAgICAgIE5UU1RB VFVTIHN0YXR1czsKfSBTUlZfUl9ORVRfRklMRV9RVUVSWV9TRUNERVNDOwoKCnR5cGVkZWYgc3Ry dWN0IHFfbmV0X2ZpbGVfc2V0X3NlY2Rlc2MKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2 X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7CiAgICAgICAgdW5zaWduZWQgaW50 IHB0cl9xdWFsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcXVhbF9uYW1lOwogICAgICAgIFVO SVNUUjIgdW5pX2ZpbGVfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87CiAgICAg ICAgdW5zaWduZWQgaW50IHNpemVfc2V0OwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc2VjZGVz YzsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZV9zZWNkZXNjOwogICAgICAgIFNFQ19ERVNDICpz ZWNfZGVzYzsKfSBTUlZfUV9ORVRfRklMRV9TRVRfU0VDREVTQzsKCgp0eXBlZGVmIHN0cnVjdCBy X25ldF9maWxlX3NldF9zZWNkZXNjCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gU1JWX1Jf TkVUX0ZJTEVfU0VUX1NFQ0RFU0M7CiMgMjgzICJpbmNsdWRlL250ZG9tYWluLmgiIDIKIyAxICJp bmNsdWRlL3JwY193a3NzdmMuaCIgMQojIDMzICJpbmNsdWRlL3JwY193a3NzdmMuaCIKdHlwZWRl ZiBzdHJ1Y3QgcV93a3NfcXVlcnlfaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy X3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBzd2l0Y2hfdmFsdWU7Cgp9IFdLU19RX1FVRVJZX0lORk87CgoKCnR5cGVkZWYgc3Ry dWN0IHdrc19pbmZvXzEwMF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcGxhdGZvcm1faWQ7 CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9jb21wbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQg cHRyX2xhbl9ncnAgOwogICAgICAgIHVuc2lnbmVkIGludCB2ZXJfbWFqb3I7CiAgICAgICAgdW5z aWduZWQgaW50IHZlcl9taW5vcjsKCiAgICAgICAgVU5JU1RSMiB1bmlfY29tcG5hbWU7CiAgICAg ICAgVU5JU1RSMiB1bmlfbGFuX2dycCA7Cgp9IFdLU19JTkZPXzEwMDsKCgoKdHlwZWRlZiBzdHJ1 Y3Qgcl93a3NfcXVlcnlfaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hf dmFsdWU7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzE7CiAgICAgICAgV0tTX0lORk9fMTAw ICp3a3MxMDA7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gV0tTX1JfUVVFUllfSU5GTzsK IyAyODQgImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX3Nwb29sc3MuaCIg MQojIDM3NyAiaW5jbHVkZS9ycGNfc3Bvb2xzcy5oIgp0eXBlZGVmIHN0cnVjdCBzcG9vbF91c2Vy XzEKewogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBjbGll bnRfbmFtZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfbmFtZV9wdHI7CiAgICAgICAg dW5zaWduZWQgaW50IGJ1aWxkOwogICAgICAgIHVuc2lnbmVkIGludCBtYWpvcjsKICAgICAgICB1 bnNpZ25lZCBpbnQgbWlub3I7CiAgICAgICAgdW5zaWduZWQgaW50IHByb2Nlc3NvcjsKICAgICAg ICBVTklTVFIyIGNsaWVudF9uYW1lOwogICAgICAgIFVOSVNUUjIgdXNlcl9uYW1lOwp9ClNQT09M X1VTRVJfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3VzZXJfY3RyX2luZm8KewogICAgICAgIHVu c2lnbmVkIGludCBsZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIFNQT09M X1VTRVJfMSB1c2VyMTsKfQpTUE9PTF9VU0VSX0NUUjsKCnR5cGVkZWYgc3RydWN0IGRldmljZW1v ZGUKewogICAgICAgIFVOSVNUUiBkZXZpY2VuYW1lOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNw ZWN2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRyaXZlcnZlcnNpb247CiAgICAgICAg dW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZXJleHRyYTsK ICAgICAgICB1bnNpZ25lZCBpbnQgZmllbGRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWVu dGF0aW9uOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhcGVyc2l6ZTsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBwYXBlcmxlbmd0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYXBlcndpZHRoOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHNjYWxlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNvcGll czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0c291cmNlOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHByaW50cXVhbGl0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2xvcjsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBkdXBsZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgeXJlc29sdXRp b247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHRvcHRpb247CiAgICAgICAgdW5zaWduZWQgc2hv cnQgY29sbGF0ZTsKICAgICAgICBVTklTVFIgZm9ybW5hbWU7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgbG9ncGl4ZWxzOwogICAgICAgIHVuc2lnbmVkIGludCBiaXRzcGVycGVsOwogICAgICAgIHVu c2lnbmVkIGludCBwZWxzd2lkdGg7CiAgICAgICAgdW5zaWduZWQgaW50IHBlbHNoZWlnaHQ7CiAg ICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgZGlz cGxheWZyZXF1ZW5jeTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWNtbWV0aG9kOwogICAgICAgIHVu c2lnbmVkIGludCBpY21pbnRlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1lZGlhdHlwZTsKICAg ICAgICB1bnNpZ25lZCBpbnQgZGl0aGVydHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2 ZWQxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDI7CiAgICAgICAgdW5zaWduZWQgaW50 IHBhbm5pbmd3aWR0aDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFubmluZ2hlaWdodDsKICAgICAg ICB1bnNpZ25lZCBjaGFyICpwcml2YXRlOwp9CkRFVklDRU1PREU7Cgp0eXBlZGVmIHN0cnVjdCBf ZGV2bW9kZV9jb250CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICB1bnNpZ25l ZCBpbnQgZGV2bW9kZV9wdHI7CiAgICAgICAgREVWSUNFTU9ERSAqZGV2bW9kZTsKfQpERVZNT0RF X0NUUjsKCnR5cGVkZWYgc3RydWN0IF9wcmludGVyX2RlZmF1bHQKewogICAgICAgIHVuc2lnbmVk IGludCBkYXRhdHlwZV9wdHI7CiAgICAgICAgVU5JU1RSMiBkYXRhdHlwZTsKICAgICAgICBERVZN T0RFX0NUUiBkZXZtb2RlX2NvbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19yZXF1aXJl ZDsKfQpQUklOVEVSX0RFRkFVTFQ7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9vcGVuX3ByaW50 ZXJfZXgKewogICAgICAgIHVuc2lnbmVkIGludCBwcmludGVybmFtZV9wdHI7CiAgICAgICAgVU5J U1RSMiBwcmludGVybmFtZTsKICAgICAgICBQUklOVEVSX0RFRkFVTFQgcHJpbnRlcl9kZWZhdWx0 OwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3N3aXRjaDsKICAgICAgICBTUE9PTF9VU0VSX0NU UiB1c2VyX2N0cjsKfQpTUE9PTF9RX09QRU5fUFJJTlRFUl9FWDsKCgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9yX29wZW5fcHJpbnRlcl9leAp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAg ICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX09QRU5fUFJJTlRFUl9FWDsKCnR5cGVkZWYgc3Ry dWN0IHNwb29sX25vdGlmeV9vcHRpb25fdHlwZQp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXNlcnZlZDA7CiAgICAgICAgdW5zaWduZWQgaW50 IHJlc2VydmVkMTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQyOwogICAgICAgIHVuc2ln bmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmllbGRzX3B0cjsKICAgICAgICB1 bnNpZ25lZCBpbnQgY291bnQyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZpZWxkc1syNl07Cn0K U1BPT0xfTk9USUZZX09QVElPTl9UWVBFOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfbm90aWZ5X29w dGlvbl90eXBlX2N0cgp7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50OwogICAgICAgIFNQT09M X05PVElGWV9PUFRJT05fVFlQRSAqdHlwZTsKfQpTUE9PTF9OT1RJRllfT1BUSU9OX1RZUEVfQ1RS OwoKCgp0eXBlZGVmIHN0cnVjdCBzX2hlYWRlcl90eXBlCnsKICAgICAgICB1bnNpZ25lZCBpbnQg dHlwZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCB2YWx1ZTsKICAgICAgICAgICAgICAgIFVOSVNUUiBzdHJpbmc7CiAgICAgICAgfQogICAgICAg IGRhdGE7Cn0KSEVBREVSX1RZUEU7Cgp0eXBlZGVmIHN0cnVjdCBuZXdfYnVmZmVyCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgIHBy c19zdHJ1Y3QgcHJzOwogICAgICAgIHVuc2lnbmVkIGludCBzdHJ1Y3Rfc3RhcnQ7CiAgICAgICAg dW5zaWduZWQgaW50IHN0cmluZ19hdF9lbmQ7Cn0KTkVXX0JVRkZFUjsKCnR5cGVkZWYgc3RydWN0 IHNwb29sX3FfZ2V0cHJpbnRlcmRhdGEKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAg ICAgIFVOSVNUUjIgdmFsdWVuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwp9ClNQT09M X1FfR0VUUFJJTlRFUkRBVEE7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkYXRh CnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7 CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0dFVFBSSU5URVJEQVRBOwoKdHlwZWRl ZiBzdHJ1Y3Qgc3Bvb2xfcV9kZWxldGVwcmludGVyZGF0YQp7CiAgICAgICAgUE9MSUNZX0hORCBo YW5kbGU7CiAgICAgICAgVU5JU1RSMiB2YWx1ZW5hbWU7Cn0KU1BPT0xfUV9ERUxFVEVQUklOVEVS REFUQTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZGVsZXRlcHJpbnRlcmRhdGEKewogICAgICAg IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9ERUxFVEVQUklOVEVSREFUQTsKCnR5cGVkZWYgc3Ry dWN0IHNwb29sX3FfY2xvc2VwcmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpT UE9PTF9RX0NMT1NFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfY2xvc2VwcmludGVy CnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQ T09MX1JfQ0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9zdGFydHBhZ2Vwcmlu dGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX1NUQVJUUEFHRVBSSU5U RVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3N0YXJ0cGFnZXByaW50ZXIKewogICAgICAgIFdF UlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9TVEFSVFBBR0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qg c3Bvb2xfcV9lbmRwYWdlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7Cn0KU1BP T0xfUV9FTkRQQUdFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW5kcGFnZXByaW50 ZXIKewogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9FTkRQQUdFUFJJTlRFUjsKCgp0 eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2RlbGV0ZXByaW50ZXJkcml2ZXIKewogICAgICAgIHVuc2ln bmVkIGludCBzZXJ2ZXJfcHRyOwogICAgICAgIFVOSVNUUjIgc2VydmVyOwogICAgICAgIFVOSVNU UjIgYXJjaDsKICAgICAgICBVTklTVFIyIGRyaXZlcjsKfQpTUE9PTF9RX0RFTEVURVBSSU5URVJE UklWRVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2RlbGV0ZXByaW50ZXJkcml2ZXIKewogICAg ICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9ERUxFVEVQUklOVEVSRFJJVkVSOwoKCnR5cGVk ZWYgc3RydWN0IHNwb29sX2RvY19pbmZvXzEKewogICAgICAgIHVuc2lnbmVkIGludCBwX2RvY25h bWU7CiAgICAgICAgdW5zaWduZWQgaW50IHBfb3V0cHV0ZmlsZTsKICAgICAgICB1bnNpZ25lZCBp bnQgcF9kYXRhdHlwZTsKICAgICAgICBVTklTVFIyIGRvY25hbWU7CiAgICAgICAgVU5JU1RSMiBv dXRwdXRmaWxlOwogICAgICAgIFVOSVNUUjIgZGF0YXR5cGU7Cn0KRE9DX0lORk9fMTsKCnR5cGVk ZWYgc3RydWN0IHNwb29sX2RvY19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dpdGNoX3Zh bHVlOwogICAgICAgIERPQ19JTkZPXzEgZG9jX2luZm9fMTsKfQpET0NfSU5GTzsKCnR5cGVkZWYg c3RydWN0IHNwb29sX2RvY19pbmZvX2NvbnRhaW5lcgp7CiAgICAgICAgdW5zaWduZWQgaW50IGxl dmVsOwogICAgICAgIERPQ19JTkZPIGRvY2luZm87Cn0KRE9DX0lORk9fQ09OVEFJTkVSOwoKdHlw ZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9zdGFydGRvY3ByaW50ZXIKewogICAgICAgIFBPTElDWV9ITkQg aGFuZGxlOwogICAgICAgIERPQ19JTkZPX0NPTlRBSU5FUiBkb2NfaW5mb19jb250YWluZXI7Cn0K U1BPT0xfUV9TVEFSVERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3N0YXJ0ZG9j cHJpbnRlcgp7CiAgICAgICAgdW5zaWduZWQgaW50IGpvYmlkOwogICAgICAgIFdFUlJPUiBzdGF0 dXM7Cn0KU1BPT0xfUl9TVEFSVERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Vu ZGRvY3ByaW50ZXIKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwp9ClNQT09MX1FfRU5ERE9D UFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW5kZG9jcHJpbnRlcgp7CiAgICAgICAg V0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VORERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9xX3dyaXRlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAg dW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsK ICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemUyOwp9ClNQT09MX1FfV1JJVEVQUklOVEVS OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl93cml0ZXByaW50ZXIKewogICAgICAgIHVuc2lnbmVk IGludCBidWZmZXJfd3JpdHRlbjsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfV1JJ VEVQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfbm90aWZ5X29wdGlvbgp7CiAgICAgICAg dW5zaWduZWQgaW50IHZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAg IHVuc2lnbmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgb3B0aW9uX3R5cGVfcHRy OwogICAgICAgIFNQT09MX05PVElGWV9PUFRJT05fVFlQRV9DVFIgY3RyOwp9ClNQT09MX05PVElG WV9PUFRJT047Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9ub3RpZnlfaW5mb19kYXRhCnsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZpZWxkOwogICAg ICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgaWQ7CiAgICAg ICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmFsdWVbMl07 CiAgICAgICAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgc2hvcnQgKnN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRh dGE7CiAgICAgICAgfQogICAgICAgIG5vdGlmeV9kYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBz aXplOwogICAgICAgIEJPT0wgZW5jX3R5cGU7Cn0gU1BPT0xfTk9USUZZX0lORk9fREFUQTsKCnR5 cGVkZWYgc3RydWN0IHNwb29sX25vdGlmeV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVy c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGNv dW50OwogICAgICAgIFNQT09MX05PVElGWV9JTkZPX0RBVEEgKmRhdGE7Cn0KU1BPT0xfTk9USUZZ X0lORk87CgoKCnR5cGVkZWYgc3RydWN0IHNwb29sc3NfcV9yZmZwY25leAp7CiAgICAgICAgUE9M SUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHVuc2ln bmVkIGludCBvcHRpb25zOwogICAgICAgIHVuc2lnbmVkIGludCBsb2NhbG1hY2hpbmVfcHRyOwog ICAgICAgIFVOSVNUUjIgbG9jYWxtYWNoaW5lOwogICAgICAgIHVuc2lnbmVkIGludCBwcmludGVy bG9jYWw7CiAgICAgICAgdW5zaWduZWQgaW50IG9wdGlvbl9wdHI7CiAgICAgICAgU1BPT0xfTk9U SUZZX09QVElPTiAqb3B0aW9uOwp9ClNQT09MX1FfUkZGUENORVg7Cgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9yX3JmZnBjbmV4CnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfUkZGUENO RVg7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9yZm5wY25leAp7CiAgICAgICAgUE9MSUNZX0hO RCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZTsKICAgICAgICB1bnNpZ25lZCBp bnQgb3B0aW9uX3B0cjsKICAgICAgICBTUE9PTF9OT1RJRllfT1BUSU9OICpvcHRpb247Cn0KU1BP T0xfUV9SRk5QQ05FWDsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcmZucGNuZXgKewogICAgICAg IHVuc2lnbmVkIGludCBpbmZvX3B0cjsKICAgICAgICBTUE9PTF9OT1RJRllfSU5GTyBpbmZvOwog ICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9SRk5QQ05FWDsKCgp0eXBlZGVmIHN0cnVj dCBzcG9vbF9xX2ZjcG4KewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwp9ClNQT09MX1FfRkNQ TjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZmNwbgp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK fQpTUE9PTF9SX0ZDUE47CgoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzAKewogICAgICAg IFVOSVNUUiBwcmludGVybmFtZTsKICAgICAgICBVTklTVFIgc2VydmVybmFtZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgY2pvYnM7CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFsX2pvYnM7CiAgICAg ICAgdW5zaWduZWQgaW50IHRvdGFsX2J5dGVzOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB5ZWFy OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1vbnRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRh eW9md2VlazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkYXk7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgaG91cjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtaW51dGU7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgc2Vjb25kOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbGxpc2Vjb25kczsKCiAgICAg ICAgdW5zaWduZWQgaW50IGdsb2JhbF9jb3VudGVyOwogICAgICAgIHVuc2lnbmVkIGludCB0b3Rh bF9wYWdlczsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWFqb3JfdmVyc2lvbjsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCBidWlsZF92ZXJzaW9uOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93 bjc7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd244OwogICAgICAgIHVuc2lnbmVkIGludCB1 bmtub3duOTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Vzc2lvbl9jb3VudGVyOwogICAgICAgIHVu c2lnbmVkIGludCB1bmtub3duMTE7CiAgICAgICAgdW5zaWduZWQgaW50IHByaW50ZXJfZXJyb3Jz OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTM7CiAgICAgICAgdW5zaWduZWQgaW50IHVu a25vd24xNDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE1OwogICAgICAgIHVuc2lnbmVk IGludCB1bmtub3duMTY7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9pZDsKICAgICAgICB1 bnNpZ25lZCBpbnQgdW5rbm93bjE4OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg ICAgdW5zaWduZWQgaW50IHVua25vd24yMDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19zZXRwcmlu dGVyOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duMjI7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgdW5rbm93bjIzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd24yNDsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCB1bmtub3duMjU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93 bjI2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd24yNzsKICAgICAgICB1bnNpZ25lZCBz aG9ydCB1bmtub3duMjg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bjI5Owp9IFBSSU5U RVJfSU5GT18wOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzEKewogICAgICAgIHVuc2ln bmVkIGludCBmbGFnczsKICAgICAgICBVTklTVFIgZGVzY3JpcHRpb247CiAgICAgICAgVU5JU1RS IG5hbWU7CiAgICAgICAgVU5JU1RSIGNvbW1lbnQ7Cn0KUFJJTlRFUl9JTkZPXzE7Cgp0eXBlZGVm IHN0cnVjdCBwcmludGVyX2luZm9fMgp7CiAgICAgICAgVU5JU1RSIHNlcnZlcm5hbWU7CiAgICAg ICAgVU5JU1RSIHByaW50ZXJuYW1lOwogICAgICAgIFVOSVNUUiBzaGFyZW5hbWU7CiAgICAgICAg VU5JU1RSIHBvcnRuYW1lOwogICAgICAgIFVOSVNUUiBkcml2ZXJuYW1lOwogICAgICAgIFVOSVNU UiBjb21tZW50OwogICAgICAgIFVOSVNUUiBsb2NhdGlvbjsKICAgICAgICBERVZJQ0VNT0RFICpk ZXZtb2RlOwogICAgICAgIFVOSVNUUiBzZXBmaWxlOwogICAgICAgIFVOSVNUUiBwcmludHByb2Nl c3NvcjsKICAgICAgICBVTklTVFIgZGF0YXR5cGU7CiAgICAgICAgVU5JU1RSIHBhcmFtZXRlcnM7 CiAgICAgICAgU0VDX0RFU0MgKnNlY2Rlc2M7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0 ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBk ZWZhdWx0cHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0dGltZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgdW50aWx0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg ICAgdW5zaWduZWQgaW50IGNqb2JzOwogICAgICAgIHVuc2lnbmVkIGludCBhdmVyYWdlcHBtOwp9 ClBSSU5URVJfSU5GT18yOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzMKewogICAgICAg IHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBTRUNfREVTQyAqc2VjZGVzYzsKfQpQUklOVEVS X0lORk9fMzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZW51bXByaW50ZXJzCnsKICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHNlcnZlcm5hbWVfcHRyOwog ICAgICAgIFVOSVNUUjIgc2VydmVybmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CiAg ICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBvZmZlcmVkOwp9 ClNQT09MX1FfRU5VTVBSSU5URVJTOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvX2N0cl9p bmZvCnsKICAgICAgICBQUklOVEVSX0lORk9fMCAqcHJpbnRlcnNfMDsKICAgICAgICBQUklOVEVS X0lORk9fMSAqcHJpbnRlcnNfMTsKICAgICAgICBQUklOVEVSX0lORk9fMiAqcHJpbnRlcnNfMjsK ICAgICAgICBQUklOVEVSX0lORk9fMyAqcHJpbnRlcnNfMzsKfQpQUklOVEVSX0lORk9fQ1RSOwoK dHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcnMKewogICAgICAgIE5FV19CVUZGRVIg KmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIHVuc2lnbmVkIGlu dCByZXR1cm5lZDsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfRU5VTVBSSU5URVJT OwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hO RCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIg KmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0dFVFBSSU5U RVI7Cgp0eXBlZGVmIHN0cnVjdCBwcmludGVyX2luZm9faW5mbwp7CiAgICAgICAgdW5pb24KICAg ICAgICB7CiAgICAgICAgICAgICAgICBQUklOVEVSX0lORk9fMCAqaW5mbzA7CiAgICAgICAgICAg ICAgICBQUklOVEVSX0lORk9fMSAqaW5mbzE7CiAgICAgICAgICAgICAgICBQUklOVEVSX0lORk9f MiAqaW5mbzI7CiAgICAgICAgICAgICAgICB2b2lkICppbmZvOwogICAgICAgIH0gcHJpbnRlcjsK fSBQUklOVEVSX0lORk87Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXIKewogICAg ICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAg ICAgIFdFUlJPUiBzdGF0dXM7Cn0gU1BPT0xfUl9HRVRQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qg ZHJpdmVyX2luZm9fMQp7CiAgICAgICAgVU5JU1RSIG5hbWU7Cn0gRFJJVkVSX0lORk9fMTsKCnR5 cGVkZWYgc3RydWN0IGRyaXZlcl9pbmZvXzIKewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9u OwogICAgICAgIFVOSVNUUiBuYW1lOwogICAgICAgIFVOSVNUUiBhcmNoaXRlY3R1cmU7CiAgICAg ICAgVU5JU1RSIGRyaXZlcnBhdGg7CiAgICAgICAgVU5JU1RSIGRhdGFmaWxlOwogICAgICAgIFVO SVNUUiBjb25maWdmaWxlOwp9IERSSVZFUl9JTkZPXzI7Cgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJf aW5mb18zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgICAgICBVTklTVFIgbmFt ZTsKICAgICAgICBVTklTVFIgYXJjaGl0ZWN0dXJlOwogICAgICAgIFVOSVNUUiBkcml2ZXJwYXRo OwogICAgICAgIFVOSVNUUiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIgY29uZmlnZmlsZTsKICAg ICAgICBVTklTVFIgaGVscGZpbGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRlcGVuZGVudGZp bGVzOwogICAgICAgIFVOSVNUUiBtb25pdG9ybmFtZTsKICAgICAgICBVTklTVFIgZGVmYXVsdGRh dGF0eXBlOwp9CkRSSVZFUl9JTkZPXzM7Cgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJfaW5mb182CnsK ICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgICAgICBVTklTVFIgbmFtZTsKICAgICAg ICBVTklTVFIgYXJjaGl0ZWN0dXJlOwogICAgICAgIFVOSVNUUiBkcml2ZXJwYXRoOwogICAgICAg IFVOSVNUUiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIgY29uZmlnZmlsZTsKICAgICAgICBVTklT VFIgaGVscGZpbGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRlcGVuZGVudGZpbGVzOwogICAg ICAgIFVOSVNUUiBtb25pdG9ybmFtZTsKICAgICAgICBVTklTVFIgZGVmYXVsdGRhdGF0eXBlOwog ICAgICAgIHVuc2lnbmVkIHNob3J0KiBwcmV2aW91c2RyaXZlcm5hbWVzOwogICAgICAgIE5UVElN RSBkcml2ZXJfZGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFkZGluZzsKICAgICAgICB1bnNp Z25lZCBpbnQgZHJpdmVyX3ZlcnNpb25fbG93OwogICAgICAgIHVuc2lnbmVkIGludCBkcml2ZXJf dmVyc2lvbl9oaWdoOwogICAgICAgIFVOSVNUUiBtZmduYW1lOwogICAgICAgIFVOSVNUUiBvZW1f dXJsOwogICAgICAgIFVOSVNUUiBoYXJkd2FyZV9pZDsKICAgICAgICBVTklTVFIgcHJvdmlkZXI7 Cn0KRFJJVkVSX0lORk9fNjsKCnR5cGVkZWYgc3RydWN0IGRyaXZlcl9pbmZvX2luZm8KewogICAg ICAgIERSSVZFUl9JTkZPXzEgKmluZm8xOwogICAgICAgIERSSVZFUl9JTkZPXzIgKmluZm8yOwog ICAgICAgIERSSVZFUl9JTkZPXzMgKmluZm8zOwogICAgICAgIERSSVZFUl9JTkZPXzYgKmluZm82 Owp9ClBSSU5URVJfRFJJVkVSX0NUUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRl cmRyaXZlcjIKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGlu dCBhcmNoaXRlY3R1cmVfcHRyOwogICAgICAgIFVOSVNUUjIgYXJjaGl0ZWN0dXJlOwogICAgICAg IHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAg dW5zaWduZWQgaW50IG9mZmVyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsaWVudG1ham9ydmVy c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xpZW50bWlub3J2ZXJzaW9uOwp9ClNQT09MX1Ff R0VUUFJJTlRFUkRSSVZFUjI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkcml2 ZXIyCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5l ZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVybWFqb3J2ZXJzaW9uOwogICAgICAgIHVu c2lnbmVkIGludCBzZXJ2ZXJtaW5vcnZlcnNpb247CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpT UE9PTF9SX0dFVFBSSU5URVJEUklWRVIyOwoKCnR5cGVkZWYgc3RydWN0IGFkZF9qb2JpbmZvXzEK ewogICAgICAgIFVOSVNUUiBwYXRoOwogICAgICAgIHVuc2lnbmVkIGludCBqb2JfbnVtYmVyOwp9 CkFERF9KT0JJTkZPXzE7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9hZGRqb2IKewogICAgICAg IFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBO RVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xf UV9BRERKT0I7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2FkZGpvYgp7CiAgICAgICAgTkVXX0JV RkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgV0VSUk9S IHN0YXR1czsKfQpTUE9PTF9SX0FEREpPQjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHN5c3RlbXRp bWUKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHllYXI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg bW9udGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGF5b2Z3ZWVrOwogICAgICAgIHVuc2lnbmVk IHNob3J0IGRheTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBob3VyOwogICAgICAgIHVuc2lnbmVk IHNob3J0IG1pbnV0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZWNvbmQ7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgbWlsbGlzZWNvbmRzOwp9ClNZU1RFTVRJTUU7Cgp0eXBlZGVmIHN0cnVjdCBz X2pvYl9pbmZvXzEKewogICAgICAgIHVuc2lnbmVkIGludCBqb2JpZDsKICAgICAgICBVTklTVFIg cHJpbnRlcm5hbWU7CiAgICAgICAgVU5JU1RSIG1hY2hpbmVuYW1lOwogICAgICAgIFVOSVNUUiB1 c2VybmFtZTsKICAgICAgICBVTklTVFIgZG9jdW1lbnQ7CiAgICAgICAgVU5JU1RSIGRhdGF0eXBl OwogICAgICAgIFVOSVNUUiB0ZXh0X3N0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVz OwogICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9z aXRpb247CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFscGFnZXM7CiAgICAgICAgdW5zaWduZWQg aW50IHBhZ2VzcHJpbnRlZDsKICAgICAgICBTWVNURU1USU1FIHN1Ym1pdHRlZDsKfQpKT0JfSU5G T18xOwoKdHlwZWRlZiBzdHJ1Y3Qgc19qb2JfaW5mb18yCnsKICAgICAgICB1bnNpZ25lZCBpbnQg am9iaWQ7CiAgICAgICAgVU5JU1RSIHByaW50ZXJuYW1lOwogICAgICAgIFVOSVNUUiBtYWNoaW5l bmFtZTsKICAgICAgICBVTklTVFIgdXNlcm5hbWU7CiAgICAgICAgVU5JU1RSIGRvY3VtZW50Owog ICAgICAgIFVOSVNUUiBub3RpZnluYW1lOwogICAgICAgIFVOSVNUUiBkYXRhdHlwZTsKICAgICAg ICBVTklTVFIgcHJpbnRwcm9jZXNzb3I7CiAgICAgICAgVU5JU1RSIHBhcmFtZXRlcnM7CiAgICAg ICAgVU5JU1RSIGRyaXZlcm5hbWU7CiAgICAgICAgREVWSUNFTU9ERSAqZGV2bW9kZTsKICAgICAg ICBVTklTVFIgdGV4dF9zdGF0dXM7CgogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg ICAgdW5zaWduZWQgaW50IHByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBwb3NpdGlvbjsK ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCB1bnRp bHRpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFscGFnZXM7CiAgICAgICAgdW5zaWduZWQg aW50IHNpemU7CiAgICAgICAgU1lTVEVNVElNRSBzdWJtaXR0ZWQ7CiAgICAgICAgdW5zaWduZWQg aW50IHRpbWVlbGFwc2VkOwogICAgICAgIHVuc2lnbmVkIGludCBwYWdlc3ByaW50ZWQ7Cn0KSk9C X0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZW51bWpvYnMKewogICAgICAgIFBPTElD WV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBmaXJzdGpvYjsKICAgICAgICB1bnNp Z25lZCBpbnQgbnVtb2Zqb2JzOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBO RVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xf UV9FTlVNSk9CUzsKCnR5cGVkZWYgc3RydWN0IGpvYl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICB1 bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzEgKipqb2JfaW5mb18xOwog ICAgICAgICAgICAgICAgSk9CX0lORk9fMiAqKmpvYl9pbmZvXzI7CiAgICAgICAgICAgICAgICB2 b2lkICppbmZvOwogICAgICAgIH0gam9iOwoKfSBKT0JfSU5GT19DVFI7Cgp0eXBlZGVmIHN0cnVj dCBzcG9vbF9yX2VudW1qb2JzCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAg dW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0dXJuZWQ7CiAgICAg ICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1KT0JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv b2xfcV9zY2hlZHVsZWpvYgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5z aWduZWQgaW50IGpvYmlkOwp9ClNQT09MX1FfU0NIRURVTEVKT0I7Cgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9yX3NjaGVkdWxlam9iCnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfU0NI RURVTEVKT0I7Cgp0eXBlZGVmIHN0cnVjdCBzX3BvcnRfaW5mb18xCnsKICAgICAgICBVTklTVFIg cG9ydF9uYW1lOwp9ClBPUlRfSU5GT18xOwoKdHlwZWRlZiBzdHJ1Y3Qgc19wb3J0X2luZm9fMgp7 CiAgICAgICAgVU5JU1RSIHBvcnRfbmFtZTsKICAgICAgICBVTklTVFIgbW9uaXRvcl9uYW1lOwog ICAgICAgIFVOSVNUUiBkZXNjcmlwdGlvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF90eXBl OwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDsKfQpQT1JUX0lORk9fMjsKCnR5cGVkZWYg c3RydWN0IHNwb29sX3FfZW51bXBvcnRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7 CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAg ICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BP T0xfUV9FTlVNUE9SVFM7Cgp0eXBlZGVmIHN0cnVjdCBwb3J0X2luZm9fY3RyX2luZm8KewogICAg ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgUE9SVF9JTkZPXzEgKmluZm9fMTsK ICAgICAgICAgICAgICAgIFBPUlRfSU5GT18yICppbmZvXzI7CiAgICAgICAgfQogICAgICAgIHBv cnQ7Cgp9ClBPUlRfSU5GT19DVFI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2VudW1wb3J0cwp7 CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7 CiAgICAgICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0K U1BPT0xfUl9FTlVNUE9SVFM7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBqb2JfaW5mb19pbmZvCnsK ICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzEgam9iX2lu Zm9fMTsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzIgam9iX2luZm9fMjsKICAgICAgICB9CiAg ICAgICAgam9iOwoKfQpKT0JfSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ffc2V0am9iCnsK ICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICB1bnNpZ25lZCBpbnQgam9iaWQ7CiAg ICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIEpPQl9JTkZPIGN0cjsKICAgICAgICB1 bnNpZ25lZCBpbnQgY29tbWFuZDsKCn0KU1BPT0xfUV9TRVRKT0I7Cgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9yX3NldGpvYgp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKCn0KU1BPT0xfUl9TRVRKT0I7 Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2VudW1wcmludGVyZHJpdmVycwp7CiAgICAgICAgdW5z aWduZWQgaW50IG5hbWVfcHRyOwogICAgICAgIFVOSVNUUjIgbmFtZTsKICAgICAgICB1bnNpZ25l ZCBpbnQgZW52aXJvbm1lbnRfcHRyOwogICAgICAgIFVOSVNUUjIgZW52aXJvbm1lbnQ7CiAgICAg ICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAg ICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VOVU1QUklOVEVSRFJJVkVSUzsKCnR5 cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50ZXJkcml2ZXJzCnsKICAgICAgICBORVdfQlVG RkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25l ZCBpbnQgcmV0dXJuZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1QUklO VEVSRFJJVkVSUzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX2Zvcm1fMQp7CiAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWc7CiAgICAgICAgVU5JU1RSIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IHdp ZHRoOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgaW50IGxl ZnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRvcDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmlnaHQ7 CiAgICAgICAgdW5zaWduZWQgaW50IGJvdHRvbTsKfQpGT1JNXzE7Cgp0eXBlZGVmIHN0cnVjdCBz cG9vbF9xX2VudW1mb3Jtcwp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5z aWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNp Z25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VOVU1GT1JNUzsKCnR5cGVkZWYgc3RydWN0IHNw b29sX3JfZW51bWZvcm1zCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5z aWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtb2Zmb3JtczsKICAgICAg ICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfRU5VTUZPUk1TOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv b2xfcV9nZXRmb3JtCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIy IGZvcm1uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVS ICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9HRVRGT1JN OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9nZXRmb3JtCnsKICAgICAgICBORVdfQlVGRkVSICpi dWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICBXRVJST1Igc3RhdHVz Owp9ClNQT09MX1JfR0VURk9STTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19s ZXZlbF8xCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50 IGRlc2NyaXB0aW9uX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAg dW5zaWduZWQgaW50IGNvbW1lbnRfcHRyOwogICAgICAgIFVOSVNUUjIgZGVzY3JpcHRpb247CiAg ICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIFVOSVNUUjIgY29tbWVudDsKfSBTUE9PTF9QUklO VEVSX0lORk9fTEVWRUxfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19sZXZl bF8yCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVybmFtZV9wdHI7CiAgICAgICAgdW5zaWdu ZWQgaW50IHByaW50ZXJuYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hhcmVuYW1lX3B0 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5hbWVfcHRyOwogICAgICAgIHVuc2lnbmVkIGlu dCBkcml2ZXJuYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY29tbWVudF9wdHI7CiAgICAg ICAgdW5zaWduZWQgaW50IGxvY2F0aW9uX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGV2bW9k ZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IHNlcGZpbGVfcHRyOwogICAgICAgIHVuc2lnbmVk IGludCBwcmludHByb2Nlc3Nvcl9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGRhdGF0eXBlX3B0 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFyYW1ldGVyc19wdHI7CiAgICAgICAgdW5zaWduZWQg aW50IHNlY2Rlc2NfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGVzOwogICAgICAg IHVuc2lnbmVkIGludCBwcmlvcml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wcmlv cml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGlu dCB1bnRpbHRpbWU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQg Y2pvYnM7CiAgICAgICAgdW5zaWduZWQgaW50IGF2ZXJhZ2VwcG07CiAgICAgICAgVU5JU1RSMiBz ZXJ2ZXJuYW1lOwogICAgICAgIFVOSVNUUjIgcHJpbnRlcm5hbWU7CiAgICAgICAgVU5JU1RSMiBz aGFyZW5hbWU7CiAgICAgICAgVU5JU1RSMiBwb3J0bmFtZTsKICAgICAgICBVTklTVFIyIGRyaXZl cm5hbWU7CiAgICAgICAgVU5JU1RSMiBjb21tZW50OwogICAgICAgIFVOSVNUUjIgbG9jYXRpb247 CiAgICAgICAgVU5JU1RSMiBzZXBmaWxlOwogICAgICAgIFVOSVNUUjIgcHJpbnRwcm9jZXNzb3I7 CiAgICAgICAgVU5JU1RSMiBkYXRhdHlwZTsKICAgICAgICBVTklTVFIyIHBhcmFtZXRlcnM7CiAg ICAgICAgU0VDX0RFU0NfQlVGICpzZWNkZXNjOwp9ClNQT09MX1BSSU5URVJfSU5GT19MRVZFTF8y OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcHJpbnRlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVu c2lnbmVkIGludCBzZWNkZXNjX3B0cjsKfQpTUE9PTF9QUklOVEVSX0lORk9fTEVWRUxfMzsKCnR5 cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19sZXZlbAp7CiAgICAgICAgdW5zaWduZWQg aW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBpbmZvX3B0cjsKICAgICAgICBTUE9PTF9Q UklOVEVSX0lORk9fTEVWRUxfMSAqaW5mb18xOwogICAgICAgIFNQT09MX1BSSU5URVJfSU5GT19M RVZFTF8yICppbmZvXzI7CiAgICAgICAgU1BPT0xfUFJJTlRFUl9JTkZPX0xFVkVMXzMgKmluZm9f MzsKfQpTUE9PTF9QUklOVEVSX0lORk9fTEVWRUw7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9wcmlu dGVyX2RyaXZlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVuc2lnbmVkIGludCBjdmVyc2lvbjsK ICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGVudmly b25tZW50X3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHJpdmVycGF0aF9wdHI7CiAgICAgICAg dW5zaWduZWQgaW50IGRhdGFmaWxlX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY29uZmlnZmls ZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGhlbHBmaWxlX3B0cjsKICAgICAgICB1bnNpZ25l ZCBpbnQgbW9uaXRvcm5hbWVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBkZWZhdWx0ZGF0YXR5 cGVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBkZXBlbmRlbnRmaWxlc3NpemU7CiAgICAgICAg dW5zaWduZWQgaW50IGRlcGVuZGVudGZpbGVzX3B0cjsKCiAgICAgICAgVU5JU1RSMiBuYW1lOwog ICAgICAgIFVOSVNUUjIgZW52aXJvbm1lbnQ7CiAgICAgICAgVU5JU1RSMiBkcml2ZXJwYXRoOwog ICAgICAgIFVOSVNUUjIgZGF0YWZpbGU7CiAgICAgICAgVU5JU1RSMiBjb25maWdmaWxlOwogICAg ICAgIFVOSVNUUjIgaGVscGZpbGU7CiAgICAgICAgVU5JU1RSMiBtb25pdG9ybmFtZTsKICAgICAg ICBVTklTVFIyIGRlZmF1bHRkYXRhdHlwZTsKICAgICAgICBCVUZGRVI1IGRlcGVuZGVudGZpbGVz OwoKfQpTUE9PTF9QUklOVEVSX0RSSVZFUl9JTkZPX0xFVkVMXzM7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuYW1l X3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZW52aXJvbm1lbnRfcHRyOwogICAgICAgIHVuc2ln bmVkIGludCBkcml2ZXJwYXRoX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0YWZpbGVfcHRy OwogICAgICAgIHVuc2lnbmVkIGludCBjb25maWdmaWxlX3B0cjsKICAgICAgICB1bnNpZ25lZCBp bnQgaGVscGZpbGVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBtb25pdG9ybmFtZV9wdHI7CiAg ICAgICAgdW5zaWduZWQgaW50IGRlZmF1bHRkYXRhdHlwZV9wdHI7CiAgICAgICAgdW5zaWduZWQg aW50IGRlcGVuZGVudGZpbGVzX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVwZW5kZW50Zmls ZXNfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBwcmV2aW91c25hbWVzX2xlbjsKICAgICAgICB1 bnNpZ25lZCBpbnQgcHJldmlvdXNuYW1lc19wdHI7CiAgICAgICAgTlRUSU1FIGRyaXZlcmRhdGU7 CiAgICAgICAgVUlOVDY0X1MgZHJpdmVydmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVt bXk0OwogICAgICAgIHVuc2lnbmVkIGludCBtZmduYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBp bnQgb2VtdXJsX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgaGFyZHdhcmVpZF9wdHI7CiAgICAg ICAgdW5zaWduZWQgaW50IHByb3ZpZGVyX3B0cjsKICAgICAgICBVTklTVFIyIG5hbWU7CiAgICAg ICAgVU5JU1RSMiBlbnZpcm9ubWVudDsKICAgICAgICBVTklTVFIyIGRyaXZlcnBhdGg7CiAgICAg ICAgVU5JU1RSMiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIyIGNvbmZpZ2ZpbGU7CiAgICAgICAg VU5JU1RSMiBoZWxwZmlsZTsKICAgICAgICBVTklTVFIyIG1vbml0b3JuYW1lOwogICAgICAgIFVO SVNUUjIgZGVmYXVsdGRhdGF0eXBlOwogICAgICAgIEJVRkZFUjUgZGVwZW5kZW50ZmlsZXM7CiAg ICAgICAgQlVGRkVSNSBwcmV2aW91c25hbWVzOwogICAgICAgIFVOSVNUUjIgbWZnbmFtZTsKICAg ICAgICBVTklTVFIyIG9lbXVybDsKICAgICAgICBVTklTVFIyIGhhcmR3YXJlaWQ7CiAgICAgICAg VU5JU1RSMiBwcm92aWRlcjsKfSBTUE9PTF9QUklOVEVSX0RSSVZFUl9JTkZPX0xFVkVMXzY7CgoK dHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcHJpbnRlcl9kcml2ZXJfaW5mb19sZXZlbAp7CiAgICAgICAg dW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgU1BP T0xfUFJJTlRFUl9EUklWRVJfSU5GT19MRVZFTF8zICppbmZvXzM7CiAgICAgICAgU1BPT0xfUFJJ TlRFUl9EUklWRVJfSU5GT19MRVZFTF82ICppbmZvXzY7Cn0KU1BPT0xfUFJJTlRFUl9EUklWRVJf SU5GT19MRVZFTDsKCgoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3VzZXJfbGV2ZWxfMQp7CiAgICAg ICAgdW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGNsaWVudF9uYW1lX3B0 cjsKICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9uYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBp bnQgYnVpbGQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1ham9yOwogICAgICAgIHVuc2lnbmVkIGlu dCBtaW5vcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJvY2Vzc29yOwogICAgICAgIFVOSVNUUjIg Y2xpZW50X25hbWU7CiAgICAgICAgVU5JU1RSMiB1c2VyX25hbWU7Cn0KU1BPT0xfVVNFUl9MRVZF TF8xOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfdXNlcl9sZXZlbAp7CiAgICAgICAgU1BPT0xfVVNF Ul9MRVZFTF8xICp1c2VyX2xldmVsXzE7Cn0KU1BPT0xfVVNFUl9MRVZFTDsKCnR5cGVkZWYgc3Ry dWN0IHNwb29sX3Ffc2V0cHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAg ICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIFNQT09MX1BSSU5URVJfSU5GT19MRVZFTCBp bmZvOwogICAgICAgIFNFQ19ERVNDX0JVRiAqc2VjZGVzY19jdHI7CiAgICAgICAgREVWTU9ERV9D VFIgZGV2bW9kZV9jdHI7CgogICAgICAgIHVuc2lnbmVkIGludCBjb21tYW5kOwoKfQpTUE9PTF9R X1NFVFBSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3NldHByaW50ZXIKewogICAgICAg IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9TRVRQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv b2xfcV9hZGRwcmludGVyCnsKICAgICAgICBVTklTVFIyIHNlcnZlcl9uYW1lOwogICAgICAgIHVu c2lnbmVkIGludCBsZXZlbDsKICAgICAgICBTUE9PTF9QUklOVEVSX0lORk9fTEVWRUwgaW5mbzsK ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMTsKICAg ICAgICB1bnNpZ25lZCBpbnQgdW5rMjsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMzsKICAgICAg ICB1bnNpZ25lZCBpbnQgdXNlcl9sZXZlbDsKICAgICAgICBTUE9PTF9VU0VSX0xFVkVMIHVzZXI7 Cn0KU1BPT0xfUV9BRERQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9hZGRwcmludGVy CnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfQUREUFJJTlRFUjsKCnR5cGVkZWYg c3RydWN0IHNwb29sX3FfZGVsZXRlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7 Cn0KU1BPT0xfUV9ERUxFVEVQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9kZWxldGVw cmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVz Owp9ClNQT09MX1JfREVMRVRFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfYWJvcnRw cmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX0FCT1JUUFJJTlRF UjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWJvcnRwcmludGVyCnsKICAgICAgICBXRVJST1Ig c3RhdHVzOwp9ClNQT09MX1JfQUJPUlRQUklOVEVSOwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ff YWRkcHJpbnRlcmV4CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVyX25hbWVfcHRyOwogICAg ICAgIFVOSVNUUjIgc2VydmVyX25hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAg ICAgIFNQT09MX1BSSU5URVJfSU5GT19MRVZFTCBpbmZvOwogICAgICAgIHVuc2lnbmVkIGludCB1 bmswOwogICAgICAgIHVuc2lnbmVkIGludCB1bmsxOwogICAgICAgIHVuc2lnbmVkIGludCB1bmsy OwogICAgICAgIHVuc2lnbmVkIGludCB1bmszOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3N3 aXRjaDsKICAgICAgICBTUE9PTF9VU0VSX0NUUiB1c2VyX2N0cjsKfQpTUE9PTF9RX0FERFBSSU5U RVJFWDsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWRkcHJpbnRlcmV4CnsKICAgICAgICBQT0xJ Q1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfQUREUFJJTlRF UkVYOwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfYWRkcHJpbnRlcmRyaXZlcgp7CiAgICAgICAg dW5zaWduZWQgaW50IHNlcnZlcl9uYW1lX3B0cjsKICAgICAgICBVTklTVFIyIHNlcnZlcl9uYW1l OwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBTUE9PTF9QUklOVEVSX0RSSVZF Ul9JTkZPX0xFVkVMIGluZm87Cn0KU1BPT0xfUV9BRERQUklOVEVSRFJJVkVSOwoKdHlwZWRlZiBz dHJ1Y3Qgc3Bvb2xfcl9hZGRwcmludGVyZHJpdmVyCnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9 ClNQT09MX1JfQUREUFJJTlRFUkRSSVZFUjsKCgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJfZGlyZWN0 b3J5XzEKewogICAgICAgIFVOSVNUUiBuYW1lOwp9CkRSSVZFUl9ESVJFQ1RPUllfMTsKCnR5cGVk ZWYgc3RydWN0IGRyaXZlcl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICBEUklWRVJfRElSRUNUT1JZ XzEgKmluZm8xOwp9CkRSSVZFUl9ESVJFQ1RPUllfQ1RSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf cV9nZXRwcmludGVyZHJpdmVyZGlyZWN0b3J5CnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9w dHI7CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBlbnZpcm9ubWVu dF9wdHI7CiAgICAgICAgVU5JU1RSMiBlbnZpcm9ubWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg bGV2ZWw7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBv ZmZlcmVkOwp9ClNQT09MX1FfR0VUUFJJTlRFUkRSSVZFUkRJUjsKCnR5cGVkZWYgc3RydWN0IHNw b29sX3JfZ2V0cHJpbnRlcmRyaXZlcmRpcmVjdG9yeQp7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVm ZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK fQpTUE9PTF9SX0dFVFBSSU5URVJEUklWRVJESVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Fk ZHByaW50cHJvY2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVyX3B0cjsKICAgICAg ICBVTklTVFIyIHNlcnZlcjsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIFVO SVNUUjIgcGF0aDsKICAgICAgICBVTklTVFIyIG5hbWU7Cn0KU1BPT0xfUV9BRERQUklOVFBST0NF U1NPUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWRkcHJpbnRwcm9jZXNzb3IKewogICAgICAg IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9BRERQUklOVFBST0NFU1NPUjsKCgp0eXBlZGVmIHN0 cnVjdCBzcG9vbF9xX2VudW1wcmludHByb2Nlc3NvcnMKewogICAgICAgIHVuc2lnbmVkIGludCBu YW1lX3B0cjsKICAgICAgICBVTklTVFIyIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGVudmly b25tZW50X3B0cjsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIHVuc2lnbmVk IGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQg aW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9FTlVNUFJJTlRQUk9DRVNTT1JTOwoKdHlwZWRlZiBzdHJ1 Y3QgcHJpbnRwcm9jZXNzb3JfMQp7CiAgICAgICAgVU5JU1RSIG5hbWU7Cn0KUFJJTlRQUk9DRVNT T1JfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50cHJvY2Vzc29ycwp7CiAgICAg ICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAg ICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xf Ul9FTlVNUFJJTlRQUk9DRVNTT1JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9lbnVtcHJpbnRw cm9jZGF0YXR5cGVzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAgVU5J U1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwcm9jZXNzb3JfcHRyOwogICAgICAgIFVO SVNUUjIgcHJvY2Vzc29yOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdf QlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9F TlVNUFJJTlRQUk9DREFUQVRZUEVTOwoKdHlwZWRlZiBzdHJ1Y3QgcHBkYXRhdHlwZV8xCnsKICAg ICAgICBVTklTVFIgbmFtZTsKfQpQUklOVFBST0NEQVRBVFlQRV8xOwoKdHlwZWRlZiBzdHJ1Y3Qg c3Bvb2xfcl9lbnVtcHJpbnRwcm9jZGF0YXR5cGVzCnsKICAgICAgICBORVdfQlVGRkVSICpidWZm ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0 dXJuZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1QUklOVFBST0NEQVRB VFlQRVM7Cgp0eXBlZGVmIHN0cnVjdCBwcmludG1vbml0b3JfMQp7CiAgICAgICAgVU5JU1RSIG5h bWU7Cn0KUFJJTlRNT05JVE9SXzE7Cgp0eXBlZGVmIHN0cnVjdCBwcmludG1vbml0b3JfMgp7CiAg ICAgICAgVU5JU1RSIG5hbWU7CiAgICAgICAgVU5JU1RSIGVudmlyb25tZW50OwogICAgICAgIFVO SVNUUiBkbGxfbmFtZTsKfQpQUklOVE1PTklUT1JfMjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ff ZW51bXByaW50bW9uaXRvcnMKewogICAgICAgIHVuc2lnbmVkIGludCBuYW1lX3B0cjsKICAgICAg ICBVTklTVFIyIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19C VUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VO VU1QUklOVE1PTklUT1JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRtb25pdG9y cwp7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVk ZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7 Cn0KU1BPT0xfUl9FTlVNUFJJTlRNT05JVE9SUzsKCgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Vu dW1wcmludGVyZGF0YQp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWdu ZWQgaW50IGluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZXNpemU7CiAgICAgICAgdW5z aWduZWQgaW50IGRhdGFzaXplOwp9ClNQT09MX1FfRU5VTVBSSU5URVJEQVRBOwoKdHlwZWRlZiBz dHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcmRhdGEKewogICAgICAgIHVuc2lnbmVkIGludCB2YWx1 ZXNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnZhbHVlOwogICAgICAgIHVuc2lnbmVkIGlu dCByZWFsdmFsdWVzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2ln bmVkIGludCBkYXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVu c2lnbmVkIGludCByZWFsZGF0YXNpemU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9S X0VOVU1QUklOVEVSREFUQTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ffc2V0cHJpbnRlcmRhdGEK ewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIgdmFsdWU7CiAgICAg ICAgdW5zaWduZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW47CiAgICAg ICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhbF9sZW47CiAg ICAgICAgdW5zaWduZWQgaW50IG51bWVyaWNfZGF0YTsKfQpTUE9PTF9RX1NFVFBSSU5URVJEQVRB OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9zZXRwcmludGVyZGF0YQp7CiAgICAgICAgV0VSUk9S IHN0YXR1czsKfQpTUE9PTF9SX1NFVFBSSU5URVJEQVRBOwoKdHlwZWRlZiBzdHJ1Y3QgX2Zvcm0K ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9w dHI7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemVfeDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6 ZV95OwogICAgICAgIHVuc2lnbmVkIGludCBsZWZ0OwogICAgICAgIHVuc2lnbmVkIGludCB0b3A7 CiAgICAgICAgdW5zaWduZWQgaW50IHJpZ2h0OwogICAgICAgIHVuc2lnbmVkIGludCBib3R0b207 CiAgICAgICAgVU5JU1RSMiBuYW1lOwp9CkZPUk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Fk ZGZvcm0KewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBs ZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwyOwogICAgICAgIEZPUk0gZm9ybTsKfQpT UE9PTF9RX0FEREZPUk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2FkZGZvcm0KewogICAgICAg IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9BRERGT1JNOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf cV9zZXRmb3JtCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIyIG5h bWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZl bDI7CiAgICAgICAgRk9STSBmb3JtOwp9ClNQT09MX1FfU0VURk9STTsKCnR5cGVkZWYgc3RydWN0 IHNwb29sX3Jfc2V0Zm9ybQp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX1NFVEZP Uk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2RlbGV0ZWZvcm0KewogICAgICAgIFBPTElDWV9I TkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIgbmFtZTsKfQpTUE9PTF9RX0RFTEVURUZPUk07Cgp0 eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2RlbGV0ZWZvcm0KewogICAgICAgIFdFUlJPUiBzdGF0dXM7 Cn0KU1BPT0xfUl9ERUxFVEVGT1JNOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9nZXRqb2IKewog ICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBqb2JpZDsKICAg ICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAg ICAgIHVuc2lnbmVkIGludCBvZmZlcmVkOwp9ClNQT09MX1FfR0VUSk9COwoKdHlwZWRlZiBzdHJ1 Y3QgcGpvYl9pbmZvX2luZm8KewogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAg ICAgSk9CX0lORk9fMSAqam9iX2luZm9fMTsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzIgKmpv Yl9pbmZvXzI7CiAgICAgICAgICAgICAgICB2b2lkICppbmZvOwogICAgICAgIH0KICAgICAgICBq b2I7Cgp9ClBKT0JfSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZ2V0am9iCnsKICAgICAg ICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAg ICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfR0VUSk9COwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf cV9yZXBseW9wZW5wcmludGVyCnsKICAgICAgICBVTklTVFIyIHN0cmluZzsKICAgICAgICB1bnNp Z25lZCBpbnQgcHJpbnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNp Z25lZCBpbnQgdW5rbm93bjA7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xOwp9ClNQT09M X1FfUkVQTFlPUEVOUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcmVwbHlvcGVucHJp bnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK fQpTUE9PTF9SX1JFUExZT1BFTlBSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX3JlcGx5 Y2xvc2VwcmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX1JFUExZ Q0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9yZXBseWNsb3NlcHJpbnRlcgp7 CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9P TF9SX1JFUExZQ0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9ycnBjbgp7CiAg ICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9sb3c7 CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9oaWdoOwogICAgICAgIHVuc2lnbmVkIGludCB1 bmtub3duMDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE7CiAgICAgICAgdW5zaWduZWQg aW50IGluZm9fcHRyOwogICAgICAgIFNQT09MX05PVElGWV9JTkZPIGluZm87Cn0KU1BPT0xfUV9S RVBMWV9SUlBDTjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcnJwY24KewogICAgICAgIHVuc2ln bmVkIGludCB1bmtub3duMDsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfUkVQTFlf UlJQQ047Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2dldHByaW50ZXJkYXRhZXgKewogICAgICAg IFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIga2V5bmFtZTsKICAgICAgICBVTklT VFIyIHZhbHVlbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKfQpTUE9PTF9RX0dFVFBS SU5URVJEQVRBRVg7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkYXRhZXgKewog ICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAg ICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfR0VUUFJJTlRFUkRBVEFFWDsKCnR5cGVkZWYg c3RydWN0IHNwb29sX3Ffc2V0cHJpbnRlcmRhdGFleAp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5k bGU7CiAgICAgICAgVU5JU1RSMiBrZXk7CiAgICAgICAgVU5JU1RSMiB2YWx1ZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbjsKICAgICAgICB1 bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCByZWFsX2xlbjsKICAgICAg ICB1bnNpZ25lZCBpbnQgbnVtZXJpY19kYXRhOwp9ClNQT09MX1FfU0VUUFJJTlRFUkRBVEFFWDsK CnR5cGVkZWYgc3RydWN0IHNwb29sX3Jfc2V0cHJpbnRlcmRhdGFleAp7CiAgICAgICAgV0VSUk9S IHN0YXR1czsKfQpTUE9PTF9SX1NFVFBSSU5URVJEQVRBRVg7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv b2xfcV9lbnVtcHJpbnRlcmtleQp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAg VU5JU1RSMiBrZXk7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Cn0KU1BPT0xfUV9FTlVNUFJJ TlRFUktFWTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50ZXJrZXkKewogICAgICAg IEJVRkZFUjUga2V5czsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIFdFUlJP UiBzdGF0dXM7Cn0KU1BPT0xfUl9FTlVNUFJJTlRFUktFWTsKCnR5cGVkZWYgc3RydWN0IHByaW50 ZXJfZW51bV92YWx1ZXMKewogICAgICAgIFVOSVNUUiB2YWx1ZW5hbWU7CiAgICAgICAgdW5zaWdu ZWQgaW50IHZhbHVlX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNp Z25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBkYXRhX2xlbjsKCn0KUFJJTlRF Ul9FTlVNX1ZBTFVFUzsKCnR5cGVkZWYgc3RydWN0IHByaW50ZXJfZW51bV92YWx1ZXNfY3RyCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZV9vZl9h cnJheTsKICAgICAgICBQUklOVEVSX0VOVU1fVkFMVUVTICp2YWx1ZXM7Cn0KUFJJTlRFUl9FTlVN X1ZBTFVFU19DVFI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2VudW1wcmludGVyZGF0YWV4CnsK ICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIyIGtleTsKICAgICAgICB1 bnNpZ25lZCBpbnQgc2l6ZTsKfQpTUE9PTF9RX0VOVU1QUklOVEVSREFUQUVYOwoKdHlwZWRlZiBz dHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcmRhdGFleAp7CiAgICAgICAgUFJJTlRFUl9FTlVNX1ZB TFVFU19DVFIgY3RyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgdW5zaWdu ZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9FTlVNUFJJ TlRFUkRBVEFFWDsKCnR5cGVkZWYgc3RydWN0IHByaW50cHJvY2Vzc29yX2RpcmVjdG9yeV8xCnsK ICAgICAgICBVTklTVFIgbmFtZTsKfQpQUklOVFBST0NFU1NPUl9ESVJFQ1RPUllfMTsKCnR5cGVk ZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRwcm9jZXNzb3JkaXJlY3RvcnkKewogICAgICAgIFVO SVNUUjIgbmFtZTsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIHVuc2lnbmVk IGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQg aW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9HRVRQUklOVFBST0NFU1NPUkRJUkVDVE9SWTsKCnR5cGVk ZWYgc3RydWN0IHNwb29sX3JfZ2V0cHJpbnRwcm9jZXNzb3JkaXJlY3RvcnkKewogICAgICAgIE5F V19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIFdF UlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9HRVRQUklOVFBST0NFU1NPUkRJUkVDVE9SWTsKIyAyODUg ImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX2Rmcy5oIiAxCiMgMzggImlu Y2x1ZGUvcnBjX2Rmcy5oIgp0eXBlZGVmIHN0cnVjdCBkZnNfcV9kZnNfZXhpc3QKewogIHVuc2ln bmVkIGludCBkdW1teTsKfQpERlNfUV9ERlNfRVhJU1Q7CgoKdHlwZWRlZiBzdHJ1Y3QgZGZzX3Jf ZGZzX2V4aXN0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwp9CkRGU19SX0RGU19FWElT VDsKCnR5cGVkZWYgc3RydWN0IGRmc19xX2Rmc19hZGQKewogIHVuc2lnbmVkIGludCBwdHJfRGZz RW50cnlQYXRoOwogIFVOSVNUUjIgRGZzRW50cnlQYXRoOwogIHVuc2lnbmVkIGludCBwdHJfU2Vy dmVyTmFtZTsKICBVTklTVFIyIFNlcnZlck5hbWU7CiAgdW5zaWduZWQgaW50IHB0cl9TaGFyZU5h bWU7CiAgVU5JU1RSMiBTaGFyZU5hbWU7CiAgdW5zaWduZWQgaW50IHB0cl9Db21tZW50OwogIFVO SVNUUjIgQ29tbWVudDsKICB1bnNpZ25lZCBpbnQgRmxhZ3M7Cn0KREZTX1FfREZTX0FERDsKCnR5 cGVkZWYgc3RydWN0IGRmc19yX2Rmc19hZGQKewogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZT X0FERDsKCgp0eXBlZGVmIHN0cnVjdCBkZnNfcV9kZnNfcmVtb3ZlCnsKICBVTklTVFIyIERmc0Vu dHJ5UGF0aDsKICB1bnNpZ25lZCBpbnQgcHRyX1NlcnZlck5hbWU7CiAgVU5JU1RSMiBTZXJ2ZXJO YW1lOwogIHVuc2lnbmVkIGludCBwdHJfU2hhcmVOYW1lOwogIFVOSVNUUjIgU2hhcmVOYW1lOwp9 CkRGU19RX0RGU19SRU1PVkU7Cgp0eXBlZGVmIHN0cnVjdCBkZnNfcl9kZnNfcmVtb3ZlCnsKICBX RVJST1Igc3RhdHVzOwp9CkRGU19SX0RGU19SRU1PVkU7CgoKdHlwZWRlZiBzdHJ1Y3QgZGZzX2lu Zm9fMQp7CiAgdW5zaWduZWQgaW50IHB0cl9lbnRyeXBhdGg7CiAgVU5JU1RSMiBlbnRyeXBhdGg7 Cn0KREZTX0lORk9fMTsKCnR5cGVkZWYgc3RydWN0IGRmc19pbmZvXzIKewogIHVuc2lnbmVkIGlu dCBwdHJfZW50cnlwYXRoOwogIFVOSVNUUjIgZW50cnlwYXRoOwogIHVuc2lnbmVkIGludCBwdHJf Y29tbWVudDsKICBVTklTVFIyIGNvbW1lbnQ7CiAgdW5zaWduZWQgaW50IHN0YXRlOwogIHVuc2ln bmVkIGludCBudW1fc3RvcmFnZXM7Cn0KREZTX0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IGRmc19z dG9yYWdlX2luZm8KewogIHVuc2lnbmVkIGludCBzdGF0ZTsKICB1bnNpZ25lZCBpbnQgcHRyX3Nl cnZlcm5hbWU7CiAgVU5JU1RSMiBzZXJ2ZXJuYW1lOwogIHVuc2lnbmVkIGludCBwdHJfc2hhcmVu YW1lOwogIFVOSVNUUjIgc2hhcmVuYW1lOwp9CkRGU19TVE9SQUdFX0lORk87Cgp0eXBlZGVmIHN0 cnVjdCBkZnNfaW5mb18zCnsKICB1bnNpZ25lZCBpbnQgcHRyX2VudHJ5cGF0aDsKICBVTklTVFIy IGVudHJ5cGF0aDsKICB1bnNpZ25lZCBpbnQgcHRyX2NvbW1lbnQ7CiAgVU5JU1RSMiBjb21tZW50 OwogIHVuc2lnbmVkIGludCBzdGF0ZTsKICB1bnNpZ25lZCBpbnQgbnVtX3N0b3JhZ2VzOwogIHVu c2lnbmVkIGludCBwdHJfc3RvcmFnZXM7CiAgdW5zaWduZWQgaW50IG51bV9zdG9yYWdlX2luZm9z OwogIERGU19TVE9SQUdFX0lORk8qIHN0b3JhZ2VzOwp9CkRGU19JTkZPXzM7Cgp0eXBlZGVmIHN0 cnVjdCBkZnNfaW5mb19jdHIKewoKICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogIHVuc2ln bmVkIGludCBudW1fZW50cmllczsKICB1bnNpZ25lZCBpbnQgcHRyX2Rmc19jdHI7CiAgdW5pb24K ICB7CiAgICBERlNfSU5GT18xICppbmZvMTsKICAgIERGU19JTkZPXzIgKmluZm8yOwogICAgREZT X0lORk9fMyAqaW5mbzM7CiAgfSBkZnM7Cn0KREZTX0lORk9fQ1RSOwoKdHlwZWRlZiBzdHJ1Y3Qg ZGZzX3FfZGZzX2dldF9pbmZvCnsKICBVTklTVFIyIHVuaV9wYXRoOwoKICB1bnNpZ25lZCBpbnQg cHRyX3NlcnZlcjsKICBVTklTVFIyIHVuaV9zZXJ2ZXI7CgogIHVuc2lnbmVkIGludCBwdHJfc2hh cmU7CiAgVU5JU1RSMiB1bmlfc2hhcmU7CgogIHVuc2lnbmVkIGludCBsZXZlbDsKfQpERlNfUV9E RlNfR0VUX0lORk87Cgp0eXBlZGVmIHN0cnVjdCBkZnNfcl9kZnNfZ2V0X2luZm8KewogIHVuc2ln bmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgcHRyX2N0cjsKICBERlNfSU5GT19DVFIgY3Ry OwogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZTX0dFVF9JTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qg ZGZzX3FfZGZzX2VudW0KewogIHVuc2lnbmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgbWF4 cHJlZmxlbjsKICB1bnNpZ25lZCBpbnQgcHRyX2J1ZmZlcjsKICB1bnNpZ25lZCBpbnQgbGV2ZWwy OwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXM7CiAgdW5zaWduZWQgaW50IG51bV9lbnRy aWVzOwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXMyOwogIHVuc2lnbmVkIGludCBudW1f ZW50cmllczI7CiAgRU5VTV9ITkQgcmVzaG5kOwp9CkRGU19RX0RGU19FTlVNOwoKdHlwZWRlZiBz dHJ1Y3QgZGZzX3JfZGZzX2VudW0KewogIERGU19JTkZPX0NUUiAqY3RyOwogIHVuc2lnbmVkIGlu dCBwdHJfYnVmZmVyOwogIHVuc2lnbmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgbGV2ZWwy OwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXM7CiAgdW5zaWduZWQgaW50IG51bV9lbnRy aWVzOwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXMyOwogIHVuc2lnbmVkIGludCBudW1f ZW50cmllczI7CiAgRU5VTV9ITkQgcmVzaG5kOwogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZT X0VOVU07CiMgMjg2ICJpbmNsdWRlL250ZG9tYWluLmgiIDIKIyAxICJpbmNsdWRlL3NpZHMuaCIg MQojIDI3ICJpbmNsdWRlL3NpZHMuaCIKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NhbV9zaWQ7CmV4 dGVybiBmc3RyaW5nIGdsb2JhbF9zYW1fbmFtZTsKCmV4dGVybiBET01fU0lEIGdsb2JhbF9tZW1i ZXJfc2lkOwoKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NpZF9TXzFfNV8zMjsKZXh0ZXJuIERPTV9T SUQgZ2xvYmFsX3NpZF9TXzFfMTsKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NpZF9OVUxMOwoKZXh0 ZXJuIGNvbnN0IERPTV9TSUQgKmdsb2JhbF9zaWRfZXZlcnlvbmU7CmV4dGVybiBjb25zdCBET01f U0lEICpnbG9iYWxfc2lkX3N5c3RlbTsKZXh0ZXJuIGNvbnN0IERPTV9TSUQgKmdsb2JhbF9zaWRf YnVpbHRpbjsKIyAyODcgImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDI1ICJpbmNsdWRlL3JwY19t aXNjLmgiIDIKIyAxNTk1ICJpbmNsdWRlL3NtYi5oIiAyCgojIDEgImluY2x1ZGUvbnRfcHJpbnRp bmcuaCIgMQojIDEzNiAiaW5jbHVkZS9udF9wcmludGluZy5oIgp0eXBlZGVmIHN0cnVjdCBudF9w cmludGVyX2RyaXZlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVuc2lnbmVkIGludCBjdmVyc2lv bjsKCiAgICAgICAgZnN0cmluZyBuYW1lOwogICAgICAgIGZzdHJpbmcgZW52aXJvbm1lbnQ7CiAg ICAgICAgZnN0cmluZyBkcml2ZXJwYXRoOwogICAgICAgIGZzdHJpbmcgZGF0YWZpbGU7CiAgICAg ICAgZnN0cmluZyBjb25maWdmaWxlOwogICAgICAgIGZzdHJpbmcgaGVscGZpbGU7CiAgICAgICAg ZnN0cmluZyBtb25pdG9ybmFtZTsKICAgICAgICBmc3RyaW5nIGRlZmF1bHRkYXRhdHlwZTsKICAg ICAgICBmc3RyaW5nICpkZXBlbmRlbnRmaWxlczsKfSBOVF9QUklOVEVSX0RSSVZFUl9JTkZPX0xF VkVMXzM7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwog ICAgICAgIGZzdHJpbmcgbmFtZTsKICAgICAgICBmc3RyaW5nIGVudmlyb25tZW50OwogICAgICAg IGZzdHJpbmcgZHJpdmVycGF0aDsKICAgICAgICBmc3RyaW5nIGRhdGFmaWxlOwogICAgICAgIGZz dHJpbmcgY29uZmlnZmlsZTsKICAgICAgICBmc3RyaW5nIGhlbHBmaWxlOwogICAgICAgIGZzdHJp bmcgbW9uaXRvcm5hbWU7CiAgICAgICAgZnN0cmluZyBkZWZhdWx0ZGF0YXR5cGU7CiAgICAgICAg ZnN0cmluZyBtZmduYW1lOwogICAgICAgIGZzdHJpbmcgb2VtdXJsOwogICAgICAgIGZzdHJpbmcg aGFyZHdhcmVpZDsKICAgICAgICBmc3RyaW5nIHByb3ZpZGVyOwogICAgICAgIGZzdHJpbmcgKmRl cGVuZGVudGZpbGVzOwogICAgICAgIGZzdHJpbmcgKnByZXZpb3VzbmFtZXM7Cn0gTlRfUFJJTlRF Ul9EUklWRVJfSU5GT19MRVZFTF82OwoKCnR5cGVkZWYgc3RydWN0IG50X3ByaW50ZXJfZHJpdmVy X2luZm9fbGV2ZWwKewogICAgICAgIE5UX1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUxfMyAqaW5m b18zOwogICAgICAgIE5UX1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUxfNiAqaW5mb182Owp9IE5U X1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUw7Cgp0eXBlZGVmIHN0cnVjdCBudF9wcmludGVyX3Bh cmFtCnsKICAgICAgICBmc3RyaW5nIHZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwog ICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgaW50IGRhdGFfbGVuOwogICAgICAg IHN0cnVjdCBudF9wcmludGVyX3BhcmFtICpuZXh0Owp9IE5UX1BSSU5URVJfUEFSQU07Cgp0eXBl ZGVmIHN0cnVjdCBudGRldmljZW1vZGUKewogICAgICAgIGZzdHJpbmcgZGV2aWNlbmFtZTsKICAg ICAgICBmc3RyaW5nIGZvcm1uYW1lOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGVjdmVyc2lv bjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZXJ2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHJpdmVyZXh0cmE7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgb3JpZW50YXRpb247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFwZXJz aXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhcGVybGVuZ3RoOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHBhcGVyd2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2NhbGU7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgY29waWVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRlZmF1bHRzb3Vy Y2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJpbnRxdWFsaXR5OwogICAgICAgIHVuc2lnbmVk IHNob3J0IGNvbG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGR1cGxleDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCB5cmVzb2x1dGlvbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0dG9wdGlvbjsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2xsYXRlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxv Z3BpeGVsczsKCiAgICAgICAgdW5zaWduZWQgaW50IGZpZWxkczsKICAgICAgICB1bnNpZ25lZCBp bnQgYml0c3BlcnBlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVsc3dpZHRoOwogICAgICAgIHVu c2lnbmVkIGludCBwZWxzaGVpZ2h0OwogICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5ZmxhZ3M7 CiAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlmcmVxdWVuY3k7CiAgICAgICAgdW5zaWduZWQg aW50IGljbW1ldGhvZDsKICAgICAgICB1bnNpZ25lZCBpbnQgaWNtaW50ZW50OwogICAgICAgIHVu c2lnbmVkIGludCBtZWRpYXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGRpdGhlcnR5cGU7CiAg ICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkMTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2 ZWQyOwogICAgICAgIHVuc2lnbmVkIGludCBwYW5uaW5nd2lkdGg7CiAgICAgICAgdW5zaWduZWQg aW50IHBhbm5pbmdoZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcHJpdmF0ZTsKfSBOVF9E RVZJQ0VNT0RFOwoKdHlwZWRlZiBzdHJ1Y3QgbnRfcHJpbnRlcl9pbmZvX2xldmVsXzIKewogICAg ICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGVzOwogICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0 eTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wcmlvcml0eTsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCB1bnRpbHRpbWU7CiAgICAgICAg V0VSUk9SIHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQgY2pvYnM7CiAgICAgICAgdW5zaWdu ZWQgaW50IGF2ZXJhZ2VwcG07CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJuYW1lOwogICAgICAgIGZz dHJpbmcgcHJpbnRlcm5hbWU7CiAgICAgICAgZnN0cmluZyBzaGFyZW5hbWU7CiAgICAgICAgZnN0 cmluZyBwb3J0bmFtZTsKICAgICAgICBmc3RyaW5nIGRyaXZlcm5hbWU7CiAgICAgICAgcHN0cmlu ZyBjb21tZW50OwogICAgICAgIGZzdHJpbmcgbG9jYXRpb247CiAgICAgICAgTlRfREVWSUNFTU9E RSAqZGV2bW9kZTsKICAgICAgICBmc3RyaW5nIHNlcGZpbGU7CiAgICAgICAgZnN0cmluZyBwcmlu dHByb2Nlc3NvcjsKICAgICAgICBmc3RyaW5nIGRhdGF0eXBlOwogICAgICAgIGZzdHJpbmcgcGFy YW1ldGVyczsKICAgICAgICBOVF9QUklOVEVSX1BBUkFNICpzcGVjaWZpYzsKICAgICAgICBTRUNf REVTQ19CVUYgKnNlY2Rlc2NfYnVmOwoKICAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlaWQ7CiAg ICAgICAgdW5zaWduZWQgaW50IGNfc2V0cHJpbnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgc2V0 dXB0aW1lOwp9IE5UX1BSSU5URVJfSU5GT19MRVZFTF8yOwoKdHlwZWRlZiBzdHJ1Y3QgbnRfcHJp bnRlcl9pbmZvX2xldmVsCnsKICAgICAgICBOVF9QUklOVEVSX0lORk9fTEVWRUxfMiAqaW5mb18y Owp9IE5UX1BSSU5URVJfSU5GT19MRVZFTDsKCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBmc3Ry aW5nIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWc7CiAgICAgICAgdW5zaWduZWQgaW50 IHdpZHRoOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgaW50 IGxlZnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRvcDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmln aHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGJvdHRvbTsKfSBudF9mb3Jtc19zdHJ1Y3Q7CiMgMTU5 NyAiaW5jbHVkZS9zbWIuaCIgMgoKdHlwZWRlZiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QKewogICAgICAg IHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKnByZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg dnVpZDsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwoKICAgICAgICB1c2Vy ZG9tX3N0cnVjdCB1c2VyOwogICAgICAgIEJPT0wgZ3Vlc3Q7CgoKCiAgICAgICAgaW50IG5fZ3Jv dXBzOwogICAgICAgIGdpZF90ICpncm91cHM7CgogICAgICAgIE5UX1VTRVJfVE9LRU4gKm50X3Vz ZXJfdG9rZW47CgogICAgICAgIGludCBzZXNzaW9uX2lkOwp9IHVzZXJfc3RydWN0OwoKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHNpemVfdCBs ZW5ndGg7Cn0gREFUQV9CTE9COwoKCgoKIyAxICJpbmNsdWRlL2NsaWVudC5oIiAxCiMgMzcgImlu Y2x1ZGUvY2xpZW50LmgiCnR5cGVkZWYgc3RydWN0IGZpbGVfaW5mbwp7CiAgICAgICAgb2ZmX3Qg c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtb2RlOwogICAgICAgIHVpZF90IHVpZDsKICAg ICAgICBnaWRfdCBnaWQ7CgogICAgICAgIHRpbWVfdCBtdGltZTsKICAgICAgICB0aW1lX3QgYXRp bWU7CiAgICAgICAgdGltZV90IGN0aW1lOwogICAgICAgIHBzdHJpbmcgbmFtZTsKICAgICAgICBj aGFyIHNob3J0X25hbWVbMTMqM107Cn0gZmlsZV9pbmZvOwoKc3RydWN0IHByaW50X2pvYl9pbmZv CnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcmlv cml0eTsKICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICAgICBmc3RyaW5nIHVzZXI7CiAgICAgICAg ZnN0cmluZyBuYW1lOwogICAgICAgIHRpbWVfdCB0Owp9OwoKc3RydWN0IGNsaV9zdGF0ZSB7CiAg ICAgICAgaW50IHBvcnQ7CiAgICAgICAgaW50IGZkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNu dW07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1p ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2dWlkOwogICAgICAgIGludCBwcm90b2NvbDsKICAg ICAgICBpbnQgc2VjX21vZGU7CiAgICAgICAgaW50IHJhcF9lcnJvcjsKICAgICAgICBpbnQgcHJp dmlsZWdlczsKCiAgICAgICAgZnN0cmluZyBlZmZfbmFtZTsKICAgICAgICBmc3RyaW5nIGRlc3Ro b3N0OwogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWluOwoK CgoKCgogICAgICAgIGZzdHJpbmcgc2VydmVyX3R5cGU7CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJf b3M7CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJfZG9tYWluOwoKICAgICAgICBmc3RyaW5nIHNoYXJl OwogICAgICAgIGZzdHJpbmcgZGV2OwogICAgICAgIHN0cnVjdCBubWJfbmFtZSBjYWxsZWQ7CiAg ICAgICAgc3RydWN0IG5tYl9uYW1lIGNhbGxpbmc7CiAgICAgICAgZnN0cmluZyBmdWxsX2Rlc3Rf aG9zdF9uYW1lOwogICAgICAgIHN0cnVjdCBpbl9hZGRyIGRlc3RfaXA7CgogICAgICAgIHN0cnVj dCBwd2RfaW5mbyBwd2Q7CiAgICAgICAgREFUQV9CTE9CIHNlY2Jsb2I7CiAgICAgICAgdW5zaWdu ZWQgaW50IHNlc3NrZXk7CiAgICAgICAgaW50IHNlcnZlcnpvbmU7CiAgICAgICAgdW5zaWduZWQg aW50IHNlcnZlcnRpbWU7CiAgICAgICAgaW50IHJlYWRicmF3X3N1cHBvcnRlZDsKICAgICAgICBp bnQgd3JpdGVicmF3X3N1cHBvcnRlZDsKICAgICAgICBpbnQgdGltZW91dDsKICAgICAgICBpbnQg bWF4X3htaXQ7CiAgICAgICAgaW50IG1heF9tdXg7CiAgICAgICAgY2hhciAqb3V0YnVmOwogICAg ICAgIGNoYXIgKmluYnVmOwogICAgICAgIGludCBidWZzaXplOwogICAgICAgIGludCBpbml0aWFs aXNlZDsKICAgICAgICBpbnQgd2luOTU7CiAgICAgICAgdW5zaWduZWQgaW50IGNhcGFiaWxpdGll czsKCiAgICAgICAgVEFMTE9DX0NUWCAqbWVtX2N0eDsKCgoKCgogICAgICAgIHVuc2lnbmVkIHNo b3J0IG50X3BpcGVfZm51bTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlc3Nfa2V5WzE2XTsKICAg ICAgICB1bnNpZ25lZCBjaGFyIG50bG1zc3BfaGFzaFsyNThdOwogICAgICAgIHVuc2lnbmVkIGlu dCBudGxtc3NwX2NsaV9mbGdzOwogICAgICAgIHVuc2lnbmVkIGludCBudGxtc3NwX3Nydl9mbGdz OwogICAgICAgIHVuc2lnbmVkIGludCBudGxtc3NwX3NlcV9udW07CiAgICAgICAgRE9NX0NSRUQg Y2xudF9jcmVkOwogICAgICAgIGZzdHJpbmcgbWFjaF9hY2N0OwogICAgICAgIGZzdHJpbmcgc3J2 X25hbWVfc2xhc2g7CiAgICAgICAgZnN0cmluZyBjbG50X25hbWVfc2xhc2g7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgbWF4X3htaXRfZnJhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYXhfcmVj dl9mcmFnOwogICAgICAgIHZ1c2VyX2tleSBrZXk7CiAgICAgICAgdW5zaWduZWQgaW50IG50bG1z c3BfZmxhZ3M7CiAgICAgICAgQk9PTCB1c2Vfa2VyYmVyb3M7CiAgICAgICAgQk9PTCB1c2Vfc3Bu ZWdvOwoKICAgICAgICBCT09MIHVzZV9vcGxvY2tzOwogICAgICAgIEJPT0wgdXNlX2xldmVsX0lJ X29wbG9ja3M7CgoKICAgICAgICBCT09MICgqb3Bsb2NrX2hhbmRsZXIpKHN0cnVjdCBjbGlfc3Rh dGUgKmNsaSwgaW50IGZudW0sIHVuc2lnbmVkIGNoYXIgbGV2ZWwpOwoKICAgICAgICBCT09MIGZv cmNlX2Rvc19lcnJvcnM7CgoKCiAgICAgICAgQk9PTCBhbGxvY2F0ZWQ7Cn07CiMgMTYyOCAiaW5j bHVkZS9zbWIuaCIgMgojIDE2NjQgImluY2x1ZGUvc21iLmgiCiMgMSAibnNzd2l0Y2gvd2luYmlu ZGRfbnNzLmgiIDEKIyA0MCAibnNzd2l0Y2gvd2luYmluZGRfbnNzLmgiCmVudW0gd2luYmluZGRf Y21kIHsKCgoKICAgICAgICBXSU5CSU5ERF9HRVRQV05BTV9GUk9NX1VTRVIsCiAgICAgICAgV0lO QklORERfR0VUUFdOQU1fRlJPTV9VSUQsCiAgICAgICAgV0lOQklORERfR0VUR1JOQU1fRlJPTV9H Uk9VUCwKICAgICAgICBXSU5CSU5ERF9HRVRHUk5BTV9GUk9NX0dJRCwKICAgICAgICBXSU5CSU5E RF9HRVRHUk9VUFMsCgoKCiAgICAgICAgV0lOQklORERfU0VUUFdFTlQsCiAgICAgICAgV0lOQklO RERfRU5EUFdFTlQsCiAgICAgICAgV0lOQklORERfR0VUUFdFTlQsCiAgICAgICAgV0lOQklORERf U0VUR1JFTlQsCiAgICAgICAgV0lOQklORERfRU5ER1JFTlQsCiAgICAgICAgV0lOQklORERfR0VU R1JFTlQsCgoKCiAgICAgICAgV0lOQklORERfUEFNX0FVVEgsCiAgICAgICAgV0lOQklORERfUEFN X0FVVEhfQ1JBUCwKICAgICAgICBXSU5CSU5ERF9QQU1fQ0hBVVRIVE9LLAoKCgogICAgICAgIFdJ TkJJTkREX0xJU1RfVVNFUlMsCiAgICAgICAgV0lOQklORERfTElTVF9HUk9VUFMsCiAgICAgICAg V0lOQklORERfTElTVF9UUlVTVERPTSwKCgoKICAgICAgICBXSU5CSU5ERF9MT09LVVBTSUQsCiAg ICAgICAgV0lOQklORERfTE9PS1VQTkFNRSwKCgoKICAgICAgICBXSU5CSU5ERF9TSURfVE9fVUlE LAogICAgICAgIFdJTkJJTkREX1NJRF9UT19HSUQsCiAgICAgICAgV0lOQklORERfVUlEX1RPX1NJ RCwKICAgICAgICBXSU5CSU5ERF9HSURfVE9fU0lELAoKCgogICAgICAgIFdJTkJJTkREX0NIRUNL X01BQ0hBQ0MsCgoKCiAgICAgICAgV0lOQklORERfTlVNX0NNRFMKfTsKCgoKc3RydWN0IHdpbmJp bmRkX3JlcXVlc3QgewogICAgICAgIGVudW0gd2luYmluZGRfY21kIGNtZDsKICAgICAgICBwaWRf dCBwaWQ7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGZzdHJpbmcgdXNlcm5hbWU7 CiAgICAgICAgICAgICAgICBmc3RyaW5nIGdyb3VwbmFtZTsKICAgICAgICAgICAgICAgIHVpZF90 IHVpZDsKICAgICAgICAgICAgICAgIGdpZF90IGdpZDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7 CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgdXNlcjsKICAgICAgICAgICAgICAgICAg ICAgICAgZnN0cmluZyBwYXNzOwogICAgICAgICAgICAgICAgfSBhdXRoOwogICAgICAgICAgICAg ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaGFsWzhd OwogICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIHVzZXI7CiAgICAgICAgICAgICAgICAg ICAgICAgIGZzdHJpbmcgbG1fcmVzcDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg c2hvcnQgbG1fcmVzcF9sZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgbnRfcmVz cDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgbnRfcmVzcF9sZW47CiAg ICAgICAgICAgICAgICB9IGF1dGhfY3JhcDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg ICAgICAgICAgICAgICAgZnN0cmluZyB1c2VyOwogICAgICAgICAgICAgICAgICAgIGZzdHJpbmcg b2xkcGFzczsKICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIG5ld3Bhc3M7CiAgICAgICAgICAg ICAgICB9IGNoYXV0aHRvazsKICAgICAgICAgICAgICAgIGZzdHJpbmcgc2lkOwogICAgICAgICAg ICAgICAgZnN0cmluZyBuYW1lOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRy aWVzOwogICAgICAgIH0gZGF0YTsKICAgICAgICBmc3RyaW5nIGRvbWFpbjsKfTsKCgoKZW51bSB3 aW5iaW5kZF9yZXN1bHQgewogICAgICAgIFdJTkJJTkREX0VSUk9SLAogICAgICAgIFdJTkJJTkRE X09LCn07CgoKCnN0cnVjdCB3aW5iaW5kZF9yZXNwb25zZSB7CgoKCiAgICAgICAgaW50IGxlbmd0 aDsKICAgICAgICBlbnVtIHdpbmJpbmRkX3Jlc3VsdCByZXN1bHQ7CgoKCiAgICAgICAgdW5pb24g ewoKCgogICAgICAgICAgICAgICAgc3RydWN0IHdpbmJpbmRkX3B3IHsKICAgICAgICAgICAgICAg ICAgICAgICAgZnN0cmluZyBwd19uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5n IHB3X3Bhc3N3ZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgcHdfdWlkOwogICAgICAg ICAgICAgICAgICAgICAgICBnaWRfdCBwd19naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZz dHJpbmcgcHdfZ2Vjb3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgcHdfZGlyOwog ICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIHB3X3NoZWxsOwogICAgICAgICAgICAgICAg fSBwdzsKCgoKICAgICAgICAgICAgICAgIHN0cnVjdCB3aW5iaW5kZF9nciB7CiAgICAgICAgICAg ICAgICAgICAgICAgIGZzdHJpbmcgZ3JfbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0 cmluZyBncl9wYXNzd2Q7CiAgICAgICAgICAgICAgICAgICAgICAgIGdpZF90IGdyX2dpZDsKICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9ncl9tZW07CiAgICAgICAgICAgICAgICAgICAg ICAgIGludCBncl9tZW1fb2ZzOwogICAgICAgICAgICAgICAgfSBncjsKCiAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2luYmlu ZGRfc2lkIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0cmluZyBzaWQ7CiAgICAgICAgICAg ICAgICAgICAgICAgIGludCB0eXBlOwogICAgICAgICAgICAgICAgfSBzaWQ7CiAgICAgICAgICAg ICAgICBzdHJ1Y3Qgd2luYmluZGRfbmFtZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJp bmcgbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGU7CiAgICAgICAgICAgICAg ICB9IG5hbWU7CiAgICAgICAgICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgICAgICAgICBnaWRf dCBnaWQ7CiAgICAgICAgfSBkYXRhOwoKCgogICAgICAgIHZvaWQgKmV4dHJhX2RhdGE7Cn07CiMg MTY2NSAiaW5jbHVkZS9zbWIuaCIgMgojIDEgImluY2x1ZGUvc21iX2FjbHMuaCIgMQojIDI1ICJp bmNsdWRlL3NtYl9hY2xzLmgiCiMgMSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAxCiMgMjYgImluY2x1 ZGUvc21iX2FjbHMuaCIgMgojIDI2NCAiaW5jbHVkZS9zbWJfYWNscy5oIgp0eXBlZGVmIHN0cnVj dCBTTUJfQUNMX1QgewogICAgICAgIGludCBkdW1teTsKfSAqU01CX0FDTF9UOwoKdHlwZWRlZiBz dHJ1Y3QgU01CX0FDTF9FTlRSWV9UIHsKICAgICAgICBpbnQgZHVtbXk7Cn0gKlNNQl9BQ0xfRU5U UllfVDsKIyAxNjY2ICJpbmNsdWRlL3NtYi5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg IHNpemVfdCAoKmRpcmVjdCkodm9pZCAqY2QsIGNoYXIgKippbmJ1Ziwgc2l6ZV90ICppbmJ5dGVz bGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRidWYsIHNpemVfdCAqb3V0 Ynl0ZXNsZWZ0KTsKICAgICAgICBzaXplX3QgKCpwdWxsKSh2b2lkICpjZCwgY2hhciAqKmluYnVm LCBzaXplX3QgKmluYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRi dWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKICAgICAgICBzaXplX3QgKCpwdXNoKSh2b2lkICpj ZCwgY2hhciAqKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAg ICAgIGNoYXIgKipvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKICAgICAgICB2b2lkICpj ZF9kaXJlY3QsICpjZF9wdWxsLCAqY2RfcHVzaDsKICAgICAgICBjaGFyICpmcm9tX25hbWUsICp0 b19uYW1lOwp9ICpzbWJfaWNvbnZfdDsKIyAyOSAiaW5jbHVkZS91dGlsX2xpc3QuaCIgMgoKCgoK c3RydWN0IF9saXN0X25vZGU7CgoKCgpzdHJ1Y3QgX2xpc3Rfbm9kZSB7CgogICAgICAgIHZvaWQg KmRhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciB0eXBlOwoKICAgICAgICBzdHJ1Y3QgX2xpc3Rf bm9kZSAqbmV4dDsKCn07CgoKCgp0eXBlZGVmIHN0cnVjdCBfZ2VuZXJpY19saXN0IHsKCiAgICAg ICAgc3RydWN0IF9saXN0X25vZGUgKmhlYWQsICp0YWlsOwogICAgICAgIHVuc2lnbmVkIGludCBs ZW5ndGg7CiAgICAgICAgQk9PTCBpbml0aWFsaXplZDsKCn0gR0VORVJJQ19MSVNUOwojIDY4OCAi aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9jaGFyc2V0LmgiIDEKIyAyMyAiaW5j bHVkZS9jaGFyc2V0LmgiCnR5cGVkZWYgZW51bSB7Q0hfVUNTMj0wLCBDSF9VTklYPTEsIENIX0RJ U1BMQVk9MiwgQ0hfRE9TPTN9IGNoYXJzZXRfdDsKIyA2ODkgImluY2x1ZGUvaW5jbHVkZXMuaCIg MgojIDEgImluY2x1ZGUvZHluY29uZmlnLmgiIDEKIyAyNiAiaW5jbHVkZS9keW5jb25maWcuaCIK ZXh0ZXJuIGNoYXIgY29uc3QgKmR5bl9TQklORElSLAogICAgICAgICpkeW5fQklORElSLAogICAg ICAgICpkeW5fU1dBVERJUjsKCmV4dGVybiBwc3RyaW5nIGR5bl9DT05GSUdGSUxFOwpleHRlcm4g cHN0cmluZyBkeW5fTE9HRklMRUJBU0UsIGR5bl9MTUhPU1RTRklMRTsKZXh0ZXJuIHBzdHJpbmcg ZHluX0xJQkRJUjsKZXh0ZXJuIGNvbnN0IHBzdHJpbmcgZHluX0xPQ0tESVI7CmV4dGVybiBjb25z dCBwc3RyaW5nIGR5bl9EUklWRVJGSUxFOwpleHRlcm4gY29uc3QgcHN0cmluZyBkeW5fU01CX1BB U1NXRF9GSUxFOwpleHRlcm4gY29uc3QgcHN0cmluZyBkeW5fUFJJVkFURV9ESVI7CiMgNjkwICJp bmNsdWRlL2luY2x1ZGVzLmgiIDIKCiMgMSAiaW5jbHVkZS91dGlsX2dldGVudC5oIiAxCiMgMjkg ImluY2x1ZGUvdXRpbF9nZXRlbnQuaCIKc3RydWN0IHN5c19ncmVudCB7CiAgICAgICAgY2hhciAq Z3JfbmFtZTsKICAgICAgICBjaGFyICpncl9wYXNzd2Q7CiAgICAgICAgZ2lkX3QgZ3JfZ2lkOwog ICAgICAgIGNoYXIgKipncl9tZW07CiAgICAgICAgc3RydWN0IHN5c19ncmVudCAqbmV4dDsKfTsK CgoKCgpzdHJ1Y3Qgc3lzX3B3ZW50IHsKICAgICAgICBjaGFyICpwd19uYW1lOwogICAgICAgIGNo YXIgKnB3X3Bhc3N3ZDsKICAgICAgICB1aWRfdCBwd191aWQ7CiAgICAgICAgZ2lkX3QgcHdfZ2lk OwogICAgICAgIGNoYXIgKnB3X2dlY29zOwogICAgICAgIGNoYXIgKnB3X2RpcjsKICAgICAgICBj aGFyICpwd19zaGVsbDsKICAgICAgICBzdHJ1Y3Qgc3lzX3B3ZW50ICpuZXh0Owp9OwoKCgoKCgpz dHJ1Y3Qgc3lzX3VzZXJsaXN0IHsKICAgICAgICBzdHJ1Y3Qgc3lzX3VzZXJsaXN0ICpuZXh0LCAq cHJldjsKICAgICAgICBjaGFyICp1bml4X25hbWU7Cn07CiMgNjkyICJpbmNsdWRlL2luY2x1ZGVz LmgiIDIKCgojIDEgInViaXF4L3ViaV9DYWNoZS5oIiAxCiMgMTE2ICJ1YmlxeC91YmlfQ2FjaGUu aCIKIyAxICJ1YmlxeC91YmlfU3BsYXlUcmVlLmgiIDEKIyAxNTcgInViaXF4L3ViaV9TcGxheVRy ZWUuaCIKIyAxICJ1YmlxeC91YmlfQmluVHJlZS5oIiAxCiMgMjM4ICJ1YmlxeC91YmlfQmluVHJl ZS5oIgp0eXBlZGVmIGVudW0gewogIHViaV90ckxUID0gMSwKICB1YmlfdHJMRSwKICB1YmlfdHJF USwKICB1YmlfdHJHRSwKICB1YmlfdHJHVAogIH0gdWJpX3RyQ29tcE9wczsKIyAzMTMgInViaXF4 L3ViaV9CaW5UcmVlLmgiCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1YmlfdHJCb29sOwoKdHlwZWRl ZiB2b2lkICp1YmlfYnRJdGVtUHRyOwojIDM0MCAidWJpcXgvdWJpX0JpblRyZWUuaCIKdHlwZWRl ZiBzdHJ1Y3QgdWJpX2J0Tm9kZVN0cnVjdCB7CiAgc3RydWN0IHViaV9idE5vZGVTdHJ1Y3QgKkxp bmtbIDMgXTsKICBjaGFyIGdlbmRlcjsKICBjaGFyIGJhbGFuY2U7CiAgfSB1YmlfYnROb2RlOwoK dHlwZWRlZiB1YmlfYnROb2RlICp1YmlfYnROb2RlUHRyOwojIDM3MyAidWJpcXgvdWJpX0JpblRy ZWUuaCIKdHlwZWRlZiBpbnQgKCp1YmlfYnRDb21wRnVuYykoIHViaV9idEl0ZW1QdHIsIHViaV9i dE5vZGVQdHIgKTsKCnR5cGVkZWYgdm9pZCAoKnViaV9idEFjdGlvblJ0bikoIHViaV9idE5vZGVQ dHIsIHZvaWQgKiApOwoKdHlwZWRlZiB2b2lkICgqdWJpX2J0S2lsbE5vZGVSdG4pKCB1YmlfYnRO b2RlUHRyICk7CiMgNDAxICJ1YmlxeC91YmlfQmluVHJlZS5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg dWJpX2J0Tm9kZVB0ciByb290OwogIHViaV9idENvbXBGdW5jIGNtcDsKICB1bnNpZ25lZCBsb25n IGNvdW50OwogIGNoYXIgZmxhZ3M7CiAgfSB1YmlfYnRSb290OwoKdHlwZWRlZiB1YmlfYnRSb290 ICp1YmlfYnRSb290UHRyOwoKCgoKCgpsb25nIHViaV9idFNnbiggbG9uZyB4ICk7CiMgNDM0ICJ1 YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idEluaXROb2RlKCB1YmlfYnRO b2RlUHRyIE5vZGVQdHIgKTsKIyA0NDQgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9idFJvb3RQ dHIgdWJpX2J0SW5pdFRyZWUoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHViaV9idENvbXBGdW5jIENvbXBGdW5jLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciBGbGFncyApOwojIDQ2OCAidWJpcXgvdWJpX0JpblRyZWUuaCIK dWJpX3RyQm9vbCB1YmlfYnRJbnNlcnQoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAg ICAgICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgTmV3Tm9kZSwKICAgICAgICAgICAgICAgICAg ICAgICAgIHViaV9idEl0ZW1QdHIgSXRlbVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVi aV9idE5vZGVQdHIgKk9sZE5vZGUgKTsKIyA1MTcgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9i dE5vZGVQdHIgdWJpX2J0UmVtb3ZlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1YmlfYnROb2RlUHRyIERlYWROb2RlICk7CiMgNTM0ICJ1YmlxeC91 YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idExvY2F0ZSggdWJpX2J0Um9vdFB0ciBS b290UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBGaW5kTWUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YmlfdHJDb21wT3BzIENvbXBPcCApOwojIDU4 NiAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1YmlfYnRGaW5kKCB1YmlfYnRS b290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBG aW5kTWUgKTsKIyA2MDcgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9idE5vZGVQdHIgdWJpX2J0 TmV4dCggdWJpX2J0Tm9kZVB0ciBQICk7CiMgNjE3ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1Ymlf YnROb2RlUHRyIHViaV9idFByZXYoIHViaV9idE5vZGVQdHIgUCApOwojIDYyNyAidWJpcXgvdWJp X0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1YmlfYnRGaXJzdCggdWJpX2J0Tm9kZVB0ciBQICk7 CiMgNjM5ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idExhc3QoIHVi aV9idE5vZGVQdHIgUCApOwojIDY1MSAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0 ciB1YmlfYnRGaXJzdE9mKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBNYXRjaE1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHViaV9idE5vZGVQdHIgcCApOwojIDY3NCAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJp X2J0Tm9kZVB0ciB1YmlfYnRMYXN0T2YoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1QdHIgTWF0Y2hNZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgcCApOwojIDY5NyAidWJpcXgvdWJpX0JpblRyZWUu aCIKdW5zaWduZWQgbG9uZyB1YmlfYnRUcmF2ZXJzZSggdWJpX2J0Um9vdFB0ciBSb290UHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YmlfYnRBY3Rpb25SdG4gRWFjaE5vZGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKlVzZXJEYXRhICk7CiMgNzE5ICJ1Ymlx eC91YmlfQmluVHJlZS5oIgp1bnNpZ25lZCBsb25nIHViaV9idEtpbGxUcmVlKCB1YmlfYnRSb290 UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idEtpbGxOb2Rl UnRuIEZyZWVOb2RlICk7CiMgNzQ0ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRy IHViaV9idExlYWZOb2RlKCB1YmlfYnROb2RlUHRyIGxlYWRlciApOwojIDc3MyAidWJpcXgvdWJp X0JpblRyZWUuaCIKaW50IHViaV9idE1vZHVsZUlEKCBpbnQgc2l6ZSwgY2hhciAqbGlzdFtdICk7 CiMgMTU4ICJ1YmlxeC91YmlfU3BsYXlUcmVlLmgiIDIKCgoKCgp1YmlfdHJCb29sIHViaV9zcHRJ bnNlcnQoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICB1 YmlfYnROb2RlUHRyIE5ld05vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRl bVB0ciBJdGVtUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgKk9s ZE5vZGUgKTsKIyAyMTIgInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1Ymlf c3B0UmVtb3ZlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsIHViaV9idE5vZGVQdHIgRGVhZE5vZGUg KTsKIyAyMjggInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1Ymlfc3B0TG9j YXRlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWJpX2J0SXRlbVB0ciBGaW5kTWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX3Ry Q29tcE9wcyBDb21wT3AgKTsKIyAyODAgInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9k ZVB0ciB1Ymlfc3B0RmluZCggdWJpX2J0Um9vdFB0ciBSb290UHRyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICB1YmlfYnRJdGVtUHRyIEZpbmRNZSApOwojIDMwMSAidWJpcXgvdWJpX1NwbGF5 VHJlZS5oIgp2b2lkIHViaV9zcHRTcGxheSggdWJpX2J0Um9vdFB0ciBSb290UHRyLAogICAgICAg ICAgICAgICAgICAgdWJpX2J0Tm9kZVB0ciBTcGxheU1lICk7CiMgMzIzICJ1YmlxeC91YmlfU3Bs YXlUcmVlLmgiCmludCB1Ymlfc3B0TW9kdWxlSUQoIGludCBzaXplLCBjaGFyICpsaXN0W10gKTsK IyAxMTcgInViaXF4L3ViaV9DYWNoZS5oIiAyCiMgMTM2ICJ1YmlxeC91YmlfQ2FjaGUuaCIKdHlw ZWRlZiBzdHJ1Y3QKICB7CiAgdWJpX2J0Um9vdCByb290OwogIHViaV9idEtpbGxOb2RlUnRuIGZy ZWVfZnVuYzsKICB1bnNpZ25lZCBsb25nIG1heF9lbnRyaWVzOwogIHVuc2lnbmVkIGxvbmcgbWF4 X21lbW9yeTsKICB1bnNpZ25lZCBsb25nIG1lbV91c2VkOwogIHVuc2lnbmVkIHNob3J0IGNhY2hl X2hpdHM7CiAgdW5zaWduZWQgc2hvcnQgY2FjaGVfdHJ5czsKICB9IHViaV9jYWNoZVJvb3Q7Cgp0 eXBlZGVmIHViaV9jYWNoZVJvb3QgKnViaV9jYWNoZVJvb3RQdHI7CgoKdHlwZWRlZiBzdHJ1Y3QK ICB7CiAgdWJpX2J0Tm9kZSBub2RlOwogIHVuc2lnbmVkIGxvbmcgZW50cnlfc2l6ZTsKCgogIH0g dWJpX2NhY2hlRW50cnk7Cgp0eXBlZGVmIHViaV9jYWNoZUVudHJ5ICp1YmlfY2FjaGVFbnRyeVB0 cjsKIyAxODYgInViaXF4L3ViaV9DYWNoZS5oIgp1YmlfY2FjaGVSb290UHRyIHViaV9jYWNoZUlu aXQoIHViaV9jYWNoZVJvb3RQdHIgQ2FjaGVQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWJpX2J0Q29tcEZ1bmMgQ29tcEZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWJpX2J0S2lsbE5vZGVSdG4gRnJlZUZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBNYXhFbnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgTWF4TWVtb3J5ICk7CiMgMjM3ICJ1YmlxeC91YmlfQ2Fj aGUuaCIKdWJpX2NhY2hlUm9vdFB0ciB1YmlfY2FjaGVDbGVhciggdWJpX2NhY2hlUm9vdFB0ciBD YWNoZVB0ciApOwojIDI0OSAidWJpcXgvdWJpX0NhY2hlLmgiCnZvaWQgdWJpX2NhY2hlUHV0KCB1 YmlfY2FjaGVSb290UHRyIENhY2hlUHRyLAogICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBFbnRyeVNpemUsCiAgICAgICAgICAgICAgICAgICB1YmlfY2FjaGVFbnRyeVB0ciBFbnRyeVB0 ciwKICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1QdHIgS2V5ICk7CiMgMjg5ICJ1YmlxeC91 YmlfQ2FjaGUuaCIKdWJpX2NhY2hlRW50cnlQdHIgdWJpX2NhY2hlR2V0KCB1YmlfY2FjaGVSb290 UHRyIENhY2hlUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1Q dHIgRmluZE1lICk7CiMgMzExICJ1YmlxeC91YmlfQ2FjaGUuaCIKdWJpX3RyQm9vbCB1YmlfY2Fj aGVEZWxldGUoIHViaV9jYWNoZVJvb3RQdHIgQ2FjaGVQdHIsIHViaV9idEl0ZW1QdHIgRGVsZXRl TWUgKTsKIyAzMjMgInViaXF4L3ViaV9DYWNoZS5oIgp1YmlfdHJCb29sIHViaV9jYWNoZVJlZHVj ZSggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciwgdW5zaWduZWQgbG9uZyBjb3VudCApOwojIDM0 MyAidWJpcXgvdWJpX0NhY2hlLmgiCnVuc2lnbmVkIGxvbmcgdWJpX2NhY2hlU2V0TWF4RW50cmll cyggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIE5ld1NpemUgKTsKIyAzNjEgInViaXF4L3ViaV9DYWNo ZS5oIgp1bnNpZ25lZCBsb25nIHViaV9jYWNoZVNldE1heE1lbW9yeSggdWJpX2NhY2hlUm9vdFB0 ciBDYWNoZVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgTmV3U2l6ZSApOwojIDM3OSAidWJpcXgvdWJpX0NhY2hlLmgiCmludCB1YmlfY2FjaGVI aXRSYXRpbyggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciApOwojIDY5NSAiaW5jbHVkZS9pbmNs dWRlcy5oIiAyCgoKIyAxICJ1YmlxeC9kZWJ1Z3BhcnNlLmgiIDEKIyA0NyAidWJpcXgvZGVidWdw YXJzZS5oIgp0eXBlZGVmIGVudW0KICB7CiAgZGJnX251bGwgPSAwLAogIGRiZ19pZ25vcmUsCiAg ZGJnX2hlYWRlciwKICBkYmdfdGltZXN0YW1wLAogIGRiZ19sZXZlbCwKICBkYmdfc291cmNlZmls ZSwKICBkYmdfZnVuY3Rpb24sCiAgZGJnX2xpbmVubywKICBkYmdfbWVzc2FnZSwKICBkYmdfZW9m CiAgfSBkYmdfVG9rZW47CgoKCgoKIGNoYXIgKmRiZ190b2tlbjJzdHJpbmcoIGRiZ19Ub2tlbiB0 b2sgKTsKIyA4MCAidWJpcXgvZGVidWdwYXJzZS5oIgogZGJnX1Rva2VuIGRiZ19jaGFyMnRva2Vu KCBkYmdfVG9rZW4gKnN0YXRlLCBpbnQgYyApOwojIDY5OCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAy CgojIDEgImluY2x1ZGUvdmVyc2lvbi5oIiAxCiMgNzAwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIK CiMgMSAic21id3JhcHBlci9zbWJ3LmgiIDEKIyAzNCAic21id3JhcHBlci9zbWJ3LmgiCnN0cnVj dCBzbWJ3X3NlcnZlciB7CiAgICAgICAgc3RydWN0IHNtYndfc2VydmVyICpuZXh0LCAqcHJldjsK ICAgICAgICBzdHJ1Y3QgY2xpX3N0YXRlIGNsaTsKICAgICAgICBjaGFyICpzZXJ2ZXJfbmFtZTsK ICAgICAgICBjaGFyICpzaGFyZV9uYW1lOwogICAgICAgIGNoYXIgKndvcmtncm91cDsKICAgICAg ICBjaGFyICp1c2VybmFtZTsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgQk9PTCBub19wYXRo aW5mbzI7Cn07CgpzdHJ1Y3Qgc21id19maWxlZGVzIHsKICAgICAgICBpbnQgY2xpX2ZkOwogICAg ICAgIGludCByZWZfY291bnQ7CiAgICAgICAgY2hhciAqZm5hbWU7CiAgICAgICAgb2ZmX3Qgb2Zm c2V0Owp9OwoKc3RydWN0IHNtYndfZmlsZSB7CiAgICAgICAgc3RydWN0IHNtYndfZmlsZSAqbmV4 dCwgKnByZXY7CiAgICAgICAgc3RydWN0IHNtYndfZmlsZWRlcyAqZjsKICAgICAgICBpbnQgZmQ7 CiAgICAgICAgc3RydWN0IHNtYndfc2VydmVyICpzcnY7Cn07CgpzdHJ1Y3Qgc21id19kaXIgewog ICAgICAgIHN0cnVjdCBzbWJ3X2RpciAqbmV4dCwgKnByZXY7CiAgICAgICAgaW50IGZkOwogICAg ICAgIGludCBvZmZzZXQsIGNvdW50LCBtYWxsb2NlZDsKICAgICAgICBzdHJ1Y3Qgc21id19zZXJ2 ZXIgKnNydjsKICAgICAgICBzdHJ1Y3QgZmlsZV9pbmZvICpsaXN0OwogICAgICAgIGNoYXIgKnBh dGg7Cn07Cgp0eXBlZGVmIHZvaWQgKCpzbWJ3X2dldF9hdXRoX2RhdGFfZm4pKGNoYXIgKnNlcnZl ciwgY2hhciAqc2hhcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh ciAqKndvcmtncm91cCwgY2hhciAqKnVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZCk7CiMgNzAyICJpbmNsdWRlL2luY2x1ZGVzLmgi IDIKIyAxICJpbmNsdWRlL25hbWVzZXJ2LmgiIDEKIyAzOCAiaW5jbHVkZS9uYW1lc2Vydi5oIgpl bnVtIG5ldGJpb3NfcmVwbHlfdHlwZV9jb2RlIHsgTk1CX1FVRVJZLCBOTUJfU1RBVFVTLCBOTUJf UkVHLCBOTUJfUkVHX1JFRlJFU0gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTUJf UkVMLCBOTUJfV0FJVF9BQ0ssIE5NQl9NVUxUSUhPTUVEX1JFRywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFdJTlNfUkVHLCBXSU5TX1FVRVJZIH07CiMgMTQyICJpbmNsdWRlL25hbWVz ZXJ2LmgiCmVudW0gbmFtZV9zb3VyY2Uge0xNSE9TVFNfTkFNRSwgUkVHSVNURVJfTkFNRSwgU0VM Rl9OQU1FLCBETlNfTkFNRSwKICAgICAgICAgICAgICAgICAgRE5TRkFJTF9OQU1FLCBQRVJNQU5F TlRfTkFNRSwgV0lOU19QUk9YWV9OQU1FfTsKZW51bSBub2RlX3R5cGUge0JfTk9ERT0wLCBQX05P REU9MSwgTV9OT0RFPTIsIE5CRERfTk9ERT0zfTsKZW51bSBwYWNrZXRfdHlwZSB7Tk1CX1BBQ0tF VCwgREdSQU1fUEFDS0VUfTsKCmVudW0gbWFzdGVyX3N0YXRlCnsKICBNU1RfTk9ORSwKICBNU1Rf UE9URU5USUFMLAogIE1TVF9CQUNLVVAsCiAgTVNUX01TQiwKICBNU1RfQlJPV1NFUiwKICBNU1Rf VU5CRUNPTUlOR19NQVNURVIKfTsKCmVudW0gZG9tYWluX3N0YXRlCnsKICBET01BSU5fTk9ORSwK ICBET01BSU5fV0FJVCwKICBET01BSU5fTVNUCn07CgplbnVtIGxvZ29uX3N0YXRlCnsKICBMT0dP Tl9OT05FLAogIExPR09OX1dBSVQsCiAgTE9HT05fU1JWCn07CgpzdHJ1Y3Qgc3VibmV0X3JlY29y ZDsKCnN0cnVjdCBubWJfZGF0YQp7CiAgdW5zaWduZWQgc2hvcnQgbmJfZmxhZ3M7CiAgaW50IG51 bV9pcHM7CiAgc3RydWN0IGluX2FkZHIgKmlwOwoKICBlbnVtIG5hbWVfc291cmNlIHNvdXJjZTsK CiAgdGltZV90IGRlYXRoX3RpbWU7CiAgdGltZV90IHJlZnJlc2hfdGltZTsKfTsKCgpzdHJ1Y3Qg bmFtZV9yZWNvcmQKICB7CiAgdWJpX2J0Tm9kZSBub2RlWzFdOwogIHN0cnVjdCBzdWJuZXRfcmVj b3JkICpzdWJuZXQ7CiAgc3RydWN0IG5tYl9uYW1lIG5hbWU7CiAgc3RydWN0IG5tYl9kYXRhIGRh dGE7CiAgfTsKCgpzdHJ1Y3QgYnJvd3NlX2NhY2hlX3JlY29yZAogIHsKICB1YmlfZGxOb2RlIG5v ZGVbMV07CiAgcHN0cmluZyBsbWJfbmFtZTsKICBwc3RyaW5nIHdvcmtfZ3JvdXA7CiAgc3RydWN0 IGluX2FkZHIgaXA7CiAgdGltZV90IHN5bmNfdGltZTsKICB0aW1lX3QgZGVhdGhfdGltZTsKICB9 OwoKCgoKc3RydWN0IHNlcnZlcl9yZWNvcmQKewogIHN0cnVjdCBzZXJ2ZXJfcmVjb3JkICpuZXh0 OwogIHN0cnVjdCBzZXJ2ZXJfcmVjb3JkICpwcmV2OwoKICBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAq c3VibmV0OwoKICBzdHJ1Y3Qgc2VydmVyX2luZm9fc3RydWN0IHNlcnY7CiAgdGltZV90IGRlYXRo X3RpbWU7Cn07CgoKc3RydWN0IHdvcmtfcmVjb3JkCnsKICBzdHJ1Y3Qgd29ya19yZWNvcmQgKm5l eHQ7CiAgc3RydWN0IHdvcmtfcmVjb3JkICpwcmV2OwoKICBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAq c3VibmV0OwoKICBzdHJ1Y3Qgc2VydmVyX3JlY29yZCAqc2VydmVybGlzdDsKCgogIGVudW0gbWFz dGVyX3N0YXRlIG1zdF9zdGF0ZTsKCgogIGVudW0gZG9tYWluX3N0YXRlIGRvbV9zdGF0ZTsKCgog IGVudW0gbG9nb25fc3RhdGUgbG9nX3N0YXRlOwoKCiAgZnN0cmluZyB3b3JrX2dyb3VwOwogIGlu dCB0b2tlbjsKICBmc3RyaW5nIGxvY2FsX21hc3Rlcl9icm93c2VyX25hbWU7CgoKICB0aW1lX3Qg bGFzdGFubm91bmNlX3RpbWU7CiAgaW50IGFubm91bmNlX2ludGVydmFsOwogIEJPT0wgbmVlZGFu bm91bmNlOwoKCiAgdGltZV90IGRlYXRoX3RpbWU7CgoKICBCT09MIFJ1bm5pbmdFbGVjdGlvbjsK ICBCT09MIG5lZWRlbGVjdGlvbjsKICBpbnQgRWxlY3Rpb25Db3VudDsKICB1bnNpZ25lZCBpbnQg RWxlY3Rpb25Dcml0ZXJpb247CgoKICBzdHJ1Y3Qgbm1iX25hbWUgZG1iX25hbWU7CiAgc3RydWN0 IGluX2FkZHIgZG1iX2FkZHI7Cn07CgoKc3RydWN0IHVzZXJkYXRhX3N0cnVjdDsKCnR5cGVkZWYg c3RydWN0IHVzZXJkYXRhX3N0cnVjdCAqICgqdXNlcmRhdGFfY29weV9mbikoc3RydWN0IHVzZXJk YXRhX3N0cnVjdCAqKTsKdHlwZWRlZiB2b2lkICgqdXNlcmRhdGFfZnJlZV9mbikoc3RydWN0IHVz ZXJkYXRhX3N0cnVjdCAqKTsKCgoKc3RydWN0IHVzZXJkYXRhX3N0cnVjdCB7CiAgdXNlcmRhdGFf Y29weV9mbiBjb3B5X2ZuOwogIHVzZXJkYXRhX2ZyZWVfZm4gZnJlZV9mbjsKICB1bnNpZ25lZCBp bnQgdXNlcmRhdGFfbGVuOwogIGNoYXIgZGF0YVsxNl07Cn07CgpzdHJ1Y3QgcmVzcG9uc2VfcmVj b3JkOwpzdHJ1Y3QgcGFja2V0X3N0cnVjdDsKc3RydWN0IHJlc19yZWM7CgoKdHlwZWRlZiB2b2lk ICgqcmVzcG9uc2VfZnVuY3Rpb24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosIHN0cnVjdCByZXNw b25zZV9yZWNvcmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBw YWNrZXRfc3RydWN0ICopOwoKCnR5cGVkZWYgdm9pZCAoKnRpbWVvdXRfcmVzcG9uc2VfZnVuY3Rp b24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCByZXNwb25zZV9yZWNvcmQgKik7CgoKCnR5cGVkZWYgdm9pZCAo KnN1Y2Nlc3NfZnVuY3Rpb24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosIHN0cnVjdCB1c2VyZGF0 YV9zdHJ1Y3QgKiwgLi4uKTsKCgoKdHlwZWRlZiB2b2lkICgqZmFpbF9mdW5jdGlvbikoc3RydWN0 IHN1Ym5ldF9yZWNvcmQgKiwgc3RydWN0IHJlc3BvbnNlX3JlY29yZCAqLCAuLi4pOwoKCgoKdHlw ZWRlZiB2b2lkICgqcmVnaXN0ZXJfbmFtZV9zdWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5l dF9yZWNvcmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHVzZXJkYXRhX3N0cnVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbm1iX25hbWUgKiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGluX2FkZHIpOwp0eXBlZGVm IHZvaWQgKCpyZWdpc3Rlcl9uYW1lX2ZhaWxfZnVuY3Rpb24pKCBzdHJ1Y3Qgc3VibmV0X3JlY29y ZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cmVzcG9uc2VfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBubWJfbmFtZSAqKTsKCnR5cGVkZWYgdm9pZCAoKnJlbGVhc2VfbmFtZV9z dWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5ldF9yZWNvcmQgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNlcmRhdGFfc3RydWN0ICos CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5t Yl9uYW1lICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGluX2FkZHIpOwp0eXBlZGVmIHZvaWQgKCpyZWxlYXNlX25hbWVfZmFpbF9mdW5jdGlv bikoIHN0cnVjdCBzdWJuZXRfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHJlc3BvbnNlX3JlY29yZCAqLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubWJfbmFtZSAqKTsKCnR5cGVkZWYg dm9pZCAoKnJlZnJlc2hfbmFtZV9zdWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5ldF9yZWNv cmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdXNlcmRhdGFfc3RydWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG5tYl9uYW1lICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9hZGRyKTsKdHlwZWRlZiB2b2lkICgqcmVm cmVzaF9uYW1lX2ZhaWxfZnVuY3Rpb24pKCBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAqLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZXNwb25zZV9yZWNv cmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg bm1iX25hbWUgKik7Cgp0eXBlZGVmIHZvaWQgKCpxdWVyeV9uYW1lX3N1Y2Nlc3NfZnVuY3Rpb24