Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lySAu-0002la-0O for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Jun 2021 04:50:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lySAs-000099-Mv for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Jun 2021 04:50:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lySAs-000091-Aj for pgsql-hackers@lists.postgresql.org; Wed, 30 Jun 2021 04:50:10 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lySAl-0007Cd-Pa for pgsql-hackers@lists.postgresql.org; Wed, 30 Jun 2021 04:50:09 +0000 Received: from Andreys-MacBook-Pro.local (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id C533521C8A59; Wed, 30 Jun 2021 07:50:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1625028602; bh=vqQ6IFOkAEXRGRMLp8WGrnMAtZWrH/Uu25RrXKA9q5U=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=IrB4dR2GYE0FJJwNR3JrZ00ZZMWIGfp0/jgdZSL+Df0KqFawQzyjdR9/2sbuxEV3+ g6DjH7GfxUdmjjVxWQQWXM0yEZUTC697iPym+wHeLVeGKE0TjTxWoSovkfslJJdtWS +1No5MhrAroHRrl4kakhzEBF0Cuh2RajqXeLfFK0= Subject: Re: Defer selection of asynchronous subplans until the executor initialization stage To: Zhihong Yu Cc: Etsuro Fujita , Kyotaro Horiguchi , Justin Pryzby , PostgreSQL Hackers References: <20210331.101137.148208859959175708.horikyota.ntt@gmail.com> <52d944ea-7d41-1d16-01b7-8d1edf5ea972@postgrespro.ru> <659c37a8-3e71-0ff2-394c-f04428c76f08@postgrespro.ru> From: Andrey Lepikhov Organization: Postgres Professional Message-ID: Date: Wed, 30 Jun 2021 07:50:01 +0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------FA79020F9058AB63F2A836C4" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------FA79020F9058AB63F2A836C4 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 11/5/21 06:55, Zhihong Yu wrote: > On Mon, May 10, 2021 at 8:45 PM Andrey Lepikhov > > wrote: > It seems the if statement is not needed: you can directly assign false > to  subplan->async_capable. I have completely rewritten this patch. Main idea: The async_capable field of a plan node inform us that this node could work in async mode. Each node sets this field based on its own logic. The actual mode of a node is defined by the async_capable of PlanState structure. It is made at the executor initialization stage. In this patch, only an append node could define async behaviour for its subplans. With such approach the IsForeignPathAsyncCapable routine become unecessary, I think. -- regards, Andrey Lepikhov Postgres Professional --------------FA79020F9058AB63F2A836C4 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Choose-async-append-subplans-at-the-initial-executio.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Choose-async-append-subplans-at-the-initial-executio.pa"; filename*1="tch" RnJvbSBkOTM1YmJiNzA1NjVkNzBmMWIwZjU0N2JmMzdlNzFmZmM2ZmEyZWYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAyOSBKdW4gMjAyMSAyMjowOTo1NCArMDMw MApTdWJqZWN0OiBbUEFUQ0hdIENob29zZSBhc3luYyBhcHBlbmQgc3VicGxhbnMgYXQgdGhl IGluaXRpYWwgZXhlY3V0aW9uIHN0YWdlCgotLS0KIGNvbnRyaWIvZmlsZV9mZHcvZmlsZV9m ZHcuYyAgICAgICAgICAgICAgICAgICB8ICAzICstCiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCA4MSArKysrKysrKysrKysrKysrKystCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAxMyArLS0KIGNv bnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8IDI5ICsrKysr KysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMgICAgICAgICAgICAgICAgfCAg NCAtCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAy NyArKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAg ICAgfCAgNyAtLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAg ICAgIHwgIDEgLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAg ICAgIHwgIDEgLQogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgICAgICAgICAg ICAgIHwgIDEgLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAg ICAgIHwgIDEgLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAg ICAgIHwgNDUgKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAg ICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBcHBlbmQu aCAgICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAg ICAgICAgICAgICAgICB8ICAxIC0KIHNyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmggICAg ICAgICAgICAgICAgICB8ICAxIC0KIHNyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5o ICAgICAgICAgICAgICB8ICAyICstCiAxOCBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9u cygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9maWxlX2Zkdy9m aWxlX2Zkdy5jIGIvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCmluZGV4IDJjMmYxNDlm YjAuLjVmNjdlMWNhOTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcu YworKysgYi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKQEAgLTYwOSw3ICs2MDksOCBA QCBmaWxlR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJYmVzdF9w YXRoLT5mZHdfcHJpdmF0ZSwKIAkJCQkJCQlOSUwsCS8qIG5vIGN1c3RvbSB0bGlzdCAqLwog CQkJCQkJCU5JTCwJLyogbm8gcmVtb3RlIHF1YWxzICovCi0JCQkJCQkJb3V0ZXJfcGxhbik7 CisJCQkJCQkJb3V0ZXJfcGxhbiwKKwkJCQkJCQlmYWxzZSk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCAz MWI1ZGU5MWFkLi4zMGMzOGM2OTkyIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTEwMTY5LDcgKzEwMTY5LDcgQEAgRVhF Q1VURSBhc3luY19wdF9xdWVyeSAoMjAwMCwgNTA1KTsKICBJbnNlcnQgb24gcHVibGljLnJl c3VsdF90YmwKICAgIC0+ICBBcHBlbmQKICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIK LSAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AxIGFz eW5jX3B0XzEKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3Ax IGFzeW5jX3B0XzEKICAgICAgICAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMS5hLCBhc3lu Y19wdF8xLmIsIGFzeW5jX3B0XzEuYwogICAgICAgICAgICAgICAgRmlsdGVyOiAoYXN5bmNf cHRfMS5iID09PSAkMikKICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBi LCBjIEZST00gcHVibGljLmJhc2VfdGJsMSBXSEVSRSAoKGEgPCAkMTo6aW50ZWdlcikpCkBA IC0xMDIzNyw2ICsxMDIzNyw4NSBAQCBTRUxFQ1QgKiBGUk9NIGxvY2FsX3RibCwgYXN5bmNf cHQgV0hFUkUgbG9jYWxfdGJsLmEgPSBhc3luY19wdC5hIEFORCBsb2NhbF90YmwuYwogIDI1 MDUgfCA1MDUgfCBiYXIgfCAyNTA1IHwgNTA1IHwgMDUwNQogKDEgcm93KQogCistLSBTdWJx dWVyeSBmbGF0dGVuaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgY2hvb3Npbmcgb2YgYXN5bmMg cGxhbnMuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCisoU0VMRUNUICogRlJPTSBh c3luY19wMSBMSU1JVCAxKQorCVVOSU9OIEFMTAorKFNFTEVDVCAqIEZST00gYXN5bmNfcDIg V0hFUkUgYSA8IDUpCisJVU5JT04gQUxMCisoU0VMRUNUICogRlJPTSBhc3luY19wMikKKwlV TklPTiBBTEwKKyhTRUxFQ1QgKiBGUk9NIGFzeW5jX3AzIExJTUlUIDMpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgQXN5 bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMQorICAgICAgICAgT3V0cHV0OiBh c3luY19wMS5hLCBhc3luY19wMS5iLCBhc3luY19wMS5jCisgICAgICAgICBSZW1vdGUgU1FM OiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDEgTElNSVQgMTo6YmlnaW50 CisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMiBhc3luY19w Ml8xCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3AyXzEuYSwgYXN5bmNfcDJfMS5iLCBhc3lu Y19wMl8xLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVi bGljLmJhc2VfdGJsMiBXSEVSRSAoKGEgPCA1KSkKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNj YW4gb24gcHVibGljLmFzeW5jX3AyCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3AyLmEsIGFz eW5jX3AyLmIsIGFzeW5jX3AyLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBi LCBjIEZST00gcHVibGljLmJhc2VfdGJsMgorICAgLT4gIExpbWl0CisgICAgICAgICBPdXRw dXQ6IGFzeW5jX3AzLmEsIGFzeW5jX3AzLmIsIGFzeW5jX3AzLmMKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDMKKyAgICAgICAgICAgICAgIE91dHB1dDogYXN5 bmNfcDMuYSwgYXN5bmNfcDMuYiwgYXN5bmNfcDMuYworKDE0IHJvd3MpCisKKy0tIENoZWNr IHRoYXQgYXN5bmMgYXBwZW5kIGRvZXNuJ3QgYnJlYWsgdGhlIHNjcm9sbGFibGUgY3Vyc29y cyBsb2dpYzoKKy0tIElmIHRoZSBxdWVyeSBwbGFuIGRvZXNuJ3Qgc3VwcG9ydCBiYWNrd2Fy ZCBzY2FuLCBhIG1hdGVyaWFsaXplIG5vZGUgd2lsbCBiZQorLS0gaW5zZXJ0ZWQgaW4gdGhl IGhlYWQgb2YgdGhpcyBwbGFuLgorQkVHSU47CitFWFBMQUlOIChDT1NUUyBPRkYpCitERUNM QVJFIGN1cnMxIFNDUk9MTCBDVVJTT1IgRk9SIChTRUxFQ1QgKiBGUk9NIGFzeW5jX3AzKTsK KyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEg U2NhbiBvbiBhc3luY19wMworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitERUNM QVJFIGN1cnMxIFNDUk9MTCBDVVJTT1IgRk9SIChTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0KTsK KyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBNYXRlcmlhbGl6ZQorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEFzeW5j IEZvcmVpZ24gU2NhbiBvbiBhc3luY19wMSBhc3luY19wdF8xCisgICAgICAgICAtPiAgQXN5 bmMgRm9yZWlnbiBTY2FuIG9uIGFzeW5jX3AyIGFzeW5jX3B0XzIKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBhc3luY19wMyBhc3luY19wdF8zCisoNSByb3dzKQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitERUNMQVJFIGN1cnMxIE5PIFNDUk9MTCBDVVJTT1IgRk9SIChTRUxFQ1Qg KiBGUk9NIGFzeW5jX3AxKTsKKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEZvcmVpZ24gU2NhbiBvbiBhc3luY19wMQorKDEgcm93 KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitERUNMQVJFIGN1cnMyIFNDUk9M TCBDVVJTT1IgRk9SCisJKFNFTEVDVCAqIEZST00gYXN5bmNfcDEpCisJCVVOSU9OIEFMTAor CShTRUxFQ1QgKiBGUk9NIGFzeW5jX3AyIFdIRVJFIGEgPCA1KQorCQlVTklPTiBBTEwKKwko U0VMRUNUICogRlJPTSBhc3luY19wMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNYXRlcmlhbGl6ZQorICAgT3V0cHV0OiBh c3luY19wMS5hLCBhc3luY19wMS5iLCBhc3luY19wMS5jCisgICAtPiAgQXBwZW5kCisgICAg ICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMQorICAgICAg ICAgICAgICAgT3V0cHV0OiBhc3luY19wMS5hLCBhc3luY19wMS5iLCBhc3luY19wMS5jCisg ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5i YXNlX3RibDEKKyAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFz eW5jX3AyCisgICAgICAgICAgICAgICBPdXRwdXQ6IGFzeW5jX3AyLmEsIGFzeW5jX3AyLmIs IGFzeW5jX3AyLmMKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBj IEZST00gcHVibGljLmJhc2VfdGJsMiBXSEVSRSAoKGEgPCA1KSkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDMKKyAgICAgICAgICAgICAgIE91dHB1dDogYXN5 bmNfcDMuYSwgYXN5bmNfcDMuYiwgYXN5bmNfcDMuYworKDExIHJvd3MpCisKK1JPTExCQUNL OwogQUxURVIgRk9SRUlHTiBUQUJMRSBhc3luY19wMSBPUFRJT05TIChEUk9QIHVzZV9yZW1v dGVfZXN0aW1hdGUpOwogQUxURVIgRk9SRUlHTiBUQUJMRSBhc3luY19wMiBPUFRJT05TIChE Uk9QIHVzZV9yZW1vdGVfZXN0aW1hdGUpOwogRFJPUCBUQUJMRSBsb2NhbF90Ymw7CmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGZhZmJhYjZiMDIuLjZhNTI4NTlm NWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0xNjMsOSArMTYz LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdGZHdTY2FuU3RhdGUKIAlpbnQJCQlmZXRjaF9jdF8y OwkJLyogTWluKCMgb2YgZmV0Y2hlcyBkb25lLCAyKSAqLwogCWJvb2wJCWVvZl9yZWFjaGVk OwkvKiB0cnVlIGlmIGxhc3QgZmV0Y2ggcmVhY2hlZCBFT0YgKi8KIAotCS8qIGZvciBhc3lu Y2hyb25vdXMgZXhlY3V0aW9uICovCi0JYm9vbAkJYXN5bmNfY2FwYWJsZTsJLyogZW5nYWdl IGFzeW5jaHJvbm91cy1jYXBhYmxlIGxvZ2ljPyAqLwotCiAJLyogd29ya2luZyBtZW1vcnkg Y29udGV4dHMgKi8KIAlNZW1vcnlDb250ZXh0IGJhdGNoX2N4dDsJLyogY29udGV4dCBob2xk aW5nIGN1cnJlbnQgYmF0Y2ggb2YgdHVwbGVzICovCiAJTWVtb3J5Q29udGV4dCB0ZW1wX2N4 dDsJCS8qIGNvbnRleHQgZm9yIHBlci10dXBsZSB0ZW1wb3JhcnkgZGF0YSAqLwpAQCAtMTQz Niw3ICsxNDMzLDggQEAgcG9zdGdyZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQlmZHdfcHJpdmF0ZSwKIAkJCQkJCQlmZHdfc2Nhbl90bGlzdCwKIAkJCQkJ CQlmZHdfcmVjaGVja19xdWFscywKLQkJCQkJCQlvdXRlcl9wbGFuKTsKKwkJCQkJCQlvdXRl cl9wbGFuLAorCQkJCQkJCWZwaW5mby0+YXN5bmNfY2FwYWJsZSk7CiB9CiAKIC8qCkBAIC0x NTkxLDkgKzE1ODksNiBAQCBwb3N0Z3Jlc0JlZ2luRm9yZWlnblNjYW4oRm9yZWlnblNjYW5T dGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkJCQkJCQkgJmZzc3RhdGUtPnBhcmFtX2ZsaW5m bywKIAkJCQkJCQkgJmZzc3RhdGUtPnBhcmFtX2V4cHJzLAogCQkJCQkJCSAmZnNzdGF0ZS0+ cGFyYW1fdmFsdWVzKTsKLQotCS8qIFNldCB0aGUgYXN5bmMtY2FwYWJsZSBmbGFnICovCi0J ZnNzdGF0ZS0+YXN5bmNfY2FwYWJsZSA9IG5vZGUtPnNzLnBzLmFzeW5jX2NhcGFibGU7CiB9 CiAKIC8qCkBAIC0xNjIyLDcgKzE2MTcsNyBAQCBwb3N0Z3Jlc0l0ZXJhdGVGb3JlaWduU2Nh bihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCWlmIChmc3N0YXRlLT5uZXh0X3R1cGxlID49 IGZzc3RhdGUtPm51bV90dXBsZXMpCiAJewogCQkvKiBJbiBhc3luYyBtb2RlLCBqdXN0IGNs ZWFyIHR1cGxlIHNsb3QuICovCi0JCWlmIChmc3N0YXRlLT5hc3luY19jYXBhYmxlKQorCQlp ZiAobm9kZS0+c3MucHMuYXN5bmNfY2FwYWJsZSkKIAkJCXJldHVybiBFeGVjQ2xlYXJUdXBs ZShzbG90KTsKIAkJLyogTm8gcG9pbnQgaW4gYW5vdGhlciBmZXRjaCBpZiB3ZSBhbHJlYWR5 IGRldGVjdGVkIEVPRiwgdGhvdWdoLiAqLwogCQlpZiAoIWZzc3RhdGUtPmVvZl9yZWFjaGVk KQpAQCAtMzc4MSw3ICszNzc2LDcgQEAgZmV0Y2hfbW9yZV9kYXRhKEZvcmVpZ25TY2FuU3Rh dGUgKm5vZGUpCiAJCWludAkJCW51bXJvd3M7CiAJCWludAkJCWk7CiAKLQkJaWYgKGZzc3Rh dGUtPmFzeW5jX2NhcGFibGUpCisJCWlmIChub2RlLT5zcy5wcy5hc3luY19jYXBhYmxlKQog CQl7CiAJCQlBc3NlcnQoZnNzdGF0ZS0+Y29ubl9zdGF0ZS0+cGVuZGluZ0FyZXEpOwogCmRp ZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDI4NmRk OTk1NzMuLjFjMWMxNTJiY2YgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Nx bC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0 Z3Jlc19mZHcuc3FsCkBAIC0zMjUyLDYgKzMyNTIsMzUgQEAgRVhQTEFJTiAoQU5BTFlaRSwg Q09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRikKIFNFTEVDVCAqIEZST00gbG9j YWxfdGJsLCBhc3luY19wdCBXSEVSRSBsb2NhbF90YmwuYSA9IGFzeW5jX3B0LmEgQU5EIGxv Y2FsX3RibC5jID0gJ2Jhcic7CiBTRUxFQ1QgKiBGUk9NIGxvY2FsX3RibCwgYXN5bmNfcHQg V0hFUkUgbG9jYWxfdGJsLmEgPSBhc3luY19wdC5hIEFORCBsb2NhbF90YmwuYyA9ICdiYXIn OwogCistLSBTdWJxdWVyeSBmbGF0dGVuaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgY2hvb3Np bmcgb2YgYXN5bmMgcGxhbnMuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCisoU0VM RUNUICogRlJPTSBhc3luY19wMSBMSU1JVCAxKQorCVVOSU9OIEFMTAorKFNFTEVDVCAqIEZS T00gYXN5bmNfcDIgV0hFUkUgYSA8IDUpCisJVU5JT04gQUxMCisoU0VMRUNUICogRlJPTSBh c3luY19wMikKKwlVTklPTiBBTEwKKyhTRUxFQ1QgKiBGUk9NIGFzeW5jX3AzIExJTUlUIDMp OworCistLSBDaGVjayB0aGF0IGFzeW5jIGFwcGVuZCBkb2Vzbid0IGJyZWFrIHRoZSBzY3Jv bGxhYmxlIGN1cnNvcnMgbG9naWM6CistLSBJZiB0aGUgcXVlcnkgcGxhbiBkb2Vzbid0IHN1 cHBvcnQgYmFja3dhcmQgc2NhbiwgYSBtYXRlcmlhbGl6ZSBub2RlIHdpbGwgYmUKKy0tIGlu c2VydGVkIGluIHRoZSBoZWFkIG9mIHRoaXMgcGxhbi4KK0JFR0lOOworRVhQTEFJTiAoQ09T VFMgT0ZGKQorREVDTEFSRSBjdXJzMSBTQ1JPTEwgQ1VSU09SIEZPUiAoU0VMRUNUICogRlJP TSBhc3luY19wMyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitERUNMQVJFIGN1cnMxIFNDUk9M TCBDVVJTT1IgRk9SIChTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0KTsKK0VYUExBSU4gKENPU1RT IE9GRikKK0RFQ0xBUkUgY3VyczEgTk8gU0NST0xMIENVUlNPUiBGT1IgKFNFTEVDVCAqIEZS T00gYXN5bmNfcDEpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorREVDTEFSRSBj dXJzMiBTQ1JPTEwgQ1VSU09SIEZPUgorCShTRUxFQ1QgKiBGUk9NIGFzeW5jX3AxKQorCQlV TklPTiBBTEwKKwkoU0VMRUNUICogRlJPTSBhc3luY19wMiBXSEVSRSBhIDwgNSkKKwkJVU5J T04gQUxMCisJKFNFTEVDVCAqIEZST00gYXN5bmNfcDMpOworUk9MTEJBQ0s7CisKIEFMVEVS IEZPUkVJR04gVEFCTEUgYXN5bmNfcDEgT1BUSU9OUyAoRFJPUCB1c2VfcmVtb3RlX2VzdGlt YXRlKTsKIEFMVEVSIEZPUkVJR04gVEFCTEUgYXN5bmNfcDIgT1BUSU9OUyAoRFJPUCB1c2Vf cmVtb3RlX2VzdGltYXRlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGU4MWI5 OTAwOTIuLjZjN2Y4ZTlkOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTE0MTEs NyArMTQxMSw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICph bmNlc3RvcnMsCiAJCX0KIAkJaWYgKHBsYW4tPnBhcmFsbGVsX2F3YXJlKQogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiUGFyYWxsZWwgIik7Ci0JCWlmIChwbGFuLT5h c3luY19jYXBhYmxlKQorCQlpZiAocGxhbnN0YXRlLT5hc3luY19jYXBhYmxlKQogCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiQXN5bmMgIik7CiAJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoZXMtPnN0ciwgcG5hbWUpOwogCQllcy0+aW5kZW50Kys7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjQW1pLmMKaW5kZXggMTBmMGIzNDliNS4uZGRlYjAyOGNmMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FtaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNBbWkuYwpAQCAtNTM3LDEwICs1MzcsNiBAQCBFeGVjU3VwcG9ydHNCYWNr d2FyZFNjYW4oUGxhbiAqbm9kZSkKIAkJCXsKIAkJCQlMaXN0Q2VsbCAgICpsOwogCi0JCQkJ LyogV2l0aCBhc3luYywgdHVwbGVzIG1heSBiZSBpbnRlcmxlYXZlZCwgc28gY2FuJ3QgYmFj ayB1cC4gKi8KLQkJCQlpZiAoKChBcHBlbmQgKikgbm9kZSktPm5hc3luY3BsYW5zID4gMCkK LQkJCQkJcmV0dXJuIGZhbHNlOwotCiAJCQkJZm9yZWFjaChsLCAoKEFwcGVuZCAqKSBub2Rl KS0+YXBwZW5kcGxhbnMpCiAJCQkJewogCQkJCQlpZiAoIUV4ZWNTdXBwb3J0c0JhY2t3YXJk U2NhbigoUGxhbiAqKSBsZmlyc3QobCkpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j CmluZGV4IDc1NWMxMzkyZjAuLjBmMjE0OGUwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKQEAgLTgzLDYgKzgzLDggQEAgc3RydWN0IFBhcmFsbGVsQXBwZW5kU3RhdGUK ICNkZWZpbmUgSU5WQUxJRF9TVUJQTEFOX0lOREVYCQktMQogI2RlZmluZSBFVkVOVF9CVUZG RVJfU0laRQkJCTE2CiAKK2Jvb2wJZW5hYmxlX2FzeW5jX2FwcGVuZCA9IHRydWU7CisKIHN0 YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY0FwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSk7CiBz dGF0aWMgYm9vbCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3RhdGUgKm5v ZGUpOwogc3RhdGljIGJvb2wgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyKEFwcGVu ZFN0YXRlICpub2RlKTsKQEAgLTExNyw2ICsxMTksNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWludAkJCWZpcnN0dmFs aWQ7CiAJaW50CQkJaSwKIAkJCQlqOworCWJvb2wJCWNvbnNpZGVyX2FzeW5jOwogCiAJLyog Y2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdzICYgRVhF Q19GTEFHX01BUkspKTsKQEAgLTE5Nyw2ICsyMDAsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHBsYW5zdGF0 ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICoKIAkJCQkJCQkJCQkJIHNpemVv ZihQbGFuU3RhdGUgKikpOwogCisJY29uc2lkZXJfYXN5bmMgPSAoZW5hYmxlX2FzeW5jX2Fw cGVuZCAmJiAhbm9kZS0+cGxhbi5wYXJhbGxlbF9zYWZlICYmCisJCQkJCSAgYm1zX251bV9t ZW1iZXJzKHZhbGlkc3VicGxhbnMpID4gMSk7CiAJLyoKIAkgKiBjYWxsIEV4ZWNJbml0Tm9k ZSBvbiBlYWNoIG9mIHRoZSB2YWxpZCBwbGFucyB0byBiZSBleGVjdXRlZCBhbmQgc2F2ZQog CSAqIHRoZSByZXN1bHRzIGludG8gdGhlIGFwcGVuZHBsYW5zdGF0ZXMgYXJyYXkuCkBAIC0y MTIsMjQgKzIxNywyOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAq KSBsaXN0X250aChub2RlLT5hcHBlbmRwbGFucywgaSk7CiAKKwkJLyoKKwkJICogUmVjb3Jk IHRoZSBsb3dlc3QgYXBwZW5kcGxhbnMgaW5kZXggd2hpY2ggaXMgYSB2YWxpZCBwYXJ0aWFs IHBsYW4uCisJCSAqLworCQlpZiAoaSA+PSBub2RlLT5maXJzdF9wYXJ0aWFsX3BsYW4gJiYg aiA8IGZpcnN0dmFsaWQpCisJCQlmaXJzdHZhbGlkID0gajsKKworCQlhcHBlbmRwbGFuc3Rh dGVzW2pdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisKIAkJ LyoKIAkJICogUmVjb3JkIGFzeW5jIHN1YnBsYW5zLiAgV2hlbiBleGVjdXRpbmcgRXZhbFBs YW5RdWFsLCB3ZSB0cmVhdCB0aGVtCiAJCSAqIGFzIHN5bmMgb25lczsgZG9uJ3QgZG8gdGhp cyB3aGVuIGluaXRpYWxpemluZyBhbiBFdmFsUGxhblF1YWwgcGxhbgogCQkgKiB0cmVlLgog CQkgKi8KLQkJaWYgKGluaXROb2RlLT5hc3luY19jYXBhYmxlICYmIGVzdGF0ZS0+ZXNfZXBx X2FjdGl2ZSA9PSBOVUxMKQorCQlpZiAoY29uc2lkZXJfYXN5bmMgJiYgaW5pdE5vZGUtPmFz eW5jX2NhcGFibGUgJiYKKwkJCWVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQogCQl7 CiAJCQlhc3luY3BsYW5zID0gYm1zX2FkZF9tZW1iZXIoYXN5bmNwbGFucywgaik7CiAJCQlu YXN5bmNwbGFucysrOworCQkJYXBwZW5kcGxhbnN0YXRlc1tqKytdLT5hc3luY19jYXBhYmxl ID0gdHJ1ZTsKIAkJfQotCi0JCS8qCi0JCSAqIFJlY29yZCB0aGUgbG93ZXN0IGFwcGVuZHBs YW5zIGluZGV4IHdoaWNoIGlzIGEgdmFsaWQgcGFydGlhbCBwbGFuLgotCQkgKi8KLQkJaWYg KGkgPj0gbm9kZS0+Zmlyc3RfcGFydGlhbF9wbGFuICYmIGogPCBmaXJzdHZhbGlkKQotCQkJ Zmlyc3R2YWxpZCA9IGo7Ci0KLQkJYXBwZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXRO b2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWVsc2UKKwkJCWFwcGVuZHBsYW5z dGF0ZXNbaisrXS0+YXN5bmNfY2FwYWJsZSA9IGZhbHNlOwogCX0KIAogCWFwcGVuZHN0YXRl LT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBmaXJzdHZhbGlkOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYwppbmRleCA5ZGMzOGQ0N2VhLi44OTg4OTBmYjA4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMjA5LDEzICsy MDksNiBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlzY2Fuc3RhdGUtPmZkd19yZWNoZWNrX3F1YWxzID0K IAkJRXhlY0luaXRRdWFsKG5vZGUtPmZkd19yZWNoZWNrX3F1YWxzLCAoUGxhblN0YXRlICop IHNjYW5zdGF0ZSk7CiAKLQkvKgotCSAqIERldGVybWluZSB3aGV0aGVyIHRvIHNjYW4gdGhl IGZvcmVpZ24gcmVsYXRpb24gYXN5bmNocm9ub3VzbHkgb3Igbm90OwotCSAqIHRoaXMgaGFz IHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBjb2RlIGluIEV4ZWNJbml0QXBwZW5kKCku Ci0JICovCi0Jc2NhbnN0YXRlLT5zcy5wcy5hc3luY19jYXBhYmxlID0gKCgoUGxhbiAqKSBu b2RlKS0+YXN5bmNfY2FwYWJsZSAmJgotCQkJCQkJCQkJICBlc3RhdGUtPmVzX2VwcV9hY3Rp dmUgPT0gTlVMTCk7Ci0KIAkvKgogCSAqIEluaXRpYWxpemUgRkRXLXJlbGF0ZWQgc3RhdGUu CiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGJkODdmMjM3ODQuLmFjYTRhN2Nj ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0yNDMsNyArMjQzLDYgQEAgX2NvcHlB cHBlbmQoY29uc3QgQXBwZW5kICpmcm9tKQogCSAqLwogCUNPUFlfQklUTUFQU0VUX0ZJRUxE KGFwcHJlbGlkcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKGFwcGVuZHBsYW5zKTsKLQlDT1BZX1ND QUxBUl9GSUVMRChuYXN5bmNwbGFucyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZmlyc3RfcGFy dGlhbF9wbGFuKTsKIAlDT1BZX05PREVfRklFTEQocGFydF9wcnVuZV9pbmZvKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMKaW5kZXggZTMyYjkyZTI5OS4uOGU3MmMxMzMzZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9vdXRmdW5jcy5jCkBAIC00MzMsNyArNDMzLDYgQEAgX291dEFwcGVuZChTdHJpbmdJbmZv IHN0ciwgY29uc3QgQXBwZW5kICpub2RlKQogCiAJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGFw cHJlbGlkcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChhcHBlbmRwbGFucyk7Ci0JV1JJVEVfSU5U X0ZJRUxEKG5hc3luY3BsYW5zKTsKIAlXUklURV9JTlRfRklFTEQoZmlyc3RfcGFydGlhbF9w bGFuKTsKIAlXUklURV9OT0RFX0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCmluZGV4IGYwYjM0ZWNmYWMuLmEyYWFmY2QyY2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCkBAIC0xNzE3LDcgKzE3MTcsNiBAQCBfcmVhZEFwcGVuZCh2b2lkKQog CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQoYXBwcmVsaWRzKTsKIAlSRUFEX05PREVfRklFTEQo YXBwZW5kcGxhbnMpOwotCVJFQURfSU5UX0ZJRUxEKG5hc3luY3BsYW5zKTsKIAlSRUFEX0lO VF9GSUVMRChmaXJzdF9wYXJ0aWFsX3BsYW4pOwogCVJFQURfTk9ERV9GSUVMRChwYXJ0X3By dW5lX2luZm8pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRl eCA4NTc3YzdiMTM4Li4yMWUwZGQwMDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2Nvc3RzaXplLmMKQEAgLTE0OSw3ICsxNDksNiBAQCBib29sCQllbmFibGVfcGFydGl0aW9u d2lzZV9hZ2dyZWdhdGUgPSBmYWxzZTsKIGJvb2wJCWVuYWJsZV9wYXJhbGxlbF9hcHBlbmQg PSB0cnVlOwogYm9vbAkJZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSB0cnVlOwogYm9vbAkJZW5h YmxlX3BhcnRpdGlvbl9wcnVuaW5nID0gdHJ1ZTsKLWJvb2wJCWVuYWJsZV9hc3luY19hcHBl bmQgPSB0cnVlOwogCiB0eXBlZGVmIHN0cnVjdAogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDQzOWU2YjY0MjYuLmYyYmFhNTgyNjkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTgyLDcgKzgyLDYg QEAgc3RhdGljIExpc3QgKmdldF9nYXRpbmdfcXVhbHMoUGxhbm5lckluZm8gKnJvb3QsIExp c3QgKnF1YWxzKTsKIHN0YXRpYyBQbGFuICpjcmVhdGVfZ2F0aW5nX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIFBhdGggKnBhdGgsIFBsYW4gKnBsYW4sCiAJCQkJCQkJCUxpc3QgKmdhdGlu Z19xdWFscyk7CiBzdGF0aWMgUGxhbiAqY3JlYXRlX2pvaW5fcGxhbihQbGFubmVySW5mbyAq cm9vdCwgSm9pblBhdGggKmJlc3RfcGF0aCk7Ci1zdGF0aWMgYm9vbCBpc19hc3luY19jYXBh YmxlX3BhdGgoUGF0aCAqcGF0aCk7CiBzdGF0aWMgUGxhbiAqY3JlYXRlX2FwcGVuZF9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCQkJCQkJCWlu dCBmbGFncyk7CiBzdGF0aWMgUGxhbiAqY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKQEAgLTEwOTMsMzEg KzEwOTIsNiBAQCBjcmVhdGVfam9pbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBKb2luUGF0 aCAqYmVzdF9wYXRoKQogCXJldHVybiBwbGFuOwogfQogCi0vKgotICogaXNfYXN5bmNfY2Fw YWJsZV9wYXRoCi0gKgkJQ2hlY2sgd2hldGhlciBhIGdpdmVuIFBhdGggbm9kZSBpcyBhc3lu Yy1jYXBhYmxlLgotICovCi1zdGF0aWMgYm9vbAotaXNfYXN5bmNfY2FwYWJsZV9wYXRoKFBh dGggKnBhdGgpCi17Ci0Jc3dpdGNoIChub2RlVGFnKHBhdGgpKQotCXsKLQkJY2FzZSBUX0Zv cmVpZ25QYXRoOgotCQkJewotCQkJCUZkd1JvdXRpbmUgKmZkd3JvdXRpbmUgPSBwYXRoLT5w YXJlbnQtPmZkd3JvdXRpbmU7Ci0KLQkJCQlBc3NlcnQoZmR3cm91dGluZSAhPSBOVUxMKTsK LQkJCQlpZiAoZmR3cm91dGluZS0+SXNGb3JlaWduUGF0aEFzeW5jQ2FwYWJsZSAhPSBOVUxM ICYmCi0JCQkJCWZkd3JvdXRpbmUtPklzRm9yZWlnblBhdGhBc3luY0NhcGFibGUoKEZvcmVp Z25QYXRoICopIHBhdGgpKQotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQkJCWJyZWFrOwot CQlkZWZhdWx0OgotCQkJYnJlYWs7Ci0JfQotCXJldHVybiBmYWxzZTsKLX0KLQogLyoKICAq IGNyZWF0ZV9hcHBlbmRfcGxhbgogICoJICBDcmVhdGUgYW4gQXBwZW5kIHBsYW4gZm9yICdi ZXN0X3BhdGgnIGFuZCAocmVjdXJzaXZlbHkpIHBsYW5zCkBAIC0xMTM1LDcgKzExMDksNiBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJl c3RfcGF0aCwgaW50IGZsYWdzKQogCUxpc3QJICAgKnBhdGhrZXlzID0gYmVzdF9wYXRoLT5w YXRoLnBhdGhrZXlzOwogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxsICAg KnN1YnBhdGhzOwotCWludAkJCW5hc3luY3BsYW5zID0gMDsKIAlSZWxPcHRJbmZvICpyZWwg PSBiZXN0X3BhdGgtPnBhdGgucGFyZW50OwogCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBy dW5laW5mbyA9IE5VTEw7CiAJaW50CQkJbm9kZW51bXNvcnRrZXlzID0gMDsKQEAgLTExNDMs NyArMTExNiw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBw ZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJT2lkCQkgICAqbm9kZVNvcnRPcGVy YXRvcnMgPSBOVUxMOwogCU9pZAkJICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29s CSAgICpub2RlTnVsbHNGaXJzdCA9IE5VTEw7Ci0JYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBm YWxzZTsKIAogCS8qCiAJICogVGhlIHN1YnBhdGhzIGxpc3QgY291bGQgYmUgZW1wdHksIGlm IGV2ZXJ5IGNoaWxkIHdhcyBwcm92ZW4gZW1wdHkgYnkKQEAgLTEyMDcsMTEgKzExNzksNiBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJl c3RfcGF0aCwgaW50IGZsYWdzKQogCQl0bGlzdF93YXNfY2hhbmdlZCA9IChvcmlnX3RsaXN0 X2xlbmd0aCAhPSBsaXN0X2xlbmd0aChwbGFuLT5wbGFuLnRhcmdldGxpc3QpKTsKIAl9CiAK LQkvKiBJZiBhcHByb3ByaWF0ZSwgY29uc2lkZXIgYXN5bmMgYXBwZW5kICovCi0JY29uc2lk ZXJfYXN5bmMgPSAoZW5hYmxlX2FzeW5jX2FwcGVuZCAmJiBwYXRoa2V5cyA9PSBOSUwgJiYK LQkJCQkJICAhYmVzdF9wYXRoLT5wYXRoLnBhcmFsbGVsX3NhZmUgJiYKLQkJCQkJICBsaXN0 X2xlbmd0aChiZXN0X3BhdGgtPnN1YnBhdGhzKSA+IDEpOwotCiAJLyogQnVpbGQgdGhlIHBs YW4gZm9yIGVhY2ggY2hpbGQgKi8KIAlmb3JlYWNoKHN1YnBhdGhzLCBiZXN0X3BhdGgtPnN1 YnBhdGhzKQogCXsKQEAgLTEyNzksMTMgKzEyNDYsNiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQog CQl9CiAKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKLQotCQkv KiBDaGVjayB0byBzZWUgaWYgc3VicGxhbiBjYW4gYmUgZXhlY3V0ZWQgYXN5bmNocm9ub3Vz bHkgKi8KLQkJaWYgKGNvbnNpZGVyX2FzeW5jICYmIGlzX2FzeW5jX2NhcGFibGVfcGF0aChz dWJwYXRoKSkKLQkJewotCQkJc3VicGxhbi0+YXN5bmNfY2FwYWJsZSA9IHRydWU7Ci0JCQkr K25hc3luY3BsYW5zOwotCQl9CiAJfQogCiAJLyoKQEAgLTEzMTgsNyArMTI3OCw2IEBAIGNy ZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9w YXRoLCBpbnQgZmxhZ3MpCiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsK LQlwbGFuLT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3BhcnRp YWxfcGxhbiA9IGJlc3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwogCXBsYW4tPnBhcnRf cHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CiAKQEAgLTU2ODUsNyArNTY0NCw4IEBAIG1h a2VfZm9yZWlnbnNjYW4oTGlzdCAqcXB0bGlzdCwKIAkJCQkgTGlzdCAqZmR3X3ByaXZhdGUs CiAJCQkJIExpc3QgKmZkd19zY2FuX3RsaXN0LAogCQkJCSBMaXN0ICpmZHdfcmVjaGVja19x dWFscywKLQkJCQkgUGxhbiAqb3V0ZXJfcGxhbikKKwkJCQkgUGxhbiAqb3V0ZXJfcGxhbiwK KwkJCQkgYm9vbCBhc3luY19jYXBhYmxlKQogewogCUZvcmVpZ25TY2FuICpub2RlID0gbWFr ZU5vZGUoRm9yZWlnblNjYW4pOwogCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+c2Nhbi5wbGFu OwpAQCAtNTY5NSw2ICs1NjU1LDcgQEAgbWFrZV9mb3JlaWduc2NhbihMaXN0ICpxcHRsaXN0 LAogCXBsYW4tPnF1YWwgPSBxcHF1YWw7CiAJcGxhbi0+bGVmdHRyZWUgPSBvdXRlcl9wbGFu OwogCXBsYW4tPnJpZ2h0dHJlZSA9IE5VTEw7CisJcGxhbi0+YXN5bmNfY2FwYWJsZSA9IGFz eW5jX2NhcGFibGU7IC8qIHNldCBzdXBwb3J0IG9mIGFzeW5jIG9wdHMgKi8KIAlub2RlLT5z Y2FuLnNjYW5yZWxpZCA9IHNjYW5yZWxpZDsKIAogCS8qIHRoZXNlIG1heSBiZSBvdmVycmlk ZGVuIGJ5IHRoZSBGRFcncyBQbGFuRGlyZWN0TW9kaWZ5IGNhbGxiYWNrLiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjLmMKaW5kZXggNDgwZThjZDE5OS4uYjE0ZmU3NDA1MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Yy5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tb24v c3RyaW5nLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFwcGVuZC5oIgogI2luY2x1ZGUg ImZ1bmNhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibGlicHEvYXV0 aC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFwcGVuZC5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFwcGVuZC5oCmluZGV4IGZhNTRhYzZhZDIuLjE4 MzFkNmUwMjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBcHBlbmQu aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQXBwZW5kLmgKQEAgLTE3LDYgKzE3 LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2FzeW5jX2Fw cGVuZDsKKwogZXh0ZXJuIEFwcGVuZFN0YXRlICpFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRB cHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbkFwcGVu ZChBcHBlbmRTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGFhYTNi NjVkMDQuLjRkNzU5NWE3YjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yNTEsNyAr MjUxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJUGxhbgkJcGxhbjsKIAlCaXRtYXBz ZXQgICphcHByZWxpZHM7CQkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBmb3JtZWQgYnkgdGhp cyBub2RlICovCiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7Ci0JaW50CQkJbmFzeW5jcGxhbnM7 CS8qICMgb2YgYXN5bmNocm9ub3VzIHBsYW5zICovCiAKIAkvKgogCSAqIEFsbCAnYXBwZW5k cGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24tcGFydGlhbCBwbGFucy4gQWxs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oIGIvc3JjL2luY2x1 ZGUvb3B0aW1pemVyL2Nvc3QuaAppbmRleCAwZmU2MGQ4MmU0Li42N2Y5MjVlNzkzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oCisrKyBiL3NyYy9pbmNsdWRl L29wdGltaXplci9jb3N0LmgKQEAgLTY2LDcgKzY2LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGJvb2wgZW5hYmxlX3BhcmFsbGVsX2FwcGVuZDsKIGV4dGVybiBQR0RMTElNUE9SVCBi b29sIGVuYWJsZV9wYXJhbGxlbF9oYXNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5h YmxlX3BhcnRpdGlvbl9wcnVuaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2FzeW5jX2FwcGVuZDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29uc3RyYWludF9leGNs dXNpb247CiAKIGV4dGVybiBkb3VibGUgaW5kZXhfcGFnZXNfZmV0Y2hlZChkb3VibGUgdHVw bGVzX2ZldGNoZWQsIEJsb2NrTnVtYmVyIHBhZ2VzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1h aW4uaAppbmRleCBiZjFhZGZjNTJhLi43MTA1MDNlNTAxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGxhbm1haW4uaApAQCAtNDIsNyArNDIsNyBAQCBleHRlcm4gUGxhbiAqY3JlYXRlX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIFBhdGggKmJlc3RfcGF0aCk7CiBleHRlcm4gRm9yZWlnblNj YW4gKm1ha2VfZm9yZWlnbnNjYW4oTGlzdCAqcXB0bGlzdCwgTGlzdCAqcXBxdWFsLAogCQkJ CQkJCQkJIEluZGV4IHNjYW5yZWxpZCwgTGlzdCAqZmR3X2V4cHJzLCBMaXN0ICpmZHdfcHJp dmF0ZSwKIAkJCQkJCQkJCSBMaXN0ICpmZHdfc2Nhbl90bGlzdCwgTGlzdCAqZmR3X3JlY2hl Y2tfcXVhbHMsCi0JCQkJCQkJCQkgUGxhbiAqb3V0ZXJfcGxhbik7CisJCQkJCQkJCQkgUGxh biAqb3V0ZXJfcGxhbiwgYm9vbCBhc3luY19jYXBhYmxlKTsKIGV4dGVybiBQbGFuICpjaGFu Z2VfcGxhbl90YXJnZXRsaXN0KFBsYW4gKnN1YnBsYW4sIExpc3QgKnRsaXN0LAogCQkJCQkJ CQkJYm9vbCB0bGlzdF9wYXJhbGxlbF9zYWZlKTsKIGV4dGVybiBQbGFuICptYXRlcmlhbGl6 ZV9maW5pc2hlZF9wbGFuKFBsYW4gKnN1YnBsYW4pOwotLSAKMi4zMS4xCgo= --------------FA79020F9058AB63F2A836C4--