Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sy3e0-00E14P-Bf for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Oct 2024 06:24:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sy3dy-003ktp-O4 for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Oct 2024 06:24:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sy3dy-003ktK-3d for pgsql-hackers@lists.postgresql.org; Tue, 08 Oct 2024 06:24:26 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sy3do-00393V-Vf for pgsql-hackers@postgresql.org; Tue, 08 Oct 2024 06:24:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1728368655; bh=CQVcFPXFbtuhoxvuOk3RWj4FO4FrNbBBYK0ck23vSWA=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=bqd5Gn5xsIKLsUyCeGJFb4sAY2tEg6WW4x5fBdVEmo/ZDg2XaHGb5A3k/+tT3+udt L7icXiznnlQqzpMu3sSzfFAfsa+k9TK33q5T4uwPHjPgaAs0GvCqzMYe6eeehA3XQV g0c/vLLz4QykBoTyGqWTMWrvJzG5nt9EI/LGHWXoYJjHeCPzrErmkUquOSyXXWxZzg ccnhnHH6Z4F/Y3vKJbfmB3k6v8gyZLE6ZtNBzDuXbPIXh2TJOGdwaJwZp8aPESjOHZ m6ttrlaavEv3u2XRvlLeAVszO7igykcNEjY9VYcwEuVnqfTwJ2WAn5CZlcSqWYxaJf 384W1XgC2r7Xg== Received: from mail.postgrespro.ru (unknown [192.168.2.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 7432660796; Tue, 8 Oct 2024 09:24:15 +0300 (MSK) MIME-Version: 1.0 Date: Tue, 08 Oct 2024 09:24:15 +0300 From: Alexander Pyhalov To: Michael Paquier Cc: Pgsql Hackers , Ashutosh Bapat Subject: Re: Partition-wise join with whole row vars In-Reply-To: References: <5AE84FBF.3040905@lab.ntt.co.jp> <5AF2E09F.9060208@lab.ntt.co.jp> <5AF440C2.3040805@lab.ntt.co.jp> <5AF59415.10309@lab.ntt.co.jp> <2253e9091b300d868d524c0943fa8796@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.9 Message-ID: <0353ee8a1b6799585e69ad20d17f6858@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_82822d962eeefaceae0ab5a6f011bbf7" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/10/08 03:02:00 #26715843 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Michael Paquier писал(а) 2024-10-08 05:01: > On Fri, Jul 12, 2024 at 02:39:13PM +0300, Alexander Pyhalov wrote: >> I was looking at enabling partition-wise join with whole row vars. My >> main >> motivation >> was to enable push down DML with partition-wise join in postgres_fdw. >> The >> work is >> based on the earlier patches of Ashutosh Bapat [1]. > > The CF bot is red for some time now. Please provide a rebase. Hi. Attaching rebased patches. -- Best regards, Alexander Pyhalov, Postgres Professional --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0006-postgres_fdw-fix-partition-wise-DML.patch Content-Disposition: attachment; filename=v2-0006-postgres_fdw-fix-partition-wise-DML.patch; size=23141 RnJvbSBjZDdjNTZkYWI3MGM0OGI3ZjJhMTA0MDQxZWU2YmI3MzQwNTBmNGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBXZWQsIDI3IERlYyAyMDIzIDE3OjMxOjIzICswMzAwClN1YmplY3Q6IFtQ QVRDSCA2LzZdIHBvc3RncmVzX2ZkdzogZml4IHBhcnRpdGlvbi13aXNlIERNTAoKLS0tCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDE2MCArKysrKysrKysr KysrKysrKysKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8 ICA5OCArKysrKysrKysrLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5z cWwgICAgIHwgIDM4ICsrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgICAgICAgfCAgMzIgKysrLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaCAg ICAgICAgICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMzIzIGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2Uu YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBmODc5ZmYzMTAwZi4uZDRj NjU3ZmE0ZDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYworKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTIzMDksNyArMjMwOSw3IEBAIGRl cGFyc2VEaXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAog CiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJVUERBVEUgIik7CiAJZGVwYXJzZVJlbGF0 aW9uKGJ1ZiwgcmVsKTsKLQlpZiAoZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9J TlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkpCiAJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiICVzJWQiLCBSRUxfQUxJQVNfUFJFRklYLCBydGluZGV4KTsKIAlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIiBTRVQgIik7CiAKQEAgLTIzMzYsNyArMjMzNiw3IEBAIGRlcGFyc2VE aXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAogCiAJcmVz ZXRfdHJhbnNtaXNzaW9uX21vZGVzKG5lc3RsZXZlbCk7CiAKLQlpZiAoZm9yZWlnbnJlbC0+cmVs b3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkp CiAJewogCQlMaXN0CSAgICppZ25vcmVfY29uZHMgPSBOSUw7CiAKQEAgLTIzNTIsNyArMjM1Miw3 IEBAIGRlcGFyc2VEaXJlY3RVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpy b290LAogCWlmIChhZGRpdGlvbmFsX2NvbmRzICE9IE5JTCkKIAkJbGlzdF9mcmVlX2RlZXAoYWRk aXRpb25hbF9jb25kcyk7CiAKLQlpZiAoZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRf Sk9JTlJFTCkKKwlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkpCiAJCWRlcGFyc2VFeHBsaWNp dFRhcmdldExpc3QocmV0dXJuaW5nTGlzdCwgdHJ1ZSwgcmV0cmlldmVkX2F0dHJzLAogCQkJCQkJ CQkgICZjb250ZXh0KTsKIAllbHNlCkBAIC0yNDE3LDEwICsyNDE3LDEwIEBAIGRlcGFyc2VEaXJl Y3REZWxldGVTcWwoU3RyaW5nSW5mbyBidWYsIFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhidWYsICJERUxFVEUgRlJPTSAiKTsKIAlkZXBhcnNlUmVsYXRpb24o YnVmLCByZWwpOwotCWlmIChmb3JlaWducmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9KT0lOUkVM KQorCWlmIChJU19KT0lOX1JFTChmb3JlaWducmVsKSkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICIgJXMlZCIsIFJFTF9BTElBU19QUkVGSVgsIHJ0aW5kZXgpOwogCi0JaWYgKGZvcmVpZ25yZWwt PnJlbG9wdGtpbmQgPT0gUkVMT1BUX0pPSU5SRUwpCisJaWYgKElTX0pPSU5fUkVMKGZvcmVpZ25y ZWwpKQogCXsKIAkJTGlzdAkgICAqaWdub3JlX2NvbmRzID0gTklMOwogCkBAIC0yNDM1LDcgKzI0 MzUsNyBAQCBkZXBhcnNlRGlyZWN0RGVsZXRlU3FsKFN0cmluZ0luZm8gYnVmLCBQbGFubmVySW5m byAqcm9vdCwKIAlpZiAoYWRkaXRpb25hbF9jb25kcyAhPSBOSUwpCiAJCWxpc3RfZnJlZV9kZWVw KGFkZGl0aW9uYWxfY29uZHMpOwogCi0JaWYgKGZvcmVpZ25yZWwtPnJlbG9wdGtpbmQgPT0gUkVM T1BUX0pPSU5SRUwpCisJaWYgKElTX0pPSU5fUkVMKGZvcmVpZ25yZWwpKQogCQlkZXBhcnNlRXhw bGljaXRUYXJnZXRMaXN0KHJldHVybmluZ0xpc3QsIHRydWUsIHJldHJpZXZlZF9hdHRycywKIAkJ CQkJCQkJICAmY29udGV4dCk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggNDZmMDA1MzA3ZTEuLmYxYWYwNmI3YTZiIDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0Cisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTEw MTg0LDYgKzEwMTg0LDE2NiBAQCBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVS IEpPSU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hCiAoNCByb3dzKQogCiBy ZXNldCBlbmFibGVfc29ydDsKKy0tIHRlc3QgcGFydGl0aW9uLXdpc2UgRE1MCitFWFBMQUlOIChD T1NUUyBPRkYsIFZFUkJPU0UpCitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBy dDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDA7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBk YXRlIG9uIHB1YmxpYy5mcHJ0MQorICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZ0cHJ0MV9w MSBmcHJ0MV8xCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AyIGZwcnQxXzIK KyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAg ICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1YmxpYy5mcHJ0MV9wMSByMyBTRVQgYiA9IChyMy5iICsg MSkgRlJPTSBwdWJsaWMuZnBydDJfcDEgcjUgV0hFUkUgKChyMy5hID0gcjUuYikpIEFORCAoKChy NS5hICUgMjUpID0gMCkpCisgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMuZnBydDFfcDIgcjQgU0VUIGIgPSAocjQuYiAr IDEpIEZST00gcHVibGljLmZwcnQyX3AyIHI2IFdIRVJFICgocjQuYSA9IHI2LmIpKSBBTkQgKCgo cjYuYSAlIDI1KSA9IDApKQorKDggcm93cykKKworVVBEQVRFIGZwcnQxIFNFVCBiPWZwcnQxLmIr MSBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAw OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorVVBEQVRFIGZwcnQxIFNFVCBiPShmcHJ0 MS5hK2ZwcnQyLmIpLzIgRlJPTSBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQgZnBy dDIuYSAlIDI1ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLmZw cnQxCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AxIGZwcnQxXzEKKyAgIEZv cmVpZ24gVXBkYXRlIG9uIHB1YmxpYy5mdHBydDFfcDIgZnBydDFfMgorICAgLT4gIEFwcGVuZAor ICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBV UERBVEUgcHVibGljLmZwcnQxX3AxIHIzIFNFVCBiID0gKChyMy5hICsgcjUuYikgLyAyKSBGUk9N IHB1YmxpYy5mcHJ0Ml9wMSByNSBXSEVSRSAoKHIzLmEgPSByNS5iKSkgQU5EICgoKHI1LmEgJSAy NSkgPSAwKSkKKyAgICAgICAgIC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogVVBEQVRFIHB1YmxpYy5mcHJ0MV9wMiByNCBTRVQgYiA9ICgocjQuYSArIHI2LmIp IC8gMikgRlJPTSBwdWJsaWMuZnBydDJfcDIgcjYgV0hFUkUgKChyNC5hID0gcjYuYikpIEFORCAo KChyNi5hICUgMjUpID0gMCkpCisoOCByb3dzKQorCitVUERBVEUgZnBydDEgU0VUIGI9KGZwcnQx LmErZnBydDIuYikvMiBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0 Mi5hICUgMjUgPSAwOworLS0gcmV0dXJuaW5nIHdob2xlIHJvdyByZWZlcmVuY2VzCitFWFBMQUlO IChDT1NUUyBPRkYpCitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hF UkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HIGZwcnQx LCBmcHJ0MjsKKyAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIGZwcnQxCisgICBG b3JlaWduIFVwZGF0ZSBvbiBmdHBydDFfcDEgZnBydDFfMQorICAgRm9yZWlnbiBVcGRhdGUgb24g ZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFVw ZGF0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisoNiByb3dzKQorCitVUERBVEUgZnBy dDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5E IGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HIGZwcnQxLCBmcHJ0MjsKKyAgICAgZnBydDEgICAg ICB8ICAgICBmcHJ0MiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisg KDAsMSwwMDAwKSAgICAgfCAoMCwwLDAwMDApCisgKDE1MCwxNTEsMDAwMykgfCAoMTUwLDE1MCww MDAzKQorICgyNTAsMjUxLDAwMDUpIHwgKDI1MCwyNTAsMDAwNSkKKyAoNDAwLDQwMSwwMDA4KSB8 ICg0MDAsNDAwLDAwMDgpCisoNCByb3dzKQorCistLSB0YWJsZW9pZHMgYXJlIHJldHVybmVkIGNv cnJlY3RseQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEu YiArIDEgRlJPTSBmcHJ0MiB0MiBXSEVSRSB0MS5hID0gdDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAg UkVUVVJOSU5HIHQyLnRhYmxlb2lkOjpyZWdjbGFzczsKKyAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBk YXRlIG9uIGZwcnQxIHQxCisgICBGb3JlaWduIFVwZGF0ZSBvbiBmdHBydDFfcDEgdDFfMQorICAg Rm9yZWlnbiBVcGRhdGUgb24gZnRwcnQxX3AyIHQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAg IC0+ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlCisoNiByb3dz KQorCitVUERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIFdIRVJF IHQxLmEgPSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgdDIudGFibGVvaWQ6OnJl Z2NsYXNzOworIHRhYmxlb2lkICAKKy0tLS0tLS0tLS0tCisgZnRwcnQyX3AxCisgZnRwcnQyX3Ax CisgZnRwcnQyX3AyCisgZnRwcnQyX3AyCisoNCByb3dzKQorCistLSBqb2luIG9mIHNldmVyYWwg dGFibGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitVUERBVEUgZnBydDEgdDEgU0VU IGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyLCBmcHJ0MSB0MyBXSEVSRSB0MS5hID0gdDIuYiBB TkQgdDIuYiA9IHQzLmEgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLmZwcnQxIHQxCisgICBPdXRwdXQ6IHQx XzEuYSwgdDFfMS5iLCB0MV8xLmMsIHQyLmEsIHQyLmIsIHQyLmMsIHQzLmEsIHQzLmIsIHQzLmMK KyAgIEZvcmVpZ24gVXBkYXRlIG9uIHB1YmxpYy5mdHBydDFfcDEgdDFfMQorICAgRm9yZWlnbiBV cGRhdGUgb24gcHVibGljLmZ0cHJ0MV9wMiB0MV8yCisgICAtPiAgQXBwZW5kCisgICAgICAgICAt PiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJs aWMuZnBydDFfcDEgcjQgU0VUIGIgPSAocjQuYiArIDEpIEZST00gKHB1YmxpYy5mcHJ0Ml9wMSBy NiBJTk5FUiBKT0lOIHB1YmxpYy5mcHJ0MV9wMSByOCBPTiAoVFJVRSkpIFdIRVJFICgocjQuYSA9 IHI4LmEpKSBBTkQgKChyNC5hID0gcjYuYikpIEFORCAoKChyNC5hICUgMjUpID0gMCkpIFJFVFVS TklORyByNC5hLCByNC5iLCByNC5jLCByNi5hLCByNi5iLCByNi5jLCByOC5hLCByOC5iLCByOC5j CisgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6 IFVQREFURSBwdWJsaWMuZnBydDFfcDIgcjUgU0VUIGIgPSAocjUuYiArIDEpIEZST00gKHB1Ymxp Yy5mcHJ0Ml9wMiByNyBJTk5FUiBKT0lOIHB1YmxpYy5mcHJ0MV9wMiByOSBPTiAoVFJVRSkpIFdI RVJFICgocjUuYSA9IHI5LmEpKSBBTkQgKChyNS5hID0gcjcuYikpIEFORCAoKChyNS5hICUgMjUp ID0gMCkpIFJFVFVSTklORyByNS5hLCByNS5iLCByNS5jLCByNy5hLCByNy5iLCByNy5jLCByOS5h LCByOS5iLCByOS5jCisoOSByb3dzKQorCitVUERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsg MSBGUk9NIGZwcnQyIHQyLCBmcHJ0MSB0MyBXSEVSRSB0MS5hID0gdDIuYiBBTkQgdDIuYiA9IHQz LmEgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICBhICB8ICBiICB8ICBjICAgfCAg YSAgfCAgYiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSst LS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tCisgICAwIHwgICAzIHwgMDAwMCB8 ICAgMCB8ICAgMCB8IDAwMDAgfCAgIDAgfCAgIDIgfCAwMDAwCisgMTUwIHwgMTUzIHwgMDAwMyB8 IDE1MCB8IDE1MCB8IDAwMDMgfCAxNTAgfCAxNTIgfCAwMDAzCisgMjUwIHwgMjUzIHwgMDAwNSB8 IDI1MCB8IDI1MCB8IDAwMDUgfCAyNTAgfCAyNTIgfCAwMDA1CisgNDAwIHwgNDAzIHwgMDAwOCB8 IDQwMCB8IDQwMCB8IDAwMDggfCA0MDAgfCA0MDIgfCAwMDA4CisoNCByb3dzKQorCistLSBsZWZ0 IGpvaW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1VQREFURSBmcHJ0MSB0MSBTRVQg YiA9IHQxLmIgKyAxIEZST00gZnBydDIgdDIgTEVGVCBKT0lOIGZwcnQxIHQzIE9OICh0Mi5iID0g dDMuYSkgV0hFUkUgdDEuYSA9IHQyLmIgQU5EIHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwdWJsaWMuZnBydDEgdDEKKyAgIE91dHB1dDogdDFf MS5hLCB0MV8xLmIsIHQxXzEuYywgdDIuYSwgdDIuYiwgdDIuYywgdDMuYSwgdDMuYiwgdDMuYwor ICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZ0cHJ0MV9wMSB0MV8xCisgICBGb3JlaWduIFVw ZGF0ZSBvbiBwdWJsaWMuZnRwcnQxX3AyIHQxXzIKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ ICBGb3JlaWduIFVwZGF0ZQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1Ymxp Yy5mcHJ0MV9wMSByNSBTRVQgYiA9IChyNS5iICsgMSkgRlJPTSAocHVibGljLmZwcnQyX3AxIHI3 IExFRlQgSk9JTiBwdWJsaWMuZnBydDFfcDEgcjkgT04gKCgocjcuYiA9IHI5LmEpKSkpIFdIRVJF ICgocjUuYSA9IHI3LmIpKSBBTkQgKCgocjUuYSAlIDI1KSA9IDApKSBSRVRVUk5JTkcgcjUuYSwg cjUuYiwgcjUuYywgcjcuYSwgcjcuYiwgcjcuYywgcjkuYSwgcjkuYiwgcjkuYworICAgICAgICAg LT4gIEZvcmVpZ24gVXBkYXRlCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVi bGljLmZwcnQxX3AyIHI2IFNFVCBiID0gKHI2LmIgKyAxKSBGUk9NIChwdWJsaWMuZnBydDJfcDIg cjggTEVGVCBKT0lOIHB1YmxpYy5mcHJ0MV9wMiByMTAgT04gKCgocjguYiA9IHIxMC5hKSkpKSBX SEVSRSAoKHI2LmEgPSByOC5iKSkgQU5EICgoKHI2LmEgJSAyNSkgPSAwKSkgUkVUVVJOSU5HIHI2 LmEsIHI2LmIsIHI2LmMsIHI4LmEsIHI4LmIsIHI4LmMsIHIxMC5hLCByMTAuYiwgcjEwLmMKKyg5 IHJvd3MpCisKK1VQREFURSBmcHJ0MSB0MSBTRVQgYiA9IHQxLmIgKyAxIEZST00gZnBydDIgdDIg TEVGVCBKT0lOIGZwcnQxIHQzIE9OICh0Mi5iID0gdDMuYSkgV0hFUkUgdDEuYSA9IHQyLmIgQU5E IHQxLmEgJSAyNSA9IDAgIFJFVFVSTklORyAqOworICBhICB8ICBiICB8ICBjICAgfCAgYSAgfCAg YiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSst LS0tLSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tCisgICAwIHwgICA0IHwgMDAwMCB8ICAgMCB8 ICAgMCB8IDAwMDAgfCAgIDAgfCAgIDMgfCAwMDAwCisgMTUwIHwgMTU0IHwgMDAwMyB8IDE1MCB8 IDE1MCB8IDAwMDMgfCAxNTAgfCAxNTMgfCAwMDAzCisgMjUwIHwgMjU0IHwgMDAwNSB8IDI1MCB8 IDI1MCB8IDAwMDUgfCAyNTAgfCAyNTMgfCAwMDA1CisgNDAwIHwgNDA0IHwgMDAwOCB8IDQwMCB8 IDQwMCB8IDAwMDggfCA0MDAgfCA0MDMgfCAwMDA4CisoNCByb3dzKQorCistLSBkZWxldGUKK0VY UExBSU4gKENPU1RTIE9GRikKK0RFTEVURSBGUk9NIGZwcnQxIFVTSU5HIGZwcnQyIFdIRVJFIGZw cnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMzAgPSAyOTsKKyAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgRGVsZXRlIG9uIGZwcnQxCisgICBGb3JlaWduIERlbGV0ZSBvbiBmdHBydDFfcDEg ZnBydDFfMQorICAgRm9yZWlnbiBEZWxldGUgb24gZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIERlbGV0ZQorICAgICAgICAgLT4gIEZvcmVpZ24g RGVsZXRlCisoNiByb3dzKQorCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBm cHJ0MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDMwID0gMjk7CitFWFBMQUlOIChDT1NUUyBP RkYpCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIu YiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgKjsKKyAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRGVsZXRlIG9uIGZwcnQxCisgICBGb3JlaWduIERlbGV0ZSBvbiBmdHBydDFfcDEgZnBy dDFfMQorICAgRm9yZWlnbiBEZWxldGUgb24gZnRwcnQxX3AyIGZwcnQxXzIKKyAgIC0+ICBBcHBl bmQKKyAgICAgICAgIC0+ICBGb3JlaWduIERlbGV0ZQorICAgICAgICAgLT4gIEZvcmVpZ24gRGVs ZXRlCisoNiByb3dzKQorCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0 MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgKjsKKyAgYSAgfCAg YiAgfCAgYyAgIHwgIGEgIHwgIGIgIHwgIGMgICAKKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSst LS0tLSstLS0tLS0KKyAgIDAgfCAgIDQgfCAwMDAwIHwgICAwIHwgICAwIHwgMDAwMAorIDE1MCB8 IDE1NCB8IDAwMDMgfCAxNTAgfCAxNTAgfCAwMDAzCisgMjUwIHwgMjU0IHwgMDAwNSB8IDI1MCB8 IDI1MCB8IDAwMDUKKyA0MDAgfCA0MDQgfCAwMDA4IHwgNDAwIHwgNDAwIHwgMDAwOAorKDQgcm93 cykKKwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IHRlc3QgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGVzCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jCmluZGV4IDI2ZmUxNmNjMmZhLi44MGM3NmU3MzU0OSAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LmMKQEAgLTI0NSw2ICsyNDUsOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ0Zkd0RpcmVj dE1vZGlmeVN0YXRlCiAJQXR0ck51bWJlcglvaWRBdHRubzsJCS8qIGF0dG51bSBvZiBpbnB1dCBv aWQgY29sdW1uICovCiAJYm9vbAkJaGFzU3lzdGVtQ29sczsJLyogYXJlIHRoZXJlIHN5c3RlbSBj b2x1bW5zIG9mIHJlc3VsdFJlbD8gKi8KIAorCUxpc3QJICAgKnRpZEF0dG5vczsJCS8qIGF0dG5v cyBvZiBvdXRwdXQgdGlkIGNvbHVtbnMgKi8KKwlMaXN0CSAgICp0aWRWYXJub3M7CQkvKiB2YXJu b3Mgb2Ygb3V0cHV0IHRpZCBjb2x1bW5zICovCisKIAkvKiB3b3JraW5nIG1lbW9yeSBjb250ZXh0 ICovCiAJTWVtb3J5Q29udGV4dCB0ZW1wX2N4dDsJCS8qIGNvbnRleHQgZm9yIHBlci10dXBsZSB0 ZW1wb3JhcnkgZGF0YSAqLwogfSBQZ0Zkd0RpcmVjdE1vZGlmeVN0YXRlOwpAQCAtMjQ4Miw2ICsy NDg1LDcgQEAgcG9zdGdyZXNQbGFuRGlyZWN0TW9kaWZ5KFBsYW5uZXJJbmZvICpyb290LAogCUxp c3QJICAgKnBhcmFtc19saXN0ID0gTklMOwogCUxpc3QJICAgKnJldHVybmluZ0xpc3QgPSBOSUw7 CiAJTGlzdAkgICAqcmV0cmlldmVkX2F0dHJzID0gTklMOworCVJlbGlkcwkJY2hpbGRfcmVsaWRz ID0gTlVMTDsKIAogCS8qCiAJICogRGVjaWRlIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBtb2RpZnkg YSBmb3JlaWduIHRhYmxlIGRpcmVjdGx5LgpAQCAtMjUxMyw2ICsyNTE3LDEyIEBAIHBvc3RncmVz UGxhbkRpcmVjdE1vZGlmeShQbGFubmVySW5mbyAqcm9vdCwKIAkJZm9yZWlnbnJlbCA9IGZpbmRf am9pbl9yZWwocm9vdCwgZnNjYW4tPmZzX3JlbGlkcyk7CiAJCS8qIFdlIHNob3VsZCBoYXZlIGEg cmVsIGZvciB0aGlzIGZvcmVpZ24gam9pbi4gKi8KIAkJQXNzZXJ0KGZvcmVpZ25yZWwpOworCisJ CS8qCisJCSAqIElmIGl0J3MgYSBjaGlsZCBqb2lucmVsLCByZWNvcmQgcmVsaWRzIHRvIHRyYW5z bGF0ZS4KKwkJICovCisJCWlmIChJU19PVEhFUl9SRUwoZm9yZWlnbnJlbCkpCisJCQljaGlsZF9y ZWxpZHMgPSBmb3JlaWducmVsLT5yZWxpZHM7CiAJfQogCWVsc2UKIAkJZm9yZWlnbnJlbCA9IHJv b3QtPnNpbXBsZV9yZWxfYXJyYXlbcmVzdWx0UmVsYXRpb25dOwpAQCAtMjUzMiw3ICsyNTQyLDcg QEAgcG9zdGdyZXNQbGFuRGlyZWN0TW9kaWZ5KFBsYW5uZXJJbmZvICpyb290LAogCQkgKiBUaGUg ZXhwcmVzc2lvbnMgb2YgY29uY2VybiBhcmUgdGhlIGZpcnN0IE4gY29sdW1ucyBvZiB0aGUgcHJv Y2Vzc2VkCiAJCSAqIHRhcmdldGxpc3QsIHdoZXJlIE4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgcmVs J3MgdXBkYXRlX2NvbG5vcy4KIAkJICovCi0JCWdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRs aXN0KHJvb3QsIHJlc3VsdFJlbGF0aW9uLAorCQlnZXRfdHJhbnNsYXRlZF91cGRhdGVfdGFyZ2V0 bGlzdChyb290LCByZXN1bHRSZWxhdGlvbiwgY2hpbGRfcmVsaWRzLAogCQkJCQkJCQkJCSAmcHJv Y2Vzc2VkX3RsaXN0LCAmdGFyZ2V0QXR0cnMpOwogCQlmb3Jib3RoKGxjLCBwcm9jZXNzZWRfdGxp c3QsIGxjMiwgdGFyZ2V0QXR0cnMpCiAJCXsKQEAgLTI1ODUsOCArMjU5NSwxNyBAQCBwb3N0Z3Jl c1BsYW5EaXJlY3RNb2RpZnkoUGxhbm5lckluZm8gKnJvb3QsCiAJCSAqIG5vZGUgYmVsb3cuCiAJ CSAqLwogCQlpZiAoZnNjYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCisJCXsKKwkJCWlmIChmb3Jl aWducmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9KT0lOUkVMKQorCQkJeworCQkJCXJl dHVybmluZ0xpc3QgPSAoTGlzdCAqKSBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwo cm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkJCSAgIChOb2RlICopIHJldHVybmluZ0xpc3QsCisJCQkJ CQkJCQkJCQkJCQkJCQkgICBmb3JlaWducmVsLAorCQkJCQkJCQkJCQkJCQkJCQkJICAgZm9yZWln bnJlbC0+dG9wX3BhcmVudCk7CisJCQl9CiAJCQlyZXR1cm5pbmdMaXN0ID0gYnVpbGRfcmVtb3Rl X3JldHVybmluZyhyZXN1bHRSZWxhdGlvbiwgcmVsLAogCQkJCQkJCQkJCQkJICAgcmV0dXJuaW5n TGlzdCk7CisJCX0KIAl9CiAKIAkvKgpAQCAtMzI2Myw3ICszMjgyLDcgQEAgZXN0aW1hdGVfcGF0 aF9jb3N0X3NpemUoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJl IHVubGVzcyB3ZSBoYXZlIExJTUlUICovCiAJCQkJQXNzZXJ0KGZwZXh0cmEtPmhhc19saW1pdCk7 CiAJCQkJQXNzZXJ0KGZvcmVpZ25yZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwK LQkJCQkJICAgZm9yZWlnbnJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCk7CisJCQkJ CSAgIElTX0pPSU5fUkVMKGZvcmVpZ25yZWwpKTsKIAkJCQlzdGFydHVwX2Nvc3QgKz0gZm9yZWln bnJlbC0+cmVsdGFyZ2V0LT5jb3N0LnN0YXJ0dXA7CiAJCQkJcnVuX2Nvc3QgKz0gZm9yZWlnbnJl bC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSAqIHJvd3M7CiAJCQl9CkBAIC00NDU1LDcgKzQ0 NzQsNyBAQCBidWlsZF9yZW1vdGVfcmV0dXJuaW5nKEluZGV4IHJ0aW5kZXgsIFJlbGF0aW9uIHJl bCwgTGlzdCAqcmV0dXJuaW5nTGlzdCkKIAogCUFzc2VydChyZXR1cm5pbmdMaXN0KTsKIAotCXZh cnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcmV0dXJuaW5nTGlzdCwgUFZDX0lOQ0xVREVf UExBQ0VIT0xERVJTKTsKKwl2YXJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJldHVybmlu Z0xpc3QsIFBWQ19JTkNMVURFX1BMQUNFSE9MREVSUyB8IFBWQ19JTkNMVURFX0NPTlZFUlRST1dU WVBFUyk7CiAKIAkvKgogCSAqIElmIHRoZXJlJ3MgYSB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRo ZSB0YXJnZXQgcmVsYXRpb24sIHRoZW4gd2UnbGwKQEAgLTQ0NjUsNiArNDQ4NCw5IEBAIGJ1aWxk X3JlbW90ZV9yZXR1cm5pbmcoSW5kZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLCBMaXN0ICpyZXR1 cm5pbmdMaXN0KQogCXsKIAkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBsZmlyc3QobGMpOwogCisJ CXdoaWxlIChJc0EodmFyLCBDb252ZXJ0Um93dHlwZUV4cHIpKQorCQkJdmFyID0gKFZhciAqKSAo KChDb252ZXJ0Um93dHlwZUV4cHIgKikgdmFyKS0+YXJnKTsKKwogCQlpZiAoSXNBKHZhciwgVmFy KSAmJgogCQkJdmFyLT52YXJubyA9PSBydGluZGV4ICYmCiAJCQl2YXItPnZhcmF0dG5vID09IElu dmFsaWRBdHRyTnVtYmVyKQpAQCAtNDUxOSw2ICs0NTQxLDI5IEBAIGJ1aWxkX3JlbW90ZV9yZXR1 cm5pbmcoSW5kZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLCBMaXN0ICpyZXR1cm5pbmdMaXN0KQog CQkJdmFyLT52YXJhdHRubyAhPSBTZWxmSXRlbVBvaW50ZXJBdHRyaWJ1dGVOdW1iZXIpCiAJCQlj b250aW51ZTsJCQkvKiBkb24ndCBuZWVkIGl0ICovCiAKKwkJLyoKKwkJICogQWxzbyBubyBuZWVk IGluIHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQgcmVsYXRpb24gdW5kZXIKKwkJ ICogQ29udmVydFJvd3R5cGVFeHByCisJCSAqLworCQlpZiAoSXNBKHZhciwgQ29udmVydFJvd3R5 cGVFeHByKSkKKwkJeworCQkJQ29udmVydFJvd3R5cGVFeHByICpjcmUgPSAoQ29udmVydFJvd3R5 cGVFeHByICopIHZhcjsKKwkJCVZhcgkJICAgKmNyZV92YXI7CisKKwkJCXdoaWxlIChJc0EoY3Jl LT5hcmcsIENvbnZlcnRSb3d0eXBlRXhwcikpCisJCQkJY3JlID0gKENvbnZlcnRSb3d0eXBlRXhw ciAqKSBjcmUtPmFyZzsKKworCisJCQljcmVfdmFyID0gKFZhciAqKSBjcmUtPmFyZzsKKworCQkJ aWYgKElzQShjcmVfdmFyLCBWYXIpICYmCisJCQkJY3JlX3Zhci0+dmFybm8gPT0gcnRpbmRleCkK KwkJCXsKKwkJCQlBc3NlcnQoY3JlX3Zhci0+dmFyYXR0bm8gPT0gSW52YWxpZEF0dHJOdW1iZXIp OworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJaWYgKHRsaXN0X21lbWJlcigoRXhwciAq KSB2YXIsIHRsaXN0KSkKIAkJCWNvbnRpbnVlOwkJCS8qIGFscmVhZHkgZ290IGl0ICovCiAKQEAg LTQ3MjQsMTUgKzQ3NjksMjYgQEAgaW5pdF9yZXR1cm5pbmdfZmlsdGVyKFBnRmR3RGlyZWN0TW9k aWZ5U3RhdGUgKmRtc3RhdGUsCiAJCXBhbGxvYzAocmVzdWx0VHVwVHlwZS0+bmF0dHMgKiBzaXpl b2YoQXR0ck51bWJlcikpOwogCiAJZG1zdGF0ZS0+Y3RpZEF0dG5vID0gZG1zdGF0ZS0+b2lkQXR0 bm8gPSAwOworCWRtc3RhdGUtPnRpZEF0dG5vcyA9IGRtc3RhdGUtPnRpZFZhcm5vcyA9IE5JTDsK IAogCWkgPSAxOwogCWRtc3RhdGUtPmhhc1N5c3RlbUNvbHMgPSBmYWxzZTsKIAlmb3JlYWNoKGxj LCBmZHdfc2Nhbl90bGlzdCkKIAl7CiAJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkg KikgbGZpcnN0KGxjKTsKLQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSB0bGUtPmV4cHI7CisJCUV4 cHIJICAgKmV4cHI7CisJCVZhcgkJICAgKnZhcjsKKworCQlleHByID0gdGxlLT5leHByOworCisJ CXdoaWxlIChJc0EoZXhwciwgQ29udmVydFJvd3R5cGVFeHByKSkKKwkJeworCQkJQ29udmVydFJv d3R5cGVFeHByICpjcmUgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIGV4cHIpOwogCi0J CUFzc2VydChJc0EodmFyLCBWYXIpKTsKKwkJCWV4cHIgPSBjcmUtPmFyZzsKKwkJfQorCisJCXZh ciA9IGNhc3ROb2RlKFZhciwgZXhwcik7CiAKIAkJLyoKIAkJICogSWYgdGhlIFZhciBpcyBhIGNv bHVtbiBvZiB0aGUgdGFyZ2V0IHJlbGF0aW9uIHRvIGJlIHJldHJpZXZlZCBmcm9tCkBAIC00NzYx LDEwICs0ODE3LDE1IEBAIGluaXRfcmV0dXJuaW5nX2ZpbHRlcihQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICpkbXN0YXRlLAogCQkJCSAqIHJlbGF0aW9uIGVpdGhlci4KIAkJCQkgKi8KIAkJCQlBc3Nl cnQoYXR0cm5vID4gMCk7Ci0KIAkJCQlkbXN0YXRlLT5hdHRub01hcFthdHRybm8gLSAxXSA9IGk7 CiAJCQl9CiAJCX0KKwkJLyogUmVjb3JkIHRhYmxlb2lkIGF0dHJpYnV0ZXMgYW5kIGNvcnJlc3Bv bmRpbmcgdmFybm9zICovCisJCWlmICh2YXItPnZhcmF0dG5vID09IFRhYmxlT2lkQXR0cmlidXRl TnVtYmVyKQorCQl7CisJCQlkbXN0YXRlLT50aWRBdHRub3MgPSBsYXBwZW5kX2ludChkbXN0YXRl LT50aWRBdHRub3MsIGkpOworCQkJZG1zdGF0ZS0+dGlkVmFybm9zID0gbGFwcGVuZF9pbnQoZG1z dGF0ZS0+dGlkVmFybm9zLCB2YXItPnZhcm5vKTsKKwkJfQogCQlpKys7CiAJfQogfQpAQCAtNDc4 NSw2ICs0ODQ2LDggQEAgYXBwbHlfcmV0dXJuaW5nX2ZpbHRlcihQZ0Zkd0RpcmVjdE1vZGlmeVN0 YXRlICpkbXN0YXRlLAogCURhdHVtCSAgICpvbGRfdmFsdWVzOwogCWJvb2wJICAgKm9sZF9pc251 bGw7CiAJaW50CQkJaTsKKwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOwogCiAJLyoKIAkg KiBVc2UgdGhlIHJldHVybiB0dXBsZSBzbG90IGFzIGEgcGxhY2UgdG8gc3RvcmUgdGhlIHJlc3Vs dCB0dXBsZS4KQEAgLTQ4MjQsNiArNDg4NywyOSBAQCBhcHBseV9yZXR1cm5pbmdfZmlsdGVyKFBn RmR3RGlyZWN0TW9kaWZ5U3RhdGUgKmRtc3RhdGUsCiAJCX0KIAl9CiAKKwkvKgorCSAqIFNldCB0 YWJsZW9pZCBhdHRyaWJ1dGVzCisJICovCisJZm9yYm90aChsYzEsIGRtc3RhdGUtPnRpZEF0dG5v cywgbGMyLCBkbXN0YXRlLT50aWRWYXJub3MpCisJeworCQlBdHRyTnVtYmVyCWF0dG5vOworCQlJ bmRleAkJdmFybm87CisJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQlhdHRubyA9IGxmaXJzdF9p bnQobGMxKTsKKwkJdmFybm8gPSBsZmlyc3RfaW50KGxjMik7CisKKwkJcnRlID0gbGlzdF9udGgo ZXN0YXRlLT5lc19yYW5nZV90YWJsZSwgdmFybm8gLSAxKTsKKwkJQXNzZXJ0KHJ0ZS0+cnRla2lu ZCA9PSBSVEVfUkVMQVRJT04pOworCQlBc3NlcnQocnRlLT5yZWxraW5kID09IFJFTEtJTkRfRk9S RUlHTl9UQUJMRSk7CisKKwkJLyogQXR0cmlidXRlcyBudW1iZXJpbmcgaW4gaW5pdF9yZXR1cm5p bmdfZmlsdGVyKCkgc3RhcnRzIHdpdGggMSAqLworCQlBc3NlcnQoYXR0bm8gPj0gMSk7CisKKwkJ c2xvdC0+dHRzX3ZhbHVlc1thdHRubyAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShydGUtPnJlbGlk KTsKKwkJc2xvdC0+dHRzX2lzbnVsbFthdHRubyAtIDFdID0gZmFsc2U7CisJfQorCiAJLyoKIAkg KiBCdWlsZCB0aGUgdmlydHVhbCB0dXBsZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3Fs L3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggYWRlMGFiOGNhZTAuLmZlMWE3NjMwMjRkIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMzE4MSw2ICszMTgxLDQ0 IEBAIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEgdDEgSU5ORVIgSk9JTiBmcHJ0MiB0MiBP TiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEKIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEg dDEgSU5ORVIgSk9JTiBmcHJ0MiB0MiBPTiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEgJSAyNSA9 IDAgT1JERVIgQlkgdDIuYSBGT1IgVVBEQVRFIE9GIHQxOwogcmVzZXQgZW5hYmxlX3NvcnQ7CiAK Ky0tIHRlc3QgcGFydGl0aW9uLXdpc2UgRE1MCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0Up CitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEuYisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9 IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDA7CitVUERBVEUgZnBydDEgU0VUIGI9ZnBydDEu YisxIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9 IDA7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1VQREFURSBmcHJ0MSBTRVQgYj0o ZnBydDEuYStmcHJ0Mi5iKS8yIEZST00gZnBydDIgV0hFUkUgZnBydDEuYSA9IGZwcnQyLmIgQU5E IGZwcnQyLmEgJSAyNSA9IDA7CitVUERBVEUgZnBydDEgU0VUIGI9KGZwcnQxLmErZnBydDIuYikv MiBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAw OworCistLSByZXR1cm5pbmcgd2hvbGUgcm93IHJlZmVyZW5jZXMKK0VYUExBSU4gKENPU1RTIE9G RikKK1VQREFURSBmcHJ0MSBTRVQgYj1mcHJ0MS5iKzEgRlJPTSBmcHJ0MiBXSEVSRSBmcHJ0MS5h ID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDI1ID0gMCBSRVRVUk5JTkcgZnBydDEsIGZwcnQyOwor VVBEQVRFIGZwcnQxIFNFVCBiPWZwcnQxLmIrMSBGUk9NIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBm cHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUgPSAwIFJFVFVSTklORyBmcHJ0MSwgZnBydDI7CisKKy0t IHRhYmxlb2lkcyBhcmUgcmV0dXJuZWQgY29ycmVjdGx5CitFWFBMQUlOIChDT1NUUyBPRkYpCitV UERBVEUgZnBydDEgdDEgU0VUIGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIFdIRVJFIHQxLmEg PSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgdDIudGFibGVvaWQ6OnJlZ2NsYXNz OworVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBmcHJ0MiB0MiBXSEVSRSB0 MS5hID0gdDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HIHQyLnRhYmxlb2lkOjpyZWdj bGFzczsKKworLS0gam9pbiBvZiBzZXZlcmFsIHRhYmxlcworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBmcHJ0MiB0Miwg ZnBydDEgdDMgV0hFUkUgdDEuYSA9IHQyLmIgQU5EIHQyLmIgPSB0My5hIEFORCB0MS5hICUgMjUg PSAwICBSRVRVUk5JTkcgKjsKK1VQREFURSBmcHJ0MSB0MSBTRVQgYiA9IHQxLmIgKyAxIEZST00g ZnBydDIgdDIsIGZwcnQxIHQzIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0Mi5iID0gdDMuYSBBTkQg dDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HICo7CisKKy0tIGxlZnQgam9pbgorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorVVBEQVRFIGZwcnQxIHQxIFNFVCBiID0gdDEuYiArIDEgRlJPTSBm cHJ0MiB0MiBMRUZUIEpPSU4gZnBydDEgdDMgT04gKHQyLmIgPSB0My5hKSBXSEVSRSB0MS5hID0g dDIuYiBBTkQgdDEuYSAlIDI1ID0gMCAgUkVUVVJOSU5HICo7CitVUERBVEUgZnBydDEgdDEgU0VU IGIgPSB0MS5iICsgMSBGUk9NIGZwcnQyIHQyIExFRlQgSk9JTiBmcHJ0MSB0MyBPTiAodDIuYiA9 IHQzLmEpIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0MS5hICUgMjUgPSAwICBSRVRVUk5JTkcgKjsK KworLS0gZGVsZXRlCitFWFBMQUlOIChDT1NUUyBPRkYpCitERUxFVEUgRlJPTSBmcHJ0MSBVU0lO RyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQgZnBydDIuYSAlIDMwID0gMjk7CitE RUxFVEUgRlJPTSBmcHJ0MSBVU0lORyBmcHJ0MiBXSEVSRSBmcHJ0MS5hID0gZnBydDIuYiBBTkQg ZnBydDIuYSAlIDMwID0gMjk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK0RFTEVURSBGUk9NIGZw cnQxIFVTSU5HIGZwcnQyIFdIRVJFIGZwcnQxLmEgPSBmcHJ0Mi5iIEFORCBmcHJ0Mi5hICUgMjUg PSAwIFJFVFVSTklORyAqOworREVMRVRFIEZST00gZnBydDEgVVNJTkcgZnBydDIgV0hFUkUgZnBy dDEuYSA9IGZwcnQyLmIgQU5EIGZwcnQyLmEgJSAyNSA9IDAgUkVUVVJOSU5HICo7CisKIFJFU0VU IGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv YXBwZW5kaW5mby5jCmluZGV4IDQ5ODk3MjI2MzcxLi4yOWJlOGFmNmNjOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAtNjkxLDcgKzY5MSw3IEBAIGFkanVzdF9p bmhlcml0ZWRfYXR0bnVtc19tdWx0aWxldmVsKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICphdHRu dW1zLAogICogcmVsaWVkIG9uIGZvciB0aGlzIHB1cnBvc2UuKQogICovCiB2b2lkCi1nZXRfdHJh bnNsYXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcmVsaWQs CitnZXRfdHJhbnNsYXRlZF91cGRhdGVfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgSW5k ZXggcmVsaWQsIFJlbGlkcyBjaGlsZF9qb2lucmVsX3JlbGlkcywKIAkJCQkJCQkJIExpc3QgKipw cm9jZXNzZWRfdGxpc3QsIExpc3QgKip1cGRhdGVfY29sbm9zKQogewogCS8qIFRoaXMgaXMgcHJl dHR5IG1lYW5pbmdsZXNzIGZvciBjb21tYW5kcyBvdGhlciB0aGFuIFVQREFURS4gKi8KQEAgLTcw OSwxMSArNzA5LDMxIEBAIGdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRsaXN0KFBsYW5uZXJJ bmZvICpyb290LCBJbmRleCByZWxpZCwKIAllbHNlCiAJewogCQlBc3NlcnQoYm1zX2lzX21lbWJl cihyZWxpZCwgcm9vdC0+YWxsX3Jlc3VsdF9yZWxpZHMpKTsKLQkJKnByb2Nlc3NlZF90bGlzdCA9 IChMaXN0ICopCi0JCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKLQkJ CQkJCQkJCQkJICAoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCi0JCQkJCQkJCQkJCSAg ZmluZF9iYXNlX3JlbChyb290LCByZWxpZCksCi0JCQkJCQkJCQkJCSAgZmluZF9iYXNlX3JlbChy b290LCByb290LT5wYXJzZS0+cmVzdWx0UmVsYXRpb24pKTsKKworCQkvKgorCQkgKiBVUERBVEUg dGFyZ2V0bGlzdCBjb3JyZXNwb25kcyB0byBTRVQgY2xhdXNlIGFuZCBzbyBjYW4gY29udGFpbgor CQkgKiBhcmJpdHJhcnkgZXhwcmVzc2lvbnMsIGluY2x1ZGluZyB0aG9zZSB3aGljaCBjb250YWlu IHJlZmVyZW5jZXMgbm90CisJCSAqIG9ubHkgdG8gcmVzdWx0IHJlbGF0aW9uLCBidXQgYWxzbyB0 byBvdGhlciB2YXJzLiBTbyBpbiBjYXNlIG9mIGpvaW4KKwkJICogd2Ugc2hvdWxkIGFsc28gdHJh bnNsYXRlIHRoZXNlIHZhcnMgdG8gdGhlaXIgcGFyZW50cy4KKwkJICovCisJCWlmIChibXNfaXNf ZW1wdHkoY2hpbGRfam9pbnJlbF9yZWxpZHMpKQorCQl7CisJCQkqcHJvY2Vzc2VkX3RsaXN0ID0g KExpc3QgKikKKwkJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJ CQkJCQkJCQkJCSAgKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkJCQkJ ICBmaW5kX2Jhc2VfcmVsKHJvb3QsIHJlbGlkKSwKKwkJCQkJCQkJCQkJCSAgZmluZF9iYXNlX3Jl bChyb290LCByb290LT5wYXJzZS0+cmVzdWx0UmVsYXRpb24pKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCVJlbE9wdEluZm8gKmNoaWxkX2pvaW5yZWwgPSBmaW5kX2pvaW5fcmVsKHJvb3QsIGNoaWxk X2pvaW5yZWxfcmVsaWRzKTsKKworCQkJKnByb2Nlc3NlZF90bGlzdCA9IChMaXN0ICopCisJCQkJ YWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdWx0aWxldmVsKHJvb3QsCisJCQkJCQkJCQkJCQkgIChO b2RlICopIHJvb3QtPnByb2Nlc3NlZF90bGlzdCwKKwkJCQkJCQkJCQkJCSAgY2hpbGRfam9pbnJl bCwKKwkJCQkJCQkJCQkJCSAgY2hpbGRfam9pbnJlbC0+dG9wX3BhcmVudCk7CisJCX0KIAkJaWYg KHVwZGF0ZV9jb2xub3MpCiAJCQkqdXBkYXRlX2NvbG5vcyA9CiAJCQkJYWRqdXN0X2luaGVyaXRl ZF9hdHRudW1zX211bHRpbGV2ZWwocm9vdCwgcm9vdC0+dXBkYXRlX2NvbG5vcywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvYXBwZW5kaW5mby5oCmluZGV4IGNjMTJjOWM3NDNkLi40ZjczYmI5N2E1MCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC0zNiw2ICszNiw3IEBAIGV4dGVybiBMaXN0ICph ZGp1c3RfaW5oZXJpdGVkX2F0dG51bXNfbXVsdGlsZXZlbChQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCSBJbmRleCBjaGlsZF9yZWxpZCwKIAkJCQkJCQkJCQkJCSBJbmRleCB0b3BfcGFy ZW50X3JlbGlkKTsKIGV4dGVybiB2b2lkIGdldF90cmFuc2xhdGVkX3VwZGF0ZV90YXJnZXRsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBJbmRleCByZWxpZCwKKwkJCQkJCQkJCQkJIFJlbGlkcyBjaGls ZF9qb2lucmVsX3JlbGlkcywKIAkJCQkJCQkJCQkJIExpc3QgKipwcm9jZXNzZWRfdGxpc3QsCiAJ CQkJCQkJCQkJCSBMaXN0ICoqdXBkYXRlX2NvbG5vcyk7CiBleHRlcm4gQXBwZW5kUmVsSW5mbyAq KmZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKFBsYW5uZXJJbmZvICpyb290LAotLSAKMi4zNC4xCgo= --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0005-postgres_fdw-child-join-with-ConvertRowtypeExprs-cau.patch Content-Disposition: attachment; filename*0*=UTF-8''v2-0005-postgres_fdw-child-join-with-ConvertRowtypeExp; filename*1*=rs-cau.patch; size=26434 RnJvbSA1NTZlOGI5NTkxMzcwMDIzNDE4YjNmMmRhOTE2MGEzOWZmYmJmZTA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyNiBEZWMgMjAyMyAxMToxMzoxNiArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggNS82XSBwb3N0Z3Jlc19mZHc6IGNoaWxkLWpvaW4gd2l0aCBDb252ZXJ0Um93dHlw ZUV4cHJzIGNhdXNlcwogZXhwcmVzc2lvbiByZWZlcmVuY2UgZXJyb3JzLgoKV2hvbGUgcm93IHJl ZmVyZW5jZSBvZiB0aGUgcGFyZW50IGlzIHRyYW5zbGF0ZWQgaW50bwpDb252ZXJ0Um93dHlwZUV4 cHIgd2l0aCB3aG9sZSByb3cgb2YgY2hpbGQgYXMgYW4gYXJndW1lbnQuIFdoZW4KcGFydGl0aW9u LXdpc2Ugam9pbiBpcyB1c2VkLCB0YXJnZXRsaXN0IG9mIGEgY2hpbGQtam9pbiBjb250YWlucwpD b252ZXJ0Um93dHlwZUV4cHIvcyB3aGVuIHRoZSBwYXJlbnQtam9pbidzIHRhcmdldGxpc3QgaGFz IHdob2xlLXJvdwpyZWZlcmVuY2UvcyBvZiBqb2luaW5nIHBhcnRpdGlvbmVkIHRhYmxlcy4KClRo ZSB0YXJnZXRsaXN0IHRvIGJlIGRlcGFyc2VkIGZvciBhIGNoaWxkLWpvaW4gaXMgYnVpbHQgdXNp bmcKYnVpbGRfdGxpc3RfdG9fZGVwYXJzZSgpLiBUaGUgc2FtZSB0YXJnZXRsaXN0IGlzIHRoZW4g c2F2ZWQgYXMKZmR3X3NjYW5fdGxpc3QgaW4gRm9yZWlnblNjYW5QbGFuLiBidWlsZF90bGlzdF90 b19kZXBhcnNlKCkgcHVsbHMgb25seQpWYXIgbm9kZXMgZnJvbSB0aGUgam9pbidzIHRhcmdldGxp c3QuICBTbyBpdCBwdWxscyBWYXIgcmVwcmVuc2VudGluZyBhCndob2xlLXJvdyByZWZlcmVuY2Ug b2YgYSBjaGlsZCBmcm9tIGEgQ29udmVydFJvd3R5cGVFeHByLiBUaHVzIHRoZQpjaGlsZC1qb2lu J3MgcHJvamVjdGVkIHRhcmdldCBsaXN0IGNvbnRhaW5zIENvbnZlcnRSb3d0eXBlRXhwciBidXQg dGhlClNFTEVDVCBjbGF1c2UgYW5kIGZkd19zY2FuX3RsaXN0IGNvbnRhaW5zIGEgd2hvbGUtcm93 IHJlZmVyZW5jZS4KClRoaXMgY2F1c2VzIHR3byBwcm9ibGVtczoKMS4gIFdoZW4gYSByZWxhdGlv biAocGFydGljaXBhdGluZyBpbiB0aGUgY2hpbGQtam9pbiBiZWluZyBwdXNoZWQKZG93bikgaXMg ZGVwYXJzZWQgYXMgYSBzdWJxdWVyeSwgc3VicXVlcnkncyB0YXJnZXRsaXN0IChhbmQgU0VMRUNU CmNsYXVzZSkgY29udGFpbnMgZXhwcmVzc2lvbnMgZnJvbSBmb3JlaWducmVsLT5yZWx0YXJnZXQt PmV4cHJzLiBBIFZhcgpmcm9tIHN1Y2ggYSByZWxhdGlvbiBpcyBkZXBhcnNlZCBhcyBjb2x1bW4g cmVmZXJlbmNlIG9mIHN1YnF1ZXJ5IHVzaW5nCmdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRz KCkuICBUaGF0IGZ1bmN0aW9uIHVzZXMgZm9yZWlnbnJlbCdzCnRhcmdldGxpc3QgdG8gbG9jYXRl IGdpdmVuIG5vZGUgdG8gYmUgZGVwYXJzZWQuICBJZiB0aGUgam9pbmluZwpyZWxhdGlvbiBjb3Jy ZXNwb25kaW5nIHRvIENvbnZlcnRSb3d0eXBlRXhwciBpcyBkZXBhcnNlZCBhcyBhCnN1YnF1ZXJ5 LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2Ugbm9kZSAo VmFyCm5vZGUgd2l0aCB2YXJhdHRubyA9IDApLiAgVGhlIHJlbGF0aW9uJ3MgZm9yZWlnbnJlbC0+ cmVsdGFyZ2V0LT5leHBycwpkb2Vzbid0IGNvbnRhaW4gaXRzIHdob2xlLXJvdyByZWZlcmVuY2Ug ZGlyZWN0bHkgYnV0IGhhcyBpdCBlbWJlZGRlZAppbiBDb252ZXJ0Um93dHlwZUV4cHIuIFNvLCB0 aGUgZnVuY3Rpb24gZG9lc24ndCBmaW5kIHRoZSBnaXZlbiBub2RlCmFuZCB0aHJvd3MgZXJyb3Iu CgoyLiBXaGVuIHRoZXJlIGlzIHBvc3NpYmlsaXR5IG9mIEV2YWxQbGFuUXVhbCBiZWluZyBjYWxs ZWQsIHdlCmNvbnN0cnVjdCBsb2NhbCBqb2luIHBsYW4gbWF0Y2hpbmcgdGhlIHB1c2hlZCBkb3du IGZvcmVpZ24gam9pbi4gSW4KcG9zdGdyZXNHZXRGb3JlaWduUGxhbigpIGFmdGVyIHdlIGhhdmUg YnVpbHQgdGhlIGxvY2FsIGpvaW4gcGxhbiwgdGhlCnRvcG1vc3QgcGxhbiBub2RlJ3MgdGFyZ2V0 bGlzdCBpcyBjaGFuZ2VkIHRvIGZkd19zY2FuX3RsaXN0IHRvIG1hdGNoCnRoZSBvdXRwdXQgb2Yg dGhlIEZvcmVpZ25TY2FuIG5vZGUuIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhpcwpmZHdfc2Nhbl90 bGlzdCBjb250YWlucyBhIGJhcmUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZS1yb3cgcmVmZXJlbmNl IGZyb20gYQpjaGlsZCByZWxhdGlvbiBpZiB0aGUgY2hpbGQtam9pbidzIHRhcmdldGxpc3QgY29u dGFpbnMgYQpDb252ZXJ0Um93dHlwZUV4cHIuIFdoZW4gY2hhbmdpbmcgdGhlIHRvcG1vc3QgcGxh biBub2RlJ3MgdGFyZ2V0bGlzdCwKd2UgZG8gbm90IG1vZGlmeSB0aGUgdGFyZ2V0bGlzdHMgb2Yg aXRzIGxlZnQgYW5kIHJpZ2h0IHRyZWUgbm9kZXMuIFRoZQpsZWZ0L3JpZ2h0IHBsYW4gaW52b2x2 aW5nIGNvcnJlc3BvbmRpbmcgY2hpbGQgcmVsYXRpb24gd2lsbCBoYXZlCkNvbnZlcnRSb3d0eXBl RXhwciBleHByZXNzaW9uIGluIGl0cyB0YXJnZXRsaXN0LCBidXQgbm90IHdob2xlLXJvdwpyZWZl cmVuY2UgZGlyZWN0bHkuIFdoZW4gdGhlIHRvcG1vc3QgbG9jYWwgam9pbiBwbGFuIG5vZGUncyB0 YXJnZXRsaXN0CmlzIHByb2Nlc3NlZCBieSBzZXRfcGxhbl9yZWYoKSwgaXQgdGhyb3dzIGVycm9y ICJ2YXJpYWJsZSBub3QgZm91bmQgaW4Kc3VicGxhbiB0YXJnZXQgbGlzdHMiIHNpbmNlIGl0IGRv ZXNuJ3QgZmluZCBiYXJlIHdob2xlLXJvdyByZWZlcmVuY2UKb2YgdGhlIGNoaWxkIHJlbGF0aW9u IGluIHN1YnBsYW4ncyB0YXJnZXRsaXN0cy4KClNvbHV0aW9uClRoaXMgcmVxdWlyZXMgdHdvIHBh cnRzCmEuIEluIGJ1aWxkX3RsaXN0X3RvX2RlcGFyc2UoKSwgaW5zdGVhZCBvZiBwdWxsaW5nIFZh ciBub2RlIGZyb20KQ29udmVydFJvd3R5cGVFeHByLCB3ZSBwdWxsIHdob2xlIENvbnZlcnRSb3d0 eXBlRXhwciBhbmQgaW5jbHVkZSBpdCBpbgp0aGUgdGFyZ2V0bGlzdCBiZWluZyBkZXBhcnNlZCB3 aGljaCBpcyBhbHNvIHVzZWQgdG8gc2V0CmZkd19zY2FuX3RsaXN0LgoKYi4gZGVwYXJzZSBDb252 ZXJ0Um93dHlwZUV4cHIuICBGb3IgdGhpcyB3ZSBuZWVkIHRvIGdldCB0aGUgY29udmVyc2lvbgpt YXAgYmV0d2VlbiB0aGUgcGFyZW50IGFuZCBjaGlsZC4gV2UgdGhlbiBkZXBhcnNlIENvbnZlcnRS b3d0eXBlRXhwcgphcyBhIFJPVygpIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgY2hpbGQgcmVhcnJh bmdlZCBwZXIgdGhlIGNvbnZlcnNpb24KbWFwLiBBIG11bHRpLWxldmVsIHBhcnRpdGlvbmVkIHRh YmxlIHdpbGwgaGF2ZSBuZXN0ZWQKQ29udmVydFJvd3R5cGVFeHByLiBUbyBkZXBhcnNlIHN1Y2gg ZXhwcmVzc2lvbnMsIHdlIG5lZWQgdG8gZmluZCB0aGUKY29udmVyc2lvbiBtYXAgYmV0d2VlbiB0 aGUgdG9wbW9zdCBwYXJlbnQgYW5kIHRoZSBjaGlsZCwgYnkgaWdub3JpbmcKYW55IGludGVybWVk aWF0ZSBwYXJlbnRzLgoKVGhlIHBhdGNoIGlzIHRha2VuIGZyb20gaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUZqRnBSYzhab0RtMCUyQnpoeCUyQk1ja3dHeUVxa096V2Nw VnFidmpheHdkR2FyWlNOcm1BJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAxNzQgKysrKysrKysrKysrKysrLS0tCiAu Li4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgOTYgKysrKysr Ky0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgIDIw ICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCAgICAgfCAgMTYg Ky0KIDQgZmlsZXMgY2hhbmdlZCwgMjU2IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBmYjU5MGM4N2U2Ny4uZjg3OWZmMzEwMGYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYworKysgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTE2Niw2ICsxNjYsOCBAQCBzdGF0aWMgdm9pZCBkZXBhcnNl Qm9vbEV4cHIoQm9vbEV4cHIgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpOwogc3Rh dGljIHZvaWQgZGVwYXJzZU51bGxUZXN0KE51bGxUZXN0ICpub2RlLCBkZXBhcnNlX2V4cHJfY3h0 ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGRlcGFyc2VDYXNlRXhwcihDYXNlRXhwciAqbm9kZSwg ZGVwYXJzZV9leHByX2N4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBkZXBhcnNlQXJyYXlFeHBy KEFycmF5RXhwciAqbm9kZSwgZGVwYXJzZV9leHByX2N4dCAqY29udGV4dCk7CitzdGF0aWMgdm9p ZCBkZXBhcnNlQ29udmVydFJvd3R5cGVFeHByKENvbnZlcnRSb3d0eXBlRXhwciAqY3JlLAorCQkJ CQkJCQkJICBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIHByaW50UmVt b3RlUGFyYW0oaW50IHBhcmFtaW5kZXgsIE9pZCBwYXJhbXR5cGUsIGludDMyIHBhcmFtdHlwbW9k LAogCQkJCQkJCSBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIHByaW50 UmVtb3RlUGxhY2Vob2xkZXIoT2lkIHBhcmFtdHlwZSwgaW50MzIgcGFyYW10eXBtb2QsCkBAIC0y MDIsOSArMjA0LDkgQEAgc3RhdGljIE5vZGUgKmRlcGFyc2VTb3J0R3JvdXBDbGF1c2UoSW5kZXgg cmVmLCBMaXN0ICp0bGlzdCwgYm9vbCBmb3JjZV9jb2xubywKIC8qCiAgKiBIZWxwZXIgZnVuY3Rp b25zCiAgKi8KLXN0YXRpYyBib29sIGlzX3N1YnF1ZXJ5X3ZhcihWYXIgKm5vZGUsIFJlbE9wdElu Zm8gKmZvcmVpZ25yZWwsCitzdGF0aWMgYm9vbCBpc19zdWJxdWVyeV92YXIoTm9kZSAqbm9kZSwg SW5kZXggdmFybm8sIGludCB2YXJhdHRubywgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkJCQkJ CQlpbnQgKnJlbG5vLCBpbnQgKmNvbG5vKTsKLXN0YXRpYyB2b2lkIGdldF9yZWxhdGlvbl9jb2x1 bW5fYWxpYXNfaWRzKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKK3N0YXRpYyB2 b2lkIGdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRzKE5vZGUgKm5vZGUsIEluZGV4IHZhcm5v LCBpbnQgdmFyYXR0bm8sIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsCiAJCQkJCQkJCQkJICBpbnQg KnJlbG5vLCBpbnQgKmNvbG5vKTsKIAogCkBAIC0xMTg4LDE4ICsxMTkwLDI1IEBAIGJ1aWxkX3Rs aXN0X3RvX2RlcGFyc2UoUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCkKIAogCS8qCiAJICogV2UgcmVx dWlyZSBjb2x1bW5zIHNwZWNpZmllZCBpbiBmb3JlaWducmVsLT5yZWx0YXJnZXQtPmV4cHJzIGFu ZCB0aG9zZQotCSAqIHJlcXVpcmVkIGZvciBldmFsdWF0aW5nIHRoZSBsb2NhbCBjb25kaXRpb25z LgorCSAqIHJlcXVpcmVkIGZvciBldmFsdWF0aW5nIHRoZSBsb2NhbCBjb25kaXRpb25zLiAgQ2hp bGQgcmVsYXRpb24ncworCSAqIHRhcmdldGxpc3Qgb3IgbG9jYWwgY29uZGl0aW9ucyBtYXkgaGF2 ZSBDb252ZXJ0Um93dHlwZUV4cHIgd2hlbiBwYXJlbnQKKwkgKiB3aG9sZS1yb3cgVmFycyB3ZXJl IHRyYW5zbGF0ZWQuIFdlIG5lZWQgdG8gaW5jbHVkZSB0aG9zZSBpbiB0YXJnZXRsaXN0CisJICog dG8gYmUgcHVzaGVkIGRvd24gdG8gbWF0Y2ggdGhlIHRhcmdldGxpc3RzIHByb2R1Y2VkIGZvciB0 aGUgam9pbmluZworCSAqIHJlbGF0aW9ucyAoaW4gY2FzZSB3ZSBhcmUgdXNpbmcgc3VicXVlcmll cyBpbiB0aGUgZGVwYXJzZWQgcXVlcnkpIGFuZAorCSAqIGFsc28gdG8gbWF0Y2ggdGhlIHRhcmdl dGxpc3Qgb2Ygb3V0ZXIgcGxhbiBpZiBmb3JlaWduIHNjYW4gaGFzIG9uZS4KIAkgKi8KIAl0bGlz dCA9IGFkZF90b19mbGF0X3RsaXN0KHRsaXN0LAogCQkJCQkJCSAgcHVsbF92YXJfY2xhdXNlKChO b2RlICopIGZvcmVpZ25yZWwtPnJlbHRhcmdldC0+ZXhwcnMsCi0JCQkJCQkJCQkJCSAgUFZDX1JF Q1VSU0VfUExBQ0VIT0xERVJTKSk7CisJCQkJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xE RVJTIHwKKwkJCQkJCQkJCQkJICBQVkNfSU5DTFVERV9DT05WRVJUUk9XVFlQRVMpKTsKIAlmb3Jl YWNoKGxjLCBmcGluZm8tPmxvY2FsX2NvbmRzKQogCXsKIAkJUmVzdHJpY3RJbmZvICpyaW5mbyA9 IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5mbywgbGMpOwogCiAJCXRsaXN0ID0gYWRkX3RvX2ZsYXRf dGxpc3QodGxpc3QsCiAJCQkJCQkJCSAgcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJpbmZvLT5j bGF1c2UsCi0JCQkJCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUykpOworCQkJCQkJ CQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMgfAorCQkJCQkJCQkJCQkJICBQVkNfSU5D TFVERV9DT05WRVJUUk9XVFlQRVMpKTsKIAl9CiAKIAlyZXR1cm4gdGxpc3Q7CkBAIC0yOTMwLDYg KzI5MzksMTAgQEAgZGVwYXJzZUV4cHIoRXhwciAqbm9kZSwgZGVwYXJzZV9leHByX2N4dCAqY29u dGV4dCkKIAkJY2FzZSBUX0FnZ3JlZjoKIAkJCWRlcGFyc2VBZ2dyZWYoKEFnZ3JlZiAqKSBub2Rl LCBjb250ZXh0KTsKIAkJCWJyZWFrOworCQljYXNlIFRfQ29udmVydFJvd3R5cGVFeHByOgorCQkJ ZGVwYXJzZUNvbnZlcnRSb3d0eXBlRXhwcihjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIG5v ZGUpLAorCQkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxv ZyhFUlJPUiwgInVuc3VwcG9ydGVkIGV4cHJlc3Npb24gdHlwZSBmb3IgZGVwYXJzZTogJWQiLAog CQkJCSAoaW50KSBub2RlVGFnKG5vZGUpKTsKQEAgLTI5NjAsNyArMjk3Myw4IEBAIGRlcGFyc2VW YXIoVmFyICpub2RlLCBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KQogCSAqIHN1YnF1ZXJ5LCB1 c2UgdGhlIHJlbGF0aW9uIGFuZCBjb2x1bW4gYWxpYXMgdG8gdGhlIFZhciBwcm92aWRlZCBieSB0 aGUKIAkgKiBzdWJxdWVyeSwgaW5zdGVhZCBvZiB0aGUgcmVtb3RlIG5hbWUuCiAJICovCi0JaWYg KGlzX3N1YnF1ZXJ5X3Zhcihub2RlLCBjb250ZXh0LT5zY2FucmVsLCAmcmVsbm8sICZjb2xubykp CisJaWYgKGlzX3N1YnF1ZXJ5X3ZhcigoTm9kZSAqKSBub2RlLCBub2RlLT52YXJubywgbm9kZS0+ dmFyYXR0bm8sIGNvbnRleHQtPnNjYW5yZWwsICZyZWxubywKKwkJCQkJCSZjb2xubykpCiAJewog CQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzJWQuJXMlZCIsCiAJCQkJCQkgU1VC UVVFUllfUkVMX0FMSUFTX1BSRUZJWCwgcmVsbm8sCkBAIC0zNzQyLDYgKzM3NTYsMTE1IEBAIGRl cGFyc2VBZ2dyZWYoQWdncmVmICpub2RlLCBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KQogCWFw cGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIH0KIAorLyoKKyAqIERlcGFyc2UgYSBDb252 ZXJ0Um93dHlwZUV4cHIgbm9kZS4KKyAqCisgKiBUaGUgZnVuY3Rpb24gaGFuZGxlcyBDb252ZXJ0 Um93dHlwZUV4cHIgbm9kZXMgY29uc3RydWN0ZWQgdG8gY29udmVydCBhIGNoaWxkCisgKiB0dXBs ZSB0byBwYXJlbnQgdHVwbGUuIFRoZSBmdW5jdGlvbiBkZXBhcnNlcyBhIENvbnZlcnRSb3d0eXBl RXhwciBhcyBhIFJPVworICogZXhwcmVzc2lvbiBjaGlsZCBjb2x1bW4gcmVmcmVuY2VzIGFycmFu Z2VkIGFjY29yZGluZyB0byB0aGUgdHVwbGUgY29udmVyc2lvbgorICogbWFwIGZvciBjb252ZXJ0 aW5nIGNoaWxkIHR1cGxlIHRvIHRoYXQgb2YgdGhlIHBhcmVudC4gVGhlIFJPVyBleHByZXNzaW9u IGlzCisgKiBkZWNvcmF0ZWQgd2l0aCBDQVNFIHNpbWlsYXIgdG8gZGVwYXJzZUNvbHVtblJlZigp IHRvIHRha2UgY2FyZSBvZgorICogQ29udmVydFJvd3R5cGVFeHByIG5vZGVzIG9uIG51bGxhYmxl IHNpZGUgb2YgdGhlIGpvaW4uCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlQ29udmVydFJvd3R5 cGVFeHByKENvbnZlcnRSb3d0eXBlRXhwciAqY3JlLAorCQkJCQkJICBkZXBhcnNlX2V4cHJfY3h0 ICpjb250ZXh0KQoreworCUNvbnZlcnRSb3d0eXBlRXhwciAqZXhwciA9IGNyZTsKKwlWYXIJCSAg ICpjaGlsZF92YXI7CisJVHVwbGVEZXNjCXBhcmVudF9kZXNjOworCVR1cGxlRGVzYwljaGlsZF9k ZXNjOworCVR1cGxlQ29udmVyc2lvbk1hcCAqY29udl9tYXA7CisJQXR0ck1hcCAgICAqYXR0ck1h cDsKKwlpbnQJCQljbnQ7CisJYm9vbAkJcXVhbGlmeV9jb2wgPSAoYm1zX251bV9tZW1iZXJzKGNv bnRleHQtPnNjYW5yZWwtPnJlbGlkcykgPiAxKTsKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQt PmJ1ZjsKKwlQbGFubmVySW5mbyAqcm9vdCA9IGNvbnRleHQtPnJvb3Q7CisJaW50CQkJcmVsbm87 CisJaW50CQkJY29sbm87CisJYm9vbAkJZmlyc3RfY29sOworCisJLyoKKwkgKiBNdWx0aS1sZXZl bCBwYXJ0aXRpb25lZCBoaWVyYXJjaGllcyBwcm9kdWNlIG5lc3RlZCBDb252ZXJ0Um93dHlwZUV4 cHJzLAorCSAqIHdoZXJlIHRoZSB0b3AgQ29udmVydFJvd3R5cGVFeHByIGdpdmVzIHRoZSBwYXJl bnQgcmVsYXRpb24gYW5kIHRoZSBsZWFmCisJICogVmFyIG5vZGUgZ2l2ZXMgdGhlIGNoaWxkIHJl bGF0aW9uLiAgRmV0Y2ggdGhlIGxlYWYgVmFyIG5vZGUKKwkgKiBjb3JyZXNwb25kaW5nIHRvIHRo ZSBsb3dlc3QgY2hpbGQuCisJICovCisJd2hpbGUgKElzQShleHByLT5hcmcsIENvbnZlcnRSb3d0 eXBlRXhwcikpCisJCWV4cHIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIGV4cHItPmFy Zyk7CisJY2hpbGRfdmFyID0gY2FzdE5vZGUoVmFyLCBleHByLT5hcmcpOworCUFzc2VydChjaGls ZF92YXItPnZhcmF0dG5vID09IDApOworCisJLyoKKwkgKiBJZiB0aGUgY2hpbGQgVmFyIGJlbG9u Z3MgdG8gdGhlIGZvcmVpZ24gcmVsYXRpb24gdGhhdCBpcyBkZXBhcnNlZCBhcyBhCisJICogc3Vi cXVlcnksIHVzZSB0aGUgcmVsYXRpb24gYW5kIGNvbHVtbiBhbGlhcyB0byB0aGUgY2hpbGQgVmFy IHByb3ZpZGVkCisJICogYnkgdGhlIHN1YnF1ZXJ5LCBpbnN0ZWFkIG9mIHRoZSByZW1vdGUgbmFt ZS4KKwkgKi8KKwlpZiAoaXNfc3VicXVlcnlfdmFyKChOb2RlICopIGNyZSwgY2hpbGRfdmFyLT52 YXJubywgY2hpbGRfdmFyLT52YXJhdHRubywgY29udGV4dC0+c2NhbnJlbCwKKwkJCQkJCSZyZWxu bywgJmNvbG5vKSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiJXMlZC4l cyVkIiwKKwkJCQkJCSBTVUJRVUVSWV9SRUxfQUxJQVNfUFJFRklYLCByZWxubywKKwkJCQkJCSBT VUJRVUVSWV9DT0xfQUxJQVNfUFJFRklYLCBjb2xubyk7CisJCXJldHVybjsKKwl9CisKKwkvKiBD b25zdHJ1Y3QgdGhlIGNvbnZlcnNpb24gbWFwLiAqLworCXBhcmVudF9kZXNjID0gbG9va3VwX3Jv d3R5cGVfdHVwZGVzYyhjcmUtPnJlc3VsdHR5cGUsIC0xKTsKKwljaGlsZF9kZXNjID0gbG9va3Vw X3Jvd3R5cGVfdHVwZGVzYyhjaGlsZF92YXItPnZhcnR5cGUsCisJCQkJCQkJCQkJY2hpbGRfdmFy LT52YXJ0eXBtb2QpOworCWNvbnZfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShjaGlsZF9k ZXNjLCBwYXJlbnRfZGVzYyk7CisKKwlSZWxlYXNlVHVwbGVEZXNjKHBhcmVudF9kZXNjKTsKKwlS ZWxlYXNlVHVwbGVEZXNjKGNoaWxkX2Rlc2MpOworCisJLyogSWYgbm8gY29udmVyc2lvbiBpcyBu ZWVkZWQsIGRlcGFyc2UgdGhlIGNoaWxkIFZhciBhcyBpcy4gKi8KKwlpZiAoY29udl9tYXAgPT0g TlVMTCkKKwl7CisJCWRlcGFyc2VWYXIoY2hpbGRfdmFyLCBjb250ZXh0KTsKKwkJcmV0dXJuOwor CX0KKworCWF0dHJNYXAgPSBjb252X21hcC0+YXR0ck1hcDsKKworCS8qCisJICogSW4gY2FzZSB0 aGUgd2hvbGUtcm93IHJlZmVyZW5jZSBpcyB1bmRlciBhbiBvdXRlciBqb2luIHRoZW4gaXQgaGFz IHRvCisJICogZ28gTlVMTCB3aGVuZXZlciB0aGUgcmVzdCBvZiB0aGUgcm93IGdvZXMgTlVMTC4g RGVwYXJzaW5nIGEgam9pbiBxdWVyeQorCSAqIHdvdWxkIGFsd2F5cyBpbnZvbHZlIG11bHRpcGxl IHJlbGF0aW9ucywgdGh1cyBxdWFsaWZ5X2NvbCB3b3VsZCBiZQorCSAqIHRydWUuCisJICovCisJ aWYgKHF1YWxpZnlfY29sKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJDQVNF IFdIRU4gKCIpOworCQlBRERfUkVMX1FVQUxJRklFUihidWYsIGNoaWxkX3Zhci0+dmFybm8pOwor CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiopOjp0ZXh0IElTIE5PVCBOVUxMIFRIRU4g Iik7CisJfQorCisJLyogQ29uc3RydWN0IFJPVyBleHByZXNzaW9uIGFjY29yZGluZyB0byB0aGUg Y29udmVyc2lvbiBtYXAuICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJST1coIik7 CisJZmlyc3RfY29sID0gdHJ1ZTsKKwlmb3IgKGNudCA9IDA7IGNudCA8IHBhcmVudF9kZXNjLT5u YXR0czsgY250KyspCisJeworCQkvKiBJZ25vcmUgZHJvcHBlZCBjb2x1bW5zLiAqLworCQlpZiAo YXR0ck1hcC0+YXR0bnVtc1tjbnRdID09IDApCisJCQljb250aW51ZTsKKworCQlpZiAoIWZpcnN0 X2NvbCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJZGVwYXJzZUNv bHVtblJlZihidWYsIGNoaWxkX3Zhci0+dmFybm8sIGF0dHJNYXAtPmF0dG51bXNbY250XSwKKwkJ CQkJCSBwbGFubmVyX3J0X2ZldGNoKGNoaWxkX3Zhci0+dmFybm8sIHJvb3QpLAorCQkJCQkJIHF1 YWxpZnlfY29sKTsKKwkJZmlyc3RfY29sID0gZmFsc2U7CisJfQorCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJyknKTsKKworCS8qIENvbXBsZXRlIHRoZSBDQVNFIFdIRU4gc3RhdGVtZW50IHN0 YXJ0ZWQgYWJvdmUuICovCisJaWYgKHF1YWxpZnlfY29sKQorCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1ZiwgIiBFTkQiKTsKKworCWZyZWVfY29udmVyc2lvbl9tYXAoY29udl9tYXApOworfQor CiAvKgogICogQXBwZW5kIE9SREVSIEJZIHdpdGhpbiBhZ2dyZWdhdGUgZnVuY3Rpb24uCiAgKi8K QEAgLTQxMDQsMTIgKzQyMjcsMTggQEAgZGVwYXJzZVNvcnRHcm91cENsYXVzZShJbmRleCByZWYs IExpc3QgKnRsaXN0LCBib29sIGZvcmNlX2NvbG5vLAogCiAKIC8qCi0gKiBSZXR1cm5zIHRydWUg aWYgZ2l2ZW4gVmFyIGlzIGRlcGFyc2VkIGFzIGEgc3VicXVlcnkgb3V0cHV0IGNvbHVtbiwgaW4K KyAqIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBOb2RlIGlzIGRlcGFyc2VkIGFzIGEgc3VicXVlcnkg b3V0cHV0IGNvbHVtbiwgaW4KICAqIHdoaWNoIGNhc2UsICpyZWxubyBhbmQgKmNvbG5vIGFyZSBz ZXQgdG8gdGhlIElEcyBmb3IgdGhlIHJlbGF0aW9uIGFuZAotICogY29sdW1uIGFsaWFzIHRvIHRo ZSBWYXIgcHJvdmlkZWQgYnkgdGhlIHN1YnF1ZXJ5LgorICogY29sdW1uIGFsaWFzIHRvIHRoZSBO b2RlIHByb3ZpZGVkIGJ5IHRoZSBzdWJxdWVyeS4KKyAqCisgKiBXZSBkbyBub3QgYWxsb3cgcmVs YXRpb25zIHdpdGggUGxhY2VIb2xkZXJWYXJzIHRvIGJlIHB1c2hlZCBkb3duLiBXZSBjYWxsCisg KiB0aGlzIGZ1bmN0aW9uIG9ubHkgZm9yIHNpbXBsZSBvciBqb2luIHJlbGF0aW9ucywgd2hvc2Ug dGFyZ2V0bGlzdHMgY2FuCisgKiBjb250YWluIG9ubHkgVmFyIGFuZCBDb252ZXJ0Um93dHlwZUV4 cHIgKGluIGNhc2Ugb2YgY2hpbGQtam9pbnMpIG5vZGVzCisgKiAoYXBhcnQgZnJvbSBQSFZzKS4g U28gc3VwcG9ydCBvbmx5IFZhciBhbmQgQ29udmVydFJvd3R5cGVFeHByIG5vZGVzLgogICovCiBz dGF0aWMgYm9vbAotaXNfc3VicXVlcnlfdmFyKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWln bnJlbCwgaW50ICpyZWxubywgaW50ICpjb2xubykKK2lzX3N1YnF1ZXJ5X3ZhcihOb2RlICpub2Rl LCBJbmRleCB2YXJubywgaW50IHZhcmF0dG5vLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAorCQkJ CWludCAqcmVsbm8sIGludCAqY29sbm8pCiB7CiAJUGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbyA9 IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBmb3JlaWducmVsLT5mZHdfcHJpdmF0ZTsKIAlSZWxPcHRJ bmZvICpvdXRlcnJlbCA9IGZwaW5mby0+b3V0ZXJyZWw7CkBAIC00MTE4LDYgKzQyNDcsOCBAQCBp c19zdWJxdWVyeV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLCBpbnQgKnJl bG5vLCBpbnQgKmNvbG5vKQogCS8qIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiB0aGVzZSBjYXNl cy4gKi8KIAlBc3NlcnQoSVNfU0lNUExFX1JFTChmb3JlaWducmVsKSB8fCBJU19KT0lOX1JFTChm b3JlaWducmVsKSk7CiAKKwlBc3NlcnQoSXNBKG5vZGUsIENvbnZlcnRSb3d0eXBlRXhwcikgfHwg SXNBKG5vZGUsIFZhcikpOworCiAJLyoKIAkgKiBJZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXNuJ3Qg YSBqb2luIHJlbGF0aW9uLCBpdCBkb2Vzbid0IGhhdmUgYW55IGxvd2VyCiAJICogc3VicXVlcmll cywgc28gdGhlIFZhciBpc24ndCBhIHN1YnF1ZXJ5IG91dHB1dCBjb2x1bW4uCkBAIC00MTI5LDEw ICs0MjYwLDEwIEBAIGlzX3N1YnF1ZXJ5X3ZhcihWYXIgKm5vZGUsIFJlbE9wdEluZm8gKmZvcmVp Z25yZWwsIGludCAqcmVsbm8sIGludCAqY29sbm8pCiAJICogSWYgdGhlIFZhciBkb2Vzbid0IGJl bG9uZyB0byBhbnkgbG93ZXIgc3VicXVlcmllcywgaXQgaXNuJ3QgYSBzdWJxdWVyeQogCSAqIG91 dHB1dCBjb2x1bW4uCiAJICovCi0JaWYgKCFibXNfaXNfbWVtYmVyKG5vZGUtPnZhcm5vLCBmcGlu Zm8tPmxvd2VyX3N1YnF1ZXJ5X3JlbHMpKQorCWlmICghYm1zX2lzX21lbWJlcih2YXJubywgZnBp bmZvLT5sb3dlcl9zdWJxdWVyeV9yZWxzKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKGJtc19p c19tZW1iZXIobm9kZS0+dmFybm8sIG91dGVycmVsLT5yZWxpZHMpKQorCWlmIChibXNfaXNfbWVt YmVyKHZhcm5vLCBvdXRlcnJlbC0+cmVsaWRzKSkKIAl7CiAJCS8qCiAJCSAqIElmIG91dGVyIHJl bGF0aW9uIGlzIGRlcGFyc2VkIGFzIGEgc3VicXVlcnksIHRoZSBWYXIgaXMgYW4gb3V0cHV0CkBA IC00MTQwLDE2ICs0MjcxLDE2IEBAIGlzX3N1YnF1ZXJ5X3ZhcihWYXIgKm5vZGUsIFJlbE9wdElu Zm8gKmZvcmVpZ25yZWwsIGludCAqcmVsbm8sIGludCAqY29sbm8pCiAJCSAqLwogCQlpZiAoZnBp bmZvLT5tYWtlX291dGVycmVsX3N1YnF1ZXJ5KQogCQl7Ci0JCQlnZXRfcmVsYXRpb25fY29sdW1u X2FsaWFzX2lkcyhub2RlLCBvdXRlcnJlbCwgcmVsbm8sIGNvbG5vKTsKKwkJCWdldF9yZWxhdGlv bl9jb2x1bW5fYWxpYXNfaWRzKG5vZGUsIHZhcm5vLCB2YXJhdHRubywgb3V0ZXJyZWwsIHJlbG5v LCBjb2xubyk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCiAJCS8qIE90aGVyd2lzZSwgcmVjdXJz ZSBpbnRvIHRoZSBvdXRlciByZWxhdGlvbi4gKi8KLQkJcmV0dXJuIGlzX3N1YnF1ZXJ5X3Zhcihu b2RlLCBvdXRlcnJlbCwgcmVsbm8sIGNvbG5vKTsKKwkJcmV0dXJuIGlzX3N1YnF1ZXJ5X3Zhcihu b2RlLCB2YXJubywgdmFyYXR0bm8sIG91dGVycmVsLCByZWxubywgY29sbm8pOwogCX0KIAllbHNl CiAJewotCQlBc3NlcnQoYm1zX2lzX21lbWJlcihub2RlLT52YXJubywgaW5uZXJyZWwtPnJlbGlk cykpOworCQlBc3NlcnQoYm1zX2lzX21lbWJlcih2YXJubywgaW5uZXJyZWwtPnJlbGlkcykpOwog CiAJCS8qCiAJCSAqIElmIGlubmVyIHJlbGF0aW9uIGlzIGRlcGFyc2VkIGFzIGEgc3VicXVlcnks IHRoZSBWYXIgaXMgYW4gb3V0cHV0CkBAIC00MTU3LDEyICs0Mjg4LDEyIEBAIGlzX3N1YnF1ZXJ5 X3ZhcihWYXIgKm5vZGUsIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsIGludCAqcmVsbm8sIGludCAq Y29sbm8pCiAJCSAqLwogCQlpZiAoZnBpbmZvLT5tYWtlX2lubmVycmVsX3N1YnF1ZXJ5KQogCQl7 Ci0JCQlnZXRfcmVsYXRpb25fY29sdW1uX2FsaWFzX2lkcyhub2RlLCBpbm5lcnJlbCwgcmVsbm8s IGNvbG5vKTsKKwkJCWdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRzKG5vZGUsIHZhcm5vLCB2 YXJhdHRubywgaW5uZXJyZWwsIHJlbG5vLCBjb2xubyk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQog CiAJCS8qIE90aGVyd2lzZSwgcmVjdXJzZSBpbnRvIHRoZSBpbm5lciByZWxhdGlvbi4gKi8KLQkJ cmV0dXJuIGlzX3N1YnF1ZXJ5X3Zhcihub2RlLCBpbm5lcnJlbCwgcmVsbm8sIGNvbG5vKTsKKwkJ cmV0dXJuIGlzX3N1YnF1ZXJ5X3Zhcihub2RlLCB2YXJubywgdmFyYXR0bm8sIGlubmVycmVsLCBy ZWxubywgY29sbm8pOwogCX0KIH0KIApAQCAtNDE3MSw3ICs0MzAyLDcgQEAgaXNfc3VicXVlcnlf dmFyKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwgaW50ICpyZWxubywgaW50ICpj b2xubykKICAqIGdpdmVuIHJlbGF0aW9uLCB3aGljaCBhcmUgcmV0dXJuZWQgaW50byAqcmVsbm8g YW5kICpjb2xuby4KICAqLwogc3RhdGljIHZvaWQKLWdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNf aWRzKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKK2dldF9yZWxhdGlvbl9jb2x1 bW5fYWxpYXNfaWRzKE5vZGUgKm5vZGUsIEluZGV4IHZhcm5vLCBpbnQgdmFyYXR0bm8sIFJlbE9w dEluZm8gKmZvcmVpZ25yZWwsCiAJCQkJCQkJICBpbnQgKnJlbG5vLCBpbnQgKmNvbG5vKQogewog CVBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8gPSAoUGdGZHdSZWxhdGlvbkluZm8gKikgZm9yZWln bnJlbC0+ZmR3X3ByaXZhdGU7CkBAIC00MTkxLDExICs0MzIyLDEyIEBAIGdldF9yZWxhdGlvbl9j b2x1bW5fYWxpYXNfaWRzKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkJICog TWF0Y2ggcmVsdGFyZ2V0IGVudHJpZXMgb25seSBvbiB2YXJuby92YXJhdHRuby4gIElkZWFsbHkg dGhlcmUKIAkJICogd291bGQgYmUgc29tZSBjcm9zcy1jaGVjayBvbiB2YXJudWxsaW5ncmVscywg YnV0IGl0J3MgdW5jbGVhciB3aGF0CiAJCSAqIHRvIGRvIGV4YWN0bHk7IHdlIGRvbid0IGhhdmUg ZW5vdWdoIGNvbnRleHQgdG8ga25vdyB3aGF0IHRoYXQgdmFsdWUKLQkJICogc2hvdWxkIGJlLgor CQkgKiBzaG91bGQgYmUuICBBbHNvIG1hdGNoIHBvc2libGUgY29udmVydGVkIHdob2xlLXJvdyBy ZWZlcmVuY2VzLgogCQkgKi8KLQkJaWYgKElzQSh0bHZhciwgVmFyKSAmJgotCQkJdGx2YXItPnZh cm5vID09IG5vZGUtPnZhcm5vICYmCi0JCQl0bHZhci0+dmFyYXR0bm8gPT0gbm9kZS0+dmFyYXR0 bm8pCisJCWlmICgoSXNBKHRsdmFyLCBWYXIpICYmCisJCQkgdGx2YXItPnZhcm5vID09IHZhcm5v ICYmCisJCQkgdGx2YXItPnZhcmF0dG5vID09IHZhcmF0dG5vKQorCQkJfHwgaXNfZXF1YWxfY29u dmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2VzKChOb2RlICopIHRsdmFyLCBub2RlKSkKIAkJewog CQkJKmNvbG5vID0gaTsKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IGYyYmNkNmFhOThjLi40NmYwMDUzMDdlMSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC05 OTQ3LDYgKzk5NDcsMTEgQEAgQUxURVIgVEFCTEUgZnBydDFfcDEgU0VUIChhdXRvdmFjdXVtX2Vu YWJsZWQgPSAnZmFsc2UnKTsKIEFMVEVSIFRBQkxFIGZwcnQxX3AyIFNFVCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gJ2ZhbHNlJyk7CiBJTlNFUlQgSU5UTyBmcHJ0MV9wMSBTRUxFQ1QgaSwgaSwgdG9f Y2hhcihpLzUwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMCwgMjQ5LCAyKSBpOwog SU5TRVJUIElOVE8gZnBydDFfcDIgU0VMRUNUIGksIGksIHRvX2NoYXIoaS81MCwgJ0ZNMDAwMCcp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MCwgNDk5LCAyKSBpOworLS0gQWRkIGFuZCBkcm9wIGNv bHVtbiBmcm9tIHRoZSBwYXJlbnQgcGFydGl0aW9uIHNvIHRoYXQgdGhlIG51bWJlciBvZgorLS0g YXR0cmlidXRlcyBpbiB0dXBsZSBkZXNjcmlwdG9ycyBvZiBwYXJlbnQgYW5kIGNoaWxkIGRvIG5v dCBtYXRjaCBleGFjdGx5LgorLS0gVXNlZCBmb3IgdGVzdGluZyBDb252ZXJ0Um93dHlwZUV4cHIu CitBTFRFUiBUQUJMRSBmcHJ0MSBEUk9QIENPTFVNTiBjOworQUxURVIgVEFCTEUgZnBydDEgQURE IENPTFVNTiBjIHZhcmNoYXI7CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmdHBydDFfcDEgUEFSVElU SU9OIE9GIGZwcnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDI1MCkKIAlTRVJWRVIgbG9vcGJh Y2sgT1BUSU9OUyAodGFibGVfbmFtZSAnZnBydDFfcDEnLCB1c2VfcmVtb3RlX2VzdGltYXRlICd0 cnVlJyk7CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmdHBydDFfcDIgUEFSVElUSU9OIE9GIGZwcnQx IEZPUiBWQUxVRVMgRlJPTSAoMjUwKSBUTyAoNTAwKQpAQCAtMTAwMTMsMjMgKzEwMDE4LDE5IEBA IFNFTEVDVCB0MS5hLHQyLmIsdDIuYyBGUk9NIGZwcnQxIHQxIExFRlQgSk9JTiAoU0VMRUNUICog RlJPTSBmcHJ0MiBXSEVSRSBhIDwgMTApCiAgOCB8ICAgfCAKICg1IHJvd3MpCiAKLS0tIHdpdGgg d2hvbGUtcm93IHJlZmVyZW5jZTsgcGFydGl0aW9ud2lzZSBqb2luIGRvZXMgbm90IGFwcGx5Cist LSB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0 MS53ciwgdDIud3IgRlJPTSAoU0VMRUNUIHQxIHdyLCBhIEZST00gZnBydDEgdDEgV0hFUkUgdDEu YSAlIDI1ID0gMCkgdDEgRlVMTCBKT0lOIChTRUxFQ1QgdDIgd3IsIGIgRlJPTSBmcHJ0MiB0MiBX SEVSRSB0Mi5iICUgMjUgPSAwKSB0MiBPTiAodDEuYSA9IHQyLmIpIE9SREVSIEJZIDEsMjsKLSAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiAoKHQxLiop OjpmcHJ0MSksICgodDIuKik6OmZwcnQyKQotICAgLT4gIEhhc2ggRnVsbCBKb2luCi0gICAgICAg ICBIYXNoIENvbmQ6ICh0MS5hID0gdDIuYikKLSAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAg ICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AxIHQxXzEKLSAgICAgICAgICAgICAg IC0+ICBGb3JlaWduIFNjYW4gb24gZnRwcnQxX3AyIHQxXzIKLSAgICAgICAgIC0+ICBIYXNoCi0g ICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWln biBTY2FuIG9uIGZ0cHJ0Ml9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWln biBTY2FuIG9uIGZ0cHJ0Ml9wMiB0Ml8yCi0oMTEgcm93cykKKyAgIC0+ICBBcHBlbmQKKyAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9w MSB0MV8xKSBGVUxMIEpPSU4gKGZ0cHJ0Ml9wMSB0Ml8xKQorICAgICAgICAgLT4gIEZvcmVpZ24g U2NhbgorICAgICAgICAgICAgICAgUmVsYXRpb25zOiAoZnRwcnQxX3AyIHQxXzIpIEZVTEwgSk9J TiAoZnRwcnQyX3AyIHQyXzIpCisoNyByb3dzKQogCiBTRUxFQ1QgdDEud3IsIHQyLndyIEZST00g KFNFTEVDVCB0MSB3ciwgYSBGUk9NIGZwcnQxIHQxIFdIRVJFIHQxLmEgJSAyNSA9IDApIHQxIEZV TEwgSk9JTiAoU0VMRUNUIHQyIHdyLCBiIEZST00gZnBydDIgdDIgV0hFUkUgdDIuYiAlIDI1ID0g MCkgdDIgT04gKHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSAxLDI7CiAgICAgICAgd3IgICAgICAgfCAg ICAgICB3ciAgICAgICAKQEAgLTEwMTEyLDIyICsxMDExMywyNiBAQCBTRUxFQ1QgdDEuYSwgdDEu cGh2LCB0Mi5iLCB0Mi5waHYgRlJPTSAoU0VMRUNUICd0MV9waHYnIHBodiwgKiBGUk9NIGZwcnQx IFdIRVJFCiAgICAgIHwgICAgICAgIHwgNDc1IHwgdDJfcGh2CiAoMTQgcm93cykKIAotLS0gdGVz dCBGT1IgVVBEQVRFOyBwYXJ0aXRpb253aXNlIGpvaW4gZG9lcyBub3QgYXBwbHkKKy0tIHRlc3Qg Rk9SIFVQREFURQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBm cHJ0MSB0MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAl IDI1ID0gMCBPUkRFUiBCWSAxLDIgRk9SIFVQREFURSBPRiB0MTsKLSAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTG9ja1Jvd3MKLSAgIC0+ICBOZXN0ZWQgTG9v cAotICAgICAgICAgSm9pbiBGaWx0ZXI6ICh0MS5hID0gdDIuYikKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogdDEuYQogICAgICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAg LT4gIEZvcmVpZ24gU2NhbiBvbiBmdHBydDFfcDEgdDFfMQotICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBmdHBydDFfcDIgdDFfMgotICAgICAgICAgLT4gIE1hdGVyaWFsaXplCi0g ICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWln biBTY2FuIG9uIGZ0cHJ0Ml9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWln biBTY2FuIG9uIGZ0cHJ0Ml9wMiB0Ml8yCi0oMTAgcm93cykKKyAgICAgICAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9wMSB0 MV8xKSBJTk5FUiBKT0lOIChmdHBydDJfcDEgdDJfMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBOZXN0ZWQgTG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2Nh biBvbiBmdHBydDFfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVp Z24gU2NhbiBvbiBmdHBydDJfcDEgdDJfMQorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2Nh bgorICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiAoZnRwcnQxX3AyIHQxXzIpIElOTkVS IEpPSU4gKGZ0cHJ0Ml9wMiB0Ml8yKQorICAgICAgICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBM b29wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIGZ0cHJ0 MV9wMiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9u IGZ0cHJ0Ml9wMiB0Ml8yCisoMTQgcm93cykKIAogU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0 MSB0MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1 ID0gMCBPUkRFUiBCWSAxLDIgRk9SIFVQREFURSBPRiB0MTsKICAgYSAgfCAgYiAgCkBAIC0xMDEz OCw2ICsxMDE0Myw0NyBAQCBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVSIEpP SU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hCiAgNDAwIHwgNDAwCiAoNCBy b3dzKQogCistLSB0ZXN0IHNvcnQgcGF0aHMgYW5kIHdob2xlLXJvdyByZWZlcmVuY2VzCitzZXQg ZW5hYmxlX3NvcnQgdG8gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIHQy LmIgRlJPTSBmcHJ0MSB0MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hF UkUgdDEuYSAlIDI1ID0gMCBPUkRFUiBCWSB0Mi5hIEZPUiBVUERBVEUgT0YgdDE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMb2NrUm93cworICAgLT4gIE1lcmdlIEFwcGVuZAor ICAgICAgICAgU29ydCBLZXk6IHQyLmEKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAg ICAgICAgICAgIFJlbGF0aW9uczogKGZ0cHJ0MV9wMSB0MV8xKSBJTk5FUiBKT0lOIChmdHBydDJf cDEgdDJfMSkKKyAgICAgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAg IERpc2FibGVkIE5vZGVzOiAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBOZXN0ZWQgTG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVp Z24gU2NhbiBvbiBmdHBydDFfcDEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBmdHBydDJfcDEgdDJfMQorICAgICAgICAgLT4gIEZvcmVp Z24gU2NhbgorICAgICAgICAgICAgICAgUmVsYXRpb25zOiAoZnRwcnQxX3AyIHQxXzIpIElOTkVS IEpPSU4gKGZ0cHJ0Ml9wMiB0Ml8yKQorICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAg ICAgICAgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDEKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZCBOb2RlczogMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzIuYQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIGZ0cHJ0MV9wMiB0MV8yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIGZ0cHJ0Ml9wMiB0Ml8yCisoMjMg cm93cykKKworU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0MSB0MSBJTk5FUiBKT0lOIGZwcnQy IHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1ID0gMCBPUkRFUiBCWSB0Mi5hIEZP UiBVUERBVEUgT0YgdDE7CisgIGEgIHwgIGIgIAorLS0tLS0rLS0tLS0KKyAgIDAgfCAgIDAKKyAx NTAgfCAxNTAKKyAyNTAgfCAyNTAKKyA0MDAgfCA0MDAKKyg0IHJvd3MpCisKK3Jlc2V0IGVuYWJs ZV9zb3J0OwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIC0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tIHRlc3QgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGVzCmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jCmluZGV4IGFkYzYyNTc2ZDFmLi4yNmZlMTZjYzJmYSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKQEAgLTE0NzYsNiArMTQ3NiwyMiBAQCBnZXRfdHVwZGVzY19mb3Jfam9p bl9zY2FuX3R1cGxlcyhGb3JlaWduU2NhblN0YXRlICpub2RlKQogCQkgKi8KIAkJdmFyID0gKFZh ciAqKSBsaXN0X250aF9ub2RlKFRhcmdldEVudHJ5LCBmc3BsYW4tPmZkd19zY2FuX3RsaXN0LAog CQkJCQkJCQkJaSktPmV4cHI7CisKKwkJLyoKKwkJICogVE9ETzogRG8gd2UgcmVhbGx5IG5lZWQg dGhpcz8gVGFyZ2V0IGxpc3QgY2FuIGNvbnRhaW4gbm90IG9ubHkKKwkJICogVmFycywgYnV0IENv bnZlcnRSb3d0eXBlRXhwciB3aWxsIGNlcnRhaW5seSBjb250cmlidXRlIHRvCisJCSAqIHNzLnNz X1NjYW5UdXBsZVNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IgYXR0cmlidXRlIHR5cGUgaW4KKwkJ ICogRXhlY1R5cGVGcm9tVEwoKSAoY2FsbGVkIGZyb20gRXhlY0luaXRGb3JlaWduU2NhbigpKSBp biB0aGUgc2FtZQorCQkgKiB3YXkuCisJCSAqLworCQlpZiAoSXNBKHZhciwgQ29udmVydFJvd3R5 cGVFeHByKSkKKwkJeworCQkJQ29udmVydFJvd3R5cGVFeHByICpjb252ZXhwciA9IGNhc3ROb2Rl KENvbnZlcnRSb3d0eXBlRXhwciwgdmFyKTsKKworCQkJYXR0LT5hdHR0eXBpZCA9IGNvbnZleHBy LT5yZXN1bHR0eXBlOworCQkJY29udGludWU7CisJCX0KKwogCQlpZiAoIUlzQSh2YXIsIFZhcikg fHwgdmFyLT52YXJhdHRubyAhPSAwKQogCQkJY29udGludWU7CiAJCXJ0ZSA9IGxpc3RfbnRoKGVz dGF0ZS0+ZXNfcmFuZ2VfdGFibGUsIHZhci0+dmFybm8gLSAxKTsKQEAgLTYxMTksNyArNjEzNSw3 IEBAIGFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkJLyogSW5jbHVkZSBjb2x1bW5zIHJlcXVpcmVkIGZvciBldmFsdWF0 aW5nIFBIVnMgaW4gdGhlIHRsaXN0LiAqLwogCQlhZGRfbmV3X2NvbHVtbnNfdG9fcGF0aHRhcmdl dCh0YXJnZXQsCiAJCQkJCQkJCQkgIHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSB0YXJnZXQtPmV4 cHJzLAotCQkJCQkJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKSk7CisJCQkJCQkJ CQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMgfCBQVkNfSU5DTFVERV9DT05WRVJUUk9X VFlQRVMpKTsKIAogCQkvKiBJbmNsdWRlIGNvbHVtbnMgcmVxdWlyZWQgZm9yIGV2YWx1YXRpbmcg dGhlIGxvY2FsIGNvbmRpdGlvbnMuICovCiAJCWZvcmVhY2gobGMsIGZwaW5mby0+bG9jYWxfY29u ZHMpCkBAIC02MTI4LDcgKzYxNDQsNyBAQCBhZGRfcGF0aHNfd2l0aF9wYXRoa2V5c19mb3JfcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAKIAkJCWFkZF9uZXdfY29sdW1u c190b19wYXRodGFyZ2V0KHRhcmdldCwKIAkJCQkJCQkJCQkgIHB1bGxfdmFyX2NsYXVzZSgoTm9k ZSAqKSByaW5mby0+Y2xhdXNlLAotCQkJCQkJCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9M REVSUykpOworCQkJCQkJCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyB8IFBWQ19J TkNMVURFX0NPTlZFUlRST1dUWVBFUykpOwogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggMzcyZmU2ZGFkMTUuLmFkZTBhYjhjYWUwIDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMzExNSw2ICsz MTE1LDExIEBAIEFMVEVSIFRBQkxFIGZwcnQxX3AxIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g J2ZhbHNlJyk7CiBBTFRFUiBUQUJMRSBmcHJ0MV9wMiBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9 ICdmYWxzZScpOwogSU5TRVJUIElOVE8gZnBydDFfcDEgU0VMRUNUIGksIGksIHRvX2NoYXIoaS81 MCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDI0OSwgMikgaTsKIElOU0VSVCBJ TlRPIGZwcnQxX3AyIFNFTEVDVCBpLCBpLCB0b19jaGFyKGkvNTAsICdGTTAwMDAnKSBGUk9NIGdl bmVyYXRlX3NlcmllcygyNTAsIDQ5OSwgMikgaTsKKy0tIEFkZCBhbmQgZHJvcCBjb2x1bW4gZnJv bSB0aGUgcGFyZW50IHBhcnRpdGlvbiBzbyB0aGF0IHRoZSBudW1iZXIgb2YKKy0tIGF0dHJpYnV0 ZXMgaW4gdHVwbGUgZGVzY3JpcHRvcnMgb2YgcGFyZW50IGFuZCBjaGlsZCBkbyBub3QgbWF0Y2gg ZXhhY3RseS4KKy0tIFVzZWQgZm9yIHRlc3RpbmcgQ29udmVydFJvd3R5cGVFeHByLgorQUxURVIg VEFCTEUgZnBydDEgRFJPUCBDT0xVTU4gYzsKK0FMVEVSIFRBQkxFIGZwcnQxIEFERCBDT0xVTU4g YyB2YXJjaGFyOwogQ1JFQVRFIEZPUkVJR04gVEFCTEUgZnRwcnQxX3AxIFBBUlRJVElPTiBPRiBm cHJ0MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyNTApCiAJU0VSVkVSIGxvb3BiYWNrIE9QVElP TlMgKHRhYmxlX25hbWUgJ2ZwcnQxX3AxJywgdXNlX3JlbW90ZV9lc3RpbWF0ZSAndHJ1ZScpOwog Q1JFQVRFIEZPUkVJR04gVEFCTEUgZnRwcnQxX3AyIFBBUlRJVElPTiBPRiBmcHJ0MSBGT1IgVkFM VUVTIEZST00gKDI1MCkgVE8gKDUwMCkKQEAgLTMxNDksNyArMzE1NCw3IEBAIEVYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCB0MS5hLHQyLmIsdDIuYyBGUk9NIGZwcnQxIHQxIExF RlQgSk9JTiAoU0VMRUNUICogRlJPTSBmcHJ0MiBXSEVSRSBhIDwgMTApIHQyIE9OICh0MS5hID0g dDIuYiBhbmQgdDEuYiA9IHQyLmEpIFdIRVJFIHQxLmEgPCAxMCBPUkRFUiBCWSAxLDIsMzsKIFNF TEVDVCB0MS5hLHQyLmIsdDIuYyBGUk9NIGZwcnQxIHQxIExFRlQgSk9JTiAoU0VMRUNUICogRlJP TSBmcHJ0MiBXSEVSRSBhIDwgMTApIHQyIE9OICh0MS5hID0gdDIuYiBhbmQgdDEuYiA9IHQyLmEp IFdIRVJFIHQxLmEgPCAxMCBPUkRFUiBCWSAxLDIsMzsKIAotLS0gd2l0aCB3aG9sZS1yb3cgcmVm ZXJlbmNlOyBwYXJ0aXRpb253aXNlIGpvaW4gZG9lcyBub3QgYXBwbHkKKy0tIHdpdGggd2hvbGUt cm93IHJlZmVyZW5jZQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLndyLCB0Mi53ciBG Uk9NIChTRUxFQ1QgdDEgd3IsIGEgRlJPTSBmcHJ0MSB0MSBXSEVSRSB0MS5hICUgMjUgPSAwKSB0 MSBGVUxMIEpPSU4gKFNFTEVDVCB0MiB3ciwgYiBGUk9NIGZwcnQyIHQyIFdIRVJFIHQyLmIgJSAy NSA9IDApIHQyIE9OICh0MS5hID0gdDIuYikgT1JERVIgQlkgMSwyOwogU0VMRUNUIHQxLndyLCB0 Mi53ciBGUk9NIChTRUxFQ1QgdDEgd3IsIGEgRlJPTSBmcHJ0MSB0MSBXSEVSRSB0MS5hICUgMjUg PSAwKSB0MSBGVUxMIEpPSU4gKFNFTEVDVCB0MiB3ciwgYiBGUk9NIGZwcnQyIHQyIFdIRVJFIHQy LmIgJSAyNSA9IDApIHQyIE9OICh0MS5hID0gdDIuYikgT1JERVIgQlkgMSwyOwpAQCAtMzE2NCwx MSArMzE2OSwxOCBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYSwgdDEucGh2LCB0 Mi5iLCB0Mi5waHYgRlJPTSAoU0VMRUNUICd0MV9waHYnIHBodiwgKiBGUk9NIGZwcnQxIFdIRVJF IGEgJSAyNSA9IDApIHQxIEZVTEwgSk9JTiAoU0VMRUNUICd0Ml9waHYnIHBodiwgKiBGUk9NIGZw cnQyIFdIRVJFIGIgJSAyNSA9IDApIHQyIE9OICh0MS5hID0gdDIuYikgT1JERVIgQlkgdDEuYSwg dDIuYjsKIFNFTEVDVCB0MS5hLCB0MS5waHYsIHQyLmIsIHQyLnBodiBGUk9NIChTRUxFQ1QgJ3Qx X3BodicgcGh2LCAqIEZST00gZnBydDEgV0hFUkUgYSAlIDI1ID0gMCkgdDEgRlVMTCBKT0lOIChT RUxFQ1QgJ3QyX3BodicgcGh2LCAqIEZST00gZnBydDIgV0hFUkUgYiAlIDI1ID0gMCkgdDIgT04g KHQxLmEgPSB0Mi5iKSBPUkRFUiBCWSB0MS5hLCB0Mi5iOwogCi0tLSB0ZXN0IEZPUiBVUERBVEU7 IHBhcnRpdGlvbndpc2Ugam9pbiBkb2VzIG5vdCBhcHBseQorLS0gdGVzdCBGT1IgVVBEQVRFCiBF WFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIGZwcnQxIHQxIElOTkVS IEpPSU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5iKSBXSEVSRSB0MS5hICUgMjUgPSAwIE9SREVS IEJZIDEsMiBGT1IgVVBEQVRFIE9GIHQxOwogU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0MSB0 MSBJTk5FUiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1ID0g MCBPUkRFUiBCWSAxLDIgRk9SIFVQREFURSBPRiB0MTsKIAorLS0gdGVzdCBzb3J0IHBhdGhzIGFu ZCB3aG9sZS1yb3cgcmVmZXJlbmNlcworc2V0IGVuYWJsZV9zb3J0IHRvIG9mZjsKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCB0Mi5iIEZST00gZnBydDEgdDEgSU5ORVIgSk9JTiBm cHJ0MiB0MiBPTiAodDEuYSA9IHQyLmIpIFdIRVJFIHQxLmEgJSAyNSA9IDAgT1JERVIgQlkgdDIu YSBGT1IgVVBEQVRFIE9GIHQxOworU0VMRUNUIHQxLmEsIHQyLmIgRlJPTSBmcHJ0MSB0MSBJTk5F UiBKT0lOIGZwcnQyIHQyIE9OICh0MS5hID0gdDIuYikgV0hFUkUgdDEuYSAlIDI1ID0gMCBPUkRF UiBCWSB0Mi5hIEZPUiBVUERBVEUgT0YgdDE7CityZXNldCBlbmFibGVfc29ydDsKKwogUkVTRVQg ZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIAogCi0tIAoyLjM0LjEKCg== --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0004-Compare-converted-whole-row-vars-in-search_indexed_t.patch Content-Disposition: attachment; filename*0*=UTF-8''v2-0004-Compare-converted-whole-row-vars-in-search_ind; filename*1*=exed_t.patch; size=13827 RnJvbSA1ZjFmZDg3YmZhMGFhMjJjYjE3NGZkMTUyNDcxMmIzZWIxZWIzZDE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDI2IERlYyAyMDIzIDEwOjA3OjEzICswMzAwClN1YmplY3Q6IFtQ QVRDSCA0LzZdIENvbXBhcmUgY29udmVydGVkIHdob2xlIHJvdyB2YXJzIGluCiBzZWFyY2hfaW5k ZXhlZF90bGlzdF9mb3Jfbm9uX3ZhcigpIGNvcnJlY3RseSBhbmQgZml4IHRlc3QgcmVzdWx0cwoK LS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCA0OSAr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYyAgICAgICAgICAg IHwgMjMgKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaCAgICAgICAgICAgICAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaCAgICAgICAgICAgICAgICAg fCAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dCAgfCAz OSArKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91 dCAgfCA3MiArKysrKysrKysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fYWdncmVnYXRlLnNxbCAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X2pvaW4uc3FsICAgICAgIHwgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMo KyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggMWVjNDQ2MGU3MDcu LjY2YjhhMGRkODNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtNDgzOSwzICs0ODM5LDUyIEBA IGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpCiAKIAlyZXR1cm4g ZmFsc2U7CiB9CisKKy8qCisgKiBpc19lcXVhbF9jb252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5j ZXMKKyAqCQlEZXRlcm1pbmUgaWYgYm90aCBub2RlcyBhcmUgZXF1aXZhbGVudCBDb252ZXJ0Um93 dHlwZUV4cHJzCisgKgkJb3ZlciB0aGUgc2FtZSB2YXIuCisgKgkJSXQgZGlmZmVycyBmcm9tIGVx dWFsKCksIGJlY2F1c2Ugd2UgaWdub3JlIHZhcm51bGxpbmdyZWxzLgorICovCitib29sCitpc19l cXVhbF9jb252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5jZXMoTm9kZSAqbm9kZTEsIE5vZGUgKm5v ZGUyKQoreworCUNvbnZlcnRSb3d0eXBlRXhwciAqY29udmV4cHIxOworCUNvbnZlcnRSb3d0eXBl RXhwciAqY29udmV4cHIyOworCisJaWYgKCFub2RlMSB8fCAhSXNBKG5vZGUxLCBDb252ZXJ0Um93 dHlwZUV4cHIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIW5vZGUyIHx8ICFJc0Eobm9kZTIs IENvbnZlcnRSb3d0eXBlRXhwcikpCisJCXJldHVybiBmYWxzZTsKKworCWNvbnZleHByMSA9IGNh c3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZTEpOworCWNvbnZleHByMiA9IGNhc3ROb2Rl KENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZTIpOworCisJd2hpbGUgKGNvbnZleHByMS0+Y29udmVy dGZvcm1hdCA9PSBDT0VSQ0VfSU1QTElDSVRfQ0FTVCAmJgorCQkgY29udmV4cHIyLT5jb252ZXJ0 Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9DQVNUICYmCisJCSBjb252ZXhwcjEtPnJlc3VsdHR5 cGUgPT0gY29udmV4cHIyLT5yZXN1bHR0eXBlICYmCisJCSBJc0EoY29udmV4cHIxLT5hcmcsIENv bnZlcnRSb3d0eXBlRXhwcikgJiYKKwkJIElzQShjb252ZXhwcjItPmFyZywgQ29udmVydFJvd3R5 cGVFeHByKSkKKwl7CisJCWNvbnZleHByMSA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwg Y29udmV4cHIxLT5hcmcpOworCQljb252ZXhwcjIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4 cHIsIGNvbnZleHByMi0+YXJnKTsKKwl9CisKKwlpZiAoSXNBKGNvbnZleHByMS0+YXJnLCBWYXIp ICYmIElzQShjb252ZXhwcjItPmFyZywgVmFyKSkKKwl7CisJCVZhcgkJKnZhcjEgPSBjYXN0Tm9k ZShWYXIsIGNvbnZleHByMS0+YXJnKTsKKwkJVmFyCQkqdmFyMiA9IGNhc3ROb2RlKFZhciwgY29u dmV4cHIyLT5hcmcpOworCisJCWlmICgodmFyMS0+dmFybm8gPT0gdmFyMi0+dmFybm8pICYmCisJ CQkodmFyMS0+dmFyYXR0bm8gPT0gdmFyMi0+dmFyYXR0bm8pICYmCisJCQkodmFyMS0+dmFybGV2 ZWxzdXAgPT0gdmFyMi0+dmFybGV2ZWxzdXApICYmCisJCQkodmFyMS0+dmFydHlwZSA9PSB2YXIy LT52YXJ0eXBlKSkKKwkJeworCQkJLyogVE9ETzogQ2FuIHdlIHN0YXRlIHRoYXQgYm90aCB2YXJh dHRub3MgaXMgMD8gKi8KKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNl OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDI5NjY0NGY4YzJlLi40 ZGUyZmJjMzkyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjk0OCw3 ICsyOTQ4LDcgQEAgc2VhcmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoRXhwciAqbm9kZSwK IAlpZiAoSXNBKG5vZGUsIENvbnN0KSkKIAkJcmV0dXJuIE5VTEw7CiAKLQl0bGUgPSB0bGlzdF9t ZW1iZXIobm9kZSwgaXRsaXN0LT50bGlzdCk7CisJdGxlID0gdGxpc3RfbWVtYmVyX21hdGNoX2Nv bnZlcnRlZF93aG9sZV9yb3cobm9kZSwgaXRsaXN0LT50bGlzdCk7CiAJaWYgKHRsZSkKIAl7CiAJ CS8qIEZvdW5kIGEgbWF0Y2hpbmcgc3VicGxhbiBvdXRwdXQgZXhwcmVzc2lvbiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdGxpc3QuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3RsaXN0LmMKaW5kZXggN2VmN2YzNGQ4YjUuLmYzMTU3ZjBmNjQ5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC90bGlzdC5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3RsaXN0LmMKQEAgLTExOSw2ICsxMTksMjkgQEAgdGxpc3RfbWVt YmVyX21hdGNoX3ZhcihWYXIgKnZhciwgTGlzdCAqdGFyZ2V0bGlzdCkKIAlyZXR1cm4gTlVMTDsK IH0KIAorLyoKKyAqIHRsaXN0X21lbWJlcl9tYXRjaF9jb252ZXJ0ZWRfd2hvbGVfcm93CisgKiAJ dGxpc3RfbWVtYmVyKCkgdmFyaWFudCwgd2hpY2ggY29tcGFyZXMgd2hvbGUgdmFyIHJlZmVyZW5j ZXMKKyAqIAliYXNlZCBvbiB0aGVpciB2YXJuby92YXJhdHRubworICovCitUYXJnZXRFbnRyeSAq Cit0bGlzdF9tZW1iZXJfbWF0Y2hfY29udmVydGVkX3dob2xlX3JvdyhFeHByICpub2RlLCBMaXN0 ICp0YXJnZXRsaXN0KQoreworCUxpc3RDZWxsICAgKnRlbXA7CisKKwlmb3JlYWNoKHRlbXAsIHRh cmdldGxpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlbnRyeSA9IChUYXJnZXRFbnRyeSAqKSBs Zmlyc3QodGVtcCk7CisKKwkJaWYgKGVxdWFsKG5vZGUsIHRsZW50cnktPmV4cHIpKQorCQkJcmV0 dXJuIHRsZW50cnk7CisKKwkJaWYgKGlzX2VxdWFsX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJl bmNlcygoTm9kZSAqKW5vZGUsIChOb2RlICopdGxlbnRyeS0+ZXhwcikpCisJCQlyZXR1cm4gdGxl bnRyeTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKIC8qCiAgKiBhZGRfdG9fZmxhdF90bGlzdAog ICoJCUFkZCBtb3JlIGl0ZW1zIHRvIGEgZmxhdHRlbmVkIHRsaXN0IChpZiB0aGV5J3JlIG5vdCBh bHJlYWR5IGluIGl0KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaAppbmRleCBkNDNlODdlMjQwMi4uNTI0Zjll YTg0NmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCkBAIC0yMjIsNCArMjIyLDUgQEAgZXh0ZXJuIGJv b2wgcGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2ltcGwoc3RydWN0IFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAogCQkJCQkJCQkJICAgdm9pZCAqY29udGV4dCk7CiAKIGV4dGVybiBib29sIGlzX2NvbnZlcnRl ZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpOworZXh0ZXJuIGJvb2wgaXNfZXF1YWxf Y29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2VzKE5vZGUgKm5vZGUxLCBOb2RlICpub2RlMik7 CiAjZW5kaWYJCQkJCQkJLyogTk9ERUZVTkNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L29wdGltaXplci90bGlzdC5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3RsaXN0LmgKaW5kZXgg MTVmOGY0YTRiMDAuLjlhYjZhZGMwMWI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvdGxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvdGxpc3QuaApAQCAtMTgsNiAr MTgsNyBAQAogCiAKIGV4dGVybiBUYXJnZXRFbnRyeSAqdGxpc3RfbWVtYmVyKEV4cHIgKm5vZGUs IExpc3QgKnRhcmdldGxpc3QpOworZXh0ZXJuIFRhcmdldEVudHJ5ICp0bGlzdF9tZW1iZXJfbWF0 Y2hfY29udmVydGVkX3dob2xlX3JvdyhFeHByICpub2RlLCBMaXN0ICp0YXJnZXRsaXN0KTsKIAog ZXh0ZXJuIExpc3QgKmFkZF90b19mbGF0X3RsaXN0KExpc3QgKnRsaXN0LCBMaXN0ICpleHBycyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3Jl Z2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUu b3V0CmluZGV4IDVmMmMwY2Y1Nzg2Li5iYTkyNDVlNDAxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBAIC00NTMsMjcgKzQ1Mywz NiBAQCBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiMSB0MSwg cGFnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0MgogIDI0IHwgIDkwMCB8ICAgMTAwCiAoNSByb3dz KQogCi0tLSBDaGVjayB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2U7IHBhcnRpdGlvbndpc2UgYWdn cmVnYXRpb24gZG9lcyBub3QgYXBwbHkKKy0tIENoZWNrIHdpdGggd2hvbGUtcm93IHJlZmVyZW5j ZQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQodDEp IEZST00gcGFnZ190YWIxIHQxLCBwYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAg QlkgdDEueCBPUkRFUiBCWSAxLCAyLCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5 OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCgodDEuKik6OnBhZ2dfdGFiMSkpKQotICAgLT4g IEhhc2hBZ2dyZWdhdGUKLSAgICAgICAgIEdyb3VwIEtleTogdDEueAotICAgICAgICAgLT4gIEhh c2ggSm9pbgotICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLnkpCi0gICAgICAg ICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cGFnZ190YWIxX3AxIHQxXzEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw YWdnX3RhYjFfcDIgdDFfMgotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiMV9wMyB0MV8zCi0gICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAg ICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBhZ2dfdGFiMl9wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWIyX3AyIHQyXzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjJfcDMgdDJfMwotKDE1IHJvd3MpCisgICAtPiAgQXBwZW5k CisgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MS54ID0gdDIueSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIyX3AxIHQyCisg ICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8x LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQxXzEueCA9IHQyXzEueSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjJfcDIg dDJfMQorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190 YWIxX3AzIHQxXzIKKygyNCByb3dzKQogCiBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCh0 MSkgRlJPTSBwYWdnX3RhYjEgdDEsIHBhZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9V UCBCWSB0MS54IE9SREVSIEJZIDEsIDIsIDM7CiAgeCAgfCBzdW0gIHwgY291bnQgCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CmluZGV4IDEwOGY5ZWNiNDQ1 Li4yMmM0Mjc5OTMxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f am9pbi5vdXQKQEAgLTE0NywyOCArMTQ3LDMzIEBAIFNFTEVDVCBDT1VOVCgqKSBGUk9NIHBydDEg dDEKICAgIDMwMAogKDEgcm93KQogCi0tLSBsZWZ0IG91dGVyIGpvaW4sIHdpdGggd2hvbGUtcm93 IHJlZmVyZW5jZTsgcGFydGl0aW9ud2lzZSBqb2luIGRvZXMgbm90IGFwcGx5CistLSBsZWZ0IG91 dGVyIGpvaW4sIHdpdGggd2hvbGUtcm93IHJlZmVyZW5jZQogRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIHQxLCB0MiBGUk9NIHBydDEgdDEgTEVGVCBKT0lOIHBydDIgdDIgT04gdDEuYSA9IHQy LmIgV0hFUkUgdDEuYiA9IDAgT1JERVIgQlkgdDEuYSwgdDIuYjsKICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5OiB0MS5hLCB0 Mi5iCi0gICAtPiAgSGFzaCBSaWdodCBKb2luCi0gICAgICAgICBIYXNoIENvbmQ6ICh0Mi5iID0g dDEuYSkKLSAgICAgICAgIC0+ICBBcHBlbmQKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBI YXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEuYiA9IHQxXzEu YSkKICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AxIHQyXzEKLSAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AyIHQyXzIKLSAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwcnQyX3AzIHQyXzMKLSAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaAogICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDEgdDFfMQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAtPiAgSGFzaCBSaWdodCBKb2luCisgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLmIgPSB0MV8yLmEpCisgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHJ0Ml9wMiB0Ml8yCisgICAgICAgICAgICAgICAtPiAgSGFzaAogICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDIgdDFfMgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAtPiAgSGFzaCBSaWdodCBK b2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLmIgPSB0MV8zLmEpCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCisgICAgICAgICAgICAgICAtPiAg SGFzaAogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDMgdDFfMwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IDApCi0oMTYgcm93cykKKygy MSByb3dzKQogCiBTRUxFQ1QgdDEsIHQyIEZST00gcHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0MiBP TiB0MS5hID0gdDIuYiBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwogICAgICAg dDEgICAgICB8ICAgICAgdDIgICAgICAKQEAgLTEzODYsMjggKzEzOTEsMzcgQEAgU0VMRUNUIHQx LmEsIHQyLmIgRlJPTSAoU0VMRUNUICogRlJPTSBwcnQxIFdIRVJFIGEgPCA0NTApIHQxIExFRlQg Sk9JTiAoU0VMRUNUICoKICg5IHJvd3MpCiAKIC0tIG1lcmdlIGpvaW4gd2hlbiBleHByZXNzaW9u IHdpdGggd2hvbGUtcm93IHJlZmVyZW5jZSBuZWVkcyB0byBiZSBzb3J0ZWQ7Ci0tLSBwYXJ0aXRp b253aXNlIGpvaW4gZG9lcyBub3QgYXBwbHkKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0 MS5hLCB0Mi5iIEZST00gcHJ0MSB0MSwgcHJ0MiB0MiBXSEVSRSB0MTo6dGV4dCA9IHQyOjp0ZXh0 IEFORCB0MS5hID0gdDIuYiBPUkRFUiBCWSB0MS5hOwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gTWVyZ2UgSm9pbgot ICAgTWVyZ2UgQ29uZDogKCh0MS5hID0gdDIuYikgQU5EICgoKCgodDEuKik6OnBydDEpKTo6dGV4 dCkgPSAoKCgodDIuKik6OnBydDIpKTo6dGV4dCkpKQotICAgLT4gIFNvcnQKLSAgICAgICAgIFNv cnQgS2V5OiB0MS5hLCAoKCgodDEuKik6OnBydDEpKTo6dGV4dCkKLSAgICAgICAgIC0+ICBSZXN1 bHQKLSAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwcnQxX3AxIHQxXzEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwcnQxX3AyIHQxXzIKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw cnQxX3AzIHQxXzMKLSAgIC0+ICBTb3J0Ci0gICAgICAgICBTb3J0IEtleTogdDIuYiwgKCgoKHQy LiopOjpwcnQyKSk6OnRleHQpCi0gICAgICAgICAtPiAgUmVzdWx0Ci0gICAgICAgICAgICAgICAt PiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMSB0 Ml8xCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMiB0Ml8yCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCi0oMTYgcm93 cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBLZXk6IHQxLmEKKyAgIC0+ICBNZXJnZSBKb2luCisg ICAgICAgICBNZXJnZSBDb25kOiAoKHQxXzEuYSA9IHQyXzEuYikgQU5EICgoKHQxXzEuKik6OnRl eHQpID0gKCh0Ml8xLiopOjp0ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQxXzEuYSwgKCh0MV8xLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBydDFfcDEgdDFfMQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0Ml8xLmIsICgodDJfMS4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwcnQyX3AxIHQyXzEKKyAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICBN ZXJnZSBDb25kOiAoKHQxXzIuYSA9IHQyXzIuYikgQU5EICgoKHQxXzIuKik6OnRleHQpID0gKCh0 Ml8yLiopOjp0ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBL ZXk6IHQxXzIuYSwgKCh0MV8yLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHBydDFfcDIgdDFfMgorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0Ml8yLmIsICgodDJfMi4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwcnQyX3AyIHQyXzIKKyAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICBNZXJnZSBDb25k OiAoKHQxXzMuYSA9IHQyXzMuYikgQU5EICgoKHQxXzMuKik6OnRleHQpID0gKCh0Ml8zLiopOjp0 ZXh0KSkpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzMu YSwgKCh0MV8zLiopOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFf cDMgdDFfMworICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8z LmIsICgodDJfMy4qKTo6dGV4dCkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQy X3AzIHQyXzMKKygyNiByb3dzKQogCiBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9NIHBydDEgdDEsIHBy dDIgdDIgV0hFUkUgdDE6OnRleHQgPSB0Mjo6dGV4dCBBTkQgdDEuYSA9IHQyLmIgT1JERVIgQlkg dDEuYTsKICBhICB8IGIgIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVn YXRlLnNxbAppbmRleCBhYjA3MGZlZTI0NC4uYTc2MzIyOGU2YzAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCkBAIC0xMTYsNyArMTE2LDcgQEAgRVhQ TEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBw YWdnX3RhYjEgdDEsIHBhZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54 IE9SREVSIEJZIDEsIDIsIDM7CiBTRUxFQ1QgdDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9N IHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQx LnggT1JERVIgQlkgMSwgMiwgMzsKIAotLS0gQ2hlY2sgd2l0aCB3aG9sZS1yb3cgcmVmZXJlbmNl OyBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uIGRvZXMgbm90IGFwcGx5CistLSBDaGVjayB3aXRo IHdob2xlLXJvdyByZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS54LCBz dW0odDEueSksIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdIRVJF IHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgMSwgMiwgMzsKIFNFTEVDVCB0MS54 LCBzdW0odDEueSksIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiMSB0MSwgcGFnZ190YWIyIHQyIFdI RVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgMSwgMiwgMzsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbAppbmRleCBlODRiNjVmNDQ0Mi4uMzZmZTNjZjY2 ZGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwKQEAgLTQ4LDcgKzQ4 LDcgQEAgU0VMRUNUIENPVU5UKCopIEZST00gcHJ0MSB0MQogICBMRUZUIEpPSU4gcHJ0MSB0MiBP TiB0MS5hID0gdDIuYQogICBMRUZUIEpPSU4gcHJ0MSB0MyBPTiB0Mi5hID0gdDMuYTsKIAotLS0g bGVmdCBvdXRlciBqb2luLCB3aXRoIHdob2xlLXJvdyByZWZlcmVuY2U7IHBhcnRpdGlvbndpc2Ug am9pbiBkb2VzIG5vdCBhcHBseQorLS0gbGVmdCBvdXRlciBqb2luLCB3aXRoIHdob2xlLXJvdyBy ZWZlcmVuY2UKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MSwgdDIgRlJPTSBwcnQxIHQx IExFRlQgSk9JTiBwcnQyIHQyIE9OIHQxLmEgPSB0Mi5iIFdIRVJFIHQxLmIgPSAwIE9SREVSIEJZ IHQxLmEsIHQyLmI7CiBTRUxFQ1QgdDEsIHQyIEZST00gcHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0 MiBPTiB0MS5hID0gdDIuYiBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwpAQCAt MjM0LDcgKzIzNCw2IEBAIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gKFNFTEVDVCAqIEZST00gcHJ0 MSBXSEVSRSBhIDwgNDUwKSB0MSBMRUZUIEpPSU4gKFNFTEVDVCAqCiBTRUxFQ1QgdDEuYSwgdDIu YiBGUk9NIChTRUxFQ1QgKiBGUk9NIHBydDEgV0hFUkUgYSA8IDQ1MCkgdDEgTEVGVCBKT0lOIChT RUxFQ1QgKiBGUk9NIHBydDIgV0hFUkUgYiA+IDI1MCkgdDIgT04gdDEuYSA9IHQyLmIgV0hFUkUg dDEuYiA9IDAgT1JERVIgQlkgdDEuYSwgdDIuYjsKIAogLS0gbWVyZ2Ugam9pbiB3aGVuIGV4cHJl c3Npb24gd2l0aCB3aG9sZS1yb3cgcmVmZXJlbmNlIG5lZWRzIHRvIGJlIHNvcnRlZDsKLS0tIHBh cnRpdGlvbndpc2Ugam9pbiBkb2VzIG5vdCBhcHBseQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIHQxLmEsIHQyLmIgRlJPTSBwcnQxIHQxLCBwcnQyIHQyIFdIRVJFIHQxOjp0ZXh0ID0gdDI6 OnRleHQgQU5EIHQxLmEgPSB0Mi5iIE9SREVSIEJZIHQxLmE7CiBTRUxFQ1QgdDEuYSwgdDIuYiBG Uk9NIHBydDEgdDEsIHBydDIgdDIgV0hFUkUgdDE6OnRleHQgPSB0Mjo6dGV4dCBBTkQgdDEuYSA9 IHQyLmIgT1JERVIgQlkgdDEuYTsKLS0gCjIuMzQuMQoK --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0003-Handle-child-relation-s-ConvertRowtypeExpr-in-find_c.patch Content-Disposition: attachment; filename*0*=UTF-8''v2-0003-Handle-child-relation-s-ConvertRowtypeExpr-in-; filename*1*=find_c.patch; size=992 RnJvbSAyOGVjYWZhOGY3OWViMjBhMDIxYWYwNTI4MmJiMGU2ZDQwMThjMDFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAyNSBEZWMgMjAyMyAxNzo0MDoyMCArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggMy82XSBIYW5kbGUgY2hpbGQgcmVsYXRpb24ncyBDb252ZXJ0Um93dHlwZUV4cHIg aW4KIGZpbmRfY29tcHV0YWJsZV9lY19tZW1iZXIoKQoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2VxdWl2Y2xhc3MuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3Mu YwppbmRleCA4ZjZmMDA1ZWNiOS4uY2U1ZDhmYzNhYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9lcXVpdmNsYXNzLmMKQEAgLTg2MCw3ICs4NjAsOCBAQCBmaW5kX2NvbXB1dGFibGVfZWNf bWVtYmVyKFBsYW5uZXJJbmZvICpyb290LAogCQlleHBydmFycyA9IHB1bGxfdmFyX2NsYXVzZSgo Tm9kZSAqKSBlbS0+ZW1fZXhwciwKIAkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8 CiAJCQkJCQkJCSAgIFBWQ19JTkNMVURFX1dJTkRPV0ZVTkNTIHwKLQkJCQkJCQkJICAgUFZDX0lO Q0xVREVfUExBQ0VIT0xERVJTKTsKKwkJCQkJCQkJICAgUFZDX0lOQ0xVREVfUExBQ0VIT0xERVJT IHwKKwkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQ09OVkVSVFJPV1RZUEVTKTsKIAkJZm9yZWFjaChs YzIsIGV4cHJ2YXJzKQogCQl7CiAJCQlpZiAoIWlzX2V4cHJsaXN0X21lbWJlcihsZmlyc3QobGMy KSwgZXhwcnMpKQotLSAKMi4zNC4xCgo= --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0002-Handle-ConvertRowtypeExprs-in-pull_vars_clause.patch Content-Disposition: attachment; filename=v2-0002-Handle-ConvertRowtypeExprs-in-pull_vars_clause.patch; size=6392 RnJvbSAxMTllNjFkYWE3YmY3OWMyMjljYWQ0Y2UyODZmNmViMmNjMTRiYmQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCAyNSBEZWMgMjAyMyAxNjowODoxNSArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggMi82XSBIYW5kbGUgQ29udmVydFJvd3R5cGVFeHBycyBpbiBwdWxsX3ZhcnNfY2xh dXNlKCkuCgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggdG8gZml4IHRoZSB1bnJlc29sdmVk IENvbnZlcnRSb3d0eXBlRXhwcgpyZWZlcmVuY2VzIGluIHRoZSB0YXJnZXRsaXN0cy4gVGhlIHBh dGNoIGFsbG93cyBwdWxsX3ZhcnNfY2xhdXNlKCkgdG8KcmV0dXJuIENvbnZlcnRSb3d0eXBlRXhw cnMgd2l0aG91dCByZWN1cnNpbmcgaW50byB0aG9zZS4gQmVjYXVzZSBvZgp0aGUgcmVjZW50IHdv cmsgdG8gc3VwcG9ydCBpbmRleGVzIGFuZCB0cmlnZ2VycyBvbiBwYXJ0aXRpb25lZCB0YWJsZSwK ZXZlcnkgY2FsbGVyIG9mIHB1bGxfdmFyX2NsYXVzZSgpIGNhbiBlbmNvdW50ZXIgYSBDb252ZXJ0 Um93dHlwZQplbWJlZGRpbmcgYSB3aG9sZS1yb3cgcmVmZXJlbmNlLiBDdXJyZW50IGJlaGF2aW9y IGlzIHVuY2hhbmdlZC4KQ2FsbGVycyB3aGljaCBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gQ29u dmVydFJvd3R5cGVFeHBycwpzaG91bGQgZXhwbGljaXRseSBwYXNzIFBWQ19JTkNMVURFX0NPTlZF UlRST1dUWVBFUy4KClRoZSBwYXRjaCBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvQ0FGakZwUmM4Wm9EbTAlMkJ6aHglMkJNY2t3R3lFcWtPeldjcFZx YnZqYXh3ZEdhclpTTnJtQSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIHwgMzIgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMgICAgIHwgMTggKysr KysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmggICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgIHwgIDIgKysKIDUgZmlsZXMg Y2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYwppbmRleCAwZDAwZTAyOWYzMi4uMWVjNDQ2MGU3MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j CkBAIC00ODA3LDMgKzQ4MDcsMzUgQEAgcGxhbnN0YXRlX3dhbGtfbWVtYmVycyhQbGFuU3RhdGUg KipwbGFuc3RhdGVzLCBpbnQgbnBsYW5zLAogCiAJcmV0dXJuIGZhbHNlOwogfQorCisvKgorICog aXNfY29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2UKKyAqCQlJZiB0aGUgZ2l2ZW4gbm9kZSBp cyBhIENvbnZlcnRSb3d0eXBlRXhwciBlbmNhcHN1bGF0aW5nIGEgd2hvbGUtcm93CisgKgkJcmVm ZXJlbmNlIGFzIGltcGxpY2l0IGNhc3QgKGkuZSBhIHBhcmVudCdzIHdob2xlIHJvdyByZWZlcmVu Y2UKKyAqCQl0cmFuc2xhdGVkIGJ5IGFkanVzdF9hcHBlbmRyZWxfYXR0cnMoKSksIHJldHVybiB0 cnVlLiBPdGhlcndpc2UgcmV0dXJuCisgKgkJZmFsc2UuCisgKi8KK2Jvb2wKK2lzX2NvbnZlcnRl ZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpCit7CisJQ29udmVydFJvd3R5cGVFeHBy ICpjb252ZXhwcjsKKworCWlmICghbm9kZSB8fCAhSXNBKG5vZGUsIENvbnZlcnRSb3d0eXBlRXhw cikpCisJCXJldHVybiBmYWxzZTsKKworCS8qIFRyYXZlcnNlIG5lc3RlZCBDb252ZXJ0Um93dHlw ZUV4cHIncy4gKi8KKwljb252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9k ZSk7CisJd2hpbGUgKGNvbnZleHByLT5jb252ZXJ0Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9D QVNUICYmCisJCSAgIElzQShjb252ZXhwci0+YXJnLCBDb252ZXJ0Um93dHlwZUV4cHIpKQorCQlj b252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgY29udmV4cHItPmFyZyk7CisK KwlpZiAoSXNBKGNvbnZleHByLT5hcmcsIFZhcikpCisJeworCQlWYXIJCSAgICp2YXIgPSBjYXN0 Tm9kZShWYXIsIGNvbnZleHByLT5hcmcpOworCisJCWlmICh2YXItPnZhcmF0dG5vID09IDApCisJ CQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKaW5kZXggZjdjNzlkYjdiMmIuLjI5NjY0NGY4YzJlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yMTQsOCArMjE0LDYgQEAgc3RhdGljIExpc3Qg KnNldF93aW5kb3dhZ2dfcnVuY29uZGl0aW9uX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkgICBMaXN0ICpydW5jb25kaXRpb24sCiAJCQkJCQkJCQkJCQkgICBQbGFu ICpwbGFuKTsKIAotc3RhdGljIGJvb2wgaXNfY29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2Uo Tm9kZSAqbm9kZSk7Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlTVUJQTEFOIFJF RkVSRU5DRVMKQEAgLTM2NzYsMzMgKzM2NzQsMyBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2ll c193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJcmV0dXJuIGV4cHJl c3Npb25fdHJlZV93YWxrZXIobm9kZSwgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2Vy LAogCQkJCQkJCQkgICh2b2lkICopIGNvbnRleHQpOwogfQotCi0vKgotICogaXNfY29udmVydGVk X3dob2xlX3Jvd19yZWZlcmVuY2UKLSAqICAgICAgICAgICAgIElmIHRoZSBnaXZlbiBub2RlIGlz IGEgQ29udmVydFJvd3R5cGVFeHByIGVuY2Fwc3VsYXRpbmcgYSB3aG9sZS1yb3cKLSAqICAgICAg ICAgICAgIHJlZmVyZW5jZSBhcyBpbXBsaWNpdCBjYXN0LCByZXR1cm4gdHJ1ZS4gT3RoZXJ3aXNl IHJldHVybiBmYWxzZS4KLSAqLwotc3RhdGljIGJvb2wKLWlzX2NvbnZlcnRlZF93aG9sZV9yb3df cmVmZXJlbmNlKE5vZGUgKm5vZGUpCi17Ci0JQ29udmVydFJvd3R5cGVFeHByICpjb252ZXhwcjsK LQotCWlmICghbm9kZSB8fCAhSXNBKG5vZGUsIENvbnZlcnRSb3d0eXBlRXhwcikpCi0JCXJldHVy biBmYWxzZTsKLQotCS8qIFRyYXZlcnNlIG5lc3RlZCBDb252ZXJ0Um93dHlwZUV4cHIncy4gKi8K LQljb252ZXhwciA9IGNhc3ROb2RlKENvbnZlcnRSb3d0eXBlRXhwciwgbm9kZSk7Ci0Jd2hpbGUg KGNvbnZleHByLT5jb252ZXJ0Zm9ybWF0ID09IENPRVJDRV9JTVBMSUNJVF9DQVNUICYmCi0JCUlz QShjb252ZXhwci0+YXJnLCBDb252ZXJ0Um93dHlwZUV4cHIpKQotCQljb252ZXhwciA9IGNhc3RO b2RlKENvbnZlcnRSb3d0eXBlRXhwciwgY29udmV4cHItPmFyZyk7Ci0KLQlpZiAoSXNBKGNvbnZl eHByLT5hcmcsIFZhcikpCi0JewotCQlWYXIgICAgICAgICAgICAgICAgKnZhciA9IGNhc3ROb2Rl KFZhciwgY29udmV4cHItPmFyZyk7Ci0KLQkJaWYgKHZhci0+dmFyYXR0bm8gPT0gMCkKLQkJCXJl dHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3Zhci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFy LmMKaW5kZXggZjc1MzRhZDUzZDYuLjRjYTkxMTU5MWVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC92YXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC92 YXIuYwpAQCAtNTk0LDYgKzU5NCwxMSBAQCBsb2NhdGVfdmFyX29mX2xldmVsX3dhbGtlcihOb2Rl ICpub2RlLAogICoJICBWYXJzIHdpdGhpbiBhIFBIVidzIGV4cHJlc3Npb24gYXJlIGluY2x1ZGVk IGluIHRoZSByZXN1bHQgb25seQogICoJICB3aGVuIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUyBp cyBzcGVjaWZpZWQuCiAgKgorICoJICBDb252ZXJ0Um93dHlwZUV4cHJzIGVuY2Fwc3VsYXRpbmcg d2hvbGUgcm93IHJlZmVyZW5jZXMgYXJlIGhhbmRsZWQKKyAqCSAgYWNjb3JkaW5nIHRvIHRoZXNl IGJpdHMgaW4gJ2ZsYWdzJzoKKyAqCSAgCVBWQ19JTkNMVURFX0NPTlZFUlRST1dUWVBFUyBpbmNs dWRlIENvbnZlcnRSb3d0eXBlRXhwcnMgaW4gb3V0cHV0IGxpc3QKKyAqCSAgCWJ5IGRlZmF1bHQg LSByZWN1cnNlIGludG8gQ29udmVydFJvd3R5cGVFeHBycyBhcmd1bWVudHMKKyAqCiAgKgkgIEdy b3VwaW5nRnVuY3MgYXJlIHRyZWF0ZWQgZXhhY3RseSBsaWtlIEFnZ3JlZnMsIGFuZCBzbyBkbyBu b3QgbmVlZAogICoJICB0aGVpciBvd24gZmxhZyBiaXRzLgogICoKQEAgLTcwNyw2ICs3MTIsMTkg QEAgcHVsbF92YXJfY2xhdXNlX3dhbGtlcihOb2RlICpub2RlLCBwdWxsX3Zhcl9jbGF1c2VfY29u dGV4dCAqY29udGV4dCkKIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgIlBsYWNlSG9sZGVyVmFyIGZv dW5kIHdoZXJlIG5vdCBleHBlY3RlZCIpOwogCX0KKwllbHNlIGlmIChpc19jb252ZXJ0ZWRfd2hv bGVfcm93X3JlZmVyZW5jZShub2RlKSkKKwl7CisJCWlmIChjb250ZXh0LT5mbGFncyAmIFBWQ19J TkNMVURFX0NPTlZFUlRST1dUWVBFUykKKwkJeworCQkJY29udGV4dC0+dmFybGlzdCA9IGxhcHBl bmQoY29udGV4dC0+dmFybGlzdCwgbm9kZSk7CisJCQkvKiB3ZSBkbyBOT1QgZGVzY2VuZCBpbnRv IHRoZSBjb250YWluZWQgZXhwcmVzc2lvbiAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVs c2UKKwkJeworCQkJLyogZmFsbCB0aHJvdWdoIHRvIHJlY3Vyc2UgaW50byB0aGUgQ29udmVydFJv d3R5cGUncyBhcmd1bWVudC4gKi8KKwkJfQorCX0KIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dh bGtlcihub2RlLCBwdWxsX3Zhcl9jbGF1c2Vfd2Fsa2VyLAogCQkJCQkJCQkgICh2b2lkICopIGNv bnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZUZ1bmNzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9ub2RlRnVuY3MuaAppbmRleCBjYWVmYzM5ZjZhMi4uZDQzZTg3ZTI0 MDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL25vZGVGdW5jcy5oCkBAIC0yMjEsNCArMjIxLDUgQEAgZXh0ZXJuIGJvb2wg cGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2ltcGwoc3RydWN0IFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJCQkJICAgcGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2NhbGxiYWNrIHdhbGtlciwKIAkJCQkJ CQkJCSAgIHZvaWQgKmNvbnRleHQpOwogCitleHRlcm4gYm9vbCBpc19jb252ZXJ0ZWRfd2hvbGVf cm93X3JlZmVyZW5jZShOb2RlICpub2RlKTsKICNlbmRpZgkJCQkJCQkvKiBOT0RFRlVOQ1NfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IDkzZTNkYzcxOWRhLi41NTBlMDAxZGMw NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtMTkxLDYgKzE5MSw4IEBAIGV4dGVy biBTb3J0R3JvdXBDbGF1c2UgKmdldF9zb3J0Z3JvdXByZWZfY2xhdXNlX25vZXJyKEluZGV4IHNv cnRyZWYsCiAJCQkJCQkJCQkJCSAqIG91dHB1dCBsaXN0ICovCiAjZGVmaW5lIFBWQ19SRUNVUlNF X1BMQUNFSE9MREVSUwkweDAwMjAJLyogcmVjdXJzZSBpbnRvIFBsYWNlSG9sZGVyVmFyCiAJCQkJ CQkJCQkJCSAqIGFyZ3VtZW50cyAqLworI2RlZmluZSBQVkNfSU5DTFVERV9DT05WRVJUUk9XVFlQ RVMJMHgwMDQwICAgICAvKiBpbmNsdWRlIENvbnZlcnRSb3d0eXBlRXhwcnMgaW4KKwkJCQkJCQkq IG91dHB1dCBsaXN0ICovCiAKIGV4dGVybiBCaXRtYXBzZXQgKnB1bGxfdmFybm9zKFBsYW5uZXJJ bmZvICpyb290LCBOb2RlICpub2RlKTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1bGxfdmFybm9zX29m X2xldmVsKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlLCBpbnQgbGV2ZWxzdXApOwotLSAK Mi4zNC4xCgo= --=_82822d962eeefaceae0ab5a6f011bbf7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Allow-partition-wise-join-when-reltarget-contains-wh.patch Content-Disposition: attachment; filename*0*=UTF-8''v2-0001-Allow-partition-wise-join-when-reltarget-conta; filename*1*=ins-wh.patch; size=6451 RnJvbSBhNTAxNmVmZmUyNWU2ZWFlZmU3NGQwNjA3ZTQzOWZlNDQyOGMyMDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBNb24sIDI1IERlYyAyMDIzIDE1OjUxOjI4ICswMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzZdIEFsbG93IHBhcnRpdGlvbi13aXNlIGpvaW4gd2hlbiByZWx0YXJnZXQgY29udGFp bnMgd2hvbGUKIHJvdyB2YXJzCgpUaGlzIHBhcnRpYWxseSByZXZlcnQgN2NmZGM3NzAyM2FkNTA3 MzE3MjNlODVjMjE1YTQxMjc0MzZlZDA5YywKcmVzdG9yaW5nIHNldHJlZnMgbG9naWMgdG8gaGFu ZGxlIGNvbnZlcnRlZCB3aG9sZSByb3cgcmVmZXJlbmNlLgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMgfCAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFu Z2VkLCA0OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCmluZGV4IDE3MmVkYjY0M2E0Li41MzA5MmQ2NjE1MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC05NzYsOCArOTc2LDcgQEAgc2V0X2FwcGVu ZF9yZWxfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCSAqLwogCWlm IChlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luICYmCiAJCXJlbC0+cmVsb3B0a2luZCA9PSBSRUxP UFRfQkFTRVJFTCAmJgotCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSAmJgotCQlibXNfaXNfZW1wdHkocmVsLT5hdHRyX25lZWRlZFtJbnZhbGlkQXR0ck51bWJlciAt IHJlbC0+bWluX2F0dHJdKSkKKwkJcnRlLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCiAJCXJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gdHJ1ZTsKIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggOTFjN2M0ZmUyZmUuLmY3Yzc5 ZGI3YjJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC01Miw2ICs1Miw5 IEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnVtX3ZhcnM7CQkvKiBudW1iZXIgb2YgcGxhaW4g VmFyIHRsaXN0IGVudHJpZXMgKi8KIAlib29sCQloYXNfcGhfdmFyczsJLyogYXJlIHRoZXJlIFBs YWNlSG9sZGVyVmFyIGVudHJpZXM/ICovCiAJYm9vbAkJaGFzX25vbl92YXJzOwkvKiBhcmUgdGhl cmUgb3RoZXIgZW50cmllcz8gKi8KKwlib29sCQloYXNfY29udl93aG9sZV9yb3dzOwkvKiBhcmUg dGhlcmUgQ29udmVydFJvd3R5cGVFeHByCisJCQkJCQkJCSogZW50cmllcyBlbmNhcHN1bGF0aW5n IGEgd2hvbGUtcm93CisJCQkJCQkJCSogVmFyPyAqLwogCXRsaXN0X3ZpbmZvIHZhcnNbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsJLyogaGFzIG51bV92YXJzIGVudHJpZXMgKi8KIH0gaW5kZXhlZF90 bGlzdDsKIApAQCAtMjExLDYgKzIxNCw3IEBAIHN0YXRpYyBMaXN0ICpzZXRfd2luZG93YWdnX3J1 bmNvbmRpdGlvbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJICAg TGlzdCAqcnVuY29uZGl0aW9uLAogCQkJCQkJCQkJCQkJICAgUGxhbiAqcGxhbik7CiAKK3N0YXRp YyBib29sIGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlKE5vZGUgKm5vZGUpOwogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yNzExLDYgKzI3MTUsNyBAQCBidWlsZF90bGlz dF9pbmRleChMaXN0ICp0bGlzdCkKIAlpdGxpc3QtPnRsaXN0ID0gdGxpc3Q7CiAJaXRsaXN0LT5o YXNfcGhfdmFycyA9IGZhbHNlOwogCWl0bGlzdC0+aGFzX25vbl92YXJzID0gZmFsc2U7CisJaXRs aXN0LT5oYXNfY29udl93aG9sZV9yb3dzID0gZmFsc2U7CiAKIAkvKiBGaW5kIHRoZSBWYXJzIGFu ZCBmaWxsIGluIHRoZSBpbmRleCBhcnJheSAqLwogCXZpbmZvID0gaXRsaXN0LT52YXJzOwpAQCAt MjczMCw2ICsyNzM1LDggQEAgYnVpbGRfdGxpc3RfaW5kZXgoTGlzdCAqdGxpc3QpCiAJCX0KIAkJ ZWxzZSBpZiAodGxlLT5leHByICYmIElzQSh0bGUtPmV4cHIsIFBsYWNlSG9sZGVyVmFyKSkKIAkJ CWl0bGlzdC0+aGFzX3BoX3ZhcnMgPSB0cnVlOworCQllbHNlIGlmIChpc19jb252ZXJ0ZWRfd2hv bGVfcm93X3JlZmVyZW5jZSgoTm9kZSAqKSB0bGUtPmV4cHIpKQorCQkJaXRsaXN0LT5oYXNfY29u dl93aG9sZV9yb3dzID0gdHJ1ZTsKIAkJZWxzZQogCQkJaXRsaXN0LT5oYXNfbm9uX3ZhcnMgPSB0 cnVlOwogCX0KQEAgLTI3NDUsNyArMjc1MiwxMCBAQCBidWlsZF90bGlzdF9pbmRleChMaXN0ICp0 bGlzdCkKICAqIFRoaXMgaXMgbGlrZSBidWlsZF90bGlzdF9pbmRleCwgYnV0IHdlIG9ubHkgaW5k ZXggdGxpc3QgZW50cmllcyB0aGF0CiAgKiBhcmUgVmFycyBiZWxvbmdpbmcgdG8gc29tZSByZWwg b3RoZXIgdGhhbiB0aGUgb25lIHNwZWNpZmllZC4gIFdlIHdpbGwgc2V0CiAgKiBoYXNfcGhfdmFy cyAoYWxsb3dpbmcgUGxhY2VIb2xkZXJWYXJzIHRvIGJlIG1hdGNoZWQpLCBidXQgbm90IGhhc19u b25fdmFycwotICogKHNvIG5vdGhpbmcgb3RoZXIgdGhhbiBWYXJzIGFuZCBQbGFjZUhvbGRlclZh cnMgY2FuIGJlIG1hdGNoZWQpLgorICogKHNvIG5vdGhpbmcgb3RoZXIgdGhhbiBWYXJzIGFuZCBQ bGFjZUhvbGRlclZhcnMgY2FuIGJlIG1hdGNoZWQpLiAgSW4gY2FzZSBvZgorICogRE1MLCB3aGVy ZSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCwgcmV0dXJuaW5nIGxpc3RzIGZyb20gY2hpbGQg cmVsYXRpb25zCisgKiB3aWxsIGJlIGFwcGVuZGVkIHNpbWlsYXIgdG8gYSBzaW1wbGUgYXBwZW5k IHJlbGF0aW9uLiBUaGF0IGRvZXMgbm90IHJlcXVpcmUKKyAqIGZpeGluZyBDb252ZXJ0Um93dHlw ZUV4cHIgcmVmZXJlbmNlcy4gU28sIHRob3NlIGFyZSBub3QgY29uc2lkZXJlZCBoZXJlLgogICov CiBzdGF0aWMgaW5kZXhlZF90bGlzdCAqCiBidWlsZF90bGlzdF9pbmRleF9vdGhlcl92YXJzKExp c3QgKnRsaXN0LCBpbnQgaWdub3JlX3JlbCkKQEAgLTI3NjIsNiArMjc3Miw3IEBAIGJ1aWxkX3Rs aXN0X2luZGV4X290aGVyX3ZhcnMoTGlzdCAqdGxpc3QsIGludCBpZ25vcmVfcmVsKQogCWl0bGlz dC0+dGxpc3QgPSB0bGlzdDsKIAlpdGxpc3QtPmhhc19waF92YXJzID0gZmFsc2U7CiAJaXRsaXN0 LT5oYXNfbm9uX3ZhcnMgPSBmYWxzZTsKKwlpdGxpc3QtPmhhc19jb252X3dob2xlX3Jvd3MgPSBm YWxzZTsKIAogCS8qIEZpbmQgdGhlIGRlc2lyZWQgVmFycyBhbmQgZmlsbCBpbiB0aGUgaW5kZXgg YXJyYXkgKi8KIAl2aW5mbyA9IGl0bGlzdC0+dmFyczsKQEAgLTMwNjcsNiArMzA3OCw3IEBAIHN0 YXRpYyBOb2RlICoKIGZpeF9qb2luX2V4cHJfbXV0YXRvcihOb2RlICpub2RlLCBmaXhfam9pbl9l eHByX2NvbnRleHQgKmNvbnRleHQpCiB7CiAJVmFyCQkgICAqbmV3dmFyOworCWJvb2wgICAgICAg ICAgICBjb252ZXJ0ZWRfd2hvbGVfcm93OwogCiAJaWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJu IE5VTEw7CkBAIC0zMTQwLDcgKzMxNTIsOCBAQCBmaXhfam9pbl9leHByX211dGF0b3IoTm9kZSAq bm9kZSwgZml4X2pvaW5fZXhwcl9jb250ZXh0ICpjb250ZXh0KQogCQlyZXR1cm4gZml4X2pvaW5f ZXhwcl9tdXRhdG9yKChOb2RlICopIHBodi0+cGhleHByLCBjb250ZXh0KTsKIAl9CiAJLyogVHJ5 IG1hdGNoaW5nIG1vcmUgY29tcGxleCBleHByZXNzaW9ucyB0b28sIGlmIHRsaXN0cyBoYXZlIGFu eSAqLwotCWlmIChjb250ZXh0LT5vdXRlcl9pdGxpc3QgJiYgY29udGV4dC0+b3V0ZXJfaXRsaXN0 LT5oYXNfbm9uX3ZhcnMpCisJY29udmVydGVkX3dob2xlX3JvdyA9IGlzX2NvbnZlcnRlZF93aG9s ZV9yb3dfcmVmZXJlbmNlKG5vZGUpOworCWlmIChjb250ZXh0LT5vdXRlcl9pdGxpc3QgJiYgKGNv bnRleHQtPm91dGVyX2l0bGlzdC0+aGFzX25vbl92YXJzIHx8IChjb250ZXh0LT5vdXRlcl9pdGxp c3QtPmhhc19jb252X3dob2xlX3Jvd3MgJiYgY29udmVydGVkX3dob2xlX3JvdykpKQogCXsKIAkJ bmV3dmFyID0gc2VhcmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoKEV4cHIgKikgbm9kZSwK IAkJCQkJCQkJCQkJCSAgY29udGV4dC0+b3V0ZXJfaXRsaXN0LApAQCAtMzE0OCw3ICszMTYxLDcg QEAgZml4X2pvaW5fZXhwcl9tdXRhdG9yKE5vZGUgKm5vZGUsIGZpeF9qb2luX2V4cHJfY29udGV4 dCAqY29udGV4dCkKIAkJaWYgKG5ld3ZhcikKIAkJCXJldHVybiAoTm9kZSAqKSBuZXd2YXI7CiAJ fQotCWlmIChjb250ZXh0LT5pbm5lcl9pdGxpc3QgJiYgY29udGV4dC0+aW5uZXJfaXRsaXN0LT5o YXNfbm9uX3ZhcnMpCisJaWYgKGNvbnRleHQtPmlubmVyX2l0bGlzdCAmJiAoY29udGV4dC0+aW5u ZXJfaXRsaXN0LT5oYXNfbm9uX3ZhcnMgfHwgKGNvbnRleHQtPmlubmVyX2l0bGlzdC0+aGFzX2Nv bnZfd2hvbGVfcm93cyAmJiBjb252ZXJ0ZWRfd2hvbGVfcm93KSkpCiAJewogCQluZXd2YXIgPSBz ZWFyY2hfaW5kZXhlZF90bGlzdF9mb3Jfbm9uX3ZhcigoRXhwciAqKSBub2RlLAogCQkJCQkJCQkJ CQkJICBjb250ZXh0LT5pbm5lcl9pdGxpc3QsCkBAIC0zMjYxLDcgKzMyNzQsNyBAQCBmaXhfdXBw ZXJfZXhwcl9tdXRhdG9yKE5vZGUgKm5vZGUsIGZpeF91cHBlcl9leHByX2NvbnRleHQgKmNvbnRl eHQpCiAJCXJldHVybiBmaXhfdXBwZXJfZXhwcl9tdXRhdG9yKChOb2RlICopIHBodi0+cGhleHBy LCBjb250ZXh0KTsKIAl9CiAJLyogVHJ5IG1hdGNoaW5nIG1vcmUgY29tcGxleCBleHByZXNzaW9u cyB0b28sIGlmIHRsaXN0IGhhcyBhbnkgKi8KLQlpZiAoY29udGV4dC0+c3VicGxhbl9pdGxpc3Qt Pmhhc19ub25fdmFycykKKwlpZiAoY29udGV4dC0+c3VicGxhbl9pdGxpc3QtPmhhc19ub25fdmFy cyB8fCAoY29udGV4dC0+c3VicGxhbl9pdGxpc3QtPmhhc19jb252X3dob2xlX3Jvd3MgJiYgaXNf Y29udmVydGVkX3dob2xlX3Jvd19yZWZlcmVuY2Uobm9kZSkpKQogCXsKIAkJbmV3dmFyID0gc2Vh cmNoX2luZGV4ZWRfdGxpc3RfZm9yX25vbl92YXIoKEV4cHIgKikgbm9kZSwKIAkJCQkJCQkJCQkJ CSAgY29udGV4dC0+c3VicGxhbl9pdGxpc3QsCkBAIC0zNjYzLDMgKzM2NzYsMzMgQEAgZXh0cmFj dF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250 ZXh0KQogCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGV4dHJhY3RfcXVlcnlf ZGVwZW5kZW5jaWVzX3dhbGtlciwKIAkJCQkJCQkJICAodm9pZCAqKSBjb250ZXh0KTsKIH0KKwor LyoKKyAqIGlzX2NvbnZlcnRlZF93aG9sZV9yb3dfcmVmZXJlbmNlCisgKiAgICAgICAgICAgICBJ ZiB0aGUgZ2l2ZW4gbm9kZSBpcyBhIENvbnZlcnRSb3d0eXBlRXhwciBlbmNhcHN1bGF0aW5nIGEg d2hvbGUtcm93CisgKiAgICAgICAgICAgICByZWZlcmVuY2UgYXMgaW1wbGljaXQgY2FzdCwgcmV0 dXJuIHRydWUuIE90aGVyd2lzZSByZXR1cm4gZmFsc2UuCisgKi8KK3N0YXRpYyBib29sCitpc19j b252ZXJ0ZWRfd2hvbGVfcm93X3JlZmVyZW5jZShOb2RlICpub2RlKQoreworCUNvbnZlcnRSb3d0 eXBlRXhwciAqY29udmV4cHI7CisKKwlpZiAoIW5vZGUgfHwgIUlzQShub2RlLCBDb252ZXJ0Um93 dHlwZUV4cHIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBUcmF2ZXJzZSBuZXN0ZWQgQ29udmVy dFJvd3R5cGVFeHByJ3MuICovCisJY29udmV4cHIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4 cHIsIG5vZGUpOworCXdoaWxlIChjb252ZXhwci0+Y29udmVydGZvcm1hdCA9PSBDT0VSQ0VfSU1Q TElDSVRfQ0FTVCAmJgorCQlJc0EoY29udmV4cHItPmFyZywgQ29udmVydFJvd3R5cGVFeHByKSkK KwkJY29udmV4cHIgPSBjYXN0Tm9kZShDb252ZXJ0Um93dHlwZUV4cHIsIGNvbnZleHByLT5hcmcp OworCisJaWYgKElzQShjb252ZXhwci0+YXJnLCBWYXIpKQorCXsKKwkJVmFyICAgICAgICAgICAg ICAgICp2YXIgPSBjYXN0Tm9kZShWYXIsIGNvbnZleHByLT5hcmcpOworCisJCWlmICh2YXItPnZh cmF0dG5vID09IDApCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9Ci0t IAoyLjM0LjEKCg== --=_82822d962eeefaceae0ab5a6f011bbf7--