<?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>143442</bug_id>
          
          <creation_ts>2015-04-06 07:38:27 -0700</creation_ts>
          <short_desc>Web Inspector: Add a WebInspector.TabBar class</short_desc>
          <delta_ts>2015-04-25 18:36:13 -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</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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>tobi+webkit</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083081</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-06 07:38:27 -0700</bug_when>
    <thetext>For a new UX we need a tab bar. Lets add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083082</commentid>
    <comment_count>1</comment_count>
      <attachid>250203</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-06 07:42:54 -0700</bug_when>
    <thetext>Created attachment 250203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083187</commentid>
    <comment_count>2</comment_count>
      <attachid>250203</attachid>
    <who name="Tobias Reiss">tobi+webkit</who>
    <bug_when>2015-04-06 15:52:04 -0700</bug_when>
    <thetext>Comment on attachment 250203
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:87
&gt; +            return null;

For the sake of being consistent: return;

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:136
&gt; +            setTimeout(removeStyles.bind(this), WebInspector.TabBar.AnimationDurtation);

What about `this._element.addEventListener(&apos;webkitTransitionEnd&apos;, removeStyles.bind(this))`?
 - setTimeout is not synchronized with rAF, which means `removeStyles` is either called too late or too early
 - get rid of `WebInspector.TabBar.AnimationDurtation`. You don&apos;t need to maintain the duration in both, CSS and JS file.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:251
&gt; +            setTimeout(removeStyles.bind(this), WebInspector.TabBar.AnimationDurtation);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083346</commentid>
    <comment_count>3</comment_count>
      <attachid>250203</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-07 10:49:27 -0700</bug_when>
    <thetext>Comment on attachment 250203
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:87
&gt;&gt; +            return null;
&gt; 
&gt; For the sake of being consistent: return;

Actually the rest should be return null, since the last return is &quot;return tabBarItem;&quot;.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:136
&gt;&gt; +            setTimeout(removeStyles.bind(this), WebInspector.TabBar.AnimationDurtation);
&gt; 
&gt; What about `this._element.addEventListener(&apos;webkitTransitionEnd&apos;, removeStyles.bind(this))`?
&gt;  - setTimeout is not synchronized with rAF, which means `removeStyles` is either called too late or too early
&gt;  - get rid of `WebInspector.TabBar.AnimationDurtation`. You don&apos;t need to maintain the duration in both, CSS and JS file.

I did this. Thanks!

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:251
&gt;&gt; +            setTimeout(removeStyles.bind(this), WebInspector.TabBar.AnimationDurtation);
&gt; 
&gt; Ditto

Same. And in other other place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083371</commentid>
    <comment_count>4</comment_count>
      <attachid>250203</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-07 11:40:47 -0700</bug_when>
    <thetext>Comment on attachment 250203
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendHostStub.js:38
&gt; +if (!window.Symbol) {
&gt; +    window.Symbol = function(string)
&gt; +    {
&gt; +        return string;
&gt; +    }
&gt; +}

I think this should return an object, for uniqueness. Maybe this will work better:

    window.Symbol = function(name)
    {
        name = name || &quot;&quot;;
        return {name};
    }

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.css:2
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.

Nit: 2015

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:38
&gt; +        var topBorderElement = document.createElement(&quot;div&quot;);
&gt; +        topBorderElement.classList.add(&quot;top-border&quot;);
&gt; +        this._element.appendChild(topBorderElement);

Style: I&apos;ve been combining the appendChild and createElement lines if there isn&apos;t anything special going on:

    var topBorderElement = this._element.appendChild(document.createElement(&quot;div&quot;));
    topBorderElement.classList.add(&quot;top-border&quot;);

Worth continuing that style?

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:127
&gt; +        tabBarItem.element.style.left = null;
&gt; +        tabBarItem.element.style.width = null;

Whoa, I didn&apos;t know this worked!

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:195
&gt; +            if (!nextTabBarItem || nextTabBarItem.pinned) {
&gt; +                console.error(&quot;One normal tab is always required in a WebInspector.TabBar.&quot;)
&gt; +                return;
&gt; +            }

Style: Missing semicolon on line 193.

Should the constructor guarantee this? Is this counting the &quot;newTabItem&quot; which doesn&apos;t seem to be required?

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:289
&gt; +            delete this._updateLayoutTimeout;

Lets avoid delete and just assign undefined here.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:447
&gt; +            this._element.classList.remove(&quot;static-layout&quot;);

&quot;static-layout&quot; is showing up in lots of places. Maybe it should be a constant?

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:486
&gt; +        // Only handle left mouse clicks.
&gt; +        if (event.button !== 0)
&gt; +            return;

Likewise event.ctrlKey. In fact we may want to consider a Context Menu on tabs.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:635
&gt; +        // FIXME: Is this a WebKit bug or correct behavior?

I have had a lot of trouble with &quot;mouseleave&quot; because of this. Maybe &quot;mouseout&quot; would be better.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:657
&gt; +WebInspector.TabBar.AnimationDurtation = 250;

Typo: &quot;Durtation&quot; =&gt; &quot;Duration&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/TabBarItem.js:145
&gt; +    updateLayout(expandOnly)
&gt; +    {
&gt; +        // Implemented by subclasses.
&gt; +    }

Not called yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088644</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-25 18:36:13 -0700</bug_when>
    <thetext>r183322 – r183342

http://trac.webkit.org/log/?revs=183322-183342</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250203</attachid>
            <date>2015-04-06 07:42:54 -0700</date>
            <delta_ts>2015-04-07 11:40:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143442-20150406074204.patch</filename>
            <type>text/plain</type>
            <size>60307</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
ZWE5NWVmMDg3ZTkxMjhhYjVkN2RjNWU4NmRlMzk1OGQyZDI2NTRhLi4xMGRiZjk2ODBhOGMxZjli
YzgxY2M3ZjA3ZjMwODdhMDk4MGM0OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjIgQEAKKzIwMTUtMDQtMDYgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBhIFdlYkluc3BlY3Rvci5UYWJCYXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzQ0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOiBVcGRhdGVkLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQXVkaXRzLnN2ZzogQWRkZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29uc29sZS5zdmc6IEFkZGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvSW1hZ2VzL0RlYnVnZ2VyLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9JbWFnZXMvRWxlbWVudHMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0ltYWdlcy9HZWFyLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFn
ZXMvTmV0d29yay5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL05l
d1RhYlBsdXMuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9SZXNv
dXJjZXMuc3ZnOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9TdG9yYWdlLnN2Zzog
QWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvVGltZWxpbmUuc3ZnOiBBZGRl
ZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBBZGRlZCBu
ZXcgZmlsZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kSG9zdFN0dWIuanM6CisgICAgICAgICh3aW5kb3cuU3ltYm9sKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zaG93Q29udGV4
dE1lbnUpOgorICAgICAgICBBZGRlZCBzb21lIHN0dWJzIG5lZWRlZCB0byB3b3JrIHN0YW5kYWxv
bmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5jc3M6IEFkZGVkLgor
ICAgICAgICAoLnRhYi1iYXIpOgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1i
YXIpOgorICAgICAgICAoLnRhYi1iYXIgPiAudG9wLWJvcmRlcik6CisgICAgICAgIChib2R5Lndp
bmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC50b3AtYm9yZGVyKToKKyAgICAgICAgKC50YWItYmFy
ID4gLml0ZW0pOgorICAgICAgICAoLnRhYi1iYXIgPiA6bnRoLWNoaWxkKG4gKyAyIG9mIC5pdGVt
KSk6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtLnBpbm5lZCk6CisgICAgICAgICgudGFiLWJh
ciA+IC5pdGVtLnNlbGVjdGVkKToKKyAgICAgICAgKC50YWItYmFyID4gLml0ZW0ubmV3LXRhYi1i
dXR0b246aG92ZXIpOgorICAgICAgICAoLnRhYi1iYXI6bm90KC5hbmltYXRpbmcpID4gLml0ZW06
bm90KC5zZWxlY3RlZCk6aG92ZXIgKyAuaXRlbSk6CisgICAgICAgIChib2R5LndpbmRvdy1pbmFj
dGl2ZSAudGFiLWJhciA+IC5pdGVtKToKKyAgICAgICAgKGJvZHkud2luZG93LWluYWN0aXZlIC50
YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbSA+IC5j
bG9zZSk6CisgICAgICAgIChib2R5Om5vdCgud2luZG93LWluYWN0aXZlKSAudGFiLWJhcjpub3Qo
LnNpbmdsZS10YWIpID4gLml0ZW06aG92ZXIgPiAuY2xvc2UpOgorICAgICAgICAoLnRhYi1iYXIu
c2luZ2xlLXRhYiA+IC5pdGVtID4gLmNsb3NlKToKKyAgICAgICAgKC50YWItYmFyID4gLml0ZW0g
PiAuY2xvc2U6aG92ZXIpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbSA+IC5jbG9zZTphY3Rp
dmUpOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbSA+IC5mbGV4LXNwYWNlKToKKyAgICAgICAg
KC50YWItYmFyID4gLml0ZW0gPiAuZmxleC1zcGFjZTpsYXN0LWNoaWxkKToKKyAgICAgICAgKC50
YWItYmFyID4gLml0ZW0gPiAuaWNvbik6CisgICAgICAgICgudGFiLWJhciA+IC5pdGVtLnNlbGVj
dGVkID4gLmljb24pOgorICAgICAgICAoLnRhYi1iYXIgPiAuaXRlbS5uZXctdGFiLWJ1dHRvbjpo
b3ZlciA+IC5pY29uKToKKyAgICAgICAgKC50YWItYmFyID4gLml0ZW0gPiAudGl0bGUpOgorICAg
ICAgICAoLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSA+IC5jb250ZW50KToKKyAgICAgICAgKC50
YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyID4gLnRp
dGxlKToKKyAgICAgICAgKC50YWItYmFyID4gLml0ZW0uc2VsZWN0ZWQgPiAudGl0bGUpOgorICAg
ICAgICAoLnRhYi1iYXIuY29sbGFwc2VkID4gLml0ZW0pOgorICAgICAgICAoLnRhYi1iYXIuY29s
bGFwc2VkID4gLml0ZW0gPiAuZmxleC1zcGFjZSk6CisgICAgICAgICgudGFiLWJhci5jb2xsYXBz
ZWQgPiAuaXRlbSA+IC5jbG9zZSk6CisgICAgICAgICgudGFiLWJhci5oaWRlLXRpdGxlcyA+IC5p
dGVtID4gLnRpdGxlKToKKyAgICAgICAgKC50YWItYmFyLmhpZGUtdGl0bGVzID4gLml0ZW0uc2Vs
ZWN0ZWQ6aG92ZXIgPiAuaWNvbik6CisgICAgICAgICgudGFiLWJhci5oaWRlLXRpdGxlcyA+IC5p
dGVtLnNlbGVjdGVkOmhvdmVyID4gLmNsb3NlKToKKyAgICAgICAgKC50YWItYmFyLnN0YXRpYy1s
YXlvdXQpOgorICAgICAgICAoLnRhYi1iYXIuc3RhdGljLWxheW91dCA+IC5pdGVtKToKKyAgICAg
ICAgKC50YWItYmFyLmFuaW1hdGluZy5jbG9zaW5nLXRhYiA+IC5pdGVtKToKKyAgICAgICAgKC50
YWItYmFyLmFuaW1hdGluZzptYXRjaGVzKC5leHBhbmRpbmctdGFicywgLmluc2VydGluZy10YWIp
ID4gLml0ZW0pOgorICAgICAgICAoLnRhYi1iYXIuYW5pbWF0aW5nLmluc2VydGluZy10YWIgPiAu
aXRlbS5iZWluZy1pbnNlcnRlZCk6CisgICAgICAgICgudGFiLWJhci5hbmltYXRpbmcuY2xvc2lu
Zy10YWIgPiAuaXRlbS5zZWxlY3RlZCk6CisgICAgICAgIChib2R5LndpbmRvdy1pbmFjdGl2ZSAu
dGFiLWJhci5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCk6CisgICAgICAg
ICgudGFiLWJhci5kcmFnZ2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCk6CisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGFiQmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmdldCBu
ZXdUYWJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLnNldCBu
ZXdUYWJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmFkZFRh
YkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0
VGFiQmFySXRlbS5hbmltYXRlVGFicyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnBy
b3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtLnJlbW92ZVN0eWxlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5pbnNlcnRUYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0uc2V0IGVsc2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuaW5zZXJ0VGFiQmFySXRlbS5zZXQg
dGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLmFuaW1hdGVUYWJzLmdldCBpZik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLmFuaW1hdGVUYWJzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UYWJCYXIucmVtb3ZlU3R5bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
YWJCYXIucHJvdG90eXBlLmluc2VydFRhYkJhckl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbi51cGRhdGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUudXBkYXRlTGF5b3V0U29vbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkVGFiQmFySXRlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRUYWJCYXJJdGVt
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLmdldCB0YWJCYXJJdGVt
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFyLnByb3RvdHlwZS5fZmluZFRhYkJhckl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2hhc01vcmVUaGFuT25l
Tm9ybWFsVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhci5wcm90b3R5cGUuX2NsZWFyVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UYWJCYXIucHJvdG90eXBlLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0
ZXJDbG9zZS4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhci5wcm90b3R5cGUuX2Zpbmlz
aEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXIu
cHJvdG90eXBlLl9oYW5kbGVNb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJh
ci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlTGVhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXJJdGVtLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtLnBy
b3RvdHlwZS5nZXQgaWRlbnRpZmllcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQmFySXRl
bS5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJhckl0
ZW0ucHJvdG90eXBlLmdldCBwYXJlbnRUYWJCYXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJhckl0ZW0ucHJvdG90eXBlLnNldCBwYXJlbnRUYWJCYXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhckl0ZW0ucHJvdG90eXBlLmdldCBzZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFySXRlbS5wcm90b3R5cGUuc2V0IHNlbGVjdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtLnByb3RvdHlwZS5nZXQgcGlubmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtLnByb3RvdHlwZS5nZXQgaW1hZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRhYkJhckl0ZW0ucHJvdG90eXBlLnNldCBpbWFnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQmFySXRlbS5wcm90b3R5cGUuZ2V0IHRpdGxlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UYWJCYXJJdGVtLnByb3RvdHlwZS5zZXQgdGl0bGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRhYkJhckl0ZW0ucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisKIDIwMTUtMDQtMDUgIE5p
a2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogT2JqZWN0VHJlZSBhcnJheSBpbmRleCBoaW50cyBhcmUgY2xpcHBlZCB3aGVuIHNob3du
IGluIHBvcG92ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDlmMmUyMGJm
ZmM4MzU4ZGViMGM1NThhOTBlNDcyYTllNzVhNzRkMWEuLjA3NmUwOGUxMmU3M2IwYmEzNDM4ZGY2
NTdhZjg2NjQ2NjkzZDZjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAt
OTQsNiArOTQsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJDbGVhciBMb2cgb24gUmVsb2FkIl0gPSAi
Q2xlYXIgTG9nIG9uIFJlbG9hZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbGVhciBUaW1lbGluZSJd
ID0gIkNsZWFyIFRpbWVsaW5lIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsZWFyIGxvZyAoJXMgb3Ig
JXMpIl0gPSAiQ2xlYXIgbG9nICglcyBvciAlcykiOwogbG9jYWxpemVkU3RyaW5nc1siQ2xpY2sg
TGlzdGVuZXIiXSA9ICJDbGljayBMaXN0ZW5lciI7Citsb2NhbGl6ZWRTdHJpbmdzWyJDbGljayB0
byBjbG9zZSB0aGlzIHRhYiJdID0gIkNsaWNrIHRvIGNsb3NlIHRoaXMgdGFiIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkNsaWNrIHRvIG9wZW4gYSBjb2xvcnBpY2tlci4gU2hpZnQtY2xpY2sgdG8gY2hh
bmdlIGNvbG9yIGZvcm1hdC4iXSA9ICJDbGljayB0byBvcGVuIGEgY29sb3JwaWNrZXIuIFNoaWZ0
LWNsaWNrIHRvIGNoYW5nZSBjb2xvciBmb3JtYXQuIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNsaWNr
YWJsZSJdID0gIkNsaWNrYWJsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDbG9zZSJdID0gIkNsb3Nl
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9BdWRpdHMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L0F1ZGl0cy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlhYzMzOTQwODE4YjNlZDI0YWQ1NjQzYzdlMjA2NWM0
YzIyYTg5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9BdWRpdHMuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGNpcmNs
ZSBjeD0iOCIgY3k9IjgiIHI9IjciIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9
ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSA0LjUgOC41IEwgNyAxMSBMIDExLjUgNC41IiBjbGFz
cz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29uc29sZS5z
dmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29uc29sZS5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjNlYmI0NjRiMzIzYWE4Y2EwMDg5NDhiMmU1Y2VkZjMwYjFkZDM3Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9Db25zb2xlLnN2ZwpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4x
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxyZWN0IHg9IjEiIHk9
IjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgcng9IjIiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJu
b25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSA0IDQgTCA4IDggTCA0IDEyIiBj
bGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9
Ik0gOCA0LjUgTCAxMiA0LjUiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJs
YWNrIi8+CisgICAgPHBhdGggZD0iTSAxMCA4IEwgMTIgOCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDggMTEuNSBMIDEyIDExLjUi
IGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9EZWJ1
Z2dlci5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRGVi
dWdnZXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzYjdhNmQxMThjOWQ0NzY5Njg1ZDE1Y2M0ZGQwMzczMmFm
YmE4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvRGVidWdnZXIuc3ZnCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVy
c2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxwYXRo
IGQ9Ik0gOC4wNDU0NTQ1NSAxNSBDIDEwLjgwNjg3ODQgMTUgMTMuMDQ1NDU0NSAxMS44NjU5OTM0
IDEzLjA0NTQ1NDUgOCBDIDEzLjA0NTQ1NDUgNC4xMzQwMDY1NiAxMC44MDY4Nzg0IDEgOC4wNDU0
NTQ1NSAxIEMgNS4yODQwMzA2NiAxIDMuMDQ1NDU0NTUgNC4xMzQwMDY1NiAzLjA0NTQ1NDU1IDgg
QyAzLjA0NTQ1NDU1IDExLjg2NTk5MzQgNS4yODQwMzA2NiAxNSA4LjA0NTQ1NDU1IDE1IFoiIGNs
YXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0i
TSAzLjUgNC41IEwgMTIuNSA0LjUiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9
ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSA4IDQuNSBMIDggMTUiIGNsYXNzPSJzdHJva2VkIiBm
aWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSAxMS41IDEyLjUgTCAx
My41IDE0LjUiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cisg
ICAgPHBhdGggZD0iTSAxMyA4IEwgMTUgOCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0
cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDMgOCBMIDEgOCIgY2xhc3M9InN0cm9rZWQi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDQuNSAxMi41IEwg
Mi41IDE0LjUiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cisg
ICAgPHBhdGggZD0iTSA0LjUgMy41IEwgMi41IDEuNSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDExLjUgMy41IEwgMTMuNSAxLjUi
IGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9FbGVt
ZW50cy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRWxl
bWVudHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMDRmMzk3Y2MxNDg3MWEzNjAwYTI0YWQ3M2VjZjAxNTNi
NzdmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvRWxlbWVudHMuc3ZnCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3Qg
eD0iMiIgeT0iMiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjUiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJu
b25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSAxMS41IDYuNSBMIDExLjUgMTAu
NSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0
aCBkPSJNIDQuNSA2LjUgTCA0LjUgMTAuNSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0
cm9rZT0iYmxhY2siLz4KKyAgICA8cmVjdCB4PSI5IiB5PSIxMCIgd2lkdGg9IjUiIGhlaWdodD0i
NCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cmVj
dCB4PSIyIiB5PSIxMCIgd2lkdGg9IjUiIGhlaWdodD0iNCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0dlYXIuc3ZnIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0dlYXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiM2Q4MDVk
MjA3YTg5YWM3YzhkODRjZDQ0MjBlMjI2MmUzYjM1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvR2Vhci5zdmcKQEAgLTAsMCAr
MSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5
cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2
aWV3Qm94PSIwIDAgMTUgMTUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIj4KKyAgICA8cGF0aCBkPSJNIDcuNTAwOSAxNCBDIDguMzI1OSAxNCA5LjAwMDkg
MTMuMzI1IDkuMDAxOSAxMi41IEwgOS4wMDA5IDExLjcyNSBDIDkuMTQ3OSAxMS42NzMgOS4yOTA5
IDExLjYxNiA5LjQyOTkgMTEuNTUxIEwgMTAuMTc1OSAxMi4yOTggQyAxMC43NTk5IDEyLjg4MSAx
MS43MTQ5IDEyLjg4IDEyLjI5NjkgMTIuMjk3IEMgMTIuNTg5OSAxMi4wMDUgMTIuNzM0OSAxMS42
MTkgMTIuNzM0OSAxMS4yMzUgQyAxMi43MzQ5IDEwLjg1MiAxMi41ODk5IDEwLjQ2NyAxMi4yOTc5
IDEwLjE3NSBMIDExLjU1MTkgOS40MjkgQyAxMS42MTc5IDkuMjg5IDExLjY3MzkgOS4xNDYgMTEu
NzI1OSA5IEwgMTIuNTAwOSA4Ljk5OSBDIDEzLjMyNTkgOSAxNC4wMDA5IDguMzI1IDE0LjAwMDkg
Ny41IEMgMTQuMDAwOSA2LjY3NCAxMy4zMjU5IDYgMTIuNTAwOSA1Ljk5OSBMIDExLjcyNTkgNiBD
IDExLjY3MzkgNS44NTMgMTEuNjE3OSA1LjcxIDExLjU1MTkgNS41NzEgTCAxMi4yOTc5IDQuODI1
IEMgMTIuNTg4OSA0LjUzMyAxMi43MzQ5IDQuMTQ4IDEyLjczNDkgMy43NjQgQyAxMi43MzQ5IDMu
Mzc5IDEyLjU4OTkgMi45OTUgMTIuMjk4OSAyLjcwNCBDIDExLjcxNDkgMi4xMTkgMTAuNzU5OSAy
LjExOSAxMC4xNzY5IDIuNzAyIEwgOS40Mjk5IDMuNDQ5IEMgOS4yODk5IDMuMzgyIDkuMTQ3OSAz
LjMyNyA5LjAwMDkgMy4yNzUgTCA5LjAwMDkgMi40OTkgQyA5LjAwMDkgMS42NzQgOC4zMjU5IDAu
OTk5IDcuNTAwOSAwLjk5OSBDIDYuNjc1OSAwLjk5OSA2LjAwMDkgMS42NzQgNi4wMDA5IDIuNDk5
IEwgNi4wMDA5IDMuMjc1IEMgNS44NTQ5IDMuMzI3IDUuNzEwOSAzLjM4MyA1LjU3MDkgMy40NDkg
TCA0LjgyNDkgMi43MDMgQyA0LjI0MTkgMi4xMiAzLjI4NjkgMi4xMiAyLjcwMzkgMi43MDMgQyAy
LjQxMTkgMi45OTUgMi4yNjU5IDMuMzc5IDIuMjY1OSAzLjc2MyBDIDIuMjY1OSA0LjE0OCAyLjQx
MTkgNC41MzIgMi43MDI5IDQuODI0IEwgMy40NDk5IDUuNTcxIEMgMy4zODM5IDUuNzEgMy4zMjg5
IDUuODUzIDMuMjc1OSA2IEwgMi41MDA5IDUuOTk5IEMgMS42NzU5IDYgMS4wMDA5IDYuNjc0IDEu
MDAwOSA3LjUgQyAxLjAwMDkgOC4zMjUgMS42NzU5IDkgMi41MDA5IDkgTCAzLjI3NTkgOSBDIDMu
MzI3OSA5LjE0NiAzLjM4MzkgOS4yODkgMy40NDk5IDkuNDI5IEwgMi43MDM5IDEwLjE3NSBDIDIu
NDExOSAxMC40NjcgMi4yNjQ5IDEwLjg1MiAyLjI2NTkgMTEuMjM2IEMgMi4yNjQ5IDExLjYyMSAy
LjQxMjkgMTIuMDA2IDIuNzAyOSAxMi4yOTYgQyAzLjI4NjkgMTIuODggNC4yNDE5IDEyLjg4IDQu
ODI0OSAxMi4yOTcgTCA1LjU3MTkgMTEuNTUxIEMgNS43MTA5IDExLjYxNiA1Ljg1MzkgMTEuNjcz
IDYuMDAwOSAxMS43MjUgTCA1Ljk5OTkgMTIuNSBDIDYuMDAwOSAxMy4zMjUgNi42NzU5IDE0IDcu
NTAwOSAxNCBaIiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgor
ICAgIDxwYXRoIGQ9Ik0gNy41IDUuNiBDIDguNTQ4IDUuNiA5LjQgNi40NTIgOS40IDcuNSBDIDku
NCA4LjU0OCA4LjU0OCA5LjQgNy41IDkuNCBDIDYuNDUyIDkuNCA1LjYgOC41NDggNS42IDcuNSBD
IDUuNiA2LjQ1MiA2LjQ1MiA1LjYgNy41IDUuNiIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUi
IHN0cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ldHdvcmsuc3ZnIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ldHdvcmsuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNjM5NDRi
OWZlOGE1ZWFlNjYxNmI5NTc3OGRlMzI4ZTczOTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV0d29yay5zdmcKQEAgLTAs
MCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBD
b3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2
ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4KKyAgICA8Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNyIgY2xhc3M9InN0
cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDUuNSAx
LjUgTCA1LjUgMTAuNSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2si
Lz4KKyAgICA8cGF0aCBkPSJNIDEwLjUgMTQuNSBMIDEwLjUgNS41IiBjbGFzcz0ic3Ryb2tlZCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gMy4wIDkuMCBMIDUu
NSAxMS4wIEwgOC4wIDkuMCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxh
Y2siLz4KKyAgICA8cGF0aCBkPSJNIDEzLjAgNy4wIEwgMTAuNSA1LjAgTCA4LjAgNy4wIiBjbGFz
cz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1
cy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTmV3VGFi
UGx1cy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmIyYjVkNmNlMTU0NmJjMTZjY2JmMWFiOTVjOTIxMGU1YzE1
M2U1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9OZXdUYWJQbHVzLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVy
c2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxwYXRo
IGQ9Ik0gOCAyIEwgOCAxMyBNIDIuNSA3LjUgTCAxMy41IDcuNSIgY2xhc3M9InN0cm9rZWQiIGZp
bGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Jlc291cmNlcy5zdmcgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvUmVzb3VyY2VzLnN2ZwppbmRleCBi
NTYxMjZmZGUwNmIyOWMyZWVkNmZkOTExYzg4NWQxYWViZWI0YTQ5Li4wYTRlZGUyNzhiM2VkOTJl
ODkyMmFjMGZkMzFlZDI1Mzg5ZGFkZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbWFnZXMvUmVzb3VyY2VzLnN2ZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvUmVzb3VyY2VzLnN2ZwpAQCAtMSw2ICsxLDYg
QEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tIENvcHlyaWdo
dCDCqSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Ci08c3ZnIHZlcnNp
b249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAg
MTYgMTYiPgotICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik0gMy41IDIu
NSBMIDMuNSAxMy41IEwgMTIuNSAxMy41IEwgMTIuNSA1LjUgTCA5LjUgMi41IEwgMy41IDIuNSBa
ICIvPgotICAgIDxwYXRoIGQ9Ik0gOSA0IEwgOSA2IEwgMTEgNiBMIDkgNCBaICIvPgorPCEtLSBD
b3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2
ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4KKyAgICA8cGF0aCBkPSJNIDIuNSAxLjUgTCAyLjUgMTQuNSBMIDEzLjUg
MTQuNSBMIDEzLjUgNS41IEwgOS41IDEuNSBMIDIuNSAxLjUgWiIgY2xhc3M9InN0cm9rZWQiIGZp
bGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDkuMCAzLjAgTCA5LjAg
Ni4wIEwgMTIuMCA2LjAgTCA5LjAgMy4wIFoiIGNsYXNzPSJmaWxsZWQiIGZpbGw9ImJsYWNrIi8+
CiA8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjAwOTUwOGY5NDkz
ZGE3OWNlNGMxN2YyMjQyYWNlNmQ2NzQ5MjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnCkBAIC0w
LDAgKzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0g
Q29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxz
dmcgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgPHJlY3QgeD0iMSIgeT0iMSIgd2lkdGg9IjE0IiBoZWlnaHQ9
IjE0IiByeD0iMiIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4K
KyAgICA8Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iMyIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDkgOSBMIDEyLjUgMTIuNSIgY2xh
c3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKzwvc3ZnPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1N0b3JhZ2Uu
c3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1N0b3JhZ2Uu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNjZTQzMTg5ODVlZGU4MjU2NmE2MWVkNmFhMGZmNmIxMTMxMmI2ODUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9J
bWFnZXMvU3RvcmFnZS5zdmcKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEu
MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cGF0aCBkPSJNIDEz
LjQ0NzU2NDUgNi41NzAxMDM4IEMgMTQuMTEzMTEwMSA2Ljk1OTE1OTk0IDE0LjUgNy40NDI0MzU2
MiAxNC41IDggQyAxNC41IDkuNTI5NTIwMTUgMTEuNTg4NTYwNCAxMC41IDggMTAuNSBDIDQuNDEx
NDM5NTYgMTAuNSAxLjUgOS41Mjk1MjAxNSAxLjUgOCBDIDEuNSA3LjQ0MjQzNTYyIDEuODg2ODg5
OTIgNi45NTkxNTk5NCAyLjU1MjQzNTU0IDYuNTcwMTAzOCBDIDIuOTU5ODQ1NjYgNi43NTAxNzUz
NCAzLjQzNTgzMDU3IDYuOTA5NjM3NjMgMy45NjYyMDk4MiA3LjA0MzQyNjIxIEMgMy45NDkxOTkz
OSA3LjA0ODk1NjE2IDMuOTMyMjg2NzggNy4wNTQ1MjM1MiAzLjkxNTQ3MzEzIDcuMDYwMTI4MDcg
QyAyLjk4MzAzMDk3IDcuMzcwOTQyMTIgMi41IDcuNzUxNjEzMyAyLjUgOCBDIDIuNSA4LjI0ODM4
NjcgMi45ODMwMzA5NyA4LjYyOTA1Nzg4IDMuOTE1NDczMTMgOC45Mzk4NzE5MyBDIDQuOTc4NzMz
NjMgOS4yOTQyOTIxIDYuNDM3Nzc4MDIgOS41IDggOS41IEMgOS41NjIyMjE5OCA5LjUgMTEuMDIx
MjY2NCA5LjI5NDI5MjEgMTIuMDg0NTI2OSA4LjkzOTg3MTkzIEMgMTMuMDE2OTY5IDguNjI5MDU3
ODggMTMuNSA4LjI0ODM4NjcgMTMuNSA4IEMgMTMuNSA3Ljc1MTYxMzMgMTMuMDE2OTY5IDcuMzcw
OTQyMTIgMTIuMDg0NTI2OSA3LjA2MDEyODA3IEMgMTIuMDY3NzEzMiA3LjA1NDUyMzUyIDEyLjA1
MDgwMDYgNy4wNDg5NTYxNiAxMi4wMzM3OTAyIDcuMDQzNDI2MjEgQyAxMi41NjQxNjk0IDYuOTA5
NjM3NjMgMTMuMDQwMTU0MyA2Ljc1MDE3NTM0IDEzLjQ0NzU2NDUgNi41NzAxMDM4IFoiIGNsYXNz
PSJmaWxsZWQiIGZpbGw9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSAxMy40NDc1NjQ1IDEwLjU3
MDEwMzggQyAxNC4xMTMxMTAxIDEwLjk1OTE1OTkgMTQuNSAxMS40NDI0MzU2IDE0LjUgMTIgQyAx
NC41IDEzLjUyOTUyMDEgMTEuNTg4NTYwNCAxNC41IDggMTQuNSBDIDQuNDExNDM5NTYgMTQuNSAx
LjUgMTMuNTI5NTIwMSAxLjUgMTIgQyAxLjUgMTEuNDQyNDM1NiAxLjg4Njg4OTkyIDEwLjk1OTE1
OTkgMi41NTI0MzU1NCAxMC41NzAxMDM4IEMgMi45NTk4NDU2NiAxMC43NTAxNzUzIDMuNDM1ODMw
NTcgMTAuOTA5NjM3NiAzLjk2NjIwOTgyIDExLjA0MzQyNjIgQyAzLjk0OTE5OTM5IDExLjA0ODk1
NjIgMy45MzIyODY3OCAxMS4wNTQ1MjM1IDMuOTE1NDczMTMgMTEuMDYwMTI4MSBDIDIuOTgzMDMw
OTcgMTEuMzcwOTQyMSAyLjUgMTEuNzUxNjEzMyAyLjUgMTIgQyAyLjUgMTIuMjQ4Mzg2NyAyLjk4
MzAzMDk3IDEyLjYyOTA1NzkgMy45MTU0NzMxMyAxMi45Mzk4NzE5IEMgNC45Nzg3MzM2MyAxMy4y
OTQyOTIxIDYuNDM3Nzc4MDIgMTMuNSA4IDEzLjUgQyA5LjU2MjIyMTk4IDEzLjUgMTEuMDIxMjY2
NCAxMy4yOTQyOTIxIDEyLjA4NDUyNjkgMTIuOTM5ODcxOSBDIDEzLjAxNjk2OSAxMi42MjkwNTc5
IDEzLjUgMTIuMjQ4Mzg2NyAxMy41IDEyIEMgMTMuNSAxMS43NTE2MTMzIDEzLjAxNjk2OSAxMS4z
NzA5NDIxIDEyLjA4NDUyNjkgMTEuMDYwMTI4MSBDIDEyLjA2NzcxMzIgMTEuMDU0NTIzNSAxMi4w
NTA4MDA2IDExLjA0ODk1NjIgMTIuMDMzNzkwMiAxMS4wNDM0MjYyIEMgMTIuNTY0MTY5NCAxMC45
MDk2Mzc2IDEzLjA0MDE1NDMgMTAuNzUwMTc1MyAxMy40NDc1NjQ1IDEwLjU3MDEwMzggWiIgY2xh
c3M9ImZpbGxlZCIgZmlsbD0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDE0LjUgNCBDIDE0LjUg
Mi40NzA0Nzk4NSAxMS41ODg1NjA0IDEuNSA4IDEuNSBDIDQuNDExNDM5NTYgMS41IDEuNSAyLjQ3
MDQ3OTg1IDEuNSA0IEMgMS41IDUuNTI5NTIwMTUgNC40MTE0Mzk1NiA2LjUgOCA2LjUgQyAxMS41
ODg1NjA0IDYuNSAxNC41IDUuNTI5NTIwMTUgMTQuNSA0IFogTSAzLjkxNTQ3MzEzIDQuOTM5ODcx
OTMgQyAyLjk4MzAzMDk3IDQuNjI5MDU3ODggMi41IDQuMjQ4Mzg2NyAyLjUgNCBDIDIuNSAzLjc1
MTYxMzMgMi45ODMwMzA5NyAzLjM3MDk0MjEyIDMuOTE1NDczMTMgMy4wNjAxMjgwNyBDIDQuOTc4
NzMzNjMgMi43MDU3MDc5IDYuNDM3Nzc4MDIgMi41IDggMi41IEMgOS41NjIyMjE5OCAyLjUgMTEu
MDIxMjY2NCAyLjcwNTcwNzkgMTIuMDg0NTI2OSAzLjA2MDEyODA3IEMgMTMuMDE2OTY5IDMuMzcw
OTQyMTIgMTMuNSAzLjc1MTYxMzMgMTMuNSA0IEMgMTMuNSA0LjI0ODM4NjcgMTMuMDE2OTY5IDQu
NjI5MDU3ODggMTIuMDg0NTI2OSA0LjkzOTg3MTkzIEMgMTEuMDIxMjY2NCA1LjI5NDI5MjEgOS41
NjIyMjE5OCA1LjUgOCA1LjUgQyA2LjQzNzc3ODAyIDUuNSA0Ljk3ODczMzYzIDUuMjk0MjkyMSAz
LjkxNTQ3MzEzIDQuOTM5ODcxOTMgWiIgY2xhc3M9ImZpbGxlZCIgZmlsbD0iYmxhY2siLz4KKzwv
c3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1h
Z2VzL1RpbWVsaW5lLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9UaW1lbGluZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3ZWNmMTBiOWM3ZmM2MGY1ZmRkOGZmZDBi
NTUzOWQ3YTBhNzZmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0ltYWdlcy9UaW1lbGluZS5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2aWV3Qm94PSIwIDAgMTYg
MTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAg
ICA8Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNyIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUi
IHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDguNSAzIEwgOC41IDguNSBMIDUgOC41
IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorPC9zdmc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMDI4
NDY3ZjE1NjZhYTE3NDdlY2M5NjA5M2NjYWM4ZGJkYTA5ZTVjNC4uMmVmODZiMzgyNmJjMzIzNWM5
MjJiZmQ0Y2QwZTIzMTY1ZDY5NWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbApAQCAtMTI5LDYgKzEyOSw3IEBACiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5jc3MiPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU3R5bGVSdWxlSWNvbnMuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1N5bnRheEhpZ2hsaWdodGluZ0Rl
ZmF1bHRUaGVtZS5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
VGFiQmFyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UZXh0
Q29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1RleHRFZGl0b3IuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmNzcyI+CkBAIC00NzIsNiArNDczLDggQEAKICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3ludGF4SGlnaGxpZ2h0aW5n
U3VwcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYkJhci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RhYkJhckl0ZW0uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UZXh0Q29udGVudFZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKaW5kZXgg
NWI3YTZkMmZkZmRhMWQzNGZmOTE3ZWEzNTQ1MWY1OGFmZThjNTcxNS4uMGNiMjE1YzcxYTFhNjAy
YzNiMzlmZTg3NTc0ODE5OTJjMmFmMTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLmpzCkBAIC0zMCw2ICszMCwxMyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCitpZiAoIXdpbmRvdy5TeW1ib2wpIHsKKyAgICB3aW5kb3cuU3ltYm9sID0gZnVuY3Rp
b24oc3RyaW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICB9Cit9CisKIGlm
ICghd2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdCkgewogICAgIFdlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViID0gZnVuY3Rpb24oKQogICAgIHsKQEAgLTE0Myw2ICsxNTAs
MTAgQEAgaWYgKCF3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CiAgICAgICAgIHsKICAg
ICAgICAgfSwKIAorICAgICAgICBzaG93Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50LCBtZW51
T2JqZWN0KQorICAgICAgICB7CisgICAgICAgIH0sCisKICAgICAgICAgLy8gUHJpdmF0ZQogCiAg
ICAgICAgIF9zZW5kUGVuZGluZ01lc3NhZ2VzVG9CYWNrZW5kSWZOZWVkZWQ6IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YkJhci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJC
YXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjZDg5ZTM2ODBiNGU5YzI0OWE0MjVmZTZlZTRmYmUxMGNiM2Ri
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXIuY3NzCkBAIC0wLDAgKzEsMzAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnRhYi1i
YXIgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3
ZWVuOworICAgIGZsZXgtd3JhcDogd3JhcDsKKworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKwor
ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTY4LCAxNjgsIDE2OCk7CisKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2IoMTk5LCAxOTks
IDE5OSksIHJnYigxODQsIDE4NCwgMTg0KSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDIw
MCU7CisKKyAgICBoZWlnaHQ6IDMwcHg7CisKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisKKyAgICBvdXRsaW5lOiBub25lOworfQorCitib2R5LndpbmRv
dy1pbmFjdGl2ZSAudGFiLWJhciB7CisgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiKDIxOSwg
MjE5LCAyMTkpOworCisgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OworICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzYsIDIzNiwgMjM2KSAhaW1wb3J0YW50OworfQorCisu
dGFiLWJhciA+IC50b3AtYm9yZGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgaGVpZ2h0OiAxcHg7CisKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTY4LCAxNjgsIDE2OCk7CisKKyAgICB6LWluZGV4OiAw
OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC50b3AtYm9yZGVyIHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE5LCAyMTksIDIxOSk7Cit9CisKKy50YWItYmFyID4g
Lml0ZW0geworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogMTsKKworICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKKworICAgIHotaW5kZXg6IDE7CisKKyAgICBhbGlnbi1pdGVtczogY2VudGVy
OworCisgICAgcGFkZGluZzogMCA2cHg7CisKKyAgICBtaW4td2lkdGg6IDMwcHg7CisgICAgb3Zl
cmZsb3c6IGhpZGRlbjsKKworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0
byBib3R0b20sIHJnYigxOTksIDE5OSwgMTk5KSwgcmdiKDE4NCwgMTg0LCAxODQpKTsKKyAgICBi
YWNrZ3JvdW5kLXNpemU6IDEwMCUgMjAwJTsKKworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBy
Z2IoMTY4LCAxNjgsIDE2OCk7CisKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgb3V0bGluZTogbm9u
ZTsKKworICAgIC8qIEZJWE1FOiBUaGVzZSBjYXVzZSBub3RpY2VhYmxlIHRyYW5zaXRpb25zIHdo
ZW4gZm9jdXNpbmcgdGhlIHdpbmRvdy4gRml4IHRoYXQgd2l0aCBKYXZhU2NyaXB0PyAqLworICAg
IC8qIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtcG9zaXRpb24sIGJvcmRlci1jb2xv
cjsgKi8KKyAgICAvKiB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyNTBtczsgKi8KKyAgICAvKiB0cmFu
c2l0aW9uLWRlbGF5OiA1MG1zOyAqLworfQorCisudGFiLWJhciA+IDpudGgtY2hpbGQobiArIDIg
b2YgLml0ZW0pIHsKKyAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigxNjgsIDE2OCwgMTY4
KTsKK30KKworLnRhYi1iYXIgPiAuaXRlbS5waW5uZWQgeworICAgIHdpZHRoOiAzMHB4OworICAg
IGZsZXg6IG5vbmU7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisKKy50YWItYmFy
ID4gLml0ZW0uc2VsZWN0ZWQgeworICAgIGJvcmRlci10b3AtY29sb3I6IHJnYigxOTAsIDE5MCwg
MTkwKTsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBy
Z2IoMjIyLCAyMjIsIDIyMiksIHJnYigyMTEsIDIxMSwgMjExKSk7CisgICAgYmFja2dyb3VuZC1z
aXplOiAxMDAlIDEwMCU7Cit9CisKKy50YWItYmFyOm5vdCguYW5pbWF0aW5nKSA+IC5pdGVtOm5v
dCguc2VsZWN0ZWQpOmhvdmVyLAorLnRhYi1iYXIgPiAuaXRlbS5uZXctdGFiLWJ1dHRvbjpob3Zl
ciB7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlOworICAgIGJvcmRlci10b3AtY29s
b3I6IHJnYigxNTIsIDE1MiwgMTUyKTsKKyAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiKDE1Miwg
MTUyLCAxNTIpOworfQorCisudGFiLWJhcjpub3QoLmFuaW1hdGluZykgPiAuaXRlbTpub3QoLnNl
bGVjdGVkKTpob3ZlciArIC5pdGVtIHsKKyAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiKDE1Miwg
MTUyLCAxNTIpOworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtIHsK
KyAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIxOSwgMjE5LCAyMTkpICFpbXBvcnRhbnQ7Cisg
ICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIxOSwgMjE5LCAyMTkpICFpbXBvcnRhbnQ7CisKKyAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDIzNiwgMjM2LCAyMzYpICFpbXBvcnRhbnQ7CisKKyAgICB0cmFuc2l0aW9uOiBub25l
OworfQorCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVkIHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDI0NiwgMjQ2LCAyNDYpICFpbXBvcnRhbnQ7Cit9CisKKy50YWItYmFyID4gLml0
ZW0gPiAuY2xvc2UgeworICAgIHdpZHRoOiAxNnB4OworICAgIGhlaWdodDogMTZweDsKKworICAg
IG1pbi13aWR0aDogMTZweDsKKyAgICBtaW4taGVpZ2h0OiAxNnB4OworCisgICAgb3BhY2l0eTog
MDsKKworICAgIGJvcmRlci1yYWRpdXM6IDJweDsKKworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9JbWFnZXMvQ2xvc2Uuc3ZnKTsKKyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0
OworCisgICAgbWFyZ2luLXJpZ2h0OiA0cHg7CisKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBi
YWNrZ3JvdW5kLWNvbG9yLCBvcGFjaXR5OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDI1MG1z
LCA1MDBtczsKKyAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLCA1MG1zOworfQorCitib2R5Om5vdCgu
d2luZG93LWluYWN0aXZlKSAudGFiLWJhcjpub3QoLnNpbmdsZS10YWIpID4gLml0ZW06aG92ZXIg
PiAuY2xvc2UgeworICAgIG9wYWNpdHk6IDAuNjsKK30KKworLnRhYi1iYXIuc2luZ2xlLXRhYiA+
IC5pdGVtID4gLmNsb3NlIHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLnRhYi1i
YXIgPiAuaXRlbSA+IC5jbG9zZTpob3ZlciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgw
LCAwLCAwLCAwLjIpOworfQorCisudGFiLWJhciA+IC5pdGVtID4gLmNsb3NlOmFjdGl2ZSB7Cisg
ICAgb3BhY2l0eTogMC44ICFpbXBvcnRhbnQ7Cit9CisKKy50YWItYmFyID4gLml0ZW0gPiAuZmxl
eC1zcGFjZSB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4OiAxOworfQorCisudGFiLWJh
ciA+IC5pdGVtID4gLmZsZXgtc3BhY2U6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLXJpZ2h0OiAx
NnB4OworfQorCisudGFiLWJhciA+IC5pdGVtID4gLmljb24geworICAgIHdpZHRoOiAxNnB4Owor
ICAgIGhlaWdodDogMTZweDsKKworICAgIG1pbi13aWR0aDogMTZweDsKKyAgICBtaW4taGVpZ2h0
OiAxNnB4OworCisgICAgb3BhY2l0eTogMC41NTsgLyogQXNzdW1lcyBibGFjayBnbHlwaHMuICov
CisKKyAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTsKK30KKworLnRhYi1iYXIgPiAuaXRlbS5z
ZWxlY3RlZCA+IC5pY29uIHsKKyAgICBvcGFjaXR5OiAwLjc7Cit9CisKKy50YWItYmFyOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyID4gLmljb24sCisudGFiLWJh
ciA+IC5pdGVtLm5ldy10YWItYnV0dG9uOmhvdmVyID4gLmljb24geworICAgIG9wYWNpdHk6IDAu
NjsKK30KKworLnRhYi1iYXIgPiAuaXRlbSA+IC50aXRsZSB7CisgICAgbWFyZ2luLWxlZnQ6IDZw
eDsKKworICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTUpOworCisgICAgZGlzcGxheTogZmxl
eDsKKworICAgIG1pbi13aWR0aDogMDsKKyAgICBtYXgtd2lkdGg6IDQwMHB4OworfQorCisudGFi
LWJhciA+IC5pdGVtID4gLnRpdGxlID4gLmNvbnRlbnQgeworICAgIG1pbi13aWR0aDogMDsKKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy50YWItYmFyOm5vdCgu
YW5pbWF0aW5nKSA+IC5pdGVtOm5vdCguc2VsZWN0ZWQpOmhvdmVyID4gLnRpdGxlIHsKKyAgICBj
b2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpOworfQorCisudGFiLWJhciA+IC5pdGVtLnNlbGVjdGVk
ID4gLnRpdGxlIHsKKyAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOworfQorCisudGFiLWJh
ci5jb2xsYXBzZWQgPiAuaXRlbSB7CisgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cit9CisK
Ky50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtID4gLmZsZXgtc3BhY2UgeworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKKy50YWItYmFyLmNvbGxhcHNlZCA+IC5pdGVtID4gLmNsb3NlIHsKKyAgICBk
aXNwbGF5OiBub25lOworICAgIG1hcmdpbi1yaWdodDogMDsKK30KKworLnRhYi1iYXIuaGlkZS10
aXRsZXMgPiAuaXRlbSA+IC50aXRsZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRhYi1i
YXIuY29sbGFwc2VkOm5vdCguaGlkZS10aXRsZXMpID4gLml0ZW06bm90KC5waW5uZWQpOmhvdmVy
ID4gLmljb24sCisudGFiLWJhci5oaWRlLXRpdGxlcyA+IC5pdGVtLnNlbGVjdGVkOmhvdmVyID4g
Lmljb24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy50YWItYmFyLmNvbGxhcHNlZDpub3Qo
LmhpZGUtdGl0bGVzKSA+IC5pdGVtOmhvdmVyID4gLmNsb3NlLAorLnRhYi1iYXIuaGlkZS10aXRs
ZXMgPiAuaXRlbS5zZWxlY3RlZDpob3ZlciA+IC5jbG9zZSB7CisgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworfQorCisudGFiLWJhci5zdGF0aWMtbGF5b3V0IHsKKyAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cit9CisKKy50YWItYmFyLnN0YXRpYy1sYXlvdXQgPiAuaXRlbSB7CisgICAgcG9zaXRp
b246IGFic29sdXRlICFpbXBvcnRhbnQ7CisgICAgdG9wOiAwOworfQorCisudGFiLWJhci5hbmlt
YXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbSB7CisgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVm
dDsKKyAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyNTBtczsKKyAgICB0cmFuc2l0aW9uLXRpbWlu
Zy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7Cit9CisKKy50YWItYmFyLmFuaW1hdGluZzptYXRjaGVz
KC5leHBhbmRpbmctdGFicywgLmluc2VydGluZy10YWIpID4gLml0ZW0geworICAgIHRyYW5zaXRp
b24tcHJvcGVydHk6IGxlZnQsIHdpZHRoOworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDI1MG1z
OworICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKK30KKworLnRh
Yi1iYXIuYW5pbWF0aW5nLmluc2VydGluZy10YWIgPiAuaXRlbS5iZWluZy1pbnNlcnRlZCB7Cisg
ICAgei1pbmRleDogMjsKKyAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDsKKyAgICBwYWRkaW5n
OiAwICFpbXBvcnRhbnQ7Cit9CisKKy50YWItYmFyLmRyYWdnaW5nLXRhYiA+IC5pdGVtLnNlbGVj
dGVkLAorLnRhYi1iYXIuc3RhdGljLWxheW91dDpub3QoLmFuaW1hdGluZy5pbnNlcnRpbmctdGFi
KTpub3QoLmRyYWdnaW5nLXRhYikgPiAuaXRlbTpudGgtbGFzdC1jaGlsZCgxIG9mIDpub3QoLnBp
bm5lZCkpLAorLnRhYi1iYXIuYW5pbWF0aW5nLmNsb3NpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQg
eworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigxNjgsIDE2OCwgMTY4KTsKK30KKwor
Ym9keS53aW5kb3ctaW5hY3RpdmUgLnRhYi1iYXIuZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0
ZWQsCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJhci5zdGF0aWMtbGF5b3V0Om5vdCguYW5p
bWF0aW5nLmluc2VydGluZy10YWIpOm5vdCguZHJhZ2dpbmctdGFiKSA+IC5pdGVtOm50aC1sYXN0
LWNoaWxkKDEgb2YgOm5vdCgucGlubmVkKSksCitib2R5LndpbmRvdy1pbmFjdGl2ZSAudGFiLWJh
ci5hbmltYXRpbmcuY2xvc2luZy10YWIgPiAuaXRlbS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLXJp
Z2h0LWNvbG9yOiByZ2IoMjE5LCAyMTksIDIxOSkgIWltcG9ydGFudDsKK30KKworLnRhYi1iYXIu
ZHJhZ2dpbmctdGFiID4gLml0ZW0uc2VsZWN0ZWQgeworICAgIHotaW5kZXg6IDI7CisgICAgcG9p
bnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExYzdhNDliYWNhMTE1NjA2
MDAxZjRmZTIxZGIwYmIyNjgwM2FhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qcwpAQCAtMCwwICsxLDY1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgdGFiQmFySXRl
bXMpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBl
bGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYi1iYXIiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC50
YWJJbmRleCA9IDA7CisKKyAgICAgICAgdmFyIHRvcEJvcmRlckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdG9wQm9yZGVyRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJ0b3AtYm9yZGVyIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodG9w
Qm9yZGVyRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCB0aGlzLl9oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRs
ZU1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fdGFiQmFySXRlbXMgPSBb
XTsKKworICAgICAgICBpZiAodGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIHRh
YkJhckl0ZW0gaW4gdGFiQmFySXRlbXMpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRUYWJCYXJJ
dGVtKHRhYkJhckl0ZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAg
ICBnZXQgbmV3VGFiSXRlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbmV3VGFiSXRl
bSB8fCBudWxsOworICAgIH0KKworICAgIHNldCBuZXdUYWJJdGVtKG5ld1RhYkl0ZW0pCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXJMaXN0ZW5lcikKKyAg
ICAgICAgICAgIHRoaXMuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXJMaXN0ZW5lciA9IHRoaXMuX2hh
bmRsZU5ld1RhYk1vdXNlRW50ZXIuYmluZCh0aGlzKTsKKworICAgICAgICBpZiAodGhpcy5fbmV3
VGFiSXRlbSkgeworICAgICAgICAgICAgdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoIm5ldy10YWItYnV0dG9uIik7CisgICAgICAgICAgICB0aGlzLl9uZXdUYWJJdGVt
LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMuX2hhbmRsZU5l
d1RhYk1vdXNlRW50ZXJMaXN0ZW5lcik7CisgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0
ZW0odGhpcy5fbmV3VGFiSXRlbSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3
VGFiSXRlbSkgeworICAgICAgICAgICAgbmV3VGFiSXRlbS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
Im5ldy10YWItYnV0dG9uIik7CisgICAgICAgICAgICBuZXdUYWJJdGVtLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMuX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXJMaXN0
ZW5lcik7CisgICAgICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0obmV3VGFiSXRlbSwgdHJ1ZSk7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9uZXdUYWJJdGVtID0gbmV3VGFiSXRlbSB8fCBu
dWxsOworICAgIH0KKworICAgIGFkZFRhYkJhckl0ZW0odGFiQmFySXRlbSwgZG9Ob3RBbmltYXRl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0VGFiQmFySXRlbSh0YWJCYXJJdGVt
LCB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGgsIGRvTm90QW5pbWF0ZSk7CisgICAgfQorCisgICAg
aW5zZXJ0VGFiQmFySXRlbSh0YWJCYXJJdGVtLCBpbmRleCwgZG9Ob3RBbmltYXRlKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UYWJCYXJJdGVtKTsKKyAgICAgICAgaWYgKCEodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAg
IGlmICh0YWJCYXJJdGVtLnBhcmVudFRhYkJhciA9PT0gdGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAodGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIp
IHsKKyAgICAgICAgICAgIC8vIERlbGF5IGFkZGluZyB0aGUgbmV3IHRhYiB1bnRpbCB3ZSBjYW4g
ZXhwYW5kIHRoZSB0YWJzIGFmdGVyIGEgY2xvc2VkIHRhYi4KKyAgICAgICAgICAgIHRoaXMuX2Zp
bmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKCkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLmluc2VydFRhYkJhckl0ZW0odGFiQmFySXRlbSwgaW5kZXgsIGRvTm90QW5p
bWF0ZSk7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyKQorICAgICAg
ICAgICAgdGFiQmFySXRlbS5wYXJlbnRUYWJCYXIucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVt
KTsKKworICAgICAgICB0YWJCYXJJdGVtLnBhcmVudFRhYkJhciA9IHRoaXM7CisKKyAgICAgICAg
dmFyIGxhc3RJbmRleCA9IHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl90YWJCYXJJdGVtcy5sZW5n
dGggLSAxIDogdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoOworICAgICAgICBpbmRleCA9IE1hdGgu
bWF4KDAsIE1hdGgubWluKGluZGV4LCBsYXN0SW5kZXgpKTsKKworICAgICAgICBpZiAodGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSkgeworICAgICAgICAgICAgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKHJlbW92ZVN0eWxlcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGRv
Tm90QW5pbWF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgYmVmb3JlVGFiU2l6
ZXNBbmRQb3NpdGlvbnM7CisgICAgICAgIGlmICghZG9Ob3RBbmltYXRlKQorICAgICAgICAgICAg
YmVmb3JlVGFiU2l6ZXNBbmRQb3NpdGlvbnMgPSB0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNB
bmRQb3NpdGlvbnMoKTsKKworICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5zcGxpY2UoaW5kZXgs
IDAsIHRhYkJhckl0ZW0pOworCisgICAgICAgIHZhciBuZXh0U2libGluZyA9IHRoaXMuX3RhYkJh
ckl0ZW1zW2luZGV4ICsgMV07CisgICAgICAgIHZhciBuZXh0U2libGluZ0VsZW1lbnQgPSBuZXh0
U2libGluZyA/IG5leHRTaWJsaW5nLmVsZW1lbnQgOiAodGhpcy5fbmV3VGFiSXRlbSA/IHRoaXMu
X25ld1RhYkl0ZW0uZWxlbWVudCA6IG51bGwpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuaW5z
ZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgbmV4dFNpYmxpbmdFbGVtZW50KTsKKworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5f
aGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSk7CisKKyAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50
LnN0eWxlLmxlZnQgPSBudWxsOworICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lk
dGggPSBudWxsOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGVUYWJzKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKTsKKyAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5zZXJ0aW5nLXRhYiIpOwor
CisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyhhZnRl
clRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChyZW1vdmVT
dHlsZXMuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlRhYkJhci5BbmltYXRpb25EdXJ0YXRpb24p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0aWMtbGF5
b3V0Iik7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1h
dGluZyIpOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJpbnNl
cnRpbmctdGFiIik7CisKKyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJiZWluZy1pbnNlcnRlZCIpOworCisgICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkb05v
dEFuaW1hdGUpIHsKKyAgICAgICAgICAgIHZhciBhZnRlclRhYlNpemVzQW5kUG9zaXRpb25zID0g
dGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAg
IHRoaXMudXBkYXRlTGF5b3V0KCk7CisKKyAgICAgICAgICAgIHZhciBwcmV2aW91c1RhYkJhckl0
ZW0gPSB0aGlzLl90YWJCYXJJdGVtc1t0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0
ZW0pIC0gMV0gfHwgbnVsbDsKKyAgICAgICAgICAgIHZhciBwcmV2aW91c1RhYkJhckl0ZW1TaXpl
QW5kUG9zaXRpb24gPSBwcmV2aW91c1RhYkJhckl0ZW0gPyBiZWZvcmVUYWJTaXplc0FuZFBvc2l0
aW9ucy5nZXQocHJldmlvdXNUYWJCYXJJdGVtKSA6IG51bGw7CisKKyAgICAgICAgICAgIGlmIChw
cmV2aW91c1RhYkJhckl0ZW1TaXplQW5kUG9zaXRpb24pCisgICAgICAgICAgICAgICAgYmVmb3Jl
VGFiU2l6ZXNBbmRQb3NpdGlvbnMuc2V0KHRhYkJhckl0ZW0sIHtsZWZ0OiBwcmV2aW91c1RhYkJh
ckl0ZW1TaXplQW5kUG9zaXRpb24ubGVmdCArIHByZXZpb3VzVGFiQmFySXRlbVNpemVBbmRQb3Np
dGlvbi53aWR0aCwgd2lkdGg6IDB9KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6IDAsIHdp
ZHRoOiAwfSk7CisKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dGljLWxheW91dCIpOworICAgICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoImJlaW5nLWluc2VydGVkIik7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRl
bVNpemVzQW5kUG9zaXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJpbmQodGhpcykpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOworCisgICAg
ICAgIHJldHVybiB0YWJCYXJJdGVtOworICAgIH0KKworICAgIHJlbW92ZVRhYkJhckl0ZW0odGFi
QmFySXRlbU9ySWRlbnRpZmllck9ySW5kZXgsIGRvTm90QW5pbWF0ZSwgZG9Ob3RFeHBhbmQpCisg
ICAgeworICAgICAgICB2YXIgdGFiQmFySXRlbSA9IHRoaXMuX2ZpbmRUYWJCYXJJdGVtKHRhYkJh
ckl0ZW1PcklkZW50aWZpZXJPckluZGV4KTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdGFiQmFySXRlbS5wYXJlbnRUYWJCYXIg
PSBudWxsOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9uZXdUYWJJdGVtKQor
ICAgICAgICAgICAgdGhpcy5uZXdUYWJJdGVtID0gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtID09PSB0YWJCYXJJdGVtKSB7CisgICAgICAgICAgICB2YXIgaW5k
ZXggPSB0aGlzLl90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pOworICAgICAgICAgICAg
dmFyIG5leHRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggKyAxXTsKKyAgICAg
ICAgICAgIGlmICghbmV4dFRhYkJhckl0ZW0gfHwgbmV4dFRhYkJhckl0ZW0ucGlubmVkKQorICAg
ICAgICAgICAgICAgIG5leHRUYWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaW5kZXggLSAx
XTsKKworICAgICAgICAgICAgaWYgKCFuZXh0VGFiQmFySXRlbSB8fCBuZXh0VGFiQmFySXRlbS5w
aW5uZWQpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJPbmUgbm9ybWFsIHRhYiBp
cyBhbHdheXMgcmVxdWlyZWQgaW4gYSBXZWJJbnNwZWN0b3IuVGFiQmFyLiIpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLnNlbGVjdGVk
VGFiQmFySXRlbSA9IG5leHRUYWJCYXJJdGVtOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIikpIHsKKyAgICAgICAgICAgIHJl
cXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVTdHlsZXMuYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICBkb05vdEFuaW1hdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJlZm9yZVRh
YlNpemVzQW5kUG9zaXRpb25zOworICAgICAgICBpZiAoIWRvTm90QW5pbWF0ZSkKKyAgICAgICAg
ICAgIGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNp
emVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgdmFyIHdhc0xhc3ROb3JtYWxUYWIgPSB0aGlz
Ll90YWJCYXJJdGVtcy5pbmRleE9mKHRhYkJhckl0ZW0pID09PSAodGhpcy5fbmV3VGFiSXRlbSA/
IHRoaXMuX3RhYkJhckl0ZW1zLmxlbmd0aCAtIDIgOiB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGgg
LSAxKTsKKworICAgICAgICB0aGlzLl90YWJCYXJJdGVtcy5yZW1vdmUodGFiQmFySXRlbSk7Cisg
ICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5yZW1vdmUoKTsKKworICAgICAgICB2YXIgaGFzTW9y
ZVRoYW5PbmVOb3JtYWxUYWIgPSB0aGlzLl9oYXNNb3JlVGhhbk9uZU5vcm1hbFRhYigpOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9y
ZVRoYW5PbmVOb3JtYWxUYWIpOworCisgICAgICAgIGlmICghaGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIgfHwgd2FzTGFzdE5vcm1hbFRhYiB8fCAhZG9Ob3RFeHBhbmQpIHsKKyAgICAgICAgICAgIGlm
ICghZG9Ob3RBbmltYXRlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9z
ZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEV4
cGFuZGluZ1RhYnNBZnRlckNsb3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOwor
ICAgICAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07CisgICAgICAgIH0KKworICAgICAgICB2YXIg
bGFzdE5vcm1hbFRhYkJhckl0ZW07CisKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZVRhYnMoKQor
ICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFuaW1h
dGluZyIpOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbG9zaW5n
LXRhYiIpOworCisgICAgICAgICAgICB2YXIgbGVmdCA9IDA7CisgICAgICAgICAgICBmb3IgKHZh
ciBjdXJyZW50VGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAg
ICAgIHZhciBzaXplQW5kUG9zaXRpb24gPSBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucy5nZXQo
Y3VycmVudFRhYkJhckl0ZW0pOworCisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50VGFiQmFy
SXRlbS5waW5uZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhYkJhckl0ZW0uZWxl
bWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICJweCI7CisgICAgICAgICAgICAgICAgICAgIGxlZnQg
Kz0gc2l6ZUFuZFBvc2l0aW9uLndpZHRoOworICAgICAgICAgICAgICAgICAgICBsYXN0Tm9ybWFs
VGFiQmFySXRlbSA9IGN1cnJlbnRUYWJCYXJJdGVtOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc2l6ZUFuZFBvc2l0aW9uLmxlZnQgKyBzaXplQW5k
UG9zaXRpb24ud2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBzZWxl
Y3RlZCB0YWIgYW5kIGxhc3QgdGFiIG5lZWQgdG8gZHJhdyBhIHJpZ2h0IGJvcmRlciBhcyB3ZWxs
LCBzbyBtYWtlIHRoZW0gMXB4IHdpZGVyLgorICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSAocGFyc2VGbG9hdCh0aGlzLl9zZWxlY3RlZFRh
YkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCkgKyAxKSArICJweCI7CisKKyAgICAgICAgICAg
IGlmIChsYXN0Tm9ybWFsVGFiQmFySXRlbSAhPT0gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQor
ICAgICAgICAgICAgICAgIGxhc3ROb3JtYWxUYWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgg
PSAocGFyc2VGbG9hdChsYXN0Tm9ybWFsVGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoKSAr
IDEpICsgInB4IjsKKworICAgICAgICAgICAgc2V0VGltZW91dChyZW1vdmVTdHlsZXMuYmluZCh0
aGlzKSwgV2ViSW5zcGVjdG9yLlRhYkJhci5BbmltYXRpb25EdXJ0YXRpb24pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVzKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gVGhlIHNlbGVjdGVkIHRhYiBuZWVkcyB0byBzdG9wIGRyYXdpbmcgdGhlIHJpZ2h0IGJv
cmRlciwgc28gbWFrZSBpdCAxcHggc21hbGxlci4gT25seSBpZiBpdCBpc24ndCB0aGUgbGFzdC4K
KyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gIT09IGxhc3ROb3JtYWxU
YWJCYXJJdGVtKQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVt
ZW50LnN0eWxlLndpZHRoID0gKHBhcnNlRmxvYXQodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVs
ZW1lbnQuc3R5bGUud2lkdGgpIC0gMSkgKyAicHgiOworCisgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpOworICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjbG9zaW5nLXRhYiIpOworCisgICAgICAgICAgICB0aGlz
LnVwZGF0ZUxheW91dCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkb05vdEFuaW1hdGUp
IHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91
dCIpOworCisgICAgICAgICAgICB0aGlzLl90YWJBbmltYXRlZENsb3NlZFNpbmNlTW91c2VFbnRl
ciA9IHRydWU7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9z
aXRpb25zKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJpbmQodGhpcykpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOworCisgICAgICAgIHJldHVybiB0
YWJCYXJJdGVtOworICAgIH0KKworICAgIHVwZGF0ZUxheW91dFNvb24oKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dFRpbWVvdXQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQgPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHVw
ZGF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVMYXlvdXRU
aW1lb3V0OworCisgICAgICAgICAgICBpZiAodGhpcy5fbmVlZHNMYXlvdXQpCisgICAgICAgICAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Vw
ZGF0ZUxheW91dElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlLmJpbmQo
dGhpcykpOworICAgIH0KKworICAgIHVwZGF0ZUxheW91dCgpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FuY2VsQW5pbWF0
aW9uRnJhbWUodGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcik7CisgICAgICAgICAgICBkZWxl
dGUgdGhpcy5fdXBkYXRlTGF5b3V0SWRlbnRpZmllcjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0ID0gZmFsc2U7CisK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRlLXRpdGxlcyIpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpOworCisg
ICAgICAgIHZhciBmaXJzdE5vcm1hbFRhYkl0ZW0gPSBudWxsOworICAgICAgICBmb3IgKHZhciB0
YWJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAodGFiSXRlbS5w
aW5uZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmaXJzdE5vcm1h
bFRhYkl0ZW0gPSB0YWJJdGVtOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWZpcnN0Tm9ybWFsVGFiSXRlbSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiT25lIG5vcm1hbCB0YWIgaXMgYWx3YXlzIHJlcXVpcmVkIGluIGEgV2ViSW5zcGVjdG9yLlRh
YkJhci4iKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZp
cnN0Tm9ybWFsVGFiSXRlbS5lbGVtZW50Lm9mZnNldFdpZHRoID49IDEyMCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNl
ZCIpOworCisgICAgICAgIGlmIChmaXJzdE5vcm1hbFRhYkl0ZW0uZWxlbWVudC5vZmZzZXRXaWR0
aCA+PSA2MCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoImhpZGUtdGl0bGVzIik7CisgICAgfQorCisgICAgZ2V0IHNlbGVjdGVkVGFi
QmFySXRlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVt
IHx8IG51bGw7CisgICAgfQorCisgICAgc2V0IHNlbGVjdGVkVGFiQmFySXRlbSh0YWJCYXJJdGVt
T3JJZGVudGlmaWVyT3JJbmRleCkKKyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gdGhp
cy5fZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySWRlbnRpZmllck9ySW5kZXgpOworCisgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gPT09IHRhYkJhckl0ZW0pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSkKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5zZWxlY3RlZCA9IGZhbHNlOworCisg
ICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbSA9IHRhYkJhckl0ZW0gfHwgbnVsbDsKKwor
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKQorICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRUYWJCYXJJdGVtLnNlbGVjdGVkID0gdHJ1ZTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVudC5UYWJC
YXJJdGVtU2VsZWN0ZWQpOworICAgIH0KKworICAgIGdldCB0YWJCYXJJdGVtcygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRlbXM7CisgICAgfQorCisgICAgZ2V0IGVsZW1l
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAg
Ly8gUHJpdmF0ZQorCisgICAgX2ZpbmRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PcklkZW50aWZpZXJP
ckluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0YWJCYXJJdGVtT3JJZGVudGlmaWVy
T3JJbmRleCA9PT0gIm51bWJlciIpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGFiQmFySXRl
bXNbdGFiQmFySXRlbU9ySWRlbnRpZmllck9ySW5kZXhdIHx8IG51bGw7CisKKyAgICAgICAgaWYg
KHRhYkJhckl0ZW1PcklkZW50aWZpZXJPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRh
YkJhckl0ZW0pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl90YWJCYXJJdGVtcy5pbmNsdWRlcyh0
YWJCYXJJdGVtT3JJZGVudGlmaWVyT3JJbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRh
YkJhckl0ZW1PcklkZW50aWZpZXJPckluZGV4OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5
cGVvZiB0YWJCYXJJdGVtT3JJZGVudGlmaWVyT3JJbmRleCA9PT0gInN0cmluZyIpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodGFiQmFySXRlbS5pZGVudGlmaWVyID09PSB0YWJCYXJJdGVtT3JJZGVu
dGlmaWVyT3JJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYkJhckl0ZW07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisK
KyAgICBfaGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKQorICAgIHsKKyAgICAgICAgdmFyIG5vcm1h
bFRhYkNvdW50ID0gMDsKKyAgICAgICAgZm9yICh2YXIgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJC
YXJJdGVtcykgeworICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0ucGlubmVkKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgKytub3JtYWxUYWJDb3VudDsKKyAgICAgICAg
ICAgIGlmIChub3JtYWxUYWJDb3VudCA+PSAyKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIF9yZWNv
cmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJh
ckl0ZW1TaXplc0FuZFBvc2l0aW9ucyA9IG5ldyBNYXA7CisKKyAgICAgICAgZm9yICh2YXIgdGFi
QmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgdmFyIGJvdW5kaW5n
UmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAg
ICAgICAgIHRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucy5zZXQodGFiQmFySXRlbSwge2xlZnQ6
IGJvdW5kaW5nUmVjdC5sZWZ0LCB3aWR0aDogYm91bmRpbmdSZWN0LndpZHRofSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25zOworICAgIH0K
KworICAgIF9hcHBseVRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucyh0YWJCYXJJdGVtU2l6ZXNB
bmRQb3NpdGlvbnMsIHNraXBUYWJCYXJJdGVtKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgW3Rh
YkJhckl0ZW0sIHNpemVBbmRQb3NpdGlvbl0gb2YgdGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KSB7CisgICAgICAgICAgICBpZiAoc2tpcFRhYkJhckl0ZW0gJiYgdGFiQmFySXRlbSA9PT0gc2tp
cFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJC
YXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9IHNpemVBbmRQb3NpdGlvbi5sZWZ0ICsgInB4IjsK
KyAgICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS53aWR0aCA9IHNpemVBbmRQb3Np
dGlvbi53aWR0aCArICJweCI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfY2xlYXJUYWJCYXJJ
dGVtU2l6ZXNBbmRQb3NpdGlvbnMoc2tpcFRhYkJhckl0ZW0pCisgICAgeworICAgICAgICBmb3Ig
KHZhciB0YWJCYXJJdGVtIG9mIHRoaXMuX3RhYkJhckl0ZW1zKSB7CisgICAgICAgICAgICBpZiAo
c2tpcFRhYkJhckl0ZW0gJiYgdGFiQmFySXRlbSA9PT0gc2tpcFRhYkJhckl0ZW0pCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUu
bGVmdCA9IG51bGw7CisgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGgg
PSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRl
ckNsb3NlKGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpOworICAg
ICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSBmYWxzZTsK
KworICAgICAgICAgICAgaWYgKCFiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucykKKyAgICAgICAg
ICAgICAgICBiZWZvcmVUYWJTaXplc0FuZFBvc2l0aW9ucyA9IHRoaXMuX3JlY29yZFRhYkJhckl0
ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInN0YXRpYy1sYXlvdXQiKTsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFyVGFi
QmFySXRlbVNpemVzQW5kUG9zaXRpb25zKCk7CisKKyAgICAgICAgICAgIHZhciBhZnRlclRhYlNp
emVzQW5kUG9zaXRpb25zID0gdGhpcy5fcmVjb3JkVGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KCk7CisKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5VGFiQmFySXRlbVNpemVzQW5kUG9zaXRpb25z
KGJlZm9yZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gYW5p
bWF0ZVRhYnMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgic3RhdGljLWxheW91dCIpOworICAgICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIik7CisgICAgICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJleHBhbmRpbmctdGFicyIpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5fYXBwbHlUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoYWZ0ZXJUYWJTaXplc0Fu
ZFBvc2l0aW9ucyk7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlbW92ZVN0eWxlcy5i
aW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuVGFiQmFyLkFuaW1hdGlvbkR1cnRhdGlvbik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlcygpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJz
dGF0aWMtbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJhbmltYXRpbmciKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImV4cGFuZGluZy10YWJzIik7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9j
bGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworCisgICAgICAgICAgICAgICAgdGhp
cy51cGRhdGVMYXlvdXQoKTsKKworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVUYWJzLmJp
bmQodGhpcykpOworICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9oYW5kbGVN
b3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICAvLyBPbmx5IGhhbmRsZSBsZWZ0IG1vdXNl
IGNsaWNrcy4KKyAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3IuVGFiQmFySXRlbS5TdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIGlmICghaXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdmFyIHRhYkJhckl0ZW0gPSBpdGVtRWxlbWVudFtXZWJJbnNwZWN0b3IuVGFiQmFySXRl
bS5FbGVtZW50UmVmZXJlbmNlU3ltYm9sXTsKKyAgICAgICAgaWYgKCF0YWJCYXJJdGVtIHx8IHRh
YkJhckl0ZW0gPT09IHRoaXMuX25ld1RhYkl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdmFyIGNsb3NlQnV0dG9uRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2Rl
T3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtLkNsb3NlQnV0dG9uU3R5bGVD
bGFzc05hbWUpOworICAgICAgICBpZiAoY2xvc2VCdXR0b25FbGVtZW50KSB7CisgICAgICAgICAg
ICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbSwgZmFsc2UsIHRydWUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0
ZW0gPSB0YWJCYXJJdGVtOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtLnBpbm5lZCB8fCAhdGhp
cy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCA9IDA7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLl90YWJCYXJJdGVtc1tpXS5waW5uZWQpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB0aGlzLl9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCA9IGk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21vdXNlSXNEb3duID0g
dHJ1ZTsKKworICAgICAgICB0aGlzLl9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX2hh
bmRsZU1vdXNlTW92ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fbW91c2VVcEV2ZW50TGlz
dGVuZXIgPSB0aGlzLl9oYW5kbGVNb3VzZVVwLmJpbmQodGhpcyk7CisKKyAgICAgICAgLy8gUmVn
aXN0ZXIgdGhlc2UgbGlzdGVuZXJzIG9uIHRoZSBkb2N1bWVudCBzbyB3ZSBjYW4gdHJhY2sgdGhl
IG1vdXNlIGlmIGl0IGxlYXZlcyB0aGUgdGFiIGJhci4KKyAgICAgICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlzdGVuZXIsIHRy
dWUpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5f
bW91c2VVcEV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKworICAgIF9o
YW5kbGVNb3VzZU1vdmVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnQuYnV0dG9uID09PSAwKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbW91c2VJc0Rv
d24pOworICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOworCisgICAgICAgIGlmICghdGhpcy5fZWxlbWVudC5jb250YWlucygic3Rh
dGljLWxheW91dCIpKSB7CisgICAgICAgICAgICB0aGlzLl9hcHBseVRhYkJhckl0ZW1TaXplc0Fu
ZFBvc2l0aW9ucyh0aGlzLl9yZWNvcmRUYWJCYXJJdGVtU2l6ZXNBbmRQb3NpdGlvbnMoKSk7Cisg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXRpYy1sYXlvdXQiKTsK
KyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmctdGFiIik7
CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fbW91c2VPZmZzZXQgPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgICAgIHRoaXMuX21vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLl9z
ZWxlY3RlZFRhYkJhckl0ZW0uZWxlbWVudC50b3RhbE9mZnNldExlZnQ7CisKKyAgICAgICAgdmFy
IHRhYkJhck1vdXNlT2Zmc2V0ID0gZXZlbnQucGFnZVggLSB0aGlzLmVsZW1lbnQudG90YWxPZmZz
ZXRMZWZ0OworICAgICAgICB2YXIgbmV3TGVmdCA9IHRhYkJhck1vdXNlT2Zmc2V0IC0gdGhpcy5f
bW91c2VPZmZzZXQ7CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQu
c3R5bGUubGVmdCA9IG5ld0xlZnQgKyAicHgiOworCisgICAgICAgIHZhciBzZWxlY3RlZFRhYk1p
ZFggPSBuZXdMZWZ0ICsgKHRoaXMuX3NlbGVjdGVkVGFiQmFySXRlbS5lbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMik7CisKKyAgICAgICAgdmFyIGN1cnJlbnRJbmRleCA9
IHRoaXMuX3RhYkJhckl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtKTsKKyAg
ICAgICAgdmFyIG5ld0luZGV4ID0gY3VycmVudEluZGV4OworCisgICAgICAgIGZvciAodmFyIHRh
YkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmICh0YWJCYXJJ
dGVtID09PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIHZhciB0YWJCYXJJdGVtUmVjdCA9IHRhYkJhckl0ZW0uZWxlbWVu
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGFi
TWlkWCA8IHRhYkJhckl0ZW1SZWN0LmxlZnQgfHwgc2VsZWN0ZWRUYWJNaWRYID4gdGFiQmFySXRl
bVJlY3QucmlnaHQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG5l
d0luZGV4ID0gdGhpcy5fdGFiQmFySXRlbXMuaW5kZXhPZih0YWJCYXJJdGVtKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbmV3SW5kZXggPSBNYXRoLm1heCh0aGlz
Ll9maXJzdE5vcm1hbFRhYkl0ZW1JbmRleCwgbmV3SW5kZXgpOworICAgICAgICBuZXdJbmRleCA9
IE1hdGgubWluKHRoaXMuX25ld1RhYkl0ZW0gPyB0aGlzLl90YWJCYXJJdGVtcy5sZW5ndGggLSAy
IDogdGhpcy5fdGFiQmFySXRlbXMubGVuZ3RoIC0gMSwgbmV3SW5kZXgpOworCisgICAgICAgIGlm
IChjdXJyZW50SW5kZXggPT09IG5ld0luZGV4KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3RhYkJhckl0ZW1zLnNwbGljZShjdXJyZW50SW5kZXgsIDEpOworICAgICAgICB0
aGlzLl90YWJCYXJJdGVtcy5zcGxpY2UobmV3SW5kZXgsIDAsIHRoaXMuX3NlbGVjdGVkVGFiQmFy
SXRlbSk7CisKKyAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGhpcy5fdGFiQmFySXRlbXNbbmV3
SW5kZXggKyAxXTsKKyAgICAgICAgdmFyIG5leHRTaWJsaW5nRWxlbWVudCA9IG5leHRTaWJsaW5n
ID8gbmV4dFNpYmxpbmcuZWxlbWVudCA6ICh0aGlzLl9uZXdUYWJJdGVtID8gdGhpcy5fbmV3VGFi
SXRlbS5lbGVtZW50IDogbnVsbCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZv
cmUodGhpcy5fc2VsZWN0ZWRUYWJCYXJJdGVtLmVsZW1lbnQsIG5leHRTaWJsaW5nRWxlbWVudCk7
CisKKyAgICAgICAgLy8gRklYTUU6IEFuaW1hdGUgdGhlIHRhYnMgdGhhdCBtb3ZlIHRvIG1ha2Ug
cm9vbSBmb3IgdGhlIHNlbGVjdGVkIHRhYi4gVGhpcyB3YXMgY2F1c2luZyBtZSB0cm91YmxlIHdo
ZW4gSSB0cmllZC4KKworICAgICAgICB2YXIgbGVmdCA9IDA7CisgICAgICAgIGZvciAodmFyIHRh
YkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGlmICh0YWJCYXJJ
dGVtICE9PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0gJiYgdGFiQmFySXRlbSAhPT0gdGhpcy5f
bmV3VGFiSXRlbSAmJiBwYXJzZUZsb2F0KHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0KSAh
PT0gbGVmdCkKKyAgICAgICAgICAgICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUubGVmdCA9
IGxlZnQgKyAicHgiOworICAgICAgICAgICAgbGVmdCArPSBwYXJzZUZsb2F0KHRhYkJhckl0ZW0u
ZWxlbWVudC5zdHlsZS53aWR0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxlTW91
c2VVcChldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9
PT0gMCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX21vdXNlSXNEb3duKTsKKyAgICAg
ICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nLXRhYiIpOworCisgICAg
ICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic3RhdGljLWxheW91dCIpCisg
ICAgICAgICAgICB0aGlzLl9jbGVhclRhYkJhckl0ZW1TaXplc0FuZFBvc2l0aW9ucygpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIGxlZnQgPSAwOworICAgICAgICAgICAgZm9y
ICh2YXIgdGFiQmFySXRlbSBvZiB0aGlzLl90YWJCYXJJdGVtcykgeworICAgICAgICAgICAgICAg
IGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl9zZWxlY3RlZFRhYkJhckl0ZW0pCisgICAgICAgICAg
ICAgICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICJweCI7Cisg
ICAgICAgICAgICAgICAgbGVmdCArPSBwYXJzZUZsb2F0KHRhYkJhckl0ZW0uZWxlbWVudC5zdHls
ZS53aWR0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9tb3Vz
ZUlzRG93biA9IGZhbHNlOworICAgICAgICB0aGlzLl9tb3VzZU9mZnNldCA9IHVuZGVmaW5lZDsK
KworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlz
Ll9tb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgIGRvY3VtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciwgdHJ1
ZSk7CisKKyAgICAgICAgdGhpcy5fbW91c2VNb3ZlZEV2ZW50TGlzdGVuZXIgPSBudWxsOworICAg
ICAgICB0aGlzLl9tb3VzZVVwRXZlbnRMaXN0ZW5lciA9IG51bGw7CisKKyAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
fQorCisgICAgX2hhbmRsZU1vdXNlTGVhdmUoZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fbW91c2VJc0Rvd24gfHwgIXRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVy
IHx8ICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3RhdGljLWxheW91dCIpIHx8
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGlzIGV2ZW50IGNhbiBzdGlsbCBmaXJlIHdoZW4g
dGhlIG1vdXNlIGlzIGluc2lkZSB0aGUgZWxlbWVudCBpZiBET00gbm9kZXMgYXJlIGFkZGVkLCBy
ZW1vdmVkIG9yIGdlbmVyYWxseSBjaGFuZ2UgaW5zaWRlLgorICAgICAgICAvLyBDaGVjayBpZiB0
aGUgbW91c2UgcmVhbGx5IGRpZCBsZWF2ZSB0aGUgZWxlbWVudCBieSBjaGVja2luZyB0aGUgYm91
bmRzLgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIFdlYktpdCBidWcgb3IgY29ycmVjdCBi
ZWhhdmlvcj8KKyAgICAgICAgdmFyIGJhclJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgICAgICB2YXIgbmV3VGFiSXRlbVJlY3QgPSB0aGlzLl9uZXdUYWJJ
dGVtID8gdGhpcy5fbmV3VGFiSXRlbS5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDog
bnVsbDsKKyAgICAgICAgaWYgKGV2ZW50LnBhZ2VZID4gYmFyUmVjdC50b3AgJiYgZXZlbnQucGFn
ZVkgPCBiYXJSZWN0LmJvdHRvbSAmJiBldmVudC5wYWdlWCA+IGJhclJlY3QubGVmdCAmJiBldmVu
dC5wYWdlWCA8IChuZXdUYWJJdGVtUmVjdCA/IG5ld1RhYkl0ZW1SZWN0LnJpZ2h0IDogYmFyUmVj
dC5yaWdodCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZmluaXNoRXhw
YW5kaW5nVGFic0FmdGVyQ2xvc2UoKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTmV3VGFiTW91c2VF
bnRlcihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRT
aW5jZU1vdXNlRW50ZXIgfHwgIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdGF0
aWMtbGF5b3V0IikgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFuaW1hdGlu
ZyIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGlu
Z1RhYnNBZnRlckNsb3NlKCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlRhYkJhci5FdmVu
dCA9IHsKKyAgICBUYWJCYXJJdGVtU2VsZWN0ZWQ6ICJ0YWItYmFyLXRhYi1iYXItaXRlbS1zZWxl
Y3RlZCIKK307CisKK1dlYkluc3BlY3Rvci5UYWJCYXIuQW5pbWF0aW9uRHVydGF0aW9uID0gMjUw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RhYkJhckl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU2YzI5YjdhOGNkYWRkNzg3Y2IxMDBjODI1N2Zj
ZjMzZDAwNzBmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkJhckl0ZW0uanMKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSA9IGNsYXNzIFRhYkJhckl0ZW0gZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgaW1hZ2Us
IHRpdGxlLCBwaW5uZWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMu
X2lkZW50aWZpZXIgPSBpZGVudGlmaWVyIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3BhcmVudFRh
YkJhciA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlRhYkJhckl0ZW0uU3R5bGVDbGFzc05hbWUpOworICAgICAgICBpZiAocGlubmVkKQor
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwaW5uZWQiKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudFtXZWJJbnNwZWN0b3IuVGFiQmFySXRlbS5FbGVtZW50UmVmZXJlbmNl
U3ltYm9sXSA9IHRoaXM7CisKKyAgICAgICAgaWYgKCFwaW5uZWQpIHsKKyAgICAgICAgICAgIHRo
aXMuX2Nsb3NlQnV0dG9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICAgICAgdGhpcy5fY2xvc2VCdXR0b25FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlRhYkJhckl0ZW0uQ2xvc2VCdXR0b25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAg
ICB0aGlzLl9jbG9zZUJ1dHRvbkVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsaWNrIHRvIGNsb3NlIHRoaXMgdGFiIik7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2Nsb3NlQnV0dG9uRWxlbWVudCk7CisKKyAgICAgICAgICAgIHZhciBm
bGV4U3BhY2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
ICAgICBmbGV4U3BhY2VFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZsZXgtc3BhY2UiKTsKKyAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZmxleFNwYWNlRWxlbWVudCk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9pY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImltZyIpOworICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpY29u
Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkVsZW1lbnQp
OworCisgICAgICAgIGlmICghcGlubmVkKSB7CisgICAgICAgICAgICB2YXIgZmxleFNwYWNlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgZmxleFNw
YWNlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmbGV4LXNwYWNlIik7CisgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGZsZXhTcGFjZUVsZW1lbnQpOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOworICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgaWRlbnRpZmllcigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBnZXQgZWxlbWVudCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBnZXQg
cGFyZW50VGFiQmFyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUYWJCYXI7
CisgICAgfQorCisgICAgc2V0IHBhcmVudFRhYkJhcih0YWJCYXIpCisgICAgeworICAgICAgICB0
aGlzLl9wYXJlbnRUYWJCYXIgPSB0YWJCYXIgfHwgbnVsbDsKKyAgICB9CisKKyAgICBnZXQgc2Vs
ZWN0ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKCJzZWxlY3RlZCIpOworICAgIH0KKworICAgIHNldCBzZWxlY3RlZChzZWxlY3RlZCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQi
LCBzZWxlY3RlZCk7CisgICAgfQorCisgICAgZ2V0IHBpbm5lZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInBpbm5lZCIpOworICAgIH0K
KworICAgIGdldCBpbWFnZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWNvbkVsZW1l
bnQuc3JjOworICAgIH0KKworICAgIHNldCBpbWFnZSh1cmwpCisgICAgeworICAgICAgICB0aGlz
Ll9pY29uRWxlbWVudC5zcmMgPSB1cmwgfHwgIiI7CisgICAgfQorCisgICAgZ2V0IHRpdGxlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnRpdGxlIHx8ICIiOworICAgIH0K
KworICAgIHNldCB0aXRsZSh0aXRsZSkKKyAgICB7CisgICAgICAgIGlmICh0aXRsZSAmJiAhdGhp
cy5waW5uZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJ0aXRsZSIpOworCisgICAgICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGhpcy5f
dGl0bGVDb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50Iik7CisgICAgICAgICAg
ICB0aGlzLl90aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGl0bGVDb250ZW50RWxlbWVu
dCk7CisKKyAgICAgICAgICAgIHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQudGV4dENvbnRlbnQg
PSB0aXRsZTsKKworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5f
dGl0bGVFbGVtZW50LCB0aGlzLl9lbGVtZW50Lmxhc3RDaGlsZCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAodGhpcy5fdGl0bGVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRo
aXMuX3RpdGxlRWxlbWVudC5yZW1vdmUoKTsKKworICAgICAgICAgICAgdGhpcy5fdGl0bGVDb250
ZW50RWxlbWVudCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQgPSBudWxs
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC50aXRsZSA9IHRpdGxlIHx8ICIi
OworICAgIH0KKworICAgIHVwZGF0ZUxheW91dChleHBhbmRPbmx5KQorICAgIHsKKyAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3Iu
VGFiQmFySXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJpdGVtIjsKK1dlYkluc3BlY3Rvci5UYWJCYXJJ
dGVtLkNsb3NlQnV0dG9uU3R5bGVDbGFzc05hbWUgPSAiY2xvc2UiOworV2ViSW5zcGVjdG9yLlRh
YkJhckl0ZW0uRWxlbWVudFJlZmVyZW5jZVN5bWJvbCA9IFN5bWJvbCgidGFiLWJhci1pdGVtIik7
Cg==
</data>
<flag name="review"
          id="275025"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="275026"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>