<?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>171904</bug_id>
          
          <creation_ts>2017-05-09 18:55:44 -0700</creation_ts>
          <short_desc>Web Inspector: Web Sockets: Unable to inspect a WebSocket that receives &gt;50 messages per second</short_desc>
          <delta_ts>2017-06-01 17:50:22 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1306703</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-09 18:55:44 -0700</bug_when>
    <thetext>Steps:
1. In Web Inspector, open Network tab.
2. Navigate to http://demo2.kaazing.com/demo/forex/
3. Filter Web Sockets.
4. Click on the go to arrow right next to the WebSocket connection (&quot;jms&quot;).

Expected:
WebSocket content view is shown.

Actual:
Nothing happens.

Notes:
This page sends a lot of WebSocket messages. You may not be able to reproduce the bug on a slow network connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306704</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-09 18:56:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/32095863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308228</commentid>
    <comment_count>2</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-12 19:13:58 -0700</bug_when>
    <thetext>This issue is similar to Bug 170036 - Web Inspector: Adding a WebSocket message may change the currently selected resource. Resource#increaseSize causes a chain reaction that results in ContentBrowser#showContentViewForRepresentedObject being called.

    showContentViewForRepresentedObject - ContentBrowser.js:146
    showRepresentedObject - ContentBrowserTabContentView.js:191
    showRepresentedObject - Main.js:1175
    _treeSelectionDidChange - NetworkGridContentView.js:397
    event: WebInspector.TreeOutline.Event.SelectionDidChange
    select - TreeElement.js:511
    _refreshDirtyDataGridNodes - TimelineDataGrid.js:279
    --- requestAnimationFrame ---
    dataGridNodeNeedsRefresh - TimelineDataGrid.js:198
    _needsRefresh - ResourceTimelineDataGridNode.js:277
    event: WebInspector.Resource.Event.SizeDidChange
    increaseSize - Resource.js:755
    addFrame - WebSocketResource.js:79</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308553</commentid>
    <comment_count>3</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-14 20:49:24 -0700</bug_when>
    <thetext>TimelineDataGrid#_refreshDirtyDataGridNodes is called every time a resource size changes. This is unnecessary expensive.

I think the right strategy would be to avoid calling TimelineDataGrid#_refreshDirtyDataGridNodes when TimelineDataGrid isn&apos;t visible. We should, however, call this method when a TimelineDataGrid becomes visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308667</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-05-15 09:25:58 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #3)
&gt; TimelineDataGrid#_refreshDirtyDataGridNodes is called every time a resource
&gt; size changes. This is unnecessary expensive.
&gt; 
&gt; I think the right strategy would be to avoid calling
&gt; TimelineDataGrid#_refreshDirtyDataGridNodes when TimelineDataGrid isn&apos;t
&gt; visible. We should, however, call this method when a TimelineDataGrid
&gt; becomes visible.

We shouldn&apos;t be doing layout work / accessing DOM elements unless underneath an override of View.prototype.{initialLayout,layout}. Does DataGrid normally violate this, or is this code doing something special to cause this to happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308748</commentid>
    <comment_count>5</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-15 12:17:16 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #4)
&gt; (In reply to Nikita Vasilyev from comment #3)
&gt; &gt; TimelineDataGrid#_refreshDirtyDataGridNodes is called every time a resource
&gt; &gt; size changes. This is unnecessary expensive.
&gt; &gt; 
&gt; &gt; I think the right strategy would be to avoid calling
&gt; &gt; TimelineDataGrid#_refreshDirtyDataGridNodes when TimelineDataGrid isn&apos;t
&gt; &gt; visible. We should, however, call this method when a TimelineDataGrid
&gt; &gt; becomes visible.
&gt; 
&gt; We shouldn&apos;t be doing layout work / accessing DOM elements unless underneath
&gt; an override of View.prototype.{initialLayout,layout}. Does DataGrid normally
&gt; violate this, or is this code doing something special to cause this to
&gt; happen?

DataGrid is fairly old and has a lot of layout work / DOM access outside of {initialLayout,layout}. Only TimelineDataGrid has _refreshDirtyDataGridNodes method.  I&apos;m not entirely sure what are you asking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309455</commentid>
    <comment_count>6</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-16 20:14:14 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #3)
&gt; TimelineDataGrid#_refreshDirtyDataGridNodes is called every time a resource
&gt; size changes. This is unnecessary expensive.
&gt; 
&gt; I think the right strategy would be to avoid calling
&gt; TimelineDataGrid#_refreshDirtyDataGridNodes when TimelineDataGrid isn&apos;t
&gt; visible. We should, however, call this method when a TimelineDataGrid
&gt; becomes visible.

This alone didn&apos;t fix the problem :(

Another issue is that Resource#increaseSize causes NetworkSidebarPanel#treeElementAddedOrChanged 
to be called. Every increase of size in a resource causes a sidebar item to be removed and attached
to the DOM. On http://demo2.kaazing.com/demo/forex/ you can see that by hovering over the WebSocket
resource in the sidebar — the go-to arrow flickers!

Every resource, not just a WebSocket resource, that frequently increases its size must be unclickable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310370</commentid>
    <comment_count>7</comment_count>
      <attachid>310583</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-18 17:54:51 -0700</bug_when>
    <thetext>Created attachment 310583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310671</commentid>
    <comment_count>8</comment_count>
      <attachid>310583</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-05-19 11:17:05 -0700</bug_when>
    <thetext>Comment on attachment 310583
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:349
&gt; +    reattachIfIndexChanged(treeElement, insertionIndex)

If I understand correctly, this function reinserts the tree element if the index is changing OR the status element hasn&apos;t been initialized. Maybe the function should be called `reattachIfNeeded`, since the check involves more than just the index?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:354
&gt; +            // insertionIndex.status and it can be triggered by re-attaching treeElement.

`insertionIndex.status` seems wrong. This comment could also be more clear: I don&apos;t understand why having a falsey status means the element has to be re-inserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311521</commentid>
    <comment_count>9</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-22 13:18:41 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #8)
&gt; Comment on attachment 310583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310583&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:349
&gt; &gt; +    reattachIfIndexChanged(treeElement, insertionIndex)
&gt; 
&gt; If I understand correctly, this function reinserts the tree element if the
&gt; index is changing OR the status element hasn&apos;t been initialized. Maybe the
&gt; function should be called `reattachIfNeeded`, since the check involves more
&gt; than just the index?
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:354
&gt; &gt; +            // insertionIndex.status and it can be triggered by re-attaching treeElement.
&gt; 
&gt; `insertionIndex.status` seems wrong. This comment could also be more clear:
&gt; I don&apos;t understand why having a falsey status means the element has to be
&gt; re-inserted.

treeElement.status has the go-to button and close button elements. Re-inserting treeElement calls
NetworkSidebarPanel#treeElementAddedOrChanged, which adds these go-to button and close button elements.

    treeElementAddedOrChanged(treeElement)
    {
        if (treeElement.status || !treeElement.treeOutline)
            return;

        var fragment = document.createDocumentFragment();

        var closeButton = new WebInspector.TreeElementStatusButton(useSVGSymbol(&quot;Images/Close.svg&quot;, null, WebInspector.UIString(&quot;Close resource view&quot;)));
        closeButton.element.classList.add(&quot;close&quot;);
        closeButton.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked, this._treeElementCloseButtonClicked, this);
        fragment.appendChild(closeButton.element);

        let goToButton = new WebInspector.TreeElementStatusButton(WebInspector.createGoToArrowButton());
        goToButton[WebInspector.NetworkSidebarPanel.TreeElementSymbol] = treeElement;
        goToButton.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked, this._treeElementGoToArrowWasClicked, this);
        fragment.appendChild(goToButton.element);

        treeElement.status = fragment;
    }

