Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xCD4P-00000003erY-46un for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Oct 2026 09:27:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xCD4N-00000006Pfr-3a0K for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Oct 2026 09:27:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xCD4M-00000006Pfi-2xYB for pgsql-hackers@lists.postgresql.org; Thu, 01 Oct 2026 09:27:15 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xCD4C-00000002B44-1bf0 for pgsql-hackers@postgresql.org; Thu, 01 Oct 2026 09:27:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1790846820; bh=3Ck4U8Fjxwu6PBoDB5G0pZtKGDf0hFQBAR/G/cpryao=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Message-ID:From; b=F+KpRywY+itEhIYft9eoabCvlLjG2rl5vZQ85psgsPONiUc6PFtnQ/xD77/czLXSW +39oF84XdzNdXKgawMZM5gEOhmAH/7zklLYodJdefRZrvu8Bjjgq+StD6R25443Q/f o7o7kmnFPpuyxvKDUlEokX3MAT+GN/86SxXoNjxTLtn9e2GSaTf4ewEMrmVmV9Ij8h N6smly04i80AsZZYOm+J0TAEvKHJ2s/ctoFNNngaDTwerGk8YScUIu2O4zjO9jZaZO lB9E97nYRXIuc8e+bmfWs8xrViC8k7TN0xexNVsC5hRTGOvL8127Z9se05BY4E85le Pv1zVcuLbV/Ng== Received: from mail.l.postgrespro.ru (webmail-master-mstn.l.postgrespro.ru [192.168.2.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 180456053E; Thu, 01 Oct 2026 12:27:00 +0300 (MSK) MIME-Version: 1.0 Date: Thu, 01 Oct 2026 12:27:00 +0300 From: Alexander Pyhalov To: Etsuro Fujita Cc: Alexander Korotkov , Matheus Alcantara , Pgsql Hackers Subject: Re: Asynchronous MergeAppend In-Reply-To: References: <59be194c5a409fb9fc9f2031581b8a44@postgrespro.ru> <2fb1d9923b6995492e7b163e6cb95402@postgrespro.ru> <782a968c8e01ec6db3b2da2120adf73b@postgrespro.ru> <554a73f7ffea8b22b3f81a4804b5fc34@postgrespro.ru> <42a9a941-e768-4fd8-8067-12958c5a1d70@gmail.com> <10c97af0ce34ebdb81708b1c49ed6038@postgrespro.ru> Message-ID: <7da778f2ce2fa3e1330415e1831c62c9@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_af6f24791e4237051ef45f4a389338e7" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 3.0.0.9059, bases: 2026/10/01 05:28:00 #28643653 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Etsuro Fujita писал(а) 2026-08-07 13:59: > On Thu, Aug 6, 2026 at 1:17 AM Alexander Korotkov > wrote: >> I've revised (simplified) the patchset according to fact that we can't >> have in-flight async requests during the ExecReScanMergeAppend() call. > > Thanks for updating the patchest! Will review next month. > Hi. Rebased patch set on the current master. The only noticeable change is that resetting of async requests moved from ExecAppendAsyncReset() to ExecReScanAppendBase(). ExecAppendAsyncReset() now only drains them, and so renamed to ExecAppendDrainAsyncRequests(). -- Best regards, Alexander Pyhalov, Postgres Professional --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v22-0001-mark_async_capable-subpath-should-match-subplan.patch Content-Disposition: attachment; filename=v22-0001-mark_async_capable-subpath-should-match-subplan.patch; size=3076 RnJvbSAxNmUwNTVmYWY4MzI5ZTNhMDdjZmEwMTI5NzcyZWE1YjAxYjI2NTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDAzOjU4OjIzICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMS81XSBtYXJrX2FzeW5jX2NhcGFibGUoKTogc3VicGF0aCBzaG91bGQgbWF0Y2gg c3VicGxhbgoKbWFya19hc3luY19jYXBhYmxlKCkgYmVsaWV2ZXMgdGhhdCB0aGUgcGF0aCBjb3Jy ZXNwb25kcyB0byB0aGUgcGxhbi4gIFRoaXMgaXMKbm90IHRydWUgd2hlbiBjcmVhdGluZ19bbWVy Z2VfXWFwcGVuZF9wbGFuKCkgaW5zZXJ0cyAoSW5jcmVtZW50YWwpU29ydCBub2RlLgpJbiB0aGlz IGNhc2UsICBtYXJrX2FzeW5jX2NhcGFibGUoKSBjYW4gdHJlYXQgdGhlIFNvcnQgcGxhbiBub2Rl IGFzIHNvbWUgb3RoZXIKbm9kZSBhbmQgY3Jhc2guICBGaXggdGhpcyBieSBleHBsaWNpdGx5IGhh bmRsaW5nIHRoZSAoSW5jcmVtZW50YWwpU29ydCBub2RlcwphcyBub3QgYXN5bmMtY2FwYWJsZS4g IEFsc28sIG1vdmUgdGhpcyBjaGVjayBvbiB0b3Agb2YgdGhlIHN3aXRjaCgpIGFzIGl0CnJlcGVh dHMgaW4gYWxsIHRoZSBjYXNlcy4KClRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgdGhlIE1lcmdlQXBw ZW5kIG5vZGUgYXN5bmMtY2FwYWJsZSwgd2hpY2ggd2lsbCBiZQppbXBsZW1lbnRlZCBpbiB0aGUg c3Vic2VxdWVudCBjb21taXRzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81OWJl MTk0YzVhNDA5ZmI5ZmM5ZjIwMzE1ODFiOGE0NCU0MHBvc3RncmVzcHJvLnJ1CkF1dGhvcjogQWxl eGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IE1h dGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0Z3Jlc3Byby5ydT4KLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAyOSArKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMmY4YTA4YWQ3OGUuLjc4 OWQxYWM5MDY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0x MTM4LDE5ICsxMTM4LDIwIEBAIGNyZWF0ZV9qb2luX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEpv aW5QYXRoICpiZXN0X3BhdGgpCiBzdGF0aWMgYm9vbAogbWFya19hc3luY19jYXBhYmxlX3BsYW4o UGxhbiAqcGxhbiwgUGF0aCAqcGF0aCkKIHsKKwkvKgorCSAqIElmIHRoZSBnZW5lcmF0ZWQgcGxh biBub2RlIGluY2x1ZGVzIGEgZ2F0aW5nIFJlc3VsdCBub2RlLCBhIFNvcnQgbm9kZSwKKwkgKiBv ciBhbiBJbmNyZW1lbnRhbFNvcnQgbm9kZSwgd2UgY2FuJ3QgZXhlY3V0ZSBpdCBhc3luY2hyb25v dXNseS4KKwkgKi8KKwlpZiAoSXNBKHBsYW4sIFJlc3VsdCkgfHwgSXNBKHBsYW4sIFNvcnQpIHx8 CisJCUlzQShwbGFuLCBJbmNyZW1lbnRhbFNvcnQpKQorCQlyZXR1cm4gZmFsc2U7CisKIAlzd2l0 Y2ggKG5vZGVUYWcocGF0aCkpCiAJewogCQljYXNlIFRfU3VicXVlcnlTY2FuUGF0aDoKIAkJCXsK IAkJCQlTdWJxdWVyeVNjYW4gKnNjYW5fcGxhbiA9IChTdWJxdWVyeVNjYW4gKikgcGxhbjsKIAot CQkJCS8qCi0JCQkJICogSWYgdGhlIGdlbmVyYXRlZCBwbGFuIG5vZGUgaW5jbHVkZXMgYSBnYXRp bmcgUmVzdWx0IG5vZGUsCi0JCQkJICogd2UgY2FuJ3QgZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNs eS4KLQkJCQkgKi8KLQkJCQlpZiAoSXNBKHBsYW4sIFJlc3VsdCkpCi0JCQkJCXJldHVybiBmYWxz ZTsKLQogCQkJCS8qCiAJCQkJICogSWYgYSBTdWJxdWVyeVNjYW4gbm9kZSBhdG9wIG9mIGFuIGFz eW5jLWNhcGFibGUgcGxhbiBub2RlCiAJCQkJICogaXMgZGVsZXRhYmxlLCBjb25zaWRlciBpdCBh cyBhc3luYy1jYXBhYmxlLgpAQCAtMTE2NSwxMyArMTE2Niw2IEBAIG1hcmtfYXN5bmNfY2FwYWJs ZV9wbGFuKFBsYW4gKnBsYW4sIFBhdGggKnBhdGgpCiAJCQl7CiAJCQkJRmR3Um91dGluZSAqZmR3 cm91dGluZSA9IHBhdGgtPnBhcmVudC0+ZmR3cm91dGluZTsKIAotCQkJCS8qCi0JCQkJICogSWYg dGhlIGdlbmVyYXRlZCBwbGFuIG5vZGUgaW5jbHVkZXMgYSBnYXRpbmcgUmVzdWx0IG5vZGUsCi0J CQkJICogd2UgY2FuJ3QgZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNseS4KLQkJCQkgKi8KLQkJCQlp ZiAoSXNBKHBsYW4sIFJlc3VsdCkpCi0JCQkJCXJldHVybiBmYWxzZTsKLQogCQkJCUFzc2VydChm ZHdyb3V0aW5lICE9IE5VTEwpOwogCQkJCWlmIChmZHdyb3V0aW5lLT5Jc0ZvcmVpZ25QYXRoQXN5 bmNDYXBhYmxlICE9IE5VTEwgJiYKIAkJCQkJZmR3cm91dGluZS0+SXNGb3JlaWduUGF0aEFzeW5j Q2FwYWJsZSgoRm9yZWlnblBhdGggKikgcGF0aCkpCkBAIC0xMTgwLDEzICsxMTc0LDYgQEAgbWFy a19hc3luY19jYXBhYmxlX3BsYW4oUGxhbiAqcGxhbiwgUGF0aCAqcGF0aCkKIAkJCX0KIAkJY2Fz ZSBUX1Byb2plY3Rpb25QYXRoOgogCi0JCQkvKgotCQkJICogSWYgdGhlIGdlbmVyYXRlZCBwbGFu IG5vZGUgaW5jbHVkZXMgYSBSZXN1bHQgbm9kZSBmb3IgdGhlCi0JCQkgKiBwcm9qZWN0aW9uLCB3 ZSBjYW4ndCBleGVjdXRlIGl0IGFzeW5jaHJvbm91c2x5LgotCQkJICovCi0JCQlpZiAoSXNBKHBs YW4sIFJlc3VsdCkpCi0JCQkJcmV0dXJuIGZhbHNlOwotCiAJCQkvKgogCQkJICogY3JlYXRlX3By b2plY3Rpb25fcGxhbigpIHdvdWxkIGhhdmUgcHVsbGVkIHVwIHRoZSBzdWJwbGFuLCBzbwogCQkJ ICogY2hlY2sgdGhlIGNhcGFiaWxpdHkgdXNpbmcgdGhlIHN1YnBhdGguCi0tIAoyLjQzLjAKCg== --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v22-0002-Introduce-AppendBase-AppendBaseState-base-types-.patch Content-Disposition: attachment; filename=v22-0002-Introduce-AppendBase-AppendBaseState-base-types-.patch; size=72076 RnJvbSBmNmZiMTE0ZTViOTE3OTk2MWRhZTZiYWY1YmYzY2EwMTJjZjExNzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjAwOjE1ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMi81XSBJbnRyb2R1Y2UgQXBwZW5kQmFzZS9BcHBlbmRCYXNlU3RhdGUgYmFzZSB0 eXBlcyBmb3IKIEFwcGVuZC9NZXJnZUFwcGVuZAoKSW50cm9kdWNlIGNvbW1vbiBiYXNlIHR5cGVz IEFwcGVuZEJhc2UgKHBsYW4gbm9kZSkgYW5kIEFwcGVuZEJhc2VTdGF0ZQooZXhlY3V0b3Igc3Rh dGUpIHRvIHVuaWZ5IHRoZSBmaWVsZHMgc2hhcmVkIGJldHdlZW4gQXBwZW5kL01lcmdlQXBwZW5k IGFuZApBcHBlbmRTdGF0ZS9NZXJnZUFwcGVuZFN0YXRlLgoKQXBwZW5kQmFzZSBob2xkcyB0aGUg c3VicGxhbiBsaXN0LCBhcHBlbmRyZWwgaWRlbnRpZmllcnMsIGFuZCBwYXJ0aXRpb24KcHJ1bmlu ZyBpbmRleC4gIEFwcGVuZEJhc2VTdGF0ZSBob2xkcyB0aGUgc3VicGxhbiBzdGF0ZSBhcnJheSwg YXN5bmNocm9ub3VzCmV4ZWN1dGlvbiBpbmZyYXN0cnVjdHVyZSwgYW5kIHBhcnRpdGlvbiBwcnVu aW5nIHN0YXRlLgoKQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCBub3cgZW1iZWQgQXBwZW5kQmFzZSBh cyB0aGVpciBmaXJzdCBmaWVsZCAoYWIpLAp3aGlsZSBBcHBlbmRTdGF0ZSBhbmQgTWVyZ2VBcHBl bmRTdGF0ZSBib3RoIGVtYmVkIEFwcGVuZEJhc2VTdGF0ZSBhcwp0aGVpciBmaXJzdCBmaWVsZCAo YXMpLiAgVGhpcyBmb2xsb3dzIHRoZSBzYW1lIEMgc3RydWN0IGluaGVyaXRhbmNlCnBhdHRlcm4g dXNlZCBieSBTY2FuL1NjYW5TdGF0ZSBhbmQgSm9pbi9Kb2luU3RhdGUgdGhyb3VnaG91dCB0aGUK Y29kZWJhc2UuICBUaGUgbmFtZSAiQXBwZW5kQmFzZSIgd2FzIGNob3NlbiBiZWNhdXNlIGp1c3Qg IkFwcGVuZCIgaXMgYWxyZWFkeQp0YWtlbi4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vNTliZTE5NGM1YTQwOWZiOWZjOWYyMDMxNTgxYjhhNDQlNDBwb3N0Z3Jlc3Byby5ydQpBdXRo b3I6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkNvLWF1dGhv cmVkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQWxleGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3 ZWQtYnk6IEFsZW5hIFJ5YmFraW5hIDxhLnJ5YmFraW5hQHBvc3RncmVzcHJvLnJ1PgotLS0KIGNv bnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYyB8ICAgOCArLQogY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ3BhX3NjYW4uYyAgICAgIHwgICA0ICstCiBjb250cmliL3BnX3BsYW5f YWR2aWNlL3BncGFfd2Fsa2VyLmMgICAgfCAgIDggKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j ICAgICAgICAgIHwgIDUyICstLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNDdXJyZW50LmMgICAgICB8 ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgIHwgICA4ICst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAyOTIgKysrKysrKysr KysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAg fCAgODIgKysrLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgIHwg ICA5ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAgNDYgKyst LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwgMTczICsrKystLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYyAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICB8ICAgOCArLQogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgIHwgIDY1ICsrKystLQogc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgIHwgIDY2ICsrKy0tLQogc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgIHwgICAyICsKIDE4IGZpbGVzIGNoYW5nZWQsIDM3 NCBpbnNlcnRpb25zKCspLCA0NzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19vdmVyZXhwbGFpbi9wZ19vdmVyZXhwbGFpbi5jIGIvY29udHJpYi9wZ19vdmVyZXhwbGFpbi9w Z19vdmVyZXhwbGFpbi5jCmluZGV4IDRkNzQzMTZhMThlLi5mMzhmYThlNjM0NSAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ19vdmVyZXhwbGFpbi9wZ19vdmVyZXhwbGFpbi5jCisrKyBiL2NvbnRyaWIv cGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYwpAQCAtMjM0LDE4ICsyMzQsMTggQEAgb3Zl cmV4cGxhaW5fcGVyX25vZGVfaG9vayhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0 b3JzLAogCQkJCWJyZWFrOwogCQkJY2FzZSBUX0FwcGVuZDoKIAkJCQlvdmVyZXhwbGFpbl9iaXRt YXBzZXQoIkFwcGVuZCBSVElzIiwKLQkJCQkJCQkJCSAgKChBcHBlbmQgKikgcGxhbiktPmFwcHJl bGlkcywKKwkJCQkJCQkJCSAgKChBcHBlbmQgKikgcGxhbiktPmFiLmFwcHJlbGlkcywKIAkJCQkJ CQkJCSAgZXMpOwogCQkJCW92ZXJleHBsYWluX2JpdG1hcHNldF9saXN0KCJDaGlsZCBBcHBlbmQg UlRJcyIsCi0JCQkJCQkJCQkJICAgKChBcHBlbmQgKikgcGxhbiktPmNoaWxkX2FwcGVuZF9yZWxp ZF9zZXRzLAorCQkJCQkJCQkJCSAgICgoQXBwZW5kICopIHBsYW4pLT5hYi5jaGlsZF9hcHBlbmRf cmVsaWRfc2V0cywKIAkJCQkJCQkJCQkgICBlcyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFRfTWVy Z2VBcHBlbmQ6CiAJCQkJb3ZlcmV4cGxhaW5fYml0bWFwc2V0KCJBcHBlbmQgUlRJcyIsCi0JCQkJ CQkJCQkgICgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPmFwcHJlbGlkcywKKwkJCQkJCQkJCSAgKChN ZXJnZUFwcGVuZCAqKSBwbGFuKS0+YWIuYXBwcmVsaWRzLAogCQkJCQkJCQkJICBlcyk7CiAJCQkJ b3ZlcmV4cGxhaW5fYml0bWFwc2V0X2xpc3QoIkNoaWxkIEFwcGVuZCBSVElzIiwKLQkJCQkJCQkJ CQkgICAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0cywKKwkJ CQkJCQkJCQkgICAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hYi5jaGlsZF9hcHBlbmRfcmVsaWRf c2V0cywKIAkJCQkJCQkJCQkgICBlcyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFRfUmVzdWx0Ogpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3NjYW4uYyBiL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMKaW5kZXggMWQ4ODk0ZTU0NDAuLjNiOTk0ZmQ0YWZh IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfc2Nhbi5jCisrKyBiL2Nv bnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMKQEAgLTE2NCw3ICsxNjQsNyBAQCBwZ3Bh X2J1aWxkX3NjYW4ocGdwYV9wbGFuX3dhbGtlcl9jb250ZXh0ICp3YWxrZXIsIFBsYW4gKnBsYW4s CiAKIAkJCQkvKiBCZSBzdXJlIHRvIGFjY291bnQgZm9yIHB1bGxlZC11cCBzY2Fucy4gKi8KIAkJ CQljaGlsZF9hcHBlbmRfcmVsaWRfc2V0cyA9Ci0JCQkJCSgoQXBwZW5kICopIHBsYW4pLT5jaGls ZF9hcHBlbmRfcmVsaWRfc2V0czsKKwkJCQkJKChBcHBlbmQgKikgcGxhbiktPmFiLmNoaWxkX2Fw cGVuZF9yZWxpZF9zZXRzOwogCQkJCWJyZWFrOwogCQkJY2FzZSBUX01lcmdlQXBwZW5kOgogCQkJ CS8qIFNhbWUgbG9naWMgaGVyZSBhcyBmb3IgQXBwZW5kLCBhYm92ZS4gKi8KQEAgLTE3Niw3ICsx NzYsNyBAQCBwZ3BhX2J1aWxkX3NjYW4ocGdwYV9wbGFuX3dhbGtlcl9jb250ZXh0ICp3YWxrZXIs IFBsYW4gKnBsYW4sCiAKIAkJCQkvKiBCZSBzdXJlIHRvIGFjY291bnQgZm9yIHB1bGxlZC11cCBz Y2Fucy4gKi8KIAkJCQljaGlsZF9hcHBlbmRfcmVsaWRfc2V0cyA9Ci0JCQkJCSgoTWVyZ2VBcHBl bmQgKikgcGxhbiktPmNoaWxkX2FwcGVuZF9yZWxpZF9zZXRzOworCQkJCQkoKE1lcmdlQXBwZW5k ICopIHBsYW4pLT5hYi5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0czsKIAkJCQlicmVhazsKIAkJCWRl ZmF1bHQ6CiAJCQkJc3RyYXRlZ3kgPSBQR1BBX1NDQU5fT1JESU5BUlk7CmRpZmYgLS1naXQgYS9j b250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmMgYi9jb250cmliL3BnX3BsYW5fYWR2 aWNlL3BncGFfd2Fsa2VyLmMKaW5kZXggYmZkMWE4ZTNiZTEuLmZhMzZlNTI2Mjg2IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmMKKysrIGIvY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ3BhX3dhbGtlci5jCkBAIC00NDMsMTQgKzQ0MywxNCBAQCBwZ3BhX3dh bGtfcmVjdXJzaXZlbHkocGdwYV9wbGFuX3dhbGtlcl9jb250ZXh0ICp3YWxrZXIsIFBsYW4gKnBs YW4sCiAJCQl7CiAJCQkJQXBwZW5kCSAgICphcGxhbiA9IChBcHBlbmQgKikgcGxhbjsKIAotCQkJ CWV4dHJhcGxhbnMgPSBhcGxhbi0+YXBwZW5kcGxhbnM7CisJCQkJZXh0cmFwbGFucyA9IGFwbGFu LT5hYi5zdWJwbGFuczsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfTWVyZ2VBcHBlbmQ6CiAJ CQl7CiAJCQkJTWVyZ2VBcHBlbmQgKm1hcGxhbiA9IChNZXJnZUFwcGVuZCAqKSBwbGFuOwogCi0J CQkJZXh0cmFwbGFucyA9IG1hcGxhbi0+bWVyZ2VwbGFuczsKKwkJCQlleHRyYXBsYW5zID0gbWFw bGFuLT5hYi5zdWJwbGFuczsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfQml0bWFwQW5kOgpA QCAtNTczLDkgKzU3Myw5IEBAIHBncGFfcmVsaWRzKFBsYW4gKnBsYW4pCiAJZWxzZSBpZiAoSXNB KHBsYW4sIEZvcmVpZ25TY2FuKSkKIAkJcmV0dXJuICgoRm9yZWlnblNjYW4gKikgcGxhbiktPmZz X3JlbGlkczsKIAllbHNlIGlmIChJc0EocGxhbiwgQXBwZW5kKSkKLQkJcmV0dXJuICgoQXBwZW5k ICopIHBsYW4pLT5hcHByZWxpZHM7CisJCXJldHVybiAoKEFwcGVuZCAqKSBwbGFuKS0+YWIuYXBw cmVsaWRzOwogCWVsc2UgaWYgKElzQShwbGFuLCBNZXJnZUFwcGVuZCkpCi0JCXJldHVybiAoKE1l cmdlQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHM7CisJCXJldHVybiAoKE1lcmdlQXBwZW5kICop IHBsYW4pLT5hYi5hcHByZWxpZHM7CiAKIAlyZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKaW5kZXggMmJjZmY0YjI2YjQuLjg3NjAzY2YxYTA2IDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMjYzNiw4ICsyNjM2LDggQEAgZmluZF9tb2RpZnl0 YWJsZV9zdWJwbGFuKFBsYW5uZXJJbmZvICpyb290LAogCXsKIAkJQXBwZW5kCSAgICphcHBlbmRw bGFuID0gKEFwcGVuZCAqKSBzdWJwbGFuOwogCi0JCWlmIChzdWJwbGFuX2luZGV4IDwgbGlzdF9s ZW5ndGgoYXBwZW5kcGxhbi0+YXBwZW5kcGxhbnMpKQotCQkJc3VicGxhbiA9IChQbGFuICopIGxp c3RfbnRoKGFwcGVuZHBsYW4tPmFwcGVuZHBsYW5zLCBzdWJwbGFuX2luZGV4KTsKKwkJaWYgKHN1 YnBsYW5faW5kZXggPCBsaXN0X2xlbmd0aChhcHBlbmRwbGFuLT5hYi5zdWJwbGFucykpCisJCQlz dWJwbGFuID0gKFBsYW4gKikgbGlzdF9udGgoYXBwZW5kcGxhbi0+YWIuc3VicGxhbnMsIHN1YnBs YW5faW5kZXgpOwogCX0KIAllbHNlIGlmIChJc0Eoc3VicGxhbiwgUmVzdWx0KSAmJgogCQkJIG91 dGVyUGxhbihzdWJwbGFuKSAhPSBOVUxMICYmCkBAIC0yNjQ1LDggKzI2NDUsOCBAQCBmaW5kX21v ZGlmeXRhYmxlX3N1YnBsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJewogCQlBcHBlbmQJICAgKmFw cGVuZHBsYW4gPSAoQXBwZW5kICopIG91dGVyUGxhbihzdWJwbGFuKTsKIAotCQlpZiAoc3VicGxh bl9pbmRleCA8IGxpc3RfbGVuZ3RoKGFwcGVuZHBsYW4tPmFwcGVuZHBsYW5zKSkKLQkJCXN1YnBs YW4gPSAoUGxhbiAqKSBsaXN0X250aChhcHBlbmRwbGFuLT5hcHBlbmRwbGFucywgc3VicGxhbl9p bmRleCk7CisJCWlmIChzdWJwbGFuX2luZGV4IDwgbGlzdF9sZW5ndGgoYXBwZW5kcGxhbi0+YWIu c3VicGxhbnMpKQorCQkJc3VicGxhbiA9IChQbGFuICopIGxpc3RfbnRoKGFwcGVuZHBsYW4tPmFi LnN1YnBsYW5zLCBzdWJwbGFuX2luZGV4KTsKIAl9CiAKIAkvKiBOb3csIGhhdmUgd2UgZ290IGEg Rm9yZWlnblNjYW4gb24gdGhlIGRlc2lyZWQgcmVsPyAqLwpAQCAtODY1Miw3ICs4NjUyLDcgQEAg cG9zdGdyZXNGb3JlaWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAlQ Z0Zkd1NjYW5TdGF0ZSAqZnNzdGF0ZSA9IChQZ0Zkd1NjYW5TdGF0ZSAqKSBub2RlLT5mZHdfc3Rh dGU7CiAJQXN5bmNSZXF1ZXN0ICpwZW5kaW5nQXJlcSA9IGZzc3RhdGUtPmNvbm5fc3RhdGUtPnBl bmRpbmdBcmVxOwogCUFwcGVuZFN0YXRlICpyZXF1ZXN0b3IgPSAoQXBwZW5kU3RhdGUgKikgYXJl cS0+cmVxdWVzdG9yOwotCVdhaXRFdmVudFNldCAqc2V0ID0gcmVxdWVzdG9yLT5hc19ldmVudHNl dDsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IHJlcXVlc3Rvci0+YXMuZXZlbnRzZXQ7CiAKIAkvKiBU aGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIHVubGVzcyBjYWxsYmFja19wZW5kaW5nICovCiAJQXNz ZXJ0KGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOwpAQCAtODY5NCw3ICs4Njk0LDcgQEAgcG9zdGdy ZXNGb3JlaWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJICogYmVs b3csIGJlY2F1c2Ugd2UgbWlnaHQgb3RoZXJ3aXNlIGVuZCB1cCB3aXRoIG5vIGNvbmZpZ3VyZWQg ZXZlbnRzCiAJCSAqIG90aGVyIHRoYW4gdGhlIHBvc3RtYXN0ZXIgZGVhdGggZXZlbnQuCiAJCSAq LwotCQlpZiAoIWJtc19pc19lbXB0eShyZXF1ZXN0b3ItPmFzX25lZWRyZXF1ZXN0KSkKKwkJaWYg KCFibXNfaXNfZW1wdHkocmVxdWVzdG9yLT5hcy5uZWVkcmVxdWVzdCkpCiAJCQlyZXR1cm47CiAJ CWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhzZXQpID4gMSkKIAkJCXJldHVybjsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwppbmRleCA5NmYyZjBlMmU3NC4uZGUzNTY5OGI5MjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKQEAgLTEyMzAsMTIgKzEyMzAsOSBAQCBFeHBsYWluUHJlU2Nhbk5vZGUo UGxhblN0YXRlICpwbGFuc3RhdGUsIEJpdG1hcHNldCAqKnJlbHNfdXNlZCkKIAkJCQkJCQkJCQkJ bGluaXRpYWxfaW50KCgoTW9kaWZ5VGFibGUgKikgcGxhbiktPnJlc3VsdFJlbGF0aW9ucykpOwog CQkJYnJlYWs7CiAJCWNhc2UgVF9BcHBlbmQ6Ci0JCQkqcmVsc191c2VkID0gYm1zX2FkZF9tZW1i ZXJzKCpyZWxzX3VzZWQsCi0JCQkJCQkJCQkJICgoQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHMp OwotCQkJYnJlYWs7CiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoKIAkJCSpyZWxzX3VzZWQgPSBibXNf YWRkX21lbWJlcnMoKnJlbHNfdXNlZCwKLQkJCQkJCQkJCQkgKChNZXJnZUFwcGVuZCAqKSBwbGFu KS0+YXBwcmVsaWRzKTsKKwkJCQkJCQkJCQkgKChBcHBlbmRCYXNlICopIHBsYW4pLT5hcHByZWxp ZHMpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9SZXN1bHQ6CiAJCQkqcmVsc191c2VkID0gYm1zX2Fk ZF9tZW1iZXJzKCpyZWxzX3VzZWQsCkBAIC0xMjY5LDM0ICsxMjY2LDE3IEBAIHBsYW5faXNfZGlz YWJsZWQoUGxhbiAqcGxhbikKIAkgKiBIYW5kbGUgc3BlY2lhbCBub2RlcyBmaXJzdC4gIENoaWxk cmVuIG9mIEJpdG1hcE9ycyBhbmQgQml0bWFwQW5kcyBjYW4ndAogCSAqIGJlIGRpc2FibGVkLCBz byBubyBuZWVkIHRvIGhhbmRsZSB0aG9zZSBzcGVjaWZpY2FsbHkuCiAJICovCi0JaWYgKElzQShw bGFuLCBBcHBlbmQpKQotCXsKLQkJTGlzdENlbGwgICAqbGM7Ci0JCUFwcGVuZAkgICAqYXBsYW4g PSAoQXBwZW5kICopIHBsYW47Ci0KLQkJLyoKLQkJICogU3VtIHRoZSBBcHBlbmQgY2hpbGRyZW5z JyBkaXNhYmxlZF9ub2Rlcy4gIFRoaXMgcHVycG9zZWZ1bGx5Ci0JCSAqIGluY2x1ZGVzIGFueSBy dW4tdGltZSBwcnVuZWQgY2hpbGRyZW4uICBJZ25vcmluZyB0aG9zZSBjb3VsZCBnaXZlCi0JCSAq IHVzIHRoZSBpbmNvcnJlY3QgbnVtYmVyIG9mIGRpc2FibGVkIG5vZGVzLgotCQkgKi8KLQkJZm9y ZWFjaChsYywgYXBsYW4tPmFwcGVuZHBsYW5zKQotCQl7Ci0JCQlQbGFuCSAgICpzdWJwbGFuID0g bGZpcnN0KGxjKTsKLQotCQkJY2hpbGRfZGlzYWJsZWRfbm9kZXMgKz0gc3VicGxhbi0+ZGlzYWJs ZWRfbm9kZXM7Ci0JCX0KLQl9Ci0JZWxzZSBpZiAoSXNBKHBsYW4sIE1lcmdlQXBwZW5kKSkKKwlp ZiAoSXNBKHBsYW4sIEFwcGVuZCkgfHwgSXNBKHBsYW4sIE1lcmdlQXBwZW5kKSkKIAl7CiAJCUxp c3RDZWxsICAgKmxjOwotCQlNZXJnZUFwcGVuZCAqbWFwbGFuID0gKE1lcmdlQXBwZW5kICopIHBs YW47CisJCUFwcGVuZEJhc2UgKmFicGxhbiA9IChBcHBlbmRCYXNlICopIHBsYW47CiAKIAkJLyoK LQkJICogU3VtIHRoZSBNZXJnZUFwcGVuZCBjaGlsZHJlbnMnIGRpc2FibGVkX25vZGVzLiAgVGhp cyBwdXJwb3NlZnVsbHkKLQkJICogaW5jbHVkZXMgYW55IHJ1bi10aW1lIHBydW5lZCBjaGlsZHJl bi4gIElnbm9yaW5nIHRob3NlIGNvdWxkIGdpdmUKLQkJICogdXMgdGhlIGluY29ycmVjdCBudW1i ZXIgb2YgZGlzYWJsZWQgbm9kZXMuCisJCSAqIFN1bSB0aGUgQXBwZW5kL01lcmdlQXBwZW5kIGNo aWxkcmVucycgZGlzYWJsZWRfbm9kZXMuICBUaGlzCisJCSAqIHB1cnBvc2VmdWxseSBpbmNsdWRl cyBhbnkgcnVuLXRpbWUgcHJ1bmVkIGNoaWxkcmVuLiAgSWdub3JpbmcKKwkJICogdGhvc2UgY291 bGQgZ2l2ZSB1cyB0aGUgaW5jb3JyZWN0IG51bWJlciBvZiBkaXNhYmxlZCBub2Rlcy4KIAkJICov Ci0JCWZvcmVhY2gobGMsIG1hcGxhbi0+bWVyZ2VwbGFucykKKwkJZm9yZWFjaChsYywgYWJwbGFu LT5zdWJwbGFucykKIAkJewogCQkJUGxhbgkgICAqc3VicGxhbiA9IGxmaXJzdChsYyk7CiAKQEAg LTIzNDQsMTMgKzIzMjQsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLAogCXN3aXRjaCAobm9kZVRhZyhwbGFuKSkKIAl7CiAJCWNhc2UgVF9BcHBl bmQ6Ci0JCQlFeHBsYWluTWlzc2luZ01lbWJlcnMoKChBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUp LT5hc19ucGxhbnMsCi0JCQkJCQkJCSAgbGlzdF9sZW5ndGgoKChBcHBlbmQgKikgcGxhbiktPmFw cGVuZHBsYW5zKSwKLQkJCQkJCQkJICBlcyk7Ci0JCQlicmVhazsKIAkJY2FzZSBUX01lcmdlQXBw ZW5kOgotCQkJRXhwbGFpbk1pc3NpbmdNZW1iZXJzKCgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwbGFu c3RhdGUpLT5tc19ucGxhbnMsCi0JCQkJCQkJCSAgbGlzdF9sZW5ndGgoKChNZXJnZUFwcGVuZCAq KSBwbGFuKS0+bWVyZ2VwbGFucyksCisJCQlFeHBsYWluTWlzc2luZ01lbWJlcnMoKChBcHBlbmRC YXNlU3RhdGUgKikgcGxhbnN0YXRlKS0+bnBsYW5zLAorCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKCgo QXBwZW5kQmFzZSAqKSBwbGFuKS0+c3VicGxhbnMpLAogCQkJCQkJCQkgIGVzKTsKIAkJCWJyZWFr OwogCQlkZWZhdWx0OgpAQCAtMjM5NCwxMyArMjM3MCw5IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJc3dpdGNoIChub2RlVGFnKHBsYW4pKQog CXsKIAkJY2FzZSBUX0FwcGVuZDoKLQkJCUV4cGxhaW5NZW1iZXJOb2RlcygoKEFwcGVuZFN0YXRl ICopIHBsYW5zdGF0ZSktPmFwcGVuZHBsYW5zLAotCQkJCQkJCSAgICgoQXBwZW5kU3RhdGUgKikg cGxhbnN0YXRlKS0+YXNfbnBsYW5zLAotCQkJCQkJCSAgIGFuY2VzdG9ycywgZXMpOwotCQkJYnJl YWs7CiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoKLQkJCUV4cGxhaW5NZW1iZXJOb2RlcygoKE1lcmdl QXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+bWVyZ2VwbGFucywKLQkJCQkJCQkgICAoKE1lcmdl QXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+bXNfbnBsYW5zLAorCQkJRXhwbGFpbk1lbWJlck5v ZGVzKCgoQXBwZW5kQmFzZVN0YXRlICopIHBsYW5zdGF0ZSktPnBsYW5zLAorCQkJCQkJCSAgICgo QXBwZW5kQmFzZVN0YXRlICopIHBsYW5zdGF0ZSktPm5wbGFucywKIAkJCQkJCQkgICBhbmNlc3Rv cnMsIGVzKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfQml0bWFwQW5kOgpAQCAtMjYxNCw3ICsyNTg2 LDcgQEAgc3RhdGljIHZvaWQKIHNob3dfbWVyZ2VfYXBwZW5kX2tleXMoTWVyZ2VBcHBlbmRTdGF0 ZSAqbXN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMpCiB7 Ci0JTWVyZ2VBcHBlbmQgKnBsYW4gPSAoTWVyZ2VBcHBlbmQgKikgbXN0YXRlLT5wcy5wbGFuOwor CU1lcmdlQXBwZW5kICpwbGFuID0gKE1lcmdlQXBwZW5kICopIG1zdGF0ZS0+YXMucHMucGxhbjsK IAogCXNob3dfc29ydF9ncm91cF9rZXlzKChQbGFuU3RhdGUgKikgbXN0YXRlLCAiU29ydCBLZXki LAogCQkJCQkJIHBsYW4tPm51bUNvbHMsIDAsIHBsYW4tPnNvcnRDb2xJZHgsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjQW1pLmMKaW5kZXggMzdmZTAzZmRjMzcuLjJkOGU2MjEyMDhmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0FtaS5jCkBAIC01MzgsNyArNTM4LDcgQEAgRXhlY1N1cHBvcnRzQmFja3dhcmRTY2FuKFBsYW4g Km5vZGUpCiAJCQkJaWYgKCgoQXBwZW5kICopIG5vZGUpLT5uYXN5bmNwbGFucyA+IDApCiAJCQkJ CXJldHVybiBmYWxzZTsKIAotCQkJCWZvcmVhY2gobCwgKChBcHBlbmQgKikgbm9kZSktPmFwcGVu ZHBsYW5zKQorCQkJCWZvcmVhY2gobCwgKChBcHBlbmQgKikgbm9kZSktPmFiLnN1YnBsYW5zKQog CQkJCXsKIAkJCQkJaWYgKCFFeGVjU3VwcG9ydHNCYWNrd2FyZFNjYW4oKFBsYW4gKikgbGZpcnN0 KGwpKSkKIAkJCQkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNDdXJyZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQ3VycmVudC5jCmlu ZGV4IDkwNThkZTJlOTk4Li5iOGNkMDk2N2M3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0N1cnJlbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQ3VycmVu dC5jCkBAIC0zNzQsOSArMzc0LDkgQEAgc2VhcmNoX3BsYW5fdHJlZShQbGFuU3RhdGUgKm5vZGUs IE9pZCB0YWJsZV9vaWQsCiAJCQkJQXBwZW5kU3RhdGUgKmFzdGF0ZSA9IChBcHBlbmRTdGF0ZSAq KSBub2RlOwogCQkJCWludAkJCWk7CiAKLQkJCQlmb3IgKGkgPSAwOyBpIDwgYXN0YXRlLT5hc19u cGxhbnM7IGkrKykKKwkJCQlmb3IgKGkgPSAwOyBpIDwgYXN0YXRlLT5hcy5ucGxhbnM7IGkrKykK IAkJCQl7Ci0JCQkJCVNjYW5TdGF0ZSAgKmVsZW0gPSBzZWFyY2hfcGxhbl90cmVlKGFzdGF0ZS0+ YXBwZW5kcGxhbnNbaV0sCisJCQkJCVNjYW5TdGF0ZSAgKmVsZW0gPSBzZWFyY2hfcGxhbl90cmVl KGFzdGF0ZS0+YXMucGxhbnNbaV0sCiAJCQkJCQkJCQkJCQkJCXRhYmxlX29pZCwKIAkJCQkJCQkJ CQkJCQkJcGVuZGluZ19yZXNjYW4pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmlu ZGV4IDdjNGM2NmUzMjNmLi5mYTFjNjliZjg5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMKQEAgLTg5MSw4ICs4OTEsOCBAQCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNf bmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpCiAJCUFwcGVuZFN0YXRlICphU3RhdGUgPSAo QXBwZW5kU3RhdGUgKikgY2hpbGRfbm9kZTsKIAkJaW50CQkJaTsKIAotCQlmb3IgKGkgPSAwOyBp IDwgYVN0YXRlLT5hc19ucGxhbnM7IGkrKykKLQkJCUV4ZWNTZXRUdXBsZUJvdW5kKHR1cGxlc19u ZWVkZWQsIGFTdGF0ZS0+YXBwZW5kcGxhbnNbaV0pOworCQlmb3IgKGkgPSAwOyBpIDwgYVN0YXRl LT5hcy5ucGxhbnM7IGkrKykKKwkJCUV4ZWNTZXRUdXBsZUJvdW5kKHR1cGxlc19uZWVkZWQsIGFT dGF0ZS0+YXMucGxhbnNbaV0pOwogCX0KIAllbHNlIGlmIChJc0EoY2hpbGRfbm9kZSwgTWVyZ2VB cHBlbmRTdGF0ZSkpCiAJewpAQCAtOTA0LDggKzkwNCw4IEBAIEV4ZWNTZXRUdXBsZUJvdW5kKGlu dDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSkKIAkJTWVyZ2VBcHBlbmRT dGF0ZSAqbWFTdGF0ZSA9IChNZXJnZUFwcGVuZFN0YXRlICopIGNoaWxkX25vZGU7CiAJCWludAkJ CWk7CiAKLQkJZm9yIChpID0gMDsgaSA8IG1hU3RhdGUtPm1zX25wbGFuczsgaSsrKQotCQkJRXhl Y1NldFR1cGxlQm91bmQodHVwbGVzX25lZWRlZCwgbWFTdGF0ZS0+bWVyZ2VwbGFuc1tpXSk7CisJ CWZvciAoaSA9IDA7IGkgPCBtYVN0YXRlLT5hcy5ucGxhbnM7IGkrKykKKwkJCUV4ZWNTZXRUdXBs ZUJvdW5kKHR1cGxlc19uZWVkZWQsIG1hU3RhdGUtPmFzLnBsYW5zW2ldKTsKIAl9CiAJZWxzZSBp ZiAoSXNBKGNoaWxkX25vZGUsIFJlc3VsdFN0YXRlKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKaW5kZXggMDZmNDZmZTY1MDEuLjg4ZTBkN2YwYjUxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCkBAIC0xMjksOSArMTI5LDkgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKgogCSAqIGNyZWF0ZSBuZXcgQXBwZW5k U3RhdGUgZm9yIG91ciBhcHBlbmQgbm9kZQogCSAqLwotCWFwcGVuZHN0YXRlLT5wcy5wbGFuID0g KFBsYW4gKikgbm9kZTsKLQlhcHBlbmRzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7Ci0JYXBwZW5k c3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNBcHBlbmQ7CisJYXBwZW5kc3RhdGUtPmFzLnBz LnBsYW4gPSAoUGxhbiAqKSBub2RlOworCWFwcGVuZHN0YXRlLT5hcy5wcy5zdGF0ZSA9IGVzdGF0 ZTsKKwlhcHBlbmRzdGF0ZS0+YXMucHMuRXhlY1Byb2NOb2RlID0gRXhlY0FwcGVuZDsKIAogCS8q IExldCBjaG9vc2VfbmV4dF9zdWJwbGFuXyogZnVuY3Rpb24gaGFuZGxlIHNldHRpbmcgdGhlIGZp cnN0IHN1YnBsYW4gKi8KIAlhcHBlbmRzdGF0ZS0+YXNfd2hpY2hwbGFuID0gSU5WQUxJRF9TVUJQ TEFOX0lOREVYOwpAQCAtMTM5LDcgKzEzOSw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0g ZmFsc2U7CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0 aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDAp CisJaWYgKG5vZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBy dW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIEV4ZWNJbml0QXBw ZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBs YW5zIHRvIGluaXRpYWxpemUgKHZhbGlkc3VicGxhbnMpIGJ5IHRha2luZyBpbnRvIGFjY291bnQg dGhlCiAJCSAqIHJlc3VsdCBvZiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZyBpZiBhbnkuCiAJ CSAqLwotCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmYXBwZW5k c3RhdGUtPnBzLAotCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyks Ci0JCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCi0JCQkJCQkJCQkJCQkgIG5v ZGUtPmFwcHJlbGlkcywKKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5p bmcoJmFwcGVuZHN0YXRlLT5hcy5wcywKKwkJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+ YWIuc3VicGxhbnMpLAorCQkJCQkJCQkJCQkJICBub2RlLT5hYi5wYXJ0X3BydW5lX2luZGV4LAor CQkJCQkJCQkJCQkJICBub2RlLT5hYi5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCQkgICZ2YWxpZHN1 YnBsYW5zKTsKLQkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKKwkJ YXBwZW5kc3RhdGUtPmFzLnBydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1z X251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCiAJCS8qCkBAIC0xNjMsMjMgKzE2MywyMyBA QCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQkgKi8KIAkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDAp CiAJCXsKLQkJCWFwcGVuZHN0YXRlLT5hc192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2Uo TlVMTCwgMCwgbnBsYW5zIC0gMSk7Ci0JCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxhbnNf aWRlbnRpZmllZCA9IHRydWU7CisJCQlhcHBlbmRzdGF0ZS0+YXMudmFsaWRfc3VicGxhbnMgPSBi bXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOworCQkJYXBwZW5kc3RhdGUtPmFzLnZh bGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCQl9CiAJfQogCWVsc2UKIAl7Ci0JCW5w bGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKTsKKwkJbnBsYW5zID0gbGlzdF9s ZW5ndGgobm9kZS0+YWIuc3VicGxhbnMpOwogCiAJCS8qCiAJCSAqIFdoZW4gcnVuLXRpbWUgcGFy dGl0aW9uIHBydW5pbmcgaXMgbm90IGVuYWJsZWQgd2UgY2FuIGp1c3QgbWFyayBhbGwKIAkJICog c3VicGxhbnMgYXMgdmFsaWQ7IHRoZXkgbXVzdCBhbHNvIGFsbCBiZSBpbml0aWFsaXplZC4KIAkJ ICovCiAJCUFzc2VydChucGxhbnMgPiAwKTsKLQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBs YW5zID0gdmFsaWRzdWJwbGFucyA9CisJCWFwcGVuZHN0YXRlLT5hcy52YWxpZF9zdWJwbGFucyA9 IHZhbGlkc3VicGxhbnMgPQogCQkJYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsK LQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwotCQlh cHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBOVUxMOworCQlhcHBlbmRzdGF0ZS0+YXMudmFs aWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCWFwcGVuZHN0YXRlLT5hcy5wcnVuZV9z dGF0ZSA9IE5VTEw7CiAJfQogCiAJYXBwZW5kcGxhbnN0YXRlcyA9IHBhbGxvY19hcnJheShQbGFu U3RhdGUgKiwgbnBsYW5zKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWkgPSAtMTsKIAl3aGlsZSAo KGkgPSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFucywgaSkpID49IDApCiAJewotCQlQbGFu CSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPmFwcGVuZHBsYW5zLCBpKTsK KwkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5hYi5zdWJwbGFu cywgaSk7CiAKIAkJLyoKIAkJICogUmVjb3JkIGFzeW5jIHN1YnBsYW5zLiAgV2hlbiBleGVjdXRp bmcgRXZhbFBsYW5RdWFsLCB3ZSB0cmVhdCB0aGVtCkBAIC0yMjAsOCArMjIwLDggQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl9CiAK IAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKLQlhcHBl bmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwotCWFwcGVuZHN0YXRlLT5h c19ucGxhbnMgPSBucGxhbnM7CisJYXBwZW5kc3RhdGUtPmFzLnBsYW5zID0gYXBwZW5kcGxhbnN0 YXRlczsKKwlhcHBlbmRzdGF0ZS0+YXMubnBsYW5zID0gbnBsYW5zOwogCiAJLyoKIAkgKiBJbml0 aWFsaXplIEFwcGVuZCdzIHJlc3VsdCB0dXBsZSB0eXBlIGFuZCBzbG90LiAgSWYgdGhlIGNoaWxk IHBsYW5zIGFsbApAQCAtMjM1LDMwICsyMzUsMzAgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRvcHMgPSBFeGVjR2V0Q29t bW9uU2xvdE9wcyhhcHBlbmRwbGFuc3RhdGVzLCBqKTsKIAlpZiAoYXBwZW5kb3BzICE9IE5VTEwp CiAJewotCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZhcHBlbmRzdGF0ZS0+cHMsIGFwcGVu ZG9wcyk7CisJCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJmFwcGVuZHN0YXRlLT5hcy5wcywg YXBwZW5kb3BzKTsKIAl9CiAJZWxzZQogCXsKLQkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgm YXBwZW5kc3RhdGUtPnBzLCAmVFRTT3BzVmlydHVhbCk7CisJCUV4ZWNJbml0UmVzdWx0VHVwbGVT bG90VEwoJmFwcGVuZHN0YXRlLT5hcy5wcywgJlRUU09wc1ZpcnR1YWwpOwogCQkvKiBzaG93IHRo YXQgdGhlIG91dHB1dCBzbG90IHR5cGUgaXMgbm90IGZpeGVkICovCi0JCWFwcGVuZHN0YXRlLT5w cy5yZXN1bHRvcHNzZXQgPSB0cnVlOwotCQlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQg PSBmYWxzZTsKKwkJYXBwZW5kc3RhdGUtPmFzLnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CisJCWFw cGVuZHN0YXRlLT5hcy5wcy5yZXN1bHRvcHNmaXhlZCA9IGZhbHNlOwogCX0KIAogCS8qIEluaXRp YWxpemUgYXN5bmMgc3RhdGUgKi8KLQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNwbGFucyA9IGFzeW5j cGxhbnM7Ci0JYXBwZW5kc3RhdGUtPmFzX25hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7Ci0JYXBw ZW5kc3RhdGUtPmFzX2FzeW5jcmVxdWVzdHMgPSBOVUxMOwotCWFwcGVuZHN0YXRlLT5hc19hc3lu Y3Jlc3VsdHMgPSBOVUxMOworCWFwcGVuZHN0YXRlLT5hcy5hc3luY3BsYW5zID0gYXN5bmNwbGFu czsKKwlhcHBlbmRzdGF0ZS0+YXMubmFzeW5jcGxhbnMgPSBuYXN5bmNwbGFuczsKKwlhcHBlbmRz dGF0ZS0+YXMuYXN5bmNyZXF1ZXN0cyA9IE5VTEw7CisJYXBwZW5kc3RhdGUtPmFzLmFzeW5jcmVz dWx0cyA9IE5VTEw7CiAJYXBwZW5kc3RhdGUtPmFzX25hc3luY3Jlc3VsdHMgPSAwOwogCWFwcGVu ZHN0YXRlLT5hc19uYXN5bmNyZW1haW4gPSAwOwotCWFwcGVuZHN0YXRlLT5hc19uZWVkcmVxdWVz dCA9IE5VTEw7Ci0JYXBwZW5kc3RhdGUtPmFzX2V2ZW50c2V0ID0gTlVMTDsKLQlhcHBlbmRzdGF0 ZS0+YXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisJYXBwZW5kc3RhdGUtPmFzLm5lZWRyZXF1 ZXN0ID0gTlVMTDsKKwlhcHBlbmRzdGF0ZS0+YXMuZXZlbnRzZXQgPSBOVUxMOworCWFwcGVuZHN0 YXRlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKIAogCWlmIChuYXN5bmNwbGFucyA+IDAp CiAJewotCQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXF1ZXN0cyA9IHBhbGxvYzBfYXJyYXkoQXN5 bmNSZXF1ZXN0ICosIG5wbGFucyk7CisJCWFwcGVuZHN0YXRlLT5hcy5hc3luY3JlcXVlc3RzID0g cGFsbG9jMF9hcnJheShBc3luY1JlcXVlc3QgKiwgbnBsYW5zKTsKIAogCQlpID0gLTE7CiAJCXdo aWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihhc3luY3BsYW5zLCBpKSkgPj0gMCkKQEAgLTI3Mywx MiArMjczLDEyIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJCQlhcmVxLT5yZXF1ZXN0X2NvbXBsZXRlID0gZmFsc2U7CiAJCQlhcmVx LT5yZXN1bHQgPSBOVUxMOwogCi0JCQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXSA9 IGFyZXE7CisJCQlhcHBlbmRzdGF0ZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXSA9IGFyZXE7CiAJCX0K IAotCQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXN1bHRzID0gcGFsbG9jMF9hcnJheShUdXBsZVRh YmxlU2xvdCAqLCBuYXN5bmNwbGFucyk7CisJCWFwcGVuZHN0YXRlLT5hcy5hc3luY3Jlc3VsdHMg PSBwYWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5hc3luY3BsYW5zKTsKIAotCQlpZiAo YXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCisJCWlmIChhcHBlbmRz dGF0ZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJCWNsYXNzaWZ5X21hdGNoaW5n X3N1YnBsYW5zKGFwcGVuZHN0YXRlKTsKIAl9CiAKQEAgLTI4Niw3ICsyODYsNyBAQCBFeGVjSW5p dEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIE1p c2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRpb24KIAkgKi8KIAotCWFwcGVuZHN0YXRlLT5wcy5wc19Q cm9qSW5mbyA9IE5VTEw7CisJYXBwZW5kc3RhdGUtPmFzLnBzLnBzX1Byb2pJbmZvID0gTlVMTDsK IAogCS8qIEZvciBwYXJhbGxlbCBxdWVyeSwgdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gbGF0ZXIu ICovCiAJYXBwZW5kc3RhdGUtPmNob29zZV9uZXh0X3N1YnBsYW4gPSBjaG9vc2VfbmV4dF9zdWJw bGFuX2xvY2FsbHk7CkBAIC0zMTYsMTEgKzMxNiwxMSBAQCBFeGVjQXBwZW5kKFBsYW5TdGF0ZSAq cHN0YXRlKQogCQlBc3NlcnQoIW5vZGUtPmFzX3N5bmNkb25lKTsKIAogCQkvKiBOb3RoaW5nIHRv IGRvIGlmIHRoZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCQlpZiAobm9kZS0+YXNfbnBsYW5zID09 IDApCi0JCQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKKwkJaWYgKG5vZGUtPmFzLm5wbGFucyA9PSAwKQorCQkJcmV0dXJuIEV4ZWNDbGVhclR1cGxl KG5vZGUtPmFzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKIAkJLyogSWYgdGhlcmUgYXJlIGFu eSBhc3luYyBzdWJwbGFucywgYmVnaW4gZXhlY3V0aW5nIHRoZW0uICovCi0JCWlmIChub2RlLT5h c19uYXN5bmNwbGFucyA+IDApCisJCWlmIChub2RlLT5hcy5uYXN5bmNwbGFucyA+IDApCiAJCQlF eGVjQXBwZW5kQXN5bmNCZWdpbihub2RlKTsKIAogCQkvKgpAQCAtMzI4LDExICszMjgsMTEgQEAg RXhlY0FwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICogcHJvY2VlZGluZy4KIAkJICovCiAJ CWlmICghbm9kZS0+Y2hvb3NlX25leHRfc3VicGxhbihub2RlKSAmJiBub2RlLT5hc19uYXN5bmNy ZW1haW4gPT0gMCkKLQkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRU dXBsZVNsb3QpOworCQkJcmV0dXJuIEV4ZWNDbGVhclR1cGxlKG5vZGUtPmFzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7CiAKIAkJQXNzZXJ0KG5vZGUtPmFzX3N5bmNkb25lIHx8CiAJCQkgICAobm9k ZS0+YXNfd2hpY2hwbGFuID49IDAgJiYKLQkJCQlub2RlLT5hc193aGljaHBsYW4gPCBub2RlLT5h c19ucGxhbnMpKTsKKwkJCQlub2RlLT5hc193aGljaHBsYW4gPCBub2RlLT5hcy5ucGxhbnMpKTsK IAogCQkvKiBBbmQgd2UncmUgaW5pdGlhbGl6ZWQuICovCiAJCW5vZGUtPmFzX2JlZ3VuID0gdHJ1 ZTsKQEAgLTM0NywxOSArMzQ3LDE5IEBAIEV4ZWNBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJ CS8qCiAJCSAqIHRyeSB0byBnZXQgYSB0dXBsZSBmcm9tIGFuIGFzeW5jIHN1YnBsYW4gaWYgYW55 CiAJCSAqLwotCQlpZiAobm9kZS0+YXNfc3luY2RvbmUgfHwgIWJtc19pc19lbXB0eShub2RlLT5h c19uZWVkcmVxdWVzdCkpCisJCWlmIChub2RlLT5hc19zeW5jZG9uZSB8fCAhYm1zX2lzX2VtcHR5 KG5vZGUtPmFzLm5lZWRyZXF1ZXN0KSkKIAkJewogCQkJaWYgKEV4ZWNBcHBlbmRBc3luY0dldE5l eHQobm9kZSwgJnJlc3VsdCkpCiAJCQkJcmV0dXJuIHJlc3VsdDsKIAkJCUFzc2VydCghbm9kZS0+ YXNfc3luY2RvbmUpOwotCQkJQXNzZXJ0KGJtc19pc19lbXB0eShub2RlLT5hc19uZWVkcmVxdWVz dCkpOworCQkJQXNzZXJ0KGJtc19pc19lbXB0eShub2RlLT5hcy5uZWVkcmVxdWVzdCkpOwogCQl9 CiAKIAkJLyoKIAkJICogZmlndXJlIG91dCB3aGljaCBzeW5jIHN1YnBsYW4gd2UgYXJlIGN1cnJl bnRseSBwcm9jZXNzaW5nCiAJCSAqLwotCQlBc3NlcnQobm9kZS0+YXNfd2hpY2hwbGFuID49IDAg JiYgbm9kZS0+YXNfd2hpY2hwbGFuIDwgbm9kZS0+YXNfbnBsYW5zKTsKLQkJc3Vibm9kZSA9IG5v ZGUtPmFwcGVuZHBsYW5zW25vZGUtPmFzX3doaWNocGxhbl07CisJCUFzc2VydChub2RlLT5hc193 aGljaHBsYW4gPj0gMCAmJiBub2RlLT5hc193aGljaHBsYW4gPCBub2RlLT5hcy5ucGxhbnMpOwor CQlzdWJub2RlID0gbm9kZS0+YXMucGxhbnNbbm9kZS0+YXNfd2hpY2hwbGFuXTsKIAogCQkvKgog CQkgKiBnZXQgYSB0dXBsZSBmcm9tIHRoZSBzdWJwbGFuCkBAIC0zODYsNyArMzg2LDcgQEAgRXhl Y0FwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAogCQkvKiBjaG9vc2UgbmV3IHN5bmMgc3VicGxh bjsgaWYgbm8gc3luYy9hc3luYyBzdWJwbGFucywgd2UncmUgZG9uZSAqLwogCQlpZiAoIW5vZGUt PmNob29zZV9uZXh0X3N1YnBsYW4obm9kZSkgJiYgbm9kZS0+YXNfbmFzeW5jcmVtYWluID09IDAp Ci0JCQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsK KwkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5hcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwogCX0KIH0KIApAQCAtNDA4LDggKzQwOCw4IEBAIEV4ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUg Km5vZGUpCiAJLyoKIAkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQogCSAqLwotCWFw cGVuZHBsYW5zID0gbm9kZS0+YXBwZW5kcGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+YXNfbnBsYW5z OworCWFwcGVuZHBsYW5zID0gbm9kZS0+YXMucGxhbnM7CisJbnBsYW5zID0gbm9kZS0+YXMubnBs YW5zOwogCiAJLyoKIAkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKQEAgLTQyMSw3 ICs0MjEsNyBAQCBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogdm9pZAogRXhlY1Jl U2NhbkFwcGVuZChBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlpbnQJCQluYXN5bmNwbGFucyA9IG5v ZGUtPmFzX25hc3luY3BsYW5zOworCWludAkJCW5hc3luY3BsYW5zID0gbm9kZS0+YXMubmFzeW5j cGxhbnM7CiAJaW50CQkJaTsKIAogCS8qIElmIHRoZXJlIGFyZSBhbnkgYXN5bmMgc3VicGxhbnMs IHJlc2V0IGFzeW5jIHJlcXVlc3RzIG1hZGUgZm9yIHRoZW0uICovCkBAIC00MzMsMjcgKzQzMywy NyBAQCBFeGVjUmVTY2FuQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogCSAqIHdlJ2QgYmV0dGVy IHVuc2V0IHRoZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQgZm9y CiAJICogdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgogCSAqLwotCWlmIChub2RlLT5hc19wcnVu ZV9zdGF0ZSAmJgotCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKLQkJCQkJbm9kZS0+ YXNfcHJ1bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCisJaWYgKG5vZGUtPmFzLnBydW5lX3N0YXRl ICYmCisJCWJtc19vdmVybGFwKG5vZGUtPmFzLnBzLmNoZ1BhcmFtLAorCQkJCQlub2RlLT5hcy5w cnVuZV9zdGF0ZS0+ZXhlY3BhcmFtaWRzKSkKIAl7Ci0JCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z X2lkZW50aWZpZWQgPSBmYWxzZTsKLQkJYm1zX2ZyZWUobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMp OwotCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9IE5VTEw7Ci0JCWJtc19mcmVlKG5vZGUtPmFz X3ZhbGlkX2FzeW5jcGxhbnMpOwotCQlub2RlLT5hc192YWxpZF9hc3luY3BsYW5zID0gTlVMTDsK KwkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IGZhbHNlOworCQlibXNfZnJl ZShub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7CisJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0g TlVMTDsKKwkJYm1zX2ZyZWUobm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucyk7CisJCW5vZGUtPmFz LnZhbGlkX2FzeW5jcGxhbnMgPSBOVUxMOwogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBub2RlLT5h c19ucGxhbnM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+YXMubnBsYW5zOyBpKyspCiAJ ewotCQlQbGFuU3RhdGUgICpzdWJub2RlID0gbm9kZS0+YXBwZW5kcGxhbnNbaV07CisJCVBsYW5T dGF0ZSAgKnN1Ym5vZGUgPSBub2RlLT5hcy5wbGFuc1tpXTsKIAogCQkvKgogCQkgKiBFeGVjUmVT Y2FuIGRvZXNuJ3Qga25vdyBhYm91dCBteSBzdWJwbGFucywgc28gSSBoYXZlIHRvIGRvCiAJCSAq IGNoYW5nZWQtcGFyYW1ldGVyIHNpZ25hbGluZyBteXNlbGYuCiAJCSAqLwotCQlpZiAobm9kZS0+ cHMuY2hnUGFyYW0gIT0gTlVMTCkKLQkJCVVwZGF0ZUNoYW5nZWRQYXJhbVNldChzdWJub2RlLCBu b2RlLT5wcy5jaGdQYXJhbSk7CisJCWlmIChub2RlLT5hcy5wcy5jaGdQYXJhbSAhPSBOVUxMKQor CQkJVXBkYXRlQ2hhbmdlZFBhcmFtU2V0KHN1Ym5vZGUsIG5vZGUtPmFzLnBzLmNoZ1BhcmFtKTsK IAogCQkvKgogCQkgKiBJZiBjaGdQYXJhbSBvZiBzdWJub2RlIGlzIG5vdCBudWxsIHRoZW4gcGxh biB3aWxsIGJlIHJlLXNjYW5uZWQgYnkKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBFeGVjQXBwZW5kRXN0 aW1hdGUoQXBwZW5kU3RhdGUgKm5vZGUsCiB7CiAJbm9kZS0+cHN0YXRlX2xlbiA9CiAJCWFkZF9z aXplKG9mZnNldG9mKFBhcmFsbGVsQXBwZW5kU3RhdGUsIHBhX2ZpbmlzaGVkKSwKLQkJCQkgc2l6 ZW9mKGJvb2wpICogbm9kZS0+YXNfbnBsYW5zKTsKKwkJCQkgc2l6ZW9mKGJvb2wpICogbm9kZS0+ YXMubnBsYW5zKTsKIAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwg bm9kZS0+cHN0YXRlX2xlbik7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0 b3IsIDEpOwpAQCAtNTA5LDcgKzUwOSw3IEBAIEV4ZWNBcHBlbmRJbml0aWFsaXplRFNNKEFwcGVu ZFN0YXRlICpub2RlLAogCXBzdGF0ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2Rl LT5wc3RhdGVfbGVuKTsKIAltZW1zZXQocHN0YXRlLCAwLCBub2RlLT5wc3RhdGVfbGVuKTsKIAlM V0xvY2tJbml0aWFsaXplKCZwc3RhdGUtPnBhX2xvY2ssIExXVFJBTkNIRV9QQVJBTExFTF9BUFBF TkQpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+cHMucGxhbi0+cGxhbl9ub2Rl X2lkLCBwc3RhdGUpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+YXMucHMucGxh bi0+cGxhbl9ub2RlX2lkLCBwc3RhdGUpOwogCiAJbm9kZS0+YXNfcHN0YXRlID0gcHN0YXRlOwog CW5vZGUtPmNob29zZV9uZXh0X3N1YnBsYW4gPSBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFk ZXI7CkBAIC01MjcsNyArNTI3LDcgQEAgRXhlY0FwcGVuZFJlSW5pdGlhbGl6ZURTTShBcHBlbmRT dGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCVBhcmFsbGVsQXBwZW5kU3RhdGUg KnBzdGF0ZSA9IG5vZGUtPmFzX3BzdGF0ZTsKIAogCXBzdGF0ZS0+cGFfbmV4dF9wbGFuID0gMDsK LQltZW1zZXQocHN0YXRlLT5wYV9maW5pc2hlZCwgMCwgc2l6ZW9mKGJvb2wpICogbm9kZS0+YXNf bnBsYW5zKTsKKwltZW1zZXQocHN0YXRlLT5wYV9maW5pc2hlZCwgMCwgc2l6ZW9mKGJvb2wpICog bm9kZS0+YXMubnBsYW5zKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQwLDcgKzU0MCw3IEBAIEV4 ZWNBcHBlbmRSZUluaXRpYWxpemVEU00oQXBwZW5kU3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4 dCAqcGN4dCkKIHZvaWQKIEV4ZWNBcHBlbmRJbml0aWFsaXplV29ya2VyKEFwcGVuZFN0YXRlICpu b2RlLCBQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3Y3h0KQogewotCW5vZGUtPmFzX3BzdGF0ZSA9 IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwg ZmFsc2UpOworCW5vZGUtPmFzX3BzdGF0ZSA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5v ZGUtPmFzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPmNob29zZV9uZXh0 X3N1YnBsYW4gPSBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXI7CiB9CiAKQEAgLTU1OCw3 ICs1NTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3RhdGUgKm5vZGUp CiAJaW50CQkJbmV4dHBsYW47CiAKIAkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4g dGhlcmUgYXJlIG5vIHN1YnBsYW5zICovCi0JQXNzZXJ0KG5vZGUtPmFzX25wbGFucyA+IDApOwor CUFzc2VydChub2RlLT5hcy5ucGxhbnMgPiAwKTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgc3lu Y2RvbmUgKi8KIAlpZiAobm9kZS0+YXNfc3luY2RvbmUpCkBAIC01NzMsMzMgKzU3MywzMyBAQCBj aG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3RhdGUgKm5vZGUpCiAJICovCiAJaWYg KHdoaWNocGxhbiA9PSBJTlZBTElEX1NVQlBMQU5fSU5ERVgpCiAJewotCQlpZiAobm9kZS0+YXNf bmFzeW5jcGxhbnMgPiAwKQorCQlpZiAobm9kZS0+YXMubmFzeW5jcGxhbnMgPiAwKQogCQl7CiAJ CQkvKiBXZSdkIGhhdmUgZmlsbGVkIGFzX3ZhbGlkX3N1YnBsYW5zIGFscmVhZHkgKi8KLQkJCUFz c2VydChub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsKKwkJCUFzc2VydChub2Rl LT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsKIAkJfQotCQllbHNlIGlmICghbm9kZS0+ YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwkJZWxzZSBpZiAoIW5vZGUtPmFzLnZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCXsKLQkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0K LQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl LCBOVUxMKTsKLQkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwor CQkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPQorCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5hcy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOworCQkJbm9kZS0+YXMudmFsaWRf c3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAJCX0KIAogCQl3aGljaHBsYW4gPSAtMTsKIAl9 CiAKIAkvKiBFbnN1cmUgd2hpY2hwbGFuIGlzIHdpdGhpbiB0aGUgZXhwZWN0ZWQgcmFuZ2UgKi8K LQlBc3NlcnQod2hpY2hwbGFuID49IC0xICYmIHdoaWNocGxhbiA8PSBub2RlLT5hc19ucGxhbnMp OworCUFzc2VydCh3aGljaHBsYW4gPj0gLTEgJiYgd2hpY2hwbGFuIDw9IG5vZGUtPmFzLm5wbGFu cyk7CiAKLQlpZiAoU2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5wcy5zdGF0ZS0+ZXNfZGly ZWN0aW9uKSkKLQkJbmV4dHBsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMsIHdoaWNocGxhbik7CisJaWYgKFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+YXMu cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpCisJCW5leHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5v ZGUtPmFzLnZhbGlkX3N1YnBsYW5zLCB3aGljaHBsYW4pOwogCWVsc2UKLQkJbmV4dHBsYW4gPSBi bXNfcHJldl9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsIHdoaWNocGxhbik7CisJCW5l eHRwbGFuID0gYm1zX3ByZXZfbWVtYmVyKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zLCB3aGljaHBs YW4pOwogCiAJaWYgKG5leHRwbGFuIDwgMCkKIAl7CiAJCS8qIFNldCBhc19zeW5jZG9uZSBpZiBp biBhc3luYyBtb2RlICovCi0JCWlmIChub2RlLT5hc19uYXN5bmNwbGFucyA+IDApCisJCWlmIChu b2RlLT5hcy5uYXN5bmNwbGFucyA+IDApCiAJCQlub2RlLT5hc19zeW5jZG9uZSA9IHRydWU7CiAJ CXJldHVybiBmYWxzZTsKIAl9CkBAIC02MjMsMTAgKzYyMywxMCBAQCBjaG9vc2VfbmV4dF9zdWJw bGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJUGFyYWxsZWxBcHBlbmRTdGF0ZSAq cHN0YXRlID0gbm9kZS0+YXNfcHN0YXRlOwogCiAJLyogQmFja3dhcmQgc2NhbiBpcyBub3Qgc3Vw cG9ydGVkIGJ5IHBhcmFsbGVsLWF3YXJlIHBsYW5zICovCi0JQXNzZXJ0KFNjYW5EaXJlY3Rpb25J c0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpOworCUFzc2VydChTY2FuRGly ZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmFzLnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKTsKIAogCS8q IFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gc3VicGxhbnMgKi8K LQlBc3NlcnQobm9kZS0+YXNfbnBsYW5zID4gMCk7CisJQXNzZXJ0KG5vZGUtPmFzLm5wbGFucyA+ IDApOwogCiAJTFdMb2NrQWNxdWlyZSgmcHN0YXRlLT5wYV9sb2NrLCBMV19FWENMVVNJVkUpOwog CkBAIC02MzgsMTggKzYzOCwxOCBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBw ZW5kU3RhdGUgKm5vZGUpCiAJZWxzZQogCXsKIAkJLyogU3RhcnQgd2l0aCBsYXN0IHN1YnBsYW4u ICovCi0JCW5vZGUtPmFzX3doaWNocGxhbiA9IG5vZGUtPmFzX25wbGFucyAtIDE7CisJCW5vZGUt PmFzX3doaWNocGxhbiA9IG5vZGUtPmFzLm5wbGFucyAtIDE7CiAKIAkJLyoKIAkJICogSWYgd2Un dmUgeWV0IHRvIGRldGVybWluZSB0aGUgdmFsaWQgc3VicGxhbnMgdGhlbiBkbyBzbyBub3cuICBJ ZgogCQkgKiBydW4tdGltZSBwcnVuaW5nIGlzIGRpc2FibGVkIHRoZW4gdGhlIHZhbGlkIHN1YnBs YW5zIHdpbGwgYWx3YXlzIGJlCiAJCSAqIHNldCB0byBhbGwgc3VicGxhbnMuCiAJCSAqLwotCQlp ZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCisJCWlmICghbm9kZS0+YXMu dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJewotCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxh bnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwg ZmFsc2UsIE5VTEwpOwotCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRy dWU7CisJCQlub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKG5vZGUtPmFzLnBydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CisJCQlub2RlLT5hcy52 YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQkJLyoKIAkJCSAqIE1hcmsgZWFj aCBpbnZhbGlkIHBsYW4gYXMgZmluaXNoZWQgdG8gYWxsb3cgdGhlIGxvb3AgYmVsb3cgdG8KQEAg LTcwNSwxMCArNzA1LDEwIEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBlbmRT dGF0ZSAqbm9kZSkKIAlQYXJhbGxlbEFwcGVuZFN0YXRlICpwc3RhdGUgPSBub2RlLT5hc19wc3Rh dGU7CiAKIAkvKiBCYWNrd2FyZCBzY2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgcGFyYWxsZWwtYXdh cmUgcGxhbnMgKi8KLQlBc3NlcnQoU2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5wcy5zdGF0 ZS0+ZXNfZGlyZWN0aW9uKSk7CisJQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+ YXMucHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpOwogCiAJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNh bGxlZCB3aGVuIHRoZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCUFzc2VydChub2RlLT5hc19ucGxh bnMgPiAwKTsKKwlBc3NlcnQobm9kZS0+YXMubnBsYW5zID4gMCk7CiAKIAlMV0xvY2tBY3F1aXJl KCZwc3RhdGUtPnBhX2xvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTcyMSwxMSArNzIxLDExIEBA IGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiBy dW4tdGltZSBwcnVuaW5nIGlzIGRpc2FibGVkIHRoZW4gdGhlIHZhbGlkIHN1YnBsYW5zIHdpbGwg YWx3YXlzIGJlIHNldAogCSAqIHRvIGFsbCBzdWJwbGFucy4KIAkgKi8KLQllbHNlIGlmICghbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwllbHNlIGlmICghbm9kZS0+YXMudmFs aWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAl7Ci0JCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0K LQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Us IE5VTEwpOwotCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJ bm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPQorCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5v ZGUtPmFzLnBydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CisJCW5vZGUtPmFzLnZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCW1hcmtfaW52YWxpZF9zdWJwbGFuc19hc19maW5p c2hlZChub2RlKTsKIAl9CkBAIC03NDUsNyArNzQ1LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9m b3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCXsKIAkJaW50CQkJbmV4dHBsYW47CiAKLQkJ bmV4dHBsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsCisJCW5l eHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zLAogCQkJCQkJ CQkgICBwc3RhdGUtPnBhX25leHRfcGxhbik7CiAJCWlmIChuZXh0cGxhbiA+PSAwKQogCQl7CkBA IC03NTgsNyArNzU4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0 YXRlICpub2RlKQogCQkJICogVHJ5IGxvb3BpbmcgYmFjayB0byB0aGUgZmlyc3QgdmFsaWQgcGFy dGlhbCBwbGFuLCBpZiB0aGVyZSBpcwogCQkJICogb25lLiAgSWYgdGhlcmUgaXNuJ3QsIGFycmFu Z2UgdG8gYmFpbCBvdXQgYmVsb3cuCiAJCQkgKi8KLQkJCW5leHRwbGFuID0gYm1zX25leHRfbWVt YmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAorCQkJbmV4dHBsYW4gPSBibXNfbmV4dF9tZW1i ZXIobm9kZS0+YXMudmFsaWRfc3VicGxhbnMsCiAJCQkJCQkJCQkgICBub2RlLT5hc19maXJzdF9w YXJ0aWFsX3BsYW4gLSAxKTsKIAkJCXBzdGF0ZS0+cGFfbmV4dF9wbGFuID0KIAkJCQluZXh0cGxh biA8IDAgPyBub2RlLT5hc193aGljaHBsYW4gOiBuZXh0cGxhbjsKQEAgLTc4Myw3ICs3ODMsNyBA QCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAKIAkv KiBQaWNrIHRoZSBwbGFuIHdlIGZvdW5kLCBhbmQgYWR2YW5jZSBwYV9uZXh0X3BsYW4gb25lIG1v cmUgdGltZS4gKi8KIAlub2RlLT5hc193aGljaHBsYW4gPSBwc3RhdGUtPnBhX25leHRfcGxhbjsK LQlwc3RhdGUtPnBhX25leHRfcGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc192YWxpZF9z dWJwbGFucywKKwlwc3RhdGUtPnBhX25leHRfcGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5h cy52YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJCQkgICBwc3RhdGUtPnBhX25leHRfcGxhbik7CiAK IAkvKgpAQCAtNzkyLDcgKzc5Miw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihB cHBlbmRTdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAocHN0YXRlLT5wYV9uZXh0X3BsYW4gPCAwKQog CXsKLQkJaW50CQkJbmV4dHBsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMsCisJCWludAkJCW5leHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLnZhbGlk X3N1YnBsYW5zLAogCQkJCQkJCQkJCQkgICBub2RlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gLSAx KTsKIAogCQlpZiAobmV4dHBsYW4gPj0gMCkKQEAgLTgzNCwxNiArODM0LDE2IEBAIG1hcmtfaW52 YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChBcHBlbmRTdGF0ZSAqbm9kZSkKIAlBc3NlcnQobm9k ZS0+YXNfcHN0YXRlKTsKIAogCS8qIFNob3VsZG4ndCBoYXZlIGJlZW4gY2FsbGVkIHdoZW4gcnVu LXRpbWUgcHJ1bmluZyBpcyBub3QgZW5hYmxlZCAqLwotCUFzc2VydChub2RlLT5hc19wcnVuZV9z dGF0ZSk7CisJQXNzZXJ0KG5vZGUtPmFzLnBydW5lX3N0YXRlKTsKIAogCS8qIE5vdGhpbmcgdG8g ZG8gaWYgYWxsIHBsYW5zIGFyZSB2YWxpZCAqLwotCWlmIChibXNfbnVtX21lbWJlcnMobm9kZS0+ YXNfdmFsaWRfc3VicGxhbnMpID09IG5vZGUtPmFzX25wbGFucykKKwlpZiAoYm1zX251bV9tZW1i ZXJzKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zKSA9PSBub2RlLT5hcy5ucGxhbnMpCiAJCXJldHVy bjsKIAogCS8qIE1hcmsgYWxsIG5vbi12YWxpZCBwbGFucyBhcyBmaW5pc2hlZCAqLwotCWZvciAo aSA9IDA7IGkgPCBub2RlLT5hc19ucGxhbnM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+ YXMubnBsYW5zOyBpKyspCiAJewotCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgbm9kZS0+YXNfdmFs aWRfc3VicGxhbnMpKQorCQlpZiAoIWJtc19pc19tZW1iZXIoaSwgbm9kZS0+YXMudmFsaWRfc3Vi cGxhbnMpKQogCQkJbm9kZS0+YXNfcHN0YXRlLT5wYV9maW5pc2hlZFtpXSA9IHRydWU7CiAJfQog fQpAQCAtODY1LDI3ICs4NjUsMjcgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUg Km5vZGUpCiAJaW50CQkJaTsKIAogCS8qIEJhY2t3YXJkIHNjYW4gaXMgbm90IHN1cHBvcnRlZCBi eSBhc3luYy1hd2FyZSBBcHBlbmRzLiAqLwotCUFzc2VydChTY2FuRGlyZWN0aW9uSXNGb3J3YXJk KG5vZGUtPnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKTsKKwlBc3NlcnQoU2NhbkRpcmVjdGlvbklz Rm9yd2FyZChub2RlLT5hcy5wcy5zdGF0ZS0+ZXNfZGlyZWN0aW9uKSk7CiAKIAkvKiBXZSBzaG91 bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHN1YnBsYW5zICovCi0JQXNzZXJ0 KG5vZGUtPmFzX25wbGFucyA+IDApOworCUFzc2VydChub2RlLT5hcy5ucGxhbnMgPiAwKTsKIAog CS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gYXN5bmMgc3Vi cGxhbnMuICovCi0JQXNzZXJ0KG5vZGUtPmFzX25hc3luY3BsYW5zID4gMCk7CisJQXNzZXJ0KG5v ZGUtPmFzLm5hc3luY3BsYW5zID4gMCk7CiAKIAkvKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5l IHRoZSB2YWxpZCBzdWJwbGFucyB0aGVuIGRvIHNvIG5vdy4gKi8KLQlpZiAoIW5vZGUtPmFzX3Zh bGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCisJaWYgKCFub2RlLT5hcy52YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkKQogCXsKLQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7Ci0JCW5v ZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOworCQlub2RlLT5hcy52YWxp ZF9zdWJwbGFucyA9CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMucHJ1bmVf c3RhdGUsIGZhbHNlLCBOVUxMKTsKKwkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmll ZCA9IHRydWU7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CiAJfQogCiAJ LyogSW5pdGlhbGl6ZSBzdGF0ZSB2YXJpYWJsZXMuICovCi0Jbm9kZS0+YXNfc3luY2RvbmUgPSBi bXNfaXNfZW1wdHkobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMpOwotCW5vZGUtPmFzX25hc3luY3Jl bWFpbiA9IGJtc19udW1fbWVtYmVycyhub2RlLT5hc192YWxpZF9hc3luY3BsYW5zKTsKKwlub2Rl LT5hc19zeW5jZG9uZSA9IGJtc19pc19lbXB0eShub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7CisJ bm9kZS0+YXNfbmFzeW5jcmVtYWluID0gYm1zX251bV9tZW1iZXJzKG5vZGUtPmFzLnZhbGlkX2Fz eW5jcGxhbnMpOwogCiAJLyogTm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gdmFsaWQgYXN5 bmMgc3VicGxhbnMuICovCiAJaWYgKG5vZGUtPmFzX25hc3luY3JlbWFpbiA9PSAwKQpAQCAtODkz LDkgKzg5Myw5IEBAIEV4ZWNBcHBlbmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCiAJ LyogTWFrZSBhIHJlcXVlc3QgZm9yIGVhY2ggb2YgdGhlIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAq LwogCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRf YXN5bmNwbGFucywgaSkpID49IDApCisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUt PmFzLnZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQogCXsKLQkJQXN5bmNSZXF1ZXN0ICphcmVx ID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9k ZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKIAogCQlBc3NlcnQoYXJlcS0+cmVxdWVzdF9pbmRleCA9 PSBpKTsKIAkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19wZW5kaW5nKTsKQEAgLTk0Nyw3ICs5NDcs NyBAQCBFeGVjQXBwZW5kQXN5bmNHZXROZXh0KEFwcGVuZFN0YXRlICpub2RlLCBUdXBsZVRhYmxl U2xvdCAqKnJlc3VsdCkKIAlpZiAobm9kZS0+YXNfc3luY2RvbmUpCiAJewogCQlBc3NlcnQobm9k ZS0+YXNfbmFzeW5jcmVtYWluID09IDApOwotCQkqcmVzdWx0ID0gRXhlY0NsZWFyVHVwbGUobm9k ZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwkJKnJlc3VsdCA9IEV4ZWNDbGVhclR1cGxlKG5v ZGUtPmFzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAt OTY3LDcgKzk2Nyw3IEBAIEV4ZWNBcHBlbmRBc3luY1JlcXVlc3QoQXBwZW5kU3RhdGUgKm5vZGUs IFR1cGxlVGFibGVTbG90ICoqcmVzdWx0KQogCWludAkJCWk7CiAKIAkvKiBOb3RoaW5nIHRvIGRv IGlmIHRoZXJlIGFyZSBubyBhc3luYyBzdWJwbGFucyBuZWVkaW5nIGEgbmV3IHJlcXVlc3QuICov Ci0JaWYgKGJtc19pc19lbXB0eShub2RlLT5hc19uZWVkcmVxdWVzdCkpCisJaWYgKGJtc19pc19l bXB0eShub2RlLT5hcy5uZWVkcmVxdWVzdCkpCiAJewogCQlBc3NlcnQobm9kZS0+YXNfbmFzeW5j cmVzdWx0cyA9PSAwKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtOTgwLDE3ICs5ODAsMTcgQEAgRXhl Y0FwcGVuZEFzeW5jUmVxdWVzdChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipy ZXN1bHQpCiAJaWYgKG5vZGUtPmFzX25hc3luY3Jlc3VsdHMgPiAwKQogCXsKIAkJLS1ub2RlLT5h c19uYXN5bmNyZXN1bHRzOwotCQkqcmVzdWx0ID0gbm9kZS0+YXNfYXN5bmNyZXN1bHRzW25vZGUt PmFzX25hc3luY3Jlc3VsdHNdOworCQkqcmVzdWx0ID0gbm9kZS0+YXMuYXN5bmNyZXN1bHRzW25v ZGUtPmFzX25hc3luY3Jlc3VsdHNdOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKIAkvKiBNYWtlIGEg bmV3IHJlcXVlc3QgZm9yIGVhY2ggb2YgdGhlIGFzeW5jIHN1YnBsYW5zIHRoYXQgbmVlZCBpdC4g Ki8KLQluZWVkcmVxdWVzdCA9IG5vZGUtPmFzX25lZWRyZXF1ZXN0OwotCW5vZGUtPmFzX25lZWRy ZXF1ZXN0ID0gTlVMTDsKKwluZWVkcmVxdWVzdCA9IG5vZGUtPmFzLm5lZWRyZXF1ZXN0OworCW5v ZGUtPmFzLm5lZWRyZXF1ZXN0ID0gTlVMTDsKIAlpID0gLTE7CiAJd2hpbGUgKChpID0gYm1zX25l eHRfbWVtYmVyKG5lZWRyZXF1ZXN0LCBpKSkgPj0gMCkKIAl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJl cSA9IG5vZGUtPmFzX2FzeW5jcmVxdWVzdHNbaV07CisJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5v ZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07CiAKIAkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwog CQlFeGVjQXN5bmNSZXF1ZXN0KGFyZXEpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgRXhlY0FwcGVu ZEFzeW5jUmVxdWVzdChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQp CiAJaWYgKG5vZGUtPmFzX25hc3luY3Jlc3VsdHMgPiAwKQogCXsKIAkJLS1ub2RlLT5hc19uYXN5 bmNyZXN1bHRzOwotCQkqcmVzdWx0ID0gbm9kZS0+YXNfYXN5bmNyZXN1bHRzW25vZGUtPmFzX25h c3luY3Jlc3VsdHNdOworCQkqcmVzdWx0ID0gbm9kZS0+YXMuYXN5bmNyZXN1bHRzW25vZGUtPmFz X25hc3luY3Jlc3VsdHNdOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKQEAgLTEwMTcsNyArMTAxNyw3 IEBAIEV4ZWNBcHBlbmRBc3luY1JlcXVlc3QoQXBwZW5kU3RhdGUgKm5vZGUsIFR1cGxlVGFibGVT bG90ICoqcmVzdWx0KQogc3RhdGljIHZvaWQKIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBl bmRTdGF0ZSAqbm9kZSkKIHsKLQlpbnQJCQluZXZlbnRzID0gbm9kZS0+YXNfbmFzeW5jcGxhbnMg KyAyOworCWludAkJCW5ldmVudHMgPSBub2RlLT5hcy5uYXN5bmNwbGFucyArIDI7CiAJbG9uZwkJ dGltZW91dCA9IG5vZGUtPmFzX3N5bmNkb25lID8gLTEgOiAwOwogCVdhaXRFdmVudAlvY2N1cnJl ZF9ldmVudFtFVkVOVF9CVUZGRVJfU0laRV07CiAJaW50CQkJbm9jY3VycmVkOwpAQCAtMTAyNiwx NiArMTAyNiwxNiBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUgKm5vZGUp CiAJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyB2YWxpZCBh c3luYyBzdWJwbGFucy4gKi8KIAlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVtYWluID4gMCk7CiAK LQlBc3NlcnQobm9kZS0+YXNfZXZlbnRzZXQgPT0gTlVMTCk7Ci0Jbm9kZS0+YXNfZXZlbnRzZXQg PSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVudFJlc291cmNlT3duZXIsIG5ldmVudHMpOwotCUFk ZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzX2V2ZW50c2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQ R0lOVkFMSURfU09DS0VULAorCUFzc2VydChub2RlLT5hcy5ldmVudHNldCA9PSBOVUxMKTsKKwlu b2RlLT5hcy5ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25l ciwgbmV2ZW50cyk7CisJQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+YXMuZXZlbnRzZXQsIFdMX0VY SVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCiAJCQkJCSAgTlVMTCwgTlVMTCk7CiAK IAkvKiBHaXZlIGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4g Ki8KIAlpID0gLTE7Ci0Jd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzX2FzeW5j cGxhbnMsIGkpKSA+PSAwKQorCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy5h c3luY3BsYW5zLCBpKSkgPj0gMCkKIAl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFz X2FzeW5jcmVxdWVzdHNbaV07CisJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5j cmVxdWVzdHNbaV07CiAKIAkJaWYgKGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpCiAJCQlFeGVjQXN5 bmNDb25maWd1cmVXYWl0KGFyZXEpOwpAQCAtMTA0NSwxMCArMTA0NSwxMCBAQCBFeGVjQXBwZW5k QXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJICogTm8gbmVlZCBmb3IgZnVydGhl ciBwcm9jZXNzaW5nIGlmIG5vbmUgb2YgdGhlIHN1YnBsYW5zIGNvbmZpZ3VyZWQgYW55CiAJICog ZXZlbnRzLgogCSAqLwotCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhub2RlLT5hc19l dmVudHNldCkgPT0gMSkKKwlpZiAoR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMobm9kZS0+YXMu ZXZlbnRzZXQpID09IDEpCiAJewotCQlGcmVlV2FpdEV2ZW50U2V0KG5vZGUtPmFzX2V2ZW50c2V0 KTsKLQkJbm9kZS0+YXNfZXZlbnRzZXQgPSBOVUxMOworCQlGcmVlV2FpdEV2ZW50U2V0KG5vZGUt PmFzLmV2ZW50c2V0KTsKKwkJbm9kZS0+YXMuZXZlbnRzZXQgPSBOVUxMOwogCQlyZXR1cm47CiAJ fQogCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5k U3RhdGUgKm5vZGUpCiAJICogd2UgY2Fubm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBo YXMgcG9zc2libHkgYmVlbiBjb3BpZWQgdG8gb3RoZXIKIAkgKiBleHRlbnNpb25zIHRvby4KIAkg Ki8KLQlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfTEFUQ0hfU0VULCBQ R0lOVkFMSURfU09DS0VULAorCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzLmV2ZW50c2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCiAJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CiAK IAkvKiBSZXR1cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwu ICovCkBAIC0xMDc1LDEwICsxMDc1LDEwIEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBl bmRTdGF0ZSAqbm9kZSkKIAkgKiBJZiB0aGUgdGltZW91dCBpcyAtMSwgd2FpdCB1bnRpbCBhdCBs ZWFzdCBvbmUgZXZlbnQgb2NjdXJzLiAgSWYgdGhlCiAJICogdGltZW91dCBpcyAwLCBwb2xsIGZv ciBldmVudHMsIGJ1dCBkbyBub3Qgd2FpdCBhdCBhbGwuCiAJICovCi0Jbm9jY3VycmVkID0gV2Fp dEV2ZW50U2V0V2FpdChub2RlLT5hc19ldmVudHNldCwgdGltZW91dCwgb2NjdXJyZWRfZXZlbnQs CisJbm9jY3VycmVkID0gV2FpdEV2ZW50U2V0V2FpdChub2RlLT5hcy5ldmVudHNldCwgdGltZW91 dCwgb2NjdXJyZWRfZXZlbnQsCiAJCQkJCQkJCSBuZXZlbnRzLCBXQUlUX0VWRU5UX0FQUEVORF9S RUFEWSk7Ci0JRnJlZVdhaXRFdmVudFNldChub2RlLT5hc19ldmVudHNldCk7Ci0Jbm9kZS0+YXNf ZXZlbnRzZXQgPSBOVUxMOworCUZyZWVXYWl0RXZlbnRTZXQobm9kZS0+YXMuZXZlbnRzZXQpOwor CW5vZGUtPmFzLmV2ZW50c2V0ID0gTlVMTDsKIAlpZiAobm9jY3VycmVkID09IDApCiAJCXJldHVy bjsKIApAQCAtMTEzMCw3ICsxMTMwLDcgQEAgRXhlY0FwcGVuZEFzeW5jUmVzZXQoQXBwZW5kU3Rh dGUgKm5vZGUpCiAJaW50CQkJaTsKIAogCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hl biB0aGVyZSBhcmUgbm8gYXN5bmMgc3VicGxhbnMuICovCi0JQXNzZXJ0KG5vZGUtPmFzX25hc3lu Y3BsYW5zID4gMCk7CisJQXNzZXJ0KG5vZGUtPmFzLm5hc3luY3BsYW5zID4gMCk7CiAKIAkvKgog CSAqIERyYWluIHBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgaWYgYW55LiAgV2UgZm9yY2UgdGhlIGFz X3N5bmNkb25lIGZsYWcgdG8KQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgRXhlY0FwcGVuZEFzeW5j UmVzZXQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCSAqIG5ldyByZXN1bHRzLgogCQkgKi8KIAkJbm9k ZS0+YXNfbmFzeW5jcmVzdWx0cyA9IDA7Ci0JCWJtc19mcmVlKG5vZGUtPmFzX25lZWRyZXF1ZXN0 KTsKLQkJbm9kZS0+YXNfbmVlZHJlcXVlc3QgPSBOVUxMOworCQlibXNfZnJlZShub2RlLT5hcy5u ZWVkcmVxdWVzdCk7CisJCW5vZGUtPmFzLm5lZWRyZXF1ZXN0ID0gTlVMTDsKIAogCQlpID0gLTE7 Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc19hc3luY3BsYW5zLCBpKSkg Pj0gMCkKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzLmFzeW5jcGxhbnMs IGkpKSA+PSAwKQogCQl7Ci0JCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hc19hc3luY3Jl cXVlc3RzW2ldOworCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0 c1tpXTsKIAogCQkJaWYgKGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpCiAJCQl7CkBAIC0xMTc2LDkg KzExNzYsOSBAQCBFeGVjQXBwZW5kQXN5bmNSZXNldChBcHBlbmRTdGF0ZSAqbm9kZSkKIAogCS8q IFJlc2V0IGFzeW5jIHJlcXVlc3RzLiAqLwogCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIobm9kZS0+YXNfYXN5bmNwbGFucywgaSkpID49IDApCisJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKG5vZGUtPmFzLmFzeW5jcGxhbnMsIGkpKSA+PSAwKQogCXsKLQkJQXN5bmNS ZXF1ZXN0ICphcmVxID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJQXN5bmNSZXF1ZXN0 ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKIAogCQlBc3NlcnQoIWFyZXEtPmNh bGxiYWNrX3BlbmRpbmcpOwogCQlhcmVxLT5yZXF1ZXN0X2NvbXBsZXRlID0gZmFsc2U7CkBAIC0x MTg3LDcgKzExODcsNyBAQCBFeGVjQXBwZW5kQXN5bmNSZXNldChBcHBlbmRTdGF0ZSAqbm9kZSkK IAogCS8qIFJlc2V0IHN0YXRlIHZhcmlhYmxlcy4gKi8KIAlBc3NlcnQobm9kZS0+YXNfbmFzeW5j cmVzdWx0cyA9PSAwKTsKLQlBc3NlcnQobm9kZS0+YXNfbmVlZHJlcXVlc3QgPT0gTlVMTCk7CisJ QXNzZXJ0KG5vZGUtPmFzLm5lZWRyZXF1ZXN0ID09IE5VTEwpOwogCW5vZGUtPmFzX25hc3luY3Jl bWFpbiA9IDA7CiB9CiAKQEAgLTEyMjQsMTQgKzEyMjQsMTQgQEAgRXhlY0FzeW5jQXBwZW5kUmVz cG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQogCX0KIAogCS8qIFNhdmUgcmVzdWx0IHNvIHdlIGNh biByZXR1cm4gaXQuICovCi0JQXNzZXJ0KG5vZGUtPmFzX25hc3luY3Jlc3VsdHMgPCBub2RlLT5h c19uYXN5bmNwbGFucyk7Ci0Jbm9kZS0+YXNfYXN5bmNyZXN1bHRzW25vZGUtPmFzX25hc3luY3Jl c3VsdHMrK10gPSBzbG90OworCUFzc2VydChub2RlLT5hc19uYXN5bmNyZXN1bHRzIDwgbm9kZS0+ YXMubmFzeW5jcGxhbnMpOworCW5vZGUtPmFzLmFzeW5jcmVzdWx0c1tub2RlLT5hc19uYXN5bmNy ZXN1bHRzKytdID0gc2xvdDsKIAogCS8qCiAJICogTWFyayB0aGUgc3VicGxhbiB0aGF0IHJldHVy bmVkIGEgcmVzdWx0IGFzIHJlYWR5IGZvciBhIG5ldyByZXF1ZXN0LiAgV2UKIAkgKiBkb24ndCBs YXVuY2ggYW5vdGhlciBvbmUgaGVyZSBpbW1lZGlhdGVseSBiZWNhdXNlIGl0IG1pZ2h0IGNvbXBs ZXRlLgogCSAqLwotCW5vZGUtPmFzX25lZWRyZXF1ZXN0ID0gYm1zX2FkZF9tZW1iZXIobm9kZS0+ YXNfbmVlZHJlcXVlc3QsCisJbm9kZS0+YXMubmVlZHJlcXVlc3QgPSBibXNfYWRkX21lbWJlcihu b2RlLT5hcy5uZWVkcmVxdWVzdCwKIAkJCQkJCQkJCQkgIGFyZXEtPnJlcXVlc3RfaW5kZXgpOwog fQogCkBAIC0xMjQ4LDExICsxMjQ4LDExIEBAIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKEFw cGVuZFN0YXRlICpub2RlKQogewogCUJpdG1hcHNldCAgKnZhbGlkX2FzeW5jcGxhbnM7CiAKLQlB c3NlcnQobm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCk7Ci0JQXNzZXJ0KG5vZGUt PmFzX3ZhbGlkX2FzeW5jcGxhbnMgPT0gTlVMTCk7CisJQXNzZXJ0KG5vZGUtPmFzLnZhbGlkX3N1 YnBsYW5zX2lkZW50aWZpZWQpOworCUFzc2VydChub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID09 IE5VTEwpOwogCiAJLyogTm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gdmFsaWQgc3VicGxh bnMuICovCi0JaWYgKGJtc19pc19lbXB0eShub2RlLT5hc192YWxpZF9zdWJwbGFucykpCisJaWYg KGJtc19pc19lbXB0eShub2RlLT5hcy52YWxpZF9zdWJwbGFucykpCiAJewogCQlub2RlLT5hc19z eW5jZG9uZSA9IHRydWU7CiAJCW5vZGUtPmFzX25hc3luY3JlbWFpbiA9IDA7CkBAIC0xMjYwLDIw ICsxMjYwLDIwIEBAIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKEFwcGVuZFN0YXRlICpub2Rl KQogCX0KIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1 YnBsYW5zLiAqLwotCWlmICghYm1zX292ZXJsYXAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsIG5v ZGUtPmFzX2FzeW5jcGxhbnMpKQorCWlmICghYm1zX292ZXJsYXAobm9kZS0+YXMudmFsaWRfc3Vi cGxhbnMsIG5vZGUtPmFzLmFzeW5jcGxhbnMpKQogCXsKIAkJbm9kZS0+YXNfbmFzeW5jcmVtYWlu ID0gMDsKIAkJcmV0dXJuOwogCX0KIAogCS8qIEdldCB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8K LQl2YWxpZF9hc3luY3BsYW5zID0gYm1zX2ludGVyc2VjdChub2RlLT5hc19hc3luY3BsYW5zLAot CQkJCQkJCQkJIG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zKTsKKwl2YWxpZF9hc3luY3BsYW5zID0g Ym1zX2ludGVyc2VjdChub2RlLT5hcy5hc3luY3BsYW5zLAorCQkJCQkJCQkJIG5vZGUtPmFzLnZh bGlkX3N1YnBsYW5zKTsKIAogCS8qIEFkanVzdCB0aGUgdmFsaWQgc3VicGxhbnMgdG8gY29udGFp biBzeW5jIHN1YnBsYW5zIG9ubHkuICovCi0Jbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBibXNf ZGVsX21lbWJlcnMobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsCisJbm9kZS0+YXMudmFsaWRfc3Vi cGxhbnMgPSBibXNfZGVsX21lbWJlcnMobm9kZS0+YXMudmFsaWRfc3VicGxhbnMsCiAJCQkJCQkJ CQkJCSAgdmFsaWRfYXN5bmNwbGFucyk7CiAKIAkvKiBTYXZlIHZhbGlkIGFzeW5jIHN1YnBsYW5z LiAqLwotCW5vZGUtPmFzX3ZhbGlkX2FzeW5jcGxhbnMgPSB2YWxpZF9hc3luY3BsYW5zOworCW5v ZGUtPmFzLnZhbGlkX2FzeW5jcGxhbnMgPSB2YWxpZF9hc3luY3BsYW5zOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCAwMTczMDc0ZDg1ZC4uZTRjZGJjYzVlYjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04MCwxMiArODAsMTIg QEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJLyoKIAkgKiBjcmVhdGUgbmV3IE1lcmdlQXBwZW5kU3RhdGUgZm9yIG91 ciBub2RlCiAJICovCi0JbWVyZ2VzdGF0ZS0+cHMucGxhbiA9IChQbGFuICopIG5vZGU7Ci0JbWVy Z2VzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7Ci0JbWVyZ2VzdGF0ZS0+cHMuRXhlY1Byb2NOb2Rl ID0gRXhlY01lcmdlQXBwZW5kOworCW1lcmdlc3RhdGUtPmFzLnBzLnBsYW4gPSAoUGxhbiAqKSBu b2RlOworCW1lcmdlc3RhdGUtPmFzLnBzLnN0YXRlID0gZXN0YXRlOworCW1lcmdlc3RhdGUtPmFz LnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAogCS8qIElmIHJ1bi10aW1lIHBh cnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYg KG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwlpZiAobm9kZS0+YWIucGFydF9wcnVuZV9p bmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIApAQCAt OTQsMTIgKzk0LDEyIEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFucyB0byBpbml0aWFsaXplICh2 YWxpZHN1YnBsYW5zKSBieSB0YWtpbmcgaW50byBhY2NvdW50IHRoZQogCQkgKiByZXN1bHQgb2Yg cGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgaWYgYW55LgogCQkgKi8KLQkJcHJ1bmVzdGF0ZSA9 IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoJm1lcmdlc3RhdGUtPnBzLAotCQkJCQkJCQkJ CQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+ cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAorCQlwcnVu ZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmbWVyZ2VzdGF0ZS0+YXMucHMs CisJCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFiLnN1YnBsYW5zKSwKKwkJCQkJCQkJ CQkJCSAgbm9kZS0+YWIucGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJCSAgbm9kZS0+YWIu YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7Ci0JCW1lcmdlc3RhdGUt Pm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKKwkJbWVyZ2VzdGF0ZS0+YXMucHJ1bmVfc3Rh dGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFu cyk7CiAKIAkJLyoKQEAgLTEwOCwyNSArMTA4LDI1IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBsYXRlciBj YWxscyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwogCQlpZiAoIXBydW5lc3Rh dGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKLQkJCW1lcmdlc3RhdGUtPm1zX3ZhbGlk X3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKKwkJCW1lcmdl c3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMg LSAxKTsKIAl9CiAJZWxzZQogCXsKLQkJbnBsYW5zID0gbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2Vw bGFucyk7CisJCW5wbGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFiLnN1YnBsYW5zKTsKIAogCQkv KgogCQkgKiBXaGVuIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIG5vdCBlbmFibGVkIHdl IGNhbiBqdXN0IG1hcmsgYWxsCiAJCSAqIHN1YnBsYW5zIGFzIHZhbGlkOyB0aGV5IG11c3QgYWxz byBhbGwgYmUgaW5pdGlhbGl6ZWQuCiAJCSAqLwogCQlBc3NlcnQobnBsYW5zID4gMCk7Ci0JCW1l cmdlc3RhdGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0gdmFsaWRzdWJwbGFucyA9CisJCW1lcmdlc3Rh dGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gdmFsaWRzdWJwbGFucyA9CiAJCQlibXNfYWRkX3Jhbmdl KE5VTEwsIDAsIG5wbGFucyAtIDEpOwotCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IE5V TEw7CisJCW1lcmdlc3RhdGUtPmFzLnBydW5lX3N0YXRlID0gTlVMTDsKIAl9CiAKIAltZXJnZXBs YW5zdGF0ZXMgPSBwYWxsb2NfYXJyYXkoUGxhblN0YXRlICosIG5wbGFucyk7Ci0JbWVyZ2VzdGF0 ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKLQltZXJnZXN0YXRlLT5tc19ucGxhbnMg PSBucGxhbnM7CisJbWVyZ2VzdGF0ZS0+YXMucGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7CisJbWVy Z2VzdGF0ZS0+YXMubnBsYW5zID0gbnBsYW5zOwogCiAJbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSBw YWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5wbGFucyk7CiAJbWVyZ2VzdGF0ZS0+bXNf aGVhcCA9IGJpbmFyeWhlYXBfYWxsb2NhdGUobnBsYW5zLCBoZWFwX2NvbXBhcmVfc2xvdHMsCkBA IC0xNDAsNyArMTQwLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaSA9IC0xOwogCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcih2YWxpZHN1YnBsYW5zLCBpKSkgPj0gMCkKIAl7Ci0JCVBsYW4JICAgKmluaXRO b2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+bWVyZ2VwbGFucywgaSk7CisJCVBsYW4JICAg KmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+YWIuc3VicGxhbnMsIGkpOwogCiAJ CW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVm bGFncyk7CiAJfQpAQCAtMTU3LDIwICsxNTcsMjAgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VvcHMgPSBF eGVjR2V0Q29tbW9uU2xvdE9wcyhtZXJnZXBsYW5zdGF0ZXMsIGopOwogCWlmIChtZXJnZW9wcyAh PSBOVUxMKQogCXsKLQkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmbWVyZ2VzdGF0ZS0+cHMs IG1lcmdlb3BzKTsKKwkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmbWVyZ2VzdGF0ZS0+YXMu cHMsIG1lcmdlb3BzKTsKIAl9CiAJZWxzZQogCXsKLQkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RU TCgmbWVyZ2VzdGF0ZS0+cHMsICZUVFNPcHNWaXJ0dWFsKTsKKwkJRXhlY0luaXRSZXN1bHRUdXBs ZVNsb3RUTCgmbWVyZ2VzdGF0ZS0+YXMucHMsICZUVFNPcHNWaXJ0dWFsKTsKIAkJLyogc2hvdyB0 aGF0IHRoZSBvdXRwdXQgc2xvdCB0eXBlIGlzIG5vdCBmaXhlZCAqLwotCQltZXJnZXN0YXRlLT5w cy5yZXN1bHRvcHNzZXQgPSB0cnVlOwotCQltZXJnZXN0YXRlLT5wcy5yZXN1bHRvcHNmaXhlZCA9 IGZhbHNlOworCQltZXJnZXN0YXRlLT5hcy5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOworCQltZXJn ZXN0YXRlLT5hcy5wcy5yZXN1bHRvcHNmaXhlZCA9IGZhbHNlOwogCX0KIAogCS8qCiAJICogTWlz Y2VsbGFuZW91cyBpbml0aWFsaXphdGlvbgogCSAqLwotCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJ bmZvID0gTlVMTDsKKwltZXJnZXN0YXRlLT5hcy5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CiAKIAkv KgogCSAqIGluaXRpYWxpemUgc29ydC1rZXkgaW5mb3JtYXRpb24KQEAgLTIyNSwyNiArMjI1LDI2 IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAlpZiAoIW5vZGUtPm1zX2lu aXRpYWxpemVkKQogCXsKIAkJLyogTm90aGluZyB0byBkbyBpZiBhbGwgc3VicGxhbnMgd2VyZSBw cnVuZWQgKi8KLQkJaWYgKG5vZGUtPm1zX25wbGFucyA9PSAwKQotCQkJcmV0dXJuIEV4ZWNDbGVh clR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCWlmIChub2RlLT5hcy5ucGxh bnMgPT0gMCkKKwkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5hcy5wcy5wc19SZXN1bHRU dXBsZVNsb3QpOwogCiAJCS8qCiAJCSAqIElmIHdlJ3ZlIHlldCB0byBkZXRlcm1pbmUgdGhlIHZh bGlkIHN1YnBsYW5zIHRoZW4gZG8gc28gbm93LiAgSWYKIAkJICogcnVuLXRpbWUgcHJ1bmluZyBp cyBkaXNhYmxlZCB0aGVuIHRoZSB2YWxpZCBzdWJwbGFucyB3aWxsIGFsd2F5cyBiZQogCQkgKiBz ZXQgdG8gYWxsIHN1YnBsYW5zLgogCQkgKi8KLQkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5z ID09IE5VTEwpCi0JCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CisJCWlmIChu b2RlLT5hcy52YWxpZF9zdWJwbGFucyA9PSBOVUxMKQorCQkJbm9kZS0+YXMudmFsaWRfc3VicGxh bnMgPQorCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hcy5wcnVuZV9zdGF0ZSwg ZmFsc2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZpcnN0IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUg Zmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBsYW4sCiAJCSAqIGFuZCBzZXQgdXAgdGhl IGhlYXAuCiAJCSAqLwogCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihu b2RlLT5tc192YWxpZF9zdWJwbGFucywgaSkpID49IDApCisJCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihub2RlLT5hcy52YWxpZF9zdWJwbGFucywgaSkpID49IDApCiAJCXsKLQkJCW5vZGUt Pm1zX3Nsb3RzW2ldID0gRXhlY1Byb2NOb2RlKG5vZGUtPm1lcmdlcGxhbnNbaV0pOworCQkJbm9k ZS0+bXNfc2xvdHNbaV0gPSBFeGVjUHJvY05vZGUobm9kZS0+YXMucGxhbnNbaV0pOwogCQkJaWYg KCFUdXBJc051bGwobm9kZS0+bXNfc2xvdHNbaV0pKQogCQkJCWJpbmFyeWhlYXBfYWRkX3Vub3Jk ZXJlZChub2RlLT5tc19oZWFwLCBJbnQzMkdldERhdHVtKGkpKTsKIAkJfQpAQCAtMjYyLDcgKzI2 Miw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICogdG8gbm90IHB1 bGwgdHVwbGVzIHVudGlsIG5lY2Vzc2FyeS4pCiAJCSAqLwogCQlpID0gRGF0dW1HZXRJbnQzMihi aW5hcnloZWFwX2ZpcnN0KG5vZGUtPm1zX2hlYXApKTsKLQkJbm9kZS0+bXNfc2xvdHNbaV0gPSBF eGVjUHJvY05vZGUobm9kZS0+bWVyZ2VwbGFuc1tpXSk7CisJCW5vZGUtPm1zX3Nsb3RzW2ldID0g RXhlY1Byb2NOb2RlKG5vZGUtPmFzLnBsYW5zW2ldKTsKIAkJaWYgKCFUdXBJc051bGwobm9kZS0+ bXNfc2xvdHNbaV0pKQogCQkJYmluYXJ5aGVhcF9yZXBsYWNlX2ZpcnN0KG5vZGUtPm1zX2hlYXAs IEludDMyR2V0RGF0dW0oaSkpOwogCQllbHNlCkBAIC0yNzIsNyArMjcyLDcgQEAgRXhlY01lcmdl QXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCWlmIChiaW5hcnloZWFwX2VtcHR5KG5vZGUtPm1z X2hlYXApKQogCXsKIAkJLyogQWxsIHRoZSBzdWJwbGFucyBhcmUgZXhoYXVzdGVkLCBhbmQgc28g aXMgdGhlIGhlYXAgKi8KLQkJcmVzdWx0ID0gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVz dWx0VHVwbGVTbG90KTsKKwkJcmVzdWx0ID0gRXhlY0NsZWFyVHVwbGUobm9kZS0+YXMucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKIAl9CiAJZWxzZQogCXsKQEAgLTM0Myw4ICszNDMsOCBAQCBFeGVj RW5kTWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGdldCBpbmZv cm1hdGlvbiBmcm9tIHRoZSBub2RlCiAJICovCi0JbWVyZ2VwbGFucyA9IG5vZGUtPm1lcmdlcGxh bnM7Ci0JbnBsYW5zID0gbm9kZS0+bXNfbnBsYW5zOworCW1lcmdlcGxhbnMgPSBub2RlLT5hcy5w bGFuczsKKwlucGxhbnMgPSBub2RlLT5hcy5ucGxhbnM7CiAKIAkvKgogCSAqIHNodXQgZG93biBl YWNoIG9mIHRoZSBzdWJzY2FucwpAQCAtMzYzLDI0ICszNjMsMjQgQEAgRXhlY1JlU2Nhbk1lcmdl QXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiAJICogd2UnZCBiZXR0ZXIgdW5zZXQgdGhl IHZhbGlkIHN1YnBsYW5zIHNvIHRoYXQgdGhleSBhcmUgcmVzZWxlY3RlZCBmb3IKIAkgKiB0aGUg bmV3IHBhcmFtZXRlciB2YWx1ZXMuCiAJICovCi0JaWYgKG5vZGUtPm1zX3BydW5lX3N0YXRlICYm Ci0JCWJtc19vdmVybGFwKG5vZGUtPnBzLmNoZ1BhcmFtLAotCQkJCQlub2RlLT5tc19wcnVuZV9z dGF0ZS0+ZXhlY3BhcmFtaWRzKSkKKwlpZiAobm9kZS0+YXMucHJ1bmVfc3RhdGUgJiYKKwkJYm1z X292ZXJsYXAobm9kZS0+YXMucHMuY2hnUGFyYW0sCisJCQkJCW5vZGUtPmFzLnBydW5lX3N0YXRl LT5leGVjcGFyYW1pZHMpKQogCXsKLQkJYm1zX2ZyZWUobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMp OwotCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9IE5VTEw7CisJCWJtc19mcmVlKG5vZGUtPmFz LnZhbGlkX3N1YnBsYW5zKTsKKwkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPSBOVUxMOwogCX0K IAotCWZvciAoaSA9IDA7IGkgPCBub2RlLT5tc19ucGxhbnM7IGkrKykKKwlmb3IgKGkgPSAwOyBp IDwgbm9kZS0+YXMubnBsYW5zOyBpKyspCiAJewotCQlQbGFuU3RhdGUgICpzdWJub2RlID0gbm9k ZS0+bWVyZ2VwbGFuc1tpXTsKKwkJUGxhblN0YXRlICAqc3Vibm9kZSA9IG5vZGUtPmFzLnBsYW5z W2ldOwogCiAJCS8qCiAJCSAqIEV4ZWNSZVNjYW4gZG9lc24ndCBrbm93IGFib3V0IG15IHN1YnBs YW5zLCBzbyBJIGhhdmUgdG8gZG8KIAkJICogY2hhbmdlZC1wYXJhbWV0ZXIgc2lnbmFsaW5nIG15 c2VsZi4KIAkJICovCi0JCWlmIChub2RlLT5wcy5jaGdQYXJhbSAhPSBOVUxMKQotCQkJVXBkYXRl Q2hhbmdlZFBhcmFtU2V0KHN1Ym5vZGUsIG5vZGUtPnBzLmNoZ1BhcmFtKTsKKwkJaWYgKG5vZGUt PmFzLnBzLmNoZ1BhcmFtICE9IE5VTEwpCisJCQlVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoc3Vibm9k ZSwgbm9kZS0+YXMucHMuY2hnUGFyYW0pOwogCiAJCS8qCiAJCSAqIElmIGNoZ1BhcmFtIG9mIHN1 Ym5vZGUgaXMgbm90IG51bGwgdGhlbiBwbGFuIHdpbGwgYmUgcmUtc2Nhbm5lZCBieQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9u b2RlRnVuY3MuYwppbmRleCA5NTEyYTZhODI0YS4uNmQ5MWEzYTVjNjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jCkBAIC00NzY1LDE0ICs0NzY1LDkgQEAgcGxhbnN0YXRlX3RyZWVfd2Fsa2VyX2ltcGwo UGxhblN0YXRlICpwbGFuc3RhdGUsCiAJc3dpdGNoIChub2RlVGFnKHBsYW4pKQogCXsKIAkJY2Fz ZSBUX0FwcGVuZDoKLQkJCWlmIChwbGFuc3RhdGVfd2Fsa19tZW1iZXJzKCgoQXBwZW5kU3RhdGUg KikgcGxhbnN0YXRlKS0+YXBwZW5kcGxhbnMsCi0JCQkJCQkJCQkgICAoKEFwcGVuZFN0YXRlICop IHBsYW5zdGF0ZSktPmFzX25wbGFucywKLQkJCQkJCQkJCSAgIHdhbGtlciwgY29udGV4dCkpCi0J CQkJcmV0dXJuIHRydWU7Ci0JCQlicmVhazsKIAkJY2FzZSBUX01lcmdlQXBwZW5kOgotCQkJaWYg KHBsYW5zdGF0ZV93YWxrX21lbWJlcnMoKChNZXJnZUFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSkt Pm1lcmdlcGxhbnMsCi0JCQkJCQkJCQkgICAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRl KS0+bXNfbnBsYW5zLAorCQkJaWYgKHBsYW5zdGF0ZV93YWxrX21lbWJlcnMoKChBcHBlbmRCYXNl U3RhdGUgKikgcGxhbnN0YXRlKS0+cGxhbnMsCisJCQkJCQkJCQkgICAoKEFwcGVuZEJhc2VTdGF0 ZSAqKSBwbGFuc3RhdGUpLT5ucGxhbnMsCiAJCQkJCQkJCQkgICB3YWxrZXIsIGNvbnRleHQpKQog CQkJCXJldHVybiB0cnVlOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKaW5kZXggNzg5ZDFhYzkwNjcuLmNjNWVlYTIwMTIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xMjUzLDEyICsxMjUzLDEyIEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJICogY2hpbGQgcGxhbnMsIHRvIG1ha2UgY3Jvc3MtY2hlY2tpbmcgdGhlIHNvcnQg aW5mbyBlYXNpZXIuCiAJICovCiAJcGxhbiA9IG1ha2VOb2RlKEFwcGVuZCk7Ci0JcGxhbi0+cGxh bi50YXJnZXRsaXN0ID0gdGxpc3Q7Ci0JcGxhbi0+cGxhbi5xdWFsID0gTklMOwotCXBsYW4tPnBs YW4ubGVmdHRyZWUgPSBOVUxMOwotCXBsYW4tPnBsYW4ucmlnaHR0cmVlID0gTlVMTDsKLQlwbGFu LT5hcHByZWxpZHMgPSByZWwtPnJlbGlkczsKLQlwbGFuLT5jaGlsZF9hcHBlbmRfcmVsaWRfc2V0 cyA9IGJlc3RfcGF0aC0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHM7CisJcGxhbi0+YWIucGxhbi50 YXJnZXRsaXN0ID0gdGxpc3Q7CisJcGxhbi0+YWIucGxhbi5xdWFsID0gTklMOworCXBsYW4tPmFi LnBsYW4ubGVmdHRyZWUgPSBOVUxMOworCXBsYW4tPmFiLnBsYW4ucmlnaHR0cmVlID0gTlVMTDsK KwlwbGFuLT5hYi5hcHByZWxpZHMgPSByZWwtPnJlbGlkczsKKwlwbGFuLT5hYi5jaGlsZF9hcHBl bmRfcmVsaWRfc2V0cyA9IGJlc3RfcGF0aC0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHM7CiAKIAlp ZiAocGF0aGtleXMgIT0gTklMKQogCXsKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIGNyZWF0ZV9hcHBl bmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxh Z3MpCiAJCQkJCQkJCQkJICAmbm9kZVNvcnRPcGVyYXRvcnMsCiAJCQkJCQkJCQkJICAmbm9kZUNv bGxhdGlvbnMsCiAJCQkJCQkJCQkJICAmbm9kZU51bGxzRmlyc3QpOwotCQl0bGlzdF93YXNfY2hh bmdlZCA9IChvcmlnX3RsaXN0X2xlbmd0aCAhPSBsaXN0X2xlbmd0aChwbGFuLT5wbGFuLnRhcmdl dGxpc3QpKTsKKwkJdGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9sZW5ndGggIT0gbGlz dF9sZW5ndGgocGxhbi0+YWIucGxhbi50YXJnZXRsaXN0KSk7CiAJfQogCiAJLyogSWYgYXBwcm9w cmlhdGUsIGNvbnNpZGVyIGFzeW5jIGFwcGVuZCAqLwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgY3Jl YXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgs IGludCBmbGFncykKIAl9CiAKIAkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdl IGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KLQlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0g LTE7CisJcGxhbi0+YWIucGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKIAkgKiBJZiBhbnkg cXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0 aW9uCkBAIC0xNDEyLDE2ICsxNDEyLDE2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1 YnBhdGhzLAotCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOworCQkJcGxhbi0+YWIucGFydF9w cnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJ CQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkJIHBydW5lcXVh bCk7CiAJfQogCi0JcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKKwlwbGFuLT5hYi5zdWJw bGFucyA9IHN1YnBsYW5zOwogCXBsYW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxh bi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7CiAK LQljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgp OworCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPmFiLnBsYW4sIChQYXRoICopIGJlc3Rf cGF0aCk7CiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNv cnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpAQCAtMTQzMCw5ICsxNDMwLDkgQEAgY3Jl YXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgs IGludCBmbGFncykKIAkgKi8KIAlpZiAodGxpc3Rfd2FzX2NoYW5nZWQgJiYgKGZsYWdzICYgKENQ X0VYQUNUX1RMSVNUIHwgQ1BfU01BTExfVExJU1QpKSkKIAl7Ci0JCXRsaXN0ID0gbGlzdF9jb3B5 X2hlYWQocGxhbi0+cGxhbi50YXJnZXRsaXN0LCBvcmlnX3RsaXN0X2xlbmd0aCk7CisJCXRsaXN0 ID0gbGlzdF9jb3B5X2hlYWQocGxhbi0+YWIucGxhbi50YXJnZXRsaXN0LCBvcmlnX3RsaXN0X2xl bmd0aCk7CiAJCXJldHVybiBpbmplY3RfcHJvamVjdGlvbl9wbGFuKChQbGFuICopIHBsYW4sIHRs aXN0LAotCQkJCQkJCQkJICBwbGFuLT5wbGFuLnBhcmFsbGVsX3NhZmUpOworCQkJCQkJCQkJICBw bGFuLT5hYi5wbGFuLnBhcmFsbGVsX3NhZmUpOwogCX0KIAllbHNlCiAJCXJldHVybiAoUGxhbiAq KSBwbGFuOwpAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBs YW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCSBpbnQg ZmxhZ3MpCiB7CiAJTWVyZ2VBcHBlbmQgKm5vZGUgPSBtYWtlTm9kZShNZXJnZUFwcGVuZCk7Ci0J UGxhbgkgICAqcGxhbiA9ICZub2RlLT5wbGFuOworCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+YWIu cGxhbjsKIAlMaXN0CSAgICp0bGlzdCA9IGJ1aWxkX3BhdGhfdGxpc3Qocm9vdCwgJmJlc3RfcGF0 aC0+cGF0aCk7CiAJaW50CQkJb3JpZ190bGlzdF9sZW5ndGggPSBsaXN0X2xlbmd0aCh0bGlzdCk7 CiAJYm9vbAkJdGxpc3Rfd2FzX2NoYW5nZWQ7CkBAIC0xNDcwLDggKzE0NzAsOCBAQCBjcmVhdGVf bWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVz dF9wYXRoLAogCXBsYW4tPnF1YWwgPSBOSUw7CiAJcGxhbi0+bGVmdHRyZWUgPSBOVUxMOwogCXBs YW4tPnJpZ2h0dHJlZSA9IE5VTEw7Ci0Jbm9kZS0+YXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7Ci0J bm9kZS0+Y2hpbGRfYXBwZW5kX3JlbGlkX3NldHMgPSBiZXN0X3BhdGgtPmNoaWxkX2FwcGVuZF9y ZWxpZF9zZXRzOworCW5vZGUtPmFiLmFwcHJlbGlkcyA9IHJlbC0+cmVsaWRzOworCW5vZGUtPmFi LmNoaWxkX2FwcGVuZF9yZWxpZF9zZXRzID0gYmVzdF9wYXRoLT5jaGlsZF9hcHBlbmRfcmVsaWRf c2V0czsKIAogCS8qCiAJICogQ29tcHV0ZSBzb3J0IGNvbHVtbiBpbmZvLCBhbmQgYWRqdXN0IE1l cmdlQXBwZW5kJ3MgdGxpc3QgYXMgbmVlZGVkLgpAQCAtMTU3Nyw3ICsxNTc3LDcgQEAgY3JlYXRl X21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJl c3RfcGF0aCwKIAl9CiAKIAkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNh biB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KLQlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7 CisJbm9kZS0+YWIucGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKIAkgKiBJZiBhbnkgcXVh bHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9u CkBAIC0xNTk0LDEyICsxNTk0LDEyIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3Bh dGgtPnBhdGgucGFyYW1faW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkK LQkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9v dCwgcmVsLAotCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJ CQkJCQkJICBwcnVuZXF1YWwpOworCQkJbm9kZS0+YWIucGFydF9wcnVuZV9pbmRleCA9IG1ha2Vf cGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCQkJIGJlc3RfcGF0 aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkJIHBydW5lcXVhbCk7CiAJfQogCi0Jbm9kZS0+ bWVyZ2VwbGFucyA9IHN1YnBsYW5zOworCW5vZGUtPmFiLnN1YnBsYW5zID0gc3VicGxhbnM7CiAK IAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1u cywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmlu ZGV4IDhhNjQxNDAyYTk2Li5mYmEzZGIyZGEwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYwpAQCAtMTQ3LDEyICsxNDcsOSBAQCBzdGF0aWMgdm9pZCBzZXRfZm9yZWlnbnNjYW5f cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIHN0YXRpYyB2b2lkIHNldF9jdXN0b21zY2Fu X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgIEN1c3RvbVNjYW4gKmNz Y2FuLAogCQkJCQkJCQkJICBpbnQgcnRvZmZzZXQpOwotc3RhdGljIFBsYW4gKnNldF9hcHBlbmRf cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJICAgQXBwZW5kICphcGxhbiwK LQkJCQkJCQkJICAgaW50IHJ0b2Zmc2V0KTsKLXN0YXRpYyBQbGFuICpzZXRfbWVyZ2VhcHBlbmRf cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJCQlNZXJnZUFwcGVuZCAqbXBs YW4sCi0JCQkJCQkJCQkJaW50IHJ0b2Zmc2V0KTsKK3N0YXRpYyBQbGFuICpzZXRfYXBwZW5kYmFz ZV9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJICAgQXBwZW5kQmFzZSAq cGxhbiwKKwkJCQkJCQkJCSAgIGludCBydG9mZnNldCk7CiBzdGF0aWMgdm9pZCBzZXRfaGFzaF9y ZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpOwog c3RhdGljIFJlbGlkcyBvZmZzZXRfcmVsaWRfc2V0KFJlbGlkcyByZWxpZHMsIGludCBydG9mZnNl dCk7CiBzdGF0aWMgTm9kZSAqZml4X3NjYW5fZXhwcihQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAq bm9kZSwKQEAgLTEyOTYsMTUgKzEyOTMsMTEgQEAgc2V0X3BsYW5fcmVmcyhQbGFubmVySW5mbyAq cm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KQogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2Ug VF9BcHBlbmQ6Ci0JCQkvKiBOZWVkcyBzcGVjaWFsIHRyZWF0bWVudCwgc2VlIGNvbW1lbnRzIGJl bG93ICovCi0JCQlyZXR1cm4gc2V0X2FwcGVuZF9yZWZlcmVuY2VzKHJvb3QsCi0JCQkJCQkJCQkJ IChBcHBlbmQgKikgcGxhbiwKLQkJCQkJCQkJCQkgcnRvZmZzZXQpOwogCQljYXNlIFRfTWVyZ2VB cHBlbmQ6CiAJCQkvKiBOZWVkcyBzcGVjaWFsIHRyZWF0bWVudCwgc2VlIGNvbW1lbnRzIGJlbG93 ICovCi0JCQlyZXR1cm4gc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMocm9vdCwKLQkJCQkJCQkJ CQkJICAoTWVyZ2VBcHBlbmQgKikgcGxhbiwKLQkJCQkJCQkJCQkJICBydG9mZnNldCk7CisJCQly ZXR1cm4gc2V0X2FwcGVuZGJhc2VfcmVmZXJlbmNlcyhyb290LAorCQkJCQkJCQkJCQkgKEFwcGVu ZEJhc2UgKikgcGxhbiwKKwkJCQkJCQkJCQkJIHJ0b2Zmc2V0KTsKIAkJY2FzZSBUX1JlY3Vyc2l2 ZVVuaW9uOgogCQkJLyogVGhpcyBkb2Vzbid0IGV2YWx1YXRlIHRhcmdldGxpc3Qgb3IgY2hlY2sg cXVhbHMgZWl0aGVyICovCiAJCQlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcyhwbGFuLCBydG9m ZnNldCk7CkBAIC0xNzgxLDcgKzE3NzQsNyBAQCBzZXRfY3VzdG9tc2Nhbl9yZWZlcmVuY2VzKFBs YW5uZXJJbmZvICpyb290LAogCiAvKgogICogcmVnaXN0ZXJfcGFydHBydW5laW5mbwotICoJCVN1 YnJvdXRpbmUgZm9yIHNldF9hcHBlbmRfcmVmZXJlbmNlcyBhbmQgc2V0X21lcmdlYXBwZW5kX3Jl ZmVyZW5jZXMKKyAqCQlTdWJyb3V0aW5lIGZvciBzZXRfYXBwZW5kYmFzZV9yZWZlcmVuY2VzCiAg KgogICogQWRkIHRoZSBQYXJ0aXRpb25QcnVuZUluZm8gZnJvbSByb290LT5wYXJ0UHJ1bmVJbmZv cyBhdCB0aGUgZ2l2ZW4gaW5kZXgKICAqIGludG8gUGxhbm5lckdsb2JhbC0+cGFydFBydW5lSW5m b3MgYW5kIHJldHVybiBpdHMgaW5kZXggdGhlcmUuCkBAIC0xODQ4LDE1OCArMTg0MSw4NCBAQCBy ZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9p bmRleCwgaW50IHJ0b2Zmc2V0KQogfQogCiAvKgotICogc2V0X2FwcGVuZF9yZWZlcmVuY2VzCi0g KgkJRG8gc2V0X3BsYW5fcmVmZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGFuIEFwcGVuZAotICoKLSAq IFdlIHRyeSB0byBzdHJpcCBvdXQgdGhlIEFwcGVuZCBlbnRpcmVseTsgaWYgd2UgY2FuJ3QsIHdl IGhhdmUKLSAqIHRvIGRvIHRoZSBub3JtYWwgcHJvY2Vzc2luZyBvbiBpdC4KKyAqIHNldF9hcHBl bmRiYXNlX3JlZmVyZW5jZXMKKyAqCQlEbyBzZXRfcGxhbl9yZWZlcmVuY2VzIHByb2Nlc3Npbmcg b24gYW4gQXBwZW5kIG9yIE1lcmdlQXBwZW5kCisgKgorICogV2UgdHJ5IHRvIHN0cmlwIG91dCB0 aGUgbm9kZSBlbnRpcmVseTsgaWYgd2UgY2FuJ3QsIHdlIGhhdmUgdG8gZG8gdGhlCisgKiBub3Jt YWwgcHJvY2Vzc2luZyBvbiBpdC4gIEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgYmVoYXZlIGlkZW50 aWNhbGx5IGhlcmUKKyAqIChib3RoIGFyZSByZXByZXNlbnRlZCB2aWEgdGhlIGNvbW1vbiBBcHBl bmRCYXNlIHN0cnVjdCksIHNvIHRoaXMgaXMKKyAqIHNoYXJlZCBiZXR3ZWVuIHRoZW07IHRoZSBv bmx5IHRoaW5nIHRoYXQgZGlmZmVycyBpcyB3aGljaCBOb2RlVGFnIHRvCisgKiByZXBvcnQgYXMg ZWxpZGVkLCBhbmQgbm9kZVRhZyhwbGFuKSBhbHJlYWR5IGdpdmVzIHVzIHRoYXQuCiAgKi8KIHN0 YXRpYyBQbGFuICoKLXNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKLQkJ CQkJICBBcHBlbmQgKmFwbGFuLAotCQkJCQkgIGludCBydG9mZnNldCkKK3NldF9hcHBlbmRiYXNl X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkgIEFwcGVuZEJhc2UgKnBsYW4s CisJCQkJCQkgIGludCBydG9mZnNldCkKIHsKIAlMaXN0Q2VsbCAgICpsOwogCiAJLyoKLQkgKiBB cHBlbmQsIGxpa2UgU29ydCBldCBhbCwgZG9lc24ndCBhY3R1YWxseSBldmFsdWF0ZSBpdHMgdGFy Z2V0bGlzdCBvcgotCSAqIGNoZWNrIHF1YWxzLiAgSWYgaXQncyBnb3QgZXhhY3RseSBvbmUgY2hp bGQgcGxhbiwgdGhlbiBpdCdzIG5vdCBkb2luZwotCSAqIGFueXRoaW5nIHVzZWZ1bCBhdCBhbGws IGFuZCB3ZSBjYW4gc3RyaXAgaXQgb3V0LgorCSAqIEFwcGVuZC9NZXJnZUFwcGVuZCwgbGlrZSBT b3J0IGV0IGFsLCBkb2Vzbid0IGFjdHVhbGx5IGV2YWx1YXRlIGl0cworCSAqIHRhcmdldGxpc3Qg b3IgY2hlY2sgcXVhbHMuICBJZiBpdCdzIGdvdCBleGFjdGx5IG9uZSBjaGlsZCBwbGFuLCB0aGVu CisJICogaXQncyBub3QgZG9pbmcgYW55dGhpbmcgdXNlZnVsIGF0IGFsbCwgYW5kIHdlIGNhbiBz dHJpcCBpdCBvdXQuCiAJICovCi0JQXNzZXJ0KGFwbGFuLT5wbGFuLnF1YWwgPT0gTklMKTsKKwlB c3NlcnQocGxhbi0+cGxhbi5xdWFsID09IE5JTCk7CiAKIAkvKiBGaXJzdCwgd2UgZ290dGEgcmVj dXJzZSBvbiB0aGUgY2hpbGRyZW4gKi8KLQlmb3JlYWNoKGwsIGFwbGFuLT5hcHBlbmRwbGFucykK Kwlmb3JlYWNoKGwsIHBsYW4tPnN1YnBsYW5zKQogCXsKIAkJbGZpcnN0KGwpID0gc2V0X3BsYW5f cmVmcyhyb290LCAoUGxhbiAqKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKIAl9CiAKIAkvKgotCSAq IFNlZSBpZiBpdCdzIHNhZmUgdG8gZ2V0IHJpZCBvZiB0aGUgQXBwZW5kIGVudGlyZWx5LiAgRm9y IHRoaXMgdG8gYmUKLQkgKiBzYWZlLCB0aGVyZSBtdXN0IGJlIG9ubHkgb25lIGNoaWxkIHBsYW4g YW5kIHRoYXQgY2hpbGQgcGxhbidzIHBhcmFsbGVsCi0JICogYXdhcmVuZXNzIG11c3QgbWF0Y2gg dGhlIEFwcGVuZCdzLiAgVGhlIHJlYXNvbiBmb3IgdGhlIGxhdHRlciBpcyB0aGF0Ci0JICogaWYg dGhlIEFwcGVuZCBpcyBwYXJhbGxlbCBhd2FyZSBhbmQgdGhlIGNoaWxkIGlzIG5vdCwgdGhlbiB0 aGUgY2FsbGluZwotCSAqIHBsYW4gbWF5IGV4ZWN1dGUgdGhlIG5vbi1wYXJhbGxlbCBhd2FyZSBj aGlsZCBtdWx0aXBsZSB0aW1lcy4gIChJZiB5b3UKLQkgKiBjaGFuZ2UgdGhlc2UgcnVsZXMsIHVw ZGF0ZSBjcmVhdGVfYXBwZW5kX3BhdGggdG8gbWF0Y2guKQorCSAqIFNlZSBpZiBpdCdzIHNhZmUg dG8gZ2V0IHJpZCBvZiB0aGUgbm9kZSBlbnRpcmVseS4gIEZvciB0aGlzIHRvIGJlCisJICogc2Fm ZSwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBjaGlsZCBwbGFuIGFuZCB0aGF0IGNoaWxkIHBsYW4n cworCSAqIHBhcmFsbGVsIGF3YXJlbmVzcyBtdXN0IG1hdGNoIHRoZSBub2RlJ3MuICBUaGUgcmVh c29uIGZvciB0aGUgbGF0dGVyCisJICogaXMgdGhhdCBpZiB0aGUgbm9kZSBpcyBwYXJhbGxlbCBh d2FyZSBhbmQgdGhlIGNoaWxkIGlzIG5vdCwgdGhlbiB0aGUKKwkgKiBjYWxsaW5nIHBsYW4gbWF5 IGV4ZWN1dGUgdGhlIG5vbi1wYXJhbGxlbCBhd2FyZSBjaGlsZCBtdWx0aXBsZSB0aW1lcy4KKwkg KiAoSWYgeW91IGNoYW5nZSB0aGVzZSBydWxlcywgdXBkYXRlIGNyZWF0ZV9hcHBlbmRfcGF0aCBh bmQKKwkgKiBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BhdGggdG8gbWF0Y2guKQogCSAqLwotCWlmIChs aXN0X2xlbmd0aChhcGxhbi0+YXBwZW5kcGxhbnMpID09IDEpCisJaWYgKGxpc3RfbGVuZ3RoKHBs YW4tPnN1YnBsYW5zKSA9PSAxKQogCXsKLQkJUGxhbgkgICAqcCA9IChQbGFuICopIGxpbml0aWFs KGFwbGFuLT5hcHBlbmRwbGFucyk7CisJCVBsYW4JICAgKnAgPSAoUGxhbiAqKSBsaW5pdGlhbChw bGFuLT5zdWJwbGFucyk7CiAKLQkJaWYgKHAtPnBhcmFsbGVsX2F3YXJlID09IGFwbGFuLT5wbGFu LnBhcmFsbGVsX2F3YXJlKQorCQlpZiAocC0+cGFyYWxsZWxfYXdhcmUgPT0gcGxhbi0+cGxhbi5w YXJhbGxlbF9hd2FyZSkKIAkJewogCQkJUGxhbgkgICAqcmVzdWx0OwogCi0JCQlyZXN1bHQgPSBj bGVhbl91cF9yZW1vdmVkX3BsYW5fbGV2ZWwoKFBsYW4gKikgYXBsYW4sIHApOworCQkJcmVzdWx0 ID0gY2xlYW5fdXBfcmVtb3ZlZF9wbGFuX2xldmVsKChQbGFuICopIHBsYW4sIHApOwogCi0JCQkv KiBSZW1lbWJlciB0aGF0IHdlIHJlbW92ZWQgYW4gQXBwZW5kICovCi0JCQlyZWNvcmRfZWxpZGVk X25vZGUocm9vdC0+Z2xvYiwgcC0+cGxhbl9ub2RlX2lkLCBUX0FwcGVuZCwKLQkJCQkJCQkgICBv ZmZzZXRfcmVsaWRfc2V0KGFwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KSk7CisJCQkvKiBSZW1l bWJlciB0aGF0IHdlIHJlbW92ZWQgYW4gQXBwZW5kL01lcmdlQXBwZW5kICovCisJCQlyZWNvcmRf ZWxpZGVkX25vZGUocm9vdC0+Z2xvYiwgcC0+cGxhbl9ub2RlX2lkLCBub2RlVGFnKHBsYW4pLAor CQkJCQkJCSAgIG9mZnNldF9yZWxpZF9zZXQocGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCkpOwog CiAJCQlyZXR1cm4gcmVzdWx0OwogCQl9CiAJfQogCiAJLyoKLQkgKiBPdGhlcndpc2UsIGNsZWFu IHVwIHRoZSBBcHBlbmQgYXMgbmVlZGVkLiAgSXQncyBva2F5IHRvIGRvIHRoaXMgYWZ0ZXIKKwkg KiBPdGhlcndpc2UsIGNsZWFuIHVwIHRoZSBub2RlIGFzIG5lZWRlZC4gIEl0J3Mgb2theSB0byBk byB0aGlzIGFmdGVyCiAJICogcmVjdXJzaW5nIHRvIHRoZSBjaGlsZHJlbiwgYmVjYXVzZSBzZXRf ZHVtbXlfdGxpc3RfcmVmZXJlbmNlcyBkb2Vzbid0CiAJICogbG9vayBhdCB0aG9zZS4KIAkgKi8K LQlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwot Ci0JYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywg cnRvZmZzZXQpOwotCi0JLyoKLQkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRv IFBsYW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCi0JICogQWxzbyB1cGRhdGUgdGhl IFJUIGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KLQkgKi8KLQlpZiAo YXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKLQkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgg PQotCQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhyb290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRl eCwgcnRvZmZzZXQpOwotCi0JLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVl IG9yIHJpZ2h0dHJlZSAuLi4gKi8KLQlBc3NlcnQoYXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVM TCk7Ci0JQXNzZXJ0KGFwbGFuLT5wbGFuLnJpZ2h0dHJlZSA9PSBOVUxMKTsKLQotCXJldHVybiAo UGxhbiAqKSBhcGxhbjsKLX0KLQotLyoKLSAqIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzCi0g KgkJRG8gc2V0X3BsYW5fcmVmZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGEgTWVyZ2VBcHBlbmQKLSAq Ci0gKiBXZSB0cnkgdG8gc3RyaXAgb3V0IHRoZSBNZXJnZUFwcGVuZCBlbnRpcmVseTsgaWYgd2Ug Y2FuJ3QsIHdlIGhhdmUKLSAqIHRvIGRvIHRoZSBub3JtYWwgcHJvY2Vzc2luZyBvbiBpdC4KLSAq Lwotc3RhdGljIFBsYW4gKgotc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsCi0JCQkJCQkgICBNZXJnZUFwcGVuZCAqbXBsYW4sCi0JCQkJCQkgICBpbnQgcnRvZmZz ZXQpCi17Ci0JTGlzdENlbGwgICAqbDsKLQotCS8qCi0JICogTWVyZ2VBcHBlbmQsIGxpa2UgU29y dCBldCBhbCwgZG9lc24ndCBhY3R1YWxseSBldmFsdWF0ZSBpdHMgdGFyZ2V0bGlzdAotCSAqIG9y IGNoZWNrIHF1YWxzLiAgSWYgaXQncyBnb3QgZXhhY3RseSBvbmUgY2hpbGQgcGxhbiwgdGhlbiBp dCdzIG5vdAotCSAqIGRvaW5nIGFueXRoaW5nIHVzZWZ1bCBhdCBhbGwsIGFuZCB3ZSBjYW4gc3Ry aXAgaXQgb3V0LgotCSAqLwotCUFzc2VydChtcGxhbi0+cGxhbi5xdWFsID09IE5JTCk7Ci0KLQkv KiBGaXJzdCwgd2UgZ290dGEgcmVjdXJzZSBvbiB0aGUgY2hpbGRyZW4gKi8KLQlmb3JlYWNoKGws IG1wbGFuLT5tZXJnZXBsYW5zKQotCXsKLQkJbGZpcnN0KGwpID0gc2V0X3BsYW5fcmVmcyhyb290 LCAoUGxhbiAqKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKLQl9Ci0KLQkvKgotCSAqIFNlZSBpZiBp dCdzIHNhZmUgdG8gZ2V0IHJpZCBvZiB0aGUgTWVyZ2VBcHBlbmQgZW50aXJlbHkuICBGb3IgdGhp cyB0bwotCSAqIGJlIHNhZmUsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgY2hpbGQgcGxhbiBhbmQg dGhhdCBjaGlsZCBwbGFuJ3MKLQkgKiBwYXJhbGxlbCBhd2FyZW5lc3MgbXVzdCBtYXRjaCB0aGUg TWVyZ2VBcHBlbmQncy4gIFRoZSByZWFzb24gZm9yIHRoZQotCSAqIGxhdHRlciBpcyB0aGF0IGlm IHRoZSBNZXJnZUFwcGVuZCBpcyBwYXJhbGxlbCBhd2FyZSBhbmQgdGhlIGNoaWxkIGlzCi0JICog bm90LCB0aGVuIHRoZSBjYWxsaW5nIHBsYW4gbWF5IGV4ZWN1dGUgdGhlIG5vbi1wYXJhbGxlbCBh d2FyZSBjaGlsZAotCSAqIG11bHRpcGxlIHRpbWVzLiAgKElmIHlvdSBjaGFuZ2UgdGhlc2UgcnVs ZXMsIHVwZGF0ZQotCSAqIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGF0aCB0byBtYXRjaC4pCi0JICov Ci0JaWYgKGxpc3RfbGVuZ3RoKG1wbGFuLT5tZXJnZXBsYW5zKSA9PSAxKQotCXsKLQkJUGxhbgkg ICAqcCA9IChQbGFuICopIGxpbml0aWFsKG1wbGFuLT5tZXJnZXBsYW5zKTsKLQotCQlpZiAocC0+ cGFyYWxsZWxfYXdhcmUgPT0gbXBsYW4tPnBsYW4ucGFyYWxsZWxfYXdhcmUpCi0JCXsKLQkJCVBs YW4JICAgKnJlc3VsdDsKLQotCQkJcmVzdWx0ID0gY2xlYW5fdXBfcmVtb3ZlZF9wbGFuX2xldmVs KChQbGFuICopIG1wbGFuLCBwKTsKLQotCQkJLyogUmVtZW1iZXIgdGhhdCB3ZSByZW1vdmVkIGEg TWVyZ2VBcHBlbmQgKi8KLQkJCXJlY29yZF9lbGlkZWRfbm9kZShyb290LT5nbG9iLCBwLT5wbGFu X25vZGVfaWQsIFRfTWVyZ2VBcHBlbmQsCi0JCQkJCQkJICAgb2Zmc2V0X3JlbGlkX3NldChtcGxh bi0+YXBwcmVsaWRzLCBydG9mZnNldCkpOwotCi0JCQlyZXR1cm4gcmVzdWx0OwotCQl9Ci0JfQot Ci0JLyoKLQkgKiBPdGhlcndpc2UsIGNsZWFuIHVwIHRoZSBNZXJnZUFwcGVuZCBhcyBuZWVkZWQu ICBJdCdzIG9rYXkgdG8gZG8gdGhpcwotCSAqIGFmdGVyIHJlY3Vyc2luZyB0byB0aGUgY2hpbGRy ZW4sIGJlY2F1c2Ugc2V0X2R1bW15X3RsaXN0X3JlZmVyZW5jZXMKLQkgKiBkb2Vzbid0IGxvb2sg YXQgdGhvc2UuCi0JICovCi0Jc2V0X2R1bW15X3RsaXN0X3JlZmVyZW5jZXMoKFBsYW4gKikgbXBs YW4sIHJ0b2Zmc2V0KTsKKwlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAqKSBwbGFu LCBydG9mZnNldCk7CiAKLQltcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChtcGxh bi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CisJcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlk X3NldChwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAogCS8qCiAJICogQWRkIFBhcnRpdGlv blBydW5lSW5mbywgaWYgYW55LCB0byBQbGFubmVyR2xvYmFsIGFuZCB1cGRhdGUgdGhlIGluZGV4 LgogCSAqIEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gaXQgdG8gYWRkIHRo ZSBvZmZzZXQuCiAJICovCi0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCi0JCW1w bGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KLQkJCXJlZ2lzdGVyX3BhcnRwcnVuZWluZm8ocm9vdCwg bXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsKKwlpZiAocGxhbi0+cGFydF9wcnVu ZV9pbmRleCA+PSAwKQorCQlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KKwkJCXJlZ2lzdGVyX3Bh cnRwcnVuZWluZm8ocm9vdCwgcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJ LyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4g Ki8KLQlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7Ci0JQXNzZXJ0KG1wbGFu LT5wbGFuLnJpZ2h0dHJlZSA9PSBOVUxMKTsKKwlBc3NlcnQocGxhbi0+cGxhbi5sZWZ0dHJlZSA9 PSBOVUxMKTsKKwlBc3NlcnQocGxhbi0+cGxhbi5yaWdodHRyZWUgPT0gTlVMTCk7CiAKLQlyZXR1 cm4gKFBsYW4gKikgbXBsYW47CisJcmV0dXJuIChQbGFuICopIHBsYW47CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3N1YnNlbGVjdC5jCmluZGV4IDU3NjBiNjE2ODEzLi5lNDMzODg4 ZjZhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMKQEAgLTI5MTIsNyAr MjkxMiw3IEBAIGZpbmFsaXplX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sCiAK IAkJY2FzZSBUX0FwcGVuZDoKIAkJCXsKLQkJCQlmb3JlYWNoKGwsICgoQXBwZW5kICopIHBsYW4p LT5hcHBlbmRwbGFucykKKwkJCQlmb3JlYWNoKGwsICgoQXBwZW5kICopIHBsYW4pLT5hYi5zdWJw bGFucykKIAkJCQl7CiAJCQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJYm1zX2FkZF9tZW1i ZXJzKGNvbnRleHQucGFyYW1pZHMsCkBAIC0yOTI3LDcgKzI5MjcsNyBAQCBmaW5hbGl6ZV9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLAogCiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoK IAkJCXsKLQkJCQlmb3JlYWNoKGwsICgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPm1lcmdlcGxhbnMp CisJCQkJZm9yZWFjaChsLCAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hYi5zdWJwbGFucykKIAkJ CQl7CiAJCQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJYm1zX2FkZF9tZW1iZXJzKGNvbnRl eHQucGFyYW1pZHMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNWU4ZTE2ODNkYjAu LmM1MzBlMWUzNjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC01MTY1LDkgKzUx NjUsOSBAQCBzZXRfZGVwYXJzZV9wbGFuKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBQbGFuICpw bGFuKQogCSAqIG5hdHVyYWwgY2hvaWNlLgogCSAqLwogCWlmIChJc0EocGxhbiwgQXBwZW5kKSkK LQkJZHBucy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoQXBwZW5kICopIHBsYW4pLT5hcHBlbmRw bGFucyk7CisJCWRwbnMtPm91dGVyX3BsYW4gPSBsaW5pdGlhbCgoKEFwcGVuZCAqKSBwbGFuKS0+ YWIuc3VicGxhbnMpOwogCWVsc2UgaWYgKElzQShwbGFuLCBNZXJnZUFwcGVuZCkpCi0JCWRwbnMt Pm91dGVyX3BsYW4gPSBsaW5pdGlhbCgoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5tZXJnZXBsYW5z KTsKKwkJZHBucy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoTWVyZ2VBcHBlbmQgKikgcGxhbikt PmFiLnN1YnBsYW5zKTsKIAllbHNlCiAJCWRwbnMtPm91dGVyX3BsYW4gPSBvdXRlclBsYW4ocGxh bik7CiAKQEAgLTc5NzYsMTAgKzc5NzYsMTAgQEAgcmVzb2x2ZV9zcGVjaWFsX3Zhcm5vKE5vZGUg Km5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAogCQlpZiAoSXNBKGRwbnMtPnBsYW4s IEFwcGVuZCkpCiAJCQljb250ZXh0LT5hcHBlbmRwYXJlbnRzID0gYm1zX3VuaW9uKGNvbnRleHQt PmFwcGVuZHBhcmVudHMsCi0JCQkJCQkJCQkJCSAgICgoQXBwZW5kICopIGRwbnMtPnBsYW4pLT5h cHByZWxpZHMpOworCQkJCQkJCQkJCQkgICAoKEFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YWIuYXBw cmVsaWRzKTsKIAkJZWxzZSBpZiAoSXNBKGRwbnMtPnBsYW4sIE1lcmdlQXBwZW5kKSkKIAkJCWNv bnRleHQtPmFwcGVuZHBhcmVudHMgPSBibXNfdW5pb24oY29udGV4dC0+YXBwZW5kcGFyZW50cywK LQkJCQkJCQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YXBwcmVsaWRzKTsK KwkJCQkJCQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YWIuYXBwcmVsaWRz KTsKIAogCQlwdXNoX2NoaWxkX3BsYW4oZHBucywgZHBucy0+b3V0ZXJfcGxhbiwgJnNhdmVfZHBu cyk7CiAJCXJlc29sdmVfc3BlY2lhbF92YXJubygoTm9kZSAqKSB0bGUtPmV4cHIsIGNvbnRleHQs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDkxYmIwYmQyZTEzLi4zZTUxZTE3OTc3OSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTE0OTAsNiArMTQ5MCwzOSBAQCB0eXBlZGVmIHN0cnVjdCBNb2Rp ZnlUYWJsZVN0YXRlCiAJTGlzdAkgICAqbXRfZmR3UHJpdkxpc3RzOwogfSBNb2RpZnlUYWJsZVN0 YXRlOwogCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkgQXBwZW5kQmFzZVN0YXRlIGluZm9ybWF0 aW9uCisgKgorICoJCUNvbW1vbiBiYXNlIGZvciBBcHBlbmRTdGF0ZSBhbmQgTWVyZ2VBcHBlbmRT dGF0ZS4KKyAqCQlDb250YWlucyBmaWVsZHMgc2hhcmVkIGJ5IGJvdGggbm9kZSB0eXBlczogdGhl IGFycmF5IG9mIHN1YnBsYW4KKyAqCQlzdGF0ZXMsIGFzeW5jaHJvbm91cyBleGVjdXRpb24gaW5m cmFzdHJ1Y3R1cmUsIGFuZCBwYXJ0aXRpb24KKyAqCQlwcnVuaW5nIHN0YXRlLgorICogLS0tLS0t LS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBBcHBlbmRCYXNlU3RhdGUKK3sKKwlwZ19u b2RlX2F0dHIoYWJzdHJhY3QpCisKKwlQbGFuU3RhdGUJcHM7CQkJCS8qIGl0cyBmaXJzdCBmaWVs ZCBpcyBOb2RlVGFnICovCisJUGxhblN0YXRlICoqcGxhbnM7CQkJLyogYXJyYXkgb2YgUGxhblN0 YXRlcyBmb3IgbXkgaW5wdXRzICovCisJaW50CQkJbnBsYW5zOworCisJLyogQXN5bmNocm9ub3Vz IGV4ZWN1dGlvbiBzdGF0ZSAqLworCUJpdG1hcHNldCAgKmFzeW5jcGxhbnM7CQkvKiBhc3luY2hy b25vdXMgcGxhbnMgaW5kZXhlcyAqLworCWludAkJCW5hc3luY3BsYW5zOwkvKiAjIG9mIGFzeW5j aHJvbm91cyBwbGFucyAqLworCUFzeW5jUmVxdWVzdCAqKmFzeW5jcmVxdWVzdHM7CS8qIGFycmF5 IG9mIEFzeW5jUmVxdWVzdHMgKi8KKwlUdXBsZVRhYmxlU2xvdCAqKmFzeW5jcmVzdWx0czsJLyog dW5yZXR1cm5lZCByZXN1bHRzIG9mIGFzeW5jIHBsYW5zICovCisJQml0bWFwc2V0ICAqbmVlZHJl cXVlc3Q7CS8qIGFzeW5jaHJvbm91cyBwbGFucyBuZWVkaW5nIGEgbmV3IHJlcXVlc3QgKi8KKwlz dHJ1Y3QgV2FpdEV2ZW50U2V0ICpldmVudHNldDsJLyogV2FpdEV2ZW50U2V0IHVzZWQgdG8gY29u ZmlndXJlIGZpbGUKKwkJCQkJCQkJCSAqIGRlc2NyaXB0b3Igd2FpdCBldmVudHMgKi8KKworCS8q IFBhcnRpdGlvbiBwcnVuaW5nIHN0YXRlICovCisJc3RydWN0IFBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lX3N0YXRlOworCWJvb2wJCXZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQ7CS8qIGlzIHZh bGlkX3N1YnBsYW5zIHZhbGlkPyAqLworCUJpdG1hcHNldCAgKnZhbGlkX3N1YnBsYW5zOworCUJp dG1hcHNldCAgKnZhbGlkX2FzeW5jcGxhbnM7CS8qIHZhbGlkIGFzeW5jaHJvbm91cyBwbGFucyBp bmRleGVzICovCit9IEFwcGVuZEJhc2VTdGF0ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJ IEFwcGVuZFN0YXRlIGluZm9ybWF0aW9uCiAgKgpAQCAtMTUxMSwzMCArMTU0NCwyMSBAQCBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAogc3RydWN0IEFwcGVuZFN0YXRlCiB7Ci0JUGxhblN0 YXRlCXBzOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLwotCVBsYW5TdGF0ZSAq KmFwcGVuZHBsYW5zOwkvKiBhcnJheSBvZiBQbGFuU3RhdGVzIGZvciBteSBpbnB1dHMgKi8KLQlp bnQJCQlhc19ucGxhbnM7CisJQXBwZW5kQmFzZVN0YXRlIGFzOwkJCS8qIGl0cyBmaXJzdCBmaWVs ZCBpcyBOb2RlVGFnICovCisKIAlpbnQJCQlhc193aGljaHBsYW47CiAJYm9vbAkJYXNfYmVndW47 CQkvKiBmYWxzZSBtZWFucyBuZWVkIHRvIGluaXRpYWxpemUgKi8KLQlCaXRtYXBzZXQgICphc19h c3luY3BsYW5zOwkvKiBhc3luY2hyb25vdXMgcGxhbnMgaW5kZXhlcyAqLwotCWludAkJCWFzX25h c3luY3BsYW5zOyAvKiAjIG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwotCUFzeW5jUmVxdWVzdCAq KmFzX2FzeW5jcmVxdWVzdHM7CS8qIGFycmF5IG9mIEFzeW5jUmVxdWVzdHMgKi8KLQlUdXBsZVRh YmxlU2xvdCAqKmFzX2FzeW5jcmVzdWx0czsJLyogdW5yZXR1cm5lZCByZXN1bHRzIG9mIGFzeW5j IHBsYW5zICovCi0JaW50CQkJYXNfbmFzeW5jcmVzdWx0czsJLyogIyBvZiB2YWxpZCBlbnRyaWVz IGluIGFzX2FzeW5jcmVzdWx0cyAqLworCWludAkJCWFzX25hc3luY3Jlc3VsdHM7CS8qICMgb2Yg dmFsaWQgZW50cmllcyBpbiBhc3luY3Jlc3VsdHMgKi8KIAlib29sCQlhc19zeW5jZG9uZTsJLyog dHJ1ZSBpZiBhbGwgc3luY2hyb25vdXMgcGxhbnMgZG9uZSBpbgogCQkJCQkJCQkgKiBhc3luY2hy b25vdXMgbW9kZSwgZWxzZSBmYWxzZSAqLwogCWludAkJCWFzX25hc3luY3JlbWFpbjsJLyogIyBv ZiByZW1haW5pbmcgYXN5bmNocm9ub3VzIHBsYW5zICovCi0JQml0bWFwc2V0ICAqYXNfbmVlZHJl cXVlc3Q7IC8qIGFzeW5jaHJvbm91cyBwbGFucyBuZWVkaW5nIGEgbmV3IHJlcXVlc3QgKi8KLQlz dHJ1Y3QgV2FpdEV2ZW50U2V0ICphc19ldmVudHNldDsJLyogV2FpdEV2ZW50U2V0IHVzZWQgdG8g Y29uZmlndXJlIGZpbGUKLQkJCQkJCQkJCQkgKiBkZXNjcmlwdG9yIHdhaXQgZXZlbnRzICovCi0J aW50CQkJYXNfZmlyc3RfcGFydGlhbF9wbGFuOwkvKiBJbmRleCBvZiAnYXBwZW5kcGxhbnMnIGNv bnRhaW5pbmcKLQkJCQkJCQkJCQkgKiB0aGUgZmlyc3QgcGFydGlhbCBwbGFuICovCisJaW50CQkJ YXNfZmlyc3RfcGFydGlhbF9wbGFuOwkvKiBJbmRleCBvZiAnYXMucGxhbnMnIGNvbnRhaW5pbmcg dGhlCisJCQkJCQkJCQkJICogZmlyc3QgcGFydGlhbCBwbGFuICovCisKKwkvKiBQYXJhbGxlbCBh cHBlbmQgc3BlY2lmaWMgKi8KIAlQYXJhbGxlbEFwcGVuZFN0YXRlICphc19wc3RhdGU7IC8qIHBh cmFsbGVsIGNvb3JkaW5hdGlvbiBpbmZvICovCiAJU2l6ZQkJcHN0YXRlX2xlbjsJCS8qIHNpemUg b2YgcGFyYWxsZWwgY29vcmRpbmF0aW9uIGluZm8gKi8KLQlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVT dGF0ZSAqYXNfcHJ1bmVfc3RhdGU7Ci0JYm9vbAkJYXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmll ZDsJLyogaXMgYXNfdmFsaWRfc3VicGxhbnMgdmFsaWQ/ICovCi0JQml0bWFwc2V0ICAqYXNfdmFs aWRfc3VicGxhbnM7Ci0JQml0bWFwc2V0ICAqYXNfdmFsaWRfYXN5bmNwbGFuczsJLyogdmFsaWQg YXN5bmNocm9ub3VzIHBsYW5zIGluZGV4ZXMgKi8KKwogCWJvb2wJCSgqY2hvb3NlX25leHRfc3Vi cGxhbikgKEFwcGVuZFN0YXRlICopOwogfTsKIApAQCAtMTU1NSwxNiArMTU3OSwxMyBAQCBzdHJ1 Y3QgQXBwZW5kU3RhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmRTdGF0ZQogewot CVBsYW5TdGF0ZQlwczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KLQlQbGFu U3RhdGUgKiptZXJnZXBsYW5zOwkJLyogYXJyYXkgb2YgUGxhblN0YXRlcyBmb3IgbXkgaW5wdXRz ICovCi0JaW50CQkJbXNfbnBsYW5zOworCUFwcGVuZEJhc2VTdGF0ZSBhczsJCQkvKiBpdHMgZmly c3QgZmllbGQgaXMgTm9kZVRhZyAqLworCiAJaW50CQkJbXNfbmtleXM7CiAJU29ydFN1cHBvcnQg bXNfc29ydGtleXM7CS8qIGFycmF5IG9mIGxlbmd0aCBtc19ua2V5cyAqLwogCVR1cGxlVGFibGVT bG90ICoqbXNfc2xvdHM7CS8qIGFycmF5IG9mIGxlbmd0aCBtc19ucGxhbnMgKi8KIAlzdHJ1Y3Qg YmluYXJ5aGVhcCAqbXNfaGVhcDsgLyogYmluYXJ5IGhlYXAgb2Ygc2xvdCBpbmRpY2VzICovCiAJ Ym9vbAkJbXNfaW5pdGlhbGl6ZWQ7IC8qIGFyZSBzdWJwbGFucyBzdGFydGVkPyAqLwotCXN0cnVj dCBQYXJ0aXRpb25QcnVuZVN0YXRlICptc19wcnVuZV9zdGF0ZTsKLQlCaXRtYXBzZXQgICptc192 YWxpZF9zdWJwbGFuczsKIH0gTWVyZ2VBcHBlbmRTdGF0ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAwOWExZWM3MzE4MC4uNWMyMWM2MDZkZjEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCkBAIC0zODksMzggKzM4OSw0OCBAQCB0eXBlZGVmIHN0cnVjdCBNb2Rp ZnlUYWJsZQogc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbzsJCS8qIGZvcndhcmQgcmVmZXJlbmNl IHRvIHN0cnVjdCBiZWxvdyAqLwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCi0gKgkgQXBwZW5kIG5v ZGUgLQotICoJCUdlbmVyYXRlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSByZXN1bHRzIG9mIHN1 Yi1wbGFucy4KKyAqCSBBcHBlbmRCYXNlIG5vZGUgLQorICoJCUNvbW1vbiBiYXNlIGZvciBBcHBl bmQgYW5kIE1lcmdlQXBwZW5kIHBsYW4gbm9kZXMuCisgKgkJQ29udGFpbnMgZmllbGRzIHNoYXJl ZCBieSBib3RoIG5vZGUgdHlwZXM6IHRoZSBsaXN0IG9mIHN1YnBsYW5zLAorICoJCWFwcGVuZHJl bCBpZGVudGlmaWVycywgYW5kIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGluZm8uCiAgKiAt LS0tLS0tLS0tLS0tLS0tCiAgKi8KLXR5cGVkZWYgc3RydWN0IEFwcGVuZAordHlwZWRlZiBzdHJ1 Y3QgQXBwZW5kQmFzZQogewotCVBsYW4JCXBsYW47CisJcGdfbm9kZV9hdHRyKGFic3RyYWN0KQog Ci0JLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLwotCUJpdG1h cHNldCAgKmFwcHJlbGlkczsKKwlQbGFuCQlwbGFuOwkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBO b2RlVGFnICovCisJQml0bWFwc2V0ICAqYXBwcmVsaWRzOwkJLyogUlRJcyBvZiBhcHBlbmRyZWwo cykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLworCUxpc3QJICAgKmNoaWxkX2FwcGVuZF9yZWxpZF9z ZXRzOwkvKiBzZXRzIG9mIFJUSXMgb2YgYXBwZW5kcmVscworCQkJCQkJCQkJCQkgKiBjb25zb2xp ZGF0ZWQgaW50byB0aGlzIG5vZGUgKi8KKwlMaXN0CSAgICpzdWJwbGFuczsJCS8qIExpc3Qgb2Yg UGxhbnMgKGZvcm1lcmx5CisJCQkJCQkJCSAqIGFwcGVuZHBsYW5zL21lcmdlcGxhbnMpICovCiAK LQkvKiBzZXRzIG9mIFJUSXMgb2YgYXBwZW5kcmVscyBjb25zb2xpZGF0ZWQgaW50byB0aGlzIG5v ZGUgKi8KLQlMaXN0CSAgICpjaGlsZF9hcHBlbmRfcmVsaWRfc2V0czsKKwkvKgorCSAqIEluZGV4 IGludG8gUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgYW5kIHBhcmFsbGVsIGxpc3RzIGluIEVT dGF0ZToKKwkgKiBlc19wYXJ0X3BydW5lX3N0YXRlcyBhbmQgZXNfcGFydF9wcnVuZV9yZXN1bHRz LiBTZXQgdG8gLTEgaWYgbm8KKwkgKiBydW4tdGltZSBwcnVuaW5nIGlzIHVzZWQuCisJICovCisJ aW50CQkJcGFydF9wcnVuZV9pbmRleDsKK30gQXBwZW5kQmFzZTsKIAotCS8qIHBsYW5zIHRvIHJ1 biAqLwotCUxpc3QJICAgKmFwcGVuZHBsYW5zOworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJIEFw cGVuZCBub2RlIC0KKyAqCQlHZW5lcmF0ZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgcmVzdWx0 cyBvZiBzdWItcGxhbnMuCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0 IEFwcGVuZAoreworCUFwcGVuZEJhc2UJYWI7CQkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2Rl VGFnICovCiAKIAkvKiAjIG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCWludAkJCW5hc3luY3Bs YW5zOwogCiAJLyoKLQkgKiBBbGwgJ2FwcGVuZHBsYW5zJyBwcmVjZWRpbmcgdGhpcyBpbmRleCBh cmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbAotCSAqICdhcHBlbmRwbGFucycgZnJvbSB0aGlzIGlu ZGV4IG9ud2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCisJICogQWxsICdzdWJwbGFucycgcHJlY2Vk aW5nIHRoaXMgaW5kZXggYXJlIG5vbi1wYXJ0aWFsIHBsYW5zLiBBbGwKKwkgKiAnc3VicGxhbnMn IGZyb20gdGhpcyBpbmRleCBvbndhcmRzIGFyZSBwYXJ0aWFsIHBsYW5zLgogCSAqLwogCWludAkJ CWZpcnN0X3BhcnRpYWxfcGxhbjsKLQotCS8qCi0JICogSW5kZXggaW50byBQbGFubmVkU3RtdC5w YXJ0UHJ1bmVJbmZvcyBhbmQgcGFyYWxsZWwgbGlzdHMgaW4gRVN0YXRlOgotCSAqIGVzX3BhcnRf cHJ1bmVfc3RhdGVzIGFuZCBlc19wYXJ0X3BydW5lX3Jlc3VsdHMuIFNldCB0byAtMSBpZiBubwot CSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgdXNlZC4KLQkgKi8KLQlpbnQJCQlwYXJ0X3BydW5lX2lu ZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTQzMCwxNiArNDQwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAgKi8KIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5k CiB7Ci0JUGxhbgkJcGxhbjsKLQotCS8qIFJUSXMgb2YgYXBwZW5kcmVsKHMpIGZvcm1lZCBieSB0 aGlzIG5vZGUgKi8KLQlCaXRtYXBzZXQgICphcHByZWxpZHM7Ci0KLQkvKiBzZXRzIG9mIFJUSXMg b2YgYXBwZW5kcmVscyBjb25zb2xpZGF0ZWQgaW50byB0aGlzIG5vZGUgKi8KLQlMaXN0CSAgICpj aGlsZF9hcHBlbmRfcmVsaWRfc2V0czsKLQotCS8qIHBsYW5zIHRvIHJ1biAqLwotCUxpc3QJICAg Km1lcmdlcGxhbnM7CisJQXBwZW5kQmFzZQlhYjsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5v ZGVUYWcgKi8KIAogCS8qIHRoZXNlIGZpZWxkcyBhcmUganVzdCBsaWtlIHRoZSBzb3J0LWtleSBp bmZvIGluIHN0cnVjdCBTb3J0OiAqLwogCkBAIC00NTcsMTMgKzQ1OCw2IEBAIHR5cGVkZWYgc3Ry dWN0IE1lcmdlQXBwZW5kCiAKIAkvKiBOVUxMUyBGSVJTVC9MQVNUIGRpcmVjdGlvbnMgKi8KIAli b29sCSAgICpudWxsc0ZpcnN0IHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKLQot CS8qCi0JICogSW5kZXggaW50byBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyBhbmQgcGFyYWxs ZWwgbGlzdHMgaW4gRVN0YXRlOgotCSAqIGVzX3BhcnRfcHJ1bmVfc3RhdGVzIGFuZCBlc19wYXJ0 X3BydW5lX3Jlc3VsdHMuIFNldCB0byAtMSBpZiBubwotCSAqIHJ1bi10aW1lIHBydW5pbmcgaXMg dXNlZC4KLQkgKi8KLQlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAog LyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2NTZmMWY2 MDg2Mi4uNTQ2OTg4ZjZkMDIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjYsNiAr MTI2LDggQEAgQW5sRXhwckRhdGEKIEFubEluZGV4RGF0YQogQW55QXJyYXlUeXBlCiBBcHBlbmQK K0FwcGVuZEJhc2UKK0FwcGVuZEJhc2VTdGF0ZQogQXBwZW5kUGF0aAogQXBwZW5kUGF0aElucHV0 CiBBcHBlbmRSZWxJbmZvCi0tIAoyLjQzLjAKCg== --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v22-0003-Extract-common-Append-MergeAppend-executor-logic.patch Content-Disposition: attachment; filename=v22-0003-Extract-common-Append-MergeAppend-executor-logic.patch; size=24558 RnJvbSA3ZGM1ZmZhNTczOGVlNmE0N2NlMGYzODRjMWRjZDU2MzJjMTFmM2MzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDAzOjUzOjEzICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgMy81XSBFeHRyYWN0IGNvbW1vbiBBcHBlbmQvTWVyZ2VBcHBlbmQgZXhlY3V0b3Ig bG9naWMgaW50bwogZXhlY0FwcGVuZC5jCgpFeHRyYWN0IHNoYXJlZCBub24tYXN5bmMgZXhlY3V0 b3Igb3BlcmF0aW9ucyBmb3IgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZApub2RlcyBpbnRvIGEgbmV3 IGV4ZWNBcHBlbmQuYyBmaWxlLCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uLgoKVGhlIGV4dHJh Y3RlZCBmdW5jdGlvbnMgb3BlcmF0ZSBvbiB0aGUgY29tbW9uIEFwcGVuZEJhc2VTdGF0ZSBiYXNl IHR5cGUKaW50cm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgY29tbWl0OgoKICAtIEV4ZWNJbml0QXBw ZW5kQmFzZSgpOiBzaGFyZWQgc3VicGxhbiBpbml0aWFsaXphdGlvbiwgcGFydGl0aW9uIHBydW5p bmcKICAgIHNldHVwLCBhbmQgcmVzdWx0IHR1cGxlIHNsb3QgY3JlYXRpb24uCiAgLSBFeGVjRW5k QXBwZW5kQmFzZSgpOiBzaHV0IGRvd24gYWxsIHN1YnBsYW4gbm9kZXMuCiAgLSBFeGVjUmVTY2Fu QXBwZW5kQmFzZSgpOiBwcm9wYWdhdGUgcmVzY2FuIHRvIHN1YnBsYW5zIGFuZCByZXNldCBwcnVu aW5nLgoKQXN5bmMgc3VicGxhbiBkZXRlY3Rpb24sIHNldHVwLCBhbmQgZXhlY3V0aW9uIHJlbWFp biBpbiBub2RlQXBwZW5kLmMsCnNpbmNlIE1lcmdlQXBwZW5kIGRvZXMgbm90IHlldCBzdXBwb3J0 IGFzeW5jLiAgVGhlIHR1cGxlLWZldGNoaW5nIGxvZ2ljCmFsc28gcmVtYWlucyBzcGVjaWZpYyB0 byBlYWNoIG5vZGUgdHlwZSwgcHJlc2VydmluZyB0aGVpciBkaXN0aW5jdApleGVjdXRpb24gc2Vt YW50aWNzIChzZXF1ZW50aWFsIGl0ZXJhdGlvbiBmb3IgQXBwZW5kLCBiaW5hcnkgaGVhcCBtZXJn ZQpmb3IgTWVyZ2VBcHBlbmQpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81OWJl MTk0YzVhNDA5ZmI5ZmM5ZjIwMzE1ODFiOGE0NCU0MHBvc3RncmVzcHJvLnJ1CkF1dGhvcjogTWF0 aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6 IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTog QWxlbmEgUnliYWtpbmEgPGEucnliYWtpbmFAcG9zdGdyZXNwcm8ucnU+Ci0tLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0FwcGVuZC5jICAgICAgfCAyMDggKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICB8IDIxMyArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyB8IDE1MSArKy0tLS0tLS0t LS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaCAgICAgIHwgIDI2ICsr KwogNiBmaWxlcyBjaGFuZ2VkLCAyODAgaW5zZXJ0aW9ucygrKSwgMzIwIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaAoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvTWFrZWZpbGUKaW5kZXggMTExMThkMGNlMDIuLjJiMTJhMWViMTdlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9N YWtlZmlsZQpAQCAtMTQsNiArMTQsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFr ZWZpbGUuZ2xvYmFsCiAKIE9CSlMgPSBcCiAJZXhlY0FtaS5vIFwKKwlleGVjQXBwZW5kLm8gXAog CWV4ZWNBc3luYy5vIFwKIAlleGVjQ3VycmVudC5vIFwKIAlleGVjRXhwci5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNBcHBlbmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u OTU5OWQxMGE5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj QXBwZW5kLmMKQEAgLTAsMCArMSwyMDggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV4 ZWNBcHBlbmQuYworICoJICBUaGlzIGNvZGUgcHJvdmlkZXMgc3VwcG9ydCBmdW5jdGlvbnMgZm9y IGV4ZWN1dGluZyBNZXJnZUFwcGVuZCBhbmQKKyAqCSAgQXBwZW5kIG5vZGVzLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXBwZW5k LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisK KyNpbmNsdWRlICJleGVjdXRvci9leGVjQXBwZW5kLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisKKy8qICBCZWdp biBhbGwgb2YgdGhlIHN1YnNjYW5zIG9mIGFuIEFwcGVuZEJhc2Ugbm9kZS4gKi8KK3ZvaWQKK0V4 ZWNJbml0QXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKnN0YXRlLAorCQkJCSAgIEFwcGVuZEJh c2UgKm5vZGUsCisJCQkJICAgRVN0YXRlICplc3RhdGUsCisJCQkJICAgaW50IGVmbGFncywKKwkJ CQkgICBpbnQgZmlyc3RfcGFydGlhbF9wbGFuLAorCQkJCSAgIGludCAqZmlyc3RfdmFsaWRfcGFy dGlhbF9wbGFuKQoreworCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zdGF0ZXM7CisJY29uc3QgVHVw bGVUYWJsZVNsb3RPcHMgKmFwcGVuZG9wczsKKwlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zOwor CWludAkJCW5wbGFuczsKKwlpbnQJCQlmaXJzdHZhbGlkOworCWludAkJCWksCisJCQkJajsKKwor CS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRo YXQgdXAgbm93ICovCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwl7CisJCVBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisKKwkJLyoKKwkJICogU2V0IHVwIHBydW5p bmcgZGF0YSBzdHJ1Y3R1cmUuICBUaGlzIGFsc28gaW5pdGlhbGl6ZXMgdGhlIHNldCBvZgorCQkg KiBzdWJwbGFucyB0byBpbml0aWFsaXplICh2YWxpZHN1YnBsYW5zKSBieSB0YWtpbmcgaW50byBh Y2NvdW50IHRoZQorCQkgKiByZXN1bHQgb2YgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgaWYg YW55LgorCQkgKi8KKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmco JnN0YXRlLT5wcywKKwkJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+c3VicGxhbnMpLAor CQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAorCQkJCQkJCQkJCQkJICBub2Rl LT5hcHByZWxpZHMsCisJCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJc3RhdGUtPnBy dW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKKwkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlk c3VicGxhbnMpOworCisJCS8qCisJCSAqIFdoZW4gbm8gcnVuLXRpbWUgcHJ1bmluZyBpcyByZXF1 aXJlZCBhbmQgdGhlcmUncyBhdCBsZWFzdCBvbmUKKwkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwg dmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcgbGF0ZXIKKwkJICogY2FsbHMg dG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgorCQkgKi8KKwkJaWYgKCFwcnVuZXN0YXRlLT5k b19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCisJCXsKKwkJCXN0YXRlLT52YWxpZF9zdWJwbGFu cyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CisJCQlzdGF0ZS0+dmFsaWRf c3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJbnBsYW5z ID0gbGlzdF9sZW5ndGgobm9kZS0+c3VicGxhbnMpOworCisJCS8qCisJCSAqIFdoZW4gcnVuLXRp bWUgcGFydGl0aW9uIHBydW5pbmcgaXMgbm90IGVuYWJsZWQgd2UgY2FuIGp1c3QgbWFyayBhbGwK KwkJICogc3VicGxhbnMgYXMgdmFsaWQ7IHRoZXkgbXVzdCBhbHNvIGFsbCBiZSBpbml0aWFsaXpl ZC4KKwkJICovCisJCUFzc2VydChucGxhbnMgPiAwKTsKKwkJc3RhdGUtPnZhbGlkX3N1YnBsYW5z ID0gdmFsaWRzdWJwbGFucyA9CisJCQlibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEp OworCQlzdGF0ZS0+dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCXN0YXRlLT5w cnVuZV9zdGF0ZSA9IE5VTEw7CisJfQorCisJYXBwZW5kcGxhbnN0YXRlcyA9IHBhbGxvYzBfYXJy YXkoUGxhblN0YXRlICosIG5wbGFucyk7CisKKwkvKgorCSAqIGNhbGwgRXhlY0luaXROb2RlIG9u IGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlCisJICogdGhl IHJlc3VsdHMgaW50byB0aGUgYXBwZW5kcGxhbnN0YXRlcyBhcnJheS4KKwkgKgorCSAqIFdoaWxl IGF0IGl0LCBmaW5kIG91dCB0aGUgZmlyc3QgdmFsaWQgcGFydGlhbCBwbGFuLgorCSAqLworCWog PSAwOworCWZpcnN0dmFsaWQgPSBucGxhbnM7CisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcih2YWxpZHN1YnBsYW5zLCBpKSkgPj0gMCkKKwl7CisJCVBsYW4JICAgKmluaXRO b2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+c3VicGxhbnMsIGkpOworCisJCS8qCisJCSAq IFJlY29yZCB0aGUgbG93ZXN0IGFwcGVuZHBsYW5zIGluZGV4IHdoaWNoIGlzIGEgdmFsaWQgcGFy dGlhbCBwbGFuLgorCQkgKi8KKwkJaWYgKGkgPj0gZmlyc3RfcGFydGlhbF9wbGFuICYmIGogPCBm aXJzdHZhbGlkKQorCQkJZmlyc3R2YWxpZCA9IGo7CisKKwkJYXBwZW5kcGxhbnN0YXRlc1tqKytd ID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJfQorCisJaWYgKGZp cnN0X3ZhbGlkX3BhcnRpYWxfcGxhbikKKwkJKmZpcnN0X3ZhbGlkX3BhcnRpYWxfcGxhbiA9IGZp cnN0dmFsaWQ7CisKKwlzdGF0ZS0+cGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOworCXN0YXRlLT5u cGxhbnMgPSBucGxhbnM7CisKKwkvKgorCSAqIEluaXRpYWxpemUgQXBwZW5kJ3MgcmVzdWx0IHR1 cGxlIHR5cGUgYW5kIHNsb3QuICBJZiB0aGUgY2hpbGQgcGxhbnMgYWxsCisJICogcHJvZHVjZSB0 aGUgc2FtZSBmaXhlZCBzbG90IHR5cGUsIHdlIGNhbiB1c2UgdGhhdCBzbG90IHR5cGU7IG90aGVy d2lzZQorCSAqIG1ha2UgYSB2aXJ0dWFsIHNsb3QuICAoTm90ZSB0aGF0IHRoZSByZXN1bHQgc2xv dCBpdHNlbGYgaXMgdXNlZCBvbmx5IHRvCisJICogcmV0dXJuIGEgbnVsbCB0dXBsZSBhdCBlbmQg b2YgZXhlY3V0aW9uOyByZWFsIHR1cGxlcyBhcmUgcmV0dXJuZWQgdG8KKwkgKiB0aGUgY2FsbGVy IGluIHRoZSBjaGlsZHJlbidzIG93biByZXN1bHQgc2xvdHMuICBXaGF0IHdlIGFyZSBkb2luZyBo ZXJlCisJICogaXMgYWxsb3dpbmcgdGhlIHBhcmVudCBwbGFuIG5vZGUgdG8gb3B0aW1pemUgaWYg dGhlIEFwcGVuZCB3aWxsIHJldHVybgorCSAqIG9ubHkgb25lIGtpbmQgb2Ygc2xvdC4pCisJICov CisJYXBwZW5kb3BzID0gRXhlY0dldENvbW1vblNsb3RPcHMoYXBwZW5kcGxhbnN0YXRlcywgaik7 CisJaWYgKGFwcGVuZG9wcyAhPSBOVUxMKQorCXsKKwkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RU TCgmc3RhdGUtPnBzLCBhcHBlbmRvcHMpOworCX0KKwllbHNlCisJeworCQlFeGVjSW5pdFJlc3Vs dFR1cGxlU2xvdFRMKCZzdGF0ZS0+cHMsICZUVFNPcHNWaXJ0dWFsKTsKKwkJLyogc2hvdyB0aGF0 IHRoZSBvdXRwdXQgc2xvdCB0eXBlIGlzIG5vdCBmaXhlZCAqLworCQlzdGF0ZS0+cHMucmVzdWx0 b3Bzc2V0ID0gdHJ1ZTsKKwkJc3RhdGUtPnBzLnJlc3VsdG9wc2ZpeGVkID0gZmFsc2U7CisJfQor CisJLyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSB0byBzYWZlIGRlZmF1bHRzICovCisJc3RhdGUt PmFzeW5jcGxhbnMgPSBOVUxMOworCXN0YXRlLT5uYXN5bmNwbGFucyA9IDA7CisJc3RhdGUtPmFz eW5jcmVxdWVzdHMgPSBOVUxMOworCXN0YXRlLT5hc3luY3Jlc3VsdHMgPSBOVUxMOworCXN0YXRl LT5uZWVkcmVxdWVzdCA9IE5VTEw7CisJc3RhdGUtPmV2ZW50c2V0ID0gTlVMTDsKKwlzdGF0ZS0+ dmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisKKwkvKgorCSAqIE1pc2NlbGxhbmVvdXMgaW5pdGlh bGl6YXRpb24KKwkgKi8KKwlzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOworfQorCit2b2lk CitFeGVjUmVTY2FuQXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKm5vZGUpCit7CisJaW50CQkJ aTsKKworCS8qCisJICogSWYgYW55IFBBUkFNX0VYRUMgUGFyYW1zIHVzZWQgaW4gcHJ1bmluZyBl eHByZXNzaW9ucyBoYXZlIGNoYW5nZWQsIHRoZW4KKwkgKiB3ZSdkIGJldHRlciB1bnNldCB0aGUg dmFsaWQgc3VicGxhbnMgc28gdGhhdCB0aGV5IGFyZSByZXNlbGVjdGVkIGZvcgorCSAqIHRoZSBu ZXcgcGFyYW1ldGVyIHZhbHVlcy4KKwkgKi8KKwlpZiAobm9kZS0+cHJ1bmVfc3RhdGUgJiYKKwkJ Ym1zX292ZXJsYXAobm9kZS0+cHMuY2hnUGFyYW0sCisJCQkJCW5vZGUtPnBydW5lX3N0YXRlLT5l eGVjcGFyYW1pZHMpKQorCXsKKwkJbm9kZS0+dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IGZh bHNlOworCQlibXNfZnJlZShub2RlLT52YWxpZF9zdWJwbGFucyk7CisJCW5vZGUtPnZhbGlkX3N1 YnBsYW5zID0gTlVMTDsKKwkJYm1zX2ZyZWUobm9kZS0+dmFsaWRfYXN5bmNwbGFucyk7CisJCW5v ZGUtPnZhbGlkX2FzeW5jcGxhbnMgPSBOVUxMOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBub2Rl LT5ucGxhbnM7IGkrKykKKwl7CisJCVBsYW5TdGF0ZSAgKnN1Ym5vZGUgPSBub2RlLT5wbGFuc1tp XTsKKworCQkvKgorCQkgKiBFeGVjUmVTY2FuIGRvZXNuJ3Qga25vdyBhYm91dCBteSBzdWJwbGFu cywgc28gSSBoYXZlIHRvIGRvCisJCSAqIGNoYW5nZWQtcGFyYW1ldGVyIHNpZ25hbGluZyBteXNl bGYuCisJCSAqLworCQlpZiAobm9kZS0+cHMuY2hnUGFyYW0gIT0gTlVMTCkKKwkJCVVwZGF0ZUNo YW5nZWRQYXJhbVNldChzdWJub2RlLCBub2RlLT5wcy5jaGdQYXJhbSk7CisKKwkJLyoKKwkJICog SWYgY2hnUGFyYW0gb2Ygc3Vibm9kZSBpcyBub3QgbnVsbCB0aGVuIHBsYW4gd2lsbCBiZSByZS1z Y2FubmVkIGJ5CisJCSAqIGZpcnN0IEV4ZWNQcm9jTm9kZS4KKwkJICovCisJCWlmIChzdWJub2Rl LT5jaGdQYXJhbSA9PSBOVUxMKQorCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKKwl9Cit9CisKKy8q ICBTaHV0cyBkb3duIHRoZSBzdWJwbGFucyBvZiBhbiBBcHBlbmRCYXNlIG5vZGUuICovCit2b2lk CitFeGVjRW5kQXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKm5vZGUpCit7CisJUGxhblN0YXRl ICoqc3VicGxhbnM7CisJaW50CQkJbnBsYW5zOworCWludAkJCWk7CisKKwkvKgorCSAqIGdldCBp bmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCisJICovCisJc3VicGxhbnMgPSBub2RlLT5wbGFuczsK KwlucGxhbnMgPSBub2RlLT5ucGxhbnM7CisKKwkvKgorCSAqIHNodXQgZG93biBlYWNoIG9mIHRo ZSBzdWJzY2FucworCSAqLworCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKKwkJRXhlY0Vu ZE5vZGUoc3VicGxhbnNbaV0pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAppbmRleCBkYzQ1 YmUwYjJjZS4uYzJmMjYxZmYyMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21l c29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCkBAIC0yLDYg KzIsNyBAQAogCiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdleGVjQW1pLmMnLAorICAn ZXhlY0FwcGVuZC5jJywKICAgJ2V4ZWNBc3luYy5jJywKICAgJ2V4ZWNDdXJyZW50LmMnLAogICAn ZXhlY0V4cHIuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggODhlMGQ3ZjBiNTEu LjI2ZDllZjIxODFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC01OCw2ICs1OCw3 IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0Fw cGVuZC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBc3luYy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAt MTEzLDE1ICsxMTQsMTAgQEAgQXBwZW5kU3RhdGUgKgogRXhlY0luaXRBcHBlbmQoQXBwZW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlBcHBlbmRTdGF0ZSAqYXBwZW5k c3RhdGUgPSBtYWtlTm9kZShBcHBlbmRTdGF0ZSk7Ci0JUGxhblN0YXRlICoqYXBwZW5kcGxhbnN0 YXRlczsKLQljb25zdCBUdXBsZVRhYmxlU2xvdE9wcyAqYXBwZW5kb3BzOwotCUJpdG1hcHNldCAg KnZhbGlkc3VicGxhbnM7CiAJQml0bWFwc2V0ICAqYXN5bmNwbGFuczsKLQlpbnQJCQlucGxhbnM7 CiAJaW50CQkJbmFzeW5jcGxhbnM7Ci0JaW50CQkJZmlyc3R2YWxpZDsKLQlpbnQJCQlpLAotCQkJ CWo7CisJaW50CQkJbnBsYW5zOworCWludAkJCWk7CiAKIAkvKiBjaGVjayBmb3IgdW5zdXBwb3J0 ZWQgZmxhZ3MgKi8KIAlBc3NlcnQoIShlZmxhZ3MgJiBFWEVDX0ZMQUdfTUFSSykpOwpAQCAtMTM4 LDEyMyArMTM0LDM4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX3N5bmNkb25lID0gZmFsc2U7CiAJYXBw ZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKLQkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24g cHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5h Yi5wYXJ0X3BydW5lX2luZGV4ID49IDApCi0JewotCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVu ZXN0YXRlOwotCi0JCS8qCi0JCSAqIFNldCB1cCBwcnVuaW5nIGRhdGEgc3RydWN0dXJlLiAgVGhp cyBhbHNvIGluaXRpYWxpemVzIHRoZSBzZXQgb2YKLQkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6 ZSAodmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKLQkJICogcmVzdWx0 IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KLQkJICovCi0JCXBydW5lc3Rh dGUgPSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCZhcHBlbmRzdGF0ZS0+YXMucHMsCi0J CQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFiLnN1YnBsYW5zKSwKLQkJCQkJCQkJCQkJ CSAgbm9kZS0+YWIucGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCSAgbm9kZS0+YWIuYXBw cmVsaWRzLAotCQkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7Ci0JCWFwcGVuZHN0YXRlLT5h cy5wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7Ci0JCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2 YWxpZHN1YnBsYW5zKTsKLQotCQkvKgotCQkgKiBXaGVuIG5vIHJ1bi10aW1lIHBydW5pbmcgaXMg cmVxdWlyZWQgYW5kIHRoZXJlJ3MgYXQgbGVhc3Qgb25lCi0JCSAqIHN1YnBsYW4sIHdlIGNhbiBm aWxsIGFzX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCi0JCSAqIGxhdGVy IGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KLQkJICovCi0JCWlmICghcHJ1bmVz dGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQotCQl7Ci0JCQlhcHBlbmRzdGF0ZS0+ YXMudmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwot CQkJYXBwZW5kc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwotCQl9 Ci0JfQotCWVsc2UKLQl7Ci0JCW5wbGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFiLnN1YnBsYW5z KTsKLQotCQkvKgotCQkgKiBXaGVuIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIG5vdCBl bmFibGVkIHdlIGNhbiBqdXN0IG1hcmsgYWxsCi0JCSAqIHN1YnBsYW5zIGFzIHZhbGlkOyB0aGV5 IG11c3QgYWxzbyBhbGwgYmUgaW5pdGlhbGl6ZWQuCi0JCSAqLwotCQlBc3NlcnQobnBsYW5zID4g MCk7Ci0JCWFwcGVuZHN0YXRlLT5hcy52YWxpZF9zdWJwbGFucyA9IHZhbGlkc3VicGxhbnMgPQot CQkJYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQkJYXBwZW5kc3RhdGUtPmFz LnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwotCQlhcHBlbmRzdGF0ZS0+YXMucHJ1 bmVfc3RhdGUgPSBOVUxMOwotCX0KKwkvKiBJbml0aWFsaXplIGNvbW1vbiBmaWVsZHMgKi8KKwlF eGVjSW5pdEFwcGVuZEJhc2UoJmFwcGVuZHN0YXRlLT5hcywKKwkJCQkJICAgJm5vZGUtPmFiLAor CQkJCQkgICBlc3RhdGUsCisJCQkJCSAgIGVmbGFncywKKwkJCQkJICAgbm9kZS0+Zmlyc3RfcGFy dGlhbF9wbGFuLAorCQkJCQkgICAmYXBwZW5kc3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbik7 CiAKLQlhcHBlbmRwbGFuc3RhdGVzID0gcGFsbG9jX2FycmF5KFBsYW5TdGF0ZSAqLCBucGxhbnMp OworCW5wbGFucyA9IGFwcGVuZHN0YXRlLT5hcy5ucGxhbnM7CiAKIAkvKgotCSAqIGNhbGwgRXhl Y0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBz YXZlCi0JICogdGhlIHJlc3VsdHMgaW50byB0aGUgYXBwZW5kcGxhbnN0YXRlcyBhcnJheS4KLQkg KgotCSAqIFdoaWxlIGF0IGl0LCBmaW5kIG91dCB0aGUgZmlyc3QgdmFsaWQgcGFydGlhbCBwbGFu LgorCSAqIERldGVjdCBhc3luYy1jYXBhYmxlIHN1YnBsYW5zLiAgV2hlbiBleGVjdXRpbmcgRXZh bFBsYW5RdWFsLCB3ZSB0cmVhdAorCSAqIHRoZW0gYXMgc3luYyBvbmVzOyBkb24ndCBkbyB0aGlz IHdoZW4gaW5pdGlhbGl6aW5nIGFuIEV2YWxQbGFuUXVhbCBwbGFuCisJICogdHJlZS4KIAkgKi8K LQlqID0gMDsKIAlhc3luY3BsYW5zID0gTlVMTDsKIAluYXN5bmNwbGFucyA9IDA7Ci0JZmlyc3R2 YWxpZCA9IG5wbGFuczsKLQlpID0gLTE7Ci0Jd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHZh bGlkc3VicGxhbnMsIGkpKSA+PSAwKQorCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKIAl7 Ci0JCVBsYW4JICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+YWIuc3VicGxh bnMsIGkpOwotCi0JCS8qCi0JCSAqIFJlY29yZCBhc3luYyBzdWJwbGFucy4gIFdoZW4gZXhlY3V0 aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJlYXQgdGhlbQotCQkgKiBhcyBzeW5jIG9uZXM7IGRvbid0 IGRvIHRoaXMgd2hlbiBpbml0aWFsaXppbmcgYW4gRXZhbFBsYW5RdWFsIHBsYW4KLQkJICogdHJl ZS4KLQkJICovCi0JCWlmIChpbml0Tm9kZS0+YXN5bmNfY2FwYWJsZSAmJiBlc3RhdGUtPmVzX2Vw cV9hY3RpdmUgPT0gTlVMTCkKKwkJaWYgKGFwcGVuZHN0YXRlLT5hcy5wbGFuc1tpXS0+cGxhbi0+ YXN5bmNfY2FwYWJsZSAmJgorCQkJZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCiAJCXsK LQkJCWFzeW5jcGxhbnMgPSBibXNfYWRkX21lbWJlcihhc3luY3BsYW5zLCBqKTsKKwkJCWFzeW5j cGxhbnMgPSBibXNfYWRkX21lbWJlcihhc3luY3BsYW5zLCBpKTsKIAkJCW5hc3luY3BsYW5zKys7 CiAJCX0KLQotCQkvKgotCQkgKiBSZWNvcmQgdGhlIGxvd2VzdCBhcHBlbmRwbGFucyBpbmRleCB3 aGljaCBpcyBhIHZhbGlkIHBhcnRpYWwgcGxhbi4KLQkJICovCi0JCWlmIChpID49IG5vZGUtPmZp cnN0X3BhcnRpYWxfcGxhbiAmJiBqIDwgZmlyc3R2YWxpZCkKLQkJCWZpcnN0dmFsaWQgPSBqOwot Ci0JCWFwcGVuZHBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRl LCBlZmxhZ3MpOwotCX0KLQotCWFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBm aXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5hcy5wbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7Ci0J YXBwZW5kc3RhdGUtPmFzLm5wbGFucyA9IG5wbGFuczsKLQotCS8qCi0JICogSW5pdGlhbGl6ZSBB cHBlbmQncyByZXN1bHQgdHVwbGUgdHlwZSBhbmQgc2xvdC4gIElmIHRoZSBjaGlsZCBwbGFucyBh bGwKLQkgKiBwcm9kdWNlIHRoZSBzYW1lIGZpeGVkIHNsb3QgdHlwZSwgd2UgY2FuIHVzZSB0aGF0 IHNsb3QgdHlwZTsgb3RoZXJ3aXNlCi0JICogbWFrZSBhIHZpcnR1YWwgc2xvdC4gIChOb3RlIHRo YXQgdGhlIHJlc3VsdCBzbG90IGl0c2VsZiBpcyB1c2VkIG9ubHkgdG8KLQkgKiByZXR1cm4gYSBu dWxsIHR1cGxlIGF0IGVuZCBvZiBleGVjdXRpb247IHJlYWwgdHVwbGVzIGFyZSByZXR1cm5lZCB0 bwotCSAqIHRoZSBjYWxsZXIgaW4gdGhlIGNoaWxkcmVuJ3Mgb3duIHJlc3VsdCBzbG90cy4gIFdo YXQgd2UgYXJlIGRvaW5nIGhlcmUKLQkgKiBpcyBhbGxvd2luZyB0aGUgcGFyZW50IHBsYW4gbm9k ZSB0byBvcHRpbWl6ZSBpZiB0aGUgQXBwZW5kIHdpbGwgcmV0dXJuCi0JICogb25seSBvbmUga2lu ZCBvZiBzbG90LikKLQkgKi8KLQlhcHBlbmRvcHMgPSBFeGVjR2V0Q29tbW9uU2xvdE9wcyhhcHBl bmRwbGFuc3RhdGVzLCBqKTsKLQlpZiAoYXBwZW5kb3BzICE9IE5VTEwpCi0JewotCQlFeGVjSW5p dFJlc3VsdFR1cGxlU2xvdFRMKCZhcHBlbmRzdGF0ZS0+YXMucHMsIGFwcGVuZG9wcyk7Ci0JfQot CWVsc2UKLQl7Ci0JCUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJmFwcGVuZHN0YXRlLT5hcy5w cywgJlRUU09wc1ZpcnR1YWwpOwotCQkvKiBzaG93IHRoYXQgdGhlIG91dHB1dCBzbG90IHR5cGUg aXMgbm90IGZpeGVkICovCi0JCWFwcGVuZHN0YXRlLT5hcy5wcy5yZXN1bHRvcHNzZXQgPSB0cnVl OwotCQlhcHBlbmRzdGF0ZS0+YXMucHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAl9CiAKIAkv KiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCiAJYXBwZW5kc3RhdGUtPmFzLmFzeW5jcGxhbnMg PSBhc3luY3BsYW5zOwogCWFwcGVuZHN0YXRlLT5hcy5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5z OwotCWFwcGVuZHN0YXRlLT5hcy5hc3luY3JlcXVlc3RzID0gTlVMTDsKLQlhcHBlbmRzdGF0ZS0+ YXMuYXN5bmNyZXN1bHRzID0gTlVMTDsKIAlhcHBlbmRzdGF0ZS0+YXNfbmFzeW5jcmVzdWx0cyA9 IDA7CiAJYXBwZW5kc3RhdGUtPmFzX25hc3luY3JlbWFpbiA9IDA7Ci0JYXBwZW5kc3RhdGUtPmFz Lm5lZWRyZXF1ZXN0ID0gTlVMTDsKLQlhcHBlbmRzdGF0ZS0+YXMuZXZlbnRzZXQgPSBOVUxMOwot CWFwcGVuZHN0YXRlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKIAogCWlmIChuYXN5bmNw bGFucyA+IDApCiAJewpAQCAtMjY3LDcgKzE3OCw3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkJCWFyZXEgPSBwYWxsb2Nfb2Jq ZWN0KEFzeW5jUmVxdWVzdCk7CiAJCQlhcmVxLT5yZXF1ZXN0b3IgPSAoUGxhblN0YXRlICopIGFw cGVuZHN0YXRlOwotCQkJYXJlcS0+cmVxdWVzdGVlID0gYXBwZW5kcGxhbnN0YXRlc1tpXTsKKwkJ CWFyZXEtPnJlcXVlc3RlZSA9IGFwcGVuZHN0YXRlLT5hcy5wbGFuc1tpXTsKIAkJCWFyZXEtPnJl cXVlc3RfaW5kZXggPSBpOwogCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwogCQkJ YXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOwpAQCAtMjgyLDEyICsxOTMsNiBAQCBFeGVj SW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJ Y2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoYXBwZW5kc3RhdGUpOwogCX0KIAotCS8qCi0JICog TWlzY2VsbGFuZW91cyBpbml0aWFsaXphdGlvbgotCSAqLwotCi0JYXBwZW5kc3RhdGUtPmFzLnBz LnBzX1Byb2pJbmZvID0gTlVMTDsKLQogCS8qIEZvciBwYXJhbGxlbCBxdWVyeSwgdGhpcyB3aWxs IGJlIG92ZXJyaWRkZW4gbGF0ZXIuICovCiAJYXBwZW5kc3RhdGUtPmNob29zZV9uZXh0X3N1YnBs YW4gPSBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHk7CiAKQEAgLTQwMSw2NyArMzA2LDE5IEBA IEV4ZWNBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kQXBwZW5kKEFwcGVu ZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zOwotCWludAkJCW5wbGFu czsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQot CSAqLwotCWFwcGVuZHBsYW5zID0gbm9kZS0+YXMucGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+YXMu bnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKLQkgKi8K LQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4ZWNFbmROb2RlKGFwcGVuZHBsYW5z W2ldKTsKKwlFeGVjRW5kQXBwZW5kQmFzZSgmbm9kZS0+YXMpOwogfQogCiB2b2lkCiBFeGVjUmVT Y2FuQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogewogCWludAkJCW5hc3luY3BsYW5zID0gbm9k ZS0+YXMubmFzeW5jcGxhbnM7Ci0JaW50CQkJaTsKIAogCS8qIElmIHRoZXJlIGFyZSBhbnkgYXN5 bmMgc3VicGxhbnMsIHJlc2V0IGFzeW5jIHJlcXVlc3RzIG1hZGUgZm9yIHRoZW0uICovCiAJaWYg KG5hc3luY3BsYW5zID4gMCkKIAkJRXhlY0FwcGVuZEFzeW5jUmVzZXQobm9kZSk7CiAKLQkvKgot CSAqIElmIGFueSBQQVJBTV9FWEVDIFBhcmFtcyB1c2VkIGluIHBydW5pbmcgZXhwcmVzc2lvbnMg aGF2ZSBjaGFuZ2VkLCB0aGVuCi0JICogd2UnZCBiZXR0ZXIgdW5zZXQgdGhlIHZhbGlkIHN1YnBs YW5zIHNvIHRoYXQgdGhleSBhcmUgcmVzZWxlY3RlZCBmb3IKLQkgKiB0aGUgbmV3IHBhcmFtZXRl ciB2YWx1ZXMuCi0JICovCi0JaWYgKG5vZGUtPmFzLnBydW5lX3N0YXRlICYmCi0JCWJtc19vdmVy bGFwKG5vZGUtPmFzLnBzLmNoZ1BhcmFtLAotCQkJCQlub2RlLT5hcy5wcnVuZV9zdGF0ZS0+ZXhl Y3BhcmFtaWRzKSkKLQl7Ci0JCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSBm YWxzZTsKLQkJYm1zX2ZyZWUobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpOwotCQlub2RlLT5hcy52 YWxpZF9zdWJwbGFucyA9IE5VTEw7Ci0JCWJtc19mcmVlKG5vZGUtPmFzLnZhbGlkX2FzeW5jcGxh bnMpOwotCQlub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKLQl9Ci0KLQlmb3IgKGkg PSAwOyBpIDwgbm9kZS0+YXMubnBsYW5zOyBpKyspCi0JewotCQlQbGFuU3RhdGUgICpzdWJub2Rl ID0gbm9kZS0+YXMucGxhbnNbaV07Ci0KLQkJLyoKLQkJICogRXhlY1JlU2NhbiBkb2Vzbid0IGtu b3cgYWJvdXQgbXkgc3VicGxhbnMsIHNvIEkgaGF2ZSB0byBkbwotCQkgKiBjaGFuZ2VkLXBhcmFt ZXRlciBzaWduYWxpbmcgbXlzZWxmLgotCQkgKi8KLQkJaWYgKG5vZGUtPmFzLnBzLmNoZ1BhcmFt ICE9IE5VTEwpCi0JCQlVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoc3Vibm9kZSwgbm9kZS0+YXMucHMu Y2hnUGFyYW0pOwotCi0JCS8qCi0JCSAqIElmIGNoZ1BhcmFtIG9mIHN1Ym5vZGUgaXMgbm90IG51 bGwgdGhlbiBwbGFuIHdpbGwgYmUgcmUtc2Nhbm5lZCBieQotCQkgKiBmaXJzdCBFeGVjUHJvY05v ZGUgb3IgYnkgZmlyc3QgRXhlY0FzeW5jUmVxdWVzdC4KLQkJICovCi0JCWlmIChzdWJub2RlLT5j aGdQYXJhbSA9PSBOVUxMKQotCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKLQl9CisJRXhlY1JlU2Nh bkFwcGVuZEJhc2UoJm5vZGUtPmFzKTsKIAogCS8qIExldCBjaG9vc2VfbmV4dF9zdWJwbGFuXyog ZnVuY3Rpb24gaGFuZGxlIHNldHRpbmcgdGhlIGZpcnN0IHN1YnBsYW4gKi8KIAlub2RlLT5hc193 aGljaHBsYW4gPSBJTlZBTElEX1NVQlBMQU5fSU5ERVg7CkBAIC04NjIsMTcgKzcxOSw2IEBAIG1h cmtfaW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChBcHBlbmRTdGF0ZSAqbm9kZSkKIHN0YXRp YyB2b2lkCiBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlpbnQJ CQlpOwotCi0JLyogQmFja3dhcmQgc2NhbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFzeW5jLWF3YXJl IEFwcGVuZHMuICovCi0JQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+YXMucHMu c3RhdGUtPmVzX2RpcmVjdGlvbikpOwotCi0JLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3 aGVuIHRoZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCUFzc2VydChub2RlLT5hcy5ucGxhbnMgPiAw KTsKLQotCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gYXN5 bmMgc3VicGxhbnMuICovCi0JQXNzZXJ0KG5vZGUtPmFzLm5hc3luY3BsYW5zID4gMCk7Ci0KIAkv KiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFucyB0aGVuIGRvIHNv IG5vdy4gKi8KIAlpZiAoIW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJewpA QCAtODkyLDE2ICs3MzgsMTkgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5v ZGUpCiAJCXJldHVybjsKIAogCS8qIE1ha2UgYSByZXF1ZXN0IGZvciBlYWNoIG9mIHRoZSB2YWxp ZCBhc3luYyBzdWJwbGFucy4gKi8KLQlpID0gLTE7Ci0Jd2hpbGUgKChpID0gYm1zX25leHRfbWVt YmVyKG5vZGUtPmFzLnZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQogCXsKLQkJQXN5bmNSZXF1 ZXN0ICphcmVxID0gbm9kZS0+YXMuYXN5bmNyZXF1ZXN0c1tpXTsKKwkJaW50CQkJaSA9IC0xOwog Ci0JCUFzc2VydChhcmVxLT5yZXF1ZXN0X2luZGV4ID09IGkpOwotCQlBc3NlcnQoIWFyZXEtPmNh bGxiYWNrX3BlbmRpbmcpOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMu dmFsaWRfYXN5bmNwbGFucywgaSkpID49IDApCisJCXsKKwkJCUFzeW5jUmVxdWVzdCAqYXJlcSA9 IG5vZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07CiAKLQkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAq LwotCQlFeGVjQXN5bmNSZXF1ZXN0KGFyZXEpOworCQkJQXNzZXJ0KGFyZXEtPnJlcXVlc3RfaW5k ZXggPT0gaSk7CisJCQlBc3NlcnQoIWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOworCisJCQkvKiBE byB0aGUgYWN0dWFsIHdvcmsuICovCisJCQlFeGVjQXN5bmNSZXF1ZXN0KGFyZXEpOworCQl9CiAJ fQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGU0Y2RiY2M1 ZWIyLi4yNTc1ZDZhNDk5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK QEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJl eGVjdXRvci9leGVjQXBwZW5kLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNp bmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9k ZU1lcmdlQXBwZW5kLmgiCkBAIC02NywxMiArNjgsNyBAQCBNZXJnZUFwcGVuZFN0YXRlICoKIEV4 ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogewogCU1lcmdlQXBwZW5kU3RhdGUgKm1lcmdlc3RhdGUgPSBtYWtlTm9kZShNZXJn ZUFwcGVuZFN0YXRlKTsKLQlQbGFuU3RhdGUgKiptZXJnZXBsYW5zdGF0ZXM7Ci0JY29uc3QgVHVw bGVUYWJsZVNsb3RPcHMgKm1lcmdlb3BzOwotCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnM7Ci0J aW50CQkJbnBsYW5zOwotCWludAkJCWksCi0JCQkJajsKKwlpbnQJCQlpOwogCiAJLyogY2hlY2sg Zm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdzICYgKEVYRUNfRkxBR19C QUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwpAQCAtODQsOTQgKzgwLDE4IEBAIEV4ZWNJbml0 TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCW1lcmdlc3RhdGUtPmFzLnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPmFzLnBz LkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAotCS8qIElmIHJ1bi10aW1lIHBhcnRp dGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5v ZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKLQl7Ci0JCVBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lc3RhdGU7Ci0KLQkJLyoKLQkJICogU2V0IHVwIHBydW5pbmcgZGF0YSBzdHJ1Y3R1cmUu ICBUaGlzIGFsc28gaW5pdGlhbGl6ZXMgdGhlIHNldCBvZgotCQkgKiBzdWJwbGFucyB0byBpbml0 aWFsaXplICh2YWxpZHN1YnBsYW5zKSBieSB0YWtpbmcgaW50byBhY2NvdW50IHRoZQotCQkgKiBy ZXN1bHQgb2YgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgaWYgYW55LgotCQkgKi8KLQkJcHJ1 bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoJm1lcmdlc3RhdGUtPmFzLnBz LAotCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJwbGFucyksCi0JCQkJCQkJ CQkJCQkgIG5vZGUtPmFiLnBhcnRfcHJ1bmVfaW5kZXgsCi0JCQkJCQkJCQkJCQkgIG5vZGUtPmFi LmFwcHJlbGlkcywKLQkJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwotCQltZXJnZXN0YXRl LT5hcy5wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7Ci0JCW5wbGFucyA9IGJtc19udW1fbWVtYmVy cyh2YWxpZHN1YnBsYW5zKTsKLQotCQkvKgotCQkgKiBXaGVuIG5vIHJ1bi10aW1lIHBydW5pbmcg aXMgcmVxdWlyZWQgYW5kIHRoZXJlJ3MgYXQgbGVhc3Qgb25lCi0JCSAqIHN1YnBsYW4sIHdlIGNh biBmaWxsIG1zX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCi0JCSAqIGxh dGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KLQkJICovCi0JCWlmICghcHJ1 bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQotCQkJbWVyZ2VzdGF0ZS0+YXMu dmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwotCX0K LQllbHNlCi0JewotCQlucGxhbnMgPSBsaXN0X2xlbmd0aChub2RlLT5hYi5zdWJwbGFucyk7CisJ LyogSW5pdGlhbGl6ZSBjb21tb24gZmllbGRzICovCisJRXhlY0luaXRBcHBlbmRCYXNlKCZtZXJn ZXN0YXRlLT5hcywKKwkJCQkJICAgJm5vZGUtPmFiLAorCQkJCQkgICBlc3RhdGUsCisJCQkJCSAg IGVmbGFncywKKwkJCQkJICAgLTEsCisJCQkJCSAgIE5VTEwpOwogCi0JCS8qCi0JCSAqIFdoZW4g cnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgbm90IGVuYWJsZWQgd2UgY2FuIGp1c3QgbWFy ayBhbGwKLQkJICogc3VicGxhbnMgYXMgdmFsaWQ7IHRoZXkgbXVzdCBhbHNvIGFsbCBiZSBpbml0 aWFsaXplZC4KLQkJICovCi0JCUFzc2VydChucGxhbnMgPiAwKTsKLQkJbWVyZ2VzdGF0ZS0+YXMu dmFsaWRfc3VicGxhbnMgPSB2YWxpZHN1YnBsYW5zID0KLQkJCWJtc19hZGRfcmFuZ2UoTlVMTCwg MCwgbnBsYW5zIC0gMSk7Ci0JCW1lcmdlc3RhdGUtPmFzLnBydW5lX3N0YXRlID0gTlVMTDsKLQl9 Ci0KLQltZXJnZXBsYW5zdGF0ZXMgPSBwYWxsb2NfYXJyYXkoUGxhblN0YXRlICosIG5wbGFucyk7 Ci0JbWVyZ2VzdGF0ZS0+YXMucGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7Ci0JbWVyZ2VzdGF0ZS0+ YXMubnBsYW5zID0gbnBsYW5zOwotCi0JbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSBwYWxsb2MwX2Fy cmF5KFR1cGxlVGFibGVTbG90ICosIG5wbGFucyk7Ci0JbWVyZ2VzdGF0ZS0+bXNfaGVhcCA9IGJp bmFyeWhlYXBfYWxsb2NhdGUobnBsYW5zLCBoZWFwX2NvbXBhcmVfc2xvdHMsCisJbWVyZ2VzdGF0 ZS0+bXNfc2xvdHMgPSBwYWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG1lcmdlc3RhdGUt PmFzLm5wbGFucyk7CisJbWVyZ2VzdGF0ZS0+bXNfaGVhcCA9IGJpbmFyeWhlYXBfYWxsb2NhdGUo bWVyZ2VzdGF0ZS0+YXMubnBsYW5zLCBoZWFwX2NvbXBhcmVfc2xvdHMsCiAJCQkJCQkJCQkJCSAg bWVyZ2VzdGF0ZSk7CiAKLQkvKgotCSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhl IHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlCi0JICogdGhlIHJlc3VsdHMgaW50 byB0aGUgbWVyZ2VwbGFuc3RhdGVzIGFycmF5LgotCSAqLwotCWogPSAwOwotCWkgPSAtMTsKLQl3 aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFucywgaSkpID49IDApCi0Jewot CQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPmFiLnN1YnBsYW5z LCBpKTsKLQotCQltZXJnZXBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOwotCX0KLQotCS8qCi0JICogSW5pdGlhbGl6ZSBNZXJnZUFwcGVuZCdz IHJlc3VsdCB0dXBsZSB0eXBlIGFuZCBzbG90LiAgSWYgdGhlIGNoaWxkCi0JICogcGxhbnMgYWxs IHByb2R1Y2UgdGhlIHNhbWUgZml4ZWQgc2xvdCB0eXBlLCB3ZSBjYW4gdXNlIHRoYXQgc2xvdCB0 eXBlOwotCSAqIG90aGVyd2lzZSBtYWtlIGEgdmlydHVhbCBzbG90LiAgKE5vdGUgdGhhdCB0aGUg cmVzdWx0IHNsb3QgaXRzZWxmIGlzCi0JICogdXNlZCBvbmx5IHRvIHJldHVybiBhIG51bGwgdHVw bGUgYXQgZW5kIG9mIGV4ZWN1dGlvbjsgcmVhbCB0dXBsZXMgYXJlCi0JICogcmV0dXJuZWQgdG8g dGhlIGNhbGxlciBpbiB0aGUgY2hpbGRyZW4ncyBvd24gcmVzdWx0IHNsb3RzLiAgV2hhdCB3ZSBh cmUKLQkgKiBkb2luZyBoZXJlIGlzIGFsbG93aW5nIHRoZSBwYXJlbnQgcGxhbiBub2RlIHRvIG9w dGltaXplIGlmIHRoZQotCSAqIE1lcmdlQXBwZW5kIHdpbGwgcmV0dXJuIG9ubHkgb25lIGtpbmQg b2Ygc2xvdC4pCi0JICovCi0JbWVyZ2VvcHMgPSBFeGVjR2V0Q29tbW9uU2xvdE9wcyhtZXJnZXBs YW5zdGF0ZXMsIGopOwotCWlmIChtZXJnZW9wcyAhPSBOVUxMKQotCXsKLQkJRXhlY0luaXRSZXN1 bHRUdXBsZVNsb3RUTCgmbWVyZ2VzdGF0ZS0+YXMucHMsIG1lcmdlb3BzKTsKLQl9Ci0JZWxzZQot CXsKLQkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmbWVyZ2VzdGF0ZS0+YXMucHMsICZUVFNP cHNWaXJ0dWFsKTsKLQkJLyogc2hvdyB0aGF0IHRoZSBvdXRwdXQgc2xvdCB0eXBlIGlzIG5vdCBm aXhlZCAqLwotCQltZXJnZXN0YXRlLT5hcy5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwotCQltZXJn ZXN0YXRlLT5hcy5wcy5yZXN1bHRvcHNmaXhlZCA9IGZhbHNlOwotCX0KLQotCS8qCi0JICogTWlz Y2VsbGFuZW91cyBpbml0aWFsaXphdGlvbgotCSAqLwotCW1lcmdlc3RhdGUtPmFzLnBzLnBzX1By b2pJbmZvID0gTlVMTDsKLQogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3J0LWtleSBpbmZvcm1hdGlv bgogCSAqLwpAQCAtMzM2LDU5ICsyNTYsMTQgQEAgaGVhcF9jb21wYXJlX3Nsb3RzKERhdHVtIGEs IERhdHVtIGIsIHZvaWQgKmFyZykKIHZvaWQKIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJnZUFwcGVu ZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnM7Ci0JaW50CQkJbnBsYW5z OwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JbWVyZ2VwbGFucyA9IG5vZGUtPmFzLnBsYW5zOwotCW5wbGFucyA9IG5vZGUtPmFzLm5w bGFuczsKLQotCS8qCi0JICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCi0JICovCi0J Zm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCQlFeGVjRW5kTm9kZShtZXJnZXBsYW5zW2ld KTsKKwlFeGVjRW5kQXBwZW5kQmFzZSgmbm9kZS0+YXMpOwogfQogCiB2b2lkCiBFeGVjUmVTY2Fu TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlpbnQJCQlpOworCUV4ZWNS ZVNjYW5BcHBlbmRCYXNlKCZub2RlLT5hcyk7CiAKLQkvKgotCSAqIElmIGFueSBQQVJBTV9FWEVD IFBhcmFtcyB1c2VkIGluIHBydW5pbmcgZXhwcmVzc2lvbnMgaGF2ZSBjaGFuZ2VkLCB0aGVuCi0J ICogd2UnZCBiZXR0ZXIgdW5zZXQgdGhlIHZhbGlkIHN1YnBsYW5zIHNvIHRoYXQgdGhleSBhcmUg cmVzZWxlY3RlZCBmb3IKLQkgKiB0aGUgbmV3IHBhcmFtZXRlciB2YWx1ZXMuCi0JICovCi0JaWYg KG5vZGUtPmFzLnBydW5lX3N0YXRlICYmCi0JCWJtc19vdmVybGFwKG5vZGUtPmFzLnBzLmNoZ1Bh cmFtLAotCQkJCQlub2RlLT5hcy5wcnVuZV9zdGF0ZS0+ZXhlY3BhcmFtaWRzKSkKLQl7Ci0JCWJt c19mcmVlKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zKTsKLQkJbm9kZS0+YXMudmFsaWRfc3VicGxh bnMgPSBOVUxMOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBub2RlLT5hcy5ucGxhbnM7IGkrKykK LQl7Ci0JCVBsYW5TdGF0ZSAgKnN1Ym5vZGUgPSBub2RlLT5hcy5wbGFuc1tpXTsKLQotCQkvKgot CQkgKiBFeGVjUmVTY2FuIGRvZXNuJ3Qga25vdyBhYm91dCBteSBzdWJwbGFucywgc28gSSBoYXZl IHRvIGRvCi0JCSAqIGNoYW5nZWQtcGFyYW1ldGVyIHNpZ25hbGluZyBteXNlbGYuCi0JCSAqLwot CQlpZiAobm9kZS0+YXMucHMuY2hnUGFyYW0gIT0gTlVMTCkKLQkJCVVwZGF0ZUNoYW5nZWRQYXJh bVNldChzdWJub2RlLCBub2RlLT5hcy5wcy5jaGdQYXJhbSk7Ci0KLQkJLyoKLQkJICogSWYgY2hn UGFyYW0gb2Ygc3Vibm9kZSBpcyBub3QgbnVsbCB0aGVuIHBsYW4gd2lsbCBiZSByZS1zY2FubmVk IGJ5Ci0JCSAqIGZpcnN0IEV4ZWNQcm9jTm9kZS4KLQkJICovCi0JCWlmIChzdWJub2RlLT5jaGdQ YXJhbSA9PSBOVUxMKQotCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKLQl9CiAJYmluYXJ5aGVhcF9y ZXNldChub2RlLT5tc19oZWFwKTsKIAlub2RlLT5tc19pbml0aWFsaXplZCA9IGZhbHNlOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5hOGY0MWJhZDkyMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNBcHBlbmQuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq IGV4ZWNBcHBlbmQuaAorICoJCVN1cHBvcnQgZnVuY3Rpb25zIGZvciBNZXJnZUFwcGVuZCBhbmQg QXBwZW5kIG5vZGVzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lm bmRlZiBFWEVDQVBQRU5EX0gKKyNkZWZpbmUgRVhFQ0FQUEVORF9ICisKKyNpbmNsdWRlICJub2Rl cy9leGVjbm9kZXMuaCIKKworZXh0ZXJuIHZvaWQgRXhlY0luaXRBcHBlbmRCYXNlKEFwcGVuZEJh c2VTdGF0ZSAqc3RhdGUsCisJCQkJCQkJICAgQXBwZW5kQmFzZSAqbm9kZSwKKwkJCQkJCQkgICBF U3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkgICBpbnQgZWZsYWdzLAorCQkJCQkJCSAgIGludCBmaXJz dF9wYXJ0aWFsX3BsYW4sCisJCQkJCQkJICAgaW50ICpmaXJzdF92YWxpZF9wYXJ0aWFsX3BsYW4p OworZXh0ZXJuIHZvaWQgRXhlY0VuZEFwcGVuZEJhc2UoQXBwZW5kQmFzZVN0YXRlICpub2RlKTsK K2V4dGVybiB2b2lkIEV4ZWNSZVNjYW5BcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSk7 CisKKyNlbmRpZgkJCQkJCQkvKiBFWEVDQVBQRU5EX0ggKi8KLS0gCjIuNDMuMAoK --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v22-0004-Move-async-infrastructure-into-shared-AppendBase.patch Content-Disposition: attachment; filename=v22-0004-Move-async-infrastructure-into-shared-AppendBase.patch; size=20924 RnJvbSA0NGI3ZTUyMTJlNzk1NzBkNDljYzI1ODk0YjMwZmFlZTU3N2QxZTkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjQyOjMyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNC81XSBNb3ZlIGFzeW5jIGluZnJhc3RydWN0dXJlIGludG8gc2hhcmVkIEFwcGVu ZEJhc2UKIGZ1bmN0aW9ucwoKTW92ZSBhbGwgYXN5bmMtcmVsYXRlZCBjb2RlIGZyb20gbm9kZUFw cGVuZC5jIGludG8gdGhlIHNoYXJlZApleGVjQXBwZW5kLmMsIHByZXBhcmluZyBNZXJnZUFwcGVu ZCB0byBzdXBwb3J0IGFzeW5jIGZvcmVpZ24gc2NhbgpzdWJwbGFucy4KCiAgLSBFeGVjSW5pdEFw cGVuZEJhc2UoKSBub3cgZGV0ZWN0cyBhc3luYy1jYXBhYmxlIHN1YnBsYW5zIGFuZCBhbGxvY2F0 ZXMKICAgIGFzeW5jIHJlcXVlc3QvcmVzdWx0IHN0YXRlLgogIC0gRXhlY1JlU2NhbkFwcGVuZEJh c2UoKSBub3cgcmVzZXRzIGFzeW5jIHJlcXVlc3Qgc3RhdGUuCiAgLSBFeGVjQXBwZW5kQmFzZUFz eW5jQmVnaW4oKTogZmlyZSBhc3luYyByZXF1ZXN0cyAobW92ZWQgZnJvbQogICAgbm9kZUFwcGVu ZC5jJ3MgRXhlY0FwcGVuZEFzeW5jQmVnaW4pLgogIC0gRXhlY0FwcGVuZEJhc2VBc3luY0V2ZW50 V2FpdCgpOiB3YWl0L3BvbGwgZm9yIGFzeW5jIGV2ZW50cyAobW92ZWQKICAgIGZyb20gbm9kZUFw cGVuZC5jJ3MgRXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KS4KICAtIGNsYXNzaWZ5X21hdGNoaW5n X3N1YnBsYW5zX2NvbW1vbigpOiBuZXcgaGVscGVyIHRvIHNwbGl0IHZhbGlkCiAgICBzdWJwbGFu cyBpbnRvIHN5bmMgYW5kIGFzeW5jIHNldHMuCiAgLSBNZXJnZUFwcGVuZCBub3cgdXNlcyB2YWxp ZF9zdWJwbGFuc19pZGVudGlmaWVkIGZsYWcgaW5zdGVhZCBvZgogICAgY2hlY2tpbmcgdmFsaWRf c3VicGxhbnMgPT0gTlVMTC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNTliZTE5 NGM1YTQwOWZiOWZjOWYyMDMxNTgxYjhhNDQlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IE1hdGhl dXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBB bGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxl eGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IEFs ZW5hIFJ5YmFraW5hIDxhLnJ5YmFraW5hQHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYyAgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgIHwgMjE1ICsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyB8 ICAgNSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oICAgICAgfCAgIDcgKwog NCBmaWxlcyBjaGFuZ2VkLCAyNTkgaW5zZXJ0aW9ucygrKSwgMjAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYwppbmRleCA5NTk5ZDEwYTk1Mi4uMGNmMzQxZjZkNWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjQXBwZW5kLmMKQEAgLTE0LDggKzE0LDE0IEBACiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBcHBlbmQuaCIKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjQXN5bmMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9u LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZl bnRzZXQuaCIKKworI2RlZmluZSBFVkVOVF9CVUZGRVJfU0laRQkJCTE2CiAKIC8qICBCZWdpbiBh bGwgb2YgdGhlIHN1YnNjYW5zIG9mIGFuIEFwcGVuZEJhc2Ugbm9kZS4gKi8KIHZvaWQKQEAgLTI5 LDcgKzM1LDkgQEAgRXhlY0luaXRBcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqc3RhdGUsCiAJ UGxhblN0YXRlICoqYXBwZW5kcGxhbnN0YXRlczsKIAljb25zdCBUdXBsZVRhYmxlU2xvdE9wcyAq YXBwZW5kb3BzOwogCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnM7CisJQml0bWFwc2V0ICAqYXN5 bmNwbGFuczsKIAlpbnQJCQlucGxhbnM7CisJaW50CQkJbmFzeW5jcGxhbnM7CiAJaW50CQkJZmly c3R2YWxpZDsKIAlpbnQJCQlpLAogCQkJCWo7CkBAIC04NywxMiArOTUsMjUgQEAgRXhlY0luaXRB cHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0ZSAqc3RhdGUsCiAJICogV2hpbGUgYXQgaXQsIGZpbmQg b3V0IHRoZSBmaXJzdCB2YWxpZCBwYXJ0aWFsIHBsYW4uCiAJICovCiAJaiA9IDA7CisJYXN5bmNw bGFucyA9IE5VTEw7CisJbmFzeW5jcGxhbnMgPSAwOwogCWZpcnN0dmFsaWQgPSBucGxhbnM7CiAJ aSA9IC0xOwogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcih2YWxpZHN1YnBsYW5zLCBpKSkg Pj0gMCkKIAl7CiAJCVBsYW4JICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+ c3VicGxhbnMsIGkpOwogCisJCS8qCisJCSAqIFJlY29yZCBhc3luYyBzdWJwbGFucy4gIFdoZW4g ZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJlYXQgdGhlbQorCQkgKiBhcyBzeW5jIG9uZXM7 IGRvbid0IGRvIHRoaXMgd2hlbiBpbml0aWFsaXppbmcgYW4gRXZhbFBsYW5RdWFsIHBsYW4KKwkJ ICogdHJlZS4KKwkJICovCisJCWlmIChpbml0Tm9kZS0+YXN5bmNfY2FwYWJsZSAmJiBlc3RhdGUt PmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKKwkJeworCQkJYXN5bmNwbGFucyA9IGJtc19hZGRfbWVt YmVyKGFzeW5jcGxhbnMsIGopOworCQkJbmFzeW5jcGxhbnMrKzsKKwkJfQorCiAJCS8qCiAJCSAq IFJlY29yZCB0aGUgbG93ZXN0IGFwcGVuZHBsYW5zIGluZGV4IHdoaWNoIGlzIGEgdmFsaWQgcGFy dGlhbCBwbGFuLgogCQkgKi8KQEAgLTEzMCwxNSArMTUxLDM4IEBAIEV4ZWNJbml0QXBwZW5kQmFz ZShBcHBlbmRCYXNlU3RhdGUgKnN0YXRlLAogCQlzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBm YWxzZTsKIAl9CiAKLQkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlIHRvIHNhZmUgZGVmYXVsdHMg Ki8KLQlzdGF0ZS0+YXN5bmNwbGFucyA9IE5VTEw7Ci0Jc3RhdGUtPm5hc3luY3BsYW5zID0gMDsK KwkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCisJc3RhdGUtPmFzeW5jcGxhbnMgPSBhc3lu Y3BsYW5zOworCXN0YXRlLT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXN0YXRlLT5hc3lu Y3JlcXVlc3RzID0gTlVMTDsKIAlzdGF0ZS0+YXN5bmNyZXN1bHRzID0gTlVMTDsKIAlzdGF0ZS0+ bmVlZHJlcXVlc3QgPSBOVUxMOwogCXN0YXRlLT5ldmVudHNldCA9IE5VTEw7CiAJc3RhdGUtPnZh bGlkX2FzeW5jcGxhbnMgPSBOVUxMOwogCisJaWYgKG5hc3luY3BsYW5zID4gMCkKKwl7CisJCXN0 YXRlLT5hc3luY3JlcXVlc3RzID0gcGFsbG9jMF9hcnJheShBc3luY1JlcXVlc3QgKiwgbnBsYW5z KTsKKworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihhc3luY3BsYW5z LCBpKSkgPj0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxOworCisJCQlhcmVxID0gcGFs bG9jX29iamVjdChBc3luY1JlcXVlc3QpOworCQkJYXJlcS0+cmVxdWVzdG9yID0gKFBsYW5TdGF0 ZSAqKSBzdGF0ZTsKKwkJCWFyZXEtPnJlcXVlc3RlZSA9IGFwcGVuZHBsYW5zdGF0ZXNbaV07CisJ CQlhcmVxLT5yZXF1ZXN0X2luZGV4ID0gaTsKKwkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBm YWxzZTsKKwkJCWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKKwkJCWFyZXEtPnJlc3Vs dCA9IE5VTEw7CisKKwkJCXN0YXRlLT5hc3luY3JlcXVlc3RzW2ldID0gYXJlcTsKKwkJfQorCisJ CXN0YXRlLT5hc3luY3Jlc3VsdHMgPSBwYWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5h c3luY3BsYW5zKTsKKwl9CisKIAkvKgogCSAqIE1pc2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRpb24K IAkgKi8KQEAgLTE0OSw2ICsxOTMsNyBAQCB2b2lkCiBFeGVjUmVTY2FuQXBwZW5kQmFzZShBcHBl bmRCYXNlU3RhdGUgKm5vZGUpCiB7CiAJaW50CQkJaTsKKwlpbnQJCQluYXN5bmNwbGFucyA9IG5v ZGUtPm5hc3luY3BsYW5zOwogCiAJLyoKIAkgKiBJZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMgdXNl ZCBpbiBwcnVuaW5nIGV4cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgpAQCAtMTg0LDYgKzIy OSwxODkgQEAgRXhlY1JlU2NhbkFwcGVuZEJhc2UoQXBwZW5kQmFzZVN0YXRlICpub2RlKQogCQlp ZiAoc3Vibm9kZS0+Y2hnUGFyYW0gPT0gTlVMTCkKIAkJCUV4ZWNSZVNjYW4oc3Vibm9kZSk7CiAJ fQorCisJLyoKKwkgKiBSZXNldCBhc3luYyByZXF1ZXN0cy4gQXBwZW5kIG5vZGUgaGFzIGFscmVh ZHkgcG9sbGVkIGZvciBhc3luYyByZXF1ZXN0LgorCSAqLworCWlmIChuYXN5bmNwbGFucyA+IDAp CisJeworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc3lu Y3BsYW5zLCBpKSkgPj0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXN5 bmNyZXF1ZXN0c1tpXTsKKworCQkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19wZW5kaW5nKTsKKwkJ CWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKKwkJCWFyZXEtPnJlc3VsdCA9IE5VTEw7 CisJCX0KKworCQlibXNfZnJlZShub2RlLT5uZWVkcmVxdWVzdCk7CisJCW5vZGUtPm5lZWRyZXF1 ZXN0ID0gTlVMTDsKKwl9Cit9CisKKy8qICBXYWl0IG9yIHBvbGwgZm9yIGZpbGUgZGVzY3JpcHRv ciBldmVudHMgYW5kIGZpcmUgY2FsbGJhY2tzLiAqLwordm9pZAorRXhlY0FwcGVuZEJhc2VBc3lu Y0V2ZW50V2FpdChBcHBlbmRCYXNlU3RhdGUgKm5vZGUsIGludCB0aW1lb3V0LAorCQkJCQkJCSB1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQoreworCWludAkJCW5ldmVudHMgPSBub2RlLT5uYXN5bmNw bGFucyArIDI7CS8qIG9uZSBmb3IgUE0gZGVhdGggYW5kCisJCQkJCQkJCQkJCQkJICogb25lIGZv ciBsYXRjaCAqLworCWludAkJCW5vY2N1cnJlZDsKKwlpbnQJCQlpOworCVdhaXRFdmVudAlvY2N1 cnJlZF9ldmVudFtFVkVOVF9CVUZGRVJfU0laRV07CisKKwlBc3NlcnQobm9kZS0+ZXZlbnRzZXQg PT0gTlVMTCk7CisKKwlub2RlLT5ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50 UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7CisJQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+ZXZlbnRz ZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgTlVMTCwg TlVMTCk7CisKKwkvKiBHaXZlIGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBh biBldmVudC4gKi8KKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUt PmFzeW5jcGxhbnMsIGkpKSA+PSAwKQorCXsKKwkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+ YXN5bmNyZXF1ZXN0c1tpXTsKKworCQlpZiAoYXJlcS0+Y2FsbGJhY2tfcGVuZGluZykKKwkJCUV4 ZWNBc3luY0NvbmZpZ3VyZVdhaXQoYXJlcSk7CisJfQorCisJLyoKKwkgKiBObyBuZWVkIGZvciBm dXJ0aGVyIHByb2Nlc3NpbmcgaWYgbm9uZSBvZiB0aGUgc3VicGxhbnMgY29uZmlndXJlZCBhbnkK KwkgKiBldmVudHMuCisJICovCisJaWYgKEdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKG5vZGUt PmV2ZW50c2V0KSA9PSAxKQorCXsKKwkJRnJlZVdhaXRFdmVudFNldChub2RlLT5ldmVudHNldCk7 CisJCW5vZGUtPmV2ZW50c2V0ID0gTlVMTDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogQWRk IHRoZSBwcm9jZXNzIGxhdGNoIHRvIHRoZSBzZXQsIHNvIHRoYXQgd2Ugd2FrZSB1cCB0byBwcm9j ZXNzIHRoZQorCSAqIHN0YW5kYXJkIGludGVycnVwdHMgd2l0aCBDSEVDS19GT1JfSU5URVJSVVBU UygpLgorCSAqCisJICogTk9URTogRm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXQncyBpbXBvcnRh bnQgdGhhdCB0aGlzIGlzIGFkZGVkIHRvIHRoZQorCSAqIFdhaXRFdmVudFNldCBhZnRlciB0aGUg RXhlY0FzeW5jQ29uZmlndXJlV2FpdCgpIGNhbGxzLiAgTmFtZWx5LAorCSAqIHBvc3RncmVzX2Zk dyBjYWxscyAiR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoc2V0KSA9PSAxIiB0byBjaGVjayBp ZgorCSAqIGFueSBvdGhlciBldmVudHMgYXJlIGluIHRoZSBzZXQuICBUaGF0J3MgYSBwb29yIGRl c2lnbiwgaXQncworCSAqIHF1ZXN0aW9uYWJsZSBmb3IgcG9zdGdyZXNfZmR3IHRvIGJlIGRvaW5n IHRoYXQgaW4gdGhlIGZpcnN0IHBsYWNlLCBidXQKKwkgKiB3ZSBjYW5ub3QgY2hhbmdlIGl0IG5v dy4gIFRoZSBwYXR0ZXJuIGhhcyBwb3NzaWJseSBiZWVuIGNvcGllZCB0byBvdGhlcgorCSAqIGV4 dGVuc2lvbnMgdG9vLgorCSAqLworCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmV2ZW50c2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CisK KwkvKiBSZXR1cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwu ICovCisJaWYgKG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0laRSkKKwkJbmV2ZW50cyA9IEVWRU5U X0JVRkZFUl9TSVpFOworCisJLyoKKwkgKiBJZiB0aGUgdGltZW91dCBpcyAtMSwgd2FpdCB1bnRp bCBhdCBsZWFzdCBvbmUgZXZlbnQgb2NjdXJzLiAgSWYgdGhlCisJICogdGltZW91dCBpcyAwLCBw b2xsIGZvciBldmVudHMsIGJ1dCBkbyBub3Qgd2FpdCBhdCBhbGwuCisJICovCisJbm9jY3VycmVk ID0gV2FpdEV2ZW50U2V0V2FpdChub2RlLT5ldmVudHNldCwgdGltZW91dCwgb2NjdXJyZWRfZXZl bnQsCisJCQkJCQkJCSBuZXZlbnRzLCB3YWl0X2V2ZW50X2luZm8pOworCUZyZWVXYWl0RXZlbnRT ZXQobm9kZS0+ZXZlbnRzZXQpOworCW5vZGUtPmV2ZW50c2V0ID0gTlVMTDsKKwlpZiAobm9jY3Vy cmVkID09IDApCisJCXJldHVybjsKKworCS8qIERlbGl2ZXIgbm90aWZpY2F0aW9ucy4gKi8KKwlm b3IgKGkgPSAwOyBpIDwgbm9jY3VycmVkOyBpKyspCisJeworCQlXYWl0RXZlbnQgICp3ID0gJm9j Y3VycmVkX2V2ZW50W2ldOworCisJCS8qCisJCSAqIEVhY2ggd2FpdGluZyBzdWJwbGFuIHNob3Vs ZCBoYXZlIHJlZ2lzdGVyZWQgaXRzIHdhaXQgZXZlbnQgd2l0aAorCQkgKiB1c2VyX2RhdGEgcG9p bnRpbmcgYmFjayB0byBpdHMgQXN5bmNSZXF1ZXN0LgorCQkgKi8KKwkJaWYgKCh3LT5ldmVudHMg JiBXTF9TT0NLRVRfUkVBREFCTEUpICE9IDApCisJCXsKKwkJCUFzeW5jUmVxdWVzdCAqYXJlcSA9 IChBc3luY1JlcXVlc3QgKikgdy0+dXNlcl9kYXRhOworCisJCQlpZiAoYXJlcS0+Y2FsbGJhY2tf cGVuZGluZykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1hcmsgaXQgYXMgbm8gbG9uZ2VyIG5lZWRp bmcgYSBjYWxsYmFjay4gIFdlIG11c3QgZG8gdGhpcworCQkJCSAqIGJlZm9yZSBkaXNwYXRjaGlu ZyB0aGUgY2FsbGJhY2sgaW4gY2FzZSB0aGUgY2FsbGJhY2sgcmVzZXRzCisJCQkJICogdGhlIGZs YWcuCisJCQkJICovCisJCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOworCisJCQkJ LyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLworCQkJCUV4ZWNBc3luY05vdGlmeShhcmVxKTsKKwkJ CX0KKwkJfQorCisJCS8qIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzICovCisJCWlmICgody0+ ZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAhPSAwKQorCQl7CisJCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCX0KK30KKworLyogIEJlZ2luIGV4 ZWN1dGluZyBhc3luYy1jYXBhYmxlIHN1YnBsYW5zLiAqLwordm9pZAorRXhlY0FwcGVuZEJhc2VB c3luY0JlZ2luKEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSkKK3sKKwlpbnQJCQlpOworCisJLyogQmFj a3dhcmQgc2NhbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGFzeW5jLWF3YXJlIEFwcGVuZHMuICovCisJ QXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlv bikpOworCisJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBz dWJwbGFucyAqLworCUFzc2VydChub2RlLT5ucGxhbnMgPiAwKTsKKworCS8qIFdlIHNob3VsZCBu ZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gYXN5bmMgc3VicGxhbnMuICovCisJQXNz ZXJ0KG5vZGUtPm5hc3luY3BsYW5zID4gMCk7CisKKwkvKiBNYWtlIGEgcmVxdWVzdCBmb3IgZWFj aCBvZiB0aGUgdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCisJaSA9IC0xOworCXdoaWxlICgoaSA9 IGJtc19uZXh0X21lbWJlcihub2RlLT52YWxpZF9hc3luY3BsYW5zLCBpKSkgPj0gMCkKKwl7CisJ CUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzeW5jcmVxdWVzdHNbaV07CisKKwkJQXNzZXJ0 KGFyZXEtPnJlcXVlc3RfaW5kZXggPT0gaSk7CisJCUFzc2VydCghYXJlcS0+Y2FsbGJhY2tfcGVu ZGluZyk7CisKKwkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLworCQlFeGVjQXN5bmNSZXF1ZXN0 KGFyZXEpOworCX0KK30KKworLyoKKyAqIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1v bgorICoJCUNvbW1vbiBwYXJ0IG9mIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKCkgZm9yIEFw cGVuZCBhbmQgTWVyZ2VBcHBlbmQuCisgKgorICogU3BsaXRzIHZhbGlkX3N1YnBsYW5zIGludG8g c3luYyBhbmQgYXN5bmMgc2V0cy4gIFJldHVybnMgZmFsc2UgaWYgdGhlcmUKKyAqIGFyZSBubyB2 YWxpZCBhc3luYyBzdWJwbGFucywgdHJ1ZSBvdGhlcndpc2UuCisgKi8KK2Jvb2wKK2NsYXNzaWZ5 X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1vbihCaXRtYXBzZXQgKip2YWxpZF9zdWJwbGFucywKKwkJ CQkJCQkJICBCaXRtYXBzZXQgKmFzeW5jcGxhbnMsCisJCQkJCQkJCSAgQml0bWFwc2V0ICoqdmFs aWRfYXN5bmNwbGFucykKK3sKKwlBc3NlcnQoKnZhbGlkX2FzeW5jcGxhbnMgPT0gTlVMTCk7CisK KwkvKiBDaGVja2VkIGJ5IGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKCkgKi8KKwlBc3NlcnQo IWJtc19pc19lbXB0eSgqdmFsaWRfc3VicGxhbnMpKTsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYg dGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLworCWlmICghYm1zX292ZXJsYXAo KnZhbGlkX3N1YnBsYW5zLCBhc3luY3BsYW5zKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogR2V0 IHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLworCSp2YWxpZF9hc3luY3BsYW5zID0gYm1zX2ludGVy c2VjdChhc3luY3BsYW5zLAorCQkJCQkJCQkJICAqdmFsaWRfc3VicGxhbnMpOworCisJLyogQWRq dXN0IHRoZSB2YWxpZCBzdWJwbGFucyB0byBjb250YWluIHN5bmMgc3VicGxhbnMgb25seS4gKi8K KwkqdmFsaWRfc3VicGxhbnMgPSBibXNfZGVsX21lbWJlcnMoKnZhbGlkX3N1YnBsYW5zLAorCQkJ CQkJCQkJICAqdmFsaWRfYXN5bmNwbGFucyk7CisJcmV0dXJuIHRydWU7CiB9CiAKIC8qICBTaHV0 cyBkb3duIHRoZSBzdWJwbGFucyBvZiBhbiBBcHBlbmRCYXNlIG5vZGUuICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQXBwZW5kLmMKaW5kZXggMjZkOWVmMjE4MWQuLjE5ZDM0NGU2ZDcyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC04NSw3ICs4NSw2IEBAIHN0cnVjdCBQYXJhbGxlbEFwcGVu ZFN0YXRlCiB9OwogCiAjZGVmaW5lIElOVkFMSURfU1VCUExBTl9JTkRFWAkJLTEKLSNkZWZpbmUg RVZFTlRfQlVGRkVSX1NJWkUJCQkxNgogCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNBcHBl bmQoUGxhblN0YXRlICpwc3RhdGUpOwogc3RhdGljIGJvb2wgY2hvb3NlX25leHRfc3VicGxhbl9s b2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKTsKQEAgLTk2LDcgKzk1LDcgQEAgc3RhdGljIHZvaWQg RXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpOwogc3RhdGljIGJvb2wgRXhl Y0FwcGVuZEFzeW5jR2V0TmV4dChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipy ZXN1bHQpOwogc3RhdGljIGJvb2wgRXhlY0FwcGVuZEFzeW5jUmVxdWVzdChBcHBlbmRTdGF0ZSAq bm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQpOwogc3RhdGljIHZvaWQgRXhlY0FwcGVuZEFz eW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKTsKLXN0YXRpYyB2b2lkIEV4ZWNBcHBlbmRB c3luY1Jlc2V0KEFwcGVuZFN0YXRlICpub2RlKTsKK3N0YXRpYyB2b2lkIEV4ZWNBcHBlbmREcmFp bkFzeW5jUmVxdWVzdHMoQXBwZW5kU3RhdGUgKm5vZGUpOwogc3RhdGljIHZvaWQgY2xhc3NpZnlf bWF0Y2hpbmdfc3VicGxhbnMoQXBwZW5kU3RhdGUgKm5vZGUpOwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x MTQsMTAgKzExMyw2IEBAIEFwcGVuZFN0YXRlICoKIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJQXBwZW5kU3RhdGUgKmFwcGVuZHN0 YXRlID0gbWFrZU5vZGUoQXBwZW5kU3RhdGUpOwotCUJpdG1hcHNldCAgKmFzeW5jcGxhbnM7Ci0J aW50CQkJbmFzeW5jcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7CiAKIAkvKiBjaGVj ayBmb3IgdW5zdXBwb3J0ZWQgZmxhZ3MgKi8KIAlBc3NlcnQoIShlZmxhZ3MgJiBFWEVDX0ZMQUdf TUFSSykpOwpAQCAtMTQyLDU3ICsxMzcsMTEgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJICAgbm9kZS0+Zmlyc3RfcGFydGlh bF9wbGFuLAogCQkJCQkgICAmYXBwZW5kc3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbik7CiAK LQlucGxhbnMgPSBhcHBlbmRzdGF0ZS0+YXMubnBsYW5zOworCWlmIChhcHBlbmRzdGF0ZS0+YXMu bmFzeW5jcGxhbnMgPiAwICYmIGFwcGVuZHN0YXRlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlm aWVkKQorCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhhcHBlbmRzdGF0ZSk7CiAKLQkvKgot CSAqIERldGVjdCBhc3luYy1jYXBhYmxlIHN1YnBsYW5zLiAgV2hlbiBleGVjdXRpbmcgRXZhbFBs YW5RdWFsLCB3ZSB0cmVhdAotCSAqIHRoZW0gYXMgc3luYyBvbmVzOyBkb24ndCBkbyB0aGlzIHdo ZW4gaW5pdGlhbGl6aW5nIGFuIEV2YWxQbGFuUXVhbCBwbGFuCi0JICogdHJlZS4KLQkgKi8KLQlh c3luY3BsYW5zID0gTlVMTDsKLQluYXN5bmNwbGFucyA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IG5w bGFuczsgaSsrKQotCXsKLQkJaWYgKGFwcGVuZHN0YXRlLT5hcy5wbGFuc1tpXS0+cGxhbi0+YXN5 bmNfY2FwYWJsZSAmJgotCQkJZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0JCXsKLQkJ CWFzeW5jcGxhbnMgPSBibXNfYWRkX21lbWJlcihhc3luY3BsYW5zLCBpKTsKLQkJCW5hc3luY3Bs YW5zKys7Ci0JCX0KLQl9Ci0KLQkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCi0JYXBwZW5k c3RhdGUtPmFzLmFzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwotCWFwcGVuZHN0YXRlLT5hcy5uYXN5 bmNwbGFucyA9IG5hc3luY3BsYW5zOwotCWFwcGVuZHN0YXRlLT5hc19uYXN5bmNyZXN1bHRzID0g MDsKIAlhcHBlbmRzdGF0ZS0+YXNfbmFzeW5jcmVtYWluID0gMDsKIAotCWlmIChuYXN5bmNwbGFu cyA+IDApCi0JewotCQlhcHBlbmRzdGF0ZS0+YXMuYXN5bmNyZXF1ZXN0cyA9IHBhbGxvYzBfYXJy YXkoQXN5bmNSZXF1ZXN0ICosIG5wbGFucyk7Ci0KLQkJaSA9IC0xOwotCQl3aGlsZSAoKGkgPSBi bXNfbmV4dF9tZW1iZXIoYXN5bmNwbGFucywgaSkpID49IDApCi0JCXsKLQkJCUFzeW5jUmVxdWVz dCAqYXJlcTsKLQotCQkJYXJlcSA9IHBhbGxvY19vYmplY3QoQXN5bmNSZXF1ZXN0KTsKLQkJCWFy ZXEtPnJlcXVlc3RvciA9IChQbGFuU3RhdGUgKikgYXBwZW5kc3RhdGU7Ci0JCQlhcmVxLT5yZXF1 ZXN0ZWUgPSBhcHBlbmRzdGF0ZS0+YXMucGxhbnNbaV07Ci0JCQlhcmVxLT5yZXF1ZXN0X2luZGV4 ID0gaTsKLQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBmYWxzZTsKLQkJCWFyZXEtPnJlcXVl c3RfY29tcGxldGUgPSBmYWxzZTsKLQkJCWFyZXEtPnJlc3VsdCA9IE5VTEw7Ci0KLQkJCWFwcGVu ZHN0YXRlLT5hcy5hc3luY3JlcXVlc3RzW2ldID0gYXJlcTsKLQkJfQotCi0JCWFwcGVuZHN0YXRl LT5hcy5hc3luY3Jlc3VsdHMgPSBwYWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG5hc3lu Y3BsYW5zKTsKLQotCQlpZiAoYXBwZW5kc3RhdGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZp ZWQpCi0JCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhhcHBlbmRzdGF0ZSk7Ci0JfQotCiAJ LyogRm9yIHBhcmFsbGVsIHF1ZXJ5LCB0aGlzIHdpbGwgYmUgb3ZlcnJpZGRlbiBsYXRlci4gKi8K IAlhcHBlbmRzdGF0ZS0+Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29zZV9uZXh0X3N1YnBsYW5f bG9jYWxseTsKIApAQCAtMzEyLDE0ICsyNjEsMTcgQEAgRXhlY0VuZEFwcGVuZChBcHBlbmRTdGF0 ZSAqbm9kZSkKIHZvaWQKIEV4ZWNSZVNjYW5BcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiB7CisK IAlpbnQJCQluYXN5bmNwbGFucyA9IG5vZGUtPmFzLm5hc3luY3BsYW5zOwogCi0JLyogSWYgdGhl cmUgYXJlIGFueSBhc3luYyBzdWJwbGFucywgcmVzZXQgYXN5bmMgcmVxdWVzdHMgbWFkZSBmb3Ig dGhlbS4gKi8KKwkvKiBJZiB0aGVyZSBhcmUgYW55IGFzeW5jIHN1YnBsYW5zLCBkcmFpbiBhc3lu YyByZXF1ZXN0cyBtYWRlIGZvciB0aGVtLiAqLwogCWlmIChuYXN5bmNwbGFucyA+IDApCi0JCUV4 ZWNBcHBlbmRBc3luY1Jlc2V0KG5vZGUpOworCQlFeGVjQXBwZW5kRHJhaW5Bc3luY1JlcXVlc3Rz KG5vZGUpOwogCiAJRXhlY1JlU2NhbkFwcGVuZEJhc2UoJm5vZGUtPmFzKTsKIAorCS8qIFJlc2V0 IEFwcGVuZC1zcGVjaWZpYyBzdGF0ZSAqLworCiAJLyogTGV0IGNob29zZV9uZXh0X3N1YnBsYW5f KiBmdW5jdGlvbiBoYW5kbGUgc2V0dGluZyB0aGUgZmlyc3Qgc3VicGxhbiAqLwogCW5vZGUtPmFz X3doaWNocGxhbiA9IElOVkFMSURfU1VCUExBTl9JTkRFWDsKIAlub2RlLT5hc19zeW5jZG9uZSA9 IGZhbHNlOwpAQCAtNzM3LDIxICs2ODksNyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRT dGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+YXNfbmFzeW5jcmVtYWluID09IDApCiAJCXJldHVybjsK IAotCS8qIE1ha2UgYSByZXF1ZXN0IGZvciBlYWNoIG9mIHRoZSB2YWxpZCBhc3luYyBzdWJwbGFu cy4gKi8KLQl7Ci0JCWludAkJCWkgPSAtMTsKLQotCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1i ZXIobm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucywgaSkpID49IDApCi0JCXsKLQkJCUFzeW5jUmVx dWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07Ci0KLQkJCUFzc2VydChhcmVx LT5yZXF1ZXN0X2luZGV4ID09IGkpOwotCQkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19wZW5kaW5n KTsKLQotCQkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwotCQkJRXhlY0FzeW5jUmVxdWVzdChh cmVxKTsKLQkJfQotCX0KKwlFeGVjQXBwZW5kQmFzZUFzeW5jQmVnaW4oJm5vZGUtPmFzKTsKIH0K IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtODY2LDExNSArODA0LDIyIEBAIEV4ZWNBcHBlbmRBc3luY1JlcXVl c3QoQXBwZW5kU3RhdGUgKm5vZGUsIFR1cGxlVGFibGVTbG90ICoqcmVzdWx0KQogc3RhdGljIHZv aWQKIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlpbnQJ CQluZXZlbnRzID0gbm9kZS0+YXMubmFzeW5jcGxhbnMgKyAyOwogCWxvbmcJCXRpbWVvdXQgPSBu b2RlLT5hc19zeW5jZG9uZSA/IC0xIDogMDsKLQlXYWl0RXZlbnQJb2NjdXJyZWRfZXZlbnRbRVZF TlRfQlVGRkVSX1NJWkVdOwotCWludAkJCW5vY2N1cnJlZDsKLQlpbnQJCQlpOwogCiAJLyogV2Ug c2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyB2YWxpZCBhc3luYyBzdWJw bGFucy4gKi8KIAlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVtYWluID4gMCk7CiAKLQlBc3NlcnQo bm9kZS0+YXMuZXZlbnRzZXQgPT0gTlVMTCk7Ci0Jbm9kZS0+YXMuZXZlbnRzZXQgPSBDcmVhdGVX YWl0RXZlbnRTZXQoQ3VycmVudFJlc291cmNlT3duZXIsIG5ldmVudHMpOwotCUFkZFdhaXRFdmVu dFRvU2V0KG5vZGUtPmFzLmV2ZW50c2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURf U09DS0VULAotCQkJCQkgIE5VTEwsIE5VTEwpOwotCi0JLyogR2l2ZSBlYWNoIHdhaXRpbmcgc3Vi cGxhbiBhIGNoYW5jZSB0byBhZGQgYW4gZXZlbnQuICovCi0JaSA9IC0xOwotCXdoaWxlICgoaSA9 IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy5hc3luY3BsYW5zLCBpKSkgPj0gMCkKLQl7Ci0JCUFz eW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07Ci0KLQkJaWYgKGFy ZXEtPmNhbGxiYWNrX3BlbmRpbmcpCi0JCQlFeGVjQXN5bmNDb25maWd1cmVXYWl0KGFyZXEpOwot CX0KLQotCS8qCi0JICogTm8gbmVlZCBmb3IgZnVydGhlciBwcm9jZXNzaW5nIGlmIG5vbmUgb2Yg dGhlIHN1YnBsYW5zIGNvbmZpZ3VyZWQgYW55Ci0JICogZXZlbnRzLgotCSAqLwotCWlmIChHZXRO dW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhub2RlLT5hcy5ldmVudHNldCkgPT0gMSkKLQl7Ci0JCUZy ZWVXYWl0RXZlbnRTZXQobm9kZS0+YXMuZXZlbnRzZXQpOwotCQlub2RlLT5hcy5ldmVudHNldCA9 IE5VTEw7Ci0JCXJldHVybjsKLQl9Ci0KLQkvKgotCSAqIEFkZCB0aGUgcHJvY2VzcyBsYXRjaCB0 byB0aGUgc2V0LCBzbyB0aGF0IHdlIHdha2UgdXAgdG8gcHJvY2VzcyB0aGUKLQkgKiBzdGFuZGFy ZCBpbnRlcnJ1cHRzIHdpdGggQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KLQkgKgotCSAqIE5PVEU6 IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBpcyBhZGRl ZCB0byB0aGUKLQkgKiBXYWl0RXZlbnRTZXQgYWZ0ZXIgdGhlIEV4ZWNBc3luY0NvbmZpZ3VyZVdh aXQoKSBjYWxscy4gIE5hbWVseSwKLQkgKiBwb3N0Z3Jlc19mZHcgY2FsbHMgIkdldE51bVJlZ2lz dGVyZWRXYWl0RXZlbnRzKHNldCkgPT0gMSIgdG8gY2hlY2sgaWYKLQkgKiBhbnkgb3RoZXIgZXZl bnRzIGFyZSBpbiB0aGUgc2V0LiAgVGhhdCdzIGEgcG9vciBkZXNpZ24sIGl0J3MKLQkgKiBxdWVz dGlvbmFibGUgZm9yIHBvc3RncmVzX2ZkdyB0byBiZSBkb2luZyB0aGF0IGluIHRoZSBmaXJzdCBw bGFjZSwgYnV0Ci0JICogd2UgY2Fubm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBoYXMg cG9zc2libHkgYmVlbiBjb3BpZWQgdG8gb3RoZXIKLQkgKiBleHRlbnNpb25zIHRvby4KLQkgKi8K LQlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hcy5ldmVudHNldCwgV0xfTEFUQ0hfU0VULCBQR0lO VkFMSURfU09DS0VULAotCQkJCQkgIE15TGF0Y2gsIE5VTEwpOwotCi0JLyogUmV0dXJuIGF0IG1v c3QgRVZFTlRfQlVGRkVSX1NJWkUgZXZlbnRzIGluIG9uZSBjYWxsLiAqLwotCWlmIChuZXZlbnRz ID4gRVZFTlRfQlVGRkVSX1NJWkUpCi0JCW5ldmVudHMgPSBFVkVOVF9CVUZGRVJfU0laRTsKLQot CS8qCi0JICogSWYgdGhlIHRpbWVvdXQgaXMgLTEsIHdhaXQgdW50aWwgYXQgbGVhc3Qgb25lIGV2 ZW50IG9jY3Vycy4gIElmIHRoZQotCSAqIHRpbWVvdXQgaXMgMCwgcG9sbCBmb3IgZXZlbnRzLCBi dXQgZG8gbm90IHdhaXQgYXQgYWxsLgotCSAqLwotCW5vY2N1cnJlZCA9IFdhaXRFdmVudFNldFdh aXQobm9kZS0+YXMuZXZlbnRzZXQsIHRpbWVvdXQsIG9jY3VycmVkX2V2ZW50LAotCQkJCQkJCQkg bmV2ZW50cywgV0FJVF9FVkVOVF9BUFBFTkRfUkVBRFkpOwotCUZyZWVXYWl0RXZlbnRTZXQobm9k ZS0+YXMuZXZlbnRzZXQpOwotCW5vZGUtPmFzLmV2ZW50c2V0ID0gTlVMTDsKLQlpZiAobm9jY3Vy cmVkID09IDApCi0JCXJldHVybjsKLQotCS8qIERlbGl2ZXIgbm90aWZpY2F0aW9ucy4gKi8KLQlm b3IgKGkgPSAwOyBpIDwgbm9jY3VycmVkOyBpKyspCi0JewotCQlXYWl0RXZlbnQgICp3ID0gJm9j Y3VycmVkX2V2ZW50W2ldOwotCi0JCS8qCi0JCSAqIEVhY2ggd2FpdGluZyBzdWJwbGFuIHNob3Vs ZCBoYXZlIHJlZ2lzdGVyZWQgaXRzIHdhaXQgZXZlbnQgd2l0aAotCQkgKiB1c2VyX2RhdGEgcG9p bnRpbmcgYmFjayB0byBpdHMgQXN5bmNSZXF1ZXN0LgotCQkgKi8KLQkJaWYgKCh3LT5ldmVudHMg JiBXTF9TT0NLRVRfUkVBREFCTEUpICE9IDApCi0JCXsKLQkJCUFzeW5jUmVxdWVzdCAqYXJlcSA9 IChBc3luY1JlcXVlc3QgKikgdy0+dXNlcl9kYXRhOwotCi0JCQlpZiAoYXJlcS0+Y2FsbGJhY2tf cGVuZGluZykKLQkJCXsKLQkJCQkvKgotCQkJCSAqIE1hcmsgaXQgYXMgbm8gbG9uZ2VyIG5lZWRp bmcgYSBjYWxsYmFjay4gIFdlIG11c3QgZG8gdGhpcwotCQkJCSAqIGJlZm9yZSBkaXNwYXRjaGlu ZyB0aGUgY2FsbGJhY2sgaW4gY2FzZSB0aGUgY2FsbGJhY2sgcmVzZXRzCi0JCQkJICogdGhlIGZs YWcuCi0JCQkJICovCi0JCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwotCi0JCQkJ LyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwotCQkJCUV4ZWNBc3luY05vdGlmeShhcmVxKTsKLQkJ CX0KLQkJfQotCi0JCS8qIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzICovCi0JCWlmICgody0+ ZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAhPSAwKQotCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gp OwotCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJfQotCX0KKwlFeGVjQXBwZW5kQmFzZUFz eW5jRXZlbnRXYWl0KCZub2RlLT5hcywgdGltZW91dCwgV0FJVF9FVkVOVF9BUFBFTkRfUkVBRFkp OwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gKgkJRXhlY0FwcGVuZEFzeW5jUmVzZXQKKyAqCQlFeGVjQXBw ZW5kRHJhaW5Bc3luY1JlcXVlc3RzCiAgKgotICoJCVJlc2V0IGFzeW5jaHJvbm91cyByZXF1ZXN0 cyBtYWRlIGZvciBhc3luYy1jYXBhYmxlIHN1YnBsYW5zLgorICoJCURyYWluIGFzeW5jaHJvbm91 cyByZXF1ZXN0cyBtYWRlIGZvciBhc3luYy1jYXBhYmxlIHN1YnBsYW5zLgogICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICovCiBzdGF0aWMgdm9pZAotRXhlY0FwcGVuZEFzeW5jUmVzZXQoQXBwZW5kU3RhdGUgKm5vZGUp CitFeGVjQXBwZW5kRHJhaW5Bc3luY1JlcXVlc3RzKEFwcGVuZFN0YXRlICpub2RlKQogewogCWlu dAkJCWk7CiAKQEAgLTEwMjMsMTcgKzg2OCw2IEBAIEV4ZWNBcHBlbmRBc3luY1Jlc2V0KEFwcGVu ZFN0YXRlICpub2RlKQogCQlFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQobm9kZSk7CiAJfQogCi0J LyogUmVzZXQgYXN5bmMgcmVxdWVzdHMuICovCi0JaSA9IC0xOwotCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcihub2RlLT5hcy5hc3luY3BsYW5zLCBpKSkgPj0gMCkKLQl7Ci0JCUFzeW5jUmVx dWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5jcmVxdWVzdHNbaV07Ci0KLQkJQXNzZXJ0KCFhcmVx LT5jYWxsYmFja19wZW5kaW5nKTsKLQkJYXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOwot CQlhcmVxLT5yZXN1bHQgPSBOVUxMOwotCX0KLQogCS8qIFJlc2V0IHN0YXRlIHZhcmlhYmxlcy4g Ki8KIAlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVzdWx0cyA9PSAwKTsKIAlBc3NlcnQobm9kZS0+ YXMubmVlZHJlcXVlc3QgPT0gTlVMTCk7CkBAIC0xMDk1LDEwICs5MjksNyBAQCBFeGVjQXN5bmNB cHBlbmRSZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpCiBzdGF0aWMgdm9pZAogY2xhc3NpZnlf bWF0Y2hpbmdfc3VicGxhbnMoQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JQml0bWFwc2V0ICAqdmFs aWRfYXN5bmNwbGFuczsKLQogCUFzc2VydChub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlm aWVkKTsKLQlBc3NlcnQobm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucyA9PSBOVUxMKTsKIAogCS8q IE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIHN1YnBsYW5zLiAqLwogCWlmIChi bXNfaXNfZW1wdHkobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpKQpAQCAtMTEwOCwyMSArOTM5LDkg QEAgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCXJldHVy bjsKIAl9CiAKLQkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyB2YWxpZCBhc3luYyBz dWJwbGFucy4gKi8KLQlpZiAoIWJtc19vdmVybGFwKG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zLCBu b2RlLT5hcy5hc3luY3BsYW5zKSkKLQl7CisJLyogTm8gdmFsaWQgYXN5bmMgc3VicGxhbnMgaWRl bnRpZmllZC4gKi8KKwlpZiAoIWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1vbigmbm9k ZS0+YXMudmFsaWRfc3VicGxhbnMsCisJCQkJCQkJCQkJICAgbm9kZS0+YXMuYXN5bmNwbGFucywK KwkJCQkJCQkJCQkgICAmbm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucykpCiAJCW5vZGUtPmFzX25h c3luY3JlbWFpbiA9IDA7Ci0JCXJldHVybjsKLQl9Ci0KLQkvKiBHZXQgdmFsaWQgYXN5bmMgc3Vi cGxhbnMuICovCi0JdmFsaWRfYXN5bmNwbGFucyA9IGJtc19pbnRlcnNlY3Qobm9kZS0+YXMuYXN5 bmNwbGFucywKLQkJCQkJCQkJCSBub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7Ci0KLQkvKiBBZGp1 c3QgdGhlIHZhbGlkIHN1YnBsYW5zIHRvIGNvbnRhaW4gc3luYyBzdWJwbGFucyBvbmx5LiAqLwot CW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zID0gYm1zX2RlbF9tZW1iZXJzKG5vZGUtPmFzLnZhbGlk X3N1YnBsYW5zLAotCQkJCQkJCQkJCQkgIHZhbGlkX2FzeW5jcGxhbnMpOwotCi0JLyogU2F2ZSB2 YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KLQlub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zID0gdmFs aWRfYXN5bmNwbGFuczsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5k ZXggMjU3NWQ2YTQ5OWYuLjhkOGE1MDJlOTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYwpAQCAtMTUzLDkgKzE1MywxMiBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRl ICpwc3RhdGUpCiAJCSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgZGlzYWJsZWQgdGhlbiB0aGUgdmFs aWQgc3VicGxhbnMgd2lsbCBhbHdheXMgYmUKIAkJICogc2V0IHRvIGFsbCBzdWJwbGFucy4KIAkJ ICovCi0JCWlmIChub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9PSBOVUxMKQorCQlpZiAoIW5vZGUt PmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCisJCXsKIAkJCW5vZGUtPmFzLnZhbGlkX3N1 YnBsYW5zID0KIAkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMucHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKKwkJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQg PSB0cnVlOworCQl9CiAKIAkJLyoKIAkJICogRmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRoZSBm aXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQgc3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNBcHBl bmQuaAppbmRleCBhOGY0MWJhZDkyMS4uN2Y1M2FkODkyMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj QXBwZW5kLmgKQEAgLTIyLDUgKzIyLDEyIEBAIGV4dGVybiB2b2lkIEV4ZWNJbml0QXBwZW5kQmFz ZShBcHBlbmRCYXNlU3RhdGUgKnN0YXRlLAogCQkJCQkJCSAgIGludCAqZmlyc3RfdmFsaWRfcGFy dGlhbF9wbGFuKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRBcHBlbmRCYXNlKEFwcGVuZEJhc2VTdGF0 ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuQXBwZW5kQmFzZShBcHBlbmRCYXNlU3Rh dGUgKm5vZGUpOworZXh0ZXJuIHZvaWQgRXhlY0FwcGVuZEJhc2VBc3luY0JlZ2luKEFwcGVuZEJh c2VTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjQXBwZW5kQmFzZUFzeW5jRXZlbnRXYWl0 KEFwcGVuZEJhc2VTdGF0ZSAqbm9kZSwKKwkJCQkJCQkJCQkgaW50IHRpbWVvdXQsCisJCQkJCQkJ CQkJIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGJvb2wgY2xhc3NpZnlfbWF0Y2hp bmdfc3VicGxhbnNfY29tbW9uKEJpdG1hcHNldCAqKnZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkJ CQkgIEJpdG1hcHNldCAqYXN5bmNwbGFucywKKwkJCQkJCQkJCQkJICBCaXRtYXBzZXQgKip2YWxp ZF9hc3luY3BsYW5zKTsKIAogI2VuZGlmCQkJCQkJCS8qIEVYRUNBUFBFTkRfSCAqLwotLSAKMi40 My4wCgo= --=_af6f24791e4237051ef45f4a389338e7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v22-0005-MergeAppend-should-support-Async-Foreign-Scan-su.patch Content-Disposition: attachment; filename=v22-0005-MergeAppend-should-support-Async-Foreign-Scan-su.patch; size=60413 RnJvbSA0MWU2ODQ2YThlZTRlYjZjNGU1YWVhMmRhNWI1Y2E0Y2M5ODJkNDk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA1IEFwciAyMDI2IDA0OjQ3OjEwICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNS81XSBNZXJnZUFwcGVuZCBzaG91bGQgc3VwcG9ydCBBc3luYyBGb3JlaWduIFNj YW4KIHN1YnBsYW5zCgpUaGlzIGNvbW1pdCBtYWtlcyB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBhc3lu Yy1jYXBhYmxlLCBzaW1pbGFyIHRvIHRoZSBleGlzdGluZwphc3luYyBzdXBwb3J0IGZvciBBcHBl bmQgbm9kZXMuIFdoZW4gdGhlIHBsYW5uZXIgY2hvb3NlcyBNZXJnZUFwcGVuZCBmb3IKcGFydGl0 aW9uZWQgdGFibGVzIHdpdGggZm9yZWlnbiBwYXJ0aXRpb25zLCBhc3luY2hyb25vdXMgZXhlY3V0 aW9uIGlzIG5vdwpwb3NzaWJsZS4KClRoZSBwcmltYXJ5IGJlbmVmaXQgaXMgZHVyaW5nIHRoZSBp bml0aWFsIGhlYXAgZmlsbDogYWxsIGFzeW5jIHN1YnBsYW5zIGFyZQpraWNrZWQgb2ZmIGNvbmN1 cnJlbnRseSwgc28gdGhlaXIgZmlyc3QgdHVwbGVzIGFyZSBmZXRjaGVkIGluIHBhcmFsbGVsIHJh dGhlcgp0aGFuIHNlcXVlbnRpYWxseS4gSW4gc3RlYWR5IHN0YXRlLCBob3dldmVyLCB0aGUgaGVh cCBtZXJnZSBhbGdvcml0aG0gbmVlZHMKdGhlIG5leHQgdHVwbGUgZnJvbSBvbmUgc3BlY2lmaWMg c3VicGxhbiAodGhlIGhlYXAgdG9wKSwgc28gZXhlY3V0aW9uIGF0CnRoYXQgcG9pbnQgaXMgZWZm ZWN0aXZlbHkgc3luY2hyb25vdXMgLSB3ZSBibG9jayB1bnRpbCB0aGF0IHBhcnRpY3VsYXIKc3Vi cGxhbiBkZWxpdmVycyBpdHMgcmVzdWx0LgoKQSBuZXcgR1VDIGVuYWJsZV9hc3luY19tZXJnZV9h cHBlbmQgY29udHJvbHMgdGhpcyBmZWF0dXJlIChkZWZhdWx0IG9uKS4KQSBuZXcgd2FpdCBldmVu dCBNRVJHRV9BUFBFTkRfUkVBRFkgaXMgYWRkZWQgKHNlcGFyYXRlIGZyb20gQVBQRU5EX1JFQURZ KQpzbyB0aGF0IG1vbml0b3JpbmcgdG9vbHMgY2FuIGRpc3Rpbmd1aXNoIHRoZSB0d28gbm9kZSB0 eXBlcy4KClRoZSBwb3N0Z3Jlc19mZHcgaXMgdXBkYXRlZCB0byB3b3JrIGdlbmVyaWNhbGx5IHdp dGggYm90aCBBcHBlbmQgYW5kCk1lcmdlQXBwZW5kIHJlcXVlc3RvcnMgYnkgY2FzdGluZyB0byB0 aGUgc2hhcmVkIEFwcGVuZEJhc2VTdGF0ZSB0eXBlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS81OWJlMTk0YzVhNDA5ZmI5ZmM5ZjIwMzE1ODFiOGE0NCU0MHBvc3RncmVzcHJvLnJ1 CkF1dGhvcjogQWxleGFuZGVyIFB5aGFsb3YgPGEucHloYWxvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2 aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0Z3Jlc3Byby5ydT4KLS0t CiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCA0OTYgKysr KysrKysrKysrKysrKysrCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAg ICAgICAgfCAgMTIgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3Fs ICAgICB8IDE0NyArKysrKysKIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAg ICAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXBwZW5kLmMgICAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jICAgICAgICAg ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAg ICAgfCAyMjQgKysrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMg ICAgICAgfCAgMTcgKwogLi4uL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmggICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAg MyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICst CiAxNiBmaWxlcyBjaGFuZ2VkLCA5MzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCA3 MzlmNDNhZjdiYi4uNzQ5NWVlNzZjNjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMTIzMzksMTIgKzEyMzM5LDgzIEBAIFNFTEVDVCAq IEZST00gcmVzdWx0X3RibCBPUkRFUiBCWSBhOwogKDIgcm93cykKIAogREVMRVRFIEZST00gcmVz dWx0X3RibDsKKy0tIFRlc3QgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgJSAxMDAgPSAwIE9SREVSIEJZIGIs IGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEFwcGVuZAorICAgU29ydCBL ZXk6IGFzeW5jX3B0LmIsIGFzeW5jX3B0LmEKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24g cHVibGljLmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMS5h LCBhc3luY19wdF8xLmIsIGFzeW5jX3B0XzEuYworICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwxIFdIRVJFICgoKGIgJSAxMDApID0gMCkpIE9S REVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKKyAgIC0+ICBBc3luYyBG b3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AyIGFzeW5jX3B0XzIKKyAgICAgICAgIE91dHB1 dDogYXN5bmNfcHRfMi5hLCBhc3luY19wdF8yLmIsIGFzeW5jX3B0XzIuYworICAgICAgICAgUmVt b3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwyIFdIRVJFICgoKGIg JSAxMDApID0gMCkpIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QK Kyg4IHJvd3MpCisKK1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiAlIDEwMCA9IDAgT1JE RVIgQlkgYiwgYTsKKyAgYSAgIHwgIGIgIHwgIGMgICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAx MDAwIHwgICAwIHwgMDAwMAorIDIwMDAgfCAgIDAgfCAwMDAwCisgMTEwMCB8IDEwMCB8IDAxMDAK KyAyMTAwIHwgMTAwIHwgMDEwMAorIDEyMDAgfCAyMDAgfCAwMjAwCisgMjIwMCB8IDIwMCB8IDAy MDAKKyAxMzAwIHwgMzAwIHwgMDMwMAorIDIzMDAgfCAzMDAgfCAwMzAwCisgMTQwMCB8IDQwMCB8 IDA0MDAKKyAyNDAwIHwgNDAwIHwgMDQwMAorIDE1MDAgfCA1MDAgfCAwNTAwCisgMjUwMCB8IDUw MCB8IDA1MDAKKyAxNjAwIHwgNjAwIHwgMDYwMAorIDI2MDAgfCA2MDAgfCAwNjAwCisgMTcwMCB8 IDcwMCB8IDA3MDAKKyAyNzAwIHwgNzAwIHwgMDcwMAorIDE4MDAgfCA4MDAgfCAwODAwCisgMjgw MCB8IDgwMCB8IDA4MDAKKyAxOTAwIHwgOTAwIHwgMDkwMAorIDI5MDAgfCA5MDAgfCAwOTAwCiso MjAgcm93cykKKworLS0gVGVzdCB0aGF0IHN0ZWFkeS1zdGF0ZSBleGVjdXRpb24gb2YgYW4gYXN5 bmMgTWVyZ2UgQXBwZW5kIHJlLWZldGNoZXMgZnJvbQorLS0gYW4gYXN5bmMgc3VicGxhbiBpbnN0 ZWFkIG9mIGp1c3QgY29uc3VtaW5nIGl0cyBpbml0aWFsIGJhdGNoIGFuZCB0cmVhdGluZworLS0g ZXhoYXVzdGlvbiBvZiB0aGF0IGJhdGNoIGFzIGVuZC1vZi1kYXRhLiAgRWFjaCBwYXJ0aXRpb24g aGVyZSBoYXMgMjAwCistLSBtYXRjaGluZyByb3dzLCBtb3JlIHRoYW4gdGhlIEZEVydzIGRlZmF1 bHQgZmV0Y2hfc2l6ZSAoMTAwKSwgc28gZ2V0dGluZworLS0gdGhlIHJpZ2h0IGNvdW50IHJlcXVp cmVzIG1vcmUgdGhhbiBvbmUgZmV0Y2ggZnJvbSBhdCBsZWFzdCBvbmUgcGFydGl0aW9uCistLSBh ZnRlciB0aGUgaW5pdGlhbCBoZWFwIGZpbGwuICBUaGUgTElNSVQga2VlcHMgdGhlIE9SREVSIEJZ IChhbmQgdGhlcmVmb3JlCistLSB0aGUgTWVyZ2UgQXBwZW5kKSBmcm9tIGJlaW5nIG9wdGltaXpl ZCBhd2F5IGluIHRoZSBzdWJxdWVyeS4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCAqIEZST00gYXN5bmNfcHQgT1JERVIgQlkgYiwgYTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgQXBwZW5kCisgICBTb3J0IEtleTogYXN5bmNfcHQuYiwg YXN5bmNfcHQuYQorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDEg YXN5bmNfcHRfMQorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmEsIGFzeW5jX3B0XzEuYiwg YXN5bmNfcHRfMS5jCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1 YmxpYy5iYXNlX3RibDEgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFT VAorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNfcHRf MgorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8yLmEsIGFzeW5jX3B0XzIuYiwgYXN5bmNfcHRf Mi5jCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNl X3RibDIgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAorKDggcm93 cykKKworU0VMRUNUIGNvdW50KCopIEZST00gKFNFTEVDVCAqIEZST00gYXN5bmNfcHQgT1JERVIg QlkgYiwgYSBMSU1JVCAxMDAwMDApIHNzOworIGNvdW50IAorLS0tLS0tLQorICAgNDAwCisoMSBy b3cpCisKIC0tIFRlc3QgZXJyb3IgaGFuZGxpbmcsIGlmIGFjY2Vzc2luZyBvbmUgb2YgdGhlIGZv cmVpZ24gcGFydGl0aW9ucyBlcnJvcnMgb3V0CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBhc3luY19w X2Jyb2tlbiBQQVJUSVRJT04gT0YgYXN5bmNfcHQgRk9SIFZBTFVFUyBGUk9NICgxMDAwMCkgVE8g KDEwMDAxKQogICBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnbm9uX2V4aXN0 ZW50X3RhYmxlJyk7CiBTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0OwogRVJST1I6ICByZWxhdGlvbiAi cHVibGljLm5vbl9leGlzdGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKIENPTlRFWFQ6ICByZW1v dGUgU1FMIGNvbW1hbmQ6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLm5vbl9leGlzdGVudF90 YWJsZQorLS0gVGVzdCBlcnJvciBoYW5kbGluZyBmb3IgYXN5bmMgTWVyZ2UgQXBwZW5kCitTRUxF Q1QgKiBGUk9NIGFzeW5jX3B0IE9SREVSIEJZIGIsIGE7CitFUlJPUjogIHJlbGF0aW9uICJwdWJs aWMubm9uX2V4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlzdAorQ09OVEVYVDogIHJlbW90ZSBT UUwgY29tbWFuZDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMubm9uX2V4aXN0ZW50X3RhYmxl IE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKIERST1AgRk9SRUlH TiBUQUJMRSBhc3luY19wX2Jyb2tlbjsKIC0tIENoZWNrIGNhc2Ugd2hlcmUgbXVsdGlwbGUgcGFy dGl0aW9ucyB1c2UgdGhlIHNhbWUgY29ubmVjdGlvbgogQ1JFQVRFIFRBQkxFIGJhc2VfdGJsMyAo YSBpbnQsIGIgaW50LCBjIHRleHQpOwpAQCAtMTI0NTMsNiArMTI1MjQsMTkyIEBAIENPUFkgYXN5 bmNfcHQgVE8gc3Rkb3V0OyAtLWVycm9yCiBFUlJPUjogIGNhbm5vdCBjb3B5IGZyb20gZm9yZWln biB0YWJsZSAiYXN5bmNfcDEiCiBERVRBSUw6ICBQYXJ0aXRpb24gImFzeW5jX3AxIiBpcyBhIGZv cmVpZ24gdGFibGUgaW4gcGFydGl0aW9uZWQgdGFibGUgImFzeW5jX3B0Ii4KIEhJTlQ6ICBUcnkg dGhlIENPUFkgKFNFTEVDVCAuLi4pIFRPIHZhcmlhbnQuCistLSBUZXN0IE1lcmdlIEFwcGVuZAor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVS RSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgTWVyZ2UgQXBwZW5kCisgICBTb3J0IEtleTogYXN5bmNfcHQuYiwgYXN5bmNfcHQu YQorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDEgYXN5bmNfcHRf MQorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmEsIGFzeW5jX3B0XzEuYiwgYXN5bmNfcHRf MS5jCisgICAgICAgICBGaWx0ZXI6IChhc3luY19wdF8xLmIgPT09IDUwNSkKKyAgICAgICAgIFJl bW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMSBPUkRFUiBCWSBi IEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBT Y2FuIG9uIHB1YmxpYy5hc3luY19wMiBhc3luY19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5j X3B0XzIuYSwgYXN5bmNfcHRfMi5iLCBhc3luY19wdF8yLmMKKyAgICAgICAgIEZpbHRlcjogKGFz eW5jX3B0XzIuYiA9PT0gNTA1KQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMg RlJPTSBwdWJsaWMuYmFzZV90YmwyIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5V TExTIExBU1QKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AzIGFz eW5jX3B0XzMKKyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMy5hLCBhc3luY19wdF8zLmIsIGFz eW5jX3B0XzMuYworICAgICAgICAgRmlsdGVyOiAoYXN5bmNfcHRfMy5iID09PSA1MDUpCisgICAg ICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDMgT1JE RVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAorKDE0IHJvd3MpCisKK1NF TEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CisgIGEg ICB8ICBiICB8ICBjICAgCistLS0tLS0rLS0tLS0rLS0tLS0tCisgMTUwNSB8IDUwNSB8IDA1MDUK KyAyNTA1IHwgNTA1IHwgMDUwNQorIDM1MDUgfCA1MDUgfCAwNTA1CisoMyByb3dzKQorCistLSBU ZXN0IGFzeW5jIE1lcmdlIEFwcGVuZCByZXNjYW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVAorCUFSUkFZKFNFTEVDVCBmLmkgRlJPTSAoU0VMRUNUIGIgKyBnLmkgRlJPTSBh c3luY19wdCBXSEVSRSBhID4gZy5pIE9SREVSIEJZIGIpIGYoaSkgT1JERVIgQlkgZi5pIExJTUlU IDEwKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZyhpKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVf c2VyaWVzIGcKKyAgIE91dHB1dDogQVJSQVkoU3ViUGxhbiBhcnJheV8xKQorICAgRnVuY3Rpb24g Q2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDMpCisgICBTdWJQbGFuIGFycmF5XzEKKyAgICAgLT4g IExpbWl0CisgICAgICAgICAgIE91dHB1dDogZi5pCisgICAgICAgICAgIC0+ICBTb3J0CisgICAg ICAgICAgICAgICAgIE91dHB1dDogZi5pCisgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBmLmkK KyAgICAgICAgICAgICAgICAgLT4gIFN1YnF1ZXJ5IFNjYW4gb24gZgorICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IGYuaQorICAgICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgQXBw ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBhc3luY19wdC5iCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVi bGljLmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiAoYXN5bmNfcHRfMS5iICsgZy5pKSwgYXN5bmNfcHRfMS5iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGlj LmJhc2VfdGJsMSBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIE9SREVSIEJZIGIgQVNDIE5VTExT IExBU1QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNfcHRfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IChhc3luY19wdF8yLmIgKyBnLmkpLCBhc3luY19wdF8yLmIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGIgRlJP TSBwdWJsaWMuYmFzZV90YmwyIFdIRVJFICgoYSA+ICQxOjppbnRlZ2VyKSkgT1JERVIgQlkgYiBB U0MgTlVMTFMgTEFTVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQXN5bmMgRm9y ZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMyBhc3luY19wdF8zCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogKGFzeW5jX3B0XzMuYiArIGcuaSksIGFzeW5jX3B0 XzMuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxF Q1QgYiBGUk9NIHB1YmxpYy5iYXNlX3RibDMgV0hFUkUgKChhID4gJDE6OmludGVnZXIpKSBPUkRF UiBCWSBiIEFTQyBOVUxMUyBMQVNUCisoMjIgcm93cykKKworU0VMRUNUCisJQVJSQVkoU0VMRUNU IGYuaSBGUk9NIChTRUxFQ1QgYiArIGcuaSBGUk9NIGFzeW5jX3B0IFdIRVJFIGEgPiBnLmkgT1JE RVIgQlkgYikgZihpKSBPUkRFUiBCWSBmLmkgTElNSVQgMTApCitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzKSBnKGkpOworICAgICAgICAgICBhcnJheSAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7MSwxLDEsNiw2LDYsMTEsMTEsMTEsMTZ9CisgezIsMiwyLDcsNyw3 LDEyLDEyLDEyLDE3fQorIHszLDMsMyw4LDgsOCwxMywxMywxMywxOH0KKygzIHJvd3MpCisKKy0t IFRlc3QgYXN5bmMgTWVyZ2UgQXBwZW5kIHJlc2NhbiB3aGVuIGEgTElNSVQgc3RvcHMgdGhlIHNj YW4gYmVmb3JlIGV2ZXJ5CistLSBhc3luYyBzdWJwbGFuJ3MgcmVxdWVzdCBoYXMgY29tcGxldGVk LCBzbyBvbiB0aGUgbmV4dCByZXNjYW4gKGZvciB0aGUKKy0tIG5leHQgb3V0ZXIgcm93KSBzb21l IHN1YnBsYW4ncyByZXF1ZXN0IGlzIHN0aWxsIGluIGZsaWdodC4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCBnLmksIHMuYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBn KGkpLAorCUxBVEVSQUwgKFNFTEVDVCBiIEZST00gYXN5bmNfcHQgV0hFUkUgYSA+IGcuaSBPUkRF UiBCWSBiIExJTUlUIDEpIHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgT3V0cHV0OiBnLmks IGFzeW5jX3B0LmIKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVf c2VyaWVzIGcKKyAgICAgICAgIE91dHB1dDogZy5pCisgICAgICAgICBGdW5jdGlvbiBDYWxsOiBn ZW5lcmF0ZV9zZXJpZXMoMSwgMykKKyAgIC0+ICBMaW1pdAorICAgICAgICAgT3V0cHV0OiBhc3lu Y19wdC5iCisgICAgICAgICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAgICAgICAgICBTb3J0IEtl eTogYXN5bmNfcHQuYgorICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBw dWJsaWMuYXN5bmNfcDEgYXN5bmNfcHRfMQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBh c3luY19wdF8xLmIKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZS T00gcHVibGljLmJhc2VfdGJsMSBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIE9SREVSIEJZIGIg QVNDIE5VTExTIExBU1QKKyAgICAgICAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24g cHVibGljLmFzeW5jX3AyIGFzeW5jX3B0XzIKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog YXN5bmNfcHRfMi5iCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiBG Uk9NIHB1YmxpYy5iYXNlX3RibDIgV0hFUkUgKChhID4gJDE6OmludGVnZXIpKSBPUkRFUiBCWSBi IEFTQyBOVUxMUyBMQVNUCisgICAgICAgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9u IHB1YmxpYy5hc3luY19wMyBhc3luY19wdF8zCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IGFzeW5jX3B0XzMuYgorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGIg RlJPTSBwdWJsaWMuYmFzZV90YmwzIFdIRVJFICgoYSA+ICQxOjppbnRlZ2VyKSkgT1JERVIgQlkg YiBBU0MgTlVMTFMgTEFTVAorKDE4IHJvd3MpCisKK1NFTEVDVCBnLmksIHMuYiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzKSBnKGkpLAorCUxBVEVSQUwgKFNFTEVDVCBiIEZST00gYXN5bmNfcHQg V0hFUkUgYSA+IGcuaSBPUkRFUiBCWSBiIExJTUlUIDEpIHM7CisgaSB8IGIgCistLS0rLS0tCisg MSB8IDAKKyAyIHwgMAorIDMgfCAwCisoMyByb3dzKQorCistLSBUZXN0IGFzeW5jIE1lcmdlIEFw cGVuZCByZXNjYW4gd2hlbiBhIExJTUlUIHN0b3BzIHRoZSBzY2FuIGJlZm9yZSBhbgorLS0gYXN5 bmMgc3VicGxhbidzIGFscmVhZHktZGVsaXZlcmVkIHJlc3VsdCB3YXMgZXZlciBjb25zdW1lZCAo YmVjYXVzZSBpdAorLS0gZGlkbid0IHdpbiB0aGUgcmFjZSB0byB0aGUgaGVhcCB0b3ApLiAgVGhl IG5leHQgcmVzY2FuIChmb3IgdGhlIG5leHQKKy0tIG91dGVyIHJvdykgbXVzdCBub3QgbWlzdGFr ZSB0aGF0IGxlZnRvdmVyIHJlc3VsdCBmb3IgYSBmcmVzaCBvbmU7IHRoZQorLS0gZXhwZWN0ZWQg cmVzdWx0IGluY3JlYXNlcyBlYWNoIHJvdywgc28gYSBzdGFsZSByZXVzZWQgdmFsdWUgd291bGQg c2hvdworLS0gdXAgYXMgdGhlIGZpcnN0IHJvdydzIHZhbHVlIHJlcGVhdGluZyBpbnN0ZWFkLgor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGcuaSwgcy5iIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIGcoaSksCisJTEFURVJBTCAoU0VMRUNUIGIgRlJPTSBhc3luY19wdCBX SEVSRSBhID4gZy5pIEFORCBiID4gZy5pICogMTAwIE9SREVSIEJZIGIgTElNSVQgMSkgczsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgT3V0cHV0OiBnLmksIGFzeW5jX3B0LmIKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgICAg ICAgIE91dHB1dDogZy5pCisgICAgICAgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMo MSwgMykKKyAgIC0+ICBMaW1pdAorICAgICAgICAgT3V0cHV0OiBhc3luY19wdC5iCisgICAgICAg ICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAgICAgICAgICBTb3J0IEtleTogYXN5bmNfcHQuYgor ICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDEg YXN5bmNfcHRfMQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmIKKyAg ICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGljLmJhc2Vf dGJsMSBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIEFORCAoKGIgPiAoJDE6OmludGVnZXIgKiAx MDApKSkgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVAorICAgICAgICAgICAgICAgLT4gIEFzeW5j IEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNfcHRfMgorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8yLmIKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGljLmJhc2VfdGJsMiBXSEVSRSAoKGEgPiAkMTo6aW50 ZWdlcikpIEFORCAoKGIgPiAoJDE6OmludGVnZXIgKiAxMDApKSkgT1JERVIgQlkgYiBBU0MgTlVM TFMgTEFTVAorICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMu YXN5bmNfcDMgYXN5bmNfcHRfMworICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBhc3luY19w dF8zLmIKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVi bGljLmJhc2VfdGJsMyBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIEFORCAoKGIgPiAoJDE6Omlu dGVnZXIgKiAxMDApKSkgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVAorKDE4IHJvd3MpCisKK1NF TEVDVCBnLmksIHMuYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBnKGkpLAorCUxBVEVSQUwg KFNFTEVDVCBiIEZST00gYXN5bmNfcHQgV0hFUkUgYSA+IGcuaSBBTkQgYiA+IGcuaSAqIDEwMCBP UkRFUiBCWSBiIExJTUlUIDEpIHM7CisgaSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCAxMDUKKyAy IHwgMjA1CisgMyB8IDMwNQorKDMgcm93cykKKworLS0gVGVzdCB0aGUgRXhlY01lcmdlQXBwZW5k QXN5bmNQcm9jZXNzUGVuZGluZyBjb2RlIHBhdGg6IHNhbWUgc2hhcmVkLWNvbm5lY3Rpb24KKy0t IHBydW5lZC1vdXQgaGF6YXJkIGFzIHRoZSBBcHBlbmQgY2FzZSBlYXJsaWVyLCBidXQgd2l0aCBP UkRFUiBCWSBmb3JjaW5nIGEKKy0tIE1lcmdlQXBwZW5kLiAgYXN5bmNfcDIgYW5kIGFzeW5jX3Az IHNoYXJlIGEgY29ubmVjdGlvbjsgcGVyIG91dGVyIHJvdyBleGFjdGx5CistLSBvbmUgb2YgdGhl bSBpcyBwcnVuZWQgd2hpbGUgYXN5bmNfcDEgKGEgZGlmZmVyZW50IGNvbm5lY3Rpb24pIGFsd2F5 cyBtYXRjaGVzLAorLS0gYW5kIHRoZSBpbm5lciBMSU1JVCBsZWF2ZXMgdGhlIG90aGVyIHNoYXJl ZC1jb25uZWN0aW9uIHJlcXVlc3Qgb3V0c3RhbmRpbmcKKy0tIGFjcm9zcyB0aGUgcmVzY2FuLgor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG8ueCwgcy5iIEZST00gKFZBTFVF UyAoMjUwNSksICgzNTA1KSkgbyh4KSwgTEFURVJBTCAoU0VMRUNUIGIgRlJPTSBhc3luY19wdCBX SEVSRSBhID0gMTUwNSBPUiBhID0gby54IE9SREVSIEJZIGIgTElNSVQgMSkgcyBPUkRFUiBCWSBv Lng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNvcnQKKyAgIE91dHB1dDogIipWQUxVRVMqIi5jb2x1bW4xLCBhc3luY19wdC5iCisgICBTb3J0 IEtleTogIipWQUxVRVMqIi5jb2x1bW4xCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgIE91 dHB1dDogIipWQUxVRVMqIi5jb2x1bW4xLCBhc3luY19wdC5iCisgICAgICAgICAtPiAgVmFsdWVz IFNjYW4gb24gIipWQUxVRVMqIgorICAgICAgICAgICAgICAgT3V0cHV0OiAiKlZBTFVFUyoiLmNv bHVtbjEKKyAgICAgICAgIC0+ICBMaW1pdAorICAgICAgICAgICAgICAgT3V0cHV0OiBhc3luY19w dC5iCisgICAgICAgICAgICAgICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogYXN5bmNfcHQuYgorICAgICAgICAgICAgICAgICAgICAgLT4gIEFzeW5jIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDEgYXN5bmNfcHRfMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGljLmJhc2VfdGJsMSBXSEVSRSAoKChh ID0gMTUwNSkgT1IgKGEgPSAkMTo6aW50ZWdlcikpKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNU CisgICAgICAgICAgICAgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5h c3luY19wMiBhc3luY19wdF8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGFz eW5jX3B0XzIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGIgRlJPTSBwdWJsaWMuYmFzZV90YmwyIFdIRVJFICgoKGEgPSAxNTA1KSBPUiAoYSA9ICQxOjpp bnRlZ2VyKSkpIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AzIGFzeW5jX3B0XzMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMy5iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiBGUk9NIHB1YmxpYy5iYXNlX3Ri bDMgV0hFUkUgKCgoYSA9IDE1MDUpIE9SIChhID0gJDE6OmludGVnZXIpKSkgT1JERVIgQlkgYiBB U0MgTlVMTFMgTEFTVAorKDIwIHJvd3MpCisKK1NFTEVDVCBvLngsIHMuYiBGUk9NIChWQUxVRVMg KDI1MDUpLCAoMzUwNSkpIG8oeCksIExBVEVSQUwgKFNFTEVDVCBiIEZST00gYXN5bmNfcHQgV0hF UkUgYSA9IDE1MDUgT1IgYSA9IG8ueCBPUkRFUiBCWSBiIExJTUlUIDEpIHMgT1JERVIgQlkgby54 OworICB4ICAgfCAgYiAgCistLS0tLS0rLS0tLS0KKyAyNTA1IHwgNTA1CisgMzUwNSB8IDUwNQor KDIgcm93cykKKwogRFJPUCBGT1JFSUdOIFRBQkxFIGFzeW5jX3AzOwogRFJPUCBUQUJMRSBiYXNl X3RibDM7CiAtLSBDaGVjayBjYXNlIHdoZXJlIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgbG9j YWwvcmVtb3RlIHBhcnRpdGlvbnMKQEAgLTEyNDg4LDYgKzEyNzQ1LDM3IEBAIFNFTEVDVCAqIEZS T00gcmVzdWx0X3RibCBPUkRFUiBCWSBhOwogKDMgcm93cykKIAogREVMRVRFIEZST00gcmVzdWx0 X3RibDsKKy0tIFRlc3QgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBhOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBBcHBlbmQKKyAgIFNv cnQgS2V5OiBhc3luY19wdC5iLCBhc3luY19wdC5hCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2Fu IG9uIHB1YmxpYy5hc3luY19wMSBhc3luY19wdF8xCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0 XzEuYSwgYXN5bmNfcHRfMS5iLCBhc3luY19wdF8xLmMKKyAgICAgICAgIEZpbHRlcjogKGFzeW5j X3B0XzEuYiA9PT0gNTA1KQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJP TSBwdWJsaWMuYmFzZV90YmwxIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExT IExBU1QKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AyIGFzeW5j X3B0XzIKKyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMi5hLCBhc3luY19wdF8yLmIsIGFzeW5j X3B0XzIuYworICAgICAgICAgRmlsdGVyOiAoYXN5bmNfcHRfMi5iID09PSA1MDUpCisgICAgICAg ICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNlX3RibDIgT1JERVIg QlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAorICAgLT4gIFNvcnQKKyAgICAg ICAgIE91dHB1dDogYXN5bmNfcHRfMy5hLCBhc3luY19wdF8zLmIsIGFzeW5jX3B0XzMuYworICAg ICAgICAgU29ydCBLZXk6IGFzeW5jX3B0XzMuYiwgYXN5bmNfcHRfMy5hCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmFzeW5jX3AzIGFzeW5jX3B0XzMKKyAgICAgICAgICAgICAgIE91 dHB1dDogYXN5bmNfcHRfMy5hLCBhc3luY19wdF8zLmIsIGFzeW5jX3B0XzMuYworICAgICAgICAg ICAgICAgRmlsdGVyOiAoYXN5bmNfcHRfMy5iID09PSA1MDUpCisoMTYgcm93cykKKworU0VMRUNU ICogRlJPTSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsKKyAgYSAgIHwg IGIgIHwgIGMgICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAxNTA1IHwgNTA1IHwgMDUwNQorIDI1 MDUgfCA1MDUgfCAwNTA1CisgMzUwNSB8IDUwNSB8IDA1MDUKKygzIHJvd3MpCisKIC0tIHBhcnRp dGlvbndpc2Ugam9pbnMKIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBD UkVBVEUgVEFCTEUgam9pbl90YmwgKGExIGludCwgYjEgaW50LCBjMSB0ZXh0LCBhMiBpbnQsIGIy IGludCwgYzIgdGV4dCk7CkBAIC0xMjY4Myw2ICsxMjk3MSwyMSBAQCBTRUxFQ1QgKiBGUk9NIGFz eW5jX3B0IFdIRVJFIGEgPCAyMDAwOwogICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJP TSBwdWJsaWMuYmFzZV90YmwxIFdIRVJFICgoYSA8IDIwMDApKQogKDMgcm93cykKIAorLS0gVGVz dCBpbnRlcmFjdGlvbiBvZiBhc3luYyBNZXJnZSBBcHBlbmQgd2l0aCBwbGFuLXRpbWUgcGFydGl0 aW9uIHBydW5pbmcKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g YXN5bmNfcHQgV0hFUkUgYSA8IDMwMDAgT1JERVIgQlkgYiwgYTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBNZXJnZSBBcHBlbmQKKyAgIFNvcnQgS2V5OiBhc3luY19wdC5iLCBhc3luY19wdC5hCisgICAt PiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMSBhc3luY19wdF8xCisgICAg ICAgICBPdXRwdXQ6IGFzeW5jX3B0XzEuYSwgYXN5bmNfcHRfMS5iLCBhc3luY19wdF8xLmMKKyAg ICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMSBX SEVSRSAoKGEgPCAzMDAwKSkgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMg TEFTVAorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNf cHRfMgorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8yLmEsIGFzeW5jX3B0XzIuYiwgYXN5bmNf cHRfMi5jCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5i YXNlX3RibDIgV0hFUkUgKChhIDwgMzAwMCkpIE9SREVSIEJZIGIgQVNDIE5VTExTIExBU1QsIGEg QVNDIE5VTExTIExBU1QKKyg4IHJvd3MpCisKIC0tIFRlc3QgaW50ZXJhY3Rpb24gb2YgYXN5bmMg ZXhlY3V0aW9uIHdpdGggcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcKIFNFVCBwbGFuX2NhY2hl X21vZGUgVE8gZm9yY2VfZ2VuZXJpY19wbGFuOwogUFJFUEFSRSBhc3luY19wdF9xdWVyeSAoaW50 LCBpbnQpIEFTCkBAIC0xMjczNCw2ICsxMzAzNyw1MiBAQCBTRUxFQ1QgKiBGUk9NIHJlc3VsdF90 YmwgT1JERVIgQlkgYTsKICgxIHJvdykKIAogREVMRVRFIEZST00gcmVzdWx0X3RibDsKKy0tIFRl c3QgaW50ZXJhY3Rpb24gb2YgYXN5bmMgTWVyZ2UgQXBwZW5kIHdpdGggcnVuLXRpbWUgcGFydGl0 aW9uIHBydW5pbmcKK1BSRVBBUkUgYXN5bmNfcHRfbWVyZ2VfcXVlcnkgKGludCwgaW50KSBBUwor ICBTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGEgPCAkMSBBTkQgYiA9PT0gJDIgT1JERVIg QlkgYiwgYTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK0VYRUNVVEUgYXN5bmNfcHRf bWVyZ2VfcXVlcnkgKDMwMDAsIDUwNSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBNZXJnZSBBcHBlbmQKKyAgIFNvcnQgS2V5OiBhc3luY19wdC5iLCBhc3luY19wdC5hCisgICBT dWJwbGFucyBSZW1vdmVkOiAxCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5h c3luY19wMSBhc3luY19wdF8xCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzEuYSwgYXN5bmNf cHRfMS5iLCBhc3luY19wdF8xLmMKKyAgICAgICAgIEZpbHRlcjogKGFzeW5jX3B0XzEuYiA9PT0g JDIpCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNl X3RibDEgV0hFUkUgKChhIDwgJDE6OmludGVnZXIpKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNU LCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5h c3luY19wMiBhc3luY19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzIuYSwgYXN5bmNf cHRfMi5iLCBhc3luY19wdF8yLmMKKyAgICAgICAgIEZpbHRlcjogKGFzeW5jX3B0XzIuYiA9PT0g JDIpCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5iYXNl X3RibDIgV0hFUkUgKChhIDwgJDE6OmludGVnZXIpKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNU LCBhIEFTQyBOVUxMUyBMQVNUCisoMTEgcm93cykKKworRVhFQ1VURSBhc3luY19wdF9tZXJnZV9x dWVyeSAoMzAwMCwgNTA1KTsKKyAgYSAgIHwgIGIgIHwgIGMgICAKKy0tLS0tLSstLS0tLSstLS0t LS0KKyAxNTA1IHwgNTA1IHwgMDUwNQorIDI1MDUgfCA1MDUgfCAwNTA1CisoMiByb3dzKQorCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitFWEVDVVRFIGFzeW5jX3B0X21lcmdlX3F1ZXJ5 ICgyMDAwLCA1MDUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgQXBw ZW5kCisgICBTb3J0IEtleTogYXN5bmNfcHQuYiwgYXN5bmNfcHQuYQorICAgU3VicGxhbnMgUmVt b3ZlZDogMgorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDEgYXN5 bmNfcHRfMQorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmEsIGFzeW5jX3B0XzEuYiwgYXN5 bmNfcHRfMS5jCisgICAgICAgICBGaWx0ZXI6IChhc3luY19wdF8xLmIgPT09ICQyKQorICAgICAg ICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwxIFdIRVJF ICgoYSA8ICQxOjppbnRlZ2VyKSkgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVM TFMgTEFTVAorKDcgcm93cykKKworRVhFQ1VURSBhc3luY19wdF9tZXJnZV9xdWVyeSAoMjAwMCwg NTA1KTsKKyAgYSAgIHwgIGIgIHwgIGMgICAKKy0tLS0tLSstLS0tLSstLS0tLS0KKyAxNTA1IHwg NTA1IHwgMDUwNQorKDEgcm93KQorCiBSRVNFVCBwbGFuX2NhY2hlX21vZGU7CiBDUkVBVEUgVEFC TEUgbG9jYWxfdGJsKGEgaW50LCBiIGludCwgYyB0ZXh0KTsKIElOU0VSVCBJTlRPIGxvY2FsX3Ri bCBWQUxVRVMgKDE1MDUsIDUwNSwgJ2ZvbycpLCAoMjUwNSwgNTA1LCAnYmFyJyk7CkBAIC0xMzI3 MCw2ICsxMzYxOSwxNTMgQEAgU0VMRUNUIGEgRlJPTSBiYXNlX3RibCBXSEVSRSAoYSwgcmFuZG9t KCkgPiAwKSBJTiAoU0VMRUNUIGEsIHJhbmRvbSgpID4gMCBGUk9NIGYKIERST1AgRk9SRUlHTiBU QUJMRSBmb3JlaWduX3RibCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBmb3Jl aWduIHRhYmxlIGZvcmVpZ25fdGJsMgogRFJPUCBUQUJMRSBiYXNlX3RibDsKKy0tIFRlc3QgYXN5 bmMgTWVyZ2UgQXBwZW5kCitDUkVBVEUgVEFCTEUgZGlzdHIxIChpIGludCwgaiBpbnQsIGsgdGV4 dCkgUEFSVElUSU9OIEJZIEhBU0ggKGkpOworQ1JFQVRFIFRBQkxFIGJhc2UxIChpIGludCwgaiBp bnQsIGsgdGV4dCk7CitDUkVBVEUgVEFCTEUgYmFzZTIgKGkgaW50LCBqIGludCwgayB0ZXh0KTsK K0NSRUFURSBGT1JFSUdOIFRBQkxFIGRpc3RyMV9wMSBQQVJUSVRJT04gT0YgZGlzdHIxIEZPUiBW QUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCkKK1NFUlZFUiBsb29wYmFjayBPUFRJ T05TICh0YWJsZV9uYW1lICdiYXNlMScpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIxX3Ay IFBBUlRJVElPTiBPRiBkaXN0cjEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAxKQorU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2UyJyk7CitDUkVB VEUgVEFCTEUgZGlzdHIyIChpIGludCwgaiBpbnQsIGsgdGV4dCkgUEFSVElUSU9OIEJZIEhBU0gg KGkpOworQ1JFQVRFIFRBQkxFIGJhc2UzIChpIGludCwgaiBpbnQsIGsgdGV4dCk7CitDUkVBVEUg VEFCTEUgYmFzZTQgKGkgaW50LCBqIGludCwgayB0ZXh0KTsKK0NSRUFURSBGT1JFSUdOIFRBQkxF IGRpc3RyMl9wMSBQQVJUSVRJT04gT0YgZGlzdHIyIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAy LCBSRU1BSU5ERVIgMCkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdiYXNl MycpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIyX3AyIFBBUlRJVElPTiBPRiBkaXN0cjIg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKQorU0VSVkVSIGxvb3BiYWNr IE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2U0Jyk7CitJTlNFUlQgSU5UTyBkaXN0cjEKK1NFTEVD VCBpLCBpKjEwLCAnZGF0YV8nIHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsK K0lOU0VSVCBJTlRPIGRpc3RyMgorU0VMRUNUIGksIGkqMTAsICdkYXRhXycgfHwgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDApIGk7CitBTkFMWVpFIGRpc3RyMV9wMTsKK0FOQUxZWkUgZGlz dHIxX3AyOworQU5BTFlaRSBkaXN0cjJfcDE7CitBTkFMWVpFIGRpc3RyMl9wMjsKK1NFVCBlbmFi bGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIE9OOworLS0gVGVzdCBqb2lucyB3aXRoIGFzeW5jIE1l cmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBk aXN0cjEsIGRpc3RyMiBXSEVSRSBkaXN0cjEuaT1kaXN0cjIuaSBBTkQgZGlzdHIyLmogPiA5MCBh bmQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnCitPUkRFUiBCWSBkaXN0cjIuaSBMSU1JVCAxMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMaW1pdAorICAgT3V0cHV0OiBkaXN0cjEuaSwgZGlz dHIxLmosIGRpc3RyMS5rLCBkaXN0cjIuaSwgZGlzdHIyLmosIGRpc3RyMi5rCisgICAtPiAgTWVy Z2UgQXBwZW5kCisgICAgICAgICBTb3J0IEtleTogZGlzdHIxLmkKKyAgICAgICAgIC0+ICBBc3lu YyBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogZGlzdHIxXzEuaSwgZGlzdHIx XzEuaiwgZGlzdHIxXzEuaywgZGlzdHIyXzEuaSwgZGlzdHIyXzEuaiwgZGlzdHIyXzEuaworICAg ICAgICAgICAgICAgUmVsYXRpb25zOiAocHVibGljLmRpc3RyMV9wMSBkaXN0cjFfMSkgSU5ORVIg Sk9JTiAocHVibGljLmRpc3RyMl9wMSBkaXN0cjJfMSkKKyAgICAgICAgICAgICAgIFJlbW90ZSBT UUw6IFNFTEVDVCByMy5pLCByMy5qLCByMy5rLCByNS5pLCByNS5qLCByNS5rIEZST00gKHB1Ymxp Yy5iYXNlMSByMyBJTk5FUiBKT0lOIHB1YmxpYy5iYXNlMyByNSBPTiAoKChyMy5pID0gcjUuaSkp IEFORCAoKHI1LmogPiA5MCkpIEFORCAoKHI1Lmsgfn4gJ2RhdGElJykpKSkgT1JERVIgQlkgcjMu aSBBU0MgTlVMTFMgTEFTVAorICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbgorICAgICAg ICAgICAgICAgT3V0cHV0OiBkaXN0cjFfMi5pLCBkaXN0cjFfMi5qLCBkaXN0cjFfMi5rLCBkaXN0 cjJfMi5pLCBkaXN0cjJfMi5qLCBkaXN0cjJfMi5rCisgICAgICAgICAgICAgICBSZWxhdGlvbnM6 IChwdWJsaWMuZGlzdHIxX3AyIGRpc3RyMV8yKSBJTk5FUiBKT0lOIChwdWJsaWMuZGlzdHIyX3Ay IGRpc3RyMl8yKQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIHI0LmksIHI0Lmos IHI0LmssIHI2LmksIHI2LmosIHI2LmsgRlJPTSAocHVibGljLmJhc2UyIHI0IElOTkVSIEpPSU4g cHVibGljLmJhc2U0IHI2IE9OICgoKHI0LmkgPSByNi5pKSkgQU5EICgocjYuaiA+IDkwKSkgQU5E ICgocjYuayB+fiAnZGF0YSUnKSkpKSBPUkRFUiBCWSByNC5pIEFTQyBOVUxMUyBMQVNUCisoMTIg cm93cykKKworU0VMRUNUICogRlJPTSBkaXN0cjEsIGRpc3RyMiBXSEVSRSBkaXN0cjEuaT1kaXN0 cjIuaSBBTkQgZGlzdHIyLmogPiA5MCBhbmQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnCitPUkRFUiBC WSBkaXN0cjIuaSBMSU1JVCAxMDsKKyBpICB8ICBqICB8ICAgIGsgICAgfCBpICB8ICBqICB8ICAg IGsgICAgCistLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tKy0tLS0tKy0tLS0tLS0tLQorIDEwIHwg MTAwIHwgZGF0YV8xMCB8IDEwIHwgMTAwIHwgZGF0YV8xMAorIDExIHwgMTEwIHwgZGF0YV8xMSB8 IDExIHwgMTEwIHwgZGF0YV8xMQorIDEyIHwgMTIwIHwgZGF0YV8xMiB8IDEyIHwgMTIwIHwgZGF0 YV8xMgorIDEzIHwgMTMwIHwgZGF0YV8xMyB8IDEzIHwgMTMwIHwgZGF0YV8xMworIDE0IHwgMTQw IHwgZGF0YV8xNCB8IDE0IHwgMTQwIHwgZGF0YV8xNAorIDE1IHwgMTUwIHwgZGF0YV8xNSB8IDE1 IHwgMTUwIHwgZGF0YV8xNQorIDE2IHwgMTYwIHwgZGF0YV8xNiB8IDE2IHwgMTYwIHwgZGF0YV8x NgorIDE3IHwgMTcwIHwgZGF0YV8xNyB8IDE3IHwgMTcwIHwgZGF0YV8xNworIDE4IHwgMTgwIHwg ZGF0YV8xOCB8IDE4IHwgMTgwIHwgZGF0YV8xOAorIDE5IHwgMTkwIHwgZGF0YV8xOSB8IDE5IHwg MTkwIHwgZGF0YV8xOQorKDEwIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCAqIEZST00gZGlzdHIxIExFRlQgSk9JTiBkaXN0cjIgT04gZGlzdHIxLmk9ZGlzdHIy LmkgQU5EIGRpc3RyMi5rIGxpa2UgJ2RhdGElJyBXSEVSRSAgZGlzdHIxLmkgPiA5MAorT1JERVIg QlkgZGlzdHIxLmkgTElNSVQgMjA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMaW1p dAorICAgT3V0cHV0OiBkaXN0cjEuaSwgZGlzdHIxLmosIGRpc3RyMS5rLCBkaXN0cjIuaSwgZGlz dHIyLmosIGRpc3RyMi5rCisgICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAgICBTb3J0IEtleTog ZGlzdHIxLmkKKyAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAg IE91dHB1dDogZGlzdHIxXzEuaSwgZGlzdHIxXzEuaiwgZGlzdHIxXzEuaywgZGlzdHIyXzEuaSwg ZGlzdHIyXzEuaiwgZGlzdHIyXzEuaworICAgICAgICAgICAgICAgUmVsYXRpb25zOiAocHVibGlj LmRpc3RyMV9wMSBkaXN0cjFfMSkgTEVGVCBKT0lOIChwdWJsaWMuZGlzdHIyX3AxIGRpc3RyMl8x KQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIHI0LmksIHI0LmosIHI0LmssIHI2 LmksIHI2LmosIHI2LmsgRlJPTSAocHVibGljLmJhc2UxIHI0IExFRlQgSk9JTiBwdWJsaWMuYmFz ZTMgcjYgT04gKCgocjQuaSA9IHI2LmkpKSBBTkQgKChyNi5rIH5+ICdkYXRhJScpKSkpIFdIRVJF ICgocjQuaSA+IDkwKSkgT1JERVIgQlkgcjQuaSBBU0MgTlVMTFMgTEFTVAorICAgICAgICAgLT4g IEFzeW5jIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiBkaXN0cjFfMi5pLCBk aXN0cjFfMi5qLCBkaXN0cjFfMi5rLCBkaXN0cjJfMi5pLCBkaXN0cjJfMi5qLCBkaXN0cjJfMi5r CisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IChwdWJsaWMuZGlzdHIxX3AyIGRpc3RyMV8yKSBM RUZUIEpPSU4gKHB1YmxpYy5kaXN0cjJfcDIgZGlzdHIyXzIpCisgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgcjUuaSwgcjUuaiwgcjUuaywgcjcuaSwgcjcuaiwgcjcuayBGUk9NIChw dWJsaWMuYmFzZTIgcjUgTEVGVCBKT0lOIHB1YmxpYy5iYXNlNCByNyBPTiAoKChyNS5pID0gcjcu aSkpIEFORCAoKHI3Lmsgfn4gJ2RhdGElJykpKSkgV0hFUkUgKChyNS5pID4gOTApKSBPUkRFUiBC WSByNS5pIEFTQyBOVUxMUyBMQVNUCisoMTIgcm93cykKKworU0VMRUNUICogRlJPTSBkaXN0cjEg TEVGVCBKT0lOIGRpc3RyMiBPTiAgZGlzdHIxLmk9ZGlzdHIyLmkgQU5EIGRpc3RyMi5rIGxpa2Ug J2RhdGElJyBXSEVSRSBkaXN0cjEuaSA+IDkwCitPUkRFUiBCWSBkaXN0cjEuaSBMSU1JVCAyMDsK KyAgaSAgfCAgaiAgIHwgICAgayAgICAgfCAgaSAgfCAgaiAgIHwgICAgayAgICAgCistLS0tLSst LS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLQorICA5MSB8ICA5MTAgfCBk YXRhXzkxICB8ICA5MSB8ICA5MTAgfCBkYXRhXzkxCisgIDkyIHwgIDkyMCB8IGRhdGFfOTIgIHwg IDkyIHwgIDkyMCB8IGRhdGFfOTIKKyAgOTMgfCAgOTMwIHwgZGF0YV85MyAgfCAgOTMgfCAgOTMw IHwgZGF0YV85MworICA5NCB8ICA5NDAgfCBkYXRhXzk0ICB8ICA5NCB8ICA5NDAgfCBkYXRhXzk0 CisgIDk1IHwgIDk1MCB8IGRhdGFfOTUgIHwgIDk1IHwgIDk1MCB8IGRhdGFfOTUKKyAgOTYgfCAg OTYwIHwgZGF0YV85NiAgfCAgOTYgfCAgOTYwIHwgZGF0YV85NgorICA5NyB8ICA5NzAgfCBkYXRh Xzk3ICB8ICA5NyB8ICA5NzAgfCBkYXRhXzk3CisgIDk4IHwgIDk4MCB8IGRhdGFfOTggIHwgIDk4 IHwgIDk4MCB8IGRhdGFfOTgKKyAgOTkgfCAgOTkwIHwgZGF0YV85OSAgfCAgOTkgfCAgOTkwIHwg ZGF0YV85OQorIDEwMCB8IDEwMDAgfCBkYXRhXzEwMCB8IDEwMCB8IDEwMDAgfCBkYXRhXzEwMAor IDEwMSB8IDEwMTAgfCBkYXRhXzEwMSB8ICAgICB8ICAgICAgfCAKKyAxMDIgfCAxMDIwIHwgZGF0 YV8xMDIgfCAgICAgfCAgICAgIHwgCisgMTAzIHwgMTAzMCB8IGRhdGFfMTAzIHwgICAgIHwgICAg ICB8IAorIDEwNCB8IDEwNDAgfCBkYXRhXzEwNCB8ICAgICB8ICAgICAgfCAKKyAxMDUgfCAxMDUw IHwgZGF0YV8xMDUgfCAgICAgfCAgICAgIHwgCisgMTA2IHwgMTA2MCB8IGRhdGFfMTA2IHwgICAg IHwgICAgICB8IAorIDEwNyB8IDEwNzAgfCBkYXRhXzEwNyB8ICAgICB8ICAgICAgfCAKKyAxMDgg fCAxMDgwIHwgZGF0YV8xMDggfCAgICAgfCAgICAgIHwgCisgMTA5IHwgMTA5MCB8IGRhdGFfMTA5 IHwgICAgIHwgICAgICB8IAorIDExMCB8IDExMDAgfCBkYXRhXzExMCB8ICAgICB8ICAgICAgfCAK KygyMCByb3dzKQorCistLSBUZXN0IHBydW5pbmcgd2l0aCBhc3luYyBNZXJnZSBBcHBlbmQKK0RF TEVURSBGUk9NIGRpc3RyMjsKK0lOU0VSVCBJTlRPIGRpc3RyMgorU0VMRUNUIGklMTAsIGkqMTAs ICdkYXRhXycgfHwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworREVBTExPQ0FU RSBBTEw7CitTRVQgcGxhbl9jYWNoZV9tb2RlIFRPIGZvcmNlX2dlbmVyaWNfcGxhbjsKK1BSRVBB UkUgYXN5bmNfcHRfcXVlcnkgKGludCwgaW50KSBBUworICBTRUxFQ1QgKiBGUk9NIGRpc3RyMiBX SEVSRSBpID0gQU5ZKEFSUkFZWyQxLCAkMl0pCisgIE9SREVSIEJZIGksagorICBMSU1JVCAxMDsK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKKwlFWEVDVVRFIGFzeW5jX3B0X3F1ZXJ5KDEs IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMaW1pdAorICAgT3V0cHV0OiBk aXN0cjIuaSwgZGlzdHIyLmosIGRpc3RyMi5rCisgICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAg ICBTb3J0IEtleTogZGlzdHIyLmksIGRpc3RyMi5qCisgICAgICAgICBTdWJwbGFucyBSZW1vdmVk OiAxCisgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5kaXN0cjJfcDEg ZGlzdHIyXzEKKyAgICAgICAgICAgICAgIE91dHB1dDogZGlzdHIyXzEuaSwgZGlzdHIyXzEuaiwg ZGlzdHIyXzEuaworICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGksIGosIGsgRlJP TSBwdWJsaWMuYmFzZTMgV0hFUkUgKChpID0gQU5ZIChBUlJBWVskMTo6aW50ZWdlciwgJDI6Omlu dGVnZXJdKSkpIE9SREVSIEJZIGkgQVNDIE5VTExTIExBU1QsIGogQVNDIE5VTExTIExBU1QKKyg4 IHJvd3MpCisKK0VYRUNVVEUgYXN5bmNfcHRfcXVlcnkoMSwgMSk7CisgaSB8ICBqICB8ICAgIGsg ICAgCistLS0rLS0tLS0rLS0tLS0tLS0tCisgMSB8ICAxMCB8IGRhdGFfMQorIDEgfCAxMTAgfCBk YXRhXzExCisgMSB8IDIxMCB8IGRhdGFfMjEKKyAxIHwgMzEwIHwgZGF0YV8zMQorIDEgfCA0MTAg fCBkYXRhXzQxCisgMSB8IDUxMCB8IGRhdGFfNTEKKyAxIHwgNjEwIHwgZGF0YV82MQorIDEgfCA3 MTAgfCBkYXRhXzcxCisgMSB8IDgxMCB8IGRhdGFfODEKKyAxIHwgOTEwIHwgZGF0YV85MQorKDEw IHJvd3MpCisKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2pvaW47CitEUk9QIFRBQkxFIGRpc3RyMSwgZGlzdHIyLCBiYXNlMSwgYmFzZTIsIGJhc2Uz LCBiYXNlNDsKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChEUk9QIGFzeW5jX2NhcGFi bGUpOwogQUxURVIgU0VSVkVSIGxvb3BiYWNrMiBPUFRJT05TIChEUk9QIGFzeW5jX2NhcGFibGUp OwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA4NzYw M2NmMWEwNi4uMDhkNDZiODhlNGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBA IC04NjUxLDggKzg2NTEsOCBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZpZ3VyZVdhaXQoQXN5 bmNSZXF1ZXN0ICphcmVxKQogCUZvcmVpZ25TY2FuU3RhdGUgKm5vZGUgPSAoRm9yZWlnblNjYW5T dGF0ZSAqKSBhcmVxLT5yZXF1ZXN0ZWU7CiAJUGdGZHdTY2FuU3RhdGUgKmZzc3RhdGUgPSAoUGdG ZHdTY2FuU3RhdGUgKikgbm9kZS0+ZmR3X3N0YXRlOwogCUFzeW5jUmVxdWVzdCAqcGVuZGluZ0Fy ZXEgPSBmc3N0YXRlLT5jb25uX3N0YXRlLT5wZW5kaW5nQXJlcTsKLQlBcHBlbmRTdGF0ZSAqcmVx dWVzdG9yID0gKEFwcGVuZFN0YXRlICopIGFyZXEtPnJlcXVlc3RvcjsKLQlXYWl0RXZlbnRTZXQg KnNldCA9IHJlcXVlc3Rvci0+YXMuZXZlbnRzZXQ7CisJQXBwZW5kQmFzZVN0YXRlICpyZXF1ZXN0 b3IgPSAoQXBwZW5kQmFzZVN0YXRlICopIGFyZXEtPnJlcXVlc3RvcjsKKwlXYWl0RXZlbnRTZXQg KnNldCA9IHJlcXVlc3Rvci0+ZXZlbnRzZXQ7CiAKIAkvKiBUaGlzIHNob3VsZCBub3QgYmUgY2Fs bGVkIHVubGVzcyBjYWxsYmFja19wZW5kaW5nICovCiAJQXNzZXJ0KGFyZXEtPmNhbGxiYWNrX3Bl bmRpbmcpOwpAQCAtODY5Myw4ICs4NjkzLDE0IEBAIHBvc3RncmVzRm9yZWlnbkFzeW5jQ29uZmln dXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiAJCSAqIGluLXByb2Nlc3MgcmVxdWVzdCwgdGhl biBiZWdpbiBhIGZldGNoIHRvIGNvbmZpZ3VyZSB0aGUgZXZlbnQKIAkJICogYmVsb3csIGJlY2F1 c2Ugd2UgbWlnaHQgb3RoZXJ3aXNlIGVuZCB1cCB3aXRoIG5vIGNvbmZpZ3VyZWQgZXZlbnRzCiAJ CSAqIG90aGVyIHRoYW4gdGhlIHBvc3RtYXN0ZXIgZGVhdGggZXZlbnQuCisJCSAqCisJCSAqIG5l ZWRyZXF1ZXN0IGlzIHBvcHVsYXRlZCBvbmx5IGJ5IEFwcGVuZCAoTWVyZ2VBcHBlbmQgZHJpdmVz IGl0cworCQkgKiBzdWJwbGFucyBvbmUgYXQgYSB0aW1lIGFuZCBoYXMgbm8gZXF1aXZhbGVudCBu b3Rpb24gb2YgYSBzdWJwbGFuCisJCSAqIGJlaW5nICJyZWFkeSBmb3IgYSBuZXcgcmVxdWVzdCIp LCBzbyB0aGlzIGNoZWNrIGhhcyBubyBlZmZlY3QgZm9yCisJCSAqIGEgTWVyZ2VBcHBlbmQgcmVx dWVzdG9yIGFuZCB3ZSBhbHdheXMgZmFsbCB0aHJvdWdoIHRvIHRoZSB3ZWFrZXIKKwkJICogY2hl Y2sgYmVsb3cuCiAJCSAqLwotCQlpZiAoIWJtc19pc19lbXB0eShyZXF1ZXN0b3ItPmFzLm5lZWRy ZXF1ZXN0KSkKKwkJaWYgKCFibXNfaXNfZW1wdHkocmVxdWVzdG9yLT5uZWVkcmVxdWVzdCkpCiAJ CQlyZXR1cm47CiAJCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhzZXQpID4gMSkKIAkJ CXJldHVybjsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19m ZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXgg ZjFjYTMyMDQzODIuLjg1NzY0YWZiMGEzIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbApAQCAtNDI4NiwxMCArNDI4NiwyOCBAQCBJTlNFUlQgSU5UTyByZXN1bHRf dGJsIFNFTEVDVCBhLCBiLCAnQUFBJyB8fCBjIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1 OwogU0VMRUNUICogRlJPTSByZXN1bHRfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByZXN1 bHRfdGJsOwogCistLSBUZXN0IE1lcmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiICUgMTAwID0gMCBPUkRFUiBCWSBi LCBhOworU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiICUgMTAwID0gMCBPUkRFUiBCWSBi LCBhOworCistLSBUZXN0IHRoYXQgc3RlYWR5LXN0YXRlIGV4ZWN1dGlvbiBvZiBhbiBhc3luYyBN ZXJnZSBBcHBlbmQgcmUtZmV0Y2hlcyBmcm9tCistLSBhbiBhc3luYyBzdWJwbGFuIGluc3RlYWQg b2YganVzdCBjb25zdW1pbmcgaXRzIGluaXRpYWwgYmF0Y2ggYW5kIHRyZWF0aW5nCistLSBleGhh dXN0aW9uIG9mIHRoYXQgYmF0Y2ggYXMgZW5kLW9mLWRhdGEuICBFYWNoIHBhcnRpdGlvbiBoZXJl IGhhcyAyMDAKKy0tIG1hdGNoaW5nIHJvd3MsIG1vcmUgdGhhbiB0aGUgRkRXJ3MgZGVmYXVsdCBm ZXRjaF9zaXplICgxMDApLCBzbyBnZXR0aW5nCistLSB0aGUgcmlnaHQgY291bnQgcmVxdWlyZXMg bW9yZSB0aGFuIG9uZSBmZXRjaCBmcm9tIGF0IGxlYXN0IG9uZSBwYXJ0aXRpb24KKy0tIGFmdGVy IHRoZSBpbml0aWFsIGhlYXAgZmlsbC4gIFRoZSBMSU1JVCBrZWVwcyB0aGUgT1JERVIgQlkgKGFu ZCB0aGVyZWZvcmUKKy0tIHRoZSBNZXJnZSBBcHBlbmQpIGZyb20gYmVpbmcgb3B0aW1pemVkIGF3 YXkgaW4gdGhlIHN1YnF1ZXJ5LgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTSBhc3luY19wdCBPUkRFUiBCWSBiLCBhOworU0VMRUNUIGNvdW50KCopIEZST00gKFNF TEVDVCAqIEZST00gYXN5bmNfcHQgT1JERVIgQlkgYiwgYSBMSU1JVCAxMDAwMDApIHNzOworCiAt LSBUZXN0IGVycm9yIGhhbmRsaW5nLCBpZiBhY2Nlc3Npbmcgb25lIG9mIHRoZSBmb3JlaWduIHBh cnRpdGlvbnMgZXJyb3JzIG91dAogQ1JFQVRFIEZPUkVJR04gVEFCTEUgYXN5bmNfcF9icm9rZW4g UEFSVElUSU9OIE9GIGFzeW5jX3B0IEZPUiBWQUxVRVMgRlJPTSAoMTAwMDApIFRPICgxMDAwMSkK ICAgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ25vbl9leGlzdGVudF90YWJs ZScpOwogU0VMRUNUICogRlJPTSBhc3luY19wdDsKKy0tIFRlc3QgZXJyb3IgaGFuZGxpbmcgZm9y IGFzeW5jIE1lcmdlIEFwcGVuZAorU0VMRUNUICogRlJPTSBhc3luY19wdCBPUkRFUiBCWSBiLCBh OwogRFJPUCBGT1JFSUdOIFRBQkxFIGFzeW5jX3BfYnJva2VuOwogCiAtLSBDaGVjayBjYXNlIHdo ZXJlIG11bHRpcGxlIHBhcnRpdGlvbnMgdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24KQEAgLTQzMTks NiArNDMzNyw1MSBAQCBTRUxFQ1Qgby54IEZST00gKFZBTFVFUyAoMjUwNSksICgzNTA1KSkgbyh4 KSwgTEFURVJBTCAoU0VMRUNUIGEgRlJPTSBhc3luY19wdCBXSAogLS0gVGVzdCBDT1BZIFRPIHdo ZW4gZm9yZWlnbiB0YWJsZSBpcyBwYXJ0aXRpb24KIENPUFkgYXN5bmNfcHQgVE8gc3Rkb3V0OyAt LWVycm9yCiAKKy0tIFRlc3QgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBh OworU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsK KworLS0gVGVzdCBhc3luYyBNZXJnZSBBcHBlbmQgcmVzY2FuCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QKKwlBUlJBWShTRUxFQ1QgZi5pIEZST00gKFNFTEVDVCBiICsgZy5p IEZST00gYXN5bmNfcHQgV0hFUkUgYSA+IGcuaSBPUkRFUiBCWSBiKSBmKGkpIE9SREVSIEJZIGYu aSBMSU1JVCAxMCkKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGcoaSk7CitTRUxFQ1QKKwlB UlJBWShTRUxFQ1QgZi5pIEZST00gKFNFTEVDVCBiICsgZy5pIEZST00gYXN5bmNfcHQgV0hFUkUg YSA+IGcuaSBPUkRFUiBCWSBiKSBmKGkpIE9SREVSIEJZIGYuaSBMSU1JVCAxMCkKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMpIGcoaSk7CisKKy0tIFRlc3QgYXN5bmMgTWVyZ2UgQXBwZW5kIHJl c2NhbiB3aGVuIGEgTElNSVQgc3RvcHMgdGhlIHNjYW4gYmVmb3JlIGV2ZXJ5CistLSBhc3luYyBz dWJwbGFuJ3MgcmVxdWVzdCBoYXMgY29tcGxldGVkLCBzbyBvbiB0aGUgbmV4dCByZXNjYW4gKGZv ciB0aGUKKy0tIG5leHQgb3V0ZXIgcm93KSBzb21lIHN1YnBsYW4ncyByZXF1ZXN0IGlzIHN0aWxs IGluIGZsaWdodC4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBnLmksIHMu YiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBnKGkpLAorCUxBVEVSQUwgKFNFTEVDVCBiIEZS T00gYXN5bmNfcHQgV0hFUkUgYSA+IGcuaSBPUkRFUiBCWSBiIExJTUlUIDEpIHM7CitTRUxFQ1Qg Zy5pLCBzLmIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZyhpKSwKKwlMQVRFUkFMIChTRUxF Q1QgYiBGUk9NIGFzeW5jX3B0IFdIRVJFIGEgPiBnLmkgT1JERVIgQlkgYiBMSU1JVCAxKSBzOwor CistLSBUZXN0IGFzeW5jIE1lcmdlIEFwcGVuZCByZXNjYW4gd2hlbiBhIExJTUlUIHN0b3BzIHRo ZSBzY2FuIGJlZm9yZSBhbgorLS0gYXN5bmMgc3VicGxhbidzIGFscmVhZHktZGVsaXZlcmVkIHJl c3VsdCB3YXMgZXZlciBjb25zdW1lZCAoYmVjYXVzZSBpdAorLS0gZGlkbid0IHdpbiB0aGUgcmFj ZSB0byB0aGUgaGVhcCB0b3ApLiAgVGhlIG5leHQgcmVzY2FuIChmb3IgdGhlIG5leHQKKy0tIG91 dGVyIHJvdykgbXVzdCBub3QgbWlzdGFrZSB0aGF0IGxlZnRvdmVyIHJlc3VsdCBmb3IgYSBmcmVz aCBvbmU7IHRoZQorLS0gZXhwZWN0ZWQgcmVzdWx0IGluY3JlYXNlcyBlYWNoIHJvdywgc28gYSBz dGFsZSByZXVzZWQgdmFsdWUgd291bGQgc2hvdworLS0gdXAgYXMgdGhlIGZpcnN0IHJvdydzIHZh bHVlIHJlcGVhdGluZyBpbnN0ZWFkLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIGcuaSwgcy5iIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGcoaSksCisJTEFURVJBTCAo U0VMRUNUIGIgRlJPTSBhc3luY19wdCBXSEVSRSBhID4gZy5pIEFORCBiID4gZy5pICogMTAwIE9S REVSIEJZIGIgTElNSVQgMSkgczsKK1NFTEVDVCBnLmksIHMuYiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzKSBnKGkpLAorCUxBVEVSQUwgKFNFTEVDVCBiIEZST00gYXN5bmNfcHQgV0hFUkUgYSA+ IGcuaSBBTkQgYiA+IGcuaSAqIDEwMCBPUkRFUiBCWSBiIExJTUlUIDEpIHM7CisKKy0tIFRlc3Qg dGhlIEV4ZWNNZXJnZUFwcGVuZEFzeW5jUHJvY2Vzc1BlbmRpbmcgY29kZSBwYXRoOiBzYW1lIHNo YXJlZC1jb25uZWN0aW9uCistLSBwcnVuZWQtb3V0IGhhemFyZCBhcyB0aGUgQXBwZW5kIGNhc2Ug ZWFybGllciwgYnV0IHdpdGggT1JERVIgQlkgZm9yY2luZyBhCistLSBNZXJnZUFwcGVuZC4gIGFz eW5jX3AyIGFuZCBhc3luY19wMyBzaGFyZSBhIGNvbm5lY3Rpb247IHBlciBvdXRlciByb3cgZXhh Y3RseQorLS0gb25lIG9mIHRoZW0gaXMgcHJ1bmVkIHdoaWxlIGFzeW5jX3AxIChhIGRpZmZlcmVu dCBjb25uZWN0aW9uKSBhbHdheXMgbWF0Y2hlcywKKy0tIGFuZCB0aGUgaW5uZXIgTElNSVQgbGVh dmVzIHRoZSBvdGhlciBzaGFyZWQtY29ubmVjdGlvbiByZXF1ZXN0IG91dHN0YW5kaW5nCistLSBh Y3Jvc3MgdGhlIHJlc2Nhbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBv LngsIHMuYiBGUk9NIChWQUxVRVMgKDI1MDUpLCAoMzUwNSkpIG8oeCksIExBVEVSQUwgKFNFTEVD VCBiIEZST00gYXN5bmNfcHQgV0hFUkUgYSA9IDE1MDUgT1IgYSA9IG8ueCBPUkRFUiBCWSBiIExJ TUlUIDEpIHMgT1JERVIgQlkgby54OworU0VMRUNUIG8ueCwgcy5iIEZST00gKFZBTFVFUyAoMjUw NSksICgzNTA1KSkgbyh4KSwgTEFURVJBTCAoU0VMRUNUIGIgRlJPTSBhc3luY19wdCBXSEVSRSBh ID0gMTUwNSBPUiBhID0gby54IE9SREVSIEJZIGIgTElNSVQgMSkgcyBPUkRFUiBCWSBvLng7CisK IERST1AgRk9SRUlHTiBUQUJMRSBhc3luY19wMzsKIERST1AgVEFCTEUgYmFzZV90YmwzOwogCkBA IC00MzM0LDYgKzQzOTcsMTEgQEAgSU5TRVJUIElOVE8gcmVzdWx0X3RibCBTRUxFQ1QgKiBGUk9N IGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNTsKIFNFTEVDVCAqIEZST00gcmVzdWx0X3RibCBPUkRF UiBCWSBhOwogREVMRVRFIEZST00gcmVzdWx0X3RibDsKIAorLS0gVGVzdCBNZXJnZSBBcHBlbmQK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hF UkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0IFdIRVJF IGIgPT09IDUwNSBPUkRFUiBCWSBiLCBhOworCiAtLSBwYXJ0aXRpb253aXNlIGpvaW5zCiBTRVQg ZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOwogCkBAIC00Mzc0LDYgKzQ0NDIsMTAg QEAgU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBhIDwgMzAwMDsKIEVYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYSA8IDIwMDA7CiAK Ky0tIFRlc3QgaW50ZXJhY3Rpb24gb2YgYXN5bmMgTWVyZ2UgQXBwZW5kIHdpdGggcGxhbi10aW1l IHBhcnRpdGlvbiBwcnVuaW5nCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg KiBGUk9NIGFzeW5jX3B0IFdIRVJFIGEgPCAzMDAwIE9SREVSIEJZIGIsIGE7CisKIC0tIFRlc3Qg aW50ZXJhY3Rpb24gb2YgYXN5bmMgZXhlY3V0aW9uIHdpdGggcnVuLXRpbWUgcGFydGl0aW9uIHBy dW5pbmcKIFNFVCBwbGFuX2NhY2hlX21vZGUgVE8gZm9yY2VfZ2VuZXJpY19wbGFuOwogCkBAIC00 Mzk0LDYgKzQ0NjYsMTggQEAgRVhFQ1VURSBhc3luY19wdF9xdWVyeSAoMjAwMCwgNTA1KTsKIFNF TEVDVCAqIEZST00gcmVzdWx0X3RibCBPUkRFUiBCWSBhOwogREVMRVRFIEZST00gcmVzdWx0X3Ri bDsKIAorLS0gVGVzdCBpbnRlcmFjdGlvbiBvZiBhc3luYyBNZXJnZSBBcHBlbmQgd2l0aCBydW4t dGltZSBwYXJ0aXRpb24gcHJ1bmluZworUFJFUEFSRSBhc3luY19wdF9tZXJnZV9xdWVyeSAoaW50 LCBpbnQpIEFTCisgIFNFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYSA8ICQxIEFORCBiID09 PSAkMiBPUkRFUiBCWSBiLCBhOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitFWEVD VVRFIGFzeW5jX3B0X21lcmdlX3F1ZXJ5ICgzMDAwLCA1MDUpOworRVhFQ1VURSBhc3luY19wdF9t ZXJnZV9xdWVyeSAoMzAwMCwgNTA1KTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor RVhFQ1VURSBhc3luY19wdF9tZXJnZV9xdWVyeSAoMjAwMCwgNTA1KTsKK0VYRUNVVEUgYXN5bmNf cHRfbWVyZ2VfcXVlcnkgKDIwMDAsIDUwNSk7CisKIFJFU0VUIHBsYW5fY2FjaGVfbW9kZTsKIAog Q1JFQVRFIFRBQkxFIGxvY2FsX3RibChhIGludCwgYiBpbnQsIGMgdGV4dCk7CkBAIC00NTcyLDYg KzQ2NTYsNjkgQEAgU0VMRUNUIGEgRlJPTSBiYXNlX3RibCBXSEVSRSAoYSwgcmFuZG9tKCkgPiAw KSBJTiAoU0VMRUNUIGEsIHJhbmRvbSgpID4gMCBGUk9NIGYKIERST1AgRk9SRUlHTiBUQUJMRSBm b3JlaWduX3RibCBDQVNDQURFOwogRFJPUCBUQUJMRSBiYXNlX3RibDsKIAorLS0gVGVzdCBhc3lu YyBNZXJnZSBBcHBlbmQKK0NSRUFURSBUQUJMRSBkaXN0cjEgKGkgaW50LCBqIGludCwgayB0ZXh0 KSBQQVJUSVRJT04gQlkgSEFTSCAoaSk7CitDUkVBVEUgVEFCTEUgYmFzZTEgKGkgaW50LCBqIGlu dCwgayB0ZXh0KTsKK0NSRUFURSBUQUJMRSBiYXNlMiAoaSBpbnQsIGogaW50LCBrIHRleHQpOwor Q1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIxX3AxIFBBUlRJVElPTiBPRiBkaXN0cjEgRk9SIFZB TFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKQorU0VSVkVSIGxvb3BiYWNrIE9QVElP TlMgKHRhYmxlX25hbWUgJ2Jhc2UxJyk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0cjFfcDIg UEFSVElUSU9OIE9GIGRpc3RyMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDEpCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTInKTsKKworQ1JF QVRFIFRBQkxFIGRpc3RyMiAoaSBpbnQsIGogaW50LCBrIHRleHQpIFBBUlRJVElPTiBCWSBIQVNI IChpKTsKK0NSRUFURSBUQUJMRSBiYXNlMyAoaSBpbnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRF IFRBQkxFIGJhc2U0IChpIGludCwgaiBpbnQsIGsgdGV4dCk7CitDUkVBVEUgRk9SRUlHTiBUQUJM RSBkaXN0cjJfcDEgUEFSVElUSU9OIE9GIGRpc3RyMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg MiwgUkVNQUlOREVSIDApCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFz ZTMnKTsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIGRpc3RyMl9wMiBQQVJUSVRJT04gT0YgZGlzdHIy IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSkKK1NFUlZFUiBsb29wYmFj ayBPUFRJT05TICh0YWJsZV9uYW1lICdiYXNlNCcpOworCitJTlNFUlQgSU5UTyBkaXN0cjEKK1NF TEVDVCBpLCBpKjEwLCAnZGF0YV8nIHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkg aTsKKworSU5TRVJUIElOVE8gZGlzdHIyCitTRUxFQ1QgaSwgaSoxMCwgJ2RhdGFfJyB8fCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgaTsKKworQU5BTFlaRSBkaXN0cjFfcDE7CitBTkFM WVpFIGRpc3RyMV9wMjsKK0FOQUxZWkUgZGlzdHIyX3AxOworQU5BTFlaRSBkaXN0cjJfcDI7CisK K1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIE9OOworCistLSBUZXN0IGpvaW5zIHdp dGggYXN5bmMgTWVyZ2UgQXBwZW5kCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgKiBGUk9NIGRpc3RyMSwgZGlzdHIyIFdIRVJFIGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0 cjIuaiA+IDkwIGFuZCBkaXN0cjIuayBsaWtlICdkYXRhJScKK09SREVSIEJZIGRpc3RyMi5pIExJ TUlUIDEwOworU0VMRUNUICogRlJPTSBkaXN0cjEsIGRpc3RyMiBXSEVSRSBkaXN0cjEuaT1kaXN0 cjIuaSBBTkQgZGlzdHIyLmogPiA5MCBhbmQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnCitPUkRFUiBC WSBkaXN0cjIuaSBMSU1JVCAxMDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSBkaXN0cjEgTEVGVCBKT0lOIGRpc3RyMiBPTiBkaXN0cjEuaT1kaXN0cjIuaSBB TkQgZGlzdHIyLmsgbGlrZSAnZGF0YSUnIFdIRVJFICBkaXN0cjEuaSA+IDkwCitPUkRFUiBCWSBk aXN0cjEuaSBMSU1JVCAyMDsKK1NFTEVDVCAqIEZST00gZGlzdHIxIExFRlQgSk9JTiBkaXN0cjIg T04gIGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0cjIuayBsaWtlICdkYXRhJScgV0hFUkUgZGlz dHIxLmkgPiA5MAorT1JERVIgQlkgZGlzdHIxLmkgTElNSVQgMjA7CisKKy0tIFRlc3QgcHJ1bmlu ZyB3aXRoIGFzeW5jIE1lcmdlIEFwcGVuZAorREVMRVRFIEZST00gZGlzdHIyOworSU5TRVJUIElO VE8gZGlzdHIyCitTRUxFQ1QgaSUxMCwgaSoxMCwgJ2RhdGFfJyB8fCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMDApIGk7CisKK0RFQUxMT0NBVEUgQUxMOworU0VUIHBsYW5fY2FjaGVfbW9k ZSBUTyBmb3JjZV9nZW5lcmljX3BsYW47CitQUkVQQVJFIGFzeW5jX3B0X3F1ZXJ5IChpbnQsIGlu dCkgQVMKKyAgU0VMRUNUICogRlJPTSBkaXN0cjIgV0hFUkUgaSA9IEFOWShBUlJBWVskMSwgJDJd KQorICBPUkRFUiBCWSBpLGoKKyAgTElNSVQgMTA7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCisJRVhFQ1VURSBhc3luY19wdF9xdWVyeSgxLCAxKTsKK0VYRUNVVEUgYXN5bmNfcHRfcXVl cnkoMSwgMSk7CitSRVNFVCBwbGFuX2NhY2hlX21vZGU7CisKK1JFU0VUIGVuYWJsZV9wYXJ0aXRp b253aXNlX2pvaW47CisKK0RST1AgVEFCTEUgZGlzdHIxLCBkaXN0cjIsIGJhc2UxLCBiYXNlMiwg YmFzZTMsIGJhc2U0OworCiBBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoRFJPUCBhc3lu Y19jYXBhYmxlKTsKIEFMVEVSIFNFUlZFUiBsb29wYmFjazIgT1BUSU9OUyAoRFJPUCBhc3luY19j YXBhYmxlKTsKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGYzNmZiYjYwMTAxLi5mZjEyZWUwZjgwMyAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbApAQCAtNTg2Miw2ICs1ODYyLDIwIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtZW5hYmxlLWFzeW5jLW1lcmdlLWFwcGVuZCIgeHJlZmxhYmVsPSJlbmFibGVfYXN5 bmNfbWVyZ2VfYXBwZW5kIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9hc3luY19tZXJn ZV9hcHBlbmQ8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRl cm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZDwv dmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4 dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgcXVlcnkgcGxhbm5lcidzIHVzZSBvZiBhc3lu Yy1hd2FyZQorICAgICAgICBtZXJnZSBhcHBlbmQgcGxhbiB0eXBlcy4gVGhlIGRlZmF1bHQgaXMg PGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFi bGUtYml0bWFwc2NhbiIgeHJlZmxhYmVsPSJlbmFibGVfYml0bWFwc2NhbiI+CiAgICAgICA8dGVy bT48dmFybmFtZT5lbmFibGVfYml0bWFwc2NhbjwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5 cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYwppbmRleCAw Y2YzNDFmNmQ1Zi4uOGQ5MjUyZTk4ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXBwZW5kLmMKQEAg LTIyNCw3ICsyMjQsOSBAQCBFeGVjUmVTY2FuQXBwZW5kQmFzZShBcHBlbmRCYXNlU3RhdGUgKm5v ZGUpCiAKIAkJLyoKIAkJICogSWYgY2hnUGFyYW0gb2Ygc3Vibm9kZSBpcyBub3QgbnVsbCB0aGVu IHBsYW4gd2lsbCBiZSByZS1zY2FubmVkIGJ5Ci0JCSAqIGZpcnN0IEV4ZWNQcm9jTm9kZS4KKwkJ ICogZmlyc3QgRXhlY1Byb2NOb2RlLiAgRm9yIGFuIGFzeW5jLWNhcGFibGUgc3VicGxhbiwgdGhh dCdzIGJ5CisJCSAqIEV4ZWNBcHBlbmRCYXNlQXN5bmNCZWdpbigpL0V4ZWNBc3luY1JlcXVlc3Qo KSBpbnN0ZWFkLCB0aGUgbmV4dAorCQkgKiB0aW1lIGl0IGZpcmVzIGEgcmVxdWVzdCBmb3IgaXQu CiAJCSAqLwogCQlpZiAoc3Vibm9kZS0+Y2hnUGFyYW0gPT0gTlVMTCkKIAkJCUV4ZWNSZVNjYW4o c3Vibm9kZSk7CkBAIC0yMzIsNiArMjM0LDcgQEAgRXhlY1JlU2NhbkFwcGVuZEJhc2UoQXBwZW5k QmFzZVN0YXRlICpub2RlKQogCiAJLyoKIAkgKiBSZXNldCBhc3luYyByZXF1ZXN0cy4gQXBwZW5k IG5vZGUgaGFzIGFscmVhZHkgcG9sbGVkIGZvciBhc3luYyByZXF1ZXN0LgorCSAqIE1lcmdlQXBw ZW5kIGNhbid0IGhhdmUgcGVuZGluZyBhc3luYyByZXF1ZXN0cyBpbiBFeGVjUmVTY2FuLgogCSAq LwogCWlmIChuYXN5bmNwbGFucyA+IDApCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0FzeW5jLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXN5bmMuYwppbmRl eCBjZjdkZGJiMDFmNC4uY2M5NWQyODUyMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNBc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jCkBA IC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlRm9yZWln bnNjYW4uaCIKKyNpbmNsdWRlICJleGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuaCIKIAogLyoKICAq IEFzeW5jaHJvbm91c2x5IHJlcXVlc3QgYSB0dXBsZSBmcm9tIGEgZGVzaWduZWQgYXN5bmMtY2Fw YWJsZSBub2RlLgpAQCAtMTIyLDYgKzEyMyw5IEBAIEV4ZWNBc3luY1Jlc3BvbnNlKEFzeW5jUmVx dWVzdCAqYXJlcSkKIAkJY2FzZSBUX0FwcGVuZFN0YXRlOgogCQkJRXhlY0FzeW5jQXBwZW5kUmVz cG9uc2UoYXJlcSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlQXBwZW5kU3RhdGU6CisJCQlF eGVjQXN5bmNNZXJnZUFwcGVuZFJlc3BvbnNlKGFyZXEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQkvKiBJZiB0aGUgbm9kZSBkb2Vzbid0IHN1cHBvcnQgYXN5bmMsIGNhbGxlciBtZXNzZWQg dXAuICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA4ZDhhNTAyZTkyOC4uZDQzYmY4 OTNlNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0yNSw2ICsy NSwyMCBAQAogICoJCXRvIGEgY29tbW9uIHNvcnQga2V5LiAgVGhlIE1lcmdlQXBwZW5kIG5vZGUg bWVyZ2VzIHRoZXNlIHN0cmVhbXMKICAqCQl0byBwcm9kdWNlIG91dHB1dCBzb3J0ZWQgdGhlIHNh bWUgd2F5LgogICoKKyAqCQlNZXJnZUFwcGVuZCBzdXBwb3J0cyBhc3luYy1jYXBhYmxlIHN1YnBs YW5zIChlLmcuIGZvcmVpZ24gc2NhbnMpLgorICoJCUFzeW5jIGV4ZWN1dGlvbiBpcyBiZW5lZmlj aWFsIGR1cmluZyB0aGUgaW5pdGlhbCBoZWFwIGZpbGwsIHdoZXJlCisgKgkJYWxsIGFzeW5jIHN1 YnBsYW5zIGFyZSBraWNrZWQgb2ZmIGNvbmN1cnJlbnRseSBhbmQgdGhlaXIgZmlyc3QKKyAqCQl0 dXBsZXMgYXJlIGZldGNoZWQgaW4gcGFyYWxsZWwuICBJbiBzdGVhZHkgc3RhdGUsIHRoZSBoZWFw CisgKgkJYWxnb3JpdGhtIHN0aWxsIG5lZWRzIHRoZSBuZXh0IHR1cGxlIGZyb20gb25lIHNwZWNp ZmljIHN1YnBsYW4KKyAqCQkodGhlIG9uZSBhdCB0aGUgaGVhcCB0b3ApLCBzbyB3ZSBjYW4gb25s eSBtYWtlIHByb2dyZXNzIG9uIHRoYXQKKyAqCQlvbmUgc3VicGxhbiBhdCBhIHRpbWUuICBGb3Ig YSBzeW5jaHJvbm91cyBzdWJwbGFuIHdlIHNpbXBseSBjYWxsCisgKgkJRXhlY1Byb2NOb2RlKCkg YWdhaW4uICBBbiBhc3luY2hyb25vdXMgc3VicGxhbiwgaG93ZXZlciwgbXVzdAorICoJCXN0aWxs IGJlIGRyaXZlbiB0aHJvdWdoIHRoZSBhc3luYyByZXF1ZXN0L3Jlc3BvbnNlIHByb3RvY29sOiBh CisgKgkJcGxhaW4gRXhlY1Byb2NOb2RlKCkgY2FsbCBieXBhc3NlcyBpdCwgYW5kIEZEV3Mgc3Vj aCBhcworICoJCXBvc3RncmVzX2ZkdyB0cmVhdCB0aGF0IGFzIGVuZC1vZi1kYXRhIG9uY2UgdGhl aXIgbG9jYWxseSBjYWNoZWQKKyAqCQliYXRjaCBvZiB0dXBsZXMgaXMgZXhoYXVzdGVkLiAgU28g Zm9yIHRob3NlIHdlIGlzc3VlIGEgZnJlc2gKKyAqCQlhc3luYyByZXF1ZXN0IGFuZCBibG9jayB1 bnRpbCBpdCBjb21wbGV0ZXMuCisgKgogICoJCU1lcmdlQXBwZW5kIG5vZGVzIGRvbid0IG1ha2Ug dXNlIG9mIHRoZWlyIGxlZnQgYW5kIHJpZ2h0CiAgKgkJc3VidHJlZXMsIHJhdGhlciB0aGV5IG1h aW50YWluIGEgbGlzdCBvZiBzdWJwbGFucyBzbwogICoJCWEgdHlwaWNhbCBNZXJnZUFwcGVuZCBu b2RlIGxvb2tzIGxpa2UgdGhpcyBpbiB0aGUgcGxhbiB0cmVlOgpAQCAtNDAsMTIgKzU0LDE0IEBA CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBcHBlbmQu aCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjQXN5bmMuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJleGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuaCIKICNpbmNsdWRlICJsaWIvYmluYXJ5aGVhcC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0Lmgi CisjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiAvKgogICogV2UgaGF2ZSBvbmUgc2xv dCBmb3IgZWFjaCBpdGVtIGluIHRoZSBoZWFwIGFycmF5LiAgV2UgdXNlIFNsb3ROdW1iZXIKQEAg LTU3LDYgKzczLDEyIEBAIHR5cGVkZWYgaW50MzIgU2xvdE51bWJlcjsKIHN0YXRpYyBUdXBsZVRh YmxlU2xvdCAqRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKTsKIHN0YXRpYyBpbnQJ aGVhcF9jb21wYXJlX3Nsb3RzKERhdHVtIGEsIERhdHVtIGIsIHZvaWQgKmFyZyk7CiAKK3N0YXRp YyB2b2lkIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUp Oworc3RhdGljIHZvaWQgRXhlY01lcmdlQXBwZW5kQXN5bmNCZWdpbihNZXJnZUFwcGVuZFN0YXRl ICpub2RlKTsKK3N0YXRpYyB2b2lkIEV4ZWNNZXJnZUFwcGVuZEFzeW5jR2V0TmV4dChNZXJnZUFw cGVuZFN0YXRlICpub2RlLCBpbnQgbXBsYW4pOworc3RhdGljIHZvaWQgRXhlY01lcmdlQXBwZW5k QXN5bmNFdmVudFdhaXQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBFeGVj TWVyZ2VBcHBlbmRHZXROZXh0U2xvdChNZXJnZUFwcGVuZFN0YXRlICpub2RlLCBpbnQgbXBsYW4p OworCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5pdE1lcmdlQXBwZW5kCkBAIC04OCwxMCArMTEw LDE1IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkgICAtMSwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAobWVy Z2VzdGF0ZS0+YXMubmFzeW5jcGxhbnMgPiAwICYmIG1lcmdlc3RhdGUtPmFzLnZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQpCisJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG1lcmdlc3RhdGUp OworCiAJbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSBwYWxsb2MwX2FycmF5KFR1cGxlVGFibGVTbG90 ICosIG1lcmdlc3RhdGUtPmFzLm5wbGFucyk7CiAJbWVyZ2VzdGF0ZS0+bXNfaGVhcCA9IGJpbmFy eWhlYXBfYWxsb2NhdGUobWVyZ2VzdGF0ZS0+YXMubnBsYW5zLCBoZWFwX2NvbXBhcmVfc2xvdHMs CiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZSk7CiAKKwltZXJnZXN0YXRlLT5tc19hc3luY3JlbWFp biA9IE5VTEw7CisKIAkvKgogCSAqIGluaXRpYWxpemUgc29ydC1rZXkgaW5mb3JtYXRpb24KIAkg Ki8KQEAgLTE1OCw4ICsxODUsMTMgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRl KQogCQkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnMgPQogCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5hcy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQkJbm9kZS0+YXMudmFs aWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCQljbGFzc2lmeV9tYXRjaGluZ19zdWJw bGFucyhub2RlKTsKIAkJfQogCisJCS8qIElmIHRoZXJlIGFyZSBhbnkgYXN5bmMgc3VicGxhbnMs IGJlZ2luIGV4ZWN1dGluZyB0aGVtLiAqLworCQlpZiAobm9kZS0+YXMubmFzeW5jcGxhbnMgPiAw KQorCQkJRXhlY01lcmdlQXBwZW5kQXN5bmNCZWdpbihub2RlKTsKKwogCQkvKgogCQkgKiBGaXJz dCB0aW1lIHRocm91Z2g6IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJw bGFuLAogCQkgKiBhbmQgc2V0IHVwIHRoZSBoZWFwLgpAQCAtMTcxLDYgKzIwMywxNiBAQCBFeGVj TWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCQlpZiAoIVR1cElzTnVsbChub2RlLT5t c19zbG90c1tpXSkpCiAJCQkJYmluYXJ5aGVhcF9hZGRfdW5vcmRlcmVkKG5vZGUtPm1zX2hlYXAs IEludDMyR2V0RGF0dW0oaSkpOwogCQl9CisKKwkJLyogTG9vayBhdCB2YWxpZCBhc3luYyBzdWJw bGFucyAqLworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5h cy52YWxpZF9hc3luY3BsYW5zLCBpKSkgPj0gMCkKKwkJeworCQkJRXhlY01lcmdlQXBwZW5kQXN5 bmNHZXROZXh0KG5vZGUsIGkpOworCQkJaWYgKCFUdXBJc051bGwobm9kZS0+bXNfc2xvdHNbaV0p KQorCQkJCWJpbmFyeWhlYXBfYWRkX3Vub3JkZXJlZChub2RlLT5tc19oZWFwLCBJbnQzMkdldERh dHVtKGkpKTsKKwkJfQorCiAJCWJpbmFyeWhlYXBfYnVpbGQobm9kZS0+bXNfaGVhcCk7CiAJCW5v ZGUtPm1zX2luaXRpYWxpemVkID0gdHJ1ZTsKIAl9CkBAIC0xODUsNyArMjI3LDcgQEAgRXhlY01l cmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiB0byBub3QgcHVsbCB0dXBsZXMgdW50 aWwgbmVjZXNzYXJ5LikKIAkJICovCiAJCWkgPSBEYXR1bUdldEludDMyKGJpbmFyeWhlYXBfZmly c3Qobm9kZS0+bXNfaGVhcCkpOwotCQlub2RlLT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShu b2RlLT5hcy5wbGFuc1tpXSk7CisJCUV4ZWNNZXJnZUFwcGVuZEdldE5leHRTbG90KG5vZGUsIGkp OwogCQlpZiAoIVR1cElzTnVsbChub2RlLT5tc19zbG90c1tpXSkpCiAJCQliaW5hcnloZWFwX3Jl cGxhY2VfZmlyc3Qobm9kZS0+bXNfaGVhcCwgSW50MzJHZXREYXR1bShpKSk7CiAJCWVsc2UKQEAg LTIwNiw2ICsyNDgsMzUgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCXJl dHVybiByZXN1bHQ7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTWVyZ2VBcHBlbmRHZXROZXh0 U2xvdAorICoKKyAqCQlSZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmb3IgdGhlIGdpdmVuIHN1YnBs YW4gaW50byBtc19zbG90c1ttcGxhbl0uCisgKgkJU3luY2hyb25vdXMgc3VicGxhbnMgYXJlIHB1 bGxlZCBkaXJlY3RseTsgYXN5bmNocm9ub3VzIG9uZXMgbXVzdCBnbworICoJCXRocm91Z2ggdGhl IGFzeW5jIHJlcXVlc3QvcmVzcG9uc2UgcHJvdG9jb2wsIHNpbmNlIGEgcGxhaW4KKyAqCQlFeGVj UHJvY05vZGUoKSBjYWxsIGJ5cGFzc2VzIGl0IGFuZCB3b3VsZCBiZSBtaXN0YWtlbiBieSBhbgor ICoJCWFzeW5jLWNhcGFibGUgRkRXIGZvciBlbmQtb2YtZGF0YSAoc2VlIHRoZSBmaWxlIGhlYWRl ciBjb21tZW50KS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNNZXJnZUFwcGVu ZEdldE5leHRTbG90KE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUsIGludCBtcGxhbikKK3sKKwlpZiAo Ym1zX2lzX21lbWJlcihtcGxhbiwgbm9kZS0+YXMuYXN5bmNwbGFucykpCisJeworCQlBc3luY1Jl cXVlc3QgKmFyZXEgPSBub2RlLT5hcy5hc3luY3JlcXVlc3RzW21wbGFuXTsKKworCQlBc3NlcnQo Ym1zX2lzX21lbWJlcihtcGxhbiwgbm9kZS0+YXMudmFsaWRfYXN5bmNwbGFucykpOworCQlBc3Nl cnQoIWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOworCisJCS8qIERpc2NhcmQgdGhlIHByZXZpb3Vz bHktcmV0dXJuZWQgcmVzdWx0IGJlZm9yZSByZXF1ZXN0aW5nIGEgbmV3IG9uZS4gKi8KKwkJbm9k ZS0+bXNfc2xvdHNbbXBsYW5dID0gTlVMTDsKKwkJRXhlY0FzeW5jUmVxdWVzdChhcmVxKTsKKwkJ RXhlY01lcmdlQXBwZW5kQXN5bmNHZXROZXh0KG5vZGUsIG1wbGFuKTsKKwl9CisJZWxzZQorCQlu b2RlLT5tc19zbG90c1ttcGxhbl0gPSBFeGVjUHJvY05vZGUobm9kZS0+YXMucGxhbnNbbXBsYW5d KTsKK30KKwogLyoKICAqIENvbXBhcmUgdGhlIHR1cGxlcyBpbiB0aGUgdHdvIGdpdmVuIHNsb3Rz LgogICovCkBAIC0yNjUsOCArMzM2LDE1OSBAQCBFeGVjRW5kTWVyZ2VBcHBlbmQoTWVyZ2VBcHBl bmRTdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNSZVNjYW5NZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0 YXRlICpub2RlKQogeworCWludAkJCW5hc3luY3BsYW5zID0gbm9kZS0+YXMubmFzeW5jcGxhbnM7 CisKKwkvKgorCSAqIE1lcmdlQXBwZW5kIG5ldmVyIGhhcyBhbiBhc3luYyByZXF1ZXN0IHN0aWxs IHBlbmRpbmcgYSBjYWxsYmFjayBhdAorCSAqIHJlc2NhbiB0aW1lOiBpdCB1c2VzIGFzeW5jIG9u bHkgdG8gc2VlZCB0aGUgaGVhcCwgZmV0Y2hpbmcgb25lIHR1cGxlCisJICogZnJvbSBlYWNoIGNo aWxkLCBhbmQgZXZlcnkgYXN5bmMgZmV0Y2ggaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYQor CSAqIHN5bmNocm9ub3VzIHdhaXQgZm9yIGl0cyByZXN1bHQgKHNlZSBFeGVjTWVyZ2VBcHBlbmRH ZXROZXh0U2xvdCgpKS4gIFNvCisJICogdGhlIGFzeW5jIHJlc2V0IGluIEV4ZWNSZVNjYW5BcHBl bmRCYXNlKCkgaGFzIG5vdGhpbmcgdG8gZHJhaW4gZm9yIHVzLgorCSAqLwogCUV4ZWNSZVNjYW5B cHBlbmRCYXNlKCZub2RlLT5hcyk7CiAKKwkvKiBSZXNldCBNZXJnZUFwcGVuZC1zcGVjaWZpYyBz dGF0ZSAqLworCWlmIChuYXN5bmNwbGFucyA+IDApCisJeworCQlibXNfZnJlZShub2RlLT5tc19h c3luY3JlbWFpbik7CisJCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsKKwl9CiAJYmluYXJ5 aGVhcF9yZXNldChub2RlLT5tc19oZWFwKTsKIAlub2RlLT5tc19pbml0aWFsaXplZCA9IGZhbHNl OworCisJLyoKKwkgKiBEaXNjYXJkIGFueSByZXN1bHRzIGxlZnQgb3ZlciBmcm9tIGJlZm9yZSB0 aGUgcmVzY2FuLiAgQW4gYXN5bmMKKwkgKiBzdWJwbGFuJ3Mgc2xvdCBjYW4gc3RpbGwgaG9sZCBh IHR1cGxlIHRoYXQgd2FzIGRlbGl2ZXJlZCBidXQgbmV2ZXIKKwkgKiBjb25zdW1lZCAoZS5nLiBi ZWNhdXNlIGEgTElNSVQgYWJvdmUgdXMgc3RvcHBlZCBwdWxsaW5nIGJlZm9yZSB0aGF0CisJICog c3VicGxhbiByZWFjaGVkIHRoZSBoZWFwIHRvcCk7IGlmIHdlIGRpZG4ndCBjbGVhciBpdCBoZXJl LCB0aGUgbmV4dAorCSAqIHNjYW4ncyBpbml0aWFsIGZpbGwgd291bGQgbWlzdGFrZSBpdCBmb3Ig YSBmcmVzaCByZXN1bHQgdmlhIGl0cworCSAqIFR1cElzTnVsbCgpIGNoZWNrLCBpbnN0ZWFkIG9m IHdhaXRpbmcgZm9yIHRoZSBzdWJwbGFuJ3MgbmV3IGFzeW5jCisJICogcmVzcG9uc2UuCisJICov CisJbWVtc2V0KG5vZGUtPm1zX3Nsb3RzLCAwLCBub2RlLT5hcy5ucGxhbnMgKiBzaXplb2YoVHVw bGVUYWJsZVNsb3QgKikpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJY2xhc3NpZnlfbWF0Y2hpbmdf c3VicGxhbnMKKyAqCisgKgkJQ2xhc3NpZnkgdGhlIG5vZGUncyBtc192YWxpZF9zdWJwbGFucyBp bnRvIHN5bmMgb25lcyBhbmQKKyAqCQlhc3luYyBvbmVzLCBhZGp1c3QgaXQgdG8gY29udGFpbiBz eW5jIG9uZXMgb25seSwgYW5kIHNhdmUKKyAqCQlhc3luYyBvbmVzIGluIHRoZSBub2RlJ3MgYXMu dmFsaWRfYXN5bmNwbGFucy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2NsYXNzaWZ5 X21hdGNoaW5nX3N1YnBsYW5zKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCit7CisJQXNzZXJ0KG5v ZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpOworCisJLyogTm90aGluZyB0byBkbyBp ZiB0aGVyZSBhcmUgbm8gdmFsaWQgc3VicGxhbnMuICovCisJaWYgKGJtc19pc19lbXB0eShub2Rl LT5hcy52YWxpZF9zdWJwbGFucykpCisJeworCQlub2RlLT5tc19hc3luY3JlbWFpbiA9IE5VTEw7 CisJCXJldHVybjsKKwl9CisKKwkvKiBObyB2YWxpZCBhc3luYyBzdWJwbGFucyBpZGVudGlmaWVk LiAqLworCWlmICghY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNfY29tbW9uKCZub2RlLT5hcy52 YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJCQkgICBub2RlLT5hcy5hc3luY3BsYW5zLAorCQkJCQkJ CQkJCSAgICZub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zKSkKKwkJbm9kZS0+bXNfYXN5bmNyZW1h aW4gPSBOVUxMOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY01lcmdlQXBwZW5kQXN5bmNCZWdp bgorICoKKyAqCQlCZWdpbiBleGVjdXRpbmcgZGVzaWduZWQgYXN5bmMtY2FwYWJsZSBzdWJwbGFu cy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNNZXJnZUFwcGVuZEFzeW5jQmVn aW4oTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKK3sKKwkvKiBFeGVjTWVyZ2VBcHBlbmQoKSBpZGVu dGlmaWVzIHZhbGlkIHN1YnBsYW5zICovCisJQXNzZXJ0KG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5z X2lkZW50aWZpZWQpOworCisJLyogSW5pdGlhbGl6ZSBzdGF0ZSB2YXJpYWJsZXMuICovCisJbm9k ZS0+bXNfYXN5bmNyZW1haW4gPSBibXNfY29weShub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zKTsK KworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5z LiAqLworCWlmIChibXNfaXNfZW1wdHkobm9kZS0+bXNfYXN5bmNyZW1haW4pKQorCQlyZXR1cm47 CisKKwlFeGVjQXBwZW5kQmFzZUFzeW5jQmVnaW4oJm5vZGUtPmFzKTsKK30KKworLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoJCUV4ZWNNZXJnZUFwcGVuZEFzeW5jR2V0TmV4dAorICoKKyAqCQlHZXQgdGhlIG5leHQg dHVwbGUgZnJvbSBzcGVjaWZpZWQgYXN5bmNocm9ub3VzIHN1YnBsYW4uCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3N0YXRpYyB2b2lkCitFeGVjTWVyZ2VBcHBlbmRBc3luY0dldE5leHQoTWVyZ2VBcHBlbmRT dGF0ZSAqbm9kZSwgaW50IG1wbGFuKQoreworCS8qCisJICogQWxsIGluaXRpYWwgYXN5bmMgcmVx dWVzdHMgd2VyZSBmaXJlZCBieSBFeGVjTWVyZ2VBcHBlbmRBc3luY0JlZ2luLiBUaGUKKwkgKiBy ZXN1bHQgbWF5IGFscmVhZHkgYmUgY2FjaGVkIGZyb20gYSBwcmlvciBldmVudCB3YWl0IC0gaWYg c28sIG5vdGhpbmcKKwkgKiB0byBkby4gIE90aGVyd2lzZSwgd2FpdCBmb3IgdGhlIHNwZWNpZmlj IHN1YnBsYW4gdG8gZGVsaXZlciBhIHR1cGxlIG9yCisJICogcmVwb3J0IGV4aGF1c3Rpb24uCisJ ICovCisJd2hpbGUgKFR1cElzTnVsbChub2RlLT5tc19zbG90c1ttcGxhbl0pICYmCisJCSAgIGJt c19pc19tZW1iZXIobXBsYW4sIG5vZGUtPm1zX2FzeW5jcmVtYWluKSkKKwl7CisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisJCUV4ZWNNZXJnZUFwcGVuZEFzeW5jRXZlbnRXYWl0KG5vZGUpOwor CX0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNBc3luY01lcmdlQXBwZW5kUmVzcG9uc2UKKyAq CisgKgkJUmVjZWl2ZSBhIHJlc3BvbnNlIGZyb20gYW4gYXN5bmNocm9ub3VzIHJlcXVlc3Qgd2Ug bWFkZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY0FzeW5jTWVyZ2VBcHBlbmRSZXNwb25z ZShBc3luY1JlcXVlc3QgKmFyZXEpCit7CisJTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSA9IChNZXJn ZUFwcGVuZFN0YXRlICopIGFyZXEtPnJlcXVlc3RvcjsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9 IGFyZXEtPnJlc3VsdDsKKworCS8qIFRoZSByZXN1bHQgc2hvdWxkIGJlIGEgVHVwbGVUYWJsZVNs b3Qgb3IgTlVMTC4gKi8KKwlBc3NlcnQoc2xvdCA9PSBOVUxMIHx8IElzQShzbG90LCBUdXBsZVRh YmxlU2xvdCkpOworCisJLyogTm90aGluZyB0byBkbyBpZiB0aGUgcmVxdWVzdCBpcyBwZW5kaW5n LiAqLworCWlmICghYXJlcS0+cmVxdWVzdF9jb21wbGV0ZSkKKwl7CisJCS8qIFRoZSByZXF1ZXN0 IHdvdWxkIGhhdmUgYmVlbiBwZW5kaW5nIGZvciBhIGNhbGxiYWNrLiAqLworCQlBc3NlcnQoYXJl cS0+Y2FsbGJhY2tfcGVuZGluZyk7CisJCXJldHVybjsKKwl9CisKKwkvKiBJZiB0aGUgcmVzdWx0 IGlzIE5VTEwgb3IgYW4gZW1wdHkgc2xvdCwgdGhlIHN1YnBsYW4gaXMgZXhoYXVzdGVkLiAqLwor CWlmIChUdXBJc051bGwoc2xvdCkpCisJeworCQkvKiBUaGUgZW5kaW5nIHN1YnBsYW4gd291bGRu J3QgaGF2ZSBiZWVuIHBlbmRpbmcgZm9yIGEgY2FsbGJhY2suICovCisJCUFzc2VydCghYXJlcS0+ Y2FsbGJhY2tfcGVuZGluZyk7CisJCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gYm1zX2RlbF9tZW1i ZXIobm9kZS0+bXNfYXN5bmNyZW1haW4sCisJCQkJCQkJCQkJCSAgYXJlcS0+cmVxdWVzdF9pbmRl eCk7CisJCXJldHVybjsKKwl9CisKKwkvKiBTYXZlIHJlc3VsdCBkaXJlY3RseSBpbnRvIHRoZSBt ZXJnZSBzbG90IGFycmF5LiAqLworCW5vZGUtPm1zX3Nsb3RzW2FyZXEtPnJlcXVlc3RfaW5kZXhd ID0gc2xvdDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNNZXJnZUFwcGVuZEFzeW5jRXZlbnRX YWl0CisgKgorICoJCVdhaXQgb3IgcG9sbCBmb3IgZmlsZSBkZXNjcmlwdG9yIGV2ZW50cyBhbmQg ZmlyZSBjYWxsYmFja3MuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjTWVyZ2VB cHBlbmRBc3luY0V2ZW50V2FpdChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQoreworCS8qIFdlIHNo b3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gdmFsaWQgYXN5bmMgc3VicGxh bnMuICovCisJQXNzZXJ0KGJtc19udW1fbWVtYmVycyhub2RlLT5tc19hc3luY3JlbWFpbikgPiAw KTsKKworCUV4ZWNBcHBlbmRCYXNlQXN5bmNFdmVudFdhaXQoJm5vZGUtPmFzLCAtMSAvKiBubyB0 aW1lb3V0ICovICwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfTUVSR0VfQVBQRU5EX1JFQURZKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDdiYmRkYjhiZWU0Li5mNzYw ZWY5YWEzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC0xNjUsNiAr MTY1LDcgQEAgYm9vbAkJZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSB0cnVlOwogYm9vbAkJZW5hYmxl X3BhcnRpdGlvbl9wcnVuaW5nID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9wcmVzb3J0ZWRfYWdncmVn YXRlID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9hc3luY19hcHBlbmQgPSB0cnVlOworYm9vbAkJZW5h YmxlX2FzeW5jX21lcmdlX2FwcGVuZCA9IHRydWU7CiAKIHR5cGVkZWYgc3RydWN0CiB7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggY2M1ZWVhMjAxMjIuLjBmZWVj NzhhOTZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xNDU4 LDYgKzE0NTgsNyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs IE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwog CUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0 aC5wYXJlbnQ7CisJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKIAogCS8qCiAJICogV2Ug ZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNw bGl0IG91dApAQCAtMTQ3Myw2ICsxNDc0LDEwIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJbm9kZS0+YWIu YXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7CiAJbm9kZS0+YWIuY2hpbGRfYXBwZW5kX3JlbGlkX3Nl dHMgPSBiZXN0X3BhdGgtPmNoaWxkX2FwcGVuZF9yZWxpZF9zZXRzOwogCisJY29uc2lkZXJfYXN5 bmMgPSAoZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCAmJgorCQkJCQkgICFiZXN0X3BhdGgtPnBh dGgucGFyYWxsZWxfc2FmZSAmJgorCQkJCQkgIGxpc3RfbGVuZ3RoKGJlc3RfcGF0aC0+c3VicGF0 aHMpID4gMSk7CisKIAkvKgogCSAqIENvbXB1dGUgc29ydCBjb2x1bW4gaW5mbywgYW5kIGFkanVz dCBNZXJnZUFwcGVuZCdzIHRsaXN0IGFzIG5lZWRlZC4KIAkgKiBCZWNhdXNlIHdlIHBhc3MgYWRq dXN0X3RsaXN0X2luX3BsYWNlID0gdHJ1ZSwgd2UgbWF5IGlnbm9yZSB0aGUKQEAgLTE1NzMsNiAr MTU3OCwxOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1l cmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQkJc3VicGxhbiA9IHNvcnRfcGxhbjsKIAkJfQog CisJCS8qCisJCSAqIElmIG5lZWRlZCwgY2hlY2sgdG8gc2VlIGlmIHN1YnBsYW4gY2FuIGJlIGV4 ZWN1dGVkIGFzeW5jaHJvbm91c2x5LgorCQkgKiBVbmxpa2UgY3JlYXRlX2FwcGVuZF9wbGFuKCks IHdlIGRvbid0IGtlZXAgYSBjb3VudCBvZiB0aGUgcmVzdWx0OgorCQkgKiBNZXJnZUFwcGVuZCBo YXMgbm8gbmFzeW5jcGxhbnMgZmllbGQgdG8ga2VlcCBpdCBpbiAoaXRzIGV4ZWN1dG9yCisJCSAq IGluc3RlYWQgcmVjb21wdXRlcyB0aGUgc2V0IG9mIGFzeW5jLWNhcGFibGUgc3VicGxhbnMgZnJv bSBlYWNoCisJCSAqIHN1YnBsYW4ncyBhc3luY19jYXBhYmxlIGZsYWcgYXQgRXhlY0luaXQgdGlt ZSksIHNpbmNlIGl0IGRyaXZlcworCQkgKiBpdHMgc3VicGxhbnMgb25lIGF0IGEgdGltZSBhbmQg aGFzIG5vIHBsYW5uaW5nLXRpbWUgY29uc3VtZXIgZm9yCisJCSAqIHN1Y2ggYSBjb3VudC4KKwkJ ICovCisJCWlmIChjb25zaWRlcl9hc3luYykKKwkJCW1hcmtfYXN5bmNfY2FwYWJsZV9wbGFuKHN1 YnBsYW4sIHN1YnBhdGgpOworCiAJCXN1YnBsYW5zID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxh bik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50X25hbWVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFt ZXMudHh0CmluZGV4IDNkMzY2ZmQxMTE0Li4xMTI4NzNkYzQ2YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKQEAgLTEzOCw2ICsxMzgsNyBA QCBMT0dJQ0FMX0FQUExZX1NFTkRfREFUQQkiV2FpdGluZyBmb3IgYSBsb2dpY2FsIHJlcGxpY2F0 aW9uIGxlYWRlciBhcHBseSBwcm9jZXNzCiBMT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NI QU5HRQkiV2FpdGluZyBmb3IgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHBy b2Nlc3MgdG8gY2hhbmdlIHN0YXRlLiIKIExPR0lDQUxfU1lOQ19EQVRBCSJXYWl0aW5nIGZvciBh IGxvZ2ljYWwgcmVwbGljYXRpb24gcmVtb3RlIHNlcnZlciB0byBzZW5kIGRhdGEgZm9yIGluaXRp YWwgdGFibGUgc3luY2hyb25pemF0aW9uLiIKIExPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UJIldh aXRpbmcgZm9yIGEgbG9naWNhbCByZXBsaWNhdGlvbiByZW1vdGUgc2VydmVyIHRvIGNoYW5nZSBz dGF0ZS4iCitNRVJHRV9BUFBFTkRfUkVBRFkJIldhaXRpbmcgZm9yIHN1YnBsYW4gbm9kZXMgb2Yg YSA8bGl0ZXJhbD5NZXJnZUFwcGVuZDwvbGl0ZXJhbD4gcGxhbiBub2RlIHRvIGJlIHJlYWR5LiIK IE1FU1NBR0VfUVVFVUVfSU5URVJOQUwJIldhaXRpbmcgZm9yIGFub3RoZXIgcHJvY2VzcyB0byBi ZSBhdHRhY2hlZCB0byBhIHNoYXJlZCBtZXNzYWdlIHF1ZXVlLiIKIE1FU1NBR0VfUVVFVUVfUFVU X01FU1NBR0UJIldhaXRpbmcgdG8gd3JpdGUgYSBwcm90b2NvbCBtZXNzYWdlIHRvIGEgc2hhcmVk IG1lc3NhZ2UgcXVldWUuIgogTUVTU0FHRV9RVUVVRV9SRUNFSVZFCSJXYWl0aW5nIHRvIHJlY2Vp dmUgYnl0ZXMgZnJvbSBhIHNoYXJlZCBtZXNzYWdlIHF1ZXVlLiIKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggYzU3NDQxZjdkOTguLjlmZGRiNDE1NzczIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtODY5LDYgKzg2 OSwxNCBAQAogICBib290X3ZhbCA9PiAndHJ1ZScsCiB9LAogCit7IG5hbWUgPT4gJ2VuYWJsZV9h c3luY19tZXJnZV9hcHBlbmQnLCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdDX1VTRVJT RVQnLCBncm91cCA9PiAnUVVFUllfVFVOSU5HX01FVEhPRCcsCisgIHNob3J0X2Rlc2MgPT4gJ0Vu YWJsZXMgdGhlIHBsYW5uZXJcJ3MgdXNlIG9mIGFzeW5jIG1lcmdlIGFwcGVuZCBwbGFucy4nLAor ICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLAorICB2YXJpYWJsZSA9PiAnZW5hYmxlX2FzeW5jX21l cmdlX2FwcGVuZCcsCisgIGJvb3RfdmFsID0+ICd0cnVlJywKK30sCisKKwogeyBuYW1lID0+ICdl bmFibGVfYml0bWFwc2NhbicsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNF VCcsIGdyb3VwID0+ICdRVUVSWV9UVU5JTkdfTUVUSE9EJywKICAgc2hvcnRfZGVzYyA9PiAnRW5h YmxlcyB0aGUgcGxhbm5lclwncyB1c2Ugb2YgYml0bWFwLXNjYW4gcGxhbnMuJywKICAgZmxhZ3Mg PT4gJ0dVQ19FWFBMQUlOJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQppbmRleCBlNzU5ZjA2YjUwZi4uY2IzYmIzNzI3ZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQyNyw2ICs0MjcsNyBA QAogIyAtIFBsYW5uZXIgTWV0aG9kIENvbmZpZ3VyYXRpb24gLQogCiAjZW5hYmxlX2FzeW5jX2Fw cGVuZCA9IG9uCisjZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCA9IG9uCiAjZW5hYmxlX2JpdG1h cHNjYW4gPSBvbgogI2VuYWJsZV9nYXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2dyb3VwYWdnID0g b24KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmgKaW5kZXggZGZjZjQ1MDk5YmEu LjIyNTVjYzY4YjIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuaApAQCAt MTksNSArMTksNiBAQAogZXh0ZXJuIE1lcmdlQXBwZW5kU3RhdGUgKkV4ZWNJbml0TWVyZ2VBcHBl bmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVy biB2b2lkIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKTsKIGV4dGVy biB2b2lkIEV4ZWNSZVNjYW5NZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKTsKK2V4 dGVybiB2b2lkIEV4ZWNBc3luY01lcmdlQXBwZW5kUmVzcG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVx KTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVNRVJHRUFQUEVORF9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCmluZGV4IDNlNTFlMTc5Nzc5Li44NWE4NDRjMWJkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK QEAgLTE1ODYsNiArMTU4Niw5IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kU3RhdGUKIAlU dXBsZVRhYmxlU2xvdCAqKm1zX3Nsb3RzOwkvKiBhcnJheSBvZiBsZW5ndGggbXNfbnBsYW5zICov CiAJc3RydWN0IGJpbmFyeWhlYXAgKm1zX2hlYXA7IC8qIGJpbmFyeSBoZWFwIG9mIHNsb3QgaW5k aWNlcyAqLwogCWJvb2wJCW1zX2luaXRpYWxpemVkOyAvKiBhcmUgc3VicGxhbnMgc3RhcnRlZD8g Ki8KKworCS8qIE1lcmdlLXNwZWNpZmljIGFzeW5jIHRyYWNraW5nICovCisJQml0bWFwc2V0ICAq bXNfYXN5bmNyZW1haW47IC8qIHJlbWFpbmluZyBhc3luY2hyb25vdXMgcGxhbnMgKi8KIH0gTWVy Z2VBcHBlbmRTdGF0ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKaW5k ZXggMTQyNTVjOTAwZmMuLjE5Zjg3NTNlMmQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvY29zdC5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKQEAgLTcxLDYg KzcxLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3BhcmFsbGVsX2hhc2g7CiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmc7CiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBlbmFibGVfcHJlc29ydGVkX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9hc3luY19hcHBlbmQ7CitleHRlcm4gUEdETExJTVBPUlQgYm9v bCBlbmFibGVfYXN5bmNfbWVyZ2VfYXBwZW5kOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb25z dHJhaW50X2V4Y2x1c2lvbjsKIAogZXh0ZXJuIGRvdWJsZSBpbmRleF9wYWdlc19mZXRjaGVkKGRv dWJsZSB0dXBsZXNfZmV0Y2hlZCwgQmxvY2tOdW1iZXIgcGFnZXMsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDFlMzI3YzJhZmE0Li5mMmJiODAzZDFkNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTE1Niw2ICsxNTYsNyBAQCBzZWxl Y3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxl JSc7CiAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAgIHwgc2V0dGluZyAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQogIGVuYWJsZV9hc3luY19hcHBlbmQg ICAgICAgICAgICB8IG9uCisgZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCAgICAgIHwgb24KICBl bmFibGVfYml0bWFwc2NhbiAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9kaXN0aW5jdF9yZW9y ZGVyaW5nICAgICB8IG9uCiAgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSAgICAgICAgIHwgb24KQEAg LTE4MSw3ICsxODIsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdo ZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAg IHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRz Y2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjYgcm93cykKKygyNyByb3dzKQogCiAtLSBUaGVy ZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVzLiAg SW5qZWN0aW9uUG9pbnQKIC0tIG1heSBiZSBwcmVzZW50IG9yIGFic2VudCwgZGVwZW5kaW5nIG9u IGhpc3Rvcnkgc2luY2UgbGFzdCBwb3N0bWFzdGVyIHN0YXJ0LgotLSAKMi40My4wCgo= --=_af6f24791e4237051ef45f4a389338e7--