<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>176285</bug_id>
          
          <creation_ts>2017-09-02 17:24:48 -0700</creation_ts>
          <short_desc>WSL should support the bool type</short_desc>
          <delta_ts>2018-10-13 17:07:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344888</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-02 17:24:48 -0700</bug_when>
    <thetext>It should be declared as a native type. Then there should be a BoolLiteral that works more-or-less like the current UintLiteral.

This unlocks the ability to add control flow constructs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344892</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-02 18:01:25 -0700</bug_when>
    <thetext>Also, it seems like it would be best to remove the notion that operator! is a customizable operator. Instead, go straight to explicit operator bool.

In this world, operator! is built-in.

operator! and all of the conditional contexts (&quot;if (_)&quot;, &quot;while (_)&quot;, and &quot;for (;_;)&quot;) are parsed so that they first emit a call to &quot;operator bool(T)&quot;. Essentially we can turn this:

    !e

into this:

    !(operator bool(e))

Where you can declare an operator bool for whatever types you like.  We could declare a default one that looks like this:

operator bool&lt;T&gt;(T value)
{
    T defaultValue;
    return value != defaultValue;
}

Note that a!=b is parsed as !(a==b).  Currently override resolution is order-based: we parse the signatures in order and we pick the first one that matches.  We could say that the standard library has a suffix portion that is parsed after the program, which contains the following:

operator bool&lt;T&gt;(T value)
{
    T defaultValue;
    return value != defaultValue;
}
native bool operator==&lt;T&gt;(T a, T b); // Does bitwise equality

By making this a suffix, it means that the programmer can always rely on these as defaults but can easily override them for their type.

So, in this world, this totally works.

struct MyPoint { int x; int y; }
void foo()
{
    MyPoint p;
    ...
    if (p)
        do stuff if p is not the origin
}

Does this seem useful, or overkill?  Do you want to try to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345026</commentid>
    <comment_count>2</comment_count>
      <attachid>319794</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 12:20:06 -0700</bug_when>
    <thetext>Created attachment 319794
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345027</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 12:22:53 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #1)
&gt; 
&gt; operator bool&lt;T&gt;(T value)
&gt; {
&gt;     T defaultValue;
&gt;     return value != defaultValue;
&gt; }