https://github.com/WebKit/webkit/blob/f59f78f7e62bae5cd899a7e6943f5696b764e4cd/Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js#L154

Now that I&apos;m thinking about it, there should be no need to re-insert treeElements, they should have the go-to &amp; close buttons already.
I&apos;ll try to implement that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311648</commentid>
    <comment_count>10</comment_count>
      <attachid>310948</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-22 16:11:05 -0700</bug_when>
    <thetext>Created attachment 310948
Patch

(In reply to Nikita Vasilyev from comment #9)
&gt; Now that I&apos;m thinking about it, there should be no need to re-insert
&gt; treeElements, they should have the go-to &amp; close buttons already.
&gt; I&apos;ll try to implement that instead.

This isn&apos;t necessarily a good idea because both Network and Resources sidebar use the same TreeElement classes,
but tree elements in Network sidebar have the go-to arrows.

I think in the future we should re-consider the go-to arrow and close button UI in Network tab. I&apos;ve seen at least 3 people
confused not knowing how to close a content view in the Network tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312064</commentid>
    <comment_count>11</comment_count>
      <attachid>310948</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-23 14:46:19 -0700</bug_when>
    <thetext>Comment on attachment 310948
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:16
&gt; +        This patch makes sure treeElement gets re-attached if:
&gt; +        - Its position (index) changes.
&gt; +        - treeElement.status, which contains the go-to arrow and the close resource icon, is not yet added to the DOM.

I understand re-attaching if the position changes. I do not understand why status has any affect on reattaching.

Why do we do the extra work if there is not a status icon?

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:354
&gt; +        if (treeElement.status &amp;&amp; this.children.indexOf(treeElement) === insertionIndex)

This appears to be O(n) for what should be a single O(1) check.

Instead of:

    this.children.indexOf(treeElement) === insertionIndex

Can you just check:

    this.children[insertionIndex] === treeElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312115</commentid>
    <comment_count>12</comment_count>
      <attachid>310948</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-23 16:22:57 -0700</bug_when>
    <thetext>Comment on attachment 310948
Patch

(In reply to Joseph Pecoraro from comment #11)
&gt; Comment on attachment 310948 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310948&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/ChangeLog:16
&gt; &gt; +        This patch makes sure treeElement gets re-attached if:
&gt; &gt; +        - Its position (index) changes.
&gt; &gt; +        - treeElement.status, which contains the go-to arrow and the close resource icon, is not yet added to the DOM.
&gt; 
&gt; I understand re-attaching if the position changes. I do not understand why
&gt; status has any affect on reattaching.
&gt; 
&gt; Why do we do the extra work if there is not a status icon?

Without this treeElement.status check, there was no go-to/close icon. I think I finally figured it why.

Were these icons removed or never added?

    ResourceTreeElement#_updateStatus:
        treeElement.status = &lt;div class=&quot;indeterminate-progress-spinner&quot;&gt;

    ResourceTreeElement#_updateStatus:
        treeElement.status = &quot;&quot;

Turns out they were removed by ResourceTreeElement#_updateStatus.

WebSocketResourceTreeElement#_updateConnectionStatus is used in Resources tab, but not Network tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312127</commentid>
    <comment_count>13</comment_count>
      <attachid>311077</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-23 16:56:29 -0700</bug_when>
    <thetext>Created attachment 311077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314421</commentid>
    <comment_count>14</comment_count>
      <attachid>311653</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-05-31 16:33:22 -0700</bug_when>
    <thetext>Created attachment 311653
Patch

The previous patch sometimes didn&apos;t show the go-to buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314825</commentid>
    <comment_count>15</comment_count>
      <attachid>311653</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-01 14:13:03 -0700</bug_when>
    <thetext>Comment on attachment 311653
Patch

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

r=me, with a comment.

&gt; Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js:156
&gt; +        if (treeElement.status instanceof DocumentFragment || !treeElement.treeOutline)

The check for status instanceOf DocumentFragment is a little fragile, since status could be technically be a DocumentFragment other than the goto/close fragment that gets added below. This could be more future-proof by adding a property to the status element:

treeElementAddedOrChanged(treeElement)
{
    if (!treeElement.treeOutline)
        return;

    if (treeElement.status &amp;&amp; treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol])
        return;

    treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol] = true;
    ...
}

Putting the property on status instead of treeElement also ensures that the property can&apos;t get out of sync by someone setting the status elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314827</commentid>
    <comment_count>16</comment_count>
      <attachid>311653</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-06-01 14:17:57 -0700</bug_when>
    <thetext>Comment on attachment 311653
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js:156
&gt;&gt; +        if (treeElement.status instanceof DocumentFragment || !treeElement.treeOutline)
&gt; 
&gt; The check for status instanceOf DocumentFragment is a little fragile, since status could be technically be a DocumentFragment other than the goto/close fragment that gets added below. This could be more future-proof by adding a property to the status element:
&gt; 
&gt; treeElementAddedOrChanged(treeElement)
&gt; {
&gt;     if (!treeElement.treeOutline)
&gt;         return;
&gt; 
&gt;     if (treeElement.status &amp;&amp; treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol])
&gt;         return;
&gt; 
&gt;     treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol] = true;
&gt;     ...
&gt; }
&gt; 
&gt; Putting the property on status instead of treeElement also ensures that the property can&apos;t get out of sync by someone setting the status elsewhere.

Agreed. I like the use a symbol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314838</commentid>
    <comment_count>17</comment_count>
      <attachid>311762</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-06-01 14:51:02 -0700</bug_when>
    <thetext>Created attachment 311762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314840</commentid>
    <comment_count>18</comment_count>
      <attachid>311762</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-01 15:05:35 -0700</bug_when>
    <thetext>Comment on attachment 311762
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js:160
&gt; +        if (treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol] || !treeElement.treeOutline)

You also need to check that status is defined before accessing the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314841</commentid>
    <comment_count>19</comment_count>
      <attachid>311764</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2017-06-01 15:11:06 -0700</bug_when>
    <thetext>Created attachment 311764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314912</commentid>
    <comment_count>20</comment_count>
      <attachid>311764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 17:50:20 -0700</bug_when>
    <thetext>Comment on attachment 311764
Patch

Clearing flags on attachment: 311764

Committed r217690: &lt;http://trac.webkit.org/changeset/217690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314913</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 17:50:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310583</attachid>
            <date>2017-05-18 17:54:51 -0700</date>
            <delta_ts>2017-05-22 16:11:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3985</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAzYzQxODcuLjM3ODg1OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA1LTE4ICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZXJ5IHNpemUg
