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 1oVvLw-0002YD-Aj for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Sep 2022 13:44:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oVvLv-0005hQ-5N for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Sep 2022 13:44:27 +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 1oVvLt-0005hF-Rd for pgsql-hackers@lists.postgresql.org; Wed, 07 Sep 2022 13:44:26 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oVvLn-0003ZQ-RV for pgsql-hackers@lists.postgresql.org; Wed, 07 Sep 2022 13:44:24 +0000 Received: from [192.168.28.32] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 7366821C4119; Wed, 7 Sep 2022 16:44:16 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1662558256; bh=G3F57bGA24sLcGD3aZPmD4p3yfopmeQwMi+7tBfrs7o=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=dXSBNPUjXXV3LR4afsXCjGr1dkVk43QGDbQhirtT/D+aZwtZChZh6O1Ze2Bw93r61 1emtEYf4riJgh09aQQsjDXXnHBidfIswu0BRXFCAaBun5hO8oflAHs59FihIlQa4MX KEMizsj7TWn154RUnaLC8yDzJGt57SgItBPyN/VE= Content-Type: multipart/mixed; boundary="------------RF7NxRKK2gV0CQVeZdvegmJD" Message-ID: <30c76d19-3c45-b714-d815-15fce519c749@postgrespro.ru> Date: Wed, 7 Sep 2022 16:44:16 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [PATCH] Improve amcheck to also check UNIQUE constraint in btree index. Content-Language: en-US To: Postgres hackers Cc: Pavel Borisov , Maxim Orlov , lubennikovaav@gmail.com, Mark Dilger , Peter Geoghegan , Aleksander Alekseev References: From: Dmitry Koval In-Reply-To: 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. --------------RF7NxRKK2gV0CQVeZdvegmJD Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! I would make two cosmetic changes. 1. I suggest replace description of function bt_report_duplicate() from ``` /* * Prepare and print an error message for unique constrain violation in * a btree index under WARNING level. Also set a flag to report ERROR * at the end of the check. */ ``` to ``` /* * Prepare an error message for unique constrain violation in * a btree index and report ERROR. */ ``` 2. I think will be better to change test 004_verify_nbtree_unique.pl - replace ``` use Test::More tests => 6; ``` to ``` use Test::More; ... done_testing(); ``` (same as in the other three tests). -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------RF7NxRKK2gV0CQVeZdvegmJD Content-Type: text/plain; charset=UTF-8; name="v15-0001-Add-option-for-amcheck-and-pg_amcheck-to-check-u.patch" Content-Disposition: attachment; filename*0="v15-0001-Add-option-for-amcheck-and-pg_amcheck-to-check-u.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5M2ExMGFiZDBhZmIxNGIyNjRlNGNmNTlmN2U5MmY2MTlkZDliMTFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZlbCBCb3Jpc292IDxwYXNoa2luLmVsZmVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDExIE1heSAyMDIyIDE1OjU0OjEzICswNDAwClN1YmplY3Q6 IFtQQVRDSCB2MTVdIEFkZCBvcHRpb24gZm9yIGFtY2hlY2sgYW5kIHBnX2FtY2hlY2sgdG8g Y2hlY2sgdW5pcXVlCiBjb25zdHJhaW50IGZvciBidHJlZSBpbmRleGVzLgoKQWRkICdjaGVj a3VuaXF1ZScgYXJndW1lbnQgdG8gYnRfaW5kZXhfY2hlY2soKSBhbmQgYnRfaW5kZXhfcGFy ZW50X2NoZWNrKCkuCldoZW4gdGhlIGZsYWcgaXMgc3BlY2lmaWVkIHRoZSBwcm9jZWR1cmVz IHdpbGwgY2hlY2sgdGhlIHVuaXF1ZSBjb25zdHJhaW50CnZpb2xhdGlvbiBmb3IgdW5pcXVl IGluZGV4ZXMuIE9ubHkgb25lIGhlYXAgZW50cnkgZm9yIGFsbCBlcXVhbCBrZXlzIGluCnRo ZSBpbmRleCBzaG91bGQgYmUgdmlzaWJsZSAoaW5jbHVkaW5nIHBvc3RpbmcgbGlzdCBlbnRy aWVzKS4gUmVwb3J0IGFuIGVycm9yCm90aGVyd2lzZS4KCnBnX2FtY2hlY2sgY2FsbGVkIHdp dGggLS1jaGVja3VuaXF1ZSBvcHRpb24gd2lsbCBkbyB0aGUgc2FtZSBjaGVjayBmb3IgYWxs CnRoZSBpbmRleGVzIGl0IGNoZWNrcy4KCkF1dGhvcjogQW5hc3Rhc2lhIEx1YmVubmlrb3Zh IDxsdWJlbm5pa292YWF2QGdtYWlsLmNvbT4KQXV0aG9yOiBQYXZlbCBCb3Jpc292IDxwYXNo a2luLmVsZmVAZ21haWwuY29tPgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IE1hcmsgRGlsZ2VyIDxtYXJrLmRpbGdlckBlbnRlcnByaXNl ZGIuY29tPgpSZXZpZXdlZC1ieTogWmhpaG9uZyBZdSA8enl1QHl1Z2FieXRlLmNvbT4KUmV2 aWV3ZWQtYnk6IFBldGVyIEdlb2doZWdhbiA8cGdAYm93dC5pZT4KUmV2aWV3ZWQtYnk6IEFs ZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtzYW5kZXJAdGltZXNjYWxlLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUxUOVpFSFJuNXhBTTVib2dhMHFuckNtUFY1MmJT Y0VLMlFuUTFIbVVaREQzMDFKRWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIGNvbnRyaWIvYW1j aGVjay9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogY29udHJpYi9h bWNoZWNrL2FtY2hlY2stLTEuMy0tMS40LnNxbCAgICAgICAgIHwgIDI5ICsrCiBjb250cmli L2FtY2hlY2svYW1jaGVjay5jb250cm9sICAgICAgICAgICAgICAgfCAgIDIgKy0KIGNvbnRy aWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJlZS5vdXQgICAgICB8ICA0MiArKysKIGNv bnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUuc3FsICAgICAgICAgICB8ICAxNCArCiBj b250cmliL2FtY2hlY2svdC8wMDRfdmVyaWZ5X25idHJlZV91bmlxdWUucGwgfCAyMzUgKysr KysrKysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAg ICAgIHwgMzI5ICsrKysrKysrKysrKysrKysrLQogZG9jL3NyYy9zZ21sL2FtY2hlY2suc2dt bCAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX2Ft Y2hlY2suc2dtbCAgICAgICAgICAgICAgfCAgMTEgKwogc3JjL2Jpbi9wZ19hbWNoZWNrL3Bn X2FtY2hlY2suYyAgICAgICAgICAgICAgIHwgIDUwICsrLQogc3JjL2Jpbi9wZ19hbWNoZWNr L3QvMDAzX2NoZWNrLnBsICAgICAgICAgICAgIHwgIDQ1ICsrKwogc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA1X29wY2xhc3NfZGFtYWdlLnBsICAgIHwgIDY1ICsrKysKIDEyIGZpbGVzIGNo YW5nZWQsIDgxNCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2FtY2hlY2svYW1jaGVjay0tMS4zLS0xLjQuc3FsCiBjcmVhdGUg bW9kZSAxMDA2NDQgY29udHJpYi9hbWNoZWNrL3QvMDA0X3ZlcmlmeV9uYnRyZWVfdW5pcXVl LnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL01ha2VmaWxlIGIvY29udHJpYi9h bWNoZWNrL01ha2VmaWxlCmluZGV4IGI4MmYyMjFlNTAuLjg4MjcxNjg3YTMgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYW1jaGVjay9NYWtlZmlsZQorKysgYi9jb250cmliL2FtY2hlY2svTWFr ZWZpbGUKQEAgLTcsNyArNyw3IEBAIE9CSlMgPSBcCiAJdmVyaWZ5X25idHJlZS5vCiAKIEVY VEVOU0lPTiA9IGFtY2hlY2sKLURBVEEgPSBhbWNoZWNrLS0xLjItLTEuMy5zcWwgYW1jaGVj ay0tMS4xLS0xLjIuc3FsIGFtY2hlY2stLTEuMC0tMS4xLnNxbCBhbWNoZWNrLS0xLjAuc3Fs CitEQVRBID0gYW1jaGVjay0tMS4zLS0xLjQuc3FsIGFtY2hlY2stLTEuMi0tMS4zLnNxbCBh bWNoZWNrLS0xLjEtLTEuMi5zcWwgYW1jaGVjay0tMS4wLS0xLjEuc3FsIGFtY2hlY2stLTEu MC5zcWwKIFBHRklMRURFU0MgPSAiYW1jaGVjayAtIGZ1bmN0aW9uIGZvciB2ZXJpZnlpbmcg cmVsYXRpb24gaW50ZWdyaXR5IgogCiBSRUdSRVNTID0gY2hlY2sgY2hlY2tfYnRyZWUgY2hl Y2tfaGVhcApkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuMy0tMS40 LnNxbCBiL2NvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0xLjMtLTEuNC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzU1NzRlYWE2NAotLS0gL2Rldi9udWxs CisrKyBiL2NvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0xLjMtLTEuNC5zcWwKQEAgLTAsMCAr MSwyOSBAQAorLyogY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuMy0tMS40LnNxbCAqLwor CistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhh biB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04gYW1j aGVjayBVUERBVEUgVE8gJzEuNCciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBJ biBvcmRlciB0byBhdm9pZCBpc3N1ZXMgd2l0aCBkZXBlbmRlbmNpZXMgd2hlbiB1cGRhdGlu ZyBhbWNoZWNrIHRvIDEuNCwKKy0tIGNyZWF0ZSBuZXcsIG92ZXJsb2FkZWQgdmVyc2lvbnMg b2YgdGhlIDEuMiBidF9pbmRleF9wYXJlbnRfY2hlY2sgc2lnbmF0dXJlLAorLS0gYW5kIDEu MSBidF9pbmRleF9jaGVjayBzaWduYXR1cmUuCisKKy0tCistLSBidF9pbmRleF9wYXJlbnRf Y2hlY2soKQorLS0KK0NSRUFURSBGVU5DVElPTiBidF9pbmRleF9wYXJlbnRfY2hlY2soaW5k ZXggcmVnY2xhc3MsCisgICAgaGVhcGFsbGluZGV4ZWQgYm9vbGVhbiwgcm9vdGRlc2NlbmQg Ym9vbGVhbiwgY2hlY2t1bmlxdWUgYm9vbGVhbikKK1JFVFVSTlMgVk9JRAorQVMgJ01PRFVM RV9QQVRITkFNRScsICdidF9pbmRleF9wYXJlbnRfY2hlY2snCitMQU5HVUFHRSBDIFNUUklD VCBQQVJBTExFTCBSRVNUUklDVEVEOworLS0KKy0tIGJ0X2luZGV4X2NoZWNrKCkKKy0tCitD UkVBVEUgRlVOQ1RJT04gYnRfaW5kZXhfY2hlY2soaW5kZXggcmVnY2xhc3MsCisgICAgaGVh cGFsbGluZGV4ZWQgYm9vbGVhbiwgY2hlY2t1bmlxdWUgYm9vbGVhbikKK1JFVFVSTlMgVk9J RAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdidF9pbmRleF9jaGVjaycKK0xBTkdVQUdFIEMg U1RSSUNUIFBBUkFMTEVMIFJFU1RSSUNURUQ7CisKKy0tIFdlIGRvbid0IHdhbnQgdGhpcyB0 byBiZSBhdmFpbGFibGUgdG8gcHVibGljCitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGJ0X2lu ZGV4X3BhcmVudF9jaGVjayhyZWdjbGFzcywgYm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbikg RlJPTSBQVUJMSUM7CitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGJ0X2luZGV4X2NoZWNrKHJl Z2NsYXNzLCBib29sZWFuLCBib29sZWFuKSBGUk9NIFBVQkxJQzsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvYW1jaGVjay9hbWNoZWNrLmNvbnRyb2wgYi9jb250cmliL2FtY2hlY2svYW1jaGVj ay5jb250cm9sCmluZGV4IGFiNTA5MzFmNzUuLmU2N2FjZTAxYzkgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYW1jaGVjay9hbWNoZWNrLmNvbnRyb2wKKysrIGIvY29udHJpYi9hbWNoZWNrL2Ft Y2hlY2suY29udHJvbApAQCAtMSw1ICsxLDUgQEAKICMgYW1jaGVjayBleHRlbnNpb24KIGNv bW1lbnQgPSAnZnVuY3Rpb25zIGZvciB2ZXJpZnlpbmcgcmVsYXRpb24gaW50ZWdyaXR5Jwot ZGVmYXVsdF92ZXJzaW9uID0gJzEuMycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjQnCiBtb2R1 bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9hbWNoZWNrJwogcmVsb2NhdGFibGUgPSB0cnVlCmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0IGIv Y29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0cmVlLm91dAppbmRleCAzODc5MWJi YzFmLi44NmIzOGQ5M2Y0IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQv Y2hlY2tfYnRyZWUub3V0CisrKyBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19i dHJlZS5vdXQKQEAgLTE5OSw2ICsxOTksNDcgQEAgU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdi dHRlc3RfYV9leHByX2lkeCcsIHRydWUpOwogIAogKDEgcm93KQogCistLSBVTklRVUUgY29u c3RyYWludCBjaGVjaworU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3RfYV9pZHgnLCBo ZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKyBidF9pbmRl eF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGJ0X2lu ZGV4X2NoZWNrKCdidHRlc3RfYl9pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiBmYWxzZSwgY2hl Y2t1bmlxdWUgPT4gdHJ1ZSk7CisgYnRfaW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ2J0dGVzdF9h X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIHJvb3RkZXNjZW5kID0+IHRydWUsIGNo ZWNrdW5pcXVlID0+IHRydWUpOworIGJ0X2luZGV4X3BhcmVudF9jaGVjayAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBidF9pbmRleF9wYXJlbnRf Y2hlY2soJ2J0dGVzdF9iX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIHJvb3RkZXNj ZW5kID0+IGZhbHNlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKyBidF9pbmRleF9wYXJlbnRf Y2hlY2sgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBDaGVj ayB0aGF0IG51bGwgdmFsdWVzIGluIGFuIHVuaXF1ZSBpbmRleCBhcmUgbm90IHRyZWF0ZWQg YXMgZXF1YWwKK0NSRUFURSBUQUJMRSBidHRlc3RfdW5pcXVlX251bGxzIChhIHNlcmlhbCwg YiBpbnQsIGMgaW50IFVOSVFVRSk7CitJTlNFUlQgSU5UTyBidHRlc3RfdW5pcXVlX251bGxz IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSwgMiwgZGVmYXVsdCk7CitTRUxF Q1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF91bmlxdWVfbnVsbHNfY19rZXknLCBoZWFwYWxs aW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKyBidF9pbmRleF9jaGVj ayAKKy0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIElOREVYIG9uIGJ0 dGVzdF91bmlxdWVfbnVsbHMgKGIsYyk7CitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVz dF91bmlxdWVfbnVsbHNfYl9jX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNr dW5pcXVlID0+IHRydWUpOworIGJ0X2luZGV4X2NoZWNrIAorLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJ0dGVzdF9hOwogRFJPUCBU QUJMRSBidHRlc3RfYjsKQEAgLTIwNiw1ICsyNDcsNiBAQCBEUk9QIFRBQkxFIGJ0dGVzdF9t dWx0aTsKIERST1AgVEFCTEUgZGVsZXRlX3Rlc3RfdGFibGU7CiBEUk9QIFRBQkxFIHRvYXN0 X2J1ZzsKIERST1AgRlVOQ1RJT04gaWZ1bihpbnQ4KTsKK0RST1AgVEFCTEUgYnR0ZXN0X3Vu aXF1ZV9udWxsczsKIERST1AgT1dORUQgQlkgcmVncmVzc19idHRlc3Rfcm9sZTsgLS0gcGVy bWlzc2lvbnMKIERST1AgUk9MRSByZWdyZXNzX2J0dGVzdF9yb2xlOwpkaWZmIC0tZ2l0IGEv Y29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19idHJlZS5zcWwgYi9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2J0cmVlLnNxbAppbmRleCAwMzNjMDRiNGQwLi5hYTQ2MWY3ZmI5IDEwMDY0 NAotLS0gYS9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbAorKysgYi9jb250 cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbApAQCAtMTM1LDYgKzEzNSwxOSBAQCBD UkVBVEUgSU5ERVggYnR0ZXN0X2FfZXhwcl9pZHggT04gYnR0ZXN0X2EgKChpZnVuKGlkKSAr IGlmdW4oMCkpKQogCiBTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF9hX2V4cHJfaWR4 JywgdHJ1ZSk7CiAKKy0tIFVOSVFVRSBjb25zdHJhaW50IGNoZWNrCitTRUxFQ1QgYnRfaW5k ZXhfY2hlY2soJ2J0dGVzdF9hX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNr dW5pcXVlID0+IHRydWUpOworU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3RfYl9pZHgn LCBoZWFwYWxsaW5kZXhlZCA9PiBmYWxzZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CitTRUxF Q1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCdidHRlc3RfYV9pZHgnLCBoZWFwYWxsaW5kZXhl ZCA9PiB0cnVlLCByb290ZGVzY2VuZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsK K1NFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ2J0dGVzdF9iX2lkeCcsIGhlYXBhbGxp bmRleGVkID0+IHRydWUsIHJvb3RkZXNjZW5kID0+IGZhbHNlLCBjaGVja3VuaXF1ZSA9PiB0 cnVlKTsKKworLS0gQ2hlY2sgdGhhdCBudWxsIHZhbHVlcyBpbiBhbiB1bmlxdWUgaW5kZXgg YXJlIG5vdCB0cmVhdGVkIGFzIGVxdWFsCitDUkVBVEUgVEFCTEUgYnR0ZXN0X3VuaXF1ZV9u dWxscyAoYSBzZXJpYWwsIGIgaW50LCBjIGludCBVTklRVUUpOworSU5TRVJUIElOVE8gYnR0 ZXN0X3VuaXF1ZV9udWxscyBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCksIDIs IGRlZmF1bHQpOworU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3RfdW5pcXVlX251bGxz X2Nfa2V5JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7 CitDUkVBVEUgSU5ERVggb24gYnR0ZXN0X3VuaXF1ZV9udWxscyAoYixjKTsKK1NFTEVDVCBi dF9pbmRleF9jaGVjaygnYnR0ZXN0X3VuaXF1ZV9udWxsc19iX2NfaWR4JywgaGVhcGFsbGlu ZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisKIC0tIGNsZWFudXAKIERS T1AgVEFCTEUgYnR0ZXN0X2E7CiBEUk9QIFRBQkxFIGJ0dGVzdF9iOwpAQCAtMTQyLDUgKzE1 NSw2IEBAIERST1AgVEFCTEUgYnR0ZXN0X211bHRpOwogRFJPUCBUQUJMRSBkZWxldGVfdGVz dF90YWJsZTsKIERST1AgVEFCTEUgdG9hc3RfYnVnOwogRFJPUCBGVU5DVElPTiBpZnVuKGlu dDgpOworRFJPUCBUQUJMRSBidHRlc3RfdW5pcXVlX251bGxzOwogRFJPUCBPV05FRCBCWSBy ZWdyZXNzX2J0dGVzdF9yb2xlOyAtLSBwZXJtaXNzaW9ucwogRFJPUCBST0xFIHJlZ3Jlc3Nf YnR0ZXN0X3JvbGU7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDRfdmVyaWZ5 X25idHJlZV91bmlxdWUucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDRfdmVyaWZ5X25idHJl ZV91bmlxdWUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODM1 NzI5NTliZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90LzAwNF92ZXJp ZnlfbmJ0cmVlX3VuaXF1ZS5wbApAQCAtMCwwICsxLDIzNSBAQAorCisjIENvcHlyaWdodCAo YykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUaGlz IHJlZ3Jlc3Npb24gdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBidHJlZSB2YWxp ZGF0aW9uIGluIHRoZQorIyBwcmVzZW5jZSBvZiBicmVha2luZyBzb3J0IG9yZGVyIGNoYW5n ZXMuCisjCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rl c3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAnYXV0b3ZhY3V1bSA9IG9mZicpOworJG5vZGUtPnN0YXJ0OworCisjIENyZWF0ZSBh IGN1c3RvbSBvcGVyYXRvciBjbGFzcyBhbmQgYW4gaW5kZXggd2hpY2ggdXNlcyBpdC4KKyRu b2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRVhURU5TSU9OIGFt Y2hlY2s7CisKKwlDUkVBVEUgRlVOQ1RJT04gb2tfY21wIChpbnQ0LCBpbnQ0KQorCVJFVFVS TlMgaW50IExBTkdVQUdFIHNxbCBBUworCSQkCisJCVNFTEVDVAorCQkJQ0FTRSBXSEVOICQx IDwgJDIgVEhFTiAtMQorCQkJCSBXSEVOICQxID4gJDIgVEhFTiAgMQorCQkJCSBFTFNFIDAK KwkJCUVORDsKKwkkJDsKKworCS0tLQorCS0tLSBDaGVjayAxOiB1bmlxdWVuZXNzIHZpb2xh dGlvbi4KKwktLS0KKwlDUkVBVEUgRlVOQ1RJT04gb2tfY21wMSAoaW50NCwgaW50NCkKKwlS RVRVUk5TIGludCBMQU5HVUFHRSBzcWwgQVMKKwkkJAorCQlTRUxFQ1Qgb2tfY21wKCQxLCAk Mik7CisJJCQ7CisKKwktLS0KKwktLS0gTWFrZSB2YWx1ZXMgNzY4IGFuZCA3NjkgbG9vayBl cXVhbC4KKwktLS0KKwlDUkVBVEUgRlVOQ1RJT04gYmFkX2NtcDEgKGludDQsIGludDQpCisJ UkVUVVJOUyBpbnQgTEFOR1VBR0Ugc3FsIEFTCisJJCQKKwkJU0VMRUNUCisJCQlDQVNFIFdI RU4gKCQxID0gNzY4IEFORCAkMiA9IDc2OSkgT1IKKwkJCQkJICAoJDEgPSA3NjkgQU5EICQy ID0gNzY4KSBUSEVOIDAKKwkJCQkgRUxTRSBva19jbXAoJDEsICQyKQorCQkJRU5EOworCSQk OworCisJLS0tCisJLS0tIENoZWNrIDI6IHVuaXF1ZW5lc3MgdmlvbGF0aW9uIHdpdGhvdXQg ZGVkdXBsaWNhdGlvbi4KKwktLS0KKwlDUkVBVEUgRlVOQ1RJT04gb2tfY21wMiAoaW50NCwg aW50NCkKKwlSRVRVUk5TIGludCBMQU5HVUFHRSBzcWwgQVMKKwkkJAorCQlTRUxFQ1Qgb2tf Y21wKCQxLCAkMik7CisJJCQ7CisKKwlDUkVBVEUgRlVOQ1RJT04gYmFkX2NtcDIgKGludDQs IGludDQpCisJUkVUVVJOUyBpbnQgTEFOR1VBR0Ugc3FsIEFTCisJJCQKKwkJU0VMRUNUCisJ CQlDQVNFIFdIRU4gJDEgPSAkMiBBTkQgJDEgPSA0MDAgVEhFTiAtMQorCQkJRUxTRSBva19j bXAoJDEsICQyKQorCQlFTkQ7CisJJCQ7CisKKwktLS0KKwktLS0gQ2hlY2sgMzogdW5pcXVl bmVzcyB2aW9sYXRpb24gd2l0aCBkZWR1cGxpY2F0aW9uLgorCS0tLQorCUNSRUFURSBGVU5D VElPTiBva19jbXAzIChpbnQ0LCBpbnQ0KQorCVJFVFVSTlMgaW50IExBTkdVQUdFIHNxbCBB UworCSQkCisJCVNFTEVDVCBva19jbXAoJDEsICQyKTsKKwkkJDsKKworCUNSRUFURSBGVU5D VElPTiBiYWRfY21wMyAoaW50NCwgaW50NCkKKwlSRVRVUk5TIGludCBMQU5HVUFHRSBzcWwg QVMKKwkkJAorCQlTRUxFQ1QgYmFkX2NtcDIoJDEsICQyKTsKKwkkJDsKKworCS0tLQorCS0t LSBDcmVhdGUgZGF0YS4KKwktLS0KKwlDUkVBVEUgVEFCTEUgYnR0ZXN0X3VuaXF1ZTEgKGkg aW50NCk7CisJSU5TRVJUIElOVE8gYnR0ZXN0X3VuaXF1ZTEKKwkJKFNFTEVDVCAqIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMjQpIGdzKTsKKworCUNSRUFURSBUQUJMRSBidHRlc3Rf dW5pcXVlMiAoaSBpbnQ0KTsKKwlJTlNFUlQgSU5UTyBidHRlc3RfdW5pcXVlMihpKQorCQko U0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDAwKSBncyk7CisJSU5TRVJUIElO VE8gYnR0ZXN0X3VuaXF1ZTIKKwkJKFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQw MCwgMTAyNCkgZ3MpOworCisJQ1JFQVRFIFRBQkxFIGJ0dGVzdF91bmlxdWUzIChpIGludDQp OworCUlOU0VSVCBJTlRPIGJ0dGVzdF91bmlxdWUzCisJCVNFTEVDVCAqIEZST00gYnR0ZXN0 X3VuaXF1ZTI7CisKKwlDUkVBVEUgT1BFUkFUT1IgQ0xBU1MgaW50NF9jdXN0b21fb3BzMSBG T1IgVFlQRSBpbnQ0IFVTSU5HIGJ0cmVlIEFTCisJCU9QRVJBVE9SIDEgPCAoaW50NCwgaW50 NCksIE9QRVJBVE9SIDIgPD0gKGludDQsIGludDQpLAorCQlPUEVSQVRPUiAzID0gKGludDQs IGludDQpLCBPUEVSQVRPUiA0ID49IChpbnQ0LCBpbnQ0KSwKKwkJT1BFUkFUT1IgNSA+IChp bnQ0LCBpbnQ0KSwgRlVOQ1RJT04gMSBva19jbXAxKGludDQsIGludDQpOworCUNSRUFURSBP UEVSQVRPUiBDTEFTUyBpbnQ0X2N1c3RvbV9vcHMyIEZPUiBUWVBFIGludDQgVVNJTkcgYnRy ZWUgQVMKKwkJT1BFUkFUT1IgMSA8IChpbnQ0LCBpbnQ0KSwgT1BFUkFUT1IgMiA8PSAoaW50 NCwgaW50NCksCisJCU9QRVJBVE9SIDMgPSAoaW50NCwgaW50NCksIE9QRVJBVE9SIDQgPj0g KGludDQsIGludDQpLAorCQlPUEVSQVRPUiA1ID4gKGludDQsIGludDQpLCBGVU5DVElPTiAx IGJhZF9jbXAyKGludDQsIGludDQpOworCUNSRUFURSBPUEVSQVRPUiBDTEFTUyBpbnQ0X2N1 c3RvbV9vcHMzIEZPUiBUWVBFIGludDQgVVNJTkcgYnRyZWUgQVMKKwkJT1BFUkFUT1IgMSA8 IChpbnQ0LCBpbnQ0KSwgT1BFUkFUT1IgMiA8PSAoaW50NCwgaW50NCksCisJCU9QRVJBVE9S IDMgPSAoaW50NCwgaW50NCksIE9QRVJBVE9SIDQgPj0gKGludDQsIGludDQpLAorCQlPUEVS QVRPUiA1ID4gKGludDQsIGludDQpLCBGVU5DVElPTiAxIGJhZF9jbXAzKGludDQsIGludDQp OworCisJQ1JFQVRFIFVOSVFVRSBJTkRFWCBidHRlc3RfdW5pcXVlX2lkeDEKKwkJCQkJCU9O IGJ0dGVzdF91bmlxdWUxCisJCQkJCQlVU0lORyBidHJlZSAoaSBpbnQ0X2N1c3RvbV9vcHMx KQorCQkJCQkJV0lUSCAoZGVkdXBsaWNhdGVfaXRlbXMgPSBvZmYpOworCUNSRUFURSBVTklR VUUgSU5ERVggYnR0ZXN0X3VuaXF1ZV9pZHgyCisJCQkJCQlPTiBidHRlc3RfdW5pcXVlMgor CQkJCQkJVVNJTkcgYnRyZWUgKGkgaW50NF9jdXN0b21fb3BzMikKKwkJCQkJCVdJVEggKGRl ZHVwbGljYXRlX2l0ZW1zID0gb2ZmKTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIGJ0dGVzdF91 bmlxdWVfaWR4MworCQkJCQkJT04gYnR0ZXN0X3VuaXF1ZTMKKwkJCQkJCVVTSU5HIGJ0cmVl IChpIGludDRfY3VzdG9tX29wczMpCisJCQkJCQlXSVRIIChkZWR1cGxpY2F0ZV9pdGVtcyA9 IG9uKTsKKykpOworCitteSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKyMKKyMg VGVzdCAxLgorIyAgLSBpbnNlcnQgc2VxIHZhbHVlcworIyAgLSBjcmVhdGUgdW5pcXVlIGlu ZGV4CisjICAtIGJyZWFrIGNtcCBmdW5jdGlvbgorIyAgLSBhbWNoZWNrIGZpbmRzIHRoZSB1 bmlxdWVuZXNzIHZpb2xhdGlvbgorIworCisjIFdlIGhhdmUgbm90IHlldCBicm9rZW4gdGhl IGluZGV4LCBzbyB3ZSBzaG91bGQgZ2V0IG5vIGNvcnJ1cHRpb24KKyRyZXN1bHQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdi dHRlc3RfdW5pcXVlX2lkeDEnLCB0cnVlLCB0cnVlKTsKKykpOworaXMoJHJlc3VsdCwgJycs ICdydW4gYW1jaGVjayBvbiBub24tYnJva2VuIGJ0dGVzdF91bmlxdWVfaWR4MScpOworCisj IENoYW5nZSB0aGUgb3BlcmF0b3IgY2xhc3MgdG8gdXNlIGEgZnVuY3Rpb24gd2hpY2ggY29u c2lkZXJzIGNlcnRhaW4gZGlmZmVyZW50CisjIHZhbHVlcyB0byBiZSBlcXVhbC4KKyRub2Rl LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlVUERBVEUgcGdfY2F0YWxvZy5wZ19h bXByb2MgU0VUCisJCSAgIGFtcHJvYyA9ICdiYWRfY21wMSc6OnJlZ3Byb2MKKwlXSEVSRSBh bXByb2MgPSAnb2tfY21wMSc6OnJlZ3Byb2M7CispKTsKKworKCRyZXN1bHQsICRzdGRvdXQs ICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcSgKKwlTRUxFQ1QgYnRfaW5k ZXhfY2hlY2soJ2J0dGVzdF91bmlxdWVfaWR4MScsIHRydWUsIHRydWUpOworKSk7Citvaygk c3RkZXJyID1+IC9pbmRleCB1bmlxdWVuZXNzIGlzIHZpb2xhdGVkIGZvciBpbmRleCAiYnR0 ZXN0X3VuaXF1ZV9pZHgxIi8sCisJJ2RldGVjdGVkIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGZv ciBpbmRleCAiYnR0ZXN0X3VuaXF1ZV9pZHgxIicpOworCisjCisjIFRlc3QgMi4KKyMgIC0g YnJlYWsgY21wIGZ1bmN0aW9uCisjICAtIGluc2VydCBzZXEgdmFsdWVzIHdpdGggZHVwbGlj YXRlcworIyAgLSBjcmVhdGUgdW5pcXVlIGluZGV4CisjICAtIG1ha2UgY21wIGZ1bmN0aW9u IGNvcnJlY3QKKyMgIC0gYW1jaGVjayBmaW5kcyB0aGUgdW5pcXVlbmVzcyB2aW9sYXRpb24K KyMKKworIyBEdWUgdG8gYmFkIGNtcCBmdW5jdGlvbiB3ZSBleHBlY3QgYW1jaGVjayB0byBk ZXRlY3QgaXRlbSBvcmRlciB2aW9sYXRpb24sCisjIGJ1dCBubyB1bmlxdWVuZXNzIHZpb2xh dGlvbi4KKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKCdwb3N0 Z3JlcycsIHEoCisJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3RfdW5pcXVlX2lkeDIn LCB0cnVlLCB0cnVlKTsKKykpOworb2soJHN0ZGVyciA9fiAvaXRlbSBvcmRlciBpbnZhcmlh bnQgdmlvbGF0ZWQgZm9yIGluZGV4ICJidHRlc3RfdW5pcXVlX2lkeDIiLywKKwknZGV0ZWN0 ZWQgaXRlbSBvcmRlciBpbnZhcmlhbnQgdmlvbGF0aW9uIGZvciBpbmRleCAiYnR0ZXN0X3Vu aXF1ZV9pZHgyIicpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJVVBE QVRFIHBnX2NhdGFsb2cucGdfYW1wcm9jIFNFVAorCQkgICBhbXByb2MgPSAnb2tfY21wMic6 OnJlZ3Byb2MKKwlXSEVSRSBhbXByb2MgPSAnYmFkX2NtcDInOjpyZWdwcm9jOworKSk7CisK KygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKCdwb3N0Z3Jlcycs IHEoCisJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3RfdW5pcXVlX2lkeDInLCB0cnVl LCB0cnVlKTsKKykpOworb2soJHN0ZGVyciA9fiAvaW5kZXggdW5pcXVlbmVzcyBpcyB2aW9s YXRlZCBmb3IgaW5kZXggImJ0dGVzdF91bmlxdWVfaWR4MiIvLAorCSdkZXRlY3RlZCB1bmlx dWVuZXNzIHZpb2xhdGlvbiBmb3IgaW5kZXggImJ0dGVzdF91bmlxdWVfaWR4MiInKTsKKwor IworIyBUZXN0IDMuCisjICAtIHNhbWUgYXMgVGVzdCAyLCBidXQgd2l0aCBpbmRleCBkZWR1 cGxpY2F0aW9uCisjCisjIFRoZW4gdW5pcXVlbmVzcyB2aW9sYXRpb24gaXMgZGV0ZWN0ZWQg YmV0d2VlbiBkaWZmZXJlbnQgcG9zdGluZyBsaXN0CisjIGVudHJpZXMgaW5zaWRlIG9uZSBp bmRleCBlbnRyeS4KKyMKKworIyBEdWUgdG8gYmFkIGNtcCBmdW5jdGlvbiB3ZSBleHBlY3Qg YW1jaGVjayB0byBkZXRlY3QgaXRlbSBvcmRlciB2aW9sYXRpb24sCisjIGJ1dCBubyB1bmlx dWVuZXNzIHZpb2xhdGlvbi4KKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2Rl LT5wc3FsKCdwb3N0Z3JlcycsIHEoCisJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdidHRlc3Rf dW5pcXVlX2lkeDMnLCB0cnVlLCB0cnVlKTsKKykpOworb2soJHN0ZGVyciA9fiAvaXRlbSBv cmRlciBpbnZhcmlhbnQgdmlvbGF0ZWQgZm9yIGluZGV4ICJidHRlc3RfdW5pcXVlX2lkeDMi LywKKwknZGV0ZWN0ZWQgaXRlbSBvcmRlciBpbnZhcmlhbnQgdmlvbGF0aW9uIGZvciBpbmRl eCAiYnR0ZXN0X3VuaXF1ZV9pZHgzIicpOworCisjIEZvciB1bmlxdWUgaW5kZXggZGVkdXBs aWNhdGlvbiBpcyBwb3NzaWJsZSBvbmx5IGZvciBzYW1lIHZhbHVlcywgYnV0CisjIHdpdGgg ZGlmZmVyZW50IHZpc2liaWxpdHkuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo CisJREVMRVRFIEZST00gYnR0ZXN0X3VuaXF1ZTMgV0hFUkUgMzgwIDw9IGkgQU5EIGkgPD0g NDIwOworCUlOU0VSVCBJTlRPIGJ0dGVzdF91bmlxdWUzIChTRUxFQ1QgKiBGUk9NIGdlbmVy YXRlX3NlcmllcygzODAsIDQyMCkpOworCUlOU0VSVCBJTlRPIGJ0dGVzdF91bmlxdWUzIFZB TFVFUyAoNDAwKTsKKwlERUxFVEUgRlJPTSBidHRlc3RfdW5pcXVlMyBXSEVSRSAzODAgPD0g aSBBTkQgaSA8PSA0MjA7CisJSU5TRVJUIElOVE8gYnR0ZXN0X3VuaXF1ZTMgKFNFTEVDVCAq IEZST00gZ2VuZXJhdGVfc2VyaWVzKDM4MCwgNDIwKSk7CisJSU5TRVJUIElOVE8gYnR0ZXN0 X3VuaXF1ZTMgVkFMVUVTICg0MDApOworCURFTEVURSBGUk9NIGJ0dGVzdF91bmlxdWUzIFdI RVJFIDM4MCA8PSBpIEFORCBpIDw9IDQyMDsKKwlJTlNFUlQgSU5UTyBidHRlc3RfdW5pcXVl MyAoU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzgwLCA0MjApKTsKKwlJTlNFUlQg SU5UTyBidHRlc3RfdW5pcXVlMyBWQUxVRVMgKDQwMCk7CispKTsKKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKAorCVVQREFURSBwZ19jYXRhbG9nLnBnX2FtcHJvYyBTRVQK KwkJICAgYW1wcm9jID0gJ29rX2NtcDMnOjpyZWdwcm9jCisJV0hFUkUgYW1wcm9jID0gJ2Jh ZF9jbXAzJzo6cmVncHJvYzsKKykpOworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikg PSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxKAorCVNFTEVDVCBidF9pbmRleF9jaGVjaygn YnR0ZXN0X3VuaXF1ZV9pZHgzJywgdHJ1ZSwgdHJ1ZSk7CispKTsKK29rKCRzdGRlcnIgPX4g L2luZGV4IHVuaXF1ZW5lc3MgaXMgdmlvbGF0ZWQgZm9yIGluZGV4ICJidHRlc3RfdW5pcXVl X2lkeDMiLywKKwknZGV0ZWN0ZWQgdW5pcXVlbmVzcyB2aW9sYXRpb24gZm9yIGluZGV4ICJi dHRlc3RfdW5pcXVlX2lkeDMiJyk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7 CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCAyYmVlZWJiMTYzLi4xNjlhMTZiODJj IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2Nv bnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTc5LDExICs3OSwxOSBAQCB0eXBl ZGVmIHN0cnVjdCBCdHJlZUNoZWNrU3RhdGUKIAlib29sCQloZWFwYWxsaW5kZXhlZDsKIAkv KiBBbHNvIG1ha2luZyBzdXJlIG5vbi1waXZvdCB0dXBsZXMgY2FuIGJlIGZvdW5kIGJ5IG5l dyBzZWFyY2g/ICovCiAJYm9vbAkJcm9vdGRlc2NlbmQ7CisJLyogQWxzbyBjaGVjayB1bmlx dWVuZXNzIGNvbnN0cmFpbnQgaWYgaW5kZXggaXMgdW5pcXVlICovCisJYm9vbAkJY2hlY2t1 bmlxdWU7CiAJLyogUGVyLXBhZ2UgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHQgdGFyZ2V0 Y29udGV4dDsKIAkvKiBCdWZmZXIgYWNjZXNzIHN0cmF0ZWd5ICovCiAJQnVmZmVyQWNjZXNz U3RyYXRlZ3kgY2hlY2tzdHJhdGVneTsKIAorCS8qCisJICogSW5mbyBmb3IgdW5pcXVlbmVz cyBjaGVja2luZy4gRmlsbCB0aGVzZSBmaWVsZHMgb25jZSBwZXIgaW5kZXggY2hlY2suCisJ ICovCisJSW5kZXhJbmZvICAqaW5kZXhpbmZvOworCVNuYXBzaG90CXNuYXBzaG90OworCiAJ LyoKIAkgKiBNdXRhYmxlIHN0YXRlLCBmb3IgdmVyaWZpY2F0aW9uIG9mIHBhcnRpY3VsYXIg cGFnZToKIAkgKi8KQEAgLTEzOCwxOSArMTQ2LDMzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEo YnRfaW5kZXhfY2hlY2spOwogUEdfRlVOQ1RJT05fSU5GT19WMShidF9pbmRleF9wYXJlbnRf Y2hlY2spOwogCiBzdGF0aWMgdm9pZCBidF9pbmRleF9jaGVja19pbnRlcm5hbChPaWQgaW5k cmVsaWQsIGJvb2wgcGFyZW50Y2hlY2ssCi0JCQkJCQkJCQlib29sIGhlYXBhbGxpbmRleGVk LCBib29sIHJvb3RkZXNjZW5kKTsKKwkJCQkJCQkJCWJvb2wgaGVhcGFsbGluZGV4ZWQsIGJv b2wgcm9vdGRlc2NlbmQsCisJCQkJCQkJCQlib29sIGNoZWNrdW5pcXVlKTsKIHN0YXRpYyBp bmxpbmUgdm9pZCBidHJlZV9pbmRleF9jaGVja2FibGUoUmVsYXRpb24gcmVsKTsKIHN0YXRp YyBpbmxpbmUgYm9vbCBidHJlZV9pbmRleF9tYWluZm9ya19leHBlY3RlZChSZWxhdGlvbiBy ZWwpOwogc3RhdGljIHZvaWQgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkgYm9vbCBoZWFwa2V5c3BhY2UsIGJvb2wgcmVh ZG9ubHksIGJvb2wgaGVhcGFsbGluZGV4ZWQsCi0JCQkJCQkJCSBib29sIHJvb3RkZXNjZW5k KTsKKwkJCQkJCQkJIGJvb2wgcm9vdGRlc2NlbmQsIGJvb2wgY2hlY2t1bmlxdWUpOwogc3Rh dGljIEJ0cmVlTGV2ZWwgYnRfY2hlY2tfbGV2ZWxfZnJvbV9sZWZ0bW9zdChCdHJlZUNoZWNr U3RhdGUgKnN0YXRlLAogCQkJCQkJCQkJCQkgICBCdHJlZUxldmVsIGxldmVsKTsKIHN0YXRp YyB2b2lkIGJ0X3JlY2hlY2tfc2libGluZ19saW5rcyhCdHJlZUNoZWNrU3RhdGUgKnN0YXRl LAogCQkJCQkJCQkJIEJsb2NrTnVtYmVyIGJ0cG9fcHJldl9mcm9tX3RhcmdldCwKIAkJCQkJ CQkJCSBCbG9ja051bWJlciBsZWZ0Y3VycmVudCk7CitzdGF0aWMgYm9vbCBoZWFwX2VudHJ5 X2lzX3Zpc2libGUoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSXRlbVBvaW50ZXIgdGlkKTsK K3N0YXRpYyB2b2lkIGJ0X3JlcG9ydF9kdXBsaWNhdGUoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSwgSXRlbVBvaW50ZXIgdGlkLAorCQkJCQkJCQlCbG9ja051bWJlciBibG9jaywgT2Zmc2V0 TnVtYmVyIG9mZnNldCwKKwkJCQkJCQkJaW50IHBvc3RpbmcsIEl0ZW1Qb2ludGVyIG5leHR0 aWQsCisJCQkJCQkJCUJsb2NrTnVtYmVyIG5ibG9jaywgT2Zmc2V0TnVtYmVyIG5vZmZzZXQs CisJCQkJCQkJCWludCBucG9zdGluZyk7CitzdGF0aWMgdm9pZCBidF9lbnRyeV91bmlxdWVf Y2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwLAorCQkJCQkJ CQkgIEJsb2NrTnVtYmVyIHRhcmdldGJsb2NrLAorCQkJCQkJCQkgIE9mZnNldE51bWJlciBv ZmZzZXQsIGludCAqbFZpc19pLAorCQkJCQkJCQkgIEl0ZW1Qb2ludGVyICpsVmlzX3RpZCwK KwkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmxWaXNfb2Zmc2V0LAorCQkJCQkJCQkgIEJsb2Nr TnVtYmVyICpsVmlzX2Jsb2NrKTsKIHN0YXRpYyB2b2lkIGJ0X3RhcmdldF9wYWdlX2NoZWNr KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpOwotc3RhdGljIEJUU2Nhbkluc2VydCBidF9yaWdo dF9wYWdlX2NoZWNrX3NjYW5rZXkoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSk7CitzdGF0aWMg QlRTY2FuSW5zZXJ0IGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShCdHJlZUNoZWNrU3Rh dGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpyaWdodGZpcnN0b2Zmc2V0 KTsKIHN0YXRpYyB2b2lkIGJ0X2NoaWxkX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUs IEJUU2Nhbkluc2VydCB0YXJnZXRrZXksCiAJCQkJCQkgICBPZmZzZXROdW1iZXIgZG93bmxp bmtvZmZudW0pOwogc3RhdGljIHZvaWQgYnRfY2hpbGRfaGlnaGtleV9jaGVjayhCdHJlZUNo ZWNrU3RhdGUgKnN0YXRlLApAQCAtMTkwLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSXRl bVBvaW50ZXIgQlRyZWVUdXBsZUdldEhlYXBUSURDYXJlZnVsKEJ0cmVlQ2hlY2tTdGF0ZSAq c3RhdGUsCiBzdGF0aWMgaW5saW5lIEl0ZW1Qb2ludGVyIEJUcmVlVHVwbGVHZXRQb2ludHNU b1RJRChJbmRleFR1cGxlIGl0dXApOwogCiAvKgotICogYnRfaW5kZXhfY2hlY2soaW5kZXgg cmVnY2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4pCisgKiBidF9pbmRleF9jaGVjayhp bmRleCByZWdjbGFzcywgaGVhcGFsbGluZGV4ZWQgYm9vbGVhbiwgY2hlY2t1bmlxdWUgYm9v bGVhbikKICAqCiAgKiBWZXJpZnkgaW50ZWdyaXR5IG9mIEItVHJlZSBpbmRleC4KICAqCkBA IC0yMDMsMTcgKzIyNSwyMCBAQCBidF9pbmRleF9jaGVjayhQR19GVU5DVElPTl9BUkdTKQog ewogCU9pZAkJCWluZHJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlib29sCQloZWFwYWxs aW5kZXhlZCA9IGZhbHNlOworCWJvb2wJCWNoZWNrdW5pcXVlID0gZmFsc2U7CiAKLQlpZiAo UEdfTkFSR1MoKSA9PSAyKQorCWlmIChQR19OQVJHUygpID49IDIpCiAJCWhlYXBhbGxpbmRl eGVkID0gUEdfR0VUQVJHX0JPT0woMSk7CisJaWYgKFBHX05BUkdTKCkgPT0gMykKKwkJY2hl Y2t1bmlxdWUgPSBQR19HRVRBUkdfQk9PTCgyKTsKIAotCWJ0X2luZGV4X2NoZWNrX2ludGVy bmFsKGluZHJlbGlkLCBmYWxzZSwgaGVhcGFsbGluZGV4ZWQsIGZhbHNlKTsKKwlidF9pbmRl eF9jaGVja19pbnRlcm5hbChpbmRyZWxpZCwgZmFsc2UsIGhlYXBhbGxpbmRleGVkLCBmYWxz ZSwgY2hlY2t1bmlxdWUpOwogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KIAogLyoKLSAqIGJ0 X2luZGV4X3BhcmVudF9jaGVjayhpbmRleCByZWdjbGFzcywgaGVhcGFsbGluZGV4ZWQgYm9v bGVhbikKKyAqIGJ0X2luZGV4X3BhcmVudF9jaGVjayhpbmRleCByZWdjbGFzcywgaGVhcGFs bGluZGV4ZWQgYm9vbGVhbiwgcm9vdGRlc2NlbmQgYm9vbGVhbiwgY2hlY2t1bmlxdWUgYm9v bGVhbikKICAqCiAgKiBWZXJpZnkgaW50ZWdyaXR5IG9mIEItVHJlZSBpbmRleC4KICAqCkBA IC0yMjcsMTMgKzI1MiwxNiBAQCBidF9pbmRleF9wYXJlbnRfY2hlY2soUEdfRlVOQ1RJT05f QVJHUykKIAlPaWQJCQlpbmRyZWxpZCA9IFBHX0dFVEFSR19PSUQoMCk7CiAJYm9vbAkJaGVh cGFsbGluZGV4ZWQgPSBmYWxzZTsKIAlib29sCQlyb290ZGVzY2VuZCA9IGZhbHNlOworCWJv b2wJCWNoZWNrdW5pcXVlID0gZmFsc2U7CiAKIAlpZiAoUEdfTkFSR1MoKSA+PSAyKQogCQlo ZWFwYWxsaW5kZXhlZCA9IFBHX0dFVEFSR19CT09MKDEpOwotCWlmIChQR19OQVJHUygpID09 IDMpCisJaWYgKFBHX05BUkdTKCkgPj0gMykKIAkJcm9vdGRlc2NlbmQgPSBQR19HRVRBUkdf Qk9PTCgyKTsKKwlpZiAoUEdfTkFSR1MoKSA9PSA0KQorCQljaGVja3VuaXF1ZSA9IFBHX0dF VEFSR19CT09MKDMpOwogCi0JYnRfaW5kZXhfY2hlY2tfaW50ZXJuYWwoaW5kcmVsaWQsIHRy dWUsIGhlYXBhbGxpbmRleGVkLCByb290ZGVzY2VuZCk7CisJYnRfaW5kZXhfY2hlY2tfaW50 ZXJuYWwoaW5kcmVsaWQsIHRydWUsIGhlYXBhbGxpbmRleGVkLCByb290ZGVzY2VuZCwgY2hl Y2t1bmlxdWUpOwogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KQEAgLTI0Myw3ICsyNzEsNyBA QCBidF9pbmRleF9wYXJlbnRfY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKICAqLwogc3RhdGlj IHZvaWQKIGJ0X2luZGV4X2NoZWNrX2ludGVybmFsKE9pZCBpbmRyZWxpZCwgYm9vbCBwYXJl bnRjaGVjaywgYm9vbCBoZWFwYWxsaW5kZXhlZCwKLQkJCQkJCWJvb2wgcm9vdGRlc2NlbmQp CisJCQkJCQlib29sIHJvb3RkZXNjZW5kLCBib29sIGNoZWNrdW5pcXVlKQogewogCU9pZAkJ CWhlYXBpZDsKIAlSZWxhdGlvbglpbmRyZWw7CkBAIC0zNDQsNyArMzcyLDcgQEAgYnRfaW5k ZXhfY2hlY2tfaW50ZXJuYWwoT2lkIGluZHJlbGlkLCBib29sIHBhcmVudGNoZWNrLCBib29s IGhlYXBhbGxpbmRleGVkLAogCiAJCS8qIENoZWNrIGluZGV4LCBwb3NzaWJseSBhZ2FpbnN0 IHRhYmxlIGl0IGlzIGFuIGluZGV4IG9uICovCiAJCWJ0X2NoZWNrX2V2ZXJ5X2xldmVsKGlu ZHJlbCwgaGVhcHJlbCwgaGVhcGtleXNwYWNlLCBwYXJlbnRjaGVjaywKLQkJCQkJCQkgaGVh cGFsbGluZGV4ZWQsIHJvb3RkZXNjZW5kKTsKKwkJCQkJCQkgaGVhcGFsbGluZGV4ZWQsIHJv b3RkZXNjZW5kLCBjaGVja3VuaXF1ZSk7CiAJfQogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMg Y2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KQEAgLTQ0NSw3ICs0NzMs OCBAQCBidHJlZV9pbmRleF9tYWluZm9ya19leHBlY3RlZChSZWxhdGlvbiByZWwpCiAgKi8K IHN0YXRpYyB2b2lkCiBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAotCQkJCQkgYm9vbCByZWFkb25seSwg Ym9vbCBoZWFwYWxsaW5kZXhlZCwgYm9vbCByb290ZGVzY2VuZCkKKwkJCQkJIGJvb2wgcmVh ZG9ubHksIGJvb2wgaGVhcGFsbGluZGV4ZWQsIGJvb2wgcm9vdGRlc2NlbmQsCisJCQkJCSBi b29sIGNoZWNrdW5pcXVlKQogewogCUJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGU7CiAJUGFnZQkJ bWV0YXBhZ2U7CkBAIC00NzcsNiArNTA2LDggQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVs YXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAlzdGF0 ZS0+cmVhZG9ubHkgPSByZWFkb25seTsKIAlzdGF0ZS0+aGVhcGFsbGluZGV4ZWQgPSBoZWFw YWxsaW5kZXhlZDsKIAlzdGF0ZS0+cm9vdGRlc2NlbmQgPSByb290ZGVzY2VuZDsKKwlzdGF0 ZS0+Y2hlY2t1bmlxdWUgPSBjaGVja3VuaXF1ZTsKKwlzdGF0ZS0+c25hcHNob3QgPSBJbnZh bGlkU25hcHNob3Q7CiAKIAlpZiAoc3RhdGUtPmhlYXBhbGxpbmRleGVkKQogCXsKQEAgLTUz NCw2ICs1NjUsMjMgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJfQogCX0KIAorCS8qCisJICog V2UgbmVlZCBhIHNuYXBzaG90IHRvIGNoZWNrIHRoZSB1bmlxdWVuZXNzIG9mIHRoZSBpbmRl eC4gRm9yIGJldHRlcgorCSAqIHBlcmZvcm1hbmNlIHRha2UgaXQgb25jZSBwZXIgaW5kZXgg Y2hlY2suIElmIHNuYXBzaG90IGFscmVhZHkgdGFrZW4KKwkgKiByZXVzZSBpdC4KKwkgKi8K KwlpZiAoc3RhdGUtPmNoZWNrdW5pcXVlKQorCXsKKwkJc3RhdGUtPmluZGV4aW5mbyA9IEJ1 aWxkSW5kZXhJbmZvKHN0YXRlLT5yZWwpOworCQlpZiAoc3RhdGUtPmluZGV4aW5mby0+aWlf VW5pcXVlKQorCQl7CisJCQlpZiAoc25hcHNob3QgIT0gU25hcHNob3RBbnkpCisJCQkJc3Rh dGUtPnNuYXBzaG90ID0gc25hcHNob3Q7CisJCQllbHNlCisJCQkJc3RhdGUtPnNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQl9CisJ fQorCiAJQXNzZXJ0KCFzdGF0ZS0+cm9vdGRlc2NlbmQgfHwgc3RhdGUtPnJlYWRvbmx5KTsK IAlpZiAoc3RhdGUtPnJvb3RkZXNjZW5kICYmICFzdGF0ZS0+aGVhcGtleXNwYWNlKQogCQll cmVwb3J0KEVSUk9SLApAQCAtNjYwLDYgKzcwOCw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVs KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJ fQogCiAJLyogQmUgdGlkeTogKi8KKwlpZiAoc25hcHNob3QgPT0gU25hcHNob3RBbnkgJiYg c3RhdGUtPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCkKKwkJVW5yZWdpc3RlclNuYXBz aG90KHN0YXRlLT5zbmFwc2hvdCk7CiAJTWVtb3J5Q29udGV4dERlbGV0ZShzdGF0ZS0+dGFy Z2V0Y29udGV4dCk7CiB9CiAKQEAgLTkwMCw2ICs5NTAsMTYyIEBAIG5leHRwYWdlOgogCXJl dHVybiBuZXh0bGV2ZWxkb3duOwogfQogCisvKiBDaGVjayB2aXNpYmlsaXR5IG9mIHRoZSB0 YWJsZSBlbnRyeSByZWZlcmVuY2VkIGJ5IG5idHJlZSBpbmRleCAqLworc3RhdGljIGJvb2wK K2hlYXBfZW50cnlfaXNfdmlzaWJsZShCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJdGVtUG9p bnRlciB0aWQpCit7CisJYm9vbAkJdGlkX3Zpc2libGU7CisKKwlUdXBsZVRhYmxlU2xvdCAq c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHN0YXRlLT5oZWFwcmVsLCBOVUxMKTsKKworCXRp ZF92aXNpYmxlID0gdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24oc3RhdGUtPmhlYXBy ZWwsCisJCQkJCQkJCQkJCQl0aWQsIHN0YXRlLT5zbmFwc2hvdCwgc2xvdCk7CisJaWYgKHNs b3QgIT0gTlVMTCkKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwor CXJldHVybiB0aWRfdmlzaWJsZTsKK30KKworLyoKKyAqIFByZXBhcmUgYW4gZXJyb3IgbWVz c2FnZSBmb3IgdW5pcXVlIGNvbnN0cmFpbiB2aW9sYXRpb24gaW4KKyAqIGEgYnRyZWUgaW5k ZXggYW5kIHJlcG9ydCBFUlJPUi4KKyAqLworc3RhdGljIHZvaWQKK2J0X3JlcG9ydF9kdXBs aWNhdGUoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKKwkJCQkJSXRlbVBvaW50ZXIgdGlkLCBC bG9ja051bWJlciBibG9jaywgT2Zmc2V0TnVtYmVyIG9mZnNldCwKKwkJCQkJaW50IHBvc3Rp bmcsCisJCQkJCUl0ZW1Qb2ludGVyIG5leHR0aWQsIEJsb2NrTnVtYmVyIG5ibG9jaywgT2Zm c2V0TnVtYmVyIG5vZmZzZXQsCisJCQkJCWludCBucG9zdGluZykKK3sKKwljaGFyCSAgICpo dGlkLAorCQkJICAgKm5odGlkLAorCQkJICAgKml0aWQsCisJCQkgICAqbml0aWQgPSAiIiwK KwkJCSAgICpwcG9zdGluZyA9ICIiLAorCQkJICAgKnBucG9zdGluZyA9ICIiOworCisJaHRp ZCA9IHBzcHJpbnRmKCJ0aWQ9KCV1LCV1KSIsCisJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tO dW1iZXJOb0NoZWNrKHRpZCksCisJCQkJCUl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9D aGVjayh0aWQpKTsKKwluaHRpZCA9IHBzcHJpbnRmKCJ0aWQ9KCV1LCV1KSIsCisJCQkJCSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyTm9DaGVjayhuZXh0dGlkKSwKKwkJCQkJIEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhuZXh0dGlkKSk7CisJaXRpZCA9IHBzcHJp bnRmKCJ0aWQ9KCV1LCV1KSIsIGJsb2NrLCBvZmZzZXQpOworCisJaWYgKG5ibG9jayAhPSBi bG9jayB8fCBub2Zmc2V0ICE9IG9mZnNldCkKKwkJbml0aWQgPSBwc3ByaW50ZigiIHRpZD0o JXUsJXUpIiwgbmJsb2NrLCBub2Zmc2V0KTsKKworCWlmIChwb3N0aW5nID49IDApCisJCXBw b3N0aW5nID0gcHNwcmludGYoIiBwb3N0aW5nICV1IiwgcG9zdGluZyk7CisKKwlpZiAobnBv c3RpbmcgPj0gMCkKKwkJcG5wb3N0aW5nID0gcHNwcmludGYoIiBwb3N0aW5nICV1IiwgbnBv c3RpbmcpOworCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhf Q09SUlVQVEVEKSwKKwkJCSBlcnJtc2coImluZGV4IHVuaXF1ZW5lc3MgaXMgdmlvbGF0ZWQg Zm9yIGluZGV4IFwiJXNcIjogIgorCQkJCQkiSW5kZXggJXMlcyBhbmQlcyVzICIKKwkJCQkJ Iihwb2ludCB0byBoZWFwICVzIGFuZCAlcykgcGFnZSBsc249JVgvJVguIiwKKwkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCksCisJCQkJCWl0aWQsIHBwb3N0aW5n LCBuaXRpZCwgcG5wb3N0aW5nLCBodGlkLCBuaHRpZCwKKwkJCQkJTFNOX0ZPUk1BVF9BUkdT KHN0YXRlLT50YXJnZXRsc24pKSkpOworfQorCisvKiBDaGVjayBpZiBjdXJyZW50IG5idHJl ZSBsZWFmIGVudHJ5IGNvbXBsaWVzIHdpdGggVU5JUVVFIGNvbnN0cmFpbnQgKi8KK3N0YXRp YyB2b2lkCitidF9lbnRyeV91bmlxdWVfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwg SW5kZXhUdXBsZSBpdHVwLAorCQkJCQkgIEJsb2NrTnVtYmVyIHRhcmdldGJsb2NrLCBPZmZz ZXROdW1iZXIgb2Zmc2V0LCBpbnQgKmxWaXNfaSwgSXRlbVBvaW50ZXIgKmxWaXNfdGlkLAor CQkJCQkgIE9mZnNldE51bWJlciAqbFZpc19vZmZzZXQsIEJsb2NrTnVtYmVyICpsVmlzX2Js b2NrKQoreworCUl0ZW1Qb2ludGVyIHRpZDsKKwlib29sCQloYXNfdmlzaWJsZV9lbnRyeSA9 IGZhbHNlOworCisJQXNzZXJ0KHRhcmdldGJsb2NrICE9IFBfTk9ORSk7CisKKwkvKgorCSAq IEN1cnJlbnQgdHVwbGUgaGFzIHBvc3RpbmcgbGlzdC4gUmVwb3J0IGR1cGxpY2F0ZSBpZiBU SUQgb2YgYW55IHBvc3RpbmcKKwkgKiBsaXN0IGVudHJ5IGlzIHZpc2libGUgYW5kIGxWaXNf dGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChCVHJlZVR1cGxlSXNQb3N0aW5nKGl0dXApKQor CXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBCVHJlZVR1cGxlR2V0TlBvc3RpbmcoaXR1cCk7 IGkrKykKKwkJeworCQkJdGlkID0gQlRyZWVUdXBsZUdldFBvc3RpbmdOKGl0dXAsIGkpOwor CQkJaWYgKGhlYXBfZW50cnlfaXNfdmlzaWJsZShzdGF0ZSwgdGlkKSkKKwkJCXsKKwkJCQlo YXNfdmlzaWJsZV9lbnRyeSA9IHRydWU7CisJCQkJaWYgKEl0ZW1Qb2ludGVySXNWYWxpZCgq bFZpc190aWQpKQorCQkJCXsKKwkJCQkJYnRfcmVwb3J0X2R1cGxpY2F0ZShzdGF0ZSwKKwkJ CQkJCQkJCQkqbFZpc190aWQsICpsVmlzX2Jsb2NrLAorCQkJCQkJCQkJCSpsVmlzX29mZnNl dCwgKmxWaXNfaSwKKwkJCQkJCQkJCQl0aWQsIHRhcmdldGJsb2NrLAorCQkJCQkJCQkJCW9m ZnNldCwgaSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBQcmV2ZW50IGRvdWJsZSByZXBv cnRpbmcgdW5pcXVlIGNvbnN0cmFpbnQgdmlvbGF0aW9uIGJldHdlZW4KKwkJCQkgKiB0aGUg cG9zdGluZyBsaXN0IGVudHJpZXMgb2YgdGhlIGZpcnN0IHR1cGxlIG9uIHRoZSBwYWdlIGFm dGVyCisJCQkJICogY3Jvc3MtcGFnZSBjaGVjay4KKwkJCQkgKi8KKwkJCQlpZiAoKmxWaXNf YmxvY2sgIT0gdGFyZ2V0YmxvY2sgJiYgSXRlbVBvaW50ZXJJc1ZhbGlkKCpsVmlzX3RpZCkp CisJCQkJCXJldHVybjsKKworCQkJCSpsVmlzX2kgPSBpOworCQkJCSpsVmlzX3RpZCA9IHRp ZDsKKwkJCQkqbFZpc19vZmZzZXQgPSBvZmZzZXQ7CisJCQkJKmxWaXNfYmxvY2sgPSB0YXJn ZXRibG9jazsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogQ3VycmVudCB0dXBsZSBoYXMg bm8gcG9zdGluZyBsaXN0LiBJZiBUSUQgaXMgdmlzaWJsZSBzYXZlIGluZm8gYWJvdXQKKwkg KiBpdCBmb3IgdGhlIG5leHQgY29tcGFyaXNvbnMgaW4gdGhlIGxvb3AgaW4gYnRfcGFnZV9j aGVjaygpLiBSZXBvcnQKKwkgKiBkdXBsaWNhdGUgaWYgbFZpc190aWQgaXMgYWxyZWFkeSB2 YWxpZC4KKwkgKi8KKwllbHNlCisJeworCQl0aWQgPSBCVHJlZVR1cGxlR2V0SGVhcFRJRChp dHVwKTsKKwkJaWYgKGhlYXBfZW50cnlfaXNfdmlzaWJsZShzdGF0ZSwgdGlkKSkKKwkJewor CQkJaGFzX3Zpc2libGVfZW50cnkgPSB0cnVlOworCQkJaWYgKEl0ZW1Qb2ludGVySXNWYWxp ZCgqbFZpc190aWQpKQorCQkJeworCQkJCWJ0X3JlcG9ydF9kdXBsaWNhdGUoc3RhdGUsCisJ CQkJCQkJCQkqbFZpc190aWQsICpsVmlzX2Jsb2NrLAorCQkJCQkJCQkJKmxWaXNfb2Zmc2V0 LCAqbFZpc19pLAorCQkJCQkJCQkJdGlkLCB0YXJnZXRibG9jaywKKwkJCQkJCQkJCW9mZnNl dCwgLTEpOworCQkJfQorCQkJKmxWaXNfaSA9IC0xOworCQkJKmxWaXNfdGlkID0gdGlkOwor CQkJKmxWaXNfb2Zmc2V0ID0gb2Zmc2V0OworCQkJKmxWaXNfYmxvY2sgPSB0YXJnZXRibG9j azsKKwkJfQorCX0KKworCWlmICghaGFzX3Zpc2libGVfZW50cnkgJiYgKmxWaXNfYmxvY2sg IT0gSW52YWxpZEJsb2NrTnVtYmVyICYmCisJCSpsVmlzX2Jsb2NrICE9IHRhcmdldGJsb2Nr KQorCXsKKwkJY2hhcgkgICAqcG9zdGluZyA9ICIiOworCisJCWlmICgqbFZpc19pID49IDAp CisJCQlwb3N0aW5nID0gcHNwcmludGYoIiBwb3N0aW5nICV1IiwgKmxWaXNfaSk7CisJCWVy ZXBvcnQoREVCVUcxLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTk9fREFUQSksCisJCQkJIGVy cm1zZygiaW5kZXggdW5pcXVlbmVzcyBjYW4gbm90IGJlIGNoZWNrZWQgZm9yIGluZGV4IHRp ZD0oJXUsJXUpICIKKwkJCQkJCSJpbiBpbmRleCBcIiVzXCIuIEl0IGRvZXNuJ3QgaGF2ZSB2 aXNpYmxlIGhlYXAgdGlkcyBhbmQga2V5ICIKKwkJCQkJCSJpcyBlcXVhbCB0byB0aGUgdGlk PSgldSwldSklcyAocG9pbnRzIHRvIGhlYXAgdGlkPSgldSwldSkpLiAiCisJCQkJCQkiVmFj dXVtIHRoZSB0YWJsZSBhbmQgcmVwZWF0IHRoZSBjaGVjay4iLAorCQkJCQkJdGFyZ2V0Ymxv Y2ssIG9mZnNldCwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwp LAorCQkJCQkJKmxWaXNfYmxvY2ssICpsVmlzX29mZnNldCwgcG9zdGluZywKKwkJCQkJCUl0 ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXJOb0NoZWNrKCpsVmlzX3RpZCksCisJCQkJCQlJdGVt UG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soKmxWaXNfdGlkKSkpKTsKKwl9Cit9CisK IC8qCiAgKiBSYWlzZSBhbiBlcnJvciB3aGVuIHRhcmdldCBwYWdlJ3MgbGVmdCBsaW5rIGRv ZXMgbm90IHBvaW50IGJhY2sgdG8gdGhlCiAgKiBwcmV2aW91cyB0YXJnZXQgcGFnZSwgY2Fs bGVkIGxlZnRjdXJyZW50IGhlcmUuICBUaGUgbGVmdGN1cnJlbnQgcGFnZSdzCkBAIC0xMDU0 LDYgKzEyNjAsOSBAQCBidF9yZWNoZWNrX3NpYmxpbmdfbGlua3MoQnRyZWVDaGVja1N0YXRl ICpzdGF0ZSwKICAqIC0gVmFyaW91cyBjaGVja3Mgb24gdGhlIHN0cnVjdHVyZSBvZiB0dXBs ZXMgdGhlbXNlbHZlcy4gIEZvciBleGFtcGxlLCBjaGVjawogICoJIHRoYXQgbm9uLXBpdm90 IHR1cGxlcyBoYXZlIG5vIHRydW5jYXRlZCBhdHRyaWJ1dGVzLgogICoKKyAqIC0gRm9yIGlu ZGV4IHdpdGggdW5pcXVlIGNvbnN0cmFpbnQgbWFrZSBzdXJlIHRoYXQgb25seSBvbmUgb2Yg dGFibGUgZW50cmllcworICogICBmb3IgZXF1YWwga2V5cyBpcyB2aXNpYmxlLgorICoKICAq IEZ1cnRoZXJtb3JlLCB3aGVuIHN0YXRlIHBhc3NlZCBzaG93cyBTaGFyZUxvY2sgaGVsZCwg ZnVuY3Rpb24gYWxzbyBjaGVja3M6CiAgKgogICogLSBUaGF0IGFsbCBjaGlsZCBwYWdlcyBy ZXNwZWN0IHN0cmljdCBsb3dlciBib3VuZCBmcm9tIHBhcmVudCdzIHBpdm90CkBAIC0xMDc2 LDYgKzEyODUsMTMgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpz dGF0ZSkKIAlPZmZzZXROdW1iZXIgbWF4OwogCUJUUGFnZU9wYXF1ZSB0b3BhcXVlOwogCisJ LyogbGFzdCB2aXNpYmxlIGVudHJ5IGluZm8gZm9yIGNoZWNraW5nIGluZGV4ZXMgd2l0aCB1 bmlxdWUgY29uc3RyYWludCAqLworCWludAkJCWxWaXNfaSA9IC0xOwkvKiB0aGUgcG9zaXRp b24gb2YgbGFzdCB2aXNpYmxlIGl0ZW0gZm9yCisJCQkJCQkJCSAqIHBvc3RpbmcgdHVwbGUu IGZvciBub24tcG9zdGluZyB0dXBsZSAoLTEpICovCisJSXRlbVBvaW50ZXIgbFZpc190aWQg PSBOVUxMOworCUJsb2NrTnVtYmVyIGxWaXNfYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7 CisJT2Zmc2V0TnVtYmVyIGxWaXNfb2Zmc2V0ID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwog CXRvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUoc3RhdGUtPnRhcmdldCk7CiAJbWF4ID0gUGFn ZUdldE1heE9mZnNldE51bWJlcihzdGF0ZS0+dGFyZ2V0KTsKIApAQCAtMTQ2Niw2ICsxNjgy LDQzIEBAIGJ0X3RhcmdldF9wYWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJ CQkJCQkJCQkJTFNOX0ZPUk1BVF9BUkdTKHN0YXRlLT50YXJnZXRsc24pKSkpOwogCQl9CiAK KwkJLyoKKwkJICogSWYgdGhlIGluZGV4IGlzIHVuaXF1ZSB2ZXJpZnkgZW50cmllcyB1bmlx dWVuZXNzIGJ5IGNoZWNraW5nIHRoZSBoZWFwCisJCSAqIHR1cGxlcyB2aXNpYmlsaXR5Lgor CQkgKi8KKwkJaWYgKHN0YXRlLT5jaGVja3VuaXF1ZSAmJiBzdGF0ZS0+aW5kZXhpbmZvLT5p aV9VbmlxdWUgJiYgUF9JU0xFQUYodG9wYXF1ZSkgJiYgIXNrZXktPmFueW51bGxrZXlzKQor CQkJYnRfZW50cnlfdW5pcXVlX2NoZWNrKHN0YXRlLCBpdHVwLCBzdGF0ZS0+dGFyZ2V0Ymxv Y2ssIG9mZnNldCwKKwkJCQkJCQkJICAmbFZpc19pLCAmbFZpc190aWQsICZsVmlzX29mZnNl dCwgJmxWaXNfYmxvY2spOworCisJCWlmIChzdGF0ZS0+Y2hlY2t1bmlxdWUgJiYgc3RhdGUt PmluZGV4aW5mby0+aWlfVW5pcXVlICYmIFBfSVNMRUFGKHRvcGFxdWUpICYmCisJCQlPZmZz ZXROdW1iZXJOZXh0KG9mZnNldCkgPD0gbWF4KQorCQl7CisJCQkvKiBTYXZlIGN1cnJlbnQg c2NhbmtleSB0aWQgKi8KKwkJCXNjYW50aWQgPSBza2V5LT5zY2FudGlkOworCisJCQkvKgor CQkJICogSW52YWxpZGF0ZSBzY2Fua2V5IHRpZCB0byBtYWtlIF9idF9jb21wYXJlIGNvbXBh cmUgb25seSBrZXlzIGluCisJCQkgKiB0aGUgaXRlbSB0byByZXBvcnQgZXF1YWxpdHkgZXZl biBpZiBoZWFwIFRJRHMgYXJlIGRpZmZlcmVudAorCQkJICovCisJCQlza2V5LT5zY2FudGlk ID0gTlVMTDsKKworCQkJLyoKKwkJCSAqIElmIG5leHQga2V5IHR1cGxlIGlzIGRpZmZlcmVu dCwgaW52YWxpZGF0ZSBsYXN0IHZpc2libGUgZW50cnkKKwkJCSAqIGRhdGEgKHdob2xlIGlu ZGV4IHR1cGxlIG9yIGxhc3QgcG9zdGluZyBpbiBpbmRleCB0dXBsZSkuIEtleQorCQkJICog Y29udGFpbmluZyBudWxsIHZhbHVlIGRvZXMgbm90IHZpb2xhdGUgdW5pcXVlIGNvbnN0cmFp bnQgYW5kCisJCQkgKiB0cmVhdGVkIGFzIGRpZmZlcmVudCB0byBhbnkgb3RoZXIga2V5Lgor CQkJICovCisJCQlpZiAoX2J0X2NvbXBhcmUoc3RhdGUtPnJlbCwgc2tleSwgc3RhdGUtPnRh cmdldCwKKwkJCQkJCQlPZmZzZXROdW1iZXJOZXh0KG9mZnNldCkpICE9IDAgfHwgc2tleS0+ YW55bnVsbGtleXMpCisJCQl7CisJCQkJbFZpc19pID0gLTE7CisJCQkJbFZpc190aWQgPSBO VUxMOworCQkJCWxWaXNfYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJCQkJbFZpc19v ZmZzZXQgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCQkJfQorCQkJc2tleS0+c2NhbnRpZCA9 IHNjYW50aWQ7CS8qIFJlc3RvcmUgc2F2ZWQgc2NhbiBrZXkgc3RhdGUgKi8KKwkJfQorCiAJ CS8qCiAJCSAqICogTGFzdCBpdGVtIGNoZWNrICoKIAkJICoKQEAgLTE0ODMsMTIgKzE3MzYs MTYgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkJ ICogYXZhaWxhYmxlIGZyb20gc2libGluZyBmb3IgdmFyaW91cyByZWFzb25zLCB0aG91Z2gg KGUuZy4sIHRhcmdldCBpcwogCQkgKiB0aGUgcmlnaHRtb3N0IHBhZ2Ugb24gbGV2ZWwpLgog CQkgKi8KLQkJZWxzZSBpZiAob2Zmc2V0ID09IG1heCkKKwkJaWYgKG9mZnNldCA9PSBtYXgp CiAJCXsKIAkJCUJUU2Nhbkluc2VydCByaWdodGtleTsKKwkJCUJsb2NrTnVtYmVyIHJpZ2h0 YmxvY2tfbnVtYmVyOworCisJCQkvKiBmaXJzdCBvZmZzZXQgb24gYSByaWdodCBpbmRleCBw YWdlIChsb2cgb25seSkgKi8KKwkJCU9mZnNldE51bWJlciByaWdodGZpcnN0b2Zmc2V0ID0g SW52YWxpZE9mZnNldE51bWJlcjsKIAogCQkJLyogR2V0IGl0ZW0gaW4gbmV4dC9yaWdodCBw YWdlICovCi0JCQlyaWdodGtleSA9IGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShzdGF0 ZSk7CisJCQlyaWdodGtleSA9IGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShzdGF0ZSwg JnJpZ2h0Zmlyc3RvZmZzZXQpOwogCiAJCQlpZiAocmlnaHRrZXkgJiYKIAkJCQkhaW52YXJp YW50X2dfb2Zmc2V0KHN0YXRlLCByaWdodGtleSwgbWF4KSkKQEAgLTE1MjIsNiArMTc3OSw0 NSBAQCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlKQogCQkJ CQkJCQkJCQlzdGF0ZS0+dGFyZ2V0YmxvY2ssIG9mZnNldCwKIAkJCQkJCQkJCQkJTFNOX0ZP Uk1BVF9BUkdTKHN0YXRlLT50YXJnZXRsc24pKSkpOwogCQkJfQorCisJCQkvKgorCQkJICog SWYgaW5kZXggaGFzIHVuaXF1ZSBjb25zdHJhaW50IG1ha2Ugc3VyZSB0aGF0IG5vIG1vcmUg dGhhbiBvbmUKKwkJCSAqIGZvdW5kIGVxdWFsIGl0ZW1zIGlzIHZpc2libGUuCisJCQkgKi8K KwkJCXJpZ2h0YmxvY2tfbnVtYmVyID0gdG9wYXF1ZS0+YnRwb19uZXh0OworCQkJaWYgKHN0 YXRlLT5jaGVja3VuaXF1ZSAmJiBzdGF0ZS0+aW5kZXhpbmZvLT5paV9VbmlxdWUgJiYKKwkJ CQlyaWdodGtleSAmJiBQX0lTTEVBRih0b3BhcXVlKSAmJiByaWdodGJsb2NrX251bWJlciAh PSBQX05PTkUpCisJCQl7CisJCQkJZWxvZyhERUJVRzIsICJjaGVjayBjcm9zcyBwYWdlIHVu aXF1ZSBjb25kaXRpb24iKTsKKworCQkJCS8qCisJCQkJICogTWFrZSBfYnRfY29tcGFyZSBj b21wYXJlIG9ubHkgaW5kZXgga2V5cyB3aXRob3V0IGhlYXAgVElEcy4KKwkJCQkgKiByaWdo dGtleS0+c2NhbnRpZCBpcyBtb2RpZmllZCBkZXN0cnVjdGl2ZWx5IGJ1dCBpdCBpcyBvawor CQkJCSAqIGZvciBpdCBpcyBub3QgdXNlZCBsYXRlcgorCQkJCSAqLworCQkJCXJpZ2h0a2V5 LT5zY2FudGlkID0gTlVMTDsKKworCQkJCS8qIFRoZSBmaXJzdCBrZXkgb24gdGhlIG5leHQg cGFnZSBpcyB0aGUgc2FtZSAqLworCQkJCWlmIChfYnRfY29tcGFyZShzdGF0ZS0+cmVsLCBy aWdodGtleSwgc3RhdGUtPnRhcmdldCwgbWF4KSA9PSAwICYmICFyaWdodGtleS0+YW55bnVs bGtleXMpCisJCQkJeworCQkJCQllbG9nKERFQlVHMiwgImNyb3NzIHBhZ2UgZXF1YWwga2V5 cyIpOworCQkJCQlzdGF0ZS0+dGFyZ2V0ID0gcGFsbG9jX2J0cmVlX3BhZ2Uoc3RhdGUsCisJ CQkJCQkJCQkJCQkJICByaWdodGJsb2NrX251bWJlcik7CisJCQkJCXRvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUoc3RhdGUtPnRhcmdldCk7CisKKwkJCQkJaWYgKFBfSUdOT1JFKHRvcGFx dWUpIHx8ICFQX0lTTEVBRih0b3BhcXVlKSkKKwkJCQkJCWJyZWFrOworCisJCQkJCWl0ZW1p ZCA9IFBhZ2VHZXRJdGVtSWRDYXJlZnVsKHN0YXRlLCByaWdodGJsb2NrX251bWJlciwKKwkJ CQkJCQkJCQkJCSAgc3RhdGUtPnRhcmdldCwKKwkJCQkJCQkJCQkJCSAgcmlnaHRmaXJzdG9m ZnNldCk7CisJCQkJCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPnRh cmdldCwgaXRlbWlkKTsKKworCQkJCQlidF9lbnRyeV91bmlxdWVfY2hlY2soc3RhdGUsIGl0 dXAsIHJpZ2h0YmxvY2tfbnVtYmVyLCByaWdodGZpcnN0b2Zmc2V0LAorCQkJCQkJCQkJCSAg JmxWaXNfaSwgJmxWaXNfdGlkLCAmbFZpc19vZmZzZXQsCisJCQkJCQkJCQkJICAmbFZpc19i bG9jayk7CisJCQkJfQorCQkJfQogCQl9CiAKIAkJLyoKQEAgLTE1NjcsOSArMTg2MywxMSBA QCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlKQogICoKICAq IE5vdGUgdGhhdCAhcmVhZG9ubHkgY2FsbGVycyBtdXN0IHJldmVyaWZ5IHRoYXQgdGFyZ2V0 IHBhZ2UgaGFzIG5vdAogICogYmVlbiBjb25jdXJyZW50bHkgZGVsZXRlZC4KKyAqCisgKiBT YXZlIHJpZ2h0Zmlyc3RkYXRhb2Zmc2V0IGZvciBkZXRhaWxlZCBlcnJvciBtZXNzYWdlLgog ICovCiBzdGF0aWMgQlRTY2FuSW5zZXJ0Ci1idF9yaWdodF9wYWdlX2NoZWNrX3NjYW5rZXko QnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKK2J0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShC dHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBPZmZzZXROdW1iZXIgKnJpZ2h0Zmlyc3RvZmZzZXQp CiB7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKIAlJdGVtSWQJCXJpZ2h0aXRlbTsKQEAgLTE3 MzYsNiArMjAzNCw3IEBAIGJ0X3JpZ2h0X3BhZ2VfY2hlY2tfc2NhbmtleShCdHJlZUNoZWNr U3RhdGUgKnN0YXRlKQogCQkvKiBSZXR1cm4gZmlyc3QgZGF0YSBpdGVtIChpZiBhbnkpICov CiAJCXJpZ2h0aXRlbSA9IFBhZ2VHZXRJdGVtSWRDYXJlZnVsKHN0YXRlLCB0YXJnZXRuZXh0 LCByaWdodHBhZ2UsCiAJCQkJCQkJCQkJIFBfRklSU1REQVRBS0VZKG9wYXF1ZSkpOworCQkq cmlnaHRmaXJzdG9mZnNldCA9IFBfRklSU1REQVRBS0VZKG9wYXF1ZSk7CiAJfQogCWVsc2Ug aWYgKCFQX0lTTEVBRihvcGFxdWUpICYmCiAJCQkgbmxpbmUgPj0gT2Zmc2V0TnVtYmVyTmV4 dChQX0ZJUlNUREFUQUtFWShvcGFxdWUpKSkKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9h bWNoZWNrLnNnbWwgYi9kb2Mvc3JjL3NnbWwvYW1jaGVjay5zZ21sCmluZGV4IDVkNjFhMzM5 MzYuLmI2ZjNhZGM2MTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9hbWNoZWNrLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2FtY2hlY2suc2dtbApAQCAtNTgsNyArNTgsNyBAQAogICA8 dmFyaWFibGVsaXN0PgogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT4KLSAgICAgPGZ1 bmN0aW9uPmJ0X2luZGV4X2NoZWNrKGluZGV4IHJlZ2NsYXNzLCBoZWFwYWxsaW5kZXhlZCBi b29sZWFuKSByZXR1cm5zIHZvaWQ8L2Z1bmN0aW9uPgorICAgICA8ZnVuY3Rpb24+YnRfaW5k ZXhfY2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIGNoZWNr dW5pcXVlIGJvb2xlYW4pIHJldHVybnMgdm9pZDwvZnVuY3Rpb24+CiAgICAgIDxpbmRleHRl cm0+CiAgICAgICA8cHJpbWFyeT5idF9pbmRleF9jaGVjazwvcHJpbWFyeT4KICAgICAgPC9p bmRleHRlcm0+CkBAIC0xMTUsNyArMTE1LDEwIEBAIE9SREVSIEJZIGMucmVscGFnZXMgREVT QyBMSU1JVCAxMDsKICAgICAgIHRoYXQgc3BhbiBjaGlsZC9wYXJlbnQgcmVsYXRpb25zaGlw cywgYnV0IHdpbGwgdmVyaWZ5IHRoZQogICAgICAgcHJlc2VuY2Ugb2YgYWxsIGhlYXAgdHVw bGVzIGFzIGluZGV4IHR1cGxlcyB3aXRoaW4gdGhlIGluZGV4CiAgICAgICB3aGVuIDxwYXJh bWV0ZXI+aGVhcGFsbGluZGV4ZWQ8L3BhcmFtZXRlcj4gaXMKLSAgICAgIDxsaXRlcmFsPnRy dWU8L2xpdGVyYWw+LiAgV2hlbiBhIHJvdXRpbmUsIGxpZ2h0d2VpZ2h0IHRlc3QgZm9yCisg ICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPi4gIFdoZW4gPHBhcmFtZXRlcj5jaGVja3Vu aXF1ZTwvcGFyYW1ldGVyPgorICAgICAgaXMgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gPGZ1 bmN0aW9uPmJ0X2luZGV4X2NoZWNrPC9mdW5jdGlvbj4gd2lsbAorICAgICAgY2hlY2sgdGhh dCBubyBtb3JlIHRoYW4gb25lIGFtb25nIGR1cGxpY2F0ZSBlbnRyaWVzIGluIHVuaXF1ZQor ICAgICAgaW5kZXggaXMgdmlzaWJsZS4gIFdoZW4gYSByb3V0aW5lLCBsaWdodHdlaWdodCB0 ZXN0IGZvcgogICAgICAgY29ycnVwdGlvbiBpcyByZXF1aXJlZCBpbiBhIGxpdmUgcHJvZHVj dGlvbiBlbnZpcm9ubWVudCwgdXNpbmcKICAgICAgIDxmdW5jdGlvbj5idF9pbmRleF9jaGVj azwvZnVuY3Rpb24+IG9mdGVuIHByb3ZpZGVzIHRoZSBiZXN0CiAgICAgICB0cmFkZS1vZmYg YmV0d2VlbiB0aG9yb3VnaG5lc3Mgb2YgdmVyaWZpY2F0aW9uIGFuZCBsaW1pdGluZyB0aGUK QEAgLTEyNiw3ICsxMjksNyBAQCBPUkRFUiBCWSBjLnJlbHBhZ2VzIERFU0MgTElNSVQgMTA7 CiAKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+Ci0gICAgIDxmdW5jdGlvbj5idF9p bmRleF9wYXJlbnRfY2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xl YW4sIHJvb3RkZXNjZW5kIGJvb2xlYW4pIHJldHVybnMgdm9pZDwvZnVuY3Rpb24+CisgICAg IDxmdW5jdGlvbj5idF9pbmRleF9wYXJlbnRfY2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBh bGxpbmRleGVkIGJvb2xlYW4sIHJvb3RkZXNjZW5kIGJvb2xlYW4sIGNoZWNrdW5pcXVlIGJv b2xlYW4pIHJldHVybnMgdm9pZDwvZnVuY3Rpb24+CiAgICAgIDxpbmRleHRlcm0+CiAgICAg ICA8cHJpbWFyeT5idF9pbmRleF9wYXJlbnRfY2hlY2s8L3ByaW1hcnk+CiAgICAgIDwvaW5k ZXh0ZXJtPgpAQCAtMTM5LDcgKzE0MiwxMCBAQCBPUkRFUiBCWSBjLnJlbHBhZ2VzIERFU0Mg TElNSVQgMTA7CiAgICAgICBPcHRpb25hbGx5LCB3aGVuIHRoZSA8cGFyYW1ldGVyPmhlYXBh bGxpbmRleGVkPC9wYXJhbWV0ZXI+CiAgICAgICBhcmd1bWVudCBpcyA8bGl0ZXJhbD50cnVl PC9saXRlcmFsPiwgdGhlIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZQogICAgICAgcHJlc2VuY2Ug b2YgYWxsIGhlYXAgdHVwbGVzIHRoYXQgc2hvdWxkIGJlIGZvdW5kIHdpdGhpbiB0aGUKLSAg ICAgIGluZGV4LiAgV2hlbiB0aGUgb3B0aW9uYWwgPHBhcmFtZXRlcj5yb290ZGVzY2VuZDwv cGFyYW1ldGVyPgorICAgICAgaW5kZXguICBXaGVuIDxwYXJhbWV0ZXI+Y2hlY2t1bmlxdWU8 L3BhcmFtZXRlcj4KKyAgICAgIGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IDxmdW5jdGlv bj5idF9pbmRleF9wYXJlbnRfY2hlY2s8L2Z1bmN0aW9uPiB3aWxsCisgICAgICBjaGVjayB0 aGF0IG5vIG1vcmUgdGhhbiBvbmUgYW1vbmcgZHVwbGljYXRlIGVudHJpZXMgaW4gdW5pcXVl CisgICAgICBpbmRleCBpcyB2aXNpYmxlLiAgV2hlbiB0aGUgb3B0aW9uYWwgPHBhcmFtZXRl cj5yb290ZGVzY2VuZDwvcGFyYW1ldGVyPgogICAgICAgYXJndW1lbnQgaXMgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4sIHZlcmlmaWNhdGlvbiByZS1maW5kcwogICAgICAgdHVwbGVzIG9u IHRoZSBsZWFmIGxldmVsIGJ5IHBlcmZvcm1pbmcgYSBuZXcgc2VhcmNoIGZyb20gdGhlCiAg ICAgICByb290IHBhZ2UgZm9yIGVhY2ggdHVwbGUuICBUaGUgY2hlY2tzIHRoYXQgY2FuIGJl IHBlcmZvcm1lZCBieQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19hbWNoZWNr LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2FtY2hlY2suc2dtbAppbmRleCBjZmVmNmMw NDY1Li42MWRhY2YxZWU0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2FtY2hl Y2suc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2FtY2hlY2suc2dtbApAQCAtNDMy LDYgKzQzMiwxNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDwvcGFyYT4K ICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgIDx0ZXJtPjxvcHRpb24+LS1jaGVja3VuaXF1ZTwvb3B0aW9uPjwvdGVy bT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgRm9yIGVhY2ggaW5k ZXggd2l0aCB1bmlxdWUgY29uc3RyYWludCBjaGVja2VkLCB2ZXJpZnkgdGhhdCBubyBtb3Jl IHRoYW4KKyAgICAgICBvbmUgYW1vbmcgZHVwbGljYXRlIGVudHJpZXMgaXMgdmlzaWJsZSBp biB0aGUgaW5kZXggdXNpbmcgPHhyZWYgbGlua2VuZD0iYW1jaGVjayIvPidzCisgICAgICAg PG9wdGlvbj5jaGVja3VuaXF1ZTwvb3B0aW9uPiBvcHRpb24uCisgICAgICA8L3BhcmE+Cisg ICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CiAgICA8L3ZhcmlhYmxlbGlz dD4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svcGdfYW1j aGVjay5jIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYwppbmRleCBmZWEzNWU0 YjE0Li45NTZmYjZmNTY1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svcGdfYW1j aGVjay5jCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19hbWNoZWNrLmMKQEAgLTEwMiw2 ICsxMDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbWNoZWNrT3B0aW9ucwogCWJvb2wJCXBhcmVu dF9jaGVjazsKIAlib29sCQlyb290ZGVzY2VuZDsKIAlib29sCQloZWFwYWxsaW5kZXhlZDsK Kwlib29sCQljaGVja3VuaXF1ZTsKIAogCS8qIGhlYXAgYW5kIGJ0cmVlIGh5YnJpZCBvcHRp b24gKi8KIAlib29sCQlub19idHJlZV9leHBhbnNpb247CkBAIC0xMzIsNyArMTMzLDggQEAg c3RhdGljIEFtY2hlY2tPcHRpb25zIG9wdHMgPSB7CiAJLnBhcmVudF9jaGVjayA9IGZhbHNl LAogCS5yb290ZGVzY2VuZCA9IGZhbHNlLAogCS5oZWFwYWxsaW5kZXhlZCA9IGZhbHNlLAot CS5ub19idHJlZV9leHBhbnNpb24gPSBmYWxzZQorCS5ub19idHJlZV9leHBhbnNpb24gPSBm YWxzZSwKKwkuY2hlY2t1bmlxdWUgPSBmYWxzZQogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIg KnByb2duYW1lID0gTlVMTDsKQEAgLTE0OCw2ICsxNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBE YXRhYmFzZUluZm8KIHsKIAljaGFyCSAgICpkYXRuYW1lOwogCWNoYXIJICAgKmFtY2hlY2tf c2NoZW1hOyAvKiBlc2NhcGVkLCBxdW90ZWQgbGl0ZXJhbCAqLworCWJvb2wJCWlzX2NoZWNr dW5pcXVlOwogfSBEYXRhYmFzZUluZm87CiAKIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uSW5m bwpAQCAtMjY3LDYgKzI3MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ eyJoZWFwYWxsaW5kZXhlZCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxMX0sCiAJCXsicGFyZW50 LWNoZWNrIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEyfSwKIAkJeyJpbnN0YWxsLW1pc3Npbmci LCBvcHRpb25hbF9hcmd1bWVudCwgTlVMTCwgMTN9LAorCQl7ImNoZWNrdW5pcXVlIiwgbm9f YXJndW1lbnQsIE5VTEwsIDE0fSwKIAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwpAQCAt NDM0LDYgKzQzOCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlpZiAo b3B0YXJnKQogCQkJCQlvcHRzLmluc3RhbGxfc2NoZW1hID0gcGdfc3RyZHVwKG9wdGFyZyk7 CiAJCQkJYnJlYWs7CisJCQljYXNlIDE0OgorCQkJCW9wdHMuY2hlY2t1bmlxdWUgPSB0cnVl OworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5 IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KIAkJCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwpAQCAtNTg5 LDYgKzU5NiwzOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJCQlQUWRi KGNvbm4pLCBQUWdldHZhbHVlKHJlc3VsdCwgMCwgMSksIGFtY2hlY2tfc2NoZW1hKTsKIAkJ ZGF0LT5hbWNoZWNrX3NjaGVtYSA9IFBRZXNjYXBlSWRlbnRpZmllcihjb25uLCBhbWNoZWNr X3NjaGVtYSwKIAkJCQkJCQkJCQkJCSBzdHJsZW4oYW1jaGVja19zY2hlbWEpKTsKKworCQkv KgorCQkgKiBDaGVjayB0aGUgdmVyc2lvbiBvZiBhbWNoZWNrIGV4dGVuc2lvbi4gU2tpcCBy ZXF1ZXN0ZWQgdW5pcXVlCisJCSAqIGNvbnN0cmFpbnQgY2hlY2sgd2l0aCB3YXJuaW5nIGlm IGl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IGFtY2hlY2suCisJCSAqLworCQlpZiAob3B0 cy5jaGVja3VuaXF1ZSA9PSB0cnVlKQorCQl7CisJCQkvKgorCQkJICogTm93IGFtY2hlY2sg aGFzIG9ubHkgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb25zIGluIHRoZSBzdHJpbmcgYnV0CisJ CQkgKiB3ZSBhbHNvIHN1cHBvcnQgcmV2aXNpb24ganVzdCBpbiBjYXNlLiBOb3cgaXQgaXMg ZXhwZWN0ZWQgdG8gYmUKKwkJCSAqIHplcm8uCisJCQkgKi8KKwkJCWludAkJCXZtYWogPSAw LAorCQkJCQkJdm1pbiA9IDAsCisJCQkJCQl2cmV2ID0gMDsKKwkJCWNvbnN0IGNoYXIgKmFt Y2hlY2tfdmVyc2lvbiA9IFBRZ2V0dmFsdWUocmVzdWx0LCAwLCAxKTsKKworCQkJc3NjYW5m KGFtY2hlY2tfdmVyc2lvbiwgIiVkLiVkLiVkIiwgJnZtYWosICZ2bWluLCAmdnJldik7CisK KwkJCS8qCisJCQkgKiBjaGVja3VuaXF1ZSBvcHRpb24gaXMgc3VwcG9ydGVkIGluIGFtY2hl Y2sgc2luY2UgdmVyc2lvbiAxLjQKKwkJCSAqLworCQkJaWYgKCh2bWFqID09IDEgJiYgdm1p biA8IDQpIHx8IHZtYWogPT0gMCkKKwkJCXsKKwkJCQlwZ19sb2dfd2FybmluZygiLS1jaGVj a3VuaXF1ZSBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSBhbWNoZWNrICIKKwkJCQkJCQkg ICAidmVyc2lvbiBcIiVzXCIiLCBhbWNoZWNrX3ZlcnNpb24pOworCQkJCWRhdC0+aXNfY2hl Y2t1bmlxdWUgPSBmYWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlkYXQtPmlzX2NoZWNrdW5p cXVlID0gdHJ1ZTsKKwkJfQorCiAJCVBRY2xlYXIocmVzdWx0KTsKIAogCQljb21waWxlX3Jl bGF0aW9uX2xpc3Rfb25lX2RiKGNvbm4sICZyZWxhdGlvbnMsIGRhdCwgJnBhZ2VzdG90YWwp OwpAQCAtODQ1LDcgKzg4NCw4IEBAIHByZXBhcmVfYnRyZWVfY29tbWFuZChQUUV4cEJ1ZmZl ciBzcWwsIFJlbGF0aW9uSW5mbyAqcmVsLCBQR2Nvbm4gKmNvbm4pCiAJaWYgKG9wdHMucGFy ZW50X2NoZWNrKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihzcWwsCiAJCQkJCQkgICJTRUxFQ1Qg JXMuYnRfaW5kZXhfcGFyZW50X2NoZWNrKCIKLQkJCQkJCSAgImluZGV4IDo9IGMub2lkLCBo ZWFwYWxsaW5kZXhlZCA6PSAlcywgcm9vdGRlc2NlbmQgOj0gJXMpIgorCQkJCQkJICAiaW5k ZXggOj0gYy5vaWQsIGhlYXBhbGxpbmRleGVkIDo9ICVzLCByb290ZGVzY2VuZCA6PSAlcyAi CisJCQkJCQkgICIlcykiCiAJCQkJCQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBj LCBwZ19jYXRhbG9nLnBnX2luZGV4IGkgIgogCQkJCQkJICAiV0hFUkUgYy5vaWQgPSAldSAi CiAJCQkJCQkgICJBTkQgYy5vaWQgPSBpLmluZGV4cmVsaWQgIgpAQCAtODU0LDExICs4OTQs MTMgQEAgcHJlcGFyZV9idHJlZV9jb21tYW5kKFBRRXhwQnVmZmVyIHNxbCwgUmVsYXRpb25J bmZvICpyZWwsIFBHY29ubiAqY29ubikKIAkJCQkJCSAgcmVsLT5kYXRpbmZvLT5hbWNoZWNr X3NjaGVtYSwKIAkJCQkJCSAgKG9wdHMuaGVhcGFsbGluZGV4ZWQgPyAidHJ1ZSIgOiAiZmFs c2UiKSwKIAkJCQkJCSAgKG9wdHMucm9vdGRlc2NlbmQgPyAidHJ1ZSIgOiAiZmFsc2UiKSwK KwkJCQkJCSAgKHJlbC0+ZGF0aW5mby0+aXNfY2hlY2t1bmlxdWUgPyAiLCBjaGVja3VuaXF1 ZSA6PSB0cnVlIiA6ICIiKSwKIAkJCQkJCSAgcmVsLT5yZWxvaWQpOwogCWVsc2UKIAkJYXBw ZW5kUFFFeHBCdWZmZXIoc3FsLAogCQkJCQkJICAiU0VMRUNUICVzLmJ0X2luZGV4X2NoZWNr KCIKLQkJCQkJCSAgImluZGV4IDo9IGMub2lkLCBoZWFwYWxsaW5kZXhlZCA6PSAlcykiCisJ CQkJCQkgICJpbmRleCA6PSBjLm9pZCwgaGVhcGFsbGluZGV4ZWQgOj0gJXMgIgorCQkJCQkJ ICAiJXMpIgogCQkJCQkJICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmRleCBpICIKIAkJCQkJCSAgIldIRVJFIGMub2lkID0gJXUgIgogCQkJCQkJ ICAiQU5EIGMub2lkID0gaS5pbmRleHJlbGlkICIKQEAgLTg2Niw2ICs5MDgsNyBAQCBwcmVw YXJlX2J0cmVlX2NvbW1hbmQoUFFFeHBCdWZmZXIgc3FsLCBSZWxhdGlvbkluZm8gKnJlbCwg UEdjb25uICpjb25uKQogCQkJCQkJICAiQU5EIGkuaW5kaXNyZWFkeSBBTkQgaS5pbmRpc3Zh bGlkIEFORCBpLmluZGlzbGl2ZSIsCiAJCQkJCQkgIHJlbC0+ZGF0aW5mby0+YW1jaGVja19z Y2hlbWEsCiAJCQkJCQkgIChvcHRzLmhlYXBhbGxpbmRleGVkID8gInRydWUiIDogImZhbHNl IiksCisJCQkJCQkgIChyZWwtPmRhdGluZm8tPmlzX2NoZWNrdW5pcXVlID8gIiwgY2hlY2t1 bmlxdWUgOj0gdHJ1ZSIgOiAiIiksCiAJCQkJCQkgIHJlbC0+cmVsb2lkKTsKIH0KIApAQCAt MTE2Myw2ICsxMjA2LDcgQEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYo XygiICAgICAgLS1oZWFwYWxsaW5kZXhlZCAgICAgICAgICAgIGNoZWNrIHRoYXQgYWxsIGhl YXAgdHVwbGVzIGFyZSBmb3VuZCB3aXRoaW4gaW5kZXhlc1xuIikpOwogCXByaW50ZihfKCIg ICAgICAtLXBhcmVudC1jaGVjayAgICAgICAgICAgICAgY2hlY2sgaW5kZXggcGFyZW50L2No aWxkIHJlbGF0aW9uc2hpcHNcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1yb290ZGVzY2Vu ZCAgICAgICAgICAgICAgIHNlYXJjaCBmcm9tIHJvb3QgcGFnZSB0byByZWZpbmQgdHVwbGVz XG4iKSk7CisJcHJpbnRmKF8oIiAgICAgIC0tY2hlY2t1bmlxdWUgICAgICAgICAgICAgICBj aGVjayB1bmlxdWUgY29uc3RyYWludCBpZiBpbmRleCBpcyB1bmlxdWVcbiIpKTsKIAlwcmlu dGYoXygiXG5Db25uZWN0aW9uIG9wdGlvbnM6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLWgsIC0t aG9zdD1IT1NUTkFNRSAgICAgICAgICAgICBkYXRhYmFzZSBzZXJ2ZXIgaG9zdCBvciBzb2Nr ZXQgZGlyZWN0b3J5XG4iKSk7CiAJcHJpbnRmKF8oIiAgLXAsIC0tcG9ydD1QT1JUICAgICAg ICAgICAgICAgICBkYXRhYmFzZSBzZXJ2ZXIgcG9ydFxuIikpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19hbWNoZWNrL3QvMDAzX2NoZWNrLnBsIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3Qv MDAzX2NoZWNrLnBsCmluZGV4IDBjZjY3MDY1ZDYuLjE5YTI2OWMxYjggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfYW1jaGVjay90LzAwM19jaGVjay5wbAorKysgYi9zcmMvYmluL3BnX2Ft Y2hlY2svdC8wMDNfY2hlY2sucGwKQEAgLTI1Nyw2ICsyNTcsOSBAQCBmb3IgbXkgJGRibmFt ZSAocXcoZGIxIGRiMiBkYjMpKQogCiAJCQlDUkVBVEUgSU5ERVggdDFfc3BnaXN0IE9OICRz Y2hlbWEudDEgVVNJTkcgU1BHSVNUIChpcik7CiAJCQlDUkVBVEUgSU5ERVggdDJfc3BnaXN0 IE9OICRzY2hlbWEudDIgVVNJTkcgU1BHSVNUIChpcik7CisKKwkJCUNSRUFURSBVTklRVUUg SU5ERVggdDFfYnRyZWVfdW5pcXVlIE9OICRzY2hlbWEudDEgVVNJTkcgQlRSRUUgKGkpOwor CQkJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0Ml9idHJlZV91bmlxdWUgT04gJHNjaGVtYS50MiBV U0lORyBCVFJFRSAoaSk7CiAJCSkpOwogCX0KIH0KQEAgLTUxNyw0ICs1MjAsNDYgQEAgJG5v ZGUtPmNvbW1hbmRfY2hlY2tzX2FsbCgKIAkwLCBbJG5vX291dHB1dF9yZV0sIFskbm9fb3V0 cHV0X3JlXSwKIAkncGdfYW1jaGVjayBleGNsdWRpbmcgYWxsIGNvcnJ1cHQgc2NoZW1hcycp OwogCiskbm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKAorCVsKKwkJQGNtZCwgJy1zJywgJ3Mx JywgJy1pJywgJ3QxX2J0cmVlJywgJy0tcGFyZW50LWNoZWNrJywKKwkJJy0tY2hlY2t1bmlx dWUnLCAnZGIxJworCV0sCisJMiwKKwlbJGluZGV4X21pc3NpbmdfcmVsYXRpb25fZm9ya19y ZV0sCisJWyRub19vdXRwdXRfcmVdLAorCSdwZ19hbWNoZWNrIHNtb2tlIHRlc3QgLS1wYXJl bnQtY2hlY2sgLS1jaGVja3VuaXF1ZScpOworCiskbm9kZS0+Y29tbWFuZF9jaGVja3NfYWxs KAorCVsKKwkJQGNtZCwgJy1zJywgJ3MxJywgJy1pJywgJ3QxX2J0cmVlJywgJy0taGVhcGFs bGluZGV4ZWQnLAorCQknLS1yb290ZGVzY2VuZCcsICctLWNoZWNrdW5pcXVlJywgICdkYjEn CisJXSwKKwkyLAorCVskaW5kZXhfbWlzc2luZ19yZWxhdGlvbl9mb3JrX3JlXSwKKwlbJG5v X291dHB1dF9yZV0sCisJJ3BnX2FtY2hlY2sgc21va2UgdGVzdCAtLWhlYXBhbGxpbmRleGVk IC0tcm9vdGRlc2NlbmQgLS1jaGVja3VuaXF1ZScpOworCiskbm9kZS0+Y29tbWFuZF9jaGVj a3NfYWxsKAorCVsgQGNtZCwgJy0tY2hlY2t1bmlxdWUnLCAnLWQnLCAnZGIxJywgJy1kJywg J2RiMicsICctZCcsICdkYjMnLCAnLVMnLCAncyonIF0sCisJMCwgWyRub19vdXRwdXRfcmVd LCBbJG5vX291dHB1dF9yZV0sCisJJ3BnX2FtY2hlY2sgZXhjbHVkaW5nIGFsbCBjb3JydXB0 IHNjaGVtYXMgd2l0aCAtLWNoZWNrdW5pcXVlIG9wdGlvbicpOworCisjCisjIFNtb2tlIHRl c3QgZm9yIGNoZWNrdW5pcXVlIG9wdGlvbiBmb3Igbm90IHN1cHBvcnRlZCB2ZXJzaW9ucy4K KyMKKyRub2RlLT5zYWZlX3BzcWwoCisJJ2RiMycsIHEoCisJCURST1AgRVhURU5TSU9OIGFt Y2hlY2s7CisJCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjayBXSVRIIFNDSEVNQSBhbWNoZWNr X3NjaGVtYSBWRVJTSU9OICcxLjMnIDsKKykpOworCiskbm9kZS0+Y29tbWFuZF9jaGVja3Nf YWxsKAorCVsKKwkJQGNtZCwgJy0tY2hlY2t1bmlxdWUnLCAnZGIzJyBdLAorCQkwLAorCQlb JG5vX291dHB1dF9yZV0sCisJCVtxci9wZ19hbWNoZWNrOiB3YXJuaW5nOiAtLWNoZWNrdW5p cXVlIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFtY2hlY2sgdmVyc2lvbiAiMS4zIi8K KwldLAorCSdwZ19hbWNoZWNrIHNtb2tlIHRlc3QgLS1jaGVja3VuaXF1ZScpOwogZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDVfb3BjbGFz c19kYW1hZ2UucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDVfb3BjbGFzc19kYW1hZ2Uu cGwKaW5kZXggY2UzNzZmMjM5Yy4uODFkMzkyYTM0ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19hbWNoZWNrL3QvMDA1X29wY2xhc3NfZGFtYWdlLnBsCisrKyBiL3NyYy9iaW4vcGdfYW1j aGVjay90LzAwNV9vcGNsYXNzX2RhbWFnZS5wbApAQCAtMjIsMTQgKzIyLDMzIEBAICRub2Rl LT5zYWZlX3BzcWwoCiAJQ1JFQVRFIEZVTkNUSU9OIGludDRfYXNjX2NtcCAoYSBpbnQ0LCBi IGludDQpIFJFVFVSTlMgaW50IExBTkdVQUdFIHNxbCBBUyAkJAogCQlTRUxFQ1QgQ0FTRSBX SEVOICQxID0gJDIgVEhFTiAwIFdIRU4gJDEgPiAkMiBUSEVOIDEgRUxTRSAtMSBFTkQ7ICQk OwogCisJQ1JFQVRFIEZVTkNUSU9OIG9rX2NtcCAoaW50NCwgaW50NCkKKwlSRVRVUk5TIGlu dCBMQU5HVUFHRSBzcWwgQVMKKwkkJAorCQlTRUxFQ1QKKwkJCUNBU0UgV0hFTiAkMSA8ICQy IFRIRU4gLTEKKwkJCQkgV0hFTiAkMSA+ICQyIFRIRU4gIDEKKwkJCQkgRUxTRSAwCisJCQlF TkQ7CisJJCQ7CisKIAlDUkVBVEUgT1BFUkFUT1IgQ0xBU1MgaW50NF9maWNrbGVfb3BzIEZP UiBUWVBFIGludDQgVVNJTkcgYnRyZWUgQVMKIAkgICAgT1BFUkFUT1IgMSA8IChpbnQ0LCBp bnQ0KSwgT1BFUkFUT1IgMiA8PSAoaW50NCwgaW50NCksCiAJICAgIE9QRVJBVE9SIDMgPSAo aW50NCwgaW50NCksIE9QRVJBVE9SIDQgPj0gKGludDQsIGludDQpLAogCSAgICBPUEVSQVRP UiA1ID4gKGludDQsIGludDQpLCBGVU5DVElPTiAxIGludDRfYXNjX2NtcChpbnQ0LCBpbnQ0 KTsKIAorCUNSRUFURSBPUEVSQVRPUiBDTEFTUyBpbnQ0X3VuaXF1ZV9vcHMgRk9SIFRZUEUg aW50NCBVU0lORyBidHJlZSBBUworCQlPUEVSQVRPUiAxIDwgKGludDQsIGludDQpLCBPUEVS QVRPUiAyIDw9IChpbnQ0LCBpbnQ0KSwKKwkJT1BFUkFUT1IgMyA9IChpbnQ0LCBpbnQ0KSwg T1BFUkFUT1IgNCA+PSAoaW50NCwgaW50NCksCisJCU9QRVJBVE9SIDUgPiAoaW50NCwgaW50 NCksIEZVTkNUSU9OIDEgb2tfY21wKGludDQsIGludDQpOworCiAJQ1JFQVRFIFRBQkxFIGlu dDR0YmwgKGkgaW50NCk7CiAJSU5TRVJUIElOVE8gaW50NHRibCAoU0VMRUNUICogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBncyk7CiAJQ1JFQVRFIElOREVYIGZpY2tsZWlkeCBP TiBpbnQ0dGJsIFVTSU5HIGJ0cmVlIChpIGludDRfZmlja2xlX29wcyk7CisJQ1JFQVRFIFVO SVFVRSBJTkRFWCBidHRlc3RfdW5pcXVlX2lkeAorCQkJCQkJT04gaW50NHRibAorCQkJCQkJ VVNJTkcgYnRyZWUgKGkgaW50NF91bmlxdWVfb3BzKQorCQkJCQkJV0lUSCAoZGVkdXBsaWNh dGVfaXRlbXMgPSBvZmYpOwogKSk7CiAKICMgV2UgaGF2ZSBub3QgeWV0IGJyb2tlbiB0aGUg aW5kZXgsIHNvIHdlIHNob3VsZCBnZXQgbm8gY29ycnVwdGlvbgpAQCAtNTcsNCArNzYsNTAg QEAgJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbCgKIAkncGdfYW1jaGVjayBhbGwgc2NoZW1h cywgdGFibGVzIGFuZCBpbmRleGVzIHJlcG9ydHMgZmlja2xlaWR4IGNvcnJ1cHRpb24nCiAp OwogCisjCisjIENoZWNrIHVuaXF1ZSBjb25zdHJhaW50cworIworCisjIFJlcGFpciBicm9r ZW4gb3BjbGFzcyBmb3IgY2hlY2sgdW5pcXVlIHRlc3RzLgorJG5vZGUtPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxKAorCVVQREFURSBwZ19jYXRhbG9nLnBnX2FtcHJvYworCQlTRVQg YW1wcm9jID0gJ2ludDRfYXNjX2NtcCc6OnJlZ3Byb2MKKwkJV0hFUkUgYW1wcm9jID0gJ2lu dDRfZGVzY19jbXAnOjpyZWdwcm9jCispKTsKKworIyBXZSBzaG91bGQgZ2V0IG5vIGNvcnJ1 cHRpb25zCiskbm9kZS0+Y29tbWFuZF9saWtlKAorCVsgJ3BnX2FtY2hlY2snLCAnLS1jaGVj a3VuaXF1ZScsICctcCcsICRub2RlLT5wb3J0LCAncG9zdGdyZXMnIF0sCisJcXIvXiQvLAor CSdwZ19hbWNoZWNrIGFsbCBzY2hlbWFzLCB0YWJsZXMgYW5kIGluZGV4ZXMgcmVwb3J0cyBu byBjb3JydXB0aW9uJyk7CisKKyMgQnJlYWsgb3BjbGFzcyBmb3IgY2hlY2sgdW5pcXVlIHRl c3RzLgorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBiYWRfY21wIChpbnQ0LCBpbnQ0KQorCVJFVFVSTlMgaW50IExBTkdVQUdFIHNxbCBB UworCSQkCisJCVNFTEVDVAorCQkJQ0FTRSBXSEVOICgkMSA9IDc2OCBBTkQgJDIgPSA3Njkp IE9SCisJCQkJCSAgKCQxID0gNzY5IEFORCAkMiA9IDc2OCkgVEhFTiAwCisJCQkJIFdIRU4g JDEgPCAkMiBUSEVOIC0xCisJCQkJIFdIRU4gJDEgPiAkMiBUSEVOICAxCisJCQkJIEVMU0Ug MAorCQkJRU5EOworCSQkOworCisJVVBEQVRFIHBnX2NhdGFsb2cucGdfYW1wcm9jCisJCVNF VCBhbXByb2MgPSAnYmFkX2NtcCc6OnJlZ3Byb2MKKwkJV0hFUkUgYW1wcm9jID0gJ29rX2Nt cCc6OnJlZ3Byb2MKKykpOworCisjIFVuaXF1ZSBpbmRleCBjb3JydXB0aW9uIHNob3VsZCBu b3cgYmUgcmVwb3J0ZWQKKyRub2RlLT5jb21tYW5kX2NoZWNrc19hbGwoCisJWyAncGdfYW1j aGVjaycsICctLWNoZWNrdW5pcXVlJywgJy1wJywgJG5vZGUtPnBvcnQsICdwb3N0Z3Jlcycg XSwKKwkyLAorCVtxci9pbmRleCB1bmlxdWVuZXNzIGlzIHZpb2xhdGVkIGZvciBpbmRleCAi YnR0ZXN0X3VuaXF1ZV9pZHgiL10sCisJW10sCisJJ3BnX2FtY2hlY2sgYWxsIHNjaGVtYXMs IHRhYmxlcyBhbmQgaW5kZXhlcyByZXBvcnRzIGJ0dGVzdF91bmlxdWVfaWR4IGNvcnJ1cHRp b24nCispOwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjMxLjAud2luZG93cy4xCgo= --------------RF7NxRKK2gV0CQVeZdvegmJD--