From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 3182F3857363 for ; Thu, 28 Apr 2022 09:46:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3182F3857363 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-528-xSeOfU_XNnyorJ_aaKhd0Q-1; Thu, 28 Apr 2022 05:46:40 -0400 X-MC-Unique: xSeOfU_XNnyorJ_aaKhd0Q-1 Received: by mail-wm1-f70.google.com with SMTP id bh7-20020a05600c3d0700b003940829b48dso1670171wmb.1 for ; Thu, 28 Apr 2022 02:46:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:references:from:subject:in-reply-to; bh=q2O6hVZATMLgWaoFSINcq0nUSyg6lsFhM15NTE22RPU=; b=dGrxX5612QEg98kk1fcTrfynNkMoAY0QM94v7Eqn8ESyt/2S/ulbcErI89/25sSaF/ z9rigM5gz+EJbg4gAN5VZObCajoNOunZa5bXCSHHHlK6vcnSuqZvgNuJB16iJHh4q1oz M8SEgh4UA9y0+j85cubhKPG2leiLRZ4/Z4BLwU4fT3Iann5DXHDrN1jMBA9A+JO6bKvM L1q03BfDubqWwCYQS2TLuQ2GWAuveIghyT6kdoPHk0VneKM9kyCOa/RoafNuMhhN6/iP sXPIYKgIMbCMDs9QhNdD9xg0B6mM4drfPEKVeAkcn1ev0dhrXy5EaQMuHZBsaDcC/OwW bDng== X-Gm-Message-State: AOAM533KzRTpHJ/opwdcKxz3+3EuECTN+Wwpj6x55O/77hwLa1iZH+4f 92lTvPRqSTEdeiOeVz6IwWSvX0PbbzM2DbesBONDi/fKaJC9H0HLjU2r6uTg7+044fj6i+rPjKf 7qbu6hpvynnepGnCZBcVZKrNmEW0YIy9Nck1m2Ht7ZOTDJjJpB2DANIfPcvVf7zNFhQ== X-Received: by 2002:a5d:64eb:0:b0:20a:ea5d:4066 with SMTP id g11-20020a5d64eb000000b0020aea5d4066mr8166487wri.677.1651139199068; Thu, 28 Apr 2022 02:46:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGPBjAazCKw8IAfPFHxbRQf6lsT9qYkblQ8JNQpM9+W/W5YMETDwLYqBiU0DBl2GUpWuJmyA== X-Received: by 2002:a5d:64eb:0:b0:20a:ea5d:4066 with SMTP id g11-20020a5d64eb000000b0020aea5d4066mr8166463wri.677.1651139198635; Thu, 28 Apr 2022 02:46:38 -0700 (PDT) Received: from [192.168.1.6] (adsl-2-solo-173-39.claranet.co.uk. [80.168.173.39]) by smtp.gmail.com with ESMTPSA id d13-20020adfc08d000000b0020ad7b380d3sm11893736wrf.6.2022.04.28.02.46.37 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 Apr 2022 02:46:37 -0700 (PDT) Message-ID: <79ba6ad0-7bb6-be2c-2672-6924862c29de@redhat.com> Date: Thu, 28 Apr 2022 10:46:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 To: Binutils References: <878rrsw074.fsf@redhat.com> From: Nick Clifton Subject: Re: binutils as policy checker (was: RFC: Add a linker warning when creating segments with RWX permissions) In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------3hArL7p11DAHUNtDWnVeV8hC" Content-Language: en-GB X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Apr 2022 09:46:47 -0000 This is a multi-part message in MIME format. --------------3hArL7p11DAHUNtDWnVeV8hC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Guys, OK, attached is v2 of my proposed patch. The main features of this new version are: * There are now configure options which can turn off the generation of linker warnings about the creation of executable segments and the creation of executable stacks. By default however not using these configure options will result in the creation of a linker with all of the warnings enabled. * There is new linker command line option: --no-warn-rwx-segments which disables the warnings about executable segments. * There are tests for the new features, plus extra regexps in the testsuite's pruning proc to remove the warnings from the linker's output for normal tests. * The creation of a TLS segment with eXecute permission will trigger a warning, regardless of whether it has the read and/or write permissions set. * There is a new configure time option which will disable the creation of an executable stack simply because an input file is missing a .note-GNU-stack section (for those architectures where such a creation is the normal behaviour). This option is not enabled by default however. At least not yet. I think that this represents the best compromise between helping to promote secure builds whilst also allowing toolchain creators and program builders the option to disable the features if they wish. Any comments ? Cheers Nick --------------3hArL7p11DAHUNtDWnVeV8hC Content-Type: text/x-patch; charset=UTF-8; name="ld-rwx-warn.patch" Content-Disposition: attachment; filename="ld-rwx-warn.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2JmZC9lbGYuYyBiL2JmZC9lbGYuYwppbmRleCAzN2M1M2NmZGYzMi4uZGRh NDdkYTlkMGUgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYuYworKysgYi9iZmQvZWxmLmMKQEAgLTY0NjEs NiArNjQ2MSwyOSBAQCBhc3NpZ25fZmlsZV9wb3NpdGlvbnNfZXhjZXB0X3JlbG9jcyAoYmZkICph YmZkLAogICBhbGxvYyA9IGlfZWhkcnAtPmVfcGhudW07CiAgIGlmIChhbGxvYyAhPSAwKQogICAg IHsKKyAgICAgIGlmIChsaW5rX2luZm8gIT0gTlVMTCAmJiAhIGxpbmtfaW5mby0+bm9fd2Fybl9y d3hfc2VnbWVudHMpCisJeworCSAgLyogTWVtb3J5IHJlc2lkZW50IHNlZ21lbnRzIHdpdGggbm9u LXplcm8gc2l6ZSBhbmQgUldYIHBlcm1pc3Npb25zIGFyZSBhCisJICAgICBzZWN1cml0eSByaXNr LCBzbyB3ZSBnZW5lcmF0ZSBhIHdhcm5pbmcgaGVyZSBpZiB3ZSBhcmUgY3JlYXRpbmcgYW55LiAg Ki8KKwkgIHVuc2lnbmVkIGludCBpOworCisJICBmb3IgKGkgPSAwOyBpIDwgYWxsb2M7IGkrKykK KwkgICAgeworCSAgICAgIGNvbnN0IEVsZl9JbnRlcm5hbF9QaGRyICogcGhkciA9IHRkYXRhLT5w aGRyICsgaTsKKworCSAgICAgIGlmIChwaGRyLT5wX21lbXN6ID09IDApCisJCWNvbnRpbnVlOwor CisJICAgICAgaWYgKHBoZHItPnBfdHlwZSA9PSBQVF9UTFMgJiYgKHBoZHItPnBfZmxhZ3MgJiBQ Rl9YKSkKKwkJX2JmZF9lcnJvcl9oYW5kbGVyIChfKCJ3YXJuaW5nOiAlcEIgaGFzIGEgVExTIHNl Z21lbnQgd2l0aCBleGVjdXRlIHBlcm1pc3Npb24iKSwKKwkJCQkgICAgYWJmZCk7CisJICAgICAg ZWxzZSBpZiAocGhkci0+cF90eXBlID09IFBUX0xPQUQKKwkJICAgICAgICYmIChwaGRyLT5wX2Zs YWdzICYgKFBGX1IgfCBQRl9XIHwgUEZfWCkpID09IChQRl9SIHwgUEZfVyB8IFBGX1gpKQorCQlf YmZkX2Vycm9yX2hhbmRsZXIgKF8oIndhcm5pbmc6ICVwQiBoYXMgYSBMT0FEIHNlZ21lbnQgd2l0 aCBSV1ggcGVybWlzc2lvbnMiKSwKKwkJCQkgICAgYWJmZCk7CisJICAgIH0KKwl9CisgICAgICAK ICAgICAgIGlmIChiZmRfc2VlayAoYWJmZCwgaV9laGRycC0+ZV9waG9mZiwgU0VFS19TRVQpICE9 IDAKIAkgIHx8IGJlZC0+cy0+d3JpdGVfb3V0X3BoZHJzIChhYmZkLCB0ZGF0YS0+cGhkciwgYWxs b2MpICE9IDApCiAJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvYmZkL2VsZmxpbmsuYyBiL2Jm ZC9lbGZsaW5rLmMKaW5kZXggYjU0ZWU1MTdjNzUuLjRkNmZlNjYzZjY4IDEwMDY0NAotLS0gYS9i ZmQvZWxmbGluay5jCisrKyBiL2JmZC9lbGZsaW5rLmMKQEAgLTcxNjgsNyArNzE2OCw3IEBAIHdh cm5pbmc6IGVuYWJsaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgYmVjYXVzZSBvZiAteiBleGVjc3Rh Y2sgY29tbWFuZCBsaW5lIG9wdGlvCiAJCSAgYnJlYWs7CiAJCX0KIAkgICAgfQotCSAgZWxzZSBp ZiAoYmVkLT5kZWZhdWx0X2V4ZWNzdGFjaykKKwkgIGVsc2UgaWYgKGJlZC0+ZGVmYXVsdF9leGVj c3RhY2sgJiYgaW5mby0+ZGVmYXVsdF9leGVjc3RhY2spCiAJICAgIHsKIAkgICAgICBleGVjID0g UEZfWDsKIAkgICAgICBlbXB0eW9iaiA9IGlucHV0b2JqOwpkaWZmIC0tZ2l0IGEvYmludXRpbHMv dGVzdHN1aXRlL2xpYi9iaW51dGlscy1jb21tb24uZXhwIGIvYmludXRpbHMvdGVzdHN1aXRlL2xp Yi9iaW51dGlscy1jb21tb24uZXhwCmluZGV4IGE3NmEzMTBjMTk5Li5jY2MzM2E4MjdiNCAxMDA2 NDQKLS0tIGEvYmludXRpbHMvdGVzdHN1aXRlL2xpYi9iaW51dGlscy1jb21tb24uZXhwCisrKyBi L2JpbnV0aWxzL3Rlc3RzdWl0ZS9saWIvYmludXRpbHMtY29tbW9uLmV4cApAQCAtNjM5LDYgKzYz OSw4IEBAIHByb2MgcHJ1bmVfd2FybmluZ3NfZXh0cmEgeyB0ZXh0IH0gewogICAgIHJlZ3N1YiAt YWxsICIoXnxcbikoXFteXG5cXSo6IFdhcm5pbmc6IEdhcCBpbiBidWlsZCBub3RlcyBkZXRlY3Rl ZCBmcm9tXFteXG5cXSpcbj8pKyIgJHRleHQgIlxcMSIgdGV4dAogICAgIHJlZ3N1YiAtYWxsICIo XnxcbikoXFteXG5cXSo6IHdhcm5pbmc6XFteXG5cXSptaXNzaW5nIFxcLm5vdGVcXC5HTlUtc3Rh Y2sgc2VjdGlvblxbXlxuXF0qXG4/KSsiICR0ZXh0ICJcXDEiIHRleHQKICAgICByZWdzdWIgLWFs bCAiKF58XG4pKFxbXlxuXF0qOiBOT1RFOiBUaGlzIGJlaGF2aW91ciBpcyBkZXByZWNhdGVkXFte XG5cXSpcbj8pKyIgJHRleHQgIlxcMSIgdGV4dAorICAgIHJlZ3N1YiAtYWxsICIoXnxcbikoXFte XG5cXSo6IHdhcm5pbmc6XFteXG5cXSpoYXMgYSBMT0FEIHNlZ21lbnQgd2l0aCBSV1ggcGVybWlz c2lvbnNcW15cblxdKlxuPykrIiAkdGV4dCAiXFwxIiB0ZXh0CisgICAgcmVnc3ViIC1hbGwgIihe fFxuKShcW15cblxdKjogd2FybmluZzpcW15cblxdKmhhcyBhIFRMUyBzZWdtZW50IHdpdGggZXhl Y3V0ZSBwZXJtaXNzaW9uXFteXG5cXSpcbj8pKyIgJHRleHQgIlxcMSIgdGV4dAogICAgIHJldHVy biAkdGV4dAogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2JmZGxpbmsuaCBiL2luY2x1ZGUvYmZk bGluay5oCmluZGV4IGIxNmYzZjQ0Y2E1Li44OGNjOGUyNjE4MyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9iZmRsaW5rLmgKKysrIGIvaW5jbHVkZS9iZmRsaW5rLmgKQEAgLTQ4OSwxMCArNDg5LDI1IEBA IHN0cnVjdCBiZmRfbGlua19pbmZvCiAgICAgIGZsYWdzLiAgKi8KICAgdW5zaWduZWQgaW50IG5v ZXhlY3N0YWNrOiAxOwogCi0gIC8qIFRyaS1zdGF0ZSB2YXJpYWJsZTogMCA9PiBub3Qgc2V0IGJ5 IHVzZXI7IDEgPT4gc2V0LCB3YXJuaW5ncwotICAgICBlbmFibGVkOyAyID0+IHdhcm5pbmdzIGRp c2FibGVkOyAzID0+IHVudXNlZC4gICovCisgIC8qIFRyaS1zdGF0ZSB2YXJpYWJsZToKKyAgICAg MCA9PiB3YXJuIGlmIHRoZSBsaW5rZXIgaXMgY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBzdGFjaywg YnV0CisgICAgIGV4ZWNzdGFjayAoYWJvdmUpIGlzIDAuCisgICAgIDEgPT4gd2FybiBpZiB0aGUg bGlua2VyIGlzIGNyZWF0aW5nIGFuIGV4ZWN1dGFibGUgc3RhY2s7IGlnbm9yZXMKKyAgICAgdGhl IHZhbHVlIG9mIGV4ZWNzdGFjay4KKyAgICAgMiA9PiBkbyBub3Qgd2Fybi4KKyAgICAgMyA9PiBu b3QgdXNlZC4gICovCiAgIHVuc2lnbmVkIGludCB3YXJuX2V4ZWNzdGFjazogMjsKIAorICAvKiBU UlVFIGlmIHdhcm5pbmdzIHNob3VsZCBub3QgYmUgZ2VuZXJhdGVkIGZvciBUTFMgc2VnbWVudHMg d2l0aCBlWGVjdXRlCisgICAgIHBlcm1pc3Npb24gb3IgTE9BRCBzZWdtZW50cyB3aXRoIFJXWCBw ZXJtaXNzaW9ucy4gICovCisgIHVuc2lnbmVkIGludCBub193YXJuX3J3eF9zZWdtZW50czogMTsK KworICAvKiBUUlVFIGlmIHRoZSBzdGFjayBjYW4gYmUgbWFkZSBleGVjdXRhYmxlIGJlY2F1c2Ug b2YgdGhlIGFic2VuY2Ugb2YgYQorICAgICAubm90ZS5HTlUtc3RhY2sgc2VjdGlvbiBpbiBhbiBp bnB1dCBmaWxlLiAgTm90ZSAtIGV2ZW4gaWYgdGhpcyBmaWVsZAorICAgICBpcyBzZXQsIHNvbWUg dGFyZ2V0cyBtYXkgY2hvb3NlIHRvIGlnbm9yZSB0aGUgc2V0dGluZyBhbmQgbm90IGNyZWF0ZQor ICAgICBhbiBleGVjdXRhYmxlIHN0YWNrLiAgKi8KKyAgdW5zaWduZWQgaW50IGRlZmF1bHRfZXhl Y3N0YWNrIDogMTsKKyAgCiAgIC8qIFRSVUUgaWYgd2Ugd2FudCB0byBwcm9kdWNlZCBvcHRpbWl6 ZWQgb3V0cHV0IGZpbGVzLiAgVGhpcyBtaWdodAogICAgICBuZWVkIG11Y2ggbW9yZSB0aW1lIGFu ZCB0aGVyZWZvcmUgbXVzdCBiZSBleHBsaWNpdGx5IHNlbGVjdGVkLiAgKi8KICAgdW5zaWduZWQg aW50IG9wdGltaXplOiAxOwpkaWZmIC0tZ2l0IGEvbGQvTkVXUyBiL2xkL05FV1MKaW5kZXggYjg0 NTUzMTA5ZDIuLjUxNGQxZDlmMjA3IDEwMDY0NAotLS0gYS9sZC9ORVdTCisrKyBiL2xkL05FV1MK QEAgLTEsNiArMSw2IEBACiAtKi0gdGV4dCAtKi0KIAotKiBUaGUgbGlua2VyIHdpbGwgbm93IGdl bmVyYXRlIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBzdGFjayBpcyBtYWRlCisqIFRoZSBFTEYg bGlua2VyIHdpbGwgbm93IGdlbmVyYXRlIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBzdGFjayBp cyBtYWRlCiAgIGV4ZWN1dGFibGUuICBCeSBkZWZhdWx0IHRoaXMgd2FybmluZyBpcyBub3QgaXNz dWVkIGlmIHRoZSB1c2VyIGhhcwogICBzcGVjaWZpY2FsbHkgcmVxdWVzdGVkIGFuIGV4ZWN1dGFi bGUgc3RhY2sgdmlhIHRoZSAiLXogZXhlY3N0YWNrIgogICBjb21tYW5kIGxpbmUgb3B0aW9uLCBi dXQgdGhlIHdhcm5pbmcgY2FuIGJlIGZvcmNlZCB2aWEgdGhlIG5ldwpAQCAtOCw2ICs4LDI4IEBA CiAgIGFuIGV4ZWN1dGFibGUgc3RhY2sgY2FuIGJlIHN1cHByZXNzZWQgdmlhIHRoZSAiLS1uby13 YXJuLWV4ZWNzdGFjayIKICAgb3B0aW9uLgogCisgIEluIGFkZGl0aW9uIHRoZSBFTEYgbGlua2Vy IHdpbGwgYWxzbyB3YXJuIGlmIGl0IGNyZWF0ZXMgYSBtZW1vcnkgcmVzaWRlbnQKKyAgc2VnbWVu dCB3aXRoIGFsbCB0aHJlZSBvZiB0aGUgUmVhZCwgV3JpdGUgYW5kIGVYZWN1dGUgcGVybWlzc2lv bnMgc2V0LCBvcgorICBpZiBpdCBjcmVhdGVzIGEgdGhyZWFkIGxvY2FsIGRhdGEgc2VnbWVudCB3 aXRoIHRoZSBlWGVjdXRlIHBlcm1pc3Npb24gc2V0LgorICBUaGVzZSB3YXJuaW5ncyBjYW4gYmUg ZGlzYWJsZWQgdmlhIC0tbm8td2Fybi1yd3gtc2VnbWVudHMgb3B0aW9uIGFuZAorICByZS1lbmFi bGVkIHZpYSB0aGUgLS13YXJuLXJ3eC1zZWdtZW50cyBvcHRpb24uCisKKyAgTmV3IGNvbmZpZ3Vy ZSBvcHRpb25zIGNhbiBhbHNvIGNvbnRyb2wgdGhlc2UgbmV3IGZlYXR1cmVzOgorICAKKyAgLS1l bmFibGUtd2Fybi1leGVjc3RhY2s9bm8KKyAgICAgd2lsbCBkaXNhYmxlIHRoZSB3YXJuaW5ncyBh Ym91dCBjcmVhdGluZyBhbiBleGVjdXRhYmxlIHN0YWNrLgorICAgICAKKyAgLS1lbmFibGUtd2Fy bi1leGVjc3RhY2s9eWVzCisgICAgIHdpbGwgbWFrZSAtLXdhcm4tZXhlY3N0YWNrIGVuYWJsZWQg YnkgZGVmYXVsdC4KKyAgICAgCisgIC0tZW5hYmxlLXdhcm4tcnd4LXNlZ21lbnRzPW5vCisgICAg IHdpbGwgbWFrZSAtLW5vLXdhcm4tcnd4LXNlZ21lbnRzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAg ICAgCisgIC0tZW5hYmxlLWRlZmF1bC1leGVjc3RhY2s9bm8KKyAgICAgd2lsbCBzdG9wIHRoZSBj cmVhdGlvbiBvZiBhbiBleGVjdXRhYmxlIHN0YWNrIHNpbXBseSBiZWNhdXNlIGFuIGlucHV0IGZp bGUKKyAgICAgaXMgbWlzc2luZyBhIC5ub3RlLkdOVS1zdGFjayBzZWN0aW9uLCBldmVuIG9uIGFy Y2hpdGVjdHVyZXMgd2hlcmUgdGhpcworICAgICBlaGF2aW91ciBpcyB0aGUgZGVmYXVsdC4KKwog KiBUWVBFPTx0eXBlPiBpcyBub3cgc3VwcG9ydGVkIGluIGFuIG91dHB1dCBzZWN0aW9uIGRlc2Ny aXB0aW9uIHRvIHNldCB0aGUKICAgc2VjdGlvbiB0eXBlIHZhbHVlLgogCmRpZmYgLS1naXQgYS9s ZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKaW5kZXggN2Y0Y2ZmMDc5YjcuLjBiMjll ODEwZGRlIDEwMDY0NAotLS0gYS9sZC9jb25maWd1cmUuYWMKKysrIGIvbGQvY29uZmlndXJlLmFj CkBAIC0yMDMsNiArMjAzLDM1IEBAIEFDX0FSR19FTkFCTEUoc2VwYXJhdGUtY29kZSwKICAgbm8p IGFjX2RlZmF1bHRfbGRfel9zZXBhcmF0ZV9jb2RlPTAgOzsKIGVzYWNdKQogCisKK2FjX2RlZmF1 bHRfbGRfd2Fybl9leGVjc3RhY2s9dW5zZXQKK0FDX0FSR19FTkFCTEUod2Fybi1leGVjc3RhY2ss CisJICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdhcm4tZXhlY3N0YWNrXSwKKwkgICAg ICBbZW5hYmxlIHdhcm5pbmdzIHdoZW4gY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBzdGFja10pLAor W2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgeWVzKSBhY19kZWZhdWx0X2xkX3dhcm5fZXhlY3N0 YWNrPTEgOzsKKyAgbm8pICBhY19kZWZhdWx0X2xkX3dhcm5fZXhlY3N0YWNrPS0xIDs7Citlc2Fj XSkKKworYWNfZGVmYXVsdF9sZF93YXJuX3J3eF9zZWdtZW50cz11bnNldAorQUNfQVJHX0VOQUJM RSh3YXJuLXJ3eC1zZWdtZW50cywKKwkgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtd2Fy bi1yd3gtc2VnbWVudHNdLAorCSAgICAgIFtlbmFibGUgd2FybmluZ3Mgd2hlbiBjcmVhdGluZyBz ZWdlbWVudHMgd2l0aCBSV1ggcGVybWlzc2lvbnNdKSwKK1tjYXNlICIke2VuYWJsZXZhbH0iIGlu CisgIHllcykgYWNfZGVmYXVsdF9sZF93YXJuX3J3eF9zZWdtZW50cz0xIDs7CisgIG5vKSAgYWNf ZGVmYXVsdF9sZF93YXJuX3J3eF9zZWdtZW50cz0wIDs7Citlc2FjXSkKKworYWNfZGVmYXVsdF9s ZF9kZWZhdWx0X2V4ZWNzdGFjaz11bnNldAorQUNfQVJHX0VOQUJMRShkZWZhdWx0LWV4ZWNzdGFj aywKKwkgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZGVmYXVsdC1leGVjc3RhY2tdLAor CSAgICAgIFtjcmVhdGUgYW4gZXhlY3V0YWJsZSBzdGFjayBpZiBhbiBpbnB1dCBmaWxlIGlzIG1p c3NpbmcgYSAubm90ZS5HTlUtc3RhY2sgc2VjdGlvbl0pLAorW2Nhc2UgIiR7ZW5hYmxldmFsfSIg aW4KKyAgeWVzKSBhY19kZWZhdWx0X2xkX2RlZmF1bHRfZXhlY3N0YWNrPTEgOzsKKyAgbm8pICBh Y19kZWZhdWx0X2xkX2RlZmF1bHRfZXhlY3N0YWNrPTAgOzsKK2VzYWNdKQorCisKICMgRGVjaWRl IGlmIC0tZXJyb3ItaGFuZGxpbmctc2NyaXB0IHNob3VsZCBiZSBzdXBwb3J0ZWQuCiBhY19zdXBw b3J0X2Vycm9yX2hhbmRsaW5nX3NjcmlwdD11bnNldAogQUNfQVJHX0VOQUJMRShlcnJvci1oYW5k bGluZy1zY3JpcHQsCkBAIC01MDEsNiArNTMwLDI5IEBAIEFDX0RFRklORV9VTlFVT1RFRChERUZB VUxUX0xEX1pfU0VQQVJBVEVfQ09ERSwKICAgJGFjX2RlZmF1bHRfbGRfel9zZXBhcmF0ZV9jb2Rl LAogICBbRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gZW5hYmxlIC16IHNlcGFyYXRlLWNvZGUg aW4gRUxGIGxpbmtlciBieSBkZWZhdWx0Ll0pCiAKKworaWYgdGVzdCAiJHthY19kZWZhdWx0X2xk X3dhcm5fZXhlY3N0YWNrfSIgPSB1bnNldDsgdGhlbgorICBhY19kZWZhdWx0X2xkX3dhcm5fZXhl Y3N0YWNrPTAKK2ZpCitBQ19ERUZJTkVfVU5RVU9URUQoREVGQVVMVF9MRF9XQVJOX0VYRUNTVEFD SywKKyAgJGFjX2RlZmF1bHRfbGRfd2Fybl9leGVjc3RhY2ssCisgIFtEZWZpbmUgdG8gMSBpZiB5 b3Ugd2FudCB0byBlbmFibGUgLS13YXJuLWV4ZWNzdGFjayBpbiBFTEYgbGlua2VyIGJ5IGRlZmF1 bHQuXSkKKworaWYgdGVzdCAiJHthY19kZWZhdWx0X2xkX3dhcm5fcnd4X3NlZ21lbnRzfSIgPSB1 bnNldDsgdGhlbgorICBhY19kZWZhdWx0X2xkX3dhcm5fcnd4X3NlZ21lbnRzPTEKK2ZpCitBQ19E RUZJTkVfVU5RVU9URUQoREVGQVVMVF9MRF9XQVJOX1JXWF9TRUdNRU5UUywKKyAgJGFjX2RlZmF1 bHRfbGRfd2Fybl9yd3hfc2VnbWVudHMsCisgIFtEZWZpbmUgdG8gMCBpZiB5b3Ugd2FudCB0byBk aXNhYmxlIC0td2Fybi1yd3gtc2VnbWVudHMgaW4gRUxGIGxpbmtlciBieSBkZWZhdWx0Ll0pCisK K2lmIHRlc3QgIiR7YWNfZGVmYXVsdF9sZF9kZWZhdWx0X2V4ZWNzdGFja30iID0gdW5zZXQ7IHRo ZW4KKyAgYWNfZGVmYXVsdF9sZF9kZWZhdWx0X2V4ZWNzdGFjaz0xCitmaQorQUNfREVGSU5FX1VO UVVPVEVEKERFRkFVTFRfTERfRVhFQ1NUQUNLLAorICAkYWNfZGVmYXVsdF9sZF9kZWZhdWx0X2V4 ZWNzdGFjaywKKyAgW0RlZmluZSB0byAwIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhlIGdlbmVy YXRpb24gb2YgYW4gZXhlY3V0YWJsZSBzdGFjayB3aGVuIGEgLm5vdGUtR05VLXN0YWNrIHNlY3Rp b24gaXMgbWlzc2luZy5dKQorCisKIGlmIHRlc3QgIiR7YWNfc3VwcG9ydF9lcnJvcl9oYW5kbGlu Z19zY3JpcHR9IiA9IHVuc2V0OyB0aGVuCiAgIGFjX3N1cHBvcnRfZXJyb3JfaGFuZGxpbmdfc2Ny aXB0PTEKIGZpCmRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmLmVtIGIvbGQvZW11bHRlbXBs L2VsZi5lbQppbmRleCA3YWU2ZjZkNTBlMS4uYzAyNzU1OTkwOGMgMTAwNjQ0Ci0tLSBhL2xkL2Vt dWx0ZW1wbC9lbGYuZW0KKysrIGIvbGQvZW11bHRlbXBsL2VsZi5lbQpAQCAtOTIsNiArOTIsOSBA QCBFT0YKIGZpCiBmcmFnbWVudCA8PEVPRgogICBsaW5rX2luZm8uc2VwYXJhdGVfY29kZSA9IERF RkFVTFRfTERfWl9TRVBBUkFURV9DT0RFOworICBsaW5rX2luZm8ud2Fybl9leGVjc3RhY2sgPSBE RUZBVUxUX0xEX1dBUk5fRVhFQ1NUQUNLOworICBsaW5rX2luZm8ubm9fd2Fybl9yd3hfc2VnbWVu dHMgPSAhIERFRkFVTFRfTERfV0FSTl9SV1hfU0VHTUVOVFM7CisgIGxpbmtfaW5mby5kZWZhdWx0 X2V4ZWNzdGFjayA9IERFRkFVTFRfTERfRVhFQ1NUQUNLOwogfQogCiBFT0YKZGlmZiAtLWdpdCBh L2xkL2xkLnRleGkgYi9sZC9sZC50ZXhpCmluZGV4IDZhYzUzNDRlYmY0Li44Y2FkODQ3ODE0MCAx MDA2NDQKLS0tIGEvbGQvbGQudGV4aQorKysgYi9sZC9sZC50ZXhpCkBAIC0yNzAxLDYgKzI3MDEs MjIgQEAgb3B0aW9uIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgaXNzdWVkIHdoZW5ldmVyIHRoaXMg Y2FzZSBvY2N1cnMuCiBPbmx5IHdhcm4gb25jZSBmb3IgZWFjaCB1bmRlZmluZWQgc3ltYm9sLCBy YXRoZXIgdGhhbiBvbmNlIHBlciBtb2R1bGUKIHdoaWNoIHJlZmVycyB0byBpdC4KIAorQGtpbmRl eCAtLXdhcm4tcnd4LXNlZ21lbnRzCitAY2luZGV4IHdhcm5pbmdzLCBvbiB3cml0ZWFibGUgYW5k IGV4ZWN0dWFibGUgc2VnbWVudHMKK0BjaW5kZXggZXhlY3V0YWJsZSBzZWdtZW50cywgd2Fybmlu Z3Mgb24KK0BpdGVtIC0td2Fybi1yd3gtc2VnbWVudHMKK0BpdGVteCAtLW5vLXdhcm4tcnd4LXNl Z21lbnRzCitXYXJuIGlmIHRoZSBsaW5rZXIgY3JlYXRlcyBhIGxvYWRhYmxlLCBub24temVybyBz aXplZCBzZWdtZW50IHRoYXQgaGFzCithbGwgdGhyZWUgb2YgdGhlIHJlYWQsIHdyaXRlIGFuZCBl eGVjdXRlIHBlcm1pc3Npb24gZmxhZ3Mgc2V0LiAgU3VjaCBhCitzZWdtZW50IHJlcHJlc2VudHMg YSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4gIEluIGFkZGl0aW9uCit3YXJuaW5n cyB3aWxsIGJlIGdlbmVyYXRlZCBpZiBhIHRocmVhZCBsb2NhbCBzdG9yYWdlIHNlZ21lbnQgaXMK K2NyZWF0ZWQgd2l0aCB0aGUgZXhlY3V0ZSBwZXJtaXNzaW9uIGZsYWcgc2V0LCByZWdhcmRsZXNz IG9mIHdoZXRoZXIgb3IKK25vdCBpdCBoYXMgdGhlIHJlYWQgYW5kL29yIHdyaXRlIGZsYWdzIHNl dC4KKworVGhlc2Ugd2FybmluZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gIFRoZXkgY2FuIGJl IGRpc2FibGVkIHZpYSB0aGUKK0BvcHRpb257LS1uby13YXJuLXJ3eC1zZWdtZW50c30gb3B0aW9u IGFuZCByZS1lbmFibGVkIHZpYSB0aGUKK0BvcHRpb257LS13YXJuLXJ3eC1zZWdtZW50c30gb3B0 aW9uLgorCiBAa2luZGV4IC0td2Fybi1zZWN0aW9uLWFsaWduCiBAY2luZGV4IHdhcm5pbmdzLCBv biBzZWN0aW9uIGFsaWdubWVudAogQGNpbmRleCBzZWN0aW9uIGFsaWdubWVudCwgd2FybmluZ3Mg b24KZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCmluZGV4IDFkNDJkYzg2NzJl Li41N2FkZTFmNzU0YiAxMDA2NDQKLS0tIGEvbGQvbGRsZXguaAorKysgYi9sZC9sZGxleC5oCkBA IC0xNjYsMTAgKzE2NiwxMyBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKICAgT1BUSU9OX0NURl9TSEFS RV9UWVBFUywKICAgT1BUSU9OX1dBUk5fRVhFQ1NUQUNLLAogICBPUFRJT05fTk9fV0FSTl9FWEVD U1RBQ0ssCisgIE9QVElPTl9XQVJOX1JXWF9TRUdNRU5UUywKKyAgT1BUSU9OX05PX1dBUk5fUldY X1NFR01FTlRTLAogfTsKIAogLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCi10eXBl ZGVmIGVudW0gaW5wdXRfZW51bSB7Cit0eXBlZGVmIGVudW0gaW5wdXRfZW51bQorewogICBpbnB1 dF9zZWxlY3RlZCwJCS8qIFdlJ3ZlIHNldCB0aGUgaW5pdGlhbCBzdGF0ZS4gICovCiAgIGlucHV0 X3NjcmlwdCwKICAgaW5wdXRfbXJpX3NjcmlwdCwKZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIv bGQvbGV4c3VwLmMKaW5kZXggMjkyOWZlY2I2MDQuLjc4MTkwNDcyOTA3IDEwMDY0NAotLS0gYS9s ZC9sZXhzdXAuYworKysgYi9sZC9sZXhzdXAuYwpAQCAtNTQwLDYgKzU0MCwxMCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQogICAgICdcMCcsIE5VTEwsIE5f KCJXYXJuIHdoZW4gY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBzdGFjayIpLCBUV09fREFTSEVTIH0s CiAgIHsgeyJuby13YXJuLWV4ZWNzdGFjayIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTk9f V0FSTl9FWEVDU1RBQ0t9LAogICAgICdcMCcsIE5VTEwsIE5fKCJEbyBub3Qgd2FybiB3aGVuIGNy ZWF0aW5nIGFuIGV4ZWN1dGFibGUgc3RhY2siKSwgVFdPX0RBU0hFUyB9LAorICB7IHsid2Fybi1y d3gtc2VnbWVudHMiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX1dBUk5fUldYX1NFR01FTlRT fSwKKyAgICAnXDAnLCBOVUxMLCBOXygiV2FybiB3aGVuIGNyZWF0aW5nIGV4ZWN1dGFibGUgc2Vn bWVudHMiKSwgVFdPX0RBU0hFUyB9LAorICB7IHsibm8td2Fybi1yd3gtc2VnbWVudHMiLCBub19h cmd1bWVudCwgTlVMTCwgT1BUSU9OX05PX1dBUk5fUldYX1NFR01FTlRTfSwKKyAgICAnXDAnLCBO VUxMLCBOXygiRG8gbm90IHdhcm4gd2hlbiBjcmVhdGluZyBleGVjdXRhYmxlIHNlZ21lbnRzIiks IFRXT19EQVNIRVMgfSwKICAgeyB7Indhcm4tbXVsdGlwbGUtZ3AiLCBub19hcmd1bWVudCwgTlVM TCwgT1BUSU9OX1dBUk5fTVVMVElQTEVfR1B9LAogICAgICdcMCcsIE5VTEwsIE5fKCJXYXJuIGlm IHRoZSBtdWx0aXBsZSBHUCB2YWx1ZXMgYXJlIHVzZWQiKSwgVFdPX0RBU0hFUyB9LAogICB7IHsi d2Fybi1vbmNlIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9XQVJOX09OQ0V9LApAQCAtOTI1 LDYgKzkyOSwxMiBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKIAlj YXNlIE9QVElPTl9OT19XQVJOX0VYRUNTVEFDSzoKIAkgIGxpbmtfaW5mby53YXJuX2V4ZWNzdGFj ayA9IDI7CiAJICBicmVhazsKKwljYXNlIE9QVElPTl9XQVJOX1JXWF9TRUdNRU5UUzoKKwkgIGxp bmtfaW5mby5ub193YXJuX3J3eF9zZWdtZW50cyA9IDA7CisJICBicmVhazsKKwljYXNlIE9QVElP Tl9OT19XQVJOX1JXWF9TRUdNRU5UUzoKKwkgIGxpbmtfaW5mby5ub193YXJuX3J3eF9zZWdtZW50 cyA9IDE7CisJICBicmVhazsKIAljYXNlICdlJzoKIAkgIGxhbmdfYWRkX2VudHJ5IChvcHRhcmcs IHRydWUpOwogCSAgYnJlYWs7CkBAIC0yMTU5LDEwICsyMTY5LDMxIEBAIGVsZl9zdGF0aWNfbGlz dF9vcHRpb25zIChGSUxFICpmaWxlKQogICAteiBleGVjc3RhY2sgICAgICAgICAgICAgICAgTWFy ayBleGVjdXRhYmxlIGFzIHJlcXVpcmluZyBleGVjdXRhYmxlIHN0YWNrXG4iKSk7CiAgIGZwcmlu dGYgKGZpbGUsIF8oIlwKICAgLXogbm9leGVjc3RhY2sgICAgICAgICAgICAgIE1hcmsgZXhlY3V0 YWJsZSBhcyBub3QgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2tcbiIpKTsKKyNpZiBERUZBVUxU X0xEX1dBUk5fRVhFQ1NUQUNLID4gMAorICBmcHJpbnRmIChmaWxlLCBfKCJcCisgIC0td2Fybi1l eGVjc3RhY2sgICAgICAgICAgICBHZW5lcmF0ZSBhIHdhcm5pbmcgaWYgdGhlIHN0YWNrIGlzIGV4 ZWN1dGFibGUgKGRlZmF1bHQpXG4iKSk7CisjZWxzZQogICBmcHJpbnRmIChmaWxlLCBfKCJcCiAg IC0td2Fybi1leGVjc3RhY2sgICAgICAgICAgICBHZW5lcmF0ZSBhIHdhcm5pbmcgaWYgdGhlIHN0 YWNrIGlzIGV4ZWN1dGFibGVcbiIpKTsKKyNlbmRpZgorI2lmIERFRkFVTFRfTERfV0FSTl9FWEVD U1RBQ0sgPCAwCisgIGZwcmludGYgKGZpbGUsIF8oIlwKKyAgLS1uby13YXJuLWV4ZWNzdGFjayAg ICAgICAgIERvIG5vdCBnZW5lcmF0ZSBhIHdhcm5pbmcgaWYgdGhlIHN0YWNrIGlzIGV4ZWN1dGFi bGUgKGRlZmF1bHQpXG4iKSk7CisjZWxzZQogICBmcHJpbnRmIChmaWxlLCBfKCJcCiAgIC0tbm8t d2Fybi1leGVjc3RhY2sgICAgICAgICBEbyBub3QgZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIHRoZSBz dGFjayBpcyBleGVjdXRhYmxlXG4iKSk7CisjZW5kaWYKKyNpZiBERUZBVUxUX0xEX1dBUk5fUldY X1NFR01FTlRTCisgIGZwcmludGYgKGZpbGUsIF8oIlwKKyAgLS13YXJuLXJ3eC1zZWdtZW50cyAg ICAgICAgIEdlbmVyYXRlIGEgd2FybmluZyBpZiBhIExPQUQgc2VnbWVudCBoYXMgUldYIHBlcm1p c3Npb25zIChkZWZhdWx0KVxuIikpOworICBmcHJpbnRmIChmaWxlLCBfKCJcCisgIC0tbm8td2Fy bi1yd3gtc2VnbWVudHMgICAgICBEbyBub3QgZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIGEgTE9BRCBz ZWdtZW50cyBoYXMgUldYIHBlcm1pc3Npb25zXG4iKSk7CisjZWxzZQorICBmcHJpbnRmIChmaWxl LCBfKCJcCisgIC0td2Fybi1yd3gtc2VnbWVudHMgICAgICAgICBHZW5lcmF0ZSBhIHdhcm5pbmcg aWYgYSBMT0FEIHNlZ21lbnQgaGFzIFJXWCBwZXJtaXNzaW9uc1xuIikpOworICBmcHJpbnRmIChm aWxlLCBfKCJcCisgIC0tbm8td2Fybi1yd3gtc2VnbWVudHMgICAgICBEbyBub3QgZ2VuZXJhdGUg YSB3YXJuaW5nIGlmIGEgTE9BRCBzZWdtZW50cyBoYXMgUldYIHBlcm1pc3Npb25zIChkZWZhdWx0 KVxuIikpOworI2VuZGlmCiAgIGZwcmludGYgKGZpbGUsIF8oIlwKICAgLXogdW5pcXVlLXN5bWJv bCAgICAgICAgICAgIEF2b2lkIGR1cGxpY2F0ZWQgbG9jYWwgc3ltYm9sIG5hbWVzXG4iKSk7CiAg IGZwcmludGYgKGZpbGUsIF8oIlwKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvY2hh bmdlbG1hLmQgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL2NoYW5nZWxtYS5kCmluZGV4IDg1OGE4ZGIz N2FlLi41NjdlNzJkMzMwMSAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9jaGFuZ2Vs bWEuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL2NoYW5nZWxtYS5kCkBAIC0xLDUgKzEsNSBA QAogI25hbWU6IGNoYW5nZWxtYSAocHIyMDY1OSkKLSNsZDogLVQgY2hhbmdlbG1hLmxuaworI2xk OiAtVCBjaGFuZ2VsbWEubG5rIC0tbm8td2Fybi1yd3gtc2VnbWVudHMKICNvYmpjb3B5X2xpbmtl ZF9maWxlOiAtLWNoYW5nZS1zZWN0aW9uLWxtYSAuZHluYW1pYysweDgwMDAwMDAwCiAjcmVhZGVs ZjogLWwgLS13aWRlCiAjeGZhaWw6IHJ4LSotKgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xk LWVsZi9lbGYuZXhwIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9lbGYuZXhwCmluZGV4IGQ1NjE1NDAx MWIzLi43N2U4Y2EzODFmYiAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9lbGYuZXhw CisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvZWxmLmV4cApAQCAtMjI2LDcgKzIyNiwxOCBAQCBp ZiB7ICAgW2lzdGFyZ2V0ICotKi0qbGludXgqXQogCSAgICAiIiBcCiAJICAgIHtwcjIzOTAwLTEu c30gXAogCSAgICBbbGlzdCBbbGlzdCAicmVhZGVsZiIgey1XbH0gJHByMjM5MDBfMV9leHBdXSBc Ci0JICAgICJwcjIzOTAwLTEuZXhlIl0gXAorCSAgICAgInByMjM5MDAtMS5leGUiXSBcCisJICBd CisKKyAgICAjIFRlc3QgdGhlIGxpbmtlcidzIGdlbmVyYXRpb24gb2YgZXhlY3N0YWNrIGFuZCBl eGVjdXRhYmxlIHNlZ21lbnQgd2FybmluZ3MuCisgICAgIyBTaW5jZSB0aGVzZSBhcmUgbm9ybWFs bHkgcHJ1bmVkIGZyb20gdGhlIGxpbmtlcidzIG91dHB1dCB3ZSB0ZW1wb3JhcmlseQorICAgICMg ZGlzYWJsZSB0aGEgYWN0aW9uIGhlcmUuCisgICAgcmVuYW1lIHBydW5lX3dhcm5pbmdzX2V4dHJh IG9sZF9wcnVuZV93YXJuaW5nc19leHRyYQorICAgIHByb2MgcHJ1bmVfd2FybmluZ3NfZXh0cmEg eyB0ZXh0IH0geworCXJldHVybiAkdGV4dAorICAgIH0KKyAgICAKKyAgICBydW5fbGRfbGlua190 ZXN0cyBbbGlzdCBcCiAJW2xpc3QgIlBSIGxkLzI5MDcyICh3YXJuIGFib3V0IGFuIGV4ZWN1dGFi bGUgLm5vdGUuR05VLXN0YWNrKSIgXAogCSAgICAiLWUgMCIgXAogCSAgICAiIiBcCkBAIC0yNDgs MjMgKzI1OSwzOSBAQCBpZiB7ICAgW2lzdGFyZ2V0ICotKi0qbGludXgqXQogCSAgICB7cHIyOTA3 Mi1hLnN9IFwKIAkgICAge30gXAogCSAgICAicHIyOTA3Mi1kLmV4ZSJdIFwKLQldCisJW2xpc3Qg IkVuc3VyZSB0aGF0IGEgd2FybmluZyBpc3N1ZWQgd2hlbiBjcmVhdGluZyBhIHNlZ21lbnQgd2l0 aCBSV1ggcGVybWlzc2lvbnMiIFwKKwkgICAgIi1lIDAgLVRub2JpdHMtMS50IC0td2Fybi1yd3gt c2VnbWVudHMiIFwKKwkgICAgIiIgXAorCSAgICAiIiBcCisJICAgIHtub2JpdHMtMS5zfSBcCisJ ICAgICB7e2xkIHJ3eC1zZWdtZW50cy0xLmx9fSBcCisJICAgICJyd3gtc2VnbWVudHMtMS5leGUi XSBcCisJW2xpc3QgIkVuc3VyZSB0aGF0IGEgd2FybmluZyBpc3N1ZWQgd2hlbiBjcmVhdGluZyBh IFRMUyBzZWdtZW50IHdpdGggZXhlY3V0ZSBwZXJtaXNzaW9uIiBcCisJICAgICItZSAwIC1UIHJ3 eC1zZWdtZW50cy0yLnQgLS13YXJuLXJ3eC1zZWdtZW50cyIgXAorCSAgICAiIiBcCisJICAgICIi IFwKKwkgICAge3NpemUtMi5zfSBcCisJICAgICB7e2xkIHJ3eC1zZWdtZW50cy0yLmx9fSBcCisJ ICAgICJyd3gtc2VnbWVudHMtMi5leGUiXSBcCisJW2xpc3QgIkVuc3VyZSB0aGF0IHRoZSB3YXJu aW5nIGNhbiBiZSBzdXBwcmVzc2VkIiBcCisJICAgICItZSAwIC1Ubm9iaXRzLTEudCAtLW5vLXdh cm4tcnd4LXNlZ21lbnRzIiBcCisJICAgICIiIFwKKwkgICAgIiIgXAorCSAgICB7bm9iaXRzLTEu c30gXAorCSAgICAge30gXAorCSAgICAicnd4LXNlZ21lbnRzLTMuZXhlIl0gXAorCSAgXQorCiAg ICAgaWYgeyBbdGFyZ2V0X2RlZmF1bHRzX3RvX2V4ZWNzdGFja10gfSB7Ci0JcmVuYW1lIHBydW5l X3dhcm5pbmdzX2V4dHJhIG9sZF9wcnVuZV93YXJuaW5nc19leHRyYQotCXByb2MgcHJ1bmVfd2Fy bmluZ3NfZXh0cmEgeyB0ZXh0IH0gewotCSAgICByZXR1cm4gJHRleHQKLQl9CiAJcnVuX2xkX2xp bmtfdGVzdHMgW2xpc3QgXAogCSAgIFtsaXN0ICJQUiBsZC8yOTA3MiAod2FybiBhYm91dCBhYnNl bnQgLm5vdGUuR05VLXN0YWNrKSIgXAotCSAgICAiLWUgMCAteiBzdGFjay1zaXplPTB4MTIzNDAw IiBcCisJICAgICItZSAwIC16IHN0YWNrLXNpemU9MHgxMjM0MDAgIC0td2Fybi1leGVjc3RhY2si IFwKIAkgICAgIiIgXAogCSAgICAiIiBcCiAJICAgIHtwcjI5MDcyLWIuc30gXAogCSAgICB7e2xk IHByMjkwNzIuYi53YXJufX0gXAogCSAgICAicHIyOTA3Mi1iLmV4ZSJdIFwKIAldCi0JcmVuYW1l IHBydW5lX3dhcm5pbmdzX2V4dHJhICIiCi0JcmVuYW1lIG9sZF9wcnVuZV93YXJuaW5nc19leHRy YSBwcnVuZV93YXJuaW5nc19leHRyYQogICAgIH0gZWxzZSB7CiAJcnVuX2xkX2xpbmtfdGVzdHMg W2xpc3QgXAogCSAgIFtsaXN0ICJQUiBsZC8yOTA3MiAoaWdub3JlIGFic2VudCAubm90ZS5HTlUt c3RhY2spIiBcCkBAIC0yNzYsNiArMzAzLDEwIEBAIGlmIHsgICBbaXN0YXJnZXQgKi0qLSpsaW51 eCpdCiAJICAgICJwcjI5MDcyLWIuZXhlIl0gXAogCV0KICAgICB9CisKKyAgICAjIFJlc3RvcmUg dGhlIG5vcm1hbCBwcnVuaW5nIGJlaGF2aW91ci4KKyAgICByZW5hbWUgcHJ1bmVfd2FybmluZ3Nf ZXh0cmEgIiIKKyAgICByZW5hbWUgb2xkX3BydW5lX3dhcm5pbmdzX2V4dHJhIHBydW5lX3dhcm5p bmdzX2V4dHJhCiB9CiAKIGlmIFtjaGVja19nY19zZWN0aW9uc19hdmFpbGFibGVdIHsKZGlmZiAt LWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvZmxhZ3MxLmQgYi9sZC90ZXN0c3VpdGUvbGQtZWxm L2ZsYWdzMS5kCmluZGV4IDZjZDhiM2YzODMyLi5kOTAzNGUyNWRjNyAxMDA2NDQKLS0tIGEvbGQv dGVzdHN1aXRlL2xkLWVsZi9mbGFnczEuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL2ZsYWdz MS5kCkBAIC0xLDUgKzEsNSBAQAogI25hbWU6IC0tc2V0LXNlY3Rpb24tZmxhZ3MgdGVzdCAxIChz ZWN0aW9ucykKLSNsZDogLVRmbGFnczEubGQKKyNsZDogLVRmbGFnczEubGQgLS1uby13YXJuLXJ3 eC1zZWdtZW50cwogI29iamNvcHlfbGlua2VkX2ZpbGU6IC0tc2V0LXNlY3Rpb24tZmxhZ3MgLnBv c3RfdGV4dF9yZXNlcnZlPWNvbnRlbnRzLGFsbG9jLGxvYWQscmVhZG9ubHksY29kZQogI3JlYWRl bGY6IC1TIC0td2lkZQogCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL21heHBhZ2U1 LmQgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL21heHBhZ2U1LmQKaW5kZXggOWQ5YjU3YTg1M2EuLjg0 M2E5NzYxMTFhIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZWxmL21heHBhZ2U1LmQKKysr IGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9tYXhwYWdlNS5kCkBAIC0xLDYgKzEsNiBAQAogI3NvdXJj ZTogbWF4cGFnZTUucwogI2FzOiAtLTMyCi0jbGQ6IC16IG1heC1wYWdlLXNpemU9MHgyMDAwMDAg LVQgbWF4cGFnZTUudAorI2xkOiAteiBtYXgtcGFnZS1zaXplPTB4MjAwMDAwIC1UIG1heHBhZ2U1 LnQgLS1uby13YXJuLXJ3eC1zZWdtZW50cwogI29iamNvcHlfbGlua2VkX2ZpbGU6IC1SIC5mb28K ICNyZWFkZWxmOiAtbCAtLXdpZGUKICN0YXJnZXQ6IHg4Nl82NC0qLWxpbnV4KiBpPzg2LSotbGlu dXgtZ251IGk/ODYtKi1nbnUqCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL25vdGUt Mi5kIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9ub3RlLTIuZAppbmRleCBhZmYzMjQwNmRlMi4uZWQ4 MTcwM2RjMmQgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvbm90ZS0yLmQKKysrIGIv bGQvdGVzdHN1aXRlL2xkLWVsZi9ub3RlLTIuZApAQCAtMSw0ICsxLDQgQEAKLSNsZDogLVRub3Rl LTIudAorI2xkOiAtVG5vdGUtMi50IC0tbm8td2Fybi1yd3gtc2VnbWVudHMKICNvYmpjb3B5X2xp bmtlZF9maWxlOiAtUiAuZm9vIAogI3JlYWRlbGY6IC1sIC0td2lkZQogCi0tLSAvZGV2L251bGwJ MjAyMi0wNC0yNyAwODoxNToyNy4zNTgwMTA1MTYgKzAxMDAKKysrIGN1cnJlbnQvbGQvdGVzdHN1 aXRlL2xkLWVsZi9yd3gtc2VnbWVudHMtMS5sCTIwMjItMDQtMjcgMTA6MTc6NDguMjU0OTE5MzAw ICswMTAwCkBAIC0wLDAgKzEgQEAKKy4qd2FybmluZzogLiogaGFzIGEgTE9BRCBzZWdtZW50IHdp dGggUldYIHBlcm1pc3Npb25zCi0tLSAvZGV2L251bGwJMjAyMi0wNC0yNyAwODoxNToyNy4zNTgw MTA1MTYgKzAxMDAKKysrIGN1cnJlbnQvbGQvdGVzdHN1aXRlL2xkLWVsZi9yd3gtc2VnbWVudHMt Mi5sCTIwMjItMDQtMjcgMTA6MjA6MDUuOTk2NDEwNDY4ICswMTAwCkBAIC0wLDAgKzEgQEAKKy4q OiB3YXJuaW5nOiAuKiBoYXMgYSBUTFMgc2VnbWVudCB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbgot LS0gL2Rldi9udWxsCTIwMjItMDQtMjcgMDg6MTU6MjcuMzU4MDEwNTE2ICswMTAwCisrKyBjdXJy ZW50L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcnd4LXNlZ21lbnRzLTIudAkyMDIyLTA0LTI3IDA5OjU4 OjA0LjY2MTI4NDQ5MyArMDEwMApAQCAtMCwwICsxLDIwIEBACitQSERSUworeworICBoZWFkZXIg UFRfUEhEUiBQSERSUyA7CisJIAorICBpbWFnZSBQVF9MT0FEIEZMQUdTICg1KSBQSERSUzsKKyAg dGxzICAgUFRfVExTICBGTEFHUyAoNyk7CisgIAorfQorU0VDVElPTlMKK3sKKyAgLnRleHQgMHgx MDAgOiB7ICooLnRleHQpIH0gOmltYWdlCisgIC50ZGF0YSA6IHsgKigudGRhdGEpIH0gOmltYWdl IDp0bHMKKyAgLnRic3MgOiB7ICooLnRic3MpIH0gOmltYWdlIDogdGxzCisgIC5tYXAgOiB7Cisg ICAgTE9ORyAoU0laRU9GICgudGV4dCkpCisgICAgTE9ORyAoU0laRU9GICgudGRhdGEpKQorICAg IExPTkcgKFNJWkVPRiAoLnRic3MpKQorICB9IDppbWFnZQorICAvRElTQ0FSRC8gOiB7ICooKikg fQorfQo= --------------3hArL7p11DAHUNtDWnVeV8hC--