aW5jcmVhc2Ugb2YgYSByZXNvdXJjZSBjYXVzZXMgYSBzaWRlYmFyIGl0ZW0gdG8gYmUgcmUtYXR0
YWNoZWQgdG8gdGhlIERPTS4gU2VuZGluZyBvcgorICAgICAgICByZWNlaXZpbmcgYSBXZWJTb2Nr
ZXQgbWVzc2FnZSBjYXVzZXMgYSBzaXplIGluY3JlYXNlLgorCisgICAgICAgIFdoZW4gc2l6ZSBp
bmNyZWFzZSBoYXBwZW5zIHRvbyBmcmVxdWVudGx5LCB0aGUgZ28tdG8gYXJyb3cgc3RhcnRzIHRv
IGZsaWNrZXIgYW5kIGJlY29tZXMgdW5jbGlja2FibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBzdXJlIHRyZWVFbGVtZW50IGdldHMgcmUtYXR0YWNoZWQgaWY6CisgICAgICAgIC0gSXRz
IHBvc2l0aW9uIChpbmRleCkgY2hhbmdlcy4KKyAgICAgICAgLSB0cmVlRWxlbWVudC5zdGF0dXMs
IHdoaWNoIGNvbnRhaW5zIHRoZSBnby10byBhcnJvdyBhbmQgdGhlIGNsb3NlIHJlc291cmNlIGlj
b24sIGlzIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIERPTS4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZURhdGFHcmlkLnByb3RvdHlwZS5fcmVmcmVzaERpcnR5RGF0YUdyaWROb2Rlcyk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUucmVhdHRhY2hJZkluZGV4Q2hhbmdlZCk6IEFk
ZGVkLgorCiAyMDE3LTA1LTExICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJUTDogIkVsZW1lbnRzID4gU3R5bGVzIC0gUnVs
ZXMiIHJ1bGUgYW5kIG1lZGlhIHF1ZXJ5IGhlYWRlcnMgc2hvdWxkIGJlIGxlZnQgYWxpZ25lZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lRGF0YUdyaWQuanMKaW5kZXggZWNiNGQ0Ny4uMzIzNDNmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRh
R3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZURhdGFHcmlkLmpzCkBAIC0yNjcsMTYgKzI2Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZURhdGFHcmlkID0gY2xhc3MgVGltZWxpbmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5EYXRhCiAgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlT3V0bGluZURh
dGFHcmlkU3luY2hyb25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9k
ZSk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CiAKLSAgICAgICAg
ICAgIGxldCB3YXNTZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOwotCi0gICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCghdHJlZUVsZW1lbnQucGFyZW50IHx8IHRyZWVFbGVtZW50LnBhcmVu
dCA9PT0gdHJlZU91dGxpbmUpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9
PT0gdHJlZU91dGxpbmUpCi0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQo
dHJlZUVsZW1lbnQpOwotCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5pbnNlcnRDaGlsZCh0cmVl
RWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpOwotCi0gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQp
Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgICAgICAgICB0cmVl
T3V0bGluZS5yZWF0dGFjaElmSW5kZXhDaGFuZ2VkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRl
eCk7CiAKICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgdHJlZSBlbGVtZW50IGJhY2sgdG8gdGhl
IHRyZWUgb3V0bGluZSBzdWJqZWN0cyBpdCB0byBmaWx0ZXJzLgogICAgICAgICAgICAgLy8gTWFr
ZSBzdXJlIHdlIGtlZXAgdGhlIGhpZGRlbiBzdGF0ZSBpbi1zeW5jIHdoaWxlIHRoZSBzeW5jaHJv
bml6ZXIgaXMgZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGJhZTU5NWIuLjYzMmMwNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC0zNDYsNiArMzQ2LDI5IEBAIFdlYkluc3BlY3Rvci5UcmVl
T3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CiAgICAgfQogCisgICAgcmVhdHRhY2hJZkluZGV4
Q2hhbmdlZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpCisgICAgeworICAgICAgICBpZiAo
dHJlZUVsZW1lbnQuc3RhdHVzKSB7CisgICAgICAgICAgICAvLyBSZS1hdHRhY2ggdHJlZUVsZW1l
bnQgaWYgaW5zZXJ0aW9uSW5kZXguc3RhdHVzIGlzIG5vdCBpbml0aWFsaXplZC4KKyAgICAgICAg
ICAgIC8vIFdlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJhclBhbmVsLnByb3RvdHlwZS50cmVlRWxl
bWVudEFkZGVkT3JDaGFuZ2VkIGluaXRpYWxpemVzCisgICAgICAgICAgICAvLyBpbnNlcnRpb25J
bmRleC5zdGF0dXMgYW5kIGl0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgcmUtYXR0YWNoaW5nIHRyZWVF
bGVtZW50LgorCisgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5pbmRleE9mKHRyZWVFbGVt
ZW50KSA9PT0gaW5zZXJ0aW9uSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHdhc1NlbGVjdGVkID0gdHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CisK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRyZWVFbGVtZW50LnBhcmVudCB8fCB0cmVlRWxlbWVu
dC5wYXJlbnQgPT09IHRoaXMpOworICAgICAgICBpZiAodHJlZUVsZW1lbnQucGFyZW50ID09PSB0
aGlzKQorICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7CisKKyAgICAg
ICAgdGhpcy5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpOworCisgICAg
ICAgIGlmICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LnNlbGVjdCgpOwor
ICAgIH0KKwogICAgIF9yZW1lbWJlclRyZWVFbGVtZW50KGVsZW1lbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310948</attachid>
            <date>2017-05-22 16:11:05 -0700</date>
            <delta_ts>2017-05-23 16:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3808</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAzYzQxODcuLjQ0ZGExNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA1LTIyICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZXJ5IHNpemUg
aW5jcmVhc2Ugb2YgYSByZXNvdXJjZSBjYXVzZXMgYSBzaWRlYmFyIGl0ZW0gdG8gYmUgcmUtYXR0
YWNoZWQgdG8gdGhlIERPTS4gU2VuZGluZyBvcgorICAgICAgICByZWNlaXZpbmcgYSBXZWJTb2Nr
ZXQgbWVzc2FnZSBjYXVzZXMgYSBzaXplIGluY3JlYXNlLgorCisgICAgICAgIFdoZW4gc2l6ZSBp
bmNyZWFzZSBoYXBwZW5zIHRvbyBmcmVxdWVudGx5LCB0aGUgZ28tdG8gYXJyb3cgc3RhcnRzIHRv
IGZsaWNrZXIgYW5kIGJlY29tZXMgdW5jbGlja2FibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBzdXJlIHRyZWVFbGVtZW50IGdldHMgcmUtYXR0YWNoZWQgaWY6CisgICAgICAgIC0gSXRz
IHBvc2l0aW9uIChpbmRleCkgY2hhbmdlcy4KKyAgICAgICAgLSB0cmVlRWxlbWVudC5zdGF0dXMs
IHdoaWNoIGNvbnRhaW5zIHRoZSBnby10byBhcnJvdyBhbmQgdGhlIGNsb3NlIHJlc291cmNlIGlj
b24sIGlzIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIERPTS4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZURhdGFHcmlkLnByb3RvdHlwZS5fcmVmcmVzaERpcnR5RGF0YUdyaWROb2Rlcyk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUucmVhdHRhY2hJZk5lZWRlZCk6IEFkZGVkLgor
CiAyMDE3LTA1LTExICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFJUTDogIkVsZW1lbnRzID4gU3R5bGVzIC0gUnVsZXMiIHJ1
bGUgYW5kIG1lZGlhIHF1ZXJ5IGhlYWRlcnMgc2hvdWxkIGJlIGxlZnQgYWxpZ25lZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVE
YXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lRGF0YUdyaWQuanMKaW5kZXggZWNiNGQ0Ny4uZTMzMmE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZURhdGFHcmlkLmpzCkBAIC0yNjcsMTYgKzI2Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkID0gY2xhc3MgVGltZWxpbmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRh
CiAgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlk
U3luY2hyb25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9kZSk7CiAg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CiAKLSAgICAgICAgICAgIGxl
dCB3YXNTZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOwotCi0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghdHJlZUVsZW1lbnQucGFyZW50IHx8IHRyZWVFbGVtZW50LnBhcmVudCA9PT0g
dHJlZU91dGxpbmUpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJl
ZU91dGxpbmUpCi0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodHJlZUVs
ZW1lbnQpOwotCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5pbnNlcnRDaGlsZCh0cmVlRWxlbWVu
dCwgaW5zZXJ0aW9uSW5kZXgpOwotCi0gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCi0gICAg
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgICAgICAgICB0cmVlT3V0bGlu
ZS5yZWF0dGFjaElmTmVlZGVkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleCk7CiAKICAgICAg
ICAgICAgIC8vIEFkZGluZyB0aGUgdHJlZSBlbGVtZW50IGJhY2sgdG8gdGhlIHRyZWUgb3V0bGlu
ZSBzdWJqZWN0cyBpdCB0byBmaWx0ZXJzLgogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGtl
ZXAgdGhlIGhpZGRlbiBzdGF0ZSBpbi1zeW5jIHdoaWxlIHRoZSBzeW5jaHJvbml6ZXIgaXMgZGlz
YWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGJhZTU5NWIuLjcxYTUzMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCkBAIC0zNDYsNiArMzQ2LDI2IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
LmNoaWxkcmVuID0gW107CiAgICAgfQogCisgICAgcmVhdHRhY2hJZk5lZWRlZCh0cmVlRWxlbWVu
dCwgaW5zZXJ0aW9uSW5kZXgpCisgICAgeworICAgICAgICAvLyBSZS1hdHRhY2ggdHJlZUVsZW1l
bnQgb25seSB3aGVuOgorICAgICAgICAvLyAtIGluc2VydGlvbkluZGV4IGhhcyBjaGFuZ2VkCisg
ICAgICAgIC8vIC0gb3IgdHJlZUVsZW1lbnQuc3RhdHVzIGhhc24ndCBiZWVuIGluaXRpYWxpemVk
CisgICAgICAgIGlmICh0cmVlRWxlbWVudC5zdGF0dXMgJiYgdGhpcy5jaGlsZHJlbi5pbmRleE9m
KHRyZWVFbGVtZW50KSA9PT0gaW5zZXJ0aW9uSW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbGV0IHdhc1NlbGVjdGVkID0gdHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CisKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRyZWVFbGVtZW50LnBhcmVudCB8fCB0cmVlRWxlbWVudC5wYXJl
bnQgPT09IHRoaXMpOworICAgICAgICBpZiAodHJlZUVsZW1lbnQucGFyZW50ID09PSB0aGlzKQor
ICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7CisKKyAgICAgICAgdGhp
cy5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpOworCisgICAgICAgIGlm
ICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LnNlbGVjdCgpOworICAgIH0K
KwogICAgIF9yZW1lbWJlclRyZWVFbGVtZW50KGVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCg==
</data>
<flag name="review"
          id="331987"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311077</attachid>
            <date>2017-05-23 16:56:29 -0700</date>
            <delta_ts>2017-05-31 16:33:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5750</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAzYzQxODcuLjJlMzI4NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA1LTIzICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZXJ5IHNpemUg
