<?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>62188</bug_id>
          
          <creation_ts>2011-06-06 22:59:31 -0700</creation_ts>
          <short_desc>Web Inspector: remove shadow dom inspection from Elements panel by default.</short_desc>
          <delta_ts>2012-05-02 02:28:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>juzna.cz+webkit</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mnaganov</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416354</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-06 22:59:31 -0700</bug_when>
    <thetext>Today, expanding &lt;input&gt; element shows dom nodes that were not authored by the client. It adds a lot of confusion and brings no value to the end user.
I can only see shadow dom inspection valuable for the WebKit engineers working with the shadow dom. Could we add invisible switch / keyboard shortcut that would opt into that mode please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416493</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 07:41:23 -0700</bug_when>
    <thetext>So I looked at it again. In addition to confusing the end user with the &quot;shadow&quot; concepts, implementation added in http://trac.webkit.org/changeset/85751 is bad. It adds complexity into already too complex InspectorDOMAgent. In particular, in some places of code it assumes that shadow root is a part of the DOM hierarchy, in the others it treats it differently.

I&apos;d suggest:
- rolling out this change
- waiting for clients to ask for it
- doing it properly if they do

We should not compromise product quality and code complexity for the sake of experimental features with no demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416506</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-07 07:56:44 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; So I looked at it again. In addition to confusing the end user with the &quot;shadow&quot; concepts, implementation added in http://trac.webkit.org/changeset/85751 is bad. It adds complexity into already too complex InspectorDOMAgent. In particular, in some places of code it assumes that shadow root is a part of the DOM hierarchy, in the others it treats it differently.
&gt; 
&gt; I&apos;d suggest:
&gt; - rolling out this change
&gt; - waiting for clients to ask for it
&gt; - doing it properly if they do
&gt; 
&gt; We should not compromise product quality and code complexity for the sake of experimental features with no demand.

Pavel, would you please elaborate your notion of &quot;code complexity&quot;? In InspectorDOMAgent, this affects some 15 lines, which appears to me as fairly humble for a 1.5K lines file (and probably way less impact that shadow trees have in other places).

We use same instrumentation methods in the InspectorInstrumentation interface in order to keep the interface narrow (also, the existing names seemed a good match for what&apos;s happening).

As for the front-end/back-end interface (i.e. inspector protocol), I should have probably reused similar methods, but since these had usual DOM parent/child relationship explicitly in their names, I went for a separate method. We may consider renaming the protocol methods, perhaps, as part of the protocol cleanup.

WRT &quot;confusing the end user&quot; -- in my view, having an ability to see the implementation of shadow DOM helps user to understand how the element will be rendered (and, to some extent, what may be styled).

As for &quot;no demand&quot;, I think it would be fair to hear from Dimitry &amp; co, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416541</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 09:01:03 -0700</bug_when>
    <thetext>I agree with Andrey. Shadow DOM inspection is the same kind of useful as showing UA stylesheet info. Though if there are bugs in implementation, we should be fixing them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416551</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 09:20:44 -0700</bug_when>
    <thetext>Dimitry, I would appreciate if you respected my judgement in the inspector subsystem as much as I respect yours in the areas you are working on. 

As an author of the InspectorDOMAgent I claim that code that the change that was landed is simply wrong.

As an Elements panel maintainer who works close with the inspector users, I say that non-user nodes under input tag is confusing.
 
As a feature owner working on project priorities for 2 years I think it should have never been landed.

There is no interest for it in the field.

Why do you close my bug as invalid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416558</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 09:31:19 -0700</bug_when>
    <thetext>I apologize -- shouldn&apos;t have closed it. BFF? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416563</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 09:38:28 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; As an Elements panel maintainer who works close with the inspector users, I say that non-user nodes under input tag is confusing.

I think it&apos;s confusing, yes -- but it reveals precise implementation details that are useful and necessary, if you&apos;re trying to style non-trivial forms control or media elements. If anything we should be embracing this more fully and exposing information like pseudo ids and more as the shadow DOM APIs mature.

&gt; 
&gt; As a feature owner working on project priorities for 2 years I think it should have never been landed.

I don&apos;t want to go against your opinion on this. If this is implemented poorly or wrong, you should take it out. But it&apos;s a good feature that we will need to implement eventually.

&gt; 
&gt; There is no interest for it in the field.

I would give it time. It&apos;s hard to gauge interest in the field for new features.

&gt; 
&gt; Why do you close my bug as invalid?

Apologies again. Shouldn&apos;t have done that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416567</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 09:42:41 -0700</bug_when>
    <thetext>Reasons I want it rolled out:
- crash upon  &lt;input&gt; attributes modification that was found once the code hit the field. We already need to patch the branch and the rollout seams the most reliable way of doing that
- overhead in the domain payloads
- arguable DOM agent changes that might hit us with more crashes
- Again, inut children are considered regression

Let us roll it out now. We can then get back to it and decide what it should look like. I know you need it, but it is a minority feature we should not compromise the quality for. And you can reapply the patch for now :P BFF indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416570</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 09:44:46 -0700</bug_when>
    <thetext>You and your logic. SGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416590</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-07 10:05:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Reasons I want it rolled out:
&gt; - crash upon  &lt;input&gt; attributes modification that was found once the code hit the field. We already need to patch the branch and the rollout seams the most reliable way of doing that

This is a single-line patch, which may actually be safer than rolling out large chunk of code that landed quite some time ago.

&gt; - overhead in the domain payloads

Quite humble, I don&apos;t think we&apos;ll regress performance there: we add some 100 bytes per those (presumable few and rare) nodes that have shadow DOM. Yes, this could probably be smaller. No, I don&apos;t think this regresses performance in real life.

&gt; - arguable DOM agent changes that might hit us with more crashes

I would like to understand better the nature of the &quot;arguable&quot; bit -- you did not go into details on what&apos;s wrong on the InspectorDOMAgent part. This mostly reuses the existing code (yes it had a pretty stupid crash, which we unfortunately missed due to this particular code path being not covered by tests; now that we have the tests for it, at least all code paths that I changed in the agent are covered, so I don&apos;t think we should expect future crashes for it)

&gt; - Again, inut children are considered regression

Now, this appears to be a debatable bit -- looks like a feature to some. I think this sort of statements should at least come attributed to particular persons, rather than be expressed in passive voice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416593</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 10:08:00 -0700</bug_when>
    <thetext>&gt; &gt; - Again, inut children are considered regression
&gt; 
&gt; Now, this appears to be a debatable bit -- looks like a feature to some. I think this sort of statements should at least come attributed to particular persons, rather than be expressed in passive voice.

I agree with Andrey here. It&apos;s not a regression, it&apos;s a feature. Especially considering it exposes useful styling information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416595</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 10:11:54 -0700</bug_when>
    <thetext>
&gt; 
&gt; I agree with Andrey here. It&apos;s not a regression, it&apos;s a feature. Especially considering it exposes useful styling information.

Could you please file a feature request with the end user scenario? It is a bug to me since it exposes &quot;id&quot; attributes not visible to the web facing API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416600</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-07 10:14:43 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; 
&gt; &gt; I agree with Andrey here. It&apos;s not a regression, it&apos;s a feature. Especially considering it exposes useful styling information.
&gt; 
&gt; Could you please file a feature request with the end user scenario? It is a bug to me since it exposes &quot;id&quot; attributes not visible to the web facing API.

