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 1n7veH-0003lF-Bg for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jan 2022 08:39:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n7veF-0007Je-R4 for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jan 2022 08:39:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n7veE-0007JT-Fh for pgsql-hackers@lists.postgresql.org; Thu, 13 Jan 2022 08:39:55 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n7ve9-00021I-Cl for pgsql-hackers@postgresql.org; Thu, 13 Jan 2022 08:39:53 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id DE7913201EA6; Thu, 13 Jan 2022 03:39:46 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Thu, 13 Jan 2022 03:39:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=iV/hGF V4q33Bf8CdLBNf+C+jN0O/gX3a7uTzX55IjlI=; b=TJtlrgPEfZZtTKdeiAnzds G+a+j1TcUqS85nb9uBWiHM75U7DsEjAcfGTA86gSBHQrC5otjRTn9UiVgFXiUquD gTn27J2163UKIA5BeBKPc41JDPSUnj3O22aEgGsaNrwQh47/MFl1qWt3aSovnYDj ZoWmBwnXsjIO9lAAMTFyreTi+WsSZVGC6ornT55etYhwpNUjaVCqsdNHXgHDpyEL 6SQ1WVa5phlTfhT/Ehh/M6R3xnCzBCXc9f2PvJ99Hkw/+QLgPqIQsV7YpakHJext F/RMi4OryknGogUShLAUqo5z1tONU6kbfN8WtNojticiVOJSSXknHRCf75X1mFUQ == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrtddvgdduvddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfhfhfgjsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrh hprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpedutdevledtvedvteduvdef vdfhieetkeelvdfhhfejfeejvdeujeeggeefudegtdenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthes vghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 13 Jan 2022 03:39:44 -0500 (EST) Content-Type: multipart/mixed; boundary="------------iwCxhO33U5GkLd2knMqAyAE3" Message-ID: Date: Thu, 13 Jan 2022 09:39:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: ICU for global collation Content-Language: en-US To: Julien Rouhaud Cc: pgsql-hackers , Daniel Verite References: <374f8048-9d87-462c-a8aa-d02ffca6525f@manitou-mail.org> <525ef44f-52bf-505f-a491-07835d039424@enterprisedb.com> <20220110032508.4eyz6m6mpvt622la@jrouhaud> <20220110060027.egvaly4lskylo22f@jrouhaud> <20220111110852.t5oxfga57llm5cy2@jrouhaud> From: Peter Eisentraut In-Reply-To: <20220111110852.t5oxfga57llm5cy2@jrouhaud> 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. --------------iwCxhO33U5GkLd2knMqAyAE3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 11.01.22 12:08, Julien Rouhaud wrote: >> So, unless there are concerns, I'm going to see about making a patch to call >> pg_newlocale_from_collation() even with the default collation. That would >> make the actual feature patch quite a bit smaller, since we won't have to >> patch every call site of pg_newlocale_from_collation(). > +1 for me! Here is that patch. If this is applied, then in my estimation all these hunks will completely disappear from the global ICU patch. So this would be a significant win. --------------iwCxhO33U5GkLd2knMqAyAE3 Content-Type: text/plain; charset=UTF-8; name="0001-Call-pg_newlocale_from_collation-also-with-default-c.patch" Content-Disposition: attachment; filename*0="0001-Call-pg_newlocale_from_collation-also-with-default-c.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyZWU0Yjc3MjIxMDIwZTgxZWM4M2NmMzdkMzZlMzk1NWJmNjE5ZDgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCAxMyBKYW4gMjAyMiAwOToxNDo0MSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIENhbGwgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKCkgYWxzbyB3aXRo IGRlZmF1bHQKIGNvbGxhdGlvbgoKUHJldmlvdXNseSwgY2FsbGVycyBvZiBwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oKSBkaWQgbm90IGNhbGwgaXQKaWYgdGhlIGNvbGxhdGlvbiB3 YXMgREVGQVVMVF9DT0xMQVRJT05fT0lEIGFuZCBpbnN0ZWFkIHByb2NlZWRlZCB3aXRoCmEg cGdfbG9jYWxlX3Qgb2YgMC4gIEluc3RlYWQsIG5vdyB3ZSBjYWxsIGl0IGFueXdheSBhbmQg aGF2ZSBpdCByZXR1cm4KMCBpZiB0aGUgZGVmYXVsdCBjb2xsYXRpb24gd2FzIHBhc3NlZC4g IEl0IGFscmVhZHkgZGlkIHRoaXMsIHNvIHdlCmp1c3QgaGF2ZSB0byBhZGp1c3QgdGhlIGNh bGxlcnMuICBUaGlzIHNpbXBsaWZpZXMgYWxsIHRoZSBjYWxsIHNpdGVzCmFuZCBhbHNvIG1h a2VzIGZ1dHVyZSBlbmhhbmNlbWVudHMgZWFzaWVyLgoKQWZ0ZXIgZGlzY3Vzc2lvbiBhbmQg dGVzdGluZywgdGhlIHByZXZpb3VzIGNvbW1lbnQgaW4gcGdfbG9jYWxlLmMKYWJvdXQgYXZv aWRpbmcgdGhpcyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBtYXkgaGF2ZSBiZWVuIG1pc3Rh a2VuCnNpbmNlIGl0IHdhcyB0ZXN0aW5nIGEgdmVyeSBkaWZmZXJlbnQgcGF0Y2ggdmVyc2lv biB3YXkgYmFjayB3aGVuLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5v cmcvbWVzc2FnZS1pZC9lZDNiYWE4MS03ZmFjLTc3ODgtY2MxMi00MWUzZjc5MTdlMzRAZW50 ZXJwcmlzZWRiLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hmdW5jLmMg ICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jICAgfCA0MCAr KysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMgICB8IDk2 ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9s aWtlLmMgICAgICAgICB8IDM3ICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv bGlrZV9zdXBwb3J0LmMgfCAyNyArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X2xvY2FsZS5jICAgIHwgIDMgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNoYXIuYyAg ICAgIHwgMjYgKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgICAg ICB8IDM0ICsrKysrKy0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMoKyks IDEzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoZnVuYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYwppbmRl eCAwNTIxYzY5ZGQ1Li5iNTdlZDk0NmM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hm dW5jLmMKQEAgLTI3OCw3ICsyNzgsNyBAQCBoYXNodGV4dChQR19GVU5DVElPTl9BUkdTKQog CQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVz ZSBmb3Igc3RyaW5nIGhhc2hpbmciKSwKIAkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRF IGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7CiAKLQlpZiAo IWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElP Tl9PSUQpCisJaWYgKCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSkKIAkJbXlsb2NhbGUgPSBw Z19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKIAogCWlmICghbXlsb2NhbGUg fHwgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpCkBAIC0zMzQsNyArMzM0LDcgQEAgaGFzaHRl eHRleHRlbmRlZChQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBk ZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3Igc3RyaW5nIGhhc2hpbmciKSwK IAkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxh dGlvbiBleHBsaWNpdGx5LiIpKSk7CiAKLQlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQp ICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJaWYgKCFsY19jb2xsYXRl X2lzX2MoY29sbGlkKSkKIAkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRp b24oY29sbGlkKTsKIAogCWlmICghbXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0 aWMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jIGIv c3JjL2JhY2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYwppbmRleCBlMGQ5M2VhYjMyLi42 ZTg0ZjQyY2IyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2Fs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlZ2V4L3JlZ2NfcGdfbG9jYWxlLmMKQEAgLTIzMSw2 ICsyMzEsMTggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGdfY2hhcl9wcm9wZXJ0 aWVzWzEyOF0gPSB7CiB2b2lkCiBwZ19zZXRfcmVnZXhfY29sbGF0aW9uKE9pZCBjb2xsYXRp b24pCiB7CisJaWYgKCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpCisJeworCQkvKgorCQkgKiBU aGlzIHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQgbm90IHJlc29sdmUg YQorCQkgKiBjb25mbGljdCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyByZXBvcnQgaXQg dGhhdCB3YXkuCisJCSAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04pLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBk ZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgcmVndWxhciBleHByZXNzaW9u IiksCisJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRoZSBj b2xsYXRpb24gZXhwbGljaXRseS4iKSkpOworCX0KKwogCWlmIChsY19jdHlwZV9pc19jKGNv bGxhdGlvbikpCiAJewogCQkvKiBDL1BPU0lYIGNvbGxhdGlvbnMgdXNlIHRoaXMgcGF0aCBy ZWdhcmRsZXNzIG9mIGRhdGFiYXNlIGVuY29kaW5nICovCkBAIC0yNDAsMjggKzI1MiwxMiBA QCBwZ19zZXRfcmVnZXhfY29sbGF0aW9uKE9pZCBjb2xsYXRpb24pCiAJfQogCWVsc2UKIAl7 Ci0JCWlmIChjb2xsYXRpb24gPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQkJcGdfcmVn ZXhfbG9jYWxlID0gMDsKLQkJZWxzZSBpZiAoT2lkSXNWYWxpZChjb2xsYXRpb24pKQotCQl7 Ci0JCQkvKgotCQkJICogTkI6IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbiB3aWxsIGZh aWwgaWYgbm90IEhBVkVfTE9DQUxFX1Q7Ci0JCQkgKiB0aGUgY2FzZSBvZiBwZ19yZWdleF9s b2NhbGUgIT0gMCBidXQgbm90IEhBVkVfTE9DQUxFX1QgZG9lcyBub3QKLQkJCSAqIGhhdmUg dG8gYmUgY29uc2lkZXJlZCBiZWxvdy4KLQkJCSAqLwotCQkJcGdfcmVnZXhfbG9jYWxlID0g cGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbik7Ci0JCX0KLQkJZWxzZQot CQl7Ci0JCQkvKgotCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFyc2Vy IGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxh dGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCSAqLwotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCi0J CQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVz ZSBmb3IgcmVndWxhciBleHByZXNzaW9uIiksCi0JCQkJCSBlcnJoaW50KCJVc2UgdGhlIENP TExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKLQkJ fQorCQkvKgorCQkgKiBOQjogcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uIHdpbGwgZmFp bCBpZiBub3QgSEFWRV9MT0NBTEVfVDsKKwkJICogdGhlIGNhc2Ugb2YgcGdfcmVnZXhfbG9j YWxlICE9IDAgYnV0IG5vdCBIQVZFX0xPQ0FMRV9UIGRvZXMgbm90CisJCSAqIGhhdmUgdG8g YmUgY29uc2lkZXJlZCBiZWxvdy4KKwkJICovCisJCXBnX3JlZ2V4X2xvY2FsZSA9IHBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsYXRpb24pOwogCiAJCWlmIChwZ19yZWdleF9s b2NhbGUgJiYgIXBnX3JlZ2V4X2xvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAkJCWVyZXBvcnQo RVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwppbmRleCBlOGY5OTZhYzgz Li5kNGMyZTdiMDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0 dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKQEAgLTE2 NDEsNiArMTY0MSwxOSBAQCBzdHJfdG9sb3dlcihjb25zdCBjaGFyICpidWZmLCBzaXplX3Qg bmJ5dGVzLCBPaWQgY29sbGlkKQogCWlmICghYnVmZikKIAkJcmV0dXJuIE5VTEw7CiAKKwlp ZiAoIU9pZElzVmFsaWQoY29sbGlkKSkKKwl7CisJCS8qCisJCSAqIFRoaXMgdHlwaWNhbGx5 IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVzb2x2ZSBhCisJCSAqIGNvbmZs aWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KKwkJ ICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlO QVRFX0NPTExBVElPTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGlj aCBjb2xsYXRpb24gdG8gdXNlIGZvciAlcyBmdW5jdGlvbiIsCisJCQkJCQkibG93ZXIoKSIp LAorCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29s bGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKKwl9CisKIAkvKiBDL1BPU0lYIGNvbGxhdGlvbnMg dXNlIHRoaXMgcGF0aCByZWdhcmRsZXNzIG9mIGRhdGFiYXNlIGVuY29kaW5nICovCiAJaWYg KGxjX2N0eXBlX2lzX2MoY29sbGlkKSkKIAl7CkBAIC0xNjQ4LDI0ICsxNjYxLDkgQEAgc3Ry X3RvbG93ZXIoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcywgT2lkIGNvbGxpZCkK IAl9CiAJZWxzZQogCXsKLQkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOworCQlwZ19sb2Nh bGVfdCBteWxvY2FsZTsKIAotCQlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09J RCkKLQkJewotCQkJaWYgKCFPaWRJc1ZhbGlkKGNvbGxpZCkpCi0JCQl7Ci0JCQkJLyoKLQkJ CQkgKiBUaGlzIHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQgbm90IHJl c29sdmUgYQotCQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJl cG9ydCBpdCB0aGF0IHdheS4KLQkJCQkgKi8KLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCi0JCQkJCQkgZXJy bXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yICVz IGZ1bmN0aW9uIiwKLQkJCQkJCQkJImxvd2VyKCkiKSwKLQkJCQkJCSBlcnJoaW50KCJVc2Ug dGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikp KTsKLQkJCX0KLQkJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNv bGxpZCk7Ci0JCX0KKwkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24o Y29sbGlkKTsKIAogI2lmZGVmIFVTRV9JQ1UKIAkJaWYgKG15bG9jYWxlICYmIG15bG9jYWxl LT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQpAQCAtMTc2NSw2ICsxNzYzLDE5IEBA IHN0cl90b3VwcGVyKGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9pZCBjb2xs aWQpCiAJaWYgKCFidWZmKQogCQlyZXR1cm4gTlVMTDsKIAorCWlmICghT2lkSXNWYWxpZChj b2xsaWQpKQorCXsKKwkJLyoKKwkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUg cGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKKwkJICogY29uZmxpY3Qgb2YgaW1wbGljaXQg Y29sbGF0aW9ucywgc28gcmVwb3J0IGl0IHRoYXQgd2F5LgorCQkgKi8KKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwK KwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1 c2UgZm9yICVzIGZ1bmN0aW9uIiwKKwkJCQkJCSJ1cHBlcigpIiksCisJCQkJIGVycmhpbnQo IlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRs eS4iKSkpOworCX0KKwogCS8qIEMvUE9TSVggY29sbGF0aW9ucyB1c2UgdGhpcyBwYXRoIHJl Z2FyZGxlc3Mgb2YgZGF0YWJhc2UgZW5jb2RpbmcgKi8KIAlpZiAobGNfY3R5cGVfaXNfYyhj b2xsaWQpKQogCXsKQEAgLTE3NzIsMjQgKzE3ODMsOSBAQCBzdHJfdG91cHBlcihjb25zdCBj aGFyICpidWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlkKQogCX0KIAllbHNlCiAJewot CQlwZ19sb2NhbGVfdCBteWxvY2FsZSA9IDA7CisJCXBnX2xvY2FsZV90IG15bG9jYWxlOwog Ci0JCWlmIChjb2xsaWQgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQl7Ci0JCQlpZiAo IU9pZElzVmFsaWQoY29sbGlkKSkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIFRoaXMgdHlwaWNh bGx5IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVzb2x2ZSBhCi0JCQkJICog Y29uZmxpY3Qgb2YgaW1wbGljaXQgY29sbGF0aW9ucywgc28gcmVwb3J0IGl0IHRoYXQgd2F5 LgotCQkJCSAqLwotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBk ZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgJXMgZnVuY3Rpb24iLAotCQkJ CQkJCQkidXBwZXIoKSIpLAotCQkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1 c2UgdG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwotCQkJfQotCQkJbXls b2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKLQkJfQorCQlt eWxvY2FsZSA9IHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCiAjaWZk ZWYgVVNFX0lDVQogCQlpZiAobXlsb2NhbGUgJiYgbXlsb2NhbGUtPnByb3ZpZGVyID09IENP TExQUk9WSURFUl9JQ1UpCkBAIC0xODkwLDYgKzE4ODYsMTkgQEAgc3RyX2luaXRjYXAoY29u c3QgY2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcywgT2lkIGNvbGxpZCkKIAlpZiAoIWJ1ZmYp CiAJCXJldHVybiBOVUxMOwogCisJaWYgKCFPaWRJc1ZhbGlkKGNvbGxpZCkpCisJeworCQkv KgorCQkgKiBUaGlzIHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBwYXJzZXIgY291bGQgbm90 IHJlc29sdmUgYQorCQkgKiBjb25mbGljdCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyBy ZXBvcnQgaXQgdGhhdCB3YXkuCisJCSAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04pLAorCQkJCSBlcnJtc2coImNv dWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgJXMgZnVuY3Rp b24iLAorCQkJCQkJImluaXRjYXAoKSIpLAorCQkJCSBlcnJoaW50KCJVc2UgdGhlIENPTExB VEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHkuIikpKTsKKwl9CisK IAkvKiBDL1BPU0lYIGNvbGxhdGlvbnMgdXNlIHRoaXMgcGF0aCByZWdhcmRsZXNzIG9mIGRh dGFiYXNlIGVuY29kaW5nICovCiAJaWYgKGxjX2N0eXBlX2lzX2MoY29sbGlkKSkKIAl7CkBA IC0xODk3LDI0ICsxOTA2LDkgQEAgc3RyX2luaXRjYXAoY29uc3QgY2hhciAqYnVmZiwgc2l6 ZV90IG5ieXRlcywgT2lkIGNvbGxpZCkKIAl9CiAJZWxzZQogCXsKLQkJcGdfbG9jYWxlX3Qg bXlsb2NhbGUgPSAwOworCQlwZ19sb2NhbGVfdCBteWxvY2FsZTsKIAotCQlpZiAoY29sbGlk ICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKLQkJewotCQkJaWYgKCFPaWRJc1ZhbGlkKGNv bGxpZCkpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIHR5cGljYWxseSBtZWFucyB0aGF0 IHRoZSBwYXJzZXIgY291bGQgbm90IHJlc29sdmUgYQotCQkJCSAqIGNvbmZsaWN0IG9mIGlt cGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCQkgKi8KLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRF X0NPTExBVElPTiksCi0JCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNo IGNvbGxhdGlvbiB0byB1c2UgZm9yICVzIGZ1bmN0aW9uIiwKLQkJCQkJCQkJImluaXRjYXAo KSIpLAotCQkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRo ZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwotCQkJfQotCQkJbXlsb2NhbGUgPSBwZ19u ZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKLQkJfQorCQlteWxvY2FsZSA9IHBn X25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCiAjaWZkZWYgVVNFX0lDVQog CQlpZiAobXlsb2NhbGUgJiYgbXlsb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9WSURFUl9J Q1UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2xpa2UuYwppbmRleCA5ZjI0MWRjN2M2Li44MzNlZThmODE0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9saWtlLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBTQl9sb3dlcl9jaGFy KHVuc2lnbmVkIGNoYXIgYywgcGdfbG9jYWxlX3QgbG9jYWxlLCBib29sIGxvY2FsZV9pc19j KQogc3RhdGljIGlubGluZSBpbnQKIEdlbmVyaWNNYXRjaFRleHQoY29uc3QgY2hhciAqcywg aW50IHNsZW4sIGNvbnN0IGNoYXIgKnAsIGludCBwbGVuLCBPaWQgY29sbGF0aW9uKQogewot CWlmIChjb2xsYXRpb24gJiYgIWxjX2N0eXBlX2lzX2MoY29sbGF0aW9uKSAmJiBjb2xsYXRp b24gIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCWlmIChjb2xsYXRpb24gJiYgIWxjX2N0 eXBlX2lzX2MoY29sbGF0aW9uKSkKIAl7CiAJCXBnX2xvY2FsZV90IGxvY2FsZSA9IHBnX25l d2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsYXRpb24pOwogCkBAIC0xNzgsMjggKzE3OCwy NyBAQCBHZW5lcmljX1RleHRfSUNfbGlrZSh0ZXh0ICpzdHIsIHRleHQgKnBhdCwgT2lkIGNv bGxhdGlvbikKIAlwZ19sb2NhbGVfdCBsb2NhbGUgPSAwOwogCWJvb2wJCWxvY2FsZV9pc19j ID0gZmFsc2U7CiAKKwlpZiAoIU9pZElzVmFsaWQoY29sbGF0aW9uKSkKKwl7CisJCS8qCisJ CSAqIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVz b2x2ZSBhCisJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMsIHNvIHJlcG9y dCBpdCB0aGF0IHdheS4KKwkJICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJCQkJIGVycm1zZygiY291bGQg bm90IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBJTElLRSIpLAorCQkJ CSBlcnJoaW50KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9u IGV4cGxpY2l0bHkuIikpKTsKKwl9CisKIAlpZiAobGNfY3R5cGVfaXNfYyhjb2xsYXRpb24p KQogCQlsb2NhbGVfaXNfYyA9IHRydWU7Ci0JZWxzZSBpZiAoY29sbGF0aW9uICE9IERFRkFV TFRfQ09MTEFUSU9OX09JRCkKLQl7Ci0JCWlmICghT2lkSXNWYWxpZChjb2xsYXRpb24pKQot CQl7Ci0JCQkvKgotCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFyc2Vy IGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxh dGlvbnMsIHNvIHJlcG9ydCBpdCB0aGF0IHdheS4KLQkJCSAqLwotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCi0J CQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVz ZSBmb3IgSUxJS0UiKSwKLQkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2Ug dG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwotCQl9CisJZWxzZQogCQls b2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9uKTsKIAotCQlp ZiAobG9jYWxlICYmICFsb2NhbGUtPmRldGVybWluaXN0aWMpCi0JCQllcmVwb3J0KEVSUk9S LAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJ CSBlcnJtc2coIm5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRl ZCBmb3IgSUxJS0UiKSkpOwotCX0KKwlpZiAobG9jYWxlICYmICFsb2NhbGUtPmRldGVybWlu aXN0aWMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIm5vbmRldGVybWluaXN0aWMgY29sbGF0 aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgSUxJS0UiKSkpOwogCiAJLyoKIAkgKiBGb3Ig ZWZmaWNpZW5jeSByZWFzb25zLCBpbiB0aGUgc2luZ2xlIGJ5dGUgY2FzZSB3ZSBkb24ndCBj YWxsIGxvd2VyKCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX3N1 cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX3N1cHBvcnQuYwppbmRleCA3 Y2EyYTAxZTQ5Li42NWE1N2ZjM2M0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbGlrZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Vfc3Vw cG9ydC5jCkBAIC0xMDEyLDI0ICsxMDEyLDIzIEBAIGxpa2VfZml4ZWRfcHJlZml4KENvbnN0 ICpwYXR0X2NvbnN0LCBib29sIGNhc2VfaW5zZW5zaXRpdmUsIE9pZCBjb2xsYXRpb24sCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVy cm1zZygiY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyBub3Qgc3VwcG9ydGVkIG9uIHR5cGUg Ynl0ZWEiKSkpOwogCisJCWlmICghT2lkSXNWYWxpZChjb2xsYXRpb24pKQorCQl7CisJCQkv KgorCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFyc2VyIGNvdWxkIG5v dCByZXNvbHZlIGEKKwkJCSAqIGNvbmZsaWN0IG9mIGltcGxpY2l0IGNvbGxhdGlvbnMsIHNv IHJlcG9ydCBpdCB0aGF0IHdheS4KKwkJCSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0NPTExBVElPTiksCisJCQkJCSBlcnJt c2coImNvdWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgSUxJ S0UiKSwKKwkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRo ZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOworCQl9CisKIAkJLyogSWYgY2FzZS1pbnNl bnNpdGl2ZSwgd2UgbmVlZCBsb2NhbGUgaW5mbyAqLwogCQlpZiAobGNfY3R5cGVfaXNfYyhj b2xsYXRpb24pKQogCQkJbG9jYWxlX2lzX2MgPSB0cnVlOwotCQllbHNlIGlmIChjb2xsYXRp b24gIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQl7Ci0JCQlpZiAoIU9pZElzVmFsaWQo Y29sbGF0aW9uKSkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIFRoaXMgdHlwaWNhbGx5IG1lYW5z IHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVzb2x2ZSBhCi0JCQkJICogY29uZmxpY3Qg b2YgaW1wbGljaXQgY29sbGF0aW9ucywgc28gcmVwb3J0IGl0IHRoYXQgd2F5LgotCQkJCSAq LwotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVURVJN SU5BVEVfQ09MTEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUg d2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgSUxJS0UiKSwKLQkJCQkJCSBlcnJoaW50KCJV c2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0bHku IikpKTsKLQkJCX0KKwkJZWxzZQogCQkJbG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29s bGF0aW9uKGNvbGxhdGlvbik7Ci0JCX0KIAl9CiAKIAlpZiAodHlwZWlkICE9IEJZVEVBT0lE KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCmluZGV4IDE4ZjNhZmRjNjIuLjMzY2Nj YzVjNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKQEAgLTE0NTQsOCArMTQ1 NCw2IEBAIHJlcG9ydF9uZXdsb2NhbGVfZmFpbHVyZShjb25zdCBjaGFyICpsb2NhbGVuYW1l KQogICoKICAqIEFzIGEgc3BlY2lhbCBvcHRpbWl6YXRpb24sIHRoZSBkZWZhdWx0L2RhdGFi YXNlIGNvbGxhdGlvbiByZXR1cm5zIDAuCiAgKiBDYWxsZXJzIHNob3VsZCB0aGVuIHJldmVy dCB0byB0aGUgbm9uLWxvY2FsZV90LWVuYWJsZWQgY29kZSBwYXRoLgotICogSW4gZmFjdCwg dGhleSBzaG91bGRuJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGF0IGFsbCB3aGVuIHRoZXkgYXJl IGRlYWxpbmcKLSAqIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLiAgVGhhdCBjYW4gc2F2ZSBx dWl0ZSBhIGJpdCBpbiBob3RzcG90cy4KICAqIEFsc28sIGNhbGxlcnMgc2hvdWxkIGF2b2lk IGNhbGxpbmcgdGhpcyBiZWZvcmUgZ29pbmcgZG93biBhIEMvUE9TSVgKICAqIGZhc3RwYXRo LCBiZWNhdXNlIHN1Y2ggYSBmYXN0cGF0aCBzaG91bGQgd29yayBldmVuIG9uIHBsYXRmb3Jt cyB3aXRob3V0CiAgKiBsb2NhbGVfdCBzdXBwb3J0IGluIHRoZSBDIGxpYnJhcnkuCkBAIC0x NDcyLDcgKzE0NzAsNiBAQCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxp ZCkKIAkvKiBDYWxsZXJzIG11c3QgcGFzcyBhIHZhbGlkIE9JRCAqLwogCUFzc2VydChPaWRJ c1ZhbGlkKGNvbGxpZCkpOwogCi0JLyogUmV0dXJuIDAgZm9yICJkZWZhdWx0IiBjb2xsYXRp b24sIGp1c3QgaW4gY2FzZSBjYWxsZXIgZm9yZ2V0cyAqLwogCWlmIChjb2xsaWQgPT0gREVG QVVMVF9DT0xMQVRJT05fT0lEKQogCQlyZXR1cm4gKHBnX2xvY2FsZV90KSAwOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3ZhcmNoYXIuYwppbmRleCA5NWY3NjhjODg0Li44YjViMzBlZDcxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMKQEAgLTc0MywxNSArNzQzLDIwIEBAIGJwY2hhcmVx KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJbGVuMjsKIAlib29sCQlyZXN1bHQ7CiAJT2lkCQkJ Y29sbGlkID0gUEdfR0VUX0NPTExBVElPTigpOworCWJvb2wJCWxvY2FsZV9pc19jID0gZmFs c2U7CisJcGdfbG9jYWxlX3QJbXlsb2NhbGUgPSAwOwogCiAJY2hlY2tfY29sbGF0aW9uX3Nl dChjb2xsaWQpOwogCiAJbGVuMSA9IGJjVHJ1ZWxlbihhcmcxKTsKIAlsZW4yID0gYmNUcnVl bGVuKGFyZzIpOwogCi0JaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpIHx8Ci0JCWNvbGxp ZCA9PSBERUZBVUxUX0NPTExBVElPTl9PSUQgfHwKLQkJcGdfbmV3bG9jYWxlX2Zyb21fY29s bGF0aW9uKGNvbGxpZCktPmRldGVybWluaXN0aWMpCisJaWYgKGxjX2NvbGxhdGVfaXNfYyhj b2xsaWQpKQorCQlsb2NhbGVfaXNfYyA9IHRydWU7CisJZWxzZQorCQlteWxvY2FsZSA9IHBn X25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCisJaWYgKGxvY2FsZV9pc19j IHx8ICFteWxvY2FsZSB8fCBteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAl7CiAJCS8qCiAJ CSAqIFNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBlcXVhbGl0eSBvciBub3QtZXF1YWxpdHks IHdlIGNhbiBhdm9pZCBhbGwKQEAgLTc4MywxNSArNzg4LDIwIEBAIGJwY2hhcm5lKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQkJbGVuMjsKIAlib29sCQlyZXN1bHQ7CiAJT2lkCQkJY29sbGlk ID0gUEdfR0VUX0NPTExBVElPTigpOworCWJvb2wJCWxvY2FsZV9pc19jID0gZmFsc2U7CisJ cGdfbG9jYWxlX3QJbXlsb2NhbGUgPSAwOwogCiAJY2hlY2tfY29sbGF0aW9uX3NldChjb2xs aWQpOwogCiAJbGVuMSA9IGJjVHJ1ZWxlbihhcmcxKTsKIAlsZW4yID0gYmNUcnVlbGVuKGFy ZzIpOwogCi0JaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpIHx8Ci0JCWNvbGxpZCA9PSBE RUZBVUxUX0NPTExBVElPTl9PSUQgfHwKLQkJcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KGNvbGxpZCktPmRldGVybWluaXN0aWMpCisJaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQp KQorCQlsb2NhbGVfaXNfYyA9IHRydWU7CisJZWxzZQorCQlteWxvY2FsZSA9IHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOworCisJaWYgKGxvY2FsZV9pc19jIHx8ICFt eWxvY2FsZSB8fCBteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAl7CiAJCS8qCiAJCSAqIFNp bmNlIHdlIG9ubHkgY2FyZSBhYm91dCBlcXVhbGl0eSBvciBub3QtZXF1YWxpdHksIHdlIGNh biBhdm9pZCBhbGwKQEAgLTk5Niw3ICsxMDA2LDcgQEAgaGFzaGJwY2hhcihQR19GVU5DVElP Tl9BUkdTKQogCWtleWRhdGEgPSBWQVJEQVRBX0FOWShrZXkpOwogCWtleWxlbiA9IGJjVHJ1 ZWxlbihrZXkpOwogCi0JaWYgKCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSAmJiBjb2xsaWQg IT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQorCWlmICghbGNfY29sbGF0ZV9pc19jKGNvbGxp ZCkpCiAJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7 CiAKIAlpZiAoIW15bG9jYWxlIHx8IG15bG9jYWxlLT5kZXRlcm1pbmlzdGljKQpAQCAtMTA1 Niw3ICsxMDY2LDcgQEAgaGFzaGJwY2hhcmV4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ a2V5ZGF0YSA9IFZBUkRBVEFfQU5ZKGtleSk7CiAJa2V5bGVuID0gYmNUcnVlbGVuKGtleSk7 CiAKLQlpZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxU X0NPTExBVElPTl9PSUQpCisJaWYgKCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSkKIAkJbXls b2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKIAogCWlmICgh bXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Zh cmxlbmEuYwppbmRleCBiM2ViMzk3NjFkLi5hOGRiODA4MGUyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTEyMDAsNyArMTIwMCw3IEBAIHRleHRfcG9zaXRpb25fc2V0dXAo dGV4dCAqdDEsIHRleHQgKnQyLCBPaWQgY29sbGlkLCBUZXh0UG9zaXRpb25TdGF0ZSAqc3Rh dGUpCiAKIAljaGVja19jb2xsYXRpb25fc2V0KGNvbGxpZCk7CiAKLQlpZiAoIWxjX2NvbGxh dGVfaXNfYyhjb2xsaWQpICYmIGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJ aWYgKCFsY19jb2xsYXRlX2lzX2MoY29sbGlkKSkKIAkJbXlsb2NhbGUgPSBwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKIAogCWlmIChteWxvY2FsZSAmJiAhbXlsb2Nh bGUtPmRldGVybWluaXN0aWMpCkBAIC0xNTU2LDEwICsxNTU2LDkgQEAgdmFyc3RyX2NtcChj b25zdCBjaGFyICphcmcxLCBpbnQgbGVuMSwgY29uc3QgY2hhciAqYXJnMiwgaW50IGxlbjIs IE9pZCBjb2xsaWQpCiAJCWNoYXIJCWEyYnVmW1RFWFRCVUZMRU5dOwogCQljaGFyCSAgICph MXAsCiAJCQkJICAgKmEycDsKLQkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOworCQlwZ19s b2NhbGVfdCBteWxvY2FsZTsKIAotCQlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9O X09JRCkKLQkJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxp ZCk7CisJCW15bG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7 CiAKIAkJLyoKIAkJICogbWVtY21wKCkgY2FuJ3QgdGVsbCB1cyB3aGljaCBvZiB0d28gdW5l cXVhbCBzdHJpbmdzIHNvcnRzIGZpcnN0LApAQCAtMTc3NiwxMyArMTc3NSwxOCBAQCBEYXR1 bQogdGV4dGVxKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJT2lkCQkJY29sbGlkID0gUEdfR0VU X0NPTExBVElPTigpOworCWJvb2wJCWxvY2FsZV9pc19jID0gZmFsc2U7CisJcGdfbG9jYWxl X3QJbXlsb2NhbGUgPSAwOwogCWJvb2wJCXJlc3VsdDsKIAogCWNoZWNrX2NvbGxhdGlvbl9z ZXQoY29sbGlkKTsKIAotCWlmIChsY19jb2xsYXRlX2lzX2MoY29sbGlkKSB8fAotCQljb2xs aWQgPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEIHx8Ci0JCXBnX25ld2xvY2FsZV9mcm9tX2Nv bGxhdGlvbihjb2xsaWQpLT5kZXRlcm1pbmlzdGljKQorCWlmIChsY19jb2xsYXRlX2lzX2Mo Y29sbGlkKSkKKwkJbG9jYWxlX2lzX2MgPSB0cnVlOworCWVsc2UKKwkJbXlsb2NhbGUgPSBw Z19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKworCWlmIChsb2NhbGVfaXNf YyB8fCAhbXlsb2NhbGUgfHwgbXlsb2NhbGUtPmRldGVybWluaXN0aWMpCiAJewogCQlEYXR1 bQkJYXJnMSA9IFBHX0dFVEFSR19EQVRVTSgwKTsKIAkJRGF0dW0JCWFyZzIgPSBQR19HRVRB UkdfREFUVU0oMSk7CkBAIC0xODMwLDEzICsxODM0LDE4IEBAIERhdHVtCiB0ZXh0bmUoUEdf RlVOQ1RJT05fQVJHUykKIHsKIAlPaWQJCQljb2xsaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7 CisJYm9vbAkJbG9jYWxlX2lzX2MgPSBmYWxzZTsKKwlwZ19sb2NhbGVfdAlteWxvY2FsZSA9 IDA7CiAJYm9vbAkJcmVzdWx0OwogCiAJY2hlY2tfY29sbGF0aW9uX3NldChjb2xsaWQpOwog Ci0JaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpIHx8Ci0JCWNvbGxpZCA9PSBERUZBVUxU X0NPTExBVElPTl9PSUQgfHwKLQkJcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxp ZCktPmRldGVybWluaXN0aWMpCisJaWYgKGxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpKQorCQls b2NhbGVfaXNfYyA9IHRydWU7CisJZWxzZQorCQlteWxvY2FsZSA9IHBnX25ld2xvY2FsZV9m cm9tX2NvbGxhdGlvbihjb2xsaWQpOworCisJaWYgKGxvY2FsZV9pc19jIHx8ICFteWxvY2Fs ZSB8fCBteWxvY2FsZS0+ZGV0ZXJtaW5pc3RpYykKIAl7CiAJCURhdHVtCQlhcmcxID0gUEdf R0VUQVJHX0RBVFVNKDApOwogCQlEYXR1bQkJYXJnMiA9IFBHX0dFVEFSR19EQVRVTSgxKTsK QEAgLTE5NDcsNyArMTk1Niw3IEBAIHRleHRfc3RhcnRzX3dpdGgoUEdfRlVOQ1RJT05fQVJH UykKIAogCWNoZWNrX2NvbGxhdGlvbl9zZXQoY29sbGlkKTsKIAotCWlmICghbGNfY29sbGF0 ZV9pc19jKGNvbGxpZCkgJiYgY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKKwlp ZiAoIWxjX2NvbGxhdGVfaXNfYyhjb2xsaWQpKQogCQlteWxvY2FsZSA9IHBnX25ld2xvY2Fs ZV9mcm9tX2NvbGxhdGlvbihjb2xsaWQpOwogCiAJaWYgKG15bG9jYWxlICYmICFteWxvY2Fs ZS0+ZGV0ZXJtaW5pc3RpYykKQEAgLTIwNjEsOCArMjA3MCw3IEBAIHZhcnN0cl9zb3J0c3Vw cG9ydChTb3J0U3VwcG9ydCBzc3VwLCBPaWQgdHlwaWQsIE9pZCBjb2xsaWQpCiAJCSAqIHdl J2xsIGZpZ3VyZSBvdXQgdGhlIGNvbGxhdGlvbiBiYXNlZCBvbiB0aGUgbG9jYWxlIGlkIGFu ZCBjYWNoZSB0aGUKIAkJICogcmVzdWx0LgogCQkgKi8KLQkJaWYgKGNvbGxpZCAhPSBERUZB VUxUX0NPTExBVElPTl9PSUQpCi0JCQlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xs YXRpb24oY29sbGlkKTsKKwkJbG9jYWxlID0gcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9u KGNvbGxpZCk7CiAKIAkJLyoKIAkJICogVGhlcmUgaXMgYSBmdXJ0aGVyIGV4Y2VwdGlvbiBv biBXaW5kb3dzLiAgV2hlbiB0aGUgZGF0YWJhc2UKLS0gCjIuMzQuMQoK --------------iwCxhO33U5GkLd2knMqAyAE3--