From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id CCEC33858031 for ; Mon, 19 Jun 2023 11:37:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CCEC33858031 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="6.00,254,1681200000"; d="scan'208";a="10320776" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 19 Jun 2023 03:37:58 -0800 IronPort-SDR: QJfW7Wr8nrag0M2Ot1HW3EzLsZP3yUZIdON1e1pVOZaZkWma4Kten2294okmO83U11Fjlota7c avisq3rCPuWSH3p6tb9se9JMd44Jx1d5jqUfKeq01TYFxcORlkV5pOwf8MeLHPTckQU+CsklTj 6Kvo6kXA9wocqRUL+ov+MGT6EOWCHgmR+hy0XFTU1f5SfjbJVAHYQ4sNXUWP1L4Zy8uGpnu0wO RpsYnPu4KNVy9yvwq1FO5sdBKsRUPVY1wsR+t9RGyJenwZqlIdPVr5vJK5oogEQ1r0Gg2OqTRe z4s= Content-Type: multipart/mixed; boundary="------------3tNbRx95vBF3iHQDEVP4Lcbf" Message-ID: Date: Mon, 19 Jun 2023 12:37:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.12.0 Content-Language: en-GB From: Andrew Stubbs Subject: [committed] amdgcn: minimal V64TImode vector support To: "gcc-patches@gcc.gnu.org" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------3tNbRx95vBF3iHQDEVP4Lcbf Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch adds just enough TImode vector support to use them for moving data about. This is primarily for the use of divmodv64di4, which will use TImode to return a pair of DImode values. The TImode vectors have no other operators defined, and there are no hardware instructions to support this mode, beyond load and store. Committed to mainline, and OG13 will follow shortly. Andrew --------------3tNbRx95vBF3iHQDEVP4Lcbf Content-Type: text/plain; charset="UTF-8"; name="230619-ti-vectors.patch" Content-Disposition: attachment; filename="230619-ti-vectors.patch" Content-Transfer-Encoding: base64 YW1kZ2NuOiBtaW5pbWFsIFY2NFRJbW9kZSB2ZWN0b3Igc3VwcG9ydAoKSnVzdCBlbm91Z2gg c3VwcG9ydCBmb3IgVEltb2RlIHZlY3RvcnMgdG8gZXhpc3QsIGxvYWQsIHN0b3JlLCBtb3Zl LAp3aXRob3V0IGFueSByZWFsIGluc3RydWN0aW9ucyBhdmFpbGFibGUuCgpUaGlzIGlzIHBy aW1hcmlseSBmb3IgdGhlIHVzZSBvZiBkaXZtb2R2NjRkaTQsIHdoaWNoIHVzZXMgVEltb2Rl IHRvCnJldHVybiBhIHBhaXIgb2YgREltb2RlIHZhbHVlcy4KCmdjYy9DaGFuZ2VMb2c6CgoJ KiBjb25maWcvZ2NuL2djbi1wcm90b3MuaCAodmdwcl80cmVnX21vZGVfcCk6IE5ldyBmdW5j dGlvbi4KCSogY29uZmlnL2djbi9nY24tdmFsdS5tZCAoVl80UkVHLCBWXzRSRUdfQUxUKTog TmV3IGl0ZXJhdG9ycy4KCShWX01PViwgVl9NT1ZfQUxUKTogTGlrZXdpc2UuCgkoc2NhbGFy X21vZGUsIFNDQUxBUl9NT0RFKTogQWRkIFRJbW9kZS4KCSh2bnNpLCBWblNJLCB2bmRpLCBW bkRJKTogTGlrZXdpc2UuCgkodmVjX21lcmdlLCB2ZWNfbWVyZ2Vfd2l0aF9jbG9iYmVyLCB2 ZWNfbWVyZ2Vfd2l0aF92Y2MpOiBVc2UgVl9NT1YuCgkobW92PG1vZGU+LCBtb3Y8bW9kZT5f dW5zcGVjKTogVXNlIFZfTU9WLgoJKCptb3Y8bW9kZT5fNHJlZyk6IE5ldyBpbnNuLgoJKG1v djxtb2RlPl9leGVjKTogTmV3IDRyZWcgdmFyaWFudC4KCShtb3Y8bW9kZT5fc2dwcmJhc2Up OiBMaWtld2lzZS4KCShyZWxvYWRfaW48bW9kZT4sIHJlbG9hZF9vdXQ8bW9kZT4pOiBVc2Ug Vl9NT1YuCgkodmVjX3NldDxtb2RlPik6IExpa2V3aXNlLgoJKHZlY19kdXBsaWNhdGU8bW9k ZT48ZXhlYz4pOiBOZXcgNHJlZyB2YXJpYW50LgoJKHZlY19leHRyYWN0PG1vZGU+PHNjYWxh cl9tb2RlPik6IExpa2V3aXNlLgoJKHZlY19leHRyYWN0PFZfQUxMOm1vZGU+PFZfQUxMX0FM VDptb2RlPik6IFJlbmFtZSB0byAuLi4KCSh2ZWNfZXh0cmFjdDxWX01PVjptb2RlPjxWX01P Vl9BTFQ6bW9kZT4pOiAuLi4gdGhpcywgYW5kIHVzZSBWX01PVi4KCSh2ZWNfZXh0cmFjdDxW XzRSRUc6bW9kZT48Vl80UkVHX0FMVDptb2RlPl9ub3ApOiBOZXcgNHJlZyB2YXJpYW50LgoJ KGZvbGRfZXh0cmFjdF9sYXN0Xzxtb2RlPik6IFVzZSBWX01PVi4KCSh2ZWNfaW5pdDxWX0FM TDptb2RlPjxWX0FMTF9BTFQ6bW9kZT4pOiBSZW5hbWUgdG8gLi4uCgkodmVjX2luaXQ8Vl9N T1Y6bW9kZT48Vl9NT1ZfQUxUOm1vZGU+KTogLi4uIHRoaXMsIGFuZCB1c2UgVl9NT1YuCgko Z2F0aGVyX2xvYWQ8bW9kZT48dm5zaT4sIGdhdGhlcjxtb2RlPl9leHByPGV4ZWM+LAoJZ2F0 aGVyPG1vZGU+X2luc25fMW9mZnNldDxleGVjPiwgZ2F0aGVyPG1vZGU+X2luc25fMW9mZnNl dF9kczxleGVjPiwKCWdhdGhlcjxtb2RlPl9pbnNuXzJvZmZzZXRzPGV4ZWM+KTogVXNlIFZf TU9WLgoJKHNjYXR0ZXJfc3RvcmU8bW9kZT48dm5zaT4sIHNjYXR0ZXI8bW9kZT5fZXhwcjxl eGVjX3NjYXR0ZXI+LAoJc2NhdHRlcjxtb2RlPl9pbnNuXzFvZmZzZXQ8ZXhlY19zY2F0dGVy PiwKCXNjYXR0ZXI8bW9kZT5faW5zbl8xb2Zmc2V0X2RzPGV4ZWNfc2NhdHRlcj4sCglzY2F0 dGVyPG1vZGU+X2luc25fMm9mZnNldHM8ZXhlY19zY2F0dGVyPik6IExpa2V3aXNlLgoJKG1h c2tsb2FkPG1vZGU+ZGksIG1hc2tzdG9yZTxtb2RlPmRpLCBtYXNrX2dhdGhlcl9sb2FkPG1v ZGU+PHZuc2k+LAoJbWFza19zY2F0dGVyX3N0b3JlPG1vZGU+PHZuc2k+KTogTGlrZXdpc2Uu CgkqIGNvbmZpZy9nY24vZ2NuLmNjIChnY25fY2xhc3NfbWF4X25yZWdzKTogVXNlIHZncHJf NHJlZ19tb2RlX3AuCgkoZ2NuX2hhcmRfcmVnbm9fbW9kZV9vayk6IExpa2V3aXNlLgoJKEdF Tl9WTk0pOiBBZGQgVEltb2RlIHN1cHBvcnQuCgkoVVNFX1RJKTogTmV3IG1hY3JvLiBTZXBh cmF0ZSBUSW1vZGUgb3BlcmF0aW9ucyBmcm9tIG5vbi1USW1vZGUgb25lcy4KCShnY25fdmVj dG9yX21vZGVfc3VwcG9ydGVkX3ApOiBBZGQgVjY0VEltb2RlLCBWMzJUSW1vZGUsIFYxNlRJ bW9kZSwKCVY4VEltb2RlLCBhbmQgVjJUSW1vZGUuCgkocHJpbnRfb3BlcmFuZCk6ICBBZGQg J0onIGFuZCAnSycgcHJpbnQgY29kZXMuCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24v Z2NuLXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLXByb3Rvcy5oCmluZGV4IDI4N2Nl MTdkNDIyLi4zYmVmYjJiN2NhYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2NuLXBy b3Rvcy5oCisrKyBiL2djYy9jb25maWcvZ2NuL2djbi1wcm90b3MuaApAQCAtMTM2LDYgKzEz NiwxNyBAQCB2Z3ByXzJyZWdfbW9kZV9wIChtYWNoaW5lX21vZGUgbW9kZSkKICAgcmV0dXJu IChtb2RlID09IERJbW9kZSB8fCBtb2RlID09IERGbW9kZSk7CiB9CiAKKy8qIFJldHVybiB0 cnVlIGlmIE1PREUgaXMgdmFsaWQgZm9yIGZvdXIgVkdQUiByZWdpc3RlcnMuICAqLworCitp bmxpbmUgYm9vbAordmdwcl80cmVnX21vZGVfcCAobWFjaGluZV9tb2RlIG1vZGUpCit7Cisg IGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSkKKyAgICBtb2RlID0gR0VUX01PREVfSU5ORVIg KG1vZGUpOworCisgIHJldHVybiAobW9kZSA9PSBUSW1vZGUpOworfQorCiAvKiBSZXR1cm4g dHJ1ZSBpZiBNT0RFIGNhbiBiZSBoYW5kbGVkIGRpcmVjdGx5IGJ5IFZHUFIgb3BlcmF0aW9u cy4gICovCiAKIGlubGluZSBib29sCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2djbi9nY24t dmFsdS5tZCBiL2djYy9jb25maWcvZ2NuL2djbi12YWx1Lm1kCmluZGV4IDcyOTBjZGMyZmQw Li4yODRkZGE3M2RhOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2NuLXZhbHUubWQK KysrIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLXZhbHUubWQKQEAgLTk2LDYgKzk2LDEwIEBAIChk ZWZpbmVfbW9kZV9pdGVyYXRvciBWXzJSRUdfQUxUCiAJCSAgICAgICBWMzJESSBWMzJERgog CQkgICAgICAgVjY0REkgVjY0REZdKQogCis7IFZlY3RvciBtb2RlcyBmb3IgZm91ciB2ZWN0 b3IgcmVnaXN0ZXJzCisoZGVmaW5lX21vZGVfaXRlcmF0b3IgVl80UkVHIFtWMlRJIFY0VEkg VjhUSSBWMTZUSSBWMzJUSSBWNjRUSV0pCisoZGVmaW5lX21vZGVfaXRlcmF0b3IgVl80UkVH X0FMVCBbVjJUSSBWNFRJIFY4VEkgVjE2VEkgVjMyVEkgVjY0VEldKQorCiA7IFZlY3RvciBt b2RlcyB3aXRoIG5hdGl2ZSBzdXBwb3J0CiAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVl9ub1FJ CiAJCSAgICAgIFtWMkhJIFYySEYgVjJTSSBWMlNGIFYyREkgVjJERgpAQCAtMTM2LDcgKzE0 MCw3IEBAIChkZWZpbmVfbW9kZV9pdGVyYXRvciBTVl9TRkRGCiAJCSAgICAgICBWMzJTRiBW MzJERgogCQkgICAgICAgVjY0U0YgVjY0REZdKQogCi07IEFsbCBvZiBhYm92ZQorOyBBbGwg bW9kZXMgaW4gd2hpY2ggd2Ugd2FudCB0byBkbyBtb3JlIHRoYW4ganVzdCBtb3Zlcy4KIChk ZWZpbmVfbW9kZV9pdGVyYXRvciBWX0FMTAogCQkgICAgICBbVjJRSSBWMkhJIFYySEYgVjJT SSBWMlNGIFYyREkgVjJERgogCQkgICAgICAgVjRRSSBWNEhJIFY0SEYgVjRTSSBWNFNGIFY0 REkgVjRERgpAQCAtMTc1LDk3ICsxNzksMTEzIEBAIChkZWZpbmVfbW9kZV9pdGVyYXRvciBT Vl9GUAogCQkgICAgICAgVjMySEYgVjMyU0YgVjMyREYKIAkJICAgICAgIFY2NEhGIFY2NFNG IFY2NERGXSkKIAorOyBBbGwgbW9kZXMgdGhhdCBuZWVkIG1vdmVzLCBpbmNsdWRpbmcgdGhv c2Ugd2l0aG91dCBtYW55IGluc25zLgorKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZfTU9WCisJ CSAgICAgIFtWMlFJIFYySEkgVjJIRiBWMlNJIFYyU0YgVjJESSBWMkRGIFYyVEkKKwkJICAg ICAgIFY0UUkgVjRISSBWNEhGIFY0U0kgVjRTRiBWNERJIFY0REYgVjRUSQorCQkgICAgICAg VjhRSSBWOEhJIFY4SEYgVjhTSSBWOFNGIFY4REkgVjhERiBWOFRJCisJCSAgICAgICBWMTZR SSBWMTZISSBWMTZIRiBWMTZTSSBWMTZTRiBWMTZESSBWMTZERiBWMTZUSQorCQkgICAgICAg VjMyUUkgVjMySEkgVjMySEYgVjMyU0kgVjMyU0YgVjMyREkgVjMyREYgVjMyVEkKKwkJICAg ICAgIFY2NFFJIFY2NEhJIFY2NEhGIFY2NFNJIFY2NFNGIFY2NERJIFY2NERGIFY2NFRJXSkK KyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWX01PVl9BTFQKKwkJICAgICAgW1YyUUkgVjJISSBW MkhGIFYyU0kgVjJTRiBWMkRJIFYyREYgVjJUSQorCQkgICAgICAgVjRRSSBWNEhJIFY0SEYg VjRTSSBWNFNGIFY0REkgVjRERiBWNFRJCisJCSAgICAgICBWOFFJIFY4SEkgVjhIRiBWOFNJ IFY4U0YgVjhESSBWOERGIFY4VEkKKwkJICAgICAgIFYxNlFJIFYxNkhJIFYxNkhGIFYxNlNJ IFYxNlNGIFYxNkRJIFYxNkRGIFYxNlRJCisJCSAgICAgICBWMzJRSSBWMzJISSBWMzJIRiBW MzJTSSBWMzJTRiBWMzJESSBWMzJERiBWMzJUSQorCQkgICAgICAgVjY0UUkgVjY0SEkgVjY0 SEYgVjY0U0kgVjY0U0YgVjY0REkgVjY0REYgVjY0VEldKQorCiAoZGVmaW5lX21vZGVfYXR0 ciBzY2FsYXJfbW9kZQotICBbKFFJICJxaSIpIChISSAiaGkiKSAoU0kgInNpIikKKyAgWyhR SSAicWkiKSAoSEkgImhpIikgKFNJICJzaSIpIChUSSAidGkiKQogICAgKEhGICJoZiIpIChT RiAic2YiKSAoREkgImRpIikgKERGICJkZiIpCi0gICAoVjJRSSAicWkiKSAoVjJISSAiaGki KSAoVjJTSSAic2kiKQorICAgKFYyUUkgInFpIikgKFYySEkgImhpIikgKFYyU0kgInNpIikg KFYyVEkgInRpIikKICAgIChWMkhGICJoZiIpIChWMlNGICJzZiIpIChWMkRJICJkaSIpIChW MkRGICJkZiIpCi0gICAoVjRRSSAicWkiKSAoVjRISSAiaGkiKSAoVjRTSSAic2kiKQorICAg KFY0UUkgInFpIikgKFY0SEkgImhpIikgKFY0U0kgInNpIikgKFY0VEkgInRpIikKICAgIChW NEhGICJoZiIpIChWNFNGICJzZiIpIChWNERJICJkaSIpIChWNERGICJkZiIpCi0gICAoVjhR SSAicWkiKSAoVjhISSAiaGkiKSAoVjhTSSAic2kiKQorICAgKFY4UUkgInFpIikgKFY4SEkg ImhpIikgKFY4U0kgInNpIikgKFY4VEkgInRpIikKICAgIChWOEhGICJoZiIpIChWOFNGICJz ZiIpIChWOERJICJkaSIpIChWOERGICJkZiIpCi0gICAoVjE2UUkgInFpIikgKFYxNkhJICJo aSIpIChWMTZTSSAic2kiKQorICAgKFYxNlFJICJxaSIpIChWMTZISSAiaGkiKSAoVjE2U0kg InNpIikgKFYxNlRJICJ0aSIpCiAgICAoVjE2SEYgImhmIikgKFYxNlNGICJzZiIpIChWMTZE SSAiZGkiKSAoVjE2REYgImRmIikKLSAgIChWMzJRSSAicWkiKSAoVjMySEkgImhpIikgKFYz MlNJICJzaSIpCisgICAoVjMyUUkgInFpIikgKFYzMkhJICJoaSIpIChWMzJTSSAic2kiKSAo VjMyVEkgInRpIikKICAgIChWMzJIRiAiaGYiKSAoVjMyU0YgInNmIikgKFYzMkRJICJkaSIp IChWMzJERiAiZGYiKQotICAgKFY2NFFJICJxaSIpIChWNjRISSAiaGkiKSAoVjY0U0kgInNp IikKKyAgIChWNjRRSSAicWkiKSAoVjY0SEkgImhpIikgKFY2NFNJICJzaSIpIChWNjRUSSAi dGkiKQogICAgKFY2NEhGICJoZiIpIChWNjRTRiAic2YiKSAoVjY0REkgImRpIikgKFY2NERG ICJkZiIpXSkKIAogKGRlZmluZV9tb2RlX2F0dHIgU0NBTEFSX01PREUKLSAgWyhRSSAiUUki KSAoSEkgIkhJIikgKFNJICJTSSIpCisgIFsoUUkgIlFJIikgKEhJICJISSIpIChTSSAiU0ki KSAoVEkgIlRJIikKICAgIChIRiAiSEYiKSAoU0YgIlNGIikgKERJICJESSIpIChERiAiREYi KQotICAgKFYyUUkgIlFJIikgKFYySEkgIkhJIikgKFYyU0kgIlNJIikKKyAgIChWMlFJICJR SSIpIChWMkhJICJISSIpIChWMlNJICJTSSIpIChWMlRJICJUSSIpCiAgICAoVjJIRiAiSEYi KSAoVjJTRiAiU0YiKSAoVjJESSAiREkiKSAoVjJERiAiREYiKQotICAgKFY0UUkgIlFJIikg KFY0SEkgIkhJIikgKFY0U0kgIlNJIikKKyAgIChWNFFJICJRSSIpIChWNEhJICJISSIpIChW NFNJICJTSSIpIChWNFRJICJUSSIpCiAgICAoVjRIRiAiSEYiKSAoVjRTRiAiU0YiKSAoVjRE SSAiREkiKSAoVjRERiAiREYiKQotICAgKFY4UUkgIlFJIikgKFY4SEkgIkhJIikgKFY4U0kg IlNJIikKKyAgIChWOFFJICJRSSIpIChWOEhJICJISSIpIChWOFNJICJTSSIpIChWOFRJICJU SSIpCiAgICAoVjhIRiAiSEYiKSAoVjhTRiAiU0YiKSAoVjhESSAiREkiKSAoVjhERiAiREYi KQotICAgKFYxNlFJICJRSSIpIChWMTZISSAiSEkiKSAoVjE2U0kgIlNJIikKKyAgIChWMTZR SSAiUUkiKSAoVjE2SEkgIkhJIikgKFYxNlNJICJTSSIpIChWMTZUSSAiVEkiKQogICAgKFYx NkhGICJIRiIpIChWMTZTRiAiU0YiKSAoVjE2REkgIkRJIikgKFYxNkRGICJERiIpCi0gICAo VjMyUUkgIlFJIikgKFYzMkhJICJISSIpIChWMzJTSSAiU0kiKQorICAgKFYzMlFJICJRSSIp IChWMzJISSAiSEkiKSAoVjMyU0kgIlNJIikgKFYzMlRJICJUSSIpCiAgICAoVjMySEYgIkhG IikgKFYzMlNGICJTRiIpIChWMzJESSAiREkiKSAoVjMyREYgIkRGIikKLSAgIChWNjRRSSAi UUkiKSAoVjY0SEkgIkhJIikgKFY2NFNJICJTSSIpCisgICAoVjY0UUkgIlFJIikgKFY2NEhJ ICJISSIpIChWNjRTSSAiU0kiKSAoVjY0VEkgIlRJIikKICAgIChWNjRIRiAiSEYiKSAoVjY0 U0YgIlNGIikgKFY2NERJICJESSIpIChWNjRERiAiREYiKV0pCiAKIChkZWZpbmVfbW9kZV9h dHRyIHZuc2kKLSAgWyhRSSAic2kiKSAoSEkgInNpIikgKFNJICJzaSIpCisgIFsoUUkgInNp IikgKEhJICJzaSIpIChTSSAic2kiKSAoVEkgInNpIikKICAgIChIRiAic2kiKSAoU0YgInNp IikgKERJICJzaSIpIChERiAic2kiKQogICAgKFYyUUkgInYyc2kiKSAoVjJISSAidjJzaSIp IChWMkhGICJ2MnNpIikgKFYyU0kgInYyc2kiKQotICAgKFYyU0YgInYyc2kiKSAoVjJESSAi djJzaSIpIChWMkRGICJ2MnNpIikKKyAgIChWMlNGICJ2MnNpIikgKFYyREkgInYyc2kiKSAo VjJERiAidjJzaSIpIChWMlRJICJ2MnNpIikKICAgIChWNFFJICJ2NHNpIikgKFY0SEkgInY0 c2kiKSAoVjRIRiAidjRzaSIpIChWNFNJICJ2NHNpIikKLSAgIChWNFNGICJ2NHNpIikgKFY0 REkgInY0c2kiKSAoVjRERiAidjRzaSIpCisgICAoVjRTRiAidjRzaSIpIChWNERJICJ2NHNp IikgKFY0REYgInY0c2kiKSAoVjRUSSAidjRzaSIpCiAgICAoVjhRSSAidjhzaSIpIChWOEhJ ICJ2OHNpIikgKFY4SEYgInY4c2kiKSAoVjhTSSAidjhzaSIpCi0gICAoVjhTRiAidjhzaSIp IChWOERJICJ2OHNpIikgKFY4REYgInY4c2kiKQorICAgKFY4U0YgInY4c2kiKSAoVjhESSAi djhzaSIpIChWOERGICJ2OHNpIikgKFY4VEkgInY4c2kiKQogICAgKFYxNlFJICJ2MTZzaSIp IChWMTZISSAidjE2c2kiKSAoVjE2SEYgInYxNnNpIikgKFYxNlNJICJ2MTZzaSIpCi0gICAo VjE2U0YgInYxNnNpIikgKFYxNkRJICJ2MTZzaSIpIChWMTZERiAidjE2c2kiKQorICAgKFYx NlNGICJ2MTZzaSIpIChWMTZESSAidjE2c2kiKSAoVjE2REYgInYxNnNpIikgKFYxNlRJICJ2 MTZzaSIpCiAgICAoVjMyUUkgInYzMnNpIikgKFYzMkhJICJ2MzJzaSIpIChWMzJIRiAidjMy c2kiKSAoVjMyU0kgInYzMnNpIikKLSAgIChWMzJTRiAidjMyc2kiKSAoVjMyREkgInYzMnNp IikgKFYzMkRGICJ2MzJzaSIpCisgICAoVjMyU0YgInYzMnNpIikgKFYzMkRJICJ2MzJzaSIp IChWMzJERiAidjMyc2kiKSAoVjMyVEkgInYzMnNpIikKICAgIChWNjRRSSAidjY0c2kiKSAo VjY0SEkgInY2NHNpIikgKFY2NEhGICJ2NjRzaSIpIChWNjRTSSAidjY0c2kiKQotICAgKFY2 NFNGICJ2NjRzaSIpIChWNjRESSAidjY0c2kiKSAoVjY0REYgInY2NHNpIildKQorICAgKFY2 NFNGICJ2NjRzaSIpIChWNjRESSAidjY0c2kiKSAoVjY0REYgInY2NHNpIikgKFY2NFRJICJ2 NjRzaSIpXSkKIAogKGRlZmluZV9tb2RlX2F0dHIgVm5TSQotICBbKFFJICJTSSIpIChISSAi U0kiKSAoU0kgIlNJIikKKyAgWyhRSSAiU0kiKSAoSEkgIlNJIikgKFNJICJTSSIpIChUSSAi U0kiKQogICAgKEhGICJTSSIpIChTRiAiU0kiKSAoREkgIlNJIikgKERGICJTSSIpCiAgICAo VjJRSSAiVjJTSSIpIChWMkhJICJWMlNJIikgKFYySEYgIlYyU0kiKSAoVjJTSSAiVjJTSSIp Ci0gICAoVjJTRiAiVjJTSSIpIChWMkRJICJWMlNJIikgKFYyREYgIlYyU0kiKQorICAgKFYy U0YgIlYyU0kiKSAoVjJESSAiVjJTSSIpIChWMkRGICJWMlNJIikgKFYyVEkgIlYyU0kiKQog ICAgKFY0UUkgIlY0U0kiKSAoVjRISSAiVjRTSSIpIChWNEhGICJWNFNJIikgKFY0U0kgIlY0 U0kiKQotICAgKFY0U0YgIlY0U0kiKSAoVjRESSAiVjRTSSIpIChWNERGICJWNFNJIikKKyAg IChWNFNGICJWNFNJIikgKFY0REkgIlY0U0kiKSAoVjRERiAiVjRTSSIpIChWNFRJICJWNFNJ IikKICAgIChWOFFJICJWOFNJIikgKFY4SEkgIlY4U0kiKSAoVjhIRiAiVjhTSSIpIChWOFNJ ICJWOFNJIikKLSAgIChWOFNGICJWOFNJIikgKFY4REkgIlY4U0kiKSAoVjhERiAiVjhTSSIp CisgICAoVjhTRiAiVjhTSSIpIChWOERJICJWOFNJIikgKFY4REYgIlY4U0kiKSAoVjhUSSAi VjhTSSIpCiAgICAoVjE2UUkgIlYxNlNJIikgKFYxNkhJICJWMTZTSSIpIChWMTZIRiAiVjE2 U0kiKSAoVjE2U0kgIlYxNlNJIikKLSAgIChWMTZTRiAiVjE2U0kiKSAoVjE2REkgIlYxNlNJ IikgKFYxNkRGICJWMTZTSSIpCisgICAoVjE2U0YgIlYxNlNJIikgKFYxNkRJICJWMTZTSSIp IChWMTZERiAiVjE2U0kiKSAoVjE2VEkgIlYxNlNJIikKICAgIChWMzJRSSAiVjMyU0kiKSAo VjMySEkgIlYzMlNJIikgKFYzMkhGICJWMzJTSSIpIChWMzJTSSAiVjMyU0kiKQotICAgKFYz MlNGICJWMzJTSSIpIChWMzJESSAiVjMyU0kiKSAoVjMyREYgIlYzMlNJIikKKyAgIChWMzJT RiAiVjMyU0kiKSAoVjMyREkgIlYzMlNJIikgKFYzMkRGICJWMzJTSSIpIChWMzJUSSAiVjMy U0kiKQogICAgKFY2NFFJICJWNjRTSSIpIChWNjRISSAiVjY0U0kiKSAoVjY0SEYgIlY2NFNJ IikgKFY2NFNJICJWNjRTSSIpCi0gICAoVjY0U0YgIlY2NFNJIikgKFY2NERJICJWNjRTSSIp IChWNjRERiAiVjY0U0kiKV0pCisgICAoVjY0U0YgIlY2NFNJIikgKFY2NERJICJWNjRTSSIp IChWNjRERiAiVjY0U0kiKSAoVjY0VEkgIlY2NFNJIildKQogCiAoZGVmaW5lX21vZGVfYXR0 ciB2bmRpCiAgIFsoVjJRSSAidjJkaSIpIChWMkhJICJ2MmRpIikgKFYySEYgInYyZGkiKSAo VjJTSSAidjJkaSIpCi0gICAoVjJTRiAidjJkaSIpIChWMkRJICJ2MmRpIikgKFYyREYgInYy ZGkiKQorICAgKFYyU0YgInYyZGkiKSAoVjJESSAidjJkaSIpIChWMkRGICJ2MmRpIikgKFYy VEkgInYyZGkiKQogICAgKFY0UUkgInY0ZGkiKSAoVjRISSAidjRkaSIpIChWNEhGICJ2NGRp IikgKFY0U0kgInY0ZGkiKQotICAgKFY0U0YgInY0ZGkiKSAoVjRESSAidjRkaSIpIChWNERG ICJ2NGRpIikKKyAgIChWNFNGICJ2NGRpIikgKFY0REkgInY0ZGkiKSAoVjRERiAidjRkaSIp IChWNFRJICJ2NGRpIikKICAgIChWOFFJICJ2OGRpIikgKFY4SEkgInY4ZGkiKSAoVjhIRiAi djhkaSIpIChWOFNJICJ2OGRpIikKLSAgIChWOFNGICJ2OGRpIikgKFY4REkgInY4ZGkiKSAo VjhERiAidjhkaSIpCisgICAoVjhTRiAidjhkaSIpIChWOERJICJ2OGRpIikgKFY4REYgInY4 ZGkiKSAoVjhUSSAidjhkaSIpCiAgICAoVjE2UUkgInYxNmRpIikgKFYxNkhJICJ2MTZkaSIp IChWMTZIRiAidjE2ZGkiKSAoVjE2U0kgInYxNmRpIikKLSAgIChWMTZTRiAidjE2ZGkiKSAo VjE2REkgInYxNmRpIikgKFYxNkRGICJ2MTZkaSIpCisgICAoVjE2U0YgInYxNmRpIikgKFYx NkRJICJ2MTZkaSIpIChWMTZERiAidjE2ZGkiKSAoVjE2VEkgInYxNmRpIikKICAgIChWMzJR SSAidjMyZGkiKSAoVjMySEkgInYzMmRpIikgKFYzMkhGICJ2MzJkaSIpIChWMzJTSSAidjMy ZGkiKQotICAgKFYzMlNGICJ2MzJkaSIpIChWMzJESSAidjMyZGkiKSAoVjMyREYgInYzMmRp IikKKyAgIChWMzJTRiAidjMyZGkiKSAoVjMyREkgInYzMmRpIikgKFYzMkRGICJ2MzJkaSIp IChWMzJUSSAidjMyZGkiKQogICAgKFY2NFFJICJ2NjRkaSIpIChWNjRISSAidjY0ZGkiKSAo VjY0SEYgInY2NGRpIikgKFY2NFNJICJ2NjRkaSIpCi0gICAoVjY0U0YgInY2NGRpIikgKFY2 NERJICJ2NjRkaSIpIChWNjRERiAidjY0ZGkiKV0pCisgICAoVjY0U0YgInY2NGRpIikgKFY2 NERJICJ2NjRkaSIpIChWNjRERiAidjY0ZGkiKSAoVjY0VEkgInY2NGRpIildKQogCiAoZGVm aW5lX21vZGVfYXR0ciBWbkRJCiAgIFsoVjJRSSAiVjJESSIpIChWMkhJICJWMkRJIikgKFYy SEYgIlYyREkiKSAoVjJTSSAiVjJESSIpCi0gICAoVjJTRiAiVjJESSIpIChWMkRJICJWMkRJ IikgKFYyREYgIlYyREkiKQorICAgKFYyU0YgIlYyREkiKSAoVjJESSAiVjJESSIpIChWMkRG ICJWMkRJIikgKFYyVEkgIlYyREkiKQogICAgKFY0UUkgIlY0REkiKSAoVjRISSAiVjRESSIp IChWNEhGICJWNERJIikgKFY0U0kgIlY0REkiKQotICAgKFY0U0YgIlY0REkiKSAoVjRESSAi VjRESSIpIChWNERGICJWNERJIikKKyAgIChWNFNGICJWNERJIikgKFY0REkgIlY0REkiKSAo VjRERiAiVjRESSIpIChWNFRJICJWNERJIikKICAgIChWOFFJICJWOERJIikgKFY4SEkgIlY4 REkiKSAoVjhIRiAiVjhESSIpIChWOFNJICJWOERJIikKLSAgIChWOFNGICJWOERJIikgKFY4 REkgIlY4REkiKSAoVjhERiAiVjhESSIpCisgICAoVjhTRiAiVjhESSIpIChWOERJICJWOERJ IikgKFY4REYgIlY4REkiKSAoVjhUSSAiVjhESSIpCiAgICAoVjE2UUkgIlYxNkRJIikgKFYx NkhJICJWMTZESSIpIChWMTZIRiAiVjE2REkiKSAoVjE2U0kgIlYxNkRJIikKLSAgIChWMTZT RiAiVjE2REkiKSAoVjE2REkgIlYxNkRJIikgKFYxNkRGICJWMTZESSIpCisgICAoVjE2U0Yg IlYxNkRJIikgKFYxNkRJICJWMTZESSIpIChWMTZERiAiVjE2REkiKSAoVjE2VEkgIlYxNkRJ IikKICAgIChWMzJRSSAiVjMyREkiKSAoVjMySEkgIlYzMkRJIikgKFYzMkhGICJWMzJESSIp IChWMzJTSSAiVjMyREkiKQotICAgKFYzMlNGICJWMzJESSIpIChWMzJESSAiVjMyREkiKSAo VjMyREYgIlYzMkRJIikKKyAgIChWMzJTRiAiVjMyREkiKSAoVjMyREkgIlYzMkRJIikgKFYz MkRGICJWMzJESSIpIChWMzJUSSAiVjMyREkiKQogICAgKFY2NFFJICJWNjRESSIpIChWNjRI SSAiVjY0REkiKSAoVjY0SEYgIlY2NERJIikgKFY2NFNJICJWNjRESSIpCi0gICAoVjY0U0Yg IlY2NERJIikgKFY2NERJICJWNjRESSIpIChWNjRERiAiVjY0REkiKV0pCisgICAoVjY0U0Yg IlY2NERJIikgKFY2NERJICJWNjRESSIpIChWNjRERiAiVjY0REkiKSAoVjY0VEkgIlY2NERJ IildKQogCiAoZGVmaW5lX21vZGVfYXR0ciBzZHdhCiAgIFsoVjJRSSAiQllURV8wIikgKFYy SEkgIldPUkRfMCIpIChWMlNJICJEV09SRCIpCkBAIC0yODgsMzggKzMwOCwzOCBAQCAoZGVm aW5lX3N1YnN0X2F0dHIgImV4ZWNfc2NhdHRlciIgInNjYXR0ZXJfc3RvcmUiCiAJCSAgICIi ICJfZXhlYyIpCiAKIChkZWZpbmVfc3Vic3QgInZlY19tZXJnZSIKLSAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6Vl9BTEwgMCkKLQkobWF0Y2hfb3BlcmFuZDpWX0FMTCAxKSldCisgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZfTU9WIDApCisJKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSkpXQog ICAiIgogICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKHZlY19tZXJnZTpWX0FMTAorCSh2ZWNf bWVyZ2U6Vl9NT1YKIAkgIChtYXRjaF9kdXAgMSkKLQkgIChtYXRjaF9vcGVyYW5kOlZfQUxM IDMgImdjbl9yZWdpc3Rlcl9vcl91bnNwZWNfb3BlcmFuZCIgIlUwIikKKwkgIChtYXRjaF9v cGVyYW5kOlZfTU9WIDMgImdjbl9yZWdpc3Rlcl9vcl91bnNwZWNfb3BlcmFuZCIgIlUwIikK IAkgIChtYXRjaF9vcGVyYW5kOkRJIDQgImdjbl9leGVjX3JlZ19vcGVyYW5kIiAiZSIpKSld KQogCiAoZGVmaW5lX3N1YnN0ICJ2ZWNfbWVyZ2Vfd2l0aF9jbG9iYmVyIgotICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWX0FMTCAwKQotCShtYXRjaF9vcGVyYW5kOlZfQUxMIDEpKQorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwKQorCShtYXRjaF9vcGVyYW5kOlZfTU9WIDEp KQogICAgKGNsb2JiZXIgKG1hdGNoX29wZXJhbmQgMikpXQogICAiIgogICBbKHNldCAobWF0 Y2hfZHVwIDApCi0JKHZlY19tZXJnZTpWX0FMTAorCSh2ZWNfbWVyZ2U6Vl9NT1YKIAkgICht YXRjaF9kdXAgMSkKLQkgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDMgImdjbl9yZWdpc3Rlcl9v cl91bnNwZWNfb3BlcmFuZCIgIlUwIikKKwkgIChtYXRjaF9vcGVyYW5kOlZfTU9WIDMgImdj bl9yZWdpc3Rlcl9vcl91bnNwZWNfb3BlcmFuZCIgIlUwIikKIAkgIChtYXRjaF9vcGVyYW5k OkRJIDQgImdjbl9leGVjX3JlZ19vcGVyYW5kIiAiZSIpKSkKICAgIChjbG9iYmVyIChtYXRj aF9kdXAgMikpXSkKIAogKGRlZmluZV9zdWJzdCAidmVjX21lcmdlX3dpdGhfdmNjIgotICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWX0FMTCAwKQotCShtYXRjaF9vcGVyYW5kOlZfQUxMIDEp KQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwKQorCShtYXRjaF9vcGVyYW5kOlZf TU9WIDEpKQogICAgKHNldCAobWF0Y2hfb3BlcmFuZDpESSAyKQogCShtYXRjaF9vcGVyYW5k OkRJIDMpKV0KICAgIiIKICAgWyhwYXJhbGxlbAogICAgICBbKHNldCAobWF0Y2hfZHVwIDAp Ci0JICAgKHZlY19tZXJnZTpWX0FMTAorCSAgICh2ZWNfbWVyZ2U6Vl9NT1YKIAkgICAgICht YXRjaF9kdXAgMSkKLQkgICAgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDQgImdjbl9yZWdpc3Rl cl9vcl91bnNwZWNfb3BlcmFuZCIgIlUwIikKKwkgICAgIChtYXRjaF9vcGVyYW5kOlZfTU9W IDQgImdjbl9yZWdpc3Rlcl9vcl91bnNwZWNfb3BlcmFuZCIgIlUwIikKIAkgICAgIChtYXRj aF9vcGVyYW5kOkRJIDUgImdjbl9leGVjX3JlZ19vcGVyYW5kIiAiZSIpKSkKICAgICAgIChz ZXQgKG1hdGNoX2R1cCAyKQogCSAgIChhbmQ6REkgKG1hdGNoX2R1cCAzKQpAQCAtMzUxLDgg KzM3MSw4IEBAIChkZWZpbmVfc3Vic3QgInNjYXR0ZXJfc3RvcmUiCiA7IGdhdGhlci9zY2F0 dGVyLCBtYXNrbG9hZC9zdG9yZSwgZXRjLgogCiAoZGVmaW5lX2V4cGFuZCAibW92PG1vZGU+ IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0FMTCAwICJub25pbW1lZGlhdGVfb3BlcmFu ZCIpCi0JKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAiZ2VuZXJhbF9vcGVyYW5kIikpXQorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCisJ KG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSAiZ2VuZXJhbF9vcGVyYW5kIikpXQogICAiIgogICB7 CiAgICAgLyogQml0d2lzZSByZWludGVycHJldCBjYXN0cyB2aWEgU1VCUkVHIGRvbid0IHdv cmsgd2l0aCBHQ04gdmVjdG9yCkBAIC00MjEsOCArNDQxLDggQEAgKGRlZmluZV9leHBhbmQg Im1vdjxtb2RlPiIKIDsgQSBwc2V1ZG8gaW5zdHJ1Y3Rpb24gdGhhdCBoZWxwcyBMUkEgdXNl IHRoZSAiVTAiIGNvbnN0cmFpbnQuCiAKIChkZWZpbmVfaW5zbiAibW92PG1vZGU+X3Vuc3Bl YyIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAibm9uaW1tZWRpYXRlX29wZXJh bmQiICI9diIpCi0JKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAiZ2NuX3Vuc3BlY19vcGVyYW5k IiAgICIgVSIpKV0KKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMCAibm9uaW1tZWRp YXRlX29wZXJhbmQiICI9diIpCisJKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSAiZ2NuX3Vuc3Bl Y19vcGVyYW5kIiAgICIgVSIpKV0KICAgIiIKICAgIiIKICAgWyhzZXRfYXR0ciAidHlwZSIg InVua25vd24iKQpAQCAtNTI3LDYgKzU0Nyw2OSBAQCAoZGVmaW5lX2luc24gIm1vdjxtb2Rl Pl9leGVjIgogICBbKHNldF9hdHRyICJ0eXBlIiAidm11bHQsdm11bHQsdm11bHQsKiwqIikK ICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiMTYsMTYsMTYsMTYsMTYiKV0pCiAKKyhkZWZpbmVf aW5zbiAiKm1vdjxtb2RlPl80cmVnIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWXzRSRUcg MCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9diIpCisJKG1hdGNoX29wZXJhbmQ6Vl80UkVH IDEgImdlbmVyYWxfb3BlcmFuZCIgICAgICAidkRCIikpXQorICAiIgorICB7CisgICAgcmV0 dXJuICJ2X21vdl9iMzJcdCVMMCwgJUwxXDsiCisgICAgICAgICAgICJ2X21vdl9iMzJcdCVI MCwgJUgxXDsiCisgICAgICAgICAgICJ2X21vdl9iMzJcdCVKMCwgJUoxXDsiCisgICAgICAg ICAgICJ2X21vdl9iMzJcdCVLMCwgJUsxXDsiOworICB9CisgIFsoc2V0X2F0dHIgInR5cGUi ICJ2bXVsdCIpCisgICAoc2V0X2F0dHIgImxlbmd0aCIgIjE2IildKQorCisoZGVmaW5lX2lu c24gIm1vdjxtb2RlPl9leGVjIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWXzRSRUcgMCAi bm9uaW1tZWRpYXRlX29wZXJhbmQiICI9IHYsICAgdiwgICB2LCB2LCBtIikKKwkodmVjX21l cmdlOlZfNFJFRworCSAgKG1hdGNoX29wZXJhbmQ6Vl80UkVHIDEgImdlbmVyYWxfb3BlcmFu ZCIgICAgInZEQiwgIHYwLCAgdjAsIG0sIHYiKQorCSAgKG1hdGNoX29wZXJhbmQ6Vl80UkVH IDIgImdjbl9hbHVfb3JfdW5zcGVjX29wZXJhbmQiCisJCQkJCQkgICAgICAgIiBVMCx2REEw LHZEQTAsVTAsVTAiKQorCSAgKG1hdGNoX29wZXJhbmQ6REkgMyAicmVnaXN0ZXJfb3BlcmFu ZCIgICAgICAgIiAgZSwgIGNWLCAgU3YsIGUsIGUiKSkpCisgICAoY2xvYmJlciAobWF0Y2hf c2NyYXRjaDo8Vm5EST4gNAkJICAgICAgICI9IFgsICAgWCwgICBYLCZ2LCZ2IikpXQorICAi IU1FTV9QIChvcGVyYW5kc1swXSkgfHwgUkVHX1AgKG9wZXJhbmRzWzFdKSIKKyAgeworICAg IGlmICghUkVHX1AgKG9wZXJhbmRzWzFdKSB8fCBSRUdOTyAob3BlcmFuZHNbMF0pIDw9IFJF R05PIChvcGVyYW5kc1sxXSkpCisgICAgICBzd2l0Y2ggKHdoaWNoX2FsdGVybmF0aXZlKQor CXsKKwljYXNlIDA6CisJICByZXR1cm4gInZfbW92X2IzMlx0JUwwLCAlTDFcO3ZfbW92X2Iz Mlx0JUgwLCAlSDFcOyIKKyAgICAgICAgICAgICAgICAgInZfbW92X2IzMlx0JUowLCAlSjFc O3ZfbW92X2IzMlx0JUswLCAlSzEiOworCWNhc2UgMToKKwkgIHJldHVybiAidl9jbmRtYXNr X2IzMlx0JUwwLCAlTDIsICVMMSwgdmNjXDsiCisJCSAidl9jbmRtYXNrX2IzMlx0JUgwLCAl SDIsICVIMSwgdmNjXDsiCisJCSAidl9jbmRtYXNrX2IzMlx0JUowLCAlSjIsICVKMSwgdmNj XDsiCisJCSAidl9jbmRtYXNrX2IzMlx0JUswLCAlSzIsICVLMSwgdmNjIjsKKwljYXNlIDI6 CisJICByZXR1cm4gInZfY25kbWFza19iMzJcdCVMMCwgJUwyLCAlTDEsICUzXDsiCisJCSAi dl9jbmRtYXNrX2IzMlx0JUgwLCAlSDIsICVIMSwgJTNcOyIKKwkJICJ2X2NuZG1hc2tfYjMy XHQlSjAsICVKMiwgJUoxLCAlM1w7IgorCQkgInZfY25kbWFza19iMzJcdCVLMCwgJUsyLCAl SzEsICUzIjsKKwl9CisgICAgZWxzZQorICAgICAgc3dpdGNoICh3aGljaF9hbHRlcm5hdGl2 ZSkKKwl7CisJY2FzZSAwOgorCSAgcmV0dXJuICJ2X21vdl9iMzJcdCVIMCwgJUgxXDt2X21v dl9iMzJcdCVMMCwgJUwxXDsiCisgICAgICAgICAgICAgICAgICJ2X21vdl9iMzJcdCVKMCwg JUoxXDt2X21vdl9iMzJcdCVLMCwgJUsxIjsKKwljYXNlIDE6CisJICByZXR1cm4gInZfY25k bWFza19iMzJcdCVIMCwgJUgyLCAlSDEsIHZjY1w7IgorCQkgInZfY25kbWFza19iMzJcdCVM MCwgJUwyLCAlTDEsIHZjY1w7IgorCQkgInZfY25kbWFza19iMzJcdCVKMCwgJUoyLCAlSjEs IHZjY1w7IgorCQkgInZfY25kbWFza19iMzJcdCVLMCwgJUsyLCAlSzEsIHZjYyI7CisJY2Fz ZSAyOgorCSAgcmV0dXJuICJ2X2NuZG1hc2tfYjMyXHQlSDAsICVIMiwgJUgxLCAlM1w7Igor CQkgInZfY25kbWFza19iMzJcdCVMMCwgJUwyLCAlTDEsICUzXDsiCisJCSAidl9jbmRtYXNr X2IzMlx0JUowLCAlSjIsICVKMSwgJTNcOyIKKwkJICJ2X2NuZG1hc2tfYjMyXHQlSzAsICVL MiwgJUsxLCAlMyI7CisJfQorCisgICAgcmV0dXJuICIjIjsKKyAgfQorICBbKHNldF9hdHRy ICJ0eXBlIiAidm11bHQsdm11bHQsdm11bHQsKiwqIikKKyAgIChzZXRfYXR0ciAibGVuZ3Ro IiAiMzIiKV0pCisKIDsgVGhpcyB2YXJpYW50IGRvZXMgbm90IGFjY2VwdCBhbiB1bnNwZWMs IGJ1dCBkb2VzIHBlcm1pdCBNRU0KIDsgcmVhZC9tb2RpZnkvd3JpdGUgd2hpY2ggaXMgbmVj ZXNzYXJ5IGZvciBtYXNrc3RvcmUuCiAKQEAgLTU5MiwxMiArNjc1LDI1IEBAIChkZWZpbmVf aW5zbiAibW92PG1vZGU+X3NncHJiYXNlIgogICBbKHNldF9hdHRyICJ0eXBlIiAidm11bHQs KiwqIikKICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiOCwxMiwxMiIpXSkKIAorKGRlZmluZV9p bnNuICJtb3Y8bW9kZT5fc2dwcmJhc2UiCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfNFJF RyAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj0gdiwgdiwgbSIpCisJKHVuc3BlYzpWXzRS RUcKKwkgIFsobWF0Y2hfb3BlcmFuZDpWXzRSRUcgMSAiZ2VuZXJhbF9vcGVyYW5kIiAgICJ2 REIsIG0sIHYiKV0KKwkgIFVOU1BFQ19TR1BSQkFTRSkpCisgICAoY2xvYmJlciAobWF0Y2hf b3BlcmFuZDo8Vm5EST4gMiAicmVnaXN0ZXJfb3BlcmFuZCIgICI9JnYsJnYsJnYiKSldCisg ICJscmFfaW5fcHJvZ3Jlc3MgfHwgcmVsb2FkX2NvbXBsZXRlZCIKKyAgInZfbW92X2IzMlx0 JUwwLCAlTDFcO3ZfbW92X2IzMlx0JUgwLCAlSDFcO3ZfbW92X2IzMlx0JUowLCAlSjFcO3Zf bW92X2IzMlx0JUswLCAlSzEKKyAgICMKKyAgICMiCisgIFsoc2V0X2F0dHIgInR5cGUiICJ2 bXVsdCwqLCoiKQorICAgKHNldF9hdHRyICJsZW5ndGgiICI4LDEyLDEyIildKQorCiA7IHJl bG9hZF9pbiB3YXMgb25jZSBhIHN0YW5kYXJkIG5hbWUsIGJ1dCBoZXJlIGl0J3Mgb25seSBy ZWZlcmVuY2VkIGJ5CiA7IGdjbl9zZWNvbmRhcnlfcmVsb2FkLiAgSXQgYWxsb3dzIGEgcmVs b2FkIHdpdGggYSBzY3JhdGNoIHJlZ2lzdGVyLgogCiAoZGVmaW5lX2V4cGFuZCAicmVsb2Fk X2luPG1vZGU+IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0FMTCAwICJyZWdpc3Rlcl9v cGVyYW5kIiAgICAgIj0gdiIpCi0JKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAibWVtb3J5X29w ZXJhbmQiCSAgICAgICIgIG0iKSkKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgICAgICI9IHYiKQorCShtYXRjaF9vcGVyYW5kOlZfTU9WIDEg Im1lbW9yeV9vcGVyYW5kIgkgICAgICAiICBtIikpCiAgICAoY2xvYmJlciAobWF0Y2hfb3Bl cmFuZDo8Vm5EST4gMiAicmVnaXN0ZXJfb3BlcmFuZCIgIj0mdiIpKV0KICAgIiIKICAgewpA QCAtNjA4LDggKzcwNCw4IEBAIChkZWZpbmVfZXhwYW5kICJyZWxvYWRfaW48bW9kZT4iCiA7 IHJlbG9hZF9vdXQgaXMgc2ltaWxhciB0byByZWxvYWRfaW4sIGFib3ZlLgogCiAoZGVmaW5l X2V4cGFuZCAicmVsb2FkX291dDxtb2RlPiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9B TEwgMCAibWVtb3J5X29wZXJhbmQiCSAgICAgICI9IG0iKQotCShtYXRjaF9vcGVyYW5kOlZf QUxMIDEgInJlZ2lzdGVyX29wZXJhbmQiICAgICAiICB2IikpCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZfTU9WIDAgIm1lbW9yeV9vcGVyYW5kIgkgICAgICAiPSBtIikKKwkobWF0Y2hf b3BlcmFuZDpWX01PViAxICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgIiAgdiIpKQogICAgKGNs b2JiZXIgKG1hdGNoX29wZXJhbmQ6PFZuREk+IDIgInJlZ2lzdGVyX29wZXJhbmQiICI9JnYi KSldCiAgICIiCiAgIHsKQEAgLTYyMCw5ICs3MTYsOSBAQCAoZGVmaW5lX2V4cGFuZCAicmVs b2FkX291dDxtb2RlPiIKIDsgRXhwYW5kIHNjYWxhciBhZGRyZXNzZXMgaW50byBnYXRoZXIv c2NhdHRlciBwYXR0ZXJucwogCiAoZGVmaW5lX3NwbGl0Ci0gIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZfQUxMIDAgIm1lbW9yeV9vcGVyYW5kIikKLQkodW5zcGVjOlZfQUxMCi0JICBbKG1h dGNoX29wZXJhbmQ6Vl9BTEwgMSAiZ2VuZXJhbF9vcGVyYW5kIildCisgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZfTU9WIDAgIm1lbW9yeV9vcGVyYW5kIikKKwkodW5zcGVjOlZfTU9WCisJ ICBbKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSAiZ2VuZXJhbF9vcGVyYW5kIildCiAJICBVTlNQ RUNfU0dQUkJBU0UpKQogICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6PFZuREk+IDIpKV0K ICAgIiIKQEAgLTYzOCwxMCArNzM0LDEwIEBAIChkZWZpbmVfc3BsaXQKICAgfSkKIAogKGRl ZmluZV9zcGxpdAotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0FMTCAwICJtZW1vcnlfb3Bl cmFuZCIpCi0JKHZlY19tZXJnZTpWX0FMTAotCSAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAi Z2VuZXJhbF9vcGVyYW5kIikKLQkgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDIgIiIpCisgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZfTU9WIDAgIm1lbW9yeV9vcGVyYW5kIikKKwkodmVjX21l cmdlOlZfTU9WCisJICAobWF0Y2hfb3BlcmFuZDpWX01PViAxICJnZW5lcmFsX29wZXJhbmQi KQorCSAgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMiAiIikKIAkgIChtYXRjaF9vcGVyYW5kOkRJ IDMgImdjbl9leGVjX3JlZ19vcGVyYW5kIikpKQogICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0 Y2g6PFZuREk+IDQpKV0KICAgIiIKQEAgLTY1OSwxNCArNzU1LDE0IEBAIChkZWZpbmVfc3Bs aXQKICAgfSkKIAogKGRlZmluZV9zcGxpdAotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0FM TCAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCi0JKHVuc3BlYzpWX0FMTAotCSAgWyhtYXRj aF9vcGVyYW5kOlZfQUxMIDEgIm1lbW9yeV9vcGVyYW5kIildCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZfTU9WIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKKwkodW5zcGVjOlZfTU9W CisJICBbKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSAibWVtb3J5X29wZXJhbmQiKV0KIAkgIFVO U1BFQ19TR1BSQkFTRSkpCiAgICAoY2xvYmJlciAobWF0Y2hfc2NyYXRjaDo8Vm5EST4gMikp XQogICAiIgogICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKHVuc3BlYzpWX0FMTCBbKG1hdGNo X2R1cCA1KSAobWF0Y2hfZHVwIDYpIChtYXRjaF9kdXAgNykKKwkodW5zcGVjOlZfTU9WIFso bWF0Y2hfZHVwIDUpIChtYXRjaF9kdXAgNikgKG1hdGNoX2R1cCA3KQogCQkgICAgICAgKG1l bTpCTEsgKHNjcmF0Y2gpKV0KIAkJICAgICAgVU5TUEVDX0dBVEhFUikpXQogICB7CkBAIC02 NzgsMTYgKzc3NCwxNiBAQCAoZGVmaW5lX3NwbGl0CiAgIH0pCiAKIChkZWZpbmVfc3BsaXQK LSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQi KQotCSh2ZWNfbWVyZ2U6Vl9BTEwKLQkgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDEgIm1lbW9y eV9vcGVyYW5kIikKLQkgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDIgIiIpCisgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZfTU9WIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKKwkodmVjX21l cmdlOlZfTU9WCisJICAobWF0Y2hfb3BlcmFuZDpWX01PViAxICJtZW1vcnlfb3BlcmFuZCIp CisJICAobWF0Y2hfb3BlcmFuZDpWX01PViAyICIiKQogCSAgKG1hdGNoX29wZXJhbmQ6REkg MyAiZ2NuX2V4ZWNfcmVnX29wZXJhbmQiKSkpCiAgICAoY2xvYmJlciAobWF0Y2hfc2NyYXRj aDo8Vm5EST4gNCkpXQogICAiIgogICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKHZlY19tZXJn ZTpWX0FMTAotCSAgKHVuc3BlYzpWX0FMTCBbKG1hdGNoX2R1cCA1KSAobWF0Y2hfZHVwIDYp IChtYXRjaF9kdXAgNykKKwkodmVjX21lcmdlOlZfTU9WCisJICAodW5zcGVjOlZfTU9WIFso bWF0Y2hfZHVwIDUpIChtYXRjaF9kdXAgNikgKG1hdGNoX2R1cCA3KQogCQkJIChtZW06QkxL IChzY3JhdGNoKSldCiAJCQkgVU5TUEVDX0dBVEhFUikKIAkgIChtYXRjaF9kdXAgMikKQEAg LTc0NCw5ICs4NDAsOSBAQCAoZGVmaW5lX2luc24gIip2ZWNfc2V0PG1vZGU+IgogICAgKHNl dF9hdHRyICJsYW5lc2VsZWN0IiAieWVzIildKQogCiAoZGVmaW5lX2V4cGFuZCAidmVjX3Nl dDxtb2RlPiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAicmVnaXN0ZXJfb3Bl cmFuZCIpCi0JKHZlY19tZXJnZTpWX0FMTAotCSAgKHZlY19kdXBsaWNhdGU6Vl9BTEwKKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKHZl Y19tZXJnZTpWX01PVgorCSAgKHZlY19kdXBsaWNhdGU6Vl9NT1YKIAkgICAgKG1hdGNoX29w ZXJhbmQ6PFNDQUxBUl9NT0RFPiAxICJyZWdpc3Rlcl9vcGVyYW5kIikpCiAJICAobWF0Y2hf ZHVwIDApCiAJICAoYXNoaWZ0IChjb25zdF9pbnQgMSkgKG1hdGNoX29wZXJhbmQ6U0kgMiAi Z2NuX2FsdV9vcGVyYW5kIikpKSldCkBAIC04MDQsNiArOTAwLDE1IEBAIChkZWZpbmVfaW5z biAidmVjX2R1cGxpY2F0ZTxtb2RlPjxleGVjPiIKICAgWyhzZXRfYXR0ciAidHlwZSIgInZv cDNhIikKICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiMTYiKV0pCiAKKyhkZWZpbmVfaW5zbiAi dmVjX2R1cGxpY2F0ZTxtb2RlPjxleGVjPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl80 UkVHIDAgInJlZ2lzdGVyX29wZXJhbmQiCSAgICI9ICB2IikKKwkodmVjX2R1cGxpY2F0ZTpW XzRSRUcKKwkgIChtYXRjaF9vcGVyYW5kOjxTQ0FMQVJfTU9ERT4gMSAiZ2NuX2FsdV9vcGVy YW5kIiAiU3ZEQiIpKSldCisgICIiCisgICJ2X21vdl9iMzJcdCVMMCwgJUwxXDt2X21vdl9i MzJcdCVIMCwgJUgxXDt2X21vdl9iMzJcdCVKMCwgJUoxXDt2X21vdl9iMzJcdCVLMCwgJUsx IgorICBbKHNldF9hdHRyICJ0eXBlIiAibXVsdCIpCisgICAoc2V0X2F0dHIgImxlbmd0aCIg IjMyIildKQorCiAoZGVmaW5lX2luc24gInZlY19leHRyYWN0PG1vZGU+PHNjYWxhcl9tb2Rl PiIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFNDQUxBUl9NT0RFPiAwICJyZWdpc3Rlcl9v cGVyYW5kIiAgIj1TZyIpCiAJKHZlY19zZWxlY3Q6PFNDQUxBUl9NT0RFPgpAQCAtODI4LDYg KzkzMywxOCBAQCAoZGVmaW5lX2luc24gInZlY19leHRyYWN0PG1vZGU+PHNjYWxhcl9tb2Rl PiIKICAgIChzZXRfYXR0ciAiZXhlYyIgIm5vbmUiKQogICAgKHNldF9hdHRyICJsYW5lc2Vs ZWN0IiAieWVzIildKQogCisoZGVmaW5lX2luc24gInZlY19leHRyYWN0PG1vZGU+PHNjYWxh cl9tb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFNDQUxBUl9NT0RFPiAwICJyZWdp c3Rlcl9vcGVyYW5kIiAgIj0mU2ciKQorCSh2ZWNfc2VsZWN0OjxTQ0FMQVJfTU9ERT4KKwkg IChtYXRjaF9vcGVyYW5kOlZfNFJFRyAxICJyZWdpc3Rlcl9vcGVyYW5kIgkgICAiICAgdiIp CisJICAocGFyYWxsZWwgWyhtYXRjaF9vcGVyYW5kOlNJIDIgImdjbl9hbHVfb3BlcmFuZCIg IiBTdkIiKV0pKSldCisgICIiCisgICJ2X3JlYWRsYW5lX2IzMiAlTDAsICVMMSwgJTJcO3Zf cmVhZGxhbmVfYjMyICVIMCwgJUgxLCAlMlw7dl9yZWFkbGFuZV9iMzIgJUowLCAlSjEsICUy XDt2X3JlYWRsYW5lX2IzMiAlSzAsICVLMSwgJTIiCisgIFsoc2V0X2F0dHIgInR5cGUiICJ2 bXVsdCIpCisgICAoc2V0X2F0dHIgImxlbmd0aCIgIjMyIikKKyAgIChzZXRfYXR0ciAiZXhl YyIgIm5vbmUiKQorICAgKHNldF9hdHRyICJsYW5lc2VsZWN0IiAieWVzIildKQorCiAoZGVm aW5lX2luc24gInZlY19leHRyYWN0PFZfMVJFRzptb2RlPjxWXzFSRUdfQUxUOm1vZGU+X25v cCIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl8xUkVHX0FMVCAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXYsdiIpCiAJKHZlY19zZWxlY3Q6Vl8xUkVHX0FMVApAQCAtODU0LDM5ICs5NzEs NTIgQEAgKGRlZmluZV9pbnNuICJ2ZWNfZXh0cmFjdDxWXzJSRUc6bW9kZT48Vl8yUkVHX0FM VDptb2RlPl9ub3AiCiAgIFsoc2V0X2F0dHIgInR5cGUiICJ2bXVsdCIpCiAgICAoc2V0X2F0 dHIgImxlbmd0aCIgIjAsOCIpXSkKICAgCi0oZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Q8 Vl9BTEw6bW9kZT48Vl9BTExfQUxUOm1vZGU+IgotICBbKG1hdGNoX29wZXJhbmQ6Vl9BTExf QUxUIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotICAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAi cmVnaXN0ZXJfb3BlcmFuZCIpCisoZGVmaW5lX2luc24gInZlY19leHRyYWN0PFZfNFJFRzpt b2RlPjxWXzRSRUdfQUxUOm1vZGU+X25vcCIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl80 UkVHX0FMVCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYsdiIpCisJKHZlY19zZWxlY3Q6Vl80 UkVHX0FMVAorCSAgKG1hdGNoX29wZXJhbmQ6Vl80UkVHIDEgInJlZ2lzdGVyX29wZXJhbmQi ICAgIiAwLHYiKQorCSAgKG1hdGNoX29wZXJhbmQgMiAiYXNjZW5kaW5nX3plcm9faW50X3Bh cmFsbGVsIiAiIikpKV0KKyAgIk1PREVfVkYgKDxWXzRSRUdfQUxUOk1PREU+bW9kZSkgPCBN T0RFX1ZGICg8Vl80UkVHOk1PREU+bW9kZSkKKyAgICYmIDxWXzRSRUdfQUxUOlNDQUxBUl9N T0RFPm1vZGUgPT0gPFZfNFJFRzpTQ0FMQVJfTU9ERT5tb2RlIgorICAiQAorICA7IGluLXBs YWNlIGV4dHJhY3QgJTAKKyAgdl9tb3ZfYjMyXHQlTDAsICVMMVw7dl9tb3ZfYjMyXHQlSDAs ICVIMVw7dl9tb3ZfYjMyXHQlSjAsICVKMVw7dl9tb3ZfYjMyXHQlSzAsICVLMSIKKyAgWyhz ZXRfYXR0ciAidHlwZSIgInZtdWx0IikKKyAgIChzZXRfYXR0ciAibGVuZ3RoIiAiMCwxNiIp XSkKKyAgCisoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Q8Vl9NT1Y6bW9kZT48Vl9NT1Zf QUxUOm1vZGU+IgorICBbKG1hdGNoX29wZXJhbmQ6Vl9NT1ZfQUxUIDAgInJlZ2lzdGVyX29w ZXJhbmQiKQorICAgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMSAicmVnaXN0ZXJfb3BlcmFuZCIp CiAgICAobWF0Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVfb3BlcmFuZCIpXQotICAiTU9ERV9W RiAoPFZfQUxMX0FMVDpNT0RFPm1vZGUpIDwgTU9ERV9WRiAoPFZfQUxMOk1PREU+bW9kZSkK LSAgICYmIDxWX0FMTF9BTFQ6U0NBTEFSX01PREU+bW9kZSA9PSA8Vl9BTEw6U0NBTEFSX01P REU+bW9kZSIKKyAgIk1PREVfVkYgKDxWX01PVl9BTFQ6TU9ERT5tb2RlKSA8IE1PREVfVkYg KDxWX01PVjpNT0RFPm1vZGUpCisgICAmJiA8Vl9NT1ZfQUxUOlNDQUxBUl9NT0RFPm1vZGUg PT0gPFZfTU9WOlNDQUxBUl9NT0RFPm1vZGUiCiAgIHsKLSAgICBpbnQgbnVtbGFuZXMgPSBH RVRfTU9ERV9OVU5JVFMgKDxWX0FMTF9BTFQ6TU9ERT5tb2RlKTsKKyAgICBpbnQgbnVtbGFu ZXMgPSBHRVRfTU9ERV9OVU5JVFMgKDxWX01PVl9BTFQ6TU9ERT5tb2RlKTsKICAgICBpbnQg Zmlyc3RsYW5lID0gSU5UVkFMIChvcGVyYW5kc1syXSkgKiBudW1sYW5lczsKICAgICBydHgg dG1wOwogCiAgICAgaWYgKGZpcnN0bGFuZSA9PSAwKQogICAgICAgewotCXJ0eCBwYXJhbGxl bCA9IGdlbl9ydHhfUEFSQUxMRUwgKDxWX0FMTDpNT0RFPm1vZGUsCisJcnR4IHBhcmFsbGVs ID0gZ2VuX3J0eF9QQVJBTExFTCAoPFZfTU9WOk1PREU+bW9kZSwKIAkJCQkJICBydHZlY19h bGxvYyAobnVtbGFuZXMpKTsKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bWxhbmVzOyBpKysp CiAJICBYVkVDRVhQIChwYXJhbGxlbCwgMCwgaSkgPSBHRU5fSU5UIChpKTsKLQllbWl0X2lu c24gKGdlbl92ZWNfZXh0cmFjdDxWX0FMTDptb2RlPjxWX0FMTF9BTFQ6bW9kZT5fbm9wCisJ ZW1pdF9pbnNuIChnZW5fdmVjX2V4dHJhY3Q8Vl9NT1Y6bW9kZT48Vl9NT1ZfQUxUOm1vZGU+ X25vcAogCQkgICAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBwYXJhbGxlbCkpOwogICAg ICAgfSBlbHNlIHsKICAgICAgICAgLyogRklYTUU6IG9wdGltaXplIHRoaXMgYnkgdXNpbmcg RFBQIHdoZXJlIGF2YWlsYWJsZS4gICovCiAKLSAgICAgICAgcnR4IHBlcm11dGF0aW9uID0g Z2VuX3JlZ19ydHggKDxWX0FMTDpWblNJPm1vZGUpOwotCWVtaXRfaW5zbiAoZ2VuX3ZlY19z ZXJpZXM8Vl9BTEw6dm5zaT4gKHBlcm11dGF0aW9uLAorICAgICAgICBydHggcGVybXV0YXRp b24gPSBnZW5fcmVnX3J0eCAoPFZfTU9WOlZuU0k+bW9kZSk7CisJZW1pdF9pbnNuIChnZW5f dmVjX3NlcmllczxWX01PVjp2bnNpPiAocGVybXV0YXRpb24sCiAJCQkJCSAgICAgICBHRU5f SU5UIChmaXJzdGxhbmUqNCksCiAJCQkJCSAgICAgICBHRU5fSU5UICg0KSkpOwogCi0JdG1w ID0gZ2VuX3JlZ19ydHggKDxWX0FMTDpNT0RFPm1vZGUpOwotCWVtaXRfaW5zbiAoZ2VuX2Rz X2JwZXJtdXRlPFZfQUxMOm1vZGU+ICh0bXAsIHBlcm11dGF0aW9uLCBvcGVyYW5kc1sxXSwK LQkJCQkJCWdldF9leGVjICg8Vl9BTEw6TU9ERT5tb2RlKSkpOworCXRtcCA9IGdlbl9yZWdf cnR4ICg8Vl9NT1Y6TU9ERT5tb2RlKTsKKwllbWl0X2luc24gKGdlbl9kc19icGVybXV0ZTxW X01PVjptb2RlPiAodG1wLCBwZXJtdXRhdGlvbiwgb3BlcmFuZHNbMV0sCisJCQkJCQlnZXRf ZXhlYyAoPFZfTU9WOk1PREU+bW9kZSkpKTsKIAogCWVtaXRfbW92ZV9pbnNuIChvcGVyYW5k c1swXSwKLQkJCWdlbl9ydHhfU1VCUkVHICg8Vl9BTExfQUxUOk1PREU+bW9kZSwgdG1wLCAw KSk7CisJCQlnZW5fcnR4X1NVQlJFRyAoPFZfTU9WX0FMVDpNT0RFPm1vZGUsIHRtcCwgMCkp OwogICAgICAgfQogICAgIERPTkU7CiAgIH0pCkBAIC04OTQsNyArMTAyNCw3IEBAIChkZWZp bmVfZXhwYW5kICJ2ZWNfZXh0cmFjdDxWX0FMTDptb2RlPjxWX0FMTF9BTFQ6bW9kZT4iCiAo ZGVmaW5lX2V4cGFuZCAiZXh0cmFjdF9sYXN0Xzxtb2RlPiIKICAgWyhtYXRjaF9vcGVyYW5k OjxTQ0FMQVJfTU9ERT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFu ZDpESSAxICJnY25fYWx1X29wZXJhbmQiKQotICAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMiAi cmVnaXN0ZXJfb3BlcmFuZCIpXQorICAgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMiAicmVnaXN0 ZXJfb3BlcmFuZCIpXQogICAiY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSIKICAgewogICAgIHJ0 eCBkc3QgPSBvcGVyYW5kc1swXTsKQEAgLTkxMiw3ICsxMDQyLDcgQEAgKGRlZmluZV9leHBh bmQgImZvbGRfZXh0cmFjdF9sYXN0Xzxtb2RlPiIKICAgWyhtYXRjaF9vcGVyYW5kOjxTQ0FM QVJfTU9ERT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDo8U0NB TEFSX01PREU+IDEgImdjbl9hbHVfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDpESSAy ICJnY25fYWx1X29wZXJhbmQiKQotICAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMyAicmVnaXN0 ZXJfb3BlcmFuZCIpXQorICAgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMyAicmVnaXN0ZXJfb3Bl cmFuZCIpXQogICAiY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSIKICAgewogICAgIHJ0eCBkc3Qg PSBvcGVyYW5kc1swXTsKQEAgLTkzNCw3ICsxMDY0LDcgQEAgKGRlZmluZV9leHBhbmQgImZv bGRfZXh0cmFjdF9sYXN0Xzxtb2RlPiIKICAgfSkKIAogKGRlZmluZV9leHBhbmQgInZlY19p bml0PG1vZGU+PHNjYWxhcl9tb2RlPiIKLSAgWyhtYXRjaF9vcGVyYW5kOlZfQUxMIDAgInJl Z2lzdGVyX29wZXJhbmQiKQorICBbKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMCAicmVnaXN0ZXJf b3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZCAxKV0KICAgIiIKICAgewpAQCAtOTQyLDEx ICsxMDcyLDExIEBAIChkZWZpbmVfZXhwYW5kICJ2ZWNfaW5pdDxtb2RlPjxzY2FsYXJfbW9k ZT4iCiAgICAgRE9ORTsKICAgfSkKIAotKGRlZmluZV9leHBhbmQgInZlY19pbml0PFZfQUxM Om1vZGU+PFZfQUxMX0FMVDptb2RlPiIKLSAgWyhtYXRjaF9vcGVyYW5kOlZfQUxMIDAgInJl Z2lzdGVyX29wZXJhbmQiKQotICAgKG1hdGNoX29wZXJhbmQ6Vl9BTExfQUxUIDEpXQotICAi PFZfQUxMOlNDQUxBUl9NT0RFPm1vZGUgPT0gPFZfQUxMX0FMVDpTQ0FMQVJfTU9ERT5tb2Rl Ci0gICAmJiBNT0RFX1ZGICg8Vl9BTExfQUxUOk1PREU+bW9kZSkgPCBNT0RFX1ZGICg8Vl9B TEw6TU9ERT5tb2RlKSIKKyhkZWZpbmVfZXhwYW5kICJ2ZWNfaW5pdDxWX01PVjptb2RlPjxW X01PVl9BTFQ6bW9kZT4iCisgIFsobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9v cGVyYW5kIikKKyAgIChtYXRjaF9vcGVyYW5kOlZfTU9WX0FMVCAxKV0KKyAgIjxWX01PVjpT Q0FMQVJfTU9ERT5tb2RlID09IDxWX01PVl9BTFQ6U0NBTEFSX01PREU+bW9kZQorICAgJiYg TU9ERV9WRiAoPFZfTU9WX0FMVDpNT0RFPm1vZGUpIDwgTU9ERV9WRiAoPFZfTU9WOk1PREU+ bW9kZSkiCiAgIHsKICAgICBnY25fZXhwYW5kX3ZlY3Rvcl9pbml0IChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0pOwogICAgIERPTkU7CkBAIC05ODgsNyArMTExOCw3IEBAIChkZWZpbmVf ZXhwYW5kICJ2ZWNfaW5pdDxWX0FMTDptb2RlPjxWX0FMTF9BTFQ6bW9kZT4iCiA7OyBUT0RP OiBpbXBsZW1lbnQgY29tYmluZWQgZ2F0aGVyIGFuZCB6ZXJvX2V4dGVuZCwgYnV0IG9ubHkg Zm9yIC1tc3JhbS1lY2M9b24KIAogKGRlZmluZV9leHBhbmQgImdhdGhlcl9sb2FkPG1vZGU+ PHZuc2k+IgotICBbKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIp CisgIFsobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9vcGVyYW5kIikKICAgICht YXRjaF9vcGVyYW5kOkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJh bmQ6PFZuU0k+IDIgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQgMyAi aW1tZWRpYXRlX29wZXJhbmQiKQpAQCAtMTAxMSw4ICsxMTQxLDggQEAgKGRlZmluZV9leHBh bmQgImdhdGhlcl9sb2FkPG1vZGU+PHZuc2k+IgogCiA7IEFsbG93IGFueSBhZGRyZXNzIGV4 cHJlc3Npb24KIChkZWZpbmVfZXhwYW5kICJnYXRoZXI8bW9kZT5fZXhwcjxleGVjPiIKLSAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKHVu c3BlYzpWX0FMTAorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9v cGVyYW5kIikKKwkodW5zcGVjOlZfTU9WCiAJICBbKG1hdGNoX29wZXJhbmQgMSAiIikKIAkg ICAobWF0Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVfb3BlcmFuZCIpCiAJICAgKG1hdGNoX29w ZXJhbmQgMyAiaW1tZWRpYXRlX29wZXJhbmQiKQpAQCAtMTAyMiw4ICsxMTUyLDggQEAgKGRl ZmluZV9leHBhbmQgImdhdGhlcjxtb2RlPl9leHByPGV4ZWM+IgogICAgIHt9KQogCiAoZGVm aW5lX2luc24gImdhdGhlcjxtb2RlPl9pbnNuXzFvZmZzZXQ8ZXhlYz4iCi0gIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZfQUxMIDAgInJlZ2lzdGVyX29wZXJhbmQiCQkgICAiPXYiKQotCSh1 bnNwZWM6Vl9BTEwKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9NT1YgMCAicmVnaXN0ZXJf b3BlcmFuZCIJCSAgICI9diIpCisJKHVuc3BlYzpWX01PVgogCSAgWyhwbHVzOjxWbkRJPiAo bWF0Y2hfb3BlcmFuZDo8Vm5EST4gMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiB2IikKIAkJCSh2 ZWNfZHVwbGljYXRlOjxWbkRJPgogCQkJICAobWF0Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVf b3BlcmFuZCIJICAgIiBuIikpKQpAQCAtMTA2MSw4ICsxMTkxLDggQEAgKGRlZmluZV9pbnNu ICJnYXRoZXI8bW9kZT5faW5zbl8xb2Zmc2V0PGV4ZWM+IgogICAgKHNldF9hdHRyICJsZW5n dGgiICIxMiIpXSkKIAogKGRlZmluZV9pbnNuICJnYXRoZXI8bW9kZT5faW5zbl8xb2Zmc2V0 X2RzPGV4ZWM+IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0FMTCAwICJyZWdpc3Rlcl9v cGVyYW5kIgkJICAgIj12IikKLQkodW5zcGVjOlZfQUxMCisgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZfTU9WIDAgInJlZ2lzdGVyX29wZXJhbmQiCQkgICAiPXYiKQorCSh1bnNwZWM6Vl9N T1YKIAkgIFsocGx1czo8Vm5TST4gKG1hdGNoX29wZXJhbmQ6PFZuU0k+IDEgInJlZ2lzdGVy X29wZXJhbmQiICIgdiIpCiAJCQkodmVjX2R1cGxpY2F0ZTo8Vm5TST4KIAkJCSAgKG1hdGNo X29wZXJhbmQgMiAiaW1tZWRpYXRlX29wZXJhbmQiCSAgICIgbiIpKSkKQEAgLTEwODMsOCAr MTIxMyw4IEBAIChkZWZpbmVfaW5zbiAiZ2F0aGVyPG1vZGU+X2luc25fMW9mZnNldF9kczxl eGVjPiIKICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiMTIiKV0pCiAKIChkZWZpbmVfaW5zbiAi Z2F0aGVyPG1vZGU+X2luc25fMm9mZnNldHM8ZXhlYz4iCi0gIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZfQUxMIDAgInJlZ2lzdGVyX29wZXJhbmQiCQkJIj12IikKLQkodW5zcGVjOlZfQUxM CisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfTU9WIDAgInJlZ2lzdGVyX29wZXJhbmQiCQkJ Ij12IikKKwkodW5zcGVjOlZfTU9WCiAJICBbKHBsdXM6PFZuREk+CiAJICAgICAocGx1czo8 Vm5EST4KIAkgICAgICAgKHZlY19kdXBsaWNhdGU6PFZuREk+CkBAIC0xMTE5LDcgKzEyNDks NyBAQCAoZGVmaW5lX2V4cGFuZCAic2NhdHRlcl9zdG9yZTxtb2RlPjx2bnNpPiIKICAgICht YXRjaF9vcGVyYW5kOjxWblNJPiAxICJyZWdpc3Rlcl9vcGVyYW5kIikKICAgIChtYXRjaF9v cGVyYW5kIDIgImltbWVkaWF0ZV9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kOlNJIDMg Imdjbl9hbHVfb3BlcmFuZCIpCi0gICAobWF0Y2hfb3BlcmFuZDpWX0FMTCA0ICJyZWdpc3Rl cl9vcGVyYW5kIildCisgICAobWF0Y2hfb3BlcmFuZDpWX01PViA0ICJyZWdpc3Rlcl9vcGVy YW5kIildCiAgICIiCiAgIHsKICAgICBydHggYWRkciA9IGdjbl9leHBhbmRfc2NhbGVkX29m ZnNldHMgKERFRkFVTFRfQUREUl9TUEFDRSwgb3BlcmFuZHNbMF0sCkBAIC0xMTQxLDcgKzEy NzEsNyBAQCAoZGVmaW5lX2V4cGFuZCAic2NhdHRlcjxtb2RlPl9leHByPGV4ZWNfc2NhdHRl cj4iCiAgIFsoc2V0IChtZW06QkxLIChzY3JhdGNoKSkKIAkodW5zcGVjOkJMSwogCSAgWyht YXRjaF9vcGVyYW5kOjxWbkRJPiAwICIiKQotCSAgIChtYXRjaF9vcGVyYW5kOlZfQUxMIDEg InJlZ2lzdGVyX29wZXJhbmQiKQorCSAgIChtYXRjaF9vcGVyYW5kOlZfTU9WIDEgInJlZ2lz dGVyX29wZXJhbmQiKQogCSAgIChtYXRjaF9vcGVyYW5kIDIgImltbWVkaWF0ZV9vcGVyYW5k IikKIAkgICAobWF0Y2hfb3BlcmFuZCAzICJpbW1lZGlhdGVfb3BlcmFuZCIpXQogCSAgVU5T UEVDX1NDQVRURVIpKV0KQEAgLTExNTQsNyArMTI4NCw3IEBAIChkZWZpbmVfaW5zbiAic2Nh dHRlcjxtb2RlPl9pbnNuXzFvZmZzZXQ8ZXhlY19zY2F0dGVyPiIKIAkgIFsocGx1czo8Vm5E ST4gKG1hdGNoX29wZXJhbmQ6PFZuREk+IDAgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKIAkJ CSh2ZWNfZHVwbGljYXRlOjxWbkRJPgogCQkJICAobWF0Y2hfb3BlcmFuZCAxICJpbW1lZGlh dGVfb3BlcmFuZCIJICAgIm4iKSkpCi0JICAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMiAicmVn aXN0ZXJfb3BlcmFuZCIJCSAgICJ2IikKKwkgICAobWF0Y2hfb3BlcmFuZDpWX01PViAyICJy ZWdpc3Rlcl9vcGVyYW5kIgkJICAgInYiKQogCSAgIChtYXRjaF9vcGVyYW5kIDMgImltbWVk aWF0ZV9vcGVyYW5kIgkJCSAgICJuIikKIAkgICAobWF0Y2hfb3BlcmFuZCA0ICJpbW1lZGlh dGVfb3BlcmFuZCIJCQkgICAibiIpXQogCSAgVU5TUEVDX1NDQVRURVIpKV0KQEAgLTExOTIs NyArMTMyMiw3IEBAIChkZWZpbmVfaW5zbiAic2NhdHRlcjxtb2RlPl9pbnNuXzFvZmZzZXRf ZHM8ZXhlY19zY2F0dGVyPiIKIAkgIFsocGx1czo8Vm5TST4gKG1hdGNoX29wZXJhbmQ6PFZu U0k+IDAgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKIAkJCSh2ZWNfZHVwbGljYXRlOjxWblNJ PgogCQkJICAobWF0Y2hfb3BlcmFuZCAxICJpbW1lZGlhdGVfb3BlcmFuZCIJICAgIm4iKSkp Ci0JICAgKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMiAicmVnaXN0ZXJfb3BlcmFuZCIJCSAgICJ2 IikKKwkgICAobWF0Y2hfb3BlcmFuZDpWX01PViAyICJyZWdpc3Rlcl9vcGVyYW5kIgkJICAg InYiKQogCSAgIChtYXRjaF9vcGVyYW5kIDMgImltbWVkaWF0ZV9vcGVyYW5kIgkJCSAgICJu IikKIAkgICAobWF0Y2hfb3BlcmFuZCA0ICJpbW1lZGlhdGVfb3BlcmFuZCIJCQkgICAibiIp XQogCSAgVU5TUEVDX1NDQVRURVIpKV0KQEAgLTEyMTgsNyArMTM0OCw3IEBAIChkZWZpbmVf aW5zbiAic2NhdHRlcjxtb2RlPl9pbnNuXzJvZmZzZXRzPGV4ZWNfc2NhdHRlcj4iCiAJICAg ICAgIChzaWduX2V4dGVuZDo8Vm5EST4KIAkJIChtYXRjaF9vcGVyYW5kOjxWblNJPiAxICJy ZWdpc3Rlcl9vcGVyYW5kIgkJIiB2IikpKQogCSAgICAgKHZlY19kdXBsaWNhdGU6PFZuREk+ IChtYXRjaF9vcGVyYW5kIDIgImltbWVkaWF0ZV9vcGVyYW5kIiAiIG4iKSkpCi0JICAgKG1h dGNoX29wZXJhbmQ6Vl9BTEwgMyAicmVnaXN0ZXJfb3BlcmFuZCIJCQkiIHYiKQorCSAgICht YXRjaF9vcGVyYW5kOlZfTU9WIDMgInJlZ2lzdGVyX29wZXJhbmQiCQkJIiB2IikKIAkgICAo bWF0Y2hfb3BlcmFuZCA0ICJpbW1lZGlhdGVfb3BlcmFuZCIJCQkJIiBuIikKIAkgICAobWF0 Y2hfb3BlcmFuZCA1ICJpbW1lZGlhdGVfb3BlcmFuZCIJCQkJIiBuIildCiAJICBVTlNQRUNf U0NBVFRFUikpXQpAQCAtMzgwNCw4ICszOTM0LDggQEAgKGRlZmluZV9leHBhbmQgIndoaWxl X3VsdHNpZGkiCiAgIH0pCiAKIChkZWZpbmVfZXhwYW5kICJtYXNrbG9hZDxtb2RlPmRpIgot ICBbKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0gICAobWF0 Y2hfb3BlcmFuZDpWX0FMTCAxICJtZW1vcnlfb3BlcmFuZCIpCisgIFsobWF0Y2hfb3BlcmFu ZDpWX01PViAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgIChtYXRjaF9vcGVyYW5kOlZfTU9W IDEgIm1lbW9yeV9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kIDIgIiIpXQogICAiIgog ICB7CkBAIC0zODI0LDggKzM5NTQsOCBAQCAoZGVmaW5lX2V4cGFuZCAibWFza2xvYWQ8bW9k ZT5kaSIKICAgfSkKIAogKGRlZmluZV9leHBhbmQgIm1hc2tzdG9yZTxtb2RlPmRpIgotICBb KG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAibWVtb3J5X29wZXJhbmQiKQotICAgKG1hdGNoX29w ZXJhbmQ6Vl9BTEwgMSAicmVnaXN0ZXJfb3BlcmFuZCIpCisgIFsobWF0Y2hfb3BlcmFuZDpW X01PViAwICJtZW1vcnlfb3BlcmFuZCIpCisgICAobWF0Y2hfb3BlcmFuZDpWX01PViAxICJy ZWdpc3Rlcl9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kIDIgIiIpXQogICAiIgogICB7 CkBAIC0zODM5LDcgKzM5NjksNyBAQCAoZGVmaW5lX2V4cGFuZCAibWFza3N0b3JlPG1vZGU+ ZGkiCiAgIH0pCiAKIChkZWZpbmVfZXhwYW5kICJtYXNrX2dhdGhlcl9sb2FkPG1vZGU+PHZu c2k+IgotICBbKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisg IFsobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9vcGVyYW5kIikKICAgIChtYXRj aF9vcGVyYW5kOkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQ6 PFZuU0k+IDIgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQgMyAiaW1t ZWRpYXRlX29wZXJhbmQiKQpAQCAtMzg3NCw3ICs0MDA0LDcgQEAgKGRlZmluZV9leHBhbmQg Im1hc2tfc2NhdHRlcl9zdG9yZTxtb2RlPjx2bnNpPiIKICAgIChtYXRjaF9vcGVyYW5kOjxW blNJPiAxICJyZWdpc3Rlcl9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kIDIgImltbWVk aWF0ZV9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVyYW5kOlNJIDMgImdjbl9hbHVfb3BlcmFu ZCIpCi0gICAobWF0Y2hfb3BlcmFuZDpWX0FMTCA0ICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAg IChtYXRjaF9vcGVyYW5kOlZfTU9WIDQgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNo X29wZXJhbmQ6REkgNSAiIildCiAgICIiCiAgIHsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv Z2NuL2djbi5jYyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwppbmRleCBlZmI3MjExZDU0ZS4u ZWFkODlhOWZiYWYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL2djbi5jYworKysgYi9n Y2MvY29uZmlnL2djbi9nY24uY2MKQEAgLTQ4OSw3ICs0ODksNyBAQCBnY25fY2xhc3NfbWF4 X25yZWdzIChyZWdfY2xhc3NfdCByY2xhc3MsIG1hY2hpbmVfbW9kZSBtb2RlKQogICAgICAg aWYgKHZncHJfMnJlZ19tb2RlX3AgKG1vZGUpKQogCXJldHVybiAyOwogICAgICAgLyogVElt b2RlIGlzIHVzZWQgYnkgREltb2RlIGNvbXBhcmVfYW5kX3N3YXAuICAqLwotICAgICAgaWYg KG1vZGUgPT0gVEltb2RlKQorICAgICAgaWYgKHZncHJfNHJlZ19tb2RlX3AgKG1vZGUpKQog CXJldHVybiA0OwogICAgIH0KICAgZWxzZSBpZiAocmNsYXNzID09IFZDQ19DT05ESVRJT05B TF9SRUcgJiYgbW9kZSA9PSBCSW1vZGUpCkBAIC01OTIsOSArNTkyLDkgQEAgZ2NuX2hhcmRf cmVnbm9fbW9kZV9vayAodW5zaWduZWQgaW50IHJlZ25vLCBtYWNoaW5lX21vZGUgbW9kZSkK ICAgICAgICBUaGVyZWZvcmUsIHdlIHJlc3RyaWN0IG91cnNlbHZlZCB0byBhbGlnbmVkIHJl Z2lzdGVycy4gICovCiAgICAgcmV0dXJuICh2Z3ByXzFyZWdfbW9kZV9wIChtb2RlKQogCSAg ICB8fCAoISgocmVnbm8gLSBGSVJTVF9WR1BSX1JFRykgJiAxKSAmJiB2Z3ByXzJyZWdfbW9k ZV9wIChtb2RlKSkKLQkgICAgLyogVEltb2RlIGlzIHVzZWQgYnkgREltb2RlIGNvbXBhcmVf YW5kX3N3YXAuICAqLwotCSAgICB8fCAobW9kZSA9PSBUSW1vZGUKLQkJJiYgISgocmVnbm8g LSBGSVJTVF9WR1BSX1JFRykgJiAzKSkpOworCSAgICAvKiBUSW1vZGUgaXMgdXNlZCBieSBE SW1vZGUgY29tcGFyZV9hbmRfc3dhcCwKKwkgICAgICAgYW5kIGJ5IERJVk1PRCBWNjRESW1v ZGUgbGliZnVuY3MuICAqLworCSAgICB8fCAoISgocmVnbm8gLSBGSVJTVF9WR1BSX1JFRykg JiAzKSAmJiB2Z3ByXzRyZWdfbW9kZV9wIChtb2RlKSkpOwogICByZXR1cm4gZmFsc2U7CiB9 CiAKQEAgLTEzMjYsNiArMTMyNiw3IEBAIEdFTl9WTiAoUFJFRklYLCBzaSMjU1VGRklYLCBB KFBBUkFNUyksIEEoQVJHUykpIFwKIEdFTl9WTiAoUFJFRklYLCBzZiMjU1VGRklYLCBBKFBB UkFNUyksIEEoQVJHUykpIFwKIEdFTl9WTiAoUFJFRklYLCBkaSMjU1VGRklYLCBBKFBBUkFN UyksIEEoQVJHUykpIFwKIEdFTl9WTiAoUFJFRklYLCBkZiMjU1VGRklYLCBBKFBBUkFNUyks IEEoQVJHUykpIFwKK1VTRV9USSAoR0VOX1ZOIChQUkVGSVgsIHRpIyNTVUZGSVgsIEEoUEFS QU1TKSwgQShBUkdTKSkpIFwKIHN0YXRpYyBydHggXAogZ2VuXyMjUFJFRklYIyN2Tm0jI1NV RkZJWCAoUEFSQU1TLCBydHggbWVyZ2Vfc3JjPU5VTEwsIHJ0eCBleGVjPU5VTEwpIFwKIHsg XApAQCAtMTM0MCw2ICsxMzQxLDggQEAgZ2VuXyMjUFJFRklYIyN2Tm0jI1NVRkZJWCAoUEFS QU1TLCBydHggbWVyZ2Vfc3JjPU5VTEwsIHJ0eCBleGVjPU5VTEwpIFwKICAgICBjYXNlIEVf U0Ztb2RlOiByZXR1cm4gZ2VuXyMjUFJFRklYIyN2TnNmIyNTVUZGSVggKEFSR1MsIG1lcmdl X3NyYywgZXhlYyk7IFwKICAgICBjYXNlIEVfREltb2RlOiByZXR1cm4gZ2VuXyMjUFJFRklY IyN2TmRpIyNTVUZGSVggKEFSR1MsIG1lcmdlX3NyYywgZXhlYyk7IFwKICAgICBjYXNlIEVf REZtb2RlOiByZXR1cm4gZ2VuXyMjUFJFRklYIyN2TmRmIyNTVUZGSVggKEFSR1MsIG1lcmdl X3NyYywgZXhlYyk7IFwKKyAgICBjYXNlIEVfVEltb2RlOiBcCisJVVNFX1RJIChyZXR1cm4g Z2VuXyMjUFJFRklYIyN2TnRpIyNTVUZGSVggKEFSR1MsIG1lcmdlX3NyYywgZXhlYyk7KSBc CiAgICAgZGVmYXVsdDogXAogICAgICAgYnJlYWs7IFwKICAgICB9IFwKQEAgLTEzNDgsNiAr MTM1MSwxNCBAQCBnZW5fIyNQUkVGSVgjI3ZObSMjU1VGRklYIChQQVJBTVMsIHJ0eCBtZXJn ZV9zcmM9TlVMTCwgcnR4IGV4ZWM9TlVMTCkgXAogICByZXR1cm4gTlVMTF9SVFg7IFwKIH0K IAorLyogVGhlc2UgaGF2ZSBUSW1vZGUgc3VwcG9ydC4gICovCisjZGVmaW5lIFVTRV9USShB UkdTKSBBUkdTCitHRU5fVk5NIChtb3YsLCBBKHJ0eCBkZXN0LCBydHggc3JjKSwgQShkZXN0 LCBzcmMpKQorR0VOX1ZOTSAodmVjX2R1cGxpY2F0ZSwsIEEocnR4IGRlc3QsIHJ0eCBzcmMp LCBBKGRlc3QsIHNyYykpCisKKy8qIFRoZXNlIGRvIG5vdCBoYXZlIFRJbW9kZSBzdXBwb3J0 LiAgKi8KKyN1bmRlZiBVU0VfVEkKKyNkZWZpbmUgVVNFX1RJKEFSR1MpCiBHRU5fVk5NIChh ZGQsMywgQShydHggZGVzdCwgcnR4IHNyYzEsIHJ0eCBzcmMyKSwgQShkZXN0LCBzcmMxLCBz cmMyKSkKIEdFTl9WTiAoYWRkLHNpM19kdXAsIEEocnR4IGRlc3QsIHJ0eCBzcmMxLCBydHgg c3JjMiksIEEoZGVzdCwgc3JjMSwgc3JjMikpCiBHRU5fVk4gKGFkZCxzaTNfdmNjX2R1cCwg QShydHggZGVzdCwgcnR4IHNyYzEsIHJ0eCBzcmMyLCBydHggdmNjKSwKQEAgLTEzNjYsMTIg KzEzNzcsMTEgQEAgR0VOX1ZOTV9OT0VYRUMgKGRzX2JwZXJtdXRlLCwgQShydHggZGVzdCwg cnR4IGFkZHIsIHJ0eCBzcmMsIHJ0eCBleGVjKSwKIAkJQShkZXN0LCBhZGRyLCBzcmMsIGV4 ZWMpKQogR0VOX1ZOTSAoZ2F0aGVyLF9leHByLCBBKHJ0eCBkZXN0LCBydHggYWRkciwgcnR4 IGFzLCBydHggdm9sKSwKIAkgQShkZXN0LCBhZGRyLCBhcywgdm9sKSkKLUdFTl9WTk0gKG1v diwsIEEocnR4IGRlc3QsIHJ0eCBzcmMpLCBBKGRlc3QsIHNyYykpCiBHRU5fVk4gKG11bCxz aTNfZHVwLCBBKHJ0eCBkZXN0LCBydHggc3JjMSwgcnR4IHNyYzIpLCBBKGRlc3QsIHNyYzEs IHNyYzIpKQogR0VOX1ZOIChzdWIsc2kzLCBBKHJ0eCBkZXN0LCBydHggc3JjMSwgcnR4IHNy YzIpLCBBKGRlc3QsIHNyYzEsIHNyYzIpKQotR0VOX1ZOTSAodmVjX2R1cGxpY2F0ZSwsIEEo cnR4IGRlc3QsIHJ0eCBzcmMpLCBBKGRlc3QsIHNyYykpCiBHRU5fVk5fTk9FWEVDICh2ZWNf c2VyaWVzLHNpLCBBKHJ0eCBkZXN0LCBydHggeCwgcnR4IGMpLCBBKGRlc3QsIHgsIGMpKQog CisjdW5kZWYgVVNFX1RJCiAjdW5kZWYgR0VOX1ZOTQogI3VuZGVmIEdFTl9WTgogI3VuZGVm IEdFVF9WTl9GTgpAQCAtMTQwNSw2ICsxNDE1LDcgQEAgZ2V0X2NvZGVfZm9yXyMjUFJFRklY IyN2TiMjU1VGRklYIChpbnQgbnVuaXRzKSBcCiAJQ09ERV9GT1IgKFBSRUZJWCwgc2YpIFwK IAlDT0RFX0ZPUiAoUFJFRklYLCBkaSkgXAogCUNPREVfRk9SIChQUkVGSVgsIGRmKSBcCisJ Q09ERV9GT1IgKFBSRUZJWCwgdGkpIFwKIHN0YXRpYyBpbnQgXAogZ2V0X2NvZGVfZm9yXyMj UFJFRklYIChtYWNoaW5lX21vZGUgbW9kZSkgXAogeyBcCkBAIC0xNDIwLDYgKzE0MzEsNyBA QCBnZXRfY29kZV9mb3JfIyNQUkVGSVggKG1hY2hpbmVfbW9kZSBtb2RlKSBcCiAgICAgY2Fz ZSBFX1NGbW9kZTogcmV0dXJuIGdldF9jb2RlX2Zvcl8jI1BSRUZJWCMjdk5zZiAodmYpOyBc CiAgICAgY2FzZSBFX0RJbW9kZTogcmV0dXJuIGdldF9jb2RlX2Zvcl8jI1BSRUZJWCMjdk5k aSAodmYpOyBcCiAgICAgY2FzZSBFX0RGbW9kZTogcmV0dXJuIGdldF9jb2RlX2Zvcl8jI1BS RUZJWCMjdk5kZiAodmYpOyBcCisgICAgY2FzZSBFX1RJbW9kZTogcmV0dXJuIGdldF9jb2Rl X2Zvcl8jI1BSRUZJWCMjdk50aSAodmYpOyBcCiAgICAgZGVmYXVsdDogYnJlYWs7IFwKICAg ICB9IFwKICAgXApAQCAtNDg5NSw3ICs0OTA3LDEzIEBAIGdjbl92ZWN0b3JfbW9kZV9zdXBw b3J0ZWRfcCAobWFjaGluZV9tb2RlIG1vZGUpCiAJICB8fCBtb2RlID09IFY0U0Ztb2RlIHx8 IG1vZGUgPT0gVjRERm1vZGUKIAkgIHx8IG1vZGUgPT0gVjJRSW1vZGUgfHwgbW9kZSA9PSBW MkhJbW9kZQogCSAgfHwgbW9kZSA9PSBWMlNJbW9kZSB8fCBtb2RlID09IFYyREltb2RlCi0J ICB8fCBtb2RlID09IFYyU0Ztb2RlIHx8IG1vZGUgPT0gVjJERm1vZGUpOworCSAgfHwgbW9k ZSA9PSBWMlNGbW9kZSB8fCBtb2RlID09IFYyREZtb2RlCisJICAvKiBUSW1vZGUgdmVjdG9y cyBhcmUgYWxsb3dlZCB0byBleGlzdCBmb3IgZGl2bW9kLCBidXQgdGhlcmUKKwkgICAgIGFy ZSBhbG1vc3Qgbm8gaW5zdHJ1Y3Rpb25zIGRlZmluZWQgZm9yIHRoZW0sIGFuZCB0aGUKKwkg ICAgIGF1dG92ZWN0b3JpemVyIGRvZXMgbm90IHVzZSB0aGVtLiAgKi8KKwkgIHx8IG1vZGUg PT0gVjY0VEltb2RlIHx8IG1vZGUgPT0gVjMyVEltb2RlCisJICB8fCBtb2RlID09IFYxNlRJ bW9kZSB8fCBtb2RlID09IFY4VEltb2RlCisJICB8fCBtb2RlID09IFY0VEltb2RlIHx8IG1v ZGUgPT0gVjJUSW1vZGUpOwogfQogCiAvKiBJbXBsZW1lbnQgVEFSR0VUX1ZFQ1RPUklaRV9Q UkVGRVJSRURfU0lNRF9NT0RFLgpAQCAtNjcyMiw2ICs2NzQwLDEwIEBAIHByaW50X29wZXJh bmRfYWRkcmVzcyAoRklMRSAqZmlsZSwgcnR4IG1lbSkKICAgIE8gLSBwcmludCBvZmZzZXQ6 biBmb3IgZGF0YSBzaGFyZSBvcGVyYXRpb25zLgogICAgXiAtIHByaW50ICJfY28iIHN1ZmZp eCBmb3IgR0NONSBtbmVtb25pY3MKICAgIGcgLSBwcmludCAiZ2xjIiwgaWYgYXBwcm9wcmlh dGUgZm9yIGdpdmVuIE1FTQorICAgTCAtIHByaW50IGxvdy1wYXJ0IG9mIGEgbXVsdGktcmVn IHZhbHVlCisgICBIIC0gcHJpbnQgc2Vjb25kIHBhcnQgb2YgYSBtdWx0aS1yZWcgdmFsdWUg KGhpZ2gtcGFydCBvZiAyLXJlZyB2YWx1ZSkKKyAgIEogLSBwcmludCB0aGlyZCBwYXJ0IG9m IGEgbXVsdGktcmVnIHZhbHVlCisgICBLIC0gcHJpbnQgZm91cnRoIHBhcnQgb2YgYSBtdWx0 aS1yZWcgdmFsdWUKICAqLwogCiB2b2lkCkBAIC03MjYxLDYgKzcyODMsMTIgQEAgcHJpbnRf b3BlcmFuZCAoRklMRSAqZmlsZSwgcnR4IHgsIGludCBjb2RlKQogICAgIGNhc2UgJ0gnOgog ICAgICAgcHJpbnRfb3BlcmFuZCAoZmlsZSwgZ2NuX29wZXJhbmRfcGFydCAoR0VUX01PREUg KHgpLCB4LCAxKSwgMCk7CiAgICAgICByZXR1cm47CisgICAgY2FzZSAnSic6CisgICAgICBw cmludF9vcGVyYW5kIChmaWxlLCBnY25fb3BlcmFuZF9wYXJ0IChHRVRfTU9ERSAoeCksIHgs IDIpLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICBjYXNlICdLJzoKKyAgICAgIHByaW50X29w ZXJhbmQgKGZpbGUsIGdjbl9vcGVyYW5kX3BhcnQgKEdFVF9NT0RFICh4KSwgeCwgMyksIDAp OworICAgICAgcmV0dXJuOwogICAgIGNhc2UgJ1InOgogICAgICAgLyogUHJpbnQgYSBzY2Fs YXIgcmVnaXN0ZXIgbnVtYmVyIGFzIGFuIGludGVnZXIuICBUZW1wb3JhcnkgaGFjay4gICov CiAgICAgICBnY2NfYXNzZXJ0IChSRUdfUCAoeCkpOwo= --------------3tNbRx95vBF3iHQDEVP4Lcbf--