From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by sourceware.org (Postfix) with ESMTPS id 530F93855152 for ; Wed, 7 Dec 2022 09:26:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 530F93855152 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=suse.cz Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 2734F21B0A; Wed, 7 Dec 2022 09:26:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1670405212; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=veRZTxgRXwUW38O/PgKeY9zsjCJLdmNdz7NE8/+4h7Y=; b=g7GXsI08OKv0OB/8S3TokqYTSmglvMyOKVIXFbJKyevac+43vpTsbAHVCcPpy3p9DXolSE YmWHA4GKMbsB6V1wAT8JIwnqmEfmNdblOl7T8DlGS5bxHBDKnabO7cQEhVf+Yi1H+UC8DF OSJF0EHEO87Yrt3UMC53e8ligKT9C6Y= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1670405212; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=veRZTxgRXwUW38O/PgKeY9zsjCJLdmNdz7NE8/+4h7Y=; b=wwM0rIRgbNIj4co49wJD2cto3JiRSZ+x/D8H8FU4jJZuffgMVXtW/XQlPykOsNuXPgKMw4 7V54EqAJCk77+JAw== Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id DAEC8136B4; Wed, 7 Dec 2022 09:26:51 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id gjgzM1tckGNcagAAGKfGzw (envelope-from ); Wed, 07 Dec 2022 09:26:51 +0000 Content-Type: multipart/mixed; boundary="------------1XnNWUP2wdRt2Dvj0mtsSdlW" Message-ID: Date: Wed, 7 Dec 2022 10:26:51 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Subject: Re: [PATCH v3 16/19] modula2 front end: bootstrap and documentation tools Content-Language: en-US To: Gaius Mulley , gcc-patches@gcc.gnu.org References: From: =?UTF-8?Q?Martin_Li=c5=a1ka?= In-Reply-To: X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,SPF_HELO_NONE,SPF_SOFTFAIL,TXREP,T_FILL_THIS_FORM_SHORT 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. --------------1XnNWUP2wdRt2Dvj0mtsSdlW Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/6/22 15:47, Gaius Mulley wrote: > |Hi Martin, here is the revised patch having applied all previous recommendations: https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603436.html. Is this ok now? Thanks for the improvement suggestions.| Hello. It looks much better and I'm sending a small patch that resolves the remaining flake8 issue. I use the following plugins (some listed here: https://gcc.gnu.org/codingconventions.html#python): $ flake8 --version 5.0.4 (flake8-bugbear: 22.10.27, flake8-builtins: 1.5.3, flake8-comprehensions: 3.4.0, flake8-import-order: 0.18.1, flake8-quotes: 3.3.1, mccabe: 0.7.0, pycodestyle: 2.9.1, pyflakes: 2.5.0) CPython 3.10.8 on Linux and I see: gcc/m2/tools-src> flake8 ./boilerplate.py:108:66: E999 SyntaxError: invalid syntax ./tidydates.py:26:1: I100 Import statements are in the wrong order. 'import pathlib' should be before 'import sys' ./tidydates.py:129:50: E128 continuation line under-indented for visual indent ./def2doc.py:49:5: E301 expected 1 blank line, found 0 ./def2doc.py:49:18: E211 whitespace before '(' ./def2doc.py:51:5: E301 expected 1 blank line, found 0 ./def2doc.py:51:18: E211 whitespace before '(' ./def2doc.py:53:5: E301 expected 1 blank line, found 0 ./def2doc.py:55:5: E301 expected 1 blank line, found 0 ./def2doc.py:57:5: E301 expected 1 blank line, found 0 ./def2doc.py:59:5: E301 expected 1 blank line, found 0 ./def2doc.py:61:5: E301 expected 1 blank line, found 0 ./def2doc.py:65:5: E301 expected 1 blank line, found 0 ./def2doc.py:70:5: E301 expected 1 blank line, found 0 ./def2doc.py:72:5: E301 expected 1 blank line, found 0 ./def2doc.py:191:80: E501 line too long (81 > 79 characters) ./def2doc.py:330:22: A002 argument "dir" is shadowing a python builtin ./def2doc.py:348:23: A002 argument "dir" is shadowing a python builtin ./def2doc.py:377:17: A002 argument "dir" is shadowing a python builtin ./def2doc.py:396:21: A002 argument "dir" is shadowing a python builtin ./def2doc.py:406:16: A002 argument "dir" is shadowing a python builtin ./def2doc.py:418:15: A002 argument "dir" is shadowing a python builtin ./def2doc.py:432:25: A002 argument "dir" is shadowing a python builtin ./def2doc.py:437:19: Q000 Double quotes found but single quotes preferred ./def2doc.py:439:19: Q000 Double quotes found but single quotes preferred ./def2doc.py:441:19: Q000 Double quotes found but single quotes preferred ./def2doc.py:468:18: Q001 Single quote multiline found but double quotes preferred It seems the first one is a real syntax error. Anyway, feel free to apply the suggested patch. And I would consider replacing the following static 'str.' calls: def2doc.py: output.write(str.replace(str.replace(str.rstrip(line), def2doc.py: output.write(str.replace(str.replace(line, '{', '@{'), '}', '@}')) with line.rstrip().replace(...).replace(...) Cheers, Martin --------------1XnNWUP2wdRt2Dvj0mtsSdlW Content-Type: text/x-patch; charset=UTF-8; name="m2-flake8.patch" Content-Disposition: attachment; filename="m2-flake8.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9tMi90b29scy1zcmMvYm9pbGVycGxhdGUucHkgYi9nY2MvbTIv dG9vbHMtc3JjL2JvaWxlcnBsYXRlLnB5CmluZGV4IGYwYjI2NmY0MDNmLi45OTU5NjUyOWI0 ZSAxMDA2NDQKLS0tIGEvZ2NjL20yL3Rvb2xzLXNyYy9ib2lsZXJwbGF0ZS5weQorKysgYi9n Y2MvbTIvdG9vbHMtc3JjL2JvaWxlcnBsYXRlLnB5CkBAIC04NSw5ICs4NSw5IEBAIGRlZiBh bmFseXNlX2NvbW1lbnQodGV4dCwgZik6CiAgICAgICAgICAgICBsaWMgPSAnR1BMJwogICAg ICAgICBlbGlmIHRleHQuZmluZChHTlVfTEVTU0VSX0dFTkVSQUwpID4gMDoKICAgICAgICAg ICAgIGxpYyA9ICdMR1BMJwotICAgICAgICBmb3IgbGljZW5zZSBpbiBMaWNlbnNlcy5rZXlz KCk6Ci0gICAgICAgICAgICBpZiB0ZXh0LmZpbmQobGljZW5zZSkgPiAwOgotICAgICAgICAg ICAgICAgIGxpYyArPSBMaWNlbnNlc1tsaWNlbnNlXQorICAgICAgICBmb3IgbGljZW5zZV8g aW4gTGljZW5zZXMua2V5cygpOgorICAgICAgICAgICAgaWYgdGV4dC5maW5kKGxpY2Vuc2Vf KSA+IDA6CisgICAgICAgICAgICAgICAgbGljICs9IExpY2Vuc2VzW2xpY2Vuc2VfXQogICAg ICAgICBpZiB0ZXh0LmZpbmQoR0NDX1JVTlRJTUVfTElCX0VYQykgPiAwOgogICAgICAgICAg ICAgbGljICs9ICd4JwogICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQpA QCAtMTA1LDcgKzEwNSw3IEBAIGRlZiBhbmFseXNlX2NvbW1lbnQodGV4dCwgZik6CiAgICAg ICAgIGkgPSB0ZXh0LmZpbmQoYmFzZW5hbWUoZikpCiAgICAgICAgIGogPSB0ZXh0LmZpbmQo Jy4gJywgaSkKICAgICAgICAgaWYgaiA8IDA6Ci0gICAgICAgICAgICBlcnJvcignc3VtbWFy eSBvZiB0aGUgZmlsZSBkb2VzIG5vdCBmaW5pc2ggd2l0aCBhICcuJycpCisgICAgICAgICAg ICBlcnJvcigic3VtbWFyeSBvZiB0aGUgZmlsZSBkb2VzIG5vdCBmaW5pc2ggd2l0aCBhICcu JyIpCiAgICAgICAgICAgICBzdW1tYXJ5ID0gdGV4dFtpOl0KICAgICAgICAgZWxzZToKICAg ICAgICAgICAgIHN1bW1hcnkgPSB0ZXh0W2k6al0KQEAgLTE3NSw3ICsxNzUsNyBAQCBkZWYg YWRkX3N0b3Aoc2VudGVuY2UpOgogICAgIHJldHVybiBzZW50ZW5jZQogCiAKLUdQTHYzID0g JycnCitHUEx2MyA9ICIiIgogJXMKIAogQ29weXJpZ2h0IChDKSAlcyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KQEAgLTE5Niw5ICsxOTYsOSBAQCBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogYWxvbmcgd2l0aCBHTlUg TW9kdWxhLTI7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLScnJworIiIiCiAKLUdQTHYzeCA9ICcnJworR1BM djN4ID0gIiIiCiAlcwogCiBDb3B5cmlnaHQgKEMpICVzIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgpAQCAtMjI0LDkgKzIyNCw5IEBAIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAogYSBjb3B5 IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsKIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSBy ZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgotJycnCisiIiIKIAotTEdQTHYzID0gJycnCitMR1BMdjMgPSAiIiIKICVzCiAKIENv cHlyaWdodCAoQykgJXMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yNDYs OSArMjQ2LDkgQEAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KIAogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIEdOVSBNb2R1bGEtMi4g IElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0nJycKKyIi IgogCi1CU0lTTyA9ICcnJworQlNJU08gPSAiIiIKIExpYnJhcnkgbW9kdWxlIGRlZmluZWQg YnkgdGhlIEludGVybmF0aW9uYWwgU3RhbmRhcmQKICAgIEluZm9ybWF0aW9uIHRlY2hub2xv Z3kgLSBwcm9ncmFtbWluZyBsYW5ndWFnZXMKICAgIEJTIElTTy9JRUMgMTA1MTQtMToxOTk2 RSBQYXJ0IDE6IE1vZHVsYS0yLCBCYXNlIExhbmd1YWdlLgpAQCAtMjU5LDcgKzI1OSw3IEBA IExpYnJhcnkgbW9kdWxlIGRlZmluZWQgYnkgdGhlIEludGVybmF0aW9uYWwgU3RhbmRhcmQK ICAgIEl0IG1heSBiZSBmcmVlbHkgY29waWVkIGZvciB0aGUgcHVycG9zZSBvZiBpbXBsZW1l bnRhdGlvbiAoc2VlIHBhZ2UKICAgIDcwNyBvZiB0aGUgSW5mb3JtYXRpb24gdGVjaG5vbG9n eSAtIFByb2dyYW1taW5nIGxhbmd1YWdlcyBQYXJ0IDE6CiAgICBNb2R1bGEtMiwgQmFzZSBM YW5ndWFnZS4gIEJTIElTTy9JRUMgMTA1MTQtMToxOTk2KS4KLScnJworIiIiCiAKIHRlbXBs YXRlcyA9IHt9CiB0ZW1wbGF0ZXNbJ0dQTHYzJ10gPSBHUEx2MwpkaWZmIC0tZ2l0IGEvZ2Nj L20yL3Rvb2xzLXNyYy9kZWYyZG9jLnB5IGIvZ2NjL20yL3Rvb2xzLXNyYy9kZWYyZG9jLnB5 CmluZGV4IGViMjkxMThjYzlkLi45YWM5NGU5Yzk3OSAxMDA3NTUKLS0tIGEvZ2NjL20yL3Rv b2xzLXNyYy9kZWYyZG9jLnB5CisrKyBiL2djYy9tMi90b29scy1zcmMvZGVmMmRvYy5weQpA QCAtNDYsMjkgKzQ2LDM5IEBAIGNsYXNzIHN0YXRlOgogICAgIGRlZiBfX2luaXRfXyhzZWxm KToKICAgICAgICAgc2VsZi5fc3RhdGVfc3RhdGUgPSBzdGF0ZV9ub25lCiAgICAgICAgIHNl bGYuX2Jsb2NrID0gYmxvY2tfbm9uZQotICAgIGRlZiBnZXRfc3RhdGUgKHNlbGYpOgorCisg ICAgZGVmIGdldF9zdGF0ZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlX3N0 YXRlCi0gICAgZGVmIHNldF9zdGF0ZSAoc2VsZiwgdmFsdWUpOgorCisgICAgZGVmIHNldF9z dGF0ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuX3N0YXRlX3N0YXRlID0gdmFsdWUK KwogICAgIGRlZiBpc19jb25zdChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRl X3N0YXRlID09IHN0YXRlX2NvbnN0CisKICAgICBkZWYgaXNfdHlwZShzZWxmKToKICAgICAg ICAgcmV0dXJuIHNlbGYuX3N0YXRlX3N0YXRlID09IHN0YXRlX3R5cGUKKwogICAgIGRlZiBp c192YXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZV9zdGF0ZSA9PSBzdGF0 ZV92YXIKKwogICAgIGRlZiBnZXRfYmxvY2soc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm Ll9ibG9jaworCiAgICAgZGVmIF9jaGFuZ2VfYmxvY2soc2VsZiwgbmV3X2Jsb2NrKToKICAg ICAgICAgaWYgc2VsZi5fYmxvY2sgIT0gbmV3X2Jsb2NrOgogICAgICAgICAgICAgc2VsZi5f YmxvY2sgPSBuZXdfYmxvY2sKICAgICAgICAgICAgIHNlbGYuX2VtaXRfYmxvY2tfZGVzYygp CisKICAgICBkZWYgX2VtaXRfYmxvY2tfZGVzYyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5f YmxvY2sgPT0gYmxvY2tfY29kZToKICAgICAgICAgICAgIG91dHB1dC53cml0ZSgnLi4gY29k ZS1ibG9jazo6IG1vZHVsYTJcbicpCiAgICAgICAgIGVsaWYgc2VsZi5fYmxvY2sgPT0gYmxv Y2tfaW5kZXg6CiAgICAgICAgICAgICBvdXRwdXQud3JpdGUoJy4uIGluZGV4OjpcbicpCisK ICAgICBkZWYgdG9fY29kZShzZWxmKToKICAgICAgICAgc2VsZi5fY2hhbmdlX2Jsb2NrKGJs b2NrX2NvZGUpCisKICAgICBkZWYgdG9faW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuX2No YW5nZV9ibG9jayhibG9ja19pbmRleCkKIApAQCAtMzI3LDExICszMzcsMTEgQEAgZGVmIGVt aXRfcGFnZShuZWVkX3BhZ2UpOgogICAgICAgICBvdXRwdXQud3JpdGUoJ0BwYWdlXG4nKQog CiAKLWRlZiBwYXJzZV9kZWZpbml0aW9uKGRpciwgc291cmNlLCBidWlsZCwgZmlsZSwgbmVl ZF9wYWdlKToKK2RlZiBwYXJzZV9kZWZpbml0aW9uKGRpcl8sIHNvdXJjZSwgYnVpbGQsIGZp bGUsIG5lZWRfcGFnZSk6CiAgICAgIyBwYXJzZV9kZWZpbml0aW9uIHJlYWRzIGEgZGVmaW5p dGlvbiBtb2R1bGUgYW5kIGNyZWF0ZXMKICAgICAjIGluZGljZXMgZm9yIHByb2NlZHVyZXMs IGNvbnN0YW50cywgdmFyaWFibGVzIGFuZCB0eXBlcy4KICAgICBvdXRwdXQud3JpdGUoJ1xu JykKLSAgICB3aXRoIG9wZW4oZmluZF9maWxlKGRpciwgYnVpbGQsIHNvdXJjZSwgZmlsZSks ICdyJykgYXMgZjoKKyAgICB3aXRoIG9wZW4oZmluZF9maWxlKGRpcl8sIGJ1aWxkLCBzb3Vy Y2UsIGZpbGUpLCAncicpIGFzIGY6CiAgICAgICAgIGluaXRfc3RhdGUoKQogICAgICAgICBs aW5lID0gZi5yZWFkbGluZSgpCiAgICAgICAgIHdoaWxlIChsaW5lLmZpbmQoJygqJykgIT0g LTEpOgpAQCAtMzQ1LDIyICszNTUsMjIgQEAgZGVmIHBhcnNlX2RlZmluaXRpb24oZGlyLCBz b3VyY2UsIGJ1aWxkLCBmaWxlLCBuZWVkX3BhZ2UpOgogICAgICAgICBlbWl0X3BhZ2UobmVl ZF9wYWdlKQogCiAKLWRlZiBwYXJzZV9tb2R1bGVzKHVwLCBkaXIsIGJ1aWxkLCBzb3VyY2Us IGxpc3Rfb2ZfbW9kdWxlcyk6CitkZWYgcGFyc2VfbW9kdWxlcyh1cCwgZGlyXywgYnVpbGQs IHNvdXJjZSwgbGlzdF9vZl9tb2R1bGVzKToKICAgICBwcmV2aW91cyA9ICcnCiAgICAgaSA9 IDAKICAgICBpZiBsZW4obGlzdF9vZl9tb2R1bGVzKSA+IDE6Ci0gICAgICAgIG54dCA9IGRp ciArICcvJyArIGxpc3Rfb2ZfbW9kdWxlc1sxXVs6LTRdCisgICAgICAgIG54dCA9IGRpcl8g KyAnLycgKyBsaXN0X29mX21vZHVsZXNbMV1bOi00XQogICAgIGVsc2U6CiAgICAgICAgIG54 dCA9ICcnCiAgICAgd2hpbGUgaSA8IGxlbihsaXN0X29mX21vZHVsZXMpOgotICAgICAgICBl bWl0X25vZGUoZGlyICsgJy8nICsgbGlzdF9vZl9tb2R1bGVzW2ldWzotNF0sIG54dCwgcHJl dmlvdXMsIHVwKQotICAgICAgICBlbWl0X3N1Yl9zZWN0aW9uKGRpciArICcvJyArIGxpc3Rf b2ZfbW9kdWxlc1tpXVs6LTRdKQotICAgICAgICBwYXJzZV9kZWZpbml0aW9uKGRpciwgc291 cmNlLCBidWlsZCwgbGlzdF9vZl9tb2R1bGVzW2ldLCBUcnVlKQorICAgICAgICBlbWl0X25v ZGUoZGlyXyArICcvJyArIGxpc3Rfb2ZfbW9kdWxlc1tpXVs6LTRdLCBueHQsIHByZXZpb3Vz LCB1cCkKKyAgICAgICAgZW1pdF9zdWJfc2VjdGlvbihkaXJfICsgJy8nICsgbGlzdF9vZl9t b2R1bGVzW2ldWzotNF0pCisgICAgICAgIHBhcnNlX2RlZmluaXRpb24oZGlyXywgc291cmNl LCBidWlsZCwgbGlzdF9vZl9tb2R1bGVzW2ldLCBUcnVlKQogICAgICAgICBvdXRwdXQud3Jp dGUoJ1xuJykKLSAgICAgICAgcHJldmlvdXMgPSBkaXIgKyAnLycgKyBsaXN0X29mX21vZHVs ZXNbaV1bOi00XQorICAgICAgICBwcmV2aW91cyA9IGRpcl8gKyAnLycgKyBsaXN0X29mX21v ZHVsZXNbaV1bOi00XQogICAgICAgICBpID0gaSArIDEKICAgICAgICAgaWYgaSsxIDwgbGVu KGxpc3Rfb2ZfbW9kdWxlcyk6Ci0gICAgICAgICAgICBueHQgPSBkaXIgKyAnLycgKyBsaXN0 X29mX21vZHVsZXNbaSsxXVs6LTRdCisgICAgICAgICAgICBueHQgPSBkaXJfICsgJy8nICsg bGlzdF9vZl9tb2R1bGVzW2krMV1bOi00XQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg bnh0ID0gJycKIApAQCAtMzc0LDU0ICszODQsNTQgQEAgZGVmIGRvX2NhdChuYW1lKToKICAg ICAgICAgICAgIGxpbmUgPSBmaWxlLnJlYWRsaW5lKCkKIAogCi1kZWYgbW9kdWxlX21lbnUo ZGlyLCBidWlsZCwgc291cmNlKToKK2RlZiBtb2R1bGVfbWVudShkaXJfLCBidWlsZCwgc291 cmNlKToKICAgICAjIG1vZHVsZV9tZW51IGdlbmVyYXRlcyBhIHNpbXBsZSBtZW51IGZvciBh bGwgZGVmaW5pdGlvbiBtb2R1bGVzCiAgICAgIyBpbiBkaXIKICAgICBvdXRwdXQud3JpdGUo J0BtZW51XG4nKQogICAgIGxpc3Rfb2ZfZmlsZXMgPSBbXQotICAgIGlmIG9zLnBhdGguZXhp c3RzKG9zLnBhdGguam9pbihzb3VyY2UsIGRpcikpOgotICAgICAgICBsaXN0X29mX2ZpbGVz ICs9IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNvdXJjZSwgZGlyKSkKLSAgICBpZiBvcy5w YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc291cmNlLCBkaXIpKToKLSAgICAgICAgbGlzdF9v Zl9maWxlcyArPSBvcy5saXN0ZGlyKG9zLnBhdGguam9pbihidWlsZCwgZGlyKSkKKyAgICBp ZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc291cmNlLCBkaXJfKSk6CisgICAgICAg IGxpc3Rfb2ZfZmlsZXMgKz0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oc291cmNlLCBkaXJf KSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc291cmNlLCBkaXJfKSk6 CisgICAgICAgIGxpc3Rfb2ZfZmlsZXMgKz0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oYnVp bGQsIGRpcl8pKQogICAgIGxpc3Rfb2ZfZmlsZXMgPSBsaXN0KGRpY3QuZnJvbWtleXMobGlz dF9vZl9maWxlcykua2V5cygpKQogICAgIGxpc3Rfb2ZfZmlsZXMuc29ydCgpCiAgICAgZm9y IGZpbGUgaW4gbGlzdF9vZl9maWxlczoKLSAgICAgICAgaWYgZm91bmRfZmlsZShkaXIsIGJ1 aWxkLCBzb3VyY2UsIGZpbGUpOgorICAgICAgICBpZiBmb3VuZF9maWxlKGRpcl8sIGJ1aWxk LCBzb3VyY2UsIGZpbGUpOgogICAgICAgICAgICAgaWYgKGxlbihmaWxlKSA+IDQpIGFuZCAo ZmlsZVstNDpdID09ICcuZGVmJyk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCcq ICcgKyBkaXIgKyAnLycgKyBmaWxlWzotNF0gKyAnOjonICsgZmlsZSArICdcbicpCisgICAg ICAgICAgICAgICAgb3V0cHV0LndyaXRlKCcqICcgKyBkaXJfICsgJy8nICsgZmlsZVs6LTRd ICsgJzo6JyArIGZpbGUgKyAnXG4nKQogICAgIG91dHB1dC53cml0ZSgnQGVuZCBtZW51XG4n KQogICAgIG91dHB1dC53cml0ZSgnXG4nKQogCiAKLWRlZiBjaGVja19kaXJlY3RvcnkoZGly LCBidWlsZCwgc291cmNlKToKK2RlZiBjaGVja19kaXJlY3RvcnkoZGlyXywgYnVpbGQsIHNv dXJjZSk6CiAgICAgIyBjaGVja19kaXJlY3RvcnkgLSByZXR1cm5zIFRydWUgaWYgZGlyIGV4 aXN0cyBpbiBlaXRoZXIgYnVpbGQgb3Igc291cmNlLgotICAgIGlmIG9zLnBhdGguaXNkaXIo YnVpbGQpIGFuZCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYnVpbGQsIGRpcikpOgor ICAgIGlmIG9zLnBhdGguaXNkaXIoYnVpbGQpIGFuZCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo LmpvaW4oYnVpbGQsIGRpcl8pKToKICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIG9z LnBhdGguaXNkaXIoc291cmNlKSBhbmQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNv dXJjZSwgZGlyKSk6CisgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNvdXJjZSkgYW5kIG9zLnBh dGguZXhpc3RzKG9zLnBhdGguam9pbihzb3VyY2UsIGRpcl8pKToKICAgICAgICAgcmV0dXJu IFRydWUKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCi1kZWYgZm91bmRf ZmlsZShkaXIsIGJ1aWxkLCBzb3VyY2UsIGZpbGUpOgorZGVmIGZvdW5kX2ZpbGUoZGlyXywg YnVpbGQsIHNvdXJjZSwgZmlsZSk6CiAgICAgIyBmb3VuZF9maWxlIHJldHVybiBUcnVlIGlm IGZpbGUgaXMgZm91bmQgaW4gYnVpbGQvZGlyL2ZpbGUgb3IKICAgICAjIHNvdXJjZS9kaXIv ZmlsZS4KLSAgICBuYW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguam9pbihidWlsZCwgZGly KSwgZmlsZSkKKyAgICBuYW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguam9pbihidWlsZCwg ZGlyXyksIGZpbGUpCiAgICAgaWYgb3MucGF0aC5leGlzdHMobmFtZSk6CiAgICAgICAgIHJl dHVybiBUcnVlCi0gICAgbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmpvaW4oc291cmNl LCBkaXIpLCBmaWxlKQorICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5qb2luKHNv dXJjZSwgZGlyXyksIGZpbGUpCiAgICAgaWYgb3MucGF0aC5leGlzdHMobmFtZSk6CiAgICAg ICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIGZpbmRfZmlsZShk aXIsIGJ1aWxkLCBzb3VyY2UsIGZpbGUpOgorZGVmIGZpbmRfZmlsZShkaXJfLCBidWlsZCwg c291cmNlLCBmaWxlKToKICAgICAjIGZpbmRfZmlsZSByZXR1cm4gdGhlIHBhdGggdG8gZmls ZSBzZWFyY2hpbmcgaW4gYnVpbGQvZGlyL2ZpbGUKICAgICAjIGZpcnN0IHRoZW4gc291cmNl L2Rpci9maWxlLgotICAgIG5hbWUxID0gb3MucGF0aC5qb2luKG9zLnBhdGguam9pbihidWls ZCwgZGlyKSwgZmlsZSkKKyAgICBuYW1lMSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmpvaW4o YnVpbGQsIGRpcl8pLCBmaWxlKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKG5hbWUxKToKICAg ICAgICAgcmV0dXJuIG5hbWUxCi0gICAgbmFtZTIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5q b2luKHNvdXJjZSwgZGlyKSwgZmlsZSkKKyAgICBuYW1lMiA9IG9zLnBhdGguam9pbihvcy5w YXRoLmpvaW4oc291cmNlLCBkaXJfKSwgZmlsZSkKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhu YW1lMik6CiAgICAgICAgIHJldHVybiBuYW1lMgogICAgIHN5cy5zdGRlcnIud3JpdGUoJ2Zp bGUgY2Fubm90IGJlIGZvdW5kIGluIGVpdGhlciAnICsgbmFtZTEpCkBAIC00MjksMzUgKzQz OSwzNSBAQCBkZWYgZmluZF9maWxlKGRpciwgYnVpbGQsIHNvdXJjZSwgZmlsZSk6CiAgICAg b3Muc3lzLmV4aXQoMSkKIAogCi1kZWYgZGlzcGxheV9tb2R1bGVzKHVwLCBkaXIsIGJ1aWxk LCBzb3VyY2UpOgorZGVmIGRpc3BsYXlfbW9kdWxlcyh1cCwgZGlyXywgYnVpbGQsIHNvdXJj ZSk6CiAgICAgIyBkaXNwbGF5X21vZHVsZXMgd2Fsa3MgdGhvdWdoIHRoZSBmaWxlcyBpbiBk aXIgYW5kIHBhcnNlcwogICAgICMgZGVmaW5pdGlvbiBtb2R1bGVzIGFuZCBpbmNsdWRlcyBS RUFETUUudGV4aQotICAgIGlmIGNoZWNrX2RpcmVjdG9yeShkaXIsIGJ1aWxkLCBzb3VyY2Up OgorICAgIGlmIGNoZWNrX2RpcmVjdG9yeShkaXJfLCBidWlsZCwgc291cmNlKToKICAgICAg ICAgaWYgYXJncy50ZXhpbmZvOgotICAgICAgICAgICAgZXh0ID0gIi50ZXhpIgorICAgICAg ICAgICAgZXh0ID0gJy50ZXhpJwogICAgICAgICBlbGlmIGFyZ3Muc3BoaW54OgotICAgICAg ICAgICAgZXh0ID0gIi5yc3QiCisgICAgICAgICAgICBleHQgPSAnLnJzdCcKICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgIGV4dCA9ICIiCi0gICAgICAgIGlmIGZvdW5kX2ZpbGUoZGly LCBidWlsZCwgc291cmNlLCAnUkVBRE1FJyArIGV4dCk6Ci0gICAgICAgICAgICBkb19jYXQo ZmluZF9maWxlKGRpciwgYnVpbGQsIHNvdXJjZSwgJ1JFQURNRScgKyBleHQpKQotICAgICAg ICBtb2R1bGVfbWVudShkaXIsIGJ1aWxkLCBzb3VyY2UpCisgICAgICAgICAgICBleHQgPSAn JworICAgICAgICBpZiBmb3VuZF9maWxlKGRpcl8sIGJ1aWxkLCBzb3VyY2UsICdSRUFETUUn ICsgZXh0KToKKyAgICAgICAgICAgIGRvX2NhdChmaW5kX2ZpbGUoZGlyXywgYnVpbGQsIHNv dXJjZSwgJ1JFQURNRScgKyBleHQpKQorICAgICAgICBtb2R1bGVfbWVudShkaXJfLCBidWls ZCwgc291cmNlKQogICAgICAgICBsaXN0X29mX2ZpbGVzID0gW10KLSAgICAgICAgaWYgb3Mu cGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNvdXJjZSwgZGlyKSk6Ci0gICAgICAgICAgICBs aXN0X29mX2ZpbGVzICs9IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNvdXJjZSwgZGlyKSkK LSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNvdXJjZSwgZGlyKSk6 Ci0gICAgICAgICAgICBsaXN0X29mX2ZpbGVzICs9IG9zLmxpc3RkaXIob3MucGF0aC5qb2lu KGJ1aWxkLCBkaXIpKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4o c291cmNlLCBkaXJfKSk6CisgICAgICAgICAgICBsaXN0X29mX2ZpbGVzICs9IG9zLmxpc3Rk aXIob3MucGF0aC5qb2luKHNvdXJjZSwgZGlyXykpCisgICAgICAgIGlmIG9zLnBhdGguZXhp c3RzKG9zLnBhdGguam9pbihzb3VyY2UsIGRpcl8pKToKKyAgICAgICAgICAgIGxpc3Rfb2Zf ZmlsZXMgKz0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oYnVpbGQsIGRpcl8pKQogICAgICAg ICBsaXN0X29mX2ZpbGVzID0gbGlzdChkaWN0LmZyb21rZXlzKGxpc3Rfb2ZfZmlsZXMpLmtl eXMoKSkKICAgICAgICAgbGlzdF9vZl9maWxlcy5zb3J0KCkKICAgICAgICAgbGlzdF9vZl9t b2R1bGVzID0gW10KICAgICAgICAgZm9yIGZpbGUgaW4gbGlzdF9vZl9maWxlczoKLSAgICAg ICAgICAgIGlmIGZvdW5kX2ZpbGUoZGlyLCBidWlsZCwgc291cmNlLCBmaWxlKToKKyAgICAg ICAgICAgIGlmIGZvdW5kX2ZpbGUoZGlyXywgYnVpbGQsIHNvdXJjZSwgZmlsZSk6CiAgICAg ICAgICAgICAgICAgaWYgKGxlbihmaWxlKSA+IDQpIGFuZCAoZmlsZVstNDpdID09ICcuZGVm Jyk6CiAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2ZfbW9kdWxlcyArPSBbZmlsZV0KICAg ICAgICAgbGlzdF9vZl9tb2R1bGVzLnNvcnQoKQotICAgICAgICBwYXJzZV9tb2R1bGVzKHVw LCBkaXIsIGJ1aWxkLCBzb3VyY2UsIGxpc3Rfb2ZfbW9kdWxlcykKKyAgICAgICAgcGFyc2Vf bW9kdWxlcyh1cCwgZGlyXywgYnVpbGQsIHNvdXJjZSwgbGlzdF9vZl9tb2R1bGVzKQogICAg IGVsc2U6Ci0gICAgICAgIGxpbmUgPSAnZGlyZWN0b3J5ICcgKyBkaXIgKyAnIG5vdCBmb3Vu ZCBpbiBlaXRoZXIgJworICAgICAgICBsaW5lID0gJ2RpcmVjdG9yeSAnICsgZGlyXyArICcg bm90IGZvdW5kIGluIGVpdGhlciAnCiAgICAgICAgIGxpbmUgKz0gYnVpbGQgKyAnIG9yICcg KyBzb3VyY2UKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShsaW5lICsgJ1xuJykKIApAQCAt NDY1LDExICs0NzUsMTEgQEAgZGVmIGRpc3BsYXlfbW9kdWxlcyh1cCwgZGlyLCBidWlsZCwg c291cmNlKToKIGRlZiBkaXNwbGF5X2NvcHlyaWdodCgpOgogICAgIG91dHB1dC53cml0ZSgn QGMgQ29weXJpZ2h0IChDKSAyMDAwLTIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuXG4nKQogICAgIG91dHB1dC53cml0ZSgnQGMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IE1vZHVsYS0yLlxuJykKLSAgICBvdXRwdXQud3JpdGUoJycnCisgICAgb3V0cHV0LndyaXRl KCIiIgogQGMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5k L29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CiBAYyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjIgb3IKIEBjIGFueSBs YXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgotJycnKQorIiIiKQogCiAKIGRlZiBjb2xsZWN0X2FyZ3MoKToKZGlmZiAtLWdpdCBhL2dj Yy9tMi90b29scy1zcmMvdGlkeWRhdGVzLnB5IGIvZ2NjL20yL3Rvb2xzLXNyYy90aWR5ZGF0 ZXMucHkKaW5kZXggYTI4YzBmMTY2OWEuLmMyNDQwNjZjZDQwIDEwMDY0NAotLS0gYS9nY2Mv bTIvdG9vbHMtc3JjL3RpZHlkYXRlcy5weQorKysgYi9nY2MvbTIvdG9vbHMtc3JjL3RpZHlk YXRlcy5weQpAQCAtMjIsOSArMjIsOSBAQAogIyAwMjExMC0xMzAxLCBVU0EuCiAKIGltcG9y dCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBzaHV0aWwKK2ltcG9y dCBzeXMKIAogbWF4X2xpbmVfbGVuZ3RoID0gNjAKIApAQCAtMTI2LDcgKzEyNiw3IEBAIGRl ZiBoYW5kbGVfaGVhZGVyKGZpbGVuYW1lLCBsZWFkZXIxLCBsZWFkZXIyKToKICAgICAgICAg ICAgIGZvciBpIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIGlmIGkuZmluZCgnQ29weXJp Z2h0IChDKScpID49IDA6CiAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUsIG4gPSBoYW5k bGVfY29weXJpZ2h0KG91dGZpbGUsIGxpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG4sIGxlYWRlcjEsIGxlYWRlcjIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4sIGxlYWRlcjEs IGxlYWRlcjIpCiAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGVsaW5lcyhsaW5l c1tuOl0pCiAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUuY2xvc2UoKQogICAgICAgICAg ICAgICAgICAgICBwcmludCgnLT4gbXYgdG1wdGlkeScsIGZpbGVuYW1lKQo= --------------1XnNWUP2wdRt2Dvj0mtsSdlW--