From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13852 invoked by alias); 11 Jul 2002 22:36:01 -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 13832 invoked by uid 71); 11 Jul 2002 22:36:00 -0000 Resent-Date: 11 Jul 2002 22:36:00 -0000 Resent-Message-ID: <20020711223600.13831.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, dmeranda@iac.net Received: (qmail 12623 invoked by uid 61); 11 Jul 2002 22:31:22 -0000 Message-Id: <20020711223122.12622.qmail@sources.redhat.com> Date: Thu, 11 Jul 2002 15:36:00 -0000 From: dmeranda@iac.net Reply-To: dmeranda@iac.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/7281: Internal compiler error in reload_cse_simplify_operands on HP PA-RISC 2.0 X-SW-Source: 2002-07/txt/msg00364.txt.bz2 List-Id: >Number: 7281 >Category: optimization >Synopsis: Internal compiler error in reload_cse_simplify_operands on HP PA-RISC 2.0 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Jul 11 15:36:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Deron Meranda >Release: 3.1 >Organization: >Environment: HP-UX 11.0 (64-bit) on an HP serer 9000/800/L2000-44 dual processor 440 MHz PA-RISC 2.0 processor Binutils 2.12.1 GCC 3.1 configured for 32-bit... Configured with: /opt2/gnu/src/gcc/gcc-3.1/configure --prefix=/opt/gnu/gcc/3.1-hppa2.0 --with-gnu-as --with-as=/opt/gnu/binutils-2.12.1/bin/gnu-as --disable-nls --enable-shared --enable-version-specific-runtime-libs --enable-threads=posix --enable-languages=c,c++,java --target=hppa2.0-hp-hpux11.00 --host=hppa2.0-hp-hpux11.00 Thread model: posix gcc version 3.1 >Description: Trying to compile OpenSSH 3.4p1 (and using OpenSSL 0.9.7-Beta2). Internal compiler error on the file scp.c function progressmeter() at any optimzation level (-O1..-O3). Does not fail without optimization. Using 2.0 pa-risc architecture target. gcc3 -save-temps -march=2.0 -O -Wall -Wpointer-arith -Wno-uninitialized -I. -I. -I/opt/gnu/openssl-0.9.7-hppa20 -I/opt/gnu/openssl-0.9.7-hppa20/include -I/opt/gnu/include -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -DSSHDIR=\"/etc/opt/gnu/openssh\" -D_PATH_SSH_PROGRAM=\"/opt/gnu/openssh-3.4-hppa20/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/opt/gnu/openssh-3.4-hppa20/libexec/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-keysign\" -D_PATH_SSH_PIDDIR=\"/var/opt/gnu/openssh\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/opt/gnu/openssh/empty\" -DSSH_RAND_HELPER=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-rand-helper\" -DHAVE_CONFIG_H -c scp.c scp.c: In function `sink': scp.c:758: warning: subscript has type `char' scp.c: In function `progressmeter': scp.c:1203: insn does not satisfy its constraints: (insn 1016 83 87 (set (reg:DI 70 %fr23 [127]) (mem/f:DI (lo_sum:SI (reg/f:SI 1 %r1 [116]) (symbol_ref:SI ("totalbytes"))) [0 totalbytes+0 S8 A64])) 118 {*pa.md:3087} (nil) (nil)) scp.c:1203: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8368 >How-To-Repeat: Just compile with options in description >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="scp.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="scp.i" IyAxICJzY3AuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgInNj cC5jIgojIDc3ICJzY3AuYyIKIyAxICJpbmNsdWRlcy5oIiAxCiMgMjIgImluY2x1ZGVzLmgiCiMg MSAiY29uZmlnLmgiIDEKIyAyMyAiaW5jbHVkZXMuaCIgMgoKIyAxICIvb3B0L2dudS9nY2MvMy4x LWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3Rk aW8uaCIgMSAzCiMgMTQgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL29wdC9nbnUvZ2Nj LzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRl L3N0ZGFyZy5oIiAxIDMKIyA0MyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGli L2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19i dWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTUgIi9vcHQvZ251L2djYy8zLjEtaHBw YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5o IiAyIDMKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3Rkc3ltcy5oIiAxIDMKIyAyMSAiL29w dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu MS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDQ1ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg Ii9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4w MC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjAgIi9vcHQvZ251L2djYy8zLjEtaHBw YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvX2ludHR5cGVzLmgiIDEgMwojIDU4ICIvdXNy L2luY2x1ZGUvc3lzL19pbnR0eXBlcy5oIiAzCnR5cGVkZWYgY2hhciBpbnQ4X3Q7CnR5cGVkZWYg dW5zaWduZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgdWludDE2X3Q7CnR5cGVkZWYgaW50IGludDMyX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IHVpbnQzMl90OwoKdHlwZWRlZiBpbnQgaW50ZmFzdF90Owp0eXBlZGVmIHVuc2lnbmVk IGludCB1aW50ZmFzdF90OwoKCgoKdHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsKdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGxvbmcgdWludDY0X3Q7CgoKCgoKdHlwZWRlZiBpbnQ2NF90IGludG1heF90 Owp0eXBlZGVmIHVpbnQ2NF90IHVpbnRtYXhfdDsKIyA4OCAiL3Vzci9pbmNsdWRlL3N5cy9faW50 dHlwZXMuaCIgMwp0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1 aW50cHRyX3Q7CiMgOTkgIi91c3IvaW5jbHVkZS9zeXMvX2ludHR5cGVzLmgiIDMKdHlwZWRlZiBj aGFyIGludF9sZWFzdDhfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsK Cgp0eXBlZGVmIGludCBpbnRfZmFzdDhfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zh c3Q4X3Q7CgoKdHlwZWRlZiBzaG9ydCBpbnRfbGVhc3QxNl90OwoKCnR5cGVkZWYgdW5zaWduZWQg c2hvcnQgdWludF9sZWFzdDE2X3Q7CgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90OwoKCnR5cGVk ZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDE2X3Q7CgoKdHlwZWRlZiBpbnQgaW50X2xlYXN0MzJf dDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgp0eXBlZGVmIGludCBp bnRfZmFzdDMyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsKCgoKCgp0 eXBlZGVmIGludDY0X3QgaW50X2xlYXN0NjRfdDsKCgp0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2 NF90OwoKCnR5cGVkZWYgdWludDY0X3QgdWludF9sZWFzdDY0X3Q7CgoKdHlwZWRlZiB1aW50NjRf dCB1aW50X2Zhc3Q2NF90OwojIDE2NCAiL3Vzci9pbmNsdWRlL3N5cy9faW50dHlwZXMuaCIgMwp0 eXBlZGVmIHVpbnQzMl90IHB0cjMyX3Q7CiMgMjEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9s aWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MiAzCgoKCgoKCiAgICAgICAgICAgICAgICB0eXBlZGVmIGludCBtcWRfdDsKCgoKCgogICAgIHR5 cGVkZWYgaW50MzJfdCBkZXZfdDsKCgoKCgogICAgICAgIHR5cGVkZWYgdWludDMyX3QgaW5vMzJf dDsKCgoKCgoKICAgICAgIHR5cGVkZWYgdWludDY0X3QgaW5vNjRfdDsKIyA2MSAiL29wdC9nbnUv Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs dWRlL3N5cy90eXBlcy5oIiAzCiAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbm9fdDsK CgoKCgogICAgIHR5cGVkZWYgdWludDE2X3QgbW9kZV90OwoKCgoKICAgICB0eXBlZGVmIHVpbnQx Nl90IG5saW5rX3Q7CgoKCgogICAgdHlwZWRlZiBpbnQzMl90IGZwb3MzMl90OwoKCgoKCiAgICAg ICB0eXBlZGVmIGludDY0X3QgZnBvczY0X3Q7CgoKCgoKCiAgICAgICB0eXBlZGVmIGludDY0X3Qg ZnBvc190OwoKCgoKCgoKICAgICB0eXBlZGVmIHVpbnQzMl90IGZzYmxrY250MzJfdDsKCgoKCgog ICAgICAgdHlwZWRlZiB1aW50NjRfdCBmc2Jsa2NudDY0X3Q7CgoKCgoKCiAgICAgICB0eXBlZGVm IHVpbnQ2NF90IGZzYmxrY250X3Q7CiMgMTIwICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK ICAgICB0eXBlZGVmIGludDMyX3Qgb2ZmMzJfdDsKCgoKCgogICAgICAgIHR5cGVkZWYgaW50NjRf dCBvZmY2NF90OwoKCgoKCgogICAgICAgIHR5cGVkZWYgaW50NjRfdCBvZmZfdDsKIyAxNDIgIi9v cHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8z LjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwogICAgIHR5cGVkZWYgdWludDMyX3QgZnNmaWxjbnQz Ml90OwoKCgoKCiAgICAgICB0eXBlZGVmIHVpbnQ2NF90IGZzZmlsY250NjRfdDsKCgoKCgoKICAg ICAgICB0eXBlZGVmIHVpbnQ2NF90IGZzZmlsY250X3Q7CiMgMTY0ICIvb3B0L2dudS9nY2MvMy4x LWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDMKICAgICB0eXBlZGVmIGludDMyX3QgYmxrY250MzJfdDsKCgoKCgogICAgICAg dHlwZWRlZiBpbnQ2NF90IGJsa2NudDY0X3Q7CgoKCgoKCiAgICAgICAgdHlwZWRlZiBpbnQ2NF90 IGJsa2NudF90OwojIDE4NiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRl ZiBpbnQzMl90IHBpZF90OwoKCgoKICAgICB0eXBlZGVmIGludDMyX3QgbHdwaWRfdDsKCgoKCiAg ICAgdHlwZWRlZiBpbnQzMl90IGdpZF90OwoKCgoKICAgICB0eXBlZGVmIGludDMyX3QgdWlkX3Q7 CgoKCgogICAgIHR5cGVkZWYgaW50MzJfdCB0aWRfdDsKCgoKCiAgICAgICAgdHlwZWRlZiBsb25n IHNzaXplX3Q7CgoKCgogICAgIHR5cGVkZWYgdWludDE2X3QgX19zaXRlX3Q7CgoKCgogICAgIHR5 cGVkZWYgdWludDE2X3QgX19jbm9kZV90OwojIDIzMSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4w L2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5o IiAzCiAgICAgICAgICAgICAgICB0eXBlZGVmIGxvbmcgdGltZV90OwojIDI0MSAiL29wdC9nbnUv Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs dWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI1 MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDEx LjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRlZiB1aW50MzJfdCBjbG9j a190OwoKCgoKCgogICAgICB0eXBlZGVmIGludDMyX3Qga2V5X3Q7CgoKICAgdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBfX3VzaG9ydDsKCiAgIHR5cGVkZWYgaW50MzJfdCBfX2RhZGRyX3Q7CiAgIHR5 cGVkZWYgY2hhciAqX19jYWRkcl90OwogICB0eXBlZGVmIGludDMyX3QgX19zd2Jsa190OwoKCgoK CgogICAgIHR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCgoKCgogICAgIHR5cGVkZWYgaW50 MzJfdCBpZF90OwoKCgoKICAgICB0eXBlZGVmIHVpbnQzMl90IHVzZWNvbmRzX3Q7CgoKCgoKCiAg ICAgIHR5cGVkZWYgdWludDMyX3QgcmxpbTMyX3Q7CgoKCgoKICAgICAgICB0eXBlZGVmIHVpbnQ2 NF90IHJsaW02NF90OwoKCgoKCgoKICAgICAgICAgdHlwZWRlZiB1aW50NjRfdCBybGltX3Q7CiMg MzE0ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4 MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKICAgdHlwZWRlZiBfX3NpdGVfdCBzaXRl X3Q7CgoKCiAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CiAgIHR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgdV9zaG9ydDsKICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CiAgIHR5cGVk ZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CiAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiAg IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0OwogICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIg dWJpdDg7CiAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWJpdDE2OwogICB0eXBlZGVmIHVpbnQz Ml90IHViaXQzMjsKICAgdHlwZWRlZiBjaGFyIHNiaXQ4OwogICB0eXBlZGVmIHNob3J0IHNiaXQx NjsKICAgdHlwZWRlZiBpbnQzMl90IHNiaXQzMjsKCiAgIHR5cGVkZWYgX19zd2Jsa190IHN3Ymxr X3Q7CiAgIHR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CiAgIHR5cGVkZWYgX19jbm9kZV90IGNu b2RlX3Q7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS92bXR5cGVzLmgiIDEgMwojIDEw ICIvdXNyL2luY2x1ZGUvbWFjaGluZS92bXR5cGVzLmgiIDMKICAgdHlwZWRlZiB1aW50cHRyX3Qg cGFkZHJfdDsKCgoKCgoKICAgdHlwZWRlZiBpbnRwdHJfdCBwYWdlX3Q7CiAgIHR5cGVkZWYgaW50 MzJfdCBwZ2NudF90OwogICB0eXBlZGVmIHVpbnQzMl90IHBoeXNwZm5fdDsKICAgdHlwZWRlZiB1 aW50cHRyX3QgaW9waHlzcGZuX3Q7CiAgIHR5cGVkZWYgdWludHB0cl90IHBnYWRkcl90OwoKICAg dHlwZWRlZiB1aW50MzJfdCBzcGFjZV90OwogICB0eXBlZGVmIHVpbnQzMl90IHByb3RfdDsKIyAz NDAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgx MS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgogICB0eXBlZGVmIHVuc2lnbmVk IGxvbmcgdWxvbmdfdDsKCgogICB0eXBlZGVmIGludDE2X3QgY250X3Q7CiAgIHR5cGVkZWYgdWlu dDMyX3QgY2Rub190OwogICB0eXBlZGVmIHVpbnQxNl90IHVzZV90OwoKICAgdHlwZWRlZiBzdHJ1 Y3QgX3BoeXNhZHIgeyBpbnRwdHJfdCByWzFdOyB9ICpwaHlzYWRyOwogICB0eXBlZGVmIHN0cnVj dCBfcXVhZCB7IGxvbmcgdmFsWzJdOyB9IHF1YWQ7CgogICB0eXBlZGVmIGludCBzcHVfdDsKCgoK CgogICAgIHR5cGVkZWYgc2hvcnQgY3B1X3Q7CgogICAgIHR5cGVkZWYgc3RydWN0IGxhYmVsX3Qg ewoKCgoKCgoKICAgICAgICBpbnQzMl90IGxibF9ycDsKICAgICAgICBpbnQzMl90IGxibF9zcDsK ICAgICAgICBpbnQzMl90IGxibF9zWzE3XTsKICAgICAgICBpbnQzMl90IGxibF9zc1sxXTsKICAg ICAgICBkb3VibGUgbGJsX3NmWzEwXTsKCiAgICB9IGxhYmVsX3Q7CgoKCgp0eXBlZGVmIHN0cnVj dCBsa2luZm8gewogICAgICAgY2hhciAqbGtfbmFtZTsKICAgICAgIGludCBsa19mbGFnczsKICAg ICAgIGxvbmcgbGtfcGFkWzJdOwp9IGxraW5mb190OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHBs X3Q7CgoKICAgdHlwZWRlZiBjaGFyICpkbV9tZXNzYWdlOwoKCgoKICAgICAgdHlwZWRlZiBpbnQz Ml90IGFpZF90OwojIDQwNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgIHR5cGVkZWYg cGlkX3Qgc2lkX3Q7CiMgNDE5ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIv aHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNy L2luY2x1ZGUvc3lzL19mZF9tYWNyb3MuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS9zeXMvX2Zk X21hY3Jvcy5oIiAzCnR5cGVkZWYgaW50MzJfdCBfX2ZkX21hc2s7CiMgNjAgIi91c3IvaW5jbHVk ZS9zeXMvX2ZkX21hY3Jvcy5oIiAzCiAgIHR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiAgICAgbG9u ZyBmZHNfYml0c1soKCgyMDQ4KSsoKChzaXplb2YobG9uZykgKiA4KSktMSkpLygoc2l6ZW9mKGxv bmcpICogOCkpKV07CiAgICAgfSBmZF9zZXQ7CiMgNDIwICIvb3B0L2dudS9nY2MvMy4xLWhwcGEy LjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDIgMwojIDQyOSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRlZiBf X2ZkX21hc2sgZmRfbWFzazsKIyA0ODMgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2Nj LWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwogICAg ICAgIHR5cGVkZWYgaW50MzJfdCBkaXJfb2ZmX3Q7CiMgNDYgIi9vcHQvZ251L2djYy8zLjEtaHBw YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5o IiAyIDMKIyA3NyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgIHR5cGVkZWYgc3RydWN0IHsK ICAgICAgICBpbnQgX19jbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX19wdHI7CiAgICAgICAg dW5zaWduZWQgY2hhciAqX19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fZmxhZzsKICAg ICAgICB1bnNpZ25lZCBjaGFyIF9fZmlsZUw7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX2ZpbGVI OwogICB9IEZJTEU7CgoKICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBfX2NudDsKICAg ICAgICB1bnNpZ25lZCBjaGFyICpfX3B0cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2Jhc2U7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19mbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19m aWxlTDsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fZmlsZUg7CiAgICAgICAgdW5zaWduZWQgY2hh ciAqX19idWZlbmRwOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fbmV3YmFzZTsKICAgICAgICB1 bnNpZ25lZCBjaGFyIF9fc21idWZbOCArMio0XTsKCgoKICAgICAgICB2b2lkICpfX3VudXNlZDsK CiAgIH0gX0ZJTEVYOwojIDEyMyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGli L2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL19udWxsLmgiIDEgMwojIDEyNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xp Yi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3NpemVfdC5oIiAxIDMKIyAxMjggIi9vcHQvZ251L2dj Yy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVk ZS9zdGRpby5oIiAyIDMKIyAxNTggIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgICAgdHlwZWRl ZiBkb3VibGUgKl9fdmFfbGlzdDsKIyAxODcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIv Z2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgIGV4 dGVybiBGSUxFIF9faW9iW107CgoKCiAgICAgZXh0ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAq KTsKCiAgICAgZXh0ZXJuIGludCByZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoK ICAgICBleHRlcm4gY2hhciAqdG1wbmFtKGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBmY2xvc2Uo RklMRSAqKTsKICAgICBleHRlcm4gaW50IGZmbHVzaChGSUxFICopOwogICAgIGV4dGVybiB2b2lk IHNldGJ1ZihGSUxFICosIGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBzZXR2YnVmKEZJTEUgKiwg Y2hhciAqLCBpbnQsIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBmcHJpbnRmKEZJTEUgKiwgY29u c3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hh ciAqLC4uLik7CiAgICAgZXh0ZXJuIGludCBwcmludGYoY29uc3QgY2hhciAqLC4uLik7CiAgICAg ZXh0ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHNwcmlu dGYoY2hhciAqLCBjb25zdCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHNzY2FuZihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwuLi4pOwogICAgIGV4dGVybiBpbnQgZmdldGMoRklMRSAq KTsKICAgICBleHRlcm4gY2hhciAqZmdldHMoY2hhciAqLCBpbnQsIEZJTEUgKik7CiAgICAgZXh0 ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBmcHV0cyhjb25zdCBj aGFyICosIEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBnZXRjKEZJTEUgKik7CiAgICAgZXh0ZXJu IGludCBnZXRjaGFyKHZvaWQpOwogICAgIGV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CiAgICAg ZXh0ZXJuIGludCBwdXRjKGludCwgRklMRSAqKTsKICAgICBleHRlcm4gaW50IHB1dGNoYXIoaW50 KTsKICAgICBleHRlcm4gaW50IHB1dHMoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHVu Z2V0YyhpbnQsIEZJTEUgKik7CiAgICAgc3RhdGljIEZJTEUgKnRtcGZpbGUodm9pZCk7CiAgICAg c3RhdGljIGludCBmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwogICAgIHN0YXRpYyBpbnQgZnNl dHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKICAgICBzdGF0aWMgRklMRSAqZm9wZW4oY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIHN0YXRpYyBGSUxFICpmcmVvcGVuKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwogICAgIGV4dGVybiBpbnQgZnNlZWsoRklM RSAqLCBsb25nIGludCwgaW50KTsKICAgICBleHRlcm4gbG9uZyBpbnQgZnRlbGwoRklMRSAqKTsK ICAgICBleHRlcm4gdm9pZCByZXdpbmQoRklMRSAqKTsKICAgICBleHRlcm4gdm9pZCBjbGVhcmVy cihGSUxFICopOwogICAgIGV4dGVybiBpbnQgZmVvZihGSUxFICopOwogICAgIGV4dGVybiBpbnQg ZmVycm9yKEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7Cgoj IDMxMCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1 eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICBleHRlcm4gc2l6ZV90IGZyZWFk KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CiAgICAgICBleHRlcm4gc2l6ZV90IGZ3 cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwoKIyAzMjggIi9vcHQv Z251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEv aW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGludCBfX2Zsc2J1Zih1bnNpZ25lZCBjaGFy LCBGSUxFICopOwogICAgIGV4dGVybiBpbnQgX19maWxidWYoRklMRSAqKTsKIyAzOTkgIi9vcHQv Z251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEv aW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKICAg ICBleHRlcm4gaW50IGZpbGVubyhGSUxFICopOwogICAgIGV4dGVybiBGSUxFICpmZG9wZW4oaW50 LCBjb25zdCBjaGFyICopOwojIDQyMiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICAg IHR5cGVkZWYgZG91YmxlICpfX25vdF92YV9saXN0X187CgoKCgogICAgIGV4dGVybiBjaGFyICpv cHRhcmc7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CiAgICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAg ICAgZXh0ZXJuIGludCBvcHRvcHQ7CgoKICAgICAgIGV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hh ciAqIGNvbnN0IFtdLCBjb25zdCBjaGFyICopOwogICAgICAgZXh0ZXJuIGNoYXIgKmN1c2VyaWQo Y2hhciAqKTsKIyA0NDcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGludCBn ZXR3KEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsKICAgICBleHRl cm4gaW50IHBjbG9zZShGSUxFICopOwogICAgIGV4dGVybiBGSUxFICpwb3Blbihjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICopOwojIDQ3NCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCgogICAgIGV4 dGVybiBpbnQgdnByaW50Zihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKICAgICBleHRl cm4gaW50IHZmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAg ICAgZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xp c3QpOwoKCgoKCgojIDQ5MyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKICAgICBleHRlcm4gaW50 IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHZz bnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAg ICAgZXh0ZXJuIGludCB2c2NhbmYoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAgICAg ZXh0ZXJuIGludCB2ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7 CiAgICAgZXh0ZXJuIGludCB2c3NjYW5mKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFf bGlzdCk7CiAgICAgZXh0ZXJuIHZvaWQgZmxvY2tmaWxlKEZJTEUgKik7CiAgICAgZXh0ZXJuIGlu dCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKICAgICBleHRlcm4gdm9pZCBmdW5sb2NrZmlsZShGSUxF ICopOwojIDU0OCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKICAgZXh0ZXJuIHVuc2lnbmVkIGNo YXIgKl9fYnVmZW5kdGFiW107CiMgNjA4ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwogICAgZXh0 ZXJuIG9mZjY0X3QgX19mdGVsbG82NCAoRklMRSAqKTsKICAgIGV4dGVybiBGSUxFICpfX2ZvcGVu NjQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgIGV4dGVybiBGSUxFICpfX2ZyZW9w ZW42NCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHJlZ2lzdGVyIEZJTEUgKiApOwoKICAg IGV4dGVybiBGSUxFICpfX3RtcGZpbGU2NCAodm9pZCk7CiAgICBleHRlcm4gaW50IF9fZnNlZWtv NjQgKEZJTEUgKiwgb2ZmX3QsIGludCk7CiAgICBleHRlcm4gaW50IF9fZmdldHBvczY0IChGSUxF ICosIGZwb3NfdCAqKTsKICAgIGV4dGVybiBpbnQgX19mc2V0cG9zNjQgKEZJTEUgKiwgY29uc3Qg ZnBvc190ICopOwojIDYzMiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICAgc3RhdGlj IGludCBmZ2V0cG9zKEZJTEUgKl9fYSwgZnBvc190ICpfX2IpCiAgICAgICAgICAgICAgICB7cmV0 dXJuIF9fZmdldHBvczY0KF9fYSxfX2IpO30KICAgICAgICBzdGF0aWMgaW50IGZzZXRwb3MoRklM RSAqX19hLCBjb25zdCBmcG9zX3QgKl9fYikKICAgICAgICAgICAgICAgIHtyZXR1cm4gX19mc2V0 cG9zNjQoX19hLF9fYik7fQogICAgICAgIHN0YXRpYyBGSUxFICpmb3Blbihjb25zdCBjaGFyICpf X2EsIGNvbnN0IGNoYXIgKl9fYikKICAgICAgICAgICAgICAgIHtyZXR1cm4gX19mb3BlbjY0KF9f YSxfX2IpO30KICAgICAgICBzdGF0aWMgRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICpfX2EsIGNv bnN0IGNoYXIgKl9fYiwKICAgICAgICAgICAgICAgIEZJTEUgKl9fYykge3JldHVybiBfX2ZyZW9w ZW42NChfX2EsX19iLF9fYyk7fQogICAgICAgIHN0YXRpYyBGSUxFICp0bXBmaWxlKHZvaWQpIHty ZXR1cm4gX190bXBmaWxlNjQoKTt9CgojIDI1ICJpbmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUv Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs dWRlL2N0eXBlLmgiIDEgMwojIDQ0ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1s aWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvY3R5cGUuaCIgMwoKICAgICBleHRl cm4gaW50IGlzYWxudW0oaW50KTsKICAgICBleHRlcm4gaW50IGlzYWxwaGEoaW50KTsKICAgICBl eHRlcm4gaW50IGlzY250cmwoaW50KTsKICAgICBleHRlcm4gaW50IGlzZGlnaXQoaW50KTsKICAg ICBleHRlcm4gaW50IGlzZ3JhcGgoaW50KTsKICAgICBleHRlcm4gaW50IGlzbG93ZXIoaW50KTsK ICAgICBleHRlcm4gaW50IGlzcHJpbnQoaW50KTsKICAgICBleHRlcm4gaW50IGlzcHVuY3QoaW50 KTsKICAgICBleHRlcm4gaW50IGlzc3BhY2UoaW50KTsKICAgICBleHRlcm4gaW50IGlzdXBwZXIo aW50KTsKICAgICBleHRlcm4gaW50IGlzeGRpZ2l0KGludCk7CgojIDcyICIvb3B0L2dudS9nY2Mv My4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUv Y3R5cGUuaCIgMwogICAgIGV4dGVybiB1bnNpZ25lZCBjaGFyICpfX2N0eXBlOwogICAgIGV4dGVy biB1bnNpZ25lZCBjaGFyICpfX2N0eXBlMjsKCiAgICAgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKl9f dXBzaGlmdDsKICAgICBleHRlcm4gdW5zaWduZWQgY2hhciAqX19kb3duc2hpZnQ7CgoKCgoKCgoK ZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CmV4dGVybiBpbnQgdG91cHBlcihpbnQpOwoKIyA5NyAi L29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAw LzMuMS9pbmNsdWRlL2N0eXBlLmgiIDMKICAgICBleHRlcm4gaW50IGlzYXNjaWkoaW50KTsKICAg ICBleHRlcm4gaW50IHRvYXNjaWkoaW50KTsKIyAxMTMgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9jdHlwZS5oIiAz CmV4dGVybiBpbnQgX190b2xvd2VyKGludCk7CmV4dGVybiBpbnQgX190b3VwcGVyKGludCk7CiMg MTQ1ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4 MTEuMDAvMy4xL2luY2x1ZGUvY3R5cGUuaCIgMwogICAgIGV4dGVybiBpbnQgaXNjdHlwZShpbnQs IHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIGludCBpc2JsYW5rKGludCk7CgoKCgoKCiAgICAg ZXh0ZXJuIHVuc2lnbmVkIGludCAqX19TQl9tYXNrczsKCiAgICAgZXh0ZXJuIGludCBfaXNhbG51 bShpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzYWxwaGEoaW50KTsKICAgICBleHRlcm4gaW50IF9p c2NudHJsKGludCk7CiAgICAgZXh0ZXJuIGludCBfaXNkaWdpdChpbnQpOwogICAgIGV4dGVybiBp bnQgX2lzZ3JhcGgoaW50KTsKICAgICBleHRlcm4gaW50IF9pc2xvd2VyKGludCk7CiAgICAgZXh0 ZXJuIGludCBfaXNwcmludChpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzcHVuY3QoaW50KTsKICAg ICBleHRlcm4gaW50IF9pc3NwYWNlKGludCk7CiAgICAgZXh0ZXJuIGludCBfaXN1cHBlcihpbnQp OwogICAgIGV4dGVybiBpbnQgX2lzeGRpZ2l0KGludCk7CiMgMjYgImluY2x1ZGVzLmgiIDIKIyAx ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu MDAvMy4xL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgNTcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9lcnJuby5oIiAz CiAgICAgICAgZXh0ZXJuIGludCBlcnJubzsKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5o IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5oIiAzCiAgICAgICAgIGV4dGVybiBp bnQgZXJybm87CiMgNjAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyAyNyAiaW5jbHVkZXMu aCIgMgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvZmNu dGwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMSAzCiMgMTYyICIvdXNyL2lu Y2x1ZGUvc3lzL2ZjbnRsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL19mbG9ja19ib2R5Lmgi IDEgMwojIDEwICIvdXNyL2luY2x1ZGUvc3lzL19mbG9ja19ib2R5LmgiIDMKICAgc3RydWN0IGZs b2NrIHsKICAgICAgc2hvcnQgbF90eXBlOwogICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgb2Zm X3QgbF9zdGFydDsKICAgICAgb2ZmX3QgbF9sZW47CgoKCgogICAgICBwaWRfdCBsX3BpZDsKCgog ICB9OwojIDE2MyAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAyIDMKIyAyMDcgIi91c3IvaW5j bHVkZS9zeXMvZmNudGwuaCIgMwogICAgICAgZXh0ZXJuIGludCBmY250bCAoaW50LCBpbnQsIC4u Lik7CiAgICAgICBzdGF0aWMgaW50IGNyZWF0IChjb25zdCBjaGFyICosIG1vZGVfdCk7CiMgMjI1 ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBfX2NyZWF0NjQgKGNvbnN0 IGNoYXIgKiwgbW9kZV90KTsKZXh0ZXJuIGludCBfX29wZW42NCAoY29uc3QgY2hhciAqLCBpbnQs IG1vZGVfdCk7CiMgMjM1ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKc3RhdGljIGludCBv cGVuKGEsYixjKSBjb25zdCBjaGFyICphOyBpbnQgYjsgbW9kZV90IGM7CgogICAgICAgIHsgcmV0 dXJuIF9fb3BlbjY0KGEsYixjKTsgfQoKCnN0YXRpYyBpbnQgY3JlYXQoY29uc3QgY2hhciAqYSwg bW9kZV90IGIpCgoKCiAgICAgICAgeyByZXR1cm4gX19jcmVhdDY0KGEsYik7IH0KIyAxMCAiL3Vz ci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwojIDI4ICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNs dWRlL3NpZ25hbC5oIiAxIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAz CiMgMTUgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz L3NpZ2V2ZW50LmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2V2ZW50LmgiIDMKdHlw ZWRlZiB1bmlvbiBzaWd2YWwgewoKCgogICAgICBzdHJ1Y3QgewoKCgogICAgICAgICAgaW50IF9f c3ZpX2ludDsKICAgICAgfSBfX3N2aV9pbnRfczsKICAgICAgdm9pZCAqIF9fc2l2YWxfcHRyOwog ICB9IHNpZ3ZhbF90OwoKCgoKCgp0eXBlZGVmIGludCBwdGhyZWFkX2F0dHJfdDsKCgoKCnR5cGVk ZWYgc3RydWN0IHNpZ2V2ZW50IHsKCgoKICAgICAgaW50IF9fc2lnZXZfbm90aWZ5OwogICAgICBp bnQgX19zaWdldl9zaWdubzsKICAgICAgc2lndmFsX3QgX19zaWdldl92YWx1ZTsKCgoKCiAgICAg IHZvaWQgKCpfX3NpZ2V2X25vdGlmeV9mdW5jdGlvbikoc2lndmFsX3QpOwoKCgoKCiAgICAgIHB0 aHJlYWRfYXR0cl90ICpfX3NpZ2V2X25vdGlmeV9hdHRyaWJ1dGVzOwoKCgoKCgoKICAgICAgaW50 IF9fc2lnZXZfcmVzZXJ2ZWRbOF07CgogICB9IHNpZ2V2ZW50X3Q7CgogIGVudW0gX19zaWdldl90 eXBlcyB7CiAgICAgICAgICBfX1NJR0VWX05PTkUgPSAxLAogICAgICAgICAgX19TSUdFVl9TSUdO QUwKCiAgICAgICAgICAsX19TSUdFVl9USFJFQUQKCiAgfTsKIyAxNiAiL3Vzci9pbmNsdWRlL3N5 cy9zaWduYWwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDEgMwojIDE5 ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMwplbnVtIF9fc2lfY29kZXMgewogICAgICAg IFNJX1FVRVVFID0gLTIsCiAgICAgICAgU0lfVVNFUiA9IC0xLAogICAgICAgIFNJX1RJTUVSID0g MSwKICAgICAgICBTSV9BU1lOQ0lPPSAyLAogICAgICAgIFNJX01FU0dRID0gMwp9OwojIDM4ICIv dXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfX3NpZ2luZm8gewoK CgogICAgICAgIGludCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lfY29kZTsKICAgICAgICBpbnQg c2lfZXJybm87CiAgICAgICAgc2lndmFsX3Qgc2lfdmFsdWU7CiAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX19waWQ7 CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWlkX3QgX191aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2tpbGw7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBfX3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9IF9fU0lHQ0xEOwogICAgICAgICAgICAgICAgICAgICAgICB9IF9fcGRhdGE7 CiAgICAgICAgICAgICAgICB9IF9fcHJvYzsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYWRkcjsKICAgICAgICAgICAgICAgIH0gX19mYXVs dDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBf X2ZkOwogICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9fYmFuZDsKICAgICAgICAgICAgICAg IH0gX19maWxlOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgdm9pZCAqX19hZGRyOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2xvY2twYWdl OwogICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9fZGV2X2lkOwogICAgICAgICAgICAgICAg fSBfX2dmYXVsdDsKICAgICAgICB9IF9fZGF0YTsKCiAgICAgICAgbG9uZyBfX3BhZFs5XTsKfSBz aWdpbmZvX3Q7CiMgMTcgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMwojIDEgIi91c3Iv aW5jbHVkZS9zeXMvbmV3c2lnLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5o IiAzCiAgICAgdHlwZWRlZiBzdHJ1Y3QgX19zaWdzZXRfdCB7CiAgICAgICAgICB1bnNpZ25lZCBp bnQgc2lnc2V0WzhdOwogICAgIH0gc2lnc2V0X3Q7CiMgNDMgIi91c3IvaW5jbHVkZS9zeXMvbmV3 c2lnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZlX3N0YXRlLmgiIDEgMwojIDE4 NCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2F2ZV9zdGF0ZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9f ZnBfZGJsX2Jsb2NrIHsKCiAgICAgICAgZG91YmxlIHNzX2ZwMDsKICAgICAgICBkb3VibGUgc3Nf ZnAxOwogICAgICAgIGRvdWJsZSBzc19mcDI7CiAgICAgICAgZG91YmxlIHNzX2ZwMzsKICAgICAg ICBkb3VibGUgc3NfZnA0OwogICAgICAgIGRvdWJsZSBzc19mcDU7CiAgICAgICAgZG91YmxlIHNz X2ZwNjsKICAgICAgICBkb3VibGUgc3NfZnA3OwogICAgICAgIGRvdWJsZSBzc19mcDg7CiAgICAg ICAgZG91YmxlIHNzX2ZwOTsKICAgICAgICBkb3VibGUgc3NfZnAxMDsKICAgICAgICBkb3VibGUg c3NfZnAxMTsKICAgICAgICBkb3VibGUgc3NfZnAxMjsKICAgICAgICBkb3VibGUgc3NfZnAxMzsK ICAgICAgICBkb3VibGUgc3NfZnAxNDsKICAgICAgICBkb3VibGUgc3NfZnAxNTsKICAgICAgICBk b3VibGUgc3NfZnAxNjsKICAgICAgICBkb3VibGUgc3NfZnAxNzsKICAgICAgICBkb3VibGUgc3Nf ZnAxODsKICAgICAgICBkb3VibGUgc3NfZnAxOTsKICAgICAgICBkb3VibGUgc3NfZnAyMDsKICAg ICAgICBkb3VibGUgc3NfZnAyMTsKICAgICAgICBkb3VibGUgc3NfZnAyMjsKICAgICAgICBkb3Vi bGUgc3NfZnAyMzsKICAgICAgICBkb3VibGUgc3NfZnAyNDsKICAgICAgICBkb3VibGUgc3NfZnAy NTsKICAgICAgICBkb3VibGUgc3NfZnAyNjsKICAgICAgICBkb3VibGUgc3NfZnAyNzsKICAgICAg ICBkb3VibGUgc3NfZnAyODsKICAgICAgICBkb3VibGUgc3NfZnAyOTsKICAgICAgICBkb3VibGUg c3NfZnAzMDsKICAgICAgICBkb3VibGUgc3NfZnAzMTsKfSBmcF9kYmxfYmxvY2tfdDsKCgoKCnR5 cGVkZWYgc3RydWN0IF9fZnBfaW50X2Jsb2NrIHsKCiAgICAgICAgaW50IHNzX2Zwc3RhdDsKICAg ICAgICBpbnQgc3NfZnBleGNlcHQxOwogICAgICAgIGludCBzc19mcGV4Y2VwdDI7CiAgICAgICAg aW50IHNzX2ZwZXhjZXB0MzsKICAgICAgICBpbnQgc3NfZnBleGNlcHQ0OwogICAgICAgIGludCBz c19mcGV4Y2VwdDU7CiAgICAgICAgaW50IHNzX2ZwZXhjZXB0NjsKICAgICAgICBpbnQgc3NfZnBl eGNlcHQ3OwogICAgICAgIGludCBzc19mcDRfaGk7CiAgICAgICAgaW50IHNzX2ZwNF9sbzsKICAg ICAgICBpbnQgc3NfZnA1X2hpOwogICAgICAgIGludCBzc19mcDVfbG87CiAgICAgICAgaW50IHNz X2ZwNl9oaTsKICAgICAgICBpbnQgc3NfZnA2X2xvOwogICAgICAgIGludCBzc19mcDdfaGk7CiAg ICAgICAgaW50IHNzX2ZwN19sbzsKICAgICAgICBpbnQgc3NfZnA4X2hpOwogICAgICAgIGludCBz c19mcDhfbG87CiAgICAgICAgaW50IHNzX2ZwOV9oaTsKICAgICAgICBpbnQgc3NfZnA5X2xvOwog ICAgICAgIGludCBzc19mcDEwX2hpOwogICAgICAgIGludCBzc19mcDEwX2xvOwogICAgICAgIGlu dCBzc19mcDExX2hpOwogICAgICAgIGludCBzc19mcDExX2xvOwogICAgICAgIGludCBzc19mcDEy X2hpOwogICAgICAgIGludCBzc19mcDEyX2xvOwogICAgICAgIGludCBzc19mcDEzX2hpOwogICAg ICAgIGludCBzc19mcDEzX2xvOwogICAgICAgIGludCBzc19mcDE0X2hpOwogICAgICAgIGludCBz c19mcDE0X2xvOwogICAgICAgIGludCBzc19mcDE1X2hpOwogICAgICAgIGludCBzc19mcDE1X2xv OwogICAgICAgIGludCBzc19mcDE2X2hpOwogICAgICAgIGludCBzc19mcDE2X2xvOwogICAgICAg IGludCBzc19mcDE3X2hpOwogICAgICAgIGludCBzc19mcDE3X2xvOwogICAgICAgIGludCBzc19m cDE4X2hpOwogICAgICAgIGludCBzc19mcDE4X2xvOwogICAgICAgIGludCBzc19mcDE5X2hpOwog ICAgICAgIGludCBzc19mcDE5X2xvOwogICAgICAgIGludCBzc19mcDIwX2hpOwogICAgICAgIGlu dCBzc19mcDIwX2xvOwogICAgICAgIGludCBzc19mcDIxX2hpOwogICAgICAgIGludCBzc19mcDIx X2xvOwogICAgICAgIGludCBzc19mcDIyX2hpOwogICAgICAgIGludCBzc19mcDIyX2xvOwogICAg ICAgIGludCBzc19mcDIzX2hpOwogICAgICAgIGludCBzc19mcDIzX2xvOwogICAgICAgIGludCBz c19mcDI0X2hpOwogICAgICAgIGludCBzc19mcDI0X2xvOwogICAgICAgIGludCBzc19mcDI1X2hp OwogICAgICAgIGludCBzc19mcDI1X2xvOwogICAgICAgIGludCBzc19mcDI2X2hpOwogICAgICAg IGludCBzc19mcDI2X2xvOwogICAgICAgIGludCBzc19mcDI3X2hpOwogICAgICAgIGludCBzc19m cDI3X2xvOwogICAgICAgIGludCBzc19mcDI4X2hpOwogICAgICAgIGludCBzc19mcDI4X2xvOwog ICAgICAgIGludCBzc19mcDI5X2hpOwogICAgICAgIGludCBzc19mcDI5X2xvOwogICAgICAgIGlu dCBzc19mcDMwX2hpOwogICAgICAgIGludCBzc19mcDMwX2xvOwogICAgICAgIGludCBzc19mcDMx X2hpOwogICAgICAgIGludCBzc19mcDMxX2xvOwp9IGZwX2ludF9ibG9ja190OwojIDM1MyAiL3Vz ci9pbmNsdWRlL21hY2hpbmUvc2F2ZV9zdGF0ZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fcmVnNjQg ewoKICAgICAgICBpbnQ2NF90IHNzX3Jlc2VydmVkOwogICAgICAgIGludDY0X3Qgc3NfZ3IxOwog ICAgICAgIGludDY0X3Qgc3NfcnA7CiAgICAgICAgaW50NjRfdCBzc19ncjM7CiAgICAgICAgaW50 NjRfdCBzc19ncjQ7CiAgICAgICAgaW50NjRfdCBzc19ncjU7CiAgICAgICAgaW50NjRfdCBzc19n cjY7CiAgICAgICAgaW50NjRfdCBzc19ncjc7CiAgICAgICAgaW50NjRfdCBzc19ncjg7CiAgICAg ICAgaW50NjRfdCBzc19ncjk7CiAgICAgICAgaW50NjRfdCBzc19ncjEwOwogICAgICAgIGludDY0 X3Qgc3NfZ3IxMTsKICAgICAgICBpbnQ2NF90IHNzX2dyMTI7CiAgICAgICAgaW50NjRfdCBzc19n cjEzOwogICAgICAgIGludDY0X3Qgc3NfZ3IxNDsKICAgICAgICBpbnQ2NF90IHNzX2dyMTU7CiAg ICAgICAgaW50NjRfdCBzc19ncjE2OwogICAgICAgIGludDY0X3Qgc3NfZ3IxNzsKICAgICAgICBp bnQ2NF90IHNzX2dyMTg7CiAgICAgICAgaW50NjRfdCBzc19ncjE5OwogICAgICAgIGludDY0X3Qg c3NfZ3IyMDsKICAgICAgICBpbnQ2NF90IHNzX2dyMjE7CiAgICAgICAgaW50NjRfdCBzc19ncjIy OwogICAgICAgIGludDY0X3Qgc3NfYXJnMzsKICAgICAgICBpbnQ2NF90IHNzX2FyZzI7CiAgICAg ICAgaW50NjRfdCBzc19hcmcxOwogICAgICAgIGludDY0X3Qgc3NfYXJnMDsKICAgICAgICB1aW50 NjRfdCBzc19kcDsKICAgICAgICB1aW50NjRfdCBzc19yZXQwOwogICAgICAgIHVpbnQ2NF90IHNz X3JldDE7CiAgICAgICAgdWludDY0X3Qgc3Nfc3A7CiAgICAgICAgdWludDY0X3Qgc3NfZ3IzMTsK ICAgICAgICB1aW50NjRfdCBzc19jcjExOwogICAgICAgIHVpbnQ2NF90IHNzX3Bjb3FfaGVhZDsK ICAgICAgICB1aW50NjRfdCBzc19wY3NxX2hlYWQ7CiAgICAgICAgdWludDY0X3Qgc3NfcGNvcV90 YWlsOwogICAgICAgIHVpbnQ2NF90IHNzX3Bjc3FfdGFpbDsKICAgICAgICB1aW50NjRfdCBzc19j cjE1OwogICAgICAgIHVpbnQ2NF90IHNzX2NyMTk7CiAgICAgICAgdWludDY0X3Qgc3NfY3IyMDsK ICAgICAgICB1aW50NjRfdCBzc19jcjIxOwogICAgICAgIHVpbnQ2NF90IHNzX2NyMjI7CiAgICAg ICAgdWludDY0X3Qgc3NfY3B1c3RhdGU7CiAgICAgICAgdWludDY0X3Qgc3Nfc3I0OwogICAgICAg IHVpbnQ2NF90IHNzX3NyMDsKICAgICAgICB1aW50NjRfdCBzc19zcjE7CiAgICAgICAgdWludDY0 X3Qgc3Nfc3IyOwogICAgICAgIHVpbnQ2NF90IHNzX3NyMzsKICAgICAgICB1aW50NjRfdCBzc19z cjU7CiAgICAgICAgdWludDY0X3Qgc3Nfc3I2OwogICAgICAgIHVpbnQ2NF90IHNzX3NyNzsKICAg ICAgICB1aW50NjRfdCBzc19jcjA7CiAgICAgICAgdWludDY0X3Qgc3NfY3I4OwogICAgICAgIHVp bnQ2NF90IHNzX2NyOTsKICAgICAgICB1aW50NjRfdCBzc19jcjEwOwogICAgICAgIHVpbnQ2NF90 IHNzX2NyMTI7CiAgICAgICAgdWludDY0X3Qgc3NfY3IxMzsKICAgICAgICB1aW50NjRfdCBzc19j cjI0OwogICAgICAgIHVpbnQ2NF90IHNzX2NyMjU7CiAgICAgICAgdWludDY0X3Qgc3NfY3IyNjsK ICAgICAgICB1aW50NjRfdCBzc19jcjI3OwogICAgICAgIHVpbnQ2NF90IHNzX3Jlc2VydmVkMlsy XTsKICAgICAgICB1aW50MzJfdCBzc19vbGRja3N1bTsKICAgICAgICB1aW50MzJfdCBzc19uZXdj a3N1bTsKCgoKfSBfX3JlZzY0X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19yZWczMiB7CiAgICAg ICAgdWludDMyX3Qgc3NfcmVzZXJ2ZWRbMl07CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxX2hpOwog ICAgICAgIHVpbnQzMl90IHNzX2dyMV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ycF9oaTsKICAg ICAgICB1aW50MzJfdCBzc19ycF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjNfaGk7CiAgICAg ICAgdWludDMyX3Qgc3NfZ3IzX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyNF9oaTsKICAgICAg ICB1aW50MzJfdCBzc19ncjRfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3I1X2hpOwogICAgICAg IHVpbnQzMl90IHNzX2dyNV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjZfaGk7CiAgICAgICAg dWludDMyX3Qgc3NfZ3I2X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyN19oaTsKICAgICAgICB1 aW50MzJfdCBzc19ncjdfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3I4X2hpOwogICAgICAgIHVp bnQzMl90IHNzX2dyOF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjlfaGk7CiAgICAgICAgdWlu dDMyX3Qgc3NfZ3I5X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTBfaGk7CiAgICAgICAgdWlu dDMyX3Qgc3NfZ3IxMF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjExX2hpOwogICAgICAgIHVp bnQzMl90IHNzX2dyMTFfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxMl9oaTsKICAgICAgICB1 aW50MzJfdCBzc19ncjEyX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTNfaGk7CiAgICAgICAg dWludDMyX3Qgc3NfZ3IxM19sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjE0X2hpOwogICAgICAg IHVpbnQzMl90IHNzX2dyMTRfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxNV9oaTsKICAgICAg ICB1aW50MzJfdCBzc19ncjE1X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTZfaGk7CiAgICAg ICAgdWludDMyX3Qgc3NfZ3IxNl9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjE3X2hpOwogICAg ICAgIHVpbnQzMl90IHNzX2dyMTdfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxOF9oaTsKICAg ICAgICB1aW50MzJfdCBzc19ncjE4X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTlfaGk7CiAg ICAgICAgdWludDMyX3Qgc3NfZ3IxOV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjIwX2hpOwog ICAgICAgIHVpbnQzMl90IHNzX2dyMjBfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IyMV9oaTsK ICAgICAgICB1aW50MzJfdCBzc19ncjIxX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMjJfaGk7 CiAgICAgICAgdWludDMyX3Qgc3NfZ3IyMl9sbzsKICAgICAgICB1aW50MzJfdCBzc19hcmczX2hp OwogICAgICAgIHVpbnQzMl90IHNzX2FyZzNfbG87CiAgICAgICAgdWludDMyX3Qgc3NfYXJnMl9o aTsKICAgICAgICB1aW50MzJfdCBzc19hcmcyX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2FyZzFf aGk7CiAgICAgICAgdWludDMyX3Qgc3NfYXJnMV9sbzsKICAgICAgICB1aW50MzJfdCBzc19hcmcw X2hpOwogICAgICAgIHVpbnQzMl90IHNzX2FyZzBfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNz X2RwX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19kcF9sbzsKICAgICAgICB1bnNpZ25lZCBp bnQgc3NfcmV0MF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfcmV0MF9sbzsKICAgICAgICB1 bnNpZ25lZCBpbnQgc3NfcmV0MV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfcmV0MV9sbzsK ICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3BfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Nw X2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19ncjMxX2hpOwogICAgICAgIHVuc2lnbmVkIGlu dCBzc19ncjMxX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19jcjExX2hpOwogICAgICAgIHVu c2lnbmVkIGludCBzc19jcjExX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY29xX2hlYWRf aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjb3FfaGVhZF9sbzsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3NfcGNzcV9oZWFkX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX2hlYWRf bG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjb3FfdGFpbF9oaTsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3NfcGNvcV90YWlsX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX3RhaWxf aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjc3FfdGFpbF9sbzsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3NfY3IxNV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxNV9sbzsKICAgICAg ICB1bnNpZ25lZCBpbnQgc3NfY3IxOV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxOV9s bzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQg c3NfY3IyMF9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMV9oaTsKICAgICAgICB1bnNp Z25lZCBpbnQgc3NfY3IyMV9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMl9oaTsKICAg ICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMl9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3B1 c3RhdGVfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NwdXN0YXRlX2xvOwogICAgICAgIHVu c2lnbmVkIGludCBzc19zcjRfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNF9sbzsKICAg ICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IwX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjBf bG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyMV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQg c3Nfc3IxX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjJfaGk7CiAgICAgICAgdW5zaWdu ZWQgaW50IHNzX3NyMl9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IzX2hpOwogICAgICAg IHVuc2lnbmVkIGludCBzc19zcjNfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNV9oaTsK ICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3I1X2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19z cjZfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNl9sbzsKICAgICAgICB1bnNpZ25lZCBp bnQgc3Nfc3I3X2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjdfbG87CiAgICAgICAgdW5z aWduZWQgaW50IHNzX2NyMF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IwX2xvOwogICAg ICAgIHVuc2lnbmVkIGludCBzc19jcjhfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyOF9s bzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3I5X2hpOwogICAgICAgIHVuc2lnbmVkIGludCBz c19jcjlfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTBfaGk7CiAgICAgICAgdW5zaWdu ZWQgaW50IHNzX2NyMTBfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTJfaGk7CiAgICAg ICAgdW5zaWduZWQgaW50IHNzX2NyMTJfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTNf aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTNfbG87CiAgICAgICAgdW5zaWduZWQgaW50 IHNzX2NyMjRfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjRfbG87CiAgICAgICAgdW5z aWduZWQgaW50IHNzX2NyMjVfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjVfbG87CiAg ICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjZfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2Ny MjZfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjdfaGk7CiAgICAgICAgdW5zaWduZWQg aW50IHNzX2NyMjdfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Jlc2VydmVkMls0XTsKICAg ICAgICB1bnNpZ25lZCBpbnQgc3Nfb2xkY2tzdW07CiAgICAgICAgdW5zaWduZWQgaW50IHNzX25l d2Nrc3VtOwp9IF9fcmVnMzJfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9fc3NfbmFycm93IHsKCiAg ICAgICAgaW50IHNzX2dyMTsKICAgICAgICBpbnQgc3NfcnA7CiAgICAgICAgaW50IHNzX2dyMzsK ICAgICAgICBpbnQgc3NfZ3I0OwogICAgICAgIGludCBzc19ncjU7CiAgICAgICAgaW50IHNzX2dy NjsKICAgICAgICBpbnQgc3NfZ3I3OwogICAgICAgIGludCBzc19ncjg7CiAgICAgICAgaW50IHNz X2dyOTsKICAgICAgICBpbnQgc3NfZ3IxMDsKICAgICAgICBpbnQgc3NfZ3IxMTsKICAgICAgICBp bnQgc3NfZ3IxMjsKICAgICAgICBpbnQgc3NfZ3IxMzsKICAgICAgICBpbnQgc3NfZ3IxNDsKICAg ICAgICBpbnQgc3NfZ3IxNTsKICAgICAgICBpbnQgc3NfZ3IxNjsKICAgICAgICBpbnQgc3NfZ3Ix NzsKICAgICAgICBpbnQgc3NfZ3IxODsKICAgICAgICBpbnQgc3NfZ3IxOTsKICAgICAgICBpbnQg c3NfZ3IyMDsKICAgICAgICBpbnQgc3NfZ3IyMTsKICAgICAgICBpbnQgc3NfZ3IyMjsKICAgICAg ICBpbnQgc3NfYXJnMzsKICAgICAgICBpbnQgc3NfYXJnMjsKICAgICAgICBpbnQgc3NfYXJnMTsK ICAgICAgICBpbnQgc3NfYXJnMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfZHA7CiAgICAgICAg dW5zaWduZWQgaW50IHNzX3JldDA7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3JldDE7CiAgICAg ICAgdW5zaWduZWQgaW50IHNzX3NwOwogICAgICAgIHVuc2lnbmVkIGludCBzc19ncjMxOwogICAg ICAgIHVuc2lnbmVkIGludCBzc19jcjExOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY29xX2hl YWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjc3FfaGVhZDsKICAgICAgICB1bnNpZ25lZCBp bnQgc3NfcGNvcV90YWlsOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX3RhaWw7CiAgICAg ICAgdW5zaWduZWQgaW50IHNzX2NyMTU7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTk7CiAg ICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjA7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjE7 CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjI7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2Nw dXN0YXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjQ7CiAgICAgICAgdW5zaWduZWQgaW50 IHNzX3NyMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IxOwogICAgICAgIHVuc2lnbmVkIGlu dCBzc19zcjI7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyMzsKICAgICAgICB1bnNpZ25lZCBp bnQgc3Nfc3I1OwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjY7CiAgICAgICAgdW5zaWduZWQg aW50IHNzX3NyNzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IwOwogICAgICAgIHVuc2lnbmVk IGludCBzc19jcjg7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyOTsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3NfY3IxMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxMjsKICAgICAgICB1bnNp Z25lZCBpbnQgc3NfY3IxMzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyNDsKICAgICAgICB1 bnNpZ25lZCBpbnQgc3NfY3IyNTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyNjsKICAgICAg ICB1bnNpZ25lZCBpbnQgc3NfY3IyNzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfbXBzZnVfbG93 OwogICAgICAgIHVuc2lnbmVkIGludCBzc19tcHNmdV9vdmZsbzsKCgoKCgp9IF9fc3NfbmFycm93 X3Q7CiMgNjM2ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZlX3N0YXRlLmgiIDMKdHlwZWRlZiBz dHJ1Y3QgX19zYXZlX3N0YXRlIHsKCiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAgIF9fc3Nf bmFycm93X3Qgc3NfbmFycm93OwogICAgICAgIGludCBzc19wYWQ7CiAgICAgICAgdW5pb24gewoK ICAgICAgICAgICAgICAgIGZwX2RibF9ibG9ja190IGZwZGJsOwogICAgICAgICAgICAgICAgZnBf aW50X2Jsb2NrX3QgZnBpbnQ7CgoKCgogICAgICAgIH0gc3NfZnBibG9jazsKICAgICAgICBjaGFy IHNzX3hvcls0KjMyXTsKICAgICAgICB1bmlvbiB7CiMgNjc5ICIvdXNyL2luY2x1ZGUvbWFjaGlu ZS9zYXZlX3N0YXRlLmgiIDMKICAgICAgICAgICAgICAgIF9fcmVnNjRfdCBzc182NDsKICAgICAg ICAgICAgICAgIF9fcmVnMzJfdCBzc18zMjsKICAgICAgICB9IHNzX3dpZGU7Cn0gc2F2ZV9zdGF0 ZV90OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5oIiAyIDMKCgogICB0eXBlZGVmIHN0 cnVjdCBfX3N0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7 CiAgICAgICAgc2l6ZV90IHNzX3NpemU7CiAgIH0gc3RhY2tfdDsKCgp0eXBlZGVmIHNhdmVfc3Rh dGVfdCBtY29udGV4dF90OwojIDYyICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5oIiAzCnN0cnVj dCBfX3N1Yl9jdHh0IHsKICAgICAgICBzdHJ1Y3QgX191Y29udGV4dCAqX191Y19saW5rOwoKCgog ICAgICAgIHNpZ3NldF90IF9fdWNfc2lnbWFzazsKCgogICAgICAgIHN0YWNrX3QgX191Y19zdGFj azsKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3N1Yl9jdHh0IF9fc3ViX2N0eHRfdDsKCgoKdHlwZWRl ZiBzdHJ1Y3QgX191Y29udGV4dCB7CiAgICAgICAgbWNvbnRleHRfdCB1Y19tY29udGV4dDsKICAg ICAgICBpbnQgdWNfc3BhcmVzWzhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdWNfY3JlYXRlZF9i eV9nZXRjb250ZXh0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVjX3Jlc2VydmVkX2ZsYWdzOjMx OwogICAgICAgIHN0cnVjdCBfX3N1Yl9jdHh0IHVjX3N1YmNvbnRleHQ7Cgp9IHVjb250ZXh0X3Q7 CiMgMTggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMwojIDQxICIvdXNyL2luY2x1ZGUv c3lzL3NpZ25hbC5oIiAzCiAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnX2F0b21pY190OwojIDUy ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgIHN0cnVjdCBzaWdhY3Rpb24gewogICAg ICB1bmlvbiB7CgoKCiAgICAgICAgICAgICAgdm9pZCAoKl9fc2Ffc2lnYWN0aW9uKShpbnQsIHNp Z2luZm9fdCAqLCB2b2lkICopOwoKCgoKCgoKICAgICAgICAgICAgICB2b2lkICgqX19zYV9oYW5k bGVyKShpbnQpOwogICAgICB9IF9faGFuZGxlcjsKCiAgICAgIHNpZ3NldF90IHNhX21hc2s7CgoK ICAgICAgaW50IHNhX2ZsYWdzOwogICB9OwojIDgxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o IiAzCnR5cGVkZWYgaW50IHB0aHJlYWRfdDsKIyA5MyAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu aCIgMwogIHN0cnVjdCB0aW1lc3BlYyB7CgoKCiAgICAgICAgdGltZV90IHR2X3NlYzsKCiAgICAg ICAgbG9uZyB0dl9uc2VjOwp9Owp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3RydWNfdDsK IyAxMTYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgc3RydWN0IHNpZ3N0YWNrIHsK CiAgICAgICAgdm9pZCAqc3Nfc3A7CgoKCiAgICAgICAgaW50IHNzX29uc3RhY2s7CiAgIH07CiMg MTMyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgIHN0cnVjdCBzaWd2ZWMgewogICAg ICB2b2lkICgqc3ZfaGFuZGxlcikoaW50KTsKICAgICAgaW50IHN2X21hc2s7CiAgICAgIGludCBz dl9mbGFnczsKICAgfTsKIyAxNTIgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICBl eHRlcm4gdm9pZCAoKnNpZ25hbChpbnQsIHZvaWQgKCopIChpbnQpKSkoaW50KTsKICAgICBleHRl cm4gaW50IHJhaXNlKGludCk7CiMgMTYyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAg ICAgZXh0ZXJuIGludCBraWxsKHBpZF90LCBpbnQpOwogICAgIGV4dGVybiBpbnQgc2lnZW1wdHlz ZXQoc2lnc2V0X3QgKik7CiAgICAgZXh0ZXJuIGludCBzaWdmaWxsc2V0KHNpZ3NldF90ICopOwog ICAgIGV4dGVybiBpbnQgc2lnYWRkc2V0KHNpZ3NldF90ICosIGludCk7CiAgICAgZXh0ZXJuIGlu dCBzaWdkZWxzZXQoc2lnc2V0X3QgKiwgaW50KTsKICAgICBleHRlcm4gaW50IHNpZ2lzbWVtYmVy KGNvbnN0IHNpZ3NldF90ICosIGludCk7CiAgICAgZXh0ZXJuIGludCBzaWdhY3Rpb24oaW50LCBj b25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICosIHN0cnVjdCBzaWdhY3Rpb24gKik7CiAgICAgZXh0ZXJu IGludCBzaWdwcm9jbWFzayhpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNpZ3NldF90ICopOwogICAg IGV4dGVybiBpbnQgc2lnc3VzcGVuZChjb25zdCBzaWdzZXRfdCAqKTsKICAgICBleHRlcm4gaW50 IHNpZ3BlbmRpbmcoc2lnc2V0X3QgKik7CiMgMTg4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o IiAzCiAgICAgZXh0ZXJuIGludCBzaWd3YWl0KGNvbnN0IHNpZ3NldF90ICpzZXQsIGludCAqc2ln KTsKCiAgICAgZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2soaW50IGhvdywgY29uc3Qgc2lnc2V0 X3QgKnNldCwgc2lnc2V0X3QgKm9zZXQpOwogICAgIGV4dGVybiBpbnQgcHRocmVhZF9raWxsKHB0 aHJlYWRfdCB0aHJlYWQsIGludCBzaWcpOwojIDIwNCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu aCIgMwogICAgIGV4dGVybiBpbnQgc2lnd2FpdGluZm8oY29uc3Qgc2lnc2V0X3QgKnNldCwgc2ln aW5mb190ICppbmZvKTsKICAgICBleHRlcm4gaW50IHNpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRf dCAqc2V0LCBzaWdpbmZvX3QgKiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB0aW1lc3BlYyAqdGltZW91dCk7CiAgICAgZXh0ZXJuIGludCBzaWdxdWV1ZShw aWRfdCBwaWQsIGludCBzaWdubywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9u IHNpZ3ZhbCB2YWx1ZSk7CiMgMjE4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAg ICAgZXh0ZXJuIHZvaWQgKCpic2Rfc2lnbmFsKGludCwgdm9pZCgqKShpbnQpKSkoaW50KTsKICAg ICAgICBleHRlcm4gaW50IGtpbGxwZyhwaWRfdCwgaW50KTsKCiAgICAgICAgZXh0ZXJuIGludCBz aWdzdGFjayhzdHJ1Y3Qgc2lnc3RhY2sgKiwgc3RydWN0IHNpZ3N0YWNrICopOwoKCgogICAgICAg IGV4dGVybiBpbnQgc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190ICopOwogICAg ICAgIGV4dGVybiBpbnQgc2lnaW50ZXJydXB0KGludCwgaW50KTsKIyAyMzcgIi91c3IvaW5jbHVk ZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgICAgICBleHRlcm4gdm9pZCAoKnNpZ3NldChpbnQsIHZv aWQgKCopKGludCkpKShpbnQpOwogICAgICAgICAgIGV4dGVybiBpbnQgc2lnaG9sZChpbnQpOwog ICAgICAgICAgIGV4dGVybiBpbnQgc2lncmVsc2UoaW50KTsKICAgICAgICAgICBleHRlcm4gaW50 IHNpZ2lnbm9yZShpbnQpOwogICAgICAgICAgIGV4dGVybiBpbnQgc2lncGF1c2UoaW50KTsKIyAy NTUgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICBleHRlcm4gbG9uZyBzaWdibG9j ayhsb25nKTsKICAgICBleHRlcm4gbG9uZyBzaWdzZXRtYXNrKGxvbmcpOwogICAgIGV4dGVybiBp bnQgc2lndmVjdG9yKGludCwgY29uc3Qgc3RydWN0IHNpZ3ZlYyAqLCBzdHJ1Y3Qgc2lndmVjICop OwogICAgIGV4dGVybiBpbnQgKCpzc2lnbmFsKGludCwgaW50ICgqKSAoaW50KSkpKGludCk7CgoK CiAgICAgZXh0ZXJuIHNzaXplX3Qgc2lnc3BhY2Uoc3NpemVfdCk7CiAgICAgZXh0ZXJuIGludCBn c2lnbmFsKGludCk7CiMgMzUzICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICAg ZXh0ZXJuIGxvbmcgX19fc3lzY29uZihpbnQpOwojIDUyMiAiL3Vzci9pbmNsdWRlL3N5cy9zaWdu YWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oIiAxIDMKIyAyMyAiL3Vzci9p bmNsdWRlL3N5cy9zeXNjYWxsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NjYWxsX2RlZmlu ZS5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDIgMwojIDUyMyAiL3Vz ci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZnJh bWUuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2ZyYW1lLmgiIDMKdHlwZWRlZiBz dHJ1Y3QgZnJhbWVfbWFya2VyIHsKICAgICAgICBpbnQgZm1fZWRwOwogICAgICAgIGludCBmbV9l c3I0OwogICAgICAgIGludCBmbV9lcnA7CiAgICAgICAgaW50IGZtX2NycDsKICAgICAgICBpbnQg Zm1fc2w7CiAgICAgICAgaW50IGZtX2NsdXA7CiAgICAgICAgaW50IGZtX2VwOwogICAgICAgIGlu dCBmbV9wc3A7Cn0gZnJhbWVfbWFya2VyX3Q7CiMgNTI0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h bC5oIiAyIDMKIyA1MzYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgIHN0cnVj dCBzaWdsb2NhbF9taXNjIHsKICAgICAgICAgICAgICAgIGludCBzbV9zeXNjYWxsOwogICAgICAg ICAgICAgICAgaW50IHNtX29uc3RhY2s7CiAgICAgICAgICAgICAgICBpbnQgc21fb21hc2s7CiAg ICAgICAgICAgICAgICBjaGFyIHNtX3N5c2NhbGxfYWN0aW9uOwogICAgICAgICAgICAgICAgY2hh ciBzbV9lb3N5czsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNtX2Vycm9yOwogICAg ICAgICAgICAgICAgbG9uZyBzbV9ydmFsMTsKICAgICAgICAgICAgICAgIGxvbmcgc21fcnZhbDI7 CiAgICAgICAgICAgICAgICBsb25nIHNtX2FyZ1s0XTsKICAgICAgIH07CiAgICAgICB0eXBlZGVm IHN0cnVjdCBzaWdsb2NhbF9taXNjIHNpZ2xvY2FsX21pc2NfdDsKCiAgICAgICBzdHJ1Y3Qgc2ln bG9jYWwgewogICAgICAgICAgICAgICAgc3RydWN0IHNpZ2xvY2FsX21pc2Mgc2xfbWlzYzsKICAg ICAgICAgICAgICAgIHNhdmVfc3RhdGVfdCBzbF9zczsKICAgICAgIH07CiMgNTY4ICIvdXNyL2lu Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICBzdHJ1Y3Qgc2lnbG9jYWx4IHsKICAgICAgICAg ICAgICAgIHN0cnVjdCBzaWdsb2NhbF9taXNjIHNsX21pc2M7CiAgICAgICAgICAgICAgICB1Y29u dGV4dF90IHNsX3VjOwogICAgICAgICAgICAgICAgc2lnaW5mb190IHNsX3NpOwogICAgICAgfTsK IyA1ODggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgICBzdHJ1Y3QgX194c2kg ewogICAgICAgICAgICAgICAgc3RydWN0IF9fc3ViX2N0eHQgc2M7CgogICAgICAgICAgICAgICAg aW50IF9fcGFkZGluZzsKCgoKICAgICAgICAgICAgICAgIHNpZ2luZm9fdCBzaTsKICAgICAgICB9 OwogICAgICAgIHR5cGVkZWYgc3RydWN0IF9feHNpIF9feHNpX3Q7CiMgNjA2ICIvdXNyL2luY2x1 ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICBzdHJ1Y3Qgc2lnY29udGV4dCB7CgogICAgICAgICAg ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnbG9jYWwgc2w7 CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdsb2NhbHggc3g7CiAgICAgICAgICAg ICAgICB9IHNjX2N0eHQ7CgoKCgoKCgogICAgICAgICAgICAgICAgbG9uZyBzY19hcmdzWzRdOwoK CgoKICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9tYXJrZXIgc2Nfc2ZtOwoKCiAgICAgICB9 OwojIDYgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCiMgMjkgImluY2x1ZGVzLmgiIDIKIyAx ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu MDAvMy4xL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDQzICIvb3B0L2dudS9nY2MvMy4xLWhwcGEy LjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkbGliLmgi IDMKICAgICAgICAgIGV4dGVybiBpbnQgYWJzKGludCk7CiMgNjQgIi9vcHQvZ251L2djYy8zLjEt aHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRs aWIuaCIgMwogICBleHRlcm4gaW50IF9fbmxfY2hhcl9zaXplOwojIDc3ICIvb3B0L2dudS9nY2Mv My4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUv c3RkbGliLmgiIDMKCiAgIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAg ICBpbnQgcmVtOwogICB9IGRpdl90OwogICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBp bnQgcXVvdDsKICAgICAgICBsb25nIGludCByZW07CiAgIH0gbGRpdl90OwoKCgoKCgoKIyAxICIv b3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAv My4xL2luY2x1ZGUvc3lzL193Y2hhcl90LmgiIDEgMwojIDQ2ICIvb3B0L2dudS9nY2MvMy4xLWhw cGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL193 Y2hhcl90LmgiIDMKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQg d2NoYXJfdDsKIyA5NCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKICAgICAgIGV4 dGVybiBkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwoKICAgICBleHRlcm4gaW50IGF0b2koY29u c3QgY2hhciAqKTsKICAgICBleHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOwogICAg IGV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CiAgICAgZXh0ZXJu IGxvbmcgaW50IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAgICAgZXh0ZXJu IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwog ICAgIGV4dGVybiBpbnQgcmFuZCh2b2lkKTsKICAgICBleHRlcm4gdm9pZCBzcmFuZCh1bnNpZ25l ZCBpbnQpOwogICAgIGV4dGVybiBpbnQgYXRleGl0KHZvaWQgKCopICh2b2lkKSk7CiAgICAgZXh0 ZXJuIHZvaWQgZXhpdChpbnQpOwogICAgIGV4dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAq KTsKICAgICBleHRlcm4gaW50IHN5c3RlbShjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBkaXZf dCBkaXYoaW50LCBpbnQpOwogICAgIGV4dGVybiBsZGl2X3QgbGRpdihsb25nIGludCwgbG9uZyBp bnQpOwogICAgIGV4dGVybiBsb25nIGludCBsYWJzKGxvbmcgaW50KTsKICAgICBleHRlcm4gaW50 IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IG1idG93Yyh3Y2hh cl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IHdjdG9tYihjaGFy ICosIHdjaGFyX3QpOwogICAgIGV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25z dCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIHNpemVfdCB3Y3N0b21icyhjaGFyICosIGNv bnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gdm9pZCBmcmVlKHZvaWQgKik7CiAg ICAgZXh0ZXJuIHZvaWQgcXNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25z dCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKIyAxNjEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRsaWIuaCIg MwoKICAgICAgIGV4dGVybiB2b2lkIGFib3J0KHZvaWQpOwogICAgICAgZXh0ZXJuIHZvaWQgKmJz ZWFyY2goY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCop IChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwogICAgICAgZXh0ZXJuIHZvaWQgKmNhbGxv YyhzaXplX3QsIHNpemVfdCk7CiAgICAgICBleHRlcm4gdm9pZCAqbWFsbG9jKHNpemVfdCk7CiAg ICAgICBleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CgojIDIxNSAiL29wdC9n bnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9p bmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgZXh0ZXJuIHZvaWQgc2V0a2V5KGNvbnN0IGNoYXIgKik7 CiAgICAgZXh0ZXJuIHZvaWQgbGNvbmc0OCggdW5zaWduZWQgc2hvcnQgW10gKTsKIyAyMjYgIi9v cHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8z LjEvaW5jbHVkZS9zdGRsaWIuaCIgMwogICAgICAgIGV4dGVybiBkb3VibGUgZHJhbmQ0OCh2b2lk KTsKICAgICAgICBleHRlcm4gZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnQgW10pOwogICAg ICAgIGV4dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgW10pOwogICAgICAgIGV4dGVy biBsb25nIGxyYW5kNDgodm9pZCk7CiAgICAgICAgZXh0ZXJuIGxvbmcgbXJhbmQ0OCh2b2lkKTsK ICAgICAgICBleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0IFtdKTsKICAgICAgICBl eHRlcm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwogICAgICAgIGV4dGVybiB1bnNpZ25lZCBzaG9ydCAq c2VlZDQ4KHVuc2lnbmVkIHNob3J0IFtdKTsKICAgICAgICBleHRlcm4gaW50IHB1dGVudihjb25z dCBjaGFyICopOwojIDI1MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgICBleHRlcm4g aW50IGNsZWFyZW52KHZvaWQpOwogICAgICAgZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICog Y29uc3QgW10sIGNvbnN0IGNoYXIgKik7CiAgICAgICBleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25z dCBjaGFyICopOwoKCgoKCgogICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0ZXJuIGlu dCBvcHRpbmQ7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy93YWl0LmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwogICAgICAgZXh0 ZXJuIHBpZF90IHdhaXQoaW50ICopOwogICAgICAgZXh0ZXJuIHBpZF90IHdhaXRwaWQocGlkX3Qs IGludCAqLCBpbnQpOwojIDgzICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3Iv aW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3Vy Y2UuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyA4NiAiL3Vzci9pbmNs dWRlL3N5cy90aW1lLmgiIDMKICAgc3RydWN0IHRtIHsKICAgICAgaW50IHRtX3NlYzsKICAgICAg aW50IHRtX21pbjsKICAgICAgaW50IHRtX2hvdXI7CiAgICAgIGludCB0bV9tZGF5OwogICAgICBp bnQgdG1fbW9uOwogICAgICBpbnQgdG1feWVhcjsKICAgICAgaW50IHRtX3dkYXk7CiAgICAgIGlu dCB0bV95ZGF5OwogICAgICBpbnQgdG1faXNkc3Q7CiAgIH07CiMgMTE1ICIvdXNyL2luY2x1ZGUv c3lzL3RpbWUuaCIgMwpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj IGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCgp0eXBl ZGVmIGVudW0gX19jbG9ja2lkX3QgewogICAgICAgIENMT0NLX0lOVkFMSUQgPSAwLAogICAgICAg IENMT0NLX1JFQUxUSU1FID0gMSwKICAgICAgICBDTE9DS19WSVJUVUFMID0gMiwKICAgICAgICBD TE9DS19QUk9GSUxFID0gNCwKICAgICAgICBSVFRJTUVSMCA9IDgsCiAgICAgICAgUlRUSU1FUjEg PSAxNgp9IGNsb2NraWRfdDsKCgoKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdGltZXJf dDsKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiAgICAgICAgc3RydWN0IHRpbWV2 YWwgewoKICAgICAgICAgICAgICAgIHRpbWVfdCB0dl9zZWM7CgoKCiAgICAgICAgICAgICAgICBs b25nIHR2X3VzZWM7CiAgICAgICAgfTsKCgoKICAgc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAg c3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFs dWU7CiAgIH07CgoKCgoKICAgc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRl c3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7CiAgIH07CgoKICAgdHlwZWRlZiBzdHJ1Y3Qg X19jeWNsZXMgewogICAgICAgIHVpbnQzMl90IGhpOwogICAgICAgIHVpbnQzMl90IGxvOwogICB9 IGN5Y2xlc190OwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICBleHRlcm4g ZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwgdGltZV90KTsKCgoKCiAgICAgZXh0ZXJuIHRpbWVfdCBt a3RpbWUoc3RydWN0IHRtICopOwoKCgoKICAgICBleHRlcm4gdGltZV90IHRpbWUodGltZV90ICop OwoKCgogICAgIGV4dGVybiBjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKCgoKCiAg ICAgZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHN0 cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHN0cnVjdCB0 bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHNpemVfdCBzdHJm dGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CiMg MzcyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgICAgZXh0ZXJuIGNsb2NrX3QgY2xv Y2sodm9pZCk7CiMgMzg5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgIGV4dGVybiB2 b2lkIHR6c2V0KHZvaWQpOwojIDM5OCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgZXh0 ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoKCgoKICAgICBleHRlcm4gaW50IGNsb2NrX3NldHRpbWUo Y2xvY2tpZF90LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CiAgICAgZXh0ZXJuIGludCBjbG9j a19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwogICAgIGV4dGVybiBpbnQg Y2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwogICAgIGV4dGVybiBp bnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwgc3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3QgKik7 CiAgICAgZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CiAgICAgZXh0ZXJuIGludCB0 aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKik7CiAgICAgZXh0 ZXJuIGludCB0aW1lcl9nZXR0aW1lKHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwogICAg IGV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKICAgICBleHRlcm4gaW50IG5h bm9zbGVlcChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwojIDQz OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICAgICAgZXh0ZXJuIGNoYXIgKnN0cnB0 aW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CiMgNDUwICIvdXNy L2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgICAgZXh0ZXJuIGxvbmcgdGltZXpvbmU7CgoKCgog ICAgICAgZXh0ZXJuIGludCBkYXlsaWdodDsKIyA0ODIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o IiAzCiAgICAgZXh0ZXJuIGludCBnZXRpdGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwog ICAgIGV4dGVybiBpbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBz dHJ1Y3QgaXRpbWVydmFsICopOwogICAgIGV4dGVybiBpbnQgdXRpbWVzKGNvbnN0IGNoYXIgKnBh dGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIGFtdGltZXNbMl0pOwogICAgIGV4dGVybiBpbnQgZ2V0 dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7CgoKCiAgICAgICBleHRlcm4gaW50 IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFs ICopOwojIDUxMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICBleHRlcm4gaW50IGFk anRpbWUoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2YWwgKik7CgoKCiAgICAg ICBleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlKGNvbnN0IGNoYXIgKik7CiMgNTI2ICIvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgIGV4dGVybiBpbnQgc2V0dGltZW9mZGF5KGNvbnN0IHN0 cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqKTsKICAgICBleHRlcm4gaW50 IHN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKICAgICBleHRlcm4gdm9pZCBwcm9maWwoY29uc3Qgdm9p ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50KTsKIyA1NTYgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o IiAzCiAgICAgICBleHRlcm4gaW50IGdldGRhdGVfZXJyOwojIDYwNyAiL3Vzci9pbmNsdWRlL3N5 cy90aW1lLmgiIDMKICAgIHN0cnVjdCBraV90aW1ldmFsIHsKICAgICAgICAgICAgdWludDMyX3Qg cGFkMTsKICAgICAgICAgICAgdWludDMyX3QgcGFkMjsKICAgIH07CiMgNjI3ICIvdXNyL2luY2x1 ZGUvc3lzL3RpbWUuaCIgMwp0eXBlZGVmIHVpbnQ2NF90IGt0X3Q7CiMgMjcgIi91c3IvaW5jbHVk ZS9zeXMvcmVzb3VyY2UuaCIgMiAzCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIg MwojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3JsaW1pdF9ib2R5LmgiIDEgMwojIDEyICIvdXNyL2lu Y2x1ZGUvc3lzL19ybGltaXRfYm9keS5oIiAzCnN0cnVjdCBybGltaXQgewogICAgICAgIHJsaW1f dCBybGltX2N1cjsKICAgICAgICBybGltX3QgcmxpbV9tYXg7Cn07CiMgNDAgIi91c3IvaW5jbHVk ZS9zeXMvcmVzb3VyY2UuaCIgMiAzCiMgODkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIg MwpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAg ICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICAgICAgbG9uZyBydV9tYXhyc3M7CgogICAg ICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1 X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0Owog ICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxv bmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X2lvY2g7CiAgICAgICAgbG9uZyBydV9tc2dz bmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFsczsKICAg ICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3OwoKfTsKIyAxMzIgIi91 c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwogICBleHRlcm4gaW50IGdldHByaW9yaXR5IChp bnQsIGlkX3QpOwogICBleHRlcm4gaW50IGdldHJ1c2FnZSAoaW50LCBzdHJ1Y3QgcnVzYWdlICop OwogICBleHRlcm4gaW50IHNldHByaW9yaXR5IChpbnQsIGlkX3QsIGludCk7CiAgIHN0YXRpYyBp bnQgZ2V0cmxpbWl0IChpbnQsIHN0cnVjdCBybGltaXQgKik7CiAgIHN0YXRpYyBpbnQgc2V0cmxp bWl0IChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQgKik7CiMgMTQ5ICIvdXNyL2luY2x1ZGUvc3lz L3Jlc291cmNlLmgiIDMKIGV4dGVybiBpbnQgX19nZXRybGltaXQ2NCAoaW50LCBzdHJ1Y3Qgcmxp bWl0ICopOwogZXh0ZXJuIGludCBfX3NldHJsaW1pdDY0IChpbnQsIGNvbnN0IHN0cnVjdCBybGlt aXQgKik7CgogICBzdGF0aWMgaW50IGdldHJsaW1pdChpbnQgYSwgc3RydWN0IHJsaW1pdCAqYikK ICAgICAgICAgICAgICAgIHsgcmV0dXJuIF9fZ2V0cmxpbWl0NjQoYSxiKTsgfQogICBzdGF0aWMg aW50IHNldHJsaW1pdChpbnQgYSwgY29uc3Qgc3RydWN0IHJsaW1pdCAqYikKICAgICAgICAgICAg ICAgIHsgcmV0dXJuIF9fc2V0cmxpbWl0NjQoYSxiKTsgfQojIDg0ICIvdXNyL2luY2x1ZGUvc3lz L3dhaXQuaCIgMiAzCiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwogICAgICAgICAg IGV4dGVybiBwaWRfdCB3YWl0MyhpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdlICopOwojIDE1OSAi L3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKdHlwZWRlZiBlbnVtIHsKICAgICAgICBQX1BJRCwK ICAgICAgICBQX1BHSUQsCiAgICAgICAgUF9TSUQsCiAgICAgICAgUF9VSUQsCiAgICAgICAgUF9H SUQsCiAgICAgICAgUF9DSUQsCiAgICAgICAgUF9BTEwKfSBpZHR5cGVfdDsKIyAxNzcgIi91c3Iv aW5jbHVkZS9zeXMvd2FpdC5oIiAzCiAgICAgICAgZXh0ZXJuIGludCB3YWl0aWQoaWR0eXBlX3Qs IGlkX3QsIHNpZ2luZm9fdCAqLCBpbnQpOwojIDE5NSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0Lmgi IDMKICAgdW5pb24gd2FpdCB7CiAgICAgICAgaW50IHdfc3RhdHVzOwoKCgogICAgICAgIHN0cnVj dCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB3X3BhZDsKICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCB3X1JldGNvZGU6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3 X0NvcmVkdW1wOjE7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19UZXJtc2lnOjc7CiAg ICAgICAgfSB3X1Q7CgoKCgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu ZWQgc2hvcnQgd19wYWQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19TdG9wc2lnOjg7 CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19TdG9wdmFsOjg7CiAgICAgICAgfSB3X1M7 CiAgIH07CiMgMjY2ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIu MC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKICAgICAgICAgICAg ICAgIGV4dGVybiBpbnQgbWtzdGVtcChjaGFyICopOwogICAgICAgICAgICAgICAgZXh0ZXJuIGNo YXIgKm1rdGVtcChjaGFyICopOwogICAgICAgICAgICAgICAgZXh0ZXJuIGludCB0dHlzbG90KHZv aWQpOwojIDI4MSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgICAgZXh0ZXJuIGxvbmcg YTY0bChjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFyICpsNjRhKGxvbmcpOwoKCiAg ICAgICBleHRlcm4gY2hhciAqZmN2dChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKICAgICAg IGV4dGVybiBjaGFyICplY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwoKCiAgICAgICAg ZXh0ZXJuIGNoYXIgKmdjdnQoZG91YmxlLCBpbnQsIGNoYXIgKik7CiAgICAgICAgZXh0ZXJuIGlu dCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogICAgICAgIGV4 dGVybiBpbnQgZ3JhbnRwdChpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpwdHNuYW1lKGludCk7 CiAgICAgICAgZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICAg ICAgICBleHRlcm4gaW50IHVubG9ja3B0KGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgKnZhbGxv YyhzaXplX3QpOwogICAgZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSh1bnNpZ25lZCBpbnQsIGNoYXIg Kiwgc2l6ZV90KTsKICAgIGV4dGVybiBjaGFyICpzZXRzdGF0ZShjb25zdCBjaGFyICopOwogICAg ZXh0ZXJuIHZvaWQgc3JhbmRvbSh1bnNpZ25lZCBpbnQpOwogICAgICAgIGV4dGVybiBsb25nIHJh bmRvbSh2b2lkKTsKIyAzMzggIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9o cHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRsaWIuaCIgMwogIHN0cnVjdCBtYWxs aW5mbyB7CiAgICAgICAgaW50MzJfdCBhcmVuYTsKICAgICAgICBpbnQzMl90IG9yZGJsa3M7CiAg ICAgICAgaW50MzJfdCBzbWJsa3M7CiAgICAgICAgaW50MzJfdCBoYmxrczsKICAgICAgICBpbnQz Ml90IGhibGtoZDsKICAgICAgICBpbnQzMl90IHVzbWJsa3M7CiAgICAgICAgaW50MzJfdCBmc21i bGtzOwogICAgICAgIGludDMyX3QgdW9yZGJsa3M7CiAgICAgICAgaW50MzJfdCBmb3JkYmxrczsK ICAgICAgICBpbnQzMl90IGtlZXBjb3N0OwogIH07CgoKCgogICAgIHR5cGVkZWYgc3RydWN0IHsK ICAgICAgIHVpbnQzMl90IHdvcmQxLCB3b3JkMiwgd29yZDMsIHdvcmQ0OwogICAgIH0gbG9uZ19k b3VibGU7CgoKCgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9wd2QuaCIgMSAzCiMgNDggIi9vcHQvZ251L2dj Yy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVk ZS9wd2QuaCIgMwogICBzdHJ1Y3QgcGFzc3dkIHsKICAgICAgICBjaGFyICpwd19uYW1lOwogICAg ICAgIGNoYXIgKnB3X3Bhc3N3ZDsKICAgICAgICB1aWRfdCBwd191aWQ7CiAgICAgICAgZ2lkX3Qg cHdfZ2lkOwogICAgICAgIGNoYXIgKnB3X2FnZTsKICAgICAgICBjaGFyICpwd19jb21tZW50Owog ICAgICAgIGNoYXIgKnB3X2dlY29zOwogICAgICAgIGNoYXIgKnB3X2RpcjsKICAgICAgICBjaGFy ICpwd19zaGVsbDsKICAgICAgICBpbnQzMl90IHB3X2F1ZGlkOwogICAgICAgIGludCBwd19hdWRm bGc7CiAgIH07CgoKICAgICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHd1aWQodWlkX3QpOwog ICAgIGV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRwd25hbShjb25zdCBjaGFyICopOwojIDg2ICIv b3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAv My4xL2luY2x1ZGUvcHdkLmgiIDMKICAgICBleHRlcm4gdm9pZCBlbmRwd2VudCh2b2lkKTsKICAg ICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQodm9pZCk7CiAgICAgZXh0ZXJuIHZvaWQg c2V0cHdlbnQodm9pZCk7CiMgOTcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9wd2QuaCIgMwogICBzdHJ1Y3Qgc19w YXNzd2QgewogICAgICAgY2hhciAqcHdfbmFtZTsKICAgICAgIGNoYXIgKnB3X3Bhc3N3ZDsKICAg ICAgIGNoYXIgKnB3X2FnZTsKICAgICAgIGludDMyX3QgcHdfYXVkaWQ7CiAgICAgICBpbnQgcHdf YXVkZmxnOwogICB9OwoKCgoKCgoKICAgICAgICAgZXh0ZXJuIGludCBwdXRwd2VudChjb25zdCBz dHJ1Y3QgcGFzc3dkICosIEZJTEUgKik7CiAgICAgZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRw d2VudChGSUxFICopOwogICAgIGV4dGVybiBzdHJ1Y3Qgc19wYXNzd2QgKmdldHNwd2VudCh2b2lk KTsKICAgICBleHRlcm4gc3RydWN0IHNfcGFzc3dkICpnZXRzcHd1aWQodWlkX3QpOwogICAgIGV4 dGVybiBzdHJ1Y3Qgc19wYXNzd2QgKmdldHNwd2FpZChpbnQzMl90KTsKICAgICBleHRlcm4gc3Ry dWN0IHNfcGFzc3dkICpnZXRzcHduYW0oY2hhciAqKTsKICAgICBleHRlcm4gc3RydWN0IHNfcGFz c3dkICpmZ2V0c3B3ZW50KEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgc2V0c3B3ZW50KHZvaWQp OwogICAgIGV4dGVybiB2b2lkIGVuZHNwd2VudCh2b2lkKTsKIyAzNjIgIi9vcHQvZ251L2djYy8z LjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9z dGRsaWIuaCIgMiAzCgoKCgoKCiAgICAgZXh0ZXJuIGNoYXIgKl9sZGVjdnQobG9uZ19kb3VibGUs IGludCwgaW50ICosIGludCAqKTsKICAgICBleHRlcm4gY2hhciAqX2xkZmN2dChsb25nX2RvdWJs ZSwgaW50LCBpbnQgKiwgaW50ICopOwogICAgIGV4dGVybiBjaGFyICpfbGRnY3Z0KGxvbmdfZG91 YmxlLCBpbnQsIGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBnZXRwdyhpbnQsIGNoYXIgKik7CiAg ICAgZXh0ZXJuIHZvaWQgbDN0b2wobG9uZyAqLCBjb25zdCBjaGFyICosIGludCk7CiAgICAgZXh0 ZXJuIHZvaWQgbHRvbDMoY2hhciAqLCBjb25zdCBsb25nICosIGludCk7CiAgICAgZXh0ZXJuIGNo YXIgKmx0b3N0cihsb25nLCBpbnQpOwogICAgIGV4dGVybiBjaGFyICp1bHRvc3RyKHVuc2lnbmVk IGxvbmcsIGludCk7CiAgICAgZXh0ZXJuIGNoYXIgKmx0b2EobG9uZyk7CiAgICAgZXh0ZXJuIGNo YXIgKnVsdG9hKHVuc2lnbmVkIGxvbmcpOwogICAgIGV4dGVybiB2b2lkIG1lbW9yeW1hcChpbnQp OwogICAgIGV4dGVybiBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8odm9pZCk7CiAgICAgZXh0ZXJu IGludCBtYWxsb3B0KGludCwgaW50KTsKICAgICBleHRlcm4gbG9uZ19kb3VibGUgc3RydG9sZChj b25zdCBjaGFyICosIGNoYXIgKiopOwojIDMwICJpbmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUv Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs dWRlL3N0cmluZy5oIiAxIDMKIyA0NyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9fbnVsbC5oIiAxIDMKIyA0OCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4w L2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAy IDMKIyA1OSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAt aHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCgogICAgIGV4dGVybiBpbnQgbWVtY21w KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBjaGFyICpz dHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgc3Ry bmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gdm9p ZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hh ciAqc3RyY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gY2hhciAqc3RybmNw eShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqc3RyY2F0 KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBzdHJjb2xsKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gc2l6ZV90IHN0cnhmcm0oY2hhciAqLCBjb25zdCBj aGFyICosIHNpemVfdCk7CgoKCgogICAgIGV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAq LCBpbnQpOwogICAgIGV4dGVybiBjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKICAgICBleHRlcm4gY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CiAgICAg ZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCiAgICAg ZXh0ZXJuIGNoYXIgKnN0cnRvayhjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGNo YXIgKnN0cmVycm9yKGludCk7CgojIDEyNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9n Y2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCgogICAg ICAgZXh0ZXJuIHZvaWQgKm1lbWNweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKCgoK CiAgICAgICBleHRlcm4gdm9pZCAqbWVtY2hyKGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwoK CgogICAgICAgZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90KTsKICAgICAg IGV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAg ICBleHRlcm4gc2l6ZV90IHN0cnNwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgoK ICAgICAgICAgIGV4dGVybiBzaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CgojIDE2MSAiL29w dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu MS9pbmNsdWRlL3N0cmluZy5oIiAzCiAgICAgICBleHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICos IGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDE4MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBh Mi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5o IiAzCiAgICAgZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwoKCgoKCgoKICAgICBl eHRlcm4gY2hhciAqc3RycnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0 ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRl cm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwog ICAgIGV4dGVybiBpbnQgbmxfc3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAg ICBleHRlcm4gaW50IG5sX3N0cm5jbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVf dCk7CiMgMzEgImluY2x1ZGVzLmgiIDIKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwoj IDExMCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1 eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFf bGlzdDsKIyAzMiAiaW5jbHVkZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDEgMwoj IDIwICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDMKICAgc3RydWN0IGdyb3VwIHsKICAgICAgICBjaGFy ICpncl9uYW1lOwogICAgICAgIGNoYXIgKmdyX3Bhc3N3ZDsKICAgICAgICBnaWRfdCBncl9naWQ7 CiAgICAgICAgY2hhciAqKmdyX21lbTsKICAgfTsKCgogICAgIGV4dGVybiBzdHJ1Y3QgZ3JvdXAg KmdldGdyZ2lkKGdpZF90KTsKICAgICBleHRlcm4gc3RydWN0IGdyb3VwICpnZXRncm5hbShjb25z dCBjaGFyICopOwojIDUxICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDMKICAgICBleHRlcm4gc3RydWN0 IGdyb3VwICpnZXRncmVudCh2b2lkKTsKICAgICBleHRlcm4gdm9pZCBlbmRncmVudCh2b2lkKTsK ICAgICBleHRlcm4gdm9pZCBzZXRncmVudCh2b2lkKTsKIyA2NyAiL3Vzci9pbmNsdWRlL2dycC5o IiAzCiAgICAgZXh0ZXJuIHN0cnVjdCBncm91cCAqZmdldGdyZW50IChGSUxFICopOwojIDM0ICJp bmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgNTEgIi9vcHQvZ251 L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5j bHVkZS90aW1lLmgiIDMKdHlwZWRlZiBpbnQ2NF90IGhydGltZV90OwoKCgoKCmV4dGVybiBocnRp bWVfdCBnZXRocnRpbWUoKTsKCiAgICAgICAgICAgZXh0ZXJuIGludCBnZXRfZXhwaXJhdGlvbl90 aW1lIChzdHJ1Y3QgdGltZXNwZWMgKixzdHJ1Y3QgdGltZXNwZWMgKik7CiMgMzUgImluY2x1ZGVz LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9k aXJlbnQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDEgMwojIDMxICIvdXNy L2luY2x1ZGUvc3lzL2RpcmVudC5oIiAzCiAgIHN0cnVjdCBkaXJlbnQgewoKCgogICAgICBpbm9f dCBkX2lubzsKCiAgICAgIHNob3J0IGRfcmVjbGVuOwogICAgICBzaG9ydCBkX25hbWxlbjsKICAg ICAgY2hhciBkX25hbWVbMjU1ICsgMV07CiAgIH07CiMgNzggIi91c3IvaW5jbHVkZS9zeXMvZGly ZW50LmgiIDMKICAgdHlwZWRlZiBzdHJ1Y3QgX19kaXJkZXNjIHsKICAgICAgaW50IF9fZGRfZmQ7 CiAgICAgIGxvbmcgX19kZF9sb2M7CiAgICAgIGxvbmcgX19kZF9zaXplOwogICAgICBsb25nIF9f ZGRfYmJhc2U7CiAgICAgIGxvbmcgX19kZF9lbnRubzsKICAgICAgbG9uZyBfX2RkX2JzaXplOwog ICAgICBjaGFyICpfX2RkX2J1ZjsKCgoKICAgICAgICB2b2lkICpfX2RkX3VudXNlZDsKCiAgIH0g RElSOwojIDEyMSAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMwogICAgIGV4dGVybiBESVIg Km9wZW5kaXIoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gc3RydWN0IGRpcmVudCAqcmVhZGRp cihESVIgKik7CiAgICAgZXh0ZXJuIHZvaWQgcmV3aW5kZGlyKERJUiAqKTsKICAgICBleHRlcm4g aW50IGNsb3NlZGlyKERJUiAqKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDMK ICAgICBleHRlcm4gbG9uZyB0ZWxsZGlyKERJUiAqKTsKICAgICBleHRlcm4gdm9pZCBzZWVrZGly KERJUiAqLCBsb25nIGludCk7CiMgMTcwICIvdXNyL2luY2x1ZGUvc3lzL2RpcmVudC5oIiAzCiAg ICAgZXh0ZXJuIGludCBzY2FuZGlyKGNvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZGlyZW50ICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCop KGNvbnN0IHN0cnVjdCBkaXJlbnQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgq KShjb25zdCBzdHJ1Y3QgZGlyZW50ICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGRpcmVudCAqKikpOwogICAgIGV4dGVybiBpbnQgYWxwaGFzb3J0KGNv bnN0IHN0cnVjdCBkaXJlbnQgKiosIGNvbnN0IHN0cnVjdCBkaXJlbnQgKiopOwojIDE5MiAiL3Vz ci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMwogICBzdHJ1Y3QgX2RpcmRlc2MgewogICAgICAgIGlu dCBfX2RkX2ZkOwogICAgICAgIGxvbmcgX19kZF9sb2M7CiAgICAgICAgbG9uZyBfX2RkX3NpemU7 CiAgICAgICAgbG9uZyBfX2RkX2JiYXNlOwogICAgICAgIGxvbmcgX19kZF9lbnRubzsKICAgICAg ICBsb25nIF9fZGRfYnNpemU7CiAgICAgICAgY2hhciAqX19kZF9idWY7CgoKCiAgICAgICAgdm9p ZCAqX19kZF91bnVzZWQ7CgogICB9OwojIDEwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoj IDM2ICJpbmNsdWRlcy5oIiAyCgoKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEx ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu MDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAv bGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzbGltaXRzLmgi IDEgMwoKCgoKCgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTMyICIvb3B0L2du dS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2lu Y2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDM5NyAi L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAx IDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL21h Y2hpbmUvcGFyYW0uaCIgMSAzCiMgMTIgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDMK IyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAxMyAiL3Vzci9pbmNsdWRl L21hY2hpbmUvcGFyYW0uaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvcGFyYW1fc2ht LmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wYXJhbS5oIiAyIDMKIyAzMDIgIi91 c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDMKZXh0ZXJuIGNoYXIgKnVzdGtfYWRkcl9xMl8z MmJpdDsKZXh0ZXJuIGNoYXIgKnVzdGtfYWRkcl8zMmJpdDsKIyAyNyAiL3Vzci9pbmNsdWRlL3N5 cy9wYXJhbS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc3BsLmgiIDEgMwojIDgw ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zcGwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMva2Vy bl9zdmNzLmgiIDEgMwojIDgxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zcGwuaCIgMiAzCiMgMjkg Ii91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzCiMgMzk4ICIvdXNyL2luY2x1ZGUvbGltaXRz LmgiIDIgMwojIDEzMyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4ICIvb3B0L2dudS9n Y2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1 ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEyICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDM5 ICJpbmNsdWRlcy5oIiAyCiMgNTQgImluY2x1ZGVzLmgiCiMgMSAiL3Vzci9pbmNsdWRlL25ldGRi LmgiIDEgMwojIDcxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9u ZXRpbmV0L2luLmgiIDEgMwojIDY5ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCnR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgaW5fcG9ydF90OwojIDk4ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9p bi5oIiAzCiAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbl9hZGRyX3Q7CgoKCnN0cnVjdCBpbl9h ZGRyIHsKICAgaW5fYWRkcl90IHNfYWRkcjsKfTsKIyAxNjUgIi91c3IvaW5jbHVkZS9uZXRpbmV0 L2luLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsKCgpzdHJ1Y3Qgc29j a2FkZHJfaW4gewogICAgICAgIHNhX2ZhbWlseV90IHNpbl9mYW1pbHk7CiAgICAgICAgaW5fcG9y dF90IHNpbl9wb3J0OwogICAgICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwogICAgICAgIHVu c2lnbmVkIGNoYXIgc2luX3plcm9bOF07Cn07CiMgNzIgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAy IDMKIyA5MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKc3RydWN0IGhvc3RlbnQgewogICAgICAg IGNoYXIgKmhfbmFtZTsKICAgICAgICBjaGFyICoqaF9hbGlhc2VzOwogICAgICAgIGludCBoX2Fk ZHJ0eXBlOwogICAgICAgIGludCBoX2xlbmd0aDsKICAgICAgICBjaGFyICoqaF9hZGRyX2xpc3Q7 Cgp9OwojIDEzNiAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKc3RydWN0IG5ldGVudCB7CiAgICAg ICAgY2hhciAqbl9uYW1lOwogICAgICAgIGNoYXIgKipuX2FsaWFzZXM7CiAgICAgICAgaW50IG5f YWRkcnR5cGU7CiAgICAgICAgaW5fYWRkcl90IG5fbmV0Owp9OwojIDE2NiAiL3Vzci9pbmNsdWRl L25ldGRiLmgiIDMKc3RydWN0IHNlcnZlbnQgewogICAgICAgIGNoYXIgKnNfbmFtZTsKICAgICAg ICBjaGFyICoqc19hbGlhc2VzOwogICAgICAgIGludCBzX3BvcnQ7CiAgICAgICAgY2hhciAqc19w cm90bzsKfTsKIyAxOTQgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzCnN0cnVjdCBwcm90b2VudCB7 CiAgICAgICAgY2hhciAqcF9uYW1lOwogICAgICAgIGNoYXIgKipwX2FsaWFzZXM7CiAgICAgICAg aW50IHBfcHJvdG87Cn07CiMgMjU3ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwogICAgICAgIGV4 dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICopOwoKICAgICAg ICBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqLCBzaXpl X3QsIGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgc2V0aG9zdGVudChpbnQpOwogICAgICAgIGV4 dGVybiB2b2lkIGVuZGhvc3RlbnQodm9pZCk7CgoKCgoKICAgICAgICBleHRlcm4gc3RydWN0IGhv c3RlbnQgKmdldGhvc3RlbnQodm9pZCk7CiAgICAgICAgZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdl dG5ldGJ5bmFtZShjb25zdCBjaGFyICopOwoKICAgICAgICBleHRlcm4gc3RydWN0IG5ldGVudCAq Z2V0bmV0YnlhZGRyKGluX2FkZHJfdCwgaW50KTsKICAgICAgICBleHRlcm4gdm9pZCBzZXRuZXRl bnQoaW50KTsKICAgICAgICBleHRlcm4gdm9pZCBlbmRuZXRlbnQodm9pZCk7CgoKCgoKICAgICAg ICBleHRlcm4gc3RydWN0IG5ldGVudCAqZ2V0bmV0ZW50KHZvaWQpOwogICAgICAgIGV4dGVybiBz dHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5bmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7 CiAgICAgICAgZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0KGludCwgY29uc3Qg Y2hhciAqKTsKICAgICAgICBleHRlcm4gc3RydWN0IHNlcnZlbnQgKmdldHNlcnZlbnQodm9pZCk7 CgogICAgICAgIGV4dGVybiB2b2lkIHNldHNlcnZlbnQoaW50KTsKICAgICAgICBleHRlcm4gdm9p ZCBlbmRzZXJ2ZW50KHZvaWQpOwoKCgoKICAgICAgICBleHRlcm4gc3RydWN0IHByb3RvZW50ICpn ZXRwcm90b2J5bmFtZShjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBzdHJ1Y3QgcHJvdG9l bnQgKmdldHByb3RvYnludW1iZXIoaW50KTsKICAgICAgICBleHRlcm4gc3RydWN0IHByb3RvZW50 ICpnZXRwcm90b2VudCh2b2lkKTsKCiAgICAgICAgZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQoaW50 KTsKICAgICAgICBleHRlcm4gdm9pZCBlbmRwcm90b2VudCh2b2lkKTsKIyA0MjggIi91c3IvaW5j bHVkZS9uZXRkYi5oIiAzCmV4dGVybiBpbnQgaF9lcnJubzsKIyA1NSAiaW5jbHVkZXMuaCIgMgoj IDYzICJpbmNsdWRlcy5oIgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS91dGltZS5oIiAxIDMKIyA0OSAiL29w dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu MS9pbmNsdWRlL3V0aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190aW1lX3QuaCIgMSAz CiMgNTAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhw dXgxMS4wMC8zLjEvaW5jbHVkZS91dGltZS5oIiAyIDMKCgogICBzdHJ1Y3QgdXRpbWJ1ZiB7CiAg ICAgICAgdGltZV90IGFjdGltZTsKICAgICAgICB0aW1lX3QgbW9kdGltZTsKICAgfTsKCgoKICAg ICAgICAgICBleHRlcm4gaW50IHV0aW1lKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHV0aW1i dWYgKik7CiMgNjQgImluY2x1ZGVzLmgiIDIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0 ZC5oIiAxIDMKIyAxMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl L3N5cy91bmlzdGQuaCIgMSAzCiMgOTUgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMKICAg ICBleHRlcm4gdm9pZCBfZXhpdCAoaW50KTsKICAgICBleHRlcm4gaW50IGFjY2VzcyAoY29uc3Qg Y2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBpbnQgY2hkaXIgKGNvbnN0IGNoYXIgKik7CiAgICAg ZXh0ZXJuIGludCBjaG93biAoY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOwogICAgIGV4dGVy biBpbnQgY2xvc2UgKGludCk7CiAgICAgZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CiAg ICAgZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBkdXAgKGlu dCk7CiAgICAgZXh0ZXJuIGludCBkdXAyIChpbnQsIGludCk7CiAgICAgZXh0ZXJuIGludCBleGVj bCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CiAgICAgZXh0ZXJuIGludCBleGVj bGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgZXhl Y2xwIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKICAgICBleHRlcm4gaW50IGV4 ZWN2IChjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKTsKICAgICBleHRlcm4gaW50IGV4ZWN2 ZSAoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCBbXSwgY2hhciAqY29uc3QgW10pOwogICAgIGV4 dGVybiBpbnQgZXhlY3ZwIChjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKTsKICAgICBleHRl cm4gbG9uZyBmcGF0aGNvbmYgKGludCwgaW50KTsKICAgICBleHRlcm4gY2hhciAqZ2V0Y3dkIChj aGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBnZXRncm91cHMgKGludCwgZ2lkX3QgW10p OwogICAgIGV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCk7CgoKCgoKCgogICAgIGV4dGVybiBp bnQgaXNhdHR5IChpbnQpOwogICAgIGV4dGVybiBpbnQgbGluayAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwogICAgIHN0YXRpYyBvZmZfdCBsc2VlayAoaW50LCBvZmZfdCwgaW50KTsKICAg ICBleHRlcm4gbG9uZyBwYXRoY29uZiAoY29uc3QgY2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBp bnQgcGF1c2UgKHZvaWQpOwogICAgIGV4dGVybiBpbnQgcGlwZSAoaW50ICopOwogICAgIGV4dGVy biBzc2l6ZV90IHJlYWQgKGludCwgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBzc2l6ZV90 IHByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CiAgICAgZXh0ZXJuIGludCBybWRp ciAoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHNldGdpZCAoZ2lkX3QpOwogICAgIGV4 dGVybiBpbnQgc2V0cGdpZCAocGlkX3QsIHBpZF90KTsKICAgICBleHRlcm4gcGlkX3Qgc2V0c2lk ICh2b2lkKTsKICAgICBleHRlcm4gaW50IHNldHVpZCAodWlkX3QpOwogICAgIGV4dGVybiB1bnNp Z25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIGxvbmcgc3lzY29uZiAo aW50KTsKICAgICBleHRlcm4gcGlkX3QgdGNnZXRwZ3JwIChpbnQpOwogICAgIGV4dGVybiBpbnQg dGNzZXRwZ3JwIChpbnQsIHBpZF90KTsKICAgICBleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50KTsK CgoKCgoKCiAgICAgZXh0ZXJuIGludCB1bmxpbmsgKGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJu IHNzaXplX3Qgd3JpdGUgKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBz c2l6ZV90IHB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwojIDE2MiAi L3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgYWxh cm0gKHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIHBpZF90IGZvcmsgKHZvaWQpOwogICAgIGV4 dGVybiBnaWRfdCBnZXRlZ2lkICh2b2lkKTsKICAgICBleHRlcm4gdWlkX3QgZ2V0ZXVpZCAodm9p ZCk7CiAgICAgZXh0ZXJuIGdpZF90IGdldGdpZCAodm9pZCk7CiAgICAgZXh0ZXJuIHBpZF90IGdl dHBncnAgKHZvaWQpOwogICAgIGV4dGVybiBwaWRfdCBnZXRwaWQgKHZvaWQpOwogICAgIGV4dGVy biBwaWRfdCBnZXRwcGlkICh2b2lkKTsKICAgICBleHRlcm4gdWlkX3QgZ2V0dWlkICh2b2lkKTsK CgoKCgogICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CiAg ICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAgICAgZXh0ZXJuIGludCBvcHRvcHQ7CgogICAgIGV4dGVy biBpbnQgZ2V0b3B0IChpbnQsIGNoYXIgKiBjb25zdCBbXSwgY29uc3QgY2hhciAqKTsKICAgICBl eHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgoKICAgICBleHRl cm4gaW50IHB0aHJlYWRfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSgpLCB2b2lkICgqcGFyZW50KSgp LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKCpjaGlsZCkoKSk7CgoKCgoKCgogICAgICAgIGV4dGVybiBpbnQgY2hyb290IChj b25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgWzY0XSwgaW50 KTsKICAgICAgICBleHRlcm4gaW50IGZzeW5jIChpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpn ZXRwYXNzIChjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgbmljZSAoaW50KTsKCiAg ICAgICAgZXh0ZXJuIGludCByZW5hbWUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgog ICAgICAgIGV4dGVybiB2b2lkIHN3YWIgKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzc2l6ZV90KTsK CgoKCgoKCiAgICAgZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgogICAgICAgZXh0ZXJuIGludCBy ZWFkbGluayAoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CgoKCiAgICAgZXh0ZXJuIGlu dCBmY2hvd24gKGludCwgdWlkX3QsIGdpZF90KTsKICAgICBzdGF0aWMgaW50IGZ0cnVuY2F0ZSAo aW50LCBvZmZfdCk7CiAgICAgc3RhdGljIGludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAqLCBvZmZf dCk7CgoKICAgICAgIGV4dGVybiBpbnQgc2V0Z3JvdXBzIChpbnQsIGdpZF90IFtdKTsKCiAgICAg ZXh0ZXJuIGludCBzeW1saW5rIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgogICAg ICAgIGV4dGVybiBwaWRfdCBzZXRwZ3JwICh2b2lkKTsKIyAyNDggIi91c3IvaW5jbHVkZS9zeXMv dW5pc3RkLmgiIDMKICAgICAgICBleHRlcm4gcGlkX3QgdmZvcmsgKHZvaWQpOwojIDI2MyAiL3Vz ci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgICAgIGV4dGVybiBpbnQgYnJrICh2b2lkICop OwogICAgICAgIGV4dGVybiBpbnQgZmNoZGlyIChpbnQpOwogICAgICAgIGV4dGVybiBpbnQgZ2V0 ZHRhYmxlc2l6ZSAodm9pZCk7CgogICAgICAgIGV4dGVybiBsb25nIGdldGhvc3RpZCAodm9pZCk7 CgoKCiAgICAgICAgZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqLCBzaXplX3QpOwogICAg ICAgIGV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpOwogICAgICAgIGV4dGVybiBwaWRfdCBn ZXRwZ2lkIChwaWRfdCk7CiAgICAgICAgZXh0ZXJuIHBpZF90IGdldHNpZCAocGlkX3QpOwogICAg ICAgIGV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqKTsKICAgICAgICBzdGF0aWMgaW50IGxvY2tm IChpbnQsIGludCwgb2ZmX3QpOwogICAgICAgIGV4dGVybiBpbnQgbGNob3duIChjb25zdCBjaGFy ICosIHVpZF90LCBnaWRfdCk7CgoKCiAgICAgICAgZXh0ZXJuIHZvaWQgKnNicmsgKGludCk7Cgog ICAgICAgIGV4dGVybiBpbnQgc2V0cmVnaWQgKGdpZF90LCBnaWRfdCk7CiAgICAgICAgZXh0ZXJu IGludCBzZXRyZXVpZCAodWlkX3QsIHVpZF90KTsKICAgICAgICBleHRlcm4gdm9pZCBzeW5jICh2 b2lkKTsKCiAgICAgICAgZXh0ZXJuIHVzZWNvbmRzX3QgdWFsYXJtICh1c2Vjb25kc190LCB1c2Vj b25kc190KTsKICAgICAgICBleHRlcm4gaW50IHVzbGVlcCAodXNlY29uZHNfdCk7CgoKCgoKCgog ICAgIGV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCk7CiAgICAgZXh0ZXJuIGludCBmc2N0 bCAoaW50LCBpbnQsIHZvaWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqZ2V0Y2RmIChj b25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqZ2V0aGN3ZCAo Y2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgZ2V0cGdycDIgKHBpZF90KTsKICAgICBl eHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2b2lkKTsKICAgICBleHRlcm4gY2hhciAqaGlkZWNk ZiAoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBpbml0Z3Jv dXBzIChjb25zdCBjaGFyICosIGdpZF90KTsKCgoKICAgICBleHRlcm4gY2hhciAqbG9nbmFtZSAo dm9pZCk7CiAgICAgZXh0ZXJuIHZvaWQgbHN5bmMgKHZvaWQpOwogICAgIHN0YXRpYyBpbnQgcHJl YWxsb2MgKGludCwgb2ZmX3QpOwogICAgIGV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IHNldHBncnAyIChwaWRfdCwgcGlkX3QpOwog ICAgIGV4dGVybiBpbnQgc2V0cmVzZ2lkIChnaWRfdCwgZ2lkX3QsIGdpZF90KTsKICAgICBleHRl cm4gaW50IHNldHJlc3VpZCAodWlkX3QsIHVpZF90LCB1aWRfdCk7CiAgICAgZXh0ZXJuIHZvaWQg c2V0dXNlcnNoZWxsICh2b2lkKTsKICAgICBleHRlcm4gbG9uZyBzZ2V0bCAoY29uc3QgY2hhciAq KTsKICAgICBleHRlcm4gdm9pZCBzcHV0bCAobG9uZywgY2hhciAqKTsKICAgICBleHRlcm4gaW50 IHN3YXBvbiAoY29uc3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgc3dhcG9mZiAoY29u c3QgY2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBjaGFyICp0dHluYW1lIChpbnQpOwoKICAgICBl eHRlcm4gaW50NjRfdCBfX3N5c2NvbmZ4IChpbnQsIGludCk7CiMgMzMzICIvdXNyL2luY2x1ZGUv c3lzL3VuaXN0ZC5oIiAzCiAgICAgZXh0ZXJuIGludCBzZXRfdXNlcnRocmVhZGlkIChpbnQpOwoj IDM0NyAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgICAgICAgIGV4dGVybiBwaWRf dCBzZXRwZ3JwMyAodm9pZCk7CiMgMzczICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzCiAg IGV4dGVybiBpbnQgX19wcmVhbGxvYzY0IChpbnQsIG9mZl90KTsKICAgZXh0ZXJuIGludCBfX2xv Y2tmNjQgKGludCwgaW50LCBvZmZfdCk7CiAgIGV4dGVybiBpbnQgX190cnVuY2F0ZTY0IChjb25z dCBjaGFyICosIG9mZl90KTsKICAgZXh0ZXJuIGludCBfX2Z0cnVuY2F0ZTY0IChpbnQsIG9mZl90 KTsKICAgZXh0ZXJuIG9mZjY0X3QgX19sc2VlazY0IChpbnQsIG9mZl90LCBpbnQpOwoKICAgIHN0 YXRpYyBpbnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqYSwgb2ZmX3QgYikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHJldHVybiBfX3RydW5jYXRlNjQoYSxiKTsgfQogICAgc3RhdGlj IGludCBwcmVhbGxvYyhpbnQgYSwgb2ZmX3QgYikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHJldHVybiBfX3ByZWFsbG9jNjQoYSxiKTsgfQogICAgc3RhdGljIGludCBsb2NrZihp bnQgYSwgaW50IGIsIG9mZl90IGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBy ZXR1cm4gX19sb2NrZjY0KGEsYixjKTsgfQogICAgc3RhdGljIGludCBmdHJ1bmNhdGUoaW50IGEs IG9mZl90IGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gX19mdHJ1 bmNhdGU2NChhLGIpOyB9CiAgICBzdGF0aWMgb2ZmX3QgbHNlZWsoaW50IGEsIG9mZl90IGIsIGlu dCBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIF9fbHNlZWs2NChh LGIsYyk7IH0KIyA5NTggIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz ZXJpYWxpemUgKGludCwgcGlkX3QpOwojIDEyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoj IDcyICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3Rlcm1pb3MuaCIgMSAzCgoKCgoK IyAxICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3N5 cy90ZXJtaW8uaCIgMwogICB0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKICAgdHlwZWRl ZiB1bnNpZ25lZCBjaGFyIGNjX3Q7CiAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CgoK ICAgICBzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3QgY19pZmxhZzsKICAgICAgICB0 Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2ZsYWc7CiAgICAgICAgdGNmbGFn X3QgY19sZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX3Jlc2VydmVkOwogICAgICAgIGNjX3QgY19j Y1sxNl07CiAgICAgfTsKIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKICAgICAg ICAgZXh0ZXJuIHNwZWVkX3QgY2ZnZXRpc3BlZWQoY29uc3Qgc3RydWN0IHRlcm1pb3MgKik7CiAg ICAgICAgIGV4dGVybiBzcGVlZF90IGNmZ2V0b3NwZWVkKGNvbnN0IHN0cnVjdCB0ZXJtaW9zICop OwogICAgICAgICBleHRlcm4gaW50IGNmc2V0aXNwZWVkKHN0cnVjdCB0ZXJtaW9zICosIHNwZWVk X3QpOwogICAgICAgICBleHRlcm4gaW50IGNmc2V0b3NwZWVkKHN0cnVjdCB0ZXJtaW9zICosIHNw ZWVkX3QpOwogICAgICAgICBleHRlcm4gaW50IHRjZ2V0YXR0cihpbnQsIHN0cnVjdCB0ZXJtaW9z ICopOwoKICAgICAgICAgZXh0ZXJuIGludCB0Y3NldGF0dHIoaW50LCBpbnQsIHN0cnVjdCB0ZXJt aW9zICopOwoKCgogICAgICAgICBleHRlcm4gaW50IHRjc2VuZGJyZWFrKGludCwgaW50KTsKICAg ICAgICAgZXh0ZXJuIGludCB0Y2RyYWluKGludCk7CiAgICAgICAgIGV4dGVybiBpbnQgdGNmbHVz aChpbnQsIGludCk7CiAgICAgICAgIGV4dGVybiBpbnQgdGNmbG93KGludCwgaW50KTsKIyAyOTAg Ii91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKICAgICAgICBleHRlcm4gcGlkX3QgdGNnZXRz aWQoaW50KTsKIyAzMDEgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2lvY3RsLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDMK ICAgICBleHRlcm4gaW50IGlvY3RsKGludCwgaW50LCAuLi4pOwojIDMwMiAiL3Vzci9pbmNsdWRl L3N5cy90ZXJtaW8uaCIgMiAzCiMgNDMwICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pby5oIiAzCnN0 cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CiMgNyAiL3Vzci9pbmNsdWRlL3Rlcm1p b3MuaCIgMiAzCiMgNzMgImluY2x1ZGVzLmgiIDIKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdHJp bmdzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAzCiAgICAgZXh0ZXJuIGNo YXIgKmluZGV4KGNvbnN0IGNoYXIgKiwgaW50KTsKICAgICBleHRlcm4gY2hhciAqcmluZGV4KGNv bnN0IGNoYXIgKiwgaW50KTsKICAgICBleHRlcm4gdm9pZCBiY29weShjb25zdCB2b2lkICosIHZv aWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IGJjbXAoY29uc3Qgdm9pZCAqLCBjb25zdCB2 b2lkICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIHZvaWQgYnplcm8odm9pZCAqLCBzaXplX3QpOwoK CgoKICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuIGludCBz dHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCiAgICAgZXh0 ZXJuIGludCBmZnMoaW50KTsKIyA3OSAiaW5jbHVkZXMuaCIgMgoKCgoKCgojIDEgIi91c3IvaW5j bHVkZS91dG1wLmgiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvdXRtcC5oIiAzCnN0cnVjdCB1dG1w CiAgewogICAgICAgIGNoYXIgdXRfdXNlcls4XSA7CiAgICAgICAgY2hhciB1dF9pZFs0XSA7CiAg ICAgICAgY2hhciB1dF9saW5lWzEyXSA7CiAgICAgICAgcGlkX3QgdXRfcGlkIDsKICAgICAgICBz aG9ydCB1dF90eXBlIDsKICAgICAgICBzdHJ1Y3QgZXhpdF9zdGF0dXMKCgogICAgICAgICAgewog ICAgICAgICAgICBzaG9ydCBlX3Rlcm1pbmF0aW9uIDsKICAgICAgICAgICAgc2hvcnQgZV9leGl0 IDsKICAgICAgICAgIH0KCiAgICAgICAgdXRfZXhpdCA7CgoKICAgICAgICB1bnNpZ25lZCBzaG9y dCB1dF9yZXNlcnZlZDEgOwogICAgICAgIHRpbWVfdCB1dF90aW1lIDsKICAgICAgICBjaGFyIHV0 X2hvc3RbMTZdIDsKCiAgICAgICAgdWludDMyX3QgdXRfYWRkciA7CiAgfSA7CiMgMTAwICIvdXNy L2luY2x1ZGUvdXRtcC5oIiAzCiAgIGV4dGVybiBzdHJ1Y3QgdXRtcCAqZ2V0dXRlbnQodm9pZCk7 CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcCAqZ2V0dXRpZChjb25zdCBzdHJ1Y3QgdXRtcCAqKTsKICAg ZXh0ZXJuIHN0cnVjdCB1dG1wICpnZXR1dGxpbmUoY29uc3Qgc3RydWN0IHV0bXAgKik7CiAgIGV4 dGVybiB2b2lkIHB1dHV0bGluZShzdHJ1Y3QgdXRtcCAqKTsKICAgZXh0ZXJuIHN0cnVjdCB1dG1w ICpfcHV0dXRsaW5lKHN0cnVjdCB1dG1wICopOwogICBleHRlcm4gdm9pZCBzZXR1dGVudCh2b2lk KTsKICAgZXh0ZXJuIHZvaWQgZW5kdXRlbnQodm9pZCk7CiAgIGV4dGVybiBpbnQgdXRtcG5hbWUo Y29uc3QgY2hhciAqKTsKIyA4NiAiaW5jbHVkZXMuaCIgMgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl L3V0bXB4LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvdXRtcHguaCIgMwojIDEgIi91c3IvaW5j bHVkZS9zeXMvX3RpbWV2YWwuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91dG1weC5oIiAyIDMK CgpzdHJ1Y3QgdXRtcHgKICB7CiAgICAgICAgY2hhciB1dF91c2VyWzI0XSA7CiAgICAgICAgY2hh ciB1dF9pZFs0XSA7CiAgICAgICAgY2hhciB1dF9saW5lWzEyXSA7CiAgICAgICAgcGlkX3QgdXRf cGlkIDsKICAgICAgICBzaG9ydCB1dF90eXBlIDsKCiAgICAgICAgc3RydWN0IF9fZXhpdF9zdGF0 dXMKCgogICAgICAgICAgewogICAgICAgICAgICBzaG9ydCBfX2VfdGVybWluYXRpb24gOwogICAg ICAgICAgICBzaG9ydCBfX2VfZXhpdCA7CiAgICAgICAgICB9CgogICAgICAgIHV0X2V4aXQ7Cgog ICAgICAgIHVuc2lnbmVkIHNob3J0IHV0X3Jlc2VydmVkMSA7CiAgICAgICAgc3RydWN0IHRpbWV2 YWwgdXRfdHY7CgogICAgICAgIGNoYXIgdXRfaG9zdFs2NF0gOwoKICAgICAgICB1aW50MzJfdCB1 dF9hZGRyIDsKICAgICAgICBjaGFyIHV0X3Jlc2VydmVkMlsxMl0gOwogIH0gOwojIDg1ICIvdXNy L2luY2x1ZGUvdXRtcHguaCIgMwogICBleHRlcm4gc3RydWN0IHV0bXB4ICpnZXR1dHhlbnQodm9p ZCk7CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcHggKmdldHV0eGlkKGNvbnN0IHN0cnVjdCB1dG1weCAq KTsKICAgZXh0ZXJuIHN0cnVjdCB1dG1weCAqZ2V0dXR4bGluZShjb25zdCBzdHJ1Y3QgdXRtcHgg Kik7CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcHggKnB1dHV0eGxpbmUoY29uc3Qgc3RydWN0IHV0bXB4 ICopOwogICBleHRlcm4gdm9pZCBzZXR1dHhlbnQodm9pZCk7CiAgIGV4dGVybiB2b2lkIGVuZHV0 eGVudCh2b2lkKTsKIyA5MiAiaW5jbHVkZXMuaCIgMgojIDEwMSAiaW5jbHVkZXMuaCIKIyAxICIv dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMKIyA0NCAiL3Vzci9pbmNsdWRlL3N5cy9zb2Nr ZXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDEgMwojIDE3ICIvdXNyL2luY2x1 ZGUvc3lzL3Vpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9maWxlLmgiIDEgMwojIDE4ICIv dXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKc3RydWN0IGlvdmVjIHsKCgoKICAgICAg ICB2b2lkICppb3ZfYmFzZTsKCiAgICAgICAgc2l6ZV90IGlvdl9sZW47Cn07CiMgNDMgIi91c3Iv aW5jbHVkZS9zeXMvdWlvLmgiIDMKICAgICAgZXh0ZXJuIHNzaXplX3QgcmVhZHYgKGludCwgY29u c3Qgc3RydWN0IGlvdmVjICosIGludCk7CiAgICAgIGV4dGVybiBzc2l6ZV90IHdyaXRldiAoaW50 LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50KTsKIyA5MyAiL3Vzci9pbmNsdWRlL3N5cy91aW8u aCIgMwogICBlbnVtIHVpb19ydyB7IFVJT19SRUFEID0gMSwgVUlPX1dSSVRFID0gMiB9OwojIDQ1 ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMKIyAxMTYgIi91c3IvaW5jbHVkZS9zeXMv c29ja2V0LmgiIDMKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxfb25vZmY7CgogICAgICAg IGludCBsX2xpbmdlcjsKCn07CiMgMTcxICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCnR5 cGVkZWYgc2l6ZV90IHNvY2tsZW5fdDsKIyAxOTEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi IDMKc3RydWN0IHNvY2thZGRyIHsKICAgICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CiAgICAg ICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKIyAyNTMgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi IDMKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9pZCAqbXNnX25hbWU7CiAgICAgICAgc29ja2xl bl90IG1zZ19uYW1lbGVuOwogICAgICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgICAgICBp bnQgbXNnX2lvdmxlbjsKICAgICAgICB2b2lkICptc2dfY29udHJvbDsKICAgICAgICBzb2NrbGVu X3QgbXNnX2NvbnRyb2xsZW47CiAgICAgICAgaW50IG1zZ19mbGFnczsKfTsKIyAzMjkgIi91c3Iv aW5jbHVkZS9zeXMvc29ja2V0LmgiIDMKc3RydWN0IGNtc2doZHIgewogICAgICAgIHNvY2tsZW5f dCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBl OwoKfTsKIyAzNjEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMKICAgZXh0ZXJuIGludCBh Y2NlcHQgKGludCwgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCAqKTsKICAgZXh0ZXJuIGlu dCBiaW5kIChpbnQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqLCBzb2NrbGVuX3QpOwogICBleHRl cm4gaW50IGNvbm5lY3QgKGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7 CiAgIGV4dGVybiBpbnQgZ2V0cGVlcm5hbWUgKGludCwgc3RydWN0IHNvY2thZGRyICosIHNvY2ts ZW5fdCAqKTsKICAgZXh0ZXJuIGludCBnZXRzb2NrbmFtZSAoaW50LCBzdHJ1Y3Qgc29ja2FkZHIg Kiwgc29ja2xlbl90ICopOwogICBleHRlcm4gaW50IGdldHNvY2tvcHQgKGludCwgaW50LCBpbnQs IHZvaWQgKiwgc29ja2xlbl90ICopOwogICBleHRlcm4gaW50IGxpc3RlbiAoaW50LCBpbnQpOwog ICBleHRlcm4gc3NpemVfdCByZWN2IChpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogICBleHRl cm4gc3NpemVfdCByZWN2ZnJvbSAoaW50LCB2b2lkICosIHNpemVfdCwgaW50LCBzdHJ1Y3Qgc29j a2FkZHIgKiwgc29ja2xlbl90ICopOwoKICAgZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50LCBz dHJ1Y3QgbXNnaGRyICosIGludCk7CiAgIGV4dGVybiBzc2l6ZV90IHNlbmQgKGludCwgY29uc3Qg dm9pZCAqLCBzaXplX3QsIGludCk7CiAgIGV4dGVybiBzc2l6ZV90IHNlbmRtc2cgKGludCwgY29u c3Qgc3RydWN0IG1zZ2hkciAqLCBpbnQpOwogICBleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCwg Y29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2ts ZW5fdCk7CgogICBleHRlcm4gaW50IHNldHNvY2tvcHQgKGludCwgaW50LCBpbnQsIGNvbnN0IHZv aWQgKiwgc29ja2xlbl90KTsKICAgZXh0ZXJuIGludCBzaHV0ZG93biAoaW50LCBpbnQpOwogICBl eHRlcm4gaW50IHNvY2tldCAoaW50LCBpbnQsIGludCk7CiAgIGV4dGVybiBpbnQgc29ja2V0cGFp ciAoaW50LCBpbnQsIGludCwgaW50WzJdKTsKIyAxMDIgImluY2x1ZGVzLmgiIDIKIyAxMTIgImlu Y2x1ZGVzLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9ic2R0dHkuaCIgMSAzCiMgMTkgIi91c3Iv aW5jbHVkZS9zeXMvYnNkdHR5LmgiIDMKc3RydWN0IGx0Y2hhcnMgewogICAgICAgIHVuc2lnbmVk IGNoYXIgdF9zdXNwYzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRfZHN1c3BjOwogICAgICAgIHVu c2lnbmVkIGNoYXIgdF9ycHJudGM7CiAgICAgICAgdW5zaWduZWQgY2hhciB0X2ZsdXNoYzsKICAg ICAgICB1bnNpZ25lZCBjaGFyIHRfd2VyYXNjOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdF9sbmV4 dGM7Cn07CiMgMTEzICJpbmNsdWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy91bi5o IiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy91bi5oIiAzCnN0cnVjdCBzb2NrYWRkcl91biB7 CiAgICAgICAgc2FfZmFtaWx5X3Qgc3VuX2ZhbWlseTsKICAgICAgICBjaGFyIHN1bl9wYXRoWzky XTsKfTsKIyAxMTcgImluY2x1ZGVzLmgiIDIKIyAxMjUgImluY2x1ZGVzLmgiCiMgMSAiL3Vzci9p bmNsdWRlL3N5cy9zdGF0LmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoj IDEgIi91c3IvaW5jbHVkZS9zeXMvX3N0YXRfYm9keS5oIiAxIDMKIyAxMiAiL3Vzci9pbmNsdWRl L3N5cy9fc3RhdF9ib2R5LmgiIDMKICAgc3RydWN0IHN0YXQKICAgewogICAgICAgIGRldl90IHN0 X2RldjsKICAgICAgICBpbm9fdCBzdF9pbm87CiAgICAgICAgbW9kZV90IHN0X21vZGU7CiAgICAg ICAgbmxpbmtfdCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZXNlcnZlZDE7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfcmVzZXJ2ZWQyOwogICAgICAgIGRldl90IHN0X3Jk ZXY7CiAgICAgICAgb2ZmX3Qgc3Rfc2l6ZTsKICAgICAgICB0aW1lX3Qgc3RfYXRpbWU7CiAgICAg ICAgaW50IHN0X3NwYXJlMTsKICAgICAgICB0aW1lX3Qgc3RfbXRpbWU7CiAgICAgICAgaW50IHN0 X3NwYXJlMjsKICAgICAgICB0aW1lX3Qgc3RfY3RpbWU7CiAgICAgICAgaW50IHN0X3NwYXJlMzsK ICAgICAgICBsb25nIHN0X2Jsa3NpemU7CiAgICAgICAgYmxrY250X3Qgc3RfYmxvY2tzOwogICAg ICAgIHVuc2lnbmVkIGludCBzdF9wYWQ6Mjk7CgogICAgICAgIHVuc2lnbmVkIGludCBzdF9zeXNW YWNsOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X2FjbDoxOwogICAgICAgIHVuc2lnbmVkIGlu dCBzdF9yZW1vdGU6MTsKICAgICAgICBkZXZfdCBzdF9uZXRkZXY7CgogICAgICAgIGlub190IHN0 X25ldGlubzsKICAgICAgICBfX2Nub2RlX3Qgc3RfY25vZGU7CiAgICAgICAgX19jbm9kZV90IHN0 X3Jjbm9kZTsKCiAgICAgICAgX19zaXRlX3Qgc3RfbmV0c2l0ZTsKICAgICAgICBzaG9ydCBzdF9m c3R5cGU7CgogICAgICAgIGRldl90IHN0X3JlYWxkZXY7CgogICAgICAgIHVuc2lnbmVkIHNob3J0 IHN0X2Jhc2Vtb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3NwYXJlc2hvcnQ7CgoKCgog ICAgICAgIHVpZF90IHN0X3VpZDsKCgoKCgogICAgICAgIGdpZF90IHN0X2dpZDsKCgogICAgICAg IGludDMyX3Qgc3Rfc3BhcmU0WzNdOwogICB9OwojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQu aCIgMiAzCiMgODQgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCiAgICAgZXh0ZXJuIGludCBj aG1vZCAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwogICAgIGV4dGVybiBpbnQgbWtkaXIgKGNvbnN0 IGNoYXIgKiwgbW9kZV90KTsKICAgICBleHRlcm4gaW50IG1rZmlmbyAoY29uc3QgY2hhciAqLCBt b2RlX3QpOwogICAgIHN0YXRpYyBpbnQgZnN0YXQgKGludCwgc3RydWN0IHN0YXQgKik7CiAgICAg c3RhdGljIGludCBzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwoKCgoKICAgICAg IGV4dGVybiBtb2RlX3QgdW1hc2sgKG1vZGVfdCk7CgoKCgogICAgICBleHRlcm4gaW50IGZjaG1v ZCAoaW50LCBtb2RlX3QpOwogICAgICBzdGF0aWMgaW50IGxzdGF0IChjb25zdCBjaGFyICosIHN0 cnVjdCBzdGF0ICopOwoKCgogICAgICBleHRlcm4gaW50IG1rbm9kIChjb25zdCBjaGFyICosIG1v ZGVfdCwgZGV2X3QpOwoKCgogICBleHRlcm4gaW50IF9fc3RhdDY0IChjb25zdCBjaGFyICosIHN0 cnVjdCBzdGF0ICopOwogICBleHRlcm4gaW50IF9fbHN0YXQ2NCAoY29uc3QgY2hhciAqLCBzdHJ1 Y3Qgc3RhdCAqKTsKICAgZXh0ZXJuIGludCBfX2ZzdGF0NjQgKGludCwgc3RydWN0IHN0YXQgKik7 CgogICBzdGF0aWMgaW50IHN0YXQoY29uc3QgY2hhciAqYSwgc3RydWN0IHN0YXQgKmIpIHtyZXR1 cm4gX19zdGF0NjQoYSxiKTt9CiAgIHN0YXRpYyBpbnQgbHN0YXQoY29uc3QgY2hhciAqYSwgc3Ry dWN0IHN0YXQgKmIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBfX2xz dGF0NjQoYSxiKTt9CiAgIHN0YXRpYyBpbnQgZnN0YXQoaW50IGEsIHN0cnVjdCBzdGF0ICpiKSB7 IHJldHVybiBfX2ZzdGF0NjQoYSxiKTsgfQojIDEyNiAiaW5jbHVkZXMuaCIgMgoKCgoKCiMgMSAi L3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDEgMwojIDEwNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu LmgiIDMKICBlbnVtIF9fbWxvY2thbGxfZmxhZ3MgewogICAgICAgICAgTUNMX0NVUlJFTlQgPSAx LAogICAgICAgICAgTUNMX0ZVVFVSRQogIH07CiMgMTM3ICIvdXNyL2luY2x1ZGUvc3lzL21tYW4u aCIgMwp0eXBlZGVmIHN0cnVjdCBtc2VtYXBob3JlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgbXNl bV9sb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBtYWdpYzsKICAgICAgICB1bnNpZ25lZCBpbnQg bG9ja2VyOwogICAgICAgIHVuc2lnbmVkIGludCB3YW50ZWQ7Cn0gbXNlbWFwaG9yZTsKIyAxNjgg Ii91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCiAgICBleHRlcm4gbXNlbWFwaG9yZSAqbXNlbV9p bml0IChtc2VtYXBob3JlICosIGludCk7CiAgICBleHRlcm4gaW50IG1zZW1fcmVtb3ZlIChtc2Vt YXBob3JlICopOwogICAgZXh0ZXJuIGludCBtc2VtX2xvY2sgKHZvbGF0aWxlIG1zZW1hcGhvcmUg KiwgaW50KTsKICAgIGV4dGVybiBpbnQgbXNlbV91bmxvY2sgKHZvbGF0aWxlIG1zZW1hcGhvcmUg KiwgaW50KTsKICAgIGV4dGVybiBpbnQgbWFkdmlzZSAoY29uc3QgY2FkZHJfdCwgc2l6ZV90LCBp bnQpOwoKCiAgICBzdGF0aWMgdm9pZCAqbW1hcCAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBp bnQsIG9mZl90KTsKICAgIGV4dGVybiBpbnQgbXByb3RlY3QgKHZvaWQgKiwgc2l6ZV90LCBpbnQp OwogICAgZXh0ZXJuIGludCBtc3luYyAodm9pZCAqLCBzaXplX3QsIGludCk7CiAgICBleHRlcm4g aW50IG11bm1hcCAodm9pZCAqLCBzaXplX3QpOwoKICAgIGV4dGVybiBpbnQgbWxvY2thbGwgKGlu dCBmbGFncyk7CiAgICBleHRlcm4gaW50IG11bmxvY2thbGwgKHZvaWQpOwogICAgZXh0ZXJuIGlu dCBtbG9jayAoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IGxlbik7CiAgICBleHRlcm4gaW50IG11 bmxvY2sgKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pOwogICAgZXh0ZXJuIGludCBzaG1f b3BlbiAoY29uc3QgY2hhciAqbmFtZSwgaW50IG9mbGFnLCBtb2RlX3QgbW9kZSk7CgogICAgZXh0 ZXJuIGludCBzaG1fdW5saW5rIChjb25zdCBjaGFyICpuYW1lKTsKIyAxOTggIi91c3IvaW5jbHVk ZS9zeXMvbW1hbi5oIiAzCiAgICBleHRlcm4gdm9pZCAqX19tbWFwNjQgKHZvaWQgKiwgc2l6ZV90 LCBpbnQsIGludCwgaW50LCBvZmZfdCk7CgogICAgc3RhdGljIHZvaWQgKm1tYXAodm9pZCAqYSwg c2l6ZV90IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIG9mZl90IGYpCgoKCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHJldHVybiBfX21tYXA2NChhLGIsYyxkLGUsZik7IH0KIyAxMzIg ImluY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmgiIDEg MwojIDM3ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIiAzCnR5cGVkZWYgdV9zaG9y dCBuX3Nob3J0OwoKCgoKCnR5cGVkZWYgdV9sb25nIG5fbG9uZzsKdHlwZWRlZiB1X2xvbmcgbl90 aW1lOwojIDEzNSAiaW5jbHVkZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pcC5o IiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL25ldGluZXQvaXAuaCIgMwpzdHJ1Y3QgaXAgewogICAg ICAgIHVfY2hhciBpcF92OjQsCiAgICAgICAgICAgICAgICBpcF9obDo0OwogICAgICAgIHVfY2hh ciBpcF90b3M7CiAgICAgICAgdV9zaG9ydCBpcF9sZW47CiAgICAgICAgdV9zaG9ydCBpcF9pZDsK ICAgICAgICB1X3Nob3J0IGlwX29mZjsKCgogICAgICAgIHVfY2hhciBpcF90dGw7CiAgICAgICAg dV9jaGFyIGlwX3A7CiAgICAgICAgdV9zaG9ydCBpcF9zdW07CiAgICAgICAgc3RydWN0IGluX2Fk ZHIgaXBfc3JjLGlwX2RzdDsKfTsKIyAxMTMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMK c3RydWN0IGlwX3RpbWVzdGFtcCB7CiAgICAgICAgdV9jaGFyIGlwdF9jb2RlOwogICAgICAgIHVf Y2hhciBpcHRfbGVuOwogICAgICAgIHVfY2hhciBpcHRfcHRyOwogICAgICAgIHVfY2hhciBpcHRf b2Zsdzo0LAogICAgICAgICAgICAgICAgaXB0X2ZsZzo0OwogICAgICAgIHVuaW9uIGlwdF90aW1l c3RhbXAgewogICAgICAgICAgICAgICAgbl9sb25nIGlwdF90aW1lWzFdOwogICAgICAgICAgICAg ICAgc3RydWN0IGlwdF90YSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9hZGRy IGlwdF9hZGRyOwogICAgICAgICAgICAgICAgICAgICAgICBuX2xvbmcgaXB0X3RpbWU7CiAgICAg ICAgICAgICAgICB9IGlwdF90YVsxXTsKICAgICAgICB9IGlwdF90aW1lc3RhbXA7Cn07CiMgMTM3 ICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmgiIDEgMwojIDI3 ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCIgMwp0eXBlZGVmIHVfbG9uZyB0Y3Bfc2VxOwoK CgoKCgpzdHJ1Y3QgdGNwaGRyIHsKICAgICAgICB1X3Nob3J0IHRoX3Nwb3J0OwogICAgICAgIHVf c2hvcnQgdGhfZHBvcnQ7CiAgICAgICAgdGNwX3NlcSB0aF9zZXE7CiAgICAgICAgdGNwX3NlcSB0 aF9hY2s7CiAgICAgICAgdV9jaGFyIHRoX29mZjo0LAogICAgICAgICAgICAgICAgdGhfeDI6NDsK ICAgICAgICB1X2NoYXIgdGhfZmxhZ3M7CgoKCgoKCiAgICAgICAgdV9zaG9ydCB0aF93aW47CiAg ICAgICAgdV9zaG9ydCB0aF9zdW07CiAgICAgICAgdV9zaG9ydCB0aF91cnA7Cn07CiMgMTM4ICJp bmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyA1NyAiL3Vz ci9pbmNsdWRlL2FycGEvaW5ldC5oIiAzCiAgICAgZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2FkZHIo Y29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW5fYWRkcl90IGluZXRfbG5hb2Yoc3RydWN0IGlu X2FkZHIpOwogICAgIGV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21ha2VhZGRyKGluX2FkZHJf dCwgaW5fYWRkcl90KTsKICAgICBleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0b2Yoc3RydWN0IGlu X2FkZHIpOwogICAgIGV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXR3b3JrKGNvbnN0IGNoYXIgKik7 CiAgICAgZXh0ZXJuIGludCBpbmV0X2F0b24oY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5fYWRkciAq KTsKICAgICBleHRlcm4gY2hhciAqaW5ldF9udG9hKHN0cnVjdCBpbl9hZGRyKTsKIyAxMzkgImlu Y2x1ZGVzLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3JwYy90eXBlcy5oIiAxIDMKIyAyNyAiL3Vz ci9pbmNsdWRlL3JwYy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGJvb2xfdDsKCgp0eXBlZGVmIGlu dCBlbnVtX3Q7CiMgNDIgIi91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMwogICAgICAgIHR5cGVk ZWYgbG9uZyBsb25nIGxvbmdsb25nX3Q7CiAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv bmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDMKdHlwZWRl ZiB1X2xvbmdsb25nX3QgdWxvbmdsb25nX3Q7CiMgMTM5ICIvdXNyL2luY2x1ZGUvcnBjL3R5cGVz LmgiIDMKZXh0ZXJuIGNvbnN0IGNoYXIgX19uc2xfZG9tW107CiMgMTQxICJpbmNsdWRlcy5oIiAy CiMgMTQ5ICJpbmNsdWRlcy5oIgojIDEgIi9vcHQvZ251L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns di5oIiAxCiMgMTUwICJpbmNsdWRlcy5oIiAyCgojIDEgImRlZmluZXMuaCIgMQojIDE1MSAiZGVm aW5lcy5oIgp0eXBlZGVmIHVpbnQ4X3QgdV9pbnQ4X3Q7CnR5cGVkZWYgdWludDE2X3QgdV9pbnQx Nl90Owp0eXBlZGVmIHVpbnQzMl90IHVfaW50MzJfdDsKIyAyMDUgImRlZmluZXMuaCIKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVfaW50NjRfdDsKIyAxNTIgImluY2x1ZGVzLmgiIDIK CiMgMSAidmVyc2lvbi5oIiAxCiMgMTU0ICJpbmNsdWRlcy5oIiAyCiMgMSAib3BlbmJzZC1jb21w YXQvb3BlbmJzZC1jb21wYXQuaCIgMQojIDkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0 LmgiCiMgMSAib3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmgiIDEKIyA5ICJvcGVuYnNkLWNv bXBhdC9iaW5kcmVzdnBvcnQuaCIKaW50IGJpbmRyZXN2cG9ydF9zYShpbnQgc2QsIHN0cnVjdCBz b2NrYWRkciAqc2EpOwojIDEwICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMg MSAib3BlbmJzZC1jb21wYXQvZ2V0Y3dkLmgiIDEKIyAxMSAib3BlbmJzZC1jb21wYXQvb3BlbmJz ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3JlYWxwYXRoLmgiIDEKIyAxMiAib3Bl bmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3JyZXN2 cG9ydC5oIiAxCiMgOSAib3BlbmJzZC1jb21wYXQvcnJlc3Zwb3J0LmgiCmludCBycmVzdnBvcnRf YWYoaW50ICphbHBvcnQsIHNhX2ZhbWlseV90IGFmKTsKIyAxMyAib3BlbmJzZC1jb21wYXQvb3Bl bmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3N0cmxjcHkuaCIgMQojIDkgIm9w ZW5ic2QtY29tcGF0L3N0cmxjcHkuaCIKc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBj aGFyICpzcmMsIHNpemVfdCBzaXopOwojIDE0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh dC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvc3RybGNhdC5oIiAxCiMgOSAib3BlbmJzZC1jb21w YXQvc3RybGNhdC5oIgpzaXplX3Qgc3RybGNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywg c2l6ZV90IHNpeik7CiMgMTUgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAx ICJvcGVuYnNkLWNvbXBhdC9zdHJtb2RlLmgiIDEKCgoKCnZvaWQgc3RybW9kZShyZWdpc3RlciBt b2RlX3QgbW9kZSwgcmVnaXN0ZXIgY2hhciAqcCk7CiMgMTYgIm9wZW5ic2QtY29tcGF0L29wZW5i c2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9ta3RlbXAuaCIgMQoKCgoKCgoKaW50 IG1rc3RlbXBzKGNoYXIgKnBhdGgsIGludCBzbGVuKTsKaW50IG1rc3RlbXAoY2hhciAqcGF0aCk7 CmNoYXIgKm1rZHRlbXAoY2hhciAqcGF0aCk7CiMgMTcgIm9wZW5ic2QtY29tcGF0L29wZW5ic2Qt Y29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9kYWVtb24uaCIgMQoKCgoKCgoKaW50IGRh ZW1vbihpbnQgbm9jaGRpciwgaW50IG5vY2xvc2UpOwojIDE4ICJvcGVuYnNkLWNvbXBhdC9vcGVu YnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvZGlybmFtZS5oIiAxCiMgMTkgIm9w ZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9iYXNl NjQuaCIgMQojIDEwICJvcGVuYnNkLWNvbXBhdC9iYXNlNjQuaCIKaW50IGI2NF9udG9wKHVfY2hh ciBjb25zdCAqc3JjLCBzaXplX3Qgc3JjbGVuZ3RoLCBjaGFyICp0YXJnZXQsCiAgICBzaXplX3Qg dGFyZ3NpemUpOwppbnQgYjY0X3B0b24oY2hhciBjb25zdCAqc3JjLCB1X2NoYXIgKnRhcmdldCwg c2l6ZV90IHRhcmdzaXplKTsKIyAyMCAib3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIg MgojIDEgIm9wZW5ic2QtY29tcGF0L3NpZ2FjdC5oIiAxCiMgMjEgIm9wZW5ic2QtY29tcGF0L29w ZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9pbmV0X250b2EuaCIgMQojIDIy ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQv aW5ldF9udG9wLmgiIDEKIyA5ICJvcGVuYnNkLWNvbXBhdC9pbmV0X250b3AuaCIKY29uc3QgY2hh ciAqCmluZXRfbnRvcChpbnQgYWYsIGNvbnN0IHZvaWQgKnNyYywgY2hhciAqZHN0LCBzaXplX3Qg c2l6ZSk7CiMgMjMgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVu YnNkLWNvbXBhdC9zdHJzZXAuaCIgMQojIDkgIm9wZW5ic2QtY29tcGF0L3N0cnNlcC5oIgpjaGFy ICpzdHJzZXAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmRlbGltKTsKIyAyNCAib3BlbmJz ZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3NldHByb2N0 aXRsZS5oIiAxCiMgOSAib3BlbmJzZC1jb21wYXQvc2V0cHJvY3RpdGxlLmgiCnZvaWQgc2V0cHJv Y3RpdGxlKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIyAyNSAib3BlbmJzZC1jb21wYXQvb3BlbmJz ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L2dldGdyb3VwbGlzdC5oIiAxCiMgMTIg Im9wZW5ic2QtY29tcGF0L2dldGdyb3VwbGlzdC5oIgppbnQgZ2V0Z3JvdXBsaXN0KGNvbnN0IGNo YXIgKiwgZ2lkX3QsIGdpZF90ICosIGludCAqKTsKIyAyNiAib3BlbmJzZC1jb21wYXQvb3BlbmJz ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L2dsb2IuaCIgMQojIDQ4ICJvcGVuYnNk LWNvbXBhdC9nbG9iLmgiCnN0cnVjdCBzdGF0Owp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50 IGdsX3BhdGhjOwogICAgICAgIGludCBnbF9tYXRjaGM7CiAgICAgICAgaW50IGdsX29mZnM7CiAg ICAgICAgaW50IGdsX2ZsYWdzOwogICAgICAgIGNoYXIgKipnbF9wYXRodjsKCiAgICAgICAgaW50 ICgqZ2xfZXJyZnVuYykgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgoKCgoKICAgICAgICB2b2lkICgq Z2xfY2xvc2VkaXIpICh2b2lkICopOwogICAgICAgIHN0cnVjdCBkaXJlbnQgKigqZ2xfcmVhZGRp cikgKHZvaWQgKik7CiAgICAgICAgdm9pZCAqKCpnbF9vcGVuZGlyKSAoY29uc3QgY2hhciAqKTsK ICAgICAgICBpbnQgKCpnbF9sc3RhdCkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CiAg ICAgICAgaW50ICgqZ2xfc3RhdCkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7Cn0gZ2xv Yl90OwojIDk0ICJvcGVuYnNkLWNvbXBhdC9nbG9iLmgiCmludCBnbG9iIChjb25zdCBjaGFyICos IGludCwgaW50ICgqKShjb25zdCBjaGFyICosIGludCksIGdsb2JfdCAqKTsKdm9pZCBnbG9iZnJl ZSAoZ2xvYl90ICopOwojIDI3ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMg MSAib3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuaCIgMQojIDMzICJvcGVuYnNkLWNvbXBh dC9yZWFkcGFzc3BocmFzZS5oIgojIDEgImluY2x1ZGVzLmgiIDEKIyAzNCAib3BlbmJzZC1jb21w YXQvcmVhZHBhc3NwaHJhc2UuaCIgMgojIDQ0ICJvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFz ZS5oIgpjaGFyICpyZWFkcGFzc3BocmFzZShjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90LCBp bnQpOwojIDI4ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJz ZC1jb21wYXQvZ2V0b3B0LmgiIDEKIyAxMCAib3BlbmJzZC1jb21wYXQvZ2V0b3B0LmgiCmludCBC U0RnZXRvcHQoaW50IGFyZ2MsIGNoYXIgKiBjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0cyk7 CiMgMjkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKCgojIDEgIm9wZW5ic2Qt Y29tcGF0L2JzZC1hcmM0cmFuZG9tLmgiIDEKIyAzMyAib3BlbmJzZC1jb21wYXQvYnNkLWFyYzRy YW5kb20uaCIKdW5zaWduZWQgaW50IGFyYzRyYW5kb20odm9pZCk7CnZvaWQgYXJjNHJhbmRvbV9z dGlyKHZvaWQpOwojIDMyICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAi b3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaCIgMQojIDMyICJvcGVuYnNkLWNvbXBhdC9ic2QtbWlz Yy5oIgpjaGFyICpnZXRfcHJvZ25hbWUoY2hhciAqYXJndjApOwoKCgoKCgppbnQgc2V0ZW52KGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgb3ZlcndyaXRlKTsKCgoKaW50 IHNldGxvZ2luKGNvbnN0IGNoYXIgKm5hbWUpOwojIDUyICJvcGVuYnNkLWNvbXBhdC9ic2QtbWlz Yy5oIgppbnQgc2V0ZXVpZCh1aWRfdCBldWlkKTsKCgoKaW50IHNldGVnaWQodWlkX3QgZWdpZCk7 CiMgMzMgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNv bXBhdC9ic2Qtc25wcmludGYuaCIgMQojIDM0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh dC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCIgMQojIDM1ICJvcGVuYnNk LWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCgoKIyAxICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdl dGFkZHJpbmZvLmgiIDEKCgoKCgoKCiMgMSAib3BlbmJzZC1jb21wYXQvZmFrZS1nYWktZXJybm9z LmgiIDEKIyA5ICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdldGFkZHJpbmZvLmgiIDIKIyAyMiAib3Bl bmJzZC1jb21wYXQvZmFrZS1nZXRhZGRyaW5mby5oIgpzdHJ1Y3QgYWRkcmluZm8gewogICAgICAg IGludCBhaV9mbGFnczsKICAgICAgICBpbnQgYWlfZmFtaWx5OwogICAgICAgIGludCBhaV9zb2Nr dHlwZTsKICAgICAgICBpbnQgYWlfcHJvdG9jb2w7CiAgICAgICAgc2l6ZV90IGFpX2FkZHJsZW47 CiAgICAgICAgY2hhciAqYWlfY2Fub25uYW1lOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWlf YWRkcjsKICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpX25leHQ7Cn07CgoKCmludCBnZXRhZGRy aW5mbyhjb25zdCBjaGFyICpob3N0bmFtZSwgY29uc3QgY2hhciAqc2Vydm5hbWUsCiAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLCBzdHJ1Y3QgYWRkcmluZm8gKipy ZXMpOwoKCgpjaGFyICpnYWlfc3RyZXJyb3IoaW50IGVjb2RlKTsKCgoKdm9pZCBmcmVlYWRkcmlu Zm8oc3RydWN0IGFkZHJpbmZvICphaSk7CiMgMzggIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29t cGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdldG5hbWVpbmZvLmgiIDEKIyA5ICJv cGVuYnNkLWNvbXBhdC9mYWtlLWdldG5hbWVpbmZvLmgiCmludCBnZXRuYW1laW5mbyhjb25zdCBz dHJ1Y3Qgc29ja2FkZHIgKnNhLCBzaXplX3Qgc2FsZW4sIGNoYXIgKmhvc3QsCiAgICAgICAgICAg ICAgICBzaXplX3QgaG9zdGxlbiwgY2hhciAqc2Vydiwgc2l6ZV90IHNlcnZsZW4sIGludCBmbGFn cyk7CiMgMzkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNk LWNvbXBhdC9mYWtlLXNvY2tldC5oIiAxCiMgMTMgIm9wZW5ic2QtY29tcGF0L2Zha2Utc29ja2V0 LmgiCnN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgc3Nf c2E7CiAgICAgICAgY2hhciBfX3NzX3BhZDJbKDEyOCAtIHNpemVvZiAoc3RydWN0IHNvY2thZGRy KSldOwp9OwojIDI3ICJvcGVuYnNkLWNvbXBhdC9mYWtlLXNvY2tldC5oIgpzdHJ1Y3QgaW42X2Fk ZHIgewogICAgICAgIHVfaW50OF90IHM2X2FkZHJbMTZdOwp9OwoKCgpzdHJ1Y3Qgc29ja2FkZHJf aW42IHsKICAgdW5zaWduZWQgc2hvcnQgc2luNl9mYW1pbHk7CiAgICAgICAgdV9pbnQxNl90IHNp bjZfcG9ydDsKICAgICAgICB1X2ludDMyX3Qgc2luNl9mbG93aW5mbzsKICAgICAgICBzdHJ1Y3Qg aW42X2FkZHIgc2luNl9hZGRyOwp9OwojIDQwICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh dC5oIiAyCgoKIyAxICJvcGVuYnNkLWNvbXBhdC9ic2QtY3JheS5oIiAxCiMgNDMgIm9wZW5ic2Qt Y29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXgu aCIgMQojIDQ0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJz ZC1jb21wYXQvcG9ydC1haXguaCIgMQojIDQ1ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh dC5oIiAyCiMgMTU1ICJpbmNsdWRlcy5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dp bl91dGlsLmgiIDEKIyAxNTYgImluY2x1ZGVzLmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9ic2Qt bmV4dHN0ZXAuaCIgMQojIDE1NyAiaW5jbHVkZXMuaCIgMgoKIyAxICJlbnRyb3B5LmgiIDEKIyAz MCAiZW50cm9weS5oIgp2b2lkIHNlZWRfcm5nKHZvaWQpOwp2b2lkIGluaXRfcm5nKHZvaWQpOwoj IDE1OSAiaW5jbHVkZXMuaCIgMgojIDc4ICJzY3AuYyIgMgpzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgcmNzaWRbXSA9IHsgKGNoYXIgKilyY3NpZCwgIlwxMDAoIykiICIkT3BlbkJTRDogc2NwLmMs diAxLjkxIDIwMDIvMDYvMTkgMDA6Mjc6NTUgZGVyYWFkdCBFeHAgJCIgfTsKCiMgMSAieG1hbGxv Yy5oIiAxCiMgMjIgInhtYWxsb2MuaCIKdm9pZCAqeG1hbGxvYyhzaXplX3QpOwp2b2lkICp4cmVh bGxvYyh2b2lkICosIHNpemVfdCk7CnZvaWQgeGZyZWUodm9pZCAqKTsKY2hhciAqeHN0cmR1cChj b25zdCBjaGFyICopOwojIDgxICJzY3AuYyIgMgojIDEgImF0b21pY2lvLmgiIDEKIyAzMSAiYXRv bWljaW8uaCIKc3NpemVfdCBhdG9taWNpbyhzc2l6ZV90ICgqKSgpLCBpbnQsIHZvaWQgKiwgc2l6 ZV90KTsKIyA4MiAic2NwLmMiIDIKIyAxICJwYXRobmFtZXMuaCIgMQojIDgzICJzY3AuYyIgMgoj IDEgImxvZy5oIiAxCiMgMTggImxvZy5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXNsb2cuaCIgMSAz CiMgODUgIi91c3IvaW5jbHVkZS9zeXNsb2cuaCIgMwogICAgZXh0ZXJuIHZvaWQgb3BlbmxvZyhj b25zdCBjaGFyICosIGludCwgaW50KTsKCiAgICAgICBleHRlcm4gdm9pZCBzeXNsb2coaW50LCBj b25zdCBjaGFyICosIC4uLik7CgoKCiAgICBleHRlcm4gdm9pZCBjbG9zZWxvZyh2b2lkKTsKICAg IGV4dGVybiBpbnQgc2V0bG9nbWFzayhpbnQpOwojIDE5ICJsb2cuaCIgMgoKCnR5cGVkZWYgZW51 bSB7CiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX0RBRU1PTiwKICAgICAgICBTWVNMT0dfRkFDSUxJ VFlfVVNFUiwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfQVVUSCwKCgoKICAgICAgICBTWVNMT0df RkFDSUxJVFlfTE9DQUwwLAogICAgICAgIFNZU0xPR19GQUNJTElUWV9MT0NBTDEsCiAgICAgICAg U1lTTE9HX0ZBQ0lMSVRZX0xPQ0FMMiwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfTE9DQUwzLAog ICAgICAgIFNZU0xPR19GQUNJTElUWV9MT0NBTDQsCiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX0xP Q0FMNSwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfTE9DQUw2LAogICAgICAgIFNZU0xPR19GQUNJ TElUWV9MT0NBTDcsCiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX05PVF9TRVQgPSAtMQp9IFN5c2xv Z0ZhY2lsaXR5OwoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBTWVNMT0dfTEVWRUxfUVVJRVQsCiAg ICAgICAgU1lTTE9HX0xFVkVMX0ZBVEFMLAogICAgICAgIFNZU0xPR19MRVZFTF9FUlJPUiwKICAg ICAgICBTWVNMT0dfTEVWRUxfSU5GTywKICAgICAgICBTWVNMT0dfTEVWRUxfVkVSQk9TRSwKICAg ICAgICBTWVNMT0dfTEVWRUxfREVCVUcxLAogICAgICAgIFNZU0xPR19MRVZFTF9ERUJVRzIsCiAg ICAgICAgU1lTTE9HX0xFVkVMX0RFQlVHMywKICAgICAgICBTWVNMT0dfTEVWRUxfTk9UX1NFVCA9 IC0xCn0gTG9nTGV2ZWw7Cgp2b2lkIGxvZ19pbml0KGNoYXIgKiwgTG9nTGV2ZWwsIFN5c2xvZ0Zh Y2lsaXR5LCBpbnQpOwoKU3lzbG9nRmFjaWxpdHkgbG9nX2ZhY2lsaXR5X251bWJlcihjaGFyICop OwpMb2dMZXZlbCBsb2dfbGV2ZWxfbnVtYmVyKGNoYXIgKik7Cgp2b2lkIGZhdGFsKGNvbnN0IGNo YXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGVy cm9yKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAy KSkpOwp2b2lkIGxvZyhjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHBy aW50ZiwgMSwgMikpKTsKdm9pZCB2ZXJib3NlKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0 ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGRlYnVnKGNvbnN0IGNoYXIgKiwgLi4u KSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGRlYnVnMihjb25z dCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMikpKTsKdm9p ZCBkZWJ1ZzMoY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYs IDEsIDIpKSk7Cgp2b2lkIGZhdGFsX2NsZWFudXAodm9pZCk7CnZvaWQgZmF0YWxfYWRkX2NsZWFu dXAodm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKik7CnZvaWQgZmF0YWxfcmVtb3ZlX2NsZWFudXAo dm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKik7Cgp2b2lkIGRvX2xvZyhMb2dMZXZlbCwgY29uc3Qg Y2hhciAqLCB2YV9saXN0KTsKIyA4NCAic2NwLmMiIDIKIyAxICJtaXNjLmgiIDEKIyAxNSAibWlz Yy5oIgpjaGFyICpjaG9wKGNoYXIgKik7CmNoYXIgKnN0cmRlbGltKGNoYXIgKiopOwp2b2lkIHNl dF9ub25ibG9jayhpbnQpOwp2b2lkIHVuc2V0X25vbmJsb2NrKGludCk7CnZvaWQgc2V0X25vZGVs YXkoaW50KTsKaW50IGEycG9ydChjb25zdCBjaGFyICopOwpjaGFyICpjbGVhbmhvc3RuYW1lKGNo YXIgKik7CmNoYXIgKmNvbG9uKGNoYXIgKik7CmxvbmcgY29udnRpbWUoY29uc3QgY2hhciAqKTsK CnN0cnVjdCBwYXNzd2QgKnB3Y29weShzdHJ1Y3QgcGFzc3dkICopOwoKdHlwZWRlZiBzdHJ1Y3Qg YXJnbGlzdCBhcmdsaXN0OwpzdHJ1Y3QgYXJnbGlzdCB7CiAgICAgICAgY2hhciAqKmxpc3Q7CiAg ICAgICAgaW50IG51bTsKICAgICAgICBpbnQgbmFsbG9jOwp9Owp2b2lkIGFkZGFyZ3MoYXJnbGlz dCAqLCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMiwgMykpKTsK Cgp0eXBlZGVmIHZvaWQgKCpteXNpZ190KShpbnQpOwpteXNpZ190IG15c2lnbmFsKGludCBzaWcs IG15c2lnX3QgYWN0KTsKIyA4NSAic2NwLmMiIDIKCgoKCmNoYXIgKl9fcHJvZ25hbWU7CiMgOTgg InNjcC5jIgp2b2lkIHByb2dyZXNzbWV0ZXIoaW50KTsKCgppbnQgZ2V0dHR5d2lkdGgodm9pZCk7 CmludCBkb19jbWQoY2hhciAqaG9zdCwgY2hhciAqcmVtdXNlciwgY2hhciAqY21kLCBpbnQgKmZk aW4sIGludCAqZmRvdXQsIGludCBhcmdjKTsKCgphcmdsaXN0IGFyZ3M7CgoKc3RhdGljIHN0cnVj dCB0aW1ldmFsIHN0YXJ0OwoKCnZvbGF0aWxlIG9mZl90IHN0YXRieXRlczsKCgpvZmZfdCB0b3Rh bGJ5dGVzID0gMDsKCgpjaGFyICpjdXJmaWxlOwoKCmludCB2ZXJib3NlX21vZGUgPSAwOwoKCmlu dCBzaG93cHJvZ3Jlc3MgPSAxOwoKCmNoYXIgKnNzaF9wcm9ncmFtID0gIi9vcHQvZ251L29wZW5z c2gtMy40LWhwcGEyMC9iaW4vc3NoIjsKCgoKCgoKCmludApkb19jbWQoY2hhciAqaG9zdCwgY2hh ciAqcmVtdXNlciwgY2hhciAqY21kLCBpbnQgKmZkaW4sIGludCAqZmRvdXQsIGludCBhcmdjKQp7 CiAgICAgICAgaW50IHBpblsyXSwgcG91dFsyXSwgcmVzZXJ2ZWRbMl07CgogICAgICAgIGlmICh2 ZXJib3NlX21vZGUpCiAgICAgICAgICAgICAgICBmcHJpbnRmKCgmX19pb2JbMl0pLAogICAgICAg ICAgICAgICAgICAgICJFeGVjdXRpbmc6IHByb2dyYW0gJXMgaG9zdCAlcywgdXNlciAlcywgY29t bWFuZCAlc1xuIiwKICAgICAgICAgICAgICAgICAgICBzc2hfcHJvZ3JhbSwgaG9zdCwKICAgICAg ICAgICAgICAgICAgICByZW11c2VyID8gcmVtdXNlciA6ICIodW5zcGVjaWZpZWQpIiwgY21kKTsK CgoKCgogICAgICAgIHBpcGUocmVzZXJ2ZWQpOwoKCiAgICAgICAgaWYgKHBpcGUocGluKSA8IDAp CiAgICAgICAgICAgICAgICBmYXRhbCgicGlwZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwogICAg ICAgIGlmIChwaXBlKHBvdXQpIDwgMCkKICAgICAgICAgICAgICAgIGZhdGFsKCJwaXBlOiAlcyIs IHN0cmVycm9yKGVycm5vKSk7CgoKICAgICAgICBjbG9zZShyZXNlcnZlZFswXSk7CiAgICAgICAg Y2xvc2UocmVzZXJ2ZWRbMV0pOwoKCiAgICAgICAgaWYgKGZvcmsoKSA9PSAwKSB7CgogICAgICAg ICAgICAgICAgY2xvc2UocGluWzFdKTsKICAgICAgICAgICAgICAgIGNsb3NlKHBvdXRbMF0pOwog ICAgICAgICAgICAgICAgZHVwMihwaW5bMF0sIDApOwogICAgICAgICAgICAgICAgZHVwMihwb3V0 WzFdLCAxKTsKICAgICAgICAgICAgICAgIGNsb3NlKHBpblswXSk7CiAgICAgICAgICAgICAgICBj bG9zZShwb3V0WzFdKTsKCiAgICAgICAgICAgICAgICBhcmdzLmxpc3RbMF0gPSBzc2hfcHJvZ3Jh bTsKICAgICAgICAgICAgICAgIGlmIChyZW11c2VyICE9IDBMKQogICAgICAgICAgICAgICAgICAg ICAgICBhZGRhcmdzKCZhcmdzLCAiLWwlcyIsIHJlbXVzZXIpOwogICAgICAgICAgICAgICAgYWRk YXJncygmYXJncywgIiVzIiwgaG9zdCk7CiAgICAgICAgICAgICAgICBhZGRhcmdzKCZhcmdzLCAi JXMiLCBjbWQpOwoKICAgICAgICAgICAgICAgIGV4ZWN2cChzc2hfcHJvZ3JhbSwgYXJncy5saXN0 KTsKICAgICAgICAgICAgICAgIHBlcnJvcihzc2hfcHJvZ3JhbSk7CiAgICAgICAgICAgICAgICBl eGl0KDEpOwogICAgICAgIH0KCiAgICAgICAgY2xvc2UocGluWzBdKTsKICAgICAgICAqZmRvdXQg PSBwaW5bMV07CiAgICAgICAgY2xvc2UocG91dFsxXSk7CiAgICAgICAgKmZkaW4gPSBwb3V0WzBd OwogICAgICAgIHJldHVybiAwOwp9Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGNudDsK ICAgICAgICBjaGFyICpidWY7Cn0gQlVGOwoKQlVGICphbGxvY2J1ZihCVUYgKiwgaW50LCBpbnQp Owp2b2lkIGxvc3Rjb25uKGludCk7CnZvaWQgbm9zcGFjZSh2b2lkKTsKaW50IG9rbmFtZShjaGFy ICopOwp2b2lkIHJ1bl9lcnIoY29uc3QgY2hhciAqLC4uLik7CnZvaWQgdmVyaWZ5ZGlyKGNoYXIg Kik7CgpzdHJ1Y3QgcGFzc3dkICpwd2Q7CnVpZF90IHVzZXJpZDsKaW50IGVycnMsIHJlbWluLCBy ZW1vdXQ7CmludCBwZmxhZywgaWFtcmVtb3RlLCBpYW1yZWN1cnNpdmUsIHRhcmdldHNob3VsZGJl ZGlyZWN0b3J5OwoKCmNoYXIgY21kWzY0XTsKCmludCByZXNwb25zZSh2b2lkKTsKdm9pZCByc291 cmNlKGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CnZvaWQgc2luayhpbnQsIGNoYXIgKltdKTsKdm9p ZCBzb3VyY2UoaW50LCBjaGFyICpbXSk7CnZvaWQgdG9sb2NhbChpbnQsIGNoYXIgKltdKTsKdm9p ZCB0b3JlbW90ZShjaGFyICosIGludCwgY2hhciAqW10pOwp2b2lkIHVzYWdlKHZvaWQpOwoKaW50 Cm1haW4oYXJnYywgYXJndikKICAgICAgICBpbnQgYXJnYzsKICAgICAgICBjaGFyICphcmd2W107 CnsKICAgICAgICBpbnQgY2gsIGZmbGFnLCB0ZmxhZzsKICAgICAgICBjaGFyICp0YXJnOwogICAg ICAgIGV4dGVybiBjaGFyICpCU0RvcHRhcmc7CiAgICAgICAgZXh0ZXJuIGludCBCU0RvcHRpbmQ7 CgogICAgICAgIF9fcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CgogICAgICAgIGFy Z3MubGlzdCA9IDBMOwogICAgICAgIGFkZGFyZ3MoJmFyZ3MsICJzc2giKTsKICAgICAgICBhZGRh cmdzKCZhcmdzLCAiLXgiKTsKICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLW9Gb3J3YXJkQWdlbnQg bm8iKTsKICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLW9DbGVhckFsbEZvcndhcmRpbmdzIHllcyIp OwoKICAgICAgICBmZmxhZyA9IHRmbGFnID0gMDsKICAgICAgICB3aGlsZSAoKGNoID0gQlNEZ2V0 b3B0KGFyZ2MsIGFyZ3YsICJkZnBydHZCQ2M6aTpQOnE0NlM6bzpGOiIpKSAhPSAtMSkKICAgICAg ICAgICAgICAgIHN3aXRjaCAoY2gpIHsKCiAgICAgICAgICAgICAgICBjYXNlICc0JzoKICAgICAg ICAgICAgICAgIGNhc2UgJzYnOgogICAgICAgICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgICAg ICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItJWMiLCBjaCk7CiAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICAgICBj YXNlICdjJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgICAgY2FzZSAn Ric6CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItJWMlcyIsIGNoLCBC U0RvcHRhcmcpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg IGNhc2UgJ1AnOgogICAgICAgICAgICAgICAgICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLXAlcyIs IEJTRG9wdGFyZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICAgY2FzZSAnQic6CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItb0Jh dGNobW9kZSB5ZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICAgICAgICAgcGZsYWcgPSAxOwogICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAg ICAgICAgICAgICAgICAgICBpYW1yZWN1cnNpdmUgPSAxOwogICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ1MnOgogICAgICAgICAgICAgICAgICAgICAg ICBzc2hfcHJvZ3JhbSA9IHhzdHJkdXAoQlNEb3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAg ICAgYWRkYXJncygmYXJncywgIi12Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2Vf bW9kZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg Y2FzZSAncSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dwcm9ncmVzcyA9IDA7CiAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCiAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0c2hvdWxkYmVkaXJlY3RvcnkgPSAxOwogICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAg ICAgICAgICAgICAgICAgICBpYW1yZW1vdGUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBm ZmxhZyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg Y2FzZSAndCc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlhbXJlbW90ZSA9IDE7CiAgICAgICAg ICAgICAgICAgICAgICAgIHRmbGFnID0gMTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICB1c2Fn ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgIGFyZ2MgLT0gQlNEb3B0aW5kOwogICAgICAg IGFyZ3YgKz0gQlNEb3B0aW5kOwoKICAgICAgICBpZiAoKHB3ZCA9IGdldHB3dWlkKHVzZXJpZCA9 IGdldHVpZCgpKSkgPT0gMEwpCiAgICAgICAgICAgICAgICBmYXRhbCgidW5rbm93biB1c2VyICVk IiwgKGludCkgdXNlcmlkKTsKCiAgICAgICAgaWYgKCFpc2F0dHkoMikpCiAgICAgICAgICAgICAg ICBzaG93cHJvZ3Jlc3MgPSAwOwoKICAgICAgICByZW1pbiA9IDA7CiAgICAgICAgcmVtb3V0ID0g MTsKCiAgICAgICAgaWYgKGZmbGFnKSB7CgogICAgICAgICAgICAgICAgKHZvaWQpIHJlc3BvbnNl KCk7CiAgICAgICAgICAgICAgICBzb3VyY2UoYXJnYywgYXJndik7CiAgICAgICAgICAgICAgICBl eGl0KGVycnMgIT0gMCk7CiAgICAgICAgfQogICAgICAgIGlmICh0ZmxhZykgewoKICAgICAgICAg ICAgICAgIHNpbmsoYXJnYywgYXJndik7CiAgICAgICAgICAgICAgICBleGl0KGVycnMgIT0gMCk7 CiAgICAgICAgfQogICAgICAgIGlmIChhcmdjIDwgMikKICAgICAgICAgICAgICAgIHVzYWdlKCk7 CiAgICAgICAgaWYgKGFyZ2MgPiAyKQogICAgICAgICAgICAgICAgdGFyZ2V0c2hvdWxkYmVkaXJl Y3RvcnkgPSAxOwoKICAgICAgICByZW1pbiA9IHJlbW91dCA9IC0xOwoKICAgICAgICAodm9pZCkg c25wcmludGYoY21kLCBzaXplb2YgY21kLCAic2NwJXMlcyVzJXMiLAogICAgICAgICAgICB2ZXJi b3NlX21vZGUgPyAiIC12IiA6ICIiLAogICAgICAgICAgICBpYW1yZWN1cnNpdmUgPyAiIC1yIiA6 ICIiLCBwZmxhZyA/ICIgLXAiIDogIiIsCiAgICAgICAgICAgIHRhcmdldHNob3VsZGJlZGlyZWN0 b3J5ID8gIiAtZCIgOiAiIik7CgogICAgICAgICh2b2lkKSBzaWduYWwoMTMsIGxvc3Rjb25uKTsK CiAgICAgICAgaWYgKCh0YXJnID0gY29sb24oYXJndlthcmdjIC0gMV0pKSkKICAgICAgICAgICAg ICAgIHRvcmVtb3RlKHRhcmcsIGFyZ2MsIGFyZ3YpOwogICAgICAgIGVsc2UgewogICAgICAgICAg ICAgICAgdG9sb2NhbChhcmdjLCBhcmd2KTsKICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaG91 bGRiZWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5ZGlyKGFyZ3ZbYXJn YyAtIDFdKTsKICAgICAgICB9CiAgICAgICAgZXhpdChlcnJzICE9IDApOwp9Cgp2b2lkCnRvcmVt b3RlKHRhcmcsIGFyZ2MsIGFyZ3YpCiAgICAgICAgY2hhciAqdGFyZywgKmFyZ3ZbXTsKICAgICAg ICBpbnQgYXJnYzsKewogICAgICAgIGludCBpLCBsZW47CiAgICAgICAgY2hhciAqYnAsICpob3N0 LCAqc3JjLCAqc3VzZXIsICp0aG9zdCwgKnR1c2VyOwoKICAgICAgICAqdGFyZysrID0gMDsKICAg ICAgICBpZiAoKnRhcmcgPT0gMCkKICAgICAgICAgICAgICAgIHRhcmcgPSAiLiI7CgogICAgICAg IGlmICgodGhvc3QgPSBzdHJjaHIoYXJndlthcmdjIC0gMV0sICdAJykpKSB7CgogICAgICAgICAg ICAgICAgKnRob3N0KysgPSAwOwogICAgICAgICAgICAgICAgdHVzZXIgPSBhcmd2W2FyZ2MgLSAx XTsKICAgICAgICAgICAgICAgIGlmICgqdHVzZXIgPT0gJ1wwJykKICAgICAgICAgICAgICAgICAg ICAgICAgdHVzZXIgPSAwTDsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFva25hbWUodHVzZXIp KQogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgICAgICB0aG9zdCA9IGFyZ3ZbYXJnYyAtIDFdOwogICAgICAgICAgICAgICAgdHVzZXIg PSAwTDsKICAgICAgICB9CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjIC0gMTsgaSsrKSB7 CiAgICAgICAgICAgICAgICBzcmMgPSBjb2xvbihhcmd2W2ldKTsKICAgICAgICAgICAgICAgIGlm IChzcmMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgKnNzaF9vcHRpb25z ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIteCAtbydDbGVhckFsbEZvcndhcmRpbmdz IHllcyciOwogICAgICAgICAgICAgICAgICAgICAgICAqc3JjKysgPSAwOwogICAgICAgICAgICAg ICAgICAgICAgICBpZiAoKnNyYyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNyYyA9ICIuIjsKICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHN0cmNocihhcmd2W2ld LCAnQCcpOwogICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oc3NoX3Byb2dyYW0p ICsgc3RybGVuKGFyZ3ZbaV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihz cmMpICsgKHR1c2VyID8gc3RybGVuKHR1c2VyKSA6IDApICsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmxlbih0aG9zdCkgKyBzdHJsZW4odGFyZykgKwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RybGVuKHNzaF9vcHRpb25zKSArIDY0ICsgMjA7CiAgICAgICAgICAgICAgICAg ICAgICAgIGJwID0geG1hbGxvYyhsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG9z dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpob3N0KysgPSAwOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBjbGVhbmhvc3RuYW1lKGhvc3QpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c2VyID0gYXJndltpXTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoKnN1c2VyID09ICdcMCcpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdXNlciA9IHB3ZC0+cHdfbmFtZTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghb2tuYW1lKHN1c2VyKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNucHJpbnRmKGJwLCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIlcyVzICVzIC1uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi1sICVzICVzICVzICVzICclcyVzJXM6JXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3NoX3Byb2dyYW0sIHZlcmJvc2VfbW9kZSA/ICIgLXYiIDogIiIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaF9vcHRpb25zLCBzdXNlciwgaG9zdCwg Y21kLCBzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1c2VyID8gdHVz ZXIgOiAiIiwgdHVzZXIgPyAiQCIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhvc3QsIHRhcmcpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBjbGVhbmhvc3RuYW1lKGFyZ3ZbaV0p OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJwLCBsZW4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjICVzJXMgJXMgLW4gJXMgIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgJyVzJXMlczolcyciLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hfcHJvZ3JhbSwgdmVyYm9zZV9tb2Rl ID8gIiAtdiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoX29w dGlvbnMsIGhvc3QsIGNtZCwgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0dXNlciA/IHR1c2VyIDogIiIsIHR1c2VyID8gIkAiIDogIiIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRob3N0LCB0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJFeGVjdXRpbmc6ICVzXG4i LCBicCk7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzeXN0ZW0oYnApOwogICAgICAg ICAgICAgICAgICAgICAgICAodm9pZCkgeGZyZWUoYnApOwogICAgICAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWluID09IC0xKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKHRhcmcpICsgNjQgKyAyMDsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicCA9IHhtYWxsb2MobGVuKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAodm9pZCkgc25wcmludGYoYnAsIGxlbiwgIiVzIC10ICVzIiwg Y21kLCB0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0gY2xlYW5o b3N0bmFtZSh0aG9zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvX2Nt ZChob3N0LCB0dXNlciwgYnAsICZyZW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnJlbW91dCwgYXJnYykgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz cG9uc2UoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0 KDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB4ZnJlZShicCk7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKDEs IGFyZ3YgKyBpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KCnZvaWQKdG9sb2NhbChh cmdjLCBhcmd2KQogICAgICAgIGludCBhcmdjOwogICAgICAgIGNoYXIgKmFyZ3ZbXTsKewogICAg ICAgIGludCBpLCBsZW47CiAgICAgICAgY2hhciAqYnAsICpob3N0LCAqc3JjLCAqc3VzZXI7Cgog ICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICBp ZiAoIShzcmMgPSBjb2xvbihhcmd2W2ldKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVu ID0gc3RybGVuKCJjcCIpICsgc3RybGVuKGFyZ3ZbaV0pICsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmxlbihhcmd2W2FyZ2MgLSAxXSkgKyAyMDsKICAgICAgICAgICAgICAgICAgICAg ICAgYnAgPSB4bWFsbG9jKGxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzbnBy aW50ZihicCwgbGVuLCAiZXhlYyAlcyVzJXMgJXMgJXMiLCAiY3AiLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWFtcmVjdXJzaXZlID8gIiAtciIgOiAiIiwgcGZsYWcgPyAiIC1wIiA6ICIi LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndltpXSwgYXJndlthcmdjIC0gMV0pOwog ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJFeGVjdXRpbmc6ICVzXG4iLCBi cCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzeXN0ZW0oYnApKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsrZXJyczsKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQp IHhmcmVlKGJwKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAqc3JjKysgPSAwOwogICAgICAgICAgICAgICAgaWYgKCpz cmMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gIi4iOwogICAgICAgICAgICAg ICAgaWYgKChob3N0ID0gc3RyY2hyKGFyZ3ZbaV0sICdAJykpID09IDBMKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgIGhvc3QgPSBhcmd2W2ldOwogICAgICAgICAgICAgICAgICAgICAgICBzdXNl ciA9IDBMOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg Kmhvc3QrKyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1c2VyID0gYXJndltpXTsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCpzdXNlciA9PSAnXDAnKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN1c2VyID0gcHdkLT5wd19uYW1lOwogICAgICAgICAgICAgICAgICAg ICAgICBlbHNlIGlmICghb2tuYW1lKHN1c2VyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhvc3QgPSBj bGVhbmhvc3RuYW1lKGhvc3QpOwogICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKHNyYykgKyA2 NCArIDIwOwogICAgICAgICAgICAgICAgYnAgPSB4bWFsbG9jKGxlbik7CiAgICAgICAgICAgICAg ICAodm9pZCkgc25wcmludGYoYnAsIGxlbiwgIiVzIC1mICVzIiwgY21kLCBzcmMpOwogICAgICAg ICAgICAgICAgaWYgKGRvX2NtZChob3N0LCBzdXNlciwgYnAsICZyZW1pbiwgJnJlbW91dCwgYXJn YykgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB4ZnJlZShicCk7CiAgICAg ICAgICAgICAgICAgICAgICAgICsrZXJyczsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB4ZnJlZShicCk7CiAgICAgICAg ICAgICAgICBzaW5rKDEsIGFyZ3YgKyBhcmdjIC0gMSk7CiAgICAgICAgICAgICAgICAodm9pZCkg Y2xvc2UocmVtaW4pOwogICAgICAgICAgICAgICAgcmVtaW4gPSByZW1vdXQgPSAtMTsKICAgICAg ICB9Cn0KCnZvaWQKc291cmNlKGFyZ2MsIGFyZ3YpCiAgICAgICAgaW50IGFyZ2M7CiAgICAgICAg Y2hhciAqYXJndltdOwp7CiAgICAgICAgc3RydWN0IHN0YXQgc3RiOwogICAgICAgIHN0YXRpYyBC VUYgYnVmZmVyOwogICAgICAgIEJVRiAqYnA7CiAgICAgICAgb2ZmX3QgaSwgYW10LCByZXN1bHQ7 CiAgICAgICAgaW50IGZkLCBoYWRlcnIsIGluZHg7CiAgICAgICAgY2hhciAqbGFzdCwgKm5hbWUs IGJ1ZlsyMDQ4XTsKICAgICAgICBpbnQgbGVuOwoKICAgICAgICBmb3IgKGluZHggPSAwOyBpbmR4 IDwgYXJnYzsgKytpbmR4KSB7CiAgICAgICAgICAgICAgICBuYW1lID0gYXJndltpbmR4XTsKICAg ICAgICAgICAgICAgIHN0YXRieXRlcyA9IDA7CiAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4o bmFtZSk7CiAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMSAmJiBuYW1lW2xlbi0xXSA9PSAn LycpCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbLS1sZW5dID0gJ1wwJzsKICAgICAgICAg ICAgICAgIGlmIChzdHJjaHIobmFtZSwgJ1xuJykgIT0gMEwpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgcnVuX2VycigiJXM6IHNraXBwaW5nLCBmaWxlbmFtZSBjb250YWlucyBhIG5ld2xpbmUi LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gbmV4dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoZmQg PSBvcGVuKG5hbWUsIDAwMDAwMDAsIDApKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gc3lzZXJyOwogICAgICAgICAgICAgICAgaWYgKGZzdGF0KGZkLCAmc3RiKSA8IDApIHsKc3lz ZXJyOiBydW5fZXJyKCIlczogJXMiLCBuYW1lLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICBzd2l0Y2ggKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCkgewogICAgICAgICAgICAgICAgY2FzZSAw MTAwMDAwOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNh c2UgMDA0MDAwMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlhbXJlY3Vyc2l2ZSkgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzb3VyY2UobmFtZSwgJnN0Yik7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0OwogICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg cnVuX2VycigiJXM6IG5vdCBhIHJlZ3VsYXIgZmlsZSIsIG5hbWUpOwogICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAo KGxhc3QgPSBzdHJyY2hyKG5hbWUsICcvJykpID09IDBMKQogICAgICAgICAgICAgICAgICAgICAg ICBsYXN0ID0gbmFtZTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgKytsYXN0OwogICAgICAgICAgICAgICAgY3VyZmlsZSA9IGxhc3Q7CiAgICAgICAgICAgICAg ICBpZiAocGZsYWcpIHsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzbnByaW50 ZihidWYsIHNpemVvZiBidWYsICJUJWx1IDAgJWx1IDBcbiIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodV9sb25nKSBzdGIuc3RfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodV9sb25nKSBzdGIuc3RfYXRpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkg YXRvbWljaW8od3JpdGUsIHJlbW91dCwgYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChyZXNwb25zZSgpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIHNucHJp bnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIkMlMDRvICVsbGQgJXNcbiIsCiAgICAgICAgICAgICAgICAg ICAgKHVfaW50KSAoc3RiLnN0X21vZGUgJiAoMDAwNDAwMHwwMDAyMDAwfDAwMDA3MDB8MDAwMDA3 MHwwMDAwMDA3KSksCiAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylzdGIuc3Rfc2l6ZSwg bGFzdCk7CgoKCgoKCiAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJTZW5kaW5nIGZpbGUgbW9kZXM6 ICVzIiwgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKCgmX19pb2JbMl0pKTsK ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICh2b2lkKSBhdG9taWNpbyh3cml0ZSwg cmVtb3V0LCBidWYsIHN0cmxlbihidWYpKTsKICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSgp IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0OwogICAgICAgICAgICAgICAg aWYgKChicCA9IGFsbG9jYnVmKCZidWZmZXIsIGZkLCAyMDQ4KSkgPT0gMEwpIHsKbmV4dDogKHZv aWQpIGNsb3NlKGZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoc2hvd3Byb2dyZXNzKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgIHRvdGFsYnl0ZXMgPSBzdGIuc3Rfc2l6ZTsKICAgICAgICAgICAgICAgICAg ICAgICAgcHJvZ3Jlc3NtZXRlcigtMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgZm9yIChoYWRlcnIgPSBpID0gMDsgaSA8IHN0Yi5zdF9zaXplOyBpICs9IGJwLT5jbnQpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgYW10ID0gYnAtPmNudDsKICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGkgKyBhbXQgPiBzdGIuc3Rfc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhbXQgPSBzdGIuc3Rfc2l6ZSAtIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm ICghaGFkZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXRv bWljaW8ocmVhZCwgZmQsIGJwLT5idWYsIGFtdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHJlc3VsdCAhPSBhbXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYWRlcnIgPSByZXN1bHQgPj0gMCA/IDUgOiBlcnJubzsKICAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFkZXJyKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCBicC0+ YnVmLCBhbXQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQgPSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCBicC0+YnVm LCBhbXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gYW10 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFkZXJyID0gcmVzdWx0 ID49IDAgPyA1IDogZXJybm87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGJ5 dGVzICs9IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgaWYgKHNob3dwcm9ncmVzcykKICAgICAgICAgICAgICAgICAgICAg ICAgcHJvZ3Jlc3NtZXRlcigxKTsKCiAgICAgICAgICAgICAgICBpZiAoY2xvc2UoZmQpIDwgMCAm JiAhaGFkZXJyKQogICAgICAgICAgICAgICAgICAgICAgICBoYWRlcnIgPSBlcnJubzsKICAgICAg ICAgICAgICAgIGlmICghaGFkZXJyKQogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgYXRv bWljaW8od3JpdGUsIHJlbW91dCwgIiIsIDEpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgICAgICAgICBydW5fZXJyKCIlczogJXMiLCBuYW1lLCBzdHJlcnJvcihoYWRlcnIp KTsKICAgICAgICAgICAgICAgICh2b2lkKSByZXNwb25zZSgpOwogICAgICAgIH0KfQoKdm9pZApy c291cmNlKG5hbWUsIHN0YXRwKQogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgc3RydWN0IHN0 YXQgKnN0YXRwOwp7CiAgICAgICAgRElSICpkaXJwOwogICAgICAgIHN0cnVjdCBkaXJlbnQgKmRw OwogICAgICAgIGNoYXIgKmxhc3QsICp2ZWN0WzFdLCBwYXRoWzExMDBdOwoKICAgICAgICBpZiAo IShkaXJwID0gb3BlbmRpcihuYW1lKSkpIHsKICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzOiAl cyIsIG5hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg ICAgfQogICAgICAgIGxhc3QgPSBzdHJyY2hyKG5hbWUsICcvJyk7CiAgICAgICAgaWYgKGxhc3Qg PT0gMCkKICAgICAgICAgICAgICAgIGxhc3QgPSBuYW1lOwogICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgIGxhc3QrKzsKICAgICAgICBpZiAocGZsYWcpIHsKICAgICAgICAgICAgICAgICh2b2lk KSBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICJUJWx1IDAgJWx1IDBcbiIsCiAgICAgICAg ICAgICAgICAgICAgKHVfbG9uZykgc3RhdHAtPnN0X210aW1lLAogICAgICAgICAgICAgICAgICAg ICh1X2xvbmcpIHN0YXRwLT5zdF9hdGltZSk7CiAgICAgICAgICAgICAgICAodm9pZCkgYXRvbWlj aW8od3JpdGUsIHJlbW91dCwgcGF0aCwgc3RybGVuKHBhdGgpKTsKICAgICAgICAgICAgICAgIGlm IChyZXNwb25zZSgpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcihkaXJw KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAg ICAgIH0KICAgICAgICAodm9pZCkgc25wcmludGYocGF0aCwgc2l6ZW9mIHBhdGgsICJEJTA0byAl ZCAlLjEwMjRzXG4iLAogICAgICAgICAgICAodV9pbnQpIChzdGF0cC0+c3RfbW9kZSAmICgwMDA0 MDAwfDAwMDIwMDB8MDAwMDcwMHwwMDAwMDcwfDAwMDAwMDcpKSwgMCwgbGFzdCk7CiAgICAgICAg aWYgKHZlcmJvc2VfbW9kZSkKICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJF bnRlcmluZyBkaXJlY3Rvcnk6ICVzIiwgcGF0aCk7CiAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdy aXRlLCByZW1vdXQsIHBhdGgsIHN0cmxlbihwYXRoKSk7CiAgICAgICAgaWYgKHJlc3BvbnNlKCkg PCAwKSB7CiAgICAgICAgICAgICAgICBjbG9zZWRpcihkaXJwKTsKICAgICAgICAgICAgICAgIHJl dHVybjsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IDBM KSB7CiAgICAgICAgICAgICAgICBpZiAoZHAtPmRfaW5vID09IDApCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoZHAtPmRfbmFtZSwg Ii4iKSB8fCAhc3RyY21wKGRwLT5kX25hbWUsICIuLiIpKQogICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4obmFtZSkgKyAxICsgc3RybGVu KGRwLT5kX25hbWUpID49IHNpemVvZihwYXRoKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgcnVuX2VycigiJXMvJXM6IG5hbWUgdG9vIGxvbmciLCBuYW1lLCBkcC0+ZF9uYW1lKTsKICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAodm9pZCkgc25wcmludGYocGF0aCwgc2l6ZW9mIHBhdGgsICIlcy8lcyIsIG5hbWUs IGRwLT5kX25hbWUpOwogICAgICAgICAgICAgICAgdmVjdFswXSA9IHBhdGg7CiAgICAgICAgICAg ICAgICBzb3VyY2UoMSwgdmVjdCk7CiAgICAgICAgfQogICAgICAgICh2b2lkKSBjbG9zZWRpcihk aXJwKTsKICAgICAgICAodm9pZCkgYXRvbWljaW8od3JpdGUsIHJlbW91dCwgIkVcbiIsIDIpOwog ICAgICAgICh2b2lkKSByZXNwb25zZSgpOwp9Cgp2b2lkCnNpbmsoYXJnYywgYXJndikKICAgICAg ICBpbnQgYXJnYzsKICAgICAgICBjaGFyICphcmd2W107CnsKICAgICAgICBzdGF0aWMgQlVGIGJ1 ZmZlcjsKICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGI7CiAgICAgICAgZW51bSB7CiAgICAgICAgICAg ICAgICBZRVMsIE5PLCBESVNQTEFZRUQKICAgICAgICB9IHdyZXJyOwogICAgICAgIEJVRiAqYnA7 CiAgICAgICAgb2ZmX3QgaSwgajsKICAgICAgICBpbnQgYW10LCBjb3VudCwgZXhpc3RzLCBmaXJz dCwgbWFzaywgbW9kZSwgb2ZkLCBvbW9kZTsKICAgICAgICBvZmZfdCBzaXplOwogICAgICAgIGlu dCBzZXRpbWVzLCB0YXJnaXNkaXIsIHdyZXJybm8gPSAwOwogICAgICAgIGNoYXIgY2gsICpjcCwg Km5wLCAqdGFyZywgKndoeSwgKnZlY3RbMV0sIGJ1ZlsyMDQ4XTsKICAgICAgICBzdHJ1Y3QgdGlt ZXZhbCB0dlsyXTsKCgoKCgogICAgICAgIHNldGltZXMgPSB0YXJnaXNkaXIgPSAwOwogICAgICAg IG1hc2sgPSB1bWFzaygwKTsKICAgICAgICBpZiAoIXBmbGFnKQogICAgICAgICAgICAgICAgKHZv aWQpIHVtYXNrKG1hc2spOwogICAgICAgIGlmIChhcmdjICE9IDEpIHsKICAgICAgICAgICAgICAg IHJ1bl9lcnIoImFtYmlndW91cyB0YXJnZXQiKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAg ICAgICAgfQogICAgICAgIHRhcmcgPSAqYXJndjsKICAgICAgICBpZiAodGFyZ2V0c2hvdWxkYmVk aXJlY3RvcnkpCiAgICAgICAgICAgICAgICB2ZXJpZnlkaXIodGFyZyk7CgogICAgICAgICh2b2lk KSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCAiIiwgMSk7CiAgICAgICAgaWYgKHN0YXQodGFyZywg JnN0YikgPT0gMCAmJiAoKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCk9PTAwNDAwMDApKQogICAgICAg ICAgICAgICAgdGFyZ2lzZGlyID0gMTsKICAgICAgICBmb3IgKGZpcnN0ID0gMTs7IGZpcnN0ID0g MCkgewogICAgICAgICAgICAgICAgY3AgPSBidWY7CiAgICAgICAgICAgICAgICBpZiAoYXRvbWlj aW8ocmVhZCwgcmVtaW4sIGNwLCAxKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgICAgICAgICBpZiAoKmNwKysgPT0gJ1xuJykKICAgICAgICAgICAgICAgICAg ICAgICAgZG8geyB3aHkgPSAidW5leHBlY3RlZCA8bmV3bGluZT4iOyBnb3RvIHNjcmV3dXA7IH0g d2hpbGUgKDApOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBp ZiAoYXRvbWljaW8ocmVhZCwgcmVtaW4sICZjaCwgc2l6ZW9mKGNoKSkgIT0gc2l6ZW9mKGNoKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHdoeSA9ICJsb3N0IGNvbm5lY3Rp b24iOyBnb3RvIHNjcmV3dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAq Y3ArKyA9IGNoOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoY3AgPCAmYnVmW3NpemVvZihidWYp IC0gMV0gJiYgY2ggIT0gJ1xuJyk7CiAgICAgICAgICAgICAgICAqY3AgPSAwOwoKICAgICAgICAg ICAgICAgIGlmIChidWZbMF0gPT0gJ1wwMScgfHwgYnVmWzBdID09ICdcMDInKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChpYW1yZW1vdGUgPT0gMCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodm9pZCkgYXRvbWljaW8od3JpdGUsIDIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZiArIDEsIHN0cmxlbihidWYgKyAxKSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChidWZbMF0gPT0gJ1wwMicpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgKytlcnJzOwogICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IGlmIChidWZbMF0gPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBhdG9t aWNpbyh3cml0ZSwgcmVtb3V0LCAiIiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nKQogICAg ICAgICAgICAgICAgICAgICAgICAqLS1jcCA9IDA7CgogICAgICAgICAgICAgICAgY3AgPSBidWY7 CiAgICAgICAgICAgICAgICBpZiAoKmNwID09ICdUJykgewogICAgICAgICAgICAgICAgICAgICAg ICBzZXRpbWVzKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CiAgICAgICAgICAgICAg ICAgICAgICAgIHR2WzFdLnR2X3NlYyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAg ICAgICAgICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJyAnKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvIHsgd2h5ID0gIm10aW1lLnNlYyBub3QgZGVsaW1pdGVkIjsgZ290byBz Y3Jld3VwOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHZbMV0udHZfdXNl YyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3Ag fHwgKmNwKysgIT0gJyAnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5 ID0gIm10aW1lLnVzZWMgbm90IGRlbGltaXRlZCI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7 CiAgICAgICAgICAgICAgICAgICAgICAgIHR2WzBdLnR2X3NlYyA9IHN0cnRvbChjcCwgJmNwLCAx MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJyAnKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5ID0gImF0aW1lLnNlYyBub3QgZGVs aW1pdGVkIjsgZ290byBzY3Jld3VwOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAg ICAgdHZbMF0udHZfdXNlYyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkbyB7IHdoeSA9ICJhdGltZS51c2VjIG5vdCBkZWxpbWl0ZWQiOyBnb3RvIHNjcmV3 dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgYXRvbWljaW8o d3JpdGUsIHJlbW91dCwgIiIsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgqY3AgIT0gJ0MnICYmICpjcCAh PSAnRCcpIHsKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzIiwgY3ApOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB3aHkgPSAiZXhwZWN0ZWQgY29udHJvbCByZWNv cmQiOyBnb3RvIHNjcmV3dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgbW9kZSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKCsrY3A7IGNwIDwgYnVmICsg NTsgY3ArKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmNwIDwgJzAnIHx8ICpjcCA+ ICc3JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHdoeSA9ICJiYWQgbW9k ZSI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1v ZGUgPSAobW9kZSA8PCAzKSB8ICgqY3AgLSAnMCcpOwogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgaWYgKCpjcCsrICE9ICcgJykKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB3 aHkgPSAibW9kZSBub3QgZGVsaW1pdGVkIjsgZ290byBzY3Jld3VwOyB9IHdoaWxlICgwKTsKCiAg ICAgICAgICAgICAgICBmb3IgKHNpemUgPSAwOyAoX19TQl9tYXNrcyA/IF9fU0JfbWFza3NbKmNw XSAmIDB4MDEwIDogX2lzZGlnaXQoKmNwKSk7KQogICAgICAgICAgICAgICAgICAgICAgICBzaXpl ID0gc2l6ZSAqIDEwICsgKCpjcCsrIC0gJzAnKTsKICAgICAgICAgICAgICAgIGlmICgqY3ArKyAh PSAnICcpCiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5ID0gInNpemUgbm90IGRlbGlt aXRlZCI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZiAodGFy Z2lzZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjaGFyICpuYW1lYnVmOwog ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgaW50IGN1cnNpemU7CiAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBuZWVkOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCA9IHN0 cmxlbih0YXJnKSArIHN0cmxlbihjcCkgKyAyNTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm IChuZWVkID4gY3Vyc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu YW1lYnVmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGZyZWUobmFt ZWJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWJ1ZiA9IHhtYWxsb2Mo bmVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2l6ZSA9IG5lZWQ7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHNu cHJpbnRmKG5hbWVidWYsIG5lZWQsICIlcyVzJXMiLCB0YXJnLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyY21wKHRhcmcsICIvIikgPyAiLyIgOiAiIiwgY3ApOwogICAgICAgICAgICAg ICAgICAgICAgICBucCA9IG5hbWVidWY7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg ICAgICAgICAgICAgICAgbnAgPSB0YXJnOwogICAgICAgICAgICAgICAgY3VyZmlsZSA9IGNwOwog ICAgICAgICAgICAgICAgZXhpc3RzID0gc3RhdChucCwgJnN0YikgPT0gMDsKICAgICAgICAgICAg ICAgIGlmIChidWZbMF0gPT0gJ0QnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2Rf ZmxhZyA9IHBmbGFnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCk9 PTAwNDAwMDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJu byA9IDIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChwZmxhZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh2b2lkKSBjaG1vZChucCwgbW9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RfZmxhZyA9IDE7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1rZGlyKG5wLCBtb2RlIHwgMDAwMDcwMCkg PCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmVjdFswXSA9 IHhzdHJkdXAobnApOwogICAgICAgICAgICAgICAgICAgICAgICBzaW5rKDEsIHZlY3QpOwogICAg ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0aW1lcykgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNldGltZXMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICh1dGltZXModmVjdFswXSwgdHYpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJ1bl9lcnIoIiVzOiBzZXQgdGltZXM6ICVzIiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0WzBdLCBzdHJlcnJvcihlcnJubykpOwogICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RfZmxh ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgY2htb2QodmVjdFswXSwg bW9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZWN0WzBdKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhmcmVlKHZlY3RbMF0pOwogICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9tb2RlID0gbW9k ZTsKICAgICAgICAgICAgICAgIG1vZGUgfD0gMDAwMDIwMDsKICAgICAgICAgICAgICAgIGlmICgo b2ZkID0gb3BlbihucCwgMDAwMDAwMXwwMDAwNDAwLCBtb2RlKSkgPCAwKSB7CmJhZDogcnVuX2Vy cigiJXM6ICVzIiwgbnAsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKHZvaWQpIGF0b21p Y2lvKHdyaXRlLCByZW1vdXQsICIiLCAxKTsKICAgICAgICAgICAgICAgIGlmICgoYnAgPSBhbGxv Y2J1ZigmYnVmZmVyLCBvZmQsIDQwOTYpKSA9PSAwTCkgewogICAgICAgICAgICAgICAgICAgICAg ICAodm9pZCkgY2xvc2Uob2ZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcCA9IGJwLT5idWY7CiAgICAgICAgICAg ICAgICB3cmVyciA9IE5POwoKICAgICAgICAgICAgICAgIGlmIChzaG93cHJvZ3Jlc3MpIHsKICAg ICAgICAgICAgICAgICAgICAgICAgdG90YWxieXRlcyA9IHNpemU7CiAgICAgICAgICAgICAgICAg ICAgICAgIHByb2dyZXNzbWV0ZXIoLTEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgc3RhdGJ5dGVzID0gMDsKICAgICAgICAgICAgICAgIGZvciAoY291bnQgPSBpID0gMDsgaSA8 IHNpemU7IGkgKz0gNDA5NikgewogICAgICAgICAgICAgICAgICAgICAgICBhbXQgPSA0MDk2Owog ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIGFtdCA+IHNpemUpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYW10ID0gc2l6ZSAtIGk7CiAgICAgICAgICAgICAgICAgICAgICAg IGNvdW50ICs9IGFtdDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGogPSByZWFkKHJlbWluLCBjcCwgYW10KTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSAtMSAmJiAoZXJybm8gPT0gNCB8fAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSAxMSkpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBydW5fZXJyKCIlcyIsIGogPyBzdHJlcnJvcihlcnJubykgOgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkcm9wcGVkIGNvbm5lY3Rp b24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFtdCAtPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwICs9IGo7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGJ5dGVzICs9IGo7CiAgICAgICAg ICAgICAgICAgICAgICAgIH0gd2hpbGUgKGFtdCA+IDApOwogICAgICAgICAgICAgICAgICAgICAg ICBpZiAoY291bnQgPT0gYnAtPmNudCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAod3JlcnIgPT0gTk8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGogPSBhdG9taWNpbyh3cml0ZSwgb2ZkLCBicC0+YnVmLCBjb3VudCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPSBjb3VudCkgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVyciA9IFlFUzsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JlcnJubyA9IGogPj0g MCA/IDUgOiBlcnJubzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwID0g YnAtPmJ1ZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgaWYgKHNob3dwcm9ncmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgcHJv Z3Jlc3NtZXRlcigxKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPSAwICYmIHdyZXJyID09 IE5PICYmCiAgICAgICAgICAgICAgICAgICAgKGogPSBhdG9taWNpbyh3cml0ZSwgb2ZkLCBicC0+ YnVmLCBjb3VudCkpICE9IGNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdyZXJyID0g WUVTOwogICAgICAgICAgICAgICAgICAgICAgICB3cmVycm5vID0gaiA+PSAwID8gNSA6IGVycm5v OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGZ0cnVuY2F0ZShvZmQsIHNp emUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzOiB0cnVuY2F0ZTogJXMi LCBucCwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgd3JlcnIgPSBE SVNQTEFZRUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGZsYWcpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cyB8fCBvbW9kZSAhPSBtb2RlKQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmNobW9kKG9mZCwgb21vZGUpKQoKCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2VycigiJXM6IHNldCBt b2RlOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnAs IHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg ICAgICAgICAgICBpZiAoIWV4aXN0cyAmJiBvbW9kZSAhPSBtb2RlKQoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoZmNobW9kKG9mZCwgb21vZGUgJiB+bWFzaykpCgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fZXJyKCIlczogc2V0IG1vZGU6 ICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucCwgc3Ry ZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjbG9z ZShvZmQpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdyZXJyID0gWUVTOwogICAg ICAgICAgICAgICAgICAgICAgICB3cmVycm5vID0gZXJybm87CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAodm9pZCkgcmVzcG9uc2UoKTsKICAgICAgICAgICAgICAgIGlmIChzZXRp bWVzICYmIHdyZXJyID09IE5PKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldGltZXMgPSAw OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXRpbWVzKG5wLCB0dikgPCAwKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2VycigiJXM6IHNldCB0aW1lczogJXMiLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucCwgc3RyZXJyb3IoZXJybm8pKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVyciA9IERJU1BMQVlFRDsKICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3dp dGNoICh3cmVycikgewogICAgICAgICAgICAgICAgY2FzZSBZRVM6CiAgICAgICAgICAgICAgICAg ICAgICAgIHJ1bl9lcnIoIiVzOiAlcyIsIG5wLCBzdHJlcnJvcih3cmVycm5vKSk7CiAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBOTzoKICAgICAgICAg ICAgICAgICAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdyaXRlLCByZW1vdXQsICIiLCAxKTsKICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERJU1BMQVlF RDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAg ICAgfQpzY3Jld3VwOgogICAgICAgIHJ1bl9lcnIoInByb3RvY29sIGVycm9yOiAlcyIsIHdoeSk7 CiAgICAgICAgZXhpdCgxKTsKfQoKaW50CnJlc3BvbnNlKHZvaWQpCnsKICAgICAgICBjaGFyIGNo LCAqY3AsIHJlc3AsIHJidWZbMjA0OF07CgogICAgICAgIGlmIChhdG9taWNpbyhyZWFkLCByZW1p biwgJnJlc3AsIHNpemVvZihyZXNwKSkgIT0gc2l6ZW9mKHJlc3ApKQogICAgICAgICAgICAgICAg bG9zdGNvbm4oMCk7CgogICAgICAgIGNwID0gcmJ1ZjsKICAgICAgICBzd2l0Y2ggKHJlc3ApIHsK ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgIGRlZmF1 bHQ6CiAgICAgICAgICAgICAgICAqY3ArKyA9IHJlc3A7CgogICAgICAgIGNhc2UgMToKICAgICAg ICBjYXNlIDI6CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm IChhdG9taWNpbyhyZWFkLCByZW1pbiwgJmNoLCBzaXplb2YoY2gpKSAhPSBzaXplb2YoY2gpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3Rjb25uKDApOwogICAgICAgICAgICAg ICAgICAgICAgICAqY3ArKyA9IGNoOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoY3AgPCAmcmJ1 ZltzaXplb2YocmJ1ZikgLSAxXSAmJiBjaCAhPSAnXG4nKTsKCiAgICAgICAgICAgICAgICBpZiAo IWlhbXJlbW90ZSkKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdyaXRl LCAyLCByYnVmLCBjcCAtIHJidWYpOwogICAgICAgICAgICAgICAgKytlcnJzOwogICAgICAgICAg ICAgICAgaWYgKHJlc3AgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7 CiAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0KCn0KCnZvaWQKdXNhZ2Uodm9pZCkK ewogICAgICAgICh2b2lkKSBmcHJpbnRmKCgmX19pb2JbMl0pLAogICAgICAgICAgICAidXNhZ2U6 IHNjcCBbLXBxcnZCQzQ2XSBbLUYgY29uZmlnXSBbLVMgcHJvZ3JhbV0gWy1QIHBvcnRdXG4iCiAg ICAgICAgICAgICIgICAgICAgICAgIFstYyBjaXBoZXJdIFstaSBpZGVudGl0eV0gWy1vIG9wdGlv bl1cbiIKICAgICAgICAgICAgIiAgICAgICAgICAgW1t1c2VyQF1ob3N0MTpdZmlsZTEgWy4uLl0g W1t1c2VyQF1ob3N0MjpdZmlsZTJcbiIpOwogICAgICAgIGV4aXQoMSk7Cn0KCnZvaWQKcnVuX2Vy cihjb25zdCBjaGFyICpmbXQsLi4uKQp7CiAgICAgICAgc3RhdGljIEZJTEUgKmZwOwogICAgICAg IHZhX2xpc3QgYXA7CgogICAgICAgICsrZXJyczsKICAgICAgICBpZiAoZnAgPT0gMEwgJiYgIShm cCA9IGZkb3BlbihyZW1vdXQsICJ3IikpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg ICh2b2lkKSBmcHJpbnRmKGZwLCAiJWMiLCAweDAxKTsKICAgICAgICAodm9pZCkgZnByaW50Zihm cCwgInNjcDogIik7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXApLGZtdCk7CiAg ICAgICAgKHZvaWQpIHZmcHJpbnRmKGZwLCBmbXQsIGFwKTsKICAgICAgICBfX2J1aWx0aW5fdmFf ZW5kKGFwKTsKICAgICAgICAodm9pZCkgZnByaW50ZihmcCwgIlxuIik7CiAgICAgICAgKHZvaWQp IGZmbHVzaChmcCk7CgogICAgICAgIGlmICghaWFtcmVtb3RlKSB7CiAgICAgICAgICAgICAgICBf X2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcCksZm10KTsKICAgICAgICAgICAgICAgIHZmcHJpbnRm KCgmX19pb2JbMl0pLCBmbXQsIGFwKTsKICAgICAgICAgICAgICAgIF9fYnVpbHRpbl92YV9lbmQo YXApOwogICAgICAgICAgICAgICAgZnByaW50ZigoJl9faW9iWzJdKSwgIlxuIik7CiAgICAgICAg fQp9Cgp2b2lkCnZlcmlmeWRpcihjcCkKICAgICAgICBjaGFyICpjcDsKewogICAgICAgIHN0cnVj dCBzdGF0IHN0YjsKCiAgICAgICAgaWYgKCFzdGF0KGNwLCAmc3RiKSkgewogICAgICAgICAgICAg ICAgaWYgKCgoc3RiLnN0X21vZGUgJiAwMTcwMDAwKT09MDA0MDAwMCkpCiAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGVycm5vID0gMjA7CiAgICAgICAgfQog ICAgICAgIHJ1bl9lcnIoIiVzOiAlcyIsIGNwLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIGV4 aXQoMSk7Cn0KCmludApva25hbWUoY3AwKQogICAgICAgIGNoYXIgKmNwMDsKewogICAgICAgIGlu dCBjOwogICAgICAgIGNoYXIgKmNwOwoKICAgICAgICBjcCA9IGNwMDsKICAgICAgICBkbyB7CiAg ICAgICAgICAgICAgICBjID0gKGludCkqY3A7CiAgICAgICAgICAgICAgICBpZiAoYyAmIDAyMDAp CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOwogICAgICAgICAgICAgICAgaWYgKCEo X19TQl9tYXNrcyA/IF9fU0JfbWFza3NbY10gJiAweDAwMSA6IF9pc2FscGhhKGMpKSAmJiAhKF9f U0JfbWFza3MgPyBfX1NCX21hc2tzW2NdICYgMHgwMTAgOiBfaXNkaWdpdChjKSkgJiYKICAgICAg ICAgICAgICAgICAgICBjICE9ICdfJyAmJiBjICE9ICctJyAmJiBjICE9ICcuJyAmJiBjICE9ICcr JykKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7CiAgICAgICAgfSB3aGlsZSAoKisr Y3ApOwogICAgICAgIHJldHVybiAoMSk7CgpiYWQ6IGZwcmludGYoKCZfX2lvYlsyXSksICIlczog aW52YWxpZCB1c2VyIG5hbWVcbiIsIGNwMCk7CiAgICAgICAgcmV0dXJuICgwKTsKfQoKQlVGICoK YWxsb2NidWYoYnAsIGZkLCBibGtzaXplKQogICAgICAgIEJVRiAqYnA7CiAgICAgICAgaW50IGZk LCBibGtzaXplOwp7CiAgICAgICAgc2l6ZV90IHNpemU7CgogICAgICAgIHN0cnVjdCBzdGF0IHN0 YjsKCiAgICAgICAgaWYgKGZzdGF0KGZkLCAmc3RiKSA8IDApIHsKICAgICAgICAgICAgICAgIHJ1 bl9lcnIoImZzdGF0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICByZXR1 cm4gKDApOwogICAgICAgIH0KICAgICAgICBpZiAoc3RiLnN0X2Jsa3NpemUgPT0gMCkKICAgICAg ICAgICAgICAgIHNpemUgPSBibGtzaXplOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNp emUgPSBibGtzaXplICsgKHN0Yi5zdF9ibGtzaXplIC0gYmxrc2l6ZSAlIHN0Yi5zdF9ibGtzaXpl KSAlCiAgICAgICAgICAgICAgICAgICAgc3RiLnN0X2Jsa3NpemU7CgoKCiAgICAgICAgaWYgKGJw LT5jbnQgPj0gc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVybiAoYnApOwogICAgICAgIGlmIChi cC0+YnVmID09IDBMKQogICAgICAgICAgICAgICAgYnAtPmJ1ZiA9IHhtYWxsb2Moc2l6ZSk7CiAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgYnAtPmJ1ZiA9IHhyZWFsbG9jKGJwLT5idWYsIHNp emUpOwogICAgICAgIG1lbXNldChicC0+YnVmLCAwLCBzaXplKTsKICAgICAgICBicC0+Y250ID0g c2l6ZTsKICAgICAgICByZXR1cm4gKGJwKTsKfQoKdm9pZApsb3N0Y29ubihzaWdubykKICAgICAg ICBpbnQgc2lnbm87CnsKICAgICAgICBpZiAoIWlhbXJlbW90ZSkKICAgICAgICAgICAgICAgIHdy aXRlKDIsICJsb3N0IGNvbm5lY3Rpb25cbiIsIDE2KTsKICAgICAgICBpZiAoc2lnbm8pCiAgICAg ICAgICAgICAgICBfZXhpdCgxKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBleGl0KDEp Owp9CgpzdGF0aWMgdm9pZAp1cGRhdGVwcm9ncmVzc21ldGVyKGludCBpZ25vcmUpCnsKICAgICAg ICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwoKICAgICAgICBwcm9ncmVzc21ldGVyKDApOwogICAg ICAgIHNpZ25hbCgxNCwgdXBkYXRlcHJvZ3Jlc3NtZXRlcik7CiAgICAgICAgYWxhcm0oMSk7CiAg ICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOwp9CgpzdGF0aWMgaW50CmZvcmVncm91bmRwcm9jKHZv aWQpCnsKICAgICAgICBzdGF0aWMgcGlkX3QgcGdycCA9IC0xOwogICAgICAgIGludCBjdHR5X3Bn cnA7CgogICAgICAgIGlmIChwZ3JwID09IC0xKQogICAgICAgICAgICAgICAgcGdycCA9IGdldHBn cnAoKTsKCgogICAgICAgIHJldHVybiAoKGN0dHlfcGdycCA9IHRjZ2V0cGdycCgxKSkgIT0gLTEg JiYKICAgICAgICAgICAgICAgIGN0dHlfcGdycCA9PSBwZ3JwKTsKCgoKCn0KCnZvaWQKcHJvZ3Jl c3NtZXRlcihpbnQgZmxhZykKewogICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeGVzW10g PSAiIEtNR1RQIjsKICAgICAgICBzdGF0aWMgc3RydWN0IHRpbWV2YWwgbGFzdHVwZGF0ZTsKICAg ICAgICBzdGF0aWMgb2ZmX3QgbGFzdHNpemU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgbm93LCB0 ZCwgd2FpdDsKICAgICAgICBvZmZfdCBjdXJzaXplLCBhYmJyZXZzaXplOwogICAgICAgIGRvdWJs ZSBlbGFwc2VkOwogICAgICAgIGludCByYXRpbywgYmFybGVuZ3RoLCBpLCByZW1haW5pbmc7CiAg ICAgICAgY2hhciBidWZbNTEyXTsKCiAgICAgICAgaWYgKGZsYWcgPT0gLTEpIHsKICAgICAgICAg ICAgICAgICh2b2lkKSBnZXR0aW1lb2ZkYXkoJnN0YXJ0LCAoc3RydWN0IHRpbWV6b25lICopIDAp OwogICAgICAgICAgICAgICAgbGFzdHVwZGF0ZSA9IHN0YXJ0OwogICAgICAgICAgICAgICAgbGFz dHNpemUgPSAwOwogICAgICAgIH0KICAgICAgICBpZiAoZm9yZWdyb3VuZHByb2MoKSA9PSAwKQog ICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAodm9pZCkgZ2V0dGltZW9mZGF5KCZub3cs IChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CiAgICAgICAgY3Vyc2l6ZSA9IHN0YXRieXRlczsKICAg ICAgICBpZiAodG90YWxieXRlcyAhPSAwKSB7CiAgICAgICAgICAgICAgICByYXRpbyA9IDEwMC4w ICogY3Vyc2l6ZSAvIHRvdGFsYnl0ZXM7CiAgICAgICAgICAgICAgICByYXRpbyA9ICgoKHJhdGlv KT4oMCkpPyhyYXRpbyk6KDApKTsKICAgICAgICAgICAgICAgIHJhdGlvID0gKCgocmF0aW8pPCgx MDApKT8ocmF0aW8pOigxMDApKTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHJhdGlv ID0gMTAwOwoKICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiXHIlLTIwLjIwcyAl M2QlJSAiLCBjdXJmaWxlLCByYXRpbyk7CgogICAgICAgIGJhcmxlbmd0aCA9IGdldHR0eXdpZHRo KCkgLSA1MTsKICAgICAgICBpZiAoYmFybGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaSA9 IGJhcmxlbmd0aCAqIHJhdGlvIC8gMTAwOwogICAgICAgICAgICAgICAgc25wcmludGYoYnVmICsg c3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAg ICAgInwlLipzJSpzfCIsIGksCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAg ICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAg ICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiLAogICAg ICAgICAgICAgICAgICAgIGJhcmxlbmd0aCAtIGksICIiKTsKICAgICAgICB9CiAgICAgICAgaSA9 IDA7CiAgICAgICAgYWJicmV2c2l6ZSA9IGN1cnNpemU7CiAgICAgICAgd2hpbGUgKGFiYnJldnNp emUgPj0gMTAwMDAwICYmIGkgPCBzaXplb2YocHJlZml4ZXMpKSB7CiAgICAgICAgICAgICAgICBp Kys7CiAgICAgICAgICAgICAgICBhYmJyZXZzaXplID4+PSAxMDsKICAgICAgICB9CiAgICAgICAg c25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksICIg JTVsdSAlYyVjICIsCiAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBhYmJyZXZzaXplLCBwcmVm aXhlc1tpXSwKICAgICAgICAgICAgcHJlZml4ZXNbaV0gPT0gJyAnID8gJyAnIDogJ0InKTsKCiAg ICAgICAgZG8geyAoJndhaXQpLT50dl9zZWMgPSAoJm5vdyktPnR2X3NlYyAtICgmbGFzdHVwZGF0 ZSktPnR2X3NlYzsgKCZ3YWl0KS0+dHZfdXNlYyA9ICgmbm93KS0+dHZfdXNlYyAtICgmbGFzdHVw ZGF0ZSktPnR2X3VzZWM7IGlmICgoJndhaXQpLT50dl91c2VjIDwgMCkgeyAtLSgmd2FpdCktPnR2 X3NlYzsgKCZ3YWl0KS0+dHZfdXNlYyArPSAxMDAwMDAwOyB9IH0gd2hpbGUgKDApOwogICAgICAg IGlmIChjdXJzaXplID4gbGFzdHNpemUpIHsKICAgICAgICAgICAgICAgIGxhc3R1cGRhdGUgPSBu b3c7CiAgICAgICAgICAgICAgICBsYXN0c2l6ZSA9IGN1cnNpemU7CiAgICAgICAgICAgICAgICBp ZiAod2FpdC50dl9zZWMgPj0gNSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydC50dl9z ZWMgKz0gd2FpdC50dl9zZWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LnR2X3VzZWMg Kz0gd2FpdC50dl91c2VjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2FpdC50 dl9zZWMgPSAwOwogICAgICAgIH0KICAgICAgICBkbyB7ICgmdGQpLT50dl9zZWMgPSAoJm5vdykt PnR2X3NlYyAtICgmc3RhcnQpLT50dl9zZWM7ICgmdGQpLT50dl91c2VjID0gKCZub3cpLT50dl91 c2VjIC0gKCZzdGFydCktPnR2X3VzZWM7IGlmICgoJnRkKS0+dHZfdXNlYyA8IDApIHsgLS0oJnRk KS0+dHZfc2VjOyAoJnRkKS0+dHZfdXNlYyArPSAxMDAwMDAwOyB9IH0gd2hpbGUgKDApOwogICAg ICAgIGVsYXBzZWQgPSB0ZC50dl9zZWMgKyAodGQudHZfdXNlYyAvIDEwMDAwMDAuMCk7CgogICAg ICAgIGlmIChmbGFnICE9IDEgJiYKICAgICAgICAgICAgKHN0YXRieXRlcyA8PSAwIHx8IGVsYXBz ZWQgPD0gMC4wIHx8IGN1cnNpemUgPiB0b3RhbGJ5dGVzKSkgewogICAgICAgICAgICAgICAgc25w cmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAg ICAgICAgICAgICAgICAgIiAgIC0tOi0tIEVUQSIpOwogICAgICAgIH0gZWxzZSBpZiAod2FpdC50 dl9zZWMgPj0gNSkgewogICAgICAgICAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1Ziks IHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgIiAtIHN0YWxs ZWQgLSIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZmxhZyAhPSAxKQog ICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSAoaW50KSh0b3RhbGJ5dGVzIC8gKHN0 YXRieXRlcyAvIGVsYXBzZWQpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWQp OwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcg PSBlbGFwc2VkOwoKICAgICAgICAgICAgICAgIGkgPSByZW1haW5pbmcgLyAzNjAwOwogICAgICAg ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiArIHN0 cmxlbihidWYpLCBzaXplb2YoYnVmKSAtIHN0cmxlbihidWYpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiUyZDoiLCBpKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVu KGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIik7CiAgICAgICAgICAgICAg ICBpID0gcmVtYWluaW5nICUgMzYwMDsKICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiArIHN0 cmxlbihidWYpLCBzaXplb2YoYnVmKSAtIHN0cmxlbihidWYpLAogICAgICAgICAgICAgICAgICAg ICIlMDJkOiUwMmQlcyIsIGkgLyA2MCwgaSAlIDYwLAogICAgICAgICAgICAgICAgICAgIChmbGFn ICE9IDEpID8gIiBFVEEiIDogIiAgICAiKTsKICAgICAgICB9CiAgICAgICAgYXRvbWljaW8od3Jp dGUsIGZpbGVubygoJl9faW9iWzFdKSksIGJ1Ziwgc3RybGVuKGJ1ZikpOwoKICAgICAgICBpZiAo ZmxhZyA9PSAtMSkgewogICAgICAgICAgICAgICAgbXlzaWduYWwoMTQsIHVwZGF0ZXByb2dyZXNz bWV0ZXIpOwogICAgICAgICAgICAgICAgYWxhcm0oMSk7CiAgICAgICAgfSBlbHNlIGlmIChmbGFn ID09IDEpIHsKICAgICAgICAgICAgICAgIGFsYXJtKDApOwogICAgICAgICAgICAgICAgYXRvbWlj aW8od3JpdGUsIGZpbGVubygoJl9faW9iWzFdKSksICJcbiIsIDEpOwogICAgICAgICAgICAgICAg c3RhdGJ5dGVzID0gMDsKICAgICAgICB9Cn0KCmludApnZXR0dHl3aWR0aCh2b2lkKQp7CiAgICAg ICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKCiAgICAgICAgaWYgKGlvY3RsKGZpbGVubygoJl9f aW9iWzFdKSksICgoaW50KSgweDQwMDAwMDAwfCgoKGludClzaXplb2Yoc3RydWN0IHdpbnNpemUp JigweDFmZmYwMDAwPj4xNikpPDwxNil8KCgndCcpPDw4KXwxMDcpKSwgJndpbnNpemUpICE9IC0x KQogICAgICAgICAgICAgICAgcmV0dXJuICh3aW5zaXplLndzX2NvbCA/IHdpbnNpemUud3NfY29s IDogODApOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoODApOwp9Cg==