From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by sourceware.org (Postfix) with ESMTPS id 3DA4F3857C4F; Mon, 31 Oct 2022 20:29:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3DA4F3857C4F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1667248167; bh=AtBbK4tBeVoR3RRlP4HmoXgvuh4Xg/DEnUTPC6l6RD0=; h=X-UI-Sender-Class:Date:Subject:To:References:From:In-Reply-To; b=tm3BhdElMk2uHnwLhNvblFypraoc5ciS26lkgBRa2E73JsL9fIQr4Wjcm+3bE4FkA 1oZmY1D/eGWJND0hPXCL6yZPpZ3rfT1bktY9jPrG9s3SOvYIU80MaFDWJ0ZWjsnhLj EKUW+Kh3UKcyS5Ej4juLy9r2zYu84SXHDaRVW+fV3r0dEab1qSOaDYXYwWuPKIOhmK n2L437SANM0Brd7qesAJtz4a9s4JWpnihmiafz9/vdyUtPdpaNVCeZwQjmIwF0sy1f dMD7oFFn1Ks3Oiirif0Vz7kRvtxqAWnx0i8WuAa5CKJl75fWbvErZUJL7oCWi2CCnX X3Z6GSrsPmdiA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([93.207.84.203]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpDNf-1pOcye2CJ5-00qh3B; Mon, 31 Oct 2022 21:29:27 +0100 Content-Type: multipart/mixed; boundary="------------71z2Lc0ViuJlEPrwl9RIxowR" Message-ID: <93a5f029-4411-3424-f6ee-3b2bcf210050@gmx.de> Date: Mon, 31 Oct 2022 21:29:26 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: [PATCH, v2] Fortran: ordering of hidden procedure arguments [PR107441] To: Mikael Morin , fortran , gcc-patches Newsgroups: gmane.comp.gcc.fortran,gmane.comp.gcc.patches References: <7d8ddf07-e66d-2678-de99-0e575c70ea17@orange.fr> <327319ac-4ef9-1e48-e993-57113d802d3b@orange.fr> <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> Content-Language: en-US From: Harald Anlauf In-Reply-To: <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> X-Provags-ID: V03:K1:mYTPaxhXQg3Ghmd9SrFIZG9vA5pTW7C2StiQ3TC8qvDK5gOiChK s+vTFCqLOoibVUIC6mIBf+6ogGMzAmFzWzgkhinNBHxmU5Trqg1yzazfADT/qjGzY+mEZcm BVWy7yUUc1wtaorPx+OPO2riIlepB5j6Y5oe9M8iOUTRTrHEnGkdFQ6MvHekFBWUST9hv4i TT2PmzuueM4gqBBdRGZRQ== UI-OutboundReport: notjunk:1;M01:P0:/a0LZbGdQOY=;U+hyKcTTYLQ/mnKTDxrA4rpEbxM sSrMKsglPbVyNqhEz0hWf9Qu3WurOOxIeO6+oypYEJd2CFu3YoahlohpJQhrGY/bvC9/7dsNl q9V4W5MpIGz2sHOwbKxpEtFMrlROYWhv43svoh7xGoNevEJltX7+/kJTYTfyb5Oq6ERD0WKzY /8dwg8S9HPLFX/oh7yuh4JEuJVARZwpLws4gO/Pozc5iq9W7v782iePA7P6n9N9drGz8ot1wx vMdxVc65aGuwCbGVmPR+YJZdQfi95NJrR7zz11ea4kJgKORSbXJ8Qd9/fnZkhJDGKWMiTGopr ckl2a0vF2uB+lPLShmFx7xz8tfSD0ADA5BGkIyeonDcQ5Q6jZgBrWerIlNhWKZwh8uB+IFxCz AyUosz3+pATgvXptwuVmIDdszyHFJDtILGQm7a4Vu09R77hYRdNG6KFa86WKauSELsiZ4Gnmv uRpzvMO8Rn2Z3xcODbbwKpntG5TfrsqZxLHR1OIt1bbflcWMsSofdcP7KGe9DJs6ABPu6VMfd WuCrqNQBbLi+we5pybxkrygrP4p8y3eHs8Qg9jaVkwKwYwHiWGbVNhtjPwZS/nAidiv8PzQFa 22QOpctrlAP7cAC+C7QPzsfOlVlMytEfqC99c8oalrKBrVgboUBN8EPteIxKhBVZdaIWcZ4z5 W7M1J1zrWxt6WvrPVRTkHZNGmkBFeKD0ftvnEII9CNjqpkmowHl9SLZCbq8VuGuFmzlKeGGaL isGYWlfSQ0+e/aL4RLgStkWBgy8NeQzECU25InF5b91m3jK+nAxqu/3/w05LnfJ2ust3ibEyI fljJWAoqIt4NOcmZG73HgNmKHhhfZUnpc3lXd4geYbrz+NgIwq85wNJ3Tgq/A/Ao7nhrWFows 3gFszQrm4zZvP2/pIyBMJkvlfRyc1/NC57kJ7WJHIns5IStJ4Ci9RXCHBs8HRYrpbsf6SJ5YU mQTsrSx26oU4W8m+h1s+im/lj30= X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP 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: This is a multi-part message in MIME format. --------------71z2Lc0ViuJlEPrwl9RIxowR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Mikael, thanks a lot, your testcases broke my initial (and incorrect) patch in multiple ways. I understand now that the right solution is much simpler and smaller. I've added your testcases, see attached, with a simple scan of the dump for the generated order of hidden arguments in the function decl for the last testcase. Regtested again on x86_64-pc-linux-gnu. OK now? Thanks, Harald Am 31.10.22 um 10:57 schrieb Mikael Morin: > Le 30/10/2022 =C3=A0 22:25, Mikael Morin a =C3=A9crit=C2=A0: >> Le 30/10/2022 =C3=A0 20:23, Mikael Morin a =C3=A9crit=C2=A0: >>> Another probable issue is your change to create_function_arglist >>> changes arglist/hidden_arglist without also changing >>> typelist/hidden_typelist accordingly.=C2=A0 I think a change to >>> gfc_get_function_type is also necessary: as the function decl is >>> changed, the decl type need to be changed as well. >>> >>> I will see whether I can manage to exhibit testcases for these issues. >>> >> Here is a test for the type vs decl mismatch. >> >> ! { dg-do run } >> ! >> ! PR fortran/107441 >> ! Check that procedure types and procedure decls match when the procedu= re >> ! has both chaacter-typed and optional value args. >> >> program p >> =C2=A0=C2=A0 interface >> =C2=A0=C2=A0=C2=A0=C2=A0 subroutine i(c, o) >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 character(*) :: c >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 integer, optional, value :: o >> =C2=A0=C2=A0=C2=A0=C2=A0 end subroutine i >> =C2=A0=C2=A0 end interface >> =C2=A0=C2=A0 procedure(i), pointer :: pp > A pointer initialization is missing here: > =C2=A0=C2=A0=C2=A0 pp =3D> s >> =C2=A0=C2=A0 call pp("abcd") >> contains >> =C2=A0=C2=A0 subroutine s(c, o) >> =C2=A0=C2=A0=C2=A0=C2=A0 character(*) :: c >> =C2=A0=C2=A0=C2=A0=C2=A0 integer, optional, value :: o >> =C2=A0=C2=A0=C2=A0=C2=A0 if (present(o)) stop 1 >> =C2=A0=C2=A0=C2=A0=C2=A0 if (len(c) /=3D 4) stop 2 >> =C2=A0=C2=A0=C2=A0=C2=A0 if (c /=3D "abcd") stop 3 >> =C2=A0=C2=A0 end subroutine s >> end program p >> > > With the additional initialization, the test passes, so it's not very > useful.=C2=A0 The type mismatch is visible in the dump though, so maybe = a > dump match can be used. > --------------71z2Lc0ViuJlEPrwl9RIxowR Content-Type: text/x-patch; charset=UTF-8; name="pr107441-v2.diff" Content-Disposition: attachment; filename="pr107441-v2.diff" Content-Transfer-Encoding: base64 RnJvbSA3MDU2MjhjODlmYWExMTM1ZWQ5YTQ0NmI4NGU4MzFiYmVhZDYwOTVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBGcmksIDI4IE9jdCAyMDIyIDIxOjU4OjA4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogb3JkZXJpbmcgb2YgaGlkZGVuIHByb2NlZHVyZSBhcmd1bWVudHMgW1BSMTA3 NDQxXQoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vMTA3NDQxCgkqIHRy YW5zLWRlY2wuY2MgKGNyZWF0ZV9mdW5jdGlvbl9hcmdsaXN0KTogQWRqdXN0IHRoZSBvcmRl cmluZyBvZgoJYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaGlkZGVuIHByb2NlZHVyZSBhcmd1 bWVudHMgdG8gbWF0Y2ggdGhlCglkb2N1bWVudGVkIEFCSSBmb3IgZ2ZvcnRyYW4uICBUaGUg cHJlc2VudCBzdGF0dXMgZm9yIG9wdGlvbmFsK3ZhbHVlCglhcmd1bWVudHMgaXMgcGFzc2Vk IGJlZm9yZSBjaGFyYWN0ZXIgbGVuZ3RoIGFuZCBjb2FycmF5IHRva2VuIGFuZAoJb2Zmc2V0 LgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIgZm9ydHJhbi8xMDc0NDEKICAgICAg ICAqIGdmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2FmLmY5MDogTmV3IHRlc3QuCgkq IGdmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0 cmFuLmRnL29wdGlvbmFsX2Fic2VudF83LmY5MDogTmV3IHRlc3QuCi0tLQogZ2NjL2ZvcnRy YW4vdHJhbnMtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgIHwgIDggKystCiAuLi4vZ2Zv cnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYuZjkwICAgICAgfCAyNyArKysrKysrKysK IC4uLi9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNi5mOTAgICAgICAgICB8IDYwICsr KysrKysrKysrKysrKysrKysKIC4uLi9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNy5m OTAgICAgICAgICB8IDMwICsrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQxLWNhZi5mOTAKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5 MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9u YWxfYWJzZW50XzcuZjkwCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5j YyBiL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKaW5kZXggNjM1MTViOTA3MmEuLjY0YjM1 ZjA1NGU1IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCisrKyBiL2dj Yy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKQEAgLTI1MDgsNyArMjUwOCw3IEBAIGNyZWF0ZV9m dW5jdGlvbl9hcmdsaXN0IChnZmNfc3ltYm9sICogc3ltKQogICB0cmVlIGZuZGVjbDsKICAg Z2ZjX2Zvcm1hbF9hcmdsaXN0ICpmOwogICB0cmVlIHR5cGVsaXN0LCBoaWRkZW5fdHlwZWxp c3Q7Ci0gIHRyZWUgYXJnbGlzdCwgaGlkZGVuX2FyZ2xpc3Q7CisgIHRyZWUgYXJnbGlzdCwg aGlkZGVuX2FyZ2xpc3QsIG9wdHZhbF9hcmdsaXN0OwogICB0cmVlIHR5cGU7CiAgIHRyZWUg cGFybTsKIApAQCAtMjUxOCw2ICsyNTE4LDcgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3Qg KGdmY19zeW1ib2wgKiBzeW0pCiAgICAgIHRoZSBuZXcgRlVOQ1RJT05fREVDTCBub2RlLiAg Ki8KICAgYXJnbGlzdCA9IE5VTExfVFJFRTsKICAgaGlkZGVuX2FyZ2xpc3QgPSBOVUxMX1RS RUU7CisgIG9wdHZhbF9hcmdsaXN0ID0gTlVMTF9UUkVFOwogICB0eXBlbGlzdCA9IFRZUEVf QVJHX1RZUEVTIChUUkVFX1RZUEUgKGZuZGVjbCkpOwogCiAgIGlmIChzeW0tPmF0dHIuZW50 cnlfbWFzdGVyKQpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xp c3QgKGdmY19zeW1ib2wgKiBzeW0pCiAJCQkgICAgUEFSTV9ERUNMLCBnZXRfaWRlbnRpZmll ciAobmFtZSksCiAJCQkgICAgYm9vbGVhbl90eXBlX25vZGUpOwogCi0gICAgICAgICAgaGlk ZGVuX2FyZ2xpc3QgPSBjaGFpbm9uIChoaWRkZW5fYXJnbGlzdCwgdG1wKTsKKwkgIG9wdHZh bF9hcmdsaXN0ID0gY2hhaW5vbiAob3B0dmFsX2FyZ2xpc3QsIHRtcCk7CiAgICAgICAgICAg REVDTF9DT05URVhUICh0bXApID0gZm5kZWNsOwogICAgICAgICAgIERFQ0xfQVJUSUZJQ0lB TCAodG1wKSA9IDE7CiAgICAgICAgICAgREVDTF9BUkdfVFlQRSAodG1wKSA9IGJvb2xlYW5f dHlwZV9ub2RlOwpAQCAtMjg2Myw2ICsyODY0LDkgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xp c3QgKGdmY19zeW1ib2wgKiBzeW0pCiAgICAgICB0eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKHR5 cGVsaXN0KTsKICAgICB9CiAKKyAgLyogQWRkIGhpZGRlbiBwcmVzZW50IHN0YXR1cyBmb3Ig b3B0aW9uYWwrdmFsdWUgYXJndW1lbnRzLiAgKi8KKyAgYXJnbGlzdCA9IGNoYWlub24gKGFy Z2xpc3QsIG9wdHZhbF9hcmdsaXN0KTsKKwogICAvKiBBZGQgdGhlIGhpZGRlbiBzdHJpbmcg bGVuZ3RoIHBhcmFtZXRlcnMsIHVubGVzcyB0aGUgcHJvY2VkdXJlCiAgICAgIGlzIGJpbmQo QykuICAqLwogICBpZiAoIXN5bS0+YXR0ci5pc19iaW5kX2MpCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2FmLmY5MCBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYuZjkwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yM2IyMjQyZTIxNwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1j YWYuZjkwCkBAIC0wLDAgKzEsMjcgQEAKKyEgeyBkZy1kbyBydW4gfQorIQorISBQUiBmb3J0 cmFuLzEwNzQ0MQorISBDaGVjayB0aGF0IHdpdGggLWZjb2FycmF5PWxpYiwgY29hcnJheSBt ZXRhZGF0YSBhcmd1bWVudHMgYXJlIHBhc3NlZAorISBpbiB0aGUgcmlnaHQgb3JkZXIgdG8g cHJvY2VkdXJlcy4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgTS5Nb3JpbgorCitwcm9ncmFtIHAK KyAgaW50ZWdlciA6OiBjaVsqXQorICBjaSA9IDE3CisgIGNhbGwgcygxLCBjaSwgImFiY2Qi KQorY29udGFpbnMKKyAgc3Vicm91dGluZSBzKHJhLCBjYSwgYykKKyAgICBpbnRlZ2VyIDo6 IHJhLCBjYVsqXQorICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgY2FbMV0gPSAxMworICAg IGlmIChyYSAvPSAxKSBzdG9wIDEKKyAgICBpZiAodGhpc19pbWFnZSgpID09IDEpIHRoZW4K KyAgICAgIGlmIChjYSAvPSAxMykgc3RvcCAyCisgICAgZWxzZQorICAgICAgaWYgKGNhIC89 IDE3KSBzdG9wIDMKKyAgICBlbmQgaWYKKyAgICBpZiAobGVuKGMpIC89IDQpIHN0b3AgNAor ICAgIGlmIChjIC89ICJhYmNkIikgc3RvcCA1CisgIGVuZCBzdWJyb3V0aW5lIHMKK2VuZCBw cm9ncmFtIHAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9u YWxfYWJzZW50XzYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9vcHRpb25hbF9h YnNlbnRfNi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4 YWJiMDY5ODBhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9vcHRpb25hbF9hYnNlbnRfNi5mOTAKQEAgLTAsMCArMSw2MCBAQAorISB7IGRnLWRvIHJ1 biB9CishIFBSIGZvcnRyYW4vMTA3NDQxCishCishIFRlc3QgVkFMVUUgKyBPUFRJT05BTCBm b3IgaW50ZWdlci9yZWFsLy4uLgorISBpbiB0aGUgcHJlc2VuY2Ugb2Ygbm9uLW9wdGlvbmFs IGNoYXJhY3RlciBkdW1taWVzCisKK3Byb2dyYW0gYnVnZGVtbworICBpbXBsaWNpdCBub25l CisgIGNoYXJhY3RlciA6OiBzID0gJ2EnCisgIGludGVnZXIgICA6OiB0CisKKyAgdCA9IHRl c3RvcHRpb25hbChzKQorICBjYWxsIHRlc3QyIChzKQorICBjYWxsIHRlc3QzIChzKQorICBj YWxsIHRlc3Q0ICh3PScxMjMnLHg9NDIpCisKK2NvbnRhaW5zCisKKyAgZnVuY3Rpb24gdGVz dG9wdGlvbmFsICh3LCB4KSByZXN1bHQodCkKKyAgICBjaGFyYWN0ZXIsIGludGVudChpbikg ICAgICAgICAgICAgICAgICA6OiB3CisgICAgaW50ZWdlciwgICBpbnRlbnQoaW4pLCB2YWx1 ZSwgb3B0aW9uYWwgOjogeAorICAgIGludGVnZXIgOjogdAorICAgIHByaW50ICosICdwcmVz ZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIHQgPSAwCisgICAgaWYgKHByZXNlbnQgKHgp KSBzdG9wIDEKKyAgZW5kIGZ1bmN0aW9uIHRlc3RvcHRpb25hbAorCisgIHN1YnJvdXRpbmUg dGVzdDIgKHcsIHgpCisgICAgY2hhcmFjdGVyLCBpbnRlbnQoaW4pICAgICAgICAgICAgICAg ICAgOjogdworICAgIGludGVnZXIsICAgaW50ZW50KGluKSwgdmFsdWUsIG9wdGlvbmFsIDo6 IHgKKyAgICBwcmludCosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIGlmIChw cmVzZW50ICh4KSkgc3RvcCAyCisgIGVuZCBzdWJyb3V0aW5lIHRlc3QyCisKKyAgc3Vicm91 dGluZSB0ZXN0MyAodywgeCkKKyAgICBjaGFyYWN0ZXIsIGludGVudChpbiksICAgICAgICBv cHRpb25hbCA6OiB3CisgICAgaW50ZWdlciwgICBpbnRlbnQoaW4pLCB2YWx1ZSwgb3B0aW9u YWwgOjogeAorICAgIHByaW50ICosICdwcmVzZW50KHcpIGlzJywgcHJlc2VudCh3KQorICAg IHByaW50ICosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIGlmICgubm90LiBw cmVzZW50ICh3KSkgc3RvcCAzCisgICAgaWYgKHByZXNlbnQgKHgpKSBzdG9wIDQKKyAgZW5k IHN1YnJvdXRpbmUgdGVzdDMKKworICBzdWJyb3V0aW5lIHRlc3Q0IChyLCB3LCB4KQorICAg IHJlYWwsICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9wdGlvbmFsIDo6IHIKKyAgICBj aGFyYWN0ZXIoKiksIGludGVudChpbiksICAgICAgICBvcHRpb25hbCA6OiB3CisgICAgaW50 ZWdlciwgICAgICAgICAgICAgICAgICB2YWx1ZSwgb3B0aW9uYWwgOjogeAorICAgIHByaW50 ICosICdwcmVzZW50KHIpIGlzJywgcHJlc2VudChyKQorICAgIHByaW50ICosICdwcmVzZW50 KHcpIGlzJywgcHJlc2VudCh3KQorICAgIHByaW50ICosICdwcmVzZW50KHgpIGlzJywgcHJl c2VudCh4KQorICAgIGlmIChwcmVzZW50IChyKSkgc3RvcCA1CisgICAgaWYgKC5ub3QuIHBy ZXNlbnQgKHcpKSBzdG9wIDYKKyAgICBpZiAoLm5vdC4gcHJlc2VudCAoeCkpIHN0b3AgNwor ICAgIHByaW50ICosICd4PScsIHgKKyAgICBwcmludCAqLCAnbGVuKHcpPScsIGxlbih3KQor ICAgIGlmIChsZW4odykgLz0gMykgc3RvcCA4CisgICAgaWYgKHggLz0gNDIpIHN0b3AgOQor ICBlbmQgc3Vicm91dGluZSB0ZXN0NAorCitlbmQgcHJvZ3JhbSBidWdkZW1vCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF83LmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzcuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZmE3MTY2YzdlMwotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50 XzcuZjkwCkBAIC0wLDAgKzEsMzAgQEAKKyEgeyBkZy1kbyBydW4gfQorISB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKyEKKyEgUFIgZm9ydHJh bi8xMDc0NDEKKyEgQ2hlY2sgdGhhdCBwcm9jZWR1cmUgdHlwZXMgYW5kIHByb2NlZHVyZSBk ZWNscyBtYXRjaCB3aGVuIHRoZSBwcm9jZWR1cmUKKyEgaGFzIGJvdGggY2hhcmFjdGVyLXR5 cGVkIGFuZCBvcHRpb25hbCB2YWx1ZSBhcmdzLgorIQorISBDb250cmlidXRlZCBieSBNLk1v cmluCisKK3Byb2dyYW0gcAorICBpbnRlcmZhY2UKKyAgICBzdWJyb3V0aW5lIGkoYywgbykK KyAgICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgICBpbnRlZ2VyLCBvcHRpb25hbCwgdmFs dWUgOjogbworICAgIGVuZCBzdWJyb3V0aW5lIGkKKyAgZW5kIGludGVyZmFjZQorICBwcm9j ZWR1cmUoaSksIHBvaW50ZXIgOjogcHAKKyAgcHAgPT4gcworICBjYWxsIHBwKCJhYmNkIikK K2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgcyhjLCBvKQorICAgIGNoYXJhY3RlcigqKSA6OiBj CisgICAgaW50ZWdlciwgb3B0aW9uYWwsIHZhbHVlIDo6IG8KKyAgICBpZiAocHJlc2VudChv KSkgc3RvcCAxCisgICAgaWYgKGxlbihjKSAvPSA0KSBzdG9wIDIKKyAgICBpZiAoYyAvPSAi YWJjZCIpIHN0b3AgMworICBlbmQgc3Vicm91dGluZSBzCitlbmQgcHJvZ3JhbSBwCisKKyEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2b2lkIHMgLiogYywgLiogbywgbG9naWNh bC4qIF9vLCBpbnRlZ2VyLiogX2MiICJvcmlnaW5hbCIgfSB9Ci0tIAoyLjM1LjMKCg== --------------71z2Lc0ViuJlEPrwl9RIxowR--