The id stuff just got rolled out. http://trac.webkit.org/changeset/88216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416609</commentid>
    <comment_count>13</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-07 10:24:33 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; 
&gt; &gt; I agree with Andrey here. It&apos;s not a regression, it&apos;s a feature. Especially considering it exposes useful styling information.
&gt; 
&gt; Could you please file a feature request with the end user scenario? It is a bug to me since it exposes &quot;id&quot; attributes not visible to the web facing API.

Well, everything we expose there is not web facing. Yet I consider this to be not unusual for developer tools to expose some platform internals that are not accessible via the API, as long as this helps developers better understand the way their application works. We may want to make this conditional (e.g. context menu item), or make it better stand out visually from the rest of the document, to avoid this confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416630</commentid>
    <comment_count>14</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 10:46:06 -0700</bug_when>
    <thetext>Now we start asking questions we should have before landing the change.

OK, ids are gone. What about styling? Are there classes? Will they match? I assume they don&apos;t today. Also confusing. What should be $0 behavior? Should it expose nodes? I assume it does today, but should it? I could document.body.appendChild($0) from shadow dom. Will it work?

How about we start with the bug full of user stories? I mean I respect your anxiousness to get it in, but let&apos;s keep the quality of the product high.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416732</commentid>
    <comment_count>15</comment_count>
      <attachid>96283</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-07 12:32:27 -0700</bug_when>
    <thetext>Created attachment 96283
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416735</commentid>
    <comment_count>16</comment_count>
      <attachid>96283</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 12:44:57 -0700</bug_when>
    <thetext>Comment on attachment 96283
patch

I reverted this locally and I can see that there should be _tagHTML, not buildTagDOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416738</commentid>
    <comment_count>17</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-07 12:49:39 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I reverted this locally and I can see that there should be _tagHTML, not buildTagDOM.

Nope, this got renamed as of r87294 (bug 61282)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416740</commentid>
    <comment_count>18</comment_count>
      <attachid>96283</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 12:52:09 -0700</bug_when>
    <thetext>Comment on attachment 96283
patch

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

Okay.

&gt; Source/WebCore/inspector/front-end/ElementsPanel.js:493
&gt; +            if (this.recentlyModifiedNodes[i].updated) {

why did this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416741</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-07 12:52:34 -0700</bug_when>
    <thetext>&gt; why did this change?

Ignore this why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417145</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-06-08 01:42:26 -0700</bug_when>
    <thetext>Hmm, I loved this feature.
Could we keep it only in debug build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417147</commentid>
    <comment_count>21</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-08 01:49:05 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Hmm, I loved this feature.
&gt; Could we keep it only in debug build?

I&apos;ll try to resuscitate at some point, but as you can see from the discussion above, some are quite concerned with implications of exposing shadow DOM internals in inspector. Dimitri has raised another issue for this (bug 62220), let&apos;s move the discussion there. I&apos;ll add some open questions/concerns that probably need to be resolved before we re-land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525942</commentid>
    <comment_count>22</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-12-21 20:03:38 -0800</bug_when>
    <thetext>I would find it useful to see them. I&apos;ve often had to guess when I&apos;m styling pseudo elements like ::-webkit-search-decoration. I assume that element would be in the shadow DOM and I could see it and tweak styles directly instead the reload churn I have today.

That said, I think it should be hidden by default with a switch to show them. The switch should be in the Inspector UI somewhere and be toggable.

Another option, show th shadow DOM elements if their corresponding CSS pseudo elements are styled by the developer specifically (like my example above.) That shows the auto knows about them and would likely want to see them (maybe always see them in this case.) Otherwise the Inspector is really hiding info from the author who is using an advanced WebKit feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610719</commentid>
    <comment_count>23</comment_count>
    <who name="Jan Dolecek">juzna.cz+webkit</who>
    <bug_when>2012-04-26 10:41:12 -0700</bug_when>
    <thetext>I was kinda confused when I couldn&apos;t find the shadow dom in inspector after upgrading chrome :/ I wanted to play around with some components.

Can there be an option somewhere to enable this removed feature? I would love to have it. Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614125</commentid>
    <comment_count>24</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-02 02:28:08 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I was kinda confused when I couldn&apos;t find the shadow dom in inspector after upgrading chrome :/ I wanted to play around with some components.
&gt; 
&gt; Can there be an option somewhere to enable this removed feature? I would love to have it. Thanks

1. Get latest Chrome Beta (or Dev To Canary)
2. Open about:flags
3. Check Enable Developer Tools experiments
4. Open devtools, settings
5. Check &quot;shadow dom&quot;
6. Re-open devtools

It&apos;ll be there since then.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96283</attachid>
            <date>2011-06-07 12:32:27 -0700</date>
            <delta_ts>2011-06-07 12:52:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>remove-shadow-dom</filename>
            <type>text/plain</type>
            <size>32205</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTI5NjY1Li4wMzVlNTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDYt
MDcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUg
c2hhZG93IGRvbSBpbnNwZWN0aW9uIGZyb20gRWxlbWVudHMgcGFuZWwgYnkgZGVmYXVsdC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTg4CisKKyAg
ICAgICBUaGlzIHJldmVydHMgcjg1NzUxCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9lbGVtZW50cy10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNw
ZWN0b3JUZXN0LmZpbmROb2RlLnByb2Nlc3NDaGlsZHJlbik6CisgICAgICAgIChpbml0aWFsaXpl
X0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QuZmluZE5vZGUuZG9jdW1lbnRSZXF1ZXN0ZWQpOgor
ICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmZpbmROb2RlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXNoYWRvdy1kb20tYWNjZXNzLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1kb20tZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ct
ZG9tLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIw
MTEtMDYtMDYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBmbGFraW5lc3Mgb24gU25vdyBMZW9wYXJkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5k
ZXggYmU4ODJjYy4uMzRmZmRjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC0yNiwxMCArMjYsNiBAQCBJbnNwZWN0b3JUZXN0
LmZpbmROb2RlID0gZnVuY3Rpb24obWF0Y2hGdW5jdGlvbiwgY2FsbGJhY2spCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHMrKzsKICAgICAgICAgICAgIGNoaWxkTm9k
ZS5nZXRDaGlsZE5vZGVzKHByb2Nlc3NDaGlsZHJlbi5iaW5kKG51bGwsIGZhbHNlKSk7Ci0gICAg
ICAgICAgICBpZiAoY2hpbGROb2RlLnNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgICAgICBwZW5k
aW5nUmVxdWVzdHMrKzsKLSAgICAgICAgICAgICAgICBjaGlsZE5vZGUuc2hhZG93Um9vdC5nZXRD
aGlsZE5vZGVzKHByb2Nlc3NDaGlsZHJlbi5iaW5kKG51bGwsIGZhbHNlKSk7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodG9wTGV2ZWwpCkBAIC00Miw3ICszOCw3IEBA
IEluc3BlY3RvclRlc3QuZmluZE5vZGUgPSBmdW5jdGlvbihtYXRjaEZ1bmN0aW9uLCBjYWxsYmFj
aykKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50UmVx
dWVzdGVkLmJpbmQodGhpcykpOwogICAgIGZ1bmN0aW9uIGRvY3VtZW50UmVxdWVzdGVkKGRvYykK
ICAgICB7Ci0gICAgICAgIGRvYy5nZXRDaGlsZE5vZGVzKHByb2Nlc3NDaGlsZHJlbi5iaW5kKG51
bGwsIHRydWUpKTsKKyAgICAgICAgZG9jLmdldENoaWxkTm9kZXMocHJvY2Vzc0NoaWxkcmVuLmJp
bmQodGhpcywgdHJ1ZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtc2hhZG93LWRvbS1hY2Nlc3MuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtc2hhZG93LWRvbS1hY2Nlc3MuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0NzA0Mi4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXNoYWRvdy1kb20tYWNjZXNzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0KLXZhciB0ZXN0ID0gZnVuY3Rpb24oKQotewotICAgIHZh
ciBleHByZXNzaW9ucyA9IFsKLSAgICAgICAgIiQwLnRvU3RyaW5nKCkiLAotICAgICAgICAiJDAu
Zmlyc3RDaGlsZC50b1N0cmluZygpIiwKLSAgICAgICAgIiQwLmZpcnN0Q2hpbGQuZmlyc3RDaGls
ZC5zdHlsZS53aWR0aCIKLSAgICBdOwotICAgIGZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5TSEFET1dfUk9P
VF9OT0RFOwotICAgIH0KLSAgICBmdW5jdGlvbiBwcm9jZXNzRXhwcmVzc2lvbigpCi0gICAgewot
ICAgICAgICBpZiAoIWV4cHJlc3Npb25zLmxlbmd0aCkgewotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICB2YXIgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zLnNoaWZ0KCk7Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmREdW1wKGV4cHJlc3Npb24sIHByb2Nlc3NFeHBy
ZXNzaW9uKTsKLSAgICB9Ci0gICAgSW5zcGVjdG9yVGVzdC5maW5kTm9kZShpc1NoYWRvd1Jvb3Qs
IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlKG5vZGUs
IHByb2Nlc3NFeHByZXNzaW9uKTsKLSAgICB9KTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0K
LTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPgotVGVzdHMgdGhhdCAkMCBtYXkgc3VjY2Vz
c2Z1bGx5IGJlIHVzZWQgdG8gcmVmZXIgdG8gc2hhZG93IERPTSBlbGVtZW50cy4KLTwvcD4KLQot
PG1ldGVyIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSI0MiI+PC9tZXRlcj4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ct
ZG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ct
ZG9tLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4ZDg5My4u
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvc2hhZG93LWRvbS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UZXN0cyB0aGF0IHNo
YWRvdyBET00gdHJlZSBpcyBwcm9wZXJseSBkaXNwbGF5ZWQuCi0KLQotCi1SdW5uaW5nOiB0ZXN0
RHVtcEluaXRpYWwKLS0gPG1ldGVyIGlkPSJtZXRlciIgbWluPSIwIiBtYXg9IjEwMCIgdmFsdWU9
IjIwIj4KLSAgICAtIChzaGFkb3cpCi0gICAgLSA8ZGl2PgotICAgICAgICAgIDxkaXYgc3R5bGU9
IndpZHRoOiAyMCU7ICI+PC9kaXY+Ci0gICAgICA8L2Rpdj4KLSAgPC9tZXRlcj4KLQotUnVubmlu
ZzogdGVzdER1bXBVcGRhdGVkCi1CZWZvcmUgc2hhZG93IHJvb3QgYWRkZWQKLSAgPGRpdiBpZD0i
ZGVsYXllZC1zaGFkb3ctaG9zdCI+PC9kaXY+Ci1BZnRlciBzaGFkb3cgcm9vdCBhZGRlZAotLSA8
ZGl2IGlkPSJkZWxheWVkLXNoYWRvdy1ob3N0Ij4KLSAgICAtIChzaGFkb3cpCi0gICAgLSA8ZGl2
PgotICAgICAgICAgIDxzcGFuPnRleHQ8L3NwYW4+Ci0gICAgICA8L2Rpdj4KLSAgPC9kaXY+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ctZG9tLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvc2hhZG93LWRvbS5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA4Y2QyLi4wMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ctZG9tLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw3MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIGFkZFNoYWRvd1Jvb3QoKQotewotICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVsYXllZC1zaGFkb3ctaG9zdCIpOwotICAgIHZhciBz
aGFkb3dSb290ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZW5zdXJlU2hhZG93Um9vdChlbGVtZW50
KTsKLSAgICB2YXIgc2hhZG93Q2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNoYWRvd0NoaWxkKTsKLSAgICB2YXIgc3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICBzcGFuLnRleHRDb250ZW50ID0g
InRleHQiOwotICAgIHNoYWRvd0NoaWxkLmFwcGVuZENoaWxkKHNwYW4pOwotfQotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3REdW1wSW5pdGlhbChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGFuZEVsZW1lbnRzVHJlZShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm1ldGVyIiwgZnVuY3Rpb24obm9kZSkg
ewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBFbGVtZW50c1RyZWUobm9k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3REdW1wVXBk
YXRlZChuZXh0KSB7Ci0gICAgICAgICAgICB2YXIgaG9zdDsKLQotICAgICAgICAgICAgZnVuY3Rp
b24gZHVtcFdpdGhTaGFkb3dSb290KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWZ0ZXIgc2hhZG93IHJvb3QgYWRkZWQiKTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEVsZW1lbnRzVHJl
ZShob3N0KTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVX
aXRoSWQoImRlbGF5ZWQtc2hhZG93LWhvc3QiLCBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAg
ICAgICAgaG9zdCA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkJlZm9yZSBzaGFkb3cgcm9vdCBhZGRlZCIpOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcEVsZW1lbnRzVHJlZShub2RlKTsKLQotICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVu
dHMuU2hhZG93Um9vdFVwZGF0ZWQsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGFuZEVsZW1lbnRzVHJlZShkdW1wV2l0aFNoYWRvd1Jvb3QpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImFkZFNoYWRvd1Jvb3QoKSIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAg
ICBdKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KLTxwPgotVGVzdHMgdGhhdCBzaGFkb3cgRE9NIHRyZWUgaXMgcHJvcGVybHkgZGlzcGxheWVk
LgotPC9wPgotCi08bWV0ZXIgaWQ9Im1ldGVyIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMjAi
PjwvbWV0ZXI+Ci08ZGl2IGlkPSJkZWxheWVkLXNoYWRvdy1ob3N0Ij48L2Rpdj4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggOTZlNWZjOC4uMTNiOTU1ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTMzNiw5ICszMzYsNiBAQCBzcHV0bmlrL0Nv
bmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjdfQml0d2lzZV9TaGlmdF9PcGVyYXRvcnMvMTEu
Ny4zX1RoZV9VbnNpZwogIyBTb21ldGltZXMgZmFpbHMgaHR0cHM6Ly93ZWJraXQub3JnL2IvNDk0
MTIKIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKIAot
IyBUaW1lcyBvdXQgYWxsIHRoZSB0aW1lOiBodHRwOi8vd2Via2l0Lm9yZy9iLzYwMTk1Ci1pbnNw
ZWN0b3IvZWxlbWVudHMvc2hhZG93LWRvbS5odG1sCi0KICMgU29tZXRpbWVzIGZhaWxzIGh0dHA6
Ly93ZWJraXQub3JnL2IvNDY5OTgKIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9h
ZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZwogCkBAIC0xMjg5LDcgKzEyODYsNiBAQCBmYXN0L2RvbS9I
VE1MUHJvZ3Jlc3NFbGVtZW50L3Byb2dyZXNzLWNsb25lLmh0bWwKIGZhc3QvZG9tL3NoYWRvdwog
ZmFzdC9odG1sL2Nsb25lLWtleWdlbi5odG1sCiBmYXN0L2h0bWwvY2xvbmUtcmFuZ2UuaHRtbAot
aW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1kb20uaHRtbAogbWVkaWEvYXVkaW8tY29udHJvbHMt
ZG8tbm90LWZhZGUtb3V0Lmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUtYXVkaW8t
b25seS5odG1sCiBmYXN0L2V2ZW50cy9zaGFkb3ctYm91bmRhcnktY3Jvc3NpbmcuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDc3YzU5OTQuLjUzZDNiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAor
MjAxMS0wNi0wNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlbW92ZSBzaGFkb3cgZG9tIGluc3BlY3Rpb24gZnJvbSBFbGVtZW50cyBwYW5lbCBieSBkZWZh
dWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIx
ODgKKworICAgICAgIFRoaXMgcmV2ZXJ0cyByODU3NTEKKworICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxk
Tm9kZXNUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUuX3JlbnVtYmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90
b3R5cGUuX2JpbmROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90
eXBlLnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNo
ZXIucHJvdG90eXBlLnNlYXJjaFJlc3VsdHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmli
dXRlc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9ub2RlSW5zZXJ0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9ub2RlUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUudXBkYXRlTW9kaWZpZWROb2Rlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUudXBkYXRlQnJlYWRjcnVt
Yik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVDaGlsZHJl
bi51cGRhdGVDaGlsZHJlbk9mTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoRWxlbWVudC5wcm90b3R5cGUu
cXVlcnkpOgorCiAyMDExLTA2LTA2ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGRlMjVjZmEuLmFjYmEwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyMDIsMTMg
KzEyMDIsMTEgQEAgU2hhZG93Um9vdCogRWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCiAKICAg
ICBSZWZQdHI8U2hhZG93Um9vdD4gbmV3Um9vdCA9IFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKICAgICBlbnN1cmVSYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgPSBuZXdSb290LmdldCgp
OwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1l
bnQoKSwgbmV3Um9vdC5nZXQoKSwgdGhpcyk7CiAgICAgbmV3Um9vdC0+c2V0U2hhZG93SG9zdCh0
aGlzKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBuZXdSb290LT5pbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwogICAgIGlmIChhdHRhY2hlZCgpKQogICAgICAgICBuZXdSb290LT5sYXp5
QXR0YWNoKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksIG5ld1Jvb3QuZ2V0KCkpOwogICAgIHJldHVybiBuZXdSb290LmdldCgpOwog
fQogCkBAIC0xMjE5LDcgKzEyMTcsNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3Qo
KQogCiAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKICAgICBpZiAoUmVm
UHRyPE5vZGU+IG9sZFJvb3QgPSBkYXRhLT5tX3NoYWRvd1Jvb3QpIHsKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZShkb2N1bWVudCgpLCBvbGRSb290
LmdldCgpKTsKICAgICAgICAgZGF0YS0+bV9zaGFkb3dSb290ID0gMDsKICAgICAgICAgZG9jdW1l
bnQoKS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUob2xkUm9vdC5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAyZDM3ZWY4Li45NTMxZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xMDM1LDE0ICsxMDM1
LDYgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWRzIiwgInR5cGUiOiAi
YXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sICJkZXNjcmlwdGlvbiI6ICJJ
ZHMgb2YgdGhlIHNlYXJjaCByZXN1bHQgbm9kZXMuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHVzaGVzIHNlYXJjaCByZXN1bHRzIGluaXRp
YXRlZCB1c2luZyA8Y29kZT5wZXJmb3JtU2VhcmNoPC9jb2RlPiB0byB0aGUgY2xpZW50LiIKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAic2hh
ZG93Um9vdFVwZGF0ZWQiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImhvc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVz
Y3JpcHRpb24iOiAiSWQgb2YgdGhlIGhvc3Qgbm9kZSB0aGF0IGhhZCBzaGFkb3cgcm9vdCBjaGFu
Z2VkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFkb3dSb290IiwgIiRy
ZWYiOiAiRE9NTm9kZSIsICJkZXNjcmlwdGlvbiI6ICJEYXRhIGZvciBuZXcgc2hhZG93IHJvb3Qg
KG51bGwgaWYgc2hhZG93IHJvb3QgcmVtb3ZlZCkuIiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBzaGFkb3cgcm9vdCBpcyBh
ZGRlZCBvciByZW1vdmVkIGZyb20gYSBub2RlLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQog
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCA4ZmVkNGUwLi5lM2ZjNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1LDcgKzc1LDYgQEAKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRl
ICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKIApAQCAtNDUxLDcgKzQ1MCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHJvb3QpCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Q2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9k
ZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlIHx8ICFpc0NvbnRhaW5lck5vZGUoKm5vZGUp
KQorICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05P
REUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFICYmIG5vZGUtPm5v
ZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDU4LDcgKzEwNTcsNiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbgog
ICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgogICAgICAgICAgICAgbG9jYWxOYW1l
ID0gbm9kZS0+bG9jYWxOYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9OT0RFOgpAQCAtMTA3NSw3ICsxMDczLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW4KICAg
ICB2YWx1ZS0+c2V0U3RyaW5nKCJsb2NhbE5hbWUiLCBsb2NhbE5hbWUpOwogICAgIHZhbHVlLT5z
ZXRTdHJpbmcoIm5vZGVWYWx1ZSIsIG5vZGVWYWx1ZSk7CiAKLSAgICBpZiAoaXNDb250YWluZXJO
b2RlKCpub2RlKSkgeworICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRf
Tk9ERSB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX05PREUgfHwgbm9kZS0+
bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSB7CiAgICAgICAgIGlu
dCBub2RlQ291bnQgPSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+
c2V0TnVtYmVyKCJjaGlsZE5vZGVDb3VudCIsIG5vZGVDb3VudCk7CiAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
bm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKQEAgLTEwODksOCArMTA4Nyw2IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5v
ZGUqIG5vZGUsIGluCiAgICAgICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFt
ZU93bmVyID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CiAgICAg
ICAgICAgICAgICAgdmFsdWUtPnNldFN0cmluZygiZG9jdW1lbnRVUkwiLCBkb2N1bWVudFVSTFN0
cmluZyhmcmFtZU93bmVyLT5jb250ZW50RG9jdW1lbnQoKSkpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50LT5zaGFkb3dSb290
KCkpCi0gICAgICAgICAgICAgICAgdmFsdWUtPnNldE9iamVjdCgic2hhZG93Um9vdCIsIGJ1aWxk
T2JqZWN0Rm9yTm9kZShzaGFkb3dSb290LCBkZXB0aCwgbm9kZXNNYXApKTsKICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX05PREUpIHsKICAgICAg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9kZSk7
CiAgICAgICAgICAgICB2YWx1ZS0+c2V0U3RyaW5nKCJkb2N1bWVudFVSTCIsIGRvY3VtZW50VVJM
U3RyaW5nKGRvY3VtZW50KSk7CkBAIC0xMjYzLDE3ICsxMjU5LDEyIEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKICAgICAvLyBXZSBjb3VsZCBi
ZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4KICAgICB1
bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAKLSAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnQgPSBub2RlLT5pc1NoYWRvd1Jvb3QoKSA/IG5vZGUtPnNoYWRvd0hvc3QoKSA6IG5v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJl
bnROb2RlKCk7CiAgICAgaW50IHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChw
YXJlbnQpOwogICAgIC8vIFJldHVybiBpZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQuCiAgICAg
aWYgKCFwYXJlbnRJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG5vZGUtPmlzU2hhZG93
Um9vdCgpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlID0gYnVpbGRP
YmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwotICAgICAgICBt
X2Zyb250ZW5kLT5zaGFkb3dSb290VXBkYXRlZChwYXJlbnRJZCwgdmFsdWUucmVsZWFzZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29u
dGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQgeWV0
IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCiAgICAgICAgIG1fZnJv
bnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgaW5uZXJDaGlsZE5vZGVDb3Vu
dChwYXJlbnQpKTsKQEAgLTEyOTEsNyArMTI4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5p
c1NoYWRvd1Jvb3QoKSA/IG5vZGUtPnNoYWRvd0hvc3QoKSA6IG5vZGUtPnBhcmVudE5vZGUoKTsK
KyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaW50
IHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOwogICAgIC8vIElm
IHBhcmVudCBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgIGlmICgh
cGFyZW50SWQpCkBAIC0xMzAwLDkgKzEyOTEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpk
aWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKG1fZG9tTGlzdGVuZXIpCiAgICAg
ICAgIG1fZG9tTGlzdGVuZXItPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7CiAKLSAgICBpZiAobm9k
ZS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPnNoYWRvd1Jvb3RVcGRhdGVk
KHBhcmVudElkLCAwKTsKLSAgICBlbHNlIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlu
cyhwYXJlbnRJZCkpIHsKKyAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFy
ZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkg
bm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCiAgICAgICAgIGlmIChpbm5lckNoaWxk
Tm9kZUNvdW50KHBhcmVudCkgPT0gMSkKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9k
ZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CkBAIC0xNDUxLDE1ICsxNDQwLDYgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogICAgIERPTU5vZGVIaWdobGlnaHRlcjo6RHJhd05vZGVIaWdobGlnaHQoY29u
dGV4dCwgbV9oaWdobGlnaHRlZE5vZGUuZ2V0KCksIG1vZGUpOwogfQogCi1ib29sIEluc3BlY3Rv
ckRPTUFnZW50Ojppc0NvbnRhaW5lck5vZGUoY29uc3QgTm9kZSYgbm9kZSkKLXsKLSAgICAgTm9k
ZTo6Tm9kZVR5cGUgdHlwZSA9IG5vZGUubm9kZVR5cGUoKTsKLSAgICAgcmV0dXJuIHR5cGUgPT0g
Tm9kZTo6RUxFTUVOVF9OT0RFCi0gICAgICAgICB8fCB0eXBlID09IE5vZGU6OkRPQ1VNRU5UX05P
REUKLSAgICAgICAgIHx8IHR5cGUgPT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERQotICAg
ICAgICAgfHwgdHlwZSA9PSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA1ZDFiMGE0Li5lNDdhMDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAt
MjA3LDcgKzIwNyw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwog
Ci0gICAgc3RhdGljIGJvb2wgaXNDb250YWluZXJOb2RlKGNvbnN0IE5vZGUmKTsKICAgICBJbnN0
cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXggZTQx
MDA4Yi4uNGFiM2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzCkBAIC02Nyw4ICs2Nyw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVu
Y3Rpb24oZG9jLCBwYXlsb2FkKSB7CiAgICAgICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQuYm9k
eSA9IHRoaXM7CiAgICAgICAgIGlmIChwYXlsb2FkLmRvY3VtZW50VVJMKQogICAgICAgICAgICAg
dGhpcy5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9jdW1lbnRVUkw7Ci0gICAgICAgIGlmIChwYXls
b2FkLnNoYWRvd1Jvb3QpCi0gICAgICAgICAgICB0aGlzLl9zZXRTaGFkb3dSb290UGF5bG9hZChw
YXlsb2FkLnNoYWRvd1Jvb3QpOwogICAgIH0gZWxzZSBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5v
ZGUuRE9DVU1FTlRfVFlQRV9OT0RFKSB7CiAgICAgICAgIHRoaXMucHVibGljSWQgPSBwYXlsb2Fk
LnB1YmxpY0lkOwogICAgICAgICB0aGlzLnN5c3RlbUlkID0gcGF5bG9hZC5zeXN0ZW1JZDsKQEAg
LTk4LDExICs5Niw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX25vZGVUeXBlOwogICAgIH0sCiAKLSAgICBpblNoYWRvd1RyZWU6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pblNoYWRvd1RyZWU7Ci0gICAg
fSwKLQogICAgIG5vZGVOYW1lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbm9kZU5hbWU7CkBAIC0yNzksMTcgKzI3Miw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVudW1iZXIoKTsKICAgICB9LAogCi0gICAgX3Nl
dFNoYWRvd1Jvb3RQYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYg
KCFwYXlsb2FkKSB7Ci0gICAgICAgICAgICB0aGlzLnNoYWRvd1Jvb3QgPSBudWxsOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuc2hhZG93Um9vdCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlzLm93bmVyRG9jdW1lbnQsIHBheWxvYWQpOwotICAgICAg
ICB0aGlzLnNoYWRvd1Jvb3QucGFyZW50Tm9kZSA9IHRoaXM7Ci0gICAgICAgIHRoaXMuc2hhZG93
Um9vdC5faW5TaGFkb3dUcmVlID0gdHJ1ZTsKLSAgICB9LAotCiAgICAgX3JlbnVtYmVyOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9jaGlsZE5vZGVDb3VudCA9IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOwpAQCAtMzA2LDcgKzI4OCw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gaSArIDEgPCB0aGlzLl9j
aGlsZE5vZGVDb3VudCA/IHRoaXMuY2hpbGRyZW5baSArIDFdIDogbnVsbDsKICAgICAgICAgICAg
IGNoaWxkLnByZXZTaWJsaW5nID0gaSAtIDEgPj0gMCA/IHRoaXMuY2hpbGRyZW5baSAtIDFdIDog
bnVsbDsKICAgICAgICAgICAgIGNoaWxkLnBhcmVudE5vZGUgPSB0aGlzOwotICAgICAgICAgICAg
Y2hpbGQuX2luU2hhZG93VHJlZSA9IHRoaXMuX2luU2hhZG93VHJlZTsKICAgICAgICAgfQogICAg
IH0sCiAKQEAgLTM1Myw4ICszMzQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzID0g
ewogICAgIE5vZGVJbnNlcnRlZDogIk5vZGVJbnNlcnRlZCIsCiAgICAgTm9kZVJlbW92ZWQ6ICJO
b2RlUmVtb3ZlZCIsCiAgICAgRG9jdW1lbnRVcGRhdGVkOiAiRG9jdW1lbnRVcGRhdGVkIiwKLSAg
ICBDaGlsZE5vZGVDb3VudFVwZGF0ZWQ6ICJDaGlsZE5vZGVDb3VudFVwZGF0ZWQiLAotICAgIFNo
YWRvd1Jvb3RVcGRhdGVkOiAiU2hhZG93Um9vdFVwZGF0ZWQiCisgICAgQ2hpbGROb2RlQ291bnRV
cGRhdGVkOiAiQ2hpbGROb2RlQ291bnRVcGRhdGVkIgogfQogCiBXZWJJbnNwZWN0b3IuRE9NQWdl
bnQucHJvdG90eXBlID0gewpAQCAtNDk0LDkgKzQ3NCw2IEBAIFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldOwogICAgICAg
ICAgICAgdGhpcy5faWRUb0RPTU5vZGVbY2hpbGQuaWRdID0gY2hpbGQ7Ci0gICAgICAgICAgICBp
ZiAoY2hpbGQuc2hhZG93Um9vdCkKLSAgICAgICAgICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtj
aGlsZC5zaGFkb3dSb290LmlkXSA9IGNoaWxkLnNoYWRvd1Jvb3Q7Ci0KICAgICAgICAgICAgIGlm
IChjaGlsZC5jaGlsZHJlbikKICAgICAgICAgICAgICAgICB0aGlzLl9iaW5kTm9kZXMoY2hpbGQu
Y2hpbGRyZW4pOwogICAgICAgICB9CkBAIC01NDksMTcgKzUyNiw2IEBAIFdlYkluc3BlY3Rvci5E
T01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgcXVlcnlTZWxlY3RvckFsbDogZnVuY3Rpb24obm9k
ZUlkLCBzZWxlY3RvcnMsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQucXVlcnlT
ZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9ycywgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNh
bGxiYWNrKSk7Ci0gICAgfSwKLQotICAgIF9zaGFkb3dSb290VXBkYXRlZDogZnVuY3Rpb24oaG9z
dElkLCBwYXlsb2FkKQotICAgIHsKLSAgICAgICAgdmFyIGhvc3QgPSB0aGlzLl9pZFRvRE9NTm9k
ZVtob3N0SWRdOwotICAgICAgICBpZiAoaG9zdC5zaGFkb3dSb290ICYmICFwYXlsb2FkKQotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01Ob2RlW2hvc3Quc2hhZG93Um9vdC5pZF07Ci0g
ICAgICAgIGhvc3QuX3NldFNoYWRvd1Jvb3RQYXlsb2FkKHBheWxvYWQpOwotICAgICAgICBpZiAo
aG9zdC5zaGFkb3dSb290KQotICAgICAgICAgICAgdGhpcy5faWRUb0RPTU5vZGVbaG9zdC5zaGFk
b3dSb290LmlkXSA9IGhvc3Quc2hhZG93Um9vdDsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5TaGFkb3dSb290VXBkYXRl
ZCwgaG9zdCk7CiAgICAgfQogfQogCkBAIC02MTUsMTAgKzU4MSw1IEBAIFdlYkluc3BlY3Rvci5E
T01EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kb21B
Z2VudC5fc2VhcmNoUmVzdWx0Q29sbGVjdG9yKQogICAgICAgICAgICAgdGhpcy5fZG9tQWdlbnQu
X3NlYXJjaFJlc3VsdENvbGxlY3Rvcihub2RlSWRzKTsKLSAgICB9LAotCi0gICAgc2hhZG93Um9v
dFVwZGF0ZWQ6IGZ1bmN0aW9uKGhvc3RJZCwgc2hhZG93Um9vdCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX2RvbUFnZW50Ll9zaGFkb3dSb290VXBkYXRlZChob3N0SWQsIHNoYWRvd1Jvb3QpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qcwppbmRleCA3NjU1Njc2Li4yY2EzMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0xMTMsMTMgKzEx
MywxMiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRo
aXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLk5vZGVJbnNlcnRlZCwg
dGhpcy5fbm9kZVVwZGF0ZWQuYmluZCh0aGlzLCB0cnVlKSk7CisgICAgV2ViSW5zcGVjdG9yLmRv
bUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5Ob2Rl
SW5zZXJ0ZWQsIHRoaXMuX25vZGVJbnNlcnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRv
bUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5Ob2Rl
UmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21B
Z2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0ck1v
ZGlmaWVkLCB0aGlzLl9hdHRyaWJ1dGVzVXBkYXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5D
aGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX25vZGVVcGRhdGVkLmJpbmQodGhpcywgZmFsc2Up
KTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NQWdlbnQuRXZlbnRzLkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fY2hhcmFjdGVy
RGF0YU1vZGlmaWVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBkYXRlZCwgdGhp
cy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkNoaWxkTm9kZUNvdW50
VXBkYXRlZCwgdGhpcy5fY2hpbGROb2RlQ291bnRVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZl
bnRzLlNoYWRvd1Jvb3RVcGRhdGVkLCB0aGlzLl9ub2RlVXBkYXRlZC5iaW5kKHRoaXMsIHRydWUp
KTsKIAogICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CiB9CkBAIC00MzIsMjcg
KzQzMSwzMyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9pc0VkaXRpbmdTdHlsZTsKICAgICB9LAogCi0gICAgX25vZGVVcGRh
dGVkOiBmdW5jdGlvbihoaWVyYXJjaHlVcGRhdGVkLCBldmVudCkKKyAgICBfYXR0cmlidXRlc1Vw
ZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVwZGF0ZWROb2RlRGV0
YWlscyA9IHsgbm9kZTogZXZlbnQuZGF0YSB9OwotICAgICAgICBpZiAoaGllcmFyY2h5VXBkYXRl
ZCkKLSAgICAgICAgICAgIHVwZGF0ZWROb2RlRGV0YWlscy5wYXJlbnQgPSBldmVudC5kYXRhLnBh
cmVudE5vZGU7Ci0gICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzLnB1c2godXBkYXRl
ZE5vZGVEZXRhaWxzKTsKKyAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7
bm9kZTogZXZlbnQuZGF0YSwgdXBkYXRlZDogdHJ1ZX0pOwogICAgICAgICBpZiAodGhpcy52aXNp
YmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKKworICAg
ICAgICBpZiAoIXRoaXMuX2lzRWRpdGluZ1N0eWxlICYmIGV2ZW50LmRhdGEgPT09IHRoaXMuZm9j
dXNlZERPTU5vZGUpCisgICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCgpOwogICAg
IH0sCiAKLSAgICBfYXR0cmlidXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGFy
YWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5f
bm9kZVVwZGF0ZWQoZmFsc2UsIGV2ZW50KTsKKyAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVk
Tm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YSwgdXBkYXRlZDogdHJ1ZX0pOworICAgICAgICBp
ZiAodGhpcy52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nv
b24oKTsKKyAgICB9LAogCi0gICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nU3R5bGUgJiYgZXZl
bnQuZGF0YSA9PT0gdGhpcy5mb2N1c2VkRE9NTm9kZSkKLSAgICAgICAgICAgIHRoaXMuX3N0eWxl
U2hlZXRDaGFuZ2VkKCk7CisgICAgX25vZGVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB0aGlzLnJlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5k
YXRhLCBwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50Tm9kZSwgaW5zZXJ0ZWQ6IHRydWV9KTsKKyAg
ICAgICAgaWYgKHRoaXMudmlzaWJsZSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXNTb29uKCk7CiAgICAgfSwKIAogICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB0aGlzLnJlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBl
dmVudC5kYXRhLm5vZGUsIHBhcmVudDogZXZlbnQuZGF0YS5wYXJlbnR9KTsKKyAgICAgICAgdGhp
cy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YS5ub2RlLCBwYXJl
bnQ6IGV2ZW50LmRhdGEucGFyZW50LCByZW1vdmVkOiB0cnVlfSk7CiAgICAgICAgIGlmICh0aGlz
LnZpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwog
ICAgIH0sCkBAIC00ODUsMTMgKzQ5MCwxNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5yZWNlbnRseU1vZGlm
aWVkTm9kZXNbaV0ucGFyZW50OwogICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlY2VudGx5
TW9kaWZpZWROb2Rlc1tpXS5ub2RlOwogCi0gICAgICAgICAgICBpZiAoIXBhcmVudCkgeworICAg
ICAgICAgICAgaWYgKHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzW2ldLnVwZGF0ZWQpIHsKICAg
ICAgICAgICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxl
bWVudChub2RlKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZUl0ZW0pCiAgICAgICAgICAgICAg
ICAgICAgIG5vZGVJdGVtLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICB2YXIgcGFyZW50Tm9kZUl0ZW0gPSB0aGlzLnRy
ZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChwYXJlbnQpOwogICAgICAgICAgICAgaWYgKHBhcmVu
dE5vZGVJdGVtICYmICFwYXJlbnROb2RlSXRlbS5hbHJlYWR5VXBkYXRlZENoaWxkcmVuKSB7CiAg
ICAgICAgICAgICAgICAgcGFyZW50Tm9kZUl0ZW0udXBkYXRlQ2hpbGRyZW4oKTsKQEAgLTY2MSwx
MCArNjY5LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgICAgICBjcnVtYlRpdGxlID0gIjwhRE9DVFlQRT4iOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgTm9kZS5TSEFET1dfUk9PVF9O
T0RFOgotICAgICAgICAgICAgICAgICAgICBjcnVtYlRpdGxlID0gIihzaGFkb3cpIjsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICBjcnVtYlRpdGxlID0gdGhpcy50cmVlT3V0bGluZS5ub2RlTmFtZVRvQ29y
cmVjdENhc2UoY3VycmVudC5ub2RlTmFtZSgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcwppbmRleCA5NTZjYmM3Li40Y2UyZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0zMDAs
NyArMzAwLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZTsKIFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVFbGVtZW50ID0gZnVuY3Rpb24obm9kZSwgZWxlbWVudENsb3NlVGFnKQogewogICAgIHRoaXMu
X2VsZW1lbnRDbG9zZVRhZyA9IGVsZW1lbnRDbG9zZVRhZzsKLSAgICB2YXIgaGFzQ2hpbGRyZW5P
dmVycmlkZSA9ICFlbGVtZW50Q2xvc2VUYWcgJiYgKG5vZGUuaGFzQ2hpbGROb2RlcygpIHx8IG5v
ZGUuc2hhZG93Um9vdCkgJiYgIXRoaXMuX3Nob3dJbmxpbmVUZXh0KG5vZGUpOworICAgIHZhciBo
YXNDaGlsZHJlbk92ZXJyaWRlID0gIWVsZW1lbnRDbG9zZVRhZyAmJiBub2RlLmhhc0NoaWxkTm9k
ZXMoKSAmJiAhdGhpcy5fc2hvd0lubGluZVRleHQobm9kZSk7CiAKICAgICAvLyBUaGUgdGl0bGUg
d2lsbCBiZSB1cGRhdGVkIGluIG9uYXR0YWNoLgogICAgIFRyZWVFbGVtZW50LmNhbGwodGhpcywg
IiIsIG5vZGUsIGhhc0NoaWxkcmVuT3ZlcnJpZGUpOwpAQCAtNjA5LDE1ICs2MDksNiBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKICAgICAgICAgICAgICAgICArK3RyZWVDaGls
ZEluZGV4OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSWYgd2UgZXZlciBoYWQgc2hh
ZG93IHJvb3QgY2hpbGQsIGl0J3MgZ29pbmcgdG8gYmUgc2Vjb25kIHRvIGxhc3QgKGJlZm9yZSBj
bG9zaW5nIHRhZykKLSAgICAgICAgICAgIHZhciBzaGFkb3dSb290Q2hpbGQgPSB0cmVlRWxlbWVu
dC5jaGlsZHJlblt0cmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAyXTsKLSAgICAgICAgICAg
IGlmIChzaGFkb3dSb290Q2hpbGQgJiYgc2hhZG93Um9vdENoaWxkLnJlcHJlc2VudGVkT2JqZWN0
Lm5vZGVUeXBlKCkgPT09IE5vZGUuU0hBRE9XX1JPT1RfTk9ERSkgewotICAgICAgICAgICAgaWYg
KCFub2RlLnNoYWRvd1Jvb3QpCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hp
bGQoc2hhZG93Um9vdENoaWxkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9IG5vZGUuc2hhZG93Um9vdDsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS5zaGFkb3dSb290KQotICAgICAgICAgICAgICAgIHRyZWVFbGVt
ZW50Lmluc2VydENoaWxkRWxlbWVudChub2RlLnNoYWRvd1Jvb3QsIHRyZWVDaGlsZEluZGV4KTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFJlbW92ZSBhbnkgdHJlZSBlbGVtZW50cyB0aGF0IG5v
IGxvbmdlciBoYXZlIHRoaXMgbm9kZSAob3IgdGhpcyBub2RlJ3MgY29udGVudERvY3VtZW50KSBh
cyB0aGVpciBwYXJlbnQuCkBAIC0xMjYyLDE5ICsxMjUzLDE2IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGF0dHJTcGFuRWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXCIiKSk7CiAgICAgfSwKIAot
ICAgIF9idWlsZFRhZ0RPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9z
aW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQsIGxpbmtpZnksIGlzU2hhZG93KQorICAgIF9i
dWlsZFRhZ0RPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9zaW5nVGFn
LCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQsIGxpbmtpZnkpCiAgICAgewogICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIHZhciBjbGFzc2VzID0gWyAid2Vi
a2l0LWh0bWwtdGFnIiBdOwogICAgICAgICBpZiAoaXNDbG9zaW5nVGFnICYmIGlzRGlzdGluY3RU
cmVlRWxlbWVudCkKICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgiY2xvc2UiKTsKLSAgICAgICAg
aWYgKGlzU2hhZG93KQotICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCJzaGFkb3ciKTsKICAgICAg
ICAgdmFyIHRhZ0VsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgY2xh
c3Nlcy5qb2luKCIgIikpOwogICAgICAgICB0YWdFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCI8IikpOwogICAgICAgICB2YXIgdGFnTmFtZUVsZW1lbnQgPSB0YWdF
bGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgaXNDbG9zaW5nVGFnID8gIiIgOiAid2Via2l0LWh0
bWwtdGFnLW5hbWUiKTsKICAgICAgICAgdGFnTmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAoaXND
bG9zaW5nVGFnID8gIi8iIDogIiIpICsgdGFnTmFtZTsKLQogICAgICAgICBpZiAoIWlzQ2xvc2lu
Z1RhZyAmJiBub2RlLmhhc0F0dHJpYnV0ZXMoKSkgewogICAgICAgICAgICAgdmFyIGF0dHJpYnV0
ZXMgPSBub2RlLmF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YXR0cmlidXRlcy5sZW5ndGg7ICsraSkgewpAQCAtMTMwOSwxMiArMTI5NywxMiBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNl
IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICAgICAgICAgIHZhciB0YWdOYW1lID0gdGhpcy50
cmVlT3V0bGluZS5ub2RlTmFtZVRvQ29ycmVjdENhc2Uobm9kZS5ub2RlTmFtZSgpKS5lc2NhcGVI
VE1MKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykgewotICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9idWlsZFRhZ0RPTShpbmZvLnRpdGxlRE9NLCB0YWdOYW1l
LCB0cnVlLCB0cnVlLCBmYWxzZSwgbm9kZS5pblNoYWRvd1RyZWUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2J1aWxkVGFnRE9NKGluZm8udGl0bGVET00sIHRhZ05hbWUsIHRydWUsIHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICBpbmZvLmhhc0NoaWxkcmVuID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIHRoaXMuX2J1aWxkVGFnRE9NKGluZm8udGl0bGVET00sIHRhZ05hbWUsIGZhbHNlLCBmYWxz
ZSwgbGlua2lmeSwgbm9kZS5pblNoYWRvd1RyZWUoKSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
YnVpbGRUYWdET00oaW5mby50aXRsZURPTSwgdGFnTmFtZSwgZmFsc2UsIGZhbHNlLCBsaW5raWZ5
KTsKIAogICAgICAgICAgICAgICAgIHZhciB0ZXh0Q2hpbGQgPSB0aGlzLl9zaW5nbGVUZXh0Q2hp
bGQobm9kZSk7CiAgICAgICAgICAgICAgICAgdmFyIHNob3dJbmxpbmVUZXh0ID0gdGV4dENoaWxk
ICYmIHRleHRDaGlsZC5ub2RlVmFsdWUoKS5sZW5ndGggPCBQcmVmZXJlbmNlcy5tYXhJbmxpbmVU
ZXh0Q2hpbGRMZW5ndGg7CkBAIC0xMzI1LDcgKzEzMTMsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
Tm9kZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiXHUyMDI2IjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8udGl0bGVET00uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1
MjAwQiIpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9idWlsZFRhZ0RPTShpbmZvLnRpdGxlRE9NLCB0YWdOYW1lLCB0cnVlLCBmYWxzZSwgZmFsc2Us
IG5vZGUuaW5TaGFkb3dUcmVlKCkpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9idWlsZFRh
Z0RPTShpbmZvLnRpdGxlRE9NLCB0YWdOYW1lLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBvbmx5IGhh
cyBhIHNpbmdsZSBjaGlsZCB0aGF0IGlzIGEgdGV4dCBub2RlLApAQCAtMTMzNSw3ICsxMzIzLDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgICAgICB2YXIgdGV4dE5vZGVFbGVtZW50ID0gaW5mby50aXRsZURPTS5jcmVhdGVD
aGlsZCgic3BhbiIsICJ3ZWJraXQtaHRtbC10ZXh0LW5vZGUiKTsKICAgICAgICAgICAgICAgICAg
ICAgdGV4dE5vZGVFbGVtZW50LnRleHRDb250ZW50ID0gdGV4dENoaWxkLm5vZGVWYWx1ZSgpLmVz
Y2FwZUhUTUwoKTsKICAgICAgICAgICAgICAgICAgICAgaW5mby50aXRsZURPTS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXHUyMDBCIikpOwotICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9idWlsZFRhZ0RPTShpbmZvLnRpdGxlRE9NLCB0YWdOYW1lLCB0cnVlLCBmYWxzZSwg
bm9kZS5pblNoYWRvd1RyZWUoKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkVGFn
RE9NKGluZm8udGl0bGVET00sIHRhZ05hbWUsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAg
ICAgICAgaW5mby5oYXNDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTEzOTAsMTIgKzEzNzgsNiBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIGNkYXRh
RWxlbWVudCA9IGluZm8udGl0bGVET00uY3JlYXRlQ2hpbGQoInNwYW4iLCAid2Via2l0LWh0bWwt
dGV4dC1ub2RlIik7CiAgICAgICAgICAgICAgICAgY2RhdGFFbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCI8IVtDREFUQVsiICsgbm9kZS5ub2RlVmFsdWUoKS5lc2Nh
cGVIVE1MKCkgKyAiXV0+IikpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICBjYXNlIE5vZGUuU0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgICAgICAgICB2YXIgY2RhdGFF
bGVtZW50ID0gaW5mby50aXRsZURPTS5jcmVhdGVDaGlsZCgic3BhbiIsICJkb20tc2hhZG93LXJv
b3QiKTsKLSAgICAgICAgICAgICAgICBjZGF0YUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIihzaGFkb3cpIikpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0RWxlbWVudCA9
IGluZm8udGl0bGVET00uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy50
cmVlT3V0bGluZS5ub2RlTmFtZVRvQ29ycmVjdENhc2Uobm9kZS5ub2RlTmFtZSgpKS5jb2xsYXBz
ZVdoaXRlc3BhY2UoKS5lc2NhcGVIVE1MKCkpKTsKICAgICAgICAgfQpAQCAtMTQwNSw3ICsxMzg3
LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAg
ICAgX3NpbmdsZVRleHRDaGlsZDogZnVuY3Rpb24obm9kZSkKICAgICB7Ci0gICAgICAgIGlmICgh
bm9kZSB8fCBub2RlLnNoYWRvd1Jvb3QpCisgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCiAgICAgICAgIHZhciBmaXJzdENoaWxkID0gbm9kZS5maXJzdENoaWxk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CmluZGV4IDZmYzE5MjQuLmZhYzUxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTEwNTYsMTAgKzEwNTYsNiBAQCBib2R5LnBs
YXRmb3JtLWxpbnV4IC5tb25vc3BhY2UsIGJvZHkucGxhdGZvcm0tbGludXggLnNvdXJjZS1jb2Rl
IHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiB9CiAKLSNlbGVtZW50cy1jb250ZW50IC5k
b20tc2hhZG93LXJvb3QgewotICAgIGNvbG9yOiByZ2IoOTAsIDkwLCA5MCk7Ci19Ci0KICNlbGVt
ZW50cy1zaWRlYmFyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpAQCAt
MTIzNiwxMCArMTIzMiw2IEBAIGJvZHkucGxhdGZvcm0tbGludXggLm1vbm9zcGFjZSwgYm9keS5w
bGF0Zm9ybS1saW51eCAuc291cmNlLWNvZGUgewogICAgIHRleHQtaW5kZW50OiAtMTJweAogfQog
Ci0ub3V0bGluZS1kaXNjbG9zdXJlIGxpIC53ZWJraXQtaHRtbC10YWcuc2hhZG93IHsKLSAgICBv
cGFjaXR5OiAwLjc7Ci19Ci0KIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLndlYmtpdC1odG1sLXRh
Zy5jbG9zZSB7CiAgICAgbWFyZ2luLWxlZnQ6IC0xMnB4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA0MmIwMmNhLi4zMTIwYjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGll
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5q
cwpAQCAtMjI4LDkgKzIyOCw3IEBAIE5vZGUucHJvdG90eXBlLmVuY2xvc2luZ05vZGVXaXRoQ2xh
c3MgPSBmdW5jdGlvbihjbGFzc05hbWUpCiAgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKGNsYXNzTmFtZSk7CiB9CiAKLU5vZGUuU0hBRE9XX1JP
T1RfTk9ERSA9IDE0OwotCi1FbGVtZW50LnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKHF1ZXJ5
KQorRWxlbWVudC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihxdWVyeSkgCiB7CiAgICAgcmV0
dXJuIHRoaXMub3duZXJEb2N1bWVudC5ldmFsdWF0ZShxdWVyeSwgdGhpcywgbnVsbCwgWFBhdGhS
ZXN1bHQuRklSU1RfT1JERVJFRF9OT0RFX1RZUEUsIG51bGwpLnNpbmdsZU5vZGVWYWx1ZTsKIH0K
</data>
<flag name="review"
          id="89931"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>