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 1tY3Jv-002ZMD-Rr for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2025 13:20:33 +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 1tY3Ju-00BZQk-CK for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2025 13:20:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tY3Jt-00BZQc-T9 for pgsql-hackers@lists.postgresql.org; Wed, 15 Jan 2025 13:20:30 +0000 Received: from dd48506.kasserver.com ([85.13.164.188]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tY3Jr-000YQA-32 for pgsql-hackers@lists.postgresql.org; Wed, 15 Jan 2025 13:20:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202409031116; t=1736947226; bh=c9GlJenDyMuYylJ56HBXbAH9cFRR6BLxoWkD8sDG9XE=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=NphichJFUng2frI+XcdLzXrpPO7kJRSKzzLF+bDuhGKLIu93DyzQGnM5ildheFxXA f9hNZPaTLW0KYXDKBCejeh1VUXsBDZZHw6I5+lack7MWqQPSpE8sQATa4yAt2A9Tu7 Lmji7Y9lrDJOLNQevIZswYSFfvOWf6DiBat47yFtWa92OC3t6bPN7Oa3ePNWef3jIA Wk9sX75GdEZgU7Hzm1fPXDn3BKlmDwQC3F7a8sTA1KtljiVAtTmq+saUcw/hmESz8r YhU90EcWa7M+Maa/WPcmR7976Y6ymPJGINOb9l9nApEJ5gcsIDg7298ualwhiGCVJJ hIG+ZU+ZgjN4Q== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd48506.kasserver.com (Postfix) with ESMTPSA id EEC4A8662375; Wed, 15 Jan 2025 14:20:25 +0100 (CET) Received: from chufu.bluecherstrasse.oopsware.lan (i5C75093E.versanet.de [92.117.9.62]) (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 E747441B7E77; Wed, 15 Jan 2025 14:20:24 +0100 (CET) Message-ID: <198eedec6630e69a4cc1f633ab4816782ac74519.camel@oopsware.de> Subject: Re: [PATCH] Add sortsupport for range types and btree_gist From: Bernd Helmle To: "Andrey M. Borodin" Cc: Michael Paquier , jian he , PostgreSQL Hackers Date: Wed, 15 Jan 2025 14:20:24 +0100 In-Reply-To: <54AABE8F-43FF-46D8-A1A9-6F6B0FCE11E2@yandex-team.ru> References: <7C9400DF-66FE-4308-BAD8-92FE3D0E55C6@yandex-team.ru> <0d9fbd59de15e2fc987a850c3d1f8a79a6ede825.camel@oopsware.de> <19c62e62c79b727d2c9a82eaeecfea5017001099.camel@oopsware.de> <4BADF8DD-A4D3-43AA-AA08-037F6FFA40BC@yandex-team.ru> <61128550659807032dd29c8c8a71674c818cbbb6.camel@oopsware.de> <7095B5FA-FADB-4524-B858-ECD14998710B@yandex-team.ru> <0176b173adfcff250543fe0aee2ef6137bd71953.camel@oopsware.de> <78499920f1e9ed5895423e735272ca2fdb90baf6.camel@oopsware.de> <770DB2DA-0B56-464A-87CE-5620CF12E114@yandex-team.ru> <6bd891c9e3aa12baea5c938267bdb5a1e50a299e.camel@oopsware.de> <54AABE8F-43FF-46D8-A1A9-6F6B0FCE11E2@yandex-team.ru> Autocrypt: addr=mailings@oopsware.de; prefer-encrypt=mutual; keydata=mQGiBEIM4dYRBACEnxQZ/CfR1xbCJzGOIjvh3fZpLALMm+tt237QlZm9nlLaEwCn317sT 1khPAJwhyBHSHbNFbH+LOL6ezYrg4V2Q9KHyYJDStJtC8c+D7vHVB5Jfslynx89DnCH6jb3H0j+U0 iNYmRmT18PWTZhD5RuXT+Toyz/0hH4YnJzha4VUwCggikXRuhIQ0KIzrps7/PsvasTPjUD/1aoEHR wVyk2C2hXh6GWJYq+1l+sB2d0TOnFJf2xy3Xo03Hi+BEJJdYGqJKqzd0KfsFyJYhO2GIGScSEj1hs TqAiY8OZeRqRGHe69OQEguUSVXp/jPaqU8fel8dbDDMnXkgULq8oO4T9e4GJSFqIvrlx0sJqSMFdi ihV+xCzDS40BACBrTq9tyXmyxJWzQ1/0Hx9S4sU+yeR8ztZH9xgWi1wksfHpEgZBdAkQynlI80/bC tgxfVu+LKgxeqGfMSnT9t8agpr1IGcmSbDntbn/K+3EmCze0jq8EQrZHJWiwCqraM8mnmILSEl5zn aoVoBIF062b60zZicuNeYaVgEKSHfirQgQmVybmQgSGVsbWxlIDxiZXJuZEBvb3Bzd2FyZS5kZT6I XgQTEQIAHgUCQhyP2gIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzMm4AJ9mW1np2 RXi66WzEvcIanaJkDT+xgCfZmXG/Sziz5FchI3OjXfXDZfwnNm0J0Jlcm5kIEhlbG1sZSA8YmVybm QuaGVsbWxlQG9vcHN3YXJlLmRlPoheBBMRAgAeBQJCDOHWAhsDBgsJCAcDAgMVAgMDFgIBAh4BAhe AAAoJEFF1zY6F2UrMWZgAn3MVwDBzRS5dZu1yjx7WU3E3JSheAJ41CUYMIkX/oYfWssUVYnOuedgn 8LQlQmVybmQgSGVsbWxlIDxiaEBzY2huYWVwcGNoZW5qYWdkLmRlPoheBBMRAgAeBQJCHI+pAhsDB gsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMYMUAn0rk8fEEY2tHGSUD7PNbk+Fwkd7MAJ 4wMfOerrvsKTrB9xmFnZ2ZUy67w7QjQmVybmQgSGVsbWxlIDxtYWlsaW5nc0Bvb3Bzd2FyZS5kZT6 IXgQTEQIAHgUCQhyPxgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzOhrAJ4w+A3H cjTJb54lUDpyyQu6Y5dlVQCeJCFKygOVbpn4HSp4Z+R6+s4Rul60J0Jlcm5kIEhlbG1sZSA8YmVyb mQuaGVsbWxlQGN5YmVydGVjLmF0Poh4BBMRAgA4FiEEcLVWcrwQIdBqHtvMUXXNjoXZSswFAmDe1D kCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQUXXNjoXZSszs9QCfbbpKT0/Mh4PhfS6rRbm NNQC1zS8An2x1PLHPS6649DRkiYOMWTXzAlSE Content-Type: multipart/mixed; boundary="=-7t/KtyG4bx3oN8VWcs4z" User-Agent: Evolution 3.54.2 (3.54.2-1.fc41) MIME-Version: 1.0 X-Spamd-Bar: ++ List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-7t/KtyG4bx3oN8VWcs4z Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Am Montag, dem 09.12.2024 um 23:26 +0500 schrieb Andrey M. Borodin: > > On 9 Dec 2024, at 22:10, Bernd Helmle wrote: > >=20 > > So here's a version with the original, unchanged regression tests > > and > > injection point removed (i hope i forgot nothing to revert). >=20 > Besides unnecessary indentation changes in > contrib/btree_gist/Makefile, the patch seems good to me. Commit 630f9a43cece93cb4a5c243b30e34abce6a89514 created a conflict with this patch so that it doesn't apply anymore. Attached is a rebased version. Bernd --=-7t/KtyG4bx3oN8VWcs4z Content-Disposition: attachment; filename*0=0001-Add-support-for-sorted-gist-index-builds-to-btree_gi.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Add-support-for-sorted-gist-index-builds-to-btree_gi.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkZDRhMGIwNjU1NGQzYjM4MzUzOWEyN2MwNDQ3Y2E2NGJmODQ5YjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBIZWxtbGUgPEJlcm5kIEhlbG1sZSBtYWlsaW5nc0Bv b3Bzd2FyZS5kZT4KRGF0ZTogV2VkLCAxNSBKYW4gMjAyNSAxNDowMjo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBzb3J0ZWQgZ2lzdCBpbmRleCBidWlsZHMgdG8gYnRy ZWVfZ2lzdAoKVGhpcyBlbmFibGVzIHNvcnRzdXBwb3J0IGluIHRoZSBidHJlZV9naXN0IGV4dGVu c2lvbiBmb3IgZmFzdGVyCmJ1aWxkcyBvZiBnaXN0IGluZGV4ZXMuIEFkZGl0aW9uYWxseSBzb3J0 c3VwcG9ydCBpcyBhbHNvIGFkZGVkIGZvciByYW5nZSB0eXBlcwp0byB0aGUgYmFja2VuZCBzbyB0 aGF0IGdpc3QgaW5kZXhlcyBvbiByYW5nZSB0eXBlcyBhbHNvIGJlbmVmaXQgZnJvbSB0aGUKc3Bl ZWQgdXAuCgpTb3J0ZWQgZ2lzdCBpbmRleCBidWlsZCBzdHJhdGVneSBpcyB0aGUgbmV3IGRlZmF1 bHQgbm93LiBSZWdyZXNzaW9uIHRlc3RzIGFyZQp1bmNoYW5nZWQgYW5kIGFyZSB1c2luZyB0aGUg c29ydGVkIGJ1aWxkIHN0cmF0ZWd5IGluc3RlYWQuCi0tLQogY29udHJpYi9idHJlZV9naXN0L01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2JpdC5jICAgICAgICAgICAgICB8ICA0NiArKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2Jvb2wuYyAgICAgICAgICAgICB8ICAyMiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9i eXRlYS5jICAgICAgICAgICAgfCAgMzUgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nh c2guYyAgICAgICAgICAgICB8ICAyNyArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9kYXRl LmMgICAgICAgICAgICAgfCAgMjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5j ICAgICAgICAgICAgIHwgIDMzICsrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQu YyAgICAgICAgICAgfCAgMjggKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMg ICAgICAgICAgIHwgIDI3ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0t MS44LnNxbCB8ICAgMSArCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjku c3FsIHwgMTkyICsrKysrKysrKysrKysrKysrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVf Z2lzdC5jb250cm9sICAgICAgIHwgICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5l dC5jICAgICAgICAgICAgIHwgIDI3ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIu YyAgICAgICAgICAgICB8ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0LmMg ICAgICAgICAgICAgfCAgMzMgKysrLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYyAg ICAgICAgICAgICB8ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5j ICAgICAgICAgfCAgMjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jICAg ICAgICAgIHwgIDI5ICsrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMgICAg ICAgICB8ICAyNCArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9udW1lcmljLmMgICAgICAg ICAgfCAgMzMgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX29pZC5jICAgICAgICAgICAg ICB8ICAyOCArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90ZXh0LmMgICAgICAgICAgICAg fCAgMzQgKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYyAgICAgICAgICAgICB8 ICAyNiArKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jICAgICAgICAgICAgICAgfCAg MjUgKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmggICAgICAgIHwgIDEy ICstCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jICAgICAgICAgICAgIHwgIDI1ICsr KwogY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBk b2Mvc3JjL3NnbWwvYnRyZWUtZ2lzdC5zZ21sICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyAgICAgfCAgNzAgKysrKysrKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgIHwgICAzICsKIDMxIGZpbGVzIGNo YW5nZWQsIDg4OSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjgtLTEuOS5zcWwKCmRpZmYgLS1n aXQgYS9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUgYi9jb250cmliL2J0cmVlX2dpc3QvTWFr ZWZpbGUKaW5kZXggN2FjMmRmMjZjMTAuLjY4MTkwYWM1ZTQ2IDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlCkBA IC0zNCw3ICszNCw3IEBAIERBVEEgPSBidHJlZV9naXN0LS0xLjAtLTEuMS5zcWwgXAogICAgICAg IGJ0cmVlX2dpc3QtLTEuMS0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjIuc3FsIGJ0cmVlX2dpc3Qt LTEuMi0tMS4zLnNxbCBcCiAgICAgICAgYnRyZWVfZ2lzdC0tMS4zLS0xLjQuc3FsIGJ0cmVlX2dp c3QtLTEuNC0tMS41LnNxbCBcCiAgICAgICAgYnRyZWVfZ2lzdC0tMS41LS0xLjYuc3FsIGJ0cmVl X2dpc3QtLTEuNi0tMS43LnNxbCBcCi0gICAgICAgYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsCisg ICAgICAgYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsIGJ0cmVlX2dpc3QtLTEuOC0tMS45LnNxbAog UEdGSUxFREVTQyA9ICJidHJlZV9naXN0IC0gQi10cmVlIGVxdWl2YWxlbnQgR2lTVCBvcGVyYXRv ciBjbGFzc2VzIgogCiBSRUdSRVNTID0gaW5pdCBpbnQyIGludDQgaW50OCBmbG9hdDQgZmxvYXQ4 IGNhc2ggb2lkIHRpbWVzdGFtcCB0aW1lc3RhbXB0eiBcCmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfYml0LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYml0LmMKaW5k ZXggZjM0NmI5NTZmYTkuLjM1YWE1NTc4ZjgzIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfYml0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2JpdC5jCkBAIC02 LDYgKzYsNyBAQAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGls c192YXIuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy92YXJiaXQuaCIKIAogCkBAIC0xOCwxMCAr MTksMzMgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYml0X3BpY2tzcGxpdCk7CiBQR19GVU5D VElPTl9JTkZPX1YxKGdidF9iaXRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdi dF9iaXRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9iaXRfc2FtZSk7CitQR19G VU5DVElPTl9JTkZPX1YxKGdidF9iaXRfc29ydHN1cHBvcnQpOworUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfdmFyYml0X3NvcnRzdXBwb3J0KTsKIAogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlzb24g Ki8KIAorc3RhdGljIGludAorZ2J0X2JpdF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0 U3VwcG9ydCBzc3VwKQoreworCUdCVF9WQVJLRVkgKmtleTEgPSBQR19ERVRPQVNUX0RBVFVNKHgp OworCUdCVF9WQVJLRVkgKmtleTIgPSBQR19ERVRPQVNUX0RBVFVNKHkpOworCisJR0JUX1ZBUktF WV9SIGFyZzEgPSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkxKTsKKwlHQlRfVkFSS0VZX1IgYXJn MiA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTIpOworCURhdHVtIHJlc3VsdDsKKworCS8qIGxv d2VyIGlzIGFsd2F5cyBlcXVhbCB0byB1cHBlciwgc28ganVzdCBjb21wYXJlIHRob3NlIGZpZWxk cyAqLworCXJlc3VsdCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIoYnl0ZWFjbXAsCisJCQkJCQkJCSBQ b2ludGVyR2V0RGF0dW0oYXJnMS5sb3dlciksCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJn Mi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZfQ09QWShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9D T1BZKGtleTIsIHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50MzIocmVzdWx0KTsKK30KKwogc3Rh dGljIGJvb2wKIGdidF9iaXRndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBPaWQgY29s bGF0aW9uLCBGbWdySW5mbyAqZmxpbmZvKQogewpAQCAtMjA3LDMgKzIzMSwyNSBAQCBnYnRfYml0 X3BlbmFsdHkoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUihnYnRfdmFyX3Bl bmFsdHkocmVzdWx0LCBvLCBuLCBQR19HRVRfQ09MTEFUSU9OKCksCiAJCQkJCQkJCQkgICZ0aW5m bywgZmNpbmZvLT5mbGluZm8pKTsKIH0KKworRGF0dW0KK2didF9iaXRfc29ydHN1cHBvcnQoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19H RVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfYml0X3NzdXBfY21w OworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKwor RGF0dW0KK2didF92YXJiaXRfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSBnYnRfYml0X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBO VUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYm9vbC5jIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2Jvb2wuYwppbmRleCBhZGI3MjRlMTZhYy4uZTZiMDhmMDRlOWQgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ib29sLmMKKysrIGIvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2Jvb2wuYwpAQCAtNSw2ICs1LDcgQEAKIAogI2luY2x1ZGUgImJ0cmVl X2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNsdWRlICJ1dGlscy9z b3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0cnVjdCBib29sa2V5CiB7CkBAIC0yMiw2ICsyMywx NiBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29sX3BpY2tzcGxpdCk7CiBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF9ib29sX2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf Ym9vbF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Jvb2xfc2FtZSk7CitQR19G VU5DVElPTl9JTkZPX1YxKGdidF9ib29sX3NvcnRzdXBwb3J0KTsKKworc3RhdGljIGludAorZ2J0 X2Jvb2xfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwli b29sS0VZCSphcmcxID0gKGJvb2xLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWJvb2xLRVkg KmFyZzIgPSAoYm9vbEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gYXJnMS0+ bG93ZXIgLSBhcmcyLT5sb3dlcjsKK30KIAogc3RhdGljIGJvb2wKIGdidF9ib29sZ3QoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKQEAgLTE2NiwzICsxNzcs MTQgQEAgZ2J0X2Jvb2xfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVt X3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsK IAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2Jvb2xfc29ydHN1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBw b3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfYm9v bF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lE KCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jCmluZGV4IDVlYWNiOGM1OWEwLi44N2I4M2Qx NjJiYiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVk ZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX3Zhci5oIgogI2luY2x1ZGUg InV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAK IC8qCkBAIC0xNyw3ICsxOCw0MSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ieXRlYV9waWNr c3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfY29uc2lzdGVudCk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9ieXRlYV9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2J5dGVhX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfc29ydHN1cHBv cnQpOwogCisvKiBzb3J0c3VwcG9ydCBzdXBwb3J0ICovCisKK3N0YXRpYyBpbnQKK2didF9ieXRl YV9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCUdCVF9W QVJLRVkgKmtleTEgPSBQR19ERVRPQVNUX0RBVFVNKHgpOworCUdCVF9WQVJLRVkgKmtleTIgPSBQ R19ERVRPQVNUX0RBVFVNKHkpOworCisJR0JUX1ZBUktFWV9SIHhrZXkgPSBnYnRfdmFyX2tleV9y ZWFkYWJsZShrZXkxKTsKKwlHQlRfVkFSS0VZX1IgeWtleSA9IGdidF92YXJfa2V5X3JlYWRhYmxl KGtleTIpOworCURhdHVtIHJlc3VsdDsKKworCS8qIGxvd2VyIGFuZCB1cHBlciBhcmUgYWx3YXlz IHRoZSBzYW1lLCBzbyBpdCBpcyBlbm91Z2ggdG8gY29tcGFyZSBsb3dlciAqLworCXJlc3VsdCA9 IERpcmVjdEZ1bmN0aW9uQ2FsbDIoYnl0ZWFjbXAsCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0o eGtleS5sb3dlciksCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oeWtleS5sb3dlcikpOworCisJ R0JUX0ZSRUVfSUZfQ09QWShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkpOwor CisJcmV0dXJuIERhdHVtR2V0SW50MzIocmVzdWx0KTsKK30KKworRGF0dW0KK2didF9ieXRlYV9z b3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29y dFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdi dF9ieXRlYV9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CiAKIC8qIGRlZmluZSBmb3IgY29tcGFyaXNvbiAqLwogCmRpZmYgLS1naXQg YS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Nhc2guYwppbmRleCBjMThjMzRjOGI4My4uNGQ1MGIwZjBkOWEgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Nhc2guYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIK ICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvY2FzaC5oIgorI2luY2x1 ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC0yNSw2ICsy NiwyMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX2NvbnNpc3RlbnQpOwogUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfY2FzaF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdi dF9jYXNoX3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9zYW1lKTsKK1BH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfc29ydHN1cHBvcnQpOworCitleHRlcm4gRGF0dW0g Y2FzaF9jbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKK3N0YXRpYyBpbnQKK2didF9jYXNoX3NzdXBf Y21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJY2FzaEtFWQkqYXJn MSA9IChjYXNoS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwljYXNoS0VZCSphcmcyID0gKGNh c2hLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogU2luY2UgbG93ZXIgYW5kIHVwcGVy IGFyZSBhbHdheXMgZXF1YWwsIGl0IGlzIGVub3VnaCB0byBjb21wYXJlIGxvd2VyICovCisJcmV0 dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihjYXNoX2NtcCwKKwkJCQkJCQkJ CQkJIENhc2hHZXREYXR1bShhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBDYXNoR2V0RGF0dW0o YXJnMi0+bG93ZXIpKSk7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfY2FzaGd0KGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCkBAIC0yMTUsMyArMjMxLDE0IEBA IGdidF9jYXNoX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9zYW1l KCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJUEdf UkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2didF9jYXNoX3NvcnRzdXBwb3J0 KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkg UEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2Nhc2hfc3N1 cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOwor fQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMKaW5kZXggN2E0YTlkN2E4NTMuLmVlMmQ5NmU2MDA2IDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZGF0ZS5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9kYXRlLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiB0eXBlZGVmIHN0 cnVjdAogewpAQCAtMjUsNiArMjYsMzAgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9j b25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVfZGlzdGFuY2UpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2RhdGVfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX3NvcnRzdXBwb3J0 KTsKKworLyogc29ydHN1cHBvcnQgZnVuY3Rpb25zICovCisKK3N0YXRpYyBpbnQgZ2J0X2RhdGVf c3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlkYXRlS0VZ ICpha2V5ID0gKGRhdGVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWRhdGVLRVkgKmJrZXkg PSAoZGF0ZUtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQz MihEaXJlY3RGdW5jdGlvbkNhbGwyKGRhdGVfY21wLAorCQkJCQkJCQkJCQkgRGF0ZUFEVEdldERh dHVtKGFrZXktPmxvd2VyKSwKKwkJCQkJCQkJCQkJIERhdGVBRFRHZXREYXR1bShia2V5LT5sb3dl cikpKTsKK30KKworRGF0dW0KK2didF9kYXRlX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIo MCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2RhdGVfc3N1cF9jbXA7CisJc3N1cC0+c3N1 cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAog Z2J0X2RhdGVndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZv KQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMKaW5kZXggMDVkMDJlNzA0YTAuLjljNGE3NzI3MTAyIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZW51bS5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90 b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKiBlbnVtcyBhcmUgcmVh bGx5IE9pZHMsIHNvIHdlIGp1c3QgdXNlIHRoZSBzYW1lIHN0cnVjdHVyZSAqLwogCkBAIC0yNiw4 ICsyNywyMyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3BpY2tzcGxpdCk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfZW51bV9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2VudW1fc2FtZSk7 CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3NvcnRzdXBwb3J0KTsKIAogCitzdGF0aWMg aW50CitnYnRfZW51bV9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3Vw KQoreworCW9pZEtFWSAqYXJnMSA9IChvaWRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCW9p ZEtFWSAqYXJnMiA9IChvaWRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogU2luY2Ug bG93ZXIgYW5kIHVwcGVyIG9pZEtFWSBhcmUgYWx3YXlzIHRoZSBzYW1lLCBqdXN0IGNvbXBhcmUg bG93ZXIgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihDYWxsZXJGSW5mb0Z1bmN0aW9uQ2FsbDIo ZW51bV9jbXAsCisJCQkJCQkJCQkJCQkgIHNzdXAtPnNzdXBfZXh0cmEsCisJCQkJCQkJCQkJCQkg IEludmFsaWRPaWQsCisJCQkJCQkJCQkJCQkgIGFyZzEtPmxvd2VyLAorCQkJCQkJCQkJCQkJICBh cmcyLT5sb3dlcikpOworfQorCiBzdGF0aWMgYm9vbAogZ2J0X2VudW1ndChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewpAQCAtMTgzLDMgKzE5OSwyMCBA QCBnYnRfZW51bV9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2Ft ZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBH X1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfZW51bV9zb3J0c3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQp IFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9lbnVtX3Nz dXBfY21wOworCisJLyoKKwkgKiBTaW5jZSBlbnVtX2Zhc3RfY21wKCkgYWxzbyB1c2VzIGVudW1f Y21wKCkgbGlrZSB0aGUgcmVzdCBvZiB0aGUKKwkgKiBjb21wYXJpc29uIGZ1bmN0aW9ucywgaXQg YWxzbyBuZWVkcyB0byBwYXNzIGZsaW5mbyB3aGVuIGNhbGxpbmcKKwkgKiBpdC4gVGh1cyBzYXZl IGl0IGluIHNzdXBfZXh0cmEgYW5kIHJldHJpZXZlIGl0IGluIGVudW1fZmFzdF9jbXAoKSBsYXRl ci4KKwkgKi8KKwlzc3VwLT5zc3VwX2V4dHJhID0gZmNpbmZvLT5mbGluZm87CisKKwlQR19SRVRV Uk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jCmluZGV4IGQxMzhhYTk0YmYy Li5jMjNmNzg4NmUwOSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwpAQCAtNSw2ICs1LDcg QEAKIAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0u aCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0 LmgiCiAKIHR5cGVkZWYgc3RydWN0IGZsb2F0NGtleQpAQCAtMjQsNiArMjUsMzMgQEAgUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfZmxvYXQ0X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfZmxvYXQ0X2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9w ZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9zb3J0c3VwcG9ydCk7CisKK2V4dGVybiBEYXR1bSBidGZs b2F0NGNtcChQR19GVU5DVElPTl9BUkdTKTsKKworLyogc29ydHN1cHBvcnQgZnVuY3Rpb25zICov CitzdGF0aWMgaW50CitnYnRfZmxvYXQ0X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRT dXBwb3J0IHNzdXApCit7CisJZmxvYXQ0S0VZICphcmcxID0gKGZsb2F0NEtFWSAqKSBEYXR1bUdl dFBvaW50ZXIoeCk7CisJZmxvYXQ0S0VZICphcmcyID0gKGZsb2F0NEtFWSAqKSBEYXR1bUdldFBv aW50ZXIoeSk7CisKKwkvKiBTaW5jZSBsb3dlciBhbmQgdXBwZXIgZm9yIGZsb2F0NEtFWXMgaGVy ZSBhcmUgYWx3YXlzIGVxdWFsIGl0IGlzIG9rYXkgdG8gY29tcGFyZSB0aGVtIG9ubHkgKi8KKwly ZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKGJ0ZmxvYXQ0Y21wLAorCQkJ CQkJCQkJCQkgRmxvYXQ0R2V0RGF0dW0oYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkgRmxvYXQ0 R2V0RGF0dW0oYXJnMi0+bG93ZXIpKSk7Cit9CisKK0RhdHVtCitnYnRfZmxvYXQ0X3NvcnRzdXBw b3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9y dCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2Zsb2F0 NF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lE KCk7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfZmxvYXQ0Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qg dm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9mbG9hdDguYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDguYwppbmRl eCBhNzRjZDIwMDUyOS4uMTI5ODM3ZjJhMTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9mbG9hdDguYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMK QEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRy ZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy9mbG9hdC5oIgogCiB0eXBlZGVmIHN0cnVjdCBmbG9hdDhrZXkKQEAgLTI0LDcgKzI1 LDMzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0OF9jb25zaXN0ZW50KTsKIFBHX0ZV TkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0OF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9mbG9hdDhfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfc2Ft ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfc29ydHN1cHBvcnQpOwogCitleHRl cm4gRGF0dW0gYnRmbG9hdDhjbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKKy8qIHNvcnRzdXBwb3J0 IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X2Zsb2F0OF9zc3VwX2NtcChEYXR1bSB4LCBE YXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWZsb2F0OEtFWSAqYXJnMSA9IChmbG9hdDhL RVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWZsb2F0OEtFWSAqYXJnMiA9IChmbG9hdDhLRVkg KikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogdXBwZXIgYW5kIGxvd2VyIGZvciBpbnB1dCBr ZXlzIGFyZSBlcXVhbCBoZXJlICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rp b25DYWxsMihidGZsb2F0OGNtcCwKKwkJCQkJCQkJCQkJIEZsb2F0OEdldERhdHVtKGFyZzEtPmxv d2VyKSwKKwkJCQkJCQkJCQkJIEZsb2F0OEdldERhdHVtKGFyZzItPmxvd2VyKSkpOworfQorCitE YXR1bQorZ2J0X2Zsb2F0OF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRT dXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1 cC0+Y29tcGFyYXRvciA9IGdidF9mbG9hdDhfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9 IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0 OGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYg LS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbAppbmRleCBjNzAyNDI2ZGVh Yi4uZmYyZWNiYzU0M2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0 LS0xLjctLTEuOC5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0t MS44LnNxbApAQCAtODUsMyArODUsNCBAQCBBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9lbnVt X29wcyBVU0lORyBnaXN0IEFERAogCiBBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ib29sX29w cyBVU0lORyBnaXN0IEFERAogCUZVTkNUSU9OIDEyIChib29sLCBib29sKSBnaXN0X3N0cmF0bnVt X2J0cmVlIChpbnQpIDsKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dp c3QtLTEuOC0tMS45LnNxbCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjgtLTEu OS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwMWU5OTY1Y2Y2 Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0t MS45LnNxbApAQCAtMCwwICsxLDE5MiBAQAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dp c3QtLTEuNy0tMS44LnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBp biBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRF UiBFWFRFTlNJT04gYnRyZWVfZ2lzdCBVUERBVEUgVE8gJzEuOSciIHRvIGxvYWQgdGhpcyBmaWxl LiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2JpdF9zb3J0c3VwcG9ydChpbnRlcm5hbCkK K1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxF IFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF92YXJiaXRfc29ydHN1cHBvcnQoaW50ZXJu YWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfYm9vbF9zb3J0c3VwcG9ydChpbnRl cm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9jYXNoX3NvcnRzdXBwb3J0KGlu dGVybmFsKQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJ TU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2VudW1fc29ydHN1cHBvcnQo aW50ZXJuYWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBD IElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfaW5ldF9zb3J0c3VwcG9y dChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdF IEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbnR2X3NvcnRzdXBw b3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X21hY2FkOF9zb3J0 c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xB TkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90aW1lX3Nv cnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor TEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDJf c29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhO QU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9O IGdidF9pbnQ0X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZV TkNUSU9OIGdidF9pbnQ4X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAor QVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisK K0NSRUFURSBGVU5DVElPTiBnYnRfYnl0ZWFfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVU VVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxF IFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9kYXRlX3NvcnRzdXBwb3J0KGludGVybmFs KQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBD IElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZmxvYXQ0X3NvcnRzdXBw b3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAg ICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZmxv YXQ4X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9Q QVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5D VElPTiBnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQK K0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gZ2J0X251bWVyaWNfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAg UkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRB QkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9vaWRfc29ydHN1cHBvcnQoaW50ZXJu YWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdF IEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90ZXh0X3NvcnRzdXBw b3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKKyAg ICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfdHNf c29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhO QU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9O IGdidF91dWlkX3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01P RFVMRV9QQVRITkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0FMVEVS IE9QRVJBVE9SIEZBTUlMWSBnaXN0X3ZiaXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgICh2YXJiaXQsIHZhcmJpdCkgZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydCAoaW50ZXJu YWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYml0X29wcyBVU0lORyBnaXN0IEFE RAorICAgIEZVTkNUSU9OICAgIDExICAoYml0LCBiaXQpIGdidF9iaXRfc29ydHN1cHBvcnQgKGlu dGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2Jvb2xfb3BzIFVTSU5HIGdp c3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChib29sLCBib29sKSBnYnRfYm9vbF9zb3J0c3Vw cG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnl0ZWFfb3Bz IFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChieXRlYSwgYnl0ZWEpIGdidF9i eXRlYV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdp c3RfY2FzaF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1vbmV5LCBt b25leSkgZ2J0X2Nhc2hfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X2RhdGVfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEg IChkYXRlLCBkYXRlKSBnYnRfZGF0ZV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIg T1BFUkFUT1IgRkFNSUxZIGdpc3RfZW51bV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKGFueWVudW0sIGFueWVudW0pIGdidF9lbnVtX3NvcnRzdXBwb3J0IChpbnRlcm5h bCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDRfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChmbG9hdDQsIGZsb2F0NCkgZ2J0X2Zsb2F0NF9zb3J0 c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ4 X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoZmxvYXQ4LCBmbG9hdDgp IGdidF9mbG9hdDhfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZB TUlMWSBnaXN0X2luZXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChp bmV0LCBpbmV0KSBnYnRfaW5ldF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfY2lkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAg ICAxMSAgKGNpZHIsIGNpZHIpIGdidF9pbmV0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitB TFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAoaW50MiwgaW50MikgZ2J0X2ludDJfc29ydHN1cHBvcnQgKGludGVybmFs KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludDRfb3BzIFVTSU5HIGdpc3QgQURE CisgICAgRlVOQ1RJT04gICAgMTEgIChpbnQ0LCBpbnQ0KSBnYnRfaW50NF9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50OF9vcHMgVVNJTkcg Z2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGludDgsIGludDgpIGdidF9pbnQ4X3NvcnRz dXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnRlcnZh bF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGludGVydmFsLCBpbnRl cnZhbCkgZ2J0X2ludHZfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X21hY2FkZHJfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAg MTEgIChtYWNhZGRyLCBtYWNhZGRyKSBnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydCAoaW50ZXJuYWwp IDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfbWFjYWRkcjhfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChtYWNhZGRyOCwgbWFjYWRkcjgpIGdidF9tYWNhZDhf c29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X251 bWVyaWNfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChudW1lcmljLCBu dW1lcmljKSBnYnRfbnVtZXJpY19zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3Rfb2lkX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAg IDExICAob2lkLCBvaWQpIGdidF9vaWRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVS IE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RleHRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJ T04gICAgMTEgICh0ZXh0LCB0ZXh0KSBnYnRfdGV4dF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsK KworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYnBjaGFyX29wcyBVU0lORyBnaXN0IEFERAor ICAgIEZVTkNUSU9OICAgIDExICAoYnBjaGFyLCBicGNoYXIpIGJwY2hhcl9zb3J0c3VwcG9ydCAo aW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZV9vcHMgVVNJTkcg Z2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHRpbWUsIHRpbWUpIGdidF90aW1lX3NvcnRz dXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3Rh bXBfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1lc3RhbXAsIHRp bWVzdGFtcCkgZ2J0X3RzX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF90aW1lc3RhbXB0el9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKHRpbWVzdGFtcHR6LCB0aW1lc3RhbXB0eikgZ2J0X3RzX3NvcnRzdXBwb3J0IChp bnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1ldHpfb3BzIFVTSU5H IGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1ldHosIHRpbWV0eikgZ2J0X3RpbWVf c29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3V1 aWRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh1dWlkLCB1dWlkKSBn YnRfdXVpZF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jb250cm9sCmluZGV4IGFiZjY2NTM4ZjMyLi42OWQ5MzQxYTBhZCAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfZ2lzdC5jb250cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVu c2lvbgogY29tbWVudCA9ICdzdXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGlu IEdpU1QnCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS44JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOScK IG1vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJsZSA9IHRy dWUKIHRydXN0ZWQgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf aW5ldC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2luZXQuYwppbmRleCA0Y2ZmZDM0OTA5 MS4uY2Y5NGNkMGYzMDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0 LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2luZXQuYwpAQCAtNyw2ICs3LDcgQEAK ICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBw b3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0IGluZXRrZXkKIHsKQEAgLTIzLDggKzI0LDIzIEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2luZXRfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbmV0X3Bl bmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW5ldF9zYW1lKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2luZXRfc29ydHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9pbmV0 X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW5ldEtF WSAqYXJnMSA9IChpbmV0S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlpbmV0S0VZICphcmcy ID0gKGluZXRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJaWYgKGFyZzEtPmxvd2VyID09 IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gMDsKKwllbHNlIGlmIChhcmcxLT5sb3dlciA+IGFyZzIt Pmxvd2VyKQorCQlyZXR1cm4gMTsKKwllbHNlCisJCXJldHVybiAtMTsKK30KKwogc3RhdGljIGJv b2wKIGdidF9pbmV0Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZs aW5mbykKIHsKQEAgLTE4NCwzICsyMDAsMTQgQEAgZ2J0X2luZXRfc2FtZShQR19GVU5DVElPTl9B UkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAm dGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQor CitEYXR1bQorZ2J0X2luZXRfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSBnYnRfaW5ldF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0g TlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfaW50Mi5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwppbmRl eCAxNzUxYTZjMDU1ZC4uMDJkZjU4MTMyMzEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9pbnQyLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYwpAQCAt NSw2ICs1LDcgQEAKIAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91 dGlsc19udW0uaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgImNv bW1vbi9pbnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgaW50MTZrZXkKQEAgLTI0LDYgKzI1LDMxIEBA IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9J TkZPX1YxKGdidF9pbnQyX2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJf cGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQyX3NhbWUpOworUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW50Ml9zb3J0c3VwcG9ydCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0 aW9ucyAqLworc3RhdGljIGludAorZ2J0X2ludDJfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwg U29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnQxNktFWSAqYXJnMSA9IChpbnQxNktFWSAqKSBEYXR1 bUdldFBvaW50ZXIoeCk7CisJaW50MTZLRVkgKmFyZzIgPSAoaW50MTZLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJaWYgKGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAt MTsKKwllbHNlIGlmIChhcmcxLT5sb3dlciA+IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gMTsKKwll bHNlCisJCXJldHVybiAwOworfQorCitEYXR1bQorZ2J0X2ludDJfc29ydHN1cHBvcnQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRB UkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50Ml9zc3VwX2NtcDsK KwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDJndChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ0LmMKaW5kZXggOTBkMTgzYmU2ZTguLjFjZWYzNWFhY2UwIDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9p bnQ0LmMKQEAgLTIsMTUgKzIsMTUgQEAKICAqIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ0 LmMKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCi0KKyNpbmNsdWRlICJjb21tb24vaW50Lmgi CisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJidHJlZV9naXN0Lmgi CiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCi0jaW5jbHVkZSAiY29tbW9uL2ludC5oIgog CiB0eXBlZGVmIHN0cnVjdCBpbnQzMmtleQogewotCWludDMyCQlsb3dlcjsKLQlpbnQzMgkJdXBw ZXI7CisgIGludDMyCQlsb3dlcjsKKyAgaW50MzIJCXVwcGVyOwogfSBpbnQzMktFWTsKIAogLyoK QEAgLTI0LDcgKzI0LDcgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9jb25zaXN0ZW50 KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfaW50NF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRf c2FtZSk7Ci0KK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfc29ydHN1cHBvcnQpOwogCiBz dGF0aWMgYm9vbAogZ2J0X2ludDRndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdy SW5mbyAqZmxpbmZvKQpAQCAtOTAsNiArOTAsMjkgQEAgc3RhdGljIGNvbnN0IGdidHJlZV9uaW5m byB0aW5mbyA9CiAJZ2J0X2ludDRfZGlzdAogfTsKIAorc3RhdGljIGludAorZ2J0X2ludDRfc3N1 cF9jbXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbnQzMktFWSAg ICppYSA9IChpbnQzMktFWSAqKSBEYXR1bUdldFBvaW50ZXIoYSk7CisJaW50MzJLRVkgICAqaWIg PSAoaW50MzJLRVkgKikgRGF0dW1HZXRQb2ludGVyKGIpOworCisJLyogaW50NEtFWSB1cHBlciBh bmQgbG93ZXIgYXJlIGFsd2F5cyB0aGUgc2FtZSBmb3IgaW5wdXQga2V5cyBoZXJlLiAqLworCWlm IChpYS0+bG93ZXIgPCBpYi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChpYS0+bG93 ZXIgPiBpYi0+bG93ZXIpCisJCXJldHVybiAxOworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK0Rh dHVtCitnYnRfaW50NF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBw b3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+ Y29tcGFyYXRvciA9IGdidF9pbnQ0X3NzdXBfY21wOworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CiAK IFBHX0ZVTkNUSU9OX0lORk9fVjEoaW50NF9kaXN0KTsKIERhdHVtCmRpZmYgLS1naXQgYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDguYwppbmRleCA2NjFjZjgxODlmYy4uZjYxYTRkYTY4MDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDguYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAi YnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0 aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0IGludDY0a2V5CiB7CkBAIC0yNCw3 ICsyNSwzMiBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQ4X2NvbnNpc3RlbnQpOwogUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9pbnQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9zYW1lKTsK K1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDhfc29ydHN1cHBvcnQpOwogCisvKiBzb3J0c3Vw cG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9pbnQ4X3NzdXBfY21wKERhdHVtIHgs IERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW50NjRLRVkgKmFyZzEgPSAoaW50NjRL RVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWludDY0S0VZICphcmcyID0gKGludDY0S0VZICop IERhdHVtR2V0UG9pbnRlcih5KTsKKworCWlmIChhcmcxLT5sb3dlciA8IGFyZzItPmxvd2VyKQor CQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoYXJnMS0+bG93ZXIgPiBhcmcyLT5sb3dlcikKKwkJcmV0 dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKKworfQorCitEYXR1bQorZ2J0X2ludDhfc29ydHN1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBw b3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50 OF9zc3VwX2NtcDsKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2lu dDhndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludGVydmFsLmMgYi9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYwppbmRleCA4Zjk5YTQxNjk2NS4uMjViNGVjY2UxOTIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZhbC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1 ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI3LDggKzI4 LDIxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfY29uc2lzdGVudCk7CiBQR19GVU5D VElPTl9JTkZPX1YxKGdidF9pbnR2X2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X2ludHZfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X3NhbWUpOworUEdf RlVOQ1RJT05fSU5GT19WMShnYnRfaW50dl9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGljIGludAor Z2J0X2ludHZfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sK KwlpbnR2S0VZICphcmcxID0gKGludHZLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWludHZL RVkgKmFyZzIgPSAoaW50dktFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBpbnR2S0VZ IGxvd2VyIGFuZCB1cHBlciBhcmUgYWx3YXlzIGVxdWFsIGhlcmUsIHNvIGNvbXBhcmUganVzdCBs b3dlciBtZW1iZXJzIGlzIGVub3VnaCAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1 bmN0aW9uQ2FsbDIoaW50ZXJ2YWxfY21wLAorCQkJCQkJCQkJCQkgSW50ZXJ2YWxQR2V0RGF0dW0o JmFyZzEtPmxvd2VyKSwKKwkJCQkJCQkJCQkJIEludGVydmFsUEdldERhdHVtKCZhcmcyLT5sb3dl cikpKTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9pbnR2Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qg dm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTI5NSwzICszMDksMTQgQEAgZ2J0X2lu dHZfc2FtZShQR19GVU5DVElPTl9BUkdTKQogCSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQg KikgYjEsICh2b2lkICopIGIyLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5f UE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1bQorZ2J0X2ludHZfc29ydHN1cHBvcnQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRB UkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50dl9zc3VwX2NtcDsK Kwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYg LS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkci5jIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX21hY2FkZHIuYwppbmRleCA1NThjZmEyMTcyZi4uN2RmODVlNWRiM2IgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKKysrIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHIuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJi dHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVk ZSAidXRpbHMvaW5ldC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVk ZWYgc3RydWN0CiB7CkBAIC0yNSw2ICsyNiwzNCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9t YWNhZF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9tYWNhZF9wZW5hbHR5KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X21hY2FkX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRk cl9zb3J0c3VwcG9ydCk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGlu dAorZ2J0X21hY2FkZHJfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1 cCkKK3sKKwltYWNLRVkgKmFyZzEgPSAobWFjS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlt YWNLRVkgKmFyZzIgPSAobWFjS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIG1hY0tF WSBsb3dlciBhbmQgdXBwZXIgbWVtYmVycyBhcmUgYWx3YXlzIGVxdWFsIGhlcmUsCisJICogc28g aXRzIGVub3VnaCB0byBjb21wYXJlIGp1c3QgbG93ZXIuCisJICovCisJcmV0dXJuIERhdHVtR2V0 SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihtYWNhZGRyX2NtcCwKKwkJCQkJCQkJCQkJIE1hY2Fk ZHJQR2V0RGF0dW0oJmFyZzEtPmxvd2VyKSwKKwkJCQkJCQkJCQkJIE1hY2FkZHJQR2V0RGF0dW0o JmFyZzItPmxvd2VyKSkpOworCit9CisKK0RhdHVtCitnYnRfbWFjYWRkcl9zb3J0c3VwcG9ydChQ R19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBH X0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9tYWNhZGRyX3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KIAogCiBzdGF0aWMgYm9vbApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X21hY2FkZHI4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYwppbmRleCA1 ZDBjNTUwOWY1MS4uZTY1OTE2OGIxZTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9tYWNhZGRyOC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyOC5j CkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUg InV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAi dXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTI1LDggKzI2LDIw IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkOF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfbWFjYWQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfbWFjYWQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3NhbWUp OworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KTsKIAogCitzdGF0 aWMgaW50CitnYnRfbWFjYWRkcjhfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBv cnQgc3N1cCkKK3sKKwltYWM4S0VZICphcmcxID0gKG1hYzhLRVkgKikgRGF0dW1HZXRQb2ludGVy KHgpOworCW1hYzhLRVkgKmFyZzIgPSAobWFjOEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisK KwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKG1hY2FkZHI4X2NtcCwK KwkJCQkJCQkJCQkJIE1hY2FkZHI4UEdldERhdHVtKCZhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJ CSBNYWNhZGRyOFBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7Cit9CisKIHN0YXRpYyBib29sCiBn YnRfbWFjYWQ4Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKIHsKQEAgLTE5NCwzICsyMDcsMTQgQEAgZ2J0X21hY2FkOF9zYW1lKFBHX0ZVTkNUSU9OX0FS R1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0 aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisK K0RhdHVtCitnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X21hY2FkZHI4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0 cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9udW1lcmljLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVt ZXJpYy5jCmluZGV4IGQ1MzM2NDhhMjk1Li5mZTZhNWE0OGRkNSAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX251bWVyaWMuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbnVtZXJpYy5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9udW1lcmljLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisj aW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyoKICoqIEJ5dGVhIG9wcwpAQCAtMjEs NyArMjIsMzkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19waWNrc3BsaXQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X251bWVyaWNfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9u dW1lcmljX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19zb3J0c3VwcG9y dCk7CiAKKy8qIFNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X251bWVy aWNfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlHQlRf VkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4KTsKKwlHQlRfVkFSS0VZICprZXkyID0g UEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJLRVlfUiBhcmcxID0gZ2J0X3Zhcl9rZXlf cmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIGFyZzIgPSBnYnRfdmFyX2tleV9yZWFkYWJs ZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwlyZXN1bHQgPSBEaXJlY3RGdW5jdGlvbkNhbGwy KG51bWVyaWNfY21wLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKGFyZzEubG93ZXIpLAorCQkJ CQkJCQkgUG9pbnRlckdldERhdHVtKGFyZzIubG93ZXIpKTsKKworCUdCVF9GUkVFX0lGX0NPUFko a2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkyLCB5KTsKKworCXJldHVybiBEYXR1bUdl dEludDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCitnYnRfbnVtZXJpY19zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dF VEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9udW1lcmljX3NzdXBf Y21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30K IAogLyogZGVmaW5lIGZvciBjb21wYXJpc29uICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9vaWQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYwppbmRl eCBkMTk3NmY0ZjA5MS4uZTNiZDc4NjU4ZDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9vaWQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfb2lkLmMKQEAgLTUs NiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1 Y3QKIHsKQEAgLTIzLDcgKzI0LDM0IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29pZF9jb25z aXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29pZF9kaXN0YW5jZSk7CiBQR19GVU5D VElPTl9JTkZPX1YxKGdidF9vaWRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9v aWRfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRfc29ydHN1cHBvcnQpOwogCisv KiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9vaWRfc3N1cF9jbXAo RGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlvaWRLRVkgKmFyZzEgPSAo b2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlvaWRLRVkgKmFyZzIgPSAob2lkS0VZICop IERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBmaWVsZHMgYXJlIGVx dWFsIGZvciBlYWNoIG9pZEtFWSwgc28ganVzdCBjb21wYXJlIGxvd2VyICovCisJaWYgKGFyZzEt Pmxvd2VyID4gYXJnMi0+bG93ZXIpCisJCXJldHVybiAxOworCWVsc2UgaWYgKGFyZzEtPmxvd2Vy IDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNlCisJCXJldHVybiAwOworfQorCitE YXR1bQorZ2J0X29pZF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBw b3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+ Y29tcGFyYXRvciA9IGdidF9vaWRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7 CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X29pZGd0KGNvbnN0 IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGV4dC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3RleHQuYwppbmRleCA4ZjgwZjU0MjQwZi4uNGM2ZGZhOWE0ZTcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV90ZXh0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3RleHQuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJidHJlZV91dGlsc192YXIuaCIKICNp bmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNp bmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKgogKiogVGV4dCBvcHMKQEAgLTE5LDcg KzIwLDQwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRfY29uc2lzdGVudCk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9icGNoYXJfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF90ZXh0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGV4dF9zYW1l KTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0 c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF90ZXh0X3NzdXBfY21wKERhdHVt IHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJR0JUX1ZBUktFWSAqa2V5MSA9IFBH X0RFVE9BU1RfREFUVU0oeCk7CisJR0JUX1ZBUktFWSAqa2V5MiA9IFBHX0RFVE9BU1RfREFUVU0o eSk7CisKKwlHQlRfVkFSS0VZX1IgYXJnMSA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTEpOwor CUdCVF9WQVJLRVlfUiBhcmcyID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5Mik7CisJRGF0dW0g cmVzdWx0OworCisJcmVzdWx0ID0gRGlyZWN0RnVuY3Rpb25DYWxsMkNvbGwoYnR0ZXh0Y21wLAor CQkJCQkJCQkJIHNzdXAtPnNzdXBfY29sbGF0aW9uLAorCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1 bShhcmcxLmxvd2VyKSwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMi5sb3dlcikpOwor CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkp OworCisJcmV0dXJuIERhdHVtR2V0SW50MzIocmVzdWx0KTsKK30KKworRGF0dW0KK2didF90ZXh0 X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChT b3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0g Z2J0X3RleHRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRV Uk5fVk9JRCgpOworfQogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlzb24gKi8KIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV90aW1lLmMKaW5kZXggMmY3ODU5MzQwZjYuLjI4ZDQ0NDdmZjU5IDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV90aW1lLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgi CiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIK KyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFt cC5oIgogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjgsNiArMjksOCBAQCBQR19GVU5DVElPTl9JTkZP X1YxKGdidF90aW1lX2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RpbWV0el9j b25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RpbWVfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF90aW1lX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf dGltZV9zb3J0c3VwcG9ydCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1ldHpfc29ydHN1 cHBvcnQpOwogCiAKICNpZmRlZiBVU0VfRkxPQVQ4X0JZVkFMCkBAIC0zNyw2ICs0MCwxOCBAQCBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1lX3NhbWUpOwogI2VuZGlmCiAKIAorc3RhdGljIGlu dAorZ2J0X3RpbWVrZXlfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1 cCkKK3sKKwl0aW1lS0VZICphcmcxID0gKHRpbWVLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOwor CXRpbWVLRVkgKmFyZzIgPSAodGltZUtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBs b3dlciBhbmQgdXBwZXIgYXJlIGVxdWFsIGR1cmluZyBzb3J0c3VwcG9ydCBjb21wYXJpc29uICov CisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMih0aW1lX2NtcCwKKwkJ CQkJCQkJCQkJIFRpbWVBRFRHZXREYXR1bUZhc3QoYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkg VGltZUFEVEdldERhdHVtRmFzdChhcmcyLT5sb3dlcikpKTsKK30KKwogc3RhdGljIGJvb2wKIGdi dF90aW1lZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykK IHsKQEAgLTMzMiwzICszNDcsMTQgQEAgZ2J0X3RpbWVfc2FtZShQR19GVU5DVElPTl9BUkdTKQog CSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8s IGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1 bQorZ2J0X3RpbWVfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9y dCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNv bXBhcmF0b3IgPSBnYnRfdGltZWtleV9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVM TDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdHMuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCmluZGV4IDllMGQ5 NzlkZGE5Li41ZWM3MzliNDgxMyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3RzLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMKQEAgLTEwLDYgKzEwLDcg QEAKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0 YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3Vw cG9ydC5oIgogCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMzEsNiArMzIsNyBAQCBQR19GVU5DVElP Tl9JTkZPX1YxKGdidF90c3R6X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf dHN0el9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c19wZW5hbHR5KTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RzX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf dHNfc29ydHN1cHBvcnQpOwogCiAKICNpZmRlZiBVU0VfRkxPQVQ4X0JZVkFMCkBAIC0zOSw2ICs0 MSwyOSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c19zYW1lKTsKICNkZWZpbmUgVGltZXN0 YW1wR2V0RGF0dW1GYXN0KFgpIFBvaW50ZXJHZXREYXR1bSgmKFgpKQogI2VuZGlmCiAKKy8qIFNv cnRzdXBwb3J0IGZ1bmN0aW9ucyAqLworc3RhdGljIGludAorZ2J0X3RzX3NzdXBfY21wKERhdHVt IHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJdHNLRVkgKmFyZzEgPSAodHNLRVkg KikgRGF0dW1HZXRQb2ludGVyKHgpOworCXRzS0VZICphcmcyID0gKHRzS0VZICopIERhdHVtR2V0 UG9pbnRlcih5KTsKKworCS8qIFNvcnRzdXBwb3J0IGFsd2F5cyBnZXRzIHRoZSBzYW1lIGxvd2Vy IGFuZCB1cHBlciB2YWx1ZSBmb3IgaW5wdXQga2V5cyAqLworCXJldHVybiBEYXR1bUdldEludDMy KERpcmVjdEZ1bmN0aW9uQ2FsbDIodGltZXN0YW1wX2NtcCwKKwkJCQkJCQkJCQkJIFRpbWVzdGFt cEdldERhdHVtRmFzdChhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBUaW1lc3RhbXBHZXREYXR1 bUZhc3QoYXJnMi0+bG93ZXIpKSk7Cit9CisKK0RhdHVtCitnYnRfdHNfc29ydHN1cHBvcnQoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19H RVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfdHNfc3N1cF9jbXA7 CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBz dGF0aWMgYm9vbAogZ2J0X3RzZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1ncklu Zm8gKmZsaW5mbykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192 YXIuaCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuaAppbmRleCA5MzAyZDQx Y2VkNi4uZjc5YjU1M2ExZTEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91 dGlsc192YXIuaAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmgKQEAg LTQxLDcgKzQxLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJR0JUX1ZBUktFWSAqKCpmX2wybikgKEdC VF9WQVJLRVkgKiwgRm1nckluZm8gKmZsaW5mbyk7CS8qIGNvbnZlcnQgbGVhZiB0byBub2RlICov CiB9IGdidHJlZV92aW5mbzsKIAotCisvKgorICogRnJlZSBwdHIxIGluIGNhc2UgaXRzIGEgY29w eSBvZiBwdHIyLgorICoKKyAqIFRoaXMgaXMgYWRhcHRlZCBmcm9tIHZhcmxlbmEncyBQR19GUkVF X0lGX0NPUFksIHRob3VnaAorICogZG9lc24ndCByZXF1aXJlIGZjaW5mbyBhY2Nlc3MuCisgKi8K KyNkZWZpbmUgR0JUX0ZSRUVfSUZfQ09QWShwdHIxLCBwdHIyKSBcCisJZG8geyBcCisJCWlmICgo UG9pbnRlcikgKHB0cjEpICE9IERhdHVtR2V0UG9pbnRlcihwdHIyKSkgXAorCQkJcGZyZWUocHRy MSk7IFwKKwl9IHdoaWxlICgwKQogCiBleHRlcm4gR0JUX1ZBUktFWV9SIGdidF92YXJfa2V5X3Jl YWRhYmxlKGNvbnN0IEdCVF9WQVJLRVkgKmspOwogCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfdXVpZC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwppbmRl eCBmNGM1YzZlNTg5Mi4uODVlNTdkNTIxNTEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV91dWlkLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYwpAQCAt Niw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgorI2luY2x1ZGUgInV0aWxzL3Nv cnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdXVpZC5oIgogCiB0eXBlZGVmIHN0cnVjdApA QCAtMjUsNyArMjYsMzEgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdXVpZF9waWNrc3BsaXQp OwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdXVpZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X3V1aWRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF91dWlk X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdXVpZF9zb3J0c3VwcG9ydCk7CiAKK3N0 YXRpYyBpbnQgdXVpZF9pbnRlcm5hbF9jbXAoY29uc3QgcGdfdXVpZF90ICphcmcxLCBjb25zdCBw Z191dWlkX3QgKmFyZzIpOworCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBp bnQKK2didF91dWlkX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXAp Cit7CisJdXVpZEtFWSAqYXJnMSA9ICh1dWlkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwl1 dWlkS0VZICphcmcyID0gKHV1aWRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHkpOworCisJLyogU29y dHN1cHBvcnQgZ2V0cyBlcXVhbCB1cHBlciBhbmQgbG93ZXIgdmFsdWVzIGZvciBlYWNoIGtleSB0 byBjb21wYXJlICovCisJcmV0dXJuIHV1aWRfaW50ZXJuYWxfY21wKCZhcmcxLT5sb3dlciwgJmFy ZzItPmxvd2VyKTsKK30KKworRGF0dW0KK2didF91dWlkX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BP SU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X3V1aWRfc3N1cF9jbXA7CisJc3N1 cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMg aW50CiB1dWlkX2ludGVybmFsX2NtcChjb25zdCBwZ191dWlkX3QgKmFyZzEsIGNvbnN0IHBnX3V1 aWRfdCAqYXJnMikKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZCBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZAppbmRleCBmNGZhOTU3NGYxZi4uODk5MzJk ZDM4NDQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZAorKysgYi9j b250cmliL2J0cmVlX2dpc3QvbWVzb24uYnVpbGQKQEAgLTUxLDYgKzUxLDcgQEAgaW5zdGFsbF9k YXRhKAogICAnYnRyZWVfZ2lzdC0tMS41LS0xLjYuc3FsJywKICAgJ2J0cmVlX2dpc3QtLTEuNi0t MS43LnNxbCcsCiAgICdidHJlZV9naXN0LS0xLjctLTEuOC5zcWwnLAorICAnYnRyZWVfZ2lzdC0t MS44LS0xLjkuc3FsJywKICAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKICkKIApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2J0cmVlLWdpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9idHJlZS1n aXN0LnNnbWwKaW5kZXggMzFlN2M3OGFhZWYuLmE0YzFiOTliZTFmIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvYnRyZWUtZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNn bWwKQEAgLTUyLDYgKzUyLDEzIEBACiAgIDx0eXBlPm9pZDwvdHlwZT4sIGFuZCA8dHlwZT5tb25l eTwvdHlwZT4uCiAgPC9wYXJhPgogCisgPHBhcmE+CisgIEJ5IGRlZmF1bHQgPGZpbGVuYW1lPmJ0 cmVlX2dpc3Q8L2ZpbGVuYW1lPiBidWlsZHMgPGFjcm9ueW0+R2lTVDwvYWNyb255bT4gaW5kZXgg d2l0aAorICA8ZnVuY3Rpb24+c29ydHN1cHBvcnQ8L2Z1bmN0aW9uPiBpbiA8Zmlyc3R0ZXJtPnNv cnRlZDwvZmlyc3R0ZXJtPiBtb2RlLiBUaGlzIHVzdWFsbHkgcmVzdWx0cyBpbgorICBtdWNoIGZh c3RlciBpbmRleCBidWlsdCBzcGVlZC4gSXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV2ZXJ0IHRv IGJ1ZmZlcmVkIGJ1aWx0IHN0cmF0ZWd5CisgIGJ5IHVzaW5nIHRoZSA8bGl0ZXJhbD5idWZmZXJp bmc8L2xpdGVyYWw+IHBhcmFtZXRlciB3aGVuIGNyZWF0aW5nIHRoZSBpbmRleC4KKyA8L3BhcmE+ CisKICA8cGFyYT4KICAgVGhpcyBtb2R1bGUgaXMgY29uc2lkZXJlZCA8cXVvdGU+dHJ1c3RlZDwv cXVvdGU+LCB0aGF0IGlzLCBpdCBjYW4gYmUKICAgaW5zdGFsbGVkIGJ5IG5vbi1zdXBlcnVzZXJz IHdobyBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKaW5kZXggYTYwZWU5ODVlNzQuLmZhNzU0M2JlOWRl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfZ2lzdC5jCkBAIC0yMSw2ICsyMSw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL211bHRp cmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1 dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKgogICogUmFuZ2UgY2xhc3MgcHJvcGVydGllcyB1c2Vk IHRvIHNlZ3JlZ2F0ZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiByYW5nZXMgaW4KQEAgLTE3Nyw2ICsx NzgsNyBAQCBzdGF0aWMgdm9pZCByYW5nZV9naXN0X2RvdWJsZV9zb3J0aW5nX3NwbGl0KFR5cGVD YWNoZUVudHJ5ICp0eXBjYWNoZSwKIHN0YXRpYyB2b2lkIHJhbmdlX2dpc3RfY29uc2lkZXJfc3Bs aXQoQ29uc2lkZXJTcGxpdENvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQg KnJpZ2h0X2xvd2VyLCBpbnQgbWluX2xlZnRfY291bnQsCiAJCQkJCQkJCQkgIFJhbmdlQm91bmQg KmxlZnRfdXBwZXIsIGludCBtYXhfbGVmdF9jb3VudCk7CitzdGF0aWMgaW50CXJhbmdlX2dpc3Rf Y21wKERhdHVtIGEsIERhdHVtIGIsIFNvcnRTdXBwb3J0IHNzdXApOwogc3RhdGljIGludAlnZXRf Z2lzdF9yYW5nZV9jbGFzcyhSYW5nZVR5cGUgKnJhbmdlKTsKIHN0YXRpYyBpbnQJc2luZ2xlX2Jv dW5kX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpOwogc3RhdGlj IGludAlpbnRlcnZhbF9jbXBfbG93ZXIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9p ZCAqYXJnKTsKQEAgLTc3Myw2ICs3NzUsMjAgQEAgcmFuZ2VfZ2lzdF9waWNrc3BsaXQoUEdfRlVO Q1RJT05fQVJHUykKIAlQR19SRVRVUk5fUE9JTlRFUih2KTsKIH0KIAorLyoKKyAqIFNvcnQgc3Vw cG9ydCByb3V0aW5lIGZvciBmYXN0IEdpU1QgaW5kZXggYnVpbGQgYnkgc29ydGluZy4KKyAqLwor RGF0dW0KK3JhbmdlX2dpc3Rfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0 U3VwcG9ydAlzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNz dXAtPmNvbXBhcmF0b3IgPSByYW5nZV9naXN0X2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVM TDsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKIC8qIGVxdWFsaXR5IGNvbXBhcmF0b3IgZm9y IEdpU1QgKi8KIERhdHVtCiByYW5nZV9naXN0X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKQEAgLTE2 OTMsNiArMTcwOSw2MCBAQCByYW5nZV9naXN0X2NvbnNpZGVyX3NwbGl0KENvbnNpZGVyU3BsaXRD b250ZXh0ICpjb250ZXh0LAogCX0KIH0KIAorLyoKKyAqIEdpU1Qgc29ydHN1cHBvcnQgY29tcGFy YXRvciBmb3IgcmFuZ2VzLgorICogc2ltaWxhciB0byByYW5nZV9jbXAsIGJ1dCByYW5nZSB0eXBj YWNoZSBpcyBjYWNoZWQuCisgKi8KK3N0YXRpYyBpbnQKK3JhbmdlX2dpc3RfY21wKERhdHVtIGEs IERhdHVtIGIsIFNvcnRTdXBwb3J0IHNzdXApCit7CisJUmFuZ2VUeXBlICpyYW5nZV9hID0gRGF0 dW1HZXRSYW5nZVR5cGVQKGEpOworCVJhbmdlVHlwZSAqcmFuZ2VfYiA9IERhdHVtR2V0UmFuZ2VU eXBlUChiKTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBzc3VwLT5zc3VwX2V4dHJhOwor CVJhbmdlQm91bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJ CQl1cHBlcjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKwlpbnQJCQlyZXN1bHQ7CisK KwlpZiAodHlwY2FjaGUgPT0gTlVMTCkKKwl7CisJCUFzc2VydChSYW5nZVR5cGVHZXRPaWQocmFu Z2VfYSkgPT0gUmFuZ2VUeXBlR2V0T2lkKHJhbmdlX2IpKTsKKwkJdHlwY2FjaGUgPSBsb29rdXBf dHlwZV9jYWNoZShSYW5nZVR5cGVHZXRPaWQocmFuZ2VfYSksIFRZUEVDQUNIRV9SQU5HRV9JTkZP KTsKKworCQkvKgorCQkgKiBDYWNoZSB0aGUgcmFuZ2UgaW5mbyBiZXR3ZWVuIGNhbGxzIHRvIGF2 b2lkIGhhdmluZyB0byBjYWxsCisJCSAqIGxvb2t1cF90eXBlX2NhY2hlKCkgZm9yIGVhY2ggY29t cGFyaXNvbi4KKwkJICovCisJCXNzdXAtPnNzdXBfZXh0cmEgPSB0eXBjYWNoZTsKKwl9CisKKwly YW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcmFuZ2VfYSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVt cHR5MSk7CisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIHJhbmdlX2IsICZsb3dlcjIsICZ1 cHBlcjIsICZlbXB0eTIpOworCisJaWYgKGVtcHR5MSAmJiBlbXB0eTIpCisJCXJlc3VsdCA9IDA7 CisJZWxzZSBpZiAoZW1wdHkxKQorCQlyZXN1bHQgPSAtMTsKKwllbHNlIGlmIChlbXB0eTIpCisJ CXJlc3VsdCA9IDE7CisJZWxzZQorCXsKKwkJcmVzdWx0ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBj YWNoZSwgJmxvd2VyMSwgJmxvd2VyMik7CisJCWlmIChyZXN1bHQgPT0gMCkKKwkJCXJlc3VsdCA9 IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZ1cHBlcjIpOworCX0KKworCWlm ICgoRGF0dW0pIHJhbmdlX2EgIT0gYSkKKwkJcGZyZWUocmFuZ2VfYSk7CisJaWYgKChEYXR1bSkg cmFuZ2VfYiAhPSBiKQorCQlwZnJlZShyYW5nZV9iKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK IC8qCiAgKiBGaW5kIGNsYXNzIG51bWJlciBmb3IgcmFuZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0CmluZGV4IDUwOGY0OGQzNDVjLi5hZGU4MzczOTI3ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfYW1wcm9jLmRhdApAQCAtNjA2LDYgKzYwNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lz dC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5n ZV9naXN0X3NhbWUnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdl JywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAncmFuZ2VfZ2lzdF9zb3J0c3VwcG9y dCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnlyYW5nZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2Nu dW0gPT4gJzEyJywKICAgYW1wcm9jID0+ICdnaXN0X3N0cmF0bnVtX2NvbW1vbicgfSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IGJhMDJiYTUzYjI5Li4wNzk1MWNjYmE1OCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC0xMDc5Nyw2ICsxMDc5Nyw5IEBACiB7IG9pZCA9PiAnMzg4MScs IGRlc2NyID0+ICdHaVNUIHN1cHBvcnQnLAogICBwcm9uYW1lID0+ICdyYW5nZV9naXN0X3NhbWUn LCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnlyYW5nZSBh bnlyYW5nZSBpbnRlcm5hbCcsIHByb3NyYyA9PiAncmFuZ2VfZ2lzdF9zYW1lJyB9LAoreyBvaWQg PT4gJzg4NDknLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAncmFuZ2Vf Z2lzdF9zb3J0c3VwcG9ydCcsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLAorICBwcm9hcmd0eXBlcyA9 PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ3JhbmdlX2dpc3Rfc29ydHN1cHBvcnQnIH0sCiB7IG9p ZCA9PiAnNjE1NCcsIGRlc2NyID0+ICdHaVNUIHN1cHBvcnQnLAogICBwcm9uYW1lID0+ICdtdWx0 aXJhbmdlX2dpc3RfY29uc2lzdGVudCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0 eXBlcyA9PiAnaW50ZXJuYWwgYW55bXVsdGlyYW5nZSBpbnQyIG9pZCBpbnRlcm5hbCcsCi0tIAoy LjQ3LjEKCg== --=-7t/KtyG4bx3oN8VWcs4z--