<?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>234562</bug_id>
          
          <creation_ts>2021-12-21 06:26:47 -0800</creation_ts>
          <short_desc>Web Inspector: Support conic gradients in gradient editor and autocompletion</short_desc>
          <delta_ts>2021-12-31 01:15:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825989</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-21 06:26:47 -0800</bug_when>
    <thetext>The web inspector has a swatch for gradients (linear, repeating-linear, radial, repeating-radial), it should also have one for conic and repeating-conic types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826030</commentid>
    <comment_count>1</comment_count>
      <attachid>447727</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-21 09:43:03 -0800</bug_when>
    <thetext>Created attachment 447727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826576</commentid>
    <comment_count>2</comment_count>
      <attachid>447885</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 11:03:30 -0800</bug_when>
    <thetext>Created attachment 447885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826586</commentid>
    <comment_count>3</comment_count>
      <attachid>447885</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-23 11:54:02 -0800</bug_when>
    <thetext>Comment on attachment 447885
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:42
&gt; +        return { value: parseFloat(match[1]), units: match[2] };

Style: we dont normally add spaces after `{` or before `}` in Web Inspector

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:105
&gt; +        else if (type === WI.Gradient.Types.Radial)

NIT: I&apos;d use a `switch` instead of a bunch of `else if`

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:165
&gt; +    set angleValue(value) { this._angle.value = value; }

Style: We normally only make `get`/`set` single line if the function body is simple (e.g. assign/return a variable of the same name) and if the corresponding `set`/`get` (assuming there is one) is also able to be a single line.  Since `get angleValue` is not single line, please change this to also not be single line.
Style: We normally put the `get` before the `set`.

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:181
&gt; +    get angleUnits() { return this._angle.units; }

ditto (:165)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:221
&gt; +        default:
&gt; +            WI.reportInternalError(`Unknown angle units &quot;${this._angle.units}&quot;`);
&gt; +            return 0;

NIT: I don&apos;t think this is needed since you&apos;ve already covered all the unit types in the `switch`.

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:228
&gt; +            value = deg;

NIT: rather than reassign to `value`, you could just `return deg;`

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:232
&gt; +            value = deg * Math.PI / 180;

ditto (:228)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:236
&gt; +            value = deg / 360 * 400;

ditto (:228)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:240
&gt; +            value = deg / 360;

ditto (:228)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:244
&gt; +        return value;

ditto (:228) with a final `return 0;`

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:375
&gt; +        var sizing = !WI.Color.fromString(components[0].join(&quot; &quot;)) ? components.shift().join(&quot; &quot;) : &quot;&quot;;

`let`

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:377
&gt; +        var stops = WI.Gradient.stopsWithComponents(components);

ditto (:375)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:386
&gt; +    set angleValue(value) { }

I think it&apos;d be worth having a `console.assert(false, &quot;CSS conic gradients do not have an angle&quot;)` so that if this is somehow invoked then an engineer can notice it and fix it.

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:388
&gt; +    get angleValue() { return null; }

I think we should have this be `return 0;` as the default just in case since `WI.Gradient.prototype.get angleValue` always returns a number.

ditto (:386)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:390
&gt; +    set angleUnits(units) { }

ditto (:386)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:392
&gt; +    get angleUnits() { return null; }

I think we should have this be `return &quot;&quot;;` as the default just in case since `WI.Gradient.prototype.get angleUnit` always returns a string.

ditto (:386)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:401
&gt; +        var str = this.sizing;

ditto (:375)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:403
&gt; +        if (str !== &quot;&quot;)

Style: we normally dont compare directly against `&quot;&quot;` instead preferring to just boolean check the value since `&quot;&quot;` is a falsy value
```
if (str)
```

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:426
&gt; +        let angle = { value: 0, units: WI.Gradient.AngleUnits.DEG };

ditto (:42)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:440
&gt; +            // TODO: Potentially do some more elaborate parsing of position.

Can you create a FIXME bugzilla for this, ideally with some more elaborate examples?

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:446
&gt; +        if (hasCustomAngleOrPosition) {

Style: no `{` `}` needed for single line control flow

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:468
&gt; +        if (this._angle.value &gt; 0)

Are negative angles not allowed?

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:472
&gt; +            if (str != &quot;&quot;)

ditto (:403)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:477
&gt; +        if (str != &quot;&quot;)

ditto (:403)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:484
&gt; -};
&gt; +}

Style: this should have a `;` at the end since it&apos;s an assignment

&gt; Source/WebInspectorUI/UserInterface/Views/GradientEditor.js:146
&gt; +            this._gradientTypePicker.value = this._gradient.repeats ? &quot;repeating-conic-gradient&quot; : &quot;conic-gradient&quot;;

Does this also need a `this._angleUnitsChanged();` right after?

&gt; Source/WebInspectorUI/UserInterface/Views/GradientEditor.js:205
&gt; +            } else if (descriptor.type === WI.RadialGradient)

ditto (:105)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826602</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 12:28:18 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/GradientEditor.js:146
&gt; &gt; +            this._gradientTypePicker.value = this._gradient.repeats ? &quot;repeating-conic-gradient&quot; : &quot;conic-gradient&quot;;
&gt; 
&gt; Does this also need a `this._angleUnitsChanged();` right after?

The angle UI is hidden for radial gradients, so it doesn&apos;t really matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826603</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 12:28:47 -0800</bug_when>
    <thetext>&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:468
&gt; +        if (this._angle.value &gt; 0)


&gt; Are negative angles not allowed?

Yes, they are, nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826605</commentid>
    <comment_count>6</comment_count>
      <attachid>447901</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 12:36:49 -0800</bug_when>
    <thetext>Created attachment 447901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826610</commentid>
    <comment_count>7</comment_count>
      <attachid>447901</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-23 12:48:50 -0800</bug_when>
    <thetext>Comment on attachment 447901
Patch

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

r=me, nice fix! =D

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:117
&gt; +        default:
&gt; +            return null;

NIT: this isn&apos;t really necessary since you&apos;ve covered all the other cases already and the below logic will handle if `gradient` is not set (tho you&apos;d probably wanna make it `let gradient = null;` just in case)

&gt; Source/WebInspectorUI/UserInterface/Models/Gradient.js:458
&gt; +            // FIXME: webkit.org/b/234643