You aren&apos;t placing any type restrictions on T. Does this mean that we will require every type in the whole language to be default-constructible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345029</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-03 12:25:37 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #3)
&gt; (In reply to Filip Pizlo from comment #1)
&gt; &gt; 
&gt; &gt; operator bool&lt;T&gt;(T value)
&gt; &gt; {
&gt; &gt;     T defaultValue;
&gt; &gt;     return value != defaultValue;
&gt; &gt; }
&gt; 
&gt; You aren&apos;t placing any type restrictions on T. Does this mean that we will
&gt; require every type in the whole language to be default-constructible?

That&apos;s already true, since we don&apos;t have constructors or destructors or any member functions.  Structs have a default value (just give all fields the default value).  Arrays have a default value (just give all array elements the default value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345033</commentid>
    <comment_count>5</comment_count>
      <attachid>319797</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 13:00:57 -0700</bug_when>
    <thetext>Created attachment 319797
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345035</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 13:06:56 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; (In reply to Myles C. Maxfield from comment #3)
&gt; &gt; (In reply to Filip Pizlo from comment #1)
&gt; &gt; &gt; 
&gt; &gt; &gt; operator bool&lt;T&gt;(T value)
&gt; &gt; &gt; {
&gt; &gt; &gt;     T defaultValue;
&gt; &gt; &gt;     return value != defaultValue;
&gt; &gt; &gt; }
&gt; &gt; 
&gt; &gt; You aren&apos;t placing any type restrictions on T. Does this mean that we will
&gt; &gt; require every type in the whole language to be default-constructible?
&gt; 
&gt; That&apos;s already true, since we don&apos;t have constructors or destructors or any
&gt; member functions.  Structs have a default value (just give all fields the
&gt; default value).  Arrays have a default value (just give all array elements
&gt; the default value).

ArrayRefs will be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345041</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-03 13:27:55 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; (In reply to Myles C. Maxfield from comment #3)
&gt; &gt; &gt; (In reply to Filip Pizlo from comment #1)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; operator bool&lt;T&gt;(T value)
&gt; &gt; &gt; &gt; {
&gt; &gt; &gt; &gt;     T defaultValue;
&gt; &gt; &gt; &gt;     return value != defaultValue;
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; 
&gt; &gt; &gt; You aren&apos;t placing any type restrictions on T. Does this mean that we will
&gt; &gt; &gt; require every type in the whole language to be default-constructible?
&gt; &gt; 
&gt; &gt; That&apos;s already true, since we don&apos;t have constructors or destructors or any
&gt; &gt; member functions.  Structs have a default value (just give all fields the
&gt; &gt; default value).  Arrays have a default value (just give all array elements
&gt; &gt; the default value).
&gt; 
&gt; ArrayRefs will be null?

Word. Zero length and zero base pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345168</commentid>
    <comment_count>8</comment_count>
      <attachid>319842</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 23:16:52 -0700</bug_when>
    <thetext>Created attachment 319842
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345233</commentid>
    <comment_count>9</comment_count>
      <attachid>319858</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-04 12:17:01 -0700</bug_when>
    <thetext>Created attachment 319858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345238</commentid>
    <comment_count>10</comment_count>
      <attachid>319858</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-04 13:01:26 -0700</bug_when>
    <thetext>Comment on attachment 319858
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=319858&amp;action=review

r=me. 

Would be good to clean up the way the parser and leader interact. It’s easier in the long run if the lexer doesn’t know too much about keywords. Please also fix the WTypeError issue and the origin issue. The rest (like naming) is optional.

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:229
&gt; +            throw new Error(&quot;Trying to negate something that isn&apos;t a bool: &quot; + node.value);

This should be a WTypeError since this case can be reached with bad input. (The Error above is fine because that will only happen with a bug in our code.)

&gt; Tools/WebGPUShadingLanguageRI/Intrinsics.js:209
&gt; +            throw new WTypeError(thing.toString(), &quot;Unrecognized intrinsic: &quot; + thing);

The first arg should be the origin string since that’s what we do everywhere else. Can we do that here?

&gt; Tools/WebGPUShadingLanguageRI/Lexer.js:106
&gt; +            if (isAddressSpace(RegExp.lastMatch))

Why can’t this get handled as a keyword?  If it’s not a keyword, why are address spaces still in the keyword regezp?

&gt; Tools/WebGPUShadingLanguageRI/Lexer.js:108
&gt; +            if ([&quot;true&quot;, &quot;false&quot;].includes(RegExp.lastMatch))

Ditto. 

Compilers usually recognize all such things as keywords. It’s up to the parser to decide how to categorize keywords.

&gt; Tools/WebGPUShadingLanguageRI/LogicalNegationExpression.js:27
&gt; +class LogicalNegationExpression extends Expression {

This is usually called LogicalNot

&gt; Tools/WebGPUShadingLanguageRI/Parse.js:188
&gt; +        if (token = tryConsumeKind(&quot;boolLiteral&quot;))

You could have said tryConsume(“true”, “false”)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345248</commentid>
    <comment_count>11</comment_count>
      <attachid>319858</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-04 13:44:10 -0700</bug_when>
    <thetext>Comment on attachment 319858
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=319858&amp;action=review

&gt; Tools/WebGPUShadingLanguageRI/Parse.js:629
&gt; +        result.name = &quot;operator &quot; + castType;

Oh now I get why TypeDef resolution doesn&apos;t work!  Ha!

Yeah, the way to get around this (which you can do in a separate patch) is:
- Make these guys always be called &quot;operator cast&quot;.  That is always the name.
- Thread returnType through resolveOverloadImpl and everyone who calls it.
    - This must be null if calling anything other than &quot;operator cast&quot;.
    - When calling &quot;operator cast&quot;, Checker knows the desired return type, and so it will pass that as the returnType.
    - resolveOverloadImpl will attempt unification on the returnType if it is given one.  It will do this the same way it does for argument types.

You may want a subclass of CallExpression for these casts, since those call expressions know the desired return type syntactically.  Visitors and the Rewriter will have to visit and rewrite that desired return type.

If you do that, then TypeDefs will magically resolve themselves because the TypeDef resolver will simply find the TypeDef in the returnType and replace it will something else.

&gt; Tools/WebGPUShadingLanguageRI/StandardLibrary.js:56
&gt; +native operator int(int);
&gt; +native operator uint(uint);
&gt; +native operator bool(bool);

Why are there self casts?

Shouldn&apos;t they be provided by the language?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345639</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-05 14:12:22 -0700</bug_when>
    <thetext>Committed r221634: &lt;http://trac.webkit.org/changeset/221634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346046</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-06 12:34:45 -0700</bug_when>
    <thetext>Committed r221690: &lt;http://trac.webkit.org/changeset/221690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353570</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:39:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468958</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 17:07:45 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/159</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319794</attachid>
            <date>2017-09-03 12:20:06 -0700</date>
            <delta_ts>2017-09-03 13:00:56 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176285-20170903122005.patch</filename>
            <type>text/plain</type>
            <size>18921</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQ4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWEzNjAwMDUwY2M4YTcwMmY3ODA1NzFmMzQ1N2MyNWYy
MWVhYjc3Yi4uOTNjZGRhMDg0Y2RlOTg5Y2FjZjRkODlkM2FmNTYwZDhjOWE3OTMwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDE3LTA5LTAzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHRoZSBib29sIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQm9vbExpdGVyYWwuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Z1bmNEZWYuanMuCisgICAgICAgIChCb29sTGl0ZXJhbCk6CisgICAgICAgIChCb29s
TGl0ZXJhbC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKEJvb2xMaXRlcmFsLnByb3Rv
dHlwZS5nZXQgaXNDb25zdGV4cHIpOgorICAgICAgICAoQm9vbExpdGVyYWwucHJvdG90eXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgorICAg
ICAgICAoRnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgaXNDYXN0KToKKyAgICAg
ICAgKEZ1bmMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jRGVmLmpzOgorICAgICAgICAoRnVuY0RlZik6CisgICAgICAgIChGdW5jRGVm
LnByb3RvdHlwZS5nZXQgYm9keSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TGV4ZXIuanM6CisgICAgICAgIChMZXhlci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChMZXhl
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9naWNhbE5lZ2F0aW9uRXhw
cmVzc2lvbi5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y0RlZi5qcy4KKyAgICAgICAgKExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAo
TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUuZ2V0IG9wZXJhbmQpOgorICAgICAg
ICAoTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRp
dmVGdW5jKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAg
ICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAg
ICAgKHBhcnNlUG9zc2libGVSZWxhdGlvbmFsRXF1YWxpdHkpOgorICAgICAgICAocGFyc2VGdW5j
TmFtZSk6CisgICAgICAgIChwYXJzZU9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChw
YXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChwYXJzZUdlbmVyaWNGdW5j
RGVmVmFsdWVzKToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgorICAgICAgICAocGFyc2VQcm90
b2NvbEZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZU5h
dGl2ZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVHlwZURlZlJlc29sdmVyLmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlw
ZS52aXNpdEZ1bmNEZWYpOgorCiAyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIENhbnZhc1Byb3h5CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Jvb2xMaXRlcmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MWFkOTgwOTgxNDg0M2U4ZmE1
YjFkOGFmY2NjN2Y3MTA1OGNiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNz
IEJvb2xMaXRlcmFsIGV4dGVuZHMgRXhwcmVzc2lvbiB7CisgICAgY29uc3RydWN0b3Iob3JpZ2lu
LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgIHRoaXMuX3Zh
bHVlID0gdmFsdWU7CisgICAgfQorICAgIAorICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMu
X3ZhbHVlOyB9CisgICAgZ2V0IGlzQ29uc3RleHByKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAor
ICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiIiArIHRoaXMuX3ZhbHVlOwor
ICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Yy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNDQ1ZGVi
ZTg0YzJmODBiMTljNmFjNTY3OTJhYmEzNDZlYjljNTA3ZS4uMDU5NTNjOTYxOTljZTcxNDdhNDM2
YTc2YTk0NDliYjg0MDUzNmFjZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpz
CkBAIC0yNSw3ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5kcyBO
b2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJh
bWV0ZXJzLCBwYXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCkKICAgICB7CiAgICAgICAg
IHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewogICAgICAgICB0aGlzLl9yZXR1cm5UeXBlID0g
cmV0dXJuVHlwZTsKICAgICAgICAgdGhpcy5fdHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVy
czsKICAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIHRoaXMu
X2lzQ2FzdCA9IGlzQ2FzdDsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJu
IHRoaXMuX29yaWdpbjsgfQpAQCAtNDEsMTIgKzQyLDEzIEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBO
b2RlIHsKICAgICBnZXQgdHlwZVBhcmFtZXRlcnMoKSB7IHJldHVybiB0aGlzLl90eXBlUGFyYW1l
dGVyczsgfQogICAgIGdldCBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1ldGVyczsg
fQogICAgIGdldCBwYXJhbWV0ZXJUeXBlcygpIHsgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5tYXAo
cGFyYW1ldGVyID0+IHBhcmFtZXRlci50eXBlKTsgfQorICAgIGdldCBpc0Nhc3QoKSB7IHJldHVy
biB0aGlzLl9pc0Nhc3Q7IH0KICAgICAKICAgICBnZXQga2luZCgpIHsgcmV0dXJuIEZ1bmM7IH0K
ICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5U
eXBlICsgIiAiICsgdGhpcy5uYW1lICsgIjwiICsgdGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIg
KyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CisgICAgICAgIHJldHVybiAodGhpcy5pc0Nhc3QoKSA/
IHRoaXMucmV0dXJuVHlwZSArICIgIiA6ICIiKSArIHRoaXMubmFtZSArICI8IiArIHRoaXMudHlw
ZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMKaW5kZXggOGJjYTQwMGQ3Nzc0
M2M0YWJmZTZhNjhlMGMwZDA4ZGFhNjU4NjllZC4uNDdiMzA4ZGYzYjY1NTNlYTUzMDEwOWJkMmMy
MzMxZjg0YmZkZDdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RnVuY0RlZi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpz
CkBAIC0yNSwxMSArMjUsMTMgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgRnVuY0RlZiBleHRl
bmRzIEZ1bmMgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlw
ZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGJvZHkpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBu
YW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgYm9keSwgaXNDYXN0
KQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFy
YW1ldGVycywgcGFyYW1ldGVycyk7Ci0gICAgICAgIHRoaXMuYm9keSA9IGJvZHk7CisgICAgICAg
IHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRl
cnMsIGlzQ2FzdCk7CisgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5OwogICAgIH0KKworICAgIGdl
dCBib2R5KCkgeyByZXR1cm4gdGhpcy5fYm9keTsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCmluZGV4IDI3NjMwNzBkZTk2
NWRjMzU0NGY5OGE0YzYyOTdhMGQyNDRhYTFjZTkuLjBhZmY2OTc5ZDQ1MjAyOTY1N2Q3YzRlYzM3
MWE0MDI5ZmJmYjNkOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0xleGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCkBA
IC0xMDMsNiArMTAzLDEwIEBAIGNsYXNzIExleGVyIHsKICAgICAgICAgCiAgICAgICAgIC8vIEZJ
WE1FOiBNYWtlIHRoaXMgZG8gVW5pY29kZS4KICAgICAgICAgaWYgKC9eW15cZFxXXVx3Ki8udGVz
dChyZWxldmFudFRleHQpKSB7CisgICAgICAgICAgICBpZiAoaXNBZGRyZXNzU3BhY2UoUmVnRXhw
Lmxhc3RNYXRjaCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgiYWRkcmVzcyBzcGFj
ZSIpOworICAgICAgICAgICAgaWYgKFsidHJ1ZSIsICJmYWxzZSJdLmluY2x1ZGVzKFJlZ0V4cC5s
YXN0TWF0Y2gpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQoImJvb2xMaXRlcmFsIik7
CiAgICAgICAgICAgICBpZiAoWyJzdHJ1Y3QiLCAicHJvdG9jb2wiLCAidHlwZWRlZiIsICJpZiIs
ICJlbHNlIiwgImVudW0iLCAiY29udGludWUiLCAiYnJlYWsiLCAic3dpdGNoIiwgImNhc2UiLCAi
ZGVmYXVsdCIsICJmb3IiLCAid2hpbGUiLCAiZG8iLCAicmV0dXJuIiwgInNpemVvZiIsICJjb25z
dGFudCIsICJkZXZpY2UiLCAidGhyZWFkZ3JvdXAiLCAidGhyZWFkIiwgIm9wZXJhdG9yIiwgIm51
bGwiXS5pbmNsdWRlcyhSZWdFeHAubGFzdE1hdGNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0KCJrZXl3b3JkIik7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJpZGVudGlmaWVy
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb2dpY2FsTmVn
YXRpb25FeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9naWNh
bE5lZ2F0aW9uRXhwcmVzc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzBiZTcwYjhlNzU5ZTkyNmJjZWFl
MWY0MzE3ZDQ0Y2VjMTkxNGJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5qcwpAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmlj
dCI7CisKK2NsYXNzIExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9u
IHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG9wZXJhbmQpCisgICAgeworICAgICAgICBzdXBl
cihvcmlnaW4pOworICAgICAgICB0aGlzLl9vcGVyYW5kID0gb3BlcmFuZDsKKyAgICB9CisgICAg
CisgICAgZ2V0IG9wZXJhbmQoKSB7IHJldHVybiB0aGlzLl9vcGVyYW5kOyB9CisgICAgCisgICAg
dG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIhKCIgKyB0aGlzLm9wZXJhbmQgKyAi
KSI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVu
Yy5qcwppbmRleCAzOTgxODk4MWMzOGU3ZGJiMjI2NDkzMDlkYWY3MWMwYWExMjNkNTY1Li5iODdj
ZjdhMjBiYjYzZDYwYzI0MzI3MWQyYjRlYzdiNzVlZGM5NTVlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKQEAgLTI1LDkgKzI1LDkgQEAKICJ1c2Ugc3Ry
aWN0IjsKIAogY2xhc3MgTmF0aXZlRnVuYyBleHRlbmRzIEZ1bmMgewotICAgIGNvbnN0cnVjdG9y
KG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpCisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywg
cGFyYW1ldGVycywgaXNDYXN0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBzdXBlcihvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAg
c3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cywgKTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGlzTmF0aXZlKCkgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBmNDM5ZmJmOGNlZjdmZTMw
MWI2MzRiYzM3OTg1OGVjNTZmODljZWRhLi4yNjUxMTU5N2JjZjQ2MDViZGNlYjUyZWIwZjk0YjA5
YmQ1M2EzMjU4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMTg3
LDYgKzE4NywxMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgICAgICAgICB0b2tlbiA9IGNvbnN1bWVLaW5kKCJkb3VibGVMaXRl
cmFsIik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZUxpdGVyYWwodG9rZW4sICt0b2tl
bi50ZXh0KTsKICAgICAgICAgfQorICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgi
Ym9vbExpdGVyYWwiKSkgeworICAgICAgICAgICAgdG9rZW4gPSBjb25zdW1lS2luZCgiYm9vbExp
dGVyYWwiKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQm9vbExpdGVyYWwodG9rZW4sIHRva2Vu
LnRleHQgPT0gInRydWUiKTsKKyAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogTmVlZCBzdXBw
b3J0IGZvciBmbG9hdCBsaXRlcmFscyBhbmQgcHJvYmFibHkgb3RoZXIgbGl0ZXJhbHMgdG9vLgog
ICAgICAgICBjb25zdW1lKCIoIik7CiAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZUV4cHJlc3Np
b24oKTsKQEAgLTI5NSwzMCArMjk5LDYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2lu
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gbmV3IFR5cGVEZWYob3Jp
Z2luLCBuYW1lLCB0eXBlUGFyYW1ldGVycywgdHlwZSk7CiAgICAgfQogICAgIAotICAgIGZ1bmN0
aW9uIHBhcnNlTmF0aXZlKCkKLSAgICB7Ci0gICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJu
YXRpdmUiKTsKLSAgICAgICAgbGV0IGlzVHlwZSA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgp
ID0+IHsKLSAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCJ0eXBlZGVmIikpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuICJub3JtYWwiOwotICAgICAgICAgICAgY29uc3VtZSgicHJpbWl0aXZlIik7
Ci0gICAgICAgICAgICBjb25zdW1lKCJ0eXBlZGVmIik7Ci0gICAgICAgICAgICByZXR1cm4gInBy
aW1pdGl2ZSI7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoaXNUeXBlKSB7Ci0gICAgICAgICAg
ICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICBsZXQg
cGFyYW1ldGVycyA9IHBhcnNlVHlwZVBhcmFtZXRlcnMoKTsKLSAgICAgICAgICAgIGNvbnN1bWUo
IjsiKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUudGV4
dCwgaXNUeXBlID09ICJwcmltaXRpdmUiLCBwYXJhbWV0ZXJzKTsKLSAgICAgICAgfQotICAgICAg
ICBsZXQgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwotICAgICAgICBsZXQgbmFtZSA9IHBhcnNl
RnVuY05hbWUoKTsKLSAgICAgICAgbGV0IHR5cGVQYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1l
dGVycygpOwotICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHBhcnNlUGFyYW1ldGVycygpOwotICAg
ICAgICBjb25zdW1lKCI7Iik7Ci0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzKTsKLSAgICB9Ci0g
ICAgCiAgICAgZnVuY3Rpb24gZ2VuZXJpY1BhcnNlTGVmdCh0ZXh0cywgbmV4dFBhcnNlciwgY29u
c3RydWN0b3IpCiAgICAgewogICAgICAgICBsZXQgbGVmdCA9IG5leHRQYXJzZXIoKTsKQEAgLTM5
NSw3ICszNzUsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVByZWZpeCgpCiAgICAgewog
ICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIisrIiwg
Ii0tIiwgIisiLCAiLSIsICIhIiwgIn4iKSkKKyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3Vt
ZSgiKysiLCAiLS0iLCAiKyIsICItIiwgIn4iKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgQ2Fs
bEFzc2lnbm1lbnQodG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBwYXJzZVBvc3NpYmxl
UHJlZml4KCkpOwogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJeIikpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IERlcmVmZXJlbmNlRXhwcmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJs
ZVByZWZpeCgpKTsKQEAgLTQwMyw2ICszODMsOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1h
a2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwogICAgICAgICBp
ZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpCiAgICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VB
cnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7CisgICAgICAg
IGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEiKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgTG9n
aWNhbE5lZ2F0aW9uRXhwcmVzc2lvbih0b2tlbiwgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVy
YXRvciBib29sIiwgW10sIFtwYXJzZVBvc3NpYmxlUHJlZml4KCldKSk7CiAgICAgICAgIHJldHVy
biBwYXJzZVBvc3NpYmxlU3VmZml4KCk7CiAgICAgfQogICAgIApAQCAtNDMzLDcgKzQxNSw3IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgICAgICh0b2tlbiwgbGVmdCwgcmlnaHQpID0+IHsKICAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3I9PSIsIFtdLCBb
bGVmdCwgcmlnaHRdKTsKICAgICAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiIT0iKQot
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJv
cGVyYXRvciEiLCBbXSwgW3Jlc3VsdF0pOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBu
ZXcgTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbih0b2tlbiwgcmVzdWx0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfSk7CiAgICAgfQpAQCAtNjI4LDMyICs2
MTAsNjYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgIGZ1bmN0aW9uIHBhcnNlRnVuY05hbWUoKQogICAgIHsKICAgICAgICAgaWYg
KHRyeUNvbnN1bWUoIm9wZXJhdG9yIikpIHsKLSAgICAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1
bWUoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJeIiwgIiYiLCAifCIsICI8IiwgIj4iLCAiPD0i
LCAiPj0iLCAiISIsICI9PSIsICIrKyIsICItLSIsICImIik7Ci0gICAgICAgICAgICBpZiAodG9r
ZW4udGV4dCAhPSAiJiIgfHwgIXRyeUNvbnN1bWUoIlsiKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gIm9wZXJhdG9yIiArIHRva2VuLnRleHQ7Ci0gICAgICAgICAgICBjb25zdW1lKCJdIik7Ci0g
ICAgICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsKKyAgICAgICAgICAgIGxldCB0b2tlbiA9
IHRyeUNvbnN1bWUoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJeIiwgIiYiLCAifCIsICI8Iiwg
Ij4iLCAiPD0iLCAiPj0iLCAiPT0iLCAiKysiLCAiLS0iLCAiJiIpOworICAgICAgICAgICAgaWYg
KHRva2VuKSB7CisgICAgICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgIT0gIiYiIHx8ICF0cnlD
b25zdW1lKCJbIikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9r
ZW4udGV4dDsKKyAgICAgICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuICJvcGVyYXRvciZbXSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgbmFt
ZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICByZXR1cm4gIm9wZXJh
dG9yICIgKyBuYW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpLnRleHQ7CiAgICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xG
dW5jRGVjbCgpCisKKyAgICBmdW5jdGlvbiBwYXJzZU9wZXJhdG9yRnVuY0RlZlZhbHVlcygpCisg
ICAgeworICAgICAgICBjb25zdW1lKCJvcGVyYXRvciIpOworICAgICAgICBsZXQgcmVzdWx0ID0g
e307CisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc2MzE2IENvcnJlY3RseSBoYW5kbGUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gY2Fz
dGluZyBvcGVyYXRvcnMgYW5kIGNvbXBsZXggdHlwZXMKKyAgICAgICAgbGV0IGNhc3RUeXBlID0g
Y29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OworICAgICAgICByZXN1bHQucmV0dXJuVHlw
ZSA9IG5ldyBUeXBlUmVmKG5hbWUsIGNhc3RUeXBlLCBbXSk7CisgICAgICAgIHJlc3VsdC5uYW1l
ID0gIm9wZXJhdG9yICIgKyBjYXN0VHlwZTsKKyAgICAgICAgcmVzdWx0LmlzQ2FzdCA9IHRydWU7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VOb25P
cGVyYXRvckZ1bmNEZWZWYWx1ZXMoKQogICAgIHsKLSAgICAgICAgbGV0IHJldHVyblR5cGUgPSBw
YXJzZVR5cGUoKTsKLSAgICAgICAgbGV0IG5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7CisgICAgICAg
IGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0LnJldHVyblR5cGUgPSBwYXJzZVR5cGUo
KTsKKyAgICAgICAgcmVzdWx0Lm5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7CisgICAgICAgIHJlc3Vs
dC5pc0Nhc3QgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBwYXJzZUdlbmVyaWNGdW5jRGVmVmFsdWVzKCkKKyAgICB7CisgICAgICAgIGlmICh0
cnlDb25zdW1lKCJvcGVyYXRvciIpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlT3BlcmF0b3JG
dW5jRGVmVmFsdWVzKCk7CisgICAgICAgIHJldHVybiBwYXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZh
bHVlcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlRnVuY0RlY2woKQorICAgIHsKKyAg
ICAgICAgbGV0IHZhbHVlcyA9IHBhcnNlR2VuZXJpY0Z1bmNEZWZWYWx1ZXMoKTsKICAgICAgICAg
bGV0IHR5cGVQYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVycygpOwogICAgICAgICBsZXQg
cGFyYW1ldGVycyA9IHBhcnNlUGFyYW1ldGVycygpOwotICAgICAgICByZXR1cm4gbmV3IFByb3Rv
Y29sRnVuY0RlY2wocmV0dXJuVHlwZS5vcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJh
bWV0ZXJzLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jKHJldHVyblR5cGUu
b3JpZ2luLCB2YWx1ZXMubmFtZSwgdmFsdWVzLnJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBw
YXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLmlzQ2FzdCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFy
c2VQcm90b2NvbEZ1bmNEZWNsKCkKKyAgICB7CisgICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5j
RGVjbCgpOworICAgICAgICByZXR1cm4gbmV3IFByb3RvY29sRnVuY0RlY2woZnVuYy5vcmlnaW4s
IGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnR5cGVQYXJhbWV0ZXJzLCBmdW5jLnBh
cmFtZXRlcnMsIGZ1bmMuaXNDYXN0KTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VG
dW5jRGVmKCkKICAgICB7Ci0gICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7Ci0g
ICAgICAgIGxldCBuYW1lID0gcGFyc2VGdW5jTmFtZSgpOwotICAgICAgICBsZXQgdHlwZVBhcmFt
ZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGxldCBwYXJhbWV0ZXJzID0g
cGFyc2VQYXJhbWV0ZXJzKCk7CisgICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOwog
ICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2soKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5j
RGVmKHJldHVyblR5cGUub3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywg
cGFyYW1ldGVycywgYm9keSk7CisgICAgICAgIHJldHVybiBuZXcgRnVuY0RlZihmdW5jLm9yaWdp
biwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMudHlwZVBhcmFtZXRlcnMsIGZ1bmMu
cGFyYW1ldGVycywgYm9keSwgZnVuYy5pc0Nhc3QpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlv
biBwYXJzZVByb3RvY29sRGVjbCgpCkBAIC02NzEsNiArNjg3LDI3IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQorICAgIHsK
KyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoIm5hdGl2ZSIpOworICAgICAgICBsZXQgaXNU
eXBlID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4geworICAgICAgICAgICAgaWYgKHRy
eUNvbnN1bWUoInR5cGVkZWYiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIm5vcm1hbCI7Cisg
ICAgICAgICAgICBjb25zdW1lKCJwcmltaXRpdmUiKTsKKyAgICAgICAgICAgIGNvbnN1bWUoInR5
cGVkZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAicHJpbWl0aXZlIjsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGlmIChpc1R5cGUpIHsKKyAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQo
ImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFy
YW1ldGVycygpOworICAgICAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZS50ZXh0LCBpc1R5cGUgPT0gInByaW1pdGl2ZSIs
IHBhcmFtZXRlcnMpOworICAgICAgICB9CisgICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVj
bCgpOworICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVu
YyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMudHlwZVBhcmFt
ZXRlcnMsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QpOworICAgIH0KKyAgICAKICAgICBm
b3IgKDs7KSB7CiAgICAgICAgIGxldCB0b2tlbiA9IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYg
KCF0b2tlbikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVE
ZWZSZXNvbHZlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNv
bHZlci5qcwppbmRleCAxZGExNWZkNjI5NWM1N2MzNmVkODA2YWQyYTIxOWYzZjA2ZDMzNmExLi4y
ZDIwZGU5NTkwMzdiNjdkZmNlZmE5NDA4ZTA1YWE5NzhmYjUyMTk3IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVyLmpzCkBAIC0zMCw2ICszMCwx
NSBAQCBjbGFzcyBUeXBlRGVmUmVzb2x2ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgc3Vw
ZXIoKTsKICAgICAgICAgdGhpcy5fdmlzaXRpbmcgPSBuZXcgVmlzaXRpbmdTZXQoKTsKICAgICB9
CisKKyAgICB2aXNpdEZ1bmNEZWYobm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzQ2Fz
dCAmJiBub2RlLnJldHVyblR5cGUudHlwZSBpbnN0YW5jZW9mIFR5cGVEZWYpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
MzE2IENvcnJlY3RseSBoYW5kbGUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gY2FzdGluZyBvcGVy
YXRvcnMgYW5kIGNvbXBsZXggdHlwZXMKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fz
dGluZyBvcGVyYXRvcnMgZG9uJ3Qgd29yayB3aXRoIHR5cGVkZWZzLiIpOworICAgICAgICB9Cisg
ICAgICAgIHN1cGVyLnZpc2l0RnVuY0RlZihub2RlKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3Iu
anMKaW5kZXggM2VkNzkyMTJjYTIxNjFkMTYxMDc2Yzg0NTAzMWE0NjViYmQ3NDcyYi4uYzZhMzk2
ZTQ5Y2RiNzgzNDU1OTNiNzE0NzczZDdlZTBiYjQ1ZTc3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0yMDYsNiArMjA2LDEwIEBAIGNsYXNzIFZpc2l0b3Ig
ewogICAgIHsKICAgICB9CiAgICAgCisgICAgdmlzaXRCb29sTGl0ZXJhbChub2RlKQorICAgIHsK
KyAgICB9CisgICAgCiAgICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAg
ICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKQEAgLTIxOCw2
ICsyMjIsMTEgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgYXJndW1lbnQudmlz
aXQodGhpcyk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2aXNpdExvZ2ljYWxOZWdhdGlvbkV4
cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUub3BlcmFuZC52aXNpdCh0aGlzKTsK
KyAgICB9CiAgICAgCiAgICAgdmlzaXRGdW5jdGlvbkxpa2VCbG9jayhub2RlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319797</attachid>
            <date>2017-09-03 13:00:57 -0700</date>
            <delta_ts>2017-09-03 23:16:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176285-20170903130056.patch</filename>
            <type>text/plain</type>
            <size>21975</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQ4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWEzNjAwMDUwY2M4YTcwMmY3ODA1NzFmMzQ1N2MyNWYy
MWVhYjc3Yi4uOTNjZGRhMDg0Y2RlOTg5Y2FjZjRkODlkM2FmNTYwZDhjOWE3OTMwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDE3LTA5LTAzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHRoZSBib29sIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQm9vbExpdGVyYWwuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Z1bmNEZWYuanMuCisgICAgICAgIChCb29sTGl0ZXJhbCk6CisgICAgICAgIChCb29s
TGl0ZXJhbC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKEJvb2xMaXRlcmFsLnByb3Rv
dHlwZS5nZXQgaXNDb25zdGV4cHIpOgorICAgICAgICAoQm9vbExpdGVyYWwucHJvdG90eXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgorICAg
ICAgICAoRnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgaXNDYXN0KToKKyAgICAg
ICAgKEZ1bmMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jRGVmLmpzOgorICAgICAgICAoRnVuY0RlZik6CisgICAgICAgIChGdW5jRGVm
LnByb3RvdHlwZS5nZXQgYm9keSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TGV4ZXIuanM6CisgICAgICAgIChMZXhlci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChMZXhl
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9naWNhbE5lZ2F0aW9uRXhw
cmVzc2lvbi5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y0RlZi5qcy4KKyAgICAgICAgKExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAo
TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUuZ2V0IG9wZXJhbmQpOgorICAgICAg
ICAoTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRp
dmVGdW5jKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAg
ICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAg
ICAgKHBhcnNlUG9zc2libGVSZWxhdGlvbmFsRXF1YWxpdHkpOgorICAgICAgICAocGFyc2VGdW5j
TmFtZSk6CisgICAgICAgIChwYXJzZU9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChw
YXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChwYXJzZUdlbmVyaWNGdW5j
RGVmVmFsdWVzKToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgorICAgICAgICAocGFyc2VQcm90
b2NvbEZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZU5h
dGl2ZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVHlwZURlZlJlc29sdmVyLmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlw
ZS52aXNpdEZ1bmNEZWYpOgorCiAyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIENhbnZhc1Byb3h5CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Jvb2xMaXRlcmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MWFkOTgwOTgxNDg0M2U4ZmE1
YjFkOGFmY2NjN2Y3MTA1OGNiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNz
IEJvb2xMaXRlcmFsIGV4dGVuZHMgRXhwcmVzc2lvbiB7CisgICAgY29uc3RydWN0b3Iob3JpZ2lu
LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgIHRoaXMuX3Zh
bHVlID0gdmFsdWU7CisgICAgfQorICAgIAorICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMu
X3ZhbHVlOyB9CisgICAgZ2V0IGlzQ29uc3RleHByKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAor
ICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiIiArIHRoaXMuX3ZhbHVlOwor
ICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hl
Y2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKaW5kZXgg
NWE4MDYxZDdlNTE5NWNmM2U2OGE3NjcwMTFkNTBiYzY1MWM1YjZmZS4uODM3NzZjOTIyMWNjZjYy
MGNhOGExNGM1M2Q0YmIyNGQ4NTI4ZmJhZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DaGVja2VyLmpzCkBAIC0xODYsNiArMTg2LDIxIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy51aW50MzI7
CiAgICAgfQogICAgIAorICAgIHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MuYm9vbDsKKyAgICB9CisKKyAgICB2aXNp
dExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1
bHRUeXBlID0gbm9kZS52YWx1ZS52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKCFyZXN1bHRUeXBl
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUcnlpbmcgdG8gbmVnYXRlIHNvbWV0aGlu
ZyB3aXRoIG5vIHR5cGU6ICIgKyBub2RlLnZhbHVlKTsKKyAgICAgICAgaWYgKCFyZXN1bHRUeXBl
LmVxdWFscyh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MuYm9vbCkpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlRyeWluZyB0byBuZWdhdGUgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYSBib29s
OiAiICsgbm9kZS52YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmFtLmludHJpbnNp
Y3MuYm9vbDsKKyAgICB9CisgICAgCiAgICAgdmlzaXRDb21tYUV4cHJlc3Npb24obm9kZSkKICAg
ICB7CiAgICAgICAgIGxldCByZXN1bHQgPSBudWxsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRXZhbHVhdG9yLmpzCmluZGV4IDllNWQ2NmQwMTYxODgxYWFmZGY1MDMwZGViM2RlYmQy
OTFlNWM3ZTUuLjRhMDljMWFmOWIxZjU0Nzc4MDIwN2ZjOThjNjdjMTkwZmZlZWJiZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKQEAgLTEyNiw2ICsxMjYs
MTYgQEAgY2xhc3MgRXZhbHVhdG9yIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIHJldHVybiBF
UHRyLmJveChub2RlLnZhbHVlKTsKICAgICB9CiAgICAgCisgICAgdmlzaXRCb29sTGl0ZXJhbChu
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVQdHIuYm94KG5vZGUudmFsdWUpOworICAgIH0K
KworICAgIHZpc2l0TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEVQdHIuYm94KCFub2RlLm9wZXJhbmQudmlzaXQodGhpcykubG9hZFZhbHVlKCkp
OworICAgIH0KKyAgICAKICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAg
ICAgICAvLyBXZSBldmFsdWF0ZSBpbmxpbmVkIEFTVHMsIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSBu
YXRpdmUgY2FsbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1
bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCmluZGV4IDQ0NWRl
YmU4NGMyZjgwYjE5YzZhYzU2NzkyYWJhMzQ2ZWI5YzUwN2UuLjA1OTUzYzk2MTk5Y2U3MTQ3YTQz
NmE3NmE5NDQ5YmI4NDA1MzZhY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Z1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5q
cwpAQCAtMjUsNyArMjUsNyBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jIGV4dGVuZHMg
Tm9kZSB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFy
YW1ldGVycywgcGFyYW1ldGVycykKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVy
blR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpCiAgICAgewogICAgICAg
ICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CkBAIC0zMyw2ICszMyw3
IEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5fcmV0dXJuVHlwZSA9
IHJldHVyblR5cGU7CiAgICAgICAgIHRoaXMuX3R5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRl
cnM7CiAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICB0aGlz
Ll9pc0Nhc3QgPSBpc0Nhc3Q7CiAgICAgfQogICAgIAogICAgIGdldCBvcmlnaW4oKSB7IHJldHVy
biB0aGlzLl9vcmlnaW47IH0KQEAgLTQxLDEyICs0MiwxMyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMg
Tm9kZSB7CiAgICAgZ2V0IHR5cGVQYXJhbWV0ZXJzKCkgeyByZXR1cm4gdGhpcy5fdHlwZVBhcmFt
ZXRlcnM7IH0KICAgICBnZXQgcGFyYW1ldGVycygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7
IH0KICAgICBnZXQgcGFyYW1ldGVyVHlwZXMoKSB7IHJldHVybiB0aGlzLnBhcmFtZXRlcnMubWFw
KHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudHlwZSk7IH0KKyAgICBnZXQgaXNDYXN0KCkgeyByZXR1
cm4gdGhpcy5faXNDYXN0OyB9CiAgICAgCiAgICAgZ2V0IGtpbmQoKSB7IHJldHVybiBGdW5jOyB9
CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJu
VHlwZSArICIgIiArIHRoaXMubmFtZSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigi
ICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICByZXR1cm4gKHRoaXMuaXNDYXN0KCkg
PyB0aGlzLnJldHVyblR5cGUgKyAiICIgOiAiIikgKyB0aGlzLm5hbWUgKyAiPCIgKyB0aGlzLnR5
cGVQYXJhbWV0ZXJzICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCmluZGV4IDhiY2E0MDBkNzc3
NDNjNGFiZmU2YTY4ZTBjMGQwOGRhYTY1ODY5ZWQuLjQ3YjMwOGRmM2I2NTUzZWE1MzAxMDliZDJj
MjMzMWY4NGJmZGQ3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNEZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5q
cwpAQCAtMjUsMTEgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNEZWYgZXh0
ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5
cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBib2R5KQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2Fz
dCkKICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBh
cmFtZXRlcnMsIHBhcmFtZXRlcnMpOwotICAgICAgICB0aGlzLmJvZHkgPSBib2R5OworICAgICAg
ICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0
ZXJzLCBpc0Nhc3QpOworICAgICAgICB0aGlzLl9ib2R5ID0gYm9keTsKICAgICB9CisKKyAgICBn
ZXQgYm9keSgpIHsgcmV0dXJuIHRoaXMuX2JvZHk7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2lj
cy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXgg
MzI1MWZiZTVmZjk1NjAwMGFiYzc0Mjk3YjEyNWU4N2U4MzNiMmI1Ni4uYWY5ZDgxYjEwYmZjZjBi
ZDNlNWI4NGNjNmFiZTViNDk4NjczNTA0MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbnRyaW5zaWNzLmpzCkBAIC02OSw2ICs2OSwxNCBAQCBjbGFzcyBJbnRyaW5zaWNzIHsK
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwogICAgICAgICAgICAgICAgIHR5cGUucG9w
dWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0
LCAwKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAibmF0aXZlIHByaW1pdGl2ZSB0eXBlIGJvb2w8PiIsCisgICAgICAgICAgICB0eXBlID0+
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmJvb2wgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5
cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIGZhbHNlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgaW50IG9wZXJhdG9yKzw+KGludCxpbnQpIiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTGV4ZXIuanMKaW5kZXggMjc2MzA3MGRlOTY1ZGMzNTQ0Zjk4YTRjNjI5N2EwZDI0NGFhMWNl
OS4uMGFmZjY5NzlkNDUyMDI5NjU3ZDdjNGVjMzcxYTQwMjlmYmZiM2Q5NyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTEwMyw2ICsxMDMsMTAgQEAgY2xhc3MgTGV4
ZXIgewogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBkbyBVbmljb2RlLgog
ICAgICAgICBpZiAoL15bXlxkXFddXHcqLy50ZXN0KHJlbGV2YW50VGV4dCkpIHsKKyAgICAgICAg
ICAgIGlmIChpc0FkZHJlc3NTcGFjZShSZWdFeHAubGFzdE1hdGNoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0KCJhZGRyZXNzIHNwYWNlIik7CisgICAgICAgICAgICBpZiAoWyJ0cnVl
IiwgImZhbHNlIl0uaW5jbHVkZXMoUmVnRXhwLmxhc3RNYXRjaCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdCgiYm9vbExpdGVyYWwiKTsKICAgICAgICAgICAgIGlmIChbInN0cnVjdCIs
ICJwcm90b2NvbCIsICJ0eXBlZGVmIiwgImlmIiwgImVsc2UiLCAiZW51bSIsICJjb250aW51ZSIs
ICJicmVhayIsICJzd2l0Y2giLCAiY2FzZSIsICJkZWZhdWx0IiwgImZvciIsICJ3aGlsZSIsICJk
byIsICJyZXR1cm4iLCAic2l6ZW9mIiwgImNvbnN0YW50IiwgImRldmljZSIsICJ0aHJlYWRncm91
cCIsICJ0aHJlYWQiLCAib3BlcmF0b3IiLCAibnVsbCJdLmluY2x1ZGVzKFJlZ0V4cC5sYXN0TWF0
Y2gpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQoImtleXdvcmQiKTsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQoImlkZW50aWZpZXIiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24uanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzMGJlNzBiOGU3NTllOTI2YmNlYWUxZjQzMTdkNDRjZWMxOTE0YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Mb2dpY2FsTmVnYXRpb25F
eHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgTG9naWNhbE5lZ2F0aW9u
RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24geworICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
b3BlcmFuZCkKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgIHRoaXMuX29w
ZXJhbmQgPSBvcGVyYW5kOworICAgIH0KKyAgICAKKyAgICBnZXQgb3BlcmFuZCgpIHsgcmV0dXJu
IHRoaXMuX29wZXJhbmQ7IH0KKyAgICAKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICBy
ZXR1cm4gIiEoIiArIHRoaXMub3BlcmFuZCArICIpIjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCmluZGV4IDM5ODE4OTgxYzM4ZTdkYmIy
MjY0OTMwOWRhZjcxYzBhYTEyM2Q1NjUuLmI4N2NmN2EyMGJiNjNkNjBjMjQzMjcxZDJiNGVjN2I3
NWVkYzk1NWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2
ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4
dGVuZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0
eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycykKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBpc0Nhc3QgPSBmYWxzZSkK
ICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFt
ZXRlcnMsIHBhcmFtZXRlcnMpOworICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5
cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCApOwogICAgIH0KICAgICAKICAgICBnZXQg
aXNOYXRpdmUoKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Bh
cnNlLmpzCmluZGV4IGY0MzlmYmY4Y2VmN2ZlMzAxYjYzNGJjMzc5ODU4ZWM1NmY4OWNlZGEuLjI2
NTExNTk3YmNmNDYwNWJkY2ViNTJlYjBmOTRiMDliZDUzYTMyNTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1BhcnNlLmpzCkBAIC0xODcsNiArMTg3LDEwIEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHRv
a2VuID0gY29uc3VtZUtpbmQoImRvdWJsZUxpdGVyYWwiKTsKICAgICAgICAgICAgIHJldHVybiBu
ZXcgRG91YmxlTGl0ZXJhbCh0b2tlbiwgK3Rva2VuLnRleHQpOwogICAgICAgICB9CisgICAgICAg
IGlmICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJib29sTGl0ZXJhbCIpKSB7CisgICAgICAgICAg
ICB0b2tlbiA9IGNvbnN1bWVLaW5kKCJib29sTGl0ZXJhbCIpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBCb29sTGl0ZXJhbCh0b2tlbiwgdG9rZW4udGV4dCA9PSAidHJ1ZSIpOworICAgICAgICB9
CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBvcnQgZm9yIGZsb2F0IGxpdGVyYWxzIGFuZCBw
cm9iYWJseSBvdGhlciBsaXRlcmFscyB0b28uCiAgICAgICAgIGNvbnN1bWUoIigiKTsKICAgICAg
ICAgbGV0IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbigpOwpAQCAtMjk1LDMwICsyOTksNiBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgIHJldHVybiBuZXcgVHlwZURlZihvcmlnaW4sIG5hbWUsIHR5cGVQYXJhbWV0ZXJzLCB0
eXBlKTsKICAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQotICAgIHsKLSAg
ICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoIm5hdGl2ZSIpOwotICAgICAgICBsZXQgaXNUeXBl
ID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewotICAgICAgICAgICAgaWYgKHRyeUNv
bnN1bWUoInR5cGVkZWYiKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gIm5vcm1hbCI7Ci0gICAg
ICAgICAgICBjb25zdW1lKCJwcmltaXRpdmUiKTsKLSAgICAgICAgICAgIGNvbnN1bWUoInR5cGVk
ZWYiKTsKLSAgICAgICAgICAgIHJldHVybiAicHJpbWl0aXZlIjsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIGlmIChpc1R5cGUpIHsKLSAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlk
ZW50aWZpZXIiKTsKLSAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1l
dGVycygpOwotICAgICAgICAgICAgY29uc3VtZSgiOyIpOwotICAgICAgICAgICAgcmV0dXJuIG5l
dyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZS50ZXh0LCBpc1R5cGUgPT0gInByaW1pdGl2ZSIsIHBh
cmFtZXRlcnMpOwotICAgICAgICB9Ci0gICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBl
KCk7Ci0gICAgICAgIGxldCBuYW1lID0gcGFyc2VGdW5jTmFtZSgpOwotICAgICAgICBsZXQgdHlw
ZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGxldCBwYXJhbWV0
ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKLSAgICAgICAg
cmV0dXJuIG5ldyBOYXRpdmVGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFt
ZXRlcnMsIHBhcmFtZXRlcnMpOwotICAgIH0KLSAgICAKICAgICBmdW5jdGlvbiBnZW5lcmljUGFy
c2VMZWZ0KHRleHRzLCBuZXh0UGFyc2VyLCBjb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGxl
dCBsZWZ0ID0gbmV4dFBhcnNlcigpOwpAQCAtMzk1LDcgKzM3NSw3IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBmdW5jdGlvbiBw
YXJzZVBvc3NpYmxlUHJlZml4KCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKLSAgICAgICAg
aWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKysiLCAiLS0iLCAiKyIsICItIiwgIiEiLCAifiIpKQor
ICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrKyIsICItLSIsICIrIiwgIi0iLCAifiIp
KQogICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsQXNzaWdubWVudCh0b2tlbiwgIm9wZXJhdG9y
IiArIHRva2VuLnRleHQsIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7CiAgICAgICAgIGlmICh0b2tl
biA9IHRyeUNvbnN1bWUoIl4iKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VF
eHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwpAQCAtNDAzLDYgKzM4Myw4
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZVB0ckV4cHJlc3Npb24odG9rZW4sIHBhcnNl
UG9zc2libGVQcmVmaXgoKSk7CiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIkAiKSkK
ICAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZUFycmF5UmVmRXhwcmVzc2lvbih0b2tlbiwgcGFy
c2VQb3NzaWJsZVByZWZpeCgpKTsKKyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiISIp
KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uKHRva2Vu
LCBDYWxsRXhwcmVzc2lvbih0b2tlbiwgIm9wZXJhdG9yIGJvb2wiLCBbXSwgW3BhcnNlUG9zc2li
bGVQcmVmaXgoKV0pKTsKICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKICAg
ICB9CiAgICAgCkBAIC00MzMsNyArNDE1LDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3Jp
Z2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgKHRva2VuLCBsZWZ0LCBy
aWdodCkgPT4gewogICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgQ2FsbEV4cHJlc3Np
b24odG9rZW4sICJvcGVyYXRvcj09IiwgW10sIFtsZWZ0LCByaWdodF0pOwogICAgICAgICAgICAg
ICAgIGlmICh0b2tlbi50ZXh0ID09ICIhPSIpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG5ldyBDYWxsRXhwcmVzc2lvbih0b2tlbiwgIm9wZXJhdG9yISIsIFtdLCBbcmVzdWx0XSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9u
KHRva2VuLCByZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9KTsKICAgICB9CkBAIC02MjgsMzIgKzYxMCw2NiBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24gcGFyc2VG
dW5jTmFtZSgpCiAgICAgewogICAgICAgICBpZiAodHJ5Q29uc3VtZSgib3BlcmF0b3IiKSkgewot
ICAgICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwg
Il4iLCAiJiIsICJ8IiwgIjwiLCAiPiIsICI8PSIsICI+PSIsICIhIiwgIj09IiwgIisrIiwgIi0t
IiwgIiYiKTsKLSAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ICE9ICImIiB8fCAhdHJ5Q29uc3Vt
ZSgiWyIpKQotICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4dDsK
LSAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKLSAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3Im
W10iOworICAgICAgICAgICAgbGV0IHRva2VuID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIioiLCAi
LyIsICIlIiwgIl4iLCAiJiIsICJ8IiwgIjwiLCAiPiIsICI8PSIsICI+PSIsICI9PSIsICIrKyIs
ICItLSIsICImIik7CisgICAgICAgICAgICBpZiAodG9rZW4pIHsKKyAgICAgICAgICAgICAgICBp
ZiAodG9rZW4udGV4dCAhPSAiJiIgfHwgIXRyeUNvbnN1bWUoIlsiKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0OworICAgICAgICAgICAgICAgIGNv
bnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKKyAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3IgIiArIG5hbWU7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKICAgICB9Ci0gICAg
Ci0gICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKKworICAgIGZ1bmN0aW9uIHBh
cnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCkKKyAgICB7CisgICAgICAgIGNvbnN1bWUoIm9wZXJh
dG9yIik7CisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYgQ29ycmVjdGx5IGhhbmRs
ZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBjYXN0aW5nIG9wZXJhdG9ycyBhbmQgY29tcGxleCB0
eXBlcworICAgICAgICBsZXQgY2FzdFR5cGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRl
eHQ7CisgICAgICAgIHJlc3VsdC5yZXR1cm5UeXBlID0gbmV3IFR5cGVSZWYobmFtZSwgY2FzdFR5
cGUsIFtdKTsKKyAgICAgICAgcmVzdWx0Lm5hbWUgPSAib3BlcmF0b3IgIiArIGNhc3RUeXBlOwor
ICAgICAgICByZXN1bHQuaXNDYXN0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcygpCiAgICAg
ewotICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwotICAgICAgICBsZXQgbmFt
ZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHt9OworICAgICAgICBy
ZXN1bHQucmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICByZXN1bHQubmFtZSA9IHBh
cnNlRnVuY05hbWUoKTsKKyAgICAgICAgcmVzdWx0LmlzQ2FzdCA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlR2VuZXJpY0Z1bmNEZWZW
YWx1ZXMoKQorICAgIHsKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIm9wZXJhdG9yIikpCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMoKTsKKyAgICAgICAgcmV0
dXJuIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcGFyc2VGdW5jRGVjbCgpCisgICAgeworICAgICAgICBsZXQgdmFsdWVzID0gcGFyc2VHZW5l
cmljRnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5
cGVQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJz
KCk7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvdG9jb2xGdW5jRGVjbChyZXR1cm5UeXBlLm9yaWdp
biwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpOworICAgICAg
ICByZXR1cm4gbmV3IEZ1bmMocmV0dXJuVHlwZS5vcmlnaW4sIHZhbHVlcy5uYW1lLCB2YWx1ZXMu
cmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMuaXNDYXN0
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVByb3RvY29sRnVuY0RlY2woKQorICAgIHsK
KyAgICAgICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7CisgICAgICAgIHJldHVybiBuZXcg
UHJvdG9jb2xGdW5jRGVjbChmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUs
IGZ1bmMudHlwZVBhcmFtZXRlcnMsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QpOwogICAg
IH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWYoKQogICAgIHsKLSAgICAgICAgbGV0
IHJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgbGV0IG5hbWUgPSBwYXJzZUZ1bmNO
YW1lKCk7Ci0gICAgICAgIGxldCB0eXBlUGFyYW1ldGVycyA9IHBhcnNlVHlwZVBhcmFtZXRlcnMo
KTsKLSAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKKyAgICAgICAg
bGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9j
aygpOwotICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYocmV0dXJuVHlwZS5vcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBib2R5KTsKKyAgICAgICAg
cmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlw
ZSwgZnVuYy50eXBlUGFyYW1ldGVycywgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5jLmlzQ2Fz
dCk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xEZWNsKCkKQEAgLTY3
MSw2ICs2ODcsMjcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBm
dW5jdGlvbiBwYXJzZU5hdGl2ZSgpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3Vt
ZSgibmF0aXZlIik7CisgICAgICAgIGxldCBpc1R5cGUgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29w
ZSgoKSA9PiB7CisgICAgICAgICAgICBpZiAodHJ5Q29uc3VtZSgidHlwZWRlZiIpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAibm9ybWFsIjsKKyAgICAgICAgICAgIGNvbnN1bWUoInByaW1pdGl2
ZSIpOworICAgICAgICAgICAgY29uc3VtZSgidHlwZWRlZiIpOworICAgICAgICAgICAgcmV0dXJu
ICJwcmltaXRpdmUiOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKGlzVHlwZSkgeworICAgICAg
ICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAg
bGV0IHBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7CisgICAgICAgICAgICBjb25z
dW1lKCI7Iik7CisgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1l
LnRleHQsIGlzVHlwZSA9PSAicHJpbWl0aXZlIiwgcGFyYW1ldGVycyk7CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7CisgICAgICAgIGNvbnN1bWUoIjsiKTsK
KyAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1
bmMucmV0dXJuVHlwZSwgZnVuYy50eXBlUGFyYW1ldGVycywgZnVuYy5wYXJhbWV0ZXJzLCBmdW5j
LmlzQ2FzdCk7CisgICAgfQorICAgIAogICAgIGZvciAoOzspIHsKICAgICAgICAgbGV0IHRva2Vu
ID0gbGV4ZXIucGVlaygpOwogICAgICAgICBpZiAoIXRva2VuKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDFiYzA4YTc5ZGE1NzE3
ODExZDhkMWFlMThmNmRmODNhNzI4MDdhYzUuLjVkOGIzNjlkYzg5YzYxMmEzNTczZjI2MTY1ZmM3
NWJjNTcyZDA1MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKQEAgLTM1LDYgKzM1LDcgQEAgbmF0aXZlIHByaW1pdGl2ZSB0eXBlZGVm
IHZvaWQ7CiAKIG5hdGl2ZSBwcmltaXRpdmUgdHlwZWRlZiBpbnQzMjsKIG5hdGl2ZSBwcmltaXRp
dmUgdHlwZWRlZiB1aW50MzI7CituYXRpdmUgcHJpbWl0aXZlIHR5cGVkZWYgYm9vbDsKIHR5cGVk
ZWYgaW50ID0gaW50MzI7CiB0eXBlZGVmIHVpbnQgPSB1aW50MzI7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5qcwppbmRleCAxZGExNWZkNjI5
NWM1N2MzNmVkODA2YWQyYTIxOWYzZjA2ZDMzNmExLi4yZDIwZGU5NTkwMzdiNjdkZmNlZmE5NDA4
ZTA1YWE5NzhmYjUyMTk3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UeXBlRGVmUmVzb2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VHlwZURlZlJlc29sdmVyLmpzCkBAIC0zMCw2ICszMCwxNSBAQCBjbGFzcyBUeXBlRGVmUmVzb2x2
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fdmlz
aXRpbmcgPSBuZXcgVmlzaXRpbmdTZXQoKTsKICAgICB9CisKKyAgICB2aXNpdEZ1bmNEZWYobm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzQ2FzdCAmJiBub2RlLnJldHVyblR5cGUudHlw
ZSBpbnN0YW5jZW9mIFR5cGVEZWYpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MzE2IENvcnJlY3RseSBoYW5kbGUgdGhl
IGludGVyYWN0aW9uIGJldHdlZW4gY2FzdGluZyBvcGVyYXRvcnMgYW5kIGNvbXBsZXggdHlwZXMK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2FzdGluZyBvcGVyYXRvcnMgZG9uJ3Qgd29y
ayB3aXRoIHR5cGVkZWZzLiIpOworICAgICAgICB9CisgICAgICAgIHN1cGVyLnZpc2l0RnVuY0Rl
Zihub2RlKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggM2VkNzkyMTJjYTIxNjFk
MTYxMDc2Yzg0NTAzMWE0NjViYmQ3NDcyYi4uYzZhMzk2ZTQ5Y2RiNzgzNDU1OTNiNzE0NzczZDdl
ZTBiYjQ1ZTc3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBA
IC0yMDYsNiArMjA2LDEwIEBAIGNsYXNzIFZpc2l0b3IgewogICAgIHsKICAgICB9CiAgICAgCisg
ICAgdmlzaXRCb29sTGl0ZXJhbChub2RlKQorICAgIHsKKyAgICB9CisgICAgCiAgICAgdmlzaXRD
YWxsRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50
IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKQEAgLTIxOCw2ICsyMjIsMTEgQEAgY2xhc3MgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgYXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgICAgIH0KICAg
ICB9CisKKyAgICB2aXNpdExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24obm9kZSkKKyAgICB7Cisg
ICAgICAgIG5vZGUub3BlcmFuZC52aXNpdCh0aGlzKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRG
dW5jdGlvbkxpa2VCbG9jayhub2RlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319842</attachid>
            <date>2017-09-03 23:16:52 -0700</date>
            <delta_ts>2017-09-04 12:17:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176285-20170903231651.patch</filename>
            <type>text/plain</type>
            <size>27836</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjFmYjhjZTY1YzVlZjE3MWI4MmEwMmY3MmUwYWU4NjIz
ZTJiMjE1Yi4uNDYzNjEzMTgxMzNmYmYzMWM2ZTQ1NDJhMmIzY2FlNWU1MGEzNjA0OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDE3LTA5LTAzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHRoZSBib29sIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQm9vbExpdGVyYWwuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Z1bmNEZWYuanMuCisgICAgICAgIChCb29sTGl0ZXJhbCk6CisgICAgICAgIChCb29s
TGl0ZXJhbC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKEJvb2xMaXRlcmFsLnByb3Rv
dHlwZS5nZXQgaXNDb25zdGV4cHIpOgorICAgICAgICAoQm9vbExpdGVyYWwucHJvdG90eXBlLnRv
U3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgorICAg
ICAgICAoRnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgaXNDYXN0KToKKyAgICAg
ICAgKEZ1bmMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jRGVmLmpzOgorICAgICAgICAoRnVuY0RlZik6CisgICAgICAgIChGdW5jRGVm
LnByb3RvdHlwZS5nZXQgYm9keSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TGV4ZXIuanM6CisgICAgICAgIChMZXhlci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChMZXhl
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9naWNhbE5lZ2F0aW9uRXhw
cmVzc2lvbi5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y0RlZi5qcy4KKyAgICAgICAgKExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAo
TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUuZ2V0IG9wZXJhbmQpOgorICAgICAg
ICAoTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRp
dmVGdW5jKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAg
ICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlUHJlZml4KToKKyAgICAg
ICAgKHBhcnNlUG9zc2libGVSZWxhdGlvbmFsRXF1YWxpdHkpOgorICAgICAgICAocGFyc2VGdW5j
TmFtZSk6CisgICAgICAgIChwYXJzZU9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChw
YXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcyk6CisgICAgICAgIChwYXJzZUdlbmVyaWNGdW5j
RGVmVmFsdWVzKToKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOgorICAgICAgICAocGFyc2VQcm90
b2NvbEZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZU5h
dGl2ZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVHlwZURlZlJlc29sdmVyLmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlw
ZS52aXNpdEZ1bmNEZWYpOgorCiAyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTWFrZSB3ZWJraXQtcGF0Y2ggcG9zdCAtLW5vLXJldmlldyBlbmFibGUg
RVdTIGp1c3QgbGlrZSB3ZWJraXQtcGF0Y2ggcG9zdC1jb21taXRzIC0tbm8tcmV2aWV3CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggYjFiYWM5NDcxNDhiNGY1ZmFmYjE0NzZj
NWRjNTJkMWUwNGYxY2VkNC4uZDRhNTQ1MzdmZDM1MDIzYmUzNzJlMTE0MjU2YTA5N2ZiNjFmMGZi
YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtMzcsNiArMzcsNyBAQCBs
b2FkKCJBcnJheVJlZlR5cGUuanMiKTsKIGxvYWQoIkFycmF5VHlwZS5qcyIpOwogbG9hZCgiQXNz
aWdubWVudC5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsKK2xvYWQoIkJvb2xMaXRlcmFsLmpzIik7
CiBsb2FkKCJDYWxsQXNzaWdubWVudC5qcyIpOwogbG9hZCgiQ2FsbEV4cHJlc3Npb24uanMiKTsK
IGxvYWQoIkNhbGxGdW5jdGlvbi5qcyIpOwpAQCAtNjksNiArNzAsNyBAQCBsb2FkKCJJbnRyaW5z
aWNzLmpzIik7CiBsb2FkKCJMZXhlci5qcyIpOwogbG9hZCgiTGV4ZXJUb2tlbi5qcyIpOwogbG9h
ZCgiTGl0ZXJhbFR5cGVDaGVja2VyLmpzIik7Citsb2FkKCJMb2dpY2FsTmVnYXRpb25FeHByZXNz
aW9uLmpzIik7CiBsb2FkKCJNYWtlUHRyRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiTmFtZUNvbnRl
eHQuanMiKTsKIGxvYWQoIk5hbWVSZXNvbHZlci5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQm9vbExpdGVyYWwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTFhZDk4MDk4MTQ4NDNlOGZh
NWIxZDhhZmNjYzdmNzEwNThjYjVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQm9vbExpdGVyYWwuanMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFz
cyBCb29sTGl0ZXJhbCBleHRlbmRzIEV4cHJlc3Npb24geworICAgIGNvbnN0cnVjdG9yKG9yaWdp
biwgdmFsdWUpCisgICAgeworICAgICAgICBzdXBlcihvcmlnaW4pOworICAgICAgICB0aGlzLl92
YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICAKKyAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlz
Ll92YWx1ZTsgfQorICAgIGdldCBpc0NvbnN0ZXhwcigpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAK
KyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gIiIgKyB0aGlzLl92YWx1ZTsK
KyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0No
ZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4
IDI0ZjczMTU0YzExZGQwOTc1ZjRmMjlkNGRjMmRhNDY1NTAyMGNjNGEuLmViZGQ4ZjRlYmJjZTQz
YzlhNTlkMjc0MmU2ODJiM2Y5YzMzMTNlMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tlci5qcwpAQCAtMjE1LDYgKzIxNSwyMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7CiAgICAgfQogICAgIAorICAgIHZp
c2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmFt
LmludHJpbnNpY3MuYm9vbDsKKyAgICB9CisKKyAgICB2aXNpdExvZ2ljYWxOZWdhdGlvbkV4cHJl
c3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHRUeXBlID0gbm9kZS52YWx1ZS52
aXNpdCh0aGlzKTsKKyAgICAgICAgaWYgKCFyZXN1bHRUeXBlKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJUcnlpbmcgdG8gbmVnYXRlIHNvbWV0aGluZyB3aXRoIG5vIHR5cGU6ICIgKyBu
b2RlLnZhbHVlKTsKKyAgICAgICAgaWYgKCFyZXN1bHRUeXBlLmVxdWFscyh0aGlzLl9wcm9ncmFt
LmludHJpbnNpY3MuYm9vbCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0
byBuZWdhdGUgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYSBib29sOiAiICsgbm9kZS52YWx1ZSk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MuYm9vbDsKKyAgICB9CisgICAg
CiAgICAgdmlzaXRDb21tYUV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIGxldCByZXN1
bHQgPSBudWxsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZh
bHVhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCmlu
ZGV4IDczOGJkOWVlM2JhM2Q5YTU0MzlkMDk3NDliMzBjMTc0YTdhZDNjMzUuLmM2ODNmZjI5NjJh
Njg0YTg2MGU1MTU3MjZlZTNmZGQwMTlmZjk5MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9FdmFsdWF0b3IuanMKQEAgLTE0MSw2ICsxNDEsMTYgQEAgY2xhc3MgRXZhbHVhdG9y
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIHJldHVybiBFUHRyLmJveChudWxsKTsKICAgICB9
CiAgICAgCisgICAgdmlzaXRCb29sTGl0ZXJhbChub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEVQdHIuYm94KG5vZGUudmFsdWUpOworICAgIH0KKworICAgIHZpc2l0TG9naWNhbE5lZ2F0aW9u
RXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVQdHIuYm94KCFub2RlLm9w
ZXJhbmQudmlzaXQodGhpcykubG9hZFZhbHVlKCkpOworICAgIH0KKyAgICAKICAgICB2aXNpdENh
bGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICAvLyBXZSBldmFsdWF0ZSBpbmxpbmVk
IEFTVHMsIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSBuYXRpdmUgY2FsbC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9GdW5jLmpzCmluZGV4IDYxM2QzYTg2NGYwYWU2NGY0ZDU0YjdhOGI2N2M3ODIy
Mzk1MzQ5NTguLjhkMmZmMjQ4NGE2NGU4OTc2MDBlZWQ4N2I0NzA2NDViYjA1MDZmZjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpAQCAtMjUsNyArMjUsNyBAQAogInVzZSBz
dHJpY3QiOwogCiBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7Ci0gICAgY29uc3RydWN0b3Iob3Jp
Z2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycykKKyAgICBj
b25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJh
bWV0ZXJzLCBpc0Nhc3QpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9v
cmlnaW4gPSBvcmlnaW47CkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2Rl
IHsKICAgICAgICAgdGhpcy5fcmV0dXJuVHlwZSA9IHJldHVyblR5cGU7CiAgICAgICAgIHRoaXMu
X3R5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7CiAgICAgICAgIHRoaXMuX3BhcmFtZXRl
cnMgPSBwYXJhbWV0ZXJzOworICAgICAgICB0aGlzLl9pc0Nhc3QgPSBpc0Nhc3Q7CiAgICAgfQog
ICAgIAogICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KQEAgLTQxLDEy
ICs0MiwxMyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgZ2V0IHR5cGVQYXJhbWV0
ZXJzKCkgeyByZXR1cm4gdGhpcy5fdHlwZVBhcmFtZXRlcnM7IH0KICAgICBnZXQgcGFyYW1ldGVy
cygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7IH0KICAgICBnZXQgcGFyYW1ldGVyVHlwZXMo
KSB7IHJldHVybiB0aGlzLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudHlw
ZSk7IH0KKyAgICBnZXQgaXNDYXN0KCkgeyByZXR1cm4gdGhpcy5faXNDYXN0OyB9CiAgICAgCiAg
ICAgZ2V0IGtpbmQoKSB7IHJldHVybiBGdW5jOyB9CiAgICAgCiAgICAgdG9EZWNsU3RyaW5nKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJldHVyblR5cGUgKyAiICIgKyB0aGlzLm5hbWUg
KyAiPCIgKyB0aGlzLnR5cGVQYXJhbWV0ZXJzICsgIj4oIiArIHRoaXMucGFyYW1ldGVycyArICIp
IjsKKyAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/ICIiIDogdGhpcy5yZXR1cm5UeXBlICsg
IiAiKSArIHRoaXMubmFtZSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhp
cy5wYXJhbWV0ZXJzICsgIikiOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcwppbmRleCBiYjc2ZGNlZmM4ODM0MmVkMDAx
YzQyNmI3YmEyZDA1ZDUxNTE0ZjNiLi43YmUzNjRkNGNiMGQxNDkwZDNkMDgwNDEyODIyOGJiM2Yx
ZDIzZGM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVm
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMKQEAgLTI1
LDExICsyNSwxMyBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jRGVmIGV4dGVuZHMgRnVu
YyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1l
dGVycywgcGFyYW1ldGVycywgYm9keSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJl
dHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBib2R5LCBpc0Nhc3QpCiAgICAg
ewotICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJz
LCBwYXJhbWV0ZXJzKTsKLSAgICAgICAgdGhpcy5ib2R5ID0gYm9keTsKKyAgICAgICAgc3VwZXIo
b3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgaXND
YXN0KTsKKyAgICAgICAgdGhpcy5fYm9keSA9IGJvZHk7CiAgICAgfQorCisgICAgZ2V0IGJvZHko
KSB7IHJldHVybiB0aGlzLl9ib2R5OyB9CiAgICAgCiAgICAgcmV3cml0ZShyZXdyaXRlcikKICAg
ICB7CkBAIC0zNyw3ICszOSw3IEBAIGNsYXNzIEZ1bmNEZWYgZXh0ZW5kcyBGdW5jIHsKICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJld3JpdGUgYW4gdW5pbnN0YW50aWF0ZWQg
ZnVuY3Rpb24iKTsKICAgICAgICAgdGhpcy5fcmV0dXJuVHlwZSA9IHRoaXMuX3JldHVyblR5cGUu
dmlzaXQocmV3cml0ZXIpOwogICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gdGhpcy5fcGFyYW1l
dGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlci52aXNpdChyZXdyaXRlcikpOwotICAgICAg
ICB0aGlzLmJvZHkgPSB0aGlzLmJvZHkudmlzaXQocmV3cml0ZXIpOworICAgICAgICB0aGlzLl9i
b2R5ID0gdGhpcy5ib2R5LnZpc2l0KHJld3JpdGVyKTsKICAgICB9CiAgICAgCiAgICAgdG9TdHJp
bmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2lj
cy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXgg
YzBmNWU0MDNjODZkZWE1NGIzY2Y4ZGJjZGJmZGViNmI0YTk0YjJiMi4uNTczODBjMDdkNGQxOTQ2
YmEzOTkzMWFkYjEzZWI0ZDFiYTdkOTc1OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbnRyaW5zaWNzLmpzCkBAIC02OSw2ICs2OSwxNCBAQCBjbGFzcyBJbnRyaW5zaWNzIHsK
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwogICAgICAgICAgICAgICAgIHR5cGUucG9w
dWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0
LCAwKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAibmF0aXZlIHByaW1pdGl2ZSB0eXBlIGJvb2w8PiIsCisgICAgICAgICAgICB0eXBlID0+
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmJvb2wgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5
cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIGZhbHNlKTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgaW50IG9wZXJhdG9yKzw+KGludCxpbnQpIiwKQEAgLTEwNyw3ICsxMTUsNyBAQCBjbGFz
cyBJbnRyaW5zaWNzIHsKICAgICB7CiAgICAgICAgIGxldCBpbnRyaW5zaWMgPSB0aGlzLl9tYXAu
Z2V0KHRoaW5nLnRvU3RyaW5nKCkpOwogICAgICAgICBpZiAoIWludHJpbnNpYykKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJVbnJl
Y29nbml6ZWQgaW50cmluc2ljOiAiICsgdGhpbmcpOworICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3IodGhpbmcudG9TdHJpbmcoKSwgIlVucmVjb2duaXplZCBpbnRyaW5zaWM6ICIgKyB0
aGluZyk7CiAgICAgICAgIGludHJpbnNpYyh0aGluZyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwppbmRleCAyNzYzMDcwZGU5NjVkYzM1NDRmOThhNGM2Mjk3
YTBkMjQ0YWExY2U5Li4wYWZmNjk3OWQ0NTIwMjk2NTdkN2M0ZWMzNzFhNDAyOWZiZmIzZDk3IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcwpAQCAtMTAzLDYgKzEwMywxMCBA
QCBjbGFzcyBMZXhlciB7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGRv
IFVuaWNvZGUuCiAgICAgICAgIGlmICgvXlteXGRcV11cdyovLnRlc3QocmVsZXZhbnRUZXh0KSkg
eworICAgICAgICAgICAgaWYgKGlzQWRkcmVzc1NwYWNlKFJlZ0V4cC5sYXN0TWF0Y2gpKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQoImFkZHJlc3Mgc3BhY2UiKTsKKyAgICAgICAgICAg
IGlmIChbInRydWUiLCAiZmFsc2UiXS5pbmNsdWRlcyhSZWdFeHAubGFzdE1hdGNoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJib29sTGl0ZXJhbCIpOwogICAgICAgICAgICAgaWYg
KFsic3RydWN0IiwgInByb3RvY29sIiwgInR5cGVkZWYiLCAiaWYiLCAiZWxzZSIsICJlbnVtIiwg
ImNvbnRpbnVlIiwgImJyZWFrIiwgInN3aXRjaCIsICJjYXNlIiwgImRlZmF1bHQiLCAiZm9yIiwg
IndoaWxlIiwgImRvIiwgInJldHVybiIsICJzaXplb2YiLCAiY29uc3RhbnQiLCAiZGV2aWNlIiwg
InRocmVhZGdyb3VwIiwgInRocmVhZCIsICJvcGVyYXRvciIsICJudWxsIl0uaW5jbHVkZXMoUmVn
RXhwLmxhc3RNYXRjaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgia2V5d29yZCIp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgiaWRlbnRpZmllciIpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2ljYWxOZWdhdGlvbkV4cHJlc3Np
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjMwYmU3MGI4ZTc1OWU5MjZiY2VhZTFmNDMxN2Q0NGNlYzE5MTRi
ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2lj
YWxOZWdhdGlvbkV4cHJlc3Npb24uanMKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBMb2dp
Y2FsTmVnYXRpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7CisgICAgY29uc3RydWN0
b3Iob3JpZ2luLCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAg
ICAgdGhpcy5fb3BlcmFuZCA9IG9wZXJhbmQ7CisgICAgfQorICAgIAorICAgIGdldCBvcGVyYW5k
KCkgeyByZXR1cm4gdGhpcy5fb3BlcmFuZDsgfQorICAgIAorICAgIHRvU3RyaW5nKCkKKyAgICB7
CisgICAgICAgIHJldHVybiAiISgiICsgdGhpcy5vcGVyYW5kICsgIikiOworICAgIH0KK30KKwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKaW5kZXggMjNiMGI2
MjNjMDhlMGRiZTRjNjNkYTUzMzk3MDNhYTNlNmNkYTFiNS4uZjdlNTJkNWY4ZDUzOWY4MmNlZDdm
NzhiOTMyOGNjZjgyZGQ2OGQ2MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9O
YXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5h
dGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJl
dHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKG9y
aWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2Fz
dCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBl
LCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycyk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFt
ZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsICk7CiAgICAgfQogICAg
IAogICAgIGdldCBpc05hdGl2ZSgpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUGFyc2UuanMKaW5kZXggZTQwZjNiYzYzZGYwODcwZDU1Njc2NzFjZTZkYWJhZWQ2
MmJkMGEzZC4uOWUxNjI1ZDQ4Mjg5ZWU1N2Y4YzVhYmVkZjYyNThkMjQzZTBhNTFkNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTE4MywxMCArMTgzLDEwIEBAIGZ1
bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICAgICAgICAgICAgICBsZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IDMyLWJpdCB1
bnNpZ25lZCBpbnRlZ2VyIik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRv
a2VuLCB1aW50VmVyc2lvbik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29u
c3VtZUtpbmQoImRvdWJsZUxpdGVyYWwiKSkgewotICAgICAgICAgICAgdG9rZW4gPSBjb25zdW1l
S2luZCgiZG91YmxlTGl0ZXJhbCIpOworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2lu
ZCgiZG91YmxlTGl0ZXJhbCIpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGVMaXRlcmFs
KHRva2VuLCArdG9rZW4udGV4dCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuID0gdHJ5
Q29uc3VtZUtpbmQoImJvb2xMaXRlcmFsIikpCisgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xM
aXRlcmFsKHRva2VuLCB0b2tlbi50ZXh0ID09ICJ0cnVlIik7CiAgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHN1cHBvcnQgZm9yIGZsb2F0IGxpdGVyYWxzIGFuZCBwcm9iYWJseSBvdGhlciBsaXRlcmFs
cyB0b28uCiAgICAgICAgIGNvbnN1bWUoIigiKTsKICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNl
RXhwcmVzc2lvbigpOwpAQCAtMjk2LDMwICsyOTYsNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBuZXcgVHlw
ZURlZihvcmlnaW4sIG5hbWUsIHR5cGVQYXJhbWV0ZXJzLCB0eXBlKTsKICAgICB9CiAgICAgCi0g
ICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQotICAgIHsKLSAgICAgICAgbGV0IG9yaWdpbiA9IGNv
bnN1bWUoIm5hdGl2ZSIpOwotICAgICAgICBsZXQgaXNUeXBlID0gbGV4ZXIuYmFja3RyYWNraW5n
U2NvcGUoKCkgPT4gewotICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoInR5cGVkZWYiKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gIm5vcm1hbCI7Ci0gICAgICAgICAgICBjb25zdW1lKCJwcmlt
aXRpdmUiKTsKLSAgICAgICAgICAgIGNvbnN1bWUoInR5cGVkZWYiKTsKLSAgICAgICAgICAgIHJl
dHVybiAicHJpbWl0aXZlIjsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChpc1R5cGUpIHsKLSAg
ICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAg
ICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVycygpOwotICAgICAgICAgICAg
Y29uc3VtZSgiOyIpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwg
bmFtZS50ZXh0LCBpc1R5cGUgPT0gInByaW1pdGl2ZSIsIHBhcmFtZXRlcnMpOwotICAgICAgICB9
Ci0gICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgIGxldCBuYW1l
ID0gcGFyc2VGdW5jTmFtZSgpOwotICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5
cGVQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJz
KCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5j
KG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpOwot
ICAgIH0KLSAgICAKICAgICBmdW5jdGlvbiBnZW5lcmljUGFyc2VMZWZ0KHRleHRzLCBuZXh0UGFy
c2VyLCBjb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGxldCBsZWZ0ID0gbmV4dFBhcnNlcigp
OwpAQCAtMzk2LDcgKzM3Miw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJlZml4KCkK
ICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3Vt
ZSgiKysiLCAiLS0iLCAiKyIsICItIiwgIiEiLCAifiIpKQorICAgICAgICBpZiAodG9rZW4gPSB0
cnlDb25zdW1lKCIrKyIsICItLSIsICIrIiwgIi0iLCAifiIpKQogICAgICAgICAgICAgcmV0dXJu
IG5ldyBDYWxsQXNzaWdubWVudCh0b2tlbiwgIm9wZXJhdG9yIiArIHRva2VuLnRleHQsIHBhcnNl
UG9zc2libGVQcmVmaXgoKSk7CiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIl4iKSkK
ICAgICAgICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJz
ZVBvc3NpYmxlUHJlZml4KCkpOwpAQCAtNDA0LDYgKzM4MCw4IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVy
biBuZXcgTWFrZVB0ckV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7CiAg
ICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIkAiKSkKICAgICAgICAgICAgIHJldHVybiBu
ZXcgTWFrZUFycmF5UmVmRXhwcmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVByZWZpeCgpKTsK
KyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiISIpKQorICAgICAgICAgICAgcmV0dXJu
IG5ldyBMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uKHRva2VuLCBDYWxsRXhwcmVzc2lvbih0b2tl
biwgIm9wZXJhdG9yIGJvb2wiLCBbXSwgW3BhcnNlUG9zc2libGVQcmVmaXgoKV0pKTsKICAgICAg
ICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKICAgICB9CiAgICAgCkBAIC00MzQsNyAr
NDEyLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICAgICAgKHRva2VuLCBsZWZ0LCByaWdodCkgPT4gewogICAgICAgICAg
ICAgICAgIGxldCByZXN1bHQgPSBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvcj09
IiwgW10sIFtsZWZ0LCByaWdodF0pOwogICAgICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09
ICIhPSIpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBDYWxsRXhwcmVzc2lvbih0
b2tlbiwgIm9wZXJhdG9yISIsIFtdLCBbcmVzdWx0XSk7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG5ldyBMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uKHRva2VuLCByZXN1bHQpOwogICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC02
MjksMzIgKzYwNyw2NSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jTmFtZSgpCiAgICAgewogICAg
ICAgICBpZiAodHJ5Q29uc3VtZSgib3BlcmF0b3IiKSkgewotICAgICAgICAgICAgbGV0IHRva2Vu
ID0gY29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwgIl4iLCAiJiIsICJ8IiwgIjwiLCAi
PiIsICI8PSIsICI+PSIsICIhIiwgIj09IiwgIisrIiwgIi0tIiwgIiYiKTsKLSAgICAgICAgICAg
IGlmICh0b2tlbi50ZXh0ICE9ICImIiB8fCAhdHJ5Q29uc3VtZSgiWyIpKQotICAgICAgICAgICAg
ICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4dDsKLSAgICAgICAgICAgIGNvbnN1bWUo
Il0iKTsKLSAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImW10iOworICAgICAgICAgICAgbGV0
IHRva2VuID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwgIl4iLCAiJiIsICJ8
IiwgIjwiLCAiPiIsICI8PSIsICI+PSIsICI9PSIsICIrKyIsICItLSIsICImIik7CisgICAgICAg
ICAgICBpZiAodG9rZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCAhPSAiJiIg
fHwgIXRyeUNvbnN1bWUoIlsiKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRv
ciIgKyB0b2tlbi50ZXh0OworICAgICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIHJldHVy
biAib3BlcmF0b3IgIiArIG5hbWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNvbnN1bWVL
aW5kKCJpZGVudGlmaWVyIikudGV4dDsKICAgICB9Ci0gICAgCi0gICAgZnVuY3Rpb24gcGFyc2VQ
cm90b2NvbEZ1bmNEZWNsKCkKKworICAgIGZ1bmN0aW9uIHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFs
dWVzKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYzMTYgQ29ycmVjdGx5
IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBjYXN0aW5nIG9wZXJhdG9ycyBhbmQgY29t
cGxleCB0eXBlcworICAgICAgICBsZXQgY2FzdFR5cGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmll
ciIpLnRleHQ7CisgICAgICAgIHJlc3VsdC5yZXR1cm5UeXBlID0gbmV3IFR5cGVSZWYobmFtZSwg
Y2FzdFR5cGUsIFtdKTsKKyAgICAgICAgcmVzdWx0Lm5hbWUgPSAib3BlcmF0b3IgIiArIGNhc3RU
eXBlOworICAgICAgICByZXN1bHQuaXNDYXN0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZU5vbk9wZXJhdG9yRnVuY0RlZlZhbHVlcygp
CiAgICAgewotICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwotICAgICAgICBs
ZXQgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHt9OworICAg
ICAgICByZXN1bHQucmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICByZXN1bHQubmFt
ZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgcmVzdWx0LmlzQ2FzdCA9IGZhbHNlOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlR2VuZXJpY0Z1
bmNEZWZWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIm9wZXJhdG9yIikp
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VPcGVyYXRvckZ1bmNEZWZWYWx1ZXMoKTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcGFyc2VGdW5jRGVjbCgpCisgICAgeworICAgICAgICBsZXQgdmFsdWVzID0gcGFy
c2VHZW5lcmljRnVuY0RlZlZhbHVlcygpOwogICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBw
YXJzZVR5cGVQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJh
bWV0ZXJzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvdG9jb2xGdW5jRGVjbChyZXR1cm5UeXBl
Lm9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpOwor
ICAgICAgICByZXR1cm4gbmV3IEZ1bmModmFsdWVzLm9yaWdpbiwgdmFsdWVzLm5hbWUsIHZhbHVl
cy5yZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgdmFsdWVzLmlzQ2FzdCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKKyAgICB7Cisg
ICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOworICAgICAgICByZXR1cm4gbmV3IFBy
b3RvY29sRnVuY0RlY2woZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBm
dW5jLnR5cGVQYXJhbWV0ZXJzLCBmdW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0KTsKICAgICB9
CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVmKCkKICAgICB7Ci0gICAgICAgIGxldCBy
ZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgIGxldCBuYW1lID0gcGFyc2VGdW5jTmFt
ZSgpOwotICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7
Ci0gICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7CisgICAgICAgIGxl
dCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2so
KTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKHJldHVyblR5cGUub3JpZ2luLCBuYW1lLCBy
ZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycywgYm9keSk7CisgICAgICAgIHJl
dHVybiBuZXcgRnVuY0RlZihmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUs
IGZ1bmMudHlwZVBhcmFtZXRlcnMsIGZ1bmMucGFyYW1ldGVycywgYm9keSwgZnVuYy5pc0Nhc3Qp
OwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVByb3RvY29sRGVjbCgpCkBAIC02OTIs
NiArNzAzLDI3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgZnVu
Y3Rpb24gcGFyc2VOYXRpdmUoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUo
Im5hdGl2ZSIpOworICAgICAgICBsZXQgaXNUeXBlID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUo
KCkgPT4geworICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoInR5cGVkZWYiKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIm5vcm1hbCI7CisgICAgICAgICAgICBjb25zdW1lKCJwcmltaXRpdmUi
KTsKKyAgICAgICAgICAgIGNvbnN1bWUoInR5cGVkZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAi
cHJpbWl0aXZlIjsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChpc1R5cGUpIHsKKyAgICAgICAg
ICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIGxl
dCBwYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVycygpOworICAgICAgICAgICAgY29uc3Vt
ZSgiOyIpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZS50
ZXh0LCBpc1R5cGUgPT0gInByaW1pdGl2ZSIsIHBhcmFtZXRlcnMpOworICAgICAgICB9CisgICAg
ICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOworICAgICAgICBjb25zdW1lKCI7Iik7Cisg
ICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5j
LnJldHVyblR5cGUsIGZ1bmMudHlwZVBhcmFtZXRlcnMsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5p
c0Nhc3QpOworICAgIH0KKyAgICAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGxldCB0b2tlbiA9
IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCF0b2tlbikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggYTU1YTM3Njk1NjE0NTcwNmY5MTg2ZDc3MzYxODY1
N2Y4N2QzMDczMy4uZTBkYjllYTU3MTFhMmUxMTNmMzZkYjI2ZjA5MDA4ZGU0MDRlODJmYiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTIwNyw2ICsyMDcs
MTEgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQorCisgICAgdmlzaXRCb29sTGl0ZXJhbChub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5v
ZGU7CisgICAgfQogICAgIAogICAgIHZpc2l0TnVsbExpdGVyYWwobm9kZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXgg
MWJjMDhhNzlkYTU3MTc4MTFkOGQxYWUxOGY2ZGY4M2E3MjgwN2FjNS4uNWQ4YjM2OWRjODljNjEy
YTM1NzNmMjYxNjVmYzc1YmM1NzJkMDUyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMzUsNiArMzUsNyBAQCBuYXRpdmUgcHJp
bWl0aXZlIHR5cGVkZWYgdm9pZDsKIAogbmF0aXZlIHByaW1pdGl2ZSB0eXBlZGVmIGludDMyOwog
bmF0aXZlIHByaW1pdGl2ZSB0eXBlZGVmIHVpbnQzMjsKK25hdGl2ZSBwcmltaXRpdmUgdHlwZWRl
ZiBib29sOwogdHlwZWRlZiBpbnQgPSBpbnQzMjsKIHR5cGVkZWYgdWludCA9IHVpbnQzMjsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IGUyMDQwYzBmODg1Yzg2
ZWNkYTM4N2NiZTAxN2Q1MDY5MDRhZjY0ODMuLmVlZmU4OTZhYjI5YWYzNjc0OGVmMGE3ZTFhYjhk
Mzg1ODlmYmFmMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAg
LTEzLDE2ICsxMywxOSBAQAogPHNjcmlwdCBzcmM9IkFycmF5VHlwZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQmxvY2su
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJDYWxsQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2Fs
bEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkNoZWNrTGl0ZXJhbFR5cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JldHVy
bnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJDb21tYUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNvbnN0ZXhwclR5
cGVQYXJhbWV0ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkRlcmVmZXJlbmNlRXhwcmVz
c2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iRUFycmF5UmVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJF
QnVmZmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyQnVpbGRlci5qcyI+PC9z
Y3JpcHQ+CkBAIC00Miw2ICs0NSw4IEBACiA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ikxl
eGVyVG9rZW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTWFrZVB0ckV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ik5hbWVDb250ZXh0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYW1l
UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgpAQCAtNTEsNiArNTYsNyBAQAogPHNjcmlwdCBzcmM9Ik5h
dGl2ZVR5cGVJbnN0YW5jZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTnVsbExpdGVyYWwu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik51bGxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJQYXJzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJlcGFyZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CkBAIC02Niw2ICs3Miw3IEBA
CiA8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
UmV0dXJuRXhjZXB0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJh
cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlN1YnN0aXR1dGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3VmZml4Q2FsbEFz
c2lnbm1lbnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMK
aW5kZXggNGNlM2ZlMjc2Mjk4MjZmZDE5OWRlNjcyZGRhMjUyYTg1Y2Y5N2MxYi4uODBiNDE2YTEx
MTBiZjhhZDMwOGU1YzIyYWVjN2QxN2ZhMzQ1OTQ2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzCkBAIC01Nyw2ICs1NywxMSBAQCBmdW5jdGlvbiBtYWtlSW50KHByb2dyYW0s
IHZhbHVlKQogICAgIHJldHVybiBUeXBlZFZhbHVlLmJveChwcm9ncmFtLmludHJpbnNpY3MuaW50
MzIsIHZhbHVlKTsKIH0KIAorZnVuY3Rpb24gbWFrZUJvb2wocHJvZ3JhbSwgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIFR5cGVkVmFsdWUuYm94KHByb2dyYW0uaW50cmluc2ljcy5ib29sLCB2YWx1ZSk7
Cit9CisKIGZ1bmN0aW9uIGNoZWNrSW50KHByb2dyYW0sIHJlc3VsdCwgZXhwZWN0ZWQpCiB7CiAg
ICAgaWYgKCFyZXN1bHQudHlwZS5lcXVhbHMocHJvZ3JhbS5pbnRyaW5zaWNzLmludDMyKSkKQEAg
LTY0LDYgKzY5LDE1IEBAIGZ1bmN0aW9uIGNoZWNrSW50KHByb2dyYW0sIHJlc3VsdCwgZXhwZWN0
ZWQpCiAgICAgaWYgKHJlc3VsdC52YWx1ZSAhPSBleHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1bHQgKyAiIChleHBlY3RlZCAiICsgZXhwZWN0
ZWQgKyAiKSIpOwogfQorCitmdW5jdGlvbiBjaGVja0Jvb2wocHJvZ3JhbSwgcmVzdWx0LCBleHBl
Y3RlZCkKK3sKKyAgICBpZiAoIXJlc3VsdC50eXBlLmVxdWFscyhwcm9ncmFtLmludHJpbnNpY3Mu
Ym9vbCkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiV3JvbmcgcmVzdWx0IHR5cGU7IHJlc3Vs
dDogIiArIHJlc3VsdCk7CisgICAgaWYgKHJlc3VsdC52YWx1ZSAhPSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1bHQgKyAiIChleHBlY3Rl
ZCAiICsgZXhwZWN0ZWQgKyAiKSIpOworfQorCiBmdW5jdGlvbiBjaGVja0xleGVyVG9rZW4ocmVz
dWx0LCBleHBlY3RlZEluZGV4LCBleHBlY3RlZEtpbmQsIGV4cGVjdGVkVGV4dCkKIHsKICAgICBp
ZiAocmVzdWx0Ll9pbmRleCAhPSBleHBlY3RlZEluZGV4KQpAQCAtODgsNiArMTAyLDExIEBAIGZ1
bmN0aW9uIGNoZWNrRmFpbChjYWxsYmFjaywgcHJlZGljYXRlKQogICAgIH0KIH0KIAorZnVuY3Rp
b24gVEVTVF9zaW1wbGVCb29sKCkgeworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZv
bygpIHsgcmV0dXJuIHRydWU7IH0iKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW10pLCB0cnVlKTsKK30KKwogZnVuY3Rpb24gVEVTVF9h
ZGQxKCkgewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJpbnQgZm9vKGludCB4KSB7IHJldHVy
biB4ICsgMTsgfSIpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDQyKV0pLCA0Myk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMKaW5kZXggMWRhMTVmZDYy
OTVjNTdjMzZlZDgwNmFkMmEyMTlmM2YwNmQzMzZhMS4uMmQyMGRlOTU5MDM3YjY3ZGZjZWZhOTQw
OGUwNWFhOTc4ZmI1MjE5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVHlwZURlZlJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1R5cGVEZWZSZXNvbHZlci5qcwpAQCAtMzAsNiArMzAsMTUgQEAgY2xhc3MgVHlwZURlZlJlc29s
dmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Zp
c2l0aW5nID0gbmV3IFZpc2l0aW5nU2V0KCk7CiAgICAgfQorCisgICAgdmlzaXRGdW5jRGVmKG5v
ZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc0Nhc3QgJiYgbm9kZS5yZXR1cm5UeXBlLnR5
cGUgaW5zdGFuY2VvZiBUeXBlRGVmKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRo
ZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVz
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhc3Rpbmcgb3BlcmF0b3JzIGRvbid0IHdv
cmsgd2l0aCB0eXBlZGVmcy4iKTsKKyAgICAgICAgfQorICAgICAgICBzdXBlci52aXNpdEZ1bmNE
ZWYobm9kZSk7CisgICAgfQogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IGFiMzE5OWFmZjBkNTAy
ZDMzYWUzYWM5MGJhN2RmOGYxNGIwMjRjN2EuLjJlMTgxZDE5NmY1Njg0ZjIwN2YwZDNiZjA2ZDRj
MzZlZmM2NWMxYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zp
c2l0b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpA
QCAtMjI2LDYgKzIyNiwxMCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAgICAgbm9kZS50eXBlLnZp
c2l0KHRoaXMpOwogICAgIH0KICAgICAKKyAgICB2aXNpdEJvb2xMaXRlcmFsKG5vZGUpCisgICAg
eworICAgIH0KKyAgICAKICAgICB2aXNpdE51bGxUeXBlKG5vZGUpCiAgICAgewogICAgICAgICBp
ZiAobm9kZS50eXBlKQpAQCAtMjQ0LDYgKzI0OCwxMSBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAg
ICAgICAgICAgICBhcmd1bWVudC52aXNpdCh0aGlzKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IHZpc2l0TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgbm9k
ZS5vcGVyYW5kLnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmN0aW9uTGlr
ZUJsb2NrKG5vZGUpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319858</attachid>
            <date>2017-09-04 12:17:01 -0700</date>
            <delta_ts>2017-09-04 13:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176285-20170904121700.patch</filename>
            <type>text/plain</type>
            <size>40028</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTg5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTgxNDY3NmFlMjRkZmIyZjA2ZWJiNzQ1OTBjY2FmODQw
OGU0NjI2MC4uNjZiODNjMzQ2YzQ4ZTJiYmFkZGU5NGYxOThkODE1MGIyZTI3ZmVjMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1
IEBACisyMDE3LTA5LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgV1NMIHNob3VsZCBzdXBwb3J0IHRoZSBib29sIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcnkgc2ltaWxhciB0byB0aGUg
aW50IGFuZCB1aW50IHR5cGVzLiBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvciBhIGxv
Z2ljYWwgbmVnYXRpb24gZXhwcmVzc2lvbiAiIXgiLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
cmV2ZXJ0cyB0aGUgYWJpbGl0eSBvZiB0aGUgcHJvZ3JhbSBhdXRob3IgdG8gY3JlYXRlIHRoZWly
IG93biAib3BlcmF0b3IhKCkiLCBhbmQgaW5zdGVhZAorICAgICAgICBhZGRzIHRoZSBhYmlsaXR5
IG9mIHRoZSBwcm9ncmFtIGF1dGhvciB0byBjcmVhdGUgdGhlaXIgb3duICJvcGVyYXRvciBib29s
KCkiLiBUaGUgY29kZSBpcyBnZW5lcmljLCBzbworICAgICAgICBwcm9ncmFtbWVycyBjYW4gbWFr
ZSB0d28gYXJiaXRyYXJ5IHR5cGVzIEZvbyBhbmQgQmFyLCBhbmQgaW1wbGVtZW50IGEgIm9wZXJh
dG9yIEJhcihGb28pLiIgVGhlIGxvZ2ljYWwKKyAgICAgICAgbmVnYXRpb24gZXhwcmVzc2lvbiBp
cyBhIGJ1aWx0LWluLCBhbmQgcmVxdWlyZXMgaXRzIGFyZ3VtZW50IGJlIGEgYm9vbC4KKworICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcy4KKyAgICAgICAgKEJvb2xMaXRlcmFsKToK
KyAgICAgICAgKEJvb2xMaXRlcmFsLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoQm9v
bExpdGVyYWwucHJvdG90eXBlLmdldCBpc0NvbnN0ZXhwcik6CisgICAgICAgIChCb29sTGl0ZXJh
bC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NoZWNrZXIuanM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9y
LmpzOgorICAgICAgICAoRXZhbHVhdG9yLnByb3RvdHlwZS52aXNpdEJvb2xMaXRlcmFsKToKKyAg
ICAgICAgKEV2YWx1YXRvci5wcm90b3R5cGUudmlzaXRMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9u
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgorICAgICAgICAo
RnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgaXNDYXN0KToKKyAgICAgICAgKEZ1
bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgorICAgICAgICAoRnVuY0RlZi5w
cm90b3R5cGUuZ2V0IGJvZHkpOgorICAgICAgICAoRnVuY0RlZi5wcm90b3R5cGUucmV3cml0ZSk6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAgICAg
ICAgKEludHJpbnNpY3MpOgorICAgICAgICAoSW50cmluc2ljcy5wcm90b3R5cGUuYWRkKToKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoKKyAgICAgICAgKExleGVy
LnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9Mb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uLmpzOiBDb3BpZWQgZnJvbSBU
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzLgorICAgICAgICAoTG9n
aWNhbE5lZ2F0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChMb2dpY2FsTmVnYXRpb25FeHByZXNz
aW9uLnByb3RvdHlwZS5nZXQgb3BlcmFuZCk6CisgICAgICAgIChMb2dpY2FsTmVnYXRpb25FeHBy
ZXNzaW9uLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTmF0aXZlRnVuYy5qczoKKyAgICAgICAgKE5hdGl2ZUZ1bmMpOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VUZXJtKToKKyAg
ICAgICAgKHBhcnNlUG9zc2libGVQcmVmaXgpOgorICAgICAgICAocGFyc2VQb3NzaWJsZVJlbGF0
aW9uYWxFcXVhbGl0eSk6CisgICAgICAgIChwYXJzZUZ1bmNOYW1lKToKKyAgICAgICAgKHBhcnNl
T3BlcmF0b3JGdW5jRGVmVmFsdWVzKToKKyAgICAgICAgKHBhcnNlTm9uT3BlcmF0b3JGdW5jRGVm
VmFsdWVzKToKKyAgICAgICAgKHBhcnNlR2VuZXJpY0Z1bmNEZWZWYWx1ZXMpOgorICAgICAgICAo
cGFyc2VGdW5jRGVjbCk6CisgICAgICAgIChwYXJzZVByb3RvY29sRnVuY0RlY2wpOgorICAgICAg
ICAocGFyc2VGdW5jRGVmKToKKyAgICAgICAgKHBhcnNlTmF0aXZlKToKKyAgICAgICAgKHBhcnNl
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAg
ICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEJvb2xMaXRlcmFsKToKKyAgICAgICAgKFJld3Jp
dGVyLnByb3RvdHlwZS52aXNpdExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAo
UmV3cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGli
cmFyeS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAgKG1ha2VV
SW50KToKKyAgICAgICAgKG1ha2VCb29sKToKKyAgICAgICAgKGNoZWNrVUludCk6CisgICAgICAg
IChjaGVja0Jvb2wpOgorICAgICAgICAoVEVTVF9saXRlcmFsQm9vbCk6CisgICAgICAgIChURVNU
X2lkZW50aXR5Qm9vbCk6CisgICAgICAgIChURVNUX2ludFNpbXBsZU1hdGgpOgorICAgICAgICAo
VEVTVF91aW50U2ltcGxlTWF0aCk6CisgICAgICAgIChURVNUX2VxdWFsaXR5KToKKyAgICAgICAg
KFRFU1RfbG9naWNhbE5lZ2F0aW9uKToKKyAgICAgICAgKFRFU1Rfbm90RXF1YWxpdHkpOgorICAg
ICAgICAoVEVTVF9lcXVhbGl0eVR5cGVGYWlsdXJlKToKKyAgICAgICAgKFRFU1RfYWRkMSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVy
LmpzOgorICAgICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanM6CisgICAgICAgIChW
aXNpdG9yLnByb3RvdHlwZS52aXNpdEJvb2xMaXRlcmFsKToKKyAgICAgICAgKFZpc2l0b3IucHJv
dG90eXBlLnZpc2l0TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbik6CisKIDIwMTctMDktMDMgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMjAw
NTIpOiBbU2llcnJhXSBBUEkgdGVzdCBWaWRlb0NvbnRyb2xzTWFuYWdlci5WaWRlb0NvbnRyb2xz
TWFuYWdlckZ1bGxTaXplVmlkZW9JbldpZGVNYWluRnJhbWUgaXMgYSBmbGFreSBmYWlsdXJlCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggYjFiYWM5NDcxNDhiNGY1ZmFmYjE0
NzZjNWRjNTJkMWUwNGYxY2VkNC4uZDRhNTQ1MzdmZDM1MDIzYmUzNzJlMTE0MjU2YTA5N2ZiNjFm
MGZiYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtMzcsNiArMzcsNyBA
QCBsb2FkKCJBcnJheVJlZlR5cGUuanMiKTsKIGxvYWQoIkFycmF5VHlwZS5qcyIpOwogbG9hZCgi
QXNzaWdubWVudC5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsKK2xvYWQoIkJvb2xMaXRlcmFsLmpz
Iik7CiBsb2FkKCJDYWxsQXNzaWdubWVudC5qcyIpOwogbG9hZCgiQ2FsbEV4cHJlc3Npb24uanMi
KTsKIGxvYWQoIkNhbGxGdW5jdGlvbi5qcyIpOwpAQCAtNjksNiArNzAsNyBAQCBsb2FkKCJJbnRy
aW5zaWNzLmpzIik7CiBsb2FkKCJMZXhlci5qcyIpOwogbG9hZCgiTGV4ZXJUb2tlbi5qcyIpOwog
bG9hZCgiTGl0ZXJhbFR5cGVDaGVja2VyLmpzIik7Citsb2FkKCJMb2dpY2FsTmVnYXRpb25FeHBy
ZXNzaW9uLmpzIik7CiBsb2FkKCJNYWtlUHRyRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiTmFtZUNv
bnRleHQuanMiKTsKIGxvYWQoIk5hbWVSZXNvbHZlci5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQm9vbExpdGVyYWwuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9Cb29sTGl0ZXJhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTFhZDk4MDk4MTQ4NDNl
OGZhNWIxZDhhZmNjYzdmNzEwNThjYjVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQm9vbExpdGVyYWwuanMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitj
bGFzcyBCb29sTGl0ZXJhbCBleHRlbmRzIEV4cHJlc3Npb24geworICAgIGNvbnN0cnVjdG9yKG9y
aWdpbiwgdmFsdWUpCisgICAgeworICAgICAgICBzdXBlcihvcmlnaW4pOworICAgICAgICB0aGlz
Ll92YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICAKKyAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0
aGlzLl92YWx1ZTsgfQorICAgIGdldCBpc0NvbnN0ZXhwcigpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gIiIgKyB0aGlzLl92YWx1
ZTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmlu
ZGV4IDI0ZjczMTU0YzExZGQwOTc1ZjRmMjlkNGRjMmRhNDY1NTAyMGNjNGEuLmJlOTUxOGEyZTY1
NjNmNzdkZGRmYzZlZjQ3NTVhOTJjN2I0MzFkNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjE1LDYgKzIxNSwyMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7CiAgICAgfQogICAgIAorICAg
IHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9n
cmFtLmludHJpbnNpY3MuYm9vbDsKKyAgICB9CisKKyAgICB2aXNpdExvZ2ljYWxOZWdhdGlvbkV4
cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHRUeXBlID0gbm9kZS5vcGVy
YW5kLnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoIXJlc3VsdFR5cGUpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0byBuZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTog
IiArIG5vZGUudmFsdWUpOworICAgICAgICBpZiAoIXJlc3VsdFR5cGUuZXF1YWxzKHRoaXMuX3By
b2dyYW0uaW50cmluc2ljcy5ib29sKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJ5
aW5nIHRvIG5lZ2F0ZSBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGJvb2w6ICIgKyBub2RlLnZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy5ib29sOworICAgIH0K
KyAgICAKICAgICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0
IHJlc3VsdCA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9FdmFsdWF0b3IuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3Iu
anMKaW5kZXggNzM4YmQ5ZWUzYmEzZDlhNTQzOWQwOTc0OWIzMGMxNzRhN2FkM2MzNS4uYzY4M2Zm
Mjk2MmE2ODRhODYwZTUxNTcyNmVlM2ZkZDAxOWZmOTkyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcwpAQCAtMTQxLDYgKzE0MSwxNiBAQCBjbGFzcyBFdmFs
dWF0b3IgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgcmV0dXJuIEVQdHIuYm94KG51bGwpOwog
ICAgIH0KICAgICAKKyAgICB2aXNpdEJvb2xMaXRlcmFsKG5vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gRVB0ci5ib3gobm9kZS52YWx1ZSk7CisgICAgfQorCisgICAgdmlzaXRMb2dpY2FsTmVn
YXRpb25FeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gRVB0ci5ib3goIW5v
ZGUub3BlcmFuZC52aXNpdCh0aGlzKS5sb2FkVmFsdWUoKSk7CisgICAgfQorICAgIAogICAgIHZp
c2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIC8vIFdlIGV2YWx1YXRlIGlu
bGluZWQgQVNUcywgc28gdGhpcyBjYW4gb25seSBiZSBhIG5hdGl2ZSBjYWxsLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNjEzZDNhODY0ZjBhZTY0ZjRkNTRiN2E4YjY3
Yzc4MjIzOTUzNDk1OC4uOGQyZmYyNDg0YTY0ZTg5NzYwMGVlZDg3YjQ3MDY0NWJiMDUwNmZmOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCkBAIC0yNSw3ICsyNSw3IEBACiAi
dXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzKQor
ICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMs
IHBhcmFtZXRlcnMsIGlzQ2FzdCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRo
aXMuX29yaWdpbiA9IG9yaWdpbjsKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgRnVuYyBleHRlbmRz
IE5vZGUgewogICAgICAgICB0aGlzLl9yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTsKICAgICAgICAg
dGhpcy5fdHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVyczsKICAgICAgICAgdGhpcy5fcGFy
YW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIHRoaXMuX2lzQ2FzdCA9IGlzQ2FzdDsKICAg
ICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQpAQCAt
NDEsMTIgKzQyLDEzIEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICBnZXQgdHlwZVBh
cmFtZXRlcnMoKSB7IHJldHVybiB0aGlzLl90eXBlUGFyYW1ldGVyczsgfQogICAgIGdldCBwYXJh
bWV0ZXJzKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1ldGVyczsgfQogICAgIGdldCBwYXJhbWV0ZXJU
eXBlcygpIHsgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRl
ci50eXBlKTsgfQorICAgIGdldCBpc0Nhc3QoKSB7IHJldHVybiB0aGlzLl9pc0Nhc3Q7IH0KICAg
ICAKICAgICBnZXQga2luZCgpIHsgcmV0dXJuIEZ1bmM7IH0KICAgICAKICAgICB0b0RlY2xTdHJp
bmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuVHlwZSArICIgIiArIHRoaXMu
bmFtZSArICI8IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJz
ICsgIikiOworICAgICAgICByZXR1cm4gKHRoaXMuaXNDYXN0ID8gIiIgOiB0aGlzLnJldHVyblR5
cGUgKyAiICIpICsgdGhpcy5uYW1lICsgIjwiICsgdGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIg
KyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CiAgICAgfQogICAgIAogICAgIHRvU3RyaW5nKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCmluZGV4IGJiNzZkY2VmYzg4MzQy
ZWQwMDFjNDI2YjdiYTJkMDVkNTE1MTRmM2IuLjdiZTM2NGQ0Y2IwZDE0OTBkM2QwODA0MTI4MjI4
YmIzZjFkMjNkYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1
bmNEZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcwpA
QCAtMjUsMTEgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNEZWYgZXh0ZW5k
cyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQ
YXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLCBib2R5KQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFt
ZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2FzdCkK
ICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFt
ZXRlcnMsIHBhcmFtZXRlcnMpOwotICAgICAgICB0aGlzLmJvZHkgPSBib2R5OworICAgICAgICBz
dXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJz
LCBpc0Nhc3QpOworICAgICAgICB0aGlzLl9ib2R5ID0gYm9keTsKICAgICB9CisKKyAgICBnZXQg
Ym9keSgpIHsgcmV0dXJuIHRoaXMuX2JvZHk7IH0KICAgICAKICAgICByZXdyaXRlKHJld3JpdGVy
KQogICAgIHsKQEAgLTM3LDcgKzM5LDcgQEAgY2xhc3MgRnVuY0RlZiBleHRlbmRzIEZ1bmMgewog
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmV3cml0ZSBhbiB1bmluc3RhbnRp
YXRlZCBmdW5jdGlvbiIpOwogICAgICAgICB0aGlzLl9yZXR1cm5UeXBlID0gdGhpcy5fcmV0dXJu
VHlwZS52aXNpdChyZXdyaXRlcik7CiAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSB0aGlzLl9w
YXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4gcGFyYW1ldGVyLnZpc2l0KHJld3JpdGVyKSk7Ci0g
ICAgICAgIHRoaXMuYm9keSA9IHRoaXMuYm9keS52aXNpdChyZXdyaXRlcik7CisgICAgICAgIHRo
aXMuX2JvZHkgPSB0aGlzLmJvZHkudmlzaXQocmV3cml0ZXIpOwogICAgIH0KICAgICAKICAgICB0
b1N0cmluZygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRy
aW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpp
bmRleCBjMGY1ZTQwM2M4NmRlYTU0YjNjZjhkYmNkYmZkZWI2YjRhOTRiMmIyLi43YmM5MDdkODYx
ZDRjYWVjZTlkYjlhYjlmYzFiY2FlYTI2NmY2Y2VhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTY5LDYgKzY5LDE0IEBAIGNsYXNzIEludHJpbnNp
Y3MgewogICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CiAgICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIDApOwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAg
ICAgICAgICAgICJuYXRpdmUgcHJpbWl0aXZlIHR5cGUgYm9vbDw+IiwKKyAgICAgICAgICAgIHR5
cGUgPT4geworICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7CisgICAgICAgICAgICAg
ICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZh
bHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOworICAg
ICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IrPD4oaW50LGludCkiLApAQCAtNzcsNiArODUsOTcgQEAg
Y2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0Lmxv
YWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIHVpbnQg
b3BlcmF0b3IrPD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAg
ICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAg
ICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVl
KCkpID4+PiAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFw
LnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yLTw+KGludCxpbnQpIiwKKyAg
ICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQu
bG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgdWlu
dCBvcGVyYXRvci08Pih1aW50LHVpbnQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFs
dWUoKSkgPj4+IDApOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9t
YXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IqPD4oaW50LGludCkiLAor
ICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVm
dC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRWYWx1ZSgpKSB8IDApOworICAgICAgICAgICAgfSk7
CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB1
aW50IG9wZXJhdG9yKjw+KHVpbnQsdWludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRW
YWx1ZSgpKSA+Pj4gMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMu
X21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvci88PihpbnQsaW50KSIs
CisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChs
ZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3IvPD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+Cisg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9h
ZFZhbHVlKCkpID4+PiAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09PD4oaW50LGlu
dCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgorICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUg
Ym9vbCBvcGVyYXRvcj09PD4odWludCx1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+Cisg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9h
ZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT08Pihib29sLGJvb2wpIiwK
KyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVm
dC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIG9wZXJh
dG9yIGludDw+KGludCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PgorICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisg
ICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQ8
Pih1aW50KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+CisgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KHZhbHVlLmxvYWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAg
dGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgYm9vbDw+KGJvb2wp
IiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW3ZhbHVlXSkgPT4KKyAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3godmFsdWUu
bG9hZFZhbHVlKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIAogICAgICAgICBsZXQgYXJy
YXlFbGVtZW50UHRyID0gZnVuYyA9PiB7CiAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtyZWYsIGluZGV4XSwgbm9kZSkgPT4gewogICAgICAgICAgICAgICAgIHJlZiA9IHJlZi5s
b2FkVmFsdWUoKTsKQEAgLTEwNyw3ICsyMDYsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICB7
CiAgICAgICAgIGxldCBpbnRyaW5zaWMgPSB0aGlzLl9tYXAuZ2V0KHRoaW5nLnRvU3RyaW5nKCkp
OwogICAgICAgICBpZiAoIWludHJpbnNpYykKLSAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJVbnJlY29nbml6ZWQgaW50cmluc2ljOiAi
ICsgdGhpbmcpOworICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcudG9TdHJp
bmcoKSwgIlVucmVjb2duaXplZCBpbnRyaW5zaWM6ICIgKyB0aGluZyk7CiAgICAgICAgIGludHJp
bnNpYyh0aGluZyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTGV4ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5q
cwppbmRleCAyNzYzMDcwZGU5NjVkYzM1NDRmOThhNGM2Mjk3YTBkMjQ0YWExY2U5Li4xYzVmMDBk
NTAzMWUxN2IwYTk2YjM1ODVkZjNkNzEwZTM4ZDBmY2Q2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9MZXhlci5qcwpAQCAtMTAzLDYgKzEwMywxMCBAQCBjbGFzcyBMZXhlciB7CiAgICAg
ICAgIAogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGRvIFVuaWNvZGUuCiAgICAgICAgIGlm
ICgvXlteXGRcV11cdyovLnRlc3QocmVsZXZhbnRUZXh0KSkgeworICAgICAgICAgICAgaWYgKGlz
QWRkcmVzc1NwYWNlKFJlZ0V4cC5sYXN0TWF0Y2gpKQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQoImFkZHJlc3Mgc3BhY2UiKTsKKyAgICAgICAgICAgIGlmIChbInRydWUiLCAiZmFsc2Ui
XS5pbmNsdWRlcyhSZWdFeHAubGFzdE1hdGNoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0KCJib29sTGl0ZXJhbCIpOwogICAgICAgICAgICAgaWYgKFsic3RydWN0IiwgInByb3RvY29s
IiwgInR5cGVkZWYiLCAiaWYiLCAiZWxzZSIsICJlbnVtIiwgImNvbnRpbnVlIiwgImJyZWFrIiwg
InN3aXRjaCIsICJjYXNlIiwgImRlZmF1bHQiLCAiZm9yIiwgIndoaWxlIiwgImRvIiwgInJldHVy
biIsICJzaXplb2YiLCAiY29uc3RhbnQiLCAiZGV2aWNlIiwgInRocmVhZGdyb3VwIiwgInRocmVh
ZCIsICJvcGVyYXRvciIsICJudWxsIl0uaW5jbHVkZXMoUmVnRXhwLmxhc3RNYXRjaCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCgia2V5d29yZCIpOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdCgiaWRlbnRpZmllciIpOwpAQCAtMTE4LDcgKzEyMiw3IEBAIGNsYXNzIExleGVyIHsK
ICAgICAgICAgaWYgKC9eKFswLTldKlwuWzAtOV0rKXwoWzAtOV0rXC5bMC05XSopLy50ZXN0KHJl
bGV2YW50VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJkb3VibGVMaXRlcmFsIik7
CiAgICAgICAgIAotICAgICAgICBpZiAoL14oW3t9KClcW1xdPzo9KypcLywuJSF+XiZ8PD5AOy1d
fC0+fD0+fDw9fD09fCE9fFwrPXwtPXxcKj18XC89fCU9fF49fFx8PXwmPSkvLnRlc3QocmVsZXZh
bnRUZXh0KSkKKyAgICAgICAgaWYgKC9eLT58PT58PD18PT18IT18XCs9fC09fFwqPXxcLz18JT18
Xj18XHw9fCY9fChbe30oKVxbXF0/Oj0rKlwvLC4lIX5eJnw8PkA7LV0pLy50ZXN0KHJlbGV2YW50
VGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0KCJwdW5jdHVhdGlvbiIpOwogICAgICAg
ICAKICAgICAgICAgbGV0IHJlbWFpbmluZyA9IHJlbGV2YW50VGV4dC5zdWJzdHJpbmcoMCwgMjAp
LnNwbGl0KC9ccy8pWzBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0xvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMwYmU3MGI4
ZTc1OWU5MjZiY2VhZTFmNDMxN2Q0NGNlYzE5MTRiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2ljYWxOZWdhdGlvbkV4cHJlc3Npb24uanMKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworInVzZSBzdHJpY3QiOworCitjbGFzcyBMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9uIGV4dGVu
ZHMgRXhwcmVzc2lvbiB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBvcGVyYW5kKQorICAgIHsK
KyAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgdGhpcy5fb3BlcmFuZCA9IG9wZXJhbmQ7
CisgICAgfQorICAgIAorICAgIGdldCBvcGVyYW5kKCkgeyByZXR1cm4gdGhpcy5fb3BlcmFuZDsg
fQorICAgIAorICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiISgiICsgdGhp
cy5vcGVyYW5kICsgIikiOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hdGl2ZUZ1bmMuanMKaW5kZXggMjNiMGI2MjNjMDhlMGRiZTRjNjNkYTUzMzk3MDNhYTNl
NmNkYTFiNS4uMDk2NGIxZTdmMzk5ZDY0MjEzNmYyOTNhOTllZTZkZTliN2NlNjBmMCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSw5
IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBw
YXJhbWV0ZXJzKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlw
ZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAg
c3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVy
cyk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRl
cnMsIHBhcmFtZXRlcnMsIGlzQ2FzdCk7CiAgICAgfQogICAgIAogICAgIGdldCBpc05hdGl2ZSgp
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5k
ZXggZTQwZjNiYzYzZGYwODcwZDU1Njc2NzFjZTZkYWJhZWQ2MmJkMGEzZC4uYjIyNWUwYmUyNzg1
NjRhM2JmZDBhYmIxNTBkYzVhMTQ2MzYzZjAxMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUGFyc2UuanMKQEAgLTE4MywxMCArMTgzLDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0s
IG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgICAgICBsZXhlci5m
YWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIik7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRva2VuLCB1aW50VmVyc2lvbik7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtpbmQoImRvdWJsZUxpdGVy
YWwiKSkgewotICAgICAgICAgICAgdG9rZW4gPSBjb25zdW1lS2luZCgiZG91YmxlTGl0ZXJhbCIp
OworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiZG91YmxlTGl0ZXJhbCIpKQog
ICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGVMaXRlcmFsKHRva2VuLCArdG9rZW4udGV4dCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtpbmQoImJvb2xMaXRl
cmFsIikpCisgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xMaXRlcmFsKHRva2VuLCB0b2tlbi50
ZXh0ID09ICJ0cnVlIik7CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBvcnQgZm9yIGZsb2F0
IGxpdGVyYWxzIGFuZCBwcm9iYWJseSBvdGhlciBsaXRlcmFscyB0b28uCiAgICAgICAgIGNvbnN1
bWUoIigiKTsKICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbigpOwpAQCAtMjk2
LDMwICsyOTYsNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiBuZXcgVHlwZURlZihvcmlnaW4sIG5hbWUsIHR5
cGVQYXJhbWV0ZXJzLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAgZnVuY3Rpb24gcGFyc2VOYXRp
dmUoKQotICAgIHsKLSAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoIm5hdGl2ZSIpOwotICAg
ICAgICBsZXQgaXNUeXBlID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewotICAgICAg
ICAgICAgaWYgKHRyeUNvbnN1bWUoInR5cGVkZWYiKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Im5vcm1hbCI7Ci0gICAgICAgICAgICBjb25zdW1lKCJwcmltaXRpdmUiKTsKLSAgICAgICAgICAg
IGNvbnN1bWUoInR5cGVkZWYiKTsKLSAgICAgICAgICAgIHJldHVybiAicHJpbWl0aXZlIjsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGlmIChpc1R5cGUpIHsKLSAgICAgICAgICAgIGxldCBuYW1lID0g
Y29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0g
cGFyc2VUeXBlUGFyYW1ldGVycygpOwotICAgICAgICAgICAgY29uc3VtZSgiOyIpOwotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZS50ZXh0LCBpc1R5cGUgPT0g
InByaW1pdGl2ZSIsIHBhcmFtZXRlcnMpOwotICAgICAgICB9Ci0gICAgICAgIGxldCByZXR1cm5U
eXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgIGxldCBuYW1lID0gcGFyc2VGdW5jTmFtZSgpOwot
ICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQYXJhbWV0ZXJzKCk7Ci0gICAg
ICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7Ci0gICAgICAgIGNvbnN1bWUo
IjsiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpOwotICAgIH0KLSAgICAKICAgICBmdW5j
dGlvbiBnZW5lcmljUGFyc2VMZWZ0KHRleHRzLCBuZXh0UGFyc2VyLCBjb25zdHJ1Y3RvcikKICAg
ICB7CiAgICAgICAgIGxldCBsZWZ0ID0gbmV4dFBhcnNlcigpOwpAQCAtMzk2LDcgKzM3Miw3IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJlZml4KCkKICAgICB7CiAgICAgICAgIGxldCB0
b2tlbjsKLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKysiLCAiLS0iLCAiKyIsICIt
IiwgIiEiLCAifiIpKQorICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrKyIsICItLSIs
ICIrIiwgIi0iLCAifiIpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsQXNzaWdubWVudCh0
b2tlbiwgIm9wZXJhdG9yIiArIHRva2VuLnRleHQsIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7CiAg
ICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIl4iKSkKICAgICAgICAgICAgIHJldHVybiBu
ZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwpA
QCAtNDA0LDYgKzM4MCw4IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZVB0ckV4cHJlc3Np
b24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7CiAgICAgICAgIGlmICh0b2tlbiA9IHRy
eUNvbnN1bWUoIkAiKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZUFycmF5UmVmRXhwcmVz
c2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVByZWZpeCgpKTsKKyAgICAgICAgaWYgKHRva2VuID0g
dHJ5Q29uc3VtZSgiISIpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2dpY2FsTmVnYXRpb25F
eHByZXNzaW9uKHRva2VuLCBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciBib29s
IiwgW10sIFtwYXJzZVBvc3NpYmxlUHJlZml4KCldKSk7CiAgICAgICAgIHJldHVybiBwYXJzZVBv
c3NpYmxlU3VmZml4KCk7CiAgICAgfQogICAgIApAQCAtNDM0LDcgKzQxMiw3IEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAg
ICAgICh0b2tlbiwgbGVmdCwgcmlnaHQpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3I9PSIsIFtdLCBbbGVmdCwgcmln
aHRdKTsKICAgICAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiIT0iKQotICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciEi
LCBbXSwgW3Jlc3VsdF0pOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgTG9naWNh
bE5lZ2F0aW9uRXhwcmVzc2lvbih0b2tlbiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgfSk7CiAgICAgfQpAQCAtNjI5LDMyICs2MDcsNjUgQEAg
ZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgIGZ1bmN0aW9uIHBhcnNlRnVuY05hbWUoKQogICAgIHsKICAgICAgICAgaWYgKHRyeUNvbnN1
bWUoIm9wZXJhdG9yIikpIHsKLSAgICAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1bWUoIisiLCAi
LSIsICIqIiwgIi8iLCAiJSIsICJeIiwgIiYiLCAifCIsICI8IiwgIj4iLCAiPD0iLCAiPj0iLCAi
ISIsICI9PSIsICIrKyIsICItLSIsICImIik7Ci0gICAgICAgICAgICBpZiAodG9rZW4udGV4dCAh
PSAiJiIgfHwgIXRyeUNvbnN1bWUoIlsiKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gIm9wZXJh
dG9yIiArIHRva2VuLnRleHQ7Ci0gICAgICAgICAgICBjb25zdW1lKCJdIik7Ci0gICAgICAgICAg
ICByZXR1cm4gIm9wZXJhdG9yJltdIjsKKyAgICAgICAgICAgIGxldCB0b2tlbiA9IHRyeUNvbnN1
bWUoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJeIiwgIiYiLCAifCIsICI8IiwgIj4iLCAiPD0i
LCAiPj0iLCAiPT0iLCAiKysiLCAiLS0iLCAiJiIpOworICAgICAgICAgICAgaWYgKHRva2VuKSB7
CisgICAgICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgIT0gIiYiIHx8ICF0cnlDb25zdW1lKCJb
IikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4dDsK
KyAgICAgICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgcmV0dXJuICJv
cGVyYXRvciZbXSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICByZXR1cm4gIm9wZXJhdG9yICIgKyBu
YW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjb25zdW1lS2luZCgiaWRlbnRpZmllciIp
LnRleHQ7CiAgICAgfQotICAgIAotICAgIGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2xGdW5jRGVjbCgp
CisKKyAgICBmdW5jdGlvbiBwYXJzZU9wZXJhdG9yRnVuY0RlZlZhbHVlcygpCisgICAgeworICAg
ICAgICBsZXQgcmVzdWx0ID0ge307CisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MzE2IENvcnJlY3RseSBoYW5kbGUgdGhlIGludGVy
YWN0aW9uIGJldHdlZW4gY2FzdGluZyBvcGVyYXRvcnMgYW5kIGNvbXBsZXggdHlwZXMKKyAgICAg
ICAgbGV0IGNhc3RUeXBlID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OworICAgICAg
ICByZXN1bHQucmV0dXJuVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsIGNhc3RUeXBlLCBbXSk7Cisg
ICAgICAgIHJlc3VsdC5uYW1lID0gIm9wZXJhdG9yICIgKyBjYXN0VHlwZTsKKyAgICAgICAgcmVz
dWx0LmlzQ2FzdCA9IHRydWU7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcGFyc2VOb25PcGVyYXRvckZ1bmNEZWZWYWx1ZXMoKQogICAgIHsKLSAgICAgICAg
bGV0IHJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgbGV0IG5hbWUgPSBwYXJzZUZ1
bmNOYW1lKCk7CisgICAgICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0LnJldHVy
blR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgcmVzdWx0Lm5hbWUgPSBwYXJzZUZ1bmNOYW1l
KCk7CisgICAgICAgIHJlc3VsdC5pc0Nhc3QgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZUdlbmVyaWNGdW5jRGVmVmFsdWVzKCkKKyAg
ICB7CisgICAgICAgIGlmICh0cnlDb25zdW1lKCJvcGVyYXRvciIpKQorICAgICAgICAgICAgcmV0
dXJuIHBhcnNlT3BlcmF0b3JGdW5jRGVmVmFsdWVzKCk7CisgICAgICAgIHJldHVybiBwYXJzZU5v
bk9wZXJhdG9yRnVuY0RlZlZhbHVlcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlRnVu
Y0RlY2woKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlcyA9IHBhcnNlR2VuZXJpY0Z1bmNEZWZW
YWx1ZXMoKTsKICAgICAgICAgbGV0IHR5cGVQYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVy
cygpOwogICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHBhcnNlUGFyYW1ldGVycygpOwotICAgICAg
ICByZXR1cm4gbmV3IFByb3RvY29sRnVuY0RlY2wocmV0dXJuVHlwZS5vcmlnaW4sIG5hbWUsIHJl
dHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG5l
dyBGdW5jKHZhbHVlcy5vcmlnaW4sIHZhbHVlcy5uYW1lLCB2YWx1ZXMucmV0dXJuVHlwZSwgdHlw
ZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIHZhbHVlcy5pc0Nhc3QpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHBhcnNlUHJvdG9jb2xGdW5jRGVjbCgpCisgICAgeworICAgICAgICBsZXQgZnVuYyA9
IHBhcnNlRnVuY0RlY2woKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm90b2NvbEZ1bmNEZWNsKGZ1
bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy50eXBlUGFyYW1ldGVy
cywgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0
aW9uIHBhcnNlRnVuY0RlZigpCiAgICAgewotICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IHBhcnNl
VHlwZSgpOwotICAgICAgICBsZXQgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKLSAgICAgICAgbGV0
IHR5cGVQYXJhbWV0ZXJzID0gcGFyc2VUeXBlUGFyYW1ldGVycygpOwotICAgICAgICBsZXQgcGFy
YW1ldGVycyA9IHBhcnNlUGFyYW1ldGVycygpOworICAgICAgICBsZXQgZnVuYyA9IHBhcnNlRnVu
Y0RlY2woKTsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZUJsb2NrKCk7Ci0gICAgICAgIHJldHVy
biBuZXcgRnVuY0RlZihyZXR1cm5UeXBlLm9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBh
cmFtZXRlcnMsIHBhcmFtZXRlcnMsIGJvZHkpOworICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYo
ZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnR5cGVQYXJhbWV0
ZXJzLCBmdW5jLnBhcmFtZXRlcnMsIGJvZHksIGZ1bmMuaXNDYXN0KTsKICAgICB9CiAgICAgCiAg
ICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbERlY2woKQpAQCAtNjkyLDYgKzcwMywyNyBAQCBmdW5j
dGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlTmF0aXZl
KCkKKyAgICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJuYXRpdmUiKTsKKyAgICAg
ICAgbGV0IGlzVHlwZSA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKKyAgICAgICAg
ICAgIGlmICh0cnlDb25zdW1lKCJ0eXBlZGVmIikpCisgICAgICAgICAgICAgICAgcmV0dXJuICJu
b3JtYWwiOworICAgICAgICAgICAgY29uc3VtZSgicHJpbWl0aXZlIik7CisgICAgICAgICAgICBj
b25zdW1lKCJ0eXBlZGVmIik7CisgICAgICAgICAgICByZXR1cm4gInByaW1pdGl2ZSI7CisgICAg
ICAgIH0pOworICAgICAgICBpZiAoaXNUeXBlKSB7CisgICAgICAgICAgICBsZXQgbmFtZSA9IGNv
bnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHBh
cnNlVHlwZVBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUudGV4dCwgaXNUeXBlID09ICJw
cmltaXRpdmUiLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgfQorICAgICAgICBsZXQgZnVuYyA9IHBh
cnNlRnVuY0RlY2woKTsKKyAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICByZXR1cm4gbmV3
IE5hdGl2ZUZ1bmMoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5j
LnR5cGVQYXJhbWV0ZXJzLCBmdW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0KTsKKyAgICB9Cisg
ICAgCiAgICAgZm9yICg7OykgewogICAgICAgICBsZXQgdG9rZW4gPSBsZXhlci5wZWVrKCk7CiAg
ICAgICAgIGlmICghdG9rZW4pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZXdyaXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVy
LmpzCmluZGV4IGE1NWEzNzY5NTYxNDU3MDZmOTE4NmQ3NzM2MTg2NTdmODdkMzA3MzMuLmVhMTA0
Yzk5MzkyZWQwNTZkNmU0ZWYwNDAxM2JlYWI1YjRlNDE1YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCkBAIC0yMDcsNiArMjA3LDExIEBAIGNsYXNzIFJld3Jp
dGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KKworICAgIHZpc2l0Qm9v
bExpdGVyYWwobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlOworICAgIH0KICAgICAK
ICAgICB2aXNpdE51bGxMaXRlcmFsKG5vZGUpCiAgICAgewpAQCAtMjQ5LDUgKzI1NCwxMCBAQCBj
bGFzcyBSZXdyaXRlciB7CiAgICAgICAgICAgICBub2RlLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRl
ciA9PiBwYXJhbWV0ZXIudmlzaXQodGhpcykpLAogICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0
KHRoaXMpKTsKICAgICB9CisgICAgCisgICAgdmlzaXRMb2dpY2FsTmVnYXRpb25FeHByZXNzaW9u
KG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOZWdhdGlvbkV4cHJlc3Np
b24obm9kZS5vcmlnaW4sIG5vZGUub3BlcmFuZC52aXNpdCh0aGlzKSk7CisgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnku
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKaW5k
ZXggMWJjMDhhNzlkYTU3MTc4MTFkOGQxYWUxOGY2ZGY4M2E3MjgwN2FjNS4uMmZlZjgwMzhlODE3
NWZiY2Q0MmE1YmQzZmNjMDk4ZDY1Njg4MmMxMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMzUsMTAgKzM1LDI1IEBAIG5hdGl2
ZSBwcmltaXRpdmUgdHlwZWRlZiB2b2lkOwogCiBuYXRpdmUgcHJpbWl0aXZlIHR5cGVkZWYgaW50
MzI7CiBuYXRpdmUgcHJpbWl0aXZlIHR5cGVkZWYgdWludDMyOworbmF0aXZlIHByaW1pdGl2ZSB0
eXBlZGVmIGJvb2w7CiB0eXBlZGVmIGludCA9IGludDMyOwogdHlwZWRlZiB1aW50ID0gdWludDMy
OwogCiBuYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsIGludCk7CituYXRpdmUgdWludCBvcGVyYXRv
cisodWludCwgdWludCk7CituYXRpdmUgaW50IG9wZXJhdG9yLShpbnQsIGludCk7CituYXRpdmUg
dWludCBvcGVyYXRvci0odWludCwgdWludCk7CituYXRpdmUgaW50IG9wZXJhdG9yKihpbnQsIGlu
dCk7CituYXRpdmUgdWludCBvcGVyYXRvcioodWludCwgdWludCk7CituYXRpdmUgaW50IG9wZXJh
dG9yLyhpbnQsIGludCk7CituYXRpdmUgdWludCBvcGVyYXRvci8odWludCwgdWludCk7CituYXRp
dmUgYm9vbCBvcGVyYXRvcj09KGludCwgaW50KTsKK25hdGl2ZSBib29sIG9wZXJhdG9yPT0odWlu
dCwgdWludCk7CituYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsIGJvb2wpOworCituYXRpdmUg
b3BlcmF0b3IgaW50KGludCk7CituYXRpdmUgb3BlcmF0b3IgdWludCh1aW50KTsKK25hdGl2ZSBv
cGVyYXRvciBib29sKGJvb2wpOwogCiBuYXRpdmUgdGhyZWFkIFReIG9wZXJhdG9yJltdPFQ+KHRo
cmVhZCBUW10sIHVpbnQpOwogbmF0aXZlIHRocmVhZGdyb3VwIFReIG9wZXJhdG9yJltdPFQ6cHJp
bWl0aXZlPih0aHJlYWRncm91cCBUW10sIHVpbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sCmluZGV4IGUyMDQwYzBmODg1Yzg2ZWNkYTM4N2NiZTAxN2Q1MDY5MDRhZjY0
ODMuLmVlZmU4OTZhYjI5YWYzNjc0OGVmMGE3ZTFhYjhkMzg1ODlmYmFmMjUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTEzLDE2ICsxMywxOSBAQAogPHNjcmlw
dCBzcmM9IkFycmF5VHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQXNzaWdubWVudC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDYWxsQXNzaWdubWVu
dC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2FsbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Q2hlY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrTGl0ZXJhbFR5cGVzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JldHVybnMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJD
aGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDb21tYUV4cHJlc3Npb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IkNvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRUFycmF5
UmVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJFQnVmZmVyQnVpbGRlci5qcyI+PC9zY3JpcHQ+CkBAIC00Miw2ICs0NSw4IEBA
CiA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4
ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iTG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
TWFrZVB0ckV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik5hbWVDb250ZXh0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYW1lUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgpA
QCAtNTEsNiArNTYsNyBAQAogPHNjcmlwdCBzcmM9Ik5hdGl2ZVR5cGVJbnN0YW5jZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iTnVsbExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ik51bGxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJPdmVybG9hZFJlc29sdXRp
b25GYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQYXJzZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iUHJlcGFyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvZ3Jh
bS5qcyI+PC9zY3JpcHQ+CkBAIC02Niw2ICs3Miw3IEBACiA8c2NyaXB0IHNyYz0iUmV0dXJuQ2hl
Y2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJhcnkuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0
cnVjdFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN1YnN0aXR1dGlvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3VmZml4Q2FsbEFzc2lnbm1lbnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggNGNlM2ZlMjc2Mjk4MjZmZDE5
OWRlNjcyZGRhMjUyYTg1Y2Y5N2MxYi4uN2NjNzM3NDEzN2ZmMzAzZjUzZjFjNTk3NTdmODhjY2Vi
MjMwMTViNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC01Nyw2ICs1
NywxNiBAQCBmdW5jdGlvbiBtYWtlSW50KHByb2dyYW0sIHZhbHVlKQogICAgIHJldHVybiBUeXBl
ZFZhbHVlLmJveChwcm9ncmFtLmludHJpbnNpY3MuaW50MzIsIHZhbHVlKTsKIH0KIAorZnVuY3Rp
b24gbWFrZVVJbnQocHJvZ3JhbSwgdmFsdWUpCit7CisgICAgcmV0dXJuIFR5cGVkVmFsdWUuYm94
KHByb2dyYW0uaW50cmluc2ljcy51aW50MzIsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gbWFrZUJv
b2wocHJvZ3JhbSwgdmFsdWUpCit7CisgICAgcmV0dXJuIFR5cGVkVmFsdWUuYm94KHByb2dyYW0u
aW50cmluc2ljcy5ib29sLCB2YWx1ZSk7Cit9CisKIGZ1bmN0aW9uIGNoZWNrSW50KHByb2dyYW0s
IHJlc3VsdCwgZXhwZWN0ZWQpCiB7CiAgICAgaWYgKCFyZXN1bHQudHlwZS5lcXVhbHMocHJvZ3Jh
bS5pbnRyaW5zaWNzLmludDMyKSkKQEAgLTY0LDYgKzc0LDIzIEBAIGZ1bmN0aW9uIGNoZWNrSW50
KHByb2dyYW0sIHJlc3VsdCwgZXhwZWN0ZWQpCiAgICAgaWYgKHJlc3VsdC52YWx1ZSAhPSBleHBl
Y3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQ6ICIgKyByZXN1bHQg
KyAiIChleHBlY3RlZCAiICsgZXhwZWN0ZWQgKyAiKSIpOwogfQorCitmdW5jdGlvbiBjaGVja1VJ
bnQocHJvZ3JhbSwgcmVzdWx0LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoIXJlc3VsdC50eXBlLmVx
dWFscyhwcm9ncmFtLmludHJpbnNpY3MudWludDMyKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJXcm9uZyByZXN1bHQgdHlwZTsgcmVzdWx0OiAiICsgcmVzdWx0KTsKKyAgICBpZiAocmVzdWx0
LnZhbHVlICE9IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIHJlc3Vs
dDogIiArIHJlc3VsdCArICIgKGV4cGVjdGVkICIgKyBleHBlY3RlZCArICIpIik7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrQm9vbChwcm9ncmFtLCByZXN1bHQsIGV4cGVjdGVkKQoreworICAgIGlmICgh
cmVzdWx0LnR5cGUuZXF1YWxzKHByb2dyYW0uaW50cmluc2ljcy5ib29sKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJXcm9uZyByZXN1bHQgdHlwZTsgcmVzdWx0OiAiICsgcmVzdWx0KTsKKyAg
ICBpZiAocmVzdWx0LnZhbHVlICE9IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ildyb25nIHJlc3VsdDogIiArIHJlc3VsdCArICIgKGV4cGVjdGVkICIgKyBleHBlY3RlZCArICIp
Iik7Cit9CisKIGZ1bmN0aW9uIGNoZWNrTGV4ZXJUb2tlbihyZXN1bHQsIGV4cGVjdGVkSW5kZXgs
IGV4cGVjdGVkS2luZCwgZXhwZWN0ZWRUZXh0KQogewogICAgIGlmIChyZXN1bHQuX2luZGV4ICE9
IGV4cGVjdGVkSW5kZXgpCkBAIC04OCw2ICsxMTUsODUgQEAgZnVuY3Rpb24gY2hlY2tGYWlsKGNh
bGxiYWNrLCBwcmVkaWNhdGUpCiAgICAgfQogfQogCitmdW5jdGlvbiBURVNUX2xpdGVyYWxCb29s
KCkgeworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbygpIHsgcmV0dXJuIHRydWU7
IH0iKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSwgW10pLCB0cnVlKTsKK30KKworZnVuY3Rpb24gVEVTVF9pZGVudGl0eUJvb2woKSB7Cisg
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoImJvb2wgZm9vKGJvb2wgeCkgeyByZXR1cm4geDsgfSIp
OworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUJvb2wocHJvZ3JhbSwgdHJ1ZSldKSwgdHJ1ZSk7CisgICAgY2hlY2tCb29sKHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlQm9vbChwcm9ncmFtLCBm
YWxzZSldKSwgZmFsc2UpOworfQorCitmdW5jdGlvbiBURVNUX2ludFNpbXBsZU1hdGgoKSB7Cisg
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4
ICsgeTsgfSIpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDEy
KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJpbnQgZm9vKGludCB4LCBpbnQgeSkgeyByZXR1cm4g
eCAtIHk7IH0iKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3KSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCAy
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUludChwcm9ncmFtLCA1KSwgbWFrZUludChwcm9ncmFtLCA3KV0pLCAtMik7CisgICAg
cHJvZ3JhbSA9IGRvUHJlcCgiaW50IGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggKiB5OyB9
Iik7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
XSwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgMzUpOworICAg
IGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtl
SW50KHByb2dyYW0sIDcpLCBtYWtlSW50KHByb2dyYW0sIC01KV0pLCAtMzUpOworICAgIHByb2dy
YW0gPSBkb1ByZXAoImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4IC8geTsgfSIpOwor
ICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFtt
YWtlSW50KHByb2dyYW0sIDcpLCBtYWtlSW50KHByb2dyYW0sIDIpXSksIDMpOworICAgIGNoZWNr
SW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHBy
b2dyYW0sIDcpLCBtYWtlSW50KHByb2dyYW0sIC0yKV0pLCAtMyk7Cit9CisKK2Z1bmN0aW9uIFRF
U1RfdWludFNpbXBsZU1hdGgoKSB7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoInVpbnQgZm9v
KHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICsgeTsgfSIpOworICAgIGNoZWNrVUludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZVVJbnQocHJvZ3JhbSwg
NyksIG1ha2VVSW50KHByb2dyYW0sIDUpXSksIDEyKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ1
aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iKTsKKyAgICBjaGVja1VJ
bnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVSW50KHBy
b2dyYW0sIDcpLCBtYWtlVUludChwcm9ncmFtLCA1KV0pLCAyKTsKKyAgICBjaGVja1VJbnQocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVSW50KHByb2dyYW0s
IDUpLCBtYWtlVUludChwcm9ncmFtLCA3KV0pLCA0Mjk0OTY3Mjk0KTsKKyAgICBwcm9ncmFtID0g
ZG9QcmVwKCJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAqIHk7IH0iKTsKKyAg
ICBjaGVja1VJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VVSW50KHByb2dyYW0sIDcpLCBtYWtlVUludChwcm9ncmFtLCA1KV0pLCAzNSk7CisgICAgcHJv
Z3JhbSA9IGRvUHJlcCgidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLyB5OyB9
Iik7CisgICAgY2hlY2tVSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10sIFttYWtlVUludChwcm9ncmFtLCA3KSwgbWFrZVVJbnQocHJvZ3JhbSwgMildKSwgMyk7Cit9
CisKK2Z1bmN0aW9uIFRFU1RfZXF1YWxpdHkoKSB7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAo
ImJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09IHk7IH0iKTsKKyAgICBjaGVj
a0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VVSW50
KHByb2dyYW0sIDcpLCBtYWtlVUludChwcm9ncmFtLCA1KV0pLCBmYWxzZSk7CisgICAgY2hlY2tC
b29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVUludChw
cm9ncmFtLCA3KSwgbWFrZVVJbnQocHJvZ3JhbSwgNyldKSwgdHJ1ZSk7CisgICAgcHJvZ3JhbSA9
IGRvUHJlcCgiYm9vbCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ID09IHk7IH0iKTsKKyAg
ICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgZmFsc2UpOworICAgIGNo
ZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUlu
dChwcm9ncmFtLCA3KSwgbWFrZUludChwcm9ncmFtLCA3KV0pLCB0cnVlKTsKKyAgICBwcm9ncmFt
ID0gZG9QcmVwKCJib29sIGZvbyhib29sIHgsIGJvb2wgeSkgeyByZXR1cm4geCA9PSB5OyB9Iik7
CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFttYWtlQm9vbChwcm9ncmFtLCBmYWxzZSksIG1ha2VCb29sKHByb2dyYW0sIHRydWUpXSksIGZh
bHNlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSwgW21ha2VCb29sKHByb2dyYW0sIHRydWUpLCBtYWtlQm9vbChwcm9ncmFtLCBmYWxzZSld
KSwgZmFsc2UpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdLCBbbWFrZUJvb2wocHJvZ3JhbSwgZmFsc2UpLCBtYWtlQm9vbChwcm9ncmFtLCBm
YWxzZSldKSwgdHJ1ZSk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10sIFttYWtlQm9vbChwcm9ncmFtLCB0cnVlKSwgbWFrZUJvb2wocHJvZ3Jh
bSwgdHJ1ZSldKSwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIFRFU1RfbG9naWNhbE5lZ2F0aW9uKCkK
K3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28oYm9vbCB4KSB7IHJldHVybiAh
eDsgfSIpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdLCBbbWFrZUJvb2wocHJvZ3JhbSwgdHJ1ZSldKSwgZmFsc2UpOworICAgIGNoZWNrQm9v
bChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUJvb2wocHJv
Z3JhbSwgZmFsc2UpXSksIHRydWUpOworfQorCitmdW5jdGlvbiBURVNUX25vdEVxdWFsaXR5KCkg
eworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbyh1aW50IHgsIHVpbnQgeSkgeyBy
ZXR1cm4geCAhPSB5OyB9Iik7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10sIFttYWtlVUludChwcm9ncmFtLCA3KSwgbWFrZVVJbnQocHJvZ3Jh
bSwgNSldKSwgdHJ1ZSk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW10sIFttYWtlVUludChwcm9ncmFtLCA3KSwgbWFrZVVJbnQocHJvZ3JhbSwg
NyldKSwgZmFsc2UpOworICAgIHByb2dyYW0gPSBkb1ByZXAoImJvb2wgZm9vKGludCB4LCBpbnQg
eSkgeyByZXR1cm4geCAhPSB5OyB9Iik7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpLCBtYWtlSW50KHBy
b2dyYW0sIDUpXSksIHRydWUpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3KSwgbWFrZUludChwcm9ncmFt
LCA3KV0pLCBmYWxzZSk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28oYm9vbCB4LCBi
b29sIHkpIHsgcmV0dXJuIHggIT0geTsgfSIpOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUJvb2wocHJvZ3JhbSwgZmFsc2UpLCBt
YWtlQm9vbChwcm9ncmFtLCB0cnVlKV0pLCB0cnVlKTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VCb29sKHByb2dyYW0sIHRydWUp
LCBtYWtlQm9vbChwcm9ncmFtLCBmYWxzZSldKSwgdHJ1ZSk7CisgICAgY2hlY2tCb29sKHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlQm9vbChwcm9ncmFtLCBm
YWxzZSksIG1ha2VCb29sKHByb2dyYW0sIGZhbHNlKV0pLCBmYWxzZSk7CisgICAgY2hlY2tCb29s
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlQm9vbChwcm9n
cmFtLCB0cnVlKSwgbWFrZUJvb2wocHJvZ3JhbSwgdHJ1ZSldKSwgZmFsc2UpOworfQorCitmdW5j
dGlvbiBURVNUX2VxdWFsaXR5VHlwZUZhaWx1cmUoKQoreworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKCJib29sIGZvbyhpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ID09IHk7
IH0iKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yICYmIGUubWVzc2Fn
ZS5pbmRleE9mKCI8dGVzdD46MSIpICE9IC0xKTsKK30KKwogZnVuY3Rpb24gVEVTVF9hZGQxKCkg
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJpbnQgZm9vKGludCB4KSB7IHJldHVybiB4ICsg
MTsgfSIpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10sIFttYWtlSW50KHByb2dyYW0sIDQyKV0pLCA0Myk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVzb2x2ZXIuanMKaW5kZXggMWRhMTVmZDYyOTVjNTdj
MzZlZDgwNmFkMmEyMTlmM2YwNmQzMzZhMS4uMmQyMGRlOTU5MDM3YjY3ZGZjZWZhOTQwOGUwNWFh
OTc4ZmI1MjE5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlw
ZURlZlJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVE
ZWZSZXNvbHZlci5qcwpAQCAtMzAsNiArMzAsMTUgQEAgY2xhc3MgVHlwZURlZlJlc29sdmVyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Zpc2l0aW5n
ID0gbmV3IFZpc2l0aW5nU2V0KCk7CiAgICAgfQorCisgICAgdmlzaXRGdW5jRGVmKG5vZGUpCisg
ICAgeworICAgICAgICBpZiAobm9kZS5pc0Nhc3QgJiYgbm9kZS5yZXR1cm5UeXBlLnR5cGUgaW5z
dGFuY2VvZiBUeXBlRGVmKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjMxNiBDb3JyZWN0bHkgaGFuZGxlIHRoZSBpbnRl
cmFjdGlvbiBiZXR3ZWVuIGNhc3Rpbmcgb3BlcmF0b3JzIGFuZCBjb21wbGV4IHR5cGVzCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhc3Rpbmcgb3BlcmF0b3JzIGRvbid0IHdvcmsgd2l0
aCB0eXBlZGVmcy4iKTsKKyAgICAgICAgfQorICAgICAgICBzdXBlci52aXNpdEZ1bmNEZWYobm9k
ZSk7CisgICAgfQogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IGFiMzE5OWFmZjBkNTAyZDMzYWUz
YWM5MGJhN2RmOGYxNGIwMjRjN2EuLjJlMTgxZDE5NmY1Njg0ZjIwN2YwZDNiZjA2ZDRjMzZlZmM2
NWMxYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3Iu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAtMjI2
LDYgKzIyNiwxMCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRo
aXMpOwogICAgIH0KICAgICAKKyAgICB2aXNpdEJvb2xMaXRlcmFsKG5vZGUpCisgICAgeworICAg
IH0KKyAgICAKICAgICB2aXNpdE51bGxUeXBlKG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9k
ZS50eXBlKQpAQCAtMjQ0LDYgKzI0OCwxMSBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAgICAgICAg
ICAgICBhcmd1bWVudC52aXNpdCh0aGlzKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZpc2l0
TG9naWNhbE5lZ2F0aW9uRXhwcmVzc2lvbihub2RlKQorICAgIHsKKyAgICAgICAgbm9kZS5vcGVy
YW5kLnZpc2l0KHRoaXMpOworICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmN0aW9uTGlrZUJsb2Nr
KG5vZGUpCiAgICAgewo=
</data>
<flag name="review"
          id="340041"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>