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 1rZqZQ-006j2w-Gc for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Feb 2024 11:03:27 +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 1rZqZP-00Gv3i-Fi for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Feb 2024 11:03:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rZqZO-00Gv3a-MB for pgsql-hackers@lists.postgresql.org; Tue, 13 Feb 2024 11:03:23 +0000 Received: from dd26416.kasserver.com ([85.13.145.105]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rZqZI-006WnT-Jr for pgsql-hackers@lists.postgresql.org; Tue, 13 Feb 2024 11:03:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202309091111; t=1707822192; bh=c7PxxMmnasH3f6EdoaHsyA3lJG7oirm80ChLgjZk63Q=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=mE/P9Y0pa8efBbDIBO36PhabMKKoU6/rvo5rhXy2FjA0cIv/WXe+Bgu1I/RN0yc/Q e5PuxVoVRvPdXL6FqONemHEuZsOPRGmHkTZranohvtowvfwAa4S49FQWtEYx3/1Anp qb2gtbVJotJohFNa1cfIhlc/OBL3fUs+Xxse82qUc9nAgFutiltaYE6FBSE42dWSwp j4ZghXDBYnD6r2PC9poyvvPG+9cseMu48Jrt1+oO1e8vIapShmaXmW1mAFd4LgjMY0 lnCSPPx/UCR2SIsoLcKBAZFbhQcvY2Ff/pLx50xBU8i++ZzTB6hlFyElYz+s2CAJgP ExA6Eg/LqSp0w== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd26416.kasserver.com (Postfix) with ESMTPSA id 6ABD88003BE; Tue, 13 Feb 2024 12:03:12 +0100 (CET) Received: from chufu.bluecherstrasse.oopsware.lan (i5C750244.versanet.de [92.117.2.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sethos.at.struktu.ro (Postfix) with ESMTPSA id 71441508C4CC; Tue, 13 Feb 2024 12:03:11 +0100 (CET) Message-ID: <31f23e46f71b744fb639967169d7df4c748110af.camel@oopsware.de> Subject: Re: [PATCH] Add sortsupport for range types and btree_gist From: Bernd Helmle To: jian he Cc: pgsql-hackers@lists.postgresql.org Date: Tue, 13 Feb 2024 12:03:10 +0100 In-Reply-To: References: <437ccbcf-8f80-2919-411d-a3af88becf6c@cybertec.at> <77f4bacbeb9d223f90b3a0bd55ef7d65407bfddd.camel@oopsware.de> <2f2e88bf1d44d06c1baf27bbf3db880f42a5cb87.camel@oopsware.de> Autocrypt: addr=mailings@oopsware.de; prefer-encrypt=mutual; keydata=mQGiBEIM4dYRBACEnxQZ/CfR1xbCJzGOIjvh3fZpLALMm+tt237QlZm9nlLaEwCn317sT1khPAJwhyBHSHbNFbH+LOL6ezYrg4V2Q9KHyYJDStJtC8c+D7vHVB5Jfslynx89DnCH6jb3H0j+U0iNYmRmT18PWTZhD5RuXT+Toyz/0hH4YnJzha4VUwCggikXRuhIQ0KIzrps7/PsvasTPjUD/1aoEHRwVyk2C2hXh6GWJYq+1l+sB2d0TOnFJf2xy3Xo03Hi+BEJJdYGqJKqzd0KfsFyJYhO2GIGScSEj1hsTqAiY8OZeRqRGHe69OQEguUSVXp/jPaqU8fel8dbDDMnXkgULq8oO4T9e4GJSFqIvrlx0sJqSMFdiihV+xCzDS40BACBrTq9tyXmyxJWzQ1/0Hx9S4sU+yeR8ztZH9xgWi1wksfHpEgZBdAkQynlI80/bCtgxfVu+LKgxeqGfMSnT9t8agpr1IGcmSbDntbn/K+3EmCze0jq8EQrZHJWiwCqraM8mnmILSEl5znaoVoBIF062b60zZicuNeYaVgEKSHfirQgQmVybmQgSGVsbWxlIDxiZXJuZEBvb3Bzd2FyZS5kZT6IXgQTEQIAHgUCQhyP2gIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzMm4AJ9mW1np2RXi66WzEvcIanaJkDT+xgCfZmXG/Sziz5FchI3OjXfXDZfwnNm0J0Jlcm5kIEhlbG1sZSA8YmVybmQuaGVsbWxlQG9vcHN3YXJlLmRlPoheBBMRAgAeBQJCDOHWAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMWZgAn3MVwDBzRS5dZu1yjx7WU3E3JSheAJ41CUYMIkX/oYfWssUVYnOuedgn8LQlQmVybmQgSGVsbWxlIDxiaEBzY2huYWVwcGNoZW5qYWdkLmRlPoheBBMRAgAeBQJCHI+pA hsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMYMUAn0rk8fEEY2tHGSUD7PNbk+Fwkd7MAJ4wMfOerrvsKTrB9xmFnZ2ZUy67w7QjQmVybmQgSGVsbWxlIDxtYWlsaW5nc0Bvb3Bzd2FyZS5kZT6IXgQTEQIAHgUCQhyPxgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzOhrAJ4w+A3HcjTJb54lUDpyyQu6Y5dlVQCeJCFKygOVbpn4HSp4Z+R6+s4Rul60J0Jlcm5kIEhlbG1sZSA8YmVybmQuaGVsbWxlQGN5YmVydGVjLmF0Poh4BBMRAgA4FiEEcLVWcrwQIdBqHtvMUXXNjoXZSswFAmDe1DkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQUXXNjoXZSszs9QCfbbpKT0/Mh4PhfS6rRbmNNQC1zS8An2x1PLHPS6649DRkiYOMWTXzAlSEuQINBEIM4d0QCADaxWn10/2l8HHygHCUlBs+vNRYkMrGDWuj1tyehVRRcFYnNfBaEB44GMsaWdKW0GGP4S1BcEwLM3T+ObIrMt6jsLYXWrMctMcGkW60CTbusllwqFN80prqk0Nh/yZsja8UOt+OrWL4ucIBEx9RsUcdUd7+PeuYThOFO1dMgu4gmbac5eN2LZceHJgN9fha19m/vdLXmLc5IEPX/s6+O5oyEkbBt4GYIdvodnBHG9fyip7ff5GPLKzU2gBJz3RWUuHGEaj3RxCffK1x1S87MonbbEkPl2BtmJg2HeWNHn0eaauTp61V0xUWo1XaBB7Ezovogj+70wQjJ4GEgXoH7MRvAAMFCAC/MFpNfWALuQiKE3GA/VdoBTljq2rOnkDcRzBrn8BBVwpYqa2g7SA/VUW334ztI2PmZZYJ0Bjms/Q+oEv87agSL7sQTr8xUOPEyABVnAoDIuIzrAilflYYbvq7o3kwNcsmkr vPZ1FURstKbO+85M/e8tIyCHa6IbTKru6W8Rqxldx2TjoTvcOov3H7bknAdaA8dv6ea/dpI0WTVkuBTMw+jCy2gezwO1wvY+2ehiObOOnlKB2OsMshbe7FHtMU4qB6H1IthiSCzYz5IAsovS8u88HwtUVh/fjLHjTBB85IIMswvJ6SiCXfpe4z8Aj2b5hdo6ggZmI6opiBpaeK164SiEkEGBECAAkFAkIM4d0CGwwACgkQUXXNjoXZSszvIgCfeqX8AYMGEnF+rOp2ukoCWQXfq48AmQEAzB0c5vVMlRnuBh0z9qMKRqbi Content-Type: multipart/mixed; boundary="=-EHK8Iq4utvVwUzz4/lBt" User-Agent: Evolution 3.50.3 (3.50.3-1.fc39) MIME-Version: 1.0 X-Spamd-Bar: + List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-EHK8Iq4utvVwUzz4/lBt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Am Montag, dem 12.02.2024 um 21:00 +0800 schrieb jian he: > + > +=C2=A0 Per default btree_gist builts > GiST indexe with > +=C2=A0 sortsupport in sorted > mode. This usually results in a > +=C2=A0 much better index quality and smaller index sizes by much faster > index built speed. It is still > +=C2=A0 possible to revert to buffered built strategy by using the > buffering parameter > +=C2=A0 when creating the index. > + > + > I believe `built` |`builts` should be `build`. Right, Fixed. > Also > maybe we can simply copy some texts from > https://www.postgresql.org/docs/current/gist-implementation.html. > how about the following: > =C2=A0 > =C2=A0=C2=A0 The sorted method is only available if each of the opclasses= used > by the > =C2=A0=C2=A0 index provides a sortsupport function, = as > described > =C2=A0=C2=A0 in .=C2=A0 If they do,= this method > is > =C2=A0=C2=A0 usually the best, so it is used by default. > =C2=A0 It is still possible to change to a buffered build strategy by > using > the buffering parameter > =C2=A0 to the CREATE INDEX command. > =C2=A0 Hmm not sure what you are trying to achieve with this? The opclasses in btree_gist provides sortsupport, but by reading the above i would get the impression they're still optional. >=20 > you've changed contrib/btree_gist/meson.build, seems we also need to > change contrib/btree_gist/Makefile >=20 Oh, good catch. I'm so focused on meson already that i totally forgot the good old Makefile. Fixed. > gist_point_sortsupport have `if (ssup->abbreviate)`,=C2=A0 does > range_gist_sortsupport also this part? > I think the `if(ssup->abbreviate)` part is optional? > Can we add some comments on it? I've thought about abbreviated keys support but put that aside for later. I wanted to focus on general sortsupport first before getting my hands on it and so postponed it for another round. If we agree that this patch needs support for abbreviated keys now, i certainly can work on it. Thanks for your review, Bernd --=-EHK8Iq4utvVwUzz4/lBt Content-Disposition: attachment; filename="v7-Add-GIST-sortsupport-btree-gist.patch" Content-Type: text/x-patch; name="v7-Add-GIST-sortsupport-btree-gist.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9NYWtlZmlsZQppbmRleCA3YWMyZGYyNmMxMC4uNjgxOTBhYzVlNDYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3QvTWFr ZWZpbGUKQEAgLTM0LDcgKzM0LDcgQEAgREFUQSA9IGJ0cmVlX2dpc3QtLTEuMC0tMS4xLnNxbCBc CiAgICAgICAgYnRyZWVfZ2lzdC0tMS4xLS0xLjIuc3FsIGJ0cmVlX2dpc3QtLTEuMi5zcWwgYnRy ZWVfZ2lzdC0tMS4yLS0xLjMuc3FsIFwKICAgICAgICBidHJlZV9naXN0LS0xLjMtLTEuNC5zcWwg YnRyZWVfZ2lzdC0tMS40LS0xLjUuc3FsIFwKICAgICAgICBidHJlZV9naXN0LS0xLjUtLTEuNi5z cWwgYnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKLSAgICAgICBidHJlZV9naXN0LS0xLjctLTEu OC5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjctLTEuOC5zcWwgYnRyZWVfZ2lzdC0tMS44LS0x Ljkuc3FsCiBQR0ZJTEVERVNDID0gImJ0cmVlX2dpc3QgLSBCLXRyZWUgZXF1aXZhbGVudCBHaVNU IG9wZXJhdG9yIGNsYXNzZXMiCiAKIFJFR1JFU1MgPSBpbml0IGludDIgaW50NCBpbnQ4IGZsb2F0 NCBmbG9hdDggY2FzaCBvaWQgdGltZXN0YW1wIHRpbWVzdGFtcHR6IFwKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9iaXQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9i aXQuYwppbmRleCA2NzkwZjIyYjRiNi4uNjdlYTVkOWUxODIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9iaXQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYml0 LmMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0 cmVlX3V0aWxzX3Zhci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCi0jaW5jbHVkZSAi dXRpbHMvYnl0ZWEuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUg InV0aWxzL3ZhcmJpdC5oIgogCiAKQEAgLTE5LDEwICsxOSwzMyBAQCBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9iaXRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9jb25z aXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9wZW5hbHR5KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2JpdF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9z b3J0c3VwcG9ydCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF92YXJiaXRfc29ydHN1cHBvcnQp OwogCiAKIC8qIGRlZmluZSBmb3IgY29tcGFyaXNvbiAqLwogCitzdGF0aWMgaW50CitnYnRfYml0 X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJR0JUX1ZB UktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJR0JUX1ZBUktFWSAqa2V5MiA9IFBH X0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1IgYXJnMSA9IGdidF92YXJfa2V5X3Jl YWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcyID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUo a2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJLyogbG93ZXIgaXMgYWx3YXlzIGVxdWFsIHRvIHVw cGVyLCBzbyBqdXN0IGNvbXBhcmUgdGhvc2UgZmllbGRzICovCisJcmVzdWx0ID0gRGlyZWN0RnVu Y3Rpb25DYWxsMihiaXRjbXAsCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMS5sb3dlciks CisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZf Q09QWShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERh dHVtR2V0SW50MzIocmVzdWx0KTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9iaXRndChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiLCBPaWQgY29sbGF0aW9uLCBGbWdySW5mbyAqZmxpbmZvKQog ewpAQCAtMjA4LDMgKzIzMSwyNSBAQCBnYnRfYml0X3BlbmFsdHkoUEdfRlVOQ1RJT05fQVJHUykK IAlQR19SRVRVUk5fUE9JTlRFUihnYnRfdmFyX3BlbmFsdHkocmVzdWx0LCBvLCBuLCBQR19HRVRf Q09MTEFUSU9OKCksCiAJCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKIH0KKwor RGF0dW0KK2didF9iaXRfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3Vw cG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAt PmNvbXBhcmF0b3IgPSBnYnRfYml0X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxM OworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworRGF0dW0KK2didF92YXJiaXRfc29ydHN1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0 KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfYml0X3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfYm9vbC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYwppbmRl eCA4YjJhZjEyOWI1Mi4uNTA1OGRiYTI5ODYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9ib29sLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYwpAQCAt Niw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRz dXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0IGJvb2xrZXkKIHsKQEAgLTIzLDYgKzI0LDE2IEBA IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Jvb2xfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2Jvb2xfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29s X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2Jvb2xfc29ydHN1cHBvcnQpOworCitzdGF0aWMgaW50CitnYnRfYm9v bF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWJvb2xL RVkJKmFyZzEgPSAoYm9vbEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJYm9vbEtFWSAqYXJn MiA9IChib29sS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCXJldHVybiBhcmcxLT5sb3dl ciAtIGFyZzItPmxvd2VyOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Jvb2xndChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAtMTY3LDMgKzE3OCwxNCBA QCBnYnRfYm9vbF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2Ft ZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBH X1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfYm9vbF9zb3J0c3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQp IFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9ib29sX3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMKaW5kZXggNmIwMDVmMDE1N2UuLjIwNDdlM2RkZWUw IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYworKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYwpAQCAtNiw3ICs2LDcgQEAKICNpbmNsdWRlICJi dHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfdmFyLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKLSNpbmNsdWRlICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxz L3NvcnRzdXBwb3J0LmgiCiAKIAogLyoKQEAgLTE4LDcgKzE4LDQxIEBAIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2J5dGVhX3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ieXRl YV9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX3BlbmFsdHkpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9ieXRlYV9zb3J0c3VwcG9ydCk7CiAKKy8qIHNvcnRzdXBwb3J0IHN1cHBvcnQgKi8KKwor c3RhdGljIGludAorZ2J0X2J5dGVhX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCit7CisJR0JUX1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJ R0JUX1ZBUktFWSAqa2V5MiA9IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1Ig eGtleSA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiB5a2V5ID0g Z2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJLyogbG93ZXIg YW5kIHVwcGVyIGFyZSBhbHdheXMgdGhlIHNhbWUsIHNvIGl0IGlzIGVub3VnaCB0byBjb21wYXJl IGxvd2VyICovCisJcmVzdWx0ID0gRGlyZWN0RnVuY3Rpb25DYWxsMihieXRlYWNtcCwKKwkJCQkJ CQkJIFBvaW50ZXJHZXREYXR1bSh4a2V5Lmxvd2VyKSwKKwkJCQkJCQkJIFBvaW50ZXJHZXREYXR1 bSh5a2V5Lmxvd2VyKSk7CisKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTEsIHgpOworCUdCVF9GUkVF X0lGX0NPUFkoa2V5MiwgeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihyZXN1bHQpOworfQor CitEYXR1bQorZ2J0X2J5dGVhX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X2J5dGVhX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEg PSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBjb21wYXJp c29uICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCmluZGV4IDU0NmI5NDhlYTQwLi45NDA5MGM5 YWMwZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYworKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUg ImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJ1 dGlscy9jYXNoLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBz dHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDIxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hf Y29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX2Rpc3RhbmNlKTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9jYXNoX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9zb3J0c3VwcG9y dCk7CisKK2V4dGVybiBEYXR1bSBjYXNoX2NtcChQR19GVU5DVElPTl9BUkdTKTsKKworc3RhdGlj IGludAorZ2J0X2Nhc2hfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1 cCkKK3sKKwljYXNoS0VZCSphcmcxID0gKGNhc2hLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOwor CWNhc2hLRVkJKmFyZzIgPSAoY2FzaEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBT aW5jZSBsb3dlciBhbmQgdXBwZXIgYXJlIGFsd2F5cyBlcXVhbCwgaXQgaXMgZW5vdWdoIHRvIGNv bXBhcmUgbG93ZXIgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwy KGNhc2hfY21wLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fz aEdldERhdHVtKGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENhc2hHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30KIAogc3RhdGljIGJvb2wK IGdidF9jYXNoZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKQEAgLTIxNSwzICsyMzEsMTQgQEAgZ2J0X2Nhc2hfc2FtZShQR19GVU5DVElPTl9BUkdTKQog CSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8s IGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1 bQorZ2J0X2Nhc2hfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9y dCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNv bXBhcmF0b3IgPSBnYnRfY2FzaF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsK KworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZGF0ZS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwppbmRleCA2OGE0 MTA3ZGJmMC4uYzRmZjE1ZjI3YjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9kYXRlLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwpAQCAtNiw2ICs2 LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVt LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3Vw cG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI1 LDYgKzI2LDMwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVfY29uc2lzdGVudCk7CiBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2RhdGVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX3NhbWUp OworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9zb3J0c3VwcG9ydCk7CisKKy8qIHNvcnRz dXBwb3J0IGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW50IGdidF9kYXRlX3NzdXBfY21wKERhdHVt IHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJZGF0ZUtFWSAqYWtleSA9IChkYXRl S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlkYXRlS0VZICpia2V5ID0gKGRhdGVLRVkgKikg RGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rp b25DYWxsMihkYXRlX2NtcCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERhdGVBRFRHZXREYXR1bShha2V5LT5sb3dlciksCisJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRlQURUR2V0RGF0dW0oYmtleS0+bG93ZXIpKSk7Cit9CisK K0RhdHVtCitnYnRfZGF0ZV9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRT dXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1 cC0+Y29tcGFyYXRvciA9IGdidF9kYXRlX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBO VUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9kYXRlZ3Qo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKZGlmZiAtLWdp dCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZW51bS5jCmluZGV4IGQ0ZGMzOGEzOGU1Li42NzM5NTE4MjM0MSAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZW51bS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5o IgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIC8qIGVudW1zIGFyZSByZWFsbHkgT2lkcywgc28g d2UganVzdCB1c2UgdGhlIHNhbWUgc3RydWN0dXJlICovCiAKQEAgLTI2LDggKzI3LDIwIEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2VudW1fcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2VudW1fY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3Bl bmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9zYW1lKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2VudW1fc29ydHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9lbnVt X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJb2lkS0VZ ICphcmcxID0gKG9pZEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJb2lkS0VZICphcmcyID0g KG9pZEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBTaW5jZSBsb3dlciBhbmQgdXBw ZXIgaW4gb2lkS0VZIGFyZSBhbHdheXMgdGhlIHNhbWUsIGp1c3QgY29tcGFyZSBsb3dlciAqLwor CXJldHVybiBEYXR1bUdldEludDMyKENhbGxlckZJbmZvRnVuY3Rpb25DYWxsMihlbnVtX2NtcCwg c3N1cC0+c3N1cF9leHRyYSwKKwkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwgYXJnMS0+bG93ZXIs IGFyZzItPmxvd2VyKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfZW51bWd0KGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7CkBAIC0xODMsMyArMTk2LDIw IEBAIGdidF9lbnVtX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9z YW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJ UEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2didF9lbnVtX3NvcnRzdXBw b3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9y dCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2VudW1f c3N1cF9jbXA7CisKKwkvKgorCSAqIFNpbmNlIGVudW1fZmFzdF9jbXAoKSBhbHNvIHVzZXMgZW51 bV9jbXAoKSBsaWtlIHRoZSByZXN0IG9mIHRoZQorCSAqIGNvbXBhcnNpb24gZnVuY3Rpb25zLCBp dCBhbHNvIG5lZWRzIHRvIHBhc3Mgb24gZmxpbmZvIHdoZW4gY2FsbGluZworCSAqIGl0LiBUaHVz IHNhdmUgaXQgaW4gLT5zc3VwX2V4dHJhIGFuZCBsYXRlciByZXRyaWV2ZSBpdCBpbiBlbnVtX2Zh c3RfY21wKCkuCisJICovCisJc3N1cC0+c3N1cF9leHRyYSA9IGZjaW5mby0+ZmxpbmZvOworCisJ UEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9mbG9hdDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwppbmRleCA4NGNh NWVlZTUwMS4uYjIyMjljZGIwNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9mbG9hdDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKQEAgLTUs NiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGls cy9mbG9hdC5oIgogCiB0eXBlZGVmIHN0cnVjdCBmbG9hdDRrZXkKQEAgLTI0LDYgKzI1LDMzIEBA IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2Zsb2F0NF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9m bG9hdDRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc2FtZSk7CitQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc29ydHN1cHBvcnQpOworCitleHRlcm4gRGF0 dW0gYnRmbG9hdDRjbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0 aW9ucyAqLworc3RhdGljIGludAorZ2J0X2Zsb2F0NF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5 LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWZsb2F0NEtFWSAqYXJnMSA9IChmbG9hdDRLRVkgKikg RGF0dW1HZXRQb2ludGVyKHgpOworCWZsb2F0NEtFWSAqYXJnMiA9IChmbG9hdDRLRVkgKikgRGF0 dW1HZXRQb2ludGVyKHkpOworCisJLyogU2luY2UgbG93ZXIgYW5kIHVwcGVyIGZvciBmbG9hdDRL RVlzIGhlcmUgYXJlIGFsd2F5cyBlcXVhbCBpdCBpcyBva2F5IHRvIGNvbXBhcmUgdGhlbSBvbmx5 ICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihidGZsb2F0NGNt cCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0NEdldERh dHVtKGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZsb2F0NEdldERhdHVtKGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X2Zsb2F0 NF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAo U29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9 IGdidF9mbG9hdDRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19S RVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0NGd0KGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxv YXQ4LmMKaW5kZXggMDgxYTcxOWIwMDYuLjJmMzEyZjViZDgzIDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2Zsb2F0OC5jCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2lu Y2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0Lmgi CiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ4a2V5CkBA IC0yNCw3ICsyNSwzMyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfZGlzdGFuY2UpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfZmxvYXQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf ZmxvYXQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0 KTsKIAorZXh0ZXJuIERhdHVtIGJ0ZmxvYXQ4Y21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCisvKiBz b3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9mbG9hdDhfc3N1cF9jbXAo RGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlmbG9hdDhLRVkgKmFyZzEg PSAoZmxvYXQ4S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlmbG9hdDhLRVkgKmFyZzIgPSAo ZmxvYXQ4S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBm b3IgaW5wdXQga2V5cyBhcmUgZXF1YWwgaGVyZSAqLworCXJldHVybiBEYXR1bUdldEludDMyKERp cmVjdEZ1bmN0aW9uQ2FsbDIoYnRmbG9hdDhjbXAsCisJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGbG9hdDhHZXREYXR1bShhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJ CSBGbG9hdDhHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30KKworRGF0dW0KK2didF9mbG9hdDhf c29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNv cnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBn YnRfZmxvYXQ4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVU VVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9mbG9hdDhndChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9naXN0LS0xLjctLTEuOC5zcWwKaW5kZXggMzA3YmZlNTc0YjAuLjY1NzI4NWNhN2NlIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKQEAgLTg1LDMg Kzg1LDQgQEAgQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZW51bV9vcHMgVVNJTkcgZ2lzdCBB REQKIAogQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJTkcgZ2lzdCBBREQK IAlGVU5DVElPTiAxMiAoYm9vbCwgYm9vbCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOwor CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3Fs IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzUyZTc1MGVkMWEKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsCkBAIC0wLDAg KzEsMTkyIEBACisvKiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3Fs ICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0 aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBidHJl ZV9naXN0IFVQREFURSBUTyAnMS45JyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFU RSBGVU5DVElPTiBnYnRfYml0X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lkCitB UyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVB VEUgRlVOQ1RJT04gZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9p ZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKwor Q1JFQVRFIEZVTkNUSU9OIGdidF9ib29sX3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gZ2J0X2Nhc2hfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7 CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZW51bV9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVS TlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbmV0X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVU VVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludHZfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitS RVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBT VFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KGludGVybmFs KQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFC TEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3RpbWVfc29ydHN1cHBvcnQoaW50ZXJu YWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfaW50Ml9zb3J0c3VwcG9ydChpbnRl cm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDRfc29ydHN1 cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor TEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDhf c29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhO QU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9O IGdidF9ieXRlYV9zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdN T0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVB VEUgRlVOQ1RJT04gZ2J0X2RhdGVfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9mbG9hdDRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisg ICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9mbG9hdDhfc29ydHN1cHBvcnQo aW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExB TkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9tYWNhZGRy X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRI TkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElP TiBnYnRfbnVtZXJpY19zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FT ICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitD UkVBVEUgRlVOQ1RJT04gZ2J0X29pZF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3RleHRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisg ICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90c19zb3J0c3VwcG9ydChpbnRl cm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3V1aWRfc29ydHN1 cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor ICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZ IGdpc3RfdmJpdF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHZhcmJp dCwgdmFyYml0KSBnYnRfdmFyYml0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBP UEVSQVRPUiBGQU1JTFkgZ2lzdF9iaXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04g ICAgMTEgIChiaXQsIGJpdCkgZ2J0X2JpdF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5D VElPTiAgICAxMSAgKGJvb2wsIGJvb2wpIGdidF9ib29sX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ieXRlYV9vcHMgVVNJTkcgZ2lzdCBBREQK KyAgICBGVU5DVElPTiAgICAxMSAgKGJ5dGVhLCBieXRlYSkgZ2J0X2J5dGVhX3NvcnRzdXBwb3J0 IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9jYXNoX29wcyBVU0lO RyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobW9uZXksIG1vbmV5KSBnYnRfY2FzaF9z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZGF0 ZV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGRhdGUsIGRhdGUpIGdi dF9kYXRlX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF9lbnVtX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoYW55ZW51 bSwgYW55ZW51bSkgZ2J0X2VudW1fc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X2Zsb2F0NF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKGZsb2F0NCwgZmxvYXQ0KSBnYnRfZmxvYXQ0X3NvcnRzdXBwb3J0IChpbnRlcm5h bCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDhfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChmbG9hdDgsIGZsb2F0OCkgZ2J0X2Zsb2F0OF9zb3J0 c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW5ldF9v cHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGluZXQsIGluZXQpIGdidF9p bmV0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lz dF9jaWRyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW5ldCwgaW5l dCkgZ2J0X2luZXRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZB TUlMWSBnaXN0X2ludDJfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChp bnQyLCBpbnQyKSBnYnRfaW50Ml9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfaW50NF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAg ICAxMSAgKGludDQsIGludDQpIGdidF9pbnQ0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitB TFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAoaW50OCwgaW50OCkgZ2J0X2ludDhfc29ydHN1cHBvcnQgKGludGVybmFs KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludGVydmFsX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW50ZXJ2YWwsIGludGVydmFsKSBnYnRfaW50dl9z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfbWFj YWRkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1hY2FkZHIsIG1h Y2FkZHIpIGdidF9tYWNhZDhfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJB VE9SIEZBTUlMWSBnaXN0X21hY2FkZHI4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9O ICAgIDExICAobWFjYWRkcjgsIG1hY2FkZHI4KSBnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0IChpbnRl cm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9udW1lcmljX29wcyBVU0lORyBn aXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobnVtZXJpYywgbnVtZXJpYykgZ2J0X251bWVy aWNfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0 X29pZF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG9pZCwgb2lkKSBn YnRfb2lkX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF90ZXh0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodGV4dCwg dGV4dCkgZ2J0X3RleHRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X2JwY2hhcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAx MSAgKGJwY2hhciwgYnBjaGFyKSBicGNoYXJfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FM VEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RpbWVfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVO Q1RJT04gICAgMTEgICh0aW1lLCB0aW1lKSBnYnRfdGltZV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwp IDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXN0YW1wX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodGltZXN0YW1wLCB0aW1lc3RhbXApIGdidF90c19z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGlt ZXN0YW1wdHpfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1lc3Rh bXB0eiwgdGltZXN0YW1wdHopIGdidF90c19zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXR6X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAodGltZXR6LCB0aW1ldHopIGdidF90aW1lX3NvcnRzdXBwb3J0IChpbnRl cm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF91dWlkX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodXVpZCwgdXVpZCkgZ2J0X3V1aWRfc29ydHN1cHBv cnQgKGludGVybmFsKSA7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwppbmRleCA1ZmQ0Y2NlMjdkMC4u YzhhY2JlNzZiNTUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmMK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwpAQCAtNiw2ICs2LDkgQEAKICNp bmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgog CisjaW5jbHVkZSAiYWNjZXNzL2dpc3QuaCIKKyNpbmNsdWRlICJidHJlZV9naXN0LmgiCisKIFBH X01PRFVMRV9NQUdJQzsKIAogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGVjb21wcmVzcyk7CmRp ZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbAppbmRleCBhYmY2NjUzOGYzMi4uNjlkOTM0 MWEwYWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbApAQCAtMSw2ICsxLDYg QEAKICMgYnRyZWVfZ2lzdCBleHRlbnNpb24KIGNvbW1lbnQgPSAnc3VwcG9ydCBmb3IgaW5kZXhp bmcgY29tbW9uIGRhdGF0eXBlcyBpbiBHaVNUJwotZGVmYXVsdF92ZXJzaW9uID0gJzEuOCcKK2Rl ZmF1bHRfdmVyc2lvbiA9ICcxLjknCiBtb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9idHJlZV9n aXN0JwogcmVsb2NhdGFibGUgPSB0cnVlCiB0cnVzdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuaCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9n aXN0LmgKaW5kZXggMGRiODUyMmM4YTcuLjI0NWMzNTU5MjgxIDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5oCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9n aXN0LmgKQEAgLTksNiArOSwxMiBAQAogCiAjZGVmaW5lIEJ0cmVlR2lzdE5vdEVxdWFsU3RyYXRl Z3lOdW1iZXIgNgogCit0eXBlZGVmIHN0cnVjdCBpbnQzMmtleQoreworICBpbnQzMgkJbG93ZXI7 CisgIGludDMyCQl1cHBlcjsKK30gaW50MzJLRVk7CisKIC8qIGluZGV4ZWQgdHlwZXMgKi8KIAog ZW51bSBnYnRyZWVfdHlwZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu ZXQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKaW5kZXggMmZiOTUyZGNhODMu Ljc3ZWYxNGE0ZjdkIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5j CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKQEAgLTgsNiArOCw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK IAogdHlwZWRlZiBzdHJ1Y3QgaW5ldGtleQogewpAQCAtMjQsOCArMjUsMjMgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW5ldF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf aW5ldF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfcGVuYWx0eSk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbmV0X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfaW5ldF9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGljIGludAorZ2J0X2luZXRfc3N1cF9j bXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbmV0S0VZICphcmcx ID0gKGluZXRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWluZXRLRVkgKmFyZzIgPSAoaW5l dEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlpZiAoYXJnMS0+bG93ZXIgPT0gYXJnMi0+ bG93ZXIpCisJCXJldHVybiAwOworCWVsc2UgaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIp CisJCXJldHVybiAxOworCWVsc2UKKwkJcmV0dXJuIC0xOworfQorCiBzdGF0aWMgYm9vbAogZ2J0 X2luZXRndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQog ewpAQCAtMTg1LDMgKzIwMSwxNCBAQCBnYnRfaW5ldF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ KnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywg ZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVt CitnYnRfaW5ldF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0 IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29t cGFyYXRvciA9IGdidF9pbmV0X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOwor CisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnQyLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jCmluZGV4IGZkYmYx NTY1ODZjLi5iMTk3NzBmZjY3ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDIuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jCkBAIC01LDYgKzUs NyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251 bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2lu dC5oIgogCiB0eXBlZGVmIHN0cnVjdCBpbnQxNmtleQpAQCAtMjQsNiArMjUsMzEgQEAgUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfaW50Ml9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2ludDJfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50Ml9wZW5hbHR5 KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJfc2FtZSk7CitQR19GVU5DVElPTl9JTkZP X1YxKGdidF9pbnQyX3NvcnRzdXBwb3J0KTsKKworLyogc29ydHN1cHBvcnQgZnVuY3Rpb25zICov CitzdGF0aWMgaW50CitnYnRfaW50Ml9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3Vw cG9ydCBzc3VwKQoreworCWludDE2S0VZICphcmcxID0gKGludDE2S0VZICopIERhdHVtR2V0UG9p bnRlcih4KTsKKwlpbnQxNktFWSAqYXJnMiA9IChpbnQxNktFWSAqKSBEYXR1bUdldFBvaW50ZXIo eSk7CisKKwlpZiAoYXJnMS0+bG93ZXIgPCBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIC0xOworCWVs c2UgaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIpCisJCXJldHVybiAxOworCWVsc2UKKwkJ cmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50Ml9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9B UkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lO VEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9pbnQyX3NzdXBfY21wOworCVBHX1JF VFVSTl9WT0lEKCk7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfaW50Mmd0KGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwpp bmRleCA4OTE1ZmI1ZDA4Ny4uNjA0MTg1MTFlZGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9pbnQ0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwpA QCAtMiwxNiArMiwxMCBAQAogICogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwogICov CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKLQorI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNs dWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNs dWRlICJidHJlZV91dGlsc19udW0uaCIKLSNpbmNsdWRlICJjb21tb24vaW50LmgiCi0KLXR5cGVk ZWYgc3RydWN0IGludDMya2V5Ci17Ci0JaW50MzIJCWxvd2VyOwotCWludDMyCQl1cHBlcjsKLX0g aW50MzJLRVk7CiAKIC8qCiAqKiBpbnQzMiBvcHMKQEAgLTI0LDYgKzE4LDcgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW50NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X2ludDRfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9wZW5hbHR5KTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9pbnQ0X3NvcnRzdXBwb3J0KTsKIAogCiBzdGF0aWMgYm9vbApAQCAtOTAsNiArODUsMjkg QEAgc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mbyA9CiAJZ2J0X2ludDRfZGlzdAogfTsK IAorc3RhdGljIGludAorZ2J0X2ludDRfc3N1cF9jbXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1 cHBvcnQgc3N1cCkKK3sKKwlpbnQzMktFWSAgICppYSA9IChpbnQzMktFWSAqKSBEYXR1bUdldFBv aW50ZXIoYSk7CisJaW50MzJLRVkgICAqaWIgPSAoaW50MzJLRVkgKikgRGF0dW1HZXRQb2ludGVy KGIpOworCisJLyogaW50NEtFWSB1cHBlciBhbmQgbG93ZXIgYXJlIGFsd2F5cyB0aGUgc2FtZSBm b3IgaW5wdXQga2V5cyBoZXJlLiAqLworCWlmIChpYS0+bG93ZXIgPCBpYi0+bG93ZXIpCisJCXJl dHVybiAtMTsKKwllbHNlIGlmIChpYS0+bG93ZXIgPiBpYi0+bG93ZXIpCisJCXJldHVybiAxOwor CWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50NF9zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dF VEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9pbnQ0X3NzdXBfY21w OworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CiAKIFBHX0ZVTkNUSU9OX0lORk9fVjEoaW50NF9kaXN0 KTsKIERhdHVtCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwppbmRleCA3YzYzYTViNmRjMS4uMDBkNTUx NjNmYzkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRl ICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAi Y29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYg c3RydWN0IGludDY0a2V5CiB7CkBAIC0yNCw3ICsyNSwzMiBAQCBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9pbnQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9kaXN0 YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW50OF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDhf c29ydHN1cHBvcnQpOwogCisvKiBzb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQK K2didF9pbnQ4X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7 CisJaW50NjRLRVkgKmFyZzEgPSAoaW50NjRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWlu dDY0S0VZICphcmcyID0gKGludDY0S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCWlmIChh cmcxLT5sb3dlciA8IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoYXJnMS0+ bG93ZXIgPiBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKKwor fQorCitEYXR1bQorZ2J0X2ludDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50OF9zc3VwX2NtcDsKKwlQR19SRVRVUk5fVk9JRCgp OworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDhndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2ludGVydmFsLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYwppbmRl eCBiMGFmZGYwMmJiNS4uNGRhMzBiZTllNDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZh bC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJi dHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUg InV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5 cGVkZWYgc3RydWN0CkBAIC0yNyw4ICsyOCwyMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9p bnR2X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50dl9kaXN0YW5jZSk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfaW50dl9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfc29ydHN1 cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9pbnR2X3NzdXBfY21wKERhdHVtIHgsIERhdHVt IHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW50dktFWSAqYXJnMSA9IChpbnR2S0VZICopIERh dHVtR2V0UG9pbnRlcih4KTsKKwlpbnR2S0VZICphcmcyID0gKGludHZLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJLyogaW50dktFWSBsb3dlciBhbmQgdXBwZXIgYXJlIGFsd2F5cyBlcXVh bCBoZXJlLCBzbyBjb21wYXJlIGp1c3QgbG93ZXIgbWVtYmVycyBpcyBlbm91Z2ggKi8KKwlyZXR1 cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKGludGVydmFsX2NtcCwKKwkJCQkJ CQkJCQkJIEludGVydmFsUEdldERhdHVtKCZhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBJbnRl cnZhbFBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfaW50 dmd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7CkBA IC0yOTUsMyArMzA5LDE0IEBAIGdidF9pbnR2X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVz dWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2lu Zm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2di dF9pbnR2X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1 cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJh dG9yID0gZ2J0X2ludHZfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQ R19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X21hY2FkZHIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKaW5kZXggMTcy OTA1MjljMDIuLmI5NWZkOGQzNDA5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbWFjYWRkci5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKQEAg LTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDM0IEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkX3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9tYWNhZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2Fk X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRfc2FtZSk7CitQR19GVU5D VElPTl9JTkZPX1YxKGdidF9tYWNhZGRyX3NvcnRzdXBwb3J0KTsKKworLyogc29ydHN1cHBvcnQg ZnVuY3Rpb25zICovCitzdGF0aWMgaW50CitnYnRfbWFjYWRkcl9zc3VwX2NtcChEYXR1bSB4LCBE YXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCW1hY0tFWSAqYXJnMSA9IChtYWNLRVkgKikg RGF0dW1HZXRQb2ludGVyKHgpOworCW1hY0tFWSAqYXJnMiA9IChtYWNLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJLyogbWFjS0VZIGxvd2VyIGFuZCB1cHBlciBtZW1iZXJzIGFyZSBhbHdh eXMgZXF1YWwgaGVyZSwKKwkgKiBzbyBpdHMgZW5vdWdoIHRvIGNvbXBhcmUganVzdCBsb3dlci4K KwkgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKG1hY2FkZHJf Y21wLAorCQkJCQkJCQkJCQkgTWFjYWRkclBHZXREYXR1bSgmYXJnMS0+bG93ZXIpLAorCQkJCQkJ CQkJCQkgTWFjYWRkclBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7CisKK30KKworRGF0dW0KK2di dF9tYWNhZGRyX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQg c3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21w YXJhdG9yID0gZ2J0X21hY2FkZHJfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7 CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAKIHN0YXRpYyBib29sCmRpZmYgLS1naXQgYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9tYWNhZGRyOC5jCmluZGV4IDc5NmNjNGVmZWUzLi5jM2ZmN2VlYjBiNSAxMDA2NDQKLS0t IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX21hY2FkZHI4LmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1 Y3QKIHsKQEAgLTI1LDggKzI2LDIwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkOF9w aWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X2NvbnNpc3RlbnQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfbWFjYWQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3Nv cnRzdXBwb3J0KTsKIAogCitzdGF0aWMgaW50CitnYnRfbWFjYWRkcjhfc3N1cF9jbXAoRGF0dW0g eCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWM4S0VZICphcmcxID0gKG1hYzhL RVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCW1hYzhLRVkgKmFyZzIgPSAobWFjOEtFWSAqKSBE YXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlv bkNhbGwyKG1hY2FkZHI4X2NtcCwKKwkJCQkJCQkJCQkJIE1hY2FkZHI4UEdldERhdHVtKCZhcmcx LT5sb3dlciksCisJCQkJCQkJCQkJCSBNYWNhZGRyOFBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7 Cit9CisKIHN0YXRpYyBib29sCiBnYnRfbWFjYWQ4Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE5NCwzICsyMDcsMTQgQEAgZ2J0X21hY2Fk OF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAq KSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9Q T0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VU QVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X21hY2FkZHI4X3NzdXBf Y21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9udW1lcmljLmMgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCmluZGV4IDM1ZTQ2NmNkZDk0Li4yMjc3MTI2NDVk YSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX251bWVyaWMuYworKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9udW1lcmljLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyoK ICoqIEJ5dGVhIG9wcwpAQCAtMjEsNyArMjIsMzkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf bnVtZXJpY19waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19jb25z aXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X251bWVyaWNfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9udW1lcmljX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfbnVtZXJpY19zb3J0c3VwcG9ydCk7CiAKKy8qIFNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLwor c3RhdGljIGludAorZ2J0X251bWVyaWNfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1 cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4KTsK KwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJLRVlf UiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIGFyZzIg PSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwlyZXN1bHQg PSBEaXJlY3RGdW5jdGlvbkNhbGwyKG51bWVyaWNfY21wLAorCQkJCQkJCQkgUG9pbnRlckdldERh dHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKGFyZzIubG93ZXIpKTsK KworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkyLCB5 KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCitnYnRfbnVt ZXJpY19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAg PSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRv ciA9IGdidF9udW1lcmljX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJ UEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBjb21wYXJpc29uICovCiAKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYyBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9vaWQuYwppbmRleCAzY2M3ZDQyNDVkNC4uNGNlNGQzZmY4N2UgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYworKysgYi9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfb2lkLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0Lmgi CiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBv cnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTIzLDcgKzI0LDM0IEBAIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X29pZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29p ZF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9vaWRfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9v aWRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBp bnQKK2didF9vaWRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkK K3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlvaWRL RVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFu ZCBsb3dlciBmaWVsZHMgYXJlIGVxdWFsIGZvciBlYWNoIG9pZEtFWSwgc28ganVzdCBjb21wYXJl IGxvd2VyICovCisJaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIpCisJCXJldHVybiAxOwor CWVsc2UgaWYgKGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNl CisJCXJldHVybiAwOworfQorCitEYXR1bQorZ2J0X29pZF9zb3J0c3VwcG9ydChQR19GVU5DVElP Tl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19Q T0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9vaWRfc3N1cF9jbXA7CisJc3N1 cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMg Ym9vbAogZ2J0X29pZGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpm bGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGV4dC5jIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwppbmRleCBiZTBlYWM3OTc1Yi4uNTMwNjQ4Y2I2 MjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90ZXh0LmMKKysrIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJi dHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfdmFyLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKgogKiog VGV4dCBvcHMKQEAgLTE4LDcgKzE5LDQwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRf Y29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9icGNoYXJfY29uc2lzdGVudCk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90ZXh0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfdGV4dF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRfc29ydHN1 cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF90 ZXh0X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJR0JU X1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJR0JUX1ZBUktFWSAqa2V5MiA9 IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1IgYXJnMSA9IGdidF92YXJfa2V5 X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcyID0gZ2J0X3Zhcl9rZXlfcmVhZGFi bGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJcmVzdWx0ID0gRGlyZWN0RnVuY3Rpb25DYWxs MkNvbGwoYnR0ZXh0Y21wLAorCQkJCQkJCQkJIHNzdXAtPnNzdXBfY29sbGF0aW9uLAorCQkJCQkJ CQkJIFBvaW50ZXJHZXREYXR1bShhcmcxLmxvd2VyKSwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0 dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZfQ09QWShrZXkxLCB4KTsKKwlHQlRfRlJF RV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50MzIocmVzdWx0KTsKK30K KworRGF0dW0KK2didF90ZXh0X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X3RleHRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9 IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlz b24gKi8KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKaW5kZXggZDg5NDAxYzBmNTEuLjM0NGI1NjM3 ZWE1IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAi YnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9kYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI4LDYgKzI5LDggQEAg UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF90aW1ldHpfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1l X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RpbWVfc29ydHN1cHBvcnQpOworUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfdGltZXR6X3NvcnRzdXBwb3J0KTsKIAogCiAjaWZkZWYgVVNFX0ZMT0FUOF9CWVZBTApAQCAt MzcsNiArNDAsMTggQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zYW1lKTsKICNlbmRp ZgogCiAKK3N0YXRpYyBpbnQKK2didF90aW1la2V5X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHks IFNvcnRTdXBwb3J0IHNzdXApCit7CisJdGltZUtFWSAqYXJnMSA9ICh0aW1lS0VZICopIERhdHVt R2V0UG9pbnRlcih4KTsKKwl0aW1lS0VZICphcmcyID0gKHRpbWVLRVkgKikgRGF0dW1HZXRQb2lu dGVyKHkpOworCisJLyogbG93ZXIgYW5kIHVwcGVyIGFyZSBlcXVhbCBkdXJpbmcgc29ydHN1cHBv cnQgY29tcGFyaXNvbiAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2Fs bDIodGltZV9jbXAsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU aW1lQURUR2V0RGF0dW1GYXN0KGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRpbWVBRFRHZXREYXR1bUZhc3QoYXJnMi0+bG93ZXIpKSk7Cit9 CisKIHN0YXRpYyBib29sCiBnYnRfdGltZWd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIs IEZtZ3JJbmZvICpmbGluZm8pCiB7CkBAIC0zMzIsMyArMzQ3LDE0IEBAIGdidF90aW1lX3NhbWUo UEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAo dm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIo cmVzdWx0KTsKIH0KKworRGF0dW0KK2didF90aW1lX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5U RVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X3RpbWVrZXlfc3N1cF9jbXA7CisJc3N1 cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfdHMuYwppbmRleCAzZjViYTkxODkxZC4uZWYxM2ZjMTViYmEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90 cy5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9kYXRldGltZS5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCisjaW5jbHVk ZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTMxLDYgKzMy LDcgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHN0el9jb25zaXN0ZW50KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RzdHpfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf dHNfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c19zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RzX3NvcnRzdXBwb3J0KTsKIAogCiAjaWZkZWYgVVNFX0ZMT0FUOF9C WVZBTApAQCAtMzksNiArNDEsMjkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHNfc2FtZSk7 CiAjZGVmaW5lIFRpbWVzdGFtcEdldERhdHVtRmFzdChYKSBQb2ludGVyR2V0RGF0dW0oJihYKSkK ICNlbmRpZgogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF90 c19zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCXRzS0VZ ICphcmcxID0gKHRzS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwl0c0tFWSAqYXJnMiA9ICh0 c0tFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBTb3J0c3VwcG9ydCBhbHdheXMgZ2V0 cyB0aGUgc2FtZSBsb3dlciBhbmQgdXBwZXIgdmFsdWUgZm9yIGlucHV0IGtleXMgKi8KKwlyZXR1 cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKHRpbWVzdGFtcF9jbXAsCisJCQkJ CQkJCQkJCSBUaW1lc3RhbXBHZXREYXR1bUZhc3QoYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkg VGltZXN0YW1wR2V0RGF0dW1GYXN0KGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X3Rz X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChT b3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0g Z2J0X3RzX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJO X1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF90c2d0KGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdXRpbHNfdmFyLmggYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFy LmgKaW5kZXggMmY4ZGVmNjU1YzguLjE2ZmYxNjVhZDNjIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmgKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3V0aWxzX3Zhci5oCkBAIC00Miw3ICs0MiwxNyBAQCB0eXBlZGVmIHN0cnVjdAogCUdCVF9WQVJL RVkgKigqZl9sMm4pIChHQlRfVkFSS0VZICosIEZtZ3JJbmZvICpmbGluZm8pOwkvKiBjb252ZXJ0 IGxlYWYgdG8gbm9kZSAqLwogfSBnYnRyZWVfdmluZm87CiAKLQorLyoKKyAqIEZyZWUgcHRyMSBp biBjYXNlIGl0cyBhIGNvcHkgb2YgcHRyMi4KKyAqCisgKiBUaGlzIGlzIGFkYXB0ZWQgZnJvbSB2 YXJsZW5hJ3MgUEdfRlJFRV9JRl9DT1BZLCB0aG91Z2gKKyAqIGRvZXNuJ3QgcmVxdWlyZSBmY2lu Zm8gYWNjZXNzLgorICovCisjZGVmaW5lIEdCVF9GUkVFX0lGX0NPUFkocHRyMSwgcHRyMikgXAor CWRvIHsgXAorCQlpZiAoKFBvaW50ZXIpIChwdHIxKSAhPSBEYXR1bUdldFBvaW50ZXIocHRyMikp IFwKKwkJCXBmcmVlKHB0cjEpOyBcCisJfSB3aGlsZSAoMCkKIAogZXh0ZXJuIEdCVF9WQVJLRVlf UiBnYnRfdmFyX2tleV9yZWFkYWJsZShjb25zdCBHQlRfVkFSS0VZICprKTsKIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dWlkLmMKaW5kZXggZmU4YzY3OWNiZWQuLjA4MzcyZmM4YmM5IDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dWlkLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2lu Y2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKKyNp bmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3V1aWQuaCIKIAog dHlwZWRlZiBzdHJ1Y3QKQEAgLTI1LDcgKzI2LDMxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X3V1aWRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF91dWlkX3BlbmFsdHkpOwogUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfdXVpZF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRfc29y dHN1cHBvcnQpOwogCitzdGF0aWMgaW50IHV1aWRfaW50ZXJuYWxfY21wKGNvbnN0IHBnX3V1aWRf dCAqYXJnMSwgY29uc3QgcGdfdXVpZF90ICphcmcyKTsKKworLyogU29ydHN1cHBvcnQgZnVuY3Rp b25zICovCitzdGF0aWMgaW50CitnYnRfdXVpZF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBT b3J0U3VwcG9ydCBzc3VwKQoreworCXV1aWRLRVkgKmFyZzEgPSAodXVpZEtFWSAqKSBEYXR1bUdl dFBvaW50ZXIoeCk7CisJdXVpZEtFWSAqYXJnMiA9ICh1dWlkS0VZICopIERhdHVtR2V0UG9pbnRl cih5KTsKKworCS8qIFNvcnRzdXBwb3J0IGdldHMgZXF1YWwgdXBwZXIgYW5kIGxvd2VyIHZhbHVl cyBmb3IgZWFjaCBrZXkgdG8gY29tcGFyZSAqLworCXJldHVybiB1dWlkX2ludGVybmFsX2NtcCgm YXJnMS0+bG93ZXIsICZhcmcyLT5sb3dlcik7Cit9CisKK0RhdHVtCitnYnRfdXVpZF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF91dWlk X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQo KTsKK30KIAogc3RhdGljIGludAogdXVpZF9pbnRlcm5hbF9jbXAoY29uc3QgcGdfdXVpZF90ICph cmcxLCBjb25zdCBwZ191dWlkX3QgKmFyZzIpCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvbWVzb24uYnVpbGQgYi9jb250cmliL2J0cmVlX2dpc3QvbWVzb24uYnVpbGQKaW5kZXggNzNi MWJiZjUyYTYuLjViNGNhZmY1YmFmIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvbWVz b24uYnVpbGQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkCkBAIC01MSw2ICs1 MSw3IEBAIGluc3RhbGxfZGF0YSgKICAgJ2J0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCcsCiAgICdi dHJlZV9naXN0LS0xLjYtLTEuNy5zcWwnLAogICAnYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsJywK KyAgJ2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbCcsCiAgIGt3YXJnczogY29udHJpYl9kYXRhX2Fy Z3MsCiApCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwgYi9kb2Mv c3JjL3NnbWwvYnRyZWUtZ2lzdC5zZ21sCmluZGV4IDMxZTdjNzhhYWVmLi44ZGVmMmQzNzk4ZSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2J0cmVlLWdpc3Quc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvYnRyZWUtZ2lzdC5zZ21sCkBAIC01Miw2ICs1MiwxNCBAQAogICA8dHlwZT5vaWQ8L3R5cGU+ LCBhbmQgPHR5cGU+bW9uZXk8L3R5cGU+LgogIDwvcGFyYT4KIAorIDxwYXJhPgorICBQZXIgZGVm YXVsdCA8ZmlsZW5hbWU+YnRyZWVfZ2lzdDwvZmlsZW5hbWU+IGJ1aWxkcyA8YWNyb255bT5HaVNU PC9hY3JvbnltPiBpbmRleGUgd2l0aAorICA8ZnVuY3Rpb24+c29ydHN1cHBvcnQ8L2Z1bmN0aW9u PiBpbiA8Zmlyc3R0ZXJtPnNvcnRlZDwvZmlyc3R0ZXJtPiBtb2RlLiBUaGlzIHVzdWFsbHkgcmVz dWx0cyBpbiBhCisgIG11Y2ggYmV0dGVyIGluZGV4IHF1YWxpdHkgYW5kIHNtYWxsZXIgaW5kZXgg c2l6ZXMgYnkgbXVjaCBmYXN0ZXIgaW5kZXggYnVpbHQgc3BlZWQuIEl0IGlzIHN0aWxsCisgIHBv c3NpYmxlIHRvIHJldmVydCB0byBidWZmZXJlZCBidWlsdCBzdHJhdGVneSBieSB1c2luZyB0aGUg PGxpdGVyYWw+YnVmZmVyaW5nPC9saXRlcmFsPiBwYXJhbWV0ZXIKKyAgd2hlbiBjcmVhdGluZyB0 aGUgaW5kZXguCisgPC9wYXJhPgorCiAgPHBhcmE+CiAgIFRoaXMgbW9kdWxlIGlzIGNvbnNpZGVy ZWQgPHF1b3RlPnRydXN0ZWQ8L3F1b3RlPiwgdGhhdCBpcywgaXQgY2FuIGJlCiAgIGluc3RhbGxl ZCBieSBub24tc3VwZXJ1c2VycyB3aG8gaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHBy aXZpbGVnZQo= --=-EHK8Iq4utvVwUzz4/lBt Content-Disposition: attachment; filename="v7-Add-GIST-sortsupport-rangetypes.patch" Content-Type: text/x-patch; name="v7-Add-GIST-sortsupport-rangetypes.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYwppbmRleCBjYjI4ZTk4NTlhYi4u YjBjNzczOTAwMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz X2dpc3QuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAi dXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgor I2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIC8qCiAgKiBSYW5nZSBjbGFzcyBwcm9w ZXJ0aWVzIHVzZWQgdG8gc2VncmVnYXRlIGRpZmZlcmVudCBjbGFzc2VzIG9mIHJhbmdlcyBpbgpA QCAtMTc3LDYgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJhbmdlX2dpc3RfZG91YmxlX3NvcnRpbmdf c3BsaXQoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAogc3RhdGljIHZvaWQgcmFuZ2VfZ2lzdF9j b25zaWRlcl9zcGxpdChDb25zaWRlclNwbGl0Q29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAg UmFuZ2VCb3VuZCAqcmlnaHRfbG93ZXIsIGludCBtaW5fbGVmdF9jb3VudCwKIAkJCQkJCQkJCSAg UmFuZ2VCb3VuZCAqbGVmdF91cHBlciwgaW50IG1heF9sZWZ0X2NvdW50KTsKK3N0YXRpYyBpbnQJ cmFuZ2VfZ2lzdF9jbXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1cHBvcnQgc3N1cCk7CiBzdGF0 aWMgaW50CWdldF9naXN0X3JhbmdlX2NsYXNzKFJhbmdlVHlwZSAqcmFuZ2UpOwogc3RhdGljIGlu dAlzaW5nbGVfYm91bmRfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFy Zyk7CiBzdGF0aWMgaW50CWludGVydmFsX2NtcF9sb3dlcihjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiLCB2b2lkICphcmcpOwpAQCAtNzczLDYgKzc3NSwyMCBAQCByYW5nZV9naXN0X3BpY2tz cGxpdChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lOVEVSKHYpOwogfQogCisvKgor ICogU29ydCBzdXBwb3J0IHJvdXRpbmUgZm9yIGZhc3QgR2lTVCBpbmRleCBidWlsZCBieSBzb3J0 aW5nLgorICovCitEYXR1bQorcmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdT KQoreworCVNvcnRTdXBwb3J0CXNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVS KDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IHJhbmdlX2dpc3RfY21wOworCXNzdXAtPnNzdXBf ZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKwogLyogZXF1YWxpdHkgY29t cGFyYXRvciBmb3IgR2lTVCAqLwogRGF0dW0KIHJhbmdlX2dpc3Rfc2FtZShQR19GVU5DVElPTl9B UkdTKQpAQCAtMTY5Myw2ICsxNzA5LDYwIEBAIHJhbmdlX2dpc3RfY29uc2lkZXJfc3BsaXQoQ29u c2lkZXJTcGxpdENvbnRleHQgKmNvbnRleHQsCiAJfQogfQogCisvKgorICogR2lTVCBzb3J0c3Vw cG9ydCBjb21wYXJhdG9yIGZvciByYW5nZXMuCisgKiBzaW1pbGFyIHRvIHJhbmdlX2NtcCwgYnV0 IHJhbmdlIHR5cGNhY2hlIGlzIGNhY2hlZC4KKyAqLworc3RhdGljIGludAorcmFuZ2VfZ2lzdF9j bXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlSYW5nZVR5cGUgKnJh bmdlX2EgPSBEYXR1bUdldFJhbmdlVHlwZVAoYSk7CisJUmFuZ2VUeXBlICpyYW5nZV9iID0gRGF0 dW1HZXRSYW5nZVR5cGVQKGIpOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSA9IHNzdXAtPnNz dXBfZXh0cmE7CisJUmFuZ2VCb3VuZAlsb3dlcjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJ dXBwZXIxLAorCQkJCXVwcGVyMjsKKwlib29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCWludAkJ CXJlc3VsdDsKKworCWlmICh0eXBjYWNoZSA9PSBOVUxMKQorCXsKKwkJQXNzZXJ0KFJhbmdlVHlw ZUdldE9pZChyYW5nZV9hKSA9PSBSYW5nZVR5cGVHZXRPaWQocmFuZ2VfYikpOworCQl0eXBjYWNo ZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChyYW5nZV9hKSwgVFlQRUNBQ0hF X1JBTkdFX0lORk8pOworCisJCS8qCisJCSAqIENhY2hlIHRoZSByYW5nZSBpbmZvIGJldHdlZW4g Y2FsbHMgdG8gYXZvaWQgaGF2aW5nIHRvIGNhbGwKKwkJICogbG9va3VwX3R5cGVfY2FjaGUoKSBm b3IgZWFjaCBjb21wYXJpc29uLgorCQkgKi8KKwkJc3N1cC0+c3N1cF9leHRyYSA9IHR5cGNhY2hl OworCX0KKworCXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByYW5nZV9hLCAmbG93ZXIxLCAm dXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcmFuZ2VfYiwg Jmxvd2VyMiwgJnVwcGVyMiwgJmVtcHR5Mik7CisKKwlpZiAoZW1wdHkxICYmIGVtcHR5MikKKwkJ cmVzdWx0ID0gMDsKKwllbHNlIGlmIChlbXB0eTEpCisJCXJlc3VsdCA9IC0xOworCWVsc2UgaWYg KGVtcHR5MikKKwkJcmVzdWx0ID0gMTsKKwllbHNlCisJeworCQlyZXN1bHQgPSByYW5nZV9jbXBf Ym91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKTsKKwkJaWYgKHJlc3VsdCA9PSAwKQor CQkJcmVzdWx0ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMik7 CisJfQorCisJaWYgKChEYXR1bSkgcmFuZ2VfYSAhPSBhKQorCQlwZnJlZShyYW5nZV9hKTsKKwlp ZiAoKERhdHVtKSByYW5nZV9iICE9IGIpCisJCXBmcmVlKHJhbmdlX2IpOworCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIEZpbmQgY2xhc3MgbnVtYmVyIGZvciByYW5nZS4KICAqCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtcHJvYy5kYXQKaW5kZXggMzUyNTU4YzFmMDYuLmZjMjI5ZDk5ODQ1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC02MDcsNiArNjA3LDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzcnLAogICBhbXBy b2MgPT4gJ3JhbmdlX2dpc3Rfc2FtZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3Jhbmdl X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdyYW5nZV9naXN0 X3NvcnRzdXBwb3J0JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5n ZScsIGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRp dHknIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAyOWFmNGNlNjVkNS4uMjIzMTVmZWZj OWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTA1ODksNiArMTA1ODksOSBAQAogeyBv aWQgPT4gJzM4ODEnLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKICAgcHJvbmFtZSA9PiAncmFu Z2VfZ2lzdF9zYW1lJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAogICBwcm9hcmd0eXBlcyA9 PiAnYW55cmFuZ2UgYW55cmFuZ2UgaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ3JhbmdlX2dpc3Rfc2Ft ZScgfSwKK3sgb2lkID0+ICc4ODQ5JywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCisgIHByb25h bWUgPT4gJ3JhbmdlX2dpc3Rfc29ydHN1cHBvcnQnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKKyAg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdyYW5nZV9naXN0X3NvcnRzdXBw b3J0JyB9LAogeyBvaWQgPT4gJzYxNTQnLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKICAgcHJv bmFtZSA9PiAnbXVsdGlyYW5nZV9naXN0X2NvbnNpc3RlbnQnLCBwcm9yZXR0eXBlID0+ICdib29s JywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueW11bHRpcmFuZ2UgaW50MiBvaWQgaW50 ZXJuYWwnLAoK --=-EHK8Iq4utvVwUzz4/lBt--