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.96) (envelope-from ) id 1wHE6r-006yR4-1c for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 05:02:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHE6q-00CBH7-27 for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Apr 2026 05:02:16 +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.96) (envelope-from ) id 1wHE6p-00CBGz-22 for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 05:02:16 +0000 Received: from mail-yx1-xb136.google.com ([2607:f8b0:4864:20::b136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHE6l-00000002yTu-3bCP for pgsql-hackers@lists.postgresql.org; Mon, 27 Apr 2026 05:02:14 +0000 Received: by mail-yx1-xb136.google.com with SMTP id 956f58d0204a3-6501c9903edso9751141d50.1 for ; Sun, 26 Apr 2026 22:02:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777266131; cv=none; d=google.com; s=arc-20240605; b=lHj16y+iPvJhH5i7XtwIXxCANtS0NMZSK6/pf+pzRIsPSCmxlZVkywvqPqVcZChswx gcSz1xicUPPZakCq6es6oREJSdFSFipcJMZ+BY6DNGaQBmBgIiQOK6NF0b0lK7MaVCIZ NjRZ2PX+E5fpicJXMUI+ZE0zntAuRe4e/OqIPWgXPmtHOS5YgzUzW0ZEhl7DRD+xnGDs kkBZWUi7iRVmKwyX6jwqXm8dTDhZcE7VtJt1W+o09UtLRVwKGCrXcSKwLiBs1hn8cCb0 ljGkqzxWP+bXqP25tBYbW0szxUXNThdQCLUO/Pd8X4VYdNdepmvGcNpfutKsriCvkux9 Tjnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=zKSGuY8+wsIg8bKoqyapAQXyfEXz+xvSAnuvaBN22Zo=; fh=lR56rszcnO23Xy55cHOTu2s0aRtZolgXNSblKWa8ulw=; b=Urk3MSV21n8AtYBo4gUP8clk53DsVJhw6s4FKUGFao+cQpnEzpY71JQVOa8ZTbpJzP o9AExp+Ky340ZRgB2aUr7jLJ3N+SroKLGZr3X5pE7Dcri9HF3ykEZ0OiAcyA8M+pkIFQ 0ludNMHOJ2N+K4V0lP+xP3sRIXADL304duCb1snYf9F/4yPvgfHGZJE0CCA8rEi856na IS6NwzqbjQDC1/zJBlAqR2KhCvwtOxccbPE6AdGXI+jEMIO+CNIV4yauPu1LS8zyNtkO w5FYVikP3mI23SqO3xJpae1HpzQ4zSFbu8Rrjrx4F7S6UdTZYu9fiesUy0+8Xq7sTZG+ Xj5w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777266131; x=1777870931; 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=zKSGuY8+wsIg8bKoqyapAQXyfEXz+xvSAnuvaBN22Zo=; b=MoDwEcB98PSbMHiphbuswT4q5mGG2wWDt4wVzz4qoMvSGnZPvpozcQ/A2RsN3HV41e TCglqdN6qBht2hmpJeH6ROZzYEqq1ipoGqtqoNZisOOiM/FklcjzBXDyyZLP8Thvjc0Z k4RTNf3yNQECoWqTa8HTWklBh+exHT/X+maua5f5bITEBg2+EQE7LmHQxdW+zPwLyaH4 YYlQ2pe5v5UkuS0MVEjF+SqCMYZ/98qJFrf+yaso8xN+JvC5wyJ5yB1X0eYa1G8IvWit Xf36xG0xhXPL4Ps4TyQ8/JgMn6xmCqNUp4xv3TeemXBVhJNedPohQMI9Mw9VPoO2cNyg dMjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777266131; x=1777870931; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=zKSGuY8+wsIg8bKoqyapAQXyfEXz+xvSAnuvaBN22Zo=; b=XGZRtvc6rIIniHxueQ2ar/NK5qwfp96poG8GZzFTFISwppBGQQS4XEV6XlwUim2Zto Rk5O3Mfcbw5+7GmLtvOeaEHgNlNNiweT7vMBj3pMm1EyxMgfb39SKAb2C9i/PhYpbOQ3 OZhwQ2QtsLD4r16BrwJrwh4kBY3ZO2Mu25mzGqej6olhpykgNoB+2YRRXWe+P8tg1j1d X+0lknfTQl71WyK3zeaYKSpt85mqGLJdNVHtYzFTq7Y2DcT6KcmwkXwZh+NKTDwLUfH7 AQgjF/khbcE9n11HtzjuHRVf2qX420Xh+QLDf1CGq/96qO0CwqyjrhUSXzctuoi3u5uZ xG8w== X-Forwarded-Encrypted: i=1; AFNElJ83Q/A88DP36tWHbP3uN+mA2JBFvowmDzTcWMhGeqqnr6FiR5mn+512xJUNam3YNdxMiMLrOzySUdR2bwJZ@lists.postgresql.org X-Gm-Message-State: AOJu0YzzlA5uCX9GhRApMysmwi2EZQRVqdmscvLuxlzcml8T5My0AK2q +Axk2mCJbf1ouVliychS8FFH9PWjDOP2lPd3RXfSGzkf2Fm5blG3AgTIJLvCFFSWDN51CFeSwFC tg+ae1HFFn9OmfHDmH31zQn+TYEZ9sKM= X-Gm-Gg: AeBDieucZwlMGFq08xwf9MhHGg2EIXwaO9Zy//2bGlTcgK03OWN4EaoEf7JbBJze6/W xH+U47xQVA5t5PME6SgxYID94PbLkxCK3Da0LYvvoOLd22bcoIrC10+lEq8/lMaVk+Z8MKPBP+1 pK73Yz05UYsYg98xT41NntIeKfrv573hcBmVM+j7iZdszl2vdJ5ugM5vqGzxbqGoF2IV6j2+2is /LPyG0TTYcUj8hKZHE+xNmRXKDLDshb9PY0O7ZAWR+8xwUIWc2EfEE0vfgb/AG/piWBFSeEm3Rt 5MemTb1/4OF/DTJ9255xOaNovwpGufDW6enuJ1XMSu17bHB2o7ssw1l+y00atg== X-Received: by 2002:a05:690e:d08:b0:655:aceb:4062 with SMTP id 956f58d0204a3-655aceb457cmr13578008d50.28.1777266131301; Sun, 26 Apr 2026 22:02:11 -0700 (PDT) MIME-Version: 1.0 References: <87r0hmvuvr.fsf@163.com> <8102ff5b-b156-409e-a48f-e53e63a39b36@eisentraut.org> <8734t6c5rh.fsf@163.com> <87o7bn7z56.fsf@163.com> <875xx197bp.fsf@163.com> <87ttk0lgcx.fsf@163.com> <8734m5fua1.fsf@163.com> <87a5dx4cfb.fsf@163.com> <7487A577-7BDC-4B94-9FFA-741E95439BFC@gmail.com> <873417fgc0.fsf@163.com> <87eckqz5i9.fsf@163.com> In-Reply-To: From: Haibo Yan Date: Sun, 26 Apr 2026 22:01:58 -0700 X-Gm-Features: AQROBzD4N2AFNPyF0HckaLfDAl-h2zoQ_5P7arMsJUX5PfVHuSci4U2F8sgkkXg Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Andy Fan Cc: Dmitry Dolgov <9erthalion6@gmail.com>, David Rowley , Peter Eisentraut , Amit Langote , Alvaro Herrera , jian he , Chapman Flack , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000006dce3d06506a04a1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006dce3d06506a04a1 Content-Type: multipart/alternative; boundary="0000000000006dce3d06506a049f" --0000000000006dce3d06506a049f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 10, 2026 at 2:48=E2=80=AFPM Haibo Yan w= rote: > On Wed, Apr 8, 2026 at 12:50=E2=80=AFPM Haibo Yan = wrote: > >> On Tue, Apr 7, 2026 at 6:21=E2=80=AFPM Haibo Yan = wrote: >> >>> On Tue, Apr 7, 2026 at 5:00=E2=80=AFPM Andy Fan = wrote: >>> >>>> Haibo Yan writes: >>>> >>>> Hi Haibo, >>>> >>>> > I agree that if this approach is extended to the full matrix naively= , >>>> > duplication will become a real issue. >>>> >>>> Could you summary how it would be? I think it would be helpful for >>>> others to review. Otherwise every reviewer needs to count them many >>>> times. >>>> >>>> -- >>>> Best Regards >>>> Andy Fan >>>> >>> Hi Andy, >>> Sure. >>> >>> My current thought is to extend it in stages, rather than trying to >>> solve the full matrix in a single patch. >>> >>> A rough plan would be: >>> >>> 1. Keep the current stage-1 patch small and validate the basic approach >>> first >>> >>> >>> - >>> >>> jsonb_object_field / -> / equivalent subscripting form >>> - >>> >>> casts to numeric and bool >>> - >>> >>> support-function rewrite directly to explicit typed extractor >>> functions >>> >>> 2. Extend target types before extending extractor families >>> >>> >>> - >>> >>> add int4 / int8 / float8 for the same object-field family first >>> - >>> >>> keep the SQL-visible rewrite targets explicit, e.g. >>> >>> - >>> >>> jsonb_object_field_int4 >>> - >>> >>> jsonb_object_field_int8 >>> - >>> >>> jsonb_object_field_float8 >>> >>> - >>> >>> avoid the previous numeric-intermediate rewrite shape >>> >>> 3. Then extend to other extractor families with the same overall patter= n >>> >>> >>> - >>> >>> likely starting with jsonb_array_element and jsonb_extract_path >>> - >>> >>> and possibly jsonb_path_query_first later >>> - >>> >>> each family would still rewrite to explicit typed extractor entry >>> points, e.g. >>> >>> - >>> >>> jsonb_array_element_numeric >>> - >>> >>> jsonb_extract_path_bool >>> - >>> >>> jsonb_path_query_first_int4 >>> >>> >>> 4. Keep duplication manageable by sharing the implementation underneath >>> >>> >>> - >>> >>> keep the SQL/catalog-level rewrite targets explicit for readability >>> and reviewability >>> - >>> >>> but factor the C implementation into: >>> >>> - >>> >>> extractor-family lookup helpers >>> - >>> >>> target-type conversion helpers >>> - >>> >>> thin wrappers, possibly generated with small macros >>> >>> So the idea would be: explicit rewrite targets at the SQL/catalog level= , >>> but shared lookup/conversion code underneath, instead of going back to = the >>> earlier start/finish/internal pipeline. >>> >>> I agree that if this is extended naively across the full matrix, >>> duplication will become a real issue. My reason for keeping the current >>> patch narrow is that I wanted to first validate this simpler rewrite sh= ape >>> on a small subset before deciding how best to scale it further. >>> >>> Regards, >>> >>> Haibo >>> >>> Hi all, >> >> Following up on our previous discussion, I want to clarify the current >> patch plan together with the updated first patch. >> >> Earlier I described this work roughly as a 4-patch line. After iterating >> on the implementation and trying to keep each step reviewable, I now thi= nk >> the cleaner split is a 5-patch series: >> >> >> 1. >> >> object-field casts to scalar types >> 2. >> >> array-element casts to scalar types >> 3. >> >> extract-path casts to scalar types >> 4. >> >> multi-subscript casts via extract-path lowering >> 5. >> >> jsonpath-first casts to scalar types (jsonb_path_query_first and _tz) >> >> The overall design is unchanged: use the cast function=E2=80=99s support= hook to >> recognize cast(extract(...)) over scalar-returning jsonb extraction >> functions, and rewrite that directly to explicit typed extractor calls. >> >> Supported target types remain: >> >> >> - numeric >> - bool >> - int4 >> - int8 >> - float8 >> >> One point I also want to make explicit is that I do not plan to include >> jsonb_path_query in this series. >> >> After looking at it more carefully, I do not think it fits the same mode= l >> as the rest of the series. The patches here are all about scalar-returni= ng >> extraction functions, where the cast prosupport hook can see and rewrite= a >> scalar expression pair. jsonb_path_query is set-returning, so optimizing >> casts over it would likely need a different mechanism, probably at plann= er >> or executor level, rather than one more patch in this prosupport-based >> series. >> >> Attached here is the updated first patch in the current plan. >> >> This patch covers object-field extraction only: >> >> >> - jsonb_object_field >> - -> with text key >> - key subscripting >> >> and rewrites casts to: >> >> >> - numeric >> - bool >> - int4 >> - int8 >> - float8 >> >> to direct typed extractor calls. >> >> Thanks again for the earlier comments. I plan to send the remaining >> patches in follow-up emails in the order above. >> >> Regards, >> Haibo >> > > Hi all, > Following up on the earlier thread, I am continuing with the same overall > plan and sending the next two patches in the series together. > The design is still the same as before: use the cast function=E2=80=99s s= upport > hook to recognize cast(extract(...)) over scalar-returning jsonb extracti= on > functions, and rewrite that directly to explicit typed extractor calls, > without changing normal SQL syntax. > At this point, I have also folded int2 and float4 into the per-family > patches, so each patch now carries the full target-type coverage for the > functionality it introduces. > The supported target types are now: > numeric > > - bool > - int2 > - int4 > - int8 > - float4 > - float8 > > I am still keeping jsonb_path_query out of scope for this series. The > series is focused on scalar-returning extraction functions, where the cas= t > prosupport hook can see and rewrite a scalar expression pair. > jsonb_path_query is set-returning, so optimizing casts over it looks like= a > different planner/executor problem rather than one more patch in this > prosupport-based line. > > With that in mind, the current 5-patch plan is: > > 1. object-field casts to scalar types > 2. array-element casts to scalar types > 3. extract-path casts to scalar types > 4. multi-subscript casts via extract-path lowering > 5. jsonpath-first casts to scalar types (jsonb_path_query_first and > _tz) > > In this email I am sending the first two patches: > > - patch 1: object-field casts to scalar types > - patch 2: array-element casts to scalar types > > Patch 1 covers: > > - jsonb_object_field > - -> with text key > - key subscripting > > Patch 2 covers: > > - jsonb_array_element > - -> with integer RHS > - single-index array subscripting > > Both patches now support the full target-type set listed above. > Thanks again for the earlier comments. I plan to continue with the > remaining patches in follow-up emails in the same order. > > Regards, > Haibo > Hi all, I spent some time reworking this patch series into a shape that I think is easier to review and easier to reason about patch-by-patch. The goal of the series is still the same: optimize casts over scalar-returning jsonb extraction functions by using the cast function=E2= =80=99s support hook to recognize: - cast(extract(...)) and rewrite that directly to explicit typed extractor calls. That keeps ordinary SQL syntax unchanged, but avoids the extra jsonb scalar wrapping/unwrapping on the optimized path. At this point the series is organized as 5 patches: 1. object-field casts to scalar types 2. array-element casts to scalar types 3. extract-path casts to scalar types 4. multi-subscript casts via extract-path lowering 5. jsonpath-first casts to scalar types The supported target types are: - numeric - bool - int2 - int4 - int8 - float4 - float8 The covered scalar-returning extraction families/forms are: - jsonb_object_field - -> with text key - equivalent key subscripting - jsonb_array_element - -> with integer RHS - single-index array subscripting - jsonb_extract_path - #> - direct jsonb_extract_path(...) - multi-subscript jsonb subscripting (lowered to extract-path) - jsonb_path_query_first - jsonb_path_query_first_tz A few points about the current shape of the series: - I intentionally stayed with the support-function rewrite model and did not introduce new user-visible operators. - I also did not go back to the earlier start/finish/internal pipeline approach. The current version rewrites directly to explicit typed extrac= tor functions. - I folded int2 and float4 into the same family-based design, since they are the remaining natural numeric-family targets that fit the same conversion model. - I kept the multi-subscript patch conservative. It lowers through the existing extract-path family, but it does not try to turn this into a broader executor-side subscripting redesign. One explicit boundary of the series is that it does *not* try to optimize jsonb_path_query. After looking at that more carefully, I do not think it belongs in the same patch line. This series is about scalar-returning extraction functions, where the cast prosupport hook can see and rewrite a scalar expression pair. jsonb_path_query is set-returning, so optimizing casts over it would likely require a different mechanism, probably at planner or executor level, rather than one more patch in this prosupport-based series. Another explicit boundary is that the series stops at the current numeric/bool scalar targets. I did not try to extend it to text/date/uuid-like conversions, because those would require different semantics such as full jsonb serialization or string parsing, rather than the direct scalar conversion pattern used here. I expect one likely question will be the catalog footprint, since this approach adds a noticeable number of typed extractor builtins. I think that is the cleanest tradeoff in this case: SQL is statically typed, and explicit typed extractors keep the rewrite path simple, predictable, and reviewable. The implementation-side boilerplate is kept under control with shared helpers and thin family-specific macros. Thanks in advance for any review and feedback. Regards, Haibo --0000000000006dce3d06506a049f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Apr 10, 2026 at 2:48=E2=80=AFPM H= aibo Yan <tristan.yim@gmail.com= > wrote:
On Wed, Apr 8, 2026 at 12:50=E2=80=AFPM Haibo Yan <tristan.yim@gmail.com> wro= te:
On Tue, Apr 7, 2026 at 6:21=E2= =80=AFPM Haibo Yan <tristan.yim@gmail.com> wrote:
On Tue, Apr 7, 2026 at 5:00=E2=80=AFPM Andy Fan <zhihuifan1213@163.com>= wrote:
Haibo Yan <tristan.yim@gmail.com> writes:

Hi Haibo,

> I agree that if this approach is extended to the full matrix naively,<= br> > duplication will become a real issue.

Could you summary how it would be? I think it would be helpful for
others to review.=C2=A0 Otherwise every reviewer needs to count them many times.

--
Best Regards
Andy Fan
Hi Andy,
Sure.

My current thought is to extend it in stages, rather than trying to solv= e the full matrix in a single patch.

A rough plan would be:

1. Keep the current stage-1 patch small and validate th= e basic approach first

  • jsonb_object_field / -> / equivalent subscr= ipting form

  • casts to numeric and bool

  • support-function rewrite directly to explicit typed extractor functions<= /p>

2. Extend target types before extending extractor families

<= span>

  • add int4 / int8 / float8 for the = same object-field family first

  • keep the SQL-visible rewrite targets explicit, e.g.

    • jsonb_object_field_int4

    • jsonb_object_field_int8

    • jsonb_object_field_float8

  • avoid the previous numeric-intermediate rewrite shape

3. Th= en extend to other extractor families with the same overall pattern

  • likely starting with jsonb_array_element and j= sonb_extract_path

  • and possibly jsonb_path_query_first later

  • each family would still rewrite to explicit typed extractor entry points= , e.g.

    • jsonb_array_element_numeric

    • jsonb_extract_path_bool

    • jsonb_path_query_first_int4

4. Keep duplication manageable by sharing the implementati= on underneath

  • keep the SQL/catalog-level rewrite targets explicit for readability and = reviewability

  • but factor the C implementation into:

    • extractor-family lookup helpers

    • target-type conversion helpers

    • thin wrappers, possibly generated with small macros

  • So the idea would be: explicit rewrite targets at the SQL/catalog level,= but shared lookup/conversion code underneath, instead of going back to the= earlier start/finish/internal pipeline.

    I agree that if this is extended naively across the full matrix, duplica= tion will become a real issue. My reason for keeping the current patch narr= ow is that I wanted to first validate this simpler rewrite shape on a small= subset before deciding how best to scale it further.

    Regards,

    Haibo


Hi all,

Following up on our previous discussion, I want to clarify the current p= atch plan together with the updated first patch.

Earlier I described this work roughly as a 4-patch line. After iterating= on the implementation and trying to keep each step reviewable, I now think= the cleaner split is a 5-patch series:

  1. object-field casts to scalar types

  2. array-element casts to scalar types

  3. extract-path casts to scalar types

  4. multi-subscript casts via extract-path lowering

  5. jsonpath-first casts to scalar types (jsonb_path_query_first and _tz)

The overall design is unchanged: use the cast function=E2=80=99s support= hook to recognize cast(extract(...)) over scalar-returning jsonb extraction functions, and rewrite that directly to explici= t typed extractor calls.

Supported target types remain:

  • numeric
  • bool
  • int4
  • int8<= /li>
  • float8

One point I also want to make explicit is that I do not pla= n to include jsonb_path_query in this series.

After looking at it more carefully, I do not think it fits the same mode= l as the rest of the series. The patches here are all about scalar-returnin= g extraction functions, where the cast prosupport hook can see and rewrite = a scalar expression pair. jsonb_path_query is set-returning, s= o optimizing casts over it would likely need a different mechanism, probabl= y at planner or executor level, rather than one more patch in this prosuppo= rt-based series.

Attached here is the updated first patch in the current plan.

This patch covers object-field extraction only:

  • jsonb_object_field
  • -> w= ith text key
  • key subscripting

and rewrites casts to:

  • numeric
  • bool
  • int4
  • int8<= /li>
  • float8

to direct typed extractor calls.

Thanks again for the earlier comments. I plan to send the remaining patc= hes in follow-up emails in the order above.

Regards,

Haibo=C2=A0
<= br>
Hi all,
Following up on the earlier thread, I am continuing wit= h the same overall plan and sending the next two patches in the series toge= ther.
The design is still the same as before: use the cast function=E2= =80=99s support hook to recognize cast(extract(...)) over scalar-returning = jsonb extraction functions, and rewrite that directly to explicit typed ext= ractor calls, without changing normal SQL syntax.
At this point, I have = also folded int2 and float4 into the per-family patches, so each patch now = carries the full target-type coverage for the functionality it introduces.<= br>The supported target types are now:
numeric
  • bool
  • i= nt2
  • int4
  • int8
  • float4
  • float8
I am s= till keeping jsonb_path_query out of scope for this series. The series is f= ocused on scalar-returning extraction functions, where the cast prosupport = hook can see and rewrite a scalar expression pair. jsonb_path_query is set-= returning, so optimizing casts over it looks like a different planner/execu= tor problem rather than one more patch in this prosupport-based line.
With that in mind, the current 5-patch plan is:
  1. object-field c= asts to scalar types
  2. array-element casts to scalar types
  3. ex= tract-path casts to scalar types
  4. multi-subscript casts via extract-= path lowering
  5. jsonpath-first casts to scalar types (jsonb_path_quer= y_first and _tz)
In this email I am sending the first two patches:=
  • patch 1: object-field casts to scalar types
  • patch 2: ar= ray-element casts to scalar types
Patch 1 covers:
  • jsonb= _object_field
  • -> with text key
  • key subscripting
  • Patch 2 covers:
    • jsonb_array_element
    • -> with integer = RHS
    • single-index array subscripting
    Both patches now suppo= rt the full target-type set listed above.
    Thanks again for the earlier c= omments. I plan to continue with the remaining patches in follow-up emails = in the same order.

    Regards,
    Haibo

Hi all,

I spent some time reworking this patch series into a = shape that I think is easier to review and easier to reason about patch-by-= patch.

The goal of the series is still the same: optimize ca= sts over scalar-returning jsonb extraction functions by using = the cast function=E2=80=99s support hook to recognize:

  • cast(extract(...))

and rewrite that directly to explicit typed extractor= calls.

That keeps ordinary SQL syntax unchanged, but avoids = the extra jsonb scalar wrapping/unwrapping on the optimized path.

At this point the series is organized as 5 patches:

  1. object-field casts to scalar types
  2. array-elemen= t casts to scalar types
  3. extract-path casts to scalar types
  4. = multi-subscript casts via extract-path lowering
  5. jsonpath-first cast= s to scalar types

The supported target types are:

  • numeric
  • bool
  • int2
  • int4
  • int8
  • flo= at4
  • float8

The covered scalar-returning extraction families/form= s are:

  • jsonb_object_field
  • -> with text key
  • equivalent key subscripting
  • jsonb_array_element
  • -> with integer RHS
  • single-index array subscri= pting
  • jsonb_extract_path
  • #>
  • direct jsonb_extract_path(...)<= /code>
  • multi-subscript jsonb subscripting (lowered to extract-path)=
  • jsonb_path_query_first
  • jsonb_path_query= _first_tz

A few points about the current shape of the series:

  • I intentionally stayed with the support-function rewrite model and = did not introduce new user-visible operators.
  • I also did not go bac= k to the earlier start/finish/internal pipeline approach. The current versi= on rewrites directly to explicit typed extractor functions.
  • I folde= d int2 and float4 into the same family-based desi= gn, since they are the remaining natural numeric-family targets that fit th= e same conversion model.
  • I kept the multi-subscript patch conservat= ive. It lowers through the existing extract-path family, but it does not tr= y to turn this into a broader executor-side subscripting redesign.
  • One explicit boundary of the series is that it does <= span class=3D"gmail-s1">not try to optimize jsonb_path_= query.

    After looking at that more carefully, I do not think = it belongs in the same patch line. This series is about scalar-returning ex= traction functions, where the cast prosupport hook can see and rewrite a sc= alar expression pair. jsonb_path_query is set-returning, so op= timizing casts over it would likely require a different mechanism, probably= at planner or executor level, rather than one more patch in this prosuppor= t-based series.

    Another explicit boundary is that the series stops at= the current numeric/bool scalar targets. I did not try to extend it to tex= t/date/uuid-like conversions, because those would require different semanti= cs such as full jsonb serialization or string parsing, rather than the dire= ct scalar conversion pattern used here.

    I expect one likely question will be the catalog foot= print, since this approach adds a noticeable number of typed extractor buil= tins. I think that is the cleanest tradeoff in this case: SQL is statically= typed, and explicit typed extractors keep the rewrite path simple, predict= able, and reviewable. The implementation-side boilerplate is kept under con= trol with shared helpers and thin family-specific macros.

    Thanks in advance for any review and feedback.

    Regards,

    Haibo=C2=A0
--0000000000006dce3d06506a049f-- --0000000000006dce3d06506a04a1 Content-Type: application/octet-stream; name="v5-0002-jsonb-optimize-array-element-casts-to-scalar-type.patch" Content-Disposition: attachment; filename="v5-0002-jsonb-optimize-array-element-casts-to-scalar-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mogqanh41 RnJvbSA5YzhhYjE5YjdjZGNlYjcwYTY0MjAxM2FjYzg2Njg4N2NlNmNjYjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFdlZCwgOCBBcHIgMjAyNiAwMDo0OToxNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMi81XSBq c29uYjogb3B0aW1pemUgYXJyYXktZWxlbWVudCBjYXN0cyB0byBzY2FsYXIgdHlwZXMKCkV4dGVu ZCB0aGUgZXhpc3Rpbmcgc3VwcG9ydC1mdW5jdGlvbiByZXdyaXRlIHRvIGpzb25iIGFycmF5LWVs ZW1lbnQKZXh0cmFjdGlvbiwgaW5jbHVkaW5nIGJvdGggLT4gaW50ZWdlciBhbmQgc2luZ2xlLWlu ZGV4IHN1YnNjcmlwdGluZy4KClN1cHBvcnRlZCBjYXN0cyBhcmUgcmV3cml0dGVuIGRpcmVjdGx5 IHRvIGV4cGxpY2l0IHR5cGVkIGV4dHJhY3RvcgpmdW5jdGlvbnMgZm9yIG51bWVyaWMsIGJvb2ws IGludDIsIGludDQsIGludDgsIGZsb2F0NCwgYW5kIGZsb2F0OC4KLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyAgICAgICB8IDE1NCArKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jICAgfCAgNjcgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0ICAgICB8ICAyOCArKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bmIub3V0IHwgMzA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDg1ICsrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDU5 MyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4 IGM4NWQ0ODgyZjIyLi41YWJiNTFkNDdkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE4MjYs MTUgKzE4MjYsMTQgQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNv bnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKICAqIHByb3N1cHBvcnQgb24gdGhl IGpzb25iX251bWVyaWMsIGpzb25iX2Jvb2wsIGpzb25iX2ludDQsIGpzb25iX2ludDgsIGFuZAog ICoganNvbmJfZmxvYXQ4IGNhdGFsb2cgZW50cmllcy4KICAqCi0gKiBXaGVuIHRoZSBzb2xlIGFy Z3VtZW50IHRvIHRoZSBjYXN0IGlzIGEganNvbmJfb2JqZWN0X2ZpZWxkKCkgY2FsbCAodGhlIC0+ Ci0gKiBvcGVyYXRvciksIHdlIHJlcGxhY2UgdGhlIHR3by1zdGVwIGNhc3QoZXh0cmFjdCguLi4p KSBleHByZXNzaW9uIHdpdGggYQotICogc2luZ2xlIHR5cGVkIGV4dHJhY3RvciB0aGF0IHJlYWRz IHRoZSBzY2FsYXIgZGlyZWN0bHkgZnJvbSB0aGUgaW4tbWVtb3J5Ci0gKiBKc29uYlZhbHVlLCBh dm9pZGluZyBhIHJvdW5kLXRyaXAgdGhyb3VnaCBKc29uYlZhbHVlVG9Kc29uYi4KKyAqIFdoZW4g dGhlIHNvbGUgYXJndW1lbnQgdG8gdGhlIGNhc3QgaXMgYSBqc29uYiBleHRyYWN0aW9uIGNhbGws IHdlIHJlcGxhY2UKKyAqIHRoZSB0d28tc3RlcCBjYXN0KGV4dHJhY3QoLi4uKSkgZXhwcmVzc2lv biB3aXRoIGEgc2luZ2xlIHR5cGVkIGV4dHJhY3RvcgorICogdGhhdCByZWFkcyB0aGUgc2NhbGFy IGRpcmVjdGx5IGZyb20gdGhlIGluLW1lbW9yeSBKc29uYlZhbHVlLCBhdm9pZGluZyBhCisgKiBy b3VuZC10cmlwIHRocm91Z2ggSnNvbmJWYWx1ZVRvSnNvbmIuCiAgKgotICogRm9yIGV4YW1wbGUs IChqIC0+ICdhJyk6Om51bWVyaWMgaXMgcGFyc2VkIGFzOgotICogICBqc29uYl9udW1lcmljKGpz b25iX29iamVjdF9maWVsZChqLCAnYScpKQotICogYW5kIGlzIHJld3JpdHRlbiB0bzoKLSAqICAg anNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoaiwgJ2EnKQorICogU3VwcG9ydGVkIGV4dHJhY3Rp b24gZmFtaWxpZXM6CisgKiAgIC0ganNvbmJfb2JqZWN0X2ZpZWxkKGosICdrZXknKSAgLyAgaiAt PiAna2V5JyAgLyAgalsna2V5J10KKyAqICAgLSBqc29uYl9hcnJheV9lbGVtZW50KGosIGlkeCkg ICAvICBqIC0+IGlkeCAgICAvICBqW2lkeF0KICAqLwogRGF0dW0KIGpzb25iX2Nhc3Rfc3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQpAQCAtMTg4NiwxMSArMTg4NSwxMiBAQCBqc29uYl9jYXN0X3N1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJewogCQkJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYg PSAoU3Vic2NyaXB0aW5nUmVmICopIGFyZzsKIAkJCU5vZGUJICAgKnN1YnNjcmlwdDsKKwkJCU9p ZAkJCXN1YnNjcmlwdF90eXBlOwogCiAJCQkvKgotCQkJICogT25seSBoYW5kbGUgdGhlIG5hcnJv dyBjYXNlIGVxdWl2YWxlbnQgdG8gb2JqZWN0LWZpZWxkCi0JCQkgKiBleHRyYWN0aW9uOiBhIHNp bmdsZSB0ZXh0LXR5cGVkIHN1YnNjcmlwdCBvbiBhIGpzb25iCi0JCQkgKiBjb250YWluZXIsIHdp dGggbm8gc2xpY2UgYW5kIG5vIGFzc2lnbm1lbnQuCisJCQkgKiBIYW5kbGUgc2luZ2xlLXN1YnNj cmlwdCBqc29uYiBhY2Nlc3Mgd2l0aCBubyBzbGljZSBhbmQgbm8KKwkJCSAqIGFzc2lnbm1lbnQu ICBUZXh0IHN1YnNjcmlwdHMgbWFwIHRvIG9iamVjdC1maWVsZCBleHRyYWN0aW9uOworCQkJICog aW50NCBzdWJzY3JpcHRzIG1hcCB0byBhcnJheS1lbGVtZW50IGV4dHJhY3Rpb24uCiAJCQkgKi8K IAkJCWlmIChzYnNyZWYtPnJlZmNvbnRhaW5lcnR5cGUgIT0gSlNPTkJPSUQpCiAJCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CkBAIC0xOTAyLDU3ICsxOTAyLDExMyBAQCBqc29uYl9jYXN0X3N1 cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAog CQkJc3Vic2NyaXB0ID0gKE5vZGUgKikgbGluaXRpYWwoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIp OwotCQkJaWYgKGV4cHJUeXBlKHN1YnNjcmlwdCkgIT0gVEVYVE9JRCkKKwkJCXN1YnNjcmlwdF90 eXBlID0gZXhwclR5cGUoc3Vic2NyaXB0KTsKKworCQkJaWYgKHN1YnNjcmlwdF90eXBlID09IFRF WFRPSUQpCisJCQl7CisJCQkJaW5uZXJfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTEQ7CisJ CQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIoc2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOwor CQkJfQorCQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCXsKKwkJCQlp bm5lcl9mdW5jaWQgPSBGX0pTT05CX0FSUkFZX0VMRU1FTlQ7CisJCQkJaW5uZXJfYXJncyA9IGxp c3RfbWFrZTIoc2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJfQorCQkJZWxzZQogCQkJ CVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCi0JCQlpbm5lcl9mdW5jaWQgPSBGX0pTT05CX09C SkVDVF9GSUVMRDsKLQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwg c3Vic2NyaXB0KTsKIAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKGFyZyk7CiAJCX0KIAkJZWxz ZQogCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAKLQkJLyogT25seSByZXdyaXRlIGpzb25i X29iamVjdF9maWVsZChqc29uYiwgdGV4dCk7IHZlcmlmeSBhcml0eSB0b28gKi8KLQkJaWYgKGlu bmVyX2Z1bmNpZCAhPSBGX0pTT05CX09CSkVDVF9GSUVMRCkKLQkJCVBHX1JFVFVSTl9QT0lOVEVS KE5VTEwpOworCQkvKgorCQkgKiBWZXJpZnkgdGhlIGlubmVyIGV4dHJhY3Rpb24gZnVuY3Rpb24g YW5kIG1hcCB0aGUgb3V0ZXIgY2FzdCB0byB0aGUKKwkJICogY29ycmVzcG9uZGluZyB0eXBlZCBl eHRyYWN0b3IuICBFYWNoIHN1cHBvcnRlZCBleHRyYWN0aW9uIGZhbWlseQorCQkgKiBoYXMgaXRz IG93biBzZXQgb2YgdHlwZWQgcmV3cml0ZSB0YXJnZXRzLgorCQkgKi8KIAkJaWYgKGxpc3RfbGVu Z3RoKGlubmVyX2FyZ3MpICE9IDIpCiAJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKIAotCQkv KiBNYXAgdGhlIG91dGVyIGNhc3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdHlwZWQgZXh0cmFjdG9y ICovCi0JCWlmIChmZXhwci0+ZnVuY2lkID09IEZfTlVNRVJJQ19KU09OQikKLQkJewotCQkJcmVw bGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfTlVNRVJJQzsKLQkJCXJlcGxh Y2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOwotCQl9Ci0JCWVsc2UgaWYgKGZleHByLT5mdW5j aWQgPT0gRl9CT09MX0pTT05CKQotCQl7Ci0JCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X09CSkVDVF9GSUVMRF9CT09MOwotCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEJPT0xPSUQ7Ci0J CX0KLQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDRfSlNPTkIpCisJCWlmIChpbm5l cl9mdW5jaWQgPT0gRl9KU09OQl9PQkpFQ1RfRklFTEQpCiAJCXsKLQkJCXJlcGxhY2VtZW50X2Z1 bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDQ7Ci0JCQlyZXBsYWNlbWVudF9yZXR0eXBl ID0gSU5UNE9JRDsKLQkJfQotCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UOF9KU09O QikKLQkJewotCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfSU5U ODsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOwotCQl9Ci0JCWVsc2UgaWYgKGZl eHByLT5mdW5jaWQgPT0gRl9GTE9BVDhfSlNPTkIpCi0JCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNp ZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0ZMT0FUODsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUg PSBGTE9BVDhPSUQ7Ci0JCX0KLQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDJfSlNP TkIpCi0JCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lO VDI7Ci0JCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UMk9JRDsKKwkJCWlmIChmZXhwci0+ZnVu Y2lkID09IEZfTlVNRVJJQ19KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBG X0pTT05CX09CSkVDVF9GSUVMRF9OVU1FUklDOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBO VU1FUklDT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0JPT0xfSlNP TkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERf Qk9PTDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gQk9PTE9JRDsKKwkJCX0KKwkJCWVsc2Ug aWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50 X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0 dHlwZSA9IElOVDRPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5U OF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9G SUVMRF9JTlQ4OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJ ZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBs YWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9GSUVMRF9GTE9BVDg7CisJCQkJcmVwbGFj ZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5j aWQgPT0gRl9JTlQyX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNP TkJfT0JKRUNUX0ZJRUxEX0lOVDI7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7 CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfRkxPQVQ0X0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0ZMT0FUNDsK KwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxzZQorCQkJ CVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCQl9Ci0JCWVsc2UgaWYgKGZleHByLT5mdW5jaWQg PT0gRl9GTE9BVDRfSlNPTkIpCisJCWVsc2UgaWYgKGlubmVyX2Z1bmNpZCA9PSBGX0pTT05CX0FS UkFZX0VMRU1FTlQpCiAJCXsKLQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNU X0ZJRUxEX0ZMT0FUNDsKLQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBGTE9BVDRPSUQ7CisJCQlp ZiAoZmV4cHItPmZ1bmNpZCA9PSBGX05VTUVSSUNfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1l bnRfZnVuY2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UX05VTUVSSUM7CisJCQkJcmVwbGFjZW1l bnRfcmV0dHlwZSA9IE5VTUVSSUNPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lk ID09IEZfQk9PTF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X0FSUkFZX0VMRU1FTlRfQk9PTDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gQk9PTE9JRDsK KwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQkJewor CQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9JTlQ0OworCQkJ CXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ0T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHIt PmZ1bmNpZCA9PSBGX0lOVDhfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0g Rl9KU09OQl9BUlJBWV9FTEVNRU5UX0lOVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElO VDhPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfRkxPQVQ4X0pTT05C KQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9G TE9BVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9JRDsKKwkJCX0KKwkJCWVs c2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2Vt ZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9JTlQyOworCQkJCXJlcGxhY2VtZW50 X3JldHR5cGUgPSBJTlQyT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBG X0ZMT0FUNF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0FS UkFZX0VMRU1FTlRfRkxPQVQ0OworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBGTE9BVDRPSUQ7 CisJCQl9CisJCQllbHNlCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAJCX0KIAkJZWxz ZQogCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK aW5kZXggYzI2MDU3N2Q4OTUuLmNjOWM1MWM1Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5j cy5jCkBAIC0xMTE0LDYgKzExMTQsNzMgQEAgREVGSU5FX0pTT05CX09CSkVDVF9GSUVMRF9UWVBF RChqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4LCBqc29uYl92YWx1ZV90b19mbG9hdDgKIERFRklO RV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2ZpZWxkX2ludDIsIGpzb25i X3ZhbHVlX3RvX2ludDJfZGF0dW0pCiBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGpz b25iX29iamVjdF9maWVsZF9mbG9hdDQsIGpzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bSkKIAor LyoKKyAqIExvb2sgdXAgYW4gZWxlbWVudCBieSBpbmRleCBpbiBhIGpzb25iIGFycmF5IGFuZCBy ZXR1cm4gdGhlIEpzb25iVmFsdWUsCisgKiBvciBOVUxMLiAgUmV0dXJucyBOVUxMICh3aXRob3V0 IGVycm9yKSB3aGVuIHRoZSBpbnB1dCBpcyBub3QgYW4gYXJyYXksCisgKiB0aGUgaW5kZXggaXMg b3V0IG9mIHJhbmdlLCBvciB0aGUgdmFsdWUgaXMgSlNPTiBudWxsLiAgSGFuZGxlcyBuZWdhdGl2 ZQorICogaW5kaWNlcyB0aGUgc2FtZSB3YXkgYXMganNvbmJfYXJyYXlfZWxlbWVudCgpLgorICov CitzdGF0aWMgSnNvbmJWYWx1ZSAqCitqc29uYl9hcnJheV9lbGVtZW50X2xvb2t1cChKc29uYiAq amIsIGludDMyIGVsZW1lbnQpCit7CisJSnNvbmJWYWx1ZSAqdjsKKworCWlmICghSkJfUk9PVF9J U19BUlJBWShqYikpCisJCXJldHVybiBOVUxMOworCisJLyogSGFuZGxlIG5lZ2F0aXZlIHN1YnNj cmlwdCAqLworCWlmIChlbGVtZW50IDwgMCkKKwl7CisJCXVpbnQzMgkJbmVsZW1lbnRzID0gSkJf Uk9PVF9DT1VOVChqYik7CisKKwkJaWYgKHBnX2Fic19zMzIoZWxlbWVudCkgPiBuZWxlbWVudHMp CisJCQlyZXR1cm4gTlVMTDsKKwkJZWxzZQorCQkJZWxlbWVudCArPSBuZWxlbWVudHM7CisJfQor CisJdiA9IGdldEl0aEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZqYi0+cm9vdCwgZWxlbWVudCk7 CisKKwkvKiBNaXNzaW5nIGluZGV4IG9yIEpTT04gbnVsbCBib3RoIG1hcCB0byBTUUwgTlVMTCAq LworCWlmICh2ID09IE5VTEwgfHwgdi0+dHlwZSA9PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsK KworCXJldHVybiB2OworfQorCisvKgorICogVGhpbi13cmFwcGVyIG1hY3JvIGZvciB0aGUganNv bmJfYXJyYXlfZWxlbWVudF88dHlwZT4gZXh0cmFjdG9yIGZhbWlseS4KKyAqIFNhbWUgcGF0dGVy biBhcyBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEIGJ1dCBmb3IgYXJyYXkgZWxlbWVu dHMuCisgKi8KKyNkZWZpbmUgREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoZm5hbWUs IGNvbnZmbikgXAorRGF0dW0gXAorZm5hbWUoUEdfRlVOQ1RJT05fQVJHUykgXAoreyBcCisJSnNv bmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7IFwKKwlpbnQzMgkJZWxlbWVudCA9IFBH X0dFVEFSR19JTlQzMigxKTsgXAorCUpzb25iVmFsdWUgKnY7IFwKKwlEYXR1bQkJcmVzdWx0OyBc CitcCisJdiA9IGpzb25iX2FycmF5X2VsZW1lbnRfbG9va3VwKGpiLCBlbGVtZW50KTsgXAorCWlm ICh2ID09IE5VTEwpIFwKKwl7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCQlQR19S RVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29udmZuKHYpOyBcCisJUEdfRlJF RV9JRl9DT1BZKGpiLCAwKTsgXAorCXJldHVybiByZXN1bHQ7IFwKK30KKworREVGSU5FX0pTT05C X0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9udW1lcmljLCBqc29uYl92 YWx1ZV90b19udW1lcmljX2RhdHVtKQorREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQo anNvbmJfYXJyYXlfZWxlbWVudF9ib29sLCBqc29uYl92YWx1ZV90b19ib29sX2RhdHVtKQorREVG SU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0LCBq c29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQorREVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQ RUQoanNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4LCBqc29uYl92YWx1ZV90b19pbnQ4X2RhdHVtKQor REVGSU5FX0pTT05CX0FSUkFZX0VMRU1FTlRfVFlQRUQoanNvbmJfYXJyYXlfZWxlbWVudF9mbG9h dDgsIGpzb25iX3ZhbHVlX3RvX2Zsb2F0OF9kYXR1bSkKK0RFRklORV9KU09OQl9BUlJBWV9FTEVN RU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1lbnRfaW50MiwganNvbmJfdmFsdWVfdG9faW50Ml9k YXR1bSkKK0RFRklORV9KU09OQl9BUlJBWV9FTEVNRU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1l bnRfZmxvYXQ0LCBqc29uYl92YWx1ZV90b19mbG9hdDRfZGF0dW0pCisKIERhdHVtCiBqc29uX2Fy cmF5X2VsZW1lbnQoUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDQwNmUwOGRmZmRkLi5hZDc1MmEwYTllMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC0xMjgwNyw1ICsxMjgwNywzMyBAQAogICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfZmllbGRf ZmxvYXQ0JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25i IHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixmaWVsZF9uYW1lfScsCiAgIHByb3Ny YyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCcgfSwKK3sgb2lkID0+ICc5OTYwJywgZGVz Y3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1lbnQgaW5kZXgn LAorICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X251bWVyaWMnLCBwcm9yZXR0eXBl ID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1l cyA9PiAne2Zyb21fanNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJfYXJy YXlfZWxlbWVudF9udW1lcmljJyB9LAoreyBvaWQgPT4gJzk5NjEnLCBkZXNjciA9PiAnZXh0cmFj dCBib29sZWFuIGZyb20ganNvbmIgYXJyYXkgYnkgZWxlbWVudCBpbmRleCcsCisgIHByb25hbWUg PT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfYm9vbCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBw cm9hcmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVs ZW1lbnRfaW5kZXh9JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Jvb2wnIH0s Cit7IG9pZCA9PiAnOTk2MicsIGRlc2NyID0+ICdleHRyYWN0IGludDQgZnJvbSBqc29uYiBhcnJh eSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9p bnQ0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0 JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sZWxlbWVudF9pbmRleH0nLAorICBwcm9zcmMg PT4gJ2pzb25iX2FycmF5X2VsZW1lbnRfaW50NCcgfSwKK3sgb2lkID0+ICc5OTYzJywgZGVzY3Ig PT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1lbnQgaW5kZXgnLAorICBw cm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2ludDgnLCBwcm9yZXR0eXBlID0+ICdpbnQ4 JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21f anNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9p bnQ4JyB9LAoreyBvaWQgPT4gJzk5NjQnLCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDggZnJvbSBq c29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlf ZWxlbWVudF9mbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLAorICBwcm9hcmd0eXBlcyA9 PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVsZW1lbnRfaW5kZXh9 JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCcgfSwKK3sgb2lkID0+ ICc5OTgyJywgZGVzY3IgPT4gJ2V4dHJhY3QgaW50MiBmcm9tIGpzb25iIGFycmF5IGJ5IGVsZW1l bnQgaW5kZXgnLAorICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2ludDInLCBwcm9y ZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmdu YW1lcyA9PiAne2Zyb21fanNvbixlbGVtZW50X2luZGV4fScsCisgIHByb3NyYyA9PiAnanNvbmJf YXJyYXlfZWxlbWVudF9pbnQyJyB9LAoreyBvaWQgPT4gJzk5ODMnLCBkZXNjciA9PiAnZXh0cmFj dCBmbG9hdDQgZnJvbSBqc29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKKyAgcHJvbmFtZSA9 PiAnanNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLAor ICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29u LGVsZW1lbnRfaW5kZXh9JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0 NCcgfSwKIAogXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9qc29uYi5vdXQKaW5kZXggYzMxZmIxMjBkZDguLjM2YmM4MjA5NWJlIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dApAQCAtOTM5LDYgKzkzOSwzMTQgQEAgRVJST1I6ICBpbnRlZ2Vy IG91dCBvZiByYW5nZQogLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93CiBTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwogRVJST1I6 ICBzbWFsbGludCBvdXQgb2YgcmFuZ2UKKy0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiBh cnJheS1lbGVtZW50IGZhbWlseQorLS0gVGhlIHBsYW5uZXIgcmV3cml0ZXMgKGotPmlkeCk6OnR5 cGUgYW5kIChqW2lkeF0pOjp0eXBlIGludG8gZGlyZWN0CistLSB0eXBlZCBleHRyYWN0b3IgY2Fs bHMgZm9yIHRoZSBzYW1lIHRhcmdldCB0eXBlcyBhcyB0aGUgb2JqZWN0LWZpZWxkIGZhbWlseS4K Ky0tIENyZWF0ZSBhIHNtYWxsIGZpeHR1cmUgd2l0aCB0eXBlZCBhcnJheSBlbGVtZW50cyBmb3Ig dGVzdGluZworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9qc29uYl9hcnIgKHRlc3RfYXJyIGpzb25i KTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfYXJyIFZBTFVFUyAoJ1sxMCwgMi41LCB0cnVlLCBu dWxsLCAiaGVsbG8iLCBbMSwyXSwgeyJrIjoxfV0nKTsKKy0tIFNlY3Rpb24gQTE6IHBsYW5uZXIg cmV3cml0ZSB2ZXJpZmljYXRpb24gKGFycmF5IGVsZW1lbnQsIG9wZXJhdG9yIGZvcm0pCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6Om51bWVyaWMg RlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBP dXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfbnVtZXJpYyh0ZXN0X2FyciwgMCkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6 aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91 dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KHRlc3RfYXJyLCAwKQorKDIgcm93cykKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9h dDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgorICAg T3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCh0ZXN0X2FyciwgMSkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAyKTo6 Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91 dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9ib29sKHRlc3RfYXJyLCAyKQorKDIgcm93cykKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ4 IEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgorICAgT3V0cHV0 OiBqc29uYl9hcnJheV9lbGVtZW50X2ludDgodGVzdF9hcnIsIDApCisoMiByb3dzKQorCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIgRlJP TSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBPdXRwdXQ6IGpz b25iX2FycmF5X2VsZW1lbnRfaW50Mih0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00g dGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDog anNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQodGVzdF9hcnIsIDEpCisoMiByb3dzKQorCistLSBT ZWN0aW9uIEExYjogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoYXJyYXkgc3Vic2NyaXB0 aW5nIGZvcm0pCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJb MF0pOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pz b25iX2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X251bWVyaWModGVzdF9hcnIs IDApCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVz dF9hcnJbMF0pOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7CisgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25i X2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2ludDQodGVzdF9hcnIsIDApCiso MiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJb MV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25i X2FycgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCh0ZXN0X2FyciwgMSkK KygyIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2Fy clsyXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJy CisgICBPdXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfYm9vbCh0ZXN0X2FyciwgMikKKygyIHJv d3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6 OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBP dXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCh0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclswXSk6OmludDIg RlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJfYXJyCisgICBPdXRwdXQ6 IGpzb25iX2FycmF5X2VsZW1lbnRfaW50Mih0ZXN0X2FyciwgMCkKKygyIHJvd3MpCisKKy0tIFNl Y3Rpb24gQTFjOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rpb24g Y2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX2Fy cmF5X2VsZW1lbnQodGVzdF9hcnIsIDApKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 KHRlc3RfYXJyLCAwKQorKDIgcm93cykKKworLS0gU2VjdGlvbiBBMjogY29ycmVjdCBleGVjdXRp b24gdGhyb3VnaCByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworIGludDQgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKKyBpbnQ4IAor LS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjpudW1lcmlj IEZST00gdGVzdF9qc29uYl9hcnI7CisgbnVtZXJpYyAKKy0tLS0tLS0tLQorICAgICAgMTAKKygx IHJvdykKKworU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9h cnI7CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAyLjUKKygxIHJvdykKKworU0VMRUNUICh0ZXN0 X2FyciAtPiAyKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOworIGJvb2wgCistLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIgRlJPTSB0ZXN0X2pzb25i X2FycjsKKyBpbnQyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfYXJy IC0+IDEpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsKKyBmbG9hdDQgCistLS0tLS0tLQor ICAgIDIuNQorKDEgcm93KQorCistLSBTZWN0aW9uIEEyYjogY29ycmVjdCBleGVjdXRpb24gdGhy b3VnaCBzdWJzY3JpcHRpbmcKK1NFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7CisgdGVzdF9hcnIgCistLS0tLS0tLS0tCisgICAgICAgMTAKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2FyclsxXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmJfYXJyOworIHRlc3Rf YXJyIAorLS0tLS0tLS0tLQorICAgICAgMi41CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnJb Ml0pOjpib29sIEZST00gdGVzdF9qc29uYl9hcnI7CisgdGVzdF9hcnIgCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSBTZWN0aW9uIEEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUICh0ZXN0 X2FyciAtPiA5OSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQor IGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gMyk6 Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpTT04gbnVsbCBlbGVtZW50CisgbnVt ZXJpYyAKKy0tLS0tLS0tLQorICAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2FyciAt PiAtMSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG5lZ2F0aXZlOiBsYXN0IGVsZW1l bnQgaXMgb2JqZWN0LCB3cm9uZyB0eXBlIHdvdWxkIGVycm9yOyB1c2UgLTQgZm9yIG51bGwKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgaW50ZWdlcgor U0VMRUNUICh0ZXN0X2FyciAtPiAtNCk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IG5lZ2F0aXZlIGluZGV4IHBvaW50aW5nIHRvIG51bGwgZWxlbWVudAorIG51bWVyaWMgCistLS0t LS0tLS0KKyAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAoJ3siayI6MX0nOjpqc29uYiAtPiAw KTo6aW50NDsgIC0tIG5vbi1hcnJheSBpbnB1dAorIGludDQgCistLS0tLS0KKyAgICAgCisoMSBy b3cpCisKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBvdXQgb2YgcmFuZ2UsIGludDIKKyBpbnQyIAorLS0tLS0tCisgICAgIAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDMpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IEpTT04gbnVsbCBlbGVtZW50LCBmbG9hdDQKKyBmbG9hdDQgCistLS0tLS0tLQorICAgICAgIAor KDEgcm93KQorCistLSBTZWN0aW9uIEEzYjogTlVMTCB0aHJvdWdoIHN1YnNjcmlwdGluZworU0VM RUNUICh0ZXN0X2Fycls5OV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBv ZiByYW5nZQorIHRlc3RfYXJyIAorLS0tLS0tLS0tLQorICAgICAgICAgCisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9hcnJbM10pOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBKU09OIG51 bGwgZWxlbWVudAorIHRlc3RfYXJyIAorLS0tLS0tLS0tLQorICAgICAgICAgCisoMSByb3cpCisK Ky0tIFNlY3Rpb24gQTQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1QgKHRlc3RfYXJyIC0+ IDQpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBzdHJpbmcgdG8gaW50NAorRVJST1I6 ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCitTRUxFQ1QgKHRlc3Rf YXJyIC0+IDQpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9h dDgKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgZG91YmxlIHByZWNp c2lvbgorU0VMRUNUICh0ZXN0X2FyciAtPiA1KTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJy OyAgLS0gYXJyYXkgY29udGFpbmVyIHRvIG51bWVyaWMKK0VSUk9SOiAgY2Fubm90IGNhc3QganNv bmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUICh0ZXN0X2FyciAtPiA2 KTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gb2JqZWN0IGNvbnRhaW5lciB0byBpbnQ4 CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIGJpZ2lu dAorU0VMRUNUICh0ZXN0X2FyciAtPiAyKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0g Ym9vbCB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGJvb2xlYW4gdG8gdHlwZSBp bnRlZ2VyCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDQpOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBzdHJpbmcgdG8gaW50MgorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8g dHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0X2FyciAtPiA0KTo6ZmxvYXQ0IEZST00gdGVzdF9q c29uYl9hcnI7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIHJlYWwKKy0tIFNlY3Rpb24gQTRiOiBlcnJvciB0aHJvdWdoIHN1YnNj cmlwdGluZworU0VMRUNUICh0ZXN0X2Fycls0XSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2Fycjsg IC0tIHN0cmluZyB0byBpbnQ4CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0 eXBlIGJpZ2ludAorLS0gU2VjdGlvbiBBNTogZGlyZWN0IGNhbGxzIHRvIGFycmF5LWVsZW1lbnQg dHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 KCdbMTAsIDIwLCAzMF0nOjpqc29uYiwgMCk7CisganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgMTAKKygx IHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCgnWzEwLCAyMCwgMzBdJzo6 anNvbmIsIDEpOworIGpzb25iX2FycmF5X2VsZW1lbnRfaW50OCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBq c29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCgnWzEuNSwgMi41XSc6Ompzb25iLCAwKTsKKyBqc29u Yl9hcnJheV9lbGVtZW50X2Zsb2F0OCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgIDEuNQorKDEgcm93KQorCitTRUxFQ1QganNvbmJfYXJyYXlf ZWxlbWVudF9udW1lcmljKCdbMy4xNF0nOjpqc29uYiwgMCk7CisganNvbmJfYXJyYXlfZWxlbWVu dF9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfYm9v bCgnW3RydWUsIGZhbHNlXSc6Ompzb25iLCAxKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2Jvb2wg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gZGlyZWN0IGNh bGxzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEs IDJdJzo6anNvbmIsIDUpOyAgLS0gb3V0IG9mIHJhbmdlCisganNvbmJfYXJyYXlfZWxlbWVudF9p bnQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEsIG51bGws IDNdJzo6anNvbmIsIDEpOyAgLS0gSlNPTiBudWxsCisganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ4KCd7ImEiOjF9Jzo6 anNvbmIsIDApOyAgLS0gbm9uLWFycmF5CisganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworLS0gZGlyZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNU IGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWyJ0ZXh0Il0nOjpqc29uYiwgMCk7CitFUlJPUjog IGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCBqc29uYl9h cnJheV9lbGVtZW50X2ludDgoJ1t0cnVlXSc6Ompzb25iLCAwKTsKK0VSUk9SOiAgY2Fubm90IGNh c3QganNvbmIgYm9vbGVhbiB0byB0eXBlIGJpZ2ludAorU0VMRUNUIGpzb25iX2FycmF5X2VsZW1l bnRfZmxvYXQ4KCdbWzEsMl1dJzo6anNvbmIsIDApOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAor RVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUg cHJlY2lzaW9uCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAsIDIwXSc6Ompz b25iLCAwKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxMAorKDEgcm93KQorCitTRUxFQ1QganNv bmJfYXJyYXlfZWxlbWVudF9mbG9hdDQoJ1szLjE0LCAyLjVdJzo6anNvbmIsIDEpOworIGpzb25i X2FycmF5X2VsZW1lbnRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgMi41CisoMSByb3cpCisKIFNFTEVDVCB0ZXN0X2pzb24gLT4g J3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKICA/Y29sdW1u PyAKIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAppbmRleCA2MWM1NjcxMTBmYy4uNjlj MjE3NzZmODQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTI3Myw2ICsyNzMsOTEgQEAgU0VM RUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7ImEiOiA5OTk5OTk5OTk5fSc6Ompzb25iLCAn YScpOwogLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93CiBTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwogCistLSBPcHRpbWl6ZWQg dHlwZWQgZXh0cmFjdGlvbjogYXJyYXktZWxlbWVudCBmYW1pbHkKKy0tIFRoZSBwbGFubmVyIHJl d3JpdGVzIChqLT5pZHgpOjp0eXBlIGFuZCAoaltpZHhdKTo6dHlwZSBpbnRvIGRpcmVjdAorLS0g dHlwZWQgZXh0cmFjdG9yIGNhbGxzIGZvciB0aGUgc2FtZSB0YXJnZXQgdHlwZXMgYXMgdGhlIG9i amVjdC1maWVsZCBmYW1pbHkuCisKKy0tIENyZWF0ZSBhIHNtYWxsIGZpeHR1cmUgd2l0aCB0eXBl ZCBhcnJheSBlbGVtZW50cyBmb3IgdGVzdGluZworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9qc29u Yl9hcnIgKHRlc3RfYXJyIGpzb25iKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfYXJyIFZBTFVF UyAoJ1sxMCwgMi41LCB0cnVlLCBudWxsLCAiaGVsbG8iLCBbMSwyXSwgeyJrIjoxfV0nKTsKKwor LS0gU2VjdGlvbiBBMTogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoYXJyYXkgZWxlbWVu dCwgb3BlcmF0b3IgZm9ybSkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2FyciAtPiAwKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIg LT4gMSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjpib29sIEZST00gdGVzdF9qc29uYl9hcnI7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6Omlu dDggRlJPTSB0ZXN0X2pzb25iX2FycjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9hdDQgRlJPTSB0 ZXN0X2pzb25iX2FycjsKKworLS0gU2VjdGlvbiBBMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmlj YXRpb24gKGFycmF5IHN1YnNjcmlwdGluZyBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6aW50NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfYXJyWzFdKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMl0pOjpib29sIEZST00gdGVzdF9qc29u Yl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0p OjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7CisKKy0tIFNl Y3Rpb24gQTFjOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rpb24g Y2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX2Fy cmF5X2VsZW1lbnQodGVzdF9hcnIsIDApKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOworCist LSBTZWN0aW9uIEEyOiBjb3JyZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdHRlbiBwYXRoCitT RUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1Qg KHRlc3RfYXJyIC0+IDApOjppbnQ4IEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3Rf YXJyIC0+IDApOjpudW1lcmljIEZST00gdGVzdF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJy IC0+IDEpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4g Mik6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4gMCk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iX2FycjsKK1NFTEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0NCBG Uk9NIHRlc3RfanNvbmJfYXJyOworCistLSBTZWN0aW9uIEEyYjogY29ycmVjdCBleGVjdXRpb24g dGhyb3VnaCBzdWJzY3JpcHRpbmcKK1NFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0IEZST00gdGVz dF9qc29uYl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJyWzFdKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29u Yl9hcnI7CitTRUxFQ1QgKHRlc3RfYXJyWzJdKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOwor CistLSBTZWN0aW9uIEEzOiBOVUxMIHNlbWFudGljcworU0VMRUNUICh0ZXN0X2FyciAtPiA5OSk6 OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQorU0VMRUNUICh0ZXN0 X2FyciAtPiAzKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gSlNPTiBudWxsIGVs ZW1lbnQKK1NFTEVDVCAodGVzdF9hcnIgLT4gLTEpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBuZWdhdGl2ZTogbGFzdCBlbGVtZW50IGlzIG9iamVjdCwgd3JvbmcgdHlwZSB3b3VsZCBl cnJvcjsgdXNlIC00IGZvciBudWxsCitTRUxFQ1QgKHRlc3RfYXJyIC0+IC00KTo6bnVtZXJpYyBG Uk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gbmVnYXRpdmUgaW5kZXggcG9pbnRpbmcgdG8gbnVsbCBl bGVtZW50CitTRUxFQ1QgKCd7ImsiOjF9Jzo6anNvbmIgLT4gMCk6OmludDQ7ICAtLSBub24tYXJy YXkgaW5wdXQKK1NFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00gdGVzdF9qc29uYl9h cnI7ICAtLSBvdXQgb2YgcmFuZ2UsIGludDIKK1NFTEVDVCAodGVzdF9hcnIgLT4gMyk6OmZsb2F0 NCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gSlNPTiBudWxsIGVsZW1lbnQsIGZsb2F0NAorCist LSBTZWN0aW9uIEEzYjogTlVMTCB0aHJvdWdoIHN1YnNjcmlwdGluZworU0VMRUNUICh0ZXN0X2Fy cls5OV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiByYW5nZQorU0VM RUNUICh0ZXN0X2FyclszXSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpTT04gbnVs bCBlbGVtZW50CisKKy0tIFNlY3Rpb24gQTQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1Qg KHRlc3RfYXJyIC0+IDQpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBzdHJpbmcgdG8g aW50NAorU0VMRUNUICh0ZXN0X2FyciAtPiA0KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7 ICAtLSBzdHJpbmcgdG8gZmxvYXQ4CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDUpOjpudW1lcmljIEZS T00gdGVzdF9qc29uYl9hcnI7ICAtLSBhcnJheSBjb250YWluZXIgdG8gbnVtZXJpYworU0VMRUNU ICh0ZXN0X2FyciAtPiA2KTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gb2JqZWN0IGNv bnRhaW5lciB0byBpbnQ4CitTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjppbnQ0IEZST00gdGVzdF9q c29uYl9hcnI7ICAtLSBib29sIHRvIGludDQKK1NFTEVDVCAodGVzdF9hcnIgLT4gNCk6OmludDIg RlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBpbnQyCitTRUxFQ1QgKHRlc3RfYXJy IC0+IDQpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9hdDQK KworLS0gU2VjdGlvbiBBNGI6IGVycm9yIHRocm91Z2ggc3Vic2NyaXB0aW5nCitTRUxFQ1QgKHRl c3RfYXJyWzRdKTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRvIGludDgK KworLS0gU2VjdGlvbiBBNTogZGlyZWN0IGNhbGxzIHRvIGFycmF5LWVsZW1lbnQgdHlwZWQgZXh0 cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KCdbMTAsIDIw LCAzMF0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4KCdbMTAs IDIwLCAzMF0nOjpqc29uYiwgMSk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDgo J1sxLjUsIDIuNV0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9udW1l cmljKCdbMy4xNF0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9ib29s KCdbdHJ1ZSwgZmFsc2VdJzo6anNvbmIsIDEpOworLS0gZGlyZWN0IGNhbGxzOiBOVUxMIHNlbWFu dGljcworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWzEsIDJdJzo6anNvbmIsIDUp OyAgLS0gb3V0IG9mIHJhbmdlCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ0KCdbMSwg bnVsbCwgM10nOjpqc29uYiwgMSk7ICAtLSBKU09OIG51bGwKK1NFTEVDVCBqc29uYl9hcnJheV9l bGVtZW50X2Zsb2F0OCgneyJhIjoxfSc6Ompzb25iLCAwKTsgIC0tIG5vbi1hcnJheQorLS0gZGly ZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25iX2FycmF5X2VsZW1l bnRfaW50NCgnWyJ0ZXh0Il0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVu dF9pbnQ4KCdbdHJ1ZV0nOjpqc29uYiwgMCk7CitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9m bG9hdDgoJ1tbMSwyXV0nOjpqc29uYiwgMCk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ4CitTRUxF Q1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAsIDIwXSc6Ompzb25iLCAwKTsKK1NFTEVD VCBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0NCgnWzMuMTQsIDIuNV0nOjpqc29uYiwgMSk7CisK KwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0tIAoyLjUyLjAKCg== --0000000000006dce3d06506a04a1 Content-Type: application/octet-stream; name="v5-0003-jsonb-optimize-extract-path-casts-to-scalar-types.patch" Content-Disposition: attachment; filename="v5-0003-jsonb-optimize-extract-path-casts-to-scalar-types.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mogqanh92 RnJvbSAwNGU3MzhiNDZhZGRhNGY5ZWRiOTQ4Y2Y1NzI5MDkxZjg1YWM5ODMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IEZyaSwgMTAgQXByIDIwMjYgMTI6MDg6MjUgLTA3MDAKU3ViamVjdDogW1BBVENIIHY1IDMvNV0g anNvbmI6IG9wdGltaXplIGV4dHJhY3QtcGF0aCBjYXN0cyB0byBzY2FsYXIgdHlwZXMKCkV4dGVu ZCB0aGUgZXhpc3Rpbmcgc3VwcG9ydC1mdW5jdGlvbiByZXdyaXRlIHRvIGpzb25iIGV4dHJhY3Qt cGF0aApvcGVyYXRpb25zLCBpbmNsdWRpbmcgYm90aCAjPiBhbmQgZGlyZWN0IGpzb25iX2V4dHJh Y3RfcGF0aCguLi4pCmNhbGxzLgoKU3VwcG9ydGVkIGNhc3RzIGFyZSByZXdyaXR0ZW4gZGlyZWN0 bHkgdG8gZXhwbGljaXQgdHlwZWQgZXh0cmFjdG9yCmZ1bmN0aW9ucyBmb3IgbnVtZXJpYywgYm9v bCwgaW50MiwgaW50NCwgaW50OCwgZmxvYXQ0LCBhbmQgZmxvYXQ4LgotLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jICAgICAgIHwgIDQzICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25mdW5jcy5jICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgIHwgIDMxICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvanNvbmIub3V0IHwgMjI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDYxICsrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDU0NiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25iLmMKaW5kZXggNWFiYjUxZDQ3ZGEuLjdlYmE0MzdiOGE0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIu YwpAQCAtMTgzNCw2ICsxODM0LDcgQEAgY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBl IHR5cGUsIGNvbnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKICAqIFN1cHBvcnRl ZCBleHRyYWN0aW9uIGZhbWlsaWVzOgogICogICAtIGpzb25iX29iamVjdF9maWVsZChqLCAna2V5 JykgIC8gIGogLT4gJ2tleScgIC8gIGpbJ2tleSddCiAgKiAgIC0ganNvbmJfYXJyYXlfZWxlbWVu dChqLCBpZHgpICAgLyAgaiAtPiBpZHggICAgLyAgaltpZHhdCisgKiAgIC0ganNvbmJfZXh0cmFj dF9wYXRoKGosIC4uLikgICAgLyAgaiAjPiAne2EsYn0nCiAgKi8KIERhdHVtCiBqc29uYl9jYXN0 X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKQEAgLTIwMTAsNiArMjAxMSw0NiBAQCBqc29uYl9j YXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWVsc2UKIAkJCQlQR19SRVRVUk5fUE9J TlRFUihOVUxMKTsKIAkJfQorCQllbHNlIGlmIChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9FWFRS QUNUX1BBVEgpCisJCXsKKwkJCWlmIChmZXhwci0+ZnVuY2lkID09IEZfTlVNRVJJQ19KU09OQikK KwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0VYVFJBQ1RfUEFUSF9OVU1F UklDOworCQkJCXJlcGxhY2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOworCQkJfQorCQkJZWxz ZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0JPT0xfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1l bnRfZnVuY2lkID0gRl9KU09OQl9FWFRSQUNUX1BBVEhfQk9PTDsKKwkJCQlyZXBsYWNlbWVudF9y ZXR0eXBlID0gQk9PTE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9J TlQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFD VF9QQVRIX0lOVDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDRPSUQ7CisJCQl9CisJ CQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UOF9KU09OQikKKwkJCXsKKwkJCQlyZXBs YWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX0VYVFJBQ1RfUEFUSF9JTlQ4OworCQkJCXJlcGxhY2Vt ZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9 PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X0VYVFJBQ1RfUEFUSF9GTE9BVDg7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUOE9J RDsKKwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRIX0lOVDI7CisJ CQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhw ci0+ZnVuY2lkID09IEZfRkxPQVQ0X0pTT05CKQorCQkJeworCQkJCXJlcGxhY2VtZW50X2Z1bmNp ZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRIX0ZMT0FUNDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBl ID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxzZQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwp OworCQl9CiAJCWVsc2UKIAkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCkBAIC0yMjQxLDQg KzIyODIsNCBAQCBKc29uYlVucXVvdGUoSnNvbmIgKmpiKQogCX0KIAllbHNlCiAJCXJldHVybiBK c29uYlRvQ1N0cmluZyhOVUxMLCAmamItPnJvb3QsIFZBUlNJWkUoamIpKTsKLX0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggY2M5 YzUxYzVjYmYuLmIzZmQxZGZiNjMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC0x MDYwLDcgKzEwNjAsNiBAQCBqc29uYl92YWx1ZV90b19mbG9hdDhfZGF0dW0oSnNvbmJWYWx1ZSAq dikKIAogCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfZmxvYXQ4LCBOdW1lcmlj R2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKIH0KLQogc3RhdGljIERhdHVtCiBqc29uYl92YWx1 ZV90b19pbnQyX2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CkBAIC0xMTgxLDYgKzExODAsMTkxIEBA IERFRklORV9KU09OQl9BUlJBWV9FTEVNRU5UX1RZUEVEKGpzb25iX2FycmF5X2VsZW1lbnRfZmxv YXQ4LCBqc29uYl92YWx1ZV90b19mbG9hCiBERUZJTkVfSlNPTkJfQVJSQVlfRUxFTUVOVF9UWVBF RChqc29uYl9hcnJheV9lbGVtZW50X2ludDIsIGpzb25iX3ZhbHVlX3RvX2ludDJfZGF0dW0pCiBE RUZJTkVfSlNPTkJfQVJSQVlfRUxFTUVOVF9UWVBFRChqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0 NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2RhdHVtKQogCisvKgorICogV2FsayBhIHRleHRbXSBw YXRoIHRocm91Z2ggYSBqc29uYiB2YWx1ZSBhbmQgcmV0dXJuIHRoZSBsZWFmIEpzb25iVmFsdWUs CisgKiBvciBOVUxMLiAgUmV0dXJucyBOVUxMIHdoZW4gYSBwYXRoIGVsZW1lbnQgaXMgbWlzc2lu ZywgdGhlIGxlYWYgaXMgSlNPTgorICogbnVsbCwgb3IgdGhlIHBhdGggYXJyYXkgY29udGFpbnMg bnVsbCBlbGVtZW50cy4KKyAqCisgKiBGb3IgYW4gZW1wdHkgcGF0aCwgcmV0dXJucyB0aGUgcm9v dCB2YWx1ZSBpdHNlbGYgKGFzIGEgamJ2QmluYXJ5IGZvcgorICogY29udGFpbmVycywgb3IgdGhl IHVud3JhcHBlZCBzY2FsYXIgZm9yIHNjYWxhciBqc29uYikuICBUaGUgY2FsbGVyJ3MKKyAqIGNv bnZlcnNpb24gaGVscGVyIHRoZW4gZGVjaWRlcyB3aGV0aGVyIHRvIGFjY2VwdCBvciByZWplY3Qg dGhlIHR5cGUuCisgKgorICogRm9yIGFycmF5cywgcGF0aCBlbGVtZW50cyBhcmUgcGFyc2VkIGFz IGludGVnZXJzIChtYXRjaGluZyB0aGUgZXhpc3RpbmcKKyAqIGpzb25iX2V4dHJhY3RfcGF0aCAv IGpzb25iX2dldF9lbGVtZW50IHRyYXZlcnNhbCBzZW1hbnRpY3MpLgorICovCitzdGF0aWMgSnNv bmJWYWx1ZSAqCitqc29uYl9leHRyYWN0X3BhdGhfbG9va3VwKEpzb25iICpqYiwgQXJyYXlUeXBl ICpwYXRoLCBKc29uYlZhbHVlICp2YnVmKQoreworCURhdHVtCSAgICpwYXRodGV4dDsKKwlpbnQJ CQlucGF0aDsKKwlKc29uYkNvbnRhaW5lciAqY29udGFpbmVyID0gJmpiLT5yb290OworCUpzb25i VmFsdWUgKmpidnAgPSBOVUxMOworCWJvb2wJCWhhdmVfb2JqZWN0LAorCQkJCWhhdmVfYXJyYXk7 CisJaW50CQkJaTsKKworCS8qIElmIHRoZSBwYXRoIGFycmF5IGNvbnRhaW5zIGFueSBudWxscywg cmV0dXJuIE5VTEwgKi8KKwlpZiAoYXJyYXlfY29udGFpbnNfbnVsbHMocGF0aCkpCisJCXJldHVy biBOVUxMOworCisJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAmcGF0 aHRleHQsIE5VTEwsICZucGF0aCk7CisKKwkvKiBJZGVudGlmeSB0b3AtbGV2ZWwgY29udGFpbmVy IHR5cGUgKi8KKwlpZiAoSkJfUk9PVF9JU19PQkpFQ1QoamIpKQorCXsKKwkJaGF2ZV9vYmplY3Qg PSB0cnVlOworCQloYXZlX2FycmF5ID0gZmFsc2U7CisJfQorCWVsc2UgaWYgKEpCX1JPT1RfSVNf QVJSQVkoamIpICYmICFKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQloYXZlX29iamVjdCA9 IGZhbHNlOworCQloYXZlX2FycmF5ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KEpC X1JPT1RfSVNfQVJSQVkoamIpICYmIEpCX1JPT1RfSVNfU0NBTEFSKGpiKSk7CisKKwkJLyogRm9y IGEgc2NhbGFyIHJvb3Qgd2l0aCBhbiBlbXB0eSBwYXRoLCByZXR1cm4gdGhlIHNjYWxhciBpdHNl bGYgKi8KKwkJaWYgKG5wYXRoIDw9IDApCisJCXsKKwkJCWpidnAgPSBnZXRJdGhKc29uYlZhbHVl RnJvbUNvbnRhaW5lcihjb250YWluZXIsIDApOworCQkJaWYgKGpidnAgPT0gTlVMTCB8fCBqYnZw LT50eXBlID09IGpidk51bGwpCisJCQkJcmV0dXJuIE5VTEw7CisJCQlyZXR1cm4gamJ2cDsKKwkJ fQorCisJCS8qIE5vbi1lbXB0eSBwYXRoIGludG8gYSBzY2FsYXIgeWllbGRzIE5VTEwgKi8KKwkJ cmV0dXJuIE5VTEw7CisJfQorCisJLyoKKwkgKiBGb3IgYW4gZW1wdHkgcGF0aCBvbiBhIGNvbnRh aW5lciByb290LCByZXR1cm4gdGhlIGNvbnRhaW5lciBhcyBhCisJICogamJ2QmluYXJ5IHZhbHVl LiAgVGhlIGNvbnZlcnNpb24gaGVscGVyIHdpbGwgcmVqZWN0IGl0IHdpdGggdGhlCisJICogdXN1 YWwgImNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCIgZXJyb3IuCisJICovCisJaWYg KG5wYXRoIDw9IDApCisJeworCQl2YnVmLT50eXBlID0gamJ2QmluYXJ5OworCQl2YnVmLT52YWwu YmluYXJ5LmRhdGEgPSBjb250YWluZXI7CisJCXZidWYtPnZhbC5iaW5hcnkubGVuID0gVkFSU0la RShqYikgLSBWQVJIRFJTWjsKKwkJcmV0dXJuIHZidWY7CisJfQorCisJZm9yIChpID0gMDsgaSA8 IG5wYXRoOyBpKyspCisJeworCQlpZiAoaGF2ZV9vYmplY3QpCisJCXsKKwkJCXRleHQJICAgKnN1 YnNjciA9IERhdHVtR2V0VGV4dFBQKHBhdGh0ZXh0W2ldKTsKKworCQkJamJ2cCA9IGdldEtleUpz b25WYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVyLAorCQkJCQkJCQkJCQkJVkFSREFUQV9BTlko c3Vic2NyKSwKKwkJCQkJCQkJCQkJCVZBUlNJWkVfQU5ZX0VYSERSKHN1YnNjciksCisJCQkJCQkJ CQkJCQlOVUxMKTsKKwkJfQorCQllbHNlIGlmIChoYXZlX2FycmF5KQorCQl7CisJCQlpbnQJCQls aW5kZXg7CisJCQl1aW50MzIJCWluZGV4OworCQkJY2hhcgkgICAqaW5kZXh0ZXh0ID0gVGV4dERh dHVtR2V0Q1N0cmluZyhwYXRodGV4dFtpXSk7CisJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCWVy cm5vID0gMDsKKwkJCWxpbmRleCA9IHN0cnRvaW50KGluZGV4dGV4dCwgJmVuZHB0ciwgMTApOwor CQkJaWYgKGVuZHB0ciA9PSBpbmRleHRleHQgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9 IDApCisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCWlmIChsaW5kZXggPj0gMCkKKwkJCXsKKwkJCQlp bmRleCA9ICh1aW50MzIpIGxpbmRleDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQl1aW50MzIJ CW5lbGVtZW50czsKKworCQkJCWlmICghSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKSkK KwkJCQkJZWxvZyhFUlJPUiwgIm5vdCBhIGpzb25iIGFycmF5Iik7CisKKwkJCQluZWxlbWVudHMg PSBKc29uQ29udGFpbmVyU2l6ZShjb250YWluZXIpOworCisJCQkJaWYgKGxpbmRleCA9PSBJTlRf TUlOIHx8IC1saW5kZXggPiBuZWxlbWVudHMpCisJCQkJCXJldHVybiBOVUxMOworCQkJCWVsc2UK KwkJCQkJaW5kZXggPSBuZWxlbWVudHMgKyBsaW5kZXg7CisJCQl9CisKKwkJCWpidnAgPSBnZXRJ dGhKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsIGluZGV4KTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qIHNjYWxhcjogY2Fubm90IHRyYXZlcnNlIGZ1cnRoZXIgKi8KKwkJCXJldHVy biBOVUxMOworCQl9CisKKwkJaWYgKGpidnAgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxMOworCisJ CS8qIElmIHRoaXMgaXMgdGhlIGxhc3QgcGF0aCBlbGVtZW50LCB3ZSBoYXZlIG91ciBsZWFmICov CisJCWlmIChpID09IG5wYXRoIC0gMSkKKwkJCWJyZWFrOworCisJCS8qIERlc2NlbmQgaW50byB0 aGUgbmV4dCBjb250YWluZXIgbGV2ZWwgKi8KKwkJaWYgKGpidnAtPnR5cGUgPT0gamJ2QmluYXJ5 KQorCQl7CisJCQljb250YWluZXIgPSBqYnZwLT52YWwuYmluYXJ5LmRhdGE7CisJCQloYXZlX29i amVjdCA9IEpzb25Db250YWluZXJJc09iamVjdChjb250YWluZXIpOworCQkJaGF2ZV9hcnJheSA9 IEpzb25Db250YWluZXJJc0FycmF5KGNvbnRhaW5lcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KiBzY2FsYXIgYXQgaW50ZXJtZWRpYXRlIHN0ZXA6IG5vIGZ1cnRoZXIgdHJhdmVyc2FsICovCisJ CQloYXZlX29iamVjdCA9IGZhbHNlOworCQkJaGF2ZV9hcnJheSA9IGZhbHNlOworCQl9CisJfQor CisJLyogTWlzc2luZyB2YWx1ZSBvciBKU09OIG51bGwgYm90aCBtYXAgdG8gU1FMIE5VTEwgKi8K KwlpZiAoamJ2cCA9PSBOVUxMIHx8IGpidnAtPnR5cGUgPT0gamJ2TnVsbCkKKwkJcmV0dXJuIE5V TEw7CisKKwlyZXR1cm4gamJ2cDsKK30KKworLyoKKyAqIFRoaW4td3JhcHBlciBtYWNybyBmb3Ig dGhlIGpzb25iX2V4dHJhY3RfcGF0aF88dHlwZT4gZXh0cmFjdG9yIGZhbWlseS4KKyAqIFNhbWUg cGF0dGVybiBhcyB0aGUgb2JqZWN0LWZpZWxkIGFuZCBhcnJheS1lbGVtZW50IHdyYXBwZXIgbWFj cm9zLgorICovCisjZGVmaW5lIERFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQRUQoZm5hbWUs IGNvbnZmbikgXAorRGF0dW0gXAorZm5hbWUoUEdfRlVOQ1RJT05fQVJHUykgXAoreyBcCisJSnNv bmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7IFwKKwlBcnJheVR5cGUgICpwYXRoID0g UEdfR0VUQVJHX0FSUkFZVFlQRV9QKDEpOyBcCisJSnNvbmJWYWx1ZQl2YnVmOyBcCisJSnNvbmJW YWx1ZSAqdjsgXAorCURhdHVtCQlyZXN1bHQ7IFwKK1wKKwl2ID0ganNvbmJfZXh0cmFjdF9wYXRo X2xvb2t1cChqYiwgcGF0aCwgJnZidWYpOyBcCisJaWYgKHYgPT0gTlVMTCkgXAorCXsgXAorCQlQ R19GUkVFX0lGX0NPUFkocGF0aCwgMSk7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAor CQlQR19SRVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29udmZuKHYpOyBcCisJ UEdfRlJFRV9JRl9DT1BZKHBhdGgsIDEpOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAor CXJldHVybiByZXN1bHQ7IFwKK30KKworREVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChq c29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYywganNvbmJfdmFsdWVfdG9fbnVtZXJpY19kYXR1bSkK K0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQRUQoanNvbmJfZXh0cmFjdF9wYXRoX2Jvb2ws IGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0pCitERUZJTkVfSlNPTkJfRVhUUkFDVF9QQVRIX1RZ UEVEKGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0LCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQor REVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChqc29uYl9leHRyYWN0X3BhdGhfaW50OCwg anNvbmJfdmFsdWVfdG9faW50OF9kYXR1bSkKK0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhfVFlQ RUQoanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVt KQorREVGSU5FX0pTT05CX0VYVFJBQ1RfUEFUSF9UWVBFRChqc29uYl9leHRyYWN0X3BhdGhfaW50 MiwganNvbmJfdmFsdWVfdG9faW50Ml9kYXR1bSkKK0RFRklORV9KU09OQl9FWFRSQUNUX1BBVEhf VFlQRUQoanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2Rh dHVtKQorCiBEYXR1bQoganNvbl9hcnJheV9lbGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBA IC02NDI3LDQgKzY2MTEsNCBAQCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9v bCBpc19qc29uYiwgYm9vbCAqaGFzX211dGFibGUpCiAJCQkJKmhhc19tdXRhYmxlID0gdHJ1ZTsK IAkJCWJyZWFrOwogCX0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBhZDc1MmEwYTllMC4uZDhhYzljYmYwNTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTI4MjcsNiArMTI4MjcsMjYgQEAKICAgcHJvbmFtZSA9PiAnanNv bmJfYXJyYXlfZWxlbWVudF9mbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLAogICBwcm9h cmd0eXBlcyA9PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVsZW1l bnRfaW5kZXh9JywKICAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0OCcgfSwK K3sgb2lkID0+ICc5OTY1JywgZGVzY3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpzb25iIGJ5 IHBhdGgnLAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYycsIHByb3Jl dHR5cGUgPT4gJ251bWVyaWMnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9h cmduYW1lcyA9PiAne2Zyb21fanNvbixwYXRoX2VsZW1zfScsCisgIHByb3NyYyA9PiAnanNvbmJf ZXh0cmFjdF9wYXRoX251bWVyaWMnIH0sCit7IG9pZCA9PiAnOTk2NicsIGRlc2NyID0+ICdleHRy YWN0IGJvb2xlYW4gZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoX2Jvb2wnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIF90ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAor ICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9ib29sJyB9LAoreyBvaWQgPT4gJzk5Njcn LCBkZXNjciA9PiAnZXh0cmFjdCBpbnQ0IGZyb20ganNvbmIgYnkgcGF0aCcsCisgIHByb25hbWUg PT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9pbnQ0JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCisgIHBy b2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLHBh dGhfZWxlbXN9JywKKyAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfaW50NCcgfSwKK3sg b2lkID0+ICc5OTY4JywgZGVzY3IgPT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIGJ5IHBhdGgn LAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfaW50OCcsIHByb3JldHR5cGUgPT4g J2ludDgnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQnLCBwcm9hcmduYW1lcyA9PiAn e2Zyb21fanNvbixwYXRoX2VsZW1zfScsCisgIHByb3NyYyA9PiAnanNvbmJfZXh0cmFjdF9wYXRo X2ludDgnIH0sCit7IG9pZCA9PiAnOTk2OScsIGRlc2NyID0+ICdleHRyYWN0IGZsb2F0OCBmcm9t IGpzb25iIGJ5IHBhdGgnLAorICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ4 JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIF90ZXh0 JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAorICBwcm9zcmMgPT4g J2pzb25iX2V4dHJhY3RfcGF0aF9mbG9hdDgnIH0sCiB7IG9pZCA9PiAnOTk4MicsIGRlc2NyID0+ ICdleHRyYWN0IGludDIgZnJvbSBqc29uYiBhcnJheSBieSBlbGVtZW50IGluZGV4JywKICAgcHJv bmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9pbnQyJywgcHJvcmV0dHlwZSA9PiAnaW50Mics CiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pz b24sZWxlbWVudF9pbmRleH0nLApAQCAtMTI4MzYsNCArMTI4NTYsMTMgQEAKICAgcHJvYXJndHlw ZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixlbGVtZW50X2lu ZGV4fScsCiAgIHByb3NyYyA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQnIH0sCiAKLV0K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit7IG9pZCA9PiAnOTk4NCcsIGRlc2NyID0+ICdl eHRyYWN0IGludDIgZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoX2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIF90ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAor ICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aF9pbnQyJyB9LAoreyBvaWQgPT4gJzk5ODUn LCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDQgZnJvbSBqc29uYiBieSBwYXRoJywKKyAgcHJvbmFt ZSA9PiAnanNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcs CisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9q c29uLHBhdGhfZWxlbXN9JywKKyAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0 JyB9LAorCitdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IDM2YmM4MjA5NWJl Li5iOTZjMDk1NTI1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTEyNDcs NiArMTI0NywyMzMgQEAgU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwg Mi41XSc6Ompzb25iLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIDIuNQogKDEgcm93KQog CistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogZXh0cmFjdC1wYXRoIGZhbWlseQorLS0g VGhlIHBsYW5uZXIgcmV3cml0ZXMgKGogIz4gcGF0aCk6OnR5cGUgYW5kIChqc29uYl9leHRyYWN0 X3BhdGgoaiwgLi4uKSk6OnR5cGUKKy0tIGludG8gZGlyZWN0IHR5cGVkIGV4dHJhY3RvciBjYWxs cyBmb3IgdGhlIHNhbWUgdGFyZ2V0IHR5cGVzLgorLS0gU2VjdGlvbiBQMTogcGxhbm5lciByZXdy aXRlIHZlcmlmaWNhdGlvbiAob3BlcmF0b3IgZm9ybSAjPikKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6Om51bWVyaWMgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNv bmJfZXh0cmFjdF9wYXRoX251bWVyaWModGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisg ICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93 cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAn e2ZpZWxkNH0nKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29u YgorICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfaW50NCh0ZXN0X2pzb24sICd7ZmllbGQ0 fSc6OnRleHRbXSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo dGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9mbG9h dDgodGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25i Lmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixmMX0nKTo6aW50OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0 OiBqc29uYl9leHRyYWN0X3BhdGhfaW50OCh0ZXN0X2pzb24sICd7ZmllbGQ2LGYxfSc6OnRleHRb XSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiso MyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29u ICM+ICd7ZmllbGQ3fScpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0 X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9ib29sKHRlc3RfanNvbiwgJ3tm aWVsZDd9Jzo6dGV4dFtdKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2Jq ZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBv biBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDIo dGVzdF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6ZmxvYXQ0IEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29u Yl9leHRyYWN0X3BhdGhfZmxvYXQ0KHRlc3RfanNvbiwgJ3tmaWVsZDR9Jzo6dGV4dFtdKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKKy0tIFNlY3Rpb24gUDFiOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3Qg ZnVuY3Rpb24tY2FsbCBmb3JtKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KGpzb25iX2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJf ZXh0cmFjdF9wYXRoX2Zsb2F0OCh0ZXN0X2pzb24sICd7ZmllbGQ0fSc6OnRleHRbXSkKKyAgIEZp bHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfZXh0cmFjdF9wYXRo KHRlc3RfanNvbiwgJ2ZpZWxkNicsICdmMScpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhf aW50NCh0ZXN0X2pzb24sICd7ZmllbGQ2LGYxfSc6OnRleHRbXSkKKyAgIEZpbHRlcjogKHRlc3Rf anNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSBTZWN0aW9u IFAxYzogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoVkFSSUFESUMgQVJSQVkgZm9ybSkK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgo dGVzdF9qc29uLCBWQVJJQURJQyBBUlJBWVsnZmllbGQ2JywnZjEnXSkpOjppbnQ0IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X2V4dHJhY3RfcGF0aF9pbnQ0KHRlc3RfanNvbiwgJ3tmaWVsZDYsZjF9Jzo6dGV4dFtdKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKKy0tIFNlY3Rpb24gUDI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggcmV3cml0dGVuIHBh dGgKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQ0IEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQ0IAorLS0tLS0tCisgICAgNAorKDEg cm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgbnVtZXJpYyAKKy0tLS0tLS0t LQorICAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6 OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxv YXQ4IAorLS0tLS0tLS0KKyAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gIz4g J3tmaWVsZDYsZjF9Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOworIGludDQgCistLS0tLS0KKyAgICA5CisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9q c29uICM+ICd7ZmllbGQ2LGYxfScpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKyBpbnQ4IAorLS0tLS0tCisgICAgOQorKDEgcm93KQorCitTRUxFQ1Qg KHRlc3RfanNvbiAjPiAne2ZpZWxkN30nKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworLS0gYXJy YXkgaW5kZXggaW4gcGF0aAorU0VMRUNUICgneyJhIjpbMTAsMjAsMzBdfSc6Ompzb25iICM+ICd7 YSwxfScpOjppbnQ0OworIGludDQgCistLS0tLS0KKyAgIDIwCisoMSByb3cpCisKKy0tIFNlY3Rp b24gUDM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne25vbmV4aXN0ZW50 fScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IG1pc3Npbmcga2V5CisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICh0 ZXN0X2pzb24gIz4gJ3tmaWVsZDN9Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxsIGxlYWYKKyBudW1lcmljIAorLS0tLS0t LS0tCisgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixt aXNzaW5nfScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIG1pc3NpbmcgbmVzdGVkIGtleQorIGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cp CisKKy0tIG51bGwgaW4gcGF0aCBhcnJheQorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0 KCd7ImEiOjF9Jzo6anNvbmIsIEFSUkFZW05VTExdOjp0ZXh0W10pOworIGpzb25iX2V4dHJhY3Rf cGF0aF9pbnQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKKy0tIGVtcHR5IHBhdGggb24gY29udGFpbmVyIHJvb3QgcHJvZHVj ZXMgY2FzdCBlcnJvcgorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOjF9Jzo6 anNvbmIsICd7fSc6OnRleHRbXSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9y IG9iamVjdCB0byB0eXBlIGludGVnZXIKKy0tIFNlY3Rpb24gUDQ6IHR5cGUtbWlzbWF0Y2ggZXJy b3JzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkMX0nKTo6aW50NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gaW50NAorRVJST1I6 ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCitTRUxFQ1QgKHRlc3Rf anNvbiAjPiAne2ZpZWxkNX0nKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGZsb2F0OAorRVJST1I6ICBjYW5ub3QgY2FzdCBq c29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCitTRUxFQ1QgKHRl c3RfanNvbiAjPiAne2ZpZWxkNn0nKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBvYmplY3QgdG8gaW50OAorRVJST1I6ICBjYW5ub3QgY2FzdCBq c29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBiaWdpbnQKKy0tIFNlY3Rpb24gUDU6IGRpcmVj dCBjYWxscyB0byBleHRyYWN0LXBhdGggdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1Qg anNvbmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIsIEFSUkFZWydh JywnYiddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QganNvbmJf ZXh0cmFjdF9wYXRoX2ludDgoJ3sieCI6OTl9Jzo6anNvbmIsIEFSUkFZWyd4J10pOworIGpzb25i X2V4dHJhY3RfcGF0aF9pbnQ4IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgIDk5CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxv YXQ4KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOworIGpzb25iX2V4dHJhY3RfcGF0 aF9mbG9hdDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYygn eyJhIjoxLjIzfSc6Ompzb25iLCBBUlJBWVsnYSddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfbnVt ZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2Jvb2woJ3siYSI6 dHJ1ZX0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CisganNvbmJfZXh0cmFjdF9wYXRoX2Jvb2wgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBkaXJlY3QgY2FsbHM6 IG1pc3NpbmcgcGF0aAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOjF9Jzo6 anNvbmIsIEFSUkFZWydiJ10pOworIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKKy0t IGRpcmVjdCBjYWxsczogdHlwZS1taXNtYXRjaAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9p bnQ0KCd7ImEiOiJ0ZXh0In0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CitFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKKy0tIGRpcmVjdCBjYWxsczogYXJyYXkg aW5kZXggaW4gcGF0aAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOlsxMCwy MF19Jzo6anNvbmIsIEFSUkFZWydhJywnMSddKTsKKyBqc29uYl9leHRyYWN0X3BhdGhfaW50NCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAyMAorKDEg cm93KQorCistLSBkaXJlY3QgY2FsbHM6IGludDIgYW5kIGZsb2F0NAorU0VMRUNUIGpzb25iX2V4 dHJhY3RfcGF0aF9pbnQyKCd7ImEiOnsiYiI6N319Jzo6anNvbmIsIEFSUkFZWydhJywnYiddKTsK KyBqc29uYl9leHRyYWN0X3BhdGhfaW50MiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgNworKDEgcm93KQorCitTRUxFQ1QganNvbmJfZXh0cmFjdF9w YXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKKyBqc29uYl9leHRy YWN0X3BhdGhfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggNjljMjE3NzZmODQuLjExMTkxZmQwZjgy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0zNTgsNiArMzU4LDY3IEBAIFNFTEVDVCBqc29u Yl9hcnJheV9lbGVtZW50X2ludDIoJ1sxMCwgMjBdJzo6anNvbmIsIDApOwogU0VMRUNUIGpzb25i X2FycmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwgMi41XSc6Ompzb25iLCAxKTsKIAogCistLSBP cHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogZXh0cmFjdC1wYXRoIGZhbWlseQorLS0gVGhlIHBs YW5uZXIgcmV3cml0ZXMgKGogIz4gcGF0aCk6OnR5cGUgYW5kIChqc29uYl9leHRyYWN0X3BhdGgo aiwgLi4uKSk6OnR5cGUKKy0tIGludG8gZGlyZWN0IHR5cGVkIGV4dHJhY3RvciBjYWxscyBmb3Ig dGhlIHNhbWUgdGFyZ2V0IHR5cGVzLgorCistLSBTZWN0aW9uIFAxOiBwbGFubmVyIHJld3JpdGUg dmVyaWZpY2F0aW9uIChvcGVyYXRvciBmb3JtICM+KQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6bnVtZXJpYyBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQ0IEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmZsb2F0OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ2LGYxfScpOjppbnQ4IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDd9Jyk6OmJvb2wgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQyIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBTZWN0aW9uIFAxYjogcGxh bm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoZGlyZWN0IGZ1bmN0aW9uLWNhbGwgZm9ybSkKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgodGVz dF9qc29uLCAnZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25i X2V4dHJhY3RfcGF0aCh0ZXN0X2pzb24sICdmaWVsZDYnLCAnZjEnKSk6OmludDQgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCistLSBTZWN0aW9uIFAxYzogcGxh bm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoVkFSSUFESUMgQVJSQVkgZm9ybSkKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9leHRyYWN0X3BhdGgodGVzdF9qc29u LCBWQVJJQURJQyBBUlJBWVsnZmllbGQ2JywnZjEnXSkpOjppbnQ0IEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworLS0gU2VjdGlvbiBQMjogY29ycmVjdCBleGVj dXRpb24gdGhyb3VnaCByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVs ZDR9Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor U0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVs ZDR9Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNixmMX0nKTo6aW50NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2Zp ZWxkNixmMX0nKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkN30nKTo6Ym9vbCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBhcnJheSBpbmRleCBpbiBwYXRoCitT RUxFQ1QgKCd7ImEiOlsxMCwyMCwzMF19Jzo6anNvbmIgIz4gJ3thLDF9Jyk6OmludDQ7CisKKy0t IFNlY3Rpb24gUDM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne25vbmV4 aXN0ZW50fScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIG1pc3Npbmcga2V5CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkM30nKTo6bnVt ZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09O IG51bGwgbGVhZgorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDYsbWlzc2luZ30nKTo6aW50 NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5n IG5lc3RlZCBrZXkKKy0tIG51bGwgaW4gcGF0aCBhcnJheQorU0VMRUNUIGpzb25iX2V4dHJhY3Rf cGF0aF9pbnQ0KCd7ImEiOjF9Jzo6anNvbmIsIEFSUkFZW05VTExdOjp0ZXh0W10pOworLS0gZW1w dHkgcGF0aCBvbiBjb250YWluZXIgcm9vdCBwcm9kdWNlcyBjYXN0IGVycm9yCitTRUxFQ1QganNv bmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6MX0nOjpqc29uYiwgJ3t9Jzo6dGV4dFtdKTsKKwor LS0gU2VjdGlvbiBQNDogdHlwZS1taXNtYXRjaCBlcnJvcnMKK1NFTEVDVCAodGVzdF9qc29uICM+ ICd7ZmllbGQxfScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIHN0cmluZyB0byBpbnQ0CitTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNX0n KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IGFycmF5IHRvIGZsb2F0OAorU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDZ9Jyk6OmludDgg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gb2JqZWN0IHRv IGludDgKKworLS0gU2VjdGlvbiBQNTogZGlyZWN0IGNhbGxzIHRvIGV4dHJhY3QtcGF0aCB0eXBl ZCBleHRyYWN0b3IgYnVpbHRpbnMKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJh Ijp7ImIiOjQyfX0nOjpqc29uYiwgQVJSQVlbJ2EnLCdiJ10pOworU0VMRUNUIGpzb25iX2V4dHJh Y3RfcGF0aF9pbnQ4KCd7IngiOjk5fSc6Ompzb25iLCBBUlJBWVsneCddKTsKK1NFTEVDVCBqc29u Yl9leHRyYWN0X3BhdGhfZmxvYXQ4KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOwor U0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9udW1lcmljKCd7ImEiOjEuMjN9Jzo6anNvbmIsIEFS UkFZWydhJ10pOworU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9ib29sKCd7ImEiOnRydWV9Jzo6 anNvbmIsIEFSUkFZWydhJ10pOworLS0gZGlyZWN0IGNhbGxzOiBtaXNzaW5nIHBhdGgKK1NFTEVD VCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJhIjoxfSc6Ompzb25iLCBBUlJBWVsnYiddKTsK Ky0tIGRpcmVjdCBjYWxsczogdHlwZS1taXNtYXRjaAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0 aF9pbnQ0KCd7ImEiOiJ0ZXh0In0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CistLSBkaXJlY3QgY2Fs bHM6IGFycmF5IGluZGV4IGluIHBhdGgKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgn eyJhIjpbMTAsMjBdfSc6Ompzb25iLCBBUlJBWVsnYScsJzEnXSk7CistLSBkaXJlY3QgY2FsbHM6 IGludDIgYW5kIGZsb2F0NAorU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyKCd7ImEiOnsi YiI6N319Jzo6anNvbmIsIEFSUkFZWydhJywnYiddKTsKK1NFTEVDVCBqc29uYl9leHRyYWN0X3Bh dGhfZmxvYXQ0KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOworCisKIFNFTEVDVCB0 ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFy JzsKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnYXJyYXknOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotLSAKMi41Mi4wCgo= --0000000000006dce3d06506a04a1 Content-Type: application/octet-stream; name="v5-0001-jsonb-optimize-object-field-casts-to-scalar-types.patch" Content-Disposition: attachment; filename="v5-0001-jsonb-optimize-object-field-casts-to-scalar-types.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mogqangs0 RnJvbSA4YTA2NTY3YmRjMjQ5Y2NmNmJlZTkxYzUxY2QxZmE3MzQxNzBmNzU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFRodSwgMiBBcHIgMjAyNiAyMToyMjo1NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMS81XSBq c29uYjogb3B0aW1pemUgb2JqZWN0LWZpZWxkIGNhc3RzIHRvIHNjYWxhciB0eXBlcwoKRXh0ZW5k IHRoZSBleGlzdGluZyBzdXBwb3J0LWZ1bmN0aW9uIHJld3JpdGUgZm9yIGpzb25iIG9iamVjdC1m aWVsZApleHRyYWN0aW9uLCBpbmNsdWRpbmcganNvbmJfb2JqZWN0X2ZpZWxkKCksIC0+LCBhbmQg a2V5IHN1YnNjcmlwdGluZy4KClRoaXMga2VlcHMgb3JkaW5hcnkgU1FMIHN5bnRheCB1bmNoYW5n ZWQgYW5kIHJld3JpdGVzIHN1cHBvcnRlZCBjYXN0cwpkaXJlY3RseSB0byBleHBsaWNpdCB0eXBl ZCBleHRyYWN0b3IgZnVuY3Rpb25zIGZvciBudW1lcmljLCBib29sLAppbnQyLCBpbnQ0LCBpbnQ4 LCBmbG9hdDQsIGFuZCBmbG9hdDguCgpDby1hdXRob3JlZC1ieTogQW5keSBGYW4gPHpoaWh1aWZh bjEyMTNAMTYzLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICB8 IDE1NCArKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgIHwgMTk1 ICsrKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICB8ICA1NSAr KystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDQ4NSArKysrKysrKysr KysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8 IDEyMCArKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDk5NSBpbnNlcnRpb25zKCspLCAxNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IDg2NGM1YWMxYzg1Li5jODVkNDg4MmYy MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE3LDYgKzE3LDkgQEAKICNpbmNsdWRlICJmdW5j YXBpLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKKyNpbmNsdWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv anNvbi5oIgpAQCAtMTgxNiw2ICsxODE5LDE1NSBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVt IGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSwgTm9kZSAqZXNjb250ZXh0KQogCXJl dHVybiAoRGF0dW0pIDA7CiB9CiAKKy8qCisgKiBqc29uYl9jYXN0X3N1cHBvcnQoKQorICoKKyAq IFBsYW5uZXIgc3VwcG9ydCBmdW5jdGlvbiBmb3IganNvbmItdG8tc2NhbGFyIGNhc3QgZnVuY3Rp b25zLCBhdHRhY2hlZCB2aWEKKyAqIHByb3N1cHBvcnQgb24gdGhlIGpzb25iX251bWVyaWMsIGpz b25iX2Jvb2wsIGpzb25iX2ludDQsIGpzb25iX2ludDgsIGFuZAorICoganNvbmJfZmxvYXQ4IGNh dGFsb2cgZW50cmllcy4KKyAqCisgKiBXaGVuIHRoZSBzb2xlIGFyZ3VtZW50IHRvIHRoZSBjYXN0 IGlzIGEganNvbmJfb2JqZWN0X2ZpZWxkKCkgY2FsbCAodGhlIC0+CisgKiBvcGVyYXRvciksIHdl IHJlcGxhY2UgdGhlIHR3by1zdGVwIGNhc3QoZXh0cmFjdCguLi4pKSBleHByZXNzaW9uIHdpdGgg YQorICogc2luZ2xlIHR5cGVkIGV4dHJhY3RvciB0aGF0IHJlYWRzIHRoZSBzY2FsYXIgZGlyZWN0 bHkgZnJvbSB0aGUgaW4tbWVtb3J5CisgKiBKc29uYlZhbHVlLCBhdm9pZGluZyBhIHJvdW5kLXRy aXAgdGhyb3VnaCBKc29uYlZhbHVlVG9Kc29uYi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgKGogLT4g J2EnKTo6bnVtZXJpYyBpcyBwYXJzZWQgYXM6CisgKiAgIGpzb25iX251bWVyaWMoanNvbmJfb2Jq ZWN0X2ZpZWxkKGosICdhJykpCisgKiBhbmQgaXMgcmV3cml0dGVuIHRvOgorICogICBqc29uYl9v YmplY3RfZmllbGRfbnVtZXJpYyhqLCAnYScpCisgKi8KK0RhdHVtCitqc29uYl9jYXN0X3N1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlOb2RlCSAgICpyYXdyZXEgPSAoTm9kZSAqKSBQR19H RVRBUkdfUE9JTlRFUigwKTsKKwlOb2RlCSAgICpyZXQgPSBOVUxMOworCisJaWYgKElzQShyYXdy ZXEsIFN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkpKQorCXsKKwkJU3VwcG9ydFJlcXVlc3RTaW1wbGlm eSAqcmVxID0gKFN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkgKikgcmF3cmVxOworCQlGdW5jRXhwciAg ICpmZXhwciA9IHJlcS0+ZmNhbGw7CisJCU5vZGUJICAgKmFyZzsKKwkJT2lkCQkJaW5uZXJfZnVu Y2lkOworCQlMaXN0CSAgICppbm5lcl9hcmdzOworCQlpbnQJCQlsb2NhdGlvbjsKKwkJT2lkCQkJ cmVwbGFjZW1lbnRfZnVuY2lkOworCQlPaWQJCQlyZXBsYWNlbWVudF9yZXR0eXBlOworCQlGdW5j RXhwciAgICpuZXdmZXhwcjsKKworCQkvKiBUaGUgY2FzdCBmdW5jdGlvbiBtdXN0IGhhdmUgZXhh Y3RseSBvbmUgYXJndW1lbnQgKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKGZleHByLT5hcmdzKSAhPSAx KQorCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJYXJnID0gKE5vZGUgKikgbGluaXRp YWwoZmV4cHItPmFyZ3MpOworCisJCS8qCisJCSAqIElkZW50aWZ5IHRoZSBpbm5lciBleHRyYWN0 aW9uIGV4cHJlc3Npb24uICBJdCBtYXkgYXBwZWFyIGFzIGEKKwkJICogRnVuY0V4cHIsIGFuIE9w RXhwciwgb3IgYSBTdWJzY3JpcHRpbmdSZWYsIGRlcGVuZGluZyBvbiBob3cgdGhlCisJCSAqIGV4 cHJlc3Npb24gaXMgcmVwcmVzZW50ZWQgYXQgdGhpcyBwb2ludC4gIEFjY2VwdCB0aGUgc3VwcG9y dGVkCisJCSAqIGZvcm1zLgorCQkgKi8KKwkJaWYgKElzQShhcmcsIEZ1bmNFeHByKSkKKwkJewor CQkJRnVuY0V4cHIgICAqaW5uZXIgPSAoRnVuY0V4cHIgKikgYXJnOworCisJCQlpbm5lcl9mdW5j aWQgPSBpbm5lci0+ZnVuY2lkOworCQkJaW5uZXJfYXJncyA9IGlubmVyLT5hcmdzOworCQkJbG9j YXRpb24gPSBpbm5lci0+bG9jYXRpb247CisJCX0KKwkJZWxzZSBpZiAoSXNBKGFyZywgT3BFeHBy KSkKKwkJeworCQkJT3BFeHByCSAgICppbm5lciA9IChPcEV4cHIgKikgYXJnOworCisJCQlpbm5l cl9mdW5jaWQgPSBpbm5lci0+b3BmdW5jaWQ7CisJCQlpbm5lcl9hcmdzID0gaW5uZXItPmFyZ3M7 CisJCQlsb2NhdGlvbiA9IGlubmVyLT5sb2NhdGlvbjsKKwkJfQorCQllbHNlIGlmIChJc0EoYXJn LCBTdWJzY3JpcHRpbmdSZWYpKQorCQl7CisJCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChT dWJzY3JpcHRpbmdSZWYgKikgYXJnOworCQkJTm9kZQkgICAqc3Vic2NyaXB0OworCisJCQkvKgor CQkJICogT25seSBoYW5kbGUgdGhlIG5hcnJvdyBjYXNlIGVxdWl2YWxlbnQgdG8gb2JqZWN0LWZp ZWxkCisJCQkgKiBleHRyYWN0aW9uOiBhIHNpbmdsZSB0ZXh0LXR5cGVkIHN1YnNjcmlwdCBvbiBh IGpzb25iCisJCQkgKiBjb250YWluZXIsIHdpdGggbm8gc2xpY2UgYW5kIG5vIGFzc2lnbm1lbnQu CisJCQkgKi8KKwkJCWlmIChzYnNyZWYtPnJlZmNvbnRhaW5lcnR5cGUgIT0gSlNPTkJPSUQpCisJ CQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisJCQlpZiAobGlzdF9sZW5ndGgoc2JzcmVmLT5y ZWZ1cHBlcmluZGV4cHIpICE9IDEpCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisJCQlp ZiAoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgIT0gTklMKQorCQkJCVBHX1JFVFVSTl9QT0lOVEVS KE5VTEwpOworCQkJaWYgKHNic3JlZi0+cmVmYXNzZ25leHByICE9IE5VTEwpCisJCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCXN1YnNjcmlwdCA9IChOb2RlICopIGxpbml0aWFsKHNi c3JlZi0+cmVmdXBwZXJpbmRleHByKTsKKwkJCWlmIChleHByVHlwZShzdWJzY3JpcHQpICE9IFRF WFRPSUQpCisJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCWlubmVyX2Z1bmNpZCA9 IEZfSlNPTkJfT0JKRUNUX0ZJRUxEOworCQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIoc2JzcmVm LT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJbG9jYXRpb24gPSBleHByTG9jYXRpb24oYXJnKTsK KwkJfQorCQllbHNlCisJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQkvKiBPbmx5IHJl d3JpdGUganNvbmJfb2JqZWN0X2ZpZWxkKGpzb25iLCB0ZXh0KTsgdmVyaWZ5IGFyaXR5IHRvbyAq LworCQlpZiAoaW5uZXJfZnVuY2lkICE9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEKQorCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CisJCWlmIChsaXN0X2xlbmd0aChpbm5lcl9hcmdzKSAhPSAyKQor CQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJLyogTWFwIHRoZSBvdXRlciBjYXN0IHRv IHRoZSBjb3JyZXNwb25kaW5nIHR5cGVkIGV4dHJhY3RvciAqLworCQlpZiAoZmV4cHItPmZ1bmNp ZCA9PSBGX05VTUVSSUNfSlNPTkIpCisJCXsKKwkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNP TkJfT0JKRUNUX0ZJRUxEX05VTUVSSUM7CisJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gTlVNRVJJ Q09JRDsKKwkJfQorCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfQk9PTF9KU09OQikKKwkJ eworCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERfQk9PTDsKKwkJ CXJlcGxhY2VtZW50X3JldHR5cGUgPSBCT09MT0lEOworCQl9CisJCWVsc2UgaWYgKGZleHByLT5m dW5jaWQgPT0gRl9JTlQ0X0pTT05CKQorCQl7CisJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pT T05CX09CSkVDVF9GSUVMRF9JTlQ0OworCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDRPSUQ7 CisJCX0KKwkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9PSBGX0lOVDhfSlNPTkIpCisJCXsKKwkJ CXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX0lOVDg7CisJCQlyZXBs YWNlbWVudF9yZXR0eXBlID0gSU5UOE9JRDsKKwkJfQorCQllbHNlIGlmIChmZXhwci0+ZnVuY2lk ID09IEZfRkxPQVQ4X0pTT05CKQorCQl7CisJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05C X09CSkVDVF9GSUVMRF9GTE9BVDg7CisJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ4T0lE OworCQl9CisJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQyX0pTT05CKQorCQl7CisJ CQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX09CSkVDVF9GSUVMRF9JTlQyOworCQkJcmVw bGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7CisJCX0KKwkJZWxzZSBpZiAoZmV4cHItPmZ1bmNp ZCA9PSBGX0ZMT0FUNF9KU09OQikKKwkJeworCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09O Ql9PQkpFQ1RfRklFTERfRkxPQVQ0OworCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUNE9J RDsKKwkJfQorCQllbHNlCisJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQkvKiBCdWls ZCB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gY2FsbCAqLworCQluZXdmZXhwciA9IG1ha2VGdW5j RXhwcihyZXBsYWNlbWVudF9mdW5jaWQsIHJlcGxhY2VtZW50X3JldHR5cGUsCisJCQkJCQkJCWlu bmVyX2FyZ3MsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCUNPRVJDRV9FWFBMSUNJ VF9DQUxMKTsKKwkJbmV3ZmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247CisJCXJldCA9IChOb2Rl ICopIG5ld2ZleHByOworCX0KKworCVBHX1JFVFVSTl9QT0lOVEVSKHJldCk7Cit9CisKIERhdHVt CiBqc29uYl9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC0yMDMzLDQgKzIxODUsNCBAQCBK c29uYlVucXVvdGUoSnNvbmIgKmpiKQogCX0KIAllbHNlCiAJCXJldHVybiBKc29uYlRvQ1N0cmlu ZyhOVUxMLCAmamItPnJvb3QsIFZBUlNJWkUoamIpKTsKLX0KK30KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggOTdjYzNkNjAzNDAuLmMy NjA1NzdkODk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC05MjEsNiArOTIxLDE5 OSBAQCBqc29uYl9vYmplY3RfZmllbGRfdGV4dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVS Tl9OVUxMKCk7CiB9CiAKKy8qCisgKiBUeXBlZCBzY2FsYXIgZXh0cmFjdGlvbiBmcm9tIGpzb25i IG9iamVjdCBmaWVsZHMuCisgKgorICogVGhlc2UgZnVuY3Rpb25zIGV4dHJhY3QgYSB0eXBlZCBz Y2FsYXIgZGlyZWN0bHkgZnJvbSB0aGUgaW4tbWVtb3J5CisgKiBKc29uYlZhbHVlIGZvdW5kIGJ5 IGtleSBsb29rdXAsIHNraXBwaW5nIHRoZSBpbnRlcm1lZGlhdGUgSnNvbmIKKyAqIHNlcmlhbGl6 YXRpb24gdGhhdCBvY2N1cnMgd2l0aCB0aGUgdW5vcHRpbWl6ZWQgY2FzdC1vdmVyLWV4dHJhY3Rp b24gcGF0aC4KKyAqCisgKiBUaGV5IGxpdmUgaGVyZSBhbG9uZ3NpZGUganNvbmJfb2JqZWN0X2Zp ZWxkKCkgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZQorICogc2FtZSBrZXktbG9va3VwIGxvZ2ljIChn ZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKS4KKyAqCisgKiBSZWdpc3RlcmVkIGluIHBnX3By b2MgYXMgb3JkaW5hcnkgU1FMLWNhbGxhYmxlIGJ1aWx0aW5zOyBhbHNvIHNlcnZlIGFzCisgKiBw bGFubmVyIHJld3JpdGUgdGFyZ2V0cyBmb3IganNvbmJfY2FzdF9zdXBwb3J0KCkgaW4ganNvbmIu Yy4KKyAqCisgKiBOVUxMIHNlbWFudGljcyBtYXRjaCB0aGUgZXhpc3RpbmcgY2FzdCBwYXRoOiBh IG1pc3Npbmcga2V5IG9yIGEgSlNPTgorICogbnVsbCB2YWx1ZSBib3RoIHByb2R1Y2UgU1FMIE5V TEw7IGEgdHlwZSBtaXNtYXRjaCByYWlzZXMgRVJST1IuCisgKi8KKworLyoKKyAqIExvb2sgdXAg YSBrZXkgaW4gYSBqc29uYiBvYmplY3QgYW5kIHJldHVybiB0aGUgSnNvbmJWYWx1ZSwgb3IgTlVM TC4KKyAqIFJldHVybnMgTlVMTCAod2l0aG91dCBlcnJvcikgd2hlbiB0aGUgaW5wdXQgaXMgbm90 IGFuIG9iamVjdCwgdGhlIGtleQorICogaXMgYWJzZW50LCBvciB0aGUgdmFsdWUgaXMgSlNPTiBu dWxsLgorICovCitzdGF0aWMgSnNvbmJWYWx1ZSAqCitqc29uYl9vYmplY3RfZmllbGRfbG9va3Vw KEpzb25iICpqYiwgdGV4dCAqa2V5LCBKc29uYlZhbHVlICp2YnVmKQoreworCUpzb25iVmFsdWUg KnY7CisKKwlpZiAoIUpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKKwkJcmV0dXJuIE5VTEw7CisKKwl2 ID0gZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcigmamItPnJvb3QsCisJCQkJCQkJCQkgVkFS REFUQV9BTlkoa2V5KSwKKwkJCQkJCQkJCSBWQVJTSVpFX0FOWV9FWEhEUihrZXkpLAorCQkJCQkJ CQkJIHZidWYpOworCisJLyogTWlzc2luZyBrZXkgb3IgSlNPTiBudWxsIGJvdGggbWFwIHRvIFNR TCBOVUxMICovCisJaWYgKHYgPT0gTlVMTCB8fCB2LT50eXBlID09IGpidk51bGwpCisJCXJldHVy biBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKKy8qCisgKiBSYWlzZSBhIHR5cGUtbWlzbWF0Y2gg ZXJyb3IgZm9yIHR5cGVkIGZpZWxkIGV4dHJhY3Rpb24uCisgKgorICogVGhlIG1lc3NhZ2Ugd29y ZGluZyBtYXRjaGVzIGNhbm5vdENhc3RKc29uYlZhbHVlKCkgaW4ganNvbmIuYyBzbyB0aGF0Cisg KiB0aGUgb3B0aW1pemVkIGFuZCB1bm9wdGltaXplZCBwYXRocyBwcm9kdWNlIGlkZW50aWNhbCBl cnJvcnMuCisgKi8KK3N0YXRpYyB2b2lkCitqc29uYl9maWVsZF9jYXN0X2Vycm9yKEpzb25iVmFs dWUgKnYsIGNvbnN0IGNoYXIgKnNxbHR5cGUpCit7CisJY29uc3QgY2hhciAqanNvbnR5cGU7CisK Kwlzd2l0Y2ggKHYtPnR5cGUpCisJeworCQljYXNlIGpidk51bGw6CisJCQlqc29udHlwZSA9ICJu dWxsIjsKKwkJCWJyZWFrOworCQljYXNlIGpidlN0cmluZzoKKwkJCWpzb250eXBlID0gInN0cmlu ZyI7CisJCQlicmVhazsKKwkJY2FzZSBqYnZOdW1lcmljOgorCQkJanNvbnR5cGUgPSAibnVtZXJp YyI7CisJCQlicmVhazsKKwkJY2FzZSBqYnZCb29sOgorCQkJanNvbnR5cGUgPSAiYm9vbGVhbiI7 CisJCQlicmVhazsKKwkJY2FzZSBqYnZBcnJheToKKwkJCWpzb250eXBlID0gImFycmF5IjsKKwkJ CWJyZWFrOworCQljYXNlIGpidk9iamVjdDoKKwkJCWpzb250eXBlID0gIm9iamVjdCI7CisJCQli cmVhazsKKwkJY2FzZSBqYnZCaW5hcnk6CisJCQlqc29udHlwZSA9ICJhcnJheSBvciBvYmplY3Qi OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5rbm93biBqc29uYiB0 eXBlOiAlZCIsIChpbnQpIHYtPnR5cGUpOworCQkJanNvbnR5cGUgPSBOVUxMOwkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJIGVycm1zZygiY2Fubm90IGNhc3QganNv bmIgJXMgdG8gdHlwZSAlcyIsCisJCQkJCWpzb250eXBlLCBzcWx0eXBlKSkpOworfQorCisvKgor ICogUGVyLXR5cGUgY29udmVyc2lvbiBoZWxwZXJzIGZvciB0eXBlZCBmaWVsZCBleHRyYWN0aW9u LgorICoKKyAqIEVhY2ggdmFsaWRhdGVzIHRoZSBleHBlY3RlZCBKc29uYlZhbHVlIHR5cGUsIHJh aXNlcyBhIHR5cGUtbWlzbWF0Y2gKKyAqIGVycm9yICh2aWEganNvbmJfZmllbGRfY2FzdF9lcnJv cikgaWYgd3JvbmcsIGFuZCByZXR1cm5zIHRoZSBjb252ZXJ0ZWQKKyAqIHZhbHVlIGFzIERhdHVt LiAgVGhlc2UgYXJlIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGNvbnZlcnNpb24gc2VtYW50aWNzCisg KiBsaXZlOyB0aGUgd3JhcHBlciBtYWNybyBiZWxvdyBpcyBpbnRlbnRpb25hbGx5IGtlcHQgdGhp bi4KKyAqLworc3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19udW1lcmljX2RhdHVtKEpzb25i VmFsdWUgKnYpCit7CisJaWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKKwkJanNvbmJfZmllbGRf Y2FzdF9lcnJvcih2LCAibnVtZXJpYyIpOworCisJcmV0dXJuIE51bWVyaWNHZXREYXR1bShEYXR1 bUdldE51bWVyaWNDb3B5KE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJpYykpKTsKK30KKwor c3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19ib29sX2RhdHVtKEpzb25iVmFsdWUgKnYpCit7 CisJaWYgKHYtPnR5cGUgIT0gamJ2Qm9vbCkKKwkJanNvbmJfZmllbGRfY2FzdF9lcnJvcih2LCAi Ym9vbGVhbiIpOworCisJcmV0dXJuIEJvb2xHZXREYXR1bSh2LT52YWwuYm9vbGVhbik7Cit9CisK K3N0YXRpYyBEYXR1bQoranNvbmJfdmFsdWVfdG9faW50NF9kYXR1bShKc29uYlZhbHVlICp2KQor eworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3Io diwgImludGVnZXIiKTsKKworCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50 NCwgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1lcmljKSk7Cit9CisKK3N0YXRpYyBEYXR1bQor anNvbmJfdmFsdWVfdG9faW50OF9kYXR1bShKc29uYlZhbHVlICp2KQoreworCWlmICh2LT50eXBl ICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3IodiwgImJpZ2ludCIpOwor CisJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ4LCBOdW1lcmljR2V0RGF0 dW0odi0+dmFsLm51bWVyaWMpKTsKK30KKworc3RhdGljIERhdHVtCitqc29uYl92YWx1ZV90b19m bG9hdDhfZGF0dW0oSnNvbmJWYWx1ZSAqdikKK3sKKwlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmlj KQorCQlqc29uYl9maWVsZF9jYXN0X2Vycm9yKHYsICJkb3VibGUgcHJlY2lzaW9uIik7CisKKwly ZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0OCwgTnVtZXJpY0dldERhdHVt KHYtPnZhbC5udW1lcmljKSk7Cit9CisKK3N0YXRpYyBEYXR1bQoranNvbmJfdmFsdWVfdG9faW50 Ml9kYXR1bShKc29uYlZhbHVlICp2KQoreworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJ CWpzb25iX2ZpZWxkX2Nhc3RfZXJyb3IodiwgInNtYWxsaW50Iik7CisKKwlyZXR1cm4gRGlyZWN0 RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDIsIE51bWVyaWNHZXREYXR1bSh2LT52YWwubnVtZXJp YykpOworfQorCitzdGF0aWMgRGF0dW0KK2pzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bShKc29u YlZhbHVlICp2KQoreworCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCWpzb25iX2ZpZWxk X2Nhc3RfZXJyb3IodiwgInJlYWwiKTsKKworCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwxKG51 bWVyaWNfZmxvYXQ0LCBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKK30KKworLyoK KyAqIFRoaW4td3JhcHBlciBtYWNybyBmb3IgdGhlIGpzb25iX29iamVjdF9maWVsZF88dHlwZT4g ZXh0cmFjdG9yIGZhbWlseS4KKyAqIFJlZHVjZXMgcmVwZXRpdGlvbjogZWFjaCB3cmFwcGVyIGRv ZXMgbG9va3VwLCBOVUxMIGhhbmRsaW5nLCBhbmQgZGVsZWdhdGVzCisgKiB0byBhIHR5cGUtc3Bl Y2lmaWMgY29udmVyc2lvbiBoZWxwZXIgdGhhdCBob2xkcyB0aGUgYWN0dWFsIHNlbWFudGljcy4K KyAqLworI2RlZmluZSBERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGZuYW1lLCBjb252 Zm4pIFwKK0RhdHVtIFwKK2ZuYW1lKFBHX0ZVTkNUSU9OX0FSR1MpIFwKK3sgXAorCUpzb25iCSAg ICpqYiA9IFBHX0dFVEFSR19KU09OQl9QKDApOyBcCisJdGV4dAkgICAqa2V5ID0gUEdfR0VUQVJH X1RFWFRfUFAoMSk7IFwKKwlKc29uYlZhbHVlCXZidWY7IFwKKwlKc29uYlZhbHVlICp2OyBcCisJ RGF0dW0JCXJlc3VsdDsgXAorXAorCXYgPSBqc29uYl9vYmplY3RfZmllbGRfbG9va3VwKGpiLCBr ZXksICZ2YnVmKTsgXAorCWlmICh2ID09IE5VTEwpIFwKKwl7IFwKKwkJUEdfRlJFRV9JRl9DT1BZ KGpiLCAwKTsgXAorCQlQR19SRVRVUk5fTlVMTCgpOyBcCisJfSBcCitcCisJcmVzdWx0ID0gY29u dmZuKHYpOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCXJldHVybiByZXN1bHQ7IFwK K30KKworREVGSU5FX0pTT05CX09CSkVDVF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRf bnVtZXJpYywganNvbmJfdmFsdWVfdG9fbnVtZXJpY19kYXR1bSkKK0RFRklORV9KU09OQl9PQkpF Q1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2ZpZWxkX2Jvb2wsIGpzb25iX3ZhbHVlX3RvX2Jv b2xfZGF0dW0pCitERUZJTkVfSlNPTkJfT0JKRUNUX0ZJRUxEX1RZUEVEKGpzb25iX29iamVjdF9m aWVsZF9pbnQ0LCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVtKQorREVGSU5FX0pTT05CX09CSkVD VF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRfaW50OCwganNvbmJfdmFsdWVfdG9faW50 OF9kYXR1bSkKK0RFRklORV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0X2Zp ZWxkX2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKQorREVGSU5FX0pTT05CX09C SkVDVF9GSUVMRF9UWVBFRChqc29uYl9vYmplY3RfZmllbGRfaW50MiwganNvbmJfdmFsdWVfdG9f aW50Ml9kYXR1bSkKK0RFRklORV9KU09OQl9PQkpFQ1RfRklFTERfVFlQRUQoanNvbmJfb2JqZWN0 X2ZpZWxkX2Zsb2F0NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2RhdHVtKQorCiBEYXR1bQoganNv bl9hcnJheV9lbGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC02MTY3LDQgKzYzNjAsNCBA QCBqc29uX2NoZWNrX211dGFiaWxpdHkoT2lkIHR5cG9pZCwgYm9vbCBpc19qc29uYiwgYm9vbCAq aGFzX211dGFibGUpCiAJCQkJKmhhc19tdXRhYmxlID0gdHJ1ZTsKIAkJCWJyZWFrOwogCX0KLX0K K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCBmYTlhZTc5MDgyYi4uNDA2ZTA4ZGZmZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt NDc5OCwyNSArNDc5OCwzMCBAQAogICBwcm9zcmMgPT4gJ251bWVyaWNfcGdfbHNuJyB9LAogCiB7 IG9pZCA9PiAnMzU1NicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xlYW4nLAotICBw cm9uYW1lID0+ICdib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdq c29uYicsCisgIHByb25hbWUgPT4gJ2Jvb2wnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1 cHBvcnQnLCBwcm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAg cHJvc3JjID0+ICdqc29uYl9ib29sJyB9LAogeyBvaWQgPT4gJzM0NDknLCBkZXNjciA9PiAnY29u dmVydCBqc29uYiB0byBudW1lcmljJywKLSAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHByb3JldHR5 cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAorICBwcm9uYW1lID0+ICdu dW1lcmljJywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9 PiAnbnVtZXJpYycsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJf bnVtZXJpYycgfSwKIHsgb2lkID0+ICczNDUwJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8g aW50MicsCi0gIHByb25hbWUgPT4gJ2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQyJywgcHJvYXJn dHlwZXMgPT4gJ2pzb25iJywKKyAgcHJvbmFtZSA9PiAnaW50MicsIHByb3N1cHBvcnQgPT4gJ2pz b25iX2Nhc3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ2ludDInLCBwcm9hcmd0eXBlcyA9 PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDInIH0sCiB7IG9pZCA9PiAnMzQ1MScs IGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDQnLAotICBwcm9uYW1lID0+ICdpbnQ0Jywg cHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCisgIHByb25hbWUg PT4gJ2ludDQnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1cHBvcnQnLAorICBwcm9yZXR0 eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3JjID0+ICdqc29u Yl9pbnQ0JyB9LAogeyBvaWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBp bnQ4JywKLSAgcHJvbmFtZSA9PiAnaW50OCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnanNvbmInLAorICBwcm9uYW1lID0+ICdpbnQ4JywgcHJvc3VwcG9ydCA9PiAnanNv bmJfY2FzdF9zdXBwb3J0JywKKyAgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfaW50OCcgfSwKIHsgb2lkID0+ICczNDUzJywg ZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gZmxvYXQ0JywKLSAgcHJvbmFtZSA9PiAnZmxvYXQ0 JywgcHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKKyAgcHJv bmFtZSA9PiAnZmxvYXQ0JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKKyAg cHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3Jj ID0+ICdqc29uYl9mbG9hdDQnIH0sCiB7IG9pZCA9PiAnMjU4MCcsIGRlc2NyID0+ICdjb252ZXJ0 IGpzb25iIHRvIGZsb2F0OCcsCi0gIHByb25hbWUgPT4gJ2Zsb2F0OCcsIHByb3JldHR5cGUgPT4g J2Zsb2F0OCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCisgIHByb25hbWUgPT4gJ2Zsb2F0OCcs IHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ2Zs b2F0OCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfZmxvYXQ4 JyB9LAogCiAjIGZvcm1hdHRpbmcKQEAgLTEyNzY5LDQgKzEyNzc0LDM4IEBACiAgIHByb25hbWUg PT4gJ2hhc2hvaWQ4ZXh0ZW5kZWQnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywKICAgcHJvYXJndHlw ZXMgPT4gJ29pZDggaW50OCcsIHByb3NyYyA9PiAnaGFzaG9pZDhleHRlbmRlZCcgfSwKIAotXQor CisjIGpzb25iIGNhc3Qgb3B0aW1pemF0aW9uIHN1cHBvcnQgZnVuY3Rpb25zCit7IG9pZCA9PiAn OTk1MCcsIGRlc2NyID0+ICdwbGFubmVyIHN1cHBvcnQgZm9yIGpzb25iIGNhc3RzJywKKyAgcHJv bmFtZSA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAor ICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9y dCcgfSwKK3sgb2lkID0+ICc5OTUzJywgZGVzY3IgPT4gJ2V4dHJhY3QgbnVtZXJpYyBmcm9tIGpz b25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Zp ZWxkX251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4g J2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNvbixmaWVsZF9uYW1lfScsCisg IHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMnIH0sCit7IG9pZCA9PiAnOTk1 NCcsIGRlc2NyID0+ICdleHRyYWN0IGJvb2xlYW4gZnJvbSBqc29uYiBvYmplY3QgYnkgZmllbGQg bmFtZScsCisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF9ib29sJywgcHJvcmV0dHlw ZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywgcHJvYXJnbmFtZXMg PT4gJ3tmcm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9m aWVsZF9ib29sJyB9LAoreyBvaWQgPT4gJzk5NTUnLCBkZXNjciA9PiAnZXh0cmFjdCBpbnQ0IGZy b20ganNvbmIgb2JqZWN0IGJ5IGZpZWxkIG5hbWUnLAorICBwcm9uYW1lID0+ICdqc29uYl9vYmpl Y3RfZmllbGRfaW50NCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLAorICBwcm9hcmd0eXBlcyA9PiAn anNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGZpZWxkX25hbWV9JywKKyAg cHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfaW50NCcgfSwKK3sgb2lkID0+ICc5OTU2Jywg ZGVzY3IgPT4gJ2V4dHJhY3QgaW50OCBmcm9tIGpzb25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywK KyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2ludDgnLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9PiAne2Zy b21fanNvbixmaWVsZF9uYW1lfScsCisgIHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX2lu dDgnIH0sCit7IG9pZCA9PiAnOTk1NycsIGRlc2NyID0+ICdleHRyYWN0IGZsb2F0OCBmcm9tIGpz b25iIG9iamVjdCBieSBmaWVsZCBuYW1lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2Zp ZWxkX2Zsb2F0OCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsCisgIHByb2FyZ3R5cGVzID0+ICdq c29uYiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBw cm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF9mbG9hdDgnIH0sCit7IG9pZCA9PiAnOTk4MCcs IGRlc2NyID0+ICdleHRyYWN0IGludDIgZnJvbSBqc29uYiBvYmplY3QgYnkgZmllbGQgbmFtZScs CisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF9pbnQyJywgcHJvcmV0dHlwZSA9PiAn aW50MicsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tm cm9tX2pzb24sZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9maWVsZF9p bnQyJyB9LAoreyBvaWQgPT4gJzk5ODEnLCBkZXNjciA9PiAnZXh0cmFjdCBmbG9hdDQgZnJvbSBq c29uYiBvYmplY3QgYnkgZmllbGQgbmFtZScsCisgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9m aWVsZF9mbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLAorICBwcm9hcmd0eXBlcyA9PiAn anNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGZpZWxkX25hbWV9JywKKyAg cHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0JyB9LAorCitdClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA0ZTI0 Njc4NTJkYi4uYzMxZmIxMjBkZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBA IC00NTgsNyArNDU4LDQ4NyBAQCBDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgKIElOU0VS VCBJTlRPIHRlc3RfanNvbmIgVkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNjYWxhciInKSwKICgnYXJy YXknLCdbInplcm8iLCAib25lIiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJm MSI6OX1dJyksCi0oJ29iamVjdCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJm aWVsZDMiOm51bGwsICJmaWVsZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsi ZjEiOjl9fScpOworKCdvYmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwi ZmllbGQzIjpudWxsLCAiZmllbGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7 ImYxIjo5fSwgImZpZWxkNyI6IHRydWV9Jyk7CistLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlv bjogdGhlIHBsYW5uZXIgcmV3cml0ZXMgKGotPidrZXknKTo6dHlwZSBpbnRvIGEKKy0tIGRpcmVj dCB0eXBlZCBleHRyYWN0b3IgY2FsbCwgY3VycmVudGx5IGZvciBudW1lcmljLCBib29sLCBpbnQy LCBpbnQ0LCBpbnQ4LAorLS0gZmxvYXQ0LCBmbG9hdDguCistLSBTZWN0aW9uIDE6IHBsYW5uZXIg cmV3cml0ZSB2ZXJpZmljYXRpb24gKHJld3JpdHRlbiB0YXJnZXRzKQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Om51bWVyaWMgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29i amVjdF9maWVsZF9udW1lcmljKHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ3Jyk6 OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9ib29sKHRlc3RfanNvbiwgJ2ZpZWxkNyc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9pbnQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25i X29iamVjdF9maWVsZF9pbnQ4KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6 ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6 IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgodGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAg IEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dz KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1 dDoganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIodGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAg IEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dz KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAg IE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCh0ZXN0X2pzb24sICdmaWVsZDQnOjp0 ZXh0KQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkK KygzIHJvd3MpCisKKy0tIFNlY3Rpb24gMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24g Zm9yIHN1YnNjcmlwdGluZyBzeW50YXgKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMo dGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90 eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9ib29sKHRl c3RfanNvbiwgJ2ZpZWxkNyc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ0IEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfaW50NCh0ZXN0 X2pzb24sICdmaWVsZDQnOjp0ZXh0KQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUg PSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190 ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX2ludDgodGVzdF9q c29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0g J29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgo dGVzdF9qc29uLCAnZmllbGQ0Jzo6dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90 eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQyKHRl c3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gU2VjdGlvbiAyOiBjb3Jy ZWN0IGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSByZXdyaXR0ZW4gcGF0aAorU0VMRUNUICh0ZXN0X2pz b24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAgNAorKDEgcm93KQorCitT RUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ3Jyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOworIGJvb2wgCistLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisgaW50NCAKKy0tLS0tLQorICAgIDQKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQ4IAorLS0tLS0tCisgICAgNAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgIDQK KygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQyIAorLS0tLS0tCisgICAg NAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxvYXQ0IAorLS0tLS0t LS0KKyAgICAgIDQKKygxIHJvdykKKworLS0gU2VjdGlvbiAyYjogY29ycmVjdCBleGVjdXRpb24g dGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10p OjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyB0 ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgKHRl c3RfanNvblsnZmllbGQ3J10pOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgdGVzdF9qc29uIAorLS0tLS0tLS0tLS0KKyAgICAgICAgIDQK KygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgdGVzdF9qc29uIAorLS0tLS0tLS0t LS0KKyAgICAgICAgIDQKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6 ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyB0ZXN0 X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3Rf anNvblsnZmllbGQ0J10pOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAgNAorKDEgcm93KQor CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworIHRlc3RfanNvbiAKKy0tLS0tLS0tLS0tCisgICAg ICAgICA0CisoMSByb3cpCisKKy0tIFNlY3Rpb24gMzogTlVMTCBzZW1hbnRpY3MgKG1pc3Npbmcg a2V5LCBKU09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQzJyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gSlNPTiBudWxsCisgbnVtZXJpYyAKKy0tLS0tLS0tLQorICAgICAgICAKKygxIHJv dykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6Om51bWVyaWMgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2luZyBrZXkKKyBu dW1lcmljIAorLS0tLS0tLS0tCisgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNv biAtPiAneCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJy YXknOyAgLS0gbm9uLW9iamVjdAorIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgICAgCisoMSBy b3cpCisKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6Ym9vbCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGJvb2wgcGF0aAor IGJvb2wgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxk MycpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IEpTT04gbnVsbCwgaW50NCBwYXRoCisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKwor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2luZyBrZXksIGludDQKKyBpbnQ0 IAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQz Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBKU09OIG51bGwsIGZsb2F0OCBwYXRoCisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgICAKKygx IHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmZsb2F0OCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwg ZmxvYXQ4CisgZmxvYXQ4IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbCwgaW50MiBwYXRoCisgaW50MiAKKy0tLS0tLQor ICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2lu ZyBrZXksIGludDIKKyBpbnQyIAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQzJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGZsb2F0NCBwYXRoCisgZmxvYXQ0IAorLS0t LS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0 ZW50Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ0CisgZmxvYXQ0IAorLS0tLS0tLS0KKyAgICAgICAKKygx IHJvdykKKworLS0gU2VjdGlvbiAzYjogTlVMTCBzZW1hbnRpY3MgdGhyb3VnaCBzdWJzY3JpcHRp bmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQzJ10pOjpudW1lcmljIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbAorIHRlc3Rf anNvbiAKKy0tLS0tLS0tLS0tCisgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9q c29uWydub25leGlzdGVudCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleQorIHRlc3RfanNvbiAKKy0tLS0tLS0tLS0t CisgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAodGVzdF9qc29uWydub25leGlzdGVudCdd KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0t IG1pc3Npbmcga2V5LCBmbG9hdDgKKyB0ZXN0X2pzb24gCistLS0tLS0tLS0tLQorICAgICAgICAg IAorKDEgcm93KQorCistLSBTZWN0aW9uIDQ6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzIChzY2FsYXIg YW5kIGNvbnRhaW5lciB0eXBlcykKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6bnVt ZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJp bmcgdG8gbnVtZXJpYworRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBu dW1lcmljCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmJvb2wgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGJvb2wKK0VSUk9S OiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYm9vbGVhbgorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIG51bWVyaWMKK0VSUk9SOiAgY2Fubm90IGNhc3Qg anNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUICh0ZXN0X2pzb24g LT4gJ2ZpZWxkMScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIHN0cmluZyB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmlu ZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50OCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8g aW50OAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBiaWdpbnQKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBmbG9hdDgKK0VSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgZG91YmxlIHByZWNpc2lvbgorU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGludDQKK0VSUk9SOiAgY2Fubm90IGNhc3QganNv bmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgaW50ZWdlcgorU0VMRUNUICh0ZXN0X2pzb24gLT4g J2ZpZWxkNScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ4CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5 IG9yIG9iamVjdCB0byB0eXBlIGRvdWJsZSBwcmVjaXNpb24KK1NFTEVDVCAodGVzdF9qc29uIC0+ ICdmaWVsZDEnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBzdHJpbmcgdG8gaW50MgorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcg dG8gdHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDQg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRv IGZsb2F0NAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSByZWFsCitT RUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50MgorRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBzbWFsbGludAorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0IGpz b25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHJlYWwKKy0tIFNlY3Rpb24gNGI6IHR5cGUtbWlz bWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNv blsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAn b2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIG51bWVyaWMKK1NFTEVDVCAodGVzdF9qc29uWydmaWVsZDEnXSk6Omlu dDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5n IHRvIGludDgKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYmlnaW50 CistLSBTZWN0aW9uIDU6IGRpcmVjdCBjYWxscyB0byB0eXBlZCBleHRyYWN0b3IgYnVpbHRpbnMK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYygneyJhIjogMX0nOjpqc29uYiwgJ2En KTsKKyBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7CisganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVj dF9maWVsZF9ib29sKCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9m aWVsZF9ib29sIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUIGpzb25iX29iamVjdF9maWVsZF9ib29sKCd7ImEiOiBmYWxzZX0nOjpqc29uYiwgJ2EnKTsK KyBqc29uYl9vYmplY3RfZmllbGRfYm9vbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogNDJ9Jzo6 anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIGpz b25iX29iamVjdF9maWVsZF9pbnQ4KCd7ImEiOiA5ODc2NTQzMjEwfSc6Ompzb25iLCAnYScpOwor IGpzb25iX29iamVjdF9maWVsZF9pbnQ4IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICA5ODc2NTQzMjEwCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmll bGRfZmxvYXQ4KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJh IjogNDJ9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKwor U0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAzfSc6Ompzb25iLCAnYScpOwor IGpzb25iX29iamVjdF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmll bGRfZmxvYXQ0KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7 ImEiOiAxLjV9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxLjUKKygx IHJvdykKKworLS0gZGlyZWN0IGNhbGxzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIGpzb25iX29i amVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAxfSc6Ompzb25iLCAnbWlzc2luZycpOworIGpzb25i X29iamVjdF9maWVsZF9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfbnVtZXJpYygneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKKyBqc29uYl9vYmplY3Rf ZmllbGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Jv b2woJ3siYSI6IHRydWV9Jzo6anNvbmIsICdtaXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxk X2Jvb2wgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBq c29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogMX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKKyBq c29uYl9vYmplY3RfZmllbGRfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxk X2ludDQoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2lu dDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IDEuMH0n Ojpqc29uYiwgJ21pc3NpbmcnKTsKKyBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDF9Jzo6anNvbmIsICdt aXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIGpzb25i X29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworIGpzb25iX29i amVjdF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0 KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zs b2F0NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IG51bGx9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworLS0gZGlyZWN0IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25i X29iamVjdF9maWVsZF9udW1lcmljKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CitFUlJP UjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIG51bWVyaWMKK1NFTEVDVCBqc29u Yl9vYmplY3RfZmllbGRfYm9vbCgneyJhIjogMX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgbnVtZXJpYyB0byB0eXBlIGJvb2xlYW4KK1NFTEVDVCBqc29uYl9vYmpl Y3RfZmllbGRfbnVtZXJpYygneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRh aW5lciB0byBzY2FsYXIKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0 IHRvIHR5cGUgbnVtZXJpYworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7ImEiOiAi dGV4dCJ9Jzo6anNvbmIsICdhJyk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0 byB0eXBlIGludGVnZXIKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50OCgneyJhIjogdHJ1 ZX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYm9vbGVhbiB0byB0 eXBlIGJpZ2ludAorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IFsxLDJd fSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAorRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6ICJ0ZXh0In0nOjpqc29uYiwgJ2EnKTsg IC0tIHN0cmluZyB0byBpbnQyCitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0 eXBlIHNtYWxsaW50CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogdHJ1 ZX0nOjpqc29uYiwgJ2EnKTsgIC0tIGJvb2wgdG8gZmxvYXQ0CitFUlJPUjogIGNhbm5vdCBjYXN0 IGpzb25iIGJvb2xlYW4gdG8gdHlwZSByZWFsCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2lu dDIoJ3siYSI6IFsxLDJdfSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGludDIKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgc21hbGxpbnQK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiB7IngiOjF9fSc6Ompzb25i LCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0NAorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29u YiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSByZWFsCistLSBkaXJlY3QgY2FsbHM6IGludGVnZXIg b3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogOTk5OTk5OTk5 OX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgaW50ZWdlciBvdXQgb2YgcmFuZ2UKKy0tIGRpcmVj dCBjYWxsczogaW50MiBvdmVyZmxvdworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiA5OTk5OX0nOjpqc29uYiwgJ2EnKTsKK0VSUk9SOiAgc21hbGxpbnQgb3V0IG9mIHJhbmdl CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCkBAIC01ODYsNyArMTA2Niw4IEBA IFNFTEVDVCBqc29uYl9vYmplY3Rfa2V5cyh0ZXN0X2pzb24pIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKICBmaWVsZDQKICBmaWVsZDUKICBmaWVsZDYKLSg2IHJv d3MpCisgZmllbGQ3CisoNyByb3dzKQogCiAtLSBudWxscwogU0VMRUNUICh0ZXN0X2pzb24tPidm aWVsZDMnKSBJUyBOVUxMIEFTIGV4cGVjdF9mYWxzZSBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u Yi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggZDI4ZWQxYzFlODUu LjYxYzU2NzExMGZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNTUsNyArMTU1LDEyMyBA QCBDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgKIElOU0VSVCBJTlRPIHRlc3RfanNvbmIg VkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNjYWxhciInKSwKICgnYXJyYXknLCdbInplcm8iLCAib25l IiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJmMSI6OX1dJyksCi0oJ29iamVj dCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJmaWVsZDMiOm51bGwsICJmaWVs ZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9fScpOworKCdvYmpl Y3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwiZmllbGQzIjpudWxsLCAiZmll bGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7ImYxIjo5fSwgImZpZWxkNyI6 IHRydWV9Jyk7CisKKy0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiB0aGUgcGxhbm5lciBy ZXdyaXRlcyAoai0+J2tleScpOjp0eXBlIGludG8gYQorLS0gZGlyZWN0IHR5cGVkIGV4dHJhY3Rv ciBjYWxsLCBjdXJyZW50bHkgZm9yIG51bWVyaWMsIGJvb2wsIGludDIsIGludDQsIGludDgsCist LSBmbG9hdDQsIGZsb2F0OC4KKworLS0gU2VjdGlvbiAxOiBwbGFubmVyIHJld3JpdGUgdmVyaWZp Y2F0aW9uIChyZXdyaXR0ZW4gdGFyZ2V0cykKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNycpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25f dHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3Rf anNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRp b24gZm9yIHN1YnNjcmlwdGluZyBzeW50YXgKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAodGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNCddKTo6aW50OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29u WydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydm aWVsZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0 J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor CistLSBTZWN0aW9uIDI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggdGhlIHJld3JpdHRlbiBw YXRoCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkNycpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsK K1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmludDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQy IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVDVCAodGVz dF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKworLS0gU2VjdGlvbiAyYjogY29ycmVjdCBleGVjdXRpb24gdGhyb3Vn aCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpudW1l cmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVDVCAo dGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQ0J10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKK1NFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10p OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVD VCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gMzogTlVMTCBzZW1hbnRpY3MgKG1pc3Np bmcga2V5LCBKU09OIG51bGwsIG5vbi1vYmplY3QgaW5wdXQpCitTRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQzJyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOyAgLS0gSlNPTiBudWxsCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQn KTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBtaXNzaW5nIGtleQorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ3gnKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ2FycmF5JzsgIC0tIG5vbi1vYmplY3QKK1NFTEVD VCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGJvb2wgcGF0aAorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbCwgaW50NCBwYXRoCitTRUxFQ1QgKHRlc3RfanNvbiAt PiAnbm9uZXhpc3RlbnQnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgaW50NAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2Zp ZWxkMycpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OyAgLS0gSlNPTiBudWxsLCBmbG9hdDggcGF0aAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4 aXN0ZW50Jyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ4CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQz Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0g SlNPTiBudWxsLCBpbnQyIHBhdGgKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdub25leGlzdGVudCcp OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1p c3Npbmcga2V5LCBpbnQyCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQzJyk6OmZsb2F0NCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGws IGZsb2F0NCBwYXRoCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9uZXhpc3RlbnQnKTo6ZmxvYXQ0 IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcg a2V5LCBmbG9hdDQKKworLS0gU2VjdGlvbiAzYjogTlVMTCBzZW1hbnRpY3MgdGhyb3VnaCBzdWJz Y3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQzJ10pOjpudW1lcmljIEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbAor U0VMRUNUICh0ZXN0X2pzb25bJ25vbmV4aXN0ZW50J10pOjpudW1lcmljIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5CitTRUxFQ1QgKHRl c3RfanNvblsnbm9uZXhpc3RlbnQnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ4CisKKy0tIFNlY3Rpb24g NDogdHlwZS1taXNtYXRjaCBlcnJvcnMgKHNjYWxhciBhbmQgY29udGFpbmVyIHR5cGVzKQorU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQxJyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGJvb2wKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDUnKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBhcnJheSB0byBudW1lcmljCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3Ry aW5nIHRvIGludDQKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gaW50OAor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGZsb2F0OAorU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIGFycmF5IHRvIGludDQKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDUnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsgIC0tIGFycmF5IHRvIGZsb2F0OAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpp bnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmlu ZyB0byBpbnQyCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0 CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50MgorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0CisKKy0tIFNlY3Rpb24gNGI6IHR5cGUt bWlzbWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4CitTRUxFQ1QgKHRlc3Rf anNvblsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCitTRUxFQ1QgKHRlc3RfanNvblsnZmll bGQxJ10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0Jzsg IC0tIHN0cmluZyB0byBpbnQ4CisKKy0tIFNlY3Rpb24gNTogZGlyZWN0IGNhbGxzIHRvIHR5cGVk IGV4dHJhY3RvciBidWlsdGlucworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmljKCd7 ImEiOiAxfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9udW1lcmlj KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9i b29sKCd7ImEiOiB0cnVlfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9ib29sKCd7ImEiOiBmYWxzZX0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfaW50NCgneyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2ludDgoJ3siYSI6IDk4NzY1NDMyMTB9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMy4xNH0nOjpqc29uYiwgJ2EnKTsKK1NFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDN9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMy4xNH0nOjpqc29uYiwgJ2EnKTsK K1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAxLjV9Jzo6anNvbmIsICdh Jyk7CistLSBkaXJlY3QgY2FsbHM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX251bWVyaWMoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7CitTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7CitTRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2Jvb2woJ3siYSI6IHRydWV9Jzo6anNvbmIsICdtaXNzaW5n Jyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IDF9Jzo6anNvbmIsICdt aXNzaW5nJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IG51bGx9Jzo6 anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMS4w fSc6Ompzb25iLCAnbWlzc2luZycpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiAxfSc6Ompzb25iLCAnbWlzc2luZycpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9p bnQyKCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9mbG9hdDQoJ3siYSI6IDEuMH0nOjpqc29uYiwgJ21pc3NpbmcnKTsKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiBudWxsfSc6Ompzb25iLCAnYScpOworLS0gZGlyZWN0 IGNhbGxzOiB0eXBlLW1pc21hdGNoIGVycm9ycworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9u dW1lcmljKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX2Jvb2woJ3siYSI6IDF9Jzo6anNvbmIsICdhJyk7CitTRUxFQ1QganNvbmJfb2JqZWN0 X2ZpZWxkX251bWVyaWMoJ3siYSI6IHsieCI6MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gc2NhbGFyCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6ICJ0ZXh0 In0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50OCgneyJhIjog dHJ1ZX0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4KCd7 ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDgKK1NFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogInRleHQifSc6Ompzb25iLCAnYScpOyAg LS0gc3RyaW5nIHRvIGludDIKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEi OiB0cnVlfSc6Ompzb25iLCAnYScpOyAgLS0gYm9vbCB0byBmbG9hdDQKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWlu ZXIgdG8gaW50MgorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHsieCI6 MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0CistLSBkaXJlY3QgY2Fs bHM6IGludGVnZXIgb3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJh IjogOTk5OTk5OTk5OX0nOjpqc29uYiwgJ2EnKTsKKy0tIGRpcmVjdCBjYWxsczogaW50MiBvdmVy ZmxvdworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiA5OTk5OX0nOjpqc29u YiwgJ2EnKTsKIAogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CkBAIC0xNjE0LDQgKzE3MzAsNCBAQCBz ZWxlY3QgKCdbeyJuYW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0nOjpqc29uYikubmFt ZTsKIHNlbGVjdCAoJ3RydWUnOjpqc29uYik6OmJvb2w7CiBzZWxlY3QgKCd0cnVlJzo6anNvbmIp LmJvb2w7CiBzZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKTo6dGV4dDsKLXNlbGVj dCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNvbmIpLnRleHQ7CitzZWxlY3QgKCd7InRleHQiOiAi aGVsbG8ifSc6Ompzb25iKS50ZXh0OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NTIuMAoK --0000000000006dce3d06506a04a1 Content-Type: application/octet-stream; name="v5-0005-jsonb-optimize-jsonpath-first-casts-to-scalar-typ.patch" Content-Disposition: attachment; filename="v5-0005-jsonb-optimize-jsonpath-first-casts-to-scalar-typ.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mogqanhj4 RnJvbSBiZTQzY2RhOGQwNTc2N2I0ZmVlNmE2MWYxNDhjNTUwY2Y4Zjc4Y2QwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IEZyaSwgMTAgQXByIDIwMjYgMTQ6MzQ6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIIHY1IDUvNV0g anNvbmI6IG9wdGltaXplIGpzb25wYXRoLWZpcnN0IGNhc3RzIHRvIHNjYWxhciB0eXBlcwoKRXh0 ZW5kIHRoZSBleGlzdGluZyBzdXBwb3J0LWZ1bmN0aW9uIHJld3JpdGUgdG8ganNvbmJfcGF0aF9x dWVyeV9maXJzdAphbmQganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiBzbyBjYXN0cyBhcmUgcmV3 cml0dGVuIGRpcmVjdGx5IHRvCmV4cGxpY2l0IHR5cGVkIGV4dHJhY3RvciBmdW5jdGlvbnMuCgpU aGlzIHBhdGNoIHN1cHBvcnRzIG51bWVyaWMsIGJvb2wsIGludDIsIGludDQsIGludDgsIGZsb2F0 NCwgYW5kCmZsb2F0OCwgYW5kIGxlYXZlcyBqc29uYl9wYXRoX3F1ZXJ5IG91dCBvZiBzY29wZS4K LS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAgIHwgMTAyICsrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgfCAgMTcgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgfCAxMzYgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgICAgfCAgNzMgKysrCiBzcmMvaW5jbHVkZS91dGlscy9qc29uZnVu Y3MuaCAgICAgICAgIHwgIDEwICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0 ICAgfCA4NDYgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2pzb25iLnNxbCAgICAgICAgfCAyMjkgKysrKystLQogNyBmaWxlcyBjaGFuZ2VkLCAxMTE0IGlu c2VydGlvbnMoKyksIDI5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IGQ1 YzA4NzFhMjEzLi4yOTg1Nzc3ZjFjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTE4MzYsNiAr MTgzNiw4IEBAIGNhbm5vdENhc3RKc29uYlZhbHVlKGVudW0gamJ2VHlwZSB0eXBlLCBjb25zdCBj aGFyICpzcWx0eXBlLCBOb2RlICplc2NvbnRleHQpCiAgKiAgIC0ganNvbmJfYXJyYXlfZWxlbWVu dChqLCBpZHgpICAgLyAgaiAtPiBpZHggICAgLyAgaltpZHhdCiAgKiAgIC0ganNvbmJfZXh0cmFj dF9wYXRoKGosIC4uLikgICAgLyAgaiAjPiAne2EsYn0nCiAgKiAgIC0gbXVsdGktc3Vic2NyaXB0 IGNoYWlucyAgICAgICAgIGpbJ2EnXVsnYiddLCBqWydhJ11bMF0sIGV0Yy4KKyAqICAgLSBqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0KGosIHBhdGggWywgdmFycyBbLCBzaWxlbnRdXSkKKyAqICAgLSBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KGosIHBhdGggWywgdmFycyBbLCBzaWxlbnRdXSkKICAq LwogRGF0dW0KIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQpAQCAtMjAxMiwx MyArMjAxNCwxMyBAQCBqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJLyoK IAkJICogVmVyaWZ5IHRoZSBpbm5lciBleHRyYWN0aW9uIGZ1bmN0aW9uIGFuZCBtYXAgdGhlIG91 dGVyIGNhc3QgdG8gdGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgdHlwZWQgZXh0cmFjdG9yLiAgRWFj aCBzdXBwb3J0ZWQgZXh0cmFjdGlvbiBmYW1pbHkKLQkJICogaGFzIGl0cyBvd24gc2V0IG9mIHR5 cGVkIHJld3JpdGUgdGFyZ2V0cy4KKwkJICogaGFzIGl0cyBvd24gc2V0IG9mIHR5cGVkIHJld3Jp dGUgdGFyZ2V0cyBhbmQgZXhwZWN0ZWQgYXJnIGNvdW50LgogCQkgKi8KLQkJaWYgKGxpc3RfbGVu Z3RoKGlubmVyX2FyZ3MpICE9IDIpCi0JCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKLQogCQlp ZiAoaW5uZXJfZnVuY2lkID09IEZfSlNPTkJfT0JKRUNUX0ZJRUxEKQogCQl7CisJCQlpZiAobGlz dF9sZW5ndGgoaW5uZXJfYXJncykgIT0gMikKKwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsK KwogCQkJaWYgKGZleHByLT5mdW5jaWQgPT0gRl9OVU1FUklDX0pTT05CKQogCQkJewogCQkJCXJl cGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX05VTUVSSUM7CkBAIC0yMDU5 LDYgKzIwNjEsOSBAQCBqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJfQog CQllbHNlIGlmIChpbm5lcl9mdW5jaWQgPT0gRl9KU09OQl9BUlJBWV9FTEVNRU5UKQogCQl7CisJ CQlpZiAobGlzdF9sZW5ndGgoaW5uZXJfYXJncykgIT0gMikKKwkJCQlQR19SRVRVUk5fUE9JTlRF UihOVUxMKTsKKwogCQkJaWYgKGZleHByLT5mdW5jaWQgPT0gRl9OVU1FUklDX0pTT05CKQogCQkJ ewogCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9OVU1FUklD OwpAQCAtMjA5OSw2ICsyMTA0LDkgQEAganNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJCX0KIAkJZWxzZSBpZiAoaW5uZXJfZnVuY2lkID09IEZfSlNPTkJfRVhUUkFDVF9QQVRI KQogCQl7CisJCQlpZiAobGlzdF9sZW5ndGgoaW5uZXJfYXJncykgIT0gMikKKwkJCQlQR19SRVRV Uk5fUE9JTlRFUihOVUxMKTsKKwogCQkJaWYgKGZleHByLT5mdW5jaWQgPT0gRl9OVU1FUklDX0pT T05CKQogCQkJewogCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRI X05VTUVSSUM7CkBAIC0yMTM3LDYgKzIxNDUsOTIgQEAganNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQllbHNlCiAJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAJCX0K KwkJZWxzZSBpZiAoaW5uZXJfZnVuY2lkID09IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVCkKKwkJ eworCQkJaWYgKGxpc3RfbGVuZ3RoKGlubmVyX2FyZ3MpICE9IDQpCisJCQkJUEdfUkVUVVJOX1BP SU5URVIoTlVMTCk7CisKKwkJCWlmIChmZXhwci0+ZnVuY2lkID09IEZfTlVNRVJJQ19KU09OQikK KwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1Rf TlVNRVJJQzsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gTlVNRVJJQ09JRDsKKwkJCX0KKwkJ CWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9CT09MX0pTT05CKQorCQkJeworCQkJCXJlcGxh Y2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9CT09MOworCQkJCXJlcGxh Y2VtZW50X3JldHR5cGUgPSBCT09MT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNp ZCA9PSBGX0lOVDRfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09O Ql9QQVRIX1FVRVJZX0ZJUlNUX0lOVDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDRP SUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UOF9KU09OQikKKwkJ CXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1RfSU5U ODsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UOE9JRDsKKwkJCX0KKwkJCWVsc2UgaWYg KGZleHByLT5mdW5jaWQgPT0gRl9GTE9BVDhfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRf ZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX0ZMT0FUODsKKwkJCQlyZXBsYWNlbWVu dF9yZXR0eXBlID0gRkxPQVQ4T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHItPmZ1bmNpZCA9 PSBGX0lOVDJfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9Q QVRIX1FVRVJZX0ZJUlNUX0lOVDI7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IElOVDJPSUQ7 CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfRkxPQVQ0X0pTT05CKQorCQkJ eworCQkJCXJlcGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9GTE9B VDQ7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlwZSA9IEZMT0FUNE9JRDsKKwkJCX0KKwkJCWVsc2UK KwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKwkJfQorCQllbHNlIGlmIChpbm5lcl9mdW5j aWQgPT0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaKQorCQl7CisJCQlpZiAobGlzdF9sZW5n dGgoaW5uZXJfYXJncykgIT0gNCkKKwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQkJ aWYgKGZleHByLT5mdW5jaWQgPT0gRl9OVU1FUklDX0pTT05CKQorCQkJeworCQkJCXJlcGxhY2Vt ZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9OVU1FUklDOworCQkJCXJl cGxhY2VtZW50X3JldHR5cGUgPSBOVU1FUklDT0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHIt PmZ1bmNpZCA9PSBGX0JPT0xfSlNPTkIpCisJCQl7CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0g Rl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX0JPT0w7CisJCQkJcmVwbGFjZW1lbnRfcmV0dHlw ZSA9IEJPT0xPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZfSU5UNF9K U09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BBVEhfUVVFUllf RklSU1RfVFpfSU5UNDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UNE9JRDsKKwkJCX0K KwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9JTlQ4X0pTT05CKQorCQkJeworCQkJCXJl cGxhY2VtZW50X2Z1bmNpZCA9IEZfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9JTlQ4OworCQkJ CXJlcGxhY2VtZW50X3JldHR5cGUgPSBJTlQ4T0lEOworCQkJfQorCQkJZWxzZSBpZiAoZmV4cHIt PmZ1bmNpZCA9PSBGX0ZMT0FUOF9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQg PSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFpfRkxPQVQ4OworCQkJCXJlcGxhY2VtZW50X3Jl dHR5cGUgPSBGTE9BVDhPSUQ7CisJCQl9CisJCQllbHNlIGlmIChmZXhwci0+ZnVuY2lkID09IEZf SU5UMl9KU09OQikKKwkJCXsKKwkJCQlyZXBsYWNlbWVudF9mdW5jaWQgPSBGX0pTT05CX1BBVEhf UVVFUllfRklSU1RfVFpfSU5UMjsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gSU5UMk9JRDsK KwkJCX0KKwkJCWVsc2UgaWYgKGZleHByLT5mdW5jaWQgPT0gRl9GTE9BVDRfSlNPTkIpCisJCQl7 CisJCQkJcmVwbGFjZW1lbnRfZnVuY2lkID0gRl9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX0ZM T0FUNDsKKwkJCQlyZXBsYWNlbWVudF9yZXR0eXBlID0gRkxPQVQ0T0lEOworCQkJfQorCQkJZWxz ZQorCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworCQl9CiAJCWVsc2UKIAkJCVBHX1JFVFVS Tl9QT0lOVEVSKE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggYjNmZDFk ZmI2MzEuLjMyY2RiNWM2MWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC05Njks NyArOTY5LDcgQEAganNvbmJfb2JqZWN0X2ZpZWxkX2xvb2t1cChKc29uYiAqamIsIHRleHQgKmtl eSwgSnNvbmJWYWx1ZSAqdmJ1ZikKICAqIFRoZSBtZXNzYWdlIHdvcmRpbmcgbWF0Y2hlcyBjYW5u b3RDYXN0SnNvbmJWYWx1ZSgpIGluIGpzb25iLmMgc28gdGhhdAogICogdGhlIG9wdGltaXplZCBh bmQgdW5vcHRpbWl6ZWQgcGF0aHMgcHJvZHVjZSBpZGVudGljYWwgZXJyb3JzLgogICovCi1zdGF0 aWMgdm9pZAordm9pZAoganNvbmJfZmllbGRfY2FzdF9lcnJvcihKc29uYlZhbHVlICp2LCBjb25z dCBjaGFyICpzcWx0eXBlKQogewogCWNvbnN0IGNoYXIgKmpzb250eXBlOwpAQCAtMTAxNiw3ICsx MDE2LDcgQEAganNvbmJfZmllbGRfY2FzdF9lcnJvcihKc29uYlZhbHVlICp2LCBjb25zdCBjaGFy ICpzcWx0eXBlKQogICogdmFsdWUgYXMgRGF0dW0uICBUaGVzZSBhcmUgdGhlIG9ubHkgcGxhY2Ug d2hlcmUgY29udmVyc2lvbiBzZW1hbnRpY3MKICAqIGxpdmU7IHRoZSB3cmFwcGVyIG1hY3JvIGJl bG93IGlzIGludGVudGlvbmFsbHkga2VwdCB0aGluLgogICovCi1zdGF0aWMgRGF0dW0KK0RhdHVt CiBqc29uYl92YWx1ZV90b19udW1lcmljX2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CiAJaWYgKHYt PnR5cGUgIT0gamJ2TnVtZXJpYykKQEAgLTEwMjUsNyArMTAyNSw3IEBAIGpzb25iX3ZhbHVlX3Rv X251bWVyaWNfZGF0dW0oSnNvbmJWYWx1ZSAqdikKIAlyZXR1cm4gTnVtZXJpY0dldERhdHVtKERh dHVtR2V0TnVtZXJpY0NvcHkoTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1lcmljKSkpOwogfQog Ci1zdGF0aWMgRGF0dW0KK0RhdHVtCiBqc29uYl92YWx1ZV90b19ib29sX2RhdHVtKEpzb25iVmFs dWUgKnYpCiB7CiAJaWYgKHYtPnR5cGUgIT0gamJ2Qm9vbCkKQEAgLTEwMzQsNyArMTAzNCw3IEBA IGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0oSnNvbmJWYWx1ZSAqdikKIAlyZXR1cm4gQm9vbEdl dERhdHVtKHYtPnZhbC5ib29sZWFuKTsKIH0KIAotc3RhdGljIERhdHVtCitEYXR1bQoganNvbmJf dmFsdWVfdG9faW50NF9kYXR1bShKc29uYlZhbHVlICp2KQogewogCWlmICh2LT50eXBlICE9IGpi dk51bWVyaWMpCkBAIC0xMDQzLDcgKzEwNDMsNyBAQCBqc29uYl92YWx1ZV90b19pbnQ0X2RhdHVt KEpzb25iVmFsdWUgKnYpCiAJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ0 LCBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKIH0KIAotc3RhdGljIERhdHVtCitE YXR1bQoganNvbmJfdmFsdWVfdG9faW50OF9kYXR1bShKc29uYlZhbHVlICp2KQogewogCWlmICh2 LT50eXBlICE9IGpidk51bWVyaWMpCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBqc29uYl92YWx1ZV90 b19pbnQ4X2RhdHVtKEpzb25iVmFsdWUgKnYpCiAJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDEo bnVtZXJpY19pbnQ4LCBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMpKTsKIH0KIAotc3Rh dGljIERhdHVtCitEYXR1bQoganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKEpzb25iVmFsdWUg KnYpCiB7CiAJaWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKQEAgLTEwNjAsNyArMTA2MCw4IEBA IGpzb25iX3ZhbHVlX3RvX2Zsb2F0OF9kYXR1bShKc29uYlZhbHVlICp2KQogCiAJcmV0dXJuIERp cmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19mbG9hdDgsIE51bWVyaWNHZXREYXR1bSh2LT52YWwu bnVtZXJpYykpOwogfQotc3RhdGljIERhdHVtCisKK0RhdHVtCiBqc29uYl92YWx1ZV90b19pbnQy X2RhdHVtKEpzb25iVmFsdWUgKnYpCiB7CiAJaWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKQEAg LTEwNjksNyArMTA3MCw3IEBAIGpzb25iX3ZhbHVlX3RvX2ludDJfZGF0dW0oSnNvbmJWYWx1ZSAq dikKIAlyZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDIsIE51bWVyaWNHZXRE YXR1bSh2LT52YWwubnVtZXJpYykpOwogfQogCi1zdGF0aWMgRGF0dW0KK0RhdHVtCiBqc29uYl92 YWx1ZV90b19mbG9hdDRfZGF0dW0oSnNvbmJWYWx1ZSAqdikKIHsKIAlpZiAodi0+dHlwZSAhPSBq YnZOdW1lcmljKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4 ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXggMGVjOWI0 ZGYyZWYuLjIwNDg2OTYyNDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMK QEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgogI2luY2x1ZGUgInV0 aWxzL2Zvcm1hdHRpbmcuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRp bHMvanNvbmZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgpAQCAtNjg3LDYg KzY4OCwxNDEgQEAganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eihQR19GVU5DVElPTl9BUkdTKQog CXJldHVybiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludGVybmFsKGZjaW5mbywgdHJ1ZSk7CiB9 CiAKKy8qCisgKiBMb29rdXAgaGVscGVyIGZvciB0aGUganNvbmJfcGF0aF9xdWVyeV9maXJzdCB0 eXBlZCBleHRyYWN0b3IgZmFtaWx5LgorICoKKyAqIEludm9rZXMgdGhlIGpzb25wYXRoIGV4ZWN1 dGlvbiBtYWNoaW5lcnkgYW5kIHJldHVybnMgdGhlIGZpcnN0IHJlc3VsdCBhcworICogYW4gaW4t bWVtb3J5IEpzb25iVmFsdWUsIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gcmVzdWx0IG9yIHRoZSBy ZXN1bHQgaXMKKyAqIEpTT04gbnVsbC4gIFRoaXMgYXZvaWRzIHRoZSBKc29uYlZhbHVlVG9Kc29u YiByb3VuZC10cmlwIHRoYXQgdGhlCisgKiB1bm9wdGltaXplZCBjYXN0KGpzb25iX3BhdGhfcXVl cnlfZmlyc3QoLi4uKSkgcGF0aCB3b3VsZCBwZXJmb3JtLgorICovCitzdGF0aWMgSnNvbmJWYWx1 ZSAqCitqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2xvb2t1cChKc29uYiAqamIsIEpzb25QYXRoICpq cCwgSnNvbmIgKnZhcnMsCisJCQkJCQkJICBib29sIHNpbGVudCkKK3sKKwlKc29uVmFsdWVMaXN0 IGZvdW5kOworCUpzb25iVmFsdWUgKnY7CisKKwlKc29uVmFsdWVMaXN0SW5pdCgmZm91bmQpOwor CisJKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZy b21Kc29uYiwKKwkJCQkJCSAgIGNvdW50VmFyaWFibGVzRnJvbUpzb25iLAorCQkJCQkJICAgamIs ICFzaWxlbnQsICZmb3VuZCwgZmFsc2UpOworCisJaWYgKEpzb25WYWx1ZUxpc3RJc0VtcHR5KCZm b3VuZCkpCisJCXJldHVybiBOVUxMOworCisJdiA9IEpzb25WYWx1ZUxpc3RIZWFkKCZmb3VuZCk7 CisJaWYgKHYtPnR5cGUgPT0gamJ2TnVsbCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gdjsK K30KKworLyoKKyAqIFRoaW4td3JhcHBlciBtYWNybyBmb3IgdGhlIGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfPHR5cGU+IGV4dHJhY3RvciBmYW1pbHkuCisgKiBTYW1lIHBhdHRlcm4gYXMgdGhlIG90 aGVyIHR5cGVkIGV4dHJhY3RvciBmYW1pbGllcyBpbiBqc29uZnVuY3MuYy4KKyAqLworI2RlZmlu ZSBERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBFRChmbmFtZSwgY29udmZuKSBcCitE YXR1bSBcCitmbmFtZShQR19GVU5DVElPTl9BUkdTKSBcCit7IFwKKwlKc29uYgkgICAqamIgPSBQ R19HRVRBUkdfSlNPTkJfUCgwKTsgXAorCUpzb25QYXRoICAgKmpwID0gUEdfR0VUQVJHX0pTT05Q QVRIX1AoMSk7IFwKKwlKc29uYgkgICAqdmFycyA9IFBHX0dFVEFSR19KU09OQl9QKDIpOyBcCisJ Ym9vbAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7IFwKKwlKc29uYlZhbHVlICp2OyBcCisJ RGF0dW0JCXJlc3VsdDsgXAorXAorCXYgPSBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2xvb2t1cChq YiwganAsIHZhcnMsIHNpbGVudCk7IFwKKwlpZiAodiA9PSBOVUxMKSBcCisJeyBcCisJCVBHX0ZS RUVfSUZfQ09QWShqYiwgMCk7IFwKKwkJUEdfRlJFRV9JRl9DT1BZKGpwLCAxKTsgXAorCQlQR19G UkVFX0lGX0NPUFkodmFycywgMik7IFwKKwkJUEdfUkVUVVJOX05VTEwoKTsgXAorCX0gXAorXAor CXJlc3VsdCA9IGNvbnZmbih2KTsgXAorCVBHX0ZSRUVfSUZfQ09QWShqYiwgMCk7IFwKKwlQR19G UkVFX0lGX0NPUFkoanAsIDEpOyBcCisJUEdfRlJFRV9JRl9DT1BZKHZhcnMsIDIpOyBcCisJcmV0 dXJuIHJlc3VsdDsgXAorfQorCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBFRChq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X251bWVyaWMsIGpzb25iX3ZhbHVlX3RvX251bWVyaWNfZGF0 dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X2Jvb2wsIGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0pCitERUZJTkVfSlNPTkJfUEFU SF9RVUVSWV9GSVJTVF9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQsIGpzb25iX3Zh bHVlX3RvX2ludDRfZGF0dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBFRChq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDgsIGpzb25iX3ZhbHVlX3RvX2ludDhfZGF0dW0pCitE RUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWVBFRChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X2Zsb2F0OCwganNvbmJfdmFsdWVfdG9fZmxvYXQ4X2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhf UVVFUllfRklSU1RfVFlQRUQoanNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQyLCBqc29uYl92YWx1 ZV90b19pbnQyX2RhdHVtKQorREVGSU5FX0pTT05CX1BBVEhfUVVFUllfRklSU1RfVFlQRUQoanNv bmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDQsIGpzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bSkK KworLyoKKyAqIExvb2t1cCBoZWxwZXIgZm9yIHRoZSBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6 IHR5cGVkIGV4dHJhY3RvciBmYW1pbHkuCisgKiBTYW1lIGFzIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfbG9va3VwIGJ1dCB3aXRoIHRpbWV6b25lLWF3YXJlIGV2YWx1YXRpb24uCisgKi8KK3N0YXRp YyBKc29uYlZhbHVlICoKK2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfbG9va3VwKEpzb25iICpq YiwgSnNvblBhdGggKmpwLCBKc29uYiAqdmFycywKKwkJCQkJCQkJIGJvb2wgc2lsZW50KQorewor CUpzb25WYWx1ZUxpc3QgZm91bmQ7CisJSnNvbmJWYWx1ZSAqdjsKKworCUpzb25WYWx1ZUxpc3RJ bml0KCZmb3VuZCk7CisKKwkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBnZXRKc29u UGF0aFZhcmlhYmxlRnJvbUpzb25iLAorCQkJCQkJICAgY291bnRWYXJpYWJsZXNGcm9tSnNvbmIs CisJCQkJCQkgICBqYiwgIXNpbGVudCwgJmZvdW5kLCB0cnVlKTsKKworCWlmIChKc29uVmFsdWVM aXN0SXNFbXB0eSgmZm91bmQpKQorCQlyZXR1cm4gTlVMTDsKKworCXYgPSBKc29uVmFsdWVMaXN0 SGVhZCgmZm91bmQpOworCWlmICh2LT50eXBlID09IGpidk51bGwpCisJCXJldHVybiBOVUxMOwor CisJcmV0dXJuIHY7Cit9CisKKy8qCisgKiBUaGluLXdyYXBwZXIgbWFjcm8gZm9yIHRoZSBqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6Xzx0eXBlPiBleHRyYWN0b3IgZmFtaWx5LgorICovCisjZGVm aW5lIERFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX1RZUEVEKGZuYW1lLCBjb252Zm4p IFwKK0RhdHVtIFwKK2ZuYW1lKFBHX0ZVTkNUSU9OX0FSR1MpIFwKK3sgXAorCUpzb25iCSAgICpq YiA9IFBHX0dFVEFSR19KU09OQl9QKDApOyBcCisJSnNvblBhdGggICAqanAgPSBQR19HRVRBUkdf SlNPTlBBVEhfUCgxKTsgXAorCUpzb25iCSAgICp2YXJzID0gUEdfR0VUQVJHX0pTT05CX1AoMik7 IFwKKwlib29sCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9PTCgzKTsgXAorCUpzb25iVmFsdWUgKnY7 IFwKKwlEYXR1bQkJcmVzdWx0OyBcCitcCisJdiA9IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpf bG9va3VwKGpiLCBqcCwgdmFycywgc2lsZW50KTsgXAorCWlmICh2ID09IE5VTEwpIFwKKwl7IFwK KwkJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsgXAorCQlQR19GUkVFX0lGX0NPUFkoanAsIDEpOyBc CisJCVBHX0ZSRUVfSUZfQ09QWSh2YXJzLCAyKTsgXAorCQlQR19SRVRVUk5fTlVMTCgpOyBcCisJ fSBcCitcCisJcmVzdWx0ID0gY29udmZuKHYpOyBcCisJUEdfRlJFRV9JRl9DT1BZKGpiLCAwKTsg XAorCVBHX0ZSRUVfSUZfQ09QWShqcCwgMSk7IFwKKwlQR19GUkVFX0lGX0NPUFkodmFycywgMik7 IFwKKwlyZXR1cm4gcmVzdWx0OyBcCit9CisKK0RFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNU X1RaX1RZUEVEKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfbnVtZXJpYywganNvbmJfdmFsdWVf dG9fbnVtZXJpY19kYXR1bSkKK0RFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX1RZUEVE KGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfYm9vbCwganNvbmJfdmFsdWVfdG9fYm9vbF9kYXR1 bSkKK0RFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJUlNUX1RaX1RZUEVEKGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfdHpfaW50NCwganNvbmJfdmFsdWVfdG9faW50NF9kYXR1bSkKK0RFRklORV9KU09O Ql9QQVRIX1FVRVJZX0ZJUlNUX1RaX1RZUEVEKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50 OCwganNvbmJfdmFsdWVfdG9faW50OF9kYXR1bSkKK0RFRklORV9KU09OQl9QQVRIX1FVRVJZX0ZJ UlNUX1RaX1RZUEVEKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfZmxvYXQ4LCBqc29uYl92YWx1 ZV90b19mbG9hdDhfZGF0dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBF RChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDIsIGpzb25iX3ZhbHVlX3RvX2ludDJfZGF0 dW0pCitERUZJTkVfSlNPTkJfUEFUSF9RVUVSWV9GSVJTVF9UWl9UWVBFRChqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0X3R6X2Zsb2F0NCwganNvbmJfdmFsdWVfdG9fZmxvYXQ0X2RhdHVtKQorCiAvKioq KioqKioqKioqKioqKioqKipFeGVjdXRlIGZ1bmN0aW9ucyBmb3IgSnNvblBhdGgqKioqKioqKioq KioqKioqKioqKioqKioqKi8KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGQ4YWM5 Y2JmMDUzLi45MjFlMjc4YTA0NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjg0Nyw2 ICsxMjg0Nyw1NiBAQAogICBwcm9uYW1lID0+ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ4Jywg cHJvcmV0dHlwZSA9PiAnZmxvYXQ4JywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIF90ZXh0Jywg cHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30nLAogICBwcm9zcmMgPT4gJ2pz b25iX2V4dHJhY3RfcGF0aF9mbG9hdDgnIH0sCit7IG9pZCA9PiAnOTk3MCcsIGRlc2NyID0+ICdq c29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIG51bWVyaWMnLAorICBwcm9uYW1lID0+ICdqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywKKyAg cHJvYXJndHlwZXMgPT4gJ2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1l cyA9PiAne3RhcmdldCxwYXRoLHZhcnMsc2lsZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0 aF9xdWVyeV9maXJzdF9udW1lcmljJyB9LAoreyBvaWQgPT4gJzk5NzEnLCBkZXNjciA9PiAnanNv bnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBib29sJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0 aF9xdWVyeV9maXJzdF9ib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVz ID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJn ZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmly c3RfYm9vbCcgfSwKK3sgb2lkID0+ICc5OTcyJywgZGVzY3IgPT4gJ2pzb25wYXRoIHF1ZXJ5IGZp cnN0IGl0ZW0gYXMgaW50NCcsCisgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3Rf aW50NCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLAorICBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNv bnBhdGgganNvbmIgYm9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxz aWxlbnR9JywKKyAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQnIH0sCit7 IG9pZCA9PiAnOTk3MycsIGRlc2NyID0+ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIGlu dDgnLAorICBwcm9uYW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDgnLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGpzb25wYXRoIGpzb25iIGJv b2wnLAorICBwcm9hcmduYW1lcyA9PiAne3RhcmdldCxwYXRoLHZhcnMsc2lsZW50fScsCisgIHBy b3NyYyA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ4JyB9LAoreyBvaWQgPT4gJzk5NzQn LCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBmbG9hdDgnLAorICBwcm9u YW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2Zsb2F0OCcsIHByb3JldHR5cGUgPT4gJ2Zs b2F0OCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAg cHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4g J2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ4JyB9LAoreyBvaWQgPT4gJzk5NzUnLCBkZXNj ciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBudW1lcmljIHdpdGggdGltZXpvbmUn LAorICBwcm9uYW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X251bWVyaWMnLCBwcm92 b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9 PiAnanNvbmIganNvbnBhdGgganNvbmIgYm9vbCcsCisgIHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0 LHBhdGgsdmFycyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X3R6X251bWVyaWMnIH0sCit7IG9pZCA9PiAnOTk3NicsIGRlc2NyID0+ICdqc29ucGF0aCBxdWVy eSBmaXJzdCBpdGVtIGFzIGJvb2wgd2l0aCB0aW1lem9uZScsCisgIHByb25hbWUgPT4gJ2pzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHpfYm9vbCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0 dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29s JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9z cmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfYm9vbCcgfSwKK3sgb2lkID0+ICc5OTc3 JywgZGVzY3IgPT4gJ2pzb25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgaW50NCB3aXRoIHRpbWV6 b25lJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ0JywgcHJv dm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4g J2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne3RhcmdldCxw YXRoLHZhcnMsc2lsZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90 el9pbnQ0JyB9LAoreyBvaWQgPT4gJzk5NzgnLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmly c3QgaXRlbSBhcyBpbnQ4IHdpdGggdGltZXpvbmUnLAorICBwcm9uYW1lID0+ICdqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0X3R6X2ludDgnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIganNvbnBhdGgganNvbmIgYm9vbCcsCisg IHByb2FyZ25hbWVzID0+ICd7dGFyZ2V0LHBhdGgsdmFycyxzaWxlbnR9JywKKyAgcHJvc3JjID0+ ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDgnIH0sCit7IG9pZCA9PiAnOTk3OScsIGRl c2NyID0+ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIGZsb2F0OCB3aXRoIHRpbWV6b25l JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDgnLCBwcm92 b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsIHByb2FyZ3R5cGVzID0+ ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQs cGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3Rf dHpfZmxvYXQ4JyB9LAogeyBvaWQgPT4gJzk5ODInLCBkZXNjciA9PiAnZXh0cmFjdCBpbnQyIGZy b20ganNvbmIgYXJyYXkgYnkgZWxlbWVudCBpbmRleCcsCiAgIHByb25hbWUgPT4gJ2pzb25iX2Fy cmF5X2VsZW1lbnRfaW50MicsIHByb3JldHR5cGUgPT4gJ2ludDInLAogICBwcm9hcmd0eXBlcyA9 PiAnanNvbmIgaW50NCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLGVsZW1lbnRfaW5kZXh9 JywKQEAgLTEyODY1LDQgKzEyOTE1LDI3IEBACiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4 dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLHBhdGhfZWxlbXN9JywKICAgcHJvc3JjID0+ ICdqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0JyB9LAogCisjIGpzb25iX3BhdGhfcXVlcnlfZmly c3QgZmFtaWx5OiBpbnQyIC8gZmxvYXQ0Cit7IG9pZCA9PiAnOTk4NicsIGRlc2NyID0+ICdqc29u cGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFzIGludDInLAorICBwcm9uYW1lID0+ICdqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0X2ludDInLCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMg PT4gJ2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne3Rhcmdl dCxwYXRoLHZhcnMsc2lsZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJz dF9pbnQyJyB9LAoreyBvaWQgPT4gJzk5ODcnLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmly c3QgaXRlbSBhcyBmbG9hdDQnLAorICBwcm9uYW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X2Zsb2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcsCisgIHByb2FyZ3R5cGVzID0+ICdqc29u YiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YXJnZXQscGF0aCx2 YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ0 JyB9LAorCisjIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHogZmFtaWx5OiBpbnQyIC8gZmxvYXQ0 Cit7IG9pZCA9PiAnOTk4OCcsIGRlc2NyID0+ICdqc29ucGF0aCBxdWVyeSBmaXJzdCBpdGVtIGFz IGludDIgd2l0aCB0aW1lem9uZScsCisgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmly c3RfdHpfaW50MicsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnaW50Mics IHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKKyAgcHJvYXJnbmFt ZXMgPT4gJ3t0YXJnZXQscGF0aCx2YXJzLHNpbGVudH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX3Bh dGhfcXVlcnlfZmlyc3RfdHpfaW50MicgfSwKK3sgb2lkID0+ICc5OTg5JywgZGVzY3IgPT4gJ2pz b25wYXRoIHF1ZXJ5IGZpcnN0IGl0ZW0gYXMgZmxvYXQ0IHdpdGggdGltZXpvbmUnLAorICBwcm9u YW1lID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zsb2F0NCcsIHByb3ZvbGF0aWxlID0+ ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnZmxvYXQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGpz b25wYXRoIGpzb25iIGJvb2wnLAorICBwcm9hcmduYW1lcyA9PiAne3RhcmdldCxwYXRoLHZhcnMs c2lsZW50fScsCisgIHByb3NyYyA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDQn IH0sCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uZnVuY3MuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCmluZGV4IDI3NzEzYmUzYWViLi5jZTU1ZmUxYjFjZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTkxLDYgKzkxLDE2IEBAIGV4dGVybiBEYXR1bSBkYXR1 bV90b19qc29uYihEYXR1bSB2YWwsIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LAogCQkJCQkJ CU9pZCBvdXRmdW5jb2lkKTsKIGV4dGVybiBEYXR1bSBqc29uYl9mcm9tX3RleHQodGV4dCAqanMs IGJvb2wgdW5pcXVlX2tleXMpOwogCisvKiBUeXBlZCBmaWVsZCBleHRyYWN0aW9uIGhlbHBlcnMg KHNoYXJlZCBieSBqc29uZnVuY3MuYyBhbmQganNvbnBhdGhfZXhlYy5jKSAqLworZXh0ZXJuIHZv aWQganNvbmJfZmllbGRfY2FzdF9lcnJvcihKc29uYlZhbHVlICp2LCBjb25zdCBjaGFyICpzcWx0 eXBlKTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19udW1lcmljX2RhdHVtKEpzb25iVmFs dWUgKnYpOworZXh0ZXJuIERhdHVtIGpzb25iX3ZhbHVlX3RvX2Jvb2xfZGF0dW0oSnNvbmJWYWx1 ZSAqdik7CitleHRlcm4gRGF0dW0ganNvbmJfdmFsdWVfdG9faW50NF9kYXR1bShKc29uYlZhbHVl ICp2KTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19pbnQ4X2RhdHVtKEpzb25iVmFsdWUg KnYpOworZXh0ZXJuIERhdHVtIGpzb25iX3ZhbHVlX3RvX2Zsb2F0OF9kYXR1bShKc29uYlZhbHVl ICp2KTsKK2V4dGVybiBEYXR1bSBqc29uYl92YWx1ZV90b19pbnQyX2RhdHVtKEpzb25iVmFsdWUg KnYpOworZXh0ZXJuIERhdHVtIGpzb25iX3ZhbHVlX3RvX2Zsb2F0NF9kYXR1bShKc29uYlZhbHVl ICp2KTsKKwogZXh0ZXJuIERhdHVtIGpzb25fcG9wdWxhdGVfdHlwZShEYXR1bSBqc29uX3ZhbCwg T2lkIGpzb25fdHlwZSwKIAkJCQkJCQkJT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCiAJCQkJCQkJ CXZvaWQgKipjYWNoZSwgTWVtb3J5Q29udGV4dCBtY3h0LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pz b25iLm91dAppbmRleCAzMTk4NDQyMzUyYy4uN2RlMmJjZWEzZjcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmIub3V0CkBAIC01MDMsMjIgKzUwMyw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDggRlJPTSB0ZXN0 X2pzCiAgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQog KDMgcm93cykKIAotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOwotICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCi0g ICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQyKHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRl eHQpCi0gICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQot KDMgcm93cykKLQotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pz b25iCi0gICBPdXRwdXQ6IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQodGVzdF9qc29uLCAnZmll bGQ0Jzo6dGV4dCkKLSAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCi0oMyByb3dzKQotCiAtLSBTZWN0aW9uIDFiOiBwbGFubmVyIHJld3JpdGUgdmVyaWZp Y2F0aW9uIGZvciBzdWJzY3JpcHRpbmcgc3ludGF4CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTU2MCw3ICs1NDQsOCBA QCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQn XSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbgogICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5 cGUgPSAnb2JqZWN0Jzo6dGV4dCkKICgzIHJvd3MpCiAKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50MiBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CistLSBWZXJpZnkgdGhhdCBpbnQyIGFuZCBmbG9h dDQgYXJlIGFsc28gcmV3cml0dGVuIHRocm91Z2ggdGhlIG9iamVjdC1maWVsZCBmYW1pbHkuCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQn KTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKQEAgLTU2OCw3ICs1NTMs NyBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVs ZDQnXSk6OmludDIgRlJPTSB0ZXN0X2pzb25iCiAgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25f dHlwZSA9ICdvYmplY3QnOjp0ZXh0KQogKDMgcm93cykKIAotRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNj YW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCkBAIC02MDcsMTggKzU5Miw2IEBAIFNFTEVDVCAodGVz dF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0CiAgICAgICA0CiAoMSByb3cpCiAKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 Ci0gaW50MiAKLS0tLS0tLQotICAgIDQKLSgxIHJvdykKLQotU0VMRUNUICh0ZXN0X2pzb24gLT4g J2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOwotIGZsb2F0NCAKLS0tLS0tLS0tCi0gICAgICA0Ci0oMSByb3cpCi0KIC0tIFNlY3Rpb24g MmI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggc3Vic2NyaXB0aW5nIHN5bnRheAogU0VMRUNU ICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CiAgdGVzdF9qc29uIApAQCAtNjUwLDE2ICs2MjMsMTcgQEAgU0VM RUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKICAgICAgICAgIDQKICgxIHJvdykKIAotU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNCddKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7Ci0gdGVzdF9qc29uIAotLS0tLS0tLS0tLS0KLSAgICAgICAgIDQKKy0tIFVuc3Vw cG9ydGVkIHRhcmdldHMgc3RpbGwgd29yayBjb3JyZWN0bHkgdGhyb3VnaCB0aGUgb3JpZ2luYWwg cGF0aAorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQyIAorLS0tLS0tCisgICAgNAogKDEg cm93KQogCi1TRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjpmbG9hdDQgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotIHRlc3RfanNvbiAKLS0tLS0tLS0tLS0t Ci0gICAgICAgICA0CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgZmxvYXQ0IAorLS0tLS0t LS0KKyAgICAgIDQKICgxIHJvdykKIAogLS0gU2VjdGlvbiAzOiBOVUxMIHNlbWFudGljcyAobWlz c2luZyBrZXksIEpTT04gbnVsbCwgbm9uLW9iamVjdCBpbnB1dCkKQEAgLTcxMSwzMCArNjg1LDYg QEAgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmZsb2F0OCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ28KICAgICAgICAKICgxIHJvdykKIAotU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbCwgaW50MiBwYXRoCi0gaW50MiAKLS0tLS0tLQot ICAgICAKLSgxIHJvdykKLQotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2lu ZyBrZXksIGludDIKLSBpbnQyIAotLS0tLS0tCi0gICAgIAotKDEgcm93KQotCi1TRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQzJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwsIGZsb2F0NCBwYXRoCi0gZmxvYXQ0IAotLS0t LS0tLS0KLSAgICAgICAKLSgxIHJvdykKLQotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0 ZW50Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 ICAtLSBtaXNzaW5nIGtleSwgZmxvYXQ0Ci0gZmxvYXQ0IAotLS0tLS0tLS0KLSAgICAgICAKLSgx IHJvdykKLQogLS0gU2VjdGlvbiAzYjogTlVMTCBzZW1hbnRpY3MgdGhyb3VnaCBzdWJzY3JpcHRp bmcgc3ludGF4CiBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQzJ10pOjpudW1lcmljIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVsbAogIHRlc3Rf anNvbiAKQEAgLTc3MSwxNCArNzIxLDYgQEAgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScp OjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIEVSUk9S OiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgaW50ZWdlcgogU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ4CiBFUlJPUjogIGNhbm5v dCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIGRvdWJsZSBwcmVjaXNpb24KLVNF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gaW50MgotRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBzbWFsbGludAotU0VMRUNUICh0ZXN0X2pzb24gLT4g J2ZpZWxkMScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gc3RyaW5nIHRvIGZsb2F0NAotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJp bmcgdG8gdHlwZSByZWFsCi1TRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ1Jyk6OmludDIgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gaW50 MgotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBzbWFs bGludAotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJyYXkgdG8gZmxvYXQ0Ci1FUlJP UjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHJlYWwKIC0tIFNl Y3Rpb24gNGI6IHR5cGUtbWlzbWF0Y2ggZXJyb3IgdGhyb3VnaCBzdWJzY3JpcHRpbmcgc3ludGF4 CiBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQxJ10pOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBudW1lcmljCiBFUlJPUjog IGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIG51bWVyaWMKQEAgLTgyNywzMCArNzY5 LDYgQEAgU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IDMuMTR9Jzo6anNv bmIsICdhJyk7CiAgICAgICAgICAgICAgICAgICAgICAgMy4xNAogKDEgcm93KQogCi1TRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDQyfSc6Ompzb25iLCAnYScpOwotIGpzb25i X29iamVjdF9maWVsZF9pbnQyIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAg ICAgICAgICAgICAgIDQyCi0oMSByb3cpCi0KLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50 MigneyJhIjogM30nOjpqc29uYiwgJ2EnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfaW50MiAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAgMwotKDEgcm93 KQotCi1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMy4xNH0nOjpqc29u YiwgJ2EnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgMy4xNAotKDEgcm93KQotCi1TRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMS41fSc6Ompzb25iLCAnYScpOwotIGpz b25iX29iamVjdF9maWVsZF9mbG9hdDQgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg ICAgICAgICAgICAgICAgICAgICAgMS41Ci0oMSByb3cpCi0KIC0tIGRpcmVjdCBjYWxsczogTlVM TCBzZW1hbnRpY3MKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYygneyJhIjogMX0n Ojpqc29uYiwgJ21pc3NpbmcnKTsKICBqc29uYl9vYmplY3RfZmllbGRfbnVtZXJpYyAKQEAgLTg4 OCwzMCArODA2LDYgQEAgU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IDEu MH0nOjpqc29uYiwgJ21pc3NpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAoMSBy b3cpCiAKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogMX0nOjpqc29uYiwg J21pc3NpbmcnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfaW50MiAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotKDEgcm93KQotCi1TRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IG51bGx9Jzo6anNvbmIsICdhJyk7Ci0ganNvbmJf b2JqZWN0X2ZpZWxkX2ludDIgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAg ICAgICAgICAgICAgICAKLSgxIHJvdykKLQotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9h dDQoJ3siYSI6IDEuMH0nOjpqc29uYiwgJ21pc3NpbmcnKTsKLSBqc29uYl9vYmplY3RfZmllbGRf ZmxvYXQ0IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIAotKDEgcm93KQotCi1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJh IjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKLSBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgICAgIAotKDEg cm93KQotCiAtLSBkaXJlY3QgY2FsbHM6IHR5cGUtbWlzbWF0Y2ggZXJyb3JzCiBTRUxFQ1QganNv bmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6ICJ0ZXh0In0nOjpqc29uYiwgJ2EnKTsKIEVS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgbnVtZXJpYwpAQCAtOTI1LDIw ICs4MTksOSBAQCBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDgoJ3siYSI6IHRydWV9Jzo6 anNvbmIsICdhJyk7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGJvb2xlYW4gdG8gdHlwZSBi aWdpbnQKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ4KCd7ImEiOiBbMSwyXX0nOjpq c29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDgKIEVSUk9SOiAgY2Fubm90IGNhc3Qg anNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgZG91YmxlIHByZWNpc2lvbgotU0VMRUNUIGpz b25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7ICAtLSBz dHJpbmcgdG8gaW50MgotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBz bWFsbGludAotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHRydWV9Jzo6 anNvbmIsICdhJyk7ICAtLSBib29sIHRvIGZsb2F0NAotRVJST1I6ICBjYW5ub3QgY2FzdCBqc29u YiBib29sZWFuIHRvIHR5cGUgcmVhbAotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBpbnQyCi1FUlJPUjog IGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHNtYWxsaW50Ci1TRUxF Q1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwgJ2En KTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDQKLUVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJy YXkgb3Igb2JqZWN0IHRvIHR5cGUgcmVhbAogLS0gZGlyZWN0IGNhbGxzOiBpbnRlZ2VyIG92ZXJm bG93CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDQoJ3siYSI6IDk5OTk5OTk5OTl9Jzo6 anNvbmIsICdhJyk7CiBFUlJPUjogIGludGVnZXIgb3V0IG9mIHJhbmdlCi0tLSBkaXJlY3QgY2Fs bHM6IGludDIgb3ZlcmZsb3cKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjog OTk5OTl9Jzo6anNvbmIsICdhJyk7Ci1FUlJPUjogIHNtYWxsaW50IG91dCBvZiByYW5nZQogLS0g T3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246IGFycmF5LWVsZW1lbnQgZmFtaWx5CiAtLSBUaGUg cGxhbm5lciByZXdyaXRlcyAoai0+aWR4KTo6dHlwZSBhbmQgKGpbaWR4XSk6OnR5cGUgaW50byBk aXJlY3QKIC0tIHR5cGVkIGV4dHJhY3RvciBjYWxscyBmb3IgdGhlIHNhbWUgdGFyZ2V0IHR5cGVz IGFzIHRoZSBvYmplY3QtZmllbGQgZmFtaWx5LgpAQCAtOTgxLDIwICs4NjQsNiBAQCBFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDggRlJPTSB0 ZXN0X2pzb25iX2FycjsKICAgIE91dHB1dDoganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4KHRlc3Rf YXJyLCAwKQogKDIgcm93cykKIAotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfYXJyIC0+IDApOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7Ci0gICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0 X2pzb25iX2FycgotICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVtZW50X2ludDIodGVzdF9hcnIs IDApCi0oMiByb3dzKQotCi1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVz dF9hcnIgLT4gMSk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmJfYXJyOwotICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBvbiBwZ190ZW1wLnRl c3RfanNvbmJfYXJyCi0gICBPdXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0KHRlc3Rf YXJyLCAxKQotKDIgcm93cykKLQogLS0gU2VjdGlvbiBBMWI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJp ZmljYXRpb24gKGFycmF5IHN1YnNjcmlwdGluZyBmb3JtKQogRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzBdKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmJfYXJy OwogICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIApA QCAtMTAzMSwxMyArOTAwLDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KHRlc3RfYXJyWzBdKTo6aW50OCBGUk9NIHRlc3RfanNvbmJfYXJyOwogICAgT3V0cHV0OiBqc29u Yl9hcnJheV9lbGVtZW50X2ludDgodGVzdF9hcnIsIDApCiAoMiByb3dzKQogCi1FWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQyIEZST00gdGVzdF9q c29uYl9hcnI7Ci0gICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g U2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iX2FycgotICAgT3V0cHV0OiBqc29uYl9hcnJh eV9lbGVtZW50X2ludDIodGVzdF9hcnIsIDApCi0oMiByb3dzKQotCiAtLSBTZWN0aW9uIEExYzog cGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiAoZGlyZWN0IGZ1bmN0aW9uIGNhbGwgZm9ybSkK IEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9hcnJheV9lbGVtZW50 KHRlc3RfYXJyLCAwKSk6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsKICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKQEAgLTEwNzcsMTggKzkzOSw2IEBA IFNFTEVDVCAodGVzdF9hcnIgLT4gMik6OmJvb2wgRlJPTSB0ZXN0X2pzb25iX2FycjsKICB0CiAo MSByb3cpCiAKLVNFTEVDVCAodGVzdF9hcnIgLT4gMCk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2Fy cjsKLSBpbnQyIAotLS0tLS0tCi0gICAxMAotKDEgcm93KQotCi1TRUxFQ1QgKHRlc3RfYXJyIC0+ IDEpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsKLSBmbG9hdDQgCi0tLS0tLS0tLQotICAg IDIuNQotKDEgcm93KQotCiAtLSBTZWN0aW9uIEEyYjogY29ycmVjdCBleGVjdXRpb24gdGhyb3Vn aCBzdWJzY3JpcHRpbmcKIFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0IEZST00gdGVzdF9qc29u Yl9hcnI7CiAgdGVzdF9hcnIgCkBAIC0xMTM1LDE4ICs5ODUsNiBAQCBTRUxFQ1QgKCd7ImsiOjF9 Jzo6anNvbmIgLT4gMCk6OmludDQ7ICAtLSBub24tYXJyYXkgaW5wdXQKICAgICAgCiAoMSByb3cp CiAKLVNFTEVDVCAodGVzdF9hcnIgLT4gOTkpOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7ICAt LSBvdXQgb2YgcmFuZ2UsIGludDIKLSBpbnQyIAotLS0tLS0tCi0gICAgIAotKDEgcm93KQotCi1T RUxFQ1QgKHRlc3RfYXJyIC0+IDMpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpT T04gbnVsbCBlbGVtZW50LCBmbG9hdDQKLSBmbG9hdDQgCi0tLS0tLS0tLQotICAgICAgIAotKDEg cm93KQotCiAtLSBTZWN0aW9uIEEzYjogTlVMTCB0aHJvdWdoIHN1YnNjcmlwdGluZwogU0VMRUNU ICh0ZXN0X2Fycls5OV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG91dCBvZiBy YW5nZQogIHRlc3RfYXJyIApAQCAtMTE3MSwxMCArMTAwOSw2IEBAIFNFTEVDVCAodGVzdF9hcnIg LT4gNik6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG9iamVjdCBjb250YWluZXIgdG8g aW50OAogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBvYmplY3QgdG8gdHlwZSBi aWdpbnQKIFNFTEVDVCAodGVzdF9hcnIgLT4gMik6OmludDQgRlJPTSB0ZXN0X2pzb25iX2Fycjsg IC0tIGJvb2wgdG8gaW50NAogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBib29sZWFuIHRvIHR5 cGUgaW50ZWdlcgotU0VMRUNUICh0ZXN0X2FyciAtPiA0KTo6aW50MiBGUk9NIHRlc3RfanNvbmJf YXJyOyAgLS0gc3RyaW5nIHRvIGludDIKLUVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5n IHRvIHR5cGUgc21hbGxpbnQKLVNFTEVDVCAodGVzdF9hcnIgLT4gNCk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRvIGZsb2F0NAotRVJST1I6ICBjYW5ub3QgY2FzdCBq c29uYiBzdHJpbmcgdG8gdHlwZSByZWFsCiAtLSBTZWN0aW9uIEE0YjogZXJyb3IgdGhyb3VnaCBz dWJzY3JpcHRpbmcKIFNFTEVDVCAodGVzdF9hcnJbNF0pOjppbnQ4IEZST00gdGVzdF9qc29uYl9h cnI7ICAtLSBzdHJpbmcgdG8gaW50OAogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBzdHJpbmcg dG8gdHlwZSBiaWdpbnQKQEAgLTEyMzUsMTggKzEwNjksNiBAQCBTRUxFQ1QganNvbmJfYXJyYXlf ZWxlbWVudF9pbnQ4KCdbdHJ1ZV0nOjpqc29uYiwgMCk7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpz b25iIGJvb2xlYW4gdG8gdHlwZSBiaWdpbnQKIFNFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2Zs b2F0OCgnW1sxLDJdXSc6Ompzb25iLCAwKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDgKIEVSUk9S OiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgb3Igb2JqZWN0IHRvIHR5cGUgZG91YmxlIHByZWNp c2lvbgotU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50MignWzEwLCAyMF0nOjpqc29uYiwg MCk7Ci0ganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAgICAgICAgICAgICAgICAgICAgICAgMTAKLSgxIHJvdykKLQotU0VMRUNUIGpzb25iX2Fy cmF5X2VsZW1lbnRfZmxvYXQ0KCdbMy4xNCwgMi41XSc6Ompzb25iLCAxKTsKLSBqc29uYl9hcnJh eV9lbGVtZW50X2Zsb2F0NCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAg ICAgICAgICAgICAgICAgIDIuNQotKDEgcm93KQotCiAtLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFj dGlvbjogZXh0cmFjdC1wYXRoIGZhbWlseQogLS0gVGhlIHBsYW5uZXIgcmV3cml0ZXMgKGogIz4g cGF0aCk6OnR5cGUgYW5kIChqc29uYl9leHRyYWN0X3BhdGgoaiwgLi4uKSk6OnR5cGUKIC0tIGlu dG8gZGlyZWN0IHR5cGVkIGV4dHJhY3RvciBjYWxscyBmb3IgdGhlIHNhbWUgdGFyZ2V0IHR5cGVz LgpAQCAtMTI5MSwyMiArMTExMyw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDd9Jyk6OmJvb2wgRlJPTSB0ZXN0X2pzCiAgICBGaWx0 ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQogKDMgcm93cykKIAot RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxk NH0nKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgotICAg T3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfaW50Mih0ZXN0X2pzb24sICd7ZmllbGQ0fSc6OnRl eHRbXSkKLSAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQp Ci0oMyByb3dzKQotCi1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9q c29uICM+ICd7ZmllbGQ0fScpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNjYW4gb24gcGdf dGVtcC50ZXN0X2pzb25iCi0gICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9mbG9hdDQodGVz dF9qc29uLCAne2ZpZWxkNH0nOjp0ZXh0W10pCi0gICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25f dHlwZSA9ICdvYmplY3QnOjp0ZXh0KQotKDMgcm93cykKLQogLS0gU2VjdGlvbiBQMWI6IHBsYW5u ZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24gKGRpcmVjdCBmdW5jdGlvbi1jYWxsIGZvcm0pCiBFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfZXh0cmFjdF9wYXRoKHRlc3Rf anNvbiwgJ2ZpZWxkNCcpKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0xNDYxLDE5ICsxMjY3LDYgQEAgU0VMRUNUIGpz b25iX2V4dHJhY3RfcGF0aF9pbnQ0KCd7ImEiOlsxMCwyMF19Jzo6anNvbmIsIEFSUkFZWydhJywn MSddKTsKICAgICAgICAgICAgICAgICAgICAgICAyMAogKDEgcm93KQogCi0tLSBkaXJlY3QgY2Fs bHM6IGludDIgYW5kIGZsb2F0NAotU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyKCd7ImEi OnsiYiI6N319Jzo6anNvbmIsIEFSUkFZWydhJywnYiddKTsKLSBqc29uYl9leHRyYWN0X3BhdGhf aW50MiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAg NwotKDEgcm93KQotCi1TRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCgneyJhIjozLjE0 fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKLSBqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgMy4xNAotKDEg cm93KQotCiAtLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogbXVsdGktc3Vic2NyaXB0IGNo YWlucwogLS0gVGhlIHBsYW5uZXIgbG93ZXJzIGpbJ2EnXVsnYiddLCBqWydhJ11bMF0sIGV0Yy4g dG8gdGhlIGV4dHJhY3QtcGF0aCB0eXBlZAogLS0gZXh0cmFjdG9yIGZhbWlseSwgcmV1c2luZyB0 aGUgc2FtZSBmdW5jdGlvbnMgYXMgdGhlICM+IG9wZXJhdG9yIHBhdGguCkBAIC0xNTI2LDIxICsx MzE5LDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsn ZmllbGQ0J10pOjppbnQ0IEZST00gdGVzdF9qc29uYgogICAgRmlsdGVyOiAodGVzdF9qc29uYi5q c29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKICgzIHJvd3MpCiAKLS0tIFNlY3Rpb24gTTFiOiBt dWx0aS1zdWJzY3JpcHQgaW50Mi9mbG9hdDQKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50MiBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgot ICAgT3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfaW50Mih0ZXN0X2pzb24sIEFSUkFZWydmaWVs ZDYnOjp0ZXh0LCAnZjEnOjp0ZXh0XSkKLSAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBl ID0gJ29iamVjdCc6OnRleHQpCi0oMyByb3dzKQotCi1TRUxFQ1QgKCgneyJhIjp7ImIiOjd9fSc6 Ompzb25iKVsnYSddWydiJ10pOjppbnQyOwotIGludDIgCi0tLS0tLS0KLSAgICA3Ci0oMSByb3cp Ci0KIC0tIFNlY3Rpb24gTTI6IGV4ZWN1dGlvbiB0aHJvdWdoIG11bHRpLXN1YnNjcmlwdCByZXdy aXRlCiBTRUxFQ1QgKCgneyJhIjp7ImIiOjQyfX0nOjpqc29uYilbJ2EnXVsnYiddKTo6aW50NDsK ICBpbnQ0IApAQCAtMTYzMSw2ICsxNDA5LDYwNiBAQCBTRUxFQ1QgKCgneyJhIjpbWzEwLDIwXSxb MzAsNDBdXX0nOjpqc29uYilbJ2EnXVtpXVswXSk6OmludDQgRlJPTSBnZW5lcmF0ZV9zZXJpZQog ICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDAsIDEpCiAoMyByb3dzKQogCistLSBP cHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjoganNvbmJfcGF0aF9xdWVyeV9maXJzdCBmYW1pbHkK Ky0tIFRoZSBwbGFubmVyIHJld3JpdGVzIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KGosIHBhdGgp KTo6dHlwZSBpbnRvIGEgZGlyZWN0CistLSB0eXBlZCBleHRyYWN0b3IgY2FsbCBmb3IgdGhlIHNh bWUgdGFyZ2V0IHR5cGVzIGFzIHRoZSBvdGhlciBmYW1pbGllcy4KKy0tIFNlY3Rpb24gUTE6IHBs YW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjpp bnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDog anNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ0KHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29u cGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5 cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ3 JykpOjpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91 dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF9ib29sKHRlc3RfanNvbiwgJyQuImZpZWxkNyIn Ojpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5q c29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQu ZmllbGQ0JykpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRl c3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF9udW1lcmljKHRlc3Rf anNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQorICAgRmls dGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ4 KHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQor ICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJv d3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBT ZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVy eV9maXJzdF9mbG9hdDgodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25wYXRoLCAne30nOjpq c29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3Qn Ojp0ZXh0KQorKDMgcm93cykKKworLS0gMy1hcmcgZm9ybSAodmFycyBleHBsaWNpdCkKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRl c3RfanNvbiwgJyQuZmllbGQ0JywgJ3t9JykpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBw Z190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ0 KHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKQor ICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJv d3MpCisKKy0tIDQtYXJnIGZvcm0gKHZhcnMgKyBzaWxlbnQgZXhwbGljaXQpCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pz b24sICckLmZpZWxkNCcsICd7fScsIHRydWUpKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X2Zsb2F0OCh0ZXN0X2pzb24sICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCB0 cnVlKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkK KygzIHJvd3MpCisKKy0tIFNlY3Rpb24gUTI6IGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdGUKK1NF TEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYScpKTo6 aW50NDsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3QoJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYScpKTo6ZmxvYXQ4OworIGpzb25i X3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgn eyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJykpOjpib29sOworIGpzb25iX3BhdGhfcXVlcnlfZmly c3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAoanNv bmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjo5OX0nOjpqc29uYiwgJyQuYScpKTo6bnVtZXJpYzsK KyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICA5OQorKDEgcm93KQorCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlf Zmlyc3QoJ3siYSI6OTl9Jzo6anNvbmIsICckLmEnKSk6OmludDg7CisganNvbmJfcGF0aF9xdWVy eV9maXJzdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg OTkKKygxIHJvdykKKworLS0gbmVzdGVkIG9iamVjdCBwYXRoCitTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3QoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIsICckLmEuYicpKTo6aW50NDsKKyBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICA0MgorKDEgcm93KQorCistLSBhcnJheSBhY2Nlc3MgaW4ganNvbnBhdGgK K1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjpbMTAsMjBdfSc6Ompzb25iLCAn JC5hWzFdJykpOjppbnQ0OworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIDIwCisoMSByb3cpCisKKy0tIFNlY3Rp b24gUTM6IE5VTEwgc2VtYW50aWNzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3si YSI6MX0nOjpqc29uYiwgJyQuYicpKTo6aW50NDsgIC0tIG1pc3NpbmcgcGF0aAorIGpzb25iX3Bh dGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJh IjpudWxsfSc6Ompzb25iLCAnJC5hJykpOjppbnQ0OyAgLS0gSlNPTiBudWxsCisganNvbmJfcGF0 aF9xdWVyeV9maXJzdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworLS0gU2VjdGlvbiBRNDogc2lsZW50IHNlbWFudGljcworLS0g c2lsZW50PXRydWUgc3VwcHJlc3NlcyBqc29ucGF0aCBleGVjdXRpb24gZXJyb3JzLCBOT1QgY2Fz dCBlcnJvcnMKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoidGV4dCJ9Jzo6 anNvbmIsICckLmEnLCAne30nLCB0cnVlKSk6OmludDQ7ICAtLSBjYXN0IGVycm9yIG5vdCBzdXBw cmVzc2VkCitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIK Ky0tIHNpbGVudD1mYWxzZSAoZGVmYXVsdCk6IGpzb25wYXRoIHN0cmljdCBlcnJvcgorU0VMRUNU IChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjF9Jzo6anNvbmIsICdzdHJpY3QgJC5iJywg J3t9JywgZmFsc2UpKTo6aW50NDsgIC0tIHN0cmljdCBtaXNzaW5nIGtleSBlcnJvcgorRVJST1I6 ICBKU09OIG9iamVjdCBkb2VzIG5vdCBjb250YWluIGtleSAiYiIKKy0tIHNpbGVudD10cnVlOiBq c29ucGF0aCBzdHJpY3QgZXJyb3Igc3VwcHJlc3NlZAorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0KCd7ImEiOjF9Jzo6anNvbmIsICdzdHJpY3QgJC5iJywgJ3t9JywgdHJ1ZSkpOjppbnQ0 OyAgLS0gc3VwcHJlc3NlZCwgcmV0dXJucyBOVUxMCisganNvbmJfcGF0aF9xdWVyeV9maXJzdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworLS0gU2VjdGlvbiBRNTogdHlwZS1taXNtYXRjaCBlcnJvcnMKK1NFTEVDVCAoanNvbmJf cGF0aF9xdWVyeV9maXJzdCgneyJhIjoiaGVsbG8ifSc6Ompzb25iLCAnJC5hJykpOjppbnQ0OyAg LS0gc3RyaW5nIHRvIGludDQKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5 cGUgaW50ZWdlcgorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOlsxLDJdfSc6 Ompzb25iLCAnJC5hJykpOjppbnQ0OyAgLS0gY29udGFpbmVyIHRvIGludDQKK0VSUk9SOiAgY2Fu bm90IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBpbnRlZ2VyCistLSBTZWN0aW9uIFE2OiBkaXJl Y3QgY2FsbHMgdG8gdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfcGF0aF9x dWVyeV9maXJzdF9pbnQ0KCd7ImEiOjQyfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6 Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJv dykKKworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50OCgneyJhIjo5OX0nOjpqc29u YiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVl cnlfZmlyc3RfaW50OCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgIDk5CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0X2Zsb2F0OCgneyJhIjozLjE0fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompz b25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygx IHJvdykKKworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfbnVtZXJpYygneyJhIjoxLjIz fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJf cGF0aF9xdWVyeV9maXJzdF9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjMKKygxIHJvdykKKworU0VMRUNUIGpz b25iX3BhdGhfcXVlcnlfZmlyc3RfYm9vbCgneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJzo6anNv bnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF9ib29s IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIGRpcmVj dCBjYWxsOiBtaXNzaW5nIHBhdGgKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQo J3siYSI6MX0nOjpqc29uYiwgJyQuYic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOwor IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKKy0tIGRpcmVjdCBj YWxsOiB3aXRoIHZhcnMKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDQoJ3siYSI6 NDJ9Jzo6anNvbmIsICckLmEgPyAoQCA+ICR4KSc6Ompzb25wYXRoLCAneyJ4IjoxMH0nOjpqc29u YiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50NCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQyCisoMSByb3cpCisK Ky0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9uOiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6 IGZhbWlseQorLS0gU2FtZSBwYXR0ZXJuIGFzIHRoZSBub24tdHogZmFtaWx5LCBidXQgd2l0aCB0 aW1lem9uZS1hd2FyZSBldmFsdWF0aW9uLgorLS0gU2VjdGlvbiBUMTogcGxhbm5lciByZXdyaXRl IHZlcmlmaWNhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6OmludDQgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDQodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25w YXRoLCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlw ZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVs ZDcnKSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29u YgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Jvb2wodGVzdF9qc29uLCAn JC4iZmllbGQ3Iic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0 ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoo dGVzdF9qc29uLCAnJC5maWVsZDQnKSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNl cSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6X251bWVyaWModGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25wYXRoLCAne30n Ojpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmpl Y3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6Omlu dDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0 cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDgodGVzdF9qc29uLCAnJC4iZmllbGQ0 Iic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25i Lmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29u LCAnJC5maWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zs b2F0OCh0ZXN0X2pzb24sICckLiJmaWVsZDQiJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxz ZSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiso MyByb3dzKQorCistLSAzLWFyZyBmb3JtICh2YXJzIGV4cGxpY2l0KQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29u LCAnJC5maWVsZDQnLCAne30nKSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBn X3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2lu dDQodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2Up CisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMg cm93cykKKworLS0gNC1hcmcgZm9ybSAodmFycyArIHNpbGVudCBleHBsaWNpdCkKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KHRl c3RfanNvbiwgJyQuZmllbGQ0JywgJ3t9JywgdHJ1ZSkpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX3BhdGhf cXVlcnlfZmlyc3RfdHpfZmxvYXQ4KHRlc3RfanNvbiwgJyQuImZpZWxkNCInOjpqc29ucGF0aCwg J3t9Jzo6anNvbmIsIHRydWUpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdv YmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gU2VjdGlvbiBUMjogZXhlY3V0aW9uIHRocm91 Z2ggcmV3cml0ZQorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOjQyfSc6 Ompzb25iLCAnJC5hJykpOjppbnQ0OworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHogCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIDQyCisoMSBy b3cpCisKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjozLjE0fSc6Ompz b25iLCAnJC5hJykpOjpmbG9hdDg7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygxIHJv dykKKworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOnRydWV9Jzo6anNv bmIsICckLmEnKSk6OmJvb2w7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIChqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0X3R6KCd7ImEiOjk5fSc6Ompzb25iLCAnJC5hJykpOjpudW1lcmljOworIGpzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgIDk5CisoMSByb3cpCisKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVy eV9maXJzdF90eigneyJhIjo5OX0nOjpqc29uYiwgJyQuYScpKTo6aW50ODsKKyBqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0X3R6IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICA5OQorKDEgcm93KQorCistLSBuZXN0ZWQgcGF0aAorU0VMRUNUIChqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iLCAnJC5hLmInKSk6 OmludDQ7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykKKworLS0gYXJyYXkg YWNjZXNzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6WzEwLDIwXX0n Ojpqc29uYiwgJyQuYVsxXScpKTo6aW50NDsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAyMAor KDEgcm93KQorCistLSBTZWN0aW9uIFQzOiBOVUxMIHNlbWFudGljcworU0VMRUNUIChqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOjF9Jzo6anNvbmIsICckLmInKSk6OmludDQ7ICAtLSBt aXNzaW5nIHBhdGgKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6bnVsbH0nOjpqc29uYiwgJyQuYScp KTo6aW50NDsgIC0tIEpTT04gbnVsbAorIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHogCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKKy0tIFNlY3Rpb24gVDQ6IHNpbGVudCBzZW1hbnRpY3MKK1NFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eigneyJhIjoidGV4dCJ9Jzo6anNvbmIsICckLmEnLCAne30nLCB0cnVl KSk6OmludDQ7ICAtLSBjYXN0IGVycm9yIG5vdCBzdXBwcmVzc2VkCitFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVy eV9maXJzdF90eigneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0ICQuYicsICd7fScsIGZhbHNlKSk6 OmludDQ7ICAtLSBzdHJpY3QgZXJyb3IKK0VSUk9SOiAgSlNPTiBvYmplY3QgZG9lcyBub3QgY29u dGFpbiBrZXkgImIiCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6MX0n Ojpqc29uYiwgJ3N0cmljdCAkLmInLCAne30nLCB0cnVlKSk6OmludDQ7ICAtLSBzdXBwcmVzc2Vk LCBOVUxMCisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworLS0gU2VjdGlv biBUNTogdHlwZS1taXNtYXRjaCBlcnJvcnMKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJz dF90eigneyJhIjoiaGVsbG8ifSc6Ompzb25iLCAnJC5hJykpOjppbnQ0OworRVJST1I6ICBjYW5u b3QgY2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCistLSBTZWN0aW9uIFQ2OiBkaXJl Y3QgY2FsbHMgdG8gdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfcGF0aF9x dWVyeV9maXJzdF90el9pbnQ0KCd7ImEiOjQyfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7 fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgNDIKKygxIHJvdykKKworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50OCgn eyJhIjo5OX0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOwor IGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50OCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5CisoMSByb3cpCisKK1NF TEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zsb2F0OCgneyJhIjozLjE0fSc6Ompzb25i LCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVy eV9maXJzdF90el9mbG9hdDggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25i X3BhdGhfcXVlcnlfZmlyc3RfdHpfbnVtZXJpYygneyJhIjoxLjIzfSc6Ompzb25iLCAnJC5hJzo6 anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90 el9udW1lcmljIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEuMjMKKygxIHJvdykKKworU0VMRUNUIGpzb25iX3BhdGhf cXVlcnlfZmlyc3RfdHpfYm9vbCgneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgs ICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9ib29sIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIE9wdGlt aXplZCB0eXBlZCBleHRyYWN0aW9uOiBpbnQyIC8gZmxvYXQ0IG1hdHJpeCBjb21wbGV0aW9uCist LSBFeHRlbmRzIHRoZSBleGlzdGluZyB0eXBlZCBleHRyYWN0b3IgZmFtaWxpZXMgdG8gY292ZXIg aW50MiAoc21hbGxpbnQpCistLSBhbmQgZmxvYXQ0IChyZWFsKSB0YXJnZXQgdHlwZXMuCistLSBT ZWN0aW9uIEkxOiBkaXJlY3QgY2FsbHMgdG8gaW50MiAvIGZsb2F0NCB0eXBlZCBleHRyYWN0b3Ig YnVpbHRpbnMgKG9iamVjdC1maWVsZCkKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50Mign eyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgNDIKKygxIHJvdykK KworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAzfSc6Ompzb25iLCAnYScp OworIGpzb25iX29iamVjdF9maWVsZF9pbnQyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfZmxvYXQ0KCd7ImEiOiAzLjE0fSc6Ompzb25iLCAnYScpOworIGpzb25iX29iamVjdF9m aWVsZF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAzLjE0CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0 KCd7ImEiOiAxLjV9Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxLjUK KygxIHJvdykKKworLS0gTlVMTCBzZW1hbnRpY3MKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRf aW50MigneyJhIjogMX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKKyBqc29uYl9vYmplY3RfZmllbGRf aW50MiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IG51bGx9 Jzo6anNvbmIsICdhJyk7CisganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNU IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IDEuMH0nOjpqc29uYiwgJ21pc3Npbmcn KTsKKyBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QganNvbmJf b2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKKyBqc29uYl9v YmplY3RfZmllbGRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCistLSB0eXBlLW1pc21hdGNoIGVycm9ycwor U0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdh Jyk7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIHNtYWxsaW50CitT RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogdHJ1ZX0nOjpqc29uYiwgJ2En KTsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgYm9vbGVhbiB0byB0eXBlIHJlYWwKK1NFTEVD VCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogWzEsMl19Jzo6anNvbmIsICdhJyk7ICAt LSBjb250YWluZXIgdG8gaW50MgorRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSBvciBv YmplY3QgdG8gdHlwZSBzbWFsbGludAorU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQo J3siYSI6IHsieCI6MX19Jzo6anNvbmIsICdhJyk7ICAtLSBjb250YWluZXIgdG8gZmxvYXQ0CitF UlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIGFycmF5IG9yIG9iamVjdCB0byB0eXBlIHJlYWwKKy0t IGludDIgb3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogOTk5 OTl9Jzo6anNvbmIsICdhJyk7CitFUlJPUjogIHNtYWxsaW50IG91dCBvZiByYW5nZQorLS0gU2Vj dGlvbiBJMjogcGxhbm5lciByZXdyaXRlIHZlcmlmaWNhdGlvbiDigJQgb25lIHBlciBmYW1pbHkg KHVzaW5nIGludDIpCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9q c29uIC0+ICdmaWVsZDQnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIK KyAgIE91dHB1dDoganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIodGVzdF9qc29uLCAnZmllbGQ0Jzo6 dGV4dCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQp CisoMyByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9h cnIgLT4gMCk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmJf YXJyCisgICBPdXRwdXQ6IGpzb25iX2FycmF5X2VsZW1lbnRfaW50Mih0ZXN0X2FyciwgMCkKKygy IHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24g Iz4gJ3tmaWVsZDR9Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3Rf anNvbmIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDIodGVzdF9qc29uLCAne2Zp ZWxkNH0nOjp0ZXh0W10pCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmpl Y3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDQnKSk6OmludDIg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludDIodGVzdF9qc29uLCAnJC4iZmllbGQ0Iic6Ompzb25wYXRo LCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9 ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29uLCAnJC5maWVsZDQn KSk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgor ICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDIodGVzdF9qc29uLCAnJC4i ZmllbGQ0Iic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0 X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gZmxvYXQ0 IHJld3JpdGUgKG9uZSByZXByZXNlbnRhdGl2ZSkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9vYmplY3RfZmllbGRfZmxv YXQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpz b25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworLS0gU2VjdGlvbiBJMzogbXVs dGktc3Vic2NyaXB0IGF1dG9tYXRpYyBjb3ZlcmFnZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10pOjppbnQyIEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pz b25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyKHRlc3RfanNvbiwgQVJSQVlb J2ZpZWxkNic6OnRleHQsICdmMSc6OnRleHRdKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29u X3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK1NFTEVDVCAoKCd7ImEiOnsiYiI6 N319Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDI7CisgaW50MiAKKy0tLS0tLQorICAgIDcKKygx IHJvdykKKworLS0gU2VjdGlvbiBJNDogcmVwcmVzZW50YXRpdmUgZXhlY3V0aW9uIHRocm91Z2gg cmV3cml0ZSAoZGlzdHJpYnV0ZWQgYWNyb3NzIGZhbWlsaWVzKQorLS0gb2JqZWN0LWZpZWxkOiBp bnQyCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworIGludDIgCistLS0tLS0KKyAgICA0CisoMSBy b3cpCisKKy0tIG9iamVjdC1maWVsZDogZmxvYXQ0CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmll bGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CisgZmxvYXQ0IAorLS0tLS0tLS0KKyAgICAgIDQKKygxIHJvdykKKworLS0gYXJyYXktZWxlbWVu dDogaW50MgorU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJy OworIGludDIgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKKy0tIGFycmF5LWVsZW1lbnQ6IGZs b2F0NAorU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYl9hcnI7 CisgZmxvYXQ0IAorLS0tLS0tLS0KKyAgICAyLjUKKygxIHJvdykKKworLS0gZXh0cmFjdC1wYXRo OiBmbG9hdDQKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjpmbG9hdDQgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworIGZsb2F0NCAKKy0tLS0tLS0t CisgICAgICA0CisoMSByb3cpCisKKy0tIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Q6IGludDIKK1NF TEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYScpKTo6 aW50MjsKKyBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICA0MgorKDEgcm93KQorCistLSBqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0X3R6OiBmbG9hdDQKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJh IjozLjE0fSc6Ompzb25iLCAnJC5hJykpOjpmbG9hdDQ7CisganNvbmJfcGF0aF9xdWVyeV9maXJz dF90eiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg IDMuMTQKKygxIHJvdykKKworLS0gU2VjdGlvbiBJNTogTlVMTCB0aHJvdWdoIHJld3JpdGUKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdub25leGlzdGVudCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyBpbnQyIAorLS0tLS0tCisgICAgIAorKDEgcm93 KQorCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDMpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2Fycjsg IC0tIEpTT04gbnVsbCBlbGVtZW50CisgZmxvYXQ0IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJv dykKKworU0VMRUNUICh0ZXN0X2FyciAtPiA5OSk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2Fycjsg IC0tIG91dCBvZiByYW5nZQorIGludDIgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKKy0tIFNl Y3Rpb24gSTY6IHR5cGUtbWlzbWF0Y2ggdGhyb3VnaCByZXdyaXRlCitTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQxJyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOyAgLS0gc3RyaW5nIHRvIGludDIKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3Ry aW5nIHRvIHR5cGUgc21hbGxpbnQKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6Zmxv YXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmlu ZyB0byBmbG9hdDQKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgcmVh bAorLS0gU2VjdGlvbiBJNzogZGlyZWN0IGNhbGxzIHRvIG90aGVyIGZhbWlseSBidWlsdGlucyAo cmVwcmVzZW50YXRpdmUpCitTRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAsIDIw XSc6Ompzb25iLCAwKTsKKyBqc29uYl9hcnJheV9lbGVtZW50X2ludDIgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAxMAorKDEgcm93KQorCitTRUxF Q1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQoJ1szLjE0LCAyLjVdJzo6anNvbmIsIDEpOwor IGpzb25iX2FycmF5X2VsZW1lbnRfZmxvYXQ0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgMi41CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9l eHRyYWN0X3BhdGhfaW50MigneyJhIjp7ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2InXSk7 CisganNvbmJfZXh0cmFjdF9wYXRoX2ludDIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgIDcKKygxIHJvdykKKworU0VMRUNUIGpzb25iX2V4dHJhY3Rf cGF0aF9mbG9hdDQoJ3siYSI6My4xNH0nOjpqc29uYiwgQVJSQVlbJ2EnXSk7CisganNvbmJfZXh0 cmFjdF9wYXRoX2Zsb2F0NCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfaW50MigneyJhIjo0Mn0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwg ZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50MiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQyCisoMSByb3cpCisKK1NF TEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCAn JC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CisganNvbmJfcGF0aF9xdWVyeV9m aXJzdF9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykKKworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlf Zmlyc3RfdHpfaW50MigneyJhIjo0Mn0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpq c29uYiwgZmFsc2UpOworIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHpfaW50MiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQy CisoMSByb3cpCisKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2Zsb2F0NCgneyJh IjozLjE0fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7Cisg anNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTQKKygxIHJvdykK KwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdzY2FsYXInOwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3Fs CmluZGV4IGVkNzBjNGQyOWVlLi5jM2UxYzdhZTczNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApA QCAtMTY3LDggKzE2Nyw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNycpOjpib29sIEZST00gdGVzdF9qc29uCiBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50OCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ4IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLUVYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9q c29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogCiAtLSBTZWN0aW9uIDFiOiBwbGFubmVy IHJld3JpdGUgdmVyaWZpY2F0aW9uIGZvciBzdWJzY3JpcHRpbmcgc3ludGF4CiBFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6Om51bWVyaWMg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwpAQCAtMTc2LDggKzE3 NCwxMCBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydm aWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU ICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2pzb25bJ2ZpZWxkNCddKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7Ci1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9q c29uWydmaWVsZDQnXSk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisKKy0tIFZlcmlmeSB0aGF0IGludDIgYW5kIGZsb2F0NCBhcmUgYWxzbyByZXdy aXR0ZW4gdGhyb3VnaCB0aGUgb2JqZWN0LWZpZWxkIGZhbWlseS4KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDQgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogCiAtLSBTZWN0aW9uIDI6IGNvcnJl Y3QgZXhlY3V0aW9uIHRocm91Z2ggdGhlIHJld3JpdHRlbiBwYXRoCiBTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9 ICdvYmplY3QnOwpAQCAtMTg1LDggKzE4NSw2IEBAIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVs ZDcnKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBT RUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJF IGpzb25fdHlwZSA9ICdvYmplY3QnOwogU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpp bnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIFNFTEVDVCAo dGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50MiBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1TRUxFQ1QgKHRlc3Rf anNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CiAKIC0tIFNlY3Rpb24gMmI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2gg c3Vic2NyaXB0aW5nIHN5bnRheAogU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNCddKTo6bnVtZXJp YyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CkBAIC0xOTQsOCAr MTkyLDEwIEBAIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDcnXSk6OmJvb2wgRlJPTSB0ZXN0X2pz b25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxk NCddKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBT RUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0J10pOjppbnQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0 OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci1TRUxFQ1QgKHRl c3RfanNvblsnZmllbGQ0J10pOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKLVNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6OmZsb2F0NCBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisKKy0tIFVuc3VwcG9ydGVkIHRh cmdldHMgc3RpbGwgd29yayBjb3JyZWN0bHkgdGhyb3VnaCB0aGUgb3JpZ2luYWwgcGF0aAorU0VM RUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBq c29uX3R5cGUgPSAnb2JqZWN0JzsKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6Zmxv YXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIAogLS0gU2Vj dGlvbiAzOiBOVUxMIHNlbWFudGljcyAobWlzc2luZyBrZXksIEpTT04gbnVsbCwgbm9uLW9iamVj dCBpbnB1dCkKIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6bnVtZXJpYyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAtLSBKU09OIG51bGwKQEAgLTIw NiwxMCArMjA2LDYgQEAgU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMycpOjppbnQ0IEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIFNFTEVDVCAodGVzdF9qc29u IC0+ICdub25leGlzdGVudCcpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsgIC0tIG1pc3Npbmcga2V5LCBpbnQ0CiBTRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQzJyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBKU09OIG51bGwsIGZsb2F0OCBwYXRoCiBTRUxFQ1QgKHRlc3RfanNvbiAtPiAnbm9u ZXhpc3RlbnQnKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsgIC0tIG1pc3Npbmcga2V5LCBmbG9hdDgKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVs ZDMnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7ICAt LSBKU09OIG51bGwsIGludDIgcGF0aAotU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50 Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0g bWlzc2luZyBrZXksIGludDIKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDMnKTo6ZmxvYXQ0 IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIEpTT04gbnVs bCwgZmxvYXQ0IHBhdGgKLVNFTEVDVCAodGVzdF9qc29uIC0+ICdub25leGlzdGVudCcpOjpmbG9h dDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gbWlzc2lu ZyBrZXksIGZsb2F0NAogCiAtLSBTZWN0aW9uIDNiOiBOVUxMIHNlbWFudGljcyB0aHJvdWdoIHN1 YnNjcmlwdGluZyBzeW50YXgKIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDMnXSk6Om51bWVyaWMg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gSlNPTiBudWxs CkBAIC0yMjUsMTAgKzIyMSw2IEBAIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50 OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiBTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQxJyk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gZmxvYXQ4CiBTRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQ1Jyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOyAgLS0gYXJyYXkgdG8gaW50NAogU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNScpOjpm bG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gYXJy YXkgdG8gZmxvYXQ4Ci1TRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmludDIgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOyAgLS0gc3RyaW5nIHRvIGludDIK LVNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBmbG9hdDQKLVNFTEVDVCAo dGVzdF9qc29uIC0+ICdmaWVsZDUnKTo6aW50MiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7ICAtLSBhcnJheSB0byBpbnQyCi1TRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQ1Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7ICAtLSBhcnJheSB0byBmbG9hdDQKIAogLS0gU2VjdGlvbiA0YjogdHlwZS1taXNtYXRjaCBl cnJvciB0aHJvdWdoIHN1YnNjcmlwdGluZyBzeW50YXgKIFNFTEVDVCAodGVzdF9qc29uWydmaWVs ZDEnXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OyAgLS0gc3RyaW5nIHRvIG51bWVyaWMKQEAgLTI0MiwxMCArMjM0LDYgQEAgU0VMRUNUIGpzb25i X29iamVjdF9maWVsZF9ib29sKCd7ImEiOiBmYWxzZX0nOjpqc29uYiwgJ2EnKTsKIFNFTEVDVCBq c29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogNDJ9Jzo6anNvbmIsICdhJyk7CiBTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDgoJ3siYSI6IDk4NzY1NDMyMTB9Jzo6anNvbmIsICdhJyk7 CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0OCgneyJhIjogMy4xNH0nOjpqc29uYiwg J2EnKTsKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJhIjogNDJ9Jzo6anNvbmIs ICdhJyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDN9Jzo6anNvbmIs ICdhJyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMy4xNH0nOjpq c29uYiwgJ2EnKTsKLVNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEiOiAxLjV9 Jzo6anNvbmIsICdhJyk7CiAtLSBkaXJlY3QgY2FsbHM6IE5VTEwgc2VtYW50aWNzCiBTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5nJyk7 CiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6IG51bGx9Jzo6anNvbmIs ICdhJyk7CkBAIC0yNTMsMTAgKzI0MSw2IEBAIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfYm9v bCgneyJhIjogdHJ1ZX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKIFNFTEVDVCBqc29uYl9vYmplY3Rf ZmllbGRfaW50NCgneyJhIjogMX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKIFNFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50NCgneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKIFNFTEVDVCBqc29u Yl9vYmplY3RfZmllbGRfZmxvYXQ4KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7Ci1T RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDF9Jzo6anNvbmIsICdtaXNzaW5n Jyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IG51bGx9Jzo6anNvbmIs ICdhJyk7Ci1TRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMS4wfSc6Ompz b25iLCAnbWlzc2luZycpOwotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6 IG51bGx9Jzo6anNvbmIsICdhJyk7CiAtLSBkaXJlY3QgY2FsbHM6IHR5cGUtbWlzbWF0Y2ggZXJy b3JzCiBTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMoJ3siYSI6ICJ0ZXh0In0nOjpq c29uYiwgJ2EnKTsKIFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfYm9vbCgneyJhIjogMX0nOjpq c29uYiwgJ2EnKTsKQEAgLTI2NCwxNCArMjQ4LDggQEAgU0VMRUNUIGpzb25iX29iamVjdF9maWVs ZF9udW1lcmljKCd7ImEiOiB7IngiOjF9fSc6Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHQK IFNFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50NCgneyJhIjogInRleHQifSc6Ompzb25iLCAn YScpOwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ4KCd7ImEiOiB0cnVlfSc6Ompzb25i LCAnYScpOwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDgoJ3siYSI6IFsxLDJdfSc6 Ompzb25iLCAnYScpOyAgLS0gY29udGFpbmVyIHRvIGZsb2F0OAotU0VMRUNUIGpzb25iX29iamVj dF9maWVsZF9pbnQyKCd7ImEiOiAidGV4dCJ9Jzo6anNvbmIsICdhJyk7ICAtLSBzdHJpbmcgdG8g aW50MgotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IHRydWV9Jzo6anNv bmIsICdhJyk7ICAtLSBib29sIHRvIGZsb2F0NAotU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9p bnQyKCd7ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBpbnQyCi1T RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwg J2EnKTsgIC0tIGNvbnRhaW5lciB0byBmbG9hdDQKIC0tIGRpcmVjdCBjYWxsczogaW50ZWdlciBv dmVyZmxvdwogU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQ0KCd7ImEiOiA5OTk5OTk5OTk5 fSc6Ompzb25iLCAnYScpOwotLS0gZGlyZWN0IGNhbGxzOiBpbnQyIG92ZXJmbG93Ci1TRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDk5OTk5fSc6Ompzb25iLCAnYScpOwogCiAt LSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogYXJyYXktZWxlbWVudCBmYW1pbHkKIC0tIFRo ZSBwbGFubmVyIHJld3JpdGVzIChqLT5pZHgpOjp0eXBlIGFuZCAoaltpZHhdKTo6dHlwZSBpbnRv IGRpcmVjdApAQCAtMjg3LDggKzI2NSw2IEBAIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOwogRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDEpOjpmbG9hdDggRlJP TSB0ZXN0X2pzb25iX2FycjsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0 ZXN0X2FyciAtPiAyKTo6Ym9vbCBGUk9NIHRlc3RfanNvbmJfYXJyOwogRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQ4IEZST00gdGVzdF9qc29u Yl9hcnI7Ci1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnIgLT4g MCk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2FycjsKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYl9hcnI7CiAK IC0tIFNlY3Rpb24gQTFiOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChhcnJheSBzdWJz Y3JpcHRpbmcgZm9ybSkKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2FyclswXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsKQEAgLTI5Niw3ICsyNzIsNiBA QCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbMF0pOjppbnQ0 IEZST00gdGVzdF9qc29uYl9hcnI7CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVD VCAodGVzdF9hcnJbMV0pOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iX2FycjsKIEVYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2FyclsyXSk6OmJvb2wgRlJPTSB0ZXN0X2pz b25iX2FycjsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2Fyclsw XSk6OmludDggRlJPTSB0ZXN0X2pzb25iX2FycjsKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUICh0ZXN0X2FyclswXSk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2FycjsKIAogLS0g U2VjdGlvbiBBMWM6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24gKGRpcmVjdCBmdW5jdGlv biBjYWxsIGZvcm0pCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJf YXJyYXlfZWxlbWVudCh0ZXN0X2FyciwgMCkpOjppbnQ0IEZST00gdGVzdF9qc29uYl9hcnI7CkBA IC0zMDcsOCArMjgyLDYgQEAgU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6aW50OCBGUk9NIHRlc3Rf anNvbmJfYXJyOwogU0VMRUNUICh0ZXN0X2FyciAtPiAwKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNv bmJfYXJyOwogU0VMRUNUICh0ZXN0X2FyciAtPiAxKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9h cnI7CiBTRUxFQ1QgKHRlc3RfYXJyIC0+IDIpOjpib29sIEZST00gdGVzdF9qc29uYl9hcnI7Ci1T RUxFQ1QgKHRlc3RfYXJyIC0+IDApOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7Ci1TRUxFQ1Qg KHRlc3RfYXJyIC0+IDEpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsKIAogLS0gU2VjdGlv biBBMmI6IGNvcnJlY3QgZXhlY3V0aW9uIHRocm91Z2ggc3Vic2NyaXB0aW5nCiBTRUxFQ1QgKHRl c3RfYXJyWzBdKTo6aW50NCBGUk9NIHRlc3RfanNvbmJfYXJyOwpAQCAtMzIxLDggKzI5NCw2IEBA IFNFTEVDVCAodGVzdF9hcnIgLT4gMyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IEpTT04gbnVsbCBlbGVtZW50CiBTRUxFQ1QgKHRlc3RfYXJyIC0+IC0xKTo6aW50NCBGUk9NIHRl c3RfanNvbmJfYXJyOyAgLS0gbmVnYXRpdmU6IGxhc3QgZWxlbWVudCBpcyBvYmplY3QsIHdyb25n IHR5cGUgd291bGQgZXJyb3I7IHVzZSAtNCBmb3IgbnVsbAogU0VMRUNUICh0ZXN0X2FyciAtPiAt NCk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIG5lZ2F0aXZlIGluZGV4IHBvaW50 aW5nIHRvIG51bGwgZWxlbWVudAogU0VMRUNUICgneyJrIjoxfSc6Ompzb25iIC0+IDApOjppbnQ0 OyAgLS0gbm9uLWFycmF5IGlucHV0Ci1TRUxFQ1QgKHRlc3RfYXJyIC0+IDk5KTo6aW50MiBGUk9N IHRlc3RfanNvbmJfYXJyOyAgLS0gb3V0IG9mIHJhbmdlLCBpbnQyCi1TRUxFQ1QgKHRlc3RfYXJy IC0+IDMpOjpmbG9hdDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIEpTT04gbnVsbCBlbGVtZW50 LCBmbG9hdDQKIAogLS0gU2VjdGlvbiBBM2I6IE5VTEwgdGhyb3VnaCBzdWJzY3JpcHRpbmcKIFNF TEVDVCAodGVzdF9hcnJbOTldKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBvdXQg b2YgcmFuZ2UKQEAgLTMzNCw4ICszMDUsNiBAQCBTRUxFQ1QgKHRlc3RfYXJyIC0+IDQpOjpmbG9h dDggRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIHN0cmluZyB0byBmbG9hdDgKIFNFTEVDVCAodGVz dF9hcnIgLT4gNSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIGFycmF5IGNvbnRh aW5lciB0byBudW1lcmljCiBTRUxFQ1QgKHRlc3RfYXJyIC0+IDYpOjppbnQ4IEZST00gdGVzdF9q c29uYl9hcnI7ICAtLSBvYmplY3QgY29udGFpbmVyIHRvIGludDgKIFNFTEVDVCAodGVzdF9hcnIg LT4gMik6OmludDQgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0tIGJvb2wgdG8gaW50NAotU0VMRUNU ICh0ZXN0X2FyciAtPiA0KTo6aW50MiBGUk9NIHRlc3RfanNvbmJfYXJyOyAgLS0gc3RyaW5nIHRv IGludDIKLVNFTEVDVCAodGVzdF9hcnIgLT4gNCk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmJfYXJy OyAgLS0gc3RyaW5nIHRvIGZsb2F0NAogCiAtLSBTZWN0aW9uIEE0YjogZXJyb3IgdGhyb3VnaCBz dWJzY3JpcHRpbmcKIFNFTEVDVCAodGVzdF9hcnJbNF0pOjppbnQ4IEZST00gdGVzdF9qc29uYl9h cnI7ICAtLSBzdHJpbmcgdG8gaW50OApAQCAtMzU0LDkgKzMyMyw2IEBAIFNFTEVDVCBqc29uYl9h cnJheV9lbGVtZW50X2Zsb2F0OCgneyJhIjoxfSc6Ompzb25iLCAwKTsgIC0tIG5vbi1hcnJheQog U0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50NCgnWyJ0ZXh0Il0nOjpqc29uYiwgMCk7CiBT RUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQ4KCdbdHJ1ZV0nOjpqc29uYiwgMCk7CiBTRUxF Q1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDgoJ1tbMSwyXV0nOjpqc29uYiwgMCk7ICAtLSBj b250YWluZXIgdG8gZmxvYXQ4Ci1TRUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9pbnQyKCdbMTAs IDIwXSc6Ompzb25iLCAwKTsKLVNFTEVDVCBqc29uYl9hcnJheV9lbGVtZW50X2Zsb2F0NCgnWzMu MTQsIDIuNV0nOjpqc29uYiwgMSk7Ci0KIAogLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246 IGV4dHJhY3QtcGF0aCBmYW1pbHkKIC0tIFRoZSBwbGFubmVyIHJld3JpdGVzIChqICM+IHBhdGgp Ojp0eXBlIGFuZCAoanNvbmJfZXh0cmFjdF9wYXRoKGosIC4uLikpOjp0eXBlCkBAIC0zNjksOCAr MzM1LDYgQEAgRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAj PiAne2ZpZWxkNH0nKTo6ZmxvYXQ4IEZST00gdGVzdF8KIEVYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDYsZjF9Jyk6OmludDggRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkN30nKTo6Ym9vbCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAKLUVYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3tmaWVsZDR9Jyk6OmludDIgRlJPTSB0ZXN0 X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvbiAjPiAne2ZpZWxkNH0nKTo6ZmxvYXQ0IEZST00gdGVz dF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIC0tIFNlY3Rpb24gUDFiOiBwbGFu bmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uIChkaXJlY3QgZnVuY3Rpb24tY2FsbCBmb3JtKQogRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX2V4dHJhY3RfcGF0aCh0ZXN0 X2pzb24sICdmaWVsZDQnKSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJf ZXh0cmFjdF9wYXRoKHRlc3RfanNvbiwgJ2ZpZWxkNicsICdmMScpKTo6aW50NCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CkBAIC00MTQsMTAgKzM3OCw2IEBAIFNF TEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJhIjoxfSc6Ompzb25iLCBBUlJBWVsnYidd KTsKIFNFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50NCgneyJhIjoidGV4dCJ9Jzo6anNvbmIs IEFSUkFZWydhJ10pOwogLS0gZGlyZWN0IGNhbGxzOiBhcnJheSBpbmRleCBpbiBwYXRoCiBTRUxF Q1QganNvbmJfZXh0cmFjdF9wYXRoX2ludDQoJ3siYSI6WzEwLDIwXX0nOjpqc29uYiwgQVJSQVlb J2EnLCcxJ10pOwotLS0gZGlyZWN0IGNhbGxzOiBpbnQyIGFuZCBmbG9hdDQKLVNFTEVDVCBqc29u Yl9leHRyYWN0X3BhdGhfaW50MigneyJhIjp7ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2In XSk7Ci1TRUxFQ1QganNvbmJfZXh0cmFjdF9wYXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25i LCBBUlJBWVsnYSddKTsKLQogCiAtLSBPcHRpbWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogbXVsdGkt c3Vic2NyaXB0IGNoYWlucwogLS0gVGhlIHBsYW5uZXIgbG93ZXJzIGpbJ2EnXVsnYiddLCBqWydh J11bMF0sIGV0Yy4gdG8gdGhlIGV4dHJhY3QtcGF0aCB0eXBlZApAQCAtNDMzLDEwICszOTMsNiBA QCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDYn XVsnZjEnXSk6Om51bWVyaWMgRlJPTSB0ZQogLS0gVmVyaWZ5IHNpbmdsZSBzdWJzY3JpcHQgc3Rp bGwgdXNlcyB0aGUgZXhpc3Rpbmcgb2JqZWN0LWZpZWxkIGZhbWlseSwgbm90IGV4dHJhY3QtcGF0 aAogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ0 J10pOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKIAot Ci0tLSBTZWN0aW9uIE0xYjogbXVsdGktc3Vic2NyaXB0IGludDIvZmxvYXQ0Ci1FWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDYnXVsnZjEnXSk6Omlu dDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwotU0VMRUNUICgo J3siYSI6eyJiIjo3fX0nOjpqc29uYilbJ2EnXVsnYiddKTo6aW50MjsKIC0tIFNlY3Rpb24gTTI6 IGV4ZWN1dGlvbiB0aHJvdWdoIG11bHRpLXN1YnNjcmlwdCByZXdyaXRlCiBTRUxFQ1QgKCgneyJh Ijp7ImIiOjQyfX0nOjpqc29uYilbJ2EnXVsnYiddKTo6aW50NDsKIFNFTEVDVCAoKCd7ImEiOlsx MCwyMCwzMF19Jzo6anNvbmIpWydhJ11bMV0pOjppbnQ0OwpAQCAtNDYyLDYgKzQxOCwxNzMgQEAg U0VMRUNUICgoJ3siYSI6eyJiIjpbMSwyXX19Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDQ7ICAt LSBjb250YWluZXIgdG8gaW50NAogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQogU0VMRUNU ICgoJ3siYSI6W1sxMCwyMF0sWzMwLDQwXV19Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDAsMSkgQVMgaTsKIAorLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJh Y3Rpb246IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgZmFtaWx5CistLSBUaGUgcGxhbm5lciByZXdy aXRlcyAoanNvbmJfcGF0aF9xdWVyeV9maXJzdChqLCBwYXRoKSk6OnR5cGUgaW50byBhIGRpcmVj dAorLS0gdHlwZWQgZXh0cmFjdG9yIGNhbGwgZm9yIHRoZSBzYW1lIHRhcmdldCB0eXBlcyBhcyB0 aGUgb3RoZXIgZmFtaWxpZXMuCisKKy0tIFNlY3Rpb24gUTE6IHBsYW5uZXIgcmV3cml0ZSB2ZXJp ZmljYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjppbnQ0IEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ3Jykp Ojpib29sIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRl c3RfanNvbiwgJyQuZmllbGQ0JykpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjppbnQ4IEZST00g dGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQu ZmllbGQ0JykpOjpmbG9hdDggRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOworLS0gMy1hcmcgZm9ybSAodmFycyBleHBsaWNpdCkKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmll bGQ0JywgJ3t9JykpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKKy0tIDQtYXJnIGZvcm0gKHZhcnMgKyBzaWxlbnQgZXhwbGljaXQpCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pz b24sICckLmZpZWxkNCcsICd7fScsIHRydWUpKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworLS0gU2VjdGlvbiBRMjogZXhlY3V0aW9uIHRocm91 Z2ggcmV3cml0ZQorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjQyfSc6Ompz b25iLCAnJC5hJykpOjppbnQ0OworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEi OjMuMTR9Jzo6anNvbmIsICckLmEnKSk6OmZsb2F0ODsKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVy eV9maXJzdCgneyJhIjp0cnVlfSc6Ompzb25iLCAnJC5hJykpOjpib29sOworU0VMRUNUIChqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjk5fSc6Ompzb25iLCAnJC5hJykpOjpudW1lcmljOwor U0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEiOjk5fSc6Ompzb25iLCAnJC5hJykp OjppbnQ4OworLS0gbmVzdGVkIG9iamVjdCBwYXRoCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlf Zmlyc3QoJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIsICckLmEuYicpKTo6aW50NDsKKy0tIGFycmF5 IGFjY2VzcyBpbiBqc29ucGF0aAorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7ImEi OlsxMCwyMF19Jzo6anNvbmIsICckLmFbMV0nKSk6OmludDQ7CisKKy0tIFNlY3Rpb24gUTM6IE5V TEwgc2VtYW50aWNzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6MX0nOjpq c29uYiwgJyQuYicpKTo6aW50NDsgIC0tIG1pc3NpbmcgcGF0aAorU0VMRUNUIChqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0KCd7ImEiOm51bGx9Jzo6anNvbmIsICckLmEnKSk6OmludDQ7ICAtLSBKU09O IG51bGwKKworLS0gU2VjdGlvbiBRNDogc2lsZW50IHNlbWFudGljcworLS0gc2lsZW50PXRydWUg c3VwcHJlc3NlcyBqc29ucGF0aCBleGVjdXRpb24gZXJyb3JzLCBOT1QgY2FzdCBlcnJvcnMKK1NF TEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoidGV4dCJ9Jzo6anNvbmIsICckLmEn LCAne30nLCB0cnVlKSk6OmludDQ7ICAtLSBjYXN0IGVycm9yIG5vdCBzdXBwcmVzc2VkCistLSBz aWxlbnQ9ZmFsc2UgKGRlZmF1bHQpOiBqc29ucGF0aCBzdHJpY3QgZXJyb3IKK1NFTEVDVCAoanNv bmJfcGF0aF9xdWVyeV9maXJzdCgneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0ICQuYicsICd7fScs IGZhbHNlKSk6OmludDQ7ICAtLSBzdHJpY3QgbWlzc2luZyBrZXkgZXJyb3IKKy0tIHNpbGVudD10 cnVlOiBqc29ucGF0aCBzdHJpY3QgZXJyb3Igc3VwcHJlc3NlZAorU0VMRUNUIChqc29uYl9wYXRo X3F1ZXJ5X2ZpcnN0KCd7ImEiOjF9Jzo6anNvbmIsICdzdHJpY3QgJC5iJywgJ3t9JywgdHJ1ZSkp OjppbnQ0OyAgLS0gc3VwcHJlc3NlZCwgcmV0dXJucyBOVUxMCisKKy0tIFNlY3Rpb24gUTU6IHR5 cGUtbWlzbWF0Y2ggZXJyb3JzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6 ImhlbGxvIn0nOjpqc29uYiwgJyQuYScpKTo6aW50NDsgIC0tIHN0cmluZyB0byBpbnQ0CitTRUxF Q1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoJ3siYSI6WzEsMl19Jzo6anNvbmIsICckLmEnKSk6 OmludDQ7ICAtLSBjb250YWluZXIgdG8gaW50NAorCistLSBTZWN0aW9uIFE2OiBkaXJlY3QgY2Fs bHMgdG8gdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9m aXJzdF9pbnQ0KCd7ImEiOjQyfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25i LCBmYWxzZSk7CitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF9pbnQ4KCd7ImEiOjk5fSc6 Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CitTRUxFQ1QganNv bmJfcGF0aF9xdWVyeV9maXJzdF9mbG9hdDgoJ3siYSI6My4xNH0nOjpqc29uYiwgJyQuYSc6Ompz b25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfbnVtZXJpYygneyJhIjoxLjIzfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompz b25iLCBmYWxzZSk7CitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF9ib29sKCd7ImEiOnRy dWV9Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKKy0tIGRp cmVjdCBjYWxsOiBtaXNzaW5nIHBhdGgKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2lu dDQoJ3siYSI6MX0nOjpqc29uYiwgJyQuYic6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2Up OworLS0gZGlyZWN0IGNhbGw6IHdpdGggdmFycworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfaW50NCgneyJhIjo0Mn0nOjpqc29uYiwgJyQuYSA/IChAID4gJHgpJzo6anNvbnBhdGgsICd7 IngiOjEwfSc6Ompzb25iLCBmYWxzZSk7CisKKy0tIE9wdGltaXplZCB0eXBlZCBleHRyYWN0aW9u OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6IGZhbWlseQorLS0gU2FtZSBwYXR0ZXJuIGFzIHRo ZSBub24tdHogZmFtaWx5LCBidXQgd2l0aCB0aW1lem9uZS1hd2FyZSBldmFsdWF0aW9uLgorCist LSBTZWN0aW9uIFQxOiBwbGFubmVyIHJld3JpdGUgdmVyaWZpY2F0aW9uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eih0ZXN0X2pz b24sICckLmZpZWxkNCcpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNycpKTo6Ym9vbCBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZp ZWxkNCcpKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoanNvbmJfcGF0aF9xdWVy eV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNCcpKTo6aW50OCBGUk9NIHRlc3RfanNvbmIg V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNCcp KTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKy0t IDMtYXJnIGZvcm0gKHZhcnMgZXhwbGljaXQpCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eih0ZXN0X2pzb24sICckLmZpZWxkNCcs ICd7fScpKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CistLSA0LWFyZyBmb3JtICh2YXJzICsgc2lsZW50IGV4cGxpY2l0KQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHoodGVzdF9qc29u LCAnJC5maWVsZDQnLCAne30nLCB0cnVlKSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ29iamVjdCc7CisKKy0tIFNlY3Rpb24gVDI6IGV4ZWN1dGlvbiB0aHJvdWdo IHJld3JpdGUKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjo0Mn0nOjpq c29uYiwgJyQuYScpKTo6aW50NDsKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eign eyJhIjozLjE0fSc6Ompzb25iLCAnJC5hJykpOjpmbG9hdDg7CitTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3RfdHooJ3siYSI6dHJ1ZX0nOjpqc29uYiwgJyQuYScpKTo6Ym9vbDsKK1NFTEVD VCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjo5OX0nOjpqc29uYiwgJyQuYScpKTo6 bnVtZXJpYzsKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjo5OX0nOjpq c29uYiwgJyQuYScpKTo6aW50ODsKKy0tIG5lc3RlZCBwYXRoCitTRUxFQ1QgKGpzb25iX3BhdGhf cXVlcnlfZmlyc3RfdHooJ3siYSI6eyJiIjo0Mn19Jzo6anNvbmIsICckLmEuYicpKTo6aW50NDsK Ky0tIGFycmF5IGFjY2VzcworU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEi OlsxMCwyMF19Jzo6anNvbmIsICckLmFbMV0nKSk6OmludDQ7CisKKy0tIFNlY3Rpb24gVDM6IE5V TEwgc2VtYW50aWNzCitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6MX0n Ojpqc29uYiwgJyQuYicpKTo6aW50NDsgIC0tIG1pc3NpbmcgcGF0aAorU0VMRUNUIChqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOm51bGx9Jzo6anNvbmIsICckLmEnKSk6OmludDQ7ICAt LSBKU09OIG51bGwKKworLS0gU2VjdGlvbiBUNDogc2lsZW50IHNlbWFudGljcworU0VMRUNUIChq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6KCd7ImEiOiJ0ZXh0In0nOjpqc29uYiwgJyQuYScsICd7 fScsIHRydWUpKTo6aW50NDsgIC0tIGNhc3QgZXJyb3Igbm90IHN1cHByZXNzZWQKK1NFTEVDVCAo anNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0ICQuYics ICd7fScsIGZhbHNlKSk6OmludDQ7ICAtLSBzdHJpY3QgZXJyb3IKK1NFTEVDVCAoanNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eigneyJhIjoxfSc6Ompzb25iLCAnc3RyaWN0ICQuYicsICd7fScsIHRy dWUpKTo6aW50NDsgIC0tIHN1cHByZXNzZWQsIE5VTEwKKworLS0gU2VjdGlvbiBUNTogdHlwZS1t aXNtYXRjaCBlcnJvcnMKK1NFTEVDVCAoanNvbmJfcGF0aF9xdWVyeV9maXJzdF90eigneyJhIjoi aGVsbG8ifSc6Ompzb25iLCAnJC5hJykpOjppbnQ0OworCistLSBTZWN0aW9uIFQ2OiBkaXJlY3Qg Y2FsbHMgdG8gdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zCitTRUxFQ1QganNvbmJfcGF0aF9xdWVy eV9maXJzdF90el9pbnQ0KCd7ImEiOjQyfSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6 Ompzb25iLCBmYWxzZSk7CitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9pbnQ4KCd7 ImEiOjk5fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CitT RUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJzdF90el9mbG9hdDgoJ3siYSI6My4xNH0nOjpqc29u YiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwgZmFsc2UpOworU0VMRUNUIGpzb25iX3Bh dGhfcXVlcnlfZmlyc3RfdHpfbnVtZXJpYygneyJhIjoxLjIzfSc6Ompzb25iLCAnJC5hJzo6anNv bnBhdGgsICd7fSc6Ompzb25iLCBmYWxzZSk7CitTRUxFQ1QganNvbmJfcGF0aF9xdWVyeV9maXJz dF90el9ib29sKCd7ImEiOnRydWV9Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNv bmIsIGZhbHNlKTsKKworLS0gT3B0aW1pemVkIHR5cGVkIGV4dHJhY3Rpb246IGludDIgLyBmbG9h dDQgbWF0cml4IGNvbXBsZXRpb24KKy0tIEV4dGVuZHMgdGhlIGV4aXN0aW5nIHR5cGVkIGV4dHJh Y3RvciBmYW1pbGllcyB0byBjb3ZlciBpbnQyIChzbWFsbGludCkKKy0tIGFuZCBmbG9hdDQgKHJl YWwpIHRhcmdldCB0eXBlcy4KKworLS0gU2VjdGlvbiBJMTogZGlyZWN0IGNhbGxzIHRvIGludDIg LyBmbG9hdDQgdHlwZWQgZXh0cmFjdG9yIGJ1aWx0aW5zIChvYmplY3QtZmllbGQpCitTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6IDQyfSc6Ompzb25iLCAnYScpOworU0VMRUNU IGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7ImEiOiAzfSc6Ompzb25iLCAnYScpOworU0VMRUNU IGpzb25iX29iamVjdF9maWVsZF9mbG9hdDQoJ3siYSI6IDMuMTR9Jzo6anNvbmIsICdhJyk7CitT RUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogMS41fSc6Ompzb25iLCAnYScp OworLS0gTlVMTCBzZW1hbnRpY3MKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50MigneyJh IjogMX0nOjpqc29uYiwgJ21pc3NpbmcnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfaW50 MigneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRf ZmxvYXQ0KCd7ImEiOiAxLjB9Jzo6anNvbmIsICdtaXNzaW5nJyk7CitTRUxFQ1QganNvbmJfb2Jq ZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogbnVsbH0nOjpqc29uYiwgJ2EnKTsKKy0tIHR5cGUtbWlz bWF0Y2ggZXJyb3JzCitTRUxFQ1QganNvbmJfb2JqZWN0X2ZpZWxkX2ludDIoJ3siYSI6ICJ0ZXh0 In0nOjpqc29uYiwgJ2EnKTsKK1NFTEVDVCBqc29uYl9vYmplY3RfZmllbGRfZmxvYXQ0KCd7ImEi OiB0cnVlfSc6Ompzb25iLCAnYScpOworU0VMRUNUIGpzb25iX29iamVjdF9maWVsZF9pbnQyKCd7 ImEiOiBbMSwyXX0nOjpqc29uYiwgJ2EnKTsgIC0tIGNvbnRhaW5lciB0byBpbnQyCitTRUxFQ1Qg anNvbmJfb2JqZWN0X2ZpZWxkX2Zsb2F0NCgneyJhIjogeyJ4IjoxfX0nOjpqc29uYiwgJ2EnKTsg IC0tIGNvbnRhaW5lciB0byBmbG9hdDQKKy0tIGludDIgb3ZlcmZsb3cKK1NFTEVDVCBqc29uYl9v YmplY3RfZmllbGRfaW50MigneyJhIjogOTk5OTl9Jzo6anNvbmIsICdhJyk7CisKKy0tIFNlY3Rp b24gSTI6IHBsYW5uZXIgcmV3cml0ZSB2ZXJpZmljYXRpb24g4oCUIG9uZSBwZXIgZmFtaWx5ICh1 c2luZyBpbnQyKQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6OmludDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyIC0+ IDApOjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjppbnQyIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuZmllbGQ0Jykp OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6 KHRlc3RfanNvbiwgJyQuZmllbGQ0JykpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnb2JqZWN0JzsKKy0tIGZsb2F0NCByZXdyaXRlIChvbmUgcmVwcmVzZW50YXRpdmUp CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVs ZDQnKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsK KworLS0gU2VjdGlvbiBJMzogbXVsdGktc3Vic2NyaXB0IGF1dG9tYXRpYyBjb3ZlcmFnZQorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2Yx J10pOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK1NF TEVDVCAoKCd7ImEiOnsiYiI6N319Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDI7CisKKy0tIFNl Y3Rpb24gSTQ6IHJlcHJlc2VudGF0aXZlIGV4ZWN1dGlvbiB0aHJvdWdoIHJld3JpdGUgKGRpc3Ry aWJ1dGVkIGFjcm9zcyBmYW1pbGllcykKKy0tIG9iamVjdC1maWVsZDogaW50MgorU0VMRUNUICh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5 cGUgPSAnb2JqZWN0JzsKKy0tIG9iamVjdC1maWVsZDogZmxvYXQ0CitTRUxFQ1QgKHRlc3RfanNv biAtPiAnZmllbGQ0Jyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CistLSBhcnJheS1lbGVtZW50OiBpbnQyCitTRUxFQ1QgKHRlc3RfYXJyIC0+IDAp OjppbnQyIEZST00gdGVzdF9qc29uYl9hcnI7CistLSBhcnJheS1lbGVtZW50OiBmbG9hdDQKK1NF TEVDVCAodGVzdF9hcnIgLT4gMSk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmJfYXJyOworLS0gZXh0 cmFjdC1wYXRoOiBmbG9hdDQKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7ZmllbGQ0fScpOjpmbG9h dDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworLS0ganNvbmJf cGF0aF9xdWVyeV9maXJzdDogaW50MgorU0VMRUNUIChqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KCd7 ImEiOjQyfSc6Ompzb25iLCAnJC5hJykpOjppbnQyOworLS0ganNvbmJfcGF0aF9xdWVyeV9maXJz dF90ejogZmxvYXQ0CitTRUxFQ1QgKGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooJ3siYSI6My4x NH0nOjpqc29uYiwgJyQuYScpKTo6ZmxvYXQ0OworCistLSBTZWN0aW9uIEk1OiBOVUxMIHRocm91 Z2ggcmV3cml0ZQorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ25vbmV4aXN0ZW50Jyk6OmludDIgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworU0VMRUNUICh0ZXN0X2Fy ciAtPiAzKTo6ZmxvYXQ0IEZST00gdGVzdF9qc29uYl9hcnI7ICAtLSBKU09OIG51bGwgZWxlbWVu dAorU0VMRUNUICh0ZXN0X2FyciAtPiA5OSk6OmludDIgRlJPTSB0ZXN0X2pzb25iX2FycjsgIC0t IG91dCBvZiByYW5nZQorCistLSBTZWN0aW9uIEk2OiB0eXBlLW1pc21hdGNoIHRocm91Z2ggcmV3 cml0ZQorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjppbnQyIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsgIC0tIHN0cmluZyB0byBpbnQyCitTRUxFQ1Qg KHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmZsb2F0NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7ICAtLSBzdHJpbmcgdG8gZmxvYXQ0CisKKy0tIFNlY3Rpb24gSTc6 IGRpcmVjdCBjYWxscyB0byBvdGhlciBmYW1pbHkgYnVpbHRpbnMgKHJlcHJlc2VudGF0aXZlKQor U0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRfaW50MignWzEwLCAyMF0nOjpqc29uYiwgMCk7CitT RUxFQ1QganNvbmJfYXJyYXlfZWxlbWVudF9mbG9hdDQoJ1szLjE0LCAyLjVdJzo6anNvbmIsIDEp OworU0VMRUNUIGpzb25iX2V4dHJhY3RfcGF0aF9pbnQyKCd7ImEiOnsiYiI6N319Jzo6anNvbmIs IEFSUkFZWydhJywnYiddKTsKK1NFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0KCd7ImEi OjMuMTR9Jzo6anNvbmIsIEFSUkFZWydhJ10pOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmly c3RfaW50MigneyJhIjo0Mn0nOjpqc29uYiwgJyQuYSc6Ompzb25wYXRoLCAne30nOjpqc29uYiwg ZmFsc2UpOworU0VMRUNUIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfZmxvYXQ0KCd7ImEiOjMuMTR9 Jzo6anNvbmIsICckLmEnOjpqc29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKK1NFTEVDVCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3R6X2ludDIoJ3siYSI6NDJ9Jzo6anNvbmIsICckLmEnOjpq c29ucGF0aCwgJ3t9Jzo6anNvbmIsIGZhbHNlKTsKK1NFTEVDVCBqc29uYl9wYXRoX3F1ZXJ5X2Zp cnN0X3R6X2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCAnJC5hJzo6anNvbnBhdGgsICd7fSc6 Ompzb25iLCBmYWxzZSk7CisKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKIFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJyYXknOwogU0VMRUNUIHRlc3RfanNv biAtPiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwpAQCAt MTkxOSw0ICsyMDQyLDQgQEAgc2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9LCB7Im5hbWUiOiAi Ym9iIn1dJzo6anNvbmIpLm5hbWU7CiBzZWxlY3QgKCd0cnVlJzo6anNvbmIpOjpib29sOwogc2Vs ZWN0ICgndHJ1ZSc6Ompzb25iKS5ib29sOwogc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpq c29uYik6OnRleHQ7Ci1zZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKS50ZXh0Owpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3NlbGVjdCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6 anNvbmIpLnRleHQ7Ci0tIAoyLjUyLjAKCg== --0000000000006dce3d06506a04a1 Content-Type: application/octet-stream; name="v5-0004-jsonb-optimize-multi-subscript-casts-via-extract-.patch" Content-Disposition: attachment; filename="v5-0004-jsonb-optimize-multi-subscript-casts-via-extract-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mogqanhf3 RnJvbSAxYzViYzQyODM4OGU2YTRmOTdjMWU2ODRiNzcwNWI5OGU1ZDBiYWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPGhhaWJvLnlhbkBhcHBsZS5jb20+CkRhdGU6 IFN1biwgMjYgQXByIDIwMjYgMTg6NDk6MzMgLTA3MDAKU3ViamVjdDogW1BBVENIIHY1IDQvNV0g anNvbmI6IG9wdGltaXplIG11bHRpLXN1YnNjcmlwdCBjYXN0cyB2aWEgZXh0cmFjdC1wYXRoCiBy ZXdyaXRlCgpFeHRlbmQgdGhlIGV4aXN0aW5nIHN1cHBvcnQtZnVuY3Rpb24gcmV3cml0ZSB0byBt dWx0aS1zdWJzY3JpcHQganNvbmIKc3Vic2NyaXB0aW5nIGNoYWlucywgbG93ZXJpbmcgdGhlbSB0 byB0aGUgZXh0cmFjdC1wYXRoIHR5cGVkIGV4dHJhY3RvcgpmYW1pbHkgYWxyZWFkeSBpbnRyb2R1 Y2VkIGJ5IHRoZSBzZXJpZXMuCgpPbmx5IGNoYWlucyB3aG9zZSBpbnRlZ2VyIHN1YnNjcmlwdHMg YXJlIGFsbCBjb25zdGFudHMgYXJlIGVsaWdpYmxlIGZvcgp0aGUgcmV3cml0ZTsgbm9uLWNvbnN0 YW50IGludGVnZXIgc3Vic2NyaXB0cyAod2hpY2ggd291bGQgcmVxdWlyZSBhCnJ1bnRpbWUgQ29l cmNlVmlhSU8gY29udmVyc2lvbikgY2F1c2UgdGhlIGVudGlyZSBjaGFpbiB0byBiZSBsZWZ0IGlu Cml0cyBvcmlnaW5hbCBmb3JtLgoKVGhpcyBrZWVwcyBzaW5nbGUtc3Vic2NyaXB0IGJlaGF2aW9y IHVuY2hhbmdlZCBhbmQgc3VwcG9ydHMgY2FzdHMgdG8KbnVtZXJpYywgYm9vbCwgaW50MiwgaW50 NCwgaW50OCwgZmxvYXQ0LCBhbmQgZmxvYXQ4LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYi5jICAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pzb25iLm91dCB8IDE1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA0MyArKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCAzMDEgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmIuYwppbmRleCA3ZWJhNDM3YjhhNC4uZDVjMDg3MWEyMTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yi5jCkBAIC0xODM1LDYgKzE4MzUsNyBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpidlR5 cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSwgTm9kZSAqZXNjb250ZXh0KQogICogICAtIGpz b25iX29iamVjdF9maWVsZChqLCAna2V5JykgIC8gIGogLT4gJ2tleScgIC8gIGpbJ2tleSddCiAg KiAgIC0ganNvbmJfYXJyYXlfZWxlbWVudChqLCBpZHgpICAgLyAgaiAtPiBpZHggICAgLyAgaltp ZHhdCiAgKiAgIC0ganNvbmJfZXh0cmFjdF9wYXRoKGosIC4uLikgICAgLyAgaiAjPiAne2EsYn0n CisgKiAgIC0gbXVsdGktc3Vic2NyaXB0IGNoYWlucyAgICAgICAgIGpbJ2EnXVsnYiddLCBqWydh J11bMF0sIGV0Yy4KICAqLwogRGF0dW0KIGpzb25iX2Nhc3Rfc3VwcG9ydChQR19GVU5DVElPTl9B UkdTKQpAQCAtMTg4NSwzNSArMTg4NiwxMjAgQEAganNvbmJfY2FzdF9zdXBwb3J0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJCWVsc2UgaWYgKElzQShhcmcsIFN1YnNjcmlwdGluZ1JlZikpCiAJCXsKIAkJ CVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGluZ1JlZiAqKSBhcmc7Ci0JCQlO b2RlCSAgICpzdWJzY3JpcHQ7Ci0JCQlPaWQJCQlzdWJzY3JpcHRfdHlwZTsKKwkJCWludAkJCW5z dWJzY3JpcHRzOwogCiAJCQkvKgotCQkJICogSGFuZGxlIHNpbmdsZS1zdWJzY3JpcHQganNvbmIg YWNjZXNzIHdpdGggbm8gc2xpY2UgYW5kIG5vCi0JCQkgKiBhc3NpZ25tZW50LiAgVGV4dCBzdWJz Y3JpcHRzIG1hcCB0byBvYmplY3QtZmllbGQgZXh0cmFjdGlvbjsKLQkJCSAqIGludDQgc3Vic2Ny aXB0cyBtYXAgdG8gYXJyYXktZWxlbWVudCBleHRyYWN0aW9uLgorCQkJICogSGFuZGxlIGpzb25i IHN1YnNjcmlwdCBhY2Nlc3Mgd2l0aCBubyBzbGljZSBhbmQgbm8gYXNzaWdubWVudC4KKwkJCSAq IFNpbmdsZSBzdWJzY3JpcHRzIG1hcCB0byBvYmplY3QtZmllbGQgb3IgYXJyYXktZWxlbWVudAor CQkJICogZXh0cmFjdGlvbjsgbXVsdGktc3Vic2NyaXB0IGNoYWlucyBsb3dlciB0byB0aGUgZXh0 cmFjdC1wYXRoCisJCQkgKiBmYW1pbHkuCiAJCQkgKi8KIAkJCWlmIChzYnNyZWYtPnJlZmNvbnRh aW5lcnR5cGUgIT0gSlNPTkJPSUQpCiAJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7Ci0JCQlp ZiAobGlzdF9sZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpICE9IDEpCi0JCQkJUEdfUkVU VVJOX1BPSU5URVIoTlVMTCk7CiAJCQlpZiAoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgIT0gTklM KQogCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwogCQkJaWYgKHNic3JlZi0+cmVmYXNzZ25l eHByICE9IE5VTEwpCiAJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CiAKLQkJCXN1YnNjcmlw dCA9IChOb2RlICopIGxpbml0aWFsKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKLQkJCXN1YnNj cmlwdF90eXBlID0gZXhwclR5cGUoc3Vic2NyaXB0KTsKKwkJCW5zdWJzY3JpcHRzID0gbGlzdF9s ZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpOwogCi0JCQlpZiAoc3Vic2NyaXB0X3R5cGUg PT0gVEVYVE9JRCkKKwkJCWlmIChuc3Vic2NyaXB0cyA9PSAxKQogCQkJewotCQkJCWlubmVyX2Z1 bmNpZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEOwotCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2Uy KHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQkvKgorCQkJCSAqIFNpbmdsZSBzdWJz Y3JpcHQ6IHRleHQgbWFwcyB0byBvYmplY3QtZmllbGQsIGludDQgbWFwcyB0bworCQkJCSAqIGFy cmF5LWVsZW1lbnQuCisJCQkJICovCisJCQkJTm9kZQkgICAqc3Vic2NyaXB0OworCQkJCU9pZAkJ CXN1YnNjcmlwdF90eXBlOworCisJCQkJc3Vic2NyaXB0ID0gKE5vZGUgKikgbGluaXRpYWwoc2Jz cmVmLT5yZWZ1cHBlcmluZGV4cHIpOworCQkJCXN1YnNjcmlwdF90eXBlID0gZXhwclR5cGUoc3Vi c2NyaXB0KTsKKworCQkJCWlmIChzdWJzY3JpcHRfdHlwZSA9PSBURVhUT0lEKQorCQkJCXsKKwkJ CQkJaW5uZXJfZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTEQ7CisJCQkJCWlubmVyX2FyZ3Mg PSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQl9CisJCQkJZWxz ZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCQl7CisJCQkJCWlubmVyX2Z1bmNp ZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVDsKKwkJCQkJaW5uZXJfYXJncyA9IGxpc3RfbWFrZTIo c2JzcmVmLT5yZWZleHByLCBzdWJzY3JpcHQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCVBHX1JF VFVSTl9QT0lOVEVSKE5VTEwpOwogCQkJfQotCQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0g SU5UNE9JRCkKKwkJCWVsc2UgaWYgKG5zdWJzY3JpcHRzID49IDIpCiAJCQl7Ci0JCQkJaW5uZXJf ZnVuY2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UOwotCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21h a2UyKHNic3JlZi0+cmVmZXhwciwgc3Vic2NyaXB0KTsKKwkJCQkvKgorCQkJCSAqIE11bHRpLXN1 YnNjcmlwdCBjaGFpbjogYnVpbGQgYSB0ZXh0W10gcGF0aCBhbmQgbG93ZXIgdG8KKwkJCQkgKiB0 aGUgZXh0cmFjdC1wYXRoIGZhbWlseS4gIEVhY2ggc3Vic2NyaXB0IG11c3QgYmUgdGV4dCBvcgor CQkJCSAqIGEgY29uc3RhbnQgaW50NDsgbm9uLWNvbnN0YW50IGludGVnZXIgc3Vic2NyaXB0cyBj YXVzZQorCQkJCSAqIHRoZSBlbnRpcmUgY2hhaW4gdG8gYmUgbGVmdCB1bm9wdGltaXplZC4KKwkJ CQkgKi8KKwkJCQlMaXN0CSAgICpwYXRoX2VsZW1zID0gTklMOworCQkJCUxpc3RDZWxsICAgKmxj OworCQkJCUFycmF5RXhwciAgKmFleHByOworCisJCQkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZ1 cHBlcmluZGV4cHIpCisJCQkJeworCQkJCQlOb2RlCSAgICpzdWJzY3JpcHQgPSAoTm9kZSAqKSBs Zmlyc3QobGMpOworCQkJCQlPaWQJCQlzdWJzY3JpcHRfdHlwZSA9IGV4cHJUeXBlKHN1YnNjcmlw dCk7CisKKwkJCQkJaWYgKHN1YnNjcmlwdF90eXBlID09IFRFWFRPSUQpCisJCQkJCXsKKwkJCQkJ CXBhdGhfZWxlbXMgPSBsYXBwZW5kKHBhdGhfZWxlbXMsIHN1YnNjcmlwdCk7CisJCQkJCX0KKwkJ CQkJZWxzZSBpZiAoc3Vic2NyaXB0X3R5cGUgPT0gSU5UNE9JRCkKKwkJCQkJeworCQkJCQkJQ29u c3QJICAgKmNvbjsKKworCQkJCQkJLyoKKwkJCQkJCSAqIE9ubHkgY29uc3RhbnQgaW50ZWdlciBz dWJzY3JpcHRzIGNhbiBiZSBzYWZlbHkKKwkJCQkJCSAqIGNvbnZlcnRlZCB0byB0ZXh0IGF0IHBs YW4gdGltZS4gIE5vbi1jb25zdGFudAorCQkJCQkJICogb25lcyB3b3VsZCByZXF1aXJlIGEgcnVu dGltZSBDb2VyY2VWaWFJTyBub2RlOworCQkJCQkJICogZGVjbGluZSB0aGUgcmV3cml0ZSBmb3Ig dGhlIGVudGlyZSBjaGFpbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFJc0Eoc3Vic2NyaXB0LCBD b25zdCkpCisJCQkJCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJCQkJCWNvbiA9IChD b25zdCAqKSBzdWJzY3JpcHQ7CisKKwkJCQkJCWlmIChjb24tPmNvbnN0aXNudWxsKQorCQkJCQkJ eworCQkJCQkJCXBhdGhfZWxlbXMgPSBsYXBwZW5kKHBhdGhfZWxlbXMsCisJCQkJCQkJCQkJCQkg bWFrZU51bGxDb25zdChURVhUT0lELAorCQkJCQkJCQkJCQkJCQkJICAgLTEsCisJCQkJCQkJCQkJ CQkJCQkgICBJbnZhbGlkT2lkKSk7CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJ CQkJY2hhcgkgICAqc3RyOworCisJCQkJCQkJc3RyID0gRGF0dW1HZXRDU3RyaW5nKAorCQkJCQkJ CQlEaXJlY3RGdW5jdGlvbkNhbGwxKGludDRvdXQsCisJCQkJCQkJCQkJCQkJY29uLT5jb25zdHZh bHVlKSk7CisJCQkJCQkJcGF0aF9lbGVtcyA9IGxhcHBlbmQocGF0aF9lbGVtcywKKwkJCQkJCQkJ bWFrZUNvbnN0KFRFWFRPSUQsIC0xLCBJbnZhbGlkT2lkLCAtMSwKKwkJCQkJCQkJCQkgIENTdHJp bmdHZXRUZXh0RGF0dW0oc3RyKSwKKwkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSkpOworCQkJCQkJ fQorCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOworCQkJ CX0KKworCQkJCWFleHByID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCQlhZXhwci0+YXJyYXlf dHlwZWlkID0gVEVYVEFSUkFZT0lEOworCQkJCWFleHByLT5hcnJheV9jb2xsaWQgPSBJbnZhbGlk T2lkOworCQkJCWFleHByLT5lbGVtZW50X3R5cGVpZCA9IFRFWFRPSUQ7CisJCQkJYWV4cHItPmVs ZW1lbnRzID0gcGF0aF9lbGVtczsKKwkJCQlhZXhwci0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQkJ YWV4cHItPmxpc3Rfc3RhcnQgPSAtMTsKKwkJCQlhZXhwci0+bGlzdF9lbmQgPSAtMTsKKwkJCQlh ZXhwci0+bG9jYXRpb24gPSAtMTsKKworCQkJCWlubmVyX2Z1bmNpZCA9IEZfSlNPTkJfRVhUUkFD VF9QQVRIOworCQkJCWlubmVyX2FyZ3MgPSBsaXN0X21ha2UyKHNic3JlZi0+cmVmZXhwciwgYWV4 cHIpOwogCQkJfQogCQkJZWxzZQogCQkJCVBHX1JFVFVSTl9QT0lOVEVSKE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCBiOTZjMDk1NTI1Yy4uMzE5ODQ0MjM1MmMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC0xNDc0LDYgKzE0NzQsMTYzIEBAIFNF TEVDVCBqc29uYl9leHRyYWN0X3BhdGhfZmxvYXQ0KCd7ImEiOjMuMTR9Jzo6anNvbmIsIEFSUkFZ WydhJ10pOwogICAgICAgICAgICAgICAgICAgICAgIDMuMTQKICgxIHJvdykKIAorLS0gT3B0aW1p emVkIHR5cGVkIGV4dHJhY3Rpb246IG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKKy0tIFRoZSBwbGFu bmVyIGxvd2VycyBqWydhJ11bJ2InXSwgalsnYSddWzBdLCBldGMuIHRvIHRoZSBleHRyYWN0LXBh dGggdHlwZWQKKy0tIGV4dHJhY3RvciBmYW1pbHksIHJldXNpbmcgdGhlIHNhbWUgZnVuY3Rpb25z IGFzIHRoZSAjPiBvcGVyYXRvciBwYXRoLgorLS0gU2VjdGlvbiBNMTogcGxhbm5lciByZXdyaXRl IHZlcmlmaWNhdGlvbiBmb3IgbXVsdGktc3Vic2NyaXB0IGNoYWlucworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10pOjppbnQ0IEZS T00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVt cC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9pbnQ0KHRlc3RfanNv biwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6OnRleHRdKQorICAgRmlsdGVyOiAodGVzdF9q c29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNSddWzBdKTo6aW50NCBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1w LnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9wYXRoX2ludDQodGVzdF9qc29u LCBBUlJBWVsnZmllbGQ1Jzo6dGV4dCwgJzAnOjp0ZXh0XSkKKyAgIEZpbHRlcjogKHRlc3RfanNv bmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9hcnJbNl1bJ2snXSk6OmludDQgRlJPTSB0ZXN0 X2pzb25iX2FycjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYl9hcnIKKyAgIE91dHB1dDoganNvbmJfZXh0cmFjdF9w YXRoX2ludDQodGVzdF9hcnIsIEFSUkFZWyc2Jzo6dGV4dCwgJ2snOjp0ZXh0XSkKKygyIHJvd3Mp CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxk NiddWydmMSddKTo6ZmxvYXQ4IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2Jq ZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9l eHRyYWN0X3BhdGhfZmxvYXQ4KHRlc3RfanNvbiwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6 OnRleHRdKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4 dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0 X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6bnVtZXJpYyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNv bl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAg T3V0cHV0OiBqc29uYl9leHRyYWN0X3BhdGhfbnVtZXJpYyh0ZXN0X2pzb24sIEFSUkFZWydmaWVs ZDYnOjp0ZXh0LCAnZjEnOjp0ZXh0XSkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBl ID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCistLSBWZXJpZnkgc2luZ2xlIHN1YnNjcmlw dCBzdGlsbCB1c2VzIHRoZSBleGlzdGluZyBvYmplY3QtZmllbGQgZmFtaWx5LCBub3QgZXh0cmFj dC1wYXRoCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydm aWVsZDQnXSk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3Qn OworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRw dXQ6IGpzb25iX29iamVjdF9maWVsZF9pbnQ0KHRlc3RfanNvbiwgJ2ZpZWxkNCc6OnRleHQpCisg ICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93 cykKKworLS0gU2VjdGlvbiBNMWI6IG11bHRpLXN1YnNjcmlwdCBpbnQyL2Zsb2F0NAorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfanNvblsnZmllbGQ2J11bJ2YxJ10p OjppbnQyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2V4dHJhY3RfcGF0aF9pbnQy KHRlc3RfanNvbiwgQVJSQVlbJ2ZpZWxkNic6OnRleHQsICdmMSc6OnRleHRdKQorICAgRmlsdGVy OiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK1NF TEVDVCAoKCd7ImEiOnsiYiI6N319Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDI7CisgaW50MiAK Ky0tLS0tLQorICAgIDcKKygxIHJvdykKKworLS0gU2VjdGlvbiBNMjogZXhlY3V0aW9uIHRocm91 Z2ggbXVsdGktc3Vic2NyaXB0IHJld3JpdGUKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompz b25iKVsnYSddWydiJ10pOjppbnQ0OworIGludDQgCistLS0tLS0KKyAgIDQyCisoMSByb3cpCisK K1NFTEVDVCAoKCd7ImEiOlsxMCwyMCwzMF19Jzo6anNvbmIpWydhJ11bMV0pOjppbnQ0OworIGlu dDQgCistLS0tLS0KKyAgIDIwCisoMSByb3cpCisKK1NFTEVDVCAoKCdbeyJhIjp0cnVlfV0nOjpq c29uYilbMF1bJ2EnXSk6OmJvb2w7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUICgoJ1tbMSwyXSxbMyw0XV0nOjpqc29uYilbMF1bMV0pOjppbnQ0OworIGludDQgCistLS0t LS0KKyAgICAyCisoMSByb3cpCisKK1NFTEVDVCAoKCd7ImEiOlt7ImIiOjMuMTR9XX0nOjpqc29u YilbJ2EnXVswXVsnYiddKTo6ZmxvYXQ4OworIGZsb2F0OCAKKy0tLS0tLS0tCisgICAzLjE0Ciso MSByb3cpCisKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjpu dW1lcmljOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDQyCisoMSByb3cpCisKK1NFTEVD VCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ4OworIGludDggCist LS0tLS0KKyAgIDQyCisoMSByb3cpCisKKy0tIG5lZ2F0aXZlIGluZGV4IGluIG5lc3RlZCBjaGFp bgorU0VMRUNUICgoJ3siYSI6WzEwLDIwLDMwXX0nOjpqc29uYilbJ2EnXVstMV0pOjppbnQ0Owor IGludDQgCistLS0tLS0KKyAgIDMwCisoMSByb3cpCisKKy0tIFNlY3Rpb24gTTM6IE5VTEwgc2Vt YW50aWNzIGZvciBtdWx0aS1zdWJzY3JpcHQgY2hhaW5zCitTRUxFQ1QgKCgneyJhIjoxfSc6Ompz b25iKVsneCddWydiJ10pOjppbnQ0OyAgLS0gbWlzc2luZyBpbnRlcm1lZGlhdGUga2V5CisgaW50 NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6eyJjIjoxfX0nOjpq c29uYilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIG1pc3NpbmcgZmluYWwga2V5CisgaW50NCAKKy0t LS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6eyJiIjpudWxsfX0nOjpqc29u YilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIEpTT04gbnVsbCBsZWFmCisgaW50NCAKKy0tLS0tLQor ICAgICAKKygxIHJvdykKKworU0VMRUNUICgoJ3siYSI6WzFdfSc6Ompzb25iKVsnYSddWzVdKTo6 aW50NDsgIC0tIG91dC1vZi1yYW5nZSBuZXN0ZWQgaW5kZXgKKyBpbnQ0IAorLS0tLS0tCisgICAg IAorKDEgcm93KQorCistLSBTZWN0aW9uIE00OiB0eXBlLW1pc21hdGNoIGVycm9ycyBmb3IgbXVs dGktc3Vic2NyaXB0IGNoYWlucworU0VMRUNUICgoJ3siYSI6eyJiIjoiaGVsbG8ifX0nOjpqc29u YilbJ2EnXVsnYiddKTo6aW50NDsgIC0tIHN0cmluZyB0byBpbnQ0CitFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGludGVnZXIKK1NFTEVDVCAoKCd7ImEiOnsiYiI6WzEs Ml19fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ0OyAgLS0gY29udGFpbmVyIHRvIGludDQKK0VS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBpbnRlZ2VyCistLSBTZWN0aW9u IE01OiBub24tY29uc3RhbnQgaW50NCBzdWJzY3JpcHQgZGVjbGluZXMgcmV3cml0ZQorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICgoJ3siYSI6W1sxMCwyMF0sWzMwLDQwXV19 Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsMSkgQVMg aTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rp b24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcyBpCisgICBPdXRwdXQ6ICgoJ3si YSI6IFtbMTAsIDIwXSwgWzMwLCA0MF1dfSc6Ompzb25iKVsnYSc6OnRleHRdW2ldWzBdKTo6aW50 ZWdlcgorICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDAsIDEpCisoMyByb3dzKQor CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ3NjYWxhcic7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwK aW5kZXggMTExOTFmZDBmODIuLmVkNzBjNGQyOWVlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBA IC00MTksNiArNDE5LDQ5IEBAIFNFTEVDVCBqc29uYl9leHRyYWN0X3BhdGhfaW50MigneyJhIjp7 ImIiOjd9fSc6Ompzb25iLCBBUlJBWVsnYScsJ2InXSk7CiBTRUxFQ1QganNvbmJfZXh0cmFjdF9w YXRoX2Zsb2F0NCgneyJhIjozLjE0fSc6Ompzb25iLCBBUlJBWVsnYSddKTsKIAogCistLSBPcHRp bWl6ZWQgdHlwZWQgZXh0cmFjdGlvbjogbXVsdGktc3Vic2NyaXB0IGNoYWlucworLS0gVGhlIHBs YW5uZXIgbG93ZXJzIGpbJ2EnXVsnYiddLCBqWydhJ11bMF0sIGV0Yy4gdG8gdGhlIGV4dHJhY3Qt cGF0aCB0eXBlZAorLS0gZXh0cmFjdG9yIGZhbWlseSwgcmV1c2luZyB0aGUgc2FtZSBmdW5jdGlv bnMgYXMgdGhlICM+IG9wZXJhdG9yIHBhdGguCisKKy0tIFNlY3Rpb24gTTE6IHBsYW5uZXIgcmV3 cml0ZSB2ZXJpZmljYXRpb24gZm9yIG11bHRpLXN1YnNjcmlwdCBjaGFpbnMKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50 NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDUnXVswXSk6OmludDQg RlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHRlc3RfYXJyWzZdWydrJ10pOjppbnQ0IEZST00gdGVz dF9qc29uYl9hcnI7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9q c29uWydmaWVsZDYnXVsnZjEnXSk6OmZsb2F0OCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVz dF9qc29uWydmaWVsZDYnXVsnZjEnXSk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworCistLSBWZXJpZnkgc2luZ2xlIHN1YnNjcmlwdCBzdGlsbCB1 c2VzIHRoZSBleGlzdGluZyBvYmplY3QtZmllbGQgZmFtaWx5LCBub3QgZXh0cmFjdC1wYXRoCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodGVzdF9qc29uWydmaWVsZDQnXSk6 OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCisKKy0t IFNlY3Rpb24gTTFiOiBtdWx0aS1zdWJzY3JpcHQgaW50Mi9mbG9hdDQKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUICh0ZXN0X2pzb25bJ2ZpZWxkNiddWydmMSddKTo6aW50MiBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKCgneyJh Ijp7ImIiOjd9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQyOworLS0gU2VjdGlvbiBNMjogZXhl Y3V0aW9uIHRocm91Z2ggbXVsdGktc3Vic2NyaXB0IHJld3JpdGUKK1NFTEVDVCAoKCd7ImEiOnsi YiI6NDJ9fSc6Ompzb25iKVsnYSddWydiJ10pOjppbnQ0OworU0VMRUNUICgoJ3siYSI6WzEwLDIw LDMwXX0nOjpqc29uYilbJ2EnXVsxXSk6OmludDQ7CitTRUxFQ1QgKCgnW3siYSI6dHJ1ZX1dJzo6 anNvbmIpWzBdWydhJ10pOjpib29sOworU0VMRUNUICgoJ1tbMSwyXSxbMyw0XV0nOjpqc29uYilb MF1bMV0pOjppbnQ0OworU0VMRUNUICgoJ3siYSI6W3siYiI6My4xNH1dfSc6Ompzb25iKVsnYSdd WzBdWydiJ10pOjpmbG9hdDg7CitTRUxFQ1QgKCgneyJhIjp7ImIiOjQyfX0nOjpqc29uYilbJ2En XVsnYiddKTo6bnVtZXJpYzsKK1NFTEVDVCAoKCd7ImEiOnsiYiI6NDJ9fSc6Ompzb25iKVsnYSdd WydiJ10pOjppbnQ4OworLS0gbmVnYXRpdmUgaW5kZXggaW4gbmVzdGVkIGNoYWluCitTRUxFQ1Qg KCgneyJhIjpbMTAsMjAsMzBdfSc6Ompzb25iKVsnYSddWy0xXSk6OmludDQ7CisKKy0tIFNlY3Rp b24gTTM6IE5VTEwgc2VtYW50aWNzIGZvciBtdWx0aS1zdWJzY3JpcHQgY2hhaW5zCitTRUxFQ1Qg KCgneyJhIjoxfSc6Ompzb25iKVsneCddWydiJ10pOjppbnQ0OyAgLS0gbWlzc2luZyBpbnRlcm1l ZGlhdGUga2V5CitTRUxFQ1QgKCgneyJhIjp7ImMiOjF9fSc6Ompzb25iKVsnYSddWydiJ10pOjpp bnQ0OyAgLS0gbWlzc2luZyBmaW5hbCBrZXkKK1NFTEVDVCAoKCd7ImEiOnsiYiI6bnVsbH19Jzo6 anNvbmIpWydhJ11bJ2InXSk6OmludDQ7ICAtLSBKU09OIG51bGwgbGVhZgorU0VMRUNUICgoJ3si YSI6WzFdfSc6Ompzb25iKVsnYSddWzVdKTo6aW50NDsgIC0tIG91dC1vZi1yYW5nZSBuZXN0ZWQg aW5kZXgKKworLS0gU2VjdGlvbiBNNDogdHlwZS1taXNtYXRjaCBlcnJvcnMgZm9yIG11bHRpLXN1 YnNjcmlwdCBjaGFpbnMKK1NFTEVDVCAoKCd7ImEiOnsiYiI6ImhlbGxvIn19Jzo6anNvbmIpWydh J11bJ2InXSk6OmludDQ7ICAtLSBzdHJpbmcgdG8gaW50NAorU0VMRUNUICgoJ3siYSI6eyJiIjpb MSwyXX19Jzo6anNvbmIpWydhJ11bJ2InXSk6OmludDQ7ICAtLSBjb250YWluZXIgdG8gaW50NAor CistLSBTZWN0aW9uIE01OiBub24tY29uc3RhbnQgaW50NCBzdWJzY3JpcHQgZGVjbGluZXMgcmV3 cml0ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICgoJ3siYSI6W1sxMCwy MF0sWzMwLDQwXV19Jzo6anNvbmIpWydhJ11baV1bMF0pOjppbnQ0IEZST00gZ2VuZXJhdGVfc2Vy aWVzKDAsMSkgQVMgaTsKKwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOwogU0VMRUNUIHRlc3RfanNvbiAtPiAneCcgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVzdF9qc29u IC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7Ci0tIAoy LjUyLjAKCg== --0000000000006dce3d06506a04a1--