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 1qYHrG-001GqX-HO for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Aug 2023 03:15:06 +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 1qYHrF-00DX6g-CV for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Aug 2023 03:15:05 +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 1qYHrE-00DX6X-L3 for pgsql-hackers@lists.postgresql.org; Tue, 22 Aug 2023 03:15:04 +0000 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qYHrA-000GRh-WE for pgsql-hackers@postgresql.org; Tue, 22 Aug 2023 03:15:02 +0000 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-56ee1ed7781so1858506eaf.3 for ; Mon, 21 Aug 2023 20:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692674100; x=1693278900; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CHkTXjDmGZE4ppn3GYDokVNQxhRdnVXUJzQcJM/eNU8=; b=pWy6fUHjGHTo7l3jyAHcuZDF9xMyiZQSYjSJYo300T2HiG/MtXPLA1+GK9txibTwhY 5Q/D111NafKK0Mif0gXuJOedvKiY5Oh1SlgVC49NeKLDgYavXTzCpXezH4GDjdGVLsr8 ojfJF7yZOHF1xFme7JyBumXUEXgehhD93tnZq3w+sxLIXXMtG2ACL6y0Sz8wuwEkgLAN l/2lqNfcQdkcpBTvI8nwro/aiv9kS6BR14fx4aBJv9E6p4HF+EZR5g44ZE1OducQBOo7 3E07tqpSBMtonfASO7bPofEt/EyLhjZ3qcy491cDtXYQqoDzdwzmVJ08O6r3iG3L+zze JTgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692674100; x=1693278900; 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=CHkTXjDmGZE4ppn3GYDokVNQxhRdnVXUJzQcJM/eNU8=; b=fVZW61qQxyZQCPjtuZ3eUbcsDP6m8eVJ63iK6RxB79GpA5hlTwmJwYkH5mNsch/7O1 7HuB0k5UtxvjIce6T+huecUtWWhNG2DkFI63CpIZ7XO2dLOLH7rhS6mZkZBNdjJ5YvZs Yu0wt1TI4a5Vl8PfWbuuzk69ihiv+UqABstYrriYqAunqKoBVUeT34WGDc/RNCiMOxsy jFTnl7HCLOaXyvWdUPnIHT1iWm0Wh8xuLOeKMNvROGYhBsB6pRUQitO64fALP843fegl Rm16c6trtECgJdvWbBWQ1rGQKpv7iQ9ZFDHLziXzWbKj5B4YicUeWROcQhrr1HXgECv9 FPVA== X-Gm-Message-State: AOJu0YwAJnmqmXQynTo4W2ifl9Tm4DP7zHDKU1cz3u13yRer4g6Id86L 8pezoH5yQcHWwf4it4e6n/COcVYjfvDKgYNH2O4= X-Google-Smtp-Source: AGHT+IFu+w4xuo9l7XrIe83O8e0Nc8zBdlUNLIFQQPp0JOEYOqPjCcmHMBZe526muMtAjoHa78MmuV6YUFzHki+rSYo= X-Received: by 2002:a05:6870:3920:b0:1bb:70be:5061 with SMTP id b32-20020a056870392000b001bb70be5061mr10193135oap.5.1692674100246; Mon, 21 Aug 2023 20:15:00 -0700 (PDT) MIME-Version: 1.0 References: <3507485.1691090027@sss.pgh.pa.us> <900892914fdc3f477b101d699efb40e0@anastigmatix.net> <903341.1692022214@sss.pgh.pa.us> <4b97f1a1dd9b6e45443d24870d3be698@anastigmatix.net> <111272f2dc112c7becdd35ad89f6b935@anastigmatix.net> <5138c6b5fd239e7ce4e1a4e63826ac27@anastigmatix.net> In-Reply-To: From: Andy Fan Date: Tue, 22 Aug 2023 11:14:48 +0800 Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Chapman Flack Cc: jian he , Pavel Stehule , Tom Lane , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000077927606037a665b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000077927606037a665b Content-Type: multipart/alternative; boundary="00000000000077927506037a6659" --00000000000077927506037a6659 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =EF=BC=88Just relalized this was sent to chap in private, resent it again). On Mon, Aug 21, 2023 at 6:50=E2=80=AFPM Andy Fan = wrote: > > > On Mon, Aug 21, 2023 at 11:19=E2=80=AFAM Chapman Flack > wrote: > >> On 2023-08-20 21:31, Andy Fan wrote: >> > Highlighting the user case of makeRelableType is interesting! But usin= g >> > the Oid directly looks more promising for this question IMO, it looks >> > like: >> > "you said we can put anything in this arg, so I put an OID const >> > here", >> > seems nothing is wrong. >> >> Perhaps one of the more senior developers will chime in, but to me, >> leaving out the relabel nodes looks more like "all of PostgreSQL's >> type checking happened before the SupportRequestSimplify, so nothing >> has noticed that we rewrote the tree with mismatched types, and as >> long as nothing crashes we sort of got away with it." >> >> Suppose somebody writes an extension to double-check that plan >> trees are correctly typed. Or improves EXPLAIN to check a little more >> carefully than it seems to. Omitting the relabel nodes could spell >> trouble then. >> >> Or, someone more familiar with the code than I am might say "oh, >> mismatches like that are common in rewritten trees, we live with it." >> But unless somebody tells me that, I'm not believing it. >> > > Well, this sounds long-lived. I kind of prefer to label it now. Adding > the 3rd commit to relabel the arg and return value. > > >> But I would say we have proved the concept of SupportRequestSimplify >> for this task. :) >> > > Yes, this is great! > > >> Now, it would make me happy to further reduce some of the code >> duplication between the original and the _type versions of these >> functions. I see that you noticed the duplication in the case of >> jsonb_extract_path, and you factored out jsonb_get_jsonbvalue so >> it could be reused. There is also some duplication with object_field >> and array_element. > > Yes, compared with jsonb_extract_path, object_field and array_element just have much less duplication, which are 2 lines and 6 lines separately. > (Also, we may have overlooked jsonb_path_query >> and jsonb_path_query_first as candidates for the source of the >> cast. Two more candidates; five total.) >> > I can try to add them at the same time when we talk about the infrastruct, thanks for the hint! >> Here is one way this could be structured. Observe that every one >> of those five source candidates operates in two stages: >> > > I'm not very excited with this manner, reasons are: a). It will have > to emit more steps in ExprState->steps which will be harmful for > execution. The overhead is something I'm not willing to afford. > b). this manner requires more *internal*, which is kind of similar > to "void *" in C. Could you explain more about the benefits of this? > > -- > Best Regards > Andy Fan > --=20 Best Regards Andy Fan --00000000000077927506037a6659 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=EF=BC=88Just relalized this was sent to chap in private, = resent it again).=C2=A0

On Mon, Aug 21, 2023 at 6:50=E2=80=AFPM Andy Fan <<= a href=3D"mailto:zhihui.fan1213@gmail.com">zhihui.fan1213@gmail.com>= wrote:


On Mon, Aug 21, 2023 at 11:19=E2=80=AFAM Chap= man Flack <ch= ap@anastigmatix.net> wrote:
On 2023-08-20 21:31, Andy Fan wrote:
> Highlighting the user case of makeRelableType is interesting! But usin= g
> the Oid directly looks more promising for this question IMO, it looks =
> like:
> "you said we can put anything in this arg,=C2=A0 so I put an OID = const
> here",
> seems nothing is wrong.

Perhaps one of the more senior developers will chime in, but to me,
leaving out the relabel nodes looks more like "all of PostgreSQL's=
type checking happened before the SupportRequestSimplify, so nothing
has noticed that we rewrote the tree with mismatched types, and as
long as nothing crashes we sort of got away with it."

Suppose somebody writes an extension to double-check that plan
trees are correctly typed. Or improves EXPLAIN to check a little more
carefully than it seems to. Omitting the relabel nodes could spell
trouble then.

Or, someone more familiar with the code than I am might say "oh,
mismatches like that are common in rewritten trees, we live with it."<= br> But unless somebody tells me that, I'm not believing it.

Well, this sounds long-lived.=C2=A0 I kind of prefer = to label it now.=C2=A0 Adding
the 3rd commit to relabel the arg a= nd return value.=C2=A0
=C2=A0
But I would say we have proved the concept of SupportRequestSimplify
for this task. :)

Yes,=C2=A0 this is gr= eat!=C2=A0
=C2=A0
Now, it would make me happy to further reduce some of the code
duplication between the original and the _type versions of these
functions. I see that you noticed the duplication in the case of
jsonb_extract_path, and you factored out jsonb_get_jsonbvalue so
it could be reused. There is also some duplication with object_field
and array_element.

Yes, compared with jsonb_extract_path,=C2=A0 object_field and array_eleme= nt
just have much less duplication, which are 2 lines and 6 lines= separately.=C2=A0
=C2=A0
(Also, we may have overlooked jsonb_path= _query
and jsonb_path_query_first as candidates for the source of the
cast. Two more candidates; five total.)

I can try to add them at the same time when we ta= lk about the
infrastruct,=C2=A0 thanks for the hint!=C2=A0
<= div>

Here is one way this could be structured. Observe that every one
of those five source candidates operates in two stages:

I'm not very excited with this manner, reasons are: a)= .=C2=A0 It will have
to emit more steps in ExprState->steps wh= ich will be harmful for
execution. The=C2=A0overhead=C2=A0 is som= ething I'm not willing to afford.
b). this manner requires mo= re *internal*, which is kind of similar
to "void *"=C2= =A0 in C.=C2=A0 Could you explain more about the benefits of this?=C2=A0

--
Best Regards<= div>Andy Fan


