Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1diO64-0004jP-AD for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Aug 2017 16:56:40 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1diO63-0000vA-R4 for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Aug 2017 16:56:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1diO60-0000sb-3P for pgsql-hackers@postgresql.org; Thu, 17 Aug 2017 16:56:36 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1diO5q-0007vk-C4 for pgsql-hackers@postgresql.org; Thu, 17 Aug 2017 16:56:35 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 92BA520CBA for ; Thu, 17 Aug 2017 12:56:24 -0400 (EDT) Received: from frontend2 ([10.202.2.161]) by compute7.internal (MEProxy); Thu, 17 Aug 2017 12:56:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=fm1; bh=f/psb2hgDQODOWJuO7q+Gje2q65q9vdgU6uNkpFZV TA=; b=IZIJ7O4PE678nBXu4Qu9SDlNuLdnm3s2P715qZa26iqVvaSveIGGWw3ss f1I4rpXz4DQDD+mb70DSp+Ug8lW0OV6CaAL6YwVCOg3ZZ4cDi3ZFDllmxmwYuVaR mGJMic5rGWF6bNyPJsYmKdZTuSMTTeH65yMSYsgkX8LbLBNe96PufdCiMI8WCgx8 FAt/5E5q7I9a7rlF9Kw2afjHHoGIbfeqBI/aj9frpDZOPEjzGg6Oc0tbdShLTl26 eEmTjP6859MxuHyqyKO8T4MoAGVA5ZjDlMLTRh+opeybWQsylUuLyscE6g0JgzJL U+IKia/5Jf6VM3vS7TRZhMtE2vbNQ== X-ME-Sender: X-Sasl-enc: fofVmINUosFC9akbL24wX0n+iel1Hy3yNOFFut0K5Zd5 1502988983 Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id DBC2424BA3 for ; Thu, 17 Aug 2017 12:56:23 -0400 (EDT) To: pgsql-hackers From: Peter Eisentraut Subject: assorted code cleanup Organization: 2ndQuadrant Message-ID: <2beab0ef-69f9-dab3-cacd-8fdf417bca96@2ndquadrant.com> Date: Thu, 17 Aug 2017 12:56:23 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4BBFB5D36437E815ACFFDFD6" Content-Language: en-US List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Here are a few assorted patches I made while working on the stdbool set, cleaning up various pieces of dead code and weird styles. - Drop excessive dereferencing of function pointers - Remove endof macro - Remove unnecessary casts - Remove unnecessary parentheses in return statements - Remove our own definition of NULL - fuzzystrmatch: Remove dead code -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-fuzzystrmatch-Remove-dead-code.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-fuzzystrmatch-Remove-dead-code.patch" RnJvbSA3OGZmOWI3MmVjMzhhNmQ0MDcyZDI0NjJmNTRhZWQ4MTJlMzBjMTA3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDEvNl0gZnV6enlzdHJt YXRjaDogUmVtb3ZlIGRlYWQgY29kZQoKLS0tCiBjb250cmliL2Z1enp5c3Ry bWF0Y2gvZnV6enlzdHJtYXRjaC5jIHwgMzMgKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25z KCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2Z1 enp5c3RybWF0Y2gvZnV6enlzdHJtYXRjaC5jIGIvY29udHJpYi9mdXp6eXN0 cm1hdGNoL2Z1enp5c3RybWF0Y2guYwppbmRleCBjZTU4YTZhN2ZjLi5jOTky OGNlZGU4IDEwMDY0NAotLS0gYS9jb250cmliL2Z1enp5c3RybWF0Y2gvZnV6 enlzdHJtYXRjaC5jCisrKyBiL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6 eXN0cm1hdGNoLmMKQEAgLTk0LDE4ICs5NCw2IEBAIHNvdW5kZXhfY29kZShj aGFyIGxldHRlcikKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0JbXkgY29u c3RhbnRzIC0tIGNvbnN0YW50cyBJIGxpa2UKLQotCVByb2JhYmx5IHJlZHVu ZGFudC4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0j ZGVmaW5lIE1FVEFfRVJST1IJCQlGQUxTRQotI2RlZmluZSBNRVRBX1NVQ0NF U1MJCVRSVUUKLSNkZWZpbmUgTUVUQV9GQUlMVVJFCQlGQUxTRQotCi0KIC8q CUkgYWRkIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHRyYWRpdGlvbmFsIG1ldGFw aG9uZSBhbGdvcml0aG0gdGhhdCB5b3UKIAltaWdodCBmaW5kIGluIGJvb2tz LiAgRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgbWV0YXBob25lIHRvIGJlaGF2 ZQogCXRyYWRpdGlvbmFsbHkgKi8KQEAgLTExNiw3ICsxMDQsNyBAQCBzb3Vu ZGV4X2NvZGUoY2hhciBsZXR0ZXIpCiAjZGVmaW5lICBUSAkJJzAnCiAKIHN0 YXRpYyBjaGFyIExvb2thaGVhZChjaGFyICp3b3JkLCBpbnQgaG93X2Zhcik7 Ci1zdGF0aWMgaW50CV9tZXRhcGhvbmUoY2hhciAqd29yZCwgaW50IG1heF9w aG9uZW1lcywgY2hhciAqKnBob25lZF93b3JkKTsKK3N0YXRpYyB2b2lkCV9t ZXRhcGhvbmUoY2hhciAqd29yZCwgaW50IG1heF9waG9uZW1lcywgY2hhciAq KnBob25lZF93b3JkKTsKIAogLyogTWV0YWNoYXIuaCAuLi4gbGl0dGxlIGJp dHMgYWJvdXQgY2hhcmFjdGVycyBmb3IgbWV0YXBob25lICovCiAKQEAgLTI3 Miw3ICsyNjAsNiBAQCBtZXRhcGhvbmUoUEdfRlVOQ1RJT05fQVJHUykKIAlz aXplX3QJCXN0cl9pX2xlbiA9IHN0cmxlbihzdHJfaSk7CiAJaW50CQkJcmVx bGVuOwogCWNoYXIJICAgKm1ldGFwaDsKLQlpbnQJCQlyZXR2YWw7CiAKIAkv KiByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIHdlIHJlY2VpdmUgb25lICov CiAJaWYgKCEoc3RyX2lfbGVuID4gMCkpCkBAIC0yOTcsMTYgKzI4NCw4IEBA IG1ldGFwaG9uZShQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJtc2coIm91 dHB1dCBjYW5ub3QgYmUgZW1wdHkgc3RyaW5nIikpKTsKIAogCi0JcmV0dmFs ID0gX21ldGFwaG9uZShzdHJfaSwgcmVxbGVuLCAmbWV0YXBoKTsKLQlpZiAo cmV0dmFsID09IE1FVEFfU1VDQ0VTUykKLQkJUEdfUkVUVVJOX1RFWFRfUChj c3RyaW5nX3RvX3RleHQobWV0YXBoKSk7Ci0JZWxzZQotCXsKLQkJLyogaW50 ZXJuYWwgZXJyb3IgKi8KLQkJZWxvZyhFUlJPUiwgIm1ldGFwaG9uZTogZmFp bHVyZSIpOwotCQkvKiBrZWVwIHRoZSBjb21waWxlciBxdWlldCAqLwotCQlQ R19SRVRVUk5fTlVMTCgpOwotCX0KKwlfbWV0YXBob25lKHN0cl9pLCByZXFs ZW4sICZtZXRhcGgpOworCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190 ZXh0KG1ldGFwaCkpOwogfQogCiAKQEAgLTM2Miw3ICszNDEsNyBAQCBMb29r YWhlYWQoY2hhciAqd29yZCwgaW50IGhvd19mYXIpCiAjZGVmaW5lIElzYnJl YWsoYykJKCFpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSAoYykpKQogCiAKLXN0 YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBfbWV0YXBob25lKGNoYXIgKndvcmQs CQkJLyogSU4gKi8KIAkJICAgaW50IG1heF9waG9uZW1lcywKIAkJICAgY2hh ciAqKnBob25lZF93b3JkKQkvKiBPVVQgKi8KQEAgLTQwNCw3ICszODMsNyBA QCBfbWV0YXBob25lKGNoYXIgKndvcmQsCQkJLyogSU4gKi8KIAkJaWYgKEN1 cnJfTGV0dGVyID09ICdcMCcpCiAJCXsKIAkJCUVuZF9QaG9uZWRfV29yZDsK LQkJCXJldHVybiBNRVRBX1NVQ0NFU1M7CS8qIEZvciB0ZXN0aW5nICovCisJ CQlyZXR1cm47CiAJCX0KIAl9CiAKQEAgLTcyMSw3ICs3MDAsNyBAQCBfbWV0 YXBob25lKGNoYXIgKndvcmQsCQkJLyogSU4gKi8KIAogCUVuZF9QaG9uZWRf V29yZDsKIAotCXJldHVybiAoTUVUQV9TVUNDRVNTKTsKKwlyZXR1cm47CiB9 CQkJCQkJCQkvKiBFTkQgbWV0YXBob25lICovCiAKIAoKYmFzZS1jb21taXQ6 IGQ1NDI4NTkzNTA3MjE3NWFhYzFjNDQ2ZTE1ZWM3NzhiMDhhOGZkNzUKLS0g CjIuMTQuMQoK --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0002-Remove-our-own-definition-of-NULL.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Remove-our-own-definition-of-NULL.patch" RnJvbSAzNzA5YzQxZmFmOWRhMDI0ODVkNWIyMDIxNGEwYTJjM2IxYzJmMGE1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDIvNl0gUmVtb3ZlIG91 ciBvd24gZGVmaW5pdGlvbiBvZiBOVUxMCgpTdXJlbHkgZXZlcnlvbmUgaGFz IHRoYXQgYnkgbm93LgotLS0KIHNyYy9pbmNsdWRlL2MuaCB8IDEyICsrLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIv c3JjL2luY2x1ZGUvYy5oCmluZGV4IGFmNzk5ZGMxZGYuLmMyODUzNGJjODgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVk ZS9jLmgKQEAgLTI3LDcgKzI3LDcgQEAKICAqCSAgLS0tLS0tLQktLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CQkwKQkJcGdfY29uZmlnLmggYW5kIHN0YW5kYXJkIHN5c3RlbSBoZWFkZXJz CiAgKgkJMSkJCWhhY2tzIHRvIGNvcGUgd2l0aCBub24tQU5TSSBDIGNvbXBp bGVycwotICoJCTIpCQlib29sLCB0cnVlLCBmYWxzZSwgVFJVRSwgRkFMU0Us IE5VTEwKKyAqCQkyKQkJYm9vbCwgdHJ1ZSwgZmFsc2UsIFRSVUUsIEZBTFNF CiAgKgkJMykJCXN0YW5kYXJkIHN5c3RlbSB0eXBlcwogICoJCTQpCQlJc1Zh bGlkIG1hY3JvcyBmb3Igc3lzdGVtIHR5cGVzCiAgKgkJNSkJCW9mZnNldG9m LCBsZW5ndGhvZiwgZW5kb2YsIGFsaWdubWVudApAQCAtMTg0LDcgKzE4NCw3 IEBACiAjZW5kaWYKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoJCQkJ U2VjdGlvbiAyOglib29sLCB0cnVlLCBmYWxzZSwgVFJVRSwgRkFMU0UsIE5V TEwKKyAqCQkJCVNlY3Rpb24gMjoJYm9vbCwgdHJ1ZSwgZmFsc2UsIFRSVUUs IEZBTFNFCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApAQCAtMjIx LDE0ICsyMjEsNiBAQCB0eXBlZGVmIGJvb2wgKkJvb2xQdHI7CiAjZGVmaW5l IEZBTFNFCTAKICNlbmRpZgogCi0vKgotICogTlVMTAotICoJCU51bGwgcG9p bnRlci4KLSAqLwotI2lmbmRlZiBOVUxMCi0jZGVmaW5lIE5VTEwJKCh2b2lk ICopIDApCi0jZW5kaWYKLQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgkJCQlTZWN0aW9uIDM6CXN0YW5kYXJkIHN5c3RlbSB0eXBlcwotLSAKMi4x NC4xCgo= --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0003-Remove-unnecessary-parentheses-in-return-statements.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0003-Remove-unnecessary-parentheses-in-return-statements.pat"; filename*1="ch" RnJvbSAzMzZjYTQ1MzA5NjA0YmNjMTNjNjkwNWRhNGI2ZDY4MjQyMzgxZjdi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDMvNl0gUmVtb3ZlIHVu bmVjZXNzYXJ5IHBhcmVudGhlc2VzIGluIHJldHVybiBzdGF0ZW1lbnRzCgpU aGUgcGFyZW50aGVzaXplZCBzdHlsZSBoYXMgb25seSBiZWVuIHVzZWQgaW4g YSBmZXcgbW9kdWxlcy4gIENoYW5nZQp0aGF0IHRvIHVzZSB0aGUgc3R5bGUg dGhhdCBpcyBwcmVkb21pbmFudCBhY3Jvc3MgdGhlIHdob2xlIHRyZWUuCi0t LQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91 dGlsc192YXIuYyAgICAgICAgICAgICAgIHwgICA0ICstCiBjb250cmliL2N1 YmUvY3ViZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAz NCArKystLS0tCiBjb250cmliL2RibGluay9kYmxpbmsuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxMCArLQogY29udHJpYi9pbnRhcnJheS9f aW50X2Jvb2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGNv bnRyaWIvcGdjcnlwdG8vY3J5cHQtZGVzLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKy0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRp bmRleC5jICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGNvbnRyaWIvc2Vn L3NlZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4 ICstCiBjb250cmliL3NwaS9yZWZpbnQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogY29udHJpYi9zcGkvdGltZXRyYXZlbC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMv c2dtbC9zcGkuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHNjYW5uZXIubCAg ICAgICAgICAgICAgICB8ICA1NiArKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv dHNlYXJjaC9zcGVsbC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbmV0X2NpZHJfbnRvcC5jICAg ICAgICAgICAgIHwgIDE4ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9p bmV0X25ldF9wdG9uLmMgICAgICAgICAgICAgIHwgIDQ0ICsrKystLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2lzdGlkeC5jICAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21iL1VuaWNvZGUv Y29udnV0aWxzLnBtICAgICAgICAgIHwgICAyICstCiAuLi4vbWIvY29udmVy c2lvbl9wcm9jcy9ldWNfdHdfYW5kX2JpZzUvYmlnNS5jICAgICB8ICAgNCAr LQogc3JjL2ludGVyZmFjZXMvZWNwZy9jb21wYXRsaWIvaW5mb3JtaXguYyAg ICAgICAgICAgfCAgMTYgKystLQogc3JjL2ludGVyZmFjZXMvZWNwZy9lY3Bn bGliL2Nvbm5lY3QuYyAgICAgICAgICAgICAgfCAgMTIgKy0tCiBzcmMvaW50 ZXJmYWNlcy9lY3BnL2VjcGdsaWIvZGF0YS5jICAgICAgICAgICAgICAgICB8 ICA0OCArKysrKy0tLS0tCiBzcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIv ZGVzY3JpcHRvci5jICAgICAgICAgICB8ICA0NCArKysrLS0tLS0KIHNyYy9p bnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9lcnJvci5jICAgICAgICAgICAgICAg IHwgIDE2ICsrLS0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9leGVj dXRlLmMgICAgICAgICAgICAgIHwgMTAyICsrKysrKysrKystLS0tLS0tLS0t LQogc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL21lbW9yeS5jICAgICAg ICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xp Yi9taXNjLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsrLS0tCiBzcmMvaW50 ZXJmYWNlcy9lY3BnL2VjcGdsaWIvcHJlcGFyZS5jICAgICAgICAgICAgICB8 ICAyMiArKy0tLQogc3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL2Nv bW1vbi5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbnRlcmZhY2VzL2Vj cGcvcGd0eXBlc2xpYi9udW1lcmljLmMgICAgICAgICAgIHwgIDE0ICstLQog c3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL3RpbWVzdGFtcC5jICAg ICAgICAgfCAgMTAgKy0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLmMgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW50ZXJmYWNl cy9lY3BnL3ByZXByb2MvZWNwZy5oZWFkZXIgICAgICAgICAgICB8ICAxMCAr LQogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sICAgICAgICAg ICAgICAgICAgfCAgNzAgKysrKysrKy0tLS0tLS0KIHNyYy9pbnRlcmZhY2Vz L2VjcGcvcHJlcHJvYy90eXBlLmMgICAgICAgICAgICAgICAgIHwgIDg0ICsr KysrKysrLS0tLS0tLS0tCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv dmFyaWFibGUuYyAgICAgICAgICAgICB8ICAzNiArKysrLS0tLQogc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzY2FubmVyLmwgICAgICAgICAgICAgICAgICAg fCAgMTAgKy0KIDM2IGZpbGVzIGNoYW5nZWQsIDM4NSBpbnNlcnRpb25zKCsp LCAzODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX3V0aWxzX251bS5jIGIvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX3V0aWxzX251bS5jCmluZGV4IGJhZTMyYzQwNjQuLmIyMjk1ZjJj N2QgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGls c19udW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNf bnVtLmMKQEAgLTI5Niw3ICsyOTYsNyBAQCBnYnRfbnVtX2NvbnNpc3RlbnQo Y29uc3QgR0JUX05VTUtFWV9SICprZXksCiAJCQlyZXR2YWwgPSBmYWxzZTsK IAl9CiAKLQlyZXR1cm4gKHJldHZhbCk7CisJcmV0dXJuIHJldHZhbDsKIH0K IAogCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRp bHNfdmFyLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFy LmMKaW5kZXggMmM2MzZhZDJmYS4uZWNjODdmM2JiMyAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX3Zhci5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYwpAQCAtMTU5LDcg KzE1OSw3IEBAIGdidF92YXJfbm9kZV9jcF9sZW4oY29uc3QgR0JUX1ZBUktF WSAqbm9kZSwgY29uc3QgZ2J0cmVlX3ZpbmZvICp0aW5mbykKIAkJbC0tOwog CQlpKys7CiAJfQotCXJldHVybiAobWwpOwkJCQkvKiBsb3dlciA9PSB1cHBl ciAqLworCXJldHVybiBtbDsJCQkJLyogbG93ZXIgPT0gdXBwZXIgKi8KIH0K IAogCkBAIC0yOTksNyArMjk5LDcgQEAgZ2J0X3Zhcl9jb21wcmVzcyhHSVNU RU5UUlkgKmVudHJ5LCBjb25zdCBnYnRyZWVfdmluZm8gKnRpbmZvKQogCWVs c2UKIAkJcmV0dmFsID0gZW50cnk7CiAKLQlyZXR1cm4gKHJldHZhbCk7CisJ cmV0dXJuIHJldHZhbDsKIH0KIAogCmRpZmYgLS1naXQgYS9jb250cmliL2N1 YmUvY3ViZS5jIGIvY29udHJpYi9jdWJlL2N1YmUuYwppbmRleCAxNDk1NThj NzYzLi4wZTk2OGQxYzc2IDEwMDY0NAotLS0gYS9jb250cmliL2N1YmUvY3Vi ZS5jCisrKyBiL2NvbnRyaWIvY3ViZS9jdWJlLmMKQEAgLTYyNSw3ICs2MjUs NyBAQCBnX2N1YmVfbGVhZl9jb25zaXN0ZW50KE5EQk9YICprZXksCiAJCWRl ZmF1bHQ6CiAJCQlyZXR2YWwgPSBGQUxTRTsKIAl9Ci0JcmV0dXJuIChyZXR2 YWwpOworCXJldHVybiByZXR2YWw7CiB9CiAKIGJvb2wKQEAgLTY1Miw3ICs2 NTIsNyBAQCBnX2N1YmVfaW50ZXJuYWxfY29uc2lzdGVudChOREJPWCAqa2V5 LAogCQlkZWZhdWx0OgogCQkJcmV0dmFsID0gRkFMU0U7CiAJfQotCXJldHVy biAocmV0dmFsKTsKKwlyZXR1cm4gcmV0dmFsOwogfQogCiBOREJPWCAqCkBA IC02NjMsNyArNjYzLDcgQEAgZ19jdWJlX2JpbmFyeV91bmlvbihOREJPWCAq cjEsIE5EQk9YICpyMiwgaW50ICpzaXplcCkKIAlyZXR2YWwgPSBjdWJlX3Vu aW9uX3YwKHIxLCByMik7CiAJKnNpemVwID0gVkFSU0laRShyZXR2YWwpOwog Ci0JcmV0dXJuIChyZXR2YWwpOworCXJldHVybiByZXR2YWw7CiB9CiAKIApA QCAtNzI5LDcgKzcyOSw3IEBAIGN1YmVfdW5pb25fdjAoTkRCT1ggKmEsIE5E Qk9YICpiKQogCQlTRVRfUE9JTlRfQklUKHJlc3VsdCk7CiAJfQogCi0JcmV0 dXJuIChyZXN1bHQpOworCXJldHVybiByZXN1bHQ7CiB9CiAKIERhdHVtCkBA IC0xMDU4LDcgKzEwNTgsNyBAQCBjdWJlX2NvbnRhaW5zX3YwKE5EQk9YICph LCBOREJPWCAqYikKIAlpbnQJCQlpOwogCiAJaWYgKChhID09IE5VTEwpIHx8 IChiID09IE5VTEwpKQotCQlyZXR1cm4gKEZBTFNFKTsKKwkJcmV0dXJuIEZB TFNFOwogCiAJaWYgKERJTShhKSA8IERJTShiKSkKIAl7CkBAIC0xMDcwLDkg KzEwNzAsOSBAQCBjdWJlX2NvbnRhaW5zX3YwKE5EQk9YICphLCBOREJPWCAq YikKIAkJZm9yIChpID0gRElNKGEpOyBpIDwgRElNKGIpOyBpKyspCiAJCXsK IAkJCWlmIChMTF9DT09SRChiLCBpKSAhPSAwKQotCQkJCXJldHVybiAoRkFM U0UpOworCQkJCXJldHVybiBGQUxTRTsKIAkJCWlmIChVUl9DT09SRChiLCBp KSAhPSAwKQotCQkJCXJldHVybiAoRkFMU0UpOworCQkJCXJldHVybiBGQUxT RTsKIAkJfQogCX0KIApAQCAtMTA4MSwxMyArMTA4MSwxMyBAQCBjdWJlX2Nv bnRhaW5zX3YwKE5EQk9YICphLCBOREJPWCAqYikKIAl7CiAJCWlmIChNaW4o TExfQ09PUkQoYSwgaSksIFVSX0NPT1JEKGEsIGkpKSA+CiAJCQlNaW4oTExf Q09PUkQoYiwgaSksIFVSX0NPT1JEKGIsIGkpKSkKLQkJCXJldHVybiAoRkFM U0UpOworCQkJcmV0dXJuIEZBTFNFOwogCQlpZiAoTWF4KExMX0NPT1JEKGEs IGkpLCBVUl9DT09SRChhLCBpKSkgPAogCQkJTWF4KExMX0NPT1JEKGIsIGkp LCBVUl9DT09SRChiLCBpKSkpCi0JCQlyZXR1cm4gKEZBTFNFKTsKKwkJCXJl dHVybiBGQUxTRTsKIAl9CiAKLQlyZXR1cm4gKFRSVUUpOworCXJldHVybiBU UlVFOwogfQogCiBEYXR1bQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgY3ViZV9v dmVybGFwX3YwKE5EQk9YICphLCBOREJPWCAqYikKIAlpbnQJCQlpOwogCiAJ aWYgKChhID09IE5VTEwpIHx8IChiID09IE5VTEwpKQotCQlyZXR1cm4gKEZB TFNFKTsKKwkJcmV0dXJuIEZBTFNFOwogCiAJLyogc3dhcCB0aGUgYm94IHBv aW50ZXJzIGlmIG5lZWRlZCAqLwogCWlmIChESU0oYSkgPCBESU0oYikpCkBA IC0xMTQzLDIxICsxMTQzLDIxIEBAIGN1YmVfb3ZlcmxhcF92MChOREJPWCAq YSwgTkRCT1ggKmIpCiAJZm9yIChpID0gMDsgaSA8IERJTShiKTsgaSsrKQog CXsKIAkJaWYgKE1pbihMTF9DT09SRChhLCBpKSwgVVJfQ09PUkQoYSwgaSkp ID4gTWF4KExMX0NPT1JEKGIsIGkpLCBVUl9DT09SRChiLCBpKSkpCi0JCQly ZXR1cm4gKEZBTFNFKTsKKwkJCXJldHVybiBGQUxTRTsKIAkJaWYgKE1heChM TF9DT09SRChhLCBpKSwgVVJfQ09PUkQoYSwgaSkpIDwgTWluKExMX0NPT1JE KGIsIGkpLCBVUl9DT09SRChiLCBpKSkpCi0JCQlyZXR1cm4gKEZBTFNFKTsK KwkJCXJldHVybiBGQUxTRTsKIAl9CiAKIAkvKiBjb21wYXJlIHRvIHplcm8g dGhvc2UgZGltZW5zaW9ucyBpbiAoYSkgYWJzZW50IGluIChiKSAqLwogCWZv ciAoaSA9IERJTShiKTsgaSA8IERJTShhKTsgaSsrKQogCXsKIAkJaWYgKE1p bihMTF9DT09SRChhLCBpKSwgVVJfQ09PUkQoYSwgaSkpID4gMCkKLQkJCXJl dHVybiAoRkFMU0UpOworCQkJcmV0dXJuIEZBTFNFOwogCQlpZiAoTWF4KExM X0NPT1JEKGEsIGkpLCBVUl9DT09SRChhLCBpKSkgPCAwKQotCQkJcmV0dXJu IChGQUxTRSk7CisJCQlyZXR1cm4gRkFMU0U7CiAJfQogCi0JcmV0dXJuIChU UlVFKTsKKwlyZXR1cm4gVFJVRTsKIH0KIAogCkBAIC0xMzg1LDcgKzEzODUs NyBAQCBkaXN0YW5jZV8xRChkb3VibGUgYTEsIGRvdWJsZSBhMiwgZG91Ymxl IGIxLCBkb3VibGUgYjIpCiAJCXJldHVybiAoTWluKGExLCBhMikgLSBNYXgo YjEsIGIyKSk7CiAKIAkvKiB0aGUgcmVzdCBhcmUgYWxsIHNvcnRzIG9mIGlu dGVyc2VjdGlvbnMgKi8KLQlyZXR1cm4gKDAuMCk7CisJcmV0dXJuIDAuMDsK IH0KIAogLyogVGVzdCBpZiBhIGJveCBpcyBhbHNvIGEgcG9pbnQgKi8KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9k YmxpbmsvZGJsaW5rLmMKaW5kZXggODExMzZiMTMxYy4uOWY4ZTA4ZDNkNCAx MDA2NDQKLS0tIGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKKysrIGIvY29u dHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAgLTIyMTUsNyArMjIxNSw3IEBAIGdl dF9zcWxfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgaW50ICpwa2F0dG51bXMsIGlu dCBwa251bWF0dHMsIGNoYXIgKipzcmNfcGthdHR2YWxzCiAJfQogCWFwcGVu ZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKLQlyZXR1cm4gKGJ1Zi5k YXRhKTsKKwlyZXR1cm4gYnVmLmRhdGE7CiB9CiAKIHN0YXRpYyBjaGFyICoK QEAgLTIyNTEsNyArMjI1MSw3IEBAIGdldF9zcWxfZGVsZXRlKFJlbGF0aW9u IHJlbCwgaW50ICpwa2F0dG51bXMsIGludCBwa251bWF0dHMsIGNoYXIgKip0 Z3RfcGthdHR2YWxzCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYs ICIgSVMgTlVMTCIpOwogCX0KIAotCXJldHVybiAoYnVmLmRhdGEpOworCXJl dHVybiBidWYuZGF0YTsKIH0KIAogc3RhdGljIGNoYXIgKgpAQCAtMjMzNSw3 ICsyMzM1LDcgQEAgZ2V0X3NxbF91cGRhdGUoUmVsYXRpb24gcmVsLCBpbnQg KnBrYXR0bnVtcywgaW50IHBrbnVtYXR0cywgY2hhciAqKnNyY19wa2F0dHZh bHMKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiBJUyBOVUxM Iik7CiAJfQogCi0JcmV0dXJuIChidWYuZGF0YSk7CisJcmV0dXJuIGJ1Zi5k YXRhOwogfQogCiAvKgpAQCAtMjU0MCw5ICsyNTQwLDkgQEAgZ2V0Q29ubmVj dGlvbkJ5TmFtZShjb25zdCBjaGFyICpuYW1lKQogCQkJCQkJCQkJCQkgICBr ZXksIEhBU0hfRklORCwgTlVMTCk7CiAKIAlpZiAoaGVudHJ5KQotCQlyZXR1 cm4gKGhlbnRyeS0+cmNvbm4pOworCQlyZXR1cm4gaGVudHJ5LT5yY29ubjsK IAotCXJldHVybiAoTlVMTCk7CisJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRp YyBIVEFCICoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW50YXJyYXkvX2ludF9i b29sLmMgYi9jb250cmliL2ludGFycmF5L19pbnRfYm9vbC5jCmluZGV4IGEx OGM2NDU2MDYuLmJhZDhjMzYwMzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaW50 YXJyYXkvX2ludF9ib29sLmMKKysrIGIvY29udHJpYi9pbnRhcnJheS9faW50 X2Jvb2wuYwpAQCAtMjQ1LDcgKzI0NSw3IEBAIGNoZWNrY29uZGl0aW9uX2Fy cih2b2lkICpjaGVja3ZhbCwgSVRFTSAqaXRlbSkKIAl7CiAJCVN0b3BNaWRk bGUgPSBTdG9wTG93ICsgKFN0b3BIaWdoIC0gU3RvcExvdykgLyAyOwogCQlp ZiAoKlN0b3BNaWRkbGUgPT0gaXRlbS0+dmFsKQotCQkJcmV0dXJuICh0cnVl KTsKKwkJCXJldHVybiB0cnVlOwogCQllbHNlIGlmICgqU3RvcE1pZGRsZSA8 IGl0ZW0tPnZhbCkKIAkJCVN0b3BMb3cgPSBTdG9wTWlkZGxlICsgMTsKIAkJ ZWxzZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9jcnlwdC1kZXMu YyBiL2NvbnRyaWIvcGdjcnlwdG8vY3J5cHQtZGVzLmMKaW5kZXggNjBiZGJi MGM5MS4uZWUzYTBmMjE2OSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ2NyeXB0 by9jcnlwdC1kZXMuYworKysgYi9jb250cmliL3BnY3J5cHRvL2NyeXB0LWRl cy5jCkBAIC0yMDYsMTggKzIwNiwxOCBAQCBzdGF0aWMgaW5saW5lIGludAog YXNjaWlfdG9fYmluKGNoYXIgY2gpCiB7CiAJaWYgKGNoID4gJ3onKQotCQly ZXR1cm4gKDApOworCQlyZXR1cm4gMDsKIAlpZiAoY2ggPj0gJ2EnKQogCQly ZXR1cm4gKGNoIC0gJ2EnICsgMzgpOwogCWlmIChjaCA+ICdaJykKLQkJcmV0 dXJuICgwKTsKKwkJcmV0dXJuIDA7CiAJaWYgKGNoID49ICdBJykKIAkJcmV0 dXJuIChjaCAtICdBJyArIDEyKTsKIAlpZiAoY2ggPiAnOScpCi0JCXJldHVy biAoMCk7CisJCXJldHVybiAwOwogCWlmIChjaCA+PSAnLicpCiAJCXJldHVy biAoY2ggLSAnLicpOwotCXJldHVybiAoMCk7CisJcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyB2b2lkCkBAIC00MjAsNyArNDIwLDcgQEAgZGVzX3NldGtleShj b25zdCBjaGFyICprZXkpCiAJCSAqICh3aGljaCBpcyB3ZWFrIGFuZCBoYXMg YmFkIHBhcml0eSBhbnl3YXkpIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoZQog CQkgKiBzdGFydGluZyBjb25kaXRpb25zLgogCQkgKi8KLQkJcmV0dXJuICgw KTsKKwkJcmV0dXJuIDA7CiAJfQogCW9sZF9yYXdrZXkwID0gcmF3a2V5MDsK IAlvbGRfcmF3a2V5MSA9IHJhd2tleTE7CkBAIC00NzksNyArNDc5LDcgQEAg ZGVzX3NldGtleShjb25zdCBjaGFyICprZXkpCiAJCQl8IGNvbXBfbWFza3Jb Nl1bKHQxID4+IDcpICYgMHg3Zl0KIAkJCXwgY29tcF9tYXNrcls3XVt0MSAm IDB4N2ZdOwogCX0KLQlyZXR1cm4gKDApOworCXJldHVybiAwOwogfQogCiBz dGF0aWMgaW50CkBAIC01MDAsNyArNTAwLDcgQEAgZG9fZGVzKHVpbnQzMiBs X2luLCB1aW50MzIgcl9pbiwgdWludDMyICpsX291dCwgdWludDMyICpyX291 dCwgaW50IGNvdW50KQogCWludAkJCXJvdW5kOwogCiAJaWYgKGNvdW50ID09 IDApCi0JCXJldHVybiAoMSk7CisJCXJldHVybiAxOwogCWVsc2UgaWYgKGNv dW50ID4gMCkKIAl7CiAJCS8qCkBAIC02MTMsNyArNjEzLDcgQEAgZG9fZGVz KHVpbnQzMiBsX2luLCB1aW50MzIgcl9pbiwgdWludDMyICpsX291dCwgdWlu dDMyICpyX291dCwgaW50IGNvdW50KQogCQl8IGZwX21hc2tyWzVdWyhyID4+ IDE2KSAmIDB4ZmZdCiAJCXwgZnBfbWFza3JbNl1bKHIgPj4gOCkgJiAweGZm XQogCQl8IGZwX21hc2tyWzddW3IgJiAweGZmXTsKLQlyZXR1cm4gKDApOwor CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CkBAIC02MzksNyArNjM5LDcg QEAgZGVzX2NpcGhlcihjb25zdCBjaGFyICppbiwgY2hhciAqb3V0LCBsb25n IHNhbHQsIGludCBjb3VudCkKIAogCXJldHZhbCA9IGRvX2RlcyhyYXdsLCBy YXdyLCAmbF9vdXQsICZyX291dCwgY291bnQpOwogCWlmIChyZXR2YWwpCi0J CXJldHVybiAocmV0dmFsKTsKKwkJcmV0dXJuIHJldHZhbDsKIAogCWJ1ZmZl clswXSA9IGh0b25sKGxfb3V0KTsKIAlidWZmZXJbMV0gPSBodG9ubChyX291 dCk7CkBAIC02NDcsNyArNjQ3LDcgQEAgZGVzX2NpcGhlcihjb25zdCBjaGFy ICppbiwgY2hhciAqb3V0LCBsb25nIHNhbHQsIGludCBjb3VudCkKIAkvKiBj b3B5IGRhdGEgdG8gYXZvaWQgYXNzdW1pbmcgb3V0cHV0IGlzIHdvcmQtYWxp Z25lZCAqLwogCW1lbWNweShvdXQsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikp OwogCi0JcmV0dXJuIChyZXR2YWwpOworCXJldHVybiByZXR2YWw7CiB9CiAK IGNoYXIgKgpAQCAtNjgwLDcgKzY4MCw3IEBAIHB4X2NyeXB0X2Rlcyhjb25z dCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnNldHRpbmcpCiAJCQlrZXkrKzsK IAl9CiAJaWYgKGRlc19zZXRrZXkoKGNoYXIgKikga2V5YnVmKSkKLQkJcmV0 dXJuIChOVUxMKTsKKwkJcmV0dXJuIE5VTEw7CiAKICNpZm5kZWYgRElTQUJM RV9YREVTCiAJaWYgKCpzZXR0aW5nID09IF9QQVNTV09SRF9FRk1UMSkKQEAg LTcxMSw3ICs3MTEsNyBAQCBweF9jcnlwdF9kZXMoY29uc3QgY2hhciAqa2V5 LCBjb25zdCBjaGFyICpzZXR0aW5nKQogCQkJICogRW5jcnlwdCB0aGUga2V5 IHdpdGggaXRzZWxmLgogCQkJICovCiAJCQlpZiAoZGVzX2NpcGhlcigoY2hh ciAqKSBrZXlidWYsIChjaGFyICopIGtleWJ1ZiwgMEwsIDEpKQotCQkJCXJl dHVybiAoTlVMTCk7CisJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qCiAJCQkg KiBBbmQgWE9SIHdpdGggdGhlIG5leHQgOCBjaGFyYWN0ZXJzIG9mIHRoZSBr ZXkuCkBAIC03MjEsNyArNzIxLDcgQEAgcHhfY3J5cHRfZGVzKGNvbnN0IGNo YXIgKmtleSwgY29uc3QgY2hhciAqc2V0dGluZykKIAkJCQkqcSsrIF49ICpr ZXkrKyA8PCAxOwogCiAJCQlpZiAoZGVzX3NldGtleSgoY2hhciAqKSBrZXli dWYpKQotCQkJCXJldHVybiAoTlVMTCk7CisJCQkJcmV0dXJuIE5VTEw7CiAJ CX0KIAkJU3RyTkNweShvdXRwdXQsIHNldHRpbmcsIDEwKTsKIApAQCAtNzY3 LDcgKzc2Nyw3IEBAIHB4X2NyeXB0X2Rlcyhjb25zdCBjaGFyICprZXksIGNv bnN0IGNoYXIgKnNldHRpbmcpCiAJICogRG8gaXQuCiAJICovCiAJaWYgKGRv X2RlcygwTCwgMEwsICZyMCwgJnIxLCBjb3VudCkpCi0JCXJldHVybiAoTlVM TCk7CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBOb3cgZW5jb2RlIHRo ZSByZXN1bHQuLi4KQEAgLTc5MCw1ICs3OTAsNSBAQCBweF9jcnlwdF9kZXMo Y29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICpzZXR0aW5nKQogCSpwKysg PSBfY3J5cHRfYTY0W2wgJiAweDNmXTsKIAkqcCA9IDA7CiAKLQlyZXR1cm4g KG91dHB1dCk7CisJcmV0dXJuIG91dHB1dDsKIH0KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYyBiL2NvbnRyaWIvcGdz dGF0dHVwbGUvcGdzdGF0aW5kZXguYwppbmRleCA5MzY1YmE3ZTAyLi43NTMx N2I5NmEyIDEwMDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3Rh dGluZGV4LmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRl eC5jCkBAIC01NjgsNyArNTY4LDcgQEAgcGdzdGF0Z2luaW5kZXhfaW50ZXJu YWwoT2lkIHJlbGlkLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAl0dXBs ZSA9IGhlYXBfZm9ybV90dXBsZSh0dXBsZURlc2MsIHZhbHVlcywgbnVsbHMp OwogCXJlc3VsdCA9IEhlYXBUdXBsZUdldERhdHVtKHR1cGxlKTsKIAotCXJl dHVybiAocmVzdWx0KTsKKwlyZXR1cm4gcmVzdWx0OwogfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2VnL3NlZy5jIGIvY29udHJp Yi9zZWcvc2VnLmMKaW5kZXggNGZjMTgxMzBlMS4uZTcwN2IxOGZjNiAxMDA2 NDQKLS0tIGEvY29udHJpYi9zZWcvc2VnLmMKKysrIGIvY29udHJpYi9zZWcv c2VnLmMKQEAgLTUyOCw3ICs1MjgsNyBAQCBnc2VnX2JpbmFyeV91bmlvbihE YXR1bSByMSwgRGF0dW0gcjIsIGludCAqc2l6ZXApCiAJcmV0dmFsID0gRGly ZWN0RnVuY3Rpb25DYWxsMihzZWdfdW5pb24sIHIxLCByMik7CiAJKnNpemVw ID0gc2l6ZW9mKFNFRyk7CiAKLQlyZXR1cm4gKHJldHZhbCk7CisJcmV0dXJu IHJldHZhbDsKIH0KIAogCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCByZXN0b3Jl KGNoYXIgKnJlc3VsdCwgZmxvYXQgdmFsLCBpbnQgbikKIAogCQkvKiAuLi4g dGhpcyBpcyBub3QgZG9uZSB5ZXQuICovCiAJfQotCXJldHVybiAoc3RybGVu KHJlc3VsdCkpOworCXJldHVybiBzdHJsZW4ocmVzdWx0KTsKIH0KIAogCkBA IC0xMDgwLDcgKzEwODAsNyBAQCBzaWduaWZpY2FudF9kaWdpdHMoY2hhciAq cykKIAl9CiAKIAlpZiAoIW4pCi0JCXJldHVybiAoemVyb2VzKTsKKwkJcmV0 dXJuIHplcm9lczsKIAotCXJldHVybiAobik7CisJcmV0dXJuIG47CiB9CmRp ZmYgLS1naXQgYS9jb250cmliL3NwaS9yZWZpbnQuYyBiL2NvbnRyaWIvc3Bp L3JlZmludC5jCmluZGV4IDQ2MjA1Yzc2MTMuLjcwZGVmOTVhYzUgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvc3BpL3JlZmludC5jCisrKyBiL2NvbnRyaWIvc3Bp L3JlZmludC5jCkBAIC02MzYsNSArNjM2LDUgQEAgZmluZF9wbGFuKGNoYXIg KmlkZW50LCBFUGxhbiAqKmVwbGFuLCBpbnQgKm5wbGFucykKIAluZXdwLT5z cGxhbiA9IE5VTEw7CiAJKCpucGxhbnMpKys7CiAKLQlyZXR1cm4gKG5ld3Ap OworCXJldHVybiBuZXdwOwogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zcGkv dGltZXRyYXZlbC5jIGIvY29udHJpYi9zcGkvdGltZXRyYXZlbC5jCmluZGV4 IGY3OTA1ZTIwZGIuLjViMTcwNDRiODEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv c3BpL3RpbWV0cmF2ZWwuYworKysgYi9jb250cmliL3NwaS90aW1ldHJhdmVs LmMKQEAgLTUxNyw3ICs1MTcsNyBAQCBmaW5kVFRTdGF0dXMoY2hhciAqbmFt ZSkKIEFic29sdXRlVGltZQogY3VycmFic3RpbWUoKQogewotCXJldHVybiAo R2V0Q3VycmVudEFic29sdXRlVGltZSgpKTsKKwlyZXR1cm4gR2V0Q3VycmVu dEFic29sdXRlVGltZSgpOwogfQogKi8KIApAQCAtNTQ5LDUgKzU0OSw1IEBA IGZpbmRfcGxhbihjaGFyICppZGVudCwgRVBsYW4gKiplcGxhbiwgaW50ICpu cGxhbnMpCiAJbmV3cC0+c3BsYW4gPSBOVUxMOwogCSgqbnBsYW5zKSsrOwog Ci0JcmV0dXJuIChuZXdwKTsKKwlyZXR1cm4gbmV3cDsKIH0KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9zcGkuc2dtbCBiL2RvYy9zcmMvc2dtbC9zcGku c2dtbAppbmRleCA4NmJlODdjMGZkLi5iMDk0Nzc1Y2M3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvc3BpLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Nw aS5zZ21sCkBAIC00Mzk5LDcgKzQzOTksNyBAQCA8dGl0bGU+RXhhbXBsZXM8 L3RpdGxlPgogICAgIFNQSV9maW5pc2goKTsKICAgICBwZnJlZShjb21tYW5k KTsKIAotICAgIHJldHVybiAocHJvYyk7CisgICAgcmV0dXJuIHByb2M7CiB9 CiA8L3Byb2dyYW1saXN0aW5nPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ib290c3RyYXAvYm9vdHNjYW5uZXIubCBiL3NyYy9iYWNrZW5kL2Jvb3Rz dHJhcC9ib290c2Nhbm5lci5sCmluZGV4IDY0Njc4ODJmYTMuLjUxYzVlNWUz Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c2Nh bm5lci5sCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c2Nhbm5l ci5sCkBAIC03MiwyNSArNzIsMjUgQEAgYXJyYXlpZCBbQS1aYS16MC05X10r XFt7RH0qXF0KIAogJSUKIAotb3BlbgkJCXsgcmV0dXJuKE9QRU4pOyB9Citv cGVuCQkJeyByZXR1cm4gT1BFTjsgfQogCi1jbG9zZQkJCXsgcmV0dXJuKFhD TE9TRSk7IH0KK2Nsb3NlCQkJeyByZXR1cm4gWENMT1NFOyB9CiAKLWNyZWF0 ZQkJCXsgcmV0dXJuKFhDUkVBVEUpOyB9CitjcmVhdGUJCQl7IHJldHVybiBY Q1JFQVRFOyB9CiAKLU9JRAkJCQl7IHJldHVybihPQkpfSUQpOyB9Ci1ib290 c3RyYXAJCXsgcmV0dXJuKFhCT09UU1RSQVApOyB9Ci0ic2hhcmVkX3JlbGF0 aW9uIgl7IHJldHVybihYU0hBUkVEX1JFTEFUSU9OKTsgfQotIndpdGhvdXRf b2lkcyIJeyByZXR1cm4oWFdJVEhPVVRfT0lEUyk7IH0KLSJyb3d0eXBlX29p ZCIJeyByZXR1cm4oWFJPV1RZUEVfT0lEKTsgfQotX251bGxfCQkJeyByZXR1 cm4oTlVMTFZBTCk7IH0KK09JRAkJCQl7IHJldHVybiBPQkpfSUQ7IH0KK2Jv b3RzdHJhcAkJeyByZXR1cm4gWEJPT1RTVFJBUDsgfQorInNoYXJlZF9yZWxh dGlvbiIJeyByZXR1cm4gWFNIQVJFRF9SRUxBVElPTjsgfQorIndpdGhvdXRf b2lkcyIJeyByZXR1cm4gWFdJVEhPVVRfT0lEUzsgfQorInJvd3R5cGVfb2lk Igl7IHJldHVybiBYUk9XVFlQRV9PSUQ7IH0KK19udWxsXwkJCXsgcmV0dXJu IE5VTExWQUw7IH0KIAotaW5zZXJ0CQkJeyByZXR1cm4oSU5TRVJUX1RVUExF KTsgfQoraW5zZXJ0CQkJeyByZXR1cm4gSU5TRVJUX1RVUExFOyB9CiAKLSIs IgkJCQl7IHJldHVybihDT01NQSk7IH0KLSI9IgkJCQl7IHJldHVybihFUVVB TFMpOyB9Ci0iKCIJCQkJeyByZXR1cm4oTFBBUkVOKTsgfQotIikiCQkJCXsg cmV0dXJuKFJQQVJFTik7IH0KKyIsIgkJCQl7IHJldHVybiBDT01NQTsgfQor Ij0iCQkJCXsgcmV0dXJuIEVRVUFMUzsgfQorIigiCQkJCXsgcmV0dXJuIExQ QVJFTjsgfQorIikiCQkJCXsgcmV0dXJuIFJQQVJFTjsgfQogCiBbXG5dCQkJ eyB5eWxpbmUrKzsgfQogW1x0XQkJCTsKQEAgLTk5LDMxICs5OSwzMSBAQCBp bnNlcnQJCQl7IHJldHVybihJTlNFUlRfVFVQTEUpOyB9CiBeXCNbXlxuXSog OyAvKiBkcm9wIGV2ZXJ5dGhpbmcgYWZ0ZXIgIiMiIGZvciBjb21tZW50cyAq LwogCiAKLSJkZWNsYXJlIgkJeyByZXR1cm4oWERFQ0xBUkUpOyB9Ci0iYnVp bGQiCQkJeyByZXR1cm4oWEJVSUxEKTsgfQotImluZGljZXMiCQl7IHJldHVy bihJTkRJQ0VTKTsgfQotInVuaXF1ZSIJCXsgcmV0dXJuKFVOSVFVRSk7IH0K LSJpbmRleCIJCQl7IHJldHVybihJTkRFWCk7IH0KLSJvbiIJCQl7IHJldHVy bihPTik7IH0KLSJ1c2luZyIJCQl7IHJldHVybihVU0lORyk7IH0KLSJ0b2Fz dCIJCQl7IHJldHVybihYVE9BU1QpOyB9Ci0iRk9SQ0UiCQkJeyByZXR1cm4o WEZPUkNFKTsgfQotIk5PVCIJCQl7IHJldHVybihYTk9UKTsgfQotIk5VTEwi CQkJeyByZXR1cm4oWE5VTEwpOyB9CisiZGVjbGFyZSIJCXsgcmV0dXJuIFhE RUNMQVJFOyB9CisiYnVpbGQiCQkJeyByZXR1cm4gWEJVSUxEOyB9CisiaW5k aWNlcyIJCXsgcmV0dXJuIElORElDRVM7IH0KKyJ1bmlxdWUiCQl7IHJldHVy biBVTklRVUU7IH0KKyJpbmRleCIJCQl7IHJldHVybiBJTkRFWDsgfQorIm9u IgkJCXsgcmV0dXJuIE9OOyB9CisidXNpbmciCQkJeyByZXR1cm4gVVNJTkc7 IH0KKyJ0b2FzdCIJCQl7IHJldHVybiBYVE9BU1Q7IH0KKyJGT1JDRSIJCQl7 IHJldHVybiBYRk9SQ0U7IH0KKyJOT1QiCQkJeyByZXR1cm4gWE5PVDsgfQor Ik5VTEwiCQkJeyByZXR1cm4gWE5VTEw7IH0KIAoge2FycmF5aWR9CQl7CiAJ CQkJCXl5bHZhbC5zdHIgPSBNYXBBcnJheVR5cGVOYW1lKHl5dGV4dCk7Ci0J CQkJCXJldHVybihJRCk7CisJCQkJCXJldHVybiBJRDsKIAkJCQl9CiB7aWR9 CQkJewogCQkJCQl5eWx2YWwuc3RyID0gc2NhbnN0cih5eXRleHQpOwotCQkJ CQlyZXR1cm4oSUQpOworCQkJCQlyZXR1cm4gSUQ7CiAJCQkJfQoge3NpZH0J CQl7CiAJCQkJCXl5dGV4dFtzdHJsZW4oeXl0ZXh0KS0xXSA9ICdcMCc7IC8q IHN0cmlwIG9mZiBxdW90ZXMgKi8KIAkJCQkJeXlsdmFsLnN0ciA9IHNjYW5z dHIoeXl0ZXh0KzEpOwogCQkJCQl5eXRleHRbc3RybGVuKHl5dGV4dCldID0g JyInOyAvKiByZXN0b3JlIHF1b3RlcyAqLwotCQkJCQlyZXR1cm4oSUQpOwor CQkJCQlyZXR1cm4gSUQ7CiAJCQkJfQogCiAuCQkJCXsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3RzZWFyY2gvc3BlbGwuYyBiL3NyYy9iYWNrZW5kL3Rz ZWFyY2gvc3BlbGwuYwppbmRleCAxMDIwMjUwNDkwLi42NTI3YzczNzMxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3NwZWxsLmMKKysrIGIv c3JjL2JhY2tlbmQvdHNlYXJjaC9zcGVsbC5jCkBAIC0xOTUsMTQgKzE5NSwx NCBAQCBzdGF0aWMgY2hhciAqVm9pZFN0cmluZyA9ICIiOwogc3RhdGljIGlu dAogY21wc3BlbGwoY29uc3Qgdm9pZCAqczEsIGNvbnN0IHZvaWQgKnMyKQog ewotCXJldHVybiAoc3RyY21wKCgqKFNQRUxMICpjb25zdCAqKSBzMSktPndv cmQsICgqKFNQRUxMICpjb25zdCAqKSBzMiktPndvcmQpKTsKKwlyZXR1cm4g c3RyY21wKCgqKFNQRUxMICpjb25zdCAqKSBzMSktPndvcmQsICgqKFNQRUxM ICpjb25zdCAqKSBzMiktPndvcmQpOwogfQogCiBzdGF0aWMgaW50CiBjbXBz cGVsbGFmZml4KGNvbnN0IHZvaWQgKnMxLCBjb25zdCB2b2lkICpzMikKIHsK LQlyZXR1cm4gKHN0cmNtcCgoKihTUEVMTCAqY29uc3QgKikgczEpLT5wLmZs YWcsCi0JCQkJICAgKCooU1BFTEwgKmNvbnN0ICopIHMyKS0+cC5mbGFnKSk7 CisJcmV0dXJuIHN0cmNtcCgoKihTUEVMTCAqY29uc3QgKikgczEpLT5wLmZs YWcsCisJCQkJICAgKCooU1BFTEwgKmNvbnN0ICopIHMyKS0+cC5mbGFnKTsK IH0KIAogc3RhdGljIGludApAQCAtMjI0MCw5ICsyMjQwLDkgQEAgTm9ybWFs aXplU3ViV29yZChJc3BlbGxEaWN0ICpDb25mLCBjaGFyICp3b3JkLCBpbnQg ZmxhZykKIAlpZiAoY3VyID09IGZvcm1zKQogCXsKIAkJcGZyZWUoZm9ybXMp OwotCQlyZXR1cm4gKE5VTEwpOworCQlyZXR1cm4gTlVMTDsKIAl9Ci0JcmV0 dXJuIChmb3Jtcyk7CisJcmV0dXJuIGZvcm1zOwogfQogCiB0eXBlZGVmIHN0 cnVjdCBTcGxpdFZhcgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2luZXRfY2lkcl9udG9wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv aW5ldF9jaWRyX250b3AuYwppbmRleCAyOTczZDU2NjU4Li4zMGIzNjczNzg5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW5ldF9jaWRy X250b3AuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvaW5ldF9jaWRy X250b3AuYwpAQCAtNTgsMTIgKzU4LDEyIEBAIGluZXRfY2lkcl9udG9wKGlu dCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBpbnQgYml0cywgY2hhciAqZHN0LCBz aXplX3Qgc2l6ZSkKIAlzd2l0Y2ggKGFmKQogCXsKIAkJY2FzZSBQR1NRTF9B Rl9JTkVUOgotCQkJcmV0dXJuIChpbmV0X2NpZHJfbnRvcF9pcHY0KHNyYywg Yml0cywgZHN0LCBzaXplKSk7CisJCQlyZXR1cm4gaW5ldF9jaWRyX250b3Bf aXB2NChzcmMsIGJpdHMsIGRzdCwgc2l6ZSk7CiAJCWNhc2UgUEdTUUxfQUZf SU5FVDY6Ci0JCQlyZXR1cm4gKGluZXRfY2lkcl9udG9wX2lwdjYoc3JjLCBi aXRzLCBkc3QsIHNpemUpKTsKKwkJCXJldHVybiBpbmV0X2NpZHJfbnRvcF9p cHY2KHNyYywgYml0cywgZHN0LCBzaXplKTsKIAkJZGVmYXVsdDoKIAkJCWVy cm5vID0gRUFGTk9TVVBQT1JUOwotCQkJcmV0dXJuIChOVUxMKTsKKwkJCXJl dHVybiBOVUxMOwogCX0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCBpbmV0X2Np ZHJfbnRvcF9pcHY0KGNvbnN0IHVfY2hhciAqc3JjLCBpbnQgYml0cywgY2hh ciAqZHN0LCBzaXplX3Qgc2l6ZSkKIAlpZiAoYml0cyA8IDAgfHwgYml0cyA+ IDMyKQogCXsKIAkJZXJybm8gPSBFSU5WQUw7Ci0JCXJldHVybiAoTlVMTCk7 CisJCXJldHVybiBOVUxMOwogCX0KIAogCWlmIChiaXRzID09IDApCkBAIC0x MzcsMTEgKzEzNywxMSBAQCBpbmV0X2NpZHJfbnRvcF9pcHY0KGNvbnN0IHVf Y2hhciAqc3JjLCBpbnQgYml0cywgY2hhciAqZHN0LCBzaXplX3Qgc2l6ZSkK IAlpZiAoc2l6ZSA8PSBzaXplb2YgIi8zMiIpCiAJCWdvdG8gZW1zZ3NpemU7 CiAJZHN0ICs9IFNQUklOVEYoKGRzdCwgIi8ldSIsIGJpdHMpKTsKLQlyZXR1 cm4gKG9kc3QpOworCXJldHVybiBvZHN0OwogCiBlbXNnc2l6ZToKIAllcnJu byA9IEVNU0dTSVpFOwotCXJldHVybiAoTlVMTCk7CisJcmV0dXJuIE5VTEw7 CiB9CiAKIC8qCkBAIC0xODIsNyArMTgyLDcgQEAgaW5ldF9jaWRyX250b3Bf aXB2Nihjb25zdCB1X2NoYXIgKnNyYywgaW50IGJpdHMsIGNoYXIgKmRzdCwg c2l6ZV90IHNpemUpCiAJaWYgKGJpdHMgPCAwIHx8IGJpdHMgPiAxMjgpCiAJ ewogCQllcnJubyA9IEVJTlZBTDsKLQkJcmV0dXJuIChOVUxMKTsKKwkJcmV0 dXJuIE5VTEw7CiAJfQogCiAJY3AgPSBvdXRidWY7CkBAIC0yODYsOSArMjg2 LDkgQEAgaW5ldF9jaWRyX250b3BfaXB2Nihjb25zdCB1X2NoYXIgKnNyYywg aW50IGJpdHMsIGNoYXIgKmRzdCwgc2l6ZV90IHNpemUpCiAJCWdvdG8gZW1z Z3NpemU7CiAJc3RyY3B5KGRzdCwgb3V0YnVmKTsKIAotCXJldHVybiAoZHN0 KTsKKwlyZXR1cm4gZHN0OwogCiBlbXNnc2l6ZToKIAllcnJubyA9IEVNU0dT SVpFOwotCXJldHVybiAoTlVMTCk7CisJcmV0dXJuIE5VTEw7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW5ldF9uZXRfcHRvbi5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2luZXRfbmV0X3B0b24uYwppbmRl eCBiZTc4OGQzN2NkLi42ZjNlY2UxMjA5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvaW5ldF9uZXRfcHRvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9pbmV0X25ldF9wdG9uLmMKQEAgLTczLDcgKzczLDcg QEAgaW5ldF9uZXRfcHRvbihpbnQgYWYsIGNvbnN0IGNoYXIgKnNyYywgdm9p ZCAqZHN0LCBzaXplX3Qgc2l6ZSkKIAkJCQlpbmV0X2NpZHJfcHRvbl9pcHY2 KHNyYywgZHN0LCBzaXplKTsKIAkJZGVmYXVsdDoKIAkJCWVycm5vID0gRUFG Tk9TVVBQT1JUOwotCQkJcmV0dXJuICgtMSk7CisJCQlyZXR1cm4gLTE7CiAJ fQogfQogCkBAIC0yMjgsMTUgKzIyOCwxNSBAQCBpbmV0X2NpZHJfcHRvbl9p cHY0KGNvbnN0IGNoYXIgKnNyYywgdV9jaGFyICpkc3QsIHNpemVfdCBzaXpl KQogCQkJZ290byBlbXNnc2l6ZTsKIAkJKmRzdCsrID0gJ1wwJzsKIAl9Ci0J cmV0dXJuIChiaXRzKTsKKwlyZXR1cm4gYml0czsKIAogZW5vZW50OgogCWVy cm5vID0gRU5PRU5UOwotCXJldHVybiAoLTEpOworCXJldHVybiAtMTsKIAog ZW1zZ3NpemU6CiAJZXJybm8gPSBFTVNHU0laRTsKLQlyZXR1cm4gKC0xKTsK KwlyZXR1cm4gLTE7CiB9CiAKIC8qCkBAIC0zMzgsMTEgKzMzOCwxMSBAQCBp bmV0X25ldF9wdG9uX2lwdjQoY29uc3QgY2hhciAqc3JjLCB1X2NoYXIgKmRz dCkKIAogZW5vZW50OgogCWVycm5vID0gRU5PRU5UOwotCXJldHVybiAoLTEp OworCXJldHVybiAtMTsKIAogZW1zZ3NpemU6CiAJZXJybm8gPSBFTVNHU0la RTsKLQlyZXR1cm4gKC0xKTsKKwlyZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBp bnQKQEAgLTM2MywxOSArMzYzLDE5IEBAIGdldGJpdHMoY29uc3QgY2hhciAq c3JjLCBpbnQgKmJpdHNwKQogCQlpZiAocGNoICE9IE5VTEwpCiAJCXsKIAkJ CWlmIChuKysgIT0gMCAmJiB2YWwgPT0gMCkJLyogbm8gbGVhZGluZyB6ZXJv cyAqLwotCQkJCXJldHVybiAoMCk7CisJCQkJcmV0dXJuIDA7CiAJCQl2YWwg Kj0gMTA7CiAJCQl2YWwgKz0gKHBjaCAtIGRpZ2l0cyk7CiAJCQlpZiAodmFs ID4gMTI4KQkJLyogcmFuZ2UgKi8KLQkJCQlyZXR1cm4gKDApOworCQkJCXJl dHVybiAwOwogCQkJY29udGludWU7CiAJCX0KLQkJcmV0dXJuICgwKTsKKwkJ cmV0dXJuIDA7CiAJfQogCWlmIChuID09IDApCi0JCXJldHVybiAoMCk7CisJ CXJldHVybiAwOwogCSpiaXRzcCA9IHZhbDsKLQlyZXR1cm4gKDEpOworCXJl dHVybiAxOwogfQogCiBzdGF0aWMgaW50CkBAIC0zOTcsMzIgKzM5NywzMiBA QCBnZXR2NChjb25zdCBjaGFyICpzcmMsIHVfY2hhciAqZHN0LCBpbnQgKmJp dHNwKQogCQlpZiAocGNoICE9IE5VTEwpCiAJCXsKIAkJCWlmIChuKysgIT0g MCAmJiB2YWwgPT0gMCkJLyogbm8gbGVhZGluZyB6ZXJvcyAqLwotCQkJCXJl dHVybiAoMCk7CisJCQkJcmV0dXJuIDA7CiAJCQl2YWwgKj0gMTA7CiAJCQl2 YWwgKz0gKHBjaCAtIGRpZ2l0cyk7CiAJCQlpZiAodmFsID4gMjU1KQkJLyog cmFuZ2UgKi8KLQkJCQlyZXR1cm4gKDApOworCQkJCXJldHVybiAwOwogCQkJ Y29udGludWU7CiAJCX0KIAkJaWYgKGNoID09ICcuJyB8fCBjaCA9PSAnLycp CiAJCXsKIAkJCWlmIChkc3QgLSBvZHN0ID4gMykgLyogdG9vIG1hbnkgb2N0 ZXRzPyAqLwotCQkJCXJldHVybiAoMCk7CisJCQkJcmV0dXJuIDA7CiAJCQkq ZHN0KysgPSB2YWw7CiAJCQlpZiAoY2ggPT0gJy8nKQotCQkJCXJldHVybiAo Z2V0Yml0cyhzcmMsIGJpdHNwKSk7CisJCQkJcmV0dXJuIGdldGJpdHMoc3Jj LCBiaXRzcCk7CiAJCQl2YWwgPSAwOwogCQkJbiA9IDA7CiAJCQljb250aW51 ZTsKIAkJfQotCQlyZXR1cm4gKDApOworCQlyZXR1cm4gMDsKIAl9CiAJaWYg KG4gPT0gMCkKLQkJcmV0dXJuICgwKTsKKwkJcmV0dXJuIDA7CiAJaWYgKGRz dCAtIG9kc3QgPiAzKQkJCS8qIHRvbyBtYW55IG9jdGV0cz8gKi8KLQkJcmV0 dXJuICgwKTsKKwkJcmV0dXJuIDA7CiAJKmRzdCsrID0gdmFsOwotCXJldHVy biAoMSk7CisJcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1Miwx MyArNTUyLDEzIEBAIGluZXRfY2lkcl9wdG9uX2lwdjYoY29uc3QgY2hhciAq c3JjLCB1X2NoYXIgKmRzdCwgc2l6ZV90IHNpemUpCiAJICovCiAJbWVtY3B5 KGRzdCwgdG1wLCBOU19JTjZBRERSU1opOwogCi0JcmV0dXJuIChiaXRzKTsK KwlyZXR1cm4gYml0czsKIAogZW5vZW50OgogCWVycm5vID0gRU5PRU5UOwot CXJldHVybiAoLTEpOworCXJldHVybiAtMTsKIAogZW1zZ3NpemU6CiAJZXJy bm8gPSBFTVNHU0laRTsKLQlyZXR1cm4gKC0xKTsKKwlyZXR1cm4gLTE7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaXN0aWR4 LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaXN0aWR4LmMKaW5kZXgg N2NlMjY5OWI1Yy4uZDhiODZmNjM5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzZ2lzdGlkeC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90c2dpc3RpZHguYwpAQCAtMzE3LDE0ICszMTcsMTQgQEAgY2hl Y2tjb25kaXRpb25fYXJyKHZvaWQgKmNoZWNrdmFsLCBRdWVyeU9wZXJhbmQg KnZhbCwgRXhlY1BocmFzZURhdGEgKmRhdGEpCiAJewogCQlTdG9wTWlkZGxl ID0gU3RvcExvdyArIChTdG9wSGlnaCAtIFN0b3BMb3cpIC8gMjsKIAkJaWYg KCpTdG9wTWlkZGxlID09IHZhbC0+dmFsY3JjKQotCQkJcmV0dXJuICh0cnVl KTsKKwkJCXJldHVybiB0cnVlOwogCQllbHNlIGlmICgqU3RvcE1pZGRsZSA8 IHZhbC0+dmFsY3JjKQogCQkJU3RvcExvdyA9IFN0b3BNaWRkbGUgKyAxOwog CQllbHNlCiAJCQlTdG9wSGlnaCA9IFN0b3BNaWRkbGU7CiAJfQogCi0JcmV0 dXJuIChmYWxzZSk7CisJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9v bApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWIvVW5pY29kZS9j b252dXRpbHMucG0gYi9zcmMvYmFja2VuZC91dGlscy9tYi9Vbmljb2RlL2Nv bnZ1dGlscy5wbQppbmRleCA0M2NhZGY1MzAzLi4yMmQwMmNhNDg1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tYi9Vbmljb2RlL2NvbnZ1dGls cy5wbQorKysgYi9zcmMvYmFja2VuZC91dGlscy9tYi9Vbmljb2RlL2NvbnZ1 dGlscy5wbQpAQCAtODEyLDcgKzgxMiw3IEBAIHN1YiB1Y3MydXRmCiAJCSAg KCgoKCR1Y3MgJiAweDNmZmZmKSA+PiAxMikgfCAweDgwKSA8PCAxNikgfAog CQkgICgoKCgkdWNzICYgMHgwZmMwKSA+PiA2KSB8IDB4ODApIDw8IDgpIHwg KCgkdWNzICYgMHgwMDNmKSB8IDB4ODApOwogCX0KLQlyZXR1cm4gKCR1dGYp OworCXJldHVybiAkdXRmOwogfQogCiAxOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWIvY29udmVyc2lvbl9wcm9jcy9ldWNfdHdfYW5kX2Jp ZzUvYmlnNS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIvY29udmVyc2lvbl9w cm9jcy9ldWNfdHdfYW5kX2JpZzUvYmlnNS5jCmluZGV4IDFkOWIxMGY4YTcu LjY4Zjc2YWE4Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21i L2NvbnZlcnNpb25fcHJvY3MvZXVjX3R3X2FuZF9iaWc1L2JpZzUuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9tYi9jb252ZXJzaW9uX3Byb2NzL2V1Y190 d19hbmRfYmlnNS9iaWc1LmMKQEAgLTM2MSwxNCArMzYxLDE0IEBAIENOU3Rv QklHNSh1bnNpZ25lZCBzaG9ydCBjbnMsIHVuc2lnbmVkIGNoYXIgbGMpCiAJ CQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIyYzMpIC8gKHNpemVvZih1bnNp Z25lZCBzaG9ydCkgKiAyKTsgaSsrKQogCQkJewogCQkJCWlmIChiMmMzW2ld WzFdID09IGNucykKLQkJCQkJcmV0dXJuIChiMmMzW2ldWzBdKTsKKwkJCQkJ cmV0dXJuIGIyYzNbaV1bMF07CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBM Q19DTlMxMTY0M180OgogCQkJZm9yIChpID0gMDsgaSA8IHNpemVvZihiMWM0 KSAvIChzaXplb2YodW5zaWduZWQgc2hvcnQpICogMik7IGkrKykKIAkJCXsK IAkJCQlpZiAoYjFjNFtpXVsxXSA9PSBjbnMpCi0JCQkJCXJldHVybiAoYjFj NFtpXVswXSk7CisJCQkJCXJldHVybiBiMWM0W2ldWzBdOwogCQkJfQogCQlk ZWZhdWx0OgogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9lY3BnL2NvbXBhdGxpYi9pbmZvcm1peC5jIGIvc3JjL2ludGVyZmFjZXMv ZWNwZy9jb21wYXRsaWIvaW5mb3JtaXguYwppbmRleCAyNTA4ZWQ5YjhmLi5l OWJjYjRjZGUyIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL2Nv bXBhdGxpYi9pbmZvcm1peC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv Y29tcGF0bGliL2luZm9ybWl4LmMKQEAgLTc5LDcgKzc5LDcgQEAgZGVjY2Fs bDIoZGVjaW1hbCAqYXJnMSwgZGVjaW1hbCAqYXJnMiwgaW50ICgqcHRyKSAo bnVtZXJpYyAqLCBudW1lcmljICopKQogCVBHVFlQRVNudW1lcmljX2ZyZWUo YTEpOwogCVBHVFlQRVNudW1lcmljX2ZyZWUoYTIpOwogCi0JcmV0dXJuIChp KTsKKwlyZXR1cm4gaTsKIH0KIAogc3RhdGljIGludApAQCAtMTQzLDcgKzE0 Myw3IEBAIGRlY2NhbGwzKGRlY2ltYWwgKmFyZzEsIGRlY2ltYWwgKmFyZzIs IGRlY2ltYWwgKnJlc3VsdCwgaW50ICgqcHRyKSAobnVtZXJpYyAqLCBuCiAJ UEdUWVBFU251bWVyaWNfZnJlZShhMSk7CiAJUEdUWVBFU251bWVyaWNfZnJl ZShhMik7CiAKLQlyZXR1cm4gKGkpOworCXJldHVybiBpOwogfQogCiAvKiB3 ZSBzdGFydCB3aXRoIHRoZSBudW1lcmljIGZ1bmN0aW9ucyAqLwpAQCAtMTY2 LDcgKzE2Niw3IEBAIGRlY2FkZChkZWNpbWFsICphcmcxLCBkZWNpbWFsICph cmcyLCBkZWNpbWFsICpzdW0pCiBpbnQKIGRlY2NtcChkZWNpbWFsICphcmcx LCBkZWNpbWFsICphcmcyKQogewotCXJldHVybiAoZGVjY2FsbDIoYXJnMSwg YXJnMiwgUEdUWVBFU251bWVyaWNfY21wKSk7CisJcmV0dXJuIGRlY2NhbGwy KGFyZzEsIGFyZzIsIFBHVFlQRVNudW1lcmljX2NtcCk7CiB9CiAKIHZvaWQK QEAgLTI2MSw3ICsyNjEsNyBAQCBkZWNjdmRibChkb3VibGUgZGJsLCBkZWNp bWFsICpucCkKIAkJcmVzdWx0ID0gUEdUWVBFU251bWVyaWNfdG9fZGVjaW1h bChucmVzLCBucCk7CiAKIAlQR1RZUEVTbnVtZXJpY19mcmVlKG5yZXMpOwot CXJldHVybiAocmVzdWx0KTsKKwlyZXR1cm4gcmVzdWx0OwogfQogCiBpbnQK QEAgLTI4Myw3ICsyODMsNyBAQCBkZWNjdmludChpbnQgaW4sIGRlY2ltYWwg Km5wKQogCQlyZXN1bHQgPSBQR1RZUEVTbnVtZXJpY190b19kZWNpbWFsKG5y ZXMsIG5wKTsKIAogCVBHVFlQRVNudW1lcmljX2ZyZWUobnJlcyk7Ci0JcmV0 dXJuIChyZXN1bHQpOworCXJldHVybiByZXN1bHQ7CiB9CiAKIGludApAQCAt MzA1LDcgKzMwNSw3IEBAIGRlY2N2bG9uZyhsb25nIGxuZywgZGVjaW1hbCAq bnApCiAJCXJlc3VsdCA9IFBHVFlQRVNudW1lcmljX3RvX2RlY2ltYWwobnJl cywgbnApOwogCiAJUEdUWVBFU251bWVyaWNfZnJlZShucmVzKTsKLQlyZXR1 cm4gKHJlc3VsdCk7CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogaW50CkBAIC01 OTgsNyArNTk4LDcgQEAgcm1keWp1bChzaG9ydCBtZHlbM10sIGRhdGUgKiBk KQogaW50CiByZGF5b2Z3ZWVrKGRhdGUgZCkKIHsKLQlyZXR1cm4gKFBHVFlQ RVNkYXRlX2RheW9md2VlayhkKSk7CisJcmV0dXJuIFBHVFlQRVNkYXRlX2Rh eW9md2VlayhkKTsKIH0KIAogLyogQW5kIHRoZSBkYXRldGltZSBzdHVmZiAq LwpAQCAtMTA0OSw1ICsxMDQ5LDUgQEAgcnNldG51bGwoaW50IHQsIGNoYXIg KnB0cikKIGludAogcmlzbnVsbChpbnQgdCwgY2hhciAqcHRyKQogewotCXJl dHVybiAoRUNQR2lzX25vaW5kX251bGwodCwgcHRyKSk7CisJcmV0dXJuIEVD UEdpc19ub2luZF9udWxsKHQsIHB0cik7CiB9CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvY29ubmVjdC5jIGIvc3JjL2ludGVy ZmFjZXMvZWNwZy9lY3BnbGliL2Nvbm5lY3QuYwppbmRleCAwNzE2YWJkZDdl Li43MWZhMjc1MzYzIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3Bn L2VjcGdsaWIvY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv ZWNwZ2xpYi9jb25uZWN0LmMKQEAgLTY3LDcgKzY3LDcgQEAgZWNwZ19nZXRf Y29ubmVjdGlvbl9ucihjb25zdCBjaGFyICpjb25uZWN0aW9uX25hbWUpCiAJ CXJldCA9IGNvbjsKIAl9CiAKLQlyZXR1cm4gKHJldCk7CisJcmV0dXJuIHJl dDsKIH0KIAogc3RydWN0IGNvbm5lY3Rpb24gKgpAQCAtMTA2LDcgKzEwNiw3 IEBAIGVjcGdfZ2V0X2Nvbm5lY3Rpb24oY29uc3QgY2hhciAqY29ubmVjdGlv bl9uYW1lKQogI2VuZGlmCiAJfQogCi0JcmV0dXJuIChyZXQpOworCXJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjgsNyArMTY4LDcgQEAg RUNQR3NldGNvbW1pdChpbnQgbGluZW5vLCBjb25zdCBjaGFyICptb2RlLCBj b25zdCBjaGFyICpjb25uZWN0aW9uX25hbWUpCiAJUEdyZXN1bHQgICAqcmVz dWx0czsKIAogCWlmICghZWNwZ19pbml0KGNvbiwgY29ubmVjdGlvbl9uYW1l LCBsaW5lbm8pKQotCQlyZXR1cm4gKGZhbHNlKTsKKwkJcmV0dXJuIGZhbHNl OwogCiAJZWNwZ19sb2coIkVDUEdzZXRjb21taXQgb24gbGluZSAlZDogYWN0 aW9uIFwiJXNcIjsgY29ubmVjdGlvbiBcIiVzXCJcbiIsIGxpbmVubywgbW9k ZSwgY29uLT5uYW1lKTsKIApAQCAtMjA0LDcgKzIwNCw3IEBAIEVDUEdzZXRj b25uKGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSkK IAlzdHJ1Y3QgY29ubmVjdGlvbiAqY29uID0gZWNwZ19nZXRfY29ubmVjdGlv bihjb25uZWN0aW9uX25hbWUpOwogCiAJaWYgKCFlY3BnX2luaXQoY29uLCBj b25uZWN0aW9uX25hbWUsIGxpbmVubykpCi0JCXJldHVybiAoZmFsc2UpOwor CQlyZXR1cm4gZmFsc2U7CiAKICNpZmRlZiBFTkFCTEVfVEhSRUFEX1NBRkVU WQogCXB0aHJlYWRfc2V0c3BlY2lmaWMoYWN0dWFsX2Nvbm5lY3Rpb25fa2V5 LCBjb24pOwpAQCAtNjc1LDcgKzY3NSw3IEBAIEVDUEdkaXNjb25uZWN0KGlu dCBsaW5lbm8sIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSkKIAl7CiAJ CWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX09VVF9PRl9NRU1PUlksCiAJCQkJ ICAgRUNQR19TUUxTVEFURV9FQ1BHX09VVF9PRl9NRU1PUlksIE5VTEwpOwot CQlyZXR1cm4gKGZhbHNlKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogI2lm ZGVmIEVOQUJMRV9USFJFQURfU0FGRVRZCkBAIC03MDIsNyArNzAyLDcgQEAg RUNQR2Rpc2Nvbm5lY3QoaW50IGxpbmVubywgY29uc3QgY2hhciAqY29ubmVj dGlvbl9uYW1lKQogI2lmZGVmIEVOQUJMRV9USFJFQURfU0FGRVRZCiAJCQlw dGhyZWFkX211dGV4X3VubG9jaygmY29ubmVjdGlvbnNfbXV0ZXgpOwogI2Vu ZGlmCi0JCQlyZXR1cm4gKGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsKIAkJ fQogCQllbHNlCiAJCQllY3BnX2ZpbmlzaChjb24pOwpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2RhdGEuYyBiL3NyYy9pbnRl cmZhY2VzL2VjcGcvZWNwZ2xpYi9kYXRhLmMKaW5kZXggNWRiZmRlZDg3My4u YTJmMzkxNmYzOCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9l Y3BnbGliL2RhdGEuYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGds aWIvZGF0YS5jCkBAIC0xMzQsNyArMTM0LDcgQEAgZWNwZ19nZXRfZGF0YShj b25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90dXBsZSwgaW50IGFj dF9maWVsZCwgaW50IGxpbmVubywKIAl7CiAJCWVjcGdfcmFpc2UobGluZW5v LCBFQ1BHX09VVF9PRl9NRU1PUlksCiAJCQkJICAgRUNQR19TUUxTVEFURV9F Q1BHX09VVF9PRl9NRU1PUlksIE5VTEwpOwotCQlyZXR1cm4gKGZhbHNlKTsK KwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0xNTYsNyArMTU2LDcg QEAgZWNwZ19nZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50 IGFjdF90dXBsZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVubywKIAkJICog YXQgbGVhc3Qgb25lIHR1cGxlLCBidXQgbGV0J3MgcGxheSBpdCBzYWZlLgog CQkgKi8KIAkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfTk9UX0ZPVU5ELCBF Q1BHX1NRTFNUQVRFX05PX0RBVEEsIE5VTEwpOwotCQlyZXR1cm4gKGZhbHNl KTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIFdlIHdpbGwgaGF2ZSB0 byBkZWNvZGUgdGhlIHZhbHVlICovCkBAIC0yMDQsNyArMjA0LDcgQEAgZWNw Z19nZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90 dXBsZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVubywKIAkJCQkJZWNwZ19y YWlzZShsaW5lbm8sIEVDUEdfTUlTU0lOR19JTkRJQ0FUT1IsCiAJCQkJCQkJ ICAgRUNQR19TUUxTVEFURV9OVUxMX1ZBTFVFX05PX0lORElDQVRPUl9QQVJB TUVURVIsCiAJCQkJCQkJICAgTlVMTCk7Ci0JCQkJCXJldHVybiAoZmFsc2Up OworCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQogCQkJfQogCQkJYnJlYWs7 CkBAIC0yMTIsMTIgKzIxMiwxMiBAQCBlY3BnX2dldF9kYXRhKGNvbnN0IFBH cmVzdWx0ICpyZXN1bHRzLCBpbnQgYWN0X3R1cGxlLCBpbnQgYWN0X2ZpZWxk LCBpbnQgbGluZW5vLAogCQkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfVU5T VVBQT1JURUQsCiAJCQkJCSAgIEVDUEdfU1FMU1RBVEVfRUNQR19JTlRFUk5B TF9FUlJPUiwKIAkJCQkJICAgZWNwZ190eXBlX25hbWUoaW5kX3R5cGUpKTsK LQkJCXJldHVybiAoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwogCQkJYnJl YWs7CiAJfQogCiAJaWYgKHZhbHVlX2Zvcl9pbmRpY2F0b3IgPT0gLTEpCi0J CXJldHVybiAodHJ1ZSk7CisJCXJldHVybiB0cnVlOwogCiAJLyogbGV0J3Mg Y2hlY2sgaWYgaXQgcmVhbGx5IGlzIGFuIGFycmF5IGlmIGl0IHNob3VsZCBi ZSBvbmUgKi8KIAlpZiAoaXNhcnJheSA9PSBFQ1BHX0FSUkFZX0FSUkFZKQpA QCAtMjI2LDcgKzIyNiw3IEBAIGVjcGdfZ2V0X2RhdGEoY29uc3QgUEdyZXN1 bHQgKnJlc3VsdHMsIGludCBhY3RfdHVwbGUsIGludCBhY3RfZmllbGQsIGlu dCBsaW5lbm8sCiAJCXsKIAkJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX0RB VEFfTk9UX0FSUkFZLAogCQkJCQkgICBFQ1BHX1NRTFNUQVRFX0RBVEFUWVBF X01JU01BVENILCBOVUxMKTsKLQkJCXJldHVybiAoZmFsc2UpOworCQkJcmV0 dXJuIGZhbHNlOwogCQl9CiAKIAkJc3dpdGNoICh0eXBlKQpAQCAtMzA3LDcg KzMwNyw3IEBAIGVjcGdfZ2V0X2RhdGEoY29uc3QgUEdyZXN1bHQgKnJlc3Vs dHMsIGludCBhY3RfdHVwbGUsIGludCBhY3RfZmllbGQsIGludCBsaW5lbm8s CiAJCQkJCXsKIAkJCQkJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX0lOVF9G T1JNQVQsCiAJCQkJCQkJCSAgIEVDUEdfU1FMU1RBVEVfREFUQVRZUEVfTUlT TUFUQ0gsIHB2YWwpOwotCQkJCQkJcmV0dXJuIChmYWxzZSk7CisJCQkJCQly ZXR1cm4gZmFsc2U7CiAJCQkJCX0KIAkJCQkJcHZhbCA9IHNjYW5fbGVuZ3Ro OwogCkBAIC0zMzYsNyArMzM2LDcgQEAgZWNwZ19nZXRfZGF0YShjb25zdCBQ R3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90dXBsZSwgaW50IGFjdF9maWVs ZCwgaW50IGxpbmVubywKIAkJCQkJewogCQkJCQkJZWNwZ19yYWlzZShsaW5l bm8sIEVDUEdfVUlOVF9GT1JNQVQsCiAJCQkJCQkJCSAgIEVDUEdfU1FMU1RB VEVfREFUQVRZUEVfTUlTTUFUQ0gsIHB2YWwpOwotCQkJCQkJcmV0dXJuIChm YWxzZSk7CisJCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCX0KIAkJCQkJcHZh bCA9IHNjYW5fbGVuZ3RoOwogCkBAIC0zNjQsNyArMzY0LDcgQEAgZWNwZ19n ZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90dXBs ZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVubywKIAkJCQkJaWYgKGdhcmJh Z2VfbGVmdChpc2FycmF5LCBzY2FuX2xlbmd0aCwgY29tcGF0KSkKIAkJCQkJ ewogCQkJCQkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfSU5UX0ZPUk1BVCwg RUNQR19TUUxTVEFURV9EQVRBVFlQRV9NSVNNQVRDSCwgcHZhbCk7Ci0JCQkJ CQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJCXJldHVybiBmYWxzZTsKIAkJCQkJ fQogCQkJCQlwdmFsID0gc2Nhbl9sZW5ndGg7CiAKQEAgLTM3Niw3ICszNzYs NyBAQCBlY3BnX2dldF9kYXRhKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHRzLCBp bnQgYWN0X3R1cGxlLCBpbnQgYWN0X2ZpZWxkLCBpbnQgbGluZW5vLAogCQkJ CQlpZiAoZ2FyYmFnZV9sZWZ0KGlzYXJyYXksIHNjYW5fbGVuZ3RoLCBjb21w YXQpKQogCQkJCQl7CiAJCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19V SU5UX0ZPUk1BVCwgRUNQR19TUUxTVEFURV9EQVRBVFlQRV9NSVNNQVRDSCwg cHZhbCk7Ci0JCQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJCXJldHVybiBm YWxzZTsKIAkJCQkJfQogCQkJCQlwdmFsID0gc2Nhbl9sZW5ndGg7CiAKQEAg LTM5OSw3ICszOTksNyBAQCBlY3BnX2dldF9kYXRhKGNvbnN0IFBHcmVzdWx0 ICpyZXN1bHRzLCBpbnQgYWN0X3R1cGxlLCBpbnQgYWN0X2ZpZWxkLCBpbnQg bGluZW5vLAogCQkJCQl7CiAJCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQ R19GTE9BVF9GT1JNQVQsCiAJCQkJCQkJCSAgIEVDUEdfU1FMU1RBVEVfREFU QVRZUEVfTUlTTUFUQ0gsIHB2YWwpOwotCQkJCQkJcmV0dXJuIChmYWxzZSk7 CisJCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCX0KIAkJCQkJcHZhbCA9IHNj YW5fbGVuZ3RoOwogCkBAIC00MzgsNyArNDM4LDcgQEAgZWNwZ19nZXRfZGF0 YShjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90dXBsZSwgaW50 IGFjdF9maWVsZCwgaW50IGxpbmVubywKIAogCQkJCQllY3BnX3JhaXNlKGxp bmVubywgRUNQR19DT05WRVJUX0JPT0wsCiAJCQkJCQkJICAgRUNQR19TUUxT VEFURV9EQVRBVFlQRV9NSVNNQVRDSCwgcHZhbCk7Ci0JCQkJCXJldHVybiAo ZmFsc2UpOworCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCWJyZWFrOwogCiAJ CQkJY2FzZSBFQ1BHdF9jaGFyOgpAQCAtNTgxLDE0ICs1ODEsMTQgQEAgZWNw Z19nZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90 dXBsZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVubywKIAkJCQkJCQl7CiAJ CQkJCQkJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX09VVF9PRl9NRU1PUlks CiAJCQkJCQkJCQkJICAgRUNQR19TUUxTVEFURV9FQ1BHX09VVF9PRl9NRU1P UlksIE5VTEwpOwotCQkJCQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJCQkJ cmV0dXJuIGZhbHNlOwogCQkJCQkJCX0KIAkJCQkJCX0KIAkJCQkJCWVsc2UK IAkJCQkJCXsKIAkJCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19OVU1F UklDX0ZPUk1BVCwKIAkJCQkJCQkJCSAgIEVDUEdfU1FMU1RBVEVfREFUQVRZ UEVfTUlTTUFUQ0gsIHB2YWwpOwotCQkJCQkJCXJldHVybiAoZmFsc2UpOwor CQkJCQkJCXJldHVybiBmYWxzZTsKIAkJCQkJCX0KIAkJCQkJfQogCQkJCQll bHNlCkBAIC01OTgsNyArNTk4LDcgQEAgZWNwZ19nZXRfZGF0YShjb25zdCBQ R3Jlc3VsdCAqcmVzdWx0cywgaW50IGFjdF90dXBsZSwgaW50IGFjdF9maWVs ZCwgaW50IGxpbmVubywKIAkJCQkJCQlmcmVlKG5yZXMpOwogCQkJCQkJCWVj cGdfcmFpc2UobGluZW5vLCBFQ1BHX05VTUVSSUNfRk9STUFULAogCQkJCQkJ CQkJICAgRUNQR19TUUxTVEFURV9EQVRBVFlQRV9NSVNNQVRDSCwgcHZhbCk7 Ci0JCQkJCQkJcmV0dXJuIChmYWxzZSk7CisJCQkJCQkJcmV0dXJuIGZhbHNl OwogCQkJCQkJfQogCQkJCQl9CiAJCQkJCXB2YWwgPSBzY2FuX2xlbmd0aDsK QEAgLTYzNSw3ICs2MzUsNyBAQCBlY3BnX2dldF9kYXRhKGNvbnN0IFBHcmVz dWx0ICpyZXN1bHRzLCBpbnQgYWN0X3R1cGxlLCBpbnQgYWN0X2ZpZWxkLCBp bnQgbGluZW5vLAogCQkJCQkJCSAqLwogCQkJCQkJCWlyZXMgPSAoaW50ZXJ2 YWwgKikgZWNwZ19hbGxvYyhzaXplb2YoaW50ZXJ2YWwpLCBsaW5lbm8pOwog CQkJCQkJCWlmICghaXJlcykKLQkJCQkJCQkJcmV0dXJuIChmYWxzZSk7CisJ CQkJCQkJCXJldHVybiBmYWxzZTsKIAogCQkJCQkJCUVDUEdzZXRfbm9pbmRf bnVsbChFQ1BHdF9pbnRlcnZhbCwgaXJlcyk7CiAJCQkJCQl9CkBAIC02NDMs NyArNjQzLDcgQEAgZWNwZ19nZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVz dWx0cywgaW50IGFjdF90dXBsZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVu bywKIAkJCQkJCXsKIAkJCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19J TlRFUlZBTF9GT1JNQVQsCiAJCQkJCQkJCQkgICBFQ1BHX1NRTFNUQVRFX0RB VEFUWVBFX01JU01BVENILCBwdmFsKTsKLQkJCQkJCQlyZXR1cm4gKGZhbHNl KTsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCQl9CiAJCQkJCX0KIAkJ CQkJZWxzZQpAQCAtNjU2LDcgKzY1Niw3IEBAIGVjcGdfZ2V0X2RhdGEoY29u c3QgUEdyZXN1bHQgKnJlc3VsdHMsIGludCBhY3RfdHVwbGUsIGludCBhY3Rf ZmllbGQsIGludCBsaW5lbm8sCiAJCQkJCQkJZnJlZShpcmVzKTsKIAkJCQkJ CQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19JTlRFUlZBTF9GT1JNQVQsCiAJ CQkJCQkJCQkgICBFQ1BHX1NRTFNUQVRFX0RBVEFUWVBFX01JU01BVENILCBw dmFsKTsKLQkJCQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJCQlyZXR1cm4g ZmFsc2U7CiAJCQkJCQl9CiAJCQkJCX0KIAkJCQkJcHZhbCA9IHNjYW5fbGVu Z3RoOwpAQCAtNjkzLDcgKzY5Myw3IEBAIGVjcGdfZ2V0X2RhdGEoY29uc3Qg UEdyZXN1bHQgKnJlc3VsdHMsIGludCBhY3RfdHVwbGUsIGludCBhY3RfZmll bGQsIGludCBsaW5lbm8sCiAJCQkJCQl7CiAJCQkJCQkJZWNwZ19yYWlzZShs aW5lbm8sIEVDUEdfREFURV9GT1JNQVQsCiAJCQkJCQkJCQkgICBFQ1BHX1NR TFNUQVRFX0RBVEFUWVBFX01JU01BVENILCBwdmFsKTsKLQkJCQkJCQlyZXR1 cm4gKGZhbHNlKTsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCQl9CiAJ CQkJCX0KIAkJCQkJZWxzZQpAQCAtNzA1LDcgKzcwNSw3IEBAIGVjcGdfZ2V0 X2RhdGEoY29uc3QgUEdyZXN1bHQgKnJlc3VsdHMsIGludCBhY3RfdHVwbGUs IGludCBhY3RfZmllbGQsIGludCBsaW5lbm8sCiAJCQkJCQl7CiAJCQkJCQkJ ZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfREFURV9GT1JNQVQsCiAJCQkJCQkJ CQkgICBFQ1BHX1NRTFNUQVRFX0RBVEFUWVBFX01JU01BVENILCBwdmFsKTsK LQkJCQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7 CiAJCQkJCQl9CiAJCQkJCX0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIGVjcGdf Z2V0X2RhdGEoY29uc3QgUEdyZXN1bHQgKnJlc3VsdHMsIGludCBhY3RfdHVw bGUsIGludCBhY3RfZmllbGQsIGludCBsaW5lbm8sCiAJCQkJCQl7CiAJCQkJ CQkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfVElNRVNUQU1QX0ZPUk1BVCwK IAkJCQkJCQkJCSAgIEVDUEdfU1FMU1RBVEVfREFUQVRZUEVfTUlTTUFUQ0gs IHB2YWwpOwotCQkJCQkJCXJldHVybiAoZmFsc2UpOworCQkJCQkJCXJldHVy biBmYWxzZTsKIAkJCQkJCX0KIAkJCQkJfQogCQkJCQllbHNlCkBAIC03NTMs NyArNzUzLDcgQEAgZWNwZ19nZXRfZGF0YShjb25zdCBQR3Jlc3VsdCAqcmVz dWx0cywgaW50IGFjdF90dXBsZSwgaW50IGFjdF9maWVsZCwgaW50IGxpbmVu bywKIAkJCQkJCXsKIAkJCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19U SU1FU1RBTVBfRk9STUFULAogCQkJCQkJCQkJICAgRUNQR19TUUxTVEFURV9E QVRBVFlQRV9NSVNNQVRDSCwgcHZhbCk7Ci0JCQkJCQkJcmV0dXJuIChmYWxz ZSk7CisJCQkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCQkJfQogCQkJCQl9CiAK QEAgLTc2NSw3ICs3NjUsNyBAQCBlY3BnX2dldF9kYXRhKGNvbnN0IFBHcmVz dWx0ICpyZXN1bHRzLCBpbnQgYWN0X3R1cGxlLCBpbnQgYWN0X2ZpZWxkLCBp bnQgbGluZW5vLAogCQkJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19VTlNV UFBPUlRFRCwKIAkJCQkJCQkgICBFQ1BHX1NRTFNUQVRFX0VDUEdfSU5URVJO QUxfRVJST1IsCiAJCQkJCQkJICAgZWNwZ190eXBlX25hbWUodHlwZSkpOwot CQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQkJcmV0dXJuIGZhbHNlOwogCQkJ CQlicmVhazsKIAkJCX0KIAkJCWlmIChFQ1BHX0lTX0FSUkFZKGlzYXJyYXkp KQpAQCAtNzkxLDUgKzc5MSw1IEBAIGVjcGdfZ2V0X2RhdGEoY29uc3QgUEdy ZXN1bHQgKnJlc3VsdHMsIGludCBhY3RfdHVwbGUsIGludCBhY3RfZmllbGQs IGludCBsaW5lbm8sCiAJCX0KIAl9IHdoaWxlICgqcHZhbCAhPSAnXDAnICYm ICFhcnJheV9ib3VuZGFyeShpc2FycmF5LCAqcHZhbCkpOwogCi0JcmV0dXJu ICh0cnVlKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9kZXNjcmlwdG9yLmMgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL2VjcGdsaWIvZGVzY3JpcHRvci5jCmluZGV4IDFmYTAw Yjg5MmYuLmJkZDI1MTg0ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2VjcGcvZWNwZ2xpYi9kZXNjcmlwdG9yLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvZWNwZy9lY3BnbGliL2Rlc2NyaXB0b3IuYwpAQCAtMTUwLDEwICsxNTAs MTAgQEAgZ2V0X2ludF9pdGVtKGludCBsaW5lbm8sIHZvaWQgKnZhciwgZW51 bSBFQ1BHdHR5cGUgdmFydHlwZSwgaW50IHZhbHVlKQogCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQR19WQVJfTk9U X05VTUVSSUMsIEVDUEdfU1FMU1RBVEVfUkVTVFJJQ1RFRF9EQVRBX1RZUEVf QVRUUklCVVRFX1ZJT0xBVElPTiwgTlVMTCk7Ci0JCQlyZXR1cm4gKGZhbHNl KTsKKwkJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gKHRydWUpOwor CXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMTk1LDcgKzE5 NSw3IEBAIHNldF9pbnRfaXRlbShpbnQgbGluZW5vLCBpbnQgKnRhcmdldCwg Y29uc3Qgdm9pZCAqdmFyLCBlbnVtIEVDUEd0dHlwZSB2YXJ0eXBlKQogCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQ R19WQVJfTk9UX05VTUVSSUMsIEVDUEdfU1FMU1RBVEVfUkVTVFJJQ1RFRF9E QVRBX1RZUEVfQVRUUklCVVRFX1ZJT0xBVElPTiwgTlVMTCk7Ci0JCQlyZXR1 cm4gKGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlyZXR1cm4g dHJ1ZTsKQEAgLTIyOCwxNyArMjI4LDE3IEBAIGdldF9jaGFyX2l0ZW0oaW50 IGxpbmVubywgdm9pZCAqdmFyLCBlbnVtIEVDUEd0dHlwZSB2YXJ0eXBlLCBj aGFyICp2YWx1ZSwgaW50IHZhCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX1ZBUl9OT1RfQ0hBUiwgRUNQR19T UUxTVEFURV9SRVNUUklDVEVEX0RBVEFfVFlQRV9BVFRSSUJVVEVfVklPTEFU SU9OLCBOVUxMKTsKLQkJCXJldHVybiAoZmFsc2UpOworCQkJcmV0dXJuIGZh bHNlOwogCX0KIAotCXJldHVybiAodHJ1ZSk7CisJcmV0dXJuIHRydWU7CiB9 CiAKICNkZWZpbmUgUkVUVVJOX0lGX05PX0RBVEEJaWYgKG50dXBsZXMgPCAx KSBcCiAJCQkJeyBcCiAJCQkJCXZhX2VuZChhcmdzKTsgXAogCQkJCQllY3Bn X3JhaXNlKGxpbmVubywgRUNQR19OT1RfRk9VTkQsIEVDUEdfU1FMU1RBVEVf Tk9fREFUQSwgTlVMTCk7IFwKLQkJCQkJcmV0dXJuIChmYWxzZSk7IFwKKwkJ CQkJcmV0dXJuIGZhbHNlOyBcCiAJCQkJfQogCiBib29sCkBAIC0yNjUsNyAr MjY1LDcgQEAgRUNQR2dldF9kZXNjKGludCBsaW5lbm8sIGNvbnN0IGNoYXIg KmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAlpZiAoIUVDUEdyZXN1bHQp CiAJewogCQl2YV9lbmQoYXJncyk7Ci0JCXJldHVybiAoZmFsc2UpOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJbnR1cGxlcyA9IFBRbnR1cGxlcyhFQ1BH cmVzdWx0KTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBFQ1BHZ2V0X2Rlc2MoaW50 IGxpbmVubywgY29uc3QgY2hhciAqZGVzY19uYW1lLCBpbnQgaW5kZXgsLi4u KQogCXsKIAkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfSU5WQUxJRF9ERVND UklQVE9SX0lOREVYLCBFQ1BHX1NRTFNUQVRFX0lOVkFMSURfREVTQ1JJUFRP Ul9JTkRFWCwgTlVMTCk7CiAJCXZhX2VuZChhcmdzKTsKLQkJcmV0dXJuIChm YWxzZSk7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAllY3BnX2xvZygiRUNQ R2dldF9kZXNjOiByZWFkaW5nIGl0ZW1zIGZvciB0dXBsZSAlZFxuIiwgaW5k ZXgpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIEVDUEdnZXRfZGVzYyhpbnQgbGlu ZW5vLCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwuLi4pCiAJ CQkJaWYgKCFnZXRfY2hhcl9pdGVtKGxpbmVubywgdmFyLCB2YXJ0eXBlLCBQ UWZuYW1lKEVDUEdyZXN1bHQsIGluZGV4KSwgdmFyY2hhcnNpemUpKQogCQkJ CXsKIAkJCQkJdmFfZW5kKGFyZ3MpOwotCQkJCQlyZXR1cm4gKGZhbHNlKTsK KwkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAogCQkJCWVjcGdfbG9nKCJF Q1BHZ2V0X2Rlc2M6IE5BTUUgPSAlc1xuIiwgUFFmbmFtZShFQ1BHcmVzdWx0 LCBpbmRleCkpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIEVDUEdnZXRfZGVzYyhp bnQgbGluZW5vLCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwu Li4pCiAJCQkJaWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCB2YXIsIHZhcnR5 cGUsIDEpKQogCQkJCXsKIAkJCQkJdmFfZW5kKGFyZ3MpOwotCQkJCQlyZXR1 cm4gKGZhbHNlKTsKKwkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAogCQkJ CWJyZWFrOwpAQCAtMzUyLDcgKzM1Miw3IEBAIEVDUEdnZXRfZGVzYyhpbnQg bGluZW5vLCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwuLi4p CiAJCQkJaWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCB2YXIsIHZhcnR5cGUs IDApKQogCQkJCXsKIAkJCQkJdmFfZW5kKGFyZ3MpOwotCQkJCQlyZXR1cm4g KGZhbHNlKTsKKwkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAogCQkJCWJy ZWFrOwpAQCAtMzYxLDcgKzM2MSw3IEBAIEVDUEdnZXRfZGVzYyhpbnQgbGlu ZW5vLCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwuLi4pCiAJ CQkJaWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCB2YXIsIHZhcnR5cGUsIChQ UWZtb2QoRUNQR3Jlc3VsdCwgaW5kZXgpIC0gVkFSSERSU1opICYgMHhmZmZm KSkKIAkJCQl7CiAJCQkJCXZhX2VuZChhcmdzKTsKLQkJCQkJcmV0dXJuIChm YWxzZSk7CisJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAKIAkJCQllY3Bn X2xvZygiRUNQR2dldF9kZXNjOiBTQ0FMRSA9ICVkXG4iLCAoUFFmbW9kKEVD UEdyZXN1bHQsIGluZGV4KSAtIFZBUkhEUlNaKSAmIDB4ZmZmZik7CkBAIC0z NzEsNyArMzcxLDcgQEAgRUNQR2dldF9kZXNjKGludCBsaW5lbm8sIGNvbnN0 IGNoYXIgKmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAkJCQlpZiAoIWdl dF9pbnRfaXRlbShsaW5lbm8sIHZhciwgdmFydHlwZSwgUFFmbW9kKEVDUEdy ZXN1bHQsIGluZGV4KSA+PiAxNikpCiAJCQkJewogCQkJCQl2YV9lbmQoYXJn cyk7Ci0JCQkJCXJldHVybiAoZmFsc2UpOworCQkJCQlyZXR1cm4gZmFsc2U7 CiAJCQkJfQogCiAJCQkJZWNwZ19sb2coIkVDUEdnZXRfZGVzYzogUFJFQ0lT SU9OID0gJWRcbiIsIFBRZm1vZChFQ1BHcmVzdWx0LCBpbmRleCkgPj4gMTYp OwpAQCAtMzgxLDcgKzM4MSw3IEBAIEVDUEdnZXRfZGVzYyhpbnQgbGluZW5v LCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwuLi4pCiAJCQkJ aWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCB2YXIsIHZhcnR5cGUsIFBRZnNp emUoRUNQR3Jlc3VsdCwgaW5kZXgpKSkKIAkJCQl7CiAJCQkJCXZhX2VuZChh cmdzKTsKLQkJCQkJcmV0dXJuIChmYWxzZSk7CisJCQkJCXJldHVybiBmYWxz ZTsKIAkJCQl9CiAKIAkJCQllY3BnX2xvZygiRUNQR2dldF9kZXNjOiBPQ1RF VF9MRU5HVEggPSAlZFxuIiwgUFFmc2l6ZShFQ1BHcmVzdWx0LCBpbmRleCkp OwpAQCAtMzkxLDcgKzM5MSw3IEBAIEVDUEdnZXRfZGVzYyhpbnQgbGluZW5v LCBjb25zdCBjaGFyICpkZXNjX25hbWUsIGludCBpbmRleCwuLi4pCiAJCQkJ aWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCB2YXIsIHZhcnR5cGUsIFBRZm1v ZChFQ1BHcmVzdWx0LCBpbmRleCkgLSBWQVJIRFJTWikpCiAJCQkJewogCQkJ CQl2YV9lbmQoYXJncyk7Ci0JCQkJCXJldHVybiAoZmFsc2UpOworCQkJCQly ZXR1cm4gZmFsc2U7CiAJCQkJfQogCiAJCQkJZWNwZ19sb2coIkVDUEdnZXRf ZGVzYzogTEVOR1RIID0gJWRcbiIsIFBRZm1vZChFQ1BHcmVzdWx0LCBpbmRl eCkgLSBWQVJIRFJTWik7CkBAIC00MDEsNyArNDAxLDcgQEAgRUNQR2dldF9k ZXNjKGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50IGlu ZGV4LC4uLikKIAkJCQlpZiAoIWdldF9pbnRfaXRlbShsaW5lbm8sIHZhciwg dmFydHlwZSwgZWNwZ19keW5hbWljX3R5cGUoUFFmdHlwZShFQ1BHcmVzdWx0 LCBpbmRleCkpKSkKIAkJCQl7CiAJCQkJCXZhX2VuZChhcmdzKTsKLQkJCQkJ cmV0dXJuIChmYWxzZSk7CisJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAK IAkJCQllY3BnX2xvZygiRUNQR2dldF9kZXNjOiBUWVBFID0gJWRcbiIsIGVj cGdfZHluYW1pY190eXBlKFBRZnR5cGUoRUNQR3Jlc3VsdCwgaW5kZXgpKSk7 CkBAIC00MTEsNyArNDExLDcgQEAgRUNQR2dldF9kZXNjKGludCBsaW5lbm8s IGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAkJCQlp ZiAoIWdldF9pbnRfaXRlbShsaW5lbm8sIHZhciwgdmFydHlwZSwgZWNwZ19k eW5hbWljX3R5cGVfRERUKFBRZnR5cGUoRUNQR3Jlc3VsdCwgaW5kZXgpKSkp CiAJCQkJewogCQkJCQl2YV9lbmQoYXJncyk7Ci0JCQkJCXJldHVybiAoZmFs c2UpOworCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQogCiAJCQkJZWNwZ19s b2coIkVDUEdnZXRfZGVzYzogVFlQRSA9ICVkXG4iLCBlY3BnX2R5bmFtaWNf dHlwZV9ERFQoUFFmdHlwZShFQ1BHcmVzdWx0LCBpbmRleCkpKTsKQEAgLTQy MSw3ICs0MjEsNyBAQCBFQ1BHZ2V0X2Rlc2MoaW50IGxpbmVubywgY29uc3Qg Y2hhciAqZGVzY19uYW1lLCBpbnQgaW5kZXgsLi4uKQogCQkJCWlmICghZ2V0 X2ludF9pdGVtKGxpbmVubywgdmFyLCB2YXJ0eXBlLCBQUW50dXBsZXMoRUNQ R3Jlc3VsdCkpKQogCQkJCXsKIAkJCQkJdmFfZW5kKGFyZ3MpOwotCQkJCQly ZXR1cm4gKGZhbHNlKTsKKwkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAog CQkJCWVjcGdfbG9nKCJFQ1BHZ2V0X2Rlc2M6IENBUkRJTkFMSVRZID0gJWRc biIsIFBRbnR1cGxlcyhFQ1BHcmVzdWx0KSk7CkBAIC00NjIsNyArNDYyLDcg QEAgRUNQR2dldF9kZXNjKGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmRlc2Nf bmFtZSwgaW50IGluZGV4LC4uLikKIAkJCQkJaWYgKCFnZXRfaW50X2l0ZW0o bGluZW5vLCB2YXIsIHZhcnR5cGUsIFBRZ2V0bGVuZ3RoKEVDUEdyZXN1bHQs IGFjdF90dXBsZSwgaW5kZXgpKSkKIAkJCQkJewogCQkJCQkJdmFfZW5kKGFy Z3MpOwotCQkJCQkJcmV0dXJuIChmYWxzZSk7CisJCQkJCQlyZXR1cm4gZmFs c2U7CiAJCQkJCX0KIAkJCQkJdmFyID0gKGNoYXIgKikgdmFyICsgb2Zmc2V0 OwogCQkJCQllY3BnX2xvZygiRUNQR2dldF9kZXNjOiBSRVRVUk5FRFslZF0g PSAlZFxuIiwgYWN0X3R1cGxlLCBQUWdldGxlbmd0aChFQ1BHcmVzdWx0LCBh Y3RfdHVwbGUsIGluZGV4KSk7CkBAIC00NzMsNyArNDczLDcgQEAgRUNQR2dl dF9kZXNjKGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50 IGluZGV4LC4uLikKIAkJCQlzbnByaW50Zih0eXBlX3N0ciwgc2l6ZW9mKHR5 cGVfc3RyKSwgIiVkIiwgdHlwZSk7CiAJCQkJZWNwZ19yYWlzZShsaW5lbm8s IEVDUEdfVU5LTk9XTl9ERVNDUklQVE9SX0lURU0sIEVDUEdfU1FMU1RBVEVf RUNQR19JTlRFUk5BTF9FUlJPUiwgdHlwZV9zdHIpOwogCQkJCXZhX2VuZChh cmdzKTsKLQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAogCQl0eXBlID0gdmFfYXJnKGFyZ3MsIGVudW0gRUNQR2R0eXBl KTsKQEAgLTUzOSw3ICs1MzksNyBAQCBFQ1BHZ2V0X2Rlc2MoaW50IGxpbmVu bywgY29uc3QgY2hhciAqZGVzY19uYW1lLCBpbnQgaW5kZXgsLi4uKQogCQkJ aWYgKCFnZXRfaW50X2l0ZW0obGluZW5vLCBkYXRhX3Zhci5pbmRfdmFsdWUs IGRhdGFfdmFyLmluZF90eXBlLCAtUFFnZXRpc251bGwoRUNQR3Jlc3VsdCwg YWN0X3R1cGxlLCBpbmRleCkpKQogCQkJewogCQkJCXZhX2VuZChhcmdzKTsK LQkJCQlyZXR1cm4gKGZhbHNlKTsKKwkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9 CiAJCQlkYXRhX3Zhci5pbmRfdmFsdWUgPSAoY2hhciAqKSBkYXRhX3Zhci5p bmRfdmFsdWUgKyBkYXRhX3Zhci5pbmRfb2Zmc2V0OwogCQkJZWNwZ19sb2co IkVDUEdnZXRfZGVzYzogSU5ESUNBVE9SWyVkXSA9ICVkXG4iLCBhY3RfdHVw bGUsIC1QUWdldGlzbnVsbChFQ1BHcmVzdWx0LCBhY3RfdHVwbGUsIGluZGV4 KSk7CkBAIC01NDcsNyArNTQ3LDcgQEAgRUNQR2dldF9kZXNjKGludCBsaW5l bm8sIGNvbnN0IGNoYXIgKmRlc2NfbmFtZSwgaW50IGluZGV4LC4uLikKIAl9 CiAJc3FsY2EtPnNxbGVycmRbMl0gPSBudHVwbGVzOwogCXZhX2VuZChhcmdz KTsKLQlyZXR1cm4gKHRydWUpOworCXJldHVybiB0cnVlOwogfQogCiAjdW5k ZWYgUkVUVVJOX0lGX05PX0RBVEEKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvZWNwZ2xpYi9lcnJvci5jIGIvc3JjL2ludGVyZmFjZXMvZWNw Zy9lY3BnbGliL2Vycm9yLmMKaW5kZXggNzdkNmNjMmRhZS4uZjM0YWU0YWZi OCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2Vy cm9yLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2Vycm9y LmMKQEAgLTI4NiwyMyArMjg2LDIzIEBAIGVjcGdfY2hlY2tfUFFyZXN1bHQo UEdyZXN1bHQgKnJlc3VsdHMsIGludCBsaW5lbm8sIFBHY29ubiAqY29ubmVj dGlvbiwgZW51bSBDT01QCiAJewogCQllY3BnX2xvZygiZWNwZ19jaGVja19Q UXJlc3VsdCBvbiBsaW5lICVkOiBubyByZXN1bHQgLSAlcyIsIGxpbmVubywg UFFlcnJvck1lc3NhZ2UoY29ubmVjdGlvbikpOwogCQllY3BnX3JhaXNlX2Jh Y2tlbmQobGluZW5vLCBOVUxMLCBjb25uZWN0aW9uLCBjb21wYXQpOwotCQly ZXR1cm4gKGZhbHNlKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCXN3aXRj aCAoUFFyZXN1bHRTdGF0dXMocmVzdWx0cykpCiAJewogCiAJCWNhc2UgUEdS RVNfVFVQTEVTX09LOgotCQkJcmV0dXJuICh0cnVlKTsKKwkJCXJldHVybiB0 cnVlOwogCQkJYnJlYWs7CiAJCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6CiAJ CQkvKiBkbyBub3RoaW5nICovCiAJCQllY3BnX3JhaXNlKGxpbmVubywgRUNQ R19FTVBUWSwgRUNQR19TUUxTVEFURV9FQ1BHX0lOVEVSTkFMX0VSUk9SLCBO VUxMKTsKIAkJCVBRY2xlYXIocmVzdWx0cyk7Ci0JCQlyZXR1cm4gKGZhbHNl KTsKKwkJCXJldHVybiBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIFBHUkVT X0NPTU1BTkRfT0s6Ci0JCQlyZXR1cm4gKHRydWUpOworCQkJcmV0dXJuIHRy dWU7CiAJCQlicmVhazsKIAkJY2FzZSBQR1JFU19OT05GQVRBTF9FUlJPUjoK IAkJY2FzZSBQR1JFU19GQVRBTF9FUlJPUjoKQEAgLTMxMCwyMyArMzEwLDIz IEBAIGVjcGdfY2hlY2tfUFFyZXN1bHQoUEdyZXN1bHQgKnJlc3VsdHMsIGlu dCBsaW5lbm8sIFBHY29ubiAqY29ubmVjdGlvbiwgZW51bSBDT01QCiAJCQll Y3BnX2xvZygiZWNwZ19jaGVja19QUXJlc3VsdCBvbiBsaW5lICVkOiBiYWQg cmVzcG9uc2UgLSAlcyIsIGxpbmVubywgUFFyZXN1bHRFcnJvck1lc3NhZ2Uo cmVzdWx0cykpOwogCQkJZWNwZ19yYWlzZV9iYWNrZW5kKGxpbmVubywgcmVz dWx0cywgY29ubmVjdGlvbiwgY29tcGF0KTsKIAkJCVBRY2xlYXIocmVzdWx0 cyk7Ci0JCQlyZXR1cm4gKGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsKIAkJ CWJyZWFrOwogCQljYXNlIFBHUkVTX0NPUFlfT1VUOgotCQkJcmV0dXJuICh0 cnVlKTsKKwkJCXJldHVybiB0cnVlOwogCQkJYnJlYWs7CiAJCWNhc2UgUEdS RVNfQ09QWV9JTjoKIAkJCWVjcGdfbG9nKCJlY3BnX2NoZWNrX1BRcmVzdWx0 IG9uIGxpbmUgJWQ6IENPUFkgSU4gZGF0YSB0cmFuc2ZlciBpbiBwcm9ncmVz c1xuIiwgbGluZW5vKTsKIAkJCVBRZW5kY29weShjb25uZWN0aW9uKTsKIAkJ CVBRY2xlYXIocmVzdWx0cyk7Ci0JCQlyZXR1cm4gKGZhbHNlKTsKKwkJCXJl dHVybiBmYWxzZTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWNwZ19s b2coImVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAlZDogdW5rbm93biBl eGVjdXRpb24gc3RhdHVzIHR5cGVcbiIsCiAJCQkJCSBsaW5lbm8pOwogCQkJ ZWNwZ19yYWlzZV9iYWNrZW5kKGxpbmVubywgcmVzdWx0cywgY29ubmVjdGlv biwgY29tcGF0KTsKIAkJCVBRY2xlYXIocmVzdWx0cyk7Ci0JCQlyZXR1cm4g KGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsKIAkJCWJyZWFrOwogCX0KIH0K ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9leGVj dXRlLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvZXhlY3V0ZS5j CmluZGV4IDAzYzU1ZDM1OTMuLjUwZjgzMWFhMmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9leGVjdXRlLmMKKysrIGIvc3Jj L2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2V4ZWN1dGUuYwpAQCAtNTgsNyAr NTgsNyBAQCBxdW90ZV9wb3N0Z3JlcyhjaGFyICphcmcsIGJvb2wgcXVvdGUs IGludCBsaW5lbm8pCiAJCWJ1ZmZlcl9sZW4gPSAyICogbGVuZ3RoICsgMTsK IAkJcmVzID0gKGNoYXIgKikgZWNwZ19hbGxvYyhidWZmZXJfbGVuICsgMywg bGluZW5vKTsKIAkJaWYgKCFyZXMpCi0JCQlyZXR1cm4gKHJlcyk7CisJCQly ZXR1cm4gcmVzOwogCQllc2NhcGVkX2xlbiA9IFBRZXNjYXBlU3RyaW5nKHJl cyArIDEsIGFyZywgYnVmZmVyX2xlbik7CiAJCWlmIChsZW5ndGggPT0gZXNj YXBlZF9sZW4pCiAJCXsKQEAgLTE1MSwxMyArMTUxLDEzIEBAIGVjcGdfdHlw ZV9pbmZvY2FjaGVfcHVzaChzdHJ1Y3QgRUNQR3R5cGVfaW5mb3JtYXRpb25f Y2FjaGUgKipjYWNoZSwgaW50IG9pZCwgZW51CiAJPSAoc3RydWN0IEVDUEd0 eXBlX2luZm9ybWF0aW9uX2NhY2hlICopIGVjcGdfYWxsb2Moc2l6ZW9mKHN0 cnVjdCBFQ1BHdHlwZV9pbmZvcm1hdGlvbl9jYWNoZSksIGxpbmVubyk7CiAK IAlpZiAobmV3X2VudHJ5ID09IE5VTEwpCi0JCXJldHVybiAoZmFsc2UpOwor CQlyZXR1cm4gZmFsc2U7CiAKIAluZXdfZW50cnktPm9pZCA9IG9pZDsKIAlu ZXdfZW50cnktPmlzYXJyYXkgPSBpc2FycmF5OwogCW5ld19lbnRyeS0+bmV4 dCA9ICpjYWNoZTsKIAkqY2FjaGUgPSBuZXdfZW50cnk7Ci0JcmV0dXJuICh0 cnVlKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGVudW0gQVJSQVlf VFlQRQpAQCAtMTc4LDg5ICsxNzgsODkgQEAgZWNwZ19pc190eXBlX2FuX2Fy cmF5KGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc3RhdGVtZW50ICpzdG10LCBj b25zdCBzdHJ1Y3QgdmFyaWEKIAogCQkvKiBwb3B1bGF0ZSBjYWNoZSB3aXRo IHdlbGwga25vd24gdHlwZXMgdG8gc3BlZWQgdGhpbmdzIHVwICovCiAJCWlm ICghZWNwZ190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlv bi0+Y2FjaGVfaGVhZCksIEJPT0xPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3Rt dC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJ CQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVf aW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFk KSwgQllURUFPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkK LQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQ R19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1 c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgQ0hBUk9JRCwg RUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChF Q1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9S OwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNv bm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBOQU1FT0lELCBub3RfYW5fYXJyYXlf aW5fZWNwZywgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJB WV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYg KCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9u LT5jYWNoZV9oZWFkKSwgSU5UOE9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10 LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJ CXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9p bmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQp LCBJTlQyT0lELCBFQ1BHX0FSUkFZX05PTkUsIHN0bXQtPmxpbmVubykpCi0J CQlyZXR1cm4gKEVDUEdfQVJSQVlfRVJST1IpOworCQkJcmV0dXJuIEVDUEdf QVJSQVlfRVJST1I7CiAJCWlmICghZWNwZ190eXBlX2luZm9jYWNoZV9wdXNo KCYoc3RtdC0+Y29ubmVjdGlvbi0+Y2FjaGVfaGVhZCksIElOVDJWRUNUT1JP SUQsIEVDUEdfQVJSQVlfVkVDVE9SLCBzdG10LT5saW5lbm8pKQotCQkJcmV0 dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZ X0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0 bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBJTlQ0T0lELCBFQ1BHX0FS UkFZX05PTkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVDUEdfQVJS QVlfRVJST1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7CiAJCWlm ICghZWNwZ190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlv bi0+Y2FjaGVfaGVhZCksIFJFR1BST0NPSUQsIEVDUEdfQVJSQVlfTk9ORSwg c3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7 CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5 cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9o ZWFkKSwgVEVYVE9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5lbm8p KQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBF Q1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVf cHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBPSURPSUQs IEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAo RUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJP UjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5j b25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgVElET0lELCBFQ1BHX0FSUkFZX05P TkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVDUEdfQVJSQVlfRVJS T1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7CiAJCWlmICghZWNw Z190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlvbi0+Y2Fj aGVfaGVhZCksIFhJRE9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5l bm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVy biBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2Fj aGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBDSURP SUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVy biAoRUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9F UlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10 LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgT0lEVkVDVE9ST0lELCBFQ1BH X0FSUkFZX1ZFQ1RPUiwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQ R19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsK IAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25u ZWN0aW9uLT5jYWNoZV9oZWFkKSwgUE9JTlRPSUQsIEVDUEdfQVJSQVlfVkVD VE9SLCBzdG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VS Uk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVj cGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNh Y2hlX2hlYWQpLCBMU0VHT0lELCBFQ1BHX0FSUkFZX1ZFQ1RPUiwgc3RtdC0+ bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQly ZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5m b2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwg UEFUSE9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5lbm8pKQotCQkJ cmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FS UkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgm KHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBCT1hPSUQsIEVDUEdf QVJSQVlfVkVDVE9SLCBzdG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BH X0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwog CQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5l Y3Rpb24tPmNhY2hlX2hlYWQpLCBQT0xZR09OT0lELCBFQ1BHX0FSUkFZX05P TkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVDUEdfQVJSQVlfRVJS T1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7CiAJCWlmICghZWNw Z190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlvbi0+Y2Fj aGVfaGVhZCksIExJTkVPSUQsIEVDUEdfQVJSQVlfVkVDVE9SLCBzdG10LT5s aW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJl dHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZv Y2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBG TE9BVDRPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJ CXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19B UlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2go JihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgRkxPQVQ4T0lELCBF Q1BHX0FSUkFZX05PTkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVD UEdfQVJSQVlfRVJST1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7 CiAJCWlmICghZWNwZ190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29u bmVjdGlvbi0+Y2FjaGVfaGVhZCksIEFCU1RJTUVPSUQsIEVDUEdfQVJSQVlf Tk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9F UlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFl Y3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5j YWNoZV9oZWFkKSwgUkVMVElNRU9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10 LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJ CXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9p bmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQp LCBUSU5URVJWQUxPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5v KSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4g RUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hl X3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgVU5LTk9X Tk9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5lbm8pKQotCQkJcmV0 dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZ X0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0 bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBDSVJDTEVPSUQsIEVDUEdf QVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19B UlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJ aWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0 aW9uLT5jYWNoZV9oZWFkKSwgQ0FTSE9JRCwgRUNQR19BUlJBWV9OT05FLCBz dG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsK KwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlw ZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hl YWQpLCBJTkVUT0lELCBFQ1BHX0FSUkFZX05PTkUsIHN0bXQtPmxpbmVubykp Ci0JCQlyZXR1cm4gKEVDUEdfQVJSQVlfRVJST1IpOworCQkJcmV0dXJuIEVD UEdfQVJSQVlfRVJST1I7CiAJCWlmICghZWNwZ190eXBlX2luZm9jYWNoZV9w dXNoKCYoc3RtdC0+Y29ubmVjdGlvbi0+Y2FjaGVfaGVhZCksIENJRFJPSUQs IEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAo RUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJP UjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5j b25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgQlBDSEFST0lELCBFQ1BHX0FSUkFZ X05PTkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVDUEdfQVJSQVlf RVJST1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7CiAJCWlmICgh ZWNwZ190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlvbi0+ Y2FjaGVfaGVhZCksIFZBUkNIQVJPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3Rt dC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJ CQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVf aW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFk KSwgREFURU9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5saW5lbm8pKQot CQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJldHVybiBFQ1BH X0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVz aCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBUSU1FT0lELCBF Q1BHX0FSUkFZX05PTkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVD UEdfQVJSQVlfRVJST1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7 CiAJCWlmICghZWNwZ190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29u bmVjdGlvbi0+Y2FjaGVfaGVhZCksIFRJTUVTVEFNUE9JRCwgRUNQR19BUlJB WV9OT05FLCBzdG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZ X0VSUk9SKTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAo IWVjcGdfdHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24t PmNhY2hlX2hlYWQpLCBUSU1FU1RBTVBUWk9JRCwgRUNQR19BUlJBWV9OT05F LCBzdG10LT5saW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9S KTsKKwkJCXJldHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdf dHlwZV9pbmZvY2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hl X2hlYWQpLCBJTlRFUlZBTE9JRCwgRUNQR19BUlJBWV9OT05FLCBzdG10LT5s aW5lbm8pKQotCQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJCXJl dHVybiBFQ1BHX0FSUkFZX0VSUk9SOwogCQlpZiAoIWVjcGdfdHlwZV9pbmZv Y2FjaGVfcHVzaCgmKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpLCBU SU1FVFpPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJ CXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19B UlJBWV9FUlJPUjsKIAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2go JihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgWlBCSVRPSUQsIEVD UEdfQVJSQVlfTk9ORSwgc3RtdC0+bGluZW5vKSkKLQkJCXJldHVybiAoRUNQ R19BUlJBWV9FUlJPUik7CisJCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsK IAkJaWYgKCFlY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2goJihzdG10LT5jb25u ZWN0aW9uLT5jYWNoZV9oZWFkKSwgVkFSQklUT0lELCBFQ1BHX0FSUkFZX05P TkUsIHN0bXQtPmxpbmVubykpCi0JCQlyZXR1cm4gKEVDUEdfQVJSQVlfRVJS T1IpOworCQkJcmV0dXJuIEVDUEdfQVJSQVlfRVJST1I7CiAJCWlmICghZWNw Z190eXBlX2luZm9jYWNoZV9wdXNoKCYoc3RtdC0+Y29ubmVjdGlvbi0+Y2Fj aGVfaGVhZCksIE5VTUVSSUNPSUQsIEVDUEdfQVJSQVlfTk9ORSwgc3RtdC0+ bGluZW5vKSkKLQkJCXJldHVybiAoRUNQR19BUlJBWV9FUlJPUik7CisJCQly ZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAl9CiAKIAlmb3IgKGNhY2hlX2Vu dHJ5ID0gKHN0bXQtPmNvbm5lY3Rpb24tPmNhY2hlX2hlYWQpOyBjYWNoZV9l bnRyeSAhPSBOVUxMOyBjYWNoZV9lbnRyeSA9IGNhY2hlX2VudHJ5LT5uZXh0 KQpAQCAtMjcxLDEzICsyNzEsMTMgQEAgZWNwZ19pc190eXBlX2FuX2FycmF5 KGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc3RhdGVtZW50ICpzdG10LCBjb25z dCBzdHJ1Y3QgdmFyaWEKIAogCWFycmF5X3F1ZXJ5ID0gKGNoYXIgKikgZWNw Z19hbGxvYyhzdHJsZW4oInNlbGVjdCB0eXBsZW4gZnJvbSBwZ190eXBlIHdo ZXJlIG9pZD0gYW5kIHR5cGVsZW08PjAiKSArIDExLCBzdG10LT5saW5lbm8p OwogCWlmIChhcnJheV9xdWVyeSA9PSBOVUxMKQotCQlyZXR1cm4gKEVDUEdf QVJSQVlfRVJST1IpOworCQlyZXR1cm4gRUNQR19BUlJBWV9FUlJPUjsKIAog CXNwcmludGYoYXJyYXlfcXVlcnksICJzZWxlY3QgdHlwbGVuIGZyb20gcGdf dHlwZSB3aGVyZSBvaWQ9JWQgYW5kIHR5cGVsZW08PjAiLCB0eXBlKTsKIAlx dWVyeSA9IFBRZXhlYyhzdG10LT5jb25uZWN0aW9uLT5jb25uZWN0aW9uLCBh cnJheV9xdWVyeSk7CiAJZWNwZ19mcmVlKGFycmF5X3F1ZXJ5KTsKIAlpZiAo IWVjcGdfY2hlY2tfUFFyZXN1bHQocXVlcnksIHN0bXQtPmxpbmVubywgc3Rt dC0+Y29ubmVjdGlvbi0+Y29ubmVjdGlvbiwgc3RtdC0+Y29tcGF0KSkKLQkJ cmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJcmV0dXJuIEVDUEdfQVJS QVlfRVJST1I7CiAJZWxzZSBpZiAoUFFyZXN1bHRTdGF0dXMocXVlcnkpID09 IFBHUkVTX1RVUExFU19PSykKIAl7CiAJCWlmIChQUW50dXBsZXMocXVlcnkp ID09IDApCkBAIC0yOTcsNyArMjk3LDcgQEAgZWNwZ19pc190eXBlX2FuX2Fy cmF5KGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc3RhdGVtZW50ICpzdG10LCBj b25zdCBzdHJ1Y3QgdmFyaWEKIAkJUFFjbGVhcihxdWVyeSk7CiAJfQogCWVs c2UKLQkJcmV0dXJuIChFQ1BHX0FSUkFZX0VSUk9SKTsKKwkJcmV0dXJuIEVD UEdfQVJSQVlfRVJST1I7CiAKIAllY3BnX3R5cGVfaW5mb2NhY2hlX3B1c2go JihzdG10LT5jb25uZWN0aW9uLT5jYWNoZV9oZWFkKSwgdHlwZSwgaXNhcnJh eSwgc3RtdC0+bGluZW5vKTsKIAllY3BnX2xvZygiZWNwZ19pc190eXBlX2Fu X2FycmF5IG9uIGxpbmUgJWQ6IHR5cGUgKCVkKTsgQyAoJWQpOyBhcnJheSAo JXMpXG4iLCBzdG10LT5saW5lbm8sIHR5cGUsIHZhci0+dHlwZSwgRUNQR19J U19BUlJBWShpc2FycmF5KSA/ICJ5ZXMiIDogIm5vIik7CkBAIC0xNDg2LDcg KzE0ODYsNyBAQCBlY3BnX3Byb2Nlc3Nfb3V0cHV0KHN0cnVjdCBzdGF0ZW1l bnQgKnN0bXQsIGJvb2wgY2xlYXJfcmVzdWx0KQogCXsKIAkJZWNwZ19yYWlz ZShzdG10LT5saW5lbm8sIEVDUEdfT1VUX09GX01FTU9SWSwKIAkJCQkgICBF Q1BHX1NRTFNUQVRFX0VDUEdfT1VUX09GX01FTU9SWSwgTlVMTCk7Ci0JCXJl dHVybiAoZmFsc2UpOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJdmFyID0g c3RtdC0+b3V0bGlzdDsKQEAgLTE2NTQsNyArMTY1NCw3IEBAIGVjcGdfcHJv Y2Vzc19vdXRwdXQoc3RydWN0IHN0YXRlbWVudCAqc3RtdCwgYm9vbCBjbGVh cl9yZXN1bHQpCiAJCQkJCWVsc2UgaWYgKCFJTkZPUk1JWF9NT0RFKHN0bXQt PmNvbXBhdCkpCiAJCQkJCXsKIAkJCQkJCWVjcGdfcmFpc2Uoc3RtdC0+bGlu ZW5vLCBFQ1BHX1RPT19GRVdfQVJHVU1FTlRTLCBFQ1BHX1NRTFNUQVRFX1VT SU5HX0NMQVVTRV9ET0VTX05PVF9NQVRDSF9UQVJHRVRTLCBOVUxMKTsKLQkJ CQkJCXJldHVybiAoZmFsc2UpOworCQkJCQkJcmV0dXJuIGZhbHNlOwogCQkJ CQl9CiAJCQkJfQogCkBAIC0xODMwLDcgKzE4MzAsNyBAQCBlY3BnX2RvX3By b2xvZ3VlKGludCBsaW5lbm8sIGNvbnN0IGludCBjb21wYXQsIGNvbnN0IGlu dCBmb3JjZV9pbmRpY2F0b3IsCiAJCXsKIAkJCWVjcGdfcmFpc2UobGluZW5v LCBFQ1BHX0lOVkFMSURfU1RNVCwgRUNQR19TUUxTVEFURV9JTlZBTElEX1NR TF9TVEFURU1FTlRfTkFNRSwgc3RtdC0+Y29tbWFuZCk7CiAJCQllY3BnX2Rv X2VwaWxvZ3VlKHN0bXQpOwotCQkJcmV0dXJuIChmYWxzZSk7CisJCQlyZXR1 cm4gZmFsc2U7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvZWNwZ2xpYi9tZW1vcnkuYyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvZWNwZ2xpYi9tZW1vcnkuYwppbmRleCBhNzI2OGJiMGY2Li5kYzU0OGE0 Y2RhIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIv bWVtb3J5LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL21l bW9yeS5jCkBAIC0yNiw3ICsyNiw3IEBAIGVjcGdfYWxsb2MobG9uZyBzaXpl LCBpbnQgbGluZW5vKQogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlyZXR1cm4g KG5ldyk7CisJcmV0dXJuIG5ldzsKIH0KIAogY2hhciAqCkBAIC00MCw3ICs0 MCw3IEBAIGVjcGdfcmVhbGxvYyh2b2lkICpwdHIsIGxvbmcgc2l6ZSwgaW50 IGxpbmVubykKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JcmV0dXJuIChuZXcp OworCXJldHVybiBuZXc7CiB9CiAKIGNoYXIgKgpAQCAtNTgsNyArNTgsNyBA QCBlY3BnX3N0cmR1cChjb25zdCBjaGFyICpzdHJpbmcsIGludCBsaW5lbm8p CiAJCXJldHVybiBOVUxMOwogCX0KIAotCXJldHVybiAobmV3KTsKKwlyZXR1 cm4gbmV3OwogfQogCiAvKiBrZWVwIGEgbGlzdCBvZiBtZW1vcnkgd2UgYWxs b2NhdGVkIGZvciB0aGUgdXNlciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvZWNwZy9lY3BnbGliL21pc2MuYyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvZWNwZ2xpYi9taXNjLmMKaW5kZXggZWRkNzMwMmQ1NC4uMjA4NGQ3ZmU2 MCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL21p c2MuYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvbWlzYy5j CkBAIC0xMTAsNyArMTEwLDcgQEAgZWNwZ19pbml0KGNvbnN0IHN0cnVjdCBj b25uZWN0aW9uICpjb24sIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSwg Y29uc3QgaW50IGwKIAl7CiAJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX09V VF9PRl9NRU1PUlksIEVDUEdfU1FMU1RBVEVfRUNQR19PVVRfT0ZfTUVNT1JZ LAogCQkJCSAgIE5VTEwpOwotCQlyZXR1cm4gKGZhbHNlKTsKKwkJcmV0dXJu IGZhbHNlOwogCX0KIAogCWVjcGdfaW5pdF9zcWxjYShzcWxjYSk7CkBAIC0x MTgsMTAgKzExOCwxMCBAQCBlY3BnX2luaXQoY29uc3Qgc3RydWN0IGNvbm5l Y3Rpb24gKmNvbiwgY29uc3QgY2hhciAqY29ubmVjdGlvbl9uYW1lLCBjb25z dCBpbnQgbAogCXsKIAkJZWNwZ19yYWlzZShsaW5lbm8sIEVDUEdfTk9fQ09O TiwgRUNQR19TUUxTVEFURV9DT05ORUNUSU9OX0RPRVNfTk9UX0VYSVNULAog CQkJCSAgIGNvbm5lY3Rpb25fbmFtZSA/IGNvbm5lY3Rpb25fbmFtZSA6IGVj cGdfZ2V0dGV4dCgiTlVMTCIpKTsKLQkJcmV0dXJuIChmYWxzZSk7CisJCXJl dHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gKHRydWUpOworCXJldHVybiB0 cnVlOwogfQogCiAjaWZkZWYgRU5BQkxFX1RIUkVBRF9TQUZFVFkKQEAgLTE1 NSw5ICsxNTUsOSBAQCBFQ1BHZ2V0X3NxbGNhKHZvaWQpCiAJCWVjcGdfaW5p dF9zcWxjYShzcWxjYSk7CiAJCXB0aHJlYWRfc2V0c3BlY2lmaWMoc3FsY2Ff a2V5LCBzcWxjYSk7CiAJfQotCXJldHVybiAoc3FsY2EpOworCXJldHVybiBz cWxjYTsKICNlbHNlCi0JcmV0dXJuICgmc3FsY2EpOworCXJldHVybiAmc3Fs Y2E7CiAjZW5kaWYKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIEVDUEdzdGF0 dXMoaW50IGxpbmVubywgY29uc3QgY2hhciAqY29ubmVjdGlvbl9uYW1lKQog CXN0cnVjdCBjb25uZWN0aW9uICpjb24gPSBlY3BnX2dldF9jb25uZWN0aW9u KGNvbm5lY3Rpb25fbmFtZSk7CiAKIAlpZiAoIWVjcGdfaW5pdChjb24sIGNv bm5lY3Rpb25fbmFtZSwgbGluZW5vKSkKLQkJcmV0dXJuIChmYWxzZSk7CisJ CXJldHVybiBmYWxzZTsKIAogCS8qIGFyZSB3ZSBjb25uZWN0ZWQ/ICovCiAJ aWYgKGNvbi0+Y29ubmVjdGlvbiA9PSBOVUxMKQpAQCAtMTc2LDcgKzE3Niw3 IEBAIEVDUEdzdGF0dXMoaW50IGxpbmVubywgY29uc3QgY2hhciAqY29ubmVj dGlvbl9uYW1lKQogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJuICh0 cnVlKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogUEdUcmFuc2FjdGlvblN0YXR1 c1R5cGUKQEAgLTIwMiw3ICsyMDIsNyBAQCBFQ1BHdHJhbnMoaW50IGxpbmVu bywgY29uc3QgY2hhciAqY29ubmVjdGlvbl9uYW1lLCBjb25zdCBjaGFyICp0 cmFuc2FjdGlvbikKIAlzdHJ1Y3QgY29ubmVjdGlvbiAqY29uID0gZWNwZ19n ZXRfY29ubmVjdGlvbihjb25uZWN0aW9uX25hbWUpOwogCiAJaWYgKCFlY3Bn X2luaXQoY29uLCBjb25uZWN0aW9uX25hbWUsIGxpbmVubykpCi0JCXJldHVy biAoZmFsc2UpOworCQlyZXR1cm4gZmFsc2U7CiAKIAllY3BnX2xvZygiRUNQ R3RyYW5zIG9uIGxpbmUgJWQ6IGFjdGlvbiBcIiVzXCI7IGNvbm5lY3Rpb24g XCIlc1wiXG4iLCBsaW5lbm8sIHRyYW5zYWN0aW9uLCBjb24gPyBjb24tPm5h bWUgOiAibnVsbCIpOwogCkBAIC00MTksMTAgKzQxOSwxMCBAQCBFQ1BHaXNf bm9pbmRfbnVsbChlbnVtIEVDUEd0dHlwZSB0eXBlLCB2b2lkICpwdHIpCiAJ CQlicmVhazsKICNlbmRpZgkJCQkJCQkvKiBIQVZFX0xPTkdfTE9OR19JTlQg Ki8KIAkJY2FzZSBFQ1BHdF9mbG9hdDoKLQkJCXJldHVybiAoX2NoZWNrKHB0 ciwgc2l6ZW9mKGZsb2F0KSkpOworCQkJcmV0dXJuIF9jaGVjayhwdHIsIHNp emVvZihmbG9hdCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgRUNQR3RfZG91Ymxl OgotCQkJcmV0dXJuIChfY2hlY2socHRyLCBzaXplb2YoZG91YmxlKSkpOwor CQkJcmV0dXJuIF9jaGVjayhwdHIsIHNpemVvZihkb3VibGUpKTsKIAkJCWJy ZWFrOwogCQljYXNlIEVDUEd0X3ZhcmNoYXI6CiAJCQlpZiAoKigoKHN0cnVj dCBFQ1BHZ2VuZXJpY192YXJjaGFyICopIHB0ciktPmFycikgPT0gMHgwMCkK QEAgLTQzNywxMCArNDM3LDEwIEBAIEVDUEdpc19ub2luZF9udWxsKGVudW0g RUNQR3R0eXBlIHR5cGUsIHZvaWQgKnB0cikKIAkJCQlyZXR1cm4gdHJ1ZTsK IAkJCWJyZWFrOwogCQljYXNlIEVDUEd0X2ludGVydmFsOgotCQkJcmV0dXJu IChfY2hlY2socHRyLCBzaXplb2YoaW50ZXJ2YWwpKSk7CisJCQlyZXR1cm4g X2NoZWNrKHB0ciwgc2l6ZW9mKGludGVydmFsKSk7CiAJCQlicmVhazsKIAkJ Y2FzZSBFQ1BHdF90aW1lc3RhbXA6Ci0JCQlyZXR1cm4gKF9jaGVjayhwdHIs IHNpemVvZih0aW1lc3RhbXApKSk7CisJCQlyZXR1cm4gX2NoZWNrKHB0ciwg c2l6ZW9mKHRpbWVzdGFtcCkpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNw Z2xpYi9wcmVwYXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIv cHJlcGFyZS5jCmluZGV4IDE1MWFhODBkYzYuLmU3NmI2NDUwMjQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvZWNwZ2xpYi9wcmVwYXJlLmMK KysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL3ByZXBhcmUuYwpA QCAtNDIsNyArNDIsNyBAQCBpc3ZhcmNoYXIodW5zaWduZWQgY2hhciBjKQog CWlmIChjID49IDEyOCkKIAkJcmV0dXJuIHRydWU7CiAKLQlyZXR1cm4gKGZh bHNlKTsKKwlyZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sCkBAIC0z NzEsNyArMzcxLDcgQEAgU2VhcmNoU3RtdENhY2hlKGNvbnN0IGNoYXIgKmVj cGdRdWVyeSkKIAlpZiAoZW50SXggPj0gc3RtdENhY2hlRW50UGVyQnVja2V0 KQogCQllbnRObyA9IDA7CiAKLQlyZXR1cm4gKGVudE5vKTsKKwlyZXR1cm4g ZW50Tm87CiB9CiAKIC8qCkBAIC0zODksMTQgKzM4OSwxNCBAQCBlY3BnX2Zy ZWVTdG10Q2FjaGVFbnRyeShpbnQgbGluZW5vLCBpbnQgY29tcGF0LCBpbnQg ZW50Tm8pCS8qIGVudHJ5ICMgdG8gZnJlZSAqLwogCiAJZW50cnkgPSAmc3Rt dENhY2hlRW50cmllc1tlbnROb107CiAJaWYgKCFlbnRyeS0+c3RtdElEWzBd KQkJLyogcmV0dXJuIGlmIHRoZSBlbnRyeSBpc24ndCBpbiB1c2UgICAgICov Ci0JCXJldHVybiAoMCk7CisJCXJldHVybiAwOwogCiAJY29uID0gZWNwZ19n ZXRfY29ubmVjdGlvbihlbnRyeS0+Y29ubmVjdGlvbik7CiAKIAkvKiBmcmVl IHRoZSAncHJlcGFyZWRfc3RhdGVtZW50JyBsaXN0IGVudHJ5CQkgICovCiAJ dGhpcyA9IGVjcGdfZmluZF9wcmVwYXJlZF9zdGF0ZW1lbnQoZW50cnktPnN0 bXRJRCwgY29uLCAmcHJldik7CiAJaWYgKHRoaXMgJiYgIWRlYWxsb2NhdGVf b25lKGxpbmVubywgY29tcGF0LCBjb24sIHByZXYsIHRoaXMpKQotCQlyZXR1 cm4gKC0xKTsKKwkJcmV0dXJuIC0xOwogCiAJZW50cnktPnN0bXRJRFswXSA9 ICdcMCc7CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCBlY3BnX2ZyZWVTdG10Q2Fj aGVFbnRyeShpbnQgbGluZW5vLCBpbnQgY29tcGF0LCBpbnQgZW50Tm8pCS8q IGVudHJ5ICMgdG8gZnJlZSAqLwogCQllbnRyeS0+ZWNwZ1F1ZXJ5ID0gMDsK IAl9CiAKLQlyZXR1cm4gKGVudE5vKTsKKwlyZXR1cm4gZW50Tm87CiB9CiAK IC8qCkBAIC00NTAsNyArNDUwLDcgQEAgQWRkU3RtdFRvQ2FjaGUoaW50IGxp bmVubywJCS8qIGxpbmUgIyBvZiBzdGF0ZW1lbnQJCSovCiAKIC8qICdlbnRO bycgaXMgdGhlIGVudHJ5IHRvIHVzZSAtIG1ha2Ugc3VyZSBpdHMgZnJlZQkJ CQkJCQkJCQkqLwogCWlmIChlY3BnX2ZyZWVTdG10Q2FjaGVFbnRyeShsaW5l bm8sIGNvbXBhdCwgZW50Tm8pIDwgMCkKLQkJcmV0dXJuICgtMSk7CisJCXJl dHVybiAtMTsKIAogLyogYWRkIHRoZSBxdWVyeSB0byB0aGUgZW50cnkJCQkJ CQkJCQkJCQkJCQkqLwogCWVudHJ5ID0gJnN0bXRDYWNoZUVudHJpZXNbZW50 Tm9dOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIEFkZFN0bXRUb0NhY2hlKGludCBs aW5lbm8sCQkvKiBsaW5lICMgb2Ygc3RhdGVtZW50CQkqLwogCWVudHJ5LT5l eGVjcyA9IDA7CiAJbWVtY3B5KGVudHJ5LT5zdG10SUQsIHN0bXRJRCwgc2l6 ZW9mKGVudHJ5LT5zdG10SUQpKTsKIAotCXJldHVybiAoZW50Tm8pOworCXJl dHVybiBlbnRObzsKIH0KIAogLyogaGFuZGxlIGNhY2hlIGFuZCBwcmVwYXJh dGlvbiBvZiBzdGF0ZW1lbnRzIGluIGF1dG8tcHJlcGFyZSBtb2RlICovCkBA IC00ODcsNyArNDg3LDcgQEAgZWNwZ19hdXRvX3ByZXBhcmUoaW50IGxpbmVu bywgY29uc3QgY2hhciAqY29ubmVjdGlvbl9uYW1lLCBjb25zdCBpbnQgY29t cGF0LCBjaGEKIAkJcHJlcCA9IGVjcGdfZmluZF9wcmVwYXJlZF9zdGF0ZW1l bnQoc3RtdElELCBjb24sIE5VTEwpOwogCQkvKiBUaGlzIHByZXBhcmVkIG5h bWUgZG9lc24ndCBleGlzdCBvbiB0aGlzIGNvbm5lY3Rpb24uICovCiAJCWlm ICghcHJlcCAmJiAhcHJlcGFyZV9jb21tb24obGluZW5vLCBjb24sIHN0bXRJ RCwgcXVlcnkpKQotCQkJcmV0dXJuIChmYWxzZSk7CisJCQlyZXR1cm4gZmFs c2U7CiAKIAkJKm5hbWUgPSBlY3BnX3N0cmR1cChzdG10SUQsIGxpbmVubyk7 CiAJfQpAQCAtNTAxLDkgKzUwMSw5IEBAIGVjcGdfYXV0b19wcmVwYXJlKGlu dCBsaW5lbm8sIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSwgY29uc3Qg aW50IGNvbXBhdCwgY2hhCiAJCXNwcmludGYoc3RtdElELCAiZWNwZyVkIiwg bmV4dFN0bXRJRCsrKTsKIAogCQlpZiAoIUVDUEdwcmVwYXJlKGxpbmVubywg Y29ubmVjdGlvbl9uYW1lLCAwLCBzdG10SUQsIHF1ZXJ5KSkKLQkJCXJldHVy biAoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoQWRkU3RtdFRv Q2FjaGUobGluZW5vLCBzdG10SUQsIGNvbm5lY3Rpb25fbmFtZSwgY29tcGF0 LCBxdWVyeSkgPCAwKQotCQkJcmV0dXJuIChmYWxzZSk7CisJCQlyZXR1cm4g ZmFsc2U7CiAKIAkJKm5hbWUgPSBlY3BnX3N0cmR1cChzdG10SUQsIGxpbmVu byk7CiAJfQpAQCAtNTExLDUgKzUxMSw1IEBAIGVjcGdfYXV0b19wcmVwYXJl KGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fbmFtZSwgY29u c3QgaW50IGNvbXBhdCwgY2hhCiAJLyogaW5jcmVhc2UgdXNhZ2UgY291bnRl ciAqLwogCXN0bXRDYWNoZUVudHJpZXNbZW50Tm9dLmV4ZWNzKys7CiAKLQly ZXR1cm4gKHRydWUpOworCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL2NvbW1vbi5jIGIvc3Jj L2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL2NvbW1vbi5jCmluZGV4IDkw ODRmZDA2YjQuLmFlMjliNmM0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvcGd0eXBlc2xpYi9jb21tb24uYworKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3BndHlwZXNsaWIvY29tbW9uLmMKQEAgLTEyLDcgKzEyLDcg QEAgcGd0eXBlc19hbGxvYyhsb25nIHNpemUpCiAKIAlpZiAoIW5ldykKIAkJ ZXJybm8gPSBFTk9NRU07Ci0JcmV0dXJuIChuZXcpOworCXJldHVybiBuZXc7 CiB9CiAKIGNoYXIgKgpAQCAtMjIsNyArMjIsNyBAQCBwZ3R5cGVzX3N0cmR1 cChjb25zdCBjaGFyICpzdHIpCiAKIAlpZiAoIW5ldykKIAkJZXJybm8gPSBF Tk9NRU07Ci0JcmV0dXJuIChuZXcpOworCXJldHVybiBuZXc7CiB9CiAKIGlu dApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGli L251bWVyaWMuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcGd0eXBlc2xpYi9u dW1lcmljLmMKaW5kZXggYTkzZDA3NGRlMi4uYTg2MTkxNjhmZiAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wZ3R5cGVzbGliL251bWVyaWMu YworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3BndHlwZXNsaWIvbnVtZXJp Yy5jCkBAIC00MCw3ICs0MCw3IEBAIGFwcGx5X3R5cG1vZChudW1lcmljICp2 YXIsIGxvbmcgdHlwbW9kKQogCiAJLyogRG8gbm90aGluZyBpZiB3ZSBoYXZl IGEgZGVmYXVsdCB0eXBtb2QgKC0xKSAqLwogCWlmICh0eXBtb2QgPCAobG9u ZykgKFZBUkhEUlNaKSkKLQkJcmV0dXJuICgwKTsKKwkJcmV0dXJuIDA7CiAK IAl0eXBtb2QgLT0gVkFSSERSU1o7CiAJcHJlY2lzaW9uID0gKHR5cG1vZCA+ PiAxNikgJiAweGZmZmY7CkBAIC0xMDAsNyArMTAwLDcgQEAgYXBwbHlfdHlw bW9kKG51bWVyaWMgKnZhciwgbG9uZyB0eXBtb2QpCiAKIAl2YXItPnJzY2Fs ZSA9IHNjYWxlOwogCXZhci0+ZHNjYWxlID0gc2NhbGU7Ci0JcmV0dXJuICgw KTsKKwlyZXR1cm4gMDsKIH0KICNlbmRpZgogCkBAIC0yOTYsNyArMjk2LDcg QEAgc2V0X3Zhcl9mcm9tX3N0cihjaGFyICpzdHIsIGNoYXIgKipwdHIsIG51 bWVyaWMgKmRlc3QpCiAJCWRlc3QtPndlaWdodCA9IDA7CiAKIAlkZXN0LT5y c2NhbGUgPSBkZXN0LT5kc2NhbGU7Ci0JcmV0dXJuICgwKTsKKwlyZXR1cm4g MDsKIH0KIAogCkBAIC00MTIsMTYgKzQxMiwxNiBAQCBQR1RZUEVTbnVtZXJp Y19mcm9tX2FzYyhjaGFyICpzdHIsIGNoYXIgKiplbmRwdHIpCiAJY2hhcgkg ICoqcHRyID0gKGVuZHB0ciAhPSBOVUxMKSA/IGVuZHB0ciA6ICZyZWFscHRy OwogCiAJaWYgKCF2YWx1ZSkKLQkJcmV0dXJuIChOVUxMKTsKKwkJcmV0dXJu IE5VTEw7CiAKIAlyZXQgPSBzZXRfdmFyX2Zyb21fc3RyKHN0ciwgcHRyLCB2 YWx1ZSk7CiAJaWYgKHJldCkKIAl7CiAJCVBHVFlQRVNudW1lcmljX2ZyZWUo dmFsdWUpOwotCQlyZXR1cm4gKE5VTEwpOworCQlyZXR1cm4gTlVMTDsKIAl9 CiAKLQlyZXR1cm4gKHZhbHVlKTsKKwlyZXR1cm4gdmFsdWU7CiB9CiAKIGNo YXIgKgpAQCAtNDQ1LDcgKzQ0NSw3IEBAIFBHVFlQRVNudW1lcmljX3RvX2Fz YyhudW1lcmljICpudW0sIGludCBkc2NhbGUpCiAJLyogZ2V0X3N0cl9mcm9t X3ZhciBtYXkgY2hhbmdlIGl0cyBhcmd1bWVudCAqLwogCXMgPSBnZXRfc3Ry X2Zyb21fdmFyKG51bWNvcHksIGRzY2FsZSk7CiAJUEdUWVBFU251bWVyaWNf ZnJlZShudW1jb3B5KTsKLQlyZXR1cm4gKHMpOworCXJldHVybiBzOwogfQog CiAvKiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3BndHlwZXNsaWIvdGltZXN0YW1wLmMgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3BndHlwZXNsaWIvdGltZXN0YW1wLmMKaW5kZXggNzg5MzEzOTllNi4u ZmE1YjMyZWQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9w Z3R5cGVzbGliL3RpbWVzdGFtcC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvcGd0eXBlc2xpYi90aW1lc3RhbXAuYwpAQCAtMjI0LDE0ICsyMjQsMTQg QEAgUEdUWVBFU3RpbWVzdGFtcF9mcm9tX2FzYyhjaGFyICpzdHIsIGNoYXIg KiplbmRwdHIpCiAJaWYgKHN0cmxlbihzdHIpID4gTUFYREFURUxFTikKIAl7 CiAJCWVycm5vID0gUEdUWVBFU19UU19CQURfVElNRVNUQU1QOwotCQlyZXR1 cm4gKG5vcmVzdWx0KTsKKwkJcmV0dXJuIG5vcmVzdWx0OwogCX0KIAogCWlm IChQYXJzZURhdGVUaW1lKHN0ciwgbG93c3RyLCBmaWVsZCwgZnR5cGUsICZu ZiwgcHRyKSAhPSAwIHx8CiAJCURlY29kZURhdGVUaW1lKGZpZWxkLCBmdHlw ZSwgbmYsICZkdHlwZSwgdG0sICZmc2VjLCAwKSAhPSAwKQogCXsKIAkJZXJy bm8gPSBQR1RZUEVTX1RTX0JBRF9USU1FU1RBTVA7Ci0JCXJldHVybiAobm9y ZXN1bHQpOworCQlyZXR1cm4gbm9yZXN1bHQ7CiAJfQogCiAJc3dpdGNoIChk dHlwZSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBQR1RZUEVTdGltZXN0YW1wX2Zy b21fYXNjKGNoYXIgKnN0ciwgY2hhciAqKmVuZHB0cikKIAkJCWlmICh0bTJ0 aW1lc3RhbXAodG0sIGZzZWMsIE5VTEwsICZyZXN1bHQpICE9IDApCiAJCQl7 CiAJCQkJZXJybm8gPSBQR1RZUEVTX1RTX0JBRF9USU1FU1RBTVA7Ci0JCQkJ cmV0dXJuIChub3Jlc3VsdCk7CisJCQkJcmV0dXJuIG5vcmVzdWx0OwogCQkJ fQogCQkJYnJlYWs7CiAKQEAgLTI1OCwxMSArMjU4LDExIEBAIFBHVFlQRVN0 aW1lc3RhbXBfZnJvbV9hc2MoY2hhciAqc3RyLCBjaGFyICoqZW5kcHRyKQog CiAJCWNhc2UgRFRLX0lOVkFMSUQ6CiAJCQllcnJubyA9IFBHVFlQRVNfVFNf QkFEX1RJTUVTVEFNUDsKLQkJCXJldHVybiAobm9yZXN1bHQpOworCQkJcmV0 dXJuIG5vcmVzdWx0OwogCiAJCWRlZmF1bHQ6CiAJCQllcnJubyA9IFBHVFlQ RVNfVFNfQkFEX1RJTUVTVEFNUDsKLQkJCXJldHVybiAobm9yZXN1bHQpOwor CQkJcmV0dXJuIG5vcmVzdWx0OwogCX0KIAogCS8qIEFkanVzdFRpbWVzdGFt cEZvclR5cG1vZCgmcmVzdWx0LCB0eXBtb2QpOyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcuYyBiL3NyYy9pbnRl cmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmMKaW5kZXggYmFkMGE2NjdmYy4u NTM2MTg1ZmExYyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9w cmVwcm9jL2VjcGcuYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvZWNwZy5jCkBAIC0xMzcsNyArMTM3LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqY29uc3QgYXJndltdKQogCWlmIChmaW5kX215X2V4ZWMoYXJndlsw XSwgbXlfZXhlY19wYXRoKSA8IDApCiAJewogCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBsb2NhdGUgbXkgb3duIGV4ZWN1dGFibGUgcGF0 aFxuIiksIGFyZ3ZbMF0pOwotCQlyZXR1cm4gKElMTEVHQUxfT1BUSU9OKTsK KwkJcmV0dXJuIElMTEVHQUxfT1BUSU9OOwogCX0KIAogCWlmIChhcmdjID4g MSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICpj b25zdCBhcmd2W10pCiAJewogCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5v IGlucHV0IGZpbGVzIHNwZWNpZmllZFxuIiksIHByb2duYW1lKTsKIAkJZnBy aW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLlxuIiksIGFyZ3ZbMF0pOwotCQlyZXR1cm4gKElMTEVHQUxf T1BUSU9OKTsKKwkJcmV0dXJuIElMTEVHQUxfT1BUSU9OOwogCX0KIAllbHNl CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9j L2VjcGcuaGVhZGVyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2Vj cGcuaGVhZGVyCmluZGV4IDI1NjIzNjZiYmUuLmUyOGQ3ZTY5NGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmhlYWRl cgorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5oZWFk ZXIKQEAgLTE0Miw3ICsxNDIsNyBAQCBjYXQyX3N0cihjaGFyICpzdHIxLCBj aGFyICpzdHIyKQogCXN0cmNhdChyZXNfc3RyLCBzdHIyKTsKIAlmcmVlKHN0 cjEpOwogCWZyZWUoc3RyMik7Ci0JcmV0dXJuKHJlc19zdHIpOworCXJldHVy biByZXNfc3RyOwogfQogCiBzdGF0aWMgY2hhciAqCkBAIC0xNjIsNyArMTYy LDcgQEAgY2F0X3N0cihpbnQgY291bnQsIC4uLikKIAogCXZhX2VuZChhcmdz KTsKIAotCXJldHVybihyZXNfc3RyKTsKKwlyZXR1cm4gcmVzX3N0cjsKIH0K IAogc3RhdGljIGNoYXIgKgpAQCAtMTc0LDcgKzE3NCw3IEBAIG1ha2UyX3N0 cihjaGFyICpzdHIxLCBjaGFyICpzdHIyKQogCXN0cmNhdChyZXNfc3RyLCBz dHIyKTsKIAlmcmVlKHN0cjEpOwogCWZyZWUoc3RyMik7Ci0JcmV0dXJuKHJl c19zdHIpOworCXJldHVybiByZXNfc3RyOwogfQogCiBzdGF0aWMgY2hhciAq CkBAIC0xODgsNyArMTg4LDcgQEAgbWFrZTNfc3RyKGNoYXIgKnN0cjEsIGNo YXIgKnN0cjIsIGNoYXIgKnN0cjMpCiAJZnJlZShzdHIxKTsKIAlmcmVlKHN0 cjIpOwogCWZyZWUoc3RyMyk7Ci0JcmV0dXJuKHJlc19zdHIpOworCXJldHVy biByZXNfc3RyOwogfQogCiAvKiBhbmQgdGhlIHJlc3QgKi8KQEAgLTIzMyw3 ICsyMzMsNyBAQCBjcmVhdGVfcXVlc3Rpb25tYXJrcyhjaGFyICpuYW1lLCBi b29sIGFycmF5KQogCS8qIHJlbW92ZWQgdGhlIHRyYWlsaW5nICIgLCIgKi8K IAogCXJlc3VsdFtzdHJsZW4ocmVzdWx0KS0zXSA9ICdcMCc7Ci0JcmV0dXJu KHJlc3VsdCk7CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGNoYXIg KgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3Bn Yy5sIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sCmluZGV4 IDM1OThhMjAwZDAuLmYwOGNmZWRlYjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubAorKysgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3ByZXByb2MvcGdjLmwKQEAgLTc2OCw3ICs3NjgsNyBAQCBjcHBs aW5lCQkJe3NwYWNlfSojKFteaV1bQS1aYS16XSp8e2lmfXx7aWZkZWZ9fHtp Zm5kZWZ9fHtpbXBvcnR9KSgoXC9cKlteKi9dKlwqKwogCQkJCQl9CiA8U1FM Pjp7aWRlbnRpZmllcn0oKCgiLT4ifFwuKXtpZGVudGlmaWVyfSl8KFxbe2Fy cmF5fVxdKSkqCXsKIAkJCQkJCWJhc2VfeXlsdmFsLnN0ciA9IG1tX3N0cmR1 cCh5eXRleHQrMSk7Ci0JCQkJCQlyZXR1cm4oQ1ZBUklBQkxFKTsKKwkJCQkJ CXJldHVybiBDVkFSSUFCTEU7CiAJCQkJCX0KIDxTUUw+e2lkZW50aWZpZXJ9 CXsKIAkJCQkJCWNvbnN0IFNjYW5LZXl3b3JkICAqa2V5d29yZDsKQEAgLTgz Miw3ICs4MzIsNyBAQCBjcHBsaW5lCQkJe3NwYWNlfSojKFteaV1bQS1aYS16 XSp8e2lmfXx7aWZkZWZ9fHtpZm5kZWZ9fHtpbXBvcnR9KSgoXC9cKlteKi9d KlwqKwogCQkJCQkJZWxzZQogCQkJCQkJewogCQkJCQkJCWJhc2VfeXlsdmFs LnN0ciA9IG1tX3N0cmR1cCh5eXRleHQpOwotCQkJCQkJCXJldHVybihDUFBf TElORSk7CisJCQkJCQkJcmV0dXJuIENQUF9MSU5FOwogCQkJCQkJfQogCQkJ CQl9CiA8Qz57Y3BwaW5jbHVkZV9uZXh0fQkJewpAQCAtODQ0LDEyICs4NDQs MTIgQEAgY3BwbGluZQkJCXtzcGFjZX0qIyhbXmldW0EtWmEtel0qfHtpZn18 e2lmZGVmfXx7aWZuZGVmfXx7aW1wb3J0fSkoKFwvXCpbXiovXSpcKisKIAkJ CQkJCWVsc2UKIAkJCQkJCXsKIAkJCQkJCQliYXNlX3l5bHZhbC5zdHIgPSBt bV9zdHJkdXAoeXl0ZXh0KTsKLQkJCQkJCQlyZXR1cm4oQ1BQX0xJTkUpOwor CQkJCQkJCXJldHVybiBDUFBfTElORTsKIAkJCQkJCX0KIAkJCQkJfQogPEMs U1FMPntjcHBsaW5lfQl7CiAJCQkJCQliYXNlX3l5bHZhbC5zdHIgPSBtbV9z dHJkdXAoeXl0ZXh0KTsKLQkJCQkJCXJldHVybihDUFBfTElORSk7CisJCQkJ CQlyZXR1cm4gQ1BQX0xJTkU7CiAJCQkJCX0KIDxDPntpZGVudGlmaWVyfQkJ ewogCQkJCQkJY29uc3QgU2NhbktleXdvcmQJCSprZXl3b3JkOwpAQCAtODc5 LDM4ICs4NzksMzggQEAgY3BwbGluZQkJCXtzcGFjZX0qIyhbXmldW0EtWmEt el0qfHtpZn18e2lmZGVmfXx7aWZuZGVmfXx7aW1wb3J0fSkoKFwvXCpbXiov XSpcKisKIAkJCQkJCX0KIAkJCQkJfQogPEM+e3hjc3RvcH0JCQl7IG1tZXJy b3IoUEFSU0VfRVJST1IsIEVUX0VSUk9SLCAibmVzdGVkIC8qIC4uLiAqLyBj b21tZW50cyIpOyB9Ci08Qz4iOiIJCQkJeyByZXR1cm4oJzonKTsgfQotPEM+ IjsiCQkJCXsgcmV0dXJuKCc7Jyk7IH0KLTxDPiIsIgkJCQl7IHJldHVybign LCcpOyB9Ci08Qz4iKiIJCQkJeyByZXR1cm4oJyonKTsgfQotPEM+IiUiCQkJ CXsgcmV0dXJuKCclJyk7IH0KLTxDPiIvIgkJCQl7IHJldHVybignLycpOyB9 Ci08Qz4iKyIJCQkJeyByZXR1cm4oJysnKTsgfQotPEM+Ii0iCQkJCXsgcmV0 dXJuKCctJyk7IH0KLTxDPiIoIgkJCQl7IHBhcmVudGhzX29wZW4rKzsgcmV0 dXJuKCcoJyk7IH0KLTxDPiIpIgkJCQl7IHBhcmVudGhzX29wZW4tLTsgcmV0 dXJuKCcpJyk7IH0KKzxDPiI6IgkJCQl7IHJldHVybiAnOic7IH0KKzxDPiI7 IgkJCQl7IHJldHVybiAnOyc7IH0KKzxDPiIsIgkJCQl7IHJldHVybiAnLCc7 IH0KKzxDPiIqIgkJCQl7IHJldHVybiAnKic7IH0KKzxDPiIlIgkJCQl7IHJl dHVybiAnJSc7IH0KKzxDPiIvIgkJCQl7IHJldHVybiAnLyc7IH0KKzxDPiIr IgkJCQl7IHJldHVybiAnKyc7IH0KKzxDPiItIgkJCQl7IHJldHVybiAnLSc7 IH0KKzxDPiIoIgkJCQl7IHBhcmVudGhzX29wZW4rKzsgcmV0dXJuICcoJzsg fQorPEM+IikiCQkJCXsgcGFyZW50aHNfb3Blbi0tOyByZXR1cm4gJyknOyB9 CiA8Qyx4c2tpcD57c3BhY2V9CQl7IEVDSE87IH0KLTxDPlx7CQkJCXsgcmV0 dXJuKCd7Jyk7IH0KLTxDPlx9CQkJCXsgcmV0dXJuKCd9Jyk7IH0KLTxDPlxb CQkJCXsgcmV0dXJuKCdbJyk7IH0KLTxDPlxdCQkJCXsgcmV0dXJuKCddJyk7 IH0KLTxDPlw9CQkJCXsgcmV0dXJuKCc9Jyk7IH0KLTxDPiItPiIJCQkJeyBy ZXR1cm4oU19NRU1CRVIpOyB9Ci08Qz4iPj4iCQkJCXsgcmV0dXJuKFNfUlNI SUZUKTsgfQotPEM+Ijw8IgkJCQl7IHJldHVybihTX0xTSElGVCk7IH0KLTxD PiJ8fCIJCQkJeyByZXR1cm4oU19PUik7IH0KLTxDPiImJiIJCQkJeyByZXR1 cm4oU19BTkQpOyB9Ci08Qz4iKysiCQkJCXsgcmV0dXJuKFNfSU5DKTsgfQot PEM+Ii0tIgkJCQl7IHJldHVybihTX0RFQyk7IH0KLTxDPiI9PSIJCQkJeyBy ZXR1cm4oU19FUVVBTCk7IH0KLTxDPiIhPSIJCQkJeyByZXR1cm4oU19ORVFV QUwpOyB9Ci08Qz4iKz0iCQkJCXsgcmV0dXJuKFNfQUREKTsgfQotPEM+Ii09 IgkJCQl7IHJldHVybihTX1NVQik7IH0KLTxDPiIqPSIJCQkJeyByZXR1cm4o U19NVUwpOyB9Ci08Qz4iLz0iCQkJCXsgcmV0dXJuKFNfRElWKTsgfQotPEM+ IiU9IgkJCQl7IHJldHVybihTX01PRCk7IH0KLTxDPiItPioiCQkJeyByZXR1 cm4oU19NRU1QT0lOVCk7IH0KLTxDPiIuKiIJCQkJeyByZXR1cm4oU19ET1RQ T0lOVCk7IH0KKzxDPlx7CQkJCXsgcmV0dXJuICd7JzsgfQorPEM+XH0JCQkJ eyByZXR1cm4gJ30nOyB9Cis8Qz5cWwkJCQl7IHJldHVybiAnWyc7IH0KKzxD PlxdCQkJCXsgcmV0dXJuICddJzsgfQorPEM+XD0JCQkJeyByZXR1cm4gJz0n OyB9Cis8Qz4iLT4iCQkJCXsgcmV0dXJuIFNfTUVNQkVSOyB9Cis8Qz4iPj4i CQkJCXsgcmV0dXJuIFNfUlNISUZUOyB9Cis8Qz4iPDwiCQkJCXsgcmV0dXJu IFNfTFNISUZUOyB9Cis8Qz4ifHwiCQkJCXsgcmV0dXJuIFNfT1I7IH0KKzxD PiImJiIJCQkJeyByZXR1cm4gU19BTkQ7IH0KKzxDPiIrKyIJCQkJeyByZXR1 cm4gU19JTkM7IH0KKzxDPiItLSIJCQkJeyByZXR1cm4gU19ERUM7IH0KKzxD PiI9PSIJCQkJeyByZXR1cm4gU19FUVVBTDsgfQorPEM+IiE9IgkJCQl7IHJl dHVybiBTX05FUVVBTDsgfQorPEM+Iis9IgkJCQl7IHJldHVybiBTX0FERDsg fQorPEM+Ii09IgkJCQl7IHJldHVybiBTX1NVQjsgfQorPEM+Iio9IgkJCQl7 IHJldHVybiBTX01VTDsgfQorPEM+Ii89IgkJCQl7IHJldHVybiBTX0RJVjsg fQorPEM+IiU9IgkJCQl7IHJldHVybiBTX01PRDsgfQorPEM+Ii0+KiIJCQl7 IHJldHVybiBTX01FTVBPSU5UOyB9Cis8Qz4iLioiCQkJCXsgcmV0dXJuIFNf RE9UUE9JTlQ7IH0KIDxDPntvdGhlcn0JCQl7IHJldHVybiBTX0FOWVRISU5H OyB9CiA8Qz57ZXhlY19zcWx9e2RlZmluZX17c3BhY2V9Kgl7IEJFR0lOKGRl Zl9pZGVudCk7IH0KIDxDPntpbmZvcm1peF9zcGVjaWFsfXtkZWZpbmV9e3Nw YWNlfSoJewpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3R5cGUuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy90eXBl LmMKaW5kZXggNzUwY2RmOWM3Yy4uMjU2YTNjMzk1YyAxMDA2NDQKLS0tIGEv c3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3R5cGUuYworKysgYi9zcmMv aW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvdHlwZS5jCkBAIC02OSw3ICs2OSw3 IEBAIEVDUEdzdHJ1Y3RfbWVtYmVyX2R1cChzdHJ1Y3QgRUNQR3N0cnVjdF9t ZW1iZXIgKnJtKQogCQlybSA9IHJtLT5uZXh0OwogCX0KIAotCXJldHVybiAo bmV3KTsKKwlyZXR1cm4gbmV3OwogfQogCiAvKiBUaGUgTkFNRSBhcmd1bWVu dCBpcyBjb3BpZWQuIFRoZSB0eXBlIGFyZ3VtZW50IGlzIHByZXNlcnZlZCBh cyBhIHBvaW50ZXIuICovCkBAIC0xMzUsNzggKzEzNSw3OCBAQCBnZXRfdHlw ZShlbnVtIEVDUEd0dHlwZSB0eXBlKQogCXN3aXRjaCAodHlwZSkKIAl7CiAJ CWNhc2UgRUNQR3RfY2hhcjoKLQkJCXJldHVybiAoIkVDUEd0X2NoYXIiKTsK KwkJCXJldHVybiAiRUNQR3RfY2hhciI7CiAJCQlicmVhazsKIAkJY2FzZSBF Q1BHdF91bnNpZ25lZF9jaGFyOgotCQkJcmV0dXJuICgiRUNQR3RfdW5zaWdu ZWRfY2hhciIpOworCQkJcmV0dXJuICJFQ1BHdF91bnNpZ25lZF9jaGFyIjsK IAkJCWJyZWFrOwogCQljYXNlIEVDUEd0X3Nob3J0OgotCQkJcmV0dXJuICgi RUNQR3Rfc2hvcnQiKTsKKwkJCXJldHVybiAiRUNQR3Rfc2hvcnQiOwogCQkJ YnJlYWs7CiAJCWNhc2UgRUNQR3RfdW5zaWduZWRfc2hvcnQ6Ci0JCQlyZXR1 cm4gKCJFQ1BHdF91bnNpZ25lZF9zaG9ydCIpOworCQkJcmV0dXJuICJFQ1BH dF91bnNpZ25lZF9zaG9ydCI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHdF9p bnQ6Ci0JCQlyZXR1cm4gKCJFQ1BHdF9pbnQiKTsKKwkJCXJldHVybiAiRUNQ R3RfaW50IjsKIAkJCWJyZWFrOwogCQljYXNlIEVDUEd0X3Vuc2lnbmVkX2lu dDoKLQkJCXJldHVybiAoIkVDUEd0X3Vuc2lnbmVkX2ludCIpOworCQkJcmV0 dXJuICJFQ1BHdF91bnNpZ25lZF9pbnQiOwogCQkJYnJlYWs7CiAJCWNhc2Ug RUNQR3RfbG9uZzoKLQkJCXJldHVybiAoIkVDUEd0X2xvbmciKTsKKwkJCXJl dHVybiAiRUNQR3RfbG9uZyI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHdF91 bnNpZ25lZF9sb25nOgotCQkJcmV0dXJuICgiRUNQR3RfdW5zaWduZWRfbG9u ZyIpOworCQkJcmV0dXJuICJFQ1BHdF91bnNpZ25lZF9sb25nIjsKIAkJCWJy ZWFrOwogCQljYXNlIEVDUEd0X2xvbmdfbG9uZzoKLQkJCXJldHVybiAoIkVD UEd0X2xvbmdfbG9uZyIpOworCQkJcmV0dXJuICJFQ1BHdF9sb25nX2xvbmci OwogCQkJYnJlYWs7CiAJCWNhc2UgRUNQR3RfdW5zaWduZWRfbG9uZ19sb25n OgotCQkJcmV0dXJuICgiRUNQR3RfdW5zaWduZWRfbG9uZ19sb25nIik7CisJ CQlyZXR1cm4gIkVDUEd0X3Vuc2lnbmVkX2xvbmdfbG9uZyI7CiAJCQlicmVh azsKIAkJY2FzZSBFQ1BHdF9mbG9hdDoKLQkJCXJldHVybiAoIkVDUEd0X2Zs b2F0Iik7CisJCQlyZXR1cm4gIkVDUEd0X2Zsb2F0IjsKIAkJCWJyZWFrOwog CQljYXNlIEVDUEd0X2RvdWJsZToKLQkJCXJldHVybiAoIkVDUEd0X2RvdWJs ZSIpOworCQkJcmV0dXJuICJFQ1BHdF9kb3VibGUiOwogCQkJYnJlYWs7CiAJ CWNhc2UgRUNQR3RfYm9vbDoKLQkJCXJldHVybiAoIkVDUEd0X2Jvb2wiKTsK KwkJCXJldHVybiAiRUNQR3RfYm9vbCI7CiAJCQlicmVhazsKIAkJY2FzZSBF Q1BHdF92YXJjaGFyOgotCQkJcmV0dXJuICgiRUNQR3RfdmFyY2hhciIpOwor CQkJcmV0dXJuICJFQ1BHdF92YXJjaGFyIjsKIAkJY2FzZSBFQ1BHdF9OT19J TkRJQ0FUT1I6CS8qIG5vIGluZGljYXRvciAqLwotCQkJcmV0dXJuICgiRUNQ R3RfTk9fSU5ESUNBVE9SIik7CisJCQlyZXR1cm4gIkVDUEd0X05PX0lORElD QVRPUiI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHdF9jaGFyX3ZhcmlhYmxl OgkvKiBzdHJpbmcgdGhhdCBzaG91bGQgbm90IGJlIHF1b3RlZCAqLwotCQkJ cmV0dXJuICgiRUNQR3RfY2hhcl92YXJpYWJsZSIpOworCQkJcmV0dXJuICJF Q1BHdF9jaGFyX3ZhcmlhYmxlIjsKIAkJCWJyZWFrOwogCQljYXNlIEVDUEd0 X2NvbnN0OgkJLyogY29uc3RhbnQgc3RyaW5nIHF1b3RlZCAqLwotCQkJcmV0 dXJuICgiRUNQR3RfY29uc3QiKTsKKwkJCXJldHVybiAiRUNQR3RfY29uc3Qi OwogCQkJYnJlYWs7CiAJCWNhc2UgRUNQR3RfZGVjaW1hbDoKLQkJCXJldHVy biAoIkVDUEd0X2RlY2ltYWwiKTsKKwkJCXJldHVybiAiRUNQR3RfZGVjaW1h bCI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHdF9udW1lcmljOgotCQkJcmV0 dXJuICgiRUNQR3RfbnVtZXJpYyIpOworCQkJcmV0dXJuICJFQ1BHdF9udW1l cmljIjsKIAkJCWJyZWFrOwogCQljYXNlIEVDUEd0X2ludGVydmFsOgotCQkJ cmV0dXJuICgiRUNQR3RfaW50ZXJ2YWwiKTsKKwkJCXJldHVybiAiRUNQR3Rf aW50ZXJ2YWwiOwogCQkJYnJlYWs7CiAJCWNhc2UgRUNQR3RfZGVzY3JpcHRv cjoKLQkJCXJldHVybiAoIkVDUEd0X2Rlc2NyaXB0b3IiKTsKKwkJCXJldHVy biAiRUNQR3RfZGVzY3JpcHRvciI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BH dF9zcWxkYToKLQkJCXJldHVybiAoIkVDUEd0X3NxbGRhIik7CisJCQlyZXR1 cm4gIkVDUEd0X3NxbGRhIjsKIAkJCWJyZWFrOwogCQljYXNlIEVDUEd0X2Rh dGU6Ci0JCQlyZXR1cm4gKCJFQ1BHdF9kYXRlIik7CisJCQlyZXR1cm4gIkVD UEd0X2RhdGUiOwogCQkJYnJlYWs7CiAJCWNhc2UgRUNQR3RfdGltZXN0YW1w OgotCQkJcmV0dXJuICgiRUNQR3RfdGltZXN0YW1wIik7CisJCQlyZXR1cm4g IkVDUEd0X3RpbWVzdGFtcCI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHdF9z dHJpbmc6Ci0JCQlyZXR1cm4gKCJFQ1BHdF9zdHJpbmciKTsKKwkJCXJldHVy biAiRUNQR3Rfc3RyaW5nIjsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJ bW1lcnJvcihQQVJTRV9FUlJPUiwgRVRfRVJST1IsICJ1bnJlY29nbml6ZWQg dmFyaWFibGUgdHlwZSBjb2RlICVkIiwgdHlwZSk7CkBAIC02NzQsNTEgKzY3 NCw1MSBAQCBnZXRfZHR5cGUoZW51bSBFQ1BHZHR5cGUgdHlwZSkKIAlzd2l0 Y2ggKHR5cGUpCiAJewogCQljYXNlIEVDUEdkX2NvdW50OgotCQkJcmV0dXJu ICgiRUNQR2RfY291bnRyIik7CisJCQlyZXR1cm4gIkVDUEdkX2NvdW50ciI7 CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHZF9kYXRhOgotCQkJcmV0dXJuICgi RUNQR2RfZGF0YSIpOworCQkJcmV0dXJuICJFQ1BHZF9kYXRhIjsKIAkJCWJy ZWFrOwogCQljYXNlIEVDUEdkX2RpX2NvZGU6Ci0JCQlyZXR1cm4gKCJFQ1BH ZF9kaV9jb2RlIik7CisJCQlyZXR1cm4gIkVDUEdkX2RpX2NvZGUiOwogCQkJ YnJlYWs7CiAJCWNhc2UgRUNQR2RfZGlfcHJlY2lzaW9uOgotCQkJcmV0dXJu ICgiRUNQR2RfZGlfcHJlY2lzaW9uIik7CisJCQlyZXR1cm4gIkVDUEdkX2Rp X3ByZWNpc2lvbiI7CiAJCQlicmVhazsKIAkJY2FzZSBFQ1BHZF9pbmRpY2F0 b3I6Ci0JCQlyZXR1cm4gKCJFQ1BHZF9pbmRpY2F0b3IiKTsKKwkJCXJldHVy biAiRUNQR2RfaW5kaWNhdG9yIjsKIAkJCWJyZWFrOwogCQljYXNlIEVDUEdk X2tleV9tZW1iZXI6Ci0JCQlyZXR1cm4gKCJFQ1BHZF9rZXlfbWVtYmVyIik7 CisJCQlyZXR1cm4gIkVDUEdkX2tleV9tZW1iZXIiOwogCQkJYnJlYWs7CiAJ CWNhc2UgRUNQR2RfbGVuZ3RoOgotCQkJcmV0dXJuICgiRUNQR2RfbGVuZ3Ro Iik7CisJCQlyZXR1cm4gIkVDUEdkX2xlbmd0aCI7CiAJCQlicmVhazsKIAkJ Y2FzZSBFQ1BHZF9uYW1lOgotCQkJcmV0dXJuICgiRUNQR2RfbmFtZSIpOwor CQkJcmV0dXJuICJFQ1BHZF9uYW1lIjsKIAkJCWJyZWFrOwogCQljYXNlIEVD UEdkX251bGxhYmxlOgotCQkJcmV0dXJuICgiRUNQR2RfbnVsbGFibGUiKTsK KwkJCXJldHVybiAiRUNQR2RfbnVsbGFibGUiOwogCQkJYnJlYWs7CiAJCWNh c2UgRUNQR2Rfb2N0ZXQ6Ci0JCQlyZXR1cm4gKCJFQ1BHZF9vY3RldCIpOwor CQkJcmV0dXJuICJFQ1BHZF9vY3RldCI7CiAJCQlicmVhazsKIAkJY2FzZSBF Q1BHZF9wcmVjaXNpb246Ci0JCQlyZXR1cm4gKCJFQ1BHZF9wcmVjaXNpb24i KTsKKwkJCXJldHVybiAiRUNQR2RfcHJlY2lzaW9uIjsKIAkJCWJyZWFrOwog CQljYXNlIEVDUEdkX3JldF9sZW5ndGg6Ci0JCQlyZXR1cm4gKCJFQ1BHZF9y ZXRfbGVuZ3RoIik7CisJCQlyZXR1cm4gIkVDUEdkX3JldF9sZW5ndGgiOwog CQljYXNlIEVDUEdkX3JldF9vY3RldDoKLQkJCXJldHVybiAoIkVDUEdkX3Jl dF9vY3RldCIpOworCQkJcmV0dXJuICJFQ1BHZF9yZXRfb2N0ZXQiOwogCQkJ YnJlYWs7CiAJCWNhc2UgRUNQR2Rfc2NhbGU6Ci0JCQlyZXR1cm4gKCJFQ1BH ZF9zY2FsZSIpOworCQkJcmV0dXJuICJFQ1BHZF9zY2FsZSI7CiAJCQlicmVh azsKIAkJY2FzZSBFQ1BHZF90eXBlOgotCQkJcmV0dXJuICgiRUNQR2RfdHlw ZSIpOworCQkJcmV0dXJuICJFQ1BHZF90eXBlIjsKIAkJCWJyZWFrOwogCQlj YXNlIEVDUEdkX2NhcmRpbmFsaXR5OgotCQkJcmV0dXJuICgiRUNQR2RfY2Fy ZGluYWxpdHkiKTsKKwkJCXJldHVybiAiRUNQR2RfY2FyZGluYWxpdHkiOwog CQlkZWZhdWx0OgogCQkJbW1lcnJvcihQQVJTRV9FUlJPUiwgRVRfRVJST1Is ICJ1bnJlY29nbml6ZWQgZGVzY3JpcHRvciBpdGVtIGNvZGUgJWQiLCB0eXBl KTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvdmFyaWFibGUuYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy92 YXJpYWJsZS5jCmluZGV4IDMxMjI1NzM4ZTAuLjM5YmYzYjI0NzQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy92YXJpYWJsZS5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy92YXJpYWJsZS5j CkBAIC0xOCw3ICsxOCw3IEBAIG5ld192YXJpYWJsZShjb25zdCBjaGFyICpu YW1lLCBzdHJ1Y3QgRUNQR3R5cGUgKnR5cGUsIGludCBicmFjZV9sZXZlbCkK IAlwLT5uZXh0ID0gYWxsdmFyaWFibGVzOwogCWFsbHZhcmlhYmxlcyA9IHA7 CiAKLQlyZXR1cm4gKHApOworCXJldHVybiBwOwogfQogCiBzdGF0aWMgc3Ry dWN0IHZhcmlhYmxlICoKQEAgLTQ0LDEyICs0NCwxMiBAQCBmaW5kX3N0cnVj dF9tZW1iZXIoY2hhciAqbmFtZSwgY2hhciAqc3RyLCBzdHJ1Y3QgRUNQR3N0 cnVjdF9tZW1iZXIgKm1lbWJlcnMsIGludAogCQkJCXN3aXRjaCAobWVtYmVy cy0+dHlwZS0+dHlwZSkKIAkJCQl7CiAJCQkJCWNhc2UgRUNQR3RfYXJyYXk6 Ci0JCQkJCQlyZXR1cm4gKG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9h cnJheV90eXBlKEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJlcnMtPnR5cGUt PnUuZWxlbWVudC0+dHlwZSwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT5z aXplLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPmNvdW50ZXIpLCBtZW1i ZXJzLT50eXBlLT5zaXplKSwgYnJhY2VfbGV2ZWwpKTsKKwkJCQkJCXJldHVy biBuZXdfdmFyaWFibGUobmFtZSwgRUNQR21ha2VfYXJyYXlfdHlwZShFQ1BH bWFrZV9zaW1wbGVfdHlwZShtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnR5 cGUsIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+c2l6ZSwgbWVtYmVycy0+ dHlwZS0+dS5lbGVtZW50LT5jb3VudGVyKSwgbWVtYmVycy0+dHlwZS0+c2l6 ZSksIGJyYWNlX2xldmVsKTsKIAkJCQkJY2FzZSBFQ1BHdF9zdHJ1Y3Q6CiAJ CQkJCWNhc2UgRUNQR3RfdW5pb246Ci0JCQkJCQlyZXR1cm4gKG5ld192YXJp YWJsZShuYW1lLCBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShtZW1iZXJzLT50eXBl LT51Lm1lbWJlcnMsIG1lbWJlcnMtPnR5cGUtPnR5cGUsIG1lbWJlcnMtPnR5 cGUtPnR5cGVfbmFtZSwgbWVtYmVycy0+dHlwZS0+c3RydWN0X3NpemVvZiks IGJyYWNlX2xldmVsKSk7CisJCQkJCQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5h bWUsIEVDUEdtYWtlX3N0cnVjdF90eXBlKG1lbWJlcnMtPnR5cGUtPnUubWVt YmVycywgbWVtYmVycy0+dHlwZS0+dHlwZSwgbWVtYmVycy0+dHlwZS0+dHlw ZV9uYW1lLCBtZW1iZXJzLT50eXBlLT5zdHJ1Y3Rfc2l6ZW9mKSwgYnJhY2Vf bGV2ZWwpOwogCQkJCQlkZWZhdWx0OgotCQkJCQkJcmV0dXJuIChuZXdfdmFy aWFibGUobmFtZSwgRUNQR21ha2Vfc2ltcGxlX3R5cGUobWVtYmVycy0+dHlw ZS0+dHlwZSwgbWVtYmVycy0+dHlwZS0+c2l6ZSwgbWVtYmVycy0+dHlwZS0+ Y291bnRlciksIGJyYWNlX2xldmVsKSk7CisJCQkJCQlyZXR1cm4gbmV3X3Zh cmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJlcnMtPnR5 cGUtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPnNpemUsIG1lbWJlcnMtPnR5cGUt PmNvdW50ZXIpLCBicmFjZV9sZXZlbCk7CiAJCQkJfQogCQkJfQogCQkJZWxz ZQpAQCAtOTEsMjYgKzkxLDI2IEBAIGZpbmRfc3RydWN0X21lbWJlcihjaGFy ICpuYW1lLCBjaGFyICpzdHIsIHN0cnVjdCBFQ1BHc3RydWN0X21lbWJlciAq bWVtYmVycywgaW50CiAJCQkJCQlzd2l0Y2ggKG1lbWJlcnMtPnR5cGUtPnUu ZWxlbWVudC0+dHlwZSkKIAkJCQkJCXsKIAkJCQkJCQljYXNlIEVDUEd0X2Fy cmF5OgotCQkJCQkJCQlyZXR1cm4gKG5ld192YXJpYWJsZShuYW1lLCBFQ1BH bWFrZV9hcnJheV90eXBlKEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJlcnMt PnR5cGUtPnUuZWxlbWVudC0+dS5lbGVtZW50LT50eXBlLCBtZW1iZXJzLT50 eXBlLT51LmVsZW1lbnQtPnUuZWxlbWVudC0+c2l6ZSwgbWVtYmVycy0+dHlw ZS0+dS5lbGVtZW50LT51LmVsZW1lbnQtPmNvdW50ZXIpLCBtZW1iZXJzLT50 eXBlLT51LmVsZW1lbnQtPnNpemUpLCBicmFjZV9sZXZlbCkpOworCQkJCQkJ CQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX2FycmF5X3R5 cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUobWVtYmVycy0+dHlwZS0+dS5lbGVt ZW50LT51LmVsZW1lbnQtPnR5cGUsIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVu dC0+dS5lbGVtZW50LT5zaXplLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQt PnUuZWxlbWVudC0+Y291bnRlciksIG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVu dC0+c2l6ZSksIGJyYWNlX2xldmVsKTsKIAkJCQkJCQljYXNlIEVDUEd0X3N0 cnVjdDoKIAkJCQkJCQljYXNlIEVDUEd0X3VuaW9uOgotCQkJCQkJCQlyZXR1 cm4gKG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZSht ZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywgbWVtYmVycy0+ dHlwZS0+dS5lbGVtZW50LT50eXBlLCBtZW1iZXJzLT50eXBlLT51LmVsZW1l bnQtPnR5cGVfbmFtZSwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT5zdHJ1 Y3Rfc2l6ZW9mKSwgYnJhY2VfbGV2ZWwpKTsKKwkJCQkJCQkJcmV0dXJuIG5l d192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShtZW1iZXJz LT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywgbWVtYmVycy0+dHlwZS0+ dS5lbGVtZW50LT50eXBlLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnR5 cGVfbmFtZSwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT5zdHJ1Y3Rfc2l6 ZW9mKSwgYnJhY2VfbGV2ZWwpOwogCQkJCQkJCWRlZmF1bHQ6Ci0JCQkJCQkJ CXJldHVybiAobmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90 eXBlKG1lbWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+dHlwZSwgbWVtYmVycy0+ dHlwZS0+dS5lbGVtZW50LT5zaXplLCBtZW1iZXJzLT50eXBlLT51LmVsZW1l bnQtPmNvdW50ZXIpLCBicmFjZV9sZXZlbCkpOworCQkJCQkJCQlyZXR1cm4g bmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90eXBlKG1lbWJl cnMtPnR5cGUtPnUuZWxlbWVudC0+dHlwZSwgbWVtYmVycy0+dHlwZS0+dS5l bGVtZW50LT5zaXplLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPmNvdW50 ZXIpLCBicmFjZV9sZXZlbCk7CiAJCQkJCQl9CiAJCQkJCQlicmVhazsKIAkJ CQkJY2FzZSAnLSc6CiAJCQkJCQlpZiAobWVtYmVycy0+dHlwZS0+dHlwZSA9 PSBFQ1BHdF9hcnJheSkKLQkJCQkJCQlyZXR1cm4gKGZpbmRfc3RydWN0X21l bWJlcihuYW1lLCArK2VuZCwgbWVtYmVycy0+dHlwZS0+dS5lbGVtZW50LT51 Lm1lbWJlcnMsIGJyYWNlX2xldmVsKSk7CisJCQkJCQkJcmV0dXJuIGZpbmRf c3RydWN0X21lbWJlcihuYW1lLCArK2VuZCwgbWVtYmVycy0+dHlwZS0+dS5l bGVtZW50LT51Lm1lbWJlcnMsIGJyYWNlX2xldmVsKTsKIAkJCQkJCWVsc2UK LQkJCQkJCQlyZXR1cm4gKGZpbmRfc3RydWN0X21lbWJlcihuYW1lLCArK2Vu ZCwgbWVtYmVycy0+dHlwZS0+dS5tZW1iZXJzLCBicmFjZV9sZXZlbCkpOwor CQkJCQkJCXJldHVybiBmaW5kX3N0cnVjdF9tZW1iZXIobmFtZSwgKytlbmQs IG1lbWJlcnMtPnR5cGUtPnUubWVtYmVycywgYnJhY2VfbGV2ZWwpOwogCQkJ CQkJYnJlYWs7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSAnLic6CiAJCQkJ CQlpZiAobWVtYmVycy0+dHlwZS0+dHlwZSA9PSBFQ1BHdF9hcnJheSkKLQkJ CQkJCQlyZXR1cm4gKGZpbmRfc3RydWN0X21lbWJlcihuYW1lLCBlbmQsIG1l bWJlcnMtPnR5cGUtPnUuZWxlbWVudC0+dS5tZW1iZXJzLCBicmFjZV9sZXZl bCkpOworCQkJCQkJCXJldHVybiBmaW5kX3N0cnVjdF9tZW1iZXIobmFtZSwg ZW5kLCBtZW1iZXJzLT50eXBlLT51LmVsZW1lbnQtPnUubWVtYmVycywgYnJh Y2VfbGV2ZWwpOwogCQkJCQkJZWxzZQotCQkJCQkJCXJldHVybiAoZmluZF9z dHJ1Y3RfbWVtYmVyKG5hbWUsIGVuZCwgbWVtYmVycy0+dHlwZS0+dS5tZW1i ZXJzLCBicmFjZV9sZXZlbCkpOworCQkJCQkJCXJldHVybiBmaW5kX3N0cnVj dF9tZW1iZXIobmFtZSwgZW5kLCBtZW1iZXJzLT50eXBlLT51Lm1lbWJlcnMs IGJyYWNlX2xldmVsKTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0Ogog CQkJCQkJbW1mYXRhbChQQVJTRV9FUlJPUiwgImluY29ycmVjdGx5IGZvcm1l ZCB2YXJpYWJsZSBcIiVzXCIiLCBuYW1lKTsKQEAgLTEyMCw3ICsxMjAsNyBA QCBmaW5kX3N0cnVjdF9tZW1iZXIoY2hhciAqbmFtZSwgY2hhciAqc3RyLCBz dHJ1Y3QgRUNQR3N0cnVjdF9tZW1iZXIgKm1lbWJlcnMsIGludAogCQl9CiAJ fQogCi0JcmV0dXJuIChOVUxMKTsKKwlyZXR1cm4gTlVMTDsKIH0KIAogc3Rh dGljIHN0cnVjdCB2YXJpYWJsZSAqCkBAIC0xODUsNyArMTg1LDcgQEAgZmlu ZF9zaW1wbGUoY2hhciAqbmFtZSkKIAkJCXJldHVybiBwOwogCX0KIAotCXJl dHVybiAoTlVMTCk7CisJcmV0dXJuIE5VTEw7CiB9CiAKIC8qIE5vdGUgdGhh dCB0aGlzIGZ1bmN0aW9uIHdpbGwgZW5kIHRoZSBwcm9ncmFtIGluIGNhc2Ug b2YgYW4gdW5rbm93biAqLwpAQCAtMjM2LDEyICsyMzYsMTIgQEAgZmluZF92 YXJpYWJsZShjaGFyICpuYW1lKQogCQkJCXN3aXRjaCAocC0+dHlwZS0+dS5l bGVtZW50LT50eXBlKQogCQkJCXsKIAkJCQkJY2FzZSBFQ1BHdF9hcnJheToK LQkJCQkJCXJldHVybiAobmV3X3ZhcmlhYmxlKG5hbWUsIEVDUEdtYWtlX2Fy cmF5X3R5cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUocC0+dHlwZS0+dS5lbGVt ZW50LT51LmVsZW1lbnQtPnR5cGUsIHAtPnR5cGUtPnUuZWxlbWVudC0+dS5l bGVtZW50LT5zaXplLCBwLT50eXBlLT51LmVsZW1lbnQtPnUuZWxlbWVudC0+ Y291bnRlciksIHAtPnR5cGUtPnUuZWxlbWVudC0+c2l6ZSksIHAtPmJyYWNl X2xldmVsKSk7CisJCQkJCQlyZXR1cm4gbmV3X3ZhcmlhYmxlKG5hbWUsIEVD UEdtYWtlX2FycmF5X3R5cGUoRUNQR21ha2Vfc2ltcGxlX3R5cGUocC0+dHlw ZS0+dS5lbGVtZW50LT51LmVsZW1lbnQtPnR5cGUsIHAtPnR5cGUtPnUuZWxl bWVudC0+dS5lbGVtZW50LT5zaXplLCBwLT50eXBlLT51LmVsZW1lbnQtPnUu ZWxlbWVudC0+Y291bnRlciksIHAtPnR5cGUtPnUuZWxlbWVudC0+c2l6ZSks IHAtPmJyYWNlX2xldmVsKTsKIAkJCQkJY2FzZSBFQ1BHdF9zdHJ1Y3Q6CiAJ CQkJCWNhc2UgRUNQR3RfdW5pb246Ci0JCQkJCQlyZXR1cm4gKG5ld192YXJp YWJsZShuYW1lLCBFQ1BHbWFrZV9zdHJ1Y3RfdHlwZShwLT50eXBlLT51LmVs ZW1lbnQtPnUubWVtYmVycywgcC0+dHlwZS0+dS5lbGVtZW50LT50eXBlLCBw LT50eXBlLT51LmVsZW1lbnQtPnR5cGVfbmFtZSwgcC0+dHlwZS0+dS5lbGVt ZW50LT5zdHJ1Y3Rfc2l6ZW9mKSwgcC0+YnJhY2VfbGV2ZWwpKTsKKwkJCQkJ CXJldHVybiBuZXdfdmFyaWFibGUobmFtZSwgRUNQR21ha2Vfc3RydWN0X3R5 cGUocC0+dHlwZS0+dS5lbGVtZW50LT51Lm1lbWJlcnMsIHAtPnR5cGUtPnUu ZWxlbWVudC0+dHlwZSwgcC0+dHlwZS0+dS5lbGVtZW50LT50eXBlX25hbWUs IHAtPnR5cGUtPnUuZWxlbWVudC0+c3RydWN0X3NpemVvZiksIHAtPmJyYWNl X2xldmVsKTsKIAkJCQkJZGVmYXVsdDoKLQkJCQkJCXJldHVybiAobmV3X3Zh cmlhYmxlKG5hbWUsIEVDUEdtYWtlX3NpbXBsZV90eXBlKHAtPnR5cGUtPnUu ZWxlbWVudC0+dHlwZSwgcC0+dHlwZS0+dS5lbGVtZW50LT5zaXplLCBwLT50 eXBlLT51LmVsZW1lbnQtPmNvdW50ZXIpLCBwLT5icmFjZV9sZXZlbCkpOwor CQkJCQkJcmV0dXJuIG5ld192YXJpYWJsZShuYW1lLCBFQ1BHbWFrZV9zaW1w bGVfdHlwZShwLT50eXBlLT51LmVsZW1lbnQtPnR5cGUsIHAtPnR5cGUtPnUu ZWxlbWVudC0+c2l6ZSwgcC0+dHlwZS0+dS5lbGVtZW50LT5jb3VudGVyKSwg cC0+YnJhY2VfbGV2ZWwpOwogCQkJCX0KIAkJCX0KIAkJfQpAQCAtMjU0LDcg KzI1NCw3IEBAIGZpbmRfdmFyaWFibGUoY2hhciAqbmFtZSkKIAlpZiAocCA9 PSBOVUxMKQogCQltbWZhdGFsKFBBUlNFX0VSUk9SLCAidmFyaWFibGUgXCIl c1wiIGlzIG5vdCBkZWNsYXJlZCIsIG5hbWUpOwogCi0JcmV0dXJuIChwKTsK KwlyZXR1cm4gcDsKIH0KIAogdm9pZApAQCAtNTA1LDcgKzUwNSw3IEBAIGdl dF90eXBlZGVmKGNoYXIgKm5hbWUpCiAJaWYgKCF0aGlzKQogCQltbWZhdGFs KFBBUlNFX0VSUk9SLCAidW5yZWNvZ25pemVkIGRhdGEgdHlwZSBuYW1lIFwi JXNcIiIsIG5hbWUpOwogCi0JcmV0dXJuICh0aGlzKTsKKwlyZXR1cm4gdGhp czsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L3NwZWNzY2FubmVyLmwgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3NjYW5u ZXIubAppbmRleCBhZWQ5MjY5YzYzLi5hOTUyOGJkYTZiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3NjYW5uZXIubAorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3NjYW5uZXIubApAQCAtMzksMTEgKzM5LDEx IEBAIGNvbW1lbnQJCQkoIiMie25vbl9uZXdsaW5lfSopCiAKICUlCiAKLXBl cm11dGF0aW9uCQl7IHJldHVybihQRVJNVVRBVElPTik7IH0KLXNlc3Npb24J CQl7IHJldHVybihTRVNTSU9OKTsgfQotc2V0dXAJCQl7IHJldHVybihTRVRV UCk7IH0KLXN0ZXAJCQl7IHJldHVybihTVEVQKTsgfQotdGVhcmRvd24JCXsg cmV0dXJuKFRFQVJET1dOKTsgfQorcGVybXV0YXRpb24JCXsgcmV0dXJuIFBF Uk1VVEFUSU9OOyB9CitzZXNzaW9uCQkJeyByZXR1cm4gU0VTU0lPTjsgfQor c2V0dXAJCQl7IHJldHVybiBTRVRVUDsgfQorc3RlcAkJCXsgcmV0dXJuIFNU RVA7IH0KK3RlYXJkb3duCQl7IHJldHVybiBURUFSRE9XTjsgfQogCiBbXG5d CQkJeyB5eWxpbmUrKzsgfQoge2NvbW1lbnR9CQl7IC8qIGlnbm9yZSAqLyB9 Ci0tIAoyLjE0LjEKCg== --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0004-Remove-unnecessary-casts.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0004-Remove-unnecessary-casts.patch" RnJvbSAyYWVjODI0YmQ0OThjYmUzMDFiODZhY2MxZTY4NmEyMjIxMDEyNmU2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDQvNl0gUmVtb3ZlIHVu bmVjZXNzYXJ5IGNhc3RzCgotLS0KIGNvbnRyaWIvY3ViZS9jdWJlLmMgfCA4 ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY3ViZS9jdWJl LmMgYi9jb250cmliL2N1YmUvY3ViZS5jCmluZGV4IDBlOTY4ZDFjNzYuLjEw MzJiOTk3ZjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY3ViZS9jdWJlLmMKKysr IGIvY29udHJpYi9jdWJlL2N1YmUuYwpAQCAtNjA5LDE4ICs2MDksMTggQEAg Z19jdWJlX2xlYWZfY29uc2lzdGVudChOREJPWCAqa2V5LAogCXN3aXRjaCAo c3RyYXRlZ3kpCiAJewogCQljYXNlIFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVy OgotCQkJcmV0dmFsID0gKGJvb2wpIGN1YmVfb3ZlcmxhcF92MChrZXksIHF1 ZXJ5KTsKKwkJCXJldHZhbCA9IGN1YmVfb3ZlcmxhcF92MChrZXksIHF1ZXJ5 KTsKIAkJCWJyZWFrOwogCQljYXNlIFJUU2FtZVN0cmF0ZWd5TnVtYmVyOgot CQkJcmV0dmFsID0gKGJvb2wpIChjdWJlX2NtcF92MChrZXksIHF1ZXJ5KSA9 PSAwKTsKKwkJCXJldHZhbCA9IChjdWJlX2NtcF92MChrZXksIHF1ZXJ5KSA9 PSAwKTsKIAkJCWJyZWFrOwogCQljYXNlIFJUQ29udGFpbnNTdHJhdGVneU51 bWJlcjoKIAkJY2FzZSBSVE9sZENvbnRhaW5zU3RyYXRlZ3lOdW1iZXI6Ci0J CQlyZXR2YWwgPSAoYm9vbCkgY3ViZV9jb250YWluc192MChrZXksIHF1ZXJ5 KTsKKwkJCXJldHZhbCA9IGN1YmVfY29udGFpbnNfdjAoa2V5LCBxdWVyeSk7 CiAJCQlicmVhazsKIAkJY2FzZSBSVENvbnRhaW5lZEJ5U3RyYXRlZ3lOdW1i ZXI6CiAJCWNhc2UgUlRPbGRDb250YWluZWRCeVN0cmF0ZWd5TnVtYmVyOgot CQkJcmV0dmFsID0gKGJvb2wpIGN1YmVfY29udGFpbnNfdjAocXVlcnksIGtl eSk7CisJCQlyZXR2YWwgPSBjdWJlX2NvbnRhaW5zX3YwKHF1ZXJ5LCBrZXkp OwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlyZXR2YWwgPSBGQUxTRTsK LS0gCjIuMTQuMQoK --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0005-Remove-endof-macro.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0005-Remove-endof-macro.patch" RnJvbSA1MDlhZjE1ODUyYzViYjA1ZDIzYTNlYTgxNTlhYWRmMjI3MjUxNmFk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDUvNl0gUmVtb3ZlIGVu ZG9mIG1hY3JvCgpJdCBoYXMgbm90IGJlZW4gdXNlZCBpbiBhIGxvbmcgdGlt ZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSBzYWZlIGFueXdheSwgc28KZHJvcCBp dC4KLS0tCiBzcmMvaW5jbHVkZS9jLmggfCAxMCArKy0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2Mu aAppbmRleCBjMjg1MzRiYzg4Li5mZDBhNmFkMGMzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC0zMCw3 ICszMCw3IEBACiAgKgkJMikJCWJvb2wsIHRydWUsIGZhbHNlLCBUUlVFLCBG QUxTRQogICoJCTMpCQlzdGFuZGFyZCBzeXN0ZW0gdHlwZXMKICAqCQk0KQkJ SXNWYWxpZCBtYWNyb3MgZm9yIHN5c3RlbSB0eXBlcwotICoJCTUpCQlvZmZz ZXRvZiwgbGVuZ3Rob2YsIGVuZG9mLCBhbGlnbm1lbnQKKyAqCQk1KQkJb2Zm c2V0b2YsIGxlbmd0aG9mLCBhbGlnbm1lbnQKICAqCQk2KQkJYXNzZXJ0aW9u cwogICoJCTcpCQl3aWRlbHkgdXNlZnVsIG1hY3JvcwogICoJCTgpCQlyYW5k b20gc3R1ZmYKQEAgLTUzMyw3ICs1MzMsNyBAQCB0eXBlZGVmIE5hbWVEYXRh ICpOYW1lOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCQkJCVNl Y3Rpb24gNToJb2Zmc2V0b2YsIGxlbmd0aG9mLCBlbmRvZiwgYWxpZ25tZW50 CisgKgkJCQlTZWN0aW9uIDU6CW9mZnNldG9mLCBsZW5ndGhvZiwgYWxpZ25t ZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIC8qCkBAIC01NTMs MTIgKzU1Myw2IEBAIHR5cGVkZWYgTmFtZURhdGEgKk5hbWU7CiAgKi8KICNk ZWZpbmUgbGVuZ3Rob2YoYXJyYXkpIChzaXplb2YgKGFycmF5KSAvIHNpemVv ZiAoKGFycmF5KVswXSkpCiAKLS8qCi0gKiBlbmRvZgotICoJCUFkZHJlc3Mg b2YgdGhlIGVsZW1lbnQgb25lIHBhc3QgdGhlIGxhc3QgaW4gYW4gYXJyYXku Ci0gKi8KLSNkZWZpbmUgZW5kb2YoYXJyYXkpCSgmKGFycmF5KVtsZW5ndGhv ZihhcnJheSldKQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBBbGlnbm1l bnQgbWFjcm9zOiBhbGlnbiBhIGxlbmd0aCBvciBhZGRyZXNzIGFwcHJvcHJp YXRlbHkgZm9yIGEgZ2l2ZW4gdHlwZS4KICAqIFRoZSBmb29BTElHTigpIG1h Y3JvcyByb3VuZCB1cCB0byBhIG11bHRpcGxlIG9mIHRoZSByZXF1aXJlZCBh bGlnbm1lbnQsCi0tIAoyLjE0LjEKCg== --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0006-Drop-excessive-dereferencing-of-function-pointers.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0006-Drop-excessive-dereferencing-of-function-pointers.patch" RnJvbSBhYThiMDJhYzViOGRjZTU4OTNiZjIyZDgwODY5OGVkYjQ3OTBjZDZm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTcgQXVnIDIwMTcg MTI6Mzk6MjAgLTA0MDAKU3ViamVjdDogW1BBVENIIDYvNl0gRHJvcCBleGNl c3NpdmUgZGVyZWZlcmVuY2luZyBvZiBmdW5jdGlvbiBwb2ludGVycwoKUmVt b3ZlIHRoZSBleGNlc3NpdmUgcHVuY3R1YXRpb24gd2hlbiBjYWxsaW5nIGEg ZnVuY3Rpb24gdGhyb3VnaCBhCmZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgc3R5 bGUgd2FzIGluY29uc2lzdGVudGx5IGFwcGxpZWQgYW5kIHNlZW1zIGhhcmRl cgp0byByZWFkLgotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGls c19udW0uYyAgICAgfCAzNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KIGNv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYyAgICAgfCA0NCAr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogY29udHJpYi9sdHJl ZS9scXVlcnlfb3AuYyAgICAgICAgICAgICAgICB8ICA0ICstLQogY29udHJp Yi9sdHJlZS9sdHh0cXVlcnlfb3AuYyAgICAgICAgICAgICB8ICAyICstCiBj b250cmliL3NlcGdzcWwvaG9va3MuYyAgICAgICAgICAgICAgICAgIHwgIDYg KystLS0KIGNvbnRyaWIvc2VwZ3NxbC9sYWJlbC5jICAgICAgICAgICAgICAg ICAgfCAgOCArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYyAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWNjZXNzLmMgICAgICAgfCAxMCArKysrLS0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICA4ICsrKy0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICB8ICA0ICst LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3VzZXIuYyAgICAg ICAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWND dXJyZW50LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYyAgICB8IDE4ICsrKysrKy0tLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgfCAxNiArKysr KystLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxl cy5jICAgICAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVXRpbHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv bGlicHEvYXV0aC5jICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9saWJwcS9pZmFkZHIuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL25vZGVzL3BhcmFtcy5jICAgICAgICAgICAgICAgfCAgNiAr Ky0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAg ICB8ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFp bi5jICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMgICAgIHwgMTIgKysrKy0tLS0tCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcHJlcC9wcmVwdW5pb24uYyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICB8ICA0ICstLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAg IHwgMTAgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYyAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZU1hbmlwLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0 ZS9yb3dzZWN1cml0eS5jICAgICAgICB8ICA0ICstLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMgICAgICAgICAgICB8ICA0ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMgICAgICAgICAgICB8IDEyICsrKyst LS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyAgICAgICAg ICB8IDQ0ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgIHwgIDggKysr LS0tCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAg IHwgIDggKysrLS0tCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eV90eXBhbmFseXplLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2V4cGFuZGVkZGF0dW0uYyAgICB8ICA0ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb24uYyAgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jICAgICAgICAgfCAxMiArKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2NhdGNhY2hlLmMgICAgICAgfCAgNCArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgICAgICAgICAgfCAgOCArKystLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyAgICAgICAgICAgfCAg NiArKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jICAgICAg ICAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3Iu YyAgICAgICAgICAgIHwgMzAgKysrKysrKysrKystLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvdXRpbHMvc2VsZnVuY3MuaCAgICAgICAgICAgICB8ICAyICst CiA1MSBmaWxlcyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMjE0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dGlsc19udW0uYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91 dGlsc19udW0uYwppbmRleCBiMjI5NWYyYzdkLi5jMmZhZjhiMjVhIDEwMDY0 NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfbnVtLmMK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCkBA IC0xODQsMTAgKzE4NCwxMCBAQCBnYnRfbnVtX3VuaW9uKEdCVF9OVU1LRVkg Km91dCwgY29uc3QgR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYywgY29uc3Qg Z2J0cmVlX25pbgogCQljLmxvd2VyID0gJmN1clswXTsKIAkJYy51cHBlciA9 ICZjdXJbdGluZm8tPnNpemVdOwogCQkvKiBpZiBvdXQtPmxvd2VyID4gY3Vy LT5sb3dlciwgYWRvcHQgY3VyIGFzIGxvd2VyICovCi0JCWlmICgoKnRpbmZv LT5mX2d0KSAoby5sb3dlciwgYy5sb3dlciwgZmxpbmZvKSkKKwkJaWYgKHRp bmZvLT5mX2d0KG8ubG93ZXIsIGMubG93ZXIsIGZsaW5mbykpCiAJCQltZW1j cHkoKHZvaWQgKikgby5sb3dlciwgKHZvaWQgKikgYy5sb3dlciwgdGluZm8t PnNpemUpOwogCQkvKiBpZiBvdXQtPnVwcGVyIDwgY3VyLT51cHBlciwgYWRv cHQgY3VyIGFzIHVwcGVyICovCi0JCWlmICgoKnRpbmZvLT5mX2x0KSAoby51 cHBlciwgYy51cHBlciwgZmxpbmZvKSkKKwkJaWYgKHRpbmZvLT5mX2x0KG8u dXBwZXIsIGMudXBwZXIsIGZsaW5mbykpCiAJCQltZW1jcHkoKHZvaWQgKikg by51cHBlciwgKHZvaWQgKikgYy51cHBlciwgdGluZm8tPnNpemUpOwogCX0K IApAQCAtMjExLDggKzIxMSw4IEBAIGdidF9udW1fc2FtZShjb25zdCBHQlRf TlVNS0VZICphLCBjb25zdCBHQlRfTlVNS0VZICpiLCBjb25zdCBnYnRyZWVf bmluZm8gKnRpbmZvCiAJYjIubG93ZXIgPSAmKCgoR0JUX05VTUtFWSAqKSBi KVswXSk7CiAJYjIudXBwZXIgPSAmKCgoR0JUX05VTUtFWSAqKSBiKVt0aW5m by0+c2l6ZV0pOwogCi0JcmV0dXJuICgoKnRpbmZvLT5mX2VxKSAoYjEubG93 ZXIsIGIyLmxvd2VyLCBmbGluZm8pICYmCi0JCQkoKnRpbmZvLT5mX2VxKSAo YjEudXBwZXIsIGIyLnVwcGVyLCBmbGluZm8pKTsKKwlyZXR1cm4gKHRpbmZv LT5mX2VxKGIxLmxvd2VyLCBiMi5sb3dlciwgZmxpbmZvKSAmJgorCQkJdGlu Zm8tPmZfZXEoYjEudXBwZXIsIGIyLnVwcGVyLCBmbGluZm8pKTsKIH0KIAog CkBAIC0yMzYsOSArMjM2LDkgQEAgZ2J0X251bV9iaW5fdW5pb24oRGF0dW0g KnUsIEdCVF9OVU1LRVkgKmUsIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8s IEZtZ3JJbmZvICoKIAogCQl1ci5sb3dlciA9ICYoKChHQlRfTlVNS0VZICop IERhdHVtR2V0UG9pbnRlcigqdSkpWzBdKTsKIAkJdXIudXBwZXIgPSAmKCgo R0JUX05VTUtFWSAqKSBEYXR1bUdldFBvaW50ZXIoKnUpKVt0aW5mby0+c2l6 ZV0pOwotCQlpZiAoKCp0aW5mby0+Zl9ndCkgKCh2b2lkICopIHVyLmxvd2Vy LCAodm9pZCAqKSByZC5sb3dlciwgZmxpbmZvKSkKKwkJaWYgKHRpbmZvLT5m X2d0KCh2b2lkICopIHVyLmxvd2VyLCAodm9pZCAqKSByZC5sb3dlciwgZmxp bmZvKSkKIAkJCW1lbWNweSgodm9pZCAqKSB1ci5sb3dlciwgKHZvaWQgKikg cmQubG93ZXIsIHRpbmZvLT5zaXplKTsKLQkJaWYgKCgqdGluZm8tPmZfbHQp ICgodm9pZCAqKSB1ci51cHBlciwgKHZvaWQgKikgcmQudXBwZXIsIGZsaW5m bykpCisJCWlmICh0aW5mby0+Zl9sdCgodm9pZCAqKSB1ci51cHBlciwgKHZv aWQgKikgcmQudXBwZXIsIGZsaW5mbykpCiAJCQltZW1jcHkoKHZvaWQgKikg dXIudXBwZXIsICh2b2lkICopIHJkLnVwcGVyLCB0aW5mby0+c2l6ZSk7CiAJ fQogfQpAQCAtMjY0LDMzICsyNjQsMzMgQEAgZ2J0X251bV9jb25zaXN0ZW50 KGNvbnN0IEdCVF9OVU1LRVlfUiAqa2V5LAogCXN3aXRjaCAoKnN0cmF0ZWd5 KQogCXsKIAkJY2FzZSBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgotCQkJ cmV0dmFsID0gKCp0aW5mby0+Zl9nZSkgKHF1ZXJ5LCBrZXktPmxvd2VyLCBm bGluZm8pOworCQkJcmV0dmFsID0gdGluZm8tPmZfZ2UocXVlcnksIGtleS0+ bG93ZXIsIGZsaW5mbyk7CiAJCQlicmVhazsKIAkJY2FzZSBCVExlc3NTdHJh dGVneU51bWJlcjoKIAkJCWlmIChpc19sZWFmKQotCQkJCXJldHZhbCA9ICgq dGluZm8tPmZfZ3QpIChxdWVyeSwga2V5LT5sb3dlciwgZmxpbmZvKTsKKwkJ CQlyZXR2YWwgPSB0aW5mby0+Zl9ndChxdWVyeSwga2V5LT5sb3dlciwgZmxp bmZvKTsKIAkJCWVsc2UKLQkJCQlyZXR2YWwgPSAoKnRpbmZvLT5mX2dlKSAo cXVlcnksIGtleS0+bG93ZXIsIGZsaW5mbyk7CisJCQkJcmV0dmFsID0gdGlu Zm8tPmZfZ2UocXVlcnksIGtleS0+bG93ZXIsIGZsaW5mbyk7CiAJCQlicmVh azsKIAkJY2FzZSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI6CiAJCQlpZiAoaXNf bGVhZikKLQkJCQlyZXR2YWwgPSAoKnRpbmZvLT5mX2VxKSAocXVlcnksIGtl eS0+bG93ZXIsIGZsaW5mbyk7CisJCQkJcmV0dmFsID0gdGluZm8tPmZfZXEo cXVlcnksIGtleS0+bG93ZXIsIGZsaW5mbyk7CiAJCQllbHNlCi0JCQkJcmV0 dmFsID0gKCgqdGluZm8tPmZfbGUpIChrZXktPmxvd2VyLCBxdWVyeSwgZmxp bmZvKSAmJgotCQkJCQkJICAoKnRpbmZvLT5mX2xlKSAocXVlcnksIGtleS0+ dXBwZXIsIGZsaW5mbykpOworCQkJCXJldHZhbCA9ICh0aW5mby0+Zl9sZShr ZXktPmxvd2VyLCBxdWVyeSwgZmxpbmZvKSAmJgorCQkJCQkJICB0aW5mby0+ Zl9sZShxdWVyeSwga2V5LT51cHBlciwgZmxpbmZvKSk7CiAJCQlicmVhazsK IAkJY2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJlcjoKIAkJCWlmIChpc19s ZWFmKQotCQkJCXJldHZhbCA9ICgqdGluZm8tPmZfbHQpIChxdWVyeSwga2V5 LT51cHBlciwgZmxpbmZvKTsKKwkJCQlyZXR2YWwgPSB0aW5mby0+Zl9sdChx dWVyeSwga2V5LT51cHBlciwgZmxpbmZvKTsKIAkJCWVsc2UKLQkJCQlyZXR2 YWwgPSAoKnRpbmZvLT5mX2xlKSAocXVlcnksIGtleS0+dXBwZXIsIGZsaW5m byk7CisJCQkJcmV0dmFsID0gdGluZm8tPmZfbGUocXVlcnksIGtleS0+dXBw ZXIsIGZsaW5mbyk7CiAJCQlicmVhazsKIAkJY2FzZSBCVEdyZWF0ZXJFcXVh bFN0cmF0ZWd5TnVtYmVyOgotCQkJcmV0dmFsID0gKCp0aW5mby0+Zl9sZSkg KHF1ZXJ5LCBrZXktPnVwcGVyLCBmbGluZm8pOworCQkJcmV0dmFsID0gdGlu Zm8tPmZfbGUocXVlcnksIGtleS0+dXBwZXIsIGZsaW5mbyk7CiAJCQlicmVh azsKIAkJY2FzZSBCdHJlZUdpc3ROb3RFcXVhbFN0cmF0ZWd5TnVtYmVyOgot CQkJcmV0dmFsID0gKCEoKCp0aW5mby0+Zl9lcSkgKHF1ZXJ5LCBrZXktPmxv d2VyLCBmbGluZm8pICYmCi0JCQkJCQkoKnRpbmZvLT5mX2VxKSAocXVlcnks IGtleS0+dXBwZXIsIGZsaW5mbykpKTsKKwkJCXJldHZhbCA9ICghKHRpbmZv LT5mX2VxKHF1ZXJ5LCBrZXktPmxvd2VyLCBmbGluZm8pICYmCisJCQkJCQl0 aW5mby0+Zl9lcShxdWVyeSwga2V5LT51cHBlciwgZmxpbmZvKSkpOwogCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlyZXR2YWwgPSBmYWxzZTsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc192YXIuYwppbmRleCBl Y2M4N2YzYmIzLi41ODZkZTYzYTRkIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX3V0aWxzX3Zhci5jCkBAIC0xMDksNyArMTA5LDcgQEAg Z2J0X3Zhcl9sZWFmMm5vZGUoR0JUX1ZBUktFWSAqbGVhZiwgY29uc3QgZ2J0 cmVlX3ZpbmZvICp0aW5mbywgRm1nckluZm8gKmZsaW5mbykKIAlHQlRfVkFS S0VZICpvdXQgPSBsZWFmOwogCiAJaWYgKHRpbmZvLT5mX2wybikKLQkJb3V0 ID0gKCp0aW5mby0+Zl9sMm4pIChsZWFmLCBmbGluZm8pOworCQlvdXQgPSB0 aW5mby0+Zl9sMm4obGVhZiwgZmxpbmZvKTsKIAogCXJldHVybiBvdXQ7CiB9 CkBAIC0yNTUsMTMgKzI1NSwxMyBAQCBnYnRfdmFyX2Jpbl91bmlvbihEYXR1 bSAqdSwgR0JUX1ZBUktFWSAqZSwgT2lkIGNvbGxhdGlvbiwKIAkJbnIubG93 ZXIgPSByby5sb3dlcjsKIAkJbnIudXBwZXIgPSByby51cHBlcjsKIAotCQlp ZiAoKCp0aW5mby0+Zl9jbXApIChyby5sb3dlciwgZW8ubG93ZXIsIGNvbGxh dGlvbiwgZmxpbmZvKSA+IDApCisJCWlmICh0aW5mby0+Zl9jbXAocm8ubG93 ZXIsIGVvLmxvd2VyLCBjb2xsYXRpb24sIGZsaW5mbykgPiAwKQogCQl7CiAJ CQluci5sb3dlciA9IGVvLmxvd2VyOwogCQkJdXBkYXRlID0gdHJ1ZTsKIAkJ fQogCi0JCWlmICgoKnRpbmZvLT5mX2NtcCkgKHJvLnVwcGVyLCBlby51cHBl ciwgY29sbGF0aW9uLCBmbGluZm8pIDwgMCkKKwkJaWYgKHRpbmZvLT5mX2Nt cChyby51cHBlciwgZW8udXBwZXIsIGNvbGxhdGlvbiwgZmxpbmZvKSA8IDAp CiAJCXsKIAkJCW5yLnVwcGVyID0gZW8udXBwZXI7CiAJCQl1cGRhdGUgPSB0 cnVlOwpAQCAtMzcxLDggKzM3MSw4IEBAIGdidF92YXJfc2FtZShEYXR1bSBk MSwgRGF0dW0gZDIsIE9pZCBjb2xsYXRpb24sCiAJcjEgPSBnYnRfdmFyX2tl eV9yZWFkYWJsZSh0MSk7CiAJcjIgPSBnYnRfdmFyX2tleV9yZWFkYWJsZSh0 Mik7CiAKLQlyZXR1cm4gKCgqdGluZm8tPmZfY21wKSAocjEubG93ZXIsIHIy Lmxvd2VyLCBjb2xsYXRpb24sIGZsaW5mbykgPT0gMCAmJgotCQkJKCp0aW5m by0+Zl9jbXApIChyMS51cHBlciwgcjIudXBwZXIsIGNvbGxhdGlvbiwgZmxp bmZvKSA9PSAwKTsKKwlyZXR1cm4gKHRpbmZvLT5mX2NtcChyMS5sb3dlciwg cjIubG93ZXIsIGNvbGxhdGlvbiwgZmxpbmZvKSA9PSAwICYmCisJCQl0aW5m by0+Zl9jbXAocjEudXBwZXIsIHIyLnVwcGVyLCBjb2xsYXRpb24sIGZsaW5m bykgPT0gMCk7CiB9CiAKIApAQCAtNDAwLDkgKzQwMCw5IEBAIGdidF92YXJf cGVuYWx0eShmbG9hdCAqcmVzLCBjb25zdCBHSVNURU5UUlkgKm8sIGNvbnN0 IEdJU1RFTlRSWSAqbiwKIAogCWlmICgoVkFSU0laRShvay5sb3dlcikgLSBW QVJIRFJTWikgPT0gMCAmJiAoVkFSU0laRShvay51cHBlcikgLSBWQVJIRFJT WikgPT0gMCkKIAkJKnJlcyA9IDAuMDsKLQllbHNlIGlmICghKCgoKnRpbmZv LT5mX2NtcCkgKG5rLmxvd2VyLCBvay5sb3dlciwgY29sbGF0aW9uLCBmbGlu Zm8pID49IDAgfHwKKwllbHNlIGlmICghKCh0aW5mby0+Zl9jbXAobmsubG93 ZXIsIG9rLmxvd2VyLCBjb2xsYXRpb24sIGZsaW5mbykgPj0gMCB8fAogCQkJ CWdidF9ieXRlYV9wZl9tYXRjaChvay5sb3dlciwgbmsubG93ZXIsIHRpbmZv KSkgJiYKLQkJCSAgICgoKnRpbmZvLT5mX2NtcCkgKG5rLnVwcGVyLCBvay51 cHBlciwgY29sbGF0aW9uLCBmbGluZm8pIDw9IDAgfHwKKwkJCSAgICh0aW5m by0+Zl9jbXAobmsudXBwZXIsIG9rLnVwcGVyLCBjb2xsYXRpb24sIGZsaW5m bykgPD0gMCB8fAogCQkJCWdidF9ieXRlYV9wZl9tYXRjaChvay51cHBlciwg bmsudXBwZXIsIHRpbmZvKSkpKQogCXsKIAkJRGF0dW0JCWQgPSBQb2ludGVy R2V0RGF0dW0oMCk7CkBAIC00NDksOSArNDQ5LDkgQEAgZ2J0X3ZzcnRfY21w KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKIAlj b25zdCBnYnRfdnNydF9hcmcgKnZhcmcgPSAoY29uc3QgZ2J0X3ZzcnRfYXJn ICopIGFyZzsKIAlpbnQJCQlyZXM7CiAKLQlyZXMgPSAoKnZhcmctPnRpbmZv LT5mX2NtcCkgKGFyLmxvd2VyLCBici5sb3dlciwgdmFyZy0+Y29sbGF0aW9u LCB2YXJnLT5mbGluZm8pOworCXJlcyA9IHZhcmctPnRpbmZvLT5mX2NtcChh ci5sb3dlciwgYnIubG93ZXIsIHZhcmctPmNvbGxhdGlvbiwgdmFyZy0+Zmxp bmZvKTsKIAlpZiAocmVzID09IDApCi0JCXJldHVybiAoKnZhcmctPnRpbmZv LT5mX2NtcCkgKGFyLnVwcGVyLCBici51cHBlciwgdmFyZy0+Y29sbGF0aW9u LCB2YXJnLT5mbGluZm8pOworCQlyZXR1cm4gdmFyZy0+dGluZm8tPmZfY21w KGFyLnVwcGVyLCBici51cHBlciwgdmFyZy0+Y29sbGF0aW9uLCB2YXJnLT5m bGluZm8pOwogCiAJcmV0dXJuIHJlczsKIH0KQEAgLTU2Nyw0NCArNTY3LDQ0 IEBAIGdidF92YXJfY29uc2lzdGVudChHQlRfVkFSS0VZX1IgKmtleSwKIAl7 CiAJCWNhc2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKIAkJCWlmIChp c19sZWFmKQotCQkJCXJldHZhbCA9ICgqdGluZm8tPmZfZ2UpIChxdWVyeSwg a2V5LT5sb3dlciwgY29sbGF0aW9uLCBmbGluZm8pOworCQkJCXJldHZhbCA9 IHRpbmZvLT5mX2dlKHF1ZXJ5LCBrZXktPmxvd2VyLCBjb2xsYXRpb24sIGZs aW5mbyk7CiAJCQllbHNlCi0JCQkJcmV0dmFsID0gKCp0aW5mby0+Zl9jbXAp IChxdWVyeSwga2V5LT5sb3dlciwgY29sbGF0aW9uLCBmbGluZm8pID49IDAK KwkJCQlyZXR2YWwgPSB0aW5mby0+Zl9jbXAocXVlcnksIGtleS0+bG93ZXIs IGNvbGxhdGlvbiwgZmxpbmZvKSA+PSAwCiAJCQkJCXx8IGdidF92YXJfbm9k ZV9wZl9tYXRjaChrZXksIHF1ZXJ5LCB0aW5mbyk7CiAJCQlicmVhazsKIAkJ Y2FzZSBCVExlc3NTdHJhdGVneU51bWJlcjoKIAkJCWlmIChpc19sZWFmKQot CQkJCXJldHZhbCA9ICgqdGluZm8tPmZfZ3QpIChxdWVyeSwga2V5LT5sb3dl ciwgY29sbGF0aW9uLCBmbGluZm8pOworCQkJCXJldHZhbCA9IHRpbmZvLT5m X2d0KHF1ZXJ5LCBrZXktPmxvd2VyLCBjb2xsYXRpb24sIGZsaW5mbyk7CiAJ CQllbHNlCi0JCQkJcmV0dmFsID0gKCp0aW5mby0+Zl9jbXApIChxdWVyeSwg a2V5LT5sb3dlciwgY29sbGF0aW9uLCBmbGluZm8pID49IDAKKwkJCQlyZXR2 YWwgPSB0aW5mby0+Zl9jbXAocXVlcnksIGtleS0+bG93ZXIsIGNvbGxhdGlv biwgZmxpbmZvKSA+PSAwCiAJCQkJCXx8IGdidF92YXJfbm9kZV9wZl9tYXRj aChrZXksIHF1ZXJ5LCB0aW5mbyk7CiAJCQlicmVhazsKIAkJY2FzZSBCVEVx dWFsU3RyYXRlZ3lOdW1iZXI6CiAJCQlpZiAoaXNfbGVhZikKLQkJCQlyZXR2 YWwgPSAoKnRpbmZvLT5mX2VxKSAocXVlcnksIGtleS0+bG93ZXIsIGNvbGxh dGlvbiwgZmxpbmZvKTsKKwkJCQlyZXR2YWwgPSB0aW5mby0+Zl9lcShxdWVy eSwga2V5LT5sb3dlciwgY29sbGF0aW9uLCBmbGluZm8pOwogCQkJZWxzZQog CQkJCXJldHZhbCA9Ci0JCQkJCSgoKnRpbmZvLT5mX2NtcCkgKGtleS0+bG93 ZXIsIHF1ZXJ5LCBjb2xsYXRpb24sIGZsaW5mbykgPD0gMCAmJgotCQkJCQkg KCp0aW5mby0+Zl9jbXApIChxdWVyeSwga2V5LT51cHBlciwgY29sbGF0aW9u LCBmbGluZm8pIDw9IDApIHx8CisJCQkJCSh0aW5mby0+Zl9jbXAoa2V5LT5s b3dlciwgcXVlcnksIGNvbGxhdGlvbiwgZmxpbmZvKSA8PSAwICYmCisJCQkJ CSB0aW5mby0+Zl9jbXAocXVlcnksIGtleS0+dXBwZXIsIGNvbGxhdGlvbiwg ZmxpbmZvKSA8PSAwKSB8fAogCQkJCQlnYnRfdmFyX25vZGVfcGZfbWF0Y2go a2V5LCBxdWVyeSwgdGluZm8pOwogCQkJYnJlYWs7CiAJCWNhc2UgQlRHcmVh dGVyU3RyYXRlZ3lOdW1iZXI6CiAJCQlpZiAoaXNfbGVhZikKLQkJCQlyZXR2 YWwgPSAoKnRpbmZvLT5mX2x0KSAocXVlcnksIGtleS0+dXBwZXIsIGNvbGxh dGlvbiwgZmxpbmZvKTsKKwkJCQlyZXR2YWwgPSB0aW5mby0+Zl9sdChxdWVy eSwga2V5LT51cHBlciwgY29sbGF0aW9uLCBmbGluZm8pOwogCQkJZWxzZQot CQkJCXJldHZhbCA9ICgqdGluZm8tPmZfY21wKSAocXVlcnksIGtleS0+dXBw ZXIsIGNvbGxhdGlvbiwgZmxpbmZvKSA8PSAwCisJCQkJcmV0dmFsID0gdGlu Zm8tPmZfY21wKHF1ZXJ5LCBrZXktPnVwcGVyLCBjb2xsYXRpb24sIGZsaW5m bykgPD0gMAogCQkJCQl8fCBnYnRfdmFyX25vZGVfcGZfbWF0Y2goa2V5LCBx dWVyeSwgdGluZm8pOwogCQkJYnJlYWs7CiAJCWNhc2UgQlRHcmVhdGVyRXF1 YWxTdHJhdGVneU51bWJlcjoKIAkJCWlmIChpc19sZWFmKQotCQkJCXJldHZh bCA9ICgqdGluZm8tPmZfbGUpIChxdWVyeSwga2V5LT51cHBlciwgY29sbGF0 aW9uLCBmbGluZm8pOworCQkJCXJldHZhbCA9IHRpbmZvLT5mX2xlKHF1ZXJ5 LCBrZXktPnVwcGVyLCBjb2xsYXRpb24sIGZsaW5mbyk7CiAJCQllbHNlCi0J CQkJcmV0dmFsID0gKCp0aW5mby0+Zl9jbXApIChxdWVyeSwga2V5LT51cHBl ciwgY29sbGF0aW9uLCBmbGluZm8pIDw9IDAKKwkJCQlyZXR2YWwgPSB0aW5m by0+Zl9jbXAocXVlcnksIGtleS0+dXBwZXIsIGNvbGxhdGlvbiwgZmxpbmZv KSA8PSAwCiAJCQkJCXx8IGdidF92YXJfbm9kZV9wZl9tYXRjaChrZXksIHF1 ZXJ5LCB0aW5mbyk7CiAJCQlicmVhazsKIAkJY2FzZSBCdHJlZUdpc3ROb3RF cXVhbFN0cmF0ZWd5TnVtYmVyOgotCQkJcmV0dmFsID0gISgoKnRpbmZvLT5m X2VxKSAocXVlcnksIGtleS0+bG93ZXIsIGNvbGxhdGlvbiwgZmxpbmZvKSAm JgotCQkJCQkgICAoKnRpbmZvLT5mX2VxKSAocXVlcnksIGtleS0+dXBwZXIs IGNvbGxhdGlvbiwgZmxpbmZvKSk7CisJCQlyZXR2YWwgPSAhKHRpbmZvLT5m X2VxKHF1ZXJ5LCBrZXktPmxvd2VyLCBjb2xsYXRpb24sIGZsaW5mbykgJiYK KwkJCQkJICAgdGluZm8tPmZfZXEocXVlcnksIGtleS0+dXBwZXIsIGNvbGxh dGlvbiwgZmxpbmZvKSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJl dHZhbCA9IEZBTFNFOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9sdHJlZS9scXVl cnlfb3AuYyBiL2NvbnRyaWIvbHRyZWUvbHF1ZXJ5X29wLmMKaW5kZXggMjI5 ZGRkMGFlMy4uOWI2OWEyODhiMiAxMDA2NDQKLS0tIGEvY29udHJpYi9sdHJl ZS9scXVlcnlfb3AuYworKysgYi9jb250cmliL2x0cmVlL2xxdWVyeV9vcC5j CkBAIC03MCw3ICs3MCw3IEBAIGJvb2wKIAkJCQkgbGVudCA9PSBsZW5xIHx8 CiAJCQkJIChsZW50ID4gbGVucSAmJiBhbnllbmQpCiAJCQkJICkgJiYKLQkJ CQkoKmNtcHB0cikgKHFuLCB0biwgbGVucSkgPT0gMCkKKwkJCQljbXBwdHIo cW4sIHRuLCBsZW5xKSA9PSAwKQogCQkJewogCiAJCQkJaXNvayA9IHRydWU7 CkBAIC0xMjMsNyArMTIzLDcgQEAgY2hlY2tMZXZlbChscXVlcnlfbGV2ZWwg KmN1cnEsIGx0cmVlX2xldmVsICpjdXJ0KQogCQkJCSAgY3VydmFyLT5sZW4g PT0gY3VydC0+bGVuIHx8CiAJCQkJICAoY3VydC0+bGVuID4gY3VydmFyLT5s ZW4gJiYgKGN1cnZhci0+ZmxhZyAmIExWQVJfQU5ZRU5EKSkKIAkJCQkgICkg JiYKLQkJCQkgKCpjbXBwdHIpIChjdXJ2YXItPm5hbWUsIGN1cnQtPm5hbWUs IGN1cnZhci0+bGVuKSA9PSAwKQorCQkJCSBjbXBwdHIoY3VydmFyLT5uYW1l LCBjdXJ0LT5uYW1lLCBjdXJ2YXItPmxlbikgPT0gMCkKIAkJewogCiAJCQly ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbHRyZWUvbHR4dHF1 ZXJ5X29wLmMgYi9jb250cmliL2x0cmVlL2x0eHRxdWVyeV9vcC5jCmluZGV4 IDE0MjhjOGI0NzguLjIyMmEwOTNmOGEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv bHRyZWUvbHR4dHF1ZXJ5X29wLmMKKysrIGIvY29udHJpYi9sdHJlZS9sdHh0 cXVlcnlfb3AuYwpAQCAtNzMsNyArNzMsNyBAQCBjaGVja2NvbmRpdGlvbl9z dHIodm9pZCAqY2hlY2t2YWwsIElURU0gKnZhbCkKIAkJCQkgIHZhbC0+bGVu Z3RoID09IGxldmVsLT5sZW4gfHwKIAkJCQkgIChsZXZlbC0+bGVuID4gdmFs LT5sZW5ndGggJiYgKHZhbC0+ZmxhZyAmIExWQVJfQU5ZRU5EKSkKIAkJCQkg ICkgJiYKLQkJCQkgKCpjbXBwdHIpIChvcCwgbGV2ZWwtPm5hbWUsIHZhbC0+ bGVuZ3RoKSA9PSAwKQorCQkJCSBjbXBwdHIob3AsIGxldmVsLT5uYW1lLCB2 YWwtPmxlbmd0aCkgPT0gMCkKIAkJCXJldHVybiB0cnVlOwogCiAJCXRsZW4t LTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2VwZ3NxbC9ob29rcy5jIGIvY29u dHJpYi9zZXBnc3FsL2hvb2tzLmMKaW5kZXggNWRhYTYwYzQxMi4uYjk5ZTk5 NWQ0NiAxMDA2NDQKLS0tIGEvY29udHJpYi9zZXBnc3FsL2hvb2tzLmMKKysr IGIvY29udHJpYi9zZXBnc3FsL2hvb2tzLmMKQEAgLTkyLDcgKzkyLDcgQEAg c2VwZ3NxbF9vYmplY3RfYWNjZXNzKE9iamVjdEFjY2Vzc1R5cGUgYWNjZXNz LAogCQkJCQkgIHZvaWQgKmFyZykKIHsKIAlpZiAobmV4dF9vYmplY3RfYWNj ZXNzX2hvb2spCi0JCSgqbmV4dF9vYmplY3RfYWNjZXNzX2hvb2spIChhY2Nl c3MsIGNsYXNzSWQsIG9iamVjdElkLCBzdWJJZCwgYXJnKTsKKwkJbmV4dF9v YmplY3RfYWNjZXNzX2hvb2soYWNjZXNzLCBjbGFzc0lkLCBvYmplY3RJZCwg c3ViSWQsIGFyZyk7CiAKIAlzd2l0Y2ggKGFjY2VzcykKIAl7CkBAIC0yODIs NyArMjgyLDcgQEAgc2VwZ3NxbF9leGVjX2NoZWNrX3Blcm1zKExpc3QgKnJh bmdlVGFibHMsIGJvb2wgYWJvcnQpCiAJICogbGVhc3QsIHdlIGRvbid0IG5l ZWQgdG8gY2hlY2sgYW55IG1vcmUuCiAJICovCiAJaWYgKG5leHRfZXhlY19j aGVja19wZXJtc19ob29rICYmCi0JCSEoKm5leHRfZXhlY19jaGVja19wZXJt c19ob29rKSAocmFuZ2VUYWJscywgYWJvcnQpKQorCQkhbmV4dF9leGVjX2No ZWNrX3Blcm1zX2hvb2socmFuZ2VUYWJscywgYWJvcnQpKQogCQlyZXR1cm4g ZmFsc2U7CiAKIAlpZiAoIXNlcGdzcWxfZG1sX3ByaXZpbGVnZXMocmFuZ2VU YWJscywgYWJvcnQpKQpAQCAtMzY1LDcgKzM2NSw3IEBAIHNlcGdzcWxfdXRp bGl0eV9jb21tYW5kKFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJfQogCiAJCWlm IChuZXh0X1Byb2Nlc3NVdGlsaXR5X2hvb2spCi0JCQkoKm5leHRfUHJvY2Vz c1V0aWxpdHlfaG9vaykgKHBzdG10LCBxdWVyeVN0cmluZywKKwkJCW5leHRf UHJvY2Vzc1V0aWxpdHlfaG9vayhwc3RtdCwgcXVlcnlTdHJpbmcsCiAJCQkJ CQkJCQkJIGNvbnRleHQsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCQkJCQkJ IGRlc3QsIGNvbXBsZXRpb25UYWcpOwogCQllbHNlCmRpZmYgLS1naXQgYS9j b250cmliL3NlcGdzcWwvbGFiZWwuYyBiL2NvbnRyaWIvc2VwZ3NxbC9sYWJl bC5jCmluZGV4IGNiYjkyNDliZTcuLjJhNzFiYWRmMGIgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvc2VwZ3NxbC9sYWJlbC5jCisrKyBiL2NvbnRyaWIvc2VwZ3Nx bC9sYWJlbC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIHZvaWQKIHNl cGdzcWxfY2xpZW50X2F1dGgoUG9ydCAqcG9ydCwgaW50IHN0YXR1cykKIHsK IAlpZiAobmV4dF9jbGllbnRfYXV0aF9ob29rKQotCQkoKm5leHRfY2xpZW50 X2F1dGhfaG9vaykgKHBvcnQsIHN0YXR1cyk7CisJCW5leHRfY2xpZW50X2F1 dGhfaG9vayhwb3J0LCBzdGF0dXMpOwogCiAJLyoKIAkgKiBJbiB0aGUgY2Fz ZSB3aGVuIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCwgdGhlIHN1cHBsaWVkIHNv Y2tldCBzaGFsbCBiZQpAQCAtMjg4LDcgKzI4OCw3IEBAIHNlcGdzcWxfbmVl ZHNfZm1ncl9ob29rKE9pZCBmdW5jdGlvbklkKQogCU9iamVjdEFkZHJlc3Mg b2JqZWN0OwogCiAJaWYgKG5leHRfbmVlZHNfZm1ncl9ob29rICYmCi0JCSgq bmV4dF9uZWVkc19mbWdyX2hvb2spIChmdW5jdGlvbklkKSkKKwkJbmV4dF9u ZWVkc19mbWdyX2hvb2soZnVuY3Rpb25JZCkpCiAJCXJldHVybiB0cnVlOwog CiAJLyoKQEAgLTM4OSw3ICszODksNyBAQCBzZXBnc3FsX2ZtZ3JfaG9vayhG bWdySG9va0V2ZW50VHlwZSBldmVudCwKIAkJCQljbGllbnRfbGFiZWxfZnVu YyA9IHN0YWNrLT5uZXdfbGFiZWw7CiAJCQl9CiAJCQlpZiAobmV4dF9mbWdy X2hvb2spCi0JCQkJKCpuZXh0X2ZtZ3JfaG9vaykgKGV2ZW50LCBmbGluZm8s ICZzdGFjay0+bmV4dF9wcml2YXRlKTsKKwkJCQluZXh0X2ZtZ3JfaG9vayhl dmVudCwgZmxpbmZvLCAmc3RhY2stPm5leHRfcHJpdmF0ZSk7CiAJCQlicmVh azsKIAogCQljYXNlIEZIRVRfRU5EOgpAQCAtMzk3LDcgKzM5Nyw3IEBAIHNl cGdzcWxfZm1ncl9ob29rKEZtZ3JIb29rRXZlbnRUeXBlIGV2ZW50LAogCQkJ c3RhY2sgPSAodm9pZCAqKSBEYXR1bUdldFBvaW50ZXIoKnByaXZhdGUpOwog CiAJCQlpZiAobmV4dF9mbWdyX2hvb2spCi0JCQkJKCpuZXh0X2ZtZ3JfaG9v aykgKGV2ZW50LCBmbGluZm8sICZzdGFjay0+bmV4dF9wcml2YXRlKTsKKwkJ CQluZXh0X2ZtZ3JfaG9vayhldmVudCwgZmxpbmZvLCAmc3RhY2stPm5leHRf cHJpdmF0ZSk7CiAKIAkJCWlmIChzdGFjay0+bmV3X2xhYmVsKQogCQkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDVl N2U4MTIyMDAuLmE2Njc0OWZiMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94YWN0LmMKQEAgLTMzNDQsNyArMzM0NCw3IEBAIENhbGxY YWN0Q2FsbGJhY2tzKFhhY3RFdmVudCBldmVudCkKIAlYYWN0Q2FsbGJhY2tJ dGVtICppdGVtOwogCiAJZm9yIChpdGVtID0gWGFjdF9jYWxsYmFja3M7IGl0 ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KQotCQkoKml0ZW0tPmNhbGxiYWNrKSAo ZXZlbnQsIGl0ZW0tPmFyZyk7CisJCWl0ZW0tPmNhbGxiYWNrKGV2ZW50LCBp dGVtLT5hcmcpOwogfQogCiAKQEAgLTM0MDEsNyArMzQwMSw3IEBAIENhbGxT dWJYYWN0Q2FsbGJhY2tzKFN1YlhhY3RFdmVudCBldmVudCwKIAlTdWJYYWN0 Q2FsbGJhY2tJdGVtICppdGVtOwogCiAJZm9yIChpdGVtID0gU3ViWGFjdF9j YWxsYmFja3M7IGl0ZW07IGl0ZW0gPSBpdGVtLT5uZXh0KQotCQkoKml0ZW0t PmNhbGxiYWNrKSAoZXZlbnQsIG15U3ViaWQsIHBhcmVudFN1YmlkLCBpdGVt LT5hcmcpOworCQlpdGVtLT5jYWxsYmFjayhldmVudCwgbXlTdWJpZCwgcGFy ZW50U3ViaWQsIGl0ZW0tPmFyZyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhY2Nlc3MuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvb2JqZWN0YWNjZXNzLmMKaW5kZXggOWQ1ZWI3YjlkYS4uZWYz MDRhYzliNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmpl Y3RhY2Nlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFj Y2Vzcy5jCkBAIC0zNyw3ICszNyw3IEBAIFJ1bk9iamVjdFBvc3RDcmVhdGVI b29rKE9pZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQsIGludCBzdWJJZCwKIAlt ZW1zZXQoJnBjX2FyZywgMCwgc2l6ZW9mKE9iamVjdEFjY2Vzc1Bvc3RDcmVh dGUpKTsKIAlwY19hcmcuaXNfaW50ZXJuYWwgPSBpc19pbnRlcm5hbDsKIAot CSgqb2JqZWN0X2FjY2Vzc19ob29rKSAoT0FUX1BPU1RfQ1JFQVRFLAorCW9i amVjdF9hY2Nlc3NfaG9vayhPQVRfUE9TVF9DUkVBVEUsCiAJCQkJCQkgICBj bGFzc0lkLCBvYmplY3RJZCwgc3ViSWQsCiAJCQkJCQkgICAodm9pZCAqKSAm cGNfYXJnKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgUnVuT2JqZWN0RHJvcEhv b2soT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCwgaW50IHN1YklkLAogCW1l bXNldCgmZHJvcF9hcmcsIDAsIHNpemVvZihPYmplY3RBY2Nlc3NEcm9wKSk7 CiAJZHJvcF9hcmcuZHJvcGZsYWdzID0gZHJvcGZsYWdzOwogCi0JKCpvYmpl Y3RfYWNjZXNzX2hvb2spIChPQVRfRFJPUCwKKwlvYmplY3RfYWNjZXNzX2hv b2soT0FUX0RST1AsCiAJCQkJCQkgICBjbGFzc0lkLCBvYmplY3RJZCwgc3Vi SWQsCiAJCQkJCQkgICAodm9pZCAqKSAmZHJvcF9hcmcpOwogfQpAQCAtODIs NyArODIsNyBAQCBSdW5PYmplY3RQb3N0QWx0ZXJIb29rKE9pZCBjbGFzc0lk LCBPaWQgb2JqZWN0SWQsIGludCBzdWJJZCwKIAlwYV9hcmcuYXV4aWxpYXJ5 X2lkID0gYXV4aWxpYXJ5SWQ7CiAJcGFfYXJnLmlzX2ludGVybmFsID0gaXNf aW50ZXJuYWw7CiAKLQkoKm9iamVjdF9hY2Nlc3NfaG9vaykgKE9BVF9QT1NU X0FMVEVSLAorCW9iamVjdF9hY2Nlc3NfaG9vayhPQVRfUE9TVF9BTFRFUiwK IAkJCQkJCSAgIGNsYXNzSWQsIG9iamVjdElkLCBzdWJJZCwKIAkJCQkJCSAg ICh2b2lkICopICZwYV9hcmcpOwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIFJ1 bk5hbWVzcGFjZVNlYXJjaEhvb2soT2lkIG9iamVjdElkLCBib29sIGVyZXBv cnRfb25fdmlvbGF0aW9uKQogCW5zX2FyZy5lcmVwb3J0X29uX3Zpb2xhdGlv biA9IGVyZXBvcnRfb25fdmlvbGF0aW9uOwogCW5zX2FyZy5yZXN1bHQgPSB0 cnVlOwogCi0JKCpvYmplY3RfYWNjZXNzX2hvb2spIChPQVRfTkFNRVNQQUNF X1NFQVJDSCwKKwlvYmplY3RfYWNjZXNzX2hvb2soT0FUX05BTUVTUEFDRV9T RUFSQ0gsCiAJCQkJCQkgICBOYW1lc3BhY2VSZWxhdGlvbklkLCBvYmplY3RJ ZCwgMCwKIAkJCQkJCSAgICh2b2lkICopICZuc19hcmcpOwogCkBAIC0xMjIs NyArMTIyLDcgQEAgUnVuRnVuY3Rpb25FeGVjdXRlSG9vayhPaWQgb2JqZWN0 SWQpCiAJLyogY2FsbGVyIHNob3VsZCBjaGVjaywgYnV0IGp1c3QgaW4gY2Fz ZS4uLiAqLwogCUFzc2VydChvYmplY3RfYWNjZXNzX2hvb2sgIT0gTlVMTCk7 CiAKLQkoKm9iamVjdF9hY2Nlc3NfaG9vaykgKE9BVF9GVU5DVElPTl9FWEVD VVRFLAorCW9iamVjdF9hY2Nlc3NfaG9vayhPQVRfRlVOQ1RJT05fRVhFQ1VU RSwKIAkJCQkJCSAgIFByb2NlZHVyZVJlbGF0aW9uSWQsIG9iamVjdElkLCAw LAogCQkJCQkJICAgTlVMTCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKaW5kZXggMmI2MzgyNzFiMy4uNWZmZmIyNWM1NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNDk5LDcgKzQ5OSw3 IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgaW50IG9wdGlv bnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJCQkJcm93cywg dGFyZ3Jvd3MsCiAJCQkJCQkJCQkJCQkmdG90YWxyb3dzLCAmdG90YWxkZWFk cm93cyk7CiAJZWxzZQotCQludW1yb3dzID0gKCphY3F1aXJlZnVuYykgKG9u ZXJlbCwgZWxldmVsLAorCQludW1yb3dzID0gYWNxdWlyZWZ1bmMob25lcmVs LCBlbGV2ZWwsCiAJCQkJCQkJCSAgcm93cywgdGFyZ3Jvd3MsCiAJCQkJCQkJ CSAgJnRvdGFscm93cywgJnRvdGFsZGVhZHJvd3MpOwogCkBAIC01MjYsNyAr NTI2LDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBpbnQg b3B0aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAKIAkJCXN0YXRzLT5y b3dzID0gcm93czsKIAkJCXN0YXRzLT50dXBEZXNjID0gb25lcmVsLT5yZF9h dHQ7Ci0JCQkoKnN0YXRzLT5jb21wdXRlX3N0YXRzKSAoc3RhdHMsCisJCQlz dGF0cy0+Y29tcHV0ZV9zdGF0cyhzdGF0cywKIAkJCQkJCQkJCSBzdGRfZmV0 Y2hfZnVuYywKIAkJCQkJCQkJCSBudW1yb3dzLAogCQkJCQkJCQkJIHRvdGFs cm93cyk7CkBAIC04MzAsNyArODMwLDcgQEAgY29tcHV0ZV9pbmRleF9zdGF0 cyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCQkJc3Rh dHMtPmV4cHJ2YWxzID0gZXhwcnZhbHMgKyBpOwogCQkJCXN0YXRzLT5leHBy bnVsbHMgPSBleHBybnVsbHMgKyBpOwogCQkJCXN0YXRzLT5yb3dzdHJpZGUg PSBhdHRyX2NudDsKLQkJCQkoKnN0YXRzLT5jb21wdXRlX3N0YXRzKSAoc3Rh dHMsCisJCQkJc3RhdHMtPmNvbXB1dGVfc3RhdHMoc3RhdHMsCiAJCQkJCQkJ CQkJIGluZF9mZXRjaF9mdW5jLAogCQkJCQkJCQkJCSBudW1pbmRleHJvd3Ms CiAJCQkJCQkJCQkJIHRvdGFsaW5kZXhyb3dzKTsKQEAgLTE0MzAsNyArMTQz MCw3IEBAIGFjcXVpcmVfaW5oZXJpdGVkX3NhbXBsZV9yb3dzKFJlbGF0aW9u IG9uZXJlbCwgaW50IGVsZXZlbCwKIAkJCQkJCQl0ZHJvd3M7CiAKIAkJCQkv KiBGZXRjaCBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIGNoaWxkJ3Mgcm93cyAq LwotCQkJCWNoaWxkcm93cyA9ICgqYWNxdWlyZWZ1bmMpIChjaGlsZHJlbCwg ZWxldmVsLAorCQkJCWNoaWxkcm93cyA9IGFjcXVpcmVmdW5jKGNoaWxkcmVs LCBlbGV2ZWwsCiAJCQkJCQkJCQkJCXJvd3MgKyBudW1yb3dzLCBjaGlsZHRh cmdyb3dzLAogCQkJCQkJCQkJCQkmdHJvd3MsICZ0ZHJvd3MpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggNzY0ODIwMTIxOC4u YmIwYTQ5Y2I4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwpAQCAtMzUzLDcgKzM1Myw3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAq cXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCiAJLyogaWYgYW4gYWR2aXNv ciBwbHVnaW4gaXMgcHJlc2VudCwgbGV0IGl0IG1hbmFnZSB0aGluZ3MgKi8K IAlpZiAoRXhwbGFpbk9uZVF1ZXJ5X2hvb2spCi0JCSgqRXhwbGFpbk9uZVF1 ZXJ5X2hvb2spIChxdWVyeSwgY3Vyc29yT3B0aW9ucywgaW50bywgZXMsCisJ CUV4cGxhaW5PbmVRdWVyeV9ob29rKHF1ZXJ5LCBjdXJzb3JPcHRpb25zLCBp bnRvLCBlcywKIAkJCQkJCQkJIHF1ZXJ5U3RyaW5nLCBwYXJhbXMpOwogCWVs c2UKIAl7CkBAIC0yNDQxLDcgKzI0NDEsNyBAQCBleHBsYWluX2dldF9pbmRl eF9uYW1lKE9pZCBpbmRleElkKQogCWNvbnN0IGNoYXIgKnJlc3VsdDsKIAog CWlmIChleHBsYWluX2dldF9pbmRleF9uYW1lX2hvb2spCi0JCXJlc3VsdCA9 ICgqZXhwbGFpbl9nZXRfaW5kZXhfbmFtZV9ob29rKSAoaW5kZXhJZCk7CisJ CXJlc3VsdCA9IGV4cGxhaW5fZ2V0X2luZGV4X25hbWVfaG9vayhpbmRleElk KTsKIAllbHNlCiAJCXJlc3VsdCA9IE5VTEw7CiAJaWYgKHJlc3VsdCA9PSBO VUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmlu ZGV4IDQ2MzY5Y2YzZGIuLmIzNjQ3M2ZiYTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTM5Nyw3ICszOTcsNyBAQCBQ ZXJzaXN0SG9sZGFibGVQb3J0YWwoUG9ydGFsIHBvcnRhbCkKIAkJLyogRmV0 Y2ggdGhlIHJlc3VsdCBzZXQgaW50byB0aGUgdHVwbGVzdG9yZSAqLwogCQlF eGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAw TCwgZmFsc2UpOwogCi0JCSgqcXVlcnlEZXNjLT5kZXN0LT5yRGVzdHJveSkg KHF1ZXJ5RGVzYy0+ZGVzdCk7CisJCXF1ZXJ5RGVzYy0+ZGVzdC0+ckRlc3Ry b3kocXVlcnlEZXNjLT5kZXN0KTsKIAkJcXVlcnlEZXNjLT5kZXN0ID0gTlVM TDsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2VjbGFiZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMK aW5kZXggNWYxNmQ2Y2YxYy4uYjBiMDZmYzkxZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZWNsYWJlbC5jCkBAIC0xMjIsNyArMTIyLDcgQEAgRXhl Y1NlY0xhYmVsU3RtdChTZWNMYWJlbFN0bXQgKnN0bXQpCiAJfQogCiAJLyog UHJvdmlkZXIgZ2V0cyBjb250cm9sIGhlcmUsIG1heSB0aHJvdyBFUlJPUiB0 byB2ZXRvIG5ldyBsYWJlbC4gKi8KLQkoKnByb3ZpZGVyLT5ob29rKSAoJmFk ZHJlc3MsIHN0bXQtPmxhYmVsKTsKKwlwcm92aWRlci0+aG9vaygmYWRkcmVz cywgc3RtdC0+bGFiZWwpOwogCiAJLyogQXBwbHkgbmV3IGxhYmVsLiAqLwog CVNldFNlY3VyaXR5TGFiZWwoJmFkZHJlc3MsIHByb3ZpZGVyLT5wcm92aWRl cl9uYW1lLCBzdG10LT5sYWJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy91c2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy91c2Vy LmMKaW5kZXggZjI5NDEzNTJkNy4uZTM0YjczNmYxZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdXNlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3VzZXIuYwpAQCAtMzU5LDcgKzM1OSw3IEBAIENyZWF0ZVJv bGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVSb2xlU3RtdCAqc3RtdCkK IAkgKiBDYWxsIHRoZSBwYXNzd29yZCBjaGVja2luZyBob29rIGlmIHRoZXJl IGlzIG9uZSBkZWZpbmVkCiAJICovCiAJaWYgKGNoZWNrX3Bhc3N3b3JkX2hv b2sgJiYgcGFzc3dvcmQpCi0JCSgqY2hlY2tfcGFzc3dvcmRfaG9vaykgKHN0 bXQtPnJvbGUsCisJCWNoZWNrX3Bhc3N3b3JkX2hvb2soc3RtdC0+cm9sZSwK IAkJCQkJCQkJcGFzc3dvcmQsCiAJCQkJCQkJCWdldF9wYXNzd29yZF90eXBl KHBhc3N3b3JkKSwKIAkJCQkJCQkJdmFsaWRVbnRpbF9kYXR1bSwKQEAgLTc0 NCw3ICs3NDQsNyBAQCBBbHRlclJvbGUoQWx0ZXJSb2xlU3RtdCAqc3RtdCkK IAkgKiBDYWxsIHRoZSBwYXNzd29yZCBjaGVja2luZyBob29rIGlmIHRoZXJl IGlzIG9uZSBkZWZpbmVkCiAJICovCiAJaWYgKGNoZWNrX3Bhc3N3b3JkX2hv b2sgJiYgcGFzc3dvcmQpCi0JCSgqY2hlY2tfcGFzc3dvcmRfaG9vaykgKHJv bGVuYW1lLAorCQljaGVja19wYXNzd29yZF9ob29rKHJvbGVuYW1lLAogCQkJ CQkJCQlwYXNzd29yZCwKIAkJCQkJCQkJZ2V0X3Bhc3N3b3JkX3R5cGUocGFz c3dvcmQpLAogCQkJCQkJCQl2YWxpZFVudGlsX2RhdHVtLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0N1cnJlbnQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNDdXJyZW50LmMKaW5kZXggZjAwZmNlNTkx My4uZjQyZGYzOTE2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0N1cnJlbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjQ3VycmVudC5jCkBAIC0yMjAsNyArMjIwLDcgQEAgZmV0Y2hfY3Vyc29y X3BhcmFtX3ZhbHVlKEV4cHJDb250ZXh0ICplY29udGV4dCwgaW50IHBhcmFt SWQpCiAKIAkJLyogZ2l2ZSBob29rIGEgY2hhbmNlIGluIGNhc2UgcGFyYW1l dGVyIGlzIGR5bmFtaWMgKi8KIAkJaWYgKCFPaWRJc1ZhbGlkKHBybS0+cHR5 cGUpICYmIHBhcmFtSW5mby0+cGFyYW1GZXRjaCAhPSBOVUxMKQotCQkJKCpw YXJhbUluZm8tPnBhcmFtRmV0Y2gpIChwYXJhbUluZm8sIHBhcmFtSWQpOwor CQkJcGFyYW1JbmZvLT5wYXJhbUZldGNoKHBhcmFtSW5mbywgcGFyYW1JZCk7 CiAKIAkJaWYgKE9pZElzVmFsaWQocHJtLT5wdHlwZSkgJiYgIXBybS0+aXNu dWxsKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYwppbmRleCBmMmE1MmY2MjEzLi4yZGQxMTBiMzEwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK QEAgLTY0Nyw3ICs2NDcsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkK IAkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvID0gb3AtPmQuZnVuYy5mY2lu Zm9fZGF0YTsKIAogCQkJZmNpbmZvLT5pc251bGwgPSBmYWxzZTsKLQkJCSpv cC0+cmVzdmFsdWUgPSAob3AtPmQuZnVuYy5mbl9hZGRyKSAoZmNpbmZvKTsK KwkJCSpvcC0+cmVzdmFsdWUgPSBvcC0+ZC5mdW5jLmZuX2FkZHIoZmNpbmZv KTsKIAkJCSpvcC0+cmVzbnVsbCA9IGZjaW5mby0+aXNudWxsOwogCiAJCQlF RU9fTkVYVCgpOwpAQCAtNjY5LDcgKzY2OSw3IEBAIEV4ZWNJbnRlcnBFeHBy KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9v bCAqaXNudWxsKQogCQkJCX0KIAkJCX0KIAkJCWZjaW5mby0+aXNudWxsID0g ZmFsc2U7Ci0JCQkqb3AtPnJlc3ZhbHVlID0gKG9wLT5kLmZ1bmMuZm5fYWRk cikgKGZjaW5mbyk7CisJCQkqb3AtPnJlc3ZhbHVlID0gb3AtPmQuZnVuYy5m bl9hZGRyKGZjaW5mbyk7CiAJCQkqb3AtPnJlc251bGwgPSBmY2luZm8tPmlz bnVsbDsKIAogCXN0cmljdGZhaWw6CkBAIC02ODQsNyArNjg0LDcgQEAgRXhl Y0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAJCQlwZ3N0YXRfaW5pdF9mdW5jdGlv bl91c2FnZShmY2luZm8sICZmY3VzYWdlKTsKIAogCQkJZmNpbmZvLT5pc251 bGwgPSBmYWxzZTsKLQkJCSpvcC0+cmVzdmFsdWUgPSAob3AtPmQuZnVuYy5m bl9hZGRyKSAoZmNpbmZvKTsKKwkJCSpvcC0+cmVzdmFsdWUgPSBvcC0+ZC5m dW5jLmZuX2FkZHIoZmNpbmZvKTsKIAkJCSpvcC0+cmVzbnVsbCA9IGZjaW5m by0+aXNudWxsOwogCiAJCQlwZ3N0YXRfZW5kX2Z1bmN0aW9uX3VzYWdlKCZm Y3VzYWdlLCB0cnVlKTsKQEAgLTcxMiw3ICs3MTIsNyBAQCBFeGVjSW50ZXJw RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJCXBnc3RhdF9pbml0X2Z1bmN0aW9uX3VzYWdl KGZjaW5mbywgJmZjdXNhZ2UpOwogCiAJCQlmY2luZm8tPmlzbnVsbCA9IGZh bHNlOwotCQkJKm9wLT5yZXN2YWx1ZSA9IChvcC0+ZC5mdW5jLmZuX2FkZHIp IChmY2luZm8pOworCQkJKm9wLT5yZXN2YWx1ZSA9IG9wLT5kLmZ1bmMuZm5f YWRkcihmY2luZm8pOwogCQkJKm9wLT5yZXNudWxsID0gZmNpbmZvLT5pc251 bGw7CiAKIAkJCXBnc3RhdF9lbmRfZnVuY3Rpb25fdXNhZ2UoJmZjdXNhZ2Us IHRydWUpOwpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29s ICppc251bGwpCiAJCQkJRGF0dW0JCWVxcmVzdWx0OwogCiAJCQkJZmNpbmZv LT5pc251bGwgPSBmYWxzZTsKLQkJCQllcXJlc3VsdCA9IChvcC0+ZC5mdW5j LmZuX2FkZHIpIChmY2luZm8pOworCQkJCWVxcmVzdWx0ID0gb3AtPmQuZnVu Yy5mbl9hZGRyKGZjaW5mbyk7CiAJCQkJLyogTXVzdCBpbnZlcnQgcmVzdWx0 IG9mICI9Ijsgc2FmZSB0byBkbyBldmVuIGlmIG51bGwgKi8KIAkJCQkqb3At PnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKCFEYXR1bUdldEJvb2woZXFyZXN1 bHQpKTsKIAkJCQkqb3AtPnJlc251bGwgPSBmY2luZm8tPmlzbnVsbDsKQEAg LTExOTIsNyArMTE5Miw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQog CQkJCURhdHVtCQlyZXN1bHQ7CiAKIAkJCQlmY2luZm8tPmlzbnVsbCA9IGZh bHNlOwotCQkJCXJlc3VsdCA9IChvcC0+ZC5mdW5jLmZuX2FkZHIpIChmY2lu Zm8pOworCQkJCXJlc3VsdCA9IG9wLT5kLmZ1bmMuZm5fYWRkcihmY2luZm8p OwogCiAJCQkJLyogaWYgdGhlIGFyZ3VtZW50cyBhcmUgZXF1YWwgcmV0dXJu IG51bGwgKi8KIAkJCQlpZiAoIWZjaW5mby0+aXNudWxsICYmIERhdHVtR2V0 Qm9vbChyZXN1bHQpKQpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgRXhlY0ludGVy cEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0 LCBib29sICppc251bGwpCiAKIAkJCS8qIEFwcGx5IGNvbXBhcmlzb24gZnVu Y3Rpb24gKi8KIAkJCWZjaW5mby0+aXNudWxsID0gZmFsc2U7Ci0JCQkqb3At PnJlc3ZhbHVlID0gKG9wLT5kLnJvd2NvbXBhcmVfc3RlcC5mbl9hZGRyKSAo ZmNpbmZvKTsKKwkJCSpvcC0+cmVzdmFsdWUgPSBvcC0+ZC5yb3djb21wYXJl X3N0ZXAuZm5fYWRkcihmY2luZm8pOwogCiAJCQkvKiBmb3JjZSBOVUxMIHJl c3VsdCBpZiBOVUxMIGZ1bmN0aW9uIHJlc3VsdCAqLwogCQkJaWYgKGZjaW5m by0+aXNudWxsKQpAQCAtMTg3OCw3ICsxODc4LDcgQEAgRXhlY0V2YWxQYXJh bUV4dGVybihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBF eHByQ29udGV4dCAqZWNvbnRleHQpCiAKIAkJLyogZ2l2ZSBob29rIGEgY2hh bmNlIGluIGNhc2UgcGFyYW1ldGVyIGlzIGR5bmFtaWMgKi8KIAkJaWYgKCFP aWRJc1ZhbGlkKHBybS0+cHR5cGUpICYmIHBhcmFtSW5mby0+cGFyYW1GZXRj aCAhPSBOVUxMKQotCQkJKCpwYXJhbUluZm8tPnBhcmFtRmV0Y2gpIChwYXJh bUluZm8sIHBhcmFtSWQpOworCQkJcGFyYW1JbmZvLT5wYXJhbUZldGNoKHBh cmFtSW5mbywgcGFyYW1JZCk7CiAKIAkJaWYgKGxpa2VseShPaWRJc1ZhbGlk KHBybS0+cHR5cGUpKSkKIAkJewpAQCAtMzAwMCw3ICszMDAwLDcgQEAgRXhl Y0V2YWxTY2FsYXJBcnJheU9wKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3ApCiAJCWVsc2UKIAkJewogCQkJZmNpbmZvLT5pc251bGwgPSBm YWxzZTsKLQkJCXRoaXNyZXN1bHQgPSAob3AtPmQuc2NhbGFyYXJyYXlvcC5m bl9hZGRyKSAoZmNpbmZvKTsKKwkJCXRoaXNyZXN1bHQgPSBvcC0+ZC5zY2Fs YXJhcnJheW9wLmZuX2FkZHIoZmNpbmZvKTsKIAkJfQogCiAJCS8qIENvbWJp bmUgcmVzdWx0cyBwZXIgT1Igb3IgQU5EIHNlbWFudGljcyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNjY3MWEyNWZmYi4u NDJiMDMzZDAzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZAogRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlpZiAoRXhl Y3V0b3JTdGFydF9ob29rKQotCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1 ZXJ5RGVzYywgZWZsYWdzKTsKKwkJRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5 RGVzYywgZWZsYWdzKTsKIAllbHNlCiAJCXN0YW5kYXJkX0V4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBA IEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJYm9vbCBl eGVjdXRlX29uY2UpCiB7CiAJaWYgKEV4ZWN1dG9yUnVuX2hvb2spCi0JCSgq RXhlY3V0b3JSdW5faG9vaykgKHF1ZXJ5RGVzYywgZGlyZWN0aW9uLCBjb3Vu dCwgZXhlY3V0ZV9vbmNlKTsKKwkJRXhlY3V0b3JSdW5faG9vayhxdWVyeURl c2MsIGRpcmVjdGlvbiwgY291bnQsIGV4ZWN1dGVfb25jZSk7CiAJZWxzZQog CQlzdGFuZGFyZF9FeGVjdXRvclJ1bihxdWVyeURlc2MsIGRpcmVjdGlvbiwg Y291bnQsIGV4ZWN1dGVfb25jZSk7CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAg c3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJ CQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5oYXNSZXR1cm5pbmcpOwog CiAJaWYgKHNlbmRUdXBsZXMpCi0JCSgqZGVzdC0+clN0YXJ0dXApIChkZXN0 LCBvcGVyYXRpb24sIHF1ZXJ5RGVzYy0+dHVwRGVzYyk7CisJCWRlc3QtPnJT dGFydHVwKGRlc3QsIG9wZXJhdGlvbiwgcXVlcnlEZXNjLT50dXBEZXNjKTsK IAogCS8qCiAJICogcnVuIHBsYW4KQEAgLTM3NCw3ICszNzQsNyBAQCBzdGFu ZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkgKiBz aHV0ZG93biB0dXBsZSByZWNlaXZlciwgaWYgd2Ugc3RhcnRlZCBpdAogCSAq LwogCWlmIChzZW5kVHVwbGVzKQotCQkoKmRlc3QtPnJTaHV0ZG93bikgKGRl c3QpOworCQlkZXN0LT5yU2h1dGRvd24oZGVzdCk7CiAKIAlpZiAocXVlcnlE ZXNjLT50b3RhbHRpbWUpCiAJCUluc3RyU3RvcE5vZGUocXVlcnlEZXNjLT50 b3RhbHRpbWUsIGVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKQEAgLTQwMCw3ICs0 MDAsNyBAQCB2b2lkCiBFeGVjdXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5 RGVzYykKIHsKIAlpZiAoRXhlY3V0b3JGaW5pc2hfaG9vaykKLQkJKCpFeGVj dXRvckZpbmlzaF9ob29rKSAocXVlcnlEZXNjKTsKKwkJRXhlY3V0b3JGaW5p c2hfaG9vayhxdWVyeURlc2MpOwogCWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0 b3JGaW5pc2gocXVlcnlEZXNjKTsKIH0KQEAgLTQ2MCw3ICs0NjAsNyBAQCB2 b2lkCiBFeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIHsKIAlp ZiAoRXhlY3V0b3JFbmRfaG9vaykKLQkJKCpFeGVjdXRvckVuZF9ob29rKSAo cXVlcnlEZXNjKTsKKwkJRXhlY3V0b3JFbmRfaG9vayhxdWVyeURlc2MpOwog CWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKIH0K QEAgLTU4Nyw3ICs1ODcsNyBAQCBFeGVjQ2hlY2tSVFBlcm1zKExpc3QgKnJh bmdlVGFibGUsIGJvb2wgZXJlcG9ydF9vbl92aW9sYXRpb24pCiAJfQogCiAJ aWYgKEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rKQotCQlyZXN1bHQgPSAoKkV4 ZWN1dG9yQ2hlY2tQZXJtc19ob29rKSAocmFuZ2VUYWJsZSwKKwkJcmVzdWx0 ID0gRXhlY3V0b3JDaGVja1Blcm1zX2hvb2socmFuZ2VUYWJsZSwKIAkJCQkJ CQkJCQkJIGVyZXBvcnRfb25fdmlvbGF0aW9uKTsKIAlyZXR1cm4gcmVzdWx0 OwogfQpAQCAtMTcyNSw3ICsxNzI1LDcgQEAgRXhlY3V0ZVBsYW4oRVN0YXRl ICplc3RhdGUsCiAJCQkgKiBoYXMgY2xvc2VkIGFuZCBubyBtb3JlIHR1cGxl cyBjYW4gYmUgc2VudC4gSWYgdGhhdCdzIHRoZSBjYXNlLAogCQkJICogZW5k IHRoZSBsb29wLgogCQkJICovCi0JCQlpZiAoISgoKmRlc3QtPnJlY2VpdmVT bG90KSAoc2xvdCwgZGVzdCkpKQorCQkJaWYgKCFkZXN0LT5yZWNlaXZlU2xv dChzbG90LCBkZXN0KSkKIAkJCQlicmVhazsKIAkJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGNlNDdmMWQ0 YTguLjQwYTg2MGFiMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jCkBAIC04ODksNSArODg5LDUgQEAgUGFyYWxsZWxR dWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8q IENsZWFudXAuICovCiAJZHNhX2RldGFjaChhcmVhKTsKIAlGcmVlUXVlcnlE ZXNjKHF1ZXJ5RGVzYyk7Ci0JKCpyZWNlaXZlci0+ckRlc3Ryb3kpIChyZWNl aXZlcik7CisJcmVjZWl2ZXItPnJEZXN0cm95KHJlY2VpdmVyKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwppbmRleCA3YWU3 MGE4NzdhLi40OTU1MjkwZTA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1R1cGxlcy5jCkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBiZWdpbl90 dXBfb3V0cHV0X3R1cGRlc2MoRGVzdFJlY2VpdmVyICpkZXN0LCBUdXBsZURl c2MgdHVwZGVzYykKIAl0c3RhdGUtPnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QodHVwZGVzYyk7CiAJdHN0YXRlLT5kZXN0ID0gZGVzdDsKIAot CSgqdHN0YXRlLT5kZXN0LT5yU3RhcnR1cCkgKHRzdGF0ZS0+ZGVzdCwgKGlu dCkgQ01EX1NFTEVDVCwgdHVwZGVzYyk7CisJdHN0YXRlLT5kZXN0LT5yU3Rh cnR1cCh0c3RhdGUtPmRlc3QsIChpbnQpIENNRF9TRUxFQ1QsIHR1cGRlc2Mp OwogCiAJcmV0dXJuIHRzdGF0ZTsKIH0KQEAgLTEyNjMsNyArMTI2Myw3IEBA IGRvX3R1cF9vdXRwdXQoVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZSwgRGF0dW0g KnZhbHVlcywgYm9vbCAqaXNudWxsKQogCUV4ZWNTdG9yZVZpcnR1YWxUdXBs ZShzbG90KTsKIAogCS8qIHNlbmQgdGhlIHR1cGxlIHRvIHRoZSByZWNlaXZl ciAqLwotCSh2b2lkKSAoKnRzdGF0ZS0+ZGVzdC0+cmVjZWl2ZVNsb3QpIChz bG90LCB0c3RhdGUtPmRlc3QpOworCSh2b2lkKSB0c3RhdGUtPmRlc3QtPnJl Y2VpdmVTbG90KHNsb3QsIHRzdGF0ZS0+ZGVzdCk7CiAKIAkvKiBjbGVhbiB1 cCAqLwogCUV4ZWNDbGVhclR1cGxlKHNsb3QpOwpAQCAtMTMwNyw3ICsxMzA3 LDcgQEAgZG9fdGV4dF9vdXRwdXRfbXVsdGlsaW5lKFR1cE91dHB1dFN0YXRl ICp0c3RhdGUsIGNvbnN0IGNoYXIgKnR4dCkKIHZvaWQKIGVuZF90dXBfb3V0 cHV0KFR1cE91dHB1dFN0YXRlICp0c3RhdGUpCiB7Ci0JKCp0c3RhdGUtPmRl c3QtPnJTaHV0ZG93bikgKHRzdGF0ZS0+ZGVzdCk7CisJdHN0YXRlLT5kZXN0 LT5yU2h1dGRvd24odHN0YXRlLT5kZXN0KTsKIAkvKiBub3RlIHRoYXQgZGVz dHJveWluZyB0aGUgZGVzdCBpcyBub3Qgb3VycyB0byBkbyAqLwogCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QodHN0YXRlLT5zbG90KTsKIAlwZnJl ZSh0c3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCAyNTc3MmZjNjAzLi45ZDJiYTUyMzJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODA4LDcgKzgwOCw3IEBA IFNodXRkb3duRXhwckNvbnRleHQoRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sIGlzQ29tbWl0KQogCXsKIAkJZWNvbnRleHQtPmVjeHRfY2FsbGJhY2tz ID0gZWN4dF9jYWxsYmFjay0+bmV4dDsKIAkJaWYgKGlzQ29tbWl0KQotCQkJ KCplY3h0X2NhbGxiYWNrLT5mdW5jdGlvbikgKGVjeHRfY2FsbGJhY2stPmFy Zyk7CisJCQllY3h0X2NhbGxiYWNrLT5mdW5jdGlvbihlY3h0X2NhbGxiYWNr LT5hcmcpOwogCQlwZnJlZShlY3h0X2NhbGxiYWNrKTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggMzYzMGY1ZDk2 Ni4uOGY0OGE4M2FkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMKQEAgLTg4Niw3ICs4ODYsNyBAQCBwb3N0cXVlbF9lbmQoZXhl Y3V0aW9uX3N0YXRlICplcykKIAkJRXhlY3V0b3JFbmQoZXMtPnFkKTsKIAl9 CiAKLQkoKmVzLT5xZC0+ZGVzdC0+ckRlc3Ryb3kpIChlcy0+cWQtPmRlc3Qp OworCWVzLT5xZC0+ZGVzdC0+ckRlc3Ryb3koZXMtPnFkLT5kZXN0KTsKIAog CUZyZWVRdWVyeURlc2MoZXMtPnFkKTsKIAllcy0+cWQgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tl bmQvbGlicHEvYXV0aC5jCmluZGV4IGNiMzBmYzdiNzEuLjRmMTc1NmY5MGYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9hdXRoLmMKQEAgLTU5Myw3ICs1OTMsNyBAQCBD bGllbnRBdXRoZW50aWNhdGlvbihQb3J0ICpwb3J0KQogCX0KIAogCWlmIChD bGllbnRBdXRoZW50aWNhdGlvbl9ob29rKQotCQkoKkNsaWVudEF1dGhlbnRp Y2F0aW9uX2hvb2spIChwb3J0LCBzdGF0dXMpOworCQlDbGllbnRBdXRoZW50 aWNhdGlvbl9ob29rKHBvcnQsIHN0YXR1cyk7CiAKIAlpZiAoc3RhdHVzID09 IFNUQVRVU19PSykKIAkJc2VuZEF1dGhSZXF1ZXN0KHBvcnQsIEFVVEhfUkVR X09LLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBx L2lmYWRkci5jIGIvc3JjL2JhY2tlbmQvbGlicHEvaWZhZGRyLmMKaW5kZXgg NTNiZjZiY2Q4MC4uMDlhNjg0ZGFhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbGlicHEvaWZhZGRyLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvaWZh ZGRyLmMKQEAgLTIyNSw3ICsyMjUsNyBAQCBydW5faWZhZGRyX2NhbGxiYWNr KFBnSWZBZGRyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNiX2RhdGEsCiAJ CW1hc2sgPSAoc3RydWN0IHNvY2thZGRyICopICZmdWxsbWFzazsKIAl9CiAK LQkoKmNhbGxiYWNrKSAoYWRkciwgbWFzaywgY2JfZGF0YSk7CisJY2FsbGJh Y2soYWRkciwgbWFzaywgY2JfZGF0YSk7CiB9CiAKICNpZmRlZiBXSU4zMgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcGFyYW1zLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9wYXJhbXMuYwppbmRleCAxMTA3MzIwODFiLi41MTQy OWFmMWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9wYXJhbXMu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9wYXJhbXMuYwpAQCAtNzMsNyAr NzMsNyBAQCBjb3B5UGFyYW1MaXN0KFBhcmFtTGlzdEluZm8gZnJvbSkKIAog CQkvKiBnaXZlIGhvb2sgYSBjaGFuY2UgaW4gY2FzZSBwYXJhbWV0ZXIgaXMg ZHluYW1pYyAqLwogCQlpZiAoIU9pZElzVmFsaWQob3BybS0+cHR5cGUpICYm IGZyb20tPnBhcmFtRmV0Y2ggIT0gTlVMTCkKLQkJCSgqZnJvbS0+cGFyYW1G ZXRjaCkgKGZyb20sIGkgKyAxKTsKKwkJCWZyb20tPnBhcmFtRmV0Y2goZnJv bSwgaSArIDEpOwogCiAJCS8qIGZsYXQtY29weSB0aGUgcGFyYW1ldGVyIGlu Zm8gKi8KIAkJKm5wcm0gPSAqb3BybTsKQEAgLTExNSw3ICsxMTUsNyBAQCBF c3RpbWF0ZVBhcmFtTGlzdFNwYWNlKFBhcmFtTGlzdEluZm8gcGFyYW1MSSkK IAkJewogCQkJLyogZ2l2ZSBob29rIGEgY2hhbmNlIGluIGNhc2UgcGFyYW1l dGVyIGlzIGR5bmFtaWMgKi8KIAkJCWlmICghT2lkSXNWYWxpZChwcm0tPnB0 eXBlKSAmJiBwYXJhbUxJLT5wYXJhbUZldGNoICE9IE5VTEwpCi0JCQkJKCpw YXJhbUxJLT5wYXJhbUZldGNoKSAocGFyYW1MSSwgaSArIDEpOworCQkJCXBh cmFtTEktPnBhcmFtRmV0Y2gocGFyYW1MSSwgaSArIDEpOwogCQkJdHlwZU9p ZCA9IHBybS0+cHR5cGU7CiAJCX0KIApAQCAtMTg0LDcgKzE4NCw3IEBAIFNl cmlhbGl6ZVBhcmFtTGlzdChQYXJhbUxpc3RJbmZvIHBhcmFtTEksIGNoYXIg KipzdGFydF9hZGRyZXNzKQogCQl7CiAJCQkvKiBnaXZlIGhvb2sgYSBjaGFu Y2UgaW4gY2FzZSBwYXJhbWV0ZXIgaXMgZHluYW1pYyAqLwogCQkJaWYgKCFP aWRJc1ZhbGlkKHBybS0+cHR5cGUpICYmIHBhcmFtTEktPnBhcmFtRmV0Y2gg IT0gTlVMTCkKLQkJCQkoKnBhcmFtTEktPnBhcmFtRmV0Y2gpIChwYXJhbUxJ LCBpICsgMSk7CisJCQkJcGFyYW1MSS0+cGFyYW1GZXRjaChwYXJhbUxJLCBp ICsgMSk7CiAJCQl0eXBlT2lkID0gcHJtLT5wdHlwZTsKIAkJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRl eCAyZDdlMWQ4NGQwLi5kNzVkZjRiNGMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTQ5NCw3ICs0OTQs NyBAQCBzZXRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsCiAJICogYWRkX3BhdGgoKSwgb3IgZGVsZXRlIG9yIG1v ZGlmeSBwYXRocyBhZGRlZCBieSB0aGUgY29yZSBjb2RlLgogCSAqLwogCWlm IChzZXRfcmVsX3BhdGhsaXN0X2hvb2spCi0JCSgqc2V0X3JlbF9wYXRobGlz dF9ob29rKSAocm9vdCwgcmVsLCBydGksIHJ0ZSk7CisJCXNldF9yZWxfcGF0 aGxpc3RfaG9vayhyb290LCByZWwsIHJ0aSwgcnRlKTsKIAogCS8qIE5vdyBm aW5kIHRoZSBjaGVhcGVzdCBvZiB0aGUgcGF0aHMgZm9yIHRoaXMgcmVsICov CiAJc2V0X2NoZWFwZXN0KHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCBmNGUwYTZlYTNkLi4wNGFl YzQxMTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5tYWluLmMKQEAgLTkzLDcgKzkzLDcgQEAgcXVlcnlfcGxhbm5lcihQ bGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdGxpc3QsCiAJCSAqIGxpa2UgIlNF TEVDVCAyKzIgT1JERVIgQlkgMSIuCiAJCSAqLwogCQlyb290LT5jYW5vbl9w YXRoa2V5cyA9IE5JTDsKLQkJKCpxcF9jYWxsYmFjaykgKHJvb3QsIHFwX2V4 dHJhKTsKKwkJcXBfY2FsbGJhY2socm9vdCwgcXBfZXh0cmEpOwogCiAJCXJl dHVybiBmaW5hbF9yZWw7CiAJfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHF1ZXJ5 X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnRsaXN0LAogCSAq IGdlbmVyYXRlIHBhdGhrZXlzIGluIGNhbm9uaWNhbCBmb3JtOyBzbyBjb21w dXRlIHF1ZXJ5X3BhdGhrZXlzIGFuZAogCSAqIG90aGVyIHBhdGhrZXlzIGZp ZWxkcyBpbiBQbGFubmVySW5mby4KIAkgKi8KLQkoKnFwX2NhbGxiYWNrKSAo cm9vdCwgcXBfZXh0cmEpOworCXFwX2NhbGxiYWNrKHJvb3QsIHFwX2V4dHJh KTsKIAogCS8qCiAJICogRXhhbWluZSBhbnkgInBsYWNlaG9sZGVyIiBleHBy ZXNzaW9ucyBnZW5lcmF0ZWQgZHVyaW5nIHN1YnF1ZXJ5IHB1bGx1cC4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRl eCA0MDdkZjlhZTc5Li44NGNlOTg5ODBmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yMDUsNyArMjA1LDcg QEAgcGxhbm5lcihRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JPcHRpb25zLCBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCVBsYW5uZWRTdG10ICpyZXN1 bHQ7CiAKIAlpZiAocGxhbm5lcl9ob29rKQotCQlyZXN1bHQgPSAoKnBsYW5u ZXJfaG9vaykgKHBhcnNlLCBjdXJzb3JPcHRpb25zLCBib3VuZFBhcmFtcyk7 CisJCXJlc3VsdCA9IHBsYW5uZXJfaG9vayhwYXJzZSwgY3Vyc29yT3B0aW9u cywgYm91bmRQYXJhbXMpOwogCWVsc2UKIAkJcmVzdWx0ID0gc3RhbmRhcmRf cGxhbm5lcihwYXJzZSwgY3Vyc29yT3B0aW9ucywgYm91bmRQYXJhbXMpOwog CXJldHVybiByZXN1bHQ7CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCBncm91cGlu Z19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBib29sIGluaGVyaXRhbmNl X3VwZGF0ZSwKIAogCS8qIExldCBleHRlbnNpb25zIHBvc3NpYmx5IGFkZCBz b21lIG1vcmUgcGF0aHMgKi8KIAlpZiAoY3JlYXRlX3VwcGVyX3BhdGhzX2hv b2spCi0JCSgqY3JlYXRlX3VwcGVyX3BhdGhzX2hvb2spIChyb290LCBVUFBF UlJFTF9GSU5BTCwKKwkJY3JlYXRlX3VwcGVyX3BhdGhzX2hvb2socm9vdCwg VVBQRVJSRUxfRklOQUwsCiAJCQkJCQkJCQljdXJyZW50X3JlbCwgZmluYWxf cmVsKTsKIAogCS8qIE5vdGU6IGN1cnJlbnRseSwgd2UgbGVhdmUgaXQgdG8g Y2FsbGVycyB0byBkbyBzZXRfY2hlYXBlc3QoKSAqLwpAQCAtNDExMyw3ICs0 MTEzLDcgQEAgY3JlYXRlX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpy b290LAogCiAJLyogTGV0IGV4dGVuc2lvbnMgcG9zc2libHkgYWRkIHNvbWUg bW9yZSBwYXRocyAqLwogCWlmIChjcmVhdGVfdXBwZXJfcGF0aHNfaG9vaykK LQkJKCpjcmVhdGVfdXBwZXJfcGF0aHNfaG9vaykgKHJvb3QsIFVQUEVSUkVM X0dST1VQX0FHRywKKwkJY3JlYXRlX3VwcGVyX3BhdGhzX2hvb2socm9vdCwg VVBQRVJSRUxfR1JPVVBfQUdHLAogCQkJCQkJCQkJaW5wdXRfcmVsLCBncm91 cGVkX3JlbCk7CiAKIAkvKiBOb3cgY2hvb3NlIHRoZSBiZXN0IHBhdGgocykg Ki8KQEAgLTQ1NDksNyArNDU0OSw3IEBAIGNyZWF0ZV93aW5kb3dfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsCiAKIAkvKiBMZXQgZXh0ZW5zaW9ucyBwb3Nz aWJseSBhZGQgc29tZSBtb3JlIHBhdGhzICovCiAJaWYgKGNyZWF0ZV91cHBl cl9wYXRoc19ob29rKQotCQkoKmNyZWF0ZV91cHBlcl9wYXRoc19ob29rKSAo cm9vdCwgVVBQRVJSRUxfV0lORE9XLAorCQljcmVhdGVfdXBwZXJfcGF0aHNf aG9vayhyb290LCBVUFBFUlJFTF9XSU5ET1csCiAJCQkJCQkJCQlpbnB1dF9y ZWwsIHdpbmRvd19yZWwpOwogCiAJLyogTm93IGNob29zZSB0aGUgYmVzdCBw YXRoKHMpICovCkBAIC00ODUzLDcgKzQ4NTMsNyBAQCBjcmVhdGVfZGlzdGlu Y3RfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkvKiBMZXQgZXh0ZW5z aW9ucyBwb3NzaWJseSBhZGQgc29tZSBtb3JlIHBhdGhzICovCiAJaWYgKGNy ZWF0ZV91cHBlcl9wYXRoc19ob29rKQotCQkoKmNyZWF0ZV91cHBlcl9wYXRo c19ob29rKSAocm9vdCwgVVBQRVJSRUxfRElTVElOQ1QsCisJCWNyZWF0ZV91 cHBlcl9wYXRoc19ob29rKHJvb3QsIFVQUEVSUkVMX0RJU1RJTkNULAogCQkJ CQkJCQkJaW5wdXRfcmVsLCBkaXN0aW5jdF9yZWwpOwogCiAJLyogTm93IGNo b29zZSB0aGUgYmVzdCBwYXRoKHMpICovCkBAIC00OTk1LDcgKzQ5OTUsNyBA QCBjcmVhdGVfb3JkZXJlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAog CS8qIExldCBleHRlbnNpb25zIHBvc3NpYmx5IGFkZCBzb21lIG1vcmUgcGF0 aHMgKi8KIAlpZiAoY3JlYXRlX3VwcGVyX3BhdGhzX2hvb2spCi0JCSgqY3Jl YXRlX3VwcGVyX3BhdGhzX2hvb2spIChyb290LCBVUFBFUlJFTF9PUkRFUkVE LAorCQljcmVhdGVfdXBwZXJfcGF0aHNfaG9vayhyb290LCBVUFBFUlJFTF9P UkRFUkVELAogCQkJCQkJCQkJaW5wdXRfcmVsLCBvcmRlcmVkX3JlbCk7CiAK IAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcHVuaW9uLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dW5pb24uYwppbmRleCBmNDNjM2YzMDA3Li43ODQxZGY1MmRiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYwpA QCAtMjEzLDcgKzIxMyw3IEBAIHBsYW5fc2V0X29wZXJhdGlvbnMoUGxhbm5l ckluZm8gKnJvb3QpCiAKIAkvKiBMZXQgZXh0ZW5zaW9ucyBwb3NzaWJseSBh ZGQgc29tZSBtb3JlIHBhdGhzICovCiAJaWYgKGNyZWF0ZV91cHBlcl9wYXRo c19ob29rKQotCQkoKmNyZWF0ZV91cHBlcl9wYXRoc19ob29rKSAocm9vdCwg VVBQRVJSRUxfU0VUT1AsCisJCWNyZWF0ZV91cHBlcl9wYXRoc19ob29rKHJv b3QsIFVQUEVSUkVMX1NFVE9QLAogCQkJCQkJCQkJTlVMTCwgc2V0b3BfcmVs KTsKIAogCS8qIFNlbGVjdCBjaGVhcGVzdCBwYXRoICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggZGMwYjBi MDcwNi4uZjI4YWJkZGVhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYW5jYXQuYwpAQCAtNDI4LDcgKzQyOCw3IEBAIGdldF9y ZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25P YmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJICogcmVtb3ZpbmcgYW4gaW5k ZXgsIG9yIGFkZGluZyBhIGh5cG90aGV0aWNhbCBpbmRleCB0byB0aGUgaW5k ZXhsaXN0LgogCSAqLwogCWlmIChnZXRfcmVsYXRpb25faW5mb19ob29rKQot CQkoKmdldF9yZWxhdGlvbl9pbmZvX2hvb2spIChyb290LCByZWxhdGlvbk9i amVjdElkLCBpbmhwYXJlbnQsIHJlbCk7CisJCWdldF9yZWxhdGlvbl9pbmZv X2hvb2socm9vdCwgcmVsYXRpb25PYmplY3RJZCwgaW5ocGFyZW50LCByZWwp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXgg NGZiNzkzY2ZiZi4uMzZkNjhkMTZhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jCkBAIC0xMTIsNyArMTEyLDcgQEAgcGFyc2VfYW5hbHl6ZShS YXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJ cXVlcnkgPSB0cmFuc2Zvcm1Ub3BMZXZlbFN0bXQocHN0YXRlLCBwYXJzZVRy ZWUpOwogCiAJaWYgKHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rKQotCQkoKnBv c3RfcGFyc2VfYW5hbHl6ZV9ob29rKSAocHN0YXRlLCBxdWVyeSk7CisJCXBv c3RfcGFyc2VfYW5hbHl6ZV9ob29rKHBzdGF0ZSwgcXVlcnkpOwogCiAJZnJl ZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBw YXJzZV9hbmFseXplX3ZhcnBhcmFtcyhSYXdTdG10ICpwYXJzZVRyZWUsIGNv bnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJY2hlY2tfdmFyaWFibGVfcGFyYW1l dGVycyhwc3RhdGUsIHF1ZXJ5KTsKIAogCWlmIChwb3N0X3BhcnNlX2FuYWx5 emVfaG9vaykKLQkJKCpwb3N0X3BhcnNlX2FuYWx5emVfaG9vaykgKHBzdGF0 ZSwgcXVlcnkpOworCQlwb3N0X3BhcnNlX2FuYWx5emVfaG9vayhwc3RhdGUs IHF1ZXJ5KTsKIAogCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMKaW5kZXggMGJjN2Ri YTZhMC4uZDNiNzY2MzdlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2NvZXJjZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jb2VyY2UuYwpAQCAtMzY5LDcgKzM2OSw3IEBAIGNvZXJjZV90eXBl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJICogdHJhbnNm b3JtZWQgbm9kZSAodmVyeSBwb3NzaWJseSB0aGUgc2FtZSBQYXJhbSBub2Rl KSwgb3IgcmV0dXJuCiAJCSAqIE5VTEwgdG8gaW5kaWNhdGUgd2Ugc2hvdWxk IHByb2NlZWQgd2l0aCBub3JtYWwgY29lcmNpb24uCiAJCSAqLwotCQlyZXN1 bHQgPSAoKnBzdGF0ZS0+cF9jb2VyY2VfcGFyYW1faG9vaykgKHBzdGF0ZSwK KwkJcmVzdWx0ID0gcHN0YXRlLT5wX2NvZXJjZV9wYXJhbV9ob29rKHBzdGF0 ZSwKIAkJCQkJCQkJCQkJCSAoUGFyYW0gKikgbm9kZSwKIAkJCQkJCQkJCQkJ CSB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkJCQkgdGFyZ2V0VHlwZU1vZCwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDZkOGNi MDc3NjYuLjFhYWE1MjQ0ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtNTI3LDcgKzUyNyw3IEBAIHRyYW5zZm9ybUNvbHVt blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkg Ki8KIAlpZiAocHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZfaG9vayAhPSBOVUxM KQogCXsKLQkJbm9kZSA9ICgqcHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZfaG9v aykgKHBzdGF0ZSwgY3JlZik7CisJCW5vZGUgPSBwc3RhdGUtPnBfcHJlX2Nv bHVtbnJlZl9ob29rKHBzdGF0ZSwgY3JlZik7CiAJCWlmIChub2RlICE9IE5V TEwpCiAJCQlyZXR1cm4gbm9kZTsKIAl9CkBAIC03NTgsNyArNzU4LDcgQEAg dHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKQogCXsKIAkJTm9kZQkgICAqaG9va3Jlc3VsdDsKIAotCQlo b29rcmVzdWx0ID0gKCpwc3RhdGUtPnBfcG9zdF9jb2x1bW5yZWZfaG9vaykg KHBzdGF0ZSwgY3JlZiwgbm9kZSk7CisJCWhvb2tyZXN1bHQgPSBwc3RhdGUt PnBfcG9zdF9jb2x1bW5yZWZfaG9vayhwc3RhdGUsIGNyZWYsIG5vZGUpOwog CQlpZiAobm9kZSA9PSBOVUxMKQogCQkJbm9kZSA9IGhvb2tyZXN1bHQ7CiAJ CWVsc2UgaWYgKGhvb2tyZXN1bHQgIT0gTlVMTCkKQEAgLTgxMyw3ICs4MTMs NyBAQCB0cmFuc2Zvcm1QYXJhbVJlZihQYXJzZVN0YXRlICpwc3RhdGUsIFBh cmFtUmVmICpwcmVmKQogCSAqIGNhbGwgaXQuICBJZiBub3QsIG9yIGlmIHRo ZSBob29rIHJldHVybnMgTlVMTCwgdGhyb3cgYSBnZW5lcmljIGVycm9yLgog CSAqLwogCWlmIChwc3RhdGUtPnBfcGFyYW1yZWZfaG9vayAhPSBOVUxMKQot CQlyZXN1bHQgPSAoKnBzdGF0ZS0+cF9wYXJhbXJlZl9ob29rKSAocHN0YXRl LCBwcmVmKTsKKwkJcmVzdWx0ID0gcHN0YXRlLT5wX3BhcmFtcmVmX2hvb2so cHN0YXRlLCBwcmVmKTsKIAllbHNlCiAJCXJlc3VsdCA9IE5VTEw7CiAKQEAg LTI1ODUsOSArMjU4NSw5IEBAIHRyYW5zZm9ybUN1cnJlbnRPZkV4cHIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBDdXJyZW50T2ZFeHByICpjZXhwcikKIAogCQkv KiBTZWUgaWYgdGhlcmUgaXMgYSB0cmFuc2xhdGlvbiBhdmFpbGFibGUgZnJv bSBhIHBhcnNlciBob29rICovCiAJCWlmIChwc3RhdGUtPnBfcHJlX2NvbHVt bnJlZl9ob29rICE9IE5VTEwpCi0JCQlub2RlID0gKCpwc3RhdGUtPnBfcHJl X2NvbHVtbnJlZl9ob29rKSAocHN0YXRlLCBjcmVmKTsKKwkJCW5vZGUgPSBw c3RhdGUtPnBfcHJlX2NvbHVtbnJlZl9ob29rKHBzdGF0ZSwgY3JlZik7CiAJ CWlmIChub2RlID09IE5VTEwgJiYgcHN0YXRlLT5wX3Bvc3RfY29sdW1ucmVm X2hvb2sgIT0gTlVMTCkKLQkJCW5vZGUgPSAoKnBzdGF0ZS0+cF9wb3N0X2Nv bHVtbnJlZl9ob29rKSAocHN0YXRlLCBjcmVmLCBOVUxMKTsKKwkJCW5vZGUg PSBwc3RhdGUtPnBfcG9zdF9jb2x1bW5yZWZfaG9vayhwc3RhdGUsIGNyZWYs IE5VTEwpOwogCiAJCS8qCiAJCSAqIFhYWCBTaG91bGQgd2UgdGhyb3cgYW4g ZXJyb3IgaWYgd2UgZ2V0IGEgdHJhbnNsYXRpb24gdGhhdCBpc24ndCBhCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggMGE3 MDUzOWZiMS4uMjI4NmVlOGM4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYwpAQCAtMTEwNiw3ICsxMTA2LDcgQEAgRXhwYW5k Q29sdW1uUmVmU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZiwKIAkJewogCQkJTm9kZQkgICAqbm9kZTsKIAotCQkJbm9kZSA9ICgq cHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZfaG9vaykgKHBzdGF0ZSwgY3JlZik7 CisJCQlub2RlID0gcHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZfaG9vayhwc3Rh dGUsIGNyZWYpOwogCQkJaWYgKG5vZGUgIT0gTlVMTCkKIAkJCQlyZXR1cm4g RXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0ZSwgbm9kZSwgbWFrZV90YXJnZXRf ZW50cnkpOwogCQl9CkBAIC0xMTYxLDcgKzExNjEsNyBAQCBFeHBhbmRDb2x1 bW5SZWZTdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVm LAogCQl7CiAJCQlOb2RlCSAgICpub2RlOwogCi0JCQlub2RlID0gKCpwc3Rh dGUtPnBfcG9zdF9jb2x1bW5yZWZfaG9vaykgKHBzdGF0ZSwgY3JlZiwKKwkJ CW5vZGUgPSBwc3RhdGUtPnBfcG9zdF9jb2x1bW5yZWZfaG9vayhwc3RhdGUs IGNyZWYsCiAJCQkJCQkJCQkJCQkJIChOb2RlICopIHJ0ZSk7CiAJCQlpZiAo bm9kZSAhPSBOVUxMKQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlTWFuaXAuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZU1hbmlwLmMKaW5kZXggYmE3MDZiMjViNC4uNWMxNzIxMzcyMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlTWFuaXAu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5pcC5jCkBA IC0xMTQzLDcgKzExNDMsNyBAQCByZXBsYWNlX3J0ZV92YXJpYWJsZXNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJLyogRm91bmQgYSBtYXRjaGluZyB2YXJp YWJsZSwgbWFrZSB0aGUgc3Vic3RpdHV0aW9uICovCiAJCQlOb2RlCSAgICpu ZXdub2RlOwogCi0JCQluZXdub2RlID0gKCpjb250ZXh0LT5jYWxsYmFjaykg KHZhciwgY29udGV4dCk7CisJCQluZXdub2RlID0gY29udGV4dC0+Y2FsbGJh Y2sodmFyLCBjb250ZXh0KTsKIAkJCS8qIERldGVjdCBpZiB3ZSBhcmUgYWRk aW5nIGEgc3VibGluayB0byBxdWVyeSAqLwogCQkJaWYgKCFjb250ZXh0LT5p bnNlcnRlZF9zdWJsaW5rKQogCQkJCWNvbnRleHQtPmluc2VydGVkX3N1Ymxp bmsgPSBjaGVja0V4cHJIYXNTdWJMaW5rKG5ld25vZGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jIGIvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IDllN2U1NGRiNjcu LjUzY2IzNmMwNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUv cm93c2VjdXJpdHkuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3Nl Y3VyaXR5LmMKQEAgLTQ2Miw3ICs0NjIsNyBAQCBnZXRfcG9saWNpZXNfZm9y X3JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNtZCwgT2lk IHVzZXJfaWQsCiAJaWYgKHJvd19zZWN1cml0eV9wb2xpY3lfaG9va19yZXN0 cmljdGl2ZSkKIAl7CiAJCUxpc3QJICAgKmhvb2tfcG9saWNpZXMgPQotCQko KnJvd19zZWN1cml0eV9wb2xpY3lfaG9va19yZXN0cmljdGl2ZSkgKGNtZCwg cmVsYXRpb24pOworCQlyb3dfc2VjdXJpdHlfcG9saWN5X2hvb2tfcmVzdHJp Y3RpdmUoY21kLCByZWxhdGlvbik7CiAKIAkJLyoKIAkJICogQXMgd2l0aCBi dWlsdC1pbiByZXN0cmljdGl2ZSBwb2xpY2llcywgd2Ugc29ydCBhbnkgaG9v ay1wcm92aWRlZApAQCAtNDg0LDcgKzQ4NCw3IEBAIGdldF9wb2xpY2llc19m b3JfcmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIENtZFR5cGUgY21kLCBP aWQgdXNlcl9pZCwKIAlpZiAocm93X3NlY3VyaXR5X3BvbGljeV9ob29rX3Bl cm1pc3NpdmUpCiAJewogCQlMaXN0CSAgICpob29rX3BvbGljaWVzID0KLQkJ KCpyb3dfc2VjdXJpdHlfcG9saWN5X2hvb2tfcGVybWlzc2l2ZSkgKGNtZCwg cmVsYXRpb24pOworCQlyb3dfc2VjdXJpdHlfcG9saWN5X2hvb2tfcGVybWlz c2l2ZShjbWQsIHJlbGF0aW9uKTsKIAogCQlmb3JlYWNoKGl0ZW0sIGhvb2tf cG9saWNpZXMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvZmlsZS9mZC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMK aW5kZXggODNiMDYxYTAzNi4uYzJhOTJmNjlmMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMKQEAgLTMwNDgsNyArMzA0OCw3IEBAIHdhbGtk aXIoY29uc3QgY2hhciAqcGF0aCwKIAkJfQogCiAJCWlmIChTX0lTUkVHKGZz dC5zdF9tb2RlKSkKLQkJCSgqYWN0aW9uKSAoc3VicGF0aCwgZmFsc2UsIGVs ZXZlbCk7CisJCQlhY3Rpb24oc3VicGF0aCwgZmFsc2UsIGVsZXZlbCk7CiAJ CWVsc2UgaWYgKFNfSVNESVIoZnN0LnN0X21vZGUpKQogCQkJd2Fsa2Rpcihz dWJwYXRoLCBhY3Rpb24sIGZhbHNlLCBlbGV2ZWwpOwogCX0KQEAgLTMwNjAs NyArMzA2MCw3IEBAIHdhbGtkaXIoY29uc3QgY2hhciAqcGF0aCwKIAkgKiBm aWxlIGZzeW5jcyBkb24ndCBndWFyYW50ZWUgdGhhdCB0aGUgZGlyZWN0b3J5 IGVudHJ5IGZvciB0aGUgZmlsZSBpcwogCSAqIHN5bmNlZC4KIAkgKi8KLQko KmFjdGlvbikgKHBhdGgsIHRydWUsIGVsZXZlbCk7CisJYWN0aW9uKHBhdGgs IHRydWUsIGVsZXZlbCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGMuYwppbmRleCA5MGRlZTRmNTFhLi5kZmI0N2U3YzM5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYwpAQCAtMTk3LDggKzE5Nyw4IEBA IHByb2NfZXhpdF9wcmVwYXJlKGludCBjb2RlKQogCSAqIHBvc3NpYmxlLgog CSAqLwogCXdoaWxlICgtLW9uX3Byb2NfZXhpdF9pbmRleCA+PSAwKQotCQko Km9uX3Byb2NfZXhpdF9saXN0W29uX3Byb2NfZXhpdF9pbmRleF0uZnVuY3Rp b24pIChjb2RlLAotCQkJCQkJCQkJCQkJCQkgICBvbl9wcm9jX2V4aXRfbGlz dFtvbl9wcm9jX2V4aXRfaW5kZXhdLmFyZyk7CisJCW9uX3Byb2NfZXhpdF9s aXN0W29uX3Byb2NfZXhpdF9pbmRleF0uZnVuY3Rpb24oY29kZSwKKwkJCQkJ CQkJCQkJCQkgICBvbl9wcm9jX2V4aXRfbGlzdFtvbl9wcm9jX2V4aXRfaW5k ZXhdLmFyZyk7CiAKIAlvbl9wcm9jX2V4aXRfaW5kZXggPSAwOwogfQpAQCAt MjI1LDggKzIyNSw4IEBAIHNobWVtX2V4aXQoaW50IGNvZGUpCiAJZWxvZyhE RUJVRzMsICJzaG1lbV9leGl0KCVkKTogJWQgYmVmb3JlX3NobWVtX2V4aXQg Y2FsbGJhY2tzIHRvIG1ha2UiLAogCQkgY29kZSwgYmVmb3JlX3NobWVtX2V4 aXRfaW5kZXgpOwogCXdoaWxlICgtLWJlZm9yZV9zaG1lbV9leGl0X2luZGV4 ID49IDApCi0JCSgqYmVmb3JlX3NobWVtX2V4aXRfbGlzdFtiZWZvcmVfc2ht ZW1fZXhpdF9pbmRleF0uZnVuY3Rpb24pIChjb2RlLAotCQkJCQkJCQkJCQkJ CQkJCQkgYmVmb3JlX3NobWVtX2V4aXRfbGlzdFtiZWZvcmVfc2htZW1fZXhp dF9pbmRleF0uYXJnKTsKKwkJYmVmb3JlX3NobWVtX2V4aXRfbGlzdFtiZWZv cmVfc2htZW1fZXhpdF9pbmRleF0uZnVuY3Rpb24oY29kZSwKKwkJCQkJCQkJ CQkJCQkJCQkgYmVmb3JlX3NobWVtX2V4aXRfbGlzdFtiZWZvcmVfc2htZW1f ZXhpdF9pbmRleF0uYXJnKTsKIAliZWZvcmVfc2htZW1fZXhpdF9pbmRleCA9 IDA7CiAKIAkvKgpAQCAtMjU4LDggKzI1OCw4IEBAIHNobWVtX2V4aXQoaW50 IGNvZGUpCiAJZWxvZyhERUJVRzMsICJzaG1lbV9leGl0KCVkKTogJWQgb25f c2htZW1fZXhpdCBjYWxsYmFja3MgdG8gbWFrZSIsCiAJCSBjb2RlLCBvbl9z aG1lbV9leGl0X2luZGV4KTsKIAl3aGlsZSAoLS1vbl9zaG1lbV9leGl0X2lu ZGV4ID49IDApCi0JCSgqb25fc2htZW1fZXhpdF9saXN0W29uX3NobWVtX2V4 aXRfaW5kZXhdLmZ1bmN0aW9uKSAoY29kZSwKLQkJCQkJCQkJCQkJCQkJCSBv bl9zaG1lbV9leGl0X2xpc3Rbb25fc2htZW1fZXhpdF9pbmRleF0uYXJnKTsK KwkJb25fc2htZW1fZXhpdF9saXN0W29uX3NobWVtX2V4aXRfaW5kZXhdLmZ1 bmN0aW9uKGNvZGUsCisJCQkJCQkJCQkJCQkJCSBvbl9zaG1lbV9leGl0X2xp c3Rbb25fc2htZW1fZXhpdF9pbmRleF0uYXJnKTsKIAlvbl9zaG1lbV9leGl0 X2luZGV4ID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9z bWdyLmMKaW5kZXggMGNhMDk1YzRkNi4uNWQ1YjdkZDk1ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC0xMDYsNyArMTA2LDcg QEAgc21ncmluaXQodm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwgTlNtZ3I7IGkr KykKIAl7CiAJCWlmIChzbWdyc3dbaV0uc21ncl9pbml0KQotCQkJKCooc21n cnN3W2ldLnNtZ3JfaW5pdCkpICgpOworCQkJc21ncnN3W2ldLnNtZ3JfaW5p dCgpOwogCX0KIAogCS8qIHJlZ2lzdGVyIHRoZSBzaHV0ZG93biBwcm9jICov CkBAIC0xMjQsNyArMTI0LDcgQEAgc21ncnNodXRkb3duKGludCBjb2RlLCBE YXR1bSBhcmcpCiAJZm9yIChpID0gMDsgaSA8IE5TbWdyOyBpKyspCiAJewog CQlpZiAoc21ncnN3W2ldLnNtZ3Jfc2h1dGRvd24pCi0JCQkoKihzbWdyc3db aV0uc21ncl9zaHV0ZG93bikpICgpOworCQkJc21ncnN3W2ldLnNtZ3Jfc2h1 dGRvd24oKTsKIAl9CiB9CiAKQEAgLTI4Niw3ICsyODYsNyBAQCByZW1vdmVf ZnJvbV91bm93bmVkX2xpc3QoU01nclJlbGF0aW9uIHJlbG4pCiBib29sCiBz bWdyZXhpc3RzKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtu dW0pCiB7Ci0JcmV0dXJuICgqKHNtZ3Jzd1tyZWxuLT5zbWdyX3doaWNoXS5z bWdyX2V4aXN0cykpIChyZWxuLCBmb3JrbnVtKTsKKwlyZXR1cm4gc21ncnN3 W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3JfZXhpc3RzKHJlbG4sIGZvcmtudW0p OwogfQogCiAvKgpAQCAtMjk5LDcgKzI5OSw3IEBAIHNtZ3JjbG9zZShTTWdy UmVsYXRpb24gcmVsbikKIAlGb3JrTnVtYmVyCWZvcmtudW07CiAKIAlmb3Ig KGZvcmtudW0gPSAwOyBmb3JrbnVtIDw9IE1BWF9GT1JLTlVNOyBmb3JrbnVt KyspCi0JCSgqKHNtZ3Jzd1tyZWxuLT5zbWdyX3doaWNoXS5zbWdyX2Nsb3Nl KSkgKHJlbG4sIGZvcmtudW0pOworCQlzbWdyc3dbcmVsbi0+c21ncl93aGlj aF0uc21ncl9jbG9zZShyZWxuLCBmb3JrbnVtKTsKIAogCW93bmVyID0gcmVs bi0+c21ncl9vd25lcjsKIApAQCAtMzk1LDcgKzM5NSw3IEBAIHNtZ3JjcmVh dGUoU01nclJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgYm9v bCBpc1JlZG8pCiAJCQkJCQkJcmVsbi0+c21ncl9ybm9kZS5ub2RlLmRiTm9k ZSwKIAkJCQkJCQlpc1JlZG8pOwogCi0JKCooc21ncnN3W3JlbG4tPnNtZ3Jf d2hpY2hdLnNtZ3JfY3JlYXRlKSkgKHJlbG4sIGZvcmtudW0sIGlzUmVkbyk7 CisJc21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3JfY3JlYXRlKHJlbG4s IGZvcmtudW0sIGlzUmVkbyk7CiB9CiAKIC8qCkBAIC00MTksNyArNDE5LDcg QEAgc21ncmRvdW5saW5rKFNNZ3JSZWxhdGlvbiByZWxuLCBib29sIGlzUmVk bykKIAogCS8qIENsb3NlIHRoZSBmb3JrcyBhdCBzbWdyIGxldmVsICovCiAJ Zm9yIChmb3JrbnVtID0gMDsgZm9ya251bSA8PSBNQVhfRk9SS05VTTsgZm9y a251bSsrKQotCQkoKihzbWdyc3dbd2hpY2hdLnNtZ3JfY2xvc2UpKSAocmVs biwgZm9ya251bSk7CisJCXNtZ3Jzd1t3aGljaF0uc21ncl9jbG9zZShyZWxu LCBmb3JrbnVtKTsKIAogCS8qCiAJICogR2V0IHJpZCBvZiBhbnkgcmVtYWlu aW5nIGJ1ZmZlcnMgZm9yIHRoZSByZWxhdGlvbi4gIGJ1Zm1nciB3aWxsIGp1 c3QKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzbWdyZG91bmxpbmsoU01nclJlbGF0 aW9uIHJlbG4sIGJvb2wgaXNSZWRvKQogCSAqIEVSUk9SLCBiZWNhdXNlIHdl J3ZlIGFscmVhZHkgZGVjaWRlZCB0byBjb21taXQgb3IgYWJvcnQgdGhlIGN1 cnJlbnQKIAkgKiB4YWN0LgogCSAqLwotCSgqKHNtZ3Jzd1t3aGljaF0uc21n cl91bmxpbmspKSAocm5vZGUsIEludmFsaWRGb3JrTnVtYmVyLCBpc1JlZG8p OworCXNtZ3Jzd1t3aGljaF0uc21ncl91bmxpbmsocm5vZGUsIEludmFsaWRG b3JrTnVtYmVyLCBpc1JlZG8pOwogfQogCiAvKgpAQCAtNDkxLDcgKzQ5MSw3 IEBAIHNtZ3Jkb3VubGlua2FsbChTTWdyUmVsYXRpb24gKnJlbHMsIGludCBu cmVscywgYm9vbCBpc1JlZG8pCiAKIAkJLyogQ2xvc2UgdGhlIGZvcmtzIGF0 IHNtZ3IgbGV2ZWwgKi8KIAkJZm9yIChmb3JrbnVtID0gMDsgZm9ya251bSA8 PSBNQVhfRk9SS05VTTsgZm9ya251bSsrKQotCQkJKCooc21ncnN3W3doaWNo XS5zbWdyX2Nsb3NlKSkgKHJlbHNbaV0sIGZvcmtudW0pOworCQkJc21ncnN3 W3doaWNoXS5zbWdyX2Nsb3NlKHJlbHNbaV0sIGZvcmtudW0pOwogCX0KIAog CS8qCkBAIC01MjksNyArNTI5LDcgQEAgc21ncmRvdW5saW5rYWxsKFNNZ3JS ZWxhdGlvbiAqcmVscywgaW50IG5yZWxzLCBib29sIGlzUmVkbykKIAkJaW50 CQkJd2hpY2ggPSByZWxzW2ldLT5zbWdyX3doaWNoOwogCiAJCWZvciAoZm9y a251bSA9IDA7IGZvcmtudW0gPD0gTUFYX0ZPUktOVU07IGZvcmtudW0rKykK LQkJCSgqKHNtZ3Jzd1t3aGljaF0uc21ncl91bmxpbmspKSAocm5vZGVzW2ld LCBmb3JrbnVtLCBpc1JlZG8pOworCQkJc21ncnN3W3doaWNoXS5zbWdyX3Vu bGluayhybm9kZXNbaV0sIGZvcmtudW0sIGlzUmVkbyk7CiAJfQogCiAJcGZy ZWUocm5vZGVzKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBzbWdyZG91bmxpbmtm b3JrKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0sIGJv b2wgaXNSZWRvKQogCWludAkJCXdoaWNoID0gcmVsbi0+c21ncl93aGljaDsK IAogCS8qIENsb3NlIHRoZSBmb3JrIGF0IHNtZ3IgbGV2ZWwgKi8KLQkoKihz bWdyc3dbd2hpY2hdLnNtZ3JfY2xvc2UpKSAocmVsbiwgZm9ya251bSk7CisJ c21ncnN3W3doaWNoXS5zbWdyX2Nsb3NlKHJlbG4sIGZvcmtudW0pOwogCiAJ LyoKIAkgKiBHZXQgcmlkIG9mIGFueSByZW1haW5pbmcgYnVmZmVycyBmb3Ig dGhlIGZvcmsuICBidWZtZ3Igd2lsbCBqdXN0IGRyb3AKQEAgLTU4NCw3ICs1 ODQsNyBAQCBzbWdyZG91bmxpbmtmb3JrKFNNZ3JSZWxhdGlvbiByZWxuLCBG b3JrTnVtYmVyIGZvcmtudW0sIGJvb2wgaXNSZWRvKQogCSAqIEVSUk9SLCBi ZWNhdXNlIHdlJ3ZlIGFscmVhZHkgZGVjaWRlZCB0byBjb21taXQgb3IgYWJv cnQgdGhlIGN1cnJlbnQKIAkgKiB4YWN0LgogCSAqLwotCSgqKHNtZ3Jzd1t3 aGljaF0uc21ncl91bmxpbmspKSAocm5vZGUsIGZvcmtudW0sIGlzUmVkbyk7 CisJc21ncnN3W3doaWNoXS5zbWdyX3VubGluayhybm9kZSwgZm9ya251bSwg aXNSZWRvKTsKIH0KIAogLyoKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkCiBz bWdyZXh0ZW5kKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtu dW0sIEJsb2NrTnVtYmVyIGJsb2NrbnVtLAogCQkgICBjaGFyICpidWZmZXIs IGJvb2wgc2tpcEZzeW5jKQogewotCSgqKHNtZ3Jzd1tyZWxuLT5zbWdyX3do aWNoXS5zbWdyX2V4dGVuZCkpIChyZWxuLCBmb3JrbnVtLCBibG9ja251bSwK KwlzbWdyc3dbcmVsbi0+c21ncl93aGljaF0uc21ncl9leHRlbmQocmVsbiwg Zm9ya251bSwgYmxvY2tudW0sCiAJCQkJCQkJCQkJCSAgIGJ1ZmZlciwgc2tp cEZzeW5jKTsKIH0KIApAQCAtNjEwLDcgKzYxMCw3IEBAIHNtZ3JleHRlbmQo U01nclJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tO dW1iZXIgYmxvY2tudW0sCiB2b2lkCiBzbWdycHJlZmV0Y2goU01nclJlbGF0 aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgYmxv Y2tudW0pCiB7Ci0JKCooc21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3Jf cHJlZmV0Y2gpKSAocmVsbiwgZm9ya251bSwgYmxvY2tudW0pOworCXNtZ3Jz d1tyZWxuLT5zbWdyX3doaWNoXS5zbWdyX3ByZWZldGNoKHJlbG4sIGZvcmtu dW0sIGJsb2NrbnVtKTsKIH0KIAogLyoKQEAgLTYyNSw3ICs2MjUsNyBAQCB2 b2lkCiBzbWdycmVhZChTTWdyUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBm b3JrbnVtLCBCbG9ja051bWJlciBibG9ja251bSwKIAkJIGNoYXIgKmJ1ZmZl cikKIHsKLQkoKihzbWdyc3dbcmVsbi0+c21ncl93aGljaF0uc21ncl9yZWFk KSkgKHJlbG4sIGZvcmtudW0sIGJsb2NrbnVtLCBidWZmZXIpOworCXNtZ3Jz d1tyZWxuLT5zbWdyX3doaWNoXS5zbWdyX3JlYWQocmVsbiwgZm9ya251bSwg YmxvY2tudW0sIGJ1ZmZlcik7CiB9CiAKIC8qCkBAIC02NDcsNyArNjQ3LDcg QEAgdm9pZAogc21ncndyaXRlKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVt YmVyIGZvcmtudW0sIEJsb2NrTnVtYmVyIGJsb2NrbnVtLAogCQkgIGNoYXIg KmJ1ZmZlciwgYm9vbCBza2lwRnN5bmMpCiB7Ci0JKCooc21ncnN3W3JlbG4t PnNtZ3Jfd2hpY2hdLnNtZ3Jfd3JpdGUpKSAocmVsbiwgZm9ya251bSwgYmxv Y2tudW0sCisJc21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3Jfd3JpdGUo cmVsbiwgZm9ya251bSwgYmxvY2tudW0sCiAJCQkJCQkJCQkJCSAgYnVmZmVy LCBza2lwRnN5bmMpOwogfQogCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZAog c21ncndyaXRlYmFjayhTTWdyUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBm b3JrbnVtLCBCbG9ja051bWJlciBibG9ja251bSwKIAkJCSAgQmxvY2tOdW1i ZXIgbmJsb2NrcykKIHsKLQkoKihzbWdyc3dbcmVsbi0+c21ncl93aGljaF0u c21ncl93cml0ZWJhY2spKSAocmVsbiwgZm9ya251bSwgYmxvY2tudW0sCisJ c21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3Jfd3JpdGViYWNrKHJlbG4s IGZvcmtudW0sIGJsb2NrbnVtLAogCQkJCQkJCQkJCQkJICBuYmxvY2tzKTsK IH0KIApAQCAtNjcxLDcgKzY3MSw3IEBAIHNtZ3J3cml0ZWJhY2soU01nclJl bGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIg YmxvY2tudW0sCiBCbG9ja051bWJlcgogc21ncm5ibG9ja3MoU01nclJlbGF0 aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSkKIHsKLQlyZXR1cm4gKCoo c21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hdLnNtZ3JfbmJsb2NrcykpIChyZWxu LCBmb3JrbnVtKTsKKwlyZXR1cm4gc21ncnN3W3JlbG4tPnNtZ3Jfd2hpY2hd LnNtZ3JfbmJsb2NrcyhyZWxuLCBmb3JrbnVtKTsKIH0KIAogLyoKQEAgLTcw NCw3ICs3MDQsNyBAQCBzbWdydHJ1bmNhdGUoU01nclJlbGF0aW9uIHJlbG4s IEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgbmJsb2NrcykKIAkv KgogCSAqIERvIHRoZSB0cnVuY2F0aW9uLgogCSAqLwotCSgqKHNtZ3Jzd1ty ZWxuLT5zbWdyX3doaWNoXS5zbWdyX3RydW5jYXRlKSkgKHJlbG4sIGZvcmtu dW0sIG5ibG9ja3MpOworCXNtZ3Jzd1tyZWxuLT5zbWdyX3doaWNoXS5zbWdy X3RydW5jYXRlKHJlbG4sIGZvcmtudW0sIG5ibG9ja3MpOwogfQogCiAvKgpA QCAtNzMzLDcgKzczMyw3IEBAIHNtZ3J0cnVuY2F0ZShTTWdyUmVsYXRpb24g cmVsbiwgRm9ya051bWJlciBmb3JrbnVtLCBCbG9ja051bWJlciBuYmxvY2tz KQogdm9pZAogc21ncmltbWVkc3luYyhTTWdyUmVsYXRpb24gcmVsbiwgRm9y a051bWJlciBmb3JrbnVtKQogewotCSgqKHNtZ3Jzd1tyZWxuLT5zbWdyX3do aWNoXS5zbWdyX2ltbWVkc3luYykpIChyZWxuLCBmb3JrbnVtKTsKKwlzbWdy c3dbcmVsbi0+c21ncl93aGljaF0uc21ncl9pbW1lZHN5bmMocmVsbiwgZm9y a251bSk7CiB9CiAKIApAQCAtNzQ4LDcgKzc0OCw3IEBAIHNtZ3JwcmVja3B0 KHZvaWQpCiAJZm9yIChpID0gMDsgaSA8IE5TbWdyOyBpKyspCiAJewogCQlp ZiAoc21ncnN3W2ldLnNtZ3JfcHJlX2NrcHQpCi0JCQkoKihzbWdyc3dbaV0u c21ncl9wcmVfY2twdCkpICgpOworCQkJc21ncnN3W2ldLnNtZ3JfcHJlX2Nr cHQoKTsKIAl9CiB9CiAKQEAgLTc2Myw3ICs3NjMsNyBAQCBzbWdyc3luYyh2 b2lkKQogCWZvciAoaSA9IDA7IGkgPCBOU21ncjsgaSsrKQogCXsKIAkJaWYg KHNtZ3Jzd1tpXS5zbWdyX3N5bmMpCi0JCQkoKihzbWdyc3dbaV0uc21ncl9z eW5jKSkgKCk7CisJCQlzbWdyc3dbaV0uc21ncl9zeW5jKCk7CiAJfQogfQog CkBAIC03NzgsNyArNzc4LDcgQEAgc21ncnBvc3Rja3B0KHZvaWQpCiAJZm9y IChpID0gMDsgaSA8IE5TbWdyOyBpKyspCiAJewogCQlpZiAoc21ncnN3W2ld LnNtZ3JfcG9zdF9ja3B0KQotCQkJKCooc21ncnN3W2ldLnNtZ3JfcG9zdF9j a3B0KSkgKCk7CisJCQlzbWdyc3dbaV0uc21ncl9wb3N0X2NrcHQoKTsKIAl9 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBiOGQ4NjBl YmRiLi4yYmY4NWE4ZTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC02OTUsMTIgKzY5NSwxMiBAQCBwZ19hbmFseXplX2FuZF9yZXdyaXRl X3BhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsCiAJcHN0YXRlID0gbWFrZV9w YXJzZXN0YXRlKE5VTEwpOwogCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0gcXVl cnlfc3RyaW5nOwogCXBzdGF0ZS0+cF9xdWVyeUVudiA9IHF1ZXJ5RW52Owot CSgqcGFyc2VyU2V0dXApIChwc3RhdGUsIHBhcnNlclNldHVwQXJnKTsKKwlw YXJzZXJTZXR1cChwc3RhdGUsIHBhcnNlclNldHVwQXJnKTsKIAogCXF1ZXJ5 ID0gdHJhbnNmb3JtVG9wTGV2ZWxTdG10KHBzdGF0ZSwgcGFyc2V0cmVlKTsK IAogCWlmIChwb3N0X3BhcnNlX2FuYWx5emVfaG9vaykKLQkJKCpwb3N0X3Bh cnNlX2FuYWx5emVfaG9vaykgKHBzdGF0ZSwgcXVlcnkpOworCQlwb3N0X3Bh cnNlX2FuYWx5emVfaG9vayhwc3RhdGUsIHF1ZXJ5KTsKIAogCWZyZWVfcGFy c2VzdGF0ZShwc3RhdGUpOwogCkBAIC0xMTA0LDcgKzExMDQsNyBAQCBleGVj X3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCQkJ CQkgcmVjZWl2ZXIsCiAJCQkJCQkgY29tcGxldGlvblRhZyk7CiAKLQkJKCpy ZWNlaXZlci0+ckRlc3Ryb3kpIChyZWNlaXZlcik7CisJCXJlY2VpdmVyLT5y RGVzdHJveShyZWNlaXZlcik7CiAKIAkJUG9ydGFsRHJvcChwb3J0YWwsIGZh bHNlKTsKIApAQCAtMTk4OSw3ICsxOTg5LDcgQEAgZXhlY19leGVjdXRlX21l c3NhZ2UoY29uc3QgY2hhciAqcG9ydGFsX25hbWUsIGxvbmcgbWF4X3Jvd3Mp CiAJCQkJCQkgIHJlY2VpdmVyLAogCQkJCQkJICBjb21wbGV0aW9uVGFnKTsK IAotCSgqcmVjZWl2ZXItPnJEZXN0cm95KSAocmVjZWl2ZXIpOworCXJlY2Vp dmVyLT5yRGVzdHJveShyZWNlaXZlcik7CiAKIAlpZiAoY29tcGxldGVkKQog CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDdlODIwZDA1ZGQuLmNj NDYyZWZjMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTA0OSw3 ICsxMDQ5LDcgQEAgRmlsbFBvcnRhbFN0b3JlKFBvcnRhbCBwb3J0YWwsIGJv b2wgaXNUb3BMZXZlbCkKIAlpZiAoY29tcGxldGlvblRhZ1swXSAhPSAnXDAn KQogCQlwb3J0YWwtPmNvbW1hbmRUYWcgPSBwc3RyZHVwKGNvbXBsZXRpb25U YWcpOwogCi0JKCp0cmVjZWl2ZXItPnJEZXN0cm95KSAodHJlY2VpdmVyKTsK Kwl0cmVjZWl2ZXItPnJEZXN0cm95KHRyZWNlaXZlcik7CiB9CiAKIC8qCkBA IC0xMDczLDcgKzEwNzMsNyBAQCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRh bCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwKIAog CXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocG9ydGFsLT50dXBE ZXNjKTsKIAotCSgqZGVzdC0+clN0YXJ0dXApIChkZXN0LCBDTURfU0VMRUNU LCBwb3J0YWwtPnR1cERlc2MpOworCWRlc3QtPnJTdGFydHVwKGRlc3QsIENN RF9TRUxFQ1QsIHBvcnRhbC0+dHVwRGVzYyk7CiAKIAlpZiAoU2NhbkRpcmVj dGlvbklzTm9Nb3ZlbWVudChkaXJlY3Rpb24pKQogCXsKQEAgLTExMDMsNyAr MTEwMyw3IEBAIFJ1bkZyb21TdG9yZShQb3J0YWwgcG9ydGFsLCBTY2FuRGly ZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LAogCQkJICogaGFzIGNs b3NlZCBhbmQgbm8gbW9yZSB0dXBsZXMgY2FuIGJlIHNlbnQuIElmIHRoYXQn cyB0aGUgY2FzZSwKIAkJCSAqIGVuZCB0aGUgbG9vcC4KIAkJCSAqLwotCQkJ aWYgKCEoKCpkZXN0LT5yZWNlaXZlU2xvdCkgKHNsb3QsIGRlc3QpKSkKKwkJ CWlmICghZGVzdC0+cmVjZWl2ZVNsb3Qoc2xvdCwgZGVzdCkpCiAJCQkJYnJl YWs7CiAKIAkJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOwpAQCAtMTExOSw3ICsx MTE5LDcgQEAgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJl Y3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsCiAJCX0KIAl9CiAKLQko KmRlc3QtPnJTaHV0ZG93bikgKGRlc3QpOworCWRlc3QtPnJTaHV0ZG93bihk ZXN0KTsKIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggNzc1NDc3YzZjZi4u MmMwMGNjNzRlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTM1 MCw3ICszNTAsNyBAQCBQcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0 bXQsCiAJICogY2FsbCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eSgpLgogCSAq LwogCWlmIChQcm9jZXNzVXRpbGl0eV9ob29rKQotCQkoKlByb2Nlc3NVdGls aXR5X2hvb2spIChwc3RtdCwgcXVlcnlTdHJpbmcsCisJCVByb2Nlc3NVdGls aXR5X2hvb2socHN0bXQsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQljb250ZXh0 LCBwYXJhbXMsIHF1ZXJ5RW52LAogCQkJCQkJCQlkZXN0LCBjb21wbGV0aW9u VGFnKTsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvYXJyYXlfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCA3ODE1M2QyMzJmLi40NzBlZjBj NGIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlf dHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eV90eXBhbmFseXplLmMKQEAgLTI0Nyw3ICsyNDcsNyBAQCBjb21wdXRlX2Fy cmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0 Y2hGdW5jIGZldGNoZnVuYywKIAkgKiB0ZW1wb3JhcmlseSBpbnN0YWxsIHRo YXQuCiAJICovCiAJc3RhdHMtPmV4dHJhX2RhdGEgPSBleHRyYV9kYXRhLT5z dGRfZXh0cmFfZGF0YTsKLQkoKmV4dHJhX2RhdGEtPnN0ZF9jb21wdXRlX3N0 YXRzKSAoc3RhdHMsIGZldGNoZnVuYywgc2FtcGxlcm93cywgdG90YWxyb3dz KTsKKwlleHRyYV9kYXRhLT5zdGRfY29tcHV0ZV9zdGF0cyhzdGF0cywgZmV0 Y2hmdW5jLCBzYW1wbGVyb3dzLCB0b3RhbHJvd3MpOwogCXN0YXRzLT5leHRy YV9kYXRhID0gZXh0cmFfZGF0YTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZXhwYW5kZWRkYXR1bS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2V4cGFuZGVkZGF0dW0uYwppbmRleCAzZDc3Njg2YWY3 Li40OTg1NGIzOWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZXhwYW5kZWRkYXR1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9leHBhbmRlZGRhdHVtLmMKQEAgLTc0LDE0ICs3NCwxNCBAQCBFT0hfaW5p dF9oZWFkZXIoRXhwYW5kZWRPYmplY3RIZWFkZXIgKmVvaHB0ciwKIFNpemUK IEVPSF9nZXRfZmxhdF9zaXplKEV4cGFuZGVkT2JqZWN0SGVhZGVyICplb2hw dHIpCiB7Ci0JcmV0dXJuICgqZW9ocHRyLT5lb2hfbWV0aG9kcy0+Z2V0X2Zs YXRfc2l6ZSkgKGVvaHB0cik7CisJcmV0dXJuIGVvaHB0ci0+ZW9oX21ldGhv ZHMtPmdldF9mbGF0X3NpemUoZW9ocHRyKTsKIH0KIAogdm9pZAogRU9IX2Zs YXR0ZW5faW50byhFeHBhbmRlZE9iamVjdEhlYWRlciAqZW9ocHRyLAogCQkJ CSB2b2lkICpyZXN1bHQsIFNpemUgYWxsb2NhdGVkX3NpemUpCiB7Ci0JKCpl b2hwdHItPmVvaF9tZXRob2RzLT5mbGF0dGVuX2ludG8pIChlb2hwdHIsIHJl c3VsdCwgYWxsb2NhdGVkX3NpemUpOworCWVvaHB0ci0+ZW9oX21ldGhvZHMt PmZsYXR0ZW5faW50byhlb2hwdHIsIHJlc3VsdCwgYWxsb2NhdGVkX3NpemUp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXgg NGRkN2Q5NzdlOC4uYzkwZjM3MTcxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbi5jCkBAIC00MzQsOCArNDM0LDggQEAgcGFyc2Vfc2NhbGFyKEpz b25MZXhDb250ZXh0ICpsZXgsIEpzb25TZW1BY3Rpb24gKnNlbSkKIAkJCXJl cG9ydF9wYXJzZV9lcnJvcihKU09OX1BBUlNFX1ZBTFVFLCBsZXgpOwogCX0K IAotCWlmIChzZnVuYyAhPSBOVUxMKQotCQkoKnNmdW5jKSAoc2VtLT5zZW1z dGF0ZSwgdmFsLCB0b2spOworCWlmIChzZnVuYykKKwkJc2Z1bmMoc2VtLT5z ZW1zdGF0ZSwgdmFsLCB0b2spOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDY1 LDggKzQ2NSw4IEBAIHBhcnNlX29iamVjdF9maWVsZChKc29uTGV4Q29udGV4 dCAqbGV4LCBKc29uU2VtQWN0aW9uICpzZW0pCiAJdG9rID0gbGV4X3BlZWso bGV4KTsKIAlpc251bGwgPSB0b2sgPT0gSlNPTl9UT0tFTl9OVUxMOwogCi0J aWYgKG9zdGFydCAhPSBOVUxMKQotCQkoKm9zdGFydCkgKHNlbS0+c2Vtc3Rh dGUsIGZuYW1lLCBpc251bGwpOworCWlmIChvc3RhcnQpCisJCW9zdGFydChz ZW0tPnNlbXN0YXRlLCBmbmFtZSwgaXNudWxsKTsKIAogCXN3aXRjaCAodG9r KQogCXsKQEAgLTQ4MCw4ICs0ODAsOCBAQCBwYXJzZV9vYmplY3RfZmllbGQo SnNvbkxleENvbnRleHQgKmxleCwgSnNvblNlbUFjdGlvbiAqc2VtKQogCQkJ cGFyc2Vfc2NhbGFyKGxleCwgc2VtKTsKIAl9CiAKLQlpZiAob2VuZCAhPSBO VUxMKQotCQkoKm9lbmQpIChzZW0tPnNlbXN0YXRlLCBmbmFtZSwgaXNudWxs KTsKKwlpZiAob2VuZCkKKwkJb2VuZChzZW0tPnNlbXN0YXRlLCBmbmFtZSwg aXNudWxsKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ5Nyw4ICs0OTcsOCBA QCBwYXJzZV9vYmplY3QoSnNvbkxleENvbnRleHQgKmxleCwgSnNvblNlbUFj dGlvbiAqc2VtKQogCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKIAotCWlmIChv c3RhcnQgIT0gTlVMTCkKLQkJKCpvc3RhcnQpIChzZW0tPnNlbXN0YXRlKTsK KwlpZiAob3N0YXJ0KQorCQlvc3RhcnQoc2VtLT5zZW1zdGF0ZSk7CiAKIAkv KgogCSAqIERhdGEgaW5zaWRlIGFuIG9iamVjdCBpcyBhdCBhIGhpZ2hlciBu ZXN0aW5nIGxldmVsIHRoYW4gdGhlIG9iamVjdApAQCAtNTMwLDggKzUzMCw4 IEBAIHBhcnNlX29iamVjdChKc29uTGV4Q29udGV4dCAqbGV4LCBKc29uU2Vt QWN0aW9uICpzZW0pCiAKIAlsZXgtPmxleF9sZXZlbC0tOwogCi0JaWYgKG9l bmQgIT0gTlVMTCkKLQkJKCpvZW5kKSAoc2VtLT5zZW1zdGF0ZSk7CisJaWYg KG9lbmQpCisJCW9lbmQoc2VtLT5zZW1zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2 b2lkCkBAIC01NDUsOCArNTQ1LDggQEAgcGFyc2VfYXJyYXlfZWxlbWVudChK c29uTGV4Q29udGV4dCAqbGV4LCBKc29uU2VtQWN0aW9uICpzZW0pCiAKIAlp c251bGwgPSB0b2sgPT0gSlNPTl9UT0tFTl9OVUxMOwogCi0JaWYgKGFzdGFy dCAhPSBOVUxMKQotCQkoKmFzdGFydCkgKHNlbS0+c2Vtc3RhdGUsIGlzbnVs bCk7CisJaWYgKGFzdGFydCkKKwkJYXN0YXJ0KHNlbS0+c2Vtc3RhdGUsIGlz bnVsbCk7CiAKIAkvKiBhbiBhcnJheSBlbGVtZW50IGlzIGFueSBvYmplY3Qs IGFycmF5IG9yIHNjYWxhciAqLwogCXN3aXRjaCAodG9rKQpAQCAtNTYxLDgg KzU2MSw4IEBAIHBhcnNlX2FycmF5X2VsZW1lbnQoSnNvbkxleENvbnRleHQg KmxleCwgSnNvblNlbUFjdGlvbiAqc2VtKQogCQkJcGFyc2Vfc2NhbGFyKGxl eCwgc2VtKTsKIAl9CiAKLQlpZiAoYWVuZCAhPSBOVUxMKQotCQkoKmFlbmQp IChzZW0tPnNlbXN0YXRlLCBpc251bGwpOworCWlmIChhZW5kKQorCQlhZW5k KHNlbS0+c2Vtc3RhdGUsIGlzbnVsbCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBA IC01NzcsOCArNTc3LDggQEAgcGFyc2VfYXJyYXkoSnNvbkxleENvbnRleHQg KmxleCwgSnNvblNlbUFjdGlvbiAqc2VtKQogCiAJY2hlY2tfc3RhY2tfZGVw dGgoKTsKIAotCWlmIChhc3RhcnQgIT0gTlVMTCkKLQkJKCphc3RhcnQpIChz ZW0tPnNlbXN0YXRlKTsKKwlpZiAoYXN0YXJ0KQorCQlhc3RhcnQoc2VtLT5z ZW1zdGF0ZSk7CiAKIAkvKgogCSAqIERhdGEgaW5zaWRlIGFuIGFycmF5IGlz IGF0IGEgaGlnaGVyIG5lc3RpbmcgbGV2ZWwgdGhhbiB0aGUgYXJyYXkKQEAg LTYwMiw4ICs2MDIsOCBAQCBwYXJzZV9hcnJheShKc29uTGV4Q29udGV4dCAq bGV4LCBKc29uU2VtQWN0aW9uICpzZW0pCiAKIAlsZXgtPmxleF9sZXZlbC0t OwogCi0JaWYgKGFlbmQgIT0gTlVMTCkKLQkJKCphZW5kKSAoc2VtLT5zZW1z dGF0ZSk7CisJaWYgKGFlbmQpCisJCWFlbmQoc2VtLT5zZW1zdGF0ZSk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK aW5kZXggNDc3OWU3NDg5NS4uYmMyZTU1YzAxYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAtNDg2MCw3ICs0ODYwLDcg QEAgaXRlcmF0ZV9zdHJpbmdfdmFsdWVzX3NjYWxhcih2b2lkICpzdGF0ZSwg Y2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKQogCUl0ZXJh dGVKc29uU3RyaW5nVmFsdWVzU3RhdGUgKl9zdGF0ZSA9IChJdGVyYXRlSnNv blN0cmluZ1ZhbHVlc1N0YXRlICopIHN0YXRlOwogCiAJaWYgKHRva2VudHlw ZSA9PSBKU09OX1RPS0VOX1NUUklORykKLQkJKCpfc3RhdGUtPmFjdGlvbikg KF9zdGF0ZS0+YWN0aW9uX3N0YXRlLCB0b2tlbiwgc3RybGVuKHRva2VuKSk7 CisJCV9zdGF0ZS0+YWN0aW9uKF9zdGF0ZS0+YWN0aW9uX3N0YXRlLCB0b2tl biwgc3RybGVuKHRva2VuKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDIzZTU1MjZhOGUuLmU4ZjQ2NTZj MjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBA IC00NzEzLDcgKzQ3MTMsNyBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJ bmZvICpyb290LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJCQkJCQkg KiBkZWNpc2lvbnMgYWJvdXQgd2hhdCB0byBkbyB3aXRoIHBhcnRpYWwgaW5k ZXhlcy4KIAkJCQkJCSAqLwogCQkJCQkJaWYgKGdldF9pbmRleF9zdGF0c19o b29rICYmCi0JCQkJCQkJKCpnZXRfaW5kZXhfc3RhdHNfaG9vaykgKHJvb3Qs IGluZGV4LT5pbmRleG9pZCwKKwkJCQkJCQlnZXRfaW5kZXhfc3RhdHNfaG9v ayhyb290LCBpbmRleC0+aW5kZXhvaWQsCiAJCQkJCQkJCQkJCQkJIHBvcyAr IDEsIHZhcmRhdGEpKQogCQkJCQkJewogCQkJCQkJCS8qCkBAIC00Nzg4LDcg KzQ3ODgsNyBAQCBleGFtaW5lX3NpbXBsZV92YXJpYWJsZShQbGFubmVySW5m byAqcm9vdCwgVmFyICp2YXIsCiAJQXNzZXJ0KElzQShydGUsIFJhbmdlVGJs RW50cnkpKTsKIAogCWlmIChnZXRfcmVsYXRpb25fc3RhdHNfaG9vayAmJgot CQkoKmdldF9yZWxhdGlvbl9zdGF0c19ob29rKSAocm9vdCwgcnRlLCB2YXIt PnZhcmF0dG5vLCB2YXJkYXRhKSkKKwkJZ2V0X3JlbGF0aW9uX3N0YXRzX2hv b2socm9vdCwgcnRlLCB2YXItPnZhcmF0dG5vLCB2YXJkYXRhKSkKIAl7CiAJ CS8qCiAJCSAqIFRoZSBob29rIHRvb2sgY29udHJvbCBvZiBhY3F1aXJpbmcg YSBzdGF0cyB0dXBsZS4gIElmIGl0IGRpZCBzdXBwbHkKQEAgLTY5MTIsNyAr NjkxMiw3IEBAIGJ0Y29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJ bmRleFBhdGggKnBhdGgsIGRvdWJsZSBsb29wX2NvdW50LAogCQljb2xudW0g PSBpbmRleC0+aW5kZXhrZXlzWzBdOwogCiAJCWlmIChnZXRfcmVsYXRpb25f c3RhdHNfaG9vayAmJgotCQkJKCpnZXRfcmVsYXRpb25fc3RhdHNfaG9vaykg KHJvb3QsIHJ0ZSwgY29sbnVtLCAmdmFyZGF0YSkpCisJCQlnZXRfcmVsYXRp b25fc3RhdHNfaG9vayhyb290LCBydGUsIGNvbG51bSwgJnZhcmRhdGEpKQog CQl7CiAJCQkvKgogCQkJICogVGhlIGhvb2sgdG9vayBjb250cm9sIG9mIGFj cXVpcmluZyBhIHN0YXRzIHR1cGxlLiAgSWYgaXQgZGlkCkBAIC02OTM4LDcg KzY5MzgsNyBAQCBidGNvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9vdCwg SW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkJY29sbnVt ID0gMTsKIAogCQlpZiAoZ2V0X2luZGV4X3N0YXRzX2hvb2sgJiYKLQkJCSgq Z2V0X2luZGV4X3N0YXRzX2hvb2spIChyb290LCByZWxpZCwgY29sbnVtLCAm dmFyZGF0YSkpCisJCQlnZXRfaW5kZXhfc3RhdHNfaG9vayhyb290LCByZWxp ZCwgY29sbnVtLCAmdmFyZGF0YSkpCiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUg aG9vayB0b29rIGNvbnRyb2wgb2YgYWNxdWlyaW5nIGEgc3RhdHMgdHVwbGUu ICBJZiBpdCBkaWQKQEAgLTc4NDUsNyArNzg0NSw3IEBAIGJyaW5jb3N0ZXN0 aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwgZG91 YmxlIGxvb3BfY291bnQsCiAJCXsKIAkJCS8qIFNpbXBsZSB2YXJpYWJsZSAt LSBsb29rIHRvIHN0YXRzIGZvciB0aGUgdW5kZXJseWluZyB0YWJsZSAqLwog CQkJaWYgKGdldF9yZWxhdGlvbl9zdGF0c19ob29rICYmCi0JCQkJKCpnZXRf cmVsYXRpb25fc3RhdHNfaG9vaykgKHJvb3QsIHJ0ZSwgYXR0bnVtLCAmdmFy ZGF0YSkpCisJCQkJZ2V0X3JlbGF0aW9uX3N0YXRzX2hvb2socm9vdCwgcnRl LCBhdHRudW0sICZ2YXJkYXRhKSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFRo ZSBob29rIHRvb2sgY29udHJvbCBvZiBhY3F1aXJpbmcgYSBzdGF0cyB0dXBs ZS4gIElmIGl0CkBAIC03ODc2LDcgKzc4NzYsNyBAQCBicmluY29zdGVzdGlt YXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsIGRvdWJs ZSBsb29wX2NvdW50LAogCQkJYXR0bnVtID0gcWluZm8tPmluZGV4Y29sICsg MTsKIAogCQkJaWYgKGdldF9pbmRleF9zdGF0c19ob29rICYmCi0JCQkJKCpn ZXRfaW5kZXhfc3RhdHNfaG9vaykgKHJvb3QsIGluZGV4LT5pbmRleG9pZCwg YXR0bnVtLCAmdmFyZGF0YSkpCisJCQkJZ2V0X2luZGV4X3N0YXRzX2hvb2so cm9vdCwgaW5kZXgtPmluZGV4b2lkLCBhdHRudW0sICZ2YXJkYXRhKSkKIAkJ CXsKIAkJCQkvKgogCQkJCSAqIFRoZSBob29rIHRvb2sgY29udHJvbCBvZiBh Y3F1aXJpbmcgYSBzdGF0cyB0dXBsZS4gIElmIGl0CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvY2F0Y2FjaGUuYwppbmRleCBmODk0MDUzZDgwLi45 NTIxNTA5YmQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9jYXRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Nh dGNhY2hlLmMKQEAgLTE4MjIsNyArMTgyMiw3IEBAIFByZXBhcmVUb0ludmFs aWRhdGVDYWNoZVR1cGxlKFJlbGF0aW9uIHJlbGF0aW9uLAogCQloYXNodmFs dWUgPSBDYXRhbG9nQ2FjaGVDb21wdXRlVHVwbGVIYXNoVmFsdWUoY2NwLCB0 dXBsZSk7CiAJCWRiaWQgPSBjY3AtPmNjX3JlbGlzc2hhcmVkID8gKE9pZCkg MCA6IE15RGF0YWJhc2VJZDsKIAotCQkoKmZ1bmN0aW9uKSAoY2NwLT5pZCwg aGFzaHZhbHVlLCBkYmlkKTsKKwkJZnVuY3Rpb24oY2NwLT5pZCwgaGFzaHZh bHVlLCBkYmlkKTsKIAogCQlpZiAobmV3dHVwbGUpCiAJCXsKQEAgLTE4MzEs NyArMTgzMSw3IEBAIFByZXBhcmVUb0ludmFsaWRhdGVDYWNoZVR1cGxlKFJl bGF0aW9uIHJlbGF0aW9uLAogCQkJbmV3aGFzaHZhbHVlID0gQ2F0YWxvZ0Nh Y2hlQ29tcHV0ZVR1cGxlSGFzaFZhbHVlKGNjcCwgbmV3dHVwbGUpOwogCiAJ CQlpZiAobmV3aGFzaHZhbHVlICE9IGhhc2h2YWx1ZSkKLQkJCQkoKmZ1bmN0 aW9uKSAoY2NwLT5pZCwgbmV3aGFzaHZhbHVlLCBkYmlkKTsKKwkJCQlmdW5j dGlvbihjY3AtPmlkLCBuZXdoYXNodmFsdWUsIGRiaWQpOwogCQl9CiAJfQog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKaW5kZXggZDBl NTRiODUzNS4uMGU2MWI0Yjc5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvaW52YWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9pbnZhbC5jCkBAIC01OTAsNyArNTkwLDcgQEAgTG9jYWxFeGVjdXRl SW52YWxpZGF0aW9uTWVzc2FnZShTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdl ICptc2cpCiAJCQl7CiAJCQkJc3RydWN0IFJFTENBQ0hFQ0FMTEJBQ0sgKmNj aXRlbSA9IHJlbGNhY2hlX2NhbGxiYWNrX2xpc3QgKyBpOwogCi0JCQkJKCpj Y2l0ZW0tPmZ1bmN0aW9uKSAoY2NpdGVtLT5hcmcsIG1zZy0+cmMucmVsSWQp OworCQkJCWNjaXRlbS0+ZnVuY3Rpb24oY2NpdGVtLT5hcmcsIG1zZy0+cmMu cmVsSWQpOwogCQkJfQogCQl9CiAJfQpAQCAtNjUwLDE0ICs2NTAsMTQgQEAg SW52YWxpZGF0ZVN5c3RlbUNhY2hlcyh2b2lkKQogCXsKIAkJc3RydWN0IFNZ U0NBQ0hFQ0FMTEJBQ0sgKmNjaXRlbSA9IHN5c2NhY2hlX2NhbGxiYWNrX2xp c3QgKyBpOwogCi0JCSgqY2NpdGVtLT5mdW5jdGlvbikgKGNjaXRlbS0+YXJn LCBjY2l0ZW0tPmlkLCAwKTsKKwkJY2NpdGVtLT5mdW5jdGlvbihjY2l0ZW0t PmFyZywgY2NpdGVtLT5pZCwgMCk7CiAJfQogCiAJZm9yIChpID0gMDsgaSA8 IHJlbGNhY2hlX2NhbGxiYWNrX2NvdW50OyBpKyspCiAJewogCQlzdHJ1Y3Qg UkVMQ0FDSEVDQUxMQkFDSyAqY2NpdGVtID0gcmVsY2FjaGVfY2FsbGJhY2tf bGlzdCArIGk7CiAKLQkJKCpjY2l0ZW0tPmZ1bmN0aW9uKSAoY2NpdGVtLT5h cmcsIEludmFsaWRPaWQpOworCQljY2l0ZW0tPmZ1bmN0aW9uKGNjaXRlbS0+ YXJnLCBJbnZhbGlkT2lkKTsKIAl9CiB9CiAKQEAgLTE0NjAsNyArMTQ2MCw3 IEBAIENhbGxTeXNjYWNoZUNhbGxiYWNrcyhpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSkKIAkJc3RydWN0IFNZU0NBQ0hFQ0FMTEJBQ0sgKmNjaXRl bSA9IHN5c2NhY2hlX2NhbGxiYWNrX2xpc3QgKyBpOwogCiAJCUFzc2VydChj Y2l0ZW0tPmlkID09IGNhY2hlaWQpOwotCQkoKmNjaXRlbS0+ZnVuY3Rpb24p IChjY2l0ZW0tPmFyZywgY2FjaGVpZCwgaGFzaHZhbHVlKTsKKwkJY2NpdGVt LT5mdW5jdGlvbihjY2l0ZW0tPmFyZywgY2FjaGVpZCwgaGFzaHZhbHVlKTsK IAkJaSA9IGNjaXRlbS0+bGluayAtIDE7CiAJfQogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvZWxvZy5jCmluZGV4IDkxOGRiMGE4ZjIuLmY2MzU0YTVl NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTQz NSw3ICs0MzUsNyBAQCBlcnJmaW5pc2goaW50IGR1bW15LC4uLikKIAlmb3Ig KGVjb250ZXh0ID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAkJIGVjb250ZXh0 ICE9IE5VTEw7CiAJCSBlY29udGV4dCA9IGVjb250ZXh0LT5wcmV2aW91cykK LQkJKCplY29udGV4dC0+Y2FsbGJhY2spIChlY29udGV4dC0+YXJnKTsKKwkJ ZWNvbnRleHQtPmNhbGxiYWNrKGVjb250ZXh0LT5hcmcpOwogCiAJLyoKIAkg KiBJZiBFUlJPUiAobm90IG1vcmUgbm9yIGxlc3MpIHdlIHBhc3MgaXQgb2Zm IHRvIHRoZSBjdXJyZW50IGhhbmRsZXIuCkBAIC0xNDcyLDcgKzE0NzIsNyBA QCBFbWl0RXJyb3JSZXBvcnQodm9pZCkKIAkgKiBkZXRhaWwsIGRldGFpbF9s b2csIGhpbnQgYW5kIGNvbnRleHQgdGV4dCBlbGVtZW50cy4KIAkgKi8KIAlp ZiAoZWRhdGEtPm91dHB1dF90b19zZXJ2ZXIgJiYgZW1pdF9sb2dfaG9vaykK LQkJKCplbWl0X2xvZ19ob29rKSAoZWRhdGEpOworCQllbWl0X2xvZ19ob29r KGVkYXRhKTsKIAogCS8qIFNlbmQgdG8gc2VydmVyIGxvZywgaWYgZW5hYmxl ZCAqLwogCWlmIChlZGF0YS0+b3V0cHV0X3RvX3NlcnZlcikKQEAgLTE4Mzcs NyArMTgzNyw3IEBAIEdldEVycm9yQ29udGV4dFN0YWNrKHZvaWQpCiAJZm9y IChlY29udGV4dCA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJCSBlY29udGV4 dCAhPSBOVUxMOwogCQkgZWNvbnRleHQgPSBlY29udGV4dC0+cHJldmlvdXMp Ci0JCSgqZWNvbnRleHQtPmNhbGxiYWNrKSAoZWNvbnRleHQtPmFyZyk7CisJ CWVjb250ZXh0LT5jYWxsYmFjayhlY29udGV4dC0+YXJnKTsKIAogCS8qCiAJ ICogQ2xlYW4gb3Vyc2VsdmVzIG9mZiB0aGUgc3RhY2ssIGFueSBhbGxvY2F0 aW9ucyBkb25lIHNob3VsZCBoYXZlIGJlZW4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2ZtZ3IvZGZtZ3IuYwppbmRleCAxMjM5Zjk1ZGRjLi5jYTIxODZlNGVkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jCkBAIC0yNDUsNyAr MjQ1LDcgQEAgaW50ZXJuYWxfbG9hZF9saWJyYXJ5KGNvbnN0IGNoYXIgKmxp Ym5hbWUpCiAJCQlwZ19kbHN5bShmaWxlX3NjYW5uZXItPmhhbmRsZSwgUEdf TUFHSUNfRlVOQ1RJT05fTkFNRV9TVFJJTkcpOwogCQlpZiAobWFnaWNfZnVu YykKIAkJewotCQkJY29uc3QgUGdfbWFnaWNfc3RydWN0ICptYWdpY19kYXRh X3B0ciA9ICgqbWFnaWNfZnVuYykgKCk7CisJCQljb25zdCBQZ19tYWdpY19z dHJ1Y3QgKm1hZ2ljX2RhdGFfcHRyID0gbWFnaWNfZnVuYygpOwogCiAJCQlp ZiAobWFnaWNfZGF0YV9wdHItPmxlbiAhPSBtYWdpY19kYXRhLmxlbiB8fAog CQkJCW1lbWNtcChtYWdpY19kYXRhX3B0ciwgJm1hZ2ljX2RhdGEsIG1hZ2lj X2RhdGEubGVuKSAhPSAwKQpAQCAtMjc4LDcgKzI3OCw3IEBAIGludGVybmFs X2xvYWRfbGlicmFyeShjb25zdCBjaGFyICpsaWJuYW1lKQogCQkgKi8KIAkJ UEdfaW5pdCA9IChQR19pbml0X3QpIHBnX2Rsc3ltKGZpbGVfc2Nhbm5lci0+ aGFuZGxlLCAiX1BHX2luaXQiKTsKIAkJaWYgKFBHX2luaXQpCi0JCQkoKlBH X2luaXQpICgpOworCQkJUEdfaW5pdCgpOwogCiAJCS8qIE9LIHRvIGxpbmsg aXQgaW50byBsaXN0ICovCiAJCWlmIChmaWxlX2xpc3QgPT0gTlVMTCkKQEAg LTQzOCw3ICs0MzgsNyBAQCBpbnRlcm5hbF91bmxvYWRfbGlicmFyeShjb25z dCBjaGFyICpsaWJuYW1lKQogCQkJICovCiAJCQlQR19maW5pID0gKFBHX2Zp bmlfdCkgcGdfZGxzeW0oZmlsZV9zY2FubmVyLT5oYW5kbGUsICJfUEdfZmlu aSIpOwogCQkJaWYgKFBHX2ZpbmkpCi0JCQkJKCpQR19maW5pKSAoKTsKKwkJ CQlQR19maW5pKCk7CiAKIAkJCWNsZWFyX2V4dGVybmFsX2Z1bmN0aW9uX2hh c2goZmlsZV9zY2FubmVyLT5oYW5kbGUpOwogCQkJcGdfZGxjbG9zZShmaWxl X3NjYW5uZXItPmhhbmRsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9mbWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1n ci5jCmluZGV4IGE3YjA3ODI3ZTAuLjJlNTBhNjQyNWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC00MDMsNyArNDAzLDcgQEAgZmV0 Y2hfZmluZm9fcmVjb3JkKHZvaWQgKmZpbGVoYW5kbGUsIGNvbnN0IGNoYXIg KmZ1bmNuYW1lKQogCX0KIAogCS8qIEZvdW5kLCBzbyBjYWxsIGl0ICovCi0J aW5mb3JlYyA9ICgqaW5mb2Z1bmMpICgpOworCWluZm9yZWMgPSBpbmZvZnVu YygpOwogCiAJLyogVmFsaWRhdGUgcmVzdWx0IGFzIGJlc3Qgd2UgY2FuICov CiAJaWYgKGluZm9yZWMgPT0gTlVMTCkKQEAgLTY0Myw3ICs2NDMsNyBAQCBm bWdyX3NlY3VyaXR5X2RlZmluZXIoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8q IGZ1bmN0aW9uIG1hbmFnZXIgaG9vayAqLwogCWlmIChmbWdyX2hvb2spCi0J CSgqZm1ncl9ob29rKSAoRkhFVF9TVEFSVCwgJmZjYWNoZS0+ZmxpbmZvLCAm ZmNhY2hlLT5hcmcpOworCQlmbWdyX2hvb2soRkhFVF9TVEFSVCwgJmZjYWNo ZS0+ZmxpbmZvLCAmZmNhY2hlLT5hcmcpOwogCiAJLyoKIAkgKiBXZSBkb24n dCBuZWVkIHRvIHJlc3RvcmUgR1VDIG9yIHVzZXJpZCBzZXR0aW5ncyBvbiBl cnJvciwgYmVjYXVzZSB0aGUKQEAgLTY3NCw3ICs2NzQsNyBAQCBmbWdyX3Nl Y3VyaXR5X2RlZmluZXIoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWZjaW5m by0+ZmxpbmZvID0gc2F2ZV9mbGluZm87CiAJCWlmIChmbWdyX2hvb2spCi0J CQkoKmZtZ3JfaG9vaykgKEZIRVRfQUJPUlQsICZmY2FjaGUtPmZsaW5mbywg JmZjYWNoZS0+YXJnKTsKKwkJCWZtZ3JfaG9vayhGSEVUX0FCT1JULCAmZmNh Y2hlLT5mbGluZm8sICZmY2FjaGUtPmFyZyk7CiAJCVBHX1JFX1RIUk9XKCk7 CiAJfQogCVBHX0VORF9UUlkoKTsKQEAgLTY4Niw3ICs2ODYsNyBAQCBmbWdy X3NlY3VyaXR5X2RlZmluZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoT2lk SXNWYWxpZChmY2FjaGUtPnVzZXJpZCkpCiAJCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwogCWlmIChm bWdyX2hvb2spCi0JCSgqZm1ncl9ob29rKSAoRkhFVF9FTkQsICZmY2FjaGUt PmZsaW5mbywgJmZjYWNoZS0+YXJnKTsKKwkJZm1ncl9ob29rKEZIRVRfRU5E LCAmZmNhY2hlLT5mbGluZm8sICZmY2FjaGUtPmFyZyk7CiAKIAlyZXR1cm4g cmVzdWx0OwogfQpAQCAtNzE0LDcgKzcxNCw3IEBAIERpcmVjdEZ1bmN0aW9u Q2FsbDFDb2xsKFBHRnVuY3Rpb24gZnVuYywgT2lkIGNvbGxhdGlvbiwgRGF0 dW0gYXJnMSkKIAlmY2luZm8uYXJnWzBdID0gYXJnMTsKIAlmY2luZm8uYXJn bnVsbFswXSA9IGZhbHNlOwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5m byk7CisJcmVzdWx0ID0gZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZv ciBudWxsIHJlc3VsdCwgc2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4 cGVjdGluZyBvbmUgKi8KIAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTczNiw3 ICs3MzYsNyBAQCBEaXJlY3RGdW5jdGlvbkNhbGwyQ29sbChQR0Z1bmN0aW9u IGZ1bmMsIE9pZCBjb2xsYXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIp CiAJZmNpbmZvLmFyZ251bGxbMF0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVs bFsxXSA9IGZhbHNlOwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7 CisJcmVzdWx0ID0gZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBu dWxsIHJlc3VsdCwgc2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVj dGluZyBvbmUgKi8KIAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTc2MSw3ICs3 NjEsNyBAQCBEaXJlY3RGdW5jdGlvbkNhbGwzQ29sbChQR0Z1bmN0aW9uIGZ1 bmMsIE9pZCBjb2xsYXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJ ZmNpbmZvLmFyZ251bGxbMV0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFsy XSA9IGZhbHNlOwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJ cmVzdWx0ID0gZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxs IHJlc3VsdCwgc2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGlu ZyBvbmUgKi8KIAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTc4OCw3ICs3ODgs NyBAQCBEaXJlY3RGdW5jdGlvbkNhbGw0Q29sbChQR0Z1bmN0aW9uIGZ1bmMs IE9pZCBjb2xsYXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNp bmZvLmFyZ251bGxbMl0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFszXSA9 IGZhbHNlOwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVz dWx0ID0gZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJl c3VsdCwgc2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBv bmUgKi8KIAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTgxNyw3ICs4MTcsNyBA QCBEaXJlY3RGdW5jdGlvbkNhbGw1Q29sbChQR0Z1bmN0aW9uIGZ1bmMsIE9p ZCBjb2xsYXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNpbmZv LmFyZ251bGxbM10gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFs0XSA9IGZh bHNlOwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVzdWx0 ID0gZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJlc3Vs dCwgc2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBvbmUg Ki8KIAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTg0OSw3ICs4NDksNyBAQCBE aXJlY3RGdW5jdGlvbkNhbGw2Q29sbChQR0Z1bmN0aW9uIGZ1bmMsIE9pZCBj b2xsYXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNpbmZvLmFy Z251bGxbNF0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFs1XSA9IGZhbHNl OwogCi0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVzdWx0ID0g ZnVuYygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJlc3VsdCwg c2luY2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBvbmUgKi8K IAlpZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTg4Myw3ICs4ODMsNyBAQCBEaXJl Y3RGdW5jdGlvbkNhbGw3Q29sbChQR0Z1bmN0aW9uIGZ1bmMsIE9pZCBjb2xs YXRpb24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNpbmZvLmFyZ251 bGxbNV0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFs2XSA9IGZhbHNlOwog Ci0JcmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVzdWx0ID0gZnVu YygmZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJlc3VsdCwgc2lu Y2UgY2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBvbmUgKi8KIAlp ZiAoZmNpbmZvLmlzbnVsbCkKQEAgLTkxOSw3ICs5MTksNyBAQCBEaXJlY3RG dW5jdGlvbkNhbGw4Q29sbChQR0Z1bmN0aW9uIGZ1bmMsIE9pZCBjb2xsYXRp b24sIERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNpbmZvLmFyZ251bGxb Nl0gPSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFs3XSA9IGZhbHNlOwogCi0J cmVzdWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVzdWx0ID0gZnVuYygm ZmNpbmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJlc3VsdCwgc2luY2Ug Y2FsbGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBvbmUgKi8KIAlpZiAo ZmNpbmZvLmlzbnVsbCkKQEAgLTk1OCw3ICs5NTgsNyBAQCBEaXJlY3RGdW5j dGlvbkNhbGw5Q29sbChQR0Z1bmN0aW9uIGZ1bmMsIE9pZCBjb2xsYXRpb24s IERhdHVtIGFyZzEsIERhdHVtIGFyZzIsCiAJZmNpbmZvLmFyZ251bGxbN10g PSBmYWxzZTsKIAlmY2luZm8uYXJnbnVsbFs4XSA9IGZhbHNlOwogCi0JcmVz dWx0ID0gKCpmdW5jKSAoJmZjaW5mbyk7CisJcmVzdWx0ID0gZnVuYygmZmNp bmZvKTsKIAogCS8qIENoZWNrIGZvciBudWxsIHJlc3VsdCwgc2luY2UgY2Fs bGVyIGlzIGNsZWFybHkgbm90IGV4cGVjdGluZyBvbmUgKi8KIAlpZiAoZmNp bmZvLmlzbnVsbCkKQEAgLTk4Nyw3ICs5ODcsNyBAQCBDYWxsZXJGSW5mb0Z1 bmN0aW9uQ2FsbDEoUEdGdW5jdGlvbiBmdW5jLCBGbWdySW5mbyAqZmxpbmZv LCBPaWQgY29sbGF0aW9uLCBEYXR1bQogCWZjaW5mby5hcmdbMF0gPSBhcmcx OwogCWZjaW5mby5hcmdudWxsWzBdID0gZmFsc2U7CiAKLQlyZXN1bHQgPSAo KmZ1bmMpICgmZmNpbmZvKTsKKwlyZXN1bHQgPSBmdW5jKCZmY2luZm8pOwog CiAJLyogQ2hlY2sgZm9yIG51bGwgcmVzdWx0LCBzaW5jZSBjYWxsZXIgaXMg Y2xlYXJseSBub3QgZXhwZWN0aW5nIG9uZSAqLwogCWlmIChmY2luZm8uaXNu dWxsKQpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgQ2FsbGVyRkluZm9GdW5jdGlv bkNhbGwyKFBHRnVuY3Rpb24gZnVuYywgRm1nckluZm8gKmZsaW5mbywgT2lk IGNvbGxhdGlvbiwgRGF0dW0KIAlmY2luZm8uYXJnbnVsbFswXSA9IGZhbHNl OwogCWZjaW5mby5hcmdudWxsWzFdID0gZmFsc2U7CiAKLQlyZXN1bHQgPSAo KmZ1bmMpICgmZmNpbmZvKTsKKwlyZXN1bHQgPSBmdW5jKCZmY2luZm8pOwog CiAJLyogQ2hlY2sgZm9yIG51bGwgcmVzdWx0LCBzaW5jZSBjYWxsZXIgaXMg Y2xlYXJseSBub3QgZXhwZWN0aW5nIG9uZSAqLwogCWlmIChmY2luZm8uaXNu dWxsKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvc2VsZnVuY3Mu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3NlbGZ1bmNzLmgKaW5kZXggZGM2MDY5 ZDQzNS4uMTk5YTYzMTdmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvc2VsZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zZWxmdW5j cy5oCkBAIC04MSw3ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IFZhcmlhYmxl U3RhdERhdGEKICNkZWZpbmUgUmVsZWFzZVZhcmlhYmxlU3RhdHModmFyZGF0 YSkgIFwKIAlkbyB7IFwKIAkJaWYgKEhlYXBUdXBsZUlzVmFsaWQoKHZhcmRh dGEpLnN0YXRzVHVwbGUpKSBcCi0JCQkoKiAodmFyZGF0YSkuZnJlZWZ1bmMp ICgodmFyZGF0YSkuc3RhdHNUdXBsZSk7IFwKKwkJCSh2YXJkYXRhKS5mcmVl ZnVuYygodmFyZGF0YSkuc3RhdHNUdXBsZSk7IFwKIAl9IHdoaWxlKDApCiAK IAotLSAKMi4xNC4xCgo= --------------4BBFB5D36437E815ACFFDFD6 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------4BBFB5D36437E815ACFFDFD6--