From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 6994D3858C50 for ; Tue, 25 Apr 2023 14:35:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6994D3858C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.99,225,1677571200"; d="diff'?scan'208";a="3889059" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 25 Apr 2023 06:35:51 -0800 IronPort-SDR: SmV/EJusYsuuAgZc1HiZ1Cceme0XUgbIrz/Ke5K3LbhxWWvra533JvanF1nGWUUZCuUAm9hF9B ssQDRTu0SfnRUomq9/Kg26bSpGuOBCsnUv3SlpAraQi8NWgbP7kqqG0TovhZfY17BxwmA6HSFX ukCg3Vhn6gZBdNuycSe0W6EzfSkhnD0lhjzzStxNF1ldyBGw7WQo3yXSOeQwAdvcqID5GHOyLO NGB/BJNhziHidjcCUjXCkjrsMGRfAB3C53/OBXS9VOe6c299ESDO/fdOYZNvYBbwhLZRkPrffY ZCg= Content-Type: multipart/mixed; boundary="------------0PbhlWZGR97ZAllJL406nQXc" Message-ID: <37efa25c-d59d-0fef-169e-31551712c32b@codesourcery.com> Date: Tue, 25 Apr 2023 16:35:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: [committed] Re: [patch] 'omp scan' struct block seq update for OpenMP 5.x Content-Language: en-US From: Tobias Burnus To: gcc-patches References: <14c1739e-4344-1252-cc67-4a4289b1b2e4@codesourcery.com> In-Reply-To: <14c1739e-4344-1252-cc67-4a4289b1b2e4@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------0PbhlWZGR97ZAllJL406nQXc Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Now committed to GCC 14 with a git-log typo fixed and appending a tailing 'e' to dg-error for "... claus" to look nicer. See https://gcc.gnu.org/r14-224-g1c101fcfaac8f609d618f83b124bd50aea012132 - or attached patch. Tobias On 06.04.23 20:56, Tobias Burnus wrote: > That's scheduled for GCC 13 and was found by Sandra and Frederik, > > 'omp scan' has undergone quite some transformation: > > In 5.0 it was added with a preceding and succeeding structured block. > > In 5.1, 'structured block' was replaced by 'structured-block-sequence' > defined as "...a sequence of two or more executable statements..." > > In 5.2, the s.b.s. became "... a sequence of zero or more executable > statements ...". While there are restrictions against orphaned > separating directives, having zero statements seems to be fine (albeit > odd). > > The C/C++ parser already permitted >=3D executable statements (albeit the > testcases didn't use those =E2=80=93 and used {...} to enclose multiple > executable statements). The Fortran parser was very strict and did > require exactly one single executable statement before/after the scan. = =E2=80=94 > Now both accept >=3D0. > > I have opt for adding a warning if there are zero statements before or > after the scan. > > And [C/C++], while technically 'for (...)' / "#pragma omp scan ..." is > valid ("for" is followed by a structured block), the before and with the > attached patch there is an error if the final-loop-body does not have > enclosing curly braces; I don't feel like changing the parser for such > an odd use =E2=80=93 and for any sensible use, the curly braces are requi= red. > > Thoughts? Comments? > > * * * > > Warning: It seems as if nearly all warnings related to OpenMP are "0" > and on by default with very few exceptions. I am wondering whether we > should add a -Wopenmp and change all those 0 to warn_openmp to make it > easier for the user to -Wno-openmp or -Werror=3Dopenmp - or just to '2>&1 > |grep Wopenmp' to find them. > > Thoughts? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------0PbhlWZGR97ZAllJL406nQXc Content-Type: text/x-patch; charset="UTF-8"; name="commit.diff" Content-Disposition: attachment; filename="commit.diff" Content-Transfer-Encoding: base64 Y29tbWl0IDFjMTAxZmNmYWFjOGY2MDlkNjE4ZjgzYjEyNGJkNTBhZWEwMTIxMzIKQXV0aG9y OiBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBUdWUg QXByIDI1IDE2OjI5OjE0IDIwMjMgKzAyMDAKCiAgICAnb21wIHNjYW4nIHN0cnVjdCBibG9j ayBzZXEgdXBkYXRlIGZvciBPcGVuTVAgNS54CiAgICAKICAgIFdoaWxlIE9wZW5NUCA1LjAg cmVxdWlyZWQgYSBzaW5nbGUgc3RydWN0dXJlZCBibG9jayBiZWZvcmUgYW5kIGFmdGVyIHRo ZQogICAgJ29tcCBzY2FuJyBkaXJlY3RpdmUsIE9wZW5NUCA1LjEgY2hhbmdlZCB0aGlzIHRv IGEgJ3N0cnVjdHVyZWQgYmxvY2sgc2VxdWVuY2UsCiAgICBkZW5vdGluZyAyIG9yIG1vcmUg ZXhlY3V0YWJsZSBzdGF0ZW1lbnRzIGluIE9wZW5NUCA1LjEgKHdob29wcyEpIGFuZCB6ZXJv IG9yCiAgICBtb3JlIGluIE9wZW5NUCA1LjIuIFRoaXMgY29tbWl0IHVwZGF0ZXMgQy9DKysg dG8gYWNjZXB0IHplcm8gc3RhdGVtZW50cyAoYnV0CiAgICB0aWxsIHJlcXVpcmVzIHRoZSAn eycgLi4uICd9JyBmb3IgdGhlIGZpbmFsLWxvb3AtYm9keSkgYW5kIHVwZGF0ZXMgRm9ydHJh bgogICAgdG8gYWNjZXB0IHplcm8gb3IgbW9yZSB0aGFuIG9uZSBzdGF0ZW1lbnRzLgogICAg CiAgICBJZiB0aGVyZSBpcyBubyBwcmVjZWVkaW5nIG9yIHN1Y2NlZWRpbmcgZXhlY3V0YWJs ZSBzdGF0ZW1lbnQsIGEgd2FybmluZyBpcwogICAgc2hvd24uCiAgICAKICAgIGdjYy9jL0No YW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIGMtcGFyc2VyLmNjIChjX3BhcnNlcl9vbXBf c2Nhbl9sb29wX2JvZHkpOiBIYW5kbGUKICAgICAgICAgICAgemVybyBleGVjIHN0YXRlbWVu dHMgYmVmb3JlL2FmdGVyICdvbXAgc2NhbicuCiAgICAKICAgIGdjYy9jcC9DaGFuZ2VMb2c6 CiAgICAKICAgICAgICAgICAgKiBwYXJzZXIuY2MgKGNwX3BhcnNlcl9vbXBfc2Nhbl9sb29w X2JvZHkpOiBIYW5kbGUKICAgICAgICAgICAgemVybyBleGVjIHN0YXRlbWVudHMgYmVmb3Jl L2FmdGVyICdvbXAgc2NhbicuCiAgICAKICAgIGdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKICAg IAogICAgICAgICAgICAqIG9wZW5tcC5jYyAoZ2ZjX3Jlc29sdmVfb21wX2RvX2Jsb2Nrcyk6 IEhhbmRsZSB6ZXJvCiAgICAgICAgICAgIG9yIG1vcmUgdGhhbiBvbmUgZXhlYyBzdGF0ZW1l bnRzIGJlZm9yZS9hZnRlciAnb21wIHNjYW4nLgogICAgICAgICAgICAqIHRyYW5zLW9wZW5t cC5jYyAoZ2ZjX3RyYW5zX29tcF9kbyk6IExpa2V3aXNlLgogICAgCiAgICBsaWJnb21wL0No YW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIHRlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNv bW1vbi9zY2FuLTEuYzogTmV3IHRlc3QuCiAgICAgICAgICAgICogdGVzdHN1aXRlL2xpYmdv bXAuYy9zY2FuLTIzLmM6IE5ldyB0ZXN0LgogICAgICAgICAgICAqIHRlc3RzdWl0ZS9saWJn b21wLmZvcnRyYW4vc2Nhbi0yLmY5MDogTmV3IHRlc3QuCiAgICAKICAgIGdjYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nOgogICAgCiAgICAgICAgICAgICogZysrLmRnL2dvbXAvYXR0cnMtNy5D OiBVcGRhdGUgZGctZXJyb3IvZGctd2FybmluZy4KICAgICAgICAgICAgKiBnZm9ydHJhbi5k Zy9nb21wL2xvb3AtMi5mOTA6IExpa2V3aXNlLgogICAgICAgICAgICAqIGdmb3J0cmFuLmRn L2dvbXAvcmVkdWN0aW9uNS5mOTA6IExpa2V3aXNlLgogICAgICAgICAgICAqIGdmb3J0cmFu LmRnL2dvbXAvcmVkdWN0aW9uNi5mOTA6IExpa2V3aXNlLgogICAgICAgICAgICAqIGdmb3J0 cmFuLmRnL2dvbXAvc2Nhbi0xLmY5MDogTGlrZXdpc2UuCiAgICAgICAgICAgICogZ2ZvcnRy YW4uZGcvZ29tcC90YXNrbG9vcC0yLmY5MDogTGlrZXdpc2UuCiAgICAgICAgICAgICogYy1j KystY29tbW9uL2dvbXAvc2Nhbi02LmM6IE5ldyB0ZXN0LgogICAgICAgICAgICAqIGdmb3J0 cmFuLmRnL2dvbXAvc2Nhbi04LmY5MDogTmV3IHRlc3QuCi0tLQogZ2NjL2MvYy1wYXJzZXIu Y2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKysrKy0KIGdjYy9jcC9w YXJzZXIuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICsrKystCiBn Y2MvZm9ydHJhbi9vcGVubXAuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNSAr KysrKy0tCiBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgICAgICAgICAgICAgICAgICAg ICB8ICAzMSArKystLS0KIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvc2Nhbi02 LmMgICAgICAgIHwgIDk1ICsrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZysr LmRnL2dvbXAvYXR0cnMtNy5DICAgICAgICAgICAgIHwgICA4ICstCiBnY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvbG9vcC0yLmY5MCAgICAgICB8ICAxMCArLQogZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb21wL3JlZHVjdGlvbjUuZjkwICAgfCAgIDIgKy0KIGdjYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZWR1Y3Rpb242LmY5MCAgIHwgICA0ICstCiBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvc2Nhbi0xLmY5MCAgICAgICB8ICAgOSAr LQogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3NjYW4tOC5mOTAgICAgICAgfCAg OTYgKysrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L3Rhc2tsb29wLTIuZjkwICAgfCAgMTIgKy0tCiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9zY2FuLTEuYyB8ICA2OCArKysrKysrKysrKysrCiBsaWJnb21wL3Rl c3RzdWl0ZS9saWJnb21wLmMvc2Nhbi0yMy5jICAgICAgICAgICB8IDEyMSArKysrKysrKysr KysrKysrKysrKysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9zY2Fu LTIuZjkwICAgIHwgIDU5ICsrKysrKysrKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgNTQ1IGlu c2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFy c2VyLmNjIGIvZ2NjL2MvYy1wYXJzZXIuY2MKaW5kZXggMjFiYzMxNjdjZTIuLjkzOThjN2E1 MjcxIDEwMDY0NAotLS0gYS9nY2MvYy9jLXBhcnNlci5jYworKysgYi9nY2MvYy9jLXBhcnNl ci5jYwpAQCAtMjAxMTIsNiArMjAxMTIsNyBAQCBjX3BhcnNlcl9vbXBfc2Nhbl9sb29wX2Jv ZHkgKGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgb3Blbl9icmFjZV9wYXJzZWQpCiAgIHRyZWUg c3Vic3RtdDsKICAgbG9jYXRpb25fdCBsb2M7CiAgIHRyZWUgY2xhdXNlcyA9IE5VTExfVFJF RTsKKyAgYm9vbCBmb3VuZF9zY2FuID0gZmFsc2U7CiAKICAgbG9jID0gY19wYXJzZXJfcGVl a190b2tlbiAocGFyc2VyKS0+bG9jYXRpb247CiAgIGlmICghb3Blbl9icmFjZV9wYXJzZWQK QEAgLTIwMTIyLDcgKzIwMTIzLDE1IEBAIGNfcGFyc2VyX29tcF9zY2FuX2xvb3BfYm9keSAo Y19wYXJzZXIgKnBhcnNlciwgYm9vbCBvcGVuX2JyYWNlX3BhcnNlZCkKICAgICAgIHJldHVy bjsKICAgICB9CiAKLSAgc3Vic3RtdCA9IGNfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2Nr X3NlcXVlbmNlIChwYXJzZXIsIFBSQUdNQV9PTVBfU0NBTik7CisgIGlmIChjX3BhcnNlcl9w ZWVrX3Rva2VuIChwYXJzZXIpLT5wcmFnbWFfa2luZCAhPSBQUkFHTUFfT01QX1NDQU4pCisg ICAgc3Vic3RtdCA9IGNfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX3NlcXVlbmNlIChw YXJzZXIsIFBSQUdNQV9PTVBfU0NBTik7CisgIGVsc2UKKyAgICB7CisgICAgICB3YXJuaW5n X2F0IChjX3BhcnNlcl9wZWVrX3Rva2VuIChwYXJzZXIpLT5sb2NhdGlvbiwgMCwKKwkJICAi JTwjcHJhZ21hIG9tcCBzY2FuJT4gd2l0aCB6ZXJvIHByZWNlZGluZyBleGVjdXRhYmxlICIK KwkJICAic3RhdGVtZW50cyIpOworICAgICAgc3Vic3RtdCA9IGJ1aWxkX2VtcHR5X3N0bXQg KGxvYyk7CisgICAgfQogICBzdWJzdG10ID0gYnVpbGQyIChPTVBfU0NBTiwgdm9pZF90eXBl X25vZGUsIHN1YnN0bXQsIE5VTExfVFJFRSk7CiAgIFNFVF9FWFBSX0xPQ0FUSU9OIChzdWJz dG10LCBsb2MpOwogICBhZGRfc3RtdCAoc3Vic3RtdCk7CkBAIC0yMDEzMSw2ICsyMDE0MCw3 IEBAIGNfcGFyc2VyX29tcF9zY2FuX2xvb3BfYm9keSAoY19wYXJzZXIgKnBhcnNlciwgYm9v bCBvcGVuX2JyYWNlX3BhcnNlZCkKICAgaWYgKGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNl ciktPnByYWdtYV9raW5kID09IFBSQUdNQV9PTVBfU0NBTikKICAgICB7CiAgICAgICBlbnVt IG9tcF9jbGF1c2VfY29kZSBjbGF1c2UgPSBPTVBfQ0xBVVNFX0VSUk9SOworICAgICAgZm91 bmRfc2NhbiA9IHRydWU7CiAKICAgICAgIGNfcGFyc2VyX2NvbnN1bWVfcHJhZ21hIChwYXJz ZXIpOwogCkBAIC0yMDE2MCw3ICsyMDE3MCwxNSBAQCBjX3BhcnNlcl9vbXBfc2Nhbl9sb29w X2JvZHkgKGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgb3Blbl9icmFjZV9wYXJzZWQpCiAgICAg ZXJyb3IgKCJleHBlY3RlZCAlPCNwcmFnbWEgb21wIHNjYW4lPiIpOwogCiAgIGNsYXVzZXMg PSBjX2ZpbmlzaF9vbXBfY2xhdXNlcyAoY2xhdXNlcywgQ19PUlRfT01QKTsKLSAgc3Vic3Rt dCA9IGNfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX3NlcXVlbmNlIChwYXJzZXIsIFBS QUdNQV9OT05FKTsKKyAgaWYgKCFjX3BhcnNlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXIsIENQ UF9DTE9TRV9CUkFDRSkpCisgICAgc3Vic3RtdCA9IGNfcGFyc2VyX29tcF9zdHJ1Y3R1cmVk X2Jsb2NrX3NlcXVlbmNlIChwYXJzZXIsIFBSQUdNQV9OT05FKTsKKyAgZWxzZQorICAgIHsK KyAgICAgIGlmIChmb3VuZF9zY2FuKQorCXdhcm5pbmdfYXQgKGxvYywgMCwgIiU8I3ByYWdt YSBvbXAgc2NhbiU+IHdpdGggemVybyBzdWNjZWVkaW5nICIKKwkJCSAgICAiZXhlY3V0YWJs ZSBzdGF0ZW1lbnRzIik7CisgICAgICBzdWJzdG10ID0gYnVpbGRfZW1wdHlfc3RtdCAobG9j KTsKKyAgICB9CiAgIHN1YnN0bXQgPSBidWlsZDIgKE9NUF9TQ0FOLCB2b2lkX3R5cGVfbm9k ZSwgc3Vic3RtdCwgY2xhdXNlcyk7CiAgIFNFVF9FWFBSX0xPQ0FUSU9OIChzdWJzdG10LCBs b2MpOwogICBhZGRfc3RtdCAoc3Vic3RtdCk7CmRpZmYgLS1naXQgYS9nY2MvY3AvcGFyc2Vy LmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCBlNWYwMzJmMjMzMC4uZDg5NTUzZTdkYTgg MTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysrIGIvZ2NjL2NwL3BhcnNlci5jYwpA QCAtNDM1NTMsMTkgKzQzNTUzLDI5IEBAIHN0YXRpYyB2b2lkCiBjcF9wYXJzZXJfb21wX3Nj YW5fbG9vcF9ib2R5IChjcF9wYXJzZXIgKnBhcnNlcikKIHsKICAgdHJlZSBzdWJzdG10LCBj bGF1c2VzID0gTlVMTF9UUkVFOworICBib29sIGZvdW5kX3NjYW4gPSBmYWxzZTsKIAogICBt YXRjaGluZ19icmFjZXMgYnJhY2VzOwogICBpZiAoIWJyYWNlcy5yZXF1aXJlX29wZW4gKHBh cnNlcikpCiAgICAgcmV0dXJuOwogCi0gIHN1YnN0bXQgPSBjcF9wYXJzZXJfb21wX3N0cnVj dHVyZWRfYmxvY2tfc2VxdWVuY2UgKHBhcnNlciwgUFJBR01BX09NUF9TQ0FOKTsKKyAgY3Bf dG9rZW4gKnRvayA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOworICBp ZiAoY3BfcGFyc2VyX3ByYWdtYV9raW5kICh0b2spICE9IFBSQUdNQV9PTVBfU0NBTikKKyAg ICBzdWJzdG10ID0gY3BfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX3NlcXVlbmNlIChw YXJzZXIsIFBSQUdNQV9PTVBfU0NBTik7CisgIGVsc2UKKyAgICB7CisgICAgICB3YXJuaW5n X2F0ICh0b2stPmxvY2F0aW9uLCAwLCAiJTwjcHJhZ21hIG9tcCBzY2FuJT4gd2l0aCB6ZXJv IHByZWNlZGluZyAiCisJCQkJICAgICJleGVjdXRhYmxlIHN0YXRlbWVudHMiKTsKKyAgICAg IHN1YnN0bXQgPSBidWlsZF9lbXB0eV9zdG10ICh0b2stPmxvY2F0aW9uKTsKKyAgICB9CiAg IHN1YnN0bXQgPSBidWlsZDIgKE9NUF9TQ0FOLCB2b2lkX3R5cGVfbm9kZSwgc3Vic3RtdCwg TlVMTF9UUkVFKTsKICAgYWRkX3N0bXQgKHN1YnN0bXQpOwogCi0gIGNwX3Rva2VuICp0b2sg PSBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKyAgdG9rID0gY3BfbGV4 ZXJfcGVla190b2tlbiAocGFyc2VyLT5sZXhlcik7CiAgIGlmIChjcF9wYXJzZXJfcHJhZ21h X2tpbmQgKHRvaykgPT0gUFJBR01BX09NUF9TQ0FOKQogICAgIHsKICAgICAgIGVudW0gb21w X2NsYXVzZV9jb2RlIGNsYXVzZSA9IE9NUF9DTEFVU0VfRVJST1I7CisgICAgICBmb3VuZF9z Y2FuID0gdHJ1ZTsKIAogICAgICAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5s ZXhlcik7CiAKQEAgLTQzNTk2LDcgKzQzNjA2LDE1IEBAIGNwX3BhcnNlcl9vbXBfc2Nhbl9s b29wX2JvZHkgKGNwX3BhcnNlciAqcGFyc2VyKQogICAgIGVycm9yICgiZXhwZWN0ZWQgJTwj cHJhZ21hIG9tcCBzY2FuJT4iKTsKIAogICBjbGF1c2VzID0gZmluaXNoX29tcF9jbGF1c2Vz IChjbGF1c2VzLCBDX09SVF9PTVApOwotICBzdWJzdG10ID0gY3BfcGFyc2VyX29tcF9zdHJ1 Y3R1cmVkX2Jsb2NrX3NlcXVlbmNlIChwYXJzZXIsIFBSQUdNQV9OT05FKTsKKyAgaWYgKCFj cF9sZXhlcl9uZXh0X3Rva2VuX2lzIChwYXJzZXItPmxleGVyLCBDUFBfQ0xPU0VfQlJBQ0Up KQorICAgIHN1YnN0bXQgPSBjcF9wYXJzZXJfb21wX3N0cnVjdHVyZWRfYmxvY2tfc2VxdWVu Y2UgKHBhcnNlciwgUFJBR01BX05PTkUpOworICBlbHNlCisgICAgeworICAgICAgaWYgKGZv dW5kX3NjYW4pCisJd2FybmluZ19hdCAodG9rLT5sb2NhdGlvbiwgMCwgIiU8I3ByYWdtYSBv bXAgc2NhbiU+IHdpdGggemVybyAiCisJCQkJICAgICAgInN1Y2NlZWRpbmcgZXhlY3V0YWJs ZSBzdGF0ZW1lbnRzIik7CisgICAgICBzdWJzdG10ID0gYnVpbGRfZW1wdHlfc3RtdCAodG9r LT5sb2NhdGlvbik7CisgICAgfQogICBzdWJzdG10ID0gYnVpbGQyX2xvYyAodG9rLT5sb2Nh dGlvbiwgT01QX1NDQU4sIHZvaWRfdHlwZV9ub2RlLCBzdWJzdG10LAogCQkJY2xhdXNlcyk7 CiAgIGFkZF9zdG10IChzdWJzdG10KTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5t cC5jYyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwppbmRleCBiOGI2Njg2OTkwOC4uODZlNDUx NTMxYTYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9y dHJhbi9vcGVubXAuY2MKQEAgLTkwNjcsMTcgKzkwNjcsMzQgQEAgZ2ZjX3Jlc29sdmVfb21w X2RvX2Jsb2NrcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19uYW1lc3BhY2UgKm5zKQogCSAgaWYg KGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+c2NoZWRfa2luZCAhPSBPTVBfU0NIRURfTk9ORSkK IAkgICAgZ2ZjX2Vycm9yICgiU0NIRURVTEUgY2xhdXNlIHNwZWNpZmllZCB0b2dldGhlciB3 aXRoICU8aW5zY2FuJT4gIgogCQkgICAgICAgIlJFRFVDVElPTiBjbGF1c2UgYXQgJUwiLCBs b2MpOwotCSAgaWYgKCFjLT5ibG9jawotCSAgICAgIHx8ICFjLT5ibG9jay0+bmV4dAotCSAg ICAgIHx8ICFjLT5ibG9jay0+bmV4dC0+bmV4dAotCSAgICAgIHx8IGMtPmJsb2NrLT5uZXh0 LT5uZXh0LT5vcCAhPSBFWEVDX09NUF9TQ0FOCi0JICAgICAgfHwgIWMtPmJsb2NrLT5uZXh0 LT5uZXh0LT5uZXh0Ci0JICAgICAgfHwgYy0+YmxvY2stPm5leHQtPm5leHQtPm5leHQtPm5l eHQpCisJICBnZmNfY29kZSAqYmxvY2sgPSBjLT5ibG9jayA/IGMtPmJsb2NrLT5uZXh0IDog TlVMTDsKKwkgIGlmIChibG9jayAmJiBibG9jay0+b3AgIT0gRVhFQ19PTVBfU0NBTikKKwkg ICAgd2hpbGUgKGJsb2NrICYmIGJsb2NrLT5uZXh0ICYmIGJsb2NrLT5uZXh0LT5vcCAhPSBF WEVDX09NUF9TQ0FOKQorCSAgICAgIGJsb2NrID0gYmxvY2stPm5leHQ7CisJICBpZiAoIWJs b2NrCisJICAgICAgfHwgKGJsb2NrLT5vcCAhPSBFWEVDX09NUF9TQ0FOCisJCSAgJiYgKCFi bG9jay0+bmV4dCB8fCBibG9jay0+bmV4dC0+b3AgIT0gRVhFQ19PTVBfU0NBTikpKQogCSAg ICBnZmNfZXJyb3IgKCJXaXRoIElOU0NBTiBhdCAlTCwgZXhwZWN0ZWQgbG9vcCBib2R5IHdp dGggISRPTVAgU0NBTiAiCi0JCSAgICAgICAiYmV0d2VlbiB0d28gc3RydWN0dXJlZC1ibG9j ay1zZXF1ZW5jZXMiLCBsb2MpOworCQkgICAgICAgImJldHdlZW4gdHdvIHN0cnVjdHVyZWQg YmxvY2sgc2VxdWVuY2VzIiwgbG9jKTsKIAkgIGVsc2UKLQkgICAgLyogTWFyayBhcyBjaGVj a2VkOyBmbGFnIHdpbGwgYmUgdW5zZXQgbGF0ZXIuICAqLwotCSAgICBjLT5ibG9jay0+bmV4 dC0+bmV4dC0+ZXh0Lm9tcF9jbGF1c2VzLT5pZl9wcmVzZW50ID0gdHJ1ZTsKKwkgICAgewor CSAgICAgIGlmIChibG9jay0+b3AgPT0gRVhFQ19PTVBfU0NBTikKKwkJZ2ZjX3dhcm5pbmcg KDAsICIhJE9NUCBTQ0FOIGF0ICVMIHdpdGggemVybyBleGVjdXRhYmxlICIKKwkJCQkic3Rh dGVtZW50cyBpbiBwcmVjZWRpbmcgc3RydWN0dXJlZCBibG9jayAiCisJCQkJInNlcXVlbmNl IiwgJmJsb2NrLT5sb2MpOworCSAgICAgIGlmICgoYmxvY2stPm9wID09IEVYRUNfT01QX1ND QU4gJiYgIWJsb2NrLT5uZXh0KQorCQkgIHx8IChibG9jay0+bmV4dCAmJiBibG9jay0+bmV4 dC0+b3AgPT0gRVhFQ19PTVBfU0NBTgorCQkgICAgICAmJiAhYmxvY2stPm5leHQtPm5leHQp KQorCQlnZmNfd2FybmluZyAoMCwgIiEkT01QIFNDQU4gYXQgJUwgd2l0aCB6ZXJvIGV4ZWN1 dGFibGUgIgorCQkJCSJzdGF0ZW1lbnRzIGluIHN1Y2NlZWRpbmcgc3RydWN0dXJlZCBibG9j ayAiCisJCQkJInNlcXVlbmNlIiwgYmxvY2stPm9wID09IEVYRUNfT01QX1NDQU4KKwkJCQkJ ICAgID8gJmJsb2NrLT5sb2MgOiAmYmxvY2stPm5leHQtPmxvYyk7CisJICAgIH0KKwkgIGlm IChibG9jayAmJiBibG9jay0+b3AgIT0gRVhFQ19PTVBfU0NBTikKKwkgICAgYmxvY2sgPSBi bG9jay0+bmV4dDsKKwkgIGlmIChibG9jayAmJiBibG9jay0+b3AgPT0gRVhFQ19PTVBfU0NB TikKKwkgICAgLyogTWFyayAnb21wIHNjYW4nIGFzIGNoZWNrZWQ7IGZsYWcgd2lsbCBiZSB1 bnNldCBsYXRlci4gICovCisJICAgIGJsb2NrLT5leHQub21wX2NsYXVzZXMtPmlmX3ByZXNl bnQgPSB0cnVlOwogCX0KICAgICB9CiAgIGdmY19yZXNvbHZlX2Jsb2NrcyAoY29kZS0+Ymxv Y2ssIG5zKTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2dj Yy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwppbmRleCA4NGMwMTg0ZjQ4ZS4uNGZmOWM1OWRm NWMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYworKysgYi9nY2Mv Zm9ydHJhbi90cmFucy1vcGVubXAuY2MKQEAgLTU2MDMsMjYgKzU2MDMsMjkgQEAgZ2ZjX3Ry YW5zX29tcF9kbyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19leGVjX29wIG9wLCBzdG10YmxvY2tf dCAqcGJsb2NrLAogICAvKiBNYWluIGxvb3AgYm9keS4gICovCiAgIGlmIChjbGF1c2VzLT5s aXN0c1tPTVBfTElTVF9SRURVQ1RJT05fSU5TQ0FOXSkKICAgICB7Ci0gICAgICBnY2NfYXNz ZXJ0IChjb2RlLT5ibG9jay0+bmV4dC0+bmV4dC0+b3AgPT0gRVhFQ19PTVBfU0NBTik7Ci0g ICAgICBnY2NfYXNzZXJ0IChjb2RlLT5ibG9jay0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dCA9 PSBOVUxMKTsKLSAgICAgIGxvY3VzICpjbG9jID0gJmNvZGUtPmJsb2NrLT5uZXh0LT5uZXh0 LT5sb2M7Ci0gICAgICBsb2NhdGlvbl90IGxvYyA9IGdmY19nZXRfbG9jYXRpb24gKGNsb2Mp OwotCi0gICAgICBnZmNfY29kZSBjb2RlMiA9ICpjb2RlLT5ibG9jay0+bmV4dDsKLSAgICAg IGNvZGUyLm5leHQgPSBOVUxMOwotICAgICAgdG1wID0gZ2ZjX3RyYW5zX2NvZGUgKCZjb2Rl Mik7CisgICAgICBnZmNfY29kZSAqY29kZTEsICpzY2FuLCAqY29kZTIsICp0bXBjb2RlOwor ICAgICAgY29kZTEgPSB0bXBjb2RlID0gY29kZS0+YmxvY2stPm5leHQ7CisgICAgICBpZiAo dG1wY29kZSAmJiB0bXBjb2RlLT5vcCAhPSBFWEVDX09NUF9TQ0FOKQorCXdoaWxlICh0bXBj b2RlICYmIHRtcGNvZGUtPm5leHQgJiYgdG1wY29kZS0+bmV4dC0+b3AgIT0gRVhFQ19PTVBf U0NBTikKKwkgIHRtcGNvZGUgPSB0bXBjb2RlLT5uZXh0OworICAgICAgc2NhbiA9IHRtcGNv ZGUtPm9wID09IEVYRUNfT01QX1NDQU4gPyB0bXBjb2RlIDogdG1wY29kZS0+bmV4dDsKKyAg ICAgIGlmIChjb2RlMSAhPSBzY2FuKQorCXRtcGNvZGUtPm5leHQgPSBOVUxMOworICAgICAg Y29kZTIgPSBzY2FuLT5uZXh0OworICAgICAgZ2NjX2Fzc2VydCAoc2Nhbi0+b3AgPT0gRVhF Q19PTVBfU0NBTik7CisgICAgICBsb2NhdGlvbl90IGxvYyA9IGdmY19nZXRfbG9jYXRpb24g KCZzY2FuLT5sb2MpOworCisgICAgICB0bXAgPSBjb2RlMSAhPSBzY2FuID8gZ2ZjX3RyYW5z X2NvZGUgKGNvZGUxKSA6IGJ1aWxkX2VtcHR5X3N0bXQgKGxvYyk7CiAgICAgICB0bXAgPSBi dWlsZDIgKE9NUF9TQ0FOLCB2b2lkX3R5cGVfbm9kZSwgdG1wLCBOVUxMX1RSRUUpOwogICAg ICAgU0VUX0VYUFJfTE9DQVRJT04gKHRtcCwgbG9jKTsKICAgICAgIGdmY19hZGRfZXhwcl90 b19ibG9jayAoJmJvZHksIHRtcCk7CiAgICAgICBpbnB1dF9sb2NhdGlvbiA9IGxvYzsKLSAg ICAgIHRyZWUgYyA9IGdmY190cmFuc19vbXBfY2xhdXNlcyAoJmJvZHksCi0JCQkJICAgICAg Y29kZS0+YmxvY2stPm5leHQtPm5leHQtPmV4dC5vbXBfY2xhdXNlcywKLQkJCQkgICAgICAq Y2xvYyk7Ci0gICAgICBjb2RlMiA9ICpjb2RlLT5ibG9jay0+bmV4dC0+bmV4dC0+bmV4dDsK LSAgICAgIGNvZGUyLm5leHQgPSBOVUxMOwotICAgICAgdG1wID0gZ2ZjX3RyYW5zX2NvZGUg KCZjb2RlMik7CisgICAgICB0cmVlIGMgPSBnZmNfdHJhbnNfb21wX2NsYXVzZXMgKCZib2R5 LCBzY2FuLT5leHQub21wX2NsYXVzZXMsIHNjYW4tPmxvYyk7CisgICAgICB0bXAgPSBjb2Rl MiA/IGdmY190cmFuc19jb2RlIChjb2RlMikgOiBidWlsZF9lbXB0eV9zdG10IChsb2MpOwog ICAgICAgdG1wID0gYnVpbGQyIChPTVBfU0NBTiwgdm9pZF90eXBlX25vZGUsIHRtcCwgYyk7 CiAgICAgICBTRVRfRVhQUl9MT0NBVElPTiAodG1wLCBsb2MpOworICAgICAgaWYgKGNvZGUx ICE9IHNjYW4pCisJdG1wY29kZS0+bmV4dCA9IHNjYW47CiAgICAgfQogICBlbHNlCiAgICAg dG1wID0gZ2ZjX3RyYW5zX29tcF9jb2RlIChjb2RlLT5ibG9jay0+bmV4dCwgdHJ1ZSk7CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3NjYW4tNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9zY2FuLTYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGZkZjY2YmY4MGQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3NjYW4tNi5jCkBAIC0wLDAg KzEsOTUgQEAKK3ZvaWQgZjEgKGludCwgaW50LCBpbnQpOworaW50IGlpaSAoaW50LCBpbnQs IGludCk7CisKK2ludAorczEgKGludCBhMSwgaW50IGEyLCBpbnQgYTMpCit7CisgIGludCBy ID0gMDsKKyAgI3ByYWdtYSBvbXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1Y3Rpb24gKGluc2Nh biwgKzpyKQorICBmb3IgKGludCBpID0gMDsgaSA8IGExOyBpKyspCisgICAgZm9yIChpbnQg aiA9IDA7IGogPCBhMjsgaisrKQorICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBhMzsgaysr KQorCXsKKwkgICNwcmFnbWEgb21wIHNjYW4gZXhjbHVzaXZlIChyKSAgLyogeyBkZy13YXJu aW5nICInI3ByYWdtYSBvbXAgc2Nhbicgd2l0aCB6ZXJvIHByZWNlZGluZyBleGVjdXRhYmxl IHN0YXRlbWVudHMiIH0gKi8KKwkgIGYxICgyLCBrLCByKTsKKwl9CisKKyAgI3ByYWdtYSBv bXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1Y3Rpb24gKGluc2NhbiwgKzpyKQorICBmb3IgKGlu dCBpID0gMDsgaSA8IGExOyBpKyspCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhMjsgaisr KQorICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBhMzsgaysrKQorCXsKKwkgIHIgKz0gaWlp IChpLCBqLCBrKTsKKwkgICNwcmFnbWEgb21wIHNjYW4gZXhjbHVzaXZlIChyKSAgLyogeyBk Zy13YXJuaW5nICInI3ByYWdtYSBvbXAgc2Nhbicgd2l0aCB6ZXJvIHN1Y2NlZWRpbmcgZXhl Y3V0YWJsZSBzdGF0ZW1lbnRzIiB9ICovCisJfQorCisgICNwcmFnbWEgb21wIHNpbWQgY29s bGFwc2UoMykgcmVkdWN0aW9uIChpbnNjYW4sICs6cikKKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBhMTsgaSsrKQorICAgIGZvciAoaW50IGogPSAwOyBqIDwgYTI7IGorKykKKyAgICAgIGZv ciAoaW50IGsgPSAwOyBrIDwgYTM7IGsrKykKKwl7CisJICAjcHJhZ21hIG9tcCBzY2FuIGlu Y2x1c2l2ZSAocikKKyAgICAgICAgICAgLyogeyBkZy13YXJuaW5nICInI3ByYWdtYSBvbXAg c2Nhbicgd2l0aCB6ZXJvIHByZWNlZGluZyBleGVjdXRhYmxlIHN0YXRlbWVudHMiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgICAgICAgICAgLyogeyBkZy13YXJuaW5nICIn I3ByYWdtYSBvbXAgc2Nhbicgd2l0aCB6ZXJvIHN1Y2NlZWRpbmcgZXhlY3V0YWJsZSBzdGF0 ZW1lbnRzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMiB9ICovCisJfQorICByZXR1cm4gcjsK K30KKworaW50CitzMiAoaW50IGExLCBpbnQgYTIsIGludCBhMykKK3sKKyAgaW50IHIgPSAw OworICAjcHJhZ21hIG9tcCBzaW1kIGNvbGxhcHNlKDMpIHJlZHVjdGlvbiAoaW5zY2FuLCAr OnIpICAvKiB7IGRnLWVycm9yICIncicgc3BlY2lmaWVkIGluICdpbnNjYW4nICdyZWR1Y3Rp b24nIGNsYXVzZSBidXQgbm90IGluICdzY2FuJyBkaXJlY3RpdmUgY2xhdXNlIiB9ICovCisg IGZvciAoaW50IGkgPSAwOyBpIDwgYTE7IGkrKykKKyAgICBmb3IgKGludCBqID0gMDsgaiA8 IGEyOyBqKyspCisgICAgICBmb3IgKGludCBrID0gMDsgayA8IGEzOyBrKyspCisJeworCSAg ZjEgKDIsIGssIHIpOworCSAgciArPSBpaWkgKGksIGosIGspOyAgLyogeyBkZy1lcnJvciAi ZXhwZWN0ZWQgJyNwcmFnbWEgb21wIHNjYW4nIiAiIiB7IHRhcmdldCBjKysgfSB9ICovCisJ fSAgLyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgJyNwcmFnbWEgb21wIHNjYW4nIiAiIiB7IHRh cmdldCBjIH0gfSAqLworCisgIHIgPSAwOworICAjcHJhZ21hIG9tcCBzaW1kIGNvbGxhcHNl KDMpIHJlZHVjdGlvbiAoaW5zY2FuLCArOnIpICAvKiB7IGRnLWVycm9yICIncicgc3BlY2lm aWVkIGluICdpbnNjYW4nICdyZWR1Y3Rpb24nIGNsYXVzZSBidXQgbm90IGluICdzY2FuJyBk aXJlY3RpdmUgY2xhdXNlIiB9ICovCisgIGZvciAoaW50IGkgPSAwOyBpIDwgYTE7IGkrKykK KyAgICBmb3IgKGludCBqID0gMDsgaiA8IGEyOyBqKyspCisgICAgICBmb3IgKGludCBrID0g MDsgayA8IGEzOyBrKyspCisJOyAgLyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgJ1x7JyBiZWZv cmUgJzsnIHRva2VuIiB9ICovCisKKyAgI3ByYWdtYSBvbXAgc2ltZCBjb2xsYXBzZSgzKSBy ZWR1Y3Rpb24gKGluc2NhbiwgKzpyKSAgLyogeyBkZy1lcnJvciAiJ3InIHNwZWNpZmllZCBp biAnaW5zY2FuJyAncmVkdWN0aW9uJyBjbGF1c2UgYnV0IG5vdCBpbiAnc2NhbicgZGlyZWN0 aXZlIGNsYXVzZSIgfSAqLworICBmb3IgKGludCBpID0gMDsgaSA8IGExOyBpKyspCisgICAg Zm9yIChpbnQgaiA9IDA7IGogPCBhMjsgaisrKQorICAgICAgZm9yIChpbnQgayA9IDA7IGsg PCBhMzsgaysrKQorCXsKKwl9ICAvKiB7IGRnLWVycm9yICJleHBlY3RlZCBleHByZXNzaW9u IGJlZm9yZSAnXH0nIHRva2VuIiAiIiB7IHRhcmdldCBjIH0gfSAqLworICAgICAgICAgICAv KiB7IGRnLWVycm9yICJleHBlY3RlZCBwcmltYXJ5LWV4cHJlc3Npb24gYmVmb3JlICdcfScg dG9rZW4iICIiIHsgdGFyZ2V0IGMrKyB9IC4tMSB9ICovCisJICAgLyogeyBkZy1lcnJvciAi ZXhwZWN0ZWQgJyNwcmFnbWEgb21wIHNjYW4nIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMiB9 ICovCisKKworICByID0gMDsKKyAgI3ByYWdtYSBvbXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1 Y3Rpb24gKGluc2NhbiwgKzpyKQorICBmb3IgKGludCBpID0gMDsgaSA8IGExOyBpKyspCisg ICAgZm9yIChpbnQgaiA9IDA7IGogPCBhMjsgaisrKQorICAgICAgZm9yIChpbnQgayA9IDA7 IGsgPCBhMzsgaysrKQorCXsKKwkgIGYxICgyLCBrLCByKTsKKwkgICNwcmFnbWEgb21wIHNj YW4gaW5jbHVzaXZlIChyKQorCSAgI3ByYWdtYSBvbXAgc2NhbiBpbmNsdXNpdmUgKHIpICAv KiB7IGRnLWVycm9yICInI3ByYWdtYSBvbXAgc2NhbicgbWF5IG9ubHkgYmUgdXNlZCBpbiBh IGxvb3AgY29uc3RydWN0IHdpdGggJ2luc2NhbicgJ3JlZHVjdGlvbicgY2xhdXNlIiB9ICov CisJICByICs9IGlpaSAoaSwgaiwgayk7CisJfQorCisgICNwcmFnbWEgb21wIHNjYW4gaW5j bHVzaXZlIChyKSAgLyogeyBkZy1lcnJvciAiJyNwcmFnbWEgb21wIHNjYW4nIG1heSBvbmx5 IGJlIHVzZWQgaW4gYSBsb29wIGNvbnN0cnVjdCB3aXRoICdpbnNjYW4nICdyZWR1Y3Rpb24n IGNsYXVzZSIgfSAqLworCisgIHIgPSAwOworICAjcHJhZ21hIG9tcCBzaW1kIGNvbGxhcHNl KDMpIHJlZHVjdGlvbiAoaW5zY2FuLCArOnIpICAvKiB7IGRnLWVycm9yICIncicgc3BlY2lm aWVkIGluICdpbnNjYW4nICdyZWR1Y3Rpb24nIGNsYXVzZSBidXQgbm90IGluICdzY2FuJyBk aXJlY3RpdmUgY2xhdXNlIiB9ICovCisgIGZvciAoaW50IGkgPSAwOyBpIDwgYTE7IGkrKykK KyAgICBmb3IgKGludCBqID0gMDsgaiA8IGEyOyBqKyspCisgICAgICBmb3IgKGludCBrID0g MDsgayA8IGEzOyBrKyspCisJeworCSAgZjEgKDIsIGssIHIpOworCSAgeworCSAgICAjcHJh Z21hIG9tcCBzY2FuIGluY2x1c2l2ZSAocikgIC8qIHsgZGctZXJyb3IgIicjcHJhZ21hIG9t cCBzY2FuJyBtYXkgb25seSBiZSB1c2VkIGluIGEgbG9vcCBjb25zdHJ1Y3Qgd2l0aCAnaW5z Y2FuJyAncmVkdWN0aW9uJyBjbGF1c2UiIH0gKi8KKwkgIH0KKwkgIHIgKz0gaWlpIChpLCBq LCBrKTsgIC8qIHsgZGctZXJyb3IgImV4cGVjdGVkICcjcHJhZ21hIG9tcCBzY2FuJyIgIiIg eyB0YXJnZXQgYysrIH0gfSAgKi8KKwl9ICAvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnI3By YWdtYSBvbXAgc2NhbiciICIiIHsgdGFyZ2V0IGMgfSB9ICAqLworICByZXR1cm4gcjsKK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvYXR0cnMtNy5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9hdHRycy03LkMKaW5kZXggOTAwZWY2NjQ5NTcuLjU5 Zjk5MmM1MTZjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2F0dHJz LTcuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2F0dHJzLTcuQwpAQCAtMzEs NyArMzEsNyBAQCBiYXIgKGludCBhLCBpbnQgKmMsIGludCAqZCwgaW50ICplLCBpbnQgKmYp CiAgICAgICBbW29tcDo6c2VxdWVuY2UgKG9tcDo6ZGlyZWN0aXZlIChwYXJhbGxlbCksIG9t cDo6ZGlyZWN0aXZlIChzY2FuLCBleGNsdXNpdmUgKGEpKSldXQkvLyB7IGRnLWVycm9yICJt dXN0IGJlIHRoZSBvbmx5IHNwZWNpZmllZCBhdHRyaWJ1dGUgb24gYSBzdGF0ZW1lbnQiIH0K IAkJCQkJCQkJCQkJLy8geyBkZy1lcnJvciAiI3ByYWdtYSBvbXAgc2NhbiIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfQogICAgICAgYSArPSBjW2ldOwkJCQkJCQkJCS8vIHsgZGctZXJy b3IgImV4cGVjdGVkIiB9Ci0gICAgfQkJCQkJCQkJCQkJLy8geyBkZy1lcnJvciAiZXhwZWN0 ZWQiIH0KKyAgICB9CiAgIFtbb21wOjpkaXJlY3RpdmUgKHBhcmFsbGVsIGZvciByZWR1Y3Rp b24gKGluc2NhbiwgKzogYSkpXV0JCQkJLy8geyBkZy1lcnJvciAiJ2EnIHNwZWNpZmllZCBp biAnaW5zY2FuJyAncmVkdWN0aW9uJyBjbGF1c2UgYnV0IG5vdCBpbiAnc2NhbicgZGlyZWN0 aXZlIGNsYXVzZSIgfQogICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykKICAgICB7CkBAIC0z OSw3ICszOSw3IEBAIGJhciAoaW50IGEsIGludCAqYywgaW50ICpkLCBpbnQgKmUsIGludCAq ZikKICAgICAgIFtbb21wOjpzZXF1ZW5jZSAoZGlyZWN0aXZlIChzY2FuIGluY2x1c2l2ZSAo YSkpLCBkaXJlY3RpdmUgKGNyaXRpY2FsKSldXQkJLy8geyBkZy1lcnJvciAibXVzdCBiZSB0 aGUgb25seSBzcGVjaWZpZWQgYXR0cmlidXRlIG9uIGEgc3RhdGVtZW50IiB9CiAJCQkJCQkJ CQkJCS8vIHsgZGctZXJyb3IgIiNwcmFnbWEgb21wIHNjYW4iICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0KICAgICAgIGRbaV0gPSBhOwkJCQkJCQkJCQkvLyB7IGRnLWVycm9yICJleHBl Y3RlZCIgfQotICAgIH0JCQkJCQkJCQkJCS8vIHsgZGctZXJyb3IgImV4cGVjdGVkIiB9Cisg ICAgfQogICBbW29tcDo6ZGlyZWN0aXZlIChwYXJhbGxlbCBmb3IgcmVkdWN0aW9uIChpbnNj YW4sICs6IGEpKV1dCQkJCS8vIHsgZGctZXJyb3IgIidhJyBzcGVjaWZpZWQgaW4gJ2luc2Nh bicgJ3JlZHVjdGlvbicgY2xhdXNlIGJ1dCBub3QgaW4gJ3NjYW4nIGRpcmVjdGl2ZSBjbGF1 c2UiIH0KICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspCiAgICAgewpAQCAtNDcsNyArNDcs NyBAQCBiYXIgKGludCBhLCBpbnQgKmMsIGludCAqZCwgaW50ICplLCBpbnQgKmYpCiAgICAg ICBbW2dudTo6Y29sZF1dIFtbb21wOjpkaXJlY3RpdmUgKHNjYW4sIGV4Y2x1c2l2ZSAoYSkp XV0JCQkJLy8geyBkZy1lcnJvciAibXVzdCBiZSB0aGUgb25seSBzcGVjaWZpZWQgYXR0cmli dXRlIG9uIGEgc3RhdGVtZW50IiB9CiAJCQkJCQkJCQkJCS8vIHsgZGctZXJyb3IgIiNwcmFn bWEgb21wIHNjYW4iICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KICAgICAgIGEgKz0gY1tp XTsJCQkJCQkJCQkvLyB7IGRnLWVycm9yICJleHBlY3RlZCIgfQotICAgIH0JCQkJCQkJCQkJ CS8vIHsgZGctZXJyb3IgImV4cGVjdGVkIiB9CisgICAgfQogICBbW29tcDo6ZGlyZWN0aXZl IChwYXJhbGxlbCBmb3IgcmVkdWN0aW9uIChpbnNjYW4sICs6IGEpKV1dCQkJCS8vIHsgZGct ZXJyb3IgIidhJyBzcGVjaWZpZWQgaW4gJ2luc2NhbicgJ3JlZHVjdGlvbicgY2xhdXNlIGJ1 dCBub3QgaW4gJ3NjYW4nIGRpcmVjdGl2ZSBjbGF1c2UiIH0KICAgZm9yIChpID0gMDsgaSA8 IDY0OyBpKyspCiAgICAgewpAQCAtNTUsNyArNTUsNyBAQCBiYXIgKGludCBhLCBpbnQgKmMs IGludCAqZCwgaW50ICplLCBpbnQgKmYpCiAgICAgICBbW29tcDo6ZGlyZWN0aXZlIChzY2Fu LCBleGNsdXNpdmUgKGEpKSwgZ251Ojpjb2xkXV0JCQkJLy8geyBkZy1lcnJvciAibXVzdCBi ZSB0aGUgb25seSBzcGVjaWZpZWQgYXR0cmlidXRlIG9uIGEgc3RhdGVtZW50IiB9CiAJCQkJ CQkJCQkJCS8vIHsgZGctZXJyb3IgIiNwcmFnbWEgb21wIHNjYW4iICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0KICAgICAgIGEgKz0gY1tpXTsJCQkJCQkJCQkvLyB7IGRnLWVycm9yICJl eHBlY3RlZCIgfQotICAgIH0JCQkJCQkJCQkJCS8vIHsgZGctZXJyb3IgImV4cGVjdGVkIiB9 CisgICAgfQogICBbW29tcDo6ZGlyZWN0aXZlIChwYXJhbGxlbCBmb3IgcmVkdWN0aW9uIChp bnNjYW4sICs6IGEpKV1dCQkJCS8vIHsgZGctZXJyb3IgIidhJyBzcGVjaWZpZWQgaW4gJ2lu c2NhbicgJ3JlZHVjdGlvbicgY2xhdXNlIGJ1dCBub3QgaW4gJ3NjYW4nIGRpcmVjdGl2ZSBj bGF1c2UiIH0KICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspCiAgICAgewpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xvb3AtMi5mOTAgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbG9vcC0yLmY5MAppbmRleCAyZDgzZTNhNzUwNy4u OTJhMTdiMjQ3YmIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC9sb29wLTIuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9sb29w LTIuZjkwCkBAIC0xOCwyMyArMTgsMjMgQEAgZG8gaSA9IDEsIDY0CiBlbmQgZG8KIAogISRv bXAgbG9vcCByZWR1Y3Rpb24oaW5zY2FuLCArOiByKSAgISB7IGRnLWVycm9yICInaW5zY2Fu JyBSRURVQ1RJT04gY2xhdXNlIG9uIGNvbnN0cnVjdCBvdGhlciB0aGFuIERPLCBTSU1ELCBE TyBTSU1ELCBQQVJBTExFTCBETywgUEFSQUxMRUwgRE8gU0lNRCIgfQotICAhIHsgZGctZXJy b3IgIldpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5PTVAg U0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkLWJsb2NrLXNlcXVlbmNlcyIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfQorICAhIHsgZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwg ZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1 cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogZG8gaSA9 IDEsIDY0CiBlbmQgZG8KICEkb21wIHRlYW1zIGxvb3AgcmVkdWN0aW9uKGluc2NhbiwgKzog cikgICEgeyBkZy1lcnJvciAiJ2luc2NhbicgUkVEVUNUSU9OIGNsYXVzZSBvbiBjb25zdHJ1 Y3Qgb3RoZXIgdGhhbiBETywgU0lNRCwgRE8gU0lNRCwgUEFSQUxMRUwgRE8sIFBBUkFMTEVM IERPIFNJTUQiIH0KLSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVj dGVkIGxvb3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZC1i bG9jay1zZXF1ZW5jZXMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKyAgISB7IGRnLWVy cm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVjdGVkIGxvb3AgYm9keSB3aXRoIC4uT01Q IFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZCBibG9jayBzZXF1ZW5jZXMiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0KIGRvIGkgPSAxLCA2NAogZW5kIGRvCiAhJG9tcCBwYXJhbGxl bCBsb29wIHJlZHVjdGlvbihpbnNjYW4sICs6IHIpICEgeyBkZy1lcnJvciAiJ2luc2Nhbicg UkVEVUNUSU9OIGNsYXVzZSBvbiBjb25zdHJ1Y3Qgb3RoZXIgdGhhbiBETywgU0lNRCwgRE8g U0lNRCwgUEFSQUxMRUwgRE8sIFBBUkFMTEVMIERPIFNJTUQiIH0KLSAgISB7IGRnLWVycm9y ICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVjdGVkIGxvb3AgYm9keSB3aXRoIC4uT01QIFND QU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZC1ibG9jay1zZXF1ZW5jZXMiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0KKyAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4 cGVjdGVkIGxvb3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJl ZCBibG9jayBzZXF1ZW5jZXMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KIGRvIGkgPSAx LCA2NAogZW5kIGRvCiAhJG9tcCB0YXJnZXQgdGVhbXMgbG9vcCByZWR1Y3Rpb24oaW5zY2Fu LCArOiByKSAgISB7IGRnLWVycm9yICInaW5zY2FuJyBSRURVQ1RJT04gY2xhdXNlIG9uIGNv bnN0cnVjdCBvdGhlciB0aGFuIERPLCBTSU1ELCBETyBTSU1ELCBQQVJBTExFTCBETywgUEFS QUxMRUwgRE8gU0lNRCIgfQotICAhIHsgZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwg ZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1 cmVkLWJsb2NrLXNlcXVlbmNlcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorICAhIHsg ZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGgg Li5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfQogZG8gaSA9IDEsIDY0CiBlbmQgZG8KICEkb21wIHRh cmdldCBwYXJhbGxlbCBsb29wIHJlZHVjdGlvbihpbnNjYW4sICs6IHIpICAhIHsgZGctZXJy b3IgIidpbnNjYW4nIFJFRFVDVElPTiBjbGF1c2Ugb24gY29uc3RydWN0IG90aGVyIHRoYW4g RE8sIFNJTUQsIERPIFNJTUQsIFBBUkFMTEVMIERPLCBQQVJBTExFTCBETyBTSU1EIiB9Ci0g ICEgeyBkZy1lcnJvciAiV2l0aCBJTlNDQU4gYXQgLjEuLCBleHBlY3RlZCBsb29wIGJvZHkg d2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQtYmxvY2stc2VxdWVuY2Vz IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CisgICEgeyBkZy1lcnJvciAiV2l0aCBJTlND QU4gYXQgLjEuLCBleHBlY3RlZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4g dHdvIHN0cnVjdHVyZWQgYmxvY2sgc2VxdWVuY2VzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9CiBkbyBpID0gMSwgNjQKIGVuZCBkbwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvcmVkdWN0aW9uNS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvcmVkdWN0aW9uNS5mOTAKaW5kZXggNDRmODlkODRjNzguLjg1NDkxZjBi NjQzIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvcmVkdWN0 aW9uNS5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3JlZHVjdGlv bjUuZjkwCkBAIC0yMSw3ICsyMSw3IEBAIGVuZCBkbwogISRvbXAgZW5kIHRhc2sgICEgeyBk Zy1lcnJvciAiVW5leHBlY3RlZCAhLk9NUCBFTkQgVEFTSyBzdGF0ZW1lbnQiIH0KIAogISRv bXAgdGFza2xvb3AgcmVkdWN0aW9uKGluc2NhbiwrOmEpIGluX3JlZHVjdGlvbigrOmIpICEg eyBkZy1lcnJvciAiJ2luc2NhbicgUkVEVUNUSU9OIGNsYXVzZSBvbiBjb25zdHJ1Y3Qgb3Ro ZXIgdGhhbiBETywgU0lNRCwgRE8gU0lNRCwgUEFSQUxMRUwgRE8sIFBBUkFMTEVMIERPIFNJ TUQiIH0KLSAgISB7IGRnLWVycm9yICIzNDogV2l0aCBJTlNDQU4gYXQgLjEuLCBleHBlY3Rl ZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQtYmxv Y2stc2VxdWVuY2VzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CisgICEgeyBkZy1lcnJv ciAiMzQ6IFdpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5P TVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfQogICAhIHsgZGctZXJyb3IgIidpbnNjYW4nIGFuZCBub24t J2luc2NhbicgJ3JlZHVjdGlvbicgY2xhdXNlcyBvbiB0aGUgc2FtZSBjb25zdHJ1Y3QiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0KIGRvIGk9MSwxMAogICBhID0gYSArIDEKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZWR1Y3Rpb242LmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZWR1Y3Rpb242LmY5MAppbmRleCA2 YmY2ODUxMzBhYi4uMzIxZjA5NmUwMmIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9yZWR1Y3Rpb242LmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvcmVkdWN0aW9uNi5mOTAKQEAgLTQsMTMgKzQsMTMgQEAgaW1wbGljaXQg bm9uZQogaW50ZWdlciA6OiBhLCBiLCBpCiBhID0gMAogCi0hJG9tcCBzaW1kIHJlZHVjdGlv bihpbnNjYW4sKzphKSAgISB7IGRnLWVycm9yICIzMDogV2l0aCBJTlNDQU4gYXQgLjEuLCBl eHBlY3RlZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVy ZWQtYmxvY2stc2VxdWVuY2VzIiB9CishJG9tcCBzaW1kIHJlZHVjdGlvbihpbnNjYW4sKzph KSAgISB7IGRnLWVycm9yICIzMDogV2l0aCBJTlNDQU4gYXQgLjEuLCBleHBlY3RlZCBsb29w IGJvZHkgd2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQgYmxvY2sgc2Vx dWVuY2VzIiB9CiBkbyBpPTEsMTAKICAgYSA9IGEgKyAxCiBlbmQgZG8KIAogISRvbXAgcGFy YWxsZWwKLSEkb21wIGRvIHJlZHVjdGlvbihpbnNjYW4sKzphKSAgISB7IGRnLWVycm9yICIy ODogV2l0aCBJTlNDQU4gYXQgLjEuLCBleHBlY3RlZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBT Q0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQtYmxvY2stc2VxdWVuY2VzIiB9CishJG9tcCBk byByZWR1Y3Rpb24oaW5zY2FuLCs6YSkgICEgeyBkZy1lcnJvciAiMjg6IFdpdGggSU5TQ0FO IGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3ZWVuIHR3 byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVlbmNlcyIgfQogZG8gaT0xLDEwCiAgIGEgPSBhICsg MQogZW5kIGRvCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv c2Nhbi0xLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9zY2FuLTEuZjkw CmluZGV4IGY5MWM3ZmFlMDlkLi5hNGY3MTJmMGQyZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb21wL3NjYW4tMS5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL3NjYW4tMS5mOTAKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdWJyb3V0 aW5lIGY4IChjLCBkLCBlLCBmKQogICB1c2UgbQogICBpbXBsaWNpdCBub25lCiAgIGludGVn ZXIgaSwgYyg2NCksIGQoNjQpLCBlKDY0KSwgZig2NCkKLSAgISRvbXAgZG8gcmVkdWN0aW9u IChpbnNjYW4sICs6IGEsIGIpCSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4s IGV4cGVjdGVkIGxvb3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0 dXJlZC1ibG9jay1zZXF1ZW5jZXMiIH0KKyAgISRvbXAgZG8gcmVkdWN0aW9uIChpbnNjYW4s ICs6IGEsIGIpCSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVjdGVk IGxvb3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZCBibG9j ayBzZXF1ZW5jZXMiIH0KICAgZG8gaSA9IDEsIDY0CiAgICAgYmxvY2sKICAgICAgIGEgPSBh ICsgYyhpKQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN1YnJvdXRpbmUgZjggKGMsIGQsIGUsIGYp CiAgICAgZW5kIGJsb2NrCiAgIGVuZCBkbwogCi0gICEkb21wIGRvIHJlZHVjdGlvbiAoaW5z Y2FuLCArOiBhLCBiKSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVj dGVkIGxvb3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZC1i bG9jay1zZXF1ZW5jZXMiIH0KKyAgISRvbXAgZG8gcmVkdWN0aW9uIChpbnNjYW4sICs6IGEs IGIpICAhIHsgZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBi b2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVl bmNlcyIgfQogICBkbyBpID0gMSwgNjQKICAgICBibG9jawogICAgICAgYSA9IGEgKyBjKGkp CkBAIC0yMDcsMTIgKzIwNywxMSBAQCBzdWJyb3V0aW5lIGY5CiAgIHVzZSBtCiAgIGltcGxp Y2l0IG5vbmUKICAgaW50ZWdlciBpCi0hIFRoZSBmaXJzdCBlcnJvciAoZXhpdCkgY2F1c2Vz IHR3byBmb2xsb3ctdXAgZXJyb3JzOgotICAhJG9tcCBzaW1kIHJlZHVjdGlvbiAoaW5zY2Fu LCArOiBhKSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVjdGVkIGxv b3AgYm9keSB3aXRoIC4uT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZC1ibG9jay1z ZXF1ZW5jZXMiIH0KKyAgISRvbXAgc2ltZCByZWR1Y3Rpb24gKGluc2NhbiwgKzogYSkKICAg ZG8gaSA9IDEsIDY0CiAgICAgaWYgKGkgPT0gMjMpICYKICAgICAgIGV4aXQgICEgeyBkZy1l cnJvciAiRVhJVCBzdGF0ZW1lbnQgYXQgLjEuIHRlcm1pbmF0aW5nIC4uT01QIERPIGxvb3Ai IH0gKi8KLSAgICAhJG9tcCBzY2FuIGV4Y2x1c2l2ZSAoYSkgISB7IGRnLWVycm9yICJVbmV4 cGVjdGVkIC4uT01QIFNDQU4gYXQgLjEuIG91dHNpZGUgbG9vcCBjb25zdHJ1Y3Qgd2l0aCAn aW5zY2FuJyBSRURVQ1RJT04gY2xhdXNlIiB9CisgICAgISRvbXAgc2NhbiBleGNsdXNpdmUg KGEpICAhIHsgZGctd2FybmluZyAiIS5PTVAgU0NBTiBhdCAuMS4gd2l0aCB6ZXJvIGV4ZWN1 dGFibGUgc3RhdGVtZW50cyBpbiBwcmVjZWRpbmcgc3RydWN0dXJlZCBibG9jayBzZXF1ZW5j ZSIgfQogICAgIGEgPSBhICsgMQogICBlbmQgZG8KIGVuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3NjYW4tOC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvc2Nhbi04LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYjcwNmJiYjZkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvc2Nhbi04LmY5MApAQCAtMCwwICsxLDk2IEBACitpbnRl Z2VyIGZ1bmN0aW9uIHMxIChhMSwgYTIsIGEzKSByZXN1bHQocikKKyAgaW1wbGljaXQgbm9u ZQorICBpbnRlZ2VyIDo6IGExLCBhMiwgYTMKKyAgaW50ZWdlciA6OiBpLCBqLCBrCisgIHBy b2NlZHVyZShpbnRlZ2VyKSA6OiBpaWkKKyAgCisgIHIgPSAwCisgICEkb21wIHNpbWQgY29s bGFwc2UoMykgcmVkdWN0aW9uIChpbnNjYW4sICs6cikKKyAgZG8gaSA9IDEsIGExCisgICAg ZG8gaiA9IDEsIGEyCisgICAgICBkbyBrID0gMSwgYTMKKyAgICAgICAgISRvbXAgc2NhbiBl eGNsdXNpdmUgKHIpICAhIHsgZGctd2FybmluZyAiIS5PTVAgU0NBTiBhdCAuMS4gd2l0aCB6 ZXJvIGV4ZWN1dGFibGUgc3RhdGVtZW50cyBpbiBwcmVjZWRpbmcgc3RydWN0dXJlZCBibG9j ayBzZXF1ZW5jZSIgfQorICAgICAgICBjYWxsIGYxICgyLCBrLCByKQorICAgICAgZW5kIGRv CisgICAgZW5kIGRvIAorICBlbmQgZG8KKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIHJl ZHVjdGlvbiAoaW5zY2FuLCArOnIpCisgIGRvIGkgPSAxLCBhMQorICAgIGRvIGogPSAxLCBh MgorICAgICAgZG8gayA9IDEsIGEzCisgICAgICAgIHIgPSByICsgaWlpIChpLCBqLCBrKQor ICAgICAgICAhJG9tcCBzY2FuIGV4Y2x1c2l2ZSAocikgICEgeyBkZy13YXJuaW5nICIhLk9N UCBTQ0FOIGF0IC4xLiB3aXRoIHplcm8gZXhlY3V0YWJsZSBzdGF0ZW1lbnRzIGluIHN1Y2Nl ZWRpbmcgc3RydWN0dXJlZCBibG9jayBzZXF1ZW5jZSIgfQorICAgICAgZW5kIGRvCisgICAg ZW5kIGRvIAorICBlbmQgZG8KKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIHJlZHVjdGlv biAoaW5zY2FuLCArOnIpCisgIGRvIGkgPSAxLCBhMQorICAgIGRvIGogPSAxLCBhMgorICAg ICAgZG8gayA9IDEsIGEzCisgICAgICAgICEkb21wIHNjYW4gaW5jbHVzaXZlIChyKQorICAg ICAgICAgICAhIHsgZGctd2FybmluZyAiIS5PTVAgU0NBTiBhdCAuMS4gd2l0aCB6ZXJvIGV4 ZWN1dGFibGUgc3RhdGVtZW50cyBpbiBwcmVjZWRpbmcgc3RydWN0dXJlZCBibG9jayBzZXF1 ZW5jZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorICAgICAgICAgICAhIHsgZGctd2Fy bmluZyAiIS5PTVAgU0NBTiBhdCAuMS4gd2l0aCB6ZXJvIGV4ZWN1dGFibGUgc3RhdGVtZW50 cyBpbiBzdWNjZWVkaW5nIHN0cnVjdHVyZWQgYmxvY2sgc2VxdWVuY2UiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0yIH0KKyAgICAgIGVuZCBkbworICAgIGVuZCBkbyAKKyAgZW5kIGRvCitl bmQgZnVuY3Rpb24KKworaW50ZWdlciBmdW5jdGlvbiBzMiAoYTEsIGEyLCBhMykgcmVzdWx0 KHIpCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciA6OiBhMSwgYTIsIGEzCisgIGludGVn ZXIgOjogaSwgaiwgaworICBwcm9jZWR1cmUoaW50ZWdlcikgOjogaWlpCisgIAorICByID0g MAorICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIHJlZHVjdGlvbiAoaW5zY2FuLCArOnIpICAh IHsgZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdp dGggIS5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVlbmNlcyIg fQorICBkbyBpID0gMSwgYTEKKyAgICBkbyBqID0gMSwgYTIKKyAgICAgIGRvIGsgPSAxLCBh MworICAgICAgICBjYWxsIGYxICgyLCBrLCByKQorICAgICAgICByID0gciArIGlpaSAoaSwg aiwgaykKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbyAKKyAgZW5kIGRvCisKKyAgciA9IDAK KyAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1Y3Rpb24gKGluc2NhbiwgKzpyKSAgISB7 IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVjdGVkIGxvb3AgYm9keSB3aXRo ICEuT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZCBibG9jayBzZXF1ZW5jZXMiIH0K KyAgZG8gaSA9IDEsIGExCisgICAgZG8gaiA9IDEsIGEyCisgICAgICBkbyBrID0gMSwgYTMK KyAgICAgIGVuZCBkbworICAgIGVuZCBkbyAKKyAgZW5kIGRvCisKKyAgciA9IDAKKyAgISRv bXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1Y3Rpb24gKGluc2NhbiwgKzpyKQorICBkbyBpID0g MSwgYTEKKyAgICBkbyBqID0gMSwgYTIKKyAgICAgIGRvIGsgPSAxLCBhMworICAgICAgICBj YWxsIGYxICgyLCBrLCByKQorICAgICAgICAhJG9tcCBzY2FuIGluY2x1c2l2ZSAocikKKyAg ICAgICAgISRvbXAgc2NhbiBpbmNsdXNpdmUgKHIpICAhIHsgZGctZXJyb3IgIlVuZXhwZWN0 ZWQgIS5PTVAgU0NBTiBhdCAuMS4gb3V0c2lkZSBsb29wIGNvbnN0cnVjdCB3aXRoICdpbnNj YW4nIFJFRFVDVElPTiBjbGF1c2UiIH0KKyAgICAgICAgciA9IHIgKyBpaWkgKGksIGosIGsp CisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8gCisgIGVuZCBkbworCisgICEkb21wIHNjYW4g aW5jbHVzaXZlIChyKSAgISB7IGRnLWVycm9yICJVbmV4cGVjdGVkICEuT01QIFNDQU4gYXQg LjEuIG91dHNpZGUgbG9vcCBjb25zdHJ1Y3Qgd2l0aCAnaW5zY2FuJyBSRURVQ1RJT04gY2xh dXNlIiB9CisKKyAgciA9IDAKKyAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSByZWR1Y3Rpb24g KGluc2NhbiwgKzpyKSAgISB7IGRnLWVycm9yICJXaXRoIElOU0NBTiBhdCAuMS4sIGV4cGVj dGVkIGxvb3AgYm9keSB3aXRoICEuT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZCBi bG9jayBzZXF1ZW5jZXMiIH0KKyAgZG8gaSA9IDEsIGExCisgICAgZG8gaiA9IDEsIGEyCisg ICAgICBkbyBrID0gMSwgYTMKKyAgICAgICAgY2FsbCBmMSAoMiwgaywgcikKKyAgICAgICAg YmxvY2sKKyAgICAgICAgICAhJG9tcCBzY2FuIGluY2x1c2l2ZSAocikgICEgeyBkZy1lcnJv ciAiVW5leHBlY3RlZCAhLk9NUCBTQ0FOIGF0IC4xLiBvdXRzaWRlIGxvb3AgY29uc3RydWN0 IHdpdGggJ2luc2NhbicgUkVEVUNUSU9OIGNsYXVzZSIgfQorICAgICAgICBlbmQgYmxvY2sK KyAgICAgICAgciA9IHIgKyBpaWkgKGksIGosIGspCisgICAgICBlbmQgZG8KKyAgICBlbmQg ZG8gCisgIGVuZCBkbworCisKK2VuZCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb21wL3Rhc2tsb29wLTIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL3Rhc2tsb29wLTIuZjkwCmluZGV4IDQxYjRkNmQyMTkxLi5kMjAw YTkzYmI0ZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3Rh c2tsb29wLTIuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXNr bG9vcC0yLmY5MApAQCAtMjEsMjQgKzIxLDI0IEBAIGRvIGkgPSAxLCA2NAogZW5kIGRvCiAK ICEkb21wIHRhc2tsb29wIHJlZHVjdGlvbihpbnNjYW4sICs6IHIpICAhIHsgZGctZXJyb3Ig IidpbnNjYW4nIFJFRFVDVElPTiBjbGF1c2Ugb24gY29uc3RydWN0IG90aGVyIHRoYW4gRE8s IFNJTUQsIERPIFNJTUQsIFBBUkFMTEVMIERPLCBQQVJBTExFTCBETyBTSU1EIiB9Ci1kbyBp ID0gMSwgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB7IGRnLWVycm9yICJPTVAg U0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkLWJsb2NrLXNlcXVlbmNlcyIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfQorZG8gaSA9IDEsIDY0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgeyBkZy1lcnJvciAiT01QIFNDQU4gYmV0d2VlbiB0d28gc3RydWN0dXJlZCBibG9j ayBzZXF1ZW5jZXMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KIGVuZCBkbwogISRvbXAg dGFza2xvb3Agc2ltZCByZWR1Y3Rpb24oaW5zY2FuLCArOiByKSAgISB7IGRnLWVycm9yICIn aW5zY2FuJyBSRURVQ1RJT04gY2xhdXNlIG9uIGNvbnN0cnVjdCBvdGhlciB0aGFuIERPLCBT SU1ELCBETyBTSU1ELCBQQVJBTExFTCBETywgUEFSQUxMRUwgRE8gU0lNRCIgfQotZG8gaSA9 IDEsIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB7IGRnLWVycm9yICJP TVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkLWJsb2NrLXNlcXVlbmNlcyIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfQorZG8gaSA9IDEsIDY0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB7IGRnLWVycm9yICJPTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1 cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogZW5kIGRv CiAhJG9tcCBtYXN0ZXIgdGFza2xvb3AgcmVkdWN0aW9uKGluc2NhbiwgKzogcikgISB7IGRn LWVycm9yICInaW5zY2FuJyBSRURVQ1RJT04gY2xhdXNlIG9uIGNvbnN0cnVjdCBvdGhlciB0 aGFuIERPLCBTSU1ELCBETyBTSU1ELCBQQVJBTExFTCBETywgUEFSQUxMRUwgRE8gU0lNRCIg fQotICAhIHsgZGctZXJyb3IgIldpdGggSU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBi b2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkLWJsb2NrLXNlcXVl bmNlcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorICAhIHsgZGctZXJyb3IgIldpdGgg SU5TQ0FOIGF0IC4xLiwgZXhwZWN0ZWQgbG9vcCBib2R5IHdpdGggLi5PTVAgU0NBTiBiZXR3 ZWVuIHR3byBzdHJ1Y3R1cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfQogZG8gaSA9IDEsIDY0CiBlbmQgZG8KICEkb21wIG1hc3RlciB0YXNrbG9vcCBz aW1kIHJlZHVjdGlvbihpbnNjYW4sICs6IHIpICAhIHsgZGctZXJyb3IgIidpbnNjYW4nIFJF RFVDVElPTiBjbGF1c2Ugb24gY29uc3RydWN0IG90aGVyIHRoYW4gRE8sIFNJTUQsIERPIFNJ TUQsIFBBUkFMTEVMIERPLCBQQVJBTExFTCBETyBTSU1EIiB9Ci0gICEgeyBkZy1lcnJvciAi V2l0aCBJTlNDQU4gYXQgLjEuLCBleHBlY3RlZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBTQ0FO IGJldHdlZW4gdHdvIHN0cnVjdHVyZWQtYmxvY2stc2VxdWVuY2VzIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9CisgICEgeyBkZy1lcnJvciAiV2l0aCBJTlNDQU4gYXQgLjEuLCBleHBl Y3RlZCBsb29wIGJvZHkgd2l0aCAuLk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQg YmxvY2sgc2VxdWVuY2VzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiBkbyBpID0gMSwg NjQKIGVuZCBkbwogISRvbXAgcGFyYWxsZWwgbWFzdGVyIHRhc2tsb29wIHJlZHVjdGlvbihp bnNjYW4sICs6IHIpICAhIHsgZGctZXJyb3IgIidpbnNjYW4nIFJFRFVDVElPTiBjbGF1c2Ug b24gY29uc3RydWN0IG90aGVyIHRoYW4gRE8sIFNJTUQsIERPIFNJTUQsIFBBUkFMTEVMIERP LCBQQVJBTExFTCBETyBTSU1EIiB9Ci1kbyBpID0gMSwgNjQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAhIHsgZGctZXJyb3IgIk9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVj dHVyZWQtYmxvY2stc2VxdWVuY2VzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CitkbyBp ID0gMSwgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHsgZGctZXJyb3Ig Ik9NUCBTQ0FOIGJldHdlZW4gdHdvIHN0cnVjdHVyZWQgYmxvY2sgc2VxdWVuY2VzIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9CiBlbmQgZG8KICEkb21wIHBhcmFsbGVsIG1hc3RlciB0 YXNrbG9vcCBzaW1kIHJlZHVjdGlvbihpbnNjYW4sICs6IHIpICAgISB7IGRnLWVycm9yICIn aW5zY2FuJyBSRURVQ1RJT04gY2xhdXNlIG9uIGNvbnN0cnVjdCBvdGhlciB0aGFuIERPLCBT SU1ELCBETyBTSU1ELCBQQVJBTExFTCBETywgUEFSQUxMRUwgRE8gU0lNRCIgfQotZG8gaSA9 IDEsIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB7IGRnLWVycm9yICJP TVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1cmVkLWJsb2NrLXNlcXVlbmNlcyIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfQorZG8gaSA9IDEsIDY0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB7IGRnLWVycm9yICJPTVAgU0NBTiBiZXR3ZWVuIHR3byBzdHJ1Y3R1 cmVkIGJsb2NrIHNlcXVlbmNlcyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogZW5kIGRv CiBlbmQKIApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1j b21tb24vc2Nhbi0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1v bi9zY2FuLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDE5 NTFhMzQ2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9zY2FuLTEuYwpAQCAtMCwwICsxLDY4IEBACisjZGVmaW5lIE4gMzAK KyNkZWZpbmUgTSAzCisKK2ludCBhW05dW01dLCBiW05dW01dLCBjW05dW01dOworCitpbnQK K21haW4oKQoreworICBpbnQgeCwgeSwgc2hpZnQ7CisgIGludCBqID0gMDsKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgYVtpXVswXSA9IChpKzEpKjMy OworICAgICAgYVtpXVsxXSA9IChpKzEpKjE3OworICAgICAgYVtpXVsyXSA9IChpKzEpKjEx OworICAgICAgYltpXVswXSA9IChpKzEpKjc7CisgICAgICBiW2ldWzFdID0gKGkrMSkqNTsK KyAgICAgIGJbaV1bMl0gPSAoaSsxKSozOworICAgIH0KKworICB4ID0gMDsKKyAgI3ByYWdt YSBvbXAgcGFyYWxsZWwgZm9yIHNpbWQgY29sbGFwc2UoMikgcmVkdWN0aW9uKGluc2Nhbiwr OiB4KSBwcml2YXRlKHNoaWZ0KQorICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKKyAg ICBmb3IgKGludCBqID0gMDsgaiA8IE07IGorKykKKyAgICAgIHsKKwl4ICs9IGFbaV1bal07 CisJeCArPSBiW2ldW2pdOworICAgICAgICAjcHJhZ21hIG9tcCBzY2FuIGluY2x1c2l2ZSh4 KQorICAgICAgICBzaGlmdCA9IGkgKyAyOSpqOworICAgICAgICBjW2ldW2pdID0geCArIHNo aWZ0OworICAgICAgfQorCisgIHkgPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkr KykKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IE07IGorKykKKyAgICAgIHsKKwl5ICs9IGFb aV1bal0gKyBiW2ldW2pdOworCWlmIChjW2ldW2pdICE9IHkgKyBpICsgMjkqaikKKwkgIF9f YnVpbHRpbl9hYm9ydCAoKTsKKyAgICAgIH0KKyAgaWYgKHggIT0geSkKKyAgICBfX2J1aWx0 aW5fYWJvcnQgKCk7CisKKyAgeCA9IDA7CisgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciBz aW1kIGNvbGxhcHNlKDIpIHJlZHVjdGlvbihpbnNjYW4sKzogeCkgcHJpdmF0ZShzaGlmdCkK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspCisgICAgZm9yIChpbnQgaiA9IDA7IGog PCBNOyBqKyspCisgICAgICB7CisJc2hpZnQgPSBpICsgMjkqajsKKwljW2ldW2pdID0geCAr IHNoaWZ0OworCSNwcmFnbWEgb21wIHNjYW4gZXhjbHVzaXZlKHgpCisJeCArPSBhW2ldW2pd OworCXggKz0gYltpXVtqXTsKKyAgICAgIH0KKworICB5ID0gMDsKKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBOOyBpKyspCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBNOyBqKyspCisgICAg ICB7CisJaWYgKGNbaV1bal0gIT0geSArIGkgKyAyOSpqKQorCSAgX19idWlsdGluX2Fib3J0 ICgpOworCXkgKz0gYVtpXVtqXSArIGJbaV1bal07CisgICAgICB9CisgIGlmICh4ICE9IHkp CisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0 IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL3NjYW4tMjMuYyBiL2xpYmdvbXAvdGVz dHN1aXRlL2xpYmdvbXAuYy9zY2FuLTIzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmU3NjgxYWQxYzM3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5jL3NjYW4tMjMuYwpAQCAtMCwwICsxLDEyMSBAQAorLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgc2l6ZTMycGx1cyB9ICovCisvKiBTYW1lIGFz IHNjYW4tOS5jLCBpbnN0ZWFkIG9mIHVzaW5nIHsgLi4uIH0gaXQgc2ltcGx5IHVzZXMgbXVs dGlwbGUKKyAgIGV4ZWN1dGFibGUgc3RtdCBiZWZvcmUgJ29tcCBzY2FuJy4gICovCisKK2V4 dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKK2ludCByLCBhWzEwMjRdLCBiWzEwMjRdLCB4LCB5 LCB6OworCitfX2F0dHJpYnV0ZV9fKChub2lwYSkpIHZvaWQKK2ZvbyAoaW50ICphLCBpbnQg KmIpCit7CisgICNwcmFnbWEgb21wIGZvciByZWR1Y3Rpb24gKGluc2NhbiwgKzpyKSBsYXN0 cHJpdmF0ZSAoY29uZGl0aW9uYWw6IHopIGZpcnN0cHJpdmF0ZSAoeCkgcHJpdmF0ZSAoeSkK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDI0OyBpKyspCisgICAgeworICAgICAgeSA9IGFb aV07CisgICAgICByICs9IHkgKyB4ICsgMTI7CisgICAgICAjcHJhZ21hIG9tcCBzY2FuIGlu Y2x1c2l2ZShyKQorICAgICAgYltpXSA9IHI7CisgICAgICBpZiAoKGkgJiAxKSA9PSAwICYm IGkgPCA5MzcpCisgICAgICAgIHogPSByOworICAgIH0KK30KKworX19hdHRyaWJ1dGVfXygo bm9pcGEpKSBpbnQKK2JhciAodm9pZCkKK3sKKyAgaW50IHMgPSAwOworICAjcHJhZ21hIG9t cCBwYXJhbGxlbAorICAjcHJhZ21hIG9tcCBmb3IgcmVkdWN0aW9uIChpbnNjYW4sICs6cykg Zmlyc3Rwcml2YXRlICh4KSBwcml2YXRlICh5KSBsYXN0cHJpdmF0ZSAoeikKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCAxMDI0OyBpKyspCisgICAgeworICAgICAgeSA9IDIgKiBhW2ldOyBz ICs9IHk7IHogPSB5OworICAgICAgI3ByYWdtYSBvbXAgc2NhbiBpbmNsdXNpdmUocykKKyAg ICAgIHkgPSBzOyBiW2ldID0geSArIHggKyAxMjsKKyAgICB9CisgIHJldHVybiBzOworfQor CitfX2F0dHJpYnV0ZV9fKChub2lwYSkpIHZvaWQKK2JheiAoaW50ICphLCBpbnQgKmIpCit7 CisgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciByZWR1Y3Rpb24gKGluc2NhbiwgKzpyKSBm aXJzdHByaXZhdGUgKHgpIGxhc3Rwcml2YXRlICh4KQorICBmb3IgKGludCBpID0gMDsgaSA8 IDEwMjQ7IGkrKykKKyAgICB7CisgICAgICByICs9IGFbaV0gKyB4ICsgMTI7IGlmIChpID09 IDEwMjMpIHggPSAyOTsKKyAgICAgICNwcmFnbWEgb21wIHNjYW4gaW5jbHVzaXZlKHIpCisg ICAgICBiW2ldID0gcjsKKyAgICB9Cit9CisKK19fYXR0cmlidXRlX18oKG5vaXBhKSkgaW50 CitxdXggKHZvaWQpCit7CisgIGludCBzID0gMDsKKyAgI3ByYWdtYSBvbXAgcGFyYWxsZWwg Zm9yIHJlZHVjdGlvbiAoaW5zY2FuLCArOnMpIGxhc3Rwcml2YXRlIChjb25kaXRpb25hbDog eCwgeSkKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDI0OyBpKyspCisgICAgeworICAgICAg cyArPSAyICogYVtpXTsgaWYgKChhW2ldICYgMSkgPT0gMSAmJiBpIDwgODI1KSB4ID0gYVtp XTsKKyAgICAgICNwcmFnbWEgb21wIHNjYW4gaW5jbHVzaXZlKHMpCisgICAgICBiW2ldID0g czsgaWYgKChhW2ldICYgMSkgPT0gMCAmJiBpIDwgODI5KSB5ID0gYVtpXTsKKyAgICB9Cisg IHJldHVybiBzOworfQorCitpbnQKK21haW4gKCkKK3sKKyAgaW50IHMgPSAwOworICB4ID0g LTEyOworICBmb3IgKGludCBpID0gMDsgaSA8IDEwMjQ7ICsraSkKKyAgICB7CisgICAgICBh W2ldID0gaTsKKyAgICAgIGJbaV0gPSAtMTsKKyAgICAgIGFzbSAoIiIgOiAiK2ciIChpKSk7 CisgICAgfQorICAjcHJhZ21hIG9tcCBwYXJhbGxlbAorICBmb28gKGEsIGIpOworICBpZiAo ciAhPSAxMDI0ICogMTAyMyAvIDIgfHwgeCAhPSAtMTIgfHwgeiAhPSBiWzkzNl0pCisgICAg YWJvcnQgKCk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAyNDsgKytpKQorICAgIHsKKyAg ICAgIHMgKz0gaTsKKyAgICAgIGlmIChiW2ldICE9IHMpCisJYWJvcnQgKCk7CisgICAgICBl bHNlCisJYltpXSA9IDI1OworICAgIH0KKyAgaWYgKGJhciAoKSAhPSAxMDI0ICogMTAyMyB8 fCB4ICE9IC0xMiB8fCB6ICE9IDIgKiAxMDIzKQorICAgIGFib3J0ICgpOworICBzID0gMDsK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDI0OyArK2kpCisgICAgeworICAgICAgcyArPSAy ICogaTsKKyAgICAgIGlmIChiW2ldICE9IHMpCisJYWJvcnQgKCk7CisgICAgICBlbHNlCisJ YltpXSA9IC0xOworICAgIH0KKyAgciA9IDA7CisgIGJheiAoYSwgYik7CisgIGlmIChyICE9 IDEwMjQgKiAxMDIzIC8gMiB8fCB4ICE9IDI5KQorICAgIGFib3J0ICgpOworICBzID0gMDsK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDI0OyArK2kpCisgICAgeworICAgICAgcyArPSBp OworICAgICAgaWYgKGJbaV0gIT0gcykKKwlhYm9ydCAoKTsKKyAgICAgIGVsc2UKKwliW2ld ID0gLTI1OworICAgIH0KKyAgaWYgKHF1eCAoKSAhPSAxMDI0ICogMTAyMyB8fCB4ICE9IDgy MyB8fCB5ICE9IDgyOCkKKyAgICBhYm9ydCAoKTsKKyAgcyA9IDA7CisgIGZvciAoaW50IGkg PSAwOyBpIDwgMTAyNDsgKytpKQorICAgIHsKKyAgICAgIHMgKz0gMiAqIGk7CisgICAgICBp ZiAoYltpXSAhPSBzKQorCWFib3J0ICgpOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYg LS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vc2Nhbi0yLmY5MCBi L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9zY2FuLTIuZjkwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yODE1ZWM3NmM4YwotLS0gL2Rldi9u dWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9zY2FuLTIuZjkw CkBAIC0wLDAgKzEsNTkgQEAKK2ltcGxpY2l0IG5vbmUKK2ludGVnZXIsIHBhcmFtZXRlciA6 OiBOID0gMzAKK2ludGVnZXIsIHBhcmFtZXRlciA6OiBNID0gMworCitpbnRlZ2VyIDo6IGEo TSxOKSwgYihNLE4pLCBjKE0sTikKK2ludGVnZXIgOjogeCwgeSwgc2hpZnQKK2ludGVnZXIg OjogaSwgagorCitkbyBpID0gMSwgTgorICBhKDEsaSkgPSBpKjMyCisgIGEoMixpKSA9IGkq MTcKKyAgYSgzLGkpID0gaSoxMQorICBiKDEsaSkgPSBpKjcKKyAgYigyLGkpID0gaSo1Cisg IGIoMyxpKSA9IGkqMworZW5kIGRvCisKK3ggPSAwCishJG9tcCBwYXJhbGxlbCBkbyBzaW1k IGNvbGxhcHNlKDIpIHJlZHVjdGlvbihpbnNjYW4sKzogeCkgcHJpdmF0ZShzaGlmdCkKK2Rv IGkgPSAxLCBOCisgIGRvIGogPSAxLCBNCisgICAgeCA9IHggKyBhKGosaSkKKyAgICB4ID0g eCArIGIoaixpKQorICAgICEkb21wIHNjYW4gaW5jbHVzaXZlKHgpCisgICAgc2hpZnQgPSBp ICsgMjkqagorICAgIGMoaixpKSA9IHggKyBzaGlmdDsKKyAgZW5kIGRvCitlbmQgZG8KKwor eSA9IDAKK2RvIGkgPSAxLCBOCisgIGRvIGogPSAxLCBNCisgICAgeSA9IHkgKyAgYShqLGkp ICsgYihqLGkpCisgICAgaWYgKGMoaixpKSAvPSB5ICsgaSArIDI5KmopIGVycm9yIHN0b3Ag MQorICBlbmQgZG8KK2VuZCBkbworaWYgKHggLz0geSkgZXJyb3Igc3RvcCAyCisKK3ggPSAw CishJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGNvbGxhcHNlKDIpIHJlZHVjdGlvbihpbnNjYW4s KzogeCkgcHJpdmF0ZShzaGlmdCkKK2RvIGkgPSAxLCBOCisgIGRvIGogPSAxLCBNCisgICAg c2hpZnQgPSBpICsgMjkqagorICAgIGMoaixpKSA9IHggKyBzaGlmdDsKKyAgICAhJG9tcCBz Y2FuIGV4Y2x1c2l2ZSh4KQorICAgIHggPSB4ICsgYShqLGkpCisgICAgeCA9IHggKyBiKGos aSkKKyAgZW5kIGRvCitlbmQgZG8KKworeSA9IDAKK2RvIGkgPSAxLCBOCisgIGRvIGogPSAx LCBNCisgICAgaWYgKGMoaixpKSAvPSB5ICsgaSArIDI5KmopIGVycm9yIHN0b3AgMQorICAg IHkgPSB5ICsgYShqLGkpICsgYihqLGkpCisgIGVuZCBkbworZW5kIGRvCitpZiAoeCAvPSB5 KSBlcnJvciBzdG9wIDIKK2VuZAo= --------------0PbhlWZGR97ZAllJL406nQXc--