From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe35.google.com (mail-vs1-xe35.google.com [IPv6:2607:f8b0:4864:20::e35]) by sourceware.org (Postfix) with ESMTPS id 58E9D385802F for ; Mon, 20 Feb 2023 12:01:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 58E9D385802F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-vs1-xe35.google.com with SMTP id b20so151476vsq.4 for ; Mon, 20 Feb 2023 04:01:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1676894487; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=PIMIpvnRLHpkIf90dxM/K+EJAFIvgqUf9JLAAx/VGkI=; b=AyTNeAdq1MhcVWocaKFYtr+JY+v5jKrUalThv2f5voUFZbP2fY357Jp6G3+1w5Y49F gF6834BlboQXY0V8Znj/ccmUAAqMxAt/ygblYyYrJoGVYYi+e7N1+E2vnqDpC1PJmVIe vFIjkv11Nk0dSExZSc8COiHkygh7RUK0lqWSVs3387U+uYAnR49Kk34seg2Jq/9+lI+C WVH5Ch0K8Ei6YQMYDu9oCpTIuXTO+Npa/rsx/2VXWNL4OKV+d6jSIMFs3NVLC5TjPAh1 oYxZuPJrHEUyx03xSbxaKlnpIiVOF2wzd5AffnHXRydZhibrCpLU7jEFCaT+w2zKi2+g t9Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1676894487; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PIMIpvnRLHpkIf90dxM/K+EJAFIvgqUf9JLAAx/VGkI=; b=O+9fz9Zk868myX+xwRPIdFleiT4M6JU7qBac/yqoAH9KECQ2LLCMXrGr8Ruglkmzlb +vEWwOzQ3thqB2oPxfXXctycdEWpHb/JpH1q5s2ZYEWb4ZYbrnQIYJ2joN647owfMj2P d/wxRw7zR/u3u2GwasjRcuX35k4byudewXC3Fn9SzVq3EGJao1DkwYVOhtyTh6TsIvzL iGQ724/GiEJrc06YpJiFiA5+1zTFbzLdw55ZhnqTFLThtB69X30KZXE8sPbUlPg7yJ1B 96kvIAblGABIUkyzUUXRQyfD3waUrdLOEL6oVhcTJeW5B+iPt5RDI00KD9qdjNr0/6XS ufUw== X-Gm-Message-State: AO0yUKXWPCDm2ntWWiFSPyFLdbUfamjWutOFGiKd/uxHM5ivMYRl8lOQ ngwDzi1SCFfV+jg76jbdsQe7NEAZXFTMyA3lxAiRG2GJlZw= X-Google-Smtp-Source: AK7set/Jn5XK+dV9zA3np+UNKK9jzWlXdMFWgCdHK4MzyFWEwJjEog1wFmPI72gBv+j+qV16hJVQbNDk20bFRadF6gA= X-Received: by 2002:a0c:df04:0:b0:56e:cbcd:63f4 with SMTP id g4-20020a0cdf04000000b0056ecbcd63f4mr135162qvl.53.1676811058509; Sun, 19 Feb 2023 04:50:58 -0800 (PST) MIME-Version: 1.0 From: Girish Joshi Date: Sun, 19 Feb 2023 18:20:46 +0530 Message-ID: Subject: [PATCH] build: All microbenchmarks should output in JSON. (bug 27740) To: Girish Joshi via Libc-alpha Content-Type: multipart/mixed; boundary="000000000000800cb105f50cff0e" X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DATE_IN_PAST_12_24,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000800cb105f50cff0e Content-Type: text/plain; charset="UTF-8" Hello, According to bug #27740 [1], I found that the following files need to be updated. - benchtests/bench-memccpy.c - benchtests/bench-strcasestr.c - benchtests/bench-strcpy_chk.c - benchtests/bench-strsep.c - benchtests/bench-strtok.c Also, the output json needs to be fixed in two files. - bench-math-inlines.c - bench-strcoll.c This patch fixes both of these things. The output is tested using benchtests/scripts/compare_strings.py. Please let me know if some correction is needed in this patch. Thanks, Girish Joshi girishjoshi.io [1]: https://sourceware.org/bugzilla/show_bug.cgi?id=27740 --000000000000800cb105f50cff0e Content-Type: text/x-patch; charset="US-ASCII"; name="0001-build-All-microbenchmarks-should-output-in-JSON.-bug.patch" Content-Disposition: attachment; filename="0001-build-All-microbenchmarks-should-output-in-JSON.-bug.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lebdyxn20 RnJvbSBjOGQxYjY4YzhmYzdjZmI2MWQxM2Y3MzIxYTcyMTNjZDFhZmI2ZDQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHaXJpc2ggSm9zaGkgPGdpcmlzaDk0NkBnbWFpbC5jb20+CkRh dGU6IFNhdCwgMTUgT2N0IDIwMjIgMDA6MjQ6MDMgKzA1MzAKU3ViamVjdDogW1BBVENIXSBidWls ZDogQWxsIG1pY3JvYmVuY2htYXJrcyBzaG91bGQgb3V0cHV0IGluIEpTT04uIChidWcgMjc3NDAp CgpUaGlzIG1ha2VzIHVzZSBvZiBqc29uLWxpYi5oIGluCiAgICAtIGJlbmNodGVzdHMvYmVuY2gt bWVtY2NweS5jCiAgICAtIGJlbmNodGVzdHMvYmVuY2gtc3RyY2FzZXN0ci5jCiAgICAtIGJlbmNo dGVzdHMvYmVuY2gtc3RyY3B5X2Noay5jCiAgICAtIGJlbmNodGVzdHMvYmVuY2gtc3Ryc2VwLmMK ICAgIC0gYmVuY2h0ZXN0cy9iZW5jaC1zdHJ0b2suYwp0byBvdXRwdXQgdG8ganNvbi4KClRoaXMg Y29tbWl0IGFsc28gZml4ZXMgdGhlIGpzb24gb3V0cHV0IGdlbmVyYXRlZCBieQpiZW5jaC1tYXRo LWlubGluZXMuYyBhbmQgYmVuY2gtc3RyY29sbC5jCgpUaGUgb3V0cHV0IGhhcyBiZWVuIHRlc3Rl ZCB3aXRoCmJlbmNodGVzdHMvc2NyaXB0cy9jb21wYXJlX3N0cmluZ3MucHkgc2NyaXB0LgoKU2ln bmVkLW9mZi1ieTogR2lyaXNoIEpvc2hpIDxnaXJpc2g5NDZAZ21haWwuY29tPgotLS0KIGJlbmNo dGVzdHMvYmVuY2gtbWF0aC1pbmxpbmVzLmMgfCAgIDIgKwogYmVuY2h0ZXN0cy9iZW5jaC1tZW1j Y3B5LmMgICAgICB8ICA3MiArKysrKysrKysrKysrLS0tLS0tCiBiZW5jaHRlc3RzL2JlbmNoLXN0 cmNhc2VzdHIuYyAgIHwgMTIyICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBiZW5j aHRlc3RzL2JlbmNoLXN0cmNvbGwuYyAgICAgIHwgICAyICsKIGJlbmNodGVzdHMvYmVuY2gtc3Ry Y3B5X2Noay5jICAgfCAxMDcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogYmVuY2h0ZXN0 cy9iZW5jaC1zdHJzZXAuYyAgICAgICB8IDEyMiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogYmVuY2h0ZXN0cy9iZW5jaC1zdHJ0b2suYyAgICAgICB8IDEyMiArKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAzNDMgaW5zZXJ0aW9ucygrKSwg MjA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2JlbmNodGVzdHMvYmVuY2gtbWF0aC1pbmxp bmVzLmMgYi9iZW5jaHRlc3RzL2JlbmNoLW1hdGgtaW5saW5lcy5jCmluZGV4IGU3NTVkZTFlMjgu LmNjNDliY2I4NjkgMTAwNjQ0Ci0tLSBhL2JlbmNodGVzdHMvYmVuY2gtbWF0aC1pbmxpbmVzLmMK KysrIGIvYmVuY2h0ZXN0cy9iZW5jaC1tYXRoLWlubGluZXMuYwpAQCAtMjQ4LDYgKzI0OCw3IEBA IHRlc3RfbWFpbiAodm9pZCkKICAgYmVuY2hfc3RhcnQgKCk7CiAKICAganNvbl9pbml0ICgmanNv bl9jdHgsIDIsIHN0ZG91dCk7CisgIGpzb25fZG9jdW1lbnRfYmVnaW4gKCZqc29uX2N0eCk7CiAg IGpzb25fYXR0cl9vYmplY3RfYmVnaW4gKCZqc29uX2N0eCwgVEVTVF9OQU1FKTsKIAogICAvKiBD cmVhdGUgMiB0ZXN0IGFycmF5cywgb25lIHdpdGggMTAlIHplcm9lcywgMTAlIG5lZ2F0aXZlIHZh bHVlcywKQEAgLTI3OCw2ICsyNzksNyBAQCB0ZXN0X21haW4gKHZvaWQpCiAgICAgfQogCiAgIGpz b25fYXR0cl9vYmplY3RfZW5kICgmanNvbl9jdHgpOworICBqc29uX2RvY3VtZW50X2VuZCAoJmpz b25fY3R4KTsKICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2JlbmNodGVzdHMvYmVuY2gt bWVtY2NweS5jIGIvYmVuY2h0ZXN0cy9iZW5jaC1tZW1jY3B5LmMKaW5kZXggNTFlZDhkYWQyZi4u NTMwMmNhY2QwYiAxMDA2NDQKLS0tIGEvYmVuY2h0ZXN0cy9iZW5jaC1tZW1jY3B5LmMKKysrIGIv YmVuY2h0ZXN0cy9iZW5jaC1tZW1jY3B5LmMKQEAgLTM1LDExICszNSwxMyBAQCBnZW5lcmljX21l bWNjcHkgKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBpbnQgYywgc2l6ZV90IG4pCiBJTVBM IChtZW1jY3B5LCAxKQogSU1QTCAoZ2VuZXJpY19tZW1jY3B5LCAwKQogCisjaW5jbHVkZSAianNv bi1saWIuaCIKKwogdHlwZWRlZiB2b2lkICooKnByb3RvX3QpICh2b2lkICosIGNvbnN0IHZvaWQg KiwgaW50IGMsIHNpemVfdCk7CiAKIHN0YXRpYyB2b2lkCi1kb19vbmVfdGVzdCAoaW1wbF90ICpp bXBsLCB2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgaW50IGMsIHNpemVfdCBsZW4sCi0JICAg ICBzaXplX3QgbikKK2RvX29uZV90ZXN0IChqc29uX2N0eF90ICpqc29uX2N0eCwgaW1wbF90ICpp bXBsLCB2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywKKyAgIGludCBjLCBzaXplX3QgbGVuLCBz aXplX3QgbikKIHsKICAgc2l6ZV90IGksIGl0ZXJzID0gSU5ORVJfTE9PUF9JVEVSU19MQVJHRTsK ICAgdGltaW5nX3Qgc3RhcnQsIHN0b3AsIGN1cjsKQEAgLTUzLDEyICs1NSwxMiBAQCBkb19vbmVf dGVzdCAoaW1wbF90ICppbXBsLCB2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgaW50IGMsIHNp emVfdCBsZW4sCiAKICAgVElNSU5HX0RJRkYgKGN1ciwgc3RhcnQsIHN0b3ApOwogCi0gIFRJTUlO R19QUklOVF9NRUFOICgoZG91YmxlKSBjdXIsIChkb3VibGUpIGl0ZXJzKTsKKyAganNvbl9lbGVt ZW50X2RvdWJsZSAoanNvbl9jdHgsIChkb3VibGUpIGN1ciAvIChkb3VibGUpIGl0ZXJzKTsKIH0K IAogc3RhdGljIHZvaWQKLWRvX3Rlc3QgKHNpemVfdCBhbGlnbjEsIHNpemVfdCBhbGlnbjIsIGlu dCBjLCBzaXplX3QgbGVuLCBzaXplX3QgbiwKLQkgaW50IG1heF9jaGFyKQorZG9fdGVzdCAoanNv bl9jdHhfdCAqanNvbl9jdHgsIHNpemVfdCBhbGlnbjEsIHNpemVfdCBhbGlnbjIsIGludCBjLAor ICAgc2l6ZV90IGxlbiwgc2l6ZV90IG4sIGludCBtYXhfY2hhcikKIHsKICAgc2l6ZV90IGk7CiAg IGNoYXIgKnMxLCAqczI7CkBAIC04NCw0NiArODYsNzAgQEAgZG9fdGVzdCAoc2l6ZV90IGFsaWdu MSwgc2l6ZV90IGFsaWduMiwgaW50IGMsIHNpemVfdCBsZW4sIHNpemVfdCBuLAogICBmb3IgKGkg PSBsZW47IGkgKyBhbGlnbjEgPCBwYWdlX3NpemUgJiYgaSA8IGxlbiArIDY0OyArK2kpCiAgICAg czFbaV0gPSAzMiArIDMyICogaSAlIChtYXhfY2hhciAtIDMyKTsKIAotICBwcmludGYgKCJMZW5n dGggJTR6ZCwgbiAlNHpkLCBjaGFyICVkLCBhbGlnbm1lbnQgJTJ6ZC8lMnpkOiIsIGxlbiwgbiwg YywgYWxpZ24xLCBhbGlnbjIpOworICBqc29uX2VsZW1lbnRfb2JqZWN0X2JlZ2luIChqc29uX2N0 eCk7CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwgImxlbmd0aCIsIChkb3VibGUpIGxlbik7 CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwgIm4iLCAoZG91YmxlKSBuKTsKKyAganNvbl9h dHRyX3VpbnQgKGpzb25fY3R4LCAiYyIsIChpbnQpIGMpOworICBqc29uX2F0dHJfdWludCAoanNv bl9jdHgsICJhbGlnbjEiLCAoZG91YmxlKSBhbGlnbjEpOworICBqc29uX2F0dHJfdWludCAoanNv bl9jdHgsICJhbGlnbjIiLCAoZG91YmxlKSBhbGlnbjIpOworICBqc29uX2FycmF5X2JlZ2luIChq c29uX2N0eCwgInRpbWluZ3MiKTsKIAogICBGT1JfRUFDSF9JTVBMIChpbXBsLCAwKQotICAgIGRv X29uZV90ZXN0IChpbXBsLCBzMiwgczEsIGMsIGxlbiwgbik7CisgICAgZG9fb25lX3Rlc3QgKGpz b25fY3R4LCBpbXBsLCBzMiwgczEsIGMsIGxlbiwgbik7CiAKLSAgcHV0Y2hhciAoJ1xuJyk7Cisg IGpzb25fYXJyYXlfZW5kIChqc29uX2N0eCk7CisgIGpzb25fZWxlbWVudF9vYmplY3RfZW5kIChq c29uX2N0eCk7CiB9CiAKIGludAogdGVzdF9tYWluICh2b2lkKQogeworICBqc29uX2N0eF90IGpz b25fY3R4OwogICBzaXplX3QgaTsKIAogICB0ZXN0X2luaXQgKCk7CiAKLSAgcHJpbnRmICgiJTI4 cyIsICIiKTsKKyAganNvbl9pbml0ICgmanNvbl9jdHgsIDAsIHN0ZG91dCk7CisKKyAganNvbl9k b2N1bWVudF9iZWdpbiAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpzb25fY3R4 LCAidGltaW5nX3R5cGUiLCBUSU1JTkdfVFlQRSk7CisKKyAganNvbl9hdHRyX29iamVjdF9iZWdp biAoJmpzb25fY3R4LCAiZnVuY3Rpb25zIik7CisgIGpzb25fYXR0cl9vYmplY3RfYmVnaW4gKCZq c29uX2N0eCwgVEVTVF9OQU1FKTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpzb25fY3R4LCAiYmVu Y2gtdmFyaWFudCIsICJkZWZhdWx0Iik7CisKKyAganNvbl9hcnJheV9iZWdpbiAoJmpzb25fY3R4 LCAiaWZ1bmNzIik7CisKICAgRk9SX0VBQ0hfSU1QTCAoaW1wbCwgMCkKLSAgICBwcmludGYgKCJc dCVzIiwgaW1wbC0+bmFtZSk7Ci0gIHB1dGNoYXIgKCdcbicpOworICAgIGpzb25fZWxlbWVudF9z dHJpbmcgKCZqc29uX2N0eCwgaW1wbC0+bmFtZSk7CisgIGpzb25fYXJyYXlfZW5kICgmanNvbl9j dHgpOwogCisgIGpzb25fYXJyYXlfYmVnaW4gKCZqc29uX2N0eCwgInJlc3VsdHMiKTsKICAgZm9y IChpID0gMTsgaSA8IDg7ICsraSkKICAgICB7Ci0gICAgICBkb190ZXN0IChpLCBpLCAxMiwgMTYs IDE2LCAxMjcpOwotICAgICAgZG9fdGVzdCAoaSwgaSwgMjMsIDE2LCAxNiwgMjU1KTsKLSAgICAg IGRvX3Rlc3QgKGksIDIgKiBpLCAyOCwgMTYsIDE2LCAxMjcpOwotICAgICAgZG9fdGVzdCAoMiAq IGksIGksIDMxLCAxNiwgMTYsIDI1NSk7Ci0gICAgICBkb190ZXN0ICg4IC0gaSwgMiAqIGksIDEs IDEgPDwgaSwgMiA8PCBpLCAxMjcpOwotICAgICAgZG9fdGVzdCAoMiAqIGksIDggLSBpLCAxNywg MiA8PCBpLCAxIDw8IGksIDEyNyk7Ci0gICAgICBkb190ZXN0ICg4IC0gaSwgMiAqIGksIDAsIDEg PDwgaSwgMiA8PCBpLCAyNTUpOwotICAgICAgZG9fdGVzdCAoMiAqIGksIDggLSBpLCBpLCAyIDw8 IGksIDEgPDwgaSwgMjU1KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgaSwgaSwgMTIsIDE2 LCAxNiwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgaSwgaSwgMjMsIDE2LCAxNiwg MjU1KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgaSwgMiAqIGksIDI4LCAxNiwgMTYsIDEy Nyk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgsIDIgKiBpLCBpLCAzMSwgMTYsIDE2LCAyNTUp OworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCA4IC0gaSwgMiAqIGksIDEsIDEgPDwgaSwgMiA8 PCBpLCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCAyICogaSwgOCAtIGksIDE3LCAy IDw8IGksIDEgPDwgaSwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgOCAtIGksIDIg KiBpLCAwLCAxIDw8IGksIDIgPDwgaSwgMjU1KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwg MiAqIGksIDggLSBpLCBpLCAyIDw8IGksIDEgPDwgaSwgMjU1KTsKICAgICB9CiAKICAgZm9yIChp ID0gMTsgaSA8IDg7ICsraSkKICAgICB7Ci0gICAgICBkb190ZXN0ICgwLCAwLCBpLCA0IDw8IGks IDggPDwgaSwgMTI3KTsKLSAgICAgIGRvX3Rlc3QgKDAsIDAsIGksIDE2IDw8IGksIDggPDwgaSwg MTI3KTsKLSAgICAgIGRvX3Rlc3QgKDggLSBpLCAyICogaSwgaSwgNCA8PCBpLCA4IDw8IGksIDEy Nyk7Ci0gICAgICBkb190ZXN0ICg4IC0gaSwgMiAqIGksIGksIDE2IDw8IGksIDggPDwgaSwgMTI3 KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgaSwgNCA8PCBpLCA4IDw8IGksIDEy Nyk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgsIDAsIDAsIGksIDE2IDw8IGksIDggPDwgaSwg MTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgOCAtIGksIDIgKiBpLCBpLCA0IDw8IGks IDggPDwgaSwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgOCAtIGksIDIgKiBpLCBp LCAxNiA8PCBpLCA4IDw8IGksIDEyNyk7CiAgICAgfQogCisgIGpzb25fYXJyYXlfZW5kICgmanNv bl9jdHgpOworICBqc29uX2F0dHJfb2JqZWN0X2VuZCAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRy X29iamVjdF9lbmQgKCZqc29uX2N0eCk7CisgIGpzb25fZG9jdW1lbnRfZW5kICgmanNvbl9jdHgp OworCiAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2JlbmNodGVzdHMvYmVuY2gtc3Ry Y2FzZXN0ci5jIGIvYmVuY2h0ZXN0cy9iZW5jaC1zdHJjYXNlc3RyLmMKaW5kZXggYjNiMjY0MDZm OS4uYThiY2ZiM2FlYyAxMDA2NDQKLS0tIGEvYmVuY2h0ZXN0cy9iZW5jaC1zdHJjYXNlc3RyLmMK KysrIGIvYmVuY2h0ZXN0cy9iZW5jaC1zdHJjYXNlc3RyLmMKQEAgLTMyLDkgKzMyLDExIEBAIHR5 cGVkZWYgY2hhciAqKCpwcm90b190KSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogSU1Q TCAoc2ltcGxlX3N0cmNhc2VzdHIsIDApCiBJTVBMIChzdHJjYXNlc3RyLCAxKQogCisjIGluY2x1 ZGUgImpzb24tbGliLmgiCiAKIHN0YXRpYyB2b2lkCi1kb19vbmVfdGVzdCAoaW1wbF90ICppbXBs LCBjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIGNoYXIgKmV4cF9yZXN1bHQpCitkb19v bmVfdGVzdCAoanNvbl9jdHhfdCAqanNvbl9jdHgsIGltcGxfdCAqaW1wbCwgY29uc3QgY2hhciAq czEsCisgICBjb25zdCBjaGFyICpzMiwgY2hhciAqZXhwX3Jlc3VsdCkKIHsKICAgc2l6ZV90IGks IGl0ZXJzID0gSU5ORVJfTE9PUF9JVEVSU19TTUFMTDsKICAgdGltaW5nX3Qgc3RhcnQsIHN0b3As IGN1cjsKQEAgLTQ4LDEzICs1MCwxMyBAQCBkb19vbmVfdGVzdCAoaW1wbF90ICppbXBsLCBjb25z dCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIGNoYXIgKmV4cF9yZXN1bHQpCiAKICAgVElNSU5H X0RJRkYgKGN1ciwgc3RhcnQsIHN0b3ApOwogCi0gIFRJTUlOR19QUklOVF9NRUFOICgoZG91Ymxl KSBjdXIsIChkb3VibGUpIGl0ZXJzKTsKKyAganNvbl9lbGVtZW50X2RvdWJsZSAoanNvbl9jdHgs IChkb3VibGUpIGN1ciAvIChkb3VibGUpIGl0ZXJzKTsKIH0KIAogCiBzdGF0aWMgdm9pZAotZG9f dGVzdCAoc2l6ZV90IGFsaWduMSwgc2l6ZV90IGFsaWduMiwgc2l6ZV90IGxlbjEsIHNpemVfdCBs ZW4yLAotCSBpbnQgZmFpbCkKK2RvX3Rlc3QgKGpzb25fY3R4X3QgKmpzb25fY3R4LCBzaXplX3Qg YWxpZ24xLCBzaXplX3QgYWxpZ24yLCBzaXplX3QgbGVuMSwKKyAgIHNpemVfdCBsZW4yLCBpbnQg ZmFpbCkKIHsKICAgY2hhciAqczEgPSAoY2hhciAqKSAoYnVmMSArIGFsaWduMSk7CiAgIGNoYXIg KnMyID0gKGNoYXIgKikgKGJ1ZjIgKyBhbGlnbjIpOwpAQCAtODgsNjcgKzkwLDkxIEBAIGRvX3Rl c3QgKHNpemVfdCBhbGlnbjEsIHNpemVfdCBhbGlnbjIsIHNpemVfdCBsZW4xLCBzaXplX3QgbGVu MiwKICAgICB9CiAgIHMxW2xlbjFdID0gJ1wwJzsKIAotICBwcmludGYgKCJMZW5ndGggJTR6ZC8l emQsIGFsaWdubWVudCAlMnpkLyUyemQsICVzOiIsCi0JICBsZW4xLCBsZW4yLCBhbGlnbjEsIGFs aWduMiwgZmFpbCA/ICJmYWlsIiA6ICJmb3VuZCIpOworICBqc29uX2VsZW1lbnRfb2JqZWN0X2Jl Z2luIChqc29uX2N0eCk7CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwgImxlbmd0aDEiLCAo ZG91YmxlKSBsZW4xKTsKKyAganNvbl9hdHRyX3VpbnQgKGpzb25fY3R4LCAibGVuZ3RoMiIsIChk b3VibGUpIGxlbjIpOworICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgsICJhbGlnbjEiLCAoZG91 YmxlKSBhbGlnbjEpOworICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgsICJhbGlnbjIiLCAoZG91 YmxlKSBhbGlnbjIpOworICBqc29uX2F0dHJfc3RyaW5nIChqc29uX2N0eCwgImZhaWwiLCBmYWls ID8gImZhaWwiIDogImZvdW5kIik7CisgIGpzb25fYXJyYXlfYmVnaW4gKGpzb25fY3R4LCAidGlt aW5ncyIpOwogCiAgIEZPUl9FQUNIX0lNUEwgKGltcGwsIDApCi0gICAgZG9fb25lX3Rlc3QgKGlt cGwsIHMxLCBzMiwgZmFpbCA/IE5VTEwgOiBzMSArIGxlbjEgLSBsZW4yKTsKKyAgICBkb19vbmVf dGVzdCAoanNvbl9jdHgsIGltcGwsIHMxLCBzMiwgZmFpbCA/IE5VTEwgOiBzMSArIGxlbjEgLSBs ZW4yKTsKIAotICBwdXRjaGFyICgnXG4nKTsKKyAganNvbl9hcnJheV9lbmQgKGpzb25fY3R4KTsK KyAganNvbl9lbGVtZW50X29iamVjdF9lbmQgKGpzb25fY3R4KTsKIH0KIAogc3RhdGljIGludAog dGVzdF9tYWluICh2b2lkKQogeworICBqc29uX2N0eF90IGpzb25fY3R4OworCiAgIHRlc3RfaW5p dCAoKTsKIAotICBwcmludGYgKCIlMjNzIiwgIiIpOworICBqc29uX2luaXQgKCZqc29uX2N0eCwg MCwgc3Rkb3V0KTsKKworICBqc29uX2RvY3VtZW50X2JlZ2luICgmanNvbl9jdHgpOworICBqc29u X2F0dHJfc3RyaW5nICgmanNvbl9jdHgsICJ0aW1pbmdfdHlwZSIsIFRJTUlOR19UWVBFKTsKKwor ICBqc29uX2F0dHJfb2JqZWN0X2JlZ2luICgmanNvbl9jdHgsICJmdW5jdGlvbnMiKTsKKyAganNv bl9hdHRyX29iamVjdF9iZWdpbiAoJmpzb25fY3R4LCBURVNUX05BTUUpOworICBqc29uX2F0dHJf c3RyaW5nICgmanNvbl9jdHgsICJiZW5jaC12YXJpYW50IiwgImRlZmF1bHQiKTsKKworICBqc29u X2FycmF5X2JlZ2luICgmanNvbl9jdHgsICJpZnVuY3MiKTsKKwogICBGT1JfRUFDSF9JTVBMIChp bXBsLCAwKQotICAgIHByaW50ZiAoIlx0JXMiLCBpbXBsLT5uYW1lKTsKLSAgcHV0Y2hhciAoJ1xu Jyk7CisgICAganNvbl9lbGVtZW50X3N0cmluZygmanNvbl9jdHgsIGltcGwtPm5hbWUpOyAKKyAg anNvbl9hcnJheV9lbmQgKCZqc29uX2N0eCk7CiAKKyAganNvbl9hcnJheV9iZWdpbiAoJmpzb25f Y3R4LCAicmVzdWx0cyIpOwogICBmb3IgKHNpemVfdCBrbGVuID0gMjsga2xlbiA8IDMyOyArK2ts ZW4pCiAgICAgZm9yIChzaXplX3QgaGxlbiA9IDIgKiBrbGVuOyBobGVuIDwgMTYgKiBrbGVuOyBo bGVuICs9IGtsZW4pCiAgICAgICB7Ci0JZG9fdGVzdCAoMCwgMCwgaGxlbiwga2xlbiwgMCk7Ci0J ZG9fdGVzdCAoMCwgMCwgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAoMCwgMywgaGxlbiwga2xl biwgMCk7Ci0JZG9fdGVzdCAoMCwgMywgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAoMCwgOSwg aGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMCwgOSwgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVz dCAoMCwgMTUsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDAsIDE1LCBobGVuLCBrbGVuLCAx KTsKLQotCWRvX3Rlc3QgKDMsIDAsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDMsIDAsIGhs ZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDMsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3Qg KDMsIDMsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDksIGhsZW4sIGtsZW4sIDApOwot CWRvX3Rlc3QgKDMsIDksIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDE1LCBobGVuLCBr bGVuLCAwKTsKLQlkb190ZXN0ICgzLCAxNSwgaGxlbiwga2xlbiwgMSk7Ci0KLQlkb190ZXN0ICg5 LCAwLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCAwLCBobGVuLCBrbGVuLCAxKTsKLQlk b190ZXN0ICg5LCAzLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCAzLCBobGVuLCBrbGVu LCAxKTsKLQlkb190ZXN0ICg5LCA5LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCA5LCBo bGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICg5LCAxNSwgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVz dCAoOSwgMTUsIGhsZW4sIGtsZW4sIDEpOwotCi0JZG9fdGVzdCAoMTUsIDAsIGhsZW4sIGtsZW4s IDApOwotCWRvX3Rlc3QgKDE1LCAwLCBobGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICgxNSwgMywg aGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMTUsIDMsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rl c3QgKDE1LCA5LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgxNSwgOSwgaGxlbiwga2xlbiwg MSk7Ci0JZG9fdGVzdCAoMTUsIDE1LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgxNSwgMTUs IGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgaGxlbiwga2xlbiwg MCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0 ICgmanNvbl9jdHgsIDAsIDMsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwg MCwgMywgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCA5LCBobGVuLCBr bGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDAsIDksIGhsZW4sIGtsZW4sIDEpOworCWRv X3Rlc3QgKCZqc29uX2N0eCwgMCwgMTUsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29u X2N0eCwgMCwgMTUsIGhsZW4sIGtsZW4sIDEpOworCisJZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAw LCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDMsIDAsIGhsZW4sIGtsZW4s IDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMywgMywgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVz dCAoJmpzb25fY3R4LCAzLCAzLCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNvbl9jdHgs IDMsIDksIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMywgOSwgaGxlbiwg a2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAxNSwgaGxlbiwga2xlbiwgMCk7CisJ ZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAxNSwgaGxlbiwga2xlbiwgMSk7CisKKwlkb190ZXN0ICgm anNvbl9jdHgsIDksIDAsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgOSwg MCwgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCA5LCAzLCBobGVuLCBrbGVu LCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDMsIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rl c3QgKCZqc29uX2N0eCwgOSwgOSwgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVzdCAoJmpzb25fY3R4 LCA5LCA5LCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDE1LCBobGVu LCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDE1LCBobGVuLCBrbGVuLCAxKTsK KworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDAsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3Qg KCZqc29uX2N0eCwgMTUsIDAsIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwg MTUsIDMsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDMsIGhsZW4s IGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDksIGhsZW4sIGtsZW4sIDApOwor CWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDksIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZq c29uX2N0eCwgMTUsIDE1LCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDE1 LCAxNSwgaGxlbiwga2xlbiwgMSk7CiAgICAgICB9CiAKLSAgZG9fdGVzdCAoMCwgMCwgcGFnZV9z aXplIC0gMSwgMTYsIDApOwotICBkb190ZXN0ICgwLCAwLCBwYWdlX3NpemUgLSAxLCAxNiwgMSk7 CisgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgcGFnZV9zaXplIC0gMSwgMTYsIDApOworICBk b190ZXN0ICgmanNvbl9jdHgsIDAsIDAsIHBhZ2Vfc2l6ZSAtIDEsIDE2LCAxKTsKKworICBqc29u X2FycmF5X2VuZCAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRyX29iamVjdF9lbmQgKCZqc29uX2N0 eCk7CisgIGpzb25fYXR0cl9vYmplY3RfZW5kICgmanNvbl9jdHgpOworICBqc29uX2RvY3VtZW50 X2VuZCAoJmpzb25fY3R4KTsKIAogICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvYmVuY2h0 ZXN0cy9iZW5jaC1zdHJjb2xsLmMgYi9iZW5jaHRlc3RzL2JlbmNoLXN0cmNvbGwuYwppbmRleCBi M2NkNWNlOGE5Li4wOGY4MWRlYTllIDEwMDY0NAotLS0gYS9iZW5jaHRlc3RzL2JlbmNoLXN0cmNv bGwuYworKysgYi9iZW5jaHRlc3RzL2JlbmNoLXN0cmNvbGwuYwpAQCAtMjM5LDYgKzIzOSw3IEBA IG1haW4gKHZvaWQpCiAgIGpzb25fY3R4X3QgKmpzb25fY3R4ID0gbWFsbG9jIChzaXplb2YgKGpz b25fY3R4X3QpKTsKICAgYXNzZXJ0IChqc29uX2N0eCAhPSBOVUxMKTsKICAganNvbl9pbml0IChq c29uX2N0eCwgMiwgc3Rkb3V0KTsKKyAganNvbl9kb2N1bWVudF9iZWdpbiAoanNvbl9jdHgpOwog ICBqc29uX2F0dHJfb2JqZWN0X2JlZ2luIChqc29uX2N0eCwgInN0cmNvbGwiKTsKIAogICBzaXpl X3QgaTsKQEAgLTI3MSw2ICsyNzIsNyBAQCBtYWluICh2b2lkKQogCiBvdXQ6CiAgIGpzb25fYXR0 cl9vYmplY3RfZW5kIChqc29uX2N0eCk7CisgIGpzb25fZG9jdW1lbnRfZW5kIChqc29uX2N0eCk7 CiAgIGZyZWUgKGpzb25fY3R4KTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL2Jl bmNodGVzdHMvYmVuY2gtc3RyY3B5X2Noay5jIGIvYmVuY2h0ZXN0cy9iZW5jaC1zdHJjcHlfY2hr LmMKaW5kZXggNmZjZTkwY2M5OC4uOTA4NDJmYWM1MiAxMDA2NDQKLS0tIGEvYmVuY2h0ZXN0cy9i ZW5jaC1zdHJjcHlfY2hrLmMKKysrIGIvYmVuY2h0ZXN0cy9iZW5jaC1zdHJjcHlfY2hrLmMKQEAg LTU0LDYgKzU0LDcgQEAgc2ltcGxlX3N0cmNweV9jaGsgKGNoYXIgKmRzdCwgY29uc3QgY2hhciAq c3JjLCBzaXplX3QgbGVuKQogI2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSA8c3VwcG9y dC9zdXBwb3J0Lmg+CisjaW5jbHVkZSAianNvbi1saWIuaCIKIAogdm9sYXRpbGUgaW50IGNoa19m YWlsX29rOwogam1wX2J1ZiBjaGtfZmFpbF9idWY7CkBAIC03Myw3ICs3NCw3IEBAIGhhbmRsZXIg KGludCBzaWcpCiB0eXBlZGVmIGNoYXIgKigqcHJvdG9fdCkgKGNoYXIgKiwgY29uc3QgY2hhciAq LCBzaXplX3QpOwogCiBzdGF0aWMgdm9pZAotZG9fb25lX3Rlc3QgKGltcGxfdCAqaW1wbCwgY2hh ciAqZHN0LCBjb25zdCBjaGFyICpzcmMsCitkb19vbmVfdGVzdCAoanNvbl9jdHhfdCAqanNvbl9j dHgsIGltcGxfdCAqaW1wbCwgY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsCiAJICAgICBzaXpl X3QgbGVuLCBzaXplX3QgZGxlbikKIHsKICAgY2hhciAqcmVzOwpAQCAtMTI0LDExICsxMjUsMTIg QEAgZG9fb25lX3Rlc3QgKGltcGxfdCAqaW1wbCwgY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMs CiAKICAgVElNSU5HX0RJRkYgKGN1ciwgc3RhcnQsIHN0b3ApOwogCi0gIFRJTUlOR19QUklOVF9N RUFOICgoZG91YmxlKSBjdXIsIChkb3VibGUpIGl0ZXJzKTsKKyAganNvbl9lbGVtZW50X2RvdWJs ZSAoanNvbl9jdHgsIChkb3VibGUpIGN1ciAvIChkb3VibGUpIGl0ZXJzKTsKIH0KIAogc3RhdGlj IHZvaWQKLWRvX3Rlc3QgKHNpemVfdCBhbGlnbjEsIHNpemVfdCBhbGlnbjIsIHNpemVfdCBsZW4s IHNpemVfdCBkbGVuLCBpbnQgbWF4X2NoYXIpCitkb190ZXN0IChqc29uX2N0eF90ICpqc29uX2N0 eCwgc2l6ZV90IGFsaWduMSwgc2l6ZV90IGFsaWduMiwgc2l6ZV90IGxlbiwKKwkgc2l6ZV90IGRs ZW4sIGludCBtYXhfY2hhcikKIHsKICAgc2l6ZV90IGk7CiAgIGNoYXIgKnMxLCAqczI7CkBAIC0x NDgsOTYgKzE1MCwxMTkgQEAgZG9fdGVzdCAoc2l6ZV90IGFsaWduMSwgc2l6ZV90IGFsaWduMiwg c2l6ZV90IGxlbiwgc2l6ZV90IGRsZW4sIGludCBtYXhfY2hhcikKICAgICBzMVtpXSA9IDMyICsg MjMgKiBpICUgKG1heF9jaGFyIC0gMzIpOwogICBzMVtsZW5dID0gMDsKIAotICBpZiAoZGxlbiA+ IGxlbikKLSAgICBwcmludGYgKCJMZW5ndGggJTR6ZCwgYWxpZ25tZW50ICUyemQvJTJ6ZDoiLCBs ZW4sIGFsaWduMSwgYWxpZ24yKTsKKyAgaWYgKGRsZW4gPiBsZW4peworICAgIGpzb25fZWxlbWVu dF9vYmplY3RfYmVnaW4gKGpzb25fY3R4KTsKKyAgICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgs ICJsZW5ndGgiLCAoZG91YmxlKSBsZW4pOworICAgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwg ImFsaWduMSIsIChkb3VibGUpIGFsaWduMSk7CisgICAganNvbl9hdHRyX3VpbnQgKGpzb25fY3R4 LCAiYWxpZ24yIiwgKGRvdWJsZSkgYWxpZ24yKTsKKyAgICBqc29uX2FycmF5X2JlZ2luIChqc29u X2N0eCwgInRpbWluZ3MiKTsKKyAgfQogCiAgIEZPUl9FQUNIX0lNUEwgKGltcGwsIDApCi0gICAg ZG9fb25lX3Rlc3QgKGltcGwsIHMyLCBzMSwgbGVuLCBkbGVuKTsKKyAgICBkb19vbmVfdGVzdCAo anNvbl9jdHgsIGltcGwsIHMyLCBzMSwgbGVuLCBkbGVuKTsKIAotICBpZiAoZGxlbiA+IGxlbikK LSAgICBwdXRjaGFyICgnXG4nKTsKKyAgaWYgKGRsZW4gPiBsZW4peworICAgIGpzb25fYXJyYXlf ZW5kIChqc29uX2N0eCk7CisgICAganNvbl9lbGVtZW50X29iamVjdF9lbmQgKGpzb25fY3R4KTsK KyAgfQogfQogCiBzdGF0aWMgaW50CiB0ZXN0X21haW4gKHZvaWQpCiB7CisgIGpzb25fY3R4X3Qg anNvbl9jdHg7CiAgIHNpemVfdCBpOwogCiAgIHNldF9mb3J0aWZ5X2hhbmRsZXIgKGhhbmRsZXIp OwogCiAgIHRlc3RfaW5pdCAoKTsKKyAganNvbl9pbml0ICgmanNvbl9jdHgsIDAsIHN0ZG91dCk7 CisKKyAganNvbl9kb2N1bWVudF9iZWdpbiAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRyX3N0cmlu ZyAoJmpzb25fY3R4LCAidGltaW5nX3R5cGUiLCBUSU1JTkdfVFlQRSk7CisKKyAganNvbl9hdHRy X29iamVjdF9iZWdpbiAoJmpzb25fY3R4LCAiZnVuY3Rpb25zIik7CisgIGpzb25fYXR0cl9vYmpl Y3RfYmVnaW4gKCZqc29uX2N0eCwgVEVTVF9OQU1FKTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpz b25fY3R4LCAiYmVuY2gtdmFyaWFudCIsICJkZWZhdWx0Iik7CisKKyAganNvbl9hcnJheV9iZWdp biAoJmpzb25fY3R4LCAiaWZ1bmNzIik7CiAKLSAgcHJpbnRmICgiJTIzcyIsICIiKTsKICAgRk9S X0VBQ0hfSU1QTCAoaW1wbCwgMCkKLSAgICBwcmludGYgKCJcdCVzIiwgaW1wbC0+bmFtZSk7Ci0g IHB1dGNoYXIgKCdcbicpOworICAgIGpzb25fZWxlbWVudF9zdHJpbmcgKCZqc29uX2N0eCwgaW1w bC0+bmFtZSk7CisgIGpzb25fYXJyYXlfZW5kICgmanNvbl9jdHgpOwogCisgIGpzb25fYXJyYXlf YmVnaW4gKCZqc29uX2N0eCwgInJlc3VsdHMiKTsKICAgZm9yIChpID0gMDsgaSA8IDE2OyArK2kp CiAgICAgewotICAgICAgZG9fdGVzdCAoMCwgMCwgaSwgaSArIDEsIDEyNyk7Ci0gICAgICBkb190 ZXN0ICgwLCAwLCBpLCBpICsgMSwgMjU1KTsKLSAgICAgIGRvX3Rlc3QgKDAsIGksIGksIGkgKyAx LCAxMjcpOwotICAgICAgZG9fdGVzdCAoaSwgMCwgaSwgaSArIDEsIDI1NSk7CisgICAgICBkb190 ZXN0ICgmanNvbl9jdHgsIDAsIDAsIGksIGkgKyAxLCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpz b25fY3R4LCAwLCAwLCBpLCBpICsgMSwgMjU1KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwg MCwgaSwgaSwgaSArIDEsIDEyNyk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgsIGksIDAsIGks IGkgKyAxLCAyNTUpOwogICAgIH0KIAogICBmb3IgKGkgPSAxOyBpIDwgODsgKytpKQogICAgIHsK LSAgICAgIGRvX3Rlc3QgKDAsIDAsIDggPDwgaSwgKDggPDwgaSkgKyAxLCAxMjcpOwotICAgICAg ZG9fdGVzdCAoOCAtIGksIDIgKiBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAxLCAxMjcpOworICAg ICAgZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCA4IDw8IGksICg4IDw8IGkpICsgMSwgMTI3KTsK KyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgOCAtIGksIDIgKiBpLCAoOCA8PCBpKSwgKDggPDwg aSkgKyAxLCAxMjcpOwogICAgIH0KIAogICBmb3IgKGkgPSAxOyBpIDwgODsgKytpKQogICAgIHsK LSAgICAgIGRvX3Rlc3QgKGksIDIgKiBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAxLCAxMjcpOwot ICAgICAgZG9fdGVzdCAoMiAqIGksIGksICg4IDw8IGkpLCAoOCA8PCBpKSArIDEsIDI1NSk7Ci0g ICAgICBkb190ZXN0IChpLCBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAxLCAxMjcpOwotICAgICAg ZG9fdGVzdCAoaSwgaSwgKDggPDwgaSksICg4IDw8IGkpICsgMSwgMjU1KTsKKyAgICAgIGRvX3Rl c3QgKCZqc29uX2N0eCwgaSwgMiAqIGksICg4IDw8IGkpLCAoOCA8PCBpKSArIDEsIDEyNyk7Cisg ICAgICBkb190ZXN0ICgmanNvbl9jdHgsIDIgKiBpLCBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAx LCAyNTUpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCBpLCBpLCAoOCA8PCBpKSwgKDggPDwg aSkgKyAxLCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCBpLCBpLCAoOCA8PCBpKSwg KDggPDwgaSkgKyAxLCAyNTUpOwogICAgIH0KIAogICBmb3IgKGkgPSAwOyBpIDwgMTY7ICsraSkK ICAgICB7Ci0gICAgICBkb190ZXN0ICgwLCAwLCBpLCBpICsgMjU2LCAxMjcpOwotICAgICAgZG9f dGVzdCAoMCwgMCwgaSwgaSArIDI1NiwgMjU1KTsKLSAgICAgIGRvX3Rlc3QgKDAsIGksIGksIGkg KyAyNTYsIDEyNyk7Ci0gICAgICBkb190ZXN0IChpLCAwLCBpLCBpICsgMjU2LCAyNTUpOworICAg ICAgZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBpLCBpICsgMjU2LCAxMjcpOworICAgICAgZG9f dGVzdCAoJmpzb25fY3R4LCAwLCAwLCBpLCBpICsgMjU2LCAyNTUpOworICAgICAgZG9fdGVzdCAo Jmpzb25fY3R4LCAwLCBpLCBpLCBpICsgMjU2LCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpzb25f Y3R4LCBpLCAwLCBpLCBpICsgMjU2LCAyNTUpOwogICAgIH0KIAogICBmb3IgKGkgPSAxOyBpIDwg ODsgKytpKQogICAgIHsKLSAgICAgIGRvX3Rlc3QgKDAsIDAsIDggPDwgaSwgKDggPDwgaSkgKyAy NTYsIDEyNyk7Ci0gICAgICBkb190ZXN0ICg4IC0gaSwgMiAqIGksICg4IDw8IGkpLCAoOCA8PCBp KSArIDI1NiwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgOCA8PCBpLCAo OCA8PCBpKSArIDI1NiwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgOCAtIGksIDIg KiBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAyNTYsIDEyNyk7CiAgICAgfQogCiAgIGZvciAoaSA9 IDE7IGkgPCA4OyArK2kpCiAgICAgewotICAgICAgZG9fdGVzdCAoaSwgMiAqIGksICg4IDw8IGkp LCAoOCA8PCBpKSArIDI1NiwgMTI3KTsKLSAgICAgIGRvX3Rlc3QgKDIgKiBpLCBpLCAoOCA8PCBp KSwgKDggPDwgaSkgKyAyNTYsIDI1NSk7Ci0gICAgICBkb190ZXN0IChpLCBpLCAoOCA8PCBpKSwg KDggPDwgaSkgKyAyNTYsIDEyNyk7Ci0gICAgICBkb190ZXN0IChpLCBpLCAoOCA8PCBpKSwgKDgg PDwgaSkgKyAyNTYsIDI1NSk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgsIGksIDIgKiBpLCAo OCA8PCBpKSwgKDggPDwgaSkgKyAyNTYsIDEyNyk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgs IDIgKiBpLCBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyAyNTYsIDI1NSk7CisgICAgICBkb190ZXN0 ICgmanNvbl9jdHgsIGksIGksICg4IDw8IGkpLCAoOCA8PCBpKSArIDI1NiwgMTI3KTsKKyAgICAg IGRvX3Rlc3QgKCZqc29uX2N0eCwgaSwgaSwgKDggPDwgaSksICg4IDw8IGkpICsgMjU2LCAyNTUp OwogICAgIH0KIAogICBmb3IgKGkgPSAwOyBpIDwgMTY7ICsraSkKICAgICB7Ci0gICAgICBkb190 ZXN0ICgwLCAwLCBpLCBpLCAxMjcpOwotICAgICAgZG9fdGVzdCAoMCwgMCwgaSwgaSArIDIsIDI1 NSk7Ci0gICAgICBkb190ZXN0ICgwLCBpLCBpLCBpICsgMywgMTI3KTsKLSAgICAgIGRvX3Rlc3Qg KGksIDAsIGksIGkgKyA0LCAyNTUpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBp LCBpLCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBpLCBpICsgMiwgMjU1 KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgaSwgaSwgaSArIDMsIDEyNyk7CisgICAg ICBkb190ZXN0ICgmanNvbl9jdHgsIGksIDAsIGksIGkgKyA0LCAyNTUpOwogICAgIH0KIAogICBm b3IgKGkgPSAxOyBpIDwgODsgKytpKQogICAgIHsKLSAgICAgIGRvX3Rlc3QgKDAsIDAsIDggPDwg aSwgKDggPDwgaSkgLSAxNSwgMTI3KTsKLSAgICAgIGRvX3Rlc3QgKDggLSBpLCAyICogaSwgKDgg PDwgaSksICg4IDw8IGkpICsgNSwgMTI3KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwg MCwgOCA8PCBpLCAoOCA8PCBpKSAtIDE1LCAxMjcpOworICAgICAgZG9fdGVzdCAoJmpzb25fY3R4 LCA4IC0gaSwgMiAqIGksICg4IDw8IGkpLCAoOCA8PCBpKSArIDUsIDEyNyk7CiAgICAgfQogCiAg IGZvciAoaSA9IDE7IGkgPCA4OyArK2kpCiAgICAgewotICAgICAgZG9fdGVzdCAoaSwgMiAqIGks ICg4IDw8IGkpLCAoOCA8PCBpKSArIGksIDEyNyk7Ci0gICAgICBkb190ZXN0ICgyICogaSwgaSwg KDggPDwgaSksICg4IDw8IGkpICsgKGkgLSAxKSwgMjU1KTsKLSAgICAgIGRvX3Rlc3QgKGksIGks ICg4IDw8IGkpLCAoOCA8PCBpKSArIGkgKyAyLCAxMjcpOwotICAgICAgZG9fdGVzdCAoaSwgaSwg KDggPDwgaSksICg4IDw8IGkpICsgaSArIDMsIDI1NSk7CisgICAgICBkb190ZXN0ICgmanNvbl9j dHgsIGksIDIgKiBpLCAoOCA8PCBpKSwgKDggPDwgaSkgKyBpLCAxMjcpOworICAgICAgZG9fdGVz dCAoJmpzb25fY3R4LCAyICogaSwgaSwgKDggPDwgaSksICg4IDw8IGkpICsgKGkgLSAxKSwgMjU1 KTsKKyAgICAgIGRvX3Rlc3QgKCZqc29uX2N0eCwgaSwgaSwgKDggPDwgaSksICg4IDw8IGkpICsg aSArIDIsIDEyNyk7CisgICAgICBkb190ZXN0ICgmanNvbl9jdHgsIGksIGksICg4IDw8IGkpLCAo OCA8PCBpKSArIGkgKyAzLCAyNTUpOwogICAgIH0KIAorICBqc29uX2FycmF5X2VuZCAoJmpzb25f Y3R4KTsKKyAganNvbl9hdHRyX29iamVjdF9lbmQgKCZqc29uX2N0eCk7CisgIGpzb25fYXR0cl9v YmplY3RfZW5kICgmanNvbl9jdHgpOworICBqc29uX2RvY3VtZW50X2VuZCAoJmpzb25fY3R4KTsK KwogICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvYmVuY2h0ZXN0cy9iZW5jaC1zdHJzZXAu YyBiL2JlbmNodGVzdHMvYmVuY2gtc3Ryc2VwLmMKaW5kZXggNGIyMDNhZmYzMC4uNzA4Njg5YjQ5 OCAxMDA2NDQKLS0tIGEvYmVuY2h0ZXN0cy9iZW5jaC1zdHJzZXAuYworKysgYi9iZW5jaHRlc3Rz L2JlbmNoLXN0cnNlcC5jCkBAIC0yMCw2ICsyMCw4IEBACiAjZGVmaW5lIFRFU1RfTkFNRSAic3Ry c2VwIgogI2luY2x1ZGUgImJlbmNoLXN0cmluZy5oIgogCisjIGluY2x1ZGUgImpzb24tbGliLmgi CisKIGNoYXIgKgogc2ltcGxlX3N0cnNlcCAoY2hhciAqKnMxLCBjaGFyICpzMikKIHsKQEAgLTEw MSw3ICsxMDMsOCBAQCBJTVBMIChzdHJzZXAsIDEpCiBJTVBMIChvbGRzdHJzZXAsIDIpCiAKIHN0 YXRpYyB2b2lkCi1kb19vbmVfdGVzdCAoaW1wbF90ICogaW1wbCwgY29uc3QgY2hhciAqczEsIGNv bnN0IGNoYXIgKnMyKQorZG9fb25lX3Rlc3QgKGpzb25fY3R4X3QgKmpzb25fY3R4LCBpbXBsX3Qg KiBpbXBsLCBjb25zdCBjaGFyICpzMSwKKyAgIGNvbnN0IGNoYXIgKnMyKQogewogICBzaXplX3Qg aSwgaXRlcnMgPSBJTk5FUl9MT09QX0lURVJTX1NNQUxMOwogICB0aW1pbmdfdCBzdGFydCwgc3Rv cCwgY3VyOwpAQCAtMTE4LDExICsxMjEsMTIgQEAgZG9fb25lX3Rlc3QgKGltcGxfdCAqIGltcGws IGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMikKIAogICBUSU1JTkdfRElGRiAoY3VyLCBz dGFydCwgc3RvcCk7CiAKLSAgVElNSU5HX1BSSU5UX01FQU4gKChkb3VibGUpIGN1ciwgKGRvdWJs ZSkgaXRlcnMpOworICBqc29uX2VsZW1lbnRfZG91YmxlIChqc29uX2N0eCwgKGRvdWJsZSkgY3Vy IC8gKGRvdWJsZSkgaXRlcnMpOwogfQogCiBzdGF0aWMgdm9pZAotZG9fdGVzdCAoc2l6ZV90IGFs aWduMSwgc2l6ZV90IGFsaWduMiwgc2l6ZV90IGxlbjEsIHNpemVfdCBsZW4yLCBpbnQgZmFpbCkK K2RvX3Rlc3QgKGpzb25fY3R4X3QgKmpzb25fY3R4LCBzaXplX3QgYWxpZ24xLCBzaXplX3QgYWxp Z24yLCBzaXplX3QgbGVuMSwKKyAgIHNpemVfdCBsZW4yLCBpbnQgZmFpbCkKIHsKICAgY2hhciAq czIgPSAoY2hhciAqKSAoYnVmMiArIGFsaWduMik7CiAKQEAgLTEzOCw4ICsxNDIsMTMgQEAgZG9f dGVzdCAoc2l6ZV90IGFsaWduMSwgc2l6ZV90IGFsaWduMiwgc2l6ZV90IGxlbjEsIHNpemVfdCBs ZW4yLCBpbnQgZmFpbCkKICAgICB9CiAgIHMyW2xlbjJdID0gJ1wwJzsKIAotICBwcmludGYgKCJM ZW5ndGggJTR6ZC8lemQsIGFsaWdubWVudCAlMnpkLyUyemQsICVzOiIsCi0JICBsZW4xLCBsZW4y LCBhbGlnbjEsIGFsaWduMiwgZmFpbCA/ICJmYWlsIiA6ICJmb3VuZCIpOworICBqc29uX2VsZW1l bnRfb2JqZWN0X2JlZ2luIChqc29uX2N0eCk7CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwg Imxlbmd0aDEiLCAoZG91YmxlKSBsZW4xKTsKKyAganNvbl9hdHRyX3VpbnQgKGpzb25fY3R4LCAi bGVuZ3RoMiIsIChkb3VibGUpIGxlbjIpOworICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgsICJh bGlnbjEiLCAoZG91YmxlKSBhbGlnbjEpOworICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgsICJh bGlnbjIiLCAoZG91YmxlKSBhbGlnbjIpOworICBqc29uX2F0dHJfc3RyaW5nICAoanNvbl9jdHgs ICJmYWlsIiwgZmFpbCA/ICJmYWlsIiA6ICJmb3VuZCIpOworICBqc29uX2FycmF5X2JlZ2luIChq c29uX2N0eCwgInRpbWluZ3MiKTsKIAogICBGT1JfRUFDSF9JTVBMIChpbXBsLCAwKQogICB7CkBA IC0xNDgsNjIgKzE1Nyw4MyBAQCBkb190ZXN0IChzaXplX3QgYWxpZ24xLCBzaXplX3QgYWxpZ24y LCBzaXplX3QgbGVuMSwgc2l6ZV90IGxlbjIsIGludCBmYWlsKQogICAgIGlmICghZmFpbCkKICAg ICAgIHMxW2xlbjEgLyAyXSA9ICcxJzsKICAgICBzMVtsZW4xXSA9ICdcMCc7Ci0gICAgZG9fb25l X3Rlc3QgKGltcGwsIHMxLCBzMik7CisgICAgZG9fb25lX3Rlc3QgKGpzb25fY3R4LCBpbXBsLCBz MSwgczIpOwogICB9Ci0gIHB1dGNoYXIgKCdcbicpOworCisgIGpzb25fYXJyYXlfZW5kIChqc29u X2N0eCk7CisgIGpzb25fZWxlbWVudF9vYmplY3RfZW5kIChqc29uX2N0eCk7CiB9CiAKIHN0YXRp YyBpbnQKIHRlc3RfbWFpbiAodm9pZCkKIHsKKyAganNvbl9jdHhfdCBqc29uX2N0eDsKKwogICB0 ZXN0X2luaXQgKCk7CiAKKyAganNvbl9pbml0ICgmanNvbl9jdHgsIDAsIHN0ZG91dCk7CisKKyAg anNvbl9kb2N1bWVudF9iZWdpbiAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpz b25fY3R4LCAidGltaW5nX3R5cGUiLCBUSU1JTkdfVFlQRSk7CisKKyAganNvbl9hdHRyX29iamVj dF9iZWdpbiAoJmpzb25fY3R4LCAiZnVuY3Rpb25zIik7CisgIGpzb25fYXR0cl9vYmplY3RfYmVn aW4gKCZqc29uX2N0eCwgVEVTVF9OQU1FKTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpzb25fY3R4 LCAiYmVuY2gtdmFyaWFudCIsICJkZWZhdWx0Iik7CisKKyAganNvbl9hcnJheV9iZWdpbiAoJmpz b25fY3R4LCAiaWZ1bmNzIik7CisKICAgcHJpbnRmICgiJTIzcyIsICIiKTsKICAgRk9SX0VBQ0hf SU1QTCAoaW1wbCwgMCkKLSAgICBwcmludGYgKCJcdCVzIiwgaW1wbC0+bmFtZSk7Ci0gIHB1dGNo YXIgKCdcbicpOworICAgIGpzb25fZWxlbWVudF9zdHJpbmcgKCZqc29uX2N0eCwgaW1wbC0+bmFt ZSk7CisgIGpzb25fYXJyYXlfZW5kICgmanNvbl9jdHgpOwogCisgIGpzb25fYXJyYXlfYmVnaW4g KCZqc29uX2N0eCwgInJlc3VsdHMiKTsKICAgZm9yIChzaXplX3Qga2xlbiA9IDI7IGtsZW4gPCAz MjsgKytrbGVuKQogICAgIGZvciAoc2l6ZV90IGhsZW4gPSA0ICoga2xlbjsgaGxlbiA8IDggKiBr bGVuOyBobGVuICs9IGtsZW4pCiAgICAgICB7Ci0JZG9fdGVzdCAoMCwgMCwgaGxlbiwga2xlbiwg MCk7Ci0JZG9fdGVzdCAoMCwgMCwgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAoMCwgMywgaGxl biwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMCwgMywgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAo MCwgOSwgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMCwgOSwgaGxlbiwga2xlbiwgMSk7Ci0J ZG9fdGVzdCAoMCwgMTUsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDAsIDE1LCBobGVuLCBr bGVuLCAxKTsKLQotCWRvX3Rlc3QgKDMsIDAsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDMs IDAsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDMsIGhsZW4sIGtsZW4sIDApOwotCWRv X3Rlc3QgKDMsIDMsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDksIGhsZW4sIGtsZW4s IDApOwotCWRvX3Rlc3QgKDMsIDksIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDMsIDE1LCBo bGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgzLCAxNSwgaGxlbiwga2xlbiwgMSk7Ci0KLQlkb190 ZXN0ICg5LCAwLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCAwLCBobGVuLCBrbGVuLCAx KTsKLQlkb190ZXN0ICg5LCAzLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCAzLCBobGVu LCBrbGVuLCAxKTsKLQlkb190ZXN0ICg5LCA5LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5 LCA5LCBobGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICg5LCAxNSwgaGxlbiwga2xlbiwgMCk7Ci0J ZG9fdGVzdCAoOSwgMTUsIGhsZW4sIGtsZW4sIDEpOwotCi0JZG9fdGVzdCAoMTUsIDAsIGhsZW4s IGtsZW4sIDApOwotCWRvX3Rlc3QgKDE1LCAwLCBobGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICgx NSwgMywgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMTUsIDMsIGhsZW4sIGtsZW4sIDEpOwot CWRvX3Rlc3QgKDE1LCA5LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgxNSwgOSwgaGxlbiwg a2xlbiwgMSk7Ci0JZG9fdGVzdCAoMTUsIDE1LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgx NSwgMTUsIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgaGxlbiwg a2xlbiwgMCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBobGVuLCBrbGVuLCAxKTsKKwlk b190ZXN0ICgmanNvbl9jdHgsIDAsIDMsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29u X2N0eCwgMCwgMywgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCA5LCBo bGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDAsIDksIGhsZW4sIGtsZW4sIDEp OworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMTUsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3Qg KCZqc29uX2N0eCwgMCwgMTUsIGhsZW4sIGtsZW4sIDEpOworCisJZG9fdGVzdCAoJmpzb25fY3R4 LCAzLCAwLCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDMsIDAsIGhsZW4s IGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMywgMywgaGxlbiwga2xlbiwgMCk7CisJ ZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAzLCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNv bl9jdHgsIDMsIDksIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMywgOSwg aGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAxNSwgaGxlbiwga2xlbiwg MCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAxNSwgaGxlbiwga2xlbiwgMSk7CisKKwlkb190 ZXN0ICgmanNvbl9jdHgsIDksIDAsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0 eCwgOSwgMCwgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCA5LCAzLCBobGVu LCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDMsIGhsZW4sIGtsZW4sIDEpOwor CWRvX3Rlc3QgKCZqc29uX2N0eCwgOSwgOSwgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVzdCAoJmpz b25fY3R4LCA5LCA5LCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDE1 LCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDE1LCBobGVuLCBrbGVu LCAxKTsKKworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDAsIGhsZW4sIGtsZW4sIDApOworCWRv X3Rlc3QgKCZqc29uX2N0eCwgMTUsIDAsIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29u X2N0eCwgMTUsIDMsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDMs IGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDksIGhsZW4sIGtsZW4s IDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDksIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rl c3QgKCZqc29uX2N0eCwgMTUsIDE1LCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9j dHgsIDE1LCAxNSwgaGxlbiwga2xlbiwgMSk7CiAgICAgICB9Ci0gIGRvX3Rlc3QgKDAsIDAsIHBh Z2Vfc2l6ZSAtIDEsIDE2LCAwKTsKLSAgZG9fdGVzdCAoMCwgMCwgcGFnZV9zaXplIC0gMSwgMTYs IDEpOworICBkb190ZXN0ICgmanNvbl9jdHgsIDAsIDAsIHBhZ2Vfc2l6ZSAtIDEsIDE2LCAwKTsK KyAgZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAwLCBwYWdlX3NpemUgLSAxLCAxNiwgMSk7CisKKyAg anNvbl9hcnJheV9lbmQgKCZqc29uX2N0eCk7CisgIGpzb25fYXR0cl9vYmplY3RfZW5kICgmanNv bl9jdHgpOworICBqc29uX2F0dHJfb2JqZWN0X2VuZCAoJmpzb25fY3R4KTsKKyAganNvbl9kb2N1 bWVudF9lbmQgKCZqc29uX2N0eCk7CiAKICAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2Jl bmNodGVzdHMvYmVuY2gtc3RydG9rLmMgYi9iZW5jaHRlc3RzL2JlbmNoLXN0cnRvay5jCmluZGV4 IDcxMWJkYWFiNTguLjRhNGRmMTZmNDEgMTAwNjQ0Ci0tLSBhL2JlbmNodGVzdHMvYmVuY2gtc3Ry dG9rLmMKKysrIGIvYmVuY2h0ZXN0cy9iZW5jaC1zdHJ0b2suYwpAQCAtNTcsOCArNTcsMTEgQEAg dHlwZWRlZiBjaGFyICooKnByb3RvX3QpIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBJ TVBMIChvbGRzdHJ0b2ssIDApCiBJTVBMIChzdHJ0b2ssIDEpCiAKKyMgaW5jbHVkZSAianNvbi1s aWIuaCIKKwogc3RhdGljIHZvaWQKLWRvX29uZV90ZXN0IChpbXBsX3QgKiBpbXBsLCBjb25zdCBj aGFyICpzMSwgY29uc3QgY2hhciAqczIpCitkb19vbmVfdGVzdCAoanNvbl9jdHhfdCAqanNvbl9j dHgsIGltcGxfdCAqIGltcGwsIGNvbnN0IGNoYXIgKnMxLAorICAgY29uc3QgY2hhciAqczIpCiB7 CiAgIHNpemVfdCBpLCBpdGVycyA9IElOTkVSX0xPT1BfSVRFUlNfU01BTEw7CiAgIHRpbWluZ190 IHN0YXJ0LCBzdG9wLCBjdXI7CkBAIC03MywxMyArNzYsMTMgQEAgZG9fb25lX3Rlc3QgKGltcGxf dCAqIGltcGwsIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMikKIAogICBUSU1JTkdfRElG RiAoY3VyLCBzdGFydCwgc3RvcCk7CiAKLSAgVElNSU5HX1BSSU5UX01FQU4gKChkb3VibGUpIGN1 ciwgKGRvdWJsZSkgaXRlcnMpOwotCisgIGpzb25fZWxlbWVudF9kb3VibGUgKGpzb25fY3R4LCAo ZG91YmxlKSBjdXIgLyAoZG91YmxlKSBpdGVycyk7CiB9CiAKIAogc3RhdGljIHZvaWQKLWRvX3Rl c3QgKHNpemVfdCBhbGlnbjEsIHNpemVfdCBhbGlnbjIsIHNpemVfdCBsZW4xLCBzaXplX3QgbGVu MiwgaW50IGZhaWwpCitkb190ZXN0IChqc29uX2N0eF90ICpqc29uX2N0eCwgc2l6ZV90IGFsaWdu MSwgc2l6ZV90IGFsaWduMiwgc2l6ZV90IGxlbjEsCisgICBzaXplX3QgbGVuMiwgaW50IGZhaWwp CiB7CiAgIGNoYXIgKnMyID0gKGNoYXIgKikgKGJ1ZjIgKyBhbGlnbjIpOwogICBzdGF0aWMgY29u c3QgY2hhciBkW10gPSAiMTIzNDU2Nzg5MGFiY2RlZiI7CkBAIC05Miw4ICs5NSwxMyBAQCBkb190 ZXN0IChzaXplX3QgYWxpZ24xLCBzaXplX3QgYWxpZ24yLCBzaXplX3QgbGVuMSwgc2l6ZV90IGxl bjIsIGludCBmYWlsKQogICAgIH0KICAgczJbbGVuMl0gPSAnXDAnOwogCi0gIHByaW50ZiAoIkxl bmd0aCAlNHpkLyV6ZCwgYWxpZ25tZW50ICUyemQvJTJ6ZCwgJXM6IiwKLQkgIGxlbjEsIGxlbjIs IGFsaWduMSwgYWxpZ24yLCBmYWlsID8gImZhaWwiIDogImZvdW5kIik7CisgIGpzb25fZWxlbWVu dF9vYmplY3RfYmVnaW4gKGpzb25fY3R4KTsKKyAganNvbl9hdHRyX3VpbnQgKGpzb25fY3R4LCAi bGVuZ3RoMSIsIChkb3VibGUpIGxlbjEpOworICBqc29uX2F0dHJfdWludCAoanNvbl9jdHgsICJs ZW5ndGgyIiwgKGRvdWJsZSkgbGVuMik7CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwgImFs aWduMSIsIChkb3VibGUpIGFsaWduMSk7CisgIGpzb25fYXR0cl91aW50IChqc29uX2N0eCwgImFs aWduMiIsIChkb3VibGUpIGFsaWduMik7CisgIGpzb25fYXR0cl9zdHJpbmcgKGpzb25fY3R4LCAi ZmFpbCIsIGZhaWwgPyAiZmFpbCIgOiAiZm91bmQiKTsKKyAganNvbl9hcnJheV9iZWdpbiAoanNv bl9jdHgsICJ0aW1pbmdzIik7CiAKICAgRk9SX0VBQ0hfSU1QTCAoaW1wbCwgMCkKICAgewpAQCAt MTE3LDYyICsxMjUsODAgQEAgZG9fdGVzdCAoc2l6ZV90IGFsaWduMSwgc2l6ZV90IGFsaWduMiwg c2l6ZV90IGxlbjEsIHNpemVfdCBsZW4yLCBpbnQgZmFpbCkKIAkgIG1lbWNweSAoczEgKyAobGVu MSAtIGxlbjIpIC0gKDMgKiBsZW4yKSwgczIsIGxlbjIpOwogICAgICAgfQogICAgIHMxW2xlbjFd ID0gJ1wwJzsKLSAgICBkb19vbmVfdGVzdCAoaW1wbCwgczEsIHMyKTsKKyAgICBkb19vbmVfdGVz dCAoanNvbl9jdHgsIGltcGwsIHMxLCBzMik7CiAgIH0KLSAgcHV0Y2hhciAoJ1xuJyk7CisKKyAg anNvbl9hcnJheV9lbmQgKGpzb25fY3R4KTsKKyAganNvbl9lbGVtZW50X29iamVjdF9lbmQgKGpz b25fY3R4KTsKIH0KIAogc3RhdGljIGludAogdGVzdF9tYWluICh2b2lkKQogeworICBqc29uX2N0 eF90IGpzb25fY3R4OwogICB0ZXN0X2luaXQgKCk7CiAKLSAgcHJpbnRmICgiJTIzcyIsICIiKTsK KyAganNvbl9pbml0ICgmanNvbl9jdHgsIDAsIHN0ZG91dCk7CisKKyAganNvbl9kb2N1bWVudF9i ZWdpbiAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpzb25fY3R4LCAidGltaW5n X3R5cGUiLCBUSU1JTkdfVFlQRSk7CisKKyAganNvbl9hdHRyX29iamVjdF9iZWdpbiAoJmpzb25f Y3R4LCAiZnVuY3Rpb25zIik7CisgIGpzb25fYXR0cl9vYmplY3RfYmVnaW4gKCZqc29uX2N0eCwg VEVTVF9OQU1FKTsKKyAganNvbl9hdHRyX3N0cmluZyAoJmpzb25fY3R4LCAiYmVuY2gtdmFyaWFu dCIsICJkZWZhdWx0Iik7CisKKyAganNvbl9hcnJheV9iZWdpbiAoJmpzb25fY3R4LCAiaWZ1bmNz Iik7CiAgIEZPUl9FQUNIX0lNUEwgKGltcGwsIDApCi0gICAgcHJpbnRmICgiXHQlcyIsIGltcGwt Pm5hbWUpOwotICBwdXRjaGFyICgnXG4nKTsKKyAgICBqc29uX2VsZW1lbnRfc3RyaW5nICgmanNv bl9jdHgsIGltcGwtPm5hbWUpOworICBqc29uX2FycmF5X2VuZCAoJmpzb25fY3R4KTsKIAorICBq c29uX2FycmF5X2JlZ2luICgmanNvbl9jdHgsICJyZXN1bHRzIik7CiAgIGZvciAoc2l6ZV90IGts ZW4gPSAyOyBrbGVuIDwgMzI7ICsra2xlbikKICAgICBmb3IgKHNpemVfdCBobGVuID0gMiAqIGts ZW47IGhsZW4gPCAxNiAqIGtsZW47IGhsZW4gKz0ga2xlbikKICAgICAgIHsKLQlkb190ZXN0ICgw LCAwLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgwLCAwLCBobGVuLCBrbGVuLCAxKTsKLQlk b190ZXN0ICgwLCAzLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgwLCAzLCBobGVuLCBrbGVu LCAxKTsKLQlkb190ZXN0ICgwLCA5LCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgwLCA5LCBo bGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICgwLCAxNSwgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVz dCAoMCwgMTUsIGhsZW4sIGtsZW4sIDEpOwotCi0JZG9fdGVzdCAoMywgMCwgaGxlbiwga2xlbiwg MCk7Ci0JZG9fdGVzdCAoMywgMCwgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAoMywgMywgaGxl biwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMywgMywgaGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAo MywgOSwgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMywgOSwgaGxlbiwga2xlbiwgMSk7Ci0J ZG9fdGVzdCAoMywgMTUsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDMsIDE1LCBobGVuLCBr bGVuLCAxKTsKLQotCWRvX3Rlc3QgKDksIDAsIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rlc3QgKDks IDAsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDksIDMsIGhsZW4sIGtsZW4sIDApOwotCWRv X3Rlc3QgKDksIDMsIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDksIDksIGhsZW4sIGtsZW4s IDApOwotCWRvX3Rlc3QgKDksIDksIGhsZW4sIGtsZW4sIDEpOwotCWRvX3Rlc3QgKDksIDE1LCBo bGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICg5LCAxNSwgaGxlbiwga2xlbiwgMSk7Ci0KLQlkb190 ZXN0ICgxNSwgMCwgaGxlbiwga2xlbiwgMCk7Ci0JZG9fdGVzdCAoMTUsIDAsIGhsZW4sIGtsZW4s IDEpOwotCWRvX3Rlc3QgKDE1LCAzLCBobGVuLCBrbGVuLCAwKTsKLQlkb190ZXN0ICgxNSwgMywg aGxlbiwga2xlbiwgMSk7Ci0JZG9fdGVzdCAoMTUsIDksIGhsZW4sIGtsZW4sIDApOwotCWRvX3Rl c3QgKDE1LCA5LCBobGVuLCBrbGVuLCAxKTsKLQlkb190ZXN0ICgxNSwgMTUsIGhsZW4sIGtsZW4s IDApOwotCWRvX3Rlc3QgKDE1LCAxNSwgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25f Y3R4LCAwLCAwLCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDAsIDAsIGhs ZW4sIGtsZW4sIDEpOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMywgaGxlbiwga2xlbiwgMCk7 CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAzLCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgm anNvbl9jdHgsIDAsIDksIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMCwg OSwgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAxNSwgaGxlbiwga2xl biwgMCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAwLCAxNSwgaGxlbiwga2xlbiwgMSk7CisKKwlk b190ZXN0ICgmanNvbl9jdHgsIDMsIDAsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29u X2N0eCwgMywgMCwgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAzLCAzLCBo bGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDMsIDMsIGhsZW4sIGtsZW4sIDEp OworCWRvX3Rlc3QgKCZqc29uX2N0eCwgMywgOSwgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVzdCAo Jmpzb25fY3R4LCAzLCA5LCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDMs IDE1LCBobGVuLCBrbGVuLCAwKTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDMsIDE1LCBobGVuLCBr bGVuLCAxKTsKKworCWRvX3Rlc3QgKCZqc29uX2N0eCwgOSwgMCwgaGxlbiwga2xlbiwgMCk7CisJ ZG9fdGVzdCAoJmpzb25fY3R4LCA5LCAwLCBobGVuLCBrbGVuLCAxKTsKKwlkb190ZXN0ICgmanNv bl9jdHgsIDksIDMsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwgOSwgMywg aGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCA5LCA5LCBobGVuLCBrbGVuLCAw KTsKKwlkb190ZXN0ICgmanNvbl9jdHgsIDksIDksIGhsZW4sIGtsZW4sIDEpOworCWRvX3Rlc3Qg KCZqc29uX2N0eCwgOSwgMTUsIGhsZW4sIGtsZW4sIDApOworCWRvX3Rlc3QgKCZqc29uX2N0eCwg OSwgMTUsIGhsZW4sIGtsZW4sIDEpOworCisJZG9fdGVzdCAoJmpzb25fY3R4LCAxNSwgMCwgaGxl biwga2xlbiwgMCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAxNSwgMCwgaGxlbiwga2xlbiwgMSk7 CisJZG9fdGVzdCAoJmpzb25fY3R4LCAxNSwgMywgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVzdCAo Jmpzb25fY3R4LCAxNSwgMywgaGxlbiwga2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAx NSwgOSwgaGxlbiwga2xlbiwgMCk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAxNSwgOSwgaGxlbiwg a2xlbiwgMSk7CisJZG9fdGVzdCAoJmpzb25fY3R4LCAxNSwgMTUsIGhsZW4sIGtsZW4sIDApOwor CWRvX3Rlc3QgKCZqc29uX2N0eCwgMTUsIDE1LCBobGVuLCBrbGVuLCAxKTsKICAgICAgIH0KLSAg ZG9fdGVzdCAoMCwgMCwgcGFnZV9zaXplIC0gMSwgMTYsIDApOwotICBkb190ZXN0ICgwLCAwLCBw YWdlX3NpemUgLSAxLCAxNiwgMSk7CisgIGRvX3Rlc3QgKCZqc29uX2N0eCwgMCwgMCwgcGFnZV9z aXplIC0gMSwgMTYsIDApOworICBkb190ZXN0ICgmanNvbl9jdHgsIDAsIDAsIHBhZ2Vfc2l6ZSAt IDEsIDE2LCAxKTsKKworICBqc29uX2FycmF5X2VuZCAoJmpzb25fY3R4KTsKKyAganNvbl9hdHRy X29iamVjdF9lbmQgKCZqc29uX2N0eCk7CisgIGpzb25fYXR0cl9vYmplY3RfZW5kICgmanNvbl9j dHgpOworICBqc29uX2RvY3VtZW50X2VuZCAoJmpzb25fY3R4KTsKIAogICByZXR1cm4gcmV0Owog fQotLSAKMi4zOS4xCgo= --000000000000800cb105f50cff0e--