From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19434 invoked by alias); 13 Mar 2003 02:56:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 19395 invoked by uid 71); 13 Mar 2003 02:56:00 -0000 Resent-Date: 13 Mar 2003 02:56:00 -0000 Resent-Message-ID: <20030313025600.19393.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, tm_gccmail@kloo.net Received: (qmail 11594 invoked by uid 48); 13 Mar 2003 02:49:20 -0000 Message-Id: <20030313024920.11593.qmail@sources.redhat.com> Date: Thu, 13 Mar 2003 02:56:00 -0000 From: tm_gccmail@kloo.net Reply-To: tm_gccmail@kloo.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/10052: SH-ELF: GCC segfaults when compiling code X-SW-Source: 2003-03/txt/msg00754.txt.bz2 List-Id: >Number: 10052 >Category: optimization >Synopsis: SH-ELF: GCC segfaults when compiling code >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Thu Mar 13 02:56:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Toshi Morita >Release: unknown-1.0 >Organization: >Environment: --host=i686-linux --target=sh-elf >Description: GCC crashes when code is compiled at -O1 or -O2. >How-To-Repeat: [tm@localhost gcc]$ ./xgcc -B./ -O1 -m4 -S hint.i hint.i:620: warning: conflicting types for built-in function `nan' hint.i:718: warning: conflicting types for built-in function `nanf' hint.i: In function `main': hint.i:894: warning: return type of `main' is not `int' hint.i:1147: error: insn does not satisfy its constraints: (insn 348 347 1644 13 0x401612ec (set (reg/v:SI 76 fr12 [orig:167 dmax ] [167]) (reg:SI 149 macl)) 123 {movsi_ie} (insn_list 347 (nil)) (expr_list:REG_EQUAL (mult:SI (reg/v:SI 9 r9 [orig:164 itm ] [164]) (reg/v:SI 9 r9 [orig:164 itm ] [164])) (nil))) hint.i:1147: internal compiler error: in reload_cse_simplify_operands, at reload1.c:8347 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. [tm@localhost gcc]$ >Fix: Not known. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="hint.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hint.i" dHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Owp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9f Z251Y192YV9saXN0Owp0eXBlZGVmIGxvbmcgX29mZl90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg bG9uZyBsb25nIF9vZmY2NF90OwoKCnR5cGVkZWYgaW50IF9zc2l6ZV90Owp0eXBlZGVmIHVuc2ln bmVkIGludCB3aW50X3Q7CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgog IHsKICAgIHdpbnRfdCBfX3djaDsKICAgIHVuc2lnbmVkIGNoYXIgX193Y2hiWzRdOwogIH0gX192 YWx1ZTsKfSBfbWJzdGF0ZV90OwoKdHlwZWRlZiBpbnQgX2Zsb2NrX3Q7CgoKCgoKCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBfX1VMb25nOwpzdHJ1Y3QgX0JpZ2ludAp7CiAgc3RydWN0IF9CaWdpbnQg Kl9uZXh0OwogIGludCBfaywgX21heHdkcywgX3NpZ24sIF93ZHM7CiAgX19VTG9uZyBfeFsxXTsK fTsKCgpzdHJ1Y3QgX190bQp7CiAgaW50IF9fdG1fc2VjOwogIGludCBfX3RtX21pbjsKICBpbnQg X190bV9ob3VyOwogIGludCBfX3RtX21kYXk7CiAgaW50IF9fdG1fbW9uOwogIGludCBfX3RtX3ll YXI7CiAgaW50IF9fdG1fd2RheTsKICBpbnQgX190bV95ZGF5OwogIGludCBfX3RtX2lzZHN0Owp9 OwpzdHJ1Y3QgX2F0ZXhpdCB7CiAgICAgICAgc3RydWN0IF9hdGV4aXQgKl9uZXh0OwogICAgICAg IGludCBfaW5kOwogICAgICAgIHZvaWQgKCpfZm5zWzMyXSkodm9pZCk7CiAgICAgICAgdm9pZCAq X2ZuYXJnc1szMl07CiAgICAgICAgX19VTG9uZyBfZm50eXBlczsKfTsKc3RydWN0IF9fc2J1ZiB7 CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9OwoKCgoK Cgp0eXBlZGVmIGxvbmcgX2Zwb3NfdDsKc3RydWN0IF9fc0ZJTEUgewogIHVuc2lnbmVkIGNoYXIg Kl9wOwogIGludCBfcjsKICBpbnQgX3c7CiAgc2hvcnQgX2ZsYWdzOwogIHNob3J0IF9maWxlOwog IHN0cnVjdCBfX3NidWYgX2JmOwogIGludCBfbGJmc2l6ZTsKCgoKCgoKICB2b2lkICogX2Nvb2tp ZTsKCiAgaW50ICgqX3JlYWQpICh2b2lkICogX2Nvb2tpZSwgY2hhciAqX2J1ZiwgaW50IF9uKTsK ICBpbnQgKCpfd3JpdGUpICh2b2lkICogX2Nvb2tpZSwgY29uc3QgY2hhciAqX2J1ZiwgaW50IF9u KTsKCiAgX2Zwb3NfdCAoKl9zZWVrKSAodm9pZCAqIF9jb29raWUsIF9mcG9zX3QgX29mZnNldCwg aW50IF93aGVuY2UpOwogIGludCAoKl9jbG9zZSkgKHZvaWQgKiBfY29va2llKTsKCgogIHN0cnVj dCBfX3NidWYgX3ViOwogIHVuc2lnbmVkIGNoYXIgKl91cDsKICBpbnQgX3VyOwoKCiAgdW5zaWdu ZWQgY2hhciBfdWJ1ZlszXTsKICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgc3RydWN0IF9f c2J1ZiBfbGI7CgoKICBpbnQgX2Jsa3NpemU7CiAgaW50IF9vZmZzZXQ7CgoKICBzdHJ1Y3QgX3Jl ZW50ICpfZGF0YTsKCgoKICBfZmxvY2tfdCBfbG9jazsKCn07CnR5cGVkZWYgc3RydWN0IF9fc0ZJ TEUgX19GSUxFOwoKCnN0cnVjdCBfZ2x1ZQp7CiAgc3RydWN0IF9nbHVlICpfbmV4dDsKICBpbnQg X25pb2JzOwogIF9fRklMRSAqX2lvYnM7Cn07CnN0cnVjdCBfcmFuZDQ4IHsKICB1bnNpZ25lZCBz aG9ydCBfc2VlZFszXTsKICB1bnNpZ25lZCBzaG9ydCBfbXVsdFszXTsKICB1bnNpZ25lZCBzaG9y dCBfYWRkOwoKCgoKfTsKc3RydWN0IF9yZWVudAp7CiAgaW50IF9lcnJubzsKCgoKCiAgX19GSUxF ICpfc3RkaW4sICpfc3Rkb3V0LCAqX3N0ZGVycjsKCiAgaW50IF9pbmM7CiAgY2hhciBfZW1lcmdl bmN5WzI1XTsKCiAgaW50IF9jdXJyZW50X2NhdGVnb3J5OwogIGNvbnN0IGNoYXIgKl9jdXJyZW50 X2xvY2FsZTsKCiAgaW50IF9fc2RpZGluaXQ7CgogIHZvaWQgKCpfX2NsZWFudXApIChzdHJ1Y3Qg X3JlZW50ICopOwoKCiAgc3RydWN0IF9CaWdpbnQgKl9yZXN1bHQ7CiAgaW50IF9yZXN1bHRfazsK ICBzdHJ1Y3QgX0JpZ2ludCAqX3A1czsKICBzdHJ1Y3QgX0JpZ2ludCAqKl9mcmVlbGlzdDsKCgog IGludCBfY3Z0bGVuOwogIGNoYXIgKl9jdnRidWY7CgogIHVuaW9uCiAgICB7CiAgICAgIHN0cnVj dAogICAgICAgIHsKICAgICAgICAgIHVuc2lnbmVkIGludCBfdW51c2VkX3JhbmQ7CiAgICAgICAg ICBjaGFyICogX3N0cnRva19sYXN0OwogICAgICAgICAgY2hhciBfYXNjdGltZV9idWZbMjZdOwog ICAgICAgICAgc3RydWN0IF9fdG0gX2xvY2FsdGltZV9idWY7CiAgICAgICAgICBpbnQgX2dhbW1h X3NpZ25nYW07CiAgICAgICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfcmFu ZF9uZXh0OwogICAgICAgICAgc3RydWN0IF9yYW5kNDggX3I0ODsKICAgICAgICAgIF9tYnN0YXRl X3QgX21ibGVuX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfbWJ0b3djX3N0YXRlOwogICAg ICAgICAgX21ic3RhdGVfdCBfd2N0b21iX3N0YXRlOwogICAgICAgICAgY2hhciBfbDY0YV9idWZb OF07CiAgICAgICAgICBjaGFyIF9zaWduYWxfYnVmWzI0XTsKICAgICAgICAgIGludCBfZ2V0ZGF0 ZV9lcnI7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnJsZW5fc3RhdGU7CiAgICAgICAgICBfbWJz dGF0ZV90IF9tYnJ0b3djX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfbWJzcnRvd2NzX3N0 YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfd2NydG9tYl9zdGF0ZTsKICAgICAgICAgIF9tYnN0 YXRlX3QgX3djc3J0b21ic19zdGF0ZTsKICAgICAgICB9IF9yZWVudDsKCgoKICAgICAgc3RydWN0 CiAgICAgICAgewoKICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBfbmV4dGZbMzBdOwogICAgICAg ICAgdW5zaWduZWQgaW50IF9ubWFsbG9jWzMwXTsKICAgICAgICB9IF91bnVzZWQ7CiAgICB9IF9u ZXc7CgoKICBzdHJ1Y3QgX2F0ZXhpdCAqX2F0ZXhpdDsKICBzdHJ1Y3QgX2F0ZXhpdCBfYXRleGl0 MDsKCgogIHZvaWQgKCoqKF9zaWdfZnVuYykpKGludCk7CgoKCgogIHN0cnVjdCBfZ2x1ZSBfX3Nn bHVlOwogIF9fRklMRSBfX3NmWzNdOwp9OwpleHRlcm4gc3RydWN0IF9yZWVudCAqX2ltcHVyZV9w dHIgOwoKdm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9yZWVudCAqKTsKdHlwZWRlZiBzaG9y dCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90OwoK CgoKCnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJf dDsKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBfX2ludDY0X3Q7Cl9fZXh0 ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191aW50NjRfdDsKdHlwZWRlZiBp bnQgcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CnR5cGVkZWYgbG9uZyBpbnQg X19vZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25n IGxvbmcgaW50IF9fbG9mZl90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9y dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNs b2NrX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90OwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICB0 aW1lX3QgdHZfc2VjOwogIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVjIHsKICBz dHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9 OwoKCnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBjYWRkcl90OwoKCgoKCgoK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbm9fdDsKdHlwZWRlZiBzaG9ydCBkZXZfdDsKCgoKCnR5 cGVkZWYgbG9uZyBvZmZfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWlkX3Q7CnR5cGVkZWYg dW5zaWduZWQgc2hvcnQgZ2lkX3Q7CgoKdHlwZWRlZiBpbnQgcGlkX3Q7CnR5cGVkZWYgbG9uZyBr ZXlfdDsKdHlwZWRlZiBfc3NpemVfdCBzc2l6ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBtb2Rl X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoKCnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgbmxpbmtfdDsKdHlwZWRlZiBsb25nIGZkX21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0 cnVjdCBfdHlwZXNfZmRfc2V0IHsKICAgICAgICBmZF9tYXNrIGZkc19iaXRzWygoKDY0KSsoKChz aXplb2YgKGZkX21hc2spICogOCkpLTEpKS8oKHNpemVvZiAoZmRfbWFzaykgKiA4KSkpXTsKfSBf dHlwZXNfZmRfc2V0OwoKCnR5cGVkZWYgX2Zwb3NfdCBmcG9zX3Q7CnR5cGVkZWYgX19GSUxFIEZJ TEU7CkZJTEUgKiB0bXBmaWxlICh2b2lkKTsKY2hhciAqIHRtcG5hbSAoY2hhciAqKTsKaW50IGZj bG9zZSAoRklMRSAqKTsKaW50IGZmbHVzaCAoRklMRSAqKTsKRklMRSAqIGZyZW9wZW4gKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwp2b2lkIHNldGJ1ZiAoRklMRSAqLCBjaGFy ICopOwppbnQgc2V0dmJ1ZiAoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKaW50IGZwcmlu dGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnNjYW5mIChGSUxFICosIGNvbnN0 IGNoYXIgKiwgLi4uKTsKaW50IHByaW50ZiAoY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc2NhbmYg KGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHNzY2FuZiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIC4uLik7CmludCB2ZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9s aXN0KTsKaW50IHZwcmludGYgKGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNw cmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBmZ2V0YyAo RklMRSAqKTsKY2hhciAqIGZnZXRzIChjaGFyICosIGludCwgRklMRSAqKTsKaW50IGZwdXRjIChp bnQsIEZJTEUgKik7CmludCBmcHV0cyAoY29uc3QgY2hhciAqLCBGSUxFICopOwppbnQgZ2V0YyAo RklMRSAqKTsKaW50IGdldGNoYXIgKHZvaWQpOwpjaGFyICogZ2V0cyAoY2hhciAqKTsKaW50IHB1 dGMgKGludCwgRklMRSAqKTsKaW50IHB1dGNoYXIgKGludCk7CmludCBwdXRzIChjb25zdCBjaGFy ICopOwppbnQgdW5nZXRjIChpbnQsIEZJTEUgKik7CnNpemVfdCBmcmVhZCAodm9pZCAqLCBzaXpl X3QgX3NpemUsIHNpemVfdCBfbiwgRklMRSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAq ICwgc2l6ZV90IF9zaXplLCBzaXplX3QgX24sIEZJTEUgKik7CmludCBmZ2V0cG9zIChGSUxFICos IGZwb3NfdCAqKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcsIGludCk7CmludCBmc2V0cG9zIChG SUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAoIEZJTEUgKik7CnZvaWQgcmV3aW5k IChGSUxFICopOwp2b2lkIGNsZWFyZXJyIChGSUxFICopOwppbnQgZmVvZiAoRklMRSAqKTsKaW50 IGZlcnJvciAoRklMRSAqKTsKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CgpGSUxFICogZm9w ZW4gKGNvbnN0IGNoYXIgKl9uYW1lLCBjb25zdCBjaGFyICpfdHlwZSk7CmludCBzcHJpbnRmIChj aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHJlbW92ZSAoY29uc3QgY2hhciAqKTsKaW50 IHJlbmFtZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCmludCBhc3ByaW50ZiAoY2hh ciAqKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnNlZWtvIChGSUxFICosIG9mZl90LCBpbnQp OwpvZmZfdCBmdGVsbG8gKCBGSUxFICopOwppbnQgdmZpcHJpbnRmIChGSUxFICosIGNvbnN0IGNo YXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgaXByaW50ZiAoY29uc3QgY2hhciAqLCAuLi4pOwpp bnQgZmlwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc2lwcmludGYgKGNo YXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpjaGFyICogdGVtcG5hbSAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICopOwppbnQgdmFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIF9fZ251 Y192YV9saXN0KTsKaW50IHZzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwg X19nbnVjX3ZhX2xpc3QpOwppbnQgdmZzY2FuZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fZ251 Y192YV9saXN0KTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7Cmlu dCB2c3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwoK aW50IGZjbG9zZWFsbCAodm9pZCk7CmludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0 IGNoYXIgKiwgLi4uKTsKRklMRSAqIGZkb3BlbiAoaW50LCBjb25zdCBjaGFyICopOwoKaW50IGZp bGVubyAoRklMRSAqKTsKaW50IGdldHcgKEZJTEUgKik7CmludCBwY2xvc2UgKEZJTEUgKik7CkZJ TEUgKiBwb3BlbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgcHV0dyAoaW50LCBG SUxFICopOwp2b2lkIHNldGJ1ZmZlciAoRklMRSAqLCBjaGFyICosIGludCk7CmludCBzZXRsaW5l YnVmIChGSUxFICopOwppbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqKTsKaW50IGdldGNoYXJfdW5s b2NrZWQgKHZvaWQpOwp2b2lkIGZsb2NrZmlsZSAoRklMRSAqKTsKaW50IGZ0cnlsb2NrZmlsZSAo RklMRSAqKTsKdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqKTsKaW50IHB1dGNfdW5sb2NrZWQgKGlu dCwgRklMRSAqKTsKaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCk7CgoKCgoKCmludCBfYXNwcmlu dGZfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBf ZmNsb3NlYWxsX3IgKHN0cnVjdCBfcmVlbnQgKik7CkZJTEUgKiBfZmRvcGVuX3IgKHN0cnVjdCBf cmVlbnQgKiwgaW50LCBjb25zdCBjaGFyICopOwpGSUxFICogX2ZvcGVuX3IgKHN0cnVjdCBfcmVl bnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX2ZzY2FuZl9yIChzdHJ1Y3Qg X3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX2dldGNoYXJfciAoc3Ry dWN0IF9yZWVudCAqKTsKY2hhciAqIF9nZXRzX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsK aW50IF9pcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQg X21rc3RlbXBfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwpjaGFyICogX21rdGVtcF9yIChz dHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CnZvaWQgX3BlcnJvcl9yIChzdHJ1Y3QgX3JlZW50ICos IGNvbnN0IGNoYXIgKik7CmludCBfcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hh ciAqLCAuLi4pOwppbnQgX3B1dGNoYXJfciAoc3RydWN0IF9yZWVudCAqLCBpbnQpOwppbnQgX3B1 dHNfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICopOwppbnQgX3JlbW92ZV9yIChzdHJ1 Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKik7CmludCBfcmVuYW1lX3IgKHN0cnVjdCBfcmVlbnQg KiwgY29uc3QgY2hhciAqX29sZCwgY29uc3QgY2hhciAqX25ldyk7CgppbnQgX3NjYW5mX3IgKHN0 cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX3NwcmludGZfciAoc3RydWN0 IF9yZWVudCAqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IF9zbnByaW50Zl9yIChz dHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7CmludCBf c3NjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4u Lik7CmNoYXIgKiBfdGVtcG5hbV9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqKTsKRklMRSAqIF90bXBmaWxlX3IgKHN0cnVjdCBfcmVlbnQgKik7CmNoYXIgKiBf dG1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKaW50IF92YXNwcmludGZfciAoc3Ry dWN0IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50 IF92ZnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2du dWNfdmFfbGlzdCk7CmludCBfdnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIg KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX3ZzcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hh ciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c25wcmludGZfciAoc3Ry dWN0IF9yZWVudCAqLCBjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlz dCk7CmludCBfdmZzY2FuZl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAq LCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg Y2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNzY2FuZl9yIChzdHJ1Y3QgX3JlZW50ICos IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7Cgpzc2l6ZV90IF9f Z2V0ZGVsaW0gKGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIEZJTEUgKik7CnNzaXplX3QgX19nZXRs aW5lIChjaGFyICoqLCBzaXplX3QgKiwgRklMRSAqKTsKaW50IF9fc3JnZXQgKEZJTEUgKik7Cmlu dCBfX3N3YnVmIChpbnQsIEZJTEUgKik7CgoKCgoKCkZJTEUgKmZ1bm9wZW4gKGNvbnN0IHZvaWQg KiBfY29va2llLCBpbnQgKCpyZWFkZm4pKHZvaWQgKiBfY29va2llLCBjaGFyICpfYnVmLCBpbnQg X24pLCBpbnQgKCp3cml0ZWZuKSh2b2lkICogX2Nvb2tpZSwgY29uc3QgY2hhciAqX2J1ZiwgaW50 IF9uKSwgZnBvc190ICgqc2Vla2ZuKSh2b2lkICogX2Nvb2tpZSwgZnBvc190IF9vZmYsIGludCBf d2hlbmNlKSwgaW50ICgqY2xvc2Vmbikodm9pZCAqIF9jb29raWUpKTsKCgoKdHlwZWRlZiBzdHJ1 Y3QKewogIGludCBxdW90OwogIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAg bG9uZyBxdW90OwogIGxvbmcgcmVtOwp9IGxkaXZfdDsKZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7 CgoKCnZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwppbnQgYWJz IChpbnQpOwppbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSh2b2lkKSk7CmRvdWJsZSBhdG9mIChj b25zdCBjaGFyICpfX25wdHIpOwoKZmxvYXQgYXRvZmYgKGNvbnN0IGNoYXIgKl9fbnB0cik7Cgpp bnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKTsKbG9uZyBhdG9sIChjb25zdCBjaGFyICpfX25w dHIpOwp2b2lkICogYnNlYXJjaCAoY29uc3Qgdm9pZCAqIF9fa2V5LCBjb25zdCB2b2lkICogX19i YXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50ICgqIF9jb21wYXIpIChjb25z dCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKCgoKdm9pZCAqIGNhbGxvYyAoc2l6ZV90IF9fbm1l bWIsIHNpemVfdCBfX3NpemUpOwpkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSk7 CnZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKdm9p ZCBmcmVlICh2b2lkICopOwpjaGFyICogZ2V0ZW52IChjb25zdCBjaGFyICpfX3N0cmluZyk7CmNo YXIgKiBfZ2V0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcpOwpj aGFyICogX2ZpbmRlbnYgKGNvbnN0IGNoYXIgKiwgaW50ICopOwpjaGFyICogX2ZpbmRlbnZfciAo c3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGludCAqKTsKbG9uZyBsYWJzIChsb25nKTsK bGRpdl90IGxkaXYgKGxvbmcgX19udW1lciwgbG9uZyBfX2Rlbm9tKTsKdm9pZCAqIG1hbGxvYyAo c2l6ZV90IF9fc2l6ZSk7CmludCBtYmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX21i bGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIF9tYnN0YXRlX3Qg Kik7CmludCBtYnRvd2MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX21i dG93Y19yIChzdHJ1Y3QgX3JlZW50ICosIHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qs IF9tYnN0YXRlX3QgKik7CmludCB3Y3RvbWIgKGNoYXIgKiwgd2NoYXJfdCk7CmludCBfd2N0b21i X3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCB3Y2hhcl90LCBfbWJzdGF0ZV90ICopOwpzaXpl X3QgbWJzdG93Y3MgKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgX21i c3Rvd2NzX3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVf dCwgX21ic3RhdGVfdCAqKTsKc2l6ZV90IHdjc3RvbWJzIChjaGFyICosIGNvbnN0IHdjaGFyX3Qg Kiwgc2l6ZV90KTsKc2l6ZV90IF93Y3N0b21ic19yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwg Y29uc3Qgd2NoYXJfdCAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CgoKaW50IG1rc3RlbXAgKGNo YXIgKik7CmNoYXIgKiBta3RlbXAgKGNoYXIgKik7CgoKdm9pZCBxc29ydCAodm9pZCAqIF9fYmFz ZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIGludCgqX2NvbXBhcikoY29uc3Qgdm9p ZCAqLCBjb25zdCB2b2lkICopKTsKaW50IHJhbmQgKHZvaWQpOwp2b2lkICogcmVhbGxvYyAodm9p ZCAqIF9fciwgc2l6ZV90IF9fc2l6ZSk7CnZvaWQgc3JhbmQgKHVuc2lnbmVkIF9fc2VlZCk7CmRv dWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUik7CmRvdWJsZSBf c3RydG9kX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9Q VFIpOwoKZmxvYXQgc3RydG9kZiAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsK Cmxvbmcgc3RydG9sIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jh c2UpOwpsb25nIF9zdHJ0b2xfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hh ciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7CnVuc2lnbmVkIGxvbmcgc3RydG91bCAoY29uc3Qg Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBf c3RydG91bF9yIChzdHJ1Y3QgX3JlZW50ICosY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRf UFRSLCBpbnQgX19iYXNlKTsKCmludCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKCgps b25nIGE2NGwgKGNvbnN0IGNoYXIgKl9faW5wdXQpOwpjaGFyICogbDY0YSAobG9uZyBfX2lucHV0 KTsKY2hhciAqIF9sNjRhX3IgKHN0cnVjdCBfcmVlbnQgKixsb25nIF9faW5wdXQpOwppbnQgb25f ZXhpdCAodm9pZCAoKl9fZnVuYykoaW50LCB2b2lkICopLHZvaWQgKiBfX2FyZyk7CnZvaWQgX0V4 aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CmludCBwdXRlbnYg KGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKaW50IF9wdXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBj b25zdCBjaGFyICpfX3N0cmluZyk7CmludCBzZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBj b25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19vdmVyd3JpdGUpOwppbnQgX3NldGVudl9yIChzdHJ1 Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBp bnQgX19vdmVyd3JpdGUpOwoKY2hhciAqIGdjdnQgKGRvdWJsZSxpbnQsY2hhciAqKTsKY2hhciAq IGdjdnRmIChmbG9hdCxpbnQsY2hhciAqKTsKY2hhciAqIGZjdnQgKGRvdWJsZSxpbnQsaW50ICos aW50ICopOwpjaGFyICogZmN2dGYgKGZsb2F0LGludCxpbnQgKixpbnQgKik7CmNoYXIgKiBlY3Z0 IChkb3VibGUsaW50LGludCAqLGludCAqKTsKY2hhciAqIGVjdnRidWYgKGRvdWJsZSwgaW50LCBp bnQqLCBpbnQqLCBjaGFyICopOwpjaGFyICogZmN2dGJ1ZiAoZG91YmxlLCBpbnQsIGludCosIGlu dCosIGNoYXIgKik7CmNoYXIgKiBlY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hhciAq IGR0b2EgKGRvdWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwppbnQgcmFuZF9y ICh1bnNpZ25lZCAqX19zZWVkKTsKCmRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIF9kcmFu ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7CmRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBb M10pOwpkb3VibGUgX2VyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBb M10pOwpsb25nIGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7CmxvbmcgX2pyYW5kNDhfciAo c3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lkIGxjb25nNDggKHVuc2ln bmVkIHNob3J0IFs3XSk7CnZvaWQgX2xjb25nNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25l ZCBzaG9ydCBbN10pOwpsb25nIGxyYW5kNDggKHZvaWQpOwpsb25nIF9scmFuZDQ4X3IgKHN0cnVj dCBfcmVlbnQgKik7CmxvbmcgbXJhbmQ0OCAodm9pZCk7CmxvbmcgX21yYW5kNDhfciAoc3RydWN0 IF9yZWVudCAqKTsKbG9uZyBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIF9ucmFu ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsKdW5zaWduZWQgc2hv cnQgKgogICAgICAgc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNpZ25lZCBzaG9ydCAq CiAgICAgICBfc2VlZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsK dm9pZCBzcmFuZDQ4IChsb25nKTsKdm9pZCBfc3JhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIGxv bmcpOwpsb25nIGxvbmcgc3RydG9sbCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRS LCBpbnQgX19iYXNlKTsKbG9uZyBsb25nIF9zdHJ0b2xsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u c3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9u ZyBsb25nIHN0cnRvdWxsIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBf X2Jhc2UpOwp1bnNpZ25lZCBsb25nIGxvbmcgX3N0cnRvdWxsX3IgKHN0cnVjdCBfcmVlbnQgKiwg Y29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKCgp2b2lkIGNm cmVlICh2b2lkICopOwpjaGFyICogX2R0b2FfciAoc3RydWN0IF9yZWVudCAqLCBkb3VibGUsIGlu dCwgaW50LCBpbnQgKiwgaW50KiwgY2hhcioqKTsKCnZvaWQgKiBfbWFsbG9jX3IgKHN0cnVjdCBf cmVlbnQgKiwgc2l6ZV90KTsKdm9pZCAqIF9jYWxsb2NfciAoc3RydWN0IF9yZWVudCAqLCBzaXpl X3QsIHNpemVfdCk7CnZvaWQgX2ZyZWVfciAoc3RydWN0IF9yZWVudCAqLCB2b2lkICopOwp2b2lk ICogX3JlYWxsb2NfciAoc3RydWN0IF9yZWVudCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgX21z dGF0c19yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CgppbnQgX3N5c3RlbV9yIChzdHJ1Y3Qg X3JlZW50ICosIGNvbnN0IGNoYXIgKik7Cgp2b2lkIF9fZXByaW50ZiAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICosIHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgp1bmlvbiBf X2RtYXRoCnsKICBfX1VMb25nIGlbMl07CiAgZG91YmxlIGQ7Cn07CgoKCgpleHRlcm4gY29uc3Qg dW5pb24gX19kbWF0aCBfX2luZmluaXR5W107CmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlKTsK ZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2luIChkb3VibGUpOwpl eHRlcm4gZG91YmxlIHRhbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUpOwpl eHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUsIGludCAqKTsKZXh0ZXJuIGRvdWJsZSBtb2RmIChk b3VibGUsIGRvdWJsZSAqKTsKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUpOwpleHRlcm4gZG91 YmxlIGZhYnMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSk7CgoKCgoKCmV4 dGVybiBkb3VibGUgYWNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUpOwpl eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29zaCAo ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGV4cCAo ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlLCBpbnQpOwpleHRlcm4gZG91Ymxl IGxvZyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBwb3cgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUpOwpleHRl cm4gZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91YmxlKTsKdHlwZWRlZiBmbG9hdCBmbG9hdF90Owp0 eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9hdCB4 KTsKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlkIChkb3VibGUgeCk7CmV4dGVybiBkb3VibGUgaW5m aW5pdHkgKHZvaWQpOwpleHRlcm4gZG91YmxlIG5hbiAodm9pZCk7CmV4dGVybiBpbnQgaXNuYW4g KGRvdWJsZSk7CmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSk7CmV4dGVybiBpbnQgZmluaXRlIChk b3VibGUpOwpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBp bnQgaWxvZ2IgKGRvdWJsZSk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUpOwpleHRlcm4g ZG91YmxlIGNicnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUsIGRv dWJsZSk7CmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYm4g KGRvdWJsZSwgaW50KTsKCmV4dGVybiBkb3VibGUgZXhwMiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBzY2FsYmxuIChkb3VibGUsIGxvbmcgaW50KTsKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRvdWJs ZSk7CmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUpOwpleHRlcm4gbG9uZyBpbnQgbHJp bnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSk7CmV4dGVybiBsb25nIGlu dCBscm91bmQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSk7CmV4dGVybiBk b3VibGUgcmVtcXVvIChkb3VibGUsIGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGNvcHlz aWduIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlLCBkb3VibGUp OwpleHRlcm4gZG91YmxlIGZtYXggKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbWlu IChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1hIChkb3VibGUsIGRvdWJsZSwgZG91 YmxlKTsKZXh0ZXJuIHZvaWQgc2luY29zIChkb3VibGUsIGRvdWJsZSAqLCBkb3VibGUgKik7CgoK ZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91Ymxl KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuaCAo ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJu IGRvdWJsZSBnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBnYW1tYV9yIChkb3VibGUsIGlu dCAqKTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbGdhbW1h X3IgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKTsKZXh0ZXJuIGRv dWJsZSBlcmZjIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpOwpleHRlcm4gZG91 YmxlIHkxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSk7CmV4dGVybiBk b3VibGUgajAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgam4gKGludCwgZG91YmxlKTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlLCBkb3Vi bGUpOwoKCmV4dGVybiBkb3VibGUgY2FicygpOwpleHRlcm4gZG91YmxlIGRyZW0gKGRvdWJsZSwg ZG91YmxlKTsKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCBjb3NmIChm bG9hdCk7CmV4dGVybiBmbG9hdCBzaW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCB0YW5mIChmbG9h dCk7CmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9h dCwgaW50ICopOwpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0LCBmbG9hdCAqKTsKZXh0ZXJuIGZs b2F0IGNlaWxmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQpOwpleHRlcm4gZmxv YXQgZmxvb3JmIChmbG9hdCk7CgoKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCk7CmV4dGVybiBm bG9hdCBhc2luZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCwgZmxvYXQpOwpl eHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCk7CmV4 dGVybiBmbG9hdCBleHBmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0LCBpbnQp OwpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCk7 CmV4dGVybiBmbG9hdCBwb3dmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgc3FydGYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZXhw MmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCwgbG9uZyBpbnQpOwpleHRl cm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQp OwpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByb3VuZGYgKGZs b2F0KTsKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRydW5j ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgcmVtcXVvZiAoZmxvYXQsIGZsb2F0LCBpbnQgKik7CmV4 dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBmZGltZiAo ZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZtYXhmIChmbG9hdCwgZmxvYXQpOwpleHRlcm4g ZmxvYXQgZm1pbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCwgZmxv YXQsIGZsb2F0KTsKCmV4dGVybiBmbG9hdCBpbmZpbml0eWYgKHZvaWQpOwpleHRlcm4gZmxvYXQg bmFuZiAodm9pZCk7CmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCk7CmV4dGVybiBpbnQgaXNpbmZm IChmbG9hdCk7CmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgY29weXNp Z25mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gaW50IGlsb2diZiAoZmxvYXQpOwoKZXh0ZXJuIGZs b2F0IGFzaW5oZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0KTsKZXh0ZXJuIGZs b2F0IG5leHRhZnRlcmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQp OwpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQsIGludCk7CmV4dGVybiBmbG9hdCBsb2cxcGYg KGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQpOwpleHRlcm4gdm9pZCBzaW5jb3Nm IChmbG9hdCwgZmxvYXQgKiwgZmxvYXQgKik7CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQp OwpleHRlcm4gZmxvYXQgYXRhbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChm bG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBn YW1tYWZfciAoZmxvYXQsIGludCAqKTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KTsKZXh0 ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqKTsKZXh0ZXJuIGZsb2F0IGVyZmYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0 KTsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0 KTsKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCk7CmV4 dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQs IGZsb2F0KTsKCmV4dGVybiBmbG9hdCBjYWJzZigpOwpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0 LCBmbG9hdCk7CgoKCgoKCmV4dGVybiBpbnQgKl9fc2lnbmdhbSAodm9pZCk7CnN0cnVjdCBleGNl cHRpb24KCnsKICBpbnQgdHlwZTsKICBjaGFyICpuYW1lOwogIGRvdWJsZSBhcmcxOwogIGRvdWJs ZSBhcmcyOwogIGRvdWJsZSByZXR2YWw7CiAgaW50IGVycjsKfTsKCgoKCmV4dGVybiBpbnQgbWF0 aGVyciAoc3RydWN0IGV4Y2VwdGlvbiAqZSk7CmVudW0gX19mZGxpYm1fdmVyc2lvbgp7CiAgX19m ZGxpYm1faWVlZSA9IC0xLAogIF9fZmRsaWJtX3N2aWQsCiAgX19mZGxpYm1feG9wZW4sCiAgX19m ZGxpYm1fcG9zaXgKfTsKCgoKCmV4dGVybiBjb25zdCBlbnVtIF9fZmRsaWJtX3ZlcnNpb24gX19m ZGxpYl92ZXJzaW9uOwoKCgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsK ICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFy OwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKfTsKCmNsb2Nr X3QgY2xvY2sgKHZvaWQpOwpkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfdGltZTIsIHRpbWVfdCBf dGltZTEpOwp0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl90aW1lcHRyKTsKdGltZV90IHRpbWUg KHRpbWVfdCAqX3RpbWVyKTsKCmNoYXIgKmFzY3RpbWUgKGNvbnN0IHN0cnVjdCB0bSAqX3RibG9j ayk7CmNoYXIgKmN0aW1lIChjb25zdCB0aW1lX3QgKl90aW1lKTsKc3RydWN0IHRtICpnbXRpbWUg KGNvbnN0IHRpbWVfdCAqX3RpbWVyKTsKc3RydWN0IHRtICpsb2NhbHRpbWUgKGNvbnN0IHRpbWVf dCAqX3RpbWVyKTsKCnNpemVfdCBzdHJmdGltZSAoY2hhciAqX3MsIHNpemVfdCBfbWF4c2l6ZSwg Y29uc3QgY2hhciAqX2ZtdCwgY29uc3Qgc3RydWN0IHRtICpfdCk7CgpjaGFyICphc2N0aW1lX3Ig KGNvbnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwpjaGFyICpjdGltZV9yIChjb25zdCB0aW1lX3Qg KiwgY2hhciAqKTsKc3RydWN0IHRtICpnbXRpbWVfciAoY29uc3QgdGltZV90ICosIHN0cnVjdCB0 bSAqKTsKc3RydWN0IHRtICpsb2NhbHRpbWVfciAoY29uc3QgdGltZV90ICosIHN0cnVjdCB0bSAq KTsKCgoKCgoKCgpjaGFyICpzdHJwdGltZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0 cnVjdCB0bSAqKTsKdm9pZCB0enNldCAodm9pZCk7CnZvaWQgX3R6c2V0X3IgKHN0cnVjdCBfcmVl bnQgKik7CmV4dGVybiB0aW1lX3QgX3RpbWV6b25lOwpleHRlcm4gaW50IF9kYXlsaWdodDsKZXh0 ZXJuIGNoYXIgKl90em5hbWVbMl07CnN0cnVjdCB0aW1ldmFsIHsKICBsb25nIHR2X3NlYzsKICBs b25nIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdGltZXpvbmUgewogIGludCB0el9taW51dGVzd2VzdDsK ICBpbnQgdHpfZHN0dGltZTsKfTsKc3RydWN0IGl0aW1lcnZhbCB7CiAgc3RydWN0IHRpbWV2YWwg aXRfaW50ZXJ2YWw7CiAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CmludCBnZXR0aW1lb2Zk YXkgKHN0cnVjdCB0aW1ldmFsICpfX3AsIHN0cnVjdCB0aW1lem9uZSAqX196KTsKaW50IHNldHRp bWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgY29uc3Qgc3RydWN0IHRpbWV6b25lICop OwppbnQgdXRpbWVzIChjb25zdCBjaGFyICpfX3BhdGgsIHN0cnVjdCB0aW1ldmFsICpfX3R2cCk7 CmludCBnZXRpdGltZXIgKGludCBfX3doaWNoLCBzdHJ1Y3QgaXRpbWVydmFsICpfX3ZhbHVlKTsK aW50IHNldGl0aW1lciAoaW50IF9fd2hpY2gsIGNvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFs dWUsIHN0cnVjdCBpdGltZXJ2YWwgKl9fb3ZhbHVlKTsKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50 IGFoaSwKICAgICAgICAgICAgYWxvLAogICAgICAgICAgICBkeCwKICAgICAgICAgICAgZmxoLAog ICAgICAgICAgICBmbGwsCiAgICAgICAgICAgIGZyaCwKICAgICAgICAgICAgZnJsLAogICAgICAg ICAgICB4bCwKICAgICAgICAgICAgeHI7CiAgICB9UkVDVDsKCnR5cGVkZWYgc3RydWN0IHsKICAg IGRvdWJsZSB0LAogICAgICAgICAgICBxcCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVscTsK ICAgIGludCBuOwogICAgICAgIGludCBsYXBzOwogICAgfVNwZWVkOwoKdHlwZWRlZiBpbnQgRVJS T1I7CgoKCgoKI3ByYWdtYSBtaXBzX2ZyZXF1ZW5jeV9oaW50IEZSRVFVRU5UIFdoZW4KZG91Ymxl IFdoZW4oKTsKCmRvdWJsZQpSdW4oaW50IGxhcHMsCiAgICBpbnQgKmdhbXV0LCBpbnQgc2N4LCBp bnQgc2N5LCBpbnQgZG1heCwgaW50IG1lbXJ5LCBFUlJPUiAqZWZsYWcpOwppbnQKSGludChpbnQg KnNjeCwgaW50ICpzY3ksIGludCAqZG1heCwgaW50ICptY250LCBSRUNUICpyZWN0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgKmVycnMsIGludCAqaXhlcywgRVJST1IgKmVmbGFnKTsK I3ByYWdtYSBtaXBzX2ZyZXF1ZW5jeV9oaW50IEZSRVFVRU5UIEhpbnQKCgoKCnZvaWQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBGSUxFICpjdXJ2OwogICAgY2hhciBmaWxubVs4 MF07CgogICAgU3BlZWQgcWRhdGFbMjAwXTsKCiAgICBFUlJPUiBlZmxhZzsKCiAgICBpbnQgaW1h eCwKICAgICAgICAgICAgaXRtLAogICAgICAgICAgICBuLAogICAgICAgICAgICBuc2NvdXQ7Cgog ICAgICAgIHZvbGF0aWxlCiAgICAgICAgaW50IGl0bTI7CgogICAgdm9sYXRpbGUKICAgIGludCB0 bTE7CgogICAgaW50IGRtYXgsCiAgICAgICAgICAgIGdhbXV0LAogICAgICAgICAgICBzY3gsCiAg ICAgICAgICAgIHNjeSwKICAgICAgICAgICAgdG0sIHRtMjsKCiAgICAgICAgZG91YmxlIG1lbXJl ZiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHd0OwoKICAgIGRvdWJsZSBkZWxxLAogICAg ICAgICAgICAgICAgICAgICAgICBxdWlwcywKICAgICAgICAgICAgcXBuZXQsCiAgICAgICAgICAg IHFwZWFrLAogICAgICAgICAgICBxcHJhdCwKICAgICAgICAgICAgICAgICAgICAgICAgcXB0bXAs CiAgICAgICAgICAgIHQsCiAgICAgICAgICAgIHQwLAogICAgICAgICAgICB0MSwKICAgICAgICAg ICAgdGRlbHRhLAoKICAgICAgICAgICAgdHNjb3V0OwoKICAgIGludCBkYml0cywKICAgICAgICAg ICAgaWJpdHMsCiAgICAgICAgICAgIGksIGosIGssCiAgICAgICAgICAgIGxhcHMsCiAgICAgICAg ICAgIG1lbXVzZTsKCiAgICBwcmludGYoIiAgICAgICAgIF8gICAgX1xuIik7CiAgICBwcmludGYo IiAgICAgICAgIHwgICAgfCAgXyBfICAgXyBfX19fXyBUTVxuIik7CiAgICBwcmludGYoIiAgICAg ICAgIHwtLSAgfCAgfCB8XFwgIHwgfCB8IHxcbiIpOwogICAgcHJpbnRmKCIgICAgICAgICB8ICAt LXwgIHwgfCBcXCB8ICAgfFxuIik7CiAgICBwcmludGYoIiAgICAgICAgIHwgICAgfCAgfCB8ICBc XHwgICB8XG4iKTsKICAgIHByaW50ZigiICAgICAgICAgXiAgICBeICBeIF4gICBeICAgXlxuXG4i KTsKICAgIHByaW50ZigiKioqIFRoZSAgSElOVCAgUEVSRk9STUFOQ0UgQU5BTFlaRVIgKioqXG4i KTsKICAgIHByaW50ZigiICAgICAgICBWZXJzaW9uIDEuMCAgSnVuZSAxOTk0XG4iKTsKICAgIHBy aW50ZigiICAgSm9obiBMLiBHdXN0YWZzb24gJiBRdWlubiBPLiBTbmVsbFxuIik7CiAgICBwcmlu dGYoIiAgICAgU2NhbGFibGUgQ29tcHV0aW5nIExhYm9yYXRvcnlcbiIpOwogICAgcHJpbnRmKCIg ICAyMzYgV2lsaGVsbSwgSW93YSBTdGF0ZSBVbml2ZXJzaXR5XG4iKTsKICAgIHByaW50ZigiICAg ICAgICBBbWVzLCBJb3dhICAgIDUwMDExLTMwMjBcbiIpOwogICAgcHJpbnRmKCIgICAgICAgICAg ICAoNTE1KSAyOTQgLSA5Mjk0XG5cbiIpOwogICAgcHJpbnRmKCJDb3B5cmlnaHQgKEMpIDE5OTQi KTsKICAgIHByaW50ZigiIElvd2EgU3RhdGUgVW5pdmVyc2l0eSBSZXNlYXJjaCBGb3VuZGF0aW9u LCBJbmMuXG4iKTsKICAgIHByaW50ZigiUGxlYXNlIHNlbmQgcmVzdWx0cyBhbmQgcXVlc3Rpb25z IHRvOiAgIGhpbnRAc2NsLmFtZXNsYWIuZ292XG4iKTsKICAgIHByaW50ZigiV2hlbiBzZW5kaW5n IHJlc3VsdHMgcGxlYXNlIGZvbGxvdyB0aGUgZm9ybSBpbiBSRUFETUVcbiIpOwogICAgcHJpbnRm KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X1xuIik7CiAgICAgICAgcHJpbnRmKCJSRUNUIGlzICVkIGJ5dGVzXG4iLHNpemVvZihSRUNUKSk7 CgoKCgogICAgc3ByaW50ZihmaWxubSwiZGF0YS8lcyIsYXJndlswXSk7CiAgICBpZiAoKGN1cnYg PSBmb3BlbihmaWxubSwgInciKSkgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgICAgcHJpbnRm KCJDb3VsZCBub3Qgb3BlbiBkYXRhIGZpbGVcbiIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CgoK CiAgICBmb3IgKHQwID0gV2hlbigpOyAoKHQxID0gV2hlbigpKSA9PSB0MCk7KTsKICAgIHRkZWx0 YSA9IHQxIC0gdDA7CgoKICAgIGRiaXRzID0gMDsKICAgIHRtID0gKGludCkxOwogICAgdG0yID0g dG0gKyB0bTsKICAgIHRtMSA9IHRtMiArIDE7CgogICAgd2hpbGUgKCgodG0xIC0gdG0yKSA9PSAo aW50KTEpICYmICh0bTIgPiAoaW50KTApKQogICAgewogICAgICAgIGRiaXRzKys7CiAgICAgICAg dG0gKz0gdG07CiAgICAgICAgdG0yICs9IHRtMjsKICAgICAgICB0bTEgPSB0bTIgKyAxOwogICAg fQogICAgZGJpdHMrKzsKCiAgICBkbWF4ID0gdG0gKyAodG0gLSAxKTsKICAgIHByaW50ZigiQXBw YXJlbnQgbnVtYmVyIG9mIGJpdHMgb2YgYWNjdXJhY3k6ICVkXG4iLCBkYml0cyk7CiAgICBwcmlu dGYoIk1heGltdW0gYXNzb2NpYXRpdmUgd2hvbGUgbnVtYmVyOiAgICAlLjBsZlxuIiwoZG91Ymxl KWRtYXgpOwoKCiAgICBpYml0cyA9IDA7CiAgICBpdG0gPSAoaW50KTE7CiAgICBpdG0yID0gaXRt ICsgaXRtOwoKICAgIHdoaWxlIChpdG0yID4gKGludCkwKQogICAgewogICAgICAgIGliaXRzKys7 CiAgICAgICAgaXRtICs9IGl0bTsKICAgICAgICBpdG0yICs9IGl0bTI7CiAgICB9CiAgICBpbWF4 ID0gaXRtOwogICAgcHJpbnRmKCJNYXhpbXVtIG51bWJlciBvZiBiaXRzIG9mIGluZGV4OiAgICAg JWRcbiIsIGliaXRzKTsKICAgIHByaW50ZigiTWF4aW11bSByZXByZXNlbnRhYmxlIGluZGV4OiAg ICAgICAgICUuMGxmXG5cbiIsIChkb3VibGUpaW1heCk7CgoKICAgIGlmICgoaWJpdHMgKyBpYml0 cykgPCBkYml0cykKICAgIHsKICAgICAgICBkbWF4ID0gKGludClpbWF4ICogKGludClpbWF4IC0g MTsKICAgICAgICBkYml0cyA9IGliaXRzICsgaWJpdHM7CiAgICB9CiAgICBwcmludGYoIkluZGV4 LWxpbWl0ZWQgZGF0YSBhY2N1cmFjeTogICAgICAgICAlZCBiaXRzXG4iLCBkYml0cyk7CiAgICBw cmludGYoIk1heGltdW0gdXNhYmxlIHdob2xlIG51bWJlcjogICAgICAgICAlLjBsZlxuIiwoZG91 YmxlKWRtYXgpOwoKCiAgICBqID0gKGRiaXRzKS8yOwoKCiAgICBmb3IgKGkgPSAwLCBzY3ggPSAx OyBpIDwgajsgc2N4ICs9IHNjeCwgaSsrKTsKICAgIGZvciAoaSA9IDAsIHNjeSA9IDE7IGkgPCBk Yml0cyAtIGo7IHNjeSArPSBzY3ksIGkrKyk7CiAgICBwcmludGYoIkdyaWQ6ICUuMGxmIHdpZGUg YnkgJS4wbGYgaGlnaC5cbiIsKGRvdWJsZSlzY3gsKGRvdWJsZSlzY3kpOwoKCgogICAgZm9yIChu c2NvdXQgPSAyLCBsYXBzID0gMzsgbnNjb3V0IDwgc2N4OyApCiAgICB7CiAgICAgICAgdCA9IFJ1 bihsYXBzLCAmZ2FtdXQsIHNjeCwgc2N5LCBkbWF4LCBuc2NvdXQsICZlZmxhZyk7CgogICAgICAg IGlmIChlZmxhZyAhPSAwKQogICAgICAgIHsKICAgICAgICAgICAgbnNjb3V0IC89IDI7CiAgICAg ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgodCA+IDEuMCkgJiYgKGVm bGFnID09IDApKQogICAgICAgIHsKICAgICAgICAgICAgdHNjb3V0ID0gdDsKICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHRzY291 dCA9IHQ7CiAgICAgICAgICAgIG5zY291dCAqPSAyOwogICAgICAgICAgICBpZiAobnNjb3V0ID4g c2N4KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuc2NvdXQgLz0gMjsKICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKHRzY291 dCA9PSAwKQogICAgewogICAgICAgIHByaW50ZiggIkRhdGEgdHlwZSBmb3IgJXMgaXMgdG9vIHNt YWxsXG4iLCBhcmd2WzBdKTsKICAgICAgICBleGl0KDApOwogICAgfQogICAgaWYgKCh0c2NvdXQg PCAxLjApICYmIChlZmxhZyA9PSAyKSkKICAgICAgIHByaW50ZigiTWVtb3J5IGlzIG5vdCBzdWZm aWNpZW50IGZvciA+ICUzLjFsZiBzZWNvbmQgcnVucy5cbiIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjAp OwogICAgZWxzZSBpZiAodHNjb3V0IDwgMS4wKQogICAgICAgcHJpbnRmKCJQcmVjaXNpb24gaXMg bm90IHN1ZmZpY2llbnQgZm9yID4gJTMuMWxmIHNlY29uZCBydW5zLlxuIiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEuMCk7CgoKCiAgICBmb3IgKHQgPSAwLCBpID0gMCwgbiA9IDIsIHFwZWFrID0gMCwgcXBy YXQgPSAxOwogICAgICAgICgoaSA8IDIwMCkgJiYgKHQgPCAxMDApICYmIChuIDwgc2N4KSAmJiAo cXByYXQgPiAwLjEpKTsKICAgICAgICBpKyssIG4gPSAoKGludCkobiAqIDEuMjU4OSkgPiBuKT8g KG4gKiAxLjI1ODkpIDogbiArIDEpCiAgICB7CiAgICAgICAgcHJpbnRmKCIuIik7CiAgICAgICAg ZmZsdXNoKChfaW1wdXJlX3B0ci0+X3N0ZG91dCkpOwoKCiAgICAgICAgbGFwcyA9ICgoKDEuMCAq IG5zY291dCAvICh0c2NvdXQgKiBuKSkgPiAoMSkpPyAoMS4wICogbnNjb3V0IC8gKHRzY291dCAq IG4pKTogKDEpKTsKICAgICAgICB0ID0gUnVuKGxhcHMsICZnYW11dCwgc2N4LCBzY3ksIGRtYXgs IG4sICZlZmxhZyk7CiAgICAgICAgaWYgKHQgPT0gMCkKICAgICAgICAgICAgdCA9IHRkZWx0YTsK CiAgICAgICAgaWYgKGVmbGFnICE9IDApCiAgICAgICAgICAgIGJyZWFrOwoKCgogICAgICAgICAg ICAgICAgZGVscSA9IChkb3VibGUpZG1heCAvIGdhbXV0IC0gMTsKICAgICAgICBxdWlwcyA9IGRl bHEgLyB0ICsgMS4wIC8gZ2FtdXQgLyB0OwogICAgICAgIHFkYXRhW2ldLnQgPSB0OwogICAgICAg IHFkYXRhW2ldLnFwID0gcXVpcHM7CiAgICAgICAgcWRhdGFbaV0uZGVscSA9IGRlbHE7CiAgICAg ICAgcWRhdGFbaV0ubiA9IG47CiAgICAgICAgcXBlYWsgPSAoKChxcGVhaykgPiAocXVpcHMpKT8g KHFwZWFrKTogKHF1aXBzKSk7CiAgICAgICAgcXByYXQgPSBxdWlwcyAvIHFwZWFrOwogICAgfQog ICAgbWVtdXNlID0gKGludCkocWRhdGFbaS0xXS5uICogKHNpemVvZihSRUNUKStzaXplb2YoaW50 KStzaXplb2YoaW50KSkpOwogICAgaWYgKChxcHJhdCA+IDAuMSkgJiYgKGVmbGFnID09IDIpKQog ICAgICAgIHByaW50ZigiXG5UaGlzIHJ1biB3YXMgbWVtb3J5IGxpbWl0ZWQgYXQgJWQgc3ViaW50 ZXJ2YWxzIC0+ICVkIGJ5dGVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbiwgbWVtdXNlKTsKICAgIHByaW50ZigiXG5Eb25lIHdpdGggZmlyc3Qg cGFzcy4gTm93IGNvbXB1dGluZyBuZXQgUVVJUFNcbiIpOwoKICAgICAgICBtZW1yZWYgPSAoOTAg KiBzaXplb2YoaW50KSArIDEwICogc2l6ZW9mKGludCkpICogcWRhdGFbaS0xXS5uOwogICAgICAg IG1lbXJlZiAvPSAoMTAyNCAqIDEwMjQpOwogICAgICAgIGJhbmR3dCA9IG1lbXJlZiAvIHFkYXRh W2ktMV0udDsKICAgIGZwcmludGYoY3VydiwiJTEyLjEwbGYgJWxmICVsZiAlbGYgJTEwZCAlbGZc biIsCiAgICAgICAgICAgIHFkYXRhW2ktMV0udCwgcWRhdGFbaS0xXS5xcCwgcWRhdGFbaS0xXS5k ZWxxLAogICAgICAgICAgICAoZG91YmxlKXFkYXRhW2ktMV0ubiwgbWVtdXNlLCBiYW5kd3QpOwoK CiAgICBmb3IgKHFwbmV0ID0gcWRhdGFbaS0xXS5xcCwgaiA9IGkgLSAyOyBqID49IDA7IGotLSkK ICAgIHsKCiAgICAgICAgZm9yIChrID0gMDsgKChxZGF0YVtqKzFdLnQgPCBxZGF0YVtqXS50KSAm JiAoayA8IDcpKTsgaysrKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIjIik7CiAgICAg ICAgICAgIGxhcHMgPSAoKCgxLjAgKiBuc2NvdXQgLyAodHNjb3V0ICogcWRhdGFbal0ubikpID4g KDEpKT8gKDEuMCAqIG5zY291dCAvICh0c2NvdXQgKiBxZGF0YVtqXS5uKSk6ICgxKSk7CiAgICAg ICAgICAgIHQgPSBSdW4obGFwcywgJmdhbXV0LCBzY3gsIHNjeSwgZG1heCwgcWRhdGFbal0ubiwg JmVmbGFnKTsKICAgICAgICAgICAgaWYgKHQgPT0gMCkKICAgICAgICAgICAgICAgIHQgPSB0ZGVs dGE7CgogICAgICAgICAgICBkZWxxID0gKGRvdWJsZSlkbWF4IC8gZ2FtdXQgLSAxOwogICAgICAg ICAgICBxdWlwcyA9IGRlbHEgLyB0ICsgMS4wIC8gZ2FtdXQgLyB0OwogICAgICAgICAgICBxZGF0 YVtqXS50ID0gdDsKICAgICAgICAgICAgcWRhdGFbal0ucXAgPSBxdWlwczsKICAgICAgICB9CiAg ICAgICAgaWYgKHFkYXRhW2orMV0udCA8IHFkYXRhW2pdLnQpCiAgICAgICAgewogICAgICAgICAg ICBwcmludGYoIiBGb3JjaW5nIGEgdGltZSBmb3IgJWQgc3ViaW50ZXJ2YWxzXG4iLCBxZGF0YVtq XS5uKTsKICAgICAgICAgICAgcWRhdGFbal0udCA9IHFkYXRhW2orMV0udDsKICAgICAgICAgICAg ICAgICAgICAgICAgZGVscSA9IChkb3VibGUpZG1heCAvIGdhbXV0IC0gMTsKICAgICAgICAgICAg cWRhdGFbal0ucXAgPSBkZWxxIC8gcWRhdGFbal0udCArIDEuMCAvIGdhbXV0IC8gcWRhdGFbal0u dDsKICAgICAgICB9CiAgICAgICAgbWVtdXNlID0gKGludCkocWRhdGFbal0ubiAqIChzaXplb2Yo UkVDVCkrc2l6ZW9mKGludCkrc2l6ZW9mKGludCkpKTsKICAgICAgICAgICAgICAgIG1lbXJlZiA9 ICg5MCAqIHNpemVvZihpbnQpICsgMTAgKiBzaXplb2YoaW50KSkgKiBxZGF0YVtqXS5uOwogICAg ICAgICAgICAgICAgbWVtcmVmIC89ICgxMDI0ICogMTAyNCk7CiAgICAgICAgICAgICAgICBiYW5k d3QgPSBtZW1yZWYgLyBxZGF0YVtqXS50OwogICAgICAgIGZwcmludGYoY3VydiwiJTEyLjEwbGYg JWxmICVsZiAlbGYgJTEwZCAlbGZcbiIsCiAgICAgICAgICAgICAgICBxZGF0YVtqXS50LCBxZGF0 YVtqXS5xcCwgcWRhdGFbal0uZGVscSwKICAgICAgICAgICAgICAgIChkb3VibGUpcWRhdGFbal0u biwgbWVtdXNlLCBiYW5kd3QpOwoKCgogICAgICAgIHFwdG1wID0gcWRhdGFbal0ucXAgKiBxZGF0 YVtqXS50IC8gcWRhdGFbaisxXS50OwogICAgICAgIHFwbmV0ICs9IChxZGF0YVtqXS5xcCAtIHFw dG1wKTsKICAgIH0KICAgIHByaW50ZigiXG5GaW5pc2hlZCB3aXRoICVsZiBuZXQgUVVJUHNcbiIs IHFwbmV0KTsKICAgIGZjbG9zZShjdXJ2KTsKfQoKCgpkb3VibGUKUnVuKGludCBsYXBzLAogICAg aW50ICpnYW11dCwgaW50IHNjeCwgaW50IHNjeSwgaW50IGRtYXgsIGludCBtZW1yeSwgRVJST1Ig KmVmbGFnKQp7CiAgICBSRUNUICpyZWN0PSgodm9pZCAqKTApOwogICAgaW50ICppeGVzPSgodm9p ZCAqKTApOwogICAgaW50ICplcnJzPSgodm9pZCAqKTApOwoKICAgIGludCBpLCBqOwoKICAgIGRv dWJsZSB0MCwgdDEsIHRtLAogICAgICAgICAgICBtaW50ID0gMWUzMjsKCiAgICAqZWZsYWcgPSAw OwoKCiAgICByZWN0ID0gKFJFQ1QgKiltYWxsb2MoKGludCkobWVtcnkgKiBzaXplb2YoUkVDVCkp KTsKICAgIGVycnMgPSAoaW50ICopbWFsbG9jKChpbnQpKG1lbXJ5ICogc2l6ZW9mKGludCkgKiAy KSk7CiAgICBpeGVzID0gKGludCAqKW1hbGxvYygoaW50KShtZW1yeSAqIHNpemVvZihpbnQpICog MikpOwoKCiAgICBpZiAoKHJlY3QgPT0gKCh2b2lkICopMCkpIHx8IChlcnJzID09ICgodm9pZCAq KTApKSB8fCAoaXhlcyA9PSAoKHZvaWQgKikwKSkpCiAgICB7CiAgICAgICAgaWYgKHJlY3QgIT0g KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUocmVjdCk7CiAgICAgICAgaWYgKGVycnMgIT0g KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUoZXJycyk7CiAgICAgICAgaWYgKGl4ZXMgIT0g KCh2b2lkICopMCkpCiAgICAgICAgICAgIGZyZWUoaXhlcyk7CiAgICAgICAgKmVmbGFnID0gMjsK ICAgICAgICByZXR1cm4gKC0yKTsKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQog ICAgewogICAgICAgIHQwID0gV2hlbigpOwoKCiAgICAgICAgZm9yIChqID0gMDsgaiA8IGxhcHM7 IGorKykKICAgICAgICAgICAgKmdhbXV0ID0gSGludCgmc2N4LCAmc2N5LCAmZG1heCwgJm1lbXJ5 LCByZWN0LCBlcnJzLCBpeGVzLCBlZmxhZyk7CgogICAgICAgIHQxID0gV2hlbigpOwoKCiAgICAg ICAgdG0gPSAodDEgLSB0MCkgLyBsYXBzOwogICAgICAgIG1pbnQgPSAoKChtaW50KSA+ICh0bSkp PyAodG0pOiAobWludCkpOwogICAgfQoKCiAgICBmcmVlKHJlY3QpOwogICAgZnJlZShlcnJzKTsK ICAgIGZyZWUoaXhlcyk7CgogICAgcmV0dXJuIChtaW50KTsKfQoKCmRvdWJsZQpXaGVuKCkKewog ICAgc3RydWN0IHRpbWV2YWwgdHA7CiAgICBnZXR0aW1lb2ZkYXkoJnRwLCAoKHZvaWQgKikwKSk7 CiAgICByZXR1cm4gKChkb3VibGUpIHRwLnR2X3NlYyArIChkb3VibGUpIHRwLnR2X3VzZWMgKiAx ZS02KTsKfQp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CnR5cGVkZWYgX19idWlsdGluX3Zh X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CnR5cGVkZWYgbG9uZyBfb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18g dHlwZWRlZiBsb25nIGxvbmcgX29mZjY0X3Q7CgoKdHlwZWRlZiBpbnQgX3NzaXplX3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50Owog IHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgdW5zaWduZWQgY2hhciBfX3djaGJbNF07 CiAgfSBfX3ZhbHVlOwp9IF9tYnN0YXRlX3Q7Cgp0eXBlZGVmIGludCBfZmxvY2tfdDsKCgoKCgoK dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fVUxvbmc7CnN0cnVjdCBfQmlnaW50CnsKICBzdHJ1Y3Qg X0JpZ2ludCAqX25leHQ7CiAgaW50IF9rLCBfbWF4d2RzLCBfc2lnbiwgX3dkczsKICBfX1VMb25n IF94WzFdOwp9OwoKCnN0cnVjdCBfX3RtCnsKICBpbnQgX190bV9zZWM7CiAgaW50IF9fdG1fbWlu OwogIGludCBfX3RtX2hvdXI7CiAgaW50IF9fdG1fbWRheTsKICBpbnQgX190bV9tb247CiAgaW50 IF9fdG1feWVhcjsKICBpbnQgX190bV93ZGF5OwogIGludCBfX3RtX3lkYXk7CiAgaW50IF9fdG1f aXNkc3Q7Cn07CnN0cnVjdCBfYXRleGl0IHsKICAgICAgICBzdHJ1Y3QgX2F0ZXhpdCAqX25leHQ7 CiAgICAgICAgaW50IF9pbmQ7CiAgICAgICAgdm9pZCAoKl9mbnNbMzJdKSh2b2lkKTsKICAgICAg ICB2b2lkICpfZm5hcmdzWzMyXTsKICAgICAgICBfX1VMb25nIF9mbnR5cGVzOwp9OwpzdHJ1Y3Qg X19zYnVmIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfYmFzZTsKICAgICAgICBpbnQgX3NpemU7 Cn07CgoKCgoKCnR5cGVkZWYgbG9uZyBfZnBvc190OwpzdHJ1Y3QgX19zRklMRSB7CiAgdW5zaWdu ZWQgY2hhciAqX3A7CiAgaW50IF9yOwogIGludCBfdzsKICBzaG9ydCBfZmxhZ3M7CiAgc2hvcnQg X2ZpbGU7CiAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgaW50IF9sYmZzaXplOwoKCgoKCgogIHZvaWQg KiBfY29va2llOwoKICBpbnQgKCpfcmVhZCkgKHZvaWQgKiBfY29va2llLCBjaGFyICpfYnVmLCBp bnQgX24pOwogIGludCAoKl93cml0ZSkgKHZvaWQgKiBfY29va2llLCBjb25zdCBjaGFyICpfYnVm LCBpbnQgX24pOwoKICBfZnBvc190ICgqX3NlZWspICh2b2lkICogX2Nvb2tpZSwgX2Zwb3NfdCBf b2Zmc2V0LCBpbnQgX3doZW5jZSk7CiAgaW50ICgqX2Nsb3NlKSAodm9pZCAqIF9jb29raWUpOwoK CiAgc3RydWN0IF9fc2J1ZiBfdWI7CiAgdW5zaWduZWQgY2hhciAqX3VwOwogIGludCBfdXI7CgoK ICB1bnNpZ25lZCBjaGFyIF91YnVmWzNdOwogIHVuc2lnbmVkIGNoYXIgX25idWZbMV07CgoKICBz dHJ1Y3QgX19zYnVmIF9sYjsKCgogIGludCBfYmxrc2l6ZTsKICBpbnQgX29mZnNldDsKCgogIHN0 cnVjdCBfcmVlbnQgKl9kYXRhOwoKCgogIF9mbG9ja190IF9sb2NrOwoKfTsKdHlwZWRlZiBzdHJ1 Y3QgX19zRklMRSBfX0ZJTEU7CgoKc3RydWN0IF9nbHVlCnsKICBzdHJ1Y3QgX2dsdWUgKl9uZXh0 OwogIGludCBfbmlvYnM7CiAgX19GSUxFICpfaW9iczsKfTsKc3RydWN0IF9yYW5kNDggewogIHVu c2lnbmVkIHNob3J0IF9zZWVkWzNdOwogIHVuc2lnbmVkIHNob3J0IF9tdWx0WzNdOwogIHVuc2ln bmVkIHNob3J0IF9hZGQ7CgoKCgp9OwpzdHJ1Y3QgX3JlZW50CnsKICBpbnQgX2Vycm5vOwoKCgoK ICBfX0ZJTEUgKl9zdGRpbiwgKl9zdGRvdXQsICpfc3RkZXJyOwoKICBpbnQgX2luYzsKICBjaGFy IF9lbWVyZ2VuY3lbMjVdOwoKICBpbnQgX2N1cnJlbnRfY2F0ZWdvcnk7CiAgY29uc3QgY2hhciAq X2N1cnJlbnRfbG9jYWxlOwoKICBpbnQgX19zZGlkaW5pdDsKCiAgdm9pZCAoKl9fY2xlYW51cCkg KHN0cnVjdCBfcmVlbnQgKik7CgoKICBzdHJ1Y3QgX0JpZ2ludCAqX3Jlc3VsdDsKICBpbnQgX3Jl c3VsdF9rOwogIHN0cnVjdCBfQmlnaW50ICpfcDVzOwogIHN0cnVjdCBfQmlnaW50ICoqX2ZyZWVs aXN0OwoKCiAgaW50IF9jdnRsZW47CiAgY2hhciAqX2N2dGJ1ZjsKCiAgdW5pb24KICAgIHsKICAg ICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQgaW50IF91bnVzZWRfcmFuZDsK ICAgICAgICAgIGNoYXIgKiBfc3RydG9rX2xhc3Q7CiAgICAgICAgICBjaGFyIF9hc2N0aW1lX2J1 ZlsyNl07CiAgICAgICAgICBzdHJ1Y3QgX190bSBfbG9jYWx0aW1lX2J1ZjsKICAgICAgICAgIGlu dCBfZ2FtbWFfc2lnbmdhbTsKICAgICAgICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBs b25nIF9yYW5kX25leHQ7CiAgICAgICAgICBzdHJ1Y3QgX3JhbmQ0OCBfcjQ4OwogICAgICAgICAg X21ic3RhdGVfdCBfbWJsZW5fc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnRvd2Nfc3Rh dGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF93Y3RvbWJfc3RhdGU7CiAgICAgICAgICBjaGFyIF9s NjRhX2J1Zls4XTsKICAgICAgICAgIGNoYXIgX3NpZ25hbF9idWZbMjRdOwogICAgICAgICAgaW50 IF9nZXRkYXRlX2VycjsKICAgICAgICAgIF9tYnN0YXRlX3QgX21icmxlbl9zdGF0ZTsKICAgICAg ICAgIF9tYnN0YXRlX3QgX21icnRvd2Nfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnNy dG93Y3Nfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF93Y3J0b21iX3N0YXRlOwogICAgICAg ICAgX21ic3RhdGVfdCBfd2NzcnRvbWJzX3N0YXRlOwogICAgICAgIH0gX3JlZW50OwoKCgogICAg ICBzdHJ1Y3QKICAgICAgICB7CgogICAgICAgICAgdW5zaWduZWQgY2hhciAqIF9uZXh0ZlszMF07 CiAgICAgICAgICB1bnNpZ25lZCBpbnQgX25tYWxsb2NbMzBdOwogICAgICAgIH0gX3VudXNlZDsK ICAgIH0gX25ldzsKCgogIHN0cnVjdCBfYXRleGl0ICpfYXRleGl0OwogIHN0cnVjdCBfYXRleGl0 IF9hdGV4aXQwOwoKCiAgdm9pZCAoKiooX3NpZ19mdW5jKSkoaW50KTsKCgoKCiAgc3RydWN0IF9n bHVlIF9fc2dsdWU7CiAgX19GSUxFIF9fc2ZbM107Cn07CmV4dGVybiBzdHJ1Y3QgX3JlZW50ICpf aW1wdXJlX3B0ciA7Cgp2b2lkIF9yZWNsYWltX3JlZW50IChzdHJ1Y3QgX3JlZW50ICopOwp0eXBl ZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWlu dDE2X3Q7CgoKCgoKdHlwZWRlZiBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X3VpbnQzMl90OwoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9faW50NjRf dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90Owp0 eXBlZGVmIGludCBwdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKdHlwZWRlZiBs b25nIGludCBfX29mZl90Owp0eXBlZGVmIGludCBfX3BpZF90OwoKX19leHRlbnNpb25fXyB0eXBl ZGVmIGxvbmcgbG9uZyBpbnQgX19sb2ZmX3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7 CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9p bnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKCnR5cGVkZWYgdW5zaWduZWQgc2hv cnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKCgp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgY2xvY2tfdDsKCgoKCnR5cGVkZWYgbG9uZyB0aW1lX3Q7CgoKCgpzdHJ1Y3QgdGltZXNw ZWMgewogIHRpbWVfdCB0dl9zZWM7CiAgbG9uZyB0dl9uc2VjOwp9OwoKc3RydWN0IGl0aW1lcnNw ZWMgewogIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICBzdHJ1Y3QgdGltZXNwZWMgaXRf dmFsdWU7Cn07CgoKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIGNhZGRyX3Q7 CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlub190Owp0eXBlZGVmIHNob3J0IGRldl90 OwoKCgoKdHlwZWRlZiBsb25nIG9mZl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aWRfdDsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBnaWRfdDsKCgp0eXBlZGVmIGludCBwaWRfdDsKdHlwZWRl ZiBsb25nIGtleV90Owp0eXBlZGVmIF9zc2l6ZV90IHNzaXplX3Q7CnR5cGVkZWYgdW5zaWduZWQg aW50IG1vZGVfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCBubGlua190Owp0eXBlZGVmIGxvbmcgZmRfbWFzazsKCgoKCgoKCnR5 cGVkZWYgc3RydWN0IF90eXBlc19mZF9zZXQgewogICAgICAgIGZkX21hc2sgZmRzX2JpdHNbKCgo NjQpKygoKHNpemVvZiAoZmRfbWFzaykgKiA4KSktMSkpLygoc2l6ZW9mIChmZF9tYXNrKSAqIDgp KSldOwp9IF90eXBlc19mZF9zZXQ7CgoKdHlwZWRlZiBfZnBvc190IGZwb3NfdDsKdHlwZWRlZiBf X0ZJTEUgRklMRTsKRklMRSAqIHRtcGZpbGUgKHZvaWQpOwpjaGFyICogdG1wbmFtIChjaGFyICop OwppbnQgZmNsb3NlIChGSUxFICopOwppbnQgZmZsdXNoIChGSUxFICopOwpGSUxFICogZnJlb3Bl biAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CnZvaWQgc2V0YnVmIChGSUxF ICosIGNoYXIgKik7CmludCBzZXR2YnVmIChGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOwpp bnQgZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBmc2NhbmYgKEZJTEUg KiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7Cmlu dCBzY2FuZiAoY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc3NjYW5mIChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgLi4uKTsKaW50IHZmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19n bnVjX3ZhX2xpc3QpOwppbnQgdnByaW50ZiAoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7 CmludCB2c3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50 IGZnZXRjIChGSUxFICopOwpjaGFyICogZmdldHMgKGNoYXIgKiwgaW50LCBGSUxFICopOwppbnQg ZnB1dGMgKGludCwgRklMRSAqKTsKaW50IGZwdXRzIChjb25zdCBjaGFyICosIEZJTEUgKik7Cmlu dCBnZXRjIChGSUxFICopOwppbnQgZ2V0Y2hhciAodm9pZCk7CmNoYXIgKiBnZXRzIChjaGFyICop OwppbnQgcHV0YyAoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhciAoaW50KTsKaW50IHB1dHMgKGNv bnN0IGNoYXIgKik7CmludCB1bmdldGMgKGludCwgRklMRSAqKTsKc2l6ZV90IGZyZWFkICh2b2lk ICosIHNpemVfdCBfc2l6ZSwgc2l6ZV90IF9uLCBGSUxFICopOwpzaXplX3QgZndyaXRlIChjb25z dCB2b2lkICogLCBzaXplX3QgX3NpemUsIHNpemVfdCBfbiwgRklMRSAqKTsKaW50IGZnZXRwb3Mg KEZJTEUgKiwgZnBvc190ICopOwppbnQgZnNlZWsgKEZJTEUgKiwgbG9uZywgaW50KTsKaW50IGZz ZXRwb3MgKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpsb25nIGZ0ZWxsICggRklMRSAqKTsKdm9p ZCByZXdpbmQgKEZJTEUgKik7CnZvaWQgY2xlYXJlcnIgKEZJTEUgKik7CmludCBmZW9mIChGSUxF ICopOwppbnQgZmVycm9yIChGSUxFICopOwp2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqKTsKCkZJ TEUgKiBmb3BlbiAoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl90eXBlKTsKaW50IHNw cmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgcmVtb3ZlIChjb25zdCBjaGFy ICopOwppbnQgcmVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKaW50IGFzcHJp bnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBmc2Vla28gKEZJTEUgKiwgb2Zm X3QsIGludCk7Cm9mZl90IGZ0ZWxsbyAoIEZJTEUgKik7CmludCB2ZmlwcmludGYgKEZJTEUgKiwg Y29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBpcHJpbnRmIChjb25zdCBjaGFyICos IC4uLik7CmludCBmaXByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBzaXBy aW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmNoYXIgKiB0ZW1wbmFtIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CmludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIg KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3Qg Y2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCB2ZnNjYW5mIChGSUxFICosIGNvbnN0IGNoYXIg KiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgdnNjYW5mIChjb25zdCBjaGFyICosIF9fZ251Y192YV9s aXN0KTsKaW50IHZzc2NhbmYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFf bGlzdCk7CgppbnQgZmNsb3NlYWxsICh2b2lkKTsKaW50IHNucHJpbnRmIChjaGFyICosIHNpemVf dCwgY29uc3QgY2hhciAqLCAuLi4pOwpGSUxFICogZmRvcGVuIChpbnQsIGNvbnN0IGNoYXIgKik7 CgppbnQgZmlsZW5vIChGSUxFICopOwppbnQgZ2V0dyAoRklMRSAqKTsKaW50IHBjbG9zZSAoRklM RSAqKTsKRklMRSAqIHBvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBwdXR3 IChpbnQsIEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNoYXIgKiwgaW50KTsKaW50 IHNldGxpbmVidWYgKEZJTEUgKik7CmludCBnZXRjX3VubG9ja2VkIChGSUxFICopOwppbnQgZ2V0 Y2hhcl91bmxvY2tlZCAodm9pZCk7CnZvaWQgZmxvY2tmaWxlIChGSUxFICopOwppbnQgZnRyeWxv Y2tmaWxlIChGSUxFICopOwp2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICopOwppbnQgcHV0Y191bmxv Y2tlZCAoaW50LCBGSUxFICopOwppbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50KTsKCgoKCgoKaW50 IF9hc3ByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgLi4u KTsKaW50IF9mY2xvc2VhbGxfciAoc3RydWN0IF9yZWVudCAqKTsKRklMRSAqIF9mZG9wZW5fciAo c3RydWN0IF9yZWVudCAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CkZJTEUgKiBfZm9wZW5fciAoc3Ry dWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBfZnNjYW5mX3Ig KHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfZ2V0Y2hh cl9yIChzdHJ1Y3QgX3JlZW50ICopOwpjaGFyICogX2dldHNfciAoc3RydWN0IF9yZWVudCAqLCBj aGFyICopOwppbnQgX2lwcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4u Lik7CmludCBfbWtzdGVtcF9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CmNoYXIgKiBfbWt0 ZW1wX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKdm9pZCBfcGVycm9yX3IgKHN0cnVjdCBf cmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9wcmludGZfciAoc3RydWN0IF9yZWVudCAqLCBj b25zdCBjaGFyICosIC4uLik7CmludCBfcHV0Y2hhcl9yIChzdHJ1Y3QgX3JlZW50ICosIGludCk7 CmludCBfcHV0c19yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKik7CmludCBfcmVtb3Zl X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKaW50IF9yZW5hbWVfciAoc3RydWN0 IF9yZWVudCAqLCBjb25zdCBjaGFyICpfb2xkLCBjb25zdCBjaGFyICpfbmV3KTsKCmludCBfc2Nh bmZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfc3ByaW50Zl9y IChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX3NucHJp bnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4u KTsKaW50IF9zc2NhbmZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgLi4uKTsKY2hhciAqIF90ZW1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOwpGSUxFICogX3RtcGZpbGVfciAoc3RydWN0IF9yZWVudCAqKTsK Y2hhciAqIF90bXBuYW1fciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwppbnQgX3Zhc3ByaW50 Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xp c3QpOwppbnQgX3ZmcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25zdCBjaGFy ICosIF9fZ251Y192YV9saXN0KTsKaW50IF92cHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u c3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfdnNwcmludGZfciAoc3RydWN0IF9yZWVu dCAqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX3ZzbnByaW50 Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fZ251 Y192YV9saXN0KTsKaW50IF92ZnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgRklMRSAqLCBjb25z dCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c2NhbmZfciAoc3RydWN0IF9yZWVudCAq LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF92c3NjYW5mX3IgKHN0cnVjdCBf cmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCnNz aXplX3QgX19nZXRkZWxpbSAoY2hhciAqKiwgc2l6ZV90ICosIGludCwgRklMRSAqKTsKc3NpemVf dCBfX2dldGxpbmUgKGNoYXIgKiosIHNpemVfdCAqLCBGSUxFICopOwppbnQgX19zcmdldCAoRklM RSAqKTsKaW50IF9fc3didWYgKGludCwgRklMRSAqKTsKCgoKCgoKRklMRSAqZnVub3BlbiAoY29u c3Qgdm9pZCAqIF9jb29raWUsIGludCAoKnJlYWRmbikodm9pZCAqIF9jb29raWUsIGNoYXIgKl9i dWYsIGludCBfbiksIGludCAoKndyaXRlZm4pKHZvaWQgKiBfY29va2llLCBjb25zdCBjaGFyICpf YnVmLCBpbnQgX24pLCBmcG9zX3QgKCpzZWVrZm4pKHZvaWQgKiBfY29va2llLCBmcG9zX3QgX29m ZiwgaW50IF93aGVuY2UpLCBpbnQgKCpjbG9zZWZuKSh2b2lkICogX2Nvb2tpZSkpOwoKCgp0eXBl ZGVmIHN0cnVjdAp7CiAgaW50IHF1b3Q7CiAgaW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3Ry dWN0CnsKICBsb25nIHF1b3Q7CiAgbG9uZyByZW07Cn0gbGRpdl90OwpleHRlcm4gaW50IF9fbWJf Y3VyX21heDsKCgoKdm9pZCBhYm9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7 CmludCBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpKHZvaWQpKTsKZG91Ymxl IGF0b2YgKGNvbnN0IGNoYXIgKl9fbnB0cik7CgpmbG9hdCBhdG9mZiAoY29uc3QgY2hhciAqX19u cHRyKTsKCmludCBhdG9pIChjb25zdCBjaGFyICpfX25wdHIpOwpsb25nIGF0b2wgKGNvbnN0IGNo YXIgKl9fbnB0cik7CnZvaWQgKiBic2VhcmNoIChjb25zdCB2b2lkICogX19rZXksIGNvbnN0IHZv aWQgKiBfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBpbnQgKCogX2NvbXBh cikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgoKCgp2b2lkICogY2FsbG9jIChzaXpl X3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSk7CmRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBf X2Rlbm9tKTsKdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChub3JldHVy bikpOwp2b2lkIGZyZWUgKHZvaWQgKik7CmNoYXIgKiBnZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3Ry aW5nKTsKY2hhciAqIF9nZXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICpfX3N0 cmluZyk7CmNoYXIgKiBfZmluZGVudiAoY29uc3QgY2hhciAqLCBpbnQgKik7CmNoYXIgKiBfZmlu ZGVudl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgaW50ICopOwpsb25nIGxhYnMg KGxvbmcpOwpsZGl2X3QgbGRpdiAobG9uZyBfX251bWVyLCBsb25nIF9fZGVub20pOwp2b2lkICog bWFsbG9jIChzaXplX3QgX19zaXplKTsKaW50IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVfdCk7 CmludCBfbWJsZW5fciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgX21i c3RhdGVfdCAqKTsKaW50IG1idG93YyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7 CmludCBfbWJ0b3djX3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBjb25zdCBjaGFyICos IHNpemVfdCwgX21ic3RhdGVfdCAqKTsKaW50IHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50 IF93Y3RvbWJfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICosIHdjaGFyX3QsIF9tYnN0YXRlX3Qg Kik7CnNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNp emVfdCBfbWJzdG93Y3NfciAoc3RydWN0IF9yZWVudCAqLCB3Y2hhcl90ICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90LCBfbWJzdGF0ZV90ICopOwpzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKiwgY29uc3Qg d2NoYXJfdCAqLCBzaXplX3QpOwpzaXplX3QgX3djc3RvbWJzX3IgKHN0cnVjdCBfcmVlbnQgKiwg Y2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCwgX21ic3RhdGVfdCAqKTsKCgppbnQgbWtz dGVtcCAoY2hhciAqKTsKY2hhciAqIG1rdGVtcCAoY2hhciAqKTsKCgp2b2lkIHFzb3J0ICh2b2lk ICogX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgaW50KCpfY29tcGFyKShj b25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwppbnQgcmFuZCAodm9pZCk7CnZvaWQgKiByZWFs bG9jICh2b2lkICogX19yLCBzaXplX3QgX19zaXplKTsKdm9pZCBzcmFuZCAodW5zaWduZWQgX19z ZWVkKTsKZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSKTsK ZG91YmxlIF9zdHJ0b2RfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwgY2hhciAq Kl9fZW5kX1BUUik7CgpmbG9hdCBzdHJ0b2RmIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2Vu ZF9QVFIpOwoKbG9uZyBzdHJ0b2wgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUiwg aW50IF9fYmFzZSk7CmxvbmcgX3N0cnRvbF9yIChzdHJ1Y3QgX3JlZW50ICosY29uc3QgY2hhciAq X19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBzdHJ0b3Vs IChjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNpZ25l ZCBsb25nIF9zdHJ0b3VsX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIg KipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwoKaW50IHN5c3RlbSAoY29uc3QgY2hhciAqX19zdHJp bmcpOwoKCmxvbmcgYTY0bCAoY29uc3QgY2hhciAqX19pbnB1dCk7CmNoYXIgKiBsNjRhIChsb25n IF9faW5wdXQpOwpjaGFyICogX2w2NGFfciAoc3RydWN0IF9yZWVudCAqLGxvbmcgX19pbnB1dCk7 CmludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKShpbnQsIHZvaWQgKiksdm9pZCAqIF9fYXJnKTsK dm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKaW50 IHB1dGVudiAoY29uc3QgY2hhciAqX19zdHJpbmcpOwppbnQgX3B1dGVudl9yIChzdHJ1Y3QgX3Jl ZW50ICosIGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKaW50IHNldGVudiAoY29uc3QgY2hhciAqX19z dHJpbmcsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX292ZXJ3cml0ZSk7CmludCBfc2V0ZW52 X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcsIGNvbnN0IGNoYXIgKl9f dmFsdWUsIGludCBfX292ZXJ3cml0ZSk7CgpjaGFyICogZ2N2dCAoZG91YmxlLGludCxjaGFyICop OwpjaGFyICogZ2N2dGYgKGZsb2F0LGludCxjaGFyICopOwpjaGFyICogZmN2dCAoZG91YmxlLGlu dCxpbnQgKixpbnQgKik7CmNoYXIgKiBmY3Z0ZiAoZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hh ciAqIGVjdnQgKGRvdWJsZSxpbnQsaW50ICosaW50ICopOwpjaGFyICogZWN2dGJ1ZiAoZG91Ymxl LCBpbnQsIGludCosIGludCosIGNoYXIgKik7CmNoYXIgKiBmY3Z0YnVmIChkb3VibGUsIGludCwg aW50KiwgaW50KiwgY2hhciAqKTsKY2hhciAqIGVjdnRmIChmbG9hdCxpbnQsaW50ICosaW50ICop OwpjaGFyICogZHRvYSAoZG91YmxlLCBpbnQsIGludCwgaW50ICosIGludCosIGNoYXIqKik7Cmlu dCByYW5kX3IgKHVuc2lnbmVkICpfX3NlZWQpOwoKZG91YmxlIGRyYW5kNDggKHZvaWQpOwpkb3Vi bGUgX2RyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqKTsKZG91YmxlIGVyYW5kNDggKHVuc2lnbmVk IHNob3J0IFszXSk7CmRvdWJsZSBfZXJhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIHVuc2lnbmVk IHNob3J0IFszXSk7CmxvbmcganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgWzNdKTsKbG9uZyBfanJh bmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIHVuc2lnbmVkIHNob3J0IFszXSk7CnZvaWQgbGNvbmc0 OCAodW5zaWduZWQgc2hvcnQgWzddKTsKdm9pZCBfbGNvbmc0OF9yIChzdHJ1Y3QgX3JlZW50ICos IHVuc2lnbmVkIHNob3J0IFs3XSk7CmxvbmcgbHJhbmQ0OCAodm9pZCk7CmxvbmcgX2xyYW5kNDhf ciAoc3RydWN0IF9yZWVudCAqKTsKbG9uZyBtcmFuZDQ4ICh2b2lkKTsKbG9uZyBfbXJhbmQ0OF9y IChzdHJ1Y3QgX3JlZW50ICopOwpsb25nIG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7Cmxv bmcgX25yYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNp Z25lZCBzaG9ydCAqCiAgICAgICBzZWVkNDggKHVuc2lnbmVkIHNob3J0IFszXSk7CnVuc2lnbmVk IHNob3J0ICoKICAgICAgIF9zZWVkNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9y dCBbM10pOwp2b2lkIHNyYW5kNDggKGxvbmcpOwp2b2lkIF9zcmFuZDQ4X3IgKHN0cnVjdCBfcmVl bnQgKiwgbG9uZyk7CmxvbmcgbG9uZyBzdHJ0b2xsIChjb25zdCBjaGFyICpfX24sIGNoYXIgKipf X2VuZF9QVFIsIGludCBfX2Jhc2UpOwpsb25nIGxvbmcgX3N0cnRvbGxfciAoc3RydWN0IF9yZWVu dCAqLCBjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNp Z25lZCBsb25nIGxvbmcgc3RydG91bGwgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BU UiwgaW50IF9fYmFzZSk7CnVuc2lnbmVkIGxvbmcgbG9uZyBfc3RydG91bGxfciAoc3RydWN0IF9y ZWVudCAqLCBjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwoK CnZvaWQgY2ZyZWUgKHZvaWQgKik7CmNoYXIgKiBfZHRvYV9yIChzdHJ1Y3QgX3JlZW50ICosIGRv dWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwoKdm9pZCAqIF9tYWxsb2NfciAo c3RydWN0IF9yZWVudCAqLCBzaXplX3QpOwp2b2lkICogX2NhbGxvY19yIChzdHJ1Y3QgX3JlZW50 ICosIHNpemVfdCwgc2l6ZV90KTsKdm9pZCBfZnJlZV9yIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQg Kik7CnZvaWQgKiBfcmVhbGxvY19yIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQgKiwgc2l6ZV90KTsK dm9pZCBfbXN0YXRzX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKCmludCBfc3lzdGVtX3Ig KHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKCnZvaWQgX19lcHJpbnRmIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwoKCgoKCgoK CnVuaW9uIF9fZG1hdGgKewogIF9fVUxvbmcgaVsyXTsKICBkb3VibGUgZDsKfTsKCgoKCmV4dGVy biBjb25zdCB1bmlvbiBfX2RtYXRoIF9faW5maW5pdHlbXTsKZXh0ZXJuIGRvdWJsZSBhdGFuIChk b3VibGUpOwpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW4gKGRv dWJsZSk7CmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbmggKGRv dWJsZSk7CmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91Ymxl IG1vZGYgKGRvdWJsZSwgZG91YmxlICopOwpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSk7CmV4 dGVybiBkb3VibGUgZmFicyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlKTsK CgoKCgoKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW4gKGRv dWJsZSk7CmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBjb3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgZXhwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4dGVy biBkb3VibGUgbG9nIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUpOwpleHRl cm4gZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJs ZSk7CmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwp0eXBlZGVmIGZsb2F0IGZs b2F0X3Q7CnR5cGVkZWYgZG91YmxlIGRvdWJsZV90OwpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYg KGZsb2F0IHgpOwpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWQgKGRvdWJsZSB4KTsKZXh0ZXJuIGRv dWJsZSBpbmZpbml0eSAodm9pZCk7CmV4dGVybiBkb3VibGUgbmFuICh2b2lkKTsKZXh0ZXJuIGlu dCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlKTsKZXh0ZXJuIGludCBm aW5pdGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsK ZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlKTsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSk7 CmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRv dWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUpOwpleHRlcm4gZG91Ymxl IHNjYWxibiAoZG91YmxlLCBpbnQpOwoKZXh0ZXJuIGRvdWJsZSBleHAyIChkb3VibGUpOwpleHRl cm4gZG91YmxlIHNjYWxibG4gKGRvdWJsZSwgbG9uZyBpbnQpOwpleHRlcm4gZG91YmxlIHRnYW1t YSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZWFyYnlpbnQgKGRvdWJsZSk7CmV4dGVybiBsb25n IGludCBscmludCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlKTsKZXh0ZXJu IGxvbmcgaW50IGxyb3VuZCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlKTsK ZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSwgZG91YmxlLCBpbnQgKik7CmV4dGVybiBkb3Vi bGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUs IGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91 YmxlIGZtaW4gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSwgZG91 YmxlLCBkb3VibGUpOwpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSwgZG91YmxlICosIGRvdWJs ZSAqKTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGV4cG0x IChkb3VibGUpOwoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4gZG91Ymxl IGF0YW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlLCBkb3VibGUp OwpleHRlcm4gZG91YmxlIGdhbW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGdhbW1hX3IgKGRv dWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKik7CmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpOwpl eHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSk7CmV4 dGVybiBkb3VibGUgeTEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKTsK ZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsKZXh0 ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3Vi bGUsIGRvdWJsZSk7CgoKZXh0ZXJuIGRvdWJsZSBjYWJzKCk7CmV4dGVybiBkb3VibGUgZHJlbSAo ZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0 IGNvc2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRh bmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBmcmV4 cGYgKGZsb2F0LCBpbnQgKik7CmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQsIGZsb2F0ICopOwpl eHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCk7CmV4 dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0KTsKCgpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0KTsK ZXh0ZXJuIGZsb2F0IGFzaW5mIChmbG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0LCBm bG9hdCk7CmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgc2luaGYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxv YXQsIGludCk7CmV4dGVybiBmbG9hdCBsb2dmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsb2cxMGYg KGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBz cXJ0ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBm bG9hdCBleHAyZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0LCBsb25nIGlu dCk7CmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBuZWFyYnlpbnRm IChmbG9hdCk7CmV4dGVybiBsb25nIGludCBscmludGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJv dW5kZiAoZmxvYXQpOwpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQpOwpleHRlcm4gZmxv YXQgdHJ1bmNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCwgZmxvYXQsIGlu dCAqKTsKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0 IGZkaW1mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0LCBmbG9hdCk7 CmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGZtYWYgKGZs b2F0LCBmbG9hdCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGluZmluaXR5ZiAodm9pZCk7CmV4dGVy biBmbG9hdCBuYW5mICh2b2lkKTsKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0KTsKZXh0ZXJuIGlu dCBpc2luZmYgKGZsb2F0KTsKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCk7CmV4dGVybiBmbG9h dCBjb3B5c2lnbmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCk7Cgpl eHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQpOwpl eHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJpbnRm IChmbG9hdCk7CmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCwgaW50KTsKZXh0ZXJuIGZsb2F0 IGxvZzFwZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXhwbTFmIChmbG9hdCk7CmV4dGVybiB2b2lk IHNpbmNvc2YgKGZsb2F0LCBmbG9hdCAqLCBmbG9hdCAqKTsKCgpleHRlcm4gZmxvYXQgYWNvc2hm IChmbG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJlbWFp bmRlcmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KTsKZXh0ZXJu IGZsb2F0IGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxv YXQpOwpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwpleHRlcm4gZmxvYXQg ZXJmZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkw ZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCB5bmYgKGlu dCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgajBmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBqMWYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCk7CgpleHRlcm4gZmxvYXQgaHlwb3Rm IChmbG9hdCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGNhYnNmKCk7CmV4dGVybiBmbG9hdCBkcmVt ZiAoZmxvYXQsIGZsb2F0KTsKCgoKCgoKZXh0ZXJuIGludCAqX19zaWduZ2FtICh2b2lkKTsKc3Ry dWN0IGV4Y2VwdGlvbgoKewogIGludCB0eXBlOwogIGNoYXIgKm5hbWU7CiAgZG91YmxlIGFyZzE7 CiAgZG91YmxlIGFyZzI7CiAgZG91YmxlIHJldHZhbDsKICBpbnQgZXJyOwp9OwoKCgoKZXh0ZXJu IGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICplKTsKZW51bSBfX2ZkbGlibV92ZXJzaW9u CnsKICBfX2ZkbGlibV9pZWVlID0gLTEsCiAgX19mZGxpYm1fc3ZpZCwKICBfX2ZkbGlibV94b3Bl biwKICBfX2ZkbGlibV9wb3NpeAp9OwoKCgoKZXh0ZXJuIGNvbnN0IGVudW0gX19mZGxpYm1fdmVy c2lvbiBfX2ZkbGliX3ZlcnNpb247CgoKCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQg dG1fbWluOwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50 IHRtX3llYXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0Owp9 OwoKY2xvY2tfdCBjbG9jayAodm9pZCk7CmRvdWJsZSBkaWZmdGltZSAodGltZV90IF90aW1lMiwg dGltZV90IF90aW1lMSk7CnRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX3RpbWVwdHIpOwp0aW1l X3QgdGltZSAodGltZV90ICpfdGltZXIpOwoKY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRt ICpfdGJsb2NrKTsKY2hhciAqY3RpbWUgKGNvbnN0IHRpbWVfdCAqX3RpbWUpOwpzdHJ1Y3QgdG0g KmdtdGltZSAoY29uc3QgdGltZV90ICpfdGltZXIpOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZSAoY29u c3QgdGltZV90ICpfdGltZXIpOwoKc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfcywgc2l6ZV90IF9t YXhzaXplLCBjb25zdCBjaGFyICpfZm10LCBjb25zdCBzdHJ1Y3QgdG0gKl90KTsKCmNoYXIgKmFz Y3RpbWVfciAoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CmNoYXIgKmN0aW1lX3IgKGNvbnN0 IHRpbWVfdCAqLCBjaGFyICopOwpzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKiwg c3RydWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3Ry dWN0IHRtICopOwoKCgoKCgoKCmNoYXIgKnN0cnB0aW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgc3RydWN0IHRtICopOwp2b2lkIHR6c2V0ICh2b2lkKTsKdm9pZCBfdHpzZXRfciAoc3Ry dWN0IF9yZWVudCAqKTsKZXh0ZXJuIHRpbWVfdCBfdGltZXpvbmU7CmV4dGVybiBpbnQgX2RheWxp Z2h0OwpleHRlcm4gY2hhciAqX3R6bmFtZVsyXTsKc3RydWN0IHRpbWV2YWwgewogIGxvbmcgdHZf c2VjOwogIGxvbmcgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgaW50IHR6X21pbnV0 ZXN3ZXN0OwogIGludCB0el9kc3R0aW1lOwp9OwpzdHJ1Y3QgaXRpbWVydmFsIHsKICBzdHJ1Y3Qg dGltZXZhbCBpdF9pbnRlcnZhbDsKICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKaW50IGdl dHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcCwgc3RydWN0IHRpbWV6b25lICpfX3opOwpp bnQgc2V0dGltZW9mZGF5IChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBjb25zdCBzdHJ1Y3QgdGlt ZXpvbmUgKik7CmludCB1dGltZXMgKGNvbnN0IGNoYXIgKl9fcGF0aCwgc3RydWN0IHRpbWV2YWwg Kl9fdHZwKTsKaW50IGdldGl0aW1lciAoaW50IF9fd2hpY2gsIHN0cnVjdCBpdGltZXJ2YWwgKl9f dmFsdWUpOwppbnQgc2V0aXRpbWVyIChpbnQgX193aGljaCwgY29uc3Qgc3RydWN0IGl0aW1lcnZh bCAqX192YWx1ZSwgc3RydWN0IGl0aW1lcnZhbCAqX19vdmFsdWUpOwp0eXBlZGVmIHN0cnVjdCB7 CiAgICBpbnQgYWhpLAogICAgICAgICAgICBhbG8sCiAgICAgICAgICAgIGR4LAogICAgICAgICAg ICBmbGgsCiAgICAgICAgICAgIGZsbCwKICAgICAgICAgICAgZnJoLAogICAgICAgICAgICBmcmws CiAgICAgICAgICAgIHhsLAogICAgICAgICAgICB4cjsKICAgIH1SRUNUOwoKdHlwZWRlZiBzdHJ1 Y3QgewogICAgZG91YmxlIHQsCiAgICAgICAgICAgIHFwLAogICAgICAgICAgICAgICAgICAgICAg ICBkZWxxOwogICAgaW50IG47CiAgICAgICAgaW50IGxhcHM7CiAgICB9U3BlZWQ7Cgp0eXBlZGVm IGludCBFUlJPUjsKCgoKCgojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQgRlJFUVVFTlQgV2hl bgpkb3VibGUgV2hlbigpOwoKZG91YmxlClJ1bihpbnQgbGFwcywKICAgIGludCAqZ2FtdXQsIGlu dCBzY3gsIGludCBzY3ksIGludCBkbWF4LCBpbnQgbWVtcnksIEVSUk9SICplZmxhZyk7CmludApI aW50KGludCAqc2N4LCBpbnQgKnNjeSwgaW50ICpkbWF4LCBpbnQgKm1jbnQsIFJFQ1QgKnJlY3Qs CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZXJycywgaW50ICppeGVzLCBFUlJPUiAq ZWZsYWcpOwojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQgRlJFUVVFTlQgSGludAoKCgoKaW50 CkhpbnQoaW50ICpzY3gsIGludCAqc2N5LCBpbnQgKmRtYXgsIGludCAqbWNudCwgUkVDVCAqcmVj dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJzLCBpbnQgKml4ZXMsIEVSUk9S ICplZmxhZykKewogICAgaW50IGVycmlvLAogICAgICAgICAgICBlcnJqbywKICAgICAgICAgICAg c2gsCiAgICAgICAgICAgIHNsLAogICAgICAgICAgICB0bSwKICAgICAgICAgICAgdG0yOwoKICAg IGludCBpbmMsIGpuYywKICAgICAgICAgICAgaW8sCiAgICAgICAgICAgIGlxLAogICAgICAgICAg ICBpdCwKICAgICAgICAgICAgaXRtcCwKICAgICAgICAgICAgam8sCiAgICAgICAgICAgIG1hOwoK CgogICAgICByZWN0WzBdLnhsID0gKGludCkwOwogICAgICByZWN0WzBdLnhyID0gKnNjeDsKICAg ICAgcmVjdFswXS5keCA9ICpzY3g7CiAgICAgIHJlY3RbMF0uZmxsID0gKnNjeTsKICAgICAgcmVj dFswXS5mbGggPSAqc2N5OwogICAgICByZWN0WzBdLmZybCA9IChpbnQpMDsKICAgICAgcmVjdFsw XS5mcmggPSAoaW50KTA7CiAgICAgIHJlY3RbMF0uYWhpID0gKmRtYXg7CiAgICAgIHJlY3RbMF0u YWxvID0gKGludCkwOwogICAgICBpcSA9IDA7CiAgICAgIGVycnNbaXFdID0gcmVjdFswXS5haGkg LSByZWN0WzBdLmFsbzsKICAgICAgaXhlc1tpcV0gPSBpcTsKICAgICAgc2ggPSByZWN0WzBdLmFo aTsKICAgICAgc2wgPSByZWN0WzBdLmFsbzsKCiAgICAgIGZvciAoaXQgPSAwOyAoKGl0IDwgKm1j bnQgLSAxKSAmJiAoaXQgPD0gaXEpKTsgaXQrKykKICAgICAgewogICAgICAgICAgaW8gPSBtYSA9 IGl4ZXNbaXRdOwogICAgICAgICAgam8gPSBpdCArIDE7CgogICAgICAgICAgdG0gPSByZWN0W21h XS5keDsKCiAgICAgICAgICByZWN0W2lvXS5keCA9IHJlY3Rbam9dLmR4ID0gdG0gLyAoaW50KTI7 CgoKICAgICAgICAgIHJlY3Rbam9dLnhyID0gcmVjdFttYV0ueHI7CgogICAgICAgICAgcmVjdFtp b10ueHIgPSByZWN0W2lvXS54bCArCiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0W2lvXS5k eDsKICAgICAgICAgIHJlY3Rbam9dLnhsID0gcmVjdFtpb10ueHI7CgogICAgICAgICAgcmVjdFtq b10uZnJsID0gcmVjdFttYV0uZnJsOwogICAgICAgICAgcmVjdFtqb10uZnJoID0gcmVjdFttYV0u ZnJoOwoKCgogICAgICAgICAgdG0gPSAoKnNjeCArIHJlY3RbaW9dLnhyKTsKICAgICAgICAgIHRt MiA9ICgqc2N5ICogKCpzY3ggLSByZWN0W2lvXS54cikpOwogICAgICAgICAgaXRtcCA9IHRtMiAv IHRtOwogICAgICAgICAgcmVjdFtpb10uZnJsID0gaXRtcDsKCgogICAgICAgICAgcmVjdFtpb10u ZnJoID0gcmVjdFtpb10uZnJsICsgKCh0bSAqIHJlY3RbaW9dLmZybCkgIT0gdG0yKTsKICAgICAg ICAgIHJlY3Rbam9dLmZsbCA9IHJlY3RbaW9dLmZybDsKICAgICAgICAgIHJlY3Rbam9dLmZsaCA9 IHJlY3RbaW9dLmZyaDsKCgogICAgICAgICAgdG0gPSAocmVjdFtpb10uZmxsIC0gcmVjdFtpb10u ZnJoKSAqIChyZWN0W2lvXS5keCAtIChpbnQpMik7CiAgICAgICAgICBpZiAodG0gPCAoaW50KTAp CiAgICAgICAgICAgICAgdG0gPSAoaW50KTA7CiAgICAgICAgICBlcnJpbyA9IChyZWN0W2lvXS5m bGggLSByZWN0W2lvXS5mcmggKwogICAgICAgICAgICAgICAgICAgcmVjdFtpb10uZmxsIC0gcmVj dFtpb10uZnJsKSAqCiAgICAgICAgICAgICAgICAgIChyZWN0W2lvXS5keCAtIChpbnQpMSkgLSB0 bTsKCgogICAgICAgICAgdG0gPSAocmVjdFtqb10uZmxsIC0gcmVjdFtqb10uZnJoKSAqIChyZWN0 W2pvXS5keCAtIChpbnQpMik7CiAgICAgICAgICBpZiAodG0gPCAoaW50KTApCiAgICAgICAgICAg ICAgdG0gPSAoaW50KTA7CiAgICAgICAgICBlcnJqbyA9IChyZWN0W2pvXS5mbGggLSByZWN0W2pv XS5mcmggKwogICAgICAgICAgICAgICAgICAgcmVjdFtqb10uZmxsIC0gcmVjdFtqb10uZnJsKSAq CiAgICAgICAgICAgICAgICAgIChyZWN0W2pvXS5keCAtIChpbnQpMSkgLSB0bTsKCgoKICAgICAg ICAgIGluYyA9IChlcnJpbyA8IGVycmpvKSArIDE7CiAgICAgICAgICBqbmMgPSAzIC0gaW5jOwoK CiAgICAgICAgICBlcnJzW2lxICsgaW5jXSA9IGVycmlvOwogICAgICAgICAgaXhlc1tpcSArIGlu Y10gPSBpbzsKICAgICAgICAgIGVycnNbaXEgKyBqbmNdID0gZXJyam87CiAgICAgICAgICBpeGVz W2lxICsgam5jXSA9IGpvOwoKCiAgICAgICAgICBpcSA9IGlxICsgKGVycnNbaXEgKyAyXSAhPSAw KSArIDE7CgoKICAgICAgICAgIHRtID0gcmVjdFttYV0uYWxvOwogICAgICAgICAgcmVjdFtpb10u YWxvID0gcmVjdFtpb10uZnJsICogcmVjdFtpb10uZHg7CiAgICAgICAgICByZWN0W2pvXS5hbG8g PSByZWN0W2pvXS5mcmwgKiByZWN0W2pvXS5keDsKICAgICAgICAgIHNsIC09IHRtOwogICAgICAg ICAgc2wgKz0gcmVjdFtpb10uYWxvICsgcmVjdFtqb10uYWxvOwogICAgICAgICAgdG0gPSByZWN0 W21hXS5haGk7CiAgICAgICAgICByZWN0W2lvXS5haGkgPSByZWN0W2lvXS5mbGggKiByZWN0W2lv XS5keDsKICAgICAgICAgIHJlY3Rbam9dLmFoaSA9IHJlY3Rbam9dLmZsaCAqIHJlY3Rbam9dLmR4 OwogICAgICAgICAgc2ggLT0gdG07CiAgICAgICAgICBzaCArPSByZWN0W2lvXS5haGkgKyByZWN0 W2pvXS5haGk7CiAgICAgIH0KICAgICAgaWYgKGl0ID4gaXEpIHsKICAgICAgICAgICplZmxhZyA9 IDE7CiAgICAgICAgICB9CiAgICAgIGVsc2UgewojcHJhZ21hIG1pcHNfZnJlcXVlbmN5X2hpbnQg RlJFUVVFTlQKICAgICAgICAgICplZmxhZyA9IDA7CiAgICAgICAgICB9CiAgICAgIHJldHVybiAo c2ggLSBzbCk7Cn0K