aW5jcmVhc2Ugb2YgYSByZXNvdXJjZSBjYXVzZXMgYSBzaWRlYmFyIGl0ZW0gdG8gYmUgcmUtYXR0
YWNoZWQgdG8gdGhlIERPTS4gU2VuZGluZyBvcgorICAgICAgICByZWNlaXZpbmcgYSBXZWJTb2Nr
ZXQgbWVzc2FnZSBjYXVzZXMgYSBzaXplIGluY3JlYXNlLiBXaGVuIHNpemUgaW5jcmVhc2UgaGFw
cGVucyB0b28gZnJlcXVlbnRseSwKKyAgICAgICAgdGhlIGdvLXRvIGFycm93IHN0YXJ0cyB0byBm
bGlja2VyIGFuZCBiZWNvbWVzIHVuY2xpY2thYmxlLiBUaGlzIHBhdGNoIG1ha2VzIHN1cmUgYSBz
aWRlYmFyIGl0ZW0gZ2V0cworICAgICAgICByZS1hdHRhY2hlZCBvbmx5IHdoZW4gaXRzIHBvc2l0
aW9uIChpbmRleCkgY2hhbmdlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5k
ZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
dGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Jlc291cmNlVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6CisgICAgICAgIFNldHRpbmcgc3Rh
dHVzIHRvICIiIHJlbW92ZXMgdGhlIGdvLXRvIGFycm93IGFuZCBjbG9zZSBidXR0b25zIGluIHRo
ZSBOZXR3b3JrIHRhYi4KKyAgICAgICAgT25seSBzZXQgc3RhdHVzIHRvICIiIHRvIHJlbW92ZSB0
aGUgc3Bpbm5lci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRh
R3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlw
ZS5fcmVmcmVzaERpcnR5RGF0YUdyaWROb2Rlcyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5w
cm90b3R5cGUucmVhdHRhY2hJZkluZGV4Q2hhbmdlZCk6IEFkZGVkLgorCiAyMDE3LTA1LTExICBO
aWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJUTDogIkVsZW1lbnRzID4gU3R5bGVzIC0gUnVsZXMiIHJ1bGUgYW5kIG1lZGlhIHF1
ZXJ5IGhlYWRlcnMgc2hvdWxkIGJlIGxlZnQgYWxpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bp
bm5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0
ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKaW5kZXggMjJlMTU2YS4uZTEzODgyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1p
bmF0ZVByb2dyZXNzU3Bpbm5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzCkBAIC0zMCw3ICsz
MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyID0gY2xhc3Mg
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lciBlCiAgICAgICAgIHN1cGVyKCk7CiAKICAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bp
bm5lciIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAog
ICAgIC8vIFB1YmxpYwpAQCAtNDAsMyArNDAsNSBAQCBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0
ZVByb2dyZXNzU3Bpbm5lciA9IGNsYXNzIEluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIgZQog
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3Iu
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5TdHlsZUNsYXNzTmFtZSA9ICJpbmRldGVybWlu
YXRlLXByb2dyZXNzLXNwaW5uZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKaW5k
ZXggNGYzMzRkZS4uOTIyZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzCkBA
IC0xNzcsNyArMTc3LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFz
cyBSZXNvdXJjZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG8KIAogICAgICAgICBpZiAo
dGhpcy5fcmVzb3VyY2UuZmluaXNoZWQgfHwgdGhpcy5fcmVzb3VyY2UuZmFpbGVkKSB7CiAgICAg
ICAgICAgICAvLyBSZW1vdmUgdGhlIHNwaW5uZXIuCi0gICAgICAgICAgICB0aGlzLnN0YXR1cyA9
ICIiOworICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzICYmIHRoaXMuc3RhdHVzIGluc3RhbmNl
b2YgRWxlbWVudCAmJiB0aGlzLnN0YXR1cy5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9y
LkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5bGVDbGFzc05hbWUpKQorICAgICAgICAg
ICAgICAgIHRoaXMuc3RhdHVzID0gIiI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBs
ZXQgc3Bpbm5lciA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5l
cjsKICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gc3Bpbm5lci5lbGVtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRh
R3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lRGF0YUdyaWQuanMKaW5kZXggZWNiNGQ0Ny4uMzIzNDNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURh
dGFHcmlkLmpzCkBAIC0yNjcsMTYgKzI2Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkID0gY2xhc3MgVGltZWxpbmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhCiAg
ICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3lu
Y2hyb25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9kZSk7CiAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CiAKLSAgICAgICAgICAgIGxldCB3
YXNTZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOwotCi0gICAgICAgICAgICBjb25zb2xl
LmFzc2VydCghdHJlZUVsZW1lbnQucGFyZW50IHx8IHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJl
ZU91dGxpbmUpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZU91
dGxpbmUpCi0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodHJlZUVsZW1l
bnQpOwotCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwg
aW5zZXJ0aW9uSW5kZXgpOwotCi0gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCi0gICAgICAg
ICAgICAgICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5y
ZWF0dGFjaElmSW5kZXhDaGFuZ2VkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleCk7CiAKICAg
ICAgICAgICAgIC8vIEFkZGluZyB0aGUgdHJlZSBlbGVtZW50IGJhY2sgdG8gdGhlIHRyZWUgb3V0
bGluZSBzdWJqZWN0cyBpdCB0byBmaWx0ZXJzLgogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdl
IGtlZXAgdGhlIGhpZGRlbiBzdGF0ZSBpbi1zeW5jIHdoaWxlIHRoZSBzeW5jaHJvbml6ZXIgaXMg
ZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGJhZTU5NWIuLjllNjgyNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lLmpzCkBAIC0zNDYsNiArMzQ2LDIzIEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9
IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0
aGlzLmNoaWxkcmVuID0gW107CiAgICAgfQogCisgICAgcmVhdHRhY2hJZkluZGV4Q2hhbmdlZCh0
cmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpCisgICAgeworICAgICAgICBpZiAodGhpcy5jaGls
ZHJlbltpbnNlcnRpb25JbmRleF0gPT09IHRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGxldCB3YXNTZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOworCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0cmVlRWxlbWVudC5wYXJlbnQgfHwgdHJlZUVsZW1lbnQu
cGFyZW50ID09PSB0aGlzKTsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdGhp
cykKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOworCisgICAgICAg
IHRoaXMuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4KTsKKworICAgICAg
ICBpZiAod2FzU2VsZWN0ZWQpCisgICAgICAgICAgICB0cmVlRWxlbWVudC5zZWxlY3QoKTsKKyAg
ICB9CisKICAgICBfcmVtZW1iZXJUcmVlRWxlbWVudChlbGVtZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311653</attachid>
            <date>2017-05-31 16:33:22 -0700</date>
            <delta_ts>2017-06-01 14:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6684</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAzYzQxODcuLjQwOTQ2NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA1LTMxICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZXJ5IHNpemUg
