<?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>143886</bug_id>
          
          <creation_ts>2015-04-17 11:19:21 -0700</creation_ts>
          <short_desc>Web Inspector: Add TabBrowser and TabContentView</short_desc>
          <delta_ts>2015-04-25 18:36:05 -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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086369</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-17 11:19:21 -0700</bug_when>
    <thetext>Add the new classes for tab based UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086371</commentid>
    <comment_count>1</comment_count>
      <attachid>251034</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-17 11:23:57 -0700</bug_when>
    <thetext>Created attachment 251034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086511</commentid>
    <comment_count>2</comment_count>
      <attachid>251034</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-17 18:57:33 -0700</bug_when>
    <thetext>Comment on attachment 251034
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:29
&gt; +    if (typeof styleClassNames === &quot;string&quot;)
&gt; +        styleClassNames = [styleClassNames];

Heh, I hate this pattern.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:49
&gt; +        this._showNavigationSidebarItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, WebInspector.toggleNavigationSidebar, WebInspector);

WebInspector.toggleNavigationSidebar is not in this patch. It is a little weird that this needs to jump out to WebInspector though for toggling the navigation sidebar inside this Tab.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:65
&gt; +        this._showDetailsSidebarItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, WebInspector.toggleDetailsSidebar, WebInspector);

Same for &quot;toggleDetailsSidebar&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:109
&gt; +        WebInspector.navigationSidebar.removeEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange, this._navigationSidebarCollapsedStateDidChange, this);
&gt; +        WebInspector.detailsSidebar.addEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange, this._detailsSidebarCollapsedStateDidChange, this);

