Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tfUs7-002pNf-TR for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Feb 2025 02:10:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tfUs6-00AjNa-AW for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Feb 2025 02:10:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tfUs5-00AjMG-EB for pgsql-hackers@lists.postgresql.org; Wed, 05 Feb 2025 02:10:33 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tfUs1-003EUP-22 for pgsql-hackers@lists.postgresql.org; Wed, 05 Feb 2025 02:10:32 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-54024ecc33dso6424148e87.0 for ; Tue, 04 Feb 2025 18:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1738721428; x=1739326228; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=iLWDRO7WpI9s1lRb0dmBeSqVTpjOtqMhH6DFOtaqSFY=; b=C+JL1GJC1dhHzqyD/qpMyYbQY96Q6SrvVT9htbcliVaeCq6VeK2rPfBGhJ0GIVVtrR gKHBZQfaylcUvcqQcxViNoOxD1rU+Sqy9vb910KspG7sjrhkNnX8EjZhoXtlqstjoCxN 5H6EofSn7OaoI3Hs1nYvOvrHisl94IZ/m6VWM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738721428; x=1739326228; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iLWDRO7WpI9s1lRb0dmBeSqVTpjOtqMhH6DFOtaqSFY=; b=lR72UMmSIFZwJpuea0AuW9c4wn7n8QqKokjbCtEkxQ54ohBTwkek3hRvUcDxkln4jY 3lYXb/LpVw5eYR+wLv3SHMwvGRHQONyz1HfADmU/Ua3BkaQPGz4MmX3ouNNnXusIWCDU 2bqzfxtOF4jMZV5M5dH3+oVIPFB/8tPIFqSFhEqIFMGPcrafUKTBq08yCsVqG37lLuxq 8YC5uhaJQuOviSSXDm3QHXne9fLc7+45vg4xBVCXHlsxT2KZFDeWIpQBszHIzrpKTNlR 4489WcWgW5Q3xDDmZYA3f0U2U3FJlvnPelnzGB10PGPdQiX8zQqr2CCG7duNB8S1esIx D6Ag== X-Forwarded-Encrypted: i=1; AJvYcCVNlACqgZ8Y96lwrMPiNnte64PXfn9pGVFdoFx6lTwn7laOYCOihiWlWSkHP+1fXveQuYzUsgocIieIKxqa@lists.postgresql.org X-Gm-Message-State: AOJu0YwSAgcVIcNtyfyRRhbECi0/djtMo6rrsYPzQB+7VGr0H9Q5TFv+ 0l5aV/iycQVOvt1zP2E8hkm7tB6XQC4id9NK/LZaCUMyT6zsqZcesuwFs2LCbZACCobf6jW/eRH 68x/JGNlRIYcLaH7bFY5hhhfBgEyqHD55kyNI X-Gm-Gg: ASbGncu64LY/9IWcjZOqH2oY/YRBR3s6mg9WM2PFh9875+8VBkLrLupprMpu+c3EwRu 6ocKd87F1nGn+22CLpc0Da3elEfURkxp82gAULtnBLdlLizB7ftnbII7CK1eAVYeE61UFiewf0f Upj1FTjjblwZ7EGgKZ/t6HHGxnqynToA== X-Google-Smtp-Source: AGHT+IE9QEo5qqxLjgbMmRV1ZOC6lRxwcEh0VToJQOLrQq/dQJM8ec8Q+FSNjzfjZWI284rpkMxI19J8IpSLemsFdsw= X-Received: by 2002:a05:6512:368b:b0:53e:39ed:85e6 with SMTP id 2adb3069b0e04-54405a6ff4amr234888e87.32.1738721428050; Tue, 04 Feb 2025 18:10:28 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Lukas Fittl Date: Tue, 4 Feb 2025 18:09:50 -0800 X-Gm-Features: AWEUYZkF8tikHH4iL0KIw4HnG8fIOx1iDdJPTnIq4wO2cP2KOaIXluDcQpoQP7I Message-ID: Subject: Re: [PATCH] Optionally record Plan IDs to track plan changes for a query To: Sami Imseih Cc: Michael Paquier , PostgreSQL Hackers , Marko M Content-Type: multipart/mixed; boundary="000000000000155516062d5ba1a7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000155516062d5ba1a7 Content-Type: multipart/alternative; boundary="000000000000155514062d5ba1a5" --000000000000155514062d5ba1a5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Looks like some emails were sent before I could send my draft email, but hopefully this should make the follow up work easier :) Attached a v4 patch set with a few minor changes to plan ID jumbling: * Range table jumbling is now done in a separate JumbleRangeTable function after setrefs.c walked the tree - this way we avoid having custom logic for RT Indexes in the node jumbling, and keeping a reference to PlannerGlobal in the jumble struct * Moved the JumbleNode call to the bottom of the set_plan_references function for clarity - previously it was before descending into inner/outer plan, but after some other recursive calls to set_plan_references, which didn't really make sense * Fixed a bug with JUMBLE_ARRAY incorrectly taking the reference of the array (which caused planid to change incorrectly between runs) * Added JUMBLE_BITMAPSET Further, I've significantly reduced the number of fields ignored for plan jumbling: Basically the approach taken in this version is that only things that would negatively affect the planid (i.e. make it unique when it shouldn't be) are ignored, vs ignoring duplicate fields and fields that are only used by the executor (which is what v1-v3 did). I'm not 100% sure that's the right approach (but it does keep the diff a good amount smaller), I think the tradeoff here is basically jumbling performance vs maintenance overhead when fields are added/changed. This does not yet move field-specific comments to their own line in nodes where we're adding node attributes, I'll leave that for Sami to work on. On Tue, Feb 4, 2025 at 3:15=E2=80=AFPM Sami Imseih wr= ote: > >> Separately I've been thinking how we could best have a > discussion/review on > >> whether the jumbling of specific plan struct fields is correct. I was > >> thinking maybe a quick wiki page could be helpful, noting why to > jumble/not > >> jumble certain fields? > > > Makes sense. This is a complicated topic. > > +1 for the Wiki page > Started here: https://wiki.postgresql.org/wiki/Plan_ID_Jumbling Thanks, Lukas --=20 Lukas Fittl --000000000000155514062d5ba1a5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Looks like some emails were sent before I could send = my draft email, but hopefully this should make the follow up work easier :)=

Attached a v4 patch set with a few minor cha= nges to plan ID jumbling:

* Range table jumbling is now done in a separate=C2=A0JumbleRangeTable=20 function after setrefs.c walked the tree - this way we avoid having=20 custom logic for RT Indexes in the node jumbling, and keeping a reference t= o PlannerGlobal in the jumble struct
* Moved the=20 JumbleNode call to the bottom of the set_plan_references function for=20 clarity - previously it was before descending into inner/outer plan, but=20 after some other recursive calls to set_plan_references, which didn't= =20 really make sense
* Fixed a bug with JUMBLE_ARRAY incorrectly taking the reference of the array (which caused planid to change=20 incorrectly between runs)
* Added JUMBLE_BITMAPSET
=
Further, I've=20 significantly reduced the number of fields ignored for plan jumbling:
=

Basically the approach taken in this version is that on= ly things that=20 would negatively affect the planid (i.e. make it unique when it=20 shouldn't be) are ignored, vs ignoring duplicate fields and fields that= =20 are only used by the executor (which is what v1-v3 did). I'm not 100% s= ure that's the right approach (but it does keep the diff a good amount smaller), I think = the tradeoff here is basically jumbling=20 performance vs maintenance overhead when fields are added/changed.

This does not yet move field-specific comments to=20 their own line in nodes where we're adding node attributes, I'll le= ave that for Sami to work on.

On Tue, Feb 4, 2025 at 3:15=E2=80=AFPM Sami Imseih <samimseih@gmail.com&= gt; wrote:
>> Separately I've been thinking how we could b= est have a discussion/review on
>> whether the jumbling of specific plan struct fields is correct. I = was
>> thinking maybe a quick wiki page could be helpful, noting why to j= umble/not
>> jumble certain fields?

> Makes sense.=C2=A0 This is a complicated topic.

+1 for the Wiki page


Thanks,
Lukas

<= span class=3D"gmail_signature_prefix">--
Lukas Fittl
--000000000000155514062d5ba1a5-- --000000000000155516062d5ba1a7 Content-Type: application/octet-stream; name="v4-0002-Optionally-record-a-plan_id-in-PlannedStmt-to-ide.patch" Content-Disposition: attachment; filename="v4-0002-Optionally-record-a-plan_id-in-PlannedStmt-to-ide.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6r958le1 RnJvbSA1OTIyN2UwNDZjZjI4NDhiMzRhYzc3NzQxZDA0MGI2ZTQ4OWJlMWJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIgRmViIDIwMjUgMTI6MTg6NDkgLTA4MDAKU3ViamVjdDogW1BBVENIIHY0IDIvM10gT3B0 aW9uYWxseSByZWNvcmQgYSBwbGFuX2lkIGluIFBsYW5uZWRTdG10IHRvIGlkZW50aWZ5CiBwbGFu IHNoYXBlCgpXaGVuIGVuYWJsZWQgdmlhIHRoZSBuZXcgY29tcHV0ZV9wbGFuX2lkIEdVQyAoZGVm YXVsdCBvZmYpLCB0aGlzIHV0aWxpemVzCnRoZSBleGlzdGluZyB0cmVld2FsayBpbiBzZXRyZWZz LmMgYWZ0ZXIgcGxhbm5pbmcgdG8gY2FsY3VsYXRlIGEgaGFzaAoodGhlICJwbGFuX2lkIiwgb3Ig cGxhbiBpZGVudGlmaWVyKSB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5CndoaWNoIHBsYW4g d2FzIGNob3Nlbi4KClRoZSBwbGFuX2lkIGdlbmVyYWxseSBpbnRlbmRzIHRvIGJlIHRoZSBzYW1l IGlmIGEgZ2l2ZW4gRVhQTEFJTiAod2l0aG91dApBTkFMWVpFKSBvdXRwdXQgaXMgdGhlIHNhbWUu IFRoZSBwbGFuX2lkIGluY2x1ZGVzIGJvdGggdGhlIHRvcC1sZXZlbCBwbGFuCmFzIHdlbGwgYXMg YWxsIHN1YnBsYW5zLiBFeGVjdXRpb24gc3RhdGlzdGljcyBhcmUgZXhjbHVkZWQuCgpJZiBlbmFi bGVkLCB0aGUgcGxhbl9pZCBpcyBzaG93biBmb3IgY3VycmVudGx5IHJ1bm5pbmcgcXVlcmllcyBp bgpwZ19zdGF0X2FjdGl2aXR5LCBhcyB3ZWxsIGFzIHJlY29yZGVkIGluIEVYUExBSU4gYW5kIGF1 dG9fZXhwbGFpbiBvdXRwdXQuCgpPdGhlciBpbiBjb3JlIHVzZXJzIG9yIGV4dGVuc2lvbnMgY2Fu IHVzZSB0aGlzIGZhY2lsaXR5IHRvIHNob3cgb3IKYWNjdW11bGF0ZSBzdGF0aXN0aWNzIGFib3V0 IHRoZSBwbGFucyB1c2VkIGJ5IHF1ZXJpZXMsIHRvIGhlbHAgaWRlbnRpZnkKcGxhbiByZWdyZXNz aW9ucywgb3IgZHJpdmUgcGxhbiBtYW5hZ2VtZW50IGRlY2lzaW9ucy4KCk5vdGUgdGhhdCB0aGlz IGNvbW1pdCBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGluY2x1ZGUgYSBmYWNpbGl0eSB0byBtYXAK YSBnaXZlbiBwbGFuX2lkIHRvIHRoZSBFWFBMQUlOIHRleHQgb3V0cHV0IC0gaXQgaXMgYSBhc3N1 bWVkIHRoYXQgdXNlcnMKY2FuIHV0aWxpemUgdGhlIGF1dG9fZXhwbGFpbiBleHRlbnNpb24gdG8g ZXN0YWJsaXNoIHRoaXMgbWFwcGluZyBhcwpuZWVkZWQsIG9yIGV4dGVuc2lvbnMgY2FuIHJlY29y ZCB0aGlzIHZpYSB0aGUgZXhpc3RpbmcgcGxhbm5lciBob29rLgotLS0KIGRvYy9zcmMvc2dtbC9j b25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKysKIGRvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxNiArKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAxNiArKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvZ2Vu X25vZGVfc3VwcG9ydC5wbCAgICAgICAgIHwgIDM2ICsrLQogc3JjL2JhY2tlbmQvbm9kZXMvcXVl cnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDY1ICsrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgMTkgKysKIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2xhdW5jaF9iYWNrZW5kLmMgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L2JhY2tlbmRfc3RhdHVzLmMgICB8ICA3MCArKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyAgICAgICAgICAgfCAgMjggKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAg ICAgICAgICAgICAgICAgfCAyNDMgKysrKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL25vZGVz L3F1ZXJ5anVtYmxlLmggICAgICAgICAgICAgICB8ICAzMCArKy0KIHNyYy9pbmNsdWRlL3V0aWxz L2JhY2tlbmRfc3RhdHVzLmggICAgICAgICAgICB8ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2V4cGxhaW4ub3V0ICAgICAgICAgfCAgMTEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9l eHBsYWluLnNxbCAgICAgICAgICAgICAgfCAgIDQgKwogMjUgZmlsZXMgY2hhbmdlZCwgNTI5IGlu c2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggYTc4MmYxMDk5ODIu Ljg1YTFlMGQ4ZDRiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC04NDA2LDYgKzg0MDYsNDAgQEAgQ09QWSBwb3N0 Z3Jlc19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtY29tcHV0ZS1wbGFuLWlkIiB4cmVmbGFiZWw9ImNvbXB1dGVfcGxhbl9pZCI+Cisg ICAgICA8dGVybT48dmFybmFtZT5jb21wdXRlX3BsYW5faWQ8L3Zhcm5hbWU+ICg8dHlwZT5lbnVt PC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+Y29t cHV0ZV9wbGFuX2lkPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIGluLWNvcmUgY29tcHV0YXRpb24gb2YgYSBwbGFu IGlkZW50aWZpZXIuCisgICAgICAgIFBsYW4gaWRlbnRpZmllcnMgY2FuIGJlIGRpc3BsYXllZCBp biB0aGUgPGxpbmsKKyAgICAgICAgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWFjdGl2aXR5 LXZpZXciPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfYWN0aXZpdHk8L3N0cnVjdG5hbWU+PC9saW5rPgor ICAgICAgICB2aWV3IG9yIHVzaW5nIDxjb21tYW5kPkVYUExBSU48L2NvbW1hbmQ+LgorICAgICAg ICBOb3RlIHRoYXQgYW4gZXh0ZXJuYWwgbW9kdWxlIGNhbiBhbHRlcm5hdGl2ZWx5IGJlIHVzZWQg aWYgdGhlCisgICAgICAgIGluLWNvcmUgcGxhbiBpZGVudGlmaWVyIGNvbXB1dGF0aW9uIG1ldGhv ZCBpcyBub3QgYWNjZXB0YWJsZS4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCBpbi1jb3JlIGNvbXB1 dGF0aW9uIG11c3QgYmUgYWx3YXlzIGRpc2FibGVkLgorICAgICAgICBWYWxpZCB2YWx1ZXMgYXJl IDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4gKGFsd2F5cyBkaXNhYmxlZCksCisgICAgICAgIDxsaXRl cmFsPm9uPC9saXRlcmFsPiAoYWx3YXlzIGVuYWJsZWQpLCA8bGl0ZXJhbD5hdXRvPC9saXRlcmFs PiwKKyAgICAgICAgd2hpY2ggbGV0cyBtb2R1bGVzIHRoYXQgdXRpbGl6ZSBwbGFuIGlkZW50aWZp ZXJzIGVuYWJsZQorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5LCBhbmQgPGxpdGVyYWw+cmVncmVz czwvbGl0ZXJhbD4gd2hpY2gKKyAgICAgICAgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyA8bGl0ZXJh bD5vbjwvbGl0ZXJhbD4sIGV4Y2VwdCB0aGF0IHRoZQorICAgICAgICBxdWVyeSBpZGVudGlmaWVy IGlzIG5vdCBzaG93biBpbiB0aGUgPGxpdGVyYWw+RVhQTEFJTjwvbGl0ZXJhbD4gb3V0cHV0Cisg ICAgICAgIGluIG9yZGVyIHRvIGZhY2lsaXRhdGUgYXV0b21hdGVkIHJlZ3Jlc3Npb24gdGVzdGlu Zy4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4uCisgICAg ICAgPC9wYXJhPgorICAgICAgIDxub3RlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRvIGVu c3VyZSB0aGF0IG9ubHkgb25lIHBsYW4gaWRlbnRpZmllciBpcyBjYWxjdWxhdGVkIGFuZAorICAg ICAgICAgZGlzcGxheWVkLCBleHRlbnNpb25zIHRoYXQgY2FsY3VsYXRlIHBsYW4gaWRlbnRpZmll cnMgc2hvdWxkCisgICAgICAgICB0aHJvdyBhbiBlcnJvciBpZiBhIHBsYW4gaWRlbnRpZmllciBo YXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9ub3Rl PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxp c3RlbnRyeSBpZD0iZ3VjLWxvZy1zdGF0ZW1lbnQtc3RhdHMiPgogICAgICAgPHRlcm0+PHZhcm5h bWU+bG9nX3N0YXRlbWVudF9zdGF0czwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQog ICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGVkYzI0NzBiY2Y5Li42NGU2 MmEwOTA1OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC05NzIsNiArOTcyLDIyIEBAIHBvc3RncmVz ICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAgMDow MCBwb3N0Z3Jlczogc2VyCiAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGxhbl9pZDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIElkZW50aWZpZXIgb2YgdGhpcyBiYWNrZW5kJ3MgbW9zdCByZWNlbnQgcXVlcnkg cGxhbi4gSWYKKyAgICAgICA8c3RydWN0ZmllbGQ+c3RhdGU8L3N0cnVjdGZpZWxkPiBpcyA8bGl0 ZXJhbD5hY3RpdmU8L2xpdGVyYWw+IHRoaXMKKyAgICAgICBmaWVsZCBzaG93cyB0aGUgaWRlbnRp ZmllciBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBxdWVyeSBwbGFuLiBJbgorICAgICAgIGFs bCBvdGhlciBzdGF0ZXMsIGl0IHNob3dzIHRoZSBpZGVudGlmaWVyIG9mIGxhc3QgcXVlcnkgcGxh biB0aGF0CisgICAgICAgd2FzIGV4ZWN1dGVkLiAgUGxhbiBpZGVudGlmaWVycyBhcmUgbm90IGNv bXB1dGVkIGJ5IGRlZmF1bHQgc28gdGhpcworICAgICAgIGZpZWxkIHdpbGwgYmUgbnVsbCB1bmxl c3MgPHhyZWYgbGlua2VuZD0iZ3VjLWNvbXB1dGUtcGxhbi1pZCIvPgorICAgICAgIHBhcmFtZXRl ciBpcyBlbmFibGVkIG9yIGEgdGhpcmQtcGFydHkgbW9kdWxlIHRoYXQgY29tcHV0ZXMgcGxhbgor ICAgICAgIGlkZW50aWZpZXJzIGlzIGNvbmZpZ3VyZWQuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVj dGZpZWxkPnF1ZXJ5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCBjZGRjM2VhOWI1My4uZDNkNTU3OGQyYzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTg4OSw2ICs4ODksNyBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2FjdGl2aXR5IEFTCiAgICAgICAgICAgICBTLmJhY2tlbmRfeGlkLAogICAg ICAgICAgICAgcy5iYWNrZW5kX3htaW4sCiAgICAgICAgICAgICBTLnF1ZXJ5X2lkLAorICAgICAg ICAgICAgUy5wbGFuX2lkLAogICAgICAgICAgICAgUy5xdWVyeSwKICAgICAgICAgICAgIFMuYmFj a2VuZF90eXBlCiAgICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMKSBBUyBTCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKaW5kZXggYzI0ZTY2ZjgyZTEuLjMxYTE3NjFmNTM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCkBAIC05NjYsNiArOTY2LDIyIEBAIEV4cGxhaW5QcmludFBsYW4oRXhwbGFp blN0YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVn ZXIoIlF1ZXJ5IElkZW50aWZpZXIiLCBOVUxMLCAoaW50NjQpCiAJCQkJCQkJICAgcXVlcnlEZXNj LT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZXMpOwogCX0KKworCS8qCisJICogQ09NUFVURV9QTEFO X0lEX1JFR1JFU1MgbWVhbnMgQ09NUFVURV9QTEFOX0lEX1lFUywgYnV0IHdlIGRvbid0IHNob3cK KwkgKiB0aGUgcXVlcnlpZCBpbiBhbnkgb2YgdGhlIEVYUExBSU4gcGxhbnMgdG8ga2VlcCBzdGFi bGUgdGhlIHJlc3VsdHMKKwkgKiBnZW5lcmF0ZWQgYnkgcmVncmVzc2lvbiB0ZXN0IHN1aXRlcy4K KwkgKi8KKwlpZiAoZXMtPnZlcmJvc2UgJiYgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cGxhbklk ICE9IFVJTlQ2NENPTlNUKDApICYmCisJCWNvbXB1dGVfcGxhbl9pZCAhPSBDT01QVVRFX1BMQU5f SURfUkVHUkVTUykKKwl7CisJCS8qCisJCSAqIE91dHB1dCB0aGUgcXVlcnlpZCBhcyBhbiBpbnQ2 NCByYXRoZXIgdGhhbiBhIHVpbnQ2NCBzbyB3ZSBtYXRjaAorCQkgKiB3aGF0IHdvdWxkIGJlIHNl ZW4gaW4gdGhlIEJJR0lOVCBwZ19zdGF0X2FjdGl2aXR5LnBsYW5faWQgY29sdW1uLgorCQkgKi8K KwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiUGxhbiBJZGVudGlmaWVyIiwgTlVMTCwgKGludDY0 KQorCQkJCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnBsYW5JZCwgZXMpOworCX0KIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDYwNGNiMDYyNWI4Li42ODkwMDgyZDc0 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjEsMTMgKzEyMSwxNSBAQCBFeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCS8qCiAJICogSW4g c29tZSBjYXNlcyAoZS5nLiBhbiBFWEVDVVRFIHN0YXRlbWVudCBvciBhbiBleGVjdXRlIG1lc3Nh Z2Ugd2l0aCB0aGUKLQkgKiBleHRlbmRlZCBxdWVyeSBwcm90b2NvbCkgdGhlIHF1ZXJ5X2lkIHdv bid0IGJlIHJlcG9ydGVkLCBzbyBkbyBpdCBub3cuCisJICogZXh0ZW5kZWQgcXVlcnkgcHJvdG9j b2wpIHRoZSBxdWVyeV9pZCBhbmQgcGxhbl9pZCB3b24ndCBiZSByZXBvcnRlZCwgc28KKwkgKiBk byBpdCBub3cuCiAJICoKLQkgKiBOb3RlIHRoYXQgaXQncyBoYXJtbGVzcyB0byByZXBvcnQgdGhl IHF1ZXJ5X2lkIG11bHRpcGxlIHRpbWVzLCBhcyB0aGUKLQkgKiBjYWxsIHdpbGwgYmUgaWdub3Jl ZCBpZiB0aGUgdG9wIGxldmVsIHF1ZXJ5X2lkIGhhcyBhbHJlYWR5IGJlZW4KLQkgKiByZXBvcnRl ZC4KKwkgKiBOb3RlIHRoYXQgaXQncyBoYXJtbGVzcyB0byByZXBvcnQgdGhlIGlkZW50aWZpZXJz IG11bHRpcGxlIHRpbWVzLCBhcworCSAqIHRoZSBjYWxsIHdpbGwgYmUgaWdub3JlZCBpZiB0aGUg dG9wIGxldmVsIHF1ZXJ5X2lkIC8gcGxhbl9pZCBoYXMKKwkgKiBhbHJlYWR5IGJlZW4gcmVwb3J0 ZWQuCiAJICovCiAJcGdzdGF0X3JlcG9ydF9xdWVyeV9pZChxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5xdWVyeUlkLCBmYWxzZSk7CisJcGdzdGF0X3JlcG9ydF9wbGFuX2lkKHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPnBsYW5JZCwgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2Up OwogCiAJaWYgKEV4ZWN1dG9yU3RhcnRfaG9vaykKIAkJKCpFeGVjdXRvclN0YXJ0X2hvb2spIChx dWVyeURlc2MsIGVmbGFncyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDlj MzEzZDgxMzE1Li5kYTIyNzk1NzlhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK QEAgLTE3NCw2ICsxNzQsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUg KmVzdGF0ZSkKIAlwc3RtdCA9IG1ha2VOb2RlKFBsYW5uZWRTdG10KTsKIAlwc3RtdC0+Y29tbWFu ZFR5cGUgPSBDTURfU0VMRUNUOwogCXBzdG10LT5xdWVyeUlkID0gcGdzdGF0X2dldF9teV9xdWVy eV9pZCgpOworCXBzdG10LT5wbGFuSWQgPSBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKTsKIAlwc3Rt dC0+aGFzUmV0dXJuaW5nID0gZmFsc2U7CiAJcHN0bXQtPmhhc01vZGlmeWluZ0NURSA9IGZhbHNl OwogCXBzdG10LT5jYW5TZXRUYWcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvZ2VuX25vZGVfc3VwcG9ydC5wbCBiL3NyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2RlX3N1cHBv cnQucGwKaW5kZXggMWE2NTdmN2UwYWUuLjZjMjBiZmM1OTg2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBsCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2dl bl9ub2RlX3N1cHBvcnQucGwKQEAgLTEyODEsMTMgKzEyODEsMTggQEAgX2p1bWJsZSR7bn0oSnVt YmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSkKIAl7CiAJCW15ICR0ID0gJG5vZGVfdHlwZV9p bmZveyRufS0+e2ZpZWxkX3R5cGVzfXskZn07CiAJCW15IEBhID0gQHsgJG5vZGVfdHlwZV9pbmZv eyRufS0+e2ZpZWxkX2F0dHJzfXskZn0gfTsKKwkJbXkgJGFycmF5X3NpemVfZmllbGQ7CiAJCW15 ICRxdWVyeV9qdW1ibGVfaWdub3JlID0gJHN0cnVjdF9ub19xdWVyeV9qdW1ibGU7CiAJCW15ICRx dWVyeV9qdW1ibGVfbG9jYXRpb24gPSAwOwogCiAJCSMgZXh0cmFjdCBwZXItZmllbGQgYXR0cmli dXRlcwogCQlmb3JlYWNoIG15ICRhIChAYSkKIAkJewotCQkJaWYgKCRhIGVxICdxdWVyeV9qdW1i bGVfaWdub3JlJykKKwkJCWlmICgkYSA9fiAvXmFycmF5X3NpemVcKChbXHcuXSspXCkkLykKKwkJ CXsKKwkJCQkkYXJyYXlfc2l6ZV9maWVsZCA9ICQxOworCQkJfQorCQkJZWxzaWYgKCRhIGVxICdx dWVyeV9qdW1ibGVfaWdub3JlJykKIAkJCXsKIAkJCQkkcXVlcnlfanVtYmxlX2lnbm9yZSA9IDE7 CiAJCQl9CkBAIC0xMjk3LDggKzEzMDIsMTUgQEAgX2p1bWJsZSR7bn0oSnVtYmxlU3RhdGUgKmpz dGF0ZSwgTm9kZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCW5leHQgaWYgJHF1ZXJ5X2p1bWJsZV9p Z25vcmU7CisKKwkJaWYgKCR0IGVxICdCaXRtYXBzZXQqJykKKwkJeworCQkJcHJpbnQgJGpmZiAi XHRKVU1CTEVfQklUTUFQU0VUKCRmKTtcbiIKKwkJCSAgdW5sZXNzICRxdWVyeV9qdW1ibGVfaWdu b3JlOworCQl9CiAJCSMgbm9kZSB0eXBlCi0JCWlmICgoJHQgPX4gL14oXHcrKVwqJC8gb3IgJHQg PX4gL15zdHJ1Y3RccysoXHcrKVwqJC8pCisJCWVsc2lmICgoJHQgPX4gL14oXHcrKVwqJC8gb3Ig JHQgPX4gL15zdHJ1Y3RccysoXHcrKVwqJC8pCiAJCQlhbmQgZWxlbSAkMSwgQG5vZGVfdHlwZXMp CiAJCXsKIAkJCXByaW50ICRqZmYgIlx0SlVNQkxFX05PREUoJGYpO1xuIgpAQCAtMTMxOCw2ICsx MzMwLDI2IEBAIF9qdW1ibGUke259KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJ CQlwcmludCAkamZmICJcdEpVTUJMRV9TVFJJTkcoJGYpO1xuIgogCQkJICB1bmxlc3MgJHF1ZXJ5 X2p1bWJsZV9pZ25vcmU7CiAJCX0KKwkJZWxzaWYgKCR0ID1+IC9eKFx3KykoXCp8XFtcdytcXSkk LyBhbmQgZWxlbSAkMSwgQHNjYWxhcl90eXBlcykKKwkJeworCQkJaWYgKCFkZWZpbmVkICRhcnJh eV9zaXplX2ZpZWxkKQorCQkJeworCQkJCWRpZSAibm8gYXJyYXkgc2l6ZSBkZWZpbmVkIGZvciAk bi4kZiBvZiB0eXBlICR0XG4iOworCQkJfQorCQkJaWYgKCRub2RlX3R5cGVfaW5mb3skbn0tPntm aWVsZF90eXBlc317JGFycmF5X3NpemVfZmllbGR9IGVxCisJCQkJJ0xpc3QqJykKKwkJCXsKKwkJ CQlwcmludCAkamZmCisJCQkJICAiXHRKVU1CTEVfQVJSQVkoJGYsIGxpc3RfbGVuZ3RoKGV4cHIt PiRhcnJheV9zaXplX2ZpZWxkKSk7XG4iCisJCQkJICB1bmxlc3MgJHF1ZXJ5X2p1bWJsZV9pZ25v cmU7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcHJpbnQgJGpmZgorCQkJCSAgIlx0SlVNQkxF X0FSUkFZKCRmLCBleHByLT4kYXJyYXlfc2l6ZV9maWVsZCk7XG4iCisJCQkJICB1bmxlc3MgJHF1 ZXJ5X2p1bWJsZV9pZ25vcmU7CisJCQl9CisJCX0KIAkJZWxzZQogCQl7CiAJCQlwcmludCAkamZm ICJcdEpVTUJMRV9GSUVMRCgkZik7XG4iCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9x dWVyeWp1bWJsZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMK aW5kZXggNTQ1ZDhlZGNhZTIuLjY0YmVjNTRhMjExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1i bGVmdW5jcy5jCkBAIC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3NjYW5zdXAu aCIKIAogI2RlZmluZSBKVU1CTEVfU0laRQkJCQkxMDI0CS8qIHF1ZXJ5IHNlcmlhbGl6YXRpb24g YnVmZmVyIHNpemUgKi8KIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGludAkJCWNvbXB1dGVfcXVl cnlfaWQgPSBDT01QVVRFX1FVRVJZX0lEX0FVVE87CitpbnQJCQljb21wdXRlX3BsYW5faWQgPSBD T01QVVRFX1BMQU5fSURfQVVUTzsKIAogLyoKICAqIFRydWUgd2hlbiBjb21wdXRlX3F1ZXJ5X2lk IGlzIE9OIG9yIEFVVE8sIGFuZCBhIG1vZHVsZSByZXF1ZXN0cyB0aGVtLgpAQCAtNTEsNiArNTMs MTUgQEAgaW50CQkJY29tcHV0ZV9xdWVyeV9pZCA9IENPTVBVVEVfUVVFUllfSURfQVVUTzsKICAq LwogYm9vbAkJcXVlcnlfaWRfZW5hYmxlZCA9IGZhbHNlOwogCisvKgorICogVHJ1ZSB3aGVuIGNv bXB1dGVfcGxhbl9pZCBpcyBPTiBvciBBVVRPLCBhbmQgYSBtb2R1bGUgcmVxdWVzdHMgdGhlbS4K KyAqCisgKiBOb3RlIHRoYXQgSXNQbGFuSWRFbmFibGVkKCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVh ZCBvZiBjaGVja2luZworICogcGxhbl9pZF9lbmFibGVkIG9yIHBsYW5fcXVlcnlfaWQgZGlyZWN0 bHkgd2hlbiB3ZSB3YW50IHRvIGtub3cKKyAqIHdoZXRoZXIgcGxhbiBpZGVudGlmaWVycyBhcmUg Y29tcHV0ZWQgaW4gdGhlIGNvcmUgb3Igbm90LgorICovCitib29sCQlwbGFuX2lkX2VuYWJsZWQg PSBmYWxzZTsKKwogc3RhdGljIHZvaWQgUmVjb3JkQ29uc3RMb2NhdGlvbihKdW1ibGVTdGF0ZSAq anN0YXRlLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIHZvaWQgX2p1bWJsZUFfQ29uc3QoSnVtYmxl U3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlTGlzdChKdW1i bGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKTsKQEAgLTE3MSw2ICsxODIsMTkgQEAgRW5hYmxl UXVlcnlJZCh2b2lkKQogCQlxdWVyeV9pZF9lbmFibGVkID0gdHJ1ZTsKIH0KIAorLyoKKyAqIEVu YWJsZXMgcGxhbiBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgorICoKKyAqIFRoaXJkLXBhcnR5IHBs dWdpbnMgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGluZm9ybSBjb3JlIHRoYXQgdGhleSByZXF1 aXJlCisgKiBhIHF1ZXJ5IGlkZW50aWZpZXIgdG8gYmUgY29tcHV0ZWQuCisgKi8KK3ZvaWQKK0Vu YWJsZVBsYW5JZCh2b2lkKQoreworCWlmIChjb21wdXRlX3BsYW5faWQgIT0gQ09NUFVURV9QTEFO X0lEX09GRikKKwkJcGxhbl9pZF9lbmFibGVkID0gdHJ1ZTsKK30KKwogLyoKICAqIEFwcGVuZEp1 bWJsZTogQXBwZW5kIGEgdmFsdWUgdGhhdCBpcyBzdWJzdGFudGl2ZSBpbiBhIGdpdmVuIHF1ZXJ5 IHRvCiAgKiB0aGUgY3VycmVudCBqdW1ibGUuCkBAIC0yNDAsNiArMjY0LDEzIEBAIFJlY29yZENv bnN0TG9jYXRpb24oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgaW50IGxvY2F0aW9uKQogCVJlY29yZENv bnN0TG9jYXRpb24oanN0YXRlLCBleHByLT5sb2NhdGlvbikKICNkZWZpbmUgSlVNQkxFX0ZJRUxE KGl0ZW0pIFwKIAlBcHBlbmRKdW1ibGUoanN0YXRlLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAm KGV4cHItPml0ZW0pLCBzaXplb2YoZXhwci0+aXRlbSkpCisjZGVmaW5lIEpVTUJMRV9CSVRNQVBT RVQoaXRlbSkgXAorZG8geyBcCisJaWYgKGV4cHItPml0ZW0pIFwKKwkJQXBwZW5kSnVtYmxlKGpz dGF0ZSwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgZXhwci0+aXRlbS0+d29yZHMsIHNpemVvZihi aXRtYXB3b3JkKSAqIGV4cHItPml0ZW0tPm53b3Jkcyk7IFwKK30gd2hpbGUoMCkKKyNkZWZpbmUg SlVNQkxFX0FSUkFZKGl0ZW0sIGxlbikgXAorCUFwcGVuZEp1bWJsZShqc3RhdGUsIChjb25zdCB1 bnNpZ25lZCBjaGFyICopIGV4cHItPml0ZW0sIHNpemVvZigqKGV4cHItPml0ZW0pKSAqIGxlbikK ICNkZWZpbmUgSlVNQkxFX0ZJRUxEX1NJTkdMRShpdGVtKSBcCiAJQXBwZW5kSnVtYmxlKGpzdGF0 ZSwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgJihpdGVtKSwgc2l6ZW9mKGl0ZW0pKQogI2RlZmlu ZSBKVU1CTEVfU1RSSU5HKHN0cikgXApAQCAtMzg4LDMgKzQxOSwzNyBAQCBfanVtYmxlVmFyaWFi bGVTZXRTdG10KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJSlVNQkxFX0ZJRUxE KGlzX2xvY2FsKTsKIAlKVU1CTEVfTE9DQVRJT04obG9jYXRpb24pOwogfQorCisvKgorICogSnVt YmxlIHRoZSBlbnRyaWVzIGluIHRoZSByYW5nbGUgdGFibGUgdG8gbWFwIFJUIGluZGV4ZXMgdG8g cmVsYXRpb25zCisgKgorICogVGhpcyBlbnN1cmVzIGp1bWJsZWQgUlQgaW5kZXhlcyAoZS5nLiBp biBhIFNjYW4gb3IgTW9kaWZ5IG5vZGUpLCBhcmUKKyAqIGRpc3Rpbmd1aXNoZWQgYnkgdGhlIHRh cmdldCBvZiB0aGUgUlQgZW50cnksIGV2ZW4gaWYgdGhlIGluZGV4IGlzIHRoZSBzYW1lLgorICov Cit2b2lkCitKdW1ibGVSYW5nZVRhYmxlKEp1bWJsZVN0YXRlICpqc3RhdGUsIExpc3QgKnJ0YWJs ZSkKK3sKKwlMaXN0Q2VsbCAqbGM7CisKKwlmb3JlYWNoKGxjLCBydGFibGUpCisJeworCQlSYW5n ZVRibEVudHJ5ICpleHByID0gbGZpcnN0X25vZGUoUmFuZ2VUYmxFbnRyeSwgbGMpOworCisJCXN3 aXRjaCAoZXhwci0+cnRla2luZCkKKwkJeworCQkJY2FzZSBSVEVfUkVMQVRJT046CisJCQkJSlVN QkxFX0ZJRUxEKHJlbGlkKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUlRFX0NURToKKwkJCQlKVU1C TEVfU1RSSU5HKGN0ZW5hbWUpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKworCQkJCS8qCisJ CQkJKiBJZ25vcmUgb3RoZXIgdGFyZ2V0cywgdGhlIGp1bWJsZSBpbmNsdWRlcyBzb21ldGhpbmcg aWRlbnRpZnlpbmcKKwkJCQkqIGFib3V0IHRoZW0gYWxyZWFkeQorCQkJCSovCisJCQkJYnJlYWs7 CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZmZkNzUx N2VhOTcuLjlkNDNhMTc0YjllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBA IC0zNyw2ICszNyw3IEBACiAjaWZkZWYgT1BUSU1JWkVSX0RFQlVHCiAjaW5jbHVkZSAibm9kZXMv cHJpbnQuaCIKICNlbmRpZgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCiAjaW5jbHVk ZSAibm9kZXMvc3VwcG9ydG5vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2FwcGVuZGluZm8u aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgpAQCAtNTMyLDYgKzUzMywxNiBAQCBz dGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBp bnQgY3Vyc29yT3B0aW9ucywKIAlBc3NlcnQoZ2xvYi0+ZmluYWxyb3dtYXJrcyA9PSBOSUwpOwog CUFzc2VydChnbG9iLT5yZXN1bHRSZWxhdGlvbnMgPT0gTklMKTsKIAlBc3NlcnQoZ2xvYi0+YXBw ZW5kUmVsYXRpb25zID09IE5JTCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgcGxhbiBpZGVudGlm aWVyIGp1bWJsZSBpZiBuZWVkZWQKKwkgKgorCSAqIE5vdGUgdGhlIGFjdHVhbCBqdW1ibGluZyBp cyBkb25lIGluIHRoZSB0cmVlIHdhbGsgaW4KKwkgKiBzZXRfcGxhbl9yZWZlcmVuY2VzCisJICov CisJaWYgKElzUGxhbklkRW5hYmxlZCgpKQorCQlnbG9iLT5wbGFuX2p1bWJsZV9zdGF0ZSA9IElu aXRpYWxpemVKdW1ibGVTdGF0ZShmYWxzZSk7CisKIAl0b3BfcGxhbiA9IHNldF9wbGFuX3JlZmVy ZW5jZXMocm9vdCwgdG9wX3BsYW4pOwogCS8qIC4uLiBhbmQgdGhlIHN1YnBsYW5zIChib3RoIHJl Z3VsYXIgc3VicGxhbnMgYW5kIGluaXRwbGFucykgKi8KIAlBc3NlcnQobGlzdF9sZW5ndGgoZ2xv Yi0+c3VicGxhbnMpID09IGxpc3RfbGVuZ3RoKGdsb2ItPnN1YnJvb3RzKSk7CkBAIC01OTYsNiAr NjA3LDE0IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCQkJcmVzdWx0LT5qaXRGbGFncyB8PSBQR0pJ VF9ERUZPUk07CiAJfQogCisJaWYgKElzUGxhbklkRW5hYmxlZCgpKQorCXsKKwkJSnVtYmxlUmFu Z2VUYWJsZShnbG9iLT5wbGFuX2p1bWJsZV9zdGF0ZSwgZ2xvYi0+ZmluYWxydGFibGUpOworCQly ZXN1bHQtPnBsYW5JZCA9IEhhc2hKdW1ibGVTdGF0ZShnbG9iLT5wbGFuX2p1bWJsZV9zdGF0ZSk7 CisJCXBmcmVlKGdsb2ItPnBsYW5fanVtYmxlX3N0YXRlLT5qdW1ibGUpOworCQlwZnJlZShnbG9i LT5wbGFuX2p1bWJsZV9zdGF0ZSk7CisJfQorCiAJaWYgKGdsb2ItPnBhcnRpdGlvbl9kaXJlY3Rv cnkgIT0gTlVMTCkKIAkJRGVzdHJveVBhcnRpdGlvbkRpcmVjdG9yeShnbG9iLT5wYXJ0aXRpb25f ZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDA4Njgy NDliZTk0Li41ZTg5MGY1NzZiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpA QCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1 ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9w bGFubWFpbi5oIgpAQCAtMTMwNiw2ICsxMzA3LDE0IEBAIHNldF9wbGFuX3JlZnMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAlwbGFuLT5sZWZ0dHJlZSA9IHNl dF9wbGFuX3JlZnMocm9vdCwgcGxhbi0+bGVmdHRyZWUsIHJ0b2Zmc2V0KTsKIAlwbGFuLT5yaWdo dHRyZWUgPSBzZXRfcGxhbl9yZWZzKHJvb3QsIHBsYW4tPnJpZ2h0dHJlZSwgcnRvZmZzZXQpOwog CisJLyoKKwkgKiBJZiBlbmFibGVkLCBhcHBlbmQgc2lnbmlmaWNhbnQgaW5mb3JtYXRpb24gdG8g dGhlIHBsYW4gaWRlbnRpZmllcgorCSAqIGp1bWJsZSAod2UgZG8gdGhpcyBoZXJlIHNpbmNlIHdl J3JlIGFscmVhZHkgd2Fsa2luZyB0aGUgdHJlZSBpbiBhCisJICogbmVhci1maW5hbCBzdGF0ZSkK KwkgKi8KKwlpZiAoSXNQbGFuSWRFbmFibGVkKCkpCisJCUp1bWJsZU5vZGUocm9vdC0+Z2xvYi0+ cGxhbl9qdW1ibGVfc3RhdGUsIChOb2RlICopIHBsYW4pOworCiAJcmV0dXJuIHBsYW47CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwppbmRleCBhOTdhMWVkYTZkYS4u NjU0YWNmNWJmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2Jh Y2tlbmQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKQEAg LTExNSw2ICsxMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCXJlZGlyZWN0aW9uX2RvbmU7 CiAJYm9vbAkJSXNCaW5hcnlVcGdyYWRlOwogCWJvb2wJCXF1ZXJ5X2lkX2VuYWJsZWQ7CisJYm9v bAkJcGxhbl9pZF9lbmFibGVkOwogCWludAkJCW1heF9zYWZlX2ZkczsKIAlpbnQJCQlNYXhCYWNr ZW5kczsKIAlpbnQJCQludW1fcG1jaGlsZF9zbG90czsKQEAgLTc0NCw2ICs3NDUsNyBAQCBzYXZl X2JhY2tlbmRfdmFyaWFibGVzKEJhY2tlbmRQYXJhbWV0ZXJzICpwYXJhbSwKIAlwYXJhbS0+cmVk aXJlY3Rpb25fZG9uZSA9IHJlZGlyZWN0aW9uX2RvbmU7CiAJcGFyYW0tPklzQmluYXJ5VXBncmFk ZSA9IElzQmluYXJ5VXBncmFkZTsKIAlwYXJhbS0+cXVlcnlfaWRfZW5hYmxlZCA9IHF1ZXJ5X2lk X2VuYWJsZWQ7CisJcGFyYW0tPnBsYW5faWRfZW5hYmxlZCA9IHBsYW5faWRfZW5hYmxlZDsKIAlw YXJhbS0+bWF4X3NhZmVfZmRzID0gbWF4X3NhZmVfZmRzOwogCiAJcGFyYW0tPk1heEJhY2tlbmRz ID0gTWF4QmFja2VuZHM7CkBAIC0xMDA0LDYgKzEwMDYsNyBAQCByZXN0b3JlX2JhY2tlbmRfdmFy aWFibGVzKEJhY2tlbmRQYXJhbWV0ZXJzICpwYXJhbSkKIAlyZWRpcmVjdGlvbl9kb25lID0gcGFy YW0tPnJlZGlyZWN0aW9uX2RvbmU7CiAJSXNCaW5hcnlVcGdyYWRlID0gcGFyYW0tPklzQmluYXJ5 VXBncmFkZTsKIAlxdWVyeV9pZF9lbmFibGVkID0gcGFyYW0tPnF1ZXJ5X2lkX2VuYWJsZWQ7CisJ cGxhbl9pZF9lbmFibGVkID0gcGFyYW0tPnBsYW5faWRfZW5hYmxlZDsKIAltYXhfc2FmZV9mZHMg PSBwYXJhbS0+bWF4X3NhZmVfZmRzOwogCiAJTWF4QmFja2VuZHMgPSBwYXJhbS0+TWF4QmFja2Vu ZHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggNTY1NTM0OGEyZTIuLjZkODk0N2JhZTliIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCkBAIC0xMTA2LDYgKzExMDYsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBj aGFyICpxdWVyeV9zdHJpbmcpCiAJCXNpemVfdAkJY21kdGFnbGVuOwogCiAJCXBnc3RhdF9yZXBv cnRfcXVlcnlfaWQoMCwgdHJ1ZSk7CisJCXBnc3RhdF9yZXBvcnRfcGxhbl9pZCgwLCAwLCB0cnVl KTsKIAogCQkvKgogCQkgKiBHZXQgdGhlIGNvbW1hbmQgbmFtZSBmb3IgdXNlIGluIHN0YXR1cyBk aXNwbGF5IChpdCBhbHNvIGJlY29tZXMgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv YmFja2VuZF9zdGF0dXMuYwppbmRleCA3MzEzNDI3OTlhNi4uMWRmYjdhNThmODcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtMzc5LDYgKzM3OSw3 IEBAIHBnc3RhdF9iZXN0YXJ0KHZvaWQpCiAJbGJlZW50cnkuc3RfcHJvZ3Jlc3NfY29tbWFuZCA9 IFBST0dSRVNTX0NPTU1BTkRfSU5WQUxJRDsKIAlsYmVlbnRyeS5zdF9wcm9ncmVzc19jb21tYW5k X3RhcmdldCA9IEludmFsaWRPaWQ7CiAJbGJlZW50cnkuc3RfcXVlcnlfaWQgPSBVSU5UNjRDT05T VCgwKTsKKwlsYmVlbnRyeS5zdF9wbGFuX2lkID0gVUlOVDY0Q09OU1QoMCk7CiAKIAkvKgogCSAq IHdlIGRvbid0IHplcm8gc3RfcHJvZ3Jlc3NfcGFyYW0gaGVyZSB0byBzYXZlIGN5Y2xlczsgbm9i b2R5IHNob3VsZApAQCAtNTMzLDYgKzUzNCw3IEBAIHBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoQmFj a2VuZFN0YXRlIHN0YXRlLCBjb25zdCBjaGFyICpjbWRfc3RyKQogCQkJLyogc3RfeGFjdF9zdGFy dF90aW1lc3RhbXAgYW5kIHdhaXRfZXZlbnRfaW5mbyBhcmUgYWxzbyBkaXNhYmxlZCAqLwogCQkJ YmVlbnRyeS0+c3RfeGFjdF9zdGFydF90aW1lc3RhbXAgPSAwOwogCQkJYmVlbnRyeS0+c3RfcXVl cnlfaWQgPSBVSU5UNjRDT05TVCgwKTsKKwkJCWJlZW50cnktPnN0X3BsYW5faWQgPSBVSU5UNjRD T05TVCgwKTsKIAkJCXByb2MtPndhaXRfZXZlbnRfaW5mbyA9IDA7CiAJCQlQR1NUQVRfRU5EX1dS SVRFX0FDVElWSVRZKGJlZW50cnkpOwogCQl9CkBAIC01ODgsMTIgKzU5MCwxNSBAQCBwZ3N0YXRf cmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29uc3QgY2hhciAqY21kX3N0cikK IAliZWVudHJ5LT5zdF9zdGF0ZV9zdGFydF90aW1lc3RhbXAgPSBjdXJyZW50X3RpbWVzdGFtcDsK IAogCS8qCi0JICogSWYgYSBuZXcgcXVlcnkgaXMgc3RhcnRlZCwgd2UgcmVzZXQgdGhlIHF1ZXJ5 IGlkZW50aWZpZXIgYXMgaXQnbGwgb25seQotCSAqIGJlIGtub3duIGFmdGVyIHBhcnNlIGFuYWx5 c2lzLCB0byBhdm9pZCByZXBvcnRpbmcgbGFzdCBxdWVyeSdzCi0JICogaWRlbnRpZmllci4KKwkg KiBJZiBhIG5ldyBxdWVyeSBpcyBzdGFydGVkLCB3ZSByZXNldCB0aGUgcXVlcnkgYW5kIHBsYW4g aWRlbnRpZmllciBhcworCSAqIGl0J2xsIG9ubHkgYmUga25vd24gYWZ0ZXIgcGFyc2UgYW5hbHlz aXMgLyBwbGFubmluZywgdG8gYXZvaWQgcmVwb3J0aW5nCisJICogbGFzdCBxdWVyeSdzIGlkZW50 aWZpZXJzLgogCSAqLwogCWlmIChzdGF0ZSA9PSBTVEFURV9SVU5OSU5HKQorCXsKIAkJYmVlbnRy eS0+c3RfcXVlcnlfaWQgPSBVSU5UNjRDT05TVCgwKTsKKwkJYmVlbnRyeS0+c3RfcGxhbl9pZCA9 IFVJTlQ2NENPTlNUKDApOworCX0KIAogCWlmIChjbWRfc3RyICE9IE5VTEwpCiAJewpAQCAtNjQ0 LDYgKzY0OSw0NSBAQCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHVpbnQ2NCBxdWVyeV9pZCwgYm9v bCBmb3JjZSkKIAlQR1NUQVRfRU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOwogfQogCisvKiAt LS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF9wbGFuX2lkKCkgLQorICoKKyAqIENhbGxlZCB0byB1 cGRhdGUgdG9wLWxldmVsIHBsYW4gaWRlbnRpZmllci4KKyAqIC0tLS0tLS0tCisgKi8KK3ZvaWQK K3Bnc3RhdF9yZXBvcnRfcGxhbl9pZCh1aW50NjQgcGxhbl9pZCwgdWludDY0IHF1ZXJ5X2lkLCBi b29sIGZvcmNlKQoreworCXZvbGF0aWxlIFBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeSA9IE15QkVF bnRyeTsKKworCS8qCisJICogaWYgdHJhY2tfYWN0aXZpdGllcyBpcyBkaXNhYmxlZCwgc3RfcGxh bl9pZCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4KKwkgKiByZXNldAorCSAqLworCWlmICghYmVl bnRyeSB8fCAhcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXMpCisJCXJldHVybjsKKworCS8qCisJICog V2Ugb25seSByZXBvcnQgdGhlIHRvcC1sZXZlbCBwbGFuIGlkZW50aWZpZXJzLiAgVGhlIHN0b3Jl ZCBwbGFuX2lkIGlzCisJICogcmVzZXQgd2hlbiBhIGJhY2tlbmQgY2FsbHMgcGdzdGF0X3JlcG9y dF9hY3Rpdml0eShTVEFURV9SVU5OSU5HKSwgb3IKKwkgKiB3aXRoIGFuIGV4cGxpY2l0IGNhbGwg dG8gdGhpcyBmdW5jdGlvbiB1c2luZyB0aGUgZm9yY2UgZmxhZy4gIElmIHRoZQorCSAqIHNhdmVk IHBsYW4gaWRlbnRpZmllciBpcyBub3QgemVybyBvciB0aGUgcXVlcnkgaWRlbnRpZmllciBpcyAw LCBpdAorCSAqIG1lYW5zIHRoYXQgaXQncyBub3QgYSB0b3AtbGV2ZWwgY29tbWFuZCwgc28gaWdu b3JlIHRoZSBvbmUgcHJvdmlkZWQKKwkgKiB1bmxlc3MgaXQncyBhbiBleHBsaWNpdCBjYWxsIHRv IHJlc2V0IHRoZSBpZGVudGlmaWVyLgorCSAqLworCWlmICgoYmVlbnRyeS0+c3RfcGxhbl9pZCAh PSAwIHx8IHF1ZXJ5X2lkID09IDApICYmICFmb3JjZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBV cGRhdGUgbXkgc3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcK KwkgKiBzdF9jaGFuZ2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUg cG9pbnRlciBoZXJlIHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRyeSB0byBn ZXQgY3V0ZS4KKwkgKi8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CisJ YmVlbnRyeS0+c3RfcGxhbl9pZCA9IHBsYW5faWQ7CisJUEdTVEFUX0VORF9XUklURV9BQ1RJVklU WShiZWVudHJ5KTsKK30KKwogCiAvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVwb3J0X2FwcG5h bWUoKSAtCkBAIC0xMDQwLDYgKzEwODQsMjYgQEAgcGdzdGF0X2dldF9teV9xdWVyeV9pZCh2b2lk KQogCXJldHVybiBNeUJFRW50cnktPnN0X3F1ZXJ5X2lkOwogfQogCisvKiAtLS0tLS0tLS0tCisg KiBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKSAtCisgKgorICogUmV0dXJuIGN1cnJlbnQgYmFja2Vu ZCdzIHBsYW4gaWRlbnRpZmllci4KKyAqLwordWludDY0CitwZ3N0YXRfZ2V0X215X3BsYW5faWQo dm9pZCkKK3sKKwlpZiAoIU15QkVFbnRyeSkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFRoZXJl J3Mgbm8gbmVlZCBmb3IgYSBsb2NrIGFyb3VuZCBwZ3N0YXRfYmVnaW5fcmVhZF9hY3Rpdml0eSAv CisJICogcGdzdGF0X2VuZF9yZWFkX2FjdGl2aXR5IGhlcmUgYXMgaXQncyBvbmx5IGNhbGxlZCBm cm9tCisJICogcGdfc3RhdF9nZXRfYWN0aXZpdHkgd2hpY2ggaXMgYWxyZWFkeSBwcm90ZWN0ZWQs IG9yIGZyb20gdGhlIHNhbWUKKwkgKiBiYWNrZW5kIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUgd29u J3QgYmUgY29uY3VycmVudCB3cml0ZXMuCisJICovCisJcmV0dXJuIE15QkVFbnRyeS0+c3RfcGxh bl9pZDsKK30KKwogLyogLS0tLS0tLS0tLQogICogcGdzdGF0X2dldF9iYWNrZW5kX3R5cGVfYnlf cHJvY19udW1iZXIoKSAtCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCBl OTA5NmE4ODQ5Mi4uYTNkNTU5MmJlYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j CkBAIC0zMzAsNyArMzMwLDcgQEAgcGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbyhQR19GVU5DVElP Tl9BUkdTKQogRGF0dW0KIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX0FDVElWSVRZX0NPTFMJMzEKKyNkZWZpbmUgUEdfU1RBVF9H RVRfQUNUSVZJVFlfQ09MUwkzMgogCWludAkJCW51bV9iYWNrZW5kcyA9IHBnc3RhdF9mZXRjaF9z dGF0X251bWJhY2tlbmRzKCk7CiAJaW50CQkJY3Vycl9iYWNrZW5kOwogCWludAkJCXBpZCA9IFBH X0FSR0lTTlVMTCgwKSA/IC0xIDogUEdfR0VUQVJHX0lOVDMyKDApOwpAQCAtNjQxLDYgKzY0MSwx MCBAQCBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJCW51bGxzWzMw XSA9IHRydWU7CiAJCQllbHNlCiAJCQkJdmFsdWVzWzMwXSA9IFVJbnQ2NEdldERhdHVtKGJlZW50 cnktPnN0X3F1ZXJ5X2lkKTsKKwkJCWlmIChiZWVudHJ5LT5zdF9wbGFuX2lkID09IDApCisJCQkJ bnVsbHNbMzFdID0gdHJ1ZTsKKwkJCWVsc2UKKwkJCQl2YWx1ZXNbMzFdID0gVUludDY0R2V0RGF0 dW0oYmVlbnRyeS0+c3RfcGxhbl9pZCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC02NzAsNiArNjc0 LDcgQEAgcGdfc3RhdF9nZXRfYWN0aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCW51bGxzWzI4 XSA9IHRydWU7CiAJCQludWxsc1syOV0gPSB0cnVlOwogCQkJbnVsbHNbMzBdID0gdHJ1ZTsKKwkJ CW51bGxzWzMxXSA9IHRydWU7CiAJCX0KIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8t PnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLCB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNzE0NDhiYjRmZGQuLjIyZmRmYjYwY2NjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzA5LDYgKzMwOSwyNCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IGNvbXB1dGVfcXVlcnlfaWRfb3B0aW9uc1tdID0g ewogCXtOVUxMLCAwLCBmYWxzZX0KIH07CiAKKy8qCisgKiBBbHRob3VnaCBvbmx5ICJvbiIgYW5k ICJvZmYiIGFyZSBkb2N1bWVudGVkLCB3ZSBhY2NlcHQKKyAqIGFsbCB0aGUgbGlrZWx5IHZhcmlh bnRzIG9mICJvbiIgYW5kICJvZmYiLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19l bnVtX2VudHJ5IGNvbXB1dGVfcGxhbl9pZF9vcHRpb25zW10gPSB7CisJeyJhdXRvIiwgQ09NUFVU RV9QTEFOX0lEX0FVVE8sIGZhbHNlfSwKKwl7InJlZ3Jlc3MiLCBDT01QVVRFX1BMQU5fSURfUkVH UkVTUywgZmFsc2V9LAorCXsib24iLCBDT01QVVRFX1BMQU5fSURfT04sIGZhbHNlfSwKKwl7Im9m ZiIsIENPTVBVVEVfUExBTl9JRF9PRkYsIGZhbHNlfSwKKwl7InRydWUiLCBDT01QVVRFX1BMQU5f SURfT04sIHRydWV9LAorCXsiZmFsc2UiLCBDT01QVVRFX1BMQU5fSURfT0ZGLCB0cnVlfSwKKwl7 InllcyIsIENPTVBVVEVfUExBTl9JRF9PTiwgdHJ1ZX0sCisJeyJubyIsIENPTVBVVEVfUExBTl9J RF9PRkYsIHRydWV9LAorCXsiMSIsIENPTVBVVEVfUExBTl9JRF9PTiwgdHJ1ZX0sCisJeyIwIiwg Q09NUFVURV9QTEFOX0lEX09GRiwgdHJ1ZX0sCisJe05VTEwsIDAsIGZhbHNlfQorfTsKKwogLyoK ICAqIEFsdGhvdWdoIG9ubHkgIm9uIiwgIm9mZiIsIGFuZCAicGFydGl0aW9uIiBhcmUgZG9jdW1l bnRlZCwgd2UKICAqIGFjY2VwdCBhbGwgdGhlIGxpa2VseSB2YXJpYW50cyBvZiAib24iIGFuZCAi b2ZmIi4KQEAgLTQ4NzMsNiArNDg5MSwxNiBAQCBzdHJ1Y3QgY29uZmlnX2VudW0gQ29uZmlndXJl TmFtZXNFbnVtW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJjb21wdXRl X3BsYW5faWQiLCBQR0NfU1VTRVQsIFNUQVRTX01PTklUT1JJTkcsCisJCQlnZXR0ZXh0X25vb3Ao IkVuYWJsZXMgaW4tY29yZSBjb21wdXRhdGlvbiBvZiBwbGFuIGlkZW50aWZpZXJzLiIpLAorCQkJ TlVMTAorCQl9LAorCQkmY29tcHV0ZV9wbGFuX2lkLAorCQlDT01QVVRFX1BMQU5fSURfQVVUTywg Y29tcHV0ZV9wbGFuX2lkX29wdGlvbnMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewog CQl7ImNvbnN0cmFpbnRfZXhjbHVzaW9uIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19PVEhF UiwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lciB0byB1c2UgY29uc3RyYWlu dHMgdG8gb3B0aW1pemUgcXVlcmllcy4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAwNzllZmExYmFhNy4uMDYzNGFlOTBkZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTY0MSw2 ICs2NDEsNyBAQAogIyAtIE1vbml0b3JpbmcgLQogCiAjY29tcHV0ZV9xdWVyeV9pZCA9IGF1dG8K KyNjb21wdXRlX3BsYW5faWQgPSBhdXRvCiAjbG9nX3N0YXRlbWVudF9zdGF0cyA9IG9mZgogI2xv Z19wYXJzZXJfc3RhdHMgPSBvZmYKICNsb2dfcGxhbm5lcl9zdGF0cyA9IG9mZgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggNWI4YzJhZDJhNTQuLjU1NDdkYjdkMmYxIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTU1NjgsOSArNTU2OCw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRf Z2V0X2FjdGl2aXR5JywgcHJvcm93cyA9PiAnMTAwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBw cm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywK ICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ2ludDQnLAotICBwcm9h bGxhcmd0eXBlcyA9PiAne2ludDQsb2lkLGludDQsb2lkLHRleHQsdGV4dCx0ZXh0LHRleHQsdGV4 dCx0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixpbmV0LHRl eHQsaW50NCx4aWQseGlkLHRleHQsYm9vbCx0ZXh0LHRleHQsaW50NCx0ZXh0LG51bWVyaWMsdGV4 dCxib29sLHRleHQsYm9vbCxib29sLGludDQsaW50OH0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ks byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNlc3lzaWQsYXBwbGlj YXRpb25fbmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9ldmVudCx4YWN0X3N0 YXJ0LHF1ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNsaWVudF9hZGRyLGNs aWVudF9ob3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5kX3htaW4sYmFja2Vu ZF90eXBlLHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9jbGllbnRfZG4sc3Ns X2NsaWVudF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJpbmMsZ3NzX2VuYyxn c3NfZGVsZWdhdGlvbixsZWFkZXJfcGlkLHF1ZXJ5X2lkfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ ICd7aW50NCxvaWQsaW50NCxvaWQsdGV4dCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRpbWVzdGFtcHR6 LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LGluZXQsdGV4dCxpbnQ0LHhpZCx4 aWQsdGV4dCxib29sLHRleHQsdGV4dCxpbnQ0LHRleHQsbnVtZXJpYyx0ZXh0LGJvb2wsdGV4dCxi b29sLGJvb2wsaW50NCxpbnQ4LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30n LAorICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNlc3lzaWQsYXBwbGljYXRpb25f bmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9ldmVudCx4YWN0X3N0YXJ0LHF1 ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNsaWVudF9hZGRyLGNsaWVudF9o b3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5kX3htaW4sYmFja2VuZF90eXBl LHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9jbGllbnRfZG4sc3NsX2NsaWVu dF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJpbmMsZ3NzX2VuYyxnc3NfZGVs ZWdhdGlvbixsZWFkZXJfcGlkLHF1ZXJ5X2lkLHBsYW5faWR9JywKICAgcHJvc3JjID0+ICdwZ19z dGF0X2dldF9hY3Rpdml0eScgfSwKIHsgb2lkID0+ICc2MzE4JywgZGVzY3IgPT4gJ2Rlc2NyaWJl IHdhaXQgZXZlbnRzJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3dhaXRfZXZlbnRzJywgcHJvY29z dCA9PiAnMTAnLCBwcm9yb3dzID0+ICcyNTAnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA1MmQ0 NGY0MzAyMS4uNGJhZjgyOWY2NDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xNjYsNiArMTY2 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCiAJLyogcGFydGl0aW9uIGRlc2Ny aXB0b3JzICovCiAJUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRpdGlvbl9kaXJlY3RvcnkgcGdfbm9k ZV9hdHRyKHJlYWRfd3JpdGVfaWdub3JlKTsKKworCS8qIG9wdGlvbmFsIGp1bWJsZSBzdGF0ZSBm b3IgcGxhbiBpZGVudGlmaWVyIGNhbGN1bGF0aW9uICovCisJc3RydWN0IEp1bWJsZVN0YXRlICpw bGFuX2p1bWJsZV9zdGF0ZSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwogfSBQbGFu bmVyR2xvYmFsOwogCiAvKiBtYWNybyBmb3IgZmV0Y2hpbmcgdGhlIFBsYW4gYXNzb2NpYXRlZCB3 aXRoIGEgU3ViUGxhbiBub2RlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDA2ZDk1NTllYmI5 Li4yY2NmNzcyZDg3ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTUzLDYgKzUzLDEwIEBAIHR5 cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBp ZGVudGlmaWVyIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIAorCXVpbnQ2NAkJcGxhbklkOwkJCS8q IHBsYW4gaWRlbnRpZmllciAoY2FsY3VsYXRlZCBpZgorCQkJCQkJCQkgKiBjb21wdXRlX3BsYW5f aWQgaXMgZW5hYmxlZCwgY2FuIGFsc28gYmUgc2V0CisJCQkJCQkJCSAqIGJ5IHBsdWdpbnMpICov CisKIAlib29sCQloYXNSZXR1cm5pbmc7CS8qIGlzIGl0IGluc2VydHx1cGRhdGV8ZGVsZXRlfG1l cmdlIFJFVFVSTklORz8gKi8KIAogCWJvb2wJCWhhc01vZGlmeWluZ0NURTsJLyogaGFzIGluc2Vy dHx1cGRhdGV8ZGVsZXRlfG1lcmdlIGluIFdJVEg/ICovCkBAIC0xMjEsNDQgKzEyNSw1NSBAQCB0 eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogICovCiB0eXBlZGVmIHN0cnVjdCBQbGFuCiB7Ci0J cGdfbm9kZV9hdHRyKGFic3RyYWN0LCBub19lcXVhbCwgbm9fcXVlcnlfanVtYmxlKQorCXBnX25v ZGVfYXR0cihhYnN0cmFjdCwgbm9fZXF1YWwpCiAKIAlOb2RlVGFnCQl0eXBlOwogCiAJLyoKIAkg KiBlc3RpbWF0ZWQgZXhlY3V0aW9uIGNvc3RzIGZvciBwbGFuIChzZWUgY29zdHNpemUuYyBmb3Ig bW9yZSBpbmZvKQogCSAqLwotCWludAkJCWRpc2FibGVkX25vZGVzOyAvKiBjb3VudCBvZiBkaXNh YmxlZCBub2RlcyAqLwotCUNvc3QJCXN0YXJ0dXBfY29zdDsJLyogY29zdCBleHBlbmRlZCBiZWZv cmUgZmV0Y2hpbmcgYW55IHR1cGxlcyAqLwotCUNvc3QJCXRvdGFsX2Nvc3Q7CQkvKiB0b3RhbCBj b3N0IChhc3N1bWluZyBhbGwgdHVwbGVzIGZldGNoZWQpICovCisJaW50CQkJZGlzYWJsZWRfbm9k ZXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBjb3VudCBvZiBkaXNhYmxl ZAorCQkJCQkJCQkJCQkJCQkJCQkgKiBub2RlcyAqLworCUNvc3QJCXN0YXJ0dXBfY29zdCBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIGNvc3QgZXhwZW5kZWQgYmVmb3JlCisJ CQkJCQkJCQkJCQkJCQkJICogZmV0Y2hpbmcgYW55IHR1cGxlcyAqLworCUNvc3QJCXRvdGFsX2Nv c3QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiB0b3RhbCBjb3N0IChhc3N1 bWluZworCQkJCQkJCQkJCQkJCQkJCSAqIGFsbCB0dXBsZXMgZmV0Y2hlZCkgKi8KIAogCS8qCiAJ ICogcGxhbm5lcidzIGVzdGltYXRlIG9mIHJlc3VsdCBzaXplIG9mIHRoaXMgcGxhbiBzdGVwCiAJ ICovCi0JQ2FyZGluYWxpdHkgcGxhbl9yb3dzOwkJLyogbnVtYmVyIG9mIHJvd3MgcGxhbiBpcyBl eHBlY3RlZCB0byBlbWl0ICovCi0JaW50CQkJcGxhbl93aWR0aDsJCS8qIGF2ZXJhZ2Ugcm93IHdp ZHRoIGluIGJ5dGVzICovCisJQ2FyZGluYWxpdHkgcGxhbl9yb3dzIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsJLyogbnVtYmVyIG9mIHJvd3MgcGxhbgorCQkJCQkJCQkJCQkJCQkJ CSAqIGlzIGV4cGVjdGVkIHRvIGVtaXQgKi8KKwlpbnQJCQlwbGFuX3dpZHRoIHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogYXZlcmFnZSByb3cgd2lkdGggaW4KKwkJCQkJCQkJ CQkJCQkJCQkgKiBieXRlcyAqLwogCiAJLyoKIAkgKiBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIHBh cmFsbGVsIHF1ZXJ5CiAJICovCi0JYm9vbAkJcGFyYWxsZWxfYXdhcmU7IC8qIGVuZ2FnZSBwYXJh bGxlbC1hd2FyZSBsb2dpYz8gKi8KLQlib29sCQlwYXJhbGxlbF9zYWZlOwkvKiBPSyB0byB1c2Ug YXMgcGFydCBvZiBwYXJhbGxlbCBwbGFuPyAqLworCWJvb2wJCXBhcmFsbGVsX2F3YXJlOwkvKiBl bmdhZ2UgcGFyYWxsZWwtYXdhcmUKKwkJCQkJCQkJCQkJCQkJCQkJICogbG9naWM/ICovCisJYm9v bAkJcGFyYWxsZWxfc2FmZTsJLyogT0sgdG8gdXNlIGFzIHBhcnQgb2YKKwkJCQkJCQkJCQkJCQkJ CQkJICogcGFyYWxsZWwgcGxhbj8gKi8KIAogCS8qCiAJICogaW5mb3JtYXRpb24gbmVlZGVkIGZv ciBhc3luY2hyb25vdXMgZXhlY3V0aW9uCiAJICovCi0JYm9vbAkJYXN5bmNfY2FwYWJsZTsJLyog ZW5nYWdlIGFzeW5jaHJvbm91cy1jYXBhYmxlIGxvZ2ljPyAqLworCWJvb2wJCWFzeW5jX2NhcGFi bGU7CS8qIGVuZ2FnZQorCQkJCQkJCQkJCQkJCQkJCQkgKiBhc3luY2hyb25vdXMtY2FwYWJsZQor CQkJCQkJCQkJCQkJCQkJCQkgKiBsb2dpYz8gKi8KIAogCS8qCiAJICogQ29tbW9uIHN0cnVjdHVy YWwgZGF0YSBmb3IgYWxsIFBsYW4gdHlwZXMuCiAJICovCi0JaW50CQkJcGxhbl9ub2RlX2lkOwkv KiB1bmlxdWUgYWNyb3NzIGVudGlyZSBmaW5hbCBwbGFuIHRyZWUgKi8KKwlpbnQJCQlwbGFuX25v ZGVfaWQ7IC8qIHVuaXF1ZSBhY3Jvc3MgZW50aXJlCisJCQkJCQkJCQkJCQkJCQkJICogZmluYWwg cGxhbiB0cmVlICovCiAJTGlzdAkgICAqdGFyZ2V0bGlzdDsJCS8qIHRhcmdldCBsaXN0IHRvIGJl IGNvbXB1dGVkIGF0IHRoaXMgbm9kZSAqLwogCUxpc3QJICAgKnF1YWw7CQkJLyogaW1wbGljaXRs eS1BTkRlZCBxdWFsIGNvbmRpdGlvbnMgKi8KLQlzdHJ1Y3QgUGxhbiAqbGVmdHRyZWU7CQkvKiBp bnB1dCBwbGFuIHRyZWUocykgKi8KLQlzdHJ1Y3QgUGxhbiAqcmlnaHR0cmVlOwotCUxpc3QJICAg KmluaXRQbGFuOwkJLyogSW5pdCBQbGFuIG5vZGVzICh1bi1jb3JyZWxhdGVkIGV4cHIKLQkJCQkJ CQkJICogc3Vic2VsZWN0cykgKi8KKwlzdHJ1Y3QgUGxhbiAqbGVmdHRyZWUgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBpbnB1dCBwbGFuIHRyZWUocykgKi8KKwlzdHJ1Y3Qg UGxhbiAqcmlnaHR0cmVlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwlMaXN0 CSAgICppbml0UGxhbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIEluaXQg UGxhbiBub2RlcworCQkJCQkJCQkJCQkJCQkJICogKHVuLWNvcnJlbGF0ZWQgZXhwcgorCQkJCQkJ CQkJCQkJCQkJICogc3Vic2VsZWN0cykgKi8KIAogCS8qCiAJICogSW5mb3JtYXRpb24gZm9yIG1h bmFnZW1lbnQgb2YgcGFyYW1ldGVyLWNoYW5nZS1kcml2ZW4gcmVzY2FubmluZwpAQCAtMjM0LDMx ICsyNDksNDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGUKIHsKIAlQbGFuCQlwbGFuOwog CUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIElOU0VSVCwgVVBEQVRFLCBERUxFVEUsIG9yIE1FUkdF ICovCi0JYm9vbAkJY2FuU2V0VGFnOwkJLyogZG8gd2Ugc2V0IHRoZSBjb21tYW5kIHRhZy9lc19w cm9jZXNzZWQ/ICovCi0JSW5kZXgJCW5vbWluYWxSZWxhdGlvbjsJLyogUGFyZW50IFJUIGluZGV4 IGZvciB1c2Ugb2YgRVhQTEFJTiAqLwotCUluZGV4CQlyb290UmVsYXRpb247CS8qIFJvb3QgUlQg aW5kZXgsIGlmIHBhcnRpdGlvbmVkL2luaGVyaXRlZCAqLworCWJvb2wJCWNhblNldFRhZzsJLyog ZG8gd2Ugc2V0IHRoZSBjb21tYW5kCisJCQkJCQkJCQkJCQkJCQkJICogdGFnL2VzX3Byb2Nlc3Nl ZD8gKi8KKwlJbmRleAkJbm9taW5hbFJlbGF0aW9uOwkvKiBQYXJlbnQgUlQgaW5kZXggZm9yCisJ CQkJCQkJCQkJCQkJCQkJCSAqIHVzZSBvZiBFWFBMQUlOICovCisJSW5kZXgJCXJvb3RSZWxhdGlv bjsJLyogUm9vdCBSVCBpbmRleCwgaWYKKwkJCQkJCQkJCQkJCQkJCQkJICogcGFydGl0aW9uZWQv aW5oZXJpdGVkICovCiAJYm9vbAkJcGFydENvbHNVcGRhdGVkOwkvKiBzb21lIHBhcnQga2V5IGlu IGhpZXJhcmNoeSB1cGRhdGVkPyAqLwotCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsJLyogaW50 ZWdlciBsaXN0IG9mIFJUIGluZGV4ZXMgKi8KLQlMaXN0CSAgICp1cGRhdGVDb2xub3NMaXN0czsJ LyogcGVyLXRhcmdldC10YWJsZSB1cGRhdGVfY29sbm9zIGxpc3RzICovCi0JTGlzdAkgICAqd2l0 aENoZWNrT3B0aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUgV0NPIGxpc3RzICovCi0JY2hh cgkgICAqcmV0dXJuaW5nT2xkQWxpYXM7CS8qIGFsaWFzIGZvciBPTEQgaW4gUkVUVVJOSU5HIGxp c3RzICovCi0JY2hhcgkgICAqcmV0dXJuaW5nTmV3QWxpYXM7CS8qIGFsaWFzIGZvciBORVcgaW4g UkVUVVJOSU5HIGxpc3RzICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdHM7IC8qIHBlci10YXJn ZXQtdGFibGUgUkVUVVJOSU5HIHRsaXN0cyAqLwotCUxpc3QJICAgKmZkd1ByaXZMaXN0czsJLyog cGVyLXRhcmdldC10YWJsZSBGRFcgcHJpdmF0ZSBkYXRhIGxpc3RzICovCi0JQml0bWFwc2V0ICAq ZmR3RGlyZWN0TW9kaWZ5UGxhbnM7CS8qIGluZGljZXMgb2YgRkRXIERNIHBsYW5zICovCi0JTGlz dAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCi0J aW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwg Ki8KKwlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBvZiBSVAorCQkJ CQkJCQkJCQkJCQkJCQkJICogaW5kZXhlcyAqLworCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3Rz OwkvKiBwZXItdGFyZ2V0LXRhYmxlCisJCQkJCQkJCQkJCQkJCQkJCQkgKiB1cGRhdGVfY29sbm9z IGxpc3RzICovCisJTGlzdAkgICAqd2l0aENoZWNrT3B0aW9uTGlzdHM7IC8qIHBlci10YXJnZXQt dGFibGUgV0NPCisJCQkJCQkJCQkJCQkJCQkJCQkgKiBsaXN0cyAqLworCWNoYXIJICAgKnJldHVy bmluZ09sZEFsaWFzOwkvKiBhbGlhcyBmb3IgT0xEIGluCisJCQkJCQkJCQkJCQkJCQkJCQkgKiBS RVRVUk5JTkcgbGlzdHMgKi8KKwljaGFyCSAgICpyZXR1cm5pbmdOZXdBbGlhczsJLyogYWxpYXMg Zm9yIE5FVyBpbgorCQkJCQkJCQkJCQkJCQkJCQkJICogUkVUVVJOSU5HIGxpc3RzICovCisJTGlz dAkgICAqcmV0dXJuaW5nTGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUKKwkJCQkJCQkJCQkJCQkJ CQkJICogUkVUVVJOSU5HIHRsaXN0cyAqLworCUxpc3QJICAgKmZkd1ByaXZMaXN0cyBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIHBlci10YXJnZXQtdGFibGUgRkRXCisJCQkJ CQkJCQkJCQkJCQkJICogcHJpdmF0ZSBkYXRhIGxpc3RzICovCisJQml0bWFwc2V0ICAqZmR3RGly ZWN0TW9kaWZ5UGxhbnM7IC8qIGluZGljZXMgb2YgRkRXIERNCisJCQkJCQkJCQkJCQkJCQkJCQkg KiBwbGFucyAqLworCUxpc3QJICAgKnJvd01hcmtzOyAvKiBQbGFuUm93TWFya3MKKwkJCQkJCQkJ CQkJCQkJCSAqIChub24tbG9ja2luZyBvbmx5KSAqLworCWludAkJCWVwcVBhcmFtOyAvKiBJRCBv ZiBQYXJhbSBmb3IKKwkJCQkJCQkJCQkJCQkJCSAqIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJ T25Db25mbGljdEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05GTElDVCBhY3Rpb24g Ki8KIAlMaXN0CSAgICphcmJpdGVySW5kZXhlczsgLyogTGlzdCBvZiBPTiBDT05GTElDVCBhcmJp dGVyIGluZGV4IE9JRHMgICovCiAJTGlzdAkgICAqb25Db25mbGljdFNldDsJLyogSU5TRVJUIE9O IENPTkZMSUNUIERPIFVQREFURSB0YXJnZXRsaXN0ICovCiAJTGlzdAkgICAqb25Db25mbGljdENv bHM7IC8qIHRhcmdldCBjb2x1bW4gbnVtYmVycyBmb3Igb25Db25mbGljdFNldCAqLwogCU5vZGUJ ICAgKm9uQ29uZmxpY3RXaGVyZTsJLyogV0hFUkUgZm9yIE9OIENPTkZMSUNUIFVQREFURSAqLwot CUluZGV4CQlleGNsUmVsUlRJOwkJLyogUlRJIG9mIHRoZSBFWENMVURFRCBwc2V1ZG8gcmVsYXRp b24gKi8KLQlMaXN0CSAgICpleGNsUmVsVGxpc3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENMVURFRCBw c2V1ZG8gcmVsYXRpb24gKi8KLQlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFy Z2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCi0JCQkJCQkJCQkgKiBNRVJHRSAqLwotCUxp c3QJICAgKm1lcmdlSm9pbkNvbmRpdGlvbnM7CS8qIHBlci10YXJnZXQtdGFibGUgam9pbiBjb25k aXRpb25zCi0JCQkJCQkJCQkJICogZm9yIE1FUkdFICovCisJSW5kZXgJCWV4Y2xSZWxSVEk7CS8q IFJUSSBvZiB0aGUgRVhDTFVERUQKKwkJCQkJCQkJCQkJCQkJCQkgKiBwc2V1ZG8gcmVsYXRpb24g Ki8KKwlMaXN0CSAgICpleGNsUmVsVGxpc3Q7IC8qIHRsaXN0IG9mIHRoZSBFWENMVURFRAorCQkJ CQkJCQkJCQkJCQkJCSAqIHBzZXVkbyByZWxhdGlvbiAqLworCUxpc3QJICAgKm1lcmdlQWN0aW9u TGlzdHM7IC8qIHBlci10YXJnZXQtdGFibGUKKwkJCQkJCQkJCQkJCQkJCQkJICogbGlzdHMgb2Yg YWN0aW9ucyBmb3IKKwkJCQkJCQkJCQkJCQkJCQkJICogTUVSR0UgKi8KKwlMaXN0CSAgICptZXJn ZUpvaW5Db25kaXRpb25zOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGpvaW4KKwkJCQkJCQkJCQkJCQkJ CQkJCSAqIGNvbmRpdGlvbnMgZm9yIE1FUkdFICovCiB9IE1vZGlmeVRhYmxlOwogCiBzdHJ1Y3Qg UGFydGl0aW9uUHJ1bmVJbmZvOwkJLyogZm9yd2FyZCByZWZlcmVuY2UgdG8gc3RydWN0IGJlbG93 ICovCkBAIC0yNzIsNyArMzAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiB7CiAJUGxhbgkJ cGxhbjsKIAlCaXRtYXBzZXQgICphcHByZWxpZHM7CQkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBm b3JtZWQgYnkgdGhpcyBub2RlICovCi0JTGlzdAkgICAqYXBwZW5kcGxhbnM7CisJTGlzdAkgICAq YXBwZW5kcGxhbnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCWludAkJCW5h c3luY3BsYW5zOwkvKiAjIG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCiAJLyoKQEAgLTMwMSw3 ICszMzIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCS8qIFJUSXMgb2YgYXBwZW5k cmVsKHMpIGZvcm1lZCBieSB0aGlzIG5vZGUgKi8KIAlCaXRtYXBzZXQgICphcHByZWxpZHM7CiAK LQlMaXN0CSAgICptZXJnZXBsYW5zOworCUxpc3QJICAgKm1lcmdlcGxhbnMgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKQEAgLTM1Niw3ICszODcsNyBA QCB0eXBlZGVmIHN0cnVjdCBSZWN1cnNpdmVVbmlvbgogCU9pZAkJICAgKmR1cENvbGxhdGlvbnMg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCiAJLyogZXN0aW1hdGVkIG51bWJl ciBvZiBncm91cHMgaW4gaW5wdXQgKi8KLQlsb25nCQludW1Hcm91cHM7CisJbG9uZwkJbnVtR3Jv dXBzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIH0gUmVjdXJzaXZlVW5pb247 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTM3MCw3ICs0MDEsNyBAQCB0eXBlZGVmIHN0cnVj dCBSZWN1cnNpdmVVbmlvbgogdHlwZWRlZiBzdHJ1Y3QgQml0bWFwQW5kCiB7CiAJUGxhbgkJcGxh bjsKLQlMaXN0CSAgICpiaXRtYXBwbGFuczsKKwlMaXN0CSAgICpiaXRtYXBwbGFucyBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IEJpdG1hcEFuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMzg1LDcgKzQxNiw3IEBAIHR5cGVkZWYgc3RydWN0IEJpdG1hcE9yCiB7CiAJ UGxhbgkJcGxhbjsKIAlib29sCQlpc3NoYXJlZDsKLQlMaXN0CSAgICpiaXRtYXBwbGFuczsKKwlM aXN0CSAgICpiaXRtYXBwbGFucyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9 IEJpdG1hcE9yOwogCiAvKgpAQCAtNDAwLDcgKzQzMSw4IEBAIHR5cGVkZWYgc3RydWN0IFNjYW4K IAlwZ19ub2RlX2F0dHIoYWJzdHJhY3QpCiAKIAlQbGFuCQlwbGFuOwotCUluZGV4CQlzY2FucmVs aWQ7CQkvKiByZWxpZCBpcyBpbmRleCBpbnRvIHRoZSByYW5nZSB0YWJsZSAqLworCUluZGV4CQlz Y2FucmVsaWQ7CS8qIHJlbGlkIGlzIGluZGV4IGludG8KKwkJCQkJCQkJCQkJCQkJCQkgKiB0aGUg cmFuZ2UgdGFibGUgKi8KIH0gU2NhbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDY1LDkg KzQ5NywxMSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW4KIAlTY2FuCQlzY2FuOwogCU9pZAkJ CWluZGV4aWQ7CQkvKiBPSUQgb2YgaW5kZXggdG8gc2NhbiAqLwogCUxpc3QJICAgKmluZGV4cXVh bDsJCS8qIGxpc3Qgb2YgaW5kZXggcXVhbHMgKHVzdWFsbHkgT3BFeHBycykgKi8KLQlMaXN0CSAg ICppbmRleHF1YWxvcmlnOwkvKiB0aGUgc2FtZSBpbiBvcmlnaW5hbCBmb3JtICovCisJTGlzdAkg ICAqaW5kZXhxdWFsb3JpZzsJLyogdGhlIHNhbWUgaW4gb3JpZ2luYWwKKwkJCQkJCQkJCQkJCQkJ CQkJICogZm9ybSAqLwogCUxpc3QJICAgKmluZGV4b3JkZXJieTsJLyogbGlzdCBvZiBpbmRleCBP UkRFUiBCWSBleHBycyAqLwotCUxpc3QJICAgKmluZGV4b3JkZXJieW9yaWc7CS8qIHRoZSBzYW1l IGluIG9yaWdpbmFsIGZvcm0gKi8KKwlMaXN0CSAgICppbmRleG9yZGVyYnlvcmlnOyAvKiB0aGUg c2FtZSBpbiBvcmlnaW5hbAorCQkJCQkJCQkJCQkJCQkJCQkgKiBmb3JtICovCiAJTGlzdAkgICAq aW5kZXhvcmRlcmJ5b3BzOwkvKiBPSURzIG9mIHNvcnQgb3BzIGZvciBPUkRFUiBCWSBleHBycyAq LwogCVNjYW5EaXJlY3Rpb24gaW5kZXhvcmRlcmRpcjsJLyogZm9yd2FyZCBvciBiYWNrd2FyZCBv ciBkb24ndCBjYXJlICovCiB9IEluZGV4U2NhbjsKQEAgLTUwOCw5ICs1NDIsMTIgQEAgdHlwZWRl ZiBzdHJ1Y3QgSW5kZXhPbmx5U2NhbgogCVNjYW4JCXNjYW47CiAJT2lkCQkJaW5kZXhpZDsJCS8q IE9JRCBvZiBpbmRleCB0byBzY2FuICovCiAJTGlzdAkgICAqaW5kZXhxdWFsOwkJLyogbGlzdCBv ZiBpbmRleCBxdWFscyAodXN1YWxseSBPcEV4cHJzKSAqLwotCUxpc3QJICAgKnJlY2hlY2txdWFs OwkvKiBpbmRleCBxdWFscyBpbiByZWNoZWNrYWJsZSBmb3JtICovCisJTGlzdAkgICAqcmVjaGVj a3F1YWw7CS8qIGluZGV4IHF1YWxzIGluCisJCQkJCQkJCQkJCQkJCQkJICogcmVjaGVja2FibGUg Zm9ybSAqLwogCUxpc3QJICAgKmluZGV4b3JkZXJieTsJLyogbGlzdCBvZiBpbmRleCBPUkRFUiBC WSBleHBycyAqLwotCUxpc3QJICAgKmluZGV4dGxpc3Q7CQkvKiBUYXJnZXRFbnRyeSBsaXN0IGRl c2NyaWJpbmcgaW5kZXgncyBjb2xzICovCisJTGlzdAkgICAqaW5kZXh0bGlzdDsJLyogVGFyZ2V0 RW50cnkgbGlzdAorCQkJCQkJCQkJCQkJCQkJCSAqIGRlc2NyaWJpbmcgaW5kZXgncworCQkJCQkJ CQkJCQkJCQkJCSAqIGNvbHMgKi8KIAlTY2FuRGlyZWN0aW9uIGluZGV4b3JkZXJkaXI7CS8qIGZv cndhcmQgb3IgYmFja3dhcmQgb3IgZG9uJ3QgY2FyZSAqLwogfSBJbmRleE9ubHlTY2FuOwogCkBA IC01MzUsOSArNTcyLDExIEBAIHR5cGVkZWYgc3RydWN0IEJpdG1hcEluZGV4U2NhbgogewogCVNj YW4JCXNjYW47CiAJT2lkCQkJaW5kZXhpZDsJCS8qIE9JRCBvZiBpbmRleCB0byBzY2FuICovCi0J Ym9vbAkJaXNzaGFyZWQ7CQkvKiBDcmVhdGUgc2hhcmVkIGJpdG1hcCBpZiBzZXQgKi8KKwlib29s CQlpc3NoYXJlZDsgLyogQ3JlYXRlIHNoYXJlZCBiaXRtYXAKKwkJCQkJCQkJCQkJCQkJCSAqIGlm IHNldCAqLwogCUxpc3QJICAgKmluZGV4cXVhbDsJCS8qIGxpc3Qgb2YgaW5kZXggcXVhbHMgKE9w RXhwcnMpICovCi0JTGlzdAkgICAqaW5kZXhxdWFsb3JpZzsJLyogdGhlIHNhbWUgaW4gb3JpZ2lu YWwgZm9ybSAqLworCUxpc3QJICAgKmluZGV4cXVhbG9yaWc7CS8qIHRoZSBzYW1lIGluIG9yaWdp bmFsCisJCQkJCQkJCQkJCQkJCQkJCSAqIGZvcm0gKi8KIH0gQml0bWFwSW5kZXhTY2FuOwogCiAv KiAtLS0tLS0tLS0tLS0tLS0tCkBAIC01NTIsNyArNTkxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQml0 bWFwSW5kZXhTY2FuCiB0eXBlZGVmIHN0cnVjdCBCaXRtYXBIZWFwU2NhbgogewogCVNjYW4JCXNj YW47Ci0JTGlzdAkgICAqYml0bWFwcXVhbG9yaWc7IC8qIGluZGV4IHF1YWxzLCBpbiBzdGFuZGFy ZCBleHByIGZvcm0gKi8KKwlMaXN0CSAgICpiaXRtYXBxdWFsb3JpZzsJLyogaW5kZXggcXVhbHMs IGluCisJCQkJCQkJCQkJCQkJCQkJCSAqIHN0YW5kYXJkIGV4cHIgZm9ybSAqLwogfSBCaXRtYXBI ZWFwU2NhbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjEyLDcgKzY1Miw3IEBAIHR5cGVk ZWYgZW51bSBTdWJxdWVyeVNjYW5TdGF0dXMKIHR5cGVkZWYgc3RydWN0IFN1YnF1ZXJ5U2Nhbgog ewogCVNjYW4JCXNjYW47Ci0JUGxhbgkgICAqc3VicGxhbjsKKwlQbGFuCSAgICpzdWJwbGFuIHBn X25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAlTdWJxdWVyeVNjYW5TdGF0dXMgc2Nh bnN0YXR1czsKIH0gU3VicXVlcnlTY2FuOwogCkBAIC02NTQsOCArNjk0LDExIEBAIHR5cGVkZWYg c3RydWN0IFRhYmxlRnVuY1NjYW4KIHR5cGVkZWYgc3RydWN0IEN0ZVNjYW4KIHsKIAlTY2FuCQlz Y2FuOwotCWludAkJCWN0ZVBsYW5JZDsJCS8qIElEIG9mIGluaXQgU3ViUGxhbiBmb3IgQ1RFICov Ci0JaW50CQkJY3RlUGFyYW07CQkvKiBJRCBvZiBQYXJhbSByZXByZXNlbnRpbmcgQ1RFIG91dHB1 dCAqLworCWludAkJCWN0ZVBsYW5JZDsJLyogSUQgb2YgaW5pdCBTdWJQbGFuCisJCQkJCQkJCQkJ CQkJCQkJICogZm9yIENURSAqLworCWludAkJCWN0ZVBhcmFtOyAvKiBJRCBvZiBQYXJhbQorCQkJ CQkJCQkJCQkJCQkJICogcmVwcmVzZW50aW5nIENURQorCQkJCQkJCQkJCQkJCQkJICogb3V0cHV0 ICovCiB9IEN0ZVNjYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3NSw3ICs3MTgsOSBA QCB0eXBlZGVmIHN0cnVjdCBOYW1lZFR1cGxlc3RvcmVTY2FuCiB0eXBlZGVmIHN0cnVjdCBXb3Jr VGFibGVTY2FuCiB7CiAJU2NhbgkJc2NhbjsKLQlpbnQJCQl3dFBhcmFtOwkJLyogSUQgb2YgUGFy YW0gcmVwcmVzZW50aW5nIHdvcmsgdGFibGUgKi8KKwlpbnQJCQl3dFBhcmFtOwkvKiBJRCBvZiBQ YXJhbQorCQkJCQkJCQkJCQkJCQkJICogcmVwcmVzZW50aW5nIHdvcmsKKwkJCQkJCQkJCQkJCQkJ CSAqIHRhYmxlICovCiB9IFdvcmtUYWJsZVNjYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAg LTcyMiwxNyArNzY3LDI2IEBAIHR5cGVkZWYgc3RydWN0IEZvcmVpZ25TY2FuCiB7CiAJU2NhbgkJ c2NhbjsKIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBTRUxFQ1QvSU5TRVJUL1VQREFURS9ERUxF VEUgKi8KLQlJbmRleAkJcmVzdWx0UmVsYXRpb247IC8qIGRpcmVjdCBtb2RpZmljYXRpb24gdGFy Z2V0J3MgUlQgaW5kZXggKi8KLQlPaWQJCQljaGVja0FzVXNlcjsJLyogdXNlciB0byBwZXJmb3Jt IHRoZSBzY2FuIGFzOyAwIG1lYW5zIHRvCi0JCQkJCQkJCSAqIGNoZWNrIGFzIGN1cnJlbnQgdXNl ciAqLworCUluZGV4CQlyZXN1bHRSZWxhdGlvbjsJLyogZGlyZWN0IG1vZGlmaWNhdGlvbgorCQkJ CQkJCQkJCQkJCQkJCQkgKiB0YXJnZXQncyBSVCBpbmRleCAqLworCU9pZAkJCWNoZWNrQXNVc2Vy OwkvKiB1c2VyIHRvIHBlcmZvcm0gdGhlCisJCQkJCQkJCQkJCQkJCQkJICogc2NhbiBhczsgMCBt ZWFucyB0bworCQkJCQkJCQkJCQkJCQkJCSAqIGNoZWNrIGFzIGN1cnJlbnQgdXNlciAqLwogCU9p ZAkJCWZzX3NlcnZlcjsJCS8qIE9JRCBvZiBmb3JlaWduIHNlcnZlciAqLwotCUxpc3QJICAgKmZk d19leHByczsJCS8qIGV4cHJlc3Npb25zIHRoYXQgRkRXIG1heSBldmFsdWF0ZSAqLwotCUxpc3QJ ICAgKmZkd19wcml2YXRlOwkvKiBwcml2YXRlIGRhdGEgZm9yIEZEVyAqLwotCUxpc3QJICAgKmZk d19zY2FuX3RsaXN0OyAvKiBvcHRpb25hbCB0bGlzdCBkZXNjcmliaW5nIHNjYW4gdHVwbGUgKi8K LQlMaXN0CSAgICpmZHdfcmVjaGVja19xdWFsczsJLyogb3JpZ2luYWwgcXVhbHMgbm90IGluIHNj YW4ucGxhbi5xdWFsICovCi0JQml0bWFwc2V0ICAqZnNfcmVsaWRzOwkJLyogYmFzZStPSiBSVElz IGdlbmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KLQlCaXRtYXBzZXQgICpmc19iYXNlX3JlbGlkczsg LyogYmFzZSBSVElzIGdlbmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KLQlib29sCQlmc1N5c3RlbUNv bDsJLyogdHJ1ZSBpZiBhbnkgInN5c3RlbSBjb2x1bW4iIGlzIG5lZWRlZCAqLworCUxpc3QJICAg KmZkd19leHByczsJLyogZXhwcmVzc2lvbnMgdGhhdCBGRFcKKwkJCQkJCQkJCQkJCQkJCQkgKiBt YXkgZXZhbHVhdGUgKi8KKwlMaXN0CSAgICpmZHdfcHJpdmF0ZSBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2lnbm9yZSk7CS8qIHByaXZhdGUgZGF0YSBmb3IgRkRXICovCisJTGlzdAkgICAqZmR3 X3NjYW5fdGxpc3Q7CS8qIG9wdGlvbmFsIHRsaXN0CisJCQkJCQkJCQkJCQkJCQkJCSAqIGRlc2Ny aWJpbmcgc2NhbiB0dXBsZSAqLworCUxpc3QJICAgKmZkd19yZWNoZWNrX3F1YWxzOwkvKiBvcmln aW5hbCBxdWFscyBub3QgaW4KKwkJCQkJCQkJCQkJCQkJCQkJCSAqIHNjYW4ucGxhbi5xdWFsICov CisJQml0bWFwc2V0ICAqZnNfcmVsaWRzOwkvKiBiYXNlK09KIFJUSXMKKwkJCQkJCQkJCQkJCQkJ CQkgKiBnZW5lcmF0ZWQgYnkgdGhpcworCQkJCQkJCQkJCQkJCQkJCSAqIHNjYW4gKi8KKwlCaXRt YXBzZXQgICpmc19iYXNlX3JlbGlkczsJLyogYmFzZSBSVElzIGdlbmVyYXRlZAorCQkJCQkJCQkJ CQkJCQkJCQkgKiBieSB0aGlzIHNjYW4gKi8KKwlib29sCQlmc1N5c3RlbUNvbDsJLyogdHJ1ZSBp ZiBhbnkgInN5c3RlbQorCQkJCQkJCQkJCQkJCQkJCSAqIGNvbHVtbiIgaXMgbmVlZGVkICovCiB9 IEZvcmVpZ25TY2FuOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC03NTMsMjAgKzgwNywyNyBA QCBzdHJ1Y3QgQ3VzdG9tU2Nhbk1ldGhvZHM7CiB0eXBlZGVmIHN0cnVjdCBDdXN0b21TY2FuCiB7 CiAJU2NhbgkJc2NhbjsKLQl1aW50MzIJCWZsYWdzOwkJCS8qIG1hc2sgb2YgQ1VTVE9NUEFUSF8q IGZsYWdzLCBzZWUKLQkJCQkJCQkJICogbm9kZXMvZXh0ZW5zaWJsZS5oICovCi0JTGlzdAkgICAq Y3VzdG9tX3BsYW5zOwkvKiBsaXN0IG9mIFBsYW4gbm9kZXMsIGlmIGFueSAqLwotCUxpc3QJICAg KmN1c3RvbV9leHByczsJLyogZXhwcmVzc2lvbnMgdGhhdCBjdXN0b20gY29kZSBtYXkgZXZhbHVh dGUgKi8KLQlMaXN0CSAgICpjdXN0b21fcHJpdmF0ZTsgLyogcHJpdmF0ZSBkYXRhIGZvciBjdXN0 b20gY29kZSAqLwotCUxpc3QJICAgKmN1c3RvbV9zY2FuX3RsaXN0OwkvKiBvcHRpb25hbCB0bGlz dCBkZXNjcmliaW5nIHNjYW4gdHVwbGUgKi8KLQlCaXRtYXBzZXQgICpjdXN0b21fcmVsaWRzOwkv KiBSVElzIGdlbmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KKwl1aW50MzIJCWZsYWdzOwkvKiBtYXNr IG9mIENVU1RPTVBBVEhfKgorCQkJCQkJCQkJCQkJCQkJICogZmxhZ3MsIHNlZQorCQkJCQkJCQkJ CQkJCQkJICogbm9kZXMvZXh0ZW5zaWJsZS5oICovCisJTGlzdAkgICAqY3VzdG9tX3BsYW5zOyAv KiBsaXN0IG9mIFBsYW4gbm9kZXMsCisJCQkJCQkJCQkJCQkJCQkJICogaWYgYW55ICovCisJTGlz dAkgICAqY3VzdG9tX2V4cHJzOyAvKiBleHByZXNzaW9ucyB0aGF0CisJCQkJCQkJCQkJCQkJCQkJ ICogY3VzdG9tIGNvZGUgbWF5CisJCQkJCQkJCQkJCQkJCQkJICogZXZhbHVhdGUgKi8KKwlMaXN0 CSAgICpjdXN0b21fcHJpdmF0ZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8q IHByaXZhdGUgZGF0YSBmb3IKKwkJCQkJCQkJCQkJCQkJCQkJICogY3VzdG9tIGNvZGUgKi8KKwlM aXN0CSAgICpjdXN0b21fc2Nhbl90bGlzdDsJLyogb3B0aW9uYWwgdGxpc3QKKwkJCQkJCQkJCQkJ CQkJCQkJCSAqIGRlc2NyaWJpbmcgc2NhbiB0dXBsZSAqLworCUJpdG1hcHNldCAgKmN1c3RvbV9y ZWxpZHM7CS8qIFJUSXMgZ2VuZXJhdGVkIGJ5CisJCQkJCQkJCQkJCQkJCQkJCSAqIHRoaXMgc2Nh biAqLwogCiAJLyoKIAkgKiBOT1RFOiBUaGUgbWV0aG9kIGZpZWxkIG9mIEN1c3RvbVNjYW4gaXMg cmVxdWlyZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEKIAkgKiBzdGF0aWMgdGFibGUgb2YgY2FsbGJh Y2sgZnVuY3Rpb25zLiAgU28gd2UgZG9uJ3QgY29weSB0aGUgdGFibGUgaXRzZWxmLAogCSAqIGp1 c3QgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCBvbmUuCiAJICovCi0JY29uc3Qgc3RydWN0IEN1c3Rv bVNjYW5NZXRob2RzICptZXRob2RzOworCWNvbnN0IHN0cnVjdCBDdXN0b21TY2FuTWV0aG9kcyAq bWV0aG9kcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IEN1c3RvbVNjYW47 CiAKIC8qCkBAIC04MjYsNyArODg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTmVzdExvb3AKIAogdHlw ZWRlZiBzdHJ1Y3QgTmVzdExvb3BQYXJhbQogewotCXBnX25vZGVfYXR0cihub19lcXVhbCwgbm9f cXVlcnlfanVtYmxlKQorCXBnX25vZGVfYXR0cihub19lcXVhbCkKIAogCU5vZGVUYWcJCXR5cGU7 CiAJaW50CQkJcGFyYW1ubzsJCS8qIG51bWJlciBvZiB0aGUgUEFSQU1fRVhFQyBQYXJhbSB0byBz ZXQgKi8KQEAgLTkzMiw3ICs5OTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBNZW1vaXplCiAJICogVGhl IG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdGhhdCB0aGUgcGxhbm5lciBleHBlY3RzIHdpbGwg Zml0IGluIHRoZQogCSAqIGNhY2hlLCBvciAwIGlmIHVua25vd24KIAkgKi8KLQl1aW50MzIJCWVz dF9lbnRyaWVzOworCXVpbnQzMgkJZXN0X2VudHJpZXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCiAJLyogcGFyYW1pZHMgZnJvbSBwYXJhbV9leHBycyAqLwogCUJpdG1hcHNl dCAgKmtleXBhcmFtaWRzOwpAQCAtMTAyOCw3ICsxMDg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdn CiAJT2lkCQkgICAqZ3JwQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xz KSk7CiAKIAkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwotCWxvbmcJ CW51bUdyb3VwczsKKwlsb25nCQludW1Hcm91cHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOwogCiAJLyogZm9yIHBhc3MtYnktcmVmIHRyYW5zaXRpb24gZGF0YSAqLwogCXVpbnQ2 NAkJdHJhbnNpdGlvblNwYWNlOwpAQCAtMTE1NCwxMiArMTIxNSwxOSBAQCB0eXBlZGVmIHN0cnVj dCBVbmlxdWUKIHR5cGVkZWYgc3RydWN0IEdhdGhlcgogewogCVBsYW4JCXBsYW47Ci0JaW50CQkJ bnVtX3dvcmtlcnM7CS8qIHBsYW5uZWQgbnVtYmVyIG9mIHdvcmtlciBwcm9jZXNzZXMgKi8KLQlp bnQJCQlyZXNjYW5fcGFyYW07CS8qIElEIG9mIFBhcmFtIHRoYXQgc2lnbmFscyBhIHJlc2Nhbiwg b3IgLTEgKi8KLQlib29sCQlzaW5nbGVfY29weTsJLyogZG9uJ3QgZXhlY3V0ZSBwbGFuIG1vcmUg dGhhbiBvbmNlICovCi0JYm9vbAkJaW52aXNpYmxlOwkJLyogc3VwcHJlc3MgRVhQTEFJTiBkaXNw bGF5IChmb3IgdGVzdGluZyk/ICovCi0JQml0bWFwc2V0ICAqaW5pdFBhcmFtOwkJLyogcGFyYW0g aWQncyBvZiBpbml0cGxhbnMgd2hpY2ggYXJlIHJlZmVycmVkCi0JCQkJCQkJCSAqIGF0IGdhdGhl ciBvciBvbmUgb2YgaXRzIGNoaWxkIG5vZGVzICovCisJLyogcGxhbm5lZCBudW1iZXIgb2Ygd29y a2VyIHByb2Nlc3NlcyAqLworCWludAkJCW51bV93b3JrZXJzOworCS8qIElEIG9mIFBhcmFtIHRo YXQgc2lnbmFscyBhIHJlc2Nhbiwgb3IgLTEgKi8KKwlpbnQJCQlyZXNjYW5fcGFyYW07CisJLyog ZG9uJ3QgZXhlY3V0ZSBwbGFuIG1vcmUgdGhhbiBvbmNlICovCisJYm9vbAkJc2luZ2xlX2NvcHk7 CisJLyogc3VwcHJlc3MgRVhQTEFJTiBkaXNwbGF5IChmb3IgdGVzdGluZyk/ICovCisJYm9vbAkJ aW52aXNpYmxlOworCS8qCisJICogcGFyYW0gaWQncyBvZiBpbml0cGxhbnMgd2hpY2ggYXJlIHJl ZmVycmVkIGF0IGdhdGhlciBvciBvbmUgb2YgaXRzCisJICogY2hpbGQgbm9kZXMKKwkgKi8KKwlC aXRtYXBzZXQgICppbml0UGFyYW07CiB9IEdhdGhlcjsKIAogLyogLS0tLS0tLS0tLS0tCkBAIC0x MjE3LDExICsxMjg1LDE2IEBAIHR5cGVkZWYgc3RydWN0IEhhc2gKIAkgKiBuZWVkZWQgdG8gcHV0 IHRoZW0gaW50byB0aGUgaGFzaHRhYmxlLgogCSAqLwogCUxpc3QJICAgKmhhc2hrZXlzOwkJLyog aGFzaCBrZXlzIGZvciB0aGUgaGFzaGpvaW4gY29uZGl0aW9uICovCi0JT2lkCQkJc2tld1RhYmxl OwkJLyogb3V0ZXIgam9pbiBrZXkncyB0YWJsZSBPSUQsIG9yIEludmFsaWRPaWQgKi8KLQlBdHRy TnVtYmVyCXNrZXdDb2x1bW47CQkvKiBvdXRlciBqb2luIGtleSdzIGNvbHVtbiAjLCBvciB6ZXJv ICovCi0JYm9vbAkJc2tld0luaGVyaXQ7CS8qIGlzIG91dGVyIGpvaW4gcmVsIGFuIGluaGVyaXRh bmNlIHRyZWU/ICovCisJT2lkCQkJc2tld1RhYmxlOwkvKiBvdXRlciBqb2luIGtleSdzCisJCQkJ CQkJCQkJCQkJCQkJICogdGFibGUgT0lELCBvcgorCQkJCQkJCQkJCQkJCQkJCSAqIEludmFsaWRP aWQgKi8KKwlBdHRyTnVtYmVyCXNrZXdDb2x1bW47CS8qIG91dGVyIGpvaW4ga2V5J3MKKwkJCQkJ CQkJCQkJCQkJCQkgKiBjb2x1bW4gIywgb3IgemVybyAqLworCWJvb2wJCXNrZXdJbmhlcml0Owkv KiBpcyBvdXRlciBqb2luIHJlbCBhbgorCQkJCQkJCQkJCQkJCQkJCSAqIGluaGVyaXRhbmNlIHRy ZWU/ICovCiAJLyogYWxsIG90aGVyIGluZm8gaXMgaW4gdGhlIHBhcmVudCBIYXNoSm9pbiBub2Rl ICovCi0JQ2FyZGluYWxpdHkgcm93c190b3RhbDsJCS8qIGVzdGltYXRlIHRvdGFsIHJvd3MgaWYg cGFyYWxsZWxfYXdhcmUgKi8KKwlDYXJkaW5hbGl0eSByb3dzX3RvdGFsIHBnX25vZGVfYXR0cihx dWVyeV9qdW1ibGVfaWdub3JlKTsJLyogZXN0aW1hdGUgdG90YWwgcm93cworCQkJCQkJCQkJCQkJ CQkJCSAqIGlmIHBhcmFsbGVsX2F3YXJlICovCiB9IEhhc2g7CiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0KQEAgLTEyNTIsNyArMTMyNSw3IEBAIHR5cGVkZWYgc3RydWN0IFNldE9wCiAJYm9vbAkgICAq Y21wTnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CiAKIAkvKiBl c3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBsZWZ0IGlucHV0ICovCi0JbG9uZwkJbnVtR3Jv dXBzOworCWxvbmcJCW51bUdyb3VwcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7 CiB9IFNldE9wOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjY3LDggKzEzNDAsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgU2V0T3AKIHR5cGVkZWYgc3RydWN0IExvY2tSb3dzCiB7CiAJUGxhbgkJ cGxhbjsKLQlMaXN0CSAgICpyb3dNYXJrczsJCS8qIGEgbGlzdCBvZiBQbGFuUm93TWFyaydzICov Ci0JaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2 YWwgKi8KKwlMaXN0CSAgICpyb3dNYXJrczsgLyogYSBsaXN0IG9mCisJCQkJCQkJCQkJCQkJCQkg KiBQbGFuUm93TWFyaydzICovCisJaW50CQkJZXBxUGFyYW07IC8qIElEIG9mIFBhcmFtIGZvcgor CQkJCQkJCQkJCQkJCQkJICogRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIH0gTG9ja1Jvd3M7CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggODM5ZTcxZDUyZjQu Ljg1NzAyZjc1MDcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTA3NSw4ICsxMDc1LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgU3ViTGluawogICovCiB0eXBlZGVmIHN0cnVjdCBTdWJQbGFuCiB7Ci0J cGdfbm9kZV9hdHRyKG5vX3F1ZXJ5X2p1bWJsZSkKLQogCUV4cHIJCXhwcjsKIAkvKiBGaWVsZHMg Y29waWVkIGZyb20gb3JpZ2luYWwgU3ViTGluazogKi8KIAlTdWJMaW5rVHlwZSBzdWJMaW5rVHlw ZTsJLyogc2VlIGFib3ZlICovCkBAIC0xMTA3LDggKzExMDUsOSBAQCB0eXBlZGVmIHN0cnVjdCBT dWJQbGFuCiAJTGlzdAkgICAqcGFyUGFyYW07CQkvKiBpbmRpY2VzIG9mIGlucHV0IFBhcmFtcyBm cm9tIHBhcmVudCBwbGFuICovCiAJTGlzdAkgICAqYXJnczsJCQkvKiBleHBycyB0byBwYXNzIGFz IHBhclBhcmFtIHZhbHVlcyAqLwogCS8qIEVzdGltYXRlZCBleGVjdXRpb24gY29zdHM6ICovCi0J Q29zdAkJc3RhcnR1cF9jb3N0OwkvKiBvbmUtdGltZSBzZXR1cCBjb3N0ICovCi0JQ29zdAkJcGVy X2NhbGxfY29zdDsJLyogY29zdCBmb3IgZWFjaCBzdWJwbGFuIGV2YWx1YXRpb24gKi8KKwlDb3N0 CQlzdGFydHVwX2Nvc3QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOyAvKiBvbmUt dGltZSBzZXR1cCBjb3N0ICovCisJQ29zdAkJcGVyX2NhbGxfY29zdCBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CS8qIGNvc3QgZm9yIGVhY2ggc3VicGxhbgorCQkJCQkJCQkJCQkJ CQkJCQkgKiBldmFsdWF0aW9uICovCiB9IFN1YlBsYW47CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1i bGUuaAppbmRleCA1YWZhNmYzNjA1Zi4uNjM1NmRkNzNmYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1i bGUuaApAQCAtMTUsNiArMTUsNyBAQAogI2RlZmluZSBRVUVSWUpVTUJMRV9ICiAKICNpbmNsdWRl ICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGF0aG5vZGVzLmgiCiAKIC8q CiAgKiBTdHJ1Y3QgZm9yIHRyYWNraW5nIGxvY2F0aW9ucy9sZW5ndGhzIG9mIGNvbnN0YW50cyBk dXJpbmcgbm9ybWFsaXphdGlvbgpAQCAtNTksMTUgKzYwLDI3IEBAIGVudW0gQ29tcHV0ZVF1ZXJ5 SWRUeXBlCiAJQ09NUFVURV9RVUVSWV9JRF9SRUdSRVNTLAogfTsKIAorLyogVmFsdWVzIGZvciB0 aGUgY29tcHV0ZV9wbGFuX2lkIEdVQyAqLworZW51bSBDb21wdXRlUGxhbklkVHlwZQoreworCUNP TVBVVEVfUExBTl9JRF9PRkYsCisJQ09NUFVURV9QTEFOX0lEX09OLAorCUNPTVBVVEVfUExBTl9J RF9BVVRPLAorCUNPTVBVVEVfUExBTl9JRF9SRUdSRVNTLAorfTsKKwogLyogR1VDIHBhcmFtZXRl cnMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tcHV0ZV9xdWVyeV9pZDsKK2V4dGVybiBQ R0RMTElNUE9SVCBpbnQgY29tcHV0ZV9wbGFuX2lkOwogCiAKIGV4dGVybiBjb25zdCBjaGFyICpD bGVhblF1ZXJ5dGV4dChjb25zdCBjaGFyICpxdWVyeSwgaW50ICpsb2NhdGlvbiwgaW50ICpsZW4p OwogZXh0ZXJuIEp1bWJsZVN0YXRlICpKdW1ibGVRdWVyeShRdWVyeSAqcXVlcnkpOwogZXh0ZXJu IHZvaWQgRW5hYmxlUXVlcnlJZCh2b2lkKTsKK2V4dGVybiB2b2lkIEVuYWJsZVBsYW5JZCh2b2lk KTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVlcnlfaWRfZW5hYmxlZDsKK2V4dGVybiBQ R0RMTElNUE9SVCBib29sIHBsYW5faWRfZW5hYmxlZDsKIAogLyoKICAqIFJldHVybnMgd2hldGhl ciBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uIGhhcyBiZWVuIGVuYWJsZWQsIGVpdGhlcgpA QCAtODMsMTAgKzk2LDI1IEBAIElzUXVlcnlJZEVuYWJsZWQodm9pZCkKIAlyZXR1cm4gcXVlcnlf aWRfZW5hYmxlZDsKIH0KIAotLyogRnVuY3Rpb25zIGludGVuZGVkIGZvciBvdGhlciB1c2VycyBv ZiBqdW1ibGluZyAoZS5nLiBwbGFuIGp1bWJsaW5nKSAqLworLyoKKyAqIFJldHVybnMgd2hldGhl ciBwbGFuIGlkZW50aWZpZXIgY29tcHV0YXRpb24gaGFzIGJlZW4gZW5hYmxlZCwgZWl0aGVyCisg KiBkaXJlY3RseSBpbiB0aGUgR1VDIG9yIGJ5IGEgbW9kdWxlIHdoZW4gdGhlIHNldHRpbmcgaXMg J2F1dG8nLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0lzUGxhbklkRW5hYmxlZCh2b2lkKQor eworCWlmIChjb21wdXRlX3BsYW5faWQgPT0gQ09NUFVURV9QTEFOX0lEX09GRikKKwkJcmV0dXJu IGZhbHNlOworCWlmIChjb21wdXRlX3BsYW5faWQgPT0gQ09NUFVURV9QTEFOX0lEX09OKQorCQly ZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gcGxhbl9pZF9lbmFibGVkOworfQorCisvKiBGdW5jdGlvbnMg Y2FsbGVkIGZvciBwbGFuIGp1bWJsaW5nIG9yIGV4dGVuc2lvbnMgZG9pbmcgdGhlaXIgb3duIGp1 bWJsaW5nICovCiBleHRlcm4gSnVtYmxlU3RhdGUgKkluaXRpYWxpemVKdW1ibGVTdGF0ZShib29s IHJlY29yZF9jbG9jYXRpb25zKTsKIGV4dGVybiB2b2lkIEFwcGVuZEp1bWJsZShKdW1ibGVTdGF0 ZSAqanN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppdGVtLCBTaXplIHNpemUpOwogZXh0ZXJu IHZvaWQgSnVtYmxlTm9kZShKdW1ibGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKTsKK2V4dGVy biB2b2lkIEp1bWJsZVJhbmdlVGFibGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTGlzdCAqcnRhYmxl KTsKIGV4dGVybiB1aW50NjQgSGFzaEp1bWJsZVN0YXRlKEp1bWJsZVN0YXRlICpqc3RhdGUpOwog CiAjZW5kaWYJCQkJCQkJLyogUVVFUllKVU1CTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3Rh dHVzLmgKaW5kZXggZDNkNGZmNmM1YzkuLjQzN2E0Y2VjNWJmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tl bmRfc3RhdHVzLmgKQEAgLTE3MCw2ICsxNzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ0JhY2tlbmRT dGF0dXMKIAogCS8qIHF1ZXJ5IGlkZW50aWZpZXIsIG9wdGlvbmFsbHkgY29tcHV0ZWQgdXNpbmcg cG9zdF9wYXJzZV9hbmFseXplX2hvb2sgKi8KIAl1aW50NjQJCXN0X3F1ZXJ5X2lkOworCisJLyog cGxhbiBpZGVudGlmaWVyLCBvcHRpb25hbGx5IGNvbXB1dGVkIGFmdGVyIHBsYW5uaW5nICovCisJ dWludDY0CQlzdF9wbGFuX2lkOwogfSBQZ0JhY2tlbmRTdGF0dXM7CiAKIApAQCAtMzE2LDYgKzMx OSw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9jbGVhcl9iYWNrZW5kX2FjdGl2aXR5X3NuYXBzaG90 KHZvaWQpOwogLyogQWN0aXZpdHkgcmVwb3J0aW5nIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIHZvaWQg cGdzdGF0X3JlcG9ydF9hY3Rpdml0eShCYWNrZW5kU3RhdGUgc3RhdGUsIGNvbnN0IGNoYXIgKmNt ZF9zdHIpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9xdWVyeV9pZCh1aW50NjQgcXVlcnlf aWQsIGJvb2wgZm9yY2UpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9wbGFuX2lkKHVpbnQ2 NCBxdWVyeV9pZCwgdWludDY0IHBsYW5faWQsIGJvb2wgZm9yY2UpOwogZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF90ZW1wZmlsZShzaXplX3QgZmlsZXNpemUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF9hcHBuYW1lKGNvbnN0IGNoYXIgKmFwcG5hbWUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF94YWN0X3RpbWVzdGFtcChUaW1lc3RhbXBUeiB0c3RhbXApOwpAQCAtMzIzLDYgKzMy Nyw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X2JhY2tlbmRfY3VycmVudF9hY3Rp dml0eShpbnQgcGlkLCBib29sIGNoZWNrVXNlcik7CiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0 X2dldF9jcmFzaGVkX2JhY2tlbmRfYWN0aXZpdHkoaW50IHBpZCwgY2hhciAqYnVmZmVyLAogCQkJ CQkJCQkJCQkJCSAgIGludCBidWZsZW4pOwogZXh0ZXJuIHVpbnQ2NCBwZ3N0YXRfZ2V0X215X3F1 ZXJ5X2lkKHZvaWQpOworZXh0ZXJuIHVpbnQ2NCBwZ3N0YXRfZ2V0X215X3BsYW5faWQodm9pZCk7 CiBleHRlcm4gQmFja2VuZFR5cGUgcGdzdGF0X2dldF9iYWNrZW5kX3R5cGVfYnlfcHJvY19udW1i ZXIoUHJvY051bWJlciBwcm9jTnVtYmVyKTsKIAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBs YWluLm91dAppbmRleCBlZTMxZTQxZDUwOC4uOGJmYTNjMWE1ZjkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9leHBsYWluLm91dApAQCAtNjk5LDYgKzY5OSwxNyBAQCBzZWxlY3QgZXhwbGFpbl9m aWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIGNyZWF0ZSB0YWJsZSB0ZXN0X2N0YXMgYXMgc2VsZWN0 IDEnKTsKICBRdWVyeSBJZGVudGlmaWVyOiBOCiAoMyByb3dzKQogCistLSBUZXN0IGNvbXB1dGVf cGxhbl9pZAorc2V0IGNvbXB1dGVfcGxhbl9pZCA9IG9uOworc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluICh2ZXJib3NlKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLmludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4u TiByb3dzPU4gd2lkdGg9TikKKyAgIE91dHB1dDogcTEsIHEyCisgUXVlcnkgSWRlbnRpZmllcjog TgorIFBsYW4gSWRlbnRpZmllcjogTgorKDQgcm93cykKKwogLS0gVGVzdCBTRVJJQUxJWkUgb3B0 aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYs c2VyaWFsaXplKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRl eCAzMzYxZjZhNjljOS4uNjc3OGI3OWU2NTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CkBAIC0xNzYwLDkgKzE3NjAsMTAgQEAgcGdfc3RhdF9hY3Rpdml0eXwgU0VMRUNUIHMuZGF0 aWQsCiAgICAgcy5iYWNrZW5kX3hpZCwKICAgICBzLmJhY2tlbmRfeG1pbiwKICAgICBzLnF1ZXJ5 X2lkLAorICAgIHMucGxhbl9pZCwKICAgICBzLnF1ZXJ5LAogICAgIHMuYmFja2VuZF90eXBlCi0g ICBGUk9NICgocGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlk LCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5 cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBz dGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBi YWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwg c3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3Ns X2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgZ3NzX2RlbGVnYXRpb24s IGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5V TEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0 YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVy eV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50 X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2Vu ZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9k biwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMs IGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgcGxhbl9pZCkK ICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5vaWQpKSkKICAg ICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgocy51c2VzeXNpZCA9IHUub2lkKSkpOwogcGdf c3RhdF9hbGxfaW5kZXhlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLApAQCAtMTg5MCw3ICsxODkx LDcgQEAgcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBwaWQsCiAgICAgZ3NzX3ByaW5jIEFTIHByaW5j aXBhbCwKICAgICBnc3NfZW5jIEFTIGVuY3J5cHRlZCwKICAgICBnc3NfZGVsZWdhdGlvbiBBUyBj cmVkZW50aWFsc19kZWxlZ2F0ZWQKLSAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6 aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUs IHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0 YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9z dG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5 cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBz c2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3Nz X2VuYywgZ3NzX2RlbGVnYXRpb24sIGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSBwZ19z dGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBh cHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVu dCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwg Y2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBi YWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNz bGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBn c3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwg cXVlcnlfaWQsIHBsYW5faWQpCiAgIFdIRVJFIChjbGllbnRfcG9ydCBJUyBOT1QgTlVMTCk7CiBw Z19zdGF0X2lvfCBTRUxFQ1QgYmFja2VuZF90eXBlLAogICAgIG9iamVjdCwKQEAgLTIwOTYsNyAr MjA5Nyw3IEBAIHBnX3N0YXRfcmVwbGljYXRpb258IFNFTEVDVCBzLnBpZCwKICAgICB3LnN5bmNf cHJpb3JpdHksCiAgICAgdy5zeW5jX3N0YXRlLAogICAgIHcucmVwbHlfdGltZQotICAgRlJPTSAo KHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lz aWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0 X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hh bmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94 aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhl ciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJf ZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJf cGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRl Z2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVl cnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQs IGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFt ZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwg c3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9j bGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5j LCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQsIHBsYW5faWQpCiAgICAgIEpP SU4gcGdfc3RhdF9nZXRfd2FsX3NlbmRlcnMoKSB3KHBpZCwgc3RhdGUsIHNlbnRfbHNuLCB3cml0 ZV9sc24sIGZsdXNoX2xzbiwgcmVwbGF5X2xzbiwgd3JpdGVfbGFnLCBmbHVzaF9sYWcsIHJlcGxh eV9sYWcsIHN5bmNfcHJpb3JpdHksIHN5bmNfc3RhdGUsIHJlcGx5X3RpbWUpIE9OICgocy5waWQg PSB3LnBpZCkpKQogICAgICBMRUZUIEpPSU4gcGdfYXV0aGlkIHUgT04gKChzLnVzZXN5c2lkID0g dS5vaWQpKSk7CiBwZ19zdGF0X3JlcGxpY2F0aW9uX3Nsb3RzfCBTRUxFQ1Qgcy5zbG90X25hbWUs CkBAIC0yMTMwLDcgKzIxMzEsNyBAQCBwZ19zdGF0X3NzbHwgU0VMRUNUIHBpZCwKICAgICBzc2xf Y2xpZW50X2RuIEFTIGNsaWVudF9kbiwKICAgICBzc2xfY2xpZW50X3NlcmlhbCBBUyBjbGllbnRf c2VyaWFsLAogICAgIHNzbF9pc3N1ZXJfZG4gQVMgaXNzdWVyX2RuCi0gICBGUk9NIHBnX3N0YXRf Z2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxp Y2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4 YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGll bnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tl bmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0 cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19h dXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVy eV9pZCkKKyAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRp ZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2 ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0 YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9w b3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVy c2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3Nlcmlh bCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgZ3NzX2RlbGVn YXRpb24sIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBwbGFuX2lkKQogICBXSEVSRSAoY2xpZW50X3Bv cnQgSVMgTk9UIE5VTEwpOwogcGdfc3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMg c3ViaWQsCiAgICAgc3Uuc3VibmFtZSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKaW5kZXggMGJh ZmE4NzA0OTYuLmQ3ODdhZDJjZGEzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9l eHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbApAQCAtMTY3 LDYgKzE2NywxMCBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIHNl bGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFp biAodmVyYm9zZSkgZGVjbGFyZSB0ZXN0X2N1ciBjdXJzb3IgZm9yIHNlbGVjdCAqIGZyb20gaW50 OF90YmwnKTsKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAodmVyYm9zZSkgY3JlYXRl IHRhYmxlIHRlc3RfY3RhcyBhcyBzZWxlY3QgMScpOwogCistLSBUZXN0IGNvbXB1dGVfcGxhbl9p ZAorc2V0IGNvbXB1dGVfcGxhbl9pZCA9IG9uOworc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBs YWluICh2ZXJib3NlKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CisKIC0tIFRlc3QgU0VS SUFMSVpFIG9wdGlvbgogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1 ZmZlcnMgb2ZmLHNlcmlhbGl6ZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLHNlcmlhbGl6ZSB0ZXh0LGJ1ZmZlcnMs dGltaW5nIG9mZikgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwotLSAKMi40Ny4xCgo= --000000000000155516062d5ba1a7 Content-Type: application/octet-stream; name="v4-0003-Add-pg_stat_plans-contrib-extension.patch" Content-Disposition: attachment; filename="v4-0003-Add-pg_stat_plans-contrib-extension.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6r958le2 RnJvbSAyYzM5ZWJkNjI1ZTIwNzg0ZGFhMGUxNTU0MWQ1YTQxNzE0MjEzOWU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IEZyaSwgMzEgSmFuIDIwMjUgMTM6MDg6MTkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 IDMvM10gQWRkIHBnX3N0YXRfcGxhbnMgY29udHJpYiBleHRlbnNpb24KClRoaXMgZXh0ZW5zaW9u IGFsbG93cyB0cmFja2luZyBwZXItcGxhbiBjYWxsIGNvdW50cyBhbmQgZXhlY3V0aW9uIHRpbWUs CmFzIHdlbGwgYXMgY2FwdHVyaW5nIHRoZSBwbGFuIHRleHQsIGFrYSBFWFBMQUlOIChDT1NUUyBP RkYpLCBmb3IgdGhlCmZpcnN0IGV4ZWN1dGlvbiBvZiBhIGdpdmVuIHBsYW4uIFRoaXMgdXRpbGl6 ZSB0aGUgY29tcHV0ZV9wbGFuX2lkCmZ1bmN0aW9uYWxpdHkgZm9yIHRyYWNraW5nIGRpZmZlcmVu dCBwbGFucy4KLS0tCiBjb250cmliL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogY29udHJpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9NYWtlZmlsZSAgICAgICAgICAgICAgICB8 ICAyOSArCiBjb250cmliL3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQvY2xlYW51cC5vdXQgICAgfCAg IDEgKwogY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0IHwgMTI1 ICsrKwogY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3NlbGVjdC5vdXQgICAgIHwgMjYy ICsrKysrKwogY29udHJpYi9wZ19zdGF0X3BsYW5zL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwg IDQzICsKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLS0xLjAuc3FsICB8ICAz MyArCiBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jICAgICAgICAgfCA3Nzkg KysrKysrKysrKysrKysrKysrCiBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5j b25mICAgICAgfCAgIDEgKwogY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMuY29u dHJvbCAgIHwgICA1ICsKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwgICAg ICAgICB8ICAgMSArCiBjb250cmliL3BnX3N0YXRfcGxhbnMvc3FsL3ByaXZpbGVnZXMuc3FsICAg ICAgfCAgNTkgKysKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvc2VsZWN0LnNxbCAgICAgICAg ICB8ICA2NyArKwogZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGRvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBkb2Mvc3JjL3NnbWwvcGdzdGF0cGxhbnMuc2dtbCAgICAgICAgICAgICAgICAgfCA0 MjUgKysrKysrKysrKwogMTcgZmlsZXMgY2hhbmdlZCwgMTgzNCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL01ha2VmaWxlCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL2NsZWFudXAub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3ByaXZpbGVnZXMu b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3Nl bGVjdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMvbWVzb24u YnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9w bGFucy0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc3RhdF9wbGFucy9w Z19zdGF0X3BsYW5zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMv cGdfc3RhdF9wbGFucy5jb25mCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3Bs YW5zL3BnX3N0YXRfcGxhbnMuY29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdf c3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Bn X3N0YXRfcGxhbnMvc3FsL3ByaXZpbGVnZXMuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJp Yi9wZ19zdGF0X3BsYW5zL3NxbC9zZWxlY3Quc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3Ny Yy9zZ21sL3Bnc3RhdHBsYW5zLnNnbWwKCmRpZmYgLS1naXQgYS9jb250cmliL01ha2VmaWxlIGIv Y29udHJpYi9NYWtlZmlsZQppbmRleCA5NTI4NTVkOWI2MS4uOGRlMDEwYWZkZWYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvTWFrZWZpbGUKKysrIGIvY29udHJpYi9NYWtlZmlsZQpAQCAtMzQsNiArMzQs NyBAQCBTVUJESVJTID0gXAogCQlwZ19mcmVlc3BhY2VtYXAgXAogCQlwZ19sb2dpY2FsaW5zcGVj dCBcCiAJCXBnX3ByZXdhcm0JXAorCQlwZ19zdGF0X3BsYW5zIFwKIAkJcGdfc3RhdF9zdGF0ZW1l bnRzIFwKIAkJcGdfc3VyZ2VyeQlcCiAJCXBnX3RyZ20JCVwKZGlmZiAtLWdpdCBhL2NvbnRyaWIv bWVzb24uYnVpbGQgYi9jb250cmliL21lc29uLmJ1aWxkCmluZGV4IDFiYTczZWJkNjdhLi4wNDQy ZWMyNjQ0YSAxMDA2NDQKLS0tIGEvY29udHJpYi9tZXNvbi5idWlsZAorKysgYi9jb250cmliL21l c29uLmJ1aWxkCkBAIC00OSw2ICs0OSw3IEBAIHN1YmRpcigncGdfZnJlZXNwYWNlbWFwJykKIHN1 YmRpcigncGdfbG9naWNhbGluc3BlY3QnKQogc3ViZGlyKCdwZ19wcmV3YXJtJykKIHN1YmRpcign cGdyb3dsb2NrcycpCitzdWJkaXIoJ3BnX3N0YXRfcGxhbnMnKQogc3ViZGlyKCdwZ19zdGF0X3N0 YXRlbWVudHMnKQogc3ViZGlyKCdwZ3N0YXR0dXBsZScpCiBzdWJkaXIoJ3BnX3N1cmdlcnknKQpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3BsYW5zL01ha2VmaWxlIGIvY29udHJpYi9wZ19z dGF0X3BsYW5zL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5lMDczZGI5NWVkZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9N YWtlZmlsZQpAQCAtMCwwICsxLDI5IEBACisjIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9NYWtlZmls ZQorCitNT0RVTEVfYmlnID0gcGdfc3RhdF9wbGFucworT0JKUyA9IFwKKwkkKFdJTjMyUkVTKSBc CisJcGdfc3RhdF9wbGFucy5vCisKK0VYVEVOU0lPTiA9IHBnX3N0YXRfcGxhbnMKK0RBVEEgPSBw Z19zdGF0X3BsYW5zLS0xLjAuc3FsCitQR0ZJTEVERVNDID0gInBnX3N0YXRfcGxhbnMgLSB0cmFj ayBwZXItcGxhbiBjYWxsIGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRleHRz IgorCitMREZMQUdTX1NMICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKKworUkVHUkVTU19PUFRT ID0gLS10ZW1wLWNvbmZpZyAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19z dGF0X3BsYW5zLmNvbmYKK1JFR1JFU1MgPSBzZWxlY3QgcHJpdmlsZWdlcyBjbGVhbnVwCisjIERp c2FibGVkIGJlY2F1c2UgdGhlc2UgdGVzdHMgcmVxdWlyZSAic2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzPXBnX3N0YXRfcGxhbnMiLAorIyB3aGljaCB0eXBpY2FsIGluc3RhbGxjaGVjayB1c2VycyBk byBub3QgaGF2ZSAoZS5nLiBidWlsZGZhcm0gY2xpZW50cykuCitOT19JTlNUQUxMQ0hFQ0sgPSAx CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVs bCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBj b250cmliL3BnX3N0YXRfcGxhbnMKK3RvcF9idWlsZGRpciA9IC4uLy4uCitpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29u dHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3Rh dF9wbGFucy9leHBlY3RlZC9jbGVhbnVwLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBl Y3RlZC9jbGVhbnVwLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NTE1NjU2MTdjZWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvZXhw ZWN0ZWQvY2xlYW51cC5vdXQKQEAgLTAsMCArMSBAQAorRFJPUCBFWFRFTlNJT04gcGdfc3RhdF9w bGFuczsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBlY3RlZC9wcml2aWxl Z2VzLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2UyMWQ2ZDcwMTkKLS0tIC9k ZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQvcHJpdmlsZWdlcy5v dXQKQEAgLTAsMCArMSwxMjUgQEAKKy0tCistLSBPbmx5IHN1cGVydXNlcnMgYW5kIHJvbGVzIHdp dGggcHJpdmlsZWdlcyBvZiB0aGUgcGdfcmVhZF9hbGxfc3RhdHMgcm9sZQorLS0gYXJlIGFsbG93 ZWQgdG8gc2VlIHRoZSBwbGFuIHRleHQsIHF1ZXJ5aWQgYW5kIHBsYW5pZCBvZiBxdWVyaWVzIGV4 ZWN1dGVkIGJ5CistLSBvdGhlciB1c2Vycy4gT3RoZXIgdXNlcnMgY2FuIHNlZSB0aGUgc3RhdGlz dGljcy4KKy0tCitDUkVBVEUgUk9MRSByZWdyZXNzX3N0YXRzX3N1cGVydXNlciBTVVBFUlVTRVI7 CitDUkVBVEUgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIxOworQ1JFQVRFIFJPTEUgcmVncmVzc19z dGF0c191c2VyMjsKK0dSQU5UIHBnX3JlYWRfYWxsX3N0YXRzIFRPIHJlZ3Jlc3Nfc3RhdHNfdXNl cjI7CitTRVQgUk9MRSByZWdyZXNzX3N0YXRzX3N1cGVydXNlcjsKK1NFTEVDVCBwZ19zdGF0X3Bs YW5zX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitT RUxFQ1QgMSBBUyAiT05FIjsKKyBPTkUgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRVQgUk9M RSByZWdyZXNzX3N0YXRzX3VzZXIxOworU0VMRUNUIDErMSBBUyAiVFdPIjsKKyBUV08gCistLS0t LQorICAgMgorKDEgcm93KQorCistLQorLS0gQSBzdXBlcnVzZXIgY2FuIHJlYWQgYWxsIGNvbHVt bnMgb2YgcXVlcmllcyBleGVjdXRlZCBieSBvdGhlcnMsCistLSBpbmNsdWRpbmcgcGxhbiB0ZXh0 LCBxdWVyeWlkIGFuZCBwbGFuaWQuCistLQorU0VUIFJPTEUgcmVncmVzc19zdGF0c19zdXBlcnVz ZXI7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+IDAgQVMgcXVlcnlpZF9ib29sLCBz cy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxhbiwgc3MuY2FsbHMKKyAgRlJPTSBw Z19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBzcy51c2VyaWQgPSByLm9pZAorICBP UkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAiQyIsIHNzLmNhbGxzOworICAgICAg ICAgcm9sbmFtZSAgICAgICAgIHwgcXVlcnlpZF9ib29sIHwgcGxhbmlkX2Jvb2wgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0KKyByZWdyZXNzX3N0YXRzX3N1cGVydXNlciB8IHQgICAgICAgICAgICB8IHQgICAgICAg ICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgcmVncmVzc19zdGF0c19z dXBlcnVzZXIgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgMQorIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyIHwgdCAgICAgICAgICAg IHwgdCAgICAgICAgICAgfCBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDAKKyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICBTb3J0 IEtleTogcGdfYXV0aGlkLnJvbG5hbWUsIHBnX3N0YXRfcGxhbnMucGxhbiBDT0xMQVRFICJDIiwg cGdfc3RhdF9wbGFucy5jYWxscyt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgfCAgIC0+ICBIYXNoIEpvaW4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgSGFzaCBDb25kOiAocGdfc3RhdF9wbGFucy51c2VyaWQgPSBwZ19hdXRoaWQub2lkKSAgICAg ICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19z dGF0X3BsYW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAg ICAgIC0+ICBIYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBn X2F1dGhpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBy ZWdyZXNzX3N0YXRzX3VzZXIxICAgICB8IHQgICAgICAgICAgICB8IHQgICAgICAgICAgIHwgUmVz dWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisoNCByb3dzKQorCistLQorLS0gcmVncmVz c19zdGF0c191c2VyMSBoYXMgbm8gcHJpdmlsZWdlcyB0byByZWFkIHRoZSBwbGFuIHRleHQsIHF1 ZXJ5aWQKKy0tIG9yIHBsYW5pZCBvZiBxdWVyaWVzIGV4ZWN1dGVkIGJ5IG90aGVycyBidXQgY2Fu IHNlZSBzdGF0aXN0aWNzCistLSBsaWtlIGNhbGxzIGFuZCByb3dzLgorLS0KK1NFVCBST0xFIHJl Z3Jlc3Nfc3RhdHNfdXNlcjE7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+IDAgQVMg cXVlcnlpZF9ib29sLCBzcy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxhbiwgc3Mu Y2FsbHMKKyAgRlJPTSBwZ19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBzcy51c2Vy aWQgPSByLm9pZAorICBPUkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAiQyIsIHNz LmNhbGxzOworICAgICAgICAgcm9sbmFtZSAgICAgICAgIHwgcXVlcnlpZF9ib29sIHwgcGxhbmlk X2Jvb2wgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0KKyByZWdyZXNzX3N0YXRzX3N1cGVydXNlciB8ICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIHwgPGluc3VmZmljaWVudCBwcml2aWxlZ2U+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisg cmVncmVzc19zdGF0c19zdXBlcnVzZXIgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IDxp bnN1ZmZpY2llbnQgcHJpdmlsZWdlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2Vy IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCA8aW5zdWZmaWNpZW50IHByaXZpbGVnZT4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3VzZXIxICAgICB8IHQgICAgICAgICAgICB8IHQgICAg ICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgcmVncmVzc19zdGF0 c191c2VyMSAgICAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IFNvcnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgfCAgIFNvcnQgS2V5OiBwZ19hdXRoaWQucm9sbmFtZSwgcGdfc3Rh dF9wbGFucy5wbGFuIENPTExBVEUgIkMiLCBwZ19zdGF0X3BsYW5zLmNhbGxzK3wgCisgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgLT4gIEhh c2ggSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICBIYXNoIENvbmQ6IChwZ19zdGF0X3BsYW5zLnVz ZXJpZCA9IHBnX2F1dGhpZC5vaWQpICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEhhc2ggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGdfYXV0aGlkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IAorKDUgcm93cykKKworLS0KKy0tIHJlZ3Jlc3Nfc3RhdHNf dXNlcjIsIHdpdGggcGdfcmVhZF9hbGxfc3RhdHMgcm9sZSBwcml2aWxlZ2VzLCBjYW4KKy0tIHJl YWQgYWxsIGNvbHVtbnMsIGluY2x1ZGluZyBwbGFuIHRleHQsIHF1ZXJ5aWQgYW5kIHBsYW5pZCwg b2YgcXVlcmllcworLS0gZXhlY3V0ZWQgYnkgb3RoZXJzLgorLS0KK1NFVCBST0xFIHJlZ3Jlc3Nf c3RhdHNfdXNlcjI7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+IDAgQVMgcXVlcnlp ZF9ib29sLCBzcy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxhbiwgc3MuY2FsbHMK KyAgRlJPTSBwZ19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBzcy51c2VyaWQgPSBy Lm9pZAorICBPUkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAiQyIsIHNzLmNhbGxz OworICAgICAgICAgcm9sbmFtZSAgICAgICAgIHwgcXVlcnlpZF9ib29sIHwgcGxhbmlkX2Jvb2wg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0KKyByZWdyZXNzX3N0YXRzX3N1cGVydXNlciB8IHQgICAgICAgICAgICB8 IHQgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgcmVncmVz c19zdGF0c19zdXBlcnVzZXIgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IFJlc3VsdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgMQorIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyIHwgdCAg ICAgICAgICAgIHwgdCAgICAgICAgICAgfCBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAg IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAg IHwgICBTb3J0IEtleTogcGdfYXV0aGlkLnJvbG5hbWUsIHBnX3N0YXRfcGxhbnMucGxhbiBDT0xM QVRFICJDIiwgcGdfc3RhdF9wbGFucy5jYWxscyt8IAorICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgIC0+ICBIYXNoIEpvaW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg K3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgSGFzaCBDb25kOiAocGdfc3RhdF9wbGFucy51c2VyaWQgPSBwZ19hdXRoaWQu b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBwZ19zdGF0X3BsYW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgfCAgICAgICAgIC0+ICBIYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBnX2F1dGhpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAKKyByZWdyZXNzX3N0YXRzX3VzZXIxICAgICB8IHQgICAgICAgICAgICB8IHQgICAgICAg ICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgcmVncmVzc19zdGF0c191 c2VyMSAgICAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IFNvcnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArfCAgICAgMQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg IHwgICAgICAgICAgICAgfCAgIFNvcnQgS2V5OiBwZ19hdXRoaWQucm9sbmFtZSwgcGdfc3RhdF9w bGFucy5wbGFuIENPTExBVEUgIkMiLCBwZ19zdGF0X3BsYW5zLmNhbGxzK3wgCisgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgLT4gIEhhc2gg Sm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIHwgICAgICAgICBIYXNoIENvbmQ6IChwZ19zdGF0X3BsYW5zLnVzZXJp ZCA9IHBnX2F1dGhpZC5vaWQpICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEhhc2ggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGdfYXV0aGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IAorIHJlZ3Jlc3Nfc3RhdHNfdXNlcjIgICAgIHwgdCAgICAgICAg ICAgIHwgdCAgICAgICAgICAgfCBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDAKKyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICBT b3J0IEtleTogcGdfYXV0aGlkLnJvbG5hbWUsIHBnX3N0YXRfcGxhbnMucGxhbiBDT0xMQVRFICJD IiwgcGdfc3RhdF9wbGFucy5jYWxscyt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgfCAgIC0+ICBIYXNoIEpvaW4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgSGFzaCBDb25kOiAocGdfc3RhdF9wbGFucy51c2VyaWQgPSBwZ19hdXRoaWQub2lkKSAg ICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBw Z19zdGF0X3BsYW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAor ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAg ICAgICAgIC0+ICBIYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHBnX2F1dGhpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAK Kyg2IHJvd3MpCisKKy0tCistLSBjbGVhbnVwCistLQorUkVTRVQgUk9MRTsKK0RST1AgUk9MRSBy ZWdyZXNzX3N0YXRzX3N1cGVydXNlcjsKK0RST1AgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIxOwor RFJPUCBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNlcjI7CitTRUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNl dCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKwpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9jb250cmliL3Bn X3N0YXRfcGxhbnMvZXhwZWN0ZWQvc2VsZWN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOTA2ZDhjZTkwZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Bn X3N0YXRfcGxhbnMvZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAtMCwwICsxLDI2MiBAQAorLS0KKy0t IFNFTEVDVCBzdGF0ZW1lbnRzCistLQorQ1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3BsYW5zOwor U0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0K KyB0CisoMSByb3cpCisKKy0tCistLSBzaW1wbGUgc3RhdGVtZW50cworLS0KK1NFTEVDVCAxIEZS T00gcGdfY2xhc3MgTElNSVQgMTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQor KDEgcm93KQorCitTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xh c3MnOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFVCBl bmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ3BnX2NsYXNzJzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEg cm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9uOworU0VMRUNUIHBsYW4sIGNhbGxzIEZS T00gcGdfc3RhdF9wbGFucyBPUkRFUiBCWSBwbGFuIENPTExBVEUgIkMiOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwbGFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhbGxz IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gcGdfY2xhc3MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICBSZWNoZWNrIENvbmQ6IChyZWxuYW1l ID0gJ3BnX2NsYXNzJzo6bmFtZSkgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gcGdfY2xhc3NfcmVsbmFtZV9uc3BfaW5kZXggICAgICAgK3wgCisgICAgICAg ICBJbmRleCBDb25kOiAocmVsbmFtZSA9ICdwZ19jbGFzcyc6Om5hbWUpICAgICAgICAgICAgIHwg CisgSW5kZXggT25seSBTY2FuIHVzaW5nIHBnX2NsYXNzX3JlbG5hbWVfbnNwX2luZGV4IG9uIHBn X2NsYXNzK3wgICAgIDEKKyAgIEluZGV4IENvbmQ6IChyZWxuYW1lID0gJ3BnX2NsYXNzJzo6bmFt ZSkgICAgICAgICAgICAgICAgICAgfCAKKyBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2FuIG9u IHBnX2NsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFJlc3VsdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAxCisgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgICAgIDAKKyAgIFNvcnQgS2V5OiBwZ19zdGF0X3BsYW5zLnBsYW4gQ09MTEFU RSAiQyIgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0 YXRfcGxhbnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyg1IHJvd3MpCisKK1NFTEVDVCBw Z19zdGF0X3BsYW5zX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEg cm93KQorCistLQorLS0gc3VicGxhbnMgYW5kIENURXMKKy0tCitXSVRIIHggQVMgTUFURVJJQUxJ WkVEIChTRUxFQ1QgMSkKK1NFTEVDVCAqIEZST00geDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0K KyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgYS5hdHRuYW1lLAorICAgKFNFTEVDVCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGQuYWRiaW4sIGQuYWRyZWxpZCkKKyAgICBGUk9NIHBnX2NhdGFs b2cucGdfYXR0cmRlZiBkCisgICAgV0hFUkUgZC5hZHJlbGlkID0gYS5hdHRyZWxpZCBBTkQgZC5h ZG51bSA9IGEuYXR0bnVtIEFORCBhLmF0dGhhc2RlZikKKyBGUk9NIHBnX2NhdGFsb2cucGdfYXR0 cmlidXRlIGEKKyBXSEVSRSBhLmF0dHJlbGlkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3MKKyBPUkRF UiBCWSBhdHRudW0gTElNSVQgMTsKKyBhdHRuYW1lICB8IHBnX2dldF9leHByIAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgdGFibGVvaWQgfCAKKygxIHJvdykKKworU0VMRUNUIHBsYW4sIGNh bGxzIEZST00gcGdfc3RhdF9wbGFucyBPUkRFUiBCWSBwbGFuIENPTExBVEUgIkMiOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K KyBDVEUgU2NhbiBvbiB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICBDVEUgeCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAK KyAgICAgLT4gIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IAorIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEK KyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBnX2F0dHJpYnV0ZV9yZWxpZF9hdHRudW1faW5kZXgg b24gcGdfYXR0cmlidXRlIGEgICAgICt8IAorICAgICAgICAgSW5kZXggQ29uZDogKGF0dHJlbGlk ID0gJzEyNTknOjpvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAg ICAgICBTdWJQbGFuIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgLT4gIFJlc3VsdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAg ICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGEuYXR0aGFzZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwZ19hdHRy ZGVmIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAg ICAgICAgICAgRmlsdGVyOiAoKGFkcmVsaWQgPSBhLmF0dHJlbGlkKSBBTkQgKGFkbnVtID0gYS5h dHRudW0pKSB8IAorIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEKKyBTb3J0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8ICAgICAwCisgICBTb3J0IEtleTogcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUg IkMiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IAorKDQgcm93cykKKworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBO T1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKKy0tCistLSBwYXJ0aXRvbmlu ZworLS0KK2NyZWF0ZSB0YWJsZSBscCAoYSBjaGFyKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7Citj cmVhdGUgdGFibGUgbHBfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbHAgZGVmYXVsdDsKK2NyZWF0ZSB0 YWJsZSBscF9lZiBwYXJ0aXRpb24gb2YgbHAgZm9yIHZhbHVlcyBpbiAoJ2UnLCAnZicpOworY3Jl YXRlIHRhYmxlIGxwX2FkIHBhcnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnYScsICdkJyk7 CitjcmVhdGUgdGFibGUgbHBfYmMgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKCdiJywg J2MnKTsKK2NyZWF0ZSB0YWJsZSBscF9nIHBhcnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgn ZycpOworY3JlYXRlIHRhYmxlIGxwX251bGwgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4g KG51bGwpOworc2VsZWN0ICogZnJvbSBscDsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgPiAnYScgYW5kIGEgPCAnZCc7CisgYSAKKy0tLQorKDAgcm93cykK Kworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID4gJ2EnIGFuZCBhIDw9ICdkJzsKKyBhIAorLS0t CisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYSc7CisgYSAKKy0tLQor KDAgcm93cykKKworc2VsZWN0ICogZnJvbSBscCB3aGVyZSAnYScgPSBhOwkvKiBjb21tdXRlZCAq LworIGEgCistLS0KKygwIHJvd3MpCisKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3Qg bnVsbDsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMg bnVsbDsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAn YScgb3IgYSA9ICdjJzsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdo ZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworIGEgCistLS0KKygw IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAnZyc7CisgYSAKKy0tLQorKDAg cm93cykKKworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7Cisg YSAKKy0tLQorKDAgcm93cykKKworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2En LCAnZCcpOworIGEgCistLS0KKygwIHJvd3MpCisKK1NFTEVDVCBwbGFuLCBjYWxscyBGUk9NIHBn X3N0YXRfcGxhbnMgT1JERVIgQlkgcGxhbiBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGxhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYWxscyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAg ICAgRmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpICAgICAg ICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAg RmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpICAgICAgICAg ICAgICAgICAgICAgICB8IAorIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICAtPiAg U2VxIFNjYW4gb24gbHBfYWQgbHBfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBB TkQgKGEgPD0gJ2QnOjpicGNoYXIpKSAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2Vx IFNjYW4gb24gbHBfYmMgbHBfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQg KGEgPD0gJ2QnOjpicGNoYXIpKSAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNj YW4gb24gbHBfZGVmYXVsdCBscF8zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEg PD0gJ2QnOjpicGNoYXIpKSAgICAgICAgICAgICAgICAgICAgIHwgCisgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgK3wgICAgIDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRl cjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpi cGNoYXIpKSkrfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjog KChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNo YXIpKSkgfCAKKyBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2Fu IG9uIGxwX2FkIGxwXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9u IGxwX2JjIGxwXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxw X2VmIGxwXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8IAorICAgICAgICAgRmlsdGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2Rl ZmF1bHQgbHBfNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8 IAorICAgICAgICAgRmlsdGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIEFwcGVuZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAg ICAxCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5P VCBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wg CisgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBO VUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisg ICAtPiAgU2VxIFNjYW4gb24gbHBfZWYgbHBfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxM KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAt PiAgU2VxIFNjYW4gb24gbHBfZyBscF80ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAg U2VxIFNjYW4gb24gbHBfZGVmYXVsdCBscF81ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgQXBwZW5kICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgK3wgICAgIDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBT ZXEgU2NhbiBvbiBscF9iYyBscF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9lZiBscF8zICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEg U2NhbiBvbiBscF9nIGxwXzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9udWxsIGxwXzUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2Nh biBvbiBscF9kZWZhdWx0IGxwXzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAKKyBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBT Y2FuIG9uIGxwX2JjIGxwXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAo YSA8PiAnZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2Fu IG9uIGxwX2VmIGxwXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8 PiAnZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9u IGxwX2cgbHBfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAn ZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxw X2RlZmF1bHQgbHBfNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAnZCc6 OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICB8IAorIEFwcGVuZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8 ICAgICAxCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ ICdhJzo6YnBjaGFyKSBBTkQgKGEgPCAnZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAg K3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBfZGVmYXVsdCBscF8yICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdh Jzo6YnBjaGFyKSBBTkQgKGEgPCAnZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAgIHwg CisgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9i YyBscF8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr fCAKKyAgICAgICAgIEZpbHRlcjogKGEgPD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9lZiBs cF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAK KyAgICAgICAgIEZpbHRlcjogKGEgPD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9nIGxwXzMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAg ICAgICAgIEZpbHRlcjogKGEgPD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9kZWZhdWx0IGxw XzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAg ICAgIEZpbHRlcjogKGEgPD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAKKyBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorIFNl cSBTY2FuIG9uIGxwX2FkIGxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICBGaWx0ZXI6ICgnYSc6OmJwY2hhciA9IGEp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisg U2VxIFNjYW4gb24gbHBfYWQgbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEKKyAgIEZpbHRlcjogKGEgPSAnYSc6OmJwY2hh cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAK KyBTZXEgU2NhbiBvbiBscF9udWxsIGxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMQorICAgRmlsdGVyOiAoYSBJUyBOVUxMKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IAorIFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAwCisgICBTb3J0IEtleTogcGdfc3RhdF9w bGFucy5wbGFuIENPTExBVEUgIkMiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg K3wgCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBwZ19zdGF0X3BsYW5zICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisoMTQgcm93cykKKworU0VMRUNUIHBnX3N0 YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cp CisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9tZXNvbi5idWlsZCBiL2NvbnRy aWIvcGdfc3RhdF9wbGFucy9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uM2JkODg0ZDk2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0 YXRfcGxhbnMvbWVzb24uYnVpbGQKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIw MjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3BnX3N0YXRfcGxhbnNf c291cmNlcyA9IGZpbGVzKAorICAncGdfc3RhdF9wbGFucy5jJywKKykKKworaWYgaG9zdF9zeXN0 ZW0gPT0gJ3dpbmRvd3MnCisgIHBnX3N0YXRfcGxhbnNfc291cmNlcyArPSByY19saWJfZ2VuLnBy b2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3BnX3N0YXRf cGxhbnMnLAorICAgICctLUZJTEVERVNDJywgJ3BnX3N0YXRfcGxhbnMgLSB0cmFjayBwZXItcGxh biBjYWxsIGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRleHRzJyxdKQorZW5k aWYKKworcGdfc3RhdF9wbGFucyA9IHNoYXJlZF9tb2R1bGUoJ3BnX3N0YXRfcGxhbnMnLAorICBw Z19zdGF0X3BsYW5zX3NvdXJjZXMsCisgIGt3YXJnczogY29udHJpYl9tb2RfYXJncyArIHsKKyAg ICAnZGVwZW5kZW5jaWVzJzogY29udHJpYl9tb2RfYXJnc1snZGVwZW5kZW5jaWVzJ10sCisgIH0s CispCitjb250cmliX3RhcmdldHMgKz0gcGdfc3RhdF9wbGFucworCitpbnN0YWxsX2RhdGEoCisg ICdwZ19zdGF0X3BsYW5zLmNvbnRyb2wnLAorICAncGdfc3RhdF9wbGFucy0tMS4wLnNxbCcsCisg IGt3YXJnczogY29udHJpYl9kYXRhX2FyZ3MsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAn cGdfc3RhdF9wbGFucycsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAn YmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAncmVncmVzcyc6IHsKKyAgICAnc3Fs JzogWworICAgICAgJ3NlbGVjdCcsCisgICAgICAncHJpdmlsZWdlcycsCisgICAgICAnY2xlYW51 cCcsCisgICAgXSwKKyAgICAncmVncmVzc19hcmdzJzogWyctLXRlbXAtY29uZmlnJywgZmlsZXMo J3BnX3N0YXRfcGxhbnMuY29uZicpXSwKKyAgICAjIERpc2FibGVkIGJlY2F1c2UgdGhlc2UgdGVz dHMgcmVxdWlyZQorICAgICMgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcz1wZ19zdGF0X3BsYW5z Iiwgd2hpY2ggdHlwaWNhbAorICAgICMgcnVubmluZ2NoZWNrIHVzZXJzIGRvIG5vdCBoYXZlIChl LmcuIGJ1aWxkZmFybSBjbGllbnRzKS4KKyAgICAncnVubmluZ2NoZWNrJzogZmFsc2UsCisgIH0K K30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLS0xLjAu c3FsIGIvY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMtLTEuMC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwODQ1MmIyNzRiCi0tLSAvZGV2L251 bGwKKysrIGIvY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMtLTEuMC5zcWwKQEAg LTAsMCArMSwzMyBAQAorLyogY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMtLTEu MC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0 aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lP TiBwZ19zdGF0X3BsYW5zIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gUmVnaXN0ZXIg ZnVuY3Rpb25zLgorQ1JFQVRFIEZVTkNUSU9OIHBnX3N0YXRfcGxhbnNfcmVzZXQoKQorUkVUVVJO UyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBQQVJBTExFTCBTQUZFOwor CitDUkVBVEUgRlVOQ1RJT04gcGdfc3RhdF9wbGFucyhJTiBzaG93cGxhbiBib29sZWFuLAorICAg IE9VVCB1c2VyaWQgb2lkLAorICAgIE9VVCBkYmlkIG9pZCwKKyAgICBPVVQgdG9wbGV2ZWwgYm9v bCwKKyAgICBPVVQgcXVlcnlpZCBiaWdpbnQsCisgICAgT1VUIHBsYW5pZCBiaWdpbnQsCisgICAg T1VUIGNhbGxzIGludDgsCisgICAgT1VUIHRvdGFsX2V4ZWNfdGltZSBmbG9hdDgsCisgICAgT1VU IHBsYW4gdGV4dAorKQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RVTEVfUEFUSE5BTUUn LCAncGdfc3RhdF9wbGFuc18xXzAnCitMQU5HVUFHRSBDIFNUUklDVCBWT0xBVElMRSBQQVJBTExF TCBTQUZFOworCistLSBSZWdpc3RlciBhIHZpZXcgb24gdGhlIGZ1bmN0aW9uIGZvciBlYXNlIG9m IHVzZS4KK0NSRUFURSBWSUVXIHBnX3N0YXRfcGxhbnMgQVMKKyAgU0VMRUNUICogRlJPTSBwZ19z dGF0X3BsYW5zKHRydWUpOworCitHUkFOVCBTRUxFQ1QgT04gcGdfc3RhdF9wbGFucyBUTyBQVUJM SUM7CisKKy0tIERvbid0IHdhbnQgdGhpcyB0byBiZSBhdmFpbGFibGUgdG8gbm9uLXN1cGVydXNl cnMuCitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBGUk9NIFBV QkxJQzsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmMg Yi9jb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZmEzMWZjYmYzZQotLS0gL2Rldi9udWxsCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmMKQEAgLTAsMCArMSw3NzkgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19zdGF0X3BsYW5zLmMKKyAqCQlUcmFjayBwZXIt cGxhbiBjYWxsIGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRleHRzCisgKgkJ YWNyb3NzIGEgd2hvbGUgZGF0YWJhc2UgY2x1c3Rlci4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQljb250cmliL3BnX3N0YXRf cGxhbnMvcGdfc3RhdF9wbGFucy5jCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp bmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgi CisjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCisjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRl ICJ1dGlscy9hY2wuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIgorI2luY2x1ZGUg InV0aWxzL3NuYXBtZ3IuaCIKKworUEdfTU9EVUxFX01BR0lDOworCisvKiBDdXJyZW50IG5lc3Rp bmcgZGVwdGggb2YgcGxhbm5lci9FeGVjdXRvclJ1bi9Qcm9jZXNzVXRpbGl0eSBjYWxscyAqLwor c3RhdGljIGludAluZXN0aW5nX2xldmVsID0gMDsKKworLyogU2F2ZWQgaG9vayB2YWx1ZXMgKi8K K3N0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0 aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0ID0gTlVMTDsKK3N0 YXRpYyBFeGVjdXRvclJ1bl9ob29rX3R5cGUgcHJldl9FeGVjdXRvclJ1biA9IE5VTEw7CitzdGF0 aWMgRXhlY3V0b3JGaW5pc2hfaG9va190eXBlIHByZXZfRXhlY3V0b3JGaW5pc2ggPSBOVUxMOwor c3RhdGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRW5kID0gTlVMTDsKKwor LyotLS0tIEdVQyB2YXJpYWJsZXMgLS0tLSovCisKK3R5cGVkZWYgZW51bQoreworCVBHU1BfVFJB Q0tfTk9ORSwJCQkvKiB0cmFjayBubyBwbGFucyAqLworCVBHU1BfVFJBQ0tfVE9QLAkJCQkvKiBv bmx5IHBsYW5zIGZvciB0b3AgbGV2ZWwgc3RhdGVtZW50cyAqLworCVBHU1BfVFJBQ0tfQUxMLAkJ CQkvKiBhbGwgcGxhbnMsIGluY2x1ZGluZyBmb3IgbmVzdGVkIHN0YXRlbWVudHMgKi8KK30JCQlQ R1NQVHJhY2tMZXZlbDsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSB0 cmFja19vcHRpb25zW10gPQoreworCXsibm9uZSIsIFBHU1BfVFJBQ0tfTk9ORSwgZmFsc2V9LAor CXsidG9wIiwgUEdTUF9UUkFDS19UT1AsIGZhbHNlfSwKKwl7ImFsbCIsIFBHU1BfVFJBQ0tfQUxM LCBmYWxzZX0sCisJe05VTEwsIDAsIGZhbHNlfQorfTsKKworc3RhdGljIGludAlwZ3NwX21heCA9 IDUwMDA7CS8qIG1heCAjIHBsYW5zIHRvIHRyYWNrICovCitzdGF0aWMgaW50CXBnc3BfbWF4X3Np emUgPSAyMDQ4OwkvKiBtYXggc2l6ZSBvZiBwbGFuIHRleHQgdG8gdHJhY2sgKGluCisJCQkJCQkJ CQkgKiBieXRlcykgKi8KK3N0YXRpYyBpbnQJcGdzcF90cmFjayA9IFBHU1BfVFJBQ0tfVE9QOwkv KiB0cmFja2luZyBsZXZlbCAqLworCisjZGVmaW5lIHBnc3BfZW5hYmxlZChsZXZlbCkgXAorCSgh SXNQYXJhbGxlbFdvcmtlcigpICYmIFwKKwkoY29tcHV0ZV9wbGFuX2lkICE9IENPTVBVVEVfUExB Tl9JRF9PRkYpICYmIFwKKwkocGdzcF90cmFjayA9PSBQR1NQX1RSQUNLX0FMTCB8fCBcCisJKHBn c3BfdHJhY2sgPT0gUEdTUF9UUkFDS19UT1AgJiYgKGxldmVsKSA9PSAwKSkpCisKKyNkZWZpbmUg VVNBR0VfSU5DUkVBU0UJCQkwLjUgLyogaW5jcmVhc2UgYnkgdGhpcyBlYWNoIHRpbWUgd2UgcmVw b3J0CisJCQkJCQkJCQkgKiBzdGF0cyAqLworI2RlZmluZSBVU0FHRV9ERUNSRUFTRV9GQUNUT1IJ KDAuOTkpCS8qIGRlY3JlYXNlZCBldmVyeQorCQkJCQkJCQkJCSAqIHBnc3RhdF9kZWFsbG9jX3Bs YW5zICovCisjZGVmaW5lIFVTQUdFX0RFQUxMT0NfUEVSQ0VOVAk1CS8qIGZyZWUgdGhpcyAlIG9m IGVudHJpZXMgYXQgb25jZSAqLworCisvKi0tLS0gRnVuY3Rpb24gZGVjbGFyYXRpb25zIC0tLS0q LworCitQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfcGxhbnNfcmVzZXQpOworUEdfRlVOQ1RJ T05fSU5GT19WMShwZ19zdGF0X3BsYW5zXzFfMCk7CisKKy8qIFN0cnVjdHVyZXMgZm9yIHN0YXRp c3RpY3Mgb2YgcGxhbnMgKi8KK3R5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9QbGFuSW5mbwor eworCS8qIGtleSBlbGVtZW50cyB0aGF0IGlkZW50aWZ5IGEgcGxhbiAodG9nZXRoZXIgd2l0aCB0 aGUgZGJvaWQpICovCisJdWludDY0CQlwbGFuaWQ7CisJdWludDY0CQlxdWVyeWlkOworCU9pZAkJ CXVzZXJpZDsJCQkvKiB1c2VyaWQgaXMgdHJhY2tlZCB0byBhbGxvdyB1c2VycyB0byBzZWUKKwkJ CQkJCQkJICogdGhlaXIgb3duIHF1ZXJ5IHBsYW5zICovCisJYm9vbAkJdG9wbGV2ZWw7CQkvKiBx dWVyeSBleGVjdXRlZCBhdCB0b3AgbGV2ZWwgKi8KKworCWRzYV9wb2ludGVyIHBsYW5fdGV4dDsJ CS8qIHBvaW50ZXIgdG8gRFNBIG1lbW9yeSBjb250YWluaW5nIHBsYW4gdGV4dCAqLworCWludAkJ CXBsYW5fZW5jb2Rpbmc7CS8qIHBsYW4gdGV4dCBlbmNvZGluZyAqLworfQkJCVBnU3RhdFNoYXJl ZF9QbGFuSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRQbGFuRW50cnkKK3sKKwlQ Z1N0YXRfQ291bnRlciBleGVjX2NvdW50OworCWRvdWJsZQkJZXhlY190aW1lOworCWRvdWJsZQkJ dXNhZ2U7CQkJLyogVXNhZ2UgZmFjdG9yIG9mIHRoZSBlbnRyeSwgdXNlZCB0bworCQkJCQkJCQkg KiBwcmlvcml0aXplIHdoaWNoIHBsYW5zIHRvIGFnZSBvdXQgKi8KKworCS8qIE9ubHkgdXNlZCBp biBzaGFyZWQgc3RydWN0dXJlLCBub3QgaW4gbG9jYWwgcGVuZGluZyBzdGF0cyAqLworCVBnU3Rh dFNoYXJlZF9QbGFuSW5mbyBpbmZvOworfQkJCVBnU3RhdF9TdGF0UGxhbkVudHJ5OworCit0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRTaGFyZWRfUGxhbgoreworCVBnU3RhdFNoYXJlZF9Db21tb24gaGVh ZGVyOworCVBnU3RhdF9TdGF0UGxhbkVudHJ5IHN0YXRzOworfQkJCVBnU3RhdFNoYXJlZF9QbGFu OworCitzdGF0aWMgYm9vbCBwbGFuX3N0YXRzX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50 cnlfcmVmLCBib29sIG5vd2FpdCk7CisKK3N0YXRpYyBjb25zdCBQZ1N0YXRfS2luZEluZm8gcGxh bl9zdGF0cyA9IHsKKwkubmFtZSA9ICJwbGFuX3N0YXRzIiwKKwkuZml4ZWRfYW1vdW50ID0gZmFs c2UsCisKKwkvKgorCSAqIFdlIGN1cnJlbnRseSBkb24ndCB3cml0ZSB0byBhIGZpbGUgc2luY2Ug cGxhbiB0ZXh0cyB3b3VsZCBnZXQgbG9zdCAoYW5kCisJICoganVzdCB0aGUgc3RhdHMgb24gdGhl aXIgb3duIGFyZW4ndCB0aGF0IHVzZWZ1bCkKKwkgKi8KKwkud3JpdGVfdG9fZmlsZSA9IGZhbHNl LAorCisJLyoKKwkgKiBQbGFuIHN0YXRpc3RpY3MgYXJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSB0 byBzaW1wbGlmeSBtb25pdG9yaW5nCisJICogc2NyaXB0cworCSAqLworCS5hY2Nlc3NlZF9hY3Jv c3NfZGF0YWJhc2VzID0gdHJ1ZSwKKworCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFy ZWRfUGxhbiksCisJLnNoYXJlZF9kYXRhX29mZiA9IG9mZnNldG9mKFBnU3RhdFNoYXJlZF9QbGFu LCBzdGF0cyksCisJLnNoYXJlZF9kYXRhX2xlbiA9IHNpemVvZigoKFBnU3RhdFNoYXJlZF9QbGFu ICopIDApLT5zdGF0cyksCisJLnBlbmRpbmdfc2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFBsYW5F bnRyeSksCisJLmZsdXNoX3BlbmRpbmdfY2IgPSBwbGFuX3N0YXRzX2ZsdXNoX2NiLAorfTsKKwor LyoKKyAqIENvbXB1dGUgc3RhdHMgZW50cnkgaWR4IGZyb20gcXVlcnkgSUQgYW5kIHBsYW4gSUQg d2l0aCBhbiA4LWJ5dGUgaGFzaC4KKyAqCisgKiBXaGlsc3Qgd2UgY291bGQgdGhlb3JpY2FsbHkg anVzdCB1c2UgdGhlIHBsYW4gSUQgaGVyZSwgd2UgaW50ZW50aW9uYWxseQorICogYWRkIHRoZSBx dWVyeSBJRCBpbnRvIHRoZSBtaXggdG8gZWFzZSBpbnRlcnByZXRpbmcgdGhlIGRhdGEgaW4gY29t YmluYXRpb24KKyAqIHdpdGggcGdfc3RhdF9zdGF0ZW1lbnRzLgorICovCisjZGVmaW5lIFBHU1RB VF9QTEFOX0lEWChxdWVyeV9pZCwgcGxhbl9pZCwgdXNlcl9pZCwgdG9wbGV2ZWwpIGhhc2hfY29t YmluZTY0KHRvcGxldmVsLCBoYXNoX2NvbWJpbmU2NChxdWVyeV9pZCwgaGFzaF9jb21iaW5lNjQo cGxhbl9pZCwgdXNlcl9pZCkpKQorCisvKgorICogS2luZCBJRCByZXNlcnZlZCBmb3Igc3RhdGlz dGljcyBvZiBwbGFucy4KKyAqLworI2RlZmluZSBQR1NUQVRfS0lORF9QTEFOUwlQR1NUQVRfS0lO RF9FWFBFUklNRU5UQUwJLyogVE9ETzogQXNzaWduICovCisKKy8qCisgKiBDYWxsYmFjayBmb3Ig c3RhdHMgaGFuZGxpbmcKKyAqLworc3RhdGljIGJvb2wKK3BsYW5fc3RhdHNfZmx1c2hfY2IoUGdT dGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQoreworCVBnU3RhdF9TdGF0UGxh bkVudHJ5ICpsb2NhbGVudDsKKwlQZ1N0YXRTaGFyZWRfUGxhbiAqc2hmdW5jZW50OworCisJbG9j YWxlbnQgPSAoUGdTdGF0X1N0YXRQbGFuRW50cnkgKikgZW50cnlfcmVmLT5wZW5kaW5nOworCXNo ZnVuY2VudCA9IChQZ1N0YXRTaGFyZWRfUGxhbiAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsK KworCWlmICghcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVmLCBub3dhaXQpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlzaGZ1bmNlbnQtPnN0YXRzLmV4ZWNfY291bnQgKz0gbG9jYWxlbnQtPmV4ZWNf Y291bnQ7CisJc2hmdW5jZW50LT5zdGF0cy5leGVjX3RpbWUgKz0gbG9jYWxlbnQtPmV4ZWNfdGlt ZTsKKwlzaGZ1bmNlbnQtPnN0YXRzLnVzYWdlICs9IGxvY2FsZW50LT51c2FnZTsKKworCXBnc3Rh dF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMg Y2hhciAqCitwZ3NwX2V4cGxhaW5fcGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sKKwlFeHBs YWluU3RhdGUgKmVzOworCVN0cmluZ0luZm8JZXNfc3RyOworCisJZXMgPSBOZXdFeHBsYWluU3Rh dGUoKTsKKwllc19zdHIgPSBlcy0+c3RyOworCisJLyoKKwkgKiBXZSB0dXJuIG9mZiBDT1NUUyBz aW5jZSBpZGVudGljYWwgcGxhbmlkcyBtYXkgaGF2ZSB2ZXJ5IGRpZmZlcmVudAorCSAqIGNvc3Rz LCBhbmQgaXQgY291bGQgYmUgbWlzbGVhZGluZyB0byBvbmx5IHNob3cgdGhlIGZpcnN0IHJlY29y ZGVkCisJICogcGxhbidzIGNvc3RzLgorCSAqLworCWVzLT5jb3N0cyA9IGZhbHNlOworCWVzLT5m b3JtYXQgPSBFWFBMQUlOX0ZPUk1BVF9URVhUOworCisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsK KwlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURlc2MpOworCUV4cGxhaW5FbmRPdXRwdXQoZXMp OworCisJcmV0dXJuIGVzX3N0ci0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQKK3Bnc3RhdF9nY19w bGFuX21lbW9yeSgpCit7CisJZHNoYXNoX3NlcV9zdGF0dXMgaHN0YXQ7CisJUGdTdGF0U2hhcmVk X0hhc2hFbnRyeSAqcDsKKworCS8qIGRzaGFzaCBlbnRyeSBpcyBub3QgbW9kaWZpZWQsIHRha2Ug c2hhcmVkIGxvY2sgKi8KKwlkc2hhc2hfc2VxX2luaXQoJmhzdGF0LCBwZ1N0YXRMb2NhbC5zaGFy ZWRfaGFzaCwgZmFsc2UpOworCXdoaWxlICgocCA9IGRzaGFzaF9zZXFfbmV4dCgmaHN0YXQpKSAh PSBOVUxMKQorCXsKKwkJUGdTdGF0U2hhcmVkX0NvbW1vbiAqaGVhZGVyOworCQlQZ1N0YXRfU3Rh dFBsYW5FbnRyeSAqc3RhdGVudDsKKworCQlpZiAoIXAtPmRyb3BwZWQgfHwgcC0+a2V5LmtpbmQg IT0gUEdTVEFUX0tJTkRfUExBTlMpCisJCQljb250aW51ZTsKKworCQloZWFkZXIgPSBkc2FfZ2V0 X2FkZHJlc3MocGdTdGF0TG9jYWwuZHNhLCBwLT5ib2R5KTsKKworCQlpZiAoIUxXTG9ja0NvbmRp dGlvbmFsQWNxdWlyZSgmaGVhZGVyLT5sb2NrLCBMV19FWENMVVNJVkUpKQorCQkJY29udGludWU7 CisKKwkJc3RhdGVudCA9IChQZ1N0YXRfU3RhdFBsYW5FbnRyeSAqKSBwZ3N0YXRfZ2V0X2VudHJ5 X2RhdGEoUEdTVEFUX0tJTkRfUExBTlMsIGhlYWRlcik7CisKKwkJLyoKKwkJICogQ2xlYW4gdXAg dGhpcyBlbnRyeSdzIHBsYW4gdGV4dCBhbGxvY2F0aW9uLCBpZiB3ZSBoYXZlbid0IGRvbmUgc28K KwkJICogYWxyZWFkeQorCQkgKi8KKwkJaWYgKERzYVBvaW50ZXJJc1ZhbGlkKHN0YXRlbnQtPmlu Zm8ucGxhbl90ZXh0KSkKKwkJeworCQkJZHNhX2ZyZWUocGdTdGF0TG9jYWwuZHNhLCBzdGF0ZW50 LT5pbmZvLnBsYW5fdGV4dCk7CisJCQlzdGF0ZW50LT5pbmZvLnBsYW5fdGV4dCA9IEludmFsaWRE c2FQb2ludGVyOworCisJCQkvKiBBbGxvdyByZW1vdmFsIG9mIHRoZSBzaGFyZWQgc3RhdHMgZW50 cnkgKi8KKwkJCXBnX2F0b21pY19mZXRjaF9zdWJfdTMyKCZwLT5yZWZjb3VudCwgMSk7CisJCX0K KworCQlMV0xvY2tSZWxlYXNlKCZoZWFkZXItPmxvY2spOworCX0KKwlkc2hhc2hfc2VxX3Rlcm0o JmhzdGF0KTsKKworCS8qIEVuY291cmFnZSBvdGhlciBiYWNrZW5kcyB0byBjbGVhbiB1cCBkcm9w cGVkIGVudHJ5IHJlZnMgKi8KKwlwZ3N0YXRfcmVxdWVzdF9lbnRyeV9yZWZzX2djKCk7Cit9CisK K3R5cGVkZWYgc3RydWN0IFBsYW5EZWFsbG9jRW50cnkKK3sKKwlQZ1N0YXRfSGFzaEtleSBrZXk7 CisJZG91YmxlCQl1c2FnZTsKK30JCQlQbGFuRGVhbGxvY0VudHJ5OworCisvKgorICogbGlzdCBz b3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgaW50byBkZWNyZWFzaW5nIHVzYWdlIG9yZGVyCisg Ki8KK3N0YXRpYyBpbnQKK2VudHJ5X2NtcF9scnUoY29uc3QgdW5pb24gTGlzdENlbGwgKmxocywg Y29uc3QgdW5pb24gTGlzdENlbGwgKnJocykKK3sKKwlkb3VibGUJCWxfdXNhZ2UgPSAoKFBsYW5E ZWFsbG9jRW50cnkgKikgbGZpcnN0KGxocykpLT51c2FnZTsKKwlkb3VibGUJCXJfdXNhZ2UgPSAo KFBsYW5EZWFsbG9jRW50cnkgKikgbGZpcnN0KHJocykpLT51c2FnZTsKKworCWlmIChsX3VzYWdl ID4gcl91c2FnZSkKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKGxfdXNhZ2UgPCByX3VzYWdlKQor CQlyZXR1cm4gKzE7CisJZWxzZQorCQlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3Bnc3Rh dF9kZWFsbG9jX3BsYW5zKCkKK3sKKwlkc2hhc2hfc2VxX3N0YXR1cyBoc3RhdDsKKwlQZ1N0YXRT aGFyZWRfSGFzaEVudHJ5ICpwOworCUxpc3QJICAgKmVudHJpZXMgPSBOSUw7CisJTGlzdENlbGwg ICAqbGM7CisJaW50CQkJbnZpY3RpbXM7CisKKwkvKiBkc2hhc2ggZW50cnkgaXMgbm90IG1vZGlm aWVkLCB0YWtlIHNoYXJlZCBsb2NrICovCisJZHNoYXNoX3NlcV9pbml0KCZoc3RhdCwgcGdTdGF0 TG9jYWwuc2hhcmVkX2hhc2gsIGZhbHNlKTsKKwl3aGlsZSAoKHAgPSBkc2hhc2hfc2VxX25leHQo JmhzdGF0KSkgIT0gTlVMTCkKKwl7CisJCVBnU3RhdFNoYXJlZF9Db21tb24gKmhlYWRlcjsKKwkJ UGdTdGF0X1N0YXRQbGFuRW50cnkgKnN0YXRlbnQ7CisJCVBsYW5EZWFsbG9jRW50cnkgKmVudHJ5 OworCisJCWlmIChwLT5kcm9wcGVkIHx8IHAtPmtleS5raW5kICE9IFBHU1RBVF9LSU5EX1BMQU5T KQorCQkJY29udGludWU7CisKKwkJaGVhZGVyID0gZHNhX2dldF9hZGRyZXNzKHBnU3RhdExvY2Fs LmRzYSwgcC0+Ym9keSk7CisKKwkJaWYgKCFMV0xvY2tDb25kaXRpb25hbEFjcXVpcmUoJmhlYWRl ci0+bG9jaywgTFdfRVhDTFVTSVZFKSkKKwkJCWNvbnRpbnVlOworCisJCXN0YXRlbnQgPSAoUGdT dGF0X1N0YXRQbGFuRW50cnkgKikgcGdzdGF0X2dldF9lbnRyeV9kYXRhKFBHU1RBVF9LSU5EX1BM QU5TLCBoZWFkZXIpOworCQlzdGF0ZW50LT51c2FnZSAqPSBVU0FHRV9ERUNSRUFTRV9GQUNUT1I7 CisKKwkJZW50cnkgPSBwYWxsb2Moc2l6ZW9mKFBsYW5EZWFsbG9jRW50cnkpKTsKKwkJZW50cnkt PmtleSA9IHAtPmtleTsKKwkJZW50cnktPnVzYWdlID0gc3RhdGVudC0+dXNhZ2U7CisKKwkJTFdM b2NrUmVsZWFzZSgmaGVhZGVyLT5sb2NrKTsKKworCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVz LCBlbnRyeSk7CisJfQorCWRzaGFzaF9zZXFfdGVybSgmaHN0YXQpOworCisJLyogU29ydCBieSB1 c2FnZSBhc2NlbmRpbmcgKGxvd2VzdCB1c2VkIGVudHJpZXMgYXJlIGxhc3QpICovCisJbGlzdF9z b3J0KGVudHJpZXMsIGVudHJ5X2NtcF9scnUpOworCisJLyogQXQgYSBtaW5pbXVtLCBkZWFsbG9j YXRlIDEwIGVudHJpZXMgdG8gbWFrZSBpdCB3b3J0aCBvdXIgd2hpbGUgKi8KKwludmljdGltcyA9 IE1heCgxMCwgbGlzdF9sZW5ndGgoZW50cmllcykgKiBVU0FHRV9ERUFMTE9DX1BFUkNFTlQgLyAx MDApOworCW52aWN0aW1zID0gTWluKG52aWN0aW1zLCBsaXN0X2xlbmd0aChlbnRyaWVzKSk7CisK KwkvKiBBY3R1YWxseSBkcm9wIHRoZSBlbnRyaWVzICovCisJZm9yX2VhY2hfZnJvbShsYywgZW50 cmllcywgbGlzdF9sZW5ndGgoZW50cmllcykgLSBudmljdGltcykKKwl7CisJCVBsYW5EZWFsbG9j RW50cnkgKmVudHJ5ID0gbGZpcnN0KGxjKTsKKworCQlwZ3N0YXRfZHJvcF9lbnRyeShlbnRyeS0+ a2V5LmtpbmQsIGVudHJ5LT5rZXkuZGJvaWQsIGVudHJ5LT5rZXkub2JqaWQpOworCX0KKworCS8q IENsZWFuIHVwIG91ciB3b3JraW5nIG1lbW9yeSBpbW1lZGlhdGVseSAqLworCWZvcmVhY2gobGMs IGVudHJpZXMpCisJeworCQlQbGFuRGVhbGxvY0VudHJ5ICplbnRyeSA9IGxmaXJzdChsYyk7CisK KwkJcGZyZWUoZW50cnkpOworCX0KKwlwZnJlZShlbnRyaWVzKTsKK30KKworc3RhdGljIHZvaWQK K3Bnc3RhdF9nY19wbGFucygpCit7CisJZHNoYXNoX3NlcV9zdGF0dXMgaHN0YXQ7CisJUGdTdGF0 U2hhcmVkX0hhc2hFbnRyeSAqcDsKKwlib29sCQloYXZlX2Ryb3BwZWRfZW50cmllcyA9IGZhbHNl OworCXNpemVfdAkJcGxhbl9lbnRyeV9jb3VudCA9IDA7CisKKwkvKiBUT0RPOiBQcmV2ZW50IGNv bmN1cnJlbnQgR0MgY3ljbGVzIC0gZmxhZyBhbiBhY3RpdmUgR0MgcnVuIHNvbWVob3cgKi8KKwor CS8qCisJICogQ291bnQgb3VyIGFjdGl2ZSBlbnRyaWVzLCBhbmQgd2hldGhlciB0aGVyZSBhcmUg YW55IGRyb3BwZWQgZW50cmllcyB3ZQorCSAqIG1heSBuZWVkIHRvIGNsZWFuIHVwIGF0IHRoZSBl bmQuCisJICovCisJZHNoYXNoX3NlcV9pbml0KCZoc3RhdCwgcGdTdGF0TG9jYWwuc2hhcmVkX2hh c2gsIGZhbHNlKTsKKwl3aGlsZSAoKHAgPSBkc2hhc2hfc2VxX25leHQoJmhzdGF0KSkgIT0gTlVM TCkKKwl7CisJCWlmIChwLT5rZXkua2luZCAhPSBQR1NUQVRfS0lORF9QTEFOUykKKwkJCWNvbnRp bnVlOworCisJCWlmIChwLT5kcm9wcGVkKQorCQkJaGF2ZV9kcm9wcGVkX2VudHJpZXMgPSB0cnVl OworCQllbHNlCisJCQlwbGFuX2VudHJ5X2NvdW50Kys7CisJfQorCWRzaGFzaF9zZXFfdGVybSgm aHN0YXQpOworCisJLyoKKwkgKiBJZiB3ZSdyZSBvdmVyIHRoZSBsaW1pdCwgZGVsZXRlIGVudHJp ZXMgd2l0aCBsb3dlc3QgdXNhZ2UgZmFjdG9yLgorCSAqLworCWlmIChwbGFuX2VudHJ5X2NvdW50 ID4gcGdzcF9tYXgpCisJeworCQlwZ3N0YXRfZGVhbGxvY19wbGFucygpOworCQloYXZlX2Ryb3Bw ZWRfZW50cmllcyA9IHRydWU7CS8qIEFzc3VtZSB3ZSBkaWQgc29tZSB3b3JrICovCisJfQorCisJ LyogSWYgdGhlcmUgYXJlIGRyb3BwZWQgZW50cmllcywgY2xlYW4gdXAgdGhlaXIgcGxhbiBtZW1v cnkgaWYgbmVlZGVkICovCisJaWYgKGhhdmVfZHJvcHBlZF9lbnRyaWVzKQorCQlwZ3N0YXRfZ2Nf cGxhbl9tZW1vcnkoKTsKK30KKworc3RhdGljIHZvaWQKK3Bnc3RhdF9yZXBvcnRfcGxhbl9zdGF0 cyhRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJCSBQZ1N0YXRfQ291bnRlciBleGVjX2NvdW50 LAorCQkJCQkJIGRvdWJsZSBleGVjX3RpbWUpCit7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9y ZWY7CisJUGdTdGF0U2hhcmVkX1BsYW4gKnNoc3RhdGVudDsKKwlQZ1N0YXRfU3RhdFBsYW5FbnRy eSAqc3RhdGVudDsKKwlib29sCQluZXdseV9jcmVhdGVkOworCXVpbnQ2NAkJcXVlcnlJZCA9IHF1 ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5SWQ7CisJdWludDY0CQlwbGFuSWQgPSBxdWVyeURl c2MtPnBsYW5uZWRzdG10LT5wbGFuSWQ7CisJT2lkCQkJdXNlcmlkID0gR2V0VXNlcklkKCk7CisJ Ym9vbAkJdG9wbGV2ZWwgPSAobmVzdGluZ19sZXZlbCA9PSAwKTsKKworCWVudHJ5X3JlZiA9IHBn c3RhdF9wcmVwX3BlbmRpbmdfZW50cnkoUEdTVEFUX0tJTkRfUExBTlMsIE15RGF0YWJhc2VJZCwK KwkJCQkJCQkJCQkgIFBHU1RBVF9QTEFOX0lEWChxdWVyeUlkLCBwbGFuSWQsIHVzZXJpZCwgdG9w bGV2ZWwpLCAmbmV3bHlfY3JlYXRlZCk7CisKKwlzaHN0YXRlbnQgPSAoUGdTdGF0U2hhcmVkX1Bs YW4gKikgZW50cnlfcmVmLT5zaGFyZWRfc3RhdHM7CisJc3RhdGVudCA9ICZzaHN0YXRlbnQtPnN0 YXRzOworCisJaWYgKG5ld2x5X2NyZWF0ZWQpCisJeworCQljaGFyCSAgICpwbGFuID0gcGdzcF9l eHBsYWluX3BsYW4ocXVlcnlEZXNjKTsKKwkJc2l6ZV90CQlwbGFuX3NpemUgPSBNaW4oc3RybGVu KHBsYW4pLCBwZ3NwX21heF9zaXplKTsKKworCQkodm9pZCkgcGdzdGF0X2xvY2tfZW50cnkoZW50 cnlfcmVmLCBmYWxzZSk7CisKKwkJLyoKKwkJICogV2UgbWF5IGJlIG92ZXIgdGhlIGxpbWl0LCBz byBydW4gR0Mgbm93IGJlZm9yZSBzYXZpbmcgZW50cnkgKHdlIGRvCisJCSAqIHRoaXMgd2hpbHN0 IGhvbGRpbmcgdGhlIGxvY2sgb24gdGhlIG5ldyBlbnRyeSBzbyB3ZSBkb24ndCByZW1vdmUgaXQK KwkJICogYnkgYWNjaWRlbnQpCisJCSAqLworCQlwZ3N0YXRfZ2NfcGxhbnMoKTsKKworCQlzaHN0 YXRlbnQtPnN0YXRzLmluZm8ucGxhbmlkID0gcGxhbklkOworCQlzaHN0YXRlbnQtPnN0YXRzLmlu Zm8ucXVlcnlpZCA9IHF1ZXJ5SWQ7CisJCXNoc3RhdGVudC0+c3RhdHMuaW5mby51c2VyaWQgPSB1 c2VyaWQ7CisJCXNoc3RhdGVudC0+c3RhdHMuaW5mby50b3BsZXZlbCA9IHRvcGxldmVsOworCQlz aHN0YXRlbnQtPnN0YXRzLmluZm8ucGxhbl90ZXh0ID0gZHNhX2FsbG9jYXRlKHBnU3RhdExvY2Fs LmRzYSwgcGxhbl9zaXplKTsKKwkJc3RybGNweShkc2FfZ2V0X2FkZHJlc3MocGdTdGF0TG9jYWwu ZHNhLCBzaHN0YXRlbnQtPnN0YXRzLmluZm8ucGxhbl90ZXh0KSwgcGxhbiwgcGxhbl9zaXplKTsK KworCQlzaHN0YXRlbnQtPnN0YXRzLmluZm8ucGxhbl9lbmNvZGluZyA9IEdldERhdGFiYXNlRW5j b2RpbmcoKTsKKworCQkvKgorCQkgKiBJbmNyZWFzZSByZWZjb3VudCBoZXJlIHNvIGVudHJ5IGNh bid0IGdldCByZWxlYXNlZCB3aXRob3V0IHVzCisJCSAqIGRyb3BwaW5nIHRoZSBwbGFuIHRleHQK KwkJICovCisJCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZlbnRyeV9yZWYtPnNoYXJlZF9lbnRy eS0+cmVmY291bnQsIDEpOworCisJCXBnc3RhdF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKKwor CQlwZnJlZShwbGFuKTsKKwl9CisKKwlzdGF0ZW50LT5leGVjX2NvdW50ICs9IGV4ZWNfY291bnQ7 CisJc3RhdGVudC0+ZXhlY190aW1lICs9IGV4ZWNfdGltZTsKKwlzdGF0ZW50LT51c2FnZSArPSBV U0FHRV9JTkNSRUFTRTsKK30KKworLyoKKyAqIFBsYW5uZXIgaG9vazogZm9yd2FyZCB0byByZWd1 bGFyIHBsYW5uZXIsIGJ1dCBpbmNyZWFzZSBwbGFuIGNvdW50IGFuZAorICogcmVjb3JkIHF1ZXJ5 IHBsYW4gaWYgbmVlZGVkLgorICovCitzdGF0aWMgUGxhbm5lZFN0bXQgKgorcGdzcF9wbGFubmVy KFF1ZXJ5ICpwYXJzZSwKKwkJCSBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCisJCQkgaW50IGN1 cnNvck9wdGlvbnMsCisJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKK3sKKwlQbGFubmVk U3RtdCAqcmVzdWx0OworCisJLyoKKwkgKiBJbmNyZW1lbnQgdGhlIG5lc3RpbmcgbGV2ZWwsIHRv IGVuc3VyZSB0aGF0IGZ1bmN0aW9ucyBldmFsdWF0ZWQgZHVyaW5nCisJICogcGxhbm5pbmcgYXJl IG5vdCBzZWVuIGFzIHRvcC1sZXZlbCBjYWxscy4KKwkgKi8KKwluZXN0aW5nX2xldmVsKys7CisJ UEdfVFJZKCk7CisJeworCQlpZiAocHJldl9wbGFubmVyX2hvb2spCisJCQlyZXN1bHQgPSBwcmV2 X3BsYW5uZXJfaG9vayhwYXJzZSwgcXVlcnlfc3RyaW5nLCBjdXJzb3JPcHRpb25zLAorCQkJCQkJ CQkJICAgYm91bmRQYXJhbXMpOworCQllbHNlCisJCQlyZXN1bHQgPSBzdGFuZGFyZF9wbGFubmVy KHBhcnNlLCBxdWVyeV9zdHJpbmcsIGN1cnNvck9wdGlvbnMsCisJCQkJCQkJCQkgIGJvdW5kUGFy YW1zKTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJbmVzdGluZ19sZXZlbC0tOworCX0KKwlQ R19FTkRfVFJZKCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogRXhlY3V0b3JTdGFy dCBob29rOiBzdGFydCB1cCB0cmFja2luZyBpZiBuZWVkZWQKKyAqLworc3RhdGljIHZvaWQKK3Bn c3BfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwl1 aW50NjQJCXF1ZXJ5SWQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkOworCXVpbnQ2 NAkJcGxhbklkID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cGxhbklkOworCisJaWYgKHByZXZf RXhlY3V0b3JTdGFydCkKKwkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsK KwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJ aWYgKHF1ZXJ5SWQgIT0gVUlOVDY0Q09OU1QoMCkgJiYgcGxhbklkICE9IFVJTlQ2NENPTlNUKDAp ICYmCisJCXBnc3BfZW5hYmxlZChuZXN0aW5nX2xldmVsKSkKKwl7CisJCS8qCisJCSAqIFJlY29y ZCBpbml0aWFsIGVudHJ5IG5vdywgc28gcGxhbiB0ZXh0IGlzIGF2YWlsYWJsZSBmb3IgY3VycmVu dGx5CisJCSAqIHJ1bm5pbmcgcXVlcmllcworCQkgKi8KKwkJcGdzdGF0X3JlcG9ydF9wbGFuX3N0 YXRzKHF1ZXJ5RGVzYywKKwkJCQkJCQkJIDAsIC8qIGV4ZWN1dGlvbnMgYXJlIGNvdW50ZWQgaW4K KwkJCQkJCQkJCSAqIHBnc3BfRXhlY3V0b3JFbmQgKi8KKwkJCQkJCQkJIDAuMCk7CisKKwkJLyoK KwkJICogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4g IE1ha2Ugc3VyZSB0aGUKKwkJICogc3BhY2UgaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkg Y29udGV4dCBzbyBpdCB3aWxsIGdvIGF3YXkgYXQKKwkJICogRXhlY3V0b3JFbmQuCisJCSAqLwor CQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUgPT0gTlVMTCkKKwkJeworCQkJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7CisKKwkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2Mt PmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJB bGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFsc2UpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBFeGVjdXRvclJ1biBob29rOiBhbGwgd2Ug bmVlZCBkbyBpcyB0cmFjayBuZXN0aW5nIGRlcHRoCisgKi8KK3N0YXRpYyB2b2lkCitwZ3NwX0V4 ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwg dWludDY0IGNvdW50KQoreworCW5lc3RpbmdfbGV2ZWwrKzsKKwlQR19UUlkoKTsKKwl7CisJCWlm IChwcmV2X0V4ZWN1dG9yUnVuKQorCQkJcHJldl9FeGVjdXRvclJ1bihxdWVyeURlc2MsIGRpcmVj dGlvbiwgY291bnQpOworCQllbHNlCisJCQlzdGFuZGFyZF9FeGVjdXRvclJ1bihxdWVyeURlc2Ms IGRpcmVjdGlvbiwgY291bnQpOworCX0KKwlQR19GSU5BTExZKCk7CisJeworCQluZXN0aW5nX2xl dmVsLS07CisJfQorCVBHX0VORF9UUlkoKTsKK30KKworLyoKKyAqIEV4ZWN1dG9yRmluaXNoIGhv b2s6IGFsbCB3ZSBuZWVkIGRvIGlzIHRyYWNrIG5lc3RpbmcgZGVwdGgKKyAqLworc3RhdGljIHZv aWQKK3Bnc3BfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCit7CisJbmVzdGlu Z19sZXZlbCsrOworCVBHX1RSWSgpOworCXsKKwkJaWYgKHByZXZfRXhlY3V0b3JGaW5pc2gpCisJ CQlwcmV2X0V4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJCWVsc2UKKwkJCXN0YW5kYXJkX0V4 ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJfQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCW5lc3Rp bmdfbGV2ZWwtLTsKKwl9CisJUEdfRU5EX1RSWSgpOworfQorCisvKgorICogRXhlY3V0b3JFbmQg aG9vazogc3RvcmUgcmVzdWx0cyBpZiBuZWVkZWQKKyAqLworc3RhdGljIHZvaWQKK3Bnc3BfRXhl Y3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCit7CisJdWludDY0CQlxdWVyeUlkID0gcXVl cnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZDsKKwl1aW50NjQJCXBsYW5JZCA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQtPnBsYW5JZDsKKworCWlmIChxdWVyeUlkICE9IFVJTlQ2NENPTlNUKDAp ICYmIHBsYW5JZCAhPSBVSU5UNjRDT05TVCgwKSAmJgorCQlxdWVyeURlc2MtPnRvdGFsdGltZSAm JiBwZ3NwX2VuYWJsZWQobmVzdGluZ19sZXZlbCkpCisJeworCQkvKgorCQkgKiBNYWtlIHN1cmUg c3RhdHMgYWNjdW11bGF0aW9uIGlzIGRvbmUuICAoTm90ZTogaXQncyBva2F5IGlmIHNldmVyYWwK KwkJICogbGV2ZWxzIG9mIGhvb2sgYWxsIGRvIHRoaXMuKQorCQkgKi8KKwkJSW5zdHJFbmRMb29w KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKworCQlwZ3N0YXRfcmVwb3J0X3BsYW5fc3RhdHMocXVl cnlEZXNjLAorCQkJCQkJCQkgMSwKKwkJCQkJCQkJIHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT50b3Rh bCAqIDEwMDAuMCAvKiBjb252ZXJ0IHRvIG1zZWMgKi8gKTsKKwl9CisKKwlpZiAocHJldl9FeGVj dXRvckVuZCkKKwkJcHJldl9FeGVjdXRvckVuZChxdWVyeURlc2MpOworCWVsc2UKKwkJc3RhbmRh cmRfRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKK30KKworLyoKKyAqIE1vZHVsZSBsb2FkIGNhbGxi YWNrCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJLyoKKwkgKiBJbiBvcmRlciB0byBy ZWdpc3RlciBmb3Igc2hhcmVkIG1lbW9yeSBzdGF0cywgd2UgaGF2ZSB0byBiZSBsb2FkZWQgdmlh CisJICogc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzLiAgSWYgbm90LCBmYWxsIG91dCB3aXRob3V0 IGhvb2tpbmcgaW50byBhbnkgb2YKKwkgKiB0aGUgbWFpbiBzeXN0ZW0uICAoV2UgZG9uJ3QgdGhy b3cgZXJyb3IgaGVyZSBiZWNhdXNlIGl0IHNlZW1zIHVzZWZ1bCB0bworCSAqIGFsbG93IHRoZSBw Z19zdGF0X3BsYW5zIGZ1bmN0aW9ucyB0byBiZSBjcmVhdGVkIGV2ZW4gd2hlbiB0aGUgbW9kdWxl CisJICogaXNuJ3QgYWN0aXZlLiAgVGhlIGZ1bmN0aW9ucyBtdXN0IHByb3RlY3QgdGhlbXNlbHZl cyBhZ2FpbnN0IGJlaW5nCisJICogY2FsbGVkIHRoZW4sIGhvd2V2ZXIuKQorCSAqLworCWlmICgh cHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCisJCXJldHVybjsK KworCS8qCisJICogSW5mb3JtIHRoZSBwb3N0bWFzdGVyIHRoYXQgd2Ugd2FudCB0byBlbmFibGUg cXVlcnlfaWQgY2FsY3VsYXRpb24gaWYKKwkgKiBjb21wdXRlX3F1ZXJ5X2lkIGlzIHNldCB0byBh dXRvLCBhcyB3ZWxsIGFzIHBsYW5faWQgY2FsY3VsYXRpb24gaWYKKwkgKiBjb21wdXRlX3BsYW5f aWQgaXMgc2V0IHRvIGF1dG8uCisJICovCisJRW5hYmxlUXVlcnlJZCgpOworCUVuYWJsZVBsYW5J ZCgpOworCisJLyoKKwkgKiBEZWZpbmUgKG9yIHJlZGVmaW5lKSBjdXN0b20gR1VDIHZhcmlhYmxl cy4KKwkgKi8KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgicGdfc3RhdF9wbGFucy5tYXgiLAor CQkJCQkJCSJTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwbGFucyB0cmFja2VkIGJ5IHBnX3N0 YXRfcGxhbnMgaW4gc2hhcmVkIG1lbW9yeS4iLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJJnBnc3Bf bWF4LAorCQkJCQkJCTUwMDAsCisJCQkJCQkJMTAwLAorCQkJCQkJCUlOVF9NQVggLyAyLAorCQkJ CQkJCVBHQ19TSUdIVVAsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwsCisJ CQkJCQkJTlVMTCk7CisKKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgicGdfc3RhdF9wbGFucy5t YXhfc2l6ZSIsCisJCQkJCQkJIlNldHMgdGhlIG1heGltdW0gc2l6ZSBvZiBwbGFuIHRleHRzIHRy YWNrZWQgYnkgcGdfc3RhdF9wbGFucyBpbiBzaGFyZWQgbWVtb3J5LiIsCisJCQkJCQkJTlVMTCwK KwkJCQkJCQkmcGdzcF9tYXhfc2l6ZSwKKwkJCQkJCQkyMDQ4LAorCQkJCQkJCTEwMCwKKwkJCQkJ CQkxMDQ4NTc2LAkvKiAxTUIgaGFyZCBsaW1pdCAqLworCQkJCQkJCVBHQ19TVVNFVCwKKwkJCQkJ CQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKKworCURlZmlu ZUN1c3RvbUVudW1WYXJpYWJsZSgicGdfc3RhdF9wbGFucy50cmFjayIsCisJCQkJCQkJICJTZWxl Y3RzIHdoaWNoIHBsYW5zIGFyZSB0cmFja2VkIGJ5IHBnX3N0YXRfcGxhbnMuIiwKKwkJCQkJCQkg TlVMTCwKKwkJCQkJCQkgJnBnc3BfdHJhY2ssCisJCQkJCQkJIFBHU1BfVFJBQ0tfVE9QLAorCQkJ CQkJCSB0cmFja19vcHRpb25zLAorCQkJCQkJCSBQR0NfU1VTRVQsCisJCQkJCQkJIDAsCisJCQkJ CQkJIE5VTEwsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIE5VTEwpOworCisJTWFya0dVQ1ByZWZp eFJlc2VydmVkKCJwZ19zdGF0X3BsYW5zIik7CisKKwkvKgorCSAqIEluc3RhbGwgaG9va3MuCisJ ICovCisJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CisJcGxhbm5lcl9ob29rID0g cGdzcF9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydCA9IEV4ZWN1dG9yU3RhcnRfaG9vazsK KwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBwZ3NwX0V4ZWN1dG9yU3RhcnQ7CisJcHJldl9FeGVjdXRv clJ1biA9IEV4ZWN1dG9yUnVuX2hvb2s7CisJRXhlY3V0b3JSdW5faG9vayA9IHBnc3BfRXhlY3V0 b3JSdW47CisJcHJldl9FeGVjdXRvckZpbmlzaCA9IEV4ZWN1dG9yRmluaXNoX2hvb2s7CisJRXhl Y3V0b3JGaW5pc2hfaG9vayA9IHBnc3BfRXhlY3V0b3JGaW5pc2g7CisJcHJldl9FeGVjdXRvckVu ZCA9IEV4ZWN1dG9yRW5kX2hvb2s7CisJRXhlY3V0b3JFbmRfaG9vayA9IHBnc3BfRXhlY3V0b3JF bmQ7CisKKwlwZ3N0YXRfcmVnaXN0ZXJfa2luZChQR1NUQVRfS0lORF9QTEFOUywgJnBsYW5fc3Rh dHMpOworfQorCitzdGF0aWMgYm9vbAorbWF0Y2hfcGxhbnNfZW50cmllcyhQZ1N0YXRTaGFyZWRf SGFzaEVudHJ5ICplbnRyeSwgRGF0dW0gbWF0Y2hfZGF0YSkKK3sKKwlyZXR1cm4gZW50cnktPmtl eS5raW5kID09IFBHU1RBVF9LSU5EX1BMQU5TOworfQorCisvKgorICogUmVzZXQgc3RhdGVtZW50 IHN0YXRpc3RpY3MuCisgKi8KK0RhdHVtCitwZ19zdGF0X3BsYW5zX3Jlc2V0KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJcGdzdGF0X2Ryb3BfbWF0Y2hpbmdfZW50cmllcyhtYXRjaF9wbGFuc19lbnRy aWVzLCAwKTsKKworCS8qIEZyZWUgcGxhbiB0ZXh0IG1lbW9yeSBhbmQgYWxsb3cgY2xlYW51cCBv ZiBkcm9wcGVkIGVudHJpZXMgKi8KKwlwZ3N0YXRfZ2NfcGxhbl9tZW1vcnkoKTsKKworCVBHX1JF VFVSTl9WT0lEKCk7Cit9CisKKyNkZWZpbmUgUEdfU1RBVF9QTEFOU19DT0xTIDgKKworRGF0dW0K K3BnX3N0YXRfcGxhbnNfMV8wKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYm9vbAkJc2hvd3BsYW4g PSBQR19HRVRBUkdfQk9PTCgwKTsKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0 SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJT2lkCQkJdXNlcmlkID0gR2V0VXNlcklkKCk7 CisJYm9vbAkJaXNfYWxsb3dlZF9yb2xlID0gZmFsc2U7CisKKwlkc2hhc2hfc2VxX3N0YXR1cyBo c3RhdDsKKwlQZ1N0YXRTaGFyZWRfSGFzaEVudHJ5ICpwOworCisJLyoKKwkgKiBTdXBlcnVzZXJz IG9yIHJvbGVzIHdpdGggdGhlIHByaXZpbGVnZXMgb2YgcGdfcmVhZF9hbGxfc3RhdHMgbWVtYmVy cworCSAqIGFyZSBhbGxvd2VkCisJICovCisJaXNfYWxsb3dlZF9yb2xlID0gaGFzX3ByaXZzX29m X3JvbGUodXNlcmlkLCBST0xFX1BHX1JFQURfQUxMX1NUQVRTKTsKKworCS8qIHN0YXRzIGtpbmQg bXVzdCBiZSByZWdpc3RlcmVkIGFscmVhZHkgKi8KKwlpZiAoIXBnc3RhdF9nZXRfa2luZF9pbmZv KFBHU1RBVF9LSU5EX1BMQU5TKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJwZ19z dGF0X3BsYW5zIG11c3QgYmUgbG9hZGVkIHZpYSBcInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllc1wi IikpKTsKKworCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKKworCS8qIGRzaGFzaCBl bnRyeSBpcyBub3QgbW9kaWZpZWQsIHRha2Ugc2hhcmVkIGxvY2sgKi8KKwlkc2hhc2hfc2VxX2lu aXQoJmhzdGF0LCBwZ1N0YXRMb2NhbC5zaGFyZWRfaGFzaCwgZmFsc2UpOworCXdoaWxlICgocCA9 IGRzaGFzaF9zZXFfbmV4dCgmaHN0YXQpKSAhPSBOVUxMKQorCXsKKwkJUGdTdGF0X1N0YXRQbGFu RW50cnkgKnN0YXRlbnQ7CisJCURhdHVtCQl2YWx1ZXNbUEdfU1RBVF9QTEFOU19DT0xTXTsKKwkJ Ym9vbAkJbnVsbHNbUEdfU1RBVF9QTEFOU19DT0xTXTsKKwkJaW50CQkJaSA9IDA7CisKKwkJaWYg KHAtPmRyb3BwZWQgfHwgcC0+a2V5LmtpbmQgIT0gUEdTVEFUX0tJTkRfUExBTlMpCisJCQljb250 aW51ZTsKKworCQltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJCW1lbXNldChu dWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CisKKwkJc3RhdGVudCA9IHBnc3RhdF9nZXRfZW50cnlf ZGF0YShwLT5rZXkua2luZCwgZHNhX2dldF9hZGRyZXNzKHBnU3RhdExvY2FsLmRzYSwgcC0+Ym9k eSkpOworCisJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShzdGF0ZW50LT5pbmZvLnVz ZXJpZCk7CisJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bShwLT5rZXkuZGJvaWQpOwor CQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzdGF0ZW50LT5pbmZvLnRvcGxldmVsKTsKKwkJ aWYgKGlzX2FsbG93ZWRfcm9sZSB8fCBzdGF0ZW50LT5pbmZvLnVzZXJpZCA9PSB1c2VyaWQpCisJ CXsKKwkJCWludDY0CQlxdWVyeWlkID0gc3RhdGVudC0+aW5mby5xdWVyeWlkOworCQkJaW50NjQJ CXBsYW5pZCA9IHN0YXRlbnQtPmluZm8ucGxhbmlkOworCisJCQl2YWx1ZXNbaSsrXSA9IEludDY0 R2V0RGF0dW1GYXN0KHF1ZXJ5aWQpOworCQkJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtRmFz dChwbGFuaWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCQlu dWxsc1tpKytdID0gdHJ1ZTsKKwkJfQorCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW1GYXN0 KHN0YXRlbnQtPmV4ZWNfY291bnQpOworCQl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtRmFz dChzdGF0ZW50LT5leGVjX3RpbWUpOworCisJCWlmIChzaG93cGxhbiAmJiAoaXNfYWxsb3dlZF9y b2xlIHx8IHN0YXRlbnQtPmluZm8udXNlcmlkID09IHVzZXJpZCkpCisJCXsKKwkJCWNoYXIJICAg KnBzdHIgPSBEc2FQb2ludGVySXNWYWxpZChzdGF0ZW50LT5pbmZvLnBsYW5fdGV4dCkgPyBkc2Ff Z2V0X2FkZHJlc3MocGdTdGF0TG9jYWwuZHNhLCBzdGF0ZW50LT5pbmZvLnBsYW5fdGV4dCkgOiBO VUxMOworCisJCQlpZiAocHN0cikKKwkJCXsKKwkJCQljaGFyCSAgICplbmMgPSBwZ19hbnlfdG9f c2VydmVyKHBzdHIsIHN0cmxlbihwc3RyKSwgc3RhdGVudC0+aW5mby5wbGFuX2VuY29kaW5nKTsK KworCQkJCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bShlbmMpOworCisJCQkJaWYg KGVuYyAhPSBwc3RyKQorCQkJCQlwZnJlZShlbmMpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CW51bGxzW2krK10gPSB0cnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKHNob3dwbGFuKQorCQl7 CisJCQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oIjxpbnN1ZmZpY2llbnQgcHJp dmlsZWdlPiIpOworCQl9CisJCWVsc2UKKwkJeworCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCX0K KwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVz YywgdmFsdWVzLCBudWxscyk7CisJfQorCWRzaGFzaF9zZXFfdGVybSgmaHN0YXQpOworCisJcmV0 dXJuIChEYXR1bSkgMDsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19z dGF0X3BsYW5zLmNvbmYgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jb25m Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NzUwYjNlMmNjMAotLS0g L2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmNvbmYK QEAgLTAsMCArMSBAQAorc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ3BnX3N0YXRfcGxhbnMn CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jb250cm9s IGIvY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMuY29udHJvbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGRiM2E0NzIzOWIKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jb250cm9sCkBAIC0wLDAg KzEsNSBAQAorIyBwZ19zdGF0X3BsYW5zIGV4dGVuc2lvbgorY29tbWVudCA9ICd0cmFjayBwZXIt cGxhbiBjYWxsIGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRleHRzJworZGVm YXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3BnX3N0YXRf cGxhbnMnCityZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9w bGFucy9zcWwvY2xlYW51cC5zcWwgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvc3FsL2NsZWFudXAu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MTU2NTYxN2NlZgot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwK QEAgLTAsMCArMSBAQAorRFJPUCBFWFRFTlNJT04gcGdfc3RhdF9wbGFuczsKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvcHJpdmlsZWdlcy5zcWwgYi9jb250cmliL3BnX3N0 YXRfcGxhbnMvc3FsL3ByaXZpbGVnZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5hYWFkNzJhNjU1MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3Rh dF9wbGFucy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTAsMCArMSw1OSBAQAorLS0KKy0tIE9ubHkg c3VwZXJ1c2VycyBhbmQgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZSBwZ19yZWFkX2FsbF9z dGF0cyByb2xlCistLSBhcmUgYWxsb3dlZCB0byBzZWUgdGhlIHBsYW4gdGV4dCwgcXVlcnlpZCBh bmQgcGxhbmlkIG9mIHF1ZXJpZXMgZXhlY3V0ZWQgYnkKKy0tIG90aGVyIHVzZXJzLiBPdGhlciB1 c2VycyBjYW4gc2VlIHRoZSBzdGF0aXN0aWNzLgorLS0KKworQ1JFQVRFIFJPTEUgcmVncmVzc19z dGF0c19zdXBlcnVzZXIgU1VQRVJVU0VSOworQ1JFQVRFIFJPTEUgcmVncmVzc19zdGF0c191c2Vy MTsKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNlcjI7CitHUkFOVCBwZ19yZWFkX2FsbF9z dGF0cyBUTyByZWdyZXNzX3N0YXRzX3VzZXIyOworCitTRVQgUk9MRSByZWdyZXNzX3N0YXRzX3N1 cGVydXNlcjsKK1NFTEVDVCBwZ19zdGF0X3BsYW5zX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsK K1NFTEVDVCAxIEFTICJPTkUiOworCitTRVQgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIxOworU0VM RUNUIDErMSBBUyAiVFdPIjsKKworLS0KKy0tIEEgc3VwZXJ1c2VyIGNhbiByZWFkIGFsbCBjb2x1 bW5zIG9mIHF1ZXJpZXMgZXhlY3V0ZWQgYnkgb3RoZXJzLAorLS0gaW5jbHVkaW5nIHBsYW4gdGV4 dCwgcXVlcnlpZCBhbmQgcGxhbmlkLgorLS0KKworU0VUIFJPTEUgcmVncmVzc19zdGF0c19zdXBl cnVzZXI7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+IDAgQVMgcXVlcnlpZF9ib29s LCBzcy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxhbiwgc3MuY2FsbHMKKyAgRlJP TSBwZ19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBzcy51c2VyaWQgPSByLm9pZAor ICBPUkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAiQyIsIHNzLmNhbGxzOworCist LQorLS0gcmVncmVzc19zdGF0c191c2VyMSBoYXMgbm8gcHJpdmlsZWdlcyB0byByZWFkIHRoZSBw bGFuIHRleHQsIHF1ZXJ5aWQKKy0tIG9yIHBsYW5pZCBvZiBxdWVyaWVzIGV4ZWN1dGVkIGJ5IG90 aGVycyBidXQgY2FuIHNlZSBzdGF0aXN0aWNzCistLSBsaWtlIGNhbGxzIGFuZCByb3dzLgorLS0K KworU0VUIFJPTEUgcmVncmVzc19zdGF0c191c2VyMTsKK1NFTEVDVCByLnJvbG5hbWUsIHNzLnF1 ZXJ5aWQgPD4gMCBBUyBxdWVyeWlkX2Jvb2wsIHNzLnBsYW5pZCA8PiAwIEFTIHBsYW5pZF9ib29s LCBzcy5wbGFuLCBzcy5jYWxscworICBGUk9NIHBnX3N0YXRfcGxhbnMgc3MgSk9JTiBwZ19yb2xl cyByIE9OIHNzLnVzZXJpZCA9IHIub2lkCisgIE9SREVSIEJZIHIucm9sbmFtZSwgc3MucGxhbiBD T0xMQVRFICJDIiwgc3MuY2FsbHM7CisKKy0tCistLSByZWdyZXNzX3N0YXRzX3VzZXIyLCB3aXRo IHBnX3JlYWRfYWxsX3N0YXRzIHJvbGUgcHJpdmlsZWdlcywgY2FuCistLSByZWFkIGFsbCBjb2x1 bW5zLCBpbmNsdWRpbmcgcGxhbiB0ZXh0LCBxdWVyeWlkIGFuZCBwbGFuaWQsIG9mIHF1ZXJpZXMK Ky0tIGV4ZWN1dGVkIGJ5IG90aGVycy4KKy0tCisKK1NFVCBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNl cjI7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+IDAgQVMgcXVlcnlpZF9ib29sLCBz cy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxhbiwgc3MuY2FsbHMKKyAgRlJPTSBw Z19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBzcy51c2VyaWQgPSByLm9pZAorICBP UkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAiQyIsIHNzLmNhbGxzOworCistLQor LS0gY2xlYW51cAorLS0KKworUkVTRVQgUk9MRTsKK0RST1AgUk9MRSByZWdyZXNzX3N0YXRzX3N1 cGVydXNlcjsKK0RST1AgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIxOworRFJPUCBST0xFIHJlZ3Jl c3Nfc3RhdHNfdXNlcjI7CitTRUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfcGxhbnMvc3FsL3NlbGVjdC5zcWwg Yi9jb250cmliL3BnX3N0YXRfcGxhbnMvc3FsL3NlbGVjdC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwZTgwM2FkNzBjCi0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9wZ19zdGF0X3BsYW5zL3NxbC9zZWxlY3Quc3FsCkBAIC0wLDAgKzEsNjcgQEAKKy0tCist LSBTRUxFQ1Qgc3RhdGVtZW50cworLS0KKworQ1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3BsYW5z OworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworCistLQor LS0gc2ltcGxlIHN0YXRlbWVudHMKKy0tCisKK1NFTEVDVCAxIEZST00gcGdfY2xhc3MgTElNSVQg MTsKKworU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJzsK KworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvbjsKKwor U0VMRUNUIHBsYW4sIGNhbGxzIEZST00gcGdfc3RhdF9wbGFucyBPUkRFUiBCWSBwbGFuIENPTExB VEUgIkMiOworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0Owor CistLQorLS0gc3VicGxhbnMgYW5kIENURXMKKy0tCisKK1dJVEggeCBBUyBNQVRFUklBTElaRUQg KFNFTEVDVCAxKQorU0VMRUNUICogRlJPTSB4OworCitTRUxFQ1QgYS5hdHRuYW1lLAorICAgKFNF TEVDVCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGQuYWRiaW4sIGQuYWRyZWxpZCkKKyAgICBGUk9N IHBnX2NhdGFsb2cucGdfYXR0cmRlZiBkCisgICAgV0hFUkUgZC5hZHJlbGlkID0gYS5hdHRyZWxp ZCBBTkQgZC5hZG51bSA9IGEuYXR0bnVtIEFORCBhLmF0dGhhc2RlZikKKyBGUk9NIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIGEKKyBXSEVSRSBhLmF0dHJlbGlkID0gJ3BnX2NsYXNzJzo6cmVnY2xh c3MKKyBPUkRFUiBCWSBhdHRudW0gTElNSVQgMTsKKworU0VMRUNUIHBsYW4sIGNhbGxzIEZST00g cGdfc3RhdF9wbGFucyBPUkRFUiBCWSBwbGFuIENPTExBVEUgIkMiOworU0VMRUNUIHBnX3N0YXRf cGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworCistLQorLS0gcGFydGl0b25pbmcKKy0t CisKK2NyZWF0ZSB0YWJsZSBscCAoYSBjaGFyKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVh dGUgdGFibGUgbHBfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbHAgZGVmYXVsdDsKK2NyZWF0ZSB0YWJs ZSBscF9lZiBwYXJ0aXRpb24gb2YgbHAgZm9yIHZhbHVlcyBpbiAoJ2UnLCAnZicpOworY3JlYXRl IHRhYmxlIGxwX2FkIHBhcnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnYScsICdkJyk7Citj cmVhdGUgdGFibGUgbHBfYmMgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKCdiJywgJ2Mn KTsKK2NyZWF0ZSB0YWJsZSBscF9nIHBhcnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnZycp OworY3JlYXRlIHRhYmxlIGxwX251bGwgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKG51 bGwpOworCitzZWxlY3QgKiBmcm9tIGxwOworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID4gJ2En IGFuZCBhIDwgJ2QnOworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID4gJ2EnIGFuZCBhIDw9ICdk JzsKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJzsKK3NlbGVjdCAqIGZyb20gbHAgd2hl cmUgJ2EnID0gYTsJLyogY29tbXV0ZWQgKi8KK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBu b3QgbnVsbDsKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOworc2VsZWN0ICogZnJv bSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEg aXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhIDw+ICdnJzsKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAnYScgYW5kIGEgPD4g J2QnOworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAnZCcpOworCitTRUxF Q1QgcGxhbiwgY2FsbHMgRlJPTSBwZ19zdGF0X3BsYW5zIE9SREVSIEJZIHBsYW4gQ09MTEFURSAi QyI7CitTRUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY29udHJpYi5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIu c2dtbAppbmRleCA3YzM4MTk0OWE1My4uNGE1YTAyYzcwNDkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jb250cmliLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbApAQCAtMTU3 LDYgKzE1Nyw3IEBAIENSRUFURSBFWFRFTlNJT04gPHJlcGxhY2VhYmxlPmV4dGVuc2lvbl9uYW1l PC9yZXBsYWNlYWJsZT47CiAgJnBnbG9naWNhbGluc3BlY3Q7CiAgJnBncHJld2FybTsKICAmcGdy b3dsb2NrczsKKyAmcGdzdGF0cGxhbnM7CiAgJnBnc3RhdHN0YXRlbWVudHM7CiAgJnBnc3RhdHR1 cGxlOwogICZwZ3N1cmdlcnk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dt bCBiL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCmluZGV4IDY2ZTZkY2NkNGM5Li5iMGFmYjMz Y2UyMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2ZpbGVsaXN0LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2ZpbGVsaXN0LnNnbWwKQEAgLTE0Niw2ICsxNDYsNyBAQAogPCFFTlRJVFkgcGdsb2dp Y2FsaW5zcGVjdCAgU1lTVEVNICJwZ2xvZ2ljYWxpbnNwZWN0LnNnbWwiPgogPCFFTlRJVFkgcGdw cmV3YXJtICAgICAgIFNZU1RFTSAicGdwcmV3YXJtLnNnbWwiPgogPCFFTlRJVFkgcGdyb3dsb2Nr cyAgICAgIFNZU1RFTSAicGdyb3dsb2Nrcy5zZ21sIj4KKzwhRU5USVRZIHBnc3RhdHBsYW5zICAg ICBTWVNURU0gInBnc3RhdHBsYW5zLnNnbWwiPgogPCFFTlRJVFkgcGdzdGF0c3RhdGVtZW50cyBT WVNURU0gInBnc3RhdHN0YXRlbWVudHMuc2dtbCI+CiA8IUVOVElUWSBwZ3N0YXR0dXBsZSAgICAg U1lTVEVNICJwZ3N0YXR0dXBsZS5zZ21sIj4KIDwhRU5USVRZIHBnc3VyZ2VyeSAgICAgICBTWVNU RU0gInBnc3VyZ2VyeS5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wZ3N0YXRwbGFu cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Bnc3RhdHBsYW5zLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJkNWZhZmYxNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9j L3NyYy9zZ21sL3Bnc3RhdHBsYW5zLnNnbWwKQEAgLTAsMCArMSw0MjUgQEAKKzwhLS0gZG9jL3Ny Yy9zZ21sL3Bnc3RhdHBsYW5zLnNnbWwgLS0+CisKKzxzZWN0MSBpZD0icGdzdGF0cGxhbnMiIHhy ZWZsYWJlbD0icGdfc3RhdF9wbGFucyI+CisgPHRpdGxlPnBnX3N0YXRfcGxhbnMgJm1kYXNoOyB0 cmFjayBwZXItcGxhbiBjYWxsIGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRl eHRzPC90aXRsZT4KKworIDxpbmRleHRlcm0gem9uZT0icGdzdGF0cGxhbnMiPgorICA8cHJpbWFy eT5wZ19zdGF0X3BsYW5zPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHBhcmE+CisgIFRo ZSA8ZmlsZW5hbWU+cGdfc3RhdF9wbGFuczwvZmlsZW5hbWU+IG1vZHVsZSBwcm92aWRlcyBhIG1l YW5zIGZvcgorICB0cmFja2luZyBwZXItcGxhbiBzdGF0aXN0aWNzIGFuZCBwbGFuIHRleHRzIG9m IGFsbCBTUUwgc3RhdGVtZW50cyBleGVjdXRlZCBieQorICBhIHNlcnZlci4KKyA8L3BhcmE+CisK KyA8cGFyYT4KKyAgVGhlIG1vZHVsZSBtdXN0IGJlIGxvYWRlZCBieSBhZGRpbmcgPGxpdGVyYWw+ cGdfc3RhdF9wbGFuczwvbGl0ZXJhbD4gdG8KKyAgPHhyZWYgbGlua2VuZD0iZ3VjLXNoYXJlZC1w cmVsb2FkLWxpYnJhcmllcyIvPiBpbgorICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxl bmFtZT4sIGJlY2F1c2UgaXQgcmVxdWlyZXMgYWRkaXRpb25hbCBzaGFyZWQgbWVtb3J5LgorICBU aGlzIG1lYW5zIHRoYXQgYSBzZXJ2ZXIgcmVzdGFydCBpcyBuZWVkZWQgdG8gYWRkIG9yIHJlbW92 ZSB0aGUgbW9kdWxlLgorICBJbiBhZGRpdGlvbiwgcXVlcnkgYW5kIHBsYW4gaWRlbnRpZmllciBj YWxjdWxhdGlvbiBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIgZm9yIHRoZQorICBtb2R1bGUgdG8g YmUgYWN0aXZlIGJ5IHNldHRpbmcgYm90aCA8eHJlZiBsaW5rZW5kPSJndWMtY29tcHV0ZS1wbGFu LWlkIi8+IHRvCisgIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+IG9yIDxsaXRlcmFsPm9uPC9saXRl cmFsPiBhbmQKKyAgPHhyZWYgbGlua2VuZD0iZ3VjLWNvbXB1dGUtcXVlcnktaWQiLz4gdG8gPGxp dGVyYWw+YXV0bzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorIDwvcGFyYT4K KworIDxwYXJhPgorICAgV2hlbiA8ZmlsZW5hbWU+cGdfc3RhdF9wbGFuczwvZmlsZW5hbWU+IGlz IGFjdGl2ZSwgaXQgdHJhY2tzCisgICBzdGF0aXN0aWNzIGFjcm9zcyBhbGwgZGF0YWJhc2VzIG9m IHRoZSBzZXJ2ZXIuICBUbyBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUKKyAgIHRoZXNlIHN0YXRpc3Rp Y3MsIHRoZSBtb2R1bGUgcHJvdmlkZXMgdGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfcGxhbnM8L3N0 cnVjdG5hbWU+CisgICB2aWV3IGFuZCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgPGZ1bmN0aW9uPnBn X3N0YXRfcGxhbnNfcmVzZXQ8L2Z1bmN0aW9uPiBhbmQKKyAgIDxmdW5jdGlvbj5wZ19zdGF0X3Bs YW5zPC9mdW5jdGlvbj4uICBUaGVzZSBhcmUgbm90IGF2YWlsYWJsZSBnbG9iYWxseSBidXQKKyAg IGNhbiBiZSBlbmFibGVkIGZvciBhIHNwZWNpZmljIGRhdGFiYXNlIHdpdGgKKyAgIDxjb21tYW5k PkNSRUFURSBFWFRFTlNJT04gcGdfc3RhdF9wbGFuczwvY29tbWFuZD4uCisgPC9wYXJhPgorCisg PHNlY3QyIGlkPSJwZ3N0YXRwbGFucy1wZy1zdGF0LXBsYW5zIj4KKyAgPHRpdGxlPlRoZSA8c3Ry dWN0bmFtZT5wZ19zdGF0X3BsYW5zPC9zdHJ1Y3RuYW1lPiBWaWV3PC90aXRsZT4KKworICA8cGFy YT4KKyAgIFRoZSBzdGF0aXN0aWNzIGdhdGhlcmVkIGJ5IHRoZSBtb2R1bGUgYXJlIG1hZGUgYXZh aWxhYmxlIHZpYSBhCisgICB2aWV3IG5hbWVkIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfcGxhbnM8L3N0 cnVjdG5hbWU+LiAgVGhpcyB2aWV3CisgICBjb250YWlucyBvbmUgcm93IGZvciBlYWNoIGRpc3Rp bmN0IGNvbWJpbmF0aW9uIG9mIGRhdGFiYXNlIElELCB1c2VyCisgICBJRCwgd2hldGhlciBpdCdz IGEgdG9wLWxldmVsIHN0YXRlbWVudCBvciBub3QsIHF1ZXJ5IElEIGFuZCBwbGFuIElECisgICAo dXAgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpc3RpbmN0IHBsYW5zIHRoYXQgdGhlIG1vZHVs ZSBjYW4gdHJhY2spLgorICAgVGhlIGNvbHVtbnMgb2YgdGhlIHZpZXcgYXJlIHNob3duIGluIDx4 cmVmIGxpbmtlbmQ9InBnc3RhdHBsYW5zLWNvbHVtbnMiLz4uCisgIDwvcGFyYT4KKworICA8dGFi bGUgaWQ9InBnc3RhdHBsYW5zLWNvbHVtbnMiPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0 YXRfcGxhbnM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIx Ij4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVt biBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8 dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD51 c2VyaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhpZDwv c3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE9JRCBvZiB1c2VyIHdobyBleGVjdXRlZCB0 aGUgc3RhdGVtZW50CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRiaWQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1kYXRhYmFzZSI+PHN0cnVjdG5hbWU+cGdfZGF0YWJhc2U8L3N0cnVjdG5hbWU+ PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBPSUQgb2YgZGF0YWJhc2UgaW4gd2hpY2ggdGhlIHN0YXRlbWVu dCB3YXMgZXhlY3V0ZWQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG9wbGV2ZWw8L3N0 cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVHJ1ZSBpZiB0aGUgcXVlcnkgd2FzIGV4ZWN1dGVkIGFzIGEgdG9wLWxldmVsIHN0 YXRlbWVudAorICAgICAgIChhbHdheXMgdHJ1ZSBpZiA8dmFybmFtZT5wZ19zdGF0X3BsYW5zLnRy YWNrPC92YXJuYW1lPiBpcyBzZXQgdG8KKyAgICAgICA8bGl0ZXJhbD50b3A8L2xpdGVyYWw+KQor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5xdWVyeWlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSGFzaCBj b2RlIHRvIGlkZW50aWZ5IGlkZW50aWNhbCBub3JtYWxpemVkIHF1ZXJpZXMuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnBsYW5pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEhhc2ggY29kZSB0byBpZGVu dGlmeSBpZGVudGljYWwgcGxhbiBzaGFwZXMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PmNhbGxzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRpbWVzIHRoZSBwbGFuIHdhcyBleGVjdXRl ZAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9leGVjX3RpbWU8L3N0cnVjdGZp ZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgVG90YWwgdGltZSBzcGVudCBleGVjdXRpbmcgdGhlIHBsYW4sIGluIG1p bGxpc2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wbGFuPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFBsYW4gdGV4dCBvZiBhIHJlcHJlc2VudGF0aXZlIHBsYW4uIFRoaXMgaXMgc2ltaWxhciB0byB0 aGUgb3V0cHV0IG9mCisgICAgICAgPGxpdGVyYWw+RVhQTEFJTiAoQ09TVFMgT0ZGKTwvbGl0ZXJh bD4uIE5vdGUgdGhlIHBsYW4gdGV4dCB3aWxsIGNvbnRhaW4gY29uc3RhbnQKKyAgICAgICB2YWx1 ZXMgb2YgdGhlIGZpcnN0IHBsYW4gcmVjb3JkZWQsIGJ1dCBzdWJzZXF1ZW50IGV4ZWN1dGlvbnMg b2YgdGhlCisgICAgICAgc2FtZSBwbGFuIGhhc2ggY29kZSAoPHN0cnVjdGZpZWxkPnBsYW5pZDwv c3RydWN0ZmllbGQ+KSB3aXRoIGRpZmZlcmVudAorICAgICAgIGNvbnN0YW50IHZhbHVlcyB3aWxs IGJlIHRyYWNrZWQgdW5kZXIgdGhlIHNhbWUgZW50cnkuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisg IDxwYXJhPgorICAgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIG9ubHkgc3VwZXJ1c2VycyBhbmQgcm9s ZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZQorICAgPGxpdGVyYWw+cGdfcmVhZF9hbGxfc3RhdHM8 L2xpdGVyYWw+IHJvbGUgYXJlIGFsbG93ZWQgdG8gc2VlIHRoZSBwbGFuIHRleHQsCisgICA8c3Ry dWN0ZmllbGQ+cXVlcnlpZDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+cGxhbmlkPC9z dHJ1Y3RmaWVsZD4KKyAgIG9mIHF1ZXJpZXMgZXhlY3V0ZWQgYnkgb3RoZXIgdXNlcnMuIE90aGVy IHVzZXJzIGNhbiBzZWUgdGhlIHN0YXRpc3RpY3MsCisgICBob3dldmVyLCBpZiB0aGUgdmlldyBo YXMgYmVlbiBpbnN0YWxsZWQgaW4gdGhlaXIgZGF0YWJhc2UuCisgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFBsYW5uYWJsZSBxdWVyaWVzICh0aGF0IGlzLCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1h bmQ+LCA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+LAorICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPiwgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiwgYW5kIDxjb21tYW5kPk1FUkdFPC9jb21t YW5kPikKKyAgIHdpbGwgaGF2ZSB0aGUgc2FtZSA8c3RydWN0ZmllbGQ+cGxhbmlkPC9zdHJ1Y3Rm aWVsZD4gd2hlbmV2ZXIgdGhleSBoYXZlIGlkZW50aWNhbCBwbGFuCisgICBzdHJ1Y3R1cmVzIGFj Y29yZGluZyB0byBhbiBpbnRlcm5hbCBoYXNoIGNhbGN1bGF0aW9uLiBUeXBpY2FsbHksIHR3byBw bGFucyB3aWxsIGJlCisgICBjb25zaWRlcmVkIHRoZSBzYW1lIGZvciB0aGlzIHB1cnBvc2UgaWYg dGhleSBoYXZlIHRoZSBzYW1lCisgICA8bGl0ZXJhbD5FWFBMQUlOIChDT1NUUyBPRkYpPC9saXRl cmFsPiBvdXRwdXQgYW5kIGFyZSBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCBleGNlcHQKKyAgIGZv ciB0aGUgdmFsdWVzIG9mIGxpdGVyYWwgY29uc3RhbnRzIGFwcGVhcmluZyBpbiB0aGUgcXVlcnkg cGxhbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgTm90ZSB0aGF0IHF1ZXJpZXMgdGhhdCBo YXZlIG5vdCBmaW5pc2hlZCBleGVjdXRpbmcgeWV0IHdpbGwgc2hvdyBpbgorICAgPHN0cnVjdG5h bWU+cGdfc3RhdF9wbGFuczwvc3RydWN0bmFtZT4gd2l0aCB0aGVpciBwbGFuIHRleHQsIGJ1dCB3 aXRob3V0CisgICB0aGUgPHN0cnVjdG5hbWU+Y2FsbHM8L3N0cnVjdG5hbWU+IGZpZWxkIGJlaW5n IGluY3JlbWVudGVkLiBUaGlzIGNhbiBiZQorICAgdXNlZCB0byBpZGVudGlmeSB0aGUgcXVlcnkg cGxhbiBmb3IgYSBjdXJyZW50bHkgcnVubmluZyBzdGF0ZW1lbnQgYnkgam9pbmluZworICAgPGxp bmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWFjdGl2aXR5LXZpZXciPnBnX3N0YXRfYWN0 aXZpdHk8L2xpbms+CisgICB3aXRoIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfcGxhbnM8L3N0cnVjdG5h bWU+LCBzZWUgZXhhbXBsZSB1c2FnZSBpbgorICAgPHhyZWYgbGlua2VuZD0icGdzdGF0cGxhbnMt c2FtcGxlLW91dHB1dCIvPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ29uc3VtZXJzIG9m IDxzdHJ1Y3RuYW1lPnBnX3N0YXRfcGxhbnM8L3N0cnVjdG5hbWU+IHNob3VsZCB1c2UKKyAgIDxz dHJ1Y3RmaWVsZD5wbGFuaWQ8L3N0cnVjdGZpZWxkPiBpbiBjb21iaW5hdGlvbiB3aXRoCisgICA8 c3RydWN0ZmllbGQ+cXVlcnlpZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+ZGJpZDwvc3Ry dWN0ZmllbGQ+LAorICAgPHN0cnVjdGZpZWxkPnVzZXJpZDwvc3RydWN0ZmllbGQ+IGFuZCA8c3Ry dWN0ZmllbGQ+dG9wbGV2ZWw8L3N0cnVjdGZpZWxkPgorICAgYXMgYSBzdGFibGUgYW5kIHJlbGlh YmxlIGlkZW50aWZpZXIgZm9yIGVhY2ggZW50cnksIGluc3RlYWQgb2YgdXNpbmcgaXRzCisgICBw bGFuIHRleHQuIEhvd2V2ZXIsIGl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhl cmUgYXJlIG9ubHkgbGltaXRlZAorICAgZ3VhcmFudGVlcyBhcm91bmQgdGhlIHN0YWJpbGl0eSBv ZiB0aGUgPHN0cnVjdGZpZWxkPnBsYW5pZDwvc3RydWN0ZmllbGQ+CisgICBoYXNoIHZhbHVlLiAg U2luY2UgdGhlIGlkZW50aWZpZXIgaXMgZGVyaXZlZCBmcm9tIHRoZSBwbGFuIHRyZWUsIGl0cyB2 YWx1ZQorICAgaXMgYSBmdW5jdGlvbiBvZiwgYW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgaW50ZXJu YWwgb2JqZWN0IGlkZW50aWZpZXJzCisgICBhcHBlYXJpbmcgaW4gdGhpcyByZXByZXNlbnRhdGlv bi4gVGhpcyBoYXMgc29tZSBjb3VudGVyaW50dWl0aXZlIGltcGxpY2F0aW9ucy4KKyAgIEZvciBl eGFtcGxlLCA8ZmlsZW5hbWU+cGdfc3RhdF9wbGFuczwvZmlsZW5hbWU+IHdpbGwgY29uc2lkZXIg dHdvCisgICBhcHBhcmVudGx5LWlkZW50aWNhbCBwbGFucyB0byBiZSBkaXN0aW5jdCwgaWYgdGhl eSByZWZlcmVuY2UgYSB0YWJsZQorICAgdGhhdCB3YXMgZHJvcHBlZCBhbmQgcmVjcmVhdGVkIGJl dHdlZW4gdGhlIGNyZWF0aW9uIG9mIHRoZSB0d28gcGxhbnMuCisgICBUaGUgaGFzaGluZyBwcm9j ZXNzIGlzIGFsc28gc2Vuc2l0aXZlIHRvIGRpZmZlcmVuY2VzIGluCisgICBtYWNoaW5lIGFyY2hp dGVjdHVyZSBhbmQgb3RoZXIgZmFjZXRzIG9mIHRoZSBwbGF0Zm9ybS4KKyAgIEZ1cnRoZXJtb3Jl LCBpdCBpcyBub3Qgc2FmZSB0byBhc3N1bWUgdGhhdCA8c3RydWN0ZmllbGQ+cGxhbmlkPC9zdHJ1 Y3RmaWVsZD4KKyAgIHdpbGwgYmUgc3RhYmxlIGFjcm9zcyBtYWpvciB2ZXJzaW9ucyBvZiA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBUd28gc2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIHJlcGxpY2F0aW9uIGJhc2VkIG9uIHBo eXNpY2FsIFdBTCByZXBsYXkgY2FuCisgICBiZSBleHBlY3RlZCB0byBoYXZlIGlkZW50aWNhbCA8 c3RydWN0ZmllbGQ+cGxhbmlkPC9zdHJ1Y3RmaWVsZD4gdmFsdWVzIGZvcgorICAgdGhlIHNhbWUg cGxhbi4gIEhvd2V2ZXIsIGxvZ2ljYWwgcmVwbGljYXRpb24gc2NoZW1lcyBkbyBub3QgcHJvbWlz ZSB0bworICAga2VlcCByZXBsaWNhcyBpZGVudGljYWwgaW4gYWxsIHJlbGV2YW50IGRldGFpbHMs IHNvCisgICA8c3RydWN0ZmllbGQ+cGxhbmlkPC9zdHJ1Y3RmaWVsZD4gd2lsbCBub3QgYmUgYSB1 c2VmdWwgaWRlbnRpZmllciBmb3IKKyAgIGFjY3VtdWxhdGluZyBjb3N0cyBhY3Jvc3MgYSBzZXQg b2YgbG9naWNhbCByZXBsaWNhcy4KKyAgIElmIGluIGRvdWJ0LCBkaXJlY3QgdGVzdGluZyBpcyBy ZWNvbW1lbmRlZC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUGxhbiB0ZXh0cyBhcmUgc3Rv cmVkIGluIHNoYXJlZCBtZW1vcnksIGFuZCBsaW1pdGVkIGluIGxlbmd0aC4gVG8gaW5jcmVhc2UK KyAgIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBzdG9yZWQgcGxhbiB0ZXh0cyB5b3UgY2FuIGluY3Jl YXNlCisgICA8dmFybmFtZT5wZ19zdGF0X3BsYW5zLm1heF9zaXplPC92YXJuYW1lPi4gVGhpcyB2 YWx1ZSBjYW4gYmUgY2hhbmdlZCBmb3IKKyAgIGFuIGluZGl2aWR1YWwgY29ubmVjdGlvbiwgb3Ig c2V0IGFzIGEgc2VydmVyLXdpZGUgc2V0dGluZy4KKyAgPC9wYXJhPgorIDwvc2VjdDI+CisKKyA8 c2VjdDIgaWQ9InBnc3RhdHBsYW5zLWZ1bmNzIj4KKyAgPHRpdGxlPkZ1bmN0aW9uczwvdGl0bGU+ CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAg IDxmdW5jdGlvbj5wZ19zdGF0X3BsYW5zX3Jlc2V0KCkgcmV0dXJucyB2b2lkPC9mdW5jdGlvbj4K KyAgICAgPGluZGV4dGVybT4KKyAgICAgIDxwcmltYXJ5PnBnX3N0YXRfcGxhbnNfcmVzZXQ8L3By aW1hcnk+CisgICAgIDwvaW5kZXh0ZXJtPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICA8ZnVuY3Rpb24+cGdfc3RhdF9wbGFuc19yZXNldDwvZnVuY3Rp b24+IGRpc2NhcmRzIHN0YXRpc3RpY3MgYW5kIHBsYW4gdGV4dHMKKyAgICAgIGdhdGhlcmVkIHNv IGZhciBieSA8ZmlsZW5hbWU+cGdfc3RhdF9wbGFuczwvZmlsZW5hbWU+LgorICAgICAgQnkgZGVm YXVsdCwgdGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBleGVjdXRlZCBieSBzdXBlcnVzZXJzLgor ICAgICAgQWNjZXNzIG1heSBiZSBncmFudGVkIHRvIG90aGVycyB1c2luZyA8Y29tbWFuZD5HUkFO VDwvY29tbWFuZD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxmdW5jdGlvbj5w Z19zdGF0X3BsYW5zKHNob3dwbGFuIGJvb2xlYW4pIHJldHVybnMgc2V0b2YgcmVjb3JkPC9mdW5j dGlvbj4KKyAgICAgPGluZGV4dGVybT4KKyAgICAgIDxwcmltYXJ5PnBnX3N0YXRfcGxhbnM8L3By aW1hcnk+CisgICAgICA8c2Vjb25kYXJ5PmZ1bmN0aW9uPC9zZWNvbmRhcnk+CisgICAgIDwvaW5k ZXh0ZXJtPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9wbGFuczwvc3RydWN0bmFtZT4gdmlldyBpcyBkZWZp bmVkIGluCisgICAgICB0ZXJtcyBvZiBhIGZ1bmN0aW9uIGFsc28gbmFtZWQgPGZ1bmN0aW9uPnBn X3N0YXRfcGxhbnM8L2Z1bmN0aW9uPi4KKyAgICAgIEl0IGlzIHBvc3NpYmxlIGZvciBjbGllbnRz IHRvIGNhbGwKKyAgICAgIHRoZSA8ZnVuY3Rpb24+cGdfc3RhdF9wbGFuczwvZnVuY3Rpb24+IGZ1 bmN0aW9uIGRpcmVjdGx5LCBhbmQgYnkKKyAgICAgIHNwZWNpZnlpbmcgPGxpdGVyYWw+c2hvd3Bs YW4gOj0gZmFsc2U8L2xpdGVyYWw+IGhhdmUgcGxhbiB0ZXh0cyBiZQorICAgICAgb21pdHRlZCAo dGhhdCBpcywgdGhlIDxsaXRlcmFsPk9VVDwvbGl0ZXJhbD4gYXJndW1lbnQgdGhhdCBjb3JyZXNw b25kcworICAgICAgdG8gdGhlIHZpZXcncyA8c3RydWN0ZmllbGQ+cGxhbjwvc3RydWN0ZmllbGQ+ IGNvbHVtbiB3aWxsIHJldHVybiBudWxscykuICBUaGlzCisgICAgICBmZWF0dXJlIGlzIGludGVu ZGVkIHRvIHN1cHBvcnQgZXh0ZXJuYWwgdG9vbHMgdGhhdCBtaWdodCB3aXNoIHRvIGF2b2lkCisg ICAgICB0aGUgb3ZlcmhlYWQgb2YgcmVwZWF0ZWRseSByZXRyaWV2aW5nIHBsYW4gdGV4dHMgb2Yg aW5kZXRlcm1pbmF0ZQorICAgICAgbGVuZ3RoLiAgU3VjaCB0b29scyBjYW4gaW5zdGVhZCBjYWNo ZSB0aGUgZmlyc3QgcGxhbiB0ZXh0IG9ic2VydmVkCisgICAgICBmb3IgZWFjaCBlbnRyeSB0aGVt c2VsdmVzLCBzaW5jZSB0aGF0IGlzCisgICAgICBhbGwgPGZpbGVuYW1lPnBnX3N0YXRfcGxhbnM8 L2ZpbGVuYW1lPiBpdHNlbGYgZG9lcywgYW5kIHRoZW4gcmV0cmlldmUKKyAgICAgIHBsYW4gdGV4 dHMgb25seSBhcyBuZWVkZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9 InBnc3RhdHBsYW5zLWNvbmZpZy1wYXJhbXMiPgorICA8dGl0bGU+Q29uZmlndXJhdGlvbiBQYXJh bWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT4KKyAgICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXg8L3Zhcm5hbWU+ICg8dHlw ZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgPGluZGV4dGVybT4KKyAgICAgIDxwcmltYXJ5Pjx2YXJu YW1lPnBnX3N0YXRfcGxhbnMubWF4PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwv cHJpbWFyeT4KKyAgICAgPC9pbmRleHRlcm0+CisgICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIDx2YXJuYW1lPnBnX3N0YXRfcGxhbnMubWF4PC92YXJuYW1l PiBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAgICAgIHBsYW5zIHRyYWNrZWQgYnkgdGhlIG1v ZHVsZSAoaS5lLiwgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJvd3MKKyAgICAgIGluIHRoZSA8c3Ry dWN0bmFtZT5wZ19zdGF0X3BsYW5zPC9zdHJ1Y3RuYW1lPiB2aWV3KS4gIElmIG1vcmUgZGlzdGlu Y3QKKyAgICAgIHBsYW5zIHRoYW4gdGhhdCBhcmUgb2JzZXJ2ZWQsIGluZm9ybWF0aW9uIGFib3V0 IHRoZSBsZWFzdC1leGVjdXRlZAorICAgICAgcGxhbnMgaXMgZGlzY2FyZGVkLiBUaGUgZGVmYXVs dCB2YWx1ZSBpcyA1MDAwLgorICAgICAgT25seSBzdXBlcnVzZXJzIGNhbiBjaGFuZ2UgdGhpcyBz ZXR0aW5nLiBDaGFuZ2luZyB0aGUgc2V0dGluZyByZXF1aXJlcworICAgICAgYSByZWxvYWQgb2Yg dGhlIHNlcnZlci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPHZhcm5hbWU+cGdf c3RhdF9wbGFucy5tYXhfc2l6ZTwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAg ICA8aW5kZXh0ZXJtPgorICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXhf c2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgIDwv aW5kZXh0ZXJtPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICA8dmFybmFtZT5wZ19zdGF0X3BsYW5zLm1heF9zaXplPC92YXJuYW1lPiBpcyB0aGUgbWF4 aW11bSBsZW5ndGggb2YKKyAgICAgIGVhY2ggcGxhbiB0ZXh0IHRyYWNrZWQgYnkgdGhlIG1vZHVs ZSBpbiBieXRlcy4gTG9uZ2VyIHBsYW4gdGV4dHMgd2lsbCBiZSB0cnVuY2F0ZWQuCisgICAgICBU aGUgZGVmYXVsdCB2YWx1ZSBpcyAyMDQ4ICgya0IpLgorICAgICAgT25seSBzdXBlcnVzZXJzIGNh biBjaGFuZ2UgdGhpcyBzZXR0aW5nLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8 dmFybmFtZT5wZ19zdGF0X3BsYW5zLnRyYWNrPC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4p CisgICAgIDxpbmRleHRlcm0+CisgICAgICA8cHJpbWFyeT48dmFybmFtZT5wZ19zdGF0X3BsYW5z LnRyYWNrPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAg PC9pbmRleHRlcm0+CisgICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIDx2YXJuYW1lPnBnX3N0YXRfcGxhbnMudHJhY2s8L3Zhcm5hbWU+IGNvbnRyb2xzIHdo aWNoIHBsYW5zCisgICAgICBhcmUgY291bnRlZCBieSB0aGUgbW9kdWxlLgorICAgICAgU3BlY2lm eSA8bGl0ZXJhbD50b3A8L2xpdGVyYWw+IHRvIHRyYWNrIHBsYW5zIGJ5IHRvcC1sZXZlbCBzdGF0 ZW1lbnRzICh0aG9zZSBpc3N1ZWQKKyAgICAgIGRpcmVjdGx5IGJ5IGNsaWVudHMpLCA8bGl0ZXJh bD5hbGw8L2xpdGVyYWw+IHRvIGFsc28gdHJhY2sgbmVzdGVkIHN0YXRlbWVudHMKKyAgICAgIChz dWNoIGFzIHN0YXRlbWVudHMgaW52b2tlZCB3aXRoaW4gZnVuY3Rpb25zKSwgb3IgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gdG8KKyAgICAgIGRpc2FibGUgcGxhbiBzdGF0aXN0aWNzIGNvbGxlY3Rp b24uCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD50b3A8L2xpdGVyYWw+Lgor ICAgICAgT25seSBzdXBlcnVzZXJzIGNhbiBjaGFuZ2UgdGhpcyBzZXR0aW5nLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlz dD4KKworICA8cGFyYT4KKyAgIFRoZSBtb2R1bGUgcmVxdWlyZXMgYWRkaXRpb25hbCBzaGFyZWQg bWVtb3J5IHByb3BvcnRpb25hbCB0bworICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXg8L3Zh cm5hbWU+IGZvciBzdGF0aXN0aWNzLCBhcyB3ZWxsIGFzCisgICA8dmFybmFtZT5wZ19zdGF0X3Bs YW5zLm1heDwvdmFybmFtZT4gbXVsdGlwbGllZCBieQorICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFu cy5tYXhfc2l6ZTwvdmFybmFtZT4gZm9yIHBsYW4gdGV4dHMuIE5vdGUgdGhhdCB0aGlzCisgICBt ZW1vcnkgaXMgb25seSBjb25zdW1lZCB3aGVuIGVudHJpZXMgYXJlIGNyZWF0ZWQsIGFuZCBub3Qg aWYKKyAgIDx2YXJuYW1lPnBnX3N0YXRfcGxhbnMudHJhY2s8L3Zhcm5hbWU+IGlzIHNldCB0byA8 bGl0ZXJhbD5ub25lPC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ug cGFyYW1ldGVycyBtdXN0IGJlIHNldCBpbiA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxl bmFtZT4uCisgICBUeXBpY2FsIHVzYWdlIG1pZ2h0IGJlOgorCis8cHJvZ3JhbWxpc3Rpbmc+Cisj IHBvc3RncmVzcWwuY29uZgorc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ3BnX3N0YXRfcGxh bnMnCisKK2NvbXB1dGVfcXVlcnlfaWQgPSBvbgorY29tcHV0ZV9wbGFuX2lkID0gb24KK3BnX3N0 YXRfcGxhbnMubWF4ID0gMTAwMDAKK3BnX3N0YXRfcGxhbnMubWF4X3NpemUgPSA0MDk2CitwZ19z dGF0X3BsYW5zLnRyYWNrID0gYWxsCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisgPC9z ZWN0Mj4KKworIDxzZWN0MiBpZD0icGdzdGF0cGxhbnMtc2FtcGxlLW91dHB1dCI+CisgIDx0aXRs ZT5TYW1wbGUgT3V0cHV0PC90aXRsZT4KKworPHNjcmVlbj4KK2JlbmNoPSMgU0VMRUNUIHBnX3N0 YXRfcGxhbnNfcmVzZXQoKTsKKworJCBwZ2JlbmNoIC1pIGJlbmNoCiskIHBnYmVuY2ggLWMxMCAt dDMwMCBiZW5jaAorCitiZW5jaD0jIFx4CitiZW5jaD0jIFNFTEVDVCBwbGFuLCBjYWxscywgdG90 YWxfZXhlY190aW1lCisgIEZST00gcGdfc3RhdF9wbGFucyBPUkRFUiBCWSB0b3RhbF9leGVjX3Rp bWUgREVTQyBMSU1JVCA1OworLVsgUkVDT1JEIDEgXS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcGxhbiAgICAgICAg ICAgIHwgVXBkYXRlIG9uIHBnYmVuY2hfdGVsbGVycyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICB8ICAgLT4gIFNlcSBTY2FuIG9uIHBnYmVu Y2hfdGVsbGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgfCAgICAgICAgIEZpbHRlcjogKHRpZCA9IDUpCitjYWxscyAgICAgICAgICAgfCAzMDAwCit0 b3RhbF9leGVjX3RpbWUgfCA2NDIuODg4MDkxOTk5OTk5MworLVsgUkVDT1JEIDIgXS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorcGxhbiAgICAgICAgICAgIHwgVXBkYXRlIG9uIHBnYmVuY2hfYnJhbmNoZXMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICB8ICAgLT4g IFNlcSBTY2FuIG9uIHBnYmVuY2hfYnJhbmNoZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgfCAgICAgICAgIEZpbHRlcjogKGJpZCA9IDEpCitjYWxscyAg ICAgICAgICAgfCAxODEzCit0b3RhbF9leGVjX3RpbWUgfCA0NzYuNjQxNTI3MDAwMDAwMDUKKy1b IFJFQ09SRCAzIF0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3BsYW4gICAgICAgICAgICB8IFVwZGF0ZSBvbiBwZ2Jl bmNoX2JyYW5jaGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgfCAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBnYmVuY2hfYnJhbmNoZXNfcGtl eSBvbiBwZ2JlbmNoX2JyYW5jaGVzKworICAgICAgICAgICAgICAgIHwgICAgICAgICBJbmRleCBD b25kOiAoYmlkID0gMSkKK2NhbGxzICAgICAgICAgICB8IDExODcKK3RvdGFsX2V4ZWNfdGltZSB8 IDMyNi4xMjU3NTQ5OTk5OTk5CistWyBSRUNPUkQgNCBdLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwbGFuICAgICAg ICAgICAgfCBVcGRhdGUgb24gcGdiZW5jaF9hY2NvdW50cyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgIHwgICAtPiAgSW5kZXggU2NhbiB1c2lu ZyBwZ2JlbmNoX2FjY291bnRzX3BrZXkgb24gcGdiZW5jaF9hY2NvdW50cysKKyAgICAgICAgICAg ICAgICB8ICAgICAgICAgSW5kZXggQ29uZDogKGFpZCA9IDQ4NzkzKQorY2FsbHMgICAgICAgICAg IHwgMzAwMAordG90YWxfZXhlY190aW1lIHwgMjEuNjY0NjkwMDAwMDAwMDkzCistWyBSRUNPUkQg NSBdLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitwbGFuICAgICAgICAgICAgfCBJbnNlcnQgb24gcGdiZW5jaF9oaXN0 b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgIHwgICAtPiAgUmVzdWx0CitjYWxscyAgICAgICAgICAgfCAzMDAwCit0b3RhbF9leGVjX3Rp bWUgfCA0LjM2NTI1MDk5OTk5OTk1NworCitzZXNzaW9uIDE6CisKK2JlbmNoIyBTRUxFQ1QgcGdf c2xlZXAoMTAwKSwgQ09VTlQoKikgRlJPTSBwZ2JlbmNoX2FjY291bnRzOworCitzZXNzaW9uIDI6 CisKK2JlbmNoPSMgU0VMRUNUIHF1ZXJ5LCBwbGFuIEZST00gcGdfc3RhdF9hY3Rpdml0eQorICBK T0lOIHBnX3N0YXRfcGxhbnMgT04gKHVzZXN5c2lkID0gdXNlcmlkIEFORCBkYXRpZCA9IGRiaWQg QU5EIHF1ZXJ5X2lkID0gcXVlcnlpZCBBTkQgcGxhbl9pZCA9IHBsYW5pZCkKKyAgV0hFUkUgcXVl cnkgTElLRSAnU0VMRUNUIHBnX3NsZWVwJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgcXVl cnkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICBwbGFuCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNFTEVDVCBwZ19zbGVlcCgxMDApLCBDT1VO VCgqKSBGUk9NIHBnYmVuY2hfYWNjb3VudHM7IHwgQWdncmVnYXRlICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgLT4gIFNlcSBTY2FuIG9uIHBnYmVuY2hfYWNjb3VudHMKKygxIHJvdykKKwor PC9zY3JlZW4+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0icGdzdGF0cGxhbnMtYXV0aG9ycyI+ CisgIDx0aXRsZT5BdXRob3JzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIEx1a2FzIEZpdHRsIDxl bWFpbD5sdWthc0BmaXR0bC5jb208L2VtYWlsPi4KKyAgPC9wYXJhPgorIDwvc2VjdDI+CisKKzwv c2VjdDE+Ci0tIAoyLjQ3LjEKCg== --000000000000155516062d5ba1a7 Content-Type: application/octet-stream; name="v4-0001-Allow-using-jumbling-logic-outside-of-query-jumbl.patch" Content-Disposition: attachment; filename="v4-0001-Allow-using-jumbling-logic-outside-of-query-jumbl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6r958lb0 RnJvbSBlNTkwY2QyYmU1NDkyM2FhNjA4ZDBlNTc1ZjI3MmZkZTg0YjdhMTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDMxIERlYyAyMDI0IDE1OjA1OjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2NCAxLzNdIEFs bG93IHVzaW5nIGp1bWJsaW5nIGxvZ2ljIG91dHNpZGUgb2YgcXVlcnkganVtYmxlCiB1bml0IGZp bGUKClRoaXMgY2FuIGJlIHVzZWZ1bCBlaXRoZXIgZm9yIGp1bWJsaW5nIGV4cHJlc3Npb25zIGlu IG90aGVyIGNvbnRleHRzCihlLmcuIHRvIGNhbGN1bGF0ZSBhIHBsYW4ganVtYmxlKSwgb3IgdG8g YWxsb3cgZXh0ZW5zaW9ucyB0byB1c2UKYSBtb2RpZmllZCBqdW1ibGluZyBsb2dpYyBtb3JlIGVh c2lseS4KClRoaXMgaW50ZW50aW9uYWxseSBzdXBwb3J0cyB0aGUgdXNlIGNhc2Ugd2hlcmUgYSBz ZXBhcmF0ZSBqdW1ibGluZyBsb2dpYwpkb2VzIG5vdCBjYXJlIGFib3V0IHJlY29yZGluZyBjb25z dGFudHMsIGFzIHRoZSBxdWVyeSBqdW1ibGUgZG9lcy4KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9x dWVyeWp1bWJsZWZ1bmNzLmMgfCA1OSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oICAgICAgfCAgNiArKysKIDIgZmlsZXMgY2hhbmdl ZCwgNDEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlq dW1ibGVmdW5jcy5jCmluZGV4IGIxMDNhMjgxOTM2Li41NDVkOGVkY2FlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtNTEsMTAgKzUxLDcgQEAgaW50CQkJY29tcHV0ZV9x dWVyeV9pZCA9IENPTVBVVEVfUVVFUllfSURfQVVUTzsKICAqLwogYm9vbAkJcXVlcnlfaWRfZW5h YmxlZCA9IGZhbHNlOwogCi1zdGF0aWMgdm9pZCBBcHBlbmRKdW1ibGUoSnVtYmxlU3RhdGUgKmpz dGF0ZSwKLQkJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppdGVtLCBTaXplIHNpemUpOwogc3Rh dGljIHZvaWQgUmVjb3JkQ29uc3RMb2NhdGlvbihKdW1ibGVTdGF0ZSAqanN0YXRlLCBpbnQgbG9j YXRpb24pOwotc3RhdGljIHZvaWQgX2p1bWJsZU5vZGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9k ZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlQV9Db25zdChKdW1ibGVTdGF0ZSAqanN0YXRl LCBOb2RlICpub2RlKTsKIHN0YXRpYyB2b2lkIF9qdW1ibGVMaXN0KEp1bWJsZVN0YXRlICpqc3Rh dGUsIE5vZGUgKm5vZGUpOwogc3RhdGljIHZvaWQgX2p1bWJsZVZhcmlhYmxlU2V0U3RtdChKdW1i bGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKTsKQEAgLTEwOSwyOCArMTA2LDQyIEBAIENsZWFu UXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbikKIH0K IAogSnVtYmxlU3RhdGUgKgotSnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KQorSW5pdGlhbGl6ZUp1 bWJsZVN0YXRlKGJvb2wgcmVjb3JkX2Nsb2NhdGlvbnMpCiB7Ci0JSnVtYmxlU3RhdGUgKmpzdGF0 ZSA9IE5VTEw7Ci0KLQlBc3NlcnQoSXNRdWVyeUlkRW5hYmxlZCgpKTsKLQotCWpzdGF0ZSA9IChK dW1ibGVTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CisJSnVtYmxlU3RhdGUg KmpzdGF0ZSA9IChKdW1ibGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihKdW1ibGVTdGF0ZSkpOwog CiAJLyogU2V0IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVtYmxpbmcgKi8KIAlqc3RhdGUtPmp1 bWJsZSA9ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhKVU1CTEVfU0laRSk7CiAJanN0YXRlLT5q dW1ibGVfbGVuID0gMDsKLQlqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgPSAzMjsKLQlqc3Rh dGUtPmNsb2NhdGlvbnMgPSAoTG9jYXRpb25MZW4gKikKLQkJcGFsbG9jKGpzdGF0ZS0+Y2xvY2F0 aW9uc19idWZfc2l6ZSAqIHNpemVvZihMb2NhdGlvbkxlbikpOwotCWpzdGF0ZS0+Y2xvY2F0aW9u c19jb3VudCA9IDA7Ci0JanN0YXRlLT5oaWdoZXN0X2V4dGVybl9wYXJhbV9pZCA9IDA7CisKKwlp ZiAocmVjb3JkX2Nsb2NhdGlvbnMpCisJeworCQlqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUg PSAzMjsKKwkJanN0YXRlLT5jbG9jYXRpb25zID0gKExvY2F0aW9uTGVuICopCisJCQlwYWxsb2Mo anN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplICogc2l6ZW9mKExvY2F0aW9uTGVuKSk7CisJfQor CisJcmV0dXJuIGpzdGF0ZTsKK30KKwordWludDY0CitIYXNoSnVtYmxlU3RhdGUoSnVtYmxlU3Rh dGUgKmpzdGF0ZSkKK3sKKwlyZXR1cm4gRGF0dW1HZXRVSW50NjQoaGFzaF9hbnlfZXh0ZW5kZWQo anN0YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCWpzdGF0ZS0+anVtYmxlX2xlbiwKKwkJCQkJCQkJ CQkJMCkpOworfQorCitKdW1ibGVTdGF0ZSAqCitKdW1ibGVRdWVyeShRdWVyeSAqcXVlcnkpCit7 CisJSnVtYmxlU3RhdGUgKmpzdGF0ZSA9IEluaXRpYWxpemVKdW1ibGVTdGF0ZSh0cnVlKTsKKwor CUFzc2VydChJc1F1ZXJ5SWRFbmFibGVkKCkpOwogCiAJLyogQ29tcHV0ZSBxdWVyeSBJRCBhbmQg bWFyayB0aGUgUXVlcnkgbm9kZSB3aXRoIGl0ICovCi0JX2p1bWJsZU5vZGUoanN0YXRlLCAoTm9k ZSAqKSBxdWVyeSk7Ci0JcXVlcnktPnF1ZXJ5SWQgPSBEYXR1bUdldFVJbnQ2NChoYXNoX2FueV9l eHRlbmRlZChqc3RhdGUtPmp1bWJsZSwKLQkJCQkJCQkJCQkJCQkgIGpzdGF0ZS0+anVtYmxlX2xl biwKLQkJCQkJCQkJCQkJCQkgIDApKTsKKwlKdW1ibGVOb2RlKGpzdGF0ZSwgKE5vZGUgKikgcXVl cnkpOworCXF1ZXJ5LT5xdWVyeUlkID0gSGFzaEp1bWJsZVN0YXRlKGpzdGF0ZSk7CiAKIAkvKgog CSAqIElmIHdlIGFyZSB1bmx1Y2t5IGVub3VnaCB0byBnZXQgYSBoYXNoIG9mIHplcm8sIHVzZSAx IGluc3RlYWQgZm9yCkBAIC0xNjQsNyArMTc1LDcgQEAgRW5hYmxlUXVlcnlJZCh2b2lkKQogICog QXBwZW5kSnVtYmxlOiBBcHBlbmQgYSB2YWx1ZSB0aGF0IGlzIHN1YnN0YW50aXZlIGluIGEgZ2l2 ZW4gcXVlcnkgdG8KICAqIHRoZSBjdXJyZW50IGp1bWJsZS4KICAqLwotc3RhdGljIHZvaWQKK3Zv aWQKIEFwcGVuZEp1bWJsZShKdW1ibGVTdGF0ZSAqanN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFy ICppdGVtLCBTaXplIHNpemUpCiB7CiAJdW5zaWduZWQgY2hhciAqanVtYmxlID0ganN0YXRlLT5q dW1ibGU7CkBAIC0yMDUsNyArMjE2LDcgQEAgc3RhdGljIHZvaWQKIFJlY29yZENvbnN0TG9jYXRp b24oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgaW50IGxvY2F0aW9uKQogewogCS8qIC0xIGluZGljYXRl cyB1bmtub3duIG9yIHVuZGVmaW5lZCBsb2NhdGlvbiAqLwotCWlmIChsb2NhdGlvbiA+PSAwKQor CWlmIChsb2NhdGlvbiA+PSAwICYmIGpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSA+IDApCiAJ ewogCQkvKiBlbmxhcmdlIGFycmF5IGlmIG5lZWRlZCAqLwogCQlpZiAoanN0YXRlLT5jbG9jYXRp b25zX2NvdW50ID49IGpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSkKQEAgLTIyNCw3ICsyMzUs NyBAQCBSZWNvcmRDb25zdExvY2F0aW9uKEp1bWJsZVN0YXRlICpqc3RhdGUsIGludCBsb2NhdGlv bikKIH0KIAogI2RlZmluZSBKVU1CTEVfTk9ERShpdGVtKSBcCi0JX2p1bWJsZU5vZGUoanN0YXRl LCAoTm9kZSAqKSBleHByLT5pdGVtKQorCUp1bWJsZU5vZGUoanN0YXRlLCAoTm9kZSAqKSBleHBy LT5pdGVtKQogI2RlZmluZSBKVU1CTEVfTE9DQVRJT04obG9jYXRpb24pIFwKIAlSZWNvcmRDb25z dExvY2F0aW9uKGpzdGF0ZSwgZXhwci0+bG9jYXRpb24pCiAjZGVmaW5lIEpVTUJMRV9GSUVMRChp dGVtKSBcCkBAIC0yMzksOCArMjUwLDggQEAgZG8geyBcCiAKICNpbmNsdWRlICJxdWVyeWp1bWJs ZWZ1bmNzLmZ1bmNzLmMiCiAKLXN0YXRpYyB2b2lkCi1fanVtYmxlTm9kZShKdW1ibGVTdGF0ZSAq anN0YXRlLCBOb2RlICpub2RlKQordm9pZAorSnVtYmxlTm9kZShKdW1ibGVTdGF0ZSAqanN0YXRl LCBOb2RlICpub2RlKQogewogCU5vZGUJICAgKmV4cHIgPSBub2RlOwogCkBAIC0zMDUsNyArMzE2 LDcgQEAgX2p1bWJsZUxpc3QoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSkKIAl7CiAJ CWNhc2UgVF9MaXN0OgogCQkJZm9yZWFjaChsLCBleHByKQotCQkJCV9qdW1ibGVOb2RlKGpzdGF0 ZSwgbGZpcnN0KGwpKTsKKwkJCQlKdW1ibGVOb2RlKGpzdGF0ZSwgbGZpcnN0KGwpKTsKIAkJCWJy ZWFrOwogCQljYXNlIFRfSW50TGlzdDoKIAkJCWZvcmVhY2gobCwgZXhwcikKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVy eWp1bWJsZS5oCmluZGV4IDUwZWI5NTY2NTg3Li41YWZhNmYzNjA1ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVy eWp1bWJsZS5oCkBAIC04Myw0ICs4MywxMCBAQCBJc1F1ZXJ5SWRFbmFibGVkKHZvaWQpCiAJcmV0 dXJuIHF1ZXJ5X2lkX2VuYWJsZWQ7CiB9CiAKKy8qIEZ1bmN0aW9ucyBpbnRlbmRlZCBmb3Igb3Ro ZXIgdXNlcnMgb2YganVtYmxpbmcgKGUuZy4gcGxhbiBqdW1ibGluZykgKi8KK2V4dGVybiBKdW1i bGVTdGF0ZSAqSW5pdGlhbGl6ZUp1bWJsZVN0YXRlKGJvb2wgcmVjb3JkX2Nsb2NhdGlvbnMpOwor ZXh0ZXJuIHZvaWQgQXBwZW5kSnVtYmxlKEp1bWJsZVN0YXRlICpqc3RhdGUsIGNvbnN0IHVuc2ln bmVkIGNoYXIgKml0ZW0sIFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCBKdW1ibGVOb2RlKEp1bWJs ZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpOworZXh0ZXJuIHVpbnQ2NCBIYXNoSnVtYmxlU3Rh dGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSk7CisKICNlbmRpZgkJCQkJCQkvKiBRVUVSWUpVTUJMRV9I ICovCi0tIAoyLjQ3LjEKCg== --000000000000155516062d5ba1a7--