aW5jcmVhc2Ugb2YgYSByZXNvdXJjZSBjYXVzZXMgYSBzaWRlYmFyIGl0ZW0gdG8gYmUgcmUtYXR0
YWNoZWQgdG8gdGhlIERPTS4gU2VuZGluZyBvcgorICAgICAgICByZWNlaXZpbmcgYSBXZWJTb2Nr
ZXQgbWVzc2FnZSBjYXVzZXMgYSBzaXplIGluY3JlYXNlLiBXaGVuIHNpemUgaW5jcmVhc2UgaGFw
cGVucyB0b28gZnJlcXVlbnRseSwKKyAgICAgICAgdGhlIGdvLXRvIGFycm93IHN0YXJ0cyB0byBm
bGlja2VyIGFuZCBiZWNvbWVzIHVuY2xpY2thYmxlLiBUaGlzIHBhdGNoIG1ha2VzIHN1cmUgYSBz
aWRlYmFyIGl0ZW0gZ2V0cworICAgICAgICByZS1hdHRhY2hlZCBvbmx5IHdoZW4gaXRzIHBvc2l0
aW9uIChpbmRleCkgY2hhbmdlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5k
ZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
dGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L05ldHdvcmtTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIEFkZCB0aGUgZ28tdG8gYXJyb3cgYW5k
IGNsb3NlIGJ1dHRvbnMgd2hlbiB0cmVlRWxlbWVudC5zdGF0dXMgaXMgYSBzcGlubmVyIGVsZW1l
bnQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS50cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6CisgICAgICAgIFNldHRpbmcg
c3RhdHVzIHRvICIiIHJlbW92ZXMgdGhlIGdvLXRvIGFycm93IGFuZCBjbG9zZSBidXR0b25zIGlu
IHRoZSBOZXR3b3JrIHRhYi4KKyAgICAgICAgT25seSBzZXQgc3RhdHVzIHRvICIiIHRvIHJlbW92
ZSB0aGUgc3Bpbm5lci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVE
YXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3Rv
dHlwZS5fcmVmcmVzaERpcnR5RGF0YUdyaWROb2Rlcyk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UcmVlT3V0bGlu
ZS5wcm90b3R5cGUucmVhdHRhY2hJZkluZGV4Q2hhbmdlZCk6IEFkZGVkLgorCiAyMDE3LTA1LTEx
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJUTDogIkVsZW1lbnRzID4gU3R5bGVzIC0gUnVsZXMiIHJ1bGUgYW5kIG1lZGlh
IHF1ZXJ5IGhlYWRlcnMgc2hvdWxkIGJlIGxlZnQgYWxpZ25lZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNz
U3Bpbm5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKaW5kZXggMjJlMTU2YS4uZTEzODgyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRl
cm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzCkBAIC0zMCw3
ICszMCw3IEBAIFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyID0gY2xh
c3MgSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lciBlCiAgICAgICAgIHN1cGVyKCk7CiAKICAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mt
c3Bpbm5lciIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5bGVDbGFzc05hbWUpOwogICAgIH0K
IAogICAgIC8vIFB1YmxpYwpAQCAtNDAsMyArNDAsNSBAQCBXZWJJbnNwZWN0b3IuSW5kZXRlcm1p
bmF0ZVByb2dyZXNzU3Bpbm5lciA9IGNsYXNzIEluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIg
ZQogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0
b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5TdHlsZUNsYXNzTmFtZSA9ICJpbmRldGVy
bWluYXRlLXByb2dyZXNzLXNwaW5uZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtTaWRlYmFyUGFuZWwuanMK
aW5kZXggZDRmNWViMi4uODdhM2YzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrU2lkZWJhclBhbmVsLmpz
CkBAIC0xNTMsNyArMTUzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtTaWRlYmFyUGFuZWwgPSBj
bGFzcyBOZXR3b3JrU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG8KIAogICAgIHRyZWVF
bGVtZW50QWRkZWRPckNoYW5nZWQodHJlZUVsZW1lbnQpCiAgICAgewotICAgICAgICBpZiAodHJl
ZUVsZW1lbnQuc3RhdHVzIHx8ICF0cmVlRWxlbWVudC50cmVlT3V0bGluZSkKKyAgICAgICAgaWYg
KHRyZWVFbGVtZW50LnN0YXR1cyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQgfHwgIXRyZWVF
bGVtZW50LnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBm
cmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVs
ZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRyZWVFbGVtZW50LmpzCmluZGV4IDRmMzM0ZGUuLjkyMmYyMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VUcmVlRWxlbWVudC5qcwpAQCAtMTc3LDcgKzE3Nyw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgUmVzb3VyY2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYklu
c3BlY3RvCiAKICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmZpbmlzaGVkIHx8IHRoaXMuX3Jl
c291cmNlLmZhaWxlZCkgewogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzcGlubmVyLgotICAg
ICAgICAgICAgdGhpcy5zdGF0dXMgPSAiIjsKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyAm
JiB0aGlzLnN0YXR1cyBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgdGhpcy5zdGF0dXMuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLlN0eWxl
Q2xhc3NOYW1lKSkKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9ICIiOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbGV0IHNwaW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0
ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7CiAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9IHNwaW5u
ZXIuZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpzCmluZGV4IGVjYjRkNDcuLjMyMzQz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qcwpAQCAtMjY3LDE2ICsyNjcsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCA9IGNsYXNzIFRpbWVsaW5lRGF0YUdyaWQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuRGF0YQogICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gdGhpcy5f
dHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci50cmVlRWxlbWVudEZvckRhdGFHcmlkTm9k
ZShkYXRhR3JpZE5vZGUpOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQp
OwogCi0gICAgICAgICAgICBsZXQgd2FzU2VsZWN0ZWQgPSB0cmVlRWxlbWVudC5zZWxlY3RlZDsK
LQotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRyZWVFbGVtZW50LnBhcmVudCB8fCB0cmVl
RWxlbWVudC5wYXJlbnQgPT09IHRyZWVPdXRsaW5lKTsKLSAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudC5wYXJlbnQgPT09IHRyZWVPdXRsaW5lKQotICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5l
LnJlbW92ZUNoaWxkKHRyZWVFbGVtZW50KTsKLQotICAgICAgICAgICAgdHJlZU91dGxpbmUuaW5z
ZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4KTsKLQotICAgICAgICAgICAgaWYg
KHdhc1NlbGVjdGVkKQotICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnNlbGVjdCgpOworICAg
ICAgICAgICAgdHJlZU91dGxpbmUucmVhdHRhY2hJZkluZGV4Q2hhbmdlZCh0cmVlRWxlbWVudCwg
aW5zZXJ0aW9uSW5kZXgpOwogCiAgICAgICAgICAgICAvLyBBZGRpbmcgdGhlIHRyZWUgZWxlbWVu
dCBiYWNrIHRvIHRoZSB0cmVlIG91dGxpbmUgc3ViamVjdHMgaXQgdG8gZmlsdGVycy4KICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBrZWVwIHRoZSBoaWRkZW4gc3RhdGUgaW4tc3luYyB3aGls
ZSB0aGUgc3luY2hyb25pemVyIGlzIGRpc2FibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCBiYWU1
OTViLi45ZTY4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtMzQ2LDYgKzM0NiwyMyBAQCBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwogICAgIH0KIAorICAgIHJl
YXR0YWNoSWZJbmRleENoYW5nZWQodHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4KQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW5baW5zZXJ0aW9uSW5kZXhdID09PSB0cmVlRWxlbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgd2FzU2VsZWN0ZWQgPSB0cmVl
RWxlbWVudC5zZWxlY3RlZDsKKworICAgICAgICBjb25zb2xlLmFzc2VydCghdHJlZUVsZW1lbnQu
cGFyZW50IHx8IHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdGhpcyk7CisgICAgICAgIGlmICh0cmVl
RWxlbWVudC5wYXJlbnQgPT09IHRoaXMpCisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHRy
ZWVFbGVtZW50KTsKKworICAgICAgICB0aGlzLmluc2VydENoaWxkKHRyZWVFbGVtZW50LCBpbnNl
cnRpb25JbmRleCk7CisKKyAgICAgICAgaWYgKHdhc1NlbGVjdGVkKQorICAgICAgICAgICAgdHJl
ZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgfQorCiAgICAgX3JlbWVtYmVyVHJlZUVsZW1lbnQoZWxl
bWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVu
dC5pZGVudGlmaWVyXSkK
</data>
<flag name="review"
          id="332617"
          type_id="1"
          status="+"
          setter="mattbaker"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311762</attachid>
            <date>2017-06-01 14:51:02 -0700</date>
            <delta_ts>2017-06-01 15:11:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6808</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJiNTlkMjAuLjkzN2VlZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA2LTAxICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE1hdHQgQmFrZXIuCisKKyAgICAgICAgRXZlcnkgc2l6ZSBpbmNy
