From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 87FA33854145; Mon, 4 Jul 2022 16:09:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 87FA33854145 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.92,243,1650960000"; d="diff'?scan'208";a="78260007" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 04 Jul 2022 08:09:37 -0800 IronPort-SDR: GDajasietWPfycs9KXFO41LhwUDVfz/59GRIcTrDwcRBnVadxgjT55smlrmCbtkpSqPBz+dE74 9WlFDqeBC2BMgrXahaQLY5A/6PaQ7y4k4GQC0uFKTAlAsyRELhk97OlyEk90DNYsW/ukAVpKyn 5mT1wSCec2T3Sqz42G4prgByjJGzcsS8EhazAPTPkZZKEjS2Jbxcg0veJw4VzC/ZubA5nQYlBX ADzsENdVu7Jb4XemHMurxSTmNf1B2lvG6s1GNFibY1oXocK883w75fmhqBxUXvTcYfaxQCIjfG qeI= Content-Type: multipart/mixed; boundary="------------azW2Im0JeDcp8lUxVCOM8s40" Message-ID: Date: Mon, 4 Jul 2022 18:09:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [Patch] OpenMP/Fortran: Add support for OpenMP 5.2 linear clause syntax Content-Language: en-US To: Jakub Jelinek CC: gcc-patches , fortran References: <00106b18-d0f4-d449-73de-17831af2006a@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, 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 X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2022 16:09:42 -0000 --------------azW2Im0JeDcp8lUxVCOM8s40 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Jakub, thanks for the comment & spec referral. I have now updated the patch =E2=80= =93 and included the new C/Fortran testcase. On 04.07.22 16:53, Jakub Jelinek via Fortran wrote: > See OpenMP 5.2 [59:31-34]: > A modifier that is an expression must neither lexically match the name of= a simple modifier > defined for the clause that is an OpenMP keyword nor modifier-name parent= hesized-tokens, > where modifier-name is the modifier-name of a complex modifier defined fo= r the clause and > parenthesized-tokens is a token sequence that starts with ( and ends with= ). > > So, ref can't be step expression because it lexically matches the name of= a > simple modifier, so linear (var : ref) is equivalent to old style linear = (ref (var):1) > while e.g. linear (var : ref + 0) is equivalent to linear (var : step (re= f + 0)) I see. > You can certainly try to match "step ( %e ) )" or "step ( %e ) , " first, > those would handle the case of valid complex modifier. Done so + plus some more massage in order to support the following, added as C/Fortran testcase: > But, I think if there is > interface > integer function step (x, y, z) > integer :: x, y, z > end function step > end interface > then > linear (v : step (x, y, z)) > should be rejected, not accepted as valid > linear (v : step (step (x, y, z))) > > I think I should add: > int step (int x, int y, int z) { return x + y + z; } > > int > foo (int x) > { > int i; > #pragma omp parallel for linear (x : step (step (1, 2, 3))) > for (i =3D 0; i < 64; i++) > x +=3D 6; > return x; > } > > int > bar (int x) > { > int i; > #pragma omp parallel for linear (x : step (1, 2, 3)) /* { dg-err= or "expected" } */ > for (i =3D 0; i < 64; i++) > x +=3D 6; > return x; > } > as another testcase (where foo used to be invalid before and bar used to = be > valid). 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 --------------azW2Im0JeDcp8lUxVCOM8s40 Content-Type: text/x-patch; charset="UTF-8"; name="linear-v2.diff" Content-Disposition: attachment; filename="linear-v2.diff" Content-Transfer-Encoding: base64 T3Blbk1QL0ZvcnRyYW46IEFkZCBzdXBwb3J0IGZvciBPcGVuTVAgNS4yIGxpbmVhciBjbGF1 c2Ugc3ludGF4CgpGb3J0cmFuIHBhcnQgdG8gQy9DKysKY29tbWl0IHIxMy0xMDAyLWcwM2I3 MTQwNjMyM2RkYzA2NWIxZDc4MzdkOGI0M2IxN2U0YjA0OGI1CgpnY2MvZm9ydHJhbi9DaGFu Z2VMb2c6CgoJKiBnZm9ydHJhbi5oIChnZmNfb21wX25hbWVsaXN0KTogVXBkYXRlIGJ5IGNy ZWF0aW5nICdsaW5lYXInIHN0cnVjdCwKCW1vdmUgJ2xpbmVhcl9vcCcgYXMgJ29wJyB0byBp ZCBhbmQgYWRkICdvbGRfbW9kaWZpZXInIHRvIGl0LgoJKiBkdW1wLXBhcnNlLXRyZWUuY2Mg KHNob3dfb21wX25hbWVsaXN0KTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBtb2R1bGUuY2Mg KG1pb19vbXBfZGVjbGFyZV9zaW1kKTogTGlrZXdpc2UuCgkqIHRyYW5zLW9wZW5tcC5jYyAo Z2ZjX3RyYW5zX29tcF9jbGF1c2VzKTogTGlrZXdpc2UuCgkqIG9wZW5tcC5jYyAocmVzb2x2 ZV9vbXBfY2xhdXNlcyk6IExpa2V3aXNlOyBhY2NlcHQgbmV3LXN0eWxlCgkndmFsJyBtb2Rp ZmllciB3aXRoIGRvL3NpbWQuCgkoZ2ZjX21hdGNoX29tcF9jbGF1c2VzKTogSGFuZGxlIE9w ZW5NUCA1LjIgbGluZWFyIGNsYXVzZSBzeW50YXguCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkq IGxpYmdvbXAudGV4aSAoT3Blbk1QIDUuMik6IE1hcmsgbGluZWFyLWNsYXVzZSBjaGFuZ2Ug YXMgJ1knLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vZ29t cC9saW5lYXItNC5jOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5m OTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2xpbmVhci0zLmY5MDogTmV3IHRl c3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTQuZjkwOiBOZXcgdGVzdC4KCSogZ2Zv cnRyYW4uZGcvZ29tcC9saW5lYXItNS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9n b21wL2xpbmVhci02LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvbGluZWFy LTcuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItOC5mOTA6IE5l dyB0ZXN0LgoKQ28tYXV0aG9yZWQtYnk6IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5j b20+CgogZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vbW9kdWxlLmNjICAgICAgICAgICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAgICAgICAgICAgICAgICAgICAgICB8IDE5 MiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBnY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuY2MgICAgICAgICAgICAgICAgIHwgICA1ICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9nb21wL2xpbmVhci00LmMgIHwgIDI0ICsrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC9saW5lYXItMi5mOTAgfCAxMTIgKysrKysrKysrKysrKysrKwogZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci0zLmY5MCB8ICAzOSArKysrKysKIGdj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNC5mOTAgfCAxMDIgKysrKysr KysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTUuZjkw IHwgIDQzICsrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXIt Ni5mOTAgfCAgNTQgKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9s aW5lYXItNy5mOTAgfCAgMjcgKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2xpbmVhci04LmY5MCB8ICAzNCArKysrKwogbGliZ29tcC9saWJnb21wLnRleGkgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogMTQgZmlsZXMgY2hhbmdlZCwgNjIyIGluc2Vy dGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2R1 bXAtcGFyc2UtdHJlZS5jYyBiL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYwppbmRl eCA4NWMwYjk4ZjYxNS4uNTM1MjAwOGE2M2QgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2R1 bXAtcGFyc2UtdHJlZS5jYworKysgYi9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MK QEAgLTE0MjEsOCArMTQyMSw4IEBAIHNob3dfb21wX25hbWVsaXN0IChpbnQgbGlzdF90eXBl LCBnZmNfb21wX25hbWVsaXN0ICpuKQogCSAgY2FzZSBPTVBfTUFQX1JFTEVBU0U6IGZwdXRz ICgicmVsZWFzZToiLCBkdW1wZmlsZSk7IGJyZWFrOwogCSAgZGVmYXVsdDogYnJlYWs7CiAJ ICB9Ci0gICAgICBlbHNlIGlmIChsaXN0X3R5cGUgPT0gT01QX0xJU1RfTElORUFSKQotCXN3 aXRjaCAobi0+dS5saW5lYXJfb3ApCisgICAgICBlbHNlIGlmIChsaXN0X3R5cGUgPT0gT01Q X0xJU1RfTElORUFSICYmIG4tPnUubGluZWFyLm9sZF9tb2RpZmllcikKKwlzd2l0Y2ggKG4t PnUubGluZWFyLm9wKQogCSAgewogCSAgY2FzZSBPTVBfTElORUFSX1JFRjogZnB1dHMgKCJy ZWYoIiwgZHVtcGZpbGUpOyBicmVhazsKIAkgIGNhc2UgT01QX0xJTkVBUl9WQUw6IGZwdXRz ICgidmFsKCIsIGR1bXBmaWxlKTsgYnJlYWs7CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBzaG93 X29tcF9uYW1lbGlzdCAoaW50IGxpc3RfdHlwZSwgZ2ZjX29tcF9uYW1lbGlzdCAqbikKIAkg IGRlZmF1bHQ6IGJyZWFrOwogCSAgfQogICAgICAgZnByaW50ZiAoZHVtcGZpbGUsICIlcyIs IG4tPnN5bSA/IG4tPnN5bS0+bmFtZSA6ICJvbXBfYWxsX21lbW9yeSIpOwotICAgICAgaWYg KGxpc3RfdHlwZSA9PSBPTVBfTElTVF9MSU5FQVIgJiYgbi0+dS5saW5lYXJfb3AgIT0gT01Q X0xJTkVBUl9ERUZBVUxUKQorICAgICAgaWYgKGxpc3RfdHlwZSA9PSBPTVBfTElTVF9MSU5F QVIgJiYgbi0+dS5saW5lYXIub3AgIT0gT01QX0xJTkVBUl9ERUZBVUxUKQogCWZwdXRjICgn KScsIGR1bXBmaWxlKTsKICAgICAgIGlmIChuLT5leHByKQogCXsKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCmluZGV4IDQ2 M2Q5NjkyMjM2Li42OTZhYWRkN2RiNiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRy YW4uaAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0xMzQ1LDcgKzEzNDUsMTEg QEAgdHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdAogICAgICAgZ2ZjX29tcF9yZWR1 Y3Rpb25fb3AgcmVkdWN0aW9uX29wOwogICAgICAgZ2ZjX29tcF9kZXBlbmRfb3AgZGVwZW5k X29wOwogICAgICAgZ2ZjX29tcF9tYXBfb3AgbWFwX29wOwotICAgICAgZ2ZjX29tcF9saW5l YXJfb3AgbGluZWFyX29wOworICAgICAgc3RydWN0CisJeworCSAgRU5VTV9CSVRGSUVMRCAo Z2ZjX29tcF9saW5lYXJfb3ApIG9wOjQ7CisJICBib29sIG9sZF9tb2RpZmllcjsKKwl9IGxp bmVhcjsKICAgICAgIHN0cnVjdCBnZmNfY29tbW9uX2hlYWQgKmNvbW1vbjsKICAgICAgIGJv b2wgbGFzdHByaXZhdGVfY29uZGl0aW9uYWw7CiAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vbW9kdWxlLmNjIGIvZ2NjL2ZvcnRyYW4vbW9kdWxlLmNjCmluZGV4IDg1YWEx NTNiZDc3Li41ZGRhYmRjZmY0ZCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vbW9kdWxlLmNj CisrKyBiL2djYy9mb3J0cmFuL21vZHVsZS5jYwpAQCAtNDM4MywxMCArNDM4MywxMCBAQCBt aW9fb21wX2RlY2xhcmVfc2ltZCAoZ2ZjX25hbWVzcGFjZSAqbnMsIGdmY19vbXBfZGVjbGFy ZV9zaW1kICoqb2RzcCkKIAkgICAgfQogCSAgZm9yIChuID0gb2RzLT5jbGF1c2VzLT5saXN0 c1tPTVBfTElTVF9MSU5FQVJdOyBuOyBuID0gbi0+bmV4dCkKIAkgICAgewotCSAgICAgIGlm IChuLT51LmxpbmVhcl9vcCA9PSBPTVBfTElORUFSX0RFRkFVTFQpCisJICAgICAgaWYgKG4t PnUubGluZWFyLm9wID09IE9NUF9MSU5FQVJfREVGQVVMVCkKIAkJbWlvX25hbWUgKDQsIG9t cF9kZWNsYXJlX3NpbWRfY2xhdXNlcyk7CiAJICAgICAgZWxzZQotCQltaW9fbmFtZSAoMzIg KyBuLT51LmxpbmVhcl9vcCwgb21wX2RlY2xhcmVfc2ltZF9jbGF1c2VzKTsKKwkJbWlvX25h bWUgKDMyICsgbi0+dS5saW5lYXIub3AsIG9tcF9kZWNsYXJlX3NpbWRfY2xhdXNlcyk7CiAJ ICAgICAgbWlvX3N5bWJvbF9yZWYgKCZuLT5zeW0pOwogCSAgICAgIG1pb19leHByICgmbi0+ ZXhwcik7CiAJICAgIH0KQEAgLTQ0MzgsNyArNDQzOCw3IEBAIG1pb19vbXBfZGVjbGFyZV9z aW1kIChnZmNfbmFtZXNwYWNlICpucywgZ2ZjX29tcF9kZWNsYXJlX3NpbWQgKipvZHNwKQog CSAgICBjYXNlIDM0OgogCSAgICBjYXNlIDM1OgogCSAgICAgICpwdHJzWzFdID0gbiA9IGdm Y19nZXRfb21wX25hbWVsaXN0ICgpOwotCSAgICAgIG4tPnUubGluZWFyX29wID0gKGVudW0g Z2ZjX29tcF9saW5lYXJfb3ApICh0IC0gMzIpOworCSAgICAgIG4tPnUubGluZWFyLm9wID0g KGVudW0gZ2ZjX29tcF9saW5lYXJfb3ApICh0IC0gMzIpOwogCSAgICAgIHQgPSA0OwogCSAg ICAgIGdvdG8gZmluaXNoX25hbWVsaXN0OwogCSAgICB9CmRpZmYgLS1naXQgYS9nY2MvZm9y dHJhbi9vcGVubXAuY2MgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKaW5kZXggNTFiNDI5YTU5 N2MuLmYyYzAyMDJlNDQwIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MKKysr IGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCkBAIC0yMzI0LDYgKzIzMjQsNyBAQCBnZmNfbWF0 Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBvbXBfbWFzayBt YXNrLAogCSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9MSU5FQVIpCiAJICAgICAgJiYgZ2Zj X21hdGNoICgibGluZWFyICgiKSA9PSBNQVRDSF9ZRVMpCiAJICAgIHsKKwkgICAgICBib29s IG9sZF9saW5lYXJfbW9kaWZpZXIgPSBmYWxzZTsKIAkgICAgICBnZmNfb21wX2xpbmVhcl9v cCBsaW5lYXJfb3AgPSBPTVBfTElORUFSX0RFRkFVTFQ7CiAJICAgICAgZ2ZjX2V4cHIgKnN0 ZXAgPSBOVUxMOwogCkBAIC0yMzMxLDE3ICsyMzMyLDI2IEBAIGdmY19tYXRjaF9vbXBfY2xh dXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJCQkJ CSAgICAgICAmYy0+bGlzdHNbT01QX0xJU1RfTElORUFSXSwKIAkJCQkJICAgICAgIGZhbHNl LCBOVUxMLCAmaGVhZCkKIAkJICA9PSBNQVRDSF9ZRVMpCi0JCWxpbmVhcl9vcCA9IE9NUF9M SU5FQVJfUkVGOworCQl7CisJCSAgbGluZWFyX29wID0gT01QX0xJTkVBUl9SRUY7CisJCSAg b2xkX2xpbmVhcl9tb2RpZmllciA9IHRydWU7CisJCX0KIAkgICAgICBlbHNlIGlmIChnZmNf bWF0Y2hfb21wX3ZhcmlhYmxlX2xpc3QgKCIgdmFsICgiLAogCQkJCQkJICAgICZjLT5saXN0 c1tPTVBfTElTVF9MSU5FQVJdLAogCQkJCQkJICAgIGZhbHNlLCBOVUxMLCAmaGVhZCkKIAkJ ICAgICAgID09IE1BVENIX1lFUykKLQkJbGluZWFyX29wID0gT01QX0xJTkVBUl9WQUw7CisJ CXsKKwkJICBsaW5lYXJfb3AgPSBPTVBfTElORUFSX1ZBTDsKKwkJICBvbGRfbGluZWFyX21v ZGlmaWVyID0gdHJ1ZTsKKwkJfQogCSAgICAgIGVsc2UgaWYgKGdmY19tYXRjaF9vbXBfdmFy aWFibGVfbGlzdCAoIiB1dmFsICgiLAogCQkJCQkJICAgICZjLT5saXN0c1tPTVBfTElTVF9M SU5FQVJdLAogCQkJCQkJICAgIGZhbHNlLCBOVUxMLCAmaGVhZCkKIAkJICAgICAgID09IE1B VENIX1lFUykKLQkJbGluZWFyX29wID0gT01QX0xJTkVBUl9VVkFMOworCQl7CisJCSAgbGlu ZWFyX29wID0gT01QX0xJTkVBUl9VVkFMOworCQkgIG9sZF9saW5lYXJfbW9kaWZpZXIgPSB0 cnVlOworCQl9CiAJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0 ICgiIiwKIAkJCQkJCSAgICAmYy0+bGlzdHNbT01QX0xJU1RfTElORUFSXSwKIAkJCQkJCSAg ICBmYWxzZSwgJmVuZF9jb2xvbiwgJmhlYWQpCkBAIC0yMzY0LDE0ICsyMzc0LDE0MyBAQCBn ZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBvbXBf bWFzayBtYXNrLAogCQkgICAgICBicmVhazsKIAkJICAgIH0KIAkJfQotCSAgICAgIGlmIChl bmRfY29sb24gJiYgZ2ZjX21hdGNoICgiICVlICkiLCAmc3RlcCkgIT0gTUFUQ0hfWUVTKQor CSAgICAgIGdmY19nb2JibGVfd2hpdGVzcGFjZSAoKTsKKwkgICAgICBpZiAob2xkX2xpbmVh cl9tb2RpZmllciAmJiBlbmRfY29sb24pCiAJCXsKLQkJICBnZmNfZnJlZV9vbXBfbmFtZWxp c3QgKCpoZWFkLCBmYWxzZSk7Ci0JCSAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOwot CQkgICpoZWFkID0gTlVMTDsKLQkJICBicmVhazsKKwkJICBpZiAoZ2ZjX21hdGNoICgiICVl ICkiLCAmc3RlcCkgIT0gTUFUQ0hfWUVTKQorCQkgICAgeworCQkgICAgICBnZmNfZnJlZV9v bXBfbmFtZWxpc3QgKCpoZWFkLCBmYWxzZSk7CisJCSAgICAgIGdmY19jdXJyZW50X2xvY3Vz ID0gb2xkX2xvYzsKKwkJICAgICAgKmhlYWQgPSBOVUxMOworCQkgICAgICBnb3RvIGVycm9y OworCQkgICAgfQogCQl9Ci0JICAgICAgZWxzZSBpZiAoIWVuZF9jb2xvbikKKwkgICAgICBl bHNlIGlmIChlbmRfY29sb24pCisJCXsKKwkJICBib29sIGhhc19lcnJvciA9IGZhbHNlOwor CQkgIGJvb2wgaGFzX21vZGlmaWVycyA9IGZhbHNlOworCQkgIGJvb2wgaGFzX3N0ZXAgPSBm YWxzZTsKKwkJICBib29sIGR1cGxpY2F0ZV9zdGVwID0gZmFsc2U7CisJCSAgYm9vbCBkdXBs aWNhdGVfbW9kID0gZmFsc2U7CisJCSAgd2hpbGUgKHRydWUpCisJCSAgICB7CisJCSAgICAg IG9sZF9sb2MgPSBnZmNfY3VycmVudF9sb2N1czsKKwkJICAgICAgaWYgKGdmY19tYXRjaCAo InZhbCApIikgPT0gTUFUQ0hfWUVTKQorCQkJeworCQkJICBpZiAobGluZWFyX29wICE9IE9N UF9MSU5FQVJfREVGQVVMVCkKKwkJCSAgICB7CisJCQkgICAgICBkdXBsaWNhdGVfbW9kID0g dHJ1ZTsKKwkJCSAgICAgIGJyZWFrOworCQkJICAgIH0KKwkJCSAgbGluZWFyX29wID0gT01Q X0xJTkVBUl9WQUw7CisJCQkgIGhhc19tb2RpZmllcnMgPSB0cnVlOworCQkJICBicmVhazsK KwkJCX0KKwkJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgidmFsICwgIikgPT0gTUFUQ0hf WUVTKQorCQkJeworCQkJICBpZiAobGluZWFyX29wICE9IE9NUF9MSU5FQVJfREVGQVVMVCkK KwkJCSAgICB7CisJCQkgICAgICBkdXBsaWNhdGVfbW9kID0gdHJ1ZTsKKwkJCSAgICAgIGJy ZWFrOworCQkJICAgIH0KKwkJCSAgbGluZWFyX29wID0gT01QX0xJTkVBUl9WQUw7CisJCQkg IGhhc19tb2RpZmllcnMgPSB0cnVlOworCQkJICBjb250aW51ZTsKKwkJCX0KKwkJICAgICAg ZWxzZSBpZiAoZ2ZjX21hdGNoICgidXZhbCApIikgPT0gTUFUQ0hfWUVTKQorCQkJeworCQkJ ICBpZiAobGluZWFyX29wICE9IE9NUF9MSU5FQVJfREVGQVVMVCkKKwkJCSAgICB7CisJCQkg ICAgICBkdXBsaWNhdGVfbW9kID0gdHJ1ZTsKKwkJCSAgICAgIGJyZWFrOworCQkJICAgIH0K KwkJCSAgbGluZWFyX29wID0gT01QX0xJTkVBUl9VVkFMOworCQkJICBoYXNfbW9kaWZpZXJz ID0gdHJ1ZTsKKwkJCSAgYnJlYWs7CisJCQl9CisJCSAgICAgIGVsc2UgaWYgKGdmY19tYXRj aCAoInV2YWwgLCAiKSA9PSBNQVRDSF9ZRVMpCisJCQl7CisJCQkgIGlmIChsaW5lYXJfb3Ag IT0gT01QX0xJTkVBUl9ERUZBVUxUKQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0ZV9t b2QgPSB0cnVlOworCQkJICAgICAgYnJlYWs7CisJCQkgICAgfQorCQkJICBsaW5lYXJfb3Ag PSBPTVBfTElORUFSX1VWQUw7CisJCQkgIGhhc19tb2RpZmllcnMgPSB0cnVlOworCQkJICBj b250aW51ZTsKKwkJCX0KKwkJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgicmVmICkiKSA9 PSBNQVRDSF9ZRVMpCisJCQl7CisJCQkgIGlmIChsaW5lYXJfb3AgIT0gT01QX0xJTkVBUl9E RUZBVUxUKQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0ZV9tb2QgPSB0cnVlOworCQkJ ICAgICAgYnJlYWs7CisJCQkgICAgfQorCQkJICBsaW5lYXJfb3AgPSBPTVBfTElORUFSX1JF RjsKKwkJCSAgaGFzX21vZGlmaWVycyA9IHRydWU7CisJCQkgIGJyZWFrOworCQkJfQorCQkg ICAgICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJyZWYgLCAiKSA9PSBNQVRDSF9ZRVMpCisJCQl7 CisJCQkgIGlmIChsaW5lYXJfb3AgIT0gT01QX0xJTkVBUl9ERUZBVUxUKQorCQkJICAgIHsK KwkJCSAgICAgIGR1cGxpY2F0ZV9tb2QgPSB0cnVlOworCQkJICAgICAgYnJlYWs7CisJCQkg ICAgfQorCQkJICBsaW5lYXJfb3AgPSBPTVBfTElORUFSX1JFRjsKKwkJCSAgaGFzX21vZGlm aWVycyA9IHRydWU7CisJCQkgIGNvbnRpbnVlOworCQkJfQorCQkgICAgICBlbHNlIGlmIChn ZmNfbWF0Y2ggKCJzdGVwICggJWUgKSApIiwgJnN0ZXApID09IE1BVENIX1lFUykKKwkJCXsK KwkJCSAgaWYgKGhhc19zdGVwKQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0ZV9zdGVw ID0gdHJ1ZTsKKwkJCSAgICAgIGJyZWFrOworCQkJICAgIH0KKwkJCSAgaGFzX21vZGlmaWVy cyA9IGhhc19zdGVwID0gdHJ1ZTsKKwkJCSAgYnJlYWs7CisJCQl9CisJCSAgICAgIGVsc2Ug aWYgKGdmY19tYXRjaCAoInN0ZXAgKCAlZSApICwgIiwgJnN0ZXApID09IE1BVENIX1lFUykK KwkJCXsKKwkJCSAgaWYgKGhhc19zdGVwKQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0 ZV9zdGVwID0gdHJ1ZTsKKwkJCSAgICAgIGJyZWFrOworCQkJICAgIH0KKwkJCSAgaGFzX21v ZGlmaWVycyA9IGhhc19zdGVwID0gdHJ1ZTsKKwkJCSAgY29udGludWU7CisJCQl9CisJCSAg ICAgIGVsc2UgaWYgKCFoYXNfbW9kaWZpZXJzCisJCQkgICAgICAgJiYgZ2ZjX21hdGNoICgi JWUgKSIsICZzdGVwKSA9PSBNQVRDSF9ZRVMpCisJCQl7CisJCQkgIGlmICgoc3RlcC0+ZXhw cl90eXBlID09IEVYUFJfRlVOQ1RJT04KKwkJCQl8fCBzdGVwLT5leHByX3R5cGUgPT0gRVhQ Ul9WQVJJQUJMRSkKKwkJCSAgICAgICYmIHN0cmNtcCAoc3RlcC0+c3ltdHJlZS0+bmFtZSwg InN0ZXAiKSA9PSAwKQorCQkJICAgIHsKKwkJCSAgICAgIGdmY19jdXJyZW50X2xvY3VzID0g b2xkX2xvYzsKKwkJCSAgICAgIGdmY19tYXRjaCAoInN0ZXAgKCIpOworCQkJICAgICAgaGFz X2Vycm9yID0gdHJ1ZTsKKwkJCSAgICB9CisJCQkgIGJyZWFrOworCQkJfQorCQkgICAgICBo YXNfZXJyb3IgPSB0cnVlOworCQkgICAgICBicmVhazsKKwkJICAgIH0KKwkJICBpZiAoZHVw bGljYXRlX21vZCB8fCBkdXBsaWNhdGVfc3RlcCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vy cm9yICgiTXVsdGlwbGUgJXFzIG1vZGlmaWVycyBzcGVjaWZpZWQgYXQgJUMiLAorCQkJCSBk dXBsaWNhdGVfbW9kID8gImxpbmVhciIgOiAic3RlcCIpOworCQkgICAgICBoYXNfZXJyb3Ig PSB0cnVlOworCQkgICAgfQorCQkgIGlmIChoYXNfZXJyb3IpCisJCSAgICB7CisJCSAgICAg IGdmY19mcmVlX29tcF9uYW1lbGlzdCAoKmhlYWQsIGZhbHNlKTsKKwkJICAgICAgKmhlYWQg PSBOVUxMOworCQkgICAgICBnb3RvIGVycm9yOworCQkgICAgfQorCQl9CisJICAgICAgZWxz ZQogCQl7CiAJCSAgc3RlcCA9IGdmY19nZXRfY29uc3RhbnRfZXhwciAoQlRfSU5URUdFUiwK IAkJCQkJCWdmY19kZWZhdWx0X2ludGVnZXJfa2luZCwKQEAgLTIzNzksOSArMjUxOCwxMiBA QCBnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBv bXBfbWFzayBtYXNrLAogCQkgIG1wel9zZXRfc2kgKHN0ZXAtPnZhbHVlLmludGVnZXIsIDEp OwogCQl9CiAJICAgICAgKCpoZWFkKS0+ZXhwciA9IHN0ZXA7Ci0JICAgICAgaWYgKGxpbmVh cl9vcCAhPSBPTVBfTElORUFSX0RFRkFVTFQpCisJICAgICAgaWYgKGxpbmVhcl9vcCAhPSBP TVBfTElORUFSX0RFRkFVTFQgfHwgb2xkX2xpbmVhcl9tb2RpZmllcikKIAkJZm9yIChnZmNf b21wX25hbWVsaXN0ICpuID0gKmhlYWQ7IG47IG4gPSBuLT5uZXh0KQotCQkgIG4tPnUubGlu ZWFyX29wID0gbGluZWFyX29wOworCQkgIHsKKwkJICAgIG4tPnUubGluZWFyLm9wID0gbGlu ZWFyX29wOworCQkgICAgbi0+dS5saW5lYXIub2xkX21vZGlmaWVyID0gb2xkX2xpbmVhcl9t b2RpZmllcjsKKwkJICB9CiAJICAgICAgY29udGludWU7CiAJICAgIH0KIAkgIGlmICgobWFz ayAmIE9NUF9DTEFVU0VfTElOSykKQEAgLTc0MzksMjggKzc1ODEsMzggQEAgcmVzb2x2ZV9v bXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVz ZXMsCiAJCSAgICBicmVhazsKIAkJICBjYXNlIE9NUF9MSVNUX0xJTkVBUjoKIAkJICAgIGlm IChjb2RlCi0JCQkmJiBuLT51LmxpbmVhcl9vcCAhPSBPTVBfTElORUFSX0RFRkFVTFQKLQkJ CSYmIG4tPnUubGluZWFyX29wICE9IGxpbmVhcl9vcCkKKwkJCSYmIG4tPnUubGluZWFyLm9w ICE9IE9NUF9MSU5FQVJfREVGQVVMVAorCQkJJiYgbi0+dS5saW5lYXIub3AgIT0gbGluZWFy X29wKQogCQkgICAgICB7Ci0JCQlnZmNfZXJyb3IgKCJMSU5FQVIgY2xhdXNlIG1vZGlmaWVy IHVzZWQgb24gRE8gb3IgU0lNRCIKLQkJCQkgICAiIGNvbnN0cnVjdCBhdCAlTCIsICZuLT53 aGVyZSk7Ci0JCQlsaW5lYXJfb3AgPSBuLT51LmxpbmVhcl9vcDsKKwkJCWlmIChuLT51Lmxp bmVhci5vbGRfbW9kaWZpZXIpCisJCQkgIHsKKwkJCSAgICBnZmNfZXJyb3IgKCJMSU5FQVIg Y2xhdXNlIG1vZGlmaWVyIHVzZWQgb24gRE8gb3IgIgorCQkJCSAgICAgICAiU0lNRCBjb25z dHJ1Y3QgYXQgJUwiLCAmbi0+d2hlcmUpOworCQkJICAgIGxpbmVhcl9vcCA9IG4tPnUubGlu ZWFyLm9wOworCQkJICB9CisJCQllbHNlIGlmIChuLT51LmxpbmVhci5vcCAhPSBPTVBfTElO RUFSX1ZBTCkKKwkJCSAgeworCQkJICAgIGdmY19lcnJvciAoIkxJTkVBUiBjbGF1c2UgbW9k aWZpZXIgb3RoZXIgdGhhbiBWQUwgIgorCQkJCSAgICAgICAidXNlZCBvbiBETyBvciBTSU1E IGNvbnN0cnVjdCBhdCAlTCIsCisJCQkJICAgICAgICZuLT53aGVyZSk7CisJCQkgICAgbGlu ZWFyX29wID0gbi0+dS5saW5lYXIub3A7CisJCQkgIH0KIAkJICAgICAgfQogCQkgICAgZWxz ZSBpZiAob21wX2NsYXVzZXMtPm9yZGVyZWRjKQogCQkgICAgICBnZmNfZXJyb3IgKCJMSU5F QVIgY2xhdXNlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoICIKIAkJCQkgIk9SREVSRUQgY2xh dXNlIHdpdGggYXJndW1lbnQgYXQgJUwiLAogCQkJCSAmbi0+d2hlcmUpOwotCQkgICAgZWxz ZSBpZiAobi0+dS5saW5lYXJfb3AgIT0gT01QX0xJTkVBUl9SRUYKKwkJICAgIGVsc2UgaWYg KG4tPnUubGluZWFyLm9wICE9IE9NUF9MSU5FQVJfUkVGCiAJCQkgICAgICYmIG4tPnN5bS0+ dHMudHlwZSAhPSBCVF9JTlRFR0VSKQogCQkgICAgICBnZmNfZXJyb3IgKCJMSU5FQVIgdmFy aWFibGUgJXFzIG11c3QgYmUgSU5URUdFUiAiCiAJCQkJICJhdCAlTCIsIG4tPnN5bS0+bmFt ZSwgJm4tPndoZXJlKTsKLQkJICAgIGVsc2UgaWYgKChuLT51LmxpbmVhcl9vcCA9PSBPTVBf TElORUFSX1JFRgotCQkJICAgICAgfHwgbi0+dS5saW5lYXJfb3AgPT0gT01QX0xJTkVBUl9V VkFMKQorCQkgICAgZWxzZSBpZiAoKG4tPnUubGluZWFyLm9wID09IE9NUF9MSU5FQVJfUkVG CisJCQkgICAgICB8fCBuLT51LmxpbmVhci5vcCA9PSBPTVBfTElORUFSX1VWQUwpCiAJCQkg ICAgICYmIG4tPnN5bS0+YXR0ci52YWx1ZSkKIAkJICAgICAgZ2ZjX2Vycm9yICgiTElORUFS IGR1bW15IGFyZ3VtZW50ICVxcyB3aXRoIFZBTFVFICIKIAkJCQkgImF0dHJpYnV0ZSB3aXRo ICVzIG1vZGlmaWVyIGF0ICVMIiwKIAkJCQkgbi0+c3ltLT5uYW1lLAotCQkJCSBuLT51Lmxp bmVhcl9vcCA9PSBPTVBfTElORUFSX1JFRgorCQkJCSBuLT51LmxpbmVhci5vcCA9PSBPTVBf TElORUFSX1JFRgogCQkJCSA/ICJSRUYiIDogIlVWQUwiLCAmbi0+d2hlcmUpOwogCQkgICAg ZWxzZSBpZiAobi0+ZXhwcikKIAkJICAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4v dHJhbnMtb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCmluZGV4IGM2 YTU4NGQzNmYyLi5kZTI3ZWQ1MmMwMiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMt b3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwpAQCAtMjc1MSw3 ICsyNzUxLDcgQEAgZ2ZjX3RyYW5zX29tcF9jbGF1c2VzIChzdG10YmxvY2tfdCAqYmxvY2ss IGdmY19vbXBfY2xhdXNlcyAqY2xhdXNlcywKIAkJCQkJCSAgICAgIE9NUF9DTEFVU0VfTElO RUFSKTsKIAkJCU9NUF9DTEFVU0VfREVDTCAobm9kZSkgPSB0OwogCQkJb21wX2NsYXVzZV9s aW5lYXJfa2luZCBraW5kOwotCQkJc3dpdGNoIChuLT51LmxpbmVhcl9vcCkKKwkJCXN3aXRj aCAobi0+dS5saW5lYXIub3ApCiAJCQkgIHsKIAkJCSAgY2FzZSBPTVBfTElORUFSX0RFRkFV TFQ6CiAJCQkgICAga2luZCA9IE9NUF9DTEFVU0VfTElORUFSX0RFRkFVTFQ7CkBAIC0yNzY5 LDcgKzI3NjksOCBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMgKHN0bXRibG9ja190ICpibG9j aywgZ2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogCQkJICAgIGdjY191bnJlYWNoYWJsZSAo KTsKIAkJCSAgfQogCQkJT01QX0NMQVVTRV9MSU5FQVJfS0lORCAobm9kZSkgPSBraW5kOwot CQkJT01QX0NMQVVTRV9MSU5FQVJfT0xEX0xJTkVBUl9NT0RJRklFUiAobm9kZSkgPSAxOwor CQkJT01QX0NMQVVTRV9MSU5FQVJfT0xEX0xJTkVBUl9NT0RJRklFUiAobm9kZSkKKwkJCSAg PSBuLT51LmxpbmVhci5vbGRfbW9kaWZpZXI7CiAJCQlpZiAobGFzdF9zdGVwX2V4cHIgJiYg bGFzdF9zdGVwID09IE5VTExfVFJFRSkKIAkJCSAgewogCQkJICAgIGlmICghZGVjbGFyZV9z aW1kKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9saW5l YXItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9saW5lYXItNC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZTU5NTIxM2MzOAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbGluZWFy LTQuYwpAQCAtMCwwICsxLDI0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZm9wZW5tcCIgfSAqLworCitpbnQgc3RlcCAoaW50IHgsIGludCB5LCBp bnQgeikgeyByZXR1cm4geCArIHkgKyB6OyB9CisKK2ludAorZm9vIChpbnQgeCkKK3sKKyAg aW50IGk7CisgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciBsaW5lYXIgKHggOiBzdGVwIChz dGVwICgxLCAyLCAzKSkpCisgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKQorICAgIHggKz0g NjsKKyAgcmV0dXJuIHg7Cit9CisKK2ludAorYmFyIChpbnQgeCkKK3sKKyAgaW50IGk7Cisg ICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciBsaW5lYXIgKHggOiBzdGVwICgxLCAyLCAzKSkJ LyogeyBkZy1lcnJvciAiZXhwZWN0ZWQiIH0gKi8KKyAgZm9yIChpID0gMDsgaSA8IDY0OyBp KyspCisgICAgeCArPSA2OworICByZXR1cm4geDsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvbGluZWFyLTIuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4wNWYwMDdmZDVjMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5mOTAKQEAgLTAsMCArMSwxMTIgQEAK KyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItZm9wZW5tcCAtZmR1bXAt dHJlZS1vcmlnaW5hbCIgfQorCittb2R1bGUgbQorICBpbXBsaWNpdCBub25lICh0eXBlLCBl eHRlcm5hbCkKKworICBpbnRlZ2VyIGkKKworICBpbnRlcmZhY2UKKyAgICBpbnRlZ2VyIGZ1 bmN0aW9uIGJhciAoeCwgeSwgeikKKyAgICAgIGludGVnZXIsIHZhbHVlIDo6IHgsIHksIHoK KyAgICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHggOiB2YWwsIHN0ZXAgKDEpKSBs aW5lYXIgKHkgOiBzdGVwICgyKSkKKyAgICBlbmQKKworICAgIGludGVnZXIgZnVuY3Rpb24g YmF6ICh4LCB5LCB6KQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeCwgeSwgegorICAgICAg ISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAoeCA6IHN0ZXAgKDEpLCB2YWwpCisgICAgZW5k CisKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIHF1eCAoeCwgdmFsKQorICAgICAgaW50ZWdlciwg dmFsdWUgOjogeCwgdmFsCisgICAgICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh2YWwg KHgpIDogdmFsKSB1bmlmb3JtICh2YWwpCisgICAgZW5kCisKKyAgICBpbnRlZ2VyIGZ1bmN0 aW9uIGNvcmdlICh4LCB2YWwpCisgICAgICBpbnRlZ2VyLCB2YWx1ZSA6OiB4LCB2YWwKKyAg ICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHggOiB2YWwsIHN0ZXAgKHZhbCkpIHVu aWZvcm0gKHZhbCkKKyAgICBlbmQKKworICAgIGludGVnZXIgZnVuY3Rpb24gZ3JhdWx0ICh4 KQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeAorICAgICAgISRvbXAgZGVjbGFyZSBzaW1k IGxpbmVhciAoeCA6IHZhbCkKKyAgICBlbmQKKworICAgIGludGVnZXIgZnVuY3Rpb24gc3Rl cCAoeCkKKyAgICAgIGludGVnZXIsIHZhbHVlIDo6IHgKKyAgICBlbmQKKyAgZW5kIGludGVy ZmFjZQorCitjb250YWlucworCitzdWJyb3V0aW5lIGZvbyAoeCx5KQorICBpbnRlZ2VyIDo6 IHgsIHkKKyAgaW50ZWdlciA6OiB2YWwKKworICB2YWwgPSAxCisKKyAgISRvbXAgc2ltZCBs aW5lYXIgKGk6IHN0ZXAgKDMpKQorICBkbyBpID0gMCwgMzIsIDMKKyAgZW5kIGRvCisKKyAg ISRvbXAgc2ltZCBsaW5lYXIgKGk6IHZhbCwgc3RlcCAoMykpCisgIGRvIGkgPSAwLCAzMiwg MworICBlbmQgZG8KKworICAhJG9tcCBzaW1kIGxpbmVhciAoeDogc3RlcCAoeSArIDEpKQor ICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAg c2ltZCBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSwgdmFsKQorICBkbyBpID0gMCwgOQorICAg IHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gbGluZWFy ICh4OiBzdGVwICh5ICsgMSkpCisgIGRvIGkgPSAwLCA5CisgICAgeCA9IHggKyB5ICsgMQor ICBlbmQgZG8KKworICAhJG9tcCBwYXJhbGxlbCBkbyBsaW5lYXIgKHg6IHZhbCwgc3RlcCAo eSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisK KyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKGk6IHN0ZXAgKDMpKQorICBkbyBp ID0gMCwgMzIsIDMKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5l YXIgKGk6IHN0ZXAgKDMpLCB2YWwpCisgIGRvIGkgPSAwLCAzMiwgMworICBlbmQgZG8KKwor ICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGxpbmVhciAoeDogc3RlcCAoeSArIDEpKQorICBk byBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFy YWxsZWwgZG8gc2ltZCBsaW5lYXIgKHg6IHZhbCwgc3RlcCAoeSArIDEpKQorICBkbyBpID0g MCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwg ZG8gc2ltZCBsaW5lYXIgKGk6IHZhbCArIDApCisgIGRvIGkgPSAwLCA5CisgIGVuZCBkbwor CisgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGluZWFyIChpOiBzdGVwICgxKSAqIDEpCisg IGRvIGkgPSAwLCA5CisgIGVuZCBkbworZW5kCitlbmQgbW9kdWxlCisKKyEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBwYXJhbGxlbCIgOCAib3Jp Z2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIiNwcmFn bWEgb21wIGZvciBub3dhaXQiIDYgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBmb3IgbGluZWFyXFwoeDpEXFwuXFsw LTlcXStcXCkgbm93YWl0IiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgZm9yIGxpbmVhclxcKHg6dmFsLHN0ZXBc XChEXFwuXFswLTlcXStcXClcXCkgbm93YWl0IiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJc XChjb3VudFxcLlxbMC05XF06MVxcKSBsaW5lYXJcXChpOjNcXCkiIDIgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBz aW1kIGxpbmVhclxcKGNvdW50XFwuXFswLTlcXToxXFwpIGxpbmVhclxcKGk6dmFsLHN0ZXBc XCgzXFwpXFwpIiAyICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJcXChpOjFcXCkgbGluZWFyXFwo eDpEXFwuXFswLTlcXStcXCkiIDIgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBzaW1kIGxpbmVhclxcKGk6MVxcKSBs aW5lYXJcXCh4OnZhbCxzdGVwXFwoRFxcLlxbMC05XF0rXFwpXFwpIiAyICJvcmlnaW5hbCIg fSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAg c2ltZCBsaW5lYXJcXChpOkRcXC5cWzAtOVxdK1xcKSIgMiAib3JpZ2luYWwiIH0gfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci0zLmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMy5mOTAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRlZTg3YjFhODk5Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci0zLmY5MApA QCAtMCwwICsxLDM5IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAi LWZvcGVubXAiIH0KKworbW9kdWxlIG0yCisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVy bmFsKQorCisgIGludGVnZXIgOjogdmFsCisKK2NvbnRhaW5zCitpbnRlZ2VyIGZ1bmN0aW9u IHN0ZXAgKHgpCisgIGludGVnZXIsIHZhbHVlIDo6IHgKK2VuZAorc3Vicm91dGluZSBmb28o eCkKKyAgaW50ZWdlciwgdmFsdWUgOjogeAorICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFy ICh2YWwgKHgpIDogc3RlcCAoMSkpCSEgeyBkZy1lcnJvciAicmVxdWlyZXMgYSBjb25zdGFu dCBpbnRlZ2VyIGxpbmVhci1zdGVwIGV4cHJlc3Npb24gb3IgZHVtbXkgYXJndW1lbnQiIH0K K2VuZAorZW5kIG1vZHVsZSBtMgorCisKK21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUgKHR5 cGUsIGV4dGVybmFsKQorCisgIGludGVnZXIgOjogdmFsCisKK2NvbnRhaW5zCitpbnRlZ2Vy IGZ1bmN0aW9uIHN0ZXAgKHgpCisgIGludGVnZXIsIHZhbHVlIDo6IHgKKyAgISRvbXAgZGVj bGFyZSBzaW1kIGxpbmVhciAodmFsICh4KSA6IHN0ZXAgKDEpKQkhIHsgZGctZXJyb3IgIkZh aWxlZCB0byBtYXRjaCBjbGF1c2UiIH0KK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGJhciAo eCwgeSwgeikKKyAgaW50ZWdlciwgdmFsdWUgOjogeCwgeSwgegorICAhJG9tcCBkZWNsYXJl IHNpbWQgbGluZWFyICh2YWwgKHgpIDogdmFsKQkJISB7IGRnLWVycm9yICJyZXF1aXJlcyBh IGNvbnN0YW50IGludGVnZXIgbGluZWFyLXN0ZXAgZXhwcmVzc2lvbiBvciBkdW1teSBhcmd1 bWVudCIgfQorZW5kCisKK2ludGVnZXIgZnVuY3Rpb24gYmF6ICh4LCB5LCB6KQorICBpbnRl Z2VyLCB2YWx1ZSA6OiB4LCB5LCB6CitlbmQKK2VuZCBtb2R1bGUgbQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci00LmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxYzQxYjNhYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci00LmY5MApAQCAtMCwwICsx LDEwMiBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1mb3Blbm1w IiB9CisKK21vZHVsZSBtCitpbXBsaWNpdCBub25lCisKK2ludGVnZXIgOjogaQorCitpbnRl cmZhY2UKKyAgaW50ZWdlciBmdW5jdGlvbiBiYXIgKHgsICB5LCB6KQorICAgIGludGVnZXIg OjogeCwgeQorICAgIGludGVnZXIsIHZhbHVlIDo6IHoKKyAgICAhISRvbXAgZGVjbGFyZSBz aW1kIGxpbmVhciAoeCA6IHJlZiwgc3RlcCAoMSkpIGxpbmVhciAoeSA6IHN0ZXAgKDIpLCB1 dmFsKQorICBlbmQKKworICBpbnRlZ2VyIGZ1bmN0aW9uIGJheiAoeCwgeSwgeikKKyAgICBp bnRlZ2VyIDo6IHgKKyAgICBpbnRlZ2VyLCB2YWx1ZSA6OiB5LCB6CisgICAgISEkb21wIGRl Y2xhcmUgc2ltZCBsaW5lYXIgKHggOiBzdGVwICgxKSwgdXZhbCkKKyAgZW5kCisKKyAgaW50 ZWdlciBmdW5jdGlvbiBxdXggKHgsIHJlZikKKyAgICBpbnRlZ2VyIDo6IHgKKyAgICBpbnRl Z2VyLCB2YWx1ZSA6OiByZWYKKyAgICAhISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAocmVm ICh4KSA6IHJlZikgdW5pZm9ybSAocmVmKQorICBlbmQKKworICBpbnRlZ2VyIGZ1bmN0aW9u IGNvcmdlICh4LCByZWYpCisgICAgaW50ZWdlciA6OiB4CisgICAgaW50ZWdlciwgdmFsdWUg OjogcmVmCisgICAgISEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHggOiByZWYsIHN0ZXAg KHJlZikpIHVuaWZvcm0gKHJlZikKKyAgZW5kCisKKyAgaW50ZWdlciBmdW5jdGlvbiBncmF1 bHQgKHgpCisgICAgaW50ZWdlciA6OiB4CisgICAgISEkb21wIGRlY2xhcmUgc2ltZCBsaW5l YXIgKHggOiByZWYpCisgIGVuZAorCisgIGludGVnZXIgZnVuY3Rpb24gd2FsZG8gKHgpCisg ICAgaW50ZWdlciA6OiB4CisgICAgISEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHggOiB1 dmFsKQorICBlbmQKK2VuZCBpbnRlcmZhY2UKKworY29udGFpbnMKKworaW50ZWdlciBmdW5j dGlvbiBzdGVwICh4KQorICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgIHN0ZXAgPSB4CitlbmQK Kworc3Vicm91dGluZSBmb28gKHgsIHkpCisgIGludGVnZXIgOjogeCwgeQorICAhISRvbXAg c2ltZCBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSkKKyAgZG8gaSA9IDAsIDkKKyAgICB4ID0g eCArIHkgKyAxCisgIGVuZCBkbworCisgICEhJG9tcCBzaW1kIGxpbmVhciAoeDogdmFsLCBz dGVwICh5ICsgMSkpCisgIGRvIGkgPSAwLCA5CisgICAgeCA9IHggKyB5ICsgMQorICBlbmQg ZG8KKworICAhISRvbXAgcGFyYWxsZWwgZG8gbGluZWFyICh4OiBzdGVwICh5ICsgMSkpCisg IGRvIGkgPSAwLCA5CisgICAgeCA9IHggKyB5ICsgMQorICBlbmQgZG8KKworICAhISRvbXAg cGFyYWxsZWwgZG8gbGluZWFyICh4OiBzdGVwICh5ICsgMSksIHZhbCkKKyAgZG8gaSA9IDAs IDkKKyAgICB4ID0geCArIHkgKyAxCisgIGVuZCBkbworCisgICEhJG9tcCBwYXJhbGxlbCBk byBzaW1kIGxpbmVhciAoeDogc3RlcCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHgg PSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGlu ZWFyICh4OiB2YWwsIHN0ZXAgKHkgKyAxKSkKKyAgZG8gaSA9IDAsIDkKKyAgICB4ID0geCAr IHkgKyAxCisgIGVuZCBkbworCisgICEhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGxpbmVhciAo eDogc3RlcCAoMSkgKyAwKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgc3RlcCAoMSkg KyAwCisgIGVuZCBkbworCisgIGJsb2NrCisgICAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IHJl ZiA9IDEsIHV2YWwgPSAyCisgICAgISEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGluZWFyICh4 OiByZWYgKyAwKQorICAgIGRvIGkgPSAwLCA5CisgICAgICB4ID0geCArIHJlZiArIDAKKyAg ICBlbmQgZG8KKworICAgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGluZWFyICh4OiB1dmFs ICogMSkKKyAgICBkbyBpID0gMCwgOQorICAgICAgeCA9IHggKyB1dmFsCisgICAgZW5kIGRv CisgIGVuZCBibG9jaworZW5kCitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9saW5lYXItNS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvbGluZWFyLTUuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5iMDA0OTJkNGI1OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9saW5lYXItNS5mOTAKQEAgLTAsMCArMSw0MyBAQAorISB7IGRnLWRv IGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIiB9CisKK21vZHVsZSBtCitp bXBsaWNpdCBub25lCitpbnRlZ2VyIDo6IGkKKworY29udGFpbnMKKworc3Vicm91dGluZSBm b28gKHgsIHkpCisgIGludGVnZXIgOjogeCwgeQorCisgICEkb21wIHNpbWQgbGluZWFyICh4 OiBzdGVwICh5ICsgMSksIHJlZikJCSEgeyBkZy1lcnJvciAiTElORUFSIGNsYXVzZSBtb2Rp ZmllciBvdGhlciB0aGFuIFZBTCB1c2VkIG9uIERPIG9yIFNJTUQgY29uc3RydWN0IiB9Cisg IGRvIGkgPSAwLCAxMAorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAg c2ltZCBsaW5lYXIgKHg6IHV2YWwsIHN0ZXAgKHkgKyAxKSkJCSEgeyBkZy1lcnJvciAiTElO RUFSIGNsYXVzZSBtb2RpZmllciBvdGhlciB0aGFuIFZBTCB1c2VkIG9uIERPIG9yIFNJTUQg Y29uc3RydWN0IiB9CisgIGRvIGkgPSAwLCAxMAorICAgIHggPSB4ICsgeSArIDEKKyAgZW5k IGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gbGluZWFyICh4OiByZWYsIHN0ZXAgKHkgKyAx KSkJISB7IGRnLWVycm9yICJMSU5FQVIgY2xhdXNlIG1vZGlmaWVyIG90aGVyIHRoYW4gVkFM IHVzZWQgb24gRE8gb3IgU0lNRCBjb25zdHJ1Y3QiIH0KKyAgZG8gaSA9IDAsIDEwCisgICAg eCA9IHggKyB5ICsgMQorICBlbmQgZG8KKworICAhJG9tcCBwYXJhbGxlbCBkbyBsaW5lYXIg KHg6IHN0ZXAgKHkgKyAxKSwgdXZhbCkJISB7IGRnLWVycm9yICJMSU5FQVIgY2xhdXNlIG1v ZGlmaWVyIG90aGVyIHRoYW4gVkFMIHVzZWQgb24gRE8gb3IgU0lNRCBjb25zdHJ1Y3QiIH0K KyAgZG8gaSA9IDAsIDEwCisgICAgeCA9IHggKyB5ICsgMQorICBlbmQgZG8KKworICAhJG9t cCBwYXJhbGxlbCBkbyBzaW1kIGxpbmVhciAoeDogc3RlcCAoeSArIDEpLCByZWYpCSEgeyBk Zy1lcnJvciAiTElORUFSIGNsYXVzZSBtb2RpZmllciBvdGhlciB0aGFuIFZBTCB1c2VkIG9u IERPIG9yIFNJTUQgY29uc3RydWN0IiB9CisgIGRvIGkgPSAwLCAxMAorICAgIHggPSB4ICsg eSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKHg6 IHV2YWwsIHN0ZXAgKHkgKyAxKSkJISB7IGRnLWVycm9yICJMSU5FQVIgY2xhdXNlIG1vZGlm aWVyIG90aGVyIHRoYW4gVkFMIHVzZWQgb24gRE8gb3IgU0lNRCBjb25zdHJ1Y3QiIH0KKyAg ZG8gaSA9IDAsIDEwCisgICAgeCA9IHggKyB5ICsgMQorICBlbmQgZG8KK2VuZAorZW5kCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTYuZjkw IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci02LmY5MApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTc2OTNiYTZkZTEKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTYuZjkw CkBAIC0wLDAgKzEsNTQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25z ICItZm9wZW5tcCIgfQorCittb2R1bGUgbQoraW1wbGljaXQgbm9uZQoraW50ZWdlciwgcGFy YW1ldGVyIDo6IHZhbCA9IDEKK2ludGVnZXIsIHBhcmFtZXRlciA6OiByZWYgPSAyCitpbnRl Z2VyLCBwYXJhbWV0ZXIgOjogdXZhbCA9IDMKKworaW50ZXJmYWNlCisgIGludGVnZXIgZnVu Y3Rpb24gZm9vICh4LCB5LCB6KQorICAgIGltcG9ydAorICAgIGltcGxpY2l0IG5vbmUKKyAg ICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgICAgaW50ZWdlciA6OiB5LCB6CisgICAgISRvbXAg ZGVjbGFyZSBzaW1kIGxpbmVhciAodmFsICh4KSA6IHN0ZXAgKDEpKSBsaW5lYXIgKHJlZiAo eSkgOiBzdGVwICgyKSkgbGluZWFyICh1dmFsICh6KSA6IHN0ZXAgKDMpKQorCishIFNURVAg aXMgYSBmdW5jdGlvbiAtIHRodXM6CishIHsgZGctZXJyb3IgIid4JyBpbiBMSU5FQVIgY2xh dXNlIGF0IC4xLiByZXF1aXJlcyBhIGNvbnN0YW50IGludGVnZXIgbGluZWFyLXN0ZXAgZXhw cmVzc2lvbiBvciBkdW1teSBhcmd1bWVudCBzcGVjaWZpZWQgaW4gVU5JRk9STSBjbGF1c2Ui ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0zIH0KKyEgeyBkZy1lcnJvciAiJ3knIGluIExJTkVB UiBjbGF1c2UgYXQgLjEuIHJlcXVpcmVzIGEgY29uc3RhbnQgaW50ZWdlciBsaW5lYXItc3Rl cCBleHByZXNzaW9uIG9yIGR1bW15IGFyZ3VtZW50IHNwZWNpZmllZCBpbiBVTklGT1JNIGNs YXVzZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTQgfQorISB7IGRnLWVycm9yICIneicgaW4g TElORUFSIGNsYXVzZSBhdCAuMS4gcmVxdWlyZXMgYSBjb25zdGFudCBpbnRlZ2VyIGxpbmVh ci1zdGVwIGV4cHJlc3Npb24gb3IgZHVtbXkgYXJndW1lbnQgc3BlY2lmaWVkIGluIFVOSUZP Uk0gY2xhdXNlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tNSB9CisKKyAgZW5kCisKKyAgaW50 ZWdlciBmdW5jdGlvbiBiYXIgKHgsIHksIHopCisgICAgaW1wb3J0CisgICAgaW1wbGljaXQg bm9uZQorICAgIGludGVnZXIsIHZhbHVlIDo6IHgKKyAgICBpbnRlZ2VyIDo6IHksIHoKKyAg ICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh2YWwgKHgpIDogdmFsKSBsaW5lYXIgKHJl ZiAoeSkgOiByZWYpIGxpbmVhciAodXZhbCAoeikgOiB1dmFsKQorICBlbmQKKworICBpbnRl Z2VyIGZ1bmN0aW9uIGJheiAoeCwgeSwgeikKKyAgICBpbXBvcnQKKyAgICBpbXBsaWNpdCBu b25lCisgICAgaW50ZWdlciwgdmFsdWUgOjogeAorICAgIGludGVnZXIgOjogeSwgegorICAg ICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHZhbCAoeCkgOiByZWYpIGxpbmVhciAocmVm ICh5KSA6IHV2YWwpIGxpbmVhciAodXZhbCAoeikgOiB2YWwpCisgIGVuZAorCisgIGludGVn ZXIgZnVuY3Rpb24gcXV4ICh4LCB5LCB6KQorICAgIGltcG9ydAorICAgIGltcGxpY2l0IG5v bmUKKyAgICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgICAgaW50ZWdlciA6OiB5LCB6CisgICAg ISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAodmFsICh4KSA6IHV2YWwpIGxpbmVhciAocmVm ICh5KSA6IHZhbCkgbGluZWFyICh1dmFsICh6KSA6IHJlZikKKyAgZW5kCitlbmQgaW50ZXJm YWNlCitjb250YWlucworICBpbnRlZ2VyIGZ1bmN0aW9uIHN0ZXAgKHgpCisgICAgaW50ZWdl ciwgdmFsdWUgOjogeAorICAgICBzdGVwID0geAorICBlbmQKK2VuZCBtb2R1bGUKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNy5mOTAgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTcuZjkwCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZTc2M2E5MmNhNgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNy5mOTAKQEAg LTAsMCArMSwyNyBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1m b3Blbm1wIiB9CisKK21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFs KQorCisgIGludGVnZXIgaQorCisgIGludGVyZmFjZQorICAgIGludGVnZXIgZnVuY3Rpb24g czEgKHgsIHksIHopCisgICAgICBpbnRlZ2VyLCB2YWx1ZSA6OiB4LCB5LCB6CisgICAgICAh JG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh4IDogdmFsLCBzdGVwICgxKSwgdmFsKSAgISB7 IGRnLWVycm9yICJNdWx0aXBsZSAnbGluZWFyJyBtb2RpZmllcnMgc3BlY2lmaWVkIiB9Cisg ICAgZW5kCisKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIHMyICh4LCB5LCB6KQorICAgICAgaW50 ZWdlciwgdmFsdWUgOjogeCwgeSwgegorICAgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVh ciAoeCA6IHZhbCwgc3RlcCAoMSksIHN0ZXAoMikpICAhIHsgZGctZXJyb3IgIk11bHRpcGxl ICdzdGVwJyBtb2RpZmllcnMgc3BlY2lmaWVkIiB9CisgICAgZW5kCisKKyAgICBpbnRlZ2Vy IGZ1bmN0aW9uIHMzICh4LCB5LCB6KQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeCwgeSwg egorICAgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAoeCA6IHZhbCwgcmVmLCBzdGVw KDIpKSAgISB7IGRnLWVycm9yICJNdWx0aXBsZSAnbGluZWFyJyBtb2RpZmllcnMgc3BlY2lm aWVkIiB9CisgICAgZW5kCisKKyAgZW5kIGludGVyZmFjZQorCitlbmQgbW9kdWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTguZjkwIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci04LmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzI3NGE1YmQxZTQKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTguZjkwCkBA IC0wLDAgKzEsMzQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICIt Zm9wZW5tcCIgfQorCittb2R1bGUgbQorICBpbXBsaWNpdCBub25lICh0eXBlLCBleHRlcm5h bCkKKworICBpbnRlcmZhY2UKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIHN0ZXAgKHgsIHksIHop CisgICAgICBpbnRlZ2VyIDo6IHgsIHksIHoKKyAgICBlbmQgZnVuY3Rpb24gc3RlcAorICBl bmQgaW50ZXJmYWNlCisKK2NvbnRhaW5zCisKK2ludGVnZXIgZnVuY3Rpb24gZm9vICh4KQor ICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgIGludGVnZXIgOjogaQorICAhJG9tcCBwYXJhbGxl bCBkbyBsaW5lYXIgKHggOiBzdGVwIChzdGVwICgxLCAyLCAzKSkpCisgIGRvIGkgPSAwLCA2 MworICAgIHggPSB4ICsgNgorICBlbmQgZG8KKyAgZm9vID0geAorZW5kCisKK2ludGVnZXIg ZnVuY3Rpb24gYmFyICh4KQorICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgIGludGVnZXIgOjog aQorICAhJG9tcCBwYXJhbGxlbCBkbyBsaW5lYXIgKHggOiBzdGVwICgxLCAyLCAzKSkJISB7 IGRnLWVycm9yICI0MDogSW52YWxpZCBjaGFyYWN0ZXIgaW4gbmFtZSIgfQorICBkbyBpID0g MCwgNjMKKyAgICB4ID0geCArIDYKKyAgZW5kIGRvCisgIGJhciA9IHgKK2VuZAorZW5kIG1v ZHVsZQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLnRleGkgYi9saWJnb21wL2xpYmdv bXAudGV4aQppbmRleCAzOTQyNmZmN2ZiZi4uZTg4ZmU4OWE1YjEgMTAwNjQ0Ci0tLSBhL2xp YmdvbXAvbGliZ29tcC50ZXhpCisrKyBiL2xpYmdvbXAvbGliZ29tcC50ZXhpCkBAIC0zNjMs NyArMzYzLDcgQEAgdG8gYWRkcmVzcyBvZiBtYXRjaGluZyBtYXBwZWQgbGlzdCBpdGVtIHBl ciA1LjEsIFNlY3QuIDIuMjEuNy4yIEB0YWIgTiBAdGFiCiBAaXRlbSBDbGF1c2VzIG9uIEBj b2Rle2VuZH0gZGlyZWN0aXZlIGNhbiBiZSBvbiBkaXJlY3RpdmUgQHRhYiBOIEB0YWIKIEBp dGVtIERlcHJlY2F0aW9uIG9mIG5vLWFyZ3VtZW50IEBjb2Rle2Rlc3Ryb3l9IGNsYXVzZSBv biBAY29kZXtkZXBvYmp9CiAgICAgICBAdGFiIE4gQHRhYgotQGl0ZW0gQGNvZGV7bGluZWFy fSBjbGF1c2Ugc3ludGF4IGNoYW5nZXMgYW5kIEBjb2Rle3N0ZXB9IG1vZGlmaWVyIEB0YWIg UCBAdGFiIG9ubHkgQy9DKysKK0BpdGVtIEBjb2Rle2xpbmVhcn0gY2xhdXNlIHN5bnRheCBj aGFuZ2VzIGFuZCBAY29kZXtzdGVwfSBtb2RpZmllciBAdGFiIFkgQHRhYgogQGl0ZW0gRGVw cmVjYXRpb24gb2YgbWludXMgb3BlcmF0b3IgZm9yIHJlZHVjdGlvbnMgQHRhYiBOIEB0YWIK IEBpdGVtIERlcHJlY2F0aW9uIG9mIHNlcGFyYXRpbmcgQGNvZGV7bWFwfSBtb2RpZmllcnMg d2l0aG91dCBjb21tYSBAdGFiIE4gQHRhYgogQGl0ZW0gQGNvZGV7ZGVjbGFyZSBtYXBwZXJ9 IHdpdGggaXRlcmF0b3IgYW5kIEBjb2Rle3ByZXNlbnR9IG1vZGlmaWVycwo= --------------azW2Im0JeDcp8lUxVCOM8s40--