--
Best Regards
Andy Fan
--00000000000077927506037a6659-- --00000000000077927606037a665b Content-Type: application/octet-stream; name="v10-0003-relabel-the-arg-and-resultvalue-with-INTERNALOID.patch" Content-Disposition: attachment; filename="v10-0003-relabel-the-arg-and-resultvalue-with-INTERNALOID.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lllqaqem2 RnJvbSBiMzUxNTNmOGRkYjhkNDdiYmI4ZWY1YWY2MjExNWY5ZjkyODdmMzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IEZhbiA8emhpaHVpLmZhbjEyMTNAZ21haWwuY29tPgpE YXRlOiBNb24sIDIxIEF1ZyAyMDIzIDE4OjM3OjMxICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTAg My8zXSByZWxhYmVsIHRoZSBhcmcgYW5kIHJlc3VsdHZhbHVlIHdpdGggSU5URVJOQUxPSUQuCgot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jICAgICAgIHwgMTIgKysrKysrKysrKy0t CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDEyICsrKysrKy0tLS0tLQog MiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMKaW5kZXggZDg5M2U5YzE0YjUuLjg3MzUwYzZjOTEyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwpAQCAtMjA5MSwxMiArMjA5MSwyMCBAQCBqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVO Q1RJT05fQVJHUykKIAogCQlpZiAoT2lkSXNWYWxpZChuZXdfZnVuY19pZCkpCiAJCXsKLQkJCUNv bnN0ICogdGFyZ2V0X3R5cCA9IG1ha2VDb25zdChPSURPSUQsIC0xLCBJbnZhbGlkT2lkLCBzaXpl b2YoT2lkKSwKKwkJCUNvbnN0ICp0YXJnZXRfdHlwID0gbWFrZUNvbnN0KE9JRE9JRCwgLTEsIElu dmFsaWRPaWQsIHNpemVvZihPaWQpLAogCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oZmV4 cHItPmZ1bmNyZXN1bHR0eXBlKSwKIAkJCQkJCQkJCQkgICBmYWxzZSwgdHJ1ZSk7CisJCQkvKiBM ZXQgb3RoZXJzIGtub3dzIEknbSBhbiBpbnRlcm5hbC4gKi8KKwkJCVJlbGFiZWxUeXBlICpyVGFy Z2V0ID0gbWFrZVJlbGFiZWxUeXBlKChFeHByICopdGFyZ2V0X3R5cCwKKwkJCQkJCQkJCQkJCSAg IElOVEVSTkFMT0lELCAtMSwKKwkJCQkJCQkJCQkJCSAgIEludmFsaWRPaWQsCisJCQkJCQkJCQkJ CQkgICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCk7CiAJCQlmZXhwci0+ZnVuY2lkID0gbmV3X2Z1bmNf aWQ7CiAJCQlmZXhwci0+YXJncyA9IG9wZXhwci0+YXJnczsKLQkJCWZleHByLT5hcmdzID0gbGlz dF9pbnNlcnRfbnRoKGZleHByLT5hcmdzLCAwLCAodm9pZCAqKSB0YXJnZXRfdHlwKTsKKwkJCWZl eHByLT5hcmdzID0gbGlzdF9pbnNlcnRfbnRoKGZleHByLT5hcmdzLCAwLCAodm9pZCAqKSByVGFy Z2V0KTsKKworCQkJZmV4cHIgPSAoRnVuY0V4cHIgKiltYWtlUmVsYWJlbFR5cGUoKEV4cHIgKikg ZmV4cHIsIElOVEVSTkFMT0lELAorCQkJCQkJCQkJCQkJMCwgSW52YWxpZE9pZCwgQ09FUkNFX0lN UExJQ0lUX0NBU1QpOwogCQl9CiAKIAkJUEdfUkVUVVJOX1BPSU5URVIoZmV4cHIpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA4ZWQ4MGExMTE3Ni4uYWQxYWYxNmJiM2IgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC01MTAsMTAgKzUxMCwxMCBAQCBTRUxF Q1QgdGVzdF9qc29uIC0+IDIsIHRlc3RfanNvbiAtPiAwIEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnc2NhbGFyJwogCiBleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiBTRUxF Q1QgKHRlc3RfanNvbiAtPiAwKTo6aW50NCwgdGVzdF9qc29uIC0+IDAgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXJpbnQnOwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKLSAgIE91dHB1dDogcGdfY2F0YWxv Zy5qc29uYl9hcnJheV9lbGVtZW50X3R5cGUoJzIzJzo6b2lkLCB0ZXN0X2pzb24sIDApLCAodGVz dF9qc29uIC0+IDApCisgICBPdXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfdHlwZSgoJzIzJzo6 b2lkKTo6aW50ZXJuYWwsIHRlc3RfanNvbiwgMCksICh0ZXN0X2pzb24gLT4gMCkKICAgIEZpbHRl cjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ3NjYWxhcmludCc6OnRleHQpCiAoMyByb3dzKQog CkBAIC0zNTcxLDEwICszNTcxLDEwIEBAIFNFTEVDVCAoai0+J2EnKTo6bnVtZXJpYywKIChqICM+ ICd7ImEifScpOjpudW1lcmljLAogKGotPjApOjpudW1lcmljCiBGUk9NIHRlc3Rqc29uYjsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdGpzb25iCi0gICBP dXRwdXQ6IHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoJzE3MDAnOjpvaWQsIGos ICdhJzo6dGV4dCksIHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoJzIxJzo6b2lk LCBqLCAnYSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25iX29iamVjdF9maWVsZF90eXBlKCcyMyc6 Om9pZCwgaiwgJ2EnOjp0ZXh0KSwgcGdfY2F0YWxvZy5qc29uYl9vYmplY3RfZmllbGRfdHlwZSgn MjAnOjpvaWQsIGosICdhJzo6dGV4dCksIHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2ZpZWxkX3R5 cGUoJzcwMCc6Om9pZCwgaiwgJ2EnOjp0ZXh0KSwgcGdfY2F0YWxvZy5qc29uYl9vYmplY3RfZmll bGRfdHlwZSgnNzAxJzo6b2lkLCBqLCAnYSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25iX29iamVj dF9maWVsZF90eXBlKCcxNic6Om9pZCwgaiwgJ2EnOjp0ZXh0KSwgcGdfY2F0YWxvZy5qc29uYl9l eHRyYWN0X3BhdGhfdHlwZSgnMTcwMCc6Om9pZCwgaiwgJ3thfSc6OnRleHRbXSksIHBnX2NhdGFs b2cuanNvbmJfYXJyYXlfZWxlbWVudF90eXBlKCcxNzAwJzo6b2lkLCBqLCAwKQorICAgT3V0cHV0 OiBqc29uYl9vYmplY3RfZmllbGRfdHlwZSgoJzE3MDAnOjpvaWQpOjppbnRlcm5hbCwgaiwgJ2En Ojp0ZXh0KSwganNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoKCcyMSc6Om9pZCk6OmludGVybmFsLCBq LCAnYSc6OnRleHQpLCBqc29uYl9vYmplY3RfZmllbGRfdHlwZSgoJzIzJzo6b2lkKTo6aW50ZXJu YWwsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKCgnMjAnOjpvaWQpOjpp bnRlcm5hbCwgaiwgJ2EnOjp0ZXh0KSwganNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoKCc3MDAnOjpv aWQpOjppbnRlcm5hbCwgaiwgJ2EnOjp0ZXh0KSwganNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoKCc3 MDEnOjpvaWQpOjppbnRlcm5hbCwgaiwgJ2EnOjp0ZXh0KSwganNvbmJfb2JqZWN0X2ZpZWxkX3R5 cGUoKCcxNic6Om9pZCk6OmludGVybmFsLCBqLCAnYSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25i X2V4dHJhY3RfcGF0aF90eXBlKCgnMTcwMCc6Om9pZCk6OmludGVybmFsLCBqLCAne2F9Jzo6dGV4 dFtdKSwganNvbmJfYXJyYXlfZWxlbWVudF90eXBlKCgnMTcwMCc6Om9pZCk6OmludGVybmFsLCBq LCAwKQogKDIgcm93cykKIAogLS0gbmVzdGVkIHRlc3RzCi0tIAoyLjIxLjAKCg== --00000000000077927606037a665b Content-Type: application/octet-stream; name="v10-0001-optimize-casting-jsonb-to-a-given-type.patch" Content-Disposition: attachment; filename="v10-0001-optimize-casting-jsonb-to-a-given-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lllqaqe90 RnJvbSBjNGIxYWUxM2EwZjRiYTI4OTcyODM1ZmZhNGM5ODUwZTJlMGRiZGE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IEZhbiA8emhpaHVpLmZhbjEyMTNAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE2IEF1ZyAyMDIzIDE0OjA0OjI3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTAg MS8zXSBvcHRpbWl6ZSBjYXN0aW5nIGpzb25iIHRvIGEgZ2l2ZW4gdHlwZS4KClByZXZpb3VzbHkg YWZ0ZXIgd2UgZ2V0IGEgSnNvbmJWYWx1ZSwgd2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvCkpzb25i IGZpcnN0IHRoZW4gY2FzdCB0aGUgSnNvbmIgdG8gdGhlIGdpdmVuIHR5cGUuIEluIHRoaXMgcGF0 Y2gsCndlIGNvdmVydCB0aGUgSnNvbmJWYWx1ZSB0byB0aGUgZGVzaXJlZCB0eXBlIGRpcmVjdGx5 LgotLS0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgIHwgIDMwICsrKysrCiBz cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICB8IDE3NyArKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgIHwgMTE1ICsr KysrKysrKysrLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgfCAg IDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgIHwgIDMyICsrKy0tCiBz cmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS91 dGlscy9qc29uYi5oICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iLm91dCB8IDE3OCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA1NiArKysrKystLS0KIDkgZmlsZXMgY2hhbmdl ZCwgNDYyIGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j CmluZGV4IDBlN2U2ZTQ2ZDk0Li45Y2I5MTc4ZjAxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAg LTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJu b2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9lcnJjb2Rlcy5oIgorI2luY2x1ZGUg InV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCkBA IC0zNTIsNiArMzUzLDM1IEBAIG1ha2VOdWxsQ29uc3QoT2lkIGNvbnN0dHlwZSwgaW50MzIgY29u c3R0eXBtb2QsIE9pZCBjb25zdGNvbGxpZCkKIAkJCQkJIHR5cEJ5VmFsKTsKIH0KIAorLyoKKyAq IG1ha2VEdW1teUNvbnN0CisgKgkgY3JlYXRlIGEgQ29uc3Qgbm9kZSB3aXRoIHRoZSBzcGVjaWZp ZWQgdHlwZS90eXBtb2QuCisgKgorICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIHJvdXRpbmUgdG8g Y3JlYXRlIGEgQ29uc3Qgd2hpY2ggb25seSB0aGUKKyAqIHR5cGUgaXMgaW50ZXJlc3RpbmcgYnV0 IG1ha2Ugc3VyZSB0aGUgdmFsdWUgaXMgYWNjZXNzaWJsZS4KKyAqLworQ29uc3QgKgorbWFrZUR1 bW15Q29uc3QoT2lkIGNvbnN0dHlwZSwgaW50MzIgY29uc3R0eXBtb2QsIE9pZCBjb25zdGNvbGxp ZCkKK3sKKwlpbnQxNgkJdHlwTGVuOworCWJvb2wJCXR5cEJ5VmFsOworCUNvbnN0CQkqYzsKKwlE YXR1bQkJdmFsID0gMDsKKworCisJZ2V0X3R5cGxlbmJ5dmFsKGNvbnN0dHlwZSwgJnR5cExlbiwg JnR5cEJ5VmFsKTsKKworCWlmIChjb25zdHR5cGUgPT0gTlVNRVJJQ09JRCkKKwkJdmFsID0gRGly ZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2luLCBDU3RyaW5nR2V0RGF0dW0oIjAiKSk7CisJZWxz ZSBpZiAoIXR5cEJ5VmFsKQorCQllbG9nKEVSUk9SLCAiY3JlYXRlIGR1bW15IGNvbnN0IGZvciB0 eXBlICV1IGlzIG5vdCBzdXBwb3J0ZWQuIiwgY29uc3R0eXBlKTsKKworCS8qIFhYWDogaGVyZSBJ IGFzc3VtZSBjb25zdHZhbHVlPTAgaXMgYWNjZXNzaWJsZSBmb3IgY29uc3RieXZhbC4qLworCWMg PSBtYWtlQ29uc3QoY29uc3R0eXBlLCBjb25zdHR5cG1vZCwgMCwgKGludCkgdHlwTGVuLCB2YWws IGZhbHNlLCB0eXBCeVZhbCk7CisKKwlyZXR1cm4gYzsKK30KKwogLyoKICAqIG1ha2VCb29sQ29u c3QgLQogICoJICBjcmVhdGVzIGEgQ29uc3Qgbm9kZSByZXByZXNlbnRpbmcgYSBib29sZWFuIHZh bHVlIChjYW4gYmUgTlVMTCB0b28pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IDk3ODE4NTJiMGNi Li4xNDhjMWUyZTE5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE3LDExICsxNywxNCBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNp bmNsdWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCisjaW5j bHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVk ZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKQEAgLTIwMzgs NiArMjA0MSwxODAgQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNv bnN0IGNoYXIgKnNxbHR5cGUpCiAJZWxvZyhFUlJPUiwgInVua25vd24ganNvbmIgdHlwZTogJWQi LCAoaW50KSB0eXBlKTsKIH0KIAorc3RhdGljIGJvb2wKK2pzb25iX2Nhc3RfaXNfb3B0aW1pemVk KE9pZCB0YXJnZXRfdHlwZSkKK3sKKwlzd2l0Y2godGFyZ2V0X3R5cGUpCisJeworCQljYXNlIE5V TUVSSUNPSUQ6CisJCWNhc2UgQk9PTE9JRDoKKwkJY2FzZSBJTlQyT0lEOgorCQljYXNlIElOVDRP SUQ6CisJCWNhc2UgSU5UOE9JRDoKKwkJY2FzZSBGTE9BVDRPSUQ6CisJCWNhc2UgRkxPQVQ4T0lE OgorCQkJcmV0dXJuIHRydWU7CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gZmFsc2U7CisJfQorfQor CitEYXR1bQoranNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTm9kZQkg ICAqcmF3cmVxID0gKE5vZGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlpZiAoSXNBKHJh d3JlcSwgU3VwcG9ydFJlcXVlc3RTaW1wbGlmeSkpCisJeworCQlTdXBwb3J0UmVxdWVzdFNpbXBs aWZ5ICpyZXEgPSAoU3VwcG9ydFJlcXVlc3RTaW1wbGlmeSAqKSByYXdyZXE7CisJCUZ1bmNFeHBy CSpmZXhwciA9IHBhbGxvYyhzaXplb2YoRnVuY0V4cHIpKTsKKwkJT3BFeHByCQkqb3BleHByOwor CQlPaWQJCQluZXdfZnVuY19pZCA9IEludmFsaWRPaWQ7CisKKwkJbWVtY3B5KGZleHByLCByZXEt PmZjYWxsLCBzaXplb2YoRnVuY0V4cHIpKTsKKworCQlvcGV4cHIgPSAoT3BFeHByICopIGxpbml0 aWFsKGZleHByLT5hcmdzKTsKKworCQlpZiAoIUlzQShvcGV4cHIsIE9wRXhwcikgfHwKKwkJCSFq c29uYl9jYXN0X2lzX29wdGltaXplZChmZXhwci0+ZnVuY3Jlc3VsdHR5cGUpKQorCQl7CisJCQkv KiBub3QgdGhlIGRlc2lyZWQgcGF0dGVybi4gKi8KKwkJCVBHX1JFVFVSTl9QT0lOVEVSKGZleHBy KTsKKwkJfQorCisJCWlmIChvcGV4cHItPm9wZnVuY2lkICA9PSBGX0pTT05CX09CSkVDVF9GSUVM RCkKKwkJCW5ld19mdW5jX2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfVFlQRTsKKwkJZWxzZSBp ZiAob3BleHByLT5vcGZ1bmNpZCA9PSBGX0pTT05CX0FSUkFZX0VMRU1FTlQpCisJCQluZXdfZnVu Y19pZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9UWVBFOworCQllbHNlIGlmIChvcGV4cHItPm9w ZnVuY2lkID09IEZfSlNPTkJfRVhUUkFDVF9QQVRIKQorCQkJbmV3X2Z1bmNfaWQgPSBGX0pTT05C X0VYVFJBQ1RfUEFUSF9UWVBFOworCisJCWlmIChPaWRJc1ZhbGlkKG5ld19mdW5jX2lkKSkKKwkJ eworCQkJQ29uc3QJKnRhcmdldCA9ICBtYWtlRHVtbXlDb25zdChmZXhwci0+ZnVuY3Jlc3VsdHR5 cGUsIDAsIEludmFsaWRPaWQpOworCQkJZmV4cHItPmZ1bmNpZCA9IG5ld19mdW5jX2lkOworCQkJ ZmV4cHItPmFyZ3MgPSBvcGV4cHItPmFyZ3M7CisJCQlmZXhwci0+YXJncyA9IGxpc3RfaW5zZXJ0 X250aChmZXhwci0+YXJncywgMCwgdGFyZ2V0KTsKKwkJfQorCisJCVBHX1JFVFVSTl9QT0lOVEVS KGZleHByKTsKKwl9CisKKwlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKK30KKworRGF0dW0KK2Nh c3RfanNvbmJ2YWx1ZV90b190eXBlKEpzb25iVmFsdWUgKnYsIE9pZCB0YXJnZXRPaWQpCit7CisJ c3dpdGNoKHRhcmdldE9pZCkKKwl7CisJCURhdHVtCXJldFZhbHVlOworCisJCWNhc2UgQk9PTE9J RDoKKwkJCWlmICh2LT50eXBlICE9IGpidkJvb2wpCisJCQkJY2Fubm90Q2FzdEpzb25iVmFsdWUo di0+dHlwZSwgImJvb2wiKTsKKwkJCVBHX1JFVFVSTl9CT09MKHYtPnZhbC5ib29sZWFuKTsKKwor CQljYXNlIE5VTUVSSUNPSUQ6CisJCQlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWNh bm5vdENhc3RKc29uYlZhbHVlKHYtPnR5cGUsICJudW1lcmljIik7CisJCQlQR19SRVRVUk5fTlVN RVJJQyh2LT52YWwubnVtZXJpYyk7CisJCWNhc2UgSU5UMk9JRDoKKwkJCWlmICh2LT50eXBlICE9 IGpidk51bWVyaWMpCisJCQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi0+dHlwZSwgInNtYWxsaW50 Iik7CisJCQlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQyLAorCQkJ CQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpOworCQkJUEdfUkVUVVJO X0RBVFVNKHJldFZhbHVlKTsKKwkJY2FzZSBJTlQ0T0lEOgorCQkJaWYgKHYtPnR5cGUgIT0gamJ2 TnVtZXJpYykKKwkJCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LT50eXBlLCAiaW50ZWdlciIpOwor CQkJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50NCwKKwkJCQkJCQkJ CQkgICBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKKwkJCVBHX1JFVFVSTl9EQVRV TShyZXRWYWx1ZSk7CisKKwkJY2FzZSBJTlQ4T0lEOgorCQkJaWYgKHYtPnR5cGUgIT0gamJ2TnVt ZXJpYykKKwkJCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LT50eXBlLCAiYmlnaW50Iik7CisJCQly ZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ4LAorCQkJCQkJCQkJCSAg IE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpOworCQkJUEdfUkVUVVJOX0RBVFVNKHJl dFZhbHVlKTsKKworCQljYXNlIEZMT0FUNE9JRDoKKwkJCWlmICh2LT50eXBlICE9IGpidk51bWVy aWMpCisJCQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi0+dHlwZSwgInJlYWwiKTsKKwkJCXJldFZh bHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0NCwKKwkJCQkJCQkJCQkgICBO dW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKKwkJCVBHX1JFVFVSTl9EQVRVTShyZXRW YWx1ZSk7CisKKwkJY2FzZSBGTE9BVDhPSUQ6CisJCQlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmlj KQorCQkJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYtPnR5cGUsICJkb3VibGUgcHJlY2lzaW9uIik7 CisJCQlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19mbG9hdDgsCisJCQkJ CQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1lcmljKSk7CisJCQlQR19SRVRVUk5f REFUVU0ocmV0VmFsdWUpOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiY2FzdCBqc29u YiB0byB0eXBlICV1IGlzIG5vdCBhbGxvd2VkIiwgdGFyZ2V0T2lkKTsKKwkJCWJyZWFrOworCX0K KworCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworfQorCitEYXR1bQoranNvbmJfb2JqZWN0X2Zp ZWxkX3R5cGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQl0YXJnZXRPaWQgPSBnZXRfZm5f ZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAwKTsKKwlKc29uYgkgICAqamIgPSBQR19HRVRB UkdfSlNPTkJfUCgxKTsKKwl0ZXh0CSAgICprZXkgPSBQR19HRVRBUkdfVEVYVF9QUCgyKTsKKwor CUpzb25iVmFsdWUgKnY7CisJSnNvbmJWYWx1ZQl2YnVmOworCisJaWYgKCFKQl9ST09UX0lTX09C SkVDVChqYikpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwl2ID0gZ2V0S2V5SnNvblZhbHVlRnJv bUNvbnRhaW5lcigmamItPnJvb3QsCisJCQkJCQkJCQkgVkFSREFUQV9BTlkoa2V5KSwKKwkJCQkJ CQkJCSBWQVJTSVpFX0FOWV9FWEhEUihrZXkpLAorCQkJCQkJCQkJICZ2YnVmKTsKKworCWlmICh2 ID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlyZXR1cm4gY2FzdF9qc29uYnZhbHVl X3RvX3R5cGUodiwgdGFyZ2V0T2lkKTsKK30KKworRGF0dW0KK2pzb25iX2FycmF5X2VsZW1lbnRf dHlwZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXRhcmdldE9pZCA9IGdldF9mbl9leHBy X2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDApOworCUpzb25iCSAgICpqYiA9IFBHX0dFVEFSR19K U09OQl9QKDEpOworCWludAkJCWVsZW1lbnQgPSBQR19HRVRBUkdfSU5UMzIoMik7CisKKwlKc29u YlZhbHVlICp2OworCisJaWYgKCFKQl9ST09UX0lTX0FSUkFZKGpiKSkKKwkJUEdfUkVUVVJOX05V TEwoKTsKKworCS8qIEhhbmRsZSBuZWdhdGl2ZSBzdWJzY3JpcHQgKi8KKwlpZiAoZWxlbWVudCA8 IDApCisJeworCQl1aW50MzIJCW5lbGVtZW50cyA9IEpCX1JPT1RfQ09VTlQoamIpOworCisJCWlm ICgtZWxlbWVudCA+IG5lbGVtZW50cykKKwkJCVBHX1JFVFVSTl9OVUxMKCk7CisJCWVsc2UKKwkJ CWVsZW1lbnQgKz0gbmVsZW1lbnRzOworCX0KKworCXYgPSBnZXRJdGhKc29uYlZhbHVlRnJvbUNv bnRhaW5lcigmamItPnJvb3QsIGVsZW1lbnQpOworCWlmICh2ID09IE5VTEwpCisJCVBHX1JFVFVS Tl9OVUxMKCk7CisKKwlyZXR1cm4gY2FzdF9qc29uYnZhbHVlX3RvX3R5cGUodiwgdGFyZ2V0T2lk KTsKK30KKwogRGF0dW0KIGpzb25iX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uZnVuY3MuYwppbmRleCBhNGJmYTVlNDA0MC4uYmI0Y2E4MDdkNzQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMKQEAgLTQ5Miw2ICs0OTIsNyBAQCBzdGF0aWMgSnNvblBhcnNl RXJyb3JUeXBlIHRyYW5zZm9ybV9zdHJpbmdfdmFsdWVzX29iamVjdF9maWVsZF9zdGFydCh2b2lk ICpzdGF0ZQogc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSB0cmFuc2Zvcm1fc3RyaW5nX3ZhbHVl c19hcnJheV9lbGVtZW50X3N0YXJ0KHZvaWQgKnN0YXRlLCBib29sIGlzbnVsbCk7CiBzdGF0aWMg SnNvblBhcnNlRXJyb3JUeXBlIHRyYW5zZm9ybV9zdHJpbmdfdmFsdWVzX3NjYWxhcih2b2lkICpz dGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKTsKIAorc3RhdGljIEpz b25iVmFsdWUgKmpzb25iX2dldF9qc29uYnZhbHVlKEpzb25iICpqYiwgRGF0dW0gKnBhdGgsIGlu dCBucGF0aCwgYm9vbCAqaXNudWxsKTsKIAogLyoKICAqIHBnX3BhcnNlX2pzb25fb3JfZXJyc2F2 ZQpAQCAtMTQ3Myw2ICsxNDc0LDQwIEBAIGdldF9zY2FsYXIodm9pZCAqc3RhdGUsIGNoYXIgKnRv a2VuLCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkKIAlyZXR1cm4gSlNPTl9TVUNDRVNTOwogfQog CitEYXR1bQoranNvbmJfZXh0cmFjdF9wYXRoX3R5cGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlP aWQJCQl0YXJnZXRPaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAwKTsK KwlKc29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgxKTsKKwlBcnJheVR5cGUgICpwYXRo ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDIpOworCisJSnNvbmJWYWx1ZSAqdjsKKworCURhdHVt CSAgICpwYXRodGV4dDsKKwlib29sCSAgICpwYXRobnVsbHM7CisJYm9vbAkJaXNudWxsID0gZmFs c2U7CisJaW50CQkJbnBhdGg7CisKKwkvKgorCSAqIElmIHRoZSBhcnJheSBjb250YWlucyBhbnkg bnVsbCBlbGVtZW50cywgcmV0dXJuIE5VTEwsIG9uIHRoZSBncm91bmRzCisJICogdGhhdCB5b3Un ZCBoYXZlIGdvdHRlbiBOVUxMIGlmIGFueSBSSFMgdmFsdWUgd2VyZSBOVUxMIGluIGEgbmVzdGVk CisJICogc2VyaWVzIG9mIGFwcGxpY2F0aW9ucyBvZiB0aGUgLT4gb3BlcmF0b3IuICAoTm90ZTog YmVjYXVzZSB3ZSBhbHNvCisJICogcmV0dXJuIE5VTEwgZm9yIGVycm9yIGNhc2VzIHN1Y2ggYXMg bm8tc3VjaC1maWVsZCwgdGhpcyBpcyB0cnVlCisJICogcmVnYXJkbGVzcyBvZiB0aGUgY29udGVu dHMgb2YgdGhlIHJlc3Qgb2YgdGhlIGFycmF5LikKKwkgKi8KKwlpZiAoYXJyYXlfY29udGFpbnNf bnVsbHMocGF0aCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlkZWNvbnN0cnVjdF9hcnJheV9i dWlsdGluKHBhdGgsIFRFWFRPSUQsICZwYXRodGV4dCwgJnBhdGhudWxscywgJm5wYXRoKTsKKwor CXYgPSBqc29uYl9nZXRfanNvbmJ2YWx1ZShqYiwgcGF0aHRleHQsIG5wYXRoLCAmaXNudWxsKTsK KworCWlmIChpc251bGwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlyZXR1cm4gY2FzdF9qc29u YnZhbHVlX3RvX3R5cGUodiwgdGFyZ2V0T2lkKTsKK30KKwogRGF0dW0KIGpzb25iX2V4dHJhY3Rf cGF0aChQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTUxNiw1MiArMTU1MSwzNiBAQCBnZXRfanNv bmJfcGF0aF9hbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCkKIAkJUEdf UkVUVVJOX0RBVFVNKHJlcyk7CiB9CiAKLURhdHVtCi1qc29uYl9nZXRfZWxlbWVudChKc29uYiAq amIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQor CitzdGF0aWMgSnNvbmJWYWx1ZSAqCitqc29uYl9nZXRfanNvbmJ2YWx1ZShKc29uYiAqamIsIERh dHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCkKIHsKKwlib29sIGhhdmVfb2JqZWN0 ID0gZmFsc2UsIGhhdmVfYXJyYXkgPSBmYWxzZTsKIAlKc29uYkNvbnRhaW5lciAqY29udGFpbmVy ID0gJmpiLT5yb290OworCWludCBpOwogCUpzb25iVmFsdWUgKmpidnAgPSBOVUxMOwotCWludAkJ CWk7Ci0JYm9vbAkJaGF2ZV9vYmplY3QgPSBmYWxzZSwKLQkJCQloYXZlX2FycmF5ID0gZmFsc2U7 CiAKLQkqaXNudWxsID0gZmFsc2U7CisJLyoKKwkgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHJl dHVybiB0aGUgZW50aXJlIExIUyBvYmplY3QsIG9uIHRoZSBncm91bmRzCisJICogdGhhdCB3ZSBz aG91bGQgZG8gemVybyBmaWVsZCBvciBlbGVtZW50IGV4dHJhY3Rpb25zLgorCSAqLworCWlmIChu cGF0aCA8PSAwKQorCXsKKwkJSnNvbmJWYWx1ZSAqcmVzID0gTlVMTDsKKwkJaWYgKEpCX1JPT1Rf SVNfQVJSQVkoamIpICYmIEpCX1JPT1RfSVNfU0NBTEFSKGpiKSkKKwkJCXJldHVybiBnZXRJdGhK c29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsIDApOworCisJCS8qIE5COiByZXMgaXMg YSBqYnZCaW5hcnkgSnNvbmJWYWx1ZSAqLworCQlyZXMgPSBwYWxsb2MwKHNpemVvZihKc29uYlZh bHVlKSk7CisJCUpzb25iVG9Kc29uYlZhbHVlKGpiLCByZXMpOworCQlyZXR1cm4gcmVzOworCX0K IAogCS8qIElkZW50aWZ5IHdoZXRoZXIgd2UgaGF2ZSBvYmplY3QsIGFycmF5LCBvciBzY2FsYXIg YXQgdG9wLWxldmVsICovCiAJaWYgKEpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKIAkJaGF2ZV9vYmpl Y3QgPSB0cnVlOwogCWVsc2UgaWYgKEpCX1JPT1RfSVNfQVJSQVkoamIpICYmICFKQl9ST09UX0lT X1NDQUxBUihqYikpCiAJCWhhdmVfYXJyYXkgPSB0cnVlOwotCWVsc2UKLQl7Ci0JCUFzc2VydChK Ql9ST09UX0lTX0FSUkFZKGpiKSAmJiBKQl9ST09UX0lTX1NDQUxBUihqYikpOwotCQkvKiBFeHRy YWN0IHRoZSBzY2FsYXIgdmFsdWUsIGlmIGl0IGlzIHdoYXQgd2UnbGwgcmV0dXJuICovCi0JCWlm IChucGF0aCA8PSAwKQotCQkJamJ2cCA9IGdldEl0aEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNv bnRhaW5lciwgMCk7Ci0JfQotCi0JLyoKLQkgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHJldHVy biB0aGUgZW50aXJlIExIUyBvYmplY3QsIG9uIHRoZSBncm91bmRzCi0JICogdGhhdCB3ZSBzaG91 bGQgZG8gemVybyBmaWVsZCBvciBlbGVtZW50IGV4dHJhY3Rpb25zLiAgRm9yIHRoZQotCSAqIG5v bi1zY2FsYXIgY2FzZSB3ZSBjYW4ganVzdCBoYW5kIGJhY2sgdGhlIG9iamVjdCB3aXRob3V0IG11 Y2ggd29yay4gRm9yCi0JICogdGhlIHNjYWxhciBjYXNlLCBmYWxsIHRocm91Z2ggYW5kIGRlYWwg d2l0aCB0aGUgdmFsdWUgYmVsb3cgdGhlIGxvb3AuCi0JICogKFRoaXMgaW5jb25zaXN0ZW5jeSBh cmlzZXMgYmVjYXVzZSB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdlbmVyYXRlIGEKLQkgKiBKc29u YlZhbHVlIGRpcmVjdGx5IGZvciByb290LWxldmVsIGNvbnRhaW5lcnMuKQotCSAqLwotCWlmIChu cGF0aCA8PSAwICYmIGpidnAgPT0gTlVMTCkKLQl7Ci0JCWlmIChhc190ZXh0KQotCQl7Ci0JCQly ZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dChKc29uYlRvQ1N0cmluZyhOVUxM LAotCQkJCQkJCQkJCQkJCQkJCSAgY29udGFpbmVyLAotCQkJCQkJCQkJCQkJCQkJCSAgVkFSU0la RShqYikpKSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBub3QgdGV4dCBtb2RlIC0ganVzdCBo YW5kIGJhY2sgdGhlIGpzb25iICovCi0JCQlQR19SRVRVUk5fSlNPTkJfUChqYik7Ci0JCX0KLQl9 CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykKIAl7CkBAIC0xNTg2LDcgKzE2MDUsNyBA QCBqc29uYl9nZXRfZWxlbWVudChKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJv b2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQogCQkJaWYgKGVuZHB0ciA9PSBpbmRleHRleHQgfHwg KmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDApCiAJCQl7CiAJCQkJKmlzbnVsbCA9IHRydWU7 Ci0JCQkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwkJCQlyZXR1cm4gTlVMTDsKIAkJ CX0KIAogCQkJaWYgKGxpbmRleCA+PSAwKQpAQCAtMTYwNyw3ICsxNjI2LDcgQEAganNvbmJfZ2V0 X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRoLCBib29sICppc251bGws IGJvb2wgYXNfdGV4dCkKIAkJCQlpZiAobGluZGV4ID09IElOVF9NSU4gfHwgLWxpbmRleCA+IG5l bGVtZW50cykKIAkJCQl7CiAJCQkJCSppc251bGwgPSB0cnVlOwotCQkJCQlyZXR1cm4gUG9pbnRl ckdldERhdHVtKE5VTEwpOworCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9CiAJCQkJZWxzZQogCQkJ CQlpbmRleCA9IG5lbGVtZW50cyArIGxpbmRleDsKQEAgLTE2MTksMTMgKzE2MzgsMTMgQEAganNv bmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRoLCBib29sICpp c251bGwsIGJvb2wgYXNfdGV4dCkKIAkJewogCQkJLyogc2NhbGFyLCBleHRyYWN0aW9uIHlpZWxk cyBhIG51bGwgKi8KIAkJCSppc251bGwgPSB0cnVlOwotCQkJcmV0dXJuIFBvaW50ZXJHZXREYXR1 bShOVUxMKTsKKwkJCXJldHVybiBOVUxMOwogCQl9CiAKIAkJaWYgKGpidnAgPT0gTlVMTCkKIAkJ ewogCQkJKmlzbnVsbCA9IHRydWU7Ci0JCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CQkJcmV0dXJuIE5VTEw7CiAJCX0KIAkJZWxzZSBpZiAoaSA9PSBucGF0aCAtIDEpCiAJCQlicmVh azsKQEAgLTE2NDQsNiArMTY2MywyMiBAQCBqc29uYl9nZXRfZWxlbWVudChKc29uYiAqamIsIERh dHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQogCQkJaGF2 ZV9hcnJheSA9IGZhbHNlOwogCQl9CiAJfQorCXJldHVybiBqYnZwOworfQorCisvKgorICogUmV0 dXJuIGpzb25iIGRhdHVtIG9yIGpzb25iLWFzLXRleHQgZGF0dW0uCisgKi8KK0RhdHVtCitqc29u Yl9nZXRfZWxlbWVudChKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlz bnVsbCwgYm9vbCBhc190ZXh0KQoreworCUpzb25iVmFsdWUgKmpidnAgPSBOVUxMOworCSppc251 bGwgPSBmYWxzZTsKKworCWpidnAgPSBqc29uYl9nZXRfanNvbmJ2YWx1ZShqYiwgcGF0aCwgbnBh dGgsIGlzbnVsbCk7CisKKwlpZiAoKmlzbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShO VUxMKTsKIAogCWlmIChhc190ZXh0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXgg ZjUwN2I0OWJiMjguLjhhODk2ZjlhYWQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAt NTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRB TE9HX1ZFUlNJT05fTk8JMjAyMzA3MjYxCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDIz MDgxNzEKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2OTk2MDczOTg5YS4u YjY4NDQ1Mzc1MjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNDU3NSwyNSArNDU3NSwy NiBAQAogICBwcm9uYW1lID0+ICdwZ19sc24nLCBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9h cmd0eXBlcyA9PiAnbnVtZXJpYycsCiAgIHByb3NyYyA9PiAnbnVtZXJpY19wZ19sc24nIH0sCiAK LXsgb2lkID0+ICczNTU2JywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gYm9vbGVhbicsCit7 IG9pZCA9PiAnMzU1NicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xlYW4nLCBwcm9z dXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1cHBvcnQnLAogICBwcm9uYW1lID0+ICdib29sJywgcHJv cmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAn anNvbmJfYm9vbCcgfSwKIHsgb2lkID0+ICczNDQ5JywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIg dG8gbnVtZXJpYycsCi0gIHByb25hbWUgPT4gJ251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1l cmljJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKKyAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHBy b3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ251bWVy aWMnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX251bWVyaWMn IH0sCi17IG9pZCA9PiAnMzQ1MCcsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDInLAor eyBvaWQgPT4gJzM0NTAnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQyJywgcHJvc3Vw cG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50MicsIHByb3Jl dHR5cGUgPT4gJ2ludDInLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pz b25iX2ludDInIH0sCi17IG9pZCA9PiAnMzQ1MScsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRv IGludDQnLAoreyBvaWQgPT4gJzM0NTEnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQ0 JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50 NCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9z cmMgPT4gJ2pzb25iX2ludDQnIH0sCi17IG9pZCA9PiAnMzQ1MicsIGRlc2NyID0+ICdjb252ZXJ0 IGpzb25iIHRvIGludDgnLAoreyBvaWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29udmVydCBqc29u YiB0byBpbnQ4JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFt ZSA9PiAnaW50OCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIn LAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDgnIH0sCi17IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ ICdjb252ZXJ0IGpzb25iIHRvIGZsb2F0NCcsCit7IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ICdj b252ZXJ0IGpzb25iIHRvIGZsb2F0NCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9y dCcsCiAgIHByb25hbWUgPT4gJ2Zsb2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcsIHByb2Fy Z3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfZmxvYXQ0JyB9LAoteyBvaWQg PT4gJzI1ODAnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBmbG9hdDgnLAoreyBvaWQgPT4g JzI1ODAnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBmbG9hdDgnLCBwcm9zdXBwb3J0ID0+ ICdqc29uYl9jYXN0X3N1cHBvcnQnLAogICBwcm9uYW1lID0+ICdmbG9hdDgnLCBwcm9yZXR0eXBl ID0+ICdmbG9hdDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25i X2Zsb2F0OCcgfSwKIApAQCAtOTkyOCw2ICs5OTI5LDEzIEBACiAgIHByb25hbWUgPT4gJ2pzb25i X29iamVjdF9maWVsZF90ZXh0JywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVz ID0+ICdqc29uYiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGZpZWxkX25hbWV9 JywKICAgcHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfdGV4dCcgfSwKK3sgb2lkID0+ICcz ODEzJywgZGVzY3IgPT4gJ3JldHVybiBhIGdpdmVuIHR5cGUgc3BlY2lmaWVkIGluIGRlc2lyZWRf dHlwZSBmcm9tIGpzb25iIGZpZWxkJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxk X3R5cGUnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2Fu eWVsZW1lbnQganNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0X3R5cGUsIGZyb21f anNvbiwgZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF90eXBl J30sCit7IG9pZCA9PiAnMzgxNCcsIGRlc2NyID0+ICdwbGFubmVyIHN1cHBvcnQgZm9yIG51bWVy aWMoanNvbmIpJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlw ZSA9PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4g J2pzb25iX2Nhc3Rfc3VwcG9ydCcgfSwKIHsgb2lkID0+ICczMjE1JywKICAgcHJvbmFtZSA9PiAn anNvbmJfYXJyYXlfZWxlbWVudCcsIHByb3JldHR5cGUgPT4gJ2pzb25iJywKICAgcHJvYXJndHlw ZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbiwgZWxlbWVudF9p bmRleH0nLApAQCAtOTkzNiw2ICs5OTQ0LDEwIEBACiAgIHByb25hbWUgPT4gJ2pzb25iX2FycmF5 X2VsZW1lbnRfdGV4dCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9PiAn anNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLCBlbGVtZW50X2luZGV4fScs CiAgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF90ZXh0JyB9LAoreyBvaWQgPT4gJzQ1 NDknLCBkZXNjciA9PiAnY2FzdCBhbiBhcnJheSBlbGVtZW50IHRvIGdpdmVuIHR5cGUnLAorICBw cm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X3R5cGUnLCBwcm9yZXR0eXBlID0+ICdhbnll bGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQganNvbmIgaW50NCcsIHByb2Fy Z25hbWVzID0+ICd7dGFyZ2V0X3R5cGUsIGZyb21fanNvbiwgZWxlbWVudF9pbmRleH0nLAorICBw cm9zcmMgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfdHlwZScgfSwKIHsgb2lkID0+ICczMjE3Jywg ZGVzY3IgPT4gJ2dldCB2YWx1ZSBmcm9tIGpzb25iIHdpdGggcGF0aCBlbGVtZW50cycsCiAgIHBy b25hbWUgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywgcHJv cmV0dHlwZSA9PiAnanNvbmInLAogICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9h bGxhcmd0eXBlcyA9PiAne2pzb25iLF90ZXh0fScsCkBAIC05OTQ3LDYgKzk5NTksMTIgQEAKICAg cHJvYWxsYXJndHlwZXMgPT4gJ3tqc29uYixfdGV4dH0nLCBwcm9hcmdtb2RlcyA9PiAne2ksdn0n LAogICBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixwYXRoX2VsZW1zfScsCiAgIHByb3NyYyA9 PiAnanNvbmJfZXh0cmFjdF9wYXRoX3RleHQnIH0sCit7IG9pZCA9PiAnNDU1MScsIGRlc2NyID0+ ICdjYXN0IHZhbHVlIGZyb20ganNvbmIgYXMgdGV4dCB3aXRoIHBhdGggZWxlbWVudHMgdG8gZ2l2 ZW4gdHlwZScsCisgIHByb25hbWUgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF90eXBlJywgcHJvdmFy aWFkaWMgPT4gJ3RleHQnLAorICBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywgcHJvYXJndHlw ZXMgPT4gJ2FueWVsZW1lbnQganNvbmIgX3RleHQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne2Fu eWVsZW1lbnQsanNvbmIsX3RleHR9JywgcHJvYXJnbW9kZXMgPT4gJ3tpLGksdn0nLAorICBwcm9h cmduYW1lcyA9PiAne3RhcmdldF90eXBlLGZyb21fanNvbixwYXRoX2VsZW1zfScsCisgIHByb3Ny YyA9PiAnanNvbmJfZXh0cmFjdF9wYXRoX3R5cGUnIH0sCiB7IG9pZCA9PiAnMzIxOScsIGRlc2Ny ID0+ICdlbGVtZW50cyBvZiBhIGpzb25iIGFycmF5JywKICAgcHJvbmFtZSA9PiAnanNvbmJfYXJy YXlfZWxlbWVudHMnLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm9y ZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5j cy5oCmluZGV4IDMxODA3MDMwMDU1Li5jZmJlNWIyNjE5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK QEAgLTU4LDYgKzU4LDggQEAgZXh0ZXJuIENvbnN0ICptYWtlQ29uc3QoT2lkIGNvbnN0dHlwZSwK IAogZXh0ZXJuIENvbnN0ICptYWtlTnVsbENvbnN0KE9pZCBjb25zdHR5cGUsIGludDMyIGNvbnN0 dHlwbW9kLCBPaWQgY29uc3Rjb2xsaWQpOwogCitleHRlcm4gQ29uc3QgKm1ha2VEdW1teUNvbnN0 KE9pZCBjb25zdHR5cGUsIGludDMyIGNvbnN0dHlwbW9kLCBPaWQgY29uc3Rjb2xsaWQpOworCiBl eHRlcm4gTm9kZSAqbWFrZUJvb2xDb25zdChib29sIHZhbHVlLCBib29sIGlzbnVsbCk7CiAKIGV4 dGVybiBFeHByICptYWtlQm9vbEV4cHIoQm9vbEV4cHJUeXBlIGJvb2xvcCwgTGlzdCAqYXJncywg aW50IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmggYi9z cmMvaW5jbHVkZS91dGlscy9qc29uYi5oCmluZGV4IDY0OWExNjQ0ZjI0Li41MzIyMjUzMTRhOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9qc29uYi5oCkBAIC00MzUsNSArNDM1LDYgQEAgZXh0ZXJuIERhdHVtIGpzb25iX2J1aWxk X29iamVjdF93b3JrZXIoaW50IG5hcmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsCiAJCQkJ CQkJCQkgICBib29sIHVuaXF1ZV9rZXlzKTsKIGV4dGVybiBEYXR1bSBqc29uYl9idWlsZF9hcnJh eV93b3JrZXIoaW50IG5hcmdzLCBEYXR1bSAqYXJncywgYm9vbCAqbnVsbHMsCiAJCQkJCQkJCQkg IE9pZCAqdHlwZXMsIGJvb2wgYWJzZW50X29uX251bGwpOworZXh0ZXJuIERhdHVtIGNhc3RfanNv bmJ2YWx1ZV90b190eXBlKEpzb25iVmFsdWUgKnYsIE9pZCB0YXJnZXRfb2lkKTsKIAogI2VuZGlm CQkJCQkJCS8qIF9fSlNPTkJfSF9fICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pzb25iLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0Cmlu ZGV4IDRhMTZkMGRiYWZiLi4xMmRhYWNiM2I4MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKQEAgLTQ1Nyw2ICs0NTcsNyBAQCBDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgK ICk7CiBJTlNFUlQgSU5UTyB0ZXN0X2pzb25iIFZBTFVFUwogKCdzY2FsYXInLCciYSBzY2FsYXIi JyksCisoJ3NjYWxhcmludCcsJzInKSwKICgnYXJyYXknLCdbInplcm8iLCAib25lIiwidHdvIixu dWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJmMSI6OX1dJyksCiAoJ29iamVjdCcsJ3siZmll bGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJmaWVsZDMiOm51bGwsICJmaWVsZDQiOiA0LCAi ZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9fScpOwogU0VMRUNUIHRlc3RfanNv biAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOwpAQCAt NTAxLDEwICs1MDIsMjUgQEAgU0VMRUNUIHRlc3RfanNvbiAtPj4gJ2ZpZWxkMicgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogIHZhbDIKICgxIHJvdykKIAotU0VM RUNUIHRlc3RfanNvbiAtPiAyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2Nh bGFyJzsKK1NFTEVDVCB0ZXN0X2pzb24gLT4gMiwgdGVzdF9qc29uIC0+IDAgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOworID9jb2x1bW4/IHwgID9jb2x1bW4/ICAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgfCAiYSBzY2FsYXIiCisoMSByb3cp CisKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK1NFTEVDVCAodGVzdF9qc29uIC0+IDAp OjppbnQ0LCB0ZXN0X2pzb24gLT4gMCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J3NjYWxhcmludCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF90eXBl KDAsIHRlc3RfanNvbiwgMCksICh0ZXN0X2pzb24gLT4gMCkKKyAgIEZpbHRlcjogKHRlc3RfanNv bmIuanNvbl90eXBlID0gJ3NjYWxhcmludCc6OnRleHQpCisoMyByb3dzKQorCitTRUxFQ1QgdGVz dF9qc29uIC0+IDAgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXJpbnQn OwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQotIAorIDIKICgxIHJvdykKIAogU0VMRUNUIHRlc3Rf anNvbiAtPiAyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJyYXknOwpAQCAt MTc4Niw2ICsxODAyLDEyIEBAIHNlbGVjdCAneyJhIjogeyJiIjp7ImMiOiAiZm9vIn19fSc6Ompz b25iICM+ICd7fSc7CiAgeyJhIjogeyJiIjogeyJjIjogImZvbyJ9fX0KICgxIHJvdykKIAorc2Vs ZWN0ICgnMic6Ompzb25iICM+ICd7fScpOjppbnQyLCAoJ3siYSI6Mn0nOjpqc29uYiAjPiAneyJi In0nKSwgKCd7ImEiOjJ9Jzo6anNvbmIgIz4gJ3siYiJ9Jyk6OmludDI7CisgaW50MiB8ID9jb2x1 bW4/IHwgaW50MiAKKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorICAgIDIgfCAgICAgICAgICB8 ICAgICAKKygxIHJvdykKKwogc2VsZWN0ICdbMSwyLDNdJzo6anNvbmIgIz4gJ3t9JzsKICA/Y29s dW1uPyAgCiAtLS0tLS0tLS0tLQpAQCAtMzUzNyw2ICszNTU5LDI0IEBAIFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3Rqc29uYiBXSEVSRSBqIEA/ICckLmJhcic7CiAKIFJFU0VUIGVuYWJsZV9zZXFz Y2FuOwogRFJPUCBJTkRFWCBqaWR4OworLS0gdGVzdCB0aGUgc3VwcG9ydGVkIGZ1bmN0aW9uIGZv ciBqc29uYiBjYXN0LgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIChqLT4n YScpOjpudW1lcmljLAorKGotPidhJyk6OmludDIsCisoai0+J2EnKTo6aW50NCwKKyhqLT4nYScp OjppbnQ4LAorKGotPidhJyk6OmZsb2F0NCwKKyhqLT4nYScpOjpmbG9hdDgsCisoai0+J2EnKTo6 Ym9vbCwKKyhqICM+ICd7ImEifScpOjpudW1lcmljLAorKGotPjApOjpudW1lcmljCitGUk9NIHRl c3Rqc29uYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3Rqc29uYgorICAgT3V0cHV0OiBqc29u Yl9vYmplY3RfZmllbGRfdHlwZSgnMCc6Om51bWVyaWMsIGosICdhJzo6dGV4dCksIGpzb25iX29i amVjdF9maWVsZF90eXBlKCcwJzo6c21hbGxpbnQsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVj dF9maWVsZF90eXBlKDAsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKCcw Jzo6YmlnaW50LCBqLCAnYSc6OnRleHQpLCBqc29uYl9vYmplY3RfZmllbGRfdHlwZSgnMCc6OnJl YWwsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKCcwJzo6ZG91YmxlIHBy ZWNpc2lvbiwgaiwgJ2EnOjp0ZXh0KSwganNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoZmFsc2UsIGos ICdhJzo6dGV4dCksIHBnX2NhdGFsb2cuanNvbmJfZXh0cmFjdF9wYXRoX3R5cGUoJzAnOjpudW1l cmljLCBqLCAne2F9Jzo6dGV4dFtdKSwganNvbmJfYXJyYXlfZWxlbWVudF90eXBlKCcwJzo6bnVt ZXJpYywgaiwgMCkKKygyIHJvd3MpCisKIC0tIG5lc3RlZCB0ZXN0cwogU0VMRUNUICd7ImZmIjp7 ImEiOjEyLCJiIjoxNn19Jzo6anNvbmI7CiAgICAgICAgICAgIGpzb25iICAgICAgICAgICAgCkBA IC01NDcxLDEwNyArNTUxMSwxMTMgQEAgc2VsZWN0IHRzX2hlYWRsaW5lKCdbXSc6Ompzb25iLCB0 c3F1ZXJ5KCdhYWEgJiBiYmInKSk7CiAoMSByb3cpCiAKIC0tIGNhc3RzCi1zZWxlY3QgJ3RydWUn Ojpqc29uYjo6Ym9vbDsKLSBib29sIAotLS0tLS0tCi0gdAorc2VsZWN0ICd0cnVlJzo6anNvbmI6 OmJvb2wsICgneyJhIjogdHJ1ZX0nOjpqc29uYi0+J2EnKTo6Ym9vbDsKKyBib29sIHwgYm9vbCAK Ky0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdAogKDEgcm93KQogCiBzZWxlY3QgJ1tdJzo6anNvbmI6 OmJvb2w7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IHRvIHR5cGUgYm9vbGVhbgot c2VsZWN0ICcxLjAnOjpqc29uYjo6ZmxvYXQ7Ci0gZmxvYXQ4IAotLS0tLS0tLS0KLSAgICAgIDEK K3NlbGVjdCAoJ3siYSI6IFtdfSc6Ompzb25iLT4nYScpOjpib29sOworRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBhcnJheSB0byB0eXBlIGJvb2xlYW4KK3NlbGVjdCAnMS4wJzo6anNvbmI6OmZs b2F0LCAoJ3siYSI6IDEuMH0nOjpqc29uYi0+J2EnKTo6ZmxvYXQ7CisgZmxvYXQ4IHwgZmxvYXQ4 IAorLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDEgfCAgICAgIDEKICgxIHJvdykKIAogc2VsZWN0 ICdbMS4wXSc6Ompzb25iOjpmbG9hdDsKIEVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkg dG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCi1zZWxlY3QgJzEyMzQ1Jzo6anNvbmI6OmludDQ7Ci0g aW50NCAgCi0tLS0tLS0tCi0gMTIzNDUKK3NlbGVjdCAoJ3siYSI6IFsxLjBdfSc6Ompzb25iLT4n YScpOjpmbG9hdDsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBkb3Vi bGUgcHJlY2lzaW9uCitzZWxlY3QgJzEyMzQ1Jzo6anNvbmI6OmludDQsICAoJ3siYSI6IDEyMzQ1 fSc6Ompzb25iLT4nYScpOjppbnQ0OworIGludDQgIHwgaW50NCAgCistLS0tLS0tKy0tLS0tLS0K KyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAKIHNlbGVjdCAnImhlbGxvIic6Ompzb25iOjppbnQ0 OwogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCi1zZWxl Y3QgJzEyMzQ1Jzo6anNvbmI6Om51bWVyaWM7Ci0gbnVtZXJpYyAKLS0tLS0tLS0tLQotICAgMTIz NDUKK3NlbGVjdCAoJ3siYSI6ICJoZWxsbyJ9Jzo6anNvbmItPidhJyk6OmludDQ7CitFUlJPUjog IGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK3NlbGVjdCAnMTIzNDUn Ojpqc29uYjo6bnVtZXJpYywgKCd7ImEiOiAxMjM0NX0nOjpqc29uYi0+J2EnKTo6bnVtZXJpYzsK KyBudW1lcmljIHwgbnVtZXJpYyAKKy0tLS0tLS0tLSstLS0tLS0tLS0KKyAgIDEyMzQ1IHwgICAx MjM0NQogKDEgcm93KQogCiBzZWxlY3QgJ3t9Jzo6anNvbmI6Om51bWVyaWM7CiBFUlJPUjogIGNh bm5vdCBjYXN0IGpzb25iIG9iamVjdCB0byB0eXBlIG51bWVyaWMKLXNlbGVjdCAnMTIzNDUuMDUn Ojpqc29uYjo6bnVtZXJpYzsKLSBudW1lcmljICAKLS0tLS0tLS0tLS0KLSAxMjM0NS4wNQorc2Vs ZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpudW1lcmljLCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25i LT4nYScpOjpudW1lcmljOworIG51bWVyaWMgIHwgbnVtZXJpYyAgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyAxMjM0NS4wNSB8IDEyMzQ1LjA1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUn Ojpqc29uYjo6ZmxvYXQ0OwotICBmbG9hdDQgIAotLS0tLS0tLS0tLQotIDEyMzQ1LjA1CitzZWxl Y3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0NCwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+ J2EnKTo6ZmxvYXQ0OworICBmbG9hdDQgIHwgIGZsb2F0NCAgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyAxMjM0NS4wNSB8IDEyMzQ1LjA1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpq c29uYjo6ZmxvYXQ4OwotICBmbG9hdDggIAotLS0tLS0tLS0tLQotIDEyMzQ1LjA1CitzZWxlY3Qg JzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0OCwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+J2En KTo6ZmxvYXQ4OworICBmbG9hdDggIHwgIGZsb2F0OCAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyAxMjM0NS4wNSB8IDEyMzQ1LjA1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29u Yjo6aW50MjsKLSBpbnQyICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wNSc6Ompz b25iOjppbnQyLCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjppbnQyOworIGludDIg IHwgaW50MiAgCistLS0tLS0tKy0tLS0tLS0KKyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAKLXNl bGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50NDsKLSBpbnQ0ICAKLS0tLS0tLS0KLSAxMjM0NQor c2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjppbnQ0LCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25i LT4nYScpOjppbnQ0OworIGludDQgIHwgaW50NCAgCistLS0tLS0tKy0tLS0tLS0KKyAxMjM0NSB8 IDEyMzQ1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50ODsKLSBpbnQ4 ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjppbnQ4LCAoJ3si YSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjppbnQ4OworIGludDggIHwgaW50OCAgCistLS0t LS0tKy0tLS0tLS0KKyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpudW1l cmljOwotICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljICAgICAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1 CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDUnOjpqc29uYjo6bnVtZXJpYywgKCd7ImEiOiAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1fSc6Ompzb25iLT4nYScpOjpudW1lcmljOworICAg ICAgICAgICAgICAgICAgICAgICBudW1lcmljICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgbnVtZXJpYyAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEyMzQ1LjAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUgfCAxMjM0NS4wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1CiAoMSByb3cpCiAKLXNl bGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw NSc6Ompzb25iOjpmbG9hdDQ7Ci0gZmxvYXQ0IAotLS0tLS0tLS0KLSAgMTIzNDUKK3NlbGVjdCAn MTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompz b25iOjpmbG9hdDQsICAoJ3siYSI6IDEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidhJyk6OmZsb2F0NDsKKyBmbG9hdDQgfCBmbG9h dDQgCistLS0tLS0tLSstLS0tLS0tLQorICAxMjM0NSB8ICAxMjM0NQogKDEgcm93KQogCi1zZWxl Y3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUn Ojpqc29uYjo6ZmxvYXQ4OwotIGZsb2F0OCAKLS0tLS0tLS0tCi0gIDEyMzQ1CitzZWxlY3QgJzEy MzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29u Yjo6ZmxvYXQ4LCAoJ3siYSI6IDEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidhJyk6OmZsb2F0ODsKKyBmbG9hdDggfCBmbG9hdDgg CistLS0tLS0tLSstLS0tLS0tLQorICAxMjM0NSB8ICAxMjM0NQogKDEgcm93KQogCi1zZWxlY3Qg JzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpq c29uYjo6aW50MjsKLSBpbnQyICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDIs ICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwNX0nOjpqc29uYi0+J2EnKTo6aW50MjsKKyBpbnQyICB8IGludDIgIAorLS0tLS0tLSstLS0t LS0tCisgMTIzNDUgfCAxMjM0NQogKDEgcm93KQogCi1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50NDsKLSBpbnQ0 ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDQsICgneyJhIjogMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0nOjpqc29uYi0+J2En KTo6aW50NDsKKyBpbnQ0ICB8IGludDQgIAorLS0tLS0tLSstLS0tLS0tCisgMTIzNDUgfCAxMjM0 NQogKDEgcm93KQogCi1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50ODsKLSBpbnQ4ICAKLS0tLS0tLS0KLSAxMjM0 NQorc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDA1Jzo6anNvbmI6OmludDgsICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0nOjpqc29uYi0+J2EnKTo6aW50ODsKKyBpbnQ4ICB8 IGludDggIAorLS0tLS0tLSstLS0tLS0tCisgMTIzNDUgfCAxMjM0NQogKDEgcm93KQogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uYi5zcWwKaW5kZXggZTRiN2NkZjcwM2QuLjg2MzRkMTU0ZWZlIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbmIuc3FsCkBAIC0xNTQsNiArMTU0LDcgQEAgQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9q c29uYiAoCiAKIElOU0VSVCBJTlRPIHRlc3RfanNvbmIgVkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNj YWxhciInKSwKKygnc2NhbGFyaW50JywnMicpLAogKCdhcnJheScsJ1siemVybyIsICJvbmUiLCJ0 d28iLG51bGwsImZvdXIiLCJmaXZlIiwgWzEsMiwzXSx7ImYxIjo5fV0nKSwKICgnb2JqZWN0Jywn eyJmaWVsZDEiOiJ2YWwxIiwiZmllbGQyIjoidmFsMiIsImZpZWxkMyI6bnVsbCwgImZpZWxkNCI6 IDQsICJmaWVsZDUiOiBbMSwyLDNdLCAiZmllbGQ2IjogeyJmMSI6OX19Jyk7CiAKQEAgLTE2Niw3 ICsxNjcsMTAgQEAgU0VMRUNUIHRlc3RfanNvbiAtPj4gJ2ZpZWxkMicgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPj4gJ2ZpZWxk MicgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVz dF9qc29uIC0+PiAnZmllbGQyJyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7CiAKLVNFTEVDVCB0ZXN0X2pzb24gLT4gMiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ3NjYWxhcic7CitTRUxFQ1QgdGVzdF9qc29uIC0+IDIsIHRlc3RfanNvbiAtPiAw IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKK2V4cGxhaW4gKHZl cmJvc2UsIGNvc3RzIG9mZikKK1NFTEVDVCAodGVzdF9qc29uIC0+IDApOjppbnQ0LCB0ZXN0X2pz b24gLT4gMCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcmludCc7CitT RUxFQ1QgdGVzdF9qc29uIC0+IDAgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdz Y2FsYXJpbnQnOwogU0VMRUNUIHRlc3RfanNvbiAtPiAyIEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnYXJyYXknOwogU0VMRUNUIHRlc3RfanNvbiAtPiA5IEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnYXJyYXknOwogU0VMRUNUIHRlc3RfanNvbiAtPiAyIEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKQEAgLTQ5MSw2ICs0OTUsNyBA QCBTRUxFQ1QgJ3siZjIiOlsiZjMiLDFdLCJmNCI6eyJmNSI6OTksImY2Ijoic3RyaW5neSJ9fSc6 Ompzb25iIz4+YXJyYXlbJ2YyJywnMSddOwogCiAtLSBjb3JuZXIgY2FzZXMgZm9yIHNhbWUKIHNl bGVjdCAneyJhIjogeyJiIjp7ImMiOiAiZm9vIn19fSc6Ompzb25iICM+ICd7fSc7CitzZWxlY3Qg KCcyJzo6anNvbmIgIz4gJ3t9Jyk6OmludDIsICgneyJhIjoyfSc6Ompzb25iICM+ICd7ImIifScp LCAoJ3siYSI6Mn0nOjpqc29uYiAjPiAneyJiIn0nKTo6aW50MjsKIHNlbGVjdCAnWzEsMiwzXSc6 Ompzb25iICM+ICd7fSc7CiBzZWxlY3QgJyJmb28iJzo6anNvbmIgIz4gJ3t9JzsKIHNlbGVjdCAn NDInOjpqc29uYiAjPiAne30nOwpAQCAtOTM5LDYgKzk0NCwxOSBAQCBTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0anNvbmIgV0hFUkUgaiBAPyAnJC5iYXInOwogUkVTRVQgZW5hYmxlX3NlcXNjYW47 CiBEUk9QIElOREVYIGppZHg7CiAKKy0tIHRlc3QgdGhlIHN1cHBvcnRlZCBmdW5jdGlvbiBmb3Ig anNvbmIgY2FzdC4KK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAoai0+J2En KTo6bnVtZXJpYywKKyhqLT4nYScpOjppbnQyLAorKGotPidhJyk6OmludDQsCisoai0+J2EnKTo6 aW50OCwKKyhqLT4nYScpOjpmbG9hdDQsCisoai0+J2EnKTo6ZmxvYXQ4LAorKGotPidhJyk6OmJv b2wsCisoaiAjPiAneyJhIn0nKTo6bnVtZXJpYywKKyhqLT4wKTo6bnVtZXJpYworRlJPTSB0ZXN0 anNvbmI7CisKIC0tIG5lc3RlZCB0ZXN0cwogU0VMRUNUICd7ImZmIjp7ImEiOjEyLCJiIjoxNn19 Jzo6anNvbmI7CiBTRUxFQ1QgJ3siZmYiOnsiYSI6MTIsImIiOjE2fSwicXEiOjEyM30nOjpqc29u YjsKQEAgLTE0OTYsMjMgKzE1MTQsMjcgQEAgc2VsZWN0IHRzX2hlYWRsaW5lKCd7fSc6Ompzb25i LCB0c3F1ZXJ5KCdhYWEgJiBiYmInKSk7CiBzZWxlY3QgdHNfaGVhZGxpbmUoJ1tdJzo6anNvbmIs IHRzcXVlcnkoJ2FhYSAmIGJiYicpKTsKIAogLS0gY2FzdHMKLXNlbGVjdCAndHJ1ZSc6Ompzb25i Ojpib29sOworc2VsZWN0ICd0cnVlJzo6anNvbmI6OmJvb2wsICgneyJhIjogdHJ1ZX0nOjpqc29u Yi0+J2EnKTo6Ym9vbDsKIHNlbGVjdCAnW10nOjpqc29uYjo6Ym9vbDsKLXNlbGVjdCAnMS4wJzo6 anNvbmI6OmZsb2F0Oworc2VsZWN0ICgneyJhIjogW119Jzo6anNvbmItPidhJyk6OmJvb2w7Citz ZWxlY3QgJzEuMCc6Ompzb25iOjpmbG9hdCwgKCd7ImEiOiAxLjB9Jzo6anNvbmItPidhJyk6OmZs b2F0Owogc2VsZWN0ICdbMS4wXSc6Ompzb25iOjpmbG9hdDsKLXNlbGVjdCAnMTIzNDUnOjpqc29u Yjo6aW50NDsKK3NlbGVjdCAoJ3siYSI6IFsxLjBdfSc6Ompzb25iLT4nYScpOjpmbG9hdDsKK3Nl bGVjdCAnMTIzNDUnOjpqc29uYjo6aW50NCwgICgneyJhIjogMTIzNDV9Jzo6anNvbmItPidhJyk6 OmludDQ7CiBzZWxlY3QgJyJoZWxsbyInOjpqc29uYjo6aW50NDsKLXNlbGVjdCAnMTIzNDUnOjpq c29uYjo6bnVtZXJpYzsKK3NlbGVjdCAoJ3siYSI6ICJoZWxsbyJ9Jzo6anNvbmItPidhJyk6Omlu dDQ7CisKK3NlbGVjdCAnMTIzNDUnOjpqc29uYjo6bnVtZXJpYywgKCd7ImEiOiAxMjM0NX0nOjpq c29uYi0+J2EnKTo6bnVtZXJpYzsKIHNlbGVjdCAne30nOjpqc29uYjo6bnVtZXJpYzsKLXNlbGVj dCAnMTIzNDUuMDUnOjpqc29uYjo6bnVtZXJpYzsKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6 ZmxvYXQ0Owotc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpmbG9hdDg7Ci1zZWxlY3QgJzEyMzQ1 LjA1Jzo6anNvbmI6OmludDI7Ci1zZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmludDQ7Ci1zZWxl Y3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmludDg7Ci1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6bnVtZXJpYzsKLXNlbGVj dCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6 Ompzb25iOjpmbG9hdDQ7Ci1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4Owotc2VsZWN0ICcxMjM0NS4wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDI7 Ci1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDUnOjpqc29uYjo6aW50NDsKLXNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4Oworc2VsZWN0ICcxMjM0NS4w NSc6Ompzb25iOjpudW1lcmljLCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjpudW1l cmljOworc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpmbG9hdDQsICgneyJhIjogMTIzNDUuMDV9 Jzo6anNvbmItPidhJyk6OmZsb2F0NDsKK3NlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6ZmxvYXQ4 LCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjpmbG9hdDg7CitzZWxlY3QgJzEyMzQ1 LjA1Jzo6anNvbmI6OmludDIsICgneyJhIjogMTIzNDUuMDV9Jzo6anNvbmItPidhJyk6OmludDI7 CitzZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmludDQsICgneyJhIjogMTIzNDUuMDV9Jzo6anNv bmItPidhJyk6OmludDQ7CitzZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmludDgsICgneyJhIjog MTIzNDUuMDV9Jzo6anNvbmItPidhJyk6OmludDg7CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6bnVtZXJpYywgKCd7 ImEiOiAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1 fSc6Ompzb25iLT4nYScpOjpudW1lcmljOworc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmZsb2F0NCwgICgneyJhIjog MTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0nOjpq c29uYi0+J2EnKTo6ZmxvYXQ0Oworc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmZsb2F0OCwgKCd7ImEiOiAxMjM0NS4w MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1fSc6Ompzb25iLT4n YScpOjpmbG9hdDg7CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50MiwgKCd7ImEiOiAxMjM0NS4wMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1fSc6Ompzb25iLT4nYScpOjppbnQy Oworc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDA1Jzo6anNvbmI6OmludDQsICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0nOjpqc29uYi0+J2EnKTo6aW50NDsKK3NlbGVjdCAn MTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompz b25iOjppbnQ4LCAoJ3siYSI6IDEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidhJyk6OmludDg7Ci0tIAoyLjIxLjAKCg== --00000000000077927606037a665b Content-Type: application/octet-stream; name="v10-0002-convert-anyelement-to-internal.patch" Content-Disposition: attachment; filename="v10-0002-convert-anyelement-to-internal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lllqaqel1 RnJvbSA4NGUyNjgxMDgxMDA0NjFmMDhjYTZjOTA5MTM5Nzc3ZDUwZjE0NTgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IEZhbiA8emhpaHVpLmZhbjEyMTNAZ21haWwuY29tPgpE YXRlOiBGcmksIDE4IEF1ZyAyMDIzIDE1OjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTAg Mi8zXSBjb252ZXJ0IGFueWVsZW1lbnQgdG8gaW50ZXJuYWwuCgotLS0KIHNyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jICAgICAgIHwgMjkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jICAgICAgIHwgMTAgKysrKysrLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9jYXR2ZXJzaW9uLmggICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCAgICAgfCAxMiArKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5o ICAgICAgIHwgIDIgLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IHwgMTIg KysrKysrLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggOWNiOTE3OGYwMWEuLmE0MWZkZGRjNjYy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtMzUzLDM1ICszNTMsNiBAQCBtYWtlTnVsbENvbnN0 KE9pZCBjb25zdHR5cGUsIGludDMyIGNvbnN0dHlwbW9kLCBPaWQgY29uc3Rjb2xsaWQpCiAJCQkJ CSB0eXBCeVZhbCk7CiB9CiAKLS8qCi0gKiBtYWtlRHVtbXlDb25zdAotICoJIGNyZWF0ZSBhIENv bnN0IG5vZGUgd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUvdHlwbW9kLgotICoKLSAqIFRoaXMgaXMg YSBjb252ZW5pZW5jZSByb3V0aW5lIHRvIGNyZWF0ZSBhIENvbnN0IHdoaWNoIG9ubHkgdGhlCi0g KiB0eXBlIGlzIGludGVyZXN0aW5nIGJ1dCBtYWtlIHN1cmUgdGhlIHZhbHVlIGlzIGFjY2Vzc2li bGUuCi0gKi8KLUNvbnN0ICoKLW1ha2VEdW1teUNvbnN0KE9pZCBjb25zdHR5cGUsIGludDMyIGNv bnN0dHlwbW9kLCBPaWQgY29uc3Rjb2xsaWQpCi17Ci0JaW50MTYJCXR5cExlbjsKLQlib29sCQl0 eXBCeVZhbDsKLQlDb25zdAkJKmM7Ci0JRGF0dW0JCXZhbCA9IDA7Ci0KLQotCWdldF90eXBsZW5i eXZhbChjb25zdHR5cGUsICZ0eXBMZW4sICZ0eXBCeVZhbCk7Ci0KLQlpZiAoY29uc3R0eXBlID09 IE5VTUVSSUNPSUQpCi0JCXZhbCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbiwgQ1N0 cmluZ0dldERhdHVtKCIwIikpOwotCWVsc2UgaWYgKCF0eXBCeVZhbCkKLQkJZWxvZyhFUlJPUiwg ImNyZWF0ZSBkdW1teSBjb25zdCBmb3IgdHlwZSAldSBpcyBub3Qgc3VwcG9ydGVkLiIsIGNvbnN0 dHlwZSk7Ci0KLQkvKiBYWFg6IGhlcmUgSSBhc3N1bWUgY29uc3R2YWx1ZT0wIGlzIGFjY2Vzc2li bGUgZm9yIGNvbnN0Ynl2YWwuKi8KLQljID0gbWFrZUNvbnN0KGNvbnN0dHlwZSwgY29uc3R0eXBt b2QsIDAsIChpbnQpIHR5cExlbiwgdmFsLCBmYWxzZSwgdHlwQnlWYWwpOwotCi0JcmV0dXJuIGM7 Ci19Ci0KIC8qCiAgKiBtYWtlQm9vbENvbnN0IC0KICAqCSAgY3JlYXRlcyBhIENvbnN0IG5vZGUg cmVwcmVzZW50aW5nIGEgYm9vbGVhbiB2YWx1ZSAoY2FuIGJlIE5VTEwgdG9vKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwppbmRleCAxNDhjMWUyZTE5NS4uZDg5M2U5YzE0YjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yi5jCkBAIC0yMDkxLDEwICsyMDkxLDEyIEBAIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElP Tl9BUkdTKQogCiAJCWlmIChPaWRJc1ZhbGlkKG5ld19mdW5jX2lkKSkKIAkJewotCQkJQ29uc3QJ KnRhcmdldCA9ICBtYWtlRHVtbXlDb25zdChmZXhwci0+ZnVuY3Jlc3VsdHR5cGUsIDAsIEludmFs aWRPaWQpOworCQkJQ29uc3QgKiB0YXJnZXRfdHlwID0gbWFrZUNvbnN0KE9JRE9JRCwgLTEsIElu dmFsaWRPaWQsIHNpemVvZihPaWQpLAorCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oZmV4 cHItPmZ1bmNyZXN1bHR0eXBlKSwKKwkJCQkJCQkJCQkgICBmYWxzZSwgdHJ1ZSk7CiAJCQlmZXhw ci0+ZnVuY2lkID0gbmV3X2Z1bmNfaWQ7CiAJCQlmZXhwci0+YXJncyA9IG9wZXhwci0+YXJnczsK LQkJCWZleHByLT5hcmdzID0gbGlzdF9pbnNlcnRfbnRoKGZleHByLT5hcmdzLCAwLCB0YXJnZXQp OworCQkJZmV4cHItPmFyZ3MgPSBsaXN0X2luc2VydF9udGgoZmV4cHItPmFyZ3MsIDAsICh2b2lk ICopIHRhcmdldF90eXApOwogCQl9CiAKIAkJUEdfUkVUVVJOX1BPSU5URVIoZmV4cHIpOwpAQCAt MjE2NCw3ICsyMTY2LDcgQEAgY2FzdF9qc29uYnZhbHVlX3RvX3R5cGUoSnNvbmJWYWx1ZSAqdiwg T2lkIHRhcmdldE9pZCkKIERhdHVtCiBqc29uYl9vYmplY3RfZmllbGRfdHlwZShQR19GVU5DVElP Tl9BUkdTKQogewotCU9pZAkJCXRhcmdldE9pZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZv LT5mbGluZm8sIDApOworCU9pZAkJCXRhcmdldE9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CiAJSnNv bmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMSk7CiAJdGV4dAkgICAqa2V5ID0gUEdfR0VU QVJHX1RFWFRfUFAoMik7CiAKQEAgLTIxODgsNyArMjE5MCw3IEBAIGpzb25iX29iamVjdF9maWVs ZF90eXBlKFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQoganNvbmJfYXJyYXlfZWxlbWVudF90eXBl KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JT2lkCQkJdGFyZ2V0T2lkID0gZ2V0X2ZuX2V4cHJfYXJn dHlwZShmY2luZm8tPmZsaW5mbywgMCk7CisJT2lkCQkJdGFyZ2V0T2lkID0gUEdfR0VUQVJHX09J RCgwKTsKIAlKc29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgxKTsKIAlpbnQJCQllbGVt ZW50ID0gUEdfR0VUQVJHX0lOVDMyKDIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5k ZXggYmI0Y2E4MDdkNzQuLjAyZGI5ZjUzYjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CkBAIC0xNDc3LDcgKzE0NzcsNyBAQCBnZXRfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFyICp0b2tl biwgSnNvblRva2VuVHlwZSB0b2tlbnR5cGUpCiBEYXR1bQoganNvbmJfZXh0cmFjdF9wYXRoX3R5 cGUoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlPaWQJCQl0YXJnZXRPaWQgPSBnZXRfZm5fZXhwcl9h cmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAwKTsKKwlPaWQJCQl0YXJnZXRPaWQgPSBQR19HRVRBUkdf T0lEKDApOwogCUpzb25iCSAgICpqYiA9IFBHX0dFVEFSR19KU09OQl9QKDEpOwogCUFycmF5VHlw ZSAgKnBhdGggPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoMik7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmgKaW5kZXggOGE4OTZmOWFhZDIuLjhhOTE5ZTExNzhiIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZl cnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwot I2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyMzA4MTcxCisjZGVmaW5lIENBVEFMT0dfVkVS U0lPTl9OTwkyMDIzMDgyMTEKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBi Njg0NDUzNzUyOS4uNjZkMWFmNzE1ODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtOTkz MCw4ICs5OTMwLDggQEAKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIHRleHQnLCBwcm9hcmduYW1l cyA9PiAne2Zyb21fanNvbiwgZmllbGRfbmFtZX0nLAogICBwcm9zcmMgPT4gJ2pzb25iX29iamVj dF9maWVsZF90ZXh0JyB9LAogeyBvaWQgPT4gJzM4MTMnLCBkZXNjciA9PiAncmV0dXJuIGEgZ2l2 ZW4gdHlwZSBzcGVjaWZpZWQgaW4gZGVzaXJlZF90eXBlIGZyb20ganNvbmIgZmllbGQnLAotICBw cm9uYW1lID0+ICdqc29uYl9vYmplY3RfZmllbGRfdHlwZScsIHByb3JldHR5cGUgPT4gJ2FueWVs ZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBqc29uYiB0ZXh0JywgcHJvYXJn bmFtZXMgPT4gJ3t0YXJnZXRfdHlwZSwgZnJvbV9qc29uLCBmaWVsZF9uYW1lfScsCisgIHByb25h bWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF90eXBlJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwn LAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwganNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ ICd7dGFyZ2V0X3R5cGUsIGZyb21fanNvbiwgZmllbGRfbmFtZX0nLAogICBwcm9zcmMgPT4gJ2pz b25iX29iamVjdF9maWVsZF90eXBlJ30sCiB7IG9pZCA9PiAnMzgxNCcsIGRlc2NyID0+ICdwbGFu bmVyIHN1cHBvcnQgZm9yIG51bWVyaWMoanNvbmIpJywKICAgcHJvbmFtZSA9PiAnanNvbmJfY2Fz dF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLApAQCAtOTk0NSw4ICs5OTQ1LDgg QEAKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21f anNvbiwgZWxlbWVudF9pbmRleH0nLAogICBwcm9zcmMgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnRf dGV4dCcgfSwKIHsgb2lkID0+ICc0NTQ5JywgZGVzY3IgPT4gJ2Nhc3QgYW4gYXJyYXkgZWxlbWVu dCB0byBnaXZlbiB0eXBlJywKLSAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF90eXBl JywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVt ZW50IGpzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne3RhcmdldF90eXBlLCBmcm9tX2pzb24s IGVsZW1lbnRfaW5kZXh9JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF90eXBl JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwg anNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0X3R5cGUsIGZyb21fanNvbiwgZWxl bWVudF9pbmRleH0nLAogICBwcm9zcmMgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfdHlwZScgfSwK IHsgb2lkID0+ICczMjE3JywgZGVzY3IgPT4gJ2dldCB2YWx1ZSBmcm9tIGpzb25iIHdpdGggcGF0 aCBlbGVtZW50cycsCiAgIHByb25hbWUgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aCcsIHByb3Zhcmlh ZGljID0+ICd0ZXh0JywgcHJvcmV0dHlwZSA9PiAnanNvbmInLApAQCAtOTk2MSw4ICs5OTYxLDgg QEAKICAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfdGV4dCcgfSwKIHsgb2lkID0+ICc0 NTUxJywgZGVzY3IgPT4gJ2Nhc3QgdmFsdWUgZnJvbSBqc29uYiBhcyB0ZXh0IHdpdGggcGF0aCBl bGVtZW50cyB0byBnaXZlbiB0eXBlJywKICAgcHJvbmFtZSA9PiAnanNvbmJfZXh0cmFjdF9wYXRo X3R5cGUnLCBwcm92YXJpYWRpYyA9PiAndGV4dCcsCi0gIHByb3JldHR5cGUgPT4gJ2FueWVsZW1l bnQnLCBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBqc29uYiBfdGV4dCcsCi0gIHByb2FsbGFy Z3R5cGVzID0+ICd7YW55ZWxlbWVudCxqc29uYixfdGV4dH0nLCBwcm9hcmdtb2RlcyA9PiAne2ks aSx2fScsCisgIHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywgcHJvYXJndHlwZXMgPT4gJ2ludGVy bmFsIGpzb25iIF90ZXh0JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnRlcm5hbCxqc29uYixf dGV4dH0nLCBwcm9hcmdtb2RlcyA9PiAne2ksaSx2fScsCiAgIHByb2FyZ25hbWVzID0+ICd7dGFy Z2V0X3R5cGUsZnJvbV9qc29uLHBhdGhfZWxlbXN9JywKICAgcHJvc3JjID0+ICdqc29uYl9leHRy YWN0X3BhdGhfdHlwZScgfSwKIHsgb2lkID0+ICczMjE5JywgZGVzY3IgPT4gJ2VsZW1lbnRzIG9m IGEganNvbmIgYXJyYXknLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAppbmRleCBjZmJlNWIyNjE5Ni4uMzE4 MDcwMzAwNTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC01OCw4ICs1OCw2IEBAIGV4dGVybiBD b25zdCAqbWFrZUNvbnN0KE9pZCBjb25zdHR5cGUsCiAKIGV4dGVybiBDb25zdCAqbWFrZU51bGxD b25zdChPaWQgY29uc3R0eXBlLCBpbnQzMiBjb25zdHR5cG1vZCwgT2lkIGNvbnN0Y29sbGlkKTsK IAotZXh0ZXJuIENvbnN0ICptYWtlRHVtbXlDb25zdChPaWQgY29uc3R0eXBlLCBpbnQzMiBjb25z dHR5cG1vZCwgT2lkIGNvbnN0Y29sbGlkKTsKLQogZXh0ZXJuIE5vZGUgKm1ha2VCb29sQ29uc3Qo Ym9vbCB2YWx1ZSwgYm9vbCBpc251bGwpOwogCiBleHRlcm4gRXhwciAqbWFrZUJvb2xFeHByKEJv b2xFeHByVHlwZSBib29sb3AsIExpc3QgKmFyZ3MsIGludCBsb2NhdGlvbik7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDEyZGFhY2IzYjgwLi44ZWQ4MGExMTE3NiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTUxMCwxMCArNTEwLDEwIEBAIFNFTEVDVCB0 ZXN0X2pzb24gLT4gMiwgdGVzdF9qc29uIC0+IDAgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdzY2FsYXInCiAKIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKIFNFTEVDVCAo dGVzdF9qc29uIC0+IDApOjppbnQ0LCB0ZXN0X2pzb24gLT4gMCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ3NjYWxhcmludCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCi0gICBPdXRw dXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfdHlwZSgwLCB0ZXN0X2pzb24sIDApLCAodGVzdF9qc29u IC0+IDApCisgICBPdXRwdXQ6IHBnX2NhdGFsb2cuanNvbmJfYXJyYXlfZWxlbWVudF90eXBlKCcy Myc6Om9pZCwgdGVzdF9qc29uLCAwKSwgKHRlc3RfanNvbiAtPiAwKQogICAgRmlsdGVyOiAodGVz dF9qc29uYi5qc29uX3R5cGUgPSAnc2NhbGFyaW50Jzo6dGV4dCkKICgzIHJvd3MpCiAKQEAgLTM1 NzEsMTAgKzM1NzEsMTAgQEAgU0VMRUNUIChqLT4nYScpOjpudW1lcmljLAogKGogIz4gJ3siYSJ9 Jyk6Om51bWVyaWMsCiAoai0+MCk6Om51bWVyaWMKIEZST00gdGVzdGpzb25iOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcHVi bGljLnRlc3Rqc29uYgotICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfdHlwZSgnMCc6Om51 bWVyaWMsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKCcwJzo6c21hbGxp bnQsIGosICdhJzo6dGV4dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKDAsIGosICdhJzo6dGV4 dCksIGpzb25iX29iamVjdF9maWVsZF90eXBlKCcwJzo6YmlnaW50LCBqLCAnYSc6OnRleHQpLCBq c29uYl9vYmplY3RfZmllbGRfdHlwZSgnMCc6OnJlYWwsIGosICdhJzo6dGV4dCksIGpzb25iX29i amVjdF9maWVsZF90eXBlKCcwJzo6ZG91YmxlIHByZWNpc2lvbiwgaiwgJ2EnOjp0ZXh0KSwganNv bmJfb2JqZWN0X2ZpZWxkX3R5cGUoZmFsc2UsIGosICdhJzo6dGV4dCksIHBnX2NhdGFsb2cuanNv bmJfZXh0cmFjdF9wYXRoX3R5cGUoJzAnOjpudW1lcmljLCBqLCAne2F9Jzo6dGV4dFtdKSwganNv bmJfYXJyYXlfZWxlbWVudF90eXBlKCcwJzo6bnVtZXJpYywgaiwgMCkKKyAgIE91dHB1dDogcGdf Y2F0YWxvZy5qc29uYl9vYmplY3RfZmllbGRfdHlwZSgnMTcwMCc6Om9pZCwgaiwgJ2EnOjp0ZXh0 KSwgcGdfY2F0YWxvZy5qc29uYl9vYmplY3RfZmllbGRfdHlwZSgnMjEnOjpvaWQsIGosICdhJzo6 dGV4dCksIHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoJzIzJzo6b2lkLCBqLCAn YSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25iX29iamVjdF9maWVsZF90eXBlKCcyMCc6Om9pZCwg aiwgJ2EnOjp0ZXh0KSwgcGdfY2F0YWxvZy5qc29uYl9vYmplY3RfZmllbGRfdHlwZSgnNzAwJzo6 b2lkLCBqLCAnYSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25iX29iamVjdF9maWVsZF90eXBlKCc3 MDEnOjpvaWQsIGosICdhJzo6dGV4dCksIHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2ZpZWxkX3R5 cGUoJzE2Jzo6b2lkLCBqLCAnYSc6OnRleHQpLCBwZ19jYXRhbG9nLmpzb25iX2V4dHJhY3RfcGF0 aF90eXBlKCcxNzAwJzo6b2lkLCBqLCAne2F9Jzo6dGV4dFtdKSwgcGdfY2F0YWxvZy5qc29uYl9h cnJheV9lbGVtZW50X3R5cGUoJzE3MDAnOjpvaWQsIGosIDApCiAoMiByb3dzKQogCiAtLSBuZXN0 ZWQgdGVzdHMKLS0gCjIuMjEuMAoK --00000000000077927606037a665b--