Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZ03h-00045t-GY for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Mar 2022 00:50:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nZ02h-0001oK-BJ for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Mar 2022 00:49:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZ02g-0001nl-DC for pgsql-hackers@lists.postgresql.org; Tue, 29 Mar 2022 00:49:02 +0000 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nZ02Y-0000AP-H3 for pgsql-hackers@lists.postgresql.org; Tue, 29 Mar 2022 00:49:01 +0000 Received: by mail-wm1-x336.google.com with SMTP id bi13-20020a05600c3d8d00b0038c2c33d8f3so432697wmb.4 for ; Mon, 28 Mar 2022 17:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=gmuzX0kY015TQWCpjEsHiT+bWi9QAuzXuiek+1ZTL34=; b=LtUd35DSrZJbKPb6ynOI7hw9oCYCCFrzuSClB22r5q23v1d7sNtXcSIfURf1fnnGzH L2U6JCh5/U1zghIgqJGgSS0MngWrGqgMlyE5CCx7N+DoCvW1VIkinUCdvvVvtlJ7flsP wnR+ilj2XMC7rEFrR9qfDZNGTW0uXC01eMegSHDX3Ti4LmTQrFdT6Hw9310nTE6s11ck blyI+GZ4BgrB1oX87LPxLV3JFGFQeqonR3UPBl9YnwWapP9od1451Rv4Wxh7DPeFLmuX Oai/oCJMeNkuG5sWvcrkCOmLdQT54blA6asSCny6n1mQltjQQLAI4T9eRp9eAbEiQP0T M+WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=gmuzX0kY015TQWCpjEsHiT+bWi9QAuzXuiek+1ZTL34=; b=vLKxmQXhDavcaEJZw1bZKXx8jk7q01iV0mflASEw3huH2LP60B3l3orc0RWXbBBeoq wBBd6tk3GhCGjyfCt1xH+fddWaxXPmlnpKnUayxEpWKPMSuiF8+JOkvjp3zXy6tDG2z9 o9OTIqyOsmjTombOn+TR5tBoFmMgitAIehDE1PCXh5jil2AMjhdEwYcfEP6w9oo5jtyc c24ZPkyILLM1RcnkdzpvZkYxN2UuloXm7m6UMZ9T9zj8Hc+TEOdxjLC4Yh4GX/a4vWyY Xj7MtsZQhd5yZpD1NSniaI3kDeJs5VXHRRFUcRa2jmxa+miAe388iyQwWQ4CTQLP/U/J naOQ== X-Gm-Message-State: AOAM533+oX2p1qY/3QrN9Oyz8B3/znsJQFTB3vB8vLNkwpQPCy45ufaU 7vtfgfL5KTa1AMmmPU/LcInAbM6ab4fb8rZsBvwK1ulH8GY5FNQP+ok/GYcJz0zo6Xj2o92tBaL wIVuNr8+V7JwLcXVA/2pldC2BVfbP+c3NoFsM7A7rtXpmWbw71SVpxGgPhjFPJnBJ2cIFIZfahs C1o800mzOrLUGhAvpKHrSY0IHaMEqBF+kOkj6y7bwinBNO5KwreHgF X-Google-Smtp-Source: ABdhPJwwLzLa6WIgOPMwE663aYd/K6m1QVj7tfcVVTPGfJgoklEzhUmiJj3ADbrDV/kVX8Zw1hayGQ== X-Received: by 2002:a05:600c:5113:b0:38d:d8f:67e9 with SMTP id o19-20020a05600c511300b0038d0d8f67e9mr2727180wms.107.1648514932685; Mon, 28 Mar 2022 17:48:52 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-250-165.net.upcbroadband.cz. [86.49.250.165]) by smtp.gmail.com with ESMTPSA id n65-20020a1c2744000000b003862bfb509bsm723881wmn.46.2022.03.28.17.48.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 28 Mar 2022 17:48:52 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------JTEy7hzMb4cjNSROqBqfZ0oc" Message-ID: <44472925-f6c6-e8de-6f72-0451458532c4@enterprisedb.com> Date: Tue, 29 Mar 2022 02:48:50 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: POC: GROUP BY optimization Content-Language: en-US To: "Andrey V. Lepikhov" , Teodor Sigaev Cc: Tomas Vondra , PostgreSQL Developers References: <20201027201509.jfv6sfhrmxhdwlvk@development> <20201029145025.tn3tekboot37nkbf@localhost> <22c44f98-bfa8-8630-62b5-5155e11eb284@enterprisedb.com> <006667af-fc50-0627-4be7-5d9cf665219f@enterprisedb.com> <4ee5b15c-1ce0-59c7-8d4a-a1fd68ee0d12@postgrespro.ru> <721b3ff9-f214-f5d4-86c7-bae515bbec18@enterprisedb.com> <7bea462e-8c3e-0f8c-c7d5-f4daa12f3baf@postgrespro.ru> <9af89543-3d17-4c98-59de-1daa5bceeb06@enterprisedb.com> <9408e450-60c6-6fbc-d5c4-467bb0abfe67@postgrespro.ru> From: Tomas Vondra In-Reply-To: <9408e450-60c6-6fbc-d5c4-467bb0abfe67@postgrespro.ru> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's a rebased/improved version of the patch, with smaller parts addressing various issues. There are seven parts: 0001 - main part, just rebased 0002 - replace the debug GUC options with a single GUC to disable the optimization if needed 0003 - minor code cleanup, removal of unnecessary variable 0004 - various comment fixes (rewordings, typos, ...) 0005 - a minor code simplification, addressing FIXMEs from 0004 0006 - adds the new GUC to the docs 0007 - demonstrates plan changes with a disabled optimization The first 6 parts should be squashed and committed at one, I only kept them separate for clarity. The 0007 is merely a demonstration of the new GUC and that it disables the optimization. > Agree. Because it is a kind of automation we should allow user to switch > it off in the case of problems or manual tuning. > > Also, I looked through this patch. It has some minor problems: > 1. Multiple typos in the patch comment. I went through the comments and checked all of them for grammar mistakes and typos using a word processor, so hopefully that should be OK. But maybe there's still something wrong. > 2. The term 'cardinality of a key' - may be replace with 'number of > duplicates'? No, cardinality means "number of distinct values", so "duplicates" would be wrong. And I think "cardinality" is well established term, so I think it's fine. BTW I named the GUC enable_group_by_reordering, I wonder if it should be named differently, e.g. enable_groupby_reordering? Opinions? regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0001-Optimize-order-of-GROUP-BY-keys-20220328.patch" Content-Disposition: attachment; filename="0001-Optimize-order-of-GROUP-BY-keys-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSA2MTM2OWI0OTk3NzA5MThlZGI5MjlkMGNhODM3YTEyM2JlYTNmY2RiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAyMSBKYW4gMjAyMiAyMDoyMjoxNCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMS83XSBPcHRpbWl6ZSBvcmRlciBvZiBHUk9VUCBCWSBrZXlzCgpXaGVu IGV2YWx1YXRpbmcgYSBxdWVyeSB3aXRoIGEgbXVsdGktY29sdW1uIEdST1VQIEJZIGNsYXVz ZSB1c2luZyBzb3J0LAp0aGUgY29zdCBtYXkgYmUgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhl IG9yZGVyIGluIHdoaWNoIHRoZSBrZXlzIGFyZQpjb21wYXJlZCB3aGVuIGJ1aWxkaW5nIHRo ZSBncm91cHMuIEdyb3VwaW5nIGRvZXMgbm90IGltcGx5IGFueSBvcmRlcmluZywKc28gd2Un cmUgYWxsb3dlZCB0byBjb21wYXJlIHRoZSBrZXlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5k IGEgSGFzaCBBZ2cKbGV2ZXJhZ2VzIHRoaXMuIEJ1dCBmb3IgR3JvdXAgQWdnLCB3ZSBzaW1w bHkgY29tcGFyZWQga2V5cyBpbiB0aGUgb3JkZXIKYXMgc3BlY2lmaWVkIGluIHRoZSBxdWVy eS4gVGhpcyBjb21taXQgZXhwbG9yZXMgYWx0ZXJuYXRpdmUgb3JkZXJpbmcgb2YKdGhlIGtl eXMsIHRyeWluZyB0byBmaW5kIGEgY2hlYXBlciBvbmUuCgpUbyBwaWNrIHRoZSBvcHRpbWFs IG9yZGVyIG9mIGNvbXBhcmlzb25zLCBtdWx0aXBsZSBwYXJhbWV0ZXMgbmVlZCB0byBiZQpj b25zaWRlcmVkLCBib3RoIGxvY2FsIGFuZCBnbG9iYWwgb25lcy4gSW50dWl0aXZlbHksIGl0 J3MgYmV0dGVyIHRvCmxlYXZlIG1vcmUgZXhwZW5zaXZlIGNvbXBhcmlvbnMgKGZvciBjb21w bGV4IGRhdGEgdHlwZXMgZXRjLikgYXQgdGhlCnZlcnkgZW5kLCBiZWNhdXNlIG1heWJlIG9u ZSBvZiB0aGUgZWFybGllciBjb21wYXJpc29ucyB3aWxsIGJlIGVub3VnaCB0bwptYWtlIGEg ZGVjaXNpb24sIGFuZCB0aGUgZXhwZW5zaXZlIGNvbXBhcmlzb24gd2lsbCBiZSB1bm5lY2Vz c2FyeS4gVGhlCm90aGVyIGxvY2FsIHBhcmFtZXRlciBpcyBjYXJkaW5hbGl0eSAtIHRoZSBo aWdoZXIgdGhlIGNhcmRpbmFsaXR5IG9mIGEKa2V5LCB0aGUgbG93ZXIgdGhlIHByb2JhYmls aXR5IHdlJ2xsIG5lZWQgdG8gY29tcGFyZSBhZGRpdGlvbmFsIGtleXMuIFdlCmV4cGxvcmUg cG9zc2libGUgb3JkZXJpbmdzIGJ5IGEgY29tYmluYXRpb24gb2YgZXhoYXVzdGl2ZSBhbmQg Z3JlZWR5CmFwcHJvYWNoLCBhbmQgcGljayB0aGUgY2hlYXBlc3Qgb3JkZXJpbmcuCgpCdXQg dGhlcmUgYXJlIGdsb2JhbCBwYXJhbWV0ZXJzIHRvbywgaW4gdGhlIHNlbnNlIHRoYXQgd2Ug Y2FuJ3QgZnVsbHkKZXZhbHVhdGUgdGhlbSBhdCB0aGUgcG9pbnQgd2hlbiBjcmVhdGluZyB0 aGUgc29ydC4gRm9yIGV4YW1wbGUsIHRoZXJlCm1pZ2h0IGJlIGFuIE9SREVSIEJZIGNsYXVz ZSwgb3IgYW5vdGhlciBvcmRlcmluZy1kZXBlbmRlbnQgb3BlcmF0aW9uLApoaWdoZXIgdXAg aW4gdGhlIHF1ZXJ5IHBsYW4uIFRoZSBwYXRoIG1heSBiZSBhbHJlYWR5IHNvcnRlZCBieSAo c29tZQpvZikgdGhlIGtleXMsIGluIHdoaWNoIGNhc2Ugd2UgY2FuIGVpdGhlciB1c2UgaW5j cmVtZW50YWwgc29ydCBvciBldmVuCnNraXAgdGhlIHNvcnQgZW50aXJlbHkuIFNvIHdlIGNv bnNpZGVyIHZhcmlvdXMgYWRkaXRpb25hbCBwYXRoa2V5cyBpbgphZGRpdGlvbiB0byB0aGUg ImNoZWFwZXJzIGNvbXBhcmlvbiIgb3JkZXIuCgpUaGUgb3JpZ2luYWwgcGF0Y2ggd2FzIHBy b3Bvc2VkIGJ5IFRlb2RvciBTaWdhZXYsIGFuZCBsYXRlciByZXdvcmtlZCBhbmQKaW1wcm92 ZWQgYnkgRG1pdHJ5IERvbGdvdi4gUmV2aWV3cyBieSBhIG51bWJlciBvZiBwZW9wbGUsIGlu Y2x1ZGluZyBtZSwKQW5kcmV5IExlcGlraG92LCBDbGF1ZGlvIEZyZWlyZSBhbmQgSWJyYXIg QWhtZWQuCgpBdXRob3I6IERtaXRyeSBEb2xnb3YsIFRlb2RvciBTaWdhZXYKUmV2aWV3ZWQt Ynk6IFRvbWFzIFZvbmRyYSwgQW5kcmV5IExlcGlraG92LCBDbGF1ZGlvIEZyZWlyZSwgSWJy YXIgQWhtZWQKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS83Yzc5ZTZhNS04NTk3 LTc0ZTgtMDY3MS0xYzM5ZDEyNGM5ZDYlNDBzaWdhZXYucnUKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQSUyQnE2emNXXzRvMk5DMHp1dExrT0pQc0Z0ODBtZWdTcFhfZFZS bzZHSzlQQy1KeF9BZyU0MG1haWwuZ21haWwuY29tCi0tLQogLi4uL3Bvc3RncmVzX2Zkdy9l eHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAgfCAzNjkgKysrKysrKysrLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jICAgICAgICAgfCA1ODAgKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAg ICAgIHwgNjUzICsrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGF0aG5vZGUuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICAzMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9u b2Rlcy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9pbmNsdWRlL29wdGlt aXplci9jb3N0LmggICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhzLmggICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL3V0 aWxzL3NlbGZ1bmNzLmggICAgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0ICAgICAgfCAyNDQgKysrKysrLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ndWMub3V0ICAgICAgICAgICAgIHwgICA5ICstCiAuLi4v cmVncmVzcy9leHBlY3RlZC9pbmNyZW1lbnRhbF9zb3J0Lm91dCAgICAgfCAgIDIgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAgICAgICB8ICA1MSArLQog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQgIHwgMTM2ICsr LS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0ICB8ICA3 NSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91bmlvbi5vdXQgICAgICAgICAgIHwg IDYwICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCAgICAgICAgICAg fCAgOTkgKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmNyZW1lbnRhbF9zb3J0LnNxbCAg ICAgfCAgIDIgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDE5MTMgaW5zZXJ0aW9ucygrKSwgNDk3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9w b3N0Z3Jlc19mZHcub3V0CmluZGV4IGYyMTBmOTExODgwLi4yZmZjODM2ODI0YSAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBA IC0yNzQxLDE2ICsyNzQxLDEzIEBAIHNlbGVjdCBjMiAqIChyYW5kb20oKSA8PSAxKTo6aW50 IGFzIGMyIGZyb20gZnQyIGdyb3VwIGJ5IGMyICogKHJhbmRvbSgpIDw9IDEpOjppCiAtLSBH Uk9VUCBCWSBjbGF1c2UgaW4gdmFyaW91cyBmb3JtcywgY2FyZGluYWwsIGFsaWFzIGFuZCBj b25zdGFudCBleHByZXNzaW9uCiBleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiBzZWxl Y3QgY291bnQoYzIpIHcsIGMyIHgsIDUgeSwgNy4wIHogZnJvbSBmdDEgZ3JvdXAgYnkgMiwg eSwgOS4wOjppbnQgb3JkZXIgYnkgMjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU29ydAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBG b3JlaWduIFNjYW4KICAgIE91dHB1dDogKGNvdW50KGMyKSksIGMyLCA1LCA3LjAsIDkKLSAg IFNvcnQgS2V5OiBmdDEuYzIKLSAgIC0+ICBGb3JlaWduIFNjYW4KLSAgICAgICAgIE91dHB1 dDogKGNvdW50KGMyKSksIGMyLCA1LCA3LjAsIDkKLSAgICAgICAgIFJlbGF0aW9uczogQWdn cmVnYXRlIG9uIChwdWJsaWMuZnQxKQotICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGNv dW50KGMyKSwgYzIsIDUsIDcuMCwgOSBGUk9NICJTIDEiLiJUIDEiIEdST1VQIEJZIDIsIDMs IDUKLSg3IHJvd3MpCisgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZ0MSkK KyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBjb3VudChjMiksIGMyLCA1LCA3LjAsIDkgRlJPTSAi UyAxIi4iVCAxIiBHUk9VUCBCWSAyLCAzLCA1IE9SREVSIEJZIGMyIEFTQyBOVUxMUyBMQVNU CisoNCByb3dzKQogCiBzZWxlY3QgY291bnQoYzIpIHcsIGMyIHgsIDUgeSwgNy4wIHogZnJv bSBmdDEgZ3JvdXAgYnkgMiwgeSwgOS4wOjppbnQgb3JkZXIgYnkgMjsKICAgdyAgfCB4IHwg eSB8ICB6ICAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDFi MDdlYTM5MmQ5Li5mNGY3Y2UwMTA2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jCkBAIC0xNzU1LDYgKzE3NTUsMzI1IEBAIGNvc3RfcmVjdXJzaXZlX3VuaW9u KFBhdGggKnJ1bmlvbiwgUGF0aCAqbnJ0ZXJtLCBQYXRoICpydGVybSkKIAkJCQkJCQkJCXJ0 ZXJtLT5wYXRodGFyZ2V0LT53aWR0aCk7CiB9CiAKKy8qCisgKiBpc19mYWtlX3ZhcgorICoJ CVdvcmthcm91bmQgZm9yIGdlbmVyYXRlX2FwcGVuZF90bGlzdCgpIHdoaWNoIGdlbmVyYXRl cyBmYWtlIFZhcnMgd2l0aAorICoJCXZhcm5vID09IDAsIHRoYXQgd2lsbCBjYXVzZSBhIGZh aWwgb2YgZXN0aW1hdGVfbnVtX2dyb3VwKCkgY2FsbAorICoKKyAqIFhYWCBVbW1tLCB3aHkg d291bGQgZXN0aW1hdGVfbnVtX2dyb3VwIGZhaWwgd2l0aCB0aGlzPworICovCitzdGF0aWMg Ym9vbAoraXNfZmFrZV92YXIoRXhwciAqZXhwcikKK3sKKwlpZiAoSXNBKGV4cHIsIFJlbGFi ZWxUeXBlKSkKKwkJZXhwciA9IChFeHByICopICgoUmVsYWJlbFR5cGUgKikgZXhwciktPmFy ZzsKKworCXJldHVybiAoSXNBKGV4cHIsIFZhcikgJiYgKChWYXIgKikgZXhwciktPnZhcm5v ID09IDApOworfQorCisvKgorICogZ2V0X3dpZHRoX2Nvc3RfbXVsdGlwbGllcgorICoJCVJl dHVybnMgcmVsYXRpdmUgY29tcGxleGl0eSBvZiBjb21wYXJpbmcgdHdvIHZhbHVlcyBiYXNl ZCBvbiBpdCdzIHdpZHRoLgorICogVGhlIGlkZWEgYmVoaW5kIC0gbG9uZyB2YWx1ZXMgaGF2 ZSBtb3JlIGV4cGVuc2l2ZSBjb21wYXJpc29uLiBSZXR1cm4gdmFsdWUgaXMKKyAqIGluIGNw dV9vcGVyYXRvcl9jb3N0IHVuaXQuCisgKi8KK3N0YXRpYyBkb3VibGUKK2dldF93aWR0aF9j b3N0X211bHRpcGxpZXIoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpCit7CisJZG91 YmxlCXdpZHRoID0gLTEuMDsgLyogZmFrZSB2YWx1ZSAqLworCisJaWYgKElzQShleHByLCBS ZWxhYmVsVHlwZSkpCisJCWV4cHIgPSAoRXhwciAqKSAoKFJlbGFiZWxUeXBlICopIGV4cHIp LT5hcmc7CisKKwkvKiBUcnkgdG8gZmluZCBhY3R1YWwgc3RhdCBpbiBjb3JyZXNwb25kaW5n IHJlbGF0aW9uICovCisJaWYgKElzQShleHByLCBWYXIpKQorCXsKKwkJVmFyCQkqdmFyID0g KFZhciAqKSBleHByOworCisJCWlmICh2YXItPnZhcm5vID4gMCAmJiB2YXItPnZhcm5vIDwg cm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplKQorCQl7CisJCQlSZWxPcHRJbmZvCSpyZWwg PSByb290LT5zaW1wbGVfcmVsX2FycmF5W3Zhci0+dmFybm9dOworCisJCQlpZiAocmVsICE9 IE5VTEwgJiYKKwkJCQl2YXItPnZhcmF0dG5vID49IHJlbC0+bWluX2F0dHIgJiYKKwkJCQl2 YXItPnZhcmF0dG5vIDw9IHJlbC0+bWF4X2F0dHIpCisJCQl7CisJCQkJaW50CW5keCA9IHZh ci0+dmFyYXR0bm8gLSByZWwtPm1pbl9hdHRyOworCisJCQkJaWYgKHJlbC0+YXR0cl93aWR0 aHNbbmR4XSA+IDApCisJCQkJCXdpZHRoID0gcmVsLT5hdHRyX3dpZHRoc1tuZHhdOworCQkJ fQorCQl9CisJfQorCisJLyogRGlkbid0IGZpbmQgYW55IGFjdHVhbCBzdGF0cywgdXNlIGVz dGltYXRpb24gYnkgdHlwZSAqLworCWlmICh3aWR0aCA8IDAuMCkKKwl7CisJCU5vZGUJKm5v ZGUgPSAoTm9kZSopIGV4cHI7CisKKwkJd2lkdGggPSBnZXRfdHlwYXZnd2lkdGgoZXhwclR5 cGUobm9kZSksIGV4cHJUeXBtb2Qobm9kZSkpOworCX0KKworCS8qCisJICogQW55IHZhbHVl IGluIHBnc3FsIGlzIHBhc3NlZCBieSBEYXR1bSB0eXBlLCBzbyBhbnkgb3BlcmF0aW9uIHdp dGggdmFsdWUKKwkgKiBjb3VsZCBub3QgYmUgY2hlYXBlciB0aGFuIG9wZXJhdGlvbiB3aXRo IERhdHVtIHR5cGUKKwkgKi8KKwlpZiAod2lkdGggPD0gc2l6ZW9mKERhdHVtKSkKKwkJcmV0 dXJuIDEuMDsKKworCS8qCisJICogU2VlbXMsIGNvc3Qgb2YgY29tcGFyaXNpb24gaXMgbm90 IGRpcmVjdGx5IHByb3BvcnRpb25hbCB0byBhcmdzIHdpZHRoLAorCSAqIGJlY2F1c2UgY29t cGFyaW5nIGFyZ3MgY291bGQgYmUgZGlmZmVyIHdpZHRoICh3ZSBrbm93biBvbmx5IGF2ZXJh Z2Ugb3ZlcgorCSAqIGNvbHVtbikgYW5kIGRpZmZlcmVuY2Ugb2Z0ZW4gY291bGQgYmUgZGVm aW5lZCBvbmx5IGJ5IGxvb2tpbmcgb24gZmlyc3QKKwkgKiBieXRlcy4gU28sIHVzZSBsb2cx Nih3aWR0aCkgYXMgZXN0aW1hdGlvbi4KKwkgKi8KKwlyZXR1cm4gMS4wICsgMC4xMjUgKiBM T0cyKHdpZHRoIC8gc2l6ZW9mKERhdHVtKSk7Cit9CisKKy8qCisgKiBjb21wdXRlX2NwdV9z b3J0X2Nvc3QKKyAqCQljb21wdXRlIENQVSBjb3N0IG9mIHNvcnQgKGkuZS4gaW4tbWVtb3J5 KQorICoKKyAqIFRoZSBtYWluIHRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRvIGVzdGlt YXRlIHNvcnQgQ1BVIGNvc3RzIGlzIHRoZSBudW1iZXIKKyAqIG9mIGNhbGxzIHRvIHRoZSBj b21wYXJhdG9yIGZ1bmN0aW9ucy4gVGhlIGRpZmZpY3VsdHkgaXMgdGhhdCBmb3IgbXVsdGkt Y29sdW1uCisgKiBzb3J0cyB0aGVyZSBtYXkgYmUgZGlmZmVyZW50IGRhdGEgdHlwZXMgaW52 b2x2ZWQgKGZvciBzb21lIG9mIHdoaWNoIHRoZSBjYWxscworICogbWF5IGJlIG11Y2ggbW9y ZSBleHBlbnNpdmUpLiBGdXJ0aGVybW9yZSwgdGhlIGNvbHVtbnMgbWF5IGhhdmUgdmVyeSBk aWZmZXJlbnQKKyAqIG51bWJlciBvZiBkaXN0aW5jdCB2YWx1ZXMgLSB0aGUgaGlnaGVyIHRo ZSBudW1iZXIsIHRoZSBmZXdlciBjb21wYXJpc29ucyB3aWxsCisgKiBiZSBuZWVkZWQgZm9y IHRoZSBmb2xsb3dpbmcgY29sdW1ucy4KKyAqCisgKiBUaGUgYWxnb3JpdG0gaXMgaW5jcmVt ZW50YWwgLSB3ZSBhZGQgcGF0aGtleXMgb25lIGJ5IG9uZSwgYW5kIGF0IGVhY2ggc3RlcCB3 ZQorICogZXN0aW1hdGUgdGhlIG51bWJlciBvZiBuZWNlc3NhcnkgY29tcGFyaXNvbnMgKGJh c2VkIG9uIHRoZSBudW1iZXIgb2YgZGlzdGluY3QKKyAqIGdyb3VwcyBpbiB0aGUgY3VycmVu dCBwYXRoa2V5IHByZWZpeCBhbmQgdGhlIG5ldyBwYXRoa2V5KSwgYW5kIHRoZSBjb21wYXJp c29uCisgKiBjb3N0cyAod2hpY2ggaXMgZGF0YSB0eXBlIHNwZWNpZmljKS4KKyAqCisgKiBF c3RpbWF0aW9uIG9mIHRoZSBudW1iZXIgb2YgY29tcGFyaXNvbnMgaXMgYmFzZWQgb24gaWRl YXMgZnJvbToKKyAqCisgKiAiUXVpY2tzb3J0IElzIE9wdGltYWwiLCBSb2JlcnQgU2VkZ2V3 aWNrLCBKb24gQmVudGxleSwgMjAwMgorICogW2h0dHBzOi8vd3d3LmNzLnByaW5jZXRvbi5l ZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZdCisgKgorICogSW4gdGVybSBv ZiB0aGF0IHBhcGVyLCBsZXQgTiAtIG51bWJlciBvZiB0dXBsZXMsIFhpIC0gbnVtYmVyIG9m IGlkZW50aWNhbAorICogdHVwbGVzIHdpdGggdmFsdWUgS2ksIHRoZW4gdGhlIGVzdGltYXRl IG9mIG51bWJlciBvZiBjb21wYXJpc29ucyBpczoKKyAqCisgKglsb2coTiEgLyAoWDEhICog WDIhICogLi4pKSAgfiAgc3VtKFhpICogbG9nKE4vWGkpKQorICoKKyAqIFdlIGFzc3VtZSBh bGwgWGkgdGhlIHNhbWUgYmVjYXVzZSBub3cgd2UgZG9uJ3QgaGF2ZSBhbnkgZXN0aW1hdGlv biBvZgorICogZ3JvdXAgc2l6ZXMsIHdlIGhhdmUgb25seSBrbm93IHRoZSBlc3RpbWF0ZSBv ZiBudW1iZXIgb2YgZ3JvdXBzIChkaXN0aW5jdAorICogdmFsdWVzKS4gSW4gdGhhdCBjYXNl LCBmb3JtdWxhIGJlY29tZXM6CisgKgorICoJTiAqIGxvZyhOdW1iZXJPZkdyb3VwcykKKyAq CisgKiBGb3IgbXVsdGktY29sdW1uIHNvcnRzIHdlIG5lZWQgdG8gZXN0aW1hdGUgdGhlIG51 bWJlciBvZiBjb21wYXJpc29ucyBmb3IKKyAqIGVhY2ggaW5kaXZpZHVhbCBjb2x1bW4gLSBm b3IgZXhhbXBsZSB3aXRoIGNvbHVtbnMgKGMxLCBjMiwgLi4uLCBjaykgd2UKKyAqIGNhbiBl c3RpbWF0ZSB0aGF0IG51bWJlciBvZiBjb21wYXJpc29ucyBvbiBjayBpcyByb3VnaGx5Cisg KgorICoJbmNvbXBhcmlzb25zKGMxLCBjMiwgLi4uLCBjaykgLyBuY29tcGFyaXNvbnMoYzEs IGMyLCAuLi4sIGMoay0xKSkKKyAqCisgKiBMZXQgayBiZSBhIGNvbHVtbiBudW1iZXIsIEdr IC0gbnVtYmVyIG9mIGdyb3VwcyBkZWZpbmVkIGJ5IGsgY29sdW1ucywgYW5kIEZrCisgKiB0 aGUgY29zdCBvZiB0aGUgY29tcGFyaXNvbiBpcworICoKKyAqCU4gKiBzdW0oIEZrICogbG9n KEdrKSApCisgKgorICogTm90ZTogV2UgYWxzbyBjb25zaWRlciBjb2x1bW4gd2lkdGgsIG5v dCBqdXN0IHRoZSBjb21wYXJhdG9yIGNvc3QuCisgKgorICogTk9URTogc29tZSBjYWxsZXJz IGN1cnJlbnRseSBwYXNzIE5JTCBmb3IgcGF0aGtleXMgYmVjYXVzZSB0aGV5CisgKiBjYW4n dCBjb252ZW5pZW50bHkgc3VwcGx5IHRoZSBzb3J0IGtleXMuIEluIHRoaXMgY2FzZSwgaXQg d2lsbCBmYWxsYmFjayB0bworICogc2ltcGxlIGNvbXBhcmlzb24gY29zdCBlc3RpbWF0ZS4K KyAqLworc3RhdGljIENvc3QKK2NvbXB1dGVfY3B1X3NvcnRfY29zdChQbGFubmVySW5mbyAq cm9vdCwgTGlzdCAqcGF0aGtleXMsIGludCBuUHJlc29ydGVkS2V5cywKKwkJCQkJICBDb3N0 IGNvbXBhcmlzb25fY29zdCwgZG91YmxlIHR1cGxlcywgZG91YmxlIG91dHB1dF90dXBsZXMs CisJCQkJCSAgYm9vbCBoZWFwU29ydCkKK3sKKwlDb3N0CQlwZXJfdHVwbGVfY29zdCA9IDAu MDsKKwlMaXN0Q2VsbAkqbGM7CisJTGlzdAkJKnBhdGhrZXlFeHBycyA9IE5JTDsKKwlkb3Vi bGUJCXR1cGxlc1BlclByZXZHcm91cCA9IHR1cGxlczsKKwlkb3VibGUJCXRvdGFsRnVuY0Nv c3QgPSAxLjA7CisJYm9vbAkJaGFzX2Zha2VfdmFyID0gZmFsc2U7CisJaW50CQkJaSA9IDA7 CisJT2lkCQkJcHJldl9kYXRhdHlwZSA9IEludmFsaWRPaWQ7CisJQ29zdAkJZnVuY0Nvc3Qg PSAwLjA7CisJTGlzdAkJKmNhY2hlX3ZhcmluZm9zID0gTklMOworCisJLyogZmFsbGJhY2sg aWYgcGF0aGtleXMgaXMgdW5rbm93biAqLworCWlmIChsaXN0X2xlbmd0aChwYXRoa2V5cykg PT0gMCkKKwl7CisJCS8qCisJCSAqIElmIHdlJ2xsIHVzZSBhIGJvdW5kZWQgaGVhcC1zb3J0 IGtlZXBpbmcganVzdCBLIHR1cGxlcyBpbiBtZW1vcnksIGZvcgorCQkgKiBhIHRvdGFsIG51 bWJlciBvZiB0dXBsZSBjb21wYXJpc29ucyBvZiBOIGxvZzIgSzsgYnV0IHRoZSBjb25zdGFu dAorCQkgKiBmYWN0b3IgaXMgYSBiaXQgaGlnaGVyIHRoYW4gZm9yIHF1aWNrc29ydC4gIFR3 ZWFrIGl0IHNvIHRoYXQgdGhlCisJCSAqIGNvc3QgY3VydmUgaXMgY29udGludW91cyBhdCB0 aGUgY3Jvc3NvdmVyIHBvaW50LgorCQkgKgorCQkgKiBYWFggSSBzdXBwb3NlIHRoZSAicXVp Y2tzb3J0IGZhY3RvciIgcmVmZXJlbmNlcyB0byAxLjUgYXQgdGhlIGVuZAorCQkgKiBvZiB0 aGlzIGZ1bmN0aW9uLCBidXQgSSdtIG5vdCBzdXJlLiBJIHN1Z2dlc3Qgd2UgaW50cm9kdWNl IHNvbWUgc2ltcGxlCisJCSAqIGNvbnN0YW50cyBmb3IgdGhhdCwgaW5zdGVhZCBvZiBtYWdp YyB2YWx1ZXMuCisJCSAqLworCQlvdXRwdXRfdHVwbGVzID0gKGhlYXBTb3J0KSA/IDIuMCAq IG91dHB1dF90dXBsZXMgOiB0dXBsZXM7CisJCXBlcl90dXBsZV9jb3N0ICs9IDIuMCAqIGNw dV9vcGVyYXRvcl9jb3N0ICogTE9HMihvdXRwdXRfdHVwbGVzKTsKKworCQkvKiBhZGQgY29z dCBwcm92aWRlZCBieSBjYWxsZXIgKi8KKwkJcGVyX3R1cGxlX2Nvc3QgKz0gY29tcGFyaXNv bl9jb3N0OworCisJCXJldHVybiBwZXJfdHVwbGVfY29zdCAqIHR1cGxlczsKKwl9CisKKwkv KgorCSAqIENvbXB1dGluZyB0b3RhbCBjb3N0IG9mIHNvcnRpbmcgdGFrZXMgaW50byBhY2Nv dW50OgorCSAqIC0gcGVyIGNvbHVtbiBjb21wYXJpc29uIGZ1bmN0aW9uIGNvc3QKKwkgKiAt IHdlIHRyeSB0byBjb21wdXRlIG5lZWRlZCBudW1iZXIgb2YgY29tcGFyaXNvbiBwZXIgY29s dW1uCisJICovCisJZm9yZWFjaChsYywgcGF0aGtleXMpCisJeworCQlQYXRoS2V5CQkJCSpw YXRoa2V5ID0gKFBhdGhLZXkqKSBsZmlyc3QobGMpOworCQlFcXVpdmFsZW5jZU1lbWJlcgkq ZW07CisJCWRvdWJsZQkJCQkgbkdyb3VwcywKKwkJCQkJCQkgY29ycmVjdGVkTkdyb3VwczsK KworCQkvKgorCQkgKiBXZSBiZWxpZXZlIHRoYXQgZXF1aXZhbGVuY2UgbWVtYmVycyBhcmVu J3QgdmVyeSBkaWZmZXJlbnQsIHNvLCB0bworCQkgKiBlc3RpbWF0ZSBjb3N0IHdlIHRha2Ug anVzdCBmaXJzdCBtZW1iZXIKKwkJICovCisJCWVtID0gKEVxdWl2YWxlbmNlTWVtYmVyICop IGxpbml0aWFsKHBhdGhrZXktPnBrX2VjbGFzcy0+ZWNfbWVtYmVycyk7CisKKwkJaWYgKGVt LT5lbV9kYXRhdHlwZSAhPSBJbnZhbGlkT2lkKQorCQl7CisJCQkvKiBkbyBub3QgbG9va3Vw IGZ1bmNDb3N0IGlmIGRhdGEgdHlwZSBpcyB0aGUgc2FtZSBhcyBwcmV2aW91cyAqLworCQkJ aWYgKHByZXZfZGF0YXR5cGUgIT0gZW0tPmVtX2RhdGF0eXBlKQorCQkJeworCQkJCU9pZAkJ CXNvcnRvcDsKKwkJCQlRdWFsQ29zdAljb3N0OworCisJCQkJc29ydG9wID0gZ2V0X29wZmFt aWx5X21lbWJlcihwYXRoa2V5LT5wa19vcGZhbWlseSwKKwkJCQkJCQkJCQkJIGVtLT5lbV9k YXRhdHlwZSwgZW0tPmVtX2RhdGF0eXBlLAorCQkJCQkJCQkJCQkgcGF0aGtleS0+cGtfc3Ry YXRlZ3kpOworCisJCQkJY29zdC5zdGFydHVwID0gMDsKKwkJCQljb3N0LnBlcl90dXBsZSA9 IDA7CisJCQkJYWRkX2Z1bmN0aW9uX2Nvc3Qocm9vdCwgZ2V0X29wY29kZShzb3J0b3ApLCBO VUxMLCAmY29zdCk7CisJCQkJLyogd2UgbmVlZCBwcm9jb3N0LCBub3QgcHJvZHVjdCBvZiBw cm9jb3N0IGFuZCBjcHVfb3BlcmF0b3JfY29zdCAqLworCQkJCWZ1bmNDb3N0ID0gY29zdC5w ZXJfdHVwbGUgLyBjcHVfb3BlcmF0b3JfY29zdDsKKwkJCQlwcmV2X2RhdGF0eXBlID0gZW0t PmVtX2RhdGF0eXBlOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWZ1bmNDb3N0ID0gMS4wOyAv KiBmYWxsYmFjayAqLworCisJCS8qIFRyeSB0byB0YWtlIGludG8gYWNjb3VudCBhY3R1YWwg d2lkdGggZmVlICovCisJCWZ1bmNDb3N0ICo9IGdldF93aWR0aF9jb3N0X211bHRpcGxpZXIo cm9vdCwgZW0tPmVtX2V4cHIpOworCisJCXRvdGFsRnVuY0Nvc3QgKz0gZnVuY0Nvc3Q7CisK KwkJLyogUmVtZW1iZXIgaWYgd2UgaGF2ZSBhIGZha2UgdmFyIGluIHBhdGhrZXlzICovCisJ CWhhc19mYWtlX3ZhciB8PSBpc19mYWtlX3ZhcihlbS0+ZW1fZXhwcik7CisJCXBhdGhrZXlF eHBycyA9IGxhcHBlbmQocGF0aGtleUV4cHJzLCBlbS0+ZW1fZXhwcik7CisKKwkJLyoKKwkJ ICogUHJldmVudCBjYWxsIGVzdGltYXRlX251bV9ncm91cHMoKSB3aXRoIGZha2UgVmFyLiBO b3RlLAorCQkgKiBwYXRoa2V5RXhwcnMgY29udGFpbnMgb25seSBwcmV2aW91cyBjb2x1bW5z CisJCSAqLworCQlpZiAoaGFzX2Zha2VfdmFyID09IGZhbHNlKQorCQkJLyoKKwkJCSAqIFJl Y3Vyc2l2ZWx5IGNvbXB1dGUgbnVtYmVyIG9mIGdyb3VwcyBpbiBhIGdyb3VwIGZyb20gcHJl dmlvdXMgc3RlcAorCQkJICovCisJCQluR3JvdXBzID0gZXN0aW1hdGVfbnVtX2dyb3Vwc19p bmNyZW1lbnRhbChyb290LCBwYXRoa2V5RXhwcnMsCisJCQkJCQkJCQkJCQkJICB0dXBsZXNQ ZXJQcmV2R3JvdXAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJCQkJICAmY2FjaGVfdmFyaW5m b3MsCisJCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChwYXRoa2V5RXhwcnMpIC0gMSk7CisJ CWVsc2UgaWYgKHR1cGxlcyA+IDQuMCkKKwkJCS8qCisJCQkgKiBVc2UgZ2VvbWV0cmljIG1l YW4gYXMgZXN0aW1hdGlvbiBpZiB0aGVyZSBpcyBubyBhbnkgc3RhdHMuCisJCQkgKiBEb24n dCB1c2UgREVGQVVMVF9OVU1fRElTVElOQ1QgYmVjYXVzZSBpdCB1c2VkIGZvciBvbmx5IG9u ZQorCQkJICogY29sdW1uIHdoaWxlIGhlcmUgd2UgdHJ5IHRvIGVzdGltYXRlIG51bWJlciBv ZiBncm91cHMgb3ZlcgorCQkJICogc2V0IG9mIGNvbHVtbnMuCisJCQkgKgorCQkJICogWFhY IFBlcmhhcHMgdGhpcyBzaG91bGQgdXNlIERFRkFVTFRfTlVNX0RJU1RJTkNUIGF0IGxlYXN0 IHRvCisJCQkgKiBsaW1pdCB0aGUgY2FsY3VsYXRlZCB2YWx1ZXMsIHNvbWVob3c/CisJCQkg KgorCQkJICogWFhYIFdoYXQncyB0aGUgbG9naWMgb2YgdGhlIGZvbGxvd2luZyBmb3JtdWxh PworCQkJICovCisJCQluR3JvdXBzID0gY2VpbCgyLjAgKyBzcXJ0KHR1cGxlcykgKiAoaSAr IDEpIC8gbGlzdF9sZW5ndGgocGF0aGtleXMpKTsKKwkJZWxzZQorCQkJbkdyb3VwcyA9IHR1 cGxlczsKKworCQkvKgorCQkgKiBQcmVzb3J0ZWQga2V5cyBhcmVuJ3QgcGFydGljaXBhdGVk IGluIGNvbXBhcmlzb24gYnV0IHN0aWxsIGNoZWNrZWQKKwkJICogYnkgcXNvcnQgY29tcGFy YXRvci4KKwkJICovCisJCWlmIChpID49IG5QcmVzb3J0ZWRLZXlzKQorCQl7CisJCQlpZiAo aGVhcFNvcnQpCisJCQl7CisJCQkJZG91YmxlIGhlYXBfdHVwbGVzOworCisJCQkJLyogaGF2 ZSB0byBrZWVwIGF0IGxlYXN0IG9uZSBncm91cCwgYW5kIGEgbXVsdGlwbGUgb2YgZ3JvdXAg c2l6ZSAqLworCQkJCWhlYXBfdHVwbGVzID0gTWF4KGNlaWwob3V0cHV0X3R1cGxlcyAvIHR1 cGxlc1BlclByZXZHcm91cCkgKiB0dXBsZXNQZXJQcmV2R3JvdXAsCisJCQkJCQkJCSAgdHVw bGVzUGVyUHJldkdyb3VwKTsKKworCQkJCS8qIHNvIGhvdyBtYW55ICh3aG9sZSkgZ3JvdXBz IGlzIHRoYXQ/ICovCisJCQkJY29ycmVjdGVkTkdyb3VwcyA9IGNlaWwoaGVhcF90dXBsZXMg LyB0dXBsZXNQZXJQcmV2R3JvdXApOworCQkJfQorCQkJZWxzZQorCQkJCS8qIGFsbCBncm91 cHMgaW4gdGhlIGlucHV0ICovCisJCQkJY29ycmVjdGVkTkdyb3VwcyA9IG5Hcm91cHM7CisK KwkJCWNvcnJlY3RlZE5Hcm91cHMgPSBNYXgoMS4wLCBjZWlsKGNvcnJlY3RlZE5Hcm91cHMp KTsKKworCQkJcGVyX3R1cGxlX2Nvc3QgKz0gdG90YWxGdW5jQ29zdCAqIExPRzIoY29ycmVj dGVkTkdyb3Vwcyk7CisJCX0KKworCQlpKys7CisKKwkJLyoKKwkJICogUmVhbC13b3JsZCBk aXN0cmlidXRpb24gaXNuJ3QgdW5pZm9ybSBidXQgbm93IHdlIGRvbid0IGhhdmUgYSB3YXkg dG8KKwkJICogZGV0ZXJtaW5lIHRoYXQsIHNvLCBhZGQgbXVsdGlwbGllciB0byBnZXQgY2xv c2VyIHRvIHdvcnN0IGNhc2UuCisJCSAqIEJ1dCBlbnN1cmUgdGhlIG51bWJlciBvZiB0dXBs ZXMgZG9lcyBub3QgZXhjZWVkIHRoZSBncm91cCBzaXplIGluIHRoZQorCQkgKiBwcmVjZWRp bmcgc3RlcC4KKwkJICovCisJCXR1cGxlc1BlclByZXZHcm91cCA9IE1pbih0dXBsZXNQZXJQ cmV2R3JvdXAsCisJCQkJCQkJCSBjZWlsKDEuNSAqIHR1cGxlc1BlclByZXZHcm91cCAvIG5H cm91cHMpKTsKKworCQkvKgorCQkgKiBXZSBjb3VsZCBza2lwIGFsbCBmb2xsb3dpbmcgY29s dW1ucyBmb3IgY29zdCBlc3RpbWF0aW9uLCBiZWNhdXNlIHdlCisJCSAqIGJlbGlldmUgdGhh dCB0dXBsZXMgYXJlIHVuaXF1ZSBieSB0aGUgc2V0IG9mIHByZXZpb3VzIGNvbHVtbnMKKwkJ ICovCisJCWlmICh0dXBsZXNQZXJQcmV2R3JvdXAgPD0gMS4wKQorCQkJYnJlYWs7CisJfQor CisJbGlzdF9mcmVlKHBhdGhrZXlFeHBycyk7CisKKwkvKiBwZXJfdHVwbGVfY29zdCBpcyBp biBjcHVfb3BlcmF0b3JfY29zdCB1bml0cyAqLworCXBlcl90dXBsZV9jb3N0ICo9IGNwdV9v cGVyYXRvcl9jb3N0OworCisJLyoKKwkgKiBBY2NvcmRpbmdseSB0byAiSW50cm9kdWN0aW9u IHRvIGFsZ29yaXRobXMiLCBUaG9tYXMgSC4gQ29ybWVuLCBDaGFybGVzIEUuCisJICogTGVp c2Vyc29uLCBSb25hbGQgTC4gUml2ZXN0LCBJU0JOIDAtMDctMDEzMTQzLTAsIHF1aWNrc29y dCBlc3RpbWF0aW9uCisJICogZm9ybXVsYSBoYXMgYWRkaXRpb25hbCB0ZXJtIHByb3BvcnRp b25hbCB0byBudW1iZXIgb2YgdHVwbGVzIChTZWUgQ2hhcHRlcgorCSAqIDguMiBhbmQgVGhl b3JlbSA0LjEpLiBJdCBoYXMgbWVhbmluZyB3aXRoIGxvdyBudW1iZXIgb2YgdHVwbGVzLAor CSAqIGFwcHJveGltYXRlbHkgbGVzcyB0aGF0IDFlNC4gT2YgY291cnNlLCBpdCBjb3VsZCBi ZSBpbXBsZW1lbnRlZCBhcworCSAqIGFkZGl0aW9uYWwgbXVsdGlwbGllciB1bmRlciBsb2dh cml0aG0sIGJ1dCB1c2UgbW9yZSBjb21wbGljYXRlZCBmb3JtdWxhCisJICogd2hpY2ggdGFr ZXMgaW50byBhY2NvdW50IG51bWJlciBvZiB1bmlxdWUgdHVwbGVzIGFuZCBpdCBpc24ndCBj bGVhciBob3cKKwkgKiB0byBjb21iaW5lIG11bHRpcGxpZXIgd2l0aCBncm91cHMuIEVzdGlt YXRlIGl0IGFzIDEwIGluIGNwdV9vcGVyYXRvcl9jb3N0CisJICogdW5pdC4KKwkgKi8KKwlw ZXJfdHVwbGVfY29zdCArPSAxMCAqIGNwdV9vcGVyYXRvcl9jb3N0OworCisJcGVyX3R1cGxl X2Nvc3QgKz0gY29tcGFyaXNvbl9jb3N0OworCisJcmV0dXJuIHR1cGxlcyAqIHBlcl90dXBs ZV9jb3N0OworfQorCisvKgorICogc2ltcGxlIHdyYXBwZXIganVzdCB0byBlc3RpbWF0ZSBi ZXN0IHNvcnQgcGF0aAorICovCitDb3N0Citjb3N0X3NvcnRfZXN0aW1hdGUoUGxhbm5lcklu Zm8gKnJvb3QsIExpc3QgKnBhdGhrZXlzLCBpbnQgblByZXNvcnRlZEtleXMsCisJCQkJICAg ZG91YmxlIHR1cGxlcykKK3sKKwlyZXR1cm4gY29tcHV0ZV9jcHVfc29ydF9jb3N0KHJvb3Qs IHBhdGhrZXlzLCBuUHJlc29ydGVkS2V5cywKKwkJCQkJCQkJMCwgdHVwbGVzLCB0dXBsZXMs IGZhbHNlKTsKK30KKwogLyoKICAqIGNvc3RfdHVwbGVzb3J0CiAgKgkgIERldGVybWluZXMg YW5kIHJldHVybnMgdGhlIGNvc3Qgb2Ygc29ydGluZyBhIHJlbGF0aW9uIHVzaW5nIHR1cGxl c29ydCwKQEAgLTE3NzEsNyArMjA5MCw3IEBAIGNvc3RfcmVjdXJzaXZlX3VuaW9uKFBhdGgg KnJ1bmlvbiwgUGF0aCAqbnJ0ZXJtLCBQYXRoICpydGVybSkKICAqIG51bWJlciBvZiBpbml0 aWFsIHJ1bnMgZm9ybWVkIGFuZCBNIGlzIHRoZSBtZXJnZSBvcmRlciB1c2VkIGJ5IHR1cGxl c29ydC5jLgogICogU2luY2UgdGhlIGF2ZXJhZ2UgaW5pdGlhbCBydW4gc2hvdWxkIGJlIGFi b3V0IHNvcnRfbWVtLCB3ZSBoYXZlCiAgKgkJZGlzayB0cmFmZmljID0gMiAqIHJlbHNpemUg KiBjZWlsKGxvZ00ocCAvIHNvcnRfbWVtKSkKLSAqCQljcHUgPSBjb21wYXJpc29uX2Nvc3Qg KiB0ICogbG9nMih0KQorICogCQlhbmQgY3B1IGNvc3QgKGNvbXB1dGVkIGJ5IGNvbXB1dGVf Y3B1X3NvcnRfY29zdCgpKS4KICAqCiAgKiBJZiB0aGUgc29ydCBpcyBib3VuZGVkIChpLmUu LCBvbmx5IHRoZSBmaXJzdCBrIHJlc3VsdCB0dXBsZXMgYXJlIG5lZWRlZCkKICAqIGFuZCBr IHR1cGxlcyBjYW4gZml0IGludG8gc29ydF9tZW0sIHdlIHVzZSBhIGhlYXAgbWV0aG9kIHRo YXQga2VlcHMgb25seQpAQCAtMTc5MCw5ICsyMTA5LDExIEBAIGNvc3RfcmVjdXJzaXZlX3Vu aW9uKFBhdGggKnJ1bmlvbiwgUGF0aCAqbnJ0ZXJtLCBQYXRoICpydGVybSkKICAqICdjb21w YXJpc29uX2Nvc3QnIGlzIHRoZSBleHRyYSBjb3N0IHBlciBjb21wYXJpc29uLCBpZiBhbnkK ICAqICdzb3J0X21lbScgaXMgdGhlIG51bWJlciBvZiBraWxvYnl0ZXMgb2Ygd29yayBtZW1v cnkgYWxsb3dlZCBmb3IgdGhlIHNvcnQKICAqICdsaW1pdF90dXBsZXMnIGlzIHRoZSBib3Vu ZCBvbiB0aGUgbnVtYmVyIG9mIG91dHB1dCB0dXBsZXM7IC0xIGlmIG5vIGJvdW5kCisgKiAn c3RhcnR1cF9jb3N0JyBpcyBleHBlY3RlZCB0byBiZSAwIGF0IGlucHV0LiBJZiB0aGVyZSBp cyAiaW5wdXQgY29zdCIgaXQgc2hvdWxkCisgKiBiZSBhZGRlZCBieSBjYWxsZXIgbGF0ZXIu CiAgKi8KIHN0YXRpYyB2b2lkCi1jb3N0X3R1cGxlc29ydChDb3N0ICpzdGFydHVwX2Nvc3Qs IENvc3QgKnJ1bl9jb3N0LAorY29zdF90dXBsZXNvcnQoUGxhbm5lckluZm8gKnJvb3QsIExp c3QgKnBhdGhrZXlzLCBDb3N0ICpzdGFydHVwX2Nvc3QsIENvc3QgKnJ1bl9jb3N0LAogCQkJ ICAgZG91YmxlIHR1cGxlcywgaW50IHdpZHRoLAogCQkJICAgQ29zdCBjb21wYXJpc29uX2Nv c3QsIGludCBzb3J0X21lbSwKIAkJCSAgIGRvdWJsZSBsaW1pdF90dXBsZXMpCkBAIC0xODA5 LDkgKzIxMzAsNiBAQCBjb3N0X3R1cGxlc29ydChDb3N0ICpzdGFydHVwX2Nvc3QsIENvc3Qg KnJ1bl9jb3N0LAogCWlmICh0dXBsZXMgPCAyLjApCiAJCXR1cGxlcyA9IDIuMDsKIAotCS8q IEluY2x1ZGUgdGhlIGRlZmF1bHQgY29zdC1wZXItY29tcGFyaXNvbiAqLwotCWNvbXBhcmlz b25fY29zdCArPSAyLjAgKiBjcHVfb3BlcmF0b3JfY29zdDsKLQogCS8qIERvIHdlIGhhdmUg YSB1c2VmdWwgTElNSVQ/ICovCiAJaWYgKGxpbWl0X3R1cGxlcyA+IDAgJiYgbGltaXRfdHVw bGVzIDwgdHVwbGVzKQogCXsKQEAgLTE4MzUsMTIgKzIxNTMsMTAgQEAgY29zdF90dXBsZXNv cnQoQ29zdCAqc3RhcnR1cF9jb3N0LCBDb3N0ICpydW5fY29zdCwKIAkJZG91YmxlCQlsb2df cnVuczsKIAkJZG91YmxlCQlucGFnZWFjY2Vzc2VzOwogCi0JCS8qCi0JCSAqIENQVSBjb3N0 cwotCQkgKgotCQkgKiBBc3N1bWUgYWJvdXQgTiBsb2cyIE4gY29tcGFyaXNvbnMKLQkJICov Ci0JCSpzdGFydHVwX2Nvc3QgPSBjb21wYXJpc29uX2Nvc3QgKiB0dXBsZXMgKiBMT0cyKHR1 cGxlcyk7CisJCS8qIENQVSBjb3N0cyAqLworCQkqc3RhcnR1cF9jb3N0ID0gY29tcHV0ZV9j cHVfc29ydF9jb3N0KHJvb3QsIHBhdGhrZXlzLCAwLAorCQkJCQkJCQkJCQkgIGNvbXBhcmlz b25fY29zdCwgdHVwbGVzLAorCQkJCQkJCQkJCQkgIHR1cGxlcywgZmFsc2UpOwogCiAJCS8q IERpc2sgY29zdHMgKi8KIApAQCAtMTg1NiwxOCArMjE3MiwxNyBAQCBjb3N0X3R1cGxlc29y dChDb3N0ICpzdGFydHVwX2Nvc3QsIENvc3QgKnJ1bl9jb3N0LAogCX0KIAllbHNlIGlmICh0 dXBsZXMgPiAyICogb3V0cHV0X3R1cGxlcyB8fCBpbnB1dF9ieXRlcyA+IHNvcnRfbWVtX2J5 dGVzKQogCXsKLQkJLyoKLQkJICogV2UnbGwgdXNlIGEgYm91bmRlZCBoZWFwLXNvcnQga2Vl cGluZyBqdXN0IEsgdHVwbGVzIGluIG1lbW9yeSwgZm9yCi0JCSAqIGEgdG90YWwgbnVtYmVy IG9mIHR1cGxlIGNvbXBhcmlzb25zIG9mIE4gbG9nMiBLOyBidXQgdGhlIGNvbnN0YW50Ci0J CSAqIGZhY3RvciBpcyBhIGJpdCBoaWdoZXIgdGhhbiBmb3IgcXVpY2tzb3J0LiAgVHdlYWsg aXQgc28gdGhhdCB0aGUKLQkJICogY29zdCBjdXJ2ZSBpcyBjb250aW51b3VzIGF0IHRoZSBj cm9zc292ZXIgcG9pbnQuCi0JCSAqLwotCQkqc3RhcnR1cF9jb3N0ID0gY29tcGFyaXNvbl9j b3N0ICogdHVwbGVzICogTE9HMigyLjAgKiBvdXRwdXRfdHVwbGVzKTsKKwkJLyogV2UnbGwg dXNlIGEgYm91bmRlZCBoZWFwLXNvcnQga2VlcGluZyBqdXN0IEsgdHVwbGVzIGluIG1lbW9y eS4gKi8KKwkJKnN0YXJ0dXBfY29zdCA9IGNvbXB1dGVfY3B1X3NvcnRfY29zdChyb290LCBw YXRoa2V5cywgMCwKKwkJCQkJCQkJCQkJICBjb21wYXJpc29uX2Nvc3QsIHR1cGxlcywKKwkJ CQkJCQkJCQkJICBvdXRwdXRfdHVwbGVzLCB0cnVlKTsKIAl9CiAJZWxzZQogCXsKIAkJLyog V2UnbGwgdXNlIHBsYWluIHF1aWNrc29ydCBvbiBhbGwgdGhlIGlucHV0IHR1cGxlcyAqLwot CQkqc3RhcnR1cF9jb3N0ID0gY29tcGFyaXNvbl9jb3N0ICogdHVwbGVzICogTE9HMih0dXBs ZXMpOworCQkqc3RhcnR1cF9jb3N0ID0gY29tcHV0ZV9jcHVfc29ydF9jb3N0KHJvb3QsIHBh dGhrZXlzLCAwLAorCQkJCQkJCQkJCQkgIGNvbXBhcmlzb25fY29zdCwgdHVwbGVzLAorCQkJ CQkJCQkJCQkgIHR1cGxlcywgZmFsc2UpOwogCX0KIAogCS8qCkBAIC0xOTAwLDggKzIyMTUs OCBAQCBjb3N0X2luY3JlbWVudGFsX3NvcnQoUGF0aCAqcGF0aCwKIAkJCQkJICBkb3VibGUg aW5wdXRfdHVwbGVzLCBpbnQgd2lkdGgsIENvc3QgY29tcGFyaXNvbl9jb3N0LCBpbnQgc29y dF9tZW0sCiAJCQkJCSAgZG91YmxlIGxpbWl0X3R1cGxlcykKIHsKLQlDb3N0CQlzdGFydHVw X2Nvc3QgPSAwLAotCQkJCXJ1bl9jb3N0ID0gMCwKKwlDb3N0CQlzdGFydHVwX2Nvc3QsCisJ CQkJcnVuX2Nvc3QsCiAJCQkJaW5wdXRfcnVuX2Nvc3QgPSBpbnB1dF90b3RhbF9jb3N0IC0g aW5wdXRfc3RhcnR1cF9jb3N0OwogCWRvdWJsZQkJZ3JvdXBfdHVwbGVzLAogCQkJCWlucHV0 X2dyb3VwczsKQEAgLTE5ODYsNyArMjMwMSw3IEBAIGNvc3RfaW5jcmVtZW50YWxfc29ydChQ YXRoICpwYXRoLAogCSAqIHBlc3NpbWlzdGljIGFib3V0IGluY3JlbWVudGFsIHNvcnQgcGVy Zm9ybWFuY2UgYW5kIGluY3JlYXNlIGl0cyBhdmVyYWdlCiAJICogZ3JvdXAgc2l6ZSBieSBo YWxmLgogCSAqLwotCWNvc3RfdHVwbGVzb3J0KCZncm91cF9zdGFydHVwX2Nvc3QsICZncm91 cF9ydW5fY29zdCwKKwljb3N0X3R1cGxlc29ydChyb290LCBwYXRoa2V5cywgJmdyb3VwX3N0 YXJ0dXBfY29zdCwgJmdyb3VwX3J1bl9jb3N0LAogCQkJCSAgIDEuNSAqIGdyb3VwX3R1cGxl cywgd2lkdGgsIGNvbXBhcmlzb25fY29zdCwgc29ydF9tZW0sCiAJCQkJICAgbGltaXRfdHVw bGVzKTsKIApAQCAtMTk5NCw3ICsyMzA5LDcgQEAgY29zdF9pbmNyZW1lbnRhbF9zb3J0KFBh dGggKnBhdGgsCiAJICogU3RhcnR1cCBjb3N0IG9mIGluY3JlbWVudGFsIHNvcnQgaXMgdGhl IHN0YXJ0dXAgY29zdCBvZiBpdHMgZmlyc3QgZ3JvdXAKIAkgKiBwbHVzIHRoZSBjb3N0IG9m IGl0cyBpbnB1dC4KIAkgKi8KLQlzdGFydHVwX2Nvc3QgKz0gZ3JvdXBfc3RhcnR1cF9jb3N0 CisJc3RhcnR1cF9jb3N0ID0gZ3JvdXBfc3RhcnR1cF9jb3N0CiAJCSsgaW5wdXRfc3RhcnR1 cF9jb3N0ICsgZ3JvdXBfaW5wdXRfcnVuX2Nvc3Q7CiAKIAkvKgpAQCAtMjAwMyw3ICsyMzE4 LDcgQEAgY29zdF9pbmNyZW1lbnRhbF9zb3J0KFBhdGggKnBhdGgsCiAJICogZ3JvdXAsIHBs dXMgdGhlIHRvdGFsIGNvc3QgdG8gcHJvY2VzcyB0aGUgcmVtYWluaW5nIGdyb3VwcywgcGx1 cyB0aGUKIAkgKiByZW1haW5pbmcgY29zdCBvZiBpbnB1dC4KIAkgKi8KLQlydW5fY29zdCAr PSBncm91cF9ydW5fY29zdAorCXJ1bl9jb3N0ID0gZ3JvdXBfcnVuX2Nvc3QKIAkJKyAoZ3Jv dXBfcnVuX2Nvc3QgKyBncm91cF9zdGFydHVwX2Nvc3QpICogKGlucHV0X2dyb3VwcyAtIDEp CiAJCSsgZ3JvdXBfaW5wdXRfcnVuX2Nvc3QgKiAoaW5wdXRfZ3JvdXBzIC0gMSk7CiAKQEAg LTIwNDMsNyArMjM1OCw3IEBAIGNvc3Rfc29ydChQYXRoICpwYXRoLCBQbGFubmVySW5mbyAq cm9vdCwKIAlDb3N0CQlzdGFydHVwX2Nvc3Q7CiAJQ29zdAkJcnVuX2Nvc3Q7CiAKLQljb3N0 X3R1cGxlc29ydCgmc3RhcnR1cF9jb3N0LCAmcnVuX2Nvc3QsCisJY29zdF90dXBsZXNvcnQo cm9vdCwgcGF0aGtleXMsICZzdGFydHVwX2Nvc3QsICZydW5fY29zdCwKIAkJCQkgICB0dXBs ZXMsIHdpZHRoLAogCQkJCSAgIGNvbXBhcmlzb25fY29zdCwgc29ydF9tZW0sCiAJCQkJICAg bGltaXRfdHVwbGVzKTsKQEAgLTIxNDEsNyArMjQ1Niw3IEBAIGFwcGVuZF9ub25wYXJ0aWFs X2Nvc3QoTGlzdCAqc3VicGF0aHMsIGludCBudW1wYXRocywgaW50IHBhcmFsbGVsX3dvcmtl cnMpCiAgKgkgIERldGVybWluZXMgYW5kIHJldHVybnMgdGhlIGNvc3Qgb2YgYW4gQXBwZW5k IG5vZGUuCiAgKi8KIHZvaWQKLWNvc3RfYXBwZW5kKEFwcGVuZFBhdGggKmFwYXRoKQorY29z dF9hcHBlbmQoQXBwZW5kUGF0aCAqYXBhdGgsIFBsYW5uZXJJbmZvICpyb290KQogewogCUxp c3RDZWxsICAgKmw7CiAKQEAgLTIyMDksNyArMjUyNCw3IEBAIGNvc3RfYXBwZW5kKEFwcGVu ZFBhdGggKmFwYXRoKQogCQkJCQkgKiBhbnkgY2hpbGQuCiAJCQkJCSAqLwogCQkJCQljb3N0 X3NvcnQoJnNvcnRfcGF0aCwKLQkJCQkJCQkgIE5VTEwsIC8qIGRvZXNuJ3QgY3VycmVudGx5 IG5lZWQgcm9vdCAqLworCQkJCQkJCSAgcm9vdCwKIAkJCQkJCQkgIHBhdGhrZXlzLAogCQkJ CQkJCSAgc3VicGF0aC0+dG90YWxfY29zdCwKIAkJCQkJCQkgIHN1YnBhdGgtPnJvd3MsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKaW5kZXggOGM2NzcwZGU5 NzIuLjU0ODdhZTJlZTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9lcXVpdmNsYXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZj bGFzcy5jCkBAIC02ODEsNyArNjgxLDE4IEBAIGdldF9lY2xhc3NfZm9yX3NvcnRfZXhwcihQ bGFubmVySW5mbyAqcm9vdCwKIAogCQkJaWYgKG9wY2ludHlwZSA9PSBjdXJfZW0tPmVtX2Rh dGF0eXBlICYmCiAJCQkJZXF1YWwoZXhwciwgY3VyX2VtLT5lbV9leHByKSkKLQkJCQlyZXR1 cm4gY3VyX2VjOwkvKiBNYXRjaCEgKi8KKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1hdGNoIQor CQkJCSAqCisJCQkJICogQ29weSBzb3J0cmVmIGlmIGl0IHdhc24ndCBzZXQgeWV0LCBpdCdz IHBvc3NpYmxlIGlmIGVjIHdhcworCQkJCSAqIGNvbnN0cnVjdGVkIGZyb20gV0hFUkUgY2xh dXNlLCBpZSBpdCBkb2Vzbid0IGhhdmUgdGFyZ2V0CisJCQkJICogcmVmZXJlbmNlIGF0IGFs bAorCQkJCSAqLworCQkJCWlmIChjdXJfZWMtPmVjX3NvcnRyZWYgPT0gMCAmJiBzb3J0cmVm ID4gMCkKKwkJCQkJY3VyX2VjLT5lY19zb3J0cmVmID0gc29ydHJlZjsKKwkJCQlyZXR1cm4g Y3VyX2VjOworCQkJfQogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9wYXRoa2V5cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0 aGtleXMuYwppbmRleCA4NmEzNWNkZWYxNy4uZjE4ZDRjOGU0ZTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwpAQCAtMTcsMTYgKzE3LDE5IEBACiAgKi8KICNp bmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5o IgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVG dW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgorI2luY2x1ZGUgIm9wdGlt aXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9wYXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5o IgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiBzdGF0 aWMgYm9vbCBwYXRoa2V5X2lzX3JlZHVuZGFudChQYXRoS2V5ICpuZXdfcGF0aGtleSwgTGlz dCAqcGF0aGtleXMpOwpAQCAtMzM0LDYgKzMzNyw1MzAgQEAgcGF0aGtleXNfY29udGFpbmVk X2luKExpc3QgKmtleXMxLCBMaXN0ICprZXlzMikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8q KioqKioqKioqKioqKioqKioqKioqKio8REVCVUcgUEFSVD4qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworYm9vbCBkZWJ1Z19ncm91cF9ieV9yZW9yZGVyX2J5X3Bh dGhrZXlzID0gdHJ1ZTsKK2Jvb2wgZGVidWdfZ3JvdXBfYnlfbWF0Y2hfb3JkZXJfYnkgPSB0 cnVlOworYm9vbCBkZWJ1Z19jaGVhcGVzdF9ncm91cF9ieSA9IHRydWU7CisvKioqKioqKioq KioqKioqKioqKioqKioqPC9ERUJVRyBQQVJUPioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworLyoKKyAqIGdyb3VwX2tleXNfcmVvcmRlcl9ieV9wYXRoa2V5cwor ICoJCVJlb3JkZXIgR1JPVVAgQlkga2V5cyB0byBtYXRjaCBwYXRoa2V5cyBvZiBpbnB1dCBw YXRoLgorICoKKyAqIEZ1bmN0aW9uIHJldHVybnMgbmV3IGxpc3RzIChwYXRoa2V5cyBhbmQg Y2xhdXNlcyksIG9yaWdpbmFsIEdST1VQIEJZIGxpc3RzCisgKiBzdGF5IHVudG91Y2hlZC4K KyAqCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgR1JPVVAgQlkga2V5cyB3aXRoIGEgbWF0 Y2hpbmcgcGF0aGtleS4KKyAqLworaW50Citncm91cF9rZXlzX3Jlb3JkZXJfYnlfcGF0aGtl eXMoTGlzdCAqcGF0aGtleXMsIExpc3QgKipncm91cF9wYXRoa2V5cywKKwkJCQkJCQkgICBM aXN0ICoqZ3JvdXBfY2xhdXNlcykKK3sKKwlMaXN0CSAgICpuZXdfZ3JvdXBfcGF0aGtleXM9 IE5JTCwKKwkJCSAgICpuZXdfZ3JvdXBfY2xhdXNlcyA9IE5JTDsKKwlMaXN0Q2VsbCAgICps YzsKKwlpbnQJCQluOworCisJaWYgKGRlYnVnX2dyb3VwX2J5X3Jlb3JkZXJfYnlfcGF0aGtl eXMgPT0gZmFsc2UpCisJCXJldHVybiAwOworCisJaWYgKHBhdGhrZXlzID09IE5JTCB8fCAq Z3JvdXBfcGF0aGtleXMgPT0gTklMKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogV2FsayB0 aGUgcGF0aGtleXMgKGRldGVybWluaW5nIG9yZGVyaW5nIG9mIHRoZSBpbnB1dCBwYXRoKSBh bmQgc2VlIGlmCisJICogdGhlcmUncyBhIG1hdGNoaW5nIEdST1VQIEJZIGtleS4gSWYgd2Ug ZmluZCBvbmUsIHdlIGFwcGVuZCBpZiB0byB0aGUKKwkgKiBsaXN0LCBhbmQgZG8gdGhlIHNh bWUgZm9yIHRoZSBjbGF1c2VzLgorCSAqCisJICogT25jZSB3ZSBmaW5kIGZpcnN0IHBhdGhr ZXkgd2l0aG91dCBhIG1hdGNoaW5nIEdST1VQIEJZIGtleSwgdGhlIHJlc3Qgb2YKKwkgKiB0 aGUgcGF0aGtleXMgaXMgdXNlbGVzcyBhbmQgY2FuJ3QgYmUgdXNlZCB0byBldmFsdWF0ZSB0 aGUgZ3JvdXBpbmcsIHNvCisJICogd2UgYWJvcnQgdGhlIGxvb3AgYW5kIGlnbm9yZSB0aGUg cmVtYWluaW5nIHBhdGhrZXlzLgorCSAqCisJICogWFhYIFBhdGhrZXlzIGFyZSBidWlsdCBp biBhIHdheSB0byBhbGxvdyBzaW1wbHkgY29tcGFyaW5nIHBvaW50ZXJzLgorCSAqLworCWZv cmVhY2gobGMsIHBhdGhrZXlzKQorCXsKKwkJUGF0aEtleQkJCSpwYXRoa2V5ID0gKFBhdGhL ZXkgKikgbGZpcnN0KGxjKTsKKwkJU29ydEdyb3VwQ2xhdXNlCSpzZ2M7CisKKwkJLyogYWJv cnQgb24gZmlyc3QgbWlzbWF0Y2ggKi8KKwkJaWYgKCFsaXN0X21lbWJlcl9wdHIoKmdyb3Vw X3BhdGhrZXlzLCBwYXRoa2V5KSkKKwkJCWJyZWFrOworCisJCW5ld19ncm91cF9wYXRoa2V5 cyA9IGxhcHBlbmQobmV3X2dyb3VwX3BhdGhrZXlzLCBwYXRoa2V5KTsKKworCQlzZ2MgPSBn ZXRfc29ydGdyb3VwcmVmX2NsYXVzZShwYXRoa2V5LT5wa19lY2xhc3MtPmVjX3NvcnRyZWYs CisJCQkJCQkJCQkgICpncm91cF9jbGF1c2VzKTsKKworCQluZXdfZ3JvdXBfY2xhdXNlcyA9 IGxhcHBlbmQobmV3X2dyb3VwX2NsYXVzZXMsIHNnYyk7CisJfQorCisJLyogcmVtZW1iZXIg dGhlIG51bWJlciBvZiBwYXRoa2V5cyB3aXRoIGEgbWF0Y2hpbmcgR1JPVVAgQlkga2V5ICov CisJbiA9IGxpc3RfbGVuZ3RoKG5ld19ncm91cF9wYXRoa2V5cyk7CisKKwkvKiBYWFggbWF5 YmUgcmV0dXJuIHdoZW4gKG4gPT0gMCkgKi8KKworCS8qIGFwcGVuZCB0aGUgcmVtYWluaW5n IGdyb3VwIHBhdGhrZXlzICh3aWxsIGJlIHRyZWF0ZWQgYXMgbm90IHNvcnRlZCkgKi8KKwkq Z3JvdXBfcGF0aGtleXMgPSBsaXN0X2NvbmNhdF91bmlxdWVfcHRyKG5ld19ncm91cF9wYXRo a2V5cywKKwkJCQkJCQkJCQkJICpncm91cF9wYXRoa2V5cyk7CisJKmdyb3VwX2NsYXVzZXMg PSBsaXN0X2NvbmNhdF91bmlxdWVfcHRyKG5ld19ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJ CQkqZ3JvdXBfY2xhdXNlcyk7CisKKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIFVzZWQgdG8g Z2VuZXJhdGUgYWxsIHBlcm11dGF0aW9ucyBvZiBhIHBhdGhrZXkgbGlzdC4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgUGF0aGtleU11dGF0b3JTdGF0ZSB7CisJTGlzdAkgICAqZWxlbXNMaXN0 OworCUxpc3RDZWxsICAqKmVsZW1DZWxsczsKKwl2b2lkCSAgKiplbGVtczsKKwlpbnQJCSAg ICpwb3NpdGlvbnM7CisJaW50CQkJIG11dGF0b3JOQ29sdW1uczsKKwlpbnQJCQkgY291bnQ7 Cit9IFBhdGhrZXlNdXRhdG9yU3RhdGU7CisKKworLyoKKyAqIFBhdGhrZXlNdXRhdG9ySW5p dAorICoJCUluaXRpYWxpemUgc3RhdGUgb2YgdGhlIHBlcm11dGF0aW9uIGdlbmVyYXRvci4K KyAqCisgKiBXZSB3YW50IHRvIGdlbmVyYXRlIHBlcm11dGF0aW9ucyBvZiBlbGVtZW50cyBp biB0aGUgImVsZW1zIiBsaXN0LiBXZSBtYXkgd2FudAorICogdG8gc2tpcCBzb21lIG51bWJl ciBvZiBlbGVtZW50cyBhdCB0aGUgYmVnaW5uaW5nICh3aGVuIHRyZWF0aW5nIGFzIHByZXNv cnRlZCkKKyAqIG9yIGF0IHRoZSBlbmQgKHdlIG9ubHkgcGVybXV0ZSBhIGxpbWl0ZWQgbnVt YmVyIG9mIGdyb3VwIGtleXMpLgorICoKKyAqIFRoZSBsaXN0IGlzIGRlY29tcG9zZWQgaW50 byBlbGVtZW50cywgYW5kIHdlIGFsc28ga2VlcCBwb2ludGVycyB0byBpbmRpdmlkdWFsCisg KiBjZWxscy4gVGhpcyBhbGxvd3MgdXMgdG8gYnVpbGQgdGhlIHBlcm11dGVkIGxpc3QgcXVp Y2tseSBhbmQgY2hlYXBseSwgd2l0aG91dAorICogY3JlYXRpbmcgYW55IGNvcGllcy4KKyAq Lworc3RhdGljIHZvaWQKK1BhdGhrZXlNdXRhdG9ySW5pdChQYXRoa2V5TXV0YXRvclN0YXRl ICpzdGF0ZSwgTGlzdCAqZWxlbXMsIGludCBzdGFydCwgaW50IGVuZCkKK3sKKwlpbnQgaTsK KwlpbnQJCQluID0gZW5kIC0gc3RhcnQ7CisJTGlzdENlbGwJKmxjOworCisJbWVtc2V0KHN0 YXRlLCAwLCBzaXplb2YoKnN0YXRlKSk7CisKKwlzdGF0ZS0+bXV0YXRvck5Db2x1bW5zID0g bjsKKworCXN0YXRlLT5lbGVtc0xpc3QgPSBsaXN0X2NvcHkoZWxlbXMpOworCisJc3RhdGUt PmVsZW1zID0gcGFsbG9jKHNpemVvZih2b2lkKikgKiBuKTsKKwlzdGF0ZS0+ZWxlbUNlbGxz ID0gcGFsbG9jKHNpemVvZihMaXN0Q2VsbCopICogbik7CisJc3RhdGUtPnBvc2l0aW9ucyA9 IHBhbGxvYyhzaXplb2YoaW50KSAqIG4pOworCisJaSA9IDA7CisJZm9yX2VhY2hfY2VsbChs Yywgc3RhdGUtPmVsZW1zTGlzdCwgbGlzdF9udGhfY2VsbChzdGF0ZS0+ZWxlbXNMaXN0LCBz dGFydCkpCisJeworCQlzdGF0ZS0+ZWxlbUNlbGxzW2ldID0gbGM7CisJCXN0YXRlLT5lbGVt c1tpXSA9IGxmaXJzdChsYyk7CisJCXN0YXRlLT5wb3NpdGlvbnNbaV0gPSBpICsgMTsKKwkJ aSsrOworCisJCWlmIChpID49IG4pCisJCQlicmVhazsKKwl9Cit9CisKKy8qIFN3YXAgdHdv IGVsZW1lbnRzIG9mIGFuIGFycmF5LiAqLworc3RhdGljIHZvaWQKK1BhdGhrZXlNdXRhdG9y U3dhcChpbnQgKmEsIGludCBpLCBpbnQgaikKK3sKKyAgaW50IHMgPSBhW2ldOworCisgIGFb aV0gPSBhW2pdOworICBhW2pdID0gczsKK30KKworLyoKKyAqIEdlbmVyYXRlIHRoZSBuZXh0 IHBlcm11dGF0aW9uIG9mIGVsZW1lbnRzLgorICovCitzdGF0aWMgYm9vbAorUGF0aGtleU11 dGF0b3JOZXh0U2V0KGludCAqYSwgaW50IG4pCit7CisJaW50IGosIGssIGwsIHI7CisKKwlq ID0gbiAtIDI7CisKKwl3aGlsZSAoaiA+PSAwICYmIGFbal0gPj0gYVtqICsgMV0pCisJCWot LTsKKworCWlmIChqIDwgMCkKKwkJcmV0dXJuIGZhbHNlOworCisJayA9IG4gLSAxOworCisJ d2hpbGUgKGsgPj0gMCAmJiBhW2pdID49IGFba10pCisJCWstLTsKKworCVBhdGhrZXlNdXRh dG9yU3dhcChhLCBqLCBrKTsKKworCWwgPSBqICsgMTsKKwlyID0gbiAtIDE7CisKKwl3aGls ZSAobCA8IHIpCisJCVBhdGhrZXlNdXRhdG9yU3dhcChhLCBsKyssIHItLSk7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIFBhdGhrZXlNdXRhdG9yTmV4dAorICoJCUdlbmVyYXRl IHRoZSBuZXh0IHBlcm11dGF0aW9uIG9mIGxpc3Qgb2YgZWxlbWVudHMuCisgKgorICogUmV0 dXJucyB0aGUgbmV4dCBwZXJtdXRhdGlvbiAoYXMgYSBsaXN0IG9mIGVsZW1lbnRzKSBvciBO SUwgaWYgdGhlcmUgYXJlIG5vCisgKiBtb3JlIHBlcm11dGF0aW9ucy4KKyAqLworc3RhdGlj IExpc3QgKgorUGF0aGtleU11dGF0b3JOZXh0KFBhdGhrZXlNdXRhdG9yU3RhdGUgKnN0YXRl KQoreworCWludAlpOworCisJc3RhdGUtPmNvdW50Kys7CisKKwkvKiBmaXJzdCBwZXJtdXRh dGlvbiBpcyBvcmlnaW5hbCBsaXN0ICovCisJaWYgKHN0YXRlLT5jb3VudCA9PSAxKQorCQly ZXR1cm4gc3RhdGUtPmVsZW1zTGlzdDsKKworCS8qIHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUg cGVybXV0YXRpb25zLCByZXR1cm4gTklMICovCisJaWYgKCFQYXRoa2V5TXV0YXRvck5leHRT ZXQoc3RhdGUtPnBvc2l0aW9ucywgc3RhdGUtPm11dGF0b3JOQ29sdW1ucykpCisJeworCQlw ZnJlZShzdGF0ZS0+ZWxlbXMpOworCQlwZnJlZShzdGF0ZS0+ZWxlbUNlbGxzKTsKKwkJcGZy ZWUoc3RhdGUtPnBvc2l0aW9ucyk7CisKKwkJbGlzdF9mcmVlKHN0YXRlLT5lbGVtc0xpc3Qp OworCisJCXJldHVybiBOSUw7CisJfQorCisJLyogdXBkYXRlIHRoZSBsaXN0IGNlbGxzIHRv IHBvaW50IHRvIHRoZSByaWdodCBlbGVtZW50cyAqLworCWZvcihpPTA7IGk8c3RhdGUtPm11 dGF0b3JOQ29sdW1uczsgaSsrKQorCQlsZmlyc3Qoc3RhdGUtPmVsZW1DZWxsc1tpXSkgPQor CQkJKHZvaWQgKikgc3RhdGUtPmVsZW1zWyBzdGF0ZS0+cG9zaXRpb25zW2ldIC0gMSBdOwor CisJcmV0dXJuIHN0YXRlLT5lbGVtc0xpc3Q7Cit9CisKKy8qCisgKiBDb3N0IG9mIGNvbXBh cmluZyBwYXRoa2V5cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGF0aGtleVNvcnRDb3N0Cit7 CisJQ29zdAkJY29zdDsKKwlQYXRoS2V5CSAgICpwYXRoa2V5OworfSBQYXRoa2V5U29ydENv c3Q7CisKK3N0YXRpYyBpbnQKK3BhdGhrZXlfc29ydF9jb3N0X2NvbXBhcmF0b3IoY29uc3Qg dm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iKQoreworCWNvbnN0IFBhdGhrZXlTb3J0Q29zdCAq YSA9IChQYXRoa2V5U29ydENvc3QgKikgX2E7CisJY29uc3QgUGF0aGtleVNvcnRDb3N0ICpi ID0gKFBhdGhrZXlTb3J0Q29zdCAqKSBfYjsKKworCWlmIChhLT5jb3N0IDwgYi0+Y29zdCkK KwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKGEtPmNvc3QgPT0gYi0+Y29zdCkKKwkJcmV0dXJu IDA7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBnZXRfY2hlYXBlc3RfZ3JvdXBfa2V5c19v cmRlcgorICoJCVJldHVybnMgdGhlIHBhdGhrZXlzIGluIGFuIG9yZGVyIGNoZWFwZXN0IHRv IGV2YWx1YXRlLgorICoKKyAqIEdpdmVuIGEgbGlzdCBvZiBwYXRoa2V5cywgd2UgdHJ5IHRv IHJlb3JkZXIgdGhlbSBpbiBhIHdheSB0aGF0IG1pbmltaXplcworICogdGhlIENQVSBjb3N0 IG9mIHNvcnRpbmcuIFRoaXMgZGVwZW5kcyBtYWlubHkgb24gdGhlIGNvc3Qgb2YgY29tcGFy YXRvcgorICogZnVuY3Rpb24gKHRoZSBwYXRoa2V5cyBtYXkgdXNlIGRpZmZlcmVudCBkYXRh IHR5cGVzKSBhbmQgdGhlIG51bWJlciBvZgorICogZGlzdGluY3QgdmFsdWVzIGluIGVhY2gg Y29sdW1uICh3aGljaCBhZmZlY3RzIHRoZSBudW1iZXIgb2YgY29tcGFyYXRvcgorICogY2Fs bHMgZm9yIHRoZSBmb2xsb3dpbmcgcGF0aGtleXMpLgorICoKKyAqIEluIGNhc2UgdGhlIGlu cHV0IGlzIHBhcnRpYWxseSBzb3J0ZWQsIG9ubHkgdGhlIHJlbWFpbmluZyBwYXRoa2V5cyBh cmUKKyAqIGNvbnNpZGVyZWQuCisgKgorICogUmV0dXJucyBuZXdseSBhbGxvY2F0ZWQgbGlz dHMuIElmIG5vIHJlb3JkZXJpbmcgaXMgcG9zc2libGUgKG9yIG5lZWRlZCksCisgKiB0aGUg bGlzdHMgYXJlIHNldCB0byBOSUwuCisgKi8KK3N0YXRpYyBib29sCitnZXRfY2hlYXBlc3Rf Z3JvdXBfa2V5c19vcmRlcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIG5yb3dzLAorCQkJ CQkJCSAgTGlzdCAqKmdyb3VwX3BhdGhrZXlzLCBMaXN0ICoqZ3JvdXBfY2xhdXNlcywKKwkJ CQkJCQkgIGludCBuX3ByZW9yZGVyZWQpCit7CisJTGlzdAkJICAgKm5ld19ncm91cF9wYXRo a2V5cyA9IE5JTCwKKwkJCQkgICAqbmV3X2dyb3VwX2NsYXVzZXMgPSBOSUwsCisJCQkJICAg KnZhcl9ncm91cF9wYXRoa2V5czsKKworCUxpc3RDZWxsCSAgICpjZWxsOworCVBhdGhrZXlN dXRhdG9yU3RhdGUJbXN0YXRlOworCWRvdWJsZQkJCWNoZWFwZXN0X3NvcnRfY29zdCA9IC0x LjA7CisKKwlpbnQgbkZyZWVLZXlzOworCWludCBuVG9QZXJtdXRlOworCisJLyogSWYgdGhp cyBvcHRpbWl6YXRpb24gaXMgZGlzYWJsZWQsIHdlJ3JlIGRvbmUuICovCisJaWYgKCFkZWJ1 Z19jaGVhcGVzdF9ncm91cF9ieSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogSWYgdGhlcmUg YXJlIGxlc3MgdGhhbiAyIHVuc29ydGVkIHBhdGhrZXlzLCB3ZSdyZSBkb25lLiAqLworCWlm IChsaXN0X2xlbmd0aCgqZ3JvdXBfcGF0aGtleXMpIC0gbl9wcmVvcmRlcmVkIDwgMikKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBXZSBjb3VsZCBleGhhdXN0aXZlbHkgY29zdCBh bGwgcG9zc2libGUgb3JkZXJpbmdzIG9mIHRoZSBwYXRoa2V5cywgYnV0IGZvcgorCSAqIGxh cmdlIG51bWJlciBvZiBwYXRoa2V5cyB0aGF0IG1pZ2h0IGJlIHByb2hpYml0aXZlbHkgZXhw ZW5zaXZlLiBTbyB3ZSB0cnkKKwkgKiB0byBhcHBseSBhIHNpbXBsZSBjaGVhcCBoZXVyaXN0 aWNzIGZpcnN0IC0gd2Ugc29ydCB0aGUgcGF0aGtleXMgYnkgc29ydAorCSAqIGNvc3QgKGFz IGlmIHRoZSBwYXRoa2V5IHdhcyBzb3J0ZWQgaW5kZXBlbmRlbnRseSkgYW5kIHRoZW4gY2hl Y2sgb25seSB0aGUKKwkgKiBmb3VyIGNoZWFwZXN0IHBhdGhrZXlzLiBUaGUgcmVtYWluaW5n IHBhdGhrZXlzIGFyZSBrZXB0IG9yZGVyZWQgYnkgY29zdC4KKwkgKgorCSAqIFhYWCBUaGlz IGlzIGEgdmVyeSBzaW1wbGUgaGV1cmlzdGljcywgYW5kIGxpa2VseSB0byB3b3JrIGZpbmUg Zm9yIG1vc3QKKwkgKiBjYXNlcyAoYmVjYXVzZSBudW1iZXIgb2YgR1JPVVAgQlkgY2xhdXNl cyB0ZW5kcyB0byBiZSBsb3dlciB0aGFuIDQpLiBCdXQKKwkgKiBpdCBpZ25vcmVzIGhvdyB0 aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHZhbHVlcyBpbiBlYWNoIHBhdGhrZXkgYWZmZWN0cyB0 aGUKKwkgKiBmb2xsb3dpbmcgc29ydHMuIEl0IG1heSBiZSBiZXR0ZXIgdG8gdXNlICJtb3Jl IGV4cGVuc2l2ZSIgcGF0aGtleSBmaXJzdAorCSAqIGlmIGl0IGhhcyBtYW55IGRpc3RpbmN0 IHZhbHVlcywgYmVjYXVzZSBpdCB0aGVuIGxpbWl0cyB0aGUgbnVtYmVyIG9mCisJICogY29t cGFyaXNvbnMgZm9yIHRoZSByZW1haW5pbmcgcGF0aGtleXMuIEJ1dCBldmFsdWF0aW5nIHRo YXQgaXMga2luZGEgdGhlCisJICogZXhwZW5zaXZlIGJpdCB3ZSdyZSB0cnlpbmcgdG8gbm90 IGRvLgorCSAqLworCW5GcmVlS2V5cyA9IGxpc3RfbGVuZ3RoKCpncm91cF9wYXRoa2V5cykg LSBuX3ByZW9yZGVyZWQ7CisJblRvUGVybXV0ZSA9IDQ7CisJaWYgKG5GcmVlS2V5cyA+IG5U b1Blcm11dGUpCisJeworCQlpbnQgaTsKKwkJUGF0aGtleVNvcnRDb3N0ICpjb3N0cyA9IHBh bGxvYyhzaXplb2YoUGF0aGtleVNvcnRDb3N0KSAqIG5GcmVlS2V5cyk7CisKKwkJLyogc2tp cCB0aGUgcHJlLW9yZGVyZWQgcGF0aGtleXMgKi8KKwkJY2VsbCA9IGxpc3RfbnRoX2NlbGwo Kmdyb3VwX3BhdGhrZXlzLCBuX3ByZW9yZGVyZWQpOworCisJCS8qIGVzdGltYXRlIGNvc3Qg Zm9yIHNvcnRpbmcgaW5kaXZpZHVhbCBwYXRoa2V5cyAqLworCQlmb3IgKGkgPSAwOyBjZWxs ICE9IE5VTEw7IGkrKywgKGNlbGwgPSBsbmV4dCgqZ3JvdXBfcGF0aGtleXMsIGNlbGwpKSkK KwkJeworCQkJTGlzdCAqdG9fY29zdCA9IGxpc3RfbWFrZTEobGZpcnN0KGNlbGwpKTsKKwor CQkJQXNzZXJ0KGkgPCBuRnJlZUtleXMpOworCisJCQljb3N0c1tpXS5wYXRoa2V5ID0gbGZp cnN0KGNlbGwpOworCQkJY29zdHNbaV0uY29zdCA9IGNvc3Rfc29ydF9lc3RpbWF0ZShyb290 LCB0b19jb3N0LCAwLCBucm93cyk7CisKKwkJCXBmcmVlKHRvX2Nvc3QpOworCQl9CisKKwkJ Lyogc29ydCB0aGUgcGF0aGtleXMgYnkgc29ydCBjb3N0IGluIGFzY2VuZGluZyBvcmRlciAq LworCQlxc29ydChjb3N0cywgbkZyZWVLZXlzLCBzaXplb2YoKmNvc3RzKSwgcGF0aGtleV9z b3J0X2Nvc3RfY29tcGFyYXRvcik7CisKKwkJLyoKKwkJICogUmVidWlsZCB0aGUgbGlzdCBv ZiBwYXRoa2V5cyAtIGZpcnN0IHRoZSBwcmVvcmRlcmVkIG9uZXMsIHRoZW4gdGhlCisJCSAq IHJlc3Qgb3JkZXJlZCBieSBjb3N0LgorCQkgKi8KKwkJbmV3X2dyb3VwX3BhdGhrZXlzID0g bGlzdF90cnVuY2F0ZShsaXN0X2NvcHkoKmdyb3VwX3BhdGhrZXlzKSwgbl9wcmVvcmRlcmVk KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbkZyZWVLZXlzOyBpKyspCisJCQluZXdfZ3JvdXBf cGF0aGtleXMgPSBsYXBwZW5kKG5ld19ncm91cF9wYXRoa2V5cywgY29zdHNbaV0ucGF0aGtl eSk7CisKKwkJcGZyZWUoY29zdHMpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBTaW5j ZSB2MTMgbGlzdF9mcmVlKCkgY2FuIGNsZWFuIGxpc3QgZWxlbWVudHMgc28gZm9yIG9yaWdp bmFsIGxpc3QKKwkJICogbm90IHRvIGJlIG1vZGlmaWVkIGl0IHNob3VsZCBiZSBjb3BpZWQg dG8gYSBuZXcgb25lIHdoaWNoIGNhbiB0aGVuCisJCSAqIGJlIGNsZWFuZWQgc2FmZWx5IGlm IG5lZWRlZC4KKwkJICovCisJCW5ld19ncm91cF9wYXRoa2V5cyA9IGxpc3RfY29weSgqZ3Jv dXBfcGF0aGtleXMpOworCQluVG9QZXJtdXRlID0gbkZyZWVLZXlzOworCX0KKworCUFzc2Vy dChsaXN0X2xlbmd0aChuZXdfZ3JvdXBfcGF0aGtleXMpID09IGxpc3RfbGVuZ3RoKCpncm91 cF9wYXRoa2V5cykpOworCisJLyoKKwkgKiBHZW5lcmF0ZSBwYXRoa2V5IGxpc3RzIHdpdGgg cGVybXV0YXRpb25zIG9mIHRoZSBmaXJzdCBuVG9QZXJtdXRlIHBhdGhrZXlzLgorCSAqCisJ ICogWFhYIFdlIHNpbXBseSBjYWxjdWxhdGUgc29ydCBjb3N0IGZvciBlYWNoIGluZGl2aWR1 YWwgcGF0aGtleSBsaXN0LCBidXQKKwkgKiB0aGVyZSdzIHJvb20gZm9yIHR3byBkeW5hbWlj IHByb2dyYW1taW5nIG9wdGltaXphdGlvbnMgaGVyZS4gRmlyc3RseSwgd2UKKwkgKiBtYXkg cGFzcyB0aGUgY3VycmVudCAiYmVzdCIgY29zdCB0byBjb3N0X3NvcnRfZXN0aW1hdGUgc28g dGhhdCBpdCBjYW4KKwkgKiAiYWJvcnQiIGlmIHRoZSBlc3RpbWF0ZWQgcGF0aGtleXMgbGlz dCBleGNlZWRzIGl0LiBTZWNvbmRseSwgaXQgY291bGQgcGFzcworCSAqIHJldHVybiBpbmZv cm1hdGlvbiBhYm91dCB0aGUgcG9zaXRpb24gd2hlbiBpdCBleGNlZWRlZCB0aGUgY29zdCwg YW5kIHdlCisJICogY291bGQgc2tpcCBhbGwgcGVybXV0YXRpb25zIHdpdGggdGhlIHNhbWUg cHJlZml4LgorCSAqCisJICogSW1hZ2luZSB3ZSd2ZSBhbHJlYWR5IGZvdW5kIG9yZGVyaW5n IHdpdGggY29zdCBDMSwgYW5kIHdlJ3JlIGV2YWx1YXRpbmcKKwkgKiBhbm90aGVyIG9yZGVy aW5nIC0gY29zdF9zb3J0X2VzdGltYXRlKCkgY2FsY3VsYXRlcyBjb3N0IGJ5IGFkZGluZyB0 aGUKKwkgKiBwYXRoa2V5cyBvbmUgYnkgb25lIChtb3JlIG9yIGxlc3MpLCBhbmQgdGhlIGNv c3Qgb25seSBncm93cy4gSWYgYXQgYW55CisJICogcG9pbnQgaXQgZXhjZWVkcyBDMSwgaXQg Y2FuJ3QgcG9zc2libHkgYmUgImJldHRlciIgc28gd2UgY2FuIGRpc2NhcmQgaXQuCisJICog QnV0IHdlIGFsc28ga25vdyB0aGF0IHdlIGNhbiBkaXNjYXJkIGFsbCBvcmRlcmluZyB3aXRo IHRoZSBzYW1lIHByZWZpeCwKKwkgKiBiZWNhdXNlIGlmIHdlJ3JlIGVzdGltYXRpbmcgKGEs YixjLGQpIGFuZCB3ZSBleGNlZWRlZCBDMSBhdCAoYSxiKSB0aGVuCisJICogdGhlIHNhbWUg dGhpbmcgd2lsbCBoYXBwZW4gZm9yIGFueSBvcmRlcmluZyB3aXRoIHRoaXMgcHJlZml4Lgor CSAqCisJICoKKwkgKi8KKwlQYXRoa2V5TXV0YXRvckluaXQoJm1zdGF0ZSwgbmV3X2dyb3Vw X3BhdGhrZXlzLCBuX3ByZW9yZGVyZWQsIG5fcHJlb3JkZXJlZCArIG5Ub1Blcm11dGUpOwor CisJd2hpbGUoKHZhcl9ncm91cF9wYXRoa2V5cyA9IFBhdGhrZXlNdXRhdG9yTmV4dCgmbXN0 YXRlKSkgIT0gTklMKQorCXsKKwkJQ29zdAljb3N0OworCisJCWNvc3QgPSBjb3N0X3NvcnRf ZXN0aW1hdGUocm9vdCwgdmFyX2dyb3VwX3BhdGhrZXlzLCBuX3ByZW9yZGVyZWQsIG5yb3dz KTsKKworCQlpZiAoY29zdCA8IGNoZWFwZXN0X3NvcnRfY29zdCB8fCBjaGVhcGVzdF9zb3J0 X2Nvc3QgPCAwKQorCQl7CisJCQlsaXN0X2ZyZWUobmV3X2dyb3VwX3BhdGhrZXlzKTsKKwkJ CW5ld19ncm91cF9wYXRoa2V5cyA9IGxpc3RfY29weSh2YXJfZ3JvdXBfcGF0aGtleXMpOwor CQkJY2hlYXBlc3Rfc29ydF9jb3N0ID0gY29zdDsKKwkJfQorCX0KKworCS8qIFJlb3JkZXIg dGhlIGdyb3VwIGNsYXVzZXMgYWNjb3JkaW5nIHRvIHRoZSByZW9yZGVyZWQgcGF0aGtleXMu ICovCisJZm9yZWFjaChjZWxsLCBuZXdfZ3JvdXBfcGF0aGtleXMpCisJeworCQlQYXRoS2V5 CQkJKnBhdGhrZXkgPSAoUGF0aEtleSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJbmV3X2dyb3Vw X2NsYXVzZXMgPSBsYXBwZW5kKG5ld19ncm91cF9jbGF1c2VzLAorCQkJCQkJZ2V0X3NvcnRn cm91cHJlZl9jbGF1c2UocGF0aGtleS0+cGtfZWNsYXNzLT5lY19zb3J0cmVmLAorCQkJCQkJ CQkJCQkJKmdyb3VwX2NsYXVzZXMpKTsKKwl9CisKKwkvKiBKdXN0IGFwcGVuZCB0aGUgcmVz dCBHUk9VUCBCWSBjbGF1c2VzICovCisJbmV3X2dyb3VwX2NsYXVzZXMgPSBsaXN0X2NvbmNh dF91bmlxdWVfcHRyKG5ld19ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCQkgICAqZ3JvdXBf Y2xhdXNlcyk7CisKKwkqZ3JvdXBfcGF0aGtleXMgPSBuZXdfZ3JvdXBfcGF0aGtleXM7CisJ Kmdyb3VwX2NsYXVzZXMgPSBuZXdfZ3JvdXBfY2xhdXNlczsKKworCXJldHVybiB0cnVlOwor fQorCisvKgorICogZ2V0X3VzZWZ1bF9ncm91cF9rZXlzX29yZGVyaW5ncworICoJCURldGVy bWluZSB3aGljaCBvcmRlcmluZ3Mgb2YgR1JPVVAgQlkga2V5cyBhcmUgcG90ZW50aWFsbHkg aW50ZXJlc3RpbmcuCisgKgorICogUmV0dXJucyBsaXN0IG9mIFBhdGhLZXlJbmZvIGl0ZW1z LCBlYWNoIHJlcHJlc2VudGluZyBhbiBpbnRlcmVzdGluZyBvcmRlcmluZworICogb2YgR1JP VVAgQlkga2V5cy4gRWFjaCBpdGVtcyBzdG9yZXMgcGF0aGtleXMgYW5kIGNsYXVzZXMgaW4g bWF0Y2hpbmcgb3JkZXIuCisgKgorICogVGhlIGZ1bmN0aW9uIGNvbnNpZGVycyAoYW5kIGtl ZXBzKSBtdWx0aXBsZSBncm91cCBieSBvcmRlcmluZ3M6CisgKgorICogLSB0aGUgb3JpZ2lu YWwgb3JkZXJpbmcsIGFzIHNwZWNpZmllZCBieSB0aGUgR1JPVVAgQlkgY2xhdXNlCisgKgor ICogLSBHUk9VUCBCWSBrZXlzIHJlb3JkZXJlZCB0byBtaW5pbWl6ZSB0aGUgc29ydCBjb3N0 CisgKgorICogLSBHUk9VUCBCWSBrZXlzIHJlb3JkZXJlZCB0byBtYXRjaCBwYXRoIG9yZGVy aW5nIChhcyBtdWNoIGFzIHBvc3NpYmxlKSwgd2l0aAorICogICB0aGUgdGFpbCByZW9yZWRl cmVkIHRvIG1pbmltaXplIHRoZSBzb3J0IGNvc3QKKyAqCisgKiAtIEdST1VQIEJZIGtleXMg dG8gbWF0Y2ggdGFyZ2V0IE9SREVSIEJZIGNsYXVzZSAoYXMgbXVjaCBhcyBwb3NzaWJsZSks IHdpdGgKKyAqICAgdGhlIHRhaWwgcmVvcmVkZXJlZCB0byBtaW5pbWl6ZSB0aGUgc29ydCBj b3N0CisgKgorICogVGhlcmUgYXJlIG90aGVyIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIG9y ZGVyaW5ncyAoZS5nLiBpdCBtaWdodCBiZSBiZXN0IHRvCisgKiBtYXRjaCB0aGUgZmlyc3Qg T1JERVIgQlkga2V5LCBvcmRlciB0aGUgcmVtYWluaW5nIGtleXMgZGlmZmVyZW50bHkgYW5k IHRoZW4KKyAqIHJlbHkgb24gaW5jcmVtZW50YWwgc29ydCB0byBmaXggdGhpcyksIGJ1dCB3 ZSBpZ25vcmUgdGhvc2UgZm9yIG5vdy4gVG8gbWFrZQorICogdGhpcyB3b3JrIHdlJ2QgaGF2 ZSB0byBwcmV0dHkgbXVjaCBnZW5lcmF0ZSBhbGwgcG9zc2libGUgcGVybXV0YXRpb25zLgor ICovCitMaXN0ICoKK2dldF91c2VmdWxfZ3JvdXBfa2V5c19vcmRlcmluZ3MoUGxhbm5lcklu Zm8gKnJvb3QsIGRvdWJsZSBucm93cywKKwkJCQkJCQkJTGlzdCAqcGF0aF9wYXRoa2V5cywK KwkJCQkJCQkJTGlzdCAqZ3JvdXBfcGF0aGtleXMsIExpc3QgKmdyb3VwX2NsYXVzZXMpCit7 CisJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CisJTGlzdAkgICAqaW5mb3MgPSBO SUw7CisJUGF0aEtleUluZm8gKmluZm87CisJaW50CQkJbl9wcmVvcmRlcmVkID0gMDsKKwor CUxpc3QgKnBhdGhrZXlzID0gZ3JvdXBfcGF0aGtleXM7CisJTGlzdCAqY2xhdXNlcyA9IGdy b3VwX2NsYXVzZXM7CisKKwkvKiBhbHdheXMgcmV0dXJuIGF0IGxlYXN0IHRoZSBvcmlnaW5h bCBwYXRoa2V5cy9jbGF1c2VzICovCisJaW5mbyA9IG1ha2VOb2RlKFBhdGhLZXlJbmZvKTsK KwlpbmZvLT5wYXRoa2V5cyA9IHBhdGhrZXlzOworCWluZm8tPmNsYXVzZXMgPSBjbGF1c2Vz OworCisJaW5mb3MgPSBsYXBwZW5kKGluZm9zLCBpbmZvKTsKKworCS8qIGZvciBncm91cGlu ZyBzZXRzIHdlIGNhbid0IGRvIGFueSByZW9yZGVyaW5nICovCisJaWYgKHBhcnNlLT5ncm91 cGluZ1NldHMpCisJCXJldHVybiBpbmZvczsKKworCS8qCisJICogVHJ5IHJlb3JkZXJpbmcg cGF0aGtleXMgdG8gbWluaW1pemUgdGhlIHNvcnQgY29zdCwgaWdub3JpbmcgYm90aCB0aGUK KwkgKiB0YXJnZXQgb3JkZXJpbmcgKE9SREVSIEJZKSBhbmQgb3JkZXJpbmcgb2YgdGhlIGlu cHV0IHBhdGguCisJICovCisJaWYgKGdldF9jaGVhcGVzdF9ncm91cF9rZXlzX29yZGVyKHJv b3QsIG5yb3dzLCAmcGF0aGtleXMsICZjbGF1c2VzLAorCQkJCQkJCQkJICBuX3ByZW9yZGVy ZWQpKQorCXsKKwkJaW5mbyA9IG1ha2VOb2RlKFBhdGhLZXlJbmZvKTsKKwkJaW5mby0+cGF0 aGtleXMgPSBwYXRoa2V5czsKKwkJaW5mby0+Y2xhdXNlcyA9IGNsYXVzZXM7CisKKwkJaW5m b3MgPSBsYXBwZW5kKGluZm9zLCBpbmZvKTsKKwl9CisKKwkvKgorCSAqIElmIHRoZSBwYXRo IGlzIHNvcnRlZCBpbiBzb21lIHdheSwgdHJ5IHJlb3JkZXJpbmcgdGhlIGdyb3VwIGtleXMg dG8gbWF0Y2gKKwkgKiBhcyBtdWNoIG9mIHRoZSBvcmRlcmluZyBhcyBwb3NzaWJsZSAtIHdl IGdldCB0aGlzIHNvcnQgZm9yIGZyZWUgKG1vc3RseSkuCisJICoKKwkgKiBXZSBtdXN0IG5v dCBkbyB0aGlzIHdoZW4gdGhlcmUgYXJlIG5vIGdyb3VwaW5nIHNldHMsIGJlY2F1c2UgdGhv c2UgdXNlCisJICogbW9yZSBjb21wbGV4IGxvZ2ljIHRvIGRlY2lkZSB0aGUgb3JkZXJpbmcu CisJICoKKwkgKiBYWFggSXNuJ3QgdGhpcyBzb21ld2hhdCByZWR1bmRhbnQgd2l0aCBwcmVz b3J0ZWRfa2V5cz8gQWN0dWFsbHksIGl0J3MKKwkgKiBtb3JlIGEgY29tcGxlbWVudCwgYmVj YXVzZSBpdCBhbGxvd3MgYmVuZWZpdGluZyBmcm9tIGluY3JlbWVudGFsIHNvcnQKKwkgKiBh cyBtdWNoIGFzIHBvc3NpYmxlLgorCSAqCisJICogWFhYIFRoaXMgZG9lcyBub3RoaW5nIGlm IChuX3ByZW9yZGVyZWQgPT0gMCkuIFdlIHNob3VsZG4ndCBjcmVhdGUgdGhlCisJICogaW5m byBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKHBhdGhfcGF0aGtleXMpCisJeworCQluX3By ZW9yZGVyZWQgPSBncm91cF9rZXlzX3Jlb3JkZXJfYnlfcGF0aGtleXMocGF0aF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgICZwYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkgICZjbGF1c2Vz KTsKKworCQkvKiByZW9yZGVyIHRoZSB0YWlsIHRvIG1pbmltaXplIHNvcnQgY29zdCAqLwor CQlnZXRfY2hlYXBlc3RfZ3JvdXBfa2V5c19vcmRlcihyb290LCBucm93cywgJnBhdGhrZXlz LCAmY2xhdXNlcywKKwkJCQkJCQkJCSAgbl9wcmVvcmRlcmVkKTsKKworCQkvKgorCQkgKiBy ZW9yZGVyIHRoZSB0YWlsIHRvIG1pbmltaXplIHNvcnQgY29zdAorCQkgKgorCQkgKiBYWFgg SWdub3JlIHRoZSByZXR1cm4gdmFsdWUgLSB0aGVyZSBtYXkgYmUgbm90aGluZyB0byByZW9y ZGVyLCBpbgorCQkgKiB3aGljaCBjYXNlIGdldF9jaGVhcGVzdF9ncm91cF9rZXlzX29yZGVy IHJldHVybnMgZmFsc2UuIEJ1dCB3ZQorCQkgKiBzdGlsbCB3YW50IHRvIGtlZXAgdGhlIGtl eXMgcmVvcmRlcmVkIHRvIHBhdGhfcGF0aGtleXMuCisJCSAqLworCQlpbmZvID0gbWFrZU5v ZGUoUGF0aEtleUluZm8pOworCQlpbmZvLT5wYXRoa2V5cyA9IHBhdGhrZXlzOworCQlpbmZv LT5jbGF1c2VzID0gY2xhdXNlczsKKworCQlpbmZvcyA9IGxhcHBlbmQoaW5mb3MsIGluZm8p OworCX0KKworCS8qCisJICogVHJ5IHJlb3JkZXJpbmcgcGF0aGtleXMgdG8gbWluaW1pemUg dGhlIHNvcnQgY29zdCAodGhpcyB0aW1lIGNvbnNpZGVyCisJICogdGhlIE9SREVSIEJZIGNs YXVzZSwgYnV0IG9ubHkgaWYgc2V0IGRlYnVnX2dyb3VwX2J5X21hdGNoX29yZGVyX2J5KS4K KwkgKgorCSAqIFhYWCBUaGlzIGRvZXMgbm90aGluZyBpZiAobl9wcmVvcmRlcmVkID09IDAp LiBXZSBzaG91bGRuJ3QgY3JlYXRlIHRoZQorCSAqIGluZm8gaW4gdGhpcyBjYXNlLgorCSAq LworCWlmIChyb290LT5zb3J0X3BhdGhrZXlzICYmIGRlYnVnX2dyb3VwX2J5X21hdGNoX29y ZGVyX2J5KQorCXsKKwkJbl9wcmVvcmRlcmVkID0gZ3JvdXBfa2V5c19yZW9yZGVyX2J5X3Bh dGhrZXlzKHJvb3QtPnNvcnRfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJICAmcGF0aGtleXMs CisJCQkJCQkJCQkJCQkJICAmY2xhdXNlcyk7CisKKwkJLyoKKwkJICogcmVvcmRlciB0aGUg dGFpbCB0byBtaW5pbWl6ZSBzb3J0IGNvc3QKKwkJICoKKwkJICogWFhYIElnbm9yZSB0aGUg cmV0dXJuIHZhbHVlIC0gdGhlcmUgbWF5IGJlIG5vdGhpbmcgdG8gcmVvcmRlciwgaW4KKwkJ ICogd2hpY2ggY2FzZSBnZXRfY2hlYXBlc3RfZ3JvdXBfa2V5c19vcmRlciByZXR1cm5zIGZh bHNlLiBCdXQgd2UKKwkJICogc3RpbGwgd2FudCB0byBrZWVwIHRoZSBrZXlzIHJlb3JkZXJl ZCB0byBzb3J0X3BhdGhrZXlzLgorCQkgKi8KKwkJZ2V0X2NoZWFwZXN0X2dyb3VwX2tleXNf b3JkZXIocm9vdCwgbnJvd3MsICZwYXRoa2V5cywgJmNsYXVzZXMsCisJCQkJCQkJCQkgIG5f cHJlb3JkZXJlZCk7CisKKwkJLyoga2VlcCB0aGUgZ3JvdXAga2V5cyByZW9yZGVyZWQgdG8g bWF0Y2ggb3JkZXJpbmcgb2YgaW5wdXQgcGF0aCAqLworCQlpbmZvID0gbWFrZU5vZGUoUGF0 aEtleUluZm8pOworCQlpbmZvLT5wYXRoa2V5cyA9IHBhdGhrZXlzOworCQlpbmZvLT5jbGF1 c2VzID0gY2xhdXNlczsKKworCQlpbmZvcyA9IGxhcHBlbmQoaW5mb3MsIGluZm8pOworCX0K KworCXJldHVybiBpbmZvczsKK30KKwogLyoKICAqIHBhdGhrZXlzX2NvdW50X2NvbnRhaW5l ZF9pbgogICogICAgU2FtZSBhcyBwYXRoa2V5c19jb250YWluZWRfaW4sIGJ1dCBhbHNvIHNl dHMgbGVuZ3RoIG9mIGxvbmdlc3QKQEAgLTE4NjIsNiArMjM4OSw1NCBAQCBwYXRoa2V5c191 c2VmdWxfZm9yX29yZGVyaW5nKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpwYXRoa2V5cykK IAlyZXR1cm4gbl9jb21tb25fcGF0aGtleXM7CiB9CiAKKy8qCisgKiBwYXRoa2V5c191c2Vm dWxfZm9yX2dyb3VwaW5nCisgKgkJQ291bnQgdGhlIG51bWJlciBvZiBwYXRoa2V5cyB0aGF0 IGFyZSB1c2VmdWwgZm9yIGdyb3VwaW5nIChpbnN0ZWFkIG9mCisgKgkJZXhwbGljaXQgc29y dCkKKyAqCisgKiBHcm91cCBwYXRoa2V5cyBjb3VsZCBiZSByZW9yZGVyZWQgdG8gYmVuZWZp dCBmcm9tIHRoZSBvZGVyaW5nLiBUaGUgb3JkZXJpbmcKKyAqIG1heSBub3QgYmUgImNvbXBs ZXRlIiBhbmQgbWF5IHJlcXVpcmUgaW5jcmVtZW50YWwgc29ydCwgYnV0IHRoYXQncyBmaW5l LiBTbworICogd2Ugc2ltcGx5IGNvdW50IHByZWZpeCBwYXRoa2V5cyB3aXRoIGEgbWF0Y2hp bmcgZ3JvdXAga2V5LCBhbmQgc3RvcCBvbmNlIHdlCisgKiBmaW5kIHRoZSBmaXJzdCBwYXRo a2V5IHdpdGhvdXQgYSBtYXRjaC4KKyAqCisgKiBTbyBlLmcuIHdpdGggcGF0aGtleXMgKGEs YixjKSBhbmQgZ3JvdXAga2V5cyAoYSxiLGUpIHRoaXMgZGV0ZXJtaW5lcyAoYSxiKQorICog cGF0aGtleXMgYXJlIHVzZWZ1bCBmb3IgZ3JvdXBpbmcsIGFuZCB3ZSBtaWdodCBkbyBpbmNy ZW1lbnRhbCBzb3J0IHRvIGdldAorICogcGF0aCBvcmRlcmVkIGJ5IChhLGIsZSkuCisgKgor ICogVGhpcyBsb2dpYyBpcyBuZWNlc3NhcnkgdG8gcmV0YWluIHBhdGhzIHdpdGggb3JkZWRp bmcgbm90IG1hdGNoaW5nIGdyb3VwaW5nCisgKiBrZXlzIGRpcmVjdGx5LCB3aXRob3V0IHRo ZSByZW9yZGVyaW5nLgorICoKKyAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiBwYXRoa2V5IHBy ZWZpeCB3aXRoIG1hdGNoaW5nIGdyb3VwIGtleXMuCisgKi8KK3N0YXRpYyBpbnQKK3BhdGhr ZXlzX3VzZWZ1bF9mb3JfZ3JvdXBpbmcoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnBhdGhr ZXlzKQoreworCUxpc3RDZWxsICprZXk7CisJaW50CQkgIG4gPSAwOworCisJLyogbm8gc3Bl Y2lhbCBvcmRlcmluZyByZXF1ZXN0ZWQgZm9yIGdyb3VwaW5nICovCisJaWYgKHJvb3QtPmdy b3VwX3BhdGhrZXlzID09IE5JTCkKKwkJcmV0dXJuIDA7CisKKwkvKiB1bm9yZGVyZWQgcGF0 aCAqLworCWlmIChwYXRoa2V5cyA9PSBOSUwpCisJCXJldHVybiAwOworCisJLyogd2FsayB0 aGUgcGF0aGtleXMgYW5kIHNlYXJjaCBmb3IgbWF0Y2hpbmcgZ3JvdXAga2V5ICovCisJZm9y ZWFjaChrZXksIHBhdGhrZXlzKQorCXsKKwkJUGF0aEtleQkqcGF0aGtleSA9IChQYXRoS2V5 ICopIGxmaXJzdChrZXkpOworCisJCS8qIG5vIG1hdGNoaW5nIGdyb3VwIGtleSwgd2UncmUg ZG9uZSAqLworCQlpZiAoIWxpc3RfbWVtYmVyX3B0cihyb290LT5ncm91cF9wYXRoa2V5cywg cGF0aGtleSkpCisJCQlicmVhazsKKworCQluKys7CisJfQorCisJcmV0dXJuIG47Cit9CisK IC8qCiAgKiB0cnVuY2F0ZV91c2VsZXNzX3BhdGhrZXlzCiAgKgkJU2hvcnRlbiB0aGUgZ2l2 ZW4gcGF0aGtleSBsaXN0IHRvIGp1c3QgdGhlIHVzZWZ1bCBwYXRoa2V5cy4KQEAgLTE4NzYs NiArMjQ1MSw5IEBAIHRydW5jYXRlX3VzZWxlc3NfcGF0aGtleXMoUGxhbm5lckluZm8gKnJv b3QsCiAKIAludXNlZnVsID0gcGF0aGtleXNfdXNlZnVsX2Zvcl9tZXJnaW5nKHJvb3QsIHJl bCwgcGF0aGtleXMpOwogCW51c2VmdWwyID0gcGF0aGtleXNfdXNlZnVsX2Zvcl9vcmRlcmlu Zyhyb290LCBwYXRoa2V5cyk7CisJaWYgKG51c2VmdWwyID4gbnVzZWZ1bCkKKwkJbnVzZWZ1 bCA9IG51c2VmdWwyOworCW51c2VmdWwyID0gcGF0aGtleXNfdXNlZnVsX2Zvcl9ncm91cGlu Zyhyb290LCBwYXRoa2V5cyk7CiAJaWYgKG51c2VmdWwyID4gbnVzZWZ1bCkKIAkJbnVzZWZ1 bCA9IG51c2VmdWwyOwogCkBAIC0xOTExLDYgKzI0ODksOCBAQCBoYXNfdXNlZnVsX3BhdGhr ZXlzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiB7CiAJaWYgKHJlbC0+ am9pbmluZm8gIT0gTklMIHx8IHJlbC0+aGFzX2VjbGFzc19qb2lucykKIAkJcmV0dXJuIHRy dWU7CQkJLyogbWlnaHQgYmUgYWJsZSB0byB1c2UgcGF0aGtleXMgZm9yIG1lcmdpbmcgKi8K KwlpZiAocm9vdC0+Z3JvdXBfcGF0aGtleXMgIT0gTklMKQorCQlyZXR1cm4gdHJ1ZTsJCQkv KiBtaWdodCBiZSBhYmxlIHRvIHVzZSBwYXRoa2V5cyBmb3IgZ3JvdXBpbmcgKi8KIAlpZiAo cm9vdC0+cXVlcnlfcGF0aGtleXMgIT0gTklMKQogCQlyZXR1cm4gdHJ1ZTsJCQkvKiBtaWdo dCBiZSBhYmxlIHRvIHVzZSB0aGVtIGZvciBvcmRlcmluZyAqLwogCXJldHVybiBmYWxzZTsJ CQkJLyogZGVmaW5pdGVseSB1c2VsZXNzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKaW5kZXggNTQ3ZmRhMjBhMjMuLmJiOTU3ZDUwZDIzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02MjE4LDI0ICs2MjE4LDEyNCBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpp bnB1dF9yZWwsCiAJCSAqLwogCQlmb3JlYWNoKGxjLCBpbnB1dF9yZWwtPnBhdGhsaXN0KQog CQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CiAJCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikg bGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGhfc2F2ZSA9IHBhdGg7CiAJCQlQYXRoCSAg ICpwYXRoX29yaWdpbmFsID0gcGF0aDsKLQkJCWJvb2wJCWlzX3NvcnRlZDsKLQkJCWludAkJ CXByZXNvcnRlZF9rZXlzOwogCi0JCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250 YWluZWRfaW4ocm9vdC0+Z3JvdXBfcGF0aGtleXMsCi0JCQkJCQkJCQkJCQkJcGF0aC0+cGF0 aGtleXMsCi0JCQkJCQkJCQkJCQkJJnByZXNvcnRlZF9rZXlzKTsKKwkJCUxpc3QJICAgKnBh dGhrZXlfb3JkZXJpbmdzID0gTklMOworCisJCQlMaXN0CSAgICpncm91cF9wYXRoa2V5cyA9 IHJvb3QtPmdyb3VwX3BhdGhrZXlzOworCQkJTGlzdAkgICAqZ3JvdXBfY2xhdXNlcyA9IHBh cnNlLT5ncm91cENsYXVzZTsKKworCQkJLyogZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgZ3JvdXAg b3JkZXJpbmdzIHRoYXQgbWlnaHQgYmUgdXNlZnVsICovCisJCQlwYXRoa2V5X29yZGVyaW5n cyA9IGdldF91c2VmdWxfZ3JvdXBfa2V5c19vcmRlcmluZ3Mocm9vdCwKKwkJCQkJCQkJCQkJ CQkJCQlwYXRoLT5yb3dzLAorCQkJCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAorCQkJ CQkJCQkJCQkJCQkJCWdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCWdyb3VwX2Ns YXVzZXMpOwogCi0JCQlpZiAocGF0aCA9PSBjaGVhcGVzdF9wYXRoIHx8IGlzX3NvcnRlZCkK KwkJCUFzc2VydChsaXN0X2xlbmd0aChwYXRoa2V5X29yZGVyaW5ncykgPiAwKTsKKworCQkJ LyogcHJvY2VzcyBhbGwgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZ3JvdXBpbmcgcmVvcmRl cmluZ3MgKi8KKwkJCWZvcmVhY2ggKGxjMiwgcGF0aGtleV9vcmRlcmluZ3MpCiAJCQl7Ci0J CQkJLyogU29ydCB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aCBpZiBpdCBpc24ndCBhbHJlYWR5 IHNvcnRlZCAqLwotCQkJCWlmICghaXNfc29ydGVkKQotCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX3NvcnRfcGF0aChyb290LAotCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJ CQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMs Ci0JCQkJCQkJCQkJCQkJIC0xLjApOworCQkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJCQlpbnQJ CQlwcmVzb3J0ZWRfa2V5cyA9IDA7CisJCQkJUGF0aEtleUluZm8gKmluZm8gPSAoUGF0aEtl eUluZm8gKikgbGZpcnN0KGxjMik7CisKKwkJCQkvKiByZXN0b3JlIHRoZSBwYXRoICh3ZSBy ZXBsYWNlIGl0IGluIHRoZSBsb29wKSAqLworCQkJCXBhdGggPSBwYXRoX3NhdmU7CisKKwkJ CQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4oaW5mby0+cGF0aGtl eXMsCisJCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkmcHJl c29ydGVkX2tleXMpOworCisJCQkJaWYgKHBhdGggPT0gY2hlYXBlc3RfcGF0aCB8fCBpc19z b3J0ZWQpCisJCQkJeworCQkJCQkvKiBTb3J0IHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoIGlm IGl0IGlzbid0IGFscmVhZHkgc29ydGVkICovCisJCQkJCWlmICghaXNfc29ydGVkKQorCQkJ CQl7CisJCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAorCQkJ CQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJ CQkJCQkJCQkgaW5mby0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCQkJ fQorCisJCQkJCS8qIE5vdyBkZWNpZGUgd2hhdCB0byBzdGljayBhdG9wIGl0ICovCisJCQkJ CWlmIChwYXJzZS0+Z3JvdXBpbmdTZXRzKQorCQkJCQl7CisJCQkJCQljb25zaWRlcl9ncm91 cGluZ3NldHNfcGF0aHMocm9vdCwgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJcGF0aCwg dHJ1ZSwgY2FuX2hhc2gsCisJCQkJCQkJCQkJCQkJZ2QsIGFnZ19jb3N0cywgZE51bUdyb3Vw cyk7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAocGFyc2UtPmhhc0FnZ3MpCisJCQkJCXsKKwkJ CQkJCS8qCisJCQkJCQkgKiBXZSBoYXZlIGFnZ3JlZ2F0aW9uLCBwb3NzaWJseSB3aXRoIHBs YWluIEdST1VQIEJZLiBNYWtlCisJCQkJCQkgKiBhbiBBZ2dQYXRoLgorCQkJCQkJICovCisJ CQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKKwkJCQkJCQkJIGNyZWF0ZV9h Z2dfcGF0aChyb290LAorCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJ IHBhdGgsCisJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCwKKwkJCQkJCQkJ CQkJCSBpbmZvLT5jbGF1c2VzID8gQUdHX1NPUlRFRCA6IEFHR19QTEFJTiwKKwkJCQkJCQkJ CQkJCSBBR0dTUExJVF9TSU1QTEUsCisJCQkJCQkJCQkJCQkgaW5mby0+Y2xhdXNlcywKKwkJ CQkJCQkJCQkJCSBoYXZpbmdRdWFsLAorCQkJCQkJCQkJCQkJIGFnZ19jb3N0cywKKwkJCQkJ CQkJCQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoZ3JvdXBfY2xh dXNlcykKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdlIGhhdmUgR1JPVVAgQlkgd2l0 aG91dCBhZ2dyZWdhdGlvbiBvciBncm91cGluZyBzZXRzLgorCQkJCQkJICogTWFrZSBhIEdy b3VwUGF0aC4KKwkJCQkJCSAqLworCQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRo ICopCisJCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAg Z3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJICAgaW5m by0+Y2xhdXNlcywKKwkJCQkJCQkJCQkJCSAgIGhhdmluZ1F1YWwsCisJCQkJCQkJCQkJCQkg ICBkTnVtR3JvdXBzKSk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvKiBP dGhlciBjYXNlcyBzaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWQgYWJvdmUgKi8KKwkJCQkJCUFz c2VydChmYWxzZSk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIE5vdyB3ZSBt YXkgY29uc2lkZXIgaW5jcmVtZW50YWwgc29ydCBvbiB0aGlzIHBhdGgsIGJ1dCBvbmx5CisJ CQkJICogd2hlbiB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBzb3J0ZWQgYW5kIHdoZW4gaW5j cmVtZW50YWwgc29ydAorCQkJCSAqIGlzIGVuYWJsZWQuCisJCQkJICovCisJCQkJaWYgKGlz X3NvcnRlZCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCisJCQkJCWNvbnRpbnVlOwor CisJCQkJLyogUmVzdG9yZSB0aGUgaW5wdXQgcGF0aCAod2UgbWlnaHQgaGF2ZSBhZGRlZCBT b3J0IG9uIHRvcCkuICovCisJCQkJcGF0aCA9IHBhdGhfb3JpZ2luYWw7CisKKwkJCQkvKiBu byBzaGFyZWQgcHJlZml4LCBubyBwb2ludCBpbiBidWlsZGluZyBpbmNyZW1lbnRhbCBzb3J0 ICovCisJCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDApCisJCQkJCWNvbnRpbnVlOworCisJ CQkJLyoKKwkJCQkgKiBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGV4Y2x1ZGVkIHBhdGhrZXlz IG9mIGxlbmd0aCAxIGJlY2F1c2UKKwkJCQkgKiB0aGVuIHByZXNvcnRlZF9rZXlzID4gMCB3 b3VsZCBpbXBseSBpc19zb3J0ZWQgd2FzIHRydWUuCisJCQkJICovCisJCQkJQXNzZXJ0KGxp c3RfbGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAhPSAxKTsKKworCQkJCXBhdGggPSAo UGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJ CQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJ CQkJCSBpbmZvLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywK KwkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKIAogCQkJCS8qIE5vdyBkZWNpZGUgd2hhdCB0byBz dGljayBhdG9wIGl0ICovCiAJCQkJaWYgKHBhcnNlLT5ncm91cGluZ1NldHMpCkBAIC02MjQ3 LDE3ICs2MzQ3LDE3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQllbHNlIGlmIChwYXJzZS0+aGFz QWdncykKIAkJCQl7CiAJCQkJCS8qCi0JCQkJCSAqIFdlIGhhdmUgYWdncmVnYXRpb24sIHBv c3NpYmx5IHdpdGggcGxhaW4gR1JPVVAgQlkuIE1ha2UKLQkJCQkJICogYW4gQWdnUGF0aC4K KwkJCQkJICogV2UgaGF2ZSBhZ2dyZWdhdGlvbiwgcG9zc2libHkgd2l0aCBwbGFpbiBHUk9V UCBCWS4gTWFrZSBhbgorCQkJCQkgKiBBZ2dQYXRoLgogCQkJCQkgKi8KIAkJCQkJYWRkX3Bh dGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290 LAogCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJCSBwYXRoLAogCQkJCQkJ CQkJCQkgZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91 cENsYXVzZSA/IEFHR19TT1JURUQgOiBBR0dfUExBSU4sCisJCQkJCQkJCQkJCSBpbmZvLT5j bGF1c2VzID8gQUdHX1NPUlRFRCA6IEFHR19QTEFJTiwKIAkJCQkJCQkJCQkJIEFHR1NQTElU X1NJTVBMRSwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSwKKwkJCQkJCQkJCQkJ IGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJCQkg YWdnX2Nvc3RzLAogCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOwpAQCAtNjI2NSwxNCArNjM2 NSwxNCBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJZWxzZSBpZiAocGFyc2UtPmdyb3VwQ2xhdXNl KQogCQkJCXsKIAkJCQkJLyoKLQkJCQkJICogV2UgaGF2ZSBHUk9VUCBCWSB3aXRob3V0IGFn Z3JlZ2F0aW9uIG9yIGdyb3VwaW5nIHNldHMuCi0JCQkJCSAqIE1ha2UgYSBHcm91cFBhdGgu CisJCQkJCSAqIFdlIGhhdmUgR1JPVVAgQlkgd2l0aG91dCBhZ2dyZWdhdGlvbiBvciBncm91 cGluZyBzZXRzLiBNYWtlCisJCQkJCSAqIGEgR3JvdXBQYXRoLgogCQkJCQkgKi8KIAkJCQkJ YWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJIGNyZWF0ZV9ncm91cF9w YXRoKHJvb3QsCiAJCQkJCQkJCQkJCSAgIGdyb3VwZWRfcmVsLAogCQkJCQkJCQkJCQkgICBw YXRoLAotCQkJCQkJCQkJCQkgICBwYXJzZS0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJCQkJCSAg IGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJCQkJCSAgIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkJ CSAgIGROdW1Hcm91cHMpKTsKIAkJCQl9CkBAIC02MjgyLDc5ICs2MzgyLDYgQEAgYWRkX3Bh dGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5w dXRfcmVsLAogCQkJCQlBc3NlcnQoZmFsc2UpOwogCQkJCX0KIAkJCX0KLQotCQkJLyoKLQkJ CSAqIE5vdyB3ZSBtYXkgY29uc2lkZXIgaW5jcmVtZW50YWwgc29ydCBvbiB0aGlzIHBhdGgs IGJ1dCBvbmx5Ci0JCQkgKiB3aGVuIHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IHNvcnRlZCBh bmQgd2hlbiBpbmNyZW1lbnRhbCBzb3J0Ci0JCQkgKiBpcyBlbmFibGVkLgotCQkJICovCi0J CQlpZiAoaXNfc29ydGVkIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKLQkJCQljb250 aW51ZTsKLQotCQkJLyogUmVzdG9yZSB0aGUgaW5wdXQgcGF0aCAod2UgbWlnaHQgaGF2ZSBh ZGRlZCBTb3J0IG9uIHRvcCkuICovCi0JCQlwYXRoID0gcGF0aF9vcmlnaW5hbDsKLQotCQkJ Lyogbm8gc2hhcmVkIHByZWZpeCwgbm8gcG9pbnQgaW4gYnVpbGRpbmcgaW5jcmVtZW50YWwg c29ydCAqLwotCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDApCi0JCQkJY29udGludWU7Ci0K LQkJCS8qCi0JCQkgKiBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGV4Y2x1ZGVkIHBhdGhrZXlz IG9mIGxlbmd0aCAxIGJlY2F1c2UKLQkJCSAqIHRoZW4gcHJlc29ydGVkX2tleXMgPiAwIHdv dWxkIGltcGx5IGlzX3NvcnRlZCB3YXMgdHJ1ZS4KLQkJCSAqLwotCQkJQXNzZXJ0KGxpc3Rf bGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAhPSAxKTsKLQotCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCQkJ IGdyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJCQkJIHJv b3QtPmdyb3VwX3BhdGhrZXlzLAotCQkJCQkJCQkJCQkJCQkgcHJlc29ydGVkX2tleXMsCi0J CQkJCQkJCQkJCQkJCSAtMS4wKTsKLQotCQkJLyogTm93IGRlY2lkZSB3aGF0IHRvIHN0aWNr IGF0b3AgaXQgKi8KLQkJCWlmIChwYXJzZS0+Z3JvdXBpbmdTZXRzKQotCQkJewotCQkJCWNv bnNpZGVyX2dyb3VwaW5nc2V0c19wYXRocyhyb290LCBncm91cGVkX3JlbCwKLQkJCQkJCQkJ CQkJcGF0aCwgdHJ1ZSwgY2FuX2hhc2gsCi0JCQkJCQkJCQkJCWdkLCBhZ2dfY29zdHMsIGRO dW1Hcm91cHMpOwotCQkJfQotCQkJZWxzZSBpZiAocGFyc2UtPmhhc0FnZ3MpCi0JCQl7Ci0J CQkJLyoKLQkJCQkgKiBXZSBoYXZlIGFnZ3JlZ2F0aW9uLCBwb3NzaWJseSB3aXRoIHBsYWlu IEdST1VQIEJZLiBNYWtlIGFuCi0JCQkJICogQWdnUGF0aC4KLQkJCQkgKi8KLQkJCQlhZGRf cGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKLQkJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9v dCwKLQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkJIHBhdGgsCi0JCQkJCQkJ CQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCi0JCQkJCQkJCQkJIHBhcnNlLT5ncm91cENs YXVzZSA/IEFHR19TT1JURUQgOiBBR0dfUExBSU4sCi0JCQkJCQkJCQkJIEFHR1NQTElUX1NJ TVBMRSwKLQkJCQkJCQkJCQkgcGFyc2UtPmdyb3VwQ2xhdXNlLAotCQkJCQkJCQkJCSBoYXZp bmdRdWFsLAotCQkJCQkJCQkJCSBhZ2dfY29zdHMsCi0JCQkJCQkJCQkJIGROdW1Hcm91cHMp KTsKLQkJCX0KLQkJCWVsc2UgaWYgKHBhcnNlLT5ncm91cENsYXVzZSkKLQkJCXsKLQkJCQkv KgotCQkJCSAqIFdlIGhhdmUgR1JPVVAgQlkgd2l0aG91dCBhZ2dyZWdhdGlvbiBvciBncm91 cGluZyBzZXRzLiBNYWtlCi0JCQkJICogYSBHcm91cFBhdGguCi0JCQkJICovCi0JCQkJYWRk X3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCi0JCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgo cm9vdCwKLQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkgICBwYXRoLAot CQkJCQkJCQkJCSAgIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkgICBoYXZpbmdR dWFsLAotCQkJCQkJCQkJCSAgIGROdW1Hcm91cHMpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsK LQkJCQkvKiBPdGhlciBjYXNlcyBzaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWQgYWJvdmUgKi8K LQkJCQlBc3NlcnQoZmFsc2UpOwotCQkJfQogCQl9CiAKIAkJLyoKQEAgLTYzNjUsMTAwICs2 MzkyLDEyNSBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCXsKIAkJCWZvcmVhY2gobGMsIHBhcnRpYWxs eV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCiAJCQl7CisJCQkJTGlzdENlbGwgICAqbGMyOwog CQkJCVBhdGgJICAgKnBhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwogCQkJCVBhdGgJICAg KnBhdGhfb3JpZ2luYWwgPSBwYXRoOwotCQkJCWJvb2wJCWlzX3NvcnRlZDsKLQkJCQlpbnQJ CQlwcmVzb3J0ZWRfa2V5czsKIAotCQkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2Nv bnRhaW5lZF9pbihyb290LT5ncm91cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJcGF0aC0+ cGF0aGtleXMsCi0JCQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CisJCQkJTGlzdAkg ICAqcGF0aGtleV9vcmRlcmluZ3MgPSBOSUw7CiAKLQkJCQkvKgotCQkJCSAqIEluc2VydCBh IFNvcnQgbm9kZSwgaWYgcmVxdWlyZWQuICBCdXQgdGhlcmUncyBubyBwb2ludCBpbgotCQkJ CSAqIHNvcnRpbmcgYW55dGhpbmcgYnV0IHRoZSBjaGVhcGVzdCBwYXRoLgotCQkJCSAqLwot CQkJCWlmICghaXNfc29ydGVkKQorCQkJCUxpc3QJICAgKmdyb3VwX3BhdGhrZXlzID0gcm9v dC0+Z3JvdXBfcGF0aGtleXM7CisJCQkJTGlzdAkgICAqZ3JvdXBfY2xhdXNlcyA9IHBhcnNl LT5ncm91cENsYXVzZTsKKworCQkJCS8qIGdlbmVyYXRlIGFsdGVybmF0aXZlIGdyb3VwIG9y ZGVyaW5ncyB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCAqLworCQkJCXBhdGhrZXlfb3JkZXJpbmdz ID0gZ2V0X3VzZWZ1bF9ncm91cF9rZXlzX29yZGVyaW5ncyhyb290LAorCQkJCQkJCQkJCQkJ CQkJCQlwYXRoLT5yb3dzLAorCQkJCQkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkJZ3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJCWdyb3Vw X2NsYXVzZXMpOworCisJCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdGhrZXlfb3JkZXJpbmdz KSA+IDApOworCisJCQkJLyogcHJvY2VzcyBhbGwgcG90ZW50aWFsbHkgaW50ZXJlc3Rpbmcg Z3JvdXBpbmcgcmVvcmRlcmluZ3MgKi8KKwkJCQlmb3JlYWNoIChsYzIsIHBhdGhrZXlfb3Jk ZXJpbmdzKQogCQkJCXsKLQkJCQkJaWYgKHBhdGggIT0gcGFydGlhbGx5X2dyb3VwZWRfcmVs LT5jaGVhcGVzdF90b3RhbF9wYXRoKQotCQkJCQkJY29udGludWU7Ci0JCQkJCXBhdGggPSAo UGF0aCAqKSBjcmVhdGVfc29ydF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCQkJIGdyb3VwZWRf cmVsLAotCQkJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkJCSByb290LT5ncm91cF9w YXRoa2V5cywKLQkJCQkJCQkJCQkJCQkgLTEuMCk7Ci0JCQkJfQorCQkJCQlib29sCQlpc19z b3J0ZWQ7CisJCQkJCWludAkJCXByZXNvcnRlZF9rZXlzID0gMDsKKwkJCQkJUGF0aEtleUlu Zm8gKmluZm8gPSAoUGF0aEtleUluZm8gKikgbGZpcnN0KGxjMik7CiAKLQkJCQlpZiAocGFy c2UtPmhhc0FnZ3MpCi0JCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQotCQkJ CQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAot CQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQs Ci0JCQkJCQkJCQkJCSBwYXJzZS0+Z3JvdXBDbGF1c2UgPyBBR0dfU09SVEVEIDogQUdHX1BM QUlOLAotCQkJCQkJCQkJCQkgQUdHU1BMSVRfRklOQUxfREVTRVJJQUwsCi0JCQkJCQkJCQkJ CSBwYXJzZS0+Z3JvdXBDbGF1c2UsCi0JCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAotCQkJCQkJ CQkJCQkgYWdnX2ZpbmFsX2Nvc3RzLAotCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOwotCQkJ CWVsc2UKLQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCi0JCQkJCQkJIGNy ZWF0ZV9ncm91cF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCSAgIGdyb3VwZWRfcmVsLAotCQkJ CQkJCQkJCQkgICBwYXRoLAotCQkJCQkJCQkJCQkgICBwYXJzZS0+Z3JvdXBDbGF1c2UsCi0J CQkJCQkJCQkJCSAgIGhhdmluZ1F1YWwsCi0JCQkJCQkJCQkJCSAgIGROdW1Hcm91cHMpKTsK KwkJCQkJLyogcmVzdG9yZSB0aGUgcGF0aCAod2UgcmVwbGFjZSBpdCBpbiB0aGUgbG9vcCkg Ki8KKwkJCQkJcGF0aCA9IHBhdGhfb3JpZ2luYWw7CiAKLQkJCQkvKgotCQkJCSAqIE5vdyB3 ZSBtYXkgY29uc2lkZXIgaW5jcmVtZW50YWwgc29ydCBvbiB0aGlzIHBhdGgsIGJ1dCBvbmx5 Ci0JCQkJICogd2hlbiB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBzb3J0ZWQgYW5kIHdoZW4g aW5jcmVtZW50YWwKLQkJCQkgKiBzb3J0IGlzIGVuYWJsZWQuCi0JCQkJICovCi0JCQkJaWYg KGlzX3NvcnRlZCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCi0JCQkJCWNvbnRpbnVl OworCQkJCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4oaW5mby0+ cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJ CQkJCSZwcmVzb3J0ZWRfa2V5cyk7CiAKLQkJCQkvKiBSZXN0b3JlIHRoZSBpbnB1dCBwYXRo ICh3ZSBtaWdodCBoYXZlIGFkZGVkIFNvcnQgb24gdG9wKS4gKi8KLQkJCQlwYXRoID0gcGF0 aF9vcmlnaW5hbDsKKwkJCQkJLyoKKwkJCQkJICogSW5zZXJ0IGEgU29ydCBub2RlLCBpZiBy ZXF1aXJlZC4gIEJ1dCB0aGVyZSdzIG5vIHBvaW50IGluCisJCQkJCSAqIHNvcnRpbmcgYW55 dGhpbmcgYnV0IHRoZSBjaGVhcGVzdCBwYXRoLgorCQkJCQkgKi8KKwkJCQkJaWYgKCFpc19z b3J0ZWQpCisJCQkJCXsKKwkJCQkJCWlmIChwYXRoICE9IHBhcnRpYWxseV9ncm91cGVkX3Jl bC0+Y2hlYXBlc3RfdG90YWxfcGF0aCkKKwkJCQkJCQljb250aW51ZTsKIAotCQkJCS8qIG5v IHNoYXJlZCBwcmVmaXgsIG5vdCBwb2ludCBpbiBidWlsZGluZyBpbmNyZW1lbnRhbCBzb3J0 ICovCi0JCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDApCi0JCQkJCWNvbnRpbnVlOworCQkJ CQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJ CQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJ IGluZm8tPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJCX0KIAotCQkJ CS8qCi0JCQkJICogV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBleGNsdWRlZCBwYXRoa2V5cyBv ZiBsZW5ndGggMQotCQkJCSAqIGJlY2F1c2UgdGhlbiBwcmVzb3J0ZWRfa2V5cyA+IDAgd291 bGQgaW1wbHkgaXNfc29ydGVkIHdhcwotCQkJCSAqIHRydWUuCi0JCQkJICovCi0JCQkJQXNz ZXJ0KGxpc3RfbGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAhPSAxKTsKKwkJCQkJaWYg KHBhcnNlLT5oYXNBZ2dzKQorCQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICop CisJCQkJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCSBncm91cGVk X3JlbCwKKwkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLT5y ZWx0YXJnZXQsCisJCQkJCQkJCQkJCQkgaW5mby0+Y2xhdXNlcyA/IEFHR19TT1JURUQgOiBB R0dfUExBSU4sCisJCQkJCQkJCQkJCQkgQUdHU1BMSVRfRklOQUxfREVTRVJJQUwsCisJCQkJ CQkJCQkJCQkgaW5mby0+Y2xhdXNlcywKKwkJCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAorCQkJ CQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0cywKKwkJCQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7 CisJCQkJCWVsc2UKKwkJCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJ CQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCSAgIGdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCQkJICAgcGF0aCwKKwkJCQkJCQkJCQkJCSAgIGluZm8tPmNsYXVz ZXMsCisJCQkJCQkJCQkJCQkgICBoYXZpbmdRdWFsLAorCQkJCQkJCQkJCQkJICAgZE51bUdy b3VwcykpOwogCi0JCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0 X3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJ CQkJCSBwYXRoLAotCQkJCQkJCQkJCQkJCQkJIHJvb3QtPmdyb3VwX3BhdGhrZXlzLAotCQkJ CQkJCQkJCQkJCQkJIHByZXNvcnRlZF9rZXlzLAotCQkJCQkJCQkJCQkJCQkJIC0xLjApOwor CQkJCQkvKgorCQkJCQkgKiBOb3cgd2UgbWF5IGNvbnNpZGVyIGluY3JlbWVudGFsIHNvcnQg b24gdGhpcyBwYXRoLCBidXQgb25seQorCQkJCQkgKiB3aGVuIHRoZSBwYXRoIGlzIG5vdCBh bHJlYWR5IHNvcnRlZCBhbmQgd2hlbiBpbmNyZW1lbnRhbAorCQkJCQkgKiBzb3J0IGlzIGVu YWJsZWQuCisJCQkJCSAqLworCQkJCQlpZiAoaXNfc29ydGVkIHx8ICFlbmFibGVfaW5jcmVt ZW50YWxfc29ydCkKKwkJCQkJCWNvbnRpbnVlOwogCi0JCQkJaWYgKHBhcnNlLT5oYXNBZ2dz KQotCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKLQkJCQkJCQkgY3JlYXRl X2FnZ19wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJ IHBhdGgsCi0JCQkJCQkJCQkJCSBncm91cGVkX3JlbC0+cmVsdGFyZ2V0LAotCQkJCQkJCQkJ CQkgcGFyc2UtPmdyb3VwQ2xhdXNlID8gQUdHX1NPUlRFRCA6IEFHR19QTEFJTiwKLQkJCQkJ CQkJCQkJIEFHR1NQTElUX0ZJTkFMX0RFU0VSSUFMLAotCQkJCQkJCQkJCQkgcGFyc2UtPmdy b3VwQ2xhdXNlLAotCQkJCQkJCQkJCQkgaGF2aW5nUXVhbCwKLQkJCQkJCQkJCQkJIGFnZ19m aW5hbF9jb3N0cywKLQkJCQkJCQkJCQkJIGROdW1Hcm91cHMpKTsKLQkJCQllbHNlCi0JCQkJ CWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQotCQkJCQkJCSBjcmVhdGVfZ3JvdXBf cGF0aChyb290LAotCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJICAg cGF0aCwKLQkJCQkJCQkJCQkJICAgcGFyc2UtPmdyb3VwQ2xhdXNlLAotCQkJCQkJCQkJCQkg ICBoYXZpbmdRdWFsLAotCQkJCQkJCQkJCQkgICBkTnVtR3JvdXBzKSk7CisJCQkJCS8qIFJl c3RvcmUgdGhlIGlucHV0IHBhdGggKHdlIG1pZ2h0IGhhdmUgYWRkZWQgU29ydCBvbiB0b3Ap LiAqLworCQkJCQlwYXRoID0gcGF0aF9vcmlnaW5hbDsKKworCQkJCQkvKiBubyBzaGFyZWQg cHJlZml4LCBub3QgcG9pbnQgaW4gYnVpbGRpbmcgaW5jcmVtZW50YWwgc29ydCAqLworCQkJ CQlpZiAocHJlc29ydGVkX2tleXMgPT0gMCkKKwkJCQkJCWNvbnRpbnVlOworCisJCQkJCS8q CisJCQkJCSAqIFdlIHNob3VsZCBoYXZlIGFscmVhZHkgZXhjbHVkZWQgcGF0aGtleXMgb2Yg bGVuZ3RoIDEKKwkJCQkJICogYmVjYXVzZSB0aGVuIHByZXNvcnRlZF9rZXlzID4gMCB3b3Vs ZCBpbXBseSBpc19zb3J0ZWQgd2FzCisJCQkJCSAqIHRydWUuCisJCQkJCSAqLworCQkJCQlB c3NlcnQobGlzdF9sZW5ndGgocm9vdC0+Z3JvdXBfcGF0aGtleXMpICE9IDEpOworCisJCQkJ CXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJ CQkJCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCSBwYXRoLAor CQkJCQkJCQkJCQkJCQkJCSBpbmZvLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgcHJl c29ydGVkX2tleXMsCisJCQkJCQkJCQkJCQkJCQkJIC0xLjApOworCisJCQkJCWlmIChwYXJz ZS0+aGFzQWdncykKKwkJCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJ CQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWws CisJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCSBncm91cGVkX3JlbC0+cmVsdGFy Z2V0LAorCQkJCQkJCQkJCQkJIGluZm8tPmNsYXVzZXMgPyBBR0dfU09SVEVEIDogQUdHX1BM QUlOLAorCQkJCQkJCQkJCQkJIEFHR1NQTElUX0ZJTkFMX0RFU0VSSUFMLAorCQkJCQkJCQkJ CQkJIGluZm8tPmNsYXVzZXMsCisJCQkJCQkJCQkJCQkgaGF2aW5nUXVhbCwKKwkJCQkJCQkJ CQkJCSBhZ2dfZmluYWxfY29zdHMsCisJCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOworCQkJ CQllbHNlCisJCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKKwkJCQkJCQkJ IGNyZWF0ZV9ncm91cF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwK KwkJCQkJCQkJCQkJCSAgIHBhdGgsCisJCQkJCQkJCQkJCQkgICBpbmZvLT5jbGF1c2VzLAor CQkJCQkJCQkJCQkJICAgaGF2aW5nUXVhbCwKKwkJCQkJCQkJCQkJCSAgIGROdW1Hcm91cHMp KTsKKwkJCQl9CiAJCQl9CiAJCX0KIAl9CkBAIC02NjYxLDQxICs2NzEzLDcxIEBAIGNyZWF0 ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkgKi8KIAkJ Zm9yZWFjaChsYywgaW5wdXRfcmVsLT5wYXRobGlzdCkKIAkJeworCQkJTGlzdENlbGwgICAq bGMyOwogCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7Ci0JCQlib29s CQlpc19zb3J0ZWQ7CisJCQlQYXRoCSAgICpwYXRoX3NhdmUgPSBwYXRoOworCisJCQlMaXN0 CSAgICpwYXRoa2V5X29yZGVyaW5ncyA9IE5JTDsKKworCQkJTGlzdAkgICAqZ3JvdXBfcGF0 aGtleXMgPSByb290LT5ncm91cF9wYXRoa2V5czsKKwkJCUxpc3QJICAgKmdyb3VwX2NsYXVz ZXMgPSBwYXJzZS0+Z3JvdXBDbGF1c2U7CisKKwkJCS8qIGdlbmVyYXRlIGFsdGVybmF0aXZl IGdyb3VwIG9yZGVyaW5ncyB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCAqLworCQkJcGF0aGtleV9v cmRlcmluZ3MgPSBnZXRfdXNlZnVsX2dyb3VwX2tleXNfb3JkZXJpbmdzKHJvb3QsCisJCQkJ CQkJCQkJCQkJCQkJcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkJCQlncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCQln cm91cF9jbGF1c2VzKTsKKworCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdGhrZXlfb3JkZXJp bmdzKSA+IDApOwogCi0JCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb250YWluZWRfaW4ocm9v dC0+Z3JvdXBfcGF0aGtleXMsCi0JCQkJCQkJCQkJCSAgcGF0aC0+cGF0aGtleXMpOwotCQkJ aWYgKHBhdGggPT0gY2hlYXBlc3RfdG90YWxfcGF0aCB8fCBpc19zb3J0ZWQpCisJCQkvKiBw cm9jZXNzIGFsbCBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBncm91cGluZyByZW9yZGVyaW5n cyAqLworCQkJZm9yZWFjaCAobGMyLCBwYXRoa2V5X29yZGVyaW5ncykKIAkJCXsKLQkJCQkv KiBTb3J0IHRoZSBjaGVhcGVzdCBwYXJ0aWFsIHBhdGgsIGlmIGl0IGlzbid0IGFscmVhZHkg Ki8KLQkJCQlpZiAoIWlzX3NvcnRlZCkKLQkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9z b3J0X3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAot CQkJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkJCSByb290LT5ncm91cF9wYXRoa2V5 cywKLQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJYm9vbAkJaXNfc29ydGVkOworCQkJCWlu dAkJCXByZXNvcnRlZF9rZXlzID0gMDsKKwkJCQlQYXRoS2V5SW5mbyAqaW5mbyA9IChQYXRo S2V5SW5mbyAqKSBsZmlyc3QobGMyKTsKIAotCQkJCWlmIChwYXJzZS0+aGFzQWdncykKLQkJ CQkJYWRkX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQotCQkJCQkJCSBj cmVhdGVfYWdnX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3Jl bCwKLQkJCQkJCQkJCQkJIHBhdGgsCi0JCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwtPnJlbHRhcmdldCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSA/IEFHR19T T1JURUQgOiBBR0dfUExBSU4sCi0JCQkJCQkJCQkJCSBBR0dTUExJVF9JTklUSUFMX1NFUklB TCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkJIE5JTCwK LQkJCQkJCQkJCQkJIGFnZ19wYXJ0aWFsX2Nvc3RzLAotCQkJCQkJCQkJCQkgZE51bVBhcnRp YWxHcm91cHMpKTsKLQkJCQllbHNlCi0JCQkJCWFkZF9wYXRoKHBhcnRpYWxseV9ncm91cGVk X3JlbCwgKFBhdGggKikKLQkJCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKLQkJCQkJ CQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkgICBwYXRoLAot CQkJCQkJCQkJCQkgICBwYXJzZS0+Z3JvdXBDbGF1c2UsCi0JCQkJCQkJCQkJCSAgIE5JTCwK LQkJCQkJCQkJCQkJICAgZE51bVBhcnRpYWxHcm91cHMpKTsKKwkJCQkvKiByZXN0b3JlIHRo ZSBwYXRoICh3ZSByZXBsYWNlIGl0IGluIHRoZSBsb29wKSAqLworCQkJCXBhdGggPSBwYXRo X3NhdmU7CisKKwkJCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRfaW4o aW5mby0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAorCQkJCQkJ CQkJCQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJCQkJaWYgKHBhdGggPT0gY2hlYXBlc3Rf dG90YWxfcGF0aCB8fCBpc19zb3J0ZWQpCisJCQkJeworCQkJCQkvKiBTb3J0IHRoZSBjaGVh cGVzdCBwYXJ0aWFsIHBhdGgsIGlmIGl0IGlzbid0IGFscmVhZHkgKi8KKwkJCQkJaWYgKCFp c19zb3J0ZWQpCisJCQkJCXsKKwkJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9w YXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJ CQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJCQkgaW5mby0+cGF0aGtleXMsCisJCQkJ CQkJCQkJCQkJCSAtMS4wKTsKKwkJCQkJfQorCisJCQkJCWlmIChwYXJzZS0+aGFzQWdncykK KwkJCQkJCWFkZF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgKFBhdGggKikKKwkJCQkJ CQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9n cm91cGVkX3JlbC0+cmVsdGFyZ2V0LAorCQkJCQkJCQkJCQkJIGluZm8tPmNsYXVzZXMgPyBB R0dfU09SVEVEIDogQUdHX1BMQUlOLAorCQkJCQkJCQkJCQkJIEFHR1NQTElUX0lOSVRJQUxf U0VSSUFMLAorCQkJCQkJCQkJCQkJIGluZm8tPmNsYXVzZXMsCisJCQkJCQkJCQkJCQkgTklM LAorCQkJCQkJCQkJCQkJIGFnZ19wYXJ0aWFsX2Nvc3RzLAorCQkJCQkJCQkJCQkJIGROdW1Q YXJ0aWFsR3JvdXBzKSk7CisJCQkJCWVsc2UKKwkJCQkJCWFkZF9wYXRoKHBhcnRpYWxseV9n cm91cGVkX3JlbCwgKFBhdGggKikKKwkJCQkJCQkJIGNyZWF0ZV9ncm91cF9wYXRoKHJvb3Qs CisJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkg ICBwYXRoLAorCQkJCQkJCQkJCQkJICAgaW5mby0+Y2xhdXNlcywKKwkJCQkJCQkJCQkJCSAg IE5JTCwKKwkJCQkJCQkJCQkJCSAgIGROdW1QYXJ0aWFsR3JvdXBzKSk7CisJCQkJfQogCQkJ fQogCQl9CiAKQEAgLTY3MDUsNiArNjc4Nyw4IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5n X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkgKiBXZSBjYW4gYWxzbyBza2lwIHRoZSBl bnRpcmUgbG9vcCB3aGVuIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZS1pdGVtCiAJCSAqIGdyb3Vw X3BhdGhrZXlzIGJlY2F1c2UgdGhlbiB3ZSBjYW4ndCBwb3NzaWJseSBoYXZlIGEgcHJlc29y dGVkCiAJCSAqIHByZWZpeCBvZiB0aGUgbGlzdCB3aXRob3V0IGhhdmluZyB0aGUgbGlzdCBi ZSBmdWxseSBzb3J0ZWQuCisJCSAqCisJCSAqIFhYWCBTaG91bGRuJ3QgdGhpcyBhbHNvIGNv bnNpZGVyIHRoZSBncm91cC1rZXktcmVvcmRlcmluZz8KIAkJICovCiAJCWlmIChlbmFibGVf aW5jcmVtZW50YWxfc29ydCAmJiBsaXN0X2xlbmd0aChyb290LT5ncm91cF9wYXRoa2V5cykg PiAxKQogCQl7CkBAIC02NzYzLDI0ICs2ODQ3LDEwMCBAQCBjcmVhdGVfcGFydGlhbF9ncm91 cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJLyogU2ltaWxhciB0byBhYm92ZSBs b2dpYywgYnV0IGZvciBwYXJ0aWFsIHBhdGhzLiAqLwogCQlmb3JlYWNoKGxjLCBpbnB1dF9y ZWwtPnBhcnRpYWxfcGF0aGxpc3QpCiAJCXsKKwkJCUxpc3RDZWxsICAgKmxjMjsKIAkJCVBh dGgJICAgKnBhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwogCQkJUGF0aAkgICAqcGF0aF9v cmlnaW5hbCA9IHBhdGg7Ci0JCQlib29sCQlpc19zb3J0ZWQ7Ci0JCQlpbnQJCQlwcmVzb3J0 ZWRfa2V5czsKIAotCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291bnRfY29udGFpbmVkX2lu KHJvb3QtPmdyb3VwX3BhdGhrZXlzLAotCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLAot CQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CisJCQlMaXN0CSAgICpwYXRoa2V5X29y ZGVyaW5ncyA9IE5JTDsKKworCQkJTGlzdAkgICAqZ3JvdXBfcGF0aGtleXMgPSByb290LT5n cm91cF9wYXRoa2V5czsKKwkJCUxpc3QJICAgKmdyb3VwX2NsYXVzZXMgPSBwYXJzZS0+Z3Jv dXBDbGF1c2U7CiAKLQkJCWlmIChwYXRoID09IGNoZWFwZXN0X3BhcnRpYWxfcGF0aCB8fCBp c19zb3J0ZWQpCisJCQkvKiBnZW5lcmF0ZSBhbHRlcm5hdGl2ZSBncm91cCBvcmRlcmluZ3Mg dGhhdCBtaWdodCBiZSB1c2VmdWwgKi8KKwkJCXBhdGhrZXlfb3JkZXJpbmdzID0gZ2V0X3Vz ZWZ1bF9ncm91cF9rZXlzX29yZGVyaW5ncyhyb290LAorCQkJCQkJCQkJCQkJCQkJCXBhdGgt PnJvd3MsCisJCQkJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJ CQkJZ3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJZ3JvdXBfY2xhdXNlcyk7CisK KwkJCUFzc2VydChsaXN0X2xlbmd0aChwYXRoa2V5X29yZGVyaW5ncykgPiAwKTsKKworCQkJ LyogcHJvY2VzcyBhbGwgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZ3JvdXBpbmcgcmVvcmRl cmluZ3MgKi8KKwkJCWZvcmVhY2ggKGxjMiwgcGF0aGtleV9vcmRlcmluZ3MpCiAJCQl7Ci0J CQkJLyogU29ydCB0aGUgY2hlYXBlc3QgcGFydGlhbCBwYXRoLCBpZiBpdCBpc24ndCBhbHJl YWR5ICovCi0JCQkJaWYgKCFpc19zb3J0ZWQpCi0JCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVh dGVfc29ydF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3Jl bCwKLQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0 aGtleXMsCi0JCQkJCQkJCQkJCQkJIC0xLjApOworCQkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJ CQlpbnQJCQlwcmVzb3J0ZWRfa2V5cyA9IDA7CisJCQkJUGF0aEtleUluZm8gKmluZm8gPSAo UGF0aEtleUluZm8gKikgbGZpcnN0KGxjMik7CisKKwkJCQkvKiByZXN0b3JlIHRoZSBwYXRo ICh3ZSByZXBsYWNlIGl0IGluIHRoZSBsb29wKSAqLworCQkJCXBhdGggPSBwYXRoX29yaWdp bmFsOworCisJCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291bnRfY29udGFpbmVkX2luKGlu Zm8tPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJ CQkJCQkJJnByZXNvcnRlZF9rZXlzKTsKKworCQkJCWlmIChwYXRoID09IGNoZWFwZXN0X3Bh cnRpYWxfcGF0aCB8fCBpc19zb3J0ZWQpCisJCQkJeworCisJCQkJCS8qIFNvcnQgdGhlIGNo ZWFwZXN0IHBhcnRpYWwgcGF0aCwgaWYgaXQgaXNuJ3QgYWxyZWFkeSAqLworCQkJCQlpZiAo IWlzX3NvcnRlZCkKKwkJCQkJeworCQkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9zb3J0 X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJCSBpbmZvLT5wYXRoa2V5cywKKwkJ CQkJCQkJCQkJCQkJIC0xLjApOworCQkJCQl9CisKKwkJCQkJaWYgKHBhcnNlLT5oYXNBZ2dz KQorCQkJCQkJYWRkX3BhcnRpYWxfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRo ICopCisJCQkJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkg cGFydGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJ CQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0LAorCQkJCQkJCQkJCQkJ CQkgaW5mby0+Y2xhdXNlcyA/IEFHR19TT1JURUQgOiBBR0dfUExBSU4sCisJCQkJCQkJCQkJ CQkJCSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJCQkJIGluZm8tPmNs YXVzZXMsCisJCQkJCQkJCQkJCQkJCSBOSUwsCisJCQkJCQkJCQkJCQkJCSBhZ2dfcGFydGlh bF9jb3N0cywKKwkJCQkJCQkJCQkJCQkJIGROdW1QYXJ0aWFsUGFydGlhbEdyb3VwcykpOwor CQkJCQllbHNlCisJCQkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3Jl bCwgKFBhdGggKikKKwkJCQkJCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKKwkJCQkJ CQkJCQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkgICBw YXRoLAorCQkJCQkJCQkJCQkJCQkgICBpbmZvLT5jbGF1c2VzLAorCQkJCQkJCQkJCQkJCQkg ICBOSUwsCisJCQkJCQkJCQkJCQkJCSAgIGROdW1QYXJ0aWFsUGFydGlhbEdyb3VwcykpOwor CQkJCX0KKworCQkJCS8qCisJCQkJICogTm93IHdlIG1heSBjb25zaWRlciBpbmNyZW1lbnRh bCBzb3J0IG9uIHRoaXMgcGF0aCwgYnV0IG9ubHkKKwkJCQkgKiB3aGVuIHRoZSBwYXRoIGlz IG5vdCBhbHJlYWR5IHNvcnRlZCBhbmQgd2hlbiBpbmNyZW1lbnRhbCBzb3J0CisJCQkJICog aXMgZW5hYmxlZC4KKwkJCQkgKi8KKwkJCQlpZiAoaXNfc29ydGVkIHx8ICFlbmFibGVfaW5j cmVtZW50YWxfc29ydCkKKwkJCQkJY29udGludWU7CisKKwkJCQkvKiBSZXN0b3JlIHRoZSBp bnB1dCBwYXRoICh3ZSBtaWdodCBoYXZlIGFkZGVkIFNvcnQgb24gdG9wKS4gKi8KKwkJCQlw YXRoID0gcGF0aF9vcmlnaW5hbDsKKworCQkJCS8qIG5vIHNoYXJlZCBwcmVmaXgsIG5vdCBw b2ludCBpbiBidWlsZGluZyBpbmNyZW1lbnRhbCBzb3J0ICovCisJCQkJaWYgKHByZXNvcnRl ZF9rZXlzID09IDApCisJCQkJCWNvbnRpbnVlOworCisJCQkJLyoKKwkJCQkgKiBXZSBzaG91 bGQgaGF2ZSBhbHJlYWR5IGV4Y2x1ZGVkIHBhdGhrZXlzIG9mIGxlbmd0aCAxIGJlY2F1c2UK KwkJCQkgKiB0aGVuIHByZXNvcnRlZF9rZXlzID4gMCB3b3VsZCBpbXBseSBpc19zb3J0ZWQg d2FzIHRydWUuCisJCQkJICovCisJCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHJvb3QtPmdyb3Vw X3BhdGhrZXlzKSAhPSAxKTsKKworCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVt ZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJCQkgaW5mby0+ cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkgcHJlc29ydGVkX2tleXMsCisJCQkJCQkJCQkJ CQkJCQkgLTEuMCk7CiAKIAkJCQlpZiAocGFyc2UtPmhhc0FnZ3MpCiAJCQkJCWFkZF9wYXJ0 aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQpAQCAtNjc4OCw5ICs2 OTQ4LDkgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsCiAJCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJ CQkgcGF0aCwKIAkJCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWx0YXJn ZXQsCi0JCQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSA/IEFHR19TT1JURUQgOiBB R0dfUExBSU4sCisJCQkJCQkJCQkJCQkJIGluZm8tPmNsYXVzZXMgPyBBR0dfU09SVEVEIDog QUdHX1BMQUlOLAogCQkJCQkJCQkJCQkJCSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKLQkJ CQkJCQkJCQkJCQkgcGFyc2UtPmdyb3VwQ2xhdXNlLAorCQkJCQkJCQkJCQkJCSBpbmZvLT5j bGF1c2VzLAogCQkJCQkJCQkJCQkJCSBOSUwsCiAJCQkJCQkJCQkJCQkJIGFnZ19wYXJ0aWFs X2Nvc3RzLAogCQkJCQkJCQkJCQkJCSBkTnVtUGFydGlhbFBhcnRpYWxHcm91cHMpKTsKQEAg LTY3OTksNTkgKzY5NTksMTAgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKIAkJ CQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJCQkJICAg cGF0aCwKLQkJCQkJCQkJCQkJCQkgICBwYXJzZS0+Z3JvdXBDbGF1c2UsCisJCQkJCQkJCQkJ CQkJICAgaW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCQkgICBOSUwsCiAJCQkJCQkJCQkJ CQkJICAgZE51bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7CiAJCQl9Ci0KLQkJCS8qCi0JCQkg KiBOb3cgd2UgbWF5IGNvbnNpZGVyIGluY3JlbWVudGFsIHNvcnQgb24gdGhpcyBwYXRoLCBi dXQgb25seQotCQkJICogd2hlbiB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBzb3J0ZWQgYW5k IHdoZW4gaW5jcmVtZW50YWwgc29ydAotCQkJICogaXMgZW5hYmxlZC4KLQkJCSAqLwotCQkJ aWYgKGlzX3NvcnRlZCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCi0JCQkJY29udGlu dWU7Ci0KLQkJCS8qIFJlc3RvcmUgdGhlIGlucHV0IHBhdGggKHdlIG1pZ2h0IGhhdmUgYWRk ZWQgU29ydCBvbiB0b3ApLiAqLwotCQkJcGF0aCA9IHBhdGhfb3JpZ2luYWw7Ci0KLQkJCS8q IG5vIHNoYXJlZCBwcmVmaXgsIG5vdCBwb2ludCBpbiBidWlsZGluZyBpbmNyZW1lbnRhbCBz b3J0ICovCi0JCQlpZiAocHJlc29ydGVkX2tleXMgPT0gMCkKLQkJCQljb250aW51ZTsKLQot CQkJLyoKLQkJCSAqIFdlIHNob3VsZCBoYXZlIGFscmVhZHkgZXhjbHVkZWQgcGF0aGtleXMg b2YgbGVuZ3RoIDEgYmVjYXVzZQotCQkJICogdGhlbiBwcmVzb3J0ZWRfa2V5cyA+IDAgd291 bGQgaW1wbHkgaXNfc29ydGVkIHdhcyB0cnVlLgotCQkJICovCi0JCQlBc3NlcnQobGlzdF9s ZW5ndGgocm9vdC0+Z3JvdXBfcGF0aGtleXMpICE9IDEpOwotCi0JCQlwYXRoID0gKFBhdGgg KikgY3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAotCQkJCQkJCQkJCQkJCQkg cGFydGlhbGx5X2dyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJ CQkJCQkJIHJvb3QtPmdyb3VwX3BhdGhrZXlzLAotCQkJCQkJCQkJCQkJCQkgcHJlc29ydGVk X2tleXMsCi0JCQkJCQkJCQkJCQkJCSAtMS4wKTsKLQotCQkJaWYgKHBhcnNlLT5oYXNBZ2dz KQotCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAq KQotCQkJCQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCQkgcGFydGlh bGx5X2dyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkJIHBhdGgsCi0JCQkJCQkJCQkJCQkgcGFy dGlhbGx5X2dyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCi0JCQkJCQkJCQkJCQkgcGFyc2UtPmdy b3VwQ2xhdXNlID8gQUdHX1NPUlRFRCA6IEFHR19QTEFJTiwKLQkJCQkJCQkJCQkJCSBBR0dT UExJVF9JTklUSUFMX1NFUklBTCwKLQkJCQkJCQkJCQkJCSBwYXJzZS0+Z3JvdXBDbGF1c2Us Ci0JCQkJCQkJCQkJCQkgTklMLAotCQkJCQkJCQkJCQkJIGFnZ19wYXJ0aWFsX2Nvc3RzLAot CQkJCQkJCQkJCQkJIGROdW1QYXJ0aWFsUGFydGlhbEdyb3VwcykpOwotCQkJZWxzZQotCQkJ CWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQotCQkJ CQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxs eV9ncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJCSAgIHBhdGgsCi0JCQkJCQkJCQkJCQkgICBw YXJzZS0+Z3JvdXBDbGF1c2UsCi0JCQkJCQkJCQkJCQkgICBOSUwsCi0JCQkJCQkJCQkJCQkg ICBkTnVtUGFydGlhbFBhcnRpYWxHcm91cHMpKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggOTlkZjc2YjZiNzEuLjE2NzBlNTQ2NDQw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKQEAgLTEzNDIsNyAr MTM0Miw3IEBAIGNyZWF0ZV9hcHBlbmRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAkJcGF0 aG5vZGUtPnBhdGgucGF0aGtleXMgPSBjaGlsZC0+cGF0aGtleXM7CiAJfQogCWVsc2UKLQkJ Y29zdF9hcHBlbmQocGF0aG5vZGUpOworCQljb3N0X2FwcGVuZChwYXRobm9kZSwgcm9vdCk7 CiAKIAkvKiBJZiB0aGUgY2FsbGVyIHByb3ZpZGVkIGEgcm93IGVzdGltYXRlLCBvdmVycmlk ZSB0aGUgY29tcHV0ZWQgdmFsdWUuICovCiAJaWYgKHJvd3MgPj0gMCkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3NlbGZ1bmNzLmMKaW5kZXggMWZiYjBiMjhjM2IuLjM2YzMwM2U0NWM1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtMzI5NCw3ICszMjk0LDEwIEBAIGFkZF91bmlx dWVfZ3JvdXBfdmFyKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICp2YXJpbmZvcywKIH0KIAog LyoKLSAqIGVzdGltYXRlX251bV9ncm91cHMJCS0gRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vw cyBpbiBhIGdyb3VwZWQgcXVlcnkKKyAqIGVzdGltYXRlX251bV9ncm91cHMvZXN0aW1hdGVf bnVtX2dyb3Vwc19pbmNyZW1lbnRhbAorICoJCS0gRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vw cyBpbiBhIGdyb3VwZWQgcXVlcnkuCisgKgkJICBfaW5jcmVtZW50YWwgdmFyaWFudCBpcyBw ZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZm9yCisgKgkJICBjYXNlIG9mIGFkZGluZyBvbmUt Ynktb25lIGNvbHVtbgogICoKICAqIEdpdmVuIGEgcXVlcnkgaGF2aW5nIGEgR1JPVVAgQlkg Y2xhdXNlLCBlc3RpbWF0ZSBob3cgbWFueSBncm91cHMgdGhlcmUKICAqIHdpbGwgYmUgLS0t IGllLCB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBvZiB0aGUgR1JPVVAg QlkKQEAgLTMzNjgsMTEgKzMzNzEsMjIgQEAgZG91YmxlCiBlc3RpbWF0ZV9udW1fZ3JvdXBz KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpncm91cEV4cHJzLCBkb3VibGUgaW5wdXRfcm93 cywKIAkJCQkJTGlzdCAqKnBnc2V0LCBFc3RpbWF0aW9uSW5mbyAqZXN0aW5mbykKIHsKLQlM aXN0CSAgICp2YXJpbmZvcyA9IE5JTDsKKwlyZXR1cm4gZXN0aW1hdGVfbnVtX2dyb3Vwc19p bmNyZW1lbnRhbChyb290LCBncm91cEV4cHJzLAorCQkJCQkJCQkJCSAgIGlucHV0X3Jvd3Ms IHBnc2V0LCBlc3RpbmZvLAorCQkJCQkJCQkJCSAgIE5VTEwsIDApOworfQorCitkb3VibGUK K2VzdGltYXRlX251bV9ncm91cHNfaW5jcmVtZW50YWwoUGxhbm5lckluZm8gKnJvb3QsIExp c3QgKmdyb3VwRXhwcnMsCisJCQkJCWRvdWJsZSBpbnB1dF9yb3dzLAorCQkJCQlMaXN0ICoq cGdzZXQsIEVzdGltYXRpb25JbmZvICplc3RpbmZvLAorCQkJCQlMaXN0ICoqY2FjaGVfdmFy aW5mb3MsIGludCBwcmV2TkV4cHJzKQoreworCUxpc3QJICAgKnZhcmluZm9zID0gKGNhY2hl X3ZhcmluZm9zKSA/ICpjYWNoZV92YXJpbmZvcyA6IE5JTDsKIAlkb3VibGUJCXNyZl9tdWx0 aXBsaWVyID0gMS4wOwogCWRvdWJsZQkJbnVtZGlzdGluY3Q7CiAJTGlzdENlbGwgICAqbDsK LQlpbnQJCQlpOworCWludAkJCWksIGo7CiAKIAkvKiBaZXJvIHRoZSBlc3RpbmZvIG91dHB1 dCBwYXJhbWV0ZXIsIGlmIG5vbi1OVUxMICovCiAJaWYgKGVzdGluZm8gIT0gTlVMTCkKQEAg LTM0MDMsNyArMzQxNyw3IEBAIGVzdGltYXRlX251bV9ncm91cHMoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKmdyb3VwRXhwcnMsIGRvdWJsZSBpbnB1dF9yb3dzLAogCSAqLwogCW51bWRp c3RpbmN0ID0gMS4wOwogCi0JaSA9IDA7CisJaSA9IGogPSAwOwogCWZvcmVhY2gobCwgZ3Jv dXBFeHBycykKIAl7CiAJCU5vZGUJICAgKmdyb3VwZXhwciA9IChOb2RlICopIGxmaXJzdChs KTsKQEAgLTM0MTIsNiArMzQyNiwxNCBAQCBlc3RpbWF0ZV9udW1fZ3JvdXBzKFBsYW5uZXJJ bmZvICpyb290LCBMaXN0ICpncm91cEV4cHJzLCBkb3VibGUgaW5wdXRfcm93cywKIAkJTGlz dAkgICAqdmFyc2hlcmU7CiAJCUxpc3RDZWxsICAgKmwyOwogCisJCS8qIHdhcyBkb25lIG9u IHByZXZpb3VzIGNhbGwgKi8KKwkJaWYgKGNhY2hlX3ZhcmluZm9zICYmIGorKyA8IHByZXZO RXhwcnMpCisJCXsKKwkJCWlmIChwZ3NldCkKKwkJCQlpKys7IC8qIHRvIGtlZXAgaW4gc3lu YyB3aXRoIGxpbmVzIGJlbG93ICovCisJCQljb250aW51ZTsKKwkJfQorCiAJCS8qIGlzIGV4 cHJlc3Npb24gaW4gdGhpcyBncm91cGluZyBzZXQ/ICovCiAJCWlmIChwZ3NldCAmJiAhbGlz dF9tZW1iZXJfaW50KCpwZ3NldCwgaSsrKSkKIAkJCWNvbnRpbnVlOwpAQCAtMzQ4MSw3ICsz NTAzLDExIEBAIGVzdGltYXRlX251bV9ncm91cHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3Qg Kmdyb3VwRXhwcnMsIGRvdWJsZSBpbnB1dF9yb3dzLAogCQlpZiAodmFyc2hlcmUgPT0gTklM KQogCQl7CiAJCQlpZiAoY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoZ3JvdXBleHByKSkK KwkJCXsKKwkJCQlpZiAoY2FjaGVfdmFyaW5mb3MpCisJCQkJCSpjYWNoZV92YXJpbmZvcyA9 IHZhcmluZm9zOwogCQkJCXJldHVybiBpbnB1dF9yb3dzOworCQkJfQogCQkJY29udGludWU7 CiAJCX0KIApAQCAtMzQ5OCw2ICszNTI0LDkgQEAgZXN0aW1hdGVfbnVtX2dyb3VwcyhQbGFu bmVySW5mbyAqcm9vdCwgTGlzdCAqZ3JvdXBFeHBycywgZG91YmxlIGlucHV0X3Jvd3MsCiAJ CX0KIAl9CiAKKwlpZiAoY2FjaGVfdmFyaW5mb3MpCisJCSpjYWNoZV92YXJpbmZvcyA9IHZh cmluZm9zOworCiAJLyoKIAkgKiBJZiBub3cgbm8gVmFycywgd2UgbXVzdCBoYXZlIGFuIGFs bC1jb25zdGFudCBvciBhbGwtYm9vbGVhbiBHUk9VUCBCWQogCSAqIGxpc3QuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYwppbmRleCBlYjNhMDNiOTc2Mi4uMzFmMzQ3ZDQ2OWQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYwpAQCAtMjE0MCw2ICsyMTQwLDM4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmln X2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwK IAorLyoqKioqKioqKioqKioqKioqKioqKioqKjxERUJVRyBPUFQgR1JPVVAgQlk+KioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCXsKKwkJeyJkZWJ1Z19ncm91cF9ieV9y ZW9yZGVyX2J5X3BhdGhrZXlzIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0Qs CisJCQlnZXR0ZXh0X25vb3AoImVuYWJsZSByZW9yZGVyIEdST1VQIEJZIGJ5IHBhdGhrZXlz IiksCisJCQlOVUxMLAorCQkJR1VDX05PVF9JTl9TQU1QTEUKKwkJfSwKKwkJJmRlYnVnX2dy b3VwX2J5X3Jlb3JkZXJfYnlfcGF0aGtleXMsCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5V TEwKKwl9LAorCXsKKwkJeyJkZWJ1Z19lbmFibGVfZ3JvdXBfYnlfbWF0Y2hfb3JkZXJfYnki LCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKKwkJCWdldHRleHRfbm9vcCgi ZW5hYmxlIG1hdGNoaW5nIEdST1VQIEJZIGJ5IE9SREVSIEJZLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZkZWJ1Z19ncm91cF9ieV9tYXRjaF9vcmRl cl9ieSwKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisJeworCQl7ImRlYnVn X2VuYWJsZV9jaGVhcGVzdF9ncm91cF9ieSIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdf TUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJmaW5kIGEgY2hlYXBlc3Qgb3JkZXIgb2YgY29s dW1ucyBpbiBHUk9VUCBCWS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfTk9UX0lOX1NBTVBMRQor CQl9LAorCQkmZGVidWdfY2hlYXBlc3RfZ3JvdXBfYnksCisJCXRydWUsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAorLyoqKioqKioqKioqKioqKioqKioqKioqKjwvREVCVUcgT1BUIEdS T1VQIEJZPioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCS8qIEVuZC1vZi1s aXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCBm YWxzZSwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggZThmMzAzNjdhNDgu LmU3NGE3YzcyZWE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTI3MSw2ICsyNzEsNyBAQCB0eXBl ZGVmIGVudW0gTm9kZVRhZwogCVRfRXF1aXZhbGVuY2VDbGFzcywKIAlUX0VxdWl2YWxlbmNl TWVtYmVyLAogCVRfUGF0aEtleSwKKwlUX1BhdGhLZXlJbmZvLAogCVRfUGF0aFRhcmdldCwK IAlUX1Jlc3RyaWN0SW5mbywKIAlUX0luZGV4Q2xhdXNlLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aAppbmRleCAzNjUwMDBiZGNkYi4uNmNiY2I2N2JkZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCkBAIC0xMDcwLDYgKzEwNzAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGF0aEtleQogCWJv b2wJCXBrX251bGxzX2ZpcnN0OyAvKiBkbyBOVUxMcyBjb21lIGJlZm9yZSBub3JtYWwgdmFs dWVzPyAqLwogfSBQYXRoS2V5OwogCisvKgorICogQ29tYmluZXMgaW5mb3JtYXRpb24gYWJv dXQgcGF0aGtleXMgYW5kIHRoZSBhc3NvY2lhdGVkIGNsYXVzZXMuCisgKi8KK3R5cGVkZWYg c3RydWN0IFBhdGhLZXlJbmZvCit7CisJTm9kZVRhZwkJdHlwZTsKKwlMaXN0CSAgICpwYXRo a2V5czsKKwlMaXN0CSAgICpjbGF1c2VzOworfSBQYXRoS2V5SW5mbzsKKwogLyoKICAqIFZv bGF0aWxlRnVuY3Rpb25TdGF0dXMgLS0gYWxsb3dzIG5vZGVzIHRvIGNhY2hlIHRoZWlyCiAg KiBjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucyBwcm9wZXJ0aWVzLiBWT0xBVElMSVRZX1VO S05PV04gbWVhbnMgbm90IHlldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L2Nvc3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKaW5kZXggYmMxMjA3MWFm NmUuLmRjN2ZjMTc0MTE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29z dC5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKQEAgLTExNCw3ICsxMTQs OSBAQCBleHRlcm4gdm9pZCBjb3N0X2luY3JlbWVudGFsX3NvcnQoUGF0aCAqcGF0aCwKIAkJ CQkJCQkJICBDb3N0IGlucHV0X3N0YXJ0dXBfY29zdCwgQ29zdCBpbnB1dF90b3RhbF9jb3N0 LAogCQkJCQkJCQkgIGRvdWJsZSBpbnB1dF90dXBsZXMsIGludCB3aWR0aCwgQ29zdCBjb21w YXJpc29uX2Nvc3QsIGludCBzb3J0X21lbSwKIAkJCQkJCQkJICBkb3VibGUgbGltaXRfdHVw bGVzKTsKLWV4dGVybiB2b2lkIGNvc3RfYXBwZW5kKEFwcGVuZFBhdGggKnBhdGgpOworZXh0 ZXJuIENvc3QgY29zdF9zb3J0X2VzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpw YXRoa2V5cywKKwkJCQkJCQkgICBpbnQgblByZXNvcnRlZEtleXMsIGRvdWJsZSB0dXBsZXMp OworZXh0ZXJuIHZvaWQgY29zdF9hcHBlbmQoQXBwZW5kUGF0aCAqcGF0aCwgUGxhbm5lcklu Zm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgY29zdF9tZXJnZV9hcHBlbmQoUGF0aCAqcGF0aCwg UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJICBMaXN0ICpwYXRoa2V5cywgaW50IG5fc3Ry ZWFtcywKIAkJCQkJCQkgIENvc3QgaW5wdXRfc3RhcnR1cF9jb3N0LCBDb3N0IGlucHV0X3Rv dGFsX2Nvc3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDBjM2EwYjkwYzg1Li41MjVi NTk0Y2JkMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTIwMyw2ICsyMDMsMTcgQEAg dHlwZWRlZiBlbnVtCiBleHRlcm4gUGF0aEtleXNDb21wYXJpc29uIGNvbXBhcmVfcGF0aGtl eXMoTGlzdCAqa2V5czEsIExpc3QgKmtleXMyKTsKIGV4dGVybiBib29sIHBhdGhrZXlzX2Nv bnRhaW5lZF9pbihMaXN0ICprZXlzMSwgTGlzdCAqa2V5czIpOwogZXh0ZXJuIGJvb2wgcGF0 aGtleXNfY291bnRfY29udGFpbmVkX2luKExpc3QgKmtleXMxLCBMaXN0ICprZXlzMiwgaW50 ICpuX2NvbW1vbik7CitleHRlcm4gaW50IGdyb3VwX2tleXNfcmVvcmRlcl9ieV9wYXRoa2V5 cyhMaXN0ICpwYXRoa2V5cywKKwkJCQkJCQkJCQkgIExpc3QgKipncm91cF9wYXRoa2V5cywK KwkJCQkJCQkJCQkgIExpc3QgKipncm91cF9jbGF1c2VzKTsKKy8qKioqKioqKioqKioqKioq KioqKioqKio8REVCVUcgT1BUIEdST1VQIEJZPioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KK2V4dGVybiBib29sIGRlYnVnX2dyb3VwX2J5X3Jlb3JkZXJfYnlfcGF0aGtl eXM7CitleHRlcm4gYm9vbCBkZWJ1Z19ncm91cF9ieV9tYXRjaF9vcmRlcl9ieTsKK2V4dGVy biBib29sIGRlYnVnX2NoZWFwZXN0X2dyb3VwX2J5OworLyoqKioqKioqKioqKioqKioqKioq KioqKjwvREVCVUcgT1BUIEdST1VQIEJZPioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworZXh0ZXJuIExpc3QgKmdldF91c2VmdWxfZ3JvdXBfa2V5c19vcmRlcmluZ3MoUGxh bm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKKwkJCQkJCQkJCQkJIExpc3QgKnBhdGhf cGF0aGtleXMsCisJCQkJCQkJCQkJCSBMaXN0ICpwYXRoa2V5cywgTGlzdCAqY2xhdXNlcyk7 CiBleHRlcm4gUGF0aCAqZ2V0X2NoZWFwZXN0X3BhdGhfZm9yX3BhdGhrZXlzKExpc3QgKnBh dGhzLCBMaXN0ICpwYXRoa2V5cywKIAkJCQkJCQkJCQkJUmVsaWRzIHJlcXVpcmVkX291dGVy LAogCQkJCQkJCQkJCQlDb3N0U2VsZWN0b3IgY29zdF9jcml0ZXJpb24sCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc2Vs ZnVuY3MuaAppbmRleCA4ZjNkNzNlZGZiMi4uYzMxM2EwOGQ1NDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc2Vs ZnVuY3MuaApAQCAtMjE0LDYgKzIxNCwxMSBAQCBleHRlcm4gZG91YmxlIGVzdGltYXRlX251 bV9ncm91cHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmdyb3VwRXhwcnMsCiAJCQkJCQkJ CSAgZG91YmxlIGlucHV0X3Jvd3MsIExpc3QgKipwZ3NldCwKIAkJCQkJCQkJICBFc3RpbWF0 aW9uSW5mbyAqZXN0aW5mbyk7CiAKK2V4dGVybiBkb3VibGUgZXN0aW1hdGVfbnVtX2dyb3Vw c19pbmNyZW1lbnRhbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZ3JvdXBFeHBycywKKwkJ CQkJZG91YmxlIGlucHV0X3Jvd3MsIExpc3QgKipwZ3NldCwKKwkJCQkJRXN0aW1hdGlvbklu Zm8gKmVzdGluZm8sCisJCQkJCUxpc3QgKipjYWNoZV92YXJpbmZvcywgaW50IHByZXZORXhw cnMpOworCiBleHRlcm4gdm9pZCBlc3RpbWF0ZV9oYXNoX2J1Y2tldF9zdGF0cyhQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCSAgIE5vZGUgKmhhc2hrZXksIGRvdWJsZSBuYnVja2V0 cywKIAkJCQkJCQkJCSAgIFNlbGVjdGl2aXR5ICptY3ZfZnJlcSwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CmluZGV4IDBhMjNhMzlhYTI5Li42MDEwNDdm YTNkZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CkBA IC0xMjEwLDcgKzEyMTAsOCBAQCBleHBsYWluIChjb3N0cyBvZmYpCiAgIHNlbGVjdCBkaXN0 aW5jdCBtaW4oZjEpLCBtYXgoZjEpIGZyb20gbWlubWF4dGVzdDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gVW5pcXVlCisgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiAk MCwgJDEKICAgIEluaXRQbGFuIDEgKHJldHVybnMgJDApCiAgICAgIC0+ICBMaW1pdAogICAg ICAgICAgICAtPiAgTWVyZ2UgQXBwZW5kCkBAIC0xMjMzLDEwICsxMjM0LDggQEAgZXhwbGFp biAoY29zdHMgb2ZmKQogICAgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVz aW5nIG1pbm1heHRlc3QyaSBvbiBtaW5tYXh0ZXN0MiBtaW5tYXh0ZXN0XzgKICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGYxIElTIE5PVCBOVUxMKQogICAgICAgICAg ICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIG1pbm1heHRlc3Qz aSBvbiBtaW5tYXh0ZXN0MyBtaW5tYXh0ZXN0XzkKLSAgIC0+ICBTb3J0Ci0gICAgICAgICBT b3J0IEtleTogKCQwKSwgKCQxKQotICAgICAgICAgLT4gIFJlc3VsdAotKDI2IHJvd3MpCisg ICAtPiAgUmVzdWx0CisoMjUgcm93cykKIAogc2VsZWN0IGRpc3RpbmN0IG1pbihmMSksIG1h eChmMSkgZnJvbSBtaW5tYXh0ZXN0OwogIG1pbiB8IG1heCAKQEAgLTI0NDgsNiArMjQ0Nywy NDEgQEAgU0VMRUNUIGJhbGsoaHVuZHJlZCkgRlJPTSB0ZW5rMTsKICgxIHJvdykKIAogUk9M TEJBQ0s7CistLSBHUk9VUCBCWSBvcHRpbWl6YXRpb24gYnkgcmVvcmRlciBjb2x1bW5zCitT RUxFQ1QKKwlpIEFTIGlkLAorCWkvMiBBUyBwLAorCWZvcm1hdCgnJTYwcycsIGklMikgQVMg diwKKwlpLzQgQVMgYywKKwlpLzggQVMgZCwKKwkocmFuZG9tKCkgKiAoMTAwMDAvOCkpOjpp bnQgYXMgZSAtLXRoZSBzYW1lIGFzIGQgYnV0IG5vIGNvcnJlbGF0aW9uIHdpdGggcAorCUlO VE8gYnRnCitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBpOworVkFDVVVNIGJ0 ZzsKK0FOQUxZWkUgYnRnOworLS0gR1JPVVAgQlkgb3B0aW1pemF0aW9uIGJ5IHJlb3JkZXIg Y29sdW1ucyBieSBmcmVxdWVuY3kKK1NFVCBlbmFibGVfaGFzaGFnZz1vZmY7CitTRVQgbWF4 X3BhcmFsbGVsX3dvcmtlcnM9IDA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDA7CitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBi dGcgR1JPVVAgQlkgcCwgdjsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBL ZXk6IHAsIHYKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcCwgdgorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZworKDUgcm93cykKKworRVhQTEFJTiAoQ09TVFMgb2Zm KQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHA7CisgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBH cm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBwLCB2CisgICAtPiAgU29ydAorICAgICAg ICAgU29ydCBLZXk6IHAsIHYKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBidGcKKyg1IHJv d3MpCisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBH Uk9VUCBCWSB2LCBwLCBjOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtl eTogcCwgYywgdgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBwLCBjLCB2Cisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisoNSByb3dzKQorCitFWFBMQUlOIChDT1NU UyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgYyBPUkRF UiBCWSB2LCBwLCBjOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTog diwgcCwgYworICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiB2LCBwLCBjCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisoNSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBv ZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgZCwgYzsKKyAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogcCwgZCwgYywgdgorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBwLCBkLCBjLCB2CisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gYnRnCisoNSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxF Q1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgZCwgYyBPUkRFUiBCWSB2LCBw LCBkICxjOworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiB2LCBw LCBkLCBjCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHYsIHAsIGQsIGMKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBidGcKKyg1IHJvd3MpCisKK0VYUExBSU4gKENPU1RT IG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwLCBkLCBjIE9S REVSIEJZIHAsIHYsIGQgLGM7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91 cCBLZXk6IHAsIHYsIGQsIGMKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcCwg diwgZCwgYworICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZworKDUgcm93cykKKworRVhQ TEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHAs IGQsIGU7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBwLCBkLCBl CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHAsIGQsIGUKKyAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBidGcKKyg1IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBlLCBkOworICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3Jv dXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogcCwgZSwgZAorICAgLT4gIFNvcnQKKyAgICAg ICAgIFNvcnQgS2V5OiBwLCBlLCBkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCiso NSByb3dzKQorCitDUkVBVEUgU1RBVElTVElDUyBidGdfZGVwIE9OIGQsIGUsIHAgRlJPTSBi dGc7CitBTkFMWVpFIGJ0ZzsKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBkLCBlOworICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUK KyAgIEdyb3VwIEtleTogcCwgZCwgZQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBwLCBkLCBlCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisoNSByb3dzKQorCitF WFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkg cCwgZSwgZDsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBLZXk6IHAsIGUs IGQKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcCwgZSwgZAorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGJ0ZworKDUgcm93cykKKworLS0gR1JPVVAgQlkgb3B0aW1pemF0 aW9uIGJ5IHJlb3JkZXIgY29sdW1ucyBieSBpbmRleCBzY2FuCitDUkVBVEUgSU5ERVggT04g YnRnKHAsIHYpOworU0VUIGVuYWJsZV9zZXFzY2FuPW9mZjsKK1NFVCBlbmFibGVfYml0bWFw c2Nhbj1vZmY7CitWQUNVVU0gYnRnOworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNv dW50KCopIEZST00gYnRnIEdST1VQIEJZIHAsIHY7CisgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBLZXk6 IHAsIHYKKyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgYnRnX3Bfdl9pZHggb24gYnRn CisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJP TSBidGcgR1JPVVAgQlkgcCwgdiBPUkRFUiBCWSBwLCB2OworICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAg S2V5OiBwLCB2CisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGJ0Z19wX3ZfaWR4IG9u IGJ0ZworKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCop IEZST00gYnRnIEdST1VQIEJZIHYsIHA7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBLZXk6IHAsIHYK KyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgYnRnX3Bfdl9pZHggb24gYnRnCisoMyBy b3dzKQorCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcg R1JPVVAgQlkgdiwgcCBPUkRFUiBCWSBwLCB2OworICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiBw LCB2CisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGJ0Z19wX3ZfaWR4IG9uIGJ0Zwor KDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00g YnRnIEdST1VQIEJZIHYsIHAsIGM7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogcCwgYywg dgorICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBwLCBjLCB2 CisgICAgICAgICBQcmVzb3J0ZWQgS2V5OiBwCisgICAgICAgICAtPiAgSW5kZXggU2NhbiB1 c2luZyBidGdfcF92X2lkeCBvbiBidGcKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIG9m ZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwLCBjIE9SREVSIEJZ IHAsIHY7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgR3JvdXBBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogcCwgdiwgYworICAgLT4gIEluY3Jl bWVudGFsIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBwLCB2LCBjCisgICAgICAgICBQcmVz b3J0ZWQgS2V5OiBwLCB2CisgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBidGdfcF92 X2lkeCBvbiBidGcKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBjLCBwLCBkOworICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBH cm91cCBLZXk6IHAsIGMsIGQsIHYKKyAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAg ICBTb3J0IEtleTogcCwgYywgZCwgdgorICAgICAgICAgUHJlc29ydGVkIEtleTogcAorICAg ICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYnRnX3Bfdl9pZHggb24gYnRnCisoNiByb3dz KQorCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JP VVAgQlkgdiwgYywgcCwgZCBPUkRFUiBCWSBwLCB2OworICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBHcm91cCBL ZXk6IHAsIHYsIGMsIGQKKyAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAgICBTb3J0 IEtleTogcCwgdiwgYywgZAorICAgICAgICAgUHJlc29ydGVkIEtleTogcCwgdgorICAgICAg ICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYnRnX3Bfdl9pZHggb24gYnRnCisoNiByb3dzKQor CitEUk9QIFRBQkxFIGJ0ZzsKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworUkVTRVQgbWF4X3Bh cmFsbGVsX3dvcmtlcnM7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy OworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKIC0t IFNlY29uZGx5IHRlc3QgdGhlIGNhc2Ugb2YgYSBwYXJhbGxlbCBhZ2dyZWdhdGUgY29tYmlu ZXIgZnVuY3Rpb24KIC0tIHJldHVybmluZyBOVUxMLiBGb3IgdGhhdCB1c2Ugbm9ybWFsIHRy YW5zaXRpb24gZnVuY3Rpb24sIGJ1dCBhCiAtLSBjb21iaW5lciBmdW5jdGlvbiByZXR1cm5p bmcgTlVMTC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAppbmRleCAzZGU2NDA0YmE1 Yi4uOThhMTZjMTE4ZjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z3VjLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTg1 OCwxMCArODU4LDEzIEBAIFNFTEVDVCBuYW1lIEZST00gdGFiX3NldHRpbmdzX2ZsYWdzCiBT RUxFQ1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICBXSEVSRSBjYXRlZ29yeSB+ ICdeUXVlcnkgVHVuaW5nJyBBTkQgTk9UIGV4cGxhaW4KICAgT1JERVIgQlkgMTsKLSAgICAg ICAgICAgbmFtZSAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBkZWJ1Z19lbmFibGVfY2hlYXBlc3RfZ3JvdXBf YnkKKyBkZWJ1Z19lbmFibGVfZ3JvdXBfYnlfbWF0Y2hfb3JkZXJfYnkKKyBkZWJ1Z19ncm91 cF9ieV9yZW9yZGVyX2J5X3BhdGhrZXlzCiAgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldAot KDEgcm93KQorKDQgcm93cykKIAogLS0gUnVudGltZS1jb21wdXRlZCBHVUNzIHNob3VsZCBi ZSBwYXJ0IG9mIHRoZSBwcmVzZXQgY2F0ZWdvcnkuCiBTRUxFQ1QgbmFtZSBGUk9NIHRhYl9z ZXR0aW5nc19mbGFncwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9p bmNyZW1lbnRhbF9zb3J0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVt ZW50YWxfc29ydC5vdXQKaW5kZXggNTQ1ZTMwMWU0ODIuLjIxYzQyOTIyNmY3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luY3JlbWVudGFsX3NvcnQub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50YWxfc29ydC5vdXQKQEAg LTE0MzksNyArMTQzOSw3IEBAIHNldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKIHNldCBw YXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKIHNldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyID0gMjsKIGNyZWF0ZSB0YWJsZSB0IChhIGludCwgYiBpbnQsIGMgaW50KTsKLWlu c2VydCBpbnRvIHQgc2VsZWN0IG1vZChpLDEwKSxtb2QoaSwxMCksaSBmcm9tIGdlbmVyYXRl X3NlcmllcygxLDEwMDAwKSBzKGkpOworaW5zZXJ0IGludG8gdCBzZWxlY3QgbW9kKGksMTAp LG1vZChpLDEwKSxpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNjAwMDApIHMoaSk7CiBjcmVh dGUgaW5kZXggb24gdCAoYSk7CiBhbmFseXplIHQ7CiBzZXQgZW5hYmxlX2luY3JlbWVudGFs X3NvcnQgPSBvZmY7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCAxOWNh ZWJhYmQwMS4uYmYxYTJkYjJjZjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dApAQCAtMTk4NCw4ICsxOTg0LDggQEAgVVNJTkcgKG5hbWUpOwogLS0tLS0tKy0tLS0rLS0t LQogIGJiICAgfCAxMiB8IDEzCiAgY2MgICB8IDIyIHwgMjMKLSBkZCAgIHwgICAgfCAzMwog IGVlICAgfCA0MiB8ICAgCisgZGQgICB8ICAgIHwgMzMKICg0IHJvd3MpCiAKIC0tIENhc2Vz IHdpdGggbm9uLW51bGxhYmxlIGV4cHJlc3Npb25zIGluIHN1YnF1ZXJ5IHJlc3VsdHM7CkBA IC0yMDE5LDggKzIwMTksOCBAQCBOQVRVUkFMIEZVTEwgSk9JTgogLS0tLS0tKy0tLS0tLSst LS0tLS0rLS0tLS0tKy0tLS0tLQogIGJiICAgfCAgIDEyIHwgICAgMiB8ICAgMTMgfCAgICAz CiAgY2MgICB8ICAgMjIgfCAgICAyIHwgICAyMyB8ICAgIDMKLSBkZCAgIHwgICAgICB8ICAg ICAgfCAgIDMzIHwgICAgMwogIGVlICAgfCAgIDQyIHwgICAgMiB8ICAgICAgfCAgICAgCisg ZGQgICB8ICAgICAgfCAgICAgIHwgICAzMyB8ICAgIDMKICg0IHJvd3MpCiAKIFNFTEVDVCAq IEZST00KQEAgLTQ2MTgsMTggKzQ2MTgsMjAgQEAgc2VsZWN0IGQuKiBmcm9tIGQgbGVmdCBq b2luIChzZWxlY3QgKiBmcm9tIGIgZ3JvdXAgYnkgYi5pZCwgYi5jX2lkKSBzCiBleHBsYWlu IChjb3N0cyBvZmYpCiBzZWxlY3QgZC4qIGZyb20gZCBsZWZ0IGpvaW4gKHNlbGVjdCBkaXN0 aW5jdCAqIGZyb20gYikgcwogICBvbiBkLmEgPSBzLmlkOwotICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gTWVyZ2UgUmlnaHQgSm9pbgotICAgTWVyZ2UgQ29uZDogKGIuaWQgPSBkLmEp Ci0gICAtPiAgVW5pcXVlCi0gICAgICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgU29y dCBLZXk6IGIuaWQsIGIuY19pZAotICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGIK KyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgTGVmdCBK b2luCisgICBNZXJnZSBDb25kOiAoZC5hID0gcy5pZCkKICAgIC0+ICBTb3J0CiAgICAgICAg ICBTb3J0IEtleTogZC5hCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZAotKDkgcm93cykK KyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcy5pZAorICAgICAgICAgLT4gIFN1 YnF1ZXJ5IFNjYW4gb24gcworICAgICAgICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogYi5pZCwgYi5jX2lkCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYgorKDExIHJvd3MpCiAKIC0tIGNoZWNrIGpv aW4gcmVtb3ZhbCB3b3JrcyB3aGVuIHVuaXF1ZW5lc3Mgb2YgdGhlIGpvaW4gY29uZGl0aW9u IGlzIGVuZm9yY2VkCiAtLSBieSBhIFVOSU9OCkBAIC02MzM2LDQ0ICs2MzM4LDM5IEBAIHNl bGVjdCAqIGZyb20gajEgbmF0dXJhbCBqb2luIGoyOwogZXhwbGFpbiAodmVyYm9zZSwgY29z dHMgb2ZmKQogc2VsZWN0ICogZnJvbSBqMQogaW5uZXIgam9pbiAoc2VsZWN0IGRpc3RpbmN0 IGlkIGZyb20gajMpIGozIG9uIGoxLmlkID0gajMuaWQ7Ci0gICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIE5lc3RlZCBMb29wCiAgICBPdXRw dXQ6IGoxLmlkLCBqMy5pZAogICAgSW5uZXIgVW5pcXVlOiB0cnVlCiAgICBKb2luIEZpbHRl cjogKGoxLmlkID0gajMuaWQpCi0gICAtPiAgVW5pcXVlCisgICAtPiAgSGFzaEFnZ3JlZ2F0 ZQogICAgICAgICAgT3V0cHV0OiBqMy5pZAotICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAg IEdyb3VwIEtleTogajMuaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuajMK ICAgICAgICAgICAgICAgIE91dHB1dDogajMuaWQKLSAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBqMy5pZAotICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5qMwotICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiBqMy5pZAogICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5qMQogICAgICAgICAgT3V0cHV0OiBqMS5pZAotKDEzIHJvd3MpCisoMTEgcm93cykK IAogLS0gZW5zdXJlIGdyb3VwIGJ5IGNsYXVzZSBhbGxvd3MgdGhlIGlubmVyIHRvIGJlY29t ZSB1bmlxdWUKIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20g ajEKIGlubmVyIGpvaW4gKHNlbGVjdCBpZCBmcm9tIGozIGdyb3VwIGJ5IGlkKSBqMyBvbiBq MS5pZCA9IGozLmlkOwotICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgT3V0cHV0OiBqMS5pZCwgajMuaWQKICAg IElubmVyIFVuaXF1ZTogdHJ1ZQogICAgSm9pbiBGaWx0ZXI6IChqMS5pZCA9IGozLmlkKQot ICAgLT4gIEdyb3VwCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgT3V0cHV0OiBq My5pZAogICAgICAgICAgR3JvdXAgS2V5OiBqMy5pZAotICAgICAgICAgLT4gIFNvcnQKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuajMKICAgICAgICAgICAgICAgIE91dHB1 dDogajMuaWQKLSAgICAgICAgICAgICAgIFNvcnQgS2V5OiBqMy5pZAotICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5qMwotICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBqMy5pZAogICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5qMQogICAgICAgICAgT3V0 cHV0OiBqMS5pZAotKDE0IHJvd3MpCisoMTEgcm93cykKIAogZHJvcCB0YWJsZSBqMTsKIGRy b3AgdGFibGUgajI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9hZ2dyZWdhdGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fYWdncmVnYXRlLm91dAppbmRleCBkZmE0YjAzNmI1Mi4uYTA4YTM4MjVmZjYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0 ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVn YXRlLm91dApAQCAtOTUyLDMyICs5NTIsMzAgQEAgU0VMRUNUIGEsIHN1bShiKSwgYXJyYXlf YWdnKGRpc3RpbmN0IGMpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiX21sIEdST1VQIEJZIGEg SEEKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU29ydAogICAgU29ydCBL ZXk6IHBhZ2dfdGFiX21sLmEsIChzdW0ocGFnZ190YWJfbWwuYikpLCAoYXJyYXlfYWdnKERJ U1RJTkNUIHBhZ2dfdGFiX21sLmMpKQotICAgLT4gIEdhdGhlcgotICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCi0gICAgICAgICAtPiAgUGFyYWxsZWwgQXBwZW5kCi0gICAgICAgICAg ICAgICAtPiAgR3JvdXBBZ2dyZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogcGFnZ190YWJfbWwuYQotICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHBh Z2dfdGFiX21sLmIpIDwgJzMnOjpudW1lcmljKQotICAgICAgICAgICAgICAgICAgICAgLT4g IFNvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9t bC5hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190 YWJfbWxfcDEgcGFnZ190YWJfbWwKLSAgICAgICAgICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0 ZQotICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9tbF81LmEKLSAg ICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbF81LmIpIDwgJzMn OjpudW1lcmljKQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF81LmEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wM19zMSBwYWdnX3RhYl9tbF81 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWJfbWxfcDNfczIgcGFnZ190YWJfbWxfNgotICAgICAgICAgICAgICAgLT4gIEdyb3Vw QWdncmVnYXRlCi0gICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21s XzIuYQotICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiX21sXzIu YikgPCAnMyc6Om51bWVyaWMpCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sXzIuYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AyX3MxIHBhZ2df dGFiX21sXzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwYWdnX3RhYl9tbF9wMl9zMiBwYWdnX3RhYl9tbF8zCi0oMjcgcm93cykKKyAgIC0+ ICBBcHBlbmQKKyAgICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg R3JvdXAgS2V5OiBwYWdnX3RhYl9tbC5hCisgICAgICAgICAgICAgICBGaWx0ZXI6IChhdmco cGFnZ190YWJfbWwuYikgPCAnMyc6Om51bWVyaWMpCisgICAgICAgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sLmEKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wMSBwYWdnX3Rh Yl9tbAorICAgICAgICAgLT4gIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHBhZ2dfdGFiX21sXzIuYQorICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHBh Z2dfdGFiX21sXzIuYikgPCAnMyc6Om51bWVyaWMpCisgICAgICAgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sXzIuYQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AyX3MxIHBhZ2dfdGFiX21sXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9w Ml9zMiBwYWdnX3RhYl9tbF8zCisgICAgICAgICAtPiAgR3JvdXBBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfbWxfNS5hCisgICAgICAgICAgICAgICBG aWx0ZXI6IChhdmcocGFnZ190YWJfbWxfNS5iKSA8ICczJzo6bnVtZXJpYykKKyAgICAgICAg ICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcGFnZ190 YWJfbWxfNS5hCisgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDNfczEgcGFn Z190YWJfbWxfNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHBhZ2dfdGFiX21sX3AzX3MyIHBhZ2dfdGFiX21sXzYKKygyNSByb3dzKQogCiBTRUxFQ1Qg YSwgc3VtKGIpLCBhcnJheV9hZ2coZGlzdGluY3QgYyksIGNvdW50KCopIEZST00gcGFnZ190 YWJfbWwgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMyBPUkRFUiBCWSAxLCAyLCAzOwog IGEgIHwgc3VtICB8ICBhcnJheV9hZ2cgIHwgY291bnQgCkBAIC05OTYsMzQgKzk5NCwzMiBA QCBTRUxFQ1QgYSwgc3VtKGIpLCBhcnJheV9hZ2coZGlzdGluY3QgYyksIGNvdW50KCopIEZS T00gcGFnZ190YWJfbWwgR1JPVVAgQlkgYSBIQQogLS0gV2l0aG91dCBPUkRFUiBCWSBjbGF1 c2UsIHRvIHRlc3QgR2F0aGVyIGF0IHRvcC1tb3N0IHBhdGgKIEVYUExBSU4gKENPU1RTIE9G RikKIFNFTEVDVCBhLCBzdW0oYiksIGFycmF5X2FnZyhkaXN0aW5jdCBjKSwgY291bnQoKikg RlJPTSBwYWdnX3RhYl9tbCBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAzOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBHYXRoZXIKLSAgIFdv cmtlcnMgUGxhbm5lZDogMgotICAgLT4gIFBhcmFsbGVsIEFwcGVuZAotICAgICAgICAgLT4g IEdyb3VwQWdncmVnYXRlCi0gICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21s LmEKLSAgICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbC5iKSA8ICczJzo6 bnVtZXJpYykKLSAgICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogcGFnZ190YWJfbWwuYQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AxIHBhZ2dfdGFiX21sCi0gICAgICAgICAtPiAgR3Jv dXBBZ2dyZWdhdGUKLSAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfbWxfNS5h Ci0gICAgICAgICAgICAgICBGaWx0ZXI6IChhdmcocGFnZ190YWJfbWxfNS5iKSA8ICczJzo6 bnVtZXJpYykKLSAgICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogcGFnZ190YWJfbWxfNS5hCi0gICAgICAgICAgICAgICAgICAgICAtPiAg QXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWJfbWxfcDNfczEgcGFnZ190YWJfbWxfNQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AzX3MyIHBhZ2dfdGFiX21sXzYKLSAg ICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQotICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBw YWdnX3RhYl9tbF8yLmEKLSAgICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9t bF8yLmIpIDwgJzMnOjpudW1lcmljKQotICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAg ICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF8yLmEKLSAgICAgICAgICAg ICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wMl9zMSBwYWdnX3RhYl9tbF8yCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDJfczIgcGFn Z190YWJfbWxfMwotKDI1IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFwcGVuZAorICAgLT4gIEdyb3VwQWdncmVnYXRlCisgICAgICAgICBHcm91cCBLZXk6 IHBhZ2dfdGFiX21sLmEKKyAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbC5iKSA8 ICczJzo6bnVtZXJpYykKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0 IEtleTogcGFnZ190YWJfbWwuYQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiX21sX3AxIHBhZ2dfdGFiX21sCisgICAtPiAgR3JvdXBBZ2dyZWdhdGUKKyAgICAg ICAgIEdyb3VwIEtleTogcGFnZ190YWJfbWxfMi5hCisgICAgICAgICBGaWx0ZXI6IChhdmco cGFnZ190YWJfbWxfMi5iKSA8ICczJzo6bnVtZXJpYykKKyAgICAgICAgIC0+ICBTb3J0Cisg ICAgICAgICAgICAgICBTb3J0IEtleTogcGFnZ190YWJfbWxfMi5hCisgICAgICAgICAgICAg ICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWJfbWxfcDJfczEgcGFnZ190YWJfbWxfMgorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AyX3MyIHBhZ2dfdGFiX21sXzMKKyAgIC0+ICBH cm91cEFnZ3JlZ2F0ZQorICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9tbF81LmEKKyAg ICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbF81LmIpIDwgJzMnOjpudW1lcmljKQor ICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9t bF81LmEKKyAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wM19zMSBwYWdnX3RhYl9tbF81CisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDNfczIgcGFn Z190YWJfbWxfNgorKDIzIHJvd3MpCiAKIC0tIEZ1bGwgYWdncmVnYXRpb24gYXQgbGV2ZWwg MSBhcyBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlcyB3aXRoIFBBUlRJVElPTiBLRVkKIC0tIGZv ciBsZXZlbCAxIG9ubHkuIEZvciBzdWJwYXJ0aXRpb25zLCBHUk9VUCBCWSBjbGF1c2UgZG9l cyBub3QgbWF0Y2ggd2l0aApAQCAtMTM3OSwyOCArMTM3NSwyNiBAQCBTRUxFQ1QgeCwgc3Vt KHkpLCBhdmcoeSksIGNvdW50KCopIEZST00gcGFnZ190YWJfcGFyYSBHUk9VUCBCWSB4IEhB VklORyBhdmcoeSkgPAogLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7 IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4K IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB5LCBzdW0oeCksIGF2Zyh4KSwgY291bnQo KikgRlJPTSBwYWdnX3RhYl9wYXJhIEdST1VQIEJZIHkgSEFWSU5HIGF2Zyh4KSA8IDEyIE9S REVSIEJZIDEsIDIsIDM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg U29ydAogICAgU29ydCBLZXk6IHBhZ2dfdGFiX3BhcmEueSwgKHN1bShwYWdnX3RhYl9wYXJh LngpKSwgKGF2ZyhwYWdnX3RhYl9wYXJhLngpKQotICAgLT4gIEZpbmFsaXplIEdyb3VwQWdn cmVnYXRlCisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgR3JvdXAg S2V5OiBwYWdnX3RhYl9wYXJhLnkKICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9w YXJhLngpIDwgJzEyJzo6bnVtZXJpYykKLSAgICAgICAgIC0+ICBHYXRoZXIgTWVyZ2UKKyAg ICAgICAgIC0+ICBHYXRoZXIKICAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgot ICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBwYWdnX3RhYl9wYXJhLnkKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBB cHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFn Z190YWJfcGFyYS55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgU2VxIFNjYW4gb24gcGFnZ190YWJfcGFyYV9wMSBwYWdnX3RhYl9wYXJhCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX3BhcmFf MS55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2Vx IFNjYW4gb24gcGFnZ190YWJfcGFyYV9wMiBwYWdnX3RhYl9wYXJhXzEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfcGFyYV8yLnkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBv biBwYWdnX3RhYl9wYXJhX3AzIHBhZ2dfdGFiX3BhcmFfMgotKDE5IHJvd3MpCisgICAgICAg ICAgICAgICAtPiAgUGFyYWxsZWwgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHBhZ2dfdGFiX3BhcmEueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX3BhcmFfcDEgcGFnZ190YWJfcGFyYQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9wYXJhXzEueQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHBhZ2df dGFiX3BhcmFfcDIgcGFnZ190YWJfcGFyYV8xCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHBhZ2dfdGFiX3BhcmFfMi55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gcGFnZ190YWJfcGFyYV9wMyBwYWdnX3RhYl9wYXJh XzIKKygxNyByb3dzKQogCiBTRUxFQ1QgeSwgc3VtKHgpLCBhdmcoeCksIGNvdW50KCopIEZS T00gcGFnZ190YWJfcGFyYSBHUk9VUCBCWSB5IEhBVklORyBhdmcoeCkgPCAxMiBPUkRFUiBC WSAxLCAyLCAzOwogIHkgIHwgIHN1bSAgfCAgICAgICAgIGF2ZyAgICAgICAgIHwgY291bnQg CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2lu Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0Cmlu ZGV4IGJiNWI3YzQ3YTQ1Li4wMzkyNmE4NDEzOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKQEAgLTQ2Niw1MiArNDY2LDQxIEBAIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBhLCBiIEZST00gcHJ0MSBGVUxMIEpPSU4gcHJ0 MiBwMihiLGEsYykgVVNJTkcoYSxiKQogICBXSEVSRSBhIEJFVFdFRU4gNDkwIEFORCA1MTAK ICAgR1JPVVAgQlkgMSwgMiBPUkRFUiBCWSAxLCAyOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBHcm91 cAogICAgR3JvdXAgS2V5OiAoQ09BTEVTQ0UocHJ0MS5hLCBwMi5hKSksIChDT0FMRVNDRShw cnQxLmIsIHAyLmIpKQotICAgLT4gIE1lcmdlIEFwcGVuZAorICAgLT4gIFNvcnQKICAgICAg ICAgIFNvcnQgS2V5OiAoQ09BTEVTQ0UocHJ0MS5hLCBwMi5hKSksIChDT0FMRVNDRShwcnQx LmIsIHAyLmIpKQotICAgICAgICAgLT4gIEdyb3VwCi0gICAgICAgICAgICAgICBHcm91cCBL ZXk6IChDT0FMRVNDRShwcnQxLmEsIHAyLmEpKSwgKENPQUxFU0NFKHBydDEuYiwgcDIuYikp Ci0gICAgICAgICAgICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IChDT0FMRVNDRShwcnQxLmEsIHAyLmEpKSwgKENPQUxFU0NFKHBydDEuYiwgcDIuYikp Ci0gICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgRnVsbCBKb2luCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBNZXJnZSBDb25kOiAoKHBydDEuYSA9IHAyLmEpIEFORCAocHJ0 MS5iID0gcDIuYikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoQ09B TEVTQ0UocHJ0MS5hLCBwMi5hKSA+PSA0OTApIEFORCAoQ09BTEVTQ0UocHJ0MS5hLCBwMi5h KSA8PSA1MTApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwcnQxLmEsIHBydDEuYgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFf cDEgcHJ0MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwMi5hLCBwMi5iCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMSBwMgot ICAgICAgICAgLT4gIEdyb3VwCi0gICAgICAgICAgICAgICBHcm91cCBLZXk6IChDT0FMRVND RShwcnQxXzEuYSwgcDJfMS5hKSksIChDT0FMRVNDRShwcnQxXzEuYiwgcDJfMS5iKSkKLSAg ICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTog KENPQUxFU0NFKHBydDFfMS5hLCBwMl8xLmEpKSwgKENPQUxFU0NFKHBydDFfMS5iLCBwMl8x LmIpKQotICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEZ1bGwgSm9pbgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKChwcnQxXzEuYSA9IHAyXzEuYSkg QU5EIChwcnQxXzEuYiA9IHAyXzEuYikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBG aWx0ZXI6ICgoQ09BTEVTQ0UocHJ0MV8xLmEsIHAyXzEuYSkgPj0gNDkwKSBBTkQgKENPQUxF U0NFKHBydDFfMS5hLCBwMl8xLmEpIDw9IDUxMCkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IHBydDFfMS5hLCBwcnQxXzEuYgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDIgcHJ0MV8xCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29y dCBLZXk6IHAyXzEuYSwgcDJfMS5iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMiBwMl8xCi0gICAgICAgICAtPiAgR3JvdXAKLSAg ICAgICAgICAgICAgIEdyb3VwIEtleTogKENPQUxFU0NFKHBydDFfMi5hLCBwMl8yLmEpKSwg KENPQUxFU0NFKHBydDFfMi5iLCBwMl8yLmIpKQotICAgICAgICAgICAgICAgLT4gIFNvcnQK LSAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiAoQ09BTEVTQ0UocHJ0MV8yLmEsIHAy XzIuYSkpLCAoQ09BTEVTQ0UocHJ0MV8yLmIsIHAyXzIuYikpCi0gICAgICAgICAgICAgICAg ICAgICAtPiAgTWVyZ2UgRnVsbCBKb2luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBN ZXJnZSBDb25kOiAoKHBydDFfMi5hID0gcDJfMi5hKSBBTkQgKHBydDFfMi5iID0gcDJfMi5i KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKChDT0FMRVNDRShwcnQx XzIuYSwgcDJfMi5hKSA+PSA0OTApIEFORCAoQ09BTEVTQ0UocHJ0MV8yLmEsIHAyXzIuYSkg PD0gNTEwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcHJ0MV8yLmEsIHBydDFfMi5i Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0 MV9wMyBwcnQxXzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcDJfMi5hLCBwMl8yLmIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQy X3AzIHAyXzIKLSg0MyByb3dzKQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAg ICAgLT4gIE1lcmdlIEZ1bGwgSm9pbgorICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29u ZDogKChwcnQxXzEuYSA9IHAyXzEuYSkgQU5EIChwcnQxXzEuYiA9IHAyXzEuYikpCisgICAg ICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoQ09BTEVTQ0UocHJ0MV8xLmEsIHAyXzEuYSkg Pj0gNDkwKSBBTkQgKENPQUxFU0NFKHBydDFfMS5hLCBwMl8xLmEpIDw9IDUxMCkpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAg U29ydCBLZXk6IHBydDFfMS5hLCBwcnQxXzEuYgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDEgcHJ0MV8xCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHAyXzEu YSwgcDJfMS5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHJ0Ml9wMSBwMl8xCisgICAgICAgICAgICAgICAtPiAgTWVyZ2UgRnVsbCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBNZXJnZSBDb25kOiAoKHBydDFfMi5hID0gcDJfMi5hKSBBTkQg KHBydDFfMi5iID0gcDJfMi5iKSkKKyAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKChD T0FMRVNDRShwcnQxXzIuYSwgcDJfMi5hKSA+PSA0OTApIEFORCAoQ09BTEVTQ0UocHJ0MV8y LmEsIHAyXzIuYSkgPD0gNTEwKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcHJ0MV8yLmEsIHBydDFfMi5i CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0MV9wMiBw cnQxXzIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogcDJfMi5hLCBwMl8yLmIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AyIHAyXzIKKyAgICAgICAgICAgICAg IC0+ICBNZXJnZSBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6 ICgocHJ0MV8zLmIgPSBwMl8zLmIpIEFORCAocHJ0MV8zLmEgPSBwMl8zLmEpKQorICAgICAg ICAgICAgICAgICAgICAgRmlsdGVyOiAoKENPQUxFU0NFKHBydDFfMy5hLCBwMl8zLmEpID49 IDQ5MCkgQU5EIChDT0FMRVNDRShwcnQxXzMuYSwgcDJfMy5hKSA8PSA1MTApKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNv cnQgS2V5OiBwcnQxXzMuYiwgcHJ0MV8zLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwcnQxX3AzIHBydDFfMworICAgICAgICAgICAgICAgICAgICAg LT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwMl8zLmIs IHAyXzMuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBy dDJfcDMgcDJfMworKDMyIHJvd3MpCiAKIFNFTEVDVCBhLCBiIEZST00gcHJ0MSBGVUxMIEpP SU4gcHJ0MiBwMihiLGEsYykgVVNJTkcoYSxiKQogICBXSEVSRSBhIEJFVFdFRU4gNDkwIEFO RCA1MTAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdW5pb24ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91bmlvbi5vdXQKaW5kZXggZGVjZTczMTBj ZmUuLjdhYzRhOTM4MGUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3VuaW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dApA QCAtMTMwMywyNCArMTMwMywyMiBAQCBzZWxlY3QgZGlzdGluY3QgcTEgZnJvbQogICAgdW5p b24gYWxsCiAgICBzZWxlY3QgZGlzdGluY3QgKiBmcm9tIGludDhfdGJsIGk4Mikgc3MKIHdo ZXJlIHEyID0gcTI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gVW5pcXVlCi0gICAtPiAgTWVyZ2UgQXBwZW5k Ci0gICAgICAgICBTb3J0IEtleTogIipTRUxFQ1QqIDEiLnExCisgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQor ICAgR3JvdXAgS2V5OiAiKlNFTEVDVCogMSIucTEKKyAgIC0+ICBBcHBlbmQKICAgICAgICAg IC0+ICBTdWJxdWVyeSBTY2FuIG9uICIqU0VMRUNUKiAxIgotICAgICAgICAgICAgICAgLT4g IFVuaXF1ZQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNvcnQgS2V5OiBpODEucTEsIGk4MS5xMgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4MQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAocTIgSVMgTk9UIE5VTEwpCisgICAgICAg ICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiBpODEucTEsIGk4MS5xMgorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGludDhfdGJsIGk4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAo cTIgSVMgTk9UIE5VTEwpCiAgICAgICAgICAtPiAgU3VicXVlcnkgU2NhbiBvbiAiKlNFTEVD VCogMiIKLSAgICAgICAgICAgICAgIC0+ICBVbmlxdWUKLSAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogaTgyLnEx LCBpODIucTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBp bnQ4X3RibCBpODIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjog KHEyIElTIE5PVCBOVUxMKQotKDE1IHJvd3MpCisgICAgICAgICAgICAgICAtPiAgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBpODIucTEsIGk4Mi5x MgorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4Mgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAocTIgSVMgTk9UIE5VTEwpCiso MTMgcm93cykKIAogc2VsZWN0IGRpc3RpbmN0IHExIGZyb20KICAgKHNlbGVjdCBkaXN0aW5j dCAqIGZyb20gaW50OF90YmwgaTgxCkBAIC0xMzM5LDI0ICsxMzM3LDIyIEBAIHNlbGVjdCBk aXN0aW5jdCBxMSBmcm9tCiAgICB1bmlvbiBhbGwKICAgIHNlbGVjdCBkaXN0aW5jdCAqIGZy b20gaW50OF90YmwgaTgyKSBzcwogd2hlcmUgLXExID0gcTI7Ci0gICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBVbmlxdWUK LSAgIC0+ICBNZXJnZSBBcHBlbmQKLSAgICAgICAgIFNvcnQgS2V5OiAiKlNFTEVDVCogMSIu cTEKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogIipTRUxFQ1QqIDEiLnExCisgICAtPiAg QXBwZW5kCiAgICAgICAgICAtPiAgU3VicXVlcnkgU2NhbiBvbiAiKlNFTEVDVCogMSIKLSAg ICAgICAgICAgICAgIC0+ICBVbmlxdWUKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogaTgxLnExLCBpODEucTIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBp ODEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKCgtIHExKSA9 IHEyKQorICAgICAgICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogaTgxLnExLCBpODEucTIKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpODEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZpbHRlcjogKCgtIHExKSA9IHEyKQogICAgICAgICAgLT4gIFN1YnF1ZXJ5IFNjYW4g b24gIipTRUxFQ1QqIDIiCi0gICAgICAgICAgICAgICAtPiAgVW5pcXVlCi0gICAgICAgICAg ICAgICAgICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IGk4Mi5xMSwgaTgyLnEyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gaW50OF90YmwgaTgyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoLSBxMSkgPSBxMikKLSgxNSByb3dzKQorICAgICAgICAgICAgICAgLT4g IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogaTgyLnEx LCBpODIucTIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3Ri bCBpODIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKCgtIHExKSA9IHEy KQorKDEzIHJvd3MpCiAKIHNlbGVjdCBkaXN0aW5jdCBxMSBmcm9tCiAgIChzZWxlY3QgZGlz dGluY3QgKiBmcm9tIGludDhfdGJsIGk4MQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvYWdncmVnYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVz LnNxbAppbmRleCAyZjVkMGUwMGYzZC4uYzZlMGQ3YmEyYjcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2FnZ3JlZ2F0ZXMuc3FsCkBAIC0xMDI1LDYgKzEwMjUsMTA1IEBAIFNFTEVDVCBiYWxr KGh1bmRyZWQpIEZST00gdGVuazE7CiAKIFJPTExCQUNLOwogCistLSBHUk9VUCBCWSBvcHRp bWl6YXRpb24gYnkgcmVvcmRlciBjb2x1bW5zCisKK1NFTEVDVAorCWkgQVMgaWQsCisJaS8y IEFTIHAsCisJZm9ybWF0KCclNjBzJywgaSUyKSBBUyB2LAorCWkvNCBBUyBjLAorCWkvOCBB UyBkLAorCShyYW5kb20oKSAqICgxMDAwMC84KSk6OmludCBhcyBlIC0tdGhlIHNhbWUgYXMg ZCBidXQgbm8gY29ycmVsYXRpb24gd2l0aCBwCisJSU5UTyBidGcKK0ZST00KKwlnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMDApIGk7CisKK1ZBQ1VVTSBidGc7CitBTkFMWVpFIGJ0ZzsKKwor LS0gR1JPVVAgQlkgb3B0aW1pemF0aW9uIGJ5IHJlb3JkZXIgY29sdW1ucyBieSBmcmVxdWVu Y3kKKworU0VUIGVuYWJsZV9oYXNoYWdnPW9mZjsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vy cz0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKworRVhQ TEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHAs IHY7CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBH Uk9VUCBCWSB2LCBwOworCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikg RlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgYzsKKworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VM RUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHAsIGMgT1JERVIgQlkgdiwgcCwg YzsKKworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdS T1VQIEJZIHYsIHAsIGQsIGM7CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwLCBkLCBjIE9SREVSIEJZIHYsIHAsIGQgLGM7 CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9V UCBCWSB2LCBwLCBkLCBjIE9SREVSIEJZIHAsIHYsIGQgLGM7CisKK0VYUExBSU4gKENPU1RT IG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBkLCBlOworCitF WFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkg cCwgZSwgZDsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgYnRnX2RlcCBPTiBkLCBlLCBwIEZST00g YnRnOworQU5BTFlaRSBidGc7CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBkLCBlOworCitFWFBMQUlOIChDT1NUUyBvZmYp CitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgcCwgZSwgZDsKKworCistLSBH Uk9VUCBCWSBvcHRpbWl6YXRpb24gYnkgcmVvcmRlciBjb2x1bW5zIGJ5IGluZGV4IHNjYW4K KworQ1JFQVRFIElOREVYIE9OIGJ0ZyhwLCB2KTsKK1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7 CitTRVQgZW5hYmxlX2JpdG1hcHNjYW49b2ZmOworVkFDVVVNIGJ0ZzsKKworRVhQTEFJTiAo Q09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHAsIHY7CisK K0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBC WSBwLCB2IE9SREVSIEJZIHAsIHY7CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwOworCitFWFBMQUlOIChDT1NUUyBvZmYp CitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCBPUkRFUiBCWSBwLCB2 OworCitFWFBMQUlOIChDT1NUUyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JP VVAgQlkgdiwgcCwgYzsKKworRVhQTEFJTiAoQ09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCop IEZST00gYnRnIEdST1VQIEJZIHYsIHAsIGMgT1JERVIgQlkgcCwgdjsKKworRVhQTEFJTiAo Q09TVFMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIGMsIHAs IGQ7CisKK0VYUExBSU4gKENPU1RTIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBH Uk9VUCBCWSB2LCBjLCBwLCBkIE9SREVSIEJZIHAsIHY7CisKK0RST1AgVEFCTEUgYnRnOwor CitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzOwor UkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CisKKwogLS0gU2Vjb25kbHkgdGVz dCB0aGUgY2FzZSBvZiBhIHBhcmFsbGVsIGFnZ3JlZ2F0ZSBjb21iaW5lciBmdW5jdGlvbgog LS0gcmV0dXJuaW5nIE5VTEwuIEZvciB0aGF0IHVzZSBub3JtYWwgdHJhbnNpdGlvbiBmdW5j dGlvbiwgYnV0IGEKIC0tIGNvbWJpbmVyIGZ1bmN0aW9uIHJldHVybmluZyBOVUxMLgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5jcmVtZW50YWxfc29ydC5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbmNyZW1lbnRhbF9zb3J0LnNxbAppbmRleCBkODc2OGE2 YjU0ZC4uMWRlMTYzZTAzOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu Y3JlbWVudGFsX3NvcnQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luY3JlbWVu dGFsX3NvcnQuc3FsCkBAIC0yMTMsNyArMjEzLDcgQEAgc2V0IHBhcmFsbGVsX3R1cGxlX2Nv c3QgPSAwOwogc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOwogCiBj cmVhdGUgdGFibGUgdCAoYSBpbnQsIGIgaW50LCBjIGludCk7Ci1pbnNlcnQgaW50byB0IHNl bGVjdCBtb2QoaSwxMCksbW9kKGksMTApLGkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAw MCkgcyhpKTsKK2luc2VydCBpbnRvIHQgc2VsZWN0IG1vZChpLDEwKSxtb2QoaSwxMCksaSBm cm9tIGdlbmVyYXRlX3NlcmllcygxLDYwMDAwKSBzKGkpOwogY3JlYXRlIGluZGV4IG9uIHQg KGEpOwogYW5hbHl6ZSB0OwogCi0tIAoyLjM0LjEKCg== --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0002-fixup-rework-GUC-options-20220328.patch" Content-Disposition: attachment; filename="0002-fixup-rework-GUC-options-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSAwM2UyMWZmNWM3ZjZhMGM0ZTJkNDNhMGJlNjQ3ZjBjZDc1YTA0Nzg2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyOCBNYXIgMjAyMiAxNzoxNDo1NCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi83XSBmaXh1cDogcmV3b3JrIEdVQyBvcHRpb25zCgpSZXBsYWNlIHRo ZSB0aHJlZSBHVUMgZGVidWcgb3B0aW9ucyB3aXRoIGEgc2luZ2xlIEdVQyB0aGF0IGp1c3Qg ZGlzYWJsZXMKdGhlIG9wdGltaXphdGlvbiBhbmQgcmV2ZXJ0cyBiYWNrIHRvIHRoZSBvcmRl ciBzcGVjaWZpZWQgaW4gdGhlIHF1ZXJ5LgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL3BhdGhrZXlzLmMgIHwgMjQgKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jICAgICAgICAgICB8IDQyICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICB8ICA2ICstLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCAgICAgIHwgIDkgKystLS0tCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCB8ICAzICstCiA1IGZpbGVzIGNo YW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jCmluZGV4IGYxOGQ0YzhlNGU3Li5mY2M5OWYwZmIx YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jCkBAIC0zMSw2ICsz MSw4IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv c2VsZnVuY3MuaCIKIAorLyogQ29uc2lkZXIgcmVvcmRlcmluZyBvZiBHUk9VUCBCWSBrZXlz PyAqLworYm9vbCBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyA9IHRydWU7CiAKIHN0YXRp YyBib29sIHBhdGhrZXlfaXNfcmVkdW5kYW50KFBhdGhLZXkgKm5ld19wYXRoa2V5LCBMaXN0 ICpwYXRoa2V5cyk7CiBzdGF0aWMgYm9vbCBtYXRjaGVzX2Jvb2xlYW5fcGFydGl0aW9uX2Ns YXVzZShSZXN0cmljdEluZm8gKnJpbmZvLApAQCAtMzM3LDEyICszMzksNiBAQCBwYXRoa2V5 c19jb250YWluZWRfaW4oTGlzdCAqa2V5czEsIExpc3QgKmtleXMyKQogCXJldHVybiBmYWxz ZTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKjxERUJVRyBQQVJUPioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1ib29sIGRlYnVnX2dyb3VwX2J5X3Jl b3JkZXJfYnlfcGF0aGtleXMgPSB0cnVlOwotYm9vbCBkZWJ1Z19ncm91cF9ieV9tYXRjaF9v cmRlcl9ieSA9IHRydWU7Ci1ib29sIGRlYnVnX2NoZWFwZXN0X2dyb3VwX2J5ID0gdHJ1ZTsK LS8qKioqKioqKioqKioqKioqKioqKioqKio8L0RFQlVHIFBBUlQ+KioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotCiAvKgogICogZ3JvdXBfa2V5c19yZW9yZGVyX2J5 X3BhdGhrZXlzCiAgKgkJUmVvcmRlciBHUk9VUCBCWSBrZXlzIHRvIG1hdGNoIHBhdGhrZXlz IG9mIGlucHV0IHBhdGguCkBAIC0zNjEsOSArMzU3LDYgQEAgZ3JvdXBfa2V5c19yZW9yZGVy X2J5X3BhdGhrZXlzKExpc3QgKnBhdGhrZXlzLCBMaXN0ICoqZ3JvdXBfcGF0aGtleXMsCiAJ TGlzdENlbGwgICAqbGM7CiAJaW50CQkJbjsKIAotCWlmIChkZWJ1Z19ncm91cF9ieV9yZW9y ZGVyX2J5X3BhdGhrZXlzID09IGZhbHNlKQotCQlyZXR1cm4gMDsKLQogCWlmIChwYXRoa2V5 cyA9PSBOSUwgfHwgKmdyb3VwX3BhdGhrZXlzID09IE5JTCkKIAkJcmV0dXJuIDA7CiAKQEAg LTU5OCwxMCArNTkxLDYgQEAgZ2V0X2NoZWFwZXN0X2dyb3VwX2tleXNfb3JkZXIoUGxhbm5l ckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKIAlpbnQgbkZyZWVLZXlzOwogCWludCBuVG9Q ZXJtdXRlOwogCi0JLyogSWYgdGhpcyBvcHRpbWl6YXRpb24gaXMgZGlzYWJsZWQsIHdlJ3Jl IGRvbmUuICovCi0JaWYgKCFkZWJ1Z19jaGVhcGVzdF9ncm91cF9ieSkKLQkJcmV0dXJuIGZh bHNlOwotCiAJLyogSWYgdGhlcmUgYXJlIGxlc3MgdGhhbiAyIHVuc29ydGVkIHBhdGhrZXlz LCB3ZSdyZSBkb25lLiAqLwogCWlmIChsaXN0X2xlbmd0aCgqZ3JvdXBfcGF0aGtleXMpIC0g bl9wcmVvcmRlcmVkIDwgMikKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNzcxLDYgKzc2MCwxMyBA QCBnZXRfdXNlZnVsX2dyb3VwX2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpyb290LCBk b3VibGUgbnJvd3MsCiAKIAlpbmZvcyA9IGxhcHBlbmQoaW5mb3MsIGluZm8pOwogCisJLyoK KwkgKiBJZiB0aGUgb3B0aW1pemF0aW9uIGlzIGRpc2FibGVkLCB3ZSBjb25zaWRlciBvbmx5 IHRoZSBwYXRoa2V5IG9yZGVyIGFzCisJICogc3BlY2lmaWVkIGluIHRoZSBxdWVyeS4gV2Ug ZG9uJ3QgZG8gYW55IHJlb3JkZXJpbmdzLgorCSAqLworCWlmICghZW5hYmxlX2dyb3VwX2J5 X3Jlb3JkZXJpbmcpCisJCXJldHVybiBpbmZvczsKKwogCS8qIGZvciBncm91cGluZyBzZXRz IHdlIGNhbid0IGRvIGFueSByZW9yZGVyaW5nICovCiAJaWYgKHBhcnNlLT5ncm91cGluZ1Nl dHMpCiAJCXJldHVybiBpbmZvczsKQEAgLTgzNCw3ICs4MzAsNyBAQCBnZXRfdXNlZnVsX2dy b3VwX2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgbnJvd3MsCiAJ ICogWFhYIFRoaXMgZG9lcyBub3RoaW5nIGlmIChuX3ByZW9yZGVyZWQgPT0gMCkuIFdlIHNo b3VsZG4ndCBjcmVhdGUgdGhlCiAJICogaW5mbyBpbiB0aGlzIGNhc2UuCiAJICovCi0JaWYg KHJvb3QtPnNvcnRfcGF0aGtleXMgJiYgZGVidWdfZ3JvdXBfYnlfbWF0Y2hfb3JkZXJfYnkp CisJaWYgKHJvb3QtPnNvcnRfcGF0aGtleXMpCiAJewogCQluX3ByZW9yZGVyZWQgPSBncm91 cF9rZXlzX3Jlb3JkZXJfYnlfcGF0aGtleXMocm9vdC0+c29ydF9wYXRoa2V5cywKIAkJCQkJ CQkJCQkJCQkgICZwYXRoa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDMxZjM0N2Q0 NjlkLi45ZThhYjE0MjBkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0xMTgyLDYgKzEx ODIsMTYgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xb XSA9CiAJCXRydWUsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJlbmFibGVf Z3JvdXBfYnlfcmVvcmRlcmluZyIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9E LAorCQkJZ2V0dGV4dF9ub29wKCJlbmFibGUgcmVvcmRlcmluZyBvZiBHUk9VUCBCWSBrZXki KSwKKwkJCU5VTEwsCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5hYmxlX2dyb3VwX2J5 X3Jlb3JkZXJpbmcsCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJ eyJnZXFvIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19HRVFPLAogCQkJZ2V0dGV4dF9u b29wKCJFbmFibGVzIGdlbmV0aWMgcXVlcnkgb3B0aW1pemF0aW9uLiIpLApAQCAtMjE0MCwz OCArMjE1MCw2IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNC b29sW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAotLyoqKioqKioqKioqKioqKioq KioqKioqKjxERUJVRyBPUFQgR1JPVVAgQlk+KioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotCXsKLQkJeyJkZWJ1Z19ncm91cF9ieV9yZW9yZGVyX2J5X3BhdGhrZXlzIiwg UEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCi0JCQlnZXR0ZXh0X25vb3AoImVu YWJsZSByZW9yZGVyIEdST1VQIEJZIGJ5IHBhdGhrZXlzIiksCi0JCQlOVUxMLAotCQkJR1VD X05PVF9JTl9TQU1QTEUKLQkJfSwKLQkJJmRlYnVnX2dyb3VwX2J5X3Jlb3JkZXJfYnlfcGF0 aGtleXMsCi0JCXRydWUsCi0JCU5VTEwsIE5VTEwsIE5VTEwKLQl9LAotCXsKLQkJeyJkZWJ1 Z19lbmFibGVfZ3JvdXBfYnlfbWF0Y2hfb3JkZXJfYnkiLCBQR0NfVVNFUlNFVCwgUVVFUllf VFVOSU5HX01FVEhPRCwKLQkJCWdldHRleHRfbm9vcCgiZW5hYmxlIG1hdGNoaW5nIEdST1VQ IEJZIGJ5IE9SREVSIEJZLiIpLAotCQkJTlVMTCwKLQkJCUdVQ19OT1RfSU5fU0FNUExFCi0J CX0sCi0JCSZkZWJ1Z19ncm91cF9ieV9tYXRjaF9vcmRlcl9ieSwKLQkJdHJ1ZSwKLQkJTlVM TCwgTlVMTCwgTlVMTAotCX0sCi0JewotCQl7ImRlYnVnX2VuYWJsZV9jaGVhcGVzdF9ncm91 cF9ieSIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9ELAotCQkJZ2V0dGV4dF9u b29wKCJmaW5kIGEgY2hlYXBlc3Qgb3JkZXIgb2YgY29sdW1ucyBpbiBHUk9VUCBCWS4iKSwK LQkJCU5VTEwsCi0JCQlHVUNfTk9UX0lOX1NBTVBMRQotCQl9LAotCQkmZGVidWdfY2hlYXBl c3RfZ3JvdXBfYnksCi0JCXRydWUsCi0JCU5VTEwsIE5VTEwsIE5VTEwKLQl9LAotLyoqKioq KioqKioqKioqKioqKioqKioqKjwvREVCVUcgT1BUIEdST1VQIEJZPioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJ e05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgTlVM TApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCA1MjViNTk0Y2JkMC4uMmZmYTI0YWE4OTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9p bmNsdWRlL29wdGltaXplci9wYXRocy5oCkBAIC0yNCw2ICsyNCw3IEBAIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9nZXFvOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBnZXFv X3RocmVzaG9sZDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVsX3RhYmxl X3NjYW5fc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVsX2luZGV4 X3NjYW5fc2l6ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9ncm91cF9ieV9y ZW9yZGVyaW5nOwogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIHNl dF9yZWxfcGF0aGxpc3QoKSAqLwogdHlwZWRlZiB2b2lkICgqc2V0X3JlbF9wYXRobGlzdF9o b29rX3R5cGUpIChQbGFubmVySW5mbyAqcm9vdCwKQEAgLTIwNiwxMSArMjA3LDYgQEAgZXh0 ZXJuIGJvb2wgcGF0aGtleXNfY291bnRfY29udGFpbmVkX2luKExpc3QgKmtleXMxLCBMaXN0 ICprZXlzMiwgaW50ICpuX2NvbW1vbikKIGV4dGVybiBpbnQgZ3JvdXBfa2V5c19yZW9yZGVy X2J5X3BhdGhrZXlzKExpc3QgKnBhdGhrZXlzLAogCQkJCQkJCQkJCSAgTGlzdCAqKmdyb3Vw X3BhdGhrZXlzLAogCQkJCQkJCQkJCSAgTGlzdCAqKmdyb3VwX2NsYXVzZXMpOwotLyoqKioq KioqKioqKioqKioqKioqKioqKjxERUJVRyBPUFQgR1JPVVAgQlk+KioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwotZXh0ZXJuIGJvb2wgZGVidWdfZ3JvdXBfYnlfcmVvcmRl cl9ieV9wYXRoa2V5czsKLWV4dGVybiBib29sIGRlYnVnX2dyb3VwX2J5X21hdGNoX29yZGVy X2J5OwotZXh0ZXJuIGJvb2wgZGVidWdfY2hlYXBlc3RfZ3JvdXBfYnk7Ci0vKioqKioqKioq KioqKioqKioqKioqKioqPC9ERUJVRyBPUFQgR1JPVVAgQlk+KioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCiBleHRlcm4gTGlzdCAqZ2V0X3VzZWZ1bF9ncm91cF9rZXlzX29y ZGVyaW5ncyhQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIG5yb3dzLAogCQkJCQkJCQkJCQkg TGlzdCAqcGF0aF9wYXRoa2V5cywKIAkJCQkJCQkJCQkJIExpc3QgKnBhdGhrZXlzLCBMaXN0 ICpjbGF1c2VzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3Vj Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAppbmRleCA5OGExNmMx MThmMi4uM2RlNjQwNGJhNWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ3VjLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAg LTg1OCwxMyArODU4LDEwIEBAIFNFTEVDVCBuYW1lIEZST00gdGFiX3NldHRpbmdzX2ZsYWdz CiBTRUxFQ1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICBXSEVSRSBjYXRlZ29y eSB+ICdeUXVlcnkgVHVuaW5nJyBBTkQgTk9UIGV4cGxhaW4KICAgT1JERVIgQlkgMTsKLSAg ICAgICAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGRlYnVnX2VuYWJsZV9jaGVhcGVzdF9ncm91cF9i eQotIGRlYnVnX2VuYWJsZV9ncm91cF9ieV9tYXRjaF9vcmRlcl9ieQotIGRlYnVnX2dyb3Vw X2J5X3Jlb3JkZXJfYnlfcGF0aGtleXMKKyAgICAgICAgICAgbmFtZSAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZGVmYXVsdF9zdGF0aXN0aWNzX3Rhcmdl dAotKDQgcm93cykKKygxIHJvdykKIAogLS0gUnVudGltZS1jb21wdXRlZCBHVUNzIHNob3Vs ZCBiZSBwYXJ0IG9mIHRoZSBwcmVzZXQgY2F0ZWdvcnkuCiBTRUxFQ1QgbmFtZSBGUk9NIHRh Yl9zZXR0aW5nc19mbGFncwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91 dAppbmRleCA0NDJlZWIxZTNmZS4uNzI4OTE2OTAzOTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMDUsNiArMTA1LDcgQEAgc2VsZWN0IG5hbWUs IHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwog IGVuYWJsZV9hc3luY19hcHBlbmQgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2JpdG1hcHNj YW4gICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZ2F0aGVybWVyZ2UgICAgICAgICAgICAg fCBvbgorIGVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nICAgICB8IG9uCiAgZW5hYmxlX2hh c2hhZ2cgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfaGFzaGpvaW4gICAgICAgICAg ICAgICAgfCBvbgogIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0ICAgICAgICB8IG9uCkBAIC0x MjIsNyArMTIzLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAg ICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFi bGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIwIHJvd3MpCisoMjEgcm93cykK IAogLS0gVGVzdCB0aGF0IHRoZSBwZ190aW1lem9uZV9uYW1lcyBhbmQgcGdfdGltZXpvbmVf YWJicmV2cyB2aWV3cyBhcmUKIC0tIG1vcmUtb3ItbGVzcyB3b3JraW5nLiAgV2UgY2FuJ3Qg dGVzdCB0aGVpciBjb250ZW50cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCi0tIAoyLjM0LjEKCg== --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0003-fixup-minor-code-cleanup-20220328.patch" Content-Disposition: attachment; filename="0003-fixup-minor-code-cleanup-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSAzYmViNmU0NjY5ZjQ3Zjc4ZjYzNTZhMmJhNTJlYmUwMTMyNjJiZGE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyOCBNYXIgMjAyMiAxODo0MDoyMiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMy83XSBmaXh1cDogbWlub3IgY29kZSBjbGVhbnVwCgotLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyB8IDYgKy0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGJiOTU3ZDUwZDIzLi5iMjU2OWM1ZDBjNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjIyMCw3ICs2MjIwLDYg QEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqaW5wdXRfcmVsLAogCQl7CiAJCQlMaXN0Q2VsbCAgICpsYzI7CiAJCQlQYXRoCSAg ICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKLQkJCVBhdGgJICAgKnBhdGhfc2F2ZSA9 IHBhdGg7CiAJCQlQYXRoCSAgICpwYXRoX29yaWdpbmFsID0gcGF0aDsKIAogCQkJTGlzdAkg ICAqcGF0aGtleV9vcmRlcmluZ3MgPSBOSUw7CkBAIC02MjQ1LDcgKzYyNDQsNyBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpp bnB1dF9yZWwsCiAJCQkJUGF0aEtleUluZm8gKmluZm8gPSAoUGF0aEtleUluZm8gKikgbGZp cnN0KGxjMik7CiAKIAkJCQkvKiByZXN0b3JlIHRoZSBwYXRoICh3ZSByZXBsYWNlIGl0IGlu IHRoZSBsb29wKSAqLwotCQkJCXBhdGggPSBwYXRoX3NhdmU7CisJCQkJcGF0aCA9IHBhdGhf b3JpZ2luYWw7CiAKIAkJCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWluZWRf aW4oaW5mby0+cGF0aGtleXMsCiAJCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlzLApAQCAt NjI1NSwxMyArNjI1NCwxMSBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJewogCQkJCQkvKiBTb3J0 IHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoIGlmIGl0IGlzbid0IGFscmVhZHkgc29ydGVkICov CiAJCQkJCWlmICghaXNfc29ydGVkKQotCQkJCQl7CiAJCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX3NvcnRfcGF0aChyb290LAogCQkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJ CQkJCQkJCQkJCQkJCSBwYXRoLAogCQkJCQkJCQkJCQkJCQkgaW5mby0+cGF0aGtleXMsCiAJ CQkJCQkJCQkJCQkJCSAtMS4wKTsKLQkJCQkJfQogCiAJCQkJCS8qIE5vdyBkZWNpZGUgd2hh dCB0byBzdGljayBhdG9wIGl0ICovCiAJCQkJCWlmIChwYXJzZS0+Z3JvdXBpbmdTZXRzKQpA QCAtNjQzMiw3ICs2NDI5LDYgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQl7CiAJCQkJCQlpZiAo cGF0aCAhPSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGgpCiAJ CQkJCQkJY29udGludWU7Ci0KIAkJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9w YXRoKHJvb3QsCiAJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJCQkJ IHBhdGgsCi0tIAoyLjM0LjEKCg== --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0004-fixup-comments-cleanup-type-fixes-and-rewor-20220328.patch" Content-Disposition: attachment; filename*0="0004-fixup-comments-cleanup-type-fixes-and-rewor-20220328.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YTNhN2ZhY2QxNWQyYzAwMzRlZWZmNzA0MWRmNTZhNGUwZDQ1NmY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVHVlLCAyOSBNYXIgMjAyMiAwMToxMjoxNSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggNC83XSBmaXh1cDogY29tbWVudHMgY2xlYW51cCwgdHlwZSBmaXhlcyBh bmQgcmV3b3JkaW5nCgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXpl LmMgICB8IDEyNCArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2VxdWl2Y2xhc3MuYyB8ICAgNiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvcGF0aGtleXMuYyAgIHwgIDY4ICsrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jICAgICAgICB8ICAxMyArKy0KIDQgZmlsZXMgY2hhbmdlZCwg MTA1IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYwppbmRleCBmNGY3Y2UwMTA2NS4uYmIwZmUwYzIyZWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtMTc3Myw5ICsxNzcz LDkgQEAgaXNfZmFrZV92YXIoRXhwciAqZXhwcikKIAogLyoKICAqIGdldF93aWR0aF9jb3N0 X211bHRpcGxpZXIKLSAqCQlSZXR1cm5zIHJlbGF0aXZlIGNvbXBsZXhpdHkgb2YgY29tcGFy aW5nIHR3byB2YWx1ZXMgYmFzZWQgb24gaXQncyB3aWR0aC4KLSAqIFRoZSBpZGVhIGJlaGlu ZCAtIGxvbmcgdmFsdWVzIGhhdmUgbW9yZSBleHBlbnNpdmUgY29tcGFyaXNvbi4gUmV0dXJu IHZhbHVlIGlzCi0gKiBpbiBjcHVfb3BlcmF0b3JfY29zdCB1bml0LgorICoJCVJldHVybnMg cmVsYXRpdmUgY29tcGxleGl0eSBvZiBjb21wYXJpbmcgdHdvIHZhbHVlcyBiYXNlZCBvbiBp dHMgd2lkdGguCisgKiBUaGUgaWRlYSBiZWhpbmQgaXMgdGhhdCB0aGUgY29tcGFyaXNvbiBi ZWNvbWVzIG1vcmUgZXhwZW5zaXZlIHRoZSBsb25nZXIgdGhlCisgKiB2YWx1ZSBpcy4gUmV0 dXJuIHZhbHVlIGlzIGluIGNwdV9vcGVyYXRvcl9jb3N0IHVuaXRzLgogICovCiBzdGF0aWMg ZG91YmxlCiBnZXRfd2lkdGhfY29zdF9tdWx0aXBsaWVyKFBsYW5uZXJJbmZvICpyb290LCBF eHByICpleHByKQpAQCAtMTgwNiw3ICsxODA2LDcgQEAgZ2V0X3dpZHRoX2Nvc3RfbXVsdGlw bGllcihQbGFubmVySW5mbyAqcm9vdCwgRXhwciAqZXhwcikKIAkJfQogCX0KIAotCS8qIERp ZG4ndCBmaW5kIGFueSBhY3R1YWwgc3RhdHMsIHVzZSBlc3RpbWF0aW9uIGJ5IHR5cGUgKi8K KwkvKiBEaWRuJ3QgZmluZCBhbnkgYWN0dWFsIHN0YXRzLCB0cnkgdXNpbmcgdHlwZSB3aWR0 aCBpbnN0ZWFkLiAqLwogCWlmICh3aWR0aCA8IDAuMCkKIAl7CiAJCU5vZGUJKm5vZGUgPSAo Tm9kZSopIGV4cHI7CkBAIC0xODE1LDE3ICsxODE1LDIwIEBAIGdldF93aWR0aF9jb3N0X211 bHRpcGxpZXIoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpCiAJfQogCiAJLyoKLQkg KiBBbnkgdmFsdWUgaW4gcGdzcWwgaXMgcGFzc2VkIGJ5IERhdHVtIHR5cGUsIHNvIGFueSBv cGVyYXRpb24gd2l0aCB2YWx1ZQotCSAqIGNvdWxkIG5vdCBiZSBjaGVhcGVyIHRoYW4gb3Bl cmF0aW9uIHdpdGggRGF0dW0gdHlwZQorCSAqIFZhbHVlcyBhcmUgcGFzc2VkIGFzIERhdHVt IHR5cGUsIHNvIGNvbXBhcmlzb25zIGNhbid0IGJlIGNoZWFwZXIgdGhhbgorCSAqIGNvbXBh cmluZyBhIERhdHVtIHZhbHVlLgorCSAqCisJICogRklYTUUgSSBmaW5kIHRoaXMgcmVhc29u aW5nIHF1ZXN0aW9uYWJsZS4gV2UgbWF5IHBhc3MgaW50MiwgYW5kIGNvbXBhcmluZworCSAq IGl0IGlzIHByb2JhYmx5IGEgYml0IGNoZWFwZXIgdGhhbiBjb21wYXJpbmcgYSBiaWdpbnQu CiAJICovCiAJaWYgKHdpZHRoIDw9IHNpemVvZihEYXR1bSkpCiAJCXJldHVybiAxLjA7CiAK IAkvKgotCSAqIFNlZW1zLCBjb3N0IG9mIGNvbXBhcmlzaW9uIGlzIG5vdCBkaXJlY3RseSBw cm9wb3J0aW9uYWwgdG8gYXJncyB3aWR0aCwKLQkgKiBiZWNhdXNlIGNvbXBhcmluZyBhcmdz IGNvdWxkIGJlIGRpZmZlciB3aWR0aCAod2Uga25vd24gb25seSBhdmVyYWdlIG92ZXIKLQkg KiBjb2x1bW4pIGFuZCBkaWZmZXJlbmNlIG9mdGVuIGNvdWxkIGJlIGRlZmluZWQgb25seSBi eSBsb29raW5nIG9uIGZpcnN0Ci0JICogYnl0ZXMuIFNvLCB1c2UgbG9nMTYod2lkdGgpIGFz IGVzdGltYXRpb24uCisJICogV2UgY29uc2lkZXIgdGhlIGNvc3Qgb2YgYSBjb21wYXJpc29u IG5vdCB0byBiZSBkaXJlY3RseSBwcm9wb3J0aW9uYWwgdG8KKwkgKiB3aWR0aCBvZiB0aGUg YXJndW1lbnQsIGJlY2F1c2Ugd2lkdGhzIG9mIHRoZSBhcmd1bWVudHMgY291bGQgYmUgc2xp Z2h0bHkKKwkgKiBkaWZmZXJlbnQgKHdlIG9ubHkga25vdyB0aGUgYXZlcmFnZSB3aWR0aCBm b3IgdGhlIHdob2xlIGNvbHVtbikuIFNvIHdlCisJICogdXNlIGxvZzE2KHdpZHRoKSBhcyBh biBlc3RpbWF0ZS4KIAkgKi8KIAlyZXR1cm4gMS4wICsgMC4xMjUgKiBMT0cyKHdpZHRoIC8g c2l6ZW9mKERhdHVtKSk7CiB9CkBAIC0xODM3LDExICsxODQwLDExIEBAIGdldF93aWR0aF9j b3N0X211bHRpcGxpZXIoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpCiAgKiBUaGUg bWFpbiB0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0byBlc3RpbWF0ZSBzb3J0IENQVSBj b3N0cyBpcyB0aGUgbnVtYmVyCiAgKiBvZiBjYWxscyB0byB0aGUgY29tcGFyYXRvciBmdW5j dGlvbnMuIFRoZSBkaWZmaWN1bHR5IGlzIHRoYXQgZm9yIG11bHRpLWNvbHVtbgogICogc29y dHMgdGhlcmUgbWF5IGJlIGRpZmZlcmVudCBkYXRhIHR5cGVzIGludm9sdmVkIChmb3Igc29t ZSBvZiB3aGljaCB0aGUgY2FsbHMKLSAqIG1heSBiZSBtdWNoIG1vcmUgZXhwZW5zaXZlKS4g RnVydGhlcm1vcmUsIHRoZSBjb2x1bW5zIG1heSBoYXZlIHZlcnkgZGlmZmVyZW50CisgKiBt YXkgYmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSkuIEZ1cnRoZXJtb3JlLCBjb2x1bW5zIG1heSBo YXZlIGEgdmVyeSBkaWZmZXJlbnQKICAqIG51bWJlciBvZiBkaXN0aW5jdCB2YWx1ZXMgLSB0 aGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBmZXdlciBjb21wYXJpc29ucyB3aWxsCiAgKiBi ZSBuZWVkZWQgZm9yIHRoZSBmb2xsb3dpbmcgY29sdW1ucy4KICAqCi0gKiBUaGUgYWxnb3Jp dG0gaXMgaW5jcmVtZW50YWwgLSB3ZSBhZGQgcGF0aGtleXMgb25lIGJ5IG9uZSwgYW5kIGF0 IGVhY2ggc3RlcCB3ZQorICogVGhlIGFsZ29yaXRobSBpcyBpbmNyZW1lbnRhbCAtIHdlIGFk ZCBwYXRoa2V5cyBvbmUgYnkgb25lLCBhbmQgYXQgZWFjaCBzdGVwIHdlCiAgKiBlc3RpbWF0 ZSB0aGUgbnVtYmVyIG9mIG5lY2Vzc2FyeSBjb21wYXJpc29ucyAoYmFzZWQgb24gdGhlIG51 bWJlciBvZiBkaXN0aW5jdAogICogZ3JvdXBzIGluIHRoZSBjdXJyZW50IHBhdGhrZXkgcHJl Zml4IGFuZCB0aGUgbmV3IHBhdGhrZXkpLCBhbmQgdGhlIGNvbXBhcmlzb24KICAqIGNvc3Rz ICh3aGljaCBpcyBkYXRhIHR5cGUgc3BlY2lmaWMpLgpAQCAtMTg5Miw3ICsxODk1LDYgQEAg Y29tcHV0ZV9jcHVfc29ydF9jb3N0KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpwYXRoa2V5 cywgaW50IG5QcmVzb3J0ZWRLZXlzLAogCWJvb2wJCWhhc19mYWtlX3ZhciA9IGZhbHNlOwog CWludAkJCWkgPSAwOwogCU9pZAkJCXByZXZfZGF0YXR5cGUgPSBJbnZhbGlkT2lkOwotCUNv c3QJCWZ1bmNDb3N0ID0gMC4wOwogCUxpc3QJCSpjYWNoZV92YXJpbmZvcyA9IE5JTDsKIAog CS8qIGZhbGxiYWNrIGlmIHBhdGhrZXlzIGlzIHVua25vd24gKi8KQEAgLTE5MDEsMTIgKzE5 MDMsOCBAQCBjb21wdXRlX2NwdV9zb3J0X2Nvc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3Qg KnBhdGhrZXlzLCBpbnQgblByZXNvcnRlZEtleXMsCiAJCS8qCiAJCSAqIElmIHdlJ2xsIHVz ZSBhIGJvdW5kZWQgaGVhcC1zb3J0IGtlZXBpbmcganVzdCBLIHR1cGxlcyBpbiBtZW1vcnks IGZvcgogCQkgKiBhIHRvdGFsIG51bWJlciBvZiB0dXBsZSBjb21wYXJpc29ucyBvZiBOIGxv ZzIgSzsgYnV0IHRoZSBjb25zdGFudAotCQkgKiBmYWN0b3IgaXMgYSBiaXQgaGlnaGVyIHRo YW4gZm9yIHF1aWNrc29ydC4gIFR3ZWFrIGl0IHNvIHRoYXQgdGhlCi0JCSAqIGNvc3QgY3Vy dmUgaXMgY29udGludW91cyBhdCB0aGUgY3Jvc3NvdmVyIHBvaW50LgotCQkgKgotCQkgKiBY WFggSSBzdXBwb3NlIHRoZSAicXVpY2tzb3J0IGZhY3RvciIgcmVmZXJlbmNlcyB0byAxLjUg YXQgdGhlIGVuZAotCQkgKiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgSSdtIG5vdCBzdXJlLiBJ IHN1Z2dlc3Qgd2UgaW50cm9kdWNlIHNvbWUgc2ltcGxlCi0JCSAqIGNvbnN0YW50cyBmb3Ig dGhhdCwgaW5zdGVhZCBvZiBtYWdpYyB2YWx1ZXMuCisJCSAqIGZhY3RvciBpcyBhIGJpdCBo aWdoZXIgdGhhbiBmb3IgcXVpY2tzb3J0LiBUd2VhayBpdCBzbyB0aGF0IHRoZSBjb3N0CisJ CSAqIGN1cnZlIGlzIGNvbnRpbnVvdXMgYXQgdGhlIGNyb3Nzb3ZlciBwb2ludC4KIAkJICov CiAJCW91dHB1dF90dXBsZXMgPSAoaGVhcFNvcnQpID8gMi4wICogb3V0cHV0X3R1cGxlcyA6 IHR1cGxlczsKIAkJcGVyX3R1cGxlX2Nvc3QgKz0gMi4wICogY3B1X29wZXJhdG9yX2Nvc3Qg KiBMT0cyKG91dHB1dF90dXBsZXMpOwpAQCAtMTkyNCwyMCArMTkyMiwyMSBAQCBjb21wdXRl X2NwdV9zb3J0X2Nvc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnBhdGhrZXlzLCBpbnQg blByZXNvcnRlZEtleXMsCiAJICovCiAJZm9yZWFjaChsYywgcGF0aGtleXMpCiAJewotCQlQ YXRoS2V5CQkJCSpwYXRoa2V5ID0gKFBhdGhLZXkqKSBsZmlyc3QobGMpOwotCQlFcXVpdmFs ZW5jZU1lbWJlcgkqZW07Ci0JCWRvdWJsZQkJCQkgbkdyb3VwcywKLQkJCQkJCQkgY29ycmVj dGVkTkdyb3VwczsKKwkJUGF0aEtleQkJCSAgICpwYXRoa2V5ID0gKFBhdGhLZXkqKSBsZmly c3QobGMpOworCQlFcXVpdmFsZW5jZU1lbWJlciAgKmVtOworCQlkb3VibGUJCQkJbkdyb3Vw cywKKwkJCQkJCQljb3JyZWN0ZWROR3JvdXBzOworCQlDb3N0CQkJCWZ1bmNDb3N0ID0gMS4w OwogCiAJCS8qCiAJCSAqIFdlIGJlbGlldmUgdGhhdCBlcXVpdmFsZW5jZSBtZW1iZXJzIGFy ZW4ndCB2ZXJ5IGRpZmZlcmVudCwgc28sIHRvCi0JCSAqIGVzdGltYXRlIGNvc3Qgd2UgdGFr ZSBqdXN0IGZpcnN0IG1lbWJlcgorCQkgKiBlc3RpbWF0ZSBjb3N0IHdlIGNvbnNpZGVyIGp1 c3QgdGhlIGZpcnN0IG1lbWJlci4KIAkJICovCiAJCWVtID0gKEVxdWl2YWxlbmNlTWVtYmVy ICopIGxpbml0aWFsKHBhdGhrZXktPnBrX2VjbGFzcy0+ZWNfbWVtYmVycyk7CiAKIAkJaWYg KGVtLT5lbV9kYXRhdHlwZSAhPSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBkbyBub3QgbG9v a3VwIGZ1bmNDb3N0IGlmIGRhdGEgdHlwZSBpcyB0aGUgc2FtZSBhcyBwcmV2aW91cyAqLwor CQkJLyogZG8gbm90IGxvb2t1cCBmdW5jQ29zdCBpZiB0aGUgZGF0YSB0eXBlIGlzIHRoZSBz YW1lICovCiAJCQlpZiAocHJldl9kYXRhdHlwZSAhPSBlbS0+ZW1fZGF0YXR5cGUpCiAJCQl7 CiAJCQkJT2lkCQkJc29ydG9wOwpAQCAtMTk1MCw1NCArMTk0OSw1NiBAQCBjb21wdXRlX2Nw dV9zb3J0X2Nvc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnBhdGhrZXlzLCBpbnQgblBy ZXNvcnRlZEtleXMsCiAJCQkJY29zdC5zdGFydHVwID0gMDsKIAkJCQljb3N0LnBlcl90dXBs ZSA9IDA7CiAJCQkJYWRkX2Z1bmN0aW9uX2Nvc3Qocm9vdCwgZ2V0X29wY29kZShzb3J0b3Ap LCBOVUxMLCAmY29zdCk7Ci0JCQkJLyogd2UgbmVlZCBwcm9jb3N0LCBub3QgcHJvZHVjdCBv ZiBwcm9jb3N0IGFuZCBjcHVfb3BlcmF0b3JfY29zdCAqLworCisJCQkJLyoKKwkJCQkgKiBh ZGRfZnVuY3Rpb25fY29zdCByZXR1cm5zIHRoZSBwcm9kdWN0IG9mIGNwdV9vcGVyYXRvcl9j b3N0CisJCQkJICogYW5kIHByb2Nvc3QsIGJ1dCB3ZSBuZWVkIGp1c3QgcHJvY29zdCwgY28g dW5kbyB0aGF0LgorCQkJCSAqLwogCQkJCWZ1bmNDb3N0ID0gY29zdC5wZXJfdHVwbGUgLyBj cHVfb3BlcmF0b3JfY29zdDsKKwogCQkJCXByZXZfZGF0YXR5cGUgPSBlbS0+ZW1fZGF0YXR5 cGU7CiAJCQl9CiAJCX0KLQkJZWxzZQotCQkJZnVuY0Nvc3QgPSAxLjA7IC8qIGZhbGxiYWNr ICovCiAKLQkJLyogVHJ5IHRvIHRha2UgaW50byBhY2NvdW50IGFjdHVhbCB3aWR0aCBmZWUg Ki8KKwkJLyogZmFjdG9yIGluIHRoZSB3aWR0aCBvZiB0aGUgdmFsdWVzIGluIHRoaXMgY29s dW1uICovCiAJCWZ1bmNDb3N0ICo9IGdldF93aWR0aF9jb3N0X211bHRpcGxpZXIocm9vdCwg ZW0tPmVtX2V4cHIpOwogCisJCS8qIG5vdyB3ZSBoYXZlIHBlci1rZXkgY29zdCwgc28gYWRk IHRvIHRoZSBydW5uaW5nIHRvdGFsICovCiAJCXRvdGFsRnVuY0Nvc3QgKz0gZnVuY0Nvc3Q7 CiAKLQkJLyogUmVtZW1iZXIgaWYgd2UgaGF2ZSBhIGZha2UgdmFyIGluIHBhdGhrZXlzICov CisJCS8qIHJlbWVtYmVyIGlmIHdlIGhhdmUgZm91bmQgYSBmYWtlIFZhciBpbiBwYXRoa2V5 cyAqLwogCQloYXNfZmFrZV92YXIgfD0gaXNfZmFrZV92YXIoZW0tPmVtX2V4cHIpOwogCQlw YXRoa2V5RXhwcnMgPSBsYXBwZW5kKHBhdGhrZXlFeHBycywgZW0tPmVtX2V4cHIpOwogCiAJ CS8qCi0JCSAqIFByZXZlbnQgY2FsbCBlc3RpbWF0ZV9udW1fZ3JvdXBzKCkgd2l0aCBmYWtl IFZhci4gTm90ZSwKLQkJICogcGF0aGtleUV4cHJzIGNvbnRhaW5zIG9ubHkgcHJldmlvdXMg Y29sdW1ucworCQkgKiBXZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGNvbXBh cmlzb25zIGZvciB0aGlzIGNvbHVtbiwgd2hpY2gKKwkJICogcmVxdWlyZXMga25vd2luZyB0 aGUgZ3JvdXAgc2l6ZS4gU28gd2UgZXN0aW1hdGUgdGhlIG51bWJlciBvZiBncm91cHMKKwkJ ICogYnkgY2FsbGluZyBlc3RpbWF0ZV9udW1fZ3JvdXBzX2luY3JlbWVudGFsKCksIHdoaWNo IGVzdGltYXRlcyB0aGUKKwkJICogZ3JvdXAgc2l6ZSBmb3IgIm5ldyIgcGF0aGtleXMuCisJ CSAqCisJCSAqIE5vdGU6IGVzdGltYXRlX251bV9ncm91cHNfaW5jcmVtbnRhbCBkb2VzIG5v dCBoYW5kbGUgZmFrZSBWYXJzLCBzbyB1c2UKKwkJICogYSBkZWZhdWx0IGVzdGltYXRlIG90 aGVyd2lzZS4KIAkJICovCi0JCWlmIChoYXNfZmFrZV92YXIgPT0gZmFsc2UpCi0JCQkvKgot CQkJICogUmVjdXJzaXZlbHkgY29tcHV0ZSBudW1iZXIgb2YgZ3JvdXBzIGluIGEgZ3JvdXAg ZnJvbSBwcmV2aW91cyBzdGVwCi0JCQkgKi8KKwkJaWYgKCFoYXNfZmFrZV92YXIpCiAJCQlu R3JvdXBzID0gZXN0aW1hdGVfbnVtX2dyb3Vwc19pbmNyZW1lbnRhbChyb290LCBwYXRoa2V5 RXhwcnMsCiAJCQkJCQkJCQkJCQkJICB0dXBsZXNQZXJQcmV2R3JvdXAsIE5VTEwsIE5VTEws CiAJCQkJCQkJCQkJCQkJICAmY2FjaGVfdmFyaW5mb3MsCiAJCQkJCQkJCQkJCQkJICBsaXN0 X2xlbmd0aChwYXRoa2V5RXhwcnMpIC0gMSk7CiAJCWVsc2UgaWYgKHR1cGxlcyA+IDQuMCkK IAkJCS8qCi0JCQkgKiBVc2UgZ2VvbWV0cmljIG1lYW4gYXMgZXN0aW1hdGlvbiBpZiB0aGVy ZSBpcyBubyBhbnkgc3RhdHMuCi0JCQkgKiBEb24ndCB1c2UgREVGQVVMVF9OVU1fRElTVElO Q1QgYmVjYXVzZSBpdCB1c2VkIGZvciBvbmx5IG9uZQotCQkJICogY29sdW1uIHdoaWxlIGhl cmUgd2UgdHJ5IHRvIGVzdGltYXRlIG51bWJlciBvZiBncm91cHMgb3ZlcgotCQkJICogc2V0 IG9mIGNvbHVtbnMuCi0JCQkgKgotCQkJICogWFhYIFBlcmhhcHMgdGhpcyBzaG91bGQgdXNl IERFRkFVTFRfTlVNX0RJU1RJTkNUIGF0IGxlYXN0IHRvCi0JCQkgKiBsaW1pdCB0aGUgY2Fs Y3VsYXRlZCB2YWx1ZXMsIHNvbWVob3c/CisJCQkgKiBVc2UgZ2VvbWV0cmljIG1lYW4gYXMg ZXN0aW1hdGlvbiBpZiB0aGVyZSBhcmUgbm8gc3RhdHMuCiAJCQkgKgotCQkJICogWFhYIFdo YXQncyB0aGUgbG9naWMgb2YgdGhlIGZvbGxvd2luZyBmb3JtdWxhPworCQkJICogV2UgZG9u J3QgdXNlIERFRkFVTFRfTlVNX0RJU1RJTkNUIGhlcmUsIGJlY2F1c2UgdGhhdOKAmXMgdXNl ZCBmb3IKKwkJCSAqIGEgc2luZ2xlIGNvbHVtbiwgYnV0IGhlcmUgd2XigJlyZSBkZWFsaW5n IHdpdGggbXVsdGlwbGUgY29sdW1ucy4KIAkJCSAqLwogCQkJbkdyb3VwcyA9IGNlaWwoMi4w ICsgc3FydCh0dXBsZXMpICogKGkgKyAxKSAvIGxpc3RfbGVuZ3RoKHBhdGhrZXlzKSk7CiAJ CWVsc2UKIAkJCW5Hcm91cHMgPSB0dXBsZXM7CiAKIAkJLyoKLQkJICogUHJlc29ydGVkIGtl eXMgYXJlbid0IHBhcnRpY2lwYXRlZCBpbiBjb21wYXJpc29uIGJ1dCBzdGlsbCBjaGVja2Vk Ci0JCSAqIGJ5IHFzb3J0IGNvbXBhcmF0b3IuCisJCSAqIFByZXNvcnRlZCBrZXlzIGFyZSBu b3QgY29uc2lkZXJlZCBpbiB0aGUgY29zdCBhYm92ZSwgYnV0IHdlIHN0aWxsIGRvCisJCSAq IGhhdmUgdG8gY29tcGFyZSB0aGVtIGluIHRoZSBxc29ydCBjb21wYXJhdG9yLiBTbyBtYWtl IHN1cmUgdG8gZmFjdG9yCisJCSAqIGluIHRoZSBjb3N0IGluIHRoYXQgY2FzZS4KIAkJICov CiAJCWlmIChpID49IG5QcmVzb3J0ZWRLZXlzKQogCQl7CkBAIC0yMDA2LDEwICsyMDA3LDEz IEBAIGNvbXB1dGVfY3B1X3NvcnRfY29zdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqcGF0 aGtleXMsIGludCBuUHJlc29ydGVkS2V5cywKIAkJCQlkb3VibGUgaGVhcF90dXBsZXM7CiAK IAkJCQkvKiBoYXZlIHRvIGtlZXAgYXQgbGVhc3Qgb25lIGdyb3VwLCBhbmQgYSBtdWx0aXBs ZSBvZiBncm91cCBzaXplICovCisJCQkJLyogRklYTUUgRG8gd2UgYWN0dWFsbHkgbmVlZCB0 aGUgTWF4LCBoZXJlPyBTdXJlbHkgdGhlIGNlaWwoKSByZXR1cm5zCisJCQkJICogYXQgbGVh c3QgMS4wIGhlcmUsIG5vPyAqLwogCQkJCWhlYXBfdHVwbGVzID0gTWF4KGNlaWwob3V0cHV0 X3R1cGxlcyAvIHR1cGxlc1BlclByZXZHcm91cCkgKiB0dXBsZXNQZXJQcmV2R3JvdXAsCiAJ CQkJCQkJCSAgdHVwbGVzUGVyUHJldkdyb3VwKTsKIAogCQkJCS8qIHNvIGhvdyBtYW55ICh3 aG9sZSkgZ3JvdXBzIGlzIHRoYXQ/ICovCisJCQkJLyogRklYTUUgc28gd2h5IG5vdCBqdXN0 IGNlaWwocHV0cHV0X3R1cGxlcyAvIHR1cGxlc1BlclByZXZHcm91cCk/ICovCiAJCQkJY29y cmVjdGVkTkdyb3VwcyA9IGNlaWwoaGVhcF90dXBsZXMgLyB0dXBsZXNQZXJQcmV2R3JvdXAp OwogCQkJfQogCQkJZWxzZQpAQCAtMjAyNCwxNyArMjAyOCwxOSBAQCBjb21wdXRlX2NwdV9z b3J0X2Nvc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnBhdGhrZXlzLCBpbnQgblByZXNv cnRlZEtleXMsCiAJCWkrKzsKIAogCQkvKgotCQkgKiBSZWFsLXdvcmxkIGRpc3RyaWJ1dGlv biBpc24ndCB1bmlmb3JtIGJ1dCBub3cgd2UgZG9uJ3QgaGF2ZSBhIHdheSB0bwotCQkgKiBk ZXRlcm1pbmUgdGhhdCwgc28sIGFkZCBtdWx0aXBsaWVyIHRvIGdldCBjbG9zZXIgdG8gd29y c3QgY2FzZS4KLQkJICogQnV0IGVuc3VyZSB0aGUgbnVtYmVyIG9mIHR1cGxlcyBkb2VzIG5v dCBleGNlZWQgdGhlIGdyb3VwIHNpemUgaW4gdGhlCi0JCSAqIHByZWNlZGluZyBzdGVwLgor CQkgKiBVbmlmb3JtIGRpc3RyaWJ1dGlvbnMgd2l0aCBhbGwgZ3JvdXBzIGJlaW5nIG9mIHRo ZSBzYW1lIHNpemUgYXJlIHRoZQorCQkgKiBiZXN0IGNhc2UsIHdpdGggbmljZSBzbW9vdGgg YmVoYXZpb3IuIFJlYWwtd29ybGQgZGlzdHJpYnV0aW9ucyB0ZW5kCisJCSAqIG5vdCB0byBi ZSB1bmlmb3JtLCB0aG91Z2gsIGFuZCB3ZSBkb27igJl0IGhhdmUgYW55IHJlbGlhYmxlIGVh c3ktdG8tdXNlCisJCSAqIGluZm9ybWF0aW9uLiBBcyBhIGJhc2ljIGRlZmVuc2UgYWdhaW5z dCBza2V3ZWQgZGlzdHJpYnV0aW9ucywgd2UgdXNlCisJCSAqIGEgMS41IGZhY3RvciB0byBt YWtlIHRoZSBleHBlY3RlZCBncm91cCBhIGJpdCBsYXJnZXIsIGJ1dCB3ZSBuZWVkIHRvCisJ CSAqIGJlIGNhcmVmdWwgbm90IHRvIG1ha2UgdGhlIGdyb3VwIGxhcmdlciB0aGFuIGluIHRo ZSBwcmVjZWRpbmcgc3RlcC4KIAkJICovCiAJCXR1cGxlc1BlclByZXZHcm91cCA9IE1pbih0 dXBsZXNQZXJQcmV2R3JvdXAsCiAJCQkJCQkJCSBjZWlsKDEuNSAqIHR1cGxlc1BlclByZXZH cm91cCAvIG5Hcm91cHMpKTsKIAogCQkvKgotCQkgKiBXZSBjb3VsZCBza2lwIGFsbCBmb2xs b3dpbmcgY29sdW1ucyBmb3IgY29zdCBlc3RpbWF0aW9uLCBiZWNhdXNlIHdlCi0JCSAqIGJl bGlldmUgdGhhdCB0dXBsZXMgYXJlIHVuaXF1ZSBieSB0aGUgc2V0IG9mIHByZXZpb3VzIGNv bHVtbnMKKwkJICogT25jZSB3ZSBnZXQgc2luZ2xlLXJvdyBncm91cCwgaXQgbWVhbnMgdHVw bGVzIGluIHRoZSBncm91cCBhcmUgdW5pcXVlCisJCSAqIGFuZCB3ZSBjYW4gc2tpcCBhbGwg cmVtYWluaW5nIGNvbHVtbnMuCiAJCSAqLwogCQlpZiAodHVwbGVzUGVyUHJldkdyb3VwIDw9 IDEuMCkKIAkJCWJyZWFrOwpAQCAtMjA0OSwxMiArMjA1NSwxMiBAQCBjb21wdXRlX2NwdV9z b3J0X2Nvc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnBhdGhrZXlzLCBpbnQgblByZXNv cnRlZEtleXMsCiAJICogQWNjb3JkaW5nbHkgdG8gIkludHJvZHVjdGlvbiB0byBhbGdvcml0 aG1zIiwgVGhvbWFzIEguIENvcm1lbiwgQ2hhcmxlcyBFLgogCSAqIExlaXNlcnNvbiwgUm9u YWxkIEwuIFJpdmVzdCwgSVNCTiAwLTA3LTAxMzE0My0wLCBxdWlja3NvcnQgZXN0aW1hdGlv bgogCSAqIGZvcm11bGEgaGFzIGFkZGl0aW9uYWwgdGVybSBwcm9wb3J0aW9uYWwgdG8gbnVt YmVyIG9mIHR1cGxlcyAoU2VlIENoYXB0ZXIKLQkgKiA4LjIgYW5kIFRoZW9yZW0gNC4xKS4g SXQgaGFzIG1lYW5pbmcgd2l0aCBsb3cgbnVtYmVyIG9mIHR1cGxlcywKLQkgKiBhcHByb3hp bWF0ZWx5IGxlc3MgdGhhdCAxZTQuIE9mIGNvdXJzZSwgaXQgY291bGQgYmUgaW1wbGVtZW50 ZWQgYXMKLQkgKiBhZGRpdGlvbmFsIG11bHRpcGxpZXIgdW5kZXIgbG9nYXJpdGhtLCBidXQg dXNlIG1vcmUgY29tcGxpY2F0ZWQgZm9ybXVsYQotCSAqIHdoaWNoIHRha2VzIGludG8gYWNj b3VudCBudW1iZXIgb2YgdW5pcXVlIHR1cGxlcyBhbmQgaXQgaXNuJ3QgY2xlYXIgaG93Ci0J ICogdG8gY29tYmluZSBtdWx0aXBsaWVyIHdpdGggZ3JvdXBzLiBFc3RpbWF0ZSBpdCBhcyAx MCBpbiBjcHVfb3BlcmF0b3JfY29zdAotCSAqIHVuaXQuCisJICogOC4yIGFuZCBUaGVvcmVt IDQuMSkuIFRoYXQgYWZmZWN0cyAgY2FzZXMgd2l0aCBhIGxvdyBudW1iZXIgb2YgdHVwbGVz LAorCSAqIGFwcHJveGltYXRlbHkgbGVzcyB0aGFuIDFlNC4gV2UgY291bGQgaW1wbGVtZW50 IGl0IGFzIGFuIGFkZGl0aW9uYWwKKwkgKiBtdWx0aXBsaWVyIHVuZGVyIHRoZSBsb2dhcml0 aG0sIGJ1dCB3ZSB1c2UgYSBiaXQgbW9yZSBjb21wbGV4IGZvcm11bGEKKwkgKiB3aGljaCB0 YWtlcyBpbnRvIGFjY291bnQgdGhlIG51bWJlciBvZiB1bmlxdWUgdHVwbGVzIGFuZCBpdOKA mXMgbm90IGNsZWFyCisJICogaG93IHRvIGNvbWJpbmUgdGhlIG11bHRpcGxpZXIgd2l0aCB0 aGUgbnVtYmVyIG9mIGdyb3Vwcy4gRXN0aW1hdGUgaXQgYXMKKwkgKiAxMCBpbiBjcHVfb3Bl cmF0b3JfY29zdCB1bml0LgogCSAqLwogCXBlcl90dXBsZV9jb3N0ICs9IDEwICogY3B1X29w ZXJhdG9yX2Nvc3Q7CiAKQEAgLTIxMTAsNyArMjExNiw3IEBAIGNvc3Rfc29ydF9lc3RpbWF0 ZShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqcGF0aGtleXMsIGludCBuUHJlc29ydGVkS2V5 cywKICAqICdzb3J0X21lbScgaXMgdGhlIG51bWJlciBvZiBraWxvYnl0ZXMgb2Ygd29yayBt ZW1vcnkgYWxsb3dlZCBmb3IgdGhlIHNvcnQKICAqICdsaW1pdF90dXBsZXMnIGlzIHRoZSBi b3VuZCBvbiB0aGUgbnVtYmVyIG9mIG91dHB1dCB0dXBsZXM7IC0xIGlmIG5vIGJvdW5kCiAg KiAnc3RhcnR1cF9jb3N0JyBpcyBleHBlY3RlZCB0byBiZSAwIGF0IGlucHV0LiBJZiB0aGVy ZSBpcyAiaW5wdXQgY29zdCIgaXQgc2hvdWxkCi0gKiBiZSBhZGRlZCBieSBjYWxsZXIgbGF0 ZXIuCisgKiBiZSBhZGRlZCBieSBjYWxsZXIgbGF0ZXIKICAqLwogc3RhdGljIHZvaWQKIGNv c3RfdHVwbGVzb3J0KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpwYXRoa2V5cywgQ29zdCAq c3RhcnR1cF9jb3N0LCBDb3N0ICpydW5fY29zdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2VxdWl2Y2xhc3MuYwppbmRleCA1NDg3YWUyZWU0Yy4uMjU4MzAyODQwZjggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKQEAgLTY4NSw5ICs2ODUs OSBAQCBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJ LyoKIAkJCQkgKiBNYXRjaCEKIAkJCQkgKgotCQkJCSAqIENvcHkgc29ydHJlZiBpZiBpdCB3 YXNuJ3Qgc2V0IHlldCwgaXQncyBwb3NzaWJsZSBpZiBlYyB3YXMKLQkJCQkgKiBjb25zdHJ1 Y3RlZCBmcm9tIFdIRVJFIGNsYXVzZSwgaWUgaXQgZG9lc24ndCBoYXZlIHRhcmdldAotCQkJ CSAqIHJlZmVyZW5jZSBhdCBhbGwKKwkJCQkgKiBDb3B5IHRoZSBzb3J0cmVmIGlmIGl0IHdh c24ndCBzZXQgeWV0LiBUaGF0IG1heSBoYXBwZW4gaWYgdGhlCisJCQkJICogZWMgd2FzIGNv bnN0cnVjdGVkIGZyb20gV0hFUkUgY2xhdXNlLCBpLmUuIGl0IGRvZXNuJ3QgaGF2ZSBhCisJ CQkJICogdGFyZ2V0IHJlZmVyZW5jZSBhdCBhbGwuCiAJCQkJICovCiAJCQkJaWYgKGN1cl9l Yy0+ZWNfc29ydHJlZiA9PSAwICYmIHNvcnRyZWYgPiAwKQogCQkJCQljdXJfZWMtPmVjX3Nv cnRyZWYgPSBzb3J0cmVmOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvcGF0aGtleXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMK aW5kZXggZmNjOTlmMGZiMWMuLjc5MTNkNjI2MjVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL3BhdGhrZXlzLmMKQEAgLTM2MiwxMiArMzYyLDEyIEBAIGdyb3VwX2tleXNfcmVv cmRlcl9ieV9wYXRoa2V5cyhMaXN0ICpwYXRoa2V5cywgTGlzdCAqKmdyb3VwX3BhdGhrZXlz LAogCiAJLyoKIAkgKiBXYWxrIHRoZSBwYXRoa2V5cyAoZGV0ZXJtaW5pbmcgb3JkZXJpbmcg b2YgdGhlIGlucHV0IHBhdGgpIGFuZCBzZWUgaWYKLQkgKiB0aGVyZSdzIGEgbWF0Y2hpbmcg R1JPVVAgQlkga2V5LiBJZiB3ZSBmaW5kIG9uZSwgd2UgYXBwZW5kIGlmIHRvIHRoZQorCSAq IHRoZXJlJ3MgYSBtYXRjaGluZyBHUk9VUCBCWSBrZXkuIElmIHdlIGZpbmQgb25lLCB3ZSBh cHBlbmQgaXQgdG8gdGhlCiAJICogbGlzdCwgYW5kIGRvIHRoZSBzYW1lIGZvciB0aGUgY2xh dXNlcy4KIAkgKgotCSAqIE9uY2Ugd2UgZmluZCBmaXJzdCBwYXRoa2V5IHdpdGhvdXQgYSBt YXRjaGluZyBHUk9VUCBCWSBrZXksIHRoZSByZXN0IG9mCi0JICogdGhlIHBhdGhrZXlzIGlz IHVzZWxlc3MgYW5kIGNhbid0IGJlIHVzZWQgdG8gZXZhbHVhdGUgdGhlIGdyb3VwaW5nLCBz bwotCSAqIHdlIGFib3J0IHRoZSBsb29wIGFuZCBpZ25vcmUgdGhlIHJlbWFpbmluZyBwYXRo a2V5cy4KKwkgKiBPbmNlIHdlIGZpbmQgdGhlIGZpcnN0IHBhdGhrZXkgd2l0aG91dCBhIG1h dGNoaW5nIEdST1VQIEJZIGtleSwgdGhlIHJlc3QKKwkgKiBvZiB0aGUgcGF0aGtleXMgYXJl IHVzZWxlc3MgYW5kIGNhbid0IGJlIHVzZWQgdG8gZXZhbHVhdGUgdGhlIGdyb3VwaW5nLAor CSAqIHNvIHdlIGFib3J0IHRoZSBsb29wIGFuZCBpZ25vcmUgdGhlIHJlbWFpbmluZyBwYXRo a2V5cy4KIAkgKgogCSAqIFhYWCBQYXRoa2V5cyBhcmUgYnVpbHQgaW4gYSB3YXkgdG8gYWxs b3cgc2ltcGx5IGNvbXBhcmluZyBwb2ludGVycy4KIAkgKi8KQEAgLTM5MSw4ICszOTEsNiBA QCBncm91cF9rZXlzX3Jlb3JkZXJfYnlfcGF0aGtleXMoTGlzdCAqcGF0aGtleXMsIExpc3Qg Kipncm91cF9wYXRoa2V5cywKIAkvKiByZW1lbWJlciB0aGUgbnVtYmVyIG9mIHBhdGhrZXlz IHdpdGggYSBtYXRjaGluZyBHUk9VUCBCWSBrZXkgKi8KIAluID0gbGlzdF9sZW5ndGgobmV3 X2dyb3VwX3BhdGhrZXlzKTsKIAotCS8qIFhYWCBtYXliZSByZXR1cm4gd2hlbiAobiA9PSAw KSAqLwotCiAJLyogYXBwZW5kIHRoZSByZW1haW5pbmcgZ3JvdXAgcGF0aGtleXMgKHdpbGwg YmUgdHJlYXRlZCBhcyBub3Qgc29ydGVkKSAqLwogCSpncm91cF9wYXRoa2V5cyA9IGxpc3Rf Y29uY2F0X3VuaXF1ZV9wdHIobmV3X2dyb3VwX3BhdGhrZXlzLAogCQkJCQkJCQkJCQkgKmdy b3VwX3BhdGhrZXlzKTsKQEAgLTUzMCw3ICs1MjgsNyBAQCBQYXRoa2V5TXV0YXRvck5leHQo UGF0aGtleU11dGF0b3JTdGF0ZSAqc3RhdGUpCiAJfQogCiAJLyogdXBkYXRlIHRoZSBsaXN0 IGNlbGxzIHRvIHBvaW50IHRvIHRoZSByaWdodCBlbGVtZW50cyAqLwotCWZvcihpPTA7IGk8 c3RhdGUtPm11dGF0b3JOQ29sdW1uczsgaSsrKQorCWZvcihpID0gMDsgaSA8IHN0YXRlLT5t dXRhdG9yTkNvbHVtbnM7IGkrKykKIAkJbGZpcnN0KHN0YXRlLT5lbGVtQ2VsbHNbaV0pID0K IAkJCSh2b2lkICopIHN0YXRlLT5lbGVtc1sgc3RhdGUtPnBvc2l0aW9uc1tpXSAtIDEgXTsK IApAQCAtNTk3LDE4ICs1OTUsMTggQEAgZ2V0X2NoZWFwZXN0X2dyb3VwX2tleXNfb3JkZXIo UGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKIAogCS8qCiAJICogV2UgY291bGQg ZXhoYXVzdGl2ZWx5IGNvc3QgYWxsIHBvc3NpYmxlIG9yZGVyaW5ncyBvZiB0aGUgcGF0aGtl eXMsIGJ1dCBmb3IKLQkgKiBsYXJnZSBudW1iZXIgb2YgcGF0aGtleXMgdGhhdCBtaWdodCBi ZSBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZS4gU28gd2UgdHJ5Ci0JICogdG8gYXBwbHkgYSBz aW1wbGUgY2hlYXAgaGV1cmlzdGljcyBmaXJzdCAtIHdlIHNvcnQgdGhlIHBhdGhrZXlzIGJ5 IHNvcnQKLQkgKiBjb3N0IChhcyBpZiB0aGUgcGF0aGtleSB3YXMgc29ydGVkIGluZGVwZW5k ZW50bHkpIGFuZCB0aGVuIGNoZWNrIG9ubHkgdGhlCi0JICogZm91ciBjaGVhcGVzdCBwYXRo a2V5cy4gVGhlIHJlbWFpbmluZyBwYXRoa2V5cyBhcmUga2VwdCBvcmRlcmVkIGJ5IGNvc3Qu CisJICogYSBsYXJnZSBudW1iZXIgb2YgcGF0aGtleXMgaXQgbWlnaHQgYmUgcHJvaGliaXRp dmVseSBleHBlbnNpdmUuIFNvIHdlIHRyeQorCSAqIHRvIGFwcGx5IHNpbXBsZSBjaGVhcCBo ZXVyaXN0aWNzIGZpcnN0IC0gd2Ugc29ydCB0aGUgcGF0aGtleXMgYnkgc29ydCBjb3N0CisJ ICogKGFzIGlmIHRoZSBwYXRoa2V5IHdhcyBzb3J0ZWQgaW5kZXBlbmRlbnRseSkgYW5kIHRo ZW4gY2hlY2sgb25seSB0aGUgZm91cgorCSAqIGNoZWFwZXN0IHBhdGhrZXlzLiBUaGUgcmVt YWluaW5nIHBhdGhrZXlzIGFyZSBrZXB0IG9yZGVyZWQgYnkgY29zdC4KIAkgKgotCSAqIFhY WCBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgaGV1cmlzdGljcywgYW5kIGxpa2VseSB0byB3b3Jr IGZpbmUgZm9yIG1vc3QKLQkgKiBjYXNlcyAoYmVjYXVzZSBudW1iZXIgb2YgR1JPVVAgQlkg Y2xhdXNlcyB0ZW5kcyB0byBiZSBsb3dlciB0aGFuIDQpLiBCdXQKLQkgKiBpdCBpZ25vcmVz IGhvdyB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHZhbHVlcyBpbiBlYWNoIHBhdGhrZXkgYWZm ZWN0cyB0aGUKLQkgKiBmb2xsb3dpbmcgc29ydHMuIEl0IG1heSBiZSBiZXR0ZXIgdG8gdXNl ICJtb3JlIGV4cGVuc2l2ZSIgcGF0aGtleSBmaXJzdAotCSAqIGlmIGl0IGhhcyBtYW55IGRp c3RpbmN0IHZhbHVlcywgYmVjYXVzZSBpdCB0aGVuIGxpbWl0cyB0aGUgbnVtYmVyIG9mCi0J ICogY29tcGFyaXNvbnMgZm9yIHRoZSByZW1haW5pbmcgcGF0aGtleXMuIEJ1dCBldmFsdWF0 aW5nIHRoYXQgaXMga2luZGEgdGhlCi0JICogZXhwZW5zaXZlIGJpdCB3ZSdyZSB0cnlpbmcg dG8gbm90IGRvLgorCSAqIFhYWCBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgaGV1cmlzdGljcywg YnV0IGxpa2VseSB0byB3b3JrIGZpbmUgZm9yIG1vc3QKKwkgKiBjYXNlcyAoYmVjYXVzZSB0 aGUgbnVtYmVyIG9mIEdST1VQIEJZIGNsYXVzZXMgdGVuZHMgdG8gYmUgbG93ZXIgdGhhbiA0 KS4KKwkgKiBCdXQgaXQgaWdub3JlcyBob3cgdGhlIG51bWJlciBvZiBkaXN0aW5jdCB2YWx1 ZXMgaW4gZWFjaCBwYXRoa2V5IGFmZmVjdHMKKwkgKiB0aGUgZm9sbG93aW5nIHN0ZXBzLiBJ dCBtaWdodCBiZSBiZXR0ZXIgdG8gdXNlICJtb3JlIGV4cGVuc2l2ZSIgcGF0aGtleQorCSAq IGZpcnN0IGlmIGl0IGhhcyBtYW55IGRpc3RpbmN0IHZhbHVlcywgYmVjYXVzZSBpdCB0aGVu IGxpbWl0cyB0aGUgbnVtYmVyCisJICogb2YgY29tcGFyaXNvbnMgZm9yIHRoZSByZW1haW5p bmcgcGF0aGtleXMuIEJ1dCBldmFsdWF0aW5nIHRoYXQgaXMgbGlrZWx5CisJICogcXVpdGUg dGhlIGV4cGVuc2l2ZS4KIAkgKi8KIAluRnJlZUtleXMgPSBsaXN0X2xlbmd0aCgqZ3JvdXBf cGF0aGtleXMpIC0gbl9wcmVvcmRlcmVkOwogCW5Ub1Blcm11dGUgPSA0OwpAQCAtNjQ5LDEx ICs2NDcsNyBAQCBnZXRfY2hlYXBlc3RfZ3JvdXBfa2V5c19vcmRlcihQbGFubmVySW5mbyAq cm9vdCwgZG91YmxlIG5yb3dzLAogCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBTaW5jZSB2 MTMgbGlzdF9mcmVlKCkgY2FuIGNsZWFuIGxpc3QgZWxlbWVudHMgc28gZm9yIG9yaWdpbmFs IGxpc3QKLQkJICogbm90IHRvIGJlIG1vZGlmaWVkIGl0IHNob3VsZCBiZSBjb3BpZWQgdG8g YSBuZXcgb25lIHdoaWNoIGNhbiB0aGVuCi0JCSAqIGJlIGNsZWFuZWQgc2FmZWx5IGlmIG5l ZWRlZC4KLQkJICovCisJCS8qIENvcHkgdGhlIGxpc3QsIHNvIHRoYXQgd2UgY2FuIGZyZWUg dGhlIG5ldyBsaXN0IGJ5IGxpc3RfZnJlZS4gKi8KIAkJbmV3X2dyb3VwX3BhdGhrZXlzID0g bGlzdF9jb3B5KCpncm91cF9wYXRoa2V5cyk7CiAJCW5Ub1Blcm11dGUgPSBuRnJlZUtleXM7 CiAJfQpAQCAtNjY3LDE4ICs2NjEsMTYgQEAgZ2V0X2NoZWFwZXN0X2dyb3VwX2tleXNfb3Jk ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKIAkgKiB0aGVyZSdzIHJvb20g Zm9yIHR3byBkeW5hbWljIHByb2dyYW1taW5nIG9wdGltaXphdGlvbnMgaGVyZS4gRmlyc3Rs eSwgd2UKIAkgKiBtYXkgcGFzcyB0aGUgY3VycmVudCAiYmVzdCIgY29zdCB0byBjb3N0X3Nv cnRfZXN0aW1hdGUgc28gdGhhdCBpdCBjYW4KIAkgKiAiYWJvcnQiIGlmIHRoZSBlc3RpbWF0 ZWQgcGF0aGtleXMgbGlzdCBleGNlZWRzIGl0LiBTZWNvbmRseSwgaXQgY291bGQgcGFzcwot CSAqIHJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9zaXRpb24gd2hlbiBpdCBleGNl ZWRlZCB0aGUgY29zdCwgYW5kIHdlCi0JICogY291bGQgc2tpcCBhbGwgcGVybXV0YXRpb25z IHdpdGggdGhlIHNhbWUgcHJlZml4LgorCSAqIHRoZSByZXR1cm4gaW5mb3JtYXRpb24gYWJv dXQgdGhlIHBvc2l0aW9uIHdoZW4gaXQgZXhjZWVkZWQgdGhlIGNvc3QsIGFuZAorCSAqIHdl IGNvdWxkIHNraXAgYWxsIHBlcm11dGF0aW9ucyB3aXRoIHRoZSBzYW1lIHByZWZpeC4KIAkg KgogCSAqIEltYWdpbmUgd2UndmUgYWxyZWFkeSBmb3VuZCBvcmRlcmluZyB3aXRoIGNvc3Qg QzEsIGFuZCB3ZSdyZSBldmFsdWF0aW5nCiAJICogYW5vdGhlciBvcmRlcmluZyAtIGNvc3Rf c29ydF9lc3RpbWF0ZSgpIGNhbGN1bGF0ZXMgY29zdCBieSBhZGRpbmcgdGhlCiAJICogcGF0 aGtleXMgb25lIGJ5IG9uZSAobW9yZSBvciBsZXNzKSwgYW5kIHRoZSBjb3N0IG9ubHkgZ3Jv d3MuIElmIGF0IGFueQogCSAqIHBvaW50IGl0IGV4Y2VlZHMgQzEsIGl0IGNhbid0IHBvc3Np Ymx5IGJlICJiZXR0ZXIiIHNvIHdlIGNhbiBkaXNjYXJkIGl0LgogCSAqIEJ1dCB3ZSBhbHNv IGtub3cgdGhhdCB3ZSBjYW4gZGlzY2FyZCBhbGwgb3JkZXJpbmcgd2l0aCB0aGUgc2FtZSBw cmVmaXgsCi0JICogYmVjYXVzZSBpZiB3ZSdyZSBlc3RpbWF0aW5nIChhLGIsYyxkKSBhbmQg d2UgZXhjZWVkZWQgQzEgYXQgKGEsYikgdGhlbgotCSAqIHRoZSBzYW1lIHRoaW5nIHdpbGwg aGFwcGVuIGZvciBhbnkgb3JkZXJpbmcgd2l0aCB0aGlzIHByZWZpeC4KLQkgKgotCSAqCisJ ICogYmVjYXVzZSBpZiB3ZSdyZSBlc3RpbWF0aW5nIChhLGIsYyxkKSBhbmQgd2UgZXhjZWVk IEMxIGF0IChhLGIpIHRoZW4gdGhlCisJICogc2FtZSB0aGluZyB3aWxsIGhhcHBlbiBmb3Ig YW55IG9yZGVyaW5nIHdpdGggdGhpcyBwcmVmaXguCiAJICovCiAJUGF0aGtleU11dGF0b3JJ bml0KCZtc3RhdGUsIG5ld19ncm91cF9wYXRoa2V5cywgbl9wcmVvcmRlcmVkLCBuX3ByZW9y ZGVyZWQgKyBuVG9QZXJtdXRlKTsKIApAQCAtNzIxLDcgKzcxMyw3IEBAIGdldF9jaGVhcGVz dF9ncm91cF9rZXlzX29yZGVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgbnJvd3MsCiAg KgkJRGV0ZXJtaW5lIHdoaWNoIG9yZGVyaW5ncyBvZiBHUk9VUCBCWSBrZXlzIGFyZSBwb3Rl bnRpYWxseSBpbnRlcmVzdGluZy4KICAqCiAgKiBSZXR1cm5zIGxpc3Qgb2YgUGF0aEtleUlu Zm8gaXRlbXMsIGVhY2ggcmVwcmVzZW50aW5nIGFuIGludGVyZXN0aW5nIG9yZGVyaW5nCi0g KiBvZiBHUk9VUCBCWSBrZXlzLiBFYWNoIGl0ZW1zIHN0b3JlcyBwYXRoa2V5cyBhbmQgY2xh dXNlcyBpbiBtYXRjaGluZyBvcmRlci4KKyAqIG9mIEdST1VQIEJZIGtleXMuIEVhY2ggaXRl bSBzdG9yZXMgcGF0aGtleXMgYW5kIGNsYXVzZXMgaW4gbWF0Y2hpbmcgb3JkZXIuCiAgKgog ICogVGhlIGZ1bmN0aW9uIGNvbnNpZGVycyAoYW5kIGtlZXBzKSBtdWx0aXBsZSBncm91cCBi eSBvcmRlcmluZ3M6CiAgKgpAQCAtNzMwLDE1ICs3MjIsMTUgQEAgZ2V0X2NoZWFwZXN0X2dy b3VwX2tleXNfb3JkZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKICAqIC0g R1JPVVAgQlkga2V5cyByZW9yZGVyZWQgdG8gbWluaW1pemUgdGhlIHNvcnQgY29zdAogICoK ICAqIC0gR1JPVVAgQlkga2V5cyByZW9yZGVyZWQgdG8gbWF0Y2ggcGF0aCBvcmRlcmluZyAo YXMgbXVjaCBhcyBwb3NzaWJsZSksIHdpdGgKLSAqICAgdGhlIHRhaWwgcmVvcmVkZXJlZCB0 byBtaW5pbWl6ZSB0aGUgc29ydCBjb3N0CisgKiAgIHRoZSB0YWlsIHJlb3JkZXJlZCB0byBt aW5pbWl6ZSB0aGUgc29ydCBjb3N0CiAgKgogICogLSBHUk9VUCBCWSBrZXlzIHRvIG1hdGNo IHRhcmdldCBPUkRFUiBCWSBjbGF1c2UgKGFzIG11Y2ggYXMgcG9zc2libGUpLCB3aXRoCi0g KiAgIHRoZSB0YWlsIHJlb3JlZGVyZWQgdG8gbWluaW1pemUgdGhlIHNvcnQgY29zdAorICog ICB0aGUgdGFpbCByZW9yZGVyZWQgdG8gbWluaW1pemUgdGhlIHNvcnQgY29zdAogICoKICAq IFRoZXJlIGFyZSBvdGhlciBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBvcmRlcmluZ3MgKGUu Zy4gaXQgbWlnaHQgYmUgYmVzdCB0bwogICogbWF0Y2ggdGhlIGZpcnN0IE9SREVSIEJZIGtl eSwgb3JkZXIgdGhlIHJlbWFpbmluZyBrZXlzIGRpZmZlcmVudGx5IGFuZCB0aGVuCi0gKiBy ZWx5IG9uIGluY3JlbWVudGFsIHNvcnQgdG8gZml4IHRoaXMpLCBidXQgd2UgaWdub3JlIHRo b3NlIGZvciBub3cuIFRvIG1ha2UKLSAqIHRoaXMgd29yayB3ZSdkIGhhdmUgdG8gcHJldHR5 IG11Y2ggZ2VuZXJhdGUgYWxsIHBvc3NpYmxlIHBlcm11dGF0aW9ucy4KKyAqIHJlbHkgb24g dGhlIGluY3JlbWVudGFsIHNvcnQgdG8gZml4IHRoaXMpLCBidXQgd2UgaWdub3JlIHRob3Nl IGZvciBub3cuIFRvCisgKiBtYWtlIHRoaXMgd29yayB3ZSdkIGhhdmUgdG8gcHJldHR5IG11 Y2ggZ2VuZXJhdGUgYWxsIHBvc3NpYmxlIHBlcm11dGF0aW9ucy4KICAqLwogTGlzdCAqCiBn ZXRfdXNlZnVsX2dyb3VwX2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpyb290LCBkb3Vi bGUgbnJvd3MsCkBAIC03NjEsOCArNzUzLDkgQEAgZ2V0X3VzZWZ1bF9ncm91cF9rZXlzX29y ZGVyaW5ncyhQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIG5yb3dzLAogCWluZm9zID0gbGFw cGVuZChpbmZvcywgaW5mbyk7CiAKIAkvKgotCSAqIElmIHRoZSBvcHRpbWl6YXRpb24gaXMg ZGlzYWJsZWQsIHdlIGNvbnNpZGVyIG9ubHkgdGhlIHBhdGhrZXkgb3JkZXIgYXMKLQkgKiBz cGVjaWZpZWQgaW4gdGhlIHF1ZXJ5LiBXZSBkb24ndCBkbyBhbnkgcmVvcmRlcmluZ3MuCisJ ICogU2hvdWxkIHdlIHRyeSBnZW5lcmF0aW5nIGFsdGVybmF0aXZlIG9yZGVyaW5ncyBvZiB0 aGUgZ3JvdXAga2V5cz8gSWYgbm90LAorCSAqIHdlIHByb2R1Y2Ugb25seSB0aGUgb3JkZXIg c3BlY2lmaWVkIGluIHRoZSBxdWVyeSwgaS5lLiB0aGUgb3B0aW1pemF0aW9uCisJICogaXMg ZWZmZWN0aXZlbHkgZGlzYWJsZWQuCiAJICovCiAJaWYgKCFlbmFibGVfZ3JvdXBfYnlfcmVv cmRlcmluZykKIAkJcmV0dXJuIGluZm9zOwpAQCAtODI2LDkgKzgxOSw2IEBAIGdldF91c2Vm dWxfZ3JvdXBfa2V5c19vcmRlcmluZ3MoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93 cywKIAkvKgogCSAqIFRyeSByZW9yZGVyaW5nIHBhdGhrZXlzIHRvIG1pbmltaXplIHRoZSBz b3J0IGNvc3QgKHRoaXMgdGltZSBjb25zaWRlcgogCSAqIHRoZSBPUkRFUiBCWSBjbGF1c2Us IGJ1dCBvbmx5IGlmIHNldCBkZWJ1Z19ncm91cF9ieV9tYXRjaF9vcmRlcl9ieSkuCi0JICoK LQkgKiBYWFggVGhpcyBkb2VzIG5vdGhpbmcgaWYgKG5fcHJlb3JkZXJlZCA9PSAwKS4gV2Ug c2hvdWxkbid0IGNyZWF0ZSB0aGUKLQkgKiBpbmZvIGluIHRoaXMgY2FzZS4KIAkgKi8KIAlp ZiAocm9vdC0+c29ydF9wYXRoa2V5cykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j CmluZGV4IDM2YzMwM2U0NWM1Li5mYjRmYjk4N2U3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKQEAgLTMyOTQsMTAgKzMyOTQsNyBAQCBhZGRfdW5pcXVlX2dyb3VwX3ZhcihQ bGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFyaW5mb3MsCiB9CiAKIC8qCi0gKiBlc3RpbWF0 ZV9udW1fZ3JvdXBzL2VzdGltYXRlX251bV9ncm91cHNfaW5jcmVtZW50YWwKLSAqCQktIEVz dGltYXRlIG51bWJlciBvZiBncm91cHMgaW4gYSBncm91cGVkIHF1ZXJ5LgotICoJCSAgX2lu Y3JlbWVudGFsIHZhcmlhbnQgaXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvcgotICoJ CSAgY2FzZSBvZiBhZGRpbmcgb25lLWJ5LW9uZSBjb2x1bW4KKyAqIGVzdGltYXRlX251bV9n cm91cHMJCS0gRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBpbiBhIGdyb3VwZWQgcXVlcnkK ICAqCiAgKiBHaXZlbiBhIHF1ZXJ5IGhhdmluZyBhIEdST1VQIEJZIGNsYXVzZSwgZXN0aW1h dGUgaG93IG1hbnkgZ3JvdXBzIHRoZXJlCiAgKiB3aWxsIGJlIC0tLSBpZSwgdGhlIG51bWJl ciBvZiBkaXN0aW5jdCBjb21iaW5hdGlvbnMgb2YgdGhlIEdST1VQIEJZCkBAIC0zMzc2LDYg KzMzNzMsMTEgQEAgZXN0aW1hdGVfbnVtX2dyb3VwcyhQbGFubmVySW5mbyAqcm9vdCwgTGlz dCAqZ3JvdXBFeHBycywgZG91YmxlIGlucHV0X3Jvd3MsCiAJCQkJCQkJCQkJICAgTlVMTCwg MCk7CiB9CiAKKy8qCisgKiBlc3RpbWF0ZV9udW1fZ3JvdXBzX2luY3JlbWVudGFsCisgKgkJ QW4gZXN0aW1hdGVfbnVtX2dyb3VwcyB2YXJpYW50LCBvcHRpbWl6ZWQgZm9yIGNhc2VzIHRo YXQgYXJlIGFkZGluZyB0aGUKKyAqCQlleHByZXNzaW9ucyBpbmNyZW1lbnRhbGx5IChlLmcu IG9uZSBieSBvbmUpLgorICovCiBkb3VibGUKIGVzdGltYXRlX251bV9ncm91cHNfaW5jcmVt ZW50YWwoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmdyb3VwRXhwcnMsCiAJCQkJCWRvdWJs ZSBpbnB1dF9yb3dzLApAQCAtMzM4Niw3ICszMzg4LDggQEAgZXN0aW1hdGVfbnVtX2dyb3Vw c19pbmNyZW1lbnRhbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZ3JvdXBFeHBycywKIAlk b3VibGUJCXNyZl9tdWx0aXBsaWVyID0gMS4wOwogCWRvdWJsZQkJbnVtZGlzdGluY3Q7CiAJ TGlzdENlbGwgICAqbDsKLQlpbnQJCQlpLCBqOworCWludAkJCWksCisJCQkJajsKIAogCS8q IFplcm8gdGhlIGVzdGluZm8gb3V0cHV0IHBhcmFtZXRlciwgaWYgbm9uLU5VTEwgKi8KIAlp ZiAoZXN0aW5mbyAhPSBOVUxMKQotLSAKMi4zNC4xCgo= --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0005-fixup-minor-simplification-20220328.patch" Content-Disposition: attachment; filename="0005-fixup-minor-simplification-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSAyM2M5NGQ1OWI0MTA5MzBjMWEwMTg3YzFjOGViMTMxOTk1YmEzY2NjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVHVlLCAyOSBNYXIgMjAyMiAwMjoyNjoxMyArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggNS83XSBmaXh1cDogbWlub3Igc2ltcGxpZmljYXRpb24KCi0tLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyB8IDExICstLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IGJiMGZlMGMyMmVlLi4zZTFk YWY4Yjg5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNp emUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC0y MDA0LDE3ICsyMDA0LDggQEAgY29tcHV0ZV9jcHVfc29ydF9jb3N0KFBsYW5uZXJJbmZvICpy b290LCBMaXN0ICpwYXRoa2V5cywgaW50IG5QcmVzb3J0ZWRLZXlzLAogCQl7CiAJCQlpZiAo aGVhcFNvcnQpCiAJCQl7Ci0JCQkJZG91YmxlIGhlYXBfdHVwbGVzOwotCiAJCQkJLyogaGF2 ZSB0byBrZWVwIGF0IGxlYXN0IG9uZSBncm91cCwgYW5kIGEgbXVsdGlwbGUgb2YgZ3JvdXAg c2l6ZSAqLwotCQkJCS8qIEZJWE1FIERvIHdlIGFjdHVhbGx5IG5lZWQgdGhlIE1heCwgaGVy ZT8gU3VyZWx5IHRoZSBjZWlsKCkgcmV0dXJucwotCQkJCSAqIGF0IGxlYXN0IDEuMCBoZXJl LCBubz8gKi8KLQkJCQloZWFwX3R1cGxlcyA9IE1heChjZWlsKG91dHB1dF90dXBsZXMgLyB0 dXBsZXNQZXJQcmV2R3JvdXApICogdHVwbGVzUGVyUHJldkdyb3VwLAotCQkJCQkJCQkgIHR1 cGxlc1BlclByZXZHcm91cCk7Ci0KLQkJCQkvKiBzbyBob3cgbWFueSAod2hvbGUpIGdyb3Vw cyBpcyB0aGF0PyAqLwotCQkJCS8qIEZJWE1FIHNvIHdoeSBub3QganVzdCBjZWlsKHB1dHB1 dF90dXBsZXMgLyB0dXBsZXNQZXJQcmV2R3JvdXApPyAqLwotCQkJCWNvcnJlY3RlZE5Hcm91 cHMgPSBjZWlsKGhlYXBfdHVwbGVzIC8gdHVwbGVzUGVyUHJldkdyb3VwKTsKKwkJCQljb3Jy ZWN0ZWROR3JvdXBzID0gY2VpbChvdXRwdXRfdHVwbGVzIC8gdHVwbGVzUGVyUHJldkdyb3Vw KTsKIAkJCX0KIAkJCWVsc2UKIAkJCQkvKiBhbGwgZ3JvdXBzIGluIHRoZSBpbnB1dCAqLwot LSAKMi4zNC4xCgo= --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0006-fixup-add-GUC-to-docs-20220328.patch" Content-Disposition: attachment; filename="0006-fixup-add-GUC-to-docs-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSAzMWExMzhlZmJiMjAzY2FlYmNmZTg2MzZmZDdiODczYzMzNjIyMDhlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVHVlLCAyOSBNYXIgMjAyMiAwMjo0NTo1MiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggNi83XSBmaXh1cDogYWRkIEdVQyB0byBkb2NzCgotLS0KIGRvYy9zcmMv c2dtbC9jb25maWcuc2dtbCB8IDE0ICsrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg MTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCAwNWRmNDgxMzFkNy4uMGMwZGU2 MWI4NTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NjEsNiArNDk2MSwyMCBAQCBBTlkgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVw bGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1ncm91cGJ5LXJlb3Jk ZXJpbmciIHhyZWZsYWJlbD0iZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmciPgorICAgICAg PHRlcm0+PHZhcm5hbWU+ZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmc8L3Zhcm5hbWU+ICg8 dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+ZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmc8L3Zhcm5hbWU+IGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAg ICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVu YWJsZXMgb3IgZGlzYWJsZXMgcmVvZGVyaW5nIG9mIGtleXMgaW4gPGxpdGVyYWw+R1JPVVAg Qlk8L2xpdGVyYWw+CisgICAgICAgIGNsYXVzZS4gVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ b248L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUt aGFzaGFnZyIgeHJlZmxhYmVsPSJlbmFibGVfaGFzaGFnZyI+CiAgICAgICA8dGVybT48dmFy bmFtZT5lbmFibGVfaGFzaGFnZzwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQog ICAgICAgPGluZGV4dGVybT4KLS0gCjIuMzQuMQoK --------------JTEy7hzMb4cjNSROqBqfZ0oc Content-Type: text/x-patch; charset=UTF-8; name="0007-demonstrate-disabled-optimization-20220328.patch" Content-Disposition: attachment; filename="0007-demonstrate-disabled-optimization-20220328.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZGQ1MDE2NjQ1OWQ2ZmIxYzEzMWQyMTVjZjc5MjM3ZGZkZmQ0YjA1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyOCBNYXIgMjAyMiAyMzozMToyOSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggNy83XSBkZW1vbnN0cmF0ZSBkaXNhYmxlZCBvcHRpbWl6YXRpb24KCnR3 ZWFrIHRlc3RzIHRvIHNob3cgY29zdGluZywgZGlzYWJsZSBvcHRpbWl6YXRpb24gdG8gc2hv dyB3aGF0IGNoYW5nZXMKLS0tCiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVz X2Zkdy5vdXQgICAgfCAgIDQgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jl c19mZHcuc3FsICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0 aGtleXMuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YWdncmVnYXRlcy5vdXQgICAgICB8IDE2OCArKysrKysrKystLS0tLS0tLS0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsICAgICAgICAgICB8ICAyNiArLS0KIDYgZmls ZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRl eCAyZmZjODM2ODI0YS4uYmQ4MjZlYWVkZDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMjczOSwxMSArMjczOSwxMSBA QCBzZWxlY3QgYzIgKiAocmFuZG9tKCkgPD0gMSk6OmludCBhcyBjMiBmcm9tIGZ0MiBncm91 cCBieSBjMiAqIChyYW5kb20oKSA8PSAxKTo6aQogKDkgcm93cykKIAogLS0gR1JPVVAgQlkg Y2xhdXNlIGluIHZhcmlvdXMgZm9ybXMsIGNhcmRpbmFsLCBhbGlhcyBhbmQgY29uc3RhbnQg ZXhwcmVzc2lvbgotZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb24pCiBzZWxlY3QgY291bnQoYzIpIHcsIGMyIHgsIDUgeSwgNy4wIHog ZnJvbSBmdDEgZ3JvdXAgYnkgMiwgeSwgOS4wOjppbnQgb3JkZXIgYnkgMjsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gRm9y ZWlnbiBTY2FuCisgRm9yZWlnbiBTY2FuICAoY29zdD0xMTAuNTAuLjEzMi44NSByb3dzPTEw IHdpZHRoPTUyKQogICAgT3V0cHV0OiAoY291bnQoYzIpKSwgYzIsIDUsIDcuMCwgOQogICAg UmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEpCiAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgY291bnQoYzIpLCBjMiwgNSwgNy4wLCA5IEZST00gIlMgMSIuIlQgMSIgR1JPVVAg QlkgMiwgMywgNSBPUkRFUiBCWSBjMiBBU0MgTlVMTFMgTEFTVApkaWZmIC0tZ2l0IGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCA5NWI2YjcxOTJlNi4uNjFiMDRk NmY5YTAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19m ZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3Fs CkBAIC03MzIsNyArNzMyLDcgQEAgZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogc2Vs ZWN0IGMyICogKHJhbmRvbSgpIDw9IDEpOjppbnQgYXMgYzIgZnJvbSBmdDIgZ3JvdXAgYnkg YzIgKiAocmFuZG9tKCkgPD0gMSk6OmludCBvcmRlciBieSAxOwogCiAtLSBHUk9VUCBCWSBj bGF1c2UgaW4gdmFyaW91cyBmb3JtcywgY2FyZGluYWwsIGFsaWFzIGFuZCBjb25zdGFudCBl eHByZXNzaW9uCi1leHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitleHBsYWluICh2ZXJi b3NlLCBjb3N0cyBvbikKIHNlbGVjdCBjb3VudChjMikgdywgYzIgeCwgNSB5LCA3LjAgeiBm cm9tIGZ0MSBncm91cCBieSAyLCB5LCA5LjA6OmludCBvcmRlciBieSAyOwogc2VsZWN0IGNv dW50KGMyKSB3LCBjMiB4LCA1IHksIDcuMCB6IGZyb20gZnQxIGdyb3VwIGJ5IDIsIHksIDku MDo6aW50IG9yZGVyIGJ5IDI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL3BhdGhrZXlzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5 cy5jCmluZGV4IDc5MTNkNjI2MjVkLi45NDg4Nzk4ZDQ0NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9wYXRoa2V5cy5jCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKIAogLyogQ29uc2lkZXIgcmVvcmRlcmluZyBvZiBHUk9VUCBCWSBr ZXlzPyAqLwotYm9vbCBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyA9IHRydWU7Citib29s IGVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nID0gZmFsc2U7CiAKIHN0YXRpYyBib29sIHBh dGhrZXlfaXNfcmVkdW5kYW50KFBhdGhLZXkgKm5ld19wYXRoa2V5LCBMaXN0ICpwYXRoa2V5 cyk7CiBzdGF0aWMgYm9vbCBtYXRjaGVzX2Jvb2xlYW5fcGFydGl0aW9uX2NsYXVzZShSZXN0 cmljdEluZm8gKnJpbmZvLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggOWU4YWIxNDIwZDku LmViYzk5MDQ0ODdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTExODksNyArMTE4OSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQog CQkJR1VDX0VYUExBSU4KIAkJfSwKIAkJJmVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nLAot CQl0cnVlLAorCQlmYWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAJewpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggNjAxMDQ3ZmEzZGQu LjI2ZWE1OWYwMTVlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Fn Z3JlZ2F0ZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRl cy5vdXQKQEAgLTEyMDYsMzUgKzEyMDYsMzUgQEAgc2VsZWN0IG1pbihmMSksIG1heChmMSkg ZnJvbSBtaW5tYXh0ZXN0OwogKDEgcm93KQogCiAtLSBESVNUSU5DVCBkb2Vzbid0IGRvIGFu eXRoaW5nIHVzZWZ1bCBoZXJlLCBidXQgaXQgc2hvdWxkbid0IGZhaWwKLWV4cGxhaW4gKGNv c3RzIG9mZikKK2V4cGxhaW4gKGNvc3RzIG9uKQogICBzZWxlY3QgZGlzdGluY3QgbWluKGYx KSwgbWF4KGYxKSBmcm9tIG1pbm1heHRlc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUgIChjb3N0PTEuNDAuLjEuNDEgcm93cz0x IHdpZHRoPTgpCiAgICBHcm91cCBLZXk6ICQwLCAkMQogICAgSW5pdFBsYW4gMSAocmV0dXJu cyAkMCkKLSAgICAgLT4gIExpbWl0Ci0gICAgICAgICAgIC0+ICBNZXJnZSBBcHBlbmQKKyAg ICAgLT4gIExpbWl0ICAoY29zdD0wLjY0Li4wLjY5IHJvd3M9MSB3aWR0aD00KQorICAgICAg ICAgICAtPiAgTWVyZ2UgQXBwZW5kICAoY29zdD0wLjY0Li4zOTQuNTAgcm93cz03ODY1IHdp ZHRoPTQpCiAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBtaW5tYXh0ZXN0LmYxCi0gICAg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgbWlubWF4dGVzdGkgb24g bWlubWF4dGVzdCBtaW5tYXh0ZXN0XzEKKyAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9u bHkgU2NhbiB1c2luZyBtaW5tYXh0ZXN0aSBvbiBtaW5tYXh0ZXN0IG1pbm1heHRlc3RfMSAg KGNvc3Q9MC4xNC4uMTYuNTkgcm93cz0yNTQgd2lkdGg9NCkKICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGYxIElTIE5PVCBOVUxMKQotICAgICAgICAgICAgICAgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIG1pbm1heHRlc3QxaSBvbiBtaW5tYXh0ZXN0MSBt aW5tYXh0ZXN0XzIKKyAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2lu ZyBtaW5tYXh0ZXN0MWkgb24gbWlubWF4dGVzdDEgbWlubWF4dGVzdF8yICAoY29zdD0wLjE1 Li45Mi41NSByb3dzPTI1Mzcgd2lkdGg9NCkKICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGYxIElTIE5PVCBOVUxMKQotICAgICAgICAgICAgICAgICAtPiAgSW5kZXgg T25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIG1pbm1heHRlc3QyaSBvbiBtaW5tYXh0ZXN0MiBt aW5tYXh0ZXN0XzMKKyAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiBCYWNr d2FyZCB1c2luZyBtaW5tYXh0ZXN0Mmkgb24gbWlubWF4dGVzdDIgbWlubWF4dGVzdF8zICAo Y29zdD0wLjE1Li45Mi41NSByb3dzPTI1Mzcgd2lkdGg9NCkKICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGYxIElTIE5PVCBOVUxMKQotICAgICAgICAgICAgICAgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIG1pbm1heHRlc3QzaSBvbiBtaW5tYXh0ZXN0MyBt aW5tYXh0ZXN0XzQKKyAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2lu ZyBtaW5tYXh0ZXN0M2kgb24gbWlubWF4dGVzdDMgbWlubWF4dGVzdF80ICAoY29zdD0wLjE0 Li43NC43OSByb3dzPTI1Mzcgd2lkdGg9NCkKICAgIEluaXRQbGFuIDIgKHJldHVybnMgJDEp Ci0gICAgIC0+ICBMaW1pdAotICAgICAgICAgICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgIC0+ ICBMaW1pdCAgKGNvc3Q9MC42NC4uMC42OSByb3dzPTEgd2lkdGg9NCkKKyAgICAgICAgICAg LT4gIE1lcmdlIEFwcGVuZCAgKGNvc3Q9MC42NC4uMzk0LjUwIHJvd3M9Nzg2NSB3aWR0aD00 KQogICAgICAgICAgICAgICAgICBTb3J0IEtleTogbWlubWF4dGVzdF81LmYxIERFU0MKLSAg ICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiBCYWNrd2FyZCB1c2luZyBtaW5t YXh0ZXN0aSBvbiBtaW5tYXh0ZXN0IG1pbm1heHRlc3RfNgorICAgICAgICAgICAgICAgICAt PiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIG1pbm1heHRlc3RpIG9uIG1pbm1h eHRlc3QgbWlubWF4dGVzdF82ICAoY29zdD0wLjE0Li4xNi41OSByb3dzPTI1NCB3aWR0aD00 KQogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoZjEgSVMgTk9UIE5VTEwp Ci0gICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcg bWlubWF4dGVzdDFpIG9uIG1pbm1heHRlc3QxIG1pbm1heHRlc3RfNworICAgICAgICAgICAg ICAgICAtPiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIG1pbm1heHRlc3QxaSBv biBtaW5tYXh0ZXN0MSBtaW5tYXh0ZXN0XzcgIChjb3N0PTAuMTUuLjkyLjU1IHJvd3M9MjUz NyB3aWR0aD00KQogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoZjEgSVMg Tk9UIE5VTEwpCi0gICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcg bWlubWF4dGVzdDJpIG9uIG1pbm1heHRlc3QyIG1pbm1heHRlc3RfOAorICAgICAgICAgICAg ICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIG1pbm1heHRlc3QyaSBvbiBtaW5tYXh0 ZXN0MiBtaW5tYXh0ZXN0XzggIChjb3N0PTAuMTUuLjkyLjU1IHJvd3M9MjUzNyB3aWR0aD00 KQogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoZjEgSVMgTk9UIE5VTEwp Ci0gICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcg bWlubWF4dGVzdDNpIG9uIG1pbm1heHRlc3QzIG1pbm1heHRlc3RfOQotICAgLT4gIFJlc3Vs dAorICAgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5n IG1pbm1heHRlc3QzaSBvbiBtaW5tYXh0ZXN0MyBtaW5tYXh0ZXN0XzkgIChjb3N0PTAuMTQu Ljc0Ljc5IHJvd3M9MjUzNyB3aWR0aD00KQorICAgLT4gIFJlc3VsdCAgKGNvc3Q9MS4zOC4u MS4zOSByb3dzPTEgd2lkdGg9OCkKICgyNSByb3dzKQogCiBzZWxlY3QgZGlzdGluY3QgbWlu KGYxKSwgbWF4KGYxKSBmcm9tIG1pbm1heHRlc3Q7CkBAIC0yNDU0LDcgKzI0NTQsNyBAQCBT RUxFQ1QKIAlmb3JtYXQoJyU2MHMnLCBpJTIpIEFTIHYsCiAJaS80IEFTIGMsCiAJaS84IEFT IGQsCi0JKHJhbmRvbSgpICogKDEwMDAwLzgpKTo6aW50IGFzIGUgLS10aGUgc2FtZSBhcyBk IGJ1dCBubyBjb3JyZWxhdGlvbiB3aXRoIHAKKwltb2QoaSAqIDc3MDMsIDEwMDAwLzgpOjpp bnQgYXMgZSAtLXRoZSBzYW1lIGFzIGQgYnV0IG5vIGNvcnJlbGF0aW9uIHdpdGggcAogCUlO VE8gYnRnCiBGUk9NCiAJZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBpOwpAQCAtMjQ2NCwx MjcgKzI0NjQsMTI3IEBAIEFOQUxZWkUgYnRnOwogU0VUIGVuYWJsZV9oYXNoYWdnPW9mZjsK IFNFVCBtYXhfcGFyYWxsZWxfd29ya2Vycz0gMDsKIFNFVCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMDsKLUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RT IG9uKQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHAsIHY7Ci0gICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEdyb3VwQWdncmVnYXRlICAoY29zdD0xMjQwLjc5Li4xMzkwLjgwIHJvd3M9NTAwMSB3aWR0 aD03MykKICAgIEdyb3VwIEtleTogcCwgdgotICAgLT4gIFNvcnQKKyAgIC0+ICBTb3J0ICAo Y29zdD0xMjQwLjc5Li4xMjY1Ljc5IHJvd3M9MTAwMDAgd2lkdGg9NjUpCiAgICAgICAgICBT b3J0IEtleTogcCwgdgotICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZworICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGJ0ZyAgKGNvc3Q9MC4wMC4uMjQzLjAwIHJvd3M9MTAwMDAgd2lk dGg9NjUpCiAoNSByb3dzKQogCi1FWFBMQUlOIChDT1NUUyBvZmYpCitFWFBMQUlOIChDT1NU UyBvbikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwOwotICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBHcm91cEFnZ3JlZ2F0ZSAgKGNvc3Q9MTI0MC43OS4uMTM5MC44MCByb3dzPTUwMDEgd2lk dGg9NzMpCiAgICBHcm91cCBLZXk6IHAsIHYKLSAgIC0+ICBTb3J0CisgICAtPiAgU29ydCAg KGNvc3Q9MTI0MC43OS4uMTI2NS43OSByb3dzPTEwMDAwIHdpZHRoPTY1KQogICAgICAgICAg U29ydCBLZXk6IHAsIHYKLSAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBidGcKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBidGcgIChjb3N0PTAuMDAuLjI0My4wMCByb3dzPTEwMDAwIHdp ZHRoPTY1KQogKDUgcm93cykKIAotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQTEFJTiAoQ09T VFMgb24pCiBTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgYzsKLSAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgR3JvdXBBZ2dyZWdhdGUgIChjb3N0PTEzMzUuNDMuLjE1MTAuNDQgcm93cz01MDAx IHdpZHRoPTc3KQogICAgR3JvdXAgS2V5OiBwLCBjLCB2Ci0gICAtPiAgU29ydAorICAgLT4g IFNvcnQgIChjb3N0PTEzMzUuNDMuLjEzNjAuNDMgcm93cz0xMDAwMCB3aWR0aD02OSkKICAg ICAgICAgIFNvcnQgS2V5OiBwLCBjLCB2Ci0gICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRn CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnICAoY29zdD0wLjAwLi4yNDMuMDAgcm93 cz0xMDAwMCB3aWR0aD02OSkKICg1IHJvd3MpCiAKLUVYUExBSU4gKENPU1RTIG9mZikKK0VY UExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYs IHAsIGMgT1JERVIgQlkgdiwgcCwgYzsKLSAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdyb3VwQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUgIChjb3N0 PTE3NTkuMzEuLjE5MzQuMzIgcm93cz01MDAxIHdpZHRoPTc3KQogICAgR3JvdXAgS2V5OiB2 LCBwLCBjCi0gICAtPiAgU29ydAorICAgLT4gIFNvcnQgIChjb3N0PTE3NTkuMzEuLjE3ODQu MzEgcm93cz0xMDAwMCB3aWR0aD02OSkKICAgICAgICAgIFNvcnQgS2V5OiB2LCBwLCBjCi0g ICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g YnRnICAoY29zdD0wLjAwLi4yNDMuMDAgcm93cz0xMDAwMCB3aWR0aD02OSkKICg1IHJvd3Mp CiAKLUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNv dW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHAsIGQsIGM7Ci0gICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdyb3Vw QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBB Z2dyZWdhdGUgIChjb3N0PTE0NjAuNDMuLjE2NjAuNDQgcm93cz01MDAxIHdpZHRoPTgxKQog ICAgR3JvdXAgS2V5OiBwLCBkLCBjLCB2Ci0gICAtPiAgU29ydAorICAgLT4gIFNvcnQgIChj b3N0PTE0NjAuNDMuLjE0ODUuNDMgcm93cz0xMDAwMCB3aWR0aD03MykKICAgICAgICAgIFNv cnQgS2V5OiBwLCBkLCBjLCB2Ci0gICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gYnRnICAoY29zdD0wLjAwLi4yNDMuMDAgcm93cz0xMDAw MCB3aWR0aD03MykKICg1IHJvd3MpCiAKLUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4g KENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHAsIGQs IGMgT1JERVIgQlkgdiwgcCwgZCAsYzsKLSAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gR3JvdXBBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZSAgKGNv c3Q9MTg5My40Ny4uMjA5My40OCByb3dzPTUwMDEgd2lkdGg9ODEpCiAgICBHcm91cCBLZXk6 IHYsIHAsIGQsIGMKLSAgIC0+ICBTb3J0CisgICAtPiAgU29ydCAgKGNvc3Q9MTg5My40Ny4u MTkxOC40NyByb3dzPTEwMDAwIHdpZHRoPTczKQogICAgICAgICAgU29ydCBLZXk6IHYsIHAs IGQsIGMKLSAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBidGcKKyAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBidGcgIChjb3N0PTAuMDAuLjI0My4wMCByb3dzPTEwMDAwIHdpZHRoPTczKQog KDUgcm93cykKIAotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQTEFJTiAoQ09TVFMgb24pCiBT RUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgZCwgYyBPUkRFUiBCWSBw LCB2LCBkICxjOwotICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlICAoY29zdD0xNDg0LjExLi4x Njg0LjEyIHJvd3M9NTAwMSB3aWR0aD04MSkKICAgIEdyb3VwIEtleTogcCwgdiwgZCwgYwot ICAgLT4gIFNvcnQKKyAgIC0+ICBTb3J0ICAoY29zdD0xNDg0LjExLi4xNTA5LjExIHJvd3M9 MTAwMDAgd2lkdGg9NzMpCiAgICAgICAgICBTb3J0IEtleTogcCwgdiwgZCwgYwotICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZworICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZyAg KGNvc3Q9MC4wMC4uMjQzLjAwIHJvd3M9MTAwMDAgd2lkdGg9NzMpCiAoNSByb3dzKQogCi1F WFBMQUlOIChDT1NUUyBvZmYpCitFWFBMQUlOIChDT1NUUyBvbikKIFNFTEVDVCBjb3VudCgq KSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBkLCBlOwotICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gR3JvdXBBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZSAg KGNvc3Q9MTMyNi4yNy4uMTUwMS4yOCByb3dzPTUwMDEgd2lkdGg9MjApCiAgICBHcm91cCBL ZXk6IHAsIGQsIGUKLSAgIC0+ICBTb3J0CisgICAtPiAgU29ydCAgKGNvc3Q9MTMyNi4yNy4u MTM1MS4yNyByb3dzPTEwMDAwIHdpZHRoPTEyKQogICAgICAgICAgU29ydCBLZXk6IHAsIGQs IGUKLSAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBidGcKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBidGcgIChjb3N0PTAuMDAuLjI0My4wMCByb3dzPTEwMDAwIHdpZHRoPTEyKQogKDUg cm93cykKIAotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQTEFJTiAoQ09TVFMgb24pCiBTRUxF Q1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgcCwgZSwgZDsKLSAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdyb3Vw QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR3JvdXBB Z2dyZWdhdGUgIChjb3N0PTEzMjYuMjcuLjE1MDEuMjggcm93cz01MDAxIHdpZHRoPTIwKQog ICAgR3JvdXAgS2V5OiBwLCBlLCBkCi0gICAtPiAgU29ydAorICAgLT4gIFNvcnQgIChjb3N0 PTEzMjYuMjcuLjEzNTEuMjcgcm93cz0xMDAwMCB3aWR0aD0xMikKICAgICAgICAgIFNvcnQg S2V5OiBwLCBlLCBkCi0gICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnCisgICAgICAgICAt PiAgU2VxIFNjYW4gb24gYnRnICAoY29zdD0wLjAwLi4yNDMuMDAgcm93cz0xMDAwMCB3aWR0 aD0xMikKICg1IHJvd3MpCiAKIENSRUFURSBTVEFUSVNUSUNTIGJ0Z19kZXAgT04gZCwgZSwg cCBGUk9NIGJ0ZzsKIEFOQUxZWkUgYnRnOwotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQTEFJ TiAoQ09TVFMgb24pCiBTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgcCwgZCwg ZTsKLSAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgR3JvdXBBZ2dyZWdhdGUgIChjb3N0PTEzMjYuMjcuLjE1NTEuMjcgcm93 cz0xMDAwMCB3aWR0aD0yMCkKICAgIEdyb3VwIEtleTogcCwgZCwgZQotICAgLT4gIFNvcnQK KyAgIC0+ICBTb3J0ICAoY29zdD0xMzI2LjI3Li4xMzUxLjI3IHJvd3M9MTAwMDAgd2lkdGg9 MTIpCiAgICAgICAgICBTb3J0IEtleTogcCwgZCwgZQotICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGJ0ZworICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJ0ZyAgKGNvc3Q9MC4wMC4uMjQz LjAwIHJvd3M9MTAwMDAgd2lkdGg9MTIpCiAoNSByb3dzKQogCi1FWFBMQUlOIChDT1NUUyBv ZmYpCitFWFBMQUlOIChDT1NUUyBvbikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9V UCBCWSBwLCBlLCBkOwotICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZSAgKGNvc3Q9MTMyNi4yNy4u MTU1MS4yNyByb3dzPTEwMDAwIHdpZHRoPTIwKQogICAgR3JvdXAgS2V5OiBwLCBlLCBkCi0g ICAtPiAgU29ydAorICAgLT4gIFNvcnQgIChjb3N0PTEzMjYuMjcuLjEzNTEuMjcgcm93cz0x MDAwMCB3aWR0aD0xMikKICAgICAgICAgIFNvcnQgS2V5OiBwLCBlLCBkCi0gICAgICAgICAt PiAgU2VxIFNjYW4gb24gYnRnCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYnRnICAoY29z dD0wLjAwLi4yNDMuMDAgcm93cz0xMDAwMCB3aWR0aD0xMikKICg1IHJvd3MpCiAKIC0tIEdS T1VQIEJZIG9wdGltaXphdGlvbiBieSByZW9yZGVyIGNvbHVtbnMgYnkgaW5kZXggc2Nhbgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAppbmRleCBjNmUwZDdiYTJiNy4uNjcx YTlkYWE2OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCkBAIC00MjUs NyArNDI1LDcgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0IG1pbihmMSksIG1heChm MSkgZnJvbSBtaW5tYXh0ZXN0OwogCiAtLSBESVNUSU5DVCBkb2Vzbid0IGRvIGFueXRoaW5n IHVzZWZ1bCBoZXJlLCBidXQgaXQgc2hvdWxkbid0IGZhaWwKLWV4cGxhaW4gKGNvc3RzIG9m ZikKK2V4cGxhaW4gKGNvc3RzIG9uKQogICBzZWxlY3QgZGlzdGluY3QgbWluKGYxKSwgbWF4 KGYxKSBmcm9tIG1pbm1heHRlc3Q7CiBzZWxlY3QgZGlzdGluY3QgbWluKGYxKSwgbWF4KGYx KSBmcm9tIG1pbm1heHRlc3Q7CiAKQEAgLTEwMzMsNyArMTAzMyw3IEBAIFNFTEVDVAogCWZv cm1hdCgnJTYwcycsIGklMikgQVMgdiwKIAlpLzQgQVMgYywKIAlpLzggQVMgZCwKLQkocmFu ZG9tKCkgKiAoMTAwMDAvOCkpOjppbnQgYXMgZSAtLXRoZSBzYW1lIGFzIGQgYnV0IG5vIGNv cnJlbGF0aW9uIHdpdGggcAorCW1vZChpICogNzcwMywgMTAwMDAvOCk6OmludCBhcyBlIC0t dGhlIHNhbWUgYXMgZCBidXQgbm8gY29ycmVsYXRpb24gd2l0aCBwCiAJSU5UTyBidGcKIEZS T00KIAlnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGk7CkBAIC0xMDQ3LDQwICsxMDQ3LDQw IEBAIFNFVCBlbmFibGVfaGFzaGFnZz1vZmY7CiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnM9 IDA7CiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CiAKLUVYUExB SU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZS T00gYnRnIEdST1VQIEJZIHAsIHY7CiAKLUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4g KENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHA7CiAK LUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNvdW50 KCopIEZST00gYnRnIEdST1VQIEJZIHYsIHAsIGM7CiAKLUVYUExBSU4gKENPU1RTIG9mZikK K0VYUExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZ IHYsIHAsIGMgT1JERVIgQlkgdiwgcCwgYzsKIAotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQ TEFJTiAoQ09TVFMgb24pCiBTRUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwg cCwgZCwgYzsKIAotRVhQTEFJTiAoQ09TVFMgb2ZmKQorRVhQTEFJTiAoQ09TVFMgb24pCiBT RUxFQ1QgY291bnQoKikgRlJPTSBidGcgR1JPVVAgQlkgdiwgcCwgZCwgYyBPUkRFUiBCWSB2 LCBwLCBkICxjOwogCi1FWFBMQUlOIChDT1NUUyBvZmYpCitFWFBMQUlOIChDT1NUUyBvbikK IFNFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSB2LCBwLCBkLCBjIE9SREVSIEJZ IHAsIHYsIGQgLGM7CiAKLUVYUExBSU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RTIG9u KQogU0VMRUNUIGNvdW50KCopIEZST00gYnRnIEdST1VQIEJZIHAsIGQsIGU7CiAKLUVYUExB SU4gKENPU1RTIG9mZikKK0VYUExBSU4gKENPU1RTIG9uKQogU0VMRUNUIGNvdW50KCopIEZS T00gYnRnIEdST1VQIEJZIHAsIGUsIGQ7CiAKIENSRUFURSBTVEFUSVNUSUNTIGJ0Z19kZXAg T04gZCwgZSwgcCBGUk9NIGJ0ZzsKIEFOQUxZWkUgYnRnOwogCi1FWFBMQUlOIChDT1NUUyBv ZmYpCitFWFBMQUlOIChDT1NUUyBvbikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9V UCBCWSBwLCBkLCBlOwogCi1FWFBMQUlOIChDT1NUUyBvZmYpCitFWFBMQUlOIChDT1NUUyBv bikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIGJ0ZyBHUk9VUCBCWSBwLCBlLCBkOwogCiAKLS0g CjIuMzQuMQoK --------------JTEy7hzMb4cjNSROqBqfZ0oc--