ZWFzZSBvZiBhIHJlc291cmNlIGNhdXNlcyBhIHNpZGViYXIgaXRlbSB0byBiZSByZS1hdHRhY2hl
ZCB0byB0aGUgRE9NLiBTZW5kaW5nIG9yCisgICAgICAgIHJlY2VpdmluZyBhIFdlYlNvY2tldCBt
ZXNzYWdlIGNhdXNlcyBhIHNpemUgaW5jcmVhc2UuIFdoZW4gc2l6ZSBpbmNyZWFzZSBoYXBwZW5z
IHRvbyBmcmVxdWVudGx5LAorICAgICAgICB0aGUgZ28tdG8gYXJyb3cgc3RhcnRzIHRvIGZsaWNr
ZXIgYW5kIGJlY29tZXMgdW5jbGlja2FibGUuIFRoaXMgcGF0Y2ggbWFrZXMgc3VyZSBhIHNpZGVi
YXIgaXRlbSBnZXRzCisgICAgICAgIHJlLWF0dGFjaGVkIG9ubHkgd2hlbiBpdHMgcG9zaXRpb24g
KGluZGV4KSBjaGFuZ2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICBBZGQgdGhlIGdvLXRvIGFycm93IGFuZCBjbG9zZSBi
dXR0b25zIHdoZW4gdHJlZUVsZW1lbnQuc3RhdHVzIGlzIGEgc3Bpbm5lciBlbGVtZW50LgorCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVs
ZW1lbnRBZGRlZE9yQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOgorICAgICAgICBTZXR0aW5nIHN0YXR1cyB0
byAiIiByZW1vdmVzIHRoZSBnby10byBhcnJvdyBhbmQgY2xvc2UgYnV0dG9ucyBpbiB0aGUgTmV0
d29yayB0YWIuCisgICAgICAgIE9ubHkgc2V0IHN0YXR1cyB0byAiIiB0byByZW1vdmUgdGhlIHNw
aW5uZXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWQu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUuX3Jl
ZnJlc2hEaXJ0eURhdGFHcmlkTm9kZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90
eXBlLnJlYXR0YWNoSWZJbmRleENoYW5nZWQpOiBBZGRlZC4KKwogMjAxNy0wNS0zMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IERlYnVnIHZpZXcgdG8gU2V0dGluZ3MgdGFiIGZvciBkZWJ1ZyBzZXR0aW5ncyBhbmQgZXhwZXJp
bWVudGFsIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXR3b3JrU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1NpZGViYXJQYW5lbC5qcwppbmRleCA4ODEy
M2UzLi4zOWE2ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtTaWRlYmFyUGFuZWwuanMKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCA9IGNsYXNzIE5ldHdv
cmtTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0bwogCiAgICAgdHJlZUVsZW1lbnRBZGRl
ZE9yQ2hhbmdlZCh0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIGlmICh0cmVlRWxlbWVudC5z
dGF0dXMgfHwgIXRyZWVFbGVtZW50LnRyZWVPdXRsaW5lKQorICAgICAgICBpZiAodHJlZUVsZW1l
bnQuc3RhdHVzW1dlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJhclBhbmVsLlRyZWVFbGVtZW50U3Rh
dHVzQnV0dG9uU3ltYm9sXSB8fCAhdHJlZUVsZW1lbnQudHJlZU91dGxpbmUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwpAQCAtMTczLDYgKzE3Myw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrU2lk
ZWJhclBhbmVsID0gY2xhc3MgTmV0d29ya1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rv
CiAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGdvVG9CdXR0b24uZWxlbWVudCk7CiAKICAg
ICAgICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gZnJhZ21lbnQ7CisgICAgICAgIHRyZWVFbGVtZW50
LnN0YXR1c1tXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbC5UcmVlRWxlbWVudFN0YXR1
c0J1dHRvblN5bWJvbF0gPSB0cnVlOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTIzMCw1
ICsyMzEsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCA9IGNsYXNzIE5ldHdv
cmtTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0bwogCiBXZWJJbnNwZWN0b3IuTmV0d29y
a1NpZGViYXJQYW5lbC5SZXNvdXJjZVR5cGVTeW1ib2wgPSBTeW1ib2woInJlc291cmNlLXR5cGUi
KTsKIFdlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJhclBhbmVsLlRyZWVFbGVtZW50U3ltYm9sID0g
U3ltYm9sKCJ0cmVlLWVsZW1lbnQiKTsKK1dlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJhclBhbmVs
LlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uU3ltYm9sID0gU3ltYm9sKCJ0cmVlLWVsZW1lbnQtc3Rh
dHVzLWJ1dHRvbiIpOwogCiBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbC5TaG93aW5n
TmV0d29ya0dyaWRDb250ZW50Vmlld0Nvb2tpZUtleSA9ICJuZXR3b3JrLXNpZGViYXItcGFuZWwt
c2hvd2luZy1uZXR3b3JrLWdyaWQtY29udGVudC12aWV3IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVF
bGVtZW50LmpzCmluZGV4IDRmMzM0ZGUuLjE1YTM0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVl
RWxlbWVudC5qcwpAQCAtMTc3LDEwICsxNzcsMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUVsZW1lbnQgPSBjbGFzcyBSZXNvdXJjZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG8K
IAogICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UuZmluaXNoZWQgfHwgdGhpcy5fcmVzb3VyY2Uu
ZmFpbGVkKSB7CiAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHNwaW5uZXIuCi0gICAgICAgICAg
ICB0aGlzLnN0YXR1cyA9ICIiOworICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzICYmIHRoaXMu
c3RhdHVzW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlNwaW5uZXJTeW1ib2xdKQor
ICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gIiI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBsZXQgc3Bpbm5lciA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dy
ZXNzU3Bpbm5lcjsKICAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gc3Bpbm5lci5lbGVtZW50Owor
ICAgICAgICAgICAgdGhpcy5zdGF0dXNbV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQu
U3Bpbm5lclN5bWJvbF0gPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMDYsMyArMjA4
LDUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBSZXNvdXJjZVRy
ZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG8KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UtaWNvbiI7CiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5GYWlsZWRTdHlsZUNsYXNzTmFtZSA9ICJm
YWlsZWQiOworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5TcGlubmVyU3ltYm9s
ID0gU3ltYm9sKCJzcGlubmVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qcwppbmRleCBlY2I0
ZDQ3Li4zMjM0M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTI2NywxNiArMjY3
LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQgPSBjbGFzcyBUaW1lbGluZURhdGFH
cmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGEKICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVu
dCA9IHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIudHJlZUVsZW1lbnRGb3JE
YXRhR3JpZE5vZGUoZGF0YUdyaWROb2RlKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRy
ZWVFbGVtZW50KTsKIAotICAgICAgICAgICAgbGV0IHdhc1NlbGVjdGVkID0gdHJlZUVsZW1lbnQu
c2VsZWN0ZWQ7Ci0KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0cmVlRWxlbWVudC5wYXJl
bnQgfHwgdHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlT3V0bGluZSk7Ci0gICAgICAgICAgICBp
ZiAodHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlT3V0bGluZSkKLSAgICAgICAgICAgICAgICB0
cmVlT3V0bGluZS5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7Ci0KLSAgICAgICAgICAgIHRyZWVP
dXRsaW5lLmluc2VydENoaWxkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleCk7Ci0KLSAgICAg
ICAgICAgIGlmICh3YXNTZWxlY3RlZCkKLSAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5zZWxl
Y3QoKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLnJlYXR0YWNoSWZJbmRleENoYW5nZWQodHJl
ZUVsZW1lbnQsIGluc2VydGlvbkluZGV4KTsKIAogICAgICAgICAgICAgLy8gQWRkaW5nIHRoZSB0
cmVlIGVsZW1lbnQgYmFjayB0byB0aGUgdHJlZSBvdXRsaW5lIHN1YmplY3RzIGl0IHRvIGZpbHRl
cnMuCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Uga2VlcCB0aGUgaGlkZGVuIHN0YXRlIGlu
LXN5bmMgd2hpbGUgdGhlIHN5bmNocm9uaXplciBpcyBkaXNhYmxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMK
aW5kZXggYmFlNTk1Yi4uOWU2ODI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTM0Niw2ICszNDYs
MjMgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKICAgICB9
CiAKKyAgICByZWF0dGFjaElmSW5kZXhDaGFuZ2VkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRl
eCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2luc2VydGlvbkluZGV4XSA9PT0g
dHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHdhc1NlbGVj
dGVkID0gdHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRy
ZWVFbGVtZW50LnBhcmVudCB8fCB0cmVlRWxlbWVudC5wYXJlbnQgPT09IHRoaXMpOworICAgICAg
ICBpZiAodHJlZUVsZW1lbnQucGFyZW50ID09PSB0aGlzKQorICAgICAgICAgICAgdGhpcy5yZW1v
dmVDaGlsZCh0cmVlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5pbnNlcnRDaGlsZCh0cmVlRWxl
bWVudCwgaW5zZXJ0aW9uSW5kZXgpOworCisgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKKyAgICAg
ICAgICAgIHRyZWVFbGVtZW50LnNlbGVjdCgpOworICAgIH0KKwogICAgIF9yZW1lbWJlclRyZWVF
bGVtZW50KGVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2tub3duVHJlZUVsZW1l
bnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCg==
</data>
<flag name="commit-queue"
          id="332717"
          type_id="3"
          status="-"
          setter="mattbaker"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311764</attachid>
            <date>2017-06-01 15:11:06 -0700</date>
            <delta_ts>2017-06-01 17:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6830</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDJiNTlkMjAuLjkzN2VlZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA2LTAxICBOaWtpdGEgVmFzaWx5
ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYiBT
b2NrZXRzOiBVbmFibGUgdG8gaW5zcGVjdCBhIFdlYlNvY2tldCB0aGF0IHJlY2VpdmVzID41MCBt
ZXNzYWdlcyBwZXIgc2Vjb25kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE5MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDk1ODYzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE1hdHQgQmFrZXIuCisKKyAgICAgICAgRXZlcnkgc2l6ZSBpbmNy
ZWFzZSBvZiBhIHJlc291cmNlIGNhdXNlcyBhIHNpZGViYXIgaXRlbSB0byBiZSByZS1hdHRhY2hl
ZCB0byB0aGUgRE9NLiBTZW5kaW5nIG9yCisgICAgICAgIHJlY2VpdmluZyBhIFdlYlNvY2tldCBt
ZXNzYWdlIGNhdXNlcyBhIHNpemUgaW5jcmVhc2UuIFdoZW4gc2l6ZSBpbmNyZWFzZSBoYXBwZW5z
IHRvbyBmcmVxdWVudGx5LAorICAgICAgICB0aGUgZ28tdG8gYXJyb3cgc3RhcnRzIHRvIGZsaWNr
ZXIgYW5kIGJlY29tZXMgdW5jbGlja2FibGUuIFRoaXMgcGF0Y2ggbWFrZXMgc3VyZSBhIHNpZGVi
YXIgaXRlbSBnZXRzCisgICAgICAgIHJlLWF0dGFjaGVkIG9ubHkgd2hlbiBpdHMgcG9zaXRpb24g
KGluZGV4KSBjaGFuZ2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICBBZGQgdGhlIGdvLXRvIGFycm93IGFuZCBjbG9zZSBi
dXR0b25zIHdoZW4gdHJlZUVsZW1lbnQuc3RhdHVzIGlzIGEgc3Bpbm5lciBlbGVtZW50LgorCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVs
ZW1lbnRBZGRlZE9yQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOgorICAgICAgICBTZXR0aW5nIHN0YXR1cyB0
byAiIiByZW1vdmVzIHRoZSBnby10byBhcnJvdyBhbmQgY2xvc2UgYnV0dG9ucyBpbiB0aGUgTmV0
d29yayB0YWIuCisgICAgICAgIE9ubHkgc2V0IHN0YXR1cyB0byAiIiB0byByZW1vdmUgdGhlIHNw
aW5uZXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWQu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUuX3Jl
ZnJlc2hEaXJ0eURhdGFHcmlkTm9kZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90
eXBlLnJlYXR0YWNoSWZJbmRleENoYW5nZWQpOiBBZGRlZC4KKwogMjAxNy0wNS0zMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IERlYnVnIHZpZXcgdG8gU2V0dGluZ3MgdGFiIGZvciBkZWJ1ZyBzZXR0aW5ncyBhbmQgZXhwZXJp
bWVudGFsIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXR3b3JrU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1NpZGViYXJQYW5lbC5qcwppbmRleCA4ODEy
M2UzLi5hNTE0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtTaWRlYmFyUGFuZWwuanMKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCA9IGNsYXNzIE5ldHdv
cmtTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0bwogCiAgICAgdHJlZUVsZW1lbnRBZGRl
ZE9yQ2hhbmdlZCh0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIGlmICh0cmVlRWxlbWVudC5z
dGF0dXMgfHwgIXRyZWVFbGVtZW50LnRyZWVPdXRsaW5lKQorICAgICAgICBpZiAodHJlZUVsZW1l
bnQuc3RhdHVzICYmIHRyZWVFbGVtZW50LnN0YXR1c1tXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGVi
YXJQYW5lbC5UcmVlRWxlbWVudFN0YXR1c0J1dHRvblN5bWJvbF0gfHwgIXRyZWVFbGVtZW50LnRy
ZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBmcmFnbWVudCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKQEAgLTE3Myw2ICsxNzMsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCA9IGNsYXNzIE5ldHdvcmtTaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXZWJJbnNwZWN0bwogICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChnb1Rv
QnV0dG9uLmVsZW1lbnQpOwogCiAgICAgICAgIHRyZWVFbGVtZW50LnN0YXR1cyA9IGZyYWdtZW50
OworICAgICAgICB0cmVlRWxlbWVudC5zdGF0dXNbV2ViSW5zcGVjdG9yLk5ldHdvcmtTaWRlYmFy
UGFuZWwuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b25TeW1ib2xdID0gdHJ1ZTsKICAgICB9CiAKICAg
ICAvLyBQcml2YXRlCkBAIC0yMzAsNSArMjMxLDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtTaWRl
YmFyUGFuZWwgPSBjbGFzcyBOZXR3b3JrU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG8K
IAogV2ViSW5zcGVjdG9yLk5ldHdvcmtTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sID0g
U3ltYm9sKCJyZXNvdXJjZS10eXBlIik7CiBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5l
bC5UcmVlRWxlbWVudFN5bWJvbCA9IFN5bWJvbCgidHJlZS1lbGVtZW50Iik7CitXZWJJbnNwZWN0
b3IuTmV0d29ya1NpZGViYXJQYW5lbC5UcmVlRWxlbWVudFN0YXR1c0J1dHRvblN5bWJvbCA9IFN5
bWJvbCgidHJlZS1lbGVtZW50LXN0YXR1cy1idXR0b24iKTsKIAogV2ViSW5zcGVjdG9yLk5ldHdv
cmtTaWRlYmFyUGFuZWwuU2hvd2luZ05ldHdvcmtHcmlkQ29udGVudFZpZXdDb29raWVLZXkgPSAi
bmV0d29yay1zaWRlYmFyLXBhbmVsLXNob3dpbmctbmV0d29yay1ncmlkLWNvbnRlbnQtdmlldyI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCA0ZjMzNGRlLi4xNWEzNGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKQEAgLTE3NywxMCArMTc3LDEyIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgUmVzb3VyY2VUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3RvCiAKICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmZpbmlz
aGVkIHx8IHRoaXMuX3Jlc291cmNlLmZhaWxlZCkgewogICAgICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBzcGlubmVyLgotICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSAiIjsKKyAgICAgICAgICAgIGlm
ICh0aGlzLnN0YXR1cyAmJiB0aGlzLnN0YXR1c1tXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxl
bWVudC5TcGlubmVyU3ltYm9sXSkKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9ICIiOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IHNwaW5uZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7CiAgICAgICAgICAgICB0aGlzLnN0YXR1
cyA9IHNwaW5uZXIuZWxlbWVudDsKKyAgICAgICAgICAgIHRoaXMuc3RhdHVzW1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVFbGVtZW50LlNwaW5uZXJTeW1ib2xdID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjA2LDMgKzIwOCw1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVt
ZW50ID0gY2xhc3MgUmVzb3VyY2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3RvCiAKIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1l
ID0gInJlc291cmNlLWljb24iOwogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuRmFp
bGVkU3R5bGVDbGFzc05hbWUgPSAiZmFpbGVkIjsKKworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUVsZW1lbnQuU3Bpbm5lclN5bWJvbCA9IFN5bWJvbCgic3Bpbm5lciIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3Jp
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWQuanMKaW5kZXggZWNiNGQ0Ny4uMzIzNDNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFH
cmlkLmpzCkBAIC0yNjcsMTYgKzI2Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
ID0gY2xhc3MgVGltZWxpbmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhCiAgICAg
ICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hy
b25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9kZSk7CiAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CiAKLSAgICAgICAgICAgIGxldCB3YXNT
ZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOwotCi0gICAgICAgICAgICBjb25zb2xlLmFz
c2VydCghdHJlZUVsZW1lbnQucGFyZW50IHx8IHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZU91
dGxpbmUpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZU91dGxp
bmUpCi0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQp
OwotCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5z
ZXJ0aW9uSW5kZXgpOwotCi0gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCi0gICAgICAgICAg
ICAgICAgdHJlZUVsZW1lbnQuc2VsZWN0KCk7CisgICAgICAgICAgICB0cmVlT3V0bGluZS5yZWF0
dGFjaElmSW5kZXhDaGFuZ2VkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleCk7CiAKICAgICAg
ICAgICAgIC8vIEFkZGluZyB0aGUgdHJlZSBlbGVtZW50IGJhY2sgdG8gdGhlIHRyZWUgb3V0bGlu
ZSBzdWJqZWN0cyBpdCB0byBmaWx0ZXJzLgogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGtl
ZXAgdGhlIGhpZGRlbiBzdGF0ZSBpbi1zeW5jIHdoaWxlIHRoZSBzeW5jaHJvbml6ZXIgaXMgZGlz
YWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGJhZTU5NWIuLjllNjgyNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCkBAIC0zNDYsNiArMzQ2LDIzIEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9IGNs
YXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
LmNoaWxkcmVuID0gW107CiAgICAgfQogCisgICAgcmVhdHRhY2hJZkluZGV4Q2hhbmdlZCh0cmVl
RWxlbWVudCwgaW5zZXJ0aW9uSW5kZXgpCisgICAgeworICAgICAgICBpZiAodGhpcy5jaGlsZHJl
bltpbnNlcnRpb25JbmRleF0gPT09IHRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGxldCB3YXNTZWxlY3RlZCA9IHRyZWVFbGVtZW50LnNlbGVjdGVkOworCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0cmVlRWxlbWVudC5wYXJlbnQgfHwgdHJlZUVsZW1lbnQucGFy
ZW50ID09PSB0aGlzKTsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50LnBhcmVudCA9PT0gdGhpcykK
KyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOworCisgICAgICAgIHRo
aXMuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4KTsKKworICAgICAgICBp
ZiAod2FzU2VsZWN0ZWQpCisgICAgICAgICAgICB0cmVlRWxlbWVudC5zZWxlY3QoKTsKKyAgICB9
CisKICAgICBfcmVtZW1iZXJUcmVlRWxlbWVudChlbGVtZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>