NIT: we normally include the title of the bug too so it&apos;s clear (and searchable)
```
// FIXME: &lt;https://webkit.org/b/234643&gt; (Web Inspector: allow editing positions in gradient editor)
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826611</commentid>
    <comment_count>8</comment_count>
      <attachid>447902</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 12:52:29 -0800</bug_when>
    <thetext>Created attachment 447902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826612</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-23 12:54:37 -0800</bug_when>
    <thetext>Committed r287409 (245544@trunk): &lt;https://commits.webkit.org/245544@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826614</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-23 12:55:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/86863005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827313</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-12-31 01:15:05 -0800</bug_when>
    <thetext>Landed a fix up for the assert text: r287491</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447727</attachid>
            <date>2021-12-21 09:43:03 -0800</date>
            <delta_ts>2021-12-23 11:03:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234562-20211221184302.patch</filename>
            <type>text/plain</type>
            <size>21616</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MjQ0NmI2YjhhODU4N2FkY2I3MmE1M2U4MDI4MTA3NjViMGRlOGJlLi5iMGI1NGE4ODdkZWM0ZDY3
YmI3ODQ4YTcyYTRjNTk2ZDZhOTM0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAyMS0xMi0yMSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEdyYWRpZW50IHN3YXRjaCBzaG91bGQgc3VwcG9ydCBjb25pYyBncmFkaWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL0dyYWRpZW50LmpzOgorICAgICAgICAoV0kuR3JhZGllbnQuYW5nbGVGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdJLkdyYWRpZW50LmZyb21TdHJpbmcpOgorICAgICAgICAoV0kuR3Jh
ZGllbnQucHJvdG90eXBlLnNldCBhbmdsZVZhbHVlKToKKyAgICAgICAgKFdJLkdyYWRpZW50LnBy
b3RvdHlwZS5nZXQgYW5nbGVWYWx1ZSk6CisgICAgICAgIChXSS5HcmFkaWVudC5wcm90b3R5cGUu
c2V0IGFuZ2xlVW5pdHMpOgorICAgICAgICAoV0kuR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmds
ZVVuaXRzKToKKyAgICAgICAgKFdJLkdyYWRpZW50LnByb3RvdHlwZS5fYW5nbGVWYWx1ZUZvclVu
aXRzKToKKyAgICAgICAgKFdJLkdyYWRpZW50KToKKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50
LmZyb21Db21wb25lbnRzKToKKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50KToKKyAgICAgICAg
KFdJLlJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LmZyb21Db21w
b25lbnRzKToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5zZXQgYW5nbGVW
YWx1ZSk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUuZ2V0IGFuZ2xlVmFs
dWUpOgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLnNldCBhbmdsZVVuaXRz
KToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVVbml0cyk6
CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUuY29weSk6CisgICAgICAgIChX
SS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoV0kuQ29uaWNH
cmFkaWVudCk6CisgICAgICAgIChXSS5Db25pY0dyYWRpZW50LmZyb21Db21wb25lbnRzKToKKyAg
ICAgICAgKFdJLkNvbmljR3JhZGllbnQucHJvdG90eXBlLmNvcHkpOgorICAgICAgICAoV0kuQ29u
aWNHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoV0kuTGluZWFyR3JhZGll
bnQucHJvdG90eXBlLnNldCBhbmdsZVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkxpbmVh
ckdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVW5pdHMpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuTGluZWFyR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmdsZVVuaXRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5fYW5nbGVWYWx1ZUZvclVu
aXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JU
ZXh0TWFya2Vycy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50RWRp
dG9yLmpzOgorICAgICAgICAoV0kuR3JhZGllbnRFZGl0b3IpOgorICAgICAgICAoV0kuR3JhZGll
bnRFZGl0b3IucHJvdG90eXBlLnNldCBncmFkaWVudCk6CisgICAgICAgIChXSS5HcmFkaWVudEVk
aXRvci5wcm90b3R5cGUuX2dyYWRpZW50VHlwZUNoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgorICAgICAgICAoV0kuU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fYWRkR3JhZGllbnRUb2tlbnMpOgorCiAy
MDIxLTEyLTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxNzMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDg1MTg3MTZlY2NlNTJmYjdkY2UyNThlMzhkZjE3
ZTAzNTRlN2M0YmIuLjJlODY1MmZhZWIzYjE3YTU2ZTI0NjIzNTIzMjY1YmE1OTk4MDI1ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMzY3LDYgKzM2Nyw3IEBAIGxvY2Fs
aXplZFN0cmluZ3NbIkNvbm5lY3Rpb24gQ2xvc2UgRnJhbWUiXSA9ICJDb25uZWN0aW9uIENsb3Nl
IEZyYW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbm5lY3Rpb24gQ2xvc2VkIl0gPSAiQ29ubmVj
dGlvbiBDbG9zZWQiOwogbG9jYWxpemVkU3RyaW5nc1siQ29ubmVjdGlvbiBJRCJdID0gIkNvbm5l
Y3Rpb24gSUQiOwogbG9jYWxpemVkU3RyaW5nc1siQ29ubmVjdGlvbjoiXSA9ICJDb25uZWN0aW9u
OiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJDb25pYyBHcmFkaWVudCJdID0gIkNvbmljIEdyYWRpZW50
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbnNvbGUiXSA9ICJDb25zb2xlIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkNvbnNvbGUgRXZhbHVhdGlvbiJdID0gIkNvbnNvbGUgRXZhbHVhdGlvbiI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJDb25zb2xlIEV2YWx1YXRpb24gJWQiXSA9ICJDb25zb2xlIEV2YWx1YXRp
b24gJWQiOwpAQCAtMTE4Myw2ICsxMTg0LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siUmVuZGVyIFBp
cGVsaW5lICVkIl0gPSAiUmVuZGVyIFBpcGVsaW5lICVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJl
bmRlcmluZyBGcmFtZXMiXSA9ICJSZW5kZXJpbmcgRnJhbWVzIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlJlcGVhdGluZyBMaW5lYXIgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcgTGluZWFyIEdyYWRpZW50
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiXSA9ICJSZXBl
YXRpbmcgUmFkaWFsIEdyYWRpZW50IjsKK2xvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBDb25p
YyBHcmFkaWVudCJdID0gIlJlcGVhdGluZyBDb25pYyBHcmFkaWVudCI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJSZXF1ZXN0Il0gPSAiUmVxdWVzdCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0ICYg
UmVzcG9uc2UiXSA9ICJSZXF1ZXN0ICYgUmVzcG9uc2UiOwogbG9jYWxpemVkU3RyaW5nc1siUmVx
dWVzdCAoRE9NIFRyZWUpIl0gPSAiUmVxdWVzdCAoRE9NIFRyZWUpIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwppbmRl
eCBmNzNkZTc1ZWVjYmZkZjI3NzA4MDg0ZTA5Yzc5NjczNzAzYWEwZGQ2Li45MTg4YWQzMDFkZjYz
ZWVjNmVjNDVhNTZjYTY5Y2JiNTQzOTMxNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCkBAIC0zMywxNSArMzMs
MjYgQEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFkaWVudAogCiAgICAgLy8gU3RhdGljCiAKKyAg
ICBzdGF0aWMgYW5nbGVGcm9tU3RyaW5nKHN0cmluZykKKyAgICB7CisgICAgICAgIGxldCBtYXRj
aCA9IHN0cmluZy5tYXRjaCgvKFstXGRcLl0rKShcdyspLyk7CisgICAgICAgIGlmICghbWF0Y2gg
fHwgIU9iamVjdC52YWx1ZXMoV0kuR3JhZGllbnQuQW5nbGVVbml0cykuaW5jbHVkZXMobWF0Y2hb
Ml0pKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHsgdmFsdWU6
IHBhcnNlRmxvYXQobWF0Y2hbMV0pLCB1bml0czogbWF0Y2hbMl0gfTsKKyAgICB9CisKICAgICBz
dGF0aWMgZnJvbVN0cmluZyhjc3NTdHJpbmcpCiAgICAgewogICAgICAgICB2YXIgdHlwZTsKICAg
ICAgICAgdmFyIG9wZW5pbmdQYXJlbnRoZXNpc0luZGV4ID0gY3NzU3RyaW5nLmluZGV4T2YoIigi
KTsKICAgICAgICAgdmFyIHR5cGVTdHJpbmcgPSBjc3NTdHJpbmcuc3Vic3RyaW5nKDAsIG9wZW5p
bmdQYXJlbnRoZXNpc0luZGV4KTsKLSAgICAgICAgaWYgKHR5cGVTdHJpbmcuaW5kZXhPZihXSS5H
cmFkaWVudC5UeXBlcy5MaW5lYXIpICE9PSAtMSkKKyAgICAgICAgaWYgKHR5cGVTdHJpbmcuaW5j
bHVkZXMoV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyKSkKICAgICAgICAgICAgIHR5cGUgPSBXSS5H
cmFkaWVudC5UeXBlcy5MaW5lYXI7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5kZXhP
ZihXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwpICE9PSAtMSkKKyAgICAgICAgZWxzZSBpZiAodHlw
ZVN0cmluZy5pbmNsdWRlcyhXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwpKQogICAgICAgICAgICAg
dHlwZSA9IFdJLkdyYWRpZW50LlR5cGVzLlJhZGlhbDsKKyAgICAgICAgZWxzZSBpZiAodHlwZVN0
cmluZy5pbmNsdWRlcyhXSS5HcmFkaWVudC5UeXBlcy5Db25pYykpCisgICAgICAgICAgICB0eXBl
ID0gV0kuR3JhZGllbnQuVHlwZXMuQ29uaWM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
dHVybiBudWxsOwogCkBAIC05MSw4ICsxMDIsMTAgQEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFk
aWVudAogICAgICAgICB2YXIgZ3JhZGllbnQ7CiAgICAgICAgIGlmICh0eXBlID09PSBXSS5HcmFk
aWVudC5UeXBlcy5MaW5lYXIpCiAgICAgICAgICAgICBncmFkaWVudCA9IFdJLkxpbmVhckdyYWRp
ZW50LmZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpOwotICAgICAgICBlbHNlCisgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT09IFdJLkdyYWRpZW50LlR5cGVzLlJhZGlhbCkKICAgICAgICAgICAgIGdy
YWRpZW50ID0gV0kuUmFkaWFsR3JhZGllbnQuZnJvbUNvbXBvbmVudHMoY29tcG9uZW50cyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdyYWRpZW50ID0gV0kuQ29uaWNHcmFkaWVudC5mcm9t
Q29tcG9uZW50cyhjb21wb25lbnRzKTsKIAogICAgICAgICBpZiAoZ3JhZGllbnQpCiAgICAgICAg
ICAgICBncmFkaWVudC5yZXBlYXRzID0gdHlwZVN0cmluZy5zdGFydHNXaXRoKCJyZXBlYXRpbmci
KTsKQEAgLTE0OSw2ICsxNjIsMjQgQEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFkaWVudAogCiAg
ICAgLy8gUHVibGljCiAKKyAgICBzZXQgYW5nbGVWYWx1ZSh2YWx1ZSkgeyB0aGlzLl9hbmdsZS52
YWx1ZSA9IHZhbHVlOyB9CisKKyAgICBnZXQgYW5nbGVWYWx1ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fYW5nbGUudmFsdWUubWF4RGVjaW1hbHMoMik7CisgICAgfQorCisgICAgc2V0
IGFuZ2xlVW5pdHModW5pdHMpCisgICAgeworICAgICAgICBpZiAodW5pdHMgPT09IHRoaXMuX2Fu
Z2xlLnVuaXRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2FuZ2xlLnZh
bHVlID0gdGhpcy5fYW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKTsKKyAgICAgICAgdGhpcy5fYW5n
bGUudW5pdHMgPSB1bml0czsKKyAgICB9CisKKyAgICBnZXQgYW5nbGVVbml0cygpIHsgcmV0dXJu
IHRoaXMuX2FuZ2xlLnVuaXRzOyB9CisKICAgICBjb3B5KCkKICAgICB7CiAgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCkBAIC0xNTgsMTEgKzE4OSw3MyBAQCBXSS5HcmFkaWVu
dCA9IGNsYXNzIEdyYWRpZW50CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgogICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9hbmdsZVZhbHVlRm9yVW5p
dHModW5pdHMpCisgICAgeworICAgICAgICBpZiAodW5pdHMgPT09IHRoaXMuX2FuZ2xlLnVuaXRz
KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZhbHVlOworCisgICAgICAgIGxldCBk
ZWcgPSAwOworCisgICAgICAgIHN3aXRjaCAodGhpcy5fYW5nbGUudW5pdHMpIHsKKyAgICAgICAg
Y2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkRFRzoKKyAgICAgICAgICAgIGRlZyA9IHRoaXMu
X2FuZ2xlLnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5HcmFk
aWVudC5BbmdsZVVuaXRzLlJBRDoKKyAgICAgICAgICAgIGRlZyA9IHRoaXMuX2FuZ2xlLnZhbHVl
ICogMTgwIC8gTWF0aC5QSTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0ku
R3JhZGllbnQuQW5nbGVVbml0cy5HUkFEOgorICAgICAgICAgICAgZGVnID0gdGhpcy5fYW5nbGUu
dmFsdWUgLyA0MDAgKiAzNjA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJ
LkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVSTjoKKyAgICAgICAgICAgIGRlZyA9IHRoaXMuX2FuZ2xl
LnZhbHVlICogMzYwOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoYFVua25vd24gYW5nbGUgdW5pdHMgIiR7
dGhpcy5fYW5nbGUudW5pdHN9ImApOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KworICAgICAgICBsZXQgdmFsdWUgPSAwOworCisgICAgICAgIHN3aXRjaCAodW5pdHMpIHsKKyAg
ICAgICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkRFRzoKKyAgICAgICAgICAgIHZhbHVl
ID0gZGVnOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5HcmFkaWVudC5B
bmdsZVVuaXRzLlJBRDoKKyAgICAgICAgICAgIHZhbHVlID0gZGVnICogTWF0aC5QSSAvIDE4MDsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0
cy5HUkFEOgorICAgICAgICAgICAgdmFsdWUgPSBkZWcgLyAzNjAgKiA0MDA7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVSTjoKKyAg
ICAgICAgICAgIHZhbHVlID0gZGVnIC8gMzYwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogfTsKIAogV0kuR3JhZGllbnQuVHlw
ZXMgPSB7CiAgICAgTGluZWFyOiAibGluZWFyLWdyYWRpZW50IiwKLSAgICBSYWRpYWw6ICJyYWRp
YWwtZ3JhZGllbnQiCisgICAgUmFkaWFsOiAicmFkaWFsLWdyYWRpZW50IiwKKyAgICBDb25pYzog
ImNvbmljLWdyYWRpZW50IiwKK307CisKK1dJLkdyYWRpZW50LkFuZ2xlVW5pdHMgPSB7CisgICAg
REVHOiAiZGVnIiwKKyAgICBSQUQ6ICJyYWQiLAorICAgIEdSQUQ6ICJncmFkIiwKKyAgICBUVVJO
OiAidHVybiIsCiB9OwogCiBXSS5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50
IGV4dGVuZHMgV0kuR3JhZGllbnQKQEAgLTE3NywxNSArMjcwLDEzIEBAIFdJLkxpbmVhckdyYWRp
ZW50ID0gY2xhc3MgTGluZWFyR3JhZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogCiAgICAgc3Rh
dGljIGZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAgICBsZXQgYW5nbGUg
PSB7dmFsdWU6IDE4MCwgdW5pdHM6IFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuREVHfTsK
KyAgICAgICAgbGV0IGFuZ2xlID0ge3ZhbHVlOiAxODAsIHVuaXRzOiBXSS5HcmFkaWVudC5Bbmds
ZVVuaXRzLkRFR307CiAKICAgICAgICAgaWYgKGNvbXBvbmVudHNbMF0ubGVuZ3RoID09PSAxICYm
ICFXSS5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF1bMF0pKSB7Ci0gICAgICAgICAgICBs
ZXQgbWF0Y2ggPSBjb21wb25lbnRzWzBdWzBdLm1hdGNoKC8oWy1cZFwuXSspKFx3KykvKTsKLSAg
ICAgICAgICAgIGlmICghbWF0Y2ggfHwgIU9iamVjdC52YWx1ZXMoV0kuTGluZWFyR3JhZGllbnQu
QW5nbGVVbml0cykuaW5jbHVkZXMobWF0Y2hbMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgICAgICAgYW5nbGUgPSBXSS5HcmFkaWVudC5hbmdsZUZyb21TdHJpbmcoY29t
cG9uZW50c1swXVswXSk7CiAKLSAgICAgICAgICAgIGFuZ2xlLnZhbHVlID0gcGFyc2VGbG9hdCht
YXRjaFsxXSk7Ci0gICAgICAgICAgICBhbmdsZS51bml0cyA9IG1hdGNoWzJdOworICAgICAgICAg
ICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICAg
ICAgY29tcG9uZW50cy5zaGlmdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHNbMF1b
MF0gPT09ICJ0byIpIHsKQEAgLTIzMywyNiArMzI0LDYgQEAgV0kuTGluZWFyR3JhZGllbnQgPSBj
bGFzcyBMaW5lYXJHcmFkaWVudCBleHRlbmRzIFdJLkdyYWRpZW50CiAgICAgICAgIHJldHVybiBu
ZXcgV0kuTGluZWFyR3JhZGllbnQoYW5nbGUsIHN0b3BzKTsKICAgICB9CiAKLSAgICAvLyBQdWJs
aWMKLQotICAgIHNldCBhbmdsZVZhbHVlKHZhbHVlKSB7IHRoaXMuX2FuZ2xlLnZhbHVlID0gdmFs
dWU7IH0KLQotICAgIGdldCBhbmdsZVZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9hbmdsZS52YWx1ZS5tYXhEZWNpbWFscygyKTsKLSAgICB9Ci0KLSAgICBzZXQgYW5nbGVVbml0
cyh1bml0cykKLSAgICB7Ci0gICAgICAgIGlmICh1bml0cyA9PT0gdGhpcy5fYW5nbGUudW5pdHMp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fYW5nbGUudmFsdWUgPSB0aGlz
Ll9hbmdsZVZhbHVlRm9yVW5pdHModW5pdHMpOwotICAgICAgICB0aGlzLl9hbmdsZS51bml0cyA9
IHVuaXRzOwotICAgIH0KLQotICAgIGdldCBhbmdsZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fYW5n
bGUudW5pdHM7IH0KLQogICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXSS5M
aW5lYXJHcmFkaWVudCh0aGlzLl9hbmdsZSwgdGhpcy5zdG9wcy5jb25jYXQoKSk7CkBAIC0yODcs
MTA2ICszNTgsMTI3IEBAIFdJLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGluZWFyR3JhZGllbnQg
ZXh0ZW5kcyBXSS5HcmFkaWVudAogCiAgICAgICAgIHJldHVybiAodGhpcy5yZXBlYXRzID8gInJl
cGVhdGluZy0iIDogIiIpICsgdGhpcy50eXBlICsgIigiICsgc3RyICsgIikiOwogICAgIH0KK307
CiAKLSAgICAvLyBQcml2YXRlCitXSS5SYWRpYWxHcmFkaWVudCA9IGNsYXNzIFJhZGlhbEdyYWRp
ZW50IGV4dGVuZHMgV0kuR3JhZGllbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihzaXppbmcsIHN0b3Bz
KQorICAgIHsKKyAgICAgICAgc3VwZXIoV0kuR3JhZGllbnQuVHlwZXMuUmFkaWFsLCBzdG9wcyk7
CisgICAgICAgIHRoaXMuc2l6aW5nID0gc2l6aW5nOworICAgIH0KIAotICAgIF9hbmdsZVZhbHVl
Rm9yVW5pdHModW5pdHMpCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZnJvbUNvbXBvbmVu
dHMoY29tcG9uZW50cykKICAgICB7Ci0gICAgICAgIGlmICh1bml0cyA9PT0gdGhpcy5fYW5nbGUu
dW5pdHMpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fYW5nbGUudmFsdWU7CisgICAgICAgIHZh
ciBzaXppbmcgPSAhV0kuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRzWzBdLmpvaW4oIiAiKSkg
PyBjb21wb25lbnRzLnNoaWZ0KCkuam9pbigiICIpIDogIiI7CiAKLSAgICAgICAgbGV0IGRlZyA9
IDA7CisgICAgICAgIHZhciBzdG9wcyA9IFdJLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMo
Y29tcG9uZW50cyk7CisgICAgICAgIGlmICghc3RvcHMpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAotICAgICAgICBzd2l0Y2ggKHRoaXMuX2FuZ2xlLnVuaXRzKSB7Ci0gICAgICAgIGNhc2Ug
V0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5ERUc6Ci0gICAgICAgICAgICBkZWcgPSB0aGlz
Ll9hbmdsZS52YWx1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gbmV3IFdJ
LlJhZGlhbEdyYWRpZW50KHNpemluZywgc3RvcHMpOworICAgIH0KIAotICAgICAgICBjYXNlIFdJ
LkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuUkFEOgotICAgICAgICAgICAgZGVnID0gdGhpcy5f
YW5nbGUudmFsdWUgKiAxODAgLyBNYXRoLlBJOwotICAgICAgICAgICAgYnJlYWs7CisgICAgLy8g
UHVibGljCiAKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkdSQUQ6
Ci0gICAgICAgICAgICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZSAvIDQwMCAqIDM2MDsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgIHNldCBhbmdsZVZhbHVlKHZhbHVlKSB7IH0KIAotICAgICAgICBj
YXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuVFVSTjoKLSAgICAgICAgICAgIGRlZyA9
IHRoaXMuX2FuZ2xlLnZhbHVlICogMzYwOwotICAgICAgICAgICAgYnJlYWs7CisgICAgZ2V0IGFu
Z2xlVmFsdWUoKSB7IHJldHVybiBudWxsOyB9CiAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoYFVua25vd24gYW5nbGUgdW5pdHMgIiR7dGhpcy5f
YW5nbGUudW5pdHN9ImApOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KKyAgICBz
ZXQgYW5nbGVVbml0cyh1bml0cykgeyB9CiAKLSAgICAgICAgbGV0IHZhbHVlID0gMDsKKyAgICBn
ZXQgYW5nbGVVbml0cygpIHsgcmV0dXJuIG51bGw7IH0KIAotICAgICAgICBzd2l0Y2ggKHVuaXRz
KSB7Ci0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5ERUc6Ci0gICAg
ICAgICAgICB2YWx1ZSA9IGRlZzsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNvcHkoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5SYWRpYWxHcmFkaWVudCh0aGlzLnNpemluZywgdGhp
cy5zdG9wcy5jb25jYXQoKSk7CisgICAgfQogCi0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGll
bnQuQW5nbGVVbml0cy5SQUQ6Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlZyAqIE1hdGguUEkgLyAx
ODA7Ci0gICAgICAgICAgICBicmVhazsKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICB2
YXIgc3RyID0gdGhpcy5zaXppbmc7CiAKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5B
bmdsZVVuaXRzLkdSQUQ6Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlZyAvIDM2MCAqIDQwMDsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoc3RyICE9PSAiIikKKyAgICAgICAgICAgIHN0
ciArPSAiLCAiOwogCi0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5U
VVJOOgotICAgICAgICAgICAgdmFsdWUgPSBkZWcgLyAzNjA7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQorICAgICAgICBzdHIgKz0gdGhpcy5zdHJpbmdGcm9tU3RvcHModGhpcy5zdG9w
cyk7CiAKLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gKHRoaXMucmVwZWF0
cyA/ICJyZXBlYXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSArICIoIiArIHN0ciArICIpIjsKICAg
ICB9CiB9OwogCi1XSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzID0gewotICAgIERFRzogImRl
ZyIsCi0gICAgUkFEOiAicmFkIiwKLSAgICBHUkFEOiAiZ3JhZCIsCi0gICAgVFVSTjogInR1cm4i
LAotfTsKLQotV0kuUmFkaWFsR3JhZGllbnQgPSBjbGFzcyBSYWRpYWxHcmFkaWVudCBleHRlbmRz
IFdJLkdyYWRpZW50CitXSS5Db25pY0dyYWRpZW50ID0gY2xhc3MgQ29uaWNHcmFkaWVudCBleHRl
bmRzIFdJLkdyYWRpZW50CiB7Ci0gICAgY29uc3RydWN0b3Ioc2l6aW5nLCBzdG9wcykKKyAgICBj
b25zdHJ1Y3RvcihhbmdsZSwgcG9zaXRpb24sIHN0b3BzKQogICAgIHsKLSAgICAgICAgc3VwZXIo
V0kuR3JhZGllbnQuVHlwZXMuUmFkaWFsLCBzdG9wcyk7Ci0gICAgICAgIHRoaXMuc2l6aW5nID0g
c2l6aW5nOworICAgICAgICBzdXBlcihXSS5HcmFkaWVudC5UeXBlcy5Db25pYywgc3RvcHMpOwor
CisgICAgICAgIHRoaXMuX2FuZ2xlID0gYW5nbGU7CisgICAgICAgIHRoaXMuX3Bvc2l0aW9uID0g
cG9zaXRpb247CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKICAgICBzdGF0aWMgZnJvbUNvbXBv
bmVudHMoY29tcG9uZW50cykKICAgICB7Ci0gICAgICAgIHZhciBzaXppbmcgPSAhV0kuQ29sb3Iu
ZnJvbVN0cmluZyhjb21wb25lbnRzWzBdLmpvaW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCku
am9pbigiICIpIDogIiI7CisgICAgICAgIGxldCBhbmdsZSA9IHsgdmFsdWU6IDAsIHVuaXRzOiBX
SS5HcmFkaWVudC5BbmdsZVVuaXRzLkRFRyB9OworICAgICAgICBsZXQgcG9zaXRpb24gPSBudWxs
OworICAgICAgICBsZXQgaGFzQ3VzdG9tQW5nbGVPclBvc2l0aW9uID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKGNvbXBvbmVudHNbMF1bMF0gPT0gImZyb20iKSB7CisgICAgICAgICAgICAvLyBjb21w
b25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICAvLyBhbmdsZSA9IFdJLkdyYWRpZW50LmFu
Z2xlRnJvbVN0cmluZyhjb21wb25lbnRzWzBdWzBdKTsKKyAgICAgICAgICAgIC8vIGlmICghYW5n
bGUpCisgICAgICAgICAgICAvLyAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAvLyBjb21w
b25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICBoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24g
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjb21wb25lbnRzWzBdWzBdID09ICJhdCIp
IHsKKyAgICAgICAgICAgIC8vIGNvbXBvbmVudHNbMF0uc2hpZnQoKTsKKyAgICAgICAgICAgIC8v
IC8vIEZJWE1FOiBQcm9wZXJseSBwYXJzZSBwb3NpdGlvbiBjb21wb25lbnQuCisgICAgICAgICAg
ICAvLyBpZiAoY29tcG9uZW50c1swXS5sZW5ndGggPD0gMCkKKyAgICAgICAgICAgIC8vICAgICBy
ZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIC8vIHBvc2l0aW9uID0gY29tcG9uZW50c1swXS5qb2lu
KCIgIik7CisgICAgICAgICAgICBoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24gPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24pIHsKKyAgICAgICAg
ICAgIGNvbXBvbmVudHMuc2hpZnQoKTsKKyAgICAgICAgfQogCi0gICAgICAgIHZhciBzdG9wcyA9
IFdJLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CisgICAgICAgIGxl
dCBzdG9wcyA9IFdJLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CiAg
ICAgICAgIGlmICghc3RvcHMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBy
ZXR1cm4gbmV3IFdJLlJhZGlhbEdyYWRpZW50KHNpemluZywgc3RvcHMpOworICAgICAgICByZXR1
cm4gbmV3IFdJLkNvbmljR3JhZGllbnQoYW5nbGUsIHBvc2l0aW9uLCBzdG9wcyk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBjb3B5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
V0kuUmFkaWFsR3JhZGllbnQodGhpcy5zaXppbmcsIHRoaXMuc3RvcHMuY29uY2F0KCkpOworICAg
ICAgICByZXR1cm4gbmV3IFdJLkNvbmljR3JhZGllbnQodGhpcy5fYW5nbGUsIHRoaXMuX3Bvc2l0
aW9uLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKICAgICB9CiAKICAgICB0b1N0cmluZygpCiAgICAg
ewotICAgICAgICB2YXIgc3RyID0gdGhpcy5zaXppbmc7CisgICAgICAgIGxldCBzdHIgPSAiIjsK
IAotICAgICAgICBpZiAoc3RyICE9PSAiIikKKyAgICAgICAgaWYgKHRoaXMuX2FuZ2xlLnZhbHVl
ID4gMCkKKyAgICAgICAgICAgIHN0ciArPSBgZnJvbSAke3RoaXMuX2FuZ2xlLnZhbHVlfSR7dGhp
cy5fYW5nbGUudW5pdHN9YDsKKworICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGlmIChzdHIgIT0gIiIpCisgICAgICAgICAgICAgICAgc3RyICs9ICIgIjsKKyAgICAg
ICAgICAgIHN0ciArPSBgYXQgJHt0aGlzLl9wb3NpdGlvbn1gOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHN0ciAhPSAiIikKICAgICAgICAgICAgIHN0ciArPSAiLCAiOwogCiAgICAgICAgIHN0
ciArPSB0aGlzLnN0cmluZ0Zyb21TdG9wcyh0aGlzLnN0b3BzKTsKIAogICAgICAgICByZXR1cm4g
KHRoaXMucmVwZWF0cyA/ICJyZXBlYXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSArICIoIiArIHN0
ciArICIpIjsKICAgICB9Ci19OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpz
CmluZGV4IDFkNDc2OTMwMWY1NjUyNDQ5YTk5ZjM5NDA5MWY0N2VhMDA3ZjI3ZjkuLjUyZWIxZDgw
YTFkY2IzOWQ0ZmEwM2UzMTE1NWFjNTBlNTYzOWI4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9y
VGV4dE1hcmtlcnMuanMKQEAgLTExMSw3ICsxMTEsNyBAQCBmdW5jdGlvbiBjcmVhdGVDb2RlTWly
cm9yQ29sb3JUZXh0TWFya2Vycyhjb2RlTWlycm9yLCByYW5nZSwgb3B0aW9ucyA9IHt9KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKC8ocmVwZWF0aW5n
LSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50JC8udGVzdChsaW5lQ29udGVudC5zdWJzdHJpbmco
MCwgaW5kZXgpKSkKKyAgICAgICAgaWYgKC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29u
aWMpLWdyYWRpZW50JC8udGVzdChsaW5lQ29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBBY3QgYXMgYSBuZWdhdGl2ZSBs
b29rLWJlaGluZCBhbmQgZGlzYWxsb3cgdGhlIGNvbG9yIGZyb20gYmVpbmcgcHJlZml4aW5nIHdp
dGggY2VydGFpbiBjaGFyYWN0ZXJzLgpAQCAtMTI4LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIGNyZWF0
ZUNvZGVNaXJyb3JHcmFkaWVudFRleHRNYXJrZXJzKGNvZGVNaXJyb3IsIHJhbmdlLCBvcHRpb25z
ID0ge30pCiAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0UmFuZ2UgPyBy
YW5nZS5zdGFydExpbmUgOiAwOwogICAgIHZhciBlbmQgPSByYW5nZSBpbnN0YW5jZW9mIFdJLlRl
eHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAxIDogY29kZU1pcnJvci5saW5lQ291bnQoKTsKIAot
ICAgIHZhciBncmFkaWVudFJlZ2V4ID0gLyhyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3Jh
ZGllbnRccypcKFxzKi9nOworICAgIHZhciBncmFkaWVudFJlZ2V4ID0gLyhyZXBlYXRpbmctKT8o
bGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnRccypcKFxzKi9nOwogCiAgICAgZm9yICh2YXIg
bGluZU51bWJlciA9IHN0YXJ0OyBsaW5lTnVtYmVyIDwgZW5kOyArK2xpbmVOdW1iZXIpIHsKICAg
ICAgICAgdmFyIGxpbmVDb250ZW50ID0gY29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3Jh
ZGllbnRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HcmFkaWVudEVkaXRvci5qcwppbmRleCBkYTc4NDMxMjAxMDc2OWU2M2QzMjdiMzZjMjNhY2Fh
ZTg2ZWVlMzhjLi45Y2NlNTg1NmM2MWYyN2QxODA4Y2IwYmYwMGEzMDM0OTIxNjNkZGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVu
dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HcmFkaWVudEVkaXRvci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxNSBEZXZpbiBSb3Vzc28gPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+LiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDUsNiArNDUsMTEgQEAgV0kuR3JhZGll
bnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgICAgIGxhYmVsOiBXSS5VSVN0cmluZygiUmFkaWFsIEdyYWRpZW50IiksCiAgICAgICAg
ICAgICAgICAgcmVwZWF0czogZmFsc2UKICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiY29u
aWMtZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAgdHlwZTogV0kuQ29uaWNHcmFkaWVudCwK
KyAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIkNvbmljIEdyYWRpZW50IiksCisg
ICAgICAgICAgICAgICAgcmVwZWF0czogZmFsc2UKKyAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCI6IHsKICAgICAgICAgICAgICAgICB0eXBlOiBX
SS5MaW5lYXJHcmFkaWVudCwKICAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIlJl
cGVhdGluZyBMaW5lYXIgR3JhZGllbnQiKSwKQEAgLTU0LDcgKzU5LDEyIEBAIFdJLkdyYWRpZW50
RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICB0eXBlOiBXSS5SYWRpYWxHcmFkaWVudCwKICAgICAgICAgICAgICAgICBsYWJlbDog
V0kuVUlTdHJpbmcoIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiKSwKICAgICAgICAgICAgICAg
ICByZXBlYXRzOiB0cnVlCi0gICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCI6IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBX
SS5Db25pY0dyYWRpZW50LAorICAgICAgICAgICAgICAgIGxhYmVsOiBXSS5VSVN0cmluZygiUmVw
ZWF0aW5nIENvbmljIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAgcmVwZWF0czogdHJ1ZQor
ICAgICAgICAgICAgfSwKICAgICAgICAgfTsKICAgICAgICAgdGhpcy5fZWRpdGluZ0NvbG9yID0g
ZmFsc2U7CiAKQEAgLTkzLDEwICsxMDMsMTAgQEAgV0kuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBH
cmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9hbmdsZVVuaXRz
U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9hbmdsZVVuaXRz
Q2hhbmdlZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBjb25zdCBhbmdsZVVuaXRzRGF0YSA9IFsK
LSAgICAgICAgICAgIHtuYW1lOiBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkRFRywgbWlu
OiAwLCBtYXg6IDM2MCwgc3RlcDogMX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFyR3Jh
ZGllbnQuQW5nbGVVbml0cy5SQUQsIG1pbjogMCwgbWF4OiAyICogTWF0aC5QSSwgc3RlcDogMC4w
MX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5HUkFE
LCBtaW46IDAsIG1heDogNDAwLCBzdGVwOiAxfSwKLSAgICAgICAgICAgIHtuYW1lOiBXSS5MaW5l
YXJHcmFkaWVudC5BbmdsZVVuaXRzLlRVUk4sIG1pbjogMCwgbWF4OiAxLCBzdGVwOiAwLjAxfQor
ICAgICAgICAgICAge25hbWU6IFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuREVHLCBtaW46IDAsIG1h
eDogMzYwLCBzdGVwOiAxfSwKKyAgICAgICAgICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVu
aXRzLlJBRCwgbWluOiAwLCBtYXg6IDIgKiBNYXRoLlBJLCBzdGVwOiAwLjAxfSwKKyAgICAgICAg
ICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkdSQUQsIG1pbjogMCwgbWF4OiA0MDAs
IHN0ZXA6IDF9LAorICAgICAgICAgICAge25hbWU6IFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVS
TiwgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDF9CiAgICAgICAgIF07CiAKICAgICAgICAgdGhp
cy5fYW5nbGVVbml0c0NvbmZpZ3VyYXRpb24gPSBuZXcgTWFwKGFuZ2xlVW5pdHNEYXRhLm1hcCgo
e25hbWUsIG1pbiwgbWF4LCBzdGVwfSkgPT4gewpAQCAtMTE5LDggKzEyOSw5IEBAIFdJLkdyYWRp
ZW50RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
ICAgICBjb25zdCBpc0xpbmVhciA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuTGluZWFyR3JhZGll
bnQ7CiAgICAgICAgIGNvbnN0IGlzUmFkaWFsID0gZ3JhZGllbnQgaW5zdGFuY2VvZiBXSS5SYWRp
YWxHcmFkaWVudDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwp
OwotICAgICAgICBpZiAoIWlzTGluZWFyICYmICFpc1JhZGlhbCkKKyAgICAgICAgY29uc3QgaXND
b25pYyA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuQ29uaWNHcmFkaWVudDsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwgfHwgaXNDb25pYyk7CisgICAgICAgIGlm
ICghaXNMaW5lYXIgJiYgIWlzUmFkaWFsICYmICFpc0NvbmljKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gZ3JhZGllbnQ7CkBAIC0xMjksOCArMTQwLDEw
IEBAIFdJLkdyYWRpZW50RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMu
X2dyYWRpZW50LnJlcGVhdHMgPyAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIgOiAibGluZWFy
LWdyYWRpZW50IjsKIAogICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKLSAg
ICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoaXNSYWRpYWwpCiAgICAgICAgICAgICB0
aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFsdWUgPSB0aGlzLl9ncmFkaWVudC5yZXBlYXRzID8g
InJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQiIDogInJhZGlhbC1ncmFkaWVudCI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMu
X2dyYWRpZW50LnJlcGVhdHMgPyAicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50IiA6ICJjb25pYy1n
cmFkaWVudCI7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUo
KTsKICAgICB9CkBAIC0xODYsMTEgKzE5OSwxNSBAQCBXSS5HcmFkaWVudEVkaXRvciA9IGNsYXNz
IEdyYWRpZW50RWRpdG9yIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IGRlc2NyaXB0
b3IgPSB0aGlzLl9ncmFkaWVudFR5cGVzW3RoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZV07
CiAgICAgICAgIGlmICghKHRoaXMuX2dyYWRpZW50IGluc3RhbmNlb2YgZGVzY3JpcHRvci50eXBl
KSkgewogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV0kuTGluZWFyR3JhZGll
bnQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG5ldyBXSS5MaW5lYXJHcmFk
aWVudCh7dmFsdWU6IDE4MCwgdW5pdHM6IFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuREVH
fSwgdGhpcy5fZ3JhZGllbnQuc3RvcHMpOworICAgICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50
ID0gbmV3IFdJLkxpbmVhckdyYWRpZW50KHt2YWx1ZTogMTgwLCB1bml0czogV0kuR3JhZGllbnQu
QW5nbGVVbml0cy5ERUd9LCB0aGlzLl9ncmFkaWVudC5zdG9wcyk7CiAKICAgICAgICAgICAgICAg
ICB0aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV0kuUmFkaWFsR3JhZGllbnQpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBuZXcgV0kuUmFkaWFsR3JhZGllbnQoIiIs
IHRoaXMuX2dyYWRpZW50LnN0b3BzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLkNvbmljR3JhZGllbnQoe3ZhbHVlOiAwLCB1bml0
czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUd9LCBudWxsLCB0aGlzLl9ncmFkaWVudC5zdG9w
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmlu
ZGV4IDYxY2MwZmNiYWZkZDdhNTJjYWMzNWUyZDk3NTZmZDMwZDVjZTRhN2EuLjQ5OWZlY2U5YTEy
MTZiY2FiNzA4YjVmNmFhZDg2MjkyZjFmNzZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkuanMKQEAgLTY0OCw3ICs2NDgsNyBAQCBXSS5TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIF9hZGRHcmFkaWVudFRva2Vucyh0b2tlbnMpCiAgICAgewotICAgICAgICBsZXQg
Z3JhZGllbnRSZWdleCA9IC9eKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudCQv
aTsKKyAgICAgICAgbGV0IGdyYWRpZW50UmVnZXggPSAvXihyZXBlYXRpbmctKT8obGluZWFyfHJh
ZGlhbHxjb25pYyktZ3JhZGllbnQkL2k7CiAgICAgICAgIGxldCBuZXdUb2tlbnMgPSBbXTsKICAg
ICAgICAgbGV0IGdyYWRpZW50U3RhcnRJbmRleCA9IE5hTjsKICAgICAgICAgbGV0IG9wZW5QYXJl
bnRoZXNpcyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447885</attachid>
            <date>2021-12-23 11:03:30 -0800</date>
            <delta_ts>2021-12-23 12:36:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234562-20211223200328.patch</filename>
            <type>text/plain</type>
            <size>22699</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
YjIzMDEyZDc2ZjAxNzA3ZjJhZWFlNDdiMzgyYmEwMDFkZjkxNjE0Li43ODcwNTVjMzAzNTBmOWI4
ZDhlODNhN2MwYmM4NTI0OTQ3NDc2M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMS0xMi0yMSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEdyYWRpZW50IHN3YXRjaCBzaG91bGQgc3VwcG9ydCBjb25pYyBncmFkaWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDU2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9HcmFkaWVudC5qczoKKyAgICAgICAgKFdJLkdyYWRpZW50LmFuZ2xlRnJvbVN0cmluZyk6
CisgICAgICAgIChXSS5HcmFkaWVudC5mcm9tU3RyaW5nKToKKyAgICAgICAgKFdJLkdyYWRpZW50
LnByb3RvdHlwZS5zZXQgYW5nbGVWYWx1ZSk6CisgICAgICAgIChXSS5HcmFkaWVudC5wcm90b3R5
cGUuZ2V0IGFuZ2xlVmFsdWUpOgorICAgICAgICAoV0kuR3JhZGllbnQucHJvdG90eXBlLnNldCBh
bmdsZVVuaXRzKToKKyAgICAgICAgKFdJLkdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVVbml0
cyk6CisgICAgICAgIChXSS5HcmFkaWVudC5wcm90b3R5cGUuX2FuZ2xlVmFsdWVGb3JVbml0cyk6
CisgICAgICAgIChXSS5HcmFkaWVudCk6CisgICAgICAgIChXSS5MaW5lYXJHcmFkaWVudC5mcm9t
Q29tcG9uZW50cyk6CisgICAgICAgIChXSS5MaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXSS5S
YWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5mcm9tQ29tcG9uZW50
cyk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVmFsdWUp
OgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmdsZVZhbHVlKToK
KyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5zZXQgYW5nbGVVbml0cyk6Cisg
ICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUuZ2V0IGFuZ2xlVW5pdHMpOgorICAg
ICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLmNvcHkpOgorICAgICAgICAoV0kuUmFk
aWFsR3JhZGllbnQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdJLkNvbmljR3JhZGll
bnQpOgorICAgICAgICAoV0kuQ29uaWNHcmFkaWVudC5mcm9tQ29tcG9uZW50cyk6CisgICAgICAg
IChXSS5Db25pY0dyYWRpZW50LnByb3RvdHlwZS5jb3B5KToKKyAgICAgICAgKFdJLkNvbmljR3Jh
ZGllbnQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50LnBy
b3RvdHlwZS5zZXQgYW5nbGVWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5MaW5lYXJHcmFk
aWVudC5wcm90b3R5cGUuZ2V0IGFuZ2xlVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV0kuTGlu
ZWFyR3JhZGllbnQucHJvdG90eXBlLnNldCBhbmdsZVVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVVbml0cyk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuX2FuZ2xlVmFsdWVGb3JVbml0cyk6
IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1h
cmtlcnMuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5q
czoKKyAgICAgICAgKFdJLkdyYWRpZW50RWRpdG9yKToKKyAgICAgICAgKFdJLkdyYWRpZW50RWRp
dG9yLnByb3RvdHlwZS5zZXQgZ3JhZGllbnQpOgorICAgICAgICAoV0kuR3JhZGllbnRFZGl0b3Iu
cHJvdG90eXBlLl9ncmFkaWVudFR5cGVDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qczoKKyAgICAgICAgKFdJLlNwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX2FkZEdyYWRpZW50VG9rZW5zKToKKwogMjAyMS0x
Mi0yMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQXNzZXJ0aW9uIEZhaWxlZCByZW1vdmluZyBzdWJ2aWV3IGluIENvbnRlbnRWaWV3
Q29udGFpbmVyLnByb3RvdHlwZS5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA4NTE4NzE2ZWNjZTUyZmI3ZGNlMjU4ZTM4ZGYx
N2UwMzU0ZTdjNGJiLi4yZTg2NTJmYWViM2IxN2E1NmUyNDYyMzUyMzI2NWJhNTk5ODAyNWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTM2Nyw2ICszNjcsNyBAQCBsb2Nh
bGl6ZWRTdHJpbmdzWyJDb25uZWN0aW9uIENsb3NlIEZyYW1lIl0gPSAiQ29ubmVjdGlvbiBDbG9z
ZSBGcmFtZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb25uZWN0aW9uIENsb3NlZCJdID0gIkNvbm5l
Y3Rpb24gQ2xvc2VkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbm5lY3Rpb24gSUQiXSA9ICJDb25u
ZWN0aW9uIElEIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbm5lY3Rpb246Il0gPSAiQ29ubmVjdGlv
bjoiOworbG9jYWxpemVkU3RyaW5nc1siQ29uaWMgR3JhZGllbnQiXSA9ICJDb25pYyBHcmFkaWVu
dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb25zb2xlIl0gPSAiQ29uc29sZSI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJDb25zb2xlIEV2YWx1YXRpb24iXSA9ICJDb25zb2xlIEV2YWx1YXRpb24iOwogbG9j
YWxpemVkU3RyaW5nc1siQ29uc29sZSBFdmFsdWF0aW9uICVkIl0gPSAiQ29uc29sZSBFdmFsdWF0
aW9uICVkIjsKQEAgLTExODMsNiArMTE4NCw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlJlbmRlciBQ
aXBlbGluZSAlZCJdID0gIlJlbmRlciBQaXBlbGluZSAlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJS
ZW5kZXJpbmcgRnJhbWVzIl0gPSAiUmVuZGVyaW5nIEZyYW1lcyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJSZXBlYXRpbmcgTGluZWFyIEdyYWRpZW50Il0gPSAiUmVwZWF0aW5nIExpbmVhciBHcmFkaWVu
dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50Il0gPSAiUmVw
ZWF0aW5nIFJhZGlhbCBHcmFkaWVudCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJSZXBlYXRpbmcgQ29u
aWMgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcgQ29uaWMgR3JhZGllbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siUmVxdWVzdCJdID0gIlJlcXVlc3QiOwogbG9jYWxpemVkU3RyaW5nc1siUmVxdWVzdCAm
IFJlc3BvbnNlIl0gPSAiUmVxdWVzdCAmIFJlc3BvbnNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJl
cXVlc3QgKERPTSBUcmVlKSJdID0gIlJlcXVlc3QgKERPTSBUcmVlKSI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NT
TWFuYWdlci5qcwppbmRleCBjZjRkMTE0NGU3MDc0OTczODgyNDc2OTA5OGI0NzRiMTgyOGNlOGE1
Li4wOTZkMWMyYjhiMzEyN2NlNTJlZDlmNzY2NWIzMDM4MjljMjFkMWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanMKQEAgLTExMSw2ICsxMTEsMTAgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNz
IENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGZvciAobGV0IGNvbG9y
IG9mIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29sb3JzKQogICAgICAgICAgICAgICAgIGNv
bG9yS2V5d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9yKGNvbG9yKV0gPSB0cnVl
OwogCisgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlc2Uga2V5d29yZHMgb25jZSB0aGV5
IGFyZSBidWlsdC1pbiBjb2RlbWlycm9yIG9yIG9uY2Ugd2UgZ2V0IHZhbHVlcyBmcm9tIFdlYktp
dCBpdHNlbGYuCisgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvclsiY29uaWMt
Z3JhZGllbnQiXSA9IHRydWU7CisgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJv
clsicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50Il0gPSB0cnVlOworCiAgICAgICAgICAgICBmdW5j
dGlvbiB1cGRhdGVDb2RlTWlycm9yQ1NTTW9kZShtaW1lVHlwZSkgewogICAgICAgICAgICAgICAg
IGxldCBtb2RlU3BlYyA9IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUobWltZVR5cGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGll
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGll
bnQuanMKaW5kZXggZjczZGU3NWVlY2JmZGYyNzcwODA4NGUwOWM3OTY3MzcwM2FhMGRkNi4uODJh
N2RmNzFmZTc4NDQzMzhhNzZhMjIwYjMyZDZjYTYwNWYyN2YzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwpAQCAt
MzMsMTUgKzMzLDI2IEBAIFdJLkdyYWRpZW50ID0gY2xhc3MgR3JhZGllbnQKIAogICAgIC8vIFN0
YXRpYwogCisgICAgc3RhdGljIGFuZ2xlRnJvbVN0cmluZyhzdHJpbmcpCisgICAgeworICAgICAg
ICBsZXQgbWF0Y2ggPSBzdHJpbmcubWF0Y2goLyhbLVxkXC5dKykoXHcrKS8pOworICAgICAgICBp
ZiAoIW1hdGNoIHx8ICFPYmplY3QudmFsdWVzKFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMpLmluY2x1
ZGVzKG1hdGNoWzJdKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVy
biB7IHZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzFdKSwgdW5pdHM6IG1hdGNoWzJdIH07CisgICAg
fQorCiAgICAgc3RhdGljIGZyb21TdHJpbmcoY3NzU3RyaW5nKQogICAgIHsKICAgICAgICAgdmFy
IHR5cGU7CiAgICAgICAgIHZhciBvcGVuaW5nUGFyZW50aGVzaXNJbmRleCA9IGNzc1N0cmluZy5p
bmRleE9mKCIoIik7CiAgICAgICAgIHZhciB0eXBlU3RyaW5nID0gY3NzU3RyaW5nLnN1YnN0cmlu
ZygwLCBvcGVuaW5nUGFyZW50aGVzaXNJbmRleCk7Ci0gICAgICAgIGlmICh0eXBlU3RyaW5nLmlu
ZGV4T2YoV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyKSAhPT0gLTEpCisgICAgICAgIGlmICh0eXBl
U3RyaW5nLmluY2x1ZGVzKFdJLkdyYWRpZW50LlR5cGVzLkxpbmVhcikpCiAgICAgICAgICAgICB0
eXBlID0gV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyOwotICAgICAgICBlbHNlIGlmICh0eXBlU3Ry
aW5nLmluZGV4T2YoV0kuR3JhZGllbnQuVHlwZXMuUmFkaWFsKSAhPT0gLTEpCisgICAgICAgIGVs
c2UgaWYgKHR5cGVTdHJpbmcuaW5jbHVkZXMoV0kuR3JhZGllbnQuVHlwZXMuUmFkaWFsKSkKICAg
ICAgICAgICAgIHR5cGUgPSBXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWw7CisgICAgICAgIGVsc2Ug
aWYgKHR5cGVTdHJpbmcuaW5jbHVkZXMoV0kuR3JhZGllbnQuVHlwZXMuQ29uaWMpKQorICAgICAg
ICAgICAgdHlwZSA9IFdJLkdyYWRpZW50LlR5cGVzLkNvbmljOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKIApAQCAtOTEsOCArMTAyLDEwIEBAIFdJLkdyYWRpZW50ID0g
Y2xhc3MgR3JhZGllbnQKICAgICAgICAgdmFyIGdyYWRpZW50OwogICAgICAgICBpZiAodHlwZSA9
PT0gV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyKQogICAgICAgICAgICAgZ3JhZGllbnQgPSBXSS5M
aW5lYXJHcmFkaWVudC5mcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKTsKLSAgICAgICAgZWxzZQor
ICAgICAgICBlbHNlIGlmICh0eXBlID09PSBXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwpCiAgICAg
ICAgICAgICBncmFkaWVudCA9IFdJLlJhZGlhbEdyYWRpZW50LmZyb21Db21wb25lbnRzKGNvbXBv
bmVudHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBncmFkaWVudCA9IFdJLkNvbmljR3Jh
ZGllbnQuZnJvbUNvbXBvbmVudHMoY29tcG9uZW50cyk7CiAKICAgICAgICAgaWYgKGdyYWRpZW50
KQogICAgICAgICAgICAgZ3JhZGllbnQucmVwZWF0cyA9IHR5cGVTdHJpbmcuc3RhcnRzV2l0aCgi
cmVwZWF0aW5nIik7CkBAIC0xNDksNiArMTYyLDI0IEBAIFdJLkdyYWRpZW50ID0gY2xhc3MgR3Jh
ZGllbnQKIAogICAgIC8vIFB1YmxpYwogCisgICAgc2V0IGFuZ2xlVmFsdWUodmFsdWUpIHsgdGhp
cy5fYW5nbGUudmFsdWUgPSB2YWx1ZTsgfQorCisgICAgZ2V0IGFuZ2xlVmFsdWUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZhbHVlLm1heERlY2ltYWxzKDIpOworICAgIH0K
KworICAgIHNldCBhbmdsZVVuaXRzKHVuaXRzKQorICAgIHsKKyAgICAgICAgaWYgKHVuaXRzID09
PSB0aGlzLl9hbmdsZS51bml0cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9hbmdsZS52YWx1ZSA9IHRoaXMuX2FuZ2xlVmFsdWVGb3JVbml0cyh1bml0cyk7CisgICAgICAg
IHRoaXMuX2FuZ2xlLnVuaXRzID0gdW5pdHM7CisgICAgfQorCisgICAgZ2V0IGFuZ2xlVW5pdHMo
KSB7IHJldHVybiB0aGlzLl9hbmdsZS51bml0czsgfQorCiAgICAgY29weSgpCiAgICAgewogICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgpAQCAtMTU4LDExICsxODksNzMgQEAg
V0kuR3JhZGllbnQgPSBjbGFzcyBHcmFkaWVudAogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfYW5nbGVW
YWx1ZUZvclVuaXRzKHVuaXRzKQorICAgIHsKKyAgICAgICAgaWYgKHVuaXRzID09PSB0aGlzLl9h
bmdsZS51bml0cykKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbmdsZS52YWx1ZTsKKworICAg
ICAgICBsZXQgZGVnID0gMDsKKworICAgICAgICBzd2l0Y2ggKHRoaXMuX2FuZ2xlLnVuaXRzKSB7
CisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUc6CisgICAgICAgICAgICBk
ZWcgPSB0aGlzLl9hbmdsZS52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5SQUQ6CisgICAgICAgICAgICBkZWcgPSB0aGlzLl9h
bmdsZS52YWx1ZSAqIDE4MCAvIE1hdGguUEk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuR1JBRDoKKyAgICAgICAgICAgIGRlZyA9IHRo
aXMuX2FuZ2xlLnZhbHVlIC8gNDAwICogMzYwOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLlRVUk46CisgICAgICAgICAgICBkZWcgPSB0
aGlzLl9hbmdsZS52YWx1ZSAqIDM2MDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGBVbmtub3duIGFuZ2xl
IHVuaXRzICIke3RoaXMuX2FuZ2xlLnVuaXRzfSJgKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisKKyAgICAgICAgbGV0IHZhbHVlID0gMDsKKworICAgICAgICBzd2l0Y2ggKHVu
aXRzKSB7CisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUc6CisgICAgICAg
ICAgICB2YWx1ZSA9IGRlZzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0ku
R3JhZGllbnQuQW5nbGVVbml0cy5SQUQ6CisgICAgICAgICAgICB2YWx1ZSA9IGRlZyAqIE1hdGgu
UEkgLyAxODA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkdyYWRpZW50
LkFuZ2xlVW5pdHMuR1JBRDoKKyAgICAgICAgICAgIHZhbHVlID0gZGVnIC8gMzYwICogNDAwOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRz
LlRVUk46CisgICAgICAgICAgICB2YWx1ZSA9IGRlZyAvIDM2MDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KIH07CiAKIFdJLkdy
YWRpZW50LlR5cGVzID0gewogICAgIExpbmVhcjogImxpbmVhci1ncmFkaWVudCIsCi0gICAgUmFk
aWFsOiAicmFkaWFsLWdyYWRpZW50IgorICAgIFJhZGlhbDogInJhZGlhbC1ncmFkaWVudCIsCisg
ICAgQ29uaWM6ICJjb25pYy1ncmFkaWVudCIsCit9OworCitXSS5HcmFkaWVudC5BbmdsZVVuaXRz
ID0geworICAgIERFRzogImRlZyIsCisgICAgUkFEOiAicmFkIiwKKyAgICBHUkFEOiAiZ3JhZCIs
CisgICAgVFVSTjogInR1cm4iLAogfTsKIAogV0kuTGluZWFyR3JhZGllbnQgPSBjbGFzcyBMaW5l
YXJHcmFkaWVudCBleHRlbmRzIFdJLkdyYWRpZW50CkBAIC0xNzcsMTUgKzI3MCwxMyBAQCBXSS5M
aW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50IGV4dGVuZHMgV0kuR3JhZGllbnQK
IAogICAgIHN0YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsKLSAgICAgICAg
bGV0IGFuZ2xlID0ge3ZhbHVlOiAxODAsIHVuaXRzOiBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVu
aXRzLkRFR307CisgICAgICAgIGxldCBhbmdsZSA9IHt2YWx1ZTogMTgwLCB1bml0czogV0kuR3Jh
ZGllbnQuQW5nbGVVbml0cy5ERUd9OwogCiAgICAgICAgIGlmIChjb21wb25lbnRzWzBdLmxlbmd0
aCA9PT0gMSAmJiAhV0kuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRzWzBdWzBdKSkgewotICAg
ICAgICAgICAgbGV0IG1hdGNoID0gY29tcG9uZW50c1swXVswXS5tYXRjaCgvKFstXGRcLl0rKShc
dyspLyk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoIHx8ICFPYmplY3QudmFsdWVzKFdJLkxpbmVh
ckdyYWRpZW50LkFuZ2xlVW5pdHMpLmluY2x1ZGVzKG1hdGNoWzJdKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIGFuZ2xlID0gV0kuR3JhZGllbnQuYW5nbGVGcm9t
U3RyaW5nKGNvbXBvbmVudHNbMF1bMF0pOwogCi0gICAgICAgICAgICBhbmdsZS52YWx1ZSA9IHBh
cnNlRmxvYXQobWF0Y2hbMV0pOwotICAgICAgICAgICAgYW5nbGUudW5pdHMgPSBtYXRjaFsyXTsK
KyAgICAgICAgICAgIGlmICghYW5nbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAK
ICAgICAgICAgICAgIGNvbXBvbmVudHMuc2hpZnQoKTsKICAgICAgICAgfSBlbHNlIGlmIChjb21w
b25lbnRzWzBdWzBdID09PSAidG8iKSB7CkBAIC0yMzMsMjYgKzMyNCw2IEBAIFdJLkxpbmVhckdy
YWRpZW50ID0gY2xhc3MgTGluZWFyR3JhZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogICAgICAg
ICByZXR1cm4gbmV3IFdJLkxpbmVhckdyYWRpZW50KGFuZ2xlLCBzdG9wcyk7CiAgICAgfQogCi0g
ICAgLy8gUHVibGljCi0KLSAgICBzZXQgYW5nbGVWYWx1ZSh2YWx1ZSkgeyB0aGlzLl9hbmdsZS52
YWx1ZSA9IHZhbHVlOyB9Ci0KLSAgICBnZXQgYW5nbGVWYWx1ZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fYW5nbGUudmFsdWUubWF4RGVjaW1hbHMoMik7Ci0gICAgfQotCi0gICAgc2V0
IGFuZ2xlVW5pdHModW5pdHMpCi0gICAgewotICAgICAgICBpZiAodW5pdHMgPT09IHRoaXMuX2Fu
Z2xlLnVuaXRzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2FuZ2xlLnZh
bHVlID0gdGhpcy5fYW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKTsKLSAgICAgICAgdGhpcy5fYW5n
bGUudW5pdHMgPSB1bml0czsKLSAgICB9Ci0KLSAgICBnZXQgYW5nbGVVbml0cygpIHsgcmV0dXJu
IHRoaXMuX2FuZ2xlLnVuaXRzOyB9Ci0KICAgICBjb3B5KCkKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgV0kuTGluZWFyR3JhZGllbnQodGhpcy5fYW5nbGUsIHRoaXMuc3RvcHMuY29uY2F0KCkp
OwpAQCAtMjg3LDEwNiArMzU4LDEyNyBAQCBXSS5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVh
ckdyYWRpZW50IGV4dGVuZHMgV0kuR3JhZGllbnQKIAogICAgICAgICByZXR1cm4gKHRoaXMucmVw
ZWF0cyA/ICJyZXBlYXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSArICIoIiArIHN0ciArICIpIjsK
ICAgICB9Cit9OwogCi0gICAgLy8gUHJpdmF0ZQorV0kuUmFkaWFsR3JhZGllbnQgPSBjbGFzcyBS
YWRpYWxHcmFkaWVudCBleHRlbmRzIFdJLkdyYWRpZW50Cit7CisgICAgY29uc3RydWN0b3Ioc2l6
aW5nLCBzdG9wcykKKyAgICB7CisgICAgICAgIHN1cGVyKFdJLkdyYWRpZW50LlR5cGVzLlJhZGlh
bCwgc3RvcHMpOworICAgICAgICB0aGlzLnNpemluZyA9IHNpemluZzsKKyAgICB9CiAKLSAgICBf
YW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKQorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGZy
b21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAgICBpZiAodW5pdHMgPT09IHRo
aXMuX2FuZ2xlLnVuaXRzKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZhbHVlOwor
ICAgICAgICB2YXIgc2l6aW5nID0gIVdJLkNvbG9yLmZyb21TdHJpbmcoY29tcG9uZW50c1swXS5q
b2luKCIgIikpID8gY29tcG9uZW50cy5zaGlmdCgpLmpvaW4oIiAiKSA6ICIiOwogCi0gICAgICAg
IGxldCBkZWcgPSAwOworICAgICAgICB2YXIgc3RvcHMgPSBXSS5HcmFkaWVudC5zdG9wc1dpdGhD
b21wb25lbnRzKGNvbXBvbmVudHMpOworICAgICAgICBpZiAoIXN0b3BzKQorICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKLSAgICAgICAgc3dpdGNoICh0aGlzLl9hbmdsZS51bml0cykgewotICAg
ICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuREVHOgotICAgICAgICAgICAg
ZGVnID0gdGhpcy5fYW5nbGUudmFsdWU7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0
dXJuIG5ldyBXSS5SYWRpYWxHcmFkaWVudChzaXppbmcsIHN0b3BzKTsKKyAgICB9CiAKLSAgICAg
ICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLlJBRDoKLSAgICAgICAgICAgIGRl
ZyA9IHRoaXMuX2FuZ2xlLnZhbHVlICogMTgwIC8gTWF0aC5QSTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIC8vIFB1YmxpYwogCi0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGllbnQuQW5nbGVV
bml0cy5HUkFEOgotICAgICAgICAgICAgZGVnID0gdGhpcy5fYW5nbGUudmFsdWUgLyA0MDAgKiAz
NjA7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzZXQgYW5nbGVWYWx1ZSh2YWx1ZSkgeyB9CiAK
LSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLlRVUk46Ci0gICAgICAg
ICAgICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZSAqIDM2MDsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgIGdldCBhbmdsZVZhbHVlKCkgeyByZXR1cm4gbnVsbDsgfQogCi0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGBVbmtub3duIGFuZ2xlIHVuaXRz
ICIke3RoaXMuX2FuZ2xlLnVuaXRzfSJgKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICB9CisgICAgc2V0IGFuZ2xlVW5pdHModW5pdHMpIHsgfQogCi0gICAgICAgIGxldCB2YWx1ZSA9
IDA7CisgICAgZ2V0IGFuZ2xlVW5pdHMoKSB7IHJldHVybiBudWxsOyB9CiAKLSAgICAgICAgc3dp
dGNoICh1bml0cykgewotICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMu
REVHOgotICAgICAgICAgICAgdmFsdWUgPSBkZWc7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBj
b3B5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV0kuUmFkaWFsR3JhZGllbnQodGhpcy5z
aXppbmcsIHRoaXMuc3RvcHMuY29uY2F0KCkpOworICAgIH0KIAotICAgICAgICBjYXNlIFdJLkxp
bmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuUkFEOgotICAgICAgICAgICAgdmFsdWUgPSBkZWcgKiBN
YXRoLlBJIC8gMTgwOwotICAgICAgICAgICAgYnJlYWs7CisgICAgdG9TdHJpbmcoKQorICAgIHsK
KyAgICAgICAgdmFyIHN0ciA9IHRoaXMuc2l6aW5nOwogCi0gICAgICAgIGNhc2UgV0kuTGluZWFy
R3JhZGllbnQuQW5nbGVVbml0cy5HUkFEOgotICAgICAgICAgICAgdmFsdWUgPSBkZWcgLyAzNjAg
KiA0MDA7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHN0ciAhPT0gIiIpCisgICAg
ICAgICAgICBzdHIgKz0gIiwgIjsKIAotICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFu
Z2xlVW5pdHMuVFVSTjoKLSAgICAgICAgICAgIHZhbHVlID0gZGVnIC8gMzYwOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgc3RyICs9IHRoaXMuc3RyaW5nRnJvbVN0b3Bz
KHRoaXMuc3RvcHMpOwogCi0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuICh0
aGlzLnJlcGVhdHMgPyAicmVwZWF0aW5nLSIgOiAiIikgKyB0aGlzLnR5cGUgKyAiKCIgKyBzdHIg
KyAiKSI7CiAgICAgfQogfTsKIAotV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cyA9IHsKLSAg
ICBERUc6ICJkZWciLAotICAgIFJBRDogInJhZCIsCi0gICAgR1JBRDogImdyYWQiLAotICAgIFRV
Uk46ICJ0dXJuIiwKLX07Ci0KLVdJLlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGll
bnQgZXh0ZW5kcyBXSS5HcmFkaWVudAorV0kuQ29uaWNHcmFkaWVudCA9IGNsYXNzIENvbmljR3Jh
ZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogewotICAgIGNvbnN0cnVjdG9yKHNpemluZywgc3Rv
cHMpCisgICAgY29uc3RydWN0b3IoYW5nbGUsIHBvc2l0aW9uLCBzdG9wcykKICAgICB7Ci0gICAg
ICAgIHN1cGVyKFdJLkdyYWRpZW50LlR5cGVzLlJhZGlhbCwgc3RvcHMpOwotICAgICAgICB0aGlz
LnNpemluZyA9IHNpemluZzsKKyAgICAgICAgc3VwZXIoV0kuR3JhZGllbnQuVHlwZXMuQ29uaWMs
IHN0b3BzKTsKKworICAgICAgICB0aGlzLl9hbmdsZSA9IGFuZ2xlOworICAgICAgICB0aGlzLl9w
b3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwogCiAgICAgc3RhdGlj
IGZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAgICB2YXIgc2l6aW5nID0g
IVdJLkNvbG9yLmZyb21TdHJpbmcoY29tcG9uZW50c1swXS5qb2luKCIgIikpID8gY29tcG9uZW50
cy5zaGlmdCgpLmpvaW4oIiAiKSA6ICIiOworICAgICAgICBsZXQgYW5nbGUgPSB7IHZhbHVlOiAw
LCB1bml0czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUcgfTsKKyAgICAgICAgbGV0IHBvc2l0
aW9uID0gbnVsbDsKKyAgICAgICAgbGV0IGhhc0N1c3RvbUFuZ2xlT3JQb3NpdGlvbiA9IGZhbHNl
OwogCi0gICAgICAgIHZhciBzdG9wcyA9IFdJLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMo
Y29tcG9uZW50cyk7CisgICAgICAgIGlmIChjb21wb25lbnRzWzBdWzBdID09ICJmcm9tIikgewor
ICAgICAgICAgICAgY29tcG9uZW50c1swXS5zaGlmdCgpOworICAgICAgICAgICAgYW5nbGUgPSBX
SS5HcmFkaWVudC5hbmdsZUZyb21TdHJpbmcoY29tcG9uZW50c1swXVswXSk7CisgICAgICAgICAg
ICBpZiAoIWFuZ2xlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAg
Y29tcG9uZW50c1swXS5zaGlmdCgpOworICAgICAgICAgICAgaGFzQ3VzdG9tQW5nbGVPclBvc2l0
aW9uID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29tcG9uZW50c1swXVswXSA9PSAi
YXQiKSB7CisgICAgICAgICAgICBjb21wb25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICAv
LyBUT0RPOiBQb3RlbnRpYWxseSBkbyBzb21lIG1vcmUgZWxhYm9yYXRlIHBhcnNpbmcgb2YgcG9z
aXRpb24uCisgICAgICAgICAgICBpZiAoY29tcG9uZW50c1swXS5sZW5ndGggPD0gMCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gY29tcG9uZW50
c1swXS5qb2luKCIgIik7CisgICAgICAgICAgICBoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24gPSB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24pIHsK
KyAgICAgICAgICAgIGNvbXBvbmVudHMuc2hpZnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBzdG9wcyA9IFdJLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CiAg
ICAgICAgIGlmICghc3RvcHMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBy
ZXR1cm4gbmV3IFdJLlJhZGlhbEdyYWRpZW50KHNpemluZywgc3RvcHMpOworICAgICAgICByZXR1
cm4gbmV3IFdJLkNvbmljR3JhZGllbnQoYW5nbGUsIHBvc2l0aW9uLCBzdG9wcyk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBjb3B5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
V0kuUmFkaWFsR3JhZGllbnQodGhpcy5zaXppbmcsIHRoaXMuc3RvcHMuY29uY2F0KCkpOworICAg
ICAgICByZXR1cm4gbmV3IFdJLkNvbmljR3JhZGllbnQodGhpcy5fYW5nbGUsIHRoaXMuX3Bvc2l0
aW9uLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKICAgICB9CiAKICAgICB0b1N0cmluZygpCiAgICAg
ewotICAgICAgICB2YXIgc3RyID0gdGhpcy5zaXppbmc7CisgICAgICAgIGxldCBzdHIgPSAiIjsK
IAotICAgICAgICBpZiAoc3RyICE9PSAiIikKKyAgICAgICAgaWYgKHRoaXMuX2FuZ2xlLnZhbHVl
ID4gMCkKKyAgICAgICAgICAgIHN0ciArPSBgZnJvbSAke3RoaXMuX2FuZ2xlLnZhbHVlfSR7dGhp
cy5fYW5nbGUudW5pdHN9YDsKKworICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGlmIChzdHIgIT0gIiIpCisgICAgICAgICAgICAgICAgc3RyICs9ICIgIjsKKyAgICAg
ICAgICAgIHN0ciArPSBgYXQgJHt0aGlzLl9wb3NpdGlvbn1gOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHN0ciAhPSAiIikKICAgICAgICAgICAgIHN0ciArPSAiLCAiOwogCiAgICAgICAgIHN0
ciArPSB0aGlzLnN0cmluZ0Zyb21TdG9wcyh0aGlzLnN0b3BzKTsKIAogICAgICAgICByZXR1cm4g
KHRoaXMucmVwZWF0cyA/ICJyZXBlYXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSArICIoIiArIHN0
ciArICIpIjsKICAgICB9Ci19OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpz
CmluZGV4IDFkNDc2OTMwMWY1NjUyNDQ5YTk5ZjM5NDA5MWY0N2VhMDA3ZjI3ZjkuLjUyZWIxZDgw
YTFkY2IzOWQ0ZmEwM2UzMTE1NWFjNTBlNTYzOWI4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9y
VGV4dE1hcmtlcnMuanMKQEAgLTExMSw3ICsxMTEsNyBAQCBmdW5jdGlvbiBjcmVhdGVDb2RlTWly
cm9yQ29sb3JUZXh0TWFya2Vycyhjb2RlTWlycm9yLCByYW5nZSwgb3B0aW9ucyA9IHt9KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKC8ocmVwZWF0aW5n
LSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50JC8udGVzdChsaW5lQ29udGVudC5zdWJzdHJpbmco
MCwgaW5kZXgpKSkKKyAgICAgICAgaWYgKC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29u
aWMpLWdyYWRpZW50JC8udGVzdChsaW5lQ29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBBY3QgYXMgYSBuZWdhdGl2ZSBs
b29rLWJlaGluZCBhbmQgZGlzYWxsb3cgdGhlIGNvbG9yIGZyb20gYmVpbmcgcHJlZml4aW5nIHdp
dGggY2VydGFpbiBjaGFyYWN0ZXJzLgpAQCAtMTI4LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIGNyZWF0
ZUNvZGVNaXJyb3JHcmFkaWVudFRleHRNYXJrZXJzKGNvZGVNaXJyb3IsIHJhbmdlLCBvcHRpb25z
ID0ge30pCiAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0UmFuZ2UgPyBy
YW5nZS5zdGFydExpbmUgOiAwOwogICAgIHZhciBlbmQgPSByYW5nZSBpbnN0YW5jZW9mIFdJLlRl
eHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAxIDogY29kZU1pcnJvci5saW5lQ291bnQoKTsKIAot
ICAgIHZhciBncmFkaWVudFJlZ2V4ID0gLyhyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3Jh
ZGllbnRccypcKFxzKi9nOworICAgIHZhciBncmFkaWVudFJlZ2V4ID0gLyhyZXBlYXRpbmctKT8o
bGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnRccypcKFxzKi9nOwogCiAgICAgZm9yICh2YXIg
bGluZU51bWJlciA9IHN0YXJ0OyBsaW5lTnVtYmVyIDwgZW5kOyArK2xpbmVOdW1iZXIpIHsKICAg
ICAgICAgdmFyIGxpbmVDb250ZW50ID0gY29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3Jh
ZGllbnRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HcmFkaWVudEVkaXRvci5qcwppbmRleCBkYTc4NDMxMjAxMDc2OWU2M2QzMjdiMzZjMjNhY2Fh
ZTg2ZWVlMzhjLi45Y2NlNTg1NmM2MWYyN2QxODA4Y2IwYmYwMGEzMDM0OTIxNjNkZGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVu
dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9HcmFkaWVudEVkaXRvci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxNSBEZXZpbiBSb3Vzc28gPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+LiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDUsNiArNDUsMTEgQEAgV0kuR3JhZGll
bnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgICAgIGxhYmVsOiBXSS5VSVN0cmluZygiUmFkaWFsIEdyYWRpZW50IiksCiAgICAgICAg
ICAgICAgICAgcmVwZWF0czogZmFsc2UKICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiY29u
aWMtZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAgdHlwZTogV0kuQ29uaWNHcmFkaWVudCwK
KyAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIkNvbmljIEdyYWRpZW50IiksCisg
ICAgICAgICAgICAgICAgcmVwZWF0czogZmFsc2UKKyAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCI6IHsKICAgICAgICAgICAgICAgICB0eXBlOiBX
SS5MaW5lYXJHcmFkaWVudCwKICAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIlJl
cGVhdGluZyBMaW5lYXIgR3JhZGllbnQiKSwKQEAgLTU0LDcgKzU5LDEyIEBAIFdJLkdyYWRpZW50
RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICB0eXBlOiBXSS5SYWRpYWxHcmFkaWVudCwKICAgICAgICAgICAgICAgICBsYWJlbDog
V0kuVUlTdHJpbmcoIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiKSwKICAgICAgICAgICAgICAg
ICByZXBlYXRzOiB0cnVlCi0gICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCI6IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBX
SS5Db25pY0dyYWRpZW50LAorICAgICAgICAgICAgICAgIGxhYmVsOiBXSS5VSVN0cmluZygiUmVw
ZWF0aW5nIENvbmljIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAgcmVwZWF0czogdHJ1ZQor
ICAgICAgICAgICAgfSwKICAgICAgICAgfTsKICAgICAgICAgdGhpcy5fZWRpdGluZ0NvbG9yID0g
ZmFsc2U7CiAKQEAgLTkzLDEwICsxMDMsMTAgQEAgV0kuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBH
cmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9hbmdsZVVuaXRz
U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9hbmdsZVVuaXRz
Q2hhbmdlZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBjb25zdCBhbmdsZVVuaXRzRGF0YSA9IFsK
LSAgICAgICAgICAgIHtuYW1lOiBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkRFRywgbWlu
OiAwLCBtYXg6IDM2MCwgc3RlcDogMX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFyR3Jh
ZGllbnQuQW5nbGVVbml0cy5SQUQsIG1pbjogMCwgbWF4OiAyICogTWF0aC5QSSwgc3RlcDogMC4w
MX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5HUkFE
LCBtaW46IDAsIG1heDogNDAwLCBzdGVwOiAxfSwKLSAgICAgICAgICAgIHtuYW1lOiBXSS5MaW5l
YXJHcmFkaWVudC5BbmdsZVVuaXRzLlRVUk4sIG1pbjogMCwgbWF4OiAxLCBzdGVwOiAwLjAxfQor
ICAgICAgICAgICAge25hbWU6IFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuREVHLCBtaW46IDAsIG1h
eDogMzYwLCBzdGVwOiAxfSwKKyAgICAgICAgICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVu
aXRzLlJBRCwgbWluOiAwLCBtYXg6IDIgKiBNYXRoLlBJLCBzdGVwOiAwLjAxfSwKKyAgICAgICAg
ICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkdSQUQsIG1pbjogMCwgbWF4OiA0MDAs
IHN0ZXA6IDF9LAorICAgICAgICAgICAge25hbWU6IFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVS
TiwgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDF9CiAgICAgICAgIF07CiAKICAgICAgICAgdGhp
cy5fYW5nbGVVbml0c0NvbmZpZ3VyYXRpb24gPSBuZXcgTWFwKGFuZ2xlVW5pdHNEYXRhLm1hcCgo
e25hbWUsIG1pbiwgbWF4LCBzdGVwfSkgPT4gewpAQCAtMTE5LDggKzEyOSw5IEBAIFdJLkdyYWRp
ZW50RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
ICAgICBjb25zdCBpc0xpbmVhciA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuTGluZWFyR3JhZGll
bnQ7CiAgICAgICAgIGNvbnN0IGlzUmFkaWFsID0gZ3JhZGllbnQgaW5zdGFuY2VvZiBXSS5SYWRp
YWxHcmFkaWVudDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwp
OwotICAgICAgICBpZiAoIWlzTGluZWFyICYmICFpc1JhZGlhbCkKKyAgICAgICAgY29uc3QgaXND
b25pYyA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuQ29uaWNHcmFkaWVudDsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwgfHwgaXNDb25pYyk7CisgICAgICAgIGlm
ICghaXNMaW5lYXIgJiYgIWlzUmFkaWFsICYmICFpc0NvbmljKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gZ3JhZGllbnQ7CkBAIC0xMjksOCArMTQwLDEw
IEBAIFdJLkdyYWRpZW50RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMu
X2dyYWRpZW50LnJlcGVhdHMgPyAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIgOiAibGluZWFy
LWdyYWRpZW50IjsKIAogICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKLSAg
ICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoaXNSYWRpYWwpCiAgICAgICAgICAgICB0
aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFsdWUgPSB0aGlzLl9ncmFkaWVudC5yZXBlYXRzID8g
InJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQiIDogInJhZGlhbC1ncmFkaWVudCI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMu
X2dyYWRpZW50LnJlcGVhdHMgPyAicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50IiA6ICJjb25pYy1n
cmFkaWVudCI7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUo
KTsKICAgICB9CkBAIC0xODYsMTEgKzE5OSwxNSBAQCBXSS5HcmFkaWVudEVkaXRvciA9IGNsYXNz
IEdyYWRpZW50RWRpdG9yIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IGRlc2NyaXB0
b3IgPSB0aGlzLl9ncmFkaWVudFR5cGVzW3RoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZV07
CiAgICAgICAgIGlmICghKHRoaXMuX2dyYWRpZW50IGluc3RhbmNlb2YgZGVzY3JpcHRvci50eXBl
KSkgewogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV0kuTGluZWFyR3JhZGll
bnQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG5ldyBXSS5MaW5lYXJHcmFk
aWVudCh7dmFsdWU6IDE4MCwgdW5pdHM6IFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuREVH
fSwgdGhpcy5fZ3JhZGllbnQuc3RvcHMpOworICAgICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50
ID0gbmV3IFdJLkxpbmVhckdyYWRpZW50KHt2YWx1ZTogMTgwLCB1bml0czogV0kuR3JhZGllbnQu
QW5nbGVVbml0cy5ERUd9LCB0aGlzLl9ncmFkaWVudC5zdG9wcyk7CiAKICAgICAgICAgICAgICAg
ICB0aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IudHlwZSA9PT0gV0kuUmFkaWFsR3JhZGllbnQpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBuZXcgV0kuUmFkaWFsR3JhZGllbnQoIiIs
IHRoaXMuX2dyYWRpZW50LnN0b3BzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLkNvbmljR3JhZGllbnQoe3ZhbHVlOiAwLCB1bml0
czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUd9LCBudWxsLCB0aGlzLl9ncmFkaWVudC5zdG9w
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmlu
ZGV4IDYxY2MwZmNiYWZkZDdhNTJjYWMzNWUyZDk3NTZmZDMwZDVjZTRhN2EuLjQ5OWZlY2U5YTEy
MTZiY2FiNzA4YjVmNmFhZDg2MjkyZjFmNzZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkuanMKQEAgLTY0OCw3ICs2NDgsNyBAQCBXSS5TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIF9hZGRHcmFkaWVudFRva2Vucyh0b2tlbnMpCiAgICAgewotICAgICAgICBsZXQg
Z3JhZGllbnRSZWdleCA9IC9eKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudCQv
aTsKKyAgICAgICAgbGV0IGdyYWRpZW50UmVnZXggPSAvXihyZXBlYXRpbmctKT8obGluZWFyfHJh
ZGlhbHxjb25pYyktZ3JhZGllbnQkL2k7CiAgICAgICAgIGxldCBuZXdUb2tlbnMgPSBbXTsKICAg
ICAgICAgbGV0IGdyYWRpZW50U3RhcnRJbmRleCA9IE5hTjsKICAgICAgICAgbGV0IG9wZW5QYXJl
bnRoZXNpcyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447901</attachid>
            <date>2021-12-23 12:36:49 -0800</date>
            <delta_ts>2021-12-23 12:48:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234562-20211223213648.patch</filename>
            <type>text/plain</type>
            <size>23812</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
YjIzMDEyZDc2ZjAxNzA3ZjJhZWFlNDdiMzgyYmEwMDFkZjkxNjE0Li5mMjNmZDBiYTQ4OTA5YjE4
OTUyMmQ4YThmNDU5YjRkMzg3NzVkYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMS0xMi0yMyAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgY29uaWMgZ3JhZGllbnRzIGluIGdyYWRpZW50
IGVkaXRvciBhbmQgYXV0b2NvbXBsZXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qczoKKyAgICAgICAg
KFdJLkdyYWRpZW50LmFuZ2xlRnJvbVN0cmluZyk6CisgICAgICAgIChXSS5HcmFkaWVudC5mcm9t
U3RyaW5nKToKKyAgICAgICAgKFdJLkdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVWYWx1ZSk6
CisgICAgICAgIChXSS5HcmFkaWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVmFsdWUpOgorICAgICAg
ICAoV0kuR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmdsZVVuaXRzKToKKyAgICAgICAgKFdJLkdy
YWRpZW50LnByb3RvdHlwZS5zZXQgYW5nbGVVbml0cyk6CisgICAgICAgIChXSS5HcmFkaWVudC5w
cm90b3R5cGUuX2FuZ2xlVmFsdWVGb3JVbml0cyk6CisgICAgICAgIChXSS5HcmFkaWVudCk6Cisg
ICAgICAgIChXSS5MaW5lYXJHcmFkaWVudC5mcm9tQ29tcG9uZW50cyk6CisgICAgICAgIChXSS5M
aW5lYXJHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoV0kuTGluZWFyR3Jh
ZGllbnQpOgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV0kuUmFkaWFs
R3JhZGllbnQuZnJvbUNvbXBvbmVudHMpOgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJv
dG90eXBlLmdldCBhbmdsZVZhbHVlKToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3Rv
dHlwZS5zZXQgYW5nbGVWYWx1ZSk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5
cGUuZ2V0IGFuZ2xlVW5pdHMpOgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJvdG90eXBl
LnNldCBhbmdsZVVuaXRzKToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5j
b3B5KToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS50b1N0cmluZyk6Cisg
ICAgICAgIChXSS5Db25pY0dyYWRpZW50KToKKyAgICAgICAgKFdJLkNvbmljR3JhZGllbnQuZnJv
bUNvbXBvbmVudHMpOgorICAgICAgICAoV0kuQ29uaWNHcmFkaWVudC5wcm90b3R5cGUuY29weSk6
CisgICAgICAgIChXSS5Db25pY0dyYWRpZW50LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAg
IChXSS5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuTGluZWFyR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmdsZVZhbHVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5zZXQgYW5nbGVVbml0
cyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuZ2V0IGFu
Z2xlVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAoV0kuTGluZWFyR3JhZGllbnQucHJvdG90eXBl
Ll9hbmdsZVZhbHVlRm9yVW5pdHMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvR3JhZGllbnRFZGl0b3IuanM6CisgICAgICAgIChXSS5HcmFkaWVudEVkaXRvcik6Cisg
ICAgICAgIChXSS5HcmFkaWVudEVkaXRvci5wcm90b3R5cGUuc2V0IGdyYWRpZW50KToKKyAgICAg
ICAgKFdJLkdyYWRpZW50RWRpdG9yLnByb3RvdHlwZS5fZ3JhZGllbnRUeXBlQ2hhbmdlZCk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9hZGRHcmFk
aWVudFRva2Vucyk6CisKIDIwMjEtMTItMjEgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFzc2VydGlvbiBGYWlsZWQgcmVtb3Zpbmcg
c3VidmlldyBpbiBDb250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuX2Rpc2Fzc29jaWF0ZUZy
b21Db250ZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggODUxODcx
NmVjY2U1MmZiN2RjZTI1OGUzOGRmMTdlMDM1NGU3YzRiYi4uMmU4NjUyZmFlYjNiMTdhNTZlMjQ2
MjM1MjMyNjViYTU5OTgwMjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBA
IC0zNjcsNiArMzY3LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siQ29ubmVjdGlvbiBDbG9zZSBGcmFt
ZSJdID0gIkNvbm5lY3Rpb24gQ2xvc2UgRnJhbWUiOwogbG9jYWxpemVkU3RyaW5nc1siQ29ubmVj
dGlvbiBDbG9zZWQiXSA9ICJDb25uZWN0aW9uIENsb3NlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJD
b25uZWN0aW9uIElEIl0gPSAiQ29ubmVjdGlvbiBJRCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb25u
ZWN0aW9uOiJdID0gIkNvbm5lY3Rpb246IjsKK2xvY2FsaXplZFN0cmluZ3NbIkNvbmljIEdyYWRp
ZW50Il0gPSAiQ29uaWMgR3JhZGllbnQiOwogbG9jYWxpemVkU3RyaW5nc1siQ29uc29sZSJdID0g
IkNvbnNvbGUiOwogbG9jYWxpemVkU3RyaW5nc1siQ29uc29sZSBFdmFsdWF0aW9uIl0gPSAiQ29u
c29sZSBFdmFsdWF0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbnNvbGUgRXZhbHVhdGlvbiAl
ZCJdID0gIkNvbnNvbGUgRXZhbHVhdGlvbiAlZCI7CkBAIC0xMTgzLDYgKzExODQsNyBAQCBsb2Nh
bGl6ZWRTdHJpbmdzWyJSZW5kZXIgUGlwZWxpbmUgJWQiXSA9ICJSZW5kZXIgUGlwZWxpbmUgJWQi
OwogbG9jYWxpemVkU3RyaW5nc1siUmVuZGVyaW5nIEZyYW1lcyJdID0gIlJlbmRlcmluZyBGcmFt
ZXMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVwZWF0aW5nIExpbmVhciBHcmFkaWVudCJdID0gIlJl
cGVhdGluZyBMaW5lYXIgR3JhZGllbnQiOwogbG9jYWxpemVkU3RyaW5nc1siUmVwZWF0aW5nIFJh
ZGlhbCBHcmFkaWVudCJdID0gIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiOworbG9jYWxpemVk
U3RyaW5nc1siUmVwZWF0aW5nIENvbmljIEdyYWRpZW50Il0gPSAiUmVwZWF0aW5nIENvbmljIEdy
YWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3QiXSA9ICJSZXF1ZXN0IjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlJlcXVlc3QgJiBSZXNwb25zZSJdID0gIlJlcXVlc3QgJiBSZXNwb25zZSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0IChET00gVHJlZSkiXSA9ICJSZXF1ZXN0IChET00g
VHJlZSkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKaW5kZXggY2Y0ZDExNDRlNzA3NDk3Mzg4
MjQ3NjkwOThiNDc0YjE4MjhjZThhNS4uMDk2ZDFjMmI4YjMxMjdjZTUyZWQ5Zjc2NjViMzAzODI5
YzIxZDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCkBAIC0xMTEsNiArMTExLDEwIEBA
IFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICBmb3IgKGxldCBjb2xvciBvZiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX2NvbG9y
cykKICAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcltuYW1lRm9yQ29k
ZU1pcnJvcihjb2xvcildID0gdHJ1ZTsKIAorICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHRo
ZXNlIGtleXdvcmRzIG9uY2UgdGhleSBhcmUgYnVpbHQtaW4gY29kZW1pcnJvciBvciBvbmNlIHdl
IGdldCB2YWx1ZXMgZnJvbSBXZWJLaXQgaXRzZWxmLgorICAgICAgICAgICAgdmFsdWVLZXl3b3Jk
c0ZvckNvZGVNaXJyb3JbImNvbmljLWdyYWRpZW50Il0gPSB0cnVlOworICAgICAgICAgICAgdmFs
dWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCJdID0gdHJ1
ZTsKKwogICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5
cGUpIHsKICAgICAgICAgICAgICAgICBsZXQgbW9kZVNwZWMgPSBDb2RlTWlycm9yLnJlc29sdmVN
b2RlKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCmluZGV4IGY3M2RlNzVlZWNiZmRmMjc3MDgwODRl
MDljNzk2NzM3MDNhYTBkZDYuLmYyYzYwNWIzMTg3OThmNzMyYThiMGJhNzY4MzU0MGJmOTdkNTBi
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9HcmFkaWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvR3JhZGllbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDE1ICszMywyNiBAQCBXSS5HcmFkaWVudCA9IGNsYXNzIEdy
YWRpZW50CiAKICAgICAvLyBTdGF0aWMKIAorICAgIHN0YXRpYyBhbmdsZUZyb21TdHJpbmcoc3Ry
aW5nKQorICAgIHsKKyAgICAgICAgbGV0IG1hdGNoID0gc3RyaW5nLm1hdGNoKC8oWy1cZFwuXSsp
KFx3KykvKTsKKyAgICAgICAgaWYgKCFtYXRjaCB8fCAhT2JqZWN0LnZhbHVlcyhXSS5HcmFkaWVu
dC5BbmdsZVVuaXRzKS5pbmNsdWRlcyhtYXRjaFsyXSkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKworICAgICAgICByZXR1cm4ge3ZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzFdKSwgdW5pdHM6
IG1hdGNoWzJdfTsKKyAgICB9CisKICAgICBzdGF0aWMgZnJvbVN0cmluZyhjc3NTdHJpbmcpCiAg
ICAgewogICAgICAgICB2YXIgdHlwZTsKICAgICAgICAgdmFyIG9wZW5pbmdQYXJlbnRoZXNpc0lu
ZGV4ID0gY3NzU3RyaW5nLmluZGV4T2YoIigiKTsKICAgICAgICAgdmFyIHR5cGVTdHJpbmcgPSBj
c3NTdHJpbmcuc3Vic3RyaW5nKDAsIG9wZW5pbmdQYXJlbnRoZXNpc0luZGV4KTsKLSAgICAgICAg
aWYgKHR5cGVTdHJpbmcuaW5kZXhPZihXSS5HcmFkaWVudC5UeXBlcy5MaW5lYXIpICE9PSAtMSkK
KyAgICAgICAgaWYgKHR5cGVTdHJpbmcuaW5jbHVkZXMoV0kuR3JhZGllbnQuVHlwZXMuTGluZWFy
KSkKICAgICAgICAgICAgIHR5cGUgPSBXSS5HcmFkaWVudC5UeXBlcy5MaW5lYXI7Ci0gICAgICAg
IGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5kZXhPZihXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwpICE9
PSAtMSkKKyAgICAgICAgZWxzZSBpZiAodHlwZVN0cmluZy5pbmNsdWRlcyhXSS5HcmFkaWVudC5U
eXBlcy5SYWRpYWwpKQogICAgICAgICAgICAgdHlwZSA9IFdJLkdyYWRpZW50LlR5cGVzLlJhZGlh
bDsKKyAgICAgICAgZWxzZSBpZiAodHlwZVN0cmluZy5pbmNsdWRlcyhXSS5HcmFkaWVudC5UeXBl
cy5Db25pYykpCisgICAgICAgICAgICB0eXBlID0gV0kuR3JhZGllbnQuVHlwZXMuQ29uaWM7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCkBAIC04OCwxMSArOTksMjMg
QEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFkaWVudAogICAgICAgICBpZiAob3BlblBhcmVudGhl
c2VzICE9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIHZhciBncmFk
aWVudDsKLSAgICAgICAgaWYgKHR5cGUgPT09IFdJLkdyYWRpZW50LlR5cGVzLkxpbmVhcikKKyAg
ICAgICAgbGV0IGdyYWRpZW50OworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXSS5HcmFkaWVudC5UeXBlcy5MaW5lYXI6CiAgICAgICAgICAgICBncmFkaWVudCA9IFdJLkxp
bmVhckdyYWRpZW50LmZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpOwotICAgICAgICBlbHNlCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkdyYWRpZW50LlR5cGVzLlJhZGlh
bDoKICAgICAgICAgICAgIGdyYWRpZW50ID0gV0kuUmFkaWFsR3JhZGllbnQuZnJvbUNvbXBvbmVu
dHMoY29tcG9uZW50cyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkdy
YWRpZW50LlR5cGVzLkNvbmljOgorICAgICAgICAgICAgZ3JhZGllbnQgPSBXSS5Db25pY0dyYWRp
ZW50LmZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGdyYWRpZW50KQogICAgICAgICAgICAgZ3JhZGllbnQucmVwZWF0cyA9IHR5cGVT
dHJpbmcuc3RhcnRzV2l0aCgicmVwZWF0aW5nIik7CkBAIC0xNDksNiArMTcyLDMwIEBAIFdJLkdy
YWRpZW50ID0gY2xhc3MgR3JhZGllbnQKIAogICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IGFuZ2xl
VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZhbHVlLm1heERlY2lt
YWxzKDIpOworICAgIH0KKworICAgIHNldCBhbmdsZVZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fYW5nbGUudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBnZXQgYW5nbGVVbml0
cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYW5nbGUudW5pdHM7CisgICAgfQorCisg
ICAgc2V0IGFuZ2xlVW5pdHModW5pdHMpCisgICAgeworICAgICAgICBpZiAodW5pdHMgPT09IHRo
aXMuX2FuZ2xlLnVuaXRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Fu
Z2xlLnZhbHVlID0gdGhpcy5fYW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKTsKKyAgICAgICAgdGhp
cy5fYW5nbGUudW5pdHMgPSB1bml0czsKKyAgICB9CisKICAgICBjb3B5KCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCkBAIC0xNTgsMTEgKzIwNSw2MyBAQCBX
SS5HcmFkaWVudCA9IGNsYXNzIEdyYWRpZW50CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgogICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9hbmdsZVZh
bHVlRm9yVW5pdHModW5pdHMpCisgICAgeworICAgICAgICBpZiAodW5pdHMgPT09IHRoaXMuX2Fu
Z2xlLnVuaXRzKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZhbHVlOworCisgICAg
ICAgIGxldCBkZWcgPSAwOworCisgICAgICAgIHN3aXRjaCAodGhpcy5fYW5nbGUudW5pdHMpIHsK
KyAgICAgICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkRFRzoKKyAgICAgICAgICAgIGRl
ZyA9IHRoaXMuX2FuZ2xlLnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLlJBRDoKKyAgICAgICAgICAgIGRlZyA9IHRoaXMuX2Fu
Z2xlLnZhbHVlICogMTgwIC8gTWF0aC5QSTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5HUkFEOgorICAgICAgICAgICAgZGVnID0gdGhp
cy5fYW5nbGUudmFsdWUgLyA0MDAgKiAzNjA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVSTjoKKyAgICAgICAgICAgIGRlZyA9IHRo
aXMuX2FuZ2xlLnZhbHVlICogMzYwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7CisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVV
bml0cy5ERUc6CisgICAgICAgICAgICByZXR1cm4gZGVnOworCisgICAgICAgIGNhc2UgV0kuR3Jh
ZGllbnQuQW5nbGVVbml0cy5SQUQ6CisgICAgICAgICAgICByZXR1cm4gZGVnICogTWF0aC5QSSAv
IDE4MDsKKworICAgICAgICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuR1JBRDoKKyAgICAg
ICAgICAgIHJldHVybiBkZWcgLyAzNjAgKiA0MDA7CisKKyAgICAgICAgY2FzZSBXSS5HcmFkaWVu
dC5BbmdsZVVuaXRzLlRVUk46CisgICAgICAgICAgICByZXR1cm4gZGVnIC8gMzYwOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfTsKIAogV0kuR3JhZGllbnQuVHlwZXMg
PSB7CiAgICAgTGluZWFyOiAibGluZWFyLWdyYWRpZW50IiwKLSAgICBSYWRpYWw6ICJyYWRpYWwt
Z3JhZGllbnQiCisgICAgUmFkaWFsOiAicmFkaWFsLWdyYWRpZW50IiwKKyAgICBDb25pYzogImNv
bmljLWdyYWRpZW50IiwKK307CisKK1dJLkdyYWRpZW50LkFuZ2xlVW5pdHMgPSB7CisgICAgREVH
OiAiZGVnIiwKKyAgICBSQUQ6ICJyYWQiLAorICAgIEdSQUQ6ICJncmFkIiwKKyAgICBUVVJOOiAi
dHVybiIsCiB9OwogCiBXSS5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50IGV4
dGVuZHMgV0kuR3JhZGllbnQKQEAgLTE3NywxNSArMjc2LDEzIEBAIFdJLkxpbmVhckdyYWRpZW50
ID0gY2xhc3MgTGluZWFyR3JhZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogCiAgICAgc3RhdGlj
IGZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAgICBsZXQgYW5nbGUgPSB7
dmFsdWU6IDE4MCwgdW5pdHM6IFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuREVHfTsKKyAg
ICAgICAgbGV0IGFuZ2xlID0ge3ZhbHVlOiAxODAsIHVuaXRzOiBXSS5HcmFkaWVudC5BbmdsZVVu
aXRzLkRFR307CiAKICAgICAgICAgaWYgKGNvbXBvbmVudHNbMF0ubGVuZ3RoID09PSAxICYmICFX
SS5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF1bMF0pKSB7Ci0gICAgICAgICAgICBsZXQg
bWF0Y2ggPSBjb21wb25lbnRzWzBdWzBdLm1hdGNoKC8oWy1cZFwuXSspKFx3KykvKTsKLSAgICAg
ICAgICAgIGlmICghbWF0Y2ggfHwgIU9iamVjdC52YWx1ZXMoV0kuTGluZWFyR3JhZGllbnQuQW5n
bGVVbml0cykuaW5jbHVkZXMobWF0Y2hbMl0pKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICAgICAgYW5nbGUgPSBXSS5HcmFkaWVudC5hbmdsZUZyb21TdHJpbmcoY29tcG9u
ZW50c1swXVswXSk7CiAKLSAgICAgICAgICAgIGFuZ2xlLnZhbHVlID0gcGFyc2VGbG9hdChtYXRj
aFsxXSk7Ci0gICAgICAgICAgICBhbmdsZS51bml0cyA9IG1hdGNoWzJdOworICAgICAgICAgICAg
aWYgKCFhbmdsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICAgICAg
Y29tcG9uZW50cy5zaGlmdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHNbMF1bMF0g
PT09ICJ0byIpIHsKQEAgLTIyNiwzMyArMzIzLDEzIEBAIFdJLkxpbmVhckdyYWRpZW50ID0gY2xh
c3MgTGluZWFyR3JhZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc3RvcHMgPSBXSS5HcmFkaWVudC5zdG9w
c1dpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOworICAgICAgICBsZXQgc3RvcHMgPSBXSS5HcmFk
aWVudC5zdG9wc1dpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOwogICAgICAgICBpZiAoIXN0b3Bz
KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXSS5MaW5l
YXJHcmFkaWVudChhbmdsZSwgc3RvcHMpOwogICAgIH0KIAotICAgIC8vIFB1YmxpYwotCi0gICAg
c2V0IGFuZ2xlVmFsdWUodmFsdWUpIHsgdGhpcy5fYW5nbGUudmFsdWUgPSB2YWx1ZTsgfQotCi0g
ICAgZ2V0IGFuZ2xlVmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnZh
bHVlLm1heERlY2ltYWxzKDIpOwotICAgIH0KLQotICAgIHNldCBhbmdsZVVuaXRzKHVuaXRzKQot
ICAgIHsKLSAgICAgICAgaWYgKHVuaXRzID09PSB0aGlzLl9hbmdsZS51bml0cykKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9hbmdsZS52YWx1ZSA9IHRoaXMuX2FuZ2xlVmFs
dWVGb3JVbml0cyh1bml0cyk7Ci0gICAgICAgIHRoaXMuX2FuZ2xlLnVuaXRzID0gdW5pdHM7Ci0g
ICAgfQotCi0gICAgZ2V0IGFuZ2xlVW5pdHMoKSB7IHJldHVybiB0aGlzLl9hbmdsZS51bml0czsg
fQotCiAgICAgY29weSgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdJLkxpbmVhckdyYWRp
ZW50KHRoaXMuX2FuZ2xlLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKQEAgLTI4MCwxMDkgKzM1Nywx
NDEgQEAgV0kuTGluZWFyR3JhZGllbnQgPSBjbGFzcyBMaW5lYXJHcmFkaWVudCBleHRlbmRzIFdJ
LkdyYWRpZW50CiAgICAgICAgIGVsc2UgaWYgKGRlZyAhPT0gMTgwKQogICAgICAgICAgICAgc3Ry
ICs9IHRoaXMuYW5nbGVWYWx1ZSArIHRoaXMuYW5nbGVVbml0czsKIAotICAgICAgICBpZiAoc3Ry
ICE9PSAiIikKKyAgICAgICAgaWYgKHN0cikKICAgICAgICAgICAgIHN0ciArPSAiLCAiOwogCiAg
ICAgICAgIHN0ciArPSB0aGlzLnN0cmluZ0Zyb21TdG9wcyh0aGlzLnN0b3BzKTsKIAogICAgICAg
ICByZXR1cm4gKHRoaXMucmVwZWF0cyA/ICJyZXBlYXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSAr
ICIoIiArIHN0ciArICIpIjsKICAgICB9Cit9OwogCi0gICAgLy8gUHJpdmF0ZQorV0kuUmFkaWFs
R3JhZGllbnQgPSBjbGFzcyBSYWRpYWxHcmFkaWVudCBleHRlbmRzIFdJLkdyYWRpZW50Cit7Cisg
ICAgY29uc3RydWN0b3Ioc2l6aW5nLCBzdG9wcykKKyAgICB7CisgICAgICAgIHN1cGVyKFdJLkdy
YWRpZW50LlR5cGVzLlJhZGlhbCwgc3RvcHMpOworICAgICAgICB0aGlzLnNpemluZyA9IHNpemlu
ZzsKKyAgICB9CiAKLSAgICBfYW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKQorICAgIC8vIFN0YXRp
YworCisgICAgc3RhdGljIGZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAg
ICBpZiAodW5pdHMgPT09IHRoaXMuX2FuZ2xlLnVuaXRzKQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2FuZ2xlLnZhbHVlOworICAgICAgICBsZXQgc2l6aW5nID0gIVdJLkNvbG9yLmZyb21TdHJp
bmcoY29tcG9uZW50c1swXS5qb2luKCIgIikpID8gY29tcG9uZW50cy5zaGlmdCgpLmpvaW4oIiAi
KSA6ICIiOwogCi0gICAgICAgIGxldCBkZWcgPSAwOworICAgICAgICBsZXQgc3RvcHMgPSBXSS5H
cmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOworICAgICAgICBpZiAoIXN0
b3BzKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgc3dpdGNoICh0aGlzLl9h
bmdsZS51bml0cykgewotICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMu
REVHOgotICAgICAgICAgICAgZGVnID0gdGhpcy5fYW5nbGUudmFsdWU7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5SYWRpYWxHcmFkaWVudChzaXppbmcsIHN0b3Bz
KTsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLlJB
RDoKLSAgICAgICAgICAgIGRlZyA9IHRoaXMuX2FuZ2xlLnZhbHVlICogMTgwIC8gTWF0aC5QSTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIC8vIFB1YmxpYwogCi0gICAgICAgIGNhc2UgV0kuTGlu
ZWFyR3JhZGllbnQuQW5nbGVVbml0cy5HUkFEOgotICAgICAgICAgICAgZGVnID0gdGhpcy5fYW5n
bGUudmFsdWUgLyA0MDAgKiAzNjA7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBnZXQgYW5nbGVW
YWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBX
SS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLlRVUk46Ci0gICAgICAgICAgICBkZWcgPSB0aGlz
Ll9hbmdsZS52YWx1ZSAqIDM2MDsKLSAgICAgICAgICAgIGJyZWFrOworICAgIHNldCBhbmdsZVZh
bHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDU1MgY29u
aWMgZ3JhZGllbnRzIGRvIG5vdCBoYXZlIGFuIGFuZ2xlIik7CisgICAgfQogCi0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGBVbmtub3duIGFuZ2xl
IHVuaXRzICIke3RoaXMuX2FuZ2xlLnVuaXRzfSJgKTsKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICB9CisgICAgZ2V0IGFuZ2xlVW5pdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIi
OworICAgIH0KIAotICAgICAgICBsZXQgdmFsdWUgPSAwOworICAgIHNldCBhbmdsZVVuaXRzKHVu
aXRzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDU1MgY29uaWMgZ3Jh
ZGllbnRzIGRvIG5vdCBoYXZlIGFuIGFuZ2xlIik7CisgICAgfQogCi0gICAgICAgIHN3aXRjaCAo
dW5pdHMpIHsKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkRFRzoK
LSAgICAgICAgICAgIHZhbHVlID0gZGVnOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY29weSgp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdJLlJhZGlhbEdyYWRpZW50KHRoaXMuc2l6aW5n
LCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJH
cmFkaWVudC5BbmdsZVVuaXRzLlJBRDoKLSAgICAgICAgICAgIHZhbHVlID0gZGVnICogTWF0aC5Q
SSAvIDE4MDsKLSAgICAgICAgICAgIGJyZWFrOworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAg
ICAgIGxldCBzdHIgPSB0aGlzLnNpemluZzsKIAotICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRp
ZW50LkFuZ2xlVW5pdHMuR1JBRDoKLSAgICAgICAgICAgIHZhbHVlID0gZGVnIC8gMzYwICogNDAw
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChzdHIpCisgICAgICAgICAgICBzdHIg
Kz0gIiwgIjsKIAotICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuVFVS
TjoKLSAgICAgICAgICAgIHZhbHVlID0gZGVnIC8gMzYwOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KKyAgICAgICAgc3RyICs9IHRoaXMuc3RyaW5nRnJvbVN0b3BzKHRoaXMuc3RvcHMp
OwogCi0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuICh0aGlzLnJlcGVhdHMg
PyAicmVwZWF0aW5nLSIgOiAiIikgKyB0aGlzLnR5cGUgKyAiKCIgKyBzdHIgKyAiKSI7CiAgICAg
fQogfTsKIAotV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cyA9IHsKLSAgICBERUc6ICJkZWci
LAotICAgIFJBRDogInJhZCIsCi0gICAgR1JBRDogImdyYWQiLAotICAgIFRVUk46ICJ0dXJuIiwK
LX07Ci0KLVdJLlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQgZXh0ZW5kcyBX
SS5HcmFkaWVudAorV0kuQ29uaWNHcmFkaWVudCA9IGNsYXNzIENvbmljR3JhZGllbnQgZXh0ZW5k
cyBXSS5HcmFkaWVudAogewotICAgIGNvbnN0cnVjdG9yKHNpemluZywgc3RvcHMpCisgICAgY29u
c3RydWN0b3IoYW5nbGUsIHBvc2l0aW9uLCBzdG9wcykKICAgICB7Ci0gICAgICAgIHN1cGVyKFdJ
LkdyYWRpZW50LlR5cGVzLlJhZGlhbCwgc3RvcHMpOwotICAgICAgICB0aGlzLnNpemluZyA9IHNp
emluZzsKKyAgICAgICAgc3VwZXIoV0kuR3JhZGllbnQuVHlwZXMuQ29uaWMsIHN0b3BzKTsKKwor
ICAgICAgICB0aGlzLl9hbmdsZSA9IGFuZ2xlOworICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHBv
c2l0aW9uOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwogCiAgICAgc3RhdGljIGZyb21Db21wb25l
bnRzKGNvbXBvbmVudHMpCiAgICAgewotICAgICAgICB2YXIgc2l6aW5nID0gIVdJLkNvbG9yLmZy
b21TdHJpbmcoY29tcG9uZW50c1swXS5qb2luKCIgIikpID8gY29tcG9uZW50cy5zaGlmdCgpLmpv
aW4oIiAiKSA6ICIiOworICAgICAgICBsZXQgYW5nbGUgPSB7dmFsdWU6IDAsIHVuaXRzOiBXSS5H
cmFkaWVudC5BbmdsZVVuaXRzLkRFR307CisgICAgICAgIGxldCBwb3NpdGlvbiA9IG51bGw7Cisg
ICAgICAgIGxldCBoYXNDdXN0b21BbmdsZU9yUG9zaXRpb24gPSBmYWxzZTsKKworICAgICAgICBp
ZiAoY29tcG9uZW50c1swXVswXSA9PSAiZnJvbSIpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHNb
MF0uc2hpZnQoKTsKKyAgICAgICAgICAgIGFuZ2xlID0gV0kuR3JhZGllbnQuYW5nbGVGcm9tU3Ry
aW5nKGNvbXBvbmVudHNbMF1bMF0pOworICAgICAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIGNvbXBvbmVudHNbMF0uc2hpZnQoKTsK
KyAgICAgICAgICAgIGhhc0N1c3RvbUFuZ2xlT3JQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbXBvbmVudHNbMF1bMF0gPT0gImF0IikgeworICAgICAgICAgICAgY29t
cG9uZW50c1swXS5zaGlmdCgpOworICAgICAgICAgICAgLy8gRklYTUU6IHdlYmtpdC5vcmcvYi8y
MzQ2NDMKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRzWzBdLmxlbmd0aCA8PSAwKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgcG9zaXRpb24gPSBjb21wb25lbnRz
WzBdLmpvaW4oIiAiKTsKKyAgICAgICAgICAgIGhhc0N1c3RvbUFuZ2xlT3JQb3NpdGlvbiA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0N1c3RvbUFuZ2xlT3JQb3NpdGlvbikKKyAg
ICAgICAgICAgIGNvbXBvbmVudHMuc2hpZnQoKTsKIAotICAgICAgICB2YXIgc3RvcHMgPSBXSS5H
cmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOworICAgICAgICBsZXQgc3Rv
cHMgPSBXSS5HcmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOwogICAgICAg
ICBpZiAoIXN0b3BzKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgcmV0dXJu
IG5ldyBXSS5SYWRpYWxHcmFkaWVudChzaXppbmcsIHN0b3BzKTsKKyAgICAgICAgcmV0dXJuIG5l
dyBXSS5Db25pY0dyYWRpZW50KGFuZ2xlLCBwb3NpdGlvbiwgc3RvcHMpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgY29weSgpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdJLlJh
ZGlhbEdyYWRpZW50KHRoaXMuc2l6aW5nLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBXSS5Db25pY0dyYWRpZW50KHRoaXMuX2FuZ2xlLCB0aGlzLl9wb3NpdGlvbiwg
dGhpcy5zdG9wcy5jb25jYXQoKSk7CiAgICAgfQogCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAg
ICAgICAgdmFyIHN0ciA9IHRoaXMuc2l6aW5nOworICAgICAgICBsZXQgc3RyID0gIiI7CisKKyAg
ICAgICAgaWYgKHRoaXMuX2FuZ2xlLnZhbHVlKQorICAgICAgICAgICAgc3RyICs9IGBmcm9tICR7
dGhpcy5fYW5nbGUudmFsdWV9JHt0aGlzLl9hbmdsZS51bml0c31gOworCisgICAgICAgIGlmICh0
aGlzLl9wb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKHN0cikKKyAgICAgICAgICAgICAgICBz
dHIgKz0gIiAiOworICAgICAgICAgICAgc3RyICs9IGBhdCAke3RoaXMuX3Bvc2l0aW9ufWA7Cisg
ICAgICAgIH0KIAotICAgICAgICBpZiAoc3RyICE9PSAiIikKKyAgICAgICAgaWYgKHN0cikKICAg
ICAgICAgICAgIHN0ciArPSAiLCAiOwogCiAgICAgICAgIHN0ciArPSB0aGlzLnN0cmluZ0Zyb21T
dG9wcyh0aGlzLnN0b3BzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcwppbmRl
eCAxZDQ3NjkzMDFmNTY1MjQ0OWE5OWYzOTQwOTFmNDdlYTAwN2YyN2Y5Li41MmViMWQ4MGExZGNi
MzlkNGZhMDNlMzExNTVhYzUwZTU2MzliODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRN
YXJrZXJzLmpzCkBAIC0xMTEsNyArMTExLDcgQEAgZnVuY3Rpb24gY3JlYXRlQ29kZU1pcnJvckNv
bG9yVGV4dE1hcmtlcnMoY29kZU1pcnJvciwgcmFuZ2UsIG9wdGlvbnMgPSB7fSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgvKHJlcGVhdGluZy0pPyhs
aW5lYXJ8cmFkaWFsKS1ncmFkaWVudCQvLnRlc3QobGluZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGlu
ZGV4KSkpCisgICAgICAgIGlmICgvKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1n
cmFkaWVudCQvLnRlc3QobGluZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4KSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gQWN0IGFzIGEgbmVnYXRpdmUgbG9vay1i
ZWhpbmQgYW5kIGRpc2FsbG93IHRoZSBjb2xvciBmcm9tIGJlaW5nIHByZWZpeGluZyB3aXRoIGNl
cnRhaW4gY2hhcmFjdGVycy4KQEAgLTEyOCw3ICsxMjgsNyBAQCBmdW5jdGlvbiBjcmVhdGVDb2Rl
TWlycm9yR3JhZGllbnRUZXh0TWFya2Vycyhjb2RlTWlycm9yLCByYW5nZSwgb3B0aW9ucyA9IHt9
KQogICAgIHZhciBzdGFydCA9IHJhbmdlIGluc3RhbmNlb2YgV0kuVGV4dFJhbmdlID8gcmFuZ2Uu
c3RhcnRMaW5lIDogMDsKICAgICB2YXIgZW5kID0gcmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0UmFu
Z2UgPyByYW5nZS5lbmRMaW5lICsgMSA6IGNvZGVNaXJyb3IubGluZUNvdW50KCk7CiAKLSAgICB2
YXIgZ3JhZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50
XHMqXChccyovZzsKKyAgICB2YXIgZ3JhZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVh
cnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50XHMqXChccyovZzsKIAogICAgIGZvciAodmFyIGxpbmVO
dW1iZXIgPSBzdGFydDsgbGluZU51bWJlciA8IGVuZDsgKytsaW5lTnVtYmVyKSB7CiAgICAgICAg
IHZhciBsaW5lQ29udGVudCA9IGNvZGVNaXJyb3IuZ2V0TGluZShsaW5lTnVtYmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50
RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3Jh
ZGllbnRFZGl0b3IuanMKaW5kZXggZGE3ODQzMTIwMTA3NjllNjNkMzI3YjM2YzIzYWNhYWU4NmVl
ZTM4Yy4uYTFkZGFiMmY1ZDZlYWMxOWY4Njk0ZDAwNzNmZTcxNDhmMjdmZmFmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0
b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3Jh
ZGllbnRFZGl0b3IuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgRGV2aW4gUm91c3NvIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ1LDYgKzQ1LDExIEBAIFdJLkdyYWRpZW50RWRp
dG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAg
ICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIlJhZGlhbCBHcmFkaWVudCIpLAogICAgICAgICAgICAg
ICAgIHJlcGVhdHM6IGZhbHNlCiAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImNvbmljLWdy
YWRpZW50IjogeworICAgICAgICAgICAgICAgIHR5cGU6IFdJLkNvbmljR3JhZGllbnQsCisgICAg
ICAgICAgICAgICAgbGFiZWw6IFdJLlVJU3RyaW5nKCJDb25pYyBHcmFkaWVudCIpLAorICAgICAg
ICAgICAgICAgIHJlcGVhdHM6IGZhbHNlCisgICAgICAgICAgICB9LAogICAgICAgICAgICAgInJl
cGVhdGluZy1saW5lYXItZ3JhZGllbnQiOiB7CiAgICAgICAgICAgICAgICAgdHlwZTogV0kuTGlu
ZWFyR3JhZGllbnQsCiAgICAgICAgICAgICAgICAgbGFiZWw6IFdJLlVJU3RyaW5nKCJSZXBlYXRp
bmcgTGluZWFyIEdyYWRpZW50IiksCkBAIC01NCw3ICs1OSwxMiBAQCBXSS5HcmFkaWVudEVkaXRv
ciA9IGNsYXNzIEdyYWRpZW50RWRpdG9yIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAg
ICAgdHlwZTogV0kuUmFkaWFsR3JhZGllbnQsCiAgICAgICAgICAgICAgICAgbGFiZWw6IFdJLlVJ
U3RyaW5nKCJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50IiksCiAgICAgICAgICAgICAgICAgcmVw
ZWF0czogdHJ1ZQotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJy
ZXBlYXRpbmctY29uaWMtZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAgdHlwZTogV0kuQ29u
aWNHcmFkaWVudCwKKyAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIlJlcGVhdGlu
ZyBDb25pYyBHcmFkaWVudCIpLAorICAgICAgICAgICAgICAgIHJlcGVhdHM6IHRydWUKKyAgICAg
ICAgICAgIH0sCiAgICAgICAgIH07CiAgICAgICAgIHRoaXMuX2VkaXRpbmdDb2xvciA9IGZhbHNl
OwogCkBAIC05MywxMCArMTAzLDEwIEBAIFdJLkdyYWRpZW50RWRpdG9yID0gY2xhc3MgR3JhZGll
bnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fYW5nbGVVbml0c1NlbGVj
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fYW5nbGVVbml0c0NoYW5n
ZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgY29uc3QgYW5nbGVVbml0c0RhdGEgPSBbCi0gICAg
ICAgICAgICB7bmFtZTogV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5ERUcsIG1pbjogMCwg
bWF4OiAzNjAsIHN0ZXA6IDF9LAotICAgICAgICAgICAge25hbWU6IFdJLkxpbmVhckdyYWRpZW50
LkFuZ2xlVW5pdHMuUkFELCBtaW46IDAsIG1heDogMiAqIE1hdGguUEksIHN0ZXA6IDAuMDF9LAot
ICAgICAgICAgICAge25hbWU6IFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuR1JBRCwgbWlu
OiAwLCBtYXg6IDQwMCwgc3RlcDogMX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFyR3Jh
ZGllbnQuQW5nbGVVbml0cy5UVVJOLCBtaW46IDAsIG1heDogMSwgc3RlcDogMC4wMX0KKyAgICAg
ICAgICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLkRFRywgbWluOiAwLCBtYXg6IDM2
MCwgc3RlcDogMX0sCisgICAgICAgICAgICB7bmFtZTogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5S
QUQsIG1pbjogMCwgbWF4OiAyICogTWF0aC5QSSwgc3RlcDogMC4wMX0sCisgICAgICAgICAgICB7
bmFtZTogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5HUkFELCBtaW46IDAsIG1heDogNDAwLCBzdGVw
OiAxfSwKKyAgICAgICAgICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLlRVUk4sIG1p
bjogMCwgbWF4OiAxLCBzdGVwOiAwLjAxfQogICAgICAgICBdOwogCiAgICAgICAgIHRoaXMuX2Fu
Z2xlVW5pdHNDb25maWd1cmF0aW9uID0gbmV3IE1hcChhbmdsZVVuaXRzRGF0YS5tYXAoKHtuYW1l
LCBtaW4sIG1heCwgc3RlcH0pID0+IHsKQEAgLTExOSwxOCArMTI5LDIyIEBAIFdJLkdyYWRpZW50
RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAg
ICBjb25zdCBpc0xpbmVhciA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuTGluZWFyR3JhZGllbnQ7
CiAgICAgICAgIGNvbnN0IGlzUmFkaWFsID0gZ3JhZGllbnQgaW5zdGFuY2VvZiBXSS5SYWRpYWxH
cmFkaWVudDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwpOwot
ICAgICAgICBpZiAoIWlzTGluZWFyICYmICFpc1JhZGlhbCkKKyAgICAgICAgY29uc3QgaXNDb25p
YyA9IGdyYWRpZW50IGluc3RhbmNlb2YgV0kuQ29uaWNHcmFkaWVudDsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoaXNMaW5lYXIgfHwgaXNSYWRpYWwgfHwgaXNDb25pYyk7CisgICAgICAgIGlmICgh
aXNMaW5lYXIgJiYgIWlzUmFkaWFsICYmICFpc0NvbmljKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gZ3JhZGllbnQ7CiAgICAgICAgIHRoaXMuX2dyYWRp
ZW50U2xpZGVyLnN0b3BzID0gdGhpcy5fZ3JhZGllbnQuc3RvcHM7CiAgICAgICAgIGlmIChpc0xp
bmVhcikgewogICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZhbHVlID0gdGhp
cy5fZ3JhZGllbnQucmVwZWF0cyA/ICJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IiA6ICJsaW5l
YXItZ3JhZGllbnQiOwotCiAgICAgICAgICAgICB0aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOwot
ICAgICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIGlmIChpc1JhZGlhbCkKICAgICAgICAgICAg
IHRoaXMuX2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMuX2dyYWRpZW50LnJlcGVhdHMg
PyAicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCIgOiAicmFkaWFsLWdyYWRpZW50IjsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFsdWUgPSB0
aGlzLl9ncmFkaWVudC5yZXBlYXRzID8gInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCIgOiAiY29u
aWMtZ3JhZGllbnQiOworICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNTU0NsYXNzRm9yR3JhZGllbnRUeXBlKCk7
CiAgICAgfQpAQCAtMTg1LDEyICsxOTksMTkgQEAgV0kuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBH
cmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc3QgZGVz
Y3JpcHRvciA9IHRoaXMuX2dyYWRpZW50VHlwZXNbdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZh
bHVlXTsKICAgICAgICAgaWYgKCEodGhpcy5fZ3JhZGllbnQgaW5zdGFuY2VvZiBkZXNjcmlwdG9y
LnR5cGUpKSB7Ci0gICAgICAgICAgICBpZiAoZGVzY3JpcHRvci50eXBlID09PSBXSS5MaW5lYXJH
cmFkaWVudCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLkxpbmVh
ckdyYWRpZW50KHt2YWx1ZTogMTgwLCB1bml0czogV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0
cy5ERUd9LCB0aGlzLl9ncmFkaWVudC5zdG9wcyk7Ci0KKyAgICAgICAgICAgIHN3aXRjaCAoZGVz
Y3JpcHRvci50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50OgorICAg
ICAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLkxpbmVhckdyYWRpZW50KHt2YWx1
ZTogMTgwLCB1bml0czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUd9LCB0aGlzLl9ncmFkaWVu
dC5zdG9wcyk7CiAgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKLSAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBXSS5SYWRpYWxHcmFkaWVudDoKICAgICAgICAgICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG5l
dyBXSS5SYWRpYWxHcmFkaWVudCgiIiwgdGhpcy5fZ3JhZGllbnQuc3RvcHMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXSS5Db25pY0dyYWRpZW50OgorICAgICAg
ICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLkNvbmljR3JhZGllbnQoe3ZhbHVlOiAw
LCB1bml0czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUd9LCBudWxsLCB0aGlzLl9ncmFkaWVu
dC5zdG9wcyk7CisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NoYW5nZWQoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4IDYxY2MwZmNiYWZkZDdhNTJjYWMzNWUy
ZDk3NTZmZDMwZDVjZTRhN2EuLjQ5OWZlY2U5YTEyMTZiY2FiNzA4YjVmNmFhZDg2MjkyZjFmNzZh
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKQEAgLTY0OCw3
ICs2NDgsNyBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9hZGRHcmFkaWVudFRva2Vu
cyh0b2tlbnMpCiAgICAgewotICAgICAgICBsZXQgZ3JhZGllbnRSZWdleCA9IC9eKHJlcGVhdGlu
Zy0pPyhsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudCQvaTsKKyAgICAgICAgbGV0IGdyYWRpZW50UmVn
ZXggPSAvXihyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQkL2k7CiAg
ICAgICAgIGxldCBuZXdUb2tlbnMgPSBbXTsKICAgICAgICAgbGV0IGdyYWRpZW50U3RhcnRJbmRl
eCA9IE5hTjsKICAgICAgICAgbGV0IG9wZW5QYXJlbnRoZXNpcyA9IDA7Cg==
</data>
<flag name="review"
          id="473659"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447902</attachid>
            <date>2021-12-23 12:52:29 -0800</date>
            <delta_ts>2021-12-23 12:52:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234562-20211223215227.patch</filename>
            <type>text/plain</type>
            <size>23841</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
YjIzMDEyZDc2ZjAxNzA3ZjJhZWFlNDdiMzgyYmEwMDFkZjkxNjE0Li5hMDQ1YjhiYWY5ZTRlYWJk
MDRmZGEyZTE1OGQ1NjQ0ZmI1Yjg3MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMS0xMi0yMyAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgY29uaWMgZ3JhZGllbnRzIGluIGdyYWRpZW50
IGVkaXRvciBhbmQgYXV0b2NvbXBsZXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanM6CisgICAgICAgIChX
SS5HcmFkaWVudC5hbmdsZUZyb21TdHJpbmcpOgorICAgICAgICAoV0kuR3JhZGllbnQuZnJvbVN0
cmluZyk6CisgICAgICAgIChXSS5HcmFkaWVudC5wcm90b3R5cGUuZ2V0IGFuZ2xlVmFsdWUpOgor
ICAgICAgICAoV0kuR3JhZGllbnQucHJvdG90eXBlLnNldCBhbmdsZVZhbHVlKToKKyAgICAgICAg
KFdJLkdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVVbml0cyk6CisgICAgICAgIChXSS5HcmFk
aWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVW5pdHMpOgorICAgICAgICAoV0kuR3JhZGllbnQucHJv
dG90eXBlLl9hbmdsZVZhbHVlRm9yVW5pdHMpOgorICAgICAgICAoV0kuR3JhZGllbnQpOgorICAg
ICAgICAoV0kuTGluZWFyR3JhZGllbnQuZnJvbUNvbXBvbmVudHMpOgorICAgICAgICAoV0kuTGlu
ZWFyR3JhZGllbnQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdJLkxpbmVhckdyYWRp
ZW50KToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdJLlJhZGlhbEdy
YWRpZW50LmZyb21Db21wb25lbnRzKToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3Rv
dHlwZS5nZXQgYW5nbGVWYWx1ZSk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5
cGUuc2V0IGFuZ2xlVmFsdWUpOgorICAgICAgICAoV0kuUmFkaWFsR3JhZGllbnQucHJvdG90eXBl
LmdldCBhbmdsZVVuaXRzKToKKyAgICAgICAgKFdJLlJhZGlhbEdyYWRpZW50LnByb3RvdHlwZS5z
ZXQgYW5nbGVVbml0cyk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUuY29w
eSk6CisgICAgICAgIChXSS5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAoV0kuQ29uaWNHcmFkaWVudCk6CisgICAgICAgIChXSS5Db25pY0dyYWRpZW50LmZyb21D
b21wb25lbnRzKToKKyAgICAgICAgKFdJLkNvbmljR3JhZGllbnQucHJvdG90eXBlLmNvcHkpOgor
ICAgICAgICAoV0kuQ29uaWNHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAo
V0kuTGluZWFyR3JhZGllbnQucHJvdG90eXBlLnNldCBhbmdsZVZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5nZXQgYW5nbGVWYWx1ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuc2V0IGFuZ2xlVW5pdHMp
OiBEZWxldGVkLgorICAgICAgICAoV0kuTGluZWFyR3JhZGllbnQucHJvdG90eXBlLmdldCBhbmds
ZVVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5f
YW5nbGVWYWx1ZUZvclVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0dyYWRpZW50RWRpdG9yLmpzOgorICAgICAgICAoV0kuR3JhZGllbnRFZGl0b3IpOgorICAg
ICAgICAoV0kuR3JhZGllbnRFZGl0b3IucHJvdG90eXBlLnNldCBncmFkaWVudCk6CisgICAgICAg
IChXSS5HcmFkaWVudEVkaXRvci5wcm90b3R5cGUuX2dyYWRpZW50VHlwZUNoYW5nZWQpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fYWRkR3JhZGll
bnRUb2tlbnMpOgorCiAyMDIxLTEyLTIxICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBc3NlcnRpb24gRmFpbGVkIHJlbW92aW5nIHN1
YnZpZXcgaW4gQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9kaXNhc3NvY2lhdGVGcm9t
Q29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDg1MTg3MTZl
Y2NlNTJmYjdkY2UyNThlMzhkZjE3ZTAzNTRlN2M0YmIuLjJlODY1MmZhZWIzYjE3YTU2ZTI0NjIz
NTIzMjY1YmE1OTk4MDI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAt
MzY3LDYgKzM2Nyw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkNvbm5lY3Rpb24gQ2xvc2UgRnJhbWUi
XSA9ICJDb25uZWN0aW9uIENsb3NlIEZyYW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbm5lY3Rp
b24gQ2xvc2VkIl0gPSAiQ29ubmVjdGlvbiBDbG9zZWQiOwogbG9jYWxpemVkU3RyaW5nc1siQ29u
bmVjdGlvbiBJRCJdID0gIkNvbm5lY3Rpb24gSUQiOwogbG9jYWxpemVkU3RyaW5nc1siQ29ubmVj
dGlvbjoiXSA9ICJDb25uZWN0aW9uOiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJDb25pYyBHcmFkaWVu
dCJdID0gIkNvbmljIEdyYWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbnNvbGUiXSA9ICJD
b25zb2xlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbnNvbGUgRXZhbHVhdGlvbiJdID0gIkNvbnNv
bGUgRXZhbHVhdGlvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb25zb2xlIEV2YWx1YXRpb24gJWQi
XSA9ICJDb25zb2xlIEV2YWx1YXRpb24gJWQiOwpAQCAtMTE4Myw2ICsxMTg0LDcgQEAgbG9jYWxp
emVkU3RyaW5nc1siUmVuZGVyIFBpcGVsaW5lICVkIl0gPSAiUmVuZGVyIFBpcGVsaW5lICVkIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlJlbmRlcmluZyBGcmFtZXMiXSA9ICJSZW5kZXJpbmcgRnJhbWVz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBMaW5lYXIgR3JhZGllbnQiXSA9ICJSZXBl
YXRpbmcgTGluZWFyIEdyYWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBSYWRp
YWwgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50IjsKK2xvY2FsaXplZFN0
cmluZ3NbIlJlcGVhdGluZyBDb25pYyBHcmFkaWVudCJdID0gIlJlcGVhdGluZyBDb25pYyBHcmFk
aWVudCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0Il0gPSAiUmVxdWVzdCI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJSZXF1ZXN0ICYgUmVzcG9uc2UiXSA9ICJSZXF1ZXN0ICYgUmVzcG9uc2UiOwog
bG9jYWxpemVkU3RyaW5nc1siUmVxdWVzdCAoRE9NIFRyZWUpIl0gPSAiUmVxdWVzdCAoRE9NIFRy
ZWUpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NTU01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCmluZGV4IGNmNGQxMTQ0ZTcwNzQ5NzM4ODI0
NzY5MDk4YjQ3NGIxODI4Y2U4YTUuLjA5NmQxYzJiOGIzMTI3Y2U1MmVkOWY3NjY1YjMwMzgyOWMy
MWQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NTU01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpAQCAtMTExLDYgKzExMSwxMCBAQCBX
SS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgZm9yIChsZXQgY29sb3Igb2YgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMp
CiAgICAgICAgICAgICAgICAgY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVN
aXJyb3IoY29sb3IpXSA9IHRydWU7CiAKKyAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSB0aGVz
ZSBrZXl3b3JkcyBvbmNlIHRoZXkgYXJlIGJ1aWx0LWluIGNvZGVtaXJyb3Igb3Igb25jZSB3ZSBn
ZXQgdmFsdWVzIGZyb20gV2ViS2l0IGl0c2VsZi4KKyAgICAgICAgICAgIHZhbHVlS2V5d29yZHNG
b3JDb2RlTWlycm9yWyJjb25pYy1ncmFkaWVudCJdID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhbHVl
S2V5d29yZHNGb3JDb2RlTWlycm9yWyJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQiXSA9IHRydWU7
CisKICAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKG1pbWVUeXBl
KSB7CiAgICAgICAgICAgICAgICAgbGV0IG1vZGVTcGVjID0gQ29kZU1pcnJvci5yZXNvbHZlTW9k
ZShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwppbmRleCBmNzNkZTc1ZWVjYmZkZjI3NzA4MDg0ZTA5
Yzc5NjczNzAzYWEwZGQ2Li44NGI3MDliYmJhZWIzNTlhZjFhNjFlYzRhNTUyYzQ5ZDM5MmQ4OTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
R3JhZGllbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0dyYWRpZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQs
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMywxNSArMzMsMjYgQEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFk
aWVudAogCiAgICAgLy8gU3RhdGljCiAKKyAgICBzdGF0aWMgYW5nbGVGcm9tU3RyaW5nKHN0cmlu
ZykKKyAgICB7CisgICAgICAgIGxldCBtYXRjaCA9IHN0cmluZy5tYXRjaCgvKFstXGRcLl0rKShc
dyspLyk7CisgICAgICAgIGlmICghbWF0Y2ggfHwgIU9iamVjdC52YWx1ZXMoV0kuR3JhZGllbnQu
QW5nbGVVbml0cykuaW5jbHVkZXMobWF0Y2hbMl0pKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgcmV0dXJuIHt2YWx1ZTogcGFyc2VGbG9hdChtYXRjaFsxXSksIHVuaXRzOiBt
YXRjaFsyXX07CisgICAgfQorCiAgICAgc3RhdGljIGZyb21TdHJpbmcoY3NzU3RyaW5nKQogICAg
IHsKICAgICAgICAgdmFyIHR5cGU7CiAgICAgICAgIHZhciBvcGVuaW5nUGFyZW50aGVzaXNJbmRl
eCA9IGNzc1N0cmluZy5pbmRleE9mKCIoIik7CiAgICAgICAgIHZhciB0eXBlU3RyaW5nID0gY3Nz
U3RyaW5nLnN1YnN0cmluZygwLCBvcGVuaW5nUGFyZW50aGVzaXNJbmRleCk7Ci0gICAgICAgIGlm
ICh0eXBlU3RyaW5nLmluZGV4T2YoV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyKSAhPT0gLTEpCisg
ICAgICAgIGlmICh0eXBlU3RyaW5nLmluY2x1ZGVzKFdJLkdyYWRpZW50LlR5cGVzLkxpbmVhcikp
CiAgICAgICAgICAgICB0eXBlID0gV0kuR3JhZGllbnQuVHlwZXMuTGluZWFyOwotICAgICAgICBl
bHNlIGlmICh0eXBlU3RyaW5nLmluZGV4T2YoV0kuR3JhZGllbnQuVHlwZXMuUmFkaWFsKSAhPT0g
LTEpCisgICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5jbHVkZXMoV0kuR3JhZGllbnQuVHlw
ZXMuUmFkaWFsKSkKICAgICAgICAgICAgIHR5cGUgPSBXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWw7
CisgICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcuaW5jbHVkZXMoV0kuR3JhZGllbnQuVHlwZXMu
Q29uaWMpKQorICAgICAgICAgICAgdHlwZSA9IFdJLkdyYWRpZW50LlR5cGVzLkNvbmljOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIApAQCAtODgsMTEgKzk5LDIwIEBA
IFdJLkdyYWRpZW50ID0gY2xhc3MgR3JhZGllbnQKICAgICAgICAgaWYgKG9wZW5QYXJlbnRoZXNl
cyAhPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICB2YXIgZ3JhZGll
bnQ7Ci0gICAgICAgIGlmICh0eXBlID09PSBXSS5HcmFkaWVudC5UeXBlcy5MaW5lYXIpCisgICAg
ICAgIGxldCBncmFkaWVudCA9IG51bGw7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIFdJLkdyYWRpZW50LlR5cGVzLkxpbmVhcjoKICAgICAgICAgICAgIGdyYWRpZW50ID0g
V0kuTGluZWFyR3JhZGllbnQuZnJvbUNvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuVHlwZXMu
UmFkaWFsOgogICAgICAgICAgICAgZ3JhZGllbnQgPSBXSS5SYWRpYWxHcmFkaWVudC5mcm9tQ29t
cG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
V0kuR3JhZGllbnQuVHlwZXMuQ29uaWM6CisgICAgICAgICAgICBncmFkaWVudCA9IFdJLkNvbmlj
R3JhZGllbnQuZnJvbUNvbXBvbmVudHMoY29tcG9uZW50cyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogCiAgICAgICAgIGlmIChncmFkaWVudCkKICAgICAgICAgICAgIGdyYWRpZW50
LnJlcGVhdHMgPSB0eXBlU3RyaW5nLnN0YXJ0c1dpdGgoInJlcGVhdGluZyIpOwpAQCAtMTQ5LDYg
KzE2OSwzMCBAQCBXSS5HcmFkaWVudCA9IGNsYXNzIEdyYWRpZW50CiAKICAgICAvLyBQdWJsaWMK
IAorICAgIGdldCBhbmdsZVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9hbmds
ZS52YWx1ZS5tYXhEZWNpbWFscygyKTsKKyAgICB9CisKKyAgICBzZXQgYW5nbGVWYWx1ZSh2YWx1
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2FuZ2xlLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisg
ICAgZ2V0IGFuZ2xlVW5pdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2FuZ2xlLnVu
aXRzOworICAgIH0KKworICAgIHNldCBhbmdsZVVuaXRzKHVuaXRzKQorICAgIHsKKyAgICAgICAg
aWYgKHVuaXRzID09PSB0aGlzLl9hbmdsZS51bml0cykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9hbmdsZS52YWx1ZSA9IHRoaXMuX2FuZ2xlVmFsdWVGb3JVbml0cyh1bml0
cyk7CisgICAgICAgIHRoaXMuX2FuZ2xlLnVuaXRzID0gdW5pdHM7CisgICAgfQorCiAgICAgY29w
eSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgpAQCAtMTU4
LDExICsyMDIsNjMgQEAgV0kuR3JhZGllbnQgPSBjbGFzcyBHcmFkaWVudAogICAgIHsKICAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9CisKKyAgICAvLyBQcml2YXRl
CisKKyAgICBfYW5nbGVWYWx1ZUZvclVuaXRzKHVuaXRzKQorICAgIHsKKyAgICAgICAgaWYgKHVu
aXRzID09PSB0aGlzLl9hbmdsZS51bml0cykKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbmds
ZS52YWx1ZTsKKworICAgICAgICBsZXQgZGVnID0gMDsKKworICAgICAgICBzd2l0Y2ggKHRoaXMu
X2FuZ2xlLnVuaXRzKSB7CisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUc6
CisgICAgICAgICAgICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5SQUQ6CisgICAgICAgICAg
ICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZSAqIDE4MCAvIE1hdGguUEk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuR1JBRDoKKyAgICAg
ICAgICAgIGRlZyA9IHRoaXMuX2FuZ2xlLnZhbHVlIC8gNDAwICogMzYwOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLlRVUk46CisgICAg
ICAgICAgICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZSAqIDM2MDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICh1bml0cykgeworICAgICAgICBjYXNlIFdJ
LkdyYWRpZW50LkFuZ2xlVW5pdHMuREVHOgorICAgICAgICAgICAgcmV0dXJuIGRlZzsKKworICAg
ICAgICBjYXNlIFdJLkdyYWRpZW50LkFuZ2xlVW5pdHMuUkFEOgorICAgICAgICAgICAgcmV0dXJu
IGRlZyAqIE1hdGguUEkgLyAxODA7CisKKyAgICAgICAgY2FzZSBXSS5HcmFkaWVudC5BbmdsZVVu
aXRzLkdSQUQ6CisgICAgICAgICAgICByZXR1cm4gZGVnIC8gMzYwICogNDAwOworCisgICAgICAg
IGNhc2UgV0kuR3JhZGllbnQuQW5nbGVVbml0cy5UVVJOOgorICAgICAgICAgICAgcmV0dXJuIGRl
ZyAvIDM2MDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworICAgIH0KIH07CiAKIFdJ
LkdyYWRpZW50LlR5cGVzID0gewogICAgIExpbmVhcjogImxpbmVhci1ncmFkaWVudCIsCi0gICAg
UmFkaWFsOiAicmFkaWFsLWdyYWRpZW50IgorICAgIFJhZGlhbDogInJhZGlhbC1ncmFkaWVudCIs
CisgICAgQ29uaWM6ICJjb25pYy1ncmFkaWVudCIsCit9OworCitXSS5HcmFkaWVudC5BbmdsZVVu
aXRzID0geworICAgIERFRzogImRlZyIsCisgICAgUkFEOiAicmFkIiwKKyAgICBHUkFEOiAiZ3Jh
ZCIsCisgICAgVFVSTjogInR1cm4iLAogfTsKIAogV0kuTGluZWFyR3JhZGllbnQgPSBjbGFzcyBM
aW5lYXJHcmFkaWVudCBleHRlbmRzIFdJLkdyYWRpZW50CkBAIC0xNzcsMTUgKzI3MywxMyBAQCBX
SS5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50IGV4dGVuZHMgV0kuR3JhZGll
bnQKIAogICAgIHN0YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsKLSAgICAg
ICAgbGV0IGFuZ2xlID0ge3ZhbHVlOiAxODAsIHVuaXRzOiBXSS5MaW5lYXJHcmFkaWVudC5Bbmds
ZVVuaXRzLkRFR307CisgICAgICAgIGxldCBhbmdsZSA9IHt2YWx1ZTogMTgwLCB1bml0czogV0ku
R3JhZGllbnQuQW5nbGVVbml0cy5ERUd9OwogCiAgICAgICAgIGlmIChjb21wb25lbnRzWzBdLmxl
bmd0aCA9PT0gMSAmJiAhV0kuQ29sb3IuZnJvbVN0cmluZyhjb21wb25lbnRzWzBdWzBdKSkgewot
ICAgICAgICAgICAgbGV0IG1hdGNoID0gY29tcG9uZW50c1swXVswXS5tYXRjaCgvKFstXGRcLl0r
KShcdyspLyk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoIHx8ICFPYmplY3QudmFsdWVzKFdJLkxp
bmVhckdyYWRpZW50LkFuZ2xlVW5pdHMpLmluY2x1ZGVzKG1hdGNoWzJdKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIGFuZ2xlID0gV0kuR3JhZGllbnQuYW5nbGVG
cm9tU3RyaW5nKGNvbXBvbmVudHNbMF1bMF0pOwogCi0gICAgICAgICAgICBhbmdsZS52YWx1ZSA9
IHBhcnNlRmxvYXQobWF0Y2hbMV0pOwotICAgICAgICAgICAgYW5nbGUudW5pdHMgPSBtYXRjaFsy
XTsKKyAgICAgICAgICAgIGlmICghYW5nbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7
CiAKICAgICAgICAgICAgIGNvbXBvbmVudHMuc2hpZnQoKTsKICAgICAgICAgfSBlbHNlIGlmIChj
b21wb25lbnRzWzBdWzBdID09PSAidG8iKSB7CkBAIC0yMjYsMzMgKzMyMCwxMyBAQCBXSS5MaW5l
YXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50IGV4dGVuZHMgV0kuR3JhZGllbnQKICAg
ICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHN0b3BzID0g
V0kuR3JhZGllbnQuc3RvcHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAgICAgbGV0
IHN0b3BzID0gV0kuR3JhZGllbnQuc3RvcHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKICAg
ICAgICAgaWYgKCFzdG9wcykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiBuZXcgV0kuTGluZWFyR3JhZGllbnQoYW5nbGUsIHN0b3BzKTsKICAgICB9CiAKLSAgICAv
LyBQdWJsaWMKLQotICAgIHNldCBhbmdsZVZhbHVlKHZhbHVlKSB7IHRoaXMuX2FuZ2xlLnZhbHVl
ID0gdmFsdWU7IH0KLQotICAgIGdldCBhbmdsZVZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9hbmdsZS52YWx1ZS5tYXhEZWNpbWFscygyKTsKLSAgICB9Ci0KLSAgICBzZXQgYW5n
bGVVbml0cyh1bml0cykKLSAgICB7Ci0gICAgICAgIGlmICh1bml0cyA9PT0gdGhpcy5fYW5nbGUu
dW5pdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fYW5nbGUudmFsdWUg
PSB0aGlzLl9hbmdsZVZhbHVlRm9yVW5pdHModW5pdHMpOwotICAgICAgICB0aGlzLl9hbmdsZS51
bml0cyA9IHVuaXRzOwotICAgIH0KLQotICAgIGdldCBhbmdsZVVuaXRzKCkgeyByZXR1cm4gdGhp
cy5fYW5nbGUudW5pdHM7IH0KLQogICAgIGNvcHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyBXSS5MaW5lYXJHcmFkaWVudCh0aGlzLl9hbmdsZSwgdGhpcy5zdG9wcy5jb25jYXQoKSk7CkBA
IC0yODAsMTA5ICszNTQsMTQxIEBAIFdJLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGluZWFyR3Jh
ZGllbnQgZXh0ZW5kcyBXSS5HcmFkaWVudAogICAgICAgICBlbHNlIGlmIChkZWcgIT09IDE4MCkK
ICAgICAgICAgICAgIHN0ciArPSB0aGlzLmFuZ2xlVmFsdWUgKyB0aGlzLmFuZ2xlVW5pdHM7CiAK
LSAgICAgICAgaWYgKHN0ciAhPT0gIiIpCisgICAgICAgIGlmIChzdHIpCiAgICAgICAgICAgICBz
dHIgKz0gIiwgIjsKIAogICAgICAgICBzdHIgKz0gdGhpcy5zdHJpbmdGcm9tU3RvcHModGhpcy5z
dG9wcyk7CiAKICAgICAgICAgcmV0dXJuICh0aGlzLnJlcGVhdHMgPyAicmVwZWF0aW5nLSIgOiAi
IikgKyB0aGlzLnR5cGUgKyAiKCIgKyBzdHIgKyAiKSI7CiAgICAgfQorfTsKIAotICAgIC8vIFBy
aXZhdGUKK1dJLlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQgZXh0ZW5kcyBX
SS5HcmFkaWVudAoreworICAgIGNvbnN0cnVjdG9yKHNpemluZywgc3RvcHMpCisgICAgeworICAg
ICAgICBzdXBlcihXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwsIHN0b3BzKTsKKyAgICAgICAgdGhp
cy5zaXppbmcgPSBzaXppbmc7CisgICAgfQogCi0gICAgX2FuZ2xlVmFsdWVGb3JVbml0cyh1bml0
cykKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25lbnRz
KQogICAgIHsKLSAgICAgICAgaWYgKHVuaXRzID09PSB0aGlzLl9hbmdsZS51bml0cykKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9hbmdsZS52YWx1ZTsKKyAgICAgICAgbGV0IHNpemluZyA9ICFX
SS5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF0uam9pbigiICIpKSA/IGNvbXBvbmVudHMu
c2hpZnQoKS5qb2luKCIgIikgOiAiIjsKIAotICAgICAgICBsZXQgZGVnID0gMDsKKyAgICAgICAg
bGV0IHN0b3BzID0gV0kuR3JhZGllbnQuc3RvcHNXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsK
KyAgICAgICAgaWYgKCFzdG9wcykKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAg
IHN3aXRjaCAodGhpcy5fYW5nbGUudW5pdHMpIHsKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFk
aWVudC5BbmdsZVVuaXRzLkRFRzoKLSAgICAgICAgICAgIGRlZyA9IHRoaXMuX2FuZ2xlLnZhbHVl
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBuZXcgV0kuUmFkaWFsR3JhZGll
bnQoc2l6aW5nLCBzdG9wcyk7CisgICAgfQogCi0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGll
bnQuQW5nbGVVbml0cy5SQUQ6Ci0gICAgICAgICAgICBkZWcgPSB0aGlzLl9hbmdsZS52YWx1ZSAq
IDE4MCAvIE1hdGguUEk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAvLyBQdWJsaWMKIAotICAg
ICAgICBjYXNlIFdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMuR1JBRDoKLSAgICAgICAgICAg
IGRlZyA9IHRoaXMuX2FuZ2xlLnZhbHVlIC8gNDAwICogMzYwOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgZ2V0IGFuZ2xlVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQog
Ci0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5UVVJOOgotICAgICAg
ICAgICAgZGVnID0gdGhpcy5fYW5nbGUudmFsdWUgKiAzNjA7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBzZXQgYW5nbGVWYWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGZhbHNlLCAiQ1NTIGNvbmljIGdyYWRpZW50cyBkbyBub3QgaGF2ZSBhbiBhbmdsZSIpOworICAg
IH0KIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJv
cihgVW5rbm93biBhbmdsZSB1bml0cyAiJHt0aGlzLl9hbmdsZS51bml0c30iYCk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQorICAgIGdldCBhbmdsZVVuaXRzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAiIjsKKyAgICB9CiAKLSAgICAgICAgbGV0IHZhbHVlID0gMDsKKyAgICBz
ZXQgYW5nbGVVbml0cyh1bml0cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNl
LCAiQ1NTIGNvbmljIGdyYWRpZW50cyBkbyBub3QgaGF2ZSBhbiBhbmdsZSIpOworICAgIH0KIAot
ICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7Ci0gICAgICAgIGNhc2UgV0kuTGluZWFyR3JhZGllbnQu
QW5nbGVVbml0cy5ERUc6Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlZzsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIGNvcHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5SYWRpYWxHcmFk
aWVudCh0aGlzLnNpemluZywgdGhpcy5zdG9wcy5jb25jYXQoKSk7CisgICAgfQogCi0gICAgICAg
IGNhc2UgV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5SQUQ6Ci0gICAgICAgICAgICB2YWx1
ZSA9IGRlZyAqIE1hdGguUEkgLyAxODA7Ci0gICAgICAgICAgICBicmVhazsKKyAgICB0b1N0cmlu
ZygpCisgICAgeworICAgICAgICBsZXQgc3RyID0gdGhpcy5zaXppbmc7CiAKLSAgICAgICAgY2Fz
ZSBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkdSQUQ6Ci0gICAgICAgICAgICB2YWx1ZSA9
IGRlZyAvIDM2MCAqIDQwMDsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoc3RyKQor
ICAgICAgICAgICAgc3RyICs9ICIsICI7CiAKLSAgICAgICAgY2FzZSBXSS5MaW5lYXJHcmFkaWVu
dC5BbmdsZVVuaXRzLlRVUk46Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlZyAvIDM2MDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIHN0ciArPSB0aGlzLnN0cmluZ0Zyb21T
dG9wcyh0aGlzLnN0b3BzKTsKIAotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVy
biAodGhpcy5yZXBlYXRzID8gInJlcGVhdGluZy0iIDogIiIpICsgdGhpcy50eXBlICsgIigiICsg
c3RyICsgIikiOwogICAgIH0KIH07CiAKLVdJLkxpbmVhckdyYWRpZW50LkFuZ2xlVW5pdHMgPSB7
Ci0gICAgREVHOiAiZGVnIiwKLSAgICBSQUQ6ICJyYWQiLAotICAgIEdSQUQ6ICJncmFkIiwKLSAg
ICBUVVJOOiAidHVybiIsCi19OwotCi1XSS5SYWRpYWxHcmFkaWVudCA9IGNsYXNzIFJhZGlhbEdy
YWRpZW50IGV4dGVuZHMgV0kuR3JhZGllbnQKK1dJLkNvbmljR3JhZGllbnQgPSBjbGFzcyBDb25p
Y0dyYWRpZW50IGV4dGVuZHMgV0kuR3JhZGllbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihzaXppbmcs
IHN0b3BzKQorICAgIGNvbnN0cnVjdG9yKGFuZ2xlLCBwb3NpdGlvbiwgc3RvcHMpCiAgICAgewot
ICAgICAgICBzdXBlcihXSS5HcmFkaWVudC5UeXBlcy5SYWRpYWwsIHN0b3BzKTsKLSAgICAgICAg
dGhpcy5zaXppbmcgPSBzaXppbmc7CisgICAgICAgIHN1cGVyKFdJLkdyYWRpZW50LlR5cGVzLkNv
bmljLCBzdG9wcyk7CisKKyAgICAgICAgdGhpcy5fYW5nbGUgPSBhbmdsZTsKKyAgICAgICAgdGhp
cy5fcG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAogICAgIHN0
YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsKLSAgICAgICAgdmFyIHNpemlu
ZyA9ICFXSS5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF0uam9pbigiICIpKSA/IGNvbXBv
bmVudHMuc2hpZnQoKS5qb2luKCIgIikgOiAiIjsKKyAgICAgICAgbGV0IGFuZ2xlID0ge3ZhbHVl
OiAwLCB1bml0czogV0kuR3JhZGllbnQuQW5nbGVVbml0cy5ERUd9OworICAgICAgICBsZXQgcG9z
aXRpb24gPSBudWxsOworICAgICAgICBsZXQgaGFzQ3VzdG9tQW5nbGVPclBvc2l0aW9uID0gZmFs
c2U7CiAKLSAgICAgICAgdmFyIHN0b3BzID0gV0kuR3JhZGllbnQuc3RvcHNXaXRoQ29tcG9uZW50
cyhjb21wb25lbnRzKTsKKyAgICAgICAgaWYgKGNvbXBvbmVudHNbMF1bMF0gPT0gImZyb20iKSB7
CisgICAgICAgICAgICBjb21wb25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICBhbmdsZSA9
IFdJLkdyYWRpZW50LmFuZ2xlRnJvbVN0cmluZyhjb21wb25lbnRzWzBdWzBdKTsKKyAgICAgICAg
ICAgIGlmICghYW5nbGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAg
ICBjb21wb25lbnRzWzBdLnNoaWZ0KCk7CisgICAgICAgICAgICBoYXNDdXN0b21BbmdsZU9yUG9z
aXRpb24gPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjb21wb25lbnRzWzBdWzBdID09
ICJhdCIpIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHNbMF0uc2hpZnQoKTsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjM0NjQzPiAoV2ViIEluc3BlY3Rvcjog
YWxsb3cgZWRpdGluZyBwb3NpdGlvbnMgaW4gZ3JhZGllbnQgZWRpdG9yKQorICAgICAgICAgICAg
aWYgKGNvbXBvbmVudHNbMF0ubGVuZ3RoIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgICAgICBwb3NpdGlvbiA9IGNvbXBvbmVudHNbMF0uam9pbigiICIpOworICAg
ICAgICAgICAgaGFzQ3VzdG9tQW5nbGVPclBvc2l0aW9uID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaGFzQ3VzdG9tQW5nbGVPclBvc2l0aW9uKQorICAgICAgICAgICAgY29tcG9uZW50
cy5zaGlmdCgpOworCisgICAgICAgIGxldCBzdG9wcyA9IFdJLkdyYWRpZW50LnN0b3BzV2l0aENv
bXBvbmVudHMoY29tcG9uZW50cyk7CiAgICAgICAgIGlmICghc3RvcHMpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKIAotICAgICAgICByZXR1cm4gbmV3IFdJLlJhZGlhbEdyYWRpZW50KHNpemlu
Zywgc3RvcHMpOworICAgICAgICByZXR1cm4gbmV3IFdJLkNvbmljR3JhZGllbnQoYW5nbGUsIHBv
c2l0aW9uLCBzdG9wcyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBjb3B5KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuUmFkaWFsR3JhZGllbnQodGhpcy5zaXppbmcsIHRo
aXMuc3RvcHMuY29uY2F0KCkpOworICAgICAgICByZXR1cm4gbmV3IFdJLkNvbmljR3JhZGllbnQo
dGhpcy5fYW5nbGUsIHRoaXMuX3Bvc2l0aW9uLCB0aGlzLnN0b3BzLmNvbmNhdCgpKTsKICAgICB9
CiAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICB2YXIgc3RyID0gdGhpcy5zaXppbmc7
CisgICAgICAgIGxldCBzdHIgPSAiIjsKKworICAgICAgICBpZiAodGhpcy5fYW5nbGUudmFsdWUp
CisgICAgICAgICAgICBzdHIgKz0gYGZyb20gJHt0aGlzLl9hbmdsZS52YWx1ZX0ke3RoaXMuX2Fu
Z2xlLnVuaXRzfWA7CisKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uKSB7CisgICAgICAgICAg
ICBpZiAoc3RyKQorICAgICAgICAgICAgICAgIHN0ciArPSAiICI7CisgICAgICAgICAgICBzdHIg
Kz0gYGF0ICR7dGhpcy5fcG9zaXRpb259YDsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChzdHIg
IT09ICIiKQorICAgICAgICBpZiAoc3RyKQogICAgICAgICAgICAgc3RyICs9ICIsICI7CiAKICAg
ICAgICAgc3RyICs9IHRoaXMuc3RyaW5nRnJvbVN0b3BzKHRoaXMuc3RvcHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRl
eHRNYXJrZXJzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29kZU1pcnJvclRleHRNYXJrZXJzLmpzCmluZGV4IDFkNDc2OTMwMWY1NjUyNDQ5YTk5ZjM5NDA5
MWY0N2VhMDA3ZjI3ZjkuLjUyZWIxZDgwYTFkY2IzOWQ0ZmEwM2UzMTE1NWFjNTBlNTYzOWI4MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
ZGVNaXJyb3JUZXh0TWFya2Vycy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMKQEAgLTExMSw3ICsxMTEsNyBA
QCBmdW5jdGlvbiBjcmVhdGVDb2RlTWlycm9yQ29sb3JUZXh0TWFya2Vycyhjb2RlTWlycm9yLCBy
YW5nZSwgb3B0aW9ucyA9IHt9KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50JC8udGVz
dChsaW5lQ29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgpKSkKKyAgICAgICAgaWYgKC8ocmVwZWF0
aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50JC8udGVzdChsaW5lQ29udGVudC5z
dWJzdHJpbmcoMCwgaW5kZXgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBBY3QgYXMgYSBuZWdhdGl2ZSBsb29rLWJlaGluZCBhbmQgZGlzYWxsb3cgdGhlIGNvbG9y
IGZyb20gYmVpbmcgcHJlZml4aW5nIHdpdGggY2VydGFpbiBjaGFyYWN0ZXJzLgpAQCAtMTI4LDcg
KzEyOCw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUNvZGVNaXJyb3JHcmFkaWVudFRleHRNYXJrZXJzKGNv
ZGVNaXJyb3IsIHJhbmdlLCBvcHRpb25zID0ge30pCiAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5z
dGFuY2VvZiBXSS5UZXh0UmFuZ2UgPyByYW5nZS5zdGFydExpbmUgOiAwOwogICAgIHZhciBlbmQg
PSByYW5nZSBpbnN0YW5jZW9mIFdJLlRleHRSYW5nZSA/IHJhbmdlLmVuZExpbmUgKyAxIDogY29k
ZU1pcnJvci5saW5lQ291bnQoKTsKIAotICAgIHZhciBncmFkaWVudFJlZ2V4ID0gLyhyZXBlYXRp
bmctKT8obGluZWFyfHJhZGlhbCktZ3JhZGllbnRccypcKFxzKi9nOworICAgIHZhciBncmFkaWVu
dFJlZ2V4ID0gLyhyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnRccypc
KFxzKi9nOwogCiAgICAgZm9yICh2YXIgbGluZU51bWJlciA9IHN0YXJ0OyBsaW5lTnVtYmVyIDwg
ZW5kOyArK2xpbmVOdW1iZXIpIHsKICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gY29kZU1pcnJv
ci5nZXRMaW5lKGxpbmVOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5qcwppbmRleCBkYTc4NDMx
MjAxMDc2OWU2M2QzMjdiMzZjMjNhY2FhZTg2ZWVlMzhjLi5hMWRkYWIyZjVkNmVhYzE5Zjg2OTRk
MDA3M2ZlNzE0OGYyN2ZmYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudEVkaXRvci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBEZXZpbiBSb3Vzc28gPHdlYmtpdEBkZXZp
bnJvdXNzby5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NDUsNiArNDUsMTEgQEAgV0kuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVkaXRvciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGxhYmVsOiBXSS5VSVN0cmluZygiUmFk
aWFsIEdyYWRpZW50IiksCiAgICAgICAgICAgICAgICAgcmVwZWF0czogZmFsc2UKICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAiY29uaWMtZ3JhZGllbnQiOiB7CisgICAgICAgICAgICAgICAg
dHlwZTogV0kuQ29uaWNHcmFkaWVudCwKKyAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJp
bmcoIkNvbmljIEdyYWRpZW50IiksCisgICAgICAgICAgICAgICAgcmVwZWF0czogZmFsc2UKKyAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCI6IHsK
ICAgICAgICAgICAgICAgICB0eXBlOiBXSS5MaW5lYXJHcmFkaWVudCwKICAgICAgICAgICAgICAg
ICBsYWJlbDogV0kuVUlTdHJpbmcoIlJlcGVhdGluZyBMaW5lYXIgR3JhZGllbnQiKSwKQEAgLTU0
LDcgKzU5LDEyIEBAIFdJLkdyYWRpZW50RWRpdG9yID0gY2xhc3MgR3JhZGllbnRFZGl0b3IgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB0eXBlOiBXSS5SYWRpYWxHcmFkaWVudCwK
ICAgICAgICAgICAgICAgICBsYWJlbDogV0kuVUlTdHJpbmcoIlJlcGVhdGluZyBSYWRpYWwgR3Jh
ZGllbnQiKSwKICAgICAgICAgICAgICAgICByZXBlYXRzOiB0cnVlCi0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCI6IHsK
KyAgICAgICAgICAgICAgICB0eXBlOiBXSS5Db25pY0dyYWRpZW50LAorICAgICAgICAgICAgICAg
IGxhYmVsOiBXSS5VSVN0cmluZygiUmVwZWF0aW5nIENvbmljIEdyYWRpZW50IiksCisgICAgICAg
ICAgICAgICAgcmVwZWF0czogdHJ1ZQorICAgICAgICAgICAgfSwKICAgICAgICAgfTsKICAgICAg
ICAgdGhpcy5fZWRpdGluZ0NvbG9yID0gZmFsc2U7CiAKQEAgLTkzLDEwICsxMDMsMTAgQEAgV0ku
R3JhZGllbnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVkaXRvciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICB0aGlzLl9hbmdsZVVuaXRzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
aGFuZ2UiLCB0aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBj
b25zdCBhbmdsZVVuaXRzRGF0YSA9IFsKLSAgICAgICAgICAgIHtuYW1lOiBXSS5MaW5lYXJHcmFk
aWVudC5BbmdsZVVuaXRzLkRFRywgbWluOiAwLCBtYXg6IDM2MCwgc3RlcDogMX0sCi0gICAgICAg
ICAgICB7bmFtZTogV0kuTGluZWFyR3JhZGllbnQuQW5nbGVVbml0cy5SQUQsIG1pbjogMCwgbWF4
OiAyICogTWF0aC5QSSwgc3RlcDogMC4wMX0sCi0gICAgICAgICAgICB7bmFtZTogV0kuTGluZWFy
R3JhZGllbnQuQW5nbGVVbml0cy5HUkFELCBtaW46IDAsIG1heDogNDAwLCBzdGVwOiAxfSwKLSAg
ICAgICAgICAgIHtuYW1lOiBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLlRVUk4sIG1pbjog
MCwgbWF4OiAxLCBzdGVwOiAwLjAxfQorICAgICAgICAgICAge25hbWU6IFdJLkdyYWRpZW50LkFu
Z2xlVW5pdHMuREVHLCBtaW46IDAsIG1heDogMzYwLCBzdGVwOiAxfSwKKyAgICAgICAgICAgIHtu
YW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRzLlJBRCwgbWluOiAwLCBtYXg6IDIgKiBNYXRoLlBJ
LCBzdGVwOiAwLjAxfSwKKyAgICAgICAgICAgIHtuYW1lOiBXSS5HcmFkaWVudC5BbmdsZVVuaXRz
LkdSQUQsIG1pbjogMCwgbWF4OiA0MDAsIHN0ZXA6IDF9LAorICAgICAgICAgICAge25hbWU6IFdJ
LkdyYWRpZW50LkFuZ2xlVW5pdHMuVFVSTiwgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDF9CiAg
ICAgICAgIF07CiAKICAgICAgICAgdGhpcy5fYW5nbGVVbml0c0NvbmZpZ3VyYXRpb24gPSBuZXcg
TWFwKGFuZ2xlVW5pdHNEYXRhLm1hcCgoe25hbWUsIG1pbiwgbWF4LCBzdGVwfSkgPT4gewpAQCAt
MTE5LDE4ICsxMjksMjIgQEAgV0kuR3JhZGllbnRFZGl0b3IgPSBjbGFzcyBHcmFkaWVudEVkaXRv
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIGNvbnN0IGlzTGluZWFyID0gZ3JhZGllbnQg
aW5zdGFuY2VvZiBXSS5MaW5lYXJHcmFkaWVudDsKICAgICAgICAgY29uc3QgaXNSYWRpYWwgPSBn
cmFkaWVudCBpbnN0YW5jZW9mIFdJLlJhZGlhbEdyYWRpZW50OwotICAgICAgICBjb25zb2xlLmFz
c2VydChpc0xpbmVhciB8fCBpc1JhZGlhbCk7Ci0gICAgICAgIGlmICghaXNMaW5lYXIgJiYgIWlz
UmFkaWFsKQorICAgICAgICBjb25zdCBpc0NvbmljID0gZ3JhZGllbnQgaW5zdGFuY2VvZiBXSS5D
b25pY0dyYWRpZW50OworICAgICAgICBjb25zb2xlLmFzc2VydChpc0xpbmVhciB8fCBpc1JhZGlh
bCB8fCBpc0NvbmljKTsKKyAgICAgICAgaWYgKCFpc0xpbmVhciAmJiAhaXNSYWRpYWwgJiYgIWlz
Q29uaWMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBn
cmFkaWVudDsKICAgICAgICAgdGhpcy5fZ3JhZGllbnRTbGlkZXIuc3RvcHMgPSB0aGlzLl9ncmFk
aWVudC5zdG9wczsKICAgICAgICAgaWYgKGlzTGluZWFyKSB7CiAgICAgICAgICAgICB0aGlzLl9n
cmFkaWVudFR5cGVQaWNrZXIudmFsdWUgPSB0aGlzLl9ncmFkaWVudC5yZXBlYXRzID8gInJlcGVh
dGluZy1saW5lYXItZ3JhZGllbnQiIDogImxpbmVhci1ncmFkaWVudCI7Ci0KICAgICAgICAgICAg
IHRoaXMuX2FuZ2xlVW5pdHNDaGFuZ2VkKCk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVs
c2UgaWYgKGlzUmFkaWFsKQogICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnRUeXBlUGlja2VyLnZh
bHVlID0gdGhpcy5fZ3JhZGllbnQucmVwZWF0cyA/ICJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50
IiA6ICJyYWRpYWwtZ3JhZGllbnQiOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMu
X2dyYWRpZW50VHlwZVBpY2tlci52YWx1ZSA9IHRoaXMuX2dyYWRpZW50LnJlcGVhdHMgPyAicmVw
ZWF0aW5nLWNvbmljLWdyYWRpZW50IiA6ICJjb25pYy1ncmFkaWVudCI7CisgICAgICAgICAgICB0
aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fdXBk
YXRlQ1NTQ2xhc3NGb3JHcmFkaWVudFR5cGUoKTsKICAgICB9CkBAIC0xODUsMTIgKzE5OSwxOSBA
QCBXSS5HcmFkaWVudEVkaXRvciA9IGNsYXNzIEdyYWRpZW50RWRpdG9yIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgewogICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gdGhpcy5fZ3JhZGllbnRUeXBl
c1t0aGlzLl9ncmFkaWVudFR5cGVQaWNrZXIudmFsdWVdOwogICAgICAgICBpZiAoISh0aGlzLl9n
cmFkaWVudCBpbnN0YW5jZW9mIGRlc2NyaXB0b3IudHlwZSkpIHsKLSAgICAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLnR5cGUgPT09IFdJLkxpbmVhckdyYWRpZW50KSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5fZ3JhZGllbnQgPSBuZXcgV0kuTGluZWFyR3JhZGllbnQoe3ZhbHVlOiAxODAsIHVuaXRz
OiBXSS5MaW5lYXJHcmFkaWVudC5BbmdsZVVuaXRzLkRFR30sIHRoaXMuX2dyYWRpZW50LnN0b3Bz
KTsKLQorICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgV0kuTGluZWFyR3JhZGllbnQ6CisgICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQg
PSBuZXcgV0kuTGluZWFyR3JhZGllbnQoe3ZhbHVlOiAxODAsIHVuaXRzOiBXSS5HcmFkaWVudC5B
bmdsZVVuaXRzLkRFR30sIHRoaXMuX2dyYWRpZW50LnN0b3BzKTsKICAgICAgICAgICAgICAgICB0
aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdJLlJhZGlhbEdyYWRpZW50OgogICAgICAg
ICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbmV3IFdJLlJhZGlhbEdyYWRpZW50KCIiLCB0aGlz
Ll9ncmFkaWVudC5zdG9wcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFdJLkNvbmljR3JhZGllbnQ6CisgICAgICAgICAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBu
ZXcgV0kuQ29uaWNHcmFkaWVudCh7dmFsdWU6IDAsIHVuaXRzOiBXSS5HcmFkaWVudC5BbmdsZVVu
aXRzLkRFR30sIG51bGwsIHRoaXMuX2dyYWRpZW50LnN0b3BzKTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9hbmdsZVVuaXRzQ2hhbmdlZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVDU1NDbGFzc0ZvckdyYWRpZW50VHlw
ZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMK
aW5kZXggNjFjYzBmY2JhZmRkN2E1MmNhYzM1ZTJkOTc1NmZkMzBkNWNlNGE3YS4uNDk5ZmVjZTlh
MTIxNmJjYWI3MDhiNWY2YWFkODYyOTJmMWY3NmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtNjQ4LDcgKzY0OCw3IEBAIFdJLlNwcmVhZHNoZWV0U3R5
bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgX2FkZEdyYWRpZW50VG9rZW5zKHRva2VucykKICAgICB7Ci0gICAgICAgIGxl
dCBncmFkaWVudFJlZ2V4ID0gL14ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50
JC9pOworICAgICAgICBsZXQgZ3JhZGllbnRSZWdleCA9IC9eKHJlcGVhdGluZy0pPyhsaW5lYXJ8
cmFkaWFsfGNvbmljKS1ncmFkaWVudCQvaTsKICAgICAgICAgbGV0IG5ld1Rva2VucyA9IFtdOwog
ICAgICAgICBsZXQgZ3JhZGllbnRTdGFydEluZGV4ID0gTmFOOwogICAgICAgICBsZXQgb3BlblBh
cmVudGhlc2lzID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>