Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0gOx-0002WS-4B for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 10:02:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p0gOv-0001HC-V6 for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 10:02:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0gOv-0001Ef-By for pgsql-hackers@lists.postgresql.org; Thu, 01 Dec 2022 10:02:41 +0000 Received: from wnew4-smtp.messagingengine.com ([64.147.123.18]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0gOr-0001rP-ED for pgsql-hackers@postgresql.org; Thu, 01 Dec 2022 10:02:40 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailnew.west.internal (Postfix) with ESMTP id 89EAB2B06800 for ; Thu, 1 Dec 2022 05:02:35 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 01 Dec 2022 05:02:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1669888955; x= 1669896155; bh=q1AFZJAsp5NPrsbGLcS2qxgj+j8EL463qm83HUEyirk=; b=W eUOhvOqqQy+C6DwRCCRVeC8SqezlJ8Z3Ep02ygDZ9qleGTK5/CX3uESYpLqpeOMK q+j9+lSUxy5Yvq0KnRjThh63mH7lLajJSNuiPLqBsUYVmfwKwtIT22r5BSQePMvC AybkZGnbYd9IAu1ByYV+/0fUCEu/KhHDAncPY2PfPXjIsYTx8YW3hGPhULh7Wlfx lFd8Me9Y28zni4cQWn8ZsXOCBJ9iN4xXJRSPISofjkIVN4/PMWv7fkhdLuIiDg0s r+lfIrsasooQyJR9Xe5P66Xy9lBpuv8YAumtHiQl2B6kwdEF0kRTMhd/yCntBNsw 6Yemw7BewEyGpgFCZ70wA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrtdehgdduudcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderredtfe ejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhs vghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrh hnpeetveeuvdeikeeigefhveffhffhvdejveelleefieekieekvdffgeetkedutdefleen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvg hrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 1 Dec 2022 05:02:34 -0500 (EST) Content-Type: multipart/mixed; boundary="------------G0u8CKyT0lLo3eDfWNF94FVH" Message-ID: <2c50823b-f453-bb97-e38b-34751c51dcdf@enterprisedb.com> Date: Thu, 1 Dec 2022 11:02:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Content-Language: en-US From: Peter Eisentraut Subject: initdb: Refactor PG_CMD_PUTS loops To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------G0u8CKyT0lLo3eDfWNF94FVH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Keeping the SQL commands that initdb runs in string arrays before feeding them to PG_CMD_PUTS() seems unnecessarily verbose and inflexible. In some cases, the array only has one member. In other cases, one might want to use PG_CMD_PRINTF() instead, to parametrize a command, but that would require breaking up the loop or using workarounds like replace_token(). This patch unwinds all that; it's much simpler that way. --------------G0u8CKyT0lLo3eDfWNF94FVH Content-Type: text/plain; charset=UTF-8; name="0001-initdb-Refactor-PG_CMD_PUTS-loops.patch" Content-Disposition: attachment; filename="0001-initdb-Refactor-PG_CMD_PUTS-loops.patch" Content-Transfer-Encoding: base64 RnJvbSBlMTc3YTE0MmE5YTU0MTJmZjhhZWIyNzEzMzAwMDVlZjUxOGIzMmQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDA5OjQ5OjQ4ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gaW5pdGRiOiBSZWZhY3RvciBQR19DTURfUFVUUyBsb29wcwoKS2VlcGluZyB0 aGUgU1FMIGNvbW1hbmRzIHRoYXQgaW5pdGRiIHJ1bnMgaW4gc3RyaW5nIGFycmF5cyBiZWZv cmUKZmVlZGluZyB0aGVtIHRvIFBHX0NNRF9QVVRTKCkgc2VlbXMgdW5uZWNlc3NhcmlseSB2 ZXJib3NlIGFuZAppbmZsZXhpYmxlLiAgSW4gc29tZSBjYXNlcywgdGhlIGFycmF5IG9ubHkg aGFzIG9uZSBtZW1iZXIuICBJbiBvdGhlcgpjYXNlcywgb25lIG1pZ2h0IHdhbnQgdG8gdXNl IFBHX0NNRF9QUklOVEYoKSBpbnN0ZWFkLCB0byBwYXJhbWV0cml6ZSBhCmNvbW1hbmQsIGJ1 dCB0aGF0IHdvdWxkIHJlcXVpcmUgYnJlYWtpbmcgdXAgdGhlIGxvb3Agb3IgdXNpbmcKd29y a2Fyb3VuZHMgbGlrZSByZXBsYWNlX3Rva2VuKCkuICBVbndpbmQgYWxsIHRoYXQ7IGl0J3Mg bXVjaCBzaW1wbGVyCnRoYXQgd2F5LgotLS0KIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5jIHwg Mzc5ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwgMjA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMK aW5kZXggZjYxYTA0MzA1NTkwLi43YzM5MWFhZjBiMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v aW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xMzUw LDE4ICsxMzUwLDExIEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEodm9pZCkKIHN0YXRpYyB2b2lk CiBzZXR1cF9hdXRoKEZJTEUgKmNtZGZkKQogewotCWNvbnN0IGNoYXIgKmNvbnN0ICpsaW5l OwotCXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBwZ19hdXRoaWRfc2V0dXBbXSA9IHsKLQkJ LyoKLQkJICogVGhlIGF1dGhpZCB0YWJsZSBzaG91bGRuJ3QgYmUgcmVhZGFibGUgZXhjZXB0 IHRocm91Z2ggdmlld3MsIHRvCi0JCSAqIGVuc3VyZSBwYXNzd29yZHMgYXJlIG5vdCBwdWJs aWNseSB2aXNpYmxlLgotCQkgKi8KLQkJIlJFVk9LRSBBTEwgT04gcGdfYXV0aGlkIEZST00g cHVibGljO1xuXG4iLAotCQlOVUxMCi0JfTsKLQotCWZvciAobGluZSA9IHBnX2F1dGhpZF9z ZXR1cDsgKmxpbmUgIT0gTlVMTDsgbGluZSsrKQotCQlQR19DTURfUFVUUygqbGluZSk7CisJ LyoKKwkgKiBUaGUgYXV0aGlkIHRhYmxlIHNob3VsZG4ndCBiZSByZWFkYWJsZSBleGNlcHQg dGhyb3VnaCB2aWV3cywgdG8KKwkgKiBlbnN1cmUgcGFzc3dvcmRzIGFyZSBub3QgcHVibGlj bHkgdmlzaWJsZS4KKwkgKi8KKwlQR19DTURfUFVUUygiUkVWT0tFIEFMTCBPTiBwZ19hdXRo aWQgRlJPTSBwdWJsaWM7XG5cbiIpOwogCiAJaWYgKHN1cGVydXNlcl9wYXNzd29yZCkKIAkJ UEdfQ01EX1BSSU5URigiQUxURVIgVVNFUiBcIiVzXCIgV0lUSCBQQVNTV09SRCBFJyVzJztc blxuIiwKQEAgLTE0MzMsMTggKzE0MjYsMTEgQEAgZ2V0X3N1X3B3ZCh2b2lkKQogc3RhdGlj IHZvaWQKIHNldHVwX2RlcGVuZChGSUxFICpjbWRmZCkKIHsKLQljb25zdCBjaGFyICpjb25z dCAqbGluZTsKLQlzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcGdfZGVwZW5kX3NldHVwW10g PSB7Ci0JCS8qCi0JCSAqIEFkdmFuY2UgdGhlIE9JRCBjb3VudGVyIHNvIHRoYXQgc3Vic2Vx dWVudGx5LWNyZWF0ZWQgb2JqZWN0cyBhcmVuJ3QKLQkJICogcGlubmVkLgotCQkgKi8KLQkJ IlNFTEVDVCBwZ19zdG9wX21ha2luZ19waW5uZWRfb2JqZWN0cygpO1xuXG4iLAotCQlOVUxM Ci0JfTsKLQotCWZvciAobGluZSA9IHBnX2RlcGVuZF9zZXR1cDsgKmxpbmUgIT0gTlVMTDsg bGluZSsrKQotCQlQR19DTURfUFVUUygqbGluZSk7CisJLyoKKwkgKiBBZHZhbmNlIHRoZSBP SUQgY291bnRlciBzbyB0aGF0IHN1YnNlcXVlbnRseS1jcmVhdGVkIG9iamVjdHMgYXJlbid0 CisJICogcGlubmVkLgorCSAqLworCVBHX0NNRF9QVVRTKCJTRUxFQ1QgcGdfc3RvcF9tYWtp bmdfcGlubmVkX29iamVjdHMoKTtcblxuIik7CiB9CiAKIC8qCkBAIC0xNTMwLDE0NyArMTUx NiwxMzggQEAgc2V0dXBfY29sbGF0aW9uKEZJTEUgKmNtZGZkKQogc3RhdGljIHZvaWQKIHNl dHVwX3ByaXZpbGVnZXMoRklMRSAqY21kZmQpCiB7Ci0JY2hhcgkgICoqbGluZTsKLQljaGFy CSAgKipwcml2X2xpbmVzOwotCXN0YXRpYyBjaGFyICpwcml2aWxlZ2VzX3NldHVwW10gPSB7 Ci0JCSJVUERBVEUgcGdfY2xhc3MgIgotCQkiICBTRVQgcmVsYWNsID0gKFNFTEVDVCBhcnJh eV9hZ2coYS5hY2wpIEZST00gIgotCQkiIChTRUxFQ1QgRSc9ci9cIiRQT1NUR1JFU19TVVBF UlVTRVJOQU1FXCInIGFzIGFjbCAiCi0JCSIgIFVOSU9OIFNFTEVDVCB1bm5lc3QocGdfY2F0 YWxvZy5hY2xkZWZhdWx0KCIKLQkJIiAgICBDQVNFIFdIRU4gcmVsa2luZCA9ICIgQ3BwQXNT dHJpbmcyKFJFTEtJTkRfU0VRVUVOQ0UpICIgVEhFTiAncycgIgotCQkiICAgICAgICAgRUxT RSAncicgRU5EOjpcImNoYXJcIiwiIENwcEFzU3RyaW5nMihCT09UU1RSQVBfU1VQRVJVU0VS SUQpICI6Om9pZCkpIgotCQkiICkgYXMgYSkgIgotCQkiICBXSEVSRSByZWxraW5kIElOICgi IENwcEFzU3RyaW5nMihSRUxLSU5EX1JFTEFUSU9OKSAiLCAiCi0JCUNwcEFzU3RyaW5nMihS RUxLSU5EX1ZJRVcpICIsICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfTUFUVklFVykgIiwgIgot CQlDcHBBc1N0cmluZzIoUkVMS0lORF9TRVFVRU5DRSkgIikiCi0JCSIgIEFORCByZWxhY2wg SVMgTlVMTDtcblxuIiwKLQkJIkdSQU5UIFVTQUdFIE9OIFNDSEVNQSBwZ19jYXRhbG9nLCBw dWJsaWMgVE8gUFVCTElDO1xuXG4iLAotCQkiUkVWT0tFIEFMTCBPTiBwZ19sYXJnZW9iamVj dCBGUk9NIFBVQkxJQztcblxuIiwKLQkJIklOU0VSVCBJTlRPIHBnX2luaXRfcHJpdnMgIgot CQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUp IgotCQkiICAgIFNFTEVDVCIKLQkJIiAgICAgICAgb2lkLCIKLQkJIiAgICAgICAgKFNFTEVD VCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyksIgotCQki ICAgICAgICAwLCIKLQkJIiAgICAgICAgcmVsYWNsLCIKLQkJIiAgICAgICAgJ2knIgotCQki ICAgIEZST00iCi0JCSIgICAgICAgIHBnX2NsYXNzIgotCQkiICAgIFdIRVJFIgotCQkiICAg ICAgICByZWxhY2wgSVMgTk9UIE5VTEwiCi0JCSIgICAgICAgIEFORCByZWxraW5kIElOICgi IENwcEFzU3RyaW5nMihSRUxLSU5EX1JFTEFUSU9OKSAiLCAiCi0JCUNwcEFzU3RyaW5nMihS RUxLSU5EX1ZJRVcpICIsICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfTUFUVklFVykgIiwgIgot CQlDcHBBc1N0cmluZzIoUkVMS0lORF9TRVFVRU5DRSkgIik7XG5cbiIsCi0JCSJJTlNFUlQg SU5UTyBwZ19pbml0X3ByaXZzICIKLQkJIiAgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1Ymlk LCBpbml0cHJpdnMsIHByaXZ0eXBlKSIKLQkJIiAgICBTRUxFQ1QiCi0JCSIgICAgICAgIHBn X2NsYXNzLm9pZCwiCi0JCSIgICAgICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hF UkUgcmVsbmFtZSA9ICdwZ19jbGFzcycpLCIKLQkJIiAgICAgICAgcGdfYXR0cmlidXRlLmF0 dG51bSwiCi0JCSIgICAgICAgIHBnX2F0dHJpYnV0ZS5hdHRhY2wsIgotCQkiICAgICAgICAn aSciCi0JCSIgICAgRlJPTSIKLQkJIiAgICAgICAgcGdfY2xhc3MiCi0JCSIgICAgICAgIEpP SU4gcGdfYXR0cmlidXRlIE9OIChwZ19jbGFzcy5vaWQgPSBwZ19hdHRyaWJ1dGUuYXR0cmVs aWQpIgotCQkiICAgIFdIRVJFIgotCQkiICAgICAgICBwZ19hdHRyaWJ1dGUuYXR0YWNsIElT IE5PVCBOVUxMIgotCQkiICAgICAgICBBTkQgcGdfY2xhc3MucmVsa2luZCBJTiAoIiBDcHBB c1N0cmluZzIoUkVMS0lORF9SRUxBVElPTikgIiwgIgotCQlDcHBBc1N0cmluZzIoUkVMS0lO RF9WSUVXKSAiLCAiIENwcEFzU3RyaW5nMihSRUxLSU5EX01BVFZJRVcpICIsICIKLQkJQ3Bw QXNTdHJpbmcyKFJFTEtJTkRfU0VRVUVOQ0UpICIpO1xuXG4iLAotCQkiSU5TRVJUIElOVE8g cGdfaW5pdF9wcml2cyAiCi0JCSIgIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5p dHByaXZzLCBwcml2dHlwZSkiCi0JCSIgICAgU0VMRUNUIgotCQkiICAgICAgICBvaWQsIgot CQkiICAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAn cGdfcHJvYycpLCIKLQkJIiAgICAgICAgMCwiCi0JCSIgICAgICAgIHByb2FjbCwiCi0JCSIg ICAgICAgICdpJyIKLQkJIiAgICBGUk9NIgotCQkiICAgICAgICBwZ19wcm9jIgotCQkiICAg IFdIRVJFIgotCQkiICAgICAgICBwcm9hY2wgSVMgTk9UIE5VTEw7XG5cbiIsCi0JCSJJTlNF UlQgSU5UTyBwZ19pbml0X3ByaXZzICIKLQkJIiAgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1 YmlkLCBpbml0cHJpdnMsIHByaXZ0eXBlKSIKLQkJIiAgICBTRUxFQ1QiCi0JCSIgICAgICAg IG9pZCwiCi0JCSIgICAgICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVs bmFtZSA9ICdwZ190eXBlJyksIgotCQkiICAgICAgICAwLCIKLQkJIiAgICAgICAgdHlwYWNs LCIKLQkJIiAgICAgICAgJ2knIgotCQkiICAgIEZST00iCi0JCSIgICAgICAgIHBnX3R5cGUi Ci0JCSIgICAgV0hFUkUiCi0JCSIgICAgICAgIHR5cGFjbCBJUyBOT1QgTlVMTDtcblxuIiwK LQkJIklOU0VSVCBJTlRPIHBnX2luaXRfcHJpdnMgIgotCQkiICAob2Jqb2lkLCBjbGFzc29p ZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUpIgotCQkiICAgIFNFTEVDVCIKLQkJ IiAgICAgICAgb2lkLCIKLQkJIiAgICAgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3BnX2xhbmd1YWdlJyksIgotCQkiICAgICAgICAwLCIKLQkJIiAg ICAgICAgbGFuYWNsLCIKLQkJIiAgICAgICAgJ2knIgotCQkiICAgIEZST00iCi0JCSIgICAg ICAgIHBnX2xhbmd1YWdlIgotCQkiICAgIFdIRVJFIgotCQkiICAgICAgICBsYW5hY2wgSVMg Tk9UIE5VTEw7XG5cbiIsCi0JCSJJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzICIKLQkJIiAg KG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBpbml0cHJpdnMsIHByaXZ0eXBlKSIKLQkJ IiAgICBTRUxFQ1QiCi0JCSIgICAgICAgIG9pZCwiCi0JCSIgICAgICAgIChTRUxFQ1Qgb2lk IEZST00gcGdfY2xhc3MgV0hFUkUgIgotCQkiICAgICAgICAgcmVsbmFtZSA9ICdwZ19sYXJn ZW9iamVjdF9tZXRhZGF0YScpLCIKLQkJIiAgICAgICAgMCwiCi0JCSIgICAgICAgIGxvbWFj bCwiCi0JCSIgICAgICAgICdpJyIKLQkJIiAgICBGUk9NIgotCQkiICAgICAgICBwZ19sYXJn ZW9iamVjdF9tZXRhZGF0YSIKLQkJIiAgICBXSEVSRSIKLQkJIiAgICAgICAgbG9tYWNsIElT IE5PVCBOVUxMO1xuXG4iLAotCQkiSU5TRVJUIElOVE8gcGdfaW5pdF9wcml2cyAiCi0JCSIg IChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5pdHByaXZzLCBwcml2dHlwZSkiCi0J CSIgICAgU0VMRUNUIgotCQkiICAgICAgICBvaWQsIgotCQkiICAgICAgICAoU0VMRUNUIG9p ZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfbmFtZXNwYWNlJyksIgotCQki ICAgICAgICAwLCIKLQkJIiAgICAgICAgbnNwYWNsLCIKLQkJIiAgICAgICAgJ2knIgotCQki ICAgIEZST00iCi0JCSIgICAgICAgIHBnX25hbWVzcGFjZSIKLQkJIiAgICBXSEVSRSIKLQkJ IiAgICAgICAgbnNwYWNsIElTIE5PVCBOVUxMO1xuXG4iLAotCQkiSU5TRVJUIElOVE8gcGdf aW5pdF9wcml2cyAiCi0JCSIgIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5pdHBy aXZzLCBwcml2dHlwZSkiCi0JCSIgICAgU0VMRUNUIgotCQkiICAgICAgICBvaWQsIgotCQki ICAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFICIKLQkJIiAgICAgICAg IHJlbG5hbWUgPSAncGdfZm9yZWlnbl9kYXRhX3dyYXBwZXInKSwiCi0JCSIgICAgICAgIDAs IgotCQkiICAgICAgICBmZHdhY2wsIgotCQkiICAgICAgICAnaSciCi0JCSIgICAgRlJPTSIK LQkJIiAgICAgICAgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIiCi0JCSIgICAgV0hFUkUiCi0J CSIgICAgICAgIGZkd2FjbCBJUyBOT1QgTlVMTDtcblxuIiwKLQkJIklOU0VSVCBJTlRPIHBn X2luaXRfcHJpdnMgIgotCQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGluaXRw cml2cywgcHJpdnR5cGUpIgotCQkiICAgIFNFTEVDVCIKLQkJIiAgICAgICAgb2lkLCIKLQkJ IiAgICAgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyAiCi0JCSIgICAgICAgICBXSEVS RSByZWxuYW1lID0gJ3BnX2ZvcmVpZ25fc2VydmVyJyksIgotCQkiICAgICAgICAwLCIKLQkJ IiAgICAgICAgc3J2YWNsLCIKLQkJIiAgICAgICAgJ2knIgotCQkiICAgIEZST00iCi0JCSIg ICAgICAgIHBnX2ZvcmVpZ25fc2VydmVyIgotCQkiICAgIFdIRVJFIgotCQkiICAgICAgICBz cnZhY2wgSVMgTk9UIE5VTEw7XG5cbiIsCi0JCU5VTEwKLQl9OwotCi0JcHJpdl9saW5lcyA9 IHJlcGxhY2VfdG9rZW4ocHJpdmlsZWdlc19zZXR1cCwgIiRQT1NUR1JFU19TVVBFUlVTRVJO QU1FIiwKLQkJCQkJCQkgICBlc2NhcGVfcXVvdGVzKHVzZXJuYW1lKSk7Ci0JZm9yIChsaW5l ID0gcHJpdl9saW5lczsgKmxpbmUgIT0gTlVMTDsgbGluZSsrKQotCQlQR19DTURfUFVUUygq bGluZSk7CisJUEdfQ01EX1BSSU5URigiVVBEQVRFIHBnX2NsYXNzICIKKwkJCQkgICIgIFNF VCByZWxhY2wgPSAoU0VMRUNUIGFycmF5X2FnZyhhLmFjbCkgRlJPTSAiCisJCQkJICAiIChT RUxFQ1QgRSc9ci9cIiVzXCInIGFzIGFjbCAiCisJCQkJICAiICBVTklPTiBTRUxFQ1QgdW5u ZXN0KHBnX2NhdGFsb2cuYWNsZGVmYXVsdCgiCisJCQkJICAiICAgIENBU0UgV0hFTiByZWxr aW5kID0gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9TRVFVRU5DRSkgIiBUSEVOICdzJyAiCisJ CQkJICAiICAgICAgICAgRUxTRSAncicgRU5EOjpcImNoYXJcIiwiIENwcEFzU3RyaW5nMihC T09UU1RSQVBfU1VQRVJVU0VSSUQpICI6Om9pZCkpIgorCQkJCSAgIiApIGFzIGEpICIKKwkJ CQkgICIgIFdIRVJFIHJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJ T04pICIsICIKKwkJCQkgIENwcEFzU3RyaW5nMihSRUxLSU5EX1ZJRVcpICIsICIgQ3BwQXNT dHJpbmcyKFJFTEtJTkRfTUFUVklFVykgIiwgIgorCQkJCSAgQ3BwQXNTdHJpbmcyKFJFTEtJ TkRfU0VRVUVOQ0UpICIpIgorCQkJCSAgIiAgQU5EIHJlbGFjbCBJUyBOVUxMO1xuXG4iLAor CQkJCSAgZXNjYXBlX3F1b3Rlcyh1c2VybmFtZSkpOworCVBHX0NNRF9QVVRTKCJHUkFOVCBV U0FHRSBPTiBTQ0hFTUEgcGdfY2F0YWxvZywgcHVibGljIFRPIFBVQkxJQztcblxuIik7CisJ UEdfQ01EX1BVVFMoIlJFVk9LRSBBTEwgT04gcGdfbGFyZ2VvYmplY3QgRlJPTSBQVUJMSUM7 XG5cbiIpOworCVBHX0NNRF9QVVRTKCJJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzICIKKwkJ CQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUp IgorCQkJCSIgICAgU0VMRUNUIgorCQkJCSIgICAgICAgIG9pZCwiCisJCQkJIiAgICAgICAg KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyks IgorCQkJCSIgICAgICAgIDAsIgorCQkJCSIgICAgICAgIHJlbGFjbCwiCisJCQkJIiAgICAg ICAgJ2knIgorCQkJCSIgICAgRlJPTSIKKwkJCQkiICAgICAgICBwZ19jbGFzcyIKKwkJCQki ICAgIFdIRVJFIgorCQkJCSIgICAgICAgIHJlbGFjbCBJUyBOT1QgTlVMTCIKKwkJCQkiICAg ICAgICBBTkQgcmVsa2luZCBJTiAoIiBDcHBBc1N0cmluZzIoUkVMS0lORF9SRUxBVElPTikg IiwgIgorCQkJCUNwcEFzU3RyaW5nMihSRUxLSU5EX1ZJRVcpICIsICIgQ3BwQXNTdHJpbmcy KFJFTEtJTkRfTUFUVklFVykgIiwgIgorCQkJCUNwcEFzU3RyaW5nMihSRUxLSU5EX1NFUVVF TkNFKSAiKTtcblxuIik7CisJUEdfQ01EX1BVVFMoIklOU0VSVCBJTlRPIHBnX2luaXRfcHJp dnMgIgorCQkJCSIgIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5pdHByaXZzLCBw cml2dHlwZSkiCisJCQkJIiAgICBTRUxFQ1QiCisJCQkJIiAgICAgICAgcGdfY2xhc3Mub2lk LCIKKwkJCQkiICAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5h bWUgPSAncGdfY2xhc3MnKSwiCisJCQkJIiAgICAgICAgcGdfYXR0cmlidXRlLmF0dG51bSwi CisJCQkJIiAgICAgICAgcGdfYXR0cmlidXRlLmF0dGFjbCwiCisJCQkJIiAgICAgICAgJ2kn IgorCQkJCSIgICAgRlJPTSIKKwkJCQkiICAgICAgICBwZ19jbGFzcyIKKwkJCQkiICAgICAg ICBKT0lOIHBnX2F0dHJpYnV0ZSBPTiAocGdfY2xhc3Mub2lkID0gcGdfYXR0cmlidXRlLmF0 dHJlbGlkKSIKKwkJCQkiICAgIFdIRVJFIgorCQkJCSIgICAgICAgIHBnX2F0dHJpYnV0ZS5h dHRhY2wgSVMgTk9UIE5VTEwiCisJCQkJIiAgICAgICAgQU5EIHBnX2NsYXNzLnJlbGtpbmQg SU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04pICIsICIKKwkJCQlDcHBBc1N0 cmluZzIoUkVMS0lORF9WSUVXKSAiLCAiIENwcEFzU3RyaW5nMihSRUxLSU5EX01BVFZJRVcp ICIsICIKKwkJCQlDcHBBc1N0cmluZzIoUkVMS0lORF9TRVFVRU5DRSkgIik7XG5cbiIpOwor CVBHX0NNRF9QVVRTKCJJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzICIKKwkJCQkiICAob2Jq b2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUpIgorCQkJCSIg ICAgU0VMRUNUIgorCQkJCSIgICAgICAgIG9pZCwiCisJCQkJIiAgICAgICAgKFNFTEVDVCBv aWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX3Byb2MnKSwiCisJCQkJIiAg ICAgICAgMCwiCisJCQkJIiAgICAgICAgcHJvYWNsLCIKKwkJCQkiICAgICAgICAnaSciCisJ CQkJIiAgICBGUk9NIgorCQkJCSIgICAgICAgIHBnX3Byb2MiCisJCQkJIiAgICBXSEVSRSIK KwkJCQkiICAgICAgICBwcm9hY2wgSVMgTk9UIE5VTEw7XG5cbiIpOworCVBHX0NNRF9QVVRT KCJJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzICIKKwkJCQkiICAob2Jqb2lkLCBjbGFzc29p ZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUpIgorCQkJCSIgICAgU0VMRUNUIgor CQkJCSIgICAgICAgIG9pZCwiCisJCQkJIiAgICAgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19j bGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX3R5cGUnKSwiCisJCQkJIiAgICAgICAgMCwiCisJ CQkJIiAgICAgICAgdHlwYWNsLCIKKwkJCQkiICAgICAgICAnaSciCisJCQkJIiAgICBGUk9N IgorCQkJCSIgICAgICAgIHBnX3R5cGUiCisJCQkJIiAgICBXSEVSRSIKKwkJCQkiICAgICAg ICB0eXBhY2wgSVMgTk9UIE5VTEw7XG5cbiIpOworCVBHX0NNRF9QVVRTKCJJTlNFUlQgSU5U TyBwZ19pbml0X3ByaXZzICIKKwkJCQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQs IGluaXRwcml2cywgcHJpdnR5cGUpIgorCQkJCSIgICAgU0VMRUNUIgorCQkJCSIgICAgICAg IG9pZCwiCisJCQkJIiAgICAgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ3BnX2xhbmd1YWdlJyksIgorCQkJCSIgICAgICAgIDAsIgorCQkJCSIgICAg ICAgIGxhbmFjbCwiCisJCQkJIiAgICAgICAgJ2knIgorCQkJCSIgICAgRlJPTSIKKwkJCQki ICAgICAgICBwZ19sYW5ndWFnZSIKKwkJCQkiICAgIFdIRVJFIgorCQkJCSIgICAgICAgIGxh bmFjbCBJUyBOT1QgTlVMTDtcblxuIik7CisJUEdfQ01EX1BVVFMoIklOU0VSVCBJTlRPIHBn X2luaXRfcHJpdnMgIgorCQkJCSIgIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5p dHByaXZzLCBwcml2dHlwZSkiCisJCQkJIiAgICBTRUxFQ1QiCisJCQkJIiAgICAgICAgb2lk LCIKKwkJCQkiICAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFICIKKwkJ CQkiICAgICAgICAgcmVsbmFtZSA9ICdwZ19sYXJnZW9iamVjdF9tZXRhZGF0YScpLCIKKwkJ CQkiICAgICAgICAwLCIKKwkJCQkiICAgICAgICBsb21hY2wsIgorCQkJCSIgICAgICAgICdp JyIKKwkJCQkiICAgIEZST00iCisJCQkJIiAgICAgICAgcGdfbGFyZ2VvYmplY3RfbWV0YWRh dGEiCisJCQkJIiAgICBXSEVSRSIKKwkJCQkiICAgICAgICBsb21hY2wgSVMgTk9UIE5VTEw7 XG5cbiIpOworCVBHX0NNRF9QVVRTKCJJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzICIKKwkJ CQkiICAob2Jqb2lkLCBjbGFzc29pZCwgb2Jqc3ViaWQsIGluaXRwcml2cywgcHJpdnR5cGUp IgorCQkJCSIgICAgU0VMRUNUIgorCQkJCSIgICAgICAgIG9pZCwiCisJCQkJIiAgICAgICAg KFNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX25hbWVzcGFj ZScpLCIKKwkJCQkiICAgICAgICAwLCIKKwkJCQkiICAgICAgICBuc3BhY2wsIgorCQkJCSIg ICAgICAgICdpJyIKKwkJCQkiICAgIEZST00iCisJCQkJIiAgICAgICAgcGdfbmFtZXNwYWNl IgorCQkJCSIgICAgV0hFUkUiCisJCQkJIiAgICAgICAgbnNwYWNsIElTIE5PVCBOVUxMO1xu XG4iKTsKKwlQR19DTURfUFVUUygiSU5TRVJUIElOVE8gcGdfaW5pdF9wcml2cyAiCisJCQkJ IiAgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBpbml0cHJpdnMsIHByaXZ0eXBlKSIK KwkJCQkiICAgIFNFTEVDVCIKKwkJCQkiICAgICAgICBvaWQsIgorCQkJCSIgICAgICAgIChT RUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgIgorCQkJCSIgICAgICAgICByZWxuYW1l ID0gJ3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyJyksIgorCQkJCSIgICAgICAgIDAsIgorCQkJ CSIgICAgICAgIGZkd2FjbCwiCisJCQkJIiAgICAgICAgJ2knIgorCQkJCSIgICAgRlJPTSIK KwkJCQkiICAgICAgICBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciIKKwkJCQkiICAgIFdIRVJF IgorCQkJCSIgICAgICAgIGZkd2FjbCBJUyBOT1QgTlVMTDtcblxuIik7CisJUEdfQ01EX1BV VFMoIklOU0VSVCBJTlRPIHBnX2luaXRfcHJpdnMgIgorCQkJCSIgIChvYmpvaWQsIGNsYXNz b2lkLCBvYmpzdWJpZCwgaW5pdHByaXZzLCBwcml2dHlwZSkiCisJCQkJIiAgICBTRUxFQ1Qi CisJCQkJIiAgICAgICAgb2lkLCIKKwkJCQkiICAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBn X2NsYXNzICIKKwkJCQkiICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdwZ19mb3JlaWduX3Nl cnZlcicpLCIKKwkJCQkiICAgICAgICAwLCIKKwkJCQkiICAgICAgICBzcnZhY2wsIgorCQkJ CSIgICAgICAgICdpJyIKKwkJCQkiICAgIEZST00iCisJCQkJIiAgICAgICAgcGdfZm9yZWln bl9zZXJ2ZXIiCisJCQkJIiAgICBXSEVSRSIKKwkJCQkiICAgICAgICBzcnZhY2wgSVMgTk9U IE5VTEw7XG5cbiIpOwogfQogCiAvKgpAQCAtMTc0Niw4ICsxNzIzLDYgQEAgdmFjdXVtX2Ri KEZJTEUgKmNtZGZkKQogc3RhdGljIHZvaWQKIG1ha2VfdGVtcGxhdGUwKEZJTEUgKmNtZGZk KQogewotCWNvbnN0IGNoYXIgKmNvbnN0ICpsaW5lOwotCiAJLyoKIAkgKiBwZ191cGdyYWRl IHRyaWVzIHRvIHByZXNlcnZlIGRhdGFiYXNlIE9JRHMgYWNyb3NzIHVwZ3JhZGVzLiBJdCdz IHNtYXJ0CiAJICogZW5vdWdoIHRvIGRyb3AgYW5kIHJlY3JlYXRlIGEgY29uZmxpY3Rpbmcg ZGF0YWJhc2Ugd2l0aCB0aGUgc2FtZSBuYW1lLApAQCAtMTc2NSw0MiArMTc0MCwzNiBAQCBt YWtlX3RlbXBsYXRlMChGSUxFICpjbWRmZCkKIAkgKiBhcmUgY2hlYXAuICJTVFJBVEVHWSA9 IHdhbF9sb2ciIHdvdWxkIGdlbmVyYXRlIG1vcmUgV0FMLCB3aGljaCB3b3VsZCBiZQogCSAq IGEgbGl0dGxlIGJpdCBzbG93ZXIgYW5kIG1ha2UgdGhlIG5ldyBjbHVzdGVyIGEgbGl0dGxl IGJpdCBiaWdnZXIuCiAJICovCi0Jc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRlbXBsYXRl MF9zZXR1cFtdID0gewotCQkiQ1JFQVRFIERBVEFCQVNFIHRlbXBsYXRlMCBJU19URU1QTEFU RSA9IHRydWUgQUxMT1dfQ09OTkVDVElPTlMgPSBmYWxzZSIKLQkJIiBPSUQgPSAiIENwcEFz U3RyaW5nMihUZW1wbGF0ZTBEYk9pZCkKLQkJIiBTVFJBVEVHWSA9IGZpbGVfY29weTtcblxu IiwKLQotCQkvKgotCQkgKiB0ZW1wbGF0ZTAgc2hvdWxkbid0IGhhdmUgYW55IGNvbGxhdGlv bi1kZXBlbmRlbnQgb2JqZWN0cywgc28gdW5zZXQKLQkJICogdGhlIGNvbGxhdGlvbiB2ZXJz aW9uLiAgVGhpcyBkaXNhYmxlcyBjb2xsYXRpb24gdmVyc2lvbiBjaGVja3Mgd2hlbgotCQkg KiBtYWtpbmcgYSBuZXcgZGF0YWJhc2UgZnJvbSBpdC4KLQkJICovCi0JCSJVUERBVEUgcGdf ZGF0YWJhc2UgU0VUIGRhdGNvbGx2ZXJzaW9uID0gTlVMTCBXSEVSRSBkYXRuYW1lID0gJ3Rl bXBsYXRlMCc7XG5cbiIsCisJUEdfQ01EX1BVVFMoIkNSRUFURSBEQVRBQkFTRSB0ZW1wbGF0 ZTAgSVNfVEVNUExBVEUgPSB0cnVlIEFMTE9XX0NPTk5FQ1RJT05TID0gZmFsc2UiCisJCQkJ IiBPSUQgPSAiIENwcEFzU3RyaW5nMihUZW1wbGF0ZTBEYk9pZCkKKwkJCQkiIFNUUkFURUdZ ID0gZmlsZV9jb3B5O1xuXG4iKTsKIAotCQkvKgotCQkgKiBXaGlsZSB3ZSBhcmUgaGVyZSwg ZG8gc2V0IHRoZSBjb2xsYXRpb24gdmVyc2lvbiBvbiB0ZW1wbGF0ZTEuCi0JCSAqLwotCQki VVBEQVRFIHBnX2RhdGFiYXNlIFNFVCBkYXRjb2xsdmVyc2lvbiA9IHBnX2RhdGFiYXNlX2Nv bGxhdGlvbl9hY3R1YWxfdmVyc2lvbihvaWQpIFdIRVJFIGRhdG5hbWUgPSAndGVtcGxhdGUx JztcblxuIiwKKwkvKgorCSAqIHRlbXBsYXRlMCBzaG91bGRuJ3QgaGF2ZSBhbnkgY29sbGF0 aW9uLWRlcGVuZGVudCBvYmplY3RzLCBzbyB1bnNldAorCSAqIHRoZSBjb2xsYXRpb24gdmVy c2lvbi4gIFRoaXMgZGlzYWJsZXMgY29sbGF0aW9uIHZlcnNpb24gY2hlY2tzIHdoZW4KKwkg KiBtYWtpbmcgYSBuZXcgZGF0YWJhc2UgZnJvbSBpdC4KKwkgKi8KKwlQR19DTURfUFVUUygi VVBEQVRFIHBnX2RhdGFiYXNlIFNFVCBkYXRjb2xsdmVyc2lvbiA9IE5VTEwgV0hFUkUgZGF0 bmFtZSA9ICd0ZW1wbGF0ZTAnO1xuXG4iKTsKIAotCQkvKgotCQkgKiBFeHBsaWNpdGx5IHJl dm9rZSBwdWJsaWMgY3JlYXRlLXNjaGVtYSBhbmQgY3JlYXRlLXRlbXAtdGFibGUKLQkJICog cHJpdmlsZWdlcyBpbiB0ZW1wbGF0ZTEgYW5kIHRlbXBsYXRlMDsgZWxzZSB0aGUgbGF0dGVy IHdvdWxkIGJlIG9uCi0JCSAqIGJ5IGRlZmF1bHQKLQkJICovCi0JCSJSRVZPS0UgQ1JFQVRF LFRFTVBPUkFSWSBPTiBEQVRBQkFTRSB0ZW1wbGF0ZTEgRlJPTSBwdWJsaWM7XG5cbiIsCi0J CSJSRVZPS0UgQ1JFQVRFLFRFTVBPUkFSWSBPTiBEQVRBQkFTRSB0ZW1wbGF0ZTAgRlJPTSBw dWJsaWM7XG5cbiIsCisJLyoKKwkgKiBXaGlsZSB3ZSBhcmUgaGVyZSwgZG8gc2V0IHRoZSBj b2xsYXRpb24gdmVyc2lvbiBvbiB0ZW1wbGF0ZTEuCisJICovCisJUEdfQ01EX1BVVFMoIlVQ REFURSBwZ19kYXRhYmFzZSBTRVQgZGF0Y29sbHZlcnNpb24gPSBwZ19kYXRhYmFzZV9jb2xs YXRpb25fYWN0dWFsX3ZlcnNpb24ob2lkKSBXSEVSRSBkYXRuYW1lID0gJ3RlbXBsYXRlMSc7 XG5cbiIpOwogCi0JCSJDT01NRU5UIE9OIERBVEFCQVNFIHRlbXBsYXRlMCBJUyAndW5tb2Rp ZmlhYmxlIGVtcHR5IGRhdGFiYXNlJztcblxuIiwKKwkvKgorCSAqIEV4cGxpY2l0bHkgcmV2 b2tlIHB1YmxpYyBjcmVhdGUtc2NoZW1hIGFuZCBjcmVhdGUtdGVtcC10YWJsZQorCSAqIHBy aXZpbGVnZXMgaW4gdGVtcGxhdGUxIGFuZCB0ZW1wbGF0ZTA7IGVsc2UgdGhlIGxhdHRlciB3 b3VsZCBiZSBvbgorCSAqIGJ5IGRlZmF1bHQKKwkgKi8KKwlQR19DTURfUFVUUygiUkVWT0tF IENSRUFURSxURU1QT1JBUlkgT04gREFUQUJBU0UgdGVtcGxhdGUxIEZST00gcHVibGljO1xu XG4iKTsKKwlQR19DTURfUFVUUygiUkVWT0tFIENSRUFURSxURU1QT1JBUlkgT04gREFUQUJB U0UgdGVtcGxhdGUwIEZST00gcHVibGljO1xuXG4iKTsKIAotCQkvKgotCQkgKiBGaW5hbGx5 IHZhY3V1bSB0byBjbGVhbiB1cCBkZWFkIHJvd3MgaW4gcGdfZGF0YWJhc2UKLQkJICovCi0J CSJWQUNVVU0gcGdfZGF0YWJhc2U7XG5cbiIsCi0JCU5VTEwKLQl9OworCVBHX0NNRF9QVVRT KCJDT01NRU5UIE9OIERBVEFCQVNFIHRlbXBsYXRlMCBJUyAndW5tb2RpZmlhYmxlIGVtcHR5 IGRhdGFiYXNlJztcblxuIik7CiAKLQlmb3IgKGxpbmUgPSB0ZW1wbGF0ZTBfc2V0dXA7ICps aW5lOyBsaW5lKyspCi0JCVBHX0NNRF9QVVRTKCpsaW5lKTsKKwkvKgorCSAqIEZpbmFsbHkg dmFjdXVtIHRvIGNsZWFuIHVwIGRlYWQgcm93cyBpbiBwZ19kYXRhYmFzZQorCSAqLworCVBH X0NNRF9QVVRTKCJWQUNVVU0gcGdfZGF0YWJhc2U7XG5cbiIpOwogfQogCiAvKgpAQCAtMTgw OSwyMSArMTc3OCwxMyBAQCBtYWtlX3RlbXBsYXRlMChGSUxFICpjbWRmZCkKIHN0YXRpYyB2 b2lkCiBtYWtlX3Bvc3RncmVzKEZJTEUgKmNtZGZkKQogewotCWNvbnN0IGNoYXIgKmNvbnN0 ICpsaW5lOwotCiAJLyoKIAkgKiBKdXN0IGFzIHdlIGRpZCBmb3IgdGVtcGxhdGUwLCBhbmQg Zm9yIHRoZSBzYW1lIHJlYXNvbnMsIGFzc2lnbiBhIGZpeGVkCiAJICogT0lEIHRvIHBvc3Rn cmVzIGFuZCBzZWxlY3QgdGhlIGZpbGVfY29weSBzdHJhdGVneS4KIAkgKi8KLQlzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgcG9zdGdyZXNfc2V0dXBbXSA9IHsKLQkJIkNSRUFURSBEQVRB QkFTRSBwb3N0Z3JlcyBPSUQgPSAiIENwcEFzU3RyaW5nMihQb3N0Z3Jlc0RiT2lkKQotCQki IFNUUkFURUdZID0gZmlsZV9jb3B5O1xuXG4iLAotCQkiQ09NTUVOVCBPTiBEQVRBQkFTRSBw b3N0Z3JlcyBJUyAnZGVmYXVsdCBhZG1pbmlzdHJhdGl2ZSBjb25uZWN0aW9uIGRhdGFiYXNl JztcblxuIiwKLQkJTlVMTAotCX07Ci0KLQlmb3IgKGxpbmUgPSBwb3N0Z3Jlc19zZXR1cDsg KmxpbmU7IGxpbmUrKykKLQkJUEdfQ01EX1BVVFMoKmxpbmUpOworCVBHX0NNRF9QVVRTKCJD UkVBVEUgREFUQUJBU0UgcG9zdGdyZXMgT0lEID0gIiBDcHBBc1N0cmluZzIoUG9zdGdyZXNE Yk9pZCkKKwkJCQkiIFNUUkFURUdZID0gZmlsZV9jb3B5O1xuXG4iKTsKKwlQR19DTURfUFVU UygiQ09NTUVOVCBPTiBEQVRBQkFTRSBwb3N0Z3JlcyBJUyAnZGVmYXVsdCBhZG1pbmlzdHJh dGl2ZSBjb25uZWN0aW9uIGRhdGFiYXNlJztcblxuIik7CiB9CiAKIC8qCgpiYXNlLWNvbW1p dDogNDMzNTE1NTdkMGQyYjljNWUyMDI5OGI1ZmVlMjg0OWFiZWY4NmFmZgotLSAKMi4zOC4x Cgo= --------------G0u8CKyT0lLo3eDfWNF94FVH--