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 1tbGTa-009JwM-Ju for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 09:59:47 +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 1tbGTY-00DCKo-BD for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 09:59:44 +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 1tbGTX-00DCKe-90 for pgsql-hackers@lists.postgresql.org; Fri, 24 Jan 2025 09:59:43 +0000 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tbGTT-001F6l-05 for pgsql-hackers@lists.postgresql.org; Fri, 24 Jan 2025 09:59:41 +0000 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-53ff1f7caaeso1972320e87.0 for ; Fri, 24 Jan 2025 01:59:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1737712778; x=1738317578; 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=4YmCXM8Wdndg4mmoAcqy3iib/3hXBUA95tinV8W4MUw=; b=Ad/ylkFoI6vBtwWCcXi3gwT1E+vNKngQz9FOGQCeFjvoTbJbSt37NSPXKk28KOq10S NGt5lXFAr2HPQgE0DSbCnMfnH1pp51VGF8X32XZG/BacwZSapnULINPGSdM+pxjIgcc3 KDbh4IJOJOIvmkxQtaIQ27B7+3Xa40JiJtK2E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737712778; x=1738317578; 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=4YmCXM8Wdndg4mmoAcqy3iib/3hXBUA95tinV8W4MUw=; b=HtEu4IcpQqt41XBp11FH4FSzBvqWVl+x2VYRLIMQ27y4uLUL1+qnax8T+ohT5Qx7gy 8u6ci8SAAgVES+81rZQOCE2feTepbcxd418r/U9sIPpDGcGsBtf8STWfqEG6+gs7aQG9 tJ9N0IEwKP/MA6uJrc60CHLRDHJ9+fk1na1GRVEUAnq0rwNiNv90NBQT8476z3wKeNFj yy4PvLqUhe6/WjlCQxhmnL/pxtXUGhyb7Z3E3VsKc2/cD/qgJq6MrFidGhRnMDRMGN6Z JUiak7e/i0IcEWhiehr8j4MJ54QCYYbl5ihdhSg55SPIH/n0gmgprPf39WluM+Y/qlc+ xrkg== X-Gm-Message-State: AOJu0YxM/lLfOSbRS6P4FRTCSFuujU3UXoO5A2ywVw2wYm6i7JOvOtZX ry3+XORUJyersVNv7zX+MjgnDzy+DOjnulzzeIm7fSJ6ULkN1OufW2uGucxZIK0bemZg4uPBrb/ ok/STTUOW6kpWuHRPZf4+YORTXlY/C9URUpHm X-Gm-Gg: ASbGncttOWSHfPEmd34W/SkaBx+qNnRZSingvqryKaaoLuAhByZVfKgjXZ3OQ2RDCn0 MSoXVEQp2nRgi4IT1fGwWnHDuXT5uffo3FrDdZ3WuYaJ1AzuJVpfCi/pcHlKKWmA= X-Google-Smtp-Source: AGHT+IFxqv/+LmnnE0cewvsErw6MCPFJ2Xl4c/sV8avrsn+QqqwsBB/cIbbDwkPFlztgTqK3cY+Lk51Z7aWMume5P/k= X-Received: by 2002:ac2:484e:0:b0:540:1fcd:1d9a with SMTP id 2adb3069b0e04-5439c286c6dmr9297768e87.48.1737712777523; Fri, 24 Jan 2025 01:59:37 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Lukas Fittl Date: Fri, 24 Jan 2025 01:59:00 -0800 X-Gm-Features: AWEUYZlAy7_VQBw3SO71PEGez6GmRYzQQW1xZzVjACvLeVF__9vv0a8MigJlhQI Message-ID: Subject: Re: [PATCH] Optionally record Plan IDs to track plan changes for a query To: Sami Imseih , Michael Paquier Cc: PostgreSQL Hackers , Marko M Content-Type: multipart/mixed; boundary="000000000000d3aec6062c70c852" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d3aec6062c70c852 Content-Type: multipart/alternative; boundary="000000000000d3aec4062c70c850" --000000000000d3aec4062c70c850 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the reviews! Attached an updated v2 patch set, notes inline below. On Tue, Jan 21, 2025 at 4:47=E2=80=AFPM Michael Paquier wrote: > May I suggest the addition of a code > path outside of your main proposal to test this API? For example > injection_stats.c with a new SQL function to reset everything. > Good idea - added an example use of this to injection_stats.c in the attached 0002. Question time: pgstat_drop_entries_of_kind() is called once in 0004, > which does a second sequential scan of pgStatLocal.shared_hash. > That's not efficient, making me question what's the reason to think > why pgstat_drop_entries_of_kind() is the best approach to use. I like > the idea of pgstat_drop_entries_of_kind(), less how it's applied in > the context of the main patch. > My motivation for doing two scans here, one in pgstat_drop_entries_of_kind and one in pgstat_gc_plan_memory (both called from the reset function) was that the first time through we hold an exclusive lock on pgStatLocal.shared_hash, vs the second time (when we free plan texts) we hold a share lock. Maybe that doesn't matter, since "dsa_free" is fast anyway, and we can just do this all in one go whilst holding an exclusive lock? Overall, I also do wonder if it wouldn't be better to have a callback mechanism in the shared memory stats, so stats plugins can do extra work when an entry gets dropped (like freeing the DSA memory for the plan text), vs having to add all this extra logic to do it. On Thu, Jan 23, 2025 at 5:25=E2=80=AFPM Sami Imseih w= rote: > Thanks for starting this thread. This is an important feature. > > I am still reviewing, but wanted to share some initial comments. > Thanks for taking the time! I had started on a v2 patch based on Michael's note before I saw your email and experiment, so apologies for sending this in the middle of your review :) =3D=3D pg_stat_plans extension (0004) > > 1. pg_stat_plans_1_0 should not call pgstat_fetch_entry.l > This is not needed since we already have the entry with a shared lock > and it could lead to an assertion error when pgstat_fetch_entry > may conditionally call dshash_find. dshash_find asserts that the lock > is not already held. Calling pgstat_get_entry_data should be > enough here. > Fixed. > 2. a "toplevel" bool field is missing in pg_stat_plans to indicate the > plan is for a nested query. > Good point - added. 3. I think we should add cumulative planning_time. This > Probably should be controlled with a separate GUC as well. > Hmm. Don't we already have that in pg_stat_statements? Though, in practice I see that turned off most of the time (due to its overhead?), not sure if we could do better if it this was done here instead= ? 4. For deallocation, I wonder if it makes more sense to zap the > plans with the lowest total execution time rather than calls; or make > this configurable. In fact, I think choosing the eviction strategy > should be done in pg_stat_statements as well ( but that belongs > in a separate discussion ). The idea is to give more priority to > plans that have the most overall database time. > Yeah, that's a good point, its likely people would be most interested in slow plans, vs those that were called a lot. Happy to adjust it that way - I don't think we need to make it configurable to be honest. 5. What are your thoughts about controlling the memory by > size rather than .max and .max_size ? if a typical plan > is 2KB, a user can fit 10k plans with 20MB. A typical > user can probably allocate much more memory for this > purpose. > Interesting idea! I'd be curious to get more feedback on the overall approach here before digging into this, but I like this as it'd be more intuitive from an end-user perspective. 6. I do like the idea of showing an in-flight plan. > This is so useful for a rare plan, especially on the > first capture of the plan ( calls =3D 0), and the planId > can be joined with pg_stat_activity to get the query > text. > Yes indeed, I think it would be a miss if we didn't allow looking at in-flight plan IDs. For the record, I can't take credit for the idea, I think I got this either from your earlier plan ID patch, or from talking with you at PGConf NYC last year. =3D=3D core plan id computation (0003) > > 1. compute_plan_id should do exactly what compute_query_id > does. It should have an "auto" as the default which automatically > computes a plan id when pg_stat_plans is enabled. > Yep, it does seem better to be consistent here. I added "auto" in v2 and made it the default. > Mixed feelings about the choices of JumblePlanNode() in 0003 based on > > its complexity as implemented. When it comes to such things, we > > should keep the custom node functions short, applying node_attr > > instead to the elements of the nodes so as the assumptions behind the > > jumbling are documented within the structure definitions in the > > headers, not the jumbling code itself. > > +1 > > we should be able to control which node is considered for plan_id > computation using a node attribute such as plan_jumble_ignore. > I played around with this idea by building on top of your proposal > and attached my experiment code for this. The tricky part will be > finalizing > which nodes and node fields to use for plan computation. > Agreed, its better to do this via the node_attr infrastructure. I've done this in the attached before I saw your experiment code, so it may be worth comparing the approaches. Generally, I tried to stay closer to the idea of "only jumble what EXPLAIN (COSTS OFF) would show", vs jumbling most plan fields by default. That does mean we have a lot of extra "node_attr(query_jumble_ignore)" tags in the plan node structs. We could potentially invent a new way of only jumbling what's marked vs the current jumbling all by default + ignoring some fields, but not sure if that's worth it. 3. We may want to combine all the jumbling code into > a single jumble.c since the query and plan jumble will > share a lot of the same code, i.e. JumbleState. > _JumbleNode, etc. > Agreed, that's what I ended up doing in v2. I think we can state that plan jumbling is a super set of query jumbling, so it seems best to not have two copies of very similar jumbling conds/funcs. I retained the "query" prefix for now to not generate a big diff, but we should maybe consider dropping that in both the source file names and the node attributes? Thanks, Lukas --=20 Lukas Fittl --000000000000d3aec4062c70c850 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the reviews! Attached an = updated v2 patch set, notes inline below.

On Tue, Jan 21= , 2025 at 4:47=E2=80=AFPM Michael Paquier <michael@paquier.xyz> wrote:
May I suggest the addition o= f a code
path outside of your main proposal to test this API?=C2=A0 For example
injection_stats.c with a new SQL function to reset everything.

Good idea - added an example use of this to injecti= on_stats.c in the attached 0002.

Question time: pgstat_drop_entries_of_kind() is called once in 0004,
which does a second sequential scan of pgStatLocal.shared_hash.
That's not efficient, making me question what's the reason to think=
why pgstat_drop_entries_of_kind() is the best approach to use.=C2=A0 I like=
the idea of pgstat_drop_entries_of_kind(), less how it's applied in
the context of the main patch.

My motiv= ation for doing two scans here, one in pgstat_drop_entries_of_kind and one = in pgstat_gc_plan_memory (both called from the reset function) was that the= first time through we hold an exclusive lock on pgStatLocal.shared_hash, v= s the second time (when we free plan texts) we hold a share lock.

Maybe that doesn't matter, since "dsa_free" i= s fast anyway, and we can just do this all in one go whilst holding an excl= usive lock?

Overall, I also do wonder if it wouldn= 't be better to have a callback mechanism in the shared memory stats, s= o stats plugins can do extra work when an entry gets dropped (like freeing = the DSA memory for the plan text), vs having to add all this extra logic to= do it.

On Thu, Jan 23, 2025 at 5:25=E2=80=AFPM S= ami Imseih <sam= imseih@gmail.com> wrote:
Thanks for starting this thread. This is an important featu= re.

I am still reviewing, but wanted to share some initial comments.

Thanks for taking the time! I had started on a v2= patch based on Michael's note before I saw your email and experiment, = so apologies for sending this in the middle of your review :)

=3D=3D pg_stat_plans extension (0004)

1. pg_stat_plans_1_0 should not call pgstat_fetch_entry.l
This is not needed since we already have the entry with a shared lock
and it could lead to an assertion error when pgstat_fetch_entry
may conditionally call dshash_find. dshash_find asserts that the lock
is not already held. Calling pgstat_get_entry_data should be
enough here.

Fixed.
=C2= =A0
2. a "toplevel" bool field is missing in pg_stat_plans to indicat= e the
plan is for a nested query.

Good point = - added.

3. I think we should add cumulative planning_time. This
Probably should be controlled with a separate GUC as well.
=

Hmm. Don't we already have that in pg_stat_statemen= ts?

Though, in practice I see that turned off most= of the time (due to its overhead?), not sure if we could do better if it t= his was done here instead?

4. For deallocation, I wonder if it makes more sense to zap the
plans with the lowest total execution time rather than calls; or make
this configurable. In fact, I think choosing the eviction strategy
should be done in pg_stat_statements as well ( but that belongs
in a separate discussion ). The idea is to give more priority to
plans that have the most overall database time.

Yeah, that's a good point, its likely people would be most int= erested in slow plans, vs those that were called a lot.

Happy to adjust it that way - I don't think we need to make it co= nfigurable to be honest.

5. What are your thoughts about controlling the memory by
size rather than .max and .max_size ? if a typical plan
is 2KB, a user can fit 10k plans with 20MB. A typical
user can probably allocate much more memory for this
purpose.

Interesting idea! I'd be c= urious to get more feedback on the overall approach here before digging int= o this, but I like this as it'd be more intuitive from an end-user pers= pective.

6. I do like the idea of showing an in-flight plan.
This is so useful for a rare plan, especially on the
first capture of the plan ( calls =3D 0), and the planId
can be joined with pg_stat_activity to get the query
text.

Yes indeed, I think it would be a= miss if we didn't allow looking at in-flight plan IDs.
<= br>
For the record, I can't take credit for the idea, I think= I got this either from your earlier plan ID patch, or from talking with yo= u at PGConf NYC last year.

=3D=3D core plan id computation (0003)

1. compute_plan_id should do exactly what compute_query_id
does. It should have an "auto" as the default which automatically=
computes a plan id when pg_stat_plans is enabled.

=
Yep, it does seem better to be consistent here. I added "au= to" in v2 and made it the default.

> Mixed feelings about the choices of JumblePlanNode() in 0003 based on<= br> > its complexity as implemented. When it comes to such things, we
> should keep the custom node functions short, applying node_attr
> instead to the elements of the nodes so as the assumptions behind the<= br> > jumbling are documented within the structure definitions in the
> headers, not the jumbling code itself.

+1

we should be able to control which node is considered for plan_id
computation using a node attribute such as plan_jumble_ignore.
I played around with this idea by building on top of your proposal
and attached my experiment code for this. The tricky part will be finalizin= g
which nodes and node fields to use for plan computation.

Agreed, its better to do this via the node_attr infrastru= cture. I've done this in the attached before I saw your experiment code= , so it may be worth comparing the approaches.

Generally, I tried to stay closer to the idea of "only jumble what EX= PLAIN (COSTS OFF) would show", vs jumbling most plan fields by default= .

That does mean we have a lot of extra "node= _attr(query_jumble_ignore)" tags in the plan node structs. We could po= tentially invent a new way of only jumbling what's marked vs the curren= t jumbling all by default + ignoring some fields, but not sure if that'= s worth it.

3. We may want to combine all the jumbling code into
a single jumble.c since the query and plan jumble will
share a lot of the same code, i.e. JumbleState.
_JumbleNode, etc.

Agreed, that's wh= at I ended up doing in v2. I think we can state that plan jumbling is a sup= er set of query jumbling, so it seems best to not have two copies of very s= imilar jumbling conds/funcs.

I retained the &q= uot;query" prefix for now to not generate a big diff, but we should ma= ybe consider dropping that in both the source file names and the node attri= butes?

Thanks,
Lukas

--
Lukas Fittl
--000000000000d3aec4062c70c850-- --000000000000d3aec6062c70c852 Content-Type: application/x-patch; name="v2-0003-Optionally-record-a-plan_id-in-PlannedStmt-to-ide.patch" Content-Disposition: attachment; filename="v2-0003-Optionally-record-a-plan_id-in-PlannedStmt-to-ide.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6al556n2 RnJvbSBiMjU4YTBiOTRkNTg4MWY1ZmFhMWNkOWJhYWU2ZmViMTg0YWQ3YTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDMxIERlYyAyMDI0IDE1OjE2OjEwIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAzLzRdIE9w dGlvbmFsbHkgcmVjb3JkIGEgcGxhbl9pZCBpbiBQbGFubmVkU3RtdCB0byBpZGVudGlmeQogcGxh biBzaGFwZQoKV2hlbiBlbmFibGVkIHZpYSB0aGUgbmV3IGNvbXB1dGVfcGxhbl9pZCBHVUMgKGRl ZmF1bHQgb2ZmKSwgdGhpcyB1dGlsaXplcwp0aGUgZXhpc3RpbmcgdHJlZXdhbGsgaW4gc2V0cmVm cy5jIGFmdGVyIHBsYW5uaW5nIHRvIGNhbGN1bGF0ZSBhIGhhc2gKKHRoZSAicGxhbl9pZCIsIG9y IHBsYW4gaWRlbnRpZmllcikgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeQp3aGljaCBwbGFu IHdhcyBjaG9zZW4uCgpUaGUgcGxhbl9pZCBnZW5lcmFsbHkgaW50ZW5kcyB0byBiZSB0aGUgc2Ft ZSBpZiBhIGdpdmVuIEVYUExBSU4gKHdpdGhvdXQKQU5BTFlaRSkgb3V0cHV0IGlzIHRoZSBzYW1l LiBUaGUgcGxhbl9pZCBpbmNsdWRlcyBib3RoIHRoZSB0b3AtbGV2ZWwgcGxhbgphcyB3ZWxsIGFz IGFsbCBzdWJwbGFucy4gRXhlY3V0aW9uIHN0YXRpc3RpY3MgYXJlIGV4Y2x1ZGVkLgoKSWYgZW5h YmxlZCwgdGhlIHBsYW5faWQgaXMgc2hvd24gZm9yIGN1cnJlbnRseSBydW5uaW5nIHF1ZXJpZXMg aW4KcGdfc3RhdF9hY3Rpdml0eSwgYXMgd2VsbCBhcyByZWNvcmRlZCBpbiBFWFBMQUlOIGFuZCBh dXRvX2V4cGxhaW4gb3V0cHV0LgoKT3RoZXIgaW4gY29yZSB1c2VycyBvciBleHRlbnNpb25zIGNh biB1c2UgdGhpcyBmYWNpbGl0eSB0byBzaG93IG9yCmFjY3VtdWxhdGUgc3RhdGlzdGljcyBhYm91 dCB0aGUgcGxhbnMgdXNlZCBieSBxdWVyaWVzLCB0byBoZWxwIGlkZW50aWZ5CnBsYW4gcmVncmVz c2lvbnMsIG9yIGRyaXZlIHBsYW4gbWFuYWdlbWVudCBkZWNpc2lvbnMuCgpOb3RlIHRoYXQgdGhp cyBjb21taXQgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBpbmNsdWRlIGEgZmFjaWxpdHkgdG8gbWFw CmEgZ2l2ZW4gcGxhbl9pZCB0byB0aGUgRVhQTEFJTiB0ZXh0IG91dHB1dCAtIGl0IGlzIGEgYXNz dW1lZCB0aGF0IHVzZXJzCmNhbiB1dGlsaXplIHRoZSBhdXRvX2V4cGxhaW4gZXh0ZW5zaW9uIHRv IGVzdGFibGlzaCB0aGlzIG1hcHBpbmcgYXMKbmVlZGVkLCBvciBleHRlbnNpb25zIGNhbiByZWNv cmQgdGhpcyB2aWEgdGhlIGV4aXN0aW5nIHBsYW5uZXIgaG9vay4KLS0tCiBkb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysKIGRvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxNiArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2dlbl9u b2RlX3N1cHBvcnQucGwgICAgICAgICB8ICA1MCArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5 anVtYmxlZnVuY3MuYyAgICAgICAgICB8ICA3OCArKystCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgMTggKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1 bmNoX2JhY2tlbmQuYyAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFj a2VuZF9zdGF0dXMuYyAgIHwgIDcwICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1 bmNzLmMgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyAgICAgICAgICAgfCAgMjggKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAg ICAgICAgICAgfCAzOTggKysrKysrKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5 anVtYmxlLmggICAgICAgICAgICAgICB8ICAzNCArLQogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2Vu ZF9zdGF0dXMuaCAgICAgICAgICAgIHwgICA1ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZXhwbGFpbi5vdXQgICAgICAgICB8ICAxMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCAgICAgICAgICAgfCAgIDkgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsICAgICAgICAgICAgICB8ICAgNCArCiAyNSBmaWxlcyBjaGFuZ2VkLCA2MzUgaW5zZXJ0aW9u cygrKSwgMTg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBhNzgyZjEwOTk4Li44NWExZTBk OGQ0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCkBAIC04NDA2LDYgKzg0MDYsNDAgQEAgQ09QWSBwb3N0Z3Jlc19sb2cg RlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMt Y29tcHV0ZS1wbGFuLWlkIiB4cmVmbGFiZWw9ImNvbXB1dGVfcGxhbl9pZCI+CisgICAgICA8dGVy bT48dmFybmFtZT5jb21wdXRlX3BsYW5faWQ8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikK KyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+Y29tcHV0ZV9wbGFu X2lkPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICBFbmFibGVzIGluLWNvcmUgY29tcHV0YXRpb24gb2YgYSBwbGFuIGlkZW50aWZp ZXIuCisgICAgICAgIFBsYW4gaWRlbnRpZmllcnMgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgPGxp bmsKKyAgICAgICAgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWFjdGl2aXR5LXZpZXciPjxz dHJ1Y3RuYW1lPnBnX3N0YXRfYWN0aXZpdHk8L3N0cnVjdG5hbWU+PC9saW5rPgorICAgICAgICB2 aWV3IG9yIHVzaW5nIDxjb21tYW5kPkVYUExBSU48L2NvbW1hbmQ+LgorICAgICAgICBOb3RlIHRo YXQgYW4gZXh0ZXJuYWwgbW9kdWxlIGNhbiBhbHRlcm5hdGl2ZWx5IGJlIHVzZWQgaWYgdGhlCisg ICAgICAgIGluLWNvcmUgcGxhbiBpZGVudGlmaWVyIGNvbXB1dGF0aW9uIG1ldGhvZCBpcyBub3Qg YWNjZXB0YWJsZS4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCBpbi1jb3JlIGNvbXB1dGF0aW9uIG11 c3QgYmUgYWx3YXlzIGRpc2FibGVkLgorICAgICAgICBWYWxpZCB2YWx1ZXMgYXJlIDxsaXRlcmFs Pm9mZjwvbGl0ZXJhbD4gKGFsd2F5cyBkaXNhYmxlZCksCisgICAgICAgIDxsaXRlcmFsPm9uPC9s aXRlcmFsPiAoYWx3YXlzIGVuYWJsZWQpLCA8bGl0ZXJhbD5hdXRvPC9saXRlcmFsPiwKKyAgICAg ICAgd2hpY2ggbGV0cyBtb2R1bGVzIHRoYXQgdXRpbGl6ZSBwbGFuIGlkZW50aWZpZXJzIGVuYWJs ZQorICAgICAgICBpdCBhdXRvbWF0aWNhbGx5LCBhbmQgPGxpdGVyYWw+cmVncmVzczwvbGl0ZXJh bD4gd2hpY2gKKyAgICAgICAgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyA8bGl0ZXJhbD5vbjwvbGl0 ZXJhbD4sIGV4Y2VwdCB0aGF0IHRoZQorICAgICAgICBxdWVyeSBpZGVudGlmaWVyIGlzIG5vdCBz aG93biBpbiB0aGUgPGxpdGVyYWw+RVhQTEFJTjwvbGl0ZXJhbD4gb3V0cHV0CisgICAgICAgIGlu IG9yZGVyIHRvIGZhY2lsaXRhdGUgYXV0b21hdGVkIHJlZ3Jlc3Npb24gdGVzdGluZy4KKyAgICAg ICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxub3RlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRvIGVuc3VyZSB0aGF0 IG9ubHkgb25lIHBsYW4gaWRlbnRpZmllciBpcyBjYWxjdWxhdGVkIGFuZAorICAgICAgICAgZGlz cGxheWVkLCBleHRlbnNpb25zIHRoYXQgY2FsY3VsYXRlIHBsYW4gaWRlbnRpZmllcnMgc2hvdWxk CisgICAgICAgICB0aHJvdyBhbiBlcnJvciBpZiBhIHBsYW4gaWRlbnRpZmllciBoYXMgYWxyZWFk eSBiZWVuIGNvbXB1dGVkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9ub3RlPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBp ZD0iZ3VjLWxvZy1zdGF0ZW1lbnQtc3RhdHMiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+bG9nX3N0 YXRlbWVudF9zdGF0czwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGlu ZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGU1ODg4ZmFlMmIuLmEyNzY4MDcwNTIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbApAQCAtOTcyLDYgKzk3MiwyMiBAQCBwb3N0Z3JlcyAgIDI3MDkzICAw LjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6 IHNlcgogICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBsYW5faWQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJ ZGVudGlmaWVyIG9mIHRoaXMgYmFja2VuZCdzIG1vc3QgcmVjZW50IHF1ZXJ5IHBsYW4uIElmCisg ICAgICAgPHN0cnVjdGZpZWxkPnN0YXRlPC9zdHJ1Y3RmaWVsZD4gaXMgPGxpdGVyYWw+YWN0aXZl PC9saXRlcmFsPiB0aGlzCisgICAgICAgZmllbGQgc2hvd3MgdGhlIGlkZW50aWZpZXIgb2YgdGhl IGN1cnJlbnRseSBleGVjdXRpbmcgcXVlcnkgcGxhbi4gSW4KKyAgICAgICBhbGwgb3RoZXIgc3Rh dGVzLCBpdCBzaG93cyB0aGUgaWRlbnRpZmllciBvZiBsYXN0IHF1ZXJ5IHBsYW4gdGhhdAorICAg ICAgIHdhcyBleGVjdXRlZC4gIFBsYW4gaWRlbnRpZmllcnMgYXJlIG5vdCBjb21wdXRlZCBieSBk ZWZhdWx0IHNvIHRoaXMKKyAgICAgICBmaWVsZCB3aWxsIGJlIG51bGwgdW5sZXNzIDx4cmVmIGxp bmtlbmQ9Imd1Yy1jb21wdXRlLXBsYW4taWQiLz4KKyAgICAgICBwYXJhbWV0ZXIgaXMgZW5hYmxl ZCBvciBhIHRoaXJkLXBhcnR5IG1vZHVsZSB0aGF0IGNvbXB1dGVzIHBsYW4KKyAgICAgICBpZGVu dGlmaWVycyBpcyBjb25maWd1cmVkLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5xdWVy eTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKaW5kZXggNDY4NjhiZjdlOC4uYTQ5ZWZjNjMzMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbApAQCAtODg1LDYgKzg4NSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRf YWN0aXZpdHkgQVMKICAgICAgICAgICAgIFMuYmFja2VuZF94aWQsCiAgICAgICAgICAgICBzLmJh Y2tlbmRfeG1pbiwKICAgICAgICAgICAgIFMucXVlcnlfaWQsCisgICAgICAgICAgICBTLnBsYW5f aWQsCiAgICAgICAgICAgICBTLnF1ZXJ5LAogICAgICAgICAgICAgUy5iYWNrZW5kX3R5cGUKICAg ICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEwpIEFTIFMKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwppbmRleCBjMjRlNjZmODJlLi4zMWExNzYxZjUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBA IC05NjYsNiArOTY2LDIyIEBAIEV4cGxhaW5QcmludFBsYW4oRXhwbGFpblN0YXRlICplcywgUXVl cnlEZXNjICpxdWVyeURlc2MpCiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlF1ZXJ5IElkZW50 aWZpZXIiLCBOVUxMLCAoaW50NjQpCiAJCQkJCQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+ cXVlcnlJZCwgZXMpOwogCX0KKworCS8qCisJICogQ09NUFVURV9QTEFOX0lEX1JFR1JFU1MgbWVh bnMgQ09NUFVURV9QTEFOX0lEX1lFUywgYnV0IHdlIGRvbid0IHNob3cKKwkgKiB0aGUgcXVlcnlp ZCBpbiBhbnkgb2YgdGhlIEVYUExBSU4gcGxhbnMgdG8ga2VlcCBzdGFibGUgdGhlIHJlc3VsdHMK KwkgKiBnZW5lcmF0ZWQgYnkgcmVncmVzc2lvbiB0ZXN0IHN1aXRlcy4KKwkgKi8KKwlpZiAoZXMt PnZlcmJvc2UgJiYgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cGxhbklkICE9IFVJTlQ2NENPTlNU KDApICYmCisJCWNvbXB1dGVfcGxhbl9pZCAhPSBDT01QVVRFX1BMQU5fSURfUkVHUkVTUykKKwl7 CisJCS8qCisJCSAqIE91dHB1dCB0aGUgcXVlcnlpZCBhcyBhbiBpbnQ2NCByYXRoZXIgdGhhbiBh IHVpbnQ2NCBzbyB3ZSBtYXRjaAorCQkgKiB3aGF0IHdvdWxkIGJlIHNlZW4gaW4gdGhlIEJJR0lO VCBwZ19zdGF0X2FjdGl2aXR5LnBsYW5faWQgY29sdW1uLgorCQkgKi8KKwkJRXhwbGFpblByb3Bl cnR5SW50ZWdlcigiUGxhbiBJZGVudGlmaWVyIiwgTlVMTCwgKGludDY0KQorCQkJCQkJCSAgIHF1 ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnBsYW5JZCwgZXMpOworCX0KIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCmluZGV4IGZiOGRiYTNhYjIuLjBiMzM0ZmEyYzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYwpAQCAtMTIwLDEzICsxMjAsMTUgQEAgRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAkvKgogCSAqIEluIHNvbWUgY2FzZXMgKGUuZy4g YW4gRVhFQ1VURSBzdGF0ZW1lbnQgb3IgYW4gZXhlY3V0ZSBtZXNzYWdlIHdpdGggdGhlCi0JICog ZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wpIHRoZSBxdWVyeV9pZCB3b24ndCBiZSByZXBvcnRlZCwg c28gZG8gaXQgbm93LgorCSAqIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sKSB0aGUgcXVlcnlfaWQg YW5kIHBsYW5faWQgd29uJ3QgYmUgcmVwb3J0ZWQsIHNvCisJICogZG8gaXQgbm93LgogCSAqCi0J ICogTm90ZSB0aGF0IGl0J3MgaGFybWxlc3MgdG8gcmVwb3J0IHRoZSBxdWVyeV9pZCBtdWx0aXBs ZSB0aW1lcywgYXMgdGhlCi0JICogY2FsbCB3aWxsIGJlIGlnbm9yZWQgaWYgdGhlIHRvcCBsZXZl bCBxdWVyeV9pZCBoYXMgYWxyZWFkeSBiZWVuCi0JICogcmVwb3J0ZWQuCisJICogTm90ZSB0aGF0 IGl0J3MgaGFybWxlc3MgdG8gcmVwb3J0IHRoZSBpZGVudGlmaWVycyBtdWx0aXBsZSB0aW1lcywg YXMKKwkgKiB0aGUgY2FsbCB3aWxsIGJlIGlnbm9yZWQgaWYgdGhlIHRvcCBsZXZlbCBxdWVyeV9p ZCAvIHBsYW5faWQgaGFzCisJICogYWxyZWFkeSBiZWVuIHJlcG9ydGVkLgogCSAqLwogCXBnc3Rh dF9yZXBvcnRfcXVlcnlfaWQocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2Up OworCXBnc3RhdF9yZXBvcnRfcGxhbl9pZChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5wbGFuSWQs IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5SWQsIGZhbHNlKTsKIAogCWlmIChFeGVjdXRv clN0YXJ0X2hvb2spCiAJCSgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3Mp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBmZjRkOWRkMWJiLi4yMGViYzIz YjAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTc0LDYgKzE3NCw3IEBA IEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBsYW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10ID0g bWFrZU5vZGUoUGxhbm5lZFN0bXQpOwogCXBzdG10LT5jb21tYW5kVHlwZSA9IENNRF9TRUxFQ1Q7 CiAJcHN0bXQtPnF1ZXJ5SWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CisJcHN0bXQtPnBs YW5JZCA9IHBnc3RhdF9nZXRfbXlfcGxhbl9pZCgpOwogCXBzdG10LT5oYXNSZXR1cm5pbmcgPSBm YWxzZTsKIAlwc3RtdC0+aGFzTW9kaWZ5aW5nQ1RFID0gZmFsc2U7CiAJcHN0bXQtPmNhblNldFRh ZyA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0 LnBsIGIvc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3VwcG9ydC5wbAppbmRleCA3YzAxMmMy N2Y4Li5lN2IwNDY3OGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9nZW5fbm9kZV9z dXBwb3J0LnBsCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2RlX3N1cHBvcnQucGwKQEAg LTQ3NSw2ICs0NzUsNyBAQCBmb3JlYWNoIG15ICRpbmZpbGUgKEBBUkdWKQogCQkJCQkJCQllcXVh bF9pZ25vcmVfaWZfemVybwogCQkJCQkJCQlxdWVyeV9qdW1ibGVfaWdub3JlCiAJCQkJCQkJCXF1 ZXJ5X2p1bWJsZV9sb2NhdGlvbgorCQkJCQkJCQlxdWVyeV9qdW1ibGVfcnRfaW5kZXgKIAkJCQkJ CQkJcmVhZF93cml0ZV9pZ25vcmUKIAkJCQkJCQkJd3JpdGVfb25seV9yZWxpZHMKIAkJCQkJCQkJ d3JpdGVfb25seV9ub25kZWZhdWx0X3BhdGh0YXJnZXQKQEAgLTEyODAsMTMgKzEyODEsMTkgQEAg X2p1bWJsZSR7bn0oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSkKIAl7CiAJCW15ICR0 ID0gJG5vZGVfdHlwZV9pbmZveyRufS0+e2ZpZWxkX3R5cGVzfXskZn07CiAJCW15IEBhID0gQHsg JG5vZGVfdHlwZV9pbmZveyRufS0+e2ZpZWxkX2F0dHJzfXskZn0gfTsKKwkJbXkgJGFycmF5X3Np emVfZmllbGQ7CiAJCW15ICRxdWVyeV9qdW1ibGVfaWdub3JlID0gJHN0cnVjdF9ub19xdWVyeV9q dW1ibGU7CiAJCW15ICRxdWVyeV9qdW1ibGVfbG9jYXRpb24gPSAwOworCQlteSAkcXVlcnlfanVt YmxlX3J0X2luZGV4ID0gMDsKIAogCQkjIGV4dHJhY3QgcGVyLWZpZWxkIGF0dHJpYnV0ZXMKIAkJ Zm9yZWFjaCBteSAkYSAoQGEpCiAJCXsKLQkJCWlmICgkYSBlcSAncXVlcnlfanVtYmxlX2lnbm9y ZScpCisJCQlpZiAoJGEgPX4gL15hcnJheV9zaXplXCgoW1x3Ll0rKVwpJC8pCisJCQl7CisJCQkJ JGFycmF5X3NpemVfZmllbGQgPSAkMTsKKwkJCX0KKwkJCWVsc2lmICgkYSBlcSAncXVlcnlfanVt YmxlX2lnbm9yZScpCiAJCQl7CiAJCQkJJHF1ZXJ5X2p1bWJsZV9pZ25vcmUgPSAxOwogCQkJfQpA QCAtMTI5NCwxMCArMTMwMSwyOSBAQCBfanVtYmxlJHtufShKdW1ibGVTdGF0ZSAqanN0YXRlLCBO b2RlICpub2RlKQogCQkJewogCQkJCSRxdWVyeV9qdW1ibGVfbG9jYXRpb24gPSAxOwogCQkJfQor CQkJZWxzaWYgKCRhIGVxICdxdWVyeV9qdW1ibGVfcnRfaW5kZXgnKQorCQkJeworCQkJCSRxdWVy eV9qdW1ibGVfcnRfaW5kZXggPSAxOworCQkJfQogCQl9CiAKKwkJbmV4dCBpZiAkcXVlcnlfanVt YmxlX2lnbm9yZTsKKworCQlpZiAoJHF1ZXJ5X2p1bWJsZV9ydF9pbmRleCkKKwkJeworCQkJaWYg KCR0IGVxICdMaXN0KicpCisJCQl7CisJCQkJcHJpbnQgJGpmZiAiXHRKVU1CTEVfUlRfSU5ERVhf TElTVCgkZik7XG4iCisJCQkJICB1bmxlc3MgJHF1ZXJ5X2p1bWJsZV9pZ25vcmU7CisJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJcHJpbnQgJGpmZiAiXHRKVU1CTEVfUlRfSU5ERVgoJGYpO1xuIgor CQkJCSAgdW5sZXNzICRxdWVyeV9qdW1ibGVfaWdub3JlOworCQkJfQorCQl9CiAJCSMgbm9kZSB0 eXBlCi0JCWlmICgoJHQgPX4gL14oXHcrKVwqJC8gb3IgJHQgPX4gL15zdHJ1Y3RccysoXHcrKVwq JC8pCisJCWVsc2lmICgoJHQgPX4gL14oXHcrKVwqJC8gb3IgJHQgPX4gL15zdHJ1Y3RccysoXHcr KVwqJC8pCiAJCQlhbmQgZWxlbSAkMSwgQG5vZGVfdHlwZXMpCiAJCXsKIAkJCXByaW50ICRqZmYg Ilx0SlVNQkxFX05PREUoJGYpO1xuIgpAQCAtMTMxNyw2ICsxMzQzLDI2IEBAIF9qdW1ibGUke259 KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJCQlwcmludCAkamZmICJcdEpVTUJM RV9TVFJJTkcoJGYpO1xuIgogCQkJICB1bmxlc3MgJHF1ZXJ5X2p1bWJsZV9pZ25vcmU7CiAJCX0K KwkJZWxzaWYgKCR0ID1+IC9eKFx3KykoXCp8XFtcdytcXSkkLyBhbmQgZWxlbSAkMSwgQHNjYWxh cl90eXBlcykKKwkJeworCQkJaWYgKCFkZWZpbmVkICRhcnJheV9zaXplX2ZpZWxkKQorCQkJewor CQkJCWRpZSAibm8gYXJyYXkgc2l6ZSBkZWZpbmVkIGZvciAkbi4kZiBvZiB0eXBlICR0XG4iOwor CQkJfQorCQkJaWYgKCRub2RlX3R5cGVfaW5mb3skbn0tPntmaWVsZF90eXBlc317JGFycmF5X3Np emVfZmllbGR9IGVxCisJCQkJJ0xpc3QqJykKKwkJCXsKKwkJCQlwcmludCAkamZmCisJCQkJICAi XHRKVU1CTEVfQVJSQVkoJGYsIGxpc3RfbGVuZ3RoKGV4cHItPiRhcnJheV9zaXplX2ZpZWxkKSk7 XG4iCisJCQkJICB1bmxlc3MgJHF1ZXJ5X2p1bWJsZV9pZ25vcmU7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJcHJpbnQgJGpmZgorCQkJCSAgIlx0SlVNQkxFX0FSUkFZKCRmLCBleHByLT4kYXJy YXlfc2l6ZV9maWVsZCk7XG4iCisJCQkJICB1bmxlc3MgJHF1ZXJ5X2p1bWJsZV9pZ25vcmU7CisJ CQl9CisJCX0KIAkJZWxzZQogCQl7CiAJCQlwcmludCAkamZmICJcdEpVTUJMRV9GSUVMRCgkZik7 XG4iCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKaW5kZXggNTQ1ZDhlZGNhZS4uNDgy ZDFlYTgyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMzUsMTIgKzM1 LDE0IEBACiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNl dHJlZS5oIgogI2luY2x1ZGUgInBhcnNlci9zY2Fuc3VwLmgiCiAKICNkZWZpbmUgSlVNQkxFX1NJ WkUJCQkJMTAyNAkvKiBxdWVyeSBzZXJpYWxpemF0aW9uIGJ1ZmZlciBzaXplICovCiAKIC8qIEdV QyBwYXJhbWV0ZXJzICovCiBpbnQJCQljb21wdXRlX3F1ZXJ5X2lkID0gQ09NUFVURV9RVUVSWV9J RF9BVVRPOworaW50CQkJY29tcHV0ZV9wbGFuX2lkID0gQ09NUFVURV9QTEFOX0lEX0FVVE87CiAK IC8qCiAgKiBUcnVlIHdoZW4gY29tcHV0ZV9xdWVyeV9pZCBpcyBPTiBvciBBVVRPLCBhbmQgYSBt b2R1bGUgcmVxdWVzdHMgdGhlbS4KQEAgLTUxLDcgKzUzLDE4IEBAIGludAkJCWNvbXB1dGVfcXVl cnlfaWQgPSBDT01QVVRFX1FVRVJZX0lEX0FVVE87CiAgKi8KIGJvb2wJCXF1ZXJ5X2lkX2VuYWJs ZWQgPSBmYWxzZTsKIAorLyoKKyAqIFRydWUgd2hlbiBjb21wdXRlX3BsYW5faWQgaXMgT04gb3Ig QVVUTywgYW5kIGEgbW9kdWxlIHJlcXVlc3RzIHRoZW0uCisgKgorICogTm90ZSB0aGF0IElzUGxh bklkRW5hYmxlZCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgY2hlY2tpbmcKKyAqIHBsYW5f aWRfZW5hYmxlZCBvciBwbGFuX3F1ZXJ5X2lkIGRpcmVjdGx5IHdoZW4gd2Ugd2FudCB0byBrbm93 CisgKiB3aGV0aGVyIHBsYW4gaWRlbnRpZmllcnMgYXJlIGNvbXB1dGVkIGluIHRoZSBjb3JlIG9y IG5vdC4KKyAqLworYm9vbAkJcGxhbl9pZF9lbmFibGVkID0gZmFsc2U7CisKIHN0YXRpYyB2b2lk IFJlY29yZENvbnN0TG9jYXRpb24oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgaW50IGxvY2F0aW9uKTsK K3N0YXRpYyB2b2lkIEp1bWJsZVJhbmdlVGFibGVJbmRleChKdW1ibGVTdGF0ZSAqanN0YXRlLCBJ bmRleCBydGkpOworc3RhdGljIHZvaWQgSnVtYmxlUmFuZ2VUYWJsZUluZGV4TGlzdChKdW1ibGVT dGF0ZSAqanN0YXRlLCBMaXN0ICpsKTsKIHN0YXRpYyB2b2lkIF9qdW1ibGVBX0NvbnN0KEp1bWJs ZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpOwogc3RhdGljIHZvaWQgX2p1bWJsZUxpc3QoSnVt YmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlVmFyaWFi bGVTZXRTdG10KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpOwpAQCAtMTA2LDcgKzEx OSw3IEBAIENsZWFuUXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBp bnQgKmxlbikKIH0KIAogSnVtYmxlU3RhdGUgKgotSW5pdGlhbGl6ZUp1bWJsZVN0YXRlKGJvb2wg cmVjb3JkX2Nsb2NhdGlvbnMpCitJbml0aWFsaXplSnVtYmxlU3RhdGUoYm9vbCByZWNvcmRfY2xv Y2F0aW9ucywgUGxhbm5lckdsb2JhbCAqZ2xvYikKIHsKIAlKdW1ibGVTdGF0ZSAqanN0YXRlID0g KEp1bWJsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CiAKQEAgLTEyMSw2 ICsxMzQsOCBAQCBJbml0aWFsaXplSnVtYmxlU3RhdGUoYm9vbCByZWNvcmRfY2xvY2F0aW9ucykK IAkJCXBhbGxvYyhqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgKiBzaXplb2YoTG9jYXRpb25M ZW4pKTsKIAl9CiAKKwlqc3RhdGUtPmdsb2IgPSBnbG9iOworCiAJcmV0dXJuIGpzdGF0ZTsKIH0K IApAQCAtMTM1LDcgKzE1MCw3IEBAIEhhc2hKdW1ibGVTdGF0ZShKdW1ibGVTdGF0ZSAqanN0YXRl KQogSnVtYmxlU3RhdGUgKgogSnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KQogewotCUp1bWJsZVN0 YXRlICpqc3RhdGUgPSBJbml0aWFsaXplSnVtYmxlU3RhdGUodHJ1ZSk7CisJSnVtYmxlU3RhdGUg KmpzdGF0ZSA9IEluaXRpYWxpemVKdW1ibGVTdGF0ZSh0cnVlLCBOVUxMKTsKIAogCUFzc2VydChJ c1F1ZXJ5SWRFbmFibGVkKCkpOwogCkBAIC0xNzEsNiArMTg2LDE5IEBAIEVuYWJsZVF1ZXJ5SWQo dm9pZCkKIAkJcXVlcnlfaWRfZW5hYmxlZCA9IHRydWU7CiB9CiAKKy8qCisgKiBFbmFibGVzIHBs YW4gaWRlbnRpZmllciBjb21wdXRhdGlvbi4KKyAqCisgKiBUaGlyZC1wYXJ0eSBwbHVnaW5zIGNh biB1c2UgdGhpcyBmdW5jdGlvbiB0byBpbmZvcm0gY29yZSB0aGF0IHRoZXkgcmVxdWlyZQorICog YSBxdWVyeSBpZGVudGlmaWVyIHRvIGJlIGNvbXB1dGVkLgorICovCit2b2lkCitFbmFibGVQbGFu SWQodm9pZCkKK3sKKwlpZiAoY29tcHV0ZV9wbGFuX2lkICE9IENPTVBVVEVfUExBTl9JRF9PRkYp CisJCXBsYW5faWRfZW5hYmxlZCA9IHRydWU7Cit9CisKIC8qCiAgKiBBcHBlbmRKdW1ibGU6IEFw cGVuZCBhIHZhbHVlIHRoYXQgaXMgc3Vic3RhbnRpdmUgaW4gYSBnaXZlbiBxdWVyeSB0bwogICog dGhlIGN1cnJlbnQganVtYmxlLgpAQCAtMjM4LDggKzI2NiwxNyBAQCBSZWNvcmRDb25zdExvY2F0 aW9uKEp1bWJsZVN0YXRlICpqc3RhdGUsIGludCBsb2NhdGlvbikKIAlKdW1ibGVOb2RlKGpzdGF0 ZSwgKE5vZGUgKikgZXhwci0+aXRlbSkKICNkZWZpbmUgSlVNQkxFX0xPQ0FUSU9OKGxvY2F0aW9u KSBcCiAJUmVjb3JkQ29uc3RMb2NhdGlvbihqc3RhdGUsIGV4cHItPmxvY2F0aW9uKQorI2RlZmlu ZSBKVU1CTEVfUlRfSU5ERVgoaXRlbSkgXAorZG8geyBcCisJaWYgKGV4cHItPml0ZW0pIFwKKwkJ SnVtYmxlUmFuZ2VUYWJsZUluZGV4KGpzdGF0ZSwgZXhwci0+aXRlbSk7IFwKK30gd2hpbGUoMCkK KyNkZWZpbmUgSlVNQkxFX1JUX0lOREVYX0xJU1QoaXRlbSkgXAorCUp1bWJsZVJhbmdlVGFibGVJ bmRleExpc3QoanN0YXRlLCBleHByLT5pdGVtKQogI2RlZmluZSBKVU1CTEVfRklFTEQoaXRlbSkg XAogCUFwcGVuZEp1bWJsZShqc3RhdGUsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICYoZXhwci0+ aXRlbSksIHNpemVvZihleHByLT5pdGVtKSkKKyNkZWZpbmUgSlVNQkxFX0FSUkFZKGl0ZW0sIGxl bikgXAorCUFwcGVuZEp1bWJsZShqc3RhdGUsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICYoZXhw ci0+aXRlbSksIHNpemVvZigqKGV4cHItPml0ZW0pKSAqIGxlbikKICNkZWZpbmUgSlVNQkxFX0ZJ RUxEX1NJTkdMRShpdGVtKSBcCiAJQXBwZW5kSnVtYmxlKGpzdGF0ZSwgKGNvbnN0IHVuc2lnbmVk IGNoYXIgKikgJihpdGVtKSwgc2l6ZW9mKGl0ZW0pKQogI2RlZmluZSBKVU1CTEVfU1RSSU5HKHN0 cikgXApAQCAtMzg4LDMgKzQyNSw0MCBAQCBfanVtYmxlVmFyaWFibGVTZXRTdG10KEp1bWJsZVN0 YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJSlVNQkxFX0ZJRUxEKGlzX2xvY2FsKTsKIAlKVU1C TEVfTE9DQVRJT04obG9jYXRpb24pOwogfQorCisvKgorICogSnVtYmxlIHRoZSB0YXJnZXQgb2Yg YSByYW5nbGUgdGFibGUgaW5kZXgsIGUuZy4gaW4gYSBTY2FuIG9yIE1vZGlmeSBub2RlCisgKi8K K3N0YXRpYyB2b2lkCitKdW1ibGVSYW5nZVRhYmxlSW5kZXgoSnVtYmxlU3RhdGUgKmpzdGF0ZSwg SW5kZXggcnRpKQoreworCVJhbmdlVGJsRW50cnkgKmV4cHIgPSBydF9mZXRjaChydGksIGpzdGF0 ZS0+Z2xvYi0+ZmluYWxydGFibGUpOworCisJc3dpdGNoIChleHByLT5ydGVraW5kKQorCXsKKwkJ Y2FzZSBSVEVfUkVMQVRJT046CisJCQlKVU1CTEVfRklFTEQocmVsaWQpOworCQkJYnJlYWs7CisJ CWNhc2UgUlRFX0NURToKKwkJCUpVTUJMRV9TVFJJTkcoY3RlbmFtZSk7CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKKworCQkJLyoKKwkJCSAqIElnbm9yZSBvdGhlciB0YXJnZXRzLCB0aGUganVtYmxl IGluY2x1ZGVzIHNvbWV0aGluZyBpZGVudGlmeWluZworCQkJICogYWJvdXQgdGhlbSBhbHJlYWR5 CisJCQkgKi8KKwkJCWJyZWFrOworCX0KK30KKworc3RhdGljIHZvaWQKK0p1bWJsZVJhbmdlVGFi bGVJbmRleExpc3QoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTGlzdCAqbCkKK3sKKwlMaXN0Q2VsbCAg ICpsYzsKKworCUFzc2VydChsLT50eXBlID09IFRfSW50TGlzdCk7CisKKwlmb3JlYWNoKGxjLCBs KQorCQlKdW1ibGVSYW5nZVRhYmxlSW5kZXgoanN0YXRlLCBsZmlyc3RfaW50KGxjKSk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNjgwM2VkZDA4NS4uNzA1MDA0NDFk OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMzcsNiArMzcsNyBAQAog I2lmZGVmIE9QVElNSVpFUl9ERUJVRwogI2luY2x1ZGUgIm5vZGVzL3ByaW50LmgiCiAjZW5kaWYK KyNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL3N1cHBvcnRu b2Rlcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9hcHBlbmRpbmZvLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL2NsYXVzZXMuaCIKQEAgLTUzMiw2ICs1MzMsMTYgQEAgc3RhbmRhcmRfcGxhbm5lcihR dWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMs CiAJQXNzZXJ0KGdsb2ItPmZpbmFscm93bWFya3MgPT0gTklMKTsKIAlBc3NlcnQoZ2xvYi0+cmVz dWx0UmVsYXRpb25zID09IE5JTCk7CiAJQXNzZXJ0KGdsb2ItPmFwcGVuZFJlbGF0aW9ucyA9PSBO SUwpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHBsYW4gaWRlbnRpZmllciBqdW1ibGUgaWYgbmVl ZGVkCisJICoKKwkgKiBOb3RlIHRoZSBhY3R1YWwganVtYmxpbmcgaXMgZG9uZSBpbiB0aGUgdHJl ZSB3YWxrIGluCisJICogc2V0X3BsYW5fcmVmZXJlbmNlcworCSAqLworCWlmIChJc1BsYW5JZEVu YWJsZWQoKSkKKwkJZ2xvYi0+cGxhbl9qdW1ibGVfc3RhdGUgPSBJbml0aWFsaXplSnVtYmxlU3Rh dGUoZmFsc2UsIGdsb2IpOworCiAJdG9wX3BsYW4gPSBzZXRfcGxhbl9yZWZlcmVuY2VzKHJvb3Qs IHRvcF9wbGFuKTsKIAkvKiAuLi4gYW5kIHRoZSBzdWJwbGFucyAoYm90aCByZWd1bGFyIHN1YnBs YW5zIGFuZCBpbml0cGxhbnMpICovCiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKGdsb2ItPnN1YnBsYW5z KSA9PSBsaXN0X2xlbmd0aChnbG9iLT5zdWJyb290cykpOwpAQCAtNTcwLDYgKzU4MSwxMyBAQCBz dGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBp bnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnN0bXRfbG9jYXRpb24gPSBwYXJzZS0+c3RtdF9s b2NhdGlvbjsKIAlyZXN1bHQtPnN0bXRfbGVuID0gcGFyc2UtPnN0bXRfbGVuOwogCisJaWYgKElz UGxhbklkRW5hYmxlZCgpKQorCXsKKwkJcmVzdWx0LT5wbGFuSWQgPSBIYXNoSnVtYmxlU3RhdGUo Z2xvYi0+cGxhbl9qdW1ibGVfc3RhdGUpOworCQlwZnJlZShnbG9iLT5wbGFuX2p1bWJsZV9zdGF0 ZS0+anVtYmxlKTsKKwkJcGZyZWUoZ2xvYi0+cGxhbl9qdW1ibGVfc3RhdGUpOworCX0KKwogCXJl c3VsdC0+aml0RmxhZ3MgPSBQR0pJVF9OT05FOwogCWlmIChqaXRfZW5hYmxlZCAmJiBqaXRfYWJv dmVfY29zdCA+PSAwICYmCiAJCXRvcF9wbGFuLT50b3RhbF9jb3N0ID4gaml0X2Fib3ZlX2Nvc3Qp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggMWU3YjdiYzZmZi4uZjQ5NGEz MzgxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTksNiArMTksNyBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3F1ZXJ5 anVtYmxlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgIm9w dGltaXplci9wYXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubWFpbi5oIgpAQCAt MTI5NSw2ICsxMjk2LDE0IEBAIHNldF9wbGFuX3JlZnMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4g KnBsYW4sIGludCBydG9mZnNldCkKIAkJCWJyZWFrOwogCX0KIAorCS8qCisJICogSWYgZW5hYmxl ZCwgYXBwZW5kIHNpZ25pZmljYW50IGluZm9ybWF0aW9uIHRvIHRoZSBwbGFuIGlkZW50aWZpZXIK KwkgKiBqdW1ibGUgKHdlIGRvIHRoaXMgaGVyZSBzaW5jZSB3ZSdyZSBhbHJlYWR5IHdhbGtpbmcg dGhlIHRyZWUgaW4gYQorCSAqIG5lYXItZmluYWwgc3RhdGUpCisJICovCisJaWYgKElzUGxhbklk RW5hYmxlZCgpKQorCQlKdW1ibGVOb2RlKHJvb3QtPmdsb2ItPnBsYW5fanVtYmxlX3N0YXRlLCAo Tm9kZSAqKSBwbGFuKTsKKwogCS8qCiAJICogTm93IHJlY3Vyc2UgaW50byBjaGlsZCBwbGFucywg aWYgYW55CiAJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2Jh Y2tlbmQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwppbmRleCBh OTdhMWVkYTZkLi42NTRhY2Y1YmYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2xhdW5jaF9iYWNrZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFj a2VuZC5jCkBAIC0xMTUsNiArMTE1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQlyZWRpcmVj dGlvbl9kb25lOwogCWJvb2wJCUlzQmluYXJ5VXBncmFkZTsKIAlib29sCQlxdWVyeV9pZF9lbmFi bGVkOworCWJvb2wJCXBsYW5faWRfZW5hYmxlZDsKIAlpbnQJCQltYXhfc2FmZV9mZHM7CiAJaW50 CQkJTWF4QmFja2VuZHM7CiAJaW50CQkJbnVtX3BtY2hpbGRfc2xvdHM7CkBAIC03NDQsNiArNzQ1 LDcgQEAgc2F2ZV9iYWNrZW5kX3ZhcmlhYmxlcyhCYWNrZW5kUGFyYW1ldGVycyAqcGFyYW0sCiAJ cGFyYW0tPnJlZGlyZWN0aW9uX2RvbmUgPSByZWRpcmVjdGlvbl9kb25lOwogCXBhcmFtLT5Jc0Jp bmFyeVVwZ3JhZGUgPSBJc0JpbmFyeVVwZ3JhZGU7CiAJcGFyYW0tPnF1ZXJ5X2lkX2VuYWJsZWQg PSBxdWVyeV9pZF9lbmFibGVkOworCXBhcmFtLT5wbGFuX2lkX2VuYWJsZWQgPSBwbGFuX2lkX2Vu YWJsZWQ7CiAJcGFyYW0tPm1heF9zYWZlX2ZkcyA9IG1heF9zYWZlX2ZkczsKIAogCXBhcmFtLT5N YXhCYWNrZW5kcyA9IE1heEJhY2tlbmRzOwpAQCAtMTAwNCw2ICsxMDA2LDcgQEAgcmVzdG9yZV9i YWNrZW5kX3ZhcmlhYmxlcyhCYWNrZW5kUGFyYW1ldGVycyAqcGFyYW0pCiAJcmVkaXJlY3Rpb25f ZG9uZSA9IHBhcmFtLT5yZWRpcmVjdGlvbl9kb25lOwogCUlzQmluYXJ5VXBncmFkZSA9IHBhcmFt LT5Jc0JpbmFyeVVwZ3JhZGU7CiAJcXVlcnlfaWRfZW5hYmxlZCA9IHBhcmFtLT5xdWVyeV9pZF9l bmFibGVkOworCXBsYW5faWRfZW5hYmxlZCA9IHBhcmFtLT5wbGFuX2lkX2VuYWJsZWQ7CiAJbWF4 X3NhZmVfZmRzID0gcGFyYW0tPm1heF9zYWZlX2ZkczsKIAogCU1heEJhY2tlbmRzID0gcGFyYW0t Pk1heEJhY2tlbmRzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDU2NTUzNDhhMmUuLjZkODk0N2JhZTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKQEAgLTExMDYsNiArMTEwNiw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5 KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJc2l6ZV90CQljbWR0YWdsZW47CiAKIAkJcGdz dGF0X3JlcG9ydF9xdWVyeV9pZCgwLCB0cnVlKTsKKwkJcGdzdGF0X3JlcG9ydF9wbGFuX2lkKDAs IDAsIHRydWUpOwogCiAJCS8qCiAJCSAqIEdldCB0aGUgY29tbWFuZCBuYW1lIGZvciB1c2UgaW4g c3RhdHVzIGRpc3BsYXkgKGl0IGFsc28gYmVjb21lcyB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDczMTM0Mjc5OWEuLjFkZmI3YTU4ZjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtMzc5LDYg KzM3OSw3IEBAIHBnc3RhdF9iZXN0YXJ0KHZvaWQpCiAJbGJlZW50cnkuc3RfcHJvZ3Jlc3NfY29t bWFuZCA9IFBST0dSRVNTX0NPTU1BTkRfSU5WQUxJRDsKIAlsYmVlbnRyeS5zdF9wcm9ncmVzc19j b21tYW5kX3RhcmdldCA9IEludmFsaWRPaWQ7CiAJbGJlZW50cnkuc3RfcXVlcnlfaWQgPSBVSU5U NjRDT05TVCgwKTsKKwlsYmVlbnRyeS5zdF9wbGFuX2lkID0gVUlOVDY0Q09OU1QoMCk7CiAKIAkv KgogCSAqIHdlIGRvbid0IHplcm8gc3RfcHJvZ3Jlc3NfcGFyYW0gaGVyZSB0byBzYXZlIGN5Y2xl czsgbm9ib2R5IHNob3VsZApAQCAtNTMzLDYgKzUzNCw3IEBAIHBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoQmFja2VuZFN0YXRlIHN0YXRlLCBjb25zdCBjaGFyICpjbWRfc3RyKQogCQkJLyogc3RfeGFj dF9zdGFydF90aW1lc3RhbXAgYW5kIHdhaXRfZXZlbnRfaW5mbyBhcmUgYWxzbyBkaXNhYmxlZCAq LwogCQkJYmVlbnRyeS0+c3RfeGFjdF9zdGFydF90aW1lc3RhbXAgPSAwOwogCQkJYmVlbnRyeS0+ c3RfcXVlcnlfaWQgPSBVSU5UNjRDT05TVCgwKTsKKwkJCWJlZW50cnktPnN0X3BsYW5faWQgPSBV SU5UNjRDT05TVCgwKTsKIAkJCXByb2MtPndhaXRfZXZlbnRfaW5mbyA9IDA7CiAJCQlQR1NUQVRf RU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOwogCQl9CkBAIC01ODgsMTIgKzU5MCwxNSBAQCBw Z3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29uc3QgY2hhciAqY21k X3N0cikKIAliZWVudHJ5LT5zdF9zdGF0ZV9zdGFydF90aW1lc3RhbXAgPSBjdXJyZW50X3RpbWVz dGFtcDsKIAogCS8qCi0JICogSWYgYSBuZXcgcXVlcnkgaXMgc3RhcnRlZCwgd2UgcmVzZXQgdGhl IHF1ZXJ5IGlkZW50aWZpZXIgYXMgaXQnbGwgb25seQotCSAqIGJlIGtub3duIGFmdGVyIHBhcnNl IGFuYWx5c2lzLCB0byBhdm9pZCByZXBvcnRpbmcgbGFzdCBxdWVyeSdzCi0JICogaWRlbnRpZmll ci4KKwkgKiBJZiBhIG5ldyBxdWVyeSBpcyBzdGFydGVkLCB3ZSByZXNldCB0aGUgcXVlcnkgYW5k IHBsYW4gaWRlbnRpZmllciBhcworCSAqIGl0J2xsIG9ubHkgYmUga25vd24gYWZ0ZXIgcGFyc2Ug YW5hbHlzaXMgLyBwbGFubmluZywgdG8gYXZvaWQgcmVwb3J0aW5nCisJICogbGFzdCBxdWVyeSdz IGlkZW50aWZpZXJzLgogCSAqLwogCWlmIChzdGF0ZSA9PSBTVEFURV9SVU5OSU5HKQorCXsKIAkJ YmVlbnRyeS0+c3RfcXVlcnlfaWQgPSBVSU5UNjRDT05TVCgwKTsKKwkJYmVlbnRyeS0+c3RfcGxh bl9pZCA9IFVJTlQ2NENPTlNUKDApOworCX0KIAogCWlmIChjbWRfc3RyICE9IE5VTEwpCiAJewpA QCAtNjQ0LDYgKzY0OSw0NSBAQCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHVpbnQ2NCBxdWVyeV9p ZCwgYm9vbCBmb3JjZSkKIAlQR1NUQVRfRU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOwogfQog CisvKiAtLS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF9wbGFuX2lkKCkgLQorICoKKyAqIENhbGxl ZCB0byB1cGRhdGUgdG9wLWxldmVsIHBsYW4gaWRlbnRpZmllci4KKyAqIC0tLS0tLS0tCisgKi8K K3ZvaWQKK3Bnc3RhdF9yZXBvcnRfcGxhbl9pZCh1aW50NjQgcGxhbl9pZCwgdWludDY0IHF1ZXJ5 X2lkLCBib29sIGZvcmNlKQoreworCXZvbGF0aWxlIFBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeSA9 IE15QkVFbnRyeTsKKworCS8qCisJICogaWYgdHJhY2tfYWN0aXZpdGllcyBpcyBkaXNhYmxlZCwg c3RfcGxhbl9pZCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4KKwkgKiByZXNldAorCSAqLworCWlm ICghYmVlbnRyeSB8fCAhcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXMpCisJCXJldHVybjsKKworCS8q CisJICogV2Ugb25seSByZXBvcnQgdGhlIHRvcC1sZXZlbCBwbGFuIGlkZW50aWZpZXJzLiAgVGhl IHN0b3JlZCBwbGFuX2lkIGlzCisJICogcmVzZXQgd2hlbiBhIGJhY2tlbmQgY2FsbHMgcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HKSwgb3IKKwkgKiB3aXRoIGFuIGV4cGxpY2l0 IGNhbGwgdG8gdGhpcyBmdW5jdGlvbiB1c2luZyB0aGUgZm9yY2UgZmxhZy4gIElmIHRoZQorCSAq IHNhdmVkIHBsYW4gaWRlbnRpZmllciBpcyBub3QgemVybyBvciB0aGUgcXVlcnkgaWRlbnRpZmll ciBpcyAwLCBpdAorCSAqIG1lYW5zIHRoYXQgaXQncyBub3QgYSB0b3AtbGV2ZWwgY29tbWFuZCwg c28gaWdub3JlIHRoZSBvbmUgcHJvdmlkZWQKKwkgKiB1bmxlc3MgaXQncyBhbiBleHBsaWNpdCBj YWxsIHRvIHJlc2V0IHRoZSBpZGVudGlmaWVyLgorCSAqLworCWlmICgoYmVlbnRyeS0+c3RfcGxh bl9pZCAhPSAwIHx8IHF1ZXJ5X2lkID09IDApICYmICFmb3JjZSkKKwkJcmV0dXJuOworCisJLyoK KwkgKiBVcGRhdGUgbXkgc3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1 bXBpbmcKKwkgKiBzdF9jaGFuZ2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9s YXRpbGUgcG9pbnRlciBoZXJlIHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRy eSB0byBnZXQgY3V0ZS4KKwkgKi8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRy eSk7CisJYmVlbnRyeS0+c3RfcGxhbl9pZCA9IHBsYW5faWQ7CisJUEdTVEFUX0VORF9XUklURV9B Q1RJVklUWShiZWVudHJ5KTsKK30KKwogCiAvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVwb3J0 X2FwcG5hbWUoKSAtCkBAIC0xMDQwLDYgKzEwODQsMjYgQEAgcGdzdGF0X2dldF9teV9xdWVyeV9p ZCh2b2lkKQogCXJldHVybiBNeUJFRW50cnktPnN0X3F1ZXJ5X2lkOwogfQogCisvKiAtLS0tLS0t LS0tCisgKiBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKSAtCisgKgorICogUmV0dXJuIGN1cnJlbnQg YmFja2VuZCdzIHBsYW4gaWRlbnRpZmllci4KKyAqLwordWludDY0CitwZ3N0YXRfZ2V0X215X3Bs YW5faWQodm9pZCkKK3sKKwlpZiAoIU15QkVFbnRyeSkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAq IFRoZXJlJ3Mgbm8gbmVlZCBmb3IgYSBsb2NrIGFyb3VuZCBwZ3N0YXRfYmVnaW5fcmVhZF9hY3Rp dml0eSAvCisJICogcGdzdGF0X2VuZF9yZWFkX2FjdGl2aXR5IGhlcmUgYXMgaXQncyBvbmx5IGNh bGxlZCBmcm9tCisJICogcGdfc3RhdF9nZXRfYWN0aXZpdHkgd2hpY2ggaXMgYWxyZWFkeSBwcm90 ZWN0ZWQsIG9yIGZyb20gdGhlIHNhbWUKKwkgKiBiYWNrZW5kIHdoaWNoIG1lYW5zIHRoYXQgdGhl cmUgd29uJ3QgYmUgY29uY3VycmVudCB3cml0ZXMuCisJICovCisJcmV0dXJuIE15QkVFbnRyeS0+ c3RfcGxhbl9pZDsKK30KKwogLyogLS0tLS0tLS0tLQogICogcGdzdGF0X2dldF9iYWNrZW5kX3R5 cGVfYnlfcHJvY19udW1iZXIoKSAtCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpp bmRleCAwZjVlMGE5Nzc4Li4zYzNiZjJjYjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYwpAQCAtMzAyLDcgKzMwMiw3IEBAIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oUEdfRlVO Q1RJT05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdT KQogewotI2RlZmluZSBQR19TVEFUX0dFVF9BQ1RJVklUWV9DT0xTCTMxCisjZGVmaW5lIFBHX1NU QVRfR0VUX0FDVElWSVRZX0NPTFMJMzIKIAlpbnQJCQludW1fYmFja2VuZHMgPSBwZ3N0YXRfZmV0 Y2hfc3RhdF9udW1iYWNrZW5kcygpOwogCWludAkJCWN1cnJfYmFja2VuZDsKIAlpbnQJCQlwaWQg PSBQR19BUkdJU05VTEwoMCkgPyAtMSA6IFBHX0dFVEFSR19JTlQzMigwKTsKQEAgLTYxMyw2ICs2 MTMsMTAgQEAgcGdfc3RhdF9nZXRfYWN0aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQludWxs c1szMF0gPSB0cnVlOwogCQkJZWxzZQogCQkJCXZhbHVlc1szMF0gPSBVSW50NjRHZXREYXR1bShi ZWVudHJ5LT5zdF9xdWVyeV9pZCk7CisJCQlpZiAoYmVlbnRyeS0+c3RfcGxhbl9pZCA9PSAwKQor CQkJCW51bGxzWzMxXSA9IHRydWU7CisJCQllbHNlCisJCQkJdmFsdWVzWzMxXSA9IFVJbnQ2NEdl dERhdHVtKGJlZW50cnktPnN0X3BsYW5faWQpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtNjQyLDYg KzY0Niw3IEBAIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQludWxs c1syOF0gPSB0cnVlOwogCQkJbnVsbHNbMjldID0gdHJ1ZTsKIAkJCW51bGxzWzMwXSA9IHRydWU7 CisJCQludWxsc1szMV0gPSB0cnVlOwogCQl9CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNp bmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDM4Y2I5ZTk3MGQuLjlkZGI4ZTk3MzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0zMDksNiArMzA5LDI0IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgY29tcHV0ZV9xdWVyeV9pZF9vcHRpb25zW10g PSB7CiAJe05VTEwsIDAsIGZhbHNlfQogfTsKIAorLyoKKyAqIEFsdGhvdWdoIG9ubHkgIm9uIiBh bmQgIm9mZiIgYXJlIGRvY3VtZW50ZWQsIHdlIGFjY2VwdAorICogYWxsIHRoZSBsaWtlbHkgdmFy aWFudHMgb2YgIm9uIiBhbmQgIm9mZiIuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmln X2VudW1fZW50cnkgY29tcHV0ZV9wbGFuX2lkX29wdGlvbnNbXSA9IHsKKwl7ImF1dG8iLCBDT01Q VVRFX1BMQU5fSURfQVVUTywgZmFsc2V9LAorCXsicmVncmVzcyIsIENPTVBVVEVfUExBTl9JRF9S RUdSRVNTLCBmYWxzZX0sCisJeyJvbiIsIENPTVBVVEVfUExBTl9JRF9PTiwgZmFsc2V9LAorCXsi b2ZmIiwgQ09NUFVURV9QTEFOX0lEX09GRiwgZmFsc2V9LAorCXsidHJ1ZSIsIENPTVBVVEVfUExB Tl9JRF9PTiwgdHJ1ZX0sCisJeyJmYWxzZSIsIENPTVBVVEVfUExBTl9JRF9PRkYsIHRydWV9LAor CXsieWVzIiwgQ09NUFVURV9QTEFOX0lEX09OLCB0cnVlfSwKKwl7Im5vIiwgQ09NUFVURV9QTEFO X0lEX09GRiwgdHJ1ZX0sCisJeyIxIiwgQ09NUFVURV9QTEFOX0lEX09OLCB0cnVlfSwKKwl7IjAi LCBDT01QVVRFX1BMQU5fSURfT0ZGLCB0cnVlfSwKKwl7TlVMTCwgMCwgZmFsc2V9Cit9OworCiAv KgogICogQWx0aG91Z2ggb25seSAib24iLCAib2ZmIiwgYW5kICJwYXJ0aXRpb24iIGFyZSBkb2N1 bWVudGVkLCB3ZQogICogYWNjZXB0IGFsbCB0aGUgbGlrZWx5IHZhcmlhbnRzIG9mICJvbiIgYW5k ICJvZmYiLgpAQCAtNDg3Myw2ICs0ODkxLDE2IEBAIHN0cnVjdCBjb25maWdfZW51bSBDb25maWd1 cmVOYW1lc0VudW1bXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7ImNvbXB1 dGVfcGxhbl9pZCIsIFBHQ19TVVNFVCwgU1RBVFNfTU9OSVRPUklORywKKwkJCWdldHRleHRfbm9v cCgiRW5hYmxlcyBpbi1jb3JlIGNvbXB1dGF0aW9uIG9mIHBsYW4gaWRlbnRpZmllcnMuIiksCisJ CQlOVUxMCisJCX0sCisJCSZjb21wdXRlX3BsYW5faWQsCisJCUNPTVBVVEVfUExBTl9JRF9BVVRP LCBjb21wdXRlX3BsYW5faWRfb3B0aW9ucywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7 CiAJCXsiY29uc3RyYWludF9leGNsdXNpb24iLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX09U SEVSLAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIHRoZSBwbGFubmVyIHRvIHVzZSBjb25zdHJh aW50cyB0byBvcHRpbWl6ZSBxdWVyaWVzLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDA3OWVmYTFiYWEuLjA2MzRhZTkwZGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTY0MSw2 ICs2NDEsNyBAQAogIyAtIE1vbml0b3JpbmcgLQogCiAjY29tcHV0ZV9xdWVyeV9pZCA9IGF1dG8K KyNjb21wdXRlX3BsYW5faWQgPSBhdXRvCiAjbG9nX3N0YXRlbWVudF9zdGF0cyA9IG9mZgogI2xv Z19wYXJzZXJfc3RhdHMgPSBvZmYKICNsb2dfcGxhbm5lcl9zdGF0cyA9IG9mZgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggMTg1NjA3NTVkMi4uZGUzNDFlMmQwMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC01NTQ5LDkgKzU1NDksOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dl dF9hY3Rpdml0eScsIHByb3Jvd3MgPT4gJzEwMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJv cmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAg IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdpbnQ0JywKLSAgcHJvYWxs YXJndHlwZXMgPT4gJ3tpbnQ0LG9pZCxpbnQ0LG9pZCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRleHQs dGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosaW5ldCx0ZXh0 LGludDQseGlkLHhpZCx0ZXh0LGJvb2wsdGV4dCx0ZXh0LGludDQsdGV4dCxudW1lcmljLHRleHQs Ym9vbCx0ZXh0LGJvb2wsYm9vbCxpbnQ0LGludDh9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3twaWQsZGF0aWQscGlkLHVzZXN5c2lkLGFwcGxpY2F0 aW9uX25hbWUsc3RhdGUscXVlcnksd2FpdF9ldmVudF90eXBlLHdhaXRfZXZlbnQseGFjdF9zdGFy dCxxdWVyeV9zdGFydCxiYWNrZW5kX3N0YXJ0LHN0YXRlX2NoYW5nZSxjbGllbnRfYWRkcixjbGll bnRfaG9zdG5hbWUsY2xpZW50X3BvcnQsYmFja2VuZF94aWQsYmFja2VuZF94bWluLGJhY2tlbmRf dHlwZSxzc2wsc3NsdmVyc2lvbixzc2xjaXBoZXIsc3NsYml0cyxzc2xfY2xpZW50X2RuLHNzbF9j bGllbnRfc2VyaWFsLHNzbF9pc3N1ZXJfZG4sZ3NzX2F1dGgsZ3NzX3ByaW5jLGdzc19lbmMsZ3Nz X2RlbGVnYXRpb24sbGVhZGVyX3BpZCxxdWVyeV9pZH0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAn e2ludDQsb2lkLGludDQsb2lkLHRleHQsdGV4dCx0ZXh0LHRleHQsdGV4dCx0aW1lc3RhbXB0eix0 aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixpbmV0LHRleHQsaW50NCx4aWQseGlk LHRleHQsYm9vbCx0ZXh0LHRleHQsaW50NCx0ZXh0LG51bWVyaWMsdGV4dCxib29sLHRleHQsYm9v bCxib29sLGludDQsaW50OCxpbnQ4fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywK KyAgcHJvYXJnbmFtZXMgPT4gJ3twaWQsZGF0aWQscGlkLHVzZXN5c2lkLGFwcGxpY2F0aW9uX25h bWUsc3RhdGUscXVlcnksd2FpdF9ldmVudF90eXBlLHdhaXRfZXZlbnQseGFjdF9zdGFydCxxdWVy eV9zdGFydCxiYWNrZW5kX3N0YXJ0LHN0YXRlX2NoYW5nZSxjbGllbnRfYWRkcixjbGllbnRfaG9z dG5hbWUsY2xpZW50X3BvcnQsYmFja2VuZF94aWQsYmFja2VuZF94bWluLGJhY2tlbmRfdHlwZSxz c2wsc3NsdmVyc2lvbixzc2xjaXBoZXIsc3NsYml0cyxzc2xfY2xpZW50X2RuLHNzbF9jbGllbnRf c2VyaWFsLHNzbF9pc3N1ZXJfZG4sZ3NzX2F1dGgsZ3NzX3ByaW5jLGdzc19lbmMsZ3NzX2RlbGVn YXRpb24sbGVhZGVyX3BpZCxxdWVyeV9pZCxwbGFuX2lkfScsCiAgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfYWN0aXZpdHknIH0sCiB7IG9pZCA9PiAnNjMxOCcsIGRlc2NyID0+ICdkZXNjcmliZSB3 YWl0IGV2ZW50cycsCiAgIHByb25hbWUgPT4gJ3BnX2dldF93YWl0X2V2ZW50cycsIHByb2Nvc3Qg PT4gJzEwJywgcHJvcm93cyA9PiAnMjUwJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNTRlZTE3 Njk3ZS4uMDU4OTlkN2Q4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTE2Myw2ICsxNjMsOSBA QCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAKIAkvKiBwYXJ0aXRpb24gZGVzY3JpcHRv cnMgKi8KIAlQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGl0aW9uX2RpcmVjdG9yeSBwZ19ub2RlX2F0 dHIocmVhZF93cml0ZV9pZ25vcmUpOworCisJLyogb3B0aW9uYWwganVtYmxlIHN0YXRlIGZvciBw bGFuIGlkZW50aWZpZXIgY2xhY3VsYXRpb24gKi8KKwlzdHJ1Y3QgSnVtYmxlU3RhdGUgKnBsYW5f anVtYmxlX3N0YXRlIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CiB9IFBsYW5uZXJH bG9iYWw7CiAKIC8qIG1hY3JvIGZvciBmZXRjaGluZyB0aGUgUGxhbiBhc3NvY2lhdGVkIHdpdGgg YSBTdWJQbGFuIG5vZGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggOWUxOWNkZDI4NC4uZGRl ZDA3ODQxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTUzLDYgKzUzLDEwIEBAIHR5cGVkZWYg c3RydWN0IFBsYW5uZWRTdG10CiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlm aWVyIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIAorCXVpbnQ2NAkJcGxhbklkOwkJCS8qIHBsYW4g aWRlbnRpZmllciAoY2FsY3VsYXRlZCBpZgorCQkJCQkJCQkgKiBjb21wdXRlX3BsYW5faWQgaXMg ZW5hYmxlZCwgY2FuIGFsc28gYmUgc2V0CisJCQkJCQkJCSAqIGJ5IHBsdWdpbnMpICovCisKIAli b29sCQloYXNSZXR1cm5pbmc7CS8qIGlzIGl0IGluc2VydHx1cGRhdGV8ZGVsZXRlfG1lcmdlIFJF VFVSTklORz8gKi8KIAogCWJvb2wJCWhhc01vZGlmeWluZ0NURTsJLyogaGFzIGluc2VydHx1cGRh dGV8ZGVsZXRlfG1lcmdlIGluIFdJVEg/ICovCkBAIC0xMTgsNDQgKzEyMiw1NSBAQCB0eXBlZGVm IHN0cnVjdCBQbGFubmVkU3RtdAogICovCiB0eXBlZGVmIHN0cnVjdCBQbGFuCiB7Ci0JcGdfbm9k ZV9hdHRyKGFic3RyYWN0LCBub19lcXVhbCwgbm9fcXVlcnlfanVtYmxlKQorCXBnX25vZGVfYXR0 cihhYnN0cmFjdCwgbm9fZXF1YWwpCiAKIAlOb2RlVGFnCQl0eXBlOwogCiAJLyoKIAkgKiBlc3Rp bWF0ZWQgZXhlY3V0aW9uIGNvc3RzIGZvciBwbGFuIChzZWUgY29zdHNpemUuYyBmb3IgbW9yZSBp bmZvKQogCSAqLwotCWludAkJCWRpc2FibGVkX25vZGVzOyAvKiBjb3VudCBvZiBkaXNhYmxlZCBu b2RlcyAqLwotCUNvc3QJCXN0YXJ0dXBfY29zdDsJLyogY29zdCBleHBlbmRlZCBiZWZvcmUgZmV0 Y2hpbmcgYW55IHR1cGxlcyAqLwotCUNvc3QJCXRvdGFsX2Nvc3Q7CQkvKiB0b3RhbCBjb3N0IChh c3N1bWluZyBhbGwgdHVwbGVzIGZldGNoZWQpICovCisJaW50CQkJZGlzYWJsZWRfbm9kZXMgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBjb3VudCBvZiBkaXNhYmxlZAorCQkJ CQkJCQkJCQkJCQkJCQkgKiBub2RlcyAqLworCUNvc3QJCXN0YXJ0dXBfY29zdCBwZ19ub2RlX2F0 dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIGNvc3QgZXhwZW5kZWQgYmVmb3JlCisJCQkJCQkJ CQkJCQkJCQkJICogZmV0Y2hpbmcgYW55IHR1cGxlcyAqLworCUNvc3QJCXRvdGFsX2Nvc3QgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiB0b3RhbCBjb3N0IChhc3N1bWluZwor CQkJCQkJCQkJCQkJCQkJCSAqIGFsbCB0dXBsZXMgZmV0Y2hlZCkgKi8KIAogCS8qCiAJICogcGxh bm5lcidzIGVzdGltYXRlIG9mIHJlc3VsdCBzaXplIG9mIHRoaXMgcGxhbiBzdGVwCiAJICovCi0J Q2FyZGluYWxpdHkgcGxhbl9yb3dzOwkJLyogbnVtYmVyIG9mIHJvd3MgcGxhbiBpcyBleHBlY3Rl ZCB0byBlbWl0ICovCi0JaW50CQkJcGxhbl93aWR0aDsJCS8qIGF2ZXJhZ2Ugcm93IHdpZHRoIGlu IGJ5dGVzICovCisJQ2FyZGluYWxpdHkgcGxhbl9yb3dzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsJLyogbnVtYmVyIG9mIHJvd3MgcGxhbgorCQkJCQkJCQkJCQkJCQkJCSAqIGlz IGV4cGVjdGVkIHRvIGVtaXQgKi8KKwlpbnQJCQlwbGFuX3dpZHRoIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsJLyogYXZlcmFnZSByb3cgd2lkdGggaW4KKwkJCQkJCQkJCQkJCQkJ CQkgKiBieXRlcyAqLwogCiAJLyoKIAkgKiBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIHBhcmFsbGVs IHF1ZXJ5CiAJICovCi0JYm9vbAkJcGFyYWxsZWxfYXdhcmU7IC8qIGVuZ2FnZSBwYXJhbGxlbC1h d2FyZSBsb2dpYz8gKi8KLQlib29sCQlwYXJhbGxlbF9zYWZlOwkvKiBPSyB0byB1c2UgYXMgcGFy dCBvZiBwYXJhbGxlbCBwbGFuPyAqLworCWJvb2wJCXBhcmFsbGVsX2F3YXJlIHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogZW5nYWdlIHBhcmFsbGVsLWF3YXJlCisJCQkJCQkJ CQkJCQkJCQkJCSAqIGxvZ2ljPyAqLworCWJvb2wJCXBhcmFsbGVsX3NhZmUgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBPSyB0byB1c2UgYXMgcGFydCBvZgorCQkJCQkJCQkJ CQkJCQkJCQkgKiBwYXJhbGxlbCBwbGFuPyAqLwogCiAJLyoKIAkgKiBpbmZvcm1hdGlvbiBuZWVk ZWQgZm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24KIAkgKi8KLQlib29sCQlhc3luY19jYXBhYmxl OwkvKiBlbmdhZ2UgYXN5bmNocm9ub3VzLWNhcGFibGUgbG9naWM/ICovCisJYm9vbAkJYXN5bmNf Y2FwYWJsZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIGVuZ2FnZQorCQkJ CQkJCQkJCQkJCQkJCQkgKiBhc3luY2hyb25vdXMtY2FwYWJsZQorCQkJCQkJCQkJCQkJCQkJCQkg KiBsb2dpYz8gKi8KIAogCS8qCiAJICogQ29tbW9uIHN0cnVjdHVyYWwgZGF0YSBmb3IgYWxsIFBs YW4gdHlwZXMuCiAJICovCi0JaW50CQkJcGxhbl9ub2RlX2lkOwkvKiB1bmlxdWUgYWNyb3NzIGVu dGlyZSBmaW5hbCBwbGFuIHRyZWUgKi8KKwlpbnQJCQlwbGFuX25vZGVfaWQgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOyAvKiB1bmlxdWUgYWNyb3NzIGVudGlyZQorCQkJCQkJCQkJ CQkJCQkJCSAqIGZpbmFsIHBsYW4gdHJlZSAqLwogCUxpc3QJICAgKnRhcmdldGxpc3Q7CQkvKiB0 YXJnZXQgbGlzdCB0byBiZSBjb21wdXRlZCBhdCB0aGlzIG5vZGUgKi8KIAlMaXN0CSAgICpxdWFs OwkJCS8qIGltcGxpY2l0bHktQU5EZWQgcXVhbCBjb25kaXRpb25zICovCi0Jc3RydWN0IFBsYW4g KmxlZnR0cmVlOwkJLyogaW5wdXQgcGxhbiB0cmVlKHMpICovCi0Jc3RydWN0IFBsYW4gKnJpZ2h0 dHJlZTsKLQlMaXN0CSAgICppbml0UGxhbjsJCS8qIEluaXQgUGxhbiBub2RlcyAodW4tY29ycmVs YXRlZCBleHByCi0JCQkJCQkJCSAqIHN1YnNlbGVjdHMpICovCisJc3RydWN0IFBsYW4gKmxlZnR0 cmVlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogaW5wdXQgcGxhbiB0cmVl KHMpICovCisJc3RydWN0IFBsYW4gKnJpZ2h0dHJlZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxl X2lnbm9yZSk7CisJTGlzdAkgICAqaW5pdFBsYW4gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOyAvKiBJbml0IFBsYW4gbm9kZXMKKwkJCQkJCQkJCQkJCQkJCSAqICh1bi1jb3JyZWxh dGVkIGV4cHIKKwkJCQkJCQkJCQkJCQkJCSAqIHN1YnNlbGVjdHMpICovCiAKIAkvKgogCSAqIElu Zm9ybWF0aW9uIGZvciBtYW5hZ2VtZW50IG9mIHBhcmFtZXRlci1jaGFuZ2UtZHJpdmVuIHJlc2Nh bm5pbmcKQEAgLTE2OCw4ICsxODMsOCBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuCiAJICogcGFyYW1z IHRoYXQgYWZmZWN0IHRoZSBub2RlIChpLmUuLCB0aGUgc2V0UGFyYW1zIG9mIGl0cyBpbml0cGxh bnMpLgogCSAqIFRoZXNlIGFyZSBfYWxsXyB0aGUgUEFSQU1fRVhFQyBwYXJhbXMgdGhhdCBhZmZl Y3QgdGhpcyBub2RlLgogCSAqLwotCUJpdG1hcHNldCAgKmV4dFBhcmFtOwotCUJpdG1hcHNldCAg KmFsbFBhcmFtOworCUJpdG1hcHNldCAgKmV4dFBhcmFtIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKKwlCaXRtYXBzZXQgICphbGxQYXJhbSBwZ19ub2RlX2F0dHIocXVlcnlfanVt YmxlX2lnbm9yZSk7CiB9IFBsYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzMSwzMSAr MjQ2LDQ3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiB7CiAJUGxhbgkJcGxhbjsKIAlD bWRUeXBlCQlvcGVyYXRpb247CQkvKiBJTlNFUlQsIFVQREFURSwgREVMRVRFLCBvciBNRVJHRSAq LwotCWJvb2wJCWNhblNldFRhZzsJCS8qIGRvIHdlIHNldCB0aGUgY29tbWFuZCB0YWcvZXNfcHJv Y2Vzc2VkPyAqLwotCUluZGV4CQlub21pbmFsUmVsYXRpb247CS8qIFBhcmVudCBSVCBpbmRleCBm b3IgdXNlIG9mIEVYUExBSU4gKi8KLQlJbmRleAkJcm9vdFJlbGF0aW9uOwkvKiBSb290IFJUIGlu ZGV4LCBpZiBwYXJ0aXRpb25lZC9pbmhlcml0ZWQgKi8KKwlib29sCQljYW5TZXRUYWcgcGdfbm9k ZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBkbyB3ZSBzZXQgdGhlIGNvbW1hbmQKKwkJ CQkJCQkJCQkJCQkJCQkgKiB0YWcvZXNfcHJvY2Vzc2VkPyAqLworCUluZGV4CQlub21pbmFsUmVs YXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBQYXJlbnQgUlQgaW5k ZXggZm9yCisJCQkJCQkJCQkJCQkJCQkJCSAqIHVzZSBvZiBFWFBMQUlOICovCisJSW5kZXgJCXJv b3RSZWxhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX3J0X2luZGV4KTsJLyogUm9vdCBS VCBpbmRleCwgaWYKKwkJCQkJCQkJCQkJCQkJCQkJICogcGFydGl0aW9uZWQvaW5oZXJpdGVkICov CiAJYm9vbAkJcGFydENvbHNVcGRhdGVkOwkvKiBzb21lIHBhcnQga2V5IGluIGhpZXJhcmNoeSB1 cGRhdGVkPyAqLwotCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsJLyogaW50ZWdlciBsaXN0IG9m IFJUIGluZGV4ZXMgKi8KLQlMaXN0CSAgICp1cGRhdGVDb2xub3NMaXN0czsJLyogcGVyLXRhcmdl dC10YWJsZSB1cGRhdGVfY29sbm9zIGxpc3RzICovCi0JTGlzdAkgICAqd2l0aENoZWNrT3B0aW9u TGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUgV0NPIGxpc3RzICovCi0JY2hhcgkgICAqcmV0dXJu aW5nT2xkQWxpYXM7CS8qIGFsaWFzIGZvciBPTEQgaW4gUkVUVVJOSU5HIGxpc3RzICovCi0JY2hh cgkgICAqcmV0dXJuaW5nTmV3QWxpYXM7CS8qIGFsaWFzIGZvciBORVcgaW4gUkVUVVJOSU5HIGxp c3RzICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdHM7IC8qIHBlci10YXJnZXQtdGFibGUgUkVU VVJOSU5HIHRsaXN0cyAqLwotCUxpc3QJICAgKmZkd1ByaXZMaXN0czsJLyogcGVyLXRhcmdldC10 YWJsZSBGRFcgcHJpdmF0ZSBkYXRhIGxpc3RzICovCi0JQml0bWFwc2V0ICAqZmR3RGlyZWN0TW9k aWZ5UGxhbnM7CS8qIGluZGljZXMgb2YgRkRXIERNIHBsYW5zICovCi0JTGlzdAkgICAqcm93TWFy a3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCi0JaW50CQkJZXBxUGFy YW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KKwlMaXN0CSAg ICpyZXN1bHRSZWxhdGlvbnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9ydF9pbmRleCk7CS8q IGludGVnZXIgbGlzdCBvZiBSVAorCQkJCQkJCQkJCQkJCQkJCQkJICogaW5kZXhlcyAqLworCUxp c3QJICAgKnVwZGF0ZUNvbG5vc0xpc3RzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3Jl KTsJLyogcGVyLXRhcmdldC10YWJsZQorCQkJCQkJCQkJCQkJCQkJCQkJICogdXBkYXRlX2NvbG5v cyBsaXN0cyAqLworCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzIHBnX25vZGVfYXR0cihx dWVyeV9qdW1ibGVfaWdub3JlKTsgLyogcGVyLXRhcmdldC10YWJsZSBXQ08KKwkJCQkJCQkJCQkJ CQkJCQkJCSAqIGxpc3RzICovCisJY2hhcgkgICAqcmV0dXJuaW5nT2xkQWxpYXMgcGdfbm9kZV9h dHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBhbGlhcyBmb3IgT0xEIGluCisJCQkJCQkJCQkJ CQkJCQkJCQkgKiBSRVRVUk5JTkcgbGlzdHMgKi8KKwljaGFyCSAgICpyZXR1cm5pbmdOZXdBbGlh cyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIGFsaWFzIGZvciBORVcgaW4K KwkJCQkJCQkJCQkJCQkJCQkJCSAqIFJFVFVSTklORyBsaXN0cyAqLworCUxpc3QJICAgKnJldHVy bmluZ0xpc3RzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogcGVyLXRhcmdl dC10YWJsZQorCQkJCQkJCQkJCQkJCQkJCQkgKiBSRVRVUk5JTkcgdGxpc3RzICovCisJTGlzdAkg ICAqZmR3UHJpdkxpc3RzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsgLyogcGVy LXRhcmdldC10YWJsZSBGRFcKKwkJCQkJCQkJCQkJCQkJCQkgKiBwcml2YXRlIGRhdGEgbGlzdHMg Ki8KKwlCaXRtYXBzZXQgICpmZHdEaXJlY3RNb2RpZnlQbGFucyBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2lnbm9yZSk7IC8qIGluZGljZXMgb2YgRkRXIERNCisJCQkJCQkJCQkJCQkJCQkJCQkg KiBwbGFucyAqLworCUxpc3QJICAgKnJvd01hcmtzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVf aWdub3JlKTsgLyogUGxhblJvd01hcmtzCisJCQkJCQkJCQkJCQkJCQkgKiAobm9uLWxvY2tpbmcg b25seSkgKi8KKwlpbnQJCQllcHFQYXJhbSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7IC8qIElEIG9mIFBhcmFtIGZvcgorCQkJCQkJCQkJCQkJCQkJICogRXZhbFBsYW5RdWFsIHJl LWV2YWwgKi8KIAlPbkNvbmZsaWN0QWN0aW9uIG9uQ29uZmxpY3RBY3Rpb247CS8qIE9OIENPTkZM SUNUIGFjdGlvbiAqLwogCUxpc3QJICAgKmFyYml0ZXJJbmRleGVzOyAvKiBMaXN0IG9mIE9OIENP TkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlMaXN0CSAgICpvbkNvbmZsaWN0U2V0Owkv KiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHRhcmdldGxpc3QgKi8KIAlMaXN0CSAgICpv bkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNvbHVtbiBudW1iZXJzIGZvciBvbkNvbmZsaWN0U2V0 ICovCiAJTm9kZQkgICAqb25Db25mbGljdFdoZXJlOwkvKiBXSEVSRSBmb3IgT04gQ09ORkxJQ1Qg VVBEQVRFICovCi0JSW5kZXgJCWV4Y2xSZWxSVEk7CQkvKiBSVEkgb2YgdGhlIEVYQ0xVREVEIHBz ZXVkbyByZWxhdGlvbiAqLwotCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhl IEVYQ0xVREVEIHBzZXVkbyByZWxhdGlvbiAqLwotCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdHM7 CS8qIHBlci10YXJnZXQtdGFibGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKLQkJCQkJCQkJCSAqIE1F UkdFICovCi0JTGlzdAkgICAqbWVyZ2VKb2luQ29uZGl0aW9uczsJLyogcGVyLXRhcmdldC10YWJs ZSBqb2luIGNvbmRpdGlvbnMKLQkJCQkJCQkJCQkgKiBmb3IgTUVSR0UgKi8KKwlJbmRleAkJZXhj bFJlbFJUSSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIFJUSSBvZiB0aGUg RVhDTFVERUQKKwkJCQkJCQkJCQkJCQkJCQkgKiBwc2V1ZG8gcmVsYXRpb24gKi8KKwlMaXN0CSAg ICpleGNsUmVsVGxpc3QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOyAvKiB0bGlz dCBvZiB0aGUgRVhDTFVERUQKKwkJCQkJCQkJCQkJCQkJCQkgKiBwc2V1ZG8gcmVsYXRpb24gKi8K KwlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsgLyogcGVyLXRhcmdldC10YWJsZQorCQkJCQkJCQkJCQkJCQkJCQkgKiBsaXN0cyBvZiBh Y3Rpb25zIGZvcgorCQkJCQkJCQkJCQkJCQkJCQkgKiBNRVJHRSAqLworCUxpc3QJICAgKm1lcmdl Sm9pbkNvbmRpdGlvbnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBwZXIt dGFyZ2V0LXRhYmxlIGpvaW4KKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGNvbmRpdGlvbnMgZm9yIE1F UkdFICovCiB9IE1vZGlmeVRhYmxlOwogCiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvOwkJLyog Zm9yd2FyZCByZWZlcmVuY2UgdG8gc3RydWN0IGJlbG93ICovCkBAIC0yNjgsMTggKzI5OSwyMCBA QCBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvOwkJLyogZm9yd2FyZCByZWZlcmVuY2UgdG8gc3Ry dWN0IGJlbG93ICovCiB0eXBlZGVmIHN0cnVjdCBBcHBlbmQKIHsKIAlQbGFuCQlwbGFuOwotCUJp dG1hcHNldCAgKmFwcHJlbGlkczsJCS8qIFJUSXMgb2YgYXBwZW5kcmVsKHMpIGZvcm1lZCBieSB0 aGlzIG5vZGUgKi8KLQlMaXN0CSAgICphcHBlbmRwbGFuczsKLQlpbnQJCQluYXN5bmNwbGFuczsJ LyogIyBvZiBhc3luY2hyb25vdXMgcGxhbnMgKi8KKwlCaXRtYXBzZXQgICphcHByZWxpZHMgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBSVElzIG9mIGFwcGVuZHJlbChzKQor CQkJCQkJCQkJCQkJCQkJCSAqIGZvcm1lZCBieSB0aGlzIG5vZGUgKi8KKwlMaXN0CSAgICphcHBl bmRwbGFucyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJaW50CQkJbmFzeW5j cGxhbnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiAjIG9mIGFzeW5jaHJv bm91cworCQkJCQkJCQkJCQkJCQkJCSAqIHBsYW5zICovCiAKIAkvKgogCSAqIEFsbCAnYXBwZW5k cGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24tcGFydGlhbCBwbGFucy4gQWxsCiAJ ICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253YXJkcyBhcmUgcGFydGlhbCBwbGFu cy4KIAkgKi8KLQlpbnQJCQlmaXJzdF9wYXJ0aWFsX3BsYW47CisJaW50CQkJZmlyc3RfcGFydGlh bF9wbGFuIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIEluZm8gZm9y IHJ1bi10aW1lIHN1YnBsYW4gcHJ1bmluZzsgTlVMTCBpZiB3ZSdyZSBub3QgZG9pbmcgdGhhdCAq LwotCXN0cnVjdCBQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRfcHJ1bmVfaW5mbzsKKwlzdHJ1Y3Qg UGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm8gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5Miwy OSArMzI1LDI5IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAJUGxhbgkJcGxhbjsKIAog CS8qIFJUSXMgb2YgYXBwZW5kcmVsKHMpIGZvcm1lZCBieSB0aGlzIG5vZGUgKi8KLQlCaXRtYXBz ZXQgICphcHByZWxpZHM7CisJQml0bWFwc2V0ICAqYXBwcmVsaWRzIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAotCUxpc3QJICAgKm1lcmdlcGxhbnM7CisJTGlzdAkgICAqbWVy Z2VwbGFucyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiB0aGVzZSBm aWVsZHMgYXJlIGp1c3QgbGlrZSB0aGUgc29ydC1rZXkgaW5mbyBpbiBzdHJ1Y3QgU29ydDogKi8K IAogCS8qIG51bWJlciBvZiBzb3J0LWtleSBjb2x1bW5zICovCi0JaW50CQkJbnVtQ29sczsKKwlp bnQJCQludW1Db2xzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIHRo ZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCi0JQXR0ck51bWJlciAqc29ydENvbElk eCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisJQXR0ck51bWJlciAqc29ydENv bElkeCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAKIAkvKiBPSURzIG9mIG9wZXJhdG9ycyB0byBzb3J0IHRoZW0gYnkgKi8KLQlPaWQJCSAg ICpzb3J0T3BlcmF0b3JzIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKKwlPaWQJ CSAgICpzb3J0T3BlcmF0b3JzIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpLCBxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIE9JRHMgb2YgY29sbGF0aW9ucyAqLwotCU9pZAkJICAg KmNvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCU9pZAkJICAg KmNvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scyksIHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCiAJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCi0JYm9vbAkg ICAqbnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisJYm9vbAkg ICAqbnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVt YmxlX2lnbm9yZSk7CiAKIAkvKiBJbmZvIGZvciBydW4tdGltZSBzdWJwbGFuIHBydW5pbmc7IE5V TEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8KLQlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZv ICpwYXJ0X3BydW5lX2luZm87CisJc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVu ZV9pbmZvIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIH0gTWVyZ2VBcHBlbmQ7 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTMzMCwyMiArMzYzLDIyIEBAIHR5cGVkZWYgc3Ry dWN0IFJlY3Vyc2l2ZVVuaW9uCiAJUGxhbgkJcGxhbjsKIAogCS8qIElEIG9mIFBhcmFtIHJlcHJl c2VudGluZyB3b3JrIHRhYmxlICovCi0JaW50CQkJd3RQYXJhbTsKKwlpbnQJCQl3dFBhcmFtIHBn X25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIFJlbWFpbmluZyBmaWVsZHMg YXJlIHplcm8vbnVsbCBpbiBVTklPTiBBTEwgY2FzZSAqLwogCiAJLyogbnVtYmVyIG9mIGNvbHVt bnMgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZS1uZXNzICovCi0JaW50CQkJbnVtQ29sczsKKwlpbnQJ CQludW1Db2xzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIHRoZWly IGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCi0JQXR0ck51bWJlciAqZHVwQ29sSWR4IHBn X25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKKwlBdHRyTnVtYmVyICpkdXBDb2xJZHgg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scyksIHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwog CiAJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLwotCU9pZAkJICAgKmR1 cE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7Ci0JT2lkCQkgICAq ZHVwQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisJT2lkCQkg ICAqZHVwT3BlcmF0b3JzIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpLCBxdWVyeV9q dW1ibGVfaWdub3JlKTsKKwlPaWQJCSAgICpkdXBDb2xsYXRpb25zIHBnX25vZGVfYXR0cihhcnJh eV9zaXplKG51bUNvbHMpLCBxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIGVzdGltYXRlZCBu dW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCi0JbG9uZwkJbnVtR3JvdXBzOworCWxvbmcJCW51 bUdyb3VwcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IFJlY3Vyc2l2ZVVu aW9uOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0zNTksNyArMzkyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVjdXJzaXZlVW5pb24KIHR5cGVkZWYgc3RydWN0IEJpdG1hcEFuZAogewogCVBsYW4J CXBsYW47Ci0JTGlzdAkgICAqYml0bWFwcGxhbnM7CisJTGlzdAkgICAqYml0bWFwcGxhbnMgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogfSBCaXRtYXBBbmQ7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KQEAgLTM3Myw4ICs0MDYsOCBAQCB0eXBlZGVmIHN0cnVjdCBCaXRtYXBBbmQK IHR5cGVkZWYgc3RydWN0IEJpdG1hcE9yCiB7CiAJUGxhbgkJcGxhbjsKLQlib29sCQlpc3NoYXJl ZDsKLQlMaXN0CSAgICpiaXRtYXBwbGFuczsKKwlib29sCQlpc3NoYXJlZCBwZ19ub2RlX2F0dHIo cXVlcnlfanVtYmxlX2lnbm9yZSk7CisJTGlzdAkgICAqYml0bWFwcGxhbnMgcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogfSBCaXRtYXBPcjsKIAogLyoKQEAgLTM4OSw3ICs0MjIs OCBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuCiAJcGdfbm9kZV9hdHRyKGFic3RyYWN0KQogCiAJUGxh bgkJcGxhbjsKLQlJbmRleAkJc2NhbnJlbGlkOwkJLyogcmVsaWQgaXMgaW5kZXggaW50byB0aGUg cmFuZ2UgdGFibGUgKi8KKwlJbmRleAkJc2NhbnJlbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfcnRfaW5kZXgpOwkvKiByZWxpZCBpcyBpbmRleCBpbnRvCisJCQkJCQkJCQkJCQkJCQkJICog dGhlIHJhbmdlIHRhYmxlICovCiB9IFNjYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ1 NCw5ICs0ODgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuCiAJU2NhbgkJc2NhbjsKIAlP aWQJCQlpbmRleGlkOwkJLyogT0lEIG9mIGluZGV4IHRvIHNjYW4gKi8KIAlMaXN0CSAgICppbmRl eHF1YWw7CQkvKiBsaXN0IG9mIGluZGV4IHF1YWxzICh1c3VhbGx5IE9wRXhwcnMpICovCi0JTGlz dAkgICAqaW5kZXhxdWFsb3JpZzsJLyogdGhlIHNhbWUgaW4gb3JpZ2luYWwgZm9ybSAqLworCUxp c3QJICAgKmluZGV4cXVhbG9yaWcgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkv KiB0aGUgc2FtZSBpbiBvcmlnaW5hbAorCQkJCQkJCQkJCQkJCQkJCQkgKiBmb3JtICovCiAJTGlz dAkgICAqaW5kZXhvcmRlcmJ5OwkvKiBsaXN0IG9mIGluZGV4IE9SREVSIEJZIGV4cHJzICovCi0J TGlzdAkgICAqaW5kZXhvcmRlcmJ5b3JpZzsJLyogdGhlIHNhbWUgaW4gb3JpZ2luYWwgZm9ybSAq LworCUxpc3QJICAgKmluZGV4b3JkZXJieW9yaWcgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOyAvKiB0aGUgc2FtZSBpbiBvcmlnaW5hbAorCQkJCQkJCQkJCQkJCQkJCQkgKiBmb3Jt ICovCiAJTGlzdAkgICAqaW5kZXhvcmRlcmJ5b3BzOwkvKiBPSURzIG9mIHNvcnQgb3BzIGZvciBP UkRFUiBCWSBleHBycyAqLwogCVNjYW5EaXJlY3Rpb24gaW5kZXhvcmRlcmRpcjsJLyogZm9yd2Fy ZCBvciBiYWNrd2FyZCBvciBkb24ndCBjYXJlICovCiB9IEluZGV4U2NhbjsKQEAgLTQ5Nyw5ICs1 MzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhPbmx5U2NhbgogCVNjYW4JCXNjYW47CiAJT2lk CQkJaW5kZXhpZDsJCS8qIE9JRCBvZiBpbmRleCB0byBzY2FuICovCiAJTGlzdAkgICAqaW5kZXhx dWFsOwkJLyogbGlzdCBvZiBpbmRleCBxdWFscyAodXN1YWxseSBPcEV4cHJzKSAqLwotCUxpc3QJ ICAgKnJlY2hlY2txdWFsOwkvKiBpbmRleCBxdWFscyBpbiByZWNoZWNrYWJsZSBmb3JtICovCisJ TGlzdAkgICAqcmVjaGVja3F1YWwgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkv KiBpbmRleCBxdWFscyBpbgorCQkJCQkJCQkJCQkJCQkJCSAqIHJlY2hlY2thYmxlIGZvcm0gKi8K IAlMaXN0CSAgICppbmRleG9yZGVyYnk7CS8qIGxpc3Qgb2YgaW5kZXggT1JERVIgQlkgZXhwcnMg Ki8KLQlMaXN0CSAgICppbmRleHRsaXN0OwkJLyogVGFyZ2V0RW50cnkgbGlzdCBkZXNjcmliaW5n IGluZGV4J3MgY29scyAqLworCUxpc3QJICAgKmluZGV4dGxpc3QgcGdfbm9kZV9hdHRyKHF1ZXJ5 X2p1bWJsZV9pZ25vcmUpOwkvKiBUYXJnZXRFbnRyeSBsaXN0CisJCQkJCQkJCQkJCQkJCQkJICog ZGVzY3JpYmluZyBpbmRleCdzCisJCQkJCQkJCQkJCQkJCQkJICogY29scyAqLwogCVNjYW5EaXJl Y3Rpb24gaW5kZXhvcmRlcmRpcjsJLyogZm9yd2FyZCBvciBiYWNrd2FyZCBvciBkb24ndCBjYXJl ICovCiB9IEluZGV4T25seVNjYW47CiAKQEAgLTUyNCw5ICs1NjMsMTEgQEAgdHlwZWRlZiBzdHJ1 Y3QgQml0bWFwSW5kZXhTY2FuCiB7CiAJU2NhbgkJc2NhbjsKIAlPaWQJCQlpbmRleGlkOwkJLyog T0lEIG9mIGluZGV4IHRvIHNjYW4gKi8KLQlib29sCQlpc3NoYXJlZDsJCS8qIENyZWF0ZSBzaGFy ZWQgYml0bWFwIGlmIHNldCAqLworCWJvb2wJCWlzc2hhcmVkIHBnX25vZGVfYXR0cihxdWVyeV9q dW1ibGVfaWdub3JlKTsgLyogQ3JlYXRlIHNoYXJlZCBiaXRtYXAKKwkJCQkJCQkJCQkJCQkJCSAq IGlmIHNldCAqLwogCUxpc3QJICAgKmluZGV4cXVhbDsJCS8qIGxpc3Qgb2YgaW5kZXggcXVhbHMg KE9wRXhwcnMpICovCi0JTGlzdAkgICAqaW5kZXhxdWFsb3JpZzsJLyogdGhlIHNhbWUgaW4gb3Jp Z2luYWwgZm9ybSAqLworCUxpc3QJICAgKmluZGV4cXVhbG9yaWcgcGdfbm9kZV9hdHRyKHF1ZXJ5 X2p1bWJsZV9pZ25vcmUpOwkvKiB0aGUgc2FtZSBpbiBvcmlnaW5hbAorCQkJCQkJCQkJCQkJCQkJ CQkgKiBmb3JtICovCiB9IEJpdG1hcEluZGV4U2NhbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpA QCAtNTQxLDcgKzU4Miw4IEBAIHR5cGVkZWYgc3RydWN0IEJpdG1hcEluZGV4U2NhbgogdHlwZWRl ZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW4KIHsKIAlTY2FuCQlzY2FuOwotCUxpc3QJICAgKmJpdG1h cHF1YWxvcmlnOyAvKiBpbmRleCBxdWFscywgaW4gc3RhbmRhcmQgZXhwciBmb3JtICovCisJTGlz dAkgICAqYml0bWFwcXVhbG9yaWcgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkv KiBpbmRleCBxdWFscywgaW4KKwkJCQkJCQkJCQkJCQkJCQkJICogc3RhbmRhcmQgZXhwciBmb3Jt ICovCiB9IEJpdG1hcEhlYXBTY2FuOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC02MDEsOCAr NjQzLDggQEAgdHlwZWRlZiBlbnVtIFN1YnF1ZXJ5U2NhblN0YXR1cwogdHlwZWRlZiBzdHJ1Y3Qg U3VicXVlcnlTY2FuCiB7CiAJU2NhbgkJc2NhbjsKLQlQbGFuCSAgICpzdWJwbGFuOwotCVN1YnF1 ZXJ5U2NhblN0YXR1cyBzY2Fuc3RhdHVzOworCVBsYW4JICAgKnN1YnBsYW4gcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCVN1YnF1ZXJ5U2NhblN0YXR1cyBzY2Fuc3RhdHVzIHBn X25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIH0gU3VicXVlcnlTY2FuOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCkBAIC02NDMsOCArNjg1LDExIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl RnVuY1NjYW4KIHR5cGVkZWYgc3RydWN0IEN0ZVNjYW4KIHsKIAlTY2FuCQlzY2FuOwotCWludAkJ CWN0ZVBsYW5JZDsJCS8qIElEIG9mIGluaXQgU3ViUGxhbiBmb3IgQ1RFICovCi0JaW50CQkJY3Rl UGFyYW07CQkvKiBJRCBvZiBQYXJhbSByZXByZXNlbnRpbmcgQ1RFIG91dHB1dCAqLworCWludAkJ CWN0ZVBsYW5JZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIElEIG9mIGlu aXQgU3ViUGxhbgorCQkJCQkJCQkJCQkJCQkJCSAqIGZvciBDVEUgKi8KKwlpbnQJCQljdGVQYXJh bSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIElEIG9mIFBhcmFtCisJCQkJ CQkJCQkJCQkJCQkgKiByZXByZXNlbnRpbmcgQ1RFCisJCQkJCQkJCQkJCQkJCQkgKiBvdXRwdXQg Ki8KIH0gQ3RlU2NhbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjY0LDcgKzcwOSw5IEBA IHR5cGVkZWYgc3RydWN0IE5hbWVkVHVwbGVzdG9yZVNjYW4KIHR5cGVkZWYgc3RydWN0IFdvcmtU YWJsZVNjYW4KIHsKIAlTY2FuCQlzY2FuOwotCWludAkJCXd0UGFyYW07CQkvKiBJRCBvZiBQYXJh bSByZXByZXNlbnRpbmcgd29yayB0YWJsZSAqLworCWludAkJCXd0UGFyYW0gcGdfbm9kZV9hdHRy KHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBJRCBvZiBQYXJhbQorCQkJCQkJCQkJCQkJCQkJICog cmVwcmVzZW50aW5nIHdvcmsKKwkJCQkJCQkJCQkJCQkJCSAqIHRhYmxlICovCiB9IFdvcmtUYWJs ZVNjYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTcxMSwxNyArNzU4LDI2IEBAIHR5cGVk ZWYgc3RydWN0IEZvcmVpZ25TY2FuCiB7CiAJU2NhbgkJc2NhbjsKIAlDbWRUeXBlCQlvcGVyYXRp b247CQkvKiBTRUxFQ1QvSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KLQlJbmRleAkJcmVzdWx0UmVs YXRpb247IC8qIGRpcmVjdCBtb2RpZmljYXRpb24gdGFyZ2V0J3MgUlQgaW5kZXggKi8KLQlPaWQJ CQljaGVja0FzVXNlcjsJLyogdXNlciB0byBwZXJmb3JtIHRoZSBzY2FuIGFzOyAwIG1lYW5zIHRv Ci0JCQkJCQkJCSAqIGNoZWNrIGFzIGN1cnJlbnQgdXNlciAqLworCUluZGV4CQlyZXN1bHRSZWxh dGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIGRpcmVjdCBtb2RpZmlj YXRpb24KKwkJCQkJCQkJCQkJCQkJCQkJICogdGFyZ2V0J3MgUlQgaW5kZXggKi8KKwlPaWQJCQlj aGVja0FzVXNlciBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIHVzZXIgdG8g cGVyZm9ybSB0aGUKKwkJCQkJCQkJCQkJCQkJCQkgKiBzY2FuIGFzOyAwIG1lYW5zIHRvCisJCQkJ CQkJCQkJCQkJCQkJICogY2hlY2sgYXMgY3VycmVudCB1c2VyICovCiAJT2lkCQkJZnNfc2VydmVy OwkJLyogT0lEIG9mIGZvcmVpZ24gc2VydmVyICovCi0JTGlzdAkgICAqZmR3X2V4cHJzOwkJLyog ZXhwcmVzc2lvbnMgdGhhdCBGRFcgbWF5IGV2YWx1YXRlICovCi0JTGlzdAkgICAqZmR3X3ByaXZh dGU7CS8qIHByaXZhdGUgZGF0YSBmb3IgRkRXICovCi0JTGlzdAkgICAqZmR3X3NjYW5fdGxpc3Q7 IC8qIG9wdGlvbmFsIHRsaXN0IGRlc2NyaWJpbmcgc2NhbiB0dXBsZSAqLwotCUxpc3QJICAgKmZk d19yZWNoZWNrX3F1YWxzOwkvKiBvcmlnaW5hbCBxdWFscyBub3QgaW4gc2Nhbi5wbGFuLnF1YWwg Ki8KLQlCaXRtYXBzZXQgICpmc19yZWxpZHM7CQkvKiBiYXNlK09KIFJUSXMgZ2VuZXJhdGVkIGJ5 IHRoaXMgc2NhbiAqLwotCUJpdG1hcHNldCAgKmZzX2Jhc2VfcmVsaWRzOyAvKiBiYXNlIFJUSXMg Z2VuZXJhdGVkIGJ5IHRoaXMgc2NhbiAqLwotCWJvb2wJCWZzU3lzdGVtQ29sOwkvKiB0cnVlIGlm IGFueSAic3lzdGVtIGNvbHVtbiIgaXMgbmVlZGVkICovCisJTGlzdAkgICAqZmR3X2V4cHJzIHBn X25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogZXhwcmVzc2lvbnMgdGhhdCBGRFcK KwkJCQkJCQkJCQkJCQkJCQkgKiBtYXkgZXZhbHVhdGUgKi8KKwlMaXN0CSAgICpmZHdfcHJpdmF0 ZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIHByaXZhdGUgZGF0YSBmb3Ig RkRXICovCisJTGlzdAkgICAqZmR3X3NjYW5fdGxpc3QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwkvKiBvcHRpb25hbCB0bGlzdAorCQkJCQkJCQkJCQkJCQkJCQkgKiBkZXNjcmli aW5nIHNjYW4gdHVwbGUgKi8KKwlMaXN0CSAgICpmZHdfcmVjaGVja19xdWFscyBwZ19ub2RlX2F0 dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIG9yaWdpbmFsIHF1YWxzIG5vdCBpbgorCQkJCQkJ CQkJCQkJCQkJCQkJICogc2Nhbi5wbGFuLnF1YWwgKi8KKwlCaXRtYXBzZXQgICpmc19yZWxpZHMg cGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBiYXNlK09KIFJUSXMKKwkJCQkJ CQkJCQkJCQkJCQkgKiBnZW5lcmF0ZWQgYnkgdGhpcworCQkJCQkJCQkJCQkJCQkJCSAqIHNjYW4g Ki8KKwlCaXRtYXBzZXQgICpmc19iYXNlX3JlbGlkcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxl X2lnbm9yZSk7CS8qIGJhc2UgUlRJcyBnZW5lcmF0ZWQKKwkJCQkJCQkJCQkJCQkJCQkJICogYnkg dGhpcyBzY2FuICovCisJYm9vbAkJZnNTeXN0ZW1Db2wgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwkvKiB0cnVlIGlmIGFueSAic3lzdGVtCisJCQkJCQkJCQkJCQkJCQkJICogY29s dW1uIiBpcyBuZWVkZWQgKi8KIH0gRm9yZWlnblNjYW47CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0K QEAgLTc0MiwyMCArNzk4LDI3IEBAIHN0cnVjdCBDdXN0b21TY2FuTWV0aG9kczsKIHR5cGVkZWYg c3RydWN0IEN1c3RvbVNjYW4KIHsKIAlTY2FuCQlzY2FuOwotCXVpbnQzMgkJZmxhZ3M7CQkJLyog bWFzayBvZiBDVVNUT01QQVRIXyogZmxhZ3MsIHNlZQotCQkJCQkJCQkgKiBub2Rlcy9leHRlbnNp YmxlLmggKi8KLQlMaXN0CSAgICpjdXN0b21fcGxhbnM7CS8qIGxpc3Qgb2YgUGxhbiBub2Rlcywg aWYgYW55ICovCi0JTGlzdAkgICAqY3VzdG9tX2V4cHJzOwkvKiBleHByZXNzaW9ucyB0aGF0IGN1 c3RvbSBjb2RlIG1heSBldmFsdWF0ZSAqLwotCUxpc3QJICAgKmN1c3RvbV9wcml2YXRlOyAvKiBw cml2YXRlIGRhdGEgZm9yIGN1c3RvbSBjb2RlICovCi0JTGlzdAkgICAqY3VzdG9tX3NjYW5fdGxp c3Q7CS8qIG9wdGlvbmFsIHRsaXN0IGRlc2NyaWJpbmcgc2NhbiB0dXBsZSAqLwotCUJpdG1hcHNl dCAgKmN1c3RvbV9yZWxpZHM7CS8qIFJUSXMgZ2VuZXJhdGVkIGJ5IHRoaXMgc2NhbiAqLworCXVp bnQzMgkJZmxhZ3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBtYXNrIG9m IENVU1RPTVBBVEhfKgorCQkJCQkJCQkJCQkJCQkJICogZmxhZ3MsIHNlZQorCQkJCQkJCQkJCQkJ CQkJICogbm9kZXMvZXh0ZW5zaWJsZS5oICovCisJTGlzdAkgICAqY3VzdG9tX3BsYW5zIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsgLyogbGlzdCBvZiBQbGFuIG5vZGVzLAorCQkJ CQkJCQkJCQkJCQkJCSAqIGlmIGFueSAqLworCUxpc3QJICAgKmN1c3RvbV9leHBycyBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIGV4cHJlc3Npb25zIHRoYXQKKwkJCQkJCQkJ CQkJCQkJCQkgKiBjdXN0b20gY29kZSBtYXkKKwkJCQkJCQkJCQkJCQkJCQkgKiBldmFsdWF0ZSAq LworCUxpc3QJICAgKmN1c3RvbV9wcml2YXRlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsJLyogcHJpdmF0ZSBkYXRhIGZvcgorCQkJCQkJCQkJCQkJCQkJCQkgKiBjdXN0b20gY29k ZSAqLworCUxpc3QJICAgKmN1c3RvbV9zY2FuX3RsaXN0IHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsJLyogb3B0aW9uYWwgdGxpc3QKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGRlc2Ny aWJpbmcgc2NhbiB0dXBsZSAqLworCUJpdG1hcHNldCAgKmN1c3RvbV9yZWxpZHMgcGdfbm9kZV9h dHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBSVElzIGdlbmVyYXRlZCBieQorCQkJCQkJCQkJ CQkJCQkJCQkgKiB0aGlzIHNjYW4gKi8KIAogCS8qCiAJICogTk9URTogVGhlIG1ldGhvZCBmaWVs ZCBvZiBDdXN0b21TY2FuIGlzIHJlcXVpcmVkIHRvIGJlIGEgcG9pbnRlciB0byBhCiAJICogc3Rh dGljIHRhYmxlIG9mIGNhbGxiYWNrIGZ1bmN0aW9ucy4gIFNvIHdlIGRvbid0IGNvcHkgdGhlIHRh YmxlIGl0c2VsZiwKIAkgKiBqdXN0IHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwgb25lLgogCSAqLwot CWNvbnN0IHN0cnVjdCBDdXN0b21TY2FuTWV0aG9kcyAqbWV0aG9kczsKKwljb25zdCBzdHJ1Y3Qg Q3VzdG9tU2Nhbk1ldGhvZHMgKm1ldGhvZHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOwogfSBDdXN0b21TY2FuOwogCiAvKgpAQCAtNzkyLDcgKzg1NSw3IEBAIHR5cGVkZWYgc3Ry dWN0IEpvaW4KIAogCVBsYW4JCXBsYW47CiAJSm9pblR5cGUJam9pbnR5cGU7Ci0JYm9vbAkJaW5u ZXJfdW5pcXVlOworCWJvb2wJCWlubmVyX3VuaXF1ZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxl X2lnbm9yZSk7CiAJTGlzdAkgICAqam9pbnF1YWw7CQkvKiBKT0lOIHF1YWxzIChpbiBhZGRpdGlv biB0byBwbGFuLnF1YWwpICovCiB9IEpvaW47CiAKQEAgLTgxNSw3ICs4NzgsNyBAQCB0eXBlZGVm IHN0cnVjdCBOZXN0TG9vcAogCiB0eXBlZGVmIHN0cnVjdCBOZXN0TG9vcFBhcmFtCiB7Ci0JcGdf bm9kZV9hdHRyKG5vX2VxdWFsLCBub19xdWVyeV9qdW1ibGUpCisJcGdfbm9kZV9hdHRyKG5vX2Vx dWFsKQogCiAJTm9kZVRhZwkJdHlwZTsKIAlpbnQJCQlwYXJhbW5vOwkJLyogbnVtYmVyIG9mIHRo ZSBQQVJBTV9FWEVDIFBhcmFtIHRvIHNldCAqLwpAQCAtODM4LDcgKzkwMSw3IEBAIHR5cGVkZWYg c3RydWN0IE1lcmdlSm9pbgogCUpvaW4JCWpvaW47CiAKIAkvKiBDYW4gd2Ugc2tpcCBtYXJrL3Jl c3RvcmUgY2FsbHM/ICovCi0JYm9vbAkJc2tpcF9tYXJrX3Jlc3RvcmU7CisJYm9vbAkJc2tpcF9t YXJrX3Jlc3RvcmUgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogbWVy Z2VjbGF1c2VzIGFzIGV4cHJlc3Npb24gdHJlZXMgKi8KIAlMaXN0CSAgICptZXJnZWNsYXVzZXM7 CkBAIC04OTQsMTMgKzk1NywxMyBAQCB0eXBlZGVmIHN0cnVjdCBNZW1vaXplCiAJUGxhbgkJcGxh bjsKIAogCS8qIHNpemUgb2YgdGhlIHR3byBhcnJheXMgYmVsb3cgKi8KLQlpbnQJCQludW1LZXlz OworCWludAkJCW51bUtleXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJ LyogaGFzaCBvcGVyYXRvcnMgZm9yIGVhY2gga2V5ICovCi0JT2lkCQkgICAqaGFzaE9wZXJhdG9y cyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1LZXlzKSk7CisJT2lkCQkgICAqaGFzaE9wZXJh dG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1LZXlzKSwgcXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAKIAkvKiBjb2xsYXRpb25zIGZvciBlYWNoIGtleSAqLwotCU9pZAkJICAgKmNvbGxhdGlv bnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtS2V5cykpOworCU9pZAkJICAgKmNvbGxhdGlv bnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtS2V5cyksIHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwogCiAJLyogY2FjaGUga2V5cyBpbiB0aGUgZm9ybSBvZiBleHBycyBjb250YWluaW5nIHBhcmFt ZXRlcnMgKi8KIAlMaXN0CSAgICpwYXJhbV9leHByczsKQEAgLTkwOSw3ICs5NzIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBNZW1vaXplCiAJICogdHJ1ZSBpZiB0aGUgY2FjaGUgZW50cnkgc2hvdWxkIGJl IG1hcmtlZCBhcyBjb21wbGV0ZSBhZnRlciB3ZSBzdG9yZSB0aGUKIAkgKiBmaXJzdCB0dXBsZSBp biBpdC4KIAkgKi8KLQlib29sCQlzaW5nbGVyb3c7CisJYm9vbAkJc2luZ2xlcm93IHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qCiAJICogdHJ1ZSB3aGVuIGNhY2hlIGtl eSBzaG91bGQgYmUgY29tcGFyZWQgYml0IGJ5IGJpdCwgZmFsc2Ugd2hlbiB1c2luZwpAQCAtOTIx LDEwICs5ODQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZQogCSAqIFRoZSBtYXhpbXVtIG51 bWJlciBvZiBlbnRyaWVzIHRoYXQgdGhlIHBsYW5uZXIgZXhwZWN0cyB3aWxsIGZpdCBpbiB0aGUK IAkgKiBjYWNoZSwgb3IgMCBpZiB1bmtub3duCiAJICovCi0JdWludDMyCQllc3RfZW50cmllczsK Kwl1aW50MzIJCWVzdF9lbnRyaWVzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsK IAogCS8qIHBhcmFtaWRzIGZyb20gcGFyYW1fZXhwcnMgKi8KLQlCaXRtYXBzZXQgICprZXlwYXJh bWlkczsKKwlCaXRtYXBzZXQgICprZXlwYXJhbWlkcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxl X2lnbm9yZSk7CiB9IE1lbW9pemU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMDcsMzEg KzEwNzAsMzEgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnCiAJQWdnU3BsaXQJYWdnc3BsaXQ7CiAKIAkv KiBudW1iZXIgb2YgZ3JvdXBpbmcgY29sdW1ucyAqLwotCWludAkJCW51bUNvbHM7CisJaW50CQkJ bnVtQ29scyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiB0aGVpciBp bmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCUF0dHJOdW1iZXIgKmdycENvbElkeCBwZ19u b2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisJQXR0ck51bWJlciAqZ3JwQ29sSWR4IHBn X25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpLCBxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAog CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KLQlPaWQJCSAgICpncnBP cGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwotCU9pZAkJICAgKmdy cENvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCU9pZAkJICAg KmdycE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVt YmxlX2lnbm9yZSk7CisJT2lkCQkgICAqZ3JwQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBlc3RpbWF0ZWQgbnVt YmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwotCWxvbmcJCW51bUdyb3VwczsKKwlsb25nCQludW1H cm91cHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogZm9yIHBhc3Mt YnktcmVmIHRyYW5zaXRpb24gZGF0YSAqLwotCXVpbnQ2NAkJdHJhbnNpdGlvblNwYWNlOworCXVp bnQ2NAkJdHJhbnNpdGlvblNwYWNlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsK IAogCS8qIElEcyBvZiBQYXJhbXMgdXNlZCBpbiBBZ2dyZWYgaW5wdXRzICovCi0JQml0bWFwc2V0 ICAqYWdnUGFyYW1zOworCUJpdG1hcHNldCAgKmFnZ1BhcmFtcyBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2lnbm9yZSk7CiAKIAkvKiBOb3RlOiBwbGFubmVyIHByb3ZpZGVzIG51bUdyb3VwcyAm IGFnZ1BhcmFtcyBvbmx5IGluIEhBU0hFRC9NSVhFRCBjYXNlICovCiAKIAkvKiBncm91cGluZyBz ZXRzIHRvIHVzZSAqLwotCUxpc3QJICAgKmdyb3VwaW5nU2V0czsKKwlMaXN0CSAgICpncm91cGlu Z1NldHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogY2hhaW5lZCBB Z2cvU29ydCBub2RlcyAqLwotCUxpc3QJICAgKmNoYWluOworCUxpc3QJICAgKmNoYWluIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIH0gQWdnOwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tCkBAIC0xMDQzLDQzICsxMTA2LDQzIEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZwogCVBs YW4JCXBsYW47CiAKIAkvKiBJRCByZWZlcmVuY2VkIGJ5IHdpbmRvdyBmdW5jdGlvbnMgKi8KLQlJ bmRleAkJd2lucmVmOworCUluZGV4CQl3aW5yZWYgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOwogCiAJLyogbnVtYmVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uIGNsYXVzZSAqLwot CWludAkJCXBhcnROdW1Db2xzOworCWludAkJCXBhcnROdW1Db2xzIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIHRoZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0 ICovCi0JQXR0ck51bWJlciAqcGFydENvbElkeCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShwYXJ0 TnVtQ29scykpOworCUF0dHJOdW1iZXIgKnBhcnRDb2xJZHggcGdfbm9kZV9hdHRyKGFycmF5X3Np emUocGFydE51bUNvbHMpLCBxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIGVxdWFsaXR5IG9w ZXJhdG9ycyBmb3IgcGFydGl0aW9uIGNvbHVtbnMgKi8KLQlPaWQJCSAgICpwYXJ0T3BlcmF0b3Jz IHBnX25vZGVfYXR0cihhcnJheV9zaXplKHBhcnROdW1Db2xzKSk7CisJT2lkCQkgICAqcGFydE9w ZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShwYXJ0TnVtQ29scyksIHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCiAJLyogY29sbGF0aW9ucyBmb3IgcGFydGl0aW9uIGNvbHVtbnMgKi8KLQlP aWQJCSAgICpwYXJ0Q29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShwYXJ0TnVtQ29s cykpOworCU9pZAkJICAgKnBhcnRDb2xsYXRpb25zIHBnX25vZGVfYXR0cihhcnJheV9zaXplKHBh cnROdW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBudW1iZXIgb2YgY29sdW1u cyBpbiBvcmRlcmluZyBjbGF1c2UgKi8KLQlpbnQJCQlvcmROdW1Db2xzOworCWludAkJCW9yZE51 bUNvbHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogdGhlaXIgaW5k ZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KLQlBdHRyTnVtYmVyICpvcmRDb2xJZHggcGdfbm9k ZV9hdHRyKGFycmF5X3NpemUob3JkTnVtQ29scykpOworCUF0dHJOdW1iZXIgKm9yZENvbElkeCBw Z19ub2RlX2F0dHIoYXJyYXlfc2l6ZShvcmROdW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7 CiAKIAkvKiBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIG9yZGVyaW5nIGNvbHVtbnMgKi8KLQlPaWQJ CSAgICpvcmRPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUob3JkTnVtQ29scykpOwor CU9pZAkJICAgKm9yZE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShvcmROdW1Db2xz KSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBjb2xsYXRpb25zIGZvciBvcmRlcmluZyBj b2x1bW5zICovCi0JT2lkCQkgICAqb3JkQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6 ZShvcmROdW1Db2xzKSk7CisJT2lkCQkgICAqb3JkQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJy YXlfc2l6ZShvcmROdW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBmcmFtZV9j bGF1c2Ugb3B0aW9ucywgc2VlIFdpbmRvd0RlZiAqLwotCWludAkJCWZyYW1lT3B0aW9uczsKKwlp bnQJCQlmcmFtZU9wdGlvbnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJ LyogZXhwcmVzc2lvbiBmb3Igc3RhcnRpbmcgYm91bmQsIGlmIGFueSAqLwotCU5vZGUJICAgKnN0 YXJ0T2Zmc2V0OworCU5vZGUJICAgKnN0YXJ0T2Zmc2V0IHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKIAogCS8qIGV4cHJlc3Npb24gZm9yIGVuZGluZyBib3VuZCwgaWYgYW55ICov Ci0JTm9kZQkgICAqZW5kT2Zmc2V0OworCU5vZGUJICAgKmVuZE9mZnNldCBwZ19ub2RlX2F0dHIo cXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBxdWFsIHRvIGhlbHAgc2hvcnQtY2lyY3VpdCBl eGVjdXRpb24gKi8KLQlMaXN0CSAgICpydW5Db25kaXRpb247CisJTGlzdAkgICAqcnVuQ29uZGl0 aW9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIHJ1bkNvbmRpdGlv biBmb3IgZGlzcGxheSBpbiBFWFBMQUlOICovCiAJTGlzdAkgICAqcnVuQ29uZGl0aW9uT3JpZzsK QEAgLTEwODcsMjUgKzExNTAsMjUgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdnCiAJLyogdGhl c2UgZmllbGRzIGFyZSB1c2VkIHdpdGggUkFOR0Ugb2Zmc2V0IFBSRUNFRElORy9GT0xMT1dJTkc6 ICovCiAKIAkvKiBpbl9yYW5nZSBmdW5jdGlvbiBmb3Igc3RhcnRPZmZzZXQgKi8KLQlPaWQJCQlz dGFydEluUmFuZ2VGdW5jOworCU9pZAkJCXN0YXJ0SW5SYW5nZUZ1bmMgcGdfbm9kZV9hdHRyKHF1 ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogaW5fcmFuZ2UgZnVuY3Rpb24gZm9yIGVuZE9mZnNl dCAqLwotCU9pZAkJCWVuZEluUmFuZ2VGdW5jOworCU9pZAkJCWVuZEluUmFuZ2VGdW5jIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIGNvbGxhdGlvbiBmb3IgaW5fcmFu Z2UgdGVzdHMgKi8KLQlPaWQJCQlpblJhbmdlQ29sbDsKKwlPaWQJCQlpblJhbmdlQ29sbCBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiB1c2UgQVNDIHNvcnQgb3JkZXIg Zm9yIGluX3JhbmdlIHRlc3RzPyAqLwotCWJvb2wJCWluUmFuZ2VBc2M7CisJYm9vbAkJaW5SYW5n ZUFzYyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBudWxscyBzb3J0 IGZpcnN0IGZvciBpbl9yYW5nZSB0ZXN0cz8gKi8KLQlib29sCQlpblJhbmdlTnVsbHNGaXJzdDsK Kwlib29sCQlpblJhbmdlTnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAKIAkvKgogCSAqIGZhbHNlIGZvciBhbGwgYXBhcnQgZnJvbSB0aGUgV2luZG93QWdnIHRo YXQncyBjbG9zZXN0IHRvIHRoZSByb290IG9mCiAJICogdGhlIHBsYW4KIAkgKi8KLQlib29sCQl0 b3BXaW5kb3c7CisJYm9vbAkJdG9wV2luZG93IHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKIH0gV2luZG93QWdnOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTE3LDE2ICsx MTgwLDE2IEBAIHR5cGVkZWYgc3RydWN0IFVuaXF1ZQogCVBsYW4JCXBsYW47CiAKIAkvKiBudW1i ZXIgb2YgY29sdW1ucyB0byBjaGVjayBmb3IgdW5pcXVlbmVzcyAqLwotCWludAkJCW51bUNvbHM7 CisJaW50CQkJbnVtQ29scyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkv KiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCUF0dHJOdW1iZXIgKnVuaXFD b2xJZHggcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCUF0dHJOdW1iZXIgKnVu aXFDb2xJZHggcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scyksIHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOwogCiAJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUgd2l0aCAqLwotCU9p ZAkJICAgKnVuaXFPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwor CU9pZAkJICAgKnVuaXFPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scyks IHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogY29sbGF0aW9ucyBmb3IgZXF1YWxpdHkgY29t cGFyaXNvbnMgKi8KLQlPaWQJCSAgICp1bmlxQ29sbGF0aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShudW1Db2xzKSk7CisJT2lkCQkgICAqdW5pcUNvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFy cmF5X3NpemUobnVtQ29scyksIHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogfSBVbmlxdWU7CiAKIC8q IC0tLS0tLS0tLS0tLQpAQCAtMTE0NCwxMSArMTIwNywxOSBAQCB0eXBlZGVmIHN0cnVjdCBHYXRo ZXIKIHsKIAlQbGFuCQlwbGFuOwogCWludAkJCW51bV93b3JrZXJzOwkvKiBwbGFubmVkIG51bWJl ciBvZiB3b3JrZXIgcHJvY2Vzc2VzICovCi0JaW50CQkJcmVzY2FuX3BhcmFtOwkvKiBJRCBvZiBQ YXJhbSB0aGF0IHNpZ25hbHMgYSByZXNjYW4sIG9yIC0xICovCi0JYm9vbAkJc2luZ2xlX2NvcHk7 CS8qIGRvbid0IGV4ZWN1dGUgcGxhbiBtb3JlIHRoYW4gb25jZSAqLwotCWJvb2wJCWludmlzaWJs ZTsJCS8qIHN1cHByZXNzIEVYUExBSU4gZGlzcGxheSAoZm9yIHRlc3RpbmcpPyAqLwotCUJpdG1h cHNldCAgKmluaXRQYXJhbTsJCS8qIHBhcmFtIGlkJ3Mgb2YgaW5pdHBsYW5zIHdoaWNoIGFyZSBy ZWZlcnJlZAotCQkJCQkJCQkgKiBhdCBnYXRoZXIgb3Igb25lIG9mIGl0J3MgY2hpbGQgbm9kZSAq LworCWludAkJCXJlc2Nhbl9wYXJhbSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7 IC8qIElEIG9mIFBhcmFtIHRoYXQKKwkJCQkJCQkJCQkJCQkJCQkgKiBzaWduYWxzIGEgcmVzY2Fu LCBvcgorCQkJCQkJCQkJCQkJCQkJCSAqIC0xICovCisJYm9vbAkJc2luZ2xlX2NvcHkgcGdfbm9k ZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwkvKiBkb24ndCBleGVjdXRlIHBsYW4KKwkJCQkJ CQkJCQkJCQkJCQkgKiBtb3JlIHRoYW4gb25jZSAqLworCWJvb2wJCWludmlzaWJsZSBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIHN1cHByZXNzIEVYUExBSU4KKwkJCQkJCQkJ CQkJCQkJCQkgKiBkaXNwbGF5IChmb3IKKwkJCQkJCQkJCQkJCQkJCQkgKiB0ZXN0aW5nKT8gKi8K KwlCaXRtYXBzZXQgICppbml0UGFyYW0gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwkvKiBwYXJhbSBpZCdzIG9mCisJCQkJCQkJCQkJCQkJCQkJICogaW5pdHBsYW5zIHdoaWNoIGFy ZQorCQkJCQkJCQkJCQkJCQkJCSAqIHJlZmVycmVkIGF0IGdhdGhlciBvcgorCQkJCQkJCQkJCQkJ CQkJCSAqIG9uZSBvZiBpdCdzIGNoaWxkCisJCQkJCQkJCQkJCQkJCQkJICogbm9kZSAqLwogfSBH YXRoZXI7CiAKIC8qIC0tLS0tLS0tLS0tLQpAQCAtMTE2MywzMCArMTIzNCwzMCBAQCB0eXBlZGVm IHN0cnVjdCBHYXRoZXJNZXJnZQogCWludAkJCW51bV93b3JrZXJzOwogCiAJLyogSUQgb2YgUGFy YW0gdGhhdCBzaWduYWxzIGEgcmVzY2FuLCBvciAtMSAqLwotCWludAkJCXJlc2Nhbl9wYXJhbTsK KwlpbnQJCQlyZXNjYW5fcGFyYW0gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwog CiAJLyogcmVtYWluaW5nIGZpZWxkcyBhcmUganVzdCBsaWtlIHRoZSBzb3J0LWtleSBpbmZvIGlu IHN0cnVjdCBTb3J0ICovCiAKIAkvKiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLwotCWlu dAkJCW51bUNvbHM7CisJaW50CQkJbnVtQ29scyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CiAKIAkvKiB0aGVpciBpbmRleGVzIGluIHRoZSB0YXJnZXQgbGlzdCAqLwotCUF0dHJO dW1iZXIgKnNvcnRDb2xJZHggcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOworCUF0 dHJOdW1iZXIgKnNvcnRDb2xJZHggcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scyksIHF1 ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogT0lEcyBvZiBvcGVyYXRvcnMgdG8gc29ydCB0aGVt IGJ5ICovCi0JT2lkCQkgICAqc29ydE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShu dW1Db2xzKSk7CisJT2lkCQkgICAqc29ydE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6 ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBPSURzIG9mIGNvbGxhdGlv bnMgKi8KLQlPaWQJCSAgICpjb2xsYXRpb25zIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNv bHMpKTsKKwlPaWQJCSAgICpjb2xsYXRpb25zIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNv bHMpLCBxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0 aW9ucyAqLwotCWJvb2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVt Q29scykpOworCWJvb2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVt Q29scyksIHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyoKIAkgKiBwYXJhbSBpZCdzIG9mIGlu aXRwbGFucyB3aGljaCBhcmUgcmVmZXJyZWQgYXQgZ2F0aGVyIG1lcmdlIG9yIG9uZSBvZgogCSAq IGl0J3MgY2hpbGQgbm9kZQogCSAqLwotCUJpdG1hcHNldCAgKmluaXRQYXJhbTsKKwlCaXRtYXBz ZXQgICppbml0UGFyYW0gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogfSBHYXRo ZXJNZXJnZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIwNiwxMSArMTI3NywxNiBAQCB0 eXBlZGVmIHN0cnVjdCBIYXNoCiAJICogbmVlZGVkIHRvIHB1dCB0aGVtIGludG8gdGhlIGhhc2h0 YWJsZS4KIAkgKi8KIAlMaXN0CSAgICpoYXNoa2V5czsJCS8qIGhhc2gga2V5cyBmb3IgdGhlIGhh c2hqb2luIGNvbmRpdGlvbiAqLwotCU9pZAkJCXNrZXdUYWJsZTsJCS8qIG91dGVyIGpvaW4ga2V5 J3MgdGFibGUgT0lELCBvciBJbnZhbGlkT2lkICovCi0JQXR0ck51bWJlcglza2V3Q29sdW1uOwkJ Lyogb3V0ZXIgam9pbiBrZXkncyBjb2x1bW4gIywgb3IgemVybyAqLwotCWJvb2wJCXNrZXdJbmhl cml0OwkvKiBpcyBvdXRlciBqb2luIHJlbCBhbiBpbmhlcml0YW5jZSB0cmVlPyAqLworCU9pZAkJ CXNrZXdUYWJsZSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIG91dGVyIGpv aW4ga2V5J3MKKwkJCQkJCQkJCQkJCQkJCQkgKiB0YWJsZSBPSUQsIG9yCisJCQkJCQkJCQkJCQkJ CQkJICogSW52YWxpZE9pZCAqLworCUF0dHJOdW1iZXIJc2tld0NvbHVtbiBwZ19ub2RlX2F0dHIo cXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIG91dGVyIGpvaW4ga2V5J3MKKwkJCQkJCQkJCQkJCQkJ CQkgKiBjb2x1bW4gIywgb3IgemVybyAqLworCWJvb2wJCXNrZXdJbmhlcml0IHBnX25vZGVfYXR0 cihxdWVyeV9qdW1ibGVfaWdub3JlKTsJLyogaXMgb3V0ZXIgam9pbiByZWwgYW4KKwkJCQkJCQkJ CQkJCQkJCQkgKiBpbmhlcml0YW5jZSB0cmVlPyAqLwogCS8qIGFsbCBvdGhlciBpbmZvIGlzIGlu IHRoZSBwYXJlbnQgSGFzaEpvaW4gbm9kZSAqLwotCUNhcmRpbmFsaXR5IHJvd3NfdG90YWw7CQkv KiBlc3RpbWF0ZSB0b3RhbCByb3dzIGlmIHBhcmFsbGVsX2F3YXJlICovCisJQ2FyZGluYWxpdHkg cm93c190b3RhbCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIGVzdGltYXRl IHRvdGFsIHJvd3MKKwkJCQkJCQkJCQkJCQkJCQkgKiBpZiBwYXJhbGxlbF9hd2FyZSAqLwogfSBI YXNoOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjI4LDIwICsxMzA0LDIwIEBAIHR5cGVk ZWYgc3RydWN0IFNldE9wCiAJU2V0T3BTdHJhdGVneSBzdHJhdGVneTsKIAogCS8qIG51bWJlciBv ZiBjb2x1bW5zIHRvIGNvbXBhcmUgKi8KLQlpbnQJCQludW1Db2xzOworCWludAkJCW51bUNvbHMg cGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogdGhlaXIgaW5kZXhlcyBp biB0aGUgdGFyZ2V0IGxpc3QgKi8KLQlBdHRyTnVtYmVyICpjbXBDb2xJZHggcGdfbm9kZV9hdHRy KGFycmF5X3NpemUobnVtQ29scykpOworCUF0dHJOdW1iZXIgKmNtcENvbElkeCBwZ19ub2RlX2F0 dHIoYXJyYXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBjb21w YXJpc29uIG9wZXJhdG9ycyAoZWl0aGVyIGVxdWFsaXR5IG9wZXJhdG9ycyBvciBzb3J0IG9wZXJh dG9ycykgKi8KLQlPaWQJCSAgICpjbXBPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUo bnVtQ29scykpOwotCU9pZAkJICAgKmNtcENvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3Np emUobnVtQ29scykpOworCU9pZAkJICAgKmNtcE9wZXJhdG9ycyBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CisJT2lkCQkgICAqY21wQ29sbGF0 aW9ucyBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAKIAkvKiBudWxscy1maXJzdCBmbGFncyBpZiBzb3J0aW5nLCBvdGhlcndpc2Ugbm90IGlu dGVyZXN0aW5nICovCi0JYm9vbAkgICAqY21wTnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlf c2l6ZShudW1Db2xzKSk7CisJYm9vbAkgICAqY21wTnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJy YXlfc2l6ZShudW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBlc3RpbWF0ZWQg bnVtYmVyIG9mIGdyb3VwcyBpbiBsZWZ0IGlucHV0ICovCi0JbG9uZwkJbnVtR3JvdXBzOworCWxv bmcJCW51bUdyb3VwcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IFNldE9w OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjU2LDggKzEzMzIsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgU2V0T3AKIHR5cGVkZWYgc3RydWN0IExvY2tSb3dzCiB7CiAJUGxhbgkJcGxhbjsKLQlM aXN0CSAgICpyb3dNYXJrczsJCS8qIGEgbGlzdCBvZiBQbGFuUm93TWFyaydzICovCi0JaW50CQkJ ZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KKwlM aXN0CSAgICpyb3dNYXJrcyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7IC8qIGEg bGlzdCBvZgorCQkJCQkJCQkJCQkJCQkJICogUGxhblJvd01hcmsncyAqLworCWludAkJCWVwcVBh cmFtIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsgLyogSUQgb2YgUGFyYW0gZm9y CisJCQkJCQkJCQkJCQkJCQkgKiBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogfSBMb2NrUm93czsK IAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI3MiwyNSArMTM1MCwyNSBAQCB0eXBlZGVmIHN0 cnVjdCBMaW1pdAogCVBsYW4JCXBsYW47CiAKIAkvKiBPRkZTRVQgcGFyYW1ldGVyLCBvciBOVUxM IGlmIG5vbmUgKi8KLQlOb2RlCSAgICpsaW1pdE9mZnNldDsKKwlOb2RlCSAgICpsaW1pdE9mZnNl dCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBDT1VOVCBwYXJhbWV0 ZXIsIG9yIE5VTEwgaWYgbm9uZSAqLwotCU5vZGUJICAgKmxpbWl0Q291bnQ7CisJTm9kZQkgICAq bGltaXRDb3VudCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBsaW1p dCB0eXBlICovCi0JTGltaXRPcHRpb24gbGltaXRPcHRpb247CisJTGltaXRPcHRpb24gbGltaXRP cHRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogbnVtYmVyIG9m IGNvbHVtbnMgdG8gY2hlY2sgZm9yIHNpbWlsYXJpdHkgICovCi0JaW50CQkJdW5pcU51bUNvbHM7 CisJaW50CQkJdW5pcU51bUNvbHMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwog CiAJLyogdGhlaXIgaW5kZXhlcyBpbiB0aGUgdGFyZ2V0IGxpc3QgKi8KLQlBdHRyTnVtYmVyICp1 bmlxQ29sSWR4IHBnX25vZGVfYXR0cihhcnJheV9zaXplKHVuaXFOdW1Db2xzKSk7CisJQXR0ck51 bWJlciAqdW5pcUNvbElkeCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZSh1bmlxTnVtQ29scyksIHF1 ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCiAJLyogZXF1YWxpdHkgb3BlcmF0b3JzIHRvIGNvbXBhcmUg d2l0aCAqLwotCU9pZAkJICAgKnVuaXFPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUo dW5pcU51bUNvbHMpKTsKKwlPaWQJCSAgICp1bmlxT3BlcmF0b3JzIHBnX25vZGVfYXR0cihhcnJh eV9zaXplKHVuaXFOdW1Db2xzKSwgcXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKIAkvKiBjb2xsYXRp b25zIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucyAqLwotCU9pZAkJICAgKnVuaXFDb2xsYXRpb25z IHBnX25vZGVfYXR0cihhcnJheV9zaXplKHVuaXFOdW1Db2xzKSk7CisJT2lkCQkgICAqdW5pcUNv bGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUodW5pcU51bUNvbHMpLCBxdWVyeV9qdW1i bGVfaWdub3JlKTsKIH0gTGltaXQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA1OWU3YmIy NmJiLi5jMDk3ODVhMDcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTA3NCw4ICsxMDc0LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgU3ViTGluawogICovCiB0eXBlZGVmIHN0cnVjdCBTdWJQbGFuCiB7 Ci0JcGdfbm9kZV9hdHRyKG5vX3F1ZXJ5X2p1bWJsZSkKLQogCUV4cHIJCXhwcjsKIAkvKiBGaWVs ZHMgY29waWVkIGZyb20gb3JpZ2luYWwgU3ViTGluazogKi8KIAlTdWJMaW5rVHlwZSBzdWJMaW5r VHlwZTsJLyogc2VlIGFib3ZlICovCkBAIC0xMTA2LDggKzExMDQsOSBAQCB0eXBlZGVmIHN0cnVj dCBTdWJQbGFuCiAJTGlzdAkgICAqcGFyUGFyYW07CQkvKiBpbmRpY2VzIG9mIGlucHV0IFBhcmFt cyBmcm9tIHBhcmVudCBwbGFuICovCiAJTGlzdAkgICAqYXJnczsJCQkvKiBleHBycyB0byBwYXNz IGFzIHBhclBhcmFtIHZhbHVlcyAqLwogCS8qIEVzdGltYXRlZCBleGVjdXRpb24gY29zdHM6ICov Ci0JQ29zdAkJc3RhcnR1cF9jb3N0OwkvKiBvbmUtdGltZSBzZXR1cCBjb3N0ICovCi0JQ29zdAkJ cGVyX2NhbGxfY29zdDsJLyogY29zdCBmb3IgZWFjaCBzdWJwbGFuIGV2YWx1YXRpb24gKi8KKwlD b3N0CQlzdGFydHVwX2Nvc3QgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOyAvKiBv bmUtdGltZSBzZXR1cCBjb3N0ICovCisJQ29zdAkJcGVyX2NhbGxfY29zdCBwZ19ub2RlX2F0dHIo cXVlcnlfanVtYmxlX2lnbm9yZSk7CS8qIGNvc3QgZm9yIGVhY2ggc3VicGxhbgorCQkJCQkJCQkJ CQkJCQkJCQkgKiBldmFsdWF0aW9uICovCiB9IFN1YlBsYW47CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlq dW1ibGUuaAppbmRleCA1YWZhNmYzNjA1Li42YzNiNzg3YjQ2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUgUVVFUllKVU1CTEVfSAogCiAjaW5jbHVk ZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgogCiAv KgogICogU3RydWN0IGZvciB0cmFja2luZyBsb2NhdGlvbnMvbGVuZ3RocyBvZiBjb25zdGFudHMg ZHVyaW5nIG5vcm1hbGl6YXRpb24KQEAgLTQ4LDYgKzQ5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnVt YmxlU3RhdGUKIAogCS8qIGhpZ2hlc3QgUGFyYW0gaWQgd2UndmUgc2VlbiwgaW4gb3JkZXIgdG8g c3RhcnQgbm9ybWFsaXphdGlvbiBjb3JyZWN0bHkgKi8KIAlpbnQJCQloaWdoZXN0X2V4dGVybl9w YXJhbV9pZDsKKworCS8qIHBsYW5uZXIgZ2xvYmFsIGluZm8gZm9yIHJlc29sdmluZyBSVCBpbmRl eGVzIHdoZW4gcGxhbiBqdW1ibGluZyAqLworCVBsYW5uZXJHbG9iYWwgKmdsb2I7CiB9IEp1bWJs ZVN0YXRlOwogCiAvKiBWYWx1ZXMgZm9yIHRoZSBjb21wdXRlX3F1ZXJ5X2lkIEdVQyAqLwpAQCAt NTksMTUgKzYzLDI3IEBAIGVudW0gQ29tcHV0ZVF1ZXJ5SWRUeXBlCiAJQ09NUFVURV9RVUVSWV9J RF9SRUdSRVNTLAogfTsKIAorLyogVmFsdWVzIGZvciB0aGUgY29tcHV0ZV9wbGFuX2lkIEdVQyAq LworZW51bSBDb21wdXRlUGxhbklkVHlwZQoreworCUNPTVBVVEVfUExBTl9JRF9PRkYsCisJQ09N UFVURV9QTEFOX0lEX09OLAorCUNPTVBVVEVfUExBTl9JRF9BVVRPLAorCUNPTVBVVEVfUExBTl9J RF9SRUdSRVNTLAorfTsKKwogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgY29tcHV0ZV9xdWVyeV9pZDsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tcHV0ZV9w bGFuX2lkOwogCiAKIGV4dGVybiBjb25zdCBjaGFyICpDbGVhblF1ZXJ5dGV4dChjb25zdCBjaGFy ICpxdWVyeSwgaW50ICpsb2NhdGlvbiwgaW50ICpsZW4pOwogZXh0ZXJuIEp1bWJsZVN0YXRlICpK dW1ibGVRdWVyeShRdWVyeSAqcXVlcnkpOwogZXh0ZXJuIHZvaWQgRW5hYmxlUXVlcnlJZCh2b2lk KTsKK2V4dGVybiB2b2lkIEVuYWJsZVBsYW5JZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgcXVlcnlfaWRfZW5hYmxlZDsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIHBsYW5faWRf ZW5hYmxlZDsKIAogLyoKICAqIFJldHVybnMgd2hldGhlciBxdWVyeSBpZGVudGlmaWVyIGNvbXB1 dGF0aW9uIGhhcyBiZWVuIGVuYWJsZWQsIGVpdGhlcgpAQCAtODMsOCArOTksMjIgQEAgSXNRdWVy eUlkRW5hYmxlZCh2b2lkKQogCXJldHVybiBxdWVyeV9pZF9lbmFibGVkOwogfQogCi0vKiBGdW5j dGlvbnMgaW50ZW5kZWQgZm9yIG90aGVyIHVzZXJzIG9mIGp1bWJsaW5nIChlLmcuIHBsYW4ganVt YmxpbmcpICovCi1leHRlcm4gSnVtYmxlU3RhdGUgKkluaXRpYWxpemVKdW1ibGVTdGF0ZShib29s IHJlY29yZF9jbG9jYXRpb25zKTsKKy8qCisgKiBSZXR1cm5zIHdoZXRoZXIgcGxhbiBpZGVudGlm aWVyIGNvbXB1dGF0aW9uIGhhcyBiZWVuIGVuYWJsZWQsIGVpdGhlcgorICogZGlyZWN0bHkgaW4g dGhlIEdVQyBvciBieSBhIG1vZHVsZSB3aGVuIHRoZSBzZXR0aW5nIGlzICdhdXRvJy4KKyAqLwor c3RhdGljIGlubGluZSBib29sCitJc1BsYW5JZEVuYWJsZWQodm9pZCkKK3sKKwlpZiAoY29tcHV0 ZV9wbGFuX2lkID09IENPTVBVVEVfUExBTl9JRF9PRkYpCisJCXJldHVybiBmYWxzZTsKKwlpZiAo Y29tcHV0ZV9wbGFuX2lkID09IENPTVBVVEVfUExBTl9JRF9PTikKKwkJcmV0dXJuIHRydWU7CisJ cmV0dXJuIHBsYW5faWRfZW5hYmxlZDsKK30KKworLyogRnVuY3Rpb25zIGNhbGxlZCBmb3IgcGxh biBqdW1ibGluZyBvciBleHRlbnNpb25zIGRvaW5nIHRoZWlyIG93biBqdW1ibGluZyAqLworZXh0 ZXJuIEp1bWJsZVN0YXRlICpJbml0aWFsaXplSnVtYmxlU3RhdGUoYm9vbCByZWNvcmRfY2xvY2F0 aW9ucywgUGxhbm5lckdsb2JhbCAqZ2xvYik7CiBleHRlcm4gdm9pZCBBcHBlbmRKdW1ibGUoSnVt YmxlU3RhdGUgKmpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaXRlbSwgU2l6ZSBzaXplKTsK IGV4dGVybiB2b2lkIEp1bWJsZU5vZGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7 CiBleHRlcm4gdWludDY0IEhhc2hKdW1ibGVTdGF0ZShKdW1ibGVTdGF0ZSAqanN0YXRlKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IGQzZDRmZjZjNWMuLjQzN2E0Y2VjNWIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaApAQCAtMTcwLDYgKzE3MCw5IEBAIHR5cGVkZWYg c3RydWN0IFBnQmFja2VuZFN0YXR1cwogCiAJLyogcXVlcnkgaWRlbnRpZmllciwgb3B0aW9uYWxs eSBjb21wdXRlZCB1c2luZyBwb3N0X3BhcnNlX2FuYWx5emVfaG9vayAqLwogCXVpbnQ2NAkJc3Rf cXVlcnlfaWQ7CisKKwkvKiBwbGFuIGlkZW50aWZpZXIsIG9wdGlvbmFsbHkgY29tcHV0ZWQgYWZ0 ZXIgcGxhbm5pbmcgKi8KKwl1aW50NjQJCXN0X3BsYW5faWQ7CiB9IFBnQmFja2VuZFN0YXR1czsK IAogCkBAIC0zMTYsNiArMzE5LDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X2NsZWFyX2JhY2tlbmRf YWN0aXZpdHlfc25hcHNob3Qodm9pZCk7CiAvKiBBY3Rpdml0eSByZXBvcnRpbmcgZnVuY3Rpb25z ICovCiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0 ZSwgY29uc3QgY2hhciAqY21kX3N0cik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5 X2lkKHVpbnQ2NCBxdWVyeV9pZCwgYm9vbCBmb3JjZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfcmVw b3J0X3BsYW5faWQodWludDY0IHF1ZXJ5X2lkLCB1aW50NjQgcGxhbl9pZCwgYm9vbCBmb3JjZSk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3RlbXBmaWxlKHNpemVfdCBmaWxlc2l6ZSk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FwcG5hbWUoY29uc3QgY2hhciAqYXBwbmFtZSk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3hhY3RfdGltZXN0YW1wKFRpbWVzdGFtcFR6IHRzdGFt cCk7CkBAIC0zMjMsNiArMzI3LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfYmFj a2VuZF9jdXJyZW50X2FjdGl2aXR5KGludCBwaWQsIGJvb2wgY2hlY2tVc2VyKTsKIGV4dGVybiBj b25zdCBjaGFyICpwZ3N0YXRfZ2V0X2NyYXNoZWRfYmFja2VuZF9hY3Rpdml0eShpbnQgcGlkLCBj aGFyICpidWZmZXIsCiAJCQkJCQkJCQkJCQkJICAgaW50IGJ1Zmxlbik7CiBleHRlcm4gdWludDY0 IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQodm9pZCk7CitleHRlcm4gdWludDY0IHBnc3RhdF9nZXRf bXlfcGxhbl9pZCh2b2lkKTsKIGV4dGVybiBCYWNrZW5kVHlwZSBwZ3N0YXRfZ2V0X2JhY2tlbmRf dHlwZV9ieV9wcm9jX251bWJlcihQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwogCiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IGVlMzFlNDFkNTAuLjhiZmEzYzFhNWYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtNjk5LDYgKzY5OSwxNyBAQCBz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIGNyZWF0ZSB0YWJsZSB0ZXN0 X2N0YXMgYXMgc2VsZWN0IDEnKTsKICBRdWVyeSBJZGVudGlmaWVyOiBOCiAoMyByb3dzKQogCist LSBUZXN0IGNvbXB1dGVfcGxhbl9pZAorc2V0IGNvbXB1dGVfcGxhbl9pZCA9IG9uOworc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluICh2ZXJib3NlKSBzZWxlY3QgKiBmcm9tIGludDhfdGJs IGk4Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLmludDhfdGJsIGk4 ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikKKyAgIE91dHB1dDogcTEsIHEyCisgUXVl cnkgSWRlbnRpZmllcjogTgorIFBsYW4gSWRlbnRpZmllcjogTgorKDQgcm93cykKKwogLS0gVGVz dCBTRVJJQUxJWkUgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5 emUsYnVmZmVycyBvZmYsc2VyaWFsaXplKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAppbmRleCA4NTZhODM0OWM1Li5lMjBjYzdkMjhjIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dApAQCAtMTc2MCw5ICsxNzYwLDEwIEBAIHBnX3N0YXRfYWN0aXZpdHl8 IFNFTEVDVCBzLmRhdGlkLAogICAgIHMuYmFja2VuZF94aWQsCiAgICAgcy5iYWNrZW5kX3htaW4s CiAgICAgcy5xdWVyeV9pZCwKKyAgICBzLnBsYW5faWQsCiAgICAgcy5xdWVyeSwKICAgICBzLmJh Y2tlbmRfdHlwZQotICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIp IHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFj a2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBj bGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2ws IHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVu dF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdz c19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dl dF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNh dGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFj dF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50 X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5k X3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMs IHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0 aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlf aWQsIHBsYW5faWQpCiAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgocy5kYXRpZCA9 IGQub2lkKSkpCiAgICAgIExFRlQgSk9JTiBwZ19hdXRoaWQgdSBPTiAoKHMudXNlc3lzaWQgPSB1 Lm9pZCkpKTsKIHBnX3N0YXRfYWxsX2luZGV4ZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKQEAg LTE4ODYsNyArMTg4Nyw3IEBAIHBnX3N0YXRfZ3NzYXBpfCBTRUxFQ1QgcGlkLAogICAgIGdzc19w cmluYyBBUyBwcmluY2lwYWwsCiAgICAgZ3NzX2VuYyBBUyBlbmNyeXB0ZWQsCiAgICAgZ3NzX2Rl bGVnYXRpb24gQVMgY3JlZGVudGlhbHNfZGVsZWdhdGVkCi0gICBGUk9NIHBnX3N0YXRfZ2V0X2Fj dGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9u X25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0 YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRk ciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1p biwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3Ns X2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBn c3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkK KyAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlk LCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5 cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBz dGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBi YWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwg c3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3Ns X2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgZ3NzX2RlbGVnYXRpb24s IGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBwbGFuX2lkKQogICBXSEVSRSAoY2xpZW50X3BvcnQgSVMg Tk9UIE5VTEwpOwogcGdfc3RhdF9pb3wgU0VMRUNUIGJhY2tlbmRfdHlwZSwKICAgICBvYmplY3Qs CkBAIC0yMDkyLDcgKzIwOTMsNyBAQCBwZ19zdGF0X3JlcGxpY2F0aW9ufCBTRUxFQ1Qgcy5waWQs CiAgICAgdy5zeW5jX3ByaW9yaXR5LAogICAgIHcuc3luY19zdGF0ZSwKICAgICB3LnJlcGx5X3Rp bWUKLSAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlk LCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZl bnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3Rh cnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3Bv cnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJz aW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFs LCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdh dGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NICgocGdfc3RhdF9nZXRfYWN0aXZp dHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFt ZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQs IHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBj bGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBi YWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xp ZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19w cmluYywgZ3NzX2VuYywgZ3NzX2RlbGVnYXRpb24sIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBwbGFu X2lkKQogICAgICBKT0lOIHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzKCkgdyhwaWQsIHN0YXRlLCBz ZW50X2xzbiwgd3JpdGVfbHNuLCBmbHVzaF9sc24sIHJlcGxheV9sc24sIHdyaXRlX2xhZywgZmx1 c2hfbGFnLCByZXBsYXlfbGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5jX3N0YXRlLCByZXBseV90aW1l KSBPTiAoKHMucGlkID0gdy5waWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgo cy51c2VzeXNpZCA9IHUub2lkKSkpOwogcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNU IHMuc2xvdF9uYW1lLApAQCAtMjEyNiw3ICsyMTI3LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBw aWQsCiAgICAgc3NsX2NsaWVudF9kbiBBUyBjbGllbnRfZG4sCiAgICAgc3NsX2NsaWVudF9zZXJp YWwgQVMgY2xpZW50X3NlcmlhbCwKICAgICBzc2xfaXNzdWVyX2RuIEFTIGlzc3Vlcl9kbgotICAg RlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVz ZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRl X2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tl bmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xj aXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNz dWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVh ZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6Omlu dGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBx dWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFy dCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3Ru YW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBl LCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3Ns X2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19l bmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgcGxhbl9pZCkKICAgV0hF UkUgKGNsaWVudF9wb3J0IElTIE5PVCBOVUxMKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxF Q1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsCmluZGV4IDBiYWZhODcwNDkuLmQ3ODdhZDJjZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsCkBAIC0xNjcsNiArMTY3LDEwIEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAo dmVyYm9zZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0IGV4cGxhaW5fZmls dGVyKCdleHBsYWluICh2ZXJib3NlKSBkZWNsYXJlIHRlc3RfY3VyIGN1cnNvciBmb3Igc2VsZWN0 ICogZnJvbSBpbnQ4X3RibCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluICh2ZXJi b3NlKSBjcmVhdGUgdGFibGUgdGVzdF9jdGFzIGFzIHNlbGVjdCAxJyk7CiAKKy0tIFRlc3QgY29t cHV0ZV9wbGFuX2lkCitzZXQgY29tcHV0ZV9wbGFuX2lkID0gb247CitzZWxlY3QgZXhwbGFpbl9m aWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKKwog LS0gVGVzdCBTRVJJQUxJWkUgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4g KGFuYWx5emUsYnVmZmVycyBvZmYsc2VyaWFsaXplKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4 Jyk7CiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsc2VyaWFsaXplIHRl eHQsYnVmZmVycyx0aW1pbmcgb2ZmKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci0tIAoy LjQ3LjEKCg== --000000000000d3aec6062c70c852 Content-Type: application/x-patch; name="v2-0001-Allow-using-jumbling-logic-outside-of-query-jumbl.patch" Content-Disposition: attachment; filename="v2-0001-Allow-using-jumbling-logic-outside-of-query-jumbl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6al556h0 RnJvbSA5NWIwNWNhMWRjZDg2ODIzODMzZTJiMDY2MTc4MWZiMDRlODg1OWE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDMxIERlYyAyMDI0IDE1OjA1OjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAxLzRdIEFs bG93IHVzaW5nIGp1bWJsaW5nIGxvZ2ljIG91dHNpZGUgb2YgcXVlcnkganVtYmxlCiB1bml0IGZp bGUKClRoaXMgY2FuIGJlIHVzZWZ1bCBlaXRoZXIgZm9yIGp1bWJsaW5nIGV4cHJlc3Npb25zIGlu IG90aGVyIGNvbnRleHRzCihlLmcuIHRvIGNhbGN1bGF0ZSBhIHBsYW4ganVtYmxlKSwgb3IgdG8g YWxsb3cgZXh0ZW5zaW9ucyB0byB1c2UKYSBtb2RpZmllZCBqdW1ibGluZyBsb2dpYyBtb3JlIGVh c2lseS4KClRoaXMgaW50ZW50aW9uYWxseSBzdXBwb3J0cyB0aGUgdXNlIGNhc2Ugd2hlcmUgYSBz ZXBhcmF0ZSBqdW1ibGluZyBsb2dpYwpkb2VzIG5vdCBjYXJlIGFib3V0IHJlY29yZGluZyBjb25z dGFudHMsIGFzIHRoZSBxdWVyeSBqdW1ibGUgZG9lcy4KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9x dWVyeWp1bWJsZWZ1bmNzLmMgfCA1OSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oICAgICAgfCAgNiArKysKIDIgZmlsZXMgY2hhbmdl ZCwgNDEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlq dW1ibGVmdW5jcy5jCmluZGV4IGIxMDNhMjgxOTMuLjU0NWQ4ZWRjYWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9xdWVyeWp1bWJsZWZ1bmNzLmMKQEAgLTUxLDEwICs1MSw3IEBAIGludAkJCWNvbXB1dGVfcXVl cnlfaWQgPSBDT01QVVRFX1FVRVJZX0lEX0FVVE87CiAgKi8KIGJvb2wJCXF1ZXJ5X2lkX2VuYWJs ZWQgPSBmYWxzZTsKIAotc3RhdGljIHZvaWQgQXBwZW5kSnVtYmxlKEp1bWJsZVN0YXRlICpqc3Rh dGUsCi0JCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaXRlbSwgU2l6ZSBzaXplKTsKIHN0YXRp YyB2b2lkIFJlY29yZENvbnN0TG9jYXRpb24oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgaW50IGxvY2F0 aW9uKTsKLXN0YXRpYyB2b2lkIF9qdW1ibGVOb2RlKEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUg Km5vZGUpOwogc3RhdGljIHZvaWQgX2p1bWJsZUFfQ29uc3QoSnVtYmxlU3RhdGUgKmpzdGF0ZSwg Tm9kZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlTGlzdChKdW1ibGVTdGF0ZSAqanN0YXRl LCBOb2RlICpub2RlKTsKIHN0YXRpYyB2b2lkIF9qdW1ibGVWYXJpYWJsZVNldFN0bXQoSnVtYmxl U3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7CkBAIC0xMDksMjggKzEwNiw0MiBAQCBDbGVhblF1 ZXJ5dGV4dChjb25zdCBjaGFyICpxdWVyeSwgaW50ICpsb2NhdGlvbiwgaW50ICpsZW4pCiB9CiAK IEp1bWJsZVN0YXRlICoKLUp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSkKK0luaXRpYWxpemVKdW1i bGVTdGF0ZShib29sIHJlY29yZF9jbG9jYXRpb25zKQogewotCUp1bWJsZVN0YXRlICpqc3RhdGUg PSBOVUxMOwotCi0JQXNzZXJ0KElzUXVlcnlJZEVuYWJsZWQoKSk7Ci0KLQlqc3RhdGUgPSAoSnVt YmxlU3RhdGUgKikgcGFsbG9jKHNpemVvZihKdW1ibGVTdGF0ZSkpOworCUp1bWJsZVN0YXRlICpq c3RhdGUgPSAoSnVtYmxlU3RhdGUgKikgcGFsbG9jMChzaXplb2YoSnVtYmxlU3RhdGUpKTsKIAog CS8qIFNldCB1cCB3b3Jrc3BhY2UgZm9yIHF1ZXJ5IGp1bWJsaW5nICovCiAJanN0YXRlLT5qdW1i bGUgPSAodW5zaWduZWQgY2hhciAqKSBwYWxsb2MoSlVNQkxFX1NJWkUpOwogCWpzdGF0ZS0+anVt YmxlX2xlbiA9IDA7Ci0JanN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplID0gMzI7Ci0JanN0YXRl LT5jbG9jYXRpb25zID0gKExvY2F0aW9uTGVuICopCi0JCXBhbGxvYyhqc3RhdGUtPmNsb2NhdGlv bnNfYnVmX3NpemUgKiBzaXplb2YoTG9jYXRpb25MZW4pKTsKLQlqc3RhdGUtPmNsb2NhdGlvbnNf Y291bnQgPSAwOwotCWpzdGF0ZS0+aGlnaGVzdF9leHRlcm5fcGFyYW1faWQgPSAwOworCisJaWYg KHJlY29yZF9jbG9jYXRpb25zKQorCXsKKwkJanN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplID0g MzI7CisJCWpzdGF0ZS0+Y2xvY2F0aW9ucyA9IChMb2NhdGlvbkxlbiAqKQorCQkJcGFsbG9jKGpz dGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSAqIHNpemVvZihMb2NhdGlvbkxlbikpOworCX0KKwor CXJldHVybiBqc3RhdGU7Cit9CisKK3VpbnQ2NAorSGFzaEp1bWJsZVN0YXRlKEp1bWJsZVN0YXRl ICpqc3RhdGUpCit7CisJcmV0dXJuIERhdHVtR2V0VUludDY0KGhhc2hfYW55X2V4dGVuZGVkKGpz dGF0ZS0+anVtYmxlLAorCQkJCQkJCQkJCQlqc3RhdGUtPmp1bWJsZV9sZW4sCisJCQkJCQkJCQkJ CTApKTsKK30KKworSnVtYmxlU3RhdGUgKgorSnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KQorewor CUp1bWJsZVN0YXRlICpqc3RhdGUgPSBJbml0aWFsaXplSnVtYmxlU3RhdGUodHJ1ZSk7CisKKwlB c3NlcnQoSXNRdWVyeUlkRW5hYmxlZCgpKTsKIAogCS8qIENvbXB1dGUgcXVlcnkgSUQgYW5kIG1h cmsgdGhlIFF1ZXJ5IG5vZGUgd2l0aCBpdCAqLwotCV9qdW1ibGVOb2RlKGpzdGF0ZSwgKE5vZGUg KikgcXVlcnkpOwotCXF1ZXJ5LT5xdWVyeUlkID0gRGF0dW1HZXRVSW50NjQoaGFzaF9hbnlfZXh0 ZW5kZWQoanN0YXRlLT5qdW1ibGUsCi0JCQkJCQkJCQkJCQkJICBqc3RhdGUtPmp1bWJsZV9sZW4s Ci0JCQkJCQkJCQkJCQkJICAwKSk7CisJSnVtYmxlTm9kZShqc3RhdGUsIChOb2RlICopIHF1ZXJ5 KTsKKwlxdWVyeS0+cXVlcnlJZCA9IEhhc2hKdW1ibGVTdGF0ZShqc3RhdGUpOwogCiAJLyoKIAkg KiBJZiB3ZSBhcmUgdW5sdWNreSBlbm91Z2ggdG8gZ2V0IGEgaGFzaCBvZiB6ZXJvLCB1c2UgMSBp bnN0ZWFkIGZvcgpAQCAtMTY0LDcgKzE3NSw3IEBAIEVuYWJsZVF1ZXJ5SWQodm9pZCkKICAqIEFw cGVuZEp1bWJsZTogQXBwZW5kIGEgdmFsdWUgdGhhdCBpcyBzdWJzdGFudGl2ZSBpbiBhIGdpdmVu IHF1ZXJ5IHRvCiAgKiB0aGUgY3VycmVudCBqdW1ibGUuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBBcHBlbmRKdW1ibGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAq aXRlbSwgU2l6ZSBzaXplKQogewogCXVuc2lnbmVkIGNoYXIgKmp1bWJsZSA9IGpzdGF0ZS0+anVt YmxlOwpAQCAtMjA1LDcgKzIxNiw3IEBAIHN0YXRpYyB2b2lkCiBSZWNvcmRDb25zdExvY2F0aW9u KEp1bWJsZVN0YXRlICpqc3RhdGUsIGludCBsb2NhdGlvbikKIHsKIAkvKiAtMSBpbmRpY2F0ZXMg dW5rbm93biBvciB1bmRlZmluZWQgbG9jYXRpb24gKi8KLQlpZiAobG9jYXRpb24gPj0gMCkKKwlp ZiAobG9jYXRpb24gPj0gMCAmJiBqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgPiAwKQogCXsK IAkJLyogZW5sYXJnZSBhcnJheSBpZiBuZWVkZWQgKi8KIAkJaWYgKGpzdGF0ZS0+Y2xvY2F0aW9u c19jb3VudCA+PSBqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUpCkBAIC0yMjQsNyArMjM1LDcg QEAgUmVjb3JkQ29uc3RMb2NhdGlvbihKdW1ibGVTdGF0ZSAqanN0YXRlLCBpbnQgbG9jYXRpb24p CiB9CiAKICNkZWZpbmUgSlVNQkxFX05PREUoaXRlbSkgXAotCV9qdW1ibGVOb2RlKGpzdGF0ZSwg KE5vZGUgKikgZXhwci0+aXRlbSkKKwlKdW1ibGVOb2RlKGpzdGF0ZSwgKE5vZGUgKikgZXhwci0+ aXRlbSkKICNkZWZpbmUgSlVNQkxFX0xPQ0FUSU9OKGxvY2F0aW9uKSBcCiAJUmVjb3JkQ29uc3RM b2NhdGlvbihqc3RhdGUsIGV4cHItPmxvY2F0aW9uKQogI2RlZmluZSBKVU1CTEVfRklFTEQoaXRl bSkgXApAQCAtMjM5LDggKzI1MCw4IEBAIGRvIHsgXAogCiAjaW5jbHVkZSAicXVlcnlqdW1ibGVm dW5jcy5mdW5jcy5jIgogCi1zdGF0aWMgdm9pZAotX2p1bWJsZU5vZGUoSnVtYmxlU3RhdGUgKmpz dGF0ZSwgTm9kZSAqbm9kZSkKK3ZvaWQKK0p1bWJsZU5vZGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwg Tm9kZSAqbm9kZSkKIHsKIAlOb2RlCSAgICpleHByID0gbm9kZTsKIApAQCAtMzA1LDcgKzMxNiw3 IEBAIF9qdW1ibGVMaXN0KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJewogCQlj YXNlIFRfTGlzdDoKIAkJCWZvcmVhY2gobCwgZXhwcikKLQkJCQlfanVtYmxlTm9kZShqc3RhdGUs IGxmaXJzdChsKSk7CisJCQkJSnVtYmxlTm9kZShqc3RhdGUsIGxmaXJzdChsKSk7CiAJCQlicmVh azsKIAkJY2FzZSBUX0ludExpc3Q6CiAJCQlmb3JlYWNoKGwsIGV4cHIpCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlq dW1ibGUuaAppbmRleCA1MGViOTU2NjU4Li41YWZhNmYzNjA1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKQEAgLTgzLDQgKzgzLDEwIEBAIElzUXVlcnlJZEVuYWJsZWQodm9pZCkKIAlyZXR1cm4g cXVlcnlfaWRfZW5hYmxlZDsKIH0KIAorLyogRnVuY3Rpb25zIGludGVuZGVkIGZvciBvdGhlciB1 c2VycyBvZiBqdW1ibGluZyAoZS5nLiBwbGFuIGp1bWJsaW5nKSAqLworZXh0ZXJuIEp1bWJsZVN0 YXRlICpJbml0aWFsaXplSnVtYmxlU3RhdGUoYm9vbCByZWNvcmRfY2xvY2F0aW9ucyk7CitleHRl cm4gdm9pZCBBcHBlbmRKdW1ibGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgY29uc3QgdW5zaWduZWQg Y2hhciAqaXRlbSwgU2l6ZSBzaXplKTsKK2V4dGVybiB2b2lkIEp1bWJsZU5vZGUoSnVtYmxlU3Rh dGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7CitleHRlcm4gdWludDY0IEhhc2hKdW1ibGVTdGF0ZShK dW1ibGVTdGF0ZSAqanN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFFVRVJZSlVNQkxFX0ggKi8K LS0gCjIuNDcuMQoK --000000000000d3aec6062c70c852 Content-Type: application/x-patch; name="v2-0002-Cumulative-statistics-Add-pgstat_drop_entries_of_.patch" Content-Disposition: attachment; filename="v2-0002-Cumulative-statistics-Add-pgstat_drop_entries_of_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6al556l1 RnJvbSBjMzI3MmEwMDEyZDg5N2VhYWRjNzJmNTBlM2UzMzZlNzY2NzFmOTJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDIgSmFuIDIwMjUgMTA6NDY6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYyIDIvNF0gQ3Vt dWxhdGl2ZSBzdGF0aXN0aWNzOiBBZGQgcGdzdGF0X2Ryb3BfZW50cmllc19vZl9raW5kCiBoZWxw ZXIKClRoaXMgYWxsb3dzIHVzZXJzIG9mIHRoZSBjdW11bGF0aXZlIHN0YXRpc3RpY3Mgc3lzdGVt cyB0byBkcm9wIGFsbAplbnRyaWVzIGZvciBhIGdpdmVuIGtpbmQsIHNpbWlsYXIgdG8gaG93IHBn c3RhdF9yZXNldF9lbnRyaWVzX29mX2tpbmQKYWxsb3dzIHJlc2V0dGluZyBhbGwgZW50cmllcyBm b3IgYSBnaXZlbiBzdGF0aXN0aWNzIGtpbmQuCgpBZGQgYW4gZXhhbXBsZSB1c2Ugb2YgcGdzdGF0 X2Ryb3BfZW50cmllc19vZl9raW5kIGluIHRoZSBpbmplY3Rpb24KcG9pbnRzIG1vZHVsZSBieSBh ZGRpbmcgYSBpbmplY3Rpb25fcG9pbnRzX3N0YXRzX3Jlc2V0IGZ1bmN0aW9uLgotLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jICAgICB8IDMzICsrKysrKysrKysr KysrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oICAgICAgICAgICB8 ICAxICsKIC4uLi9pbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsICAgICAgICAgICAgICAgICB8IDEw ICsrKysrKwogLi4uL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3N0YXRzLmMgICAgICAgIHwg MTIgKysrKysrKwogLi4uL21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy90LzAwMV9zdGF0cy5wbCAg IHwgMTMgKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMKaW5kZXggMzQyNTg2Mzk3ZC4uN2I2 M2JiMzkwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3No bWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMKQEAg LTEwMTUsNiArMTAxNSwzOSBAQCBwZ3N0YXRfZHJvcF9hbGxfZW50cmllcyh2b2lkKQogCQlwZ3N0 YXRfcmVxdWVzdF9lbnRyeV9yZWZzX2djKCk7CiB9CiAKK3ZvaWQKK3Bnc3RhdF9kcm9wX2VudHJp ZXNfb2Zfa2luZChQZ1N0YXRfS2luZCBraW5kKQoreworCWRzaGFzaF9zZXFfc3RhdHVzIGhzdGF0 OworCVBnU3RhdFNoYXJlZF9IYXNoRW50cnkgKnBzOworCXVpbnQ2NAkJbm90X2ZyZWVkX2NvdW50 ID0gMDsKKworCWRzaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBnU3RhdExvY2FsLnNoYXJlZF9oYXNo LCB0cnVlKTsKKwl3aGlsZSAoKHBzID0gZHNoYXNoX3NlcV9uZXh0KCZoc3RhdCkpICE9IE5VTEwp CisJeworCQlpZiAocHMtPmRyb3BwZWQgfHwgcHMtPmtleS5raW5kICE9IGtpbmQpCisJCQljb250 aW51ZTsKKworCQkvKiBkZWxldGUgbG9jYWwgcmVmZXJlbmNlICovCisJCWlmIChwZ1N0YXRFbnRy eVJlZkhhc2gpCisJCXsKKwkJCVBnU3RhdF9FbnRyeVJlZkhhc2hFbnRyeSAqbG9oYXNoZW50ID0K KwkJCQlwZ3N0YXRfZW50cnlfcmVmX2hhc2hfbG9va3VwKHBnU3RhdEVudHJ5UmVmSGFzaCwgcHMt PmtleSk7CisKKwkJCWlmIChsb2hhc2hlbnQpCisJCQkJcGdzdGF0X3JlbGVhc2VfZW50cnlfcmVm KGxvaGFzaGVudC0+a2V5LCBsb2hhc2hlbnQtPmVudHJ5X3JlZiwKKwkJCQkJCQkJCQkgdHJ1ZSk7 CisJCX0KKworCQlpZiAoIXBnc3RhdF9kcm9wX2VudHJ5X2ludGVybmFsKHBzLCAmaHN0YXQpKQor CQkJbm90X2ZyZWVkX2NvdW50Kys7CisJfQorCWRzaGFzaF9zZXFfdGVybSgmaHN0YXQpOworCisJ aWYgKG5vdF9mcmVlZF9jb3VudCA+IDApCisJCXBnc3RhdF9yZXF1ZXN0X2VudHJ5X3JlZnNfZ2Mo KTsKK30KKwogc3RhdGljIHZvaWQKIHNoYXJlZF9zdGF0X3Jlc2V0X2NvbnRlbnRzKFBnU3RhdF9L aW5kIGtpbmQsIFBnU3RhdFNoYXJlZF9Db21tb24gKmhlYWRlciwKIAkJCQkJCSAgIFRpbWVzdGFt cFR6IHRzKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAppbmRleCBhM2QzOWQyYjcyLi5m ZTNlODkxMjU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaApAQCAtNzE4LDYgKzcx OCw3IEBAIGV4dGVybiBib29sIHBnc3RhdF9sb2NrX2VudHJ5X3NoYXJlZChQZ1N0YXRfRW50cnlS ZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3VubG9ja19l bnRyeShQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZik7CiBleHRlcm4gYm9vbCBwZ3N0YXRfZHJv cF9lbnRyeShQZ1N0YXRfS2luZCBraW5kLCBPaWQgZGJvaWQsIHVpbnQ2NCBvYmppZCk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfZHJvcF9hbGxfZW50cmllcyh2b2lkKTsKK2V4dGVybiB2b2lkIHBnc3Rh dF9kcm9wX2VudHJpZXNfb2Zfa2luZChQZ1N0YXRfS2luZCBraW5kKTsKIGV4dGVybiBQZ1N0YXRf RW50cnlSZWYgKnBnc3RhdF9nZXRfZW50cnlfcmVmX2xvY2tlZChQZ1N0YXRfS2luZCBraW5kLCBP aWQgZGJvaWQsIHVpbnQ2NCBvYmppZCwKIAkJCQkJCQkJCQkJCQlib29sIG5vd2FpdCk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfcmVzZXRfZW50cnkoUGdTdGF0X0tpbmQga2luZCwgT2lkIGRib2lkLCB1 aW50NjQgb2JqaWQsIFRpbWVzdGFtcFR6IHRzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9pbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKaW5kZXgg NmM4MWQ1NWUwZC4uMWQ4YTA4NWM4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKQEAgLTg1LDYg Kzg1LDE2IEBAIFJFVFVSTlMgYmlnaW50CiBBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2luamVjdGlv bl9wb2ludHNfc3RhdHNfbnVtY2FsbHMnCiBMQU5HVUFHRSBDIFNUUklDVDsKIAorLS0KKy0tIGlu amVjdGlvbl9wb2ludHNfc3RhdHNfcmVzZXQoKQorLS0KKy0tIFJlcG9ydHMgc3RhdGlzdGljcywg aWYgYW55LCByZWxhdGVkIHRvIHRoZSBnaXZlbiBpbmplY3Rpb24gcG9pbnQuCistLQorQ1JFQVRF IEZVTkNUSU9OIGluamVjdGlvbl9wb2ludHNfc3RhdHNfcmVzZXQoKQorUkVUVVJOUyB2b2lkCitB UyAnTU9EVUxFX1BBVEhOQU1FJywgJ2luamVjdGlvbl9wb2ludHNfc3RhdHNfcmVzZXQnCitMQU5H VUFHRSBDIFNUUklDVDsKKwogLS0KIC0tIGluamVjdGlvbl9wb2ludHNfc3RhdHNfZml4ZWQoKQog LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9pbmplY3Rp b25fc3RhdHMuYyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9pbmplY3Rpb25f c3RhdHMuYwppbmRleCA1ZGI2MmJjYTY2Li45OTQ2OGQ0YjdlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3N0YXRzLmMKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9zdGF0cy5jCkBAIC0xOTcsMyAr MTk3LDE1IEBAIGluamVjdGlvbl9wb2ludHNfc3RhdHNfbnVtY2FsbHMoUEdfRlVOQ1RJT05fQVJH UykKIAogCVBHX1JFVFVSTl9JTlQ2NChlbnRyeS0+bnVtY2FsbHMpOwogfQorCisvKgorICogU1FM IGZ1bmN0aW9uIHRoYXQgcmVzZXRzIGluamVjdGlvbiBwb2ludCBzdGF0aXN0aWNzLgorICovCitQ R19GVU5DVElPTl9JTkZPX1YxKGluamVjdGlvbl9wb2ludHNfc3RhdHNfcmVzZXQpOworRGF0dW0K K2luamVjdGlvbl9wb2ludHNfc3RhdHNfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlwZ3N0 YXRfZHJvcF9lbnRyaWVzX29mX2tpbmQoUEdTVEFUX0tJTkRfSU5KRUNUSU9OKTsKKworCVBHX1JF VFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvdC8wMDFfc3RhdHMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv dC8wMDFfc3RhdHMucGwKaW5kZXggZDQ1MzlmZTg3Mi4uZGM4MzM2Nzk1OCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3QvMDAxX3N0YXRzLnBsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy90LzAwMV9zdGF0cy5wbApAQCAtNjksNiAr NjksMTkgQEAgJGZpeGVkc3RhdHMgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNF TEVDVCAqIEZST00gaW5qZWN0aW9uX3BvaW50c19zdGF0c19maXhlZCgpOyIpOwogaXMoJGZpeGVk c3RhdHMsICcwfDB8MHwwfDAnLCAnZml4ZWQgc3RhdHMgYWZ0ZXIgY3Jhc2gnKTsKIAorIyBPbiBy ZXNldCB0aGUgc3RhdHMgYXJlIGdvbmUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdzdGF0cy1ub3RpY2UnLCAnbm90aWNlJyk7 Iik7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19ydW4oJ3N0YXRzLW5vdGljZScpOyIpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGluamVjdGlvbl9wb2ludHNfcnVuKCdzdGF0cy1ub3RpY2UnKTsiKTsKKyRudW1jYWxs cyA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc3RhdHNfbnVtY2FsbHMoJ3N0YXRzLW5vdGljZScpOyIpOworaXMoJG51bWNhbGxzLCAnMics ICdudW1iZXIgb2Ygc3RhdHMgY2FsbHMnKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3N0YXRzX3Jlc2V0KCk7Iik7CiskbnVtY2FsbHMgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3N0 YXRzX251bWNhbGxzKCdzdGF0cy1ub3RpY2UnKTsiKTsKK2lzKCRudW1jYWxscywgJycsICdudW1i ZXIgb2Ygc3RhdHMgYWZ0ZXIgcmVzZXQnKTsKKwogIyBTdG9wIHRoZSBzZXJ2ZXIsIGRpc2FibGUg dGhlIG1vZHVsZSwgdGhlbiByZXN0YXJ0LiAgVGhlIHNlcnZlcgogIyBzaG91bGQgYmUgYWJsZSB0 byBjb21lIHVwLgogJG5vZGUtPnN0b3A7Ci0tIAoyLjQ3LjEKCg== --000000000000d3aec6062c70c852 Content-Type: application/x-patch; name="v2-0004-Add-pg_stat_plans-contrib-extension.patch" Content-Disposition: attachment; filename="v2-0004-Add-pg_stat_plans-contrib-extension.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6al556o3 RnJvbSBhNzc0Njc1ZmNhOGMwNjVlMzM2MmMxZTA4OGIzNDU1NjI5ZjFmMGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDIgSmFuIDIwMjUgMTA6NDc6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYyIDQvNF0gQWRk IHBnX3N0YXRfcGxhbnMgY29udHJpYiBleHRlbnNpb24KClRoaXMgZXh0ZW5zaW9uIGFsbG93cyB0 cmFja2luZyBwZXItcGxhbiBjYWxsIGNvdW50cyBhbmQgZXhlY3V0aW9uIHRpbWUsCmFzIHdlbGwg YXMgY2FwdHVyaW5nIHRoZSBwbGFuIHRleHQsIGFrYSBFWFBMQUlOIChDT1NUUyBPRkYpLCBmb3Ig dGhlCmZpcnN0IGV4ZWN1dGlvbiBvZiBhIGdpdmVuIHBsYW4uIFRoaXMgdXRpbGl6ZSB0aGUgY29t cHV0ZV9wbGFuX2lkCmZ1bmN0aW9uYWxpdHkgZm9yIHRyYWNraW5nIGRpZmZlcmVudCBwbGFucy4K LS0tCiBjb250cmliL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogY29udHJpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGNvbnRyaWIvcGdfc3RhdF9wbGFucy9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAyOSArCiBj b250cmliL3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQvY2xlYW51cC5vdXQgICAgfCAgIDEgKwogY29u dHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0IHwgMTI1ICsrKwogY29u dHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3NlbGVjdC5vdXQgICAgIHwgMjYyICsrKysrKwog Y29udHJpYi9wZ19zdGF0X3BsYW5zL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgIDQzICsKIGNv bnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLS0xLjAuc3FsICB8ICAzMyArCiBjb250 cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jICAgICAgICAgfCA3NzMgKysrKysrKysr KysrKysrKysrCiBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jb25mICAgICAg fCAgIDEgKwogY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMuY29udHJvbCAgIHwg ICA1ICsKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwgICAgICAgICB8ICAg MSArCiBjb250cmliL3BnX3N0YXRfcGxhbnMvc3FsL3ByaXZpbGVnZXMuc3FsICAgICAgfCAgNTkg KysKIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvc2VsZWN0LnNxbCAgICAgICAgICB8ICA2NyAr KwogZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGRvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBk b2Mvc3JjL3NnbWwvcGdzdGF0cGxhbnMuc2dtbCAgICAgICAgICAgICAgICAgfCA0MjUgKysrKysr KysrKwogMTcgZmlsZXMgY2hhbmdlZCwgMTgyOCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg Y29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL2NsZWFudXAub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL3NlbGVjdC5vdXQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMvbWVzb24uYnVpbGQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy0tMS4w LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3Bs YW5zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9w bGFucy5jb25mCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0 YXRfcGxhbnMuY29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc3RhdF9wbGFu cy9zcWwvY2xlYW51cC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3N0YXRfcGxh bnMvc3FsL3ByaXZpbGVnZXMuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0 X3BsYW5zL3NxbC9zZWxlY3Quc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21sL3Bn c3RhdHBsYW5zLnNnbWwKCmRpZmYgLS1naXQgYS9jb250cmliL01ha2VmaWxlIGIvY29udHJpYi9N YWtlZmlsZQppbmRleCA5NTI4NTVkOWI2Li44ZGUwMTBhZmRlIDEwMDY0NAotLS0gYS9jb250cmli L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvTWFrZWZpbGUKQEAgLTM0LDYgKzM0LDcgQEAgU1VCRElS UyA9IFwKIAkJcGdfZnJlZXNwYWNlbWFwIFwKIAkJcGdfbG9naWNhbGluc3BlY3QgXAogCQlwZ19w cmV3YXJtCVwKKwkJcGdfc3RhdF9wbGFucyBcCiAJCXBnX3N0YXRfc3RhdGVtZW50cyBcCiAJCXBn X3N1cmdlcnkJXAogCQlwZ190cmdtCQlcCmRpZmYgLS1naXQgYS9jb250cmliL21lc29uLmJ1aWxk IGIvY29udHJpYi9tZXNvbi5idWlsZAppbmRleCAxYmE3M2ViZDY3Li4wNDQyZWMyNjQ0IDEwMDY0 NAotLS0gYS9jb250cmliL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvbWVzb24uYnVpbGQKQEAg LTQ5LDYgKzQ5LDcgQEAgc3ViZGlyKCdwZ19mcmVlc3BhY2VtYXAnKQogc3ViZGlyKCdwZ19sb2dp Y2FsaW5zcGVjdCcpCiBzdWJkaXIoJ3BnX3ByZXdhcm0nKQogc3ViZGlyKCdwZ3Jvd2xvY2tzJykK K3N1YmRpcigncGdfc3RhdF9wbGFucycpCiBzdWJkaXIoJ3BnX3N0YXRfc3RhdGVtZW50cycpCiBz dWJkaXIoJ3Bnc3RhdHR1cGxlJykKIHN1YmRpcigncGdfc3VyZ2VyeScpCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N0YXRfcGxhbnMvTWFrZWZpbGUgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvTWFr ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTA3M2RiOTVlZAot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9NYWtlZmlsZQpAQCAtMCww ICsxLDI5IEBACisjIGNvbnRyaWIvcGdfc3RhdF9wbGFucy9NYWtlZmlsZQorCitNT0RVTEVfYmln ID0gcGdfc3RhdF9wbGFucworT0JKUyA9IFwKKwkkKFdJTjMyUkVTKSBcCisJcGdfc3RhdF9wbGFu cy5vCisKK0VYVEVOU0lPTiA9IHBnX3N0YXRfcGxhbnMKK0RBVEEgPSBwZ19zdGF0X3BsYW5zLS0x LjAuc3FsCitQR0ZJTEVERVNDID0gInBnX3N0YXRfcGxhbnMgLSB0cmFjayBwZXItcGxhbiBjYWxs IGNvdW50cywgZXhlY3V0aW9uIHRpbWVzIGFuZCBFWFBMQUlOIHRleHRzIgorCitMREZMQUdTX1NM ICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKKworUkVHUkVTU19PUFRTID0gLS10ZW1wLWNvbmZp ZyAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmNvbmYK K1JFR1JFU1MgPSBzZWxlY3QgcHJpdmlsZWdlcyBjbGVhbnVwCisjIERpc2FibGVkIGJlY2F1c2Ug dGhlc2UgdGVzdHMgcmVxdWlyZSAic2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPXBnX3N0YXRfcGxh bnMiLAorIyB3aGljaCB0eXBpY2FsIGluc3RhbGxjaGVjayB1c2VycyBkbyBub3QgaGF2ZSAoZS5n LiBidWlsZGZhcm0gY2xpZW50cykuCitOT19JTlNUQUxMQ0hFQ0sgPSAxCisKK2lmZGVmIFVTRV9Q R1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykg LS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBjb250cmliL3BnX3N0YXRf cGxhbnMKK3RvcF9idWlsZGRpciA9IC4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWds b2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBlY3Rl ZC9jbGVhbnVwLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBlY3RlZC9jbGVhbnVwLm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41MTU2NTYxN2NlCi0tLSAv ZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zdGF0X3BsYW5zL2V4cGVjdGVkL2NsZWFudXAub3V0 CkBAIC0wLDAgKzEgQEAKK0RST1AgRVhURU5TSU9OIHBnX3N0YXRfcGxhbnM7CmRpZmYgLS1naXQg YS9jb250cmliL3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9jb250cmli L3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uM2UyMWQ2ZDcwMQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvcGdfc3RhdF9wbGFucy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtMCwwICsxLDEyNSBA QAorLS0KKy0tIE9ubHkgc3VwZXJ1c2VycyBhbmQgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRo ZSBwZ19yZWFkX2FsbF9zdGF0cyByb2xlCistLSBhcmUgYWxsb3dlZCB0byBzZWUgdGhlIHBsYW4g dGV4dCwgcXVlcnlpZCBhbmQgcGxhbmlkIG9mIHF1ZXJpZXMgZXhlY3V0ZWQgYnkKKy0tIG90aGVy IHVzZXJzLiBPdGhlciB1c2VycyBjYW4gc2VlIHRoZSBzdGF0aXN0aWNzLgorLS0KK0NSRUFURSBS T0xFIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyIFNVUEVSVVNFUjsKK0NSRUFURSBST0xFIHJlZ3Jl c3Nfc3RhdHNfdXNlcjE7CitDUkVBVEUgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIyOworR1JBTlQg cGdfcmVhZF9hbGxfc3RhdHMgVE8gcmVncmVzc19zdGF0c191c2VyMjsKK1NFVCBST0xFIHJlZ3Jl c3Nfc3RhdHNfc3VwZXJ1c2VyOworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1Qg TlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAxIEFTICJPTkUiOwor IE9ORSAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFVCBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNl cjE7CitTRUxFQ1QgMSsxIEFTICJUV08iOworIFRXTyAKKy0tLS0tCisgICAyCisoMSByb3cpCisK Ky0tCistLSBBIHN1cGVydXNlciBjYW4gcmVhZCBhbGwgY29sdW1ucyBvZiBxdWVyaWVzIGV4ZWN1 dGVkIGJ5IG90aGVycywKKy0tIGluY2x1ZGluZyBwbGFuIHRleHQsIHF1ZXJ5aWQgYW5kIHBsYW5p ZC4KKy0tCitTRVQgUk9MRSByZWdyZXNzX3N0YXRzX3N1cGVydXNlcjsKK1NFTEVDVCByLnJvbG5h bWUsIHNzLnF1ZXJ5aWQgPD4gMCBBUyBxdWVyeWlkX2Jvb2wsIHNzLnBsYW5pZCA8PiAwIEFTIHBs YW5pZF9ib29sLCBzcy5wbGFuLCBzcy5jYWxscworICBGUk9NIHBnX3N0YXRfcGxhbnMgc3MgSk9J TiBwZ19yb2xlcyByIE9OIHNzLnVzZXJpZCA9IHIub2lkCisgIE9SREVSIEJZIHIucm9sbmFtZSwg c3MucGxhbiBDT0xMQVRFICJDIiwgc3MuY2FsbHM7CisgICAgICAgICByb2xuYW1lICAgICAgICAg fCBxdWVyeWlkX2Jvb2wgfCBwbGFuaWRfYm9vbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBsYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBjYWxscyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIHJlZ3Jlc3Nfc3Rh dHNfc3VwZXJ1c2VyIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCBSZXN1bHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3N1cGVydXNlciB8IHQgICAgICAg ICAgICB8IHQgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisg cmVncmVzc19zdGF0c19zdXBlcnVzZXIgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IFNv cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgIFNvcnQgS2V5OiBwZ19hdXRoaWQucm9s bmFtZSwgcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUgIkMiLCBwZ19zdGF0X3BsYW5zLmNhbGxz K3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg ICB8ICAgLT4gIEhhc2ggSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICBIYXNoIENvbmQ6IChwZ19z dGF0X3BsYW5zLnVzZXJpZCA9IHBnX2F1dGhpZC5vaWQpICAgICAgICAgICAgICAgICAgICAgICAg ICt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgfCAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEhhc2ggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGdfYXV0aGlkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIHJlZ3Jlc3Nfc3RhdHNfdXNlcjEg ICAgIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDEKKyg0IHJvd3MpCisKKy0tCistLSByZWdyZXNzX3N0YXRzX3VzZXIxIGhhcyBu byBwcml2aWxlZ2VzIHRvIHJlYWQgdGhlIHBsYW4gdGV4dCwgcXVlcnlpZAorLS0gb3IgcGxhbmlk IG9mIHF1ZXJpZXMgZXhlY3V0ZWQgYnkgb3RoZXJzIGJ1dCBjYW4gc2VlIHN0YXRpc3RpY3MKKy0t IGxpa2UgY2FsbHMgYW5kIHJvd3MuCistLQorU0VUIFJPTEUgcmVncmVzc19zdGF0c191c2VyMTsK K1NFTEVDVCByLnJvbG5hbWUsIHNzLnF1ZXJ5aWQgPD4gMCBBUyBxdWVyeWlkX2Jvb2wsIHNzLnBs YW5pZCA8PiAwIEFTIHBsYW5pZF9ib29sLCBzcy5wbGFuLCBzcy5jYWxscworICBGUk9NIHBnX3N0 YXRfcGxhbnMgc3MgSk9JTiBwZ19yb2xlcyByIE9OIHNzLnVzZXJpZCA9IHIub2lkCisgIE9SREVS IEJZIHIucm9sbmFtZSwgc3MucGxhbiBDT0xMQVRFICJDIiwgc3MuY2FsbHM7CisgICAgICAgICBy b2xuYW1lICAgICAgICAgfCBxdWVyeWlkX2Jvb2wgfCBwbGFuaWRfYm9vbCB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBjYWxscyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAg fCA8aW5zdWZmaWNpZW50IHByaXZpbGVnZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3N1cGVy dXNlciB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgPGluc3VmZmljaWVudCBwcml2aWxl Z2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAxCisgcmVncmVzc19zdGF0c19zdXBlcnVzZXIgfCAgICAgICAgICAgICAgfCAg ICAgICAgICAgICB8IDxpbnN1ZmZpY2llbnQgcHJpdmlsZWdlPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorIHJlZ3Jlc3Nf c3RhdHNfdXNlcjEgICAgIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCBSZXN1bHQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3VzZXIxICAgICB8IHQgICAg ICAgICAgICB8IHQgICAgICAgICAgIHwgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAw CisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8 ICAgU29ydCBLZXk6IHBnX2F1dGhpZC5yb2xuYW1lLCBwZ19zdGF0X3BsYW5zLnBsYW4gQ09MTEFU RSAiQyIsIHBnX3N0YXRfcGxhbnMuY2FsbHMrfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAtPiAgSGFzaCBKb2luICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8 IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAg fCAgICAgICAgIEhhc2ggQ29uZDogKHBnX3N0YXRfcGxhbnMudXNlcmlkID0gcGdfYXV0aGlkLm9p ZCkgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gcGdfc3RhdF9wbGFucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr fCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAg IHwgICAgICAgICAtPiAgSGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwZ19hdXRoaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgCisoNSByb3dzKQorCistLQorLS0gcmVncmVzc19zdGF0c191c2VyMiwgd2l0aCBwZ19yZWFk X2FsbF9zdGF0cyByb2xlIHByaXZpbGVnZXMsIGNhbgorLS0gcmVhZCBhbGwgY29sdW1ucywgaW5j bHVkaW5nIHBsYW4gdGV4dCwgcXVlcnlpZCBhbmQgcGxhbmlkLCBvZiBxdWVyaWVzCistLSBleGVj dXRlZCBieSBvdGhlcnMuCistLQorU0VUIFJPTEUgcmVncmVzc19zdGF0c191c2VyMjsKK1NFTEVD VCByLnJvbG5hbWUsIHNzLnF1ZXJ5aWQgPD4gMCBBUyBxdWVyeWlkX2Jvb2wsIHNzLnBsYW5pZCA8 PiAwIEFTIHBsYW5pZF9ib29sLCBzcy5wbGFuLCBzcy5jYWxscworICBGUk9NIHBnX3N0YXRfcGxh bnMgc3MgSk9JTiBwZ19yb2xlcyByIE9OIHNzLnVzZXJpZCA9IHIub2lkCisgIE9SREVSIEJZIHIu cm9sbmFtZSwgc3MucGxhbiBDT0xMQVRFICJDIiwgc3MuY2FsbHM7CisgICAgICAgICByb2xuYW1l ICAgICAgICAgfCBxdWVyeWlkX2Jvb2wgfCBwbGFuaWRfYm9vbCB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBsYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBjYWxscyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIHJl Z3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCBSZXN1 bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3N1cGVydXNlciB8 IHQgICAgICAgICAgICB8IHQgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAxCisgcmVncmVzc19zdGF0c19zdXBlcnVzZXIgfCB0ICAgICAgICAgICAgfCB0ICAgICAg ICAgICB8IFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMQorICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgIFNvcnQgS2V5OiBwZ19h dXRoaWQucm9sbmFtZSwgcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUgIkMiLCBwZ19zdGF0X3Bs YW5zLmNhbGxzK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAg ICAgICAgICAgICB8ICAgLT4gIEhhc2ggSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICBIYXNoIENv bmQ6IChwZ19zdGF0X3BsYW5zLnVzZXJpZCA9IHBnX2F1dGhpZC5vaWQpICAgICAgICAgICAgICAg ICAgICAgICAgICt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEhh c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGdfYXV0aGlkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIHJlZ3Jlc3Nfc3Rh dHNfdXNlcjEgICAgIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCBSZXN1bHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIDEKKyByZWdyZXNzX3N0YXRzX3VzZXIxICAgICB8IHQgICAgICAg ICAgICB8IHQgICAgICAgICAgIHwgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAg U29ydCBLZXk6IHBnX2F1dGhpZC5yb2xuYW1lLCBwZ19zdGF0X3BsYW5zLnBsYW4gQ09MTEFURSAi QyIsIHBnX3N0YXRfcGxhbnMuY2FsbHMrfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAtPiAgSGFzaCBKb2luICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAor ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAg ICAgICAgIEhhc2ggQ29uZDogKHBnX3N0YXRfcGxhbnMudXNlcmlkID0gcGdfYXV0aGlkLm9pZCkg ICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g cGdfc3RhdF9wbGFucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAK KyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwg ICAgICAgICAtPiAgSGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwZ19hdXRoaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg CisgcmVncmVzc19zdGF0c191c2VyMiAgICAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8 IFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMAorICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgIFNvcnQgS2V5OiBwZ19hdXRoaWQu cm9sbmFtZSwgcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUgIkMiLCBwZ19zdGF0X3BsYW5zLmNh bGxzK3wgCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAg ICAgICB8ICAgLT4gIEhhc2ggSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICBIYXNoIENvbmQ6IChw Z19zdGF0X3BsYW5zLnVzZXJpZCA9IHBnX2F1dGhpZC5vaWQpICAgICAgICAgICAgICAgICAgICAg ICAgICt8IAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgfCAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgLT4gIEhhc2ggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGdfYXV0aGlkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorKDYgcm93cykKKworLS0KKy0t IGNsZWFudXAKKy0tCitSRVNFVCBST0xFOworRFJPUCBST0xFIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1 c2VyOworRFJPUCBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CitEUk9QIFJPTEUgcmVncmVzc19z dGF0c191c2VyMjsKK1NFTEVDVCBwZ19zdGF0X3BsYW5zX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf cGxhbnMvZXhwZWN0ZWQvc2VsZWN0Lm91dCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9leHBlY3Rl ZC9zZWxlY3Qub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkwNmQ4 Y2U5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvZXhwZWN0ZWQv c2VsZWN0Lm91dApAQCAtMCwwICsxLDI2MiBAQAorLS0KKy0tIFNFTEVDVCBzdGF0ZW1lbnRzCist LQorQ1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3BsYW5zOworU0VMRUNUIHBnX3N0YXRfcGxhbnNf cmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKKy0tCist LSBzaW1wbGUgc3RhdGVtZW50cworLS0KK1NFTEVDVCAxIEZST00gcGdfY2xhc3MgTElNSVQgMTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgMSBG Uk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnOworID9jb2x1bW4/IAorLS0t LS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2Zm OworU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJzsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IG9uOworU0VMRUNUIHBsYW4sIGNhbGxzIEZST00gcGdfc3RhdF9wbGFucyBPUkRF UiBCWSBwbGFuIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhbGxzIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIEJp dG1hcCBIZWFwIFNjYW4gb24gcGdfY2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8ICAgICAxCisgICBSZWNoZWNrIENvbmQ6IChyZWxuYW1lID0gJ3BnX2NsYXNzJzo6bmFtZSkg ICAgICAgICAgICAgICAgK3wgCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gcGdfY2xhc3Nf cmVsbmFtZV9uc3BfaW5kZXggICAgICAgK3wgCisgICAgICAgICBJbmRleCBDb25kOiAocmVsbmFt ZSA9ICdwZ19jbGFzcyc6Om5hbWUpICAgICAgICAgICAgIHwgCisgSW5kZXggT25seSBTY2FuIHVz aW5nIHBnX2NsYXNzX3JlbG5hbWVfbnNwX2luZGV4IG9uIHBnX2NsYXNzK3wgICAgIDEKKyAgIElu ZGV4IENvbmQ6IChyZWxuYW1lID0gJ3BnX2NsYXNzJzo6bmFtZSkgICAgICAgICAgICAgICAgICAg fCAKKyBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2FuIG9uIHBnX2NsYXNzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IAorIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgU29ydCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDAKKyAg IFNvcnQgS2V5OiBwZ19zdGF0X3BsYW5zLnBsYW4gQ09MTEFURSAiQyIgICAgICAgICAgICAgICAg ICArfCAKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxhbnMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19zdGF0X3BsYW5zX3Jlc2V0KCkg SVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCistLQorLS0gc3VicGxh bnMgYW5kIENURXMKKy0tCitXSVRIIHggQVMgTUFURVJJQUxJWkVEIChTRUxFQ1QgMSkKK1NFTEVD VCAqIEZST00geDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQor CitTRUxFQ1QgYS5hdHRuYW1lLAorICAgKFNFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGQu YWRiaW4sIGQuYWRyZWxpZCkKKyAgICBGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmRlZiBkCisgICAg V0hFUkUgZC5hZHJlbGlkID0gYS5hdHRyZWxpZCBBTkQgZC5hZG51bSA9IGEuYXR0bnVtIEFORCBh LmF0dGhhc2RlZikKKyBGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEKKyBXSEVSRSBhLmF0 dHJlbGlkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3MKKyBPUkRFUiBCWSBhdHRudW0gTElNSVQgMTsK KyBhdHRuYW1lICB8IHBnX2dldF9leHByIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgdGFi bGVvaWQgfCAKKygxIHJvdykKKworU0VMRUNUIHBsYW4sIGNhbGxzIEZST00gcGdfc3RhdF9wbGFu cyBPUkRFUiBCWSBwbGFuIENPTExBVEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBsYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2Fs bHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBDVEUgU2NhbiBvbiB4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8ICAgICAxCisgICBDVEUgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgLT4gIFJlc3VsdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IAorIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEKKyAgIC0+ICBJbmRleCBTY2FuIHVz aW5nIHBnX2F0dHJpYnV0ZV9yZWxpZF9hdHRudW1faW5kZXggb24gcGdfYXR0cmlidXRlIGEgICAg ICt8IAorICAgICAgICAgSW5kZXggQ29uZDogKGF0dHJlbGlkID0gJzEyNTknOjpvaWQpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICBTdWJQbGFuIDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAK KyAgICAgICAgICAgLT4gIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgICAgICAgICBPbmUtVGltZSBGaWx0 ZXI6IGEuYXR0aGFzZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwZ19hdHRyZGVmIGQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGFk cmVsaWQgPSBhLmF0dHJlbGlkKSBBTkQgKGFkbnVtID0gYS5hdHRudW0pKSB8IAorIFJlc3VsdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIDEKKyBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAwCisgICBT b3J0IEtleTogcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUgIkMiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX3N0YXRfcGxh bnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorKDQgcm93cykK KworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCist LS0KKyB0CisoMSByb3cpCisKKy0tCistLSBwYXJ0aXRvbmluZworLS0KK2NyZWF0ZSB0YWJsZSBs cCAoYSBjaGFyKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUgbHBfZGVmYXVs dCBwYXJ0aXRpb24gb2YgbHAgZGVmYXVsdDsKK2NyZWF0ZSB0YWJsZSBscF9lZiBwYXJ0aXRpb24g b2YgbHAgZm9yIHZhbHVlcyBpbiAoJ2UnLCAnZicpOworY3JlYXRlIHRhYmxlIGxwX2FkIHBhcnRp dGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnYScsICdkJyk7CitjcmVhdGUgdGFibGUgbHBfYmMg cGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKCdiJywgJ2MnKTsKK2NyZWF0ZSB0YWJsZSBs cF9nIHBhcnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnZycpOworY3JlYXRlIHRhYmxlIGxw X251bGwgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKG51bGwpOworc2VsZWN0ICogZnJv bSBscDsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPiAn YScgYW5kIGEgPCAnZCc7CisgYSAKKy0tLQorKDAgcm93cykKKworc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhID4gJ2EnIGFuZCBhIDw9ICdkJzsKKyBhIAorLS0tCisoMCByb3dzKQorCitzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgPSAnYSc7CisgYSAKKy0tLQorKDAgcm93cykKKworc2VsZWN0ICog ZnJvbSBscCB3aGVyZSAnYScgPSBhOwkvKiBjb21tdXRlZCAqLworIGEgCistLS0KKygwIHJvd3Mp CisKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbDsKKyBhIAorLS0tCisoMCBy b3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKKyBhIAorLS0tCisoMCBy b3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKKyBhIAor LS0tCisoMCByb3dzKQorCitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5k IChhID0gJ2EnIG9yIGEgPSAnYycpOworIGEgCistLS0KKygwIHJvd3MpCisKK3NlbGVjdCAqIGZy b20gbHAgd2hlcmUgYSA8PiAnZyc7CisgYSAKKy0tLQorKDAgcm93cykKKworc2VsZWN0ICogZnJv bSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7CisgYSAKKy0tLQorKDAgcm93cykKKwor c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAnZCcpOworIGEgCistLS0KKygw IHJvd3MpCisKK1NFTEVDVCBwbGFuLCBjYWxscyBGUk9NIHBnX3N0YXRfcGxhbnMgT1JERVIgQlkg cGxhbiBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGxhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYWxscyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAg MQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAnYSc6 OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAgICt8IAor ICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAnYSc6OmJw Y2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAgICB8IAorIEFw cGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBf MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisg ICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEgPD0gJ2QnOjpicGNoYXIp KSAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAg ICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEgPD0gJ2QnOjpicGNoYXIpKSAg ICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBfZGVmYXVsdCBscF8z ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAg ICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEgPD0gJ2QnOjpicGNoYXIpKSAgICAg ICAgICAgICAgICAgICAgIHwgCisgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEKKyAgIC0+ ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBB TkQgKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkrfCAKKyAgIC0+ICBT ZXEgU2NhbiBvbiBscF9iYyBscF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQg KChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkgfCAKKyBBcHBlbmQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAg RmlsdGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmls dGVyOiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2VmIGxwXzMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVy OiAoYSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2RlZmF1bHQgbHBfNCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVyOiAo YSA8PiAnZyc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IAorIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICAtPiAgU2VxIFNjYW4g b24gbHBfYWQgbHBfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24g bHBfYmMgbHBfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgK3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBf ZWYgbHBfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg K3wgCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBfZyBs cF80ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wg CisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4gb24gbHBfZGVmYXVs dCBscF81ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisg ICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgCisgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEK KyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8y ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAg IC0+ICBTZXEgU2NhbiBvbiBscF9lZiBscF8zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9nIGxwXzQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ ICBTZXEgU2NhbiBvbiBscF9udWxsIGxwXzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9kZWZhdWx0IGxwXzYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArfCAgICAgMQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAg ICAgRmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAnZCc6OmJwY2hhcikpICAg ICAgICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2VmIGxwXzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAg RmlsdGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAnZCc6OmJwY2hhcikpICAgICAg ICAgICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2cgbHBfMyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmls dGVyOiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAnZCc6OmJwY2hhcikpICAgICAgICAg ICAgICAgICAgICt8IAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2RlZmF1bHQgbHBfNCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICAgICAgRmlsdGVy OiAoKGEgPD4gJ2EnOjpicGNoYXIpIEFORCAoYSA8PiAnZCc6OmJwY2hhcikpICAgICAgICAgICAg ICAgICAgICB8IAorIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxCisgICAtPiAgU2VxIFNj YW4gb24gbHBfYmMgbHBfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEg PCAnZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgU2VxIFNjYW4g b24gbHBfZGVmYXVsdCBscF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgK3wgCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ICdhJzo6YnBjaGFyKSBBTkQgKGEgPCAn ZCc6OmJwY2hhcikpICAgICAgICAgICAgICAgICAgICAgIHwgCisgQXBwZW5kICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgK3wgICAgIDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8xICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjog KGEgPD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9lZiBscF8yICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjogKGEg PD4gQUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArfCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9nIGxwXzMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjogKGEgPD4g QUxMICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr fCAKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9kZWZhdWx0IGxwXzQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyAgICAgICAgIEZpbHRlcjogKGEgPD4gQUxM ICgne2EsZH0nOjpicGNoYXJbXSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAK KyBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorIFNlcSBTY2FuIG9uIGxwX2FkIGxwICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8 ICAgICAxCisgICBGaWx0ZXI6ICgnYSc6OmJwY2hhciA9IGEpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgU2VxIFNjYW4gb24gbHBfYWQgbHAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg K3wgICAgIDEKKyAgIEZpbHRlcjogKGEgPSAnYSc6OmJwY2hhcikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBTZXEgU2NhbiBvbiBscF9udWxs IGxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArfCAgICAgMQorICAgRmlsdGVyOiAoYSBJUyBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFNvcnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICt8ICAgICAwCisgICBTb3J0IEtleTogcGdfc3RhdF9wbGFucy5wbGFuIENPTExBVEUgIkMi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBwZ19zdGF0X3BsYW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgCisoMTQgcm93cykKKworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBO T1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfc3RhdF9wbGFucy9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9tZXNv bi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYmQ4ODRkOTYw Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zdGF0X3BsYW5zL21lc29uLmJ1aWxkCkBA IC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCitwZ19zdGF0X3BsYW5zX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Bn X3N0YXRfcGxhbnMuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICBwZ19z dGF0X3BsYW5zX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRy YV9hcmdzOiBbCisgICAgJy0tTkFNRScsICdwZ19zdGF0X3BsYW5zJywKKyAgICAnLS1GSUxFREVT QycsICdwZ19zdGF0X3BsYW5zIC0gdHJhY2sgcGVyLXBsYW4gY2FsbCBjb3VudHMsIGV4ZWN1dGlv biB0aW1lcyBhbmQgRVhQTEFJTiB0ZXh0cycsXSkKK2VuZGlmCisKK3BnX3N0YXRfcGxhbnMgPSBz aGFyZWRfbW9kdWxlKCdwZ19zdGF0X3BsYW5zJywKKyAgcGdfc3RhdF9wbGFuc19zb3VyY2VzLAor ICBrd2FyZ3M6IGNvbnRyaWJfbW9kX2FyZ3MgKyB7CisgICAgJ2RlcGVuZGVuY2llcyc6IGNvbnRy aWJfbW9kX2FyZ3NbJ2RlcGVuZGVuY2llcyddLAorICB9LAorKQorY29udHJpYl90YXJnZXRzICs9 IHBnX3N0YXRfcGxhbnMKKworaW5zdGFsbF9kYXRhKAorICAncGdfc3RhdF9wbGFucy5jb250cm9s JywKKyAgJ3BnX3N0YXRfcGxhbnMtLTEuMC5zcWwnLAorICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9h cmdzLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3BnX3N0YXRfcGxhbnMnLAorICAnc2Qn OiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWls ZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAgICdzZWxlY3QnLAor ICAgICAgJ3ByaXZpbGVnZXMnLAorICAgICAgJ2NsZWFudXAnLAorICAgIF0sCisgICAgJ3JlZ3Jl c3NfYXJncyc6IFsnLS10ZW1wLWNvbmZpZycsIGZpbGVzKCdwZ19zdGF0X3BsYW5zLmNvbmYnKV0s CisgICAgIyBEaXNhYmxlZCBiZWNhdXNlIHRoZXNlIHRlc3RzIHJlcXVpcmUKKyAgICAjICJzaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXM9cGdfc3RhdF9wbGFucyIsIHdoaWNoIHR5cGljYWwKKyAgICAj IHJ1bm5pbmdjaGVjayB1c2VycyBkbyBub3QgaGF2ZSAoZS5nLiBidWlsZGZhcm0gY2xpZW50cyku CisgICAgJ3J1bm5pbmdjaGVjayc6IGZhbHNlLAorICB9Cit9CmRpZmYgLS1naXQgYS9jb250cmli L3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy0tMS4wLnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9w bGFucy9wZ19zdGF0X3BsYW5zLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmYwODQ1MmIyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRf cGxhbnMvcGdfc3RhdF9wbGFucy0tMS4wLnNxbApAQCAtMCwwICsxLDMzIEBACisvKiBjb250cmli L3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBp ZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVO U0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHBnX3N0YXRfcGxhbnMiIHRvIGxvYWQg dGhpcyBmaWxlLiBccXVpdAorCistLSBSZWdpc3RlciBmdW5jdGlvbnMuCitDUkVBVEUgRlVOQ1RJ T04gcGdfc3RhdF9wbGFuc19yZXNldCgpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5B TUUnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFNBRkU7CisKK0NSRUFURSBGVU5DVElPTiBwZ19zdGF0 X3BsYW5zKElOIHNob3dwbGFuIGJvb2xlYW4sCisgICAgT1VUIHVzZXJpZCBvaWQsCisgICAgT1VU IGRiaWQgb2lkLAorICAgIE9VVCB0b3BsZXZlbCBib29sLAorICAgIE9VVCBxdWVyeWlkIGJpZ2lu dCwKKyAgICBPVVQgcGxhbmlkIGJpZ2ludCwKKyAgICBPVVQgY2FsbHMgaW50OCwKKyAgICBPVVQg dG90YWxfZXhlY190aW1lIGZsb2F0OCwKKyAgICBPVVQgcGxhbiB0ZXh0CispCitSRVRVUk5TIFNF VE9GIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19zdGF0X3BsYW5zXzFfMCcKK0xB TkdVQUdFIEMgU1RSSUNUIFZPTEFUSUxFIFBBUkFMTEVMIFNBRkU7CisKKy0tIFJlZ2lzdGVyIGEg dmlldyBvbiB0aGUgZnVuY3Rpb24gZm9yIGVhc2Ugb2YgdXNlLgorQ1JFQVRFIFZJRVcgcGdfc3Rh dF9wbGFucyBBUworICBTRUxFQ1QgKiBGUk9NIHBnX3N0YXRfcGxhbnModHJ1ZSk7CisKK0dSQU5U IFNFTEVDVCBPTiBwZ19zdGF0X3BsYW5zIFRPIFBVQkxJQzsKKworLS0gRG9uJ3Qgd2FudCB0aGlz IHRvIGJlIGF2YWlsYWJsZSB0byBub24tc3VwZXJ1c2Vycy4KK1JFVk9LRSBBTEwgT04gRlVOQ1RJ T04gcGdfc3RhdF9wbGFuc19yZXNldCgpIEZST00gUFVCTElDOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMuYyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9w Z19zdGF0X3BsYW5zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTIy MmI0ZWJiOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0 X3BsYW5zLmMKQEAgLTAsMCArMSw3NzMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBw Z19zdGF0X3BsYW5zLmMKKyAqCQlUcmFjayBwZXItcGxhbiBjYWxsIGNvdW50cywgZXhlY3V0aW9u IHRpbWVzIGFuZCBFWFBMQUlOIHRleHRzCisgKgkJYWNyb3NzIGEgd2hvbGUgZGF0YWJhc2UgY2x1 c3Rlci4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCQljb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jCisgKgor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5j bHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCisjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5o IgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1 ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi b3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9hY2wuaCIKKyNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxz L3Bnc3RhdF9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKworUEdfTU9E VUxFX01BR0lDOworCisvKiBDdXJyZW50IG5lc3RpbmcgZGVwdGggb2YgcGxhbm5lci9FeGVjdXRv clJ1bi9Qcm9jZXNzVXRpbGl0eSBjYWxscyAqLworc3RhdGljIGludAluZXN0aW5nX2xldmVsID0g MDsKKworLyogU2F2ZWQgaG9vayB2YWx1ZXMgKi8KK3N0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBw cmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUg cHJldl9FeGVjdXRvclN0YXJ0ID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclJ1bl9ob29rX3R5cGUg cHJldl9FeGVjdXRvclJ1biA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JGaW5pc2hfaG9va190eXBl IHByZXZfRXhlY3V0b3JGaW5pc2ggPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlw ZSBwcmV2X0V4ZWN1dG9yRW5kID0gTlVMTDsKKworLyotLS0tIEdVQyB2YXJpYWJsZXMgLS0tLSov CisKK3R5cGVkZWYgZW51bQoreworCVBHU1BfVFJBQ0tfTk9ORSwJCQkvKiB0cmFjayBubyBwbGFu cyAqLworCVBHU1BfVFJBQ0tfVE9QLAkJCQkvKiBvbmx5IHBsYW5zIGZvciB0b3AgbGV2ZWwgc3Rh dGVtZW50cyAqLworCVBHU1BfVFJBQ0tfQUxMLAkJCQkvKiBhbGwgcGxhbnMsIGluY2x1ZGluZyBm b3IgbmVzdGVkIHN0YXRlbWVudHMgKi8KK30JCQlQR1NQVHJhY2tMZXZlbDsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSB0cmFja19vcHRpb25zW10gPQoreworCXsibm9u ZSIsIFBHU1BfVFJBQ0tfTk9ORSwgZmFsc2V9LAorCXsidG9wIiwgUEdTUF9UUkFDS19UT1AsIGZh bHNlfSwKKwl7ImFsbCIsIFBHU1BfVFJBQ0tfQUxMLCBmYWxzZX0sCisJe05VTEwsIDAsIGZhbHNl fQorfTsKKworc3RhdGljIGludAlwZ3NwX21heCA9IDUwMDA7CS8qIG1heCAjIHBsYW5zIHRvIHRy YWNrICovCitzdGF0aWMgaW50CXBnc3BfbWF4X3NpemUgPSAyMDQ4OwkvKiBtYXggc2l6ZSBvZiBw bGFuIHRleHQgdG8gdHJhY2sgKGluCisJCQkJCQkJCQkgKiBieXRlcykgKi8KK3N0YXRpYyBpbnQJ cGdzcF90cmFjayA9IFBHU1BfVFJBQ0tfVE9QOwkvKiB0cmFja2luZyBsZXZlbCAqLworCisjZGVm aW5lIHBnc3BfZW5hYmxlZChsZXZlbCkgXAorCSghSXNQYXJhbGxlbFdvcmtlcigpICYmIFwKKwko Y29tcHV0ZV9wbGFuX2lkICE9IENPTVBVVEVfUExBTl9JRF9PRkYpICYmIFwKKwkocGdzcF90cmFj ayA9PSBQR1NQX1RSQUNLX0FMTCB8fCBcCisJKHBnc3BfdHJhY2sgPT0gUEdTUF9UUkFDS19UT1Ag JiYgKGxldmVsKSA9PSAwKSkpCisKKyNkZWZpbmUgVVNBR0VfSU5DUkVBU0UJCQkwLjUgLyogaW5j cmVhc2UgYnkgdGhpcyBlYWNoIHRpbWUgd2UgcmVwb3J0CisJCQkJCQkJCQkgKiBzdGF0cyAqLwor I2RlZmluZSBVU0FHRV9ERUNSRUFTRV9GQUNUT1IJKDAuOTkpCS8qIGRlY3JlYXNlZCBldmVyeQor CQkJCQkJCQkJCSAqIHBnc3RhdF9kZWFsbG9jX3BsYW5zICovCisjZGVmaW5lIFVTQUdFX0RFQUxM T0NfUEVSQ0VOVAk1CS8qIGZyZWUgdGhpcyAlIG9mIGVudHJpZXMgYXQgb25jZSAqLworCisvKi0t LS0gRnVuY3Rpb24gZGVjbGFyYXRpb25zIC0tLS0qLworCitQR19GVU5DVElPTl9JTkZPX1YxKHBn X3N0YXRfcGxhbnNfcmVzZXQpOworUEdfRlVOQ1RJT05fSU5GT19WMShwZ19zdGF0X3BsYW5zXzFf MCk7CisKKy8qIFN0cnVjdHVyZXMgZm9yIHN0YXRpc3RpY3Mgb2YgcGxhbnMgKi8KK3R5cGVkZWYg c3RydWN0IFBnU3RhdFNoYXJlZF9QbGFuSW5mbworeworCS8qIGtleSBlbGVtZW50cyB0aGF0IGlk ZW50aWZ5IGEgcGxhbiAodG9nZXRoZXIgd2l0aCB0aGUgZGJvaWQpICovCisJdWludDY0CQlwbGFu aWQ7CisJdWludDY0CQlxdWVyeWlkOworCU9pZAkJCXVzZXJpZDsJCQkvKiB1c2VyaWQgaXMgdHJh Y2tlZCB0byBhbGxvdyB1c2VycyB0byBzZWUKKwkJCQkJCQkJICogdGhlaXIgb3duIHF1ZXJ5IHBs YW5zICovCisJYm9vbAkJdG9wbGV2ZWw7CQkvKiBxdWVyeSBleGVjdXRlZCBhdCB0b3AgbGV2ZWwg Ki8KKworCWRzYV9wb2ludGVyIHBsYW5fdGV4dDsJCS8qIHBvaW50ZXIgdG8gRFNBIG1lbW9yeSBj b250YWluaW5nIHBsYW4gdGV4dCAqLworCWludAkJCXBsYW5fZW5jb2Rpbmc7CS8qIHBsYW4gdGV4 dCBlbmNvZGluZyAqLworfQkJCVBnU3RhdFNoYXJlZF9QbGFuSW5mbzsKKwordHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X1N0YXRQbGFuRW50cnkKK3sKKwlQZ1N0YXRfQ291bnRlciBleGVjX2NvdW50Owor CWRvdWJsZQkJZXhlY190aW1lOworCWRvdWJsZQkJdXNhZ2U7CQkJLyogVXNhZ2UgZmFjdG9yIG9m IHRoZSBlbnRyeSwgdXNlZCB0bworCQkJCQkJCQkgKiBwcmlvcml0aXplIHdoaWNoIHBsYW5zIHRv IGFnZSBvdXQgKi8KKworCS8qIE9ubHkgdXNlZCBpbiBzaGFyZWQgc3RydWN0dXJlLCBub3QgaW4g bG9jYWwgcGVuZGluZyBzdGF0cyAqLworCVBnU3RhdFNoYXJlZF9QbGFuSW5mbyBpbmZvOworfQkJ CVBnU3RhdF9TdGF0UGxhbkVudHJ5OworCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRTaGFyZWRfUGxh bgoreworCVBnU3RhdFNoYXJlZF9Db21tb24gaGVhZGVyOworCVBnU3RhdF9TdGF0UGxhbkVudHJ5 IHN0YXRzOworfQkJCVBnU3RhdFNoYXJlZF9QbGFuOworCitzdGF0aWMgYm9vbCBwbGFuX3N0YXRz X2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCk7CisKK3N0 YXRpYyBjb25zdCBQZ1N0YXRfS2luZEluZm8gcGxhbl9zdGF0cyA9IHsKKwkubmFtZSA9ICJwbGFu X3N0YXRzIiwKKwkuZml4ZWRfYW1vdW50ID0gZmFsc2UsCisKKwkvKgorCSAqIFdlIGN1cnJlbnRs eSBkb24ndCB3cml0ZSB0byBhIGZpbGUgc2luY2UgcGxhbiB0ZXh0cyB3b3VsZCBnZXQgbG9zdCAo YW5kCisJICoganVzdCB0aGUgc3RhdHMgb24gdGhlaXIgb3duIGFyZW4ndCB0aGF0IHVzZWZ1bCkK KwkgKi8KKwkud3JpdGVfdG9fZmlsZSA9IGZhbHNlLAorCisJLyoKKwkgKiBQbGFuIHN0YXRpc3Rp Y3MgYXJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSB0byBzaW1wbGlmeSBtb25pdG9yaW5nCisJICog c2NyaXB0cworCSAqLworCS5hY2Nlc3NlZF9hY3Jvc3NfZGF0YWJhc2VzID0gdHJ1ZSwKKworCS5z aGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfUGxhbiksCisJLnNoYXJlZF9kYXRhX29m ZiA9IG9mZnNldG9mKFBnU3RhdFNoYXJlZF9QbGFuLCBzdGF0cyksCisJLnNoYXJlZF9kYXRhX2xl biA9IHNpemVvZigoKFBnU3RhdFNoYXJlZF9QbGFuICopIDApLT5zdGF0cyksCisJLnBlbmRpbmdf c2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFBsYW5FbnRyeSksCisJLmZsdXNoX3BlbmRpbmdfY2Ig PSBwbGFuX3N0YXRzX2ZsdXNoX2NiLAorfTsKKworLyoKKyAqIENvbXB1dGUgc3RhdHMgZW50cnkg aWR4IGZyb20gcXVlcnkgSUQgYW5kIHBsYW4gSUQgd2l0aCBhbiA4LWJ5dGUgaGFzaC4KKyAqCisg KiBXaGlsc3Qgd2UgY291bGQgdGhlb3JpY2FsbHkganVzdCB1c2UgdGhlIHBsYW4gSUQgaGVyZSwg d2UgaW50ZW50aW9uYWxseQorICogYWRkIHRoZSBxdWVyeSBJRCBpbnRvIHRoZSBtaXggdG8gZWFz ZSBpbnRlcnByZXRpbmcgdGhlIGRhdGEgaW4gY29tYmluYXRpb24KKyAqIHdpdGggcGdfc3RhdF9z dGF0ZW1lbnRzLgorICovCisjZGVmaW5lIFBHU1RBVF9QTEFOX0lEWChxdWVyeV9pZCwgcGxhbl9p ZCwgdXNlcl9pZCwgdG9wbGV2ZWwpIGhhc2hfY29tYmluZTY0KHRvcGxldmVsLCBoYXNoX2NvbWJp bmU2NChxdWVyeV9pZCwgaGFzaF9jb21iaW5lNjQocGxhbl9pZCwgdXNlcl9pZCkpKQorCisvKgor ICogS2luZCBJRCByZXNlcnZlZCBmb3Igc3RhdGlzdGljcyBvZiBwbGFucy4KKyAqLworI2RlZmlu ZSBQR1NUQVRfS0lORF9QTEFOUwlQR1NUQVRfS0lORF9FWFBFUklNRU5UQUwJLyogVE9ETzogQXNz aWduICovCisKKy8qCisgKiBDYWxsYmFjayBmb3Igc3RhdHMgaGFuZGxpbmcKKyAqLworc3RhdGlj IGJvb2wKK3BsYW5fc3RhdHNfZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJv b2wgbm93YWl0KQoreworCVBnU3RhdF9TdGF0UGxhbkVudHJ5ICpsb2NhbGVudDsKKwlQZ1N0YXRT aGFyZWRfUGxhbiAqc2hmdW5jZW50OworCisJbG9jYWxlbnQgPSAoUGdTdGF0X1N0YXRQbGFuRW50 cnkgKikgZW50cnlfcmVmLT5wZW5kaW5nOworCXNoZnVuY2VudCA9IChQZ1N0YXRTaGFyZWRfUGxh biAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsKKworCWlmICghcGdzdGF0X2xvY2tfZW50cnko ZW50cnlfcmVmLCBub3dhaXQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzaGZ1bmNlbnQtPnN0YXRz LmV4ZWNfY291bnQgKz0gbG9jYWxlbnQtPmV4ZWNfY291bnQ7CisJc2hmdW5jZW50LT5zdGF0cy5l eGVjX3RpbWUgKz0gbG9jYWxlbnQtPmV4ZWNfdGltZTsKKwlzaGZ1bmNlbnQtPnN0YXRzLnVzYWdl ICs9IGxvY2FsZW50LT51c2FnZTsKKworCXBnc3RhdF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsK KworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgY2hhciAqCitwZ3NwX2V4cGxhaW5fcGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sKKwlFeHBsYWluU3RhdGUgKmVzOworCVN0cmluZ0luZm8J ZXNfc3RyOworCisJZXMgPSBOZXdFeHBsYWluU3RhdGUoKTsKKwllc19zdHIgPSBlcy0+c3RyOwor CisJLyoKKwkgKiBXZSB0dXJuIG9mZiBDT1NUUyBzaW5jZSBpZGVudGljYWwgcGxhbmlkcyBtYXkg aGF2ZSB2ZXJ5IGRpZmZlcmVudAorCSAqIGNvc3RzLCBhbmQgaXQgY291bGQgYmUgbWlzbGVhZGlu ZyB0byBvbmx5IHNob3cgdGhlIGZpcnN0IHJlY29yZGVkCisJICogcGxhbidzIGNvc3RzLgorCSAq LworCWVzLT5jb3N0cyA9IGZhbHNlOworCWVzLT5mb3JtYXQgPSBFWFBMQUlOX0ZPUk1BVF9URVhU OworCisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsKKwlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVy eURlc2MpOworCUV4cGxhaW5FbmRPdXRwdXQoZXMpOworCisJcmV0dXJuIGVzX3N0ci0+ZGF0YTsK K30KKworc3RhdGljIHZvaWQKK3Bnc3RhdF9nY19wbGFuX21lbW9yeSgpCit7CisJZHNoYXNoX3Nl cV9zdGF0dXMgaHN0YXQ7CisJUGdTdGF0U2hhcmVkX0hhc2hFbnRyeSAqcDsKKworCS8qIGRzaGFz aCBlbnRyeSBpcyBub3QgbW9kaWZpZWQsIHRha2Ugc2hhcmVkIGxvY2sgKi8KKwlkc2hhc2hfc2Vx X2luaXQoJmhzdGF0LCBwZ1N0YXRMb2NhbC5zaGFyZWRfaGFzaCwgZmFsc2UpOworCXdoaWxlICgo cCA9IGRzaGFzaF9zZXFfbmV4dCgmaHN0YXQpKSAhPSBOVUxMKQorCXsKKwkJUGdTdGF0U2hhcmVk X0NvbW1vbiAqaGVhZGVyOworCQlQZ1N0YXRfU3RhdFBsYW5FbnRyeSAqc3RhdGVudDsKKworCQlp ZiAoIXAtPmRyb3BwZWQgfHwgcC0+a2V5LmtpbmQgIT0gUEdTVEFUX0tJTkRfUExBTlMpCisJCQlj b250aW51ZTsKKworCQloZWFkZXIgPSBkc2FfZ2V0X2FkZHJlc3MocGdTdGF0TG9jYWwuZHNhLCBw LT5ib2R5KTsKKworCQlpZiAoIUxXTG9ja0NvbmRpdGlvbmFsQWNxdWlyZSgmaGVhZGVyLT5sb2Nr LCBMV19FWENMVVNJVkUpKQorCQkJY29udGludWU7CisKKwkJc3RhdGVudCA9IChQZ1N0YXRfU3Rh dFBsYW5FbnRyeSAqKSBwZ3N0YXRfZ2V0X2VudHJ5X2RhdGEoUEdTVEFUX0tJTkRfUExBTlMsIGhl YWRlcik7CisKKwkJLyoKKwkJICogQ2xlYW4gdXAgdGhpcyBlbnRyeSdzIHBsYW4gdGV4dCBhbGxv Y2F0aW9uLCBpZiB3ZSBoYXZlbid0IGRvbmUgc28KKwkJICogYWxyZWFkeQorCQkgKi8KKwkJaWYg KERzYVBvaW50ZXJJc1ZhbGlkKHN0YXRlbnQtPmluZm8ucGxhbl90ZXh0KSkKKwkJeworCQkJZHNh X2ZyZWUocGdTdGF0TG9jYWwuZHNhLCBzdGF0ZW50LT5pbmZvLnBsYW5fdGV4dCk7CisJCQlzdGF0 ZW50LT5pbmZvLnBsYW5fdGV4dCA9IEludmFsaWREc2FQb2ludGVyOworCisJCQkvKiBBbGxvdyBy ZW1vdmFsIG9mIHRoZSBzaGFyZWQgc3RhdHMgZW50cnkgKi8KKwkJCXBnX2F0b21pY19mZXRjaF9z dWJfdTMyKCZwLT5yZWZjb3VudCwgMSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKCZoZWFkZXIt PmxvY2spOworCX0KKwlkc2hhc2hfc2VxX3Rlcm0oJmhzdGF0KTsKKworCS8qIEVuY291cmFnZSBv dGhlciBiYWNrZW5kcyB0byBjbGVhbiB1cCBkcm9wcGVkIGVudHJ5IHJlZnMgKi8KKwlwZ3N0YXRf cmVxdWVzdF9lbnRyeV9yZWZzX2djKCk7Cit9CisKK3R5cGVkZWYgc3RydWN0IFBsYW5EZWFsbG9j RW50cnkKK3sKKwlQZ1N0YXRfSGFzaEtleSBrZXk7CisJZG91YmxlCQl1c2FnZTsKK30JCQlQbGFu RGVhbGxvY0VudHJ5OworCisvKgorICogbGlzdCBzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcg aW50byBkZWNyZWFzaW5nIHVzYWdlIG9yZGVyCisgKi8KK3N0YXRpYyBpbnQKK2VudHJ5X2NtcF9s cnUoY29uc3QgdW5pb24gTGlzdENlbGwgKmxocywgY29uc3QgdW5pb24gTGlzdENlbGwgKnJocykK K3sKKwlkb3VibGUJCWxfdXNhZ2UgPSAoKFBsYW5EZWFsbG9jRW50cnkgKikgbGZpcnN0KGxocykp LT51c2FnZTsKKwlkb3VibGUJCXJfdXNhZ2UgPSAoKFBsYW5EZWFsbG9jRW50cnkgKikgbGZpcnN0 KHJocykpLT51c2FnZTsKKworCWlmIChsX3VzYWdlID4gcl91c2FnZSkKKwkJcmV0dXJuIC0xOwor CWVsc2UgaWYgKGxfdXNhZ2UgPCByX3VzYWdlKQorCQlyZXR1cm4gKzE7CisJZWxzZQorCQlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3Bnc3RhdF9kZWFsbG9jX3BsYW5zKCkKK3sKKwlkc2hh c2hfc2VxX3N0YXR1cyBoc3RhdDsKKwlQZ1N0YXRTaGFyZWRfSGFzaEVudHJ5ICpwOworCUxpc3QJ ICAgKmVudHJpZXMgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJbnZpY3RpbXM7CisK KwkvKiBkc2hhc2ggZW50cnkgaXMgbm90IG1vZGlmaWVkLCB0YWtlIHNoYXJlZCBsb2NrICovCisJ ZHNoYXNoX3NlcV9pbml0KCZoc3RhdCwgcGdTdGF0TG9jYWwuc2hhcmVkX2hhc2gsIGZhbHNlKTsK Kwl3aGlsZSAoKHAgPSBkc2hhc2hfc2VxX25leHQoJmhzdGF0KSkgIT0gTlVMTCkKKwl7CisJCVBn U3RhdFNoYXJlZF9Db21tb24gKmhlYWRlcjsKKwkJUGdTdGF0X1N0YXRQbGFuRW50cnkgKnN0YXRl bnQ7CisJCVBsYW5EZWFsbG9jRW50cnkgKmVudHJ5OworCisJCWlmIChwLT5kcm9wcGVkIHx8IHAt PmtleS5raW5kICE9IFBHU1RBVF9LSU5EX1BMQU5TKQorCQkJY29udGludWU7CisKKwkJaGVhZGVy ID0gZHNhX2dldF9hZGRyZXNzKHBnU3RhdExvY2FsLmRzYSwgcC0+Ym9keSk7CisKKwkJaWYgKCFM V0xvY2tDb25kaXRpb25hbEFjcXVpcmUoJmhlYWRlci0+bG9jaywgTFdfRVhDTFVTSVZFKSkKKwkJ CWNvbnRpbnVlOworCisJCXN0YXRlbnQgPSAoUGdTdGF0X1N0YXRQbGFuRW50cnkgKikgcGdzdGF0 X2dldF9lbnRyeV9kYXRhKFBHU1RBVF9LSU5EX1BMQU5TLCBoZWFkZXIpOworCQlzdGF0ZW50LT51 c2FnZSAqPSBVU0FHRV9ERUNSRUFTRV9GQUNUT1I7CisKKwkJZW50cnkgPSBwYWxsb2Moc2l6ZW9m KFBsYW5EZWFsbG9jRW50cnkpKTsKKwkJZW50cnktPmtleSA9IHAtPmtleTsKKwkJZW50cnktPnVz YWdlID0gc3RhdGVudC0+dXNhZ2U7CisKKwkJTFdMb2NrUmVsZWFzZSgmaGVhZGVyLT5sb2NrKTsK KworCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBlbnRyeSk7CisJfQorCWRzaGFzaF9zZXFf dGVybSgmaHN0YXQpOworCisJLyogU29ydCBieSB1c2FnZSBhc2NlbmRpbmcgKGxvd2VzdCB1c2Vk IGVudHJpZXMgYXJlIGxhc3QpICovCisJbGlzdF9zb3J0KGVudHJpZXMsIGVudHJ5X2NtcF9scnUp OworCisJLyogQXQgYSBtaW5pbXVtLCBkZWFsbG9jYXRlIDEwIGVudHJpZXMgdG8gbWFrZSBpdCB3 b3J0aCBvdXIgd2hpbGUgKi8KKwludmljdGltcyA9IE1heCgxMCwgbGlzdF9sZW5ndGgoZW50cmll cykgKiBVU0FHRV9ERUFMTE9DX1BFUkNFTlQgLyAxMDApOworCW52aWN0aW1zID0gTWluKG52aWN0 aW1zLCBsaXN0X2xlbmd0aChlbnRyaWVzKSk7CisKKwkvKiBBY3R1YWxseSBkcm9wIHRoZSBlbnRy aWVzICovCisJZm9yX2VhY2hfZnJvbShsYywgZW50cmllcywgbGlzdF9sZW5ndGgoZW50cmllcykg LSBudmljdGltcykKKwl7CisJCVBsYW5EZWFsbG9jRW50cnkgKmVudHJ5ID0gbGZpcnN0KGxjKTsK KworCQlwZ3N0YXRfZHJvcF9lbnRyeShlbnRyeS0+a2V5LmtpbmQsIGVudHJ5LT5rZXkuZGJvaWQs IGVudHJ5LT5rZXkub2JqaWQpOworCX0KKworCS8qIENsZWFuIHVwIG91ciB3b3JraW5nIG1lbW9y eSBpbW1lZGlhdGVseSAqLworCWZvcmVhY2gobGMsIGVudHJpZXMpCisJeworCQlQbGFuRGVhbGxv Y0VudHJ5ICplbnRyeSA9IGxmaXJzdChsYyk7CisKKwkJcGZyZWUoZW50cnkpOworCX0KKwlwZnJl ZShlbnRyaWVzKTsKK30KKworc3RhdGljIHZvaWQKK3Bnc3RhdF9nY19wbGFucygpCit7CisJZHNo YXNoX3NlcV9zdGF0dXMgaHN0YXQ7CisJUGdTdGF0U2hhcmVkX0hhc2hFbnRyeSAqcDsKKwlib29s CQloYXZlX2Ryb3BwZWRfZW50cmllcyA9IGZhbHNlOworCXNpemVfdAkJcGxhbl9lbnRyeV9jb3Vu dCA9IDA7CisKKwkvKiBUT0RPOiBQcmV2ZW50IGNvbmN1cnJlbnQgR0MgY3ljbGVzIC0gZmxhZyBh biBhY3RpdmUgR0MgcnVuIHNvbWVob3cgKi8KKworCS8qCisJICogQ291bnQgb3VyIGFjdGl2ZSBl bnRyaWVzLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGRyb3BwZWQgZW50cmllcyB3ZQorCSAq IG1heSBuZWVkIHRvIGNsZWFuIHVwIGF0IHRoZSBlbmQuCisJICovCisJZHNoYXNoX3NlcV9pbml0 KCZoc3RhdCwgcGdTdGF0TG9jYWwuc2hhcmVkX2hhc2gsIGZhbHNlKTsKKwl3aGlsZSAoKHAgPSBk c2hhc2hfc2VxX25leHQoJmhzdGF0KSkgIT0gTlVMTCkKKwl7CisJCWlmIChwLT5rZXkua2luZCAh PSBQR1NUQVRfS0lORF9QTEFOUykKKwkJCWNvbnRpbnVlOworCisJCWlmIChwLT5kcm9wcGVkKQor CQkJaGF2ZV9kcm9wcGVkX2VudHJpZXMgPSB0cnVlOworCQllbHNlCisJCQlwbGFuX2VudHJ5X2Nv dW50Kys7CisJfQorCWRzaGFzaF9zZXFfdGVybSgmaHN0YXQpOworCisJLyoKKwkgKiBJZiB3ZSdy ZSBvdmVyIHRoZSBsaW1pdCwgZGVsZXRlIGVudHJpZXMgd2l0aCBsb3dlc3QgdXNhZ2UgZmFjdG9y LgorCSAqLworCWlmIChwbGFuX2VudHJ5X2NvdW50ID4gcGdzcF9tYXgpCisJeworCQlwZ3N0YXRf ZGVhbGxvY19wbGFucygpOworCQloYXZlX2Ryb3BwZWRfZW50cmllcyA9IHRydWU7CS8qIEFzc3Vt ZSB3ZSBkaWQgc29tZSB3b3JrICovCisJfQorCisJLyogSWYgdGhlcmUgYXJlIGRyb3BwZWQgZW50 cmllcywgY2xlYW4gdXAgdGhlaXIgcGxhbiBtZW1vcnkgaWYgbmVlZGVkICovCisJaWYgKGhhdmVf ZHJvcHBlZF9lbnRyaWVzKQorCQlwZ3N0YXRfZ2NfcGxhbl9tZW1vcnkoKTsKK30KKworc3RhdGlj IHZvaWQKK3Bnc3RhdF9yZXBvcnRfcGxhbl9zdGF0cyhRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJ CQkJCSBQZ1N0YXRfQ291bnRlciBleGVjX2NvdW50LAorCQkJCQkJIGRvdWJsZSBleGVjX3RpbWUp Cit7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CisJUGdTdGF0U2hhcmVkX1BsYW4gKnNo c3RhdGVudDsKKwlQZ1N0YXRfU3RhdFBsYW5FbnRyeSAqc3RhdGVudDsKKwlib29sCQluZXdseV9j cmVhdGVkOworCXVpbnQ2NAkJcXVlcnlJZCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5 SWQ7CisJdWludDY0CQlwbGFuSWQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5wbGFuSWQ7CisJ T2lkCQkJdXNlcmlkID0gR2V0VXNlcklkKCk7CisJYm9vbAkJdG9wbGV2ZWwgPSAobmVzdGluZ19s ZXZlbCA9PSAwKTsKKworCWVudHJ5X3JlZiA9IHBnc3RhdF9wcmVwX3BlbmRpbmdfZW50cnkoUEdT VEFUX0tJTkRfUExBTlMsIE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJCQkgIFBHU1RBVF9QTEFOX0lE WChxdWVyeUlkLCBwbGFuSWQsIHVzZXJpZCwgdG9wbGV2ZWwpLCAmbmV3bHlfY3JlYXRlZCk7CisK KwlzaHN0YXRlbnQgPSAoUGdTdGF0U2hhcmVkX1BsYW4gKikgZW50cnlfcmVmLT5zaGFyZWRfc3Rh dHM7CisJc3RhdGVudCA9ICZzaHN0YXRlbnQtPnN0YXRzOworCisJaWYgKG5ld2x5X2NyZWF0ZWQp CisJeworCQljaGFyCSAgICpwbGFuID0gcGdzcF9leHBsYWluX3BsYW4ocXVlcnlEZXNjKTsKKwkJ c2l6ZV90CQlwbGFuX3NpemUgPSBNaW4oc3RybGVuKHBsYW4pLCBwZ3NwX21heF9zaXplKTsKKwor CQkodm9pZCkgcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVmLCBmYWxzZSk7CisKKwkJLyoKKwkJ ICogV2UgbWF5IGJlIG92ZXIgdGhlIGxpbWl0LCBzbyBydW4gR0Mgbm93IGJlZm9yZSBzYXZpbmcg ZW50cnkgKHdlIGRvCisJCSAqIHRoaXMgd2hpbHN0IGhvbGRpbmcgdGhlIGxvY2sgb24gdGhlIG5l dyBlbnRyeSBzbyB3ZSBkb24ndCByZW1vdmUgaXQKKwkJICogYnkgYWNjaWRlbnQpCisJCSAqLwor CQlwZ3N0YXRfZ2NfcGxhbnMoKTsKKworCQlzaHN0YXRlbnQtPnN0YXRzLmluZm8ucGxhbmlkID0g cGxhbklkOworCQlzaHN0YXRlbnQtPnN0YXRzLmluZm8ucXVlcnlpZCA9IHF1ZXJ5SWQ7CisJCXNo c3RhdGVudC0+c3RhdHMuaW5mby51c2VyaWQgPSB1c2VyaWQ7CisJCXNoc3RhdGVudC0+c3RhdHMu aW5mby50b3BsZXZlbCA9IHRvcGxldmVsOworCQlzaHN0YXRlbnQtPnN0YXRzLmluZm8ucGxhbl90 ZXh0ID0gZHNhX2FsbG9jYXRlKHBnU3RhdExvY2FsLmRzYSwgcGxhbl9zaXplKTsKKwkJc3RybGNw eShkc2FfZ2V0X2FkZHJlc3MocGdTdGF0TG9jYWwuZHNhLCBzaHN0YXRlbnQtPnN0YXRzLmluZm8u cGxhbl90ZXh0KSwgcGxhbiwgcGxhbl9zaXplKTsKKworCQlzaHN0YXRlbnQtPnN0YXRzLmluZm8u cGxhbl9lbmNvZGluZyA9IEdldERhdGFiYXNlRW5jb2RpbmcoKTsKKworCQkvKgorCQkgKiBJbmNy ZWFzZSByZWZjb3VudCBoZXJlIHNvIGVudHJ5IGNhbid0IGdldCByZWxlYXNlZCB3aXRob3V0IHVz CisJCSAqIGRyb3BwaW5nIHRoZSBwbGFuIHRleHQKKwkJICovCisJCXBnX2F0b21pY19mZXRjaF9h ZGRfdTMyKCZlbnRyeV9yZWYtPnNoYXJlZF9lbnRyeS0+cmVmY291bnQsIDEpOworCisJCXBnc3Rh dF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKKworCQlwZnJlZShwbGFuKTsKKwl9CisKKwlzdGF0 ZW50LT5leGVjX2NvdW50ICs9IGV4ZWNfY291bnQ7CisJc3RhdGVudC0+ZXhlY190aW1lICs9IGV4 ZWNfdGltZTsKKwlzdGF0ZW50LT51c2FnZSArPSBVU0FHRV9JTkNSRUFTRTsKK30KKworLyoKKyAq IFBsYW5uZXIgaG9vazogZm9yd2FyZCB0byByZWd1bGFyIHBsYW5uZXIsIGJ1dCBpbmNyZWFzZSBw bGFuIGNvdW50IGFuZAorICogcmVjb3JkIHF1ZXJ5IHBsYW4gaWYgbmVlZGVkLgorICovCitzdGF0 aWMgUGxhbm5lZFN0bXQgKgorcGdzcF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKKwkJCSBjb25zdCBj aGFyICpxdWVyeV9zdHJpbmcsCisJCQkgaW50IGN1cnNvck9wdGlvbnMsCisJCQkgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcykKK3sKKwlQbGFubmVkU3RtdCAqcmVzdWx0OworCisJLyoKKwkgKiBJ bmNyZW1lbnQgdGhlIG5lc3RpbmcgbGV2ZWwsIHRvIGVuc3VyZSB0aGF0IGZ1bmN0aW9ucyBldmFs dWF0ZWQgZHVyaW5nCisJICogcGxhbm5pbmcgYXJlIG5vdCBzZWVuIGFzIHRvcC1sZXZlbCBjYWxs cy4KKwkgKi8KKwluZXN0aW5nX2xldmVsKys7CisJUEdfVFJZKCk7CisJeworCQlpZiAocHJldl9w bGFubmVyX2hvb2spCisJCQlyZXN1bHQgPSBwcmV2X3BsYW5uZXJfaG9vayhwYXJzZSwgcXVlcnlf c3RyaW5nLCBjdXJzb3JPcHRpb25zLAorCQkJCQkJCQkJICAgYm91bmRQYXJhbXMpOworCQllbHNl CisJCQlyZXN1bHQgPSBzdGFuZGFyZF9wbGFubmVyKHBhcnNlLCBxdWVyeV9zdHJpbmcsIGN1cnNv ck9wdGlvbnMsCisJCQkJCQkJCQkgIGJvdW5kUGFyYW1zKTsKKwl9CisJUEdfRklOQUxMWSgpOwor CXsKKwkJbmVzdGluZ19sZXZlbC0tOworCX0KKwlQR19FTkRfVFJZKCk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisvKgorICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFydCB1cCB0cmFja2luZyBp ZiBuZWVkZWQKKyAqLworc3RhdGljIHZvaWQKK3Bnc3BfRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwl1aW50NjQJCXF1ZXJ5SWQgPSBxdWVyeURlc2Mt PnBsYW5uZWRzdG10LT5xdWVyeUlkOworCXVpbnQ2NAkJcGxhbklkID0gcXVlcnlEZXNjLT5wbGFu bmVkc3RtdC0+cGxhbklkOworCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKKwkJcHJldl9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKHF1ZXJ5SWQgIT0gVUlOVDY0Q09OU1Qo MCkgJiYgcGxhbklkICE9IFVJTlQ2NENPTlNUKDApICYmCisJCXBnc3BfZW5hYmxlZChuZXN0aW5n X2xldmVsKSkKKwl7CisJCS8qCisJCSAqIFJlY29yZCBpbml0aWFsIGVudHJ5IG5vdywgc28gcGxh biB0ZXh0IGlzIGF2YWlsYWJsZSBmb3IgY3VycmVudGx5CisJCSAqIHJ1bm5pbmcgcXVlcmllcwor CQkgKi8KKwkJcGdzdGF0X3JlcG9ydF9wbGFuX3N0YXRzKHF1ZXJ5RGVzYywKKwkJCQkJCQkJIDAs IC8qIGV4ZWN1dGlvbnMgYXJlIGNvdW50ZWQgaW4KKwkJCQkJCQkJCSAqIHBnc3BfRXhlY3V0b3JF bmQgKi8KKwkJCQkJCQkJIDAuMCk7CisKKwkJLyoKKwkJICogU2V0IHVwIHRvIHRyYWNrIHRvdGFs IGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4gIE1ha2Ugc3VyZSB0aGUKKwkJICogc3BhY2Ug aXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dCBzbyBpdCB3aWxsIGdvIGF3YXkg YXQKKwkJICogRXhlY3V0b3JFbmQuCisJCSAqLworCQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUg PT0gTlVMTCkKKwkJeworCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwkJCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJ CXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFs c2UpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJCX0KKwl9Cit9CisKKy8q CisgKiBFeGVjdXRvclJ1biBob29rOiBhbGwgd2UgbmVlZCBkbyBpcyB0cmFjayBuZXN0aW5nIGRl cHRoCisgKi8KK3N0YXRpYyB2b2lkCitwZ3NwX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50KQoreworCW5lc3Rpbmdf bGV2ZWwrKzsKKwlQR19UUlkoKTsKKwl7CisJCWlmIChwcmV2X0V4ZWN1dG9yUnVuKQorCQkJcHJl dl9FeGVjdXRvclJ1bihxdWVyeURlc2MsIGRpcmVjdGlvbiwgY291bnQpOworCQllbHNlCisJCQlz dGFuZGFyZF9FeGVjdXRvclJ1bihxdWVyeURlc2MsIGRpcmVjdGlvbiwgY291bnQpOworCX0KKwlQ R19GSU5BTExZKCk7CisJeworCQluZXN0aW5nX2xldmVsLS07CisJfQorCVBHX0VORF9UUlkoKTsK K30KKworLyoKKyAqIEV4ZWN1dG9yRmluaXNoIGhvb2s6IGFsbCB3ZSBuZWVkIGRvIGlzIHRyYWNr IG5lc3RpbmcgZGVwdGgKKyAqLworc3RhdGljIHZvaWQKK3Bnc3BfRXhlY3V0b3JGaW5pc2goUXVl cnlEZXNjICpxdWVyeURlc2MpCit7CisJbmVzdGluZ19sZXZlbCsrOworCVBHX1RSWSgpOworCXsK KwkJaWYgKHByZXZfRXhlY3V0b3JGaW5pc2gpCisJCQlwcmV2X0V4ZWN1dG9yRmluaXNoKHF1ZXJ5 RGVzYyk7CisJCWVsc2UKKwkJCXN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJ fQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCW5lc3RpbmdfbGV2ZWwtLTsKKwl9CisJUEdfRU5EX1RS WSgpOworfQorCisvKgorICogRXhlY3V0b3JFbmQgaG9vazogc3RvcmUgcmVzdWx0cyBpZiBuZWVk ZWQKKyAqLworc3RhdGljIHZvaWQKK3Bnc3BfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURl c2MpCit7CisJdWludDY0CQlxdWVyeUlkID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJ ZDsKKwl1aW50NjQJCXBsYW5JZCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnBsYW5JZDsKKwor CWlmIChxdWVyeUlkICE9IFVJTlQ2NENPTlNUKDApICYmIHBsYW5JZCAhPSBVSU5UNjRDT05TVCgw KSAmJgorCQlxdWVyeURlc2MtPnRvdGFsdGltZSAmJiBwZ3NwX2VuYWJsZWQobmVzdGluZ19sZXZl bCkpCisJeworCQkvKgorCQkgKiBNYWtlIHN1cmUgc3RhdHMgYWNjdW11bGF0aW9uIGlzIGRvbmUu ICAoTm90ZTogaXQncyBva2F5IGlmIHNldmVyYWwKKwkJICogbGV2ZWxzIG9mIGhvb2sgYWxsIGRv IHRoaXMuKQorCQkgKi8KKwkJSW5zdHJFbmRMb29wKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwor CQlwZ3N0YXRfcmVwb3J0X3BsYW5fc3RhdHMocXVlcnlEZXNjLAorCQkJCQkJCQkgMSwKKwkJCQkJ CQkJIHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT50b3RhbCAqIDEwMDAuMCAvKiBjb252ZXJ0IHRvIG1z ZWMgKi8gKTsKKwl9CisKKwlpZiAocHJldl9FeGVjdXRvckVuZCkKKwkJcHJldl9FeGVjdXRvckVu ZChxdWVyeURlc2MpOworCWVsc2UKKwkJc3RhbmRhcmRfRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsK K30KKworLyoKKyAqIE1vZHVsZSBsb2FkIGNhbGxiYWNrCisgKi8KK3ZvaWQKK19QR19pbml0KHZv aWQpCit7CisJLyoKKwkgKiBJbiBvcmRlciB0byByZWdpc3RlciBmb3Igc2hhcmVkIG1lbW9yeSBz dGF0cywgd2UgaGF2ZSB0byBiZSBsb2FkZWQgdmlhCisJICogc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzLiAgSWYgbm90LCBmYWxsIG91dCB3aXRob3V0IGhvb2tpbmcgaW50byBhbnkgb2YKKwkgKiB0 aGUgbWFpbiBzeXN0ZW0uICAoV2UgZG9uJ3QgdGhyb3cgZXJyb3IgaGVyZSBiZWNhdXNlIGl0IHNl ZW1zIHVzZWZ1bCB0bworCSAqIGFsbG93IHRoZSBwZ19zdGF0X3BsYW5zIGZ1bmN0aW9ucyB0byBi ZSBjcmVhdGVkIGV2ZW4gd2hlbiB0aGUgbW9kdWxlCisJICogaXNuJ3QgYWN0aXZlLiAgVGhlIGZ1 bmN0aW9ucyBtdXN0IHByb3RlY3QgdGhlbXNlbHZlcyBhZ2FpbnN0IGJlaW5nCisJICogY2FsbGVk IHRoZW4sIGhvd2V2ZXIuKQorCSAqLworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJy YXJpZXNfaW5fcHJvZ3Jlc3MpCisJCXJldHVybjsKKworCS8qCisJICogSW5mb3JtIHRoZSBwb3N0 bWFzdGVyIHRoYXQgd2Ugd2FudCB0byBlbmFibGUgcXVlcnlfaWQgY2FsY3VsYXRpb24gaWYKKwkg KiBjb21wdXRlX3F1ZXJ5X2lkIGlzIHNldCB0byBhdXRvLCBhcyB3ZWxsIGFzIHBsYW5faWQgY2Fs Y3VsYXRpb24gaWYKKwkgKiBjb21wdXRlX3BsYW5faWQgaXMgc2V0IHRvIGF1dG8uCisJICovCisJ RW5hYmxlUXVlcnlJZCgpOworCUVuYWJsZVBsYW5JZCgpOworCisJLyoKKwkgKiBEZWZpbmUgKG9y IHJlZGVmaW5lKSBjdXN0b20gR1VDIHZhcmlhYmxlcy4KKwkgKi8KKwlEZWZpbmVDdXN0b21JbnRW YXJpYWJsZSgicGdfc3RhdF9wbGFucy5tYXgiLAorCQkJCQkJCSJTZXRzIHRoZSBtYXhpbXVtIG51 bWJlciBvZiBwbGFucyB0cmFja2VkIGJ5IHBnX3N0YXRfcGxhbnMgaW4gc2hhcmVkIG1lbW9yeS4i LAorCQkJCQkJCU5VTEwsCisJCQkJCQkJJnBnc3BfbWF4LAorCQkJCQkJCTUwMDAsCisJCQkJCQkJ MTAwLAorCQkJCQkJCUlOVF9NQVggLyAyLAorCQkJCQkJCVBHQ19TSUdIVVAsCisJCQkJCQkJMCwK KwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CisKKwlEZWZpbmVDdXN0 b21JbnRWYXJpYWJsZSgicGdfc3RhdF9wbGFucy5tYXhfc2l6ZSIsCisJCQkJCQkJIlNldHMgdGhl IG1heGltdW0gc2l6ZSBvZiBwbGFuIHRleHRzIHRyYWNrZWQgYnkgcGdfc3RhdF9wbGFucyBpbiBz aGFyZWQgbWVtb3J5LiIsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQkmcGdzcF9tYXhfc2l6ZSwKKwkJ CQkJCQkyMDQ4LAorCQkJCQkJCTEwMCwKKwkJCQkJCQkxMDQ4NTc2LAkvKiAxTUIgaGFyZCBsaW1p dCAqLworCQkJCQkJCVBHQ19TVVNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJ TlVMTCwKKwkJCQkJCQlOVUxMKTsKKworCURlZmluZUN1c3RvbUVudW1WYXJpYWJsZSgicGdfc3Rh dF9wbGFucy50cmFjayIsCisJCQkJCQkJICJTZWxlY3RzIHdoaWNoIHBsYW5zIGFyZSB0cmFja2Vk IGJ5IHBnX3N0YXRfcGxhbnMuIiwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgJnBnc3BfdHJhY2ss CisJCQkJCQkJIFBHU1BfVFJBQ0tfVE9QLAorCQkJCQkJCSB0cmFja19vcHRpb25zLAorCQkJCQkJ CSBQR0NfU1VTRVQsCisJCQkJCQkJIDAsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIE5VTEwsCisJ CQkJCQkJIE5VTEwpOworCisJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJwZ19zdGF0X3BsYW5zIik7 CisKKwkvKgorCSAqIEluc3RhbGwgaG9va3MuCisJICovCisJcHJldl9wbGFubmVyX2hvb2sgPSBw bGFubmVyX2hvb2s7CisJcGxhbm5lcl9ob29rID0gcGdzcF9wbGFubmVyOworCXByZXZfRXhlY3V0 b3JTdGFydCA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBwZ3Nw X0V4ZWN1dG9yU3RhcnQ7CisJcHJldl9FeGVjdXRvclJ1biA9IEV4ZWN1dG9yUnVuX2hvb2s7CisJ RXhlY3V0b3JSdW5faG9vayA9IHBnc3BfRXhlY3V0b3JSdW47CisJcHJldl9FeGVjdXRvckZpbmlz aCA9IEV4ZWN1dG9yRmluaXNoX2hvb2s7CisJRXhlY3V0b3JGaW5pc2hfaG9vayA9IHBnc3BfRXhl Y3V0b3JGaW5pc2g7CisJcHJldl9FeGVjdXRvckVuZCA9IEV4ZWN1dG9yRW5kX2hvb2s7CisJRXhl Y3V0b3JFbmRfaG9vayA9IHBnc3BfRXhlY3V0b3JFbmQ7CisKKwlwZ3N0YXRfcmVnaXN0ZXJfa2lu ZChQR1NUQVRfS0lORF9QTEFOUywgJnBsYW5fc3RhdHMpOworfQorCisvKgorICogUmVzZXQgc3Rh dGVtZW50IHN0YXRpc3RpY3MuCisgKi8KK0RhdHVtCitwZ19zdGF0X3BsYW5zX3Jlc2V0KFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJcGdzdGF0X2Ryb3BfZW50cmllc19vZl9raW5kKFBHU1RBVF9LSU5E X1BMQU5TKTsKKworCS8qIEZyZWUgcGxhbiB0ZXh0IG1lbW9yeSBhbmQgYWxsb3cgY2xlYW51cCBv 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 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY3NTBiM2UyY2MKLS0tIC9k ZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMvcGdfc3RhdF9wbGFucy5jb25mCkBA IC0wLDAgKzEgQEAKK3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICdwZ19zdGF0X3BsYW5zJwpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3BsYW5zL3BnX3N0YXRfcGxhbnMuY29udHJvbCBi L2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmNvbnRyb2wKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGRiM2E0NzIzOQotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvcGdfc3RhdF9wbGFucy9wZ19zdGF0X3BsYW5zLmNvbnRyb2wKQEAgLTAsMCArMSw1 IEBACisjIHBnX3N0YXRfcGxhbnMgZXh0ZW5zaW9uCitjb21tZW50ID0gJ3RyYWNrIHBlci1wbGFu IGNhbGwgY291bnRzLCBleGVjdXRpb24gdGltZXMgYW5kIEVYUExBSU4gdGV4dHMnCitkZWZhdWx0 X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdfc3RhdF9wbGFu cycKK3JlbG9jYXRhYmxlID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3BsYW5z L3NxbC9jbGVhbnVwLnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTE1NjU2MTdjZQotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9wbGFucy9zcWwvY2xlYW51cC5zcWwKQEAgLTAs MCArMSBAQAorRFJPUCBFWFRFTlNJT04gcGdfc3RhdF9wbGFuczsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfc3RhdF9wbGFucy9zcWwvcHJpdmlsZWdlcy5zcWwgYi9jb250cmliL3BnX3N0YXRfcGxh bnMvc3FsL3ByaXZpbGVnZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmFhYWQ3MmE2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfcGxhbnMv c3FsL3ByaXZpbGVnZXMuc3FsCkBAIC0wLDAgKzEsNTkgQEAKKy0tCistLSBPbmx5IHN1cGVydXNl cnMgYW5kIHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUgcGdfcmVhZF9hbGxfc3RhdHMgcm9s ZQorLS0gYXJlIGFsbG93ZWQgdG8gc2VlIHRoZSBwbGFuIHRleHQsIHF1ZXJ5aWQgYW5kIHBsYW5p ZCBvZiBxdWVyaWVzIGV4ZWN1dGVkIGJ5CistLSBvdGhlciB1c2Vycy4gT3RoZXIgdXNlcnMgY2Fu IHNlZSB0aGUgc3RhdGlzdGljcy4KKy0tCisKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfc3RhdHNfc3Vw ZXJ1c2VyIFNVUEVSVVNFUjsKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CitDUkVB VEUgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIyOworR1JBTlQgcGdfcmVhZF9hbGxfc3RhdHMgVE8g cmVncmVzc19zdGF0c191c2VyMjsKKworU0VUIFJPTEUgcmVncmVzc19zdGF0c19zdXBlcnVzZXI7 CitTRUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CitTRUxFQ1Qg MSBBUyAiT05FIjsKKworU0VUIFJPTEUgcmVncmVzc19zdGF0c191c2VyMTsKK1NFTEVDVCAxKzEg QVMgIlRXTyI7CisKKy0tCistLSBBIHN1cGVydXNlciBjYW4gcmVhZCBhbGwgY29sdW1ucyBvZiBx dWVyaWVzIGV4ZWN1dGVkIGJ5IG90aGVycywKKy0tIGluY2x1ZGluZyBwbGFuIHRleHQsIHF1ZXJ5 aWQgYW5kIHBsYW5pZC4KKy0tCisKK1NFVCBST0xFIHJlZ3Jlc3Nfc3RhdHNfc3VwZXJ1c2VyOwor U0VMRUNUIHIucm9sbmFtZSwgc3MucXVlcnlpZCA8PiAwIEFTIHF1ZXJ5aWRfYm9vbCwgc3MucGxh bmlkIDw+IDAgQVMgcGxhbmlkX2Jvb2wsIHNzLnBsYW4sIHNzLmNhbGxzCisgIEZST00gcGdfc3Rh dF9wbGFucyBzcyBKT0lOIHBnX3JvbGVzIHIgT04gc3MudXNlcmlkID0gci5vaWQKKyAgT1JERVIg Qlkgci5yb2xuYW1lLCBzcy5wbGFuIENPTExBVEUgIkMiLCBzcy5jYWxsczsKKworLS0KKy0tIHJl Z3Jlc3Nfc3RhdHNfdXNlcjEgaGFzIG5vIHByaXZpbGVnZXMgdG8gcmVhZCB0aGUgcGxhbiB0ZXh0 LCBxdWVyeWlkCistLSBvciBwbGFuaWQgb2YgcXVlcmllcyBleGVjdXRlZCBieSBvdGhlcnMgYnV0 IGNhbiBzZWUgc3RhdGlzdGljcworLS0gbGlrZSBjYWxscyBhbmQgcm93cy4KKy0tCisKK1NFVCBS T0xFIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CitTRUxFQ1Qgci5yb2xuYW1lLCBzcy5xdWVyeWlkIDw+ IDAgQVMgcXVlcnlpZF9ib29sLCBzcy5wbGFuaWQgPD4gMCBBUyBwbGFuaWRfYm9vbCwgc3MucGxh biwgc3MuY2FsbHMKKyAgRlJPTSBwZ19zdGF0X3BsYW5zIHNzIEpPSU4gcGdfcm9sZXMgciBPTiBz cy51c2VyaWQgPSByLm9pZAorICBPUkRFUiBCWSByLnJvbG5hbWUsIHNzLnBsYW4gQ09MTEFURSAi QyIsIHNzLmNhbGxzOworCistLQorLS0gcmVncmVzc19zdGF0c191c2VyMiwgd2l0aCBwZ19yZWFk X2FsbF9zdGF0cyByb2xlIHByaXZpbGVnZXMsIGNhbgorLS0gcmVhZCBhbGwgY29sdW1ucywgaW5j bHVkaW5nIHBsYW4gdGV4dCwgcXVlcnlpZCBhbmQgcGxhbmlkLCBvZiBxdWVyaWVzCistLSBleGVj dXRlZCBieSBvdGhlcnMuCistLQorCitTRVQgUk9MRSByZWdyZXNzX3N0YXRzX3VzZXIyOworU0VM RUNUIHIucm9sbmFtZSwgc3MucXVlcnlpZCA8PiAwIEFTIHF1ZXJ5aWRfYm9vbCwgc3MucGxhbmlk IDw+IDAgQVMgcGxhbmlkX2Jvb2wsIHNzLnBsYW4sIHNzLmNhbGxzCisgIEZST00gcGdfc3RhdF9w bGFucyBzcyBKT0lOIHBnX3JvbGVzIHIgT04gc3MudXNlcmlkID0gci5vaWQKKyAgT1JERVIgQlkg ci5yb2xuYW1lLCBzcy5wbGFuIENPTExBVEUgIkMiLCBzcy5jYWxsczsKKworLS0KKy0tIGNsZWFu dXAKKy0tCisKK1JFU0VUIFJPTEU7CitEUk9QIFJPTEUgcmVncmVzc19zdGF0c19zdXBlcnVzZXI7 CitEUk9QIFJPTEUgcmVncmVzc19zdGF0c191c2VyMTsKK0RST1AgUk9MRSByZWdyZXNzX3N0YXRz X3VzZXIyOworU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0Owpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3BsYW5zL3NxbC9zZWxlY3Quc3FsIGIvY29udHJp Yi9wZ19zdGF0X3BsYW5zL3NxbC9zZWxlY3Quc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmYwZTgwM2FkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3N0 YXRfcGxhbnMvc3FsL3NlbGVjdC5zcWwKQEAgLTAsMCArMSw2NyBAQAorLS0KKy0tIFNFTEVDVCBz dGF0ZW1lbnRzCistLQorCitDUkVBVEUgRVhURU5TSU9OIHBnX3N0YXRfcGxhbnM7CitTRUxFQ1Qg cGdfc3RhdF9wbGFuc19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBzaW1wbGUg c3RhdGVtZW50cworLS0KKworU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBMSU1JVCAxOworCitTRUxF Q1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnOworCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFt ZSA9ICdwZ19jbGFzcyc7CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9uOworCitTRUxFQ1QgcGxh biwgY2FsbHMgRlJPTSBwZ19zdGF0X3BsYW5zIE9SREVSIEJZIHBsYW4gQ09MTEFURSAiQyI7CitT RUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBz dWJwbGFucyBhbmQgQ1RFcworLS0KKworV0lUSCB4IEFTIE1BVEVSSUFMSVpFRCAoU0VMRUNUIDEp CitTRUxFQ1QgKiBGUk9NIHg7CisKK1NFTEVDVCBhLmF0dG5hbWUsCisgICAoU0VMRUNUIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoZC5hZGJpbiwgZC5hZHJlbGlkKQorICAgIEZST00gcGdfY2F0YWxv Zy5wZ19hdHRyZGVmIGQKKyAgICBXSEVSRSBkLmFkcmVsaWQgPSBhLmF0dHJlbGlkIEFORCBkLmFk bnVtID0gYS5hdHRudW0gQU5EIGEuYXR0aGFzZGVmKQorIEZST00gcGdfY2F0YWxvZy5wZ19hdHRy aWJ1dGUgYQorIFdIRVJFIGEuYXR0cmVsaWQgPSAncGdfY2xhc3MnOjpyZWdjbGFzcworIE9SREVS IEJZIGF0dG51bSBMSU1JVCAxOworCitTRUxFQ1QgcGxhbiwgY2FsbHMgRlJPTSBwZ19zdGF0X3Bs YW5zIE9SREVSIEJZIHBsYW4gQ09MTEFURSAiQyI7CitTRUxFQ1QgcGdfc3RhdF9wbGFuc19yZXNl dCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBwYXJ0aXRvbmluZworLS0KKworY3JlYXRl IHRhYmxlIGxwIChhIGNoYXIpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBs cF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBscCBkZWZhdWx0OworY3JlYXRlIHRhYmxlIGxwX2VmIHBh cnRpdGlvbiBvZiBscCBmb3IgdmFsdWVzIGluICgnZScsICdmJyk7CitjcmVhdGUgdGFibGUgbHBf YWQgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKCdhJywgJ2QnKTsKK2NyZWF0ZSB0YWJs ZSBscF9iYyBwYXJ0aXRpb24gb2YgbHAgZm9yIHZhbHVlcyBpbiAoJ2InLCAnYycpOworY3JlYXRl IHRhYmxlIGxwX2cgcGFydGl0aW9uIG9mIGxwIGZvciB2YWx1ZXMgaW4gKCdnJyk7CitjcmVhdGUg dGFibGUgbHBfbnVsbCBwYXJ0aXRpb24gb2YgbHAgZm9yIHZhbHVlcyBpbiAobnVsbCk7CisKK3Nl bGVjdCAqIGZyb20gbHA7CitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPiAnYScgYW5kIGEgPCAn ZCc7CitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPiAnYScgYW5kIGEgPD0gJ2QnOworc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnOworc2VsZWN0ICogZnJvbSBscCB3aGVyZSAnYScgPSBh OwkvKiBjb21tdXRlZCAqLworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwor c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG51bGw7CitzZWxlY3QgKiBmcm9tIGxwIHdoZXJl IGEgPSAnYScgb3IgYSA9ICdjJzsKK3NlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVs bCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CitzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4g J2cnOworc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7CitzZWxl Y3QgKiBmcm9tIGxwIHdoZXJlIGEgbm90IGluICgnYScsICdkJyk7CisKK1NFTEVDVCBwbGFuLCBj YWxscyBGUk9NIHBnX3N0YXRfcGxhbnMgT1JERVIgQlkgcGxhbiBDT0xMQVRFICJDIjsKK1NFTEVD VCBwZ19zdGF0X3BsYW5zX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9jb250cmliLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29udHJpYi5zZ21sCmluZGV4 IDdjMzgxOTQ5YTUuLjRhNWEwMmM3MDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb250cmli LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbnRyaWIuc2dtbApAQCAtMTU3LDYgKzE1Nyw3IEBA IENSRUFURSBFWFRFTlNJT04gPHJlcGxhY2VhYmxlPmV4dGVuc2lvbl9uYW1lPC9yZXBsYWNlYWJs ZT47CiAgJnBnbG9naWNhbGluc3BlY3Q7CiAgJnBncHJld2FybTsKICAmcGdyb3dsb2NrczsKKyAm cGdzdGF0cGxhbnM7CiAgJnBnc3RhdHN0YXRlbWVudHM7CiAgJnBnc3RhdHR1cGxlOwogICZwZ3N1 cmdlcnk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbCBiL2RvYy9zcmMv c2dtbC9maWxlbGlzdC5zZ21sCmluZGV4IDY2ZTZkY2NkNGMuLmIwYWZiMzNjZTIgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9maWxlbGlz dC5zZ21sCkBAIC0xNDYsNiArMTQ2LDcgQEAKIDwhRU5USVRZIHBnbG9naWNhbGluc3BlY3QgIFNZ U1RFTSAicGdsb2dpY2FsaW5zcGVjdC5zZ21sIj4KIDwhRU5USVRZIHBncHJld2FybSAgICAgICBT WVNURU0gInBncHJld2FybS5zZ21sIj4KIDwhRU5USVRZIHBncm93bG9ja3MgICAgICBTWVNURU0g InBncm93bG9ja3Muc2dtbCI+Cis8IUVOVElUWSBwZ3N0YXRwbGFucyAgICAgU1lTVEVNICJwZ3N0 YXRwbGFucy5zZ21sIj4KIDwhRU5USVRZIHBnc3RhdHN0YXRlbWVudHMgU1lTVEVNICJwZ3N0YXRz dGF0ZW1lbnRzLnNnbWwiPgogPCFFTlRJVFkgcGdzdGF0dHVwbGUgICAgIFNZU1RFTSAicGdzdGF0 dHVwbGUuc2dtbCI+CiA8IUVOVElUWSBwZ3N1cmdlcnkgICAgICAgU1lTVEVNICJwZ3N1cmdlcnku c2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdzdGF0cGxhbnMuc2dtbCBiL2RvYy9z cmMvc2dtbC9wZ3N0YXRwbGFucy5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjQ0MDJkOTA0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdzdGF0 cGxhbnMuc2dtbApAQCAtMCwwICsxLDQyNSBAQAorPCEtLSBkb2Mvc3JjL3NnbWwvcGdzdGF0cGxh bnMuc2dtbCAtLT4KKworPHNlY3QxIGlkPSJwZ3N0YXRwbGFucyIgeHJlZmxhYmVsPSJwZ19zdGF0 X3BsYW5zIj4KKyA8dGl0bGU+cGdfc3RhdF9wbGFucyAmbWRhc2g7IHRyYWNrIHBlci1wbGFuIGNh bGwgY291bnRzLCBleGVjdXRpb24gdGltZXMgYW5kIEVYUExBSU4gdGV4dHM8L3RpdGxlPgorCisg PGluZGV4dGVybSB6b25lPSJwZ3N0YXRwbGFucyI+CisgIDxwcmltYXJ5PnBnX3N0YXRfcGxhbnM8 L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cGFyYT4KKyAgVGhlIDxmaWxlbmFtZT5wZ19z dGF0X3BsYW5zPC9maWxlbmFtZT4gbW9kdWxlIHByb3ZpZGVzIGEgbWVhbnMgZm9yCisgIHRyYWNr aW5nIHBlci1wbGFuIHN0YXRpc3RpY3MgYW5kIHBsYW4gdGV4dHMgb2YgYWxsIFNRTCBzdGF0ZW1l bnRzIGV4ZWN1dGVkIGJ5CisgIGEgc2VydmVyLgorIDwvcGFyYT4KKworIDxwYXJhPgorICBUaGUg bW9kdWxlIG11c3QgYmUgbG9hZGVkIGJ5IGFkZGluZyA8bGl0ZXJhbD5wZ19zdGF0X3BsYW5zPC9s aXRlcmFsPiB0bworICA8eHJlZiBsaW5rZW5kPSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVz Ii8+IGluCisgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiwgYmVjYXVzZSBp dCByZXF1aXJlcyBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnkuCisgIFRoaXMgbWVhbnMgdGhhdCBh IHNlcnZlciByZXN0YXJ0IGlzIG5lZWRlZCB0byBhZGQgb3IgcmVtb3ZlIHRoZSBtb2R1bGUuCisg IEluIGFkZGl0aW9uLCBxdWVyeSBhbmQgcGxhbiBpZGVudGlmaWVyIGNhbGN1bGF0aW9uIG11c3Qg YmUgZW5hYmxlZCBpbiBvcmRlciBmb3IgdGhlCisgIG1vZHVsZSB0byBiZSBhY3RpdmUgYnkgc2V0 dGluZyBib3RoIDx4cmVmIGxpbmtlbmQ9Imd1Yy1jb21wdXRlLXBsYW4taWQiLz4gdG8KKyAgPGxp dGVyYWw+YXV0bzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b248L2xpdGVyYWw+IGFuZAorICA8eHJl ZiBsaW5rZW5kPSJndWMtY29tcHV0ZS1xdWVyeS1pZCIvPiB0byA8bGl0ZXJhbD5hdXRvPC9saXRl cmFsPiBvciA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgPC9wYXJhPgorCisgPHBhcmE+CisgICBX aGVuIDxmaWxlbmFtZT5wZ19zdGF0X3BsYW5zPC9maWxlbmFtZT4gaXMgYWN0aXZlLCBpdCB0cmFj a3MKKyAgIHN0YXRpc3RpY3MgYWNyb3NzIGFsbCBkYXRhYmFzZXMgb2YgdGhlIHNlcnZlci4gIFRv IGFjY2VzcyBhbmQgbWFuaXB1bGF0ZQorICAgdGhlc2Ugc3RhdGlzdGljcywgdGhlIG1vZHVsZSBw cm92aWRlcyB0aGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9wbGFuczwvc3RydWN0bmFtZT4KKyAgIHZp ZXcgYW5kIHRoZSB1dGlsaXR5IGZ1bmN0aW9ucyA8ZnVuY3Rpb24+cGdfc3RhdF9wbGFuc19yZXNl dDwvZnVuY3Rpb24+IGFuZAorICAgPGZ1bmN0aW9uPnBnX3N0YXRfcGxhbnM8L2Z1bmN0aW9uPi4g IFRoZXNlIGFyZSBub3QgYXZhaWxhYmxlIGdsb2JhbGx5IGJ1dAorICAgY2FuIGJlIGVuYWJsZWQg Zm9yIGEgc3BlY2lmaWMgZGF0YWJhc2Ugd2l0aAorICAgPGNvbW1hbmQ+Q1JFQVRFIEVYVEVOU0lP TiBwZ19zdGF0X3BsYW5zPC9jb21tYW5kPi4KKyA8L3BhcmE+CisKKyA8c2VjdDIgaWQ9InBnc3Rh dHBsYW5zLXBnLXN0YXQtcGxhbnMiPgorICA8dGl0bGU+VGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRf cGxhbnM8L3N0cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHN0YXRp c3RpY3MgZ2F0aGVyZWQgYnkgdGhlIG1vZHVsZSBhcmUgbWFkZSBhdmFpbGFibGUgdmlhIGEKKyAg IHZpZXcgbmFtZWQgPHN0cnVjdG5hbWU+cGdfc3RhdF9wbGFuczwvc3RydWN0bmFtZT4uICBUaGlz IHZpZXcKKyAgIGNvbnRhaW5zIG9uZSByb3cgZm9yIGVhY2ggZGlzdGluY3QgY29tYmluYXRpb24g b2YgZGF0YWJhc2UgSUQsIHVzZXIKKyAgIElELCB3aGV0aGVyIGl0J3MgYSB0b3AtbGV2ZWwgc3Rh dGVtZW50IG9yIG5vdCwgcXVlcnkgSUQgYW5kIHBsYW4gSUQKKyAgICh1cCB0byB0aGUgbWF4aW11 bSBudW1iZXIgb2YgZGlzdGluY3QgcGxhbnMgdGhhdCB0aGUgbW9kdWxlIGNhbiB0cmFjaykuCisg ICBUaGUgY29sdW1ucyBvZiB0aGUgdmlldyBhcmUgc2hvd24gaW4gPHhyZWYgbGlua2VuZD0icGdz dGF0cGxhbnMtY29sdW1ucyIvPi4KKyAgPC9wYXJhPgorCisgIDx0YWJsZSBpZD0icGdzdGF0cGxh bnMtY29sdW1ucyI+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF9wbGFuczwvc3RydWN0 bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnVzZXJpZDwvc3RydWN0Zmll bGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJj YXRhbG9nLXBnLWF1dGhpZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGlu az4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgT0lEIG9mIHVzZXIgd2hvIGV4ZWN1dGVkIHRoZSBzdGF0ZW1lbnQKKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZGJpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwv dHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWRhdGFi YXNlIj48c3RydWN0bmFtZT5wZ19kYXRhYmFzZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3Rm aWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE9JRCBvZiBkYXRhYmFzZSBpbiB3aGljaCB0aGUgc3RhdGVtZW50IHdhcyBleGVjdXRlZAor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3BsZXZlbDwvc3RydWN0ZmllbGQ+IDx0eXBl PmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlm IHRoZSBxdWVyeSB3YXMgZXhlY3V0ZWQgYXMgYSB0b3AtbGV2ZWwgc3RhdGVtZW50CisgICAgICAg KGFsd2F5cyB0cnVlIGlmIDx2YXJuYW1lPnBnX3N0YXRfcGxhbnMudHJhY2s8L3Zhcm5hbWU+IGlz IHNldCB0bworICAgICAgIDxsaXRlcmFsPnRvcDwvbGl0ZXJhbD4pCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPnF1ZXJ5aWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBIYXNoIGNvZGUgdG8gaWRlbnRpZnkg aWRlbnRpY2FsIG5vcm1hbGl6ZWQgcXVlcmllcy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+cGxhbmlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgSGFzaCBjb2RlIHRvIGlkZW50aWZ5IGlkZW50aWNhbCBw bGFuIHNoYXBlcy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y2FsbHM8L3N0cnVjdGZp ZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBOdW1iZXIgb2YgdGltZXMgdGhlIHBsYW4gd2FzIGV4ZWN1dGVkCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPnRvdGFsX2V4ZWNfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRvdWJs ZSBwcmVjaXNpb248L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU b3RhbCB0aW1lIHNwZW50IGV4ZWN1dGluZyB0aGUgcGxhbiwgaW4gbWlsbGlzZWNvbmRzCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBsYW48L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGxhbiB0ZXh0IG9mIGEg cmVwcmVzZW50YXRpdmUgcGxhbi4gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBvdXRwdXQgb2YKKyAg ICAgICA8bGl0ZXJhbD5FWFBMQUlOIChDT1NUUyBPRkYpPC9saXRlcmFsPi4gTm90ZSB0aGUgcGxh biB0ZXh0IHdpbGwgY29udGFpbiBjb25zdGFudAorICAgICAgIHZhbHVlcyBvZiB0aGUgZmlyc3Qg cGxhbiByZWNvcmRlZCwgYnV0IHN1YnNlcXVlbnQgZXhlY3V0aW9ucyBvZiB0aGUKKyAgICAgICBz YW1lIHBsYW4gaGFzaCBjb2RlICg8c3RydWN0ZmllbGQ+cGxhbmlkPC9zdHJ1Y3RmaWVsZD4pIHdp dGggZGlmZmVyZW50CisgICAgICAgY29uc3RhbnQgdmFsdWVzIHdpbGwgYmUgdHJhY2tlZCB1bmRl ciB0aGUgc2FtZSBlbnRyeS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisKKyAgPHBhcmE+CisgICBGb3Ig c2VjdXJpdHkgcmVhc29ucywgb25seSBzdXBlcnVzZXJzIGFuZCByb2xlcyB3aXRoIHByaXZpbGVn ZXMgb2YgdGhlCisgICA8bGl0ZXJhbD5wZ19yZWFkX2FsbF9zdGF0czwvbGl0ZXJhbD4gcm9sZSBh cmUgYWxsb3dlZCB0byBzZWUgdGhlIHBsYW4gdGV4dCwKKyAgIDxzdHJ1Y3RmaWVsZD5xdWVyeWlk PC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5wbGFuaWQ8L3N0cnVjdGZpZWxkPgorICAg b2YgcXVlcmllcyBleGVjdXRlZCBieSBvdGhlciB1c2Vycy4gT3RoZXIgdXNlcnMgY2FuIHNlZSB0 aGUgc3RhdGlzdGljcywKKyAgIGhvd2V2ZXIsIGlmIHRoZSB2aWV3IGhhcyBiZWVuIGluc3RhbGxl ZCBpbiB0aGVpciBkYXRhYmFzZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUGxhbm5hYmxl IHF1ZXJpZXMgKHRoYXQgaXMsIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4sIDxjb21tYW5kPklO U0VSVDwvY29tbWFuZD4sCisgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LCA8Y29tbWFuZD5E RUxFVEU8L2NvbW1hbmQ+LCBhbmQgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+KQorICAgd2lsbCBo YXZlIHRoZSBzYW1lIDxzdHJ1Y3RmaWVsZD5wbGFuaWQ8L3N0cnVjdGZpZWxkPiB3aGVuZXZlciB0 aGV5IGhhdmUgaWRlbnRpY2FsIHBsYW4KKyAgIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIGFuIGlu dGVybmFsIGhhc2ggY2FsY3VsYXRpb24uIFR5cGljYWxseSwgdHdvIHBsYW5zIHdpbGwgYmUKKyAg IGNvbnNpZGVyZWQgdGhlIHNhbWUgZm9yIHRoaXMgcHVycG9zZSBpZiB0aGV5IGhhdmUgdGhlIHNh bWUKKyAgIDxsaXRlcmFsPkVYUExBSU4gKENPU1RTIE9GRik8L2xpdGVyYWw+IG91dHB1dCBhbmQg YXJlIHNlbWFudGljYWxseSBlcXVpdmFsZW50IGV4Y2VwdAorICAgZm9yIHRoZSB2YWx1ZXMgb2Yg bGl0ZXJhbCBjb25zdGFudHMgYXBwZWFyaW5nIGluIHRoZSBxdWVyeSBwbGFuLgorICA8L3BhcmE+ CisgIAorICA8cGFyYT4KKyAgIE5vdGUgdGhhdCBxdWVyaWVzIHRoYXQgaGF2ZSBub3QgZmluaXNo ZWQgZXhlY3V0aW5nIHlldCB3aWxsIHNob3cgaW4KKyAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfcGxh bnM8L3N0cnVjdG5hbWU+IHdpdGggdGhlaXIgcGxhbiB0ZXh0LCBidXQgd2l0aG91dAorICAgdGhl IDxzdHJ1Y3RuYW1lPmNhbGxzPC9zdHJ1Y3RuYW1lPiBmaWVsZCBiZWluZyBpbmNyZW1lbnRlZC4g VGhpcyBjYW4gYmUKKyAgIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHF1ZXJ5IHBsYW4gZm9yIGEgY3Vy cmVudGx5IHJ1bm5pbmcgc3RhdGVtZW50IGJ5IGpvaW5pbmcKKyAgIDxsaW5rIGxpbmtlbmQ9Im1v bml0b3JpbmctcGctc3RhdC1hY3Rpdml0eS12aWV3Ij5wZ19zdGF0X2FjdGl2aXR5PC9saW5rPgor ICAgd2l0aCA8c3RydWN0bmFtZT5wZ19zdGF0X3BsYW5zPC9zdHJ1Y3RuYW1lPiwgc2VlIGV4YW1w bGUgdXNhZ2UgaW4KKyAgIDx4cmVmIGxpbmtlbmQ9InBnc3RhdHBsYW5zLXNhbXBsZS1vdXRwdXQi Lz4uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENvbnN1bWVycyBvZiA8c3RydWN0bmFtZT5w Z19zdGF0X3BsYW5zPC9zdHJ1Y3RuYW1lPiBzaG91bGQgdXNlCisgICA8c3RydWN0ZmllbGQ+cGxh bmlkPC9zdHJ1Y3RmaWVsZD4gaW4gY29tYmluYXRpb24gd2l0aAorICAgPHN0cnVjdGZpZWxkPnF1 ZXJ5aWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmRiaWQ8L3N0cnVjdGZpZWxkPiwKKyAg IDxzdHJ1Y3RmaWVsZD51c2VyaWQ8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnRvcGxl dmVsPC9zdHJ1Y3RmaWVsZD4KKyAgIGFzIGEgc3RhYmxlIGFuZCByZWxpYWJsZSBpZGVudGlmaWVy IGZvciBlYWNoIGVudHJ5LCBpbnN0ZWFkIG9mIHVzaW5nIGl0cworICAgcGxhbiB0ZXh0LiBIb3dl dmVyLCBpdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZXJlIGFyZSBvbmx5IGxp bWl0ZWQKKyAgIGd1YXJhbnRlZXMgYXJvdW5kIHRoZSBzdGFiaWxpdHkgb2YgdGhlIDxzdHJ1Y3Rm aWVsZD5wbGFuaWQ8L3N0cnVjdGZpZWxkPgorICAgaGFzaCB2YWx1ZS4gIFNpbmNlIHRoZSBpZGVu dGlmaWVyIGlzIGRlcml2ZWQgZnJvbSB0aGUgcGxhbiB0cmVlLCBpdHMgdmFsdWUKKyAgIGlzIGEg ZnVuY3Rpb24gb2YsIGFtb25nIG90aGVyIHRoaW5ncywgdGhlIGludGVybmFsIG9iamVjdCBpZGVu dGlmaWVycworICAgYXBwZWFyaW5nIGluIHRoaXMgcmVwcmVzZW50YXRpb24uIFRoaXMgaGFzIHNv bWUgY291bnRlcmludHVpdGl2ZSBpbXBsaWNhdGlvbnMuCisgICBGb3IgZXhhbXBsZSwgPGZpbGVu YW1lPnBnX3N0YXRfcGxhbnM8L2ZpbGVuYW1lPiB3aWxsIGNvbnNpZGVyIHR3bworICAgYXBwYXJl bnRseS1pZGVudGljYWwgcGxhbnMgdG8gYmUgZGlzdGluY3QsIGlmIHRoZXkgcmVmZXJlbmNlIGEg dGFibGUKKyAgIHRoYXQgd2FzIGRyb3BwZWQgYW5kIHJlY3JlYXRlZCBiZXR3ZWVuIHRoZSBjcmVh dGlvbiBvZiB0aGUgdHdvIHBsYW5zLgorICAgVGhlIGhhc2hpbmcgcHJvY2VzcyBpcyBhbHNvIHNl bnNpdGl2ZSB0byBkaWZmZXJlbmNlcyBpbgorICAgbWFjaGluZSBhcmNoaXRlY3R1cmUgYW5kIG90 aGVyIGZhY2V0cyBvZiB0aGUgcGxhdGZvcm0uCisgICBGdXJ0aGVybW9yZSwgaXQgaXMgbm90IHNh ZmUgdG8gYXNzdW1lIHRoYXQgPHN0cnVjdGZpZWxkPnBsYW5pZDwvc3RydWN0ZmllbGQ+CisgICB3 aWxsIGJlIHN0YWJsZSBhY3Jvc3MgbWFqb3IgdmVyc2lvbnMgb2YgPHByb2R1Y3RuYW1lPlBvc3Rn cmVTUUw8L3Byb2R1Y3RuYW1lPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVHdvIHNlcnZl cnMgcGFydGljaXBhdGluZyBpbiByZXBsaWNhdGlvbiBiYXNlZCBvbiBwaHlzaWNhbCBXQUwgcmVw bGF5IGNhbgorICAgYmUgZXhwZWN0ZWQgdG8gaGF2ZSBpZGVudGljYWwgPHN0cnVjdGZpZWxkPnBs YW5pZDwvc3RydWN0ZmllbGQ+IHZhbHVlcyBmb3IKKyAgIHRoZSBzYW1lIHBsYW4uICBIb3dldmVy LCBsb2dpY2FsIHJlcGxpY2F0aW9uIHNjaGVtZXMgZG8gbm90IHByb21pc2UgdG8KKyAgIGtlZXAg cmVwbGljYXMgaWRlbnRpY2FsIGluIGFsbCByZWxldmFudCBkZXRhaWxzLCBzbworICAgPHN0cnVj dGZpZWxkPnBsYW5pZDwvc3RydWN0ZmllbGQ+IHdpbGwgbm90IGJlIGEgdXNlZnVsIGlkZW50aWZp ZXIgZm9yCisgICBhY2N1bXVsYXRpbmcgY29zdHMgYWNyb3NzIGEgc2V0IG9mIGxvZ2ljYWwgcmVw bGljYXMuCisgICBJZiBpbiBkb3VidCwgZGlyZWN0IHRlc3RpbmcgaXMgcmVjb21tZW5kZWQuCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBsYW4gdGV4dHMgYXJlIHN0b3JlZCBpbiBzaGFyZWQg bWVtb3J5LCBhbmQgbGltaXRlZCBpbiBsZW5ndGguIFRvIGluY3JlYXNlCisgICB0aGUgbWF4aW11 bSBsZW5ndGggb2Ygc3RvcmVkIHBsYW4gdGV4dHMgeW91IGNhbiBpbmNyZWFzZQorICAgPHZhcm5h bWU+cGdfc3RhdF9wbGFucy5tYXhfc2l6ZTwvdmFybmFtZT4uIFRoaXMgdmFsdWUgY2FuIGJlIGNo YW5nZWQgZm9yCisgICBhbiBpbmRpdmlkdWFsIGNvbm5lY3Rpb24sIG9yIHNldCBhcyBhIHNlcnZl ci13aWRlIHNldHRpbmcuCisgIDwvcGFyYT4KKyA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJwZ3N0 YXRwbGFucy1mdW5jcyI+CisgIDx0aXRsZT5GdW5jdGlvbnM8L3RpdGxlPgorCisgIDx2YXJpYWJs ZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+cGdf c3RhdF9wbGFuc19yZXNldCgpIHJldHVybnMgdm9pZDwvZnVuY3Rpb24+CisgICAgIDxpbmRleHRl cm0+CisgICAgICA8cHJpbWFyeT5wZ19zdGF0X3BsYW5zX3Jlc2V0PC9wcmltYXJ5PgorICAgICA8 L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgPGZ1bmN0aW9uPnBnX3N0YXRfcGxhbnNfcmVzZXQ8L2Z1bmN0aW9uPiBkaXNjYXJkcyBz dGF0aXN0aWNzIGFuZCBwbGFuIHRleHRzCisgICAgICBnYXRoZXJlZCBzbyBmYXIgYnkgPGZpbGVu YW1lPnBnX3N0YXRfcGxhbnM8L2ZpbGVuYW1lPi4KKyAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVu Y3Rpb24gY2FuIG9ubHkgYmUgZXhlY3V0ZWQgYnkgc3VwZXJ1c2Vycy4KKyAgICAgIEFjY2VzcyBt YXkgYmUgZ3JhbnRlZCB0byBvdGhlcnMgdXNpbmcgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8ZnVuY3Rpb24+cGdfc3RhdF9wbGFucyhz aG93cGxhbiBib29sZWFuKSByZXR1cm5zIHNldG9mIHJlY29yZDwvZnVuY3Rpb24+CisgICAgIDxp bmRleHRlcm0+CisgICAgICA8cHJpbWFyeT5wZ19zdGF0X3BsYW5zPC9wcmltYXJ5PgorICAgICAg PHNlY29uZGFyeT5mdW5jdGlvbjwvc2Vjb25kYXJ5PgorICAgICA8L2luZGV4dGVybT4KKyAgICA8 L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxzdHJ1Y3Ru YW1lPnBnX3N0YXRfcGxhbnM8L3N0cnVjdG5hbWU+IHZpZXcgaXMgZGVmaW5lZCBpbgorICAgICAg dGVybXMgb2YgYSBmdW5jdGlvbiBhbHNvIG5hbWVkIDxmdW5jdGlvbj5wZ19zdGF0X3BsYW5zPC9m dW5jdGlvbj4uCisgICAgICBJdCBpcyBwb3NzaWJsZSBmb3IgY2xpZW50cyB0byBjYWxsCisgICAg ICB0aGUgPGZ1bmN0aW9uPnBnX3N0YXRfcGxhbnM8L2Z1bmN0aW9uPiBmdW5jdGlvbiBkaXJlY3Rs eSwgYW5kIGJ5CisgICAgICBzcGVjaWZ5aW5nIDxsaXRlcmFsPnNob3dwbGFuIDo9IGZhbHNlPC9s aXRlcmFsPiBoYXZlIHBsYW4gdGV4dHMgYmUKKyAgICAgIG9taXR0ZWQgKHRoYXQgaXMsIHRoZSA8 bGl0ZXJhbD5PVVQ8L2xpdGVyYWw+IGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMKKyAgICAgIHRv IHRoZSB2aWV3J3MgPHN0cnVjdGZpZWxkPnBsYW48L3N0cnVjdGZpZWxkPiBjb2x1bW4gd2lsbCBy ZXR1cm4gbnVsbHMpLiAgVGhpcworICAgICAgZmVhdHVyZSBpcyBpbnRlbmRlZCB0byBzdXBwb3J0 IGV4dGVybmFsIHRvb2xzIHRoYXQgbWlnaHQgd2lzaCB0byBhdm9pZAorICAgICAgdGhlIG92ZXJo ZWFkIG9mIHJlcGVhdGVkbHkgcmV0cmlldmluZyBwbGFuIHRleHRzIG9mIGluZGV0ZXJtaW5hdGUK KyAgICAgIGxlbmd0aC4gIFN1Y2ggdG9vbHMgY2FuIGluc3RlYWQgY2FjaGUgdGhlIGZpcnN0IHBs YW4gdGV4dCBvYnNlcnZlZAorICAgICAgZm9yIGVhY2ggZW50cnkgdGhlbXNlbHZlcywgc2luY2Ug dGhhdCBpcworICAgICAgYWxsIDxmaWxlbmFtZT5wZ19zdGF0X3BsYW5zPC9maWxlbmFtZT4gaXRz ZWxmIGRvZXMsIGFuZCB0aGVuIHJldHJpZXZlCisgICAgICBwbGFuIHRleHRzIG9ubHkgYXMgbmVl ZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor ICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJwZ3N0YXRwbGFucy1j b25maWctcGFyYW1zIj4KKyAgPHRpdGxlPkNvbmZpZ3VyYXRpb24gUGFyYW1ldGVyczwvdGl0bGU+ CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAg IDx2YXJuYW1lPnBnX3N0YXRfcGxhbnMubWF4PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlw ZT4pCisgICAgIDxpbmRleHRlcm0+CisgICAgICA8cHJpbWFyeT48dmFybmFtZT5wZ19zdGF0X3Bs YW5zLm1heDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAg IDwvaW5kZXh0ZXJtPgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICA8dmFybmFtZT5wZ19zdGF0X3BsYW5zLm1heDwvdmFybmFtZT4gaXMgdGhlIG1heGlt dW0gbnVtYmVyIG9mCisgICAgICBwbGFucyB0cmFja2VkIGJ5IHRoZSBtb2R1bGUgKGkuZS4sIHRo ZSBtYXhpbXVtIG51bWJlciBvZiByb3dzCisgICAgICBpbiB0aGUgPHN0cnVjdG5hbWU+cGdfc3Rh dF9wbGFuczwvc3RydWN0bmFtZT4gdmlldykuICBJZiBtb3JlIGRpc3RpbmN0CisgICAgICBwbGFu cyB0aGFuIHRoYXQgYXJlIG9ic2VydmVkLCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGVhc3QtZXhl Y3V0ZWQKKyAgICAgIHBsYW5zIGlzIGRpc2NhcmRlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNTAw MC4KKyAgICAgIE9ubHkgc3VwZXJ1c2VycyBjYW4gY2hhbmdlIHRoaXMgc2V0dGluZy4gQ2hhbmdp bmcgdGhlIHNldHRpbmcgcmVxdWlyZXMKKyAgICAgIGEgcmVsb2FkIG9mIHRoZSBzZXJ2ZXIuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIAorICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFucy5t YXhfc2l6ZTwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICA8aW5kZXh0ZXJt PgorICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXhfc2l6ZTwvdmFybmFt ZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICA8dmFybmFt ZT5wZ19zdGF0X3BsYW5zLm1heF9zaXplPC92YXJuYW1lPiBpcyB0aGUgbWF4aW11bSBsZW5ndGgg b2YKKyAgICAgIGVhY2ggcGxhbiB0ZXh0IHRyYWNrZWQgYnkgdGhlIG1vZHVsZSBpbiBieXRlcy4g TG9uZ2VyIHBsYW4gdGV4dHMgd2lsbCBiZSB0cnVuY2F0ZWQuCisgICAgICBUaGUgZGVmYXVsdCB2 YWx1ZSBpcyAyMDQ4ICgya0IpLgorICAgICAgT25seSBzdXBlcnVzZXJzIGNhbiBjaGFuZ2UgdGhp cyBzZXR0aW5nLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8dmFybmFtZT5wZ19z dGF0X3BsYW5zLnRyYWNrPC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4pCisgICAgIDxpbmRl eHRlcm0+CisgICAgICA8cHJpbWFyeT48dmFybmFtZT5wZ19zdGF0X3BsYW5zLnRyYWNrPC92YXJu YW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgPC9pbmRleHRlcm0+ CisgICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDx2YXJu YW1lPnBnX3N0YXRfcGxhbnMudHJhY2s8L3Zhcm5hbWU+IGNvbnRyb2xzIHdoaWNoIHBsYW5zCisg ICAgICBhcmUgY291bnRlZCBieSB0aGUgbW9kdWxlLgorICAgICAgU3BlY2lmeSA8bGl0ZXJhbD50 b3A8L2xpdGVyYWw+IHRvIHRyYWNrIHBsYW5zIGJ5IHRvcC1sZXZlbCBzdGF0ZW1lbnRzICh0aG9z ZSBpc3N1ZWQKKyAgICAgIGRpcmVjdGx5IGJ5IGNsaWVudHMpLCA8bGl0ZXJhbD5hbGw8L2xpdGVy YWw+IHRvIGFsc28gdHJhY2sgbmVzdGVkIHN0YXRlbWVudHMKKyAgICAgIChzdWNoIGFzIHN0YXRl bWVudHMgaW52b2tlZCB3aXRoaW4gZnVuY3Rpb25zKSwgb3IgPGxpdGVyYWw+bm9uZTwvbGl0ZXJh bD4gdG8KKyAgICAgIGRpc2FibGUgcGxhbiBzdGF0aXN0aWNzIGNvbGxlY3Rpb24uCisgICAgICBU aGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD50b3A8L2xpdGVyYWw+LgorICAgICAgT25seSBz dXBlcnVzZXJzIGNhbiBjaGFuZ2UgdGhpcyBzZXR0aW5nLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICA8cGFy YT4KKyAgIFRoZSBtb2R1bGUgcmVxdWlyZXMgYWRkaXRpb25hbCBzaGFyZWQgbWVtb3J5IHByb3Bv cnRpb25hbCB0bworICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXg8L3Zhcm5hbWU+IGZvciBz dGF0aXN0aWNzLCBhcyB3ZWxsIGFzCisgICA8dmFybmFtZT5wZ19zdGF0X3BsYW5zLm1heDwvdmFy bmFtZT4gbXVsdGlwbGllZCBieQorICAgPHZhcm5hbWU+cGdfc3RhdF9wbGFucy5tYXhfc2l6ZTwv dmFybmFtZT4gZm9yIHBsYW4gdGV4dHMuIE5vdGUgdGhhdCB0aGlzCisgICBtZW1vcnkgaXMgb25s eSBjb25zdW1lZCB3aGVuIGVudHJpZXMgYXJlIGNyZWF0ZWQsIGFuZCBub3QgaWYKKyAgIDx2YXJu YW1lPnBnX3N0YXRfcGxhbnMudHJhY2s8L3Zhcm5hbWU+IGlzIHNldCB0byA8bGl0ZXJhbD5ub25l PC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2UgcGFyYW1ldGVycyBt dXN0IGJlIHNldCBpbiA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4uCisgICBU eXBpY2FsIHVzYWdlIG1pZ2h0IGJlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CisjIHBvc3RncmVzcWwu Y29uZgorc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ3BnX3N0YXRfcGxhbnMnCisKK2NvbXB1 dGVfcXVlcnlfaWQgPSBvbgorY29tcHV0ZV9wbGFuX2lkID0gb24KK3BnX3N0YXRfcGxhbnMubWF4 ID0gMTAwMDAKK3BnX3N0YXRfcGxhbnMubWF4X3NpemUgPSA0MDk2CitwZ19zdGF0X3BsYW5zLnRy YWNrID0gYWxsCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisgPC9zZWN0Mj4KKworIDxz ZWN0MiBpZD0icGdzdGF0cGxhbnMtc2FtcGxlLW91dHB1dCI+CisgIDx0aXRsZT5TYW1wbGUgT3V0 cHV0PC90aXRsZT4KKworPHNjcmVlbj4KK2JlbmNoPSMgU0VMRUNUIHBnX3N0YXRfcGxhbnNfcmVz ZXQoKTsKKworJCBwZ2JlbmNoIC1pIGJlbmNoCiskIHBnYmVuY2ggLWMxMCAtdDMwMCBiZW5jaAor CitiZW5jaD0jIFx4CitiZW5jaD0jIFNFTEVDVCBwbGFuLCBjYWxscywgdG90YWxfZXhlY190aW1l CisgIEZST00gcGdfc3RhdF9wbGFucyBPUkRFUiBCWSB0b3RhbF9leGVjX3RpbWUgREVTQyBMSU1J VCA1OworLVsgUkVDT1JEIDEgXS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcGxhbiAgICAgICAgICAgIHwgVXBkYXRl IG9uIHBnYmVuY2hfdGVsbGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICB8ICAgLT4gIFNlcSBTY2FuIG9uIHBnYmVuY2hfdGVsbGVycyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgfCAgICAgICAg IEZpbHRlcjogKHRpZCA9IDUpCitjYWxscyAgICAgICAgICAgfCAzMDAwCit0b3RhbF9leGVjX3Rp bWUgfCA2NDIuODg4MDkxOTk5OTk5MworLVsgUkVDT1JEIDIgXS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcGxhbiAg ICAgICAgICAgIHwgVXBkYXRlIG9uIHBnYmVuY2hfYnJhbmNoZXMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICB8ICAgLT4gIFNlcSBTY2FuIG9u IHBnYmVuY2hfYnJhbmNoZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgfCAgICAgICAgIEZpbHRlcjogKGJpZCA9IDEpCitjYWxscyAgICAgICAgICAgfCAx ODEzCit0b3RhbF9leGVjX3RpbWUgfCA0NzYuNjQxNTI3MDAwMDAwMDUKKy1bIFJFQ09SRCAzIF0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3BsYW4gICAgICAgICAgICB8IFVwZGF0ZSBvbiBwZ2JlbmNoX2JyYW5jaGVz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg fCAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBnYmVuY2hfYnJhbmNoZXNfcGtleSBvbiBwZ2JlbmNo X2JyYW5jaGVzKworICAgICAgICAgICAgICAgIHwgICAgICAgICBJbmRleCBDb25kOiAoYmlkID0g MSkKK2NhbGxzICAgICAgICAgICB8IDExODcKK3RvdGFsX2V4ZWNfdGltZSB8IDMyNi4xMjU3NTQ5 OTk5OTk5CistWyBSRUNPUkQgNCBdLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwbGFuICAgICAgICAgICAgfCBVcGRh dGUgb24gcGdiZW5jaF9hY2NvdW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgIHwgICAtPiAgSW5kZXggU2NhbiB1c2luZyBwZ2JlbmNoX2Fj Y291bnRzX3BrZXkgb24gcGdiZW5jaF9hY2NvdW50cysKKyAgICAgICAgICAgICAgICB8ICAgICAg ICAgSW5kZXggQ29uZDogKGFpZCA9IDQ4NzkzKQorY2FsbHMgICAgICAgICAgIHwgMzAwMAordG90 YWxfZXhlY190aW1lIHwgMjEuNjY0NjkwMDAwMDAwMDkzCistWyBSRUNPUkQgNSBdLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitwbGFuICAgICAgICAgICAgfCBJbnNlcnQgb24gcGdiZW5jaF9oaXN0b3J5ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgIHwgICAtPiAg UmVzdWx0CitjYWxscyAgICAgICAgICAgfCAzMDAwCit0b3RhbF9leGVjX3RpbWUgfCA0LjM2NTI1 MDk5OTk5OTk1NworCitzZXNzaW9uIDE6CisKK2JlbmNoIyBTRUxFQ1QgcGdfc2xlZXAoMTAwKSwg Q09VTlQoKikgRlJPTSBwZ2JlbmNoX2FjY291bnRzOworCitzZXNzaW9uIDI6CisKK2JlbmNoPSMg U0VMRUNUIHF1ZXJ5LCBwbGFuIEZST00gcGdfc3RhdF9hY3Rpdml0eQorICBKT0lOIHBnX3N0YXRf cGxhbnMgT04gKHVzZXN5c2lkID0gdXNlcmlkIEFORCBkYXRpZCA9IGRiaWQgQU5EIHF1ZXJ5X2lk ID0gcXVlcnlpZCBBTkQgcGxhbl9pZCA9IHBsYW5pZCkKKyAgV0hFUkUgcXVlcnkgTElLRSAnU0VM RUNUIHBnX3NsZWVwJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICBwbGFuICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTRUxFQ1QgcGdfc2xlZXAoMTAwKSwg Q09VTlQoKikgRlJPTSBwZ2JlbmNoX2FjY291bnRzOyB8IEFnZ3JlZ2F0ZSAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIC0+ICBTZXEgU2NhbiBvbiBwZ2JlbmNoX2FjY291bnRzCisoMSByb3cp CisKKzwvc2NyZWVuPgorIDwvc2VjdDI+CisKKyA8c2VjdDIgaWQ9InBnc3RhdHBsYW5zLWF1dGhv cnMiPgorICA8dGl0bGU+QXV0aG9yczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBMdWthcyBGaXR0 bCA8ZW1haWw+bHVrYXNAZml0dGwuY29tPC9lbWFpbD4uCisgIDwvcGFyYT4KKyA8L3NlY3QyPgor Cis8L3NlY3QxPgotLSAKMi40Ny4xCgo= --000000000000d3aec6062c70c852--