I think this second one should also be a remove event listener. Also the WebInspector.Sidebar.Event.SidebarPanelSelected event.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:194
&gt; +                var currentSidebarPanelIndex = currentSidebarPanels.indexOf(sidebarPanel);
&gt; +                if (currentSidebarPanelIndex !== -1) {

Nit: You can use includes here. The index is not important.

    if (currentSidebarPanels.includes(sidebarPanel))

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:215
&gt; +        this._ignoreDetailsSidebarPanelCollapsedEvent = true;

Would be nice to have this next to the other ignore.

&gt; Source/WebInspectorUI/UserInterface/Views/ElementsTabContentView.js:54
&gt; +        var mainFrame = WebInspector.frameResourceManager.mainFrame;
&gt; +        if (mainFrame)
&gt; +            this.contentBrowser.showContentViewForRepresentedObject(mainFrame.domTree);

Do you happen to know when we if check this? When will we not have a mainFrame? JSContext inspection?

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:233
&gt; +        if (!tabContentView)
&gt; +            return;
&gt; +
&gt; +        var navigationSidebarPanel = tabContentView.navigationSidebarPanel;
&gt; +        if (!navigationSidebarPanel) {
&gt; +            this._navigationSidebar.collapsed = true;
&gt; +            return;
&gt; +        }

These early returns will leave &quot;this._ignoreSidebarEvents&quot; in a bad state.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:267
&gt; +        if (!tabContentView)
&gt; +            return;
&gt; +
&gt; +        if (tabContentView.managesDetailsSidebarPanels) {
&gt; +            tabContentView.showDetailsSidebarPanels();
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        var detailsSidebarPanels = tabContentView.detailsSidebarPanels;
&gt; +        if (!detailsSidebarPanels) {
&gt; +            this._detailsSidebar.collapsed = true;
&gt; +            return;
&gt; +        }

Same here.

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:29
&gt; +    console.assert(typeof styleClassNames === &quot;string&quot; || styleClassNames.reduce(function(previousValue, className) { return previousValue &amp;&amp; typeof className === &quot;string&quot;; }, true));

Instead of the &quot;previousValue&quot; trick to carry a true/false all the way through, you can use Array.prototype.every:

    styleClassNames.every(function(className) { return typeof className === &quot;string&quot;; })

&gt; Source/WebInspectorUI/UserInterface/Views/TabContentView.js:32
&gt; +    console.assert(!detailsSidebarPanels || detailsSidebarPanels.reduce(function(previousValue, detailsSidebarPanel) { return previousValue &amp;&amp; detailsSidebarPanel instanceof WebInspector.DetailsSidebarPanel; }, true));

Same here. Note these will be excellent candidates for arrow functions when/if they land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088636</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-25 18:36:05 -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>251034</attachid>
            <date>2015-04-17 11:23:57 -0700</date>
            <delta_ts>2015-04-17 18:57:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143886-20150417112258.patch</filename>
            <type>text/plain</type>
            <size>61735</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MjVkZGEzMjNhYjIyY2Y5YTMzMThjOTdjODIyNWI1YjQyMGRiZGM0Li40MmIxYzk5MmZkNzg5YmEw
ZmUwOTU4NDk4YjQ0ZTMxNGY2NzFhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxNS0wNC0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIFRhYkJyb3dzZXIgYW5kIFRhYkNvbnRl
bnRWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDM4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczogVXBkYXRlZC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0RlYnVnZ2VyLnN2ZzogQWRkZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvRWxlbWVudHMuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0ltYWdlcy9HZWFyLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9JbWFnZXMvTmV3VGFiUGx1cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvSW1hZ2VzL1Jlc291cmNlcy5zdmc6CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFn
ZXMvVGltZWxpbmUuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9U
b2dnbGVMZWZ0U2lkZWJhci5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1h
Z2VzL1RvZ2dsZVJpZ2h0U2lkZWJhci5zdmc6IEFkZGVkLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNzczogQWRkZWQuCisgICAg
ICAgICguY29udGVudC1icm93c2VyLnRhYi5jb250ZW50LXZpZXcgPiAuY29udGVudC1icm93c2Vy
KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250
ZW50Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJU
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IGNvbnRlbnRCcm93c2VyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUuaGlkZGVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRl
bnRWaWV3LnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG1h
bmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5jb250ZW50QnJvd3NlclRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGV0
YWlsc1NpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuX2RldGFpbHNTaWRlYmFy
UGFuZWxTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRCcm93c2VyUmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJv
dG90eXBlLl9yZXZlYWxBbmRTZWxlY3RSZXByZXNlbnRlZE9iamVjdEluTmF2aWdhdGlvblNpZGVi
YXIpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRW
aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRW
aWV3KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50
Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuX21haW5GcmFtZURpZENoYW5nZSk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNldHRpbmdzVGFiQ29udGVudFZpZXcpOgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCcm93c2VyLmNzczogQWRkZWQuCisgICAgICAgICgudGFiLWJyb3dzZXIpOgor
ICAgICAgICAoLnRhYi1icm93c2VyID4gLnRhYi1iYXIpOgorICAgICAgICAoLnRhYi1icm93c2Vy
ID4gLmNvbnRlbnQtdmlldy1jb250YWluZXIpOgorICAgICAgICAoLnRhYi1icm93c2VyID4gLnRh
Yi1iYXIgKyAuY29udGVudC12aWV3LWNvbnRhaW5lcik6CisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYkJyb3dzZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRh
YkJyb3dzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIucHJvdG90eXBlLmdl
dCB0YWJCYXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJyb3dzZXIucHJvdG90eXBlLmdl
dCBuYXZpZ2F0aW9uU2lkZWJhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5w
cm90b3R5cGUuZ2V0IGRldGFpbHNTaWRlYmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJC
cm93c2VyLnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UYWJCcm93c2VyLnByb3RvdHlwZS5iZXN0VGFiQ29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90
b3R5cGUuYWRkVGFiRm9yQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYkJy
b3dzZXIucHJvdG90eXBlLnNob3dUYWJGb3JDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUuY2xvc2VUYWJGb3JDb250ZW50Vmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUuX3RhYkJhckl0ZW1TZWxlY3Rl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUuX3NpZGViYXJQ
YW5lbFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJCcm93c2VyLnByb3RvdHlw
ZS5fc2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJCcm93c2VyLnByb3RvdHlwZS5fc2hvd05hdmlnYXRpb25TaWRlYmFyUGFuZWxGb3JUYWJD
b250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5wcm90b3R5cGUu
X3Nob3dEZXRhaWxzU2lkZWJhclBhbmVsc0ZvclRhYkNvbnRlbnRWaWV3KToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanM6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHBhcmVudFRhYkJyb3dzZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zZXQgcGFyZW50VGFiQnJvd3Nlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdldCB0YWJC
YXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Z2V0IG1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiQ29udGVudFZpZXcucHJvdG90eXBlLnNob3dEZXRhaWxzU2lkZWJhclBhbmVscyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNhblNob3dSZXByZXNl
bnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLmdldCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
YWJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0
dGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdl
dCBkZXRhaWxzU2lkZWJhclBhbmVscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiQ29udGVu
dFZpZXcucHJvdG90eXBlLmdldCBkZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgZGV0YWlsc1Np
ZGViYXJTZWxlY3RlZFBhbmVsU2V0dGluZyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcpOgorCiAyMDE1LTA0LTA2ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYSBX
ZWJJbnNwZWN0b3IuVGFiQmFyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpp
bmRleCA2ZGFiMDJiMmI2YTMyYzRhOGMxN2JiMDI1NGU1MmM3ZGZiMmE5ZDNiLi5jNzRjOGNlOGVj
NmUxNzZiYmZiZGUwNzQwMjVjYmI4OThjZGY0OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKQEAgLTEyOSw2ICsxMjksNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJDb3B5IFBhdGgg
dG8gUHJvcGVydHkiXSA9ICJDb3B5IFBhdGggdG8gUHJvcGVydHkiOwogbG9jYWxpemVkU3RyaW5n
c1siQ29weSBSb3ciXSA9ICJDb3B5IFJvdyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb3B5IGFzIEhU
TUwiXSA9ICJDb3B5IGFzIEhUTUwiOwogbG9jYWxpemVkU3RyaW5nc1siQ291bGQgbm90IGZldGNo
IHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiJdID0gIkNvdWxkIG5vdCBm
ZXRjaCBwcm9wZXJ0aWVzLiBPYmplY3QgbWF5IG5vIGxvbmdlciBleGlzdC4iOworbG9jYWxpemVk
U3RyaW5nc1siQ3JlYXRlIGEgbmV3IHRhYiJdID0gIkNyZWF0ZSBhIG5ldyB0YWIiOwogbG9jYWxp
emVkU3RyaW5nc1siRE9NIFRyZWUiXSA9ICJET00gVHJlZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJE
YXRhIl0gPSAiRGF0YSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEYXRhIHJldHVybmVkIGZyb20gdGhl
IGRhdGFiYXNlIGlzIHRvbyBsYXJnZS4iXSA9ICJEYXRhIHJldHVybmVkIGZyb20gdGhlIGRhdGFi
YXNlIGlzIHRvbyBsYXJnZS4iOwpAQCAtMTk2LDYgKzE5Nyw3IEBAIGxvY2FsaXplZFN0cmluZ3Nb
IkVsZW1lbnQgaXMgYW5pbWF0ZWQiXSA9ICJFbGVtZW50IGlzIGFuaW1hdGVkIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkVsZW1lbnQgaXMgbWFza2VkIGFuZCBjb21wb3NpdGVkIGRlc2NlbmRhbnRzIl0g
PSAiRWxlbWVudCBpcyBtYXNrZWQgYW5kIGNvbXBvc2l0ZWQgZGVzY2VuZGFudHMiOwogbG9jYWxp
emVkU3RyaW5nc1siRWxlbWVudCBpcyB0aGUgcm9vdCBlbGVtZW50Il0gPSAiRWxlbWVudCBpcyB0
aGUgcm9vdCBlbGVtZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkVsZW1lbnQgb3ZlcmxhcHMgb3Ro
ZXIgY29tcG9zaXRpbmcgZWxlbWVudCJdID0gIkVsZW1lbnQgb3ZlcmxhcHMgb3RoZXIgY29tcG9z
aXRpbmcgZWxlbWVudCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJFbGVtZW50cyJdID0gIkVsZW1lbnRz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBCcmVha3BvaW50Il0gPSAiRW5hYmxlIEJyZWFr
cG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEJyZWFrcG9pbnRzIl0gPSAiRW5hYmxl
IEJyZWFrcG9pbnRzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBhbGwgYnJlYWtwb2ludHMg
KCVzKSJdID0gIkVuYWJsZSBhbGwgYnJlYWtwb2ludHMgKCVzKSI7CkBAIC0yNTIsNiArMjU0LDgg
QEAgbG9jYWxpemVkU3RyaW5nc1siSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyIl0gPSAiSGlk
ZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgdGhlICVz
IGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICgl
cykiOwogbG9jYWxpemVkU3RyaW5nc1siSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIl0g
PSAiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhp
ZGUgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIl0gPSAiSGlkZSB0aGUgJXMgbmF2aWdh
dGlvbiBzaWRlYmFyICglcykiOworbG9jYWxpemVkU3RyaW5nc1siSGlkZSB0aGUgZGV0YWlscyBz
aWRlYmFyICglcykiXSA9ICJIaWRlIHRoZSBkZXRhaWxzIHNpZGViYXIgKCVzKSI7Citsb2NhbGl6
ZWRTdHJpbmdzWyJIaWRlIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSJdID0gIkhpZGUgdGhl
IG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhpZGUgdHlwZSBp
bmZvcm1hdGlvbiJdID0gIkhpZGUgdHlwZSBpbmZvcm1hdGlvbiI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJIb3N0Il0gPSAiSG9zdCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJY29uIE9ubHkiXSA9ICJJY29u
IE9ubHkiOwpAQCAtNDI2LDYgKzQzMCw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlNlc3Npb24iXSA9
ICJTZXNzaW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNlc3Npb24gU3RvcmFnZSJdID0gIlNlc3Np
b24gU3RvcmFnZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTZXQgdG8gQXV0b21hdGljYWxseSBDb250
aW51ZSJdID0gIlNldCB0byBBdXRvbWF0aWNhbGx5IENvbnRpbnVlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlNldHRlciJdID0gIlNldHRlciI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTZXR0aW5ncyJdID0g
IlNldHRpbmdzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNoYWRvdyBDb250ZW50Il0gPSAiU2hhZG93
IENvbnRlbnQiOwogbG9jYWxpemVkU3RyaW5nc1siU2hhcmVkIEZvY3VzIl0gPSAiU2hhcmVkIEZv
Y3VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgQWxsIl0gPSAiU2hvdyBBbGwiOwpAQCAtNDQ0
LDYgKzQ0OSw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdGhlICVzIGRldGFpbHMgc2lkZWJh
ciJdID0gIlNob3cgdGhlICVzIGRldGFpbHMgc2lkZWJhciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aG93IHRoZSAlcyBkZXRhaWxzIHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhlICVzIGRldGFpbHMg
c2lkZWJhciAoJXMpIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgdGhlICVzIG5hdmlnYXRpb24g
c2lkZWJhciJdID0gIlNob3cgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJTaG93IHRoZSAlcyBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSJdID0gIlNob3cgdGhl
ICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgdGhl
IGRldGFpbHMgc2lkZWJhciAoJXMpIl0gPSAiU2hvdyB0aGUgZGV0YWlscyBzaWRlYmFyICglcyki
OworbG9jYWxpemVkU3RyaW5nc1siU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiXSA9
ICJTaG93IHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
aG93IHR5cGUgaW5mb3JtYXRpb24iXSA9ICJTaG93IHR5cGUgaW5mb3JtYXRpb24iOwogbG9jYWxp
emVkU3RyaW5nc1siU2l6ZSJdID0gIlNpemUiOwogbG9jYWxpemVkU3RyaW5nc1siU21hbGwgSWNv
bnMiXSA9ICJTbWFsbCBJY29ucyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbWFnZXMvRGVidWdnZXIuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0RlYnVnZ2VyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2I3YTZkMTE4
YzlkNDc2OTY4NWQxNWNjNGRkMDM3MzJhZmJhODAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0RlYnVnZ2VyLnN2ZwpAQCAtMCww
ICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBD
b3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2
ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4KKyAgICA8cGF0aCBkPSJNIDguMDQ1NDU0NTUgMTUgQyAxMC44MDY4Nzg0
IDE1IDEzLjA0NTQ1NDUgMTEuODY1OTkzNCAxMy4wNDU0NTQ1IDggQyAxMy4wNDU0NTQ1IDQuMTM0
MDA2NTYgMTAuODA2ODc4NCAxIDguMDQ1NDU0NTUgMSBDIDUuMjg0MDMwNjYgMSAzLjA0NTQ1NDU1
IDQuMTM0MDA2NTYgMy4wNDU0NTQ1NSA4IEMgMy4wNDU0NTQ1NSAxMS44NjU5OTM0IDUuMjg0MDMw
NjYgMTUgOC4wNDU0NTQ1NSAxNSBaIiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gMy41IDQuNSBMIDEyLjUgNC41IiBjbGFzcz0ic3Ry
b2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gOCA0LjUg
TCA4IDE1IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAg
IDxwYXRoIGQ9Ik0gMTEuNSAxMi41IEwgMTMuNSAxNC41IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gMTMgOCBMIDE1IDgiIGNsYXNz
PSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSAz
IDggTCAxIDgiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cisg
ICAgPHBhdGggZD0iTSA0LjUgMTIuNSBMIDIuNSAxNC41IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gNC41IDMuNSBMIDIuNSAxLjUi
IGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGgg
ZD0iTSAxMS41IDMuNSBMIDEzLjUgMS41IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbWFnZXMvRWxlbWVudHMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0VsZW1lbnRzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yjk3M2I5M2Ez
NGIxYjc4NzgyNmMwY2NhNTVkYjNjOGNhMDU2MGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0VsZW1lbnRzLnN2ZwpAQCAtMCww
ICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENv
cHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3Zn
IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPgorICAgIDxyZWN0IHg9IjEuNSIgeT0iMS41IiB3aWR0aD0iMTMiIGhlaWdo
dD0iNSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8
cGF0aCBkPSJNIDExLjUgNi41IEwgMTEuNSAxMC41IiBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0gNC41IDYuNSBMIDQuNSAxMC41IiBj
bGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxyZWN0IHg9
IjkuNSIgeT0iMTAuNSIgd2lkdGg9IjUiIGhlaWdodD0iNCIgY2xhc3M9InN0cm9rZWQiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cmVjdCB4PSIxLjUiIHk9IjEwLjUiIHdpZHRo
PSI1IiBoZWlnaHQ9IjQiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNr
Ii8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9HZWFyLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9HZWFyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjNkODA1ZDIwN2E4OWFjN2M4ZDg0Y2Q0NDIw
ZTIyNjJlM2IzNTRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL0dlYXIuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmlld0JveD0iMCAwIDE1IDE1IiB2
ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHBh
dGggZD0iTSA3LjUwMDkgMTQgQyA4LjMyNTkgMTQgOS4wMDA5IDEzLjMyNSA5LjAwMTkgMTIuNSBM
IDkuMDAwOSAxMS43MjUgQyA5LjE0NzkgMTEuNjczIDkuMjkwOSAxMS42MTYgOS40Mjk5IDExLjU1
MSBMIDEwLjE3NTkgMTIuMjk4IEMgMTAuNzU5OSAxMi44ODEgMTEuNzE0OSAxMi44OCAxMi4yOTY5
IDEyLjI5NyBDIDEyLjU4OTkgMTIuMDA1IDEyLjczNDkgMTEuNjE5IDEyLjczNDkgMTEuMjM1IEMg
MTIuNzM0OSAxMC44NTIgMTIuNTg5OSAxMC40NjcgMTIuMjk3OSAxMC4xNzUgTCAxMS41NTE5IDku
NDI5IEMgMTEuNjE3OSA5LjI4OSAxMS42NzM5IDkuMTQ2IDExLjcyNTkgOSBMIDEyLjUwMDkgOC45
OTkgQyAxMy4zMjU5IDkgMTQuMDAwOSA4LjMyNSAxNC4wMDA5IDcuNSBDIDE0LjAwMDkgNi42NzQg
MTMuMzI1OSA2IDEyLjUwMDkgNS45OTkgTCAxMS43MjU5IDYgQyAxMS42NzM5IDUuODUzIDExLjYx
NzkgNS43MSAxMS41NTE5IDUuNTcxIEwgMTIuMjk3OSA0LjgyNSBDIDEyLjU4ODkgNC41MzMgMTIu
NzM0OSA0LjE0OCAxMi43MzQ5IDMuNzY0IEMgMTIuNzM0OSAzLjM3OSAxMi41ODk5IDIuOTk1IDEy
LjI5ODkgMi43MDQgQyAxMS43MTQ5IDIuMTE5IDEwLjc1OTkgMi4xMTkgMTAuMTc2OSAyLjcwMiBM
IDkuNDI5OSAzLjQ0OSBDIDkuMjg5OSAzLjM4MiA5LjE0NzkgMy4zMjcgOS4wMDA5IDMuMjc1IEwg
OS4wMDA5IDIuNDk5IEMgOS4wMDA5IDEuNjc0IDguMzI1OSAwLjk5OSA3LjUwMDkgMC45OTkgQyA2
LjY3NTkgMC45OTkgNi4wMDA5IDEuNjc0IDYuMDAwOSAyLjQ5OSBMIDYuMDAwOSAzLjI3NSBDIDUu
ODU0OSAzLjMyNyA1LjcxMDkgMy4zODMgNS41NzA5IDMuNDQ5IEwgNC44MjQ5IDIuNzAzIEMgNC4y
NDE5IDIuMTIgMy4yODY5IDIuMTIgMi43MDM5IDIuNzAzIEMgMi40MTE5IDIuOTk1IDIuMjY1OSAz
LjM3OSAyLjI2NTkgMy43NjMgQyAyLjI2NTkgNC4xNDggMi40MTE5IDQuNTMyIDIuNzAyOSA0Ljgy
NCBMIDMuNDQ5OSA1LjU3MSBDIDMuMzgzOSA1LjcxIDMuMzI4OSA1Ljg1MyAzLjI3NTkgNiBMIDIu
NTAwOSA1Ljk5OSBDIDEuNjc1OSA2IDEuMDAwOSA2LjY3NCAxLjAwMDkgNy41IEMgMS4wMDA5IDgu
MzI1IDEuNjc1OSA5IDIuNTAwOSA5IEwgMy4yNzU5IDkgQyAzLjMyNzkgOS4xNDYgMy4zODM5IDku
Mjg5IDMuNDQ5OSA5LjQyOSBMIDIuNzAzOSAxMC4xNzUgQyAyLjQxMTkgMTAuNDY3IDIuMjY0OSAx
MC44NTIgMi4yNjU5IDExLjIzNiBDIDIuMjY0OSAxMS42MjEgMi40MTI5IDEyLjAwNiAyLjcwMjkg
MTIuMjk2IEMgMy4yODY5IDEyLjg4IDQuMjQxOSAxMi44OCA0LjgyNDkgMTIuMjk3IEwgNS41NzE5
IDExLjU1MSBDIDUuNzEwOSAxMS42MTYgNS44NTM5IDExLjY3MyA2LjAwMDkgMTEuNzI1IEwgNS45
OTk5IDEyLjUgQyA2LjAwMDkgMTMuMzI1IDYuNjc1OSAxNCA3LjUwMDkgMTQgWiIgY2xhc3M9InN0
cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4KKyAgICA8cGF0aCBkPSJNIDcuNSA1
LjYgQyA4LjU0OCA1LjYgOS40IDYuNDUyIDkuNCA3LjUgQyA5LjQgOC41NDggOC41NDggOS40IDcu
NSA5LjQgQyA2LjQ1MiA5LjQgNS42IDguNTQ4IDUuNiA3LjUgQyA1LjYgNi40NTIgNi40NTIgNS42
IDcuNSA1LjYiIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9OZXdUYWJQbHVzLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9OZXdUYWJQbHVzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjJiNWQ2Y2UxNTQ2YmMxNmNjYmYx
YWI5NWM5MjEwZTVjMTUzZTVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL05ld1RhYlBsdXMuc3ZnCkBAIC0wLDAgKzEsNSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmlld0JveD0i
MCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgPHBhdGggZD0iTSA4IDIgTCA4IDEzIE0gMi41IDcuNSBMIDEzLjUgNy41IiBjbGFz
cz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvUmVzb3VyY2Vz
LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9SZXNvdXJj
ZXMuc3ZnCmluZGV4IGI1NjEyNmZkZTA2YjI5YzJlZWQ2ZmQ5MTFjODg1ZDFhZWJlYjRhNDkuLjI3
YjcwODI0ZmEyOTRjZTQzMzVjYTdjN2U3MTVmNDljODBmMGY5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9SZXNvdXJjZXMuc3ZnCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9SZXNvdXJjZXMuc3Zn
CkBAIC0xLDYgKzEsNiBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
LTwhLS0gQ29weXJpZ2h0IMKpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAt
LT4KLTxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHZpZXdCb3g9IjAgMCAxNiAxNiI+Ci0gICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFj
ayIgZD0iTSAzLjUgMi41IEwgMy41IDEzLjUgTCAxMi41IDEzLjUgTCAxMi41IDUuNSBMIDkuNSAy
LjUgTCAzLjUgMi41IFogIi8+Ci0gICAgPHBhdGggZD0iTSA5IDQgTCA5IDYgTCAxMSA2IEwgOSA0
IFogIi8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxwYXRoIGQ9Ik0gMi41IDEuNSBMIDIu
NSAxNC41IEwgMTMuNSAxNC41IEwgMTMuNSA1LjUgTCA5LjUgMS41IEwgMi41IDEuNSBaIiBjbGFz
cz0ic3Ryb2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIvPgorICAgIDxwYXRoIGQ9Ik0g
OS4wIDMuMCBMIDkuMCA2LjAgTCAxMi4wIDYuMCBaIiBjbGFzcz0iZmlsbGVkIiBmaWxsPSJibGFj
ayIvPgogPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvVGltZWxpbmUuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1RpbWVsaW5lLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDIwMmUwZDhiYjAyNzExMTZm
NWJlZGMzODM5NjgxN2IyYTFmOTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RpbWVsaW5lLnN2ZwpAQCAtMCwwICsxLDYgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDC
qSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9
IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgIDxjaXJjbGUgY3g9IjgiIGN5PSI4IiByPSI3LjUiIGNsYXNzPSJzdHJva2VkIiBm
aWxsPSJub25lIiBzdHJva2U9ImJsYWNrIi8+CisgICAgPHBhdGggZD0iTSA4LjUgMyBMIDguNSA4
LjUgTCA1IDguNSIgY2xhc3M9InN0cm9rZWQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siLz4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFyLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0ltYWdlcy9Ub2dnbGVMZWZ0U2lkZWJhci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQzNTZm
MWRmMTVkNmI5MzRjNDdmMjM1NWQ2Y2FjYjIwYTZkMTEzNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Ub2dnbGVMZWZ0U2lkZWJh
ci5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIC0tPgorPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8cmVjdCBjbGFzcz0ic3Ryb2tlZCIgc3Ry
b2tlPSJibGFjayIgZmlsbD0ibm9uZSIgeD0iMi41IiB5PSIxLjUiIHdpZHRoPSIxMSIgaGVpZ2h0
PSIxMyIvPgorICAgIDxyZWN0IGNsYXNzPSJmaWxsZWQiIGZpbGw9ImJsYWNrIiB4PSI0IiB5PSIz
IiB3aWR0aD0iMiIgaGVpZ2h0PSIxMCIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVG9nZ2xlUmlnaHRTaWRlYmFyLnN2ZyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Ub2dnbGVSaWdodFNp
ZGViYXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNzYzMjZlNGM3ZjFlNTgzMzIzY2ZlZWM3NWQyMmZkNTIz
NjU0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvVG9nZ2xlUmlnaHRTaWRlYmFyLnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9IjAgMCAx
NiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgor
ICAgIDxyZWN0IGNsYXNzPSJzdHJva2VkIiBzdHJva2U9ImJsYWNrIiBmaWxsPSJub25lIiB4PSIy
LjUiIHk9IjEuNSIgd2lkdGg9IjExIiBoZWlnaHQ9IjEzIi8+CisgICAgPHJlY3QgY2xhc3M9ImZp
bGxlZCIgZmlsbD0iYmxhY2siIHg9IjEwIiB5PSIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIxMCIvPgor
PC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlOWM2YjNjMGZkNDlmZGZiYTgyY2QxN2M4ODI5M2FiMWUyZWQ5YjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNzcwpAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLmNvbnRlbnQtYnJvd3Nlci50YWIuY29udGVudC12aWV3ID4gLmNvbnRlbnQtYnJv
d3NlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAw
OworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYWQ5MGEyZWVhODViZmQ2
NjJkNDJkZDM1NDMzODkwNmUyYWEyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
LmpzCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBzdHlsZUNsYXNzTmFt
ZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDbGFzcywgZGV0YWlsc1NpZGVi
YXJQYW5lbHMsIGRpc2FibGVCYWNrRm9yd2FyZCkKK3sKKyAgICBpZiAodHlwZW9mIHN0eWxlQ2xh
c3NOYW1lcyA9PT0gInN0cmluZyIpCisgICAgICAgIHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNs
YXNzTmFtZXNdOworCisgICAgc3R5bGVDbGFzc05hbWVzLnB1c2goImNvbnRlbnQtYnJvd3NlciIp
OworCisgICAgdmFyIGNvbnRlbnRCcm93c2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3NlcihudWxsLCB0aGlzLCBkaXNhYmxlQmFja0ZvcndhcmQpOworICAgIHZhciBuYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gbmF2aWdhdGlvblNpZGViYXJQYW5lbENsYXNzID8gbmV3IG5hdmlnYXRp
b25TaWRlYmFyUGFuZWxDbGFzcyhjb250ZW50QnJvd3NlcikgOiBudWxsOworCisgICAgV2ViSW5z
cGVjdG9yLlRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRlbnRpZmllciwgc3R5bGVDbGFzc05h
bWVzLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBh
bmVscyk7CisKKyAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1sYXN0LXNlbGVjdGVk
LWRldGFpbHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOworCisgICAgdGhpcy5fY29udGVudEJyb3dz
ZXIgPSBjb250ZW50QnJvd3NlcjsKKyAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50UmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlclJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZSwgdGhpcyk7CisgICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3
RGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSwgdGhpcyk7CisKKyAgICBpZiAobmF2aWdhdGlvblNpZGViYXJQYW5lbCkgeworICAgICAgICB2
YXIgc2hvd1Rvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIG5hdmlnYXRp
b24gc2lkZWJhciAoJXMpIikuZm9ybWF0KFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhcktl
eWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOworICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIiku
Zm9ybWF0KFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhcktleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUpOworCisgICAgICAgIHRoaXMuX3Nob3dOYXZpZ2F0aW9uU2lkZWJhckl0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInRvZ2dsZS1uYXZp
Z2F0aW9uLXNpZGViYXIiLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsICJJbWFnZXMvVG9nZ2xl
TGVmdFNpZGViYXIuc3ZnIiwgMTYsIDE2KTsKKyAgICAgICAgdGhpcy5fc2hvd05hdmlnYXRpb25T
aWRlYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCBXZWJJbnNwZWN0b3IudG9nZ2xlTmF2aWdhdGlvblNpZGViYXIs
IFdlYkluc3BlY3Rvcik7CisgICAgICAgIHRoaXMuX3Nob3dOYXZpZ2F0aW9uU2lkZWJhckl0ZW0u
YWN0aXZhdGVkID0gIVdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQ7CisK
KyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0
aW9uSXRlbSh0aGlzLl9zaG93TmF2aWdhdGlvblNpZGViYXJJdGVtLCAwKTsKKyAgICAgICAgdGhp
cy5fY29udGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbShuZXcg
V2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSwgMSk7CisKKyAgICAgICAgbmF2aWdh
dGlvblNpZGViYXJQYW5lbC5jb250ZW50QnJvd3NlciA9IHRoaXMuX2NvbnRlbnRCcm93c2VyOwor
CisgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
Ll9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICB9
CisKKyAgICBpZiAoZGV0YWlsc1NpZGViYXJQYW5lbHMgJiYgZGV0YWlsc1NpZGViYXJQYW5lbHMu
bGVuZ3RoKSB7CisgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLmRl
dGFpbHNTaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIHZhciBo
aWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgZGV0YWlscyBzaWRl
YmFyICglcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyS2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7CisKKyAgICAgICAgdGhpcy5fc2hvd0RldGFpbHNTaWRlYmFySXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgidG9nZ2xl
LWRldGFpbHMtc2lkZWJhciIsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwgIkltYWdlcy9Ub2dn
bGVSaWdodFNpZGViYXIuc3ZnIiwgMTYsIDE2KTsKKyAgICAgICAgdGhpcy5fc2hvd0RldGFpbHNT
aWRlYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCBXZWJJbnNwZWN0b3IudG9nZ2xlRGV0YWlsc1NpZGViYXIsIFdl
Ykluc3BlY3Rvcik7CisgICAgICAgIHRoaXMuX3Nob3dEZXRhaWxzU2lkZWJhckl0ZW0uYWN0aXZh
dGVkID0gIVdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhci5jb2xsYXBzZWQ7CisgICAgICAgIHRo
aXMuX3Nob3dEZXRhaWxzU2lkZWJhckl0ZW0uZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIHRo
aXMuX2NvbnRlbnRCcm93c2VyLm5hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0obmV3IFdl
Ykluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0pOworICAgICAgICB0aGlzLl9jb250ZW50
QnJvd3Nlci5uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3Nob3dEZXRhaWxz
U2lkZWJhckl0ZW0pOworCisgICAgICAgIFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMuX2Rl
dGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7CisgICAgfQorCisgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRCcm93c2VyLmVsZW1lbnQpOworfTsKKworV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldywK
KyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUsCisK
KyAgICAvLyBQdWJsaWMKKworICAgIGdldCBjb250ZW50QnJvd3NlcigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fY29udGVudEJyb3dzZXI7CisgICAgfSwKKworICAgIHNob3duOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLnNob3duLmNhbGwodGhpcyk7CisKKyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuc2hv
d24oKTsKKyAgICB9LAorCisgICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBX
ZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwor
CisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmhpZGRlbigpOworICAgIH0sCisKKyAgICBj
bG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5UYWJDb250ZW50
Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9y
Lm5hdmlnYXRpb25TaWRlYmFyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGVi
YXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX25hdmlnYXRpb25TaWRlYmFy
Q29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGV0
YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5D
b2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTdGF0
ZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuY29udGVu
dFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3MoKTsKKyAgICB9LAorCisgICAgdXBk
YXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuVGFiQ29u
dGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOworCisgICAgICAgIHRo
aXMuX2NvbnRlbnRCcm93c2VyLnVwZGF0ZUxheW91dCgpOworICAgIH0sCisKKyAgICBnZXQgbWFu
YWdlc0RldGFpbHNTaWRlYmFyUGFuZWxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0sCisKKyAgICBzaG93RGV0YWlsc1NpZGViYXJQYW5lbHM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
KCk7CisgICAgfSwKKworICAgIC8vIENvbnRlbnRCcm93c2VyIERlbGVnYXRlCisKKyAgICBjb250
ZW50QnJvd3NlclRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKGNvbnRl
bnRCcm93c2VyLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm5h
dmlnYXRpb25TaWRlYmFyUGFuZWwpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRP
YmplY3QpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX25hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2hvd05hdmlnYXRpb25TaWRlYmFySXRlbS5hY3RpdmF0
ZWQgPSAhV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLmNvbGxhcHNlZDsKKyAgICB9LAor
CisgICAgX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fc2hvd0RldGFpbHNTaWRlYmFySXRlbS5hY3RpdmF0ZWQgPSAh
V2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLmNvbGxhcHNlZDsKKyAgICAgICAgdGhpcy5fc2hv
d0RldGFpbHNTaWRlYmFySXRlbS5lbmFibGVkID0gV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFy
LnNpZGViYXJQYW5lbHMubGVuZ3RoOworCisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVEZXRhaWxz
U2lkZWJhclBhbmVsQ29sbGFwc2VkRXZlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcudmFsdWUgPSBXZWJJbnNwZWN0
b3IuZGV0YWlsc1NpZGViYXIuY29sbGFwc2VkOworICAgIH0sCisKKyAgICBfZGV0YWlsc1NpZGVi
YXJQYW5lbFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Nob3dEZXRh
aWxzU2lkZWJhckl0ZW0uZW5hYmxlZCA9IFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhci5zaWRl
YmFyUGFuZWxzLmxlbmd0aDsKKworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZXRhaWxzU2lk
ZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCB8fCB0aGlzLl9pZ25vcmVEZXRhaWxzU2lkZWJhclBh
bmVsU2VsZWN0ZWRFdmVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9s
YXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5kZXRhaWxzU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbC5pZGVudGlmaWVyOworICAgIH0s
CisKKyAgICBfY29udGVudEJyb3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHZhciBjdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzID0gdGhpcy5fY29u
dGVudEJyb3dzZXIuY3VycmVudFJlcHJlc2VudGVkT2JqZWN0czsKKyAgICAgICAgdmFyIGN1cnJl
bnRTaWRlYmFyUGFuZWxzID0gV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLnNpZGViYXJQYW5l
bHM7CisgICAgICAgIHZhciB3YXNTaWRlYmFyRW1wdHkgPSAhY3VycmVudFNpZGViYXJQYW5lbHMu
bGVuZ3RoOworCisgICAgICAgIC8vIElnbm9yZSBhbnkgY2hhbmdlcyB0byB0aGUgc2VsZWN0ZWQg
c2lkZWJhciBwYW5lbCBkdXJpbmcgdGhpcyBmdW5jdGlvbiBzbyBvbmx5IHVzZXIgaW5pdGlhdGVk
CisgICAgICAgIC8vIGNoYW5nZXMgYXJlIHJlY29yZGVkIGluIF9sYXN0U2VsZWN0ZWREZXRhaWxz
U2lkZWJhclBhbmVsU2V0dGluZy4KKyAgICAgICAgdGhpcy5faWdub3JlRGV0YWlsc1NpZGViYXJQ
YW5lbFNlbGVjdGVkRXZlbnQgPSB0cnVlOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5kZXRhaWxzU2lkZWJhclBhbmVscy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IHNpZGViYXJQYW5lbCA9IHRoaXMuZGV0YWlsc1NpZGViYXJQYW5lbHNbaV07CisgICAgICAgICAg
ICBpZiAoc2lkZWJhclBhbmVsLmluc3BlY3QoY3VycmVudFJlcHJlc2VudGVkT2JqZWN0cykpIHsK
KyAgICAgICAgICAgICAgICB2YXIgY3VycmVudFNpZGViYXJQYW5lbEluZGV4ID0gY3VycmVudFNp
ZGViYXJQYW5lbHMuaW5kZXhPZihzaWRlYmFyUGFuZWwpOworICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50U2lkZWJhclBhbmVsSW5kZXggIT09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEFscmVhZHkgc2hvd2luZyB0aGUgcGFuZWwuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBzaWRlYmFyIHBh
bmVsIHdhcyBub3QgcHJldmlvdXNseSBzaG93aW5nLCBzbyBhZGQgdGhlIHBhbmVsLgorICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhci5hZGRTaWRlYmFyUGFuZWwoc2lk
ZWJhclBhbmVsKTsKKworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9sYXN0U2VsZWN0ZWREZXRh
aWxzU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9PT0gc2lkZWJhclBhbmVsLmlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgc2lkZWJhciBwYW5lbCBzZWxl
Y3Rpb24gaWYgdGhpcyBzaWRlYmFyIHBhbmVsIHdhcyB0aGUgbGFzdCBvbmUgc2VsZWN0ZWQgYnkg
dGhlIHVzZXIuCisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsc1NpZGViYXIuc2VsZWN0
ZWRTaWRlYmFyUGFuZWwgPSBzaWRlYmFyUGFuZWw7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc2lkZWJhciBwYW5lbCBjYW4n
dCBpbnNwZWN0IHRoZSBjdXJyZW50IHJlcHJlc2VudGVkIG9iamVjdHMsIHNvIHJlbW92ZSB0aGUg
cGFuZWwgYW5kIGhpZGUgdGhlIHRvb2xiYXIgaXRlbS4KKyAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZGV0YWlsc1NpZGViYXIucmVtb3ZlU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZXRh
aWxzU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCAmJiBjdXJyZW50U2lkZWJhclBhbmVscy5s
ZW5ndGgpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGV0YWlsc1NpZGViYXIuc2VsZWN0ZWRT
aWRlYmFyUGFuZWwgPSBjdXJyZW50U2lkZWJhclBhbmVsc1swXTsKKworICAgICAgICB0aGlzLl9p
Z25vcmVEZXRhaWxzU2lkZWJhclBhbmVsQ29sbGFwc2VkRXZlbnQgPSB0cnVlOworCisgICAgICAg
IGlmICghV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLnNpZGViYXJQYW5lbHMubGVuZ3RoKQor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLmNvbGxhcHNlZCA9IHRydWU7
CisgICAgICAgIGVsc2UgaWYgKHdhc1NpZGViYXJFbXB0eSkKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZXRhaWxzU2lkZWJhci5jb2xsYXBzZWQgPSB0aGlzLmRldGFpbHNTaWRlYmFyQ29sbGFw
c2VkU2V0dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9pZ25vcmVEZXRhaWxzU2lkZWJhclBh
bmVsQ29sbGFwc2VkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faWdub3JlRGV0YWlsc1Np
ZGViYXJQYW5lbFNlbGVjdGVkRXZlbnQgPSBmYWxzZTsKKworICAgICAgICB0aGlzLl9zaG93RGV0
YWlsc1NpZGViYXJJdGVtLmVuYWJsZWQgPSBXZWJJbnNwZWN0b3IuZGV0YWlsc1NpZGViYXIuc2lk
ZWJhclBhbmVscy5sZW5ndGg7CisgICAgfSwKKworICAgIF9jb250ZW50QnJvd3NlckN1cnJlbnRD
b250ZW50Vmlld0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
Y3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRW
aWV3OworICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3RSZXByZXNlbnRlZE9iamVjdEluTmF2
aWdhdGlvblNpZGViYXIoY3VycmVudENvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAg
ICB9LAorCisgICAgX3JldmVhbEFuZFNlbGVjdFJlcHJlc2VudGVkT2JqZWN0SW5OYXZpZ2F0aW9u
U2lkZWJhcjogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMubmF2aWdhdGlvblNpZGViYXJQYW5lbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBJZiBhIHRyZWUgb3V0bGluZSBpcyBwcm9jZXNzaW5nIGEgc2VsZWN0aW9uIGN1cnJl
bnRseSB0aGVuIHdlIGNhbiBhc3N1bWUgdGhlIHNlbGVjdGlvbiBkb2VzIG5vdAorICAgICAgICAv
LyBuZWVkIHRvIGJlIGNoYW5nZWQuIFRoaXMgaXMgbmVlZGVkIHRvIGFsbG93IGJyZWFrcG9pbnQg
YW5kIGNhbGwgZnJhbWUgdHJlZSBlbGVtZW50cyB0byBiZSBzZWxlY3RlZAorICAgICAgICAvLyB3
aXRob3V0IGp1bXBpbmcgYmFjayB0byBzZWxlY3RpbmcgdGhlIHJlc291cmNlIHRyZWUgZWxlbWVu
dC4KKyAgICAgICAgZm9yICh2YXIgY29udGVudFRyZWVPdXRsaW5lIG9mIHRoaXMubmF2aWdhdGlv
blNpZGViYXJQYW5lbC52aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcykgeworICAgICAgICAgICAg
aWYgKGNvbnRlbnRUcmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9
IHRoaXMubmF2aWdhdGlvblNpZGViYXJQYW5lbC50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICBpZiAodHJlZUVsZW1lbnQpCisgICAg
ICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNvbnRl
bnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
LmRlc2VsZWN0KHRydWUpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50
Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wM2ZiYjgwMmVmNzNlNTlkZDIwNTZlOTEyOTQ2MTZjY2M2Mzlk
ZmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihp
ZGVudGlmaWVyKQoreworICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJC
YXJJdGVtKCJJbWFnZXMvRGVidWdnZXIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1
Z2dlciIpKTsKKyAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJl
c291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKwor
ICAgIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywg
aWRlbnRpZmllciB8fCAiZGVidWdnZXIiLCAiZGVidWdnZXIiLCB0YWJCYXJJdGVtLCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKK307CisK
K1dlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcsCisgICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWQ4ZTkzOWQ3YzIxM2ExZTIxZmU2ZTBmZjI3OGExZDliMjhjMGExYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFi
Q29udGVudFZpZXcuanMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oaWRlbnRpZmllcikKK3sKKyAgICB2
YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL0VsZW1l
bnRzLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWxlbWVudHMiKSk7CisgICAgdmFyIGRl
dGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1NpZGViYXJQ
YW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF07CisKKyAgICBp
ZiAodGhpcy5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKQorICAgICAgICBkZXRhaWxzU2lk
ZWJhclBhbmVscy5wdXNoKHRoaXMubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCk7CisKKyAg
ICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5jYWxsKHRoaXMsIGlk
ZW50aWZpZXIgfHwgImVsZW1lbnRzIiwgImVsZW1lbnRzIiwgdGFiQmFySXRlbSwgbnVsbCwgZGV0
YWlsc1NpZGViYXJQYW5lbHMsIHRydWUpOworCisgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5h
Z2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0
aGlzKTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZy
YW1lKQorICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJl
c2VudGVkT2JqZWN0KFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUu
ZG9tVHJlZSk7Cit9OworCitXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRl
bnRWaWV3LAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29u
dGVudFZpZXcucHJvdG90eXBlLAorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX21haW5GcmFtZURp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmNvbnRlbnRCcm93
c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CisKKyAgICAg
ICAgdmFyIG1haW5GcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWlu
RnJhbWU7CisgICAgICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLmNvbnRlbnRC
cm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KG1haW5GcmFtZS5kb21U
cmVlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NTVkMjMyZTE5NzFhZThiNGI0OTc0MjJhNjJlODAzMmEzZmE5MjUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZp
ZXIpCit7CisgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0o
IkltYWdlcy9SZXNvdXJjZXMuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMi
KSk7CisgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlRGV0YWls
c1NpZGViYXJQYW5lbCwKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRhaWxzU2lk
ZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKworICAg
IFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRl
bnRpZmllciB8fCAicmVzb3VyY2VzIiwgInJlc291cmNlcyIsIHRhYkJhckl0ZW0sIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOworfTsKKwor
V2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKKyAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LAorICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZhZDU0N2VkNDdlZmY4MTEzM2FkYzlhMDFmY2JkYjY5MGNjNGEwMGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1Rh
YkNvbnRlbnRWaWV3LmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0
b3IuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCit7CisgICAg
dmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9HZWFy
LnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2V0dGluZ3MiKSwgdHJ1ZSk7CisKKyAgICBX
ZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVudGlmaWVyIHx8ICJzZXR0
aW5ncyIsICJzZXR0aW5ncyIsIHRhYkJhckl0ZW0pOworfTsKKworV2ViSW5zcGVjdG9yLlNldHRp
bmdzVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuU2V0dGluZ3NUYWJDb250ZW50VmlldywKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5jc3MgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTc5YjcyZTQ3ZGM3NmYyNTk5Y2YyY2JhZjFkNmFiZDNkMjliNDFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nl
ci5jc3MKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy50YWItYnJvd3NlciB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKKy50YWItYnJv
d3NlciA+IC50YWItYmFyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7Cit9CisKKy50YWItYnJvd3NlciA+IC5jb250ZW50
LXZpZXctY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworfQorCisudGFiLWJy
b3dzZXIgPiAudGFiLWJhciArIC5jb250ZW50LXZpZXctY29udGFpbmVyIHsKKyAgICB0b3A6IDMx
cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGFiQnJvd3Nlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODcxODljMzcwMzk0NmJkMjI4YTU2ODVl
MTVjNzQwZWUyZDY3Njg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwpAQCAtMCwwICsxLDI4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCB0YWJC
YXIsIG5hdmlnYXRpb25TaWRlYmFyLCBkZXRhaWxzU2lkZWJhcikKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
dGFiLWJyb3dzZXIiKTsKKworICAgICAgICB0aGlzLl90YWJCYXIgPSB0YWJCYXIgfHwgbmV3IFdl
Ykluc3BlY3Rvci5UYWJCYXI7CisgICAgICAgIGlmICghdGFiQmFyKQorICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90YWJCYXIuZWxlbWVudCk7CisKKyAgICAgICAg
dGhpcy5fbmF2aWdhdGlvblNpZGViYXIgPSBuYXZpZ2F0aW9uU2lkZWJhciB8fCBudWxsOworICAg
ICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhciA9IGRldGFpbHNTaWRlYmFyIHx8IG51bGw7CisKKyAg
ICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25TaWRlYmFyKQorICAgICAgICAgICAgdGhpcy5fbmF2
aWdhdGlvblNpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVu
dC5Db2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fc2lkZWJhckNvbGxhcHNlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzKTsKKworICAgICAgICBpZiAodGhpcy5fZGV0YWlsc1NpZGViYXIpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNpZGViYXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3NpZGViYXJD
b2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9kZXRhaWxz
U2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LlNpZGVi
YXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9zaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVudCk7CisKKyAgICAgICAgdGhp
cy5fdGFiQmFyLm5ld1RhYkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0ocGxhdGZv
cm1JbWFnZVBhdGgoIk5ld1RhYlBsdXMuc3ZnIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3Jl
YXRlIGEgbmV3IHRhYiIpLCB0cnVlKTsKKworICAgICAgICB0aGlzLl90YWJCYXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1TZWxlY3RlZCwgdGhp
cy5fdGFiQmFySXRlbVNlbGVjdGVkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZWNlbnRUYWJD
b250ZW50Vmlld3MgPSBbXTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0YWJC
YXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkJhcjsKKyAgICB9CisKKyAgICBn
ZXQgbmF2aWdhdGlvblNpZGViYXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25hdmln
YXRpb25TaWRlYmFyOworICAgIH0KKworICAgIGdldCBkZXRhaWxzU2lkZWJhcigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc1NpZGViYXI7CisgICAgfQorCisgICAgZ2V0IHNl
bGVjdGVkVGFiQ29udGVudFZpZXcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKKyAgICB9CisKKyAgICB1cGRhdGVM
YXlvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fdGFiQmFyLnVwZGF0ZUxheW91dCgpOworICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci51cGRhdGVMYXlvdXQoKTsKKyAgICB9CisK
KyAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9i
amVjdCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIHRhYkNvbnRlbnRWaWV3IG9mIHRoaXMuX3Jl
Y2VudFRhYkNvbnRlbnRWaWV3cykgeworICAgICAgICAgICAgaWYgKHRhYkNvbnRlbnRWaWV3LmNh
blNob3dSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRhYkNvbnRlbnRWaWV3OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorCisgICAgYWRkVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcsIGRv
Tm90QW5pbWF0ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRlbnRWaWV3
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3KTsKKyAgICAgICAgaWYgKCEo
dGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gdGFi
Q29udGVudFZpZXcudGFiQmFySXRlbTsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXJJ
dGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0pOworICAgICAgICBpZiAoISh0
YWJCYXJJdGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0pKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICh0YWJCYXJJdGVtLnJlcHJlc2VudGVkT2Jq
ZWN0ICE9PSB0YWJDb250ZW50VmlldykKKyAgICAgICAgICAgIHRhYkJhckl0ZW0ucmVwcmVzZW50
ZWRPYmplY3QgPSB0YWJDb250ZW50VmlldzsKKworICAgICAgICB0YWJDb250ZW50Vmlldy5wYXJl
bnRUYWJCcm93c2VyID0gdGhpczsKKworICAgICAgICBpZiAodGFiQmFySXRlbS5wYXJlbnRUYWJC
YXIgPT09IHRoaXMuX3RhYkJhcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy51bnNoaWZ0KHRhYkNvbnRlbnRWaWV3KTsKKyAg
ICAgICAgdGhpcy5fdGFiQmFyLmFkZFRhYkJhckl0ZW0odGFiQmFySXRlbSwgZG9Ob3RBbmltYXRl
KTsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3Mu
bGVuZ3RoID09PSB0aGlzLl90YWJCYXIudGFiQmFySXRlbXMubGVuZ3RoIC0gMSk7IC8vIEV4Y2x1
ZGUgbmV3IHRhYiBidXR0b24uCisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
c2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCBkb05vdEFuaW1hdGUpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuYWRkVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcs
IGRvTm90QW5pbWF0ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhp
cy5fdGFiQmFyLnNlbGVjdGVkVGFiQmFySXRlbSA9IHRhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW07
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNsb3NlVGFiRm9yQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcsIGRvTm90QW5pbWF0ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRW
aWV3KTsKKyAgICAgICAgaWYgKCEodGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVGFiQ29udGVudFZpZXcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRhYkNvbnRlbnRWaWV3LnRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuVGFiQmFySXRlbSk7CisgICAgICAgIGlmICghKHRhYkNvbnRlbnRWaWV3LnRhYkJh
ckl0ZW0gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHRhYkJhckl0ZW0ucGFyZW50VGFiQmFyICE9PSB0
aGlzLl90YWJCYXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5f
Y29udGVudFZpZXdDb250YWluZXIuY2xvc2VDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7CisK
KyAgICAgICAgdGFiQ29udGVudFZpZXcucGFyZW50VGFiQnJvd3NlciA9IG51bGw7CisKKyAgICAg
ICAgdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLnJlbW92ZSh0YWJDb250ZW50Vmlldyk7Cisg
ICAgICAgIHRoaXMuX3RhYkJhci5yZW1vdmVUYWJCYXJJdGVtKHRhYkJhckl0ZW0sIGRvTm90QW5p
bWF0ZSk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVjZW50VGFiQ29udGVudFZp
ZXdzLmxlbmd0aCA9PT0gdGhpcy5fdGFiQmFyLnRhYkJhckl0ZW1zLmxlbmd0aCAtIDEpOyAvLyBF
eGNsdWRlIG5ldyB0YWIgYnV0dG9uLgorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIC8vIFByaXZhdGUKKworICAgIF90YWJCYXJJdGVtU2VsZWN0ZWQoZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0aGlzLl90YWJCYXIuc2VsZWN0ZWRUYWJCYXJJ
dGVtLnJlcHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIGlmICh0YWJDb250ZW50Vmlldykgewor
ICAgICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KHRh
YkNvbnRlbnRWaWV3KTsKKworICAgICAgICAgICAgdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdz
LnJlbW92ZSh0YWJDb250ZW50Vmlldyk7CisgICAgICAgICAgICB0aGlzLl9yZWNlbnRUYWJDb250
ZW50Vmlld3MudW5zaGlmdCh0YWJDb250ZW50Vmlldyk7CisKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5sZW5ndGggPT09IHRoaXMuX3RhYkJh
ci50YWJCYXJJdGVtcy5sZW5ndGggLSAxKTsgLy8gRXhjbHVkZSBuZXcgdGFiIGJ1dHRvbi4KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jbG9z
ZUFsbENvbnRlbnRWaWV3cygpOworCisgICAgICAgIHRoaXMuX3Nob3dOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsRm9yVGFiQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOworICAgICAgICB0aGlzLl9z
aG93RGV0YWlsc1NpZGViYXJQYW5lbHNGb3JUYWJDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRh
YkJyb3dzZXIuRXZlbnQuU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSk7CisgICAgfQor
CisgICAgX3NpZGViYXJQYW5lbFNlbGVjdGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX2lnbm9yZVNpZGViYXJFdmVudHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3OworICAgICAg
ICBpZiAoIXRhYkNvbnRlbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZGV0YWlsc1NpZGViYXIpOworCisg
ICAgICAgIGlmICh0YWJDb250ZW50Vmlldy5tYW5hZ2VzRGV0YWlsc1NpZGViYXJQYW5lbHMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNlbGVjdGVkU2lkZWJhclBhbmVsID0g
dGhpcy5fZGV0YWlsc1NpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWw7CisgICAgICAgIHRhYkNv
bnRlbnRWaWV3LmRldGFpbHNTaWRlYmFyU2VsZWN0ZWRQYW5lbFNldHRpbmcudmFsdWUgPSBzZWxl
Y3RlZFNpZGViYXJQYW5lbCA/IHNlbGVjdGVkU2lkZWJhclBhbmVsLmlkZW50aWZpZXIgOiBudWxs
OworICAgIH0KKworICAgIF9zaWRlYmFyQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UoZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5faWdub3JlU2lkZWJhckV2ZW50cykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSB0aGlzLnNlbGVjdGVkVGFi
Q29udGVudFZpZXc7CisgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fbmF2aWdhdGlvblNp
ZGViYXIpCisgICAgICAgICAgICB0YWJDb250ZW50Vmlldy5uYXZpZ2F0aW9uU2lkZWJhckNvbGxh
cHNlZFNldHRpbmcudmFsdWUgPSB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQ7Cisg
ICAgICAgIGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZGV0YWlsc1NpZGViYXIgJiYg
IXRhYkNvbnRlbnRWaWV3Lm1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscykKKyAgICAgICAgICAg
IHRhYkNvbnRlbnRWaWV3LmRldGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGluZy52YWx1ZSA9IHRo
aXMuX2RldGFpbHNTaWRlYmFyLmNvbGxhcHNlZDsKKyAgICB9CisKKyAgICBfc2hvd05hdmlnYXRp
b25TaWRlYmFyUGFuZWxGb3JUYWJDb250ZW50Vmlldyh0YWJDb250ZW50VmlldykKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fbmF2aWdhdGlvblNpZGViYXIpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5faWdub3JlU2lkZWJhckV2ZW50cyA9IHRydWU7CisKKyAgICAgICAg
dGhpcy5fbmF2aWdhdGlvblNpZGViYXIucmVtb3ZlU2lkZWJhclBhbmVsKDApOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhci5zaWRlYmFyUGFuZWxzLmxl
bmd0aCk7CisKKyAgICAgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgbmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IHRhYkNvbnRlbnRWaWV3
Lm5hdmlnYXRpb25TaWRlYmFyUGFuZWw7CisgICAgICAgIGlmICghbmF2aWdhdGlvblNpZGViYXJQ
YW5lbCkgeworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXIuY29sbGFwc2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX25h
dmlnYXRpb25TaWRlYmFyLmFkZFNpZGViYXJQYW5lbChuYXZpZ2F0aW9uU2lkZWJhclBhbmVsKTsK
KyAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBu
YXZpZ2F0aW9uU2lkZWJhclBhbmVsOworCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25TaWRlYmFy
LmNvbGxhcHNlZCA9IHRhYkNvbnRlbnRWaWV3Lm5hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0
dGluZy52YWx1ZTsKKworICAgICAgICB0aGlzLl9pZ25vcmVTaWRlYmFyRXZlbnRzID0gZmFsc2U7
CisgICAgfQorCisgICAgX3Nob3dEZXRhaWxzU2lkZWJhclBhbmVsc0ZvclRhYkNvbnRlbnRWaWV3
KHRhYkNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9kZXRhaWxzU2lkZWJh
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9pZ25vcmVTaWRlYmFyRXZl
bnRzID0gdHJ1ZTsKKworICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5fZGV0YWlsc1NpZGViYXIu
c2lkZWJhclBhbmVscy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkKKyAgICAgICAgICAgIHRoaXMu
X2RldGFpbHNTaWRlYmFyLnJlbW92ZVNpZGViYXJQYW5lbChpKTsKKworICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fZGV0YWlsc1NpZGViYXIuc2lkZWJhclBhbmVscy5sZW5ndGgpOworCisg
ICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHRhYkNvbnRlbnRWaWV3Lm1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscykgeworICAg
ICAgICAgICAgdGFiQ29udGVudFZpZXcuc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxzKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGV0YWlsc1NpZGViYXJQ
YW5lbHMgPSB0YWJDb250ZW50Vmlldy5kZXRhaWxzU2lkZWJhclBhbmVsczsKKyAgICAgICAgaWYg
KCFkZXRhaWxzU2lkZWJhclBhbmVscykgeworICAgICAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGVi
YXIuY29sbGFwc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAodmFyIGRldGFpbHNTaWRlYmFyUGFuZWwgb2YgZGV0YWlsc1NpZGViYXJQYW5l
bHMpCisgICAgICAgICAgICB0aGlzLl9kZXRhaWxzU2lkZWJhci5hZGRTaWRlYmFyUGFuZWwoZGV0
YWlsc1NpZGViYXJQYW5lbCk7CisKKyAgICAgICAgdGhpcy5fZGV0YWlsc1NpZGViYXIuc2VsZWN0
ZWRTaWRlYmFyUGFuZWwgPSB0YWJDb250ZW50Vmlldy5kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFu
ZWxTZXR0aW5nLnZhbHVlIHx8IGRldGFpbHNTaWRlYmFyUGFuZWxzWzBdOworCisgICAgICAgIHRo
aXMuX2RldGFpbHNTaWRlYmFyLmNvbGxhcHNlZCA9IHRhYkNvbnRlbnRWaWV3LmRldGFpbHNTaWRl
YmFyQ29sbGFwc2VkU2V0dGluZy52YWx1ZSB8fCAhZGV0YWlsc1NpZGViYXJQYW5lbHMubGVuZ3Ro
OworCisgICAgICAgIHRoaXMuX2lnbm9yZVNpZGViYXJFdmVudHMgPSBmYWxzZTsKKyAgICB9Cit9
OworCitXZWJJbnNwZWN0b3IuVGFiQnJvd3Nlci5FdmVudCA9IHsKKyAgICBTZWxlY3RlZFRhYkNv
bnRlbnRWaWV3RGlkQ2hhbmdlOiAidGFiLWJyb3dzZXItc2VsZWN0ZWQtdGFiLWNvbnRlbnQtdmll
dy1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY5YmU3
ODQxM2JiNTJlNWI3NTM0OGY1NjEwNjlkNjQ3NmQ0YTEwZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRW
aWV3ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJCYXJJdGVtLCBu
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscykKK3sKKyAgICBjb25z
b2xlLmFzc2VydCh0eXBlb2YgaWRlbnRpZmllciA9PT0gInN0cmluZyIpOworICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciIHx8IHN0eWxlQ2xhc3NO
YW1lcy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwgY2xhc3NOYW1lKSB7IHJldHVybiBw
cmV2aW91c1ZhbHVlICYmIHR5cGVvZiBjbGFzc05hbWUgPT09ICJzdHJpbmciOyB9LCB0cnVlKSk7
CisgICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5U
YWJCYXJJdGVtKTsKKyAgICBjb25zb2xlLmFzc2VydCghbmF2aWdhdGlvblNpZGViYXJQYW5lbCB8
fCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwpOworICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXRhaWxzU2lkZWJhclBhbmVs
cyB8fCBkZXRhaWxzU2lkZWJhclBhbmVscy5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwg
ZGV0YWlsc1NpZGViYXJQYW5lbCkgeyByZXR1cm4gcHJldmlvdXNWYWx1ZSAmJiBkZXRhaWxzU2lk
ZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWw7IH0s
IHRydWUpKTsKKworICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIG51bGwp
OworCisgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRhYiIpOworCisgICAgaWYgKHR5
cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICBzdHlsZUNsYXNzTmFt
ZXMgPSBbc3R5bGVDbGFzc05hbWVzXTsKKworICAgIGZvciAodmFyIHN0eWxlQ2xhc3NOYW1lIG9m
IHN0eWxlQ2xhc3NOYW1lcykKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoc3R5
bGVDbGFzc05hbWUpOworCisgICAgdGhpcy5fdGFiQmFySXRlbSA9IHRhYkJhckl0ZW07CisgICAg
dGhpcy5fbmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IG5hdmlnYXRpb25TaWRlYmFyUGFuZWwgfHwg
bnVsbDsKKyAgICB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVscyA9IGRldGFpbHNTaWRlYmFyUGFu
ZWxzIHx8IFtdOworCisgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lk
ZWJhci1jb2xsYXBzZWQiLCBmYWxzZSk7CisKKyAgICB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxh
cHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0
YWlscy1zaWRlYmFyLWNvbGxhcHNlZCIsIHRydWUpOworICAgIHRoaXMuX2RldGFpbHNTaWRlYmFy
U2VsZWN0ZWRQYW5lbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmll
ciArICItZGV0YWlscy1zaWRlYmFyLXNlbGVjdGVkLXBhbmVsIiwgbnVsbCk7Cit9OworCitXZWJJ
bnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcucHJvdG90eXBlLAorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgcGFyZW50
VGFiQnJvd3NlcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VGFiQnJvd3Nl
cjsKKyAgICB9LAorCisgICAgc2V0IHBhcmVudFRhYkJyb3dzZXIodGFiQnJvd3NlcikKKyAgICB7
CisgICAgICAgIHRoaXMuX3BhcmVudFRhYkJyb3dzZXIgPSB0YWJCcm93c2VyIHx8IG51bGw7Cisg
ICAgfSwKKworICAgIGdldCB0YWJCYXJJdGVtKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90YWJCYXJJdGVtOworICAgIH0sCisKKyAgICBnZXQgbWFuYWdlc0RldGFpbHNTaWRlYmFyUGFu
ZWxzKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxz
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
LgorICAgIH0sCisKKyAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBnZXQgbmF2aWdhdGlvblNp
ZGViYXJQYW5lbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNpZGVi
YXJQYW5lbDsKKyAgICB9LAorCisgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyQ29sbGFwc2VkU2V0
dGluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xs
YXBzZWRTZXR0aW5nOworICAgIH0sCisKKyAgICBnZXQgZGV0YWlsc1NpZGViYXJQYW5lbHMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxzOworICAgIH0s
CisKKyAgICBnZXQgZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTZXR0aW5nKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmc7CisgICAgfSwK
KworICAgIGdldCBkZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5nKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5nOwor
ICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hOTc5NTYwOTlhY2E0NWJmOTQzN2NmYjdiM2E5N2JjYWE0Mzc4NTE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVU
YWJDb250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyKQoreworICAg
IHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvVGlt
ZWxpbmUuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMiKSk7CisgICAgdmFy
IGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOworCisgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVu
dGlmaWVyIHx8ICJ0aW1lbGluZSIsICJ0aW1lbGluZSIsIHRhYkJhckl0ZW0sIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOworfTsKKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVUYWJDb250ZW50VmlldywKKyAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSwK
K307Cg==
</data>
<flag name="review"
          id="275830"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="275831"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>