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: 10568 >Category: c++ >Synopsis: Template instantiation failure on AIX >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Apr 30 16:46:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: dje@watson.ibm.com >Release: gcc-3.4 200304XX (experimental) >Organization: >Environment: powerpc-ibm-aix4.3.3.0 >Description: Late April C++ front-end changes cause new libstdc++ testcase failures. The testcase now produces linker errors for templates which are explicitly instantiated in the source code. >How-To-Repeat: g++ -O2 -g -lv3test -L/gcc/dje/build/powerpc-ibm-aix4.3.3.0-20030428/powerpc-ibm-aix4.3.3.0//libstdc++-v3/testsuite -lm >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="3983-fstream.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="3983-fstream.ii" IyAxICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yN19pby9iYXNpY19pc3Ry ZWFtL3NlbnRyeS9jaGFyLzM5ODMtZnN0cmVhbS5jYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxj b21tYW5kIGxpbmU+IgoKCgoKCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk ZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvc3RkYysrLmgiIDEKIyA4ICI8Y29tbWFuZCBs aW5lPiIgMgojIDEgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvdGVzdHN1aXRlLzI3X2lvL2Jh c2ljX2lzdHJlYW0vc2VudHJ5L2NoYXIvMzk4My1mc3RyZWFtLmNjIgojIDMyICIvZ2NjL2RqZS9z cmMvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yN19pby9iYXNpY19pc3RyZWFtL3NlbnRyeS9jaGFy LzM5ODMtZnN0cmVhbS5jYyIKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv ZnN0cmVhbSIgMQojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvZnN0cmVh bSIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaXN0cmVhbSIgMSAz CiMgNDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pc3RyZWFtIiAzCgojIDEg Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pb3MiIDEgMwojIDQzICIvZ2NjL2Rq ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaW9zIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bv d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJz dGRjKystdjMvaW5jbHVkZS9pb3Nmd2QiIDEgMwojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysr LXYzL2luY2x1ZGUvaW9zZndkIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM1ICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9i aXRzL2MrK2NvbmZpZy5oIiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0cy9vc19kZWZpbmVzLmgiIDEgMwojIDM2ICIvZ2Nj L2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRz L2MrK2NvbmZpZy5oIiAyIDMKIyA0NiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl L2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAvYml0cy9jKytsb2NhbGUuaCIgMSAzCiMgNDAgIi9nY2MvZGplL2J1 aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC9saWJzdGRjKystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysrbG9j YWxlLmgiIDMKCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nsb2NhbGUi IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xvY2FsZSIgMwoK IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p bmNsdWRlL2xvY2FsZS5oIiAxIDMgNAojIDQ1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKIyAxICIvdXNyL2lu Y2x1ZGUvc3RhbmRhcmRzLmgiIDEgMyA0CiMgNDYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvbG9jYWxlLmgiIDIgMyA0CgoKCmV4dGVy biAiQyIgewojIDYwICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L2djYy9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKc3RydWN0IGxjb252IHsKICAgY2hhciAqZGVj aW1hbF9wb2ludDsKICAgY2hhciAqdGhvdXNhbmRzX3NlcDsKICAgY2hhciAqZ3JvdXBpbmc7CiAg IGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICBjaGFy ICptb25fZGVjaW1hbF9wb2ludDsKICAgY2hhciAqbW9uX3Rob3VzYW5kc19zZXA7CiAgIGNoYXIg Km1vbl9ncm91cGluZzsKICAgY2hhciAqcG9zaXRpdmVfc2lnbjsKICAgY2hhciAqbmVnYXRpdmVf c2lnbjsKICAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgIGNoYXIgZnJhY19kaWdpdHM7CiAgIGNo YXIgcF9jc19wcmVjZWRlczsKICAgY2hhciBwX3NlcF9ieV9zcGFjZTsKICAgY2hhciBuX2NzX3By ZWNlZGVzOwogICBjaGFyIG5fc2VwX2J5X3NwYWNlOwogICBjaGFyIHBfc2lnbl9wb3NuOwogICBj aGFyIG5fc2lnbl9wb3NuOwoKCiAgIGNoYXIgKmxlZnRfcGFyZW50aGVzaXM7CiAgIGNoYXIgKnJp Z2h0X3BhcmVudGhlc2lzOwoKCgoKCn0gOwojIDEwNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9sb2NhbGUuaCIgMyA0CnN0cnVjdCBs Y29udiAqbG9jYWxlY29udih2b2lkKTsKY2hhciAqc2V0bG9jYWxlKGludCwgY29uc3QgY2hhciAq KTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY29udiBsY29udjsKCgoKfQojIDUwICIvZ2NjL2RqZS9i dWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xvY2FsZSIgMiAzCgoKCgoKbmFtZXNwYWNlIHN0ZAp7 CiAgdXNpbmcgOjpsY29udjsKICB1c2luZyA6OnNldGxvY2FsZTsKICB1c2luZyA6OmxvY2FsZWNv bnY7Cn0KIyA0MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy OC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvYml0cy9jKytsb2NhbGUuaCIgMiAzCgoKCm5hbWVzcGFjZSBzdGQKewogIHR5 cGVkZWYgaW50KiBfX2NfbG9jYWxlOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgogICAg aW50CiAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAogICAgICAgY29uc3QgaW50IF9f c2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAogICAgICAgY29uc3QgY2hhciogX19m bXQsCiAgICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYyA9IC0xKQog ICAgewogICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZSgtMSwgKDApKTsKICAgICAgY2hhciog X19zYXYgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmxlbihfX29sZCkgKyAxKSk7CiAg ICAgIGlmIChfX3NhdikKICAgICAgICBzdHJjcHkoX19zYXYsIF9fb2xkKTsKICAgICAgc2V0bG9j YWxlKC0xLCAiQyIpOwoKICAgICAgaW50IF9fcmV0OwoKCgoKCgogICAgICBpZiAoX19wcmVjID49 IDApCiAgICAgICAgX19yZXQgPSBzcHJpbnRmKF9fb3V0LCBfX2ZtdCwgX19wcmVjLCBfX3YpOwog ICAgICBlbHNlCiAgICAgICAgX19yZXQgPSBzcHJpbnRmKF9fb3V0LCBfX2ZtdCwgX192KTsKCiAg ICAgIHNldGxvY2FsZSgtMSwgX19zYXYpOwogICAgICBmcmVlKF9fc2F2KTsKICAgICAgcmV0dXJu IF9fcmV0OwogICAgfQp9CiMgNDcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9p b3Nmd2QiIDIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jY3R5cGUi IDEgMwojIDQ3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2N0eXBlIiAzCgoK IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p bmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgNzkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiBleHRlcm4gaW50IGlz YWxwaGEoaW50KTsKIGV4dGVybiBpbnQgaXNhbG51bShpbnQpOwogZXh0ZXJuIGludCBpc2NudHJs KGludCk7CiBleHRlcm4gaW50IGlzZGlnaXQoaW50KTsKIGV4dGVybiBpbnQgaXNncmFwaChpbnQp OwogZXh0ZXJuIGludCBpc2xvd2VyKGludCk7CiBleHRlcm4gaW50IGlzcHJpbnQoaW50KTsKIGV4 dGVybiBpbnQgaXNwdW5jdChpbnQpOwogZXh0ZXJuIGludCBpc3NwYWNlKGludCk7CiBleHRlcm4g aW50IGlzdXBwZXIoaW50KTsKIGV4dGVybiBpbnQgaXN4ZGlnaXQoaW50KTsKIGV4dGVybiBpbnQg dG91cHBlcihpbnQpOwogZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CiMgMTA3ICIvZ2NjL2RqZS9i dWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2N0eXBlLmgi IDMgNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2N0eXBlX3Q7CgoKCgogdHlwZWRlZiBpbnQgd2lu dF90OwoKCgoKCgogZXh0ZXJuIGludCBpc2FzY2lpKGludCk7CiBleHRlcm4gaW50IHRvYXNjaWko aW50KTsKIyAxMzEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0 MjgvZ2NjL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVk ZWYuaCIgMSAzIDQKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0CnN0cnVj dCBfX0xDX2xvY2FsZTsKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsOwoKIyAxICIvdXNyL2luY2x1 ZGUvc3lzL2xpbWl0cy5oIiAxIDMgNAojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAz IDQKZXh0ZXJuICJDIiB7CiMgMjQ3ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAzIDQKIyAx ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNs dWRlL2Zsb2F0LmgiIDEgMyA0CiMgMjQ4ICIvdXNyL2luY2x1ZGUvc3lzL2xpbWl0cy5oIiAyIDMg NAojIDM5NyAiL3Vzci9pbmNsdWRlL3N5cy9saW1pdHMuaCIgMyA0Cn0KIyA0MyAiL3Vzci9pbmNs dWRlL3N5cy9sb2NhbGVkZWYuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2xjX2NvcmUu aCIgMSAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL3N5cy9sY19jb3JlLmgiIDMgNAojIDEgIi9nY2Mv ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDEgMyA0CiMgNTIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsKIyA2 NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5j bHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAx IDMgNAojIDU2ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsK IyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hh ciBpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGlu dCBpbnQzMl90OwoKCgoKdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludDY0X3Q7CgoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBsb25nIHVpbnQ2NF90OwojIDkyICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0 eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7CnR5cGVkZWYgdWludDY0X3QgdWludG1heF90OwojIDEw NCAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgbG9uZyBp bnRwdHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsKCgoKCgp0eXBlZGVmIHNp Z25lZCBjaGFyIGludF9sZWFzdDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50X2xlYXN0MTZf dDsKdHlwZWRlZiBzaWduZWQgaW50IGludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIHNpZ25lZCBs b25nIGxvbmcgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVh c3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5z aWduZWQgaW50IHVpbnRfbGVhc3QzMl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg dWludF9sZWFzdDY0X3Q7CiMgMTM4ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0 eXBlZGVmIGludDMyX3QgaW50ZmFzdF90Owp0eXBlZGVmIHVpbnQzMl90IHVpbnRmYXN0X3Q7CgoK dHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhfdDsKdHlwZWRlZiBpbnQzMl90IGludF9mYXN0 MTZfdDsKdHlwZWRlZiBpbnQzMl90IGludF9mYXN0MzJfdDsKdHlwZWRlZiB1aW50MzJfdCB1aW50 X2Zhc3Q4X3Q7CnR5cGVkZWYgdWludDMyX3QgdWludF9mYXN0MTZfdDsKdHlwZWRlZiB1aW50MzJf dCB1aW50X2Zhc3QzMl90OwoKdHlwZWRlZiBpbnQ2NF90IGludF9mYXN0NjRfdDsKdHlwZWRlZiB1 aW50NjRfdCB1aW50X2Zhc3Q2NF90OwojIDU3NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5o IiAzIDQKdHlwZWRlZiBzaWduZWQgbG9uZyBfX2xvbmczMl90Owp0eXBlZGVmIHVuc2lnbmVkIGxv bmcgX191bG9uZzMyX3Q7CiMgNTg3ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0 eXBlZGVmIHNpZ25lZCBpbnQgX19sb25nNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191bG9u ZzY0X3Q7CiMgNTk5ICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHNp Z25lZCBpbnQgaW50MzJsb25nNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMybG9uZzY0 X3Q7CiMgNjEyICIvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHNpZ25l ZCBsb25nIGxvbmczMmludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzMyaW50NjRf dDsKIyA2MjIgIi91c3IvaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMyA0CnR5cGVkZWYgc2lnbmVk IGNoYXIgaW50ODsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50MTY7CnR5cGVkZWYgc2lnbmVkIGlu dCBpbnQzMjsKCgoKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQ2NDsKCgoKdHlwZWRlZiB1 bnNpZ25lZCBjaGFyIHVfaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfaW50OF90Owp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IHVfaW50MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9pbnQx Nl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1 X2ludDMyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9pbnQ2NDsKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9pbnQ2NF90OwojIDY2NCAiL3Vzci9pbmNsdWRlL3N5cy9p bnR0eXBlcy5oIiAzIDQKZXh0ZXJuIGxvbmcgc3RydG9pbWF4KGNvbnN0IGNoYXIgKiwgY2hhciAq KiwgaW50KTsKCgoKCgp9CiMgNjUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgODcgIi9nY2MvZGpl L2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5 cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAxMTQgIi9nY2MvZGplL2J1 aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDMgNAp0eXBlZGVmIGxvbmcgZnBvc190OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBmcG9zNjRf dDsKCgoKCgoKdHlwZWRlZiBpbnQzMmxvbmc2NF90IHRpbWVfdDsKCgoKCnR5cGVkZWYgaW50IGNs b2NrX3Q7CgoKCgoKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDE0OCAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90Owp0eXBlZGVmIHVu c2lnbmVkIHNob3J0IHVzaG9ydF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X3Q7CnR5cGVk ZWYgdW5zaWduZWQgbG9uZyB1bG9uZ190Owp0eXBlZGVmIHNpZ25lZCBsb25nIHNzaXplX3Q7CgoK Cgp0eXBlZGVmIGludCBsZXZlbF90Owp0eXBlZGVmIGludDMybG9uZzY0X3QgZGFkZHJfdDsKdHlw ZWRlZiBpbnQgZGFkZHIzMl90OwoKdHlwZWRlZiBpbnQ2NF90IGRhZGRyNjRfdDsKCnR5cGVkZWYg Y2hhciAqIGNhZGRyX3Q7CnR5cGVkZWYgdWludDMybG9uZzY0X3QgaW5vX3Q7CnR5cGVkZWYgdWlu dF90IGlubzMyX3Q7Cgp0eXBlZGVmIHVpbnQ2NF90IGlubzY0X3Q7Cgp0eXBlZGVmIHNob3J0IGNu dF90Owp0eXBlZGVmIHVpbnQzMmxvbmc2NF90IGRldl90Owp0eXBlZGVmIHVpbnRfdCBkZXYzMl90 OwoKdHlwZWRlZiB1aW50NjRfdCBkZXY2NF90OwoKdHlwZWRlZiBpbnQgY2hhbl90Owp0eXBlZGVm IGludCB0aW1lMzJfdDsKdHlwZWRlZiBpbnQgcGlkMzJfdDsKdHlwZWRlZiBpbnQgdGlkMzJfdDsK CnR5cGVkZWYgdWludDY0X3QgcGlkNjRfdDsKdHlwZWRlZiB1aW50NjRfdCB0aWQ2NF90Owp0eXBl ZGVmIHVpbnQ2NF90IHRpbWU2NF90OwoKCgoKCgoKdHlwZWRlZiB2b2lkICogX19wdHIzMjsKdHlw ZWRlZiBjaGFyICogX19jcHRyMzI7CgoKdHlwZWRlZiBpbnQgc29mZl90OwoKCgoKdHlwZWRlZiBs b25nIG9mZl90OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBvZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBw YWRkcl90Owp0eXBlZGVmIGludDMybG9uZzY0X3Qga2V5X3Q7CnR5cGVkZWYgaW50IHRpbWVyX3Q7 CnR5cGVkZWYgc2hvcnQgbmxpbmtfdDsKdHlwZWRlZiB1aW50X3QgbW9kZV90Owp0eXBlZGVmIHVp bnRfdCB1aWRfdDsKdHlwZWRlZiB1aW50X3QgZ2lkX3Q7CnR5cGVkZWYgX19wdHIzMiBtaWRfdDsK dHlwZWRlZiBpbnQzMmxvbmc2NF90IHBpZF90Owp0eXBlZGVmIGludDMybG9uZzY0X3QgdGlkX3Q7 CnR5cGVkZWYgY2hhciBzbGFiX3RbMTJdOwp0eXBlZGVmIGxvbmcgbXR5cF90Owp0eXBlZGVmIGlu dCBib29sZWFuX3Q7CnR5cGVkZWYgaW50IGNyaWRfdDsKCgp0eXBlZGVmIGludCBibGtjbnRfdDsK dHlwZWRlZiBpbnQgYmxrc2l6ZV90OwojIDIzNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg dWxvbmdfdCBmc2Jsa2NudF90Owp0eXBlZGVmIHVsb25nX3QgZnNmaWxjbnRfdDsKCgoKCgoKCnR5 cGVkZWYgdWludDMybG9uZzY0X3QgaWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdXNlY29uZHNf dDsKdHlwZWRlZiBzaWduZWQgaW50IHN1c2Vjb25kc190Owp0eXBlZGVmIGludCBjbG9ja2lkX3Q7 CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdzZXRfdCB7CgogdW5zaWduZWQgaW50IGxvc2lnczsKIHVu c2lnbmVkIGludCBoaXNpZ3M7CgoKCgp9IHNpZ3NldF90OwoKdHlwZWRlZiBpbnQgc2lnbmFsX3Q7 CgoKCgp0eXBlZGVmIHN0cnVjdCBmc2lkX3QgewoKCgoKIHVuc2lnbmVkIGludCB2YWxbMl07CgoK Cgp9IGZzaWRfdDsKIyAyODUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX3B0 cV9xdWV1ZSB7CiBzdHJ1Y3QgX19wdHFfcXVldWUgKl9fcHRxX25leHQ7CiBzdHJ1Y3QgX19wdHFf cXVldWUgKl9fcHRxX3ByZXY7Cn0gX19wdHFfcXVldWU7Cgp0eXBlZGVmIGludCBfX3B0bG9ja190 eXBlOwoKdHlwZWRlZiBzdHJ1Y3QgX19wdF9hdHRyICpwdGhyZWFkX2F0dHJfdDsKdHlwZWRlZiBz dHJ1Y3QgX19wdF9hdHRyICpwdGhyZWFkX2NvbmRhdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRf YXR0ciAqcHRocmVhZF9tdXRleGF0dHJfdDsKCgp0eXBlZGVmIHN0cnVjdCBfX3B0X2F0dHIgKnB0 aHJlYWRfcndsb2NrYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKIyAzMzcgIi9nY2MvZGplL2J1aWxkL3Bv d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMg NAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX19wdHFfcXVldWUgKiBfX3B0cV9saW5rOwogICAg ICAgIGludCBfX3Jlc2VydmVkMTsKICAgICAgICBfX3B0bG9ja190eXBlIF9fcHRtdHhfbG9jazsK ICAgICAgICBpbnQgX19wdG10eF9mbGFnczsKICAgICAgICBwdGhyZWFkX3QgX19wdG10eF9vd25l cjsKICAgICAgICBpbnQgX19tdHhfaWQ7CiAgICAgICAgaW50IF9fYWNxdWlzaXRpb25zOwogICAg ICAgIGludCBfX210eF9raW5kOwogICAgICAgIGludCBfX2xvY2tfY3B0OwogICAgICAgIGludCBf X3NsZWVwczsKICAgICAgICBpbnQgX19taXNzZXM7CiAgICAgICAgaW50IF9fcmVzZXJ2ZWQyOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wdG10eF9kYng7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wdGN2X2RieDsKICAgICAgICBp bnQgX19yZXNlcnZlZDE7CiAgICAgICAgX19wdGxvY2tfdHlwZSBfX3B0Y3ZfbG9jazsKICAgICAg ICBpbnQgX19wdGN2X2ZsYWdzOwogICAgICAgIF9fcHRxX3F1ZXVlICogX19wdGN2X3dhaXRlcnM7 CiAgICAgICAgaW50IF9fcmVzZXJ2ZWQyOwogICAgICAgIGludCBfX2N2X2lkOwogICAgICAgIHVu c2lnbmVkIGludCBfX2N2X211dGV4OwogICAgICAgIGludCBfX3Jlc2VydmVkMzsKICAgICAgICBp bnQgX19jcHR3YWl0OwogICAgICAgIGludCBfX3Jlc2VydmVkOwoKfSBwdGhyZWFkX2NvbmRfdDsK CgoKdHlwZWRlZiBzdHJ1Y3QgewogX19wdGxvY2tfdHlwZSBfX3B0b25jZV9sb2NrOwogaW50IF9f cHRvbmNlX2luaXRpYWxpemVkOwogaW50IF9fcHRvbmNlX2V4ZWN1dGluZzsKIGludCBfX3B0b25j ZV9jb21wbGV0ZWQ7CiBwdGhyZWFkX211dGV4X3QgX19wdG9uY2VfbXV0ZXg7CiBwdGhyZWFkX2Nv bmRfdCBfX3B0b25jZV9leGVjdXRlZDsKfSBwdGhyZWFkX29uY2VfdDsKCgp0eXBlZGVmIHN0cnVj dCB7CgoKCgoKICAgICAgICBpbnQgX19wYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3B0cmxv Y2tfZGJ4OwoKCiAgICAgICAgcHRocmVhZF9tdXRleF90IF9fcndsX211dGV4OwogICAgICAgIHB0 aHJlYWRfY29uZF90IF9fcndsX3JzbGVlcGVyczsKICAgICAgICBwdGhyZWFkX2NvbmRfdCBfX3J3 bF93c2xlZXBlcnM7CiAgICAgICAgaW50IF9fcndsX2ZsYWdzOwogICAgICAgIHB0aHJlYWRfdCBf X3J3bF9vd25lcjsKICAgICAgICBpbnQgX19yd2xfcndsb2NrX2lkOwogICAgICAgIGludCBfX3J3 bF9sb2NrX2NvdW50OwoKCiAgICAgICAgaW50IF9fcndsX3dhaXRpbmc7CiAgICAgICAgaW50IF9f cndsX3dhY3F1aXNpdGlvbnM7CiAgICAgICAgaW50IF9fcndsX3JhY3F1aXNpdGlvbnM7CiAgICAg ICAgaW50IF9fcndsX3dzbGVlcHM7CiAgICAgICAgaW50IF9fcndsX3JzbGVlcHM7CiAgICAgICAg dW5zaWduZWQgbG9uZyBfX3Jlc2VydmVkWzZdOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCgoKCgp0 eXBlZGVmIHN0cnVjdCBfcXVhZCB7IGludCB2YWxbMl07IH0gcXVhZDsKCgojIDEgIi91c3IvaW5j bHVkZS9zeXMvbV90eXBlcy5oIiAxIDMgNAojIDQwICIvdXNyL2luY2x1ZGUvc3lzL21fdHlwZXMu aCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92bV90eXBlcy5oIiAxIDMgNAojIDM0ICIvdXNy L2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgdm1pZF90OwojIDQ1ICIv dXNyL2luY2x1ZGUvc3lzL3ZtX3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVsb25nX3Qgdm1oYW5kbGVf dDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy92bV90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nMzJp bnQ2NF90IGt2bWlkX3Q7CnR5cGVkZWYgdWxvbmczMmludDY0X3Qga3ZtaGFuZGxlX3Q7CnR5cGVk ZWYgaW50IGt2bWlkeF90Owp0eXBlZGVmIGludDMybG9uZzY0X3Qgdm1pZHhfdDsKdHlwZWRlZiBp bnQzMmxvbmc2NF90IHZta2V5X3Q7CnR5cGVkZWYgaW50MzJsb25nNjRfdCB2cG5fdDsKdHlwZWRl ZiBpbnQzMmxvbmc2NF90IHJwbl90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgcnBu NjRfdDsKCgoKCgoKCnR5cGVkZWYgaW50IGt2cG5fdDsKdHlwZWRlZiBpbnQga3Jwbl90Owp0eXBl ZGVmIGludDMybG9uZzY0X3Qgdm1zaXplX3Q7CgoKCgoKCnR5cGVkZWYgc3RydWN0Cgp2bWFkZHJf dAoKewoKIHZtaGFuZGxlX3Qgc3J2YWw7CiBjYWRkcl90IG9mZnNldDsKCgoKCn0gdm1hZGRyX3Q7 Cgp0eXBlZGVmIHN0cnVjdAoKYWRzcGFjZV90Cgp7CgogdWxvbmczMmludDY0X3QgYWxsb2M7CiBr dm1oYW5kbGVfdCBzcnZhbFsxNl07CgoKCgp9IGFkc3BhY2VfdDsKCgoKCgoKCnR5cGVkZWYgZW51 bSBfTVJfQVRUUl9UWVBFIHsKICBWaXJ0QWRkciA9IDEKfSBNUl9BVFRSX1RZUEU7Cgp0eXBlZGVm IGVudW0gX01SX0xBQkVMX1RZUEUgewogIEZyZWVNZW0gPSAxLAogIElQTENCID0gMiwKICBSTUFM TE9DID0gMywKICBQTV9IRUFQID0gNCwKICBSVEFTX0hFQVAgPSA1LAogIFRDRV9UQUJMRSA9IDYs CiAgSU9fU1BBQ0UgPSA3Cn0gTVJfTEFCRUxfVFlQRTsKCnR5cGVkZWYgc3RydWN0IHsKIHVuc2ln bmVkIGxvbmcgbG9uZyBtcl9hZGRyOwogdW5zaWduZWQgbG9uZyBsb25nIG1yX3NpemU7CiB1bnNp Z25lZCBjaGFyIG1yX2F0dDsKIHVuc2lnbmVkIGNoYXIgbXJfbGFiZWw7CiB1bnNpZ25lZCBzaG9y dCBtcl9ub2RlaWQ7CiBjaGFyIHJlc2VydmVkWzRdOwp9IGlwbGNiX21hcF9yZWdfdDsKIyA0MSAi L3Vzci9pbmNsdWRlL3N5cy9tX3R5cGVzLmgiIDIgMyA0CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBs YWJlbF90CnsKCiBzdHJ1Y3QgbGFiZWxfdCAqcHJldjsKIHVsb25nX3QgaWFyOwogdWxvbmdfdCBz dGFjazsKIHVsb25nX3QgdG9jOwogdWxvbmdfdCBjcjsKIHVsb25nX3QgaW50cHJpOwogdWxvbmdf dCByZWdbMTldOwojIDY3ICIvdXNyL2luY2x1ZGUvc3lzL21fdHlwZXMuaCIgMyA0Cn0gbGFiZWxf dDsKCnR5cGVkZWYgaW50MzJsb25nNjRfdCBleHRfdDsKIyA0MTcgIi9nY2MvZGplL2J1aWxkL3Bv d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg MyA0CgoKCgp0eXBlZGVmIGNoYXIgKiB2YV9saXN0OwojIDQ2NSAiL2djYy9kamUvYnVpbGQvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fcHRyNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBsb25nIF9fY3B0cjY0OwoKCgoKCgp0eXBlZGVmIHVzaG9ydF90IFVuaUNoYXI7CgoKCgp0eXBl ZGVmIHVjaGFyX3QgdWNoYXI7CnR5cGVkZWYgdXNob3J0X3QgdXNob3J0Owp0eXBlZGVmIHVpbnRf dCB1aW50Owp0eXBlZGVmIHVsb25nX3QgdWxvbmc7Cgp0eXBlZGVmIHN0cnVjdCB7IGludCByWzFd OyB9ICogcGh5c2Fkcl90Owp0eXBlZGVmIHBoeXNhZHJfdCBwaHlzYWRyOwoKCnR5cGVkZWYgdW5z aWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7Cgp0eXBl ZGVmIGludCBzd2Jsa190OwoKCgoKc3RydWN0IHNpZ3NldCB7CiB1bnNpZ25lZCBpbnQgbG9zaWdz OwogdW5zaWduZWQgaW50IGhpc2lnczsKfTsKCgpzdHJ1Y3QgZnNpZCB7CgogdW5zaWduZWQgaW50 IHZhbFsyXTsKCgoKfTsKIyA1MTggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgZmlsZWlkIHsK IHVpbnRfdCBmaWRfbGVuOwogaW5vMzJfdCBmaWRfaW5vOwogdWludF90IGZpZF9nZW47CiBjaGFy IGZpZF94WzIwIC0gKHNpemVvZihpbm8zMl90KSArIDIpIC0gc2l6ZW9mKHVpbnRfdCldOwp9Owoj IDUzOSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2Mv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnN0cnVjdCBmaWQgewogdWludF90IGZpZF9sZW47CiBj aGFyIGZpZF9kYXRhWzIwXTsKfTsKdHlwZWRlZiBzdHJ1Y3QgZmlkIGZpZF90OwoKCnN0cnVjdCBm aGFuZGxlIHsKIGNoYXIgeFszMl07Cn07CnR5cGVkZWYgc3RydWN0IGZoYW5kbGUgZmhhbmRsZV90 OwoKc3RydWN0IGZpbGVoYW5kbGUgewogZnNpZF90IGZoX2ZzaWQ7CiBzdHJ1Y3QgZmlsZWlkIGZo X2ZpZDsKfTsKIyA1NjMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgdW5pcXVlX2lkIHsKICAg ICAgIF9fdWxvbmczMl90IHdvcmQxOwogICAgICAgX191bG9uZzMyX3Qgd29yZDI7CiAgICAgICBf X3Vsb25nMzJfdCB3b3JkMzsKICAgICAgIF9fdWxvbmczMl90IHdvcmQ0Owp9Owp0eXBlZGVmIHN0 cnVjdCB1bmlxdWVfaWQgdW5pcXVlX2lkX3Q7CiMgNTk1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlw ZWRlZiBsb25nIGxvbmcgb2Zmc2V0X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg c2l6ZTY0X3Q7CnR5cGVkZWYgbG9uZyBsb25nIHNzaXplNjRfdDsKCgoKCgoKdHlwZWRlZiBsb25n IGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9sb25nbG9uZ190 OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IGNsYXNzX2lkX3Q7CgoKCn0KIyAzNyAiL3Vzci9pbmNs dWRlL3N5cy9sY19jb3JlLmgiIDIgMyA0CgoKZXh0ZXJuICJDIiB7CiMgNTIgIi91c3IvaW5jbHVk ZS9zeXMvbGNfY29yZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIHVuc2lnbmVkIHNob3J0 CiBfX3R5cGVfaWQsCiBfX21hZ2ljOwogICAgdW5zaWduZWQgbG9uZwogX192ZXJzaW9uOwoKICAg IHNpemVfdCBfX3NpemU7Cgp9IF9MQ19vYmplY3RfdDsKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMv bGNfY29yZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmplY3RfdCBfX2hkcjsK CgoKICAgIGludCBfX2NhdGdldHM7CiAgICBpbnQgX19jYXRjbG9zZTsKCgogICAgaW50IF9fY29t cHJlc3M7CiAgICBpbnQgX19kZWNvbXByZXNzOwogICAgaW50IF9fc3RhcnRfY29tcHJlc3M7CiAg ICBpbnQgX19lbmRfY29tcHJlc3M7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7 Cn0gX0xDX2NvcmVfY2FyX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9f aGRyOwoKCiAgICBpbnQgX19ubF9sYW5naW5mbzsKCgogICAgaW50IF9fbWJ0b3djOwogICAgaW50 IF9fbWJzdG93Y3M7CiAgICBpbnQgX193Y3RvbWI7CiAgICBpbnQgX193Y3N0b21iczsKCgogICAg aW50IF9fbWJsZW47CgoKICAgIGludCBfX3djc3dpZHRoOwogICAgaW50IF9fd2N3aWR0aDsKCgog ICAgaW50IF9fbWJ0b3BjOwogICAgaW50IF9fbWJzdG9wY3M7CiAgICBpbnQgX19wY3RvbWI7CiAg ICBpbnQgX19wY3N0b21iczsKCgogICAgaW50IF9fY3NpZDsKICAgIGludCBfX3djc2lkOwoKCiAg ICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX2NoYXJtYXBfdDsKCgp0 eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoKCiAgICBpbnQgX190b3d1 cHBlcjsKICAgIGludCBfX3Rvd2xvd2VyOwoKCiAgICBpbnQgX19nZXRfd2N0eXBlOwogICAgaW50 IF9faXNfd2N0eXBlOwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19j b3JlX2N0eXBlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoK CiAgICBpbnQgX19zdHJjb2xsOwogICAgaW50IF9fc3RyeGZybTsKCgogICAgaW50IF9fd2NzY29s bDsKICAgIGludCBfX3djc3hmcm07CgoKICAgIGludCBfX2ZubWF0Y2g7CgoKICAgIGludCBfX3Jl Z2NvbXA7CiAgICBpbnQgX19yZWdlcnJvcjsKICAgIGludCBfX3JlZ2V4ZWM7CiAgICBpbnQgX19y ZWdmcmVlOwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX2Nv bGxhdGVfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX29iamVjdF90IF9faGRyOwoKCiAg ICBpbnQgX19ubF9sYW5naW5mbzsKCgogICAgaW50IF9fc3RyZnRpbWU7CiAgICBpbnQgX19zdHJw dGltZTsKCgogICAgaW50IF9fd2NzZnRpbWU7CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpf X2RhdGE7Cn0gX0xDX2NvcmVfdGltZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2Jq ZWN0X3QgX19oZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19zdHJmbW9u OwoKCiAgICBpbnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX21vbmV0YXJ5 X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19vYmplY3RfdCBfX2hkcjsKCgogICAgaW50 IF9fbmxfbGFuZ2luZm87CgoKICAgIGludCBfX2luaXQ7CiAgICB2b2lkICpfX2RhdGE7Cn0gX0xD X2NvcmVfbnVtZXJpY190OwoKCnR5cGVkZWYgc3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19o ZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZvOwoKCiAgICBpbnQgX19ycG1hdGNoOwoKCiAgICBp bnQgX19pbml0OwogICAgdm9pZCAqX19kYXRhOwp9IF9MQ19jb3JlX3Jlc3BfdDsKCnR5cGVkZWYg c3RydWN0IHsKCiAgICBfTENfb2JqZWN0X3QgX19oZHI7CgoKICAgIGludCBfX25sX2xhbmdpbmZv OwogICAgaW50IF9fbG9jYWxlY29udjsKCgogICAgaW50IF9faW5pdDsKICAgIHZvaWQgKl9fZGF0 YTsKfSBfTENfY29yZV9sb2NhbGVfdDsKCgoKfQojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs ZWRlZi5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYzMS5oIiAxIDMg NAojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZjMxLmgiIDMgNAp0eXBlZGVmIHN0cnVj dCBjb2xkZXNjIHsKIHNob3J0IGNkX3N0cm9mZjsKIHNob3J0IGNkX3JlcG9mZjsKIHNob3J0IGNk X2N2YWw7CiBzaG9ydCBjZF9jdW5pcTsKfSBjb2xkZXNjX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBj b2xsYXRpb25fdGFibGUgewogc2hvcnQgbGNfdmVyc2lvbjsKIHNob3J0IGxjX2xlbmd0aDsKIGNo YXIgKmxjX2xvY2FsZV9uYW1lOwogaW50IGxlbl9jb2xsYXRlOwogc2hvcnQgKmxjX2NvbGxhdGU7 CiBpbnQgbGVuX2NvbHVuaXE7CiBzaG9ydCAqbGNfY29sdW5pcTsKIGludCBsZW5fY29sZGVzYzsK IGNvbGRlc2NfdCAqbGNfY29sZGVzYzsKIGludCBsZW5fc3RyaW5nczsKIHdjaGFyX3QgKmxjX3N0 cmluZ3M7CiBpbnQgaGlnaF9jdmFsdWU7Cn0gY29sX3Q7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBj aGFyX2NsYXNzaWZpY2F0aW9uX3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19s ZW5ndGg7CiBzaG9ydCBsY19jb2RlX3R5cGU7CiBzaG9ydCBtYl9jdXJfbWF4Owogc2hvcnQgbWJf Y3VyX21pbjsKIHNob3J0IGxjX2RzcF93aWR0aDsKIGNoYXIgKmxjX2xvY2FsZV9uYW1lOwogaW50 IGxlbl9jYXNlY29udjsKIHdjaGFyX3QgKmxjX2Nhc2Vjb252OwogaW50IGxlbl9jdHlwZTsKIHVu c2lnbmVkIHNob3J0ICpsY19jdHlwZTsKfSBjdHlwZV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxj X21vbmV0YXJ5X3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBj aGFyICpsY19sb2NhbGVfbmFtZTsKIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKIGNoYXIgKmN1cnJl bmN5X3N5bWJvbDsKIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogY2hhciAqbW9uX3Rob3VzYW5k c19zZXA7CiBjaGFyICptb25fZ3JvdXBpbmc7CiBjaGFyICpwb3NpdGl2ZV9zaWduOwogY2hhciAq bmVnYXRpdmVfc2lnbjsKIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogY2hhciBmcmFjX2RpZ2l0czsK IGNoYXIgcF9jc19wcmVjZWRlczsKIGNoYXIgcF9zZXBfYnlfc3BhY2U7CiBjaGFyIG5fY3NfcHJl Y2VkZXM7CiBjaGFyIG5fc2VwX2J5X3NwYWNlOwogY2hhciBwX3NpZ25fcG9zbjsKIGNoYXIgbl9z aWduX3Bvc247Cn0gbW9uX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgbnVtZXJpY190YWJsZSB7CiBz aG9ydCBsY192ZXJzaW9uOwogc2hvcnQgbGNfbGVuZ3RoOwogY2hhciAqbGNfbG9jYWxlX25hbWU7 CiBjaGFyICpkZWNpbWFsX3BvaW50OwogY2hhciAqdGhvdXNhbmRzX3NlcDsKIGNoYXIgKmdyb3Vw aW5nOwp9IG51bV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxjX21lc3NhZ2VzX3RhYmxlIHsKIHNo b3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19sb2NhbGVfbmFtZTsK IGNoYXIgKm1lc3NhZ2VzOwogY2hhciAqeWVzX3N0cmluZzsKIGNoYXIgKm5vX3N0cmluZzsKfSBt c2dfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBsY190aW1lX3RhYmxlIHsKIHNob3J0IGxjX3ZlcnNp b247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19sb2NhbGVfbmFtZTsKIGNoYXIgKnRfZm10 OwogY2hhciAqZF9mbXQ7CiBjaGFyICpubGxkYXRlOwogY2hhciAqZF90X2ZtdDsKIGNoYXIgKmFi ZGF5OwogY2hhciAqZGF5OwogY2hhciAqYWJtb247CiBjaGFyICptb247CgoKCgogY2hhciAqbWlz YzsKIGNoYXIgKnRzdHJzOwogY2hhciAqdHVuaXRzOwoKCgogY2hhciAqeWVhcjsKIGNoYXIgKmFt X3BtOwp9IHRpbV90OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB3Y2hhcl9tYXBwaW5nX3RhYmxlIHsK IHNob3J0IGxjX3ZlcnNpb247CiBzaG9ydCBsY19sZW5ndGg7CiBjaGFyICpsY19pZGVudGlmaWVy Owp9IG1hcF90OwojIDE4MyAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYzMS5oIiAzIDQKdHlw ZWRlZiBzdHJ1Y3QgbG9jYWxlaW5mb190YWJsZSB7CiBjaGFyIGxjX21hZzAsIGxjX21hZzE7CiBz aG9ydCBsY192ZXJzaW9uOwogc2hvcnQgbGNfY29kZV90eXBlOwogc2hvcnQgbGNfbGVuZ3RoOwog Y29sX3QgKmxjX2NvbHRibDsKIGN0eXBlX3QgKmxjX2NocnRibDsKIG1vbl90ICpsY19tb250Ymw7 CiBudW1fdCAqbGNfbnVtdGJsOwogdGltX3QgKmxjX3RpbXRibDsKIG1zZ190ICpsY19tc2d0Ymw7 CiBtYXBfdCAqbGNfbWFwdGJsOwp9IGxvY190OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2Fs ZWRlZi5oIiAyIDMgNAojIDY2ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlw ZWRlZiBzdHJ1Y3QgewoKICAgIF9MQ19jb3JlX2NoYXJtYXBfdCBjb3JlOwoKICAgIGNoYXIgKmNt X2NzbmFtZTsKCiAgICBzaXplX3QgY21fbWJfY3VyX21heDsKICAgIHNpemVfdCBjbV9tYl9jdXJf bWluOwoKICAgIHVuc2lnbmVkIGNoYXIKICAgICAgY21fbWF4X2Rpc3Bfd2lkdGg7CgoKICAgIHVu c2lnbmVkCiBjaGFyICpjbV9jc3RhYjsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAg ICAgICpsb2NfcmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2b2lkICpfX2RhdGFfcHRy OwoKfSBfTENfY2hhcm1hcF90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX2NoYXJtYXBfb2JqaGRsIF9M Q19jaGFybWFwX29iamhkbF90OwoKc3RydWN0IF9MQ19jaGFybWFwX29iamhkbCB7CiBfTENfY2hh cm1hcF90ICpvYmo7CgoKIHZvaWQgKigqKm1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2Jq aGRsICpsb2NfaGRsOwoKCn07CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX2NvcmVf bW9uZXRhcnlfdCBjb3JlOwoKICAgIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICAgIGNoYXIgKmN1 cnJlbmN5X3N5bWJvbDsKICAgIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50OwogICAgY2hhciAqbW9u X3Rob3VzYW5kc19zZXA7CiAgICBjaGFyICptb25fZ3JvdXBpbmc7CiAgICBjaGFyICpwb3NpdGl2 ZV9zaWduOwogICAgY2hhciAqbmVnYXRpdmVfc2lnbjsKICAgIHNpZ25lZCBjaGFyIGludF9mcmFj X2RpZ2l0czsKICAgIHNpZ25lZCBjaGFyIGZyYWNfZGlnaXRzOwogICAgc2lnbmVkIGNoYXIgcF9j c19wcmVjZWRlczsKICAgIHNpZ25lZCBjaGFyIHBfc2VwX2J5X3NwYWNlOwogICAgc2lnbmVkIGNo YXIgbl9jc19wcmVjZWRlczsKICAgIHNpZ25lZCBjaGFyIG5fc2VwX2J5X3NwYWNlOwogICAgc2ln bmVkIGNoYXIgcF9zaWduX3Bvc247CiAgICBzaWduZWQgY2hhciBuX3NpZ25fcG9zbjsKICAgIGNo YXIgKmRlYml0X3NpZ247CiAgICBjaGFyICpjcmVkaXRfc2lnbjsKICAgIGNoYXIgKmxlZnRfcGFy ZW50aGVzaXM7CiAgICBjaGFyICpyaWdodF9wYXJlbnRoZXNpczsKCiAgICBzdHJ1Y3QgX19MQ19s b2NhbGUKICAgICAgICAgICAgICpsb2NfcmVjOwoKICAgIHZvaWQgKl9fbWV0aF9wdHI7CiAgICB2 b2lkICpfX2RhdGFfcHRyOwoKfSBfTENfbW9uZXRhcnlfdDsKCnR5cGVkZWYgc3RydWN0IF9MQ19t b25ldGFyeV9vYmpoZGwgX0xDX21vbmV0YXJ5X29iamhkbF90OwpzdHJ1Y3QgX0xDX21vbmV0YXJ5 X29iamhkbCB7CiBfTENfbW9uZXRhcnlfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoKCnN0 cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgp0eXBlZGVmIHN0cnVj dCB7CgogICAgX0xDX2NvcmVfbnVtZXJpY190IGNvcmU7CgogICAgY2hhciAqZGVjaW1hbF9wb2lu dDsKICAgIGNoYXIgKnRob3VzYW5kc19zZXA7CiAgICB1bnNpZ25lZAogY2hhciAqZ3JvdXBpbmc7 CgogICAgc3RydWN0IF9fTENfbG9jYWxlCiAgICAgICAgICAgICAqbG9jX3JlYzsKCiAgICB2b2lk ICpfX21ldGhfcHRyOwogICAgdm9pZCAqX19kYXRhX3B0cjsKCn0gX0xDX251bWVyaWNfdDsKCnR5 cGVkZWYgc3RydWN0IF9MQ19udW1lcmljX29iamhkbCBfTENfbnVtZXJpY19vYmpoZGxfdDsKc3Ry dWN0IF9MQ19udW1lcmljX29iamhkbCB7CiBfTENfbnVtZXJpY190ICpvYmo7CgoKIHZvaWQgKigq Km1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CgoKCgoK Cgp0eXBlZGVmIHN0cnVjdCB7CgogICAgX0xDX2NvcmVfcmVzcF90IGNvcmU7CgogICAgY2hhciAq eWVzZXhwcjsKICAgIGNoYXIgKm5vZXhwcjsKICAgIGNoYXIgKnllc3N0cjsKICAgIGNoYXIgKm5v c3RyOwoKICAgIHN0cnVjdCBfX0xDX2xvY2FsZQogICAgICAgICAgICAgKmxvY19yZWM7CgogICAg dm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19yZXNwX3Q7Cgp0 eXBlZGVmIHN0cnVjdCBfTENfcmVzcF9vYmpoZGwgX0xDX3Jlc3Bfb2JqaGRsX3Q7CnN0cnVjdCBf TENfcmVzcF9vYmpoZGwgewogX0xDX3Jlc3BfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoK CnN0cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwoKCgoKCgoKdHlwZWRlZiBz dHJ1Y3QgewoKICAgIF9MQ19jb3JlX3RpbWVfdCBjb3JlOwoKICAgIGNoYXIgKmRfZm10OwogICAg Y2hhciAqdF9mbXQ7CiAgICBjaGFyICpkX3RfZm10OwogICAgY2hhciAqdF9mbXRfYW1wbTsKICAg IGNoYXIgKmFiZGF5WzddOwogICAgY2hhciAqZGF5WzddOwogICAgY2hhciAqYWJtb25bMTJdOwog ICAgY2hhciAqbW9uWzEyXTsKICAgIGNoYXIgKmFtX3BtWzJdOwogICAgY2hhciAqZXJhOwogICAg Y2hhciAqZXJhX3llYXI7CiAgICBjaGFyICplcmFfZF9mbXQ7CiAgICBjaGFyICphbHRfZGlnaXRz OwogICAgY2hhciAqZXJhX2RfdF9mbXQ7CiAgICBjaGFyICplcmFfdF9mbXQ7CgogICAgc3RydWN0 IF9fTENfbG9jYWxlCiAgICAgICAgICAgICAqbG9jX3JlYzsKCiAgICB2b2lkICpfX21ldGhfcHRy OwogICAgdm9pZCAqX19kYXRhX3B0cjsKCn0gX0xDX3RpbWVfdDsKCnR5cGVkZWYgc3RydWN0IF9M Q190aW1lX29iamhkbCBfTENfdGltZV9vYmpoZGxfdDsKc3RydWN0IF9MQ190aW1lX29iamhkbCB7 CiBfTENfdGltZV90ICpvYmo7CgoKIHZvaWQgKigqKm1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2Nh bGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln bmVkCiBzaG9ydCBuWzQgKzFdOwp9IF9MQ193ZWlnaHRfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg ewoKICAgIGNoYXIgKmNlX3N5bTsKICAgIF9MQ193ZWlnaHRfdCBjZV93Z3Q7Cgp9IF9MQ19jb2xs ZWxfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgX0xDX3dlaWdodF90IGN0X3dndDsKCgog ICAgX0xDX2NvbGxlbF90ICpjdF9jb2xsZWw7Cgp9IF9MQ19jb2x0YmxfdDsKIyAzMTkgIi91c3Iv aW5jbHVkZS9zeXMvbG9jYWxlZGVmLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICp0 Z3Rfd2d0X3N0cls0ICsxXTsKCgp9IF9MQ19zdWJzX3Q7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7 CgogICAgX0xDX2NvcmVfY29sbGF0ZV90IGNvcmU7CgogICAgdW5zaWduZWQKIGNoYXIgY29fbm9y ZDsKCiAgICBfTENfd2VpZ2h0X3QgY29fc29ydDsKCgogICAgd2NoYXJfdCBjb193Y19taW47CiAg ICB3Y2hhcl90IGNvX3djX21heDsKCiAgICB3Y2hhcl90IGNvX2NvbF9taW47CiAgICB3Y2hhcl90 IGNvX2NvbF9tYXg7CgogICAgX0xDX2NvbHRibF90ICpjb19jb2x0Ymw7CgogICAgdW5zaWduZWQK IGNoYXIgY29fbnN1YnM7CiAgICBfTENfc3Vic190ICpjb19zdWJzOwoKICAgIHVuc2lnbmVkCiBz aG9ydCBjb19zcGVjaWFsOwoKCgoKICAgIHN0cnVjdCBfX0xDX2xvY2FsZQogICAgICAgICAgICAg ICAgKmxvY19yZWM7CgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7 Cgp9IF9MQ19jb2xsYXRlX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfTENfY29sbGF0ZV9vYmpoZGwgX0xD X2NvbGxhdGVfb2JqaGRsX3Q7CnN0cnVjdCBfTENfY29sbGF0ZV9vYmpoZGwgewogX0xDX2NvbGxh dGVfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoKCnN0cnVjdCBfTENfbG9jYWxlX29iamhk bCAqbG9jX2hkbDsKCgp9OwojIDM5MiAiL3Vzci9pbmNsdWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0 CnR5cGVkZWYgc3RydWN0IHsKCiAgICBjaGFyICpuYW1lOwogICAgdW5zaWduZWQKIGludCBtYXNr OwoKfSBfTENfY2xhc3NubV90OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICBfTENfY29yZV9j dHlwZV90IGNvcmU7CgoKICB3Y2hhcl90IG1pbl93YzsKICB3Y2hhcl90IG1heF93YzsKCgogIHdj aGFyX3QgKnVwcGVyOwogIHdjaGFyX3QgKmxvd2VyOwoKCiAgdW5zaWduZWQKICAgICAgaW50ICpt YXNrOwogIHVuc2lnbmVkCiAgICAgIGludCAqcW1hc2s7CiAgdW5zaWduZWQKICAgICAgY2hhciAq cWlkeDsKCgogIHVuc2lnbmVkCiAgICAgIGNoYXIgbmNsYXNzZXM7CiBfTENfY2xhc3NubV90ICpj bGFzc25tczsKCiAgICBzdHJ1Y3QgX19MQ19sb2NhbGUKICAgICAgICAgICAgICAgKmxvY19yZWM7 CgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZvaWQgKl9fZGF0YV9wdHI7Cgp9IF9MQ19jdHlw ZV90OwoKdHlwZWRlZiBzdHJ1Y3QgX0xDX2N0eXBlX29iamhkbCBfTENfY3R5cGVfb2JqaGRsX3Q7 CnN0cnVjdCBfTENfY3R5cGVfb2JqaGRsIHsKIF9MQ19jdHlwZV90ICpvYmo7CgoKIHZvaWQgKigq Km1ldGgpKCk7CgoKc3RydWN0IF9MQ19sb2NhbGVfb2JqaGRsICpsb2NfaGRsOwoKCn07CiMgNDY1 ICIvdXNyL2luY2x1ZGUvc3lzL2xvY2FsZWRlZi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX19MQ19s b2NhbGUgewoKICAgIF9MQ19jb3JlX2xvY2FsZV90IGNvcmU7CgogICAgY2hhciAqbmxfaW5mb1s2 M107CiAgICBzdHJ1Y3QgbGNvbnYgKm5sX2xjb252OwoKICAgIF9MQ19jaGFybWFwX29iamhkbF90 IGxjX2NoYXJtYXA7CiAgICBfTENfY29sbGF0ZV9vYmpoZGxfdCBsY19jb2xsYXRlOwogICAgX0xD X2N0eXBlX29iamhkbF90IGxjX2N0eXBlOwogICAgX0xDX21vbmV0YXJ5X29iamhkbF90IGxjX21v bmV0YXJ5OwogICAgX0xDX251bWVyaWNfb2JqaGRsX3QgbGNfbnVtZXJpYzsKICAgIF9MQ19yZXNw X29iamhkbF90IGxjX3Jlc3A7CiAgICBfTENfdGltZV9vYmpoZGxfdCBsY190aW1lOwoKICAgIHN0 cnVjdCBfX0xDX2xvY2FsZSAqbG9jX3JlYzsKCgogICAgdm9pZCAqX19tZXRoX3B0cjsKICAgIHZv aWQgKl9fZGF0YV9wdHI7CgogICAgY2hhciAqX19ubF95ZXNzdHI7CiAgICBjaGFyICpfX25sX25v c3RyOwogICAgY2hhciAqX19ubF9jcm5jeXN0cjsKCn0gX0xDX2xvY2FsZV90OwoKdHlwZWRlZiBz dHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgX0xDX2xvY2FsZV9vYmpoZGxfdDsKc3RydWN0IF9MQ19s b2NhbGVfb2JqaGRsIHsKIF9MQ19sb2NhbGVfdCAqb2JqOwoKCiB2b2lkICooKiptZXRoKSgpOwoK CnN0cnVjdCBfTENfbG9jYWxlX29iamhkbCAqbG9jX2hkbDsKCgp9OwojIDUxMiAiL3Vzci9pbmNs dWRlL3N5cy9sb2NhbGVkZWYuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9MQ19vYmplY3RfaGFuZGxl IF9MQ19vYmplY3RfaGFuZGxlX3Q7CnN0cnVjdCBfTENfb2JqZWN0X2hhbmRsZSB7CiAgICB1bmlv biB7CiBfTENfb2JqZWN0X3QgbGNfb2JqZWN0OwogX0xDX2xvY2FsZV9vYmpoZGxfdCBsY19sb2Nh bGU7CiAgICAgICAgX0xDX2NoYXJtYXBfb2JqaGRsX3QgbGNfY2hhcm1hcDsKICAgICAgICBfTENf Y29sbGF0ZV9vYmpoZGxfdCBsY19jb2xsYXRlOwogICAgICAgIF9MQ19jdHlwZV9vYmpoZGxfdCBs Y19jdHlwZTsKICAgICAgICBfTENfbW9uZXRhcnlfb2JqaGRsX3QgbGNfbW9uZXRhcnk7CiAgICAg ICAgX0xDX251bWVyaWNfb2JqaGRsX3QgbGNfbnVtZXJpYzsKICAgICAgICBfTENfcmVzcF9vYmpo ZGxfdCBsY19yZXNwOwogICAgICAgIF9MQ190aW1lX29iamhkbF90IGxjX3RpbWU7CiAgICB9IG9i ajsKCgogICAgdm9pZCAqKCoqbWV0aCkoKTsKCgpzdHJ1Y3QgX0xDX2xvY2FsZV9vYmpoZGwgKmxv Y19oZGw7CgoKfTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBfTENfb2JqZWN0X3QgaGRyOwogICAg X0xDX2xvY2FsZV9vYmpoZGxfdCBoYW5kbGU7Cn0gX0xDX2xvYWRfb2JqZWN0X3Q7CgoKCgoKCgpl eHRlcm4gX0xDX2NoYXJtYXBfb2JqaGRsX3QgX19sY19jaGFybWFwOwpleHRlcm4gX0xDX2NvbGxh dGVfb2JqaGRsX3QgX19sY19jb2xsYXRlOwpleHRlcm4gX0xDX2N0eXBlX29iamhkbF90IF9fbGNf Y3R5cGU7CmV4dGVybiBfTENfbW9uZXRhcnlfb2JqaGRsX3QgX19sY19tb25ldGFyeTsKZXh0ZXJu IF9MQ19udW1lcmljX29iamhkbF90IF9fbGNfbnVtZXJpYzsKZXh0ZXJuIF9MQ19yZXNwX29iamhk bF90IF9fbGNfcmVzcDsKZXh0ZXJuIF9MQ190aW1lX29iamhkbF90IF9fbGNfdGltZTsKZXh0ZXJu IF9MQ19sb2NhbGVfb2JqaGRsX3QgX19sY19sb2NhbGU7CiMgMTMyICIvZ2NjL2RqZS9idWlsZC9w b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2N0eXBlLmgiIDIgMyA0 CgoKCgoKCgogZXh0ZXJuIGludCBpc193Y3R5cGUod2ludF90LCB3Y3R5cGVfdCk7CiBleHRlcm4g d2N0eXBlX3QgZ2V0X3djdHlwZShjaGFyICopOwogZXh0ZXJuIGludCBpc2JsYW5rKGludCk7CiMg NTAgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jY3R5cGUiIDIgMwojIDY2ICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2N0eXBlIiAzCm5hbWVzcGFjZSBzdGQK ewogIHVzaW5nIDo6aXNhbG51bTsKICB1c2luZyA6OmlzYWxwaGE7CiAgdXNpbmcgOjppc2NudHJs OwogIHVzaW5nIDo6aXNkaWdpdDsKICB1c2luZyA6OmlzZ3JhcGg7CiAgdXNpbmcgOjppc2xvd2Vy OwogIHVzaW5nIDo6aXNwcmludDsKICB1c2luZyA6OmlzcHVuY3Q7CiAgdXNpbmcgOjppc3NwYWNl OwogIHVzaW5nIDo6aXN1cHBlcjsKICB1c2luZyA6OmlzeGRpZ2l0OwogIHVzaW5nIDo6dG9sb3dl cjsKICB1c2luZyA6OnRvdXBwZXI7Cn0KIyA0OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p bmNsdWRlL2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl L2JpdHMvc3RyaW5nZndkLmgiIDEgMwojIDQzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2lu Y2x1ZGUvYml0cy9zdHJpbmdmd2QuaCIgMwoKCgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfQWxsb2M+CiAgICBjbGFzcyBhbGxvY2F0b3I7CgogIHRlbXBsYXRlPGNsYXNzIF9D aGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBl bmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmc7 CgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+OwoKICB0eXBlZGVmIGJhc2lj X3N0cmluZzxjaGFyPiBzdHJpbmc7CgoKCgoKCn0KIyA0OSAiL2djYy9kamUvYnVpbGQvcG93ZXJw Yy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMr Ky12My9pbmNsdWRlL2lvc2Z3ZCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvZnBvcy5oIiAxIDMKIyA0MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvZnBvcy5oIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYysraW8uaCIgMSAzCiMgMzUgIi9nY2Mv ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMv YysraW8uaCIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8i IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGlvIiAzCgoK IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGRlZiIgMSAzCiMgNDcg Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkZGVmIiAzCgojIDEgIi9nY2Mv ZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3Rk ZGVmLmgiIDEgMyA0CiMgNDkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3Rk ZGVmIiAyIDMKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6cHRyZGlmZl90OwogIHVzaW5nIDo6 c2l6ZV90Owp9CiMgNTEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8i IDIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMTQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z dGRhcmcuaCIgMSAzIDQKIyA0MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3Zh X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyA2MSAiL2djYy9k amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRp by5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMTUwICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVj dCB7CiB1bnNpZ25lZCBjaGFyICpfcHRyOwogaW50IF9jbnQ7CiB1bnNpZ25lZCBjaGFyICpfYmFz ZTsKIHVuc2lnbmVkIGNoYXIgKl9idWZlbmRwOwogc2hvcnQgX2ZsYWc7CiBzaG9ydCBfZmlsZTsK IGludCBfX3N0ZGlvaWQ7CiBjaGFyICpfX25ld2Jhc2U7CgoKCiBsb25nIF91bnVzZWRbMV07CgoK Cgp9IEZJTEU7CgoKCgpleHRlcm4gRklMRSBfaW9iWzE2XTsKIyAxODUgIi9nY2MvZGplL2J1aWxk L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0 CmV4dGVybiBzaXplX3QgZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKZXh0 ZXJuIHNpemVfdCBmd3JpdGUoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCxGSUxFICopOwoj IDIzNCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2Mv aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBfX2Zsc2J1Zih1bnNpZ25lZCBjaGFyLCBG SUxFICopOwpleHRlcm4gaW50IF9fZmlsYnVmKEZJTEUgKik7CmV4dGVybiBpbnQgZmVycm9yKEZJ TEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gdm9pZCBjbGVhcmVycihGSUxF ICopOwpleHRlcm4gaW50IHB1dGNoYXIoaW50KTsKZXh0ZXJuIGludCBnZXRjaGFyKHZvaWQpOwpl eHRlcm4gaW50IHB1dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IGdldGMoRklMRSAqKTsKZXh0 ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCByZW5hbWUoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqdG1wZmlsZSh2b2lkKTsKZXh0ZXJuIGNo YXIgKnRtcG5hbShjaGFyICopOwpleHRlcm4gaW50IGZjbG9zZShGSUxFICopOwpleHRlcm4gaW50 IGZmbHVzaChGSUxFICopOwpleHRlcm4gRklMRSAqZm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICopOwpleHRlcm4gRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg RklMRSAqKTsKZXh0ZXJuIHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKZXh0ZXJuIGludCBz ZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBpbnQgZnByaW50ZihG SUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25z dCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0 ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgc3ByaW50ZihjaGFy ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc25wcmludGYoY2hhciAqLCBzaXpl X3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqLCAuLi4pOwojIDI3MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvdmFfbGlzdC5oIiAxIDMgNAojIDI3MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRpby5oIiAyIDMgNApleHRlcm4gaW50IHZm cHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQg dnByaW50Zihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIGludCB2c3ByaW50 ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoKZXh0ZXJuIGludCB2c25w cmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoKCgpl eHRlcm4gaW50IGZnZXRjKEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwg RklMRSAqKTsKZXh0ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMo Y29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gY2hhciAqZ2V0cyhjaGFyICopOwpleHRlcm4g aW50IHB1dHMoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB1bmdldGMoaW50LCBGSUxFICopOwpl eHRlcm4gaW50IGZnZXRwb3MoRklMRSAqLCBmcG9zX3QgKik7CmV4dGVybiBpbnQgZnNlZWsoRklM RSAqLCBsb25nIGludCwgaW50KTsKZXh0ZXJuIGludCBmc2V0cG9zKEZJTEUgKiwgY29uc3QgZnBv c190ICopOwpleHRlcm4gbG9uZyBmdGVsbChGSUxFICopOwpleHRlcm4gdm9pZCByZXdpbmQoRklM RSAqKTsKZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIGludCBn ZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsK ZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwdXRjaGFy X3VubG9ja2VkKGludCk7CiMgMzg4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu My4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZpbGVubyhG SUxFICopOwpleHRlcm4gRklMRSAqZmRvcGVuKGludCxjb25zdCBjaGFyICopOwpleHRlcm4gY2hh ciAqY3Rlcm1pZChjaGFyICopOwoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlKEZJTEUgKik7CmV4dGVy biB2b2lkIGZ1bmxvY2tmaWxlKEZJTEUgKik7CmV4dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2Zm X3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVsbG8oRklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9j a2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKIyA0MTAgIi9n Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv c3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3ZhX2xpc3QuaCIgMSAzIDQKIyA0MTEgIi9n Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv c3RkaW8uaCIgMiAzIDQKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0ZXJyOwpl eHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7CiMgNDI4ICIvZ2NjL2RqZS9idWls ZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGlvLmgiIDMg NApleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsK ZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKZXh0ZXJuIEZJ TEUgKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwY2xvc2Uo RklMRSAqKTsKZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICogY29uc3QgW10sIGNvbnN0IGNo YXIqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKIyA0NDggIi9nY2MvZGplL2J1aWxk L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0 CmV4dGVybiBpbnQgZmdldHBvczY0KEZJTEUgKiwgZnBvczY0X3QgKik7CmV4dGVybiBGSUxFICpm b3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42 NChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIGludCBmc2Vla282 NChGSUxFICosIG9mZjY0X3QsIGludCk7CmV4dGVybiBpbnQgZnNldHBvczY0KEZJTEUgKiwgY29u c3QgZnBvczY0X3QgKik7CmV4dGVybiBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKik7CiMgNDYzICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRl L3N0ZGlvLmgiIDMgNApleHRlcm4gdm9pZCBzZXRidWZmZXIoRklMRSAqLCBjaGFyICosIHNpemVf dCk7CmV4dGVybiB2b2lkIHNldGxpbmVidWYoRklMRSAqKTsKZXh0ZXJuIGludCB2c2NhbmYoY29u c3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQgdmZzY2FuZihGSUxFICosIGNv bnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZzc2NhbmYoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKIyA1MzQgIi9nY2MvZGplL2J1aWxk L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkaW8uaCIgMyA0 Cn0KIyA1MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRpbyIgMiAzCiMg OTcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkaW8iIDMKbmFtZXNwYWNl IHN0ZAp7CiAgdXNpbmcgOjpGSUxFOwogIHVzaW5nIDo6ZnBvc190OwoKICB1c2luZyA6OmNsZWFy ZXJyOwogIHVzaW5nIDo6ZmNsb3NlOwogIHVzaW5nIDo6ZmVvZjsKICB1c2luZyA6OmZlcnJvcjsK ICB1c2luZyA6OmZmbHVzaDsKICB1c2luZyA6OmZnZXRjOwogIHVzaW5nIDo6ZmdldHBvczsKICB1 c2luZyA6OmZnZXRzOwogIHVzaW5nIDo6Zm9wZW47CiAgdXNpbmcgOjpmcHJpbnRmOwogIHVzaW5n IDo6ZnB1dGM7CiAgdXNpbmcgOjpmcHV0czsKICB1c2luZyA6OmZyZWFkOwogIHVzaW5nIDo6ZnJl b3BlbjsKICB1c2luZyA6OmZzY2FuZjsKICB1c2luZyA6OmZzZWVrOwogIHVzaW5nIDo6ZnNldHBv czsKICB1c2luZyA6OmZ0ZWxsOwogIHVzaW5nIDo6ZndyaXRlOwogIHVzaW5nIDo6Z2V0YzsKICB1 c2luZyA6OmdldGNoYXI7CiAgdXNpbmcgOjpnZXRzOwogIHVzaW5nIDo6cGVycm9yOwogIHVzaW5n IDo6cHJpbnRmOwogIHVzaW5nIDo6cHV0YzsKICB1c2luZyA6OnB1dGNoYXI7CiAgdXNpbmcgOjpw dXRzOwogIHVzaW5nIDo6cmVtb3ZlOwogIHVzaW5nIDo6cmVuYW1lOwogIHVzaW5nIDo6cmV3aW5k OwogIHVzaW5nIDo6c2NhbmY7CiAgdXNpbmcgOjpzZXRidWY7CiAgdXNpbmcgOjpzZXR2YnVmOwog IHVzaW5nIDo6c3ByaW50ZjsKICB1c2luZyA6OnNzY2FuZjsKICB1c2luZyA6OnRtcGZpbGU7CiAg dXNpbmcgOjp0bXBuYW07CiAgdXNpbmcgOjp1bmdldGM7CiAgdXNpbmcgOjp2ZnByaW50ZjsKICB1 c2luZyA6OnZwcmludGY7CiAgdXNpbmcgOjp2c3ByaW50ZjsKfQojIDM2ICIvZ2NjL2RqZS9idWls ZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAv bGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2MrK2lvLmgi IDIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC9iaXRzL2d0aHIuaCIgMSAzCiMgOTYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKyst djMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvZ3Roci5oIiAzCiMgMSAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0 cy9ndGhyLWRlZmF1bHQuaCIgMSAzCiMgMzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5j bHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKIyAxICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9i aXRzL2d0aHItc2luZ2xlLmgiIDEgMwojIDM0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2lu Y2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItc2luZ2xlLmgiIDMKdHlwZWRl ZiBpbnQgX19ndGhyZWFkX211dGV4X3Q7CiMgMjExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWli bS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYz L2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItc2luZ2xlLmgiIDMKc3Rh dGljIGlubGluZSBpbnQKX19ndGhyZWFkX2FjdGl2ZV9wICh2b2lkKQp7CiAgcmV0dXJuIDA7Cn0K CnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2NrIChfX2d0aHJlYWRfbXV0ZXhf dCAqICkKewogIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfbXV0ZXhf dHJ5bG9jayAoX19ndGhyZWFkX211dGV4X3QgKiApCnsKICByZXR1cm4gMDsKfQoKc3RhdGljIGlu bGluZSBpbnQKX19ndGhyZWFkX211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3QgKiApCnsK ICByZXR1cm4gMDsKfQojIDM2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w LTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKIyA5NyAiL2djYy9k amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvYml0cy9n dGhyLmgiIDIgMwojIDM4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJw Yy1pYm0tYWl4NC4zLjMuMC9iaXRzL2MrK2lvLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHR5 cGVkZWYgbG9uZyBzdHJlYW1vZmY7CiAgdHlwZWRlZiBwdHJkaWZmX3Qgc3RyZWFtc2l6ZTsKCgoK ICB0eXBlZGVmIGZwb3NfdCBfX2Nfc3RyZWFtcG9zOwoKICB0eXBlZGVmIF9fZ3RocmVhZF9tdXRl eF90IF9fY19sb2NrOwoKCiAgdHlwZWRlZiBGSUxFIF9fY19maWxlOwoKCiAgc3RydWN0IF9faW9z X2ZsYWdzCiAgewogICAgdHlwZWRlZiBzaG9ydCBfX2ludF90eXBlOwoKICAgIHN0YXRpYyBjb25z dCBfX2ludF90eXBlIF9TX2Jvb2xhbHBoYSA9IDB4MDAwMTsKICAgIHN0YXRpYyBjb25zdCBfX2lu dF90eXBlIF9TX2RlYyA9IDB4MDAwMjsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2Zp eGVkID0gMHgwMDA0OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfaGV4ID0gMHgwMDA4 OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfaW50ZXJuYWwgPSAweDAwMTA7CiAgICBz dGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19sZWZ0ID0gMHgwMDIwOwogICAgc3RhdGljIGNvbnN0 IF9faW50X3R5cGUgX1Nfb2N0ID0gMHgwMDQwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg X1NfcmlnaHQgPSAweDAwODA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zY2llbnRp ZmljID0gMHgwMTAwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd2Jhc2UgPSAw eDAyMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zaG93cG9pbnQgPSAweDA0MDA7 CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zaG93cG9zID0gMHgwODAwOwogICAgc3Rh dGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2tpcHdzID0gMHgxMDAwOwogICAgc3RhdGljIGNvbnN0 IF9faW50X3R5cGUgX1NfdW5pdGJ1ZiA9IDB4MjAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90 eXBlIF9TX3VwcGVyY2FzZSA9IDB4NDAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T X2FkanVzdGZpZWxkID0gMHgwMDIwIHwgMHgwMDgwIHwgMHgwMDEwOwogICAgc3RhdGljIGNvbnN0 IF9faW50X3R5cGUgX1NfYmFzZWZpZWxkID0gMHgwMDAyIHwgMHgwMDQwIHwgMHgwMDA4OwogICAg c3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZmxvYXRmaWVsZCA9IDB4MDEwMCB8IDB4MDAwNDsK CgogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfYmFkYml0ID0gMHgwMTsKICAgIHN0YXRp YyBjb25zdCBfX2ludF90eXBlIF9TX2VvZmJpdCA9IDB4MDI7CiAgICBzdGF0aWMgY29uc3QgX19p bnRfdHlwZSBfU19mYWlsYml0ID0gMHgwNDsKCgogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg X1NfYXBwID0gMHgwMTsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2F0ZSA9IDB4MDI7 CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19iaW4gPSAweDA0OwogICAgc3RhdGljIGNv bnN0IF9faW50X3R5cGUgX1NfaW4gPSAweDA4OwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg X1Nfb3V0ID0gMHgxMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3RydW5jID0gMHgy MDsKICB9Owp9CiMgNDUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Zw b3MuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2N3Y2hhciIg MSAzCiMgNDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDMKCgoK IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3RpbWUiIDEgMwojIDQ4ICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3RpbWUiIDMKCgoKIyAxICIvdXNyL2lu Y2x1ZGUvdGltZS5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJu ICJDIiB7CiMgNzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApzdHJ1Y3QgdG0gewogaW50IHRt X3NlYzsKIGludCB0bV9taW47CiBpbnQgdG1faG91cjsKIGludCB0bV9tZGF5OwogaW50IHRtX21v bjsKIGludCB0bV95ZWFyOwogaW50IHRtX3dkYXk7CiBpbnQgdG1feWRheTsKIGludCB0bV9pc2Rz dDsKfTsKIyAxMTAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAogICAgZXh0ZXJuIHNpemVfdCBz dHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7 CiAgICBleHRlcm4gY2xvY2tfdCBjbG9jayh2b2lkKTsKICAgIGV4dGVybiBkb3VibGUgZGlmZnRp bWUodGltZV90LCB0aW1lX3QpOwogICAgZXh0ZXJuIHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICop OwogICAgZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsKICAgIGV4dGVybiBjaGFyICphc2N0 aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKICAgIGV4dGVybiBjaGFyICpjdGltZShjb25zdCB0aW1l X3QgKik7CiAgICBleHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90ICopOwogICAg ZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKIyAxMjggIi91c3Iv aW5jbHVkZS90aW1lLmgiIDMgNAogICAgZXh0ZXJuIGNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1 Y3QgdG0gKiwgY2hhciAqKTsKICAgIGV4dGVybiBjaGFyICpjdGltZV9yKGNvbnN0IHRpbWVfdCAq LCBjaGFyICopOwogICAgZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGltZV90ICos IHN0cnVjdCB0bSAqKTsKICAgIGV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNvbnN0IHRp bWVfdCAqLCBzdHJ1Y3QgdG0gKik7CiMgMTU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0 ZXJuIGNoYXIgKnR6bmFtZVtdOwoKCgoKICAgIGV4dGVybiB2b2lkIHR6c2V0KHZvaWQpOwoKCgoK CiAgICBleHRlcm4gbG9uZyB0aW1lem9uZTsKICAgIGV4dGVybiBpbnQgZGF5bGlnaHQ7CgoKCiAg ICBleHRlcm4gY2hhciAqc3RycHRpbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVj dCB0bSAqKTsKCgoKCiBleHRlcm4gaW50IGdldGRhdGVfZXJyOwoKCgogZXh0ZXJuIHN0cnVjdCB0 bSAqZ2V0ZGF0ZShjb25zdCBjaGFyICopOwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0 aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVj IHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRp bWVzcGVjIGl0X3ZhbHVlOwp9OwoKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMoY2xvY2tpZF90 LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZShjbG9ja2lkX3Qs IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lKGNsb2NraWRfdCwg Y29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1 Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKCgpleHRlcm4gaW50IHRpbWVyX2Ny ZWF0ZShjbG9ja2lkX3QsIHZvaWQgKiwgdGltZXJfdCAqKTsKCmV4dGVybiBpbnQgdGltZXJfZGVs ZXRlKHRpbWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCwgc3RydWN0IGl0 aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJu IGludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMg Kiwgc3RydWN0IGl0aW1lcnNwZWMgKik7CgoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIx OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyAyMjcgIi91c3IvaW5jbHVkZS90aW1lLmgi IDMgNAogZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKk5MY3RpbWUobG9uZyAqKTsKIGV4dGVybiB1bnNp Z25lZCBjaGFyICpOTGFzY3RpbWUoc3RydWN0IHRtICopOwogZXh0ZXJuIGNoYXIgKk5Mc3RydGlt ZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CgoKCgp9 CiMgNTIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jdGltZSIgMiAzCiMgNjQg Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jdGltZSIgMwpuYW1lc3BhY2Ugc3Rk CnsKICB1c2luZyA6OmNsb2NrX3Q7CiAgdXNpbmcgOjp0aW1lX3Q7CiAgdXNpbmcgOjp0bTsKCiAg dXNpbmcgOjpjbG9jazsKICB1c2luZyA6OmRpZmZ0aW1lOwogIHVzaW5nIDo6bWt0aW1lOwogIHVz aW5nIDo6dGltZTsKICB1c2luZyA6OmFzY3RpbWU7CiAgdXNpbmcgOjpjdGltZTsKICB1c2luZyA6 OmdtdGltZTsKICB1c2luZyA6OmxvY2FsdGltZTsKICB1c2luZyA6OnN0cmZ0aW1lOwp9CiMgNTIg Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDIgMwoKCiMgMSAiL3Vz ci9pbmNsdWRlL3djaGFyLmgiIDEgMyA0CiMgNDQgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQK ZXh0ZXJuICJDIiB7CiMgNjIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKdHlwZWRlZiBjaGFy ICogbWJzdGF0ZV90OwojIDEyNyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2lu dF90IGZnZXR3YyhGSUxFICopOwpleHRlcm4gd2NoYXJfdCAqZmdldHdzKHdjaGFyX3QgKiwgaW50 LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXR3cyhjb25zdCB3Y2hhcl90ICosIEZJTEUgKik7CmV4 dGVybiB3aW50X3QgZ2V0d2MoRklMRSAqKTsKZXh0ZXJuIHdpbnRfdCBnZXR3Y2hhcih2b2lkKTsK CgpleHRlcm4gaW50IGlzd2FsbnVtKHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3YWxwaGEod2ludF90 KTsKZXh0ZXJuIGludCBpc3djbnRybCh3aW50X3QpOwpleHRlcm4gaW50IGlzd2RpZ2l0KHdpbnRf dCk7CmV4dGVybiBpbnQgaXN3Z3JhcGgod2ludF90KTsKZXh0ZXJuIGludCBpc3dsb3dlcih3aW50 X3QpOwpleHRlcm4gaW50IGlzd3ByaW50KHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3cHVuY3Qod2lu dF90KTsKZXh0ZXJuIGludCBpc3dzcGFjZSh3aW50X3QpOwpleHRlcm4gaW50IGlzd3VwcGVyKHdp bnRfdCk7CmV4dGVybiBpbnQgaXN3eGRpZ2l0KHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3Y3R5cGUg KHdpbnRfdCwgd2N0eXBlX3QpOwpleHRlcm4gaW50IHRvd2xvd2VyKHdpbnRfdCk7CmV4dGVybiBp bnQgdG93dXBwZXIod2ludF90KTsKCgoKZXh0ZXJuIHdpbnRfdCBmcHV0d2Mod2NoYXJfdCwgRklM RSAqKTsKZXh0ZXJuIHdpbnRfdCBwdXR3Yyh3Y2hhcl90LCBGSUxFICopOwpleHRlcm4gd2ludF90 IHB1dHdjaGFyKHdjaGFyX3QpOwoKCgoKCgpleHRlcm4gd2ludF90IHVuZ2V0d2Mod2ludF90LCBG SUxFICopOwpleHRlcm4gd2N0eXBlX3Qgd2N0eXBlKGNvbnN0IGNoYXIqKTsKZXh0ZXJuIHdjaGFy X3QgKndjc2NhdCh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiB3Y2hhcl90ICp3 Y3NjaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90KTsKZXh0ZXJuIGludCB3Y3NjbXAoY29uc3Qg d2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdjc2NvbGwoY29uc3Qgd2No YXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gd2NoYXJfdCAqd2NzY3B5KHdjaGFyX3Qg KiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHNpemVfdCB3Y3Njc3BuKGNvbnN0IHdjaGFyX3Qg KiwgY29uc3Qgd2NoYXJfdCAqKTsKCnN0YXRpYyBzaXplX3Qgd2NzZnRpbWUod2NoYXJfdCAqX193 Y3NmdGltZV93Y3MsIHNpemVfdCBfX3djc2Z0aW1lX21heHNpemUsCiAgY29uc3Qgd2NoYXJfdCAq X193Y3NmdGltZV9mb3JtYXQsCiAgY29uc3Qgc3RydWN0IHRtICpfX3djc2Z0aW1lX3RpbXB0cikK ewogICAgZXh0ZXJuIHNpemVfdCBfX2lzb193Y3NmdGltZSh3Y2hhcl90ICosIHNpemVfdCwgY29u c3Qgd2NoYXJfdCAqLAogICAgIGNvbnN0IHN0cnVjdCB0bSAqKTsKICAgIHJldHVybiBfX2lzb193 Y3NmdGltZShfX3djc2Z0aW1lX3djcywgX193Y3NmdGltZV9tYXhzaXplLCBfX3djc2Z0aW1lX2Zv cm1hdCwKICAgICBfX3djc2Z0aW1lX3RpbXB0cik7Cn0KCgoKZXh0ZXJuIHNpemVfdCB3Y3NsZW4o Y29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndjc25jYXQod2NoYXJfdCAqLCBjb25z dCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiBpbnQgd2NzbmNtcChjb25zdCB3Y2hhcl90ICos IGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkod2NoYXJf dCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrKGNv bnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndjc3JjaHIo Y29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90KTsKZXh0ZXJuIHNpemVfdCB3Y3NzcG4oY29uc3Qgd2No YXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gZG91YmxlIHdjc3RvZChjb25zdCB3Y2hh cl90ICosIHdjaGFyX3QgKiopOwoKc3RhdGljIHdjaGFyX3QgKndjc3Rvayh3Y2hhcl90ICpfX3dj c3Rva193czEsIGNvbnN0IHdjaGFyX3QgKl9fd2NzdG9rX3dzMiwKICAgICAgICAgd2NoYXJfdCAq Kl9fd2NzdG9rX3B0cikKewogICAgZXh0ZXJuIHdjaGFyX3QgKl9faXNvX3djc3Rvayh3Y2hhcl90 ICosIGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKik7CiAgICByZXR1cm4gX19pc29fd2NzdG9r KF9fd2NzdG9rX3dzMSwgX193Y3N0b2tfd3MyLCBfX3djc3Rva19wdHIpOwp9CgoKCgoKCmV4dGVy biBsb25nIHdjc3RvbChjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QgKiosIGludCk7CmV4dGVybiB1 bnNpZ25lZCBsb25nIHdjc3RvdWwoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90ICoqLCBpbnQpOwpl eHRlcm4gd2NoYXJfdCAqd2Nzd2NzKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsK ZXh0ZXJuIGludCB3Y3N3aWR0aChjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CmV4dGVybiBzaXpl X3Qgd2NzeGZybSh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIGlu dCB3Y3dpZHRoKHdjaGFyX3QpOwoKCmV4dGVybiB3aW50X3QgYnRvd2MoaW50KTsKZXh0ZXJuIGlu dCBmd3ByaW50ZihGSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKZXh0ZXJuIGludCBmd3Nj YW5mKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IGZ3aWRlKEZJTEUg KiwgaW50KTsKZXh0ZXJuIGludCBtYnNpbml0KGNvbnN0IG1ic3RhdGVfdCAqKTsKZXh0ZXJuIHNp emVfdCBtYnJsZW4oY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIHNp emVfdCBtYnJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3RhdGVfdCAq KTsKZXh0ZXJuIHNpemVfdCBtYnNydG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICoqLCBzaXpl X3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIGludCBzd3ByaW50Zih3Y2hhcl90ICosIHNpemVfdCwg Y29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IHN3c2NhbmYoY29uc3Qgd2NoYXJfdCAq LCBjb25zdCB3Y2hhcl90ICosIC4uLik7CgpleHRlcm4gaW50IHZmd3ByaW50ZihGSUxFICosIGNv bnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CmV4dGVybiBpbnQgdndwcmludGYoY29uc3Qgd2NoYXJf dCAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCB2c3dwcmludGYod2NoYXJfdCAqLCBzaXplX3QsIGNv bnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CgoKCgoKCgpleHRlcm4gc2l6ZV90IHdjcnRvbWIoY2hh ciAqLCB3Y2hhcl90LCBtYnN0YXRlX3QgKik7CmV4dGVybiBzaXplX3Qgd2NzcnRvbWJzKGNoYXIg KiwgY29uc3Qgd2NoYXJfdCAqKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7CmV4dGVybiB3Y2hhcl90 ICp3Y3NzdHIoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdj dG9iKHdpbnRfdCk7CmV4dGVybiB3Y3R5cGVfdCB3Y3R5cGUoY29uc3QgY2hhciAqKTsKZXh0ZXJu IHdjaGFyX3QgKndtZW1jaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90LCBzaXplX3QpOwpleHRl cm4gaW50IHdtZW1jbXAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7 CmV4dGVybiB3Y2hhcl90ICp3bWVtY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl X3QpOwpleHRlcm4gd2NoYXJfdCAqd21lbW1vdmUod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICos IHNpemVfdCk7CmV4dGVybiB3Y2hhcl90ICp3bWVtc2V0KHdjaGFyX3QgKiwgd2NoYXJfdCwgc2l6 ZV90KTsKZXh0ZXJuIGludCB3cHJpbnRmKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKZXh0ZXJuIGlu dCB3c2NhbmYoY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwojIDI2OSAiL3Vzci9pbmNsdWRlL3djaGFy LmgiIDMgNApleHRlcm4gd2NoYXJfdCAqZ2V0d3Mod2NoYXJfdCAqKTsKZXh0ZXJuIGludCBwdXR3 cyhjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gaW50IHdzcHJpbnRmKHdjaGFyX3QgKiwgY29uc3Qg Y2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCB2d3NwcmludGYod2NoYXJfdCAqLCBjb25zdCBjaGFy ICosIHZhX2xpc3QpOwoKCgoKCmV4dGVybiBpbnQgd2NzY2FzZWNtcChjb25zdCB3Y2hhcl90ICos IGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiB3Y2hhcl90ICp3Y3NkdXAoY29uc3Qgd2NoYXJfdCAq KTsKZXh0ZXJuIGludCB3Y3NuY2FzZWNtcChjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3Qg Kiwgc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCB3Y3NubGVuKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90 KTsKZXh0ZXJuIHNpemVfdCB3Y3NucnRvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqKiwgc2l6 ZV90LCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHdjc3RvbGQoY29u c3Qgd2NoYXJfdCAqLCB3Y2hhcl90ICoqKTsKZXh0ZXJuIGZsb2F0IHdjc3RvZihjb25zdCB3Y2hh cl90ICosIHdjaGFyX3QgKiopOwpleHRlcm4gc2l6ZV90IG1ic25ydG93Y3Mod2NoYXJfdCAqLCBj b25zdCBjaGFyICoqLCBzaXplX3QsIHNpemVfdCwgbWJzdGF0ZV90ICopOwpleHRlcm4gd2NoYXJf dCAqd2NwY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndj cG5jcHkod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CgoKCmV4dGVybiB3Y2hh cl90ICpzdHJ0b3dzKHdjaGFyX3QgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKndzdHJ0b3MoY2hh ciAqLCB3Y2hhcl90ICopOwojIDMxNyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4g bG9uZyBsb25nIGludCB3Y3N0b2xsKAogICAgIGNvbnN0IHdjaGFyX3QgKiwKICAgICB3Y2hhcl90 ICoqLAogICAgIGludCApOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbCgK ICAgICBjb25zdCB3Y2hhcl90ICosCiAgICAgd2NoYXJfdCAqKiwKICAgICBpbnQgKTsKCgoKCgp9 CiMgNTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9jd2NoYXIiIDIgMwojIDY5 ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMt aWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3djaGFyIiAzCm5hbWVzcGFjZSBz dGQKewogIHVzaW5nIDo6bWJzdGF0ZV90Owp9CiMgNDYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMt aWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKyst djMvaW5jbHVkZS9iaXRzL2Zwb3MuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKCgoKCgoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgogICAgY2xhc3MgZnBvcwogICAgewogICAgcHVibGljOgoK ICAgICAgdHlwZWRlZiBfU3RhdGVUIF9fc3RhdGVfdHlwZTsKCiAgICBwcml2YXRlOgogICAgICBz dHJlYW1vZmYgX01fb2ZmOwogICAgICBfX3N0YXRlX3R5cGUgX01fc3Q7CgogICAgcHVibGljOgog ICAgICBfX3N0YXRlX3R5cGUKICAgICAgc3RhdGUoKSBjb25zdCB7IHJldHVybiBfTV9zdDsgfQoK ICAgICAgdm9pZAogICAgICBzdGF0ZShfX3N0YXRlX3R5cGUgX19zdCkgeyBfTV9zdCA9IF9fc3Q7 IH0KCgoKICAgICAgZnBvcygpOiBfTV9vZmYoc3RyZWFtb2ZmKCkpLCBfTV9zdChfX3N0YXRlX3R5 cGUoKSkgeyB9CgogICAgICBmcG9zKHN0cmVhbW9mZiBfX29mZiwgX19zdGF0ZV90eXBlIF9fc3Qg PSBfX3N0YXRlX3R5cGUoKSkKICAgICAgOiBfTV9vZmYoX19vZmYpLCBfTV9zdChfX3N0KSB7IH0K CiAgICAgIG9wZXJhdG9yIHN0cmVhbW9mZigpIGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoKICAg ICAgZnBvcyYKICAgICAgb3BlcmF0b3IrPShzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmICs9IF9f b2ZmOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIGZwb3MmCiAgICAgIG9wZXJhdG9yLT0oc3RyZWFt b2ZmIF9fb2ZmKSB7IF9NX29mZiAtPSBfX29mZjsgcmV0dXJuICp0aGlzOyB9CgogICAgICBmcG9z CiAgICAgIG9wZXJhdG9yKyhzdHJlYW1vZmYgX19vZmYpCiAgICAgIHsKIGZwb3MgX190KCp0aGlz KTsKIF9fdCArPSBfX29mZjsKIHJldHVybiBfX3Q7CiAgICAgIH0KCiAgICAgIGZwb3MKICAgICAg b3BlcmF0b3ItKHN0cmVhbW9mZiBfX29mZikKICAgICAgewogZnBvcyBfX3QoKnRoaXMpOwogX190 IC09IF9fb2ZmOwogcmV0dXJuIF9fdDsKICAgICAgfQoKICAgICAgYm9vbAogICAgICBvcGVyYXRv cj09KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdAogICAgICB7IHJldHVybiBfTV9vZmYgPT0gX19w b3MuX01fb2ZmOyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yIT0oY29uc3QgZnBvcyYgX19w b3MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX29mZiAhPSBfX3Bvcy5fTV9vZmY7IH0KCiAgICAg IHN0cmVhbW9mZgogICAgICBfTV9wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoK ICAgICAgdm9pZAogICAgICBfTV9wb3NpdGlvbihzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmID0g X19vZmY7IH0KICAgIH07CgoKICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiBzdHJlYW1wb3M7CgoK Cgp9CiMgNTAgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9pb3Nmd2QiIDIgMwoj IDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJw Yy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Z1bmN0ZXhjZXB0Lmgi IDEgMwojIDM0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9mdW5jdGV4 Y2VwdC5oIiAzCiMgMSAiL2djYy9kamUvc3JjL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0 aW9uX2RlZmluZXMuaCIgMSAzCiMgMzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk ZS9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQKICBfX3Ro cm93X2JhZF9leGNlcHRpb24odm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9p ZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9fdGhyb3df YmFkX3R5cGVpZCh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNo YXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKiBfX3Mp OwoKICB2b2lkCiAgX190aHJvd19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9fcyk7Cgog IHZvaWQKICBfX3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAg X190aHJvd19vdXRfb2ZfcmFuZ2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3df cnVudGltZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9l cnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19lcnJvcihj b25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3IoY29uc3Qg Y2hhciogX19zKTsKCgogIHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIF9f cyk7Cn0KIyA1MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy OC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2lvc2Z3ZCIgMiAz CgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U cmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvczsKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0No YXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mg YmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh aXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyZWFtOwoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxf Q2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgIHR5cGVu YW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0cmluZ2J1 ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90 cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4K ICAgIGNsYXNzIGJhc2ljX2lzdHJpbmdzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICB0eXBlbmFtZSBf QWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyaW5nc3RyZWFt OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3Ry YWl0czxfQ2hhclQ+LAogICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgog ICAgY2xhc3MgYmFzaWNfc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs IHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2lj X2ZpbGVidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9 IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaWZzdHJlYW07CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFy VD4gPgogICAgY2xhc3MgYmFzaWNfb2ZzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFz aWNfZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz ID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBpc3RyZWFtYnVmX2l0ZXJhdG9yOwoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0 czxfQ2hhclQ+ID4KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3I7CgoKCiAgY2xhc3MgaW9z X2Jhc2U7CiMgMTM2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvaW9zZndkIiAz CiAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhcj4gaW9zOwogIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVm PGNoYXI+IHN0cmVhbWJ1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsK ICB0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcj4gb3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX2lv c3RyZWFtPGNoYXI+IGlvc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0 cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcj4gaXN0cmluZ3N0cmVh bTsKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcj4gb3N0cmluZ3N0cmVhbTsKICB0 eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBi YXNpY19maWxlYnVmPGNoYXI+IGZpbGVidWY7CiAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbTxjaGFy PiBpZnN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtPGNoYXI+IG9mc3RyZWFtOwogIHR5 cGVkZWYgYmFzaWNfZnN0cmVhbTxjaGFyPiBmc3RyZWFtOwojIDE2NiAiL2djYy9kamUvYnVpbGQv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xp YnN0ZGMrKy12My9pbmNsdWRlL2lvc2Z3ZCIgMwp9CiMgNDUgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj KystdjMvaW5jbHVkZS9pb3MiIDIgMwojIDEgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGli c3VwYysrL2V4Y2VwdGlvbiIgMSAzCiMgNDAgIi9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGli c3VwYysrL2V4Y2VwdGlvbiIgMwpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CiMgNTIg Ii9nY2MvZGplL3NyYy9saWJzdGRjKystdjMvbGlic3VwYysrL2V4Y2VwdGlvbiIgMwogIGNsYXNz IGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBleGNlcHRpb24oKSB0aHJvdygpIHsgfQogICAg dmlydHVhbCB+ZXhjZXB0aW9uKCkgdGhyb3coKTsKCgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3 aGF0KCkgY29uc3QgdGhyb3coKTsKICB9OwoKCgogIGNsYXNzIGJhZF9leGNlcHRpb24gOiBwdWJs aWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9leGNlcHRpb24oKSB0aHJvdygpIHsg fQoKCiAgICB2aXJ0dWFsIH5iYWRfZXhjZXB0aW9uKCkgdGhyb3coKTsKICB9OwoKCiAgdHlwZWRl ZiB2b2lkICgqdGVybWluYXRlX2hhbmRsZXIpICgpOwoKICB0eXBlZGVmIHZvaWQgKCp1bmV4cGVj dGVkX2hhbmRsZXIpICgpOwoKCiAgdGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0ZSh0ZXJt aW5hdGVfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdGVybWluYXRlKCkgX19hdHRyaWJ1dGVf XyAoKF9fbm9yZXR1cm5fXykpOwoKCiAgdW5leHBlY3RlZF9oYW5kbGVyIHNldF91bmV4cGVjdGVk KHVuZXhwZWN0ZWRfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdW5leHBlY3RlZCgpIF9fYXR0 cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyAxMDAgIi9nY2MvZGplL3NyYy9saWJzdGRjKyst djMvbGlic3VwYysrL2V4Y2VwdGlvbiIgMwogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgdGhy b3coKTsKfQoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiMgMTE1ICIvZ2NjL2RqZS9zcmMvbGlic3Rk YysrLXYzL2xpYnN1cGMrKy9leGNlcHRpb24iIDMKICB2b2lkIF9fdmVyYm9zZV90ZXJtaW5hdGVf aGFuZGxlciAoKTsKfQoKfQojIDQ2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv aW9zIiAyIDMKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFy X3RyYWl0cy5oIiAxIDMKIyA0NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp dHMvY2hhcl90cmFpdHMuaCIgMwoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1 ZGUvY3N0cmluZyIgMSAzCiMgNDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9j c3RyaW5nIiAzCgoKCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y MDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMSAzIDQKIyA1NyAiL2djYy9kamUvYnVpbGQv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMyA0 CmV4dGVybiAiQyIgewojIDEwMCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiAgICAgICAgZXh0ZXJuIHZvaWQg Km1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKICAgICAgICBleHRlcm4gdm9pZCAq bWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB2b2lk ICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CiAgICAgICAgZXh0ZXJuIHNpemVfdCBzdHJj c3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gc2l6ZV90IHN0 cmxlbihjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqKTsKIyAxMzIgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFp eDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAogICAgICAgIGV4dGVy biB2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIGV4 dGVybiBjaGFyICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBj aGFyICpzdHJuY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgICAgIGV4dGVy biBjaGFyICpzdHJjYXQoY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFy ICpzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiBp bnQgbWVtY21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLHNpemVfdCk7CiAgICAgICAgZXh0 ZXJuIGludCBzdHJjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVy biBpbnQgc3RybmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqLHNpemVfdCk7CiAgICAgICAg ZXh0ZXJuIGludCBzdHJuY29sbGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgaW50ICk7CiAgICAgICAg ZXh0ZXJuIGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CiAgICAgICAgZXh0ZXJuIGNo YXIgKnN0cnBicmsoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBj aGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKICAgICAgICBleHRlcm4gY2hhciAqc3Ry c3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqc3Ry dG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICBleHRlcm4gY2hhciAqc3RyZXJyb3Io aW50KTsKICAgICAgICBleHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0IGNoYXIgKiwg c2l6ZV90KTsKIGV4dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hh ciAqKik7CiMgMTYzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L2djYy9pbmNsdWRlL3N0cmluZy5oIiAzIDQKICAgICAgICBleHRlcm4gdm9pZCAqbWVtY2Nw eSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDE3MiAiL2djYy9kamUvYnVp bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdHJpbmcuaCIg MyA0CmV4dGVybiBjaGFyICpzdHJkdXAoY29uc3QgY2hhciAqKTsKIyAyMTUgIi9nY2MvZGplL2J1 aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RyaW5nLmgi IDMgNAogICAgICAgIGV4dGVybiBjaGFyICppbmRleChjb25zdCBjaGFyICosIGludCk7CiAgICAg ICAgZXh0ZXJuIGNoYXIgKnJpbmRleChjb25zdCBjaGFyICosIGludCk7CiAgICAgICAgZXh0ZXJu IHZvaWQgc3dhYihjb25zdCB2b2lkICosIHZvaWQgKiwgc3NpemVfdCk7CiAgICAgICAgZXh0ZXJu IHdjaGFyX3QgKndjc2NhdCh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKik7CiAgICAgICAgZXh0 ZXJuIHdjaGFyX3QgKndjc2Nocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwogICAgICAgIGV4 dGVybiBpbnQgd2NzY21wKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAg ICBleHRlcm4gd2NoYXJfdCAqd2NzY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAg ICAgICBleHRlcm4gc2l6ZV90IHdjc2NzcG4oY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90 ICopOwogICAgICAgIGV4dGVybiBzaXplX3Qgd2NzbGVuKGNvbnN0IHdjaGFyX3QgKik7CiAgICAg ICAgZXh0ZXJuIHdjaGFyX3QgKndjc25jYXQod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNp emVfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3Y3NuY21wKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qg d2NoYXJfdCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3Y3NuY3B5KHdjaGFy X3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwogICAgICAgIGV4dGVybiB3Y2hhcl90ICp3 Y3NwYnJrKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4g d2NoYXJfdCAqd2NzcmNocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwogICAgICAgIGV4dGVy biBzaXplX3Qgd2Nzc3BuKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAg ICBleHRlcm4gd2NoYXJfdCAqd2Nzd2NzKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAq KTsKICAgICAgICBleHRlcm4gaW50IHdjc3dpZHRoKGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsK ICAgICAgICBleHRlcm4gaW50IHdjd2lkdGgod2NoYXJfdCk7CiAgICAgICAgZXh0ZXJuIGludCB3 Y3Njb2xsKGNvbnN0IHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqKTsKICAgICAgICBleHRlcm4g c2l6ZV90IHdjc3hmcm0od2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CiMgMjk2 ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNs dWRlL3N0cmluZy5oIiAzIDQKfQojIDUyICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1 ZGUvY3N0cmluZyIgMiAzCiMgNzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4z LjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9j c3RyaW5nIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6bWVtY3B5OwogIHVzaW5nIDo6bWVt bW92ZTsKICB1c2luZyA6OnN0cmNweTsKICB1c2luZyA6OnN0cm5jcHk7CiAgdXNpbmcgOjpzdHJj YXQ7CiAgdXNpbmcgOjpzdHJuY2F0OwogIHVzaW5nIDo6bWVtY21wOwogIHVzaW5nIDo6c3RyY21w OwogIHVzaW5nIDo6c3RyY29sbDsKICB1c2luZyA6OnN0cm5jbXA7CiAgdXNpbmcgOjpzdHJ4ZnJt OwogIHVzaW5nIDo6c3RyY3NwbjsKICB1c2luZyA6OnN0cnNwbjsKICB1c2luZyA6OnN0cnRvazsK ICB1c2luZyA6Om1lbXNldDsKICB1c2luZyA6OnN0cmVycm9yOwogIHVzaW5nIDo6c3RybGVuOwoK ICB1c2luZyA6Om1lbWNocjsKCiAgaW5saW5lIHZvaWQqCiAgbWVtY2hyKHZvaWQqIF9fcCwgaW50 IF9fYywgc2l6ZV90IF9fbikKICB7IHJldHVybiBtZW1jaHIoY29uc3RfY2FzdDxjb25zdCB2b2lk Kj4oX19wKSwgX19jLCBfX24pOyB9CgogIHVzaW5nIDo6c3RyY2hyOwoKICBpbmxpbmUgY2hhcioK ICBzdHJjaHIoY2hhciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RyY2hy KGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBfX24pOyB9CgogIHVzaW5nIDo6c3RycGJy azsKCiAgaW5saW5lIGNoYXIqCiAgc3RycGJyayhjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3My KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zdHJwYnJrKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9f czEpLCBfX3MyKTsgfQoKICB1c2luZyA6OnN0cnJjaHI7CgogIGlubGluZSBjaGFyKgogIHN0cnJj aHIoY2hhciogX19zMSwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5fc3RycmNocihjb25z dF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19uKTsgfQoKICB1c2luZyA6OnN0cnN0cjsKCiAg aW5saW5lIGNoYXIqCiAgc3Ryc3RyKGNoYXIqIF9fczEsIGNvbnN0IGNoYXIqIF9fczIpCiAgeyBy ZXR1cm4gX19idWlsdGluX3N0cnN0cihjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19z Mik7IH0KfQojIDQ2ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFy X3RyYWl0cy5oIiAyIDMKCgpuYW1lc3BhY2Ugc3RkCnsKIyA2MSAiL2djYy9kamUvYnVpbGQvcG93 ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPGNsYXNzIF9D aGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0cwogICAgewogICAgICB0eXBlZGVmIF9DaGFyVCBj aGFyX3R5cGU7CgogICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50X3R5cGU7CiAgICAgIHR5 cGVkZWYgc3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbW9mZiBvZmZfdHlw ZTsKICAgICAgdHlwZWRlZiBtYnN0YXRlX3Qgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRpYyB2b2lk CiAgICAgIGFzc2lnbihjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMik7Cgog ICAgICBzdGF0aWMgYm9vbAogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNo YXJfdHlwZSYgX19jMik7CgogICAgICBzdGF0aWMgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5 cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMik7CgogICAgICBzdGF0aWMgaW50CiAgICAg IGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNp emVfdCBfX24pOwoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3QgY2hhcl90 eXBlKiBfX3MpOwoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25z dCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpOwoKICAg ICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNo YXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAg ICBjb3B5KGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19u KTsKCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywg c2l6ZV90IF9fbiwgY2hhcl90eXBlIF9fYSk7CgogICAgICBzdGF0aWMgY2hhcl90eXBlCiAgICAg IHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKTsKCiAgICAgIHN0YXRpYyBpbnRfdHlw ZQogICAgICB0b19pbnRfdHlwZShjb25zdCBjaGFyX3R5cGUmIF9fYyk7CgogICAgICBzdGF0aWMg Ym9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5 cGUmIF9fYzIpOwoKICAgICAgc3RhdGljIGludF90eXBlCiAgICAgIGVvZigpOwoKICAgICAgc3Rh dGljIGludF90eXBlCiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIF9fYyk7CiAgICB9OwoK CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPgogICAgewogICAgICB0 eXBlZGVmIGNoYXIgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIGludCBpbnRfdHlwZTsKICAgICAg dHlwZWRlZiBzdHJlYW1wb3MgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90 eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZv aWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQog ICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBlcShjb25zdCBj aGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19j MSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5cGUm IF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA8IF9fYzI7 IH0KCiAgICAgIHN0YXRpYyBpbnQKICAgICAgY29tcGFyZShjb25zdCBjaGFyX3R5cGUqIF9fczEs IGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gbWVtY21w KF9fczEsIF9fczIsIF9fbik7IH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3RoKGNv bnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7IHJldHVybiBzdHJsZW4oX19zKTsgfQoKICAgICAg c3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywg c2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j YXN0PGNvbnN0IGNoYXJfdHlwZSo+KG1lbWNocihfX3MsIF9fYSwgX19uKSk7IH0KCiAgICAgIHN0 YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5 cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlw ZSo+KG1lbW1vdmUoX19zMSwgX19zMiwgX19uKSk7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUq CiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVf dCBfX24pCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KG1lbWNweShfX3Mx LCBfX3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNo YXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7IHJldHVybiBz dGF0aWNfY2FzdDxjaGFyX3R5cGUqPihtZW1zZXQoX19zLCBfX2EsIF9fbikpOyB9CgogICAgICBz dGF0aWMgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKQog ICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KF9fYyk7IH0KCgoKICAgICAgc3Rh dGljIGludF90eXBlCiAgICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKQogICAg ICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh cj4oX19jKSk7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxX2ludF90eXBlKGNvbnN0IGlu dF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9 PSBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgZW9mKCkgeyByZXR1cm4gc3Rh dGljX2Nhc3Q8aW50X3R5cGU+KCgtMSkpOyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAg bm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiAoX19jID09IGVvZigp KSA/IDAgOiBfX2M7IH0KICB9OwojIDI1MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNs dWRlL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cz4KICAgIHN0cnVjdCBfQ2hhcl90cmFpdHNfbWF0Y2gKICAgIHsKICAgICAg X0NoYXJUIF9NX2M7CiAgICAgIF9DaGFyX3RyYWl0c19tYXRjaChfQ2hhclQgY29uc3QmIF9fYykg OiBfTV9jKF9fYykgeyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoX0NoYXJUIGNvbnN0 JiBfX2EpIHsgcmV0dXJuIF9UcmFpdHM6OmVxKF9NX2MsIF9fYSk7IH0KICAgIH07Cn0KIyA0NyAi L2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWli bS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2lvcyIgMiAzCgojIDEgIi9nY2MvZGpl L2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2xvY2FsZWZ3ZC5oIiAxIDMKIyA0NCAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlZndkLmgiIDMKCgoKCiMg MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBj LWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvZnVuY3RleGNlcHQuaCIg MSAzCiMgMzYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Z1bmN0ZXhj ZXB0LmgiIDMKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQKICBfX3Rocm93X2JhZF9leGNlcHRpb24o dm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9pZCk7CgoKICB2b2lkCiAgX190 aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9fdGhyb3dfYmFkX3R5cGVpZCh2b2lkKTsK CgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQK ICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJv d19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2xl bmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdXRfb2ZfcmFu Z2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfcnVudGltZV9lcnJvcihjb25z dCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9lcnJvcihjb25zdCBjaGFyKiBf X3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoK ICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCgogIHZv aWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIF9fcyk7Cn0KIyA0OSAiL2djYy9k amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlZndkLmgiIDIgMwoKbmFtZXNw YWNlIHN0ZAp7CgogIGNsYXNzIGxvY2FsZTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K ICAgIGlubGluZSBib29sCiAgICBpc3NwYWNlKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3ByaW50KF9DaGFy VCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGlu ZSBib29sCiAgICBpc2NudHJsKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3VwcGVyKF9DaGFyVCwgY29uc3Qg bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAg ICBpc2xvd2VyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2FscGhhKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2RpZ2l0 KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg IGlubGluZSBib29sCiAgICBpc3B1bmN0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3hkaWdpdChfQ2hhclQs IGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUg Ym9vbAogICAgaXNhbG51bShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNncmFwaChfQ2hhclQsIGNvbnN0IGxv Y2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgX0NoYXJUCiAg ICB0b3VwcGVyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVD4KICAgIGlubGluZSBfQ2hhclQKICAgIHRvbG93ZXIoX0NoYXJULCBjb25zdCBsb2NhbGUm KTsKCgogIGNsYXNzIGN0eXBlX2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg Y2xhc3MgY3R5cGU7CiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlwZTxjaGFyPjsKCgoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjdHlwZV9ieW5hbWU7CgoKICBjbGFzcyBjb2Rl Y3Z0X2Jhc2U7CiAgY2xhc3MgX19lbmNfdHJhaXRzOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRl cm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0YXRlVD4KICAgIGNsYXNzIGNvZGVj dnQ7CiAgdGVtcGxhdGU8PiBjbGFzcyBjb2RlY3Z0PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD47CgoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFt ZSBfU3RhdGVUPgogICAgY2xhc3MgY29kZWN2dF9ieW5hbWU7CgoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4g PgogICAgY2xhc3MgbnVtX2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l IF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG51bV9w dXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPiBjbGFzcyBudW1wdW5jdDsKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQ+IGNsYXNzIG51bXB1bmN0X2J5bmFtZTsKCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGNvbGxhdGU7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJUPiBjbGFzcwogICAgY29sbGF0ZV9ieW5hbWU7CgoKICBjbGFzcyB0aW1lX2Jhc2U7CiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVy YXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRpbWVfZ2V0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX0luSXRlciA9IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAg ICBjbGFzcyB0aW1lX2dldF9ieW5hbWU7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl bmFtZSBfT3V0SXRlciA9IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyB0 aW1lX3B1dDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0g b3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRpbWVfcHV0X2J5bmFtZTsK CgogIGNsYXNzIG1vbmV5X2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5 X2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0 cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X3B1dDsKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIGJvb2wgX0ludGwgPSBmYWxzZT4KICAgIGNsYXNzIG1vbmV5cHVu Y3Q7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBj bGFzcyBtb25leXB1bmN0X2J5bmFtZTsKCgogIGNsYXNzIG1lc3NhZ2VzX2Jhc2U7CiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXM7CiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXNfYnluYW1lOwoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfRmFjZXQ+CiAgICBjb25zdCBfRmFjZXQmCiAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJiBf X2xvYyk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGJvb2wKICAgIGhhc19mYWNl dChjb25zdCBsb2NhbGUmIF9fbG9jKSB0aHJvdygpOwp9CiMgNDkgIi9nY2MvZGplL2J1aWxkL3Bv d2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJz dGRjKystdjMvaW5jbHVkZS9pb3MiIDIgMwojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMv aW5jbHVkZS9iaXRzL2lvc19iYXNlLmgiIDEgMwojIDQ0ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysr LXYzL2luY2x1ZGUvYml0cy9pb3NfYmFzZS5oIiAzCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj KystdjMvaW5jbHVkZS9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2JpdHMvYXRvbWljaXR5LmgiIDEg MwojIDQxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bv d2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC9iaXRzL2F0b21pY2l0eS5oIiAzCnR5cGVkZWYgaW50IF9BdG9taWNfd29yZDsKCiMg MSAiL3Vzci9pbmNsdWRlL3N5cy9hdG9taWNfb3AuaCIgMSAzIDQKIyA0MCAiL3Vzci9pbmNsdWRl L3N5cy9hdG9taWNfb3AuaCIgMyA0CnR5cGVkZWYgaW50ICphdG9taWNfcDsKdHlwZWRlZiB1c2hv cnQgKmF0b21pY19oOwp0eXBlZGVmIGxvbmcgKmF0b21pY19sOwojIDcwICIvdXNyL2luY2x1ZGUv c3lzL2F0b21pY19vcC5oIiAzIDQKaW50IGZldGNoX2FuZF9hZGQoYXRvbWljX3AsaW50KTsKdWlu dCBmZXRjaF9hbmRfYW5kKGF0b21pY19wLHVpbnQpOwp1aW50IGZldGNoX2FuZF9vcihhdG9taWNf cCx1aW50KTsKYm9vbGVhbl90IGNvbXBhcmVfYW5kX3N3YXAoYXRvbWljX3AsaW50ICosaW50KTsK bG9uZyBmZXRjaF9hbmRfYWRkbHAoYXRvbWljX2wsbG9uZyk7CnVsb25nIGZldGNoX2FuZF9hbmRs cChhdG9taWNfbCx1bG9uZyk7CnVsb25nIGZldGNoX2FuZF9vcmxwKGF0b21pY19sLHVsb25nKTsK Ym9vbGVhbl90IGNvbXBhcmVfYW5kX3N3YXBscChhdG9taWNfbCwgbG9uZyAqLCBsb25nKTsKdXNo b3J0IGZldGNoX2FuZF9hZGRfaChhdG9taWNfaCxpbnQpOwojIDEwMiAiL3Vzci9pbmNsdWRlL3N5 cy9hdG9taWNfb3AuaCIgMyA0CmJvb2xlYW5fdCBfY2hlY2tfbG9jayhhdG9taWNfcCwgaW50LCBp bnQpOwp2b2lkIF9jbGVhcl9sb2NrKGF0b21pY19wLCBpbnQpOwppbnQgX3NhZmVfZmV0Y2goYXRv bWljX3ApOwoKCgoKCgojcHJhZ21hIG1jX2Z1bmMgX2NsZWFyX2xvY2sgeyAiNDgwMDM0MDMiIH0K CgojcHJhZ21hIG1jX2Z1bmMgX2NoZWNrX2xvY2sgeyAiNDgwMDM0MjMiIH0KCgojcHJhZ21hIG1j X2Z1bmMgX3NhZmVfZmV0Y2ggeyAiODA2MzAwMDAiICI1NDYzMDAzRiIgIjQxODIwMDA0IiB9CgoK CgojcHJhZ21hIHJlZ19raWxsZWRfYnkgX3NhZmVfZmV0Y2ggY3IwLGdyMwojIDQ0ICIvZ2NjL2Rq ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9iaXRzL2F0 b21pY2l0eS5oIiAyIDMKCnN0YXRpYyBpbmxpbmUgaW50Cl9fYXR0cmlidXRlX18gKCh1bnVzZWQp KQpfX2V4Y2hhbmdlX2FuZF9hZGQgKGF0b21pY19wIF9fbWVtLCBpbnQgX192YWwpCnsKICByZXR1 cm4gZmV0Y2hfYW5kX2FkZCAoX19tZW0sIF9fdmFsKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCl9f YXR0cmlidXRlX18gKCh1bnVzZWQpKQpfX2F0b21pY19hZGQgKGF0b21pY19wIF9fbWVtLCBpbnQg X192YWwpCnsKICAodm9pZCkgZmV0Y2hfYW5kX2FkZCAoX19tZW0sIF9fdmFsKTsKfQojIDQ2ICIv Z2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9pb3NfYmFzZS5oIiAyIDMKCiMg MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBj LWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvbG9jYWxlX2NsYXNzZXMu aCIgMSAzCiMgNDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0 MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2xvY2Fs ZV9jbGFzc2VzLmgiIDMKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMu My4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUv c3RyaW5nIiAxIDMKIyA0NCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0cmlu ZyIgMwoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvbWVtb3J5IiAx IDMKIyA1MyAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL21lbW9yeSIgMwoKIyAx ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMt aWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfYWxnb2Jhc2UuaCIg MSAzCiMgNjYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0Mjgv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF9hbGdv YmFzZS5oIiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz MDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NsaW1pdHMi IDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY2xpbWl0cyIgMwoK IyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p bmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKIyAxICIvZ2NjL2Rq ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5c2xp bWl0cy5oIiAxIDMgNAoKCgoKCgojIDEgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu My4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIyICIvZ2NjL2Rq ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL2xpbWl0 cy5oIiAzIDQKIyAxICIvZ2NjL2RqZS9pbnN0YWxsL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAw MzA0MjgvbGliL2djYy1saWIvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC8zLjQvaW5jbHVkZS9saW1p dHMuaCIgMSAzIDQKIyAxMjIgIi9nY2MvZGplL2luc3RhbGwvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC0yMDAzMDQyOC9saWIvZ2NjLWxpYi9wb3dlcnBjLWlibS1haXg0LjMuMy4wLzMuNC9pbmNsdWRl L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIzICIv Z2NjL2RqZS9pbnN0YWxsL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvbGliL2djYy1s aWIvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC8zLjQvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKIyAx MjMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2lu Y2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4 NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzIDQKIyAxMiAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9s aW1pdHMuaCIgMiAzIDQKIyA1MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMu MC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Ns aW1pdHMiIDIgMwojIDY3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9z dGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRl L2NzdGRsaWIiIDEgMwojIDQ4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w LTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0 ZGxpYiIgMwoKCgoKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMgNAojIDU0ICIvZ2NjL2RqZS9idWlsZC9w b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK ZXh0ZXJuICJDIiB7CiMgOTUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBkaXZfdCB7 CiBpbnQgcXVvdDsKIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCBsZGl2X3Qgewog bG9uZyBpbnQgcXVvdDsKIGxvbmcgaW50IHJlbTsKfSBsZGl2X3Q7CgoKCgoKCmV4dGVybiBzaXpl X3QgX19nZXRtYmN1cm1heCAodm9pZCk7CmV4dGVybiBpbnQgX19nZXRtYXhkaXNwd2lkdGggKHZv aWQpOwojIDEyNiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy OC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4gaW50IG1ibGVuKGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKIGV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFy ICosIHNpemVfdCk7CiBleHRlcm4gaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwg c2l6ZV90KTsKIGV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICos IHNpemVfdCk7CiBleHRlcm4gaW50IHdjdG9tYihjaGFyICosIGNvbnN0IHdjaGFyX3QpOwojIDE4 MiAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5j bHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4gZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKIGV4 dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwogZXh0ZXJuIGxvbmcgaW50IGF0b2woY29uc3Qg Y2hhciAqKTsKIGV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqICopOwog ZXh0ZXJuIGxvbmcgaW50IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiAqLCBpbnQpOwogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICogKiwgaW50 KTsKIGV4dGVybiBpbnQgcmFuZCh2b2lkKTsKIGV4dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGlu dCk7CiBleHRlcm4gdm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKIGV4dGVybiB2b2lkIGZy ZWUodm9pZCAqKTsKIGV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90KTsKIGV4dGVybiB2b2lkICpy ZWFsbG9jKHZvaWQgKiwgc2l6ZV90KTsKIGV4dGVybiB2b2lkIGFib3J0KHZvaWQpOwogZXh0ZXJu IGludCBhdGV4aXQodm9pZCAoKikodm9pZCkpOwogZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwogZXh0 ZXJuIGNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwogZXh0ZXJuIGludCBzeXN0ZW0oY29uc3Qg Y2hhciAqKTsKIGV4dGVybiB2b2lkICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq LCBzaXplX3QsIHNpemVfdCwgaW50KCopKGNvbnN0IHZvaWQgKixjb25zdCB2b2lkICopKTsKIGV4 dGVybiB2b2lkIHFzb3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCgqKShjb25zdCB2b2lk ICosY29uc3Qgdm9pZCAqKSk7CiMgMjExICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4dGVybiBpbnQgYWJz KGludCk7CiBleHRlcm4gc3RydWN0IGRpdl90IGRpdihpbnQsIGludCk7CiBleHRlcm4gbG9uZyBp bnQgbGFicyhsb25nIGludCk7CiBleHRlcm4gc3RydWN0IGxkaXZfdCBsZGl2KGxvbmcgaW50LCBs b25nIGludCk7CiMgMjM1ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvZ2NjL2RqZS9idWlsZC9wb3dl cnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMyA0 CiMgNTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2Nj L2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKIyAxICIvdXNyL2luY2x1 ZGUvc3lzL3Jlc291cmNlLmgiIDEgMyA0CiMgNTQgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2Uu aCIgMyA0CmV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMyA0 CiMgNTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgOTAgIi91 c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0IHRpbWV2YWwgewogdGltZV90IHR2X3Nl YzsKCiBzdXNlY29uZHNfdCB0dl91c2VjOwoKCgp9OwoKCgoKc3RydWN0IHRpbWV2YWwzMiB7CiAg ICBpbnQzMl90IHR2X3NlYzsKICAgIGludDMyX3QgdHZfdXNlYzsKfTsKCgoKCgoKc3RydWN0IHRp bWV2YWw2NCB7CiAgICBpbnQ2NF90IHR2X3NlYzsKICAgIGludDY0X3QgdHZfdXNlYzsKfTsKCgoK CgoKc3RydWN0IGl0aW1lcnZhbCB7CiBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKIHN0cnVj dCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoKCgoKCgoKZXh0ZXJuIGludCBnZXRpdGltZXIoaW50LCBz dHJ1Y3QgaXRpbWVydmFsICopOwpleHRlcm4gaW50IHNldGl0aW1lcihpbnQsIGNvbnN0IHN0cnVj dCBpdGltZXJ2YWwgKiwgc3RydWN0IGl0aW1lcnZhbCAqKTsKZXh0ZXJuIGludCBnZXR0aW1lb2Zk YXkoc3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKZXh0ZXJuIGludCB1dGltZXMoY29uc3QgY2hh ciAqLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxNTQgIi91c3IvaW5jbHVkZS9zeXMvdGlt ZS5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKCmZkX3NldAoKewogICAgICAgIGxvbmcgZmRzX2JpdHNb KDMyNzY3LyhzaXplb2YobG9uZykgKiA4KSsxKV07Cn0gZmRfc2V0OwojIDE2OSAiL3Vzci9pbmNs dWRlL3N5cy90aW1lLmgiIDMgNApleHRlcm4gaW50IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9z ZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwojIDI3MiAiL3Vzci9pbmNsdWRlL3N5 cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXN0cnVjX3QgewogICAgICAgIHRpbWVfdCB0dl9zZWM7 CiAgICAgICAgc3VzZWNvbmRzX3QgdHZfbnNlYzsKfTsKCgoKCgpzdHJ1Y3QgdGltZXN0cnVjMzJf dCB7CiAgICBpbnQzMl90IHR2X3NlYzsKICAgIGludDMyX3QgdHZfbnNlYzsKfTsKIyAyOTUgIi91 c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0IGl0aW1lcnN0cnVjX3QgewogICAgICAg IHN0cnVjdCB0aW1lc3RydWNfdCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXN0cnVj X3QgaXRfdmFsdWU7Cn07CgoKCgoKc3RydWN0IGl0aW1lcnN0cnVjMzJfdCB7CiAgICBzdHJ1Y3Qg dGltZXN0cnVjMzJfdCBpdF9pbnRlcnZhbDsKICAgIHN0cnVjdCB0aW1lc3RydWMzMl90IGl0X3Zh bHVlOwp9OwojIDMxOCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAp0eXBlZGVmIHN0cnVj dCB0aW1lYmFzZXN0cnVjdCB7CiBpbnQgZmxhZzsKIHVuc2lnbmVkIGludCB0Yl9oaWdoOwogdW5z aWduZWQgaW50IHRiX2xvdzsKIH0gdGltZWJhc2VzdHJ1Y3RfdDsKCmludCByZWFkX3JlYWxfdGlt ZSh0aW1lYmFzZXN0cnVjdF90ICosIHNpemVfdCk7CmludCB0aW1lX2Jhc2VfdG9fdGltZSh0aW1l YmFzZXN0cnVjdF90ICosIHNpemVfdCk7CiMgNDUwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg MyA0CnN0cnVjdCB0aW1lem9uZSB7CiBpbnQgdHpfbWludXRlc3dlc3Q7CiBpbnQgdHpfZHN0dGlt ZTsKfTsKIyA0ODIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKfQojIDU4ICIvdXNyL2lu Y2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMyA0CiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291 cmNlLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcmxpbV90OwpzdHJ1Y3QgcmxpbWl0IHsK IHJsaW1fdCBybGltX2N1cjsKIHJsaW1fdCBybGltX21heDsKfTsKCgoKCgp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyBybGltNjRfdDsKc3RydWN0IHJsaW1pdDY0IHsKIHJsaW02NF90IHJsaW1f Y3VyOwogcmxpbTY0X3QgcmxpbV9tYXg7Cn07CiMgMTU0ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291 cmNlLmgiIDMgNApzdHJ1Y3QgcnVzYWdlCnsKIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogc3Ry dWN0IHRpbWV2YWwgcnVfc3RpbWU7CiBsb25nIHJ1X21heHJzczsKIGxvbmcgcnVfaXhyc3M7CiBs b25nIHJ1X2lkcnNzOwogbG9uZyBydV9pc3JzczsKIGxvbmcgcnVfbWluZmx0OwogbG9uZyBydV9t YWpmbHQ7CiBsb25nIHJ1X25zd2FwOwogbG9uZyBydV9pbmJsb2NrOwogbG9uZyBydV9vdWJsb2Nr OwogbG9uZyBydV9tc2dzbmQ7CiBsb25nIHJ1X21zZ3JjdjsKIGxvbmcgcnVfbnNpZ25hbHM7CiBs b25nIHJ1X252Y3N3OwogbG9uZyBydV9uaXZjc3c7Cn07CgoKCgoKc3RydWN0IHJ1c2FnZTY0CnsK IHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CiBsb25n IGxvbmcgcnVfbWF4cnNzOwogbG9uZyBsb25nIHJ1X2l4cnNzOwogbG9uZyBsb25nIHJ1X2lkcnNz OwogbG9uZyBsb25nIHJ1X2lzcnNzOwogbG9uZyBsb25nIHJ1X21pbmZsdDsKIGxvbmcgbG9uZyBy dV9tYWpmbHQ7CiBsb25nIGxvbmcgcnVfbnN3YXA7CiBsb25nIGxvbmcgcnVfaW5ibG9jazsKIGxv bmcgbG9uZyBydV9vdWJsb2NrOwogbG9uZyBsb25nIHJ1X21zZ3NuZDsKIGxvbmcgbG9uZyBydV9t c2dyY3Y7CiBsb25nIGxvbmcgcnVfbnNpZ25hbHM7CiBsb25nIGxvbmcgcnVfbnZjc3c7CiBsb25n IGxvbmcgcnVfbml2Y3N3Owp9OwoKCgoKCnN0cnVjdCB0cnVzYWdlNjQKewogc3RydWN0IHRpbWV2 YWw2NCBydV91dGltZTsKIHN0cnVjdCB0aW1ldmFsNjQgcnVfc3RpbWU7CiBsb25nbG9uZ190IHJ1 X21heHJzczsKIGxvbmdsb25nX3QgcnVfaXhyc3M7CiBsb25nbG9uZ190IHJ1X2lkcnNzOwogbG9u Z2xvbmdfdCBydV9pc3JzczsKIGxvbmdsb25nX3QgcnVfbWluZmx0OwogbG9uZ2xvbmdfdCBydV9t YWpmbHQ7CiBsb25nbG9uZ190IHJ1X25zd2FwOwogbG9uZ2xvbmdfdCBydV9pbmJsb2NrOwogbG9u Z2xvbmdfdCBydV9vdWJsb2NrOwogbG9uZ2xvbmdfdCBydV9tc2dzbmQ7CiBsb25nbG9uZ190IHJ1 X21zZ3JjdjsKIGxvbmdsb25nX3QgcnVfbnNpZ25hbHM7CiBsb25nbG9uZ190IHJ1X252Y3N3Owog bG9uZ2xvbmdfdCBydV9uaXZjc3c7Cn07CiMgMjQ5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNl LmgiIDMgNApleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVybiBpbnQgc2V0 cHJpb3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJsaW1pdChpbnQsIHN0cnVj dCBybGltaXQgKik7CmV4dGVybiBpbnQgc2V0cmxpbWl0KGludCwgY29uc3Qgc3RydWN0IHJsaW1p dCAqKTsKCgpleHRlcm4gaW50IGdldHJsaW1pdDY0KGludCwgc3RydWN0IHJsaW1pdDY0ICopOwpl eHRlcm4gaW50IHNldHJsaW1pdDY0KGludCwgY29uc3Qgc3RydWN0IHJsaW1pdDY0ICopOwoKCgoK CgoKZXh0ZXJuIGludCBnZXRydXNhZ2UoaW50LCBzdHJ1Y3QgcnVzYWdlICopOwoKZXh0ZXJuIGlu dCBnZXRydXNhZ2U2NChpbnQsIHN0cnVjdCBydXNhZ2U2NCAqKTsKIyAyOTAgIi91c3IvaW5jbHVk ZS9zeXMvcmVzb3VyY2UuaCIgMyA0Cn0KIyA1OSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMgNAoKCgojIDEg Ii9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1 ZGUvc3lzL3NpZ25hbC5oIiAxIDMgNAojIDc3ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CmV4dGVybiAi QyIgewojIDEwOCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQy OC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApleHRlcm4gdm9pZCAoKnNpZ25hbChpbnQs IHZvaWQgKCopKGludCkpKShpbnQpOwoKCgoKCgoKZXh0ZXJuIGludCByYWlzZShpbnQpOwoKCnR5 cGVkZWYgaW50IHNpZ19hdG9taWNfdDsKIyAyMzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKdW5pb24g c2lndmFsCnsKCgoKICAgICAgICB2b2lkICogc2l2YWxfcHRyOwoKICAgICAgICBpbnQgc2l2YWxf aW50Owp9OwojIDI1OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAz MDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiBpbnQg c2lfc2lnbm87CiBpbnQgc2lfZXJybm87CiBpbnQgc2lfY29kZTsKIHBpZF90IHNpX3BpZDsKIHVp ZF90IHNpX3VpZDsKIyAyODYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKIHZvaWQgKnNpX2FkZHI7CiBp bnQgc2lfc3RhdHVzOwoKCiBsb25nIHNpX2JhbmQ7CgoKICAgICAgICB1bmlvbiBzaWd2YWwgc2lf dmFsdWU7CgoKCgoKCgogICAgICAgIGludCBfX3BhZFs3XTsKCgoKfSBzaWdpbmZvX3Q7CgoKCgoK CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKCiAgIHVuaW9uIHsKCgoKCgoKIHZvaWQgKCpfX3N1X2hhbmRs ZXIpKGludCk7CgoKCiB2b2lkICgqX19zdV9zaWdhY3Rpb24pIChpbnQsIHNpZ2luZm9fdCAqLCB2 b2lkICopOwoKCgogICAgfSBzYV91bmlvbjsKIHNpZ3NldF90IHNhX21hc2s7CiBpbnQgc2FfZmxh Z3M7Cn07CiMgMzQ5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9j b250ZXh0LmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvY29udGV4dC5oIiAzIDQKIyAx ICIvdXNyL2luY2x1ZGUvc3lzL21fcGFyYW0uaCIgMSAzIDQKIyAyNiAiL3Vzci9pbmNsdWRlL3N5 cy9jb250ZXh0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tc3RzYXZlLmgiIDEgMyA0 CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvbXN0c2F2ZS5oIiAzIDQKc3RydWN0Cgptc3RzYXZlCgoK CnsKCiBzdHJ1Y3QgbXN0c2F2ZSAqcHJldjsKIGxhYmVsX3QgKmtqbXBidWY7CiBjaGFyICpzdGFj a2ZpeDsKIGNoYXIgaW50cHJpOwogY2hhciBiYWNrdDsKIGNoYXIgcnN2ZFsyXTsKIHBpZF90IGN1 cmlkOwoKIGludCBleGNwX3R5cGU7CiB1bG9uZ190IGlhcjsKIHVsb25nX3QgbXNyOwogdWxvbmdf dCBjcjsKIHVsb25nX3QgbHI7CiB1bG9uZ190IGN0cjsKIHVsb25nX3QgeGVyOwogdWxvbmdfdCBt cTsKICB1bG9uZ190IHRpZDsKIHVsb25nX3QgZnBzY3I7CiBjaGFyIGZwZXU7CiBjaGFyIGZwaW5m bzsKIGNoYXIgcGFkWzJdOwoKIHVsb25nX3QgZXhjZXB0WzVdOwogY2hhciBwYWQxWzRdOwogdWxv bmdfdCBvX2lhcjsKICAgICAgICB1bG9uZ190IG9fdG9jOwogdWxvbmdfdCBvX2FyZzE7CiB1bG9u Z190IGV4Y2JyYW5jaDsKCgoKIHVsb25nX3QgZnBzY3J4OwogdWxvbmdfdCBvX3ZhZGRyOwogdWxv bmdfdCBjYWNoZWFsaWduWzddOwogYWRzcGFjZV90IGFzOwogdWxvbmdfdCBncHJbMzJdOwogZG91 YmxlIGZwclszMl07CiMgMTMxICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIgMyA0Cn07CiMg MjIwICIvdXNyL2luY2x1ZGUvc3lzL21zdHNhdmUuaCIgMyA0CmV4dGVybiBjaGFyIF9fcG1hcF9z dGFja1tdOwojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL2NvbnRleHQuaCIgMiAzIDQKCgpleHRlcm4g IkMiIHsKIyA3MSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19jb250 ZXh0NjQgewogdW5zaWduZWQgbG9uZyBsb25nIGdwclszMl07CiB1bnNpZ25lZCBsb25nIGxvbmcg bXNyOwogdW5zaWduZWQgbG9uZyBsb25nIGlhcjsKIHVuc2lnbmVkIGxvbmcgbG9uZyBscjsKIHVu c2lnbmVkIGxvbmcgbG9uZyBjdHI7CiB1bnNpZ25lZCBpbnQgY3I7CiB1bnNpZ25lZCBpbnQgeGVy OwogdW5zaWduZWQgaW50IGZwc2NyOwogdW5zaWduZWQgaW50IGZwc2NyeDsKICAgICAgICB1bnNp Z25lZCBsb25nIGxvbmcgZXhjZXB0WzFdOwogZG91YmxlIGZwclszMl07CiBjaGFyIGZwZXU7CiBj aGFyIGZwaW5mbzsKICAgICAgICBjaGFyIHBhZFsyXTsKICAgICAgICBpbnQgZXhjcF90eXBlOwp9 OwojIDExOSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3Qgc2lnY29udGV4 dDY0IHsKIGludCBzY19vbnN0YWNrOwogdW5zaWduZWQgaW50IHNjX21hc2sxOwogdW5zaWduZWQg aW50IHNjX21hc2syOwogaW50IHNjX3VlcnJvcjsKIHN0cnVjdCBfX2NvbnRleHQ2NCBzY19jb250 ZXh0Owp9OwojIDIxMSAiL3Vzci9pbmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19q bXBidWYgewoKIHN0cnVjdCBtc3RzYXZlIGptcF9jb250ZXh0OwoKCgp9OwojIDI0NSAiL3Vzci9p bmNsdWRlL3N5cy9jb250ZXh0LmgiIDMgNApzdHJ1Y3QgX19zaWdjb250ZXh0IHsKCiBpbnQgc2Nf b25zdGFjazsKIHNpZ3NldF90IHNjX21hc2s7CiBpbnQgc2NfdWVycm9yOwogc3RydWN0IF9fam1w YnVmIHNjX2ptcGJ1ZjsKCgoKCgoKfTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKCgoKCiB2b2lk ICpzc19zcDsKIHNpemVfdCBzc19zaXplOwoKCiBpbnQgc3NfZmxhZ3M7CiBpbnQgX19wYWRbNF07 Cn0gc3RhY2tfdDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9fam1wYnVmIG1jb250ZXh0X3Q7Cgp0 eXBlZGVmIHN0cnVjdCB1Y29udGV4dF90IHsKIGludCBfX3NjX29uc3RhY2s7CiAgICAgICAgc2ln c2V0X3QgdWNfc2lnbWFzazsKCiAgICAgICAgaW50IF9fc2NfdWVycm9yOwogbWNvbnRleHRfdCB1 Y19tY29udGV4dDsKCgoKIHN0cnVjdCB1Y29udGV4dF90ICp1Y19saW5rOwoKCiBzdGFja190IHVj X3N0YWNrOwogaW50IF9fcGFkWzRdOwp9IHVjb250ZXh0X3Q7CgoKfQojIDM1MCAiL2djYy9kamUv YnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2ln bmFsLmgiIDIgMyA0CgoKCgpzdHJ1Y3Qgc2lnc3RhY2sgewogdm9pZCAqc3Nfc3A7CiBpbnQgc3Nf b25zdGFjazsKfTsKIyA0MzYgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBzaWdtYXNr KGludCk7CiMgNTg5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMw NDI4L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9t X3NpZ25hbC5oIiAxIDMgNAojIDU5MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4z LjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMyA0CiMgNTk5ICIvZ2Nj L2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5 cy9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWdldmVudCB7CiB1bmlvbiBzaWd2YWwgc2lnZXZfdmFs dWU7CiBpbnQgc2lnZXZfc2lnbm87CiBpbnQgc2lnZXZfbm90aWZ5OwoKCgoKIHZvaWQgKCpzaWdl dl9ub3RpZnlfZnVuY3Rpb24pKHVuaW9uIHNpZ3ZhbCk7CiBwdGhyZWFkX2F0dHJfdCAqIHNpZ2V2 X25vdGlmeV9hdHRyaWJ1dGVzOwoKfTsKIyA2MjcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKc3RydWN0 IG9zaWdldmVudCB7CgoKCiB2b2lkICpzZXZ0X3ZhbHVlOwoKIHNpZ25hbF90IHNldnRfc2lnbm87 Cn07CiMgNzE4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L2djYy9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWd2ZWMgewojIDczMCAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9z eXMvc2lnbmFsLmgiIDMgNAogICB1bmlvbiB7CgoKCgoKCiB2b2lkICgqc3ZfaGFuZGxlcikoaW50 KTsKCgoKICAgICAgICB2b2lkICgqc3Zfc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9p ZCAqKTsKICAgfSBzdl91bmlvbjsKIGludCBzdl9tYXNrOwogaW50IHN2X2ZsYWdzOwoKfTsKIyA4 MDQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2lu Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGludCBzaWd3YWl0KGNvbnN0IHNpZ3NldF90 ICosIGludCAqKTsKCmV4dGVybiBpbnQgc2lnYmxvY2soaW50KTsKZXh0ZXJuIGludCBzaWdsb2Nh bG1hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWd2ZWMoaW50LCBzdHJ1 Y3Qgc2lndmVjICosIHN0cnVjdCBzaWd2ZWMgKik7CgoKCgoKCgpleHRlcm4gaW50IHNpZ2dldG1h c2sodm9pZCk7CmV4dGVybiBpbnQgc2lnc2V0bWFzayhpbnQpOwojIDg1NiAiL2djYy9kamUvYnVp bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvc2lnbmFs LmgiIDMgNApleHRlcm4gaW50IGtpbGwocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lncHJvY21h c2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdzdXNw ZW5kKGNvbnN0IHNpZ3NldF90ICopOwoKZXh0ZXJuIGludCBzaWdhY3Rpb24oaW50LCBjb25zdCBz dHJ1Y3Qgc2lnYWN0aW9uICosIHN0cnVjdCBzaWdhY3Rpb24gKik7CgpleHRlcm4gaW50IHNpZ2Vt cHR5c2V0KHNpZ3NldF90ICopOwpleHRlcm4gaW50IHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKik7CmV4 dGVybiBpbnQgc2lnYWRkc2V0KHNpZ3NldF90ICosIGludCk7CmV4dGVybiBpbnQgc2lnZGVsc2V0 KHNpZ3NldF90ICosIGludCk7CmV4dGVybiBpbnQgc2lnaXNtZW1iZXIoY29uc3Qgc2lnc2V0X3Qg KiwgaW50KTsKZXh0ZXJuIGludCBzaWdwZW5kaW5nKHNpZ3NldF90ICopOwoKCmV4dGVybiB2b2lk ICgqYnNkX3NpZ25hbCAoaW50LCB2b2lkICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBraWxs cGcocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnaG9sZChpbnQpOwpleHRlcm4gaW50IHNpZ2ln bm9yZShpbnQpOwpleHRlcm4gaW50IHNpZ2ludGVycnVwdChpbnQsIGludCk7CmV4dGVybiBpbnQg c2lncGF1c2UoaW50KTsKZXh0ZXJuIGludCBzaWdyZWxzZShpbnQpOwpleHRlcm4gdm9pZCAoKnNp Z3NldChpbnQsIHZvaWQoKikoaW50KSkpKGludCk7CgpleHRlcm4gaW50IHNpZ2FsdHN0YWNrKGNv bnN0IHN0YWNrX3QgKiwgc3RhY2tfdCAqKTsKZXh0ZXJuIGludCBzaWdzdGFjayhzdHJ1Y3Qgc2ln c3RhY2sgKiwgc3RydWN0IHNpZ3N0YWNrICopOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfa2lsbChw dGhyZWFkX3QsIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2ln c2V0X3QgKiwgc2lnc2V0X3QgKik7CmV4dGVybiBpbnQgc2lncXVldWUocGlkX3QsIGludCwgY29u c3QgdW5pb24gc2lndmFsKTsKc3RydWN0IHRpbWVzcGVjOwpleHRlcm4gaW50IHNpZ3RpbWVkd2Fp dChjb25zdCBzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKiwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICop OwpleHRlcm4gaW50IHNpZ3dhaXRpbmZvKGNvbnN0IHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsK IyA5MTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2Nj L2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKfQojIDYzICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBj LWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMyA0CiMg MTQxICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9p bmNsdWRlL3N5cy93YWl0LmgiIDMgNAp0eXBlZGVmIGVudW0ge1BfQUxMLCBQX1BJRCwgUF9QR0lE fSBpZHR5cGVfdDsKIyAxNTkgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAt MjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CmV4dGVybiBwaWRfdCB3YWl0KGlu dCAqKTsKCmV4dGVybiBwaWRfdCB3YWl0cGlkKHBpZF90LCBpbnQgKiwgaW50KTsKIyAxNzMgIi9n Y2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUv c3lzL3dhaXQuaCIgMyA0CmV4dGVybiBpbnQgd2FpdGlkKGlkdHlwZV90LCBpZF90LCBzaWdpbmZv X3QgKiwgaW50KTsKCgoKZXh0ZXJuIHBpZF90IHdhaXQzKGludCAqLCBpbnQsIHN0cnVjdCBydXNh Z2UgKik7CgoKCmV4dGVybiBwaWRfdCBrd2FpdHBpZChpbnQgKiwgcGlkX3QsIGludCwgc3RydWN0 IHJ1c2FnZSAqLCBzaWdpbmZvX3QgKik7CgpleHRlcm4gcGlkX3Qga3dhaXRwaWQ2NChpbnQgKiwg cGlkX3QsIGludCwgc3RydWN0IHJ1c2FnZTY0ICosIHNpZ2luZm9fdCAqKTsKCgoKZXh0ZXJuIHBp ZF90IHdhaXQzNjQoaW50ICosIGludCwgc3RydWN0IHJ1c2FnZTY0ICopOwojIDIwMSAiL2djYy9k amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMv d2FpdC5oIiAzIDQKZXh0ZXJuIHBpZF90IHdhaXQ0KHBpZF90LCBpbnQgKiwgaW50LCBzdHJ1Y3Qg cnVzYWdlICopOwojIDIyMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y MDAzMDQyOC9nY2MvaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQKfQojIDIzNiAiL2djYy9kamUvYnVp bGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIg MiAzIDQKIyAzMDggIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0 MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAogZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQp OwogZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0W10pOwogZXh0ZXJuIGxvbmcg anJhbmQ0OCh1bnNpZ25lZCBzaG9ydFtdKTsKIGV4dGVybiB2b2lkIGxjb25nNDgodW5zaWduZWQg c2hvcnQgaW50ICopOwogZXh0ZXJuIGxvbmcgbHJhbmQ0OCh2b2lkKTsKIGV4dGVybiBsb25nIG1y YW5kNDgodm9pZCk7CiBleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0W10pOwogZXh0 ZXJuIHVuc2lnbmVkIHNob3J0ICpzZWVkNDgodW5zaWduZWQgc2hvcnRbXSk7CiBleHRlcm4gdm9p ZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKIGV4dGVybiB2b2lkIHNyYW5kNDgobG9uZyk7CgogZXh0 ZXJuIGludCBwdXRlbnYoY2hhciAqKTsKIyAzMzcgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJt LWFpeDQuMy4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAogZXh0ZXJuIGlu dCByYW5kX3IodW5zaWduZWQgaW50ICopOwojIDM2MSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1p Ym0tYWl4NC4zLjMuMC0yMDAzMDQyOC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiBleHRlcm4g bG9uZyBhNjRsKGNvbnN0IGNoYXIgKik7CiBleHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwg aW50ICosIGludCAqKTsKIGV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50 ICopOwogZXh0ZXJuIGNoYXIgKmdjdnQoZG91YmxlLCBpbnQsIGNoYXIgKik7CiBleHRlcm4gaW50 IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsKIGV4dGVybiBpbnQg Z3JhbnRwdChpbnQpOwogZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSh1bnNpZ25lZCwgY2hhciAqLCBz aXplX3QpOwogZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CiBleHRlcm4gY2hhciAqbWt0ZW1wKGNo YXIgKik7CiBleHRlcm4gaW50IG1rc3RlbXAoY2hhciAqKTsKIGV4dGVybiBjaGFyICpwdHNuYW1l KGludCk7CiBleHRlcm4gbG9uZyByYW5kb20odm9pZCk7CiBleHRlcm4gY2hhciAqcmVhbHBhdGgo Y29uc3QgY2hhciAqLCBjaGFyICopOwogZXh0ZXJuIGNoYXIgKnNldHN0YXRlKGNvbnN0IGNoYXIg Kik7CiBleHRlcm4gdm9pZCBzcmFuZG9tKHVuc2lnbmVkKTsKIGV4dGVybiBpbnQgdW5sb2NrcHQo aW50KTsKIGV4dGVybiBpbnQgdHR5c2xvdCh2b2lkKTsKIGV4dGVybiB2b2lkICp2YWxsb2Moc2l6 ZV90KTsKIyA0NjQgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0 MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4g aW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRlcnI7CiMgNDgyICIvZ2NjL2RqZS9idWlsZC9wb3dl cnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4 dGVybiBmbG9hdCBhdG9mZihjaGFyICopOwogZXh0ZXJuIGZsb2F0IHN0cnRvZihjb25zdCBjaGFy ICosIGNoYXIgKiopOwogZXh0ZXJuIGludCBzZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIGludCk7CiBleHRlcm4gdm9pZCBpbXVsX2RibChsb25nLCBsb25nLCBsb25nICopOwogZXh0 ZXJuIHZvaWQgdW11bF9kYmwodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg bG9uZyAqKTsKIGV4dGVybiBpbnQgb25fZXhpdCh2b2lkICgqKShpbnQsIHZvaWQgKiksIHZvaWQg Kik7CiMgNTA4ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIGV4dGVybiBkb3VibGUgd2NzdG9kKGNvbnN0IHdj aGFyX3QgKiwgd2NoYXJfdCAqKik7CiBleHRlcm4gbG9uZyBpbnQgd2NzdG9sKGNvbnN0IHdjaGFy X3QgKiwgd2NoYXJfdCAqKiwgaW50KTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGludCB3Y3N0b3Vs KGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKiwgaW50KTsKCiBleHRlcm4gaW50IHJwbWF0Y2go Y29uc3QgY2hhciAqKTsKIGV4dGVybiBpbnQgY2xlYXJlbnYodm9pZCk7CiBleHRlcm4gaW50IGdl dG9wdChpbnQsIGNoYXIqIGNvbnN0KiwgY29uc3QgY2hhciopOwogZXh0ZXJuIGNoYXIgKmdldHBh c3MoY29uc3QgY2hhciAqKTsKIyA1MzUgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu My4zLjAtMjAwMzA0MjgvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBs bGRpdl90IHsKICAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICAgbG9uZyBsb25nIGludCByZW0g Owp9IGxsZGl2X3Q7CiMgNTQ5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4w LTIwMDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg bGxhYnMoIGxvbmcgbG9uZyBpbnQgKTsKZXh0ZXJuIGxsZGl2X3QgbGxkaXYoIGxvbmcgbG9uZyBp bnQsIGxvbmcgbG9uZyBpbnQgKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCgKICAgICBj b25zdCBjaGFyICosCiAgICAgY2hhciAqKiwKICAgICBpbnQgKTsKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgbG9uZyBpbnQgc3RydG91bGwoCiAgICAgY29uc3QgY2hhciAqLAogICAgIGNoYXIgKiosCiAg ICAgaW50ICk7CiMgNTY5ICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIw MDMwNDI4L2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKfQojIDUzICIvZ2NjL2RqZS9idWlsZC9w b3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGli c3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMiAzCiMgODQgIi9nY2MvZGplL2J1aWxkL3Bvd2Vy cGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRj KystdjMvaW5jbHVkZS9jc3RkbGliIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6ZGl2X3Q7 CiAgdXNpbmcgOjpsZGl2X3Q7CgogIHVzaW5nIDo6YWJvcnQ7CiAgdXNpbmcgOjphYnM7CiAgdXNp bmcgOjphdGV4aXQ7CiAgdXNpbmcgOjphdG9mOwogIHVzaW5nIDo6YXRvaTsKICB1c2luZyA6OmF0 b2w7CiAgdXNpbmcgOjpic2VhcmNoOwogIHVzaW5nIDo6Y2FsbG9jOwogIHVzaW5nIDo6ZGl2Owog IHVzaW5nIDo6ZXhpdDsKICB1c2luZyA6OmZyZWU7CiAgdXNpbmcgOjpnZXRlbnY7CiAgdXNpbmcg OjpsYWJzOwogIHVzaW5nIDo6bGRpdjsKICB1c2luZyA6Om1hbGxvYzsKICB1c2luZyA6Om1ibGVu OwogIHVzaW5nIDo6bWJzdG93Y3M7CiAgdXNpbmcgOjptYnRvd2M7CiAgdXNpbmcgOjpxc29ydDsK ICB1c2luZyA6OnJhbmQ7CiAgdXNpbmcgOjpyZWFsbG9jOwogIHVzaW5nIDo6c3JhbmQ7CiAgdXNp bmcgOjpzdHJ0b2Q7CiAgdXNpbmcgOjpzdHJ0b2w7CiAgdXNpbmcgOjpzdHJ0b3VsOwogIHVzaW5n IDo6c3lzdGVtOwogIHVzaW5nIDo6d2NzdG9tYnM7CiAgdXNpbmcgOjp3Y3RvbWI7CgogIGlubGlu ZSBsb25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBsYWJzKF9faSk7IH0KCiAgaW5saW5lIGxk aXZfdAogIGRpdihsb25nIF9faSwgbG9uZyBfX2opIHsgcmV0dXJuIGxkaXYoX19pLCBfX2opOyB9 Cn0KIyA2OCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9w b3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ29i YXNlLmgiIDIgMwoKIyAxICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXci IDEgMwojIDQ0ICIvZ2NjL2RqZS9zcmMvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXciIDMKZXh0 ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQKewoKCgoKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVi bGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBiYWRfYWxsb2MoKSB0aHJvdygpIHsgfQoK CiAgICB2aXJ0dWFsIH5iYWRfYWxsb2MoKSB0aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93 X3QgeyB9OwogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgogIHR5cGVkZWYgdm9p ZCAoKm5ld19oYW5kbGVyKSgpOwoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIobmV3X2hh bmRsZXIpIHRocm93KCk7Cn0KIyA4MiAiL2djYy9kamUvc3JjL2xpYnN0ZGMrKy12My9saWJzdXBj KysvbmV3IiAzCnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCkgdGhyb3cgKHN0ZDo6YmFk X2FsbG9jKTsKdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QpIHRocm93IChzdGQ6OmJh ZF9hbGxvYyk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB0aHJvdygpOwp2b2lkIG9wZXJh dG9yIGRlbGV0ZVtdKHZvaWQqKSB0aHJvdygpOwp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXpl X3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCogb3BlcmF0b3IgbmV3W10o c3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRv ciBkZWxldGUodm9pZCosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVy YXRvciBkZWxldGVbXSh2b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwoKCmlu bGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7 IHJldHVybiBfX3A7IH0KaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90LCB2 b2lkKiBfX3ApIHRocm93KCkgeyByZXR1cm4gX19wOyB9CgoKaW5saW5lIHZvaWQgb3BlcmF0b3Ig ZGVsZXRlICh2b2lkKiwgdm9pZCopIHRocm93KCkgeyB9CmlubGluZSB2b2lkIG9wZXJhdG9yIGRl bGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH0KCn0KIyA3MCAiL2djYy9kamUvYnVpbGQv cG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xp YnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvZ2NjL2Rq ZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4L3Bvd2VycGMtaWJtLWFpeDQu My4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA2NCAiL2dj Yy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1h aXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaCIgMwpuYW1lc3Bh Y2Ugc3RkCnsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBwYWlyIHsK ICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBlOwoKICBf VDEgZmlyc3Q7CiAgX1QyIHNlY29uZDsKCgoKCiAgcGFpcigpIDogZmlyc3QoKSwgc2Vjb25kKCkg e30KCgoKCiAgcGFpcihjb25zdCBfVDEmIF9fYSwgY29uc3QgX1QyJiBfX2IpIDogZmlyc3QoX19h KSwgc2Vjb25kKF9fYikge30KCgogIHRlbXBsYXRlIDxjbGFzcyBfVTEsIGNsYXNzIF9VMj4KICBw YWlyKGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX3ApIDogZmlyc3QoX19wLmZpcnN0KSwgc2Vjb25k KF9fcC5zZWNvbmQpIHt9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxp bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8 X1QxLCBfVDI+JiBfX3kpCnsKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3gu c2Vjb25kID09IF9feS5zZWNvbmQ7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+ CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBw YWlyPF9UMSwgX1QyPiYgX195KQp7CiAgcmV0dXJuIF9feC5maXJzdCA8IF9feS5maXJzdCB8fAog ICAgICAgICAoIShfX3kuZmlyc3QgPCBfX3guZmlyc3QpICYmIF9feC5zZWNvbmQgPCBfX3kuc2Vj b25kKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3Bl cmF0b3IhPShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYg X195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBj bGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194 LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuIF9feSA8IF9feDsKfQoKCnRl bXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25z dCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7CiAgcmV0 dXJuICEoX195IDwgX194KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5s aW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly PF9UMSwgX1QyPiYgX195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsKfQojIDE0MCAiL2djYy9k amUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0 LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaCIgMwp0ZW1wbGF0ZSA8 Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CgoKaW5saW5lIHBhaXI8X1QxLCBfVDI+IG1ha2VfcGFpcihf VDEgX194LCBfVDIgX195KQoKCgp7CiAgcmV0dXJuIHBhaXI8X1QxLCBfVDI+KF9feCwgX195KTsK fQoKfQojIDcyICIvZ2NjL2RqZS9idWlsZC9wb3dlcnBjLWlibS1haXg0LjMuMy4wLTIwMDMwNDI4 L3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9zdGxfYWxn b2Jhc2UuaCIgMiAzCiMgMSAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC0y MDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMv dHlwZV90cmFpdHMuaCIgMSAzCiMgNTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQu My4zLjAtMjAwMzA0MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVk ZS9iaXRzL3R5cGVfdHJhaXRzLmgiIDMKIyA5MCAiL2djYy9kamUvYnVpbGQvcG93ZXJwYy1pYm0t YWl4NC4zLjMuMC0yMDAzMDQyOC9wb3dlcnBjLWlibS1haXg0LjMuMy4wL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvdHlwZV90cmFpdHMuaCIgMwpzdHJ1Y3QgX190cnVlX3R5cGUge307CnN0cnVj dCBfX2ZhbHNlX3R5cGUge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX190eXBlX3Ry YWl0cyB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgdGhpc19kdW1teV9tZW1iZXJfbXVzdF9iZV9m aXJzdDsKIyAxMTMgIi9nY2MvZGplL2J1aWxkL3Bvd2VycGMtaWJtLWFpeDQuMy4zLjAtMjAwMzA0 MjgvcG93ZXJwYy1pYm0tYWl4NC4zLjMuMC9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3R5cGVf dHJhaXRzLmgiIDMKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9j b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25z dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9v cGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsK ICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaXNfUE9EX3R5cGU7Cn07CgoKCgp0ZW1wbGF0ZTw+IHN0 cnVjdCBfX3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJp dmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2 aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxf YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9k ZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxh dGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo YXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190 cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3Ry aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsK CnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8c2lnbmVkIGNoYXI+IHsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190 cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3Ry dWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlz X1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBj aGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1 Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9y OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7 CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90 cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1 bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9j b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50 X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7 CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVj dCBfX3R5cGVfdHJhaXRzPHNob3J0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh bF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fz c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVz dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRl PD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgc2hvcnQ+IHsKICAgdHlwZWRlZiBfX3Ry dWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1 ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5 cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw ZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIG