From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22747 invoked by alias); 17 Nov 2002 01:16:02 -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 22727 invoked by uid 71); 17 Nov 2002 01:16:01 -0000 Resent-Date: 17 Nov 2002 01:16:01 -0000 Resent-Message-ID: <20021117011601.22725.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, mnordine@wanadoo.fr Received: (qmail 22500 invoked by uid 61); 17 Nov 2002 01:15:08 -0000 Message-Id: <20021117011508.22499.qmail@sources.redhat.com> Date: Fri, 22 Nov 2002 11:16:00 -0000 From: mnordine@wanadoo.fr Reply-To: mnordine@wanadoo.fr To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: middle-end/8611: Internal compiler error X-SW-Source: 2002-11/txt/msg00847.txt.bz2 List-Id: >Number: 8611 >Category: middle-end >Synopsis: Internal compiler error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Nov 16 17:16:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: mnordine@wanadoo.fr >Release: unknown-1.0 >Organization: >Environment: SunOS nunuhome 5.8 Generic_108529-15 i86pc i386 i86pc >Description: In compiling mesa-4.1: nunuhome% gcc -v Reading specs from /usr/local/lib/gcc-lib/i386-pc-solaris2.8/3.1/specs Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls Thread model: posix gcc version 3.1 nunuhome% gcc -c -I. -I../include -save-temps -O3 -march=i486 -fPIC -I/usr/openwin/include -DUSE_XSHM image.c -o image.o image.c: In function `_mesa_unpack_chan_color_span': image.c:2944: could not find a spill register (insn 1627 1625 1628 (set (subreg:SF (reg:QI 275) 0) (plus:SF (reg:SF 8 st(0) [276]) (reg:SF 9 st(1) [280]))) 525 {*fop_sf_comm_nosse} (insn_list 1618 (nil)) (expr_list:REG_DEAD (reg:SF 8 st(0) [276]) (nil))) image.c:2944: Internal compiler error in failed_reload, at reload1.c:5050 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[2]: *** [image.o] Error 1 make[2]: Leaving directory `/opt/source/Mesa-4.1/src' make[1]: *** [solaris-x86-gcc] Error 2 make[1]: Leaving directory `/opt/source/Mesa-4.1/src' make: *** [solaris-x86-gcc] Error 2 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="image.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="image.i" IyAxICJpbWFnZS5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAi aW1hZ2UuYyIKIyAyNyAiaW1hZ2UuYyIKIyAxICJnbGhlYWRlci5oIiAxCiMgNTIgImdsaGVhZGVy LmgiCiMgMSAiL3Vzci9sb2NhbC9pMzg2LXBjLXNvbGFyaXMyLjgvaW5jbHVkZS9hc3NlcnQuaCIg MSAzCiMgMzAgIi91c3IvbG9jYWwvaTM4Ni1wYy1zb2xhcmlzMi44L2luY2x1ZGUvYXNzZXJ0Lmgi IDMKZXh0ZXJuIHZvaWQgX19lcHJpbnRmIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5z aWduZWQsIGNvbnN0IGNoYXIgKikKICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwojIDUz ICJnbGhlYWRlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgMTYgIi91 c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWN0eXBlLmgJMS4zMwk5 OS8wOC8xMCBTTUkiIAoKIyAxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAxIDMgNAoj IDI4ICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgj KWN0eXBlX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiIAoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2Zl YXR1cmVfdGVzdHMuaCIgMSAzIDQKIyAxMyAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3Rz LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpZmVhdHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYg U01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMyA0CiMgOSAiL3Vzci9p bmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWlzYV9kZWZzLmgJ MS4yMAk5OS8wNS8wNCBTTUkiCiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5o IiAyIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAyIDMgNAojIDYzICIv dXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzIDQKZXh0ZXJuIGludCBpc2FsbnVtKGludCk7 CmV4dGVybiBpbnQgaXNhbHBoYShpbnQpOwpleHRlcm4gaW50IGlzY250cmwoaW50KTsKZXh0ZXJu IGludCBpc2RpZ2l0KGludCk7CmV4dGVybiBpbnQgaXNncmFwaChpbnQpOwpleHRlcm4gaW50IGlz bG93ZXIoaW50KTsKZXh0ZXJuIGludCBpc3ByaW50KGludCk7CmV4dGVybiBpbnQgaXNwdW5jdChp bnQpOwpleHRlcm4gaW50IGlzc3BhY2UoaW50KTsKZXh0ZXJuIGludCBpc3VwcGVyKGludCk7CmV4 dGVybiBpbnQgaXN4ZGlnaXQoaW50KTsKCgoKCgoKCmV4dGVybiBpbnQgdG9sb3dlcihpbnQpOwpl eHRlcm4gaW50IHRvdXBwZXIoaW50KTsKCgoKCgpleHRlcm4gdW5zaWduZWQgY2hhciBfX2N0eXBl W107CmV4dGVybiB1bnNpZ25lZCBpbnQgKl9fY3R5cGVfbWFzazsKZXh0ZXJuIGludCAqX190cmFu c191cHBlcjsKZXh0ZXJuIGludCAqX190cmFuc19sb3dlcjsKIyAxOSAiL3Vzci9pbmNsdWRlL2N0 eXBlLmgiIDIgMyA0CiMgNDkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIGludCBp c2FzY2lpKGludCk7CmV4dGVybiBpbnQgdG9hc2NpaShpbnQpOwpleHRlcm4gaW50IF90b2xvd2Vy KGludCk7CmV4dGVybiBpbnQgX3RvdXBwZXIoaW50KTsKIyA1NCAiZ2xoZWFkZXIuaCIgMgoKCgoK IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVk ZS9tYXRoLmgiIDEgMyA0CiMgMjMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xh cmlzMi44LzMuMS9pbmNsdWRlL21hdGguaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyltYXRoLmgJ Mi4xMAk5OS8wNy8yOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMSAz IDQKCgoKCgoKCiNwcmFnbWEgaWRlbnQgIkAoIyltYXRoX2lzby5oCTEuMQk5OS8wNy8zMCBTTUki CiMgMjAgIi91c3IvaW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMyA0CnR5cGVkZWYgdW5pb24gX2hf dmFsIHsKICAgICAgICB1bnNpZ25lZCBsb25nIF9pW3NpemVvZihkb3VibGUpIC8gc2l6ZW9mKHVu c2lnbmVkIGxvbmcpXTsKICAgICAgICBkb3VibGUgX2Q7Cn0gX2hfdmFsOwoKCmV4dGVybiBjb25z dCBfaF92YWwgX19odWdlX3ZhbDsKIyAzNyAiL3Vzci9pbmNsdWRlL2lzby9tYXRoX2lzby5oIiAz IDQKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJs ZSk7CmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91 YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBz aW4gKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBj b3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg dGFuaCAoZG91YmxlKTsKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUpOwpleHRlcm4gZG91Ymxl IGZyZXhwIChkb3VibGUsIGludCAqKTsKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlLCBpbnQp OwpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUsIGRvdWJsZSAqKTsKCmV4dGVybiBkb3VibGUg cG93IChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlKTsKCmV4dGVy biBkb3VibGUgY2VpbCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmYWJzIChkb3VibGUpOwpleHRl cm4gZG91YmxlIGZsb29yIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91 YmxlKTsKIyAyNiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4x L2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDg5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYt cGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9tYXRoLmgiIDMgNApleHRlcm4gaW50IHNpZ25nYW07 CgoKCgoKCgplbnVtIHZlcnNpb24ge2xpYm1faWVlZSA9IC0xLCBjX2lzc3VlXzQsIGFuc2lfMSwg c3RyaWN0X2Fuc2l9OwoKCmV4dGVybiBjb25zdCBlbnVtIHZlcnNpb24gX2xpYl92ZXJzaW9uOwoK CgoKc3RydWN0IGV4Y2VwdGlvbiB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgY2hhciAqbmFt ZTsKICAgICAgICBkb3VibGUgYXJnMTsKICAgICAgICBkb3VibGUgYXJnMjsKICAgICAgICBkb3Vi bGUgcmV0dmFsOwp9OwojIDE0NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFy aXMyLjgvMy4xL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSk7 CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gaW50IGlzbmFu IChkb3VibGUpOwpleHRlcm4gZG91YmxlIGowIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGoxIChk b3VibGUpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbGdh bW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkx IChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSk7CiMgMTcyICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9tYXRoLmgiIDMg NApleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW5oIChkb3Vi bGUpOwpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGNicnQgKGRv dWJsZSk7CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0 ZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSwgZG91 YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlLCBkb3VibGUpOwojIDE5MiAiL3Vzci9s b2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvbWF0aC5oIiAz IDQKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlKTsKZXh0ZXJuIGludCBpbG9nYiAoZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByaW50IChkb3Vi bGUpOwojIDIwOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4x L2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9u ICopOwoKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91YmxlKTsKCgoKCmV4dGVybiBk b3VibGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRv dWJsZSwgaW50KTsKIyAyNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlz Mi44LzMuMS9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQsIGZs b2F0ICopOwoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlz Mi44LzMuMS9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMSAzIDQKIyAyMCAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5o IiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWZsb2F0aW5ncG9pbnQuaAkyLjUJOTkvMDYvMjIgU01J IgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2lu Y2x1ZGUvc3RkaW9fdGFnLmgiIDEgMyA0CiMgMTggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4 Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzIDQKI3ByYWdtYSBpZGVu dCAiQCgjKXN0ZGlvX3RhZy5oCTEuMwk5OC8wNC8yMCBTTUkiCiMgMzAgIi91c3IvbG9jYWwvbGli L2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzIDQK dHlwZWRlZiBzdHJ1Y3QgX19GSUxFIF9fRklMRTsKIyAyNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAyIDMgNAoK IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVk ZS9zeXMvaWVlZWZwLmgiIDEgMyA0CiMgMTcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1w Yy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy9pZWVlZnAuaCIgMyA0CiNwcmFnbWEgaWRlbnQg IkAoIylpZWVlZnAuaAkyLjggOTkvMTAvMjkiCiMgNTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy9pZWVlZnAuaCIgMyA0CmVudW0gZnBf ZGlyZWN0aW9uX3R5cGUgewogICAgICAgIGZwX25lYXJlc3QgPSAwLAogICAgICAgIGZwX25lZ2F0 aXZlID0gMSwKICAgICAgICBmcF9wb3NpdGl2ZSA9IDIsCiAgICAgICAgZnBfdG96ZXJvID0gMwp9 OwoKZW51bSBmcF9wcmVjaXNpb25fdHlwZSB7CiAgICAgICAgZnBfc2luZ2xlID0gMCwKICAgICAg ICBmcF9wcmVjaXNpb25fMyA9IDEsCiAgICAgICAgZnBfZG91YmxlID0gMiwKICAgICAgICBmcF9l eHRlbmRlZCA9IDMKfTsKCmVudW0gZnBfZXhjZXB0aW9uX3R5cGUgewogICAgICAgIGZwX2ludmFs aWQgPSAwLAogICAgICAgIGZwX2Rlbm9ybWFsaXplZCA9IDEsCiAgICAgICAgZnBfZGl2aXNpb24g PSAyLAogICAgICAgIGZwX292ZXJmbG93ID0gMywKICAgICAgICBmcF91bmRlcmZsb3cgPSA0LAog ICAgICAgIGZwX2luZXhhY3QgPSA1Cn07CgplbnVtIGZwX3RyYXBfZW5hYmxlX3R5cGUgewogICAg ICAgIGZwX3RyYXBfaW52YWxpZCA9IDAsCiAgICAgICAgZnBfdHJhcF9kZW5vcm1hbGl6ZWQgPSAx LAogICAgICAgIGZwX3RyYXBfZGl2aXNpb24gPSAyLAogICAgICAgIGZwX3RyYXBfb3ZlcmZsb3cg PSAzLAogICAgICAgIGZwX3RyYXBfdW5kZXJmbG93ID0gNCwKICAgICAgICBmcF90cmFwX2luZXhh Y3QgPSA1Cn07CiMgMTMzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIu OC8zLjEvaW5jbHVkZS9zeXMvaWVlZWZwLmgiIDMgNAplbnVtIGZwX2NsYXNzX3R5cGUgewogICAg ICAgIGZwX3plcm8gPSAwLAogICAgICAgIGZwX3N1Ym5vcm1hbCA9IDEsCiAgICAgICAgZnBfbm9y bWFsID0gMiwKICAgICAgICBmcF9pbmZpbml0eSA9IDMsCiAgICAgICAgZnBfcXVpZXQgPSA0LAog ICAgICAgIGZwX3NpZ25hbGluZyA9IDUKfTsKIyAyNiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p Mzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAyIDMgNAojIDUy ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9m bG9hdGluZ3BvaW50LmgiIDMgNAp0eXBlZGVmIF9fRklMRSBGSUxFOwojIDYyICIvdXNyL2xvY2Fs L2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9mbG9hdGluZ3BvaW50 LmgiIDMgNAp0eXBlZGVmIGludCBzaWdmcGVfY29kZV90eXBlOwoKdHlwZWRlZiB2b2lkICgqc2ln ZnBlX2hhbmRsZXJfdHlwZSkoKTsKCgoKCgpleHRlcm4gc2lnZnBlX2hhbmRsZXJfdHlwZSBzaWdm cGUgKHNpZ2ZwZV9jb2RlX3R5cGUsIHNpZ2ZwZV9oYW5kbGVyX3R5cGUpOwoKCgoKdHlwZWRlZiBm bG9hdCBzaW5nbGU7CgoKCnR5cGVkZWYgdW5zaWduZWQgZXh0ZW5kZWRbM107CgoKdHlwZWRlZiBs b25nIGRvdWJsZSBxdWFkcnVwbGU7Cgp0eXBlZGVmIHVuc2lnbmVkIGZwX2V4Y2VwdGlvbl9maWVs ZF90eXBlOwojIDk0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8z LjEvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDMgNAp0eXBlZGVmIGNoYXIgZGVjaW1hbF9zdHJp bmdbNTEyXTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZW51bSBmcF9jbGFzc190eXBlIGZw Y2xhc3M7CiAgICAgICAgaW50IHNpZ247CiAgICAgICAgaW50IGV4cG9uZW50OwogICAgICAgIGRl Y2ltYWxfc3RyaW5nIGRzOwoKCiAgICAgICAgaW50IG1vcmU7CgoKICAgICAgICBpbnQgbmRpZ2l0 czsKCgp9IGRlY2ltYWxfcmVjb3JkOwoKZW51bSBkZWNpbWFsX2Zvcm0gewogICAgICAgIGZpeGVk X2Zvcm0sCgoKICAgICAgICBmbG9hdGluZ19mb3JtCgp9OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg ICAgIGVudW0gZnBfZGlyZWN0aW9uX3R5cGUgcmQ7CgogICAgICAgIGVudW0gZGVjaW1hbF9mb3Jt IGRmOwoKICAgICAgICBpbnQgbmRpZ2l0czsKfSBkZWNpbWFsX21vZGU7CgplbnVtIGRlY2ltYWxf c3RyaW5nX2Zvcm0gewogICAgICAgIGludmFsaWRfZm9ybSwKICAgICAgICB3aGl0ZXNwYWNlX2Zv cm0sCiAgICAgICAgZml4ZWRfaW50X2Zvcm0sCiAgICAgICAgZml4ZWRfaW50ZG90X2Zvcm0sCiAg ICAgICAgZml4ZWRfZG90ZnJhY19mb3JtLAogICAgICAgIGZpeGVkX2ludGRvdGZyYWNfZm9ybSwK ICAgICAgICBmbG9hdGluZ19pbnRfZm9ybSwKICAgICAgICBmbG9hdGluZ19pbnRkb3RfZm9ybSwK ICAgICAgICBmbG9hdGluZ19kb3RmcmFjX2Zvcm0sCiAgICAgICAgZmxvYXRpbmdfaW50ZG90ZnJh Y19mb3JtLAogICAgICAgIGluZl9mb3JtLAogICAgICAgIGluZmluaXR5X2Zvcm0sCiAgICAgICAg bmFuX2Zvcm0sCiAgICAgICAgbmFuc3RyaW5nX2Zvcm0KfTsKCmV4dGVybiB2b2lkIHNpbmdsZV90 b19kZWNpbWFsIChzaW5nbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZw X2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZG91YmxlX3RvX2RlY2ltYWwg KGRvdWJsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9u X2ZpZWxkX3R5cGUgKik7CgpleHRlcm4gdm9pZCBleHRlbmRlZF90b19kZWNpbWFsIChleHRlbmRl ZCAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxk X3R5cGUgKik7CgpleHRlcm4gdm9pZCBxdWFkcnVwbGVfdG9fZGVjaW1hbCAocXVhZHJ1cGxlICos IGRlY2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlw ZSAqKTsKCgpleHRlcm4gdm9pZCBkZWNpbWFsX3RvX3NpbmdsZSAoc2luZ2xlICosIGRlY2ltYWxf bW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCmV4 dGVybiB2b2lkIGRlY2ltYWxfdG9fZG91YmxlIChkb3VibGUgKiwgZGVjaW1hbF9tb2RlICosIGRl Y2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQg ZGVjaW1hbF90b19leHRlbmRlZCAoZXh0ZW5kZWQgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxf cmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVjaW1h bF90b19xdWFkcnVwbGUgKHF1YWRydXBsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNv cmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CgoKZXh0ZXJuIHZvaWQgc3RyaW5nX3Rv X2RlY2ltYWwgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2lt YWxfc3RyaW5nX2Zvcm0gKiwgY2hhciAqKik7CgpleHRlcm4gdm9pZCBmdW5jX3RvX2RlY2ltYWwg KGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxfc3RyaW5n X2Zvcm0gKiwgY2hhciAqKiwgaW50ICgqKSh2b2lkKSwgaW50ICosIGludCAoKikoaW50KSk7CgoK ZXh0ZXJuIHZvaWQgZmlsZV90b19kZWNpbWFsIChjaGFyICoqLCBpbnQsIGludCwgZGVjaW1hbF9y ZWNvcmQgKiwgZW51bSBkZWNpbWFsX3N0cmluZ19mb3JtICosIGNoYXIgKiosIEZJTEUgKiwgaW50 ICopOwoKCgpleHRlcm4gY2hhciAqc2Vjb252ZXJ0IChzaW5nbGUgKiwgaW50LCBpbnQgKiwgaW50 ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpzZmNvbnZlcnQgKHNpbmdsZSAqLCBpbnQsIGludCAq LCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNnY29udmVydCAoc2luZ2xlICosIGludCwg aW50LCBjaGFyICopOwpleHRlcm4gY2hhciAqZWNvbnZlcnQgKGRvdWJsZSwgaW50LCBpbnQgKiwg aW50ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpmY29udmVydCAoZG91YmxlLCBpbnQsIGludCAq LCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdjb252ZXJ0IChkb3VibGUsIGludCwgaW50 LCBjaGFyICopOwpleHRlcm4gY2hhciAqcWVjb252ZXJ0IChxdWFkcnVwbGUgKiwgaW50LCBpbnQg KiwgaW50ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpxZmNvbnZlcnQgKHF1YWRydXBsZSAqLCBp bnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnFnY29udmVydCAocXVhZHJ1 cGxlICosIGludCwgaW50LCBjaGFyICopOwoKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSwgaW50 LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlLCBpbnQsIGludCAqLCBp bnQgKik7CmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUsIGludCwgY2hhciAqKTsKCgoKCgpleHRl cm4gZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUgc3RydG9kIChjb25z dCBjaGFyICosIGNoYXIgKiopOwojIDI1MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBj LXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDU5ICJnbGhlYWRlci5oIiAy CgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNs dWRlL2xpbWl0cy5oIiAxIDMgNAojIDExICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMt c29sYXJpczIuOC8zLjEvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMyA0 CiMgMjUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNs dWRlL3N5c2xpbWl0cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWxpbWl0cy5oCTEuNTEJOTkv MTAvMDggU01JIiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvaXNvL2xpbWl0c19pc28uaCIgMSAzIDQK IyAyOCAiL3Vzci9pbmNsdWRlL2lzby9saW1pdHNfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJA KCMpbGltaXRzX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiIAojIDMwICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzIDQK IyA0MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1 ZGUvc3lzbGltaXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvaW50X2xpbWl0cy5oIiAx IDMgNAojIDkgIi91c3IvaW5jbHVkZS9zeXMvaW50X2xpbWl0cy5oIiAzIDQKI3ByYWdtYSBpZGVu dCAiQCgjKWludF9saW1pdHMuaAkxLjYJOTkvMDgvMDYgU01JIgojIDQyICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAz IDQKIyAyNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9p bmNsdWRlL3N5c2xpbWl0cy5oIiAzIDQKdHlwZWRlZiBsb25nIGNsb2NrX3Q7CgoKZXh0ZXJuIGxv bmcgX3N5c2NvbmYoaW50KTsKIyAxMiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNv bGFyaXMyLjgvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgNjEgImdsaGVhZGVyLmgiIDIK IyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRsaWIuaAkxLjQ3CTk5LzExLzAzIFNNSSIg CgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNs dWRlL2lzby9zdGRsaWJfaXNvLmgiIDEgMyA0CiMgMzcgIi91c3IvbG9jYWwvbGliL2djYy1saWIv aTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMgNAojcHJh Z21hIGlkZW50ICJAKCMpc3RkbGliX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiIAojIDQ5ICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9pc28vc3Rk bGliX2lzby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBxdW90OwogICAgICAg IGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBxdW90Owog ICAgICAgIGxvbmcgcmVtOwp9IGxkaXZfdDsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6 ZV90OwojIDg4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEv aW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAzIDQKdHlwZWRlZiBsb25nIHdjaGFyX3Q7CgoKCgoK CmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY3R5cGVbXTsKCgpleHRlcm4gdm9pZCBhYm9ydCh2b2lk KTsKZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIGludCBhdGV4aXQodm9pZCAoKikodm9pZCkp OwpleHRlcm4gZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBhdG9pKGNvbnN0 IGNoYXIgKik7CmV4dGVybiBsb25nIGludCBhdG9sKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lk ICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAg ICAgICBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CmV4dGVybiB2b2lkICpj YWxsb2Moc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gZGl2X3QgZGl2KGludCwgaW50KTsKZXh0ZXJu IHZvaWQgZXhpdChpbnQpOwpleHRlcm4gdm9pZCBmcmVlKHZvaWQgKik7CmV4dGVybiBjaGFyICpn ZXRlbnYoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMobG9uZyk7CmV4dGVybiBs ZGl2X3QgbGRpdihsb25nLCBsb25nKTsKZXh0ZXJuIHZvaWQgKm1hbGxvYyhzaXplX3QpOwpleHRl cm4gaW50IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBtYnN0b3dj cyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBtYnRvd2Mod2No YXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiB2b2lkIHFzb3J0KHZvaWQgKiwg c2l6ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQg KikpOwpleHRlcm4gaW50IHJhbmQodm9pZCk7CmV4dGVybiB2b2lkICpyZWFsbG9jKHZvaWQgKiwg c2l6ZV90KTsKZXh0ZXJuIHZvaWQgc3JhbmQodW5zaWduZWQgaW50KTsKZXh0ZXJuIGRvdWJsZSBz dHJ0b2QoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbChjb25z dCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3Vs KGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIGludCBzeXN0ZW0oY29uc3QgY2hh ciAqKTsKZXh0ZXJuIGludCB3Y3RvbWIoY2hhciAqLCB3Y2hhcl90KTsKZXh0ZXJuIHNpemVfdCB3 Y3N0b21icyhjaGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKIyAxOSAiL3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAyIDMgNAojIDY4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBl ZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBsb25nIHF1b3Q7CiAgICAgICAgbG9uZyBsb25nIHJl bTsKfSBsbGRpdl90OwoKCgoKCgoKdHlwZWRlZiBsb25nIHVpZF90OwojIDExMiAiL3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIHZvaWQgX2V4aXRoYW5kbGUodm9pZCk7CgoKCgpleHRl cm4gZG91YmxlIGRyYW5kNDgodm9pZCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCh1bnNpZ25lZCBz aG9ydCAqKTsKZXh0ZXJuIGxvbmcganJhbmQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIHZv aWQgbGNvbmc0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIGxvbmcgbHJhbmQ0OCh2b2lkKTsK ZXh0ZXJuIGxvbmcgbXJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGxvbmcgbnJhbmQ0OCh1bnNpZ25lZCBz aG9ydCAqKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICpzZWVkNDgodW5zaWduZWQgc2hvcnQgKik7 CmV4dGVybiB2b2lkIHNyYW5kNDgobG9uZyk7CmV4dGVybiBpbnQgcHV0ZW52KGNoYXIgKik7CmV4 dGVybiB2b2lkIHNldGtleShjb25zdCBjaGFyICopOwojIDE0MCAiL3Vzci9pbmNsdWRlL3N0ZGxp Yi5oIiAzIDQKdHlwZWRlZiBpbnQgc3NpemVfdDsKCgoKZXh0ZXJuIHZvaWQgc3dhYihjb25zdCBj aGFyICosIGNoYXIgKiwgc3NpemVfdCk7CgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wKGNoYXIgKik7 CgoKCgpleHRlcm4gaW50IG1rc3RlbXA2NChjaGFyICopOwoKCgoKCmV4dGVybiBsb25nIGE2NGwo Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmVjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQg Kik7CmV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4g Y2hhciAqZ2N2dChkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hh ciAqKiwgY2hhciAqY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBpbnQgZ3JhbnRwdChpbnQpOwpl eHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBj aGFyICpsNjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNoYXIgKik7CmV4dGVybiBjaGFy ICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lkKTsKZXh0ZXJuIGNoYXIgKnJl YWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNldHN0YXRlKGNvbnN0 IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQpOwpleHRlcm4gaW50IHR0eXNs b3Qodm9pZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0ZXJuIHZvaWQgKnZhbGxvYyhz aXplX3QpOwoKCgoKZXh0ZXJuIGludCBkdXAyKGludCwgaW50KTsKZXh0ZXJuIGNoYXIgKnFlY3Z0 KGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpxZmN2dChsb25n IGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqcWdjdnQobG9uZyBkb3Vi bGUsIGludCwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdldGN3ZChjaGFyICosIHNpemVfdCk7CmV4 dGVybiBjb25zdCBjaGFyICpnZXRleGVjbmFtZSh2b2lkKTsKZXh0ZXJuIGNoYXIgKmdldGxvZ2lu KHZvaWQpOwpleHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9w dDsKZXh0ZXJuIGNoYXIgKmdldHBhc3MoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdldHBh c3NwaHJhc2UoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRwdyh1aWRfdCwgY2hhciAqKTsK ZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0ZXJuIHZvaWQgKm1lbWFsaWduKHNpemVfdCwgc2l6 ZV90KTsKZXh0ZXJuIGNoYXIgKnR0eW5hbWUoaW50KTsKCgpleHRlcm4gbG9uZyBsb25nIGF0b2xs KGNvbnN0IGNoYXIgKik7CmV4dGVybiBsb25nIGxvbmcgbGxhYnMobG9uZyBsb25nKTsKZXh0ZXJu IGxsZGl2X3QgbGxkaXYobG9uZyBsb25nLCBsb25nIGxvbmcpOwpleHRlcm4gY2hhciAqbGx0b3N0 cihsb25nIGxvbmcsIGNoYXIgKik7CmV4dGVybiBsb25nIGxvbmcgc3RydG9sbChjb25zdCBjaGFy ICosIGNoYXIgKiosIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwoY29u c3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gY2hhciAqdWxsdG9zdHIodW5zaWduZWQg bG9uZyBsb25nLCBjaGFyICopOwojIDYyICJnbGhlYWRlci5oIiAyCiMgMSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQK IyAxNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1 ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFy aXMyLjgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgNDMgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRl ZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxNSAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyAz NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUv c3RkaW8uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRpby5oCTEuNzgJOTkvMTIvMDggU01J IiAKCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMSAzIDQKIyAzMiAiL3Vzci9p bmNsdWRlL2lzby9zdGRpb19pc28uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRpb19pc28u aAkxLjIJOTkvMTAvMjUgU01JIgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAx IDMgNAojIDkgIi91c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzIDQKI3ByYWdtYSBpZGVudCAi QCgjKXZhX2xpc3QuaAkxLjEyCTk5LzA1LzA0IFNNSSIKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy92 YV9saXN0LmgiIDMgNAp0eXBlZGVmIHZvaWQgKl9fdmFfbGlzdDsKIyAzNyAiL3Vzci9pbmNsdWRl L2lzby9zdGRpb19pc28uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIg MSAzIDQKIyA5ICIvdXNyL2luY2x1ZGUvc3RkaW9faW1wbC5oIiAzIDQKI3ByYWdtYSBpZGVudCAi QCgjKXN0ZGlvX2ltcGwuaAkxLjgJOTkvMDYvMTAgU01JIgojIDM4ICIvdXNyL2luY2x1ZGUvc3Rk aW9faW1wbC5oIiAzIDQKc3RydWN0IF9fRklMRQp7CgoKCgogICAgICAgIHNzaXplX3QgX2NudDsK ICAgICAgICB1bnNpZ25lZCBjaGFyICpfcHRyOwoKICAgICAgICB1bnNpZ25lZCBjaGFyICpfYmFz ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9mbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX2Zp bGU7CiAgICAgICAgdW5zaWduZWQgX19vcmllbnRhdGlvbjoyOwogICAgICAgIHVuc2lnbmVkIF9f aW9ub2xvY2s6MTsKICAgICAgICB1bnNpZ25lZCBfX2ZpbGxlcjo1Owp9OwojIDM5ICIvdXNyL2lu Y2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAyIDMgNAojIDU5ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlv X2lzby5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgX19sb25nbG9uZ190OwojIDg4ICIvdXNyL2lu Y2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKdHlwZWRlZiBsb25nIGZwb3NfdDsKIyAxNDcgIi91 c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMgNApleHRlcm4gX19GSUxFIF9faW9iWzYwXTsK IyAxNjQgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMgNApleHRlcm4gaW50IHJlbW92 ZShjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7CmV4dGVybiBGSUxFICp0bXBmaWxlKHZvaWQpOwpleHRlcm4gY2hhciAqdG1wbmFtKGNo YXIgKik7CmV4dGVybiBpbnQgZmNsb3NlKEZJTEUgKik7CmV4dGVybiBpbnQgZmZsdXNoKEZJTEUg Kik7CmV4dGVybiBGSUxFICpmb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVy biBGSUxFICpmcmVvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRl cm4gdm9pZCBzZXRidWYoRklMRSAqLCBjaGFyICopOwpleHRlcm4gaW50IHNldHZidWYoRklMRSAq LCBjaGFyICosIGludCwgc2l6ZV90KTsKCmV4dGVybiBpbnQgZnByaW50ZihGSUxFICosIGNvbnN0 IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCAu Li4pOwoKZXh0ZXJuIGludCBwcmludGYoY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBz Y2FuZihjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNwcmludGYoY2hhciAqLCBjb25z dCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNzY2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgLi4uKTsKZXh0ZXJuIGludCB2ZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX192 YV9saXN0KTsKZXh0ZXJuIGludCB2cHJpbnRmKGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsKZXh0 ZXJuIGludCB2c3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsKZXh0ZXJu IGludCBmZ2V0YyhGSUxFICopOwpleHRlcm4gY2hhciAqZmdldHMoY2hhciAqLCBpbnQsIEZJTEUg Kik7CmV4dGVybiBpbnQgZnB1dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXRzKGNvbnN0 IGNoYXIgKiwgRklMRSAqKTsKCgpleHRlcm4gaW50IGdldGMoRklMRSAqKTsKZXh0ZXJuIGludCBw dXRjKGludCwgRklMRSAqKTsKCgoKZXh0ZXJuIGludCBnZXRjaGFyKHZvaWQpOwpleHRlcm4gaW50 IHB1dGNoYXIoaW50KTsKCmV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CmV4dGVybiBpbnQgcHV0 cyhjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHVuZ2V0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBz aXplX3QgZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKZXh0ZXJuIHNpemVf dCBmd3JpdGUoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKZXh0ZXJuIGlu dCBmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwpleHRlcm4gaW50IGZzZWVrKEZJTEUgKiwgbG9u ZywgaW50KTsKZXh0ZXJuIGludCBmc2V0cG9zKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpleHRl cm4gbG9uZyBmdGVsbChGSUxFICopOwpleHRlcm4gdm9pZCByZXdpbmQoRklMRSAqKTsKCgpleHRl cm4gdm9pZCBjbGVhcmVycihGSUxFICopOwpleHRlcm4gaW50IGZlb2YoRklMRSAqKTsKZXh0ZXJu IGludCBmZXJyb3IoRklMRSAqKTsKCmV4dGVybiB2b2lkIHBlcnJvcihjb25zdCBjaGFyICopOwoK CmV4dGVybiBpbnQgX19maWxidWYoRklMRSAqKTsKZXh0ZXJuIGludCBfX2Zsc2J1ZihpbnQsIEZJ TEUgKik7CiMgMzcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMu MS9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMTA1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kz ODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBsb25nIG9m Zl90OwoKCgoKCgoKdHlwZWRlZiBfX2xvbmdsb25nX3Qgb2ZmNjRfdDsKIyAxMjMgIi91c3IvbG9j YWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMg NAp0eXBlZGVmIF9fbG9uZ2xvbmdfdCBmcG9zNjRfdDsKIyAxNTEgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4g dW5zaWduZWQgY2hhciBfc2lidWZbXSwgX3NvYnVmW107CiMgMTkzICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu IHVuc2lnbmVkIGNoYXIgKl9idWZlbmR0YWJbXTsKZXh0ZXJuIEZJTEUgKl9sYXN0YnVmOwojIDIy OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUv c3RkaW8uaCIgMyA0CmV4dGVybiB2b2lkIHNldGJ1ZmZlcihGSUxFICosIGNoYXIgKiwgc2l6ZV90 KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7CgoKCgoKZXh0ZXJuIGludCBzbnByaW50 ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoKCgoKZXh0ZXJuIGludCB2c25w cmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwojIDI1 MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUv c3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpmZG9wZW4oaW50LCBjb25zdCBjaGFyICopOwpleHRl cm4gY2hhciAqY3Rlcm1pZChjaGFyICopOwpleHRlcm4gaW50IGZpbGVubyhGSUxFICopOwojIDI3 NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUv c3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpwb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBjaGFyICpjdXNlcmlkKGNoYXIgKik7CmV4dGVybiBjaGFyICp0ZW1wbmFtKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICpj b25zdCAqLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hh ciAqY29uc3QgKiwgY2hhciAqKik7CgpleHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9w dGluZCwgb3B0ZXJyLCBvcHRvcHQ7CmV4dGVybiBpbnQgZ2V0dyhGSUxFICopOwpleHRlcm4gaW50 IHB1dHcoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHBjbG9zZShGSUxFICopOwoKCgoKCgoKZXh0 ZXJuIGludCBmc2Vla28oRklMRSAqLCBvZmZfdCwgaW50KTsKZXh0ZXJuIG9mZl90IGZ0ZWxsbyhG SUxFICopOwojIDMwNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgv My4xL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpmb3BlbjY0KGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCh2b2lkKTsKZXh0ZXJu IGludCBmZ2V0cG9zNjQoRklMRSAqLCBmcG9zNjRfdCAqKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQo RklMRSAqLCBjb25zdCBmcG9zNjRfdCAqKTsKZXh0ZXJuIGludCBmc2Vla282NChGSUxFICosIG9m ZjY0X3QsIGludCk7CmV4dGVybiBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKik7CiMgNjMgImdsaGVh ZGVyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdHJpbmcuaAkxLjI0CTk5LzA4 LzEwIFNNSSIgCgojIDEgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAxIDMgNAojIDI4 ICIvdXNyL2luY2x1ZGUvaXNvL3N0cmluZ19pc28uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylz dHJpbmdfaXNvLmgJMS4yCTk5LzExLzA5IFNNSSIKIyA2MCAiL3Vzci9pbmNsdWRlL2lzby9zdHJp bmdfaXNvLmgiIDMgNApleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQg Kiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbWNweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbW1vdmUodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7 CmV4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBjaGFyICpz dHJjYXQoY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFy ICopOwpleHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl cm4gc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hh ciAqc3RyZXJyb3IoaW50KTsKZXh0ZXJuIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKZXh0 ZXJuIGNoYXIgKnN0cm5jYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBp bnQgc3RybmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNo YXIgKnN0cm5jcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qg c3Ryc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cnRvayhj aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0 IGNoYXIgKiwgc2l6ZV90KTsKIyAxMTIgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAz IDQKZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKZXh0ZXJu IGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBjaGFyICpzdHJwYnJrKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cnJjaHIoY29uc3QgY2hh ciAqLCBpbnQpOwpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq KTsKIyAxOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAojIDYzICIvdXNyL2luY2x1ZGUv c3RyaW5nLmgiIDMgNApleHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICosIGNvbnN0IHZvaWQgKiwg aW50LCBzaXplX3QpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbChpbnQpOwpleHRlcm4gaW50 IGZmcyhpbnQpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICopOwpleHRlcm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBz aXplX3QpOwpleHRlcm4gc2l6ZV90IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVf dCk7CmV4dGVybiBzaXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsK CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwKGNvbnN0IGNoYXIgKik7CiMgNjQgImdsaGVhZGVyLmgi IDIKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4x L2luY2x1ZGUvZmxvYXQuaCIgMSAzIDQKIyA2OSAiZ2xoZWFkZXIuaCIgMgojIDEgIi91c3IvbG9j YWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAx IDMgNAojIDkwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEv aW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyA3 MCAiZ2xoZWFkZXIuaCIgMgojIDE5MyAiZ2xoZWFkZXIuaCIKIyAxICIuLi9pbmNsdWRlL0dML2ds LmgiIDEKIyAxMjQgIi4uL2luY2x1ZGUvR0wvZ2wuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgR0xl bnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBlZGVmIHVuc2lnbmVkIGlu dCBHTGJpdGZpZWxkOwp0eXBlZGVmIHZvaWQgR0x2b2lkOwp0eXBlZGVmIHNpZ25lZCBjaGFyIEdM Ynl0ZTsKdHlwZWRlZiBzaG9ydCBHTHNob3J0Owp0eXBlZGVmIGludCBHTGludDsKdHlwZWRlZiB1 bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0x1c2hvcnQ7CnR5 cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBpbnQgR0xzaXplaTsKdHlwZWRlZiBm bG9hdCBHTGZsb2F0Owp0eXBlZGVmIGZsb2F0IEdMY2xhbXBmOwp0eXBlZGVmIGRvdWJsZSBHTGRv dWJsZTsKdHlwZWRlZiBkb3VibGUgR0xjbGFtcGQ7CiMgNzUxICIuLi9pbmNsdWRlL0dML2dsLmgi CmV4dGVybiB2b2lkIGdsQ2xlYXJJbmRleCggR0xmbG9hdCBjICk7CgpleHRlcm4gdm9pZCBnbENs ZWFyQ29sb3IoIEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdM Y2xhbXBmIGFscGhhICk7CgpleHRlcm4gdm9pZCBnbENsZWFyKCBHTGJpdGZpZWxkIG1hc2sgKTsK CmV4dGVybiB2b2lkIGdsSW5kZXhNYXNrKCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xD b2xvck1hc2soIEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUs IEdMYm9vbGVhbiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xBbHBoYUZ1bmMoIEdMZW51bSBmdW5j LCBHTGNsYW1wZiByZWYgKTsKCmV4dGVybiB2b2lkIGdsQmxlbmRGdW5jKCBHTGVudW0gc2ZhY3Rv ciwgR0xlbnVtIGRmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGdsTG9naWNPcCggR0xlbnVtIG9wY29k ZSApOwoKZXh0ZXJuIHZvaWQgZ2xDdWxsRmFjZSggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lk IGdsRnJvbnRGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xQb2ludFNpemUoIEdM ZmxvYXQgc2l6ZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lV2lkdGgoIEdMZmxvYXQgd2lkdGggKTsK CmV4dGVybiB2b2lkIGdsTGluZVN0aXBwbGUoIEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVy biApOwoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29uTW9kZSggR0xlbnVtIGZhY2UsIEdMZW51bSBtb2Rl ICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25PZmZzZXQoIEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0 IHVuaXRzICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25TdGlwcGxlKCBjb25zdCBHTHVieXRlICpt YXNrICk7CgpleHRlcm4gdm9pZCBnbEdldFBvbHlnb25TdGlwcGxlKCBHTHVieXRlICptYXNrICk7 CgpleHRlcm4gdm9pZCBnbEVkZ2VGbGFnKCBHTGJvb2xlYW4gZmxhZyApOwoKZXh0ZXJuIHZvaWQg Z2xFZGdlRmxhZ3YoIGNvbnN0IEdMYm9vbGVhbiAqZmxhZyApOwoKZXh0ZXJuIHZvaWQgZ2xTY2lz c29yKCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cgpl eHRlcm4gdm9pZCBnbENsaXBQbGFuZSggR0xlbnVtIHBsYW5lLCBjb25zdCBHTGRvdWJsZSAqZXF1 YXRpb24gKTsKCmV4dGVybiB2b2lkIGdsR2V0Q2xpcFBsYW5lKCBHTGVudW0gcGxhbmUsIEdMZG91 YmxlICplcXVhdGlvbiApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3QnVmZmVyKCBHTGVudW0gbW9kZSAp OwoKZXh0ZXJuIHZvaWQgZ2xSZWFkQnVmZmVyKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQg Z2xFbmFibGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiB2b2lkIGdsRGlzYWJsZSggR0xlbnVtIGNh cCApOwoKZXh0ZXJuIEdMYm9vbGVhbiBnbElzRW5hYmxlZCggR0xlbnVtIGNhcCApOwoKCmV4dGVy biB2b2lkIGdsRW5hYmxlQ2xpZW50U3RhdGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiB2b2lkIGds RGlzYWJsZUNsaWVudFN0YXRlKCBHTGVudW0gY2FwICk7CgoKZXh0ZXJuIHZvaWQgZ2xHZXRCb29s ZWFudiggR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xH ZXREb3VibGV2KCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk IGdsR2V0RmxvYXR2KCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZv aWQgZ2xHZXRJbnRlZ2VydiggR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoKZXh0ZXJu IHZvaWQgZ2xQdXNoQXR0cmliKCBHTGJpdGZpZWxkIG1hc2sgKTsKCmV4dGVybiB2b2lkIGdsUG9w QXR0cmliKCB2b2lkICk7CgoKZXh0ZXJuIHZvaWQgZ2xQdXNoQ2xpZW50QXR0cmliKCBHTGJpdGZp ZWxkIG1hc2sgKTsKCmV4dGVybiB2b2lkIGdsUG9wQ2xpZW50QXR0cmliKCB2b2lkICk7CgoKZXh0 ZXJuIEdMaW50IGdsUmVuZGVyTW9kZSggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiBHTGVudW0gZ2xH ZXRFcnJvciggdm9pZCApOwoKZXh0ZXJuIGNvbnN0IEdMdWJ5dGUqIGdsR2V0U3RyaW5nKCBHTGVu dW0gbmFtZSApOwoKZXh0ZXJuIHZvaWQgZ2xGaW5pc2goIHZvaWQgKTsKCmV4dGVybiB2b2lkIGds Rmx1c2goIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsSGludCggR0xlbnVtIHRhcmdldCwgR0xlbnVt IG1vZGUgKTsKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCAp OwoKZXh0ZXJuIHZvaWQgZ2xEZXB0aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gdm9pZCBn bERlcHRoTWFzayggR0xib29sZWFuIGZsYWcgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhSYW5nZSgg R0xjbGFtcGQgbmVhcl92YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgoKCgoKZXh0ZXJuIHZvaWQg Z2xDbGVhckFjY3VtKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBH TGZsb2F0IGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEFjY3VtKCBHTGVudW0gb3AsIEdMZmxvYXQg dmFsdWUgKTsKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xNYXRyaXhNb2RlKCBHTGVudW0gbW9kZSApOwoK ZXh0ZXJuIHZvaWQgZ2xPcnRobyggR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9w LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xk b3VibGUgZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQgZ2xGcnVzdHVtKCBHTGRvdWJsZSBsZWZ0LCBH TGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs ZSBib3R0b20sIEdMZG91YmxlIHRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xkb3VibGUgZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQgZ2xW aWV3cG9ydCggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQgKTsKCmV4dGVybiB2b2lkIGdsUHVz aE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BNYXRyaXgoIHZvaWQgKTsKCmV4dGVy biB2b2lkIGdsTG9hZElkZW50aXR5KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhk KCBjb25zdCBHTGRvdWJsZSAqbSApOwpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhmKCBjb25zdCBH TGZsb2F0ICptICk7CgpleHRlcm4gdm9pZCBnbE11bHRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAq bSApOwpleHRlcm4gdm9pZCBnbE11bHRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRl cm4gdm9pZCBnbFJvdGF0ZWQoIEdMZG91YmxlIGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJu IHZvaWQgZ2xSb3RhdGVmKCBHTGZsb2F0IGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lk IGdsU2NhbGVkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2 b2lkIGdsU2NhbGVmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgpleHRlcm4g dm9pZCBnbFRyYW5zbGF0ZWQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsK ZXh0ZXJuIHZvaWQgZ2xUcmFuc2xhdGVmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6 ICk7CgoKCgoKCmV4dGVybiBHTGJvb2xlYW4gZ2xJc0xpc3QoIEdMdWludCBsaXN0ICk7CgpleHRl cm4gdm9pZCBnbERlbGV0ZUxpc3RzKCBHTHVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSApOwoKZXh0 ZXJuIEdMdWludCBnbEdlbkxpc3RzKCBHTHNpemVpIHJhbmdlICk7CgpleHRlcm4gdm9pZCBnbE5l d0xpc3QoIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xFbmRMaXN0 KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbENhbGxMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJu IHZvaWQgZ2xDYWxsTGlzdHMoIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmxpc3RzICk7CgpleHRlcm4gdm9p ZCBnbExpc3RCYXNlKCBHTHVpbnQgYmFzZSApOwoKCgoKCgpleHRlcm4gdm9pZCBnbEJlZ2luKCBH TGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xFbmQoIHZvaWQgKTsKCgpleHRlcm4gdm9pZCBn bFZlcnRleDJkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4 MmYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4MmkoIEdMaW50 IHgsIEdMaW50IHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgycyggR0xzaG9ydCB4LCBHTHNob3J0 IHkgKTsKCmV4dGVybiB2b2lkIGdsVmVydGV4M2QoIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM ZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzZiggR0xmbG9hdCB4LCBHTGZsb2F0IHks IEdMZmxvYXQgeiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNpKCBHTGludCB4LCBHTGludCB5LCBH TGludCB6ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M3MoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH THNob3J0IHogKTsKCmV4dGVybiB2b2lkIGdsVmVydGV4NGQoIEdMZG91YmxlIHgsIEdMZG91Ymxl IHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0ZiggR0xm bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3ICk7CmV4dGVybiB2b2lkIGds VmVydGV4NGkoIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcgKTsKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXg0cyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3 ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRleDJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJu IHZvaWQgZ2xWZXJ0ZXgyZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0 ZXgyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4MnN2KCBjb25zdCBH THNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRleDNkdiggY29uc3QgR0xkb3VibGUgKnYg KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXgzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M3N2 KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRleDRkdiggY29uc3QgR0xk b3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsK ZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGds VmVydGV4NHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzYigg R0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNk KCBHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56ICk7CmV4dGVybiB2b2lkIGds Tm9ybWFsM2YoIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnogKTsKZXh0ZXJuIHZv aWQgZ2xOb3JtYWwzaSggR0xpbnQgbngsIEdMaW50IG55LCBHTGludCBueiApOwpleHRlcm4gdm9p ZCBnbE5vcm1hbDNzKCBHTHNob3J0IG54LCBHTHNob3J0IG55LCBHTHNob3J0IG56ICk7CgpleHRl cm4gdm9pZCBnbE5vcm1hbDNidiggY29uc3QgR0xieXRlICp2ICk7CmV4dGVybiB2b2lkIGdsTm9y bWFsM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNmdiggY29u c3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNpdiggY29uc3QgR0xpbnQgKnYg KTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4g dm9pZCBnbEluZGV4ZCggR0xkb3VibGUgYyApOwpleHRlcm4gdm9pZCBnbEluZGV4ZiggR0xmbG9h dCBjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhpKCBHTGludCBjICk7CmV4dGVybiB2b2lkIGdsSW5k ZXhzKCBHTHNob3J0IGMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHViKCBHTHVieXRlIGMgKTsKCmV4 dGVybiB2b2lkIGdsSW5kZXhkdiggY29uc3QgR0xkb3VibGUgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJ bmRleGZ2KCBjb25zdCBHTGZsb2F0ICpjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhpdiggY29uc3Qg R0xpbnQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHN2KCBjb25zdCBHTHNob3J0ICpjICk7CmV4 dGVybiB2b2lkIGdsSW5kZXh1YnYoIGNvbnN0IEdMdWJ5dGUgKmMgKTsKCmV4dGVybiB2b2lkIGds Q29sb3IzYiggR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSApOwpleHRlcm4g dm9pZCBnbENvbG9yM2QoIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJs dWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwg R0xmbG9hdCBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzaSggR0xpbnQgcmVkLCBHTGludCBn cmVlbiwgR0xpbnQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM3MoIEdMc2hvcnQgcmVkLCBH THNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1YiggR0x1 Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENv bG9yM3VpKCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlICk7CmV4dGVybiB2 b2lkIGdsQ29sb3IzdXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJs dWUgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3I0YiggR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxw aGEgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRkKCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJsdWUsIEdMZG91 YmxlIGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZiggR0xmbG9hdCByZWQsIEdMZmxvYXQg Z3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBibHVlLCBH TGZsb2F0IGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0aSggR0xpbnQgcmVkLCBHTGludCBn cmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBibHVlLCBHTGlu dCBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9yNHMoIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdy ZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgYmx1ZSwgR0xz aG9ydCBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9yNHViKCBHTHVieXRlIHJlZCwgR0x1Ynl0 ZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBibHVl LCBHTHVieXRlIGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0dWkoIEdMdWludCByZWQsIEdM dWludCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJs dWUsIEdMdWludCBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVzKCBHTHVzaG9ydCByZWQs IEdMdXNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVz aG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSApOwoKCmV4dGVybiB2b2lkIGdsQ29sb3IzYnYoIGNv bnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yM2R2KCBjb25zdCBHTGRvdWJsZSAq diApOwpleHRlcm4gdm9pZCBnbENvbG9yM2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2 b2lkIGdsQ29sb3IzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3Izc3Yo IGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1YnYoIGNvbnN0IEdMdWJ5 dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1aXYoIGNvbnN0IEdMdWludCAqdiApOwpleHRl cm4gdm9pZCBnbENvbG9yM3VzdiggY29uc3QgR0x1c2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGds Q29sb3I0YnYoIGNvbnN0IEdMYnl0ZSAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNGR2KCBjb25z dCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNGZ2KCBjb25zdCBHTGZsb2F0ICp2 ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lk IGdsQ29sb3I0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1YnYo IGNvbnN0IEdMdWJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1aXYoIGNvbnN0IEdMdWlu dCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVzdiggY29uc3QgR0x1c2hvcnQgKnYgKTsKCgpl eHRlcm4gdm9pZCBnbFRleENvb3JkMWQoIEdMZG91YmxlIHMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhD b29yZDFmKCBHTGZsb2F0IHMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFpKCBHTGludCBzICk7 CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxcyggR0xzaG9ydCBzICk7CgpleHRlcm4gdm9pZCBnbFRl eENvb3JkMmQoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y ZDJmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmkoIEdM aW50IHMsIEdMaW50IHQgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJzKCBHTHNob3J0IHMsIEdM c2hvcnQgdCApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNkKCBHTGRvdWJsZSBzLCBHTGRvdWJs ZSB0LCBHTGRvdWJsZSByICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzZiggR0xmbG9hdCBzLCBH TGZsb2F0IHQsIEdMZmxvYXQgciApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM2koIEdMaW50IHMs IEdMaW50IHQsIEdMaW50IHIgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNzKCBHTHNob3J0IHMs IEdMc2hvcnQgdCwgR0xzaG9ydCByICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkNGQoIEdMZG91 YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEgKTsKZXh0ZXJuIHZvaWQg Z2xUZXhDb29yZDRmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEg KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRpKCBHTGludCBzLCBHTGludCB0LCBHTGludCByLCBH TGludCBxICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0cyggR0xzaG9ydCBzLCBHTHNob3J0IHQs IEdMc2hvcnQgciwgR0xzaG9ydCBxICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkMWR2KCBjb25z dCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWZ2KCBjb25zdCBHTGZsb2F0 ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVy biB2b2lkIGdsVGV4Q29vcmQxc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGds VGV4Q29vcmQyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQy ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJpdiggY29uc3Qg R0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJzdiggY29uc3QgR0xzaG9ydCAqdiAp OwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJu IHZvaWQgZ2xUZXhDb29yZDNmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFRl eENvb3JkM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM3N2KCBj b25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkNGR2KCBjb25zdCBHTGRv dWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7 CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lk IGdsVGV4Q29vcmQ0c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbFJhc3Rl clBvczJkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9z MmYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmkoIEdM aW50IHgsIEdMaW50IHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MycyggR0xzaG9ydCB4LCBH THNob3J0IHkgKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2QoIEdMZG91YmxlIHgsIEdMZG91 YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZiggR0xmbG9hdCB4 LCBHTGZsb2F0IHksIEdMZmxvYXQgeiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNpKCBHTGlu dCB4LCBHTGludCB5LCBHTGludCB6ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM3MoIEdMc2hv cnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHogKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGQo IEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcgKTsKZXh0ZXJu IHZvaWQgZ2xSYXN0ZXJQb3M0ZiggR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xm bG9hdCB3ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGkoIEdMaW50IHgsIEdMaW50IHksIEdM aW50IHosIEdMaW50IHcgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0cyggR0xzaG9ydCB4LCBH THNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3ICk7CgpleHRlcm4gdm9pZCBnbFJhc3RlclBv czJkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZnYoIGNv bnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyaXYoIGNvbnN0IEdMaW50 ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7Cgpl eHRlcm4gdm9pZCBnbFJhc3RlclBvczNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZv aWQgZ2xSYXN0ZXJQb3MzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0 ZXJQb3MzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM3N2KCBj b25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRkdiggY29uc3QgR0xk b3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0ZnYoIGNvbnN0IEdMZmxvYXQgKnYg KTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0aXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2 b2lkIGdsUmFzdGVyUG9zNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xS ZWN0ZCggR0xkb3VibGUgeDEsIEdMZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xkb3VibGUgeTIg KTsKZXh0ZXJuIHZvaWQgZ2xSZWN0ZiggR0xmbG9hdCB4MSwgR0xmbG9hdCB5MSwgR0xmbG9hdCB4 MiwgR0xmbG9hdCB5MiApOwpleHRlcm4gdm9pZCBnbFJlY3RpKCBHTGludCB4MSwgR0xpbnQgeTEs IEdMaW50IHgyLCBHTGludCB5MiApOwpleHRlcm4gdm9pZCBnbFJlY3RzKCBHTHNob3J0IHgxLCBH THNob3J0IHkxLCBHTHNob3J0IHgyLCBHTHNob3J0IHkyICk7CgoKZXh0ZXJuIHZvaWQgZ2xSZWN0 ZHYoIGNvbnN0IEdMZG91YmxlICp2MSwgY29uc3QgR0xkb3VibGUgKnYyICk7CmV4dGVybiB2b2lk IGdsUmVjdGZ2KCBjb25zdCBHTGZsb2F0ICp2MSwgY29uc3QgR0xmbG9hdCAqdjIgKTsKZXh0ZXJu IHZvaWQgZ2xSZWN0aXYoIGNvbnN0IEdMaW50ICp2MSwgY29uc3QgR0xpbnQgKnYyICk7CmV4dGVy biB2b2lkIGdsUmVjdHN2KCBjb25zdCBHTHNob3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIgKTsK CgoKCgoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlw ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUs IGNvbnN0IEdMdm9pZCAqcHRyICk7CgpleHRlcm4gdm9pZCBnbE5vcm1hbFBvaW50ZXIoIEdMZW51 bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyKCBH TGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGds SW5kZXhQb2ludGVyKCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lk IGdsVGV4Q29vcmRQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lk ICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsRWRnZUZsYWdQb2ludGVyKCBHTHNpemVpIHN0cmlkZSwg Y29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsR2V0UG9pbnRlcnYoIEdMZW51bSBw bmFtZSwgR0x2b2lkICoqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEFycmF5RWxlbWVudCggR0xp bnQgaSApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3QXJyYXlzKCBHTGVudW0gbW9kZSwgR0xpbnQgZmly c3QsIEdMc2l6ZWkgY291bnQgKTsKCmV4dGVybiB2b2lkIGdsRHJhd0VsZW1lbnRzKCBHTGVudW0g bW9kZSwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzICk7CgpleHRlcm4gdm9pZCBnbElu dGVybGVhdmVkQXJyYXlzKCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHN0cmlkZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcG9pbnRlciAp OwoKCgoKCmV4dGVybiB2b2lkIGdsU2hhZGVNb2RlbCggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2 b2lkIGdsTGlnaHRmKCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSAp OwpleHRlcm4gdm9pZCBnbExpZ2h0aSggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50 IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTGlnaHRmdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5h bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFt cyApOwpleHRlcm4gdm9pZCBnbExpZ2h0aXYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zICk7Cgpl eHRlcm4gdm9pZCBnbEdldExpZ2h0ZnYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJu IHZvaWQgZ2xHZXRMaWdodGl2KCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg Z2xMaWdodE1vZGVsZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lk IGdsTGlnaHRNb2RlbGkoIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQg Z2xMaWdodE1vZGVsZnYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4 dGVybiB2b2lkIGdsTGlnaHRNb2RlbGl2KCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh bXMgKTsKCmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxmKCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1l LCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxpKCBHTGVudW0gZmFjZSwg R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbE1hdGVyaWFsZnYoIEdM ZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4g dm9pZCBnbE1hdGVyaWFsaXYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50 ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWF0ZXJpYWxmdiggR0xlbnVtIGZhY2UsIEdM ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0TWF0ZXJpYWxp diggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZv aWQgZ2xDb2xvck1hdGVyaWFsKCBHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUgKTsKCgoKCgoKZXh0 ZXJuIHZvaWQgZ2xQaXhlbFpvb20oIEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9yICk7 CgpleHRlcm4gdm9pZCBnbFBpeGVsU3RvcmVmKCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0g KTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlaSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp OwoKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZmVyZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh cmFtICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmkoIEdMZW51bSBwbmFtZSwgR0xpbnQg cGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsUGl4ZWxNYXBmdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFw c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq dmFsdWVzICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXB1aXYoIEdMZW51bSBtYXAsIEdMaW50IG1h cHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg KnZhbHVlcyApOwpleHRlcm4gdm9pZCBnbFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTGludCBt YXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1c2hv cnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcGZ2KCBHTGVudW0gbWFwLCBH TGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVpdiggR0xlbnVtIG1h cCwgR0x1aW50ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVzdiggR0xlbnVt IG1hcCwgR0x1c2hvcnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xCaXRtYXAoIEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZmxvYXQgeG9yaWcsIEdMZmxvYXQgeW9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xmbG9hdCB4bW92ZSwgR0xmbG9hdCB5bW92ZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBHTHVieXRlICpiaXRtYXAgKTsKCmV4dGVybiB2b2lkIGdsUmVhZFBpeGVs cyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3UGl4 ZWxzKCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9p ZCBnbENvcHlQaXhlbHMoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKCgoKCmV4dGVybiB2b2lkIGds U3RlbmNpbEZ1bmMoIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrICk7CgpleHRl cm4gdm9pZCBnbFN0ZW5jaWxNYXNrKCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xTdGVu Y2lsT3AoIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyApOwoKZXh0ZXJu IHZvaWQgZ2xDbGVhclN0ZW5jaWwoIEdMaW50IHMgKTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsVGV4 R2VuZCggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlIHBhcmFtICk7CmV4dGVy biB2b2lkIGdsVGV4R2VuZiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0gKTsKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5pKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg R0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4R2VuZHYoIEdMZW51bSBjb29yZCwgR0xl bnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsVGV4R2Vu ZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsK ZXh0ZXJuIHZvaWQgZ2xUZXhHZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0 IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0VGV4R2VuZHYoIEdMZW51bSBjb29y ZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4 R2VuZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRUZXhHZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50 ICpwYXJhbXMgKTsKCgpleHRlcm4gdm9pZCBnbFRleEVudmYoIEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEVudmkoIEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4RW52 ZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7 CmV4dGVybiB2b2lkIGdsVGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u c3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhFbnZmdiggR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRU ZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoK ZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs IEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJpKCBHTGVudW0gdGFy Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFRleFBhcmFt ZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9p ZCBnbFRleFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsK CmV4dGVybiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMZmxvYXQg KnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdigg R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVy biB2b2lkIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51 bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UxRCggR0xl bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQg Z2xUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3Jt YXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhJbWFnZSggR0xlbnVtIHRh cmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7CgoKCgpleHRlcm4gdm9pZCBnbEdlblRleHR1cmVzKCBH THNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMgKTsKCmV4dGVybiB2b2lkIGdsRGVsZXRlVGV4dHVy ZXMoIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7CgpleHRlcm4gdm9pZCBnbEJp bmRUZXh0dXJlKCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSApOwoKZXh0ZXJuIHZvaWQg Z2xQcmlvcml0aXplVGV4dHVyZXMoIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVz ICk7CgpleHRlcm4gR0xib29sZWFuIGdsQXJlVGV4dHVyZXNSZXNpZGVudCggR0xzaXplaSBuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM dWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xib29sZWFuICpyZXNpZGVuY2VzICk7CgpleHRlcm4gR0xib29sZWFuIGdsSXNU ZXh0dXJlKCBHTHVpbnQgdGV4dHVyZSApOwoKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UxRCgg R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoK CmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdM aW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6 ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCgpleHRlcm4gdm9pZCBn bENvcHlUZXhJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBi b3JkZXIgKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51 bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRleFN1 YkltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgg KTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBHTGlu dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQgKTsKCgoKCgoKZXh0 ZXJuIHZvaWQgZ2xNYXAxZCggR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZG91YmxlICpwb2ludHMg KTsKZXh0ZXJuIHZvaWQgZ2xNYXAxZiggR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9h dCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0cmlkZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG9yZGVyLCBjb25zdCBHTGZsb2F0ICpwb2lu dHMgKTsKCmV4dGVybiB2b2lkIGdsTWFwMmQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg ICAgICAgIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9y ZGVyLAogICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50 IHZzdHJpZGUsIEdMaW50IHZvcmRlciwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3Vi bGUgKnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1hcDJmKCBHTGVudW0gdGFyZ2V0LAogICAgICAg ICAgICAgICAgICAgICBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGlu dCB1b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdM aW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm bG9hdCAqcG9pbnRzICk7CgpleHRlcm4gdm9pZCBnbEdldE1hcGR2KCBHTGVudW0gdGFyZ2V0LCBH TGVudW0gcXVlcnksIEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsR2V0TWFwZnYoIEdMZW51 bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbEdldE1h cGl2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMaW50ICp2ICk7CgpleHRlcm4gdm9p ZCBnbEV2YWxDb29yZDFkKCBHTGRvdWJsZSB1ICk7CmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMWYo IEdMZmxvYXQgdSApOwoKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZHYoIGNvbnN0IEdMZG91Ymxl ICp1ICk7CmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMWZ2KCBjb25zdCBHTGZsb2F0ICp1ICk7Cgpl eHRlcm4gdm9pZCBnbEV2YWxDb29yZDJkKCBHTGRvdWJsZSB1LCBHTGRvdWJsZSB2ICk7CmV4dGVy biB2b2lkIGdsRXZhbENvb3JkMmYoIEdMZmxvYXQgdSwgR0xmbG9hdCB2ICk7CgpleHRlcm4gdm9p ZCBnbEV2YWxDb29yZDJkdiggY29uc3QgR0xkb3VibGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFs Q29vcmQyZnYoIGNvbnN0IEdMZmxvYXQgKnUgKTsKCmV4dGVybiB2b2lkIGdsTWFwR3JpZDFkKCBH TGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyICk7CmV4dGVybiB2b2lkIGdsTWFwR3Jp ZDFmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiApOwoKZXh0ZXJuIHZvaWQgZ2xN YXBHcmlkMmQoIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdm4sIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2 MiApOwpleHRlcm4gdm9pZCBnbE1hcEdyaWQyZiggR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxv YXQgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdm4sIEdMZmxv YXQgdjEsIEdMZmxvYXQgdjIgKTsKCmV4dGVybiB2b2lkIGdsRXZhbFBvaW50MSggR0xpbnQgaSAp OwoKZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQyKCBHTGludCBpLCBHTGludCBqICk7CgpleHRlcm4g dm9pZCBnbEV2YWxNZXNoMSggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiApOwoKZXh0 ZXJuIHZvaWQgZ2xFdmFsTWVzaDIoIEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIsIEdM aW50IGoxLCBHTGludCBqMiApOwoKCgoKCgpleHRlcm4gdm9pZCBnbEZvZ2YoIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpKCBHTGVudW0gcG5hbWUsIEdM aW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbEZvZ2Z2KCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM ZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpdiggR0xlbnVtIHBuYW1lLCBjb25z dCBHTGludCAqcGFyYW1zICk7CgoKCgoKCmV4dGVybiB2b2lkIGdsRmVlZGJhY2tCdWZmZXIoIEdM c2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1ZmZlciApOwoKZXh0ZXJuIHZvaWQg Z2xQYXNzVGhyb3VnaCggR0xmbG9hdCB0b2tlbiApOwoKZXh0ZXJuIHZvaWQgZ2xTZWxlY3RCdWZm ZXIoIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpidWZmZXIgKTsKCmV4dGVybiB2b2lkIGdsSW5pdE5h bWVzKCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbExvYWROYW1lKCBHTHVpbnQgbmFtZSApOwoKZXh0 ZXJuIHZvaWQgZ2xQdXNoTmFtZSggR0x1aW50IG5hbWUgKTsKCmV4dGVybiB2b2lkIGdsUG9wTmFt ZSggdm9pZCApOwojIDE0OTYgIi4uL2luY2x1ZGUvR0wvZ2wuaCIKZXh0ZXJuIHZvaWQgZ2xEcmF3 UmFuZ2VFbGVtZW50cyggR0xlbnVtIG1vZGUsIEdMdWludCBzdGFydCwKICAgICAgICBHTHVpbnQg ZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzICk7 CgpleHRlcm4gdm9pZCBnbFRleEltYWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6 ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhT dWJJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsIEdMc2l6 ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl aSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwoKZXh0ZXJuIHZvaWQg Z2xDb3B5VGV4U3ViSW1hZ2UzRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50 IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IHpvZmZzZXQsIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0ICk7Cgp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNQUk9DKSAoR0xlbnVtIG1vZGUsIEdMdWludCBzdGFydCwg R0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5k aWNlcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwg R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFRFWFNVQklNQUdFM0RQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6 ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29u c3QgR0x2b2lkICpwaXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdF M0RQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50 IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0KTsKIyAxNjA2ICIuLi9pbmNsdWRlL0dML2dsLmgiCmV4dGVybiB2b2lk IGdsQ29sb3JUYWJsZSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9y bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29u c3QgR0x2b2lkICp0YWJsZSApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvclN1YlRhYmxlKCBHTGVudW0g dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0 YXJ0LCBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhICk7CgpleHRlcm4gdm9pZCBnbENvbG9yVGFi bGVQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKCmV4 dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEdMZmxvYXQgKnBhcmFtcyk7CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclN1YlRhYmxlKCBHTGVu dW0gdGFyZ2V0LCBHTHNpemVpIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZv aWQgZ2xDb3B5Q29sb3JUYWJsZSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQg eSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlKCBHTGVudW0g dGFyZ2V0LCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xv clRhYmxlUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMg KTsKCmV4dGVybiB2b2lkIGdsR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZEVxdWF0aW9uKCBH TGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZENvbG9yKCBHTGNsYW1wZiByZWQsIEdM Y2xhbXBmIGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1w ZiBibHVlLCBHTGNsYW1wZiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xIaXN0b2dyYW0oIEdMZW51 bSB0YXJnZXQsIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayApOwoKZXh0ZXJuIHZvaWQg Z2xSZXNldEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0 b2dyYW0oIEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnZhbHVlcyApOwoKZXh0ZXJuIHZv aWQgZ2xHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h dCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcml2KCBHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbE1pbm1heCgg R0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMYm9vbGVhbiBzaW5rICk7CgpleHRlcm4gdm9pZCBnbFJlc2V0TWlubWF4 KCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1heCggR0xlbnVtIHRhcmdl dCwgR0xib29sZWFuIHJlc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHZvaWQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRNaW5tYXhQYXJhbWV0ZXJm diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdl dE1pbm1heFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7Cgpl eHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAg R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVu dW0gdHlwZSwKICAgICAgICBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRlcm4gdm9pZCBnbENv bnZvbHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgR0xlbnVtIGludGVybmFs Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwKICAg ICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbWFnZSApOwoKZXh0ZXJuIHZvaWQgZ2xD b252b2x1dGlvblBhcmFtZXRlcmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAg ICBHTGZsb2F0IHBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvblBhcmFtZXRlcmZ2 KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFy YW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaSggR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLAogICAgICAgIEdMaW50IHBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xD b252b2x1dGlvblBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAg ICAgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xDb3B5Q29udm9sdXRpb25G aWx0ZXIxRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsKCmV4dGVybiB2b2lkIGdsQ29weUNvbnZv bHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgR0xlbnVtIGludGVybmFsZm9y bWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgIEdMc2l6ZWkgaGVp Z2h0KTsKCmV4dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25GaWx0ZXIoIEdMZW51bSB0YXJnZXQs IEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UgKTsKCmV4 dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xl bnVtIHBuYW1lLAogICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRD b252b2x1dGlvblBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAg ICAgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xTZXBhcmFibGVGaWx0ZXIyRCggR0xl bnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBlLCBjb25z dCBHTHZvaWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4gKTsKCmV4dGVybiB2b2lkIGdsR2V0 U2VwYXJhYmxlRmlsdGVyKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LAogICAgICAgIEdM ZW51bSB0eXBlLCBHTHZvaWQgKnJvdywgR0x2b2lkICpjb2x1bW4sIEdMdm9pZCAqc3BhbiApOwoK dHlwZWRlZiB2b2lkICggKiBQRk5HTEJMRU5EQ09MT1JQUk9DKSAoR0xjbGFtcGYgcmVkLCBHTGNs YW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMQkxFTkRFUVVBVElPTlBST0MpIChHTGVudW0gbW9kZSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xDT0xPUlRBQkxFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZv cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM dm9pZCAqdGFibGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVBBUkFNRVRFUkZW UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1z KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SVEFCTEVQQVJBTUVURVJJVlBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMQ09QWUNPTE9SVEFCTEVQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGlu dGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZv cm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGFibGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM R0VUQ09MT1JUQUJMRVBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVQ QVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JTVUJUQUJMRVBST0MpIChHTGVudW0gdGFy Z2V0LCBHTHNpemVpIHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g dHlwZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT0xP UlNVQlRBQkxFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMaW50IHgsIEdM aW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05G SUxURVIxRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6 ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmltYWdl KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVUSU9ORklMVEVSMkRQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW1hZ2UpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJGUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMQ09OVk9MVVRJT05QQVJBTUVURVJGVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xV VElPTlBBUkFNRVRFUklQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBw YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJVlBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMQ09QWUNPTlZPTFVUSU9ORklMVEVSMURQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp ZHRoKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT05WT0xVVElPTkZJTFRFUjJEUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU Q09OVk9MVVRJT05GSUxURVJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xl bnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09OVk9M VVRJT05QQVJBTUVURVJGVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxv YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT05WT0xVVElPTlBBUkFNRVRF UklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xHRVRTRVBBUkFCTEVGSUxURVJQUk9DKSAoR0xlbnVtIHRhcmdl dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcm93LCBHTHZvaWQgKmNvbHVt biwgR0x2b2lkICpzcGFuKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFUEFSQUJMRUZJTFRFUjJE UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU SElTVE9HUkFNUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZv cm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdmFsdWVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEdFVEhJU1RPR1JBTVBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEhJU1RPR1JBTVBB UkFNRVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRNSU5NQVhQUk9DKSAoR0xlbnVtIHRhcmdldCwg R0xib29sZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2YWx1 ZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUTUlOTUFYUEFSQU1FVEVSRlZQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMR0VUTUlOTUFYUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEhJU1RPR1JBTVBS T0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs IEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1JTk1BWFBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFJFU0VUSElTVE9HUkFNUFJPQykgKEdMZW51bSB0YXJnZXQpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUkVTRVRNSU5NQVhQUk9DKSAoR0xlbnVtIHRhcmdldCk7CiMgMTg2 MCAiLi4vaW5jbHVkZS9HTC9nbC5oIgpleHRlcm4gdm9pZCBnbEFjdGl2ZVRleHR1cmUoIEdMZW51 bSB0ZXh0dXJlICk7CgpleHRlcm4gdm9pZCBnbENsaWVudEFjdGl2ZVRleHR1cmUoIEdMZW51bSB0 ZXh0dXJlICk7CgpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTFEKCBHTGVudW0gdGFy Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH TGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEgKTsKCmV4 dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl dmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0 LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEgKTsK CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50 IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z dCBHTHZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMUQo IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRo LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhICk7 CgpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBH THZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoIEdM ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH TGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0 aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSAp OwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb21wcmVzc2VkVGV4SW1hZ2UoIEdMZW51bSB0YXJnZXQsIEdM aW50IGxvZCwgR0x2b2lkICppbWcgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFkKCBH TGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQx ZHYoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2ICk7CgpleHRlcm4gdm9pZCBnbE11 bHRpVGV4Q29vcmQxZiggR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzICk7CgpleHRlcm4gdm9pZCBn bE11bHRpVGV4Q29vcmQxZnYoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYgKTsKCmV4 dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpKCBHTGVudW0gdGFyZ2V0LCBHTGludCBzICk7Cgpl eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxaXYoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50 ICp2ICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxcyggR0xlbnVtIHRhcmdldCwgR0xz aG9ydCBzICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc3YoIEdMZW51bSB0YXJnZXQs IGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJkKCBHTGVu dW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0ICk7CgpleHRlcm4gdm9pZCBnbE11bHRp VGV4Q29vcmQyZHYoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2ICk7CgpleHRlcm4g dm9pZCBnbE11bHRpVGV4Q29vcmQyZiggR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0 IHQgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmdiggR0xlbnVtIHRhcmdldCwgY29u c3QgR0xmbG9hdCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmkoIEdMZW51bSB0 YXJnZXQsIEdMaW50IHMsIEdMaW50IHQgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJp diggR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlU ZXhDb29yZDJzKCBHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCApOwoKZXh0ZXJu IHZvaWQgZ2xNdWx0aVRleENvb3JkMnN2KCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2 ICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZCggR0xlbnVtIHRhcmdldCwgR0xkb3Vi bGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciApOwoKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv b3JkM2R2KCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdiApOwoKZXh0ZXJuIHZvaWQg Z2xNdWx0aVRleENvb3JkM2YoIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBH TGZsb2F0IHIgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNmdiggR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xmbG9hdCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2koIEdM ZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIgKTsKCmV4dGVybiB2b2lkIGds TXVsdGlUZXhDb29yZDNpdiggR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYgKTsKCmV4dGVy biB2b2lkIGdsTXVsdGlUZXhDb29yZDNzKCBHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hv cnQgdCwgR0xzaG9ydCByICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzc3YoIEdMZW51 bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29y ZDRkKCBHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBH TGRvdWJsZSBxICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZHYoIEdMZW51bSB0YXJn ZXQsIGNvbnN0IEdMZG91YmxlICp2ICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0Zigg R0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBx ICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZnYoIEdMZW51bSB0YXJnZXQsIGNvbnN0 IEdMZmxvYXQgKnYgKTsKCmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpKCBHTGVudW0gdGFy Z2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByLCBHTGludCBxICk7CgpleHRlcm4gdm9pZCBn bE11bHRpVGV4Q29vcmQ0aXYoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2ICk7CgpleHRl cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0cyggR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNo b3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBxICk7CgpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v cmQ0c3YoIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBn bExvYWRUcmFuc3Bvc2VNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSBtWzE2XSApOwoKZXh0ZXJuIHZv aWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZiggY29uc3QgR0xmbG9hdCBtWzE2XSApOwoKZXh0ZXJu IHZvaWQgZ2xNdWx0VHJhbnNwb3NlTWF0cml4ZCggY29uc3QgR0xkb3VibGUgbVsxNl0gKTsKCmV4 dGVybiB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgbVsxNl0gKTsK CmV4dGVybiB2b2lkIGdsU2FtcGxlQ292ZXJhZ2UoIEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4g aW52ZXJ0ICk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQUNUSVZFVEVYVFVSRVBST0MpIChHTGVu dW0gdGV4dHVyZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDTElFTlRBQ1RJVkVURVhUVVJFUFJP QykgKEdMZW51bSB0ZXh0dXJlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQx RFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TE1VTFRJVEVYQ09PUkQxRFZQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDFGUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZmxvYXQgcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMUZWUFJP QykgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMTVVMVElURVhDT09SRDFJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDFJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25z dCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMVNQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVY Q09PUkQxU1ZQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xkb3Vi bGUgcywgR0xkb3VibGUgdCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMkRW UFJPQykgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTE1VTFRJVEVYQ09PUkQyRlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdM ZmxvYXQgdCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMkZWUFJPQykgKEdM ZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVM VElURVhDT09SRDJJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBj b25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMlNQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMTVVMVElURVhDT09SRDJTVlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzRFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzRFZQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xk b3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNGUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNGVlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBH TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzSVBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTE1VTFRJVEVYQ09PUkQzSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQg KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNTUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMTVVMVElURVhDT09SRDNTVlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQ0RFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQ0RFZQUk9DKSAoR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09S RDRGUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIs IEdMZmxvYXQgcSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JENEZWUFJPQykg KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM TVVMVElURVhDT09SRDRJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdM aW50IHIsIEdMaW50IHEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDRJVlBS T0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xNVUxUSVRFWENPT1JENFNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0 IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBxKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVY Q09PUkQ0U1ZQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xMT0FEVFJBTlNQT1NFTUFUUklYRlBST0MpIChjb25zdCBHTGZsb2F0ICpt KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhEUFJPQykgKGNvbnN0 IEdMZG91YmxlICptKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRUUkFOU1BPU0VNQVRSSVhG UFJPQykgKGNvbnN0IEdMZmxvYXQgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVFRSQU5T UE9TRU1BVFJJWERQUk9DKSAoY29uc3QgR0xkb3VibGUgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMU0FNUExFQ09WRVJBR0VQUk9DKSAoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBp bWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01Q UkVTU0VEVEVYSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9y ZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPTVBSRVNTRURURVhJTUFHRTFEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50 IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRl ciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGlu dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xz aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQs IEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6 ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lk ICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTFEUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdp ZHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRh KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTVBSRVNTRURURVhJTUFHRVBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgdm9pZCAqaW1nKTsKIyAyMDQzICIuLi9pbmNsdWRlL0dM L2dsLmgiCmV4dGVybiB2b2lkIGdsQWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVyZSk7CmV4 dGVybiB2b2lkIGdsQ2xpZW50QWN0aXZlVGV4dHVyZUFSQihHTGVudW0gdGV4dHVyZSk7CmV4dGVy biB2b2lkIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMpOwpl eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xk b3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZkFSQihHTGVudW0gdGFyZ2V0 LCBHTGZsb2F0IHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZnZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpQVJC KEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxaXZB UkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4 Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMpOwpleHRlcm4gdm9pZCBnbE11bHRp VGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2 b2lkIGdsTXVsdGlUZXhDb29yZDJkQVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91 YmxlIHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyZHZBUkIoR0xlbnVtIHRhcmdldCwg Y29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyZkFSQihHTGVu dW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhD b29yZDJmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQg Z2xNdWx0aVRleENvb3JkMmlBUkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCk7CmV4 dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGlu dCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJzQVJCKEdMZW51bSB0YXJnZXQsIEdM c2hvcnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMnN2QVJCKEdM ZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v cmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSBy KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2R2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0 IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2ZBUkIoR0xlbnVtIHRh cmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcik7CmV4dGVybiB2b2lkIGdsTXVs dGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJu IHZvaWQgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQg dCwgR0xpbnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNpdkFSQihHTGVudW0gdGFy Z2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNzQVJCKEdM ZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpOwpleHRlcm4gdm9p ZCBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7 CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkQVJCKEdMZW51bSB0YXJnZXQsIEdMZG91Ymxl IHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEpOwpleHRlcm4gdm9pZCBnbE11 bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRl cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdM ZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v cmQ0ZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGds TXVsdGlUZXhDb29yZDRpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50 IHIsIEdMaW50IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0aXZBUkIoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0c0FSQihH TGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEp OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0c3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3Qg R0xzaG9ydCAqdik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQUNUSVZFVEVYVFVSRUFSQlBST0Mp IChHTGVudW0gdGV4dHVyZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDTElFTlRBQ1RJVkVURVhU VVJFQVJCUFJPQykgKEdMZW51bSB0ZXh0dXJlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJ VEVYQ09PUkQxREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQxRFZBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29u c3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDFGQVJC UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xN VUxUSVRFWENPT1JEMUZWQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDFJQVJCUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMaW50IHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDFJVkFS QlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xNVUxUSVRFWENPT1JEMVNBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQxU1ZBUkJQUk9DKSAoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENP T1JEMkRBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMkRWQVJCUFJPQykgKEdMZW51bSB0YXJn ZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09P UkQyRkFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMkZWQVJCUFJPQykgKEdMZW51bSB0YXJnZXQs IGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDJJ QVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMTVVMVElURVhDT09SRDJJVkFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBH TGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JEMlNBUkJQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMTVVMVElURVhDT09SRDJTVkFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzREFSQlBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzRFZBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29u c3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNGQVJC UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNGVkFSQlBST0MpIChHTGVudW0gdGFy Z2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09P UkQzSUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQzSVZBUkJQUk9DKSAoR0xlbnVtIHRh cmdldCwgY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09S RDNTQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0 IHIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDNTVkFSQlBST0MpIChHTGVu dW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJ VEVYQ09PUkQ0REFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0 LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVY Q09PUkQ0RFZBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDRGQVJCUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xNVUxUSVRFWENPT1JENEZWQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIGNvbnN0 IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDRJQVJCUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElURVhDT09SRDRJVkFSQlBST0MpIChHTGVudW0gdGFy Z2V0LCBjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSVRFWENPT1JE NFNBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQg ciwgR0xzaG9ydCBxKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJVEVYQ09PUkQ0U1ZBUkJQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CiMgMjU1NyAiLi4vaW5jbHVk ZS9HTC9nbC5oIgojIDEgIi4uL2luY2x1ZGUvR0wvZ2xleHQuaCIgMQojIDI2MTIgIi4uL2luY2x1 ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSAoR0xlbnVtLCBH TGVudW0sIEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xGb2dDb29yZGYgKEdMZmxvYXQp OwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZnYgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsRm9nQ29vcmRkIChHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsRm9nQ29vcmRkdiAoY29uc3Qg R0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsRm9nQ29vcmRQb2ludGVyIChHTGVudW0sIEdMc2l6 ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aURyYXdBcnJheXMgKEdMZW51 bSwgR0xpbnQgKiwgR0xzaXplaSAqLCBHTHNpemVpKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aURyYXdF bGVtZW50cyAoR0xlbnVtLCBjb25zdCBHTHNpemVpICosIEdMZW51bSwgY29uc3QgR0x2b2lkKiAq LCBHTHNpemVpKTsKZXh0ZXJuIHZvaWQgZ2xQb2ludFBhcmFtZXRlcmYgKEdMZW51bSwgR0xmbG9h dCk7CmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmdiAoR0xlbnVtLCBjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyaSAoR0xlbnVtLCBHTGludCk7CmV4dGVy biB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJpdiAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJu IHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNiIChHTGJ5dGUsIEdMYnl0ZSwgR0xieXRlKTsKZXh0ZXJu IHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNidiAoY29uc3QgR0xieXRlICopOwpleHRlcm4gdm9pZCBn bFNlY29uZGFyeUNvbG9yM2QgKEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4g dm9pZCBnbFNlY29uZGFyeUNvbG9yM2R2IChjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQg Z2xTZWNvbmRhcnlDb2xvcjNmIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZv aWQgZ2xTZWNvbmRhcnlDb2xvcjNmdiAoY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xT ZWNvbmRhcnlDb2xvcjNpIChHTGludCwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xTZWNv bmRhcnlDb2xvcjNpdiAoY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29s b3IzcyAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5 Q29sb3Izc3YgKGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3Iz dWIgKEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNv bG9yM3VidiAoY29uc3QgR0x1Ynl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1 aSAoR0x1aW50LCBHTHVpbnQsIEdMdWludCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3Iz dWl2IChjb25zdCBHTHVpbnQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdXMgKEdM dXNob3J0LCBHTHVzaG9ydCwgR0x1c2hvcnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9y M3VzdiAoY29uc3QgR0x1c2hvcnQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3JQb2lu dGVyIChHTGludCwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lk IGdsV2luZG93UG9zMmQgKEdMZG91YmxlLCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsV2luZG93 UG9zMmR2IChjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZiAoR0xm bG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmZ2IChjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJpIChHTGludCwgR0xpbnQpOwpleHRlcm4gdm9p ZCBnbFdpbmRvd1BvczJpdiAoY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9z MnMgKEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJzdiAoY29uc3Qg R0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZCAoR0xkb3VibGUsIEdMZG91Ymxl LCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2R2IChjb25zdCBHTGRvdWJsZSAq KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7 CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2Z2IChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9p ZCBnbFdpbmRvd1BvczNpIChHTGludCwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xXaW5k b3dQb3MzaXYgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNzIChHTHNo b3J0LCBHTHNob3J0LCBHTHNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3Mzc3YgKGNvbnN0 IEdMc2hvcnQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVQUk9D KSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFs cGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZPR0NPT1JE RlBST0MpIChHTGZsb2F0IGNvb3JkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZPR0NPT1JERlZQ Uk9DKSAoY29uc3QgR0xmbG9hdCAqY29vcmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09P UkREUFJPQykgKEdMZG91YmxlIGNvb3JkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZPR0NPT1JE RFZQUk9DKSAoY29uc3QgR0xkb3VibGUgKmNvb3JkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZP R0NPT1JEUE9JTlRFUlBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdM dm9pZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSURSQVdBUlJBWVNQUk9D KSAoR0xlbnVtIG1vZGUsIEdMaW50ICpmaXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJp bWNvdW50KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTUFJPQykgKEdM ZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBP SU5UUEFSQU1FVEVSRlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMUE9JTlRQQVJBTUVURVJGVlBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0 IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUklQ Uk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQ T0lOVFBBUkFNRVRFUklWUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNCUFJPQykgKEdMYnl0ZSByZWQs IEdMYnl0ZSBncmVlbiwgR0xieXRlIGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05E QVJZQ09MT1IzQlZQUk9DKSAoY29uc3QgR0xieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFNFQ09OREFSWUNPTE9SM0RQUk9DKSAoR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xk b3VibGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNEVlBST0Mp IChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xP UjNGUFJPQykgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzRlZQUk9DKSAoY29uc3QgR0xmbG9hdCAq dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNJUFJPQykgKEdMaW50IHJl ZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05E QVJZQ09MT1IzSVZQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM U0VDT05EQVJZQ09MT1IzU1BST0MpIChHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9y dCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1NWUFJPQykgKGNv bnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUJQ Uk9DKSAoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQlZQUk9DKSAoY29uc3QgR0x1Ynl0ZSAqdik7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNVSVBST0MpIChHTHVpbnQgcmVk LCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09O REFSWUNPTE9SM1VJVlBST0MpIChjb25zdCBHTHVpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMU0VDT05EQVJZQ09MT1IzVVNQUk9DKSAoR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwg R0x1c2hvcnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNVU1ZQ Uk9DKSAoY29uc3QgR0x1c2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZ Q09MT1JQT0lOVEVSUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlk ZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP UzJEUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM V0lORE9XUE9TMkRWUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFdJTkRPV1BPUzJGUFJPQykgKEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFdJTkRPV1BPUzJGVlBST0MpIChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFdJTkRPV1BPUzJJUFJPQykgKEdMaW50IHgsIEdMaW50IHkpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMklWUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJTUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJTVlBST0MpIChjb25zdCBHTHNob3J0ICp2 KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNEUFJPQykgKEdMZG91YmxlIHgsIEdM ZG91YmxlIHksIEdMZG91YmxlIHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0RW UFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP UzNGUFJPQykgKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMV0lORE9XUE9TM0ZWUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMV0lORE9XUE9TM0lQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzSVZQUk9DKSAoY29uc3QgR0xpbnQgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM1NQUk9DKSAoR0xzaG9ydCB4LCBHTHNo b3J0IHksIEdMc2hvcnQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzU1ZQUk9D KSAoY29uc3QgR0xzaG9ydCAqdik7CiMgMjc4MiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRl cm4gdm9pZCBnbExvYWRUcmFuc3Bvc2VNYXRyaXhmQVJCIChjb25zdCBHTGZsb2F0ICopOwpleHRl cm4gdm9pZCBnbExvYWRUcmFuc3Bvc2VNYXRyaXhkQVJCIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0 ZXJuIHZvaWQgZ2xNdWx0VHJhbnNwb3NlTWF0cml4ZkFSQiAoY29uc3QgR0xmbG9hdCAqKTsKZXh0 ZXJuIHZvaWQgZ2xNdWx0VHJhbnNwb3NlTWF0cml4ZEFSQiAoY29uc3QgR0xkb3VibGUgKik7Cgp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9BRFRSQU5TUE9TRU1BVFJJWEZBUkJQUk9DKSAoY29uc3Qg R0xmbG9hdCAqbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FEVFJBTlNQT1NFTUFUUklYREFS QlBST0MpIChjb25zdCBHTGRvdWJsZSAqbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUVFJB TlNQT1NFTUFUUklYRkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTE1VTFRUUkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0IEdMZG91YmxlICptKTsK CgoKCgpleHRlcm4gdm9pZCBnbFNhbXBsZUNvdmVyYWdlQVJCIChHTGNsYW1wZiwgR0xib29sZWFu KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1w ZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CiMgMjgxMiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5o IgpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTNEQVJCIChHTGVudW0sIEdMaW50LCBH TGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMaW50LCBHTHNpemVpLCBjb25zdCBH THZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlMkRBUkIgKEdMZW51bSwg R0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdM dm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4SW1hZ2UxREFSQiAoR0xlbnVtLCBH TGludCwgR0xlbnVtLCBHTHNpemVpLCBHTGludCwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpl eHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEQVJCIChHTGVudW0sIEdMaW50LCBH TGludCwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNpemVpLCBHTHNpemVpLCBHTGVudW0sIEdM c2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4U3ViSW1h Z2UyREFSQiAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNpemVpLCBH TGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2Vk VGV4U3ViSW1hZ2UxREFSQiAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMZW51bSwg R0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdldENvbXByZXNzZWRUZXhJ bWFnZUFSQiAoR0xlbnVtLCBHTGludCwgdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xD T01QUkVTU0VEVEVYSU1BR0UzREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz aXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lk ICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhJTUFHRTJEQVJCUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VT aXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NF RFRFWElNQUdFMURBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdl U2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNT RURURVhTVUJJTUFHRTNEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFn ZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVT U0VEVEVYU1VCSU1BR0UyREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs IEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMURBUkJQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM ZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NUFJFU1NFRFRFWElNQUdFQVJCUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMaW50IGxldmVsLCB2b2lkICppbWcpOwojIDI4MzYgIi4uL2luY2x1ZGUvR0wvZ2xl eHQuaCIKZXh0ZXJuIHZvaWQgZ2xQb2ludFBhcmFtZXRlcmZBUkIgKEdMZW51bSwgR0xmbG9hdCk7 CmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmdkFSQiAoR0xlbnVtLCBjb25zdCBHTGZsb2F0 ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRkFSQlBST0MpIChHTGVu dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE9JTlRQQVJB TUVURVJGVkFSQlBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CgoK CgoKZXh0ZXJuIHZvaWQgZ2xXZWlnaHRidkFSQiAoR0xpbnQsIGNvbnN0IEdMYnl0ZSAqKTsKZXh0 ZXJuIHZvaWQgZ2xXZWlnaHRzdkFSQiAoR0xpbnQsIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2 b2lkIGdsV2VpZ2h0aXZBUkIgKEdMaW50LCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xX ZWlnaHRmdkFSQiAoR0xpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsV2VpZ2h0 ZHZBUkIgKEdMaW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xXZWlnaHR1YnZB UkIgKEdMaW50LCBjb25zdCBHTHVieXRlICopOwpleHRlcm4gdm9pZCBnbFdlaWdodHVzdkFSQiAo R0xpbnQsIGNvbnN0IEdMdXNob3J0ICopOwpleHRlcm4gdm9pZCBnbFdlaWdodHVpdkFSQiAoR0xp bnQsIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xXZWlnaHRQb2ludGVyQVJCIChHTGlu dCwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4 QmxlbmRBUkIgKEdMaW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xXRUlHSFRCVkFSQlBST0Mp IChHTGludCBzaXplLCBjb25zdCBHTGJ5dGUgKndlaWdodHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMV0VJR0hUU1ZBUkJQUk9DKSAoR0xpbnQgc2l6ZSwgY29uc3QgR0xzaG9ydCAqd2VpZ2h0cyk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXRUlHSFRJVkFSQlBST0MpIChHTGludCBzaXplLCBjb25z dCBHTGludCAqd2VpZ2h0cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXRUlHSFRGVkFSQlBST0Mp IChHTGludCBzaXplLCBjb25zdCBHTGZsb2F0ICp3ZWlnaHRzKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFdFSUdIVERWQVJCUFJPQykgKEdMaW50IHNpemUsIGNvbnN0IEdMZG91YmxlICp3ZWlnaHRz KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdFSUdIVFVCVkFSQlBST0MpIChHTGludCBzaXplLCBj b25zdCBHTHVieXRlICp3ZWlnaHRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdFSUdIVFVTVkFS QlBST0MpIChHTGludCBzaXplLCBjb25zdCBHTHVzaG9ydCAqd2VpZ2h0cyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xXRUlHSFRVSVZBUkJQUk9DKSAoR0xpbnQgc2l6ZSwgY29uc3QgR0x1aW50ICp3 ZWlnaHRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdFSUdIVFBPSU5URVJBUkJQUk9DKSAoR0xp bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50 ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQkxFTkRBUkJQUk9DKSAoR0xpbnQgY291 bnQpOwoKCgoKCmV4dGVybiB2b2lkIGdsQ3VycmVudFBhbGV0dGVNYXRyaXhBUkIgKEdMaW50KTsK ZXh0ZXJuIHZvaWQgZ2xNYXRyaXhJbmRleHVidkFSQiAoR0xpbnQsIGNvbnN0IEdMdWJ5dGUgKik7 CmV4dGVybiB2b2lkIGdsTWF0cml4SW5kZXh1c3ZBUkIgKEdMaW50LCBjb25zdCBHTHVzaG9ydCAq KTsKZXh0ZXJuIHZvaWQgZ2xNYXRyaXhJbmRleHVpdkFSQiAoR0xpbnQsIGNvbnN0IEdMdWludCAq KTsKZXh0ZXJuIHZvaWQgZ2xNYXRyaXhJbmRleFBvaW50ZXJBUkIgKEdMaW50LCBHTGVudW0sIEdM c2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDVVJSRU5UUEFM RVRURU1BVFJJWEFSQlBST0MpIChHTGludCBpbmRleCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xN QVRSSVhJTkRFWFVCVkFSQlBST0MpIChHTGludCBzaXplLCBjb25zdCBHTHVieXRlICppbmRpY2Vz KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1BVFJJWElOREVYVVNWQVJCUFJPQykgKEdMaW50IHNp emUsIGNvbnN0IEdMdXNob3J0ICppbmRpY2VzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1BVFJJ WElOREVYVUlWQVJCUFJPQykgKEdMaW50IHNpemUsIGNvbnN0IEdMdWludCAqaW5kaWNlcyk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xNQVRSSVhJTkRFWFBPSU5URVJBUkJQUk9DKSAoR0xpbnQgc2l6 ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwoj IDI5MTYgIi4uL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZEFS QiAoR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZHZBUkIgKGNv bnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJmQVJCIChHTGZsb2F0LCBH TGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZnZBUkIgKGNvbnN0IEdMZmxvYXQgKik7 CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmlBUkIgKEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lk IGdsV2luZG93UG9zMml2QVJCIChjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQ b3Myc0FSQiAoR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMnN2QVJC IChjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNkQVJCIChHTGRvdWJs ZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZHZBUkIgKGNv bnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNmQVJCIChHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZnZBUkIgKGNvbnN0IEdM ZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2lBUkIgKEdMaW50LCBHTGludCwgR0xp bnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNpdkFSQiAoY29uc3QgR0xpbnQgKik7CmV4dGVy biB2b2lkIGdsV2luZG93UG9zM3NBUkIgKEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRl cm4gdm9pZCBnbFdpbmRvd1BvczNzdkFSQiAoY29uc3QgR0xzaG9ydCAqKTsKCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xXSU5ET1dQT1MyREFSQlBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJEVkFSQlBST0MpIChjb25zdCBHTGRvdWJs ZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyRkFSQlBST0MpIChHTGZsb2F0 IHgsIEdMZmxvYXQgeSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyRlZBUkJQUk9D KSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MySUFS QlBST0MpIChHTGludCB4LCBHTGludCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP UzJJVkFSQlBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5E T1dQT1MyU0FSQlBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xXSU5ET1dQT1MyU1ZBUkJQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xXSU5ET1dQT1MzREFSQlBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBH TGRvdWJsZSB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNEVkFSQlBST0MpIChj b25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRkFSQlBS T0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFdJTkRPV1BPUzNGVkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFdJTkRPV1BPUzNJQVJCUFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHop Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0lWQVJCUFJPQykgKGNvbnN0IEdMaW50 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNTQVJCUFJPQykgKEdMc2hvcnQg eCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9T M1NWQVJCUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwoKCgoKCmV4dGVybiB2b2lkIGdsVmVydGV4 QXR0cmliMWRBUkIgKEdMdWludCwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJp YjFkdkFSQiAoR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhB dHRyaWIxZkFSQiAoR0x1aW50LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIx ZnZBUkIgKEdMdWludCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRy aWIxc0FSQiAoR0x1aW50LCBHTHNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIxc3ZB UkIgKEdMdWludCwgY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIy ZEFSQiAoR0x1aW50LCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0 dHJpYjJkdkFSQiAoR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0 ZXhBdHRyaWIyZkFSQiAoR0x1aW50LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xW ZXJ0ZXhBdHRyaWIyZnZBUkIgKEdMdWludCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQg Z2xWZXJ0ZXhBdHRyaWIyc0FSQiAoR0x1aW50LCBHTHNob3J0LCBHTHNob3J0KTsKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXhBdHRyaWIyc3ZBUkIgKEdMdWludCwgY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJu IHZvaWQgZ2xWZXJ0ZXhBdHRyaWIzZEFSQiAoR0x1aW50LCBHTGRvdWJsZSwgR0xkb3VibGUsIEdM ZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIzZHZBUkIgKEdMdWludCwgY29uc3Qg R0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2ZBUkIgKEdMdWludCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2Z2QVJC IChHTHVpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM3NB UkIgKEdMdWludCwgR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsVmVy dGV4QXR0cmliM3N2QVJCIChHTHVpbnQsIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGds VmVydGV4QXR0cmliNE5idkFSQiAoR0x1aW50LCBjb25zdCBHTGJ5dGUgKik7CmV4dGVybiB2b2lk IGdsVmVydGV4QXR0cmliNE5pdkFSQiAoR0x1aW50LCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXhBdHRyaWI0TnN2QVJCIChHTHVpbnQsIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVy biB2b2lkIGdsVmVydGV4QXR0cmliNE51YkFSQiAoR0x1aW50LCBHTHVieXRlLCBHTHVieXRlLCBH THVieXRlLCBHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0TnVidkFSQiAoR0x1 aW50LCBjb25zdCBHTHVieXRlICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjROdWl2QVJC IChHTHVpbnQsIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0TnVz dkFSQiAoR0x1aW50LCBjb25zdCBHTHVzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRy aWI0YnZBUkIgKEdMdWludCwgY29uc3QgR0xieXRlICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0 dHJpYjRkQVJCIChHTHVpbnQsIEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91Ymxl KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0ZHZBUkIgKEdMdWludCwgY29uc3QgR0xkb3Vi bGUgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNGZBUkIgKEdMdWludCwgR0xmbG9hdCwg R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNGZ2 QVJCIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmli NGl2QVJCIChHTHVpbnQsIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJp YjRzQVJCIChHTHVpbnQsIEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRl cm4gdm9pZCBnbFZlcnRleEF0dHJpYjRzdkFSQiAoR0x1aW50LCBjb25zdCBHTHNob3J0ICopOwpl eHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjR1YnZBUkIgKEdMdWludCwgY29uc3QgR0x1Ynl0ZSAq KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0dWl2QVJCIChHTHVpbnQsIGNvbnN0IEdMdWlu dCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0dXN2QVJCIChHTHVpbnQsIGNvbnN0IEdM dXNob3J0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXJBUkIgKEdMdWludCwg R0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVy biB2b2lkIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlBUkIgKEdMdWludCk7CmV4dGVybiB2b2lk IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5QVJCIChHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFBy b2dyYW1TdHJpbmdBUkIgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7 CmV4dGVybiB2b2lkIGdsQmluZFByb2dyYW1BUkIgKEdMZW51bSwgR0x1aW50KTsKZXh0ZXJuIHZv aWQgZ2xEZWxldGVQcm9ncmFtc0FSQiAoR0xzaXplaSwgY29uc3QgR0x1aW50ICopOwpleHRlcm4g dm9pZCBnbEdlblByb2dyYW1zQVJCIChHTHNpemVpLCBHTHVpbnQgKik7CmV4dGVybiB2b2lkIGds UHJvZ3JhbUVudlBhcmFtZXRlcjRkQVJCIChHTGVudW0sIEdMdWludCwgR0xkb3VibGUsIEdMZG91 YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFByb2dyYW1FbnZQYXJhbWV0 ZXI0ZHZBUkIgKEdMZW51bSwgR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQg Z2xQcm9ncmFtRW52UGFyYW1ldGVyNGZBUkIgKEdMZW51bSwgR0x1aW50LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtRW52UGFyYW1ldGVy NGZ2QVJCIChHTGVudW0sIEdMdWludCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xQ cm9ncmFtTG9jYWxQYXJhbWV0ZXI0ZEFSQiAoR0xlbnVtLCBHTHVpbnQsIEdMZG91YmxlLCBHTGRv dWJsZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtTG9jYWxQYXJh bWV0ZXI0ZHZBUkIgKEdMZW51bSwgR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZv aWQgZ2xQcm9ncmFtTG9jYWxQYXJhbWV0ZXI0ZkFSQiAoR0xlbnVtLCBHTHVpbnQsIEdMZmxvYXQs IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFByb2dyYW1Mb2NhbFBh cmFtZXRlcjRmdkFSQiAoR0xlbnVtLCBHTHVpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2 b2lkIGdsR2V0UHJvZ3JhbUVudlBhcmFtZXRlcmR2QVJCIChHTGVudW0sIEdMdWludCwgR0xkb3Vi bGUgKik7CmV4dGVybiB2b2lkIGdsR2V0UHJvZ3JhbUVudlBhcmFtZXRlcmZ2QVJCIChHTGVudW0s IEdMdWludCwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQcm9ncmFtTG9jYWxQYXJhbWV0 ZXJkdkFSQiAoR0xlbnVtLCBHTHVpbnQsIEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbEdldFBy b2dyYW1Mb2NhbFBhcmFtZXRlcmZ2QVJCIChHTGVudW0sIEdMdWludCwgR0xmbG9hdCAqKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRQcm9ncmFtaXZBUkIgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRQcm9ncmFtU3RyaW5nQVJCIChHTGVudW0sIEdMZW51bSwgR0x2b2lkICop OwpleHRlcm4gdm9pZCBnbEdldFZlcnRleEF0dHJpYmR2QVJCIChHTHVpbnQsIEdMZW51bSwgR0xk b3VibGUgKik7CmV4dGVybiB2b2lkIGdsR2V0VmVydGV4QXR0cmliZnZBUkIgKEdMdWludCwgR0xl bnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldFZlcnRleEF0dHJpYml2QVJCIChHTHVp bnQsIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl cnZBUkIgKEdMdWludCwgR0xlbnVtLCBHTHZvaWQqICopOwpleHRlcm4gR0xib29sZWFuIGdsSXNQ cm9ncmFtQVJCIChHTHVpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjFE QVJCUFJPQykgKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xWRVJURVhBVFRSSUIxRFZBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAq dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIxRkFSQlBST0MpIChHTHVpbnQg aW5kZXgsIEdMZmxvYXQgeCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIxRlZB UkJQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFZFUlRFWEFUVFJJQjFTQVJCUFJPQykgKEdMdWludCBpbmRleCwgR0xzaG9ydCB4KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjFTVkFSQlBST0MpIChHTHVpbnQgaW5k ZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklC MkRBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjJEVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNv bnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjJGQVJC UFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMVkVSVEVYQVRUUklCMkZWQVJCUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xm bG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIyU0FSQlBST0MpIChH THVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFZFUlRFWEFUVFJJQjJTVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCM0RBUkJQUk9DKSAoR0x1aW50IGlu ZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFZFUlRFWEFUVFJJQjNEVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91 YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjNGQVJCUFJPQykgKEdM dWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xWRVJURVhBVFRSSUIzRlZBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBH TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjNTQVJCUFJPQykg KEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIzU1ZBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBjb25z dCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjROQlZBUkJQ Uk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVkVSVEVYQVRUUklCNE5JVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2 KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjROU1ZBUkJQUk9DKSAoR0x1aW50 IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFU VFJJQjROVUJBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBHTHVieXRlIHgsIEdMdWJ5dGUgeSwgR0x1 Ynl0ZSB6LCBHTHVieXRlIHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCNE5V QlZBUkJQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFZFUlRFWEFUVFJJQjROVUlWQVJCUFJPQykgKEdMdWludCBpbmRleCwgY29uc3Qg R0x1aW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjROVVNWQVJCUFJP QykgKEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVkVSVEVYQVRUUklCNEJWQVJCUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xieXRlICp2 KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjREQVJCUFJPQykgKEdMdWludCBp bmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUI0RFZBUkJQUk9DKSAoR0x1aW50IGluZGV4 LCBjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUI0 RkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos IEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUI0RlZBUkJQUk9D KSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFZFUlRFWEFUVFJJQjRJVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjRTQVJCUFJPQykgKEdMdWludCBpbmRl eCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjRTVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0 IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCNFVCVkFSQlBS T0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVkVSVEVYQVRUUklCNFVJVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAq dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUI0VVNWQVJCUFJPQykgKEdMdWlu dCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVY QVRUUklCUE9JTlRFUkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0 eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAq cG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xFTkFCTEVWRVJURVhBVFRSSUJBUlJBWUFS QlBST0MpIChHTHVpbnQgaW5kZXgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRElTQUJMRVZFUlRF WEFUVFJJQkFSUkFZQVJCUFJPQykgKEdMdWludCBpbmRleCk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xQUk9HUkFNU1RSSU5HQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdM c2l6ZWkgbGVuLCBjb25zdCBHTHZvaWQgKnN0cmluZyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xC SU5EUFJPR1JBTUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcHJvZ3JhbSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xERUxFVEVQUk9HUkFNU0FSQlBST0MpIChHTHNpemVpIG4sIGNvbnN0 IEdMdWludCAqcHJvZ3JhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VOUFJPR1JBTVNBUkJQ Uk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKnByb2dyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFBST0dSQU1FTlZQQVJBTUVURVI0REFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k ZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUFJPR1JBTUVOVlBBUkFNRVRFUjREVkFSQlBST0MpIChHTGVudW0g dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMUFJPR1JBTUVOVlBBUkFNRVRFUjRGQVJCUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3 KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBST0dSQU1FTlZQQVJBTUVURVI0RlZBUkJQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUFJPR1JBTUxPQ0FMUEFSQU1FVEVSNERBUkJQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6 LCBHTGRvdWJsZSB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBST0dSQU1MT0NBTFBBUkFNRVRF UjREVkFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91Ymxl ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUFJPR1JBTUxPQ0FMUEFSQU1FVEVSNEZB UkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQg eSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUFJPR1JBTUxP Q0FMUEFSQU1FVEVSNEZWQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgY29u c3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFBST0dSQU1FTlZQ QVJBTUVURVJEVkFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZG91Ymxl ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUFJPR1JBTUVOVlBBUkFNRVRFUkZW QVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFBST0dSQU1MT0NBTFBBUkFNRVRFUkRWQVJCUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgKnBhcmFtcyk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xHRVRQUk9HUkFNTE9DQUxQQVJBTUVURVJGVkFSQlBST0MpIChHTGVudW0g dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xHRVRQUk9HUkFNSVZBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH TGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFBST0dSQU1TVFJJTkdBUkJQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKnN0cmluZyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xHRVRWRVJURVhBVFRSSUJEVkFSQlBST0MpIChHTHVpbnQgaW5kZXgs IEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH RVRWRVJURVhBVFRSSUJGVkFSQlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xm bG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFZFUlRFWEFUVFJJQklWQVJC UFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWQVJCUFJPQykgKEdMdWludCBp bmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiBHTGJvb2xlYW4g KCAqIFBGTkdMSVNQUk9HUkFNQVJCUFJPQykgKEdMdWludCBwcm9ncmFtKTsKIyAzMDg4ICIuLi9p bmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQmxlbmRDb2xvckVYVCAoR0xjbGFtcGYs IEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJM RU5EQ09MT1JFWFRQUk9DKSAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYg Ymx1ZSwgR0xjbGFtcGYgYWxwaGEpOwoKCgoKCmV4dGVybiB2b2lkIGdsUG9seWdvbk9mZnNldEVY VCAoR0xmbG9hdCwgR0xmbG9hdCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE9MWUdPTk9GRlNF VEVYVFBST0MpIChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCBiaWFzKTsKIyAzMTA4ICIuLi9pbmNs dWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UzREVYVCAoR0xlbnVtLCBHTGlu dCwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTHNpemVpLCBHTGludCwgR0xlbnVtLCBHTGVu dW0sIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTNERVhUIChHTGVu dW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNpemVpLCBHTHNpemVp LCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5H TFRFWElNQUdFM0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVw dGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFM0RFWFRQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs IEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRl cHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwoK CgoKCmV4dGVybiB2b2lkIGdsR2V0VGV4RmlsdGVyRnVuY1NHSVMgKEdMZW51bSwgR0xlbnVtLCBH TGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRleEZpbHRlckZ1bmNTR0lTIChHTGVudW0sIEdMZW51 bSwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRU RVhGSUxURVJGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZmlsdGVyLCBHTGZs b2F0ICp3ZWlnaHRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWEZJTFRFUkZVTkNTR0lTUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9h dCAqd2VpZ2h0cyk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTFERVhUIChHTGVudW0s IEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAqKTsK ZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTJERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xp bnQsIEdMc2l6ZWksIEdMc2l6ZWksIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7Cgp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYU1VCSU1BR0UxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0 LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1h dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0 LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwoKCgoK CmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdlMURFWFQgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwg R0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTGludCk7CmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdl MkRFWFQgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNp emVpLCBHTGludCk7CmV4dGVybiB2b2lkIGdsQ29weVRleFN1YkltYWdlMURFWFQgKEdMZW51bSwg R0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbENvcHlU ZXhTdWJJbWFnZTJERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu dCwgR0xzaXplaSwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGdsQ29weVRleFN1YkltYWdlM0RFWFQg KEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXpl aSwgR0xzaXplaSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWElNQUdFMURFWFRQUk9D KSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xp bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPUFlURVhJTUFHRTJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl dmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM Q09QWVRFWFNVQklNQUdFMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM aW50IHhvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xp bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHks IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENP UFlURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5 LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xHZXRI aXN0b2dyYW1FWFQgKEdMZW51bSwgR0xib29sZWFuLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICop OwpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcmZ2RVhUIChHTGVudW0sIEdMZW51 bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0b2dyYW1QYXJhbWV0ZXJpdkVYVCAo R0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEdldE1pbm1heEVYVCAoR0xl bnVtLCBHTGJvb2xlYW4sIEdMZW51bSwgR0xlbnVtLCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGds R2V0TWlubWF4UGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRl cm4gdm9pZCBnbEdldE1pbm1heFBhcmFtZXRlcml2RVhUIChHTGVudW0sIEdMZW51bSwgR0xpbnQg Kik7CmV4dGVybiB2b2lkIGdsSGlzdG9ncmFtRVhUIChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwg R0xib29sZWFuKTsKZXh0ZXJuIHZvaWQgZ2xNaW5tYXhFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGJv b2xlYW4pOwpleHRlcm4gdm9pZCBnbFJlc2V0SGlzdG9ncmFtRVhUIChHTGVudW0pOwpleHRlcm4g dm9pZCBnbFJlc2V0TWlubWF4RVhUIChHTGVudW0pOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF VEhJU1RPR1JBTUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdMZW51 bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xHRVRISVNUT0dSQU1QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRISVNU T0dSQU1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM aW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUTUlOTUFYRVhUUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs IEdMdm9pZCAqdmFsdWVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1JTk1BWFBBUkFNRVRF UkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1z KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1JTk1BWFBBUkFNRVRFUklWRVhUUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSB3aWR0aCwg R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0 LCBHTGJvb2xlYW4gc2luayk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNFVEhJU1RPR1JBTUVY VFBST0MpIChHTGVudW0gdGFyZ2V0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFU0VUTUlOTUFY RVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwoKCgoKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25G aWx0ZXIxREVYVCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgR0xlbnVtLCBjb25z dCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIyREVYVCAoR0xlbnVt LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQg Kik7CmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJmRVhUIChHTGVudW0sIEdMZW51 bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJmdkVYVCAoR0xl bnVtLCBHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25Q YXJhbWV0ZXJpRVhUIChHTGVudW0sIEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbENvbnZv bHV0aW9uUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0 ZXJuIHZvaWQgZ2xDb3B5Q29udm9sdXRpb25GaWx0ZXIxREVYVCAoR0xlbnVtLCBHTGVudW0sIEdM aW50LCBHTGludCwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGdsQ29weUNvbnZvbHV0aW9uRmlsdGVy MkRFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwpl eHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uRmlsdGVyRVhUIChHTGVudW0sIEdMZW51bSwgR0xl bnVtLCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdkVY VCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29udm9sdXRp b25QYXJhbWV0ZXJpdkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBn bEdldFNlcGFyYWJsZUZpbHRlckVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICos IEdMdm9pZCAqLCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsU2VwYXJhYmxlRmlsdGVyMkRFWFQg KEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3Qg R0x2b2lkICosIGNvbnN0IEdMdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xV VElPTkZJTFRFUjFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1h dCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05GSUxURVIyREVYVFBS T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUkZFWFRQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtcyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENPTlZPTFVUSU9OUEFSQU1FVEVSSUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xV VElPTlBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u c3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZQ09OVk9MVVRJT05G SUxURVIxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09Q WUNPTlZPTFVUSU9ORklMVEVSMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVy bmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT05WT0xVVElPTkZJTFRFUkVYVFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICppbWFnZSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT05WT0xVVElPTlBBUkFNRVRFUkZWRVhUUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVENPTlZPTFVUSU9OUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEdFVFNFUEFSQUJMRUZJTFRFUkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0 LCBHTGVudW0gdHlwZSwgR0x2b2lkICpyb3csIEdMdm9pZCAqY29sdW1uLCBHTHZvaWQgKnNwYW4p Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VQQVJBQkxFRklMVEVSMkRFWFRQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25z dCBHTHZvaWQgKmNvbHVtbik7CiMgMzIxNiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4g dm9pZCBnbENvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTGVudW0sIEdM ZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVQYXJhbWV0ZXJm dlNHSSAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsQ29s b3JUYWJsZVBhcmFtZXRlcml2U0dJIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4 dGVybiB2b2lkIGdsQ29weUNvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xp bnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xl bnVtLCBHTGVudW0sIEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1l dGVyZnZTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldENv bG9yVGFibGVQYXJhbWV0ZXJpdlNHSSAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTENPTE9SVEFCTEVTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSwgY29uc3QgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlRBQkxF UEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVBBUkFNRVRF UklWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZQ09MT1JUQUJMRVNHSVBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6 ZWkgd2lkdGgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xQaXhl bFRleEdlblNHSVggKEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5T R0lYUFJPQykgKEdMZW51bSBtb2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFy YW1ldGVyaVNHSVMgKEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFy YW1ldGVyaXZTR0lTIChHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFBpeGVs VGV4R2VuUGFyYW1ldGVyZlNHSVMgKEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUGl4 ZWxUZXhHZW5QYXJhbWV0ZXJmdlNHSVMgKEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJu IHZvaWQgZ2xHZXRQaXhlbFRleEdlblBhcmFtZXRlcml2U0dJUyAoR0xlbnVtLCBHTGludCAqKTsK ZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUyAoR0xlbnVtLCBHTGZs b2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSSVNHSVNQ Uk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQ SVhFTFRFWEdFTlBBUkFNRVRFUklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50 ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJGU0dJ U1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMUElYRUxURVhHRU5QQVJBTUVURVJGVlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBH TGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUElYRUxURVhHRU5QQVJB TUVURVJJVlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVFBJWEVMVEVYR0VOUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBw bmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgpleHRlcm4gdm9pZCBnbFRleEltYWdlNERTR0lT IChHTGVudW0sIEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6 ZWksIEdMaW50LCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBn bFRleFN1YkltYWdlNERTR0lTIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBH TGludCwgR0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0s IGNvbnN0IEdMdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTREU0dJU1BS T0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXpl NGQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0 LCBHTGludCB6b2Zmc2V0LCBHTGludCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl aWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51 bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CiMgMzI4MCAiLi4vaW5jbHVkZS9HTC9nbGV4 dC5oIgpleHRlcm4gR0xib29sZWFuIGdsQXJlVGV4dHVyZXNSZXNpZGVudEVYVCAoR0xzaXplaSwg Y29uc3QgR0x1aW50ICosIEdMYm9vbGVhbiAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5kVGV4dHVyZUVY VCAoR0xlbnVtLCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbERlbGV0ZVRleHR1cmVzRVhUIChHTHNp emVpLCBjb25zdCBHTHVpbnQgKik7CmV4dGVybiB2b2lkIGdsR2VuVGV4dHVyZXNFWFQgKEdMc2l6 ZWksIEdMdWludCAqKTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzVGV4dHVyZUVYVCAoR0x1aW50KTsK ZXh0ZXJuIHZvaWQgZ2xQcmlvcml0aXplVGV4dHVyZXNFWFQgKEdMc2l6ZWksIGNvbnN0IEdMdWlu dCAqLCBjb25zdCBHTGNsYW1wZiAqKTsKCnR5cGVkZWYgR0xib29sZWFuICggKiBQRk5HTEFSRVRF WFRVUkVTUkVTSURFTlRFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVz LCBHTGJvb2xlYW4gKnJlc2lkZW5jZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklORFRFWFRV UkVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMREVMRVRFVEVYVFVSRVNFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg KnRleHR1cmVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFTlRFWFRVUkVTRVhUUFJPQykgKEdM c2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7CnR5cGVkZWYgR0xib29sZWFuICggKiBQRk5HTElT VEVYVFVSRUVYVFBST0MpIChHTHVpbnQgdGV4dHVyZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQ UklPUklUSVpFVEVYVFVSRVNFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1 cmVzLCBjb25zdCBHTGNsYW1wZiAqcHJpb3JpdGllcyk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xEZXRh aWxUZXhGdW5jU0dJUyAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4g dm9pZCBnbEdldERldGFpbFRleEZ1bmNTR0lTIChHTGVudW0sIEdMZmxvYXQgKik7Cgp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMREVUQUlMVEVYRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xz aXplaSBuLCBjb25zdCBHTGZsb2F0ICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU REVUQUlMVEVYRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCAqcG9pbnRzKTsK CgoKCgpleHRlcm4gdm9pZCBnbFNoYXJwZW5UZXhGdW5jU0dJUyAoR0xlbnVtLCBHTHNpemVpLCBj b25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldFNoYXJwZW5UZXhGdW5jU0dJUyAoR0xl bnVtLCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNIQVJQRU5URVhGVU5DU0dJ U1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRTSEFSUEVOVEVYRlVOQ1NHSVNQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xmbG9hdCAqcG9pbnRzKTsKIyAzMzI2ICIuLi9pbmNsdWRlL0dML2dsZXh0Lmgi CmV4dGVybiB2b2lkIGdsU2FtcGxlTWFza1NHSVMgKEdMY2xhbXBmLCBHTGJvb2xlYW4pOwpleHRl cm4gdm9pZCBnbFNhbXBsZVBhdHRlcm5TR0lTIChHTGVudW0pOwoKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFNBTVBMRU1BU0tTR0lTUFJPQykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0 KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNBTVBMRVBBVFRFUk5TR0lTUFJPQykgKEdMZW51bSBw YXR0ZXJuKTsKIyAzMzQwICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQXJy YXlFbGVtZW50RVhUIChHTGludCk7CmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyRVhUIChHTGlu dCwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lk IGdsRHJhd0FycmF5c0VYVCAoR0xlbnVtLCBHTGludCwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGds RWRnZUZsYWdQb2ludGVyRVhUIChHTHNpemVpLCBHTHNpemVpLCBjb25zdCBHTGJvb2xlYW4gKik7 CmV4dGVybiB2b2lkIGdsR2V0UG9pbnRlcnZFWFQgKEdMZW51bSwgR0x2b2lkKiAqKTsKZXh0ZXJu IHZvaWQgZ2xJbmRleFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3Qg R0x2b2lkICopOwpleHRlcm4gdm9pZCBnbE5vcm1hbFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXpl aSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkUG9pbnRl ckVYVCAoR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpl eHRlcm4gdm9pZCBnbFZlcnRleFBvaW50ZXJFWFQgKEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdM c2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xBUlJBWUVMRU1F TlRFWFRQUk9DKSAoR0xpbnQgaSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJF WFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVp IGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJB V0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRURHRUZMQUdQT0lOVEVSRVhUUFJPQykgKEdMc2l6ZWkg c3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGJvb2xlYW4gKnBvaW50ZXIpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMR0VUUE9JTlRFUlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTHZvaWQq ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU5ERVhQT0lOVEVSRVhUUFJPQykgKEdM ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpw b2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTFBPSU5URVJFWFRQUk9DKSAoR0xl bnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnBv aW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdM aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29u c3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJF WFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVp IGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwojIDMzODggIi4uL2luY2x1ZGUvR0wvZ2xl eHQuaCIKZXh0ZXJuIHZvaWQgZ2xCbGVuZEVxdWF0aW9uRVhUIChHTGVudW0pOwoKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEJMRU5ERVFVQVRJT05FWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwojIDM0MTYg Ii4uL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xTcHJpdGVQYXJhbWV0ZXJmU0dJ WCAoR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xTcHJpdGVQYXJhbWV0ZXJmdlNHSVgg KEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xTcHJpdGVQYXJhbWV0ZXJp U0dJWCAoR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsU3ByaXRlUGFyYW1ldGVyaXZTR0lY IChHTGVudW0sIGNvbnN0IEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNQUklURVBB UkFNRVRFUkZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xTUFJJVEVQQVJBTUVURVJGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBj b25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1F VEVSSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xTUFJJVEVQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBH TGludCAqcGFyYW1zKTsKIyAzNDM0ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lk IGdsUG9pbnRQYXJhbWV0ZXJmRVhUIChHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFBv aW50UGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUkZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0 IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZFWFRQUk9DKSAo R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwoKCgoKCmV4dGVybiB2b2lkIGds UG9pbnRQYXJhbWV0ZXJmU0dJUyAoR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xQb2lu dFBhcmFtZXRlcmZ2U0dJUyAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0 IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZTR0lTUFJPQykg KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCgoKCgpleHRlcm4gR0xpbnQg Z2xHZXRJbnN0cnVtZW50c1NHSVggKHZvaWQpOwpleHRlcm4gdm9pZCBnbEluc3RydW1lbnRzQnVm ZmVyU0dJWCAoR0xzaXplaSwgR0xpbnQgKik7CmV4dGVybiBHTGludCBnbFBvbGxJbnN0cnVtZW50 c1NHSVggKEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFJlYWRJbnN0cnVtZW50c1NHSVggKEdMaW50 KTsKZXh0ZXJuIHZvaWQgZ2xTdGFydEluc3RydW1lbnRzU0dJWCAodm9pZCk7CmV4dGVybiB2b2lk IGdsU3RvcEluc3RydW1lbnRzU0dJWCAoR0xpbnQpOwoKdHlwZWRlZiBHTGludCAoICogUEZOR0xH RVRJTlNUUlVNRU5UU1NHSVhQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTlNU UlVNRU5UU0JVRkZFUlNHSVhQUk9DKSAoR0xzaXplaSBzaXplLCBHTGludCAqYnVmZmVyKTsKdHlw ZWRlZiBHTGludCAoICogUEZOR0xQT0xMSU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50ICptYXJr ZXJfcCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRUFESU5TVFJVTUVOVFNTR0lYUFJPQykgKEdM aW50IG1hcmtlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTVEFSVElOU1RSVU1FTlRTU0dJWFBS T0MpICh2b2lkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNUT1BJTlNUUlVNRU5UU1NHSVhQUk9D KSAoR0xpbnQgbWFya2VyKTsKIyAzNDc2ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2 b2lkIGdsRnJhbWVab29tU0dJWCAoR0xpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQU1F Wk9PTVNHSVhQUk9DKSAoR0xpbnQgZmFjdG9yKTsKCgoKCgpleHRlcm4gdm9pZCBnbFRhZ1NhbXBs ZUJ1ZmZlclNHSVggKHZvaWQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBR1NBTVBMRUJVRkZF UlNHSVhQUk9DKSAodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xEZWZvcm1hdGlvbk1hcDNkU0dJ WCAoR0xlbnVtLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMaW50LCBHTGludCwgR0xkb3VibGUsIEdM ZG91YmxlLCBHTGludCwgR0xpbnQsIEdMZG91YmxlLCBHTGRvdWJsZSwgR0xpbnQsIEdMaW50LCBj b25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xEZWZvcm1hdGlvbk1hcDNmU0dJWCAoR0xl bnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGludCwgR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM aW50LCBHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xpbnQsIEdMaW50LCBjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbERlZm9ybVNHSVggKEdMYml0ZmllbGQpOwpleHRlcm4gdm9pZCBn bExvYWRJZGVudGl0eURlZm9ybWF0aW9uTWFwU0dJWCAoR0xiaXRmaWVsZCk7Cgp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMREVGT1JNQVRJT05NQVAzRFNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xk b3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZG91 YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBHTGRvdWJs ZSB3MSwgR0xkb3VibGUgdzIsIEdMaW50IHdzdHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xk b3VibGUgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUZPUk1BVElPTk1BUDNGU0dJ WFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB1c3Ry aWRlLCBHTGludCB1b3JkZXIsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMaW50IHZzdHJpZGUs IEdMaW50IHZvcmRlciwgR0xmbG9hdCB3MSwgR0xmbG9hdCB3MiwgR0xpbnQgd3N0cmlkZSwgR0xp bnQgd29yZGVyLCBjb25zdCBHTGZsb2F0ICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM REVGT1JNU0dJWFBST0MpIChHTGJpdGZpZWxkIG1hc2spOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM TE9BRElERU5USVRZREVGT1JNQVRJT05NQVBTR0lYUFJPQykgKEdMYml0ZmllbGQgbWFzayk7CgoK CgoKZXh0ZXJuIHZvaWQgZ2xSZWZlcmVuY2VQbGFuZVNHSVggKGNvbnN0IEdMZG91YmxlICopOwoK dHlwZWRlZiB2b2lkICggKiBQRk5HTFJFRkVSRU5DRVBMQU5FU0dJWFBST0MpIChjb25zdCBHTGRv dWJsZSAqZXF1YXRpb24pOwoKCgoKCmV4dGVybiB2b2lkIGdsRmx1c2hSYXN0ZXJTR0lYICh2b2lk KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xGTFVTSFJBU1RFUlNHSVhQUk9DKSAodm9pZCk7CiMg MzUyNiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEZvZ0Z1bmNTR0lTIChH THNpemVpLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldEZvZ0Z1bmNTR0lTIChH TGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZPR0ZVTkNTR0lTUFJPQykgKEdMc2l6 ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZP R0ZVTkNTR0lTUFJPQykgKEdMZmxvYXQgKnBvaW50cyk7CiMgMzU0MCAiLi4vaW5jbHVkZS9HTC9n bGV4dC5oIgpleHRlcm4gdm9pZCBnbEltYWdlVHJhbnNmb3JtUGFyYW1ldGVyaUhQIChHTGVudW0s IEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEltYWdlVHJhbnNmb3JtUGFyYW1ldGVyZkhQ IChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsSW1hZ2VUcmFuc2Zvcm1Q YXJhbWV0ZXJpdkhQIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lk IGdsSW1hZ2VUcmFuc2Zvcm1QYXJhbWV0ZXJmdkhQIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xm bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRJbWFnZVRyYW5zZm9ybVBhcmFtZXRlcml2SFAgKEdM ZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRJbWFnZVRyYW5zZm9ybVBh cmFtZXRlcmZ2SFAgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICgg KiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSUhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU1BR0VUUkFO U0ZPUk1QQVJBTUVURVJGSFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVS SVZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJP QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSVZIUFBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VUSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKIyAzNTY2ICIuLi9pbmNsdWRl L0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQ29sb3JTdWJUYWJsZUVYVCAoR0xlbnVtLCBHTHNp emVpLCBHTHNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9p ZCBnbENvcHlDb2xvclN1YlRhYmxlRVhUIChHTGVudW0sIEdMc2l6ZWksIEdMaW50LCBHTGludCwg R0xzaXplaSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JTVUJUQUJMRUVYVFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTHNpemVpIHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTGVudW0gZm9ybWF0 LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TENPUFlDT0xPUlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQs IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwojIDM1ODAgIi4uL2luY2x1ZGUvR0wv Z2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xIaW50UEdJIChHTGVudW0sIEdMaW50KTsKCnR5cGVkZWYg dm9pZCAoICogUEZOR0xISU5UUEdJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IG1vZGUpOwoK CgoKCmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZUVYVCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWks IEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29sb3JU YWJsZUVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICopOwpleHRlcm4gdm9pZCBn bEdldENvbG9yVGFibGVQYXJhbWV0ZXJpdkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpl eHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJmdkVYVCAoR0xlbnVtLCBHTGVudW0s IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRUVYVFBST0MpIChH TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51 bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEdFVENPTE9SVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZv cm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH RVRDT0xPUlRBQkxFUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu YW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVQ QVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg KnBhcmFtcyk7CiMgMzYwNiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEdl dExpc3RQYXJhbWV0ZXJmdlNHSVggKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4g dm9pZCBnbEdldExpc3RQYXJhbWV0ZXJpdlNHSVggKEdMdWludCwgR0xlbnVtLCBHTGludCAqKTsK ZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZlNHSVggKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0 KTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZnZTR0lYIChHTHVpbnQsIEdMZW51bSwgY29u c3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyaVNHSVggKEdMdWludCwg R0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsTGlzdFBhcmFtZXRlcml2U0dJWCAoR0x1aW50 LCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVExJU1RQ QVJBTUVURVJGVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJJVlNHSVhQUk9D KSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBw bmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVS RlZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSSVNHSVhQUk9DKSAoR0x1 aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMTElTVFBBUkFNRVRFUklWU0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBj b25zdCBHTGludCAqcGFyYW1zKTsKIyAzNjQ0ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVy biB2b2lkIGdsSW5kZXhNYXRlcmlhbEVYVCAoR0xlbnVtLCBHTGVudW0pOwoKdHlwZWRlZiB2b2lk ICggKiBQRk5HTElOREVYTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2Rl KTsKCgoKCgpleHRlcm4gdm9pZCBnbEluZGV4RnVuY0VYVCAoR0xlbnVtLCBHTGNsYW1wZik7Cgp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU5ERVhGVU5DRVhUUFJPQykgKEdMZW51bSBmdW5jLCBHTGNs YW1wZiByZWYpOwojIDM2NjQgIi4uL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xM b2NrQXJyYXlzRVhUIChHTGludCwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGdsVW5sb2NrQXJyYXlz RVhUICh2b2lkKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0NLQVJSQVlTRVhUUFJPQykgKEdM aW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFVOTE9DS0FS UkFZU0VYVFBST0MpICh2b2lkKTsKCgoKCgpleHRlcm4gdm9pZCBnbEN1bGxQYXJhbWV0ZXJkdkVY VCAoR0xlbnVtLCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xDdWxsUGFyYW1ldGVyZnZFWFQg KEdMZW51bSwgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDVUxMUEFSQU1FVEVS RFZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTENVTExQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQg KnBhcmFtcyk7CiMgMzY4OCAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEZy YWdtZW50Q29sb3JNYXRlcmlhbFNHSVggKEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xG cmFnbWVudExpZ2h0ZlNHSVggKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQg Z2xGcmFnbWVudExpZ2h0ZnZTR0lYIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsK ZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0aVNHSVggKEdMZW51bSwgR0xlbnVtLCBHTGludCk7 CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRMaWdodGl2U0dJWCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0 IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRNb2RlbGZTR0lYIChHTGVudW0s IEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRNb2RlbGZ2U0dJWCAoR0xlbnVt LCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRNb2RlbGlTR0lY IChHTGVudW0sIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0TW9kZWxpdlNHSVgg KEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRNYXRlcmlhbGZT R0lYIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRNYXRl cmlhbGZ2U0dJWCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsRnJhZ21lbnRNYXRlcmlhbGlTR0lYIChHTGVudW0sIEdMZW51bSwgR0xpbnQpOwpleHRlcm4g dm9pZCBnbEZyYWdtZW50TWF0ZXJpYWxpdlNHSVggKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGlu dCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVudExpZ2h0ZnZTR0lYIChHTGVudW0sIEdMZW51 bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVudExpZ2h0aXZTR0lYIChHTGVu dW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0RnJhZ21lbnRNYXRlcmlhbGZ2 U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0RnJhZ21l bnRNYXRlcmlhbGl2U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBn bExpZ2h0RW52aVNHSVggKEdMZW51bSwgR0xpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZS QUdNRU5UQ09MT1JNQVRFUklBTFNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRGU0dJWFBST0MpIChHTGVudW0gbGln aHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xG UkFHTUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25z dCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVElT R0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUSVZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwg R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEZSQUdNRU5UTElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh bSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxGVlNHSVhQUk9DKSAo R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMRlJBR01FTlRMSUdIVE1PREVMSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh bSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJVlNHSVhQUk9DKSAo R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEZSQUdNRU5UTUFURVJJQUxGU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxGVlNH SVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1z KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxJU0dJWFBST0MpIChHTGVu dW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xGUkFHTUVOVE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUs IGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRM SUdIVEZWU0dJWFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy YW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAo R0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMR0VURlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJB R01FTlRNQVRFUklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGlu dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExJR0hURU5WSVNHSVhQUk9DKSAoR0xl bnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiMgMzczOCAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpl eHRlcm4gdm9pZCBnbERyYXdSYW5nZUVsZW1lbnRzRVhUIChHTGVudW0sIEdMdWludCwgR0x1aW50 LCBHTHNpemVpLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZO R0xEUkFXUkFOR0VFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBH THVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRp Y2VzKTsKIyAzNzU0ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQXBwbHlU ZXh0dXJlRVhUIChHTGVudW0pOwpleHRlcm4gdm9pZCBnbFRleHR1cmVMaWdodEVYVCAoR0xlbnVt KTsKZXh0ZXJuIHZvaWQgZ2xUZXh0dXJlTWF0ZXJpYWxFWFQgKEdMZW51bSwgR0xlbnVtKTsKCnR5 cGVkZWYgdm9pZCAoICogUEZOR0xBUFBMWVRFWFRVUkVFWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRUxJR0hURVhUUFJPQykgKEdMZW51bSBwbmFtZSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZh Y2UsIEdMZW51bSBtb2RlKTsKIyAzNzc0ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2 b2lkIGdsQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwpleHRlcm4gR0xpbnQgZ2xGaW5pc2hBc3lu Y1NHSVggKEdMdWludCAqKTsKZXh0ZXJuIEdMaW50IGdsUG9sbEFzeW5jU0dJWCAoR0x1aW50ICop OwpleHRlcm4gR0x1aW50IGdsR2VuQXN5bmNNYXJrZXJzU0dJWCAoR0xzaXplaSk7CmV4dGVybiB2 b2lkIGdsRGVsZXRlQXN5bmNNYXJrZXJzU0dJWCAoR0x1aW50LCBHTHNpemVpKTsKZXh0ZXJuIEdM Ym9vbGVhbiBnbElzQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTEFTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKdHlwZWRlZiBHTGludCAo ICogUEZOR0xGSU5JU0hBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICptYXJrZXJwKTsKdHlwZWRlZiBH TGludCAoICogUEZOR0xQT0xMQVNZTkNTR0lYUFJPQykgKEdMdWludCAqbWFya2VycCk7CnR5cGVk ZWYgR0x1aW50ICggKiBQRk5HTEdFTkFTWU5DTUFSS0VSU1NHSVhQUk9DKSAoR0xzaXplaSByYW5n ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUxFVEVBU1lOQ01BUktFUlNTR0lYUFJPQykgKEdM dWludCBtYXJrZXIsIEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIEdMYm9vbGVhbiAoICogUEZOR0xJ U0FTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKIyAzODAwICIuLi9pbmNsdWRl L0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsVmVydGV4UG9pbnRlcnZJTlRFTCAoR0xpbnQsIEdM ZW51bSwgY29uc3QgR0x2b2lkKiAqKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWxQb2ludGVydklOVEVM IChHTGVudW0sIGNvbnN0IEdMdm9pZCogKik7CmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVydklO VEVMIChHTGludCwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICopOwpleHRlcm4gdm9pZCBnbFRleENv b3JkUG9pbnRlcnZJTlRFTCAoR0xpbnQsIEdMZW51bSwgY29uc3QgR0x2b2lkKiAqKTsKCnR5cGVk ZWYgdm9pZCAoICogUEZOR0xWRVJURVhQT0lOVEVSVklOVEVMUFJPQykgKEdMaW50IHNpemUsIEdM ZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TE5PUk1BTFBPSU5URVJWSU5URUxQUk9DKSAoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBv aW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JQT0lOVEVSVklOVEVMUFJPQykgKEdM aW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFRFWENPT1JEUE9JTlRFUlZJTlRFTFBST0MpIChHTGludCBzaXplLCBHTGVu dW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CiMgMzgxOCAiLi4vaW5jbHVkZS9HTC9n bGV4dC5oIgpleHRlcm4gdm9pZCBnbFBpeGVsVHJhbnNmb3JtUGFyYW1ldGVyaUVYVCAoR0xlbnVt LCBHTGVudW0sIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZm9ybVBhcmFtZXRlcmZF WFQgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZm9y bVBhcmFtZXRlcml2RVhUIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2 b2lkIGdsUGl4ZWxUcmFuc2Zvcm1QYXJhbWV0ZXJmdkVYVCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0 IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVU RVJJRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVURVJGRVhUUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKIyAzODQ0ICIuLi9pbmNsdWRlL0dML2ds ZXh0LmgiCmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYkVYVCAoR0xieXRlLCBHTGJ5dGUs IEdMYnl0ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYnZFWFQgKGNvbnN0IEdMYnl0 ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkRVhUIChHTGRvdWJsZSwgR0xkb3Vi bGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkdkVYVCAoY29uc3Qg R0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZkVYVCAoR0xmbG9hdCwg R0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZnZFWFQgKGNv bnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaUVYVCAoR0xpbnQs IEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaXZFWFQgKGNvbnN0 IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3NFWFQgKEdMc2hvcnQsIEdM c2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3N2RVhUIChjb25z dCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3ViRVhUIChHTHVieXRl LCBHTHVieXRlLCBHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1YnZFWFQg KGNvbnN0IEdMdWJ5dGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWlFWFQgKEdM dWludCwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3VpdkVY VCAoY29uc3QgR0x1aW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3VzRVhUIChH THVzaG9ydCwgR0x1c2hvcnQsIEdMdXNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xv cjN1c3ZFWFQgKGNvbnN0IEdMdXNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9y UG9pbnRlckVYVCAoR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwoKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JFWFRQUk9DKSAoR0xieXRlIHJlZCwg R0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRB UllDT0xPUjNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMU0VDT05EQVJZQ09MT1IzREVYVFBST0MpIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu LCBHTGRvdWJsZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RW RVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09O REFSWUNPTE9SM0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg Ymx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNGVkVYVFBST0MpIChj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lF WFRQUk9DKSAoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTRVhUUFJPQykgKEdMc2hvcnQgcmVk LCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VD T05EQVJZQ09MT1IzU1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQkVYVFBST0MpIChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBn cmVlbiwgR0x1Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9S M1VCVkVYVFBST0MpIChjb25zdCBHTHVieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNF Q09OREFSWUNPTE9SM1VJRVhUUFJPQykgKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50 IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykg KGNvbnN0IEdMdWludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNV U0VYVFBST0MpIChHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTVkVYVFBST0MpIChjb25zdCBH THVzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJF WFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH THZvaWQgKnBvaW50ZXIpOwoKCgoKCmV4dGVybiB2b2lkIGdsVGV4dHVyZU5vcm1hbEVYVCAoR0xl bnVtKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTk9STUFMRVhUUFJPQykgKEdMZW51 bSBtb2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtLCBH TGludCAqLCBHTHNpemVpICosIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0VsZW1l bnRzRVhUIChHTGVudW0sIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICos IEdMc2l6ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0Mp IChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmlt Y291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElEUkFXRUxFTUVOVFNFWFRQUk9DKSAo R0xlbnVtIG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2 b2lkKiAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwoKCgoKCmV4dGVybiB2b2lkIGdsRm9n Q29vcmRmRVhUIChHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xGb2dDb29yZGZ2RVhUIChjb25zdCBH TGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZEVYVCAoR0xkb3VibGUpOwpleHRlcm4g dm9pZCBnbEZvZ0Nvb3JkZHZFWFQgKGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbEZv Z0Nvb3JkUG9pbnRlckVYVCAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7Cgp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRGRVhUUFJPQykgKEdMZmxvYXQgY29vcmQpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRGVkVYVFBST0MpIChjb25zdCBHTGZsb2F0ICpjb29y ZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29v cmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkREVkVYVFBST0MpIChjb25zdCBHTGRv dWJsZSAqY29vcmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRQT0lOVEVSRVhUUFJP QykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsK IyAzOTIyICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsVGFuZ2VudDNiRVhU IChHTGJ5dGUsIEdMYnl0ZSwgR0xieXRlKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2J2RVhUIChj b25zdCBHTGJ5dGUgKik7CmV4dGVybiB2b2lkIGdsVGFuZ2VudDNkRVhUIChHTGRvdWJsZSwgR0xk b3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2R2RVhUIChjb25zdCBHTGRv dWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2ZFWFQgKEdMZmxvYXQsIEdMZmxvYXQsIEdM ZmxvYXQpOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzZnZFWFQgKGNvbnN0IEdMZmxvYXQgKik7CmV4 dGVybiB2b2lkIGdsVGFuZ2VudDNpRVhUIChHTGludCwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZv aWQgZ2xUYW5nZW50M2l2RVhUIChjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50 M3NFWFQgKEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQz c3ZFWFQgKGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsQmlub3JtYWwzYkVYVCAoR0xi eXRlLCBHTGJ5dGUsIEdMYnl0ZSk7CmV4dGVybiB2b2lkIGdsQmlub3JtYWwzYnZFWFQgKGNvbnN0 IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNkRVhUIChHTGRvdWJsZSwgR0xkb3Vi bGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNkdkVYVCAoY29uc3QgR0xkb3Vi bGUgKik7CmV4dGVybiB2b2lkIGdsQmlub3JtYWwzZkVYVCAoR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCk7CmV4dGVybiB2b2lkIGdsQmlub3JtYWwzZnZFWFQgKGNvbnN0IEdMZmxvYXQgKik7CmV4 dGVybiB2b2lkIGdsQmlub3JtYWwzaUVYVCAoR0xpbnQsIEdMaW50LCBHTGludCk7CmV4dGVybiB2 b2lkIGdsQmlub3JtYWwzaXZFWFQgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEJpbm9y bWFsM3NFWFQgKEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbEJpbm9y bWFsM3N2RVhUIChjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFRhbmdlbnRQb2ludGVy RVhUIChHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5v cm1hbFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzQkVYVFBST0MpIChHTGJ5dGUgdHgsIEdMYnl0ZSB0eSwg R0xieXRlIHR6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzQlZFWFRQUk9DKSAoY29u c3QgR0xieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzREVYVFBST0MpIChH TGRvdWJsZSB0eCwgR0xkb3VibGUgdHksIEdMZG91YmxlIHR6KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFRBTkdFTlQzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMVEFOR0VOVDNGRVhUUFJPQykgKEdMZmxvYXQgdHgsIEdMZmxvYXQgdHksIEdMZmxv YXQgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNGVkVYVFBST0MpIChjb25zdCBH TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzSUVYVFBST0MpIChHTGlu dCB0eCwgR0xpbnQgdHksIEdMaW50IHR6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQz SVZFWFRQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VO VDNTRVhUUFJPQykgKEdMc2hvcnQgdHgsIEdMc2hvcnQgdHksIEdMc2hvcnQgdHopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNTVkVYVFBST0MpIChjb25zdCBHTHNob3J0ICp2KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0JFWFRQUk9DKSAoR0xieXRlIGJ4LCBHTGJ5dGUg YnksIEdMYnl0ZSBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNCVkVYVFBST0Mp IChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzREVYVFBS T0MpIChHTGRvdWJsZSBieCwgR0xkb3VibGUgYnksIEdMZG91YmxlIGJ6KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEJJTk9STUFMM0RWRVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0ZFWFRQUk9DKSAoR0xmbG9hdCBieCwgR0xmbG9hdCBi eSwgR0xmbG9hdCBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNGVkVYVFBST0Mp IChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0lFWFRQ Uk9DKSAoR0xpbnQgYngsIEdMaW50IGJ5LCBHTGludCBieik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xCSU5PUk1BTDNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xCSU5PUk1BTDNTRVhUUFJPQykgKEdMc2hvcnQgYngsIEdMc2hvcnQgYnksIEdMc2hvcnQg YnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzU1ZFWFRQUk9DKSAoY29uc3QgR0xz aG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UUE9JTlRFUkVYVFBST0MpIChH TGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdM c2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwojIDM5ODggIi4uL2luY2x1ZGUv R0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xGaW5pc2hUZXh0dXJlU1VOWCAodm9pZCk7Cgp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMRklOSVNIVEVYVFVSRVNVTlhQUk9DKSAodm9pZCk7CgoKCgoKZXh0 ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZhY3RvcmJTVU4gKEdMYnl0ZSk7CmV4dGVybiB2b2lkIGds R2xvYmFsQWxwaGFGYWN0b3JzU1VOIChHTHNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBo YUZhY3RvcmlTVU4gKEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZhY3RvcmZTVU4g KEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbEdsb2JhbEFscGhhRmFjdG9yZFNVTiAoR0xkb3VibGUp OwpleHRlcm4gdm9pZCBnbEdsb2JhbEFscGhhRmFjdG9ydWJTVU4gKEdMdWJ5dGUpOwpleHRlcm4g dm9pZCBnbEdsb2JhbEFscGhhRmFjdG9ydXNTVU4gKEdMdXNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xH bG9iYWxBbHBoYUZhY3RvcnVpU1VOIChHTHVpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdM T0JBTEFMUEhBRkFDVE9SQlNVTlBST0MpIChHTGJ5dGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SU1NVTlBST0MpIChHTHNob3J0IGZhY3Rvcik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUklTVU5QUk9DKSAoR0xpbnQgZmFjdG9y KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SRlNVTlBST0MpIChHTGZs b2F0IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkRTVU5Q Uk9DKSAoR0xkb3VibGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhB RkFDVE9SVUJTVU5QUk9DKSAoR0x1Ynl0ZSBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM R0xPQkFMQUxQSEFGQUNUT1JVU1NVTlBST0MpIChHTHVzaG9ydCBmYWN0b3IpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JVSVNVTlBST0MpIChHTHVpbnQgZmFjdG9yKTsK CgoKCgpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpU1VOIChHTHVpbnQpOwpleHRlcm4g dm9pZCBnbFJlcGxhY2VtZW50Q29kZXVzU1VOIChHTHVzaG9ydCk7CmV4dGVybiB2b2lkIGdsUmVw bGFjZW1lbnRDb2RldWJTVU4gKEdMdWJ5dGUpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29k ZXVpdlNVTiAoY29uc3QgR0x1aW50ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVz dlNVTiAoY29uc3QgR0x1c2hvcnQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWJ2 U1VOIChjb25zdCBHTHVieXRlICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZVBvaW50 ZXJTVU4gKEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2b2lkKiAqKTsKCnR5cGVkZWYgdm9pZCAo ICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVNVTlBST0MpIChHTHVpbnQgY29kZSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVU1NVTlBST0MpIChHTHVzaG9ydCBjb2RlKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVCU1VOUFJPQykgKEdMdWJ5dGUg Y29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVZTVU5QUk9DKSAo Y29uc3QgR0x1aW50ICpjb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09E RVVTVlNVTlBST0MpIChjb25zdCBHTHVzaG9ydCAqY29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xSRVBMQUNFTUVOVENPREVVQlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAqY29kZSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVQT0lOVEVSU1VOUFJPQykgKEdMZW51bSB0 eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CgoKCgoKZXh0ZXJu IHZvaWQgZ2xDb2xvcjR1YlZlcnRleDJmU1VOIChHTHVieXRlLCBHTHVieXRlLCBHTHVieXRlLCBH THVieXRlLCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1YlZlcnRleDJm dlNVTiAoY29uc3QgR0x1Ynl0ZSAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbENv bG9yNHViVmVydGV4M2ZTVU4gKEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdM ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbG9yNHViVmVydGV4M2Z2 U1VOIChjb25zdCBHTHVieXRlICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsQ29s b3IzZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmVmVydGV4M2Z2U1VOIChjb25zdCBH TGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2ZWZXJ0ZXgz ZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h dCk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwg Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRmTm9ybWFsM2ZWZXJ0ZXgzZlNV TiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwg R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsQ29sb3I0 Zk5vcm1hbDNmVmVydGV4M2Z2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwg Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmVmVydGV4M2ZTVU4gKEdM ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBn bFRleENvb3JkMmZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAq KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmVmVydGV4NGZTVU4gKEdMZmxvYXQsIEdMZmxvYXQs IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpl eHRlcm4gdm9pZCBnbFRleENvb3JkNGZWZXJ0ZXg0ZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29u c3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmQ29sb3I0dWJWZXJ0ZXgzZlNV TiAoR0xmbG9hdCwgR0xmbG9hdCwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwg R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZkNvbG9y NHViVmVydGV4M2Z2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMdWJ5dGUgKiwgY29uc3Qg R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmQ29sb3IzZlZlcnRleDNmU1VOIChH TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmQ29sb3IzZlZlcnRleDNmdlNV TiAoY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4 dGVybiB2b2lkIGdsVGV4Q29vcmQyZk5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQp OwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3QgR0xm bG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGds VGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJm Q29sb3I0Zk5vcm1hbDNmVmVydGV4M2Z2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxv YXQgKiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRl eENvb3JkNGZDb2xvcjRmTm9ybWFsM2ZWZXJ0ZXg0ZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7 CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZkNvbG9yNGZOb3JtYWwzZlZlcnRleDRmdlNVTiAoY29u c3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xm bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVZlcnRleDNmU1VOIChHTHVp bnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50 Q29kZXVpVmVydGV4M2Z2U1VOIChjb25zdCBHTHVpbnQgKiwgY29uc3QgR0xmbG9hdCAqKTsKZXh0 ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aUNvbG9yNHViVmVydGV4M2ZTVU4gKEdMdWludCwg R0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCk7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlDb2xvcjR1YlZlcnRleDNmdlNV TiAoY29uc3QgR0x1aW50ICosIGNvbnN0IEdMdWJ5dGUgKiwgY29uc3QgR0xmbG9hdCAqKTsKZXh0 ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aUNvbG9yM2ZWZXJ0ZXgzZlNVTiAoR0x1aW50LCBH TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0 ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aUNvbG9yM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdM dWludCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGds UmVwbGFjZW1lbnRDb2RldWlOb3JtYWwzZlZlcnRleDNmU1VOIChHTHVpbnQsIEdMZmxvYXQsIEdM ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBn bFJlcGxhY2VtZW50Q29kZXVpTm9ybWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMdWludCAqLCBj b25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1l bnRDb2RldWlDb2xvcjRmTm9ybWFsM2ZWZXJ0ZXgzZlNVTiAoR0x1aW50LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0 LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aUNvbG9y NGZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3QgR0x1aW50ICosIGNvbnN0IEdMZmxvYXQgKiwg Y29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2Vt ZW50Q29kZXVpVGV4Q29vcmQyZlZlcnRleDNmU1VOIChHTHVpbnQsIEdMZmxvYXQsIEdMZmxvYXQs IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29k ZXVpVGV4Q29vcmQyZlZlcnRleDNmdlNVTiAoY29uc3QgR0x1aW50ICosIGNvbnN0IEdMZmxvYXQg KiwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENv b3JkMmZOb3JtYWwzZlZlcnRleDNmU1VOIChHTHVpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4g dm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpVGV4Q29vcmQyZk5vcm1hbDNmVmVydGV4M2Z2U1VOIChj b25zdCBHTHVpbnQgKiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdM ZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlUZXhDb29yZDJmQ29sb3I0 Zk5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMdWludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwg R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlU ZXhDb29yZDJmQ29sb3I0Zk5vcm1hbDNmVmVydGV4M2Z2U1VOIChjb25zdCBHTHVpbnQgKiwgY29u c3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xm bG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDJGU1VOUFJPQykg KEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBH TGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJURVgyRlZTVU5QUk9D KSAoY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xDT0xPUjRVQlZFUlRFWDNGU1VOUFJPQykgKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVi eXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTHVieXRl ICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SM0ZWRVJU RVgzRlNVTlBST0MpIChHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IHgs IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SM0ZWRVJU RVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgbngsIEdM ZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xm bG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRG Tk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBi LCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQg eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0Rk5P Uk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQg Km4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRlZF UlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQg eSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZWRVJURVgzRlZT VU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMVEVYQ09PUkQ0RlZFUlRFWDRGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9h dCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg eiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JENEZWRVJURVg0RlZT VU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNFVCVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBz LCBHTGZsb2F0IHQsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwg R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xU RVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNv bnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM VEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwg R0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGQ09MT1IzRlZFUlRFWDNG VlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xm bG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZWRVJURVgz RlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwg R0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xm bG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdM ZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZs b2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xm bG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9S NEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xm bG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYNEZTVU5QUk9DKSAoR0xm bG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcCwgR0xmbG9hdCBxLCBHTGZsb2F0IHIsIEdMZmxv YXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxv YXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYNEZWU1VOUFJP QykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpu LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09E RVVJVkVSVEVYM0ZTVU5QUk9DKSAoR0x1aW50IHJjLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm bG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVkVSVEVYM0ZW U1VOUFJPQykgKGNvbnN0IEdMdWludCAqcmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRVQlZFUlRFWDNGU1VOUFJPQykgKEdM dWludCByYywgR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5dGUgYiwgR0x1Ynl0ZSBhLCBHTGZs b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExB Q0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0x1aW50ICpyYywg Y29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xSRVBMQUNFTUVOVENPREVVSUNPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChHTHVpbnQgcmMsIEdM ZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZs b2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVS VEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqcmMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0 IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlOT1JN QUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMdWludCByYywgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwg R0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSU5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNv bnN0IEdMdWludCAqcmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRGTk9STUFMM0ZWRVJURVgz RlNVTlBST0MpIChHTHVpbnQgcmMsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdM ZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBH TGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENP REVVSUNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTHVpbnQgKnJjLCBj b25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRlZFUlRFWDNGU1VO UFJPQykgKEdMdWludCByYywgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgeCwgR0xmbG9h dCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlU RVhDT09SRDJGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqcmMsIGNvbnN0IEdMZmxv YXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VN RU5UQ09ERVVJVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0x1aW50IHJjLCBH TGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwg R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xS RVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25z dCBHTHVpbnQgKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3Qg R0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENP T1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTHVpbnQgcmMsIEdMZmxvYXQg cywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEs IEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5 LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhD T09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqcmMs IGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBj b25zdCBHTGZsb2F0ICp2KTsKCgoKCgpleHRlcm4gdm9pZCBnbEJsZW5kRnVuY1NlcGFyYXRlRVhU IChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pOwoKdHlwZWRlZiB2b2lkICggKiBQRk5H TEJMRU5ERlVOQ1NFUEFSQVRFRVhUUFJPQykgKEdMZW51bSBzZmFjdG9yUkdCLCBHTGVudW0gZGZh Y3RvclJHQiwgR0xlbnVtIHNmYWN0b3JBbHBoYSwgR0xlbnVtIGRmYWN0b3JBbHBoYSk7CgoKCgoK ZXh0ZXJuIHZvaWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUlOR1IgKEdMZW51bSwgR0xlbnVtLCBHTGVu dW0sIEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJTkdS UFJPQykgKEdMZW51bSBzZmFjdG9yUkdCLCBHTGVudW0gZGZhY3RvclJHQiwgR0xlbnVtIHNmYWN0 b3JBbHBoYSwgR0xlbnVtIGRmYWN0b3JBbHBoYSk7CiMgNDE3NiAiLi4vaW5jbHVkZS9HTC9nbGV4 dC5oIgpleHRlcm4gdm9pZCBnbFZlcnRleFdlaWdodGZFWFQgKEdMZmxvYXQpOwpleHRlcm4gdm9p ZCBnbFZlcnRleFdlaWdodGZ2RVhUIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFZl cnRleFdlaWdodFBvaW50ZXJFWFQgKEdMc2l6ZWksIEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2 b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFdFSUdIVEZFWFRQUk9DKSAoR0xm bG9hdCB3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYV0VJR0hURlZFWFRQUk9D KSAoY29uc3QgR0xmbG9hdCAqd2VpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFdF SUdIVFBPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBz dHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgNDE5MiAiLi4vaW5jbHVkZS9HTC9nbGV4 dC5oIgpleHRlcm4gdm9pZCBnbEZsdXNoVmVydGV4QXJyYXlSYW5nZU5WICh2b2lkKTsKZXh0ZXJu IHZvaWQgZ2xWZXJ0ZXhBcnJheVJhbmdlTlYgKEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKCnR5 cGVkZWYgdm9pZCAoICogUEZOR0xGTFVTSFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpICh2b2lkKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpIChHTHNpemVpIGxl bmd0aCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKCgoKCgpleHRlcm4gdm9pZCBnbENvbWJpbmVy UGFyYW1ldGVyZnZOViAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbENv bWJpbmVyUGFyYW1ldGVyZk5WIChHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbWJp bmVyUGFyYW1ldGVyaXZOViAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xD b21iaW5lclBhcmFtZXRlcmlOViAoR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsQ29tYmlu ZXJJbnB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVt KTsKZXh0ZXJuIHZvaWQgZ2xDb21iaW5lck91dHB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVt LCBHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMYm9vbGVhbiwgR0xib29sZWFuLCBH TGJvb2xlYW4pOwpleHRlcm4gdm9pZCBnbEZpbmFsQ29tYmluZXJJbnB1dE5WIChHTGVudW0sIEdM ZW51bSwgR0xlbnVtLCBHTGVudW0pOwpleHRlcm4gdm9pZCBnbEdldENvbWJpbmVySW5wdXRQYXJh bWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4 dGVybiB2b2lkIGdsR2V0Q29tYmluZXJJbnB1dFBhcmFtZXRlcml2TlYgKEdMZW51bSwgR0xlbnVt LCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29tYmluZXJPdXRw dXRQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRl cm4gdm9pZCBnbEdldENvbWJpbmVyT3V0cHV0UGFyYW1ldGVyaXZOViAoR0xlbnVtLCBHTGVudW0s IEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0RmluYWxDb21iaW5lcklucHV0UGFy YW1ldGVyZnZOViAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0 RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyaXZOViAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICop OwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSUEFSQU1FVEVSRlZOVlBST0MpIChHTGVu dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD T01CSU5FUlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJJVk5WUFJPQykgKEdMZW51bSBw bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5F UlBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBw b3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdM ZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUk9VVFBV VE5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBhYk91dHB1dCwg R0xlbnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0LCBHTGVudW0gc2NhbGUsIEdMZW51bSBi aWFzLCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJvb2xlYW4gY2REb3RQcm9kdWN0LCBHTGJv b2xlYW4gbXV4U3VtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZJTkFMQ09NQklORVJJTlBVVE5W UFJPQykgKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlucHV0LCBHTGVudW0gbWFwcGluZywgR0xl bnVtIGNvbXBvbmVudFVzYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJTkVSSU5Q VVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51 bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMR0VUQ09NQklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHN0YWdl LCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJPVVRQVVRQQVJBTUVURVJG Vk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBwbmFtZSwgR0xm bG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJTkVST1VUUFVUUEFS QU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0gcG5h bWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURklOQUxDT01CSU5F UklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFtZSwg R0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZJTkFMQ09NQklORVJJ TlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdM aW50ICpwYXJhbXMpOwojIDQyNTAgIi4uL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQg Z2xSZXNpemVCdWZmZXJzTUVTQSAodm9pZCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVTSVpF QlVGRkVSU01FU0FQUk9DKSAodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZE1F U0EgKEdMZG91YmxlLCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmR2TUVTQSAo Y29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMmZNRVNBIChHTGZsb2F0 LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZnZNRVNBIChjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJpTUVTQSAoR0xpbnQsIEdMaW50KTsKZXh0ZXJu IHZvaWQgZ2xXaW5kb3dQb3MyaXZNRVNBIChjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xX aW5kb3dQb3Myc01FU0EgKEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1Bv czJzdk1FU0EgKGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2RNRVNB IChHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3Mz ZHZNRVNBIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZk1FU0Eg KEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNmdk1F U0EgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2lNRVNBIChHTGlu dCwgR0xpbnQsIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzaXZNRVNBIChjb25zdCBH TGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3Mzc01FU0EgKEdMc2hvcnQsIEdMc2hvcnQs IEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNzdk1FU0EgKGNvbnN0IEdMc2hvcnQg Kik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGRNRVNBIChHTGRvdWJsZSwgR0xkb3VibGUsIEdM ZG91YmxlLCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGR2TUVTQSAoY29uc3Qg R0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGZNRVNBIChHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0ZnZNRVNBIChj b25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczRpTUVTQSAoR0xpbnQsIEdM aW50LCBHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczRpdk1FU0EgKGNvbnN0 IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczRzTUVTQSAoR0xzaG9ydCwgR0xzaG9y dCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNHN2TUVTQSAoY29u c3QgR0xzaG9ydCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyRE1FU0FQUk9D KSAoR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQ T1MyRFZNRVNBUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFdJTkRPV1BPUzJGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xXSU5ET1dQT1MyRlZNRVNBUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMklNRVNBUFJPQykgKEdMaW50IHgsIEdMaW50IHkp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMklWTUVTQVBST0MpIChjb25zdCBHTGlu dCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyU01FU0FQUk9DKSAoR0xzaG9y dCB4LCBHTHNob3J0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMlNWTUVTQVBS T0MpIChjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNE TUVTQVBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFdJTkRPV1BPUzNEVk1FU0FQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0ZNRVNBUFJPQykgKEdMZmxvYXQgeCwgR0xm bG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0ZWTUVT QVBST0MpIChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP UzNJTUVTQVBST0MpIChHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFdJTkRPV1BPUzNJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMV0lORE9XUE9TM1NNRVNBUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH THNob3J0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM1NWTUVTQVBST0MpIChj b25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRETUVTQVBS T0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzREVk1FU0FQUk9DKSAoY29uc3QgR0xkb3VibGUg KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNEZNRVNBUFJPQykgKEdMZmxvYXQg eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xXSU5ET1dQT1M0RlZNRVNBUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMV0lORE9XUE9TNElNRVNBUFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHos IEdMaW50IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNElWTUVTQVBST0MpIChj b25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0U01FU0FQUk9D KSAoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFdJTkRPV1BPUzRTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CiMg NDMxNiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbE11bHRpTW9kZURyYXdB cnJheXNJQk0gKEdMZW51bSwgY29uc3QgR0xpbnQgKiwgY29uc3QgR0xzaXplaSAqLCBHTHNpemVp LCBHTGludCk7CmV4dGVybiB2b2lkIGdsTXVsdGlNb2RlRHJhd0VsZW1lbnRzSUJNIChjb25zdCBH TGVudW0gKiwgY29uc3QgR0xzaXplaSAqLCBHTGVudW0sIGNvbnN0IEdMdm9pZCogKiwgR0xzaXpl aSwgR0xpbnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJTU9ERURSQVdBUlJBWVNJQk1Q Uk9DKSAoR0xlbnVtIG1vZGUsIGNvbnN0IEdMaW50ICpmaXJzdCwgY29uc3QgR0xzaXplaSAqY291 bnQsIEdMc2l6ZWkgcHJpbWNvdW50LCBHTGludCBtb2Rlc3RyaWRlKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTE1VTFRJTU9ERURSQVdFTEVNRU5UU0lCTVBST0MpIChjb25zdCBHTGVudW0gKm1vZGUs IGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5kaWNl cywgR0xzaXplaSBwcmltY291bnQsIEdMaW50IG1vZGVzdHJpZGUpOwoKCgoKCmV4dGVybiB2b2lk IGdsQ29sb3JQb2ludGVyTGlzdElCTSAoR0xpbnQsIEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMdm9p ZCogKiwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yUG9pbnRlckxpc3RJQk0g KEdMaW50LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICosIEdMaW50KTsKZXh0ZXJuIHZv aWQgZ2xFZGdlRmxhZ1BvaW50ZXJMaXN0SUJNIChHTGludCwgY29uc3QgR0xib29sZWFuKiAqLCBH TGludCk7CmV4dGVybiB2b2lkIGdsRm9nQ29vcmRQb2ludGVyTGlzdElCTSAoR0xlbnVtLCBHTGlu dCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2b2lkIGdsSW5kZXhQb2ludGVyTGlz dElCTSAoR0xlbnVtLCBHTGludCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2b2lk IGdsTm9ybWFsUG9pbnRlckxpc3RJQk0gKEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMdm9pZCogKiwg R0xpbnQpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkUG9pbnRlckxpc3RJQk0gKEdMaW50LCBHTGVu dW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICosIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhQ b2ludGVyTGlzdElCTSAoR0xpbnQsIEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMdm9pZCogKiwgR0xp bnQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xp bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRl ciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9S UE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlk ZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEVER0VGTEFHUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc3RyaWRlLCBjb25z dCBHTGJvb2xlYW4qICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMRk9HQ09PUkRQT0lOVEVSTElTVElCTVBST0MpIChHTGVudW0gdHlwZSwgR0xpbnQgc3Ry aWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMSU5ERVhQT0lOVEVSTElTVElCTVBST0MpIChHTGVudW0gdHlwZSwgR0xpbnQg c3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMTk9STUFMUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdM aW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc2l6 ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xp bnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJMSVNUSUJN UFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9p ZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CiMgNDM3MiAiLi4vaW5jbHVkZS9HTC9nbGV4 dC5oIgpleHRlcm4gdm9pZCBnbFRidWZmZXJNYXNrM0RGWCAoR0x1aW50KTsKCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xUQlVGRkVSTUFTSzNERlhQUk9DKSAoR0x1aW50IG1hc2spOwoKCgoKCmV4dGVy biB2b2lkIGdsU2FtcGxlTWFza0VYVCAoR0xjbGFtcGYsIEdMYm9vbGVhbik7CmV4dGVybiB2b2lk IGdsU2FtcGxlUGF0dGVybkVYVCAoR0xlbnVtKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1Q TEVNQVNLRVhUUFJPQykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFNBTVBMRVBBVFRFUk5FWFRQUk9DKSAoR0xlbnVtIHBhdHRlcm4pOwoj IDQ0MDYgIi4uL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xUZXh0dXJlQ29sb3JN YXNrU0dJUyAoR0xib29sZWFuLCBHTGJvb2xlYW4sIEdMYm9vbGVhbiwgR0xib29sZWFuKTsKCnR5 cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFQ09MT1JNQVNLU0dJU1BST0MpIChHTGJvb2xlYW4g cmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEpOwoK CgoKCmV4dGVybiB2b2lkIGdsSWdsb29JbnRlcmZhY2VTR0lYIChHTGVudW0sIGNvbnN0IEdMdm9p ZCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xJR0xPT0lOVEVSRkFDRVNHSVhQUk9DKSAoR0xl bnVtIHBuYW1lLCBjb25zdCBHTHZvaWQgKnBhcmFtcyk7CiMgNDQzMCAiLi4vaW5jbHVkZS9HTC9n bGV4dC5oIgpleHRlcm4gdm9pZCBnbERlbGV0ZUZlbmNlc05WIChHTHNpemVpLCBjb25zdCBHTHVp bnQgKik7CmV4dGVybiB2b2lkIGdsR2VuRmVuY2VzTlYgKEdMc2l6ZWksIEdMdWludCAqKTsKZXh0 ZXJuIEdMYm9vbGVhbiBnbElzRmVuY2VOViAoR0x1aW50KTsKZXh0ZXJuIEdMYm9vbGVhbiBnbFRl c3RGZW5jZU5WIChHTHVpbnQpOwpleHRlcm4gdm9pZCBnbEdldEZlbmNlaXZOViAoR0x1aW50LCBH TGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEZpbmlzaEZlbmNlTlYgKEdMdWludCk7CmV4 dGVybiB2b2lkIGdsU2V0RmVuY2VOViAoR0x1aW50LCBHTGVudW0pOwoKdHlwZWRlZiB2b2lkICgg KiBQRk5HTERFTEVURUZFTkNFU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmZW5j ZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VORkVOQ0VTTlZQUk9DKSAoR0xzaXplaSBuLCBH THVpbnQgKmZlbmNlcyk7CnR5cGVkZWYgR0xib29sZWFuICggKiBQRk5HTElTRkVOQ0VOVlBST0Mp IChHTHVpbnQgZmVuY2UpOwp0eXBlZGVmIEdMYm9vbGVhbiAoICogUEZOR0xURVNURkVOQ0VOVlBS T0MpIChHTHVpbnQgZmVuY2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURkVOQ0VJVk5WUFJP QykgKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEZJTklTSEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFNFVEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0 aW9uKTsKCgoKCgpleHRlcm4gdm9pZCBnbE1hcENvbnRyb2xQb2ludHNOViAoR0xlbnVtLCBHTHVp bnQsIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgR0xpbnQsIEdMaW50LCBHTGJvb2xlYW4sIGNv bnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xNYXBQYXJhbWV0ZXJpdk5WIChHTGVudW0sIEdM ZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsTWFwUGFyYW1ldGVyZnZOViAoR0xl bnVtLCBHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0TWFwQ29udHJv bFBvaW50c05WIChHTGVudW0sIEdMdWludCwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTGJv b2xlYW4sIEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXBQYXJhbWV0ZXJpdk5WIChHTGVu dW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0TWFwUGFyYW1ldGVyZnZOViAo R0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0TWFwQXR0cmliUGFy YW1ldGVyaXZOViAoR0xlbnVtLCBHTHVpbnQsIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lk IGdsR2V0TWFwQXR0cmliUGFyYW1ldGVyZnZOViAoR0xlbnVtLCBHTHVpbnQsIEdMZW51bSwgR0xm bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsTWFwc05WIChHTGVudW0sIEdMZW51bSk7Cgp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMTUFQQ09OVFJPTFBPSU5UU05WUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMdWludCBpbmRleCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgdXN0cmlkZSwgR0xzaXplaSB2c3Ry aWRlLCBHTGludCB1b3JkZXIsIEdMaW50IHZvcmRlciwgR0xib29sZWFuIHBhY2tlZCwgY29uc3Qg R0x2b2lkICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTUFQUEFSQU1FVEVSSVZOVlBS T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMTUFQUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xHRVRNQVBDT05UUk9MUE9JTlRTTlZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu ZGV4LCBHTGVudW0gdHlwZSwgR0xzaXplaSB1c3RyaWRlLCBHTHNpemVpIHZzdHJpZGUsIEdMYm9v bGVhbiBwYWNrZWQsIEdMdm9pZCAqcG9pbnRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1B UFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAq cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1BUFBBUkFNRVRFUkZWTlZQUk9DKSAo R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VUTUFQQVRUUklCUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gdGFyZ2V0 LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xHRVRNQVBBVFRSSUJQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMRVZBTE1BUFNOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7 CiMgNDQ3OCAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbENvbWJpbmVyU3Rh Z2VQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJu IHZvaWQgZ2xHZXRDb21iaW5lclN0YWdlUGFyYW1ldGVyZnZOViAoR0xlbnVtLCBHTGVudW0sIEdM ZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJTVEFHRVBBUkFNRVRFUkZW TlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFt cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT01CSU5FUlNUQUdFUEFSQU1FVEVSRlZOVlBS T0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKIyA0NTA4 ICIuLi9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiBHTGJvb2xlYW4gZ2xBcmVQcm9ncmFtc1Jl c2lkZW50TlYgKEdMc2l6ZWksIGNvbnN0IEdMdWludCAqLCBHTGJvb2xlYW4gKik7CmV4dGVybiB2 b2lkIGdsQmluZFByb2dyYW1OViAoR0xlbnVtLCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbERlbGV0 ZVByb2dyYW1zTlYgKEdMc2l6ZWksIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xFeGVj dXRlUHJvZ3JhbU5WIChHTGVudW0sIEdMdWludCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZv aWQgZ2xHZW5Qcm9ncmFtc05WIChHTHNpemVpLCBHTHVpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0 UHJvZ3JhbVBhcmFtZXRlcmR2TlYgKEdMZW51bSwgR0x1aW50LCBHTGVudW0sIEdMZG91YmxlICop OwpleHRlcm4gdm9pZCBnbEdldFByb2dyYW1QYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMdWludCwg R0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldFByb2dyYW1pdk5WIChHTHVpbnQs IEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0UHJvZ3JhbVN0cmluZ05WIChHTHVp bnQsIEdMZW51bSwgR0x1Ynl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUcmFja01hdHJpeGl2TlYg KEdMZW51bSwgR0x1aW50LCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEdldFZlcnRl eEF0dHJpYmR2TlYgKEdMdWludCwgR0xlbnVtLCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xH ZXRWZXJ0ZXhBdHRyaWJmdk5WIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZv aWQgZ2xHZXRWZXJ0ZXhBdHRyaWJpdk5WIChHTHVpbnQsIEdMZW51bSwgR0xpbnQgKik7CmV4dGVy biB2b2lkIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZOViAoR0x1aW50LCBHTGVudW0sIEdMdm9p ZCogKik7CmV4dGVybiBHTGJvb2xlYW4gZ2xJc1Byb2dyYW1OViAoR0x1aW50KTsKZXh0ZXJuIHZv aWQgZ2xMb2FkUHJvZ3JhbU5WIChHTGVudW0sIEdMdWludCwgR0xzaXplaSwgY29uc3QgR0x1Ynl0 ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtUGFyYW1ldGVyNGROViAoR0xlbnVtLCBHTHVpbnQs IEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xQ cm9ncmFtUGFyYW1ldGVyNGR2TlYgKEdMZW51bSwgR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsK ZXh0ZXJuIHZvaWQgZ2xQcm9ncmFtUGFyYW1ldGVyNGZOViAoR0xlbnVtLCBHTHVpbnQsIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFByb2dyYW1QYXJh bWV0ZXI0ZnZOViAoR0xlbnVtLCBHTHVpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsUHJvZ3JhbVBhcmFtZXRlcnM0ZHZOViAoR0xlbnVtLCBHTHVpbnQsIEdMdWludCwgY29uc3Qg R0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsUHJvZ3JhbVBhcmFtZXRlcnM0ZnZOViAoR0xlbnVt LCBHTHVpbnQsIEdMdWludCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xSZXF1ZXN0 UmVzaWRlbnRQcm9ncmFtc05WIChHTHNpemVpLCBjb25zdCBHTHVpbnQgKik7CmV4dGVybiB2b2lk IGdsVHJhY2tNYXRyaXhOViAoR0xlbnVtLCBHTHVpbnQsIEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJu IHZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyTlYgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xz aXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFkTlYgKEdM dWludCwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFkdk5WIChHTHVpbnQs IGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFmTlYgKEdMdWlu dCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMWZ2TlYgKEdMdWludCwgY29u c3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIxc05WIChHTHVpbnQsIEdM c2hvcnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjFzdk5WIChHTHVpbnQsIGNvbnN0IEdM c2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmROViAoR0x1aW50LCBHTGRvdWJs ZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjJkdk5WIChHTHVpbnQsIGNv bnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjJmTlYgKEdMdWludCwg R0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliMmZ2TlYgKEdMdWlu dCwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIyc05WIChHTHVp bnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjJzdk5WIChH THVpbnQsIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM2ROViAo R0x1aW50LCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0 ZXhBdHRyaWIzZHZOViAoR0x1aW50LCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xW ZXJ0ZXhBdHRyaWIzZk5WIChHTHVpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRl cm4gdm9pZCBnbFZlcnRleEF0dHJpYjNmdk5WIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4 dGVybiB2b2lkIGdsVmVydGV4QXR0cmliM3NOViAoR0x1aW50LCBHTHNob3J0LCBHTHNob3J0LCBH THNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWIzc3ZOViAoR0x1aW50LCBjb25zdCBH THNob3J0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjRkTlYgKEdMdWludCwgR0xkb3Vi bGUsIEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0 dHJpYjRkdk5WIChHTHVpbnQsIGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZlcnRl eEF0dHJpYjRmTlYgKEdMdWludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7 CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNGZ2TlYgKEdMdWludCwgY29uc3QgR0xmbG9hdCAq KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWI0c05WIChHTHVpbnQsIEdMc2hvcnQsIEdMc2hv cnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYjRzdk5WIChH THVpbnQsIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliNHViTlYg KEdMdWludCwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSk7CmV4dGVybiB2b2lk IGdsVmVydGV4QXR0cmliNHVidk5WIChHTHVpbnQsIGNvbnN0IEdMdWJ5dGUgKik7CmV4dGVybiB2 b2lkIGdsVmVydGV4QXR0cmliczFkdk5WIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZG91Ymxl ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnMxZnZOViAoR0x1aW50LCBHTHNpemVpLCBj b25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnMxc3ZOViAoR0x1aW50 LCBHTHNpemVpLCBjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnMy ZHZOViAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xW ZXJ0ZXhBdHRyaWJzMmZ2TlYgKEdMdWludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0 ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJzMnN2TlYgKEdMdWludCwgR0xzaXplaSwgY29uc3QgR0xz aG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJzM2R2TlYgKEdMdWludCwgR0xzaXpl aSwgY29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0cmliczNmdk5WIChH THVpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4QXR0 cmliczNzdk5WIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lk IGdsVmVydGV4QXR0cmliczRkdk5WIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZG91YmxlICop OwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnM0ZnZOViAoR0x1aW50LCBHTHNpemVpLCBjb25z dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnM0c3ZOViAoR0x1aW50LCBH THNpemVpLCBjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleEF0dHJpYnM0dWJ2 TlYgKEdMdWludCwgR0xzaXplaSwgY29uc3QgR0x1Ynl0ZSAqKTsKCnR5cGVkZWYgR0xib29sZWFu ICggKiBQRk5HTEFSRVBST0dSQU1TUkVTSURFTlROVlBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdM dWludCAqcHJvZ3JhbXMsIEdMYm9vbGVhbiAqcmVzaWRlbmNlcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xCSU5EUFJPR1JBTU5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xERUxFVEVQUk9HUkFNU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3Qg R0x1aW50ICpwcm9ncmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xFWEVDVVRFUFJPR1JBTU5W UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFTlBST0dSQU1TTlZQUk9DKSAoR0xzaXplaSBuLCBHTHVp bnQgKnByb2dyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFBST0dSQU1QQVJBTUVURVJE Vk5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGRv dWJsZSAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFBST0dSQU1QQVJBTUVURVJG Vk5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUFJPR1JBTUlWTlZQUk9DKSAo R0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMR0VUUFJPR1JBTVNUUklOR05WUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBH THVieXRlICpwcm9ncmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFRSQUNLTUFUUklYSVZO VlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYWRkcmVzcywgR0xlbnVtIHBuYW1lLCBHTGlu dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFZFUlRFWEFUVFJJQkRWTlZQUk9D KSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMR0VUVkVSVEVYQVRUUklCRlZOVlBST0MpIChHTHVpbnQgaW5kZXgsIEdM ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFZF UlRFWEFUVFJJQklWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpw YXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUVkVSVEVYQVRUUklCUE9JTlRFUlZOVlBS T0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiAqcG9pbnRlcik7CnR5cGVk ZWYgR0xib29sZWFuICggKiBQRk5HTElTUFJPR1JBTU5WUFJPQykgKEdMdWludCBpZCk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xMT0FEUFJPR1JBTU5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWlu dCBpZCwgR0xzaXplaSBsZW4sIGNvbnN0IEdMdWJ5dGUgKnByb2dyYW0pOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMUFJPR1JBTVBBUkFNRVRFUjRETlZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50 IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFBST0dSQU1QQVJBTUVURVI0RFZOVlBST0MpIChHTGVudW0g dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFBST0dSQU1QQVJBTUVURVI0Rk5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBp bmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFBST0dSQU1QQVJBTUVURVI0RlZOVlBST0MpIChHTGVudW0gdGFyZ2V0 LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UFJPR1JBTVBBUkFNRVRFUlM0RFZOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgs IEdMdWludCBjb3VudCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UFJPR1JBTVBBUkFNRVRFUlM0RlZOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgs IEdMdWludCBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xS RVFVRVNUUkVTSURFTlRQUk9HUkFNU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpw cm9ncmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUUkFDS01BVFJJWE5WUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMdWludCBhZGRyZXNzLCBHTGVudW0gbWF0cml4LCBHTGVudW0gdHJhbnNmb3Jt KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQlBPSU5URVJOVlBST0MpIChHTHVp bnQgaW5kZXgsIEdMaW50IGZzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0 IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIxRE5W UFJPQykgKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xW RVJURVhBVFRSSUIxRFZOVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjFGTlZQUk9DKSAoR0x1aW50IGluZGV4 LCBHTGZsb2F0IHgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCMUZWTlZQUk9D KSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFZFUlRFWEFUVFJJQjFTTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTHNob3J0IHgpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCMVNWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25z dCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjJETlZQUk9D KSAoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFZFUlRFWEFUVFJJQjJEVk5WUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xkb3Vi bGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCMkZOVlBST0MpIChHTHVp bnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZF UlRFWEFUVFJJQjJGVk5WUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUIyU05WUFJPQykgKEdMdWludCBpbmRleCwg R0xzaG9ydCB4LCBHTHNob3J0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklC MlNWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFZFUlRFWEFUVFJJQjNETlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4 LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFU VFJJQjNEVk5WUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCM0ZOVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxv YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVY QVRUUklCM0ZWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjNTTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTHNo b3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRF WEFUVFJJQjNTVk5WUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUI0RE5WUFJPQykgKEdMdWludCBpbmRleCwgR0xk b3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xWRVJURVhBVFRSSUI0RFZOVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdM ZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQjRGTlZQUk9DKSAo R0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCNEZWTlZQUk9DKSAoR0x1aW50IGlu ZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJ QjRTTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6 LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCNFNWTlZQUk9D KSAoR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFZFUlRFWEFUVFJJQjRVQk5WUFJPQykgKEdMdWludCBpbmRleCwgR0x1Ynl0ZSB4LCBHTHVieXRl IHksIEdMdWJ5dGUgeiwgR0x1Ynl0ZSB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFU VFJJQjRVQlZOVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCUzFEVk5WUFJPQykgKEdMdWludCBpbmRleCwgR0xz aXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVS VEVYQVRUUklCUzFGVk5WUFJPQykgKEdMdWludCBpbmRleCwgR0xzaXplaSBjb3VudCwgY29uc3Qg R0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUJTMVNWTlZQUk9D KSAoR0x1aW50IGluZGV4LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQlMyRFZOVlBST0MpIChHTHVpbnQgaW5kZXgsIEdM c2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZF UlRFWEFUVFJJQlMyRlZOVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgY291bnQsIGNvbnN0 IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCUzJTVk5WUFJP QykgKEdMdWludCBpbmRleCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xzaG9ydCAqdik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUJTM0RWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBH THNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xW RVJURVhBVFRSSUJTM0ZWTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTHNpemVpIGNvdW50LCBjb25z dCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQlMzU1ZOVlBS T0MpIChHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVRUUklCUzREVk5WUFJPQykgKEdMdWludCBpbmRleCwg R0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM VkVSVEVYQVRUUklCUzRGVk5WUFJPQykgKEdMdWludCBpbmRleCwgR0xzaXplaSBjb3VudCwgY29u c3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBVFRSSUJTNFNWTlZQ Uk9DKSAoR0x1aW50IGluZGV4LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHNob3J0ICp2KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFUVFJJQlM0VUJWTlZQUk9DKSAoR0x1aW50IGluZGV4 LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVieXRlICp2KTsKIyA0NjY2ICIuLi9pbmNsdWRlL0dM L2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsVGV4QnVtcFBhcmFtZXRlcml2QVRJIChHTGVudW0sIGNv bnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFRleEJ1bXBQYXJhbWV0ZXJmdkFUSSAoR0xlbnVt LCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldFRleEJ1bXBQYXJhbWV0ZXJpdkFU SSAoR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhCdW1wUGFyYW1ldGVyZnZB VEkgKEdMZW51bSwgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhCVU1QUEFS QU1FVEVSSVZBVElQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMVEVYQlVNUFBBUkFNRVRFUkZWQVRJUFJPQykgKEdMZW51bSBwbmFt ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUVEVYQlVN UFBBUkFNRVRFUklWQVRJUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtKTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEdFVFRFWEJVTVBQQVJBTUVURVJGVkFUSVBST0MpIChHTGVudW0gcG5h bWUsIEdMZmxvYXQgKnBhcmFtKTsKCgoKCgpleHRlcm4gR0x1aW50IGdsR2VuRnJhZ21lbnRTaGFk ZXJzQVRJIChHTHVpbnQpOwpleHRlcm4gdm9pZCBnbEJpbmRGcmFnbWVudFNoYWRlckFUSSAoR0x1 aW50KTsKZXh0ZXJuIHZvaWQgZ2xEZWxldGVGcmFnbWVudFNoYWRlckFUSSAoR0x1aW50KTsKZXh0 ZXJuIHZvaWQgZ2xCZWdpbkZyYWdtZW50U2hhZGVyQVRJICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2xF bmRGcmFnbWVudFNoYWRlckFUSSAodm9pZCk7CmV4dGVybiB2b2lkIGdsUGFzc1RleENvb3JkQVRJ IChHTHVpbnQsIEdMdWludCwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xTYW1wbGVNYXBBVEkgKEdM dWludCwgR0x1aW50LCBHTGVudW0pOwpleHRlcm4gdm9pZCBnbENvbG9yRnJhZ21lbnRPcDFBVEkg KEdMZW51bSwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCk7 CmV4dGVybiB2b2lkIGdsQ29sb3JGcmFnbWVudE9wMkFUSSAoR0xlbnVtLCBHTHVpbnQsIEdMdWlu dCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50 KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvckZyYWdtZW50T3AzQVRJIChHTGVudW0sIEdMdWludCwgR0x1 aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVp bnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbEFscGhhRnJhZ21lbnRP cDFBVEkgKEdMZW51bSwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQpOwpl eHRlcm4gdm9pZCBnbEFscGhhRnJhZ21lbnRPcDJBVEkgKEdMZW51bSwgR0x1aW50LCBHTHVpbnQs IEdMdWludCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4g dm9pZCBnbEFscGhhRnJhZ21lbnRPcDNBVEkgKEdMZW51bSwgR0x1aW50LCBHTHVpbnQsIEdMdWlu dCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50LCBHTHVpbnQsIEdMdWludCwgR0x1aW50 LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFNldEZyYWdtZW50U2hhZGVyQ29uc3RhbnRBVEkgKEdM dWludCwgY29uc3QgR0xmbG9hdCAqKTsKCnR5cGVkZWYgR0x1aW50ICggKiBQRk5HTEdFTkZSQUdN RU5UU0hBREVSU0FUSVBST0MpIChHTHVpbnQgcmFuZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM QklOREZSQUdNRU5UU0hBREVSQVRJUFJPQykgKEdMdWludCBpZCk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xERUxFVEVGUkFHTUVOVFNIQURFUkFUSVBST0MpIChHTHVpbnQgaWQpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMQkVHSU5GUkFHTUVOVFNIQURFUkFUSVBST0MpICh2b2lkKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEVOREZSQUdNRU5UU0hBREVSQVRJUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMUEFTU1RFWENPT1JEQVRJUFJPQykgKEdMdWludCBkc3QsIEdMdWludCBjb29y ZCwgR0xlbnVtIHN3aXp6bGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0FNUExFTUFQQVRJUFJP QykgKEdMdWludCBkc3QsIEdMdWludCBpbnRlcnAsIEdMZW51bSBzd2l6emxlKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTENPTE9SRlJBR01FTlRPUDFBVElQUk9DKSAoR0xlbnVtIG9wLCBHTHVpbnQg ZHN0LCBHTHVpbnQgZHN0TWFzaywgR0x1aW50IGRzdE1vZCwgR0x1aW50IGFyZzEsIEdMdWludCBh cmcxUmVwLCBHTHVpbnQgYXJnMU1vZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUkZSQUdN RU5UT1AyQVRJUFJPQykgKEdMZW51bSBvcCwgR0x1aW50IGRzdCwgR0x1aW50IGRzdE1hc2ssIEdM dWludCBkc3RNb2QsIEdMdWludCBhcmcxLCBHTHVpbnQgYXJnMVJlcCwgR0x1aW50IGFyZzFNb2Qs IEdMdWludCBhcmcyLCBHTHVpbnQgYXJnMlJlcCwgR0x1aW50IGFyZzJNb2QpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMQ09MT1JGUkFHTUVOVE9QM0FUSVBST0MpIChHTGVudW0gb3AsIEdMdWludCBk c3QsIEdMdWludCBkc3RNYXNrLCBHTHVpbnQgZHN0TW9kLCBHTHVpbnQgYXJnMSwgR0x1aW50IGFy ZzFSZXAsIEdMdWludCBhcmcxTW9kLCBHTHVpbnQgYXJnMiwgR0x1aW50IGFyZzJSZXAsIEdMdWlu dCBhcmcyTW9kLCBHTHVpbnQgYXJnMywgR0x1aW50IGFyZzNSZXAsIEdMdWludCBhcmczTW9kKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEFMUEhBRlJBR01FTlRPUDFBVElQUk9DKSAoR0xlbnVtIG9w LCBHTHVpbnQgZHN0LCBHTHVpbnQgZHN0TW9kLCBHTHVpbnQgYXJnMSwgR0x1aW50IGFyZzFSZXAs IEdMdWludCBhcmcxTW9kKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFMUEhBRlJBR01FTlRPUDJB VElQUk9DKSAoR0xlbnVtIG9wLCBHTHVpbnQgZHN0LCBHTHVpbnQgZHN0TW9kLCBHTHVpbnQgYXJn MSwgR0x1aW50IGFyZzFSZXAsIEdMdWludCBhcmcxTW9kLCBHTHVpbnQgYXJnMiwgR0x1aW50IGFy ZzJSZXAsIEdMdWludCBhcmcyTW9kKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFMUEhBRlJBR01F TlRPUDNBVElQUk9DKSAoR0xlbnVtIG9wLCBHTHVpbnQgZHN0LCBHTHVpbnQgZHN0TW9kLCBHTHVp bnQgYXJnMSwgR0x1aW50IGFyZzFSZXAsIEdMdWludCBhcmcxTW9kLCBHTHVpbnQgYXJnMiwgR0x1 aW50IGFyZzJSZXAsIEdMdWludCBhcmcyTW9kLCBHTHVpbnQgYXJnMywgR0x1aW50IGFyZzNSZXAs IEdMdWludCBhcmczTW9kKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFVEZSQUdNRU5UU0hBREVS Q09OU1RBTlRBVElQUk9DKSAoR0x1aW50IGRzdCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwoKCgoK CmV4dGVybiB2b2lkIGdsUE5UcmlhbmdsZXNpQVRJIChHTGVudW0sIEdMaW50KTsKZXh0ZXJuIHZv aWQgZ2xQTlRyaWFuZ2xlc2ZBVEkgKEdMZW51bSwgR0xmbG9hdCk7Cgp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMUE5UUklBTkdMRVNJQVRJUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE5UUklBTkdMRVNGQVRJUFJPQykgKEdMZW51bSBwbmFtZSwg R0xmbG9hdCBwYXJhbSk7CgoKCgoKZXh0ZXJuIEdMdWludCBnbE5ld09iamVjdEJ1ZmZlckFUSSAo R0xzaXplaSwgY29uc3QgR0x2b2lkICosIEdMZW51bSk7CmV4dGVybiBHTGJvb2xlYW4gZ2xJc09i amVjdEJ1ZmZlckFUSSAoR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xVcGRhdGVPYmplY3RCdWZmZXJB VEkgKEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKiwgR0xlbnVtKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRPYmplY3RCdWZmZXJmdkFUSSAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQg Kik7CmV4dGVybiB2b2lkIGdsR2V0T2JqZWN0QnVmZmVyaXZBVEkgKEdMdWludCwgR0xlbnVtLCBH TGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xEZWxldGVPYmplY3RCdWZmZXJBVEkgKEdMdWludCk7CmV4 dGVybiB2b2lkIGdsQXJyYXlPYmplY3RBVEkgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwgR0xzaXpl aSwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbEdldEFycmF5T2JqZWN0ZnZBVEkgKEdM ZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldEFycmF5T2JqZWN0aXZB VEkgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xWYXJpYW50QXJyYXlP YmplY3RBVEkgKEdMdWludCwgR0xlbnVtLCBHTHNpemVpLCBHTHVpbnQsIEdMdWludCk7CmV4dGVy biB2b2lkIGdsR2V0VmFyaWFudEFycmF5T2JqZWN0ZnZBVEkgKEdMdWludCwgR0xlbnVtLCBHTGZs b2F0ICopOwpleHRlcm4gdm9pZCBnbEdldFZhcmlhbnRBcnJheU9iamVjdGl2QVRJIChHTHVpbnQs IEdMZW51bSwgR0xpbnQgKik7Cgp0eXBlZGVmIEdMdWludCAoICogUEZOR0xORVdPQkpFQ1RCVUZG RVJBVElQUk9DKSAoR0xzaXplaSBzaXplLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIsIEdMZW51bSB1 c2FnZSk7CnR5cGVkZWYgR0xib29sZWFuICggKiBQRk5HTElTT0JKRUNUQlVGRkVSQVRJUFJPQykg KEdMdWludCBidWZmZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVVBEQVRFT0JKRUNUQlVGRkVS QVRJUFJPQykgKEdMdWludCBidWZmZXIsIEdMdWludCBvZmZzZXQsIEdMc2l6ZWkgc2l6ZSwgY29u c3QgR0x2b2lkICpwb2ludGVyLCBHTGVudW0gcHJlc2VydmUpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMR0VUT0JKRUNUQlVGRkVSRlZBVElQUk9DKSAoR0x1aW50IGJ1ZmZlciwgR0xlbnVtIHBuYW1l LCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUT0JKRUNUQlVGRkVS SVZBVElQUk9DKSAoR0x1aW50IGJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTERFTEVURU9CSkVDVEJVRkZFUkFUSVBST0MpIChHTHVpbnQg YnVmZmVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFSUkFZT0JKRUNUQVRJUFJPQykgKEdMZW51 bSBhcnJheSwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHVpbnQg YnVmZmVyLCBHTHVpbnQgb2Zmc2V0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEFSUkFZT0JK RUNURlZBVElQUk9DKSAoR0xlbnVtIGFycmF5LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFt cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRBUlJBWU9CSkVDVElWQVRJUFJPQykgKEdMZW51 bSBhcnJheSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFZBUklBTlRBUlJBWU9CSkVDVEFUSVBST0MpIChHTHVpbnQgaWQsIEdMZW51bSB0eXBlLCBH THNpemVpIHN0cmlkZSwgR0x1aW50IGJ1ZmZlciwgR0x1aW50IG9mZnNldCk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xHRVRWQVJJQU5UQVJSQVlPQkpFQ1RGVkFUSVBST0MpIChHTHVpbnQgaWQsIEdM ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFZB UklBTlRBUlJBWU9CSkVDVElWQVRJUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGlu dCAqcGFyYW1zKTsKCgoKCgpleHRlcm4gdm9pZCBnbEJlZ2luVmVydGV4U2hhZGVyRVhUICh2b2lk KTsKZXh0ZXJuIHZvaWQgZ2xFbmRWZXJ0ZXhTaGFkZXJFWFQgKHZvaWQpOwpleHRlcm4gdm9pZCBn bEJpbmRWZXJ0ZXhTaGFkZXJFWFQgKEdMdWludCk7CmV4dGVybiBHTHVpbnQgZ2xHZW5WZXJ0ZXhT aGFkZXJzRVhUIChHTHVpbnQpOwpleHRlcm4gdm9pZCBnbERlbGV0ZVZlcnRleFNoYWRlckVYVCAo R0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xTaGFkZXJPcDFFWFQgKEdMZW51bSwgR0x1aW50LCBHTHVp bnQpOwpleHRlcm4gdm9pZCBnbFNoYWRlck9wMkVYVCAoR0xlbnVtLCBHTHVpbnQsIEdMdWludCwg R0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xTaGFkZXJPcDNFWFQgKEdMZW51bSwgR0x1aW50LCBHTHVp bnQsIEdMdWludCwgR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xTd2l6emxlRVhUIChHTHVpbnQsIEdM dWludCwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xXcml0 ZU1hc2tFWFQgKEdMdWludCwgR0x1aW50LCBHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0p OwpleHRlcm4gdm9pZCBnbEluc2VydENvbXBvbmVudEVYVCAoR0x1aW50LCBHTHVpbnQsIEdMdWlu dCk7CmV4dGVybiB2b2lkIGdsRXh0cmFjdENvbXBvbmVudEVYVCAoR0x1aW50LCBHTHVpbnQsIEdM dWludCk7CmV4dGVybiBHTHVpbnQgZ2xHZW5TeW1ib2xzRVhUIChHTGVudW0sIEdMZW51bSwgR0xl bnVtLCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFNldEludmFyaWFudEVYVCAoR0x1aW50LCBHTGVu dW0sIGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lkIGdsU2V0TG9jYWxDb25zdGFudEVYVCAoR0x1 aW50LCBHTGVudW0sIGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lkIGdsVmFyaWFudGJ2RVhUIChH THVpbnQsIGNvbnN0IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xWYXJpYW50c3ZFWFQgKEdMdWlu dCwgY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xWYXJpYW50aXZFWFQgKEdMdWludCwg Y29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsVmFyaWFudGZ2RVhUIChHTHVpbnQsIGNvbnN0 IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVmFyaWFudGR2RVhUIChHTHVpbnQsIGNvbnN0IEdM ZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZhcmlhbnR1YnZFWFQgKEdMdWludCwgY29uc3QgR0x1 Ynl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xWYXJpYW50dXN2RVhUIChHTHVpbnQsIGNvbnN0IEdMdXNo b3J0ICopOwpleHRlcm4gdm9pZCBnbFZhcmlhbnR1aXZFWFQgKEdMdWludCwgY29uc3QgR0x1aW50 ICopOwpleHRlcm4gdm9pZCBnbFZhcmlhbnRQb2ludGVyRVhUIChHTHVpbnQsIEdMZW51bSwgR0x1 aW50LCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBnbEVuYWJsZVZhcmlhbnRDbGllbnRTdGF0 ZUVYVCAoR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlVmFyaWFudENsaWVudFN0YXRlRVhU IChHTHVpbnQpOwpleHRlcm4gR0x1aW50IGdsQmluZExpZ2h0UGFyYW1ldGVyRVhUIChHTGVudW0s IEdMZW51bSk7CmV4dGVybiBHTHVpbnQgZ2xCaW5kTWF0ZXJpYWxQYXJhbWV0ZXJFWFQgKEdMZW51 bSwgR0xlbnVtKTsKZXh0ZXJuIEdMdWludCBnbEJpbmRUZXhHZW5QYXJhbWV0ZXJFWFQgKEdMZW51 bSwgR0xlbnVtLCBHTGVudW0pOwpleHRlcm4gR0x1aW50IGdsQmluZFRleHR1cmVVbml0UGFyYW1l dGVyRVhUIChHTGVudW0sIEdMZW51bSk7CmV4dGVybiBHTHVpbnQgZ2xCaW5kUGFyYW1ldGVyRVhU IChHTGVudW0pOwpleHRlcm4gR0xib29sZWFuIGdsSXNWYXJpYW50RW5hYmxlZEVYVCAoR0x1aW50 LCBHTGVudW0pOwpleHRlcm4gdm9pZCBnbEdldFZhcmlhbnRCb29sZWFudkVYVCAoR0x1aW50LCBH TGVudW0sIEdMYm9vbGVhbiAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRWYXJpYW50SW50ZWdlcnZFWFQg KEdMdWludCwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRWYXJpYW50RmxvYXR2 RVhUIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRWYXJpYW50 UG9pbnRlcnZFWFQgKEdMdWludCwgR0xlbnVtLCBHTHZvaWQqICopOwpleHRlcm4gdm9pZCBnbEdl dEludmFyaWFudEJvb2xlYW52RVhUIChHTHVpbnQsIEdMZW51bSwgR0xib29sZWFuICopOwpleHRl cm4gdm9pZCBnbEdldEludmFyaWFudEludGVnZXJ2RVhUIChHTHVpbnQsIEdMZW51bSwgR0xpbnQg Kik7CmV4dGVybiB2b2lkIGdsR2V0SW52YXJpYW50RmxvYXR2RVhUIChHTHVpbnQsIEdMZW51bSwg R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRMb2NhbENvbnN0YW50Qm9vbGVhbnZFWFQgKEdM dWludCwgR0xlbnVtLCBHTGJvb2xlYW4gKik7CmV4dGVybiB2b2lkIGdsR2V0TG9jYWxDb25zdGFu dEludGVnZXJ2RVhUIChHTHVpbnQsIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0 TG9jYWxDb25zdGFudEZsb2F0dkVYVCAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQgKik7Cgp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMQkVHSU5WRVJURVhTSEFERVJFWFRQUk9DKSAodm9pZCk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xFTkRWRVJURVhTSEFERVJFWFRQUk9DKSAodm9pZCk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xCSU5EVkVSVEVYU0hBREVSRVhUUFJPQykgKEdMdWludCBpZCk7CnR5cGVk ZWYgR0x1aW50ICggKiBQRk5HTEdFTlZFUlRFWFNIQURFUlNFWFRQUk9DKSAoR0x1aW50IHJhbmdl KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFTEVURVZFUlRFWFNIQURFUkVYVFBST0MpIChHTHVp bnQgaWQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0hBREVST1AxRVhUUFJPQykgKEdMZW51bSBv cCwgR0x1aW50IHJlcywgR0x1aW50IGFyZzEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0hBREVS T1AyRVhUUFJPQykgKEdMZW51bSBvcCwgR0x1aW50IHJlcywgR0x1aW50IGFyZzEsIEdMdWludCBh cmcyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNIQURFUk9QM0VYVFBST0MpIChHTGVudW0gb3As IEdMdWludCByZXMsIEdMdWludCBhcmcxLCBHTHVpbnQgYXJnMiwgR0x1aW50IGFyZzMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMU1dJWlpMRUVYVFBST0MpIChHTHVpbnQgcmVzLCBHTHVpbnQgaW4s IEdMZW51bSBvdXRYLCBHTGVudW0gb3V0WSwgR0xlbnVtIG91dFosIEdMZW51bSBvdXRXKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFdSSVRFTUFTS0VYVFBST0MpIChHTHVpbnQgcmVzLCBHTHVpbnQg aW4sIEdMZW51bSBvdXRYLCBHTGVudW0gb3V0WSwgR0xlbnVtIG91dFosIEdMZW51bSBvdXRXKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTElOU0VSVENPTVBPTkVOVEVYVFBST0MpIChHTHVpbnQgcmVz LCBHTHVpbnQgc3JjLCBHTHVpbnQgbnVtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEVYVFJBQ1RD T01QT05FTlRFWFRQUk9DKSAoR0x1aW50IHJlcywgR0x1aW50IHNyYywgR0x1aW50IG51bSk7CnR5 cGVkZWYgR0x1aW50ICggKiBQRk5HTEdFTlNZTUJPTFNFWFRQUk9DKSAoR0xlbnVtIGRhdGF0eXBl LCBHTGVudW0gc3RvcmFnZXR5cGUsIEdMZW51bSByYW5nZSwgR0x1aW50IGNvbXBvbmVudHMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VUSU5WQVJJQU5URVhUUFJPQykgKEdMdWludCBpZCwgR0xl bnVtIHR5cGUsIGNvbnN0IHZvaWQgKmFkZHIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VUTE9D QUxDT05TVEFOVEVYVFBST0MpIChHTHVpbnQgaWQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICph ZGRyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZBUklBTlRCVkVYVFBST0MpIChHTHVpbnQgaWQs IGNvbnN0IEdMYnl0ZSAqYWRkcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWQVJJQU5UU1ZFWFRQ Uk9DKSAoR0x1aW50IGlkLCBjb25zdCBHTHNob3J0ICphZGRyKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFZBUklBTlRJVkVYVFBST0MpIChHTHVpbnQgaWQsIGNvbnN0IEdMaW50ICphZGRyKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFZBUklBTlRGVkVYVFBST0MpIChHTHVpbnQgaWQsIGNvbnN0IEdM ZmxvYXQgKmFkZHIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkFSSUFOVERWRVhUUFJPQykgKEdM dWludCBpZCwgY29uc3QgR0xkb3VibGUgKmFkZHIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkFS SUFOVFVCVkVYVFBST0MpIChHTHVpbnQgaWQsIGNvbnN0IEdMdWJ5dGUgKmFkZHIpOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVkFSSUFOVFVTVkVYVFBST0MpIChHTHVpbnQgaWQsIGNvbnN0IEdMdXNo b3J0ICphZGRyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZBUklBTlRVSVZFWFRQUk9DKSAoR0x1 aW50IGlkLCBjb25zdCBHTHVpbnQgKmFkZHIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkFSSUFO VFBPSU5URVJFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdHlwZSwgR0x1aW50IHN0cmlkZSwg Y29uc3Qgdm9pZCAqYWRkcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xFTkFCTEVWQVJJQU5UQ0xJ RU5UU1RBVEVFWFRQUk9DKSAoR0x1aW50IGlkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERJU0FC TEVWQVJJQU5UQ0xJRU5UU1RBVEVFWFRQUk9DKSAoR0x1aW50IGlkKTsKdHlwZWRlZiBHTHVpbnQg KCAqIFBGTkdMQklORExJR0hUUEFSQU1FVEVSRVhUUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVt IHZhbHVlKTsKdHlwZWRlZiBHTHVpbnQgKCAqIFBGTkdMQklORE1BVEVSSUFMUEFSQU1FVEVSRVhU UFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gdmFsdWUpOwp0eXBlZGVmIEdMdWludCAoICogUEZO R0xCSU5EVEVYR0VOUEFSQU1FVEVSRVhUUFJPQykgKEdMZW51bSB1bml0LCBHTGVudW0gY29vcmQs IEdMZW51bSB2YWx1ZSk7CnR5cGVkZWYgR0x1aW50ICggKiBQRk5HTEJJTkRURVhUVVJFVU5JVFBB UkFNRVRFUkVYVFBST0MpIChHTGVudW0gdW5pdCwgR0xlbnVtIHZhbHVlKTsKdHlwZWRlZiBHTHVp bnQgKCAqIFBGTkdMQklORFBBUkFNRVRFUkVYVFBST0MpIChHTGVudW0gdmFsdWUpOwp0eXBlZGVm IEdMYm9vbGVhbiAoICogUEZOR0xJU1ZBUklBTlRFTkFCTEVERVhUUFJPQykgKEdMdWludCBpZCwg R0xlbnVtIGNhcCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRWQVJJQU5UQk9PTEVBTlZFWFRQ Uk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdmFsdWUsIEdMYm9vbGVhbiAqZGF0YSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xHRVRWQVJJQU5USU5URUdFUlZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVu dW0gdmFsdWUsIEdMaW50ICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFZBUklBTlRG TE9BVFZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdmFsdWUsIEdMZmxvYXQgKmRhdGEpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUVkFSSUFOVFBPSU5URVJWRVhUUFJPQykgKEdMdWludCBp ZCwgR0xlbnVtIHZhbHVlLCBHTHZvaWQqICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF VElOVkFSSUFOVEJPT0xFQU5WRVhUUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHZhbHVlLCBHTGJv b2xlYW4gKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSU5WQVJJQU5USU5URUdFUlZF WFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdmFsdWUsIEdMaW50ICpkYXRhKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVElOVkFSSUFOVEZMT0FUVkVYVFBST0MpIChHTHVpbnQgaWQsIEdMZW51 bSB2YWx1ZSwgR0xmbG9hdCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRMT0NBTENP TlNUQU5UQk9PTEVBTlZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdmFsdWUsIEdMYm9vbGVh biAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRMT0NBTENPTlNUQU5USU5URUdFUlZF WFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gdmFsdWUsIEdMaW50ICpkYXRhKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEdFVExPQ0FMQ09OU1RBTlRGTE9BVFZFWFRQUk9DKSAoR0x1aW50IGlkLCBH TGVudW0gdmFsdWUsIEdMZmxvYXQgKmRhdGEpOwoKCgoKCmV4dGVybiB2b2lkIGdsVmVydGV4U3Ry ZWFtMXNBVEkgKEdMZW51bSwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtMXN2 QVRJIChHTGVudW0sIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFt MWlBVEkgKEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTFpdkFUSSAo R0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0xZkFUSSAo R0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0xZnZBVEkgKEdMZW51 bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0xZEFUSSAoR0xl bnVtLCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtMWR2QVRJIChHTGVudW0s IGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTJzQVRJIChHTGVu dW0sIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTJzdkFUSSAo R0xlbnVtLCBjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTJpQVRJ IChHTGVudW0sIEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtMml2QVRJ IChHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTJmQVRJ IChHTGVudW0sIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTJm dkFUSSAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVh bTJkQVRJIChHTGVudW0sIEdMZG91YmxlLCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsVmVydGV4 U3RyZWFtMmR2QVRJIChHTGVudW0sIGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFZl cnRleFN0cmVhbTNzQVRJIChHTGVudW0sIEdMc2hvcnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRl cm4gdm9pZCBnbFZlcnRleFN0cmVhbTNzdkFUSSAoR0xlbnVtLCBjb25zdCBHTHNob3J0ICopOwpl eHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTNpQVRJIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xp bnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTNpdkFUSSAoR0xlbnVtLCBjb25zdCBHTGlu dCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0zZkFUSSAoR0xlbnVtLCBHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0zZnZBVEkgKEdMZW51 bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW0zZEFUSSAoR0xl bnVtLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhT dHJlYW0zZHZBVEkgKEdMZW51bSwgY29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsVmVy dGV4U3RyZWFtNHNBVEkgKEdMZW51bSwgR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9y dCk7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtNHN2QVRJIChHTGVudW0sIGNvbnN0IEdMc2hv cnQgKik7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtNGlBVEkgKEdMZW51bSwgR0xpbnQsIEdM aW50LCBHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFZlcnRleFN0cmVhbTRpdkFUSSAoR0xl bnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhTdHJlYW00ZkFUSSAoR0xl bnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xW ZXJ0ZXhTdHJlYW00ZnZBVEkgKEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQg Z2xWZXJ0ZXhTdHJlYW00ZEFUSSAoR0xlbnVtLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91Ymxl LCBHTGRvdWJsZSk7CmV4dGVybiB2b2lkIGdsVmVydGV4U3RyZWFtNGR2QVRJIChHTGVudW0sIGNv bnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbE5vcm1hbFN0cmVhbTNiQVRJIChHTGVudW0s IEdMYnl0ZSwgR0xieXRlLCBHTGJ5dGUpOwpleHRlcm4gdm9pZCBnbE5vcm1hbFN0cmVhbTNidkFU SSAoR0xlbnVtLCBjb25zdCBHTGJ5dGUgKik7CmV4dGVybiB2b2lkIGdsTm9ybWFsU3RyZWFtM3NB VEkgKEdMZW51bSwgR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsTm9y bWFsU3RyZWFtM3N2QVRJIChHTGVudW0sIGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGds Tm9ybWFsU3RyZWFtM2lBVEkgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTGludCk7CmV4dGVybiB2 b2lkIGdsTm9ybWFsU3RyZWFtM2l2QVRJIChHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4g dm9pZCBnbE5vcm1hbFN0cmVhbTNmQVRJIChHTGVudW0sIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv YXQpOwpleHRlcm4gdm9pZCBnbE5vcm1hbFN0cmVhbTNmdkFUSSAoR0xlbnVtLCBjb25zdCBHTGZs b2F0ICopOwpleHRlcm4gdm9pZCBnbE5vcm1hbFN0cmVhbTNkQVRJIChHTGVudW0sIEdMZG91Ymxl LCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbE5vcm1hbFN0cmVhbTNkdkFUSSAo R0xlbnVtLCBjb25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xDbGllbnRBY3RpdmVWZXJ0 ZXhTdHJlYW1BVEkgKEdMZW51bSk7CmV4dGVybiB2b2lkIGdsVmVydGV4QmxlbmRFbnZpQVRJIChH TGVudW0sIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhCbGVuZEVudmZBVEkgKEdMZW51bSwg R0xmbG9hdCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNMVNBVElQUk9DKSAo R0xlbnVtIHN0cmVhbSwgR0xzaG9ydCB4KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFNU UkVBTTFTVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBHTHNob3J0ICpjb29yZHMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNMUlBVElQUk9DKSAoR0xlbnVtIHN0cmVh bSwgR0xpbnQgeCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU0xSVZBVElQUk9D KSAoR0xlbnVtIHN0cmVhbSwgY29uc3QgR0xpbnQgKmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xWRVJURVhTVFJFQU0xRkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBHTGZsb2F0IHgpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNMUZWQVRJUFJPQykgKEdMZW51bSBzdHJl YW0sIGNvbnN0IEdMZmxvYXQgKmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhT VFJFQU0xREFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBHTGRvdWJsZSB4KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFZFUlRFWFNUUkVBTTFEVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBH TGRvdWJsZSAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFNUUkVBTTJTQVRJ UFJPQykgKEdMZW51bSBzdHJlYW0sIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFZFUlRFWFNUUkVBTTJTVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBH THNob3J0ICpjb29yZHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNMklBVElQ Uk9DKSAoR0xlbnVtIHN0cmVhbSwgR0xpbnQgeCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xWRVJURVhTVFJFQU0ySVZBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwgY29uc3QgR0xpbnQg KmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU0yRkFUSVBST0MpIChH TGVudW0gc3RyZWFtLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xWRVJURVhTVFJFQU0yRlZBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwgY29uc3QgR0xmbG9hdCAq Y29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFNUUkVBTTJEQVRJUFJPQykgKEdM ZW51bSBzdHJlYW0sIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVkVSVEVYU1RSRUFNMkRWQVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIGNvbnN0IEdMZG91Ymxl ICpjb29yZHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNM1NBVElQUk9DKSAo R0xlbnVtIHN0cmVhbSwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU0zU1ZBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwgY29u c3QgR0xzaG9ydCAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFNUUkVBTTNJ QVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNM0lWQVRJUFJPQykgKEdMZW51bSBzdHJlYW0s IGNvbnN0IEdMaW50ICpjb29yZHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFN M0ZBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU0zRlZBVElQUk9DKSAoR0xlbnVt IHN0cmVhbSwgY29uc3QgR0xmbG9hdCAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZF UlRFWFNUUkVBTTNEQVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIEdMZG91YmxlIHgsIEdMZG91Ymxl IHksIEdMZG91YmxlIHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNM0RWQVRJ UFJPQykgKEdMZW51bSBzdHJlYW0sIGNvbnN0IEdMZG91YmxlICpjb29yZHMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNNFNBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwgR0xzaG9y dCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFZFUlRFWFNUUkVBTTRTVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBHTHNob3J0 ICpjb29yZHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNNElBVElQUk9DKSAo R0xlbnVtIHN0cmVhbSwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU00SVZBVElQUk9DKSAoR0xlbnVtIHN0cmVhbSwg Y29uc3QgR0xpbnQgKmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhTVFJFQU00 RkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6 LCBHTGZsb2F0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYU1RSRUFNNEZWQVRJUFJP QykgKEdMZW51bSBzdHJlYW0sIGNvbnN0IEdMZmxvYXQgKmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xWRVJURVhTVFJFQU00REFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBHTGRvdWJsZSB4 LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTFZFUlRFWFNUUkVBTTREVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBHTGRvdWJs ZSAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTFNUUkVBTTNCQVRJUFJPQykg KEdMZW51bSBzdHJlYW0sIEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMTk9STUFMU1RSRUFNM0JWQVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIGNv bnN0IEdMYnl0ZSAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTFNUUkVBTTNT QVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQg bnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMU1RSRUFNM1NWQVRJUFJPQykgKEdMZW51 bSBzdHJlYW0sIGNvbnN0IEdMc2hvcnQgKmNvb3Jkcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xO T1JNQUxTVFJFQU0zSUFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBHTGludCBueCwgR0xpbnQgbnks IEdMaW50IG56KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTFNUUkVBTTNJVkFUSVBST0Mp IChHTGVudW0gc3RyZWFtLCBjb25zdCBHTGludCAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTE5PUk1BTFNUUkVBTTNGQVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIEdMZmxvYXQgbngsIEdM ZmxvYXQgbnksIEdMZmxvYXQgbnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMU1RSRUFN M0ZWQVRJUFJPQykgKEdMZW51bSBzdHJlYW0sIGNvbnN0IEdMZmxvYXQgKmNvb3Jkcyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xOT1JNQUxTVFJFQU0zREFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBH TGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTE5PUk1BTFNUUkVBTTNEVkFUSVBST0MpIChHTGVudW0gc3RyZWFtLCBjb25zdCBHTGRvdWJs ZSAqY29vcmRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENMSUVOVEFDVElWRVZFUlRFWFNUUkVB TUFUSVBST0MpIChHTGVudW0gc3RyZWFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEJM RU5ERU5WSUFUSVBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFZFUlRFWEJMRU5ERU5WRkFUSVBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQg cGFyYW0pOwoKCgoKCmV4dGVybiB2b2lkIGdsRWxlbWVudFBvaW50ZXJBVEkgKEdMZW51bSwgY29u c3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbERyYXdFbGVtZW50QXJyYXlBVEkgKEdMZW51bSwg R0xzaXplaSk7CmV4dGVybiB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudEFycmF5QVRJIChHTGVudW0s IEdMdWludCwgR0x1aW50LCBHTHNpemVpKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xFTEVNRU5U UE9JTlRFUkFUSVBST0MpIChHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTERSQVdFTEVNRU5UQVJSQVlBVElQUk9DKSAoR0xlbnVtIG1vZGUs IEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJBV1JBTkdFRUxFTUVOVEFS UkFZQVRJUFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6 ZWkgY291bnQpOwoKCgoKCmV4dGVybiB2b2lkIGdsRHJhd01lc2hBcnJheXNTVU4gKEdMZW51bSwg R0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTERSQVdNRVNI QVJSQVlTU1VOUFJPQykgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwg R0xzaXplaSB3aWR0aCk7CiMgNDk3MiAiLi4vaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9p ZCBnbEdlbk9jY2x1c2lvblF1ZXJpZXNOViAoR0xzaXplaSwgR0x1aW50ICopOwpleHRlcm4gdm9p ZCBnbERlbGV0ZU9jY2x1c2lvblF1ZXJpZXNOViAoR0xzaXplaSwgY29uc3QgR0x1aW50ICopOwpl eHRlcm4gR0xib29sZWFuIGdsSXNPY2NsdXNpb25RdWVyeU5WIChHTHVpbnQpOwpleHRlcm4gdm9p ZCBnbEJlZ2luT2NjbHVzaW9uUXVlcnlOViAoR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xFbmRPY2Ns dXNpb25RdWVyeU5WICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2xHZXRPY2NsdXNpb25RdWVyeWl2TlYg KEdMdWludCwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRPY2NsdXNpb25RdWVy eXVpdk5WIChHTHVpbnQsIEdMZW51bSwgR0x1aW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5H TEdFTk9DQ0xVU0lPTlFVRVJJRVNOVlBST0MpIChHTHNpemVpIG4sIEdMdWludCAqaWRzKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTERFTEVURU9DQ0xVU0lPTlFVRVJJRVNOVlBST0MpIChHTHNpemVp IG4sIGNvbnN0IEdMdWludCAqaWRzKTsKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdMSVNPQ0NM VVNJT05RVUVSWU5WUFJPQykgKEdMdWludCBpZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCRUdJ Tk9DQ0xVU0lPTlFVRVJZTlZQUk9DKSAoR0x1aW50IGlkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TEVORE9DQ0xVU0lPTlFVRVJZTlZQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH RVRPQ0NMVVNJT05RVUVSWUlWTlZQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50 ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUT0NDTFVTSU9OUVVFUllVSVZOVlBS T0MpIChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwoKCgoKCmV4dGVy biB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJpTlYgKEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBn bFBvaW50UGFyYW1ldGVyaXZOViAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKCnR5cGVkZWYgdm9p ZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBh cmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSSVZOVlBST0MpIChHTGVu dW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwojIDUwMTQgIi4uL2luY2x1ZGUvR0wvZ2xl eHQuaCIKZXh0ZXJuIHZvaWQgZ2xBY3RpdmVTdGVuY2lsRmFjZUVYVCAoR0xlbnVtKTsKCnR5cGVk ZWYgdm9pZCAoICogUEZOR0xBQ1RJVkVTVEVOQ0lMRkFDRUVYVFBST0MpIChHTGVudW0gZmFjZSk7 CiMgMjU1OCAiLi4vaW5jbHVkZS9HTC9nbC5oIiAyCiMgMjU4MCAiLi4vaW5jbHVkZS9HTC9nbC5o IgpleHRlcm4gdm9pZCBnbEVuYWJsZVRyYWNlTUVTQSggR0xiaXRmaWVsZCBtYXNrICk7CmV4dGVy biB2b2lkIGdsRGlzYWJsZVRyYWNlTUVTQSggR0xiaXRmaWVsZCBtYXNrICk7CmV4dGVybiB2b2lk IGdsTmV3VHJhY2VNRVNBKCBHTGJpdGZpZWxkIG1hc2ssIGNvbnN0IEdMdWJ5dGUgKiB0cmFjZU5h bWUgKTsKZXh0ZXJuIHZvaWQgZ2xFbmRUcmFjZU1FU0EoIHZvaWQgKTsKZXh0ZXJuIHZvaWQgZ2xU cmFjZUFzc2VydEF0dHJpYk1FU0EoIEdMYml0ZmllbGQgYXR0cmliTWFzayApOwpleHRlcm4gdm9p ZCBnbFRyYWNlQ29tbWVudE1FU0EoIGNvbnN0IEdMdWJ5dGUgKiBjb21tZW50ICk7CmV4dGVybiB2 b2lkIGdsVHJhY2VUZXh0dXJlTUVTQSggR0x1aW50IG5hbWUsIGNvbnN0IEdMdWJ5dGUqIGNvbW1l bnQgKTsKZXh0ZXJuIHZvaWQgZ2xUcmFjZUxpc3RNRVNBKCBHTHVpbnQgbmFtZSwgY29uc3QgR0x1 Ynl0ZSogY29tbWVudCApOwpleHRlcm4gdm9pZCBnbFRyYWNlUG9pbnRlck1FU0EoIEdMdm9pZCog cG9pbnRlciwgY29uc3QgR0x1Ynl0ZSogY29tbWVudCApOwpleHRlcm4gdm9pZCBnbFRyYWNlUG9p bnRlclJhbmdlTUVTQSggY29uc3QgR0x2b2lkKiBmaXJzdCwgY29uc3QgR0x2b2lkKiBsYXN0LCBj b25zdCBHTHVieXRlKiBjb21tZW50ICk7CiMgMTk0ICJnbGhlYWRlci5oIiAyCiMgMjA0ICJnbGhl YWRlci5oIgojIDEgIi4uL2luY2x1ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiIDEKIyA0MSAiLi4v aW5jbHVkZS9HTC9pbnRlcm5hbC9nbGNvcmUuaCIKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyAyNSAi L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdHlwZXMuaAkxLjY2CTAwLzAyLzE0IFNN SSIKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgv My4xL2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAxIDMgNAojIDE4ICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDMg NAojcHJhZ21hIGlkZW50ICJAKCMpbWFjaHR5cGVzLmgJMS44CTk5LzA1LzA0IFNNSSIKCgoKCgoj IDEgIi91c3IvaW5jbHVkZS9pYTMyL3N5cy9tYWNodHlwZXMuaCIgMSAzIDQKIyA5ICIvdXNyL2lu Y2x1ZGUvaWEzMi9zeXMvbWFjaHR5cGVzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpbWFjaHR5 cGVzLmgJMS4xCTk5LzA1LzA0IFNNSSIKIyAyNCAiL3Vzci9pbmNsdWRlL2lhMzIvc3lzL21hY2h0 eXBlcy5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX2xhYmVsX3QgeyBsb25nIHZhbFs2XTsgfSBsYWJl bF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbG9ja190OwojIDI1ICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgi IDIgMyA0CiMgMzQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMu MS9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAojIDQ1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMSAzIDQKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2lu dF90eXBlcy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWludF90eXBlcy5oCTEuNgk5Ny8wOC8y MCBTTUkiCiMgNjIgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGNo YXIgaW50OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQgaW50MTZfdDsKdHlwZWRlZiBpbnQgaW50MzJf dDsKCgoKCnR5cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hh ciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90Owp0eXBlZGVmIHVuc2ln bmVkIGludCB1aW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90 OwojIDk0ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQ2NF90 IGludG1heF90Owp0eXBlZGVmIHVpbnQ2NF90IHVpbnRtYXhfdDsKIyAxMTAgIi91c3IvaW5jbHVk ZS9zeXMvaW50X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGludCBpbnRwdHJfdDsKdHlwZWRlZiB1bnNp Z25lZCBpbnQgdWludHB0cl90OwoKCgoKCgoKdHlwZWRlZiBjaGFyIGludF9sZWFzdDhfdDsKCgoK Cgp0eXBlZGVmIHNob3J0IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7 CgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBpbnRfbGVhc3Q2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVk IGNoYXIgdWludF9sZWFzdDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50X2xlYXN0MTZf dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbG9uZyB1aW50X2xlYXN0NjRfdDsKIyA0NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgNjIg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5 cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg bG9uZyB0X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdF91c2NhbGFyX3Q7CgoKCgoK dHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNo b3J0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IHVsb25nX3Q7Cgp0eXBlZGVmIGNoYXIgKmNhZGRyX3Q7CnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0 eXBlZGVmIHNob3J0IGNudF90OwoKCnR5cGVkZWYgdWxvbmdfdCBwYWRkcl90OwojIDExOCAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3lzL3R5 cGVzLmgiIDMgNAp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgMTI3ICIvdXNyL2xvY2FsL2xpYi9n Y2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5 cGVkZWYgdWxvbmdfdCBwZm5fdDsKdHlwZWRlZiB1bG9uZ190IHBnY250X3Q7CnR5cGVkZWYgbG9u ZyBzcGdjbnRfdDsKCnR5cGVkZWYgdWNoYXJfdCB1c2VfdDsKdHlwZWRlZiBzaG9ydCBzeXNpZF90 Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYgdm9pZCAqdGltZW91dF9pZF90Owp0eXBl ZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKIyAxNjUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4 Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bG9u Z190IGlub190Owp0eXBlZGVmIGxvbmcgYmxrY250X3Q7CnR5cGVkZWYgdWxvbmdfdCBmc2Jsa2Nu dF90Owp0eXBlZGVmIHVsb25nX3QgZnNmaWxjbnRfdDsKIyAxODMgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlw ZWRlZiB1X2xvbmdsb25nX3QgaW5vNjRfdDsKdHlwZWRlZiBsb25nbG9uZ190IGJsa2NudDY0X3Q7 CnR5cGVkZWYgdV9sb25nbG9uZ190IGZzYmxrY250NjRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3Qg ZnNmaWxjbnQ2NF90OwoKCgoKCgp0eXBlZGVmIGxvbmcgYmxrc2l6ZV90OwoKCgoKCnR5cGVkZWYg ZW51bSB7IEJfRkFMU0UsIEJfVFJVRSB9IGJvb2xlYW5fdDsKIyAyMTAgIi91c3IvbG9jYWwvbGli L2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK dHlwZWRlZiBpbnQ2NF90IHBhZDY0X3Q7CnR5cGVkZWYgdWludDY0X3QgdXBhZDY0X3Q7CiMgMjIz ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZ2xvbmdfdCBvZmZzZXRfdDsKdHlwZWRlZiB1X2xv bmdsb25nX3QgdV9vZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgbGVuX3Q7CnR5cGVkZWYg bG9uZ2xvbmdfdCBkaXNrYWRkcl90OwoKCgoKCgoKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgb2Zm c2V0X3QgX2Y7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludDMyX3QgX2w7CiAg ICAgICAgICAgICAgICBpbnQzMl90IF91OwogICAgICAgIH0gX3A7Cn0gbGxvZmZfdDsKIyAyNTQg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5 cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgZGlza2FkZHJfdCBfZjsKICAg ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICAgICAgICAg IGludDMyX3QgX3U7CiAgICAgICAgfSBfcDsKfSBsbGRhZGRyX3Q7CiMgMjczICIvdXNyL2xvY2Fs L2xpYi9nY2MtbGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MyA0CnR5cGVkZWYgdWludF90IGtfZmx0c2V0X3Q7CiMgMjg3ICIvdXNyL2xvY2FsL2xpYi9nY2Mt bGliL2kzODYtcGMtc29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVk ZWYgbG9uZyBpZF90OwoKCgoKCgp0eXBlZGVmIHVpbnRfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVm IGxvbmcgc3VzZWNvbmRzX3Q7CiMgMzA4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2kzODYtcGMt c29sYXJpczIuOC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdWxvbmdfdCBt YWpvcl90Owp0eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKCgoKCgp0eXBlZGVmIHNob3J0IHByaV90 OwojIDMyOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVzaG9ydF90IG9fbW9kZV90Owp0eXBlZGVm IHNob3J0IG9fZGV2X3Q7CnR5cGVkZWYgdXNob3J0X3Qgb191aWRfdDsKdHlwZWRlZiBvX3VpZF90 IG9fZ2lkX3Q7CnR5cGVkZWYgc2hvcnQgb19ubGlua190Owp0eXBlZGVmIHNob3J0IG9fcGlkX3Q7 CnR5cGVkZWYgdXNob3J0X3Qgb19pbm9fdDsKCgoKCgp0eXBlZGVmIGludCBrZXlfdDsKCgoKdHlw ZWRlZiB1bG9uZ190IG1vZGVfdDsKIyAzNTYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1w Yy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1aWRfdCBn aWRfdDsKCnR5cGVkZWYgaWRfdCB0YXNraWRfdDsKdHlwZWRlZiBpZF90IHByb2ppZF90OwoKCgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHB0 aHJlYWRfa2V5X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9tdXRleCB7CiAgICAgICAgc3Ry dWN0IHsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9tdXRleF9mbGFnMTsKICAg ICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X2ZsYWcyOwogICAgICAgICAgICAg ICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhfY2VpbGluZzsKICAgICAgICAgICAgICAgIHVpbnQz Ml90IF9fcHRocmVhZF9tdXRleF90eXBlOwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2ZsYWdz OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X3BhZFs4XTsKICAgICAgICAgICAgICAg IH0gX19wdGhyZWFkX211dGV4X2xvY2s2NDsKICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRo cmVhZF9tdXRleF9vd25lcjY0OwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7CiAgICAg ICAgdXBhZDY0X3QgX19wdGhyZWFkX211dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlw ZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfY29uZCB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg ICAgIHVpbnQ4X3QgX19wdGhyZWFkX2NvbmRfZmxhZ1s0XTsKICAgICAgICAgICAgICAgIHVpbnQz Ml90IF9fcHRocmVhZF9jb25kX3R5cGU7CiAgICAgICAgfSBfX3B0aHJlYWRfY29uZF9mbGFnczsK ICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfY29uZF9kYXRhOwp9IHB0aHJlYWRfY29uZF90OwoK CgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrIHsKICAgICAgICBpbnQzMl90IF9fcHRo cmVhZF9yd2xvY2tfcmVhZGVyczsKICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2NrX3R5 cGU7CiAgICAgICAgdWludDE2X3QgX19wdGhyZWFkX3J3bG9ja19tYWdpYzsKICAgICAgICB1cGFk NjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDFbM107CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFk X3J3bG9ja19wYWQyWzJdOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkM1sy XTsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfYXR0ciB7 CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX2F0dHJwOwp9IHB0aHJlYWRfYXR0cl90OwoKCgoKCnR5 cGVkZWYgc3RydWN0IF9wdGhyZWFkX211dGV4YXR0ciB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFk X211dGV4YXR0cnA7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBf cHRocmVhZF9jb25kYXR0ciB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX2NvbmRhdHRycDsKfSBw dGhyZWFkX2NvbmRhdHRyX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfb25jZSB7CiAgICAgICAgdXBh ZDY0X3QgX19wdGhyZWFkX29uY2VfcGFkWzRdOwp9IHB0aHJlYWRfb25jZV90OwoKCgoKCnR5cGVk ZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja2F0dHIgewogICAgICAgIHZvaWQgKl9fcHRocmVhZF9y d2xvY2thdHRycDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCnR5cGVkZWYgdWxvbmdfdCBkZXZf dDsKCgoKCgp0eXBlZGVmIHVsb25nX3QgbmxpbmtfdDsKdHlwZWRlZiBsb25nIHBpZF90OwojIDQ4 MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUv c3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgdGltZV90OwojIDQ5MSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMg NAp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCgp0eXBlZGVmIGludCB0aW1lcl90OwoKCgoKCgp0 eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9y dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25n OwojIDU1NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pMzg2LXBjLXNvbGFyaXMyLjgvMy4xL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Owp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwp0eXBlZGVmIHN0cnVjdCBfcXVhZCB7IGludCB2 YWxbMl07IH0gcXVhZF90Owp0eXBlZGVmIHF1YWRfdCBxdWFkOwoKCgoKCgojIDEgIi91c3IvaW5j bHVkZS9zeXMvc2VsZWN0LmgiIDEgMyA0CiMgMTIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi IDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc2VsZWN0LmgJMS4xNgk5OC8wNC8yNyBTTUkiIAoKCgoK IyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNsdWRlL3N5 cy90aW1lLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZS5oCTIuNjYJMDEvMDEvMTcgU01J IiAKIyA0OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXZhbCB7CiAg ICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwojIDgy ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAg aW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwojIDEwMCAiL3Vz ci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4 Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDEwMSAiL3Vz ci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMyA0CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUu aCIgMyA0CnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVy dmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDIwMyAiL3Vzci9pbmNs dWRlL3N5cy90aW1lLmgiIDMgNAp0eXBlZGVmIGxvbmdsb25nX3QgaHJ0aW1lX3Q7CiMgMzIwICIv dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CmludCBhZGp0aW1lKHN0cnVjdCB0aW1ldmFsICos IHN0cnVjdCB0aW1ldmFsICopOwojIDMzMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApp bnQgZ2V0aXRpbWVyKGludCwgc3RydWN0IGl0aW1lcnZhbCAqKTsKaW50IHV0aW1lcyhjb25zdCBj aGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKCgppbnQgc2V0aXRpbWVyKGludCwgc3Ry dWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwojIDM2OSAiL3Vzci9pbmNsdWRl L3N5cy90aW1lLmgiIDMgNAppbnQgc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQg Kik7CgpocnRpbWVfdCBnZXRocnRpbWUodm9pZCk7CmhydGltZV90IGdldGhydnRpbWUodm9pZCk7 CiMgMzg5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CmludCBnZXR0aW1lb2ZkYXkoc3Ry dWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKIyA0MTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvdGlt ZS5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWUuaAkxLjM5CTk5LzA4LzEwIFNNSSIgCgoK CiMgMSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1 ZGUvaXNvL3RpbWVfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9pc28uaAkxLjEJ OTkvMDgvMDkgU01JIiAKIyA2OSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAzIDQKc3Ry dWN0IHRtIHsKICAgICAgICBpbnQgdG1fc2VjOwogICAgICAgIGludCB0bV9taW47CiAgICAgICAg aW50IHRtX2hvdXI7CiAgICAgICAgaW50IHRtX21kYXk7CiAgICAgICAgaW50IHRtX21vbjsKICAg ICAgICBpbnQgdG1feWVhcjsKICAgICAgICBpbnQgdG1fd2RheTsKICAgICAgICBpbnQgdG1feWRh eTsKICAgICAgICBpbnQgdG1faXNkc3Q7Cn07CgoKCgpleHRlcm4gY2hhciAqYXNjdGltZShjb25z dCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBjbG9ja190IGNsb2NrKHZvaWQpOwpleHRlcm4gY2hhciAq Y3RpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwgdGlt ZV90KTsKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIHN0 cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIHRpbWVfdCBta3RpbWUo c3RydWN0IHRtICopOwpleHRlcm4gdGltZV90IHRpbWUodGltZV90ICopOwpleHRlcm4gc2l6ZV90 IHN0cmZ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0bSAq KTsKIyAyMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL3Rp bWUuaCIgMyA0CmV4dGVybiBjaGFyICpzdHJwdGltZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kiwgc3RydWN0IHRtICopOwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAxIDMgNAojIDE1ICIvdXNyL2luY2x1ZGUvc3lzL3Rp bWVfaW1wbC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWVfaW1wbC5oCTEuNQk5OS8xMC8w NSBTTUkiCiMgMzYgIi91c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMgNAp0eXBlZGVmIHN0 cnVjdCB0aW1lc3BlYyB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25nIHR2X25z ZWM7Cn0gdGltZXNwZWNfdDsKIyA2MCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMyA0 CnR5cGVkZWYgc3RydWN0IHRpbWVzcGVjIHRpbWVzdHJ1Y190OwojIDc5ICIvdXNyL2luY2x1ZGUv c3lzL3RpbWVfaW1wbC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAg c3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92 YWx1ZTsKfSBpdGltZXJzcGVjX3Q7CiMgODQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CiMg OTggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp1bmlvbiBzaWd2YWwgewogICAgICAgIGludCBz aXZhbF9pbnQ7CiAgICAgICAgdm9pZCAqc2l2YWxfcHRyOwp9OwoKCgoKc3RydWN0IHNpZ2V2ZW50 IHsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAg ICAgICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7CiAgICAgICAgdm9pZCAoKnNpZ2V2X25vdGlm eV9mdW5jdGlvbikodW5pb24gc2lndmFsKTsKICAgICAgICBwdGhyZWFkX2F0dHJfdCAqc2lnZXZf bm90aWZ5X2F0dHJpYnV0ZXM7CiAgICAgICAgaW50IF9fc2lnZXZfcGFkMjsKfTsKCgpleHRlcm4g aW50IGNsb2NrX2dldHJlcyhjbG9ja2lkX3QsIHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGlu dCBjbG9ja19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50 IGNsb2NrX3NldHRpbWUoY2xvY2tpZF90LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVy biBpbnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwgc3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3Qg Kik7CmV4dGVybiBpbnQgdGltZXJfZGVsZXRlKHRpbWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dl dG92ZXJydW4odGltZXJfdCk7CmV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSh0aW1lcl90LCBzdHJ1 Y3QgaXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwg Y29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwKICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJz cGVjICopOwpleHRlcm4gaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3Ry dWN0IHRpbWVzcGVjICopOwoKCgoKZXh0ZXJuIHZvaWQgdHpzZXQodm9pZCk7CgpleHRlcm4gY2hh ciAqdHpuYW1lWzJdOwojIDE0MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBsb25n IHRpbWV6b25lOwpleHRlcm4gaW50IGRheWxpZ2h0OwoKCgoKCmV4dGVybiBpbnQgY2Z0aW1lKGNo YXIgKiwgY2hhciAqLCBjb25zdCB0aW1lX3QgKik7CmV4dGVybiBpbnQgYXNjZnRpbWUoY2hhciAq LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0bSAqKTsKZXh0ZXJuIGxvbmcgYWx0em9uZTsK CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRhdGUoY29uc3QgY2hhciAqKTsKCgoKCgoKZXh0ZXJu IGludCBnZXRkYXRlX2VycjsKIyA0MTEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMgNAoj IDQyMyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMv c2VsZWN0LmgiIDEgMyA0CiMgNDI0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKIyAx OCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKIyA0NSAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBmZF9tYXNrOwoKdHlwZWRlZiBsb25nIGZkc19t YXNrOwojIDczICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg ZmRfc2V0IHsKCgoKICAgICAgICBsb25nIGZkc19iaXRzWygoKDEwMjQpKygoKHNpemVvZiAoZmRz X21hc2spICogOCkpLTEpKS8oKHNpemVvZiAoZmRzX21hc2spICogOCkpKV07Cn0gZmRfc2V0Owoj IDk3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKZXh0ZXJuIGludCBzZWxlY3QoaW50 LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyA1NzAg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi44LzMuMS9pbmNsdWRlL3N5 cy90eXBlcy5oIiAyIDMgNAojIDQyICIuLi9pbmNsdWRlL0dML2ludGVybmFsL2dsY29yZS5oIiAy CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19HTGNvbnRleHRSZWMgX19HTGNvbnRleHQ7CnR5cGVkZWYg c3RydWN0IF9fR0xpbnRlcmZhY2VSZWMgX19HTGludGVyZmFjZTsKIyA2NyAiLi4vaW5jbHVkZS9H TC9pbnRlcm5hbC9nbGNvcmUuaCIKdHlwZWRlZiBzdHJ1Y3QgX19HTGNvbnRleHRNb2Rlc1JlYyB7 CiAgICBHTGJvb2xlYW4gcmdiTW9kZTsKICAgIEdMYm9vbGVhbiBjb2xvckluZGV4TW9kZTsKICAg IEdMYm9vbGVhbiBkb3VibGVCdWZmZXJNb2RlOwogICAgR0xib29sZWFuIHN0ZXJlb01vZGU7Cgog ICAgR0xib29sZWFuIGhhdmVBY2N1bUJ1ZmZlcjsKICAgIEdMYm9vbGVhbiBoYXZlRGVwdGhCdWZm ZXI7CiAgICBHTGJvb2xlYW4gaGF2ZVN0ZW5jaWxCdWZmZXI7CgogICAgR0xpbnQgcmVkQml0cywg Z3JlZW5CaXRzLCBibHVlQml0cywgYWxwaGFCaXRzOwogICAgR0x1aW50IHJlZE1hc2ssIGdyZWVu TWFzaywgYmx1ZU1hc2ssIGFscGhhTWFzazsKICAgIEdMaW50IHJnYkJpdHM7CiAgICBHTGludCBp bmRleEJpdHM7CgogICAgR0xpbnQgYWNjdW1SZWRCaXRzLCBhY2N1bUdyZWVuQml0cywgYWNjdW1C bHVlQml0cywgYWNjdW1BbHBoYUJpdHM7CiAgICBHTGludCBkZXB0aEJpdHM7CiAgICBHTGludCBz dGVuY2lsQml0czsKCiAgICBHTGludCBudW1BdXhCdWZmZXJzOwoKICAgIEdMaW50IGxldmVsOwoK ICAgIEdMaW50IHBpeG1hcE1vZGU7Cn0gX19HTGNvbnRleHRNb2RlczsKIyAxMTMgIi4uL2luY2x1 ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiCnR5cGVkZWYgc3RydWN0IF9fR0xkcmF3YWJsZVJlZ2lv blJlYyBfX0dMZHJhd2FibGVSZWdpb247CnR5cGVkZWYgc3RydWN0IF9fR0xkcmF3YWJsZUJ1ZmZl clJlYyBfX0dMZHJhd2FibGVCdWZmZXI7CnR5cGVkZWYgc3RydWN0IF9fR0xkcmF3YWJsZVByaXZh dGVSZWMgX19HTGRyYXdhYmxlUHJpdmF0ZTsKCnR5cGVkZWYgc3RydWN0IF9fR0xyZWdpb25SZWN0 UmVjIHsKCiAgICBHTGludCB4MCwgeTA7CgogICAgR0xpbnQgeDEsIHkxOwp9IF9fR0xyZWdpb25S ZWN0OwoKc3RydWN0IF9fR0xkcmF3YWJsZVJlZ2lvblJlYyB7CiAgICBHTGludCBudW1SZWN0czsK ICAgIF9fR0xyZWdpb25SZWN0ICpyZWN0czsKICAgIF9fR0xyZWdpb25SZWN0IGJvdW5kaW5nUmVj dDsKfTsKIyAxNDkgIi4uL2luY2x1ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiCnR5cGVkZWYgdm9p ZCAoKl9fR0xidWZGYWxsYmFja0luaXRGbikoX19HTGRyYXdhYmxlQnVmZmVyICpidWYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19HTGRyYXdhYmxlUHJpdmF0ZSAqZ2xQ cml2LCBHTGludCBiaXRzKTsKdHlwZWRlZiB2b2lkICgqX19HTGJ1Zk1haW5Jbml0Rm4pKF9fR0xk cmF3YWJsZUJ1ZmZlciAqYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19H TGRyYXdhYmxlUHJpdmF0ZSAqZ2xQcml2LCBHTGludCBiaXRzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX19HTGJ1ZkZhbGxiYWNrSW5pdEZuIGJhY2spOwojIDE3MCAiLi4vaW5j bHVkZS9HTC9pbnRlcm5hbC9nbGNvcmUuaCIKc3RydWN0IF9fR0xkcmF3YWJsZUJ1ZmZlclJlYyB7 CgoKCiAgICBHTGludCB3aWR0aCwgaGVpZ2h0LCBkZXB0aDsKCgoKCiAgICB2b2lkICpiYXNlOwoK CgoKICAgIEdMdWludCBzaXplOwoKCgoKICAgIEdMdWludCBlbGVtZW50U2l6ZTsKICAgIEdMdWlu dCBlbGVtZW50U2l6ZUxvZzI7CgoKCgoKCiAgICBHTGludCBvdXRlcldpZHRoOwoKCgoKICAgIEdM aW50IGJ5dGVXaWR0aDsKCgoKCgogICAgdm9pZCAqaGFuZGxlOwoKCiAgICBHTGJvb2xlYW4gKCpy ZXNpemUpKF9fR0xkcmF3YWJsZUJ1ZmZlciAqYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBH TGludCB4LCBHTGludCB5LCBHTHVpbnQgd2lkdGgsIEdMdWludCBoZWlnaHQsCiAgICAgICAgICAg ICAgICAgICAgICAgIF9fR0xkcmF3YWJsZVByaXZhdGUgKmdsUHJpdiwgR0x1aW50IGJ1ZmZlck1h c2spOwogICAgdm9pZCAoKmxvY2spKF9fR0xkcmF3YWJsZUJ1ZmZlciAqYnVmLCBfX0dMZHJhd2Fi bGVQcml2YXRlICpnbFByaXYpOwogICAgdm9pZCAoKnVubG9jaykoX19HTGRyYXdhYmxlQnVmZmVy ICpidWYsIF9fR0xkcmF3YWJsZVByaXZhdGUgKmdsUHJpdik7CiAgICB2b2lkICgqZmlsbCkoX19H TGRyYXdhYmxlQnVmZmVyICpidWYsIF9fR0xkcmF3YWJsZVByaXZhdGUgKmdsUHJpdiwKICAgICAg ICAgICAgICAgIEdMdWludCB2YWwsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHcsIEdMaW50IGgp OwogICAgdm9pZCAoKmZyZWUpKF9fR0xkcmF3YWJsZUJ1ZmZlciAqYnVmLCBfX0dMZHJhd2FibGVQ cml2YXRlICpnbFByaXYpOwoKCiAgICB2b2lkICgqZnJlZVByaXZhdGUpKF9fR0xkcmF3YWJsZUJ1 ZmZlciAqYnVmLCBfX0dMZHJhd2FibGVQcml2YXRlICpnbFByaXYpOwoKCgogICAgdm9pZCAqcHJp dmF0ZTsKCgoKICAgIHZvaWQgKm90aGVyOwogICAgX19HTGJ1Zk1haW5Jbml0Rm4gbWFpbkluaXQ7 CiAgICBfX0dMYnVmRmFsbGJhY2tJbml0Rm4gZmFsbGJhY2tJbml0Owp9OwoKCgoKc3RydWN0IF9f R0xkcmF3YWJsZVByaXZhdGVSZWMgewoKCgogICAgX19HTGNvbnRleHRNb2RlcyAqbW9kZXM7CgoK CgogICAgR0x1aW50IHdpZHRoLCBoZWlnaHQ7CgoKCgogICAgR0xpbnQgeE9yaWdpbiwgeU9yaWdp bjsKIyAyNjYgIi4uL2luY2x1ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiCiAgICBHTGludCB5SW52 ZXJ0ZWQ7CgoKCgogICAgR0x1aW50IGFjY2VsQnVmZmVyTWFzazsKCgoKCiAgICBfX0dMZHJhd2Fi bGVCdWZmZXIgZnJvbnRCdWZmZXI7CiAgICBfX0dMZHJhd2FibGVCdWZmZXIgYmFja0J1ZmZlcjsK ICAgIF9fR0xkcmF3YWJsZUJ1ZmZlciBhY2N1bUJ1ZmZlcjsKICAgIF9fR0xkcmF3YWJsZUJ1ZmZl ciBkZXB0aEJ1ZmZlcjsKICAgIF9fR0xkcmF3YWJsZUJ1ZmZlciBzdGVuY2lsQnVmZmVyOwoKCgoK ICAgIF9fR0xkcmF3YWJsZVJlZ2lvbiBvd25lcnNoaXBSZWdpb247CgoKCgogICAgdm9pZCAqbG9j azsKIyAyOTkgIi4uL2luY2x1ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiCiAgICB2b2lkICooKm1h bGxvYykoc2l6ZV90IHNpemUpOwogICAgdm9pZCAqKCpjYWxsb2MpKHNpemVfdCBudW1FbGVtLCBz aXplX3QgZWxlbVNpemUpOwogICAgdm9pZCAqKCpyZWFsbG9jKSh2b2lkICpvbGRBZGRyLCBzaXpl X3QgbmV3U2l6ZSk7CiAgICB2b2lkICgqZnJlZSkodm9pZCAqYWRkcik7CgogICAgR0xib29sZWFu ICgqYWRkU3dhcFJlY3QpKF9fR0xkcmF3YWJsZVByaXZhdGUgKmdsUHJpdiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp IGhlaWdodCk7CiAgICB2b2lkICgqc2V0Q2xpcFJlY3QpKF9fR0xkcmF3YWJsZVByaXZhdGUgKmds UHJpdiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3 aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICAgdm9pZCAoKnVwZGF0ZUNsaXBSZWdpb24pKF9fR0xk cmF3YWJsZVByaXZhdGUgKmdsUHJpdik7CiAgICBHTGJvb2xlYW4gKCpyZXNpemUpKF9fR0xkcmF3 YWJsZVByaXZhdGUgKmdsUHJpdik7CiAgICB2b2lkICgqZ2V0RHJhd2FibGVTaXplKShfX0dMZHJh d2FibGVQcml2YXRlICpnbFByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq eCwgR0xpbnQgKnksIEdMdWludCAqd2lkdGgsIEdMdWludCAqaGVpZ2h0KTsKCiAgICB2b2lkICgq bG9ja0RQKShfX0dMZHJhd2FibGVQcml2YXRlICpnbFByaXYsIF9fR0xjb250ZXh0ICpnYyk7CiAg ICB2b2lkICgqdW5sb2NrRFApKF9fR0xkcmF3YWJsZVByaXZhdGUgKmdsUHJpdik7CiMgMzIzICIu Li9pbmNsdWRlL0dML2ludGVybmFsL2dsY29yZS5oIgogICAgdm9pZCAqcHJpdmF0ZTsKCiAgICB2 b2lkICgqZnJlZVByaXZhdGUpKF9fR0xkcmF3YWJsZVByaXZhdGUgKik7CgoKICAgIHZvaWQgKm90 aGVyOwp9OwojIDM1NiAiLi4vaW5jbHVkZS9HTC9pbnRlcm5hbC9nbGNvcmUuaCIKdHlwZWRlZiBz dHJ1Y3QgX19HTGltcG9ydHNSZWMgewoKICAgIHZvaWQgKiAoKm1hbGxvYykoX19HTGNvbnRleHQg KmdjLCBzaXplX3Qgc2l6ZSk7CiAgICB2b2lkICooKmNhbGxvYykoX19HTGNvbnRleHQgKmdjLCBz aXplX3QgbnVtRWxlbSwgc2l6ZV90IGVsZW1TaXplKTsKICAgIHZvaWQgKigqcmVhbGxvYykoX19H TGNvbnRleHQgKmdjLCB2b2lkICpvbGRBZGRyLCBzaXplX3QgbmV3U2l6ZSk7CiAgICB2b2lkICgq ZnJlZSkoX19HTGNvbnRleHQgKmdjLCB2b2lkICphZGRyKTsKCgogICAgdm9pZCAoKndhcm5pbmcp KF9fR0xjb250ZXh0ICpnYywgY2hhciAqZm10KTsKICAgIHZvaWQgKCpmYXRhbCkoX19HTGNvbnRl eHQgKmdjLCBjaGFyICpmbXQpOwoKCiAgICBjaGFyICooICpnZXRlbnYpKF9fR0xjb250ZXh0ICpn YywgY29uc3QgY2hhciAqdmFyKTsKICAgIGludCAoICphdG9pKShfX0dMY29udGV4dCAqZ2MsIGNv bnN0IGNoYXIgKnN0cik7CiAgICBpbnQgKCAqc3ByaW50ZikoX19HTGNvbnRleHQgKmdjLCBjaGFy ICpzdHIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKICAgIHZvaWQgKiggKmZvcGVuKShfX0dMY29u dGV4dCAqZ2MsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpOwogICAgaW50ICgg KmZjbG9zZSkoX19HTGNvbnRleHQgKmdjLCB2b2lkICpzdHJlYW0pOwogICAgaW50ICggKmZwcmlu dGYpKF9fR0xjb250ZXh0ICpnYywgdm9pZCAqc3RyZWFtLCBjb25zdCBjaGFyICpmbXQsIC4uLik7 CgoKICAgIF9fR0xkcmF3YWJsZVByaXZhdGUgKigqZ2V0RHJhd2FibGVQcml2YXRlKShfX0dMY29u dGV4dCAqZ2MpOwojIDM4NyAiLi4vaW5jbHVkZS9HTC9pbnRlcm5hbC9nbGNvcmUuaCIKICAgIHZv aWQgKm90aGVyOwp9IF9fR0xpbXBvcnRzOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19HTGV4cG9y dHNSZWMgewoKICAgIEdMYm9vbGVhbiAoKmRlc3Ryb3lDb250ZXh0KShfX0dMY29udGV4dCAqZ2Mp OwogICAgR0xib29sZWFuICgqbG9zZUN1cnJlbnQpKF9fR0xjb250ZXh0ICpnYyk7CiAgICBHTGJv b2xlYW4gKCptYWtlQ3VycmVudCkoX19HTGNvbnRleHQgKmdjKTsKICAgIEdMYm9vbGVhbiAoKnNo YXJlQ29udGV4dCkoX19HTGNvbnRleHQgKmdjLCBfX0dMY29udGV4dCAqZ2NTaGFyZSk7CiAgICBH TGJvb2xlYW4gKCpjb3B5Q29udGV4dCkoX19HTGNvbnRleHQgKmRzdCwgY29uc3QgX19HTGNvbnRl eHQgKnNyYywgR0x1aW50IG1hc2spOwogICAgR0xib29sZWFuICgqZm9yY2VDdXJyZW50KShfX0dM Y29udGV4dCAqZ2MpOwoKCiAgICBHTGJvb2xlYW4gKCpub3RpZnlSZXNpemUpKF9fR0xjb250ZXh0 ICpnYyk7CiAgICB2b2lkICgqbm90aWZ5RGVzdHJveSkoX19HTGNvbnRleHQgKmdjKTsKICAgIHZv aWQgKCpub3RpZnlTd2FwQnVmZmVycykoX19HTGNvbnRleHQgKmdjKTsKCgogICAgc3RydWN0IF9f R0xkaXNwYXRjaFN0YXRlUmVjKiAoKmRpc3BhdGNoRXhlYykoX19HTGNvbnRleHQgKmdjKTsKICAg IHZvaWQgKCpiZWdpbkRpc3BhdGNoT3ZlcnJpZGUpKF9fR0xjb250ZXh0ICpnYyk7CiAgICB2b2lk ICgqZW5kRGlzcGF0Y2hPdmVycmlkZSkoX19HTGNvbnRleHQgKmdjKTsKfSBfX0dMZXhwb3J0czsK IyA0MjMgIi4uL2luY2x1ZGUvR0wvaW50ZXJuYWwvZ2xjb3JlLmgiCnN0cnVjdCBfX0dMaW50ZXJm YWNlUmVjIHsKICAgIF9fR0xpbXBvcnRzIGltcG9ydHM7CiAgICBfX0dMZXhwb3J0cyBleHBvcnRz Owp9OwoKZXh0ZXJuIF9fR0xjb250ZXh0ICpfX2dsQ29yZUNyZWF0ZUNvbnRleHQoX19HTGltcG9y dHMgKiwgX19HTGNvbnRleHRNb2RlcyAqKTsKZXh0ZXJuIHZvaWQgX19nbENvcmVOb3BEaXNwYXRj aCh2b2lkKTsKIyAyMDUgImdsaGVhZGVyLmgiIDIKIyAyOTMgImdsaGVhZGVyLmgiCnR5cGVkZWYg dW5pb24geyBHTGZsb2F0IGY7IEdMaW50IGk7IH0gZmlfdHlwZTsKIyAyOCAiaW1hZ2UuYyIgMgoj IDEgImNvbG9ybWFjLmgiIDEKIyAzOCAiY29sb3JtYWMuaCIKIyAxICJjb25maWcuaCIgMQojIDM5 ICJjb2xvcm1hYy5oIiAyCiMgMSAibWFjcm9zLmgiIDEKIyA0MCAiY29sb3JtYWMuaCIgMgojIDEg Im1tYXRoLmgiIDEKIyA0MCAibW1hdGguaCIKIyAxICJpbXBvcnRzLmgiIDEKIyA5OSAiaW1wb3J0 cy5oIgpleHRlcm4gdm9pZCAqCl9tZXNhX21hbGxvYyggc2l6ZV90IGJ5dGVzICk7CgpleHRlcm4g dm9pZCAqCl9tZXNhX2NhbGxvYyggc2l6ZV90IGJ5dGVzICk7CgpleHRlcm4gdm9pZApfbWVzYV9m cmVlKCB2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkICoKX21lc2FfYWxpZ25fbWFsbG9jKCBzaXpl X3QgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgYWxpZ25tZW50ICk7CgpleHRlcm4gdm9pZCAqCl9tZXNh X2FsaWduX2NhbGxvYyggc2l6ZV90IGJ5dGVzLCB1bnNpZ25lZCBsb25nIGFsaWdubWVudCApOwoK ZXh0ZXJuIHZvaWQKX21lc2FfYWxpZ25fZnJlZSggdm9pZCAqcHRyICk7CgpleHRlcm4gdm9pZCAq Cl9tZXNhX21lbWNweSggdm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbiApOwoK ZXh0ZXJuIHZvaWQKX21lc2FfbWVtc2V0KCB2b2lkICpkc3QsIGludCB2YWwsIHNpemVfdCBuICk7 CgpleHRlcm4gdm9pZApfbWVzYV9tZW1zZXQxNiggdW5zaWduZWQgc2hvcnQgKmRzdCwgdW5zaWdu ZWQgc2hvcnQgdmFsLCBzaXplX3QgbiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfYnplcm8oIHZvaWQg KmRzdCwgc2l6ZV90IG4gKTsKCgpleHRlcm4gZG91YmxlCl9tZXNhX3Npbihkb3VibGUgYSk7Cgpl eHRlcm4gZG91YmxlCl9tZXNhX2Nvcyhkb3VibGUgYSk7CgpleHRlcm4gZG91YmxlCl9tZXNhX3Nx cnQoZG91YmxlIHgpOwoKZXh0ZXJuIGRvdWJsZQpfbWVzYV9wb3coZG91YmxlIHgsIGRvdWJsZSB5 KTsKCgpleHRlcm4gY2hhciAqCl9tZXNhX2dldGVudiggY29uc3QgY2hhciAqdmFyICk7CgpleHRl cm4gY2hhciAqCl9tZXNhX3N0cnN0ciggY29uc3QgY2hhciAqaGF5c3RhY2ssIGNvbnN0IGNoYXIg Km5lZWRsZSApOwoKZXh0ZXJuIGNoYXIgKgpfbWVzYV9zdHJuY2F0KCBjaGFyICpkZXN0LCBjb25z dCBjaGFyICpzcmMsIHNpemVfdCBuICk7CgpleHRlcm4gY2hhciAqCl9tZXNhX3N0cmNweSggY2hh ciAqZGVzdCwgY29uc3QgY2hhciAqc3JjICk7CgpleHRlcm4gY2hhciAqCl9tZXNhX3N0cm5jcHko IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IG4gKTsKCmV4dGVybiBzaXplX3QK X21lc2Ffc3RybGVuKCBjb25zdCBjaGFyICpzICk7CgpleHRlcm4gaW50Cl9tZXNhX3N0cmNtcCgg Y29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyICk7CgpleHRlcm4gaW50Cl9tZXNhX3N0cm5j bXAoIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMiwgc2l6ZV90IG4gKTsKCmV4dGVybiBp bnQKX21lc2FfYXRvaSggY29uc3QgY2hhciAqcyApOwoKZXh0ZXJuIGludApfbWVzYV9zcHJpbnRm KCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICk7CgpleHRlcm4gdm9pZApfbWVzYV9w cmludGYoIGNvbnN0IGNoYXIgKmZtdFN0cmluZywgLi4uICk7CgoKZXh0ZXJuIHZvaWQKX21lc2Ff d2FybmluZyggX19HTGNvbnRleHQgKmdjLCBjb25zdCBjaGFyICpmbXRTdHJpbmcsIC4uLiApOwoK ZXh0ZXJuIHZvaWQKX21lc2FfcHJvYmxlbSggY29uc3QgX19HTGNvbnRleHQgKmN0eCwgY29uc3Qg Y2hhciAqcyApOwoKZXh0ZXJuIHZvaWQKX21lc2FfZXJyb3IoIF9fR0xjb250ZXh0ICpjdHgsIEdM ZW51bSBlcnJvciwgY29uc3QgY2hhciAqZm10U3RyaW5nLCAuLi4gKTsKCmV4dGVybiB2b2lkCl9t ZXNhX2RlYnVnKCBjb25zdCBfX0dMY29udGV4dCAqY3R4LCBjb25zdCBjaGFyICpmbXRTdHJpbmcs IC4uLiApOwoKCmV4dGVybiB2b2lkCl9tZXNhX2luaXRfZGVmYXVsdF9pbXBvcnRzKCBfX0dMaW1w b3J0cyAqaW1wb3J0cywgdm9pZCAqZHJpdmVyQ3R4ICk7CiMgNDEgIm1tYXRoLmgiIDIKIyAxNTUg Im1tYXRoLmgiCmV4dGVybiBmbG9hdCBnbF9zcXJ0KGZsb2F0IHgpOwojIDM0NiAibW1hdGguaCIK c3RhdGljIF9faW5saW5lX18gaW50IGlmbG9vcihmbG9hdCBmKQp7CgogICBpbnQgYWksIGJpOwog ICBkb3VibGUgYWYsIGJmOwogICB1bmlvbiB7IGludCBpOyBmbG9hdCBmOyB9IHU7CgogICBhZiA9 ICgzIDw8IDIyKSArIDAuNSArIChkb3VibGUpZjsKICAgYmYgPSAoMyA8PCAyMikgKyAwLjUgLSAo ZG91YmxlKWY7CiAgIHUuZiA9IGFmOyBhaSA9IHUuaTsKICAgdS5mID0gYmY7IGJpID0gdS5pOwog ICByZXR1cm4gKGFpIC0gYmkpID4+IDE7CgoKCgp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlu dCBpY2VpbChmbG9hdCBmKQp7CgogICBpbnQgYWksIGJpOwogICBkb3VibGUgYWYsIGJmOwogICB1 bmlvbiB7IGludCBpOyBmbG9hdCBmOyB9IHU7CiAgIGFmID0gKDMgPDwgMjIpICsgMC41ICsgKGRv dWJsZSlmOwogICBiZiA9ICgzIDw8IDIyKSArIDAuNSAtIChkb3VibGUpZjsKICAgdS5mID0gYWY7 IGFpID0gdS5pOwogICB1LmYgPSBiZjsgYmkgPSB1Lmk7CiAgIHJldHVybiAoYWkgLSBiaSArIDEp ID4+IDE7CgoKCgp9CiMgNDM5ICJtbWF0aC5oIgpleHRlcm4gZmxvYXQgX21lc2FfdWJ5dGVfdG9f ZmxvYXRfY29sb3JfdGFiWzI1Nl07CiMgNjA2ICJtbWF0aC5oIgpzdGF0aWMgX19pbmxpbmVfXyBp bnQgSVNfSU5GX09SX05BTiggZmxvYXQgeCApCnsKICAgdW5pb24ge2Zsb2F0IGY7IGludCBpO30g dG1wOwogICB0bXAuZiA9IHg7CiAgIHJldHVybiAhKGludCkoKHVuc2lnbmVkIGludCkoKHRtcC5p ICYgMHg3ZmZmZmZmZiktMHg3ZjgwMDAwMCkgPj4gMzEpOwp9CiMgNjM5ICJtbWF0aC5oIgpzdGF0 aWMgX19pbmxpbmVfXyBHTGZsb2F0IExPRzIoR0xmbG9hdCB2YWwpCnsKICAgR0xpbnQgKmV4cF9w dHIgPSAoR0xpbnQgKikgJnZhbDsKICAgR0xpbnQgeCA9ICpleHBfcHRyOwogICBjb25zdCBHTGlu dCBsb2dfMiA9ICgoeCA+PiAyMykgJiAyNTUpIC0gMTI4OwogICB4ICY9IH4oMjU1IDw8IDIzKTsK ICAgeCArPSAxMjcgPDwgMjM7CiAgICpleHBfcHRyID0geDsKICAgdmFsID0gKCgtMS4wZi8zKSAq IHZhbCArIDIpICogdmFsIC0gMi4wZi8zOwogICByZXR1cm4gdmFsICsgbG9nXzI7Cn0KIyA2NjIg Im1tYXRoLmgiCmV4dGVybiB2b2lkCl9tZXNhX2luaXRfbWF0aCh2b2lkKTsKCgpleHRlcm4gR0x1 aW50Cl9tZXNhX2JpdGNvdW50KEdMdWludCBuKTsKIyA0MSAiY29sb3JtYWMuaCIgMgojIDI5ICJp bWFnZS5jIiAyCiMgMSAiY29udGV4dC5oIiAxCiMgMzIgImNvbnRleHQuaCIKIyAxICJnbGFwaS5o IiAxCiMgMzQgImdsYXBpLmgiCnN0cnVjdCBfZ2xhcGlfdGFibGU7Cgp0eXBlZGVmIHZvaWQgKCpf Z2xhcGlfd2FybmluZ19mdW5jKSh2b2lkICpjdHgsIGNvbnN0IGNoYXIgKnN0ciwgLi4uKTsKCgpl eHRlcm4gdm9pZCAqX2dsYXBpX0NvbnRleHQ7CgpleHRlcm4gc3RydWN0IF9nbGFwaV90YWJsZSAq X2dsYXBpX0Rpc3BhdGNoOwoKCmV4dGVybiB2b2lkCl9nbGFwaV9ub29wX2VuYWJsZV93YXJuaW5n cyhHTGJvb2xlYW4gZW5hYmxlKTsKCmV4dGVybiB2b2lkCl9nbGFwaV9zZXRfd2FybmluZ19mdW5j KF9nbGFwaV93YXJuaW5nX2Z1bmMgZnVuYyk7CgpleHRlcm4gdm9pZApfZ2xhcGlfY2hlY2tfbXVs dGl0aHJlYWQodm9pZCk7CgoKZXh0ZXJuIHZvaWQKX2dsYXBpX3NldF9jb250ZXh0KHZvaWQgKmNv bnRleHQpOwoKCmV4dGVybiB2b2lkICoKX2dsYXBpX2dldF9jb250ZXh0KHZvaWQpOwoKCmV4dGVy biB2b2lkCl9nbGFwaV9zZXRfZGlzcGF0Y2goc3RydWN0IF9nbGFwaV90YWJsZSAqZGlzcGF0Y2gp OwoKCmV4dGVybiBzdHJ1Y3QgX2dsYXBpX3RhYmxlICoKX2dsYXBpX2dldF9kaXNwYXRjaCh2b2lk KTsKCgpleHRlcm4gaW50Cl9nbGFwaV9iZWdpbl9kaXNwYXRjaF9vdmVycmlkZShzdHJ1Y3QgX2ds YXBpX3RhYmxlICpvdmVycmlkZSk7CgoKZXh0ZXJuIHZvaWQKX2dsYXBpX2VuZF9kaXNwYXRjaF9v dmVycmlkZShpbnQgbGF5ZXIpOwoKCnN0cnVjdCBfZ2xhcGlfdGFibGUgKgpfZ2xhcGlfZ2V0X292 ZXJyaWRlX2Rpc3BhdGNoKGludCBsYXllcik7CgoKZXh0ZXJuIEdMdWludApfZ2xhcGlfZ2V0X2Rp c3BhdGNoX3RhYmxlX3NpemUodm9pZCk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKgpfZ2xhcGlfZ2V0 X3ZlcnNpb24odm9pZCk7CgoKZXh0ZXJuIHZvaWQKX2dsYXBpX2NoZWNrX3RhYmxlKGNvbnN0IHN0 cnVjdCBfZ2xhcGlfdGFibGUgKnRhYmxlKTsKCgpleHRlcm4gR0xib29sZWFuCl9nbGFwaV9hZGRf ZW50cnlwb2ludChjb25zdCBjaGFyICpmdW5jTmFtZSwgR0x1aW50IG9mZnNldCk7CgoKZXh0ZXJu IEdMaW50Cl9nbGFwaV9nZXRfcHJvY19vZmZzZXQoY29uc3QgY2hhciAqZnVuY05hbWUpOwoKCmV4 dGVybiBjb25zdCBHTHZvaWQgKgpfZ2xhcGlfZ2V0X3Byb2NfYWRkcmVzcyhjb25zdCBjaGFyICpm dW5jTmFtZSk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKgpfZ2xhcGlfZ2V0X3Byb2NfbmFtZShHTHVp bnQgb2Zmc2V0KTsKIyAzMyAiY29udGV4dC5oIiAyCiMgMSAibXR5cGVzLmgiIDEKIyAzOCAibXR5 cGVzLmgiCiMgMSAiZ2xhcGl0YWJsZS5oIiAxCgoKCgoKCnN0cnVjdCBfZ2xhcGlfdGFibGUKewog ICB2b2lkICgqTmV3TGlzdCkoR0x1aW50IGxpc3QsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkVu ZExpc3QpKHZvaWQpOwogICB2b2lkICgqQ2FsbExpc3QpKEdMdWludCBsaXN0KTsKICAgdm9pZCAo KkNhbGxMaXN0cykoR0xzaXplaSBuLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogbGlzdHMp OwogICB2b2lkICgqRGVsZXRlTGlzdHMpKEdMdWludCBsaXN0LCBHTHNpemVpIHJhbmdlKTsKICAg R0x1aW50ICgqR2VuTGlzdHMpKEdMc2l6ZWkgcmFuZ2UpOwogICB2b2lkICgqTGlzdEJhc2UpKEdM dWludCBiYXNlKTsKICAgdm9pZCAoKkJlZ2luKShHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpCaXRt YXApKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGZsb2F0IHhvcmlnLCBHTGZsb2F0 IHlvcmlnLCBHTGZsb2F0IHhtb3ZlLCBHTGZsb2F0IHltb3ZlLCBjb25zdCBHTHVieXRlICogYml0 bWFwKTsKICAgdm9pZCAoKkNvbG9yM2IpKEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVlbiwgR0xieXRl IGJsdWUpOwogICB2b2lkICgqQ29sb3IzYnYpKGNvbnN0IEdMYnl0ZSAqIHYpOwogICB2b2lkICgq Q29sb3IzZCkoR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSk7CiAg IHZvaWQgKCpDb2xvcjNkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKkNvbG9yM2Yp KEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpOwogICB2b2lkICgqQ29s b3IzZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKkNvbG9yM2kpKEdMaW50IHJlZCwg R0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUpOwogICB2b2lkICgqQ29sb3IzaXYpKGNvbnN0IEdMaW50 ICogdik7CiAgIHZvaWQgKCpDb2xvcjNzKShHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xz aG9ydCBibHVlKTsKICAgdm9pZCAoKkNvbG9yM3N2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZv aWQgKCpDb2xvcjN1YikoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSk7 CiAgIHZvaWQgKCpDb2xvcjN1YnYpKGNvbnN0IEdMdWJ5dGUgKiB2KTsKICAgdm9pZCAoKkNvbG9y M3VpKShHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlKTsKICAgdm9pZCAoKkNv bG9yM3VpdikoY29uc3QgR0x1aW50ICogdik7CiAgIHZvaWQgKCpDb2xvcjN1cykoR0x1c2hvcnQg cmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7CiAgIHZvaWQgKCpDb2xvcjN1c3Yp KGNvbnN0IEdMdXNob3J0ICogdik7CiAgIHZvaWQgKCpDb2xvcjRiKShHTGJ5dGUgcmVkLCBHTGJ5 dGUgZ3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxwaGEpOwogICB2b2lkICgqQ29sb3I0YnYp KGNvbnN0IEdMYnl0ZSAqIHYpOwogICB2b2lkICgqQ29sb3I0ZCkoR0xkb3VibGUgcmVkLCBHTGRv dWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSwgR0xkb3VibGUgYWxwaGEpOwogICB2b2lkICgqQ29s b3I0ZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpDb2xvcjRmKShHTGZsb2F0IHJl ZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKTsKICAgdm9pZCAo KkNvbG9yNGZ2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpDb2xvcjRpKShHTGludCBy ZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlLCBHTGludCBhbHBoYSk7CiAgIHZvaWQgKCpDb2xv cjRpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKkNvbG9yNHMpKEdMc2hvcnQgcmVkLCBH THNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUsIEdMc2hvcnQgYWxwaGEpOwogICB2b2lkICgqQ29s b3I0c3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKkNvbG9yNHViKShHTHVieXRlIHJl ZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhKTsKICAgdm9pZCAo KkNvbG9yNHVidikoY29uc3QgR0x1Ynl0ZSAqIHYpOwogICB2b2lkICgqQ29sb3I0dWkpKEdMdWlu dCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSk7CiAgIHZvaWQg KCpDb2xvcjR1aXYpKGNvbnN0IEdMdWludCAqIHYpOwogICB2b2lkICgqQ29sb3I0dXMpKEdMdXNo b3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUsIEdMdXNob3J0IGFscGhhKTsK ICAgdm9pZCAoKkNvbG9yNHVzdikoY29uc3QgR0x1c2hvcnQgKiB2KTsKICAgdm9pZCAoKkVkZ2VG bGFnKShHTGJvb2xlYW4gZmxhZyk7CiAgIHZvaWQgKCpFZGdlRmxhZ3YpKGNvbnN0IEdMYm9vbGVh biAqIGZsYWcpOwogICB2b2lkICgqRW5kKSh2b2lkKTsKICAgdm9pZCAoKkluZGV4ZCkoR0xkb3Vi bGUgYyk7CiAgIHZvaWQgKCpJbmRleGR2KShjb25zdCBHTGRvdWJsZSAqIGMpOwogICB2b2lkICgq SW5kZXhmKShHTGZsb2F0IGMpOwogICB2b2lkICgqSW5kZXhmdikoY29uc3QgR0xmbG9hdCAqIGMp OwogICB2b2lkICgqSW5kZXhpKShHTGludCBjKTsKICAgdm9pZCAoKkluZGV4aXYpKGNvbnN0IEdM aW50ICogYyk7CiAgIHZvaWQgKCpJbmRleHMpKEdMc2hvcnQgYyk7CiAgIHZvaWQgKCpJbmRleHN2 KShjb25zdCBHTHNob3J0ICogYyk7CiAgIHZvaWQgKCpOb3JtYWwzYikoR0xieXRlIG54LCBHTGJ5 dGUgbnksIEdMYnl0ZSBueik7CiAgIHZvaWQgKCpOb3JtYWwzYnYpKGNvbnN0IEdMYnl0ZSAqIHYp OwogICB2b2lkICgqTm9ybWFsM2QpKEdMZG91YmxlIG54LCBHTGRvdWJsZSBueSwgR0xkb3VibGUg bnopOwogICB2b2lkICgqTm9ybWFsM2R2KShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgq Tm9ybWFsM2YpKEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnopOwogICB2b2lkICgq Tm9ybWFsM2Z2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpOb3JtYWwzaSkoR0xpbnQg bngsIEdMaW50IG55LCBHTGludCBueik7CiAgIHZvaWQgKCpOb3JtYWwzaXYpKGNvbnN0IEdMaW50 ICogdik7CiAgIHZvaWQgKCpOb3JtYWwzcykoR0xzaG9ydCBueCwgR0xzaG9ydCBueSwgR0xzaG9y dCBueik7CiAgIHZvaWQgKCpOb3JtYWwzc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAo KlJhc3RlclBvczJkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKICAgdm9pZCAoKlJhc3RlclBv czJkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczJmKShHTGZsb2F0 IHgsIEdMZmxvYXQgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZnYpKGNvbnN0IEdMZmxvYXQgKiB2 KTsKICAgdm9pZCAoKlJhc3RlclBvczJpKShHTGludCB4LCBHTGludCB5KTsKICAgdm9pZCAoKlJh c3RlclBvczJpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczJzKShHTHNo b3J0IHgsIEdMc2hvcnQgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3Myc3YpKGNvbnN0IEdMc2hvcnQg KiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczNkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRv dWJsZSB6KTsKICAgdm9pZCAoKlJhc3RlclBvczNkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlJhc3RlclBvczNmKShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAg dm9pZCAoKlJhc3RlclBvczNmdikoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqUmFzdGVy UG9zM2kpKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOwogICB2b2lkICgqUmFzdGVyUG9zM2l2 KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqUmFzdGVyUG9zM3MpKEdMc2hvcnQgeCwgR0xz aG9ydCB5LCBHTHNob3J0IHopOwogICB2b2lkICgqUmFzdGVyUG9zM3N2KShjb25zdCBHTHNob3J0 ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3M0ZCkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk b3VibGUgeiwgR0xkb3VibGUgdyk7CiAgIHZvaWQgKCpSYXN0ZXJQb3M0ZHYpKGNvbnN0IEdMZG91 YmxlICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3M0ZikoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgdm9pZCAoKlJhc3RlclBvczRmdikoY29uc3QgR0xmbG9h dCAqIHYpOwogICB2b2lkICgqUmFzdGVyUG9zNGkpKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHos IEdMaW50IHcpOwogICB2b2lkICgqUmFzdGVyUG9zNGl2KShjb25zdCBHTGludCAqIHYpOwogICB2 b2lkICgqUmFzdGVyUG9zNHMpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hv cnQgdyk7CiAgIHZvaWQgKCpSYXN0ZXJQb3M0c3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p ZCAoKlJlY3RkKShHTGRvdWJsZSB4MSwgR0xkb3VibGUgeTEsIEdMZG91YmxlIHgyLCBHTGRvdWJs ZSB5Mik7CiAgIHZvaWQgKCpSZWN0ZHYpKGNvbnN0IEdMZG91YmxlICogdjEsIGNvbnN0IEdMZG91 YmxlICogdjIpOwogICB2b2lkICgqUmVjdGYpKEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxv YXQgeDIsIEdMZmxvYXQgeTIpOwogICB2b2lkICgqUmVjdGZ2KShjb25zdCBHTGZsb2F0ICogdjEs IGNvbnN0IEdMZmxvYXQgKiB2Mik7CiAgIHZvaWQgKCpSZWN0aSkoR0xpbnQgeDEsIEdMaW50IHkx LCBHTGludCB4MiwgR0xpbnQgeTIpOwogICB2b2lkICgqUmVjdGl2KShjb25zdCBHTGludCAqIHYx LCBjb25zdCBHTGludCAqIHYyKTsKICAgdm9pZCAoKlJlY3RzKShHTHNob3J0IHgxLCBHTHNob3J0 IHkxLCBHTHNob3J0IHgyLCBHTHNob3J0IHkyKTsKICAgdm9pZCAoKlJlY3RzdikoY29uc3QgR0xz aG9ydCAqIHYxLCBjb25zdCBHTHNob3J0ICogdjIpOwogICB2b2lkICgqVGV4Q29vcmQxZCkoR0xk b3VibGUgcyk7CiAgIHZvaWQgKCpUZXhDb29yZDFkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlRleENvb3JkMWYpKEdMZmxvYXQgcyk7CiAgIHZvaWQgKCpUZXhDb29yZDFmdikoY29u c3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQxaSkoR0xpbnQgcyk7CiAgIHZvaWQg KCpUZXhDb29yZDFpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkMXMpKEdM c2hvcnQgcyk7CiAgIHZvaWQgKCpUZXhDb29yZDFzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2 b2lkICgqVGV4Q29vcmQyZCkoR0xkb3VibGUgcywgR0xkb3VibGUgdCk7CiAgIHZvaWQgKCpUZXhD b29yZDJkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkMmYpKEdMZmxv YXQgcywgR0xmbG9hdCB0KTsKICAgdm9pZCAoKlRleENvb3JkMmZ2KShjb25zdCBHTGZsb2F0ICog dik7CiAgIHZvaWQgKCpUZXhDb29yZDJpKShHTGludCBzLCBHTGludCB0KTsKICAgdm9pZCAoKlRl eENvb3JkMml2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQycykoR0xzaG9y dCBzLCBHTHNob3J0IHQpOwogICB2b2lkICgqVGV4Q29vcmQyc3YpKGNvbnN0IEdMc2hvcnQgKiB2 KTsKICAgdm9pZCAoKlRleENvb3JkM2QpKEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91Ymxl IHIpOwogICB2b2lkICgqVGV4Q29vcmQzZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQg KCpUZXhDb29yZDNmKShHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByKTsKICAgdm9pZCAo KlRleENvb3JkM2Z2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDNpKShH TGludCBzLCBHTGludCB0LCBHTGludCByKTsKICAgdm9pZCAoKlRleENvb3JkM2l2KShjb25zdCBH TGludCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQzcykoR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdM c2hvcnQgcik7CiAgIHZvaWQgKCpUZXhDb29yZDNzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2 b2lkICgqVGV4Q29vcmQ0ZCkoR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciwgR0xk b3VibGUgcSk7CiAgIHZvaWQgKCpUZXhDb29yZDRkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlRleENvb3JkNGYpKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxv YXQgcSk7CiAgIHZvaWQgKCpUZXhDb29yZDRmdikoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lk ICgqVGV4Q29vcmQ0aSkoR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSk7CiAgIHZv aWQgKCpUZXhDb29yZDRpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkNHMp KEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSk7CiAgIHZvaWQgKCpU ZXhDb29yZDRzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqVmVydGV4MmQpKEdMZG91 YmxlIHgsIEdMZG91YmxlIHkpOwogICB2b2lkICgqVmVydGV4MmR2KShjb25zdCBHTGRvdWJsZSAq IHYpOwogICB2b2lkICgqVmVydGV4MmYpKEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKICAgdm9pZCAo KlZlcnRleDJmdikoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4MmkpKEdMaW50 IHgsIEdMaW50IHkpOwogICB2b2lkICgqVmVydGV4Mml2KShjb25zdCBHTGludCAqIHYpOwogICB2 b2lkICgqVmVydGV4MnMpKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKICAgdm9pZCAoKlZlcnRleDJz dikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqVmVydGV4M2QpKEdMZG91YmxlIHgsIEdM ZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqVmVydGV4M2R2KShjb25zdCBHTGRvdWJs ZSAqIHYpOwogICB2b2lkICgqVmVydGV4M2YpKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0 IHopOwogICB2b2lkICgqVmVydGV4M2Z2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpW ZXJ0ZXgzaSkoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7CiAgIHZvaWQgKCpWZXJ0ZXgzaXYp KGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXgzcykoR0xzaG9ydCB4LCBHTHNob3J0 IHksIEdMc2hvcnQgeik7CiAgIHZvaWQgKCpWZXJ0ZXgzc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsK ICAgdm9pZCAoKlZlcnRleDRkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBH TGRvdWJsZSB3KTsKICAgdm9pZCAoKlZlcnRleDRkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlZlcnRleDRmKShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0 IHcpOwogICB2b2lkICgqVmVydGV4NGZ2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpW ZXJ0ZXg0aSkoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CiAgIHZvaWQgKCpW ZXJ0ZXg0aXYpKGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXg0cykoR0xzaG9ydCB4 LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKICAgdm9pZCAoKlZlcnRleDRzdiko Y29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqQ2xpcFBsYW5lKShHTGVudW0gcGxhbmUsIGNv bnN0IEdMZG91YmxlICogZXF1YXRpb24pOwogICB2b2lkICgqQ29sb3JNYXRlcmlhbCkoR0xlbnVt IGZhY2UsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkN1bGxGYWNlKShHTGVudW0gbW9kZSk7CiAg IHZvaWQgKCpGb2dmKShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqRm9n ZnYpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpGb2dp KShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZvZ2l2KShHTGVudW0gcG5h bWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyb250RmFjZSkoR0xlbnVtIG1v ZGUpOwogICB2b2lkICgqSGludCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOwogICB2b2lk ICgqTGlnaHRmKShHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAg IHZvaWQgKCpMaWdodGZ2KShHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h dCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpMaWdodGkpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1l LCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpMaWdodGl2KShHTGVudW0gbGlnaHQsIEdMZW51bSBw bmFtZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqTGlnaHRNb2RlbGYpKEdMZW51 bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpMaWdodE1vZGVsZnYpKEdMZW51bSBw bmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpMaWdodE1vZGVsaSkoR0xl bnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpMaWdodE1vZGVsaXYpKEdMZW51bSBw bmFtZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqTGluZVN0aXBwbGUpKEdMaW50 IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybik7CiAgIHZvaWQgKCpMaW5lV2lkdGgpKEdMZmxvYXQg d2lkdGgpOwogICB2b2lkICgqTWF0ZXJpYWxmKShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKk1hdGVyaWFsZnYpKEdMZW51bSBmYWNlLCBHTGVudW0g cG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqTWF0ZXJpYWxpKShHTGVu dW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpNYXRlcmlhbGl2 KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZv aWQgKCpQb2ludFNpemUpKEdMZmxvYXQgc2l6ZSk7CiAgIHZvaWQgKCpQb2x5Z29uTW9kZSkoR0xl bnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKlBvbHlnb25TdGlwcGxlKShjb25zdCBH THVieXRlICogbWFzayk7CiAgIHZvaWQgKCpTY2lzc29yKShHTGludCB4LCBHTGludCB5LCBHTHNp emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAgIHZvaWQgKCpTaGFkZU1vZGVsKShHTGVudW0g bW9kZSk7CiAgIHZvaWQgKCpUZXhQYXJhbWV0ZXJmKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqVGV4UGFyYW1ldGVyZnYpKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhQ YXJhbWV0ZXJpKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAg dm9pZCAoKlRleFBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0 IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKlRleEltYWdlMUQpKEdMZW51bSB0YXJnZXQsIEdM aW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9y ZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4ZWxzKTsK ICAgdm9pZCAoKlRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBp bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRl ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAg IHZvaWQgKCpUZXhFbnZmKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0pOwogICB2b2lkICgqVGV4RW52ZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u c3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhFbnZpKShHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKlRleEVudml2KShHTGVudW0gdGFy Z2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKlRleEdl bmQpKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSBwYXJhbSk7CiAgIHZvaWQg KCpUZXhHZW5kdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICog cGFyYW1zKTsKICAgdm9pZCAoKlRleEdlbmYpKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKlRleEdlbmZ2KShHTGVudW0gY29vcmQsIEdMZW51bSBw bmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhHZW5pKShHTGVudW0g Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2b2lkICgqVGV4R2VuaXYpKEdM ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpGZWVkYmFja0J1ZmZlcikoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xmbG9hdCAqIGJ1 ZmZlcik7CiAgIHZvaWQgKCpTZWxlY3RCdWZmZXIpKEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICogYnVm ZmVyKTsKICAgR0xpbnQgKCpSZW5kZXJNb2RlKShHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpJbml0 TmFtZXMpKHZvaWQpOwogICB2b2lkICgqTG9hZE5hbWUpKEdMdWludCBuYW1lKTsKICAgdm9pZCAo KlBhc3NUaHJvdWdoKShHTGZsb2F0IHRva2VuKTsKICAgdm9pZCAoKlBvcE5hbWUpKHZvaWQpOwog ICB2b2lkICgqUHVzaE5hbWUpKEdMdWludCBuYW1lKTsKICAgdm9pZCAoKkRyYXdCdWZmZXIpKEdM ZW51bSBtb2RlKTsKICAgdm9pZCAoKkNsZWFyKShHTGJpdGZpZWxkIG1hc2spOwogICB2b2lkICgq Q2xlYXJBY2N1bSkoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xm bG9hdCBhbHBoYSk7CiAgIHZvaWQgKCpDbGVhckluZGV4KShHTGZsb2F0IGMpOwogICB2b2lkICgq Q2xlYXJDb2xvcikoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwg R0xjbGFtcGYgYWxwaGEpOwogICB2b2lkICgqQ2xlYXJTdGVuY2lsKShHTGludCBzKTsKICAgdm9p ZCAoKkNsZWFyRGVwdGgpKEdMY2xhbXBkIGRlcHRoKTsKICAgdm9pZCAoKlN0ZW5jaWxNYXNrKShH THVpbnQgbWFzayk7CiAgIHZvaWQgKCpDb2xvck1hc2spKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVh biBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7CiAgIHZvaWQgKCpEZXB0 aE1hc2spKEdMYm9vbGVhbiBmbGFnKTsKICAgdm9pZCAoKkluZGV4TWFzaykoR0x1aW50IG1hc2sp OwogICB2b2lkICgqQWNjdW0pKEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSk7CiAgIHZvaWQgKCpE aXNhYmxlKShHTGVudW0gY2FwKTsKICAgdm9pZCAoKkVuYWJsZSkoR0xlbnVtIGNhcCk7CiAgIHZv aWQgKCpGaW5pc2gpKHZvaWQpOwogICB2b2lkICgqRmx1c2gpKHZvaWQpOwogICB2b2lkICgqUG9w QXR0cmliKSh2b2lkKTsKICAgdm9pZCAoKlB1c2hBdHRyaWIpKEdMYml0ZmllbGQgbWFzayk7CiAg IHZvaWQgKCpNYXAxZCkoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBH TGludCBzdHJpZGUsIEdMaW50IG9yZGVyLCBjb25zdCBHTGRvdWJsZSAqIHBvaW50cyk7CiAgIHZv aWQgKCpNYXAxZikoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQg c3RyaWRlLCBHTGludCBvcmRlciwgY29uc3QgR0xmbG9hdCAqIHBvaW50cyk7CiAgIHZvaWQgKCpN YXAyZCkoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3Ry aWRlLCBHTGludCB1b3JkZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlk ZSwgR0xpbnQgdm9yZGVyLCBjb25zdCBHTGRvdWJsZSAqIHBvaW50cyk7CiAgIHZvaWQgKCpNYXAy ZikoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQgdXN0cmlkZSwg R0xpbnQgdW9yZGVyLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGludCB2c3RyaWRlLCBHTGlu dCB2b3JkZXIsIGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqTWFwR3JpZDFkKShH TGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyKTsKICAgdm9pZCAoKk1hcEdyaWQxZiko R0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIpOwogICB2b2lkICgqTWFwR3JpZDJkKShH TGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB2biwgR0xkb3VibGUgdjEs IEdMZG91YmxlIHYyKTsKICAgdm9pZCAoKk1hcEdyaWQyZikoR0xpbnQgdW4sIEdMZmxvYXQgdTEs IEdMZmxvYXQgdTIsIEdMaW50IHZuLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsKICAgdm9pZCAo KkV2YWxDb29yZDFkKShHTGRvdWJsZSB1KTsKICAgdm9pZCAoKkV2YWxDb29yZDFkdikoY29uc3Qg R0xkb3VibGUgKiB1KTsKICAgdm9pZCAoKkV2YWxDb29yZDFmKShHTGZsb2F0IHUpOwogICB2b2lk ICgqRXZhbENvb3JkMWZ2KShjb25zdCBHTGZsb2F0ICogdSk7CiAgIHZvaWQgKCpFdmFsQ29vcmQy ZCkoR0xkb3VibGUgdSwgR0xkb3VibGUgdik7CiAgIHZvaWQgKCpFdmFsQ29vcmQyZHYpKGNvbnN0 IEdMZG91YmxlICogdSk7CiAgIHZvaWQgKCpFdmFsQ29vcmQyZikoR0xmbG9hdCB1LCBHTGZsb2F0 IHYpOwogICB2b2lkICgqRXZhbENvb3JkMmZ2KShjb25zdCBHTGZsb2F0ICogdSk7CiAgIHZvaWQg KCpFdmFsTWVzaDEpKEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIpOwogICB2b2lkICgq RXZhbFBvaW50MSkoR0xpbnQgaSk7CiAgIHZvaWQgKCpFdmFsTWVzaDIpKEdMZW51bSBtb2RlLCBH TGludCBpMSwgR0xpbnQgaTIsIEdMaW50IGoxLCBHTGludCBqMik7CiAgIHZvaWQgKCpFdmFsUG9p bnQyKShHTGludCBpLCBHTGludCBqKTsKICAgdm9pZCAoKkFscGhhRnVuYykoR0xlbnVtIGZ1bmMs IEdMY2xhbXBmIHJlZik7CiAgIHZvaWQgKCpCbGVuZEZ1bmMpKEdMZW51bSBzZmFjdG9yLCBHTGVu dW0gZGZhY3Rvcik7CiAgIHZvaWQgKCpMb2dpY09wKShHTGVudW0gb3Bjb2RlKTsKICAgdm9pZCAo KlN0ZW5jaWxGdW5jKShHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CiAgIHZv aWQgKCpTdGVuY2lsT3ApKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7 CiAgIHZvaWQgKCpEZXB0aEZ1bmMpKEdMZW51bSBmdW5jKTsKICAgdm9pZCAoKlBpeGVsWm9vbSko R0xmbG9hdCB4ZmFjdG9yLCBHTGZsb2F0IHlmYWN0b3IpOwogICB2b2lkICgqUGl4ZWxUcmFuc2Zl cmYpKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpQaXhlbFRyYW5zZmVy aSkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpQaXhlbFN0b3JlZikoR0xl bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKlBpeGVsU3RvcmVpKShHTGVudW0g cG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKlBpeGVsTWFwZnYpKEdMZW51bSBtYXAsIEdM aW50IG1hcHNpemUsIGNvbnN0IEdMZmxvYXQgKiB2YWx1ZXMpOwogICB2b2lkICgqUGl4ZWxNYXB1 aXYpKEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsIGNvbnN0IEdMdWludCAqIHZhbHVlcyk7CiAg IHZvaWQgKCpQaXhlbE1hcHVzdikoR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwgY29uc3QgR0x1 c2hvcnQgKiB2YWx1ZXMpOwogICB2b2lkICgqUmVhZEJ1ZmZlcikoR0xlbnVtIG1vZGUpOwogICB2 b2lkICgqQ29weVBpeGVscykoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl aSBoZWlnaHQsIEdMZW51bSB0eXBlKTsKICAgdm9pZCAoKlJlYWRQaXhlbHMpKEdMaW50IHgsIEdM aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu dW0gdHlwZSwgR0x2b2lkICogcGl4ZWxzKTsKICAgdm9pZCAoKkRyYXdQaXhlbHMpKEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qg R0x2b2lkICogcGl4ZWxzKTsKICAgdm9pZCAoKkdldEJvb2xlYW52KShHTGVudW0gcG5hbWUsIEdM Ym9vbGVhbiAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRDbGlwUGxhbmUpKEdMZW51bSBwbGFuZSwg R0xkb3VibGUgKiBlcXVhdGlvbik7CiAgIHZvaWQgKCpHZXREb3VibGV2KShHTGVudW0gcG5hbWUs IEdMZG91YmxlICogcGFyYW1zKTsKICAgR0xlbnVtICgqR2V0RXJyb3IpKHZvaWQpOwogICB2b2lk ICgqR2V0RmxvYXR2KShHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgq R2V0SW50ZWdlcnYpKEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0 TGlnaHRmdikoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwog ICB2b2lkICgqR2V0TGlnaHRpdikoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICog cGFyYW1zKTsKICAgdm9pZCAoKkdldE1hcGR2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnks IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpHZXRNYXBmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVt IHF1ZXJ5LCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpHZXRNYXBpdikoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHF1ZXJ5LCBHTGludCAqIHYpOwogICB2b2lkICgqR2V0TWF0ZXJpYWxmdikoR0xlbnVt IGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRNYXRl cmlhbGl2KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZv aWQgKCpHZXRQaXhlbE1hcGZ2KShHTGVudW0gbWFwLCBHTGZsb2F0ICogdmFsdWVzKTsKICAgdm9p ZCAoKkdldFBpeGVsTWFwdWl2KShHTGVudW0gbWFwLCBHTHVpbnQgKiB2YWx1ZXMpOwogICB2b2lk ICgqR2V0UGl4ZWxNYXB1c3YpKEdMZW51bSBtYXAsIEdMdXNob3J0ICogdmFsdWVzKTsKICAgdm9p ZCAoKkdldFBvbHlnb25TdGlwcGxlKShHTHVieXRlICogbWFzayk7CiAgIGNvbnN0IEdMdWJ5dGUg KiAoKkdldFN0cmluZykoR0xlbnVtIG5hbWUpOwogICB2b2lkICgqR2V0VGV4RW52ZnYpKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRU ZXhFbnZpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAg IHZvaWQgKCpHZXRUZXhHZW5kdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91Ymxl ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldFRleEdlbmZ2KShHTGVudW0gY29vcmQsIEdMZW51bSBw bmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhHZW5pdikoR0xlbnVtIGNv b3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldFRleEltYWdl KShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQgKCpHZXRUZXhQYXJhbWV0ZXJmdikoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldFRleFBh cmFtZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsK ICAgdm9pZCAoKkdldFRleExldmVsUGFyYW1ldGVyZnYpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl dmVsLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0VGV4TGV2 ZWxQYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwg R0xpbnQgKiBwYXJhbXMpOwogICBHTGJvb2xlYW4gKCpJc0VuYWJsZWQpKEdMZW51bSBjYXApOwog ICBHTGJvb2xlYW4gKCpJc0xpc3QpKEdMdWludCBsaXN0KTsKICAgdm9pZCAoKkRlcHRoUmFuZ2Up KEdMY2xhbXBkIHpOZWFyLCBHTGNsYW1wZCB6RmFyKTsKICAgdm9pZCAoKkZydXN0dW0pKEdMZG91 YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LCBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCwg R0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIpOwogICB2b2lkICgqTG9hZElkZW50aXR5KSh2 b2lkKTsKICAgdm9pZCAoKkxvYWRNYXRyaXhmKShjb25zdCBHTGZsb2F0ICogbSk7CiAgIHZvaWQg KCpMb2FkTWF0cml4ZCkoY29uc3QgR0xkb3VibGUgKiBtKTsKICAgdm9pZCAoKk1hdHJpeE1vZGUp KEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKk11bHRNYXRyaXhmKShjb25zdCBHTGZsb2F0ICogbSk7 CiAgIHZvaWQgKCpNdWx0TWF0cml4ZCkoY29uc3QgR0xkb3VibGUgKiBtKTsKICAgdm9pZCAoKk9y dGhvKShHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwgR0xkb3VibGUgYm90dG9tLCBHTGRv dWJsZSB0b3AsIEdMZG91YmxlIHpOZWFyLCBHTGRvdWJsZSB6RmFyKTsKICAgdm9pZCAoKlBvcE1h dHJpeCkodm9pZCk7CiAgIHZvaWQgKCpQdXNoTWF0cml4KSh2b2lkKTsKICAgdm9pZCAoKlJvdGF0 ZWQpKEdMZG91YmxlIGFuZ2xlLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsK ICAgdm9pZCAoKlJvdGF0ZWYpKEdMZmxvYXQgYW5nbGUsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH TGZsb2F0IHopOwogICB2b2lkICgqU2NhbGVkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRv dWJsZSB6KTsKICAgdm9pZCAoKlNjYWxlZikoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg eik7CiAgIHZvaWQgKCpUcmFuc2xhdGVkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs ZSB6KTsKICAgdm9pZCAoKlRyYW5zbGF0ZWYpKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0 IHopOwogICB2b2lkICgqVmlld3BvcnQpKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs IEdMc2l6ZWkgaGVpZ2h0KTsKICAgdm9pZCAoKkFycmF5RWxlbWVudCkoR0xpbnQgaSk7CiAgIHZv aWQgKCpCaW5kVGV4dHVyZSkoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpOwogICB2b2lk ICgqQ29sb3JQb2ludGVyKShHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs IGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRGlzYWJsZUNsaWVudFN0YXRlKShH TGVudW0gYXJyYXkpOwogICB2b2lkICgqRHJhd0FycmF5cykoR0xlbnVtIG1vZGUsIEdMaW50IGZp cnN0LCBHTHNpemVpIGNvdW50KTsKICAgdm9pZCAoKkRyYXdFbGVtZW50cykoR0xlbnVtIG1vZGUs IEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiBpbmRpY2VzKTsKICAg dm9pZCAoKkVkZ2VGbGFnUG9pbnRlcikoR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBv aW50ZXIpOwogICB2b2lkICgqRW5hYmxlQ2xpZW50U3RhdGUpKEdMZW51bSBhcnJheSk7CiAgIHZv aWQgKCpJbmRleFBvaW50ZXIpKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2 b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpJbmRleHViKShHTHVieXRlIGMpOwogICB2b2lkICgq SW5kZXh1YnYpKGNvbnN0IEdMdWJ5dGUgKiBjKTsKICAgdm9pZCAoKkludGVybGVhdmVkQXJyYXlz KShHTGVudW0gZm9ybWF0LCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7 CiAgIHZvaWQgKCpOb3JtYWxQb2ludGVyKShHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNv bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqUG9seWdvbk9mZnNldCkoR0xmbG9hdCBm YWN0b3IsIEdMZmxvYXQgdW5pdHMpOwogICB2b2lkICgqVGV4Q29vcmRQb2ludGVyKShHTGludCBz aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIp OwogICB2b2lkICgqVmVydGV4UG9pbnRlcikoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6 ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgR0xib29sZWFuICgqQXJlVGV4 dHVyZXNSZXNpZGVudCkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKiB0ZXh0dXJlcywgR0xib29s ZWFuICogcmVzaWRlbmNlcyk7CiAgIHZvaWQgKCpDb3B5VGV4SW1hZ2UxRCkoR0xlbnVtIHRhcmdl dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg R0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyKTsKICAgdm9pZCAoKkNvcHlUZXhJbWFnZTJEKShH TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4 LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKTsK ICAgdm9pZCAoKkNvcHlUZXhTdWJJbWFnZTFEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg R0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CiAgIHZvaWQg KCpDb3B5VGV4U3ViSW1hZ2UyRCkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0KTsKICAgdm9pZCAoKkRlbGV0ZVRleHR1cmVzKShHTHNpemVpIG4sIGNvbnN0 IEdMdWludCAqIHRleHR1cmVzKTsKICAgdm9pZCAoKkdlblRleHR1cmVzKShHTHNpemVpIG4sIEdM dWludCAqIHRleHR1cmVzKTsKICAgdm9pZCAoKkdldFBvaW50ZXJ2KShHTGVudW0gcG5hbWUsIEdM dm9pZCAqKiBwYXJhbXMpOwogICBHTGJvb2xlYW4gKCpJc1RleHR1cmUpKEdMdWludCB0ZXh0dXJl KTsKICAgdm9pZCAoKlByaW9yaXRpemVUZXh0dXJlcykoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg KiB0ZXh0dXJlcywgY29uc3QgR0xjbGFtcGYgKiBwcmlvcml0aWVzKTsKICAgdm9pZCAoKlRleFN1 YkltYWdlMUQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNp emVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4 ZWxzKTsKICAgdm9pZCAoKlRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7 CiAgIHZvaWQgKCpQb3BDbGllbnRBdHRyaWIpKHZvaWQpOwogICB2b2lkICgqUHVzaENsaWVudEF0 dHJpYikoR0xiaXRmaWVsZCBtYXNrKTsKICAgdm9pZCAoKkJsZW5kQ29sb3IpKEdMY2xhbXBmIHJl ZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgdm9p ZCAoKkJsZW5kRXF1YXRpb24pKEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkRyYXdSYW5nZUVsZW1l bnRzKShHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50 LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogaW5kaWNlcyk7CiAgIHZvaWQgKCpDb2xvclRh YmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiB0YWJsZSk7CiAgIHZv aWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg Y29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyaXYp KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2 b2lkICgqQ29weUNvbG9yVGFibGUpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1h dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CiAgIHZvaWQgKCpHZXRDb2xvclRh YmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICog dGFibGUpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29sb3JUYWJs ZVBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1z KTsKICAgdm9pZCAoKkNvbG9yU3ViVGFibGUpKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQs IEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg KiBkYXRhKTsKICAgdm9pZCAoKkNvcHlDb2xvclN1YlRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTHNp emVpIHN0YXJ0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNv bnZvbHV0aW9uRmlsdGVyMUQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg R0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq IGltYWdlKTsKICAgdm9pZCAoKkNvbnZvbHV0aW9uRmlsdGVyMkQpKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51 bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpD b252b2x1dGlvblBhcmFtZXRlcmYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h dCBwYXJhbXMpOwogICB2b2lkICgqQ29udm9sdXRpb25QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkNvbnZv bHV0aW9uUGFyYW1ldGVyaSkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh bXMpOwogICB2b2lkICgqQ29udm9sdXRpb25QYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xl bnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpDb3B5Q29udm9sdXRp b25GaWx0ZXIxRCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4 LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNvcHlDb252b2x1dGlvbkZpbHRl cjJEKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50 IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICAgdm9pZCAoKkdldENvbnZvbHV0 aW9uRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2 b2lkICogaW1hZ2UpOwogICB2b2lkICgqR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdikoR0xlbnVt IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldENv bnZvbHV0aW9uUGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg KiBwYXJhbXMpOwogICB2b2lkICgqR2V0U2VwYXJhYmxlRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogcm93LCBHTHZvaWQgKiBjb2x1bW4s IEdMdm9pZCAqIHNwYW4pOwogICB2b2lkICgqU2VwYXJhYmxlRmlsdGVyMkQpKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiByb3csIGNvbnN0IEdM dm9pZCAqIGNvbHVtbik7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW0pKEdMZW51bSB0YXJnZXQsIEdM Ym9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHZhbHVl cyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEhpc3RvZ3JhbVBhcmFt ZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAg dm9pZCAoKkdldE1pbm1heCkoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0g Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdmFsdWVzKTsKICAgdm9pZCAoKkdldE1pbm1h eFBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJh bXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqSGlzdG9ncmFtKShHTGVudW0gdGFy Z2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5r KTsKICAgdm9pZCAoKk1pbm1heCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0 LCBHTGJvb2xlYW4gc2luayk7CiAgIHZvaWQgKCpSZXNldEhpc3RvZ3JhbSkoR0xlbnVtIHRhcmdl dCk7CiAgIHZvaWQgKCpSZXNldE1pbm1heCkoR0xlbnVtIHRhcmdldCk7CiAgIHZvaWQgKCpUZXhJ bWFnZTNEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQs IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3Jk ZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiBwaXhlbHMpOwog ICB2b2lkICgqVGV4U3ViSW1hZ2UzRCkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50 IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg Y29uc3QgR0x2b2lkICogcGl4ZWxzKTsKICAgdm9pZCAoKkNvcHlUZXhTdWJJbWFnZTNEKShHTGVu dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xp bnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln aHQpOwogICB2b2lkICgqQWN0aXZlVGV4dHVyZUFSQikoR0xlbnVtIHRleHR1cmUpOwogICB2b2lk ICgqQ2xpZW50QWN0aXZlVGV4dHVyZUFSQikoR0xlbnVtIHRleHR1cmUpOwogICB2b2lkICgqTXVs dGlUZXhDb29yZDFkQVJCKShHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzKTsKICAgdm9pZCAoKk11 bHRpVGV4Q29vcmQxZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAg IHZvaWQgKCpNdWx0aVRleENvb3JkMWZBUkIpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CiAg IHZvaWQgKCpNdWx0aVRleENvb3JkMWZ2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0 ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50 IHMpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDFpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3Qg R0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQxc0FSQikoR0xlbnVtIHRhcmdldCwg R0xzaG9ydCBzKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQxc3ZBUkIpKEdMZW51bSB0YXJnZXQs IGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQyZEFSQikoR0xlbnVt IHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3Jk MmR2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqTXVs dGlUZXhDb29yZDJmQVJCKShHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CiAg IHZvaWQgKCpNdWx0aVRleENvb3JkMmZ2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0 ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMmlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50 IHMsIEdMaW50IHQpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJpdkFSQikoR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQyc0FSQikoR0xlbnVt IHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJz dkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqTXVsdGlU ZXhDb29yZDNkQVJCKShHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRv dWJsZSByKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQzZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNv bnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkM2ZBUkIpKEdMZW51bSB0 YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpOwogICB2b2lkICgqTXVsdGlU ZXhDb29yZDNmdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lk ICgqTXVsdGlUZXhDb29yZDNpQVJCKShHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBH TGludCByKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQzaXZBUkIpKEdMZW51bSB0YXJnZXQsIGNv bnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkM3NBUkIpKEdMZW51bSB0YXJn ZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpOwogICB2b2lkICgqTXVsdGlUZXhD b29yZDNzdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgq TXVsdGlUZXhDb29yZDRkQVJCKShHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0 LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0ZHZBUkIp KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENv b3JkNGZBUkIpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIs IEdMZmxvYXQgcSk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkNGZ2QVJCKShHTGVudW0gdGFyZ2V0 LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkNGlBUkIpKEdMZW51 bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwogICB2b2lkICgq TXVsdGlUZXhDb29yZDRpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAg dm9pZCAoKk11bHRpVGV4Q29vcmQ0c0FSQikoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNo b3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBxKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0c3ZB UkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKkxvYWRUcmFu c3Bvc2VNYXRyaXhmQVJCKShjb25zdCBHTGZsb2F0ICogbSk7CiAgIHZvaWQgKCpMb2FkVHJhbnNw b3NlTWF0cml4ZEFSQikoY29uc3QgR0xkb3VibGUgKiBtKTsKICAgdm9pZCAoKk11bHRUcmFuc3Bv c2VNYXRyaXhmQVJCKShjb25zdCBHTGZsb2F0ICogbSk7CiAgIHZvaWQgKCpNdWx0VHJhbnNwb3Nl TWF0cml4ZEFSQikoY29uc3QgR0xkb3VibGUgKiBtKTsKICAgdm9pZCAoKlNhbXBsZUNvdmVyYWdl QVJCKShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CiAgIHZvaWQgKCpfX3VudXNl ZDQxMykodm9pZCk7CiAgIHZvaWQgKCpQb2x5Z29uT2Zmc2V0RVhUKShHTGZsb2F0IGZhY3Rvciwg R0xmbG9hdCBiaWFzKTsKICAgdm9pZCAoKkdldFRleEZpbHRlckZ1bmNTR0lTKShHTGVudW0gdGFy Z2V0LCBHTGVudW0gZmlsdGVyLCBHTGZsb2F0ICogd2VpZ2h0cyk7CiAgIHZvaWQgKCpUZXhGaWx0 ZXJGdW5jU0dJUykoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZpbHRlciwgR0xzaXplaSBuLCBjb25z dCBHTGZsb2F0ICogd2VpZ2h0cyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1FWFQpKEdMZW51bSB0 YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9p ZCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdkVYVCkoR0xlbnVt IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEhp c3RvZ3JhbVBhcmFtZXRlcml2RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50 ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldE1pbm1heEVYVCkoR0xlbnVtIHRhcmdldCwgR0xib29s ZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdmFsdWVzKTsK ICAgdm9pZCAoKkdldE1pbm1heFBhcmFtZXRlcmZ2RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g cG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFyYW1ldGVyaXZF WFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lk ICgqR2V0Q29udm9sdXRpb25GaWx0ZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQs IEdMZW51bSB0eXBlLCBHTHZvaWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpHZXRDb252b2x1dGlvblBh cmFtZXRlcmZ2RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJh bXMpOwogICB2b2lkICgqR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJpdkVYVCkoR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRTZXBhcmFibGVG aWx0ZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv aWQgKiByb3csIEdMdm9pZCAqIGNvbHVtbiwgR0x2b2lkICogc3Bhbik7CiAgIHZvaWQgKCpHZXRD b2xvclRhYmxlU0dJKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg R0x2b2lkICogdGFibGUpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcmZ2U0dJKShH TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgq R2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2U0dJKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKlBpeGVsVGV4R2VuU0dJWCkoR0xlbnVtIG1vZGUp OwogICB2b2lkICgqUGl4ZWxUZXhHZW5QYXJhbWV0ZXJpU0dJUykoR0xlbnVtIHBuYW1lLCBHTGlu dCBwYXJhbSk7CiAgIHZvaWQgKCpQaXhlbFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBu YW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpQaXhlbFRleEdlblBhcmFtZXRl cmZTR0lTKShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqUGl4ZWxUZXhH ZW5QYXJhbWV0ZXJmdlNHSVMpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7 CiAgIHZvaWQgKCpHZXRQaXhlbFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBuYW1lLCBH TGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUyko R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKlRleEltYWdlNERTR0lT KShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNp emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQs IEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq IHBpeGVscyk7CiAgIHZvaWQgKCpUZXhTdWJJbWFnZTREU0dJUykoR0xlbnVtIHRhcmdldCwgR0xp bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdM aW50IHdvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo LCBHTHNpemVpIHNpemU0ZCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p ZCAqIHBpeGVscyk7CiAgIEdMYm9vbGVhbiAoKkFyZVRleHR1cmVzUmVzaWRlbnRFWFQpKEdMc2l6 ZWkgbiwgY29uc3QgR0x1aW50ICogdGV4dHVyZXMsIEdMYm9vbGVhbiAqIHJlc2lkZW5jZXMpOwog ICB2b2lkICgqR2VuVGV4dHVyZXNFWFQpKEdMc2l6ZWkgbiwgR0x1aW50ICogdGV4dHVyZXMpOwog ICBHTGJvb2xlYW4gKCpJc1RleHR1cmVFWFQpKEdMdWludCB0ZXh0dXJlKTsKICAgdm9pZCAoKkRl dGFpbFRleEZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQg KiBwb2ludHMpOwogICB2b2lkICgqR2V0RGV0YWlsVGV4RnVuY1NHSVMpKEdMZW51bSB0YXJnZXQs IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqU2hhcnBlblRleEZ1bmNTR0lTKShHTGVudW0g dGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqR2V0 U2hhcnBlblRleEZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICogcG9pbnRzKTsKICAg dm9pZCAoKlNhbXBsZU1hc2tTR0lTKShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7 CiAgIHZvaWQgKCpTYW1wbGVQYXR0ZXJuU0dJUykoR0xlbnVtIHBhdHRlcm4pOwogICB2b2lkICgq Q29sb3JQb2ludGVyRVhUKShHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRWRnZUZs YWdQb2ludGVyRVhUKShHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xib29s ZWFuICogcG9pbnRlcik7CiAgIHZvaWQgKCpJbmRleFBvaW50ZXJFWFQpKEdMZW51bSB0eXBlLCBH THNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAg IHZvaWQgKCpOb3JtYWxQb2ludGVyRVhUKShHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdM c2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVGV4Q29vcmRQ b2ludGVyRVhUKShHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6 ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVmVydGV4UG9pbnRl ckVYVCkoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNv dW50LCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKlNwcml0ZVBhcmFtZXRlcmZT R0lYKShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqU3ByaXRlUGFyYW1l dGVyZnZTR0lYKShHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lk ICgqU3ByaXRlUGFyYW1ldGVyaVNHSVgpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2 b2lkICgqU3ByaXRlUGFyYW1ldGVyaXZTR0lYKShHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICog cGFyYW1zKTsKICAgdm9pZCAoKlBvaW50UGFyYW1ldGVyZkVYVCkoR0xlbnVtIHBuYW1lLCBHTGZs b2F0IHBhcmFtKTsKICAgdm9pZCAoKlBvaW50UGFyYW1ldGVyZnZFWFQpKEdMZW51bSBwbmFtZSwg Y29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIEdMaW50ICgqR2V0SW5zdHJ1bWVudHNTR0lYKSh2 b2lkKTsKICAgdm9pZCAoKkluc3RydW1lbnRzQnVmZmVyU0dJWCkoR0xzaXplaSBzaXplLCBHTGlu dCAqIGJ1ZmZlcik7CiAgIEdMaW50ICgqUG9sbEluc3RydW1lbnRzU0dJWCkoR0xpbnQgKiBtYXJr ZXJfcCk7CiAgIHZvaWQgKCpSZWFkSW5zdHJ1bWVudHNTR0lYKShHTGludCBtYXJrZXIpOwogICB2 b2lkICgqU3RhcnRJbnN0cnVtZW50c1NHSVgpKHZvaWQpOwogICB2b2lkICgqU3RvcEluc3RydW1l bnRzU0dJWCkoR0xpbnQgbWFya2VyKTsKICAgdm9pZCAoKkZyYW1lWm9vbVNHSVgpKEdMaW50IGZh Y3Rvcik7CiAgIHZvaWQgKCpUYWdTYW1wbGVCdWZmZXJTR0lYKSh2b2lkKTsKICAgdm9pZCAoKlJl ZmVyZW5jZVBsYW5lU0dJWCkoY29uc3QgR0xkb3VibGUgKiBlcXVhdGlvbik7CiAgIHZvaWQgKCpG bHVzaFJhc3RlclNHSVgpKHZvaWQpOwogICB2b2lkICgqR2V0TGlzdFBhcmFtZXRlcmZ2U0dJWCko R0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpH ZXRMaXN0UGFyYW1ldGVyaXZTR0lYKShHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBHTGludCAq IHBhcmFtcyk7CiAgIHZvaWQgKCpMaXN0UGFyYW1ldGVyZlNHSVgpKEdMdWludCBsaXN0LCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqTGlzdFBhcmFtZXRlcmZ2U0dJWCko R0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZv aWQgKCpMaXN0UGFyYW1ldGVyaVNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMaW50 IHBhcmFtKTsKICAgdm9pZCAoKkxpc3RQYXJhbWV0ZXJpdlNHSVgpKEdMdWludCBsaXN0LCBHTGVu dW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50Q29sb3JN YXRlcmlhbFNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpGcmFnbWVu dExpZ2h0ZlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsK ICAgdm9pZCAoKkZyYWdtZW50TGlnaHRmdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1l LCBjb25zdCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRpU0dJWCko R0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdt ZW50TGlnaHRpdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq IHBhcmFtcyk7CiAgIHZvaWQgKCpGcmFnbWVudExpZ2h0TW9kZWxmU0dJWCkoR0xlbnVtIHBuYW1l LCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGZ2U0dJWCkoR0xl bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGln aHRNb2RlbGlTR0lYKShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdt ZW50TGlnaHRNb2RlbGl2U0dJWCkoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7 CiAgIHZvaWQgKCpGcmFnbWVudE1hdGVyaWFsZlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5h bWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqRnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCkoR0xl bnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpGcmFnbWVudE1hdGVyaWFsaVNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50 IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TWF0ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZyYWdtZW50 TGlnaHRmdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1z KTsKICAgdm9pZCAoKkdldEZyYWdtZW50TGlnaHRpdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVt IHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRGcmFnbWVudE1hdGVyaWFsZnZT R0lYKShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9p ZCAoKkdldEZyYWdtZW50TWF0ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUs IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkxpZ2h0RW52aVNHSVgpKEdMZW51bSBwbmFtZSwg R0xpbnQgcGFyYW0pOwogICB2b2lkICgqVmVydGV4V2VpZ2h0ZkVYVCkoR0xmbG9hdCB3ZWlnaHQp OwogICB2b2lkICgqVmVydGV4V2VpZ2h0ZnZFWFQpKGNvbnN0IEdMZmxvYXQgKiB3ZWlnaHQpOwog ICB2b2lkICgqVmVydGV4V2VpZ2h0UG9pbnRlckVYVCkoR0xzaXplaSBzaXplLCBHTGVudW0gdHlw ZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRmx1 c2hWZXJ0ZXhBcnJheVJhbmdlTlYpKHZvaWQpOwogICB2b2lkICgqVmVydGV4QXJyYXlSYW5nZU5W KShHTHNpemVpIGxlbmd0aCwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpDb21i aW5lclBhcmFtZXRlcmZ2TlYpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7 CiAgIHZvaWQgKCpDb21iaW5lclBhcmFtZXRlcmZOVikoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh cmFtKTsKICAgdm9pZCAoKkNvbWJpbmVyUGFyYW1ldGVyaXZOVikoR0xlbnVtIHBuYW1lLCBjb25z dCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpDb21iaW5lclBhcmFtZXRlcmlOVikoR0xlbnVt IHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpDb21iaW5lcklucHV0TlYpKEdMZW51bSBz dGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlucHV0LCBHTGVu dW0gbWFwcGluZywgR0xlbnVtIGNvbXBvbmVudFVzYWdlKTsKICAgdm9pZCAoKkNvbWJpbmVyT3V0 cHV0TlYpKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBhYk91dHB1dCwgR0xl bnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0LCBHTGVudW0gc2NhbGUsIEdMZW51bSBiaWFz LCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJvb2xlYW4gY2REb3RQcm9kdWN0LCBHTGJvb2xl YW4gbXV4U3VtKTsKICAgdm9pZCAoKkZpbmFsQ29tYmluZXJJbnB1dE5WKShHTGVudW0gdmFyaWFi bGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7 CiAgIHZvaWQgKCpHZXRDb21iaW5lcklucHV0UGFyYW1ldGVyZnZOVikoR0xlbnVtIHN0YWdlLCBH TGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBw YXJhbXMpOwogICB2b2lkICgqR2V0Q29tYmluZXJJbnB1dFBhcmFtZXRlcml2TlYpKEdMZW51bSBz dGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGlu dCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRDb21iaW5lck91dHB1dFBhcmFtZXRlcmZ2TlYpKEdM ZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFt cyk7CiAgIHZvaWQgKCpHZXRDb21iaW5lck91dHB1dFBhcmFtZXRlcml2TlYpKEdMZW51bSBzdGFn ZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lk ICgqR2V0RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyZnZOVikoR0xlbnVtIHZhcmlhYmxlLCBH TGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0RmluYWxDb21iaW5l cklucHV0UGFyYW1ldGVyaXZOVikoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMaW50 ICogcGFyYW1zKTsKICAgdm9pZCAoKlJlc2l6ZUJ1ZmZlcnNNRVNBKSh2b2lkKTsKICAgdm9pZCAo KldpbmRvd1BvczJkTUVTQSkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7CiAgIHZvaWQgKCpXaW5k b3dQb3MyZHZNRVNBKShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqV2luZG93UG9zMmZN RVNBKShHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CiAgIHZvaWQgKCpXaW5kb3dQb3MyZnZNRVNBKShj b25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3MyaU1FU0EpKEdMaW50IHgsIEdM aW50IHkpOwogICB2b2lkICgqV2luZG93UG9zMml2TUVTQSkoY29uc3QgR0xpbnQgKiB2KTsKICAg dm9pZCAoKldpbmRvd1BvczJzTUVTQSkoR0xzaG9ydCB4LCBHTHNob3J0IHkpOwogICB2b2lkICgq V2luZG93UG9zMnN2TUVTQSkoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqV2luZG93UG9z M2RNRVNBKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKICAgdm9pZCAoKldp bmRvd1BvczNkdk1FU0EpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3Mz Zk1FU0EpKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwogICB2b2lkICgqV2luZG93 UG9zM2Z2TUVTQSkoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqV2luZG93UG9zM2lNRVNB KShHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKICAgdm9pZCAoKldpbmRvd1BvczNpdk1FU0Ep KGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3Mzc01FU0EpKEdMc2hvcnQgeCwg R0xzaG9ydCB5LCBHTHNob3J0IHopOwogICB2b2lkICgqV2luZG93UG9zM3N2TUVTQSkoY29uc3Qg R0xzaG9ydCAqIHYpOwogICB2b2lkICgqV2luZG93UG9zNGRNRVNBKShHTGRvdWJsZSB4LCBHTGRv dWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKICAgdm9pZCAoKldpbmRvd1BvczRkdk1F U0EpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3M0Zk1FU0EpKEdMZmxv YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgIHZvaWQgKCpXaW5kb3dQ b3M0ZnZNRVNBKShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3M0aU1FU0Ep KEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwogICB2b2lkICgqV2luZG93UG9z NGl2TUVTQSkoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczRzTUVTQSkoR0xz aG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKICAgdm9pZCAoKldpbmRv d1BvczRzdk1FU0EpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKkJsZW5kRnVuY1NlcGFy YXRlRVhUKShHTGVudW0gc2ZhY3RvclJHQiwgR0xlbnVtIGRmYWN0b3JSR0IsIEdMZW51bSBzZmFj dG9yQWxwaGEsIEdMZW51bSBkZmFjdG9yQWxwaGEpOwogICB2b2lkICgqSW5kZXhNYXRlcmlhbEVY VCkoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkluZGV4RnVuY0VYVCkoR0xl bnVtIGZ1bmMsIEdMY2xhbXBmIHJlZik7CiAgIHZvaWQgKCpMb2NrQXJyYXlzRVhUKShHTGludCBm aXJzdCwgR0xzaXplaSBjb3VudCk7CiAgIHZvaWQgKCpVbmxvY2tBcnJheXNFWFQpKHZvaWQpOwog ICB2b2lkICgqQ3VsbFBhcmFtZXRlcmR2RVhUKShHTGVudW0gcG5hbWUsIEdMZG91YmxlICogcGFy YW1zKTsKICAgdm9pZCAoKkN1bGxQYXJhbWV0ZXJmdkVYVCkoR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICogcGFyYW1zKTsKICAgdm9pZCAoKkhpbnRQR0kpKEdMZW51bSB0YXJnZXQsIEdMaW50IG1vZGUp OwogICB2b2lkICgqRm9nQ29vcmRmRVhUKShHTGZsb2F0IGNvb3JkKTsKICAgdm9pZCAoKkZvZ0Nv b3JkZnZFWFQpKGNvbnN0IEdMZmxvYXQgKiBjb29yZCk7CiAgIHZvaWQgKCpGb2dDb29yZGRFWFQp KEdMZG91YmxlIGNvb3JkKTsKICAgdm9pZCAoKkZvZ0Nvb3JkZHZFWFQpKGNvbnN0IEdMZG91Ymxl ICogY29vcmQpOwogICB2b2lkICgqRm9nQ29vcmRQb2ludGVyRVhUKShHTGVudW0gdHlwZSwgR0xz aXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqR2V0Q29sb3JU YWJsZUVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9p ZCAqIGRhdGEpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2RVhUKShHTGVudW0g dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldENvbG9y VGFibGVQYXJhbWV0ZXJmdkVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICogcGFyYW1zKTsKICAgdm9pZCAoKlRidWZmZXJNYXNrM0RGWCkoR0x1aW50IG1hc2spOwogICB2 b2lkICgqQ29tcHJlc3NlZFRleEltYWdlM0RBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH THNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZv aWQgKiBkYXRhKTsKICAgdm9pZCAoKkNvbXByZXNzZWRUZXhJbWFnZTJEQVJCKShHTGVudW0gdGFy Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2 b2lkICogZGF0YSk7CiAgIHZvaWQgKCpDb21wcmVzc2VkVGV4SW1hZ2UxREFSQikoR0xlbnVtIHRh cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg R0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICogZGF0YSk7CiAg IHZvaWQgKCpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzREFSQikoR0xlbnVtIHRhcmdldCwgR0xpbnQg bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6 ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBH THNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICogZGF0YSk7CiAgIHZvaWQgKCpDb21wcmVz c2VkVGV4U3ViSW1hZ2UyREFSQikoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu dW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICogZGF0YSk7CiAgIHZv aWQgKCpDb21wcmVzc2VkVGV4U3ViSW1hZ2UxREFSQikoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg aW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKiBkYXRhKTsKICAgdm9pZCAoKkdldENvbXByZXNzZWRU ZXhJbWFnZUFSQikoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMdm9pZCAqIGltZyk7CiAg IHZvaWQgKCpTZWNvbmRhcnlDb2xvcjNiRVhUKShHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdM Ynl0ZSBibHVlKTsKICAgdm9pZCAoKlNlY29uZGFyeUNvbG9yM2J2RVhUKShjb25zdCBHTGJ5dGUg KiB2KTsKICAgdm9pZCAoKlNlY29uZGFyeUNvbG9yM2RFWFQpKEdMZG91YmxlIHJlZCwgR0xkb3Vi bGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwogICB2b2lkICgqU2Vjb25kYXJ5Q29sb3IzZHZFWFQp KGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpTZWNvbmRhcnlDb2xvcjNmRVhUKShHTGZs b2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKTsKICAgdm9pZCAoKlNlY29uZGFy eUNvbG9yM2Z2RVhUKShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpTZWNvbmRhcnlDb2xv cjNpRVhUKShHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKTsKICAgdm9pZCAoKlNl Y29uZGFyeUNvbG9yM2l2RVhUKShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqU2Vjb25kYXJ5 Q29sb3Izc0VYVCkoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7CiAg IHZvaWQgKCpTZWNvbmRhcnlDb2xvcjNzdkVYVCkoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lk ICgqU2Vjb25kYXJ5Q29sb3IzdWJFWFQpKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVi eXRlIGJsdWUpOwogICB2b2lkICgqU2Vjb25kYXJ5Q29sb3IzdWJ2RVhUKShjb25zdCBHTHVieXRl ICogdik7CiAgIHZvaWQgKCpTZWNvbmRhcnlDb2xvcjN1aUVYVCkoR0x1aW50IHJlZCwgR0x1aW50 IGdyZWVuLCBHTHVpbnQgYmx1ZSk7CiAgIHZvaWQgKCpTZWNvbmRhcnlDb2xvcjN1aXZFWFQpKGNv bnN0IEdMdWludCAqIHYpOwogICB2b2lkICgqU2Vjb25kYXJ5Q29sb3IzdXNFWFQpKEdMdXNob3J0 IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOwogICB2b2lkICgqU2Vjb25kYXJ5 Q29sb3IzdXN2RVhUKShjb25zdCBHTHVzaG9ydCAqIHYpOwogICB2b2lkICgqU2Vjb25kYXJ5Q29s b3JQb2ludGVyRVhUKShHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNv bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICBHTGJvb2xlYW4gKCpBcmVQcm9ncmFtc1Jlc2lkZW50 TlYpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICogaWRzLCBHTGJvb2xlYW4gKiByZXNpZGVuY2Vz KTsKICAgdm9pZCAoKkJpbmRQcm9ncmFtTlYpKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7CiAg IHZvaWQgKCpEZWxldGVQcm9ncmFtc05WKShHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqIGlkcyk7 CiAgIHZvaWQgKCpFeGVjdXRlUHJvZ3JhbU5WKShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQsIGNv bnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2VuUHJvZ3JhbXNOVikoR0xzaXplaSBu LCBHTHVpbnQgKiBpZHMpOwogICB2b2lkICgqR2V0UHJvZ3JhbVBhcmFtZXRlcmR2TlYpKEdMZW51 bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqIHBhcmFtcyk7 CiAgIHZvaWQgKCpHZXRQcm9ncmFtUGFyYW1ldGVyZnZOVikoR0xlbnVtIHRhcmdldCwgR0x1aW50 IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0UHJv Z3JhbWl2TlYpKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZv aWQgKCpHZXRQcm9ncmFtU3RyaW5nTlYpKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVieXRl ICogcHJvZ3JhbSk7CiAgIHZvaWQgKCpHZXRUcmFja01hdHJpeGl2TlYpKEdMZW51bSB0YXJnZXQs IEdMdWludCBhZGRyZXNzLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAo KkdldFZlcnRleEF0dHJpYmR2TlYpKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJs ZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRWZXJ0ZXhBdHRyaWJmdk5WKShHTHVpbnQgaW5kZXgs IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRWZXJ0ZXhBdHRy aWJpdk5WKShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2 b2lkICgqR2V0VmVydGV4QXR0cmliUG9pbnRlcnZOVikoR0x1aW50IGluZGV4LCBHTGVudW0gcG5h bWUsIEdMdm9pZCAqKiBwb2ludGVyKTsKICAgR0xib29sZWFuICgqSXNQcm9ncmFtTlYpKEdMdWlu dCBpZCk7CiAgIHZvaWQgKCpMb2FkUHJvZ3JhbU5WKShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQs IEdMc2l6ZWkgbGVuLCBjb25zdCBHTHVieXRlICogcHJvZ3JhbSk7CiAgIHZvaWQgKCpQcm9ncmFt UGFyYW1ldGVyNGROVikoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBH TGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKICAgdm9pZCAoKlByb2dyYW1QYXJh bWV0ZXI0ZHZOVikoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAq IHBhcmFtcyk7CiAgIHZvaWQgKCpQcm9ncmFtUGFyYW1ldGVyNGZOVikoR0xlbnVtIHRhcmdldCwg R0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcp OwogICB2b2lkICgqUHJvZ3JhbVBhcmFtZXRlcjRmdk5WKShHTGVudW0gdGFyZ2V0LCBHTHVpbnQg aW5kZXgsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqUHJvZ3JhbVBhcmFtZXRl cnM0ZHZOVikoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgbnVtLCBjb25zdCBH TGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpQcm9ncmFtUGFyYW1ldGVyczRmdk5WKShHTGVu dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBudW0sIGNvbnN0IEdMZmxvYXQgKiBwYXJh bXMpOwogICB2b2lkICgqUmVxdWVzdFJlc2lkZW50UHJvZ3JhbXNOVikoR0xzaXplaSBuLCBjb25z dCBHTHVpbnQgKiBpZHMpOwogICB2b2lkICgqVHJhY2tNYXRyaXhOVikoR0xlbnVtIHRhcmdldCwg R0x1aW50IGFkZHJlc3MsIEdMZW51bSBtYXRyaXgsIEdMZW51bSB0cmFuc2Zvcm0pOwogICB2b2lk ICgqVmVydGV4QXR0cmliUG9pbnRlck5WKShHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51 bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQg KCpWZXJ0ZXhBdHRyaWIxZE5WKShHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOwogICB2b2lkICgq VmVydGV4QXR0cmliMWR2TlYpKEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlZlcnRleEF0dHJpYjFmTlYpKEdMdWludCBpbmRleCwgR0xmbG9hdCB4KTsKICAgdm9p ZCAoKlZlcnRleEF0dHJpYjFmdk5WKShHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKiB2KTsK ICAgdm9pZCAoKlZlcnRleEF0dHJpYjFzTlYpKEdMdWludCBpbmRleCwgR0xzaG9ydCB4KTsKICAg dm9pZCAoKlZlcnRleEF0dHJpYjFzdk5WKShHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKiB2 KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYjJkTlYpKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwg R0xkb3VibGUgeSk7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWIyZHZOVikoR0x1aW50IGluZGV4LCBj b25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqVmVydGV4QXR0cmliMmZOVikoR0x1aW50IGlu ZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWIyZnZOViko R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWIy c05WKShHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKICAgdm9pZCAoKlZlcnRl eEF0dHJpYjJzdk5WKShHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAo KlZlcnRleEF0dHJpYjNkTlYpKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwg R0xkb3VibGUgeik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWIzZHZOVikoR0x1aW50IGluZGV4LCBj b25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqVmVydGV4QXR0cmliM2ZOVikoR0x1aW50IGlu ZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKlZlcnRleEF0 dHJpYjNmdk5WKShHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlZl cnRleEF0dHJpYjNzTlYpKEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hv cnQgeik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWIzc3ZOVikoR0x1aW50IGluZGV4LCBjb25zdCBH THNob3J0ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWI0ZE5WKShHTHVpbnQgaW5kZXgsIEdM ZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwogICB2b2lkICgq VmVydGV4QXR0cmliNGR2TlYpKEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKiB2KTsKICAg dm9pZCAoKlZlcnRleEF0dHJpYjRmTlYpKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0 IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYjRmdk5WKShH THVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYjRz TlYpKEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9y dCB3KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYjRzdk5WKShHTHVpbnQgaW5kZXgsIGNvbnN0IEdM c2hvcnQgKiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYjR1Yk5WKShHTHVpbnQgaW5kZXgsIEdM dWJ5dGUgeCwgR0x1Ynl0ZSB5LCBHTHVieXRlIHosIEdMdWJ5dGUgdyk7CiAgIHZvaWQgKCpWZXJ0 ZXhBdHRyaWI0dWJ2TlYpKEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqIHYpOwogICB2b2lk ICgqVmVydGV4QXR0cmliczFkdk5WKShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgbiwgY29uc3QgR0xk b3VibGUgKiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYnMxZnZOVikoR0x1aW50IGluZGV4LCBH THNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYnMxc3ZO VikoR0x1aW50IGluZGV4LCBHTHNpemVpIG4sIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAo KlZlcnRleEF0dHJpYnMyZHZOVikoR0x1aW50IGluZGV4LCBHTHNpemVpIG4sIGNvbnN0IEdMZG91 YmxlICogdik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWJzMmZ2TlYpKEdMdWludCBpbmRleCwgR0xz aXplaSBuLCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWJzMnN2TlYp KEdMdWludCBpbmRleCwgR0xzaXplaSBuLCBjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpW ZXJ0ZXhBdHRyaWJzM2R2TlYpKEdMdWludCBpbmRleCwgR0xzaXplaSBuLCBjb25zdCBHTGRvdWJs ZSAqIHYpOwogICB2b2lkICgqVmVydGV4QXR0cmliczNmdk5WKShHTHVpbnQgaW5kZXgsIEdMc2l6 ZWkgbiwgY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4QXR0cmliczNzdk5WKShH THVpbnQgaW5kZXgsIEdMc2l6ZWkgbiwgY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqVmVy dGV4QXR0cmliczRkdk5WKShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgbiwgY29uc3QgR0xkb3VibGUg KiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYnM0ZnZOVikoR0x1aW50IGluZGV4LCBHTHNpemVp IG4sIGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlZlcnRleEF0dHJpYnM0c3ZOVikoR0x1 aW50IGluZGV4LCBHTHNpemVpIG4sIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKlZlcnRl eEF0dHJpYnM0dWJ2TlYpKEdMdWludCBpbmRleCwgR0xzaXplaSBuLCBjb25zdCBHTHVieXRlICog dik7CiAgIHZvaWQgKCpQb2ludFBhcmFtZXRlcmlOVikoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh bXMpOwogICB2b2lkICgqUG9pbnRQYXJhbWV0ZXJpdk5WKShHTGVudW0gcG5hbWUsIGNvbnN0IEdM aW50ICogcGFyYW1zKTsKICAgdm9pZCAoKk11bHRpRHJhd0FycmF5c0VYVCkoR0xlbnVtIG1vZGUs IEdMaW50ICogZmlyc3QsIEdMc2l6ZWkgKiBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwogICB2 b2lkICgqTXVsdGlEcmF3RWxlbWVudHNFWFQpKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICog Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiogaW5kaWNlcywgR0xzaXplaSBwcmlt Y291bnQpOwogICB2b2lkICgqQWN0aXZlU3RlbmNpbEZhY2VFWFQpKEdMZW51bSBmYWNlKTsKICAg dm9pZCAoKkRlbGV0ZUZlbmNlc05WKShHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqIGZlbmNlcyk7 CiAgIHZvaWQgKCpHZW5GZW5jZXNOVikoR0xzaXplaSBuLCBHTHVpbnQgKiBmZW5jZXMpOwogICBH TGJvb2xlYW4gKCpJc0ZlbmNlTlYpKEdMdWludCBmZW5jZSk7CiAgIEdMYm9vbGVhbiAoKlRlc3RG ZW5jZU5WKShHTHVpbnQgZmVuY2UpOwogICB2b2lkICgqR2V0RmVuY2Vpdk5WKShHTHVpbnQgZmVu Y2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqRmluaXNoRmVuY2VO VikoR0x1aW50IGZlbmNlKTsKICAgdm9pZCAoKlNldEZlbmNlTlYpKEdMdWludCBmZW5jZSwgR0xl bnVtIGNvbmRpdGlvbik7Cn07CiMgMzkgIm10eXBlcy5oIiAyCiMgMSAiZ2x0aHJlYWQuaCIgMQoj IDI0NyAiZ2x0aHJlYWQuaCIKdHlwZWRlZiBHTHVpbnQgX2dsdGhyZWFkX1RTRDsKCnR5cGVkZWYg R0x1aW50IF9nbHRocmVhZF9UaHJlYWQ7Cgp0eXBlZGVmIEdMdWludCBfZ2x0aHJlYWRfTXV0ZXg7 CiMgMjY5ICJnbHRocmVhZC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZwpfZ2x0aHJlYWRfR2V0SUQo dm9pZCk7CgoKZXh0ZXJuIHZvaWQKX2dsdGhyZWFkX0luaXRUU0QoX2dsdGhyZWFkX1RTRCAqKTsK CgpleHRlcm4gdm9pZCAqCl9nbHRocmVhZF9HZXRUU0QoX2dsdGhyZWFkX1RTRCAqKTsKCgpleHRl cm4gdm9pZApfZ2x0aHJlYWRfU2V0VFNEKF9nbHRocmVhZF9UU0QgKiwgdm9pZCAqKTsKIyA0MCAi bXR5cGVzLmgiIDIKCiMgMSAibWF0aC9tX21hdHJpeC5oIiAxCiMgOTcgIm1hdGgvbV9tYXRyaXgu aCIKdHlwZWRlZiBzdHJ1Y3QgewogICBHTGZsb2F0ICptOwogICBHTGZsb2F0ICppbnY7CiAgIEdM dWludCBmbGFnczsKICAgR0x1aW50IHR5cGU7Cn0gR0xtYXRyaXg7CgoKCgpleHRlcm4gdm9pZApf bWF0aF9tYXRyaXhfY3RyKCBHTG1hdHJpeCAqbSApOwoKZXh0ZXJuIHZvaWQKX21hdGhfbWF0cml4 X2R0ciggR0xtYXRyaXggKm0gKTsKCmV4dGVybiB2b2lkCl9tYXRoX21hdHJpeF9hbGxvY19pbnYo IEdMbWF0cml4ICptICk7CgpleHRlcm4gdm9pZApfbWF0aF9tYXRyaXhfbXVsX21hdHJpeCggR0xt YXRyaXggKmRlc3QsIGNvbnN0IEdMbWF0cml4ICphLCBjb25zdCBHTG1hdHJpeCAqYiApOwoKZXh0 ZXJuIHZvaWQKX21hdGhfbWF0cml4X211bF9mbG9hdHMoIEdMbWF0cml4ICpkZXN0LCBjb25zdCBH TGZsb2F0ICpiICk7CgpleHRlcm4gdm9pZApfbWF0aF9tYXRyaXhfbG9hZGYoIEdMbWF0cml4ICpt YXQsIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkCl9tYXRoX21hdHJpeF90cmFuc2xh dGUoIEdMbWF0cml4ICptYXQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4 dGVybiB2b2lkCl9tYXRoX21hdHJpeF9yb3RhdGUoIEdMbWF0cml4ICptLCBHTGZsb2F0IGFuZ2xl LAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7 CgpleHRlcm4gdm9pZApfbWF0aF9tYXRyaXhfc2NhbGUoIEdMbWF0cml4ICptYXQsIEdMZmxvYXQg eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkCl9tYXRoX21hdHJpeF9vcnRo byggR0xtYXRyaXggKm1hdCwKICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGxlZnQsIEdMZmxv YXQgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBib3R0b20sIEdMZmxvYXQgdG9w LAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbmVhcnZhbCwgR0xmbG9hdCBmYXJ2YWwgKTsK CmV4dGVybiB2b2lkCl9tYXRoX21hdHJpeF9mcnVzdHVtKCBHTG1hdHJpeCAqbWF0LAogICAgICAg ICAgICAgICAgICAgICAgR0xmbG9hdCBsZWZ0LCBHTGZsb2F0IHJpZ2h0LAogICAgICAgICAgICAg ICAgICAgICAgR0xmbG9hdCBib3R0b20sIEdMZmxvYXQgdG9wLAogICAgICAgICAgICAgICAgICAg ICAgR0xmbG9hdCBuZWFydmFsLCBHTGZsb2F0IGZhcnZhbCApOwoKZXh0ZXJuIHZvaWQKX21hdGhf bWF0cml4X3NldF9pZGVudGl0eSggR0xtYXRyaXggKmRlc3QgKTsKCmV4dGVybiB2b2lkCl9tYXRo X21hdHJpeF9jb3B5KCBHTG1hdHJpeCAqdG8sIGNvbnN0IEdMbWF0cml4ICpmcm9tICk7CgpleHRl cm4gdm9pZApfbWF0aF9tYXRyaXhfYW5hbHlzZSggR0xtYXRyaXggKm1hdCApOwoKZXh0ZXJuIHZv aWQKX21hdGhfbWF0cml4X3ByaW50KCBjb25zdCBHTG1hdHJpeCAqbSApOwoKCgoKCgpleHRlcm4g dm9pZApfbWF0aF90cmFuc3Bvc2VmKCBHTGZsb2F0IHRvWzE2XSwgY29uc3QgR0xmbG9hdCBmcm9t WzE2XSApOwoKZXh0ZXJuIHZvaWQKX21hdGhfdHJhbnNwb3NlZCggR0xkb3VibGUgdG9bMTZdLCBj b25zdCBHTGRvdWJsZSBmcm9tWzE2XSApOwoKZXh0ZXJuIHZvaWQKX21hdGhfdHJhbnNwb3NlZmQo IEdMZmxvYXQgdG9bMTZdLCBjb25zdCBHTGRvdWJsZSBmcm9tWzE2XSApOwojIDQyICJtdHlwZXMu aCIgMgojIDU1ICJtdHlwZXMuaCIKICAgdHlwZWRlZiBHTHVieXRlIEdMY2hhbjsKIyA4MCAibXR5 cGVzLmgiCiAgIHR5cGVkZWYgR0xzaG9ydCBHTGFjY3VtOwojIDkyICJtdHlwZXMuaCIKICAgdHlw ZWRlZiBHTHVieXRlIEdMc3RlbmNpbDsKIyAxMDUgIm10eXBlcy5oIgp0eXBlZGVmIEdMdWludCBH TGRlcHRoOwoKCgoKCnR5cGVkZWYgaW50IEdMZml4ZWQ7CgoKCgoKCnN0cnVjdCBfbWVzYV9IYXNo VGFibGU7CnN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlOwpzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3Q7 CnR5cGVkZWYgc3RydWN0IF9fR0xjb250ZXh0UmVjIEdMY29udGV4dDsKdHlwZWRlZiBzdHJ1Y3Qg X19HTGNvbnRleHRNb2Rlc1JlYyBHTHZpc3VhbDsKdHlwZWRlZiBzdHJ1Y3QgZ2xfZnJhbWVfYnVm ZmVyIEdMZnJhbWVidWZmZXI7CiMgMTc5ICJtdHlwZXMuaCIKc3RydWN0IGdsX2NvbG9yX3RhYmxl IHsKICAgR0xlbnVtIEZvcm1hdDsKICAgR0xlbnVtIEludEZvcm1hdDsKICAgR0x1aW50IFNpemU7 CiAgIEdMdm9pZCAqVGFibGU7CiAgIEdMYm9vbGVhbiBGbG9hdFRhYmxlOwogICBHTHVieXRlIFJl ZFNpemU7CiAgIEdMdWJ5dGUgR3JlZW5TaXplOwogICBHTHVieXRlIEJsdWVTaXplOwogICBHTHVi eXRlIEFscGhhU2l6ZTsKICAgR0x1Ynl0ZSBMdW1pbmFuY2VTaXplOwogICBHTHVieXRlIEludGVu c2l0eVNpemU7Cn07CiMgMjI4ICJtdHlwZXMuaCIKc3RydWN0IGdsX3NoaW5lX3RhYiB7CiAgIHN0 cnVjdCBnbF9zaGluZV90YWIgKm5leHQsICpwcmV2OwogICBHTGZsb2F0IHRhYlsyNTYgKzFdOwog ICBHTGZsb2F0IHNoaW5pbmVzczsKICAgR0x1aW50IHJlZmNvdW50Owp9OwoKCnN0cnVjdCBnbF9s aWdodCB7CiAgIHN0cnVjdCBnbF9saWdodCAqbmV4dDsKICAgc3RydWN0IGdsX2xpZ2h0ICpwcmV2 OwoKICAgR0xmbG9hdCBBbWJpZW50WzRdOwogICBHTGZsb2F0IERpZmZ1c2VbNF07CiAgIEdMZmxv YXQgU3BlY3VsYXJbNF07CiAgIEdMZmxvYXQgRXllUG9zaXRpb25bNF07CiAgIEdMZmxvYXQgRXll RGlyZWN0aW9uWzRdOwogICBHTGZsb2F0IFNwb3RFeHBvbmVudDsKICAgR0xmbG9hdCBTcG90Q3V0 b2ZmOwogICBHTGZsb2F0IF9Db3NDdXRvZmY7CiAgIEdMZmxvYXQgQ29uc3RhbnRBdHRlbnVhdGlv bjsKICAgR0xmbG9hdCBMaW5lYXJBdHRlbnVhdGlvbjsKICAgR0xmbG9hdCBRdWFkcmF0aWNBdHRl bnVhdGlvbjsKICAgR0xib29sZWFuIEVuYWJsZWQ7CgoKICAgR0x1aW50IF9GbGFnczsKCiAgIEdM ZmxvYXQgX1Bvc2l0aW9uWzRdOwogICBHTGZsb2F0IF9WUF9pbmZfbm9ybVszXTsKICAgR0xmbG9h dCBfaF9pbmZfbm9ybVszXTsKICAgR0xmbG9hdCBfTm9ybURpcmVjdGlvbls0XTsKICAgR0xmbG9h dCBfVlBfaW5mX3Nwb3RfYXR0ZW51YXRpb247CgogICBHTGZsb2F0IF9TcG90RXhwVGFibGVbNTEy XVsyXTsKICAgR0xmbG9hdCBfTWF0QW1iaWVudFsyXVszXTsKICAgR0xmbG9hdCBfTWF0RGlmZnVz ZVsyXVszXTsKICAgR0xmbG9hdCBfTWF0U3BlY3VsYXJbMl1bM107CiAgIEdMZmxvYXQgX2RsaTsK ICAgR0xmbG9hdCBfc2xpOwp9OwoKCnN0cnVjdCBnbF9saWdodG1vZGVsIHsKICAgR0xmbG9hdCBB bWJpZW50WzRdOwogICBHTGJvb2xlYW4gTG9jYWxWaWV3ZXI7CiAgIEdMYm9vbGVhbiBUd29TaWRl OwogICBHTGVudW0gQ29sb3JDb250cm9sOwoKfTsKCgpzdHJ1Y3QgZ2xfbWF0ZXJpYWwKewogICBH TGZsb2F0IEFtYmllbnRbNF07CiAgIEdMZmxvYXQgRGlmZnVzZVs0XTsKICAgR0xmbG9hdCBTcGVj dWxhcls0XTsKICAgR0xmbG9hdCBFbWlzc2lvbls0XTsKICAgR0xmbG9hdCBTaGluaW5lc3M7CiAg IEdMZmxvYXQgQW1iaWVudEluZGV4OwogICBHTGZsb2F0IERpZmZ1c2VJbmRleDsKICAgR0xmbG9h dCBTcGVjdWxhckluZGV4Owp9OwoKCgoKCgoKc3RydWN0IGdsX2FjY3VtX2F0dHJpYiB7CiAgIEdM ZmxvYXQgQ2xlYXJDb2xvcls0XTsKfTsKIyAzMTUgIm10eXBlcy5oIgpzdHJ1Y3QgZ2xfY29sb3Ji dWZmZXJfYXR0cmliIHsKICAgR0x1aW50IENsZWFySW5kZXg7CiAgIEdMY2xhbXBmIENsZWFyQ29s b3JbNF07CgogICBHTHVpbnQgSW5kZXhNYXNrOwogICBHTHVieXRlIENvbG9yTWFza1s0XTsKCiAg IEdMZW51bSBEcmF3QnVmZmVyOwogICBHTHVieXRlIF9EcmF3RGVzdE1hc2s7CgoKICAgR0xib29s ZWFuIEFscGhhRW5hYmxlZDsKICAgR0xlbnVtIEFscGhhRnVuYzsKICAgR0xjbGFtcGYgQWxwaGFS ZWY7CgoKICAgR0xib29sZWFuIEJsZW5kRW5hYmxlZDsKICAgR0xlbnVtIEJsZW5kU3JjUkdCOwog ICBHTGVudW0gQmxlbmREc3RSR0I7CiAgIEdMZW51bSBCbGVuZFNyY0E7CiAgIEdMZW51bSBCbGVu ZERzdEE7CiAgIEdMZW51bSBCbGVuZEVxdWF0aW9uOwogICBHTGZsb2F0IEJsZW5kQ29sb3JbNF07 CgoKICAgR0xlbnVtIExvZ2ljT3A7CiAgIEdMYm9vbGVhbiBJbmRleExvZ2ljT3BFbmFibGVkOwog ICBHTGJvb2xlYW4gQ29sb3JMb2dpY09wRW5hYmxlZDsKCiAgIEdMYm9vbGVhbiBEaXRoZXJGbGFn Owp9OwoKCnN0cnVjdCBnbF9jdXJyZW50X2F0dHJpYiB7CgoKICAgR0xmbG9hdCBBdHRyaWJbMTZd WzRdOwoKICAgR0x1aW50IEluZGV4OwogICBHTGJvb2xlYW4gRWRnZUZsYWc7CgoKCgogICBHTGZs b2F0IFJhc3RlclBvc1s0XTsKICAgR0xmbG9hdCBSYXN0ZXJEaXN0YW5jZTsKICAgR0xmbG9hdCBS YXN0ZXJDb2xvcls0XTsKICAgR0xmbG9hdCBSYXN0ZXJTZWNvbmRhcnlDb2xvcls0XTsKICAgR0x1 aW50IFJhc3RlckluZGV4OwogICBHTGZsb2F0IFJhc3RlclRleENvb3Jkc1s4XVs0XTsKICAgR0xi b29sZWFuIFJhc3RlclBvc1ZhbGlkOwp9OwoKCnN0cnVjdCBnbF9kZXB0aGJ1ZmZlcl9hdHRyaWIg ewogICBHTGVudW0gRnVuYzsKICAgR0xmbG9hdCBDbGVhcjsKICAgR0xib29sZWFuIFRlc3Q7CiAg IEdMYm9vbGVhbiBNYXNrOwogICBHTGJvb2xlYW4gT2NjbHVzaW9uVGVzdDsKfTsKCgpzdHJ1Y3Qg Z2xfZW5hYmxlX2F0dHJpYiB7CiAgIEdMYm9vbGVhbiBBbHBoYVRlc3Q7CiAgIEdMYm9vbGVhbiBB dXRvTm9ybWFsOwogICBHTGJvb2xlYW4gQmxlbmQ7CiAgIEdMdWludCBDbGlwUGxhbmVzOwogICBH TGJvb2xlYW4gQ29sb3JNYXRlcmlhbDsKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMUQ7CiAgIEdM Ym9vbGVhbiBDb252b2x1dGlvbjJEOwogICBHTGJvb2xlYW4gU2VwYXJhYmxlMkQ7CiAgIEdMYm9v bGVhbiBDdWxsRmFjZTsKICAgR0xib29sZWFuIERlcHRoVGVzdDsKICAgR0xib29sZWFuIERpdGhl cjsKICAgR0xib29sZWFuIEZvZzsKICAgR0xib29sZWFuIEhpc3RvZ3JhbTsKICAgR0xib29sZWFu IExpZ2h0WzhdOwogICBHTGJvb2xlYW4gTGlnaHRpbmc7CiAgIEdMYm9vbGVhbiBMaW5lU21vb3Ro OwogICBHTGJvb2xlYW4gTGluZVN0aXBwbGU7CiAgIEdMYm9vbGVhbiBJbmRleExvZ2ljT3A7CiAg IEdMYm9vbGVhbiBDb2xvckxvZ2ljT3A7CiAgIEdMYm9vbGVhbiBNYXAxQ29sb3I0OwogICBHTGJv b2xlYW4gTWFwMUluZGV4OwogICBHTGJvb2xlYW4gTWFwMU5vcm1hbDsKICAgR0xib29sZWFuIE1h cDFUZXh0dXJlQ29vcmQxOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDI7CiAgIEdMYm9v bGVhbiBNYXAxVGV4dHVyZUNvb3JkMzsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29vcmQ0Owog ICBHTGJvb2xlYW4gTWFwMVZlcnRleDM7CiAgIEdMYm9vbGVhbiBNYXAxVmVydGV4NDsKICAgR0xi b29sZWFuIE1hcDFBdHRyaWJbMTZdOwogICBHTGJvb2xlYW4gTWFwMkNvbG9yNDsKICAgR0xib29s ZWFuIE1hcDJJbmRleDsKICAgR0xib29sZWFuIE1hcDJOb3JtYWw7CiAgIEdMYm9vbGVhbiBNYXAy VGV4dHVyZUNvb3JkMTsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQyOwogICBHTGJvb2xl YW4gTWFwMlRleHR1cmVDb29yZDM7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3JkNDsKICAg R0xib29sZWFuIE1hcDJWZXJ0ZXgzOwogICBHTGJvb2xlYW4gTWFwMlZlcnRleDQ7CiAgIEdMYm9v bGVhbiBNYXAyQXR0cmliWzE2XTsKICAgR0xib29sZWFuIE1pbk1heDsKICAgR0xib29sZWFuIE5v cm1hbGl6ZTsKICAgR0xib29sZWFuIFBpeGVsVGV4dHVyZTsKICAgR0xib29sZWFuIFBvaW50U21v b3RoOwogICBHTGJvb2xlYW4gUG9seWdvbk9mZnNldFBvaW50OwogICBHTGJvb2xlYW4gUG9seWdv bk9mZnNldExpbmU7CiAgIEdMYm9vbGVhbiBQb2x5Z29uT2Zmc2V0RmlsbDsKICAgR0xib29sZWFu IFBvbHlnb25TbW9vdGg7CiAgIEdMYm9vbGVhbiBQb2x5Z29uU3RpcHBsZTsKICAgR0xib29sZWFu IFJlc2NhbGVOb3JtYWxzOwogICBHTGJvb2xlYW4gU2Npc3NvcjsKICAgR0xib29sZWFuIFN0ZW5j aWw7CiAgIEdMYm9vbGVhbiBNdWx0aXNhbXBsZUVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBTYW1wbGVB bHBoYVRvQ292ZXJhZ2U7CiAgIEdMYm9vbGVhbiBTYW1wbGVBbHBoYVRvT25lOwogICBHTGJvb2xl YW4gU2FtcGxlQ292ZXJhZ2U7CiAgIEdMYm9vbGVhbiBTYW1wbGVDb3ZlcmFnZUludmVydDsKICAg R0xib29sZWFuIFJhc3RlclBvc2l0aW9uVW5jbGlwcGVkOwogICBHTHVpbnQgVGV4dHVyZVs4XTsK ICAgR0x1aW50IFRleEdlbls4XTsKICAgR0xib29sZWFuIFZlcnRleFByb2dyYW07CiAgIEdMYm9v bGVhbiBWZXJ0ZXhQcm9ncmFtUG9pbnRTaXplOwogICBHTGJvb2xlYW4gVmVydGV4UHJvZ3JhbVR3 b1NpZGU7CiAgIEdMYm9vbGVhbiBQb2ludFNwcml0ZTsKfTsKCgpzdHJ1Y3QgZ2xfZXZhbF9hdHRy aWIgewoKICAgR0xib29sZWFuIE1hcDFDb2xvcjQ7CiAgIEdMYm9vbGVhbiBNYXAxSW5kZXg7CiAg IEdMYm9vbGVhbiBNYXAxTm9ybWFsOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDE7CiAg IEdMYm9vbGVhbiBNYXAxVGV4dHVyZUNvb3JkMjsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29v cmQzOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDQ7CiAgIEdMYm9vbGVhbiBNYXAxVmVy dGV4MzsKICAgR0xib29sZWFuIE1hcDFWZXJ0ZXg0OwogICBHTGJvb2xlYW4gTWFwMUF0dHJpYlsx Nl07CiAgIEdMYm9vbGVhbiBNYXAyQ29sb3I0OwogICBHTGJvb2xlYW4gTWFwMkluZGV4OwogICBH TGJvb2xlYW4gTWFwMk5vcm1hbDsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQxOwogICBH TGJvb2xlYW4gTWFwMlRleHR1cmVDb29yZDI7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3Jk MzsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQ0OwogICBHTGJvb2xlYW4gTWFwMlZlcnRl eDM7CiAgIEdMYm9vbGVhbiBNYXAyVmVydGV4NDsKICAgR0xib29sZWFuIE1hcDJBdHRyaWJbMTZd OwogICBHTGJvb2xlYW4gQXV0b05vcm1hbDsKCiAgIEdMaW50IE1hcEdyaWQxdW47CiAgIEdMZmxv YXQgTWFwR3JpZDF1MSwgTWFwR3JpZDF1MiwgTWFwR3JpZDFkdTsKICAgR0xpbnQgTWFwR3JpZDJ1 biwgTWFwR3JpZDJ2bjsKICAgR0xmbG9hdCBNYXBHcmlkMnUxLCBNYXBHcmlkMnUyLCBNYXBHcmlk MmR1OwogICBHTGZsb2F0IE1hcEdyaWQydjEsIE1hcEdyaWQydjIsIE1hcEdyaWQyZHY7Cn07CgoK c3RydWN0IGdsX2ZvZ19hdHRyaWIgewogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xmbG9hdCBD b2xvcls0XTsKICAgR0xmbG9hdCBEZW5zaXR5OwogICBHTGZsb2F0IFN0YXJ0OwogICBHTGZsb2F0 IEVuZDsKICAgR0xmbG9hdCBJbmRleDsKICAgR0xlbnVtIE1vZGU7CiAgIEdMYm9vbGVhbiBDb2xv clN1bUVuYWJsZWQ7CiAgIEdMZW51bSBGb2dDb29yZGluYXRlU291cmNlOwp9OwoKCnN0cnVjdCBn bF9oaW50X2F0dHJpYiB7CgogICBHTGVudW0gUGVyc3BlY3RpdmVDb3JyZWN0aW9uOwogICBHTGVu dW0gUG9pbnRTbW9vdGg7CiAgIEdMZW51bSBMaW5lU21vb3RoOwogICBHTGVudW0gUG9seWdvblNt b290aDsKICAgR0xlbnVtIEZvZzsKICAgR0xlbnVtIENsaXBWb2x1bWVDbGlwcGluZzsKICAgR0xl bnVtIFRleHR1cmVDb21wcmVzc2lvbjsKICAgR0xlbnVtIEdlbmVyYXRlTWlwbWFwOwp9OwoKCnN0 cnVjdCBnbF9oaXN0b2dyYW1fYXR0cmliIHsKICAgR0x1aW50IFdpZHRoOwogICBHTGludCBGb3Jt YXQ7CiAgIEdMdWludCBDb3VudFsyNTZdWzRdOwogICBHTGJvb2xlYW4gU2luazsKICAgR0x1Ynl0 ZSBSZWRTaXplOwogICBHTHVieXRlIEdyZWVuU2l6ZTsKICAgR0x1Ynl0ZSBCbHVlU2l6ZTsKICAg R0x1Ynl0ZSBBbHBoYVNpemU7CiAgIEdMdWJ5dGUgTHVtaW5hbmNlU2l6ZTsKfTsKCgpzdHJ1Y3Qg Z2xfbWlubWF4X2F0dHJpYiB7CiAgIEdMZW51bSBGb3JtYXQ7CiAgIEdMYm9vbGVhbiBTaW5rOwog ICBHTGZsb2F0IE1pbls0XSwgTWF4WzRdOwp9OwoKCnN0cnVjdCBnbF9jb252b2x1dGlvbl9hdHRy aWIgewogICBHTGVudW0gRm9ybWF0OwogICBHTGVudW0gSW50ZXJuYWxGb3JtYXQ7CiAgIEdMdWlu dCBXaWR0aDsKICAgR0x1aW50IEhlaWdodDsKICAgR0xmbG9hdCBGaWx0ZXJbOSAqIDkgKiA0XTsK fTsKCgoKCgoKCnN0cnVjdCBnbF9saWdodF9hdHRyaWIgewogICBzdHJ1Y3QgZ2xfbGlnaHQgTGln aHRbOF07CiAgIHN0cnVjdCBnbF9saWdodG1vZGVsIE1vZGVsOwoKCgogICBzdHJ1Y3QgZ2xfbWF0 ZXJpYWwgTWF0ZXJpYWxbMl07CgogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xlbnVtIFNoYWRl TW9kZWw7CiAgIEdMZW51bSBDb2xvck1hdGVyaWFsRmFjZTsKICAgR0xlbnVtIENvbG9yTWF0ZXJp YWxNb2RlOwogICBHTHVpbnQgQ29sb3JNYXRlcmlhbEJpdG1hc2s7CiAgIEdMYm9vbGVhbiBDb2xv ck1hdGVyaWFsRW5hYmxlZDsKCiAgIHN0cnVjdCBnbF9saWdodCBFbmFibGVkTGlzdDsKCgogICBH TGJvb2xlYW4gX05lZWRWZXJ0aWNlczsKICAgR0x1aW50IF9GbGFnczsKICAgR0xmbG9hdCBfQmFz ZUNvbG9yWzJdWzNdOwp9OwoKCnN0cnVjdCBnbF9saW5lX2F0dHJpYiB7CiAgIEdMYm9vbGVhbiBT bW9vdGhGbGFnOwogICBHTGJvb2xlYW4gU3RpcHBsZUZsYWc7CiAgIEdMdXNob3J0IFN0aXBwbGVQ YXR0ZXJuOwogICBHTGludCBTdGlwcGxlRmFjdG9yOwogICBHTGZsb2F0IFdpZHRoOwogICBHTGZs b2F0IF9XaWR0aDsKfTsKCgpzdHJ1Y3QgZ2xfbGlzdF9hdHRyaWIgewogICBHTHVpbnQgTGlzdEJh c2U7Cn07CgoKc3RydWN0IGdsX2xpc3Rfb3Bjb2RlIHsKICAgR0x1aW50IHNpemU7CiAgIHZvaWQg KCpleGVjdXRlKSggR0xjb250ZXh0ICpjdHgsIHZvaWQgKmRhdGEgKTsKICAgdm9pZCAoKmRlc3Ry b3kpKCBHTGNvbnRleHQgKmN0eCwgdm9pZCAqZGF0YSApOwogICB2b2lkICgqcHJpbnQpKCBHTGNv bnRleHQgKmN0eCwgdm9pZCAqZGF0YSApOwp9OwoKCgpzdHJ1Y3QgZ2xfbGlzdF9leHRlbnNpb25z IHsKICAgc3RydWN0IGdsX2xpc3Rfb3Bjb2RlIG9wY29kZVsxNl07CiAgIEdMdWludCBucl9vcGNv ZGVzOwp9OwoKCnN0cnVjdCBnbF9tdWx0aXNhbXBsZV9hdHRyaWIgewogICBHTGJvb2xlYW4gRW5h YmxlZDsKICAgR0xib29sZWFuIFNhbXBsZUFscGhhVG9Db3ZlcmFnZTsKICAgR0xib29sZWFuIFNh bXBsZUFscGhhVG9PbmU7CiAgIEdMYm9vbGVhbiBTYW1wbGVDb3ZlcmFnZTsKICAgR0xmbG9hdCBT YW1wbGVDb3ZlcmFnZVZhbHVlOwogICBHTGJvb2xlYW4gU2FtcGxlQ292ZXJhZ2VJbnZlcnQ7Cn07 CgoKc3RydWN0IGdsX3BpeGVsX2F0dHJpYiB7CiAgIEdMZW51bSBSZWFkQnVmZmVyOwogICBHTHVi eXRlIF9SZWFkU3JjTWFzazsKCgogICBHTGZsb2F0IFJlZEJpYXMsIFJlZFNjYWxlOwogICBHTGZs b2F0IEdyZWVuQmlhcywgR3JlZW5TY2FsZTsKICAgR0xmbG9hdCBCbHVlQmlhcywgQmx1ZVNjYWxl OwogICBHTGZsb2F0IEFscGhhQmlhcywgQWxwaGFTY2FsZTsKICAgR0xmbG9hdCBEZXB0aEJpYXMs IERlcHRoU2NhbGU7CiAgIEdMaW50IEluZGV4U2hpZnQsIEluZGV4T2Zmc2V0OwogICBHTGJvb2xl YW4gTWFwQ29sb3JGbGFnOwogICBHTGJvb2xlYW4gTWFwU3RlbmNpbEZsYWc7CiAgIEdMZmxvYXQg Wm9vbVgsIFpvb21ZOwoKICAgR0xpbnQgTWFwU3RvU3NpemU7CiAgIEdMaW50IE1hcEl0b0lzaXpl OwogICBHTGludCBNYXBJdG9Sc2l6ZTsKICAgR0xpbnQgTWFwSXRvR3NpemU7CiAgIEdMaW50IE1h cEl0b0JzaXplOwogICBHTGludCBNYXBJdG9Bc2l6ZTsKICAgR0xpbnQgTWFwUnRvUnNpemU7CiAg IEdMaW50IE1hcEd0b0dzaXplOwogICBHTGludCBNYXBCdG9Cc2l6ZTsKICAgR0xpbnQgTWFwQXRv QXNpemU7CiAgIEdMaW50IE1hcFN0b1NbMjU2XTsKICAgR0xpbnQgTWFwSXRvSVsyNTZdOwogICBH TGZsb2F0IE1hcEl0b1JbMjU2XTsKICAgR0xmbG9hdCBNYXBJdG9HWzI1Nl07CiAgIEdMZmxvYXQg TWFwSXRvQlsyNTZdOwogICBHTGZsb2F0IE1hcEl0b0FbMjU2XTsKICAgR0x1Ynl0ZSBNYXBJdG9S OFsyNTZdOwogICBHTHVieXRlIE1hcEl0b0c4WzI1Nl07CiAgIEdMdWJ5dGUgTWFwSXRvQjhbMjU2 XTsKICAgR0x1Ynl0ZSBNYXBJdG9BOFsyNTZdOwogICBHTGZsb2F0IE1hcFJ0b1JbMjU2XTsKICAg R0xmbG9hdCBNYXBHdG9HWzI1Nl07CiAgIEdMZmxvYXQgTWFwQnRvQlsyNTZdOwogICBHTGZsb2F0 IE1hcEF0b0FbMjU2XTsKCiAgIEdMYm9vbGVhbiBIaXN0b2dyYW1FbmFibGVkOwogICBHTGJvb2xl YW4gTWluTWF4RW5hYmxlZDsKCiAgIEdMYm9vbGVhbiBQaXhlbFRleHR1cmVFbmFibGVkOwogICBH TGVudW0gRnJhZ21lbnRSZ2JTb3VyY2U7CiAgIEdMZW51bSBGcmFnbWVudEFscGhhU291cmNlOwoK ICAgR0xmbG9hdCBQb3N0Q29sb3JNYXRyaXhTY2FsZVs0XTsKICAgR0xmbG9hdCBQb3N0Q29sb3JN YXRyaXhCaWFzWzRdOwoKICAgR0xmbG9hdCBDb2xvclRhYmxlU2NhbGVbNF07CiAgIEdMZmxvYXQg Q29sb3JUYWJsZUJpYXNbNF07CiAgIEdMYm9vbGVhbiBDb2xvclRhYmxlRW5hYmxlZDsKICAgR0xm bG9hdCBQQ0NUc2NhbGVbNF07CiAgIEdMZmxvYXQgUENDVGJpYXNbNF07CiAgIEdMYm9vbGVhbiBQ b3N0Q29udm9sdXRpb25Db2xvclRhYmxlRW5hYmxlZDsKICAgR0xmbG9hdCBQQ01DVHNjYWxlWzRd OwogICBHTGZsb2F0IFBDTUNUYmlhc1s0XTsKICAgR0xib29sZWFuIFBvc3RDb2xvck1hdHJpeENv bG9yVGFibGVFbmFibGVkOwoKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMURFbmFibGVkOwogICBH TGJvb2xlYW4gQ29udm9sdXRpb24yREVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBTZXBhcmFibGUyREVu YWJsZWQ7CiAgIEdMZmxvYXQgQ29udm9sdXRpb25Cb3JkZXJDb2xvclszXVs0XTsKICAgR0xlbnVt IENvbnZvbHV0aW9uQm9yZGVyTW9kZVszXTsKICAgR0xmbG9hdCBDb252b2x1dGlvbkZpbHRlclNj YWxlWzNdWzRdOwogICBHTGZsb2F0IENvbnZvbHV0aW9uRmlsdGVyQmlhc1szXVs0XTsKICAgR0xm bG9hdCBQb3N0Q29udm9sdXRpb25TY2FsZVs0XTsKICAgR0xmbG9hdCBQb3N0Q29udm9sdXRpb25C aWFzWzRdOwp9OwoKCnN0cnVjdCBnbF9wb2ludF9hdHRyaWIgewogICBHTGJvb2xlYW4gU21vb3Ro RmxhZzsKICAgR0xmbG9hdCBTaXplOwogICBHTGZsb2F0IF9TaXplOwogICBHTGZsb2F0IFBhcmFt c1szXTsKICAgR0xmbG9hdCBNaW5TaXplLCBNYXhTaXplOwogICBHTGZsb2F0IFRocmVzaG9sZDsK ICAgR0xib29sZWFuIF9BdHRlbnVhdGVkOwogICBHTGJvb2xlYW4gUG9pbnRTcHJpdGU7CiAgIEdM Ym9vbGVhbiBDb29yZFJlcGxhY2VbOF07CiAgIEdMZW51bSBTcHJpdGVSTW9kZTsKfTsKCgpzdHJ1 Y3QgZ2xfcG9seWdvbl9hdHRyaWIgewogICBHTGVudW0gRnJvbnRGYWNlOwogICBHTGVudW0gRnJv bnRNb2RlOwogICBHTGVudW0gQmFja01vZGU7CiAgIEdMYm9vbGVhbiBfRnJvbnRCaXQ7CiAgIEdM Ym9vbGVhbiBDdWxsRmxhZzsKICAgR0xib29sZWFuIFNtb290aEZsYWc7CiAgIEdMYm9vbGVhbiBT dGlwcGxlRmxhZzsKICAgR0xlbnVtIEN1bGxGYWNlTW9kZTsKICAgR0xmbG9hdCBPZmZzZXRGYWN0 b3I7CiAgIEdMZmxvYXQgT2Zmc2V0VW5pdHM7CiAgIEdMYm9vbGVhbiBPZmZzZXRQb2ludDsKICAg R0xib29sZWFuIE9mZnNldExpbmU7CiAgIEdMYm9vbGVhbiBPZmZzZXRGaWxsOwp9OwoKCnN0cnVj dCBnbF9zY2lzc29yX2F0dHJpYiB7CiAgIEdMYm9vbGVhbiBFbmFibGVkOwogICBHTGludCBYLCBZ OwogICBHTHNpemVpIFdpZHRoLCBIZWlnaHQ7Cn07CgoKc3RydWN0IGdsX3N0ZW5jaWxfYXR0cmli IHsKICAgR0xib29sZWFuIEVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBUZXN0VHdvU2lkZTsKICAgR0x1 Ynl0ZSBBY3RpdmVGYWNlOwogICBHTGVudW0gRnVuY3Rpb25bMl07CiAgIEdMZW51bSBGYWlsRnVu Y1syXTsKICAgR0xlbnVtIFpQYXNzRnVuY1syXTsKICAgR0xlbnVtIFpGYWlsRnVuY1syXTsKICAg R0xzdGVuY2lsIFJlZlsyXTsKICAgR0xzdGVuY2lsIFZhbHVlTWFza1syXTsKICAgR0xzdGVuY2ls IFdyaXRlTWFza1syXTsKICAgR0xzdGVuY2lsIENsZWFyOwp9OwojIDc4NiAibXR5cGVzLmgiCnR5 cGVkZWYgdm9pZCAoKkZldGNoVGV4ZWxGdW5jKSggY29uc3Qgc3RydWN0IGdsX3RleHR1cmVfaW1h Z2UgKnRleEltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbCwg R0xpbnQgcm93LCBHTGludCBpbWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2 b2lkICp0ZXhlbE91dCApOwoKCnN0cnVjdCBnbF90ZXh0dXJlX2Zvcm1hdCB7CiAgIEdMaW50IE1l c2FGb3JtYXQ7CgogICBHTGVudW0gQmFzZUZvcm1hdDsKCgoKICAgR0x1Ynl0ZSBSZWRCaXRzOwog ICBHTHVieXRlIEdyZWVuQml0czsKICAgR0x1Ynl0ZSBCbHVlQml0czsKICAgR0x1Ynl0ZSBBbHBo YUJpdHM7CiAgIEdMdWJ5dGUgTHVtaW5hbmNlQml0czsKICAgR0x1Ynl0ZSBJbnRlbnNpdHlCaXRz OwogICBHTHVieXRlIEluZGV4Qml0czsKICAgR0x1Ynl0ZSBEZXB0aEJpdHM7CgogICBHTGludCBU ZXhlbEJ5dGVzOwoKICAgRmV0Y2hUZXhlbEZ1bmMgRmV0Y2hUZXhlbDFEOwogICBGZXRjaFRleGVs RnVuYyBGZXRjaFRleGVsMkQ7CiAgIEZldGNoVGV4ZWxGdW5jIEZldGNoVGV4ZWwzRDsKfTsKCgoK c3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgewogICBHTGVudW0gRm9ybWF0OwoKCgoKICAgR0xpbnQg SW50Rm9ybWF0OwogICBHTHVpbnQgQm9yZGVyOwogICBHTHVpbnQgV2lkdGg7CiAgIEdMdWludCBI ZWlnaHQ7CiAgIEdMdWludCBEZXB0aDsKICAgR0x1aW50IFJvd1N0cmlkZTsKICAgR0x1aW50IFdp ZHRoMjsKICAgR0x1aW50IEhlaWdodDI7CiAgIEdMdWludCBEZXB0aDI7CiAgIEdMdWludCBXaWR0 aExvZzI7CiAgIEdMdWludCBIZWlnaHRMb2cyOwogICBHTHVpbnQgRGVwdGhMb2cyOwogICBHTHVp bnQgTWF4TG9nMjsKICAgR0xmbG9hdCBXaWR0aFNjYWxlOwogICBHTGZsb2F0IEhlaWdodFNjYWxl OwogICBHTGZsb2F0IERlcHRoU2NhbGU7CiAgIEdMdm9pZCAqRGF0YTsKICAgR0xib29sZWFuIElz Q2xpZW50RGF0YTsKCgogICBjb25zdCBzdHJ1Y3QgZ2xfdGV4dHVyZV9mb3JtYXQgKlRleEZvcm1h dDsKCiAgIEZldGNoVGV4ZWxGdW5jIEZldGNoVGV4ZWw7CgogICBHTGJvb2xlYW4gSXNDb21wcmVz c2VkOwogICBHTHVpbnQgQ29tcHJlc3NlZFNpemU7CgoKICAgdm9pZCAqRHJpdmVyRGF0YTsKfTsK CgoKc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0IHsKICAgX2dsdGhyZWFkX011dGV4IE11dGV4Owog ICBHTGludCBSZWZDb3VudDsKICAgR0x1aW50IE5hbWU7CiAgIEdMZW51bSBUYXJnZXQ7CiAgIEdM ZmxvYXQgUHJpb3JpdHk7CiAgIEdMZmxvYXQgQm9yZGVyQ29sb3JbNF07CiAgIEdMY2hhbiBfQm9y ZGVyQ2hhbls0XTsKICAgR0xlbnVtIFdyYXBTOwogICBHTGVudW0gV3JhcFQ7CiAgIEdMZW51bSBX cmFwUjsKICAgR0xlbnVtIE1pbkZpbHRlcjsKICAgR0xlbnVtIE1hZ0ZpbHRlcjsKICAgR0xmbG9h dCBNaW5Mb2Q7CiAgIEdMZmxvYXQgTWF4TG9kOwogICBHTGludCBCYXNlTGV2ZWw7CiAgIEdMaW50 IE1heExldmVsOwogICBHTGZsb2F0IE1heEFuaXNvdHJvcHk7CiAgIEdMYm9vbGVhbiBDb21wYXJl RmxhZzsKICAgR0xlbnVtIENvbXBhcmVPcGVyYXRvcjsKICAgR0xmbG9hdCBTaGFkb3dBbWJpZW50 OwogICBHTGVudW0gQ29tcGFyZU1vZGU7CiAgIEdMZW51bSBDb21wYXJlRnVuYzsKICAgR0xlbnVt IERlcHRoTW9kZTsKICAgR0xpbnQgX01heExldmVsOwogICBHTGZsb2F0IF9NYXhMYW1iZGE7CiAg IEdMYm9vbGVhbiBHZW5lcmF0ZU1pcG1hcDsKCiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlICpJ bWFnZVsxMl07CgoKCiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlICpOZWdYWzEyXTsKICAgc3Ry dWN0IGdsX3RleHR1cmVfaW1hZ2UgKlBvc1lbMTJdOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFn ZSAqTmVnWVsxMl07CiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlICpQb3NaWzEyXTsKICAgc3Ry dWN0IGdsX3RleHR1cmVfaW1hZ2UgKk5lZ1pbMTJdOwoKCiAgIHN0cnVjdCBnbF9jb2xvcl90YWJs ZSBQYWxldHRlOwoKICAgR0xib29sZWFuIENvbXBsZXRlOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9v YmplY3QgKk5leHQ7CgoKICAgdm9pZCAqRHJpdmVyRGF0YTsKfTsKCgoKc3RydWN0IGdsX3RleHR1 cmVfdW5pdCB7CiAgIEdMdWludCBFbmFibGVkOwogICBHTHVpbnQgX1JlYWxseUVuYWJsZWQ7Cgog ICBHTGVudW0gRW52TW9kZTsKICAgR0xmbG9hdCBFbnZDb2xvcls0XTsKICAgR0x1aW50IFRleEdl bkVuYWJsZWQ7CiAgIEdMZW51bSBHZW5Nb2RlUzsKICAgR0xlbnVtIEdlbk1vZGVUOwogICBHTGVu dW0gR2VuTW9kZVI7CiAgIEdMZW51bSBHZW5Nb2RlUTsKICAgR0x1aW50IF9HZW5CaXRTOwogICBH THVpbnQgX0dlbkJpdFQ7CiAgIEdMdWludCBfR2VuQml0UjsKICAgR0x1aW50IF9HZW5CaXRROwog ICBHTHVpbnQgX0dlbkZsYWdzOwogICBHTGZsb2F0IE9iamVjdFBsYW5lU1s0XTsKICAgR0xmbG9h dCBPYmplY3RQbGFuZVRbNF07CiAgIEdMZmxvYXQgT2JqZWN0UGxhbmVSWzRdOwogICBHTGZsb2F0 IE9iamVjdFBsYW5lUVs0XTsKICAgR0xmbG9hdCBFeWVQbGFuZVNbNF07CiAgIEdMZmxvYXQgRXll UGxhbmVUWzRdOwogICBHTGZsb2F0IEV5ZVBsYW5lUls0XTsKICAgR0xmbG9hdCBFeWVQbGFuZVFb NF07CiAgIEdMZmxvYXQgTG9kQmlhczsKCgogICBHTGVudW0gQ29tYmluZU1vZGVSR0I7CiAgIEdM ZW51bSBDb21iaW5lTW9kZUE7CiAgIEdMZW51bSBDb21iaW5lU291cmNlUkdCWzNdOwogICBHTGVu dW0gQ29tYmluZVNvdXJjZUFbM107CiAgIEdMZW51bSBDb21iaW5lT3BlcmFuZFJHQlszXTsKICAg R0xlbnVtIENvbWJpbmVPcGVyYW5kQVszXTsKICAgR0x1aW50IENvbWJpbmVTY2FsZVNoaWZ0UkdC OwogICBHTHVpbnQgQ29tYmluZVNjYWxlU2hpZnRBOwoKICAgc3RydWN0IGdsX3RleHR1cmVfb2Jq ZWN0ICpDdXJyZW50MUQ7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqQ3VycmVudDJEOwog ICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkN1cnJlbnQzRDsKICAgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICpDdXJyZW50Q3ViZU1hcDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpD dXJyZW50UmVjdDsKCiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqX0N1cnJlbnQ7CgogICBz dHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgU2F2ZWQxRDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2Jq ZWN0IFNhdmVkMkQ7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCBTYXZlZDNEOwogICBzdHJ1 Y3QgZ2xfdGV4dHVyZV9vYmplY3QgU2F2ZWRDdWJlTWFwOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9v YmplY3QgU2F2ZWRSZWN0Owp9OwoKCgpzdHJ1Y3QgZ2xfdGV4dHVyZV9hdHRyaWIgewoKICAgR0x1 aW50IEN1cnJlbnRVbml0OwoKICAgR0x1aW50IF9FbmFibGVkVW5pdHM7CiAgIEdMdWludCBfR2Vu RmxhZ3M7CiAgIEdMdWludCBfVGV4R2VuRW5hYmxlZDsKICAgR0x1aW50IF9UZXhNYXRFbmFibGVk OwoKICAgc3RydWN0IGdsX3RleHR1cmVfdW5pdCBVbml0WzhdOwoKICAgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICpQcm94eTFEOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKlByb3h5MkQ7 CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqUHJveHkzRDsKICAgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICpQcm94eUN1YmVNYXA7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqUHJv eHlSZWN0OwoKCiAgIEdMYm9vbGVhbiBTaGFyZWRQYWxldHRlOwogICBzdHJ1Y3QgZ2xfY29sb3Jf dGFibGUgUGFsZXR0ZTsKfTsKCgpzdHJ1Y3QgZ2xfdHJhbnNmb3JtX2F0dHJpYiB7CiAgIEdMZW51 bSBNYXRyaXhNb2RlOwogICBHTGZsb2F0IEV5ZVVzZXJQbGFuZVs2XVs0XTsKICAgR0xmbG9hdCBf Q2xpcFVzZXJQbGFuZVs2XVs0XTsKICAgR0x1aW50IENsaXBQbGFuZXNFbmFibGVkOwogICBHTGJv b2xlYW4gTm9ybWFsaXplOwogICBHTGJvb2xlYW4gUmVzY2FsZU5vcm1hbHM7CiAgIEdMYm9vbGVh biBSYXN0ZXJQb3NpdGlvblVuY2xpcHBlZDsKfTsKCgpzdHJ1Y3QgZ2xfdmlld3BvcnRfYXR0cmli IHsKICAgR0xpbnQgWCwgWTsKICAgR0xzaXplaSBXaWR0aCwgSGVpZ2h0OwogICBHTGZsb2F0IE5l YXIsIEZhcjsKICAgR0xtYXRyaXggX1dpbmRvd01hcDsKfTsKCgoKc3RydWN0IGdsX2F0dHJpYl9u b2RlIHsKICAgR0xiaXRmaWVsZCBraW5kOwogICB2b2lkICpkYXRhOwogICBzdHJ1Y3QgZ2xfYXR0 cmliX25vZGUgKm5leHQ7Cn07CgoKCgoKc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliIHsKICAg R0xpbnQgQWxpZ25tZW50OwogICBHTGludCBSb3dMZW5ndGg7CiAgIEdMaW50IFNraXBQaXhlbHM7 CiAgIEdMaW50IFNraXBSb3dzOwogICBHTGludCBJbWFnZUhlaWdodDsKICAgR0xpbnQgU2tpcElt YWdlczsKICAgR0xib29sZWFuIFN3YXBCeXRlczsKICAgR0xib29sZWFuIExzYkZpcnN0OwogICBH TGJvb2xlYW4gQ2xpZW50U3RvcmFnZTsKICAgR0xib29sZWFuIEludmVydDsKfTsKIyAxMDMxICJt dHlwZXMuaCIKc3RydWN0IGdsX2NsaWVudF9hcnJheSB7CiAgIEdMaW50IFNpemU7CiAgIEdMZW51 bSBUeXBlOwogICBHTHNpemVpIFN0cmlkZTsKICAgR0xzaXplaSBTdHJpZGVCOwogICB2b2lkICpQ dHI7CiAgIEdMdWludCBGbGFnczsKICAgR0x1aW50IEVuYWJsZWQ7Cn07CgoKc3RydWN0IGdsX2Fy cmF5X2F0dHJpYiB7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVmVydGV4OwogICBzdHJ1Y3Qg Z2xfY2xpZW50X2FycmF5IE5vcm1hbDsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJheSBDb2xvcjsK ICAgc3RydWN0IGdsX2NsaWVudF9hcnJheSBTZWNvbmRhcnlDb2xvcjsKICAgc3RydWN0IGdsX2Ns aWVudF9hcnJheSBGb2dDb29yZDsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJheSBJbmRleDsKICAg c3RydWN0IGdsX2NsaWVudF9hcnJheSBUZXhDb29yZFs4XTsKICAgc3RydWN0IGdsX2NsaWVudF9h cnJheSBFZGdlRmxhZzsKCiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVmVydGV4QXR0cmliWzE2 XTsKCiAgIEdMaW50IFRleENvb3JkSW50ZXJsZWF2ZUZhY3RvcjsKICAgR0xpbnQgQWN0aXZlVGV4 dHVyZTsKICAgR0x1aW50IExvY2tGaXJzdDsKICAgR0x1aW50IExvY2tDb3VudDsKCiAgIEdMdWlu dCBfRW5hYmxlZDsKICAgR0x1aW50IE5ld1N0YXRlOwp9OwoKCnN0cnVjdCBnbF9mZWVkYmFjayB7 CiAgIEdMZW51bSBUeXBlOwogICBHTHVpbnQgX01hc2s7CiAgIEdMZmxvYXQgKkJ1ZmZlcjsKICAg R0x1aW50IEJ1ZmZlclNpemU7CiAgIEdMdWludCBDb3VudDsKfTsKCgpzdHJ1Y3QgZ2xfc2VsZWN0 aW9uIHsKICAgR0x1aW50ICpCdWZmZXI7CiAgIEdMdWludCBCdWZmZXJTaXplOwogICBHTHVpbnQg QnVmZmVyQ291bnQ7CiAgIEdMdWludCBIaXRzOwogICBHTHVpbnQgTmFtZVN0YWNrRGVwdGg7CiAg IEdMdWludCBOYW1lU3RhY2tbNjRdOwogICBHTGJvb2xlYW4gSGl0RmxhZzsKICAgR0xmbG9hdCBI aXRNaW5aLCBIaXRNYXhaOwp9OwoKCgoKCnN0cnVjdCBnbF8xZF9tYXAgewogICBHTHVpbnQgT3Jk ZXI7CiAgIEdMZmxvYXQgdTEsIHUyLCBkdTsKICAgR0xmbG9hdCAqUG9pbnRzOwp9OwoKCgoKCnN0 cnVjdCBnbF8yZF9tYXAgewogICBHTHVpbnQgVW9yZGVyOwogICBHTHVpbnQgVm9yZGVyOwogICBH TGZsb2F0IHUxLCB1MiwgZHU7CiAgIEdMZmxvYXQgdjEsIHYyLCBkdjsKICAgR0xmbG9hdCAqUG9p bnRzOwp9OwoKCgoKCnN0cnVjdCBnbF9ldmFsdWF0b3JzIHsKCiAgIHN0cnVjdCBnbF8xZF9tYXAg TWFwMVZlcnRleDM7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVZlcnRleDQ7CiAgIHN0cnVjdCBn bF8xZF9tYXAgTWFwMUluZGV4OwogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1hcDFDb2xvcjQ7CiAgIHN0 cnVjdCBnbF8xZF9tYXAgTWFwMU5vcm1hbDsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxVGV4dHVy ZTE7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVRleHR1cmUyOwogICBzdHJ1Y3QgZ2xfMWRfbWFw IE1hcDFUZXh0dXJlMzsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxVGV4dHVyZTQ7CiAgIHN0cnVj dCBnbF8xZF9tYXAgTWFwMUF0dHJpYlsxNl07CgoKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVmVy dGV4MzsKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVmVydGV4NDsKICAgc3RydWN0IGdsXzJkX21h cCBNYXAySW5kZXg7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMkNvbG9yNDsKICAgc3RydWN0IGds XzJkX21hcCBNYXAyTm9ybWFsOwogICBzdHJ1Y3QgZ2xfMmRfbWFwIE1hcDJUZXh0dXJlMTsKICAg c3RydWN0IGdsXzJkX21hcCBNYXAyVGV4dHVyZTI7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMlRl eHR1cmUzOwogICBzdHJ1Y3QgZ2xfMmRfbWFwIE1hcDJUZXh0dXJlNDsKICAgc3RydWN0IGdsXzJk X21hcCBNYXAyQXR0cmliWzE2XTsKfTsKIyAxMTYyICJtdHlwZXMuaCIKc3RydWN0IHZwX21hY2hp bmUKewogICBHTGZsb2F0IFJlZ2lzdGVyc1soMTYgKyAxNSArIDEyICsgOTYpXVs0XTsKICAgR0xp bnQgQWRkcmVzc1JlZzsKfTsKCgoKZW51bSB2cF9vcGNvZGUKewogICBNT1YsCiAgIExJVCwKICAg UkNQLAogICBSU1EsCiAgIEVYUCwKICAgTE9HLAogICBNVUwsCiAgIEFERCwKICAgRFAzLAogICBE UDQsCiAgIERTVCwKICAgTUlOLAogICBNQVgsCiAgIFNMVCwKICAgU0dFLAogICBNQUQsCiAgIEFS TCwKICAgRFBILAogICBSQ0MsCiAgIFNVQiwKICAgQUJTLAogICBFTkQKfTsKCgoKc3RydWN0IHZw X3NyY19yZWdpc3Rlcgp7CiAgIEdMaW50IFJlZ2lzdGVyOwogICBHTHVpbnQgU3dpenpsZVs0XTsK ICAgR0xib29sZWFuIE5lZ2F0ZTsKICAgR0xib29sZWFuIFJlbEFkZHI7Cn07CgoKCnN0cnVjdCB2 cF9kc3RfcmVnaXN0ZXIKewogICBHTGludCBSZWdpc3RlcjsKICAgR0xib29sZWFuIFdyaXRlTWFz a1s0XTsKfTsKCgoKc3RydWN0IHZwX2luc3RydWN0aW9uCnsKICAgZW51bSB2cF9vcGNvZGUgT3Bj b2RlOwogICBzdHJ1Y3QgdnBfc3JjX3JlZ2lzdGVyIFNyY1JlZ1szXTsKICAgc3RydWN0IHZwX2Rz dF9yZWdpc3RlciBEc3RSZWc7Cn07CgoKCnN0cnVjdCB2cF9wcm9ncmFtCnsKICAgR0x1Ynl0ZSAq U3RyaW5nOwogICBzdHJ1Y3QgdnBfaW5zdHJ1Y3Rpb24gKkluc3RydWN0aW9uczsKICAgR0xlbnVt IFRhcmdldDsKICAgR0xpbnQgUmVmQ291bnQ7CiAgIEdMYm9vbGVhbiBJc1Bvc2l0aW9uSW52YXJp YW50OwogICBHTGJvb2xlYW4gUmVzaWRlbnQ7CiAgIEdMdWludCBJbnB1dHNSZWFkOwogICBHTHVp bnQgT3V0cHV0c1dyaXR0ZW47Cn07CgoKCgoKc3RydWN0IHZlcnRleF9wcm9ncmFtX3N0YXRlCnsK ICAgR0xib29sZWFuIEVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBQb2ludFNpemVFbmFibGVkOwogICBH TGJvb2xlYW4gVHdvU2lkZUVuYWJsZWQ7CiAgIEdMdWludCBDdXJyZW50SUQ7CiAgIEdMaW50IEVy cm9yUG9zOwogICBzdHJ1Y3QgdnBfcHJvZ3JhbSAqQ3VycmVudDsKICAgc3RydWN0IHZwX21hY2hp bmUgTWFjaGluZTsKCiAgIEdMZW51bSBUcmFja01hdHJpeFs5NiAvIDRdOwogICBHTGVudW0gVHJh Y2tNYXRyaXhUcmFuc2Zvcm1bOTYgLyA0XTsKfTsKCgoKCgoKc3RydWN0IGdsX3NoYXJlZF9zdGF0 ZSB7CiAgIF9nbHRocmVhZF9NdXRleCBNdXRleDsKICAgR0xpbnQgUmVmQ291bnQ7CiAgIHN0cnVj dCBfbWVzYV9IYXNoVGFibGUgKkRpc3BsYXlMaXN0OwogICBzdHJ1Y3QgX21lc2FfSGFzaFRhYmxl ICpUZXhPYmplY3RzOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKlRleE9iamVjdExpc3Q7 CgoKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpEZWZhdWx0MUQ7CiAgIHN0cnVjdCBnbF90 ZXh0dXJlX29iamVjdCAqRGVmYXVsdDJEOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkRl ZmF1bHQzRDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpEZWZhdWx0Q3ViZU1hcDsKICAg c3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpEZWZhdWx0UmVjdDsKCgogICBzdHJ1Y3QgX21lc2Ff SGFzaFRhYmxlICpWZXJ0ZXhQcm9ncmFtczsKCiAgIHZvaWQgKkRyaXZlckRhdGE7Cn07CiMgMTI4 NyAibXR5cGVzLmgiCnN0cnVjdCBnbF9mcmFtZV9idWZmZXIgewogICBHTHZpc3VhbCBWaXN1YWw7 CgogICBHTHVpbnQgV2lkdGgsIEhlaWdodDsKCiAgIEdMYm9vbGVhbiBVc2VTb2Z0d2FyZURlcHRo QnVmZmVyOwogICBHTGJvb2xlYW4gVXNlU29mdHdhcmVBY2N1bUJ1ZmZlcjsKICAgR0xib29sZWFu IFVzZVNvZnR3YXJlU3RlbmNpbEJ1ZmZlcjsKICAgR0xib29sZWFuIFVzZVNvZnR3YXJlQWxwaGFC dWZmZXJzOwoKCiAgIEdMdm9pZCAqRGVwdGhCdWZmZXI7CgoKICAgR0xzdGVuY2lsICpTdGVuY2ls OwoKCiAgIEdMYWNjdW0gKkFjY3VtOwoKCiAgIEdMdm9pZCAqRnJvbnRMZWZ0QWxwaGE7CiAgIEdM dm9pZCAqQmFja0xlZnRBbHBoYTsKICAgR0x2b2lkICpGcm9udFJpZ2h0QWxwaGE7CiAgIEdMdm9p ZCAqQmFja1JpZ2h0QWxwaGE7CgoKICAgR0xpbnQgX1htaW4sIF9ZbWluOwogICBHTGludCBfWG1h eCwgX1ltYXg7Cn07CgoKCgoKCnN0cnVjdCBnbF9jb25zdGFudHMgewogICBHTGludCBNYXhUZXh0 dXJlTGV2ZWxzOwogICBHTGludCBNYXgzRFRleHR1cmVMZXZlbHM7CiAgIEdMaW50IE1heEN1YmVU ZXh0dXJlTGV2ZWxzOwogICBHTGludCBNYXhUZXh0dXJlUmVjdFNpemU7CiAgIEdMdWludCBNYXhU ZXh0dXJlVW5pdHM7CiAgIEdMZmxvYXQgTWF4VGV4dHVyZU1heEFuaXNvdHJvcHk7CiAgIEdMZmxv YXQgTWF4VGV4dHVyZUxvZEJpYXM7CiAgIEdMdWludCBNYXhBcnJheUxvY2tTaXplOwogICBHTGlu dCBTdWJQaXhlbEJpdHM7CiAgIEdMZmxvYXQgTWluUG9pbnRTaXplLCBNYXhQb2ludFNpemU7CiAg IEdMZmxvYXQgTWluUG9pbnRTaXplQUEsIE1heFBvaW50U2l6ZUFBOwogICBHTGZsb2F0IFBvaW50 U2l6ZUdyYW51bGFyaXR5OwogICBHTGZsb2F0IE1pbkxpbmVXaWR0aCwgTWF4TGluZVdpZHRoOwog ICBHTGZsb2F0IE1pbkxpbmVXaWR0aEFBLCBNYXhMaW5lV2lkdGhBQTsKICAgR0xmbG9hdCBMaW5l V2lkdGhHcmFudWxhcml0eTsKICAgR0x1aW50IE51bUF1eEJ1ZmZlcnM7CiAgIEdMdWludCBNYXhD b2xvclRhYmxlU2l6ZTsKICAgR0x1aW50IE1heENvbnZvbHV0aW9uV2lkdGg7CiAgIEdMdWludCBN YXhDb252b2x1dGlvbkhlaWdodDsKICAgR0x1aW50IE1heENsaXBQbGFuZXM7CiAgIEdMdWludCBN YXhMaWdodHM7Cn07CgoKCgoKc3RydWN0IGV4dGVuc2lvbjsKc3RydWN0IGdsX2V4dGVuc2lvbnMg ewogICBjaGFyICpleHRfc3RyaW5nOwogICBzdHJ1Y3QgZXh0ZW5zaW9uICpleHRfbGlzdDsKCgoK ICAgR0xib29sZWFuIEFSQl9kZXB0aF90ZXh0dXJlOwogICBHTGJvb2xlYW4gQVJCX2ltYWdpbmc7 CiAgIEdMYm9vbGVhbiBBUkJfbXVsdGlzYW1wbGU7CiAgIEdMYm9vbGVhbiBBUkJfbXVsdGl0ZXh0 dXJlOwogICBHTGJvb2xlYW4gQVJCX3NoYWRvdzsKICAgR0xib29sZWFuIEFSQl90ZXh0dXJlX2Jv cmRlcl9jbGFtcDsKICAgR0xib29sZWFuIEFSQl90ZXh0dXJlX2NvbXByZXNzaW9uOwogICBHTGJv b2xlYW4gQVJCX3RleHR1cmVfY3ViZV9tYXA7CiAgIEdMYm9vbGVhbiBBUkJfdGV4dHVyZV9lbnZf Y29tYmluZTsKICAgR0xib29sZWFuIEFSQl90ZXh0dXJlX2Vudl9jcm9zc2JhcjsKICAgR0xib29s ZWFuIEFSQl90ZXh0dXJlX2Vudl9kb3QzOwogICBHTGJvb2xlYW4gQVJCX3RleHR1cmVfbWlycm9y ZWRfcmVwZWF0OwogICBHTGJvb2xlYW4gQVJCX3dpbmRvd19wb3M7CiAgIEdMYm9vbGVhbiBBVElf dGV4dHVyZV9taXJyb3Jfb25jZTsKICAgR0xib29sZWFuIEVYVF9ibGVuZF9jb2xvcjsKICAgR0xi b29sZWFuIEVYVF9ibGVuZF9mdW5jX3NlcGFyYXRlOwogICBHTGJvb2xlYW4gRVhUX2JsZW5kX2xv Z2ljX29wOwogICBHTGJvb2xlYW4gRVhUX2JsZW5kX21pbm1heDsKICAgR0xib29sZWFuIEVYVF9i bGVuZF9zdWJ0cmFjdDsKICAgR0xib29sZWFuIEVYVF9jbGlwX3ZvbHVtZV9oaW50OwogICBHTGJv b2xlYW4gRVhUX2NvbnZvbHV0aW9uOwogICBHTGJvb2xlYW4gRVhUX2NvbXBpbGVkX3ZlcnRleF9h cnJheTsKICAgR0xib29sZWFuIEVYVF9mb2dfY29vcmQ7CiAgIEdMYm9vbGVhbiBFWFRfaGlzdG9n cmFtOwogICBHTGJvb2xlYW4gRVhUX211bHRpX2RyYXdfYXJyYXlzOwogICBHTGJvb2xlYW4gRVhU X3BhY2tlZF9waXhlbHM7CiAgIEdMYm9vbGVhbiBFWFRfcGFsZXR0ZWRfdGV4dHVyZTsKICAgR0xi b29sZWFuIEVYVF9wb2ludF9wYXJhbWV0ZXJzOwogICBHTGJvb2xlYW4gRVhUX3BvbHlnb25fb2Zm c2V0OwogICBHTGJvb2xlYW4gRVhUX3Jlc2NhbGVfbm9ybWFsOwogICBHTGJvb2xlYW4gRVhUX3No YWRvd19mdW5jczsKICAgR0xib29sZWFuIEVYVF9zZWNvbmRhcnlfY29sb3I7CiAgIEdMYm9vbGVh biBFWFRfc2hhcmVkX3RleHR1cmVfcGFsZXR0ZTsKICAgR0xib29sZWFuIEVYVF9zdGVuY2lsX3dy YXA7CiAgIEdMYm9vbGVhbiBFWFRfc3RlbmNpbF90d29fc2lkZTsKICAgR0xib29sZWFuIEVYVF90 ZXh0dXJlM0Q7CiAgIEdMYm9vbGVhbiBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjOwogICBH TGJvb2xlYW4gRVhUX3RleHR1cmVfZW52X2FkZDsKICAgR0xib29sZWFuIEVYVF90ZXh0dXJlX2Vu dl9jb21iaW5lOwogICBHTGJvb2xlYW4gRVhUX3RleHR1cmVfZW52X2RvdDM7CiAgIEdMYm9vbGVh biBFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWM7CiAgIEdMYm9vbGVhbiBFWFRfdGV4dHVy ZV9vYmplY3Q7CiAgIEdMYm9vbGVhbiBFWFRfdGV4dHVyZV9sb2RfYmlhczsKICAgR0xib29sZWFu IEVYVF92ZXJ0ZXhfYXJyYXlfc2V0OwogICBHTGJvb2xlYW4gSFBfb2NjbHVzaW9uX3Rlc3Q7CiAg IEdMYm9vbGVhbiBJQk1fcmFzdGVycG9zX2NsaXA7CiAgIEdMYm9vbGVhbiBJTkdSX2JsZW5kX2Z1 bmNfc2VwYXJhdGU7CiAgIEdMYm9vbGVhbiBNRVNBX3BhY2tfaW52ZXJ0OwogICBHTGJvb2xlYW4g TUVTQV93aW5kb3dfcG9zOwogICBHTGJvb2xlYW4gTUVTQV9yZXNpemVfYnVmZmVyczsKICAgR0xi b29sZWFuIE1FU0FfeWNiY3JfdGV4dHVyZTsKICAgR0xib29sZWFuIE5WX2JsZW5kX3NxdWFyZTsK ICAgR0xib29sZWFuIE5WX3BvaW50X3Nwcml0ZTsKICAgR0xib29sZWFuIE5WX3RleHR1cmVfcmVj dGFuZ2xlOwogICBHTGJvb2xlYW4gTlZfdGV4Z2VuX3JlZmxlY3Rpb247CiAgIEdMYm9vbGVhbiBO Vl92ZXJ0ZXhfcHJvZ3JhbTsKICAgR0xib29sZWFuIE5WX3ZlcnRleF9wcm9ncmFtMV8xOwogICBH TGJvb2xlYW4gU0dJX2NvbG9yX21hdHJpeDsKICAgR0xib29sZWFuIFNHSV9jb2xvcl90YWJsZTsK ICAgR0xib29sZWFuIFNHSVNfZ2VuZXJhdGVfbWlwbWFwOwogICBHTGJvb2xlYW4gU0dJU19waXhl bF90ZXh0dXJlOwogICBHTGJvb2xlYW4gU0dJU190ZXh0dXJlX2VkZ2VfY2xhbXA7CiAgIEdMYm9v bGVhbiBTR0lYX2RlcHRoX3RleHR1cmU7CiAgIEdMYm9vbGVhbiBTR0lYX3BpeGVsX3RleHR1cmU7 CiAgIEdMYm9vbGVhbiBTR0lYX3NoYWRvdzsKICAgR0xib29sZWFuIFNHSVhfc2hhZG93X2FtYmll bnQ7CiAgIEdMYm9vbGVhbiBUREZYX3RleHR1cmVfY29tcHJlc3Npb25fRlhUMTsKICAgR0xib29s ZWFuIEFQUExFX2NsaWVudF9zdG9yYWdlOwp9OwoKCgoKCnN0cnVjdCBtYXRyaXhfc3RhY2sKewog ICBHTG1hdHJpeCAqVG9wOwogICBHTG1hdHJpeCAqU3RhY2s7CiAgIEdMdWludCBEZXB0aDsKICAg R0x1aW50IE1heERlcHRoOwogICBHTHVpbnQgRGlydHlGbGFnOwp9OwojIDE1OTQgIm10eXBlcy5o Igp1bmlvbiBub2RlOwp0eXBlZGVmIHVuaW9uIG5vZGUgTm9kZTsKCgoKIyAxICJkZC5oIiAxCiMg MzQgImRkLmgiCnN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYjsKIyA1MyAiZGQuaCIKc3RydWN0 IGRkX2Z1bmN0aW9uX3RhYmxlIHsKCiAgIGNvbnN0IEdMdWJ5dGUgKiAoKkdldFN0cmluZykoIEdM Y29udGV4dCAqY3R4LCBHTGVudW0gbmFtZSApOwoKCgoKCiAgIHZvaWQgKCpVcGRhdGVTdGF0ZSko IEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbmV3X3N0YXRlICk7CgoKCgoKCiAgIHZvaWQgKCpDbGVh cikoIEdMY29udGV4dCAqY3R4LCBHTGJpdGZpZWxkIG1hc2ssIEdMYm9vbGVhbiBhbGwsCiAgICAg ICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQg KTsKIyA4MCAiZGQuaCIKICAgdm9pZCAoKkRyYXdCdWZmZXIpKCBHTGNvbnRleHQgKmN0eCwgR0xl bnVtIGJ1ZmZlciApOwoKCgoKCgoKICAgdm9pZCAoKlJlYWRCdWZmZXIpKCBHTGNvbnRleHQgKmN0 eCwgR0xlbnVtIGJ1ZmZlciApOwoKCgoKICAgdm9pZCAoKkdldEJ1ZmZlclNpemUpKCBHTGZyYW1l YnVmZmVyICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICp3aWR0aCwg R0x1aW50ICpoZWlnaHQgKTsKCgoKCgogICB2b2lkICgqUmVzaXplQnVmZmVycykoIEdMZnJhbWVi dWZmZXIgKmJ1ZmZlciApOwoKCgoKCgogICB2b2lkICgqRmluaXNoKSggR0xjb250ZXh0ICpjdHgg KTsKCgoKCiAgIHZvaWQgKCpGbHVzaCkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgogICB2b2lkICgq RXJyb3IpKCBHTGNvbnRleHQgKmN0eCApOwojIDEyNyAiZGQuaCIKICAgdm9pZCAoKkFjY3VtKSgg R0xjb250ZXh0ICpjdHgsIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSwKICAgICAgICAgICAgICAg ICAgR0xpbnQgeHBvcywgR0xpbnQgeXBvcywgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCApOwoj IDEzNyAiZGQuaCIKICAgdm9pZCAoKkRyYXdQaXhlbHMpKCBHTGNvbnRleHQgKmN0eCwKICAgICAg ICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRy aWIgKnVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyAp OwoKCgoKICAgdm9pZCAoKlJlYWRQaXhlbHMpKCBHTGNvbnRleHQgKmN0eCwKICAgICAgICAgICAg ICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnVu cGFjaywKICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKmRlc3QgKTsKCgoKICAgdm9pZCAo KkNvcHlQaXhlbHMpKCBHTGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMaW50IHNyY3gsIEdMaW50IHNyY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IGRzdHgsIEdMaW50IGRzdHksIEdMZW51bSB0eXBlICk7CgoKCgogICB2b2lkICgqQml0bWFw KSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBH THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqdW5wYWNrLAogICAgICAgICAgICAgICAgICAgY29u c3QgR0x1Ynl0ZSAqYml0bWFwICk7CgoKCgoKCiAgIGNvbnN0IHN0cnVjdCBnbF90ZXh0dXJlX2Zv cm1hdCAqCiAgICgqQ2hvb3NlVGV4dHVyZUZvcm1hdCkoIEdMY29udGV4dCAqY3R4LCBHTGludCBp bnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0Zvcm1h dCwgR0xlbnVtIHNyY1R5cGUgKTsKCgoKCgogICB2b2lkICgqVGV4SW1hZ2UxRCkoIEdMY29udGV4 dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg ICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICBHTGludCB3aWR0 aCwgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdM ZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcsCiAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CiAgIHZvaWQgKCpU ZXhJbWFnZTJEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAog ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAg ICAgICAgICAgIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQsIEdMaW50IGJvcmRlciwKICAgICAg ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3Rv cmVfYXR0cmliICpwYWNraW5nLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0 dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0 dXJlX2ltYWdlICp0ZXhJbWFnZSApOwogICB2b2lkICgqVGV4SW1hZ2UzRCkoIEdMY29udGV4dCAq Y3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICBH TGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICBHTGludCB3aWR0aCwg R0xpbnQgaGVpZ2h0LCBHTGludCBkZXB0aCwgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAg ICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscywK ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIg KnBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0 ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2Ug KnRleEltYWdlICk7CiMgMjEzICJkZC5oIgogICB2b2lkICgqVGV4U3ViSW1hZ2UxRCkoIEdMY29u dGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1hZ2UgKTsKICAgdm9pZCAo KlRleFN1YkltYWdlMkQpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tp bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0 ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2Ug KnRleEltYWdlICk7CiAgIHZvaWQgKCpUZXhTdWJJbWFnZTNEKSggR0xjb250ZXh0ICpjdHgsIEdM ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGRlcHRoLAogICAg ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzLAogICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwK ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1h Z2UgKTsKIyAyNDcgImRkLmgiCiAgIHZvaWQgKCpDb3B5VGV4SW1hZ2UxRCkoIEdMY29udGV4dCAq Y3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIgKTsKICAgdm9pZCAoKkNv cHlUZXhJbWFnZTJEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMaW50 IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIgKTsKCgoKCiAgIHZvaWQgKCpDb3B5VGV4U3ViSW1h Z2UxRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwogICB2b2lkICgq Q29weVRleFN1YkltYWdlMkQpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQg bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50 IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0ICk7CiAgIHZvaWQgKCpDb3B5VGV4U3ViSW1hZ2UzRCkoIEdMY29udGV4dCAqY3R4LCBHTGVu dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQgKTsKCgoKCiAgIEdMYm9vbGVhbiAo KlRlc3RQcm94eVRleEltYWdlKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbEZv cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdM ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgs IEdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRl cHRoLCBHTGludCBib3JkZXIpOwojIDI4NiAiZGQuaCIKICAgdm9pZCAoKkNvbXByZXNzZWRUZXhJ bWFnZTFEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg R0x2b2lkICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xf dGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CiAgIHZvaWQgKCpDb21wcmVzc2Vk VGV4SW1hZ2UyRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0LCBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6 ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1hZ2UgKTsK ICAgdm9pZCAoKkNvbXByZXNzZWRUZXhJbWFnZTNEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0 YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLCBHTGlu dCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlICp0 ZXhJbWFnZSApOwojIDMxNyAiZGQuaCIKICAgdm9pZCAoKkNvbXByZXNzZWRUZXhTdWJJbWFnZTFE KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xzaXplaSB3aWR0aCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQg KmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlKTsKICAgdm9pZCAoKkNvbXByZXNzZWRUZXhT dWJJbWFnZTJEKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBH TGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6 ZSwgY29uc3QgR0x2b2lkICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdlICp0ZXhJbWFnZSk7CiAgIHZvaWQg KCpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQs IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQgaGVpZ2h0LCBHTGludCBkZXB0aCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZv aWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3Rl eHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlKTsKIyAzNTIgImRkLmgiCiAgIHZvaWQg KCpCaW5kVGV4dHVyZSkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRPYmogKTsKCgoKICAgdm9p ZCAoKkNyZWF0ZVRleHR1cmUpKCBHTGNvbnRleHQgKmN0eCwgc3RydWN0IGdsX3RleHR1cmVfb2Jq ZWN0ICp0T2JqICk7CgoKCiAgIHZvaWQgKCpEZWxldGVUZXh0dXJlKSggR0xjb250ZXh0ICpjdHgs IHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdE9iaiApOwoKCgoKICAgR0xib29sZWFuICgqSXNU ZXh0dXJlUmVzaWRlbnQpKCBHTGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnQgKTsKCgoKICAgdm9pZCAoKlBy aW9yaXRpemVUZXh0dXJlKSggR0xjb250ZXh0ICpjdHgsIHN0cnVjdCBnbF90ZXh0dXJlX29iamVj dCAqdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgcHJpb3JpdHkgKTsK CgoKICAgdm9pZCAoKkFjdGl2ZVRleHR1cmUpKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IHRleFVu aXROdW1iZXIgKTsKCgoKICAgdm9pZCAoKlVwZGF0ZVRleHR1cmVQYWxldHRlKSggR0xjb250ZXh0 ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl X29iamVjdCAqdE9iaiApOwojIDM5MCAiZGQuaCIKICAgdm9pZCAoKkNvcHlDb2xvclRhYmxlKSgg R0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwoKICAgdm9pZCAoKkNvcHlDb2xvclN1YlRhYmxl KSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0 YXJnZXQsIEdMc2l6ZWkgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsKCiAgIHZvaWQgKCpDb3B5Q29udm9sdXRpb25G aWx0ZXIxRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsK CiAgIHZvaWQgKCpDb3B5Q29udm9sdXRpb25GaWx0ZXIyRCkoIEdMY29udGV4dCAqY3R4LCBHTGVu dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50 ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs IEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk dGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CiMgNDE2ICJkZC5oIgogICB2b2lkICgqQWxwaGFGdW5jKShH TGNvbnRleHQgKmN0eCwgR0xlbnVtIGZ1bmMsIEdMZmxvYXQgcmVmKTsKICAgdm9pZCAoKkJsZW5k Q29sb3IpKEdMY29udGV4dCAqY3R4LCBjb25zdCBHTGZsb2F0IGNvbG9yWzRdKTsKICAgdm9pZCAo KkJsZW5kRXF1YXRpb24pKEdMY29udGV4dCAqY3R4LCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpC bGVuZEZ1bmMpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3Ip OwogICB2b2lkICgqQmxlbmRGdW5jU2VwYXJhdGUpKEdMY29udGV4dCAqY3R4LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZmFjdG9yUkdCLCBHTGVudW0gZGZhY3RvclJHQiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2ZhY3RvckEsIEdMZW51bSBkZmFj dG9yQSk7CiAgIHZvaWQgKCpDbGVhckNvbG9yKShHTGNvbnRleHQgKmN0eCwgY29uc3QgR0xmbG9h dCBjb2xvcls0XSk7CiAgIHZvaWQgKCpDbGVhckRlcHRoKShHTGNvbnRleHQgKmN0eCwgR0xjbGFt cGQgZCk7CiAgIHZvaWQgKCpDbGVhckluZGV4KShHTGNvbnRleHQgKmN0eCwgR0x1aW50IGluZGV4 KTsKICAgdm9pZCAoKkNsZWFyU3RlbmNpbCkoR0xjb250ZXh0ICpjdHgsIEdMaW50IHMpOwogICB2 b2lkICgqQ2xpcFBsYW5lKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTGZs b2F0ICplcXVhdGlvbiApOwogICB2b2lkICgqQ29sb3JNYXNrKShHTGNvbnRleHQgKmN0eCwgR0xi b29sZWFuIHJtYXNrLCBHTGJvb2xlYW4gZ21hc2ssCiAgICAgICAgICAgICAgICAgICAgIEdMYm9v bGVhbiBibWFzaywgR0xib29sZWFuIGFtYXNrICk7CiAgIHZvaWQgKCpDb2xvck1hdGVyaWFsKShH TGNvbnRleHQgKmN0eCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkN1bGxG YWNlKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIG1vZGUpOwogICB2b2lkICgqRnJvbnRGYWNlKShH TGNvbnRleHQgKmN0eCwgR0xlbnVtIG1vZGUpOwogICB2b2lkICgqRGVwdGhGdW5jKShHTGNvbnRl eHQgKmN0eCwgR0xlbnVtIGZ1bmMpOwogICB2b2lkICgqRGVwdGhNYXNrKShHTGNvbnRleHQgKmN0 eCwgR0xib29sZWFuIGZsYWcpOwogICB2b2lkICgqRGVwdGhSYW5nZSkoR0xjb250ZXh0ICpjdHgs IEdMY2xhbXBkIG5lYXJ2YWwsIEdMY2xhbXBkIGZhcnZhbCk7CiAgIHZvaWQgKCpFbmFibGUpKEdM Y29udGV4dCogY3R4LCBHTGVudW0gY2FwLCBHTGJvb2xlYW4gc3RhdGUpOwogICB2b2lkICgqRm9n ZnYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7 CiAgIHZvaWQgKCpIaW50KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1v ZGUpOwogICB2b2lkICgqSW5kZXhNYXNrKShHTGNvbnRleHQgKmN0eCwgR0x1aW50IG1hc2spOwog ICB2b2lkICgqTGlnaHRmdikoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBsaWdodCwKICAgICAgICAg ICAgICAgICAgIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CiAgIHZvaWQg KCpMaWdodE1vZGVsZnYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv YXQgKnBhcmFtcyk7CiAgIHZvaWQgKCpMaW5lU3RpcHBsZSkoR0xjb250ZXh0ICpjdHgsIEdMaW50 IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybiApOwogICB2b2lkICgqTGluZVdpZHRoKShHTGNvbnRl eHQgKmN0eCwgR0xmbG9hdCB3aWR0aCk7CiAgIHZvaWQgKCpMb2dpY09wY29kZSkoR0xjb250ZXh0 ICpjdHgsIEdMZW51bSBvcGNvZGUpOwogICB2b2lkICgqUG9pbnRQYXJhbWV0ZXJmdikoR0xjb250 ZXh0ICpjdHgsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEdMZmxvYXQgKnBhcmFtcyk7CiAgIHZvaWQgKCpQb2ludFNpemUpKEdMY29udGV4dCAqY3R4LCBH TGZsb2F0IHNpemUpOwogICB2b2lkICgqUG9seWdvbk1vZGUpKEdMY29udGV4dCAqY3R4LCBHTGVu dW0gZmFjZSwgR0xlbnVtIG1vZGUpOwogICB2b2lkICgqUG9seWdvbk9mZnNldCkoR0xjb250ZXh0 ICpjdHgsIEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKICAgdm9pZCAoKlBvbHlnb25T dGlwcGxlKShHTGNvbnRleHQgKmN0eCwgY29uc3QgR0x1Ynl0ZSAqbWFzayApOwogICB2b2lkICgq UmVuZGVyTW9kZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlICk7CiAgIHZvaWQgKCpTY2lz c29yKShHTGNvbnRleHQgKmN0eCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3LCBHTHNpemVp IGgpOwogICB2b2lkICgqU2hhZGVNb2RlbCkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlKTsK ICAgdm9pZCAoKlN0ZW5jaWxGdW5jKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIGZ1bmMsIEdMaW50 IHJlZiwgR0x1aW50IG1hc2spOwogICB2b2lkICgqU3RlbmNpbE1hc2spKEdMY29udGV4dCAqY3R4 LCBHTHVpbnQgbWFzayk7CiAgIHZvaWQgKCpTdGVuY2lsT3ApKEdMY29udGV4dCAqY3R4LCBHTGVu dW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwogICB2b2lkICgqQWN0aXZlU3Rl bmNpbEZhY2UpKEdMY29udGV4dCAqY3R4LCBHTHVpbnQgZmFjZSk7CiAgIHZvaWQgKCpUZXhHZW4p KEdMY29udGV4dCAqY3R4LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg ICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKICAgdm9pZCAoKlRleEVudikoR0xjb250ZXh0 ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgY29u c3QgR0xmbG9hdCAqcGFyYW0pOwogICB2b2lkICgqVGV4UGFyYW1ldGVyKShHTGNvbnRleHQgKmN0 eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwg Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKICAgdm9pZCAoKlRleHR1cmVNYXRyaXgpKEdMY29udGV4 dCAqY3R4LCBHTHVpbnQgdW5pdCwgY29uc3QgR0xtYXRyaXggKm1hdCk7CiAgIHZvaWQgKCpWaWV3 cG9ydCkoR0xjb250ZXh0ICpjdHgsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgdywgR0xzaXpl aSBoKTsKCgoKCgoKICAgdm9pZCAoKlZlcnRleFBvaW50ZXIpKEdMY29udGV4dCAqY3R4LCBHTGlu dCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry aWRlLCBjb25zdCBHTHZvaWQgKnB0cik7CiAgIHZvaWQgKCpOb3JtYWxQb2ludGVyKShHTGNvbnRl eHQgKmN0eCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0 cmlkZSwgY29uc3QgR0x2b2lkICpwdHIpOwogICB2b2lkICgqQ29sb3JQb2ludGVyKShHTGNvbnRl eHQgKmN0eCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg IEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0cik7CiAgIHZvaWQgKCpGb2dDb29yZFBv aW50ZXIpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcHRyKTsKICAgdm9pZCAoKkluZGV4 UG9pbnRlcikoR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIpOwogICB2b2lkICgqU2Vjb25k YXJ5Q29sb3JQb2ludGVyKShHTGNvbnRleHQgKmN0eCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH THZvaWQgKnB0cik7CiAgIHZvaWQgKCpUZXhDb29yZFBvaW50ZXIpKEdMY29udGV4dCAqY3R4LCBH TGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl aSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcHRyKTsKICAgdm9pZCAoKkVkZ2VGbGFnUG9pbnRlciko R0xjb250ZXh0ICpjdHgsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0cik7CiAgIHZv aWQgKCpWZXJ0ZXhBdHRyaWJQb2ludGVyKShHTGNvbnRleHQgKmN0eCwgR0x1aW50IGluZGV4LCBH TGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIEdM c2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0cik7CgoKCgoKCiAgIEdMYm9vbGVhbiAoKkdl dEJvb2xlYW52KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnJlc3Vs dCk7CiAgIEdMYm9vbGVhbiAoKkdldERvdWJsZXYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5h bWUsIEdMZG91YmxlICpyZXN1bHQpOwogICBHTGJvb2xlYW4gKCpHZXRGbG9hdHYpKEdMY29udGV4 dCAqY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnJlc3VsdCk7CiAgIEdMYm9vbGVhbiAoKkdl dEludGVnZXJ2KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcmVzdWx0KTsK ICAgR0xib29sZWFuICgqR2V0UG9pbnRlcnYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUs IEdMdm9pZCAqKnJlc3VsdCk7CgoKCgoKICAgR0x1aW50IE5lZWRWYWxpZGF0ZTsKCgoKCiAgIHZv aWQgKCpWYWxpZGF0ZVRubE1vZHVsZSkoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbmV3X3N0YXRl ICk7CiMgNTI4ICJkZC5oIgogICBHTHVpbnQgQ3VycmVudEV4ZWNQcmltaXRpdmU7CgoKCgogICBH THVpbnQgQ3VycmVudFNhdmVQcmltaXRpdmU7CgoKCgoKCgogICBHTHVpbnQgTmVlZEZsdXNoOwoK CgoKCgoKICAgdm9pZCAoKkZsdXNoVmVydGljZXMpKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IGZs YWdzICk7CiMgNTYwICJkZC5oIgogICB2b2lkICgqTGlnaHRpbmdTcGFjZUNoYW5nZSkoIEdMY29u dGV4dCAqY3R4ICk7CgoKCgogICB2b2lkICgqTmV3TGlzdCkoIEdMY29udGV4dCAqY3R4LCBHTHVp bnQgbGlzdCwgR0xlbnVtIG1vZGUgKTsKICAgdm9pZCAoKkVuZExpc3QpKCBHTGNvbnRleHQgKmN0 eCApOwoKCgoKCiAgIHZvaWQgKCpCZWdpbkNhbGxMaXN0KSggR0xjb250ZXh0ICpjdHgsIEdMdWlu dCBsaXN0ICk7CiAgIHZvaWQgKCpFbmRDYWxsTGlzdCkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgog ICB2b2lkICgqTWFrZUN1cnJlbnQpKCBHTGNvbnRleHQgKmN0eCwgR0xmcmFtZWJ1ZmZlciAqZHJh d0J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgR0xmcmFtZWJ1ZmZlciAqcmVhZEJ1ZmZl ciApOwoKCgoKICAgdm9pZCAoKkxvY2tBcnJheXNFWFQpKCBHTGNvbnRleHQgKmN0eCwgR0xpbnQg Zmlyc3QsIEdMc2l6ZWkgY291bnQgKTsKICAgdm9pZCAoKlVubG9ja0FycmF5c0VYVCkoIEdMY29u dGV4dCAqY3R4ICk7CgoKfTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICB2b2lkICgqQXJyYXlF bGVtZW50KSggR0xpbnQgKTsKICAgdm9pZCAoKkNvbG9yM2YpKCBHTGZsb2F0LCBHTGZsb2F0LCBH TGZsb2F0ICk7CiAgIHZvaWQgKCpDb2xvcjNmdikoIGNvbnN0IEdMZmxvYXQgKiApOwogICB2b2lk ICgqQ29sb3IzdWIpKCBHTHVieXRlLCBHTHVieXRlLCBHTHVieXRlICk7CiAgIHZvaWQgKCpDb2xv cjN1YnYpKCBjb25zdCBHTHVieXRlICogKTsKICAgdm9pZCAoKkNvbG9yNGYpKCBHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0ICk7CiAgIHZvaWQgKCpDb2xvcjRmdikoIGNvbnN0IEdM ZmxvYXQgKiApOwogICB2b2lkICgqQ29sb3I0dWIpKCBHTHVieXRlLCBHTHVieXRlLCBHTHVieXRl LCBHTHVieXRlICk7CiAgIHZvaWQgKCpDb2xvcjR1YnYpKCBjb25zdCBHTHVieXRlICogKTsKICAg dm9pZCAoKkVkZ2VGbGFnKSggR0xib29sZWFuICk7CiAgIHZvaWQgKCpFZGdlRmxhZ3YpKCBjb25z dCBHTGJvb2xlYW4gKiApOwogICB2b2lkICgqRXZhbENvb3JkMWYpKCBHTGZsb2F0ICk7CiAgIHZv aWQgKCpFdmFsQ29vcmQxZnYpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAoKkV2YWxDb29y ZDJmKSggR0xmbG9hdCwgR0xmbG9hdCApOwogICB2b2lkICgqRXZhbENvb3JkMmZ2KSggY29uc3Qg R0xmbG9hdCAqICk7CiAgIHZvaWQgKCpFdmFsUG9pbnQxKSggR0xpbnQgKTsKICAgdm9pZCAoKkV2 YWxQb2ludDIpKCBHTGludCwgR0xpbnQgKTsKICAgdm9pZCAoKkZvZ0Nvb3JkZkVYVCkoIEdMZmxv YXQgKTsKICAgdm9pZCAoKkZvZ0Nvb3JkZnZFWFQpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9p ZCAoKkluZGV4aSkoIEdMaW50ICk7CiAgIHZvaWQgKCpJbmRleGl2KSggY29uc3QgR0xpbnQgKiAp OwogICB2b2lkICgqTWF0ZXJpYWxmdikoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0 IEdMZmxvYXQgKiApOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDFmQVJCKSggR0xlbnVtLCBHTGZs b2F0ICk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWZ2QVJCKSggR0xlbnVtLCBjb25zdCBHTGZs b2F0ICogKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQyZkFSQikoIEdMZW51bSwgR0xmbG9hdCwg R0xmbG9hdCApOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJmdkFSQikoIEdMZW51bSwgY29uc3Qg R0xmbG9hdCAqICk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkM2ZBUkIpKCBHTGVudW0sIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQgKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQzZnZBUkIpKCBH TGVudW0sIGNvbnN0IEdMZmxvYXQgKiApOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDRmQVJCKSgg R0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0ICk7CiAgIHZvaWQgKCpN dWx0aVRleENvb3JkNGZ2QVJCKSggR0xlbnVtLCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAo Kk5vcm1hbDNmKSggR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCApOwogICB2b2lkICgqTm9ybWFs M2Z2KSggY29uc3QgR0xmbG9hdCAqICk7CiAgIHZvaWQgKCpTZWNvbmRhcnlDb2xvcjNmRVhUKSgg R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCApOwogICB2b2lkICgqU2Vjb25kYXJ5Q29sb3IzZnZF WFQpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAoKlNlY29uZGFyeUNvbG9yM3ViRVhUKSgg R0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSApOwogICB2b2lkICgqU2Vjb25kYXJ5Q29sb3IzdWJ2 RVhUKSggY29uc3QgR0x1Ynl0ZSAqICk7CiAgIHZvaWQgKCpUZXhDb29yZDFmKSggR0xmbG9hdCAp OwogICB2b2lkICgqVGV4Q29vcmQxZnYpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAoKlRl eENvb3JkMmYpKCBHTGZsb2F0LCBHTGZsb2F0ICk7CiAgIHZvaWQgKCpUZXhDb29yZDJmdikoIGNv bnN0IEdMZmxvYXQgKiApOwogICB2b2lkICgqVGV4Q29vcmQzZikoIEdMZmxvYXQsIEdMZmxvYXQs IEdMZmxvYXQgKTsKICAgdm9pZCAoKlRleENvb3JkM2Z2KSggY29uc3QgR0xmbG9hdCAqICk7CiAg IHZvaWQgKCpUZXhDb29yZDRmKSggR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCAp OwogICB2b2lkICgqVGV4Q29vcmQ0ZnYpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAoKlZl cnRleDJmKSggR0xmbG9hdCwgR0xmbG9hdCApOwogICB2b2lkICgqVmVydGV4MmZ2KSggY29uc3Qg R0xmbG9hdCAqICk7CiAgIHZvaWQgKCpWZXJ0ZXgzZikoIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv YXQgKTsKICAgdm9pZCAoKlZlcnRleDNmdikoIGNvbnN0IEdMZmxvYXQgKiApOwogICB2b2lkICgq VmVydGV4NGYpKCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0ICk7CiAgIHZvaWQg KCpWZXJ0ZXg0ZnYpKCBjb25zdCBHTGZsb2F0ICogKTsKICAgdm9pZCAoKkNhbGxMaXN0KSggR0x1 aW50ICk7CiAgIHZvaWQgKCpCZWdpbikoIEdMZW51bSApOwogICB2b2lkICgqRW5kKSggdm9pZCAp OwogICB2b2lkICgqVmVydGV4QXR0cmliNGZOVikoIEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBH TGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3ICk7CiAgIHZvaWQgKCpWZXJ0ZXhBdHRyaWI0 ZnZOVikoIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdiApOwojIDY2OCAiZGQuaCIKICAg dm9pZCAoKlJlY3RmKSggR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCApOwoKCgog ICB2b2lkICgqRHJhd0FycmF5cykoIEdMZW51bSBtb2RlLCBHTGludCBzdGFydCwgR0xzaXplaSBj b3VudCApOwogICB2b2lkICgqRHJhd0VsZW1lbnRzKSggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291 bnQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp bmRpY2VzICk7CiAgIHZvaWQgKCpEcmF3UmFuZ2VFbGVtZW50cykoIEdMZW51bSBtb2RlLCBHTHVp bnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsIEdMc2l6 ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25z dCBHTHZvaWQgKmluZGljZXMgKTsKCgoKCgogICB2b2lkICgqRXZhbE1lc2gxKSggR0xlbnVtIG1v ZGUsIEdMaW50IGkxLCBHTGludCBpMiApOwogICB2b2lkICgqRXZhbE1lc2gyKSggR0xlbnVtIG1v ZGUsIEdMaW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEsIEdMaW50IGoyICk7CiMgNjkzICJkZC5o IgogICBHTGJvb2xlYW4gcHJlZmVyX2Zsb2F0X2NvbG9yczsKCgoKfSBHTHZlcnRleGZvcm1hdDsK IyAxNjAwICJtdHlwZXMuaCIgMgoKCgoKCgoKc3RydWN0IGdsX3RubF9tb2R1bGUgewoKCiAgIEdM dmVydGV4Zm9ybWF0ICpDdXJyZW50OwoKCgoKICAgdm9pZCAqU3dhcHBlZFsoc2l6ZW9mKEdMdmVy dGV4Zm9ybWF0KSAvIHNpemVvZih2b2lkICopKV1bMl07CiAgIEdMdWludCBTd2FwQ291bnQ7Cn07 CiMgMTYyNiAibXR5cGVzLmgiCnN0cnVjdCBfX0dMY29udGV4dFJlYyB7CgoKCgoKICAgX19HTGlt cG9ydHMgaW1wb3J0czsKICAgX19HTGV4cG9ydHMgZXhwb3J0czsKCgogICBzdHJ1Y3QgZ2xfc2hh cmVkX3N0YXRlICpTaGFyZWQ7CgoKICAgc3RydWN0IF9nbGFwaV90YWJsZSAqU2F2ZTsKICAgc3Ry dWN0IF9nbGFwaV90YWJsZSAqRXhlYzsKICAgc3RydWN0IF9nbGFwaV90YWJsZSAqQ3VycmVudERp c3BhdGNoOwoKICAgR0xib29sZWFuIEV4ZWNQcmVmZXJzRmxvYXQ7CiAgIEdMYm9vbGVhbiBTYXZl UHJlZmVyc0Zsb2F0OwoKICAgR0x2aXN1YWwgVmlzdWFsOwogICBHTGZyYW1lYnVmZmVyICpEcmF3 QnVmZmVyOwogICBHTGZyYW1lYnVmZmVyICpSZWFkQnVmZmVyOwoKCgoKICAgc3RydWN0IGRkX2Z1 bmN0aW9uX3RhYmxlIERyaXZlcjsKCiAgIHZvaWQgKkRyaXZlckN0eDsKICAgdm9pZCAqRHJpdmVy TWdyQ3R4OwoKCiAgIHN0cnVjdCBnbF9jb25zdGFudHMgQ29uc3Q7CgoKICAgc3RydWN0IG1hdHJp eF9zdGFjayBNb2RlbHZpZXdNYXRyaXhTdGFjazsKICAgc3RydWN0IG1hdHJpeF9zdGFjayBQcm9q ZWN0aW9uTWF0cml4U3RhY2s7CiAgIHN0cnVjdCBtYXRyaXhfc3RhY2sgQ29sb3JNYXRyaXhTdGFj azsKICAgc3RydWN0IG1hdHJpeF9zdGFjayBUZXh0dXJlTWF0cml4U3RhY2tbOF07CiAgIHN0cnVj dCBtYXRyaXhfc3RhY2sgUHJvZ3JhbU1hdHJpeFN0YWNrWzhdOwogICBzdHJ1Y3QgbWF0cml4X3N0 YWNrICpDdXJyZW50U3RhY2s7CgoKICAgR0xtYXRyaXggX01vZGVsUHJvamVjdE1hdHJpeDsKCgog ICBHTHVpbnQgQ2FsbERlcHRoOwogICBHTGJvb2xlYW4gRXhlY3V0ZUZsYWc7CiAgIEdMYm9vbGVh biBDb21waWxlRmxhZzsKICAgTm9kZSAqQ3VycmVudExpc3RQdHI7CiAgIEdMdWludCBDdXJyZW50 TGlzdE51bTsKICAgTm9kZSAqQ3VycmVudEJsb2NrOwogICBHTHVpbnQgQ3VycmVudFBvczsKCgog ICBzdHJ1Y3QgZ2xfZXh0ZW5zaW9ucyBFeHRlbnNpb25zOwoKCiAgIEdMdWludCBBdHRyaWJTdGFj a0RlcHRoOwogICBzdHJ1Y3QgZ2xfYXR0cmliX25vZGUgKkF0dHJpYlN0YWNrWzE2XTsKCgogICBz dHJ1Y3QgZ2xfYWNjdW1fYXR0cmliIEFjY3VtOwogICBzdHJ1Y3QgZ2xfY29sb3JidWZmZXJfYXR0 cmliIENvbG9yOwogICBzdHJ1Y3QgZ2xfY3VycmVudF9hdHRyaWIgQ3VycmVudDsKICAgc3RydWN0 IGdsX2RlcHRoYnVmZmVyX2F0dHJpYiBEZXB0aDsKICAgc3RydWN0IGdsX2V2YWxfYXR0cmliIEV2 YWw7CiAgIHN0cnVjdCBnbF9mb2dfYXR0cmliIEZvZzsKICAgc3RydWN0IGdsX2hpbnRfYXR0cmli IEhpbnQ7CiAgIHN0cnVjdCBnbF9saWdodF9hdHRyaWIgTGlnaHQ7CiAgIHN0cnVjdCBnbF9saW5l X2F0dHJpYiBMaW5lOwogICBzdHJ1Y3QgZ2xfbGlzdF9hdHRyaWIgTGlzdDsKICAgc3RydWN0IGds X211bHRpc2FtcGxlX2F0dHJpYiBNdWx0aXNhbXBsZTsKICAgc3RydWN0IGdsX3BpeGVsX2F0dHJp YiBQaXhlbDsKICAgc3RydWN0IGdsX3BvaW50X2F0dHJpYiBQb2ludDsKICAgc3RydWN0IGdsX3Bv bHlnb25fYXR0cmliIFBvbHlnb247CiAgIEdMdWludCBQb2x5Z29uU3RpcHBsZVszMl07CiAgIHN0 cnVjdCBnbF9zY2lzc29yX2F0dHJpYiBTY2lzc29yOwogICBzdHJ1Y3QgZ2xfc3RlbmNpbF9hdHRy aWIgU3RlbmNpbDsKICAgc3RydWN0IGdsX3RleHR1cmVfYXR0cmliIFRleHR1cmU7CiAgIHN0cnVj dCBnbF90cmFuc2Zvcm1fYXR0cmliIFRyYW5zZm9ybTsKICAgc3RydWN0IGdsX3ZpZXdwb3J0X2F0 dHJpYiBWaWV3cG9ydDsKCgogICBzdHJ1Y3QgZ2xfaGlzdG9ncmFtX2F0dHJpYiBIaXN0b2dyYW07 CiAgIHN0cnVjdCBnbF9taW5tYXhfYXR0cmliIE1pbk1heDsKICAgc3RydWN0IGdsX2NvbnZvbHV0 aW9uX2F0dHJpYiBDb252b2x1dGlvbjFEOwogICBzdHJ1Y3QgZ2xfY29udm9sdXRpb25fYXR0cmli IENvbnZvbHV0aW9uMkQ7CiAgIHN0cnVjdCBnbF9jb252b2x1dGlvbl9hdHRyaWIgU2VwYXJhYmxl MkQ7CgoKICAgR0x1aW50IENsaWVudEF0dHJpYlN0YWNrRGVwdGg7CiAgIHN0cnVjdCBnbF9hdHRy aWJfbm9kZSAqQ2xpZW50QXR0cmliU3RhY2tbMTZdOwoKCiAgIHN0cnVjdCBnbF9hcnJheV9hdHRy aWIgQXJyYXk7CiAgIHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiBQYWNrOwogICBzdHJ1Y3Qg Z2xfcGl4ZWxzdG9yZV9hdHRyaWIgVW5wYWNrOwoKICAgc3RydWN0IGdsX2V2YWx1YXRvcnMgRXZh bE1hcDsKICAgc3RydWN0IGdsX2ZlZWRiYWNrIEZlZWRiYWNrOwogICBzdHJ1Y3QgZ2xfc2VsZWN0 aW9uIFNlbGVjdDsKCiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBDb2xvclRhYmxlOwogICBzdHJ1 Y3QgZ2xfY29sb3JfdGFibGUgUHJveHlDb2xvclRhYmxlOwogICBzdHJ1Y3QgZ2xfY29sb3JfdGFi bGUgUG9zdENvbnZvbHV0aW9uQ29sb3JUYWJsZTsKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIFBy b3h5UG9zdENvbnZvbHV0aW9uQ29sb3JUYWJsZTsKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIFBv c3RDb2xvck1hdHJpeENvbG9yVGFibGU7CiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBQcm94eVBv c3RDb2xvck1hdHJpeENvbG9yVGFibGU7CgogICBzdHJ1Y3QgdmVydGV4X3Byb2dyYW1fc3RhdGUg VmVydGV4UHJvZ3JhbTsKCiAgIEdMZW51bSBFcnJvclZhbHVlOwogICBHTGVudW0gUmVuZGVyTW9k ZTsKICAgR0x1aW50IE5ld1N0YXRlOwoKCiAgIEdMdWludCBfVHJpYW5nbGVDYXBzOwogICBHTHVp bnQgX0ltYWdlVHJhbnNmZXJTdGF0ZTsKICAgR0xmbG9hdCBfRXllWkRpclszXTsKICAgR0xmbG9h dCBfTW9kZWxWaWV3SW52U2NhbGU7CiAgIEdMdWludCBfTmVlZEV5ZUNvb3JkczsKICAgR0x1aW50 IF9OZWVkTm9ybWFsczsKCiAgIHN0cnVjdCBnbF9zaGluZV90YWIgKl9TaGluZVRhYmxlWzJdOwog ICBzdHJ1Y3QgZ2xfc2hpbmVfdGFiICpfU2hpbmVUYWJMaXN0OwoKICAgc3RydWN0IGdsX2xpc3Rf ZXh0ZW5zaW9ucyBsaXN0ZXh0OwoKCiAgIEdMYm9vbGVhbiBPY2NsdXNpb25SZXN1bHQ7CiAgIEdM Ym9vbGVhbiBPY2NsdXNpb25SZXN1bHRTYXZlZDsKICAgR0x1aW50IF9GYWNpbmc7CgoKCgoKICAg R0x1aW50IERlcHRoTWF4OwogICBHTGZsb2F0IERlcHRoTWF4RjsKICAgR0xmbG9hdCBNUkQ7CgoK ICAgR0xib29sZWFuIENhdGNoU2lnbmFsczsKCgogICBHTGJvb2xlYW4gTm9SYXN0ZXI7CiAgIEdM Ym9vbGVhbiBGaXJzdFRpbWVDdXJyZW50OwoKCiAgIEdMYm9vbGVhbiBOb0RpdGhlcjsKCiAgIEdM Ym9vbGVhbiBSZW5kZXJpbmc7CgoKCgoKICAgdm9pZCAqVHJhY2VEaXNwYXRjaDsKICAgdm9pZCAq VHJhY2VDdHg7CgoKCiAgIHN0cnVjdCBnbF90bmxfbW9kdWxlIFRubE1vZHVsZTsKCgoKCiAgIHZv aWQgKnN3cmFzdF9jb250ZXh0OwogICB2b2lkICpzd3NldHVwX2NvbnRleHQ7CiAgIHZvaWQgKnN3 dG5sX2NvbnRleHQ7CiAgIHZvaWQgKnN3dG5sX2ltOwogICB2b2lkICphY2FjaGVfY29udGV4dDsK ICAgdm9pZCAqYWVsdF9jb250ZXh0Owp9OwoKCgpleHRlcm4gY29uc3QgY2hhciAqX21lc2FfcHJp bV9uYW1lWzB4MDAwOSArNF07CgoKCgoKCmV4dGVybiBpbnQgTUVTQV9WRVJCT1NFOwpleHRlcm4g aW50IE1FU0FfREVCVUdfRkxBR1M7CiMgMTgyMyAibXR5cGVzLmgiCmVudW0gX3ZlcmJvc2Ugewog ICBWRVJCT1NFX1ZBUlJBWSA9IDB4MDAwMSwKICAgVkVSQk9TRV9URVhUVVJFID0gMHgwMDAyLAog ICBWRVJCT1NFX0lNTUVESUFURSA9IDB4MDAwNCwKICAgVkVSQk9TRV9QSVBFTElORSA9IDB4MDAw OCwKICAgVkVSQk9TRV9EUklWRVIgPSAweDAwMTAsCiAgIFZFUkJPU0VfU1RBVEUgPSAweDAwMjAs CiAgIFZFUkJPU0VfQVBJID0gMHgwMDQwLAogICBWRVJCT1NFX0RJU1BMQVlfTElTVCA9IDB4MDEw MCwKICAgVkVSQk9TRV9MSUdIVElORyA9IDB4MDIwMCwKICAgVkVSQk9TRV9QUklNUyA9IDB4MDQw MCwKICAgVkVSQk9TRV9WRVJUUyA9IDB4MDgwMAp9OwoKCmVudW0gX2RlYnVnIHsKICAgREVCVUdf QUxXQVlTX0ZMVVNIID0gMHgxCn07CiMgMzQgImNvbnRleHQuaCIgMgojIDU4ICJjb250ZXh0Lmgi CmV4dGVybiBHTHZpc3VhbCAqCl9tZXNhX2NyZWF0ZV92aXN1YWwoIEdMYm9vbGVhbiByZ2JGbGFn LAogICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZGJGbGFnLAogICAgICAgICAgICAgICAg ICAgICBHTGJvb2xlYW4gc3RlcmVvRmxhZywKICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVk Qml0cywKICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZ3JlZW5CaXRzLAogICAgICAgICAgICAg ICAgICAgICBHTGludCBibHVlQml0cywKICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxwaGFC aXRzLAogICAgICAgICAgICAgICAgICAgICBHTGludCBpbmRleEJpdHMsCiAgICAgICAgICAgICAg ICAgICAgIEdMaW50IGRlcHRoQml0cywKICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNp bEJpdHMsCiAgICAgICAgICAgICAgICAgICAgIEdMaW50IGFjY3VtUmVkQml0cywKICAgICAgICAg ICAgICAgICAgICAgR0xpbnQgYWNjdW1HcmVlbkJpdHMsCiAgICAgICAgICAgICAgICAgICAgIEdM aW50IGFjY3VtQmx1ZUJpdHMsCiAgICAgICAgICAgICAgICAgICAgIEdMaW50IGFjY3VtQWxwaGFC aXRzLAogICAgICAgICAgICAgICAgICAgICBHTGludCBudW1TYW1wbGVzICk7CgpleHRlcm4gR0xi b29sZWFuCl9tZXNhX2luaXRpYWxpemVfdmlzdWFsKCBHTHZpc3VhbCAqdiwKICAgICAgICAgICAg ICAgICAgICAgICAgIEdMYm9vbGVhbiByZ2JGbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAg R0xib29sZWFuIGRiRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBzdGVy ZW9GbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVkQml0cywKICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaW50IGdyZWVuQml0cywKICAgICAgICAgICAgICAgICAgICAgICAg IEdMaW50IGJsdWVCaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxwaGFCaXRz LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW5kZXhCaXRzLAogICAgICAgICAgICAg ICAgICAgICAgICAgR0xpbnQgZGVwdGhCaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xp bnQgc3RlbmNpbEJpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBhY2N1bVJlZEJp dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBhY2N1bUdyZWVuQml0cywKICAgICAg ICAgICAgICAgICAgICAgICAgIEdMaW50IGFjY3VtQmx1ZUJpdHMsCiAgICAgICAgICAgICAgICAg ICAgICAgICBHTGludCBhY2N1bUFscGhhQml0cywKICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IG51bVNhbXBsZXMgKTsKCmV4dGVybiB2b2lkCl9tZXNhX2Rlc3Ryb3lfdmlzdWFsKCBHTHZp c3VhbCAqdmlzICk7CgoKCgoKCmV4dGVybiBHTGZyYW1lYnVmZmVyICoKX21lc2FfY3JlYXRlX2Zy YW1lYnVmZmVyKCBjb25zdCBHTHZpc3VhbCAqdmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAg ICAgIEdMYm9vbGVhbiBzb2Z0d2FyZURlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM Ym9vbGVhbiBzb2Z0d2FyZVN0ZW5jaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s ZWFuIHNvZnR3YXJlQWNjdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHNv ZnR3YXJlQWxwaGEgKTsKCmV4dGVybiB2b2lkCl9tZXNhX2luaXRpYWxpemVfZnJhbWVidWZmZXIo IEdMZnJhbWVidWZmZXIgKmZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH THZpc3VhbCAqdmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g c29mdHdhcmVEZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHNv ZnR3YXJlU3RlbmNpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHNv ZnR3YXJlQWNjdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBzb2Z0 d2FyZUFscGhhICk7CgpleHRlcm4gdm9pZApfbWVzYV9mcmVlX2ZyYW1lYnVmZmVyX2RhdGEoIEdM ZnJhbWVidWZmZXIgKmJ1ZmZlciApOwoKZXh0ZXJuIHZvaWQKX21lc2FfZGVzdHJveV9mcmFtZWJ1 ZmZlciggR0xmcmFtZWJ1ZmZlciAqYnVmZmVyICk7CgoKCgoKCmV4dGVybiBHTGNvbnRleHQgKgpf bWVzYV9jcmVhdGVfY29udGV4dCggY29uc3QgR0x2aXN1YWwgKnZpc3VhbCwKICAgICAgICAgICAg ICAgICAgICAgIEdMY29udGV4dCAqc2hhcmVfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKmRyaXZlcl9jdHgsCiAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZGlyZWN0ICk7 CgpleHRlcm4gR0xib29sZWFuCl9tZXNhX2luaXRpYWxpemVfY29udGV4dCggR0xjb250ZXh0ICpj dHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2aXN1YWwgKnZpc3VhbCwKICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGNvbnRleHQgKnNoYXJlX2xpc3QsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqZHJpdmVyX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGJvb2xlYW4gZGlyZWN0ICk7CgpleHRlcm4gdm9pZApfbWVzYV9mcmVlX2NvbnRleHRfZGF0 YSggR0xjb250ZXh0ICpjdHggKTsKCmV4dGVybiB2b2lkCl9tZXNhX2Rlc3Ryb3lfY29udGV4dCgg R0xjb250ZXh0ICpjdHggKTsKCgpleHRlcm4gdm9pZApfbWVzYV9jb3B5X2NvbnRleHQoY29uc3Qg R0xjb250ZXh0ICpzcmMsIEdMY29udGV4dCAqZHN0LCBHTHVpbnQgbWFzayk7CgoKZXh0ZXJuIHZv aWQKX21lc2FfbWFrZV9jdXJyZW50KCBHTGNvbnRleHQgKmN0eCwgR0xmcmFtZWJ1ZmZlciAqYnVm ZmVyICk7CgoKZXh0ZXJuIHZvaWQKX21lc2FfbWFrZV9jdXJyZW50MiggR0xjb250ZXh0ICpjdHgs IEdMZnJhbWVidWZmZXIgKmRyYXdCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgIEdMZnJhbWVi dWZmZXIgKnJlYWRCdWZmZXIgKTsKCgpleHRlcm4gR0xjb250ZXh0ICoKX21lc2FfZ2V0X2N1cnJl bnRfY29udGV4dCh2b2lkKTsKIyAxODIgImNvbnRleHQuaCIKZXh0ZXJuIEdMYm9vbGVhbgpfbWVz YV9kZXN0cm95Q29udGV4dChfX0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIEdMYm9vbGVhbgpfbWVz YV9sb3NlQ3VycmVudChfX0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIEdMYm9vbGVhbgpfbWVzYV9t YWtlQ3VycmVudChfX0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIEdMYm9vbGVhbgpfbWVzYV9zaGFy ZUNvbnRleHQoX19HTGNvbnRleHQgKmdjLCBfX0dMY29udGV4dCAqZ2NTaGFyZSk7CgpleHRlcm4g R0xib29sZWFuCl9tZXNhX2NvcHlDb250ZXh0KF9fR0xjb250ZXh0ICpkc3QsIGNvbnN0IF9fR0xj b250ZXh0ICpzcmMsIEdMdWludCBtYXNrKTsKCmV4dGVybiBHTGJvb2xlYW4KX21lc2FfZm9yY2VD dXJyZW50KF9fR0xjb250ZXh0ICpnYyk7CgpleHRlcm4gR0xib29sZWFuCl9tZXNhX25vdGlmeVJl c2l6ZShfX0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIHZvaWQKX21lc2Ffbm90aWZ5RGVzdHJveShf X0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIHZvaWQKX21lc2Ffbm90aWZ5U3dhcEJ1ZmZlcnMoX19H TGNvbnRleHQgKmdjKTsKCmV4dGVybiBzdHJ1Y3QgX19HTGRpc3BhdGNoU3RhdGVSZWMgKgpfbWVz YV9kaXNwYXRjaEV4ZWMoX19HTGNvbnRleHQgKmdjKTsKCmV4dGVybiB2b2lkCl9tZXNhX2JlZ2lu RGlzcGF0Y2hPdmVycmlkZShfX0dMY29udGV4dCAqZ2MpOwoKZXh0ZXJuIHZvaWQKX21lc2FfZW5k RGlzcGF0Y2hPdmVycmlkZShfX0dMY29udGV4dCAqZ2MpOwoKCgpleHRlcm4gc3RydWN0IF9nbGFw aV90YWJsZSAqCl9tZXNhX2dldF9kaXNwYXRjaChHTGNvbnRleHQgKmN0eCk7CgoKCgoKCgpleHRl cm4gdm9pZApfbWVzYV9yZWNvcmRfZXJyb3IoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gZXJyb3Ig KTsKCgpleHRlcm4gdm9pZApfbWVzYV9GaW5pc2goIHZvaWQgKTsKCmV4dGVybiB2b2lkCl9tZXNh X0ZsdXNoKCB2b2lkICk7CiMgMzAgImltYWdlLmMiIDIKIyAxICJpbWFnZS5oIiAxCiMgMzUgImlt YWdlLmgiCmV4dGVybiBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgX21lc2FfbmF0 aXZlX3BhY2tpbmc7CgoKZXh0ZXJuIHZvaWQKX21lc2Ffc3dhcDIoIEdMdXNob3J0ICpwLCBHTHVp bnQgbiApOwoKZXh0ZXJuIHZvaWQKX21lc2Ffc3dhcDQoIEdMdWludCAqcCwgR0x1aW50IG4gKTsK CmV4dGVybiBHTGludApfbWVzYV9zaXplb2ZfdHlwZSggR0xlbnVtIHR5cGUgKTsKCmV4dGVybiBH TGludApfbWVzYV9zaXplb2ZfcGFja2VkX3R5cGUoIEdMZW51bSB0eXBlICk7CgpleHRlcm4gR0xp bnQKX21lc2FfY29tcG9uZW50c19pbl9mb3JtYXQoIEdMZW51bSBmb3JtYXQgKTsKCmV4dGVybiBH TGludApfbWVzYV9ieXRlc19wZXJfcGl4ZWwoIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlICk7 CgpleHRlcm4gR0xib29sZWFuCl9tZXNhX2lzX2xlZ2FsX2Zvcm1hdF9hbmRfdHlwZSggR0xlbnVt IGZvcm1hdCwgR0xlbnVtIHR5cGUgKTsKCgpleHRlcm4gR0x2b2lkICoKX21lc2FfaW1hZ2VfYWRk cmVzcyggY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICpwYWNraW5nLAogICAgICAg ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmltYWdlLCBHTHNpemVpIHdpZHRoLAogICAgICAg ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs CiAgICAgICAgICAgICAgICAgICAgIEdMaW50IGltZywgR0xpbnQgcm93LCBHTGludCBjb2x1bW4g KTsKCgpleHRlcm4gR0xpbnQKX21lc2FfaW1hZ2Vfcm93X3N0cmlkZSggY29uc3Qgc3RydWN0IGds X3BpeGVsc3RvcmVfYXR0cmliICpwYWNraW5nLAogICAgICAgICAgICAgICAgICAgICAgICBHTGlu dCB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUgKTsKCgpleHRlcm4gR0xpbnQKX21l c2FfaW1hZ2VfaW1hZ2Vfc3RyaWRlKCBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIg KnBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhl aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSApOwoKZXh0ZXJuIHZvaWQKX21lc2FfdW5wYWNrX3BvbHlnb25fc3RpcHBsZSggY29uc3QgR0x1 Ynl0ZSAqcGF0dGVybiwgR0x1aW50IGRlc3RbMzJdLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnVucGFja2luZyApOwoKCmV4 dGVybiB2b2lkCl9tZXNhX3BhY2tfcG9seWdvbl9zdGlwcGxlKCBjb25zdCBHTHVpbnQgcGF0dGVy blszMl0sIEdMdWJ5dGUgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcgKTsKCgpleHRlcm4gR0x2b2lkICoK X21lc2FfdW5wYWNrX2JpdG1hcCggR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCwgY29uc3QgR0x1 Ynl0ZSAqcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxz dG9yZV9hdHRyaWIgKnBhY2tpbmcgKTsKCmV4dGVybiB2b2lkCl9tZXNhX3BhY2tfYml0bWFwKCBH TGludCB3aWR0aCwgR0xpbnQgaGVpZ2h0LCBjb25zdCBHTHVieXRlICpzb3VyY2UsCiAgICAgICAg ICAgICAgICAgICBHTHVieXRlICpkZXN0LCBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRy aWIgKnBhY2tpbmcgKTsKCgpleHRlcm4gdm9pZApfbWVzYV9wYWNrX2Zsb2F0X3JnYmFfc3Bhbigg R0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29u c3QgR0xmbG9hdCByZ2JhW11bNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g ZHN0Rm9ybWF0LCBHTGVudW0gZHN0VHlwZSwgR0x2b2lkICpkc3RBZGRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICpkc3RQYWNr aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRyYW5zZmVyT3BzICk7CgoK ZXh0ZXJuIHZvaWQKX21lc2FfcGFja19yZ2JhX3NwYW4oIEdMY29udGV4dCAqY3R4LAogICAgICAg ICAgICAgICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMY2hhbiByZ2JhW11bNF0sCiAgICAgICAg ICAgICAgICAgICAgICBHTGVudW0gZHN0Rm9ybWF0LCBHTGVudW0gZHN0VHlwZSwgR0x2b2lkICpk c3RBZGRyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVf YXR0cmliICpkc3RQYWNraW5nLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRyYW5zZmVy T3BzICk7CgoKZXh0ZXJuIHZvaWQKX21lc2FfdW5wYWNrX2NoYW5fY29sb3Jfc3BhbiggR0xjb250 ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLCBHTGVudW0g ZHN0Rm9ybWF0LCBHTGNoYW4gZGVzdFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGVudW0gc3JjRm9ybWF0LCBHTGVudW0gc3JjVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0x2b2lkICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRyYW5zZmVyT3BzICk7CgoKZXh0ZXJuIHZvaWQK X21lc2FfdW5wYWNrX2Zsb2F0X2NvbG9yX3NwYW4oIEdMY29udGV4dCAqY3R4LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdMZW51bSBkc3RGb3JtYXQsIEdMZmxvYXQg ZGVzdFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0Zvcm1hdCwg R0xlbnVtIHNyY1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv aWQgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9waXhlbHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMdWludCB0cmFuc2Zlck9wcywgR0xib29sZWFuIGNsYW1wICk7CgoKZXh0ZXJuIHZv aWQKX21lc2FfdW5wYWNrX2luZGV4X3NwYW4oIGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTHVpbnQg biwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RUeXBlLCBHTHZvaWQgKmRlc3Qs CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwgY29uc3QgR0x2b2lkICpz b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9y ZV9hdHRyaWIgKnNyY1BhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdHJh bnNmZXJPcHMgKTsKCgpleHRlcm4gdm9pZApfbWVzYV9wYWNrX2luZGV4X3NwYW4oIGNvbnN0IEdM Y29udGV4dCAqY3R4LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0 VHlwZSwgR0x2b2lkICpkZXN0LCBjb25zdCBHTHVpbnQgKnNvdXJjZSwKICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKmRzdFBhY2tpbmcsCiAg ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRyYW5zZmVyT3BzICk7CgoKZXh0ZXJuIHZvaWQK X21lc2FfdW5wYWNrX3N0ZW5jaWxfc3BhbiggY29uc3QgR0xjb250ZXh0ICpjdHgsIEdMdWludCBu LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0VHlwZSwgR0x2b2lkICpkZXN0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwgY29uc3QgR0x2b2lk ICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhl bHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1 aW50IHRyYW5zZmVyT3BzICk7CgpleHRlcm4gdm9pZApfbWVzYV9wYWNrX3N0ZW5jaWxfc3Bhbigg Y29uc3QgR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAg R0xlbnVtIGRzdFR5cGUsIEdMdm9pZCAqZGVzdCwgY29uc3QgR0xzdGVuY2lsICpzb3VyY2UsCiAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIg KmRzdFBhY2tpbmcgKTsKCgpleHRlcm4gdm9pZApfbWVzYV91bnBhY2tfZGVwdGhfc3BhbiggY29u c3QgR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLCBHTGZsb2F0ICpkZXN0LAogICAgICAgICAgICAg ICAgICAgICAgICAgR0xlbnVtIHNyY1R5cGUsIGNvbnN0IEdMdm9pZCAqc291cmNlLAogICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICpzcmNQ YWNraW5nICk7CgpleHRlcm4gdm9pZApfbWVzYV9wYWNrX2RlcHRoX3NwYW4oIGNvbnN0IEdMY29u dGV4dCAqY3R4LCBHTHVpbnQgbiwgR0x2b2lkICpkZXN0LAogICAgICAgICAgICAgICAgICAgICAg IEdMZW51bSBkc3RUeXBlLCBjb25zdCBHTGZsb2F0ICpkZXB0aFNwYW4sCiAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICpkc3RQYWNraW5nICk7 CgoKZXh0ZXJuIHZvaWQgKgpfbWVzYV91bnBhY2tfaW1hZ2UoIEdMc2l6ZWkgd2lkdGgsIEdMc2l6 ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt YXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnVucGFjayApOwojIDMxICJpbWFn ZS5jIiAyCgojIDEgImhpc3RvZ3JhbS5oIiAxCiMgMzUgImhpc3RvZ3JhbS5oIgpleHRlcm4gdm9p ZCBfbWVzYV9HZXRNaW5tYXgoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0g Zm9ybWF0LCBHTGVudW0gdHlwZXMsIEdMdm9pZCAqdmFsdWVzKTsKCmV4dGVybiB2b2lkIF9tZXNh X0dldEhpc3RvZ3JhbShHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdMZW51bSBmb3Jt YXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CgpleHRlcm4gdm9pZCBfbWVzYV9HZXRI aXN0b2dyYW1QYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg KnBhcmFtcyk7CgpleHRlcm4gdm9pZCBfbWVzYV9HZXRIaXN0b2dyYW1QYXJhbWV0ZXJpdihHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwoKZXh0ZXJuIHZvaWQgX21l c2FfR2V0TWlubWF4UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICpwYXJhbXMpOwoKZXh0ZXJuIHZvaWQgX21lc2FfR2V0TWlubWF4UGFyYW1ldGVyaXYoR0xl bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKCmV4dGVybiB2b2lkIF9t ZXNhX0hpc3RvZ3JhbShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJu YWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKCmV4dGVybiB2b2lkIF9tZXNhX01pbm1heChHTGVu dW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKCmV4dGVy biB2b2lkIF9tZXNhX1Jlc2V0SGlzdG9ncmFtKEdMZW51bSB0YXJnZXQpOwoKZXh0ZXJuIHZvaWQg X21lc2FfUmVzZXRNaW5tYXgoR0xlbnVtIHRhcmdldCk7CgpleHRlcm4gdm9pZApfbWVzYV91cGRh dGVfbWlubWF4KEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgY29uc3QgR0xmbG9hdCByZ2JhW11b NF0pOwoKZXh0ZXJuIHZvaWQKX21lc2FfdXBkYXRlX2hpc3RvZ3JhbShHTGNvbnRleHQgKmN0eCwg R0x1aW50IG4sIGNvbnN0IEdMZmxvYXQgcmdiYVtdWzRdKTsKIyAzMyAiaW1hZ2UuYyIgMgoKCiMg MSAicGl4ZWwuaCIgMQojIDQwICJwaXhlbC5oIgpleHRlcm4gdm9pZApfbWVzYV9HZXRQaXhlbE1h cGZ2KCBHTGVudW0gbWFwLCBHTGZsb2F0ICp2YWx1ZXMgKTsKCmV4dGVybiB2b2lkCl9tZXNhX0dl dFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQK X21lc2FfR2V0UGl4ZWxNYXB1c3YoIEdMZW51bSBtYXAsIEdMdXNob3J0ICp2YWx1ZXMgKTsKCmV4 dGVybiB2b2lkCl9tZXNhX1BpeGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsIGNv bnN0IEdMZmxvYXQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQKX21lc2FfUGl4ZWxNYXB1aXYoR0xl bnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1ZXMgKTsKCmV4dGVybiB2 b2lkCl9tZXNhX1BpeGVsTWFwdXN2KEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsIGNvbnN0IEdM dXNob3J0ICp2YWx1ZXMgKTsKCmV4dGVybiB2b2lkCl9tZXNhX1BpeGVsU3RvcmVmKCBHTGVudW0g cG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKCmV4dGVybiB2b2lkCl9tZXNhX1BpeGVsU3RvcmVpKCBH TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZApfbWVzYV9QaXhlbFRyYW5z ZmVyZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CgpleHRlcm4gdm9pZApfbWVzYV9Q aXhlbFRyYW5zZmVyaSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQK X21lc2FfUGl4ZWxab29tKCBHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3RvciApOwoKCgoK CgoKZXh0ZXJuIHZvaWQKX21lc2Ffc2NhbGVfYW5kX2JpYXNfcmdiYShjb25zdCBHTGNvbnRleHQg KmN0eCwgR0x1aW50IG4sIEdMZmxvYXQgcmdiYVtdWzRdLAogICAgICAgICAgICAgICAgICAgICAg ICAgIEdMZmxvYXQgclNjYWxlLCBHTGZsb2F0IGdTY2FsZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGZsb2F0IGJTY2FsZSwgR0xmbG9hdCBhU2NhbGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xmbG9hdCByQmlhcywgR0xmbG9hdCBnQmlhcywKICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGZsb2F0IGJCaWFzLCBHTGZsb2F0IGFCaWFzKTsKCmV4dGVybiB2b2lkCl9tZXNhX21h cF9yZ2JhKGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xmbG9hdCByZ2JhW11bNF0p OwoKCmV4dGVybiB2b2lkCl9tZXNhX3RyYW5zZm9ybV9yZ2JhKGNvbnN0IEdMY29udGV4dCAqY3R4 LCBHTHVpbnQgbiwgR0xmbG9hdCByZ2JhW11bNF0pOwoKCmV4dGVybiB2b2lkCl9tZXNhX2xvb2t1 cF9yZ2JhKGNvbnN0IHN0cnVjdCBnbF9jb2xvcl90YWJsZSAqdGFibGUsCiAgICAgICAgICAgICAg ICAgIEdMdWludCBuLCBHTGZsb2F0IHJnYmFbXVs0XSk7CgoKZXh0ZXJuIHZvaWQKX21lc2Ffc2hp ZnRfYW5kX29mZnNldF9jaShjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4ZXNbXSk7CgoKZXh0ZXJuIHZvaWQKX21lc2Ff bWFwX2NpKGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0x1aW50IGluZGV4W10pOwoK CmV4dGVybiB2b2lkCl9tZXNhX21hcF9jaV90b19yZ2JhX2NoYW4oY29uc3QgR0xjb250ZXh0ICpj dHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMdWludCBpbmRl eFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhbiByZ2JhW11bNF0pOwoKCmV4dGVy biB2b2lkCl9tZXNhX21hcF9jaV90b19yZ2JhKGNvbnN0IEdMY29udGV4dCAqY3R4LAogICAgICAg ICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3QgR0x1aW50IGluZGV4W10sIEdMZmxvYXQgcmdi YVtdWzRdKTsKCgpleHRlcm4gdm9pZApfbWVzYV9tYXBfY2k4X3RvX3JnYmEoY29uc3QgR0xjb250 ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3QgR0x1Ynl0ZSBp bmRleFtdLAogICAgICAgICAgICAgICAgICAgICAgR0xjaGFuIHJnYmFbXVs0XSk7CgoKZXh0ZXJu IHZvaWQKX21lc2Ffc2hpZnRfYW5kX29mZnNldF9zdGVuY2lsKGNvbnN0IEdMY29udGV4dCAqY3R4 LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc3RlbmNpbCBpbmRl eGVzW10pOwoKCmV4dGVybiB2b2lkCl9tZXNhX21hcF9zdGVuY2lsKGNvbnN0IEdMY29udGV4dCAq Y3R4LCBHTHVpbnQgbiwgR0xzdGVuY2lsIGluZGV4W10pOwoKCmV4dGVybiB2b2lkCl9tZXNhX2No YW5fdG9fZmxvYXRfc3Bhbihjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sCiAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYW4gcmdiYVtdWzRdLCBHTGZsb2F0IHJnYmFmW11b NF0pOwojIDM2ICJpbWFnZS5jIiAyCiMgNDYgImltYWdlLmMiCmNvbnN0IHN0cnVjdCBnbF9waXhl bHN0b3JlX2F0dHJpYiBfbWVzYV9uYXRpdmVfcGFja2luZyA9IHsKICAgMSwKICAgMCwKICAgMCwK ICAgMCwKICAgMCwKICAgMCwKICAgMHgwLAogICAweDAsCiAgIDB4MCwKICAgMHgwCn07CiMgNjkg ImltYWdlLmMiCnN0YXRpYyB2b2lkCmZsaXBfYnl0ZXMoIEdMdWJ5dGUgKnAsIEdMdWludCBuICkK ewogICByZWdpc3RlciBHTHVpbnQgaSwgYSwgYjsKCiAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAg ICAgYiA9IChHTHVpbnQpIHBbaV07CiAgICAgIGEgPSAoKGIgJiAweDAxKSA8PCA3KSB8CiAgICAg ICAgICAoKGIgJiAweDAyKSA8PCA1KSB8CiAgICAgICAgICAoKGIgJiAweDA0KSA8PCAzKSB8CiAg ICAgICAgICAoKGIgJiAweDA4KSA8PCAxKSB8CiAgICAgICAgICAoKGIgJiAweDEwKSA+PiAxKSB8 CiAgICAgICAgICAoKGIgJiAweDIwKSA+PiAzKSB8CiAgICAgICAgICAoKGIgJiAweDQwKSA+PiA1 KSB8CiAgICAgICAgICAoKGIgJiAweDgwKSA+PiA3KTsKICAgICAgcFtpXSA9IChHTHVieXRlKSBh OwogICB9Cn0KCgoKCgp2b2lkCl9tZXNhX3N3YXAyKCBHTHVzaG9ydCAqcCwgR0x1aW50IG4gKQp7 CiAgIHJlZ2lzdGVyIEdMdWludCBpOwoKICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICBwW2ld ID0gKHBbaV0gPj4gOCkgfCAoKHBbaV0gPDwgOCkgJiAweGZmMDApOwogICB9Cn0KCgoKCgoKdm9p ZApfbWVzYV9zd2FwNCggR0x1aW50ICpwLCBHTHVpbnQgbiApCnsKICAgcmVnaXN0ZXIgR0x1aW50 IGksIGEsIGI7CgogICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgIGIgPSBwW2ldOwogICAgICBh ID0gKGIgPj4gMjQpCiAgICAgICAgfCAoKGIgPj4gOCkgJiAweGZmMDApCiAgICAgICAgfCAoKGIg PDwgOCkgJiAweGZmMDAwMCkKICAgICAgICB8ICgoYiA8PCAyNCkgJiAweGZmMDAwMDAwKTsKICAg ICAgcFtpXSA9IGE7CiAgIH0KfQojIDEzMCAiaW1hZ2UuYyIKR0xpbnQgX21lc2Ffc2l6ZW9mX3R5 cGUoIEdMZW51bSB0eXBlICkKewogICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAweDFBMDA6 CiAgICAgICAgIHJldHVybiAwOwogICAgICBjYXNlIDB4MTQwMToKICAgICAgICAgcmV0dXJuIHNp emVvZihHTHVieXRlKTsKICAgICAgY2FzZSAweDE0MDA6CiAgICAgICAgIHJldHVybiBzaXplb2Yo R0xieXRlKTsKICAgICAgY2FzZSAweDE0MDM6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1c2hv cnQpOwogICAgICBjYXNlIDB4MTQwMjoKICAgICAgICAgcmV0dXJuIHNpemVvZihHTHNob3J0KTsK ICAgICAgY2FzZSAweDE0MDU6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKICAgICAg Y2FzZSAweDE0MDQ6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0xpbnQpOwogICAgICBjYXNlIDB4 MTQwNjoKICAgICAgICAgcmV0dXJuIHNpemVvZihHTGZsb2F0KTsKICAgICAgZGVmYXVsdDoKICAg ICAgICAgcmV0dXJuIC0xOwogICB9Cn0KCgoKCgoKR0xpbnQgX21lc2Ffc2l6ZW9mX3BhY2tlZF90 eXBlKCBHTGVudW0gdHlwZSApCnsKICAgc3dpdGNoICh0eXBlKSB7CiAgICAgIGNhc2UgMHgxQTAw OgogICAgICAgICByZXR1cm4gMDsKICAgICAgY2FzZSAweDE0MDE6CiAgICAgICAgIHJldHVybiBz aXplb2YoR0x1Ynl0ZSk7CiAgICAgIGNhc2UgMHgxNDAwOgogICAgICAgICByZXR1cm4gc2l6ZW9m KEdMYnl0ZSk7CiAgICAgIGNhc2UgMHgxNDAzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdXNo b3J0KTsKICAgICAgY2FzZSAweDE0MDI6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0xzaG9ydCk7 CiAgICAgIGNhc2UgMHgxNDA1OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdWludCk7CiAgICAg IGNhc2UgMHgxNDA0OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKICAgICAgY2FzZSAw eDE0MDY6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0xmbG9hdCk7CiAgICAgIGNhc2UgMHg4MDMy OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdWJ5dGUpOwogICAgICBjYXNlIDB4ODM2MjoKICAg ICAgICAgcmV0dXJuIHNpemVvZihHTHVieXRlKTsKICAgICAgY2FzZSAweDgzNjM6CiAgICAgICAg IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOwogICAgICBjYXNlIDB4ODM2NDoKICAgICAgICAgcmV0 dXJuIHNpemVvZihHTHVzaG9ydCk7CiAgICAgIGNhc2UgMHg4MDMzOgogICAgICAgICByZXR1cm4g c2l6ZW9mKEdMdXNob3J0KTsKICAgICAgY2FzZSAweDgzNjU6CiAgICAgICAgIHJldHVybiBzaXpl b2YoR0x1c2hvcnQpOwogICAgICBjYXNlIDB4ODAzNDoKICAgICAgICAgcmV0dXJuIHNpemVvZihH THVzaG9ydCk7CiAgICAgIGNhc2UgMHg4MzY2OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdXNo b3J0KTsKICAgICAgY2FzZSAweDgwMzU6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1aW50KTsK ICAgICAgY2FzZSAweDgzNjc6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKICAgICAg Y2FzZSAweDgwMzY6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKICAgICAgY2FzZSAw eDgzNjg6CiAgICAgICAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKICAgICAgY2FzZSAweDg1QkE6 CiAgICAgIGNhc2UgMHg4NUJCOgogICAgICAgICAgcmV0dXJuIHNpemVvZihHTHVzaG9ydCk7CiAg ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAtMTsKICAgfQp9CgoKCgoKCgpHTGludCBfbWVz YV9jb21wb25lbnRzX2luX2Zvcm1hdCggR0xlbnVtIGZvcm1hdCApCnsKICAgc3dpdGNoIChmb3Jt YXQpIHsKICAgICAgY2FzZSAweDE5MDA6CiAgICAgIGNhc2UgMHg4MEUyOgogICAgICBjYXNlIDB4 ODBFMzoKICAgICAgY2FzZSAweDgwRTQ6CiAgICAgIGNhc2UgMHg4MEU1OgogICAgICBjYXNlIDB4 ODBFNjoKICAgICAgY2FzZSAweDgwRTc6CiAgICAgIGNhc2UgMHgxOTAxOgogICAgICBjYXNlIDB4 MTkwMjoKICAgICAgY2FzZSAweDE5MDM6CiAgICAgIGNhc2UgMHgxOTA0OgogICAgICBjYXNlIDB4 MTkwNToKICAgICAgY2FzZSAweDE5MDY6CiAgICAgIGNhc2UgMHgxOTA5OgogICAgICBjYXNlIDB4 ODA0OToKICAgICAgICAgcmV0dXJuIDE7CiAgICAgIGNhc2UgMHgxOTBBOgogICAgICAgICByZXR1 cm4gMjsKICAgICAgY2FzZSAweDE5MDc6CiAgICAgICAgIHJldHVybiAzOwogICAgICBjYXNlIDB4 MTkwODoKICAgICAgICAgcmV0dXJuIDQ7CiAgICAgIGNhc2UgMHg4MEUwOgogICAgICAgICByZXR1 cm4gMzsKICAgICAgY2FzZSAweDgwRTE6CiAgICAgICAgIHJldHVybiA0OwogICAgICBjYXNlIDB4 ODAwMDoKICAgICAgICAgcmV0dXJuIDQ7CiAgICAgIGNhc2UgMHg4NzU3OgogICAgICAgICByZXR1 cm4gMjsKICAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIC0xOwogICB9Cn0KCgoKCgoKR0xp bnQgX21lc2FfYnl0ZXNfcGVyX3BpeGVsKCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSApCnsK ICAgR0xpbnQgY29tcHMgPSBfbWVzYV9jb21wb25lbnRzX2luX2Zvcm1hdCggZm9ybWF0ICk7CiAg IGlmIChjb21wcyA8IDApCiAgICAgIHJldHVybiAtMTsKCiAgIHN3aXRjaCAodHlwZSkgewogICAg ICBjYXNlIDB4MUEwMDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgIGNhc2UgMHgxNDAwOgogICAg ICBjYXNlIDB4MTQwMToKICAgICAgICAgcmV0dXJuIGNvbXBzICogc2l6ZW9mKEdMdWJ5dGUpOwog ICAgICBjYXNlIDB4MTQwMjoKICAgICAgY2FzZSAweDE0MDM6CiAgICAgICAgIHJldHVybiBjb21w cyAqIHNpemVvZihHTHNob3J0KTsKICAgICAgY2FzZSAweDE0MDQ6CiAgICAgIGNhc2UgMHgxNDA1 OgogICAgICAgICByZXR1cm4gY29tcHMgKiBzaXplb2YoR0xpbnQpOwogICAgICBjYXNlIDB4MTQw NjoKICAgICAgICAgcmV0dXJuIGNvbXBzICogc2l6ZW9mKEdMZmxvYXQpOwogICAgICBjYXNlIDB4 ODAzMjoKICAgICAgY2FzZSAweDgzNjI6CiAgICAgICAgIGlmIChmb3JtYXQgPT0gMHgxOTA3IHx8 IGZvcm1hdCA9PSAweDgwRTApCiAgICAgICAgICAgIHJldHVybiBzaXplb2YoR0x1Ynl0ZSk7CiAg ICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICBjYXNlIDB4ODM2MzoKICAg ICAgY2FzZSAweDgzNjQ6CiAgICAgICAgIGlmIChmb3JtYXQgPT0gMHgxOTA3IHx8IGZvcm1hdCA9 PSAweDgwRTApCiAgICAgICAgICAgIHJldHVybiBzaXplb2YoR0x1c2hvcnQpOwogICAgICAgICBl bHNlCiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgY2FzZSAweDgwMzM6CiAgICAgIGNhc2Ug MHg4MzY1OgogICAgICBjYXNlIDB4ODAzNDoKICAgICAgY2FzZSAweDgzNjY6CiAgICAgICAgIGlm IChmb3JtYXQgPT0gMHgxOTA4IHx8IGZvcm1hdCA9PSAweDgwRTEgfHwgZm9ybWF0ID09IDB4ODAw MCkKICAgICAgICAgICAgcmV0dXJuIHNpemVvZihHTHVzaG9ydCk7CiAgICAgICAgIGVsc2UKICAg ICAgICAgICAgcmV0dXJuIC0xOwogICAgICBjYXNlIDB4ODAzNToKICAgICAgY2FzZSAweDgzNjc6 CiAgICAgIGNhc2UgMHg4MDM2OgogICAgICBjYXNlIDB4ODM2ODoKICAgICAgICAgaWYgKGZvcm1h dCA9PSAweDE5MDggfHwgZm9ybWF0ID09IDB4ODBFMSB8fCBmb3JtYXQgPT0gMHg4MDAwKQogICAg ICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdWludCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg cmV0dXJuIC0xOwogICAgICBjYXNlIDB4ODVCQToKICAgICAgY2FzZSAweDg1QkI6CiAgICAgICAg IGlmIChmb3JtYXQgPT0gMHg4NzU3KQogICAgICAgICAgICByZXR1cm4gc2l6ZW9mKEdMdXNob3J0 KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgIGRlZmF1bHQ6CiAg ICAgICAgIHJldHVybiAtMTsKICAgfQp9CgoKCgoKCkdMYm9vbGVhbgpfbWVzYV9pc19sZWdhbF9m b3JtYXRfYW5kX3R5cGUoIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlICkKewogICBzd2l0Y2gg KGZvcm1hdCkgewogICAgICBjYXNlIDB4MTkwMDoKICAgICAgY2FzZSAweDE5MDE6CiAgICAgICAg IHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICBjYXNlIDB4MUEwMDoKICAgICAgICAgICAgY2Fz ZSAweDE0MDA6CiAgICAgICAgICAgIGNhc2UgMHgxNDAxOgogICAgICAgICAgICBjYXNlIDB4MTQw MjoKICAgICAgICAgICAgY2FzZSAweDE0MDM6CiAgICAgICAgICAgIGNhc2UgMHgxNDA0OgogICAg ICAgICAgICBjYXNlIDB4MTQwNToKICAgICAgICAgICAgY2FzZSAweDE0MDY6CiAgICAgICAgICAg ICAgIHJldHVybiAweDE7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgIHJldHVy biAweDA7CiAgICAgICAgIH0KICAgICAgY2FzZSAweDE5MDM6CiAgICAgIGNhc2UgMHgxOTA0Ogog ICAgICBjYXNlIDB4MTkwNToKICAgICAgY2FzZSAweDE5MDY6CiAgICAgIGNhc2UgMHg4MDQ5Ogog ICAgICBjYXNlIDB4MTkwOToKICAgICAgY2FzZSAweDE5MEE6CiAgICAgIGNhc2UgMHgxOTAyOgog ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAweDE0MDA6CiAgICAgICAg ICAgIGNhc2UgMHgxNDAxOgogICAgICAgICAgICBjYXNlIDB4MTQwMjoKICAgICAgICAgICAgY2Fz ZSAweDE0MDM6CiAgICAgICAgICAgIGNhc2UgMHgxNDA0OgogICAgICAgICAgICBjYXNlIDB4MTQw NToKICAgICAgICAgICAgY2FzZSAweDE0MDY6CiAgICAgICAgICAgICAgIHJldHVybiAweDE7CiAg ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgIHJldHVybiAweDA7CiAgICAgICAgIH0K ICAgICAgY2FzZSAweDE5MDc6CiAgICAgIGNhc2UgMHg4MEUwOgogICAgICAgICBzd2l0Y2ggKHR5 cGUpIHsKICAgICAgICAgICAgY2FzZSAweDE0MDA6CiAgICAgICAgICAgIGNhc2UgMHgxNDAxOgog ICAgICAgICAgICBjYXNlIDB4MTQwMjoKICAgICAgICAgICAgY2FzZSAweDE0MDM6CiAgICAgICAg ICAgIGNhc2UgMHgxNDA0OgogICAgICAgICAgICBjYXNlIDB4MTQwNToKICAgICAgICAgICAgY2Fz ZSAweDE0MDY6CiAgICAgICAgICAgIGNhc2UgMHg4MDMyOgogICAgICAgICAgICBjYXNlIDB4ODM2 MjoKICAgICAgICAgICAgY2FzZSAweDgzNjM6CiAgICAgICAgICAgIGNhc2UgMHg4MzY0OgogICAg ICAgICAgICAgICByZXR1cm4gMHgxOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg ICByZXR1cm4gMHgwOwogICAgICAgICB9CiAgICAgIGNhc2UgMHgxOTA4OgogICAgICBjYXNlIDB4 ODBFMToKICAgICAgY2FzZSAweDgwMDA6CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg ICAgICBjYXNlIDB4MTQwMDoKICAgICAgICAgICAgY2FzZSAweDE0MDE6CiAgICAgICAgICAgIGNh c2UgMHgxNDAyOgogICAgICAgICAgICBjYXNlIDB4MTQwMzoKICAgICAgICAgICAgY2FzZSAweDE0 MDQ6CiAgICAgICAgICAgIGNhc2UgMHgxNDA1OgogICAgICAgICAgICBjYXNlIDB4MTQwNjoKICAg ICAgICAgICAgY2FzZSAweDgwMzM6CiAgICAgICAgICAgIGNhc2UgMHg4MzY1OgogICAgICAgICAg ICBjYXNlIDB4ODAzNDoKICAgICAgICAgICAgY2FzZSAweDgzNjY6CiAgICAgICAgICAgIGNhc2Ug MHg4MDM1OgogICAgICAgICAgICBjYXNlIDB4ODM2NzoKICAgICAgICAgICAgY2FzZSAweDgwMzY6 CiAgICAgICAgICAgIGNhc2UgMHg4MzY4OgogICAgICAgICAgICAgICByZXR1cm4gMHgxOwogICAg ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICByZXR1cm4gMHgwOwogICAgICAgICB9CiAg ICAgIGNhc2UgMHg4NzU3OgogICAgICAgICBpZiAodHlwZSA9PSAweDg1QkEgfHwKICAgICAgICAg ICAgIHR5cGUgPT0gMHg4NUJCKQogICAgICAgICAgICByZXR1cm4gMHgxOwogICAgICAgICBlbHNl CiAgICAgICAgICAgIHJldHVybiAweDA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgIDsKICAgfQog ICByZXR1cm4gMHgwOwp9CiMgNDI5ICJpbWFnZS5jIgpHTHZvaWQgKgpfbWVzYV9pbWFnZV9hZGRy ZXNzKCBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcsCiAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW1hZ2UsIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwK ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW1nLCBHTGludCByb3csIEdMaW50IGNvbHVtbiAp CnsKICAgR0xpbnQgYWxpZ25tZW50OwogICBHTGludCBwaXhlbHNfcGVyX3JvdzsKICAgR0xpbnQg cm93c19wZXJfaW1hZ2U7CiAgIEdMaW50IHNraXByb3dzOwogICBHTGludCBza2lwcGl4ZWxzOwog ICBHTGludCBza2lwaW1hZ2VzOwogICBHTHVieXRlICpwaXhlbF9hZGRyOwoKICAgYWxpZ25tZW50 ID0gcGFja2luZy0+QWxpZ25tZW50OwogICBpZiAocGFja2luZy0+Um93TGVuZ3RoID4gMCkgewog ICAgICBwaXhlbHNfcGVyX3JvdyA9IHBhY2tpbmctPlJvd0xlbmd0aDsKICAgfQogICBlbHNlIHsK ICAgICAgcGl4ZWxzX3Blcl9yb3cgPSB3aWR0aDsKICAgfQogICBpZiAocGFja2luZy0+SW1hZ2VI ZWlnaHQgPiAwKSB7CiAgICAgIHJvd3NfcGVyX2ltYWdlID0gcGFja2luZy0+SW1hZ2VIZWlnaHQ7 CiAgIH0KICAgZWxzZSB7CiAgICAgIHJvd3NfcGVyX2ltYWdlID0gaGVpZ2h0OwogICB9CiAgIHNr aXByb3dzID0gcGFja2luZy0+U2tpcFJvd3M7CiAgIHNraXBwaXhlbHMgPSBwYWNraW5nLT5Ta2lw UGl4ZWxzOwogICBza2lwaW1hZ2VzID0gcGFja2luZy0+U2tpcEltYWdlczsKCiAgIGlmICh0eXBl PT0weDFBMDApIHsKCiAgICAgIEdMaW50IGNvbXBfcGVyX3BpeGVsOwogICAgICBHTGludCBieXRl c19wZXJfY29tcDsKICAgICAgR0xpbnQgYnl0ZXNfcGVyX3JvdzsKICAgICAgR0xpbnQgYnl0ZXNf cGVyX2ltYWdlOwoKCiAgICAgIGJ5dGVzX3Blcl9jb21wID0gX21lc2Ffc2l6ZW9mX3BhY2tlZF90 eXBlKCB0eXBlICk7CiAgICAgIGlmIChieXRlc19wZXJfY29tcDwwKSB7CiAgICAgICAgIHJldHVy biAwOwogICAgICB9CgoKICAgICAgY29tcF9wZXJfcGl4ZWwgPSBfbWVzYV9jb21wb25lbnRzX2lu X2Zvcm1hdCggZm9ybWF0ICk7CiAgICAgIGlmIChjb21wX3Blcl9waXhlbDwwICYmIHR5cGUgIT0g MHgxQTAwKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgICB9CgogICAgICBieXRlc19wZXJfcm93 ID0gYWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgKiAoIChjb21wX3Blcl9waXhlbCpwaXhl bHNfcGVyX3JvdykgJSAoOCphbGlnbm1lbnQpID09IDAgPyAoY29tcF9wZXJfcGl4ZWwqcGl4ZWxz X3Blcl9yb3cpLyg4KmFsaWdubWVudCkgOiAoY29tcF9wZXJfcGl4ZWwqcGl4ZWxzX3Blcl9yb3cp Lyg4KmFsaWdubWVudCkrMSApOwoKICAgICAgYnl0ZXNfcGVyX2ltYWdlID0gYnl0ZXNfcGVyX3Jv dyAqIHJvd3NfcGVyX2ltYWdlOwoKICAgICAgcGl4ZWxfYWRkciA9IChHTHVieXRlICopIGltYWdl CiAgICAgICAgICAgICAgICAgKyAoc2tpcGltYWdlcyArIGltZykgKiBieXRlc19wZXJfaW1hZ2UK ICAgICAgICAgICAgICAgICArIChza2lwcm93cyArIHJvdykgKiBieXRlc19wZXJfcm93CiAgICAg ICAgICAgICAgICAgKyAoc2tpcHBpeGVscyArIGNvbHVtbikgLyA4OwogICB9CiAgIGVsc2UgewoK ICAgICAgR0xpbnQgYnl0ZXNfcGVyX3BpeGVsLCBieXRlc19wZXJfcm93LCByZW1haW5kZXIsIGJ5 dGVzX3Blcl9pbWFnZTsKICAgICAgR0xpbnQgdG9wT2ZJbWFnZTsKCiAgICAgIGJ5dGVzX3Blcl9w aXhlbCA9IF9tZXNhX2J5dGVzX3Blcl9waXhlbCggZm9ybWF0LCB0eXBlICk7CgoKICAgICAgKCh2 b2lkKSAoKGJ5dGVzX3Blcl9waXhlbCA+IDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDQ5NywgImJ5dGVzX3Blcl9waXhlbCA+ IDAiKSwgMCkpKTsKCiAgICAgIGJ5dGVzX3Blcl9yb3cgPSBwaXhlbHNfcGVyX3JvdyAqIGJ5dGVz X3Blcl9waXhlbDsKICAgICAgcmVtYWluZGVyID0gYnl0ZXNfcGVyX3JvdyAlIGFsaWdubWVudDsK ICAgICAgaWYgKHJlbWFpbmRlciA+IDApCiAgICAgICAgIGJ5dGVzX3Blcl9yb3cgKz0gKGFsaWdu bWVudCAtIHJlbWFpbmRlcik7CgogICAgICA7CgogICAgICBieXRlc19wZXJfaW1hZ2UgPSBieXRl c19wZXJfcm93ICogcm93c19wZXJfaW1hZ2U7CgogICAgICBpZiAocGFja2luZy0+SW52ZXJ0KSB7 CgogICAgICAgICB0b3BPZkltYWdlID0gYnl0ZXNfcGVyX3JvdyAqIChoZWlnaHQgLSAxKTsKICAg ICAgICAgYnl0ZXNfcGVyX3JvdyA9IC1ieXRlc19wZXJfcm93OwogICAgICB9CiAgICAgIGVsc2Ug ewogICAgICAgICB0b3BPZkltYWdlID0gMDsKICAgICAgfQoKCiAgICAgIHBpeGVsX2FkZHIgPSAo R0x1Ynl0ZSAqKSBpbWFnZQogICAgICAgICAgICAgICAgICsgKHNraXBpbWFnZXMgKyBpbWcpICog Ynl0ZXNfcGVyX2ltYWdlCiAgICAgICAgICAgICAgICAgKyB0b3BPZkltYWdlCiAgICAgICAgICAg ICAgICAgKyAoc2tpcHJvd3MgKyByb3cpICogYnl0ZXNfcGVyX3JvdwogICAgICAgICAgICAgICAg ICsgKHNraXBwaXhlbHMgKyBjb2x1bW4pICogYnl0ZXNfcGVyX3BpeGVsOwogICB9CgogICByZXR1 cm4gKEdMdm9pZCAqKSBwaXhlbF9hZGRyOwp9CgoKCgoKCgpHTGludApfbWVzYV9pbWFnZV9yb3df c3RyaWRlKCBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcsCiAgICAg ICAgICAgICAgICAgICAgICAgIEdMaW50IHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw ZSApCnsKICAgOwogICBpZiAodHlwZSA9PSAweDFBMDApIHsKCiAgICAgIEdMaW50IGJ5dGVzOwog ICAgICBpZiAocGFja2luZy0+Um93TGVuZ3RoID09IDApIHsKICAgICAgICAgYnl0ZXMgPSAod2lk dGggKyA3KSAvIDg7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgIGJ5dGVzID0gKHBhY2tp bmctPlJvd0xlbmd0aCArIDcpIC8gODsKICAgICAgfQogICAgICBpZiAocGFja2luZy0+SW52ZXJ0 KSB7CgogICAgICAgICBieXRlcyA9IC1ieXRlczsKICAgICAgfQogICAgICByZXR1cm4gYnl0ZXM7 CiAgIH0KICAgZWxzZSB7CgogICAgICBjb25zdCBHTGludCBieXRlc1BlclBpeGVsID0gX21lc2Ff Ynl0ZXNfcGVyX3BpeGVsKGZvcm1hdCwgdHlwZSk7CiAgICAgIEdMaW50IGJ5dGVzUGVyUm93LCBy ZW1haW5kZXI7CiAgICAgIGlmIChieXRlc1BlclBpeGVsIDw9IDApCiAgICAgICAgIHJldHVybiAt MTsKICAgICAgaWYgKHBhY2tpbmctPlJvd0xlbmd0aCA9PSAwKSB7CiAgICAgICAgIGJ5dGVzUGVy Um93ID0gYnl0ZXNQZXJQaXhlbCAqIHdpZHRoOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAg ICBieXRlc1BlclJvdyA9IGJ5dGVzUGVyUGl4ZWwgKiBwYWNraW5nLT5Sb3dMZW5ndGg7CiAgICAg IH0KICAgICAgcmVtYWluZGVyID0gYnl0ZXNQZXJSb3cgJSBwYWNraW5nLT5BbGlnbm1lbnQ7CiAg ICAgIGlmIChyZW1haW5kZXIgPiAwKQogICAgICAgICBieXRlc1BlclJvdyArPSAocGFja2luZy0+ QWxpZ25tZW50IC0gcmVtYWluZGVyKTsKICAgICAgaWYgKHBhY2tpbmctPkludmVydCkKICAgICAg ICAgYnl0ZXNQZXJSb3cgPSAtYnl0ZXNQZXJSb3c7CiAgICAgIHJldHVybiBieXRlc1BlclJvdzsK ICAgfQp9CgoKCgoKCgpHTGludApfbWVzYV9pbWFnZV9pbWFnZV9zdHJpZGUoIGNvbnN0IHN0cnVj dCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGludCB3aWR0aCwgR0xpbnQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlICkKewogICA7CiAgIDsKCiAgIHsKICAgICAgY29uc3Qg R0xpbnQgYnl0ZXNQZXJQaXhlbCA9IF9tZXNhX2J5dGVzX3Blcl9waXhlbChmb3JtYXQsIHR5cGUp OwogICAgICBHTGludCBieXRlc1BlclJvdywgYnl0ZXNQZXJJbWFnZSwgcmVtYWluZGVyOwoKICAg ICAgaWYgKGJ5dGVzUGVyUGl4ZWwgPD0gMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgICBpZiAo cGFja2luZy0+Um93TGVuZ3RoID09IDApIHsKICAgICAgICAgYnl0ZXNQZXJSb3cgPSBieXRlc1Bl clBpeGVsICogd2lkdGg7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgIGJ5dGVzUGVyUm93 ID0gYnl0ZXNQZXJQaXhlbCAqIHBhY2tpbmctPlJvd0xlbmd0aDsKICAgICAgfQogICAgICByZW1h aW5kZXIgPSBieXRlc1BlclJvdyAlIHBhY2tpbmctPkFsaWdubWVudDsKICAgICAgaWYgKHJlbWFp bmRlciA+IDApCiAgICAgICAgIGJ5dGVzUGVyUm93ICs9IChwYWNraW5nLT5BbGlnbm1lbnQgLSBy ZW1haW5kZXIpOwoKICAgICAgaWYgKHBhY2tpbmctPkltYWdlSGVpZ2h0ID09IDApCiAgICAgICAg IGJ5dGVzUGVySW1hZ2UgPSBieXRlc1BlclJvdyAqIGhlaWdodDsKICAgICAgZWxzZQogICAgICAg ICBieXRlc1BlckltYWdlID0gYnl0ZXNQZXJSb3cgKiBwYWNraW5nLT5JbWFnZUhlaWdodDsKCiAg ICAgIHJldHVybiBieXRlc1BlckltYWdlOwogICB9Cn0KIyA2MjEgImltYWdlLmMiCnZvaWQKX21l c2FfdW5wYWNrX3BvbHlnb25fc3RpcHBsZSggY29uc3QgR0x1Ynl0ZSAqcGF0dGVybiwgR0x1aW50 IGRlc3RbMzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf cGl4ZWxzdG9yZV9hdHRyaWIgKnVucGFja2luZyApCnsKICAgR0x1Ynl0ZSAqcHRybiA9IChHTHVi eXRlICopIF9tZXNhX3VucGFja19iaXRtYXAoIDMyLCAzMiwgcGF0dGVybiwgdW5wYWNraW5nICk7 CiAgIGlmIChwdHJuKSB7CgoKCiAgICAgIEdMdWJ5dGUgKnAgPSBwdHJuOwogICAgICBHTGludCBp OwogICAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgewogICAgICAgICBkZXN0W2ldID0gKHBb MF0gPDwgMjQpCiAgICAgICAgICAgICAgICAgfCAocFsxXSA8PCAxNikKICAgICAgICAgICAgICAg ICB8IChwWzJdIDw8IDgpCiAgICAgICAgICAgICAgICAgfCAocFszXSApOwogICAgICAgICBwICs9 IDQ7CiAgICAgIH0KICAgICAgX21lc2FfZnJlZShwdHJuKTsKICAgfQp9CgoKCgoKCgp2b2lkCl9t ZXNhX3BhY2tfcG9seWdvbl9zdGlwcGxlKCBjb25zdCBHTHVpbnQgcGF0dGVyblszMl0sIEdMdWJ5 dGUgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4 ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcgKQp7CgoKCiAgIEdMdWJ5dGUgcHRyblszMio0XTsKICAg R0xpbnQgaTsKICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKICAgICAgcHRybltpICogNCAr IDBdID0gKEdMdWJ5dGUpICgocGF0dGVybltpXSA+PiAyNCkgJiAweGZmKTsKICAgICAgcHRybltp ICogNCArIDFdID0gKEdMdWJ5dGUpICgocGF0dGVybltpXSA+PiAxNikgJiAweGZmKTsKICAgICAg cHRybltpICogNCArIDJdID0gKEdMdWJ5dGUpICgocGF0dGVybltpXSA+PiA4ICkgJiAweGZmKTsK ICAgICAgcHRybltpICogNCArIDNdID0gKEdMdWJ5dGUpICgocGF0dGVybltpXSApICYgMHhmZik7 CiAgIH0KCiAgIF9tZXNhX3BhY2tfYml0bWFwKDMyLCAzMiwgcHRybiwgZGVzdCwgcGFja2luZyk7 Cn0KCgoKCgoKR0x2b2lkICoKX21lc2FfdW5wYWNrX2JpdG1hcCggR0xpbnQgd2lkdGgsIEdMaW50 IGhlaWdodCwgY29uc3QgR0x1Ynl0ZSAqcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnBhY2tpbmcgKQp7CiAgIEdMaW50IGJ5dGVz LCByb3csIHdpZHRoX2luX2J5dGVzOwogICBHTHVieXRlICpidWZmZXIsICpkc3Q7CgogICBpZiAo IXBpeGVscykKICAgICAgcmV0dXJuIDA7CgoKICAgYnl0ZXMgPSAoKHdpZHRoICsgNykgLyA4ICog aGVpZ2h0KTsKICAgYnVmZmVyID0gKEdMdWJ5dGUgKikgX21lc2FfbWFsbG9jKGJ5dGVzKTsKICAg aWYgKCFidWZmZXIpCiAgICAgIHJldHVybiAwOwoKCiAgIHdpZHRoX2luX2J5dGVzID0gKCAod2lk dGgpICUgKDgpID09IDAgPyAod2lkdGgpLyg4KSA6ICh3aWR0aCkvKDgpKzEgKTsKICAgZHN0ID0g YnVmZmVyOwogICBmb3IgKHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93KyspIHsKICAgICAgY29u c3QgR0x1Ynl0ZSAqc3JjID0gKGNvbnN0IEdMdWJ5dGUgKikKICAgICAgICAgX21lc2FfaW1hZ2Vf YWRkcmVzcyhwYWNraW5nLCBwaXhlbHMsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgxOTAwLCAweDFBMDAsIDAsIHJvdywgMCk7CiAgICAgIGlmICghc3JjKSB7 CiAgICAgICAgIF9tZXNhX2ZyZWUoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0K CiAgICAgIGlmIChwYWNraW5nLT5Ta2lwUGl4ZWxzID09IDApIHsKICAgICAgICAgX21lc2FfbWVt Y3B5KGRzdCwgc3JjLCB3aWR0aF9pbl9ieXRlcyk7CiAgICAgICAgIGlmIChwYWNraW5nLT5Mc2JG aXJzdCkgewogICAgICAgICAgICBmbGlwX2J5dGVzKCBkc3QsIHdpZHRoX2luX2J5dGVzICk7CiAg ICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKCiAgICAgICAgIEdMaW50IGk7CiAgICAgICAg IGlmIChwYWNraW5nLT5Mc2JGaXJzdCkgewogICAgICAgICAgICBHTHVieXRlIHNyY01hc2sgPSAx IDw8IChwYWNraW5nLT5Ta2lwUGl4ZWxzICYgMHg3KTsKICAgICAgICAgICAgR0x1Ynl0ZSBkc3RN YXNrID0gMTI4OwogICAgICAgICAgICBjb25zdCBHTHVieXRlICpzID0gc3JjOwogICAgICAgICAg ICBHTHVieXRlICpkID0gZHN0OwogICAgICAgICAgICAqZCA9IDA7CiAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7CiAgICAgICAgICAgICAgIGlmICgqcyAmIHNyY01hc2sp IHsKICAgICAgICAgICAgICAgICAgKmQgfD0gZHN0TWFzazsKICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICBpZiAoc3JjTWFzayA9PSAxMjgpIHsKICAgICAgICAgICAgICAgICAgc3JjTWFz ayA9IDE7CiAgICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3JjTWFzayA9IHNyY01hc2sgPDwgMTsKICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoZHN0TWFzayA9PSAxKSB7CiAgICAgICAg ICAgICAgICAgIGRzdE1hc2sgPSAxMjg7CiAgICAgICAgICAgICAgICAgIGQrKzsKICAgICAgICAg ICAgICAgICAgKmQgPSAwOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGVsc2Ugewog ICAgICAgICAgICAgICAgICBkc3RNYXNrID0gZHN0TWFzayA+PiAxOwogICAgICAgICAgICAgICB9 CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgR0x1 Ynl0ZSBzcmNNYXNrID0gMTI4ID4+IChwYWNraW5nLT5Ta2lwUGl4ZWxzICYgMHg3KTsKICAgICAg ICAgICAgR0x1Ynl0ZSBkc3RNYXNrID0gMTI4OwogICAgICAgICAgICBjb25zdCBHTHVieXRlICpz ID0gc3JjOwogICAgICAgICAgICBHTHVieXRlICpkID0gZHN0OwogICAgICAgICAgICAqZCA9IDA7 CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7CiAgICAgICAgICAgICAg IGlmICgqcyAmIHNyY01hc2spIHsKICAgICAgICAgICAgICAgICAgKmQgfD0gZHN0TWFzazsKICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoc3JjTWFzayA9PSAxKSB7CiAgICAgICAg ICAgICAgICAgIHNyY01hc2sgPSAxMjg7CiAgICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3JjTWFzayA9 IHNyY01hc2sgPj4gMTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoZHN0TWFz ayA9PSAxKSB7CiAgICAgICAgICAgICAgICAgIGRzdE1hc2sgPSAxMjg7CiAgICAgICAgICAgICAg ICAgIGQrKzsKICAgICAgICAgICAgICAgICAgKmQgPSAwOwogICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBkc3RNYXNrID0gZHN0TWFzayA+PiAx OwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICB9CiAgICAg IGRzdCArPSB3aWR0aF9pbl9ieXRlczsKICAgfQoKICAgcmV0dXJuIGJ1ZmZlcjsKfQoKCgoKCnZv aWQKX21lc2FfcGFja19iaXRtYXAoIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQsIGNvbnN0IEdM dWJ5dGUgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgKmRlc3QsIGNvbnN0IHN0 cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZyApCnsKICAgR0xpbnQgcm93LCB3aWR0 aF9pbl9ieXRlczsKICAgY29uc3QgR0x1Ynl0ZSAqc3JjOwoKICAgaWYgKCFzb3VyY2UpCiAgICAg IHJldHVybjsKCiAgIHdpZHRoX2luX2J5dGVzID0gKCAod2lkdGgpICUgKDgpID09IDAgPyAod2lk dGgpLyg4KSA6ICh3aWR0aCkvKDgpKzEgKTsKICAgc3JjID0gc291cmNlOwogICBmb3IgKHJvdyA9 IDA7IHJvdyA8IGhlaWdodDsgcm93KyspIHsKICAgICAgR0x1Ynl0ZSAqZHN0ID0gKEdMdWJ5dGUg KikgX21lc2FfaW1hZ2VfYWRkcmVzcyggcGFja2luZywgZGVzdCwKICAgICAgICAgICAgICAgICAg ICAgICB3aWR0aCwgaGVpZ2h0LCAweDE5MDAsIDB4MUEwMCwgMCwgcm93LCAwICk7CiAgICAgIGlm ICghZHN0KQogICAgICAgICByZXR1cm47CgogICAgICBpZiAocGFja2luZy0+U2tpcFBpeGVscyA9 PSAwKSB7CiAgICAgICAgIF9tZXNhX21lbWNweShkc3QsIHNyYywgd2lkdGhfaW5fYnl0ZXMpOwog ICAgICAgICBpZiAocGFja2luZy0+THNiRmlyc3QpIHsKICAgICAgICAgICAgZmxpcF9ieXRlcygg ZHN0LCB3aWR0aF9pbl9ieXRlcyApOwogICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7Cgog ICAgICAgICBHTGludCBpOwogICAgICAgICBpZiAocGFja2luZy0+THNiRmlyc3QpIHsKICAgICAg ICAgICAgR0x1Ynl0ZSBzcmNNYXNrID0gMSA8PCAocGFja2luZy0+U2tpcFBpeGVscyAmIDB4Nyk7 CiAgICAgICAgICAgIEdMdWJ5dGUgZHN0TWFzayA9IDEyODsKICAgICAgICAgICAgY29uc3QgR0x1 Ynl0ZSAqcyA9IHNyYzsKICAgICAgICAgICAgR0x1Ynl0ZSAqZCA9IGRzdDsKICAgICAgICAgICAg KmQgPSAwOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewogICAgICAg ICAgICAgICBpZiAoKnMgJiBzcmNNYXNrKSB7CiAgICAgICAgICAgICAgICAgICpkIHw9IGRzdE1h c2s7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYgKHNyY01hc2sgPT0gMTI4KSB7 CiAgICAgICAgICAgICAgICAgIHNyY01hc2sgPSAxOwogICAgICAgICAgICAgICAgICBzKys7CiAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNy Y01hc2sgPSBzcmNNYXNrIDw8IDE7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYg KGRzdE1hc2sgPT0gMSkgewogICAgICAgICAgICAgICAgICBkc3RNYXNrID0gMTI4OwogICAgICAg ICAgICAgICAgICBkKys7CiAgICAgICAgICAgICAgICAgICpkID0gMDsKICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgZHN0TWFzayA9IGRzdE1h c2sgPj4gMTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg ICAgZWxzZSB7CiAgICAgICAgICAgIEdMdWJ5dGUgc3JjTWFzayA9IDEyOCA+PiAocGFja2luZy0+ U2tpcFBpeGVscyAmIDB4Nyk7CiAgICAgICAgICAgIEdMdWJ5dGUgZHN0TWFzayA9IDEyODsKICAg ICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqcyA9IHNyYzsKICAgICAgICAgICAgR0x1Ynl0ZSAqZCA9 IGRzdDsKICAgICAgICAgICAgKmQgPSAwOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lk dGg7IGkrKykgewogICAgICAgICAgICAgICBpZiAoKnMgJiBzcmNNYXNrKSB7CiAgICAgICAgICAg ICAgICAgICpkIHw9IGRzdE1hc2s7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYg KHNyY01hc2sgPT0gMSkgewogICAgICAgICAgICAgICAgICBzcmNNYXNrID0gMTI4OwogICAgICAg ICAgICAgICAgICBzKys7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZWxzZSB7CiAg ICAgICAgICAgICAgICAgIHNyY01hc2sgPSBzcmNNYXNrID4+IDE7CiAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgaWYgKGRzdE1hc2sgPT0gMSkgewogICAgICAgICAgICAgICAgICBkc3RN YXNrID0gMTI4OwogICAgICAgICAgICAgICAgICBkKys7CiAgICAgICAgICAgICAgICAgICpkID0g MDsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg ICAgZHN0TWFzayA9IGRzdE1hc2sgPj4gMTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CiAgICAgICAgIH0KICAgICAgfQogICAgICBzcmMgKz0gd2lkdGhfaW5fYnl0ZXM7CiAgIH0KfQoj IDg2OCAiaW1hZ2UuYyIKdm9pZApfbWVzYV9wYWNrX2Zsb2F0X3JnYmFfc3BhbiggR0xjb250ZXh0 ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3QgR0xmbG9h dCByZ2JhSW5bXVs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RGb3Jt YXQsIEdMZW51bSBkc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpk c3RBZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVs c3RvcmVfYXR0cmliICpkc3RQYWNraW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1 aW50IHRyYW5zZmVyT3BzICkKewogICBjb25zdCBHTGludCBjb21wcyA9IF9tZXNhX2NvbXBvbmVu dHNfaW5fZm9ybWF0KGRzdEZvcm1hdCk7CiAgIEdMZmxvYXQgbHVtaW5hbmNlWzIwNDhdOwogICBH TGZsb2F0ICgqcmdiYSlbNF07CiAgIEdMdWludCBpOwoKICAgaWYgKHRyYW5zZmVyT3BzKSB7Cgog ICAgICBHTGZsb2F0IHJnYmFDb3B5WzIwNDhdWzRdOwogICAgICBkbyB7fSB3aGlsZSgwKTsKCiAg ICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgcmdiYUNvcHlbaV1bMF0gPSBy Z2JhSW5baV1bMF07CiAgICAgICAgIHJnYmFDb3B5W2ldWzFdID0gcmdiYUluW2ldWzFdOwogICAg ICAgICByZ2JhQ29weVtpXVsyXSA9IHJnYmFJbltpXVsyXTsKICAgICAgICAgcmdiYUNvcHlbaV1b M10gPSByZ2JhSW5baV1bM107CiAgICAgIH0KCiAgICAgIHJnYmEgPSAoR0xmbG9hdCAoKilbNF0p IHJnYmFDb3B5OwoKCiAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4MSkgewogICAgICAgICBfbWVz YV9zY2FsZV9hbmRfYmlhc19yZ2JhKGN0eCwgbiwgcmdiYSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHgtPlBpeGVsLlJlZFNjYWxlLCBjdHgtPlBpeGVsLkdyZWVuU2NhbGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5QaXhlbC5CbHVlU2NhbGUs IGN0eC0+UGl4ZWwuQWxwaGFTY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdHgtPlBpeGVsLlJlZEJpYXMsIGN0eC0+UGl4ZWwuR3JlZW5CaWFzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuQmx1ZUJpYXMsIGN0eC0+UGl4ZWwuQWxw aGFCaWFzKTsKICAgICAgfQoKICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHg0KSB7CiAgICAgICAg IF9tZXNhX21hcF9yZ2JhKCBjdHgsIG4sIHJnYmEgKTsKICAgICAgfQoKICAgICAgaWYgKHRyYW5z ZmVyT3BzICYgMHg4KSB7CiAgICAgICAgIF9tZXNhX2xvb2t1cF9yZ2JhKCZjdHgtPkNvbG9yVGFi bGUsIG4sIHJnYmEpOwogICAgICB9CgogICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDEwKSB7Cgog ICAgICB9CgogICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDIwKSB7CiAgICAgICAgIF9tZXNhX3Nj YWxlX2FuZF9iaWFzX3JnYmEoY3R4LCBuLCByZ2JhLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0aW9uU2NhbGVbMF0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5QaXhlbC5Qb3N0Q29udm9sdXRpb25TY2FsZVsx XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252 b2x1dGlvblNjYWxlWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+ UGl4ZWwuUG9zdENvbnZvbHV0aW9uU2NhbGVbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R4LT5QaXhlbC5Qb3N0Q29udm9sdXRpb25CaWFzWzBdLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0aW9uQmlhc1sxXSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252b2x1 dGlvbkJpYXNbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5QaXhl bC5Qb3N0Q29udm9sdXRpb25CaWFzWzNdKTsKICAgICAgfQoKICAgICAgaWYgKHRyYW5zZmVyT3Bz ICYgMHg0MCkgewogICAgICAgICBfbWVzYV9sb29rdXBfcmdiYSgmY3R4LT5Qb3N0Q29udm9sdXRp b25Db2xvclRhYmxlLCBuLCByZ2JhKTsKICAgICAgfQoKICAgICAgaWYgKHRyYW5zZmVyT3BzICYg MHg4MCkgewogICAgICAgICBfbWVzYV90cmFuc2Zvcm1fcmdiYShjdHgsIG4sIHJnYmEpOwogICAg ICB9CgogICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDEwMCkgewogICAgICAgICBfbWVzYV9sb29r dXBfcmdiYSgmY3R4LT5Qb3N0Q29sb3JNYXRyaXhDb2xvclRhYmxlLCBuLCByZ2JhKTsKICAgICAg fQoKICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgyMDApIHsKICAgICAgICAgX21lc2FfdXBkYXRl X2hpc3RvZ3JhbShjdHgsIG4sIChjb25zdCBHTGZsb2F0ICgqKVs0XSkgcmdiYSk7CiAgICAgIH0K CiAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4NDAwKSB7CiAgICAgICAgIF9tZXNhX3VwZGF0ZV9t aW5tYXgoY3R4LCBuLCAoY29uc3QgR0xmbG9hdCAoKilbNF0pIHJnYmEpOwogICAgICAgICBpZiAo Y3R4LT5NaW5NYXguU2luaykgewogICAgICAgICAgICA7CiAgICAgICAgICAgIHJldHVybjsKICAg ICAgICAgfQogICAgICB9CiAgICAgIDsKICAgfQogICBlbHNlIHsKCiAgICAgIHJnYmEgPSAoR0xm bG9hdCAoKilbNF0pIHJnYmFJbjsKICAgfQoKCgoKICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDkg fHwgZHN0Rm9ybWF0ID09IDB4MTkwQSkgewogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7 CiAgICAgICAgIEdMZmxvYXQgc3VtID0gcmdiYVtpXVswXSArIHJnYmFbaV1bMV0gKyByZ2JhW2ld WzJdOwoKCgogICAgICAgICBsdW1pbmFuY2VbaV0gPSAoIChzdW0pPCgwLjBGKSA/ICgwLjBGKSA6 ICgoc3VtKT4oMS4wRikgPyAoMS4wRikgOiAoc3VtKSkgKTsKCiAgICAgIH0KICAgfQoKCgoKICAg c3dpdGNoIChkc3RUeXBlKSB7CiAgICAgIGNhc2UgMHgxNDAxOgogICAgICAgICB7CiAgICAgICAg ICAgIEdMdWJ5dGUgKmRzdCA9IChHTHVieXRlICopIGRzdEFkZHI7CiAgICAgICAgICAgIHN3aXRj aCAoZHN0Rm9ybWF0KSB7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTAzOgogICAgICAgICAgICAg ICAgICBmb3IgKGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoKEdM dWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzBdKSAqIDI1NS4wRikpOwogICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDQ6CiAgICAgICAgICAgICAgICAgIGZv ciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoR0x1Ynl0ZSkg KEdMaW50KSAoKHJnYmFbaV1bMV0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNToKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7 aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0W2ldID0gKChHTHVieXRlKSAoR0xpbnQp ICgocmdiYVtpXVsyXSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgIGNhc2UgMHgxOTA2OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsr KQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2Jh W2ldWzNdKSAqIDI1NS4wRikpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgY2FzZSAweDE5MDk6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAg ICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoR0x1Ynl0ZSkgKEdMaW50KSAoKGx1bWluYW5jZVtp XSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNh c2UgMHgxOTBBOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAg ICAgICAgICAgICAgIGRzdFtpKjIrMF0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChsdW1pbmFuY2Vb aV0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjIrMV0gPSAoKEdMdWJ5 dGUpIChHTGludCkgKChyZ2JhW2ldWzNdKSAqIDI1NS4wRikpOwogICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNzoKICAg ICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBk c3RbaSozKzBdID0gKChHTHVieXRlKSAoR0xpbnQpICgocmdiYVtpXVswXSkgKiAyNTUuMEYpKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysxXSA9ICgoR0x1Ynl0ZSkgKEdMaW50KSAoKHJn YmFbaV1bMV0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMl0gPSAo KEdMdWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzJdKSAqIDI1NS4wRikpOwogICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkw ODoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAg ICAgICBkc3RbaSo0KzBdID0gKChHTHVieXRlKSAoR0xpbnQpICgocmdiYVtpXVswXSkgKiAyNTUu MEYpKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsxXSA9ICgoR0x1Ynl0ZSkgKEdMaW50 KSAoKHJnYmFbaV1bMV0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQr Ml0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzJdKSAqIDI1NS4wRikpOwogICAgICAg ICAgICAgICAgICAgICBkc3RbaSo0KzNdID0gKChHTHVieXRlKSAoR0xpbnQpICgocmdiYVtpXVsz XSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgY2FzZSAweDgwRTA6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0w O2k8bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMyswXSA9ICgoR0x1Ynl0ZSkg KEdMaW50KSAoKHJnYmFbaV1bMl0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRz dFtpKjMrMV0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDI1NS4wRikpOwog ICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzJdID0gKChHTHVieXRlKSAoR0xpbnQpICgocmdi YVtpXVswXSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDgwRTE6CiAgICAgICAgICAgICAgICAgIGZv ciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCswXSA9ICgoR0x1 Ynl0ZSkgKEdMaW50KSAoKHJnYmFbaV1bMl0pICogMjU1LjBGKSk7CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjQrMV0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDI1NS4w RikpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzJdID0gKChHTHVieXRlKSAoR0xpbnQp ICgocmdiYVtpXVswXSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsz XSA9ICgoR0x1Ynl0ZSkgKEdMaW50KSAoKHJnYmFbaV1bM10pICogMjU1LjBGKSk7CiAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2Ug MHg4MDAwOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAg ICAgICAgICAgIGRzdFtpKjQrMF0gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2JhW2ldWzNdKSAq IDI1NS4wRikpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzFdID0gKChHTHVieXRlKSAo R0xpbnQpICgocmdiYVtpXVsyXSkgKiAyNTUuMEYpKTsKICAgICAgICAgICAgICAgICAgICAgZHN0 W2kqNCsyXSA9ICgoR0x1Ynl0ZSkgKEdMaW50KSAoKHJnYmFbaV1bMV0pICogMjU1LjBGKSk7CiAg ICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrM10gPSAoKEdMdWJ5dGUpIChHTGludCkgKChyZ2Jh W2ldWzBdKSAqIDI1NS4wRikpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICBfbWVzYV9w cm9ibGVtKGN0eCwgImJhZCBmb3JtYXQgaW4gX21lc2FfcGFja19yZ2JhX3NwYW5cbiIpOwogICAg ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxNDAwOgog ICAgICAgICB7CiAgICAgICAgICAgIEdMYnl0ZSAqZHN0ID0gKEdMYnl0ZSAqKSBkc3RBZGRyOwog ICAgICAgICAgICBzd2l0Y2ggKGRzdEZvcm1hdCkgewogICAgICAgICAgICAgICBjYXNlIDB4MTkw MzoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAg ICAgZHN0W2ldID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzBdKSkpIC0gMSkgLyAy ICk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNDoK ICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAg ZHN0W2ldID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzFdKSkpIC0gMSkgLyAyICk7 CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNToKICAg ICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0 W2ldID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzJdKSkpIC0gMSkgLyAyICk7CiAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNjoKICAgICAg ICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0W2ld ID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzNdKSkpIC0gMSkgLyAyICk7CiAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwOToKICAgICAgICAg ICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0W2ldID0g KCAoKChHTGludCkgKDI1NS4wRiAqIChsdW1pbmFuY2VbaV0pKSkgLSAxKSAvIDIgKTsKICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTBBOgogICAgICAgICAg ICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjIr MF0gPSAoICgoKEdMaW50KSAoMjU1LjBGICogKGx1bWluYW5jZVtpXSkpKSAtIDEpIC8gMiApOwog ICAgICAgICAgICAgICAgICAgICBkc3RbaSoyKzFdID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChy Z2JhW2ldWzNdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA3OgogICAgICAgICAgICAgICAg ICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMF0gPSAo ICgoKEdMaW50KSAoMjU1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAg ICAgICAgICAgICAgZHN0W2kqMysxXSA9ICggKCgoR0xpbnQpICgyNTUuMEYgKiAocmdiYVtpXVsx XSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzJdID0gKCAoKChH TGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzJdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA4 OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjQrMF0gPSAoICgoKEdMaW50KSAoMjU1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAx KSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsxXSA9ICggKCgoR0xpbnQpICgy NTUuMEYgKiAocmdiYVtpXVsxXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICAgICBk c3RbaSo0KzJdID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2JhW2ldWzJdKSkpIC0gMSkgLyAy ICk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrM10gPSAoICgoKEdMaW50KSAoMjU1LjBG ICogKHJnYmFbaV1bM10pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDgwRTA6CiAgICAgICAgICAg ICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysw XSA9ICggKCgoR0xpbnQpICgyNTUuMEYgKiAocmdiYVtpXVsyXSkpKSAtIDEpIC8gMiApOwogICAg ICAgICAgICAgICAgICAgICBkc3RbaSozKzFdID0gKCAoKChHTGludCkgKDI1NS4wRiAqIChyZ2Jh W2ldWzFdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMl0gPSAo ICgoKEdMaW50KSAoMjU1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAw eDgwRTE6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAg ICAgICAgICAgZHN0W2kqNCswXSA9ICggKCgoR0xpbnQpICgyNTUuMEYgKiAocmdiYVtpXVsyXSkp KSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzFdID0gKCAoKChHTGlu dCkgKDI1NS4wRiAqIChyZ2JhW2ldWzFdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjQrMl0gPSAoICgoKEdMaW50KSAoMjU1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAx KSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCszXSA9ICggKCgoR0xpbnQpICgy NTUuMEYgKiAocmdiYVtpXVszXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgIGNhc2UgMHg4MDAwOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47 aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMF0gPSAoICgoKEdMaW50KSAoMjU1 LjBGICogKHJnYmFbaV1bM10pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0 W2kqNCsxXSA9ICggKCgoR0xpbnQpICgyNTUuMEYgKiAocmdiYVtpXVsyXSkpKSAtIDEpIC8gMiAp OwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzJdID0gKCAoKChHTGludCkgKDI1NS4wRiAq IChyZ2JhW2ldWzFdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQr M10gPSAoICgoKEdMaW50KSAoMjU1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAxKSAvIDIgKTsKICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgX21lc2FfcHJvYmxlbShjdHgsICJiYWQgZm9ybWF0 IGluIF9tZXNhX3BhY2tfcmdiYV9zcGFuXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAg ICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwMzoKICAgICAgICAgewogICAgICAgICAgICBH THVzaG9ydCAqZHN0ID0gKEdMdXNob3J0ICopIGRzdEFkZHI7CiAgICAgICAgICAgIHN3aXRjaCAo ZHN0Rm9ybWF0KSB7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTAzOgogICAgICAgICAgICAgICAg ICBmb3IgKGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoKEdMdXNo b3J0KSAoR0xpbnQpICgocmdiYVtpXVswXSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDQ6CiAgICAgICAgICAgICAgICAgIGZv ciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoR0x1c2hvcnQp IChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDY1NTM1LjBGKSk7CiAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNToKICAgICAgICAgICAgICAgICAgZm9yIChp PTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0W2ldID0gKChHTHVzaG9ydCkgKEdM aW50KSAoKHJnYmFbaV1bMl0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA2OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtp PG47aSsrKQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoKEdMdXNob3J0KSAoR0xpbnQp ICgocmdiYVtpXVszXSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgICAgY2FzZSAweDE5MDk6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtp KyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoR0x1c2hvcnQpIChHTGludCkgKChs dW1pbmFuY2VbaV0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgIGNhc2UgMHgxOTBBOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsr KSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjIrMF0gPSAoKEdMdXNob3J0KSAoR0xpbnQp ICgobHVtaW5hbmNlW2ldKSAqIDY1NTM1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtp KjIrMV0gPSAoKEdMdXNob3J0KSAoR0xpbnQpICgocmdiYVtpXVszXSkgKiA2NTUzNS4wRikpOwog ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICBjYXNlIDB4MTkwNzoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAg ICAgICAgICAgICAgICAgICBkc3RbaSozKzBdID0gKChHTHVzaG9ydCkgKEdMaW50KSAoKHJnYmFb aV1bMF0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysxXSA9ICgo R0x1c2hvcnQpIChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDY1NTM1LjBGKSk7CiAgICAgICAgICAg ICAgICAgICAgIGRzdFtpKjMrMl0gPSAoKEdMdXNob3J0KSAoR0xpbnQpICgocmdiYVtpXVsyXSkg KiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgICBjYXNlIDB4MTkwODoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7 aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzBdID0gKChHTHVzaG9ydCkg KEdMaW50KSAoKHJnYmFbaV1bMF0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgICAg ZHN0W2kqNCsxXSA9ICgoR0x1c2hvcnQpIChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDY1NTM1LjBG KSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMl0gPSAoKEdMdXNob3J0KSAoR0xpbnQp ICgocmdiYVtpXVsyXSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0 KzNdID0gKChHTHVzaG9ydCkgKEdMaW50KSAoKHJnYmFbaV1bM10pICogNjU1MzUuMEYpKTsKICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg Y2FzZSAweDgwRTA6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAg ICAgICAgICAgICAgICAgZHN0W2kqMyswXSA9ICgoR0x1c2hvcnQpIChHTGludCkgKChyZ2JhW2ld WzJdKSAqIDY1NTM1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMV0gPSAoKEdM dXNob3J0KSAoR0xpbnQpICgocmdiYVtpXVsxXSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAg ICAgICAgICBkc3RbaSozKzJdID0gKChHTHVzaG9ydCkgKEdMaW50KSAoKHJnYmFbaV1bMF0pICog NjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgY2FzZSAweDgwRTE6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8 bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCswXSA9ICgoR0x1c2hvcnQpIChH TGludCkgKChyZ2JhW2ldWzJdKSAqIDY1NTM1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRz dFtpKjQrMV0gPSAoKEdMdXNob3J0KSAoR0xpbnQpICgocmdiYVtpXVsxXSkgKiA2NTUzNS4wRikp OwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzJdID0gKChHTHVzaG9ydCkgKEdMaW50KSAo KHJnYmFbaV1bMF0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsz XSA9ICgoR0x1c2hvcnQpIChHTGludCkgKChyZ2JhW2ldWzNdKSAqIDY1NTM1LjBGKSk7CiAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNh c2UgMHg4MDAwOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAg ICAgICAgICAgICAgIGRzdFtpKjQrMF0gPSAoKEdMdXNob3J0KSAoR0xpbnQpICgocmdiYVtpXVsz XSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzFdID0gKChHTHVz aG9ydCkgKEdMaW50KSAoKHJnYmFbaV1bMl0pICogNjU1MzUuMEYpKTsKICAgICAgICAgICAgICAg ICAgICAgZHN0W2kqNCsyXSA9ICgoR0x1c2hvcnQpIChHTGludCkgKChyZ2JhW2ldWzFdKSAqIDY1 NTM1LjBGKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrM10gPSAoKEdMdXNob3J0KSAo R0xpbnQpICgocmdiYVtpXVswXSkgKiA2NTUzNS4wRikpOwogICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg ICAgICAgICBfbWVzYV9wcm9ibGVtKGN0eCwgImJhZCBmb3JtYXQgaW4gX21lc2FfcGFja19yZ2Jh X3NwYW5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkc3RQYWNraW5nLT5Td2Fw Qnl0ZXMpIHsKICAgICAgICAgICAgICAgX21lc2Ffc3dhcDIoIChHTHVzaG9ydCAqKSBkc3QsIG4g KiBjb21wcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAg Y2FzZSAweDE0MDI6CiAgICAgICAgIHsKICAgICAgICAgICAgR0xzaG9ydCAqZHN0ID0gKEdMc2hv cnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgc3dpdGNoIChkc3RGb3JtYXQpIHsKICAgICAgICAg ICAgICAgY2FzZSAweDE5MDM6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAg ICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2Jh W2ldWzBdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgICBjYXNlIDB4MTkwNDoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAg ICAgICAgICAgICAgICAgICAgZHN0W2ldID0gKCAoKChHTGludCkgKDY1NTM1LjBGICogKHJnYmFb aV1bMV0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgIGNhc2UgMHgxOTA1OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKQogICAg ICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoICgoKEdMaW50KSAoNjU1MzUuMEYgKiAocmdiYVtp XVsyXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgY2FzZSAweDE5MDY6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAg ICAgICAgICAgICAgICAgIGRzdFtpXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2JhW2ld WzNdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg ICBjYXNlIDB4MTkwOToKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAg ICAgICAgICAgICAgICAgZHN0W2ldID0gKCAoKChHTGludCkgKDY1NTM1LjBGICogKGx1bWluYW5j ZVtpXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgY2FzZSAweDE5MEE6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAg ICAgICAgICAgICAgICAgICAgZHN0W2kqMiswXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChs dW1pbmFuY2VbaV0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMisx XSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2JhW2ldWzNdKSkpIC0gMSkgLyAyICk7CiAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg IGNhc2UgMHgxOTA3OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAg ICAgICAgICAgICAgICAgIGRzdFtpKjMrMF0gPSAoICgoKEdMaW50KSAoNjU1MzUuMEYgKiAocmdi YVtpXVswXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzFdID0g KCAoKChHTGludCkgKDY1NTM1LjBGICogKHJnYmFbaV1bMV0pKSkgLSAxKSAvIDIgKTsKICAgICAg ICAgICAgICAgICAgICAgZHN0W2kqMysyXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2Jh W2ldWzJdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA4OgogICAgICAgICAgICAgICAgICBm b3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMF0gPSAoICgo KEdMaW50KSAoNjU1MzUuMEYgKiAocmdiYVtpXVswXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAg ICAgICAgICAgICBkc3RbaSo0KzFdID0gKCAoKChHTGludCkgKDY1NTM1LjBGICogKHJnYmFbaV1b MV0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsyXSA9ICggKCgo R0xpbnQpICg2NTUzNS4wRiAqIChyZ2JhW2ldWzJdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAg ICAgICAgICAgIGRzdFtpKjQrM10gPSAoICgoKEdMaW50KSAoNjU1MzUuMEYgKiAocmdiYVtpXVsz XSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4ODBFMDoKICAgICAgICAgICAgICAgICAgZm9yIChp PTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzBdID0gKCAoKChHTGlu dCkgKDY1NTM1LjBGICogKHJnYmFbaV1bMl0pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAg ICAgICAgZHN0W2kqMysxXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2JhW2ldWzFdKSkp IC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMl0gPSAoICgoKEdMaW50 KSAoNjU1MzUuMEYgKiAocmdiYVtpXVswXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4ODBFMToK ICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAg ICBkc3RbaSo0KzBdID0gKCAoKChHTGludCkgKDY1NTM1LjBGICogKHJnYmFbaV1bMl0pKSkgLSAx KSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsxXSA9ICggKCgoR0xpbnQpICg2 NTUzNS4wRiAqIChyZ2JhW2ldWzFdKSkpIC0gMSkgLyAyICk7CiAgICAgICAgICAgICAgICAgICAg IGRzdFtpKjQrMl0gPSAoICgoKEdMaW50KSAoNjU1MzUuMEYgKiAocmdiYVtpXVswXSkpKSAtIDEp IC8gMiApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzNdID0gKCAoKChHTGludCkgKDY1 NTM1LjBGICogKHJnYmFbaV1bM10pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICBjYXNlIDB4ODAwMDoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxu O2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzBdID0gKCAoKChHTGludCkgKDY1 NTM1LjBGICogKHJnYmFbaV1bM10pKSkgLSAxKSAvIDIgKTsKICAgICAgICAgICAgICAgICAgICAg ZHN0W2kqNCsxXSA9ICggKCgoR0xpbnQpICg2NTUzNS4wRiAqIChyZ2JhW2ldWzJdKSkpIC0gMSkg LyAyICk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMl0gPSAoICgoKEdMaW50KSAoNjU1 MzUuMEYgKiAocmdiYVtpXVsxXSkpKSAtIDEpIC8gMiApOwogICAgICAgICAgICAgICAgICAgICBk c3RbaSo0KzNdID0gKCAoKChHTGludCkgKDY1NTM1LjBGICogKHJnYmFbaV1bMF0pKSkgLSAxKSAv IDIgKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgX21lc2FfcHJvYmxlbShjdHgsICJi YWQgZm9ybWF0IGluIF9tZXNhX3BhY2tfcmdiYV9zcGFuXG4iKTsKICAgICAgICAgICAgfQogICAg ICAgICAgICBpZiAoZHN0UGFja2luZy0+U3dhcEJ5dGVzKSB7CiAgICAgICAgICAgICAgIF9tZXNh X3N3YXAyKCAoR0x1c2hvcnQgKikgZHN0LCBuICogY29tcHMgKTsKICAgICAgICAgICAgfQogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwNToKICAgICAgICAgewogICAg ICAgICAgICBHTHVpbnQgKmRzdCA9IChHTHVpbnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgc3dp dGNoIChkc3RGb3JtYXQpIHsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDM6CiAgICAgICAgICAg ICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgo R0x1aW50KSAoKHJnYmFbaV1bMF0pICogNDI5NDk2NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNDoKICAgICAgICAgICAgICAgICAgZm9y IChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAgZHN0W2ldID0gKChHTHVpbnQpICgo cmdiYVtpXVsxXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgIGNhc2UgMHgxOTA1OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47 aSsrKQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoKEdMdWludCkgKChyZ2JhW2ldWzJd KSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgY2FzZSAweDE5MDY6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAg ICAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bM10pICogNDI5NDk2 NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4 MTkwOToKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAg ICAgICAgZHN0W2ldID0gKChHTHVpbnQpICgobHVtaW5hbmNlW2ldKSAqIDQyOTQ5NjcyOTUuMCkp OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5MEE6CiAg ICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAg ZHN0W2kqMiswXSA9ICgoR0x1aW50KSAoKGx1bWluYW5jZVtpXSkgKiA0Mjk0OTY3Mjk1LjApKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMisxXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bM10p ICogNDI5NDk2NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA3OgogICAgICAgICAgICAgICAgICBmb3Ig KGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMF0gPSAoKEdMdWlu dCkgKChyZ2JhW2ldWzBdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICAgICBk c3RbaSozKzFdID0gKChHTHVpbnQpICgocmdiYVtpXVsxXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAg ICAgICAgICAgICAgICAgICAgZHN0W2kqMysyXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bMl0pICog NDI5NDk2NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgIGNhc2UgMHgxOTA4OgogICAgICAgICAgICAgICAgICBmb3IgKGk9 MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMF0gPSAoKEdMdWludCkg KChyZ2JhW2ldWzBdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICAgICBkc3Rb aSo0KzFdID0gKChHTHVpbnQpICgocmdiYVtpXVsxXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAg ICAgICAgICAgICAgICAgZHN0W2kqNCsyXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bMl0pICogNDI5 NDk2NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrM10gPSAoKEdMdWludCkg KChyZ2JhW2ldWzNdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4ODBFMDoKICAgICAgICAg ICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSoz KzBdID0gKChHTHVpbnQpICgocmdiYVtpXVsyXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAgICAg ICAgICAgICAgICAgZHN0W2kqMysxXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bMV0pICogNDI5NDk2 NzI5NS4wKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMl0gPSAoKEdMdWludCkgKChy Z2JhW2ldWzBdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4ODBFMToKICAgICAgICAgICAg ICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzBd ID0gKChHTHVpbnQpICgocmdiYVtpXVsyXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAgICAgICAg ICAgICAgICAgZHN0W2kqNCsxXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bMV0pICogNDI5NDk2NzI5 NS4wKSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMl0gPSAoKEdMdWludCkgKChyZ2Jh W2ldWzBdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzNd ID0gKChHTHVpbnQpICgocmdiYVtpXVszXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDgw MDA6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAg ICAgICAgZHN0W2kqNCswXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bM10pICogNDI5NDk2NzI5NS4w KSk7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMV0gPSAoKEdMdWludCkgKChyZ2JhW2ld WzJdKSAqIDQyOTQ5NjcyOTUuMCkpOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzJdID0g KChHTHVpbnQpICgocmdiYVtpXVsxXSkgKiA0Mjk0OTY3Mjk1LjApKTsKICAgICAgICAgICAgICAg ICAgICAgZHN0W2kqNCszXSA9ICgoR0x1aW50KSAoKHJnYmFbaV1bMF0pICogNDI5NDk2NzI5NS4w KSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIF9tZXNhX3Byb2JsZW0oY3R4LCAiYmFk IGZvcm1hdCBpbiBfbWVzYV9wYWNrX3JnYmFfc3BhblxuIik7CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICAgICBfbWVzYV9z d2FwNCggKEdMdWludCAqKSBkc3QsIG4gKiBjb21wcyApOwogICAgICAgICAgICB9CiAgICAgICAg IH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxNDA0OgogICAgICAgICB7CiAgICAgICAg ICAgIEdMaW50ICpkc3QgPSAoR0xpbnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgc3dpdGNoIChk c3RGb3JtYXQpIHsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDM6CiAgICAgICAgICAgICAgICAg IGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICggKEdMaW50 KSAoMjE0NzQ4MzY0Ny4wICogKHJnYmFbaV1bMF0pKSApOwogICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDQ6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0w O2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICggKEdMaW50KSAoMjE0NzQ4 MzY0Ny4wICogKHJnYmFbaV1bMV0pKSApOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgICAgY2FzZSAweDE5MDU6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKysp CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4wICog KHJnYmFbaV1bMl0pKSApOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg Y2FzZSAweDE5MDY6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAg ICAgICAgICAgICAgIGRzdFtpXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4wICogKHJnYmFbaV1b M10pKSApOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5 MDk6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4wICogKGx1bWluYW5jZVtpXSkpICk7 CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwQToKICAg ICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBk c3RbaSoyKzBdID0gKCAoR0xpbnQpICgyMTQ3NDgzNjQ3LjAgKiAobHVtaW5hbmNlW2ldKSkgKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMisxXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bM10pKSApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNzoKICAgICAgICAgICAgICAgICAgZm9y IChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzBdID0gKCAoR0xp bnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVswXSkpICk7CiAgICAgICAgICAgICAgICAgICAg IGRzdFtpKjMrMV0gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzFdKSkgKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysyXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bMl0pKSApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwODoKICAgICAgICAgICAgICAgICAgZm9y IChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzBdID0gKCAoR0xp bnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVswXSkpICk7CiAgICAgICAgICAgICAgICAgICAg IGRzdFtpKjQrMV0gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzFdKSkgKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsyXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bMl0pKSApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzNdID0gKCAo R0xpbnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVszXSkpICk7CiAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHg4MEUwOgog ICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAg IGRzdFtpKjMrMF0gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzJdKSkgKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysxXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bMV0pKSApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzJdID0gKCAo R0xpbnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVswXSkpICk7CiAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHg4MEUxOgog ICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAg IGRzdFtpKjQrMF0gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzJdKSkgKTsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsxXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bMV0pKSApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzJdID0gKCAo R0xpbnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVswXSkpICk7CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjQrM10gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzNdKSkg KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgICAgY2FzZSAweDgwMDA6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsK ICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCswXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4w ICogKHJnYmFbaV1bM10pKSApOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzFdID0gKCAo R0xpbnQpICgyMTQ3NDgzNjQ3LjAgKiAocmdiYVtpXVsyXSkpICk7CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjQrMl0gPSAoIChHTGludCkgKDIxNDc0ODM2NDcuMCAqIChyZ2JhW2ldWzFdKSkg KTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCszXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0 Ny4wICogKHJnYmFbaV1bMF0pKSApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgIGJyZWFrOwogICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICBfbWVz YV9wcm9ibGVtKGN0eCwgImJhZCBmb3JtYXQgaW4gX21lc2FfcGFja19yZ2JhX3NwYW5cbiIpOwog ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkc3RQYWNraW5nLT5Td2FwQnl0ZXMpIHsKICAg ICAgICAgICAgICAgX21lc2Ffc3dhcDQoIChHTHVpbnQgKikgZHN0LCBuICogY29tcHMgKTsKICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwNjoK ICAgICAgICAgewogICAgICAgICAgICBHTGZsb2F0ICpkc3QgPSAoR0xmbG9hdCAqKSBkc3RBZGRy OwogICAgICAgICAgICBzd2l0Y2ggKGRzdEZvcm1hdCkgewogICAgICAgICAgICAgICBjYXNlIDB4 MTkwMzoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAg ICAgICAgZHN0W2ldID0gcmdiYVtpXVswXTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgIGNhc2UgMHgxOTA0OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsr KQogICAgICAgICAgICAgICAgICAgICBkc3RbaV0gPSByZ2JhW2ldWzFdOwogICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDU6CiAgICAgICAgICAgICAgICAg IGZvciAoaT0wO2k8bjtpKyspCiAgICAgICAgICAgICAgICAgICAgIGRzdFtpXSA9IHJnYmFbaV1b Ml07CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwNjoK ICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgICAgICAg ZHN0W2ldID0gcmdiYVtpXVszXTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgIGNhc2UgMHgxOTA5OgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKQogICAg ICAgICAgICAgICAgICAgICBkc3RbaV0gPSBsdW1pbmFuY2VbaV07CiAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIDB4MTkwQToKICAgICAgICAgICAgICAgICAgZm9y IChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgICAgICBkc3RbaSoyKzBdID0gbHVtaW5h bmNlW2ldOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSoyKzFdID0gcmdiYVtpXVszXTsKICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg Y2FzZSAweDE5MDc6CiAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAg ICAgICAgICAgICAgICAgZHN0W2kqMyswXSA9IHJnYmFbaV1bMF07CiAgICAgICAgICAgICAgICAg ICAgIGRzdFtpKjMrMV0gPSByZ2JhW2ldWzFdOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSoz KzJdID0gcmdiYVtpXVsyXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgY2FzZSAweDE5MDg6CiAgICAgICAgICAgICAgICAgIGZvciAo aT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCswXSA9IHJnYmFbaV1b MF07CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrMV0gPSByZ2JhW2ldWzFdOwogICAgICAg ICAgICAgICAgICAgICBkc3RbaSo0KzJdID0gcmdiYVtpXVsyXTsKICAgICAgICAgICAgICAgICAg ICAgZHN0W2kqNCszXSA9IHJnYmFbaV1bM107CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgMHg4MEUwOgogICAgICAgICAgICAg ICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjMrMF0g PSByZ2JhW2ldWzJdOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSozKzFdID0gcmdiYVtpXVsx XTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqMysyXSA9IHJnYmFbaV1bMF07CiAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2Ug MHg4MEUxOgogICAgICAgICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAg ICAgICAgICAgIGRzdFtpKjQrMF0gPSByZ2JhW2ldWzJdOwogICAgICAgICAgICAgICAgICAgICBk c3RbaSo0KzFdID0gcmdiYVtpXVsxXTsKICAgICAgICAgICAgICAgICAgICAgZHN0W2kqNCsyXSA9 IHJnYmFbaV1bMF07CiAgICAgICAgICAgICAgICAgICAgIGRzdFtpKjQrM10gPSByZ2JhW2ldWzNd OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgICBjYXNlIDB4ODAwMDoKICAgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewog ICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzBdID0gcmdiYVtpXVszXTsKICAgICAgICAgICAg ICAgICAgICAgZHN0W2kqNCsxXSA9IHJnYmFbaV1bMl07CiAgICAgICAgICAgICAgICAgICAgIGRz dFtpKjQrMl0gPSByZ2JhW2ldWzFdOwogICAgICAgICAgICAgICAgICAgICBkc3RbaSo0KzNdID0g cmdiYVtpXVswXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgX21lc2FfcHJvYmxlbShj dHgsICJiYWQgZm9ybWF0IGluIF9tZXNhX3BhY2tfcmdiYV9zcGFuXG4iKTsKICAgICAgICAgICAg fQogICAgICAgICAgICBpZiAoZHN0UGFja2luZy0+U3dhcEJ5dGVzKSB7CiAgICAgICAgICAgICAg IF9tZXNhX3N3YXA0KCAoR0x1aW50ICopIGRzdCwgbiAqIGNvbXBzICk7CiAgICAgICAgICAgIH0K ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDgwMzI6CiAgICAgICAgIGlm IChkc3RGb3JtYXQgPT0gMHgxOTA3KSB7CiAgICAgICAgICAgIEdMdWJ5dGUgKmRzdCA9IChHTHVi eXRlICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAg ICAgICAgZHN0W2ldID0gKCgoR0xpbnQpIChyZ2JhW2ldWzBdICogNy4wRikpIDw8IDUpCiAgICAg ICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsxXSAqIDcuMEYpKSA8PCAyKQog ICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMl0gKiAzLjBGKSkgKTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODM2 MjoKICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDcpIHsKICAgICAgICAgICAgR0x1Ynl0 ZSAqZHN0ID0gKEdMdWJ5dGUgKikgZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2kr KykgewogICAgICAgICAgICAgICBkc3RbaV0gPSAoKChHTGludCkgKHJnYmFbaV1bMF0gKiA3LjBG KSkgKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMV0gKiA3LjBG KSkgPDwgMykKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzJdICog My4wRikpIDw8IDUpOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg ICAgIGNhc2UgMHg4MzYzOgogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4MTkwNykgewogICAg ICAgICAgICBHTHVzaG9ydCAqZHN0ID0gKEdMdXNob3J0ICopIGRzdEFkZHI7CiAgICAgICAgICAg IGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0xpbnQpIChy Z2JhW2ldWzBdICogMzEuMEYpKSA8PCAxMSkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xp bnQpIChyZ2JhW2ldWzFdICogNjMuMEYpKSA8PCA1KQogICAgICAgICAgICAgICAgICAgICAgfCAo KChHTGludCkgKHJnYmFbaV1bMl0gKiAzMS4wRikpICk7CiAgICAgICAgICAgIH0KICAgICAgICAg fQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDgzNjQ6CiAgICAgICAgIGlmIChkc3RGb3Jt YXQgPT0gMHgxOTA3KSB7CiAgICAgICAgICAgIEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQgKikg ZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICBk c3RbaV0gPSAoKChHTGludCkgKHJnYmFbaV1bMF0gKiAzMS4wRikpICkKICAgICAgICAgICAgICAg ICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzFdICogNjMuMEYpKSA8PCA1KQogICAgICAgICAg ICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMl0gKiAzMS4wRikpIDw8IDExKTsKICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAzMzoK ICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgR0x1c2hvcnQg KmRzdCA9IChHTHVzaG9ydCAqKSBkc3RBZGRyOwogICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsr KSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoKEdMaW50KSAocmdiYVtpXVswXSAqIDE1LjBG KSkgPDwgMTIpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsxXSAq IDE1LjBGKSkgPDwgOCkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ld WzJdICogMTUuMEYpKSA8PCA0KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJn YmFbaV1bM10gKiAxNS4wRikpICk7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBl bHNlIGlmIChkc3RGb3JtYXQgPT0gMHg4MEUxKSB7CiAgICAgICAgICAgIEdMdXNob3J0ICpkc3Qg PSAoR0x1c2hvcnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewog ICAgICAgICAgICAgICBkc3RbaV0gPSAoKChHTGludCkgKHJnYmFbaV1bMl0gKiAxNS4wRikpIDw8 IDEyKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMV0gKiAxNS4w RikpIDw8IDgpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVswXSAq IDE1LjBGKSkgPDwgNCkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ld WzNdICogMTUuMEYpKSApOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBp ZiAoZHN0Rm9ybWF0ID09IDB4ODAwMCkgewogICAgICAgICAgICBHTHVzaG9ydCAqZHN0ID0gKEdM dXNob3J0ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAg ICAgICAgICAgZHN0W2ldID0gKCgoR0xpbnQpIChyZ2JhW2ldWzNdICogMTUuMEYpKSA8PCA0KQog ICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMl0gKiAxNS4wRikpIDw8 IDgpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsxXSAqIDE1LjBG KSkgPDwgMTIpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVswXSAq IDE1LjBGKSkgKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg ICBjYXNlIDB4ODM2NToKICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDgpIHsKICAgICAg ICAgICAgR0x1c2hvcnQgKmRzdCA9IChHTHVzaG9ydCAqKSBkc3RBZGRyOwogICAgICAgICAgICBm b3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoKEdMaW50KSAocmdi YVtpXVswXSAqIDE1LjBGKSkgKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJn YmFbaV1bMV0gKiAxNS4wRikpIDw8IDQpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50 KSAocmdiYVtpXVsyXSAqIDE1LjBGKSkgPDwgOCkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgo R0xpbnQpIChyZ2JhW2ldWzNdICogMTUuMEYpKSA8PCAxMik7CiAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBlbHNlIGlmIChkc3RGb3JtYXQgPT0gMHg4MEUxKSB7CiAgICAgICAgICAg IEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChp PTA7aTxuO2krKykgewogICAgICAgICAgICAgICBkc3RbaV0gPSAoKChHTGludCkgKHJnYmFbaV1b Ml0gKiAxNS4wRikpICkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ld WzFdICogMTUuMEYpKSA8PCA0KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJn YmFbaV1bMF0gKiAxNS4wRikpIDw8IDgpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50 KSAocmdiYVtpXVszXSAqIDE1LjBGKSkgPDwgMTIpOwogICAgICAgICAgICB9CiAgICAgICAgIH0K ICAgICAgICAgZWxzZSBpZiAoZHN0Rm9ybWF0ID09IDB4ODAwMCkgewogICAgICAgICAgICBHTHVz aG9ydCAqZHN0ID0gKEdMdXNob3J0ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8 bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0xpbnQpIChyZ2JhW2ldWzNdICog MTUuMEYpKSApCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsyXSAq IDE1LjBGKSkgPDwgNCkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ld WzFdICogMTUuMEYpKSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJn YmFbaV1bMF0gKiAxNS4wRikpIDw8IDEyKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg ICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAzNDoKICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAw eDE5MDgpIHsKICAgICAgICAgICAgR0x1c2hvcnQgKmRzdCA9IChHTHVzaG9ydCAqKSBkc3RBZGRy OwogICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9 ICgoKEdMaW50KSAocmdiYVtpXVswXSAqIDMxLjBGKSkgPDwgMTEpCiAgICAgICAgICAgICAgICAg ICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsxXSAqIDMxLjBGKSkgPDwgNikKICAgICAgICAgICAg ICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzJdICogMzEuMEYpKSA8PCAxKQogICAgICAg ICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bM10gKiAxLjBGKSkgKTsKICAgICAg ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAweDgwRTEp IHsKICAgICAgICAgICAgR0x1c2hvcnQgKmRzdCA9IChHTHVzaG9ydCAqKSBkc3RBZGRyOwogICAg ICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoKEdM aW50KSAocmdiYVtpXVsyXSAqIDMxLjBGKSkgPDwgMTEpCiAgICAgICAgICAgICAgICAgICAgICB8 ICgoKEdMaW50KSAocmdiYVtpXVsxXSAqIDMxLjBGKSkgPDwgNikKICAgICAgICAgICAgICAgICAg ICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzBdICogMzEuMEYpKSA8PCAxKQogICAgICAgICAgICAg ICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bM10gKiAxLjBGKSkgKTsKICAgICAgICAgICAg fQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAweDgwMDApIHsKICAg ICAgICAgICAgR0x1c2hvcnQgKmRzdCA9IChHTHVzaG9ydCAqKSBkc3RBZGRyOwogICAgICAgICAg ICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoKEdMaW50KSAo cmdiYVtpXVszXSAqIDMxLjBGKSkgPDwgMTEpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdM aW50KSAocmdiYVtpXVsyXSAqIDMxLjBGKSkgPDwgNikKICAgICAgICAgICAgICAgICAgICAgIHwg KCgoR0xpbnQpIChyZ2JhW2ldWzFdICogMzEuMEYpKSA8PCAxKQogICAgICAgICAgICAgICAgICAg ICAgfCAoKChHTGludCkgKHJnYmFbaV1bMF0gKiAxLjBGKSkgKTsKICAgICAgICAgICAgfQogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODM2NjoKICAgICAgICAgaWYgKGRz dEZvcm1hdCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgR0x1c2hvcnQgKmRzdCA9IChHTHVzaG9y dCAqKSBkc3RBZGRyOwogICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAg ICAgIGRzdFtpXSA9ICgoKEdMaW50KSAocmdiYVtpXVswXSAqIDMxLjBGKSkgKQogICAgICAgICAg ICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMV0gKiAzMS4wRikpIDw8IDUpCiAgICAg ICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVsyXSAqIDMxLjBGKSkgPDwgMTAp CiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMaW50KSAocmdiYVtpXVszXSAqIDEuMEYpKSA8 PCAxNSk7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChkc3RGb3Jt YXQgPT0gMHg4MEUxKSB7CiAgICAgICAgICAgIEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQgKikg ZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICBk c3RbaV0gPSAoKChHTGludCkgKHJnYmFbaV1bMl0gKiAzMS4wRikpICkKICAgICAgICAgICAgICAg ICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzFdICogMzEuMEYpKSA8PCA1KQogICAgICAgICAg ICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bMF0gKiAzMS4wRikpIDw8IDEwKQogICAg ICAgICAgICAgICAgICAgICAgfCAoKChHTGludCkgKHJnYmFbaV1bM10gKiAxLjBGKSkgPDwgMTUp OwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZHN0Rm9ybWF0ID09 IDB4ODAwMCkgewogICAgICAgICAgICBHTHVzaG9ydCAqZHN0ID0gKEdMdXNob3J0ICopIGRzdEFk ZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ld ID0gKCgoR0xpbnQpIChyZ2JhW2ldWzNdICogMzEuMEYpKSApCiAgICAgICAgICAgICAgICAgICAg ICB8ICgoKEdMaW50KSAocmdiYVtpXVsyXSAqIDMxLjBGKSkgPDwgNSkKICAgICAgICAgICAgICAg ICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzFdICogMzEuMEYpKSA8PCAxMCkKICAgICAgICAg ICAgICAgICAgICAgIHwgKCgoR0xpbnQpIChyZ2JhW2ldWzBdICogMS4wRikpIDw8IDE1KTsKICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAzNToK ICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgR0x1aW50ICpk c3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsK ICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0x1aW50KSAocmdiYVtpXVswXSAqIDI1NS4wRikp IDw8IDI0KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzFdICog MjU1LjBGKSkgPDwgMTYpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFb aV1bMl0gKiAyNTUuMEYpKSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQp IChyZ2JhW2ldWzNdICogMjU1LjBGKSkgKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg ICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAweDgwRTEpIHsKICAgICAgICAgICAgR0x1aW50ICpk c3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsK ICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0x1aW50KSAocmdiYVtpXVsyXSAqIDI1NS4wRikp IDw8IDI0KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzFdICog MjU1LjBGKSkgPDwgMTYpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFb aV1bMF0gKiAyNTUuMEYpKSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQp IChyZ2JhW2ldWzNdICogMjU1LjBGKSkgKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg ICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAweDgwMDApIHsKICAgICAgICAgICAgR0x1aW50ICpk c3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsK ICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0x1aW50KSAocmdiYVtpXVszXSAqIDI1NS4wRikp IDw8IDI0KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzJdICog MjU1LjBGKSkgPDwgMTYpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFb aV1bMV0gKiAyNTUuMEYpKSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQp IChyZ2JhW2ldWzBdICogMjU1LjBGKSkgKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg ICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODM2NzoKICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAw eDE5MDgpIHsKICAgICAgICAgICAgR0x1aW50ICpkc3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAg ICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgo R0x1aW50KSAocmdiYVtpXVswXSAqIDI1NS4wRikpICkKICAgICAgICAgICAgICAgICAgICAgIHwg KCgoR0x1aW50KSAocmdiYVtpXVsxXSAqIDI1NS4wRikpIDw8IDgpCiAgICAgICAgICAgICAgICAg ICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bMl0gKiAyNTUuMEYpKSA8PCAxNikKICAgICAgICAg ICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVszXSAqIDI1NS4wRikpIDw8IDI0KTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAw eDgwRTEpIHsKICAgICAgICAgICAgR0x1aW50ICpkc3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAg ICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgo R0x1aW50KSAocmdiYVtpXVsyXSAqIDI1NS4wRikpICkKICAgICAgICAgICAgICAgICAgICAgIHwg KCgoR0x1aW50KSAocmdiYVtpXVsxXSAqIDI1NS4wRikpIDw8IDgpCiAgICAgICAgICAgICAgICAg ICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bMF0gKiAyNTUuMEYpKSA8PCAxNikKICAgICAgICAg ICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVszXSAqIDI1NS4wRikpIDw8IDI0KTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAw eDgwMDApIHsKICAgICAgICAgICAgR0x1aW50ICpkc3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAg ICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgo R0x1aW50KSAocmdiYVtpXVszXSAqIDI1NS4wRikpICkKICAgICAgICAgICAgICAgICAgICAgIHwg KCgoR0x1aW50KSAocmdiYVtpXVsyXSAqIDI1NS4wRikpIDw8IDgpCiAgICAgICAgICAgICAgICAg ICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bMV0gKiAyNTUuMEYpKSA8PCAxNikKICAgICAgICAg ICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVswXSAqIDI1NS4wRikpIDw8IDI0KTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAz NjoKICAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgR0x1aW50 ICpkc3QgPSAoR0x1aW50ICopIGRzdEFkZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKysp IHsKICAgICAgICAgICAgICAgZHN0W2ldID0gKCgoR0x1aW50KSAocmdiYVtpXVswXSAqIDEwMjMu MEYpKSA8PCAyMikKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVsx XSAqIDEwMjMuMEYpKSA8PCAxMikKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAo cmdiYVtpXVsyXSAqIDEwMjMuMEYpKSA8PCAyKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChH THVpbnQpIChyZ2JhW2ldWzNdICogMy4wRikpICk7CiAgICAgICAgICAgIH0KICAgICAgICAgfQog ICAgICAgICBlbHNlIGlmIChkc3RGb3JtYXQgPT0gMHg4MEUxKSB7CiAgICAgICAgICAgIEdMdWlu dCAqZHN0ID0gKEdMdWludCAqKSBkc3RBZGRyOwogICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsr KSB7CiAgICAgICAgICAgICAgIGRzdFtpXSA9ICgoKEdMdWludCkgKHJnYmFbaV1bMl0gKiAxMDIz LjBGKSkgPDwgMjIpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1b MV0gKiAxMDIzLjBGKSkgPDwgMTIpCiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkg KHJnYmFbaV1bMF0gKiAxMDIzLjBGKSkgPDwgMikKICAgICAgICAgICAgICAgICAgICAgIHwgKCgo R0x1aW50KSAocmdiYVtpXVszXSAqIDMuMEYpKSApOwogICAgICAgICAgICB9CiAgICAgICAgIH0K ICAgICAgICAgZWxzZSBpZiAoZHN0Rm9ybWF0ID09IDB4ODAwMCkgewogICAgICAgICAgICBHTHVp bnQgKmRzdCA9IChHTHVpbnQgKikgZHN0QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2kr KykgewogICAgICAgICAgICAgICBkc3RbaV0gPSAoKChHTHVpbnQpIChyZ2JhW2ldWzNdICogMTAy My4wRikpIDw8IDIyKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ld WzJdICogMTAyMy4wRikpIDw8IDEyKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQp IChyZ2JhW2ldWzFdICogMTAyMy4wRikpIDw8IDIpCiAgICAgICAgICAgICAgICAgICAgICB8ICgo KEdMdWludCkgKHJnYmFbaV1bMF0gKiAzLjBGKSkgKTsKICAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODM2ODoKICAgICAgICAgaWYgKGRzdEZvcm1h dCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgR0x1aW50ICpkc3QgPSAoR0x1aW50ICopIGRzdEFk ZHI7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgZHN0W2ld ID0gKCgoR0x1aW50KSAocmdiYVtpXVswXSAqIDEwMjMuMEYpKSApCiAgICAgICAgICAgICAgICAg ICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bMV0gKiAxMDIzLjBGKSkgPDwgMTApCiAgICAgICAg ICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bMl0gKiAxMDIzLjBGKSkgPDwgMjAp CiAgICAgICAgICAgICAgICAgICAgICB8ICgoKEdMdWludCkgKHJnYmFbaV1bM10gKiAzLjBGKSkg PDwgMzApOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZHN0Rm9y bWF0ID09IDB4ODBFMSkgewogICAgICAgICAgICBHTHVpbnQgKmRzdCA9IChHTHVpbnQgKikgZHN0 QWRkcjsKICAgICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICBkc3Rb aV0gPSAoKChHTHVpbnQpIChyZ2JhW2ldWzJdICogMTAyMy4wRikpICkKICAgICAgICAgICAgICAg ICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVsxXSAqIDEwMjMuMEYpKSA8PCAxMCkKICAgICAg ICAgICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVswXSAqIDEwMjMuMEYpKSA8PCAy MCkKICAgICAgICAgICAgICAgICAgICAgIHwgKCgoR0x1aW50KSAocmdiYVtpXVszXSAqIDMuMEYp KSA8PCAzMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChkc3RG b3JtYXQgPT0gMHg4MDAwKSB7CiAgICAgICAgICAgIEdMdWludCAqZHN0ID0gKEdMdWludCAqKSBk c3RBZGRyOwogICAgICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgIGRz dFtpXSA9ICgoKEdMdWludCkgKHJnYmFbaV1bM10gKiAxMDIzLjBGKSkgKQogICAgICAgICAgICAg ICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzJdICogMTAyMy4wRikpIDw8IDEwKQogICAg ICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzFdICogMTAyMy4wRikpIDw8 IDIwKQogICAgICAgICAgICAgICAgICAgICAgfCAoKChHTHVpbnQpIChyZ2JhW2ldWzBdICogMy4w RikpIDw8IDMwKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg ICBkZWZhdWx0OgogICAgICAgICBfbWVzYV9wcm9ibGVtKGN0eCwgImJhZCB0eXBlIGluIF9tZXNh X3BhY2tfZmxvYXRfcmdiYV9zcGFuIik7CiAgIH0KfQojIDE3OTQgImltYWdlLmMiCnZvaWQKX21l c2FfcGFja19yZ2JhX3NwYW4oIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAg R0x1aW50IG4sIGNvbnN0IEdMY2hhbiBzcmNSZ2JhW11bNF0sCiAgICAgICAgICAgICAgICAgICAg ICBHTGVudW0gZHN0Rm9ybWF0LCBHTGVudW0gZHN0VHlwZSwKICAgICAgICAgICAgICAgICAgICAg IEdMdm9pZCAqZHN0QWRkciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9w aXhlbHN0b3JlX2F0dHJpYiAqZHN0UGFja2luZywKICAgICAgICAgICAgICAgICAgICAgIEdMdWlu dCB0cmFuc2Zlck9wcykKewogICA7CgoKICAgaWYgKHRyYW5zZmVyT3BzID09IDAgJiYgZHN0Rm9y bWF0ID09IDB4MTkwOCAmJiBkc3RUeXBlID09IDB4MTQwMSkgewoKICAgICAgX21lc2FfbWVtY3B5 KGRzdEFkZHIsIHNyY1JnYmEsIG4gKiA0ICogc2l6ZW9mKEdMY2hhbikpOwogICB9CiAgIGVsc2Ug aWYgKHRyYW5zZmVyT3BzID09IDAgJiYgZHN0Rm9ybWF0ID09IDB4MTkwNyAmJiBkc3RUeXBlID09 IDB4MTQwMSkgewoKICAgICAgR0x1aW50IGk7CiAgICAgIEdMY2hhbiAqZGVzdCA9IChHTGNoYW4g KikgZHN0QWRkcjsKICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBkZXN0 WzBdID0gc3JjUmdiYVtpXVswXTsKICAgICAgICAgZGVzdFsxXSA9IHNyY1JnYmFbaV1bMV07CiAg ICAgICAgIGRlc3RbMl0gPSBzcmNSZ2JhW2ldWzJdOwogICAgICAgICBkZXN0ICs9IDM7CiAgICAg IH0KICAgfQogICBlbHNlIGlmICh0cmFuc2Zlck9wcyA9PSAwICYmIGRzdEZvcm1hdCA9PSAweDE5 MDggJiYgZHN0VHlwZSA9PSAweDE0MDEpIHsKCiAgICAgIEdMdWludCBpOwogICAgICBHTHVieXRl ICpkZXN0ID0gKEdMdWJ5dGUgKikgZHN0QWRkcjsKICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkr KykgewogICAgICAgICBkZXN0WzBdID0gKHNyY1JnYmFbaV1bMF0pOwogICAgICAgICBkZXN0WzFd ID0gKHNyY1JnYmFbaV1bMV0pOwogICAgICAgICBkZXN0WzJdID0gKHNyY1JnYmFbaV1bMl0pOwog ICAgICAgICBkZXN0WzNdID0gKHNyY1JnYmFbaV1bM10pOwogICAgICAgICBkZXN0ICs9IDQ7CiAg ICAgIH0KICAgfQogICBlbHNlIHsKCiAgICAgIEdMdWludCBpOwogICAgICBHTGZsb2F0IHJnYmFb MjA0OF1bNF07CiAgICAgIGRvIHt9IHdoaWxlKDApOwoKICAgICAgKCh2b2lkKSAoKG4gPD0gMjA0 OCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICJp bWFnZS5jIiwgMTgzOCwgIm4gPD0gTUFYX1dJRFRIIiksIDApKSk7CgogICAgICBmb3IgKGk9MDtp PG47aSsrKSB7CiAgICAgICAgIHJnYmFbaV1bMF0gPSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xv cl90YWJbKHVuc2lnbmVkIGludCkoc3JjUmdiYVtpXVswXSldOwogICAgICAgICByZ2JhW2ldWzFd ID0gX21lc2FfdWJ5dGVfdG9fZmxvYXRfY29sb3JfdGFiWyh1bnNpZ25lZCBpbnQpKHNyY1JnYmFb aV1bMV0pXTsKICAgICAgICAgcmdiYVtpXVsyXSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9y X3RhYlsodW5zaWduZWQgaW50KShzcmNSZ2JhW2ldWzJdKV07CiAgICAgICAgIHJnYmFbaV1bM10g PSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCkoc3JjUmdiYVtp XVszXSldOwogICAgICB9CiAgICAgIF9tZXNhX3BhY2tfZmxvYXRfcmdiYV9zcGFuKGN0eCwgbiwg KGNvbnN0IEdMZmxvYXQgKCopWzRdKSByZ2JhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkc3RGb3JtYXQsIGRzdFR5cGUsIGRzdEFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRzdFBhY2tpbmcsIHRyYW5zZmVyT3BzKTsKICAgICAgOwogICB9Cn0KIyAxODc0 ICJpbWFnZS5jIgpzdGF0aWMgdm9pZApleHRyYWN0X3VpbnRfaW5kZXhlcyhHTHVpbnQgbiwgR0x1 aW50IGluZGV4ZXNbXSwKICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0Zvcm1hdCwgR0xl bnVtIHNyY1R5cGUsIGNvbnN0IEdMdm9pZCAqc3JjLAogICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnVucGFjayApCnsKICAgKCh2b2lkKSAoKHNy Y0Zvcm1hdCA9PSAweDE5MDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2Vy dGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDE4NzksICJzcmNGb3JtYXQgPT0gR0xfQ09MT1JfSU5E RVgiKSwgMCkpKTsKCiAgIDsKIyAxODkwICJpbWFnZS5jIgogICBzd2l0Y2ggKHNyY1R5cGUpIHsK ICAgICAgY2FzZSAweDFBMDA6CiAgICAgICAgIHsKICAgICAgICAgICAgR0x1Ynl0ZSAqdWJzcmMg PSAoR0x1Ynl0ZSAqKSBzcmM7CiAgICAgICAgICAgIGlmICh1bnBhY2stPkxzYkZpcnN0KSB7CiAg ICAgICAgICAgICAgIEdMdWJ5dGUgbWFzayA9IDEgPDwgKHVucGFjay0+U2tpcFBpeGVscyAmIDB4 Nyk7CiAgICAgICAgICAgICAgIEdMdWludCBpOwogICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSAoKnVic3JjICYgbWFz aykgPyAxIDogMDsKICAgICAgICAgICAgICAgICAgaWYgKG1hc2sgPT0gMTI4KSB7CiAgICAgICAg ICAgICAgICAgICAgIG1hc2sgPSAxOwogICAgICAgICAgICAgICAgICAgICB1YnNyYysrOwogICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg ICAgICBtYXNrID0gbWFzayA8PCAxOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgR0x1Ynl0 ZSBtYXNrID0gMTI4ID4+ICh1bnBhY2stPlNraXBQaXhlbHMgJiAweDcpOwogICAgICAgICAgICAg ICBHTHVpbnQgaTsKICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAg ICAgICAgICAgICAgICBpbmRleGVzW2ldID0gKCp1YnNyYyAmIG1hc2spID8gMSA6IDA7CiAgICAg ICAgICAgICAgICAgIGlmIChtYXNrID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgbWFzayA9 IDEyODsKICAgICAgICAgICAgICAgICAgICAgdWJzcmMrKzsKICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1hc2sg Pj4gMTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDE6CiAgICAgICAgIHsK ICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnMgPSAoY29u c3QgR0x1Ynl0ZSAqKSBzcmM7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAg ICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSBzW2ldOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwogICAgICBjYXNlIDB4MTQwMDoKICAgICAgICAgewogICAgICAgICAgICBHTHVpbnQgaTsKICAg ICAgICAgICAgY29uc3QgR0xieXRlICpzID0gKGNvbnN0IEdMYnl0ZSAqKSBzcmM7CiAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSBz W2ldOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwMzoKICAgICAg ICAgewogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnMg PSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOwogICAgICAgICAgICBpZiAodW5wYWNrLT5Td2FwQnl0 ZXMpIHsKICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAg ICAgICAgICBHTHVzaG9ydCB2YWx1ZSA9IHNbaV07CiAgICAgICAgICAgICAgICAgIHsgR0x1Ynl0 ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsg Ynl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07CiAgICAgICAgICAgICAgICAg IGluZGV4ZXNbaV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAg ICAgICAgICAgICAgICBpbmRleGVzW2ldID0gc1tpXTsKICAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwMjoKICAgICAgICAgewogICAgICAgICAg ICBHTHVpbnQgaTsKICAgICAgICAgICAgY29uc3QgR0xzaG9ydCAqcyA9IChjb25zdCBHTHNob3J0 ICopIHNyYzsKICAgICAgICAgICAgaWYgKHVucGFjay0+U3dhcEJ5dGVzKSB7CiAgICAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICAgR0xzaG9ydCB2 YWx1ZSA9IHNbaV07CiAgICAgICAgICAgICAgICAgIHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0 ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sx XTsgYnl0ZXNbMV0gPSB0bXA7IH07CiAgICAgICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSB2YWx1 ZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgICBpbmRl eGVzW2ldID0gc1tpXTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog ICAgICBjYXNlIDB4MTQwNToKICAgICAgICAgewogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAg ICAgICAgY29uc3QgR0x1aW50ICpzID0gKGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAg IGlmICh1bnBhY2stPlN3YXBCeXRlcykgewogICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIEdMdWludCB2YWx1ZSA9IHNbaV07CiAgICAgICAg ICAgICAgICAgIHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0 ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRt cCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsKICAg ICAgICAgICAgICAgICAgaW5kZXhlc1tpXSA9IHZhbHVlOwogICAgICAgICAgICAgICB9CiAgICAg ICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBuOyBpKyspCiAgICAgICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSBzW2ldOwogICAgICAgICAg ICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxNDA0OgogICAgICAg ICB7CiAgICAgICAgICAgIEdMdWludCBpOwogICAgICAgICAgICBjb25zdCBHTGludCAqcyA9IChj b25zdCBHTGludCAqKSBzcmM7CiAgICAgICAgICAgIGlmICh1bnBhY2stPlN3YXBCeXRlcykgewog ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAg IEdMaW50IHZhbHVlID0gc1tpXTsKICAgICAgICAgICAgICAgICAgeyBHTHVieXRlICpieXRlcyA9 IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9 IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsgdG1wID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gYnl0 ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OwogICAgICAgICAgICAgICAgICBpbmRleGVzW2ldID0g dmFsdWU7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsK ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICAg aW5kZXhlc1tpXSA9IHNbaV07CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVh azsKICAgICAgY2FzZSAweDE0MDY6CiAgICAgICAgIHsKICAgICAgICAgICAgR0x1aW50IGk7CiAg ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnMgPSAoY29uc3QgR0xmbG9hdCAqKSBzcmM7CiAgICAg ICAgICAgIGlmICh1bnBhY2stPlN3YXBCeXRlcykgewogICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdmFsdWUgPSBzW2ldOwog ICAgICAgICAgICAgICAgICB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7 IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0g dG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7 IH07CiAgICAgICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSAoR0x1aW50KSB2YWx1ZTsKICAgICAg ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgICBpbmRleGVzW2ldID0g KEdMdWludCkgc1tpXTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog ICAgICBkZWZhdWx0OgogICAgICAgICBfbWVzYV9wcm9ibGVtKDAsICJiYWQgc3JjVHlwZSBpbiBl eHRyYWN0X3VpbnRfaW5kZXhlcyIpOwogICAgICAgICByZXR1cm47CiAgIH0KfQojIDIwNDkgImlt YWdlLmMiCnN0YXRpYyB2b2lkCmV4dHJhY3RfZmxvYXRfcmdiYShHTHVpbnQgbiwgR0xmbG9hdCBy Z2JhW11bNF0sCiAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjRm9ybWF0LCBHTGVudW0gc3Jj VHlwZSwgY29uc3QgR0x2b2lkICpzcmMsCiAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gc3dh cEJ5dGVzKQp7CiAgIEdMaW50IHJlZEluZGV4LCBncmVlbkluZGV4LCBibHVlSW5kZXgsIGFscGhh SW5kZXg7CiAgIEdMaW50IHN0cmlkZTsKICAgR0xpbnQgckNvbXAsIGJDb21wLCBnQ29tcCwgYUNv bXA7CgogICA7CiMgMjA3MSAiaW1hZ2UuYyIKICAgOwojIDIwOTEgImltYWdlLmMiCiAgIHJDb21w ID0gZ0NvbXAgPSBiQ29tcCA9IGFDb21wID0gLTE7CgogICBzd2l0Y2ggKHNyY0Zvcm1hdCkgewog ICAgICBjYXNlIDB4MTkwMzoKICAgICAgICAgcmVkSW5kZXggPSAwOwogICAgICAgICBncmVlbklu ZGV4ID0gYmx1ZUluZGV4ID0gYWxwaGFJbmRleCA9IC0xOwogICAgICAgICBzdHJpZGUgPSAxOwog ICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE5MDQ6CiAgICAgICAgIGdyZWVuSW5kZXggPSAw OwogICAgICAgICByZWRJbmRleCA9IGJsdWVJbmRleCA9IGFscGhhSW5kZXggPSAtMTsKICAgICAg ICAgc3RyaWRlID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxOTA1OgogICAgICAg ICBibHVlSW5kZXggPSAwOwogICAgICAgICByZWRJbmRleCA9IGdyZWVuSW5kZXggPSBhbHBoYUlu ZGV4ID0gLTE7CiAgICAgICAgIHN0cmlkZSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNl IDB4MTkwNjoKICAgICAgICAgcmVkSW5kZXggPSBncmVlbkluZGV4ID0gYmx1ZUluZGV4ID0gLTE7 CiAgICAgICAgIGFscGhhSW5kZXggPSAwOwogICAgICAgICBzdHJpZGUgPSAxOwogICAgICAgICBi cmVhazsKICAgICAgY2FzZSAweDE5MDk6CiAgICAgICAgIHJlZEluZGV4ID0gZ3JlZW5JbmRleCA9 IGJsdWVJbmRleCA9IDA7CiAgICAgICAgIGFscGhhSW5kZXggPSAtMTsKICAgICAgICAgc3RyaWRl ID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxOTBBOgogICAgICAgICByZWRJbmRl eCA9IGdyZWVuSW5kZXggPSBibHVlSW5kZXggPSAwOwogICAgICAgICBhbHBoYUluZGV4ID0gMTsK ICAgICAgICAgc3RyaWRlID0gMjsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4MDQ5Ogog ICAgICAgICByZWRJbmRleCA9IGdyZWVuSW5kZXggPSBibHVlSW5kZXggPSBhbHBoYUluZGV4ID0g MDsKICAgICAgICAgc3RyaWRlID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxOTA3 OgogICAgICAgICByZWRJbmRleCA9IDA7CiAgICAgICAgIGdyZWVuSW5kZXggPSAxOwogICAgICAg ICBibHVlSW5kZXggPSAyOwogICAgICAgICBhbHBoYUluZGV4ID0gLTE7CiAgICAgICAgIHN0cmlk ZSA9IDM7CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODBFMDoKICAgICAgICAgcmVkSW5k ZXggPSAyOwogICAgICAgICBncmVlbkluZGV4ID0gMTsKICAgICAgICAgYmx1ZUluZGV4ID0gMDsK ICAgICAgICAgYWxwaGFJbmRleCA9IC0xOwogICAgICAgICBzdHJpZGUgPSAzOwogICAgICAgICBi cmVhazsKICAgICAgY2FzZSAweDE5MDg6CiAgICAgICAgIHJlZEluZGV4ID0gMDsKICAgICAgICAg Z3JlZW5JbmRleCA9IDE7CiAgICAgICAgIGJsdWVJbmRleCA9IDI7CiAgICAgICAgIGFscGhhSW5k ZXggPSAzOwogICAgICAgICByQ29tcCA9IDA7CiAgICAgICAgIGdDb21wID0gMTsKICAgICAgICAg YkNvbXAgPSAyOwogICAgICAgICBhQ29tcCA9IDM7CiAgICAgICAgIHN0cmlkZSA9IDQ7CiAgICAg ICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODBFMToKICAgICAgICAgcmVkSW5kZXggPSAyOwogICAg ICAgICBncmVlbkluZGV4ID0gMTsKICAgICAgICAgYmx1ZUluZGV4ID0gMDsKICAgICAgICAgYWxw aGFJbmRleCA9IDM7CiAgICAgICAgIHJDb21wID0gMjsKICAgICAgICAgZ0NvbXAgPSAxOwogICAg ICAgICBiQ29tcCA9IDA7CiAgICAgICAgIGFDb21wID0gMzsKICAgICAgICAgc3RyaWRlID0gNDsK ICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4MDAwOgogICAgICAgICByZWRJbmRleCA9IDM7 CiAgICAgICAgIGdyZWVuSW5kZXggPSAyOwogICAgICAgICBibHVlSW5kZXggPSAxOwogICAgICAg ICBhbHBoYUluZGV4ID0gMDsKICAgICAgICAgckNvbXAgPSAzOwogICAgICAgICBnQ29tcCA9IDI7 CiAgICAgICAgIGJDb21wID0gMTsKICAgICAgICAgYUNvbXAgPSAwOwogICAgICAgICBzdHJpZGUg PSA0OwogICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICAgX21lc2FfcHJvYmxl bSgwLCAiYmFkIHNyY0Zvcm1hdCBpbiBleHRyYWN0IGZsb2F0IGRhdGEiKTsKICAgICAgICAgcmV0 dXJuOwogICB9CiMgMjIxMiAiaW1hZ2UuYyIKICAgc3dpdGNoIChzcmNUeXBlKSB7CiAgICAgIGNh c2UgMHgxNDAxOgogICAgICAgICBpZiAoKHJlZEluZGV4KSA8IDApIHsgR0x1aW50IGk7IGZvciAo aSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVswXSA9IDAuMEY7IH0gfSBlbHNlIGlmIChzd2Fw Qnl0ZXMpIHsgY29uc3QgR0x1Ynl0ZSAqcyA9IChjb25zdCBHTHVieXRlICopIHNyYzsgR0x1aW50 IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0x1Ynl0ZSB2YWx1ZSA9IHNbcmVkSW5kZXhd OyBpZiAoc2l6ZW9mKEdMdWJ5dGUpID09IDIpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRl ICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFd OyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0x1Ynl0ZSkgPT0gNCkgeyB7 IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0 ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0gdG1wOyB0bXAgPSBieXRlc1sx XTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7IH07IH0gcmdiYVtpXVswXSA9 IChHTGZsb2F0KSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCko dmFsdWUpXTsgcyArPSBzdHJpZGU7IH0gfSBlbHNlIHsgY29uc3QgR0x1Ynl0ZSAqcyA9IChjb25z dCBHTHVieXRlICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdi YVtpXVswXSA9IChHTGZsb2F0KSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2ln bmVkIGludCkoc1tyZWRJbmRleF0pXTsgcyArPSBzdHJpZGU7IH0gfTsKICAgICAgICAgaWYgKChn cmVlbkluZGV4KSA8IDApIHsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdi YVtpXVsxXSA9IDAuMEY7IH0gfSBlbHNlIGlmIChzd2FwQnl0ZXMpIHsgY29uc3QgR0x1Ynl0ZSAq cyA9IChjb25zdCBHTHVieXRlICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsgR0x1Ynl0ZSB2YWx1ZSA9IHNbZ3JlZW5JbmRleF07IGlmIChzaXplb2YoR0x1Ynl0ZSkg PT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUg dG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9 IGVsc2UgaWYgKHNpemVvZihHTHVieXRlKSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1 Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRl c1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJd OyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzFdID0gKEdMZmxvYXQpIF9tZXNhX3VieXRl X3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSh2YWx1ZSldOyBzICs9IHN0cmlkZTsg fSB9IGVsc2UgeyBjb25zdCBHTHVieXRlICpzID0gKGNvbnN0IEdMdWJ5dGUgKikgc3JjOyBHTHVp bnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzFdID0gKEdMZmxvYXQpIF9t ZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KShzW2dyZWVuSW5kZXhd KV07IHMgKz0gc3RyaWRlOyB9IH07CiAgICAgICAgIGlmICgoYmx1ZUluZGV4KSA8IDApIHsgR0x1 aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVsyXSA9IDAuMEY7IH0gfSBl bHNlIGlmIChzd2FwQnl0ZXMpIHsgY29uc3QgR0x1Ynl0ZSAqcyA9IChjb25zdCBHTHVieXRlICop IHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0x1Ynl0ZSB2YWx1ZSA9 IHNbYmx1ZUluZGV4XTsgaWYgKHNpemVvZihHTHVieXRlKSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0 ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNb MF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMdWJ5 dGUpID09IDQpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVi eXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsg dG1wID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OyB9 IHJnYmFbaV1bMl0gPSAoR0xmbG9hdCkgX21lc2FfdWJ5dGVfdG9fZmxvYXRfY29sb3JfdGFiWyh1 bnNpZ25lZCBpbnQpKHZhbHVlKV07IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMdWJ5 dGUgKnMgPSAoY29uc3QgR0x1Ynl0ZSAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKSB7IHJnYmFbaV1bMl0gPSAoR0xmbG9hdCkgX21lc2FfdWJ5dGVfdG9fZmxvYXRfY29s b3JfdGFiWyh1bnNpZ25lZCBpbnQpKHNbYmx1ZUluZGV4XSldOyBzICs9IHN0cmlkZTsgfSB9Owog ICAgICAgICBpZiAoKGFscGhhSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8 IG47IGkrKykgeyByZ2JhW2ldWzNdID0gMS4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBj b25zdCBHTHVieXRlICpzID0gKGNvbnN0IEdMdWJ5dGUgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChp ID0gMDsgaSA8IG47IGkrKykgeyBHTHVieXRlIHZhbHVlID0gc1thbHBoYUluZGV4XTsgaWYgKHNp emVvZihHTHVieXRlKSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZh bHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNb MV0gPSB0bXA7IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMdWJ5dGUpID09IDQpIHsgeyBHTHVieXRl ICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBi eXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsgdG1wID0gYnl0ZXNbMV07IGJ5dGVz WzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OyB9IHJnYmFbaV1bM10gPSAoR0xmbG9h dCkgX21lc2FfdWJ5dGVfdG9fZmxvYXRfY29sb3JfdGFiWyh1bnNpZ25lZCBpbnQpKHZhbHVlKV07 IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMdWJ5dGUgKnMgPSAoY29uc3QgR0x1Ynl0 ZSAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bM10g PSAoR0xmbG9hdCkgX21lc2FfdWJ5dGVfdG9fZmxvYXRfY29sb3JfdGFiWyh1bnNpZ25lZCBpbnQp KHNbYWxwaGFJbmRleF0pXTsgcyArPSBzdHJpZGU7IH0gfTsKICAgICAgICAgYnJlYWs7CiAgICAg IGNhc2UgMHgxNDAwOgogICAgICAgICBpZiAoKHJlZEluZGV4KSA8IDApIHsgR0x1aW50IGk7IGZv ciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVswXSA9IDAuMEY7IH0gfSBlbHNlIGlmIChz d2FwQnl0ZXMpIHsgY29uc3QgR0xieXRlICpzID0gKGNvbnN0IEdMYnl0ZSAqKSBzcmM7IEdMdWlu dCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMYnl0ZSB2YWx1ZSA9IHNbcmVkSW5kZXhd OyBpZiAoc2l6ZW9mKEdMYnl0ZSkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUg KikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07 IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTGJ5dGUpID09IDQpIHsgeyBH THVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVz WzBdOyBieXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsgdG1wID0gYnl0ZXNbMV07 IGJ5dGVzWzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OyB9IHJnYmFbaV1bMF0gPSAo R0xmbG9hdCkgKCgyLjBGICogKHZhbHVlKSArIDEuMEYpICogKDEuMEYvMjU1LjBGKSk7IHMgKz0g c3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMYnl0ZSAqcyA9IChjb25zdCBHTGJ5dGUgKikgc3Jj OyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzBdID0gKEdMZmxv YXQpICgoMi4wRiAqIChzW3JlZEluZGV4XSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikpOyBzICs9 IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGdyZWVuSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsg Zm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzFdID0gMC4wRjsgfSB9IGVsc2UgaWYg KHN3YXBCeXRlcykgeyBjb25zdCBHTGJ5dGUgKnMgPSAoY29uc3QgR0xieXRlICopIHNyYzsgR0x1 aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0xieXRlIHZhbHVlID0gc1tncmVlbklu ZGV4XTsgaWYgKHNpemVvZihHTGJ5dGUpID09IDIpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVi eXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVz WzFdOyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0xieXRlKSA9PSA0KSB7 IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBi eXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVz WzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzFd ID0gKEdMZmxvYXQpICgoMi4wRiAqICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikpOyBz ICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTGJ5dGUgKnMgPSAoY29uc3QgR0xieXRlICop IHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVsxXSA9IChH TGZsb2F0KSAoKDIuMEYgKiAoc1tncmVlbkluZGV4XSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikp OyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGJsdWVJbmRleCkgPCAwKSB7IEdMdWlu dCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0gPSAwLjBGOyB9IH0gZWxz ZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0IEdMYnl0ZSAqcyA9IChjb25zdCBHTGJ5dGUgKikgc3Jj OyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyBHTGJ5dGUgdmFsdWUgPSBzW2Js dWVJbmRleF07IGlmIChzaXplb2YoR0xieXRlKSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAo R0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBi eXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMYnl0ZSkgPT0g NCkgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1w ID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0gdG1wOyB0bXAgPSBi eXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7IH07IH0gcmdiYVtp XVsyXSA9IChHTGZsb2F0KSAoKDIuMEYgKiAodmFsdWUpICsgMS4wRikgKiAoMS4wRi8yNTUuMEYp KTsgcyArPSBzdHJpZGU7IH0gfSBlbHNlIHsgY29uc3QgR0xieXRlICpzID0gKGNvbnN0IEdMYnl0 ZSAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0g PSAoR0xmbG9hdCkgKCgyLjBGICogKHNbYmx1ZUluZGV4XSkgKyAxLjBGKSAqICgxLjBGLzI1NS4w RikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGFscGhhSW5kZXgpIDwgMCkgeyBH THVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzNdID0gMS4wRjsgfSB9 IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTGJ5dGUgKnMgPSAoY29uc3QgR0xieXRlICop IHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0xieXRlIHZhbHVlID0g c1thbHBoYUluZGV4XTsgaWYgKHNpemVvZihHTGJ5dGUpID09IDIpIHsgeyBHTHVieXRlICpieXRl cyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1sw XSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0xieXRl KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0 ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRt cCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSBy Z2JhW2ldWzNdID0gKEdMZmxvYXQpICgoMi4wRiAqICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzI1 NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTGJ5dGUgKnMgPSAoY29uc3Qg R0xieXRlICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtp XVszXSA9IChHTGZsb2F0KSAoKDIuMEYgKiAoc1thbHBoYUluZGV4XSkgKyAxLjBGKSAqICgxLjBG LzI1NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAw eDE0MDM6CiAgICAgICAgIGlmICgocmVkSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0g MDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzBdID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRl cykgeyBjb25zdCBHTHVzaG9ydCAqcyA9IChjb25zdCBHTHVzaG9ydCAqKSBzcmM7IEdMdWludCBp OyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMdXNob3J0IHZhbHVlID0gc1tyZWRJbmRleF07 IGlmIChzaXplb2YoR0x1c2hvcnQpID09IDIpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRl ICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFd OyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0x1c2hvcnQpID09IDQpIHsg eyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5 dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsgdG1wID0gYnl0ZXNb MV07IGJ5dGVzWzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OyB9IHJnYmFbaV1bMF0g PSAoR0xmbG9hdCkgKChHTGZsb2F0KSAodmFsdWUpICogKDEuMEYgLyA2NTUzNS4wRikpOyBzICs9 IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTHVzaG9ydCAqcyA9IChjb25zdCBHTHVzaG9ydCAq KSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMF0gPSAo R0xmbG9hdCkgKChHTGZsb2F0KSAoc1tyZWRJbmRleF0pICogKDEuMEYgLyA2NTUzNS4wRikpOyBz ICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGdyZWVuSW5kZXgpIDwgMCkgeyBHTHVpbnQg aTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzFdID0gMC4wRjsgfSB9IGVsc2Ug aWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTHVzaG9ydCAqcyA9IChjb25zdCBHTHVzaG9ydCAqKSBz cmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMdXNob3J0IHZhbHVlID0g c1tncmVlbkluZGV4XTsgaWYgKHNpemVvZihHTHVzaG9ydCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5 dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVz WzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTHVz aG9ydCkgPT0gNCkgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdM dWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0gdG1w OyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7IH07 IH0gcmdiYVtpXVsxXSA9IChHTGZsb2F0KSAoKEdMZmxvYXQpICh2YWx1ZSkgKiAoMS4wRiAvIDY1 NTM1LjBGKSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMdXNob3J0ICpzID0gKGNv bnN0IEdMdXNob3J0ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsg cmdiYVtpXVsxXSA9IChHTGZsb2F0KSAoKEdMZmxvYXQpIChzW2dyZWVuSW5kZXhdKSAqICgxLjBG IC8gNjU1MzUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfTsKICAgICAgICAgaWYgKChibHVlSW5kZXgp IDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzJdID0g MC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTHVzaG9ydCAqcyA9IChjb25z dCBHTHVzaG9ydCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdM dXNob3J0IHZhbHVlID0gc1tibHVlSW5kZXhdOyBpZiAoc2l6ZW9mKEdMdXNob3J0KSA9PSAyKSB7 IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBi eXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07IH0gZWxzZSBp ZiAoc2l6ZW9mKEdMdXNob3J0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAq KSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsg Ynl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRl c1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzJdID0gKEdMZmxvYXQpICgoR0xmbG9hdCkgKHZhbHVl KSAqICgxLjBGIC8gNjU1MzUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfSBlbHNlIHsgY29uc3QgR0x1 c2hvcnQgKnMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsg aSA8IG47IGkrKykgeyByZ2JhW2ldWzJdID0gKEdMZmxvYXQpICgoR0xmbG9hdCkgKHNbYmx1ZUlu ZGV4XSkgKiAoMS4wRiAvIDY1NTM1LjBGKSk7IHMgKz0gc3RyaWRlOyB9IH07CiAgICAgICAgIGlm ICgoYWxwaGFJbmRleCkgPCAwKSB7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7 IHJnYmFbaV1bM10gPSAxLjBGOyB9IH0gZWxzZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0IEdMdXNo b3J0ICpzID0gKGNvbnN0IEdMdXNob3J0ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsgR0x1c2hvcnQgdmFsdWUgPSBzW2FscGhhSW5kZXhdOyBpZiAoc2l6ZW9mKEdM dXNob3J0KSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsg R0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0 bXA7IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMdXNob3J0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0 ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNb MF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9 IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzNdID0gKEdMZmxvYXQpICgo R0xmbG9hdCkgKHZhbHVlKSAqICgxLjBGIC8gNjU1MzUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfSBl bHNlIHsgY29uc3QgR0x1c2hvcnQgKnMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOyBHTHVpbnQg aTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzNdID0gKEdMZmxvYXQpICgoR0xm bG9hdCkgKHNbYWxwaGFJbmRleF0pICogKDEuMEYgLyA2NTUzNS4wRikpOyBzICs9IHN0cmlkZTsg fSB9OwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDI6CiAgICAgICAgIGlmICgocmVk SW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ld WzBdID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTHNob3J0ICpzID0g KGNvbnN0IEdMc2hvcnQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykg eyBHTHNob3J0IHZhbHVlID0gc1tyZWRJbmRleF07IGlmIChzaXplb2YoR0xzaG9ydCkgPT0gMikg eyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0g Ynl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2Ug aWYgKHNpemVvZihHTHNob3J0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAq KSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsg Ynl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRl c1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzBdID0gKEdMZmxvYXQpICgoMi4wRiAqICh2YWx1ZSkg KyAxLjBGKSAqICgxLjBGLzY1NTM1LjBGKSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0 IEdMc2hvcnQgKnMgPSAoY29uc3QgR0xzaG9ydCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMF0gPSAoR0xmbG9hdCkgKCgyLjBGICogKHNbcmVkSW5k ZXhdKSArIDEuMEYpICogKDEuMEYvNjU1MzUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfTsKICAgICAg ICAgaWYgKChncmVlbkluZGV4KSA8IDApIHsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsgcmdiYVtpXVsxXSA9IDAuMEY7IH0gfSBlbHNlIGlmIChzd2FwQnl0ZXMpIHsgY29uc3Qg R0xzaG9ydCAqcyA9IChjb25zdCBHTHNob3J0ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7 IGkgPCBuOyBpKyspIHsgR0xzaG9ydCB2YWx1ZSA9IHNbZ3JlZW5JbmRleF07IGlmIChzaXplb2Yo R0xzaG9ydCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7 IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0g dG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTHNob3J0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0 ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNb MF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9 IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzFdID0gKEdMZmxvYXQpICgo Mi4wRiAqICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzY1NTM1LjBGKSk7IHMgKz0gc3RyaWRlOyB9 IH0gZWxzZSB7IGNvbnN0IEdMc2hvcnQgKnMgPSAoY29uc3QgR0xzaG9ydCAqKSBzcmM7IEdMdWlu dCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMV0gPSAoR0xmbG9hdCkgKCgy LjBGICogKHNbZ3JlZW5JbmRleF0pICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOyBzICs9IHN0 cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGJsdWVJbmRleCkgPCAwKSB7IEdMdWludCBpOyBmb3Ig KGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0gPSAwLjBGOyB9IH0gZWxzZSBpZiAoc3dh cEJ5dGVzKSB7IGNvbnN0IEdMc2hvcnQgKnMgPSAoY29uc3QgR0xzaG9ydCAqKSBzcmM7IEdMdWlu dCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMc2hvcnQgdmFsdWUgPSBzW2JsdWVJbmRl eF07IGlmIChzaXplb2YoR0xzaG9ydCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5 dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNb MV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTHNob3J0KSA9PSA0KSB7 IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBi eXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVz WzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzJd ID0gKEdMZmxvYXQpICgoMi4wRiAqICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzY1NTM1LjBGKSk7 IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMc2hvcnQgKnMgPSAoY29uc3QgR0xzaG9y dCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0g PSAoR0xmbG9hdCkgKCgyLjBGICogKHNbYmx1ZUluZGV4XSkgKyAxLjBGKSAqICgxLjBGLzY1NTM1 LjBGKSk7IHMgKz0gc3RyaWRlOyB9IH07CiAgICAgICAgIGlmICgoYWxwaGFJbmRleCkgPCAwKSB7 IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bM10gPSAxLjBGOyB9 IH0gZWxzZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0IEdMc2hvcnQgKnMgPSAoY29uc3QgR0xzaG9y dCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMc2hvcnQgdmFs dWUgPSBzW2FscGhhSW5kZXhdOyBpZiAoc2l6ZW9mKEdMc2hvcnQpID09IDIpIHsgeyBHTHVieXRl ICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBi eXRlc1swXSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2Yo R0xzaG9ydCkgPT0gNCkgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7 IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0g dG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7 IH07IH0gcmdiYVtpXVszXSA9IChHTGZsb2F0KSAoKDIuMEYgKiAodmFsdWUpICsgMS4wRikgKiAo MS4wRi82NTUzNS4wRikpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTHNob3J0ICpz ID0gKGNvbnN0IEdMc2hvcnQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkr KykgeyByZ2JhW2ldWzNdID0gKEdMZmxvYXQpICgoMi4wRiAqIChzW2FscGhhSW5kZXhdKSArIDEu MEYpICogKDEuMEYvNjU1MzUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfTsKICAgICAgICAgYnJlYWs7 CiAgICAgIGNhc2UgMHgxNDA1OgogICAgICAgICBpZiAoKHJlZEluZGV4KSA8IDApIHsgR0x1aW50 IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVswXSA9IDAuMEY7IH0gfSBlbHNl IGlmIChzd2FwQnl0ZXMpIHsgY29uc3QgR0x1aW50ICpzID0gKGNvbnN0IEdMdWludCAqKSBzcmM7 IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMdWludCB2YWx1ZSA9IHNbcmVk SW5kZXhdOyBpZiAoc2l6ZW9mKEdMdWludCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdM dWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0 ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTHVpbnQpID09IDQp IHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9 IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRtcDsgdG1wID0gYnl0 ZXNbMV07IGJ5dGVzWzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9OyB9IHJnYmFbaV1b MF0gPSAoR0xmbG9hdCkgKChHTGZsb2F0KSAodmFsdWUpICogKDEuMEYgLyA0Mjk0OTY3Mjk1LjBG KSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMdWludCAqcyA9IChjb25zdCBHTHVp bnQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzBd ID0gKEdMZmxvYXQpICgoR0xmbG9hdCkgKHNbcmVkSW5kZXhdKSAqICgxLjBGIC8gNDI5NDk2NzI5 NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGdyZWVuSW5kZXgpIDwgMCkg eyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzFdID0gMC4wRjsg fSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTHVpbnQgKnMgPSAoY29uc3QgR0x1aW50 ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0x1aW50IHZhbHVl ID0gc1tncmVlbkluZGV4XTsgaWYgKHNpemVvZihHTHVpbnQpID09IDIpIHsgeyBHTHVieXRlICpi eXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRl c1swXSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0x1 aW50KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1 Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7 IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsg fSByZ2JhW2ldWzFdID0gKEdMZmxvYXQpICgoR0xmbG9hdCkgKHZhbHVlKSAqICgxLjBGIC8gNDI5 NDk2NzI5NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTHVpbnQgKnMgPSAo Y29uc3QgR0x1aW50ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsg cmdiYVtpXVsxXSA9IChHTGZsb2F0KSAoKEdMZmxvYXQpIChzW2dyZWVuSW5kZXhdKSAqICgxLjBG IC8gNDI5NDk2NzI5NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGJsdWVJ bmRleCkgPCAwKSB7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1b Ml0gPSAwLjBGOyB9IH0gZWxzZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0IEdMdWludCAqcyA9IChj b25zdCBHTHVpbnQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyBH THVpbnQgdmFsdWUgPSBzW2JsdWVJbmRleF07IGlmIChzaXplb2YoR0x1aW50KSA9PSAyKSB7IHsg R0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRl c1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07IH0gZWxzZSBpZiAo c2l6ZW9mKEdMdWludCkgPT0gNCkgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2 YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVz WzNdID0gdG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0g PSB0bXA7IH07IH0gcmdiYVtpXVsyXSA9IChHTGZsb2F0KSAoKEdMZmxvYXQpICh2YWx1ZSkgKiAo MS4wRiAvIDQyOTQ5NjcyOTUuMEYpKTsgcyArPSBzdHJpZGU7IH0gfSBlbHNlIHsgY29uc3QgR0x1 aW50ICpzID0gKGNvbnN0IEdMdWludCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKSB7IHJnYmFbaV1bMl0gPSAoR0xmbG9hdCkgKChHTGZsb2F0KSAoc1tibHVlSW5kZXhd KSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBp ZiAoKGFscGhhSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykg eyByZ2JhW2ldWzNdID0gMS4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTHVp bnQgKnMgPSAoY29uc3QgR0x1aW50ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBu OyBpKyspIHsgR0x1aW50IHZhbHVlID0gc1thbHBoYUluZGV4XTsgaWYgKHNpemVvZihHTHVpbnQp ID09IDIpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRl IHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsg fSBlbHNlIGlmIChzaXplb2YoR0x1aW50KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1 Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRl c1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJd OyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzNdID0gKEdMZmxvYXQpICgoR0xmbG9hdCkg KHZhbHVlKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2Ug eyBjb25zdCBHTHVpbnQgKnMgPSAoY29uc3QgR0x1aW50ICopIHNyYzsgR0x1aW50IGk7IGZvciAo aSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVszXSA9IChHTGZsb2F0KSAoKEdMZmxvYXQpIChz W2FscGhhSW5kZXhdKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOyBzICs9IHN0cmlkZTsgfSB9 OwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDQ6CiAgICAgICAgIGlmICgocmVkSW5k ZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzBd ID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTGludCAqcyA9IChjb25z dCBHTGludCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdMaW50 IHZhbHVlID0gc1tyZWRJbmRleF07IGlmIChzaXplb2YoR0xpbnQpID09IDIpIHsgeyBHTHVieXRl ICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBi eXRlc1swXSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2Yo R0xpbnQpID09IDQpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUpOyBH THVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzNdOyBieXRlc1szXSA9IHRt cDsgdG1wID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gYnl0ZXNbMl07IGJ5dGVzWzJdID0gdG1wOyB9 OyB9IHJnYmFbaV1bMF0gPSAoR0xmbG9hdCkgKCgyLjBGICogKHZhbHVlKSArIDEuMEYpICogKDEu MEYvNDI5NDk2NzI5NC4wRikpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTGludCAq cyA9IChjb25zdCBHTGludCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsr KSB7IHJnYmFbaV1bMF0gPSAoR0xmbG9hdCkgKCgyLjBGICogKHNbcmVkSW5kZXhdKSArIDEuMEYp ICogKDEuMEYvNDI5NDk2NzI5NC4wRikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAo KGdyZWVuSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyBy Z2JhW2ldWzFdID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBjb25zdCBHTGludCAq cyA9IChjb25zdCBHTGludCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsr KSB7IEdMaW50IHZhbHVlID0gc1tncmVlbkluZGV4XTsgaWYgKHNpemVvZihHTGludCkgPT0gMikg eyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0g Ynl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2Ug aWYgKHNpemVvZihHTGludCkgPT0gNCkgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikg Jih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5 dGVzWzNdID0gdG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNb Ml0gPSB0bXA7IH07IH0gcmdiYVtpXVsxXSA9IChHTGZsb2F0KSAoKDIuMEYgKiAodmFsdWUpICsg MS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNv bnN0IEdMaW50ICpzID0gKGNvbnN0IEdMaW50ICopIHNyYzsgR0x1aW50IGk7IGZvciAoaSA9IDA7 IGkgPCBuOyBpKyspIHsgcmdiYVtpXVsxXSA9IChHTGZsb2F0KSAoKDIuMEYgKiAoc1tncmVlbklu ZGV4XSkgKyAxLjBGKSAqICgxLjBGLzQyOTQ5NjcyOTQuMEYpKTsgcyArPSBzdHJpZGU7IH0gfTsK ICAgICAgICAgaWYgKChibHVlSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8 IG47IGkrKykgeyByZ2JhW2ldWzJdID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBj b25zdCBHTGludCAqcyA9IChjb25zdCBHTGludCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7IEdMaW50IHZhbHVlID0gc1tibHVlSW5kZXhdOyBpZiAoc2l6ZW9mKEdM aW50KSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1 Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSB0bXA7 IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMaW50KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAo R0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBi eXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVz WzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzJdID0gKEdMZmxvYXQpICgoMi4wRiAq ICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzQyOTQ5NjcyOTQuMEYpKTsgcyArPSBzdHJpZGU7IH0g fSBlbHNlIHsgY29uc3QgR0xpbnQgKnMgPSAoY29uc3QgR0xpbnQgKikgc3JjOyBHTHVpbnQgaTsg Zm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzJdID0gKEdMZmxvYXQpICgoMi4wRiAq IChzW2JsdWVJbmRleF0pICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7IHMgKz0gc3Ry aWRlOyB9IH07CiAgICAgICAgIGlmICgoYWxwaGFJbmRleCkgPCAwKSB7IEdMdWludCBpOyBmb3Ig KGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bM10gPSAxLjBGOyB9IH0gZWxzZSBpZiAoc3dh cEJ5dGVzKSB7IGNvbnN0IEdMaW50ICpzID0gKGNvbnN0IEdMaW50ICopIHNyYzsgR0x1aW50IGk7 IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0xpbnQgdmFsdWUgPSBzW2FscGhhSW5kZXhdOyBp ZiAoc2l6ZW9mKEdMaW50KSA9PSAyKSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAm KHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1sxXTsgYnl0 ZXNbMV0gPSB0bXA7IH07IH0gZWxzZSBpZiAoc2l6ZW9mKEdMaW50KSA9PSA0KSB7IHsgR0x1Ynl0 ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsg Ynl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRl c1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzNdID0gKEdMZmxv YXQpICgoMi4wRiAqICh2YWx1ZSkgKyAxLjBGKSAqICgxLjBGLzQyOTQ5NjcyOTQuMEYpKTsgcyAr PSBzdHJpZGU7IH0gfSBlbHNlIHsgY29uc3QgR0xpbnQgKnMgPSAoY29uc3QgR0xpbnQgKikgc3Jj OyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyByZ2JhW2ldWzNdID0gKEdMZmxv YXQpICgoMi4wRiAqIChzW2FscGhhSW5kZXhdKSArIDEuMEYpICogKDEuMEYvNDI5NDk2NzI5NC4w RikpOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDY6 CiAgICAgICAgIGlmICgocmVkSW5kZXgpIDwgMCkgeyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8 IG47IGkrKykgeyByZ2JhW2ldWzBdID0gMC4wRjsgfSB9IGVsc2UgaWYgKHN3YXBCeXRlcykgeyBj b25zdCBHTGZsb2F0ICpzID0gKGNvbnN0IEdMZmxvYXQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChp ID0gMDsgaSA8IG47IGkrKykgeyBHTGZsb2F0IHZhbHVlID0gc1tyZWRJbmRleF07IGlmIChzaXpl b2YoR0xmbG9hdCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1 ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFd ID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTGZsb2F0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAq Ynl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0 ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sx XSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2JhW2ldWzBdID0gKEdMZmxvYXQp IChHTGZsb2F0KSh2YWx1ZSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMZmxvYXQg KnMgPSAoY29uc3QgR0xmbG9hdCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsg aSsrKSB7IHJnYmFbaV1bMF0gPSAoR0xmbG9hdCkgKEdMZmxvYXQpKHNbcmVkSW5kZXhdKTsgcyAr PSBzdHJpZGU7IH0gfTsKICAgICAgICAgaWYgKChncmVlbkluZGV4KSA8IDApIHsgR0x1aW50IGk7 IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgcmdiYVtpXVsxXSA9IDAuMEY7IH0gfSBlbHNlIGlm IChzd2FwQnl0ZXMpIHsgY29uc3QgR0xmbG9hdCAqcyA9IChjb25zdCBHTGZsb2F0ICopIHNyYzsg R0x1aW50IGk7IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsgR0xmbG9hdCB2YWx1ZSA9IHNbZ3Jl ZW5JbmRleF07IGlmIChzaXplb2YoR0xmbG9hdCkgPT0gMikgeyB7IEdMdWJ5dGUgKmJ5dGVzID0g KEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0g Ynl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYgKHNpemVvZihHTGZsb2F0KSA9 PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAmKHZhbHVlKTsgR0x1Ynl0ZSB0 bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0bXA7IHRtcCA9 IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsgfTsgfSByZ2Jh W2ldWzFdID0gKEdMZmxvYXQpIChHTGZsb2F0KSh2YWx1ZSk7IHMgKz0gc3RyaWRlOyB9IH0gZWxz ZSB7IGNvbnN0IEdMZmxvYXQgKnMgPSAoY29uc3QgR0xmbG9hdCAqKSBzcmM7IEdMdWludCBpOyBm b3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMV0gPSAoR0xmbG9hdCkgKEdMZmxvYXQp KHNbZ3JlZW5JbmRleF0pOyBzICs9IHN0cmlkZTsgfSB9OwogICAgICAgICBpZiAoKGJsdWVJbmRl eCkgPCAwKSB7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0g PSAwLjBGOyB9IH0gZWxzZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0IEdMZmxvYXQgKnMgPSAoY29u c3QgR0xmbG9hdCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IEdM ZmxvYXQgdmFsdWUgPSBzW2JsdWVJbmRleF07IGlmIChzaXplb2YoR0xmbG9hdCkgPT0gMikgeyB7 IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0 ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9OyB9IGVsc2UgaWYg KHNpemVvZihHTGZsb2F0KSA9PSA0KSB7IHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1Ynl0ZSAqKSAm KHZhbHVlKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0 ZXNbM10gPSB0bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1sy XSA9IHRtcDsgfTsgfSByZ2JhW2ldWzJdID0gKEdMZmxvYXQpIChHTGZsb2F0KSh2YWx1ZSk7IHMg Kz0gc3RyaWRlOyB9IH0gZWxzZSB7IGNvbnN0IEdMZmxvYXQgKnMgPSAoY29uc3QgR0xmbG9hdCAq KSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7IHJnYmFbaV1bMl0gPSAo R0xmbG9hdCkgKEdMZmxvYXQpKHNbYmx1ZUluZGV4XSk7IHMgKz0gc3RyaWRlOyB9IH07CiAgICAg ICAgIGlmICgoYWxwaGFJbmRleCkgPCAwKSB7IEdMdWludCBpOyBmb3IgKGkgPSAwOyBpIDwgbjsg aSsrKSB7IHJnYmFbaV1bM10gPSAxLjBGOyB9IH0gZWxzZSBpZiAoc3dhcEJ5dGVzKSB7IGNvbnN0 IEdMZmxvYXQgKnMgPSAoY29uc3QgR0xmbG9hdCAqKSBzcmM7IEdMdWludCBpOyBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7IEdMZmxvYXQgdmFsdWUgPSBzW2FscGhhSW5kZXhdOyBpZiAoc2l6ZW9m KEdMZmxvYXQpID09IDIpIHsgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYodmFsdWUp OyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9 IHRtcDsgfTsgfSBlbHNlIGlmIChzaXplb2YoR0xmbG9hdCkgPT0gNCkgeyB7IEdMdWJ5dGUgKmJ5 dGVzID0gKEdMdWJ5dGUgKikgJih2YWx1ZSk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVz WzBdID0gYnl0ZXNbM107IGJ5dGVzWzNdID0gdG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0g PSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0bXA7IH07IH0gcmdiYVtpXVszXSA9IChHTGZsb2F0KSAo R0xmbG9hdCkodmFsdWUpOyBzICs9IHN0cmlkZTsgfSB9IGVsc2UgeyBjb25zdCBHTGZsb2F0ICpz ID0gKGNvbnN0IEdMZmxvYXQgKikgc3JjOyBHTHVpbnQgaTsgZm9yIChpID0gMDsgaSA8IG47IGkr KykgeyByZ2JhW2ldWzNdID0gKEdMZmxvYXQpIChHTGZsb2F0KShzW2FscGhhSW5kZXhdKTsgcyAr PSBzdHJpZGU7IH0gfTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4MDMyOgogICAgICAg ICB7CiAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnVic3JjID0gKGNvbnN0IEdMdWJ5dGUgKikg c3JjOwogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47 IGkgKyspIHsKICAgICAgICAgICAgICAgR0x1Ynl0ZSBwID0gdWJzcmNbaV07CiAgICAgICAgICAg ICAgIHJnYmFbaV1bMF0gPSAoKHAgPj4gNSkgKSAqICgxLjBGIC8gNy4wRik7CiAgICAgICAgICAg ICAgIHJnYmFbaV1bMV0gPSAoKHAgPj4gMikgJiAweDcpICogKDEuMEYgLyA3LjBGKTsKICAgICAg ICAgICAgICAgcmdiYVtpXVsyXSA9ICgocCApICYgMHgzKSAqICgxLjBGIC8gMy4wRik7CiAgICAg ICAgICAgICAgIHJnYmFbaV1bM10gPSAxLjBGOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAg ICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4MzYyOgogICAgICAgICB7CiAgICAgICAgICAgIGNv bnN0IEdMdWJ5dGUgKnVic3JjID0gKGNvbnN0IEdMdWJ5dGUgKikgc3JjOwogICAgICAgICAgICBH THVpbnQgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAg ICAgICAgR0x1Ynl0ZSBwID0gdWJzcmNbaV07CiAgICAgICAgICAgICAgIHJnYmFbaV1bMF0gPSAo KHAgKSAmIDB4NykgKiAoMS4wRiAvIDcuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldWzFdID0g KChwID4+IDMpICYgMHg3KSAqICgxLjBGIC8gNy4wRik7CiAgICAgICAgICAgICAgIHJnYmFbaV1b Ml0gPSAoKHAgPj4gNikgKSAqICgxLjBGIC8gMy4wRik7CiAgICAgICAgICAgICAgIHJnYmFbaV1b M10gPSAxLjBGOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg IGNhc2UgMHg4MzYzOgogICAgICAgICBpZiAoc3dhcEJ5dGVzKSB7CiAgICAgICAgICAgIGNvbnN0 IEdMdXNob3J0ICp1c3NyYyA9IChjb25zdCBHTHVzaG9ydCAqKSBzcmM7CiAgICAgICAgICAgIEdM dWludCBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAg ICAgICBHTHVzaG9ydCBwID0gdXNzcmNbaV07CiAgICAgICAgICAgICAgIHsgR0x1Ynl0ZSAqYnl0 ZXMgPSAoR0x1Ynl0ZSAqKSAmKHApOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9 IGJ5dGVzWzFdOyBieXRlc1sxXSA9IHRtcDsgfTsKICAgICAgICAgICAgICAgcmdiYVtpXVswXSA9 ICgocCA+PiAxMSkgKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldWzFd ID0gKChwID4+IDUpICYgMHgzZikgKiAoMS4wRiAvIDYzLjBGKTsKICAgICAgICAgICAgICAgcmdi YVtpXVsyXSA9ICgocCApICYgMHgxZikgKiAoMS4wRiAvIDMxLjBGKTsKICAgICAgICAgICAgICAg cmdiYVtpXVszXSA9IDEuMEY7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNl IHsKICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnVzc3JjID0gKGNvbnN0IEdMdXNob3J0ICop IHNyYzsKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBu OyBpICsrKSB7CiAgICAgICAgICAgICAgIEdMdXNob3J0IHAgPSB1c3NyY1tpXTsKICAgICAgICAg ICAgICAgcmdiYVtpXVswXSA9ICgocCA+PiAxMSkgKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAg ICAgICAgICByZ2JhW2ldWzFdID0gKChwID4+IDUpICYgMHgzZikgKiAoMS4wRiAvIDYzLjBGKTsK ICAgICAgICAgICAgICAgcmdiYVtpXVsyXSA9ICgocCApICYgMHgxZikgKiAoMS4wRiAvIDMxLjBG KTsKICAgICAgICAgICAgICAgcmdiYVtpXVszXSA9IDEuMEY7CiAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDgzNjQ6CiAgICAgICAgIGlmIChzd2Fw Qnl0ZXMpIHsKICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnVzc3JjID0gKGNvbnN0IEdMdXNo b3J0ICopIHNyYzsKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBuOyBpICsrKSB7CiAgICAgICAgICAgICAgIEdMdXNob3J0IHAgPSB1c3NyY1tpXTsKICAg ICAgICAgICAgICAgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYocCk7IEdMdWJ5dGUg dG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbMV07IGJ5dGVzWzFdID0gdG1wOyB9Owog ICAgICAgICAgICAgICByZ2JhW2ldWzBdID0gKChwICkgJiAweDFmKSAqICgxLjBGIC8gMzEuMEYp OwogICAgICAgICAgICAgICByZ2JhW2ldWzFdID0gKChwID4+IDUpICYgMHgzZikgKiAoMS4wRiAv IDYzLjBGKTsKICAgICAgICAgICAgICAgcmdiYVtpXVsyXSA9ICgocCA+PiAxMSkgKSAqICgxLjBG IC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldWzNdID0gMS4wRjsKICAgICAgICAgICAg fQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICBjb25zdCBHTHVzaG9ydCAq dXNzcmMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOwogICAgICAgICAgICBHTHVpbnQgaTsKICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAgICAgR0x1c2hv cnQgcCA9IHVzc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldWzBdID0gKChwICkgJiAweDFm KSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldWzFdID0gKChwID4+IDUp ICYgMHgzZikgKiAoMS4wRiAvIDYzLjBGKTsKICAgICAgICAgICAgICAgcmdiYVtpXVsyXSA9ICgo cCA+PiAxMSkgKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldWzNdID0g MS4wRjsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNl IDB4ODAzMzoKICAgICAgICAgaWYgKHN3YXBCeXRlcykgewogICAgICAgICAgICBjb25zdCBHTHVz aG9ydCAqdXNzcmMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOwogICAgICAgICAgICBHTHVpbnQg aTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAgICAg R0x1c2hvcnQgcCA9IHVzc3JjW2ldOwogICAgICAgICAgICAgICB7IEdMdWJ5dGUgKmJ5dGVzID0g KEdMdWJ5dGUgKikgJihwKTsgR0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRl c1sxXTsgYnl0ZXNbMV0gPSB0bXA7IH07CiAgICAgICAgICAgICAgIHJnYmFbaV1bckNvbXBdID0g KChwID4+IDEyKSApICogKDEuMEYgLyAxNS4wRik7CiAgICAgICAgICAgICAgIHJnYmFbaV1bZ0Nv bXBdID0gKChwID4+IDgpICYgMHhmKSAqICgxLjBGIC8gMTUuMEYpOwogICAgICAgICAgICAgICBy Z2JhW2ldW2JDb21wXSA9ICgocCA+PiA0KSAmIDB4ZikgKiAoMS4wRiAvIDE1LjBGKTsKICAgICAg ICAgICAgICAgcmdiYVtpXVthQ29tcF0gPSAoKHAgKSAmIDB4ZikgKiAoMS4wRiAvIDE1LjBGKTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICBjb25z dCBHTHVzaG9ydCAqdXNzcmMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOwogICAgICAgICAgICBH THVpbnQgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAg ICAgICAgR0x1c2hvcnQgcCA9IHVzc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21w XSA9ICgocCA+PiAxMikgKSAqICgxLjBGIC8gMTUuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ld W2dDb21wXSA9ICgocCA+PiA4KSAmIDB4ZikgKiAoMS4wRiAvIDE1LjBGKTsKICAgICAgICAgICAg ICAgcmdiYVtpXVtiQ29tcF0gPSAoKHAgPj4gNCkgJiAweGYpICogKDEuMEYgLyAxNS4wRik7CiAg ICAgICAgICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwICkgJiAweGYpICogKDEuMEYgLyAxNS4w Rik7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAw eDgzNjU6CiAgICAgICAgIGlmIChzd2FwQnl0ZXMpIHsKICAgICAgICAgICAgY29uc3QgR0x1c2hv cnQgKnVzc3JjID0gKGNvbnN0IEdMdXNob3J0ICopIHNyYzsKICAgICAgICAgICAgR0x1aW50IGk7 CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpICsrKSB7CiAgICAgICAgICAgICAgIEdM dXNob3J0IHAgPSB1c3NyY1tpXTsKICAgICAgICAgICAgICAgeyBHTHVieXRlICpieXRlcyA9IChH THVieXRlICopICYocCk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNb MV07IGJ5dGVzWzFdID0gdG1wOyB9OwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9ICgo cCApICYgMHhmKSAqICgxLjBGIC8gMTUuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2dDb21w XSA9ICgocCA+PiA0KSAmIDB4ZikgKiAoMS4wRiAvIDE1LjBGKTsKICAgICAgICAgICAgICAgcmdi YVtpXVtiQ29tcF0gPSAoKHAgPj4gOCkgJiAweGYpICogKDEuMEYgLyAxNS4wRik7CiAgICAgICAg ICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwID4+IDEyKSApICogKDEuMEYgLyAxNS4wRik7CiAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY29uc3Qg R0x1c2hvcnQgKnVzc3JjID0gKGNvbnN0IEdMdXNob3J0ICopIHNyYzsKICAgICAgICAgICAgR0x1 aW50IGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpICsrKSB7CiAgICAgICAgICAg ICAgIEdMdXNob3J0IHAgPSB1c3NyY1tpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0g PSAoKHAgKSAmIDB4ZikgKiAoMS4wRiAvIDE1LjBGKTsKICAgICAgICAgICAgICAgcmdiYVtpXVtn Q29tcF0gPSAoKHAgPj4gNCkgJiAweGYpICogKDEuMEYgLyAxNS4wRik7CiAgICAgICAgICAgICAg IHJnYmFbaV1bYkNvbXBdID0gKChwID4+IDgpICYgMHhmKSAqICgxLjBGIC8gMTUuMEYpOwogICAg ICAgICAgICAgICByZ2JhW2ldW2FDb21wXSA9ICgocCA+PiAxMikgKSAqICgxLjBGIC8gMTUuMEYp OwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4 MDM0OgogICAgICAgICBpZiAoc3dhcEJ5dGVzKSB7CiAgICAgICAgICAgIGNvbnN0IEdMdXNob3J0 ICp1c3NyYyA9IChjb25zdCBHTHVzaG9ydCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwog ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVz aG9ydCBwID0gdXNzcmNbaV07CiAgICAgICAgICAgICAgIHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1 Ynl0ZSAqKSAmKHApOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFd OyBieXRlc1sxXSA9IHRtcDsgfTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0gPSAoKHAg Pj4gMTEpICkgKiAoMS4wRiAvIDMxLjBGKTsKICAgICAgICAgICAgICAgcmdiYVtpXVtnQ29tcF0g PSAoKHAgPj4gNikgJiAweDFmKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2Jh W2ldW2JDb21wXSA9ICgocCA+PiAxKSAmIDB4MWYpICogKDEuMEYgLyAzMS4wRik7CiAgICAgICAg ICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwICkgJiAweDEpICogKDEuMEYgLyAxLjBGKTsKICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICBjb25zdCBH THVzaG9ydCAqdXNzcmMgPSAoY29uc3QgR0x1c2hvcnQgKikgc3JjOwogICAgICAgICAgICBHTHVp bnQgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAg ICAgR0x1c2hvcnQgcCA9IHVzc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9 ICgocCA+PiAxMSkgKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2dD b21wXSA9ICgocCA+PiA2KSAmIDB4MWYpICogKDEuMEYgLyAzMS4wRik7CiAgICAgICAgICAgICAg IHJnYmFbaV1bYkNvbXBdID0gKChwID4+IDEpICYgMHgxZikgKiAoMS4wRiAvIDMxLjBGKTsKICAg ICAgICAgICAgICAgcmdiYVtpXVthQ29tcF0gPSAoKHAgKSAmIDB4MSkgKiAoMS4wRiAvIDEuMEYp OwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg4 MzY2OgogICAgICAgICBpZiAoc3dhcEJ5dGVzKSB7CiAgICAgICAgICAgIGNvbnN0IEdMdXNob3J0 ICp1c3NyYyA9IChjb25zdCBHTHVzaG9ydCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwog ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVz aG9ydCBwID0gdXNzcmNbaV07CiAgICAgICAgICAgICAgIHsgR0x1Ynl0ZSAqYnl0ZXMgPSAoR0x1 Ynl0ZSAqKSAmKHApOyBHTHVieXRlIHRtcCA9IGJ5dGVzWzBdOyBieXRlc1swXSA9IGJ5dGVzWzFd OyBieXRlc1sxXSA9IHRtcDsgfTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0gPSAoKHAg KSAmIDB4MWYpICogKDEuMEYgLyAzMS4wRik7CiAgICAgICAgICAgICAgIHJnYmFbaV1bZ0NvbXBd ID0gKChwID4+IDUpICYgMHgxZikgKiAoMS4wRiAvIDMxLjBGKTsKICAgICAgICAgICAgICAgcmdi YVtpXVtiQ29tcF0gPSAoKHAgPj4gMTApICYgMHgxZikgKiAoMS4wRiAvIDMxLjBGKTsKICAgICAg ICAgICAgICAgcmdiYVtpXVthQ29tcF0gPSAoKHAgPj4gMTUpICkgKiAoMS4wRiAvIDEuMEYpOwog ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbnN0 IEdMdXNob3J0ICp1c3NyYyA9IChjb25zdCBHTHVzaG9ydCAqKSBzcmM7CiAgICAgICAgICAgIEdM dWludCBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAg ICAgICBHTHVzaG9ydCBwID0gdXNzcmNbaV07CiAgICAgICAgICAgICAgIHJnYmFbaV1bckNvbXBd ID0gKChwICkgJiAweDFmKSAqICgxLjBGIC8gMzEuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ld W2dDb21wXSA9ICgocCA+PiA1KSAmIDB4MWYpICogKDEuMEYgLyAzMS4wRik7CiAgICAgICAgICAg ICAgIHJnYmFbaV1bYkNvbXBdID0gKChwID4+IDEwKSAmIDB4MWYpICogKDEuMEYgLyAzMS4wRik7 CiAgICAgICAgICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwID4+IDE1KSApICogKDEuMEYgLyAx LjBGKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNl IDB4ODAzNToKICAgICAgICAgaWYgKHN3YXBCeXRlcykgewogICAgICAgICAgICBjb25zdCBHTHVp bnQgKnVpc3JjID0gKGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwog ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVp bnQgcCA9IHVpc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9IF9tZXNhX3Vi eXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCApICYgMHhmZildOwogICAg ICAgICAgICAgICByZ2JhW2ldW2dDb21wXSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9yX3Rh YlsodW5zaWduZWQgaW50KSgocCA+PiA4KSAmIDB4ZmYpXTsKICAgICAgICAgICAgICAgcmdiYVtp XVtiQ29tcF0gPSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCko KHAgPj4gMTYpICYgMHhmZildOwogICAgICAgICAgICAgICByZ2JhW2ldW2FDb21wXSA9IF9tZXNh X3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCA+PiAyNCkpXTsKICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICBjb25zdCBH THVpbnQgKnVpc3JjID0gKGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBp OwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBH THVpbnQgcCA9IHVpc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9IF9tZXNh X3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCA+PiAyNCkpXTsKICAg ICAgICAgICAgICAgcmdiYVtpXVtnQ29tcF0gPSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90 YWJbKHVuc2lnbmVkIGludCkoKHAgPj4gMTYpICYgMHhmZildOwogICAgICAgICAgICAgICByZ2Jh W2ldW2JDb21wXSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50 KSgocCA+PiA4KSAmIDB4ZmYpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVthQ29tcF0gPSBfbWVz YV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCkoKHAgKSAmIDB4ZmYpXTsK ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODM2 NzoKICAgICAgICAgaWYgKHN3YXBCeXRlcykgewogICAgICAgICAgICBjb25zdCBHTHVpbnQgKnVp c3JjID0gKGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwogICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVpbnQgcCA9 IHVpc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9IF9tZXNhX3VieXRlX3Rv X2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCA+PiAyNCkpXTsKICAgICAgICAgICAg ICAgcmdiYVtpXVtnQ29tcF0gPSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2ln bmVkIGludCkoKHAgPj4gMTYpICYgMHhmZildOwogICAgICAgICAgICAgICByZ2JhW2ldW2JDb21w XSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCA+PiA4 KSAmIDB4ZmYpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVthQ29tcF0gPSBfbWVzYV91Ynl0ZV90 b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCkoKHAgKSAmIDB4ZmYpXTsKICAgICAgICAg ICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICBjb25zdCBHTHVpbnQg KnVpc3JjID0gKGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwogICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVpbnQg cCA9IHVpc3JjW2ldOwogICAgICAgICAgICAgICByZ2JhW2ldW3JDb21wXSA9IF9tZXNhX3VieXRl X3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCApICYgMHhmZildOwogICAgICAg ICAgICAgICByZ2JhW2ldW2dDb21wXSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlso dW5zaWduZWQgaW50KSgocCA+PiA4KSAmIDB4ZmYpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVti Q29tcF0gPSBfbWVzYV91Ynl0ZV90b19mbG9hdF9jb2xvcl90YWJbKHVuc2lnbmVkIGludCkoKHAg Pj4gMTYpICYgMHhmZildOwogICAgICAgICAgICAgICByZ2JhW2ldW2FDb21wXSA9IF9tZXNhX3Vi eXRlX3RvX2Zsb2F0X2NvbG9yX3RhYlsodW5zaWduZWQgaW50KSgocCA+PiAyNCkpXTsKICAgICAg ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4ODAzNjoKICAg ICAgICAgaWYgKHN3YXBCeXRlcykgewogICAgICAgICAgICBjb25zdCBHTHVpbnQgKnVpc3JjID0g KGNvbnN0IEdMdWludCAqKSBzcmM7CiAgICAgICAgICAgIEdMdWludCBpOwogICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgbjsgaSArKykgewogICAgICAgICAgICAgICBHTHVpbnQgcCA9IHVpc3Jj W2ldOwogICAgICAgICAgICAgICB7IEdMdWJ5dGUgKmJ5dGVzID0gKEdMdWJ5dGUgKikgJihwKTsg R0x1Ynl0ZSB0bXAgPSBieXRlc1swXTsgYnl0ZXNbMF0gPSBieXRlc1szXTsgYnl0ZXNbM10gPSB0 bXA7IHRtcCA9IGJ5dGVzWzFdOyBieXRlc1sxXSA9IGJ5dGVzWzJdOyBieXRlc1syXSA9IHRtcDsg fTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0gPSAoKHAgPj4gMjIpICkgKiAoMS4wRiAv IDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2dDb21wXSA9ICgocCA+PiAxMikgJiAw eDNmZikgKiAoMS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2JDb21wXSA9 ICgocCA+PiAyKSAmIDB4M2ZmKSAqICgxLjBGIC8gMTAyMy4wRik7CiAgICAgICAgICAgICAgIHJn YmFbaV1bYUNvbXBdID0gKChwICkgJiAweDMgKSAqICgxLjBGIC8gMy4wRik7CiAgICAgICAgICAg IH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY29uc3QgR0x1aW50ICp1 aXNyYyA9IChjb25zdCBHTHVpbnQgKikgc3JjOwogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAgICAgR0x1aW50IHAg PSB1aXNyY1tpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0gPSAoKHAgPj4gMjIpICkg KiAoMS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2dDb21wXSA9ICgocCA+ PiAxMikgJiAweDNmZikgKiAoMS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ld W2JDb21wXSA9ICgocCA+PiAyKSAmIDB4M2ZmKSAqICgxLjBGIC8gMTAyMy4wRik7CiAgICAgICAg ICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwICkgJiAweDMgKSAqICgxLjBGIC8gMy4wRik7CiAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDgzNjg6 CiAgICAgICAgIGlmIChzd2FwQnl0ZXMpIHsKICAgICAgICAgICAgY29uc3QgR0x1aW50ICp1aXNy YyA9IChjb25zdCBHTHVpbnQgKikgc3JjOwogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAg ICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAgICAgR0x1aW50IHAgPSB1 aXNyY1tpXTsKICAgICAgICAgICAgICAgeyBHTHVieXRlICpieXRlcyA9IChHTHVieXRlICopICYo cCk7IEdMdWJ5dGUgdG1wID0gYnl0ZXNbMF07IGJ5dGVzWzBdID0gYnl0ZXNbM107IGJ5dGVzWzNd ID0gdG1wOyB0bXAgPSBieXRlc1sxXTsgYnl0ZXNbMV0gPSBieXRlc1syXTsgYnl0ZXNbMl0gPSB0 bXA7IH07CiAgICAgICAgICAgICAgIHJnYmFbaV1bckNvbXBdID0gKChwICkgJiAweDNmZikgKiAo MS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2dDb21wXSA9ICgocCA+PiAx MCkgJiAweDNmZikgKiAoMS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAgICAgICByZ2JhW2ldW2JD b21wXSA9ICgocCA+PiAyMCkgJiAweDNmZikgKiAoMS4wRiAvIDEwMjMuMEYpOwogICAgICAgICAg ICAgICByZ2JhW2ldW2FDb21wXSA9ICgocCA+PiAzMCkgKSAqICgxLjBGIC8gMy4wRik7CiAgICAg ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY29uc3QgR0x1 aW50ICp1aXNyYyA9IChjb25zdCBHTHVpbnQgKikgc3JjOwogICAgICAgICAgICBHTHVpbnQgaTsK ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKyspIHsKICAgICAgICAgICAgICAgR0x1 aW50IHAgPSB1aXNyY1tpXTsKICAgICAgICAgICAgICAgcmdiYVtpXVtyQ29tcF0gPSAoKHAgKSAm IDB4M2ZmKSAqICgxLjBGIC8gMTAyMy4wRik7CiAgICAgICAgICAgICAgIHJnYmFbaV1bZ0NvbXBd ID0gKChwID4+IDEwKSAmIDB4M2ZmKSAqICgxLjBGIC8gMTAyMy4wRik7CiAgICAgICAgICAgICAg IHJnYmFbaV1bYkNvbXBdID0gKChwID4+IDIwKSAmIDB4M2ZmKSAqICgxLjBGIC8gMTAyMy4wRik7 CiAgICAgICAgICAgICAgIHJnYmFbaV1bYUNvbXBdID0gKChwID4+IDMwKSApICogKDEuMEYgLyAz LjBGKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBkZWZh dWx0OgogICAgICAgICBfbWVzYV9wcm9ibGVtKDAsICJiYWQgc3JjVHlwZSBpbiBleHRyYWN0IGZs b2F0IGRhdGEiKTsKICAgICAgICAgYnJlYWs7CiAgIH0KfQojIDI1NTQgImltYWdlLmMiCnZvaWQK X21lc2FfdW5wYWNrX2NoYW5fY29sb3Jfc3BhbiggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMdWludCBuLCBHTGVudW0gZHN0Rm9ybWF0LCBHTGNoYW4gZGVz dFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjRm9ybWF0LCBHTGVu dW0gc3JjVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpz b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhl bHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0x1aW50IHRyYW5zZmVyT3BzICkKewogICA7CgoKCgoKCgogICA7CiMgMjU4NCAiaW1hZ2UuYyIK ICAgOwojIDI2MDYgImltYWdlLmMiCiAgIGlmICh0cmFuc2Zlck9wcyA9PSAwICl7CiAgICAgIGlm IChzcmNUeXBlID09IDB4MTQwMSkgewogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4MTkwOCkg ewogICAgICAgICAgICBpZiAoc3JjRm9ybWF0ID09IDB4MTkwOCkgewogICAgICAgICAgICAgICBf bWVzYV9tZW1jcHkoZGVzdCwgc291cmNlLCBuICogNCAqIHNpemVvZihHTGNoYW4pKTsKICAgICAg ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHNyY0Zv cm1hdCA9PSAweDE5MDcpIHsKICAgICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgICAg IGNvbnN0IEdMY2hhbiAqc3JjID0gKGNvbnN0IEdMY2hhbiAqKSBzb3VyY2U7CiAgICAgICAgICAg ICAgIEdMY2hhbiAqZHN0ID0gZGVzdDsKICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47 IGkrKykgewogICAgICAgICAgICAgICAgICBkc3RbMF0gPSBzcmNbMF07CiAgICAgICAgICAgICAg ICAgIGRzdFsxXSA9IHNyY1sxXTsKICAgICAgICAgICAgICAgICAgZHN0WzJdID0gc3JjWzJdOwog ICAgICAgICAgICAgICAgICBkc3RbM10gPSAyNTU7CiAgICAgICAgICAgICAgICAgIHNyYyArPSAz OwogICAgICAgICAgICAgICAgICBkc3QgKz0gNDsKICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChk c3RGb3JtYXQgPT0gMHgxOTA3KSB7CiAgICAgICAgICAgIGlmIChzcmNGb3JtYXQgPT0gMHgxOTA3 KSB7CiAgICAgICAgICAgICAgIF9tZXNhX21lbWNweShkZXN0LCBzb3VyY2UsIG4gKiAzICogc2l6 ZW9mKEdMY2hhbikpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAg ICAgICAgZWxzZSBpZiAoc3JjRm9ybWF0ID09IDB4MTkwOCkgewogICAgICAgICAgICAgICBHTHVp bnQgaTsKICAgICAgICAgICAgICAgY29uc3QgR0xjaGFuICpzcmMgPSAoY29uc3QgR0xjaGFuICop IHNvdXJjZTsKICAgICAgICAgICAgICAgR0xjaGFuICpkc3QgPSBkZXN0OwogICAgICAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGRzdFswXSA9IHNy Y1swXTsKICAgICAgICAgICAgICAgICAgZHN0WzFdID0gc3JjWzFdOwogICAgICAgICAgICAgICAg ICBkc3RbMl0gPSBzcmNbMl07CiAgICAgICAgICAgICAgICAgIHNyYyArPSA0OwogICAgICAgICAg ICAgICAgICBkc3QgKz0gMzsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICByZXR1cm47 CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChkc3RGb3JtYXQgPT0g c3JjRm9ybWF0KSB7CiAgICAgICAgICAgIEdMaW50IGNvbXBzID0gX21lc2FfY29tcG9uZW50c19p bl9mb3JtYXQoc3JjRm9ybWF0KTsKICAgICAgICAgICAgKCh2b2lkKSAoKGNvbXBzID4gMCkgPyAw IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICJpbWFnZS5j IiwgMjY0OSwgImNvbXBzID4gMCIpLCAwKSkpOwogICAgICAgICAgICBfbWVzYV9tZW1jcHkoZGVz dCwgc291cmNlLCBuICogY29tcHMgKiBzaXplb2YoR0xjaGFuKSk7CiAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQogICAgICB9CgoKCgogICAgICBlbHNlIGlmIChzcmNUeXBlID09IDB4MTQw MSkgewogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4MTkwOCkgewogICAgICAgICAgICBpZiAo c3JjRm9ybWF0ID09IDB4MTkwNykgewogICAgICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAg ICAgICAgY29uc3QgR0x1Ynl0ZSAqc3JjID0gKGNvbnN0IEdMdWJ5dGUgKikgc291cmNlOwogICAg ICAgICAgICAgICBHTGNoYW4gKmRzdCA9IGRlc3Q7CiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICAgZHN0WzBdID0gKHNyY1swXSk7CiAgICAg ICAgICAgICAgICAgIGRzdFsxXSA9IChzcmNbMV0pOwogICAgICAgICAgICAgICAgICBkc3RbMl0g PSAoc3JjWzJdKTsKICAgICAgICAgICAgICAgICAgZHN0WzNdID0gMjU1OwogICAgICAgICAgICAg ICAgICBzcmMgKz0gMzsKICAgICAgICAgICAgICAgICAgZHN0ICs9IDQ7CiAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2Ug aWYgKHNyY0Zvcm1hdCA9PSAweDE5MDgpIHsKICAgICAgICAgICAgICAgR0x1aW50IGk7CiAgICAg ICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnNyYyA9IChjb25zdCBHTHVieXRlICopIHNvdXJjZTsK ICAgICAgICAgICAgICAgR0xjaGFuICpkc3QgPSBkZXN0OwogICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGRzdFswXSA9IChzcmNbMF0pOwog ICAgICAgICAgICAgICAgICBkc3RbMV0gPSAoc3JjWzFdKTsKICAgICAgICAgICAgICAgICAgZHN0 WzJdID0gKHNyY1syXSk7CiAgICAgICAgICAgICAgICAgIGRzdFszXSA9IChzcmNbM10pOwogICAg ICAgICAgICAgICAgICBzcmMgKz0gNDsKICAgICAgICAgICAgICAgICAgZHN0ICs9IDQ7CiAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg ICB9CiAgICAgICAgIGVsc2UgaWYgKGRzdEZvcm1hdCA9PSAweDE5MDcpIHsKICAgICAgICAgICAg aWYgKHNyY0Zvcm1hdCA9PSAweDE5MDcpIHsKICAgICAgICAgICAgICAgR0x1aW50IGk7CiAgICAg ICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKnNyYyA9IChjb25zdCBHTHVieXRlICopIHNvdXJjZTsK ICAgICAgICAgICAgICAgR0xjaGFuICpkc3QgPSBkZXN0OwogICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGRzdFswXSA9IChzcmNbMF0pOwog ICAgICAgICAgICAgICAgICBkc3RbMV0gPSAoc3JjWzFdKTsKICAgICAgICAgICAgICAgICAgZHN0 WzJdID0gKHNyY1syXSk7CiAgICAgICAgICAgICAgICAgIHNyYyArPSAzOwogICAgICAgICAgICAg ICAgICBkc3QgKz0gMzsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICByZXR1cm47CiAg ICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoc3JjRm9ybWF0ID09IDB4MTkwOCkgewog ICAgICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqc3Jj ID0gKGNvbnN0IEdMdWJ5dGUgKikgc291cmNlOwogICAgICAgICAgICAgICBHTGNoYW4gKmRzdCA9 IGRlc3Q7CiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAg ICAgICAgICAgZHN0WzBdID0gKHNyY1swXSk7CiAgICAgICAgICAgICAgICAgIGRzdFsxXSA9IChz cmNbMV0pOwogICAgICAgICAgICAgICAgICBkc3RbMl0gPSAoc3JjWzJdKTsKICAgICAgICAgICAg ICAgICAgc3JjICs9IDQ7CiAgICAgICAgICAgICAgICAgIGRzdCArPSAzOwogICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg IH0KICAgfQoKCgogICB7CiAgICAgIEdMaW50IGRzdENvbXBvbmVudHM7CiAgICAgIEdMaW50IGRz dFJlZEluZGV4LCBkc3RHcmVlbkluZGV4LCBkc3RCbHVlSW5kZXgsIGRzdEFscGhhSW5kZXg7CiAg ICAgIEdMaW50IGRzdEx1bWluYW5jZUluZGV4LCBkc3RJbnRlbnNpdHlJbmRleDsKICAgICAgR0xm bG9hdCByZ2JhWzIwNDhdWzRdOwogICAgICBkbyB7fSB3aGlsZSgwKTsKCiAgICAgIGRzdENvbXBv bmVudHMgPSBfbWVzYV9jb21wb25lbnRzX2luX2Zvcm1hdCggZHN0Rm9ybWF0ICk7CgogICAgICAo KHZvaWQpICgoZHN0Q29tcG9uZW50cyA+IDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDI3MzEsICJkc3RDb21wb25lbnRzID4g MCIpLCAwKSkpOwoKCgoKICAgICAgKCh2b2lkKSAoKG4gPD0gMjA0OCkgPyAwIDogKF9fZXByaW50 ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICJpbWFnZS5jIiwgMjczNiwgIm4g PD0gTUFYX1dJRFRIIiksIDApKSk7CiAgICAgIGlmIChzcmNGb3JtYXQgPT0gMHgxOTAwKSB7CiAg ICAgICAgIEdMdWludCBpbmRleGVzWzIwNDhdOwogICAgICAgICBleHRyYWN0X3VpbnRfaW5kZXhl cyhuLCBpbmRleGVzLCBzcmNGb3JtYXQsIHNyY1R5cGUsIHNvdXJjZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3JjUGFja2luZyk7CgogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4 MTkwMAogICAgICAgICAgICAgJiYgKHRyYW5zZmVyT3BzICYgMHg0KSkgewogICAgICAgICAgICBf bWVzYV9tYXBfY2koY3R4LCBuLCBpbmRleGVzKTsKICAgICAgICAgfQogICAgICAgICBpZiAodHJh bnNmZXJPcHMgJiAweDIpIHsKICAgICAgICAgICAgX21lc2Ffc2hpZnRfYW5kX29mZnNldF9jaShj dHgsIG4sIGluZGV4ZXMpOwogICAgICAgICB9CgogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4 MTkwMCkgewoKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsKICAgICAgICAgICAgICAgZGVzdFtpXSA9IChHTGNoYW4pIChpbmRleGVzW2ld ICYgMHhmZik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgOwogICAgICAgICAgICByZXR1cm47 CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBfbWVzYV9tYXBfY2lfdG9f cmdiYShjdHgsIG4sIGluZGV4ZXMsIHJnYmEpOwogICAgICAgICB9CiAgICAgIH0KICAgICAgZWxz ZSB7CiAgICAgICAgIGV4dHJhY3RfZmxvYXRfcmdiYShuLCByZ2JhLCBzcmNGb3JtYXQsIHNyY1R5 cGUsIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BhY2tpbmctPlN3YXBC eXRlcyk7CgoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxKSB7CiAgICAgICAgICAgIF9t ZXNhX3NjYWxlX2FuZF9iaWFzX3JnYmEoY3R4LCBuLCByZ2JhLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUmVkU2NhbGUsIGN0eC0+UGl4ZWwuR3JlZW5TY2Fs ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLkJsdWVTY2Fs ZSwgY3R4LT5QaXhlbC5BbHBoYVNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+UGl4ZWwuUmVkQmlhcywgY3R4LT5QaXhlbC5HcmVlbkJpYXMsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5QaXhlbC5CbHVlQmlhcywgY3R4LT5QaXhlbC5B bHBoYUJpYXMpOwogICAgICAgICB9CgogICAgICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDQpIHsK ICAgICAgICAgICAgX21lc2FfbWFwX3JnYmEoY3R4LCBuLCByZ2JhKTsKICAgICAgICAgfQogICAg ICB9CgogICAgICBpZiAodHJhbnNmZXJPcHMpIHsKCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAm IDB4OCkgewogICAgICAgICAgICBfbWVzYV9sb29rdXBfcmdiYSgmY3R4LT5Db2xvclRhYmxlLCBu LCByZ2JhKTsKICAgICAgICAgfQoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxMCkgewoK ICAgICAgICAgfQoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgyMCkgewogICAgICAgICAg ICBfbWVzYV9zY2FsZV9hbmRfYmlhc19yZ2JhKGN0eCwgbiwgcmdiYSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252b2x1dGlvblNjYWxlWzBd LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENv bnZvbHV0aW9uU2NhbGVbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LT5QaXhlbC5Qb3N0Q29udm9sdXRpb25TY2FsZVsyXSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252b2x1dGlvblNjYWxlWzNdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0 aW9uQmlhc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBp eGVsLlBvc3RDb252b2x1dGlvbkJpYXNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R4LT5QaXhlbC5Qb3N0Q29udm9sdXRpb25CaWFzWzJdLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0aW9uQmlhc1sz XSk7CiAgICAgICAgIH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4NDApIHsKICAgICAg ICAgICAgX21lc2FfbG9va3VwX3JnYmEoJmN0eC0+UG9zdENvbnZvbHV0aW9uQ29sb3JUYWJsZSwg biwgcmdiYSk7CiAgICAgICAgIH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4ODApIHsK ICAgICAgICAgICAgX21lc2FfdHJhbnNmb3JtX3JnYmEoY3R4LCBuLCByZ2JhKTsKICAgICAgICAg fQoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxMDApIHsKICAgICAgICAgICAgX21lc2Ff bG9va3VwX3JnYmEoJmN0eC0+UG9zdENvbG9yTWF0cml4Q29sb3JUYWJsZSwgbiwgcmdiYSk7CiAg ICAgICAgIH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4MjAwKSB7CiAgICAgICAgICAg IF9tZXNhX3VwZGF0ZV9oaXN0b2dyYW0oY3R4LCBuLCAoY29uc3QgR0xmbG9hdCAoKilbNF0pIHJn YmEpOwogICAgICAgICB9CgogICAgICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDQwMCkgewogICAg ICAgICAgICBfbWVzYV91cGRhdGVfbWlubWF4KGN0eCwgbiwgKGNvbnN0IEdMZmxvYXQgKCopWzRd KSByZ2JhKTsKICAgICAgICAgfQogICAgICB9CgoKCiAgICAgIHsKICAgICAgICAgR0x1aW50IGk7 CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgcmdiYVtpXVsw XSA9ICggKHJnYmFbaV1bMF0pPCgwLjBGKSA/ICgwLjBGKSA6ICgocmdiYVtpXVswXSk+KDEuMEYp ID8gKDEuMEYpIDogKHJnYmFbaV1bMF0pKSApOwogICAgICAgICAgICByZ2JhW2ldWzFdID0gKCAo cmdiYVtpXVsxXSk8KDAuMEYpID8gKDAuMEYpIDogKChyZ2JhW2ldWzFdKT4oMS4wRikgPyAoMS4w RikgOiAocmdiYVtpXVsxXSkpICk7CiAgICAgICAgICAgIHJnYmFbaV1bMl0gPSAoIChyZ2JhW2ld WzJdKTwoMC4wRikgPyAoMC4wRikgOiAoKHJnYmFbaV1bMl0pPigxLjBGKSA/ICgxLjBGKSA6IChy Z2JhW2ldWzJdKSkgKTsKICAgICAgICAgICAgcmdiYVtpXVszXSA9ICggKHJnYmFbaV1bM10pPCgw LjBGKSA/ICgwLjBGKSA6ICgocmdiYVtpXVszXSk+KDEuMEYpID8gKDEuMEYpIDogKHJnYmFbaV1b M10pKSApOwogICAgICAgICB9CiAgICAgIH0KCgoKCgogICAgICBzd2l0Y2ggKGRzdEZvcm1hdCkg ewogICAgICAgICBjYXNlIDB4MTkwNjoKICAgICAgICAgICAgZHN0QWxwaGFJbmRleCA9IDA7CiAg ICAgICAgICAgIGRzdFJlZEluZGV4ID0gZHN0R3JlZW5JbmRleCA9IGRzdEJsdWVJbmRleCA9IC0x OwogICAgICAgICAgICBkc3RMdW1pbmFuY2VJbmRleCA9IGRzdEludGVuc2l0eUluZGV4ID0gLTE7 CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MTkwOToKICAgICAgICAgICAgZHN0 THVtaW5hbmNlSW5kZXggPSAwOwogICAgICAgICAgICBkc3RSZWRJbmRleCA9IGRzdEdyZWVuSW5k ZXggPSBkc3RCbHVlSW5kZXggPSBkc3RBbHBoYUluZGV4ID0gLTE7CiAgICAgICAgICAgIGRzdElu dGVuc2l0eUluZGV4ID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MTkw QToKICAgICAgICAgICAgZHN0THVtaW5hbmNlSW5kZXggPSAwOwogICAgICAgICAgICBkc3RBbHBo YUluZGV4ID0gMTsKICAgICAgICAgICAgZHN0UmVkSW5kZXggPSBkc3RHcmVlbkluZGV4ID0gZHN0 Qmx1ZUluZGV4ID0gLTE7CiAgICAgICAgICAgIGRzdEludGVuc2l0eUluZGV4ID0gLTE7CiAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4ODA0OToKICAgICAgICAgICAgZHN0SW50ZW5z aXR5SW5kZXggPSAwOwogICAgICAgICAgICBkc3RSZWRJbmRleCA9IGRzdEdyZWVuSW5kZXggPSBk c3RCbHVlSW5kZXggPSBkc3RBbHBoYUluZGV4ID0gLTE7CiAgICAgICAgICAgIGRzdEx1bWluYW5j ZUluZGV4ID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MTkwNzoKICAg ICAgICAgICAgZHN0UmVkSW5kZXggPSAwOwogICAgICAgICAgICBkc3RHcmVlbkluZGV4ID0gMTsK ICAgICAgICAgICAgZHN0Qmx1ZUluZGV4ID0gMjsKICAgICAgICAgICAgZHN0QWxwaGFJbmRleCA9 IGRzdEx1bWluYW5jZUluZGV4ID0gZHN0SW50ZW5zaXR5SW5kZXggPSAtMTsKICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGNhc2UgMHgxOTA4OgogICAgICAgICAgICBkc3RSZWRJbmRleCA9IDA7 CiAgICAgICAgICAgIGRzdEdyZWVuSW5kZXggPSAxOwogICAgICAgICAgICBkc3RCbHVlSW5kZXgg PSAyOwogICAgICAgICAgICBkc3RBbHBoYUluZGV4ID0gMzsKICAgICAgICAgICAgZHN0THVtaW5h bmNlSW5kZXggPSBkc3RJbnRlbnNpdHlJbmRleCA9IC0xOwogICAgICAgICAgICBicmVhazsKICAg ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgX21lc2FfcHJvYmxlbShjdHgsICJiYWQgZHN0Rm9y bWF0IGluIF9tZXNhX3VucGFja19jaGFuX3NwYW4oKSIpOwogICAgICAgICAgICA7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgfQoKCgoKICAgICAgaWYgKGRzdFJlZEluZGV4ID49IDApIHsKICAg ICAgICAgR0xjaGFuICpkc3QgPSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9y IChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9hdCBy OyBHTHVpbnQgaTsgfSBfX3RtcDsgX190bXAuciA9IChyZ2JhW2ldWzBdKTsgZHN0W2RzdFJlZElu ZGV4XSA9ICgoX190bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpX190bXAuaSA8IDApID8g KEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6IChfX3RtcC5yID0gX190bXAuciooMjU1LjBGLzI1 Ni4wRikgKyAzMjc2OC4wRiwgKEdMdWJ5dGUpX190bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAg ICAgICAgZHN0ICs9IGRzdENvbXBvbmVudHM7CiAgICAgICAgIH0KICAgICAgfQoKICAgICAgaWYg KGRzdEdyZWVuSW5kZXggPj0gMCkgewogICAgICAgICBHTGNoYW4gKmRzdCA9IGRlc3Q7CiAgICAg ICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAg ICAgIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IF9fdG1wOyBfX3RtcC5yID0g KHJnYmFbaV1bMV0pOyBkc3RbZHN0R3JlZW5JbmRleF0gPSAoKF9fdG1wLmkgPj0gMHgzZjdmMDAw MCkgPyAoKEdMaW50KV9fdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAo X190bXAuciA9IF9fdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKV9f dG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRzdCArPSBkc3RDb21wb25lbnRzOwog ICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChkc3RCbHVlSW5kZXggPj0gMCkgewogICAgICAg ICBHTGNoYW4gKmRzdCA9IGRlc3Q7CiAgICAgICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdM dWludCBpOyB9IF9fdG1wOyBfX3RtcC5yID0gKHJnYmFbaV1bMl0pOyBkc3RbZHN0Qmx1ZUluZGV4 XSA9ICgoX190bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpX190bXAuaSA8IDApID8gKEdM dWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6IChfX3RtcC5yID0gX190bXAuciooMjU1LjBGLzI1Ni4w RikgKyAzMjc2OC4wRiwgKEdMdWJ5dGUpX190bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAg ICAgZHN0ICs9IGRzdENvbXBvbmVudHM7CiAgICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGRz dEFscGhhSW5kZXggPj0gMCkgewogICAgICAgICBHTGNoYW4gKmRzdCA9IGRlc3Q7CiAgICAgICAg IEdMdWludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAg IGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IF9fdG1wOyBfX3RtcC5yID0gKHJn YmFbaV1bM10pOyBkc3RbZHN0QWxwaGFJbmRleF0gPSAoKF9fdG1wLmkgPj0gMHgzZjdmMDAwMCkg PyAoKEdMaW50KV9fdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAoX190 bXAuciA9IF9fdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKV9fdG1w LmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgIGRzdCArPSBkc3RDb21wb25lbnRzOwogICAg ICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChkc3RJbnRlbnNpdHlJbmRleCA+PSAwKSB7CiAgICAg ICAgIEdMY2hhbiAqZHN0ID0gZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICgodm9p ZCkgKChkc3RJbnRlbnNpdHlJbmRleCA9PSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZh aWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgImltYWdlLmMiLCAyOTI0LCAiZHN0SW50ZW5zaXR5SW5k ZXggPT0gMCIpLCAwKSkpOwogICAgICAgICAoKHZvaWQpICgoZHN0Q29tcG9uZW50cyA9PSAxKSA/ IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgImltYWdl LmMiLCAyOTI1LCAiZHN0Q29tcG9uZW50cyA9PSAxIiksIDApKSk7CiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspIHsKCiAgICAgICAgICAgIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdM dWludCBpOyB9IF9fdG1wOyBfX3RtcC5yID0gKHJnYmFbaV1bMF0pOyBkc3RbaV0gPSAoKF9fdG1w LmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KV9fdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAo R0x1Ynl0ZSkyNTUgOiAoX190bXAuciA9IF9fdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3Njgu MEYsIChHTHVieXRlKV9fdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIH0KICAgICAgfQoK ICAgICAgaWYgKGRzdEx1bWluYW5jZUluZGV4ID49IDApIHsKICAgICAgICAgR0xjaGFuICpkc3Qg PSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgKCh2b2lkKSAoKGRzdEx1bWluYW5j ZUluZGV4ID09IDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg JXMnXG4iLCAiaW1hZ2UuYyIsIDI5MzUsICJkc3RMdW1pbmFuY2VJbmRleCA9PSAwIiksIDApKSk7 CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCiAgICAgICAgICAgIGRvIHsgdW5p b24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IF9fdG1wOyBfX3RtcC5yID0gKHJnYmFbaV1bMF0p OyBkc3RbMF0gPSAoKF9fdG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KV9fdG1wLmkgPCAw KSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAoX190bXAuciA9IF9fdG1wLnIqKDI1NS4w Ri8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKV9fdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAg ICAgICAgICAgIGRzdCArPSBkc3RDb21wb25lbnRzOwogICAgICAgICB9CiAgICAgIH0KICAgICAg OwogICB9Cn0KCgp2b2lkCl9tZXNhX3VucGFja19mbG9hdF9jb2xvcl9zcGFuKCBHTGNvbnRleHQg KmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLCBHTGVudW0gZHN0 Rm9ybWF0LCBHTGZsb2F0IGRlc3RbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZW51bSBzcmNGb3JtYXQsIEdMZW51bSBzcmNUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0x2b2lkICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKnNyY1BhY2tpbmcsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdHJhbnNmZXJPcHMsIEdMYm9vbGVhbiBjbGFt cCApCnsKICAgOwoKCgoKCgoKICAgOwojIDI5NzcgImltYWdlLmMiCiAgIDsKIyAyOTk5ICJpbWFn ZS5jIgogICB7CiAgICAgIEdMaW50IGRzdENvbXBvbmVudHM7CiAgICAgIEdMaW50IGRzdFJlZElu ZGV4LCBkc3RHcmVlbkluZGV4LCBkc3RCbHVlSW5kZXgsIGRzdEFscGhhSW5kZXg7CiAgICAgIEdM aW50IGRzdEx1bWluYW5jZUluZGV4LCBkc3RJbnRlbnNpdHlJbmRleDsKICAgICAgR0xmbG9hdCBy Z2JhWzIwNDhdWzRdOwogICAgICBkbyB7fSB3aGlsZSgwKTsKCiAgICAgIGRzdENvbXBvbmVudHMg PSBfbWVzYV9jb21wb25lbnRzX2luX2Zvcm1hdCggZHN0Rm9ybWF0ICk7CgogICAgICAoKHZvaWQp ICgoZHN0Q29tcG9uZW50cyA+IDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz c2VydGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDMwMDgsICJkc3RDb21wb25lbnRzID4gMCIpLCAw KSkpOwoKCgoKICAgICAgKCh2b2lkKSAoKG4gPD0gMjA0OCkgPyAwIDogKF9fZXByaW50ZiAoIiVz OiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICJpbWFnZS5jIiwgMzAxMywgIm4gPD0gTUFY X1dJRFRIIiksIDApKSk7CiAgICAgIGlmIChzcmNGb3JtYXQgPT0gMHgxOTAwKSB7CiAgICAgICAg IEdMdWludCBpbmRleGVzWzIwNDhdOwogICAgICAgICBleHRyYWN0X3VpbnRfaW5kZXhlcyhuLCBp bmRleGVzLCBzcmNGb3JtYXQsIHNyY1R5cGUsIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3JjUGFja2luZyk7CgogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4MTkwMAog ICAgICAgICAgICAgJiYgKHRyYW5zZmVyT3BzICYgMHg0KSkgewogICAgICAgICAgICBfbWVzYV9t YXBfY2koY3R4LCBuLCBpbmRleGVzKTsKICAgICAgICAgfQogICAgICAgICBpZiAodHJhbnNmZXJP cHMgJiAweDIpIHsKICAgICAgICAgICAgX21lc2Ffc2hpZnRfYW5kX29mZnNldF9jaShjdHgsIG4s IGluZGV4ZXMpOwogICAgICAgICB9CgogICAgICAgICBpZiAoZHN0Rm9ybWF0ID09IDB4MTkwMCkg ewoKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKICAgICAgICAgICAgICAgZGVzdFtpXSA9IChHTGNoYW4pIChpbmRleGVzW2ldICYgMHhm Zik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgOwogICAgICAgICAgICByZXR1cm47CiAgICAg ICAgIH0KICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBfbWVzYV9tYXBfY2lfdG9fcmdiYShj dHgsIG4sIGluZGV4ZXMsIHJnYmEpOwogICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CiAg ICAgICAgIGV4dHJhY3RfZmxvYXRfcmdiYShuLCByZ2JhLCBzcmNGb3JtYXQsIHNyY1R5cGUsIHNv dXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BhY2tpbmctPlN3YXBCeXRlcyk7 CgoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxKSB7CiAgICAgICAgICAgIF9tZXNhX3Nj YWxlX2FuZF9iaWFzX3JnYmEoY3R4LCBuLCByZ2JhLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+UGl4ZWwuUmVkU2NhbGUsIGN0eC0+UGl4ZWwuR3JlZW5TY2FsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLkJsdWVTY2FsZSwgY3R4 LT5QaXhlbC5BbHBoYVNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0 eC0+UGl4ZWwuUmVkQmlhcywgY3R4LT5QaXhlbC5HcmVlbkJpYXMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LT5QaXhlbC5CbHVlQmlhcywgY3R4LT5QaXhlbC5BbHBoYUJp YXMpOwogICAgICAgICB9CgogICAgICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDQpIHsKICAgICAg ICAgICAgX21lc2FfbWFwX3JnYmEoY3R4LCBuLCByZ2JhKTsKICAgICAgICAgfQogICAgICB9Cgog ICAgICBpZiAodHJhbnNmZXJPcHMpIHsKCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4OCkg ewogICAgICAgICAgICBfbWVzYV9sb29rdXBfcmdiYSgmY3R4LT5Db2xvclRhYmxlLCBuLCByZ2Jh KTsKICAgICAgICAgfQoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxMCkgewoKICAgICAg ICAgfQoKICAgICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgyMCkgewogICAgICAgICAgICBfbWVz YV9zY2FsZV9hbmRfYmlhc19yZ2JhKGN0eCwgbiwgcmdiYSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252b2x1dGlvblNjYWxlWzBdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0 aW9uU2NhbGVbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5Q aXhlbC5Qb3N0Q29udm9sdXRpb25TY2FsZVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHgtPlBpeGVsLlBvc3RDb252b2x1dGlvblNjYWxlWzNdLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0aW9uQmlh c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPlBpeGVsLlBv c3RDb252b2x1dGlvbkJpYXNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5QaXhlbC5Qb3N0Q29udm9sdXRpb25CaWFzWzJdLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC0+UGl4ZWwuUG9zdENvbnZvbHV0aW9uQmlhc1szXSk7CiAg ICAgICAgIH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4NDApIHsKICAgICAgICAgICAg X21lc2FfbG9va3VwX3JnYmEoJmN0eC0+UG9zdENvbnZvbHV0aW9uQ29sb3JUYWJsZSwgbiwgcmdi YSk7CiAgICAgICAgIH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4ODApIHsKICAgICAg ICAgICAgX21lc2FfdHJhbnNmb3JtX3JnYmEoY3R4LCBuLCByZ2JhKTsKICAgICAgICAgfQoKICAg ICAgICAgaWYgKHRyYW5zZmVyT3BzICYgMHgxMDApIHsKICAgICAgICAgICAgX21lc2FfbG9va3Vw X3JnYmEoJmN0eC0+UG9zdENvbG9yTWF0cml4Q29sb3JUYWJsZSwgbiwgcmdiYSk7CiAgICAgICAg IH0KCiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4MjAwKSB7CiAgICAgICAgICAgIF9tZXNh X3VwZGF0ZV9oaXN0b2dyYW0oY3R4LCBuLCAoY29uc3QgR0xmbG9hdCAoKilbNF0pIHJnYmEpOwog ICAgICAgICB9CgogICAgICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDQwMCkgewogICAgICAgICAg ICBfbWVzYV91cGRhdGVfbWlubWF4KGN0eCwgbiwgKGNvbnN0IEdMZmxvYXQgKCopWzRdKSByZ2Jh KTsKICAgICAgICAgfQogICAgICB9CgoKCiAgICAgIGlmIChjbGFtcCkgewogICAgICAgICBHTHVp bnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICByZ2Jh W2ldWzBdID0gKCAocmdiYVtpXVswXSk8KDAuMEYpID8gKDAuMEYpIDogKChyZ2JhW2ldWzBdKT4o MS4wRikgPyAoMS4wRikgOiAocmdiYVtpXVswXSkpICk7CiAgICAgICAgICAgIHJnYmFbaV1bMV0g PSAoIChyZ2JhW2ldWzFdKTwoMC4wRikgPyAoMC4wRikgOiAoKHJnYmFbaV1bMV0pPigxLjBGKSA/ ICgxLjBGKSA6IChyZ2JhW2ldWzFdKSkgKTsKICAgICAgICAgICAgcmdiYVtpXVsyXSA9ICggKHJn YmFbaV1bMl0pPCgwLjBGKSA/ICgwLjBGKSA6ICgocmdiYVtpXVsyXSk+KDEuMEYpID8gKDEuMEYp IDogKHJnYmFbaV1bMl0pKSApOwogICAgICAgICAgICByZ2JhW2ldWzNdID0gKCAocmdiYVtpXVsz XSk8KDAuMEYpID8gKDAuMEYpIDogKChyZ2JhW2ldWzNdKT4oMS4wRikgPyAoMS4wRikgOiAocmdi YVtpXVszXSkpICk7CiAgICAgICAgIH0KICAgICAgfQoKCgoKCiAgICAgIHN3aXRjaCAoZHN0Rm9y bWF0KSB7CiAgICAgICAgIGNhc2UgMHgxOTA2OgogICAgICAgICAgICBkc3RBbHBoYUluZGV4ID0g MDsKICAgICAgICAgICAgZHN0UmVkSW5kZXggPSBkc3RHcmVlbkluZGV4ID0gZHN0Qmx1ZUluZGV4 ID0gLTE7CiAgICAgICAgICAgIGRzdEx1bWluYW5jZUluZGV4ID0gZHN0SW50ZW5zaXR5SW5kZXgg PSAtMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgxOTA5OgogICAgICAgICAg ICBkc3RMdW1pbmFuY2VJbmRleCA9IDA7CiAgICAgICAgICAgIGRzdFJlZEluZGV4ID0gZHN0R3Jl ZW5JbmRleCA9IGRzdEJsdWVJbmRleCA9IGRzdEFscGhhSW5kZXggPSAtMTsKICAgICAgICAgICAg ZHN0SW50ZW5zaXR5SW5kZXggPSAtMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug MHgxOTBBOgogICAgICAgICAgICBkc3RMdW1pbmFuY2VJbmRleCA9IDA7CiAgICAgICAgICAgIGRz dEFscGhhSW5kZXggPSAxOwogICAgICAgICAgICBkc3RSZWRJbmRleCA9IGRzdEdyZWVuSW5kZXgg PSBkc3RCbHVlSW5kZXggPSAtMTsKICAgICAgICAgICAgZHN0SW50ZW5zaXR5SW5kZXggPSAtMTsK ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4MDQ5OgogICAgICAgICAgICBkc3RJ bnRlbnNpdHlJbmRleCA9IDA7CiAgICAgICAgICAgIGRzdFJlZEluZGV4ID0gZHN0R3JlZW5JbmRl eCA9IGRzdEJsdWVJbmRleCA9IGRzdEFscGhhSW5kZXggPSAtMTsKICAgICAgICAgICAgZHN0THVt aW5hbmNlSW5kZXggPSAtMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgxOTA3 OgogICAgICAgICAgICBkc3RSZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGRzdEdyZWVuSW5kZXgg PSAxOwogICAgICAgICAgICBkc3RCbHVlSW5kZXggPSAyOwogICAgICAgICAgICBkc3RBbHBoYUlu ZGV4ID0gZHN0THVtaW5hbmNlSW5kZXggPSBkc3RJbnRlbnNpdHlJbmRleCA9IC0xOwogICAgICAg ICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDE5MDg6CiAgICAgICAgICAgIGRzdFJlZEluZGV4 ID0gMDsKICAgICAgICAgICAgZHN0R3JlZW5JbmRleCA9IDE7CiAgICAgICAgICAgIGRzdEJsdWVJ bmRleCA9IDI7CiAgICAgICAgICAgIGRzdEFscGhhSW5kZXggPSAzOwogICAgICAgICAgICBkc3RM dW1pbmFuY2VJbmRleCA9IGRzdEludGVuc2l0eUluZGV4ID0gLTE7CiAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBfbWVzYV9wcm9ibGVtKGN0eCwgImJhZCBk c3RGb3JtYXQgaW4gX21lc2FfdW5wYWNrX2Zsb2F0X2NvbG9yX3NwYW4oKSIpOwogICAgICAgICAg ICA7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgfQoKCiAgICAgIGlmIChkc3RSZWRJbmRleCA+ PSAwKSB7CiAgICAgICAgIEdMZmxvYXQgKmRzdCA9IGRlc3Q7CiAgICAgICAgIEdMdWludCBpOwog ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRzdFtkc3RSZWRJ bmRleF0gPSByZ2JhW2ldWzBdOwogICAgICAgICAgICBkc3QgKz0gZHN0Q29tcG9uZW50czsKICAg ICAgICAgfQogICAgICB9CgogICAgICBpZiAoZHN0R3JlZW5JbmRleCA+PSAwKSB7CiAgICAgICAg IEdMZmxvYXQgKmRzdCA9IGRlc3Q7CiAgICAgICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRzdFtkc3RHcmVlbkluZGV4XSA9IHJnYmFb aV1bMV07CiAgICAgICAgICAgIGRzdCArPSBkc3RDb21wb25lbnRzOwogICAgICAgICB9CiAgICAg IH0KCiAgICAgIGlmIChkc3RCbHVlSW5kZXggPj0gMCkgewogICAgICAgICBHTGZsb2F0ICpkc3Qg PSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkr KykgewogICAgICAgICAgICBkc3RbZHN0Qmx1ZUluZGV4XSA9IHJnYmFbaV1bMl07CiAgICAgICAg ICAgIGRzdCArPSBkc3RDb21wb25lbnRzOwogICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChk c3RBbHBoYUluZGV4ID49IDApIHsKICAgICAgICAgR0xmbG9hdCAqZHN0ID0gZGVzdDsKICAgICAg ICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAg ICAgZHN0W2RzdEFscGhhSW5kZXhdID0gcmdiYVtpXVszXTsKICAgICAgICAgICAgZHN0ICs9IGRz dENvbXBvbmVudHM7CiAgICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGRzdEludGVuc2l0eUlu ZGV4ID49IDApIHsKICAgICAgICAgR0xmbG9hdCAqZHN0ID0gZGVzdDsKICAgICAgICAgR0x1aW50 IGk7CiAgICAgICAgICgodm9pZCkgKChkc3RJbnRlbnNpdHlJbmRleCA9PSAwKSA/IDAgOiAoX19l cHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgImltYWdlLmMiLCAzMTk5 LCAiZHN0SW50ZW5zaXR5SW5kZXggPT0gMCIpLCAwKSkpOwogICAgICAgICAoKHZvaWQpICgoZHN0 Q29tcG9uZW50cyA9PSAxKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRp b24gYCVzJ1xuIiwgImltYWdlLmMiLCAzMjAwLCAiZHN0Q29tcG9uZW50cyA9PSAxIiksIDApKSk7 CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCiAgICAgICAgICAgIGRzdFtpXSA9 IHJnYmFbaV1bMF07CiAgICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGRzdEx1bWluYW5jZUlu ZGV4ID49IDApIHsKICAgICAgICAgR0xmbG9hdCAqZHN0ID0gZGVzdDsKICAgICAgICAgR0x1aW50 IGk7CiAgICAgICAgICgodm9pZCkgKChkc3RMdW1pbmFuY2VJbmRleCA9PSAwKSA/IDAgOiAoX19l cHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgImltYWdlLmMiLCAzMjEw LCAiZHN0THVtaW5hbmNlSW5kZXggPT0gMCIpLCAwKSkpOwogICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKSB7CgogICAgICAgICAgICBkc3RbMF0gPSByZ2JhW2ldWzBdOwogICAgICAgICAg ICBkc3QgKz0gZHN0Q29tcG9uZW50czsKICAgICAgICAgfQogICAgICB9CiAgICAgIDsKICAgfQp9 CiMgMzIzOCAiaW1hZ2UuYyIKdm9pZApfbWVzYV91bnBhY2tfaW5kZXhfc3BhbiggY29uc3QgR0xj b250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRz dFR5cGUsIEdMdm9pZCAqZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNU eXBlLCBjb25zdCBHTHZvaWQgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAgICAgICAg ICAgICAgICAgIEdMdWludCB0cmFuc2Zlck9wcyApCnsKICAgOwojIDMyNTQgImltYWdlLmMiCiAg IDsKCgoKCiAgIHRyYW5zZmVyT3BzICY9ICgweDQgfCAweDIpOwoKCgoKICAgaWYgKHRyYW5zZmVy T3BzID09IDAgJiYgc3JjVHlwZSA9PSAweDE0MDEKICAgICAgICYmIGRzdFR5cGUgPT0gMHgxNDAx KSB7CiAgICAgIF9tZXNhX21lbWNweShkZXN0LCBzb3VyY2UsIG4gKiBzaXplb2YoR0x1Ynl0ZSkp OwogICB9CiAgIGVsc2UgaWYgKHRyYW5zZmVyT3BzID09IDAgJiYgc3JjVHlwZSA9PSAweDE0MDUK ICAgICAgICAgICAgJiYgZHN0VHlwZSA9PSAweDE0MDUgJiYgIXNyY1BhY2tpbmctPlN3YXBCeXRl cykgewogICAgICBfbWVzYV9tZW1jcHkoZGVzdCwgc291cmNlLCBuICogc2l6ZW9mKEdMdWludCkp OwogICB9CiAgIGVsc2UgewoKCgogICAgICBHTHVpbnQgaW5kZXhlc1syMDQ4XTsKICAgICAgKCh2 b2lkKSAoKG4gPD0gMjA0OCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0 aW9uIGAlcydcbiIsICJpbWFnZS5jIiwgMzI3NywgIm4gPD0gTUFYX1dJRFRIIiksIDApKSk7Cgog ICAgICBleHRyYWN0X3VpbnRfaW5kZXhlcyhuLCBpbmRleGVzLCAweDE5MDAsIHNyY1R5cGUsIHNv dXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUGFja2luZyk7CgogICAgICBpZiAo dHJhbnNmZXJPcHMgJiAweDIpIHsKCiAgICAgICAgIF9tZXNhX3NoaWZ0X2FuZF9vZmZzZXRfY2ko Y3R4LCBuLCBpbmRleGVzKTsKICAgICAgfQogICAgICBpZiAodHJhbnNmZXJPcHMgJiAweDQpIHsK CiAgICAgICAgIF9tZXNhX21hcF9jaShjdHgsIG4sIGluZGV4ZXMpOwogICAgICB9CgoKICAgICAg c3dpdGNoIChkc3RUeXBlKSB7CiAgICAgICAgIGNhc2UgMHgxNDAxOgogICAgICAgICAgICB7CiAg ICAgICAgICAgICAgIEdMdWJ5dGUgKmRzdCA9IChHTHVieXRlICopIGRlc3Q7CiAgICAgICAgICAg ICAgIEdMdWludCBpOwogICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAg ICAgICAgICAgICAgICAgIGRzdFtpXSA9IChHTHVieXRlKSAoaW5kZXhlc1tpXSAmIDB4ZmYpOwog ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IGNhc2UgMHgxNDAzOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIEdMdWludCAqZHN0ID0g KEdMdWludCAqKSBkZXN0OwogICAgICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgICBkc3RbaV0gPSAoR0x1 c2hvcnQpIChpbmRleGVzW2ldICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MTQwNToKICAgICAgICAgICAg X21lc2FfbWVtY3B5KGRlc3QsIGluZGV4ZXMsIG4gKiBzaXplb2YoR0x1aW50KSk7CiAgICAgICAg ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBfbWVzYV9wcm9ibGVtKGN0 eCwgImJhZCBkc3RUeXBlIGluIF9tZXNhX3VucGFja19pbmRleF9zcGFuIik7CiAgICAgIH0KICAg fQp9CgoKdm9pZApfbWVzYV9wYWNrX2luZGV4X3NwYW4oIGNvbnN0IEdMY29udGV4dCAqY3R4LCBH THVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0VHlwZSwgR0x2b2lkICpk ZXN0LCBjb25zdCBHTHVpbnQgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKmRzdFBhY2tpbmcsCiAgICAgICAgICAgICAgICAg ICAgICAgR0x1aW50IHRyYW5zZmVyT3BzICkKewogICBHTHVpbnQgaW5kZXhlc1syMDQ4XTsKCiAg IDsKCiAgIHRyYW5zZmVyT3BzICY9ICgweDQgfCAweDIpOwoKICAgaWYgKHRyYW5zZmVyT3BzICYg KDB4NCB8IDB4MikpIHsKCiAgICAgIF9tZXNhX21lbWNweShpbmRleGVzLCBzb3VyY2UsIG4gKiBz aXplb2YoR0x1aW50KSk7CiAgICAgIGlmICh0cmFuc2Zlck9wcyAmIDB4MikgewogICAgICAgICBf bWVzYV9zaGlmdF9hbmRfb2Zmc2V0X2NpKCBjdHgsIG4sIGluZGV4ZXMpOwogICAgICB9CiAgICAg IGlmICh0cmFuc2Zlck9wcyAmIDB4NCkgewogICAgICAgICBfbWVzYV9tYXBfY2koY3R4LCBuLCBp bmRleGVzKTsKICAgICAgfQogICAgICBzb3VyY2UgPSBpbmRleGVzOwogICB9CgogICBzd2l0Y2gg KGRzdFR5cGUpIHsKICAgY2FzZSAweDE0MDE6CiAgICAgIHsKICAgICAgICAgR0x1Ynl0ZSAqZHN0 ID0gKEdMdWJ5dGUgKikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgKmRzdCsrID0gKEdMdWJ5dGUpIHNvdXJjZVtp XTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICBjYXNlIDB4MTQwMDoKICAgICAg ewogICAgICAgICBHTGJ5dGUgKmRzdCA9IChHTGJ5dGUgKikgZGVzdDsKICAgICAgICAgR0x1aW50 IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgZHN0W2ld ID0gKEdMYnl0ZSkgc291cmNlW2ldOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAg IGNhc2UgMHgxNDAzOgogICAgICB7CiAgICAgICAgIEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQg KikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKEdMdXNob3J0KSBzb3VyY2VbaV07CiAgICAgICAg IH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVz YV9zd2FwMiggKEdMdXNob3J0ICopIGRzdCwgbiApOwogICAgICAgICB9CiAgICAgIH0KICAgICAg YnJlYWs7CiAgIGNhc2UgMHgxNDAyOgogICAgICB7CiAgICAgICAgIEdMc2hvcnQgKmRzdCA9IChH THNob3J0ICopIGRlc3Q7CiAgICAgICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRzdFtpXSA9IChHTHNob3J0KSBzb3VyY2VbaV07CiAg ICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAg ICBfbWVzYV9zd2FwMiggKEdMdXNob3J0ICopIGRzdCwgbiApOwogICAgICAgICB9CiAgICAgIH0K ICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxNDA1OgogICAgICB7CiAgICAgICAgIEdMdWludCAqZHN0 ID0gKEdMdWludCAqKSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpID0g MDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBkc3RbaV0gPSAoR0x1aW50KSBzb3VyY2VbaV07 CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAg ICAgICBfbWVzYV9zd2FwNCggKEdMdWludCAqKSBkc3QsIG4gKTsKICAgICAgICAgfQogICAgICB9 CiAgICAgIGJyZWFrOwogICBjYXNlIDB4MTQwNDoKICAgICAgewogICAgICAgICBHTGludCAqZHN0 ID0gKEdMaW50ICopIGRlc3Q7CiAgICAgICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRzdFtpXSA9IChHTGludCkgc291cmNlW2ldOwog ICAgICAgICB9CiAgICAgICAgIGlmIChkc3RQYWNraW5nLT5Td2FwQnl0ZXMpIHsKICAgICAgICAg ICAgX21lc2Ffc3dhcDQoIChHTHVpbnQgKikgZHN0LCBuICk7CiAgICAgICAgIH0KICAgICAgfQog ICAgICBicmVhazsKICAgY2FzZSAweDE0MDY6CiAgICAgIHsKICAgICAgICAgR0xmbG9hdCAqZHN0 ID0gKEdMZmxvYXQgKikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKEdMZmxvYXQpIHNvdXJjZVtp XTsKICAgICAgICAgfQogICAgICAgICBpZiAoZHN0UGFja2luZy0+U3dhcEJ5dGVzKSB7CiAgICAg ICAgICAgIF9tZXNhX3N3YXA0KCAoR0x1aW50ICopIGRzdCwgbiApOwogICAgICAgICB9CiAgICAg IH0KICAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6CiAgICAgIF9tZXNhX3Byb2JsZW0oY3R4LCAiYmFk IHR5cGUgaW4gX21lc2FfcGFja19pbmRleF9zcGFuIik7CiAgIH0KfQojIDM0NDUgImltYWdlLmMi CnZvaWQKX21lc2FfdW5wYWNrX3N0ZW5jaWxfc3BhbiggY29uc3QgR0xjb250ZXh0ICpjdHgsIEdM dWludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0VHlwZSwgR0x2b2lk ICpkZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwgY29uc3Qg R0x2b2lkICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9waXhlbHN0b3JlX2F0dHJpYiAqc3JjUGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0x1aW50IHRyYW5zZmVyT3BzICkKewogICA7CiMgMzQ2MSAiaW1hZ2UuYyIKICAgOwoKCgoK ICAgdHJhbnNmZXJPcHMgJj0gMHgyOwoKCgoKICAgaWYgKHRyYW5zZmVyT3BzID09IDAgJiYKICAg ICAgIHNyY1R5cGUgPT0gMHgxNDAxICYmCiAgICAgICBkc3RUeXBlID09IDB4MTQwMSkgewogICAg ICBfbWVzYV9tZW1jcHkoZGVzdCwgc291cmNlLCBuICogc2l6ZW9mKEdMdWJ5dGUpKTsKICAgfQog ICBlbHNlIGlmICh0cmFuc2Zlck9wcyA9PSAwICYmCiAgICAgICAgICAgIHNyY1R5cGUgPT0gMHgx NDA1ICYmCiAgICAgICAgICAgIGRzdFR5cGUgPT0gMHgxNDA1ICYmCiAgICAgICAgICAgICFzcmNQ YWNraW5nLT5Td2FwQnl0ZXMpIHsKICAgICAgX21lc2FfbWVtY3B5KGRlc3QsIHNvdXJjZSwgbiAq IHNpemVvZihHTHVpbnQpKTsKICAgfQogICBlbHNlIHsKCgoKICAgICAgR0x1aW50IGluZGV4ZXNb MjA0OF07CiAgICAgICgodm9pZCkgKChuIDw9IDIwNDgpID8gMCA6IChfX2VwcmludGYgKCIlczol dTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDM0ODcsICJuIDw9IE1BWF9X SURUSCIpLCAwKSkpOwoKICAgICAgZXh0cmFjdF91aW50X2luZGV4ZXMobiwgaW5kZXhlcywgMHgx OTAwLCBzcmNUeXBlLCBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BhY2tp bmcpOwoKICAgICAgaWYgKHRyYW5zZmVyT3BzKSB7CiAgICAgICAgIGlmICh0cmFuc2Zlck9wcyAm IDB4MikgewoKICAgICAgICAgICAgX21lc2Ffc2hpZnRfYW5kX29mZnNldF9jaShjdHgsIG4sIGlu ZGV4ZXMpOwogICAgICAgICB9CgogICAgICAgICBpZiAoY3R4LT5QaXhlbC5NYXBTdGVuY2lsRmxh ZykgewoKICAgICAgICAgICAgR0x1aW50IG1hc2sgPSBjdHgtPlBpeGVsLk1hcFN0b1NzaXplIC0g MTsKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsK ICAgICAgICAgICAgICAgaW5kZXhlc1tpXSA9IGN0eC0+UGl4ZWwuTWFwU3RvU1sgaW5kZXhlc1tp XSAmIG1hc2sgXTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgIH0KCgogICAgICBzd2l0 Y2ggKGRzdFR5cGUpIHsKICAgICAgICAgY2FzZSAweDE0MDE6CiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgR0x1Ynl0ZSAqZHN0ID0gKEdMdWJ5dGUgKikgZGVzdDsKICAgICAgICAgICAgICAg R0x1aW50IGk7CiAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAg ICAgICAgICAgICAgZHN0W2ldID0gKEdMdWJ5dGUpIChpbmRleGVzW2ldICYgMHhmZik7CiAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz ZSAweDE0MDM6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgR0x1aW50ICpkc3QgPSAoR0x1 aW50ICopIGRlc3Q7CiAgICAgICAgICAgICAgIEdMdWludCBpOwogICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGRzdFtpXSA9IChHTHVzaG9y dCkgKGluZGV4ZXNbaV0gJiAweGZmZmYpOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgxNDA1OgogICAgICAgICAgICBfbWVz YV9tZW1jcHkoZGVzdCwgaW5kZXhlcywgbiAqIHNpemVvZihHTHVpbnQpKTsKICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIF9tZXNhX3Byb2JsZW0oY3R4LCAi YmFkIGRzdFR5cGUgaW4gX21lc2FfdW5wYWNrX3N0ZW5jaWxfc3BhbiIpOwogICAgICB9CiAgIH0K fQoKCnZvaWQKX21lc2FfcGFja19zdGVuY2lsX3NwYW4oIGNvbnN0IEdMY29udGV4dCAqY3R4LCBH THVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RUeXBlLCBHTHZvaWQg KmRlc3QsIGNvbnN0IEdMc3RlbmNpbCAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICpkc3RQYWNraW5nICkKewogICBHTHN0 ZW5jaWwgc3RlbmNpbFsyMDQ4XTsKCiAgIDsKCiAgIGlmIChjdHgtPlBpeGVsLkluZGV4U2hpZnQg fHwgY3R4LT5QaXhlbC5JbmRleE9mZnNldCB8fAogICAgICAgY3R4LT5QaXhlbC5NYXBTdGVuY2ls RmxhZykgewoKICAgICAgX21lc2FfbWVtY3B5KHN0ZW5jaWwsIHNvdXJjZSwgbiAqIHNpemVvZihH THN0ZW5jaWwpKTsKICAgICAgaWYgKGN0eC0+UGl4ZWwuSW5kZXhTaGlmdCB8fCBjdHgtPlBpeGVs LkluZGV4T2Zmc2V0KSB7CiAgICAgICAgIF9tZXNhX3NoaWZ0X2FuZF9vZmZzZXRfc3RlbmNpbCgg Y3R4LCBuLCBzdGVuY2lsICk7CiAgICAgIH0KICAgICAgaWYgKGN0eC0+UGl4ZWwuTWFwU3RlbmNp bEZsYWcpIHsKICAgICAgICAgX21lc2FfbWFwX3N0ZW5jaWwoIGN0eCwgbiwgc3RlbmNpbCApOwog ICAgICB9CiAgICAgIHNvdXJjZSA9IHN0ZW5jaWw7CiAgIH0KCiAgIHN3aXRjaCAoZHN0VHlwZSkg ewogICBjYXNlIDB4MTQwMToKICAgICAgaWYgKHNpemVvZihHTHN0ZW5jaWwpID09IDgpIHsKICAg ICAgICAgX21lc2FfbWVtY3B5KGRlc3QsIHNvdXJjZSwgbik7CiAgICAgIH0KICAgICAgZWxzZSB7 CiAgICAgICAgIEdMdWJ5dGUgKmRzdCA9IChHTHVieXRlICopIGRlc3Q7CiAgICAgICAgIEdMdWlu dCBpOwogICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgIGRzdFtpXSA9IChH THVieXRlKSBzb3VyY2VbaV07CiAgICAgICAgIH0KICAgICAgfQogICAgICBicmVhazsKICAgY2Fz ZSAweDE0MDA6CiAgICAgIGlmIChzaXplb2YoR0xzdGVuY2lsKSA9PSA4KSB7CiAgICAgICAgIF9t ZXNhX21lbWNweShkZXN0LCBzb3VyY2UsIG4pOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAg ICBHTGJ5dGUgKmRzdCA9IChHTGJ5dGUgKikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAg ICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKEdMYnl0ZSkgc291 cmNlW2ldOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxNDAzOgog ICAgICB7CiAgICAgICAgIEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQgKikgZGVzdDsKICAgICAg ICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgZHN0 W2ldID0gKEdMdXNob3J0KSBzb3VyY2VbaV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBh Y2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVzYV9zd2FwMiggKEdMdXNob3J0ICop IGRzdCwgbiApOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxNDAy OgogICAgICB7CiAgICAgICAgIEdMc2hvcnQgKmRzdCA9IChHTHNob3J0ICopIGRlc3Q7CiAgICAg ICAgIEdMdWludCBpOwogICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgIGRz dFtpXSA9IChHTHNob3J0KSBzb3VyY2VbaV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBh Y2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVzYV9zd2FwMiggKEdMdXNob3J0ICop IGRzdCwgbiApOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxNDA1 OgogICAgICB7CiAgICAgICAgIEdMdWludCAqZHN0ID0gKEdMdWludCAqKSBkZXN0OwogICAgICAg ICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpPTA7aTxuO2krKykgewogICAgICAgICAgICBkc3Rb aV0gPSAoR0x1aW50KSBzb3VyY2VbaV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBhY2tp bmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVzYV9zd2FwNCggKEdMdWludCAqKSBkc3Qs IG4gKTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICBjYXNlIDB4MTQwNDoKICAg ICAgewogICAgICAgICBHTGludCAqZHN0ID0gKEdMaW50ICopIGRlc3Q7CiAgICAgICAgIEdMdWlu dCBpOwogICAgICAgICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICpkc3QrKyA9IChH TGludCkgc291cmNlW2ldOwogICAgICAgICB9CiAgICAgICAgIGlmIChkc3RQYWNraW5nLT5Td2Fw Qnl0ZXMpIHsKICAgICAgICAgICAgX21lc2Ffc3dhcDQoIChHTHVpbnQgKikgZHN0LCBuICk7CiAg ICAgICAgIH0KICAgICAgfQogICAgICBicmVhazsKICAgY2FzZSAweDE0MDY6CiAgICAgIHsKICAg ICAgICAgR0xmbG9hdCAqZHN0ID0gKEdMZmxvYXQgKikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7 CiAgICAgICAgIGZvciAoaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKEdMZmxv YXQpIHNvdXJjZVtpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoZHN0UGFja2luZy0+U3dhcEJ5 dGVzKSB7CiAgICAgICAgICAgIF9tZXNhX3N3YXA0KCAoR0x1aW50ICopIGRzdCwgbiApOwogICAg ICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxQTAwOgogICAgICBpZiAoZHN0 UGFja2luZy0+THNiRmlyc3QpIHsKICAgICAgICAgR0x1Ynl0ZSAqZHN0ID0gKEdMdWJ5dGUgKikg ZGVzdDsKICAgICAgICAgR0xpbnQgc2hpZnQgPSAwOwogICAgICAgICBHTHVpbnQgaTsKICAgICAg ICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpZiAoc2hpZnQgPT0gMCkK ICAgICAgICAgICAgICAgKmRzdCA9IDA7CiAgICAgICAgICAgICpkc3QgfD0gKChzb3VyY2VbaV0g IT0gMCkgPDwgc2hpZnQpOwogICAgICAgICAgICBzaGlmdCsrOwogICAgICAgICAgICBpZiAoc2hp ZnQgPT0gOCkgewogICAgICAgICAgICAgICBzaGlmdCA9IDA7CiAgICAgICAgICAgICAgIGRzdCsr OwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAg R0x1Ynl0ZSAqZHN0ID0gKEdMdWJ5dGUgKikgZGVzdDsKICAgICAgICAgR0xpbnQgc2hpZnQgPSA3 OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewog ICAgICAgICAgICBpZiAoc2hpZnQgPT0gNykKICAgICAgICAgICAgICAgKmRzdCA9IDA7CiAgICAg ICAgICAgICpkc3QgfD0gKChzb3VyY2VbaV0gIT0gMCkgPDwgc2hpZnQpOwogICAgICAgICAgICBz aGlmdC0tOwogICAgICAgICAgICBpZiAoc2hpZnQgPCAwKSB7CiAgICAgICAgICAgICAgIHNoaWZ0 ID0gNzsKICAgICAgICAgICAgICAgZHN0Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg ICB9CiAgICAgIGJyZWFrOwogICBkZWZhdWx0OgogICAgICBfbWVzYV9wcm9ibGVtKGN0eCwgImJh ZCB0eXBlIGluIF9tZXNhX3BhY2tfaW5kZXhfc3BhbiIpOwogICB9Cn0KCgoKdm9pZApfbWVzYV91 bnBhY2tfZGVwdGhfc3BhbiggY29uc3QgR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLCBHTGZsb2F0 ICpkZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1R5cGUsIGNvbnN0IEdM dm9pZCAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3Bp eGVsc3RvcmVfYXR0cmliICpzcmNQYWNraW5nICkKewogICBzd2l0Y2ggKHNyY1R5cGUpIHsKICAg ICAgY2FzZSAweDE0MDA6CiAgICAgICAgIHsKICAgICAgICAgICAgR0x1aW50IGk7CiAgICAgICAg ICAgIGNvbnN0IEdMdWJ5dGUgKnNyYyA9IChjb25zdCBHTHVieXRlICopIHNvdXJjZTsKICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICBkZXN0W2ldID0g KCgyLjBGICogKHNyY1tpXSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikpOwogICAgICAgICAgICB9 CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHgxNDAxOgogICAgICAgICB7 CiAgICAgICAgICAgIEdMdWludCBpOwogICAgICAgICAgICBjb25zdCBHTHVieXRlICpzcmMgPSAo Y29uc3QgR0x1Ynl0ZSAqKSBzb3VyY2U7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKICAgICAgICAgICAgICAgZGVzdFtpXSA9IF9tZXNhX3VieXRlX3RvX2Zsb2F0X2NvbG9y X3RhYlsodW5zaWduZWQgaW50KShzcmNbaV0pXTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAg ICAgICAgIGJyZWFrOwogICAgICBjYXNlIDB4MTQwMjoKICAgICAgICAgewogICAgICAgICAgICBH THVpbnQgaTsKICAgICAgICAgICAgY29uc3QgR0xzaG9ydCAqc3JjID0gKGNvbnN0IEdMc2hvcnQg Kikgc291cmNlOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAg ICAgICAgIGRlc3RbaV0gPSAoKDIuMEYgKiAoc3JjW2ldKSArIDEuMEYpICogKDEuMEYvNjU1MzUu MEYpKTsKICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNl IDB4MTQwMzoKICAgICAgICAgewogICAgICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgICAgY29u c3QgR0x1c2hvcnQgKnNyYyA9IChjb25zdCBHTHVzaG9ydCAqKSBzb3VyY2U7CiAgICAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgZGVzdFtpXSA9ICgoR0xm bG9hdCkgKHNyY1tpXSkgKiAoMS4wRiAvIDY1NTM1LjBGKSk7CiAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDQ6CiAgICAgICAgIHsKICAgICAg ICAgICAgR0x1aW50IGk7CiAgICAgICAgICAgIGNvbnN0IEdMaW50ICpzcmMgPSAoY29uc3QgR0xp bnQgKikgc291cmNlOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAg ICAgICAgICAgIGRlc3RbaV0gPSAoKDIuMEYgKiAoc3JjW2ldKSArIDEuMEYpICogKDEuMEYvNDI5 NDk2NzI5NC4wRikpOwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg ICAgIGNhc2UgMHgxNDA1OgogICAgICAgICB7CiAgICAgICAgICAgIEdMdWludCBpOwogICAgICAg ICAgICBjb25zdCBHTHVpbnQgKnNyYyA9IChjb25zdCBHTHVpbnQgKikgc291cmNlOwogICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgIGRlc3RbaV0gPSAo KEdMZmxvYXQpIChzcmNbaV0pICogKDEuMEYgLyA0Mjk0OTY3Mjk1LjBGKSk7CiAgICAgICAgICAg IH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgY2FzZSAweDE0MDY6CiAgICAgICAg IF9tZXNhX21lbWNweShkZXN0LCBzb3VyY2UsIG4gKiBzaXplb2YoR0xmbG9hdCkpOwogICAgICAg ICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICAgX21lc2FfcHJvYmxlbSgwLCAiYmFkIHR5 cGUgaW4gX21lc2FfdW5wYWNrX2RlcHRoX3NwYW4oKSIpOwogICAgICAgICByZXR1cm47CiAgIH0K CgoKICAgaWYgKGN0eC0+UGl4ZWwuRGVwdGhTY2FsZSAhPSAxLjAgfHwgY3R4LT5QaXhlbC5EZXB0 aEJpYXMgIT0gMC4wKSB7CiAgICAgIEdMdWludCBpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsg aSsrKSB7CiAgICAgICAgIEdMZmxvYXQgZCA9IGRlc3RbaV0gKiBjdHgtPlBpeGVsLkRlcHRoU2Nh bGUgKyBjdHgtPlBpeGVsLkRlcHRoQmlhczsKICAgICAgICAgZGVzdFtpXSA9ICggKGQpPCgwLjBG KSA/ICgwLjBGKSA6ICgoZCk+KDEuMEYpID8gKDEuMEYpIDogKGQpKSApOwogICAgICB9CiAgIH0K fQoKCgoKCgp2b2lkCl9tZXNhX3BhY2tfZGVwdGhfc3BhbiggY29uc3QgR0xjb250ZXh0ICpjdHgs IEdMdWludCBuLCBHTHZvaWQgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRz dFR5cGUsIGNvbnN0IEdMZmxvYXQgKmRlcHRoU3BhbiwKICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9hdHRyaWIgKmRzdFBhY2tpbmcgKQp7CiAgIEdMZmxv YXQgZGVwdGhDb3B5WzIwNDhdOwogICBjb25zdCBHTGJvb2xlYW4gYmlhc19vcl9zY2FsZSA9IGN0 eC0+UGl4ZWwuRGVwdGhCaWFzICE9IDAuMCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC0+UGl4ZWwuRGVwdGhTY2FsZSAhPSAxLjA7CgogICA7CgogICBpZiAoYmlhc19v cl9zY2FsZSkgewogICAgICBHTHVpbnQgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykg ewogICAgICAgICBHTGZsb2F0IGQ7CiAgICAgICAgIGQgPSBkZXB0aFNwYW5baV0gKiBjdHgtPlBp eGVsLkRlcHRoU2NhbGUgKyBjdHgtPlBpeGVsLkRlcHRoQmlhczsKICAgICAgICAgZGVwdGhDb3B5 W2ldID0gKCAoZCk8KDAuMEYpID8gKDAuMEYpIDogKChkKT4oMS4wRikgPyAoMS4wRikgOiAoZCkp ICk7CiAgICAgIH0KICAgICAgZGVwdGhTcGFuID0gZGVwdGhDb3B5OwogICB9CgogICBzd2l0Y2gg KGRzdFR5cGUpIHsKICAgY2FzZSAweDE0MDE6CiAgICAgIHsKICAgICAgICAgR0x1Ynl0ZSAqZHN0 ID0gKEdMdWJ5dGUgKikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKChHTHVieXRlKSAoR0xpbnQp ICgoZGVwdGhTcGFuW2ldKSAqIDI1NS4wRikpOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJl YWs7CiAgIGNhc2UgMHgxNDAwOgogICAgICB7CiAgICAgICAgIEdMYnl0ZSAqZHN0ID0gKEdMYnl0 ZSAqKSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47 IGkrKykgewogICAgICAgICAgICBkc3RbaV0gPSAoICgoKEdMaW50KSAoMjU1LjBGICogKGRlcHRo U3BhbltpXSkpKSAtIDEpIC8gMiApOwogICAgICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CiAg IGNhc2UgMHgxNDAzOgogICAgICB7CiAgICAgICAgIEdMdXNob3J0ICpkc3QgPSAoR0x1c2hvcnQg KikgZGVzdDsKICAgICAgICAgR0x1aW50IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKICAgICAgICAgICAgZHN0W2ldID0gKChHTHVzaG9ydCkgKEdMaW50KSAoKGRlcHRoU3Bh bltpXSkgKiA2NTUzNS4wRikpOwogICAgICAgICB9CiAgICAgICAgIGlmIChkc3RQYWNraW5nLT5T d2FwQnl0ZXMpIHsKICAgICAgICAgICAgX21lc2Ffc3dhcDIoIChHTHVzaG9ydCAqKSBkc3QsIG4g KTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICBjYXNlIDB4MTQwMjoKICAgICAg ewogICAgICAgICBHTHNob3J0ICpkc3QgPSAoR0xzaG9ydCAqKSBkZXN0OwogICAgICAgICBHTHVp bnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBkc3Rb aV0gPSAoICgoKEdMaW50KSAoNjU1MzUuMEYgKiAoZGVwdGhTcGFuW2ldKSkpIC0gMSkgLyAyICk7 CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAg ICAgICBfbWVzYV9zd2FwMiggKEdMdXNob3J0ICopIGRzdCwgbiApOwogICAgICAgICB9CiAgICAg IH0KICAgICAgYnJlYWs7CiAgIGNhc2UgMHgxNDA1OgogICAgICB7CiAgICAgICAgIEdMdWludCAq ZHN0ID0gKEdMdWludCAqKSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChp ID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBkc3RbaV0gPSAoKEdMdWludCkgKChkZXB0 aFNwYW5baV0pICogNDI5NDk2NzI5NS4wKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRzdFBh Y2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVzYV9zd2FwNCggKEdMdWludCAqKSBk c3QsIG4gKTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGJyZWFrOwogICBjYXNlIDB4MTQwNDoK ICAgICAgewogICAgICAgICBHTGludCAqZHN0ID0gKEdMaW50ICopIGRlc3Q7CiAgICAgICAgIEdM dWludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGRz dFtpXSA9ICggKEdMaW50KSAoMjE0NzQ4MzY0Ny4wICogKGRlcHRoU3BhbltpXSkpICk7CiAgICAg ICAgIH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBf bWVzYV9zd2FwNCggKEdMdWludCAqKSBkc3QsIG4gKTsKICAgICAgICAgfQogICAgICB9CiAgICAg IGJyZWFrOwogICBjYXNlIDB4MTQwNjoKICAgICAgewogICAgICAgICBHTGZsb2F0ICpkc3QgPSAo R0xmbG9hdCAqKSBkZXN0OwogICAgICAgICBHTHVpbnQgaTsKICAgICAgICAgZm9yIChpID0gMDsg aSA8IG47IGkrKykgewogICAgICAgICAgICBkc3RbaV0gPSBkZXB0aFNwYW5baV07CiAgICAgICAg IH0KICAgICAgICAgaWYgKGRzdFBhY2tpbmctPlN3YXBCeXRlcykgewogICAgICAgICAgICBfbWVz YV9zd2FwNCggKEdMdWludCAqKSBkc3QsIG4gKTsKICAgICAgICAgfQogICAgICB9CiAgICAgIGJy ZWFrOwogICBkZWZhdWx0OgogICAgICBfbWVzYV9wcm9ibGVtKGN0eCwgImJhZCB0eXBlIGluIF9t ZXNhX3BhY2tfZGVwdGhfc3BhbiIpOwogICB9Cn0KIyAzODgwICJpbWFnZS5jIgp2b2lkICoKX21l c2FfdW5wYWNrX2ltYWdlKCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk ZXB0aCwKICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29u c3QgR0x2b2lkICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3Bp eGVsc3RvcmVfYXR0cmliICp1bnBhY2sgKQp7CiAgIEdMaW50IGJ5dGVzUGVyUm93LCBjb21wc1Bl clJvdzsKICAgR0xib29sZWFuIGZsaXBCeXRlcywgc3dhcDIsIHN3YXA0OwoKICAgaWYgKCFwaXhl bHMpCiAgICAgIHJldHVybiAwOwoKICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAgfHwg ZGVwdGggPD0gMCkKICAgICAgcmV0dXJuIDA7CgogICBpZiAoZm9ybWF0ID09IDB4MUEwMCkgewog ICAgICBieXRlc1BlclJvdyA9ICh3aWR0aCArIDcpID4+IDM7CiAgICAgIGZsaXBCeXRlcyA9ICF1 bnBhY2stPkxzYkZpcnN0OwogICAgICBzd2FwMiA9IHN3YXA0ID0gMHgwOwogICAgICBjb21wc1Bl clJvdyA9IDA7CiAgIH0KICAgZWxzZSB7CiAgICAgIGNvbnN0IEdMaW50IGJ5dGVzUGVyUGl4ZWwg PSBfbWVzYV9ieXRlc19wZXJfcGl4ZWwoZm9ybWF0LCB0eXBlKTsKICAgICAgY29uc3QgR0xpbnQg Y29tcG9uZW50cyA9IF9tZXNhX2NvbXBvbmVudHNfaW5fZm9ybWF0KGZvcm1hdCk7CiAgICAgIEdM aW50IGJ5dGVzUGVyQ29tcDsKICAgICAgaWYgKGJ5dGVzUGVyUGl4ZWwgPD0gMCB8fCBjb21wb25l bnRzIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogICAgICBieXRlc1BlclJvdyA9IGJ5dGVzUGVy UGl4ZWwgKiB3aWR0aDsKICAgICAgYnl0ZXNQZXJDb21wID0gYnl0ZXNQZXJQaXhlbCAvIGNvbXBv bmVudHM7CiAgICAgIGZsaXBCeXRlcyA9IDB4MDsKICAgICAgc3dhcDIgPSAoYnl0ZXNQZXJDb21w ID09IDIpICYmIHVucGFjay0+U3dhcEJ5dGVzOwogICAgICBzd2FwNCA9IChieXRlc1BlckNvbXAg PT0gNCkgJiYgdW5wYWNrLT5Td2FwQnl0ZXM7CiAgICAgIGNvbXBzUGVyUm93ID0gY29tcG9uZW50 cyAqIHdpZHRoOwogICAgICAoKHZvaWQpICgoY29tcHNQZXJSb3cgPj0gd2lkdGgpID8gMCA6IChf X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiaW1hZ2UuYyIsIDM5 MTIsICJjb21wc1BlclJvdyA+PSB3aWR0aCIpLCAwKSkpOwogICB9CgogICB7CiAgICAgIEdMdWJ5 dGUgKmRlc3RCdWZmZXIgPSAoR0x1Ynl0ZSAqKSBfbWVzYV9tYWxsb2MoYnl0ZXNQZXJSb3cgKiBo ZWlnaHQgKiBkZXB0aCk7CiAgICAgIEdMdWJ5dGUgKmRzdDsKICAgICAgR0xpbnQgaW1nLCByb3c7 CiAgICAgIGlmICghZGVzdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIDA7CgogICAgICBkc3QgPSBk ZXN0QnVmZmVyOwogICAgICBmb3IgKGltZyA9IDA7IGltZyA8IGRlcHRoOyBpbWcrKykgewogICAg ICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93KyspIHsKICAgICAgICAgICAgY29u c3QgR0x2b2lkICpzcmMgPSBfbWVzYV9pbWFnZV9hZGRyZXNzKHVucGFjaywgcGl4ZWxzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBp bWcsIHJvdywgMCk7CiAgICAgICAgICAgIF9tZXNhX21lbWNweShkc3QsIHNyYywgYnl0ZXNQZXJS b3cpOwoKICAgICAgICAgICAgaWYgKGZsaXBCeXRlcykgewogICAgICAgICAgICAgICBmbGlwX2J5 dGVzKChHTHVieXRlICopIGRzdCwgYnl0ZXNQZXJSb3cpOwogICAgICAgICAgICB9CiAgICAgICAg ICAgIGVsc2UgaWYgKHN3YXAyKSB7CiAgICAgICAgICAgICAgIF9tZXNhX3N3YXAyKChHTHVzaG9y dCopIGRzdCwgY29tcHNQZXJSb3cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYg KHN3YXA0KSB7CiAgICAgICAgICAgICAgIF9tZXNhX3N3YXA0KChHTHVpbnQqKSBkc3QsIGNvbXBz UGVyUm93KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkc3QgKz0gYnl0ZXNQZXJSb3c7CiAg ICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZGVzdEJ1ZmZlcjsKICAgfQp9Cg==