<?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>196280</bug_id>
          
          <creation_ts>2019-03-26 17:17:24 -0700</creation_ts>
          <short_desc>Web Inspector: Crash when interacting with Template Content in Console</short_desc>
          <delta_ts>2019-08-02 13:23:19 -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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1521548</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-03-26 17:17:24 -0700</bug_when>
    <thetext>Crash when interacting with Template Content in Console

Steps to Reproduce:
1. Inspect data:text/html,&lt;template&gt;
2. Select &quot;Template Content&quot; node inside of the &lt;template&gt; element
3. js&gt; $0.|
  =&gt; CRASH

Seems like the targetDocument-&gt;domWindow() is nullptr in WebCore::canAccessDocument?

Thread[0] EXC_BAD_ACCESS (SIGSEGV) (KERN_INVALID_ADDRESS at 0x0000000000000078)
[  0] 0x00007fff5253a12f WebCore`WebCore::DOMWindow::crossDomainAccessErrorMessage(WebCore::DOMWindow const&amp;, WebCore::IncludeTargetOrigin) [inlined] WebCore::ContextDestructionObserver::scriptExecutionContext() const at ContextDestructionObserver.h:38:69
       34  	public:
       35  	    WEBCORE_EXPORT explicit ContextDestructionObserver(ScriptExecutionContext*);
       36  	    WEBCORE_EXPORT virtual void contextDestroyed();
       37  	
    -&gt; 38  	    ScriptExecutionContext* scriptExecutionContext() const { return m_scriptExecutionContext; }
       39  	
       40  	protected:
       41  	    WEBCORE_EXPORT virtual ~ContextDestructionObserver();
       42  	    void observeContext(ScriptExecutionContext*);

[  0] 0x00007fff5253a12f WebCore`WebCore::DOMWindow::crossDomainAccessErrorMessage(WebCore::DOMWindow const&amp;, WebCore::IncludeTargetOrigin) [inlined] WebCore::DOMWindow::document() const at DOMWindow.cpp:1435
       1431	}
       1432	
       1433	Document* DOMWindow::document() const
       1434	{
    -&gt; 1435	    return downcast&lt;Document&gt;(ContextDestructionObserver::scriptExecutionContext());
       1436	}
       1437	
       1438	StyleMedia&amp; DOMWindow::styleMedia()
       1439	{
    
[  0] 0x00007fff5253a12f WebCore`WebCore::DOMWindow::crossDomainAccessErrorMessage(WebCore::DOMWindow const&amp;, WebCore::IncludeTargetOrigin) + 111 at DOMWindow.cpp:2210
       2206	    ASSERT(!activeWindow.document()-&gt;securityOrigin().canAccess(document()-&gt;securityOrigin()));
       2207	
       2208	    // FIXME: This message, and other console messages, have extra newlines. Should remove them.
       2209	    SecurityOrigin&amp; activeOrigin = activeWindow.document()-&gt;securityOrigin();
    -&gt; 2210	    SecurityOrigin&amp; targetOrigin = document()-&gt;securityOrigin();
       2211	    String message;
       2212	    if (includeTargetOrigin == IncludeTargetOrigin::Yes)
       2213	        message = makeString(&quot;Blocked a frame with origin \&quot;&quot;, activeOrigin.toString(), &quot;\&quot; from accessing a frame with origin \&quot;&quot;, targetOrigin.toString(), &quot;\&quot;. &quot;);
       2214	    else
    
[  1] 0x00007fff5131b9e2 WebCore`WebCore::canAccessDocument(JSC::ExecState*, WebCore::Document*, WebCore::SecurityReportingOption) + 210 at JSDOMBindingSecurity.cpp:63:89
       59  	    case ThrowSecurityError:
       60  	        throwSecurityError(*state, scope, targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active, IncludeTargetOrigin::No));
       61  	        break;
       62  	    case LogSecurityError:
    -&gt; 63  	        printErrorMessageForFrame(targetDocument-&gt;frame(), targetDocument-&gt;domWindow()-&gt;crossDomainAccessErrorMessage(active, IncludeTargetOrigin::Yes));
       64  	        break;
       65  	    case DoNotReportSecurityError:
       66  	        break;
       67  	    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557141</commentid>
    <comment_count>1</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-30 17:13:43 -0700</bug_when>
    <thetext>This happens because targetDocument-&gt;domWindow() is NULL:

#2  0x00007f09eaf54d9c in WebCore::DOMWindow::crossDomainAccessErrorMessage (this=0x0, activeWindow=...,                                │
    includeTargetOrigin=WebCore::IncludeTargetOrigin::Yes) at ../../Source/WebCore/page/DOMWindow.cpp:2271                              │

this is apparently because the template elements are created in the template document [1] which doesn&apos;t have a DOM window. I wonder why they have different security origins and how come scripts in the page don&apos;t hit the same check when they access the same template content. Any clue?


[1] https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/Document.h#L1309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557152</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-30 17:33:20 -0700</bug_when>
    <thetext>Accessing the template element&apos;s content from a script in the same document doesn&apos;t require crossing frame boundaries, so it doesn&apos;t access any attributes marked as [CheckSecurityForNode] in .idl and hence BindingSecurity::checkSecurityForNode is not called in that scenario.

I see 2 possible fixes:
1) Inside InspectorDOMAgent::nodeAsScriptValue check if the node is from a template document and if so simply pass host document to the binding security check, instead of the node itself.

2) Update BindingSecurity::shouldAllowAccessToNode to use target-&gt;document()-&gt;templateDocumentHost() (if one is available) instead of target-&gt;document().

The former one looks safer as it will only affect inspector&apos;s code. Joe, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557168</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-30 18:48:50 -0700</bug_when>
    <thetext>&gt; this is apparently because the template elements are created in the template
&gt; document [1] which doesn&apos;t have a DOM window. I wonder why they have
&gt; different security origins and how come scripts in the page don&apos;t hit the
&gt; same check when they access the same template content. Any clue?

Interesting. I was not aware of the special Template Document.

(In reply to Yury Semikhatsky from comment #2)
&gt; Accessing the template element&apos;s content from a script in the same document
&gt; doesn&apos;t require crossing frame boundaries, so it doesn&apos;t access any
&gt; attributes marked as [CheckSecurityForNode] in .idl and hence
&gt; BindingSecurity::checkSecurityForNode is not called in that scenario.

Makes sense.

&gt; I see 2 possible fixes:
&gt; 1) Inside InspectorDOMAgent::nodeAsScriptValue check if the node is from a
&gt; template document and if so simply pass host document to the binding
&gt; security check, instead of the node itself.
&gt; 
&gt; 2) Update BindingSecurity::shouldAllowAccessToNode to use
&gt; target-&gt;document()-&gt;templateDocumentHost() (if one is available) instead of
&gt; target-&gt;document().
&gt; 
&gt; The former one looks safer as it will only affect inspector&apos;s code. Joe,
&gt; what do you think?

I&apos;d go with the former as well for now. This particular check is originating from Inspector code anyways.

But it might be worth asking those familiar with the Template Document concept (likely Ryosuke). Can JavaScript ever get access to those nodes outside of Web Inspector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557169</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-30 18:59:49 -0700</bug_when>
    <thetext>&gt; &gt; 2) Update BindingSecurity::shouldAllowAccessToNode to use
&gt; &gt; target-&gt;document()-&gt;templateDocumentHost() (if one is available) instead of
&gt; &gt; target-&gt;document().
&gt; &gt; 
&gt; &gt; The former one looks safer as it will only affect inspector&apos;s code. Joe,
&gt; &gt; what do you think?
&gt; 
&gt; I&apos;d go with the former as well for now. This particular check is originating
&gt; from Inspector code anyways.
&gt; 
&gt; But it might be worth asking those familiar with the Template Document
&gt; concept (likely Ryosuke). Can JavaScript ever get access to those nodes
&gt; outside of Web Inspector?

I just asked Ryosuke, and he had some good points.

  (1) The DOMWindow is only used for the `crossDomainAccessErrorMessage` string generation. Maybe accessing a DOMWindow could be eliminated entirely.
  (2) Having `canAccessDocument` itself handle template nodes would make sense.

If you avoid this crash, what happens with Web Inspector? Is a node actually get printed to the console and usable, or do you just get null back with a Security Error / exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557277</commentid>
    <comment_count>5</comment_count>
      <attachid>375225</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-31 09:00:27 -0700</bug_when>
    <thetext>Created attachment 375225
sample page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557278</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-31 09:01:20 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #4)
&gt; If you avoid this crash, what happens with Web Inspector? Is a node actually
&gt; get printed to the console and usable, or do you just get null back with a
&gt; Security Error / exception?
The node is printed out and expandable. While writing a test I found another problem though, evaluating code like &apos;inspect(document.getElementsByTagName(&apos;template&apos;)[0].content.firstChild)&apos; in the attached page will trigger errors in the frontend. I&apos;ll try to fix that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557369</commentid>
    <comment_count>7</comment_count>
      <attachid>375243</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-31 14:21:39 -0700</bug_when>
    <thetext>Created attachment 375243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557401</commentid>
    <comment_count>8</comment_count>
      <attachid>375243</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-07-31 14:58:33 -0700</bug_when>
    <thetext>Comment on attachment 375243
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBindingSecurity.cpp:53
&gt; +    if (targetDocument-&gt;templateDocumentHost())

Rather than call this twice, you could declare a variable inside the `if`:

```cpp
    if (auto* templateDocumentHost = targetDocument-&gt;templateDocumentHost())
        targetDocument = templateDocumentHost;
```

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2598
&gt; +    if (document-&gt;templateDocumentHost())

Ditto (&gt;JSDOMBindingSecurity.cpp:53)

&gt; LayoutTests/inspector/dom/inspect-template-node.html:10
&gt; +    InspectorProtocol.sendCommand(&quot;Runtime.evaluate&quot;, {&quot;expression&quot;: &quot;document.getElementsByTagName(&apos;template&apos;)[0].content.firstChild&quot;, &quot;includeCommandLineAPI&quot;: true}, function(response) {

Can you give the `&lt;template&gt;` a unique id/class so it&apos;s easier to query for?

&gt; LayoutTests/inspector/dom/inspect-template-node.html:12
&gt; +        resolveNode(response.result.result.objectId);

Style: I know it would still work otherwise, but I prefer declaring variables/functions before they&apos;re used, so I&apos;d reverse the order of all the functions.

&gt; LayoutTests/inspector/dom/inspect-template-node.html:33
&gt; +            if (response.result.result.value == &quot;DIV&quot;) {
&gt; +                ProtocolTest.log(&quot;PASS: $0 value is correct&quot;);

You can use `ProtocolTest.expectEqual(response.result.result.value, &quot;DIV&quot;, &quot;PASS: $0 value is correct&quot;)`.

&gt; LayoutTests/inspector/dom/inspect-template-node.html:41
&gt; +    function assertResponse(message, response) {

You can use `ProtocolTest.checkForError` instead of this.

&gt; LayoutTests/inspector/dom/inspect-template-node.html:54
&gt; +&lt;body onload=&quot;runTest()&quot;&gt;
&gt; +&lt;/body&gt;

Please include a `&lt;p&gt;...&lt;/p&gt;` description of what this test is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557419</commentid>
    <comment_count>9</comment_count>
      <attachid>375243</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-31 15:37:30 -0700</bug_when>
    <thetext>Comment on attachment 375243
Patch

r=me with Devin&apos;s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557465</commentid>
    <comment_count>10</comment_count>
      <attachid>375273</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-31 17:43:38 -0700</bug_when>
    <thetext>Created attachment 375273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557466</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-07-31 17:44:18 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #8)
&gt; Comment on attachment 375243 [details]

Addressed all comments. PTAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557485</commentid>
    <comment_count>12</comment_count>
      <attachid>375273</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-31 18:48:11 -0700</bug_when>
    <thetext>Comment on attachment 375273
Patch

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

&gt; LayoutTests/inspector/dom/inspect-template-node-expected.txt:1
&gt; +Test that document inside a template node can be passed to inspect() function in the console and refernced as $0.

Typo: &quot;refernced&quot; =&gt; &quot;referenced&quot;

&gt; LayoutTests/inspector/dom/inspect-template-node-expected.txt:7
&gt; +PASS: evaluate an element in a template
&gt; +PASS: resolved js object id to DOM node id
&gt; +PASS: set $0 to the template element
&gt; +PASS: evaluate $0
&gt; +PASS: $0 value is correct

Normally these lines would start with capital letters and end in a period. We aren&apos;t entirely consistent... but a capital letter would make the output read a bit better!

&gt; LayoutTests/inspector/dom/inspect-template-node.html:9
&gt; +    function assertResponse(message, response) {

I&apos;d probably change the order of arguments here. (response, message), so the string is at the end like most other functions.

&gt; LayoutTests/inspector/dom/inspect-template-node.html:10
&gt; +        InspectorProtocol.checkForError(response)

Style: semicolon

&gt; LayoutTests/inspector/dom/inspect-template-node.html:23
&gt; +        InspectorProtocol.sendCommand(&quot;DOM.setInspectedNode&quot;, {nodeId}, function (response) {

Style: All of these `function (response) {` should not have a space. But you could just arrow function them `(response) =&gt; {`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557619</commentid>
    <comment_count>13</comment_count>
      <attachid>375314</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-08-01 09:29:42 -0700</bug_when>
    <thetext>Created attachment 375314
test comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557621</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-08-01 09:31:14 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #12)
&gt; Comment on attachment 375273 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375273&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector/dom/inspect-template-node-expected.txt:1
&gt; &gt; +Test that document inside a template node can be passed to inspect() function in the console and refernced as $0.
&gt; 
&gt; Typo: &quot;refernced&quot; =&gt; &quot;referenced&quot;
&gt; 
&gt; &gt; LayoutTests/inspector/dom/inspect-template-node-expected.txt:7
&gt; &gt; +PASS: evaluate an element in a template
&gt; &gt; +PASS: resolved js object id to DOM node id
&gt; &gt; +PASS: set $0 to the template element
&gt; &gt; +PASS: evaluate $0
&gt; &gt; +PASS: $0 value is correct
&gt; 
&gt; Normally these lines would start with capital letters and end in a period.
&gt; We aren&apos;t entirely consistent... but a capital letter would make the output
&gt; read a bit better!
&gt; 
Done.

&gt; &gt; LayoutTests/inspector/dom/inspect-template-node.html:9
&gt; &gt; +    function assertResponse(message, response) {
&gt; 
&gt; I&apos;d probably change the order of arguments here. (response, message), so the
&gt; string is at the end like most other functions.
&gt;
Done.
 
&gt; &gt; LayoutTests/inspector/dom/inspect-template-node.html:10
&gt; &gt; +        InspectorProtocol.checkForError(response)
&gt; 
&gt; Style: semicolon
&gt; 
Done.

&gt; &gt; LayoutTests/inspector/dom/inspect-template-node.html:23
&gt; &gt; +        InspectorProtocol.sendCommand(&quot;DOM.setInspectedNode&quot;, {nodeId}, function (response) {
&gt; 
&gt; Style: All of these `function (response) {` should not have a space. But you
&gt; could just arrow function them `(response) =&gt; {`
Replaced with arrow functions for better readability. I wish something like check-webkit-style could catch formatting issues like these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557682</commentid>
    <comment_count>15</comment_count>
      <attachid>375314</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-01 11:46:19 -0700</bug_when>
    <thetext>Comment on attachment 375314
test comments addressed

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

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2597
&gt; +    Document* document = &amp;node-&gt;document();

Fun fact: you can use std::reference_wrapper for all of your non-null reassignable pointer-like object needs. I&apos;m not sure if it would make this code nicer, but it&apos;s worth considering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557767</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-08-01 15:07:03 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Comment on attachment 375314 [details]
&gt; test comments addressed
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375314&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2597
&gt; &gt; +    Document* document = &amp;node-&gt;document();
&gt; 
&gt; Fun fact: you can use std::reference_wrapper for all of your non-null
&gt; reassignable pointer-like object needs. I&apos;m not sure if it would make this
&gt; code nicer, but it&apos;s worth considering.

I feel like it&apos;d be an overkill here given the limited scope of the local variable and would only hinder readability of the code. But if other reviewers feel strongly about it I can update the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558061</commentid>
    <comment_count>17</comment_count>
      <attachid>375314</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-02 12:53:07 -0700</bug_when>
    <thetext>Comment on attachment 375314
test comments addressed

r=me! Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558077</commentid>
    <comment_count>18</comment_count>
      <attachid>375314</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-02 13:22:25 -0700</bug_when>
    <thetext>Comment on attachment 375314
test comments addressed

Clearing flags on attachment: 375314

Committed r248175: &lt;https://trac.webkit.org/changeset/248175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558078</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-02 13:22:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558079</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-02 13:23:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/53876640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>375225</attachid>
            <date>2019-07-31 09:00:27 -0700</date>
            <delta_ts>2019-07-31 09:00:27 -0700</delta_ts>
            <desc>sample page</desc>
            <filename>tmpl.html</filename>
            <type>text/html</type>
            <size>361</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">PGh0bWw+Cgo8aGVhZD4KPHRlbXBsYXRlPjxkaXYgaWQ9ImEiPjwvZGl2PjwvdGVtcGxhdGU+Cjwv
aGVhZD4KPHNjcmlwdD4KZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7CglsZXQgbm9kZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZW1wbGF0ZScpWzBdLmNvbnRlbnQuZmlyc3RDaGls
ZDsKCWNvbnNvbGUubG9nKG5vZGUpOwoJbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKCWQudGV4dENvbnRlbnQgPSAibm9kZSA9ICIgKyBub2RlOwoJZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkKTsKfQo8L3NjcmlwdD4KPGJvZHkgb25jbGljaz0iaGFuZGxlQ2xpY2soKSI+
Cgo8L2JvZHk+Cgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375243</attachid>
            <date>2019-07-31 14:21:39 -0700</date>
            <delta_ts>2019-07-31 17:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196280-20190731142138.patch</filename>
            <type>text/plain</type>
            <size>6429</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGQyNDE4YjVmYThj
YjAzNDIxOTcyZGI5NDZlNTUzZWQ0MTRkZC4uMTA0M2ZkMTA2ZDdiNmE0YzdiNGIwYjFjMjg0NDY5
ZDFjYzJlMGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTMxICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENyYXNoIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBUZW1wbGF0ZSBDb250ZW50IGluIENvbnNv
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bkFjY2Vzc0RvY3VtZW50KTogaWYgdGFyZ2V0IGVsZW1lbnQgaXMgZnJvbSBhCisgICAgICAgIDx0
ZW1wbGF0ZT4gdXNlIGl0cyBob3N0IGRvY3VtZW50IHRvIGNoZWNrIHRoZSBhY2Nlc3MuIEVsZW1l
bnRzCisgICAgICAgIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQgYWx3YXlzIGhhdmUgYWNjZXNzIHRv
IGl0cyB0ZW1wbGF0ZSBlbGVtZW50cyBjb250ZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKTogdGVtcGxhdGVzIGFyZSBjcmVhdGVkIGluCisgICAgICAgIHNw
ZWNpYWwgdGVtcGxhdGUgZG9jdW1lbnQgd2hpY2ggZG9lc24ndCBoYXZlIGEgZnJhbWUsIGluIHN1
Y2ggY2FzZSBnZXQKKyAgICAgICAgdGhlIGZyYW1lIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQuCisK
IDIwMTktMDctMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzA1OCk6IFtHU3RyZWFtZXJdIFdlYktpdFdlYlNyYydzIGlu
dGVybmFsIHF1ZXVlIGNhbiBleGhhdXN0IHRoZSBXZWJQcm9jZXNzIG1lbW9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwCmluZGV4
IDc4NmEwOWRiODQ0YzE1MDU5NzcwM2E4ZTRhOTRlNmRjNTNiYmUwOTguLjQwZDg0ZWJiMjBjNGY4
NTg0MDkyMzI4YzZhNGQ0OTQxMTUxM2Y1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
RG9jdW1lbnQqIHRhcmdldERvY3UKICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAodGFyZ2V0RG9jdW1lbnQtPnRlbXBsYXRlRG9jdW1lbnRI
b3N0KCkpCisgICAgICAgIHRhcmdldERvY3VtZW50ID0gdGFyZ2V0RG9jdW1lbnQtPnRlbXBsYXRl
RG9jdW1lbnRIb3N0KCk7CisKICAgICBET01XaW5kb3cmIGFjdGl2ZSA9IGFjdGl2ZURPTVdpbmRv
dygqc3RhdGUpOwogCiAgICAgaWYgKGFjdGl2ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LmNhbkFjY2Vzcyh0YXJnZXREb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IDBkNTk3ODVjMWVjNjgyYjU5YmEwOTcyY2E5NjA0ZGNiY2Q5N2QxMjQuLmRkMzE0MjNkMTg2
ZWI5OGQzODdiY2VjOTc3OTM3ZmU2M2U2ZTgyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yNTk0LDcgKzI1
OTQsMTAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5k
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVO
b2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7Ci0gICAgYXV0byog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gJm5vZGUtPmRvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LT50ZW1wbGF0ZURvY3VtZW50
SG9zdCgpKQorICAgICAgICBkb2N1bWVudCA9IGRvY3VtZW50LT50ZW1wbGF0ZURvY3VtZW50SG9z
dCgpOworICAgIGF1dG8qIGZyYW1lID0gIGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM1MTE1MGYyZGE1YTBiZjI1
ZWRhYjNjMjlkM2YzYjMxY2E0OGM1My4uYjJhNGZkY2QwNDIzOGQ4YTkxZjI1ODU5NWJiYTkyYjBj
MzBjZWRiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA3LTMxICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENyYXNo
IHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBUZW1wbGF0ZSBDb250ZW50IGluIENvbnNvbGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS9pbnNwZWN0LXRlbXBsYXRlLW5vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tL2luc3BlY3QtdGVtcGxhdGUtbm9kZS5odG1sOiBBZGRlZC4KKwogMjAxOS0w
Ny0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW9yZ2FuaXplIFVJU2NyaXB0Q29udHJvbGxlciBpbnRvIHBsYXRmb3JtLXNwZWNpZmljIHN1YmNs
YXNzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zcGVjdC10ZW1w
bGF0ZS1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zcGVj
dC10ZW1wbGF0ZS1ub2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjBlZTBiZjU2NTA2NGVl
ZmMwMzkyNmMwN2IwZjVlYzRiMzQ4NzU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRlbXBsYXRlLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNiBAQAorUEFTUzogZXZhbHVhdGUgYW4gZWxlbWVudCBpbiBhIHRlbXBsYXRlCitQQVNTOiBy
ZXNvbHZlZCBqcyBvYmplY3QgaWQgdG8gRE9NIG5vZGUgaWQKK1BBU1M6IHNldCAkMCB0byB0aGUg
dGVtcGxhdGUgZWxlbWVudAorUEFTUzogZXZhbHVhdGUgJDAKK1BBU1M6ICQwIHZhbHVlIGlzIGNv
cnJlY3QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRl
bXBsYXRlLW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zcGVjdC10ZW1w
bGF0ZS1ub2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ5YjBhMTMyZTA1OTRkMTVmMjBmYTY3MWQ0NzVi
NjhjNjU2OWVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
aW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRlbXBsYXRlPjxkaXY+dGV4dDwvZGl2PjwvdGVtcGxhdGU+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3Rv
Y29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJET00uZ2V0RG9jdW1lbnQiLCB7fSk7Cisg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlJ1bnRpbWUuZXZhbHVhdGUiLCB7ImV4
cHJlc3Npb24iOiAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RlbXBsYXRlJylbMF0u
Y29udGVudC5maXJzdENoaWxkIiwgImluY2x1ZGVDb21tYW5kTGluZUFQSSI6IHRydWV9LCBmdW5j
dGlvbihyZXNwb25zZSkgeworICAgICAgICBhc3NlcnRSZXNwb25zZSgiZXZhbHVhdGUgYW4gZWxl
bWVudCBpbiBhIHRlbXBsYXRlIiwgcmVzcG9uc2UpOworICAgICAgICByZXNvbHZlTm9kZShyZXNw
b25zZS5yZXN1bHQucmVzdWx0Lm9iamVjdElkKTsKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIHJl
c29sdmVOb2RlKG9iamVjdElkKSB7CisgICAgICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21t
YW5kKCJET00ucmVxdWVzdE5vZGUiLCB7b2JqZWN0SWR9LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsK
KyAgICAgICAgICAgIGFzc2VydFJlc3BvbnNlKCJyZXNvbHZlZCBqcyBvYmplY3QgaWQgdG8gRE9N
IG5vZGUgaWQiLCByZXNwb25zZSk7CisgICAgICAgICAgICBzZXRJbnNwZWN0ZWROb2RlKHJlc3Bv
bnNlLnJlc3VsdC5ub2RlSWQpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
ZXRJbnNwZWN0ZWROb2RlKG5vZGVJZCkgeworICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5k
Q29tbWFuZCgiRE9NLnNldEluc3BlY3RlZE5vZGUiLCB7bm9kZUlkfSwgZnVuY3Rpb24gKHJlc3Bv
bnNlKSB7CisgICAgICAgICAgICBhc3NlcnRSZXNwb25zZSgic2V0ICQwIHRvIHRoZSB0ZW1wbGF0
ZSBlbGVtZW50IiwgcmVzcG9uc2UpOworICAgICAgICAgICAgZXZhbHVhdGUkMCgpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBldmFsdWF0ZSQwKCkgeworICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHsiZXhwcmVzc2lv
biI6ICIkMC5ub2RlTmFtZSIsICJpbmNsdWRlQ29tbWFuZExpbmVBUEkiOiB0cnVlfSwgZnVuY3Rp
b24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGFzc2VydFJlc3BvbnNlKCJldmFsdWF0ZSAkMCIs
IHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQucmVzdWx0LnZhbHVl
ID09ICJESVYiKSB7CisgICAgICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUEFTUzogJDAg
dmFsdWUgaXMgY29ycmVjdCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBQcm90b2NvbFRlc3QubG9nKCJGQUlMOiAkMCBoYXMgdW5leHBlY3RlZCB2YWx1ZTogIiArIEpT
T04uc3RyaW5naWZ5KHJlc3BvbnNlLCBudWxsLCA0KSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBQcm90b2NvbFRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGFzc2VydFJlc3BvbnNlKG1lc3NhZ2UsIHJlc3BvbnNlKSB7CisgICAgICAg
IGlmIChyZXNwb25zZS5yZXN1bHQpIHsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBB
U1M6ICIgKyBtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIFByb3RvY29sVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKG1lc3NhZ2UgKyAiXG4gICAgVW5leHBlY3RlZCByZXNwb25zZTogIiArIEpTT04uc3RyaW5n
aWZ5KHJlc3BvbnNlLCBudWxsLCA0KSk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375273</attachid>
            <date>2019-07-31 17:43:38 -0700</date>
            <delta_ts>2019-08-01 09:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196280-20190731174338.patch</filename>
            <type>text/plain</type>
            <size>6332</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGQyNDE4YjVmYThj
YjAzNDIxOTcyZGI5NDZlNTUzZWQ0MTRkZC4uMTA0M2ZkMTA2ZDdiNmE0YzdiNGIwYjFjMjg0NDY5
ZDFjYzJlMGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTMxICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENyYXNoIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBUZW1wbGF0ZSBDb250ZW50IGluIENvbnNv
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bkFjY2Vzc0RvY3VtZW50KTogaWYgdGFyZ2V0IGVsZW1lbnQgaXMgZnJvbSBhCisgICAgICAgIDx0
ZW1wbGF0ZT4gdXNlIGl0cyBob3N0IGRvY3VtZW50IHRvIGNoZWNrIHRoZSBhY2Nlc3MuIEVsZW1l
bnRzCisgICAgICAgIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQgYWx3YXlzIGhhdmUgYWNjZXNzIHRv
IGl0cyB0ZW1wbGF0ZSBlbGVtZW50cyBjb250ZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKTogdGVtcGxhdGVzIGFyZSBjcmVhdGVkIGluCisgICAgICAgIHNw
ZWNpYWwgdGVtcGxhdGUgZG9jdW1lbnQgd2hpY2ggZG9lc24ndCBoYXZlIGEgZnJhbWUsIGluIHN1
Y2ggY2FzZSBnZXQKKyAgICAgICAgdGhlIGZyYW1lIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQuCisK
IDIwMTktMDctMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzA1OCk6IFtHU3RyZWFtZXJdIFdlYktpdFdlYlNyYydzIGlu
dGVybmFsIHF1ZXVlIGNhbiBleGhhdXN0IHRoZSBXZWJQcm9jZXNzIG1lbW9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwCmluZGV4
IDc4NmEwOWRiODQ0YzE1MDU5NzcwM2E4ZTRhOTRlNmRjNTNiYmUwOTguLjBmODAyZjE3NzkyZTE3
NWQ0ZGVkZmU1NDgzNmUwMzc1Mjc5Y2Y5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
RG9jdW1lbnQqIHRhcmdldERvY3UKICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoYXV0byogdGVtcGxhdGVIb3N0ID0gdGFyZ2V0RG9jdW1l
bnQtPnRlbXBsYXRlRG9jdW1lbnRIb3N0KCkpCisgICAgICAgIHRhcmdldERvY3VtZW50ID0gdGVt
cGxhdGVIb3N0OworCiAgICAgRE9NV2luZG93JiBhY3RpdmUgPSBhY3RpdmVET01XaW5kb3coKnN0
YXRlKTsKIAogICAgIGlmIChhY3RpdmUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5B
Y2Nlc3ModGFyZ2V0RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAw
ZDU5Nzg1YzFlYzY4MmI1OWJhMDk3MmNhOTYwNGRjYmNkOTdkMTI0Li42ZmY4MDkwNjYxZjUyZjJj
YzJlMDNmZWU4ZDhjZWE2ODRkZTI0NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjU5NCw3ICsyNTk0LDEw
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAKIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewotICAgIGF1dG8qIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZu
b2RlLT5kb2N1bWVudCgpOworICAgIGlmIChhdXRvKiB0ZW1wbGF0ZUhvc3QgPSBkb2N1bWVudC0+
dGVtcGxhdGVEb2N1bWVudEhvc3QoKSkKKyAgICAgICAgZG9jdW1lbnQgPSB0ZW1wbGF0ZUhvc3Q7
CisgICAgYXV0byogZnJhbWUgPSAgZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzUxMTUwZjJkYTVhMGJmMjVlZGFi
M2MyOWQzZjNiMzFjYTQ4YzUzLi5iMmE0ZmRjZDA0MjM4ZDhhOTFmMjU4NTk1YmJhOTJiMGMzMGNl
ZGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDctMzEgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3Jhc2ggd2hl
biBpbnRlcmFjdGluZyB3aXRoIFRlbXBsYXRlIENvbnRlbnQgaW4gQ29uc29sZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MjgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2lu
c3BlY3QtdGVtcGxhdGUtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA3LTI4
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlb3Jn
YW5pemUgVUlTY3JpcHRDb250cm9sbGVyIGludG8gcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRlbXBsYXRl
LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRl
bXBsYXRlLW5vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0M2ZlMTA5MzA1OWE1ZDM2NDMw
NDk0ZjRhNjhkN2MyNzQyMzdjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2luc3BlY3QtdGVtcGxhdGUtbm9kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4
IEBACitUZXN0IHRoYXQgZG9jdW1lbnQgaW5zaWRlIGEgdGVtcGxhdGUgbm9kZSBjYW4gYmUgcGFz
c2VkIHRvIGluc3BlY3QoKSBmdW5jdGlvbiBpbiB0aGUgY29uc29sZSBhbmQgcmVmZXJuY2VkIGFz
ICQwLgorCitQQVNTOiBldmFsdWF0ZSBhbiBlbGVtZW50IGluIGEgdGVtcGxhdGUKK1BBU1M6IHJl
c29sdmVkIGpzIG9iamVjdCBpZCB0byBET00gbm9kZSBpZAorUEFTUzogc2V0ICQwIHRvIHRoZSB0
ZW1wbGF0ZSBlbGVtZW50CitQQVNTOiBldmFsdWF0ZSAkMAorUEFTUzogJDAgdmFsdWUgaXMgY29y
cmVjdAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc3BlY3QtdGVt
cGxhdGUtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRlbXBs
YXRlLW5vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjE1NzlkYjgzMTUxOWVmZjFmNzUwNTBkODkwMTYz
YjZlZTI3NTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9p
bnNwZWN0LXRlbXBsYXRlLW5vZGUuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8dGVtcGxhdGUgaWQ9InRtcGwiPjxkaXY+dGV4dDwvZGl2Pjwv
dGVtcGxhdGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGZ1bmN0aW9uIGFzc2VydFJlc3BvbnNlKG1lc3NhZ2UsIHJlc3BvbnNlKSB7Cisg
ICAgICAgIEluc3BlY3RvclByb3RvY29sLmNoZWNrRm9yRXJyb3IocmVzcG9uc2UpCisgICAgICAg
IFByb3RvY29sVGVzdC5sb2coIlBBU1M6ICIgKyBtZXNzYWdlKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBldmFsdWF0ZSQwKCkgeworICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFu
ZCgiUnVudGltZS5ldmFsdWF0ZSIsIHsiZXhwcmVzc2lvbiI6ICIkMC5ub2RlTmFtZSIsICJpbmNs
dWRlQ29tbWFuZExpbmVBUEkiOiB0cnVlfSwgZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAg
ICAgIGFzc2VydFJlc3BvbnNlKCJldmFsdWF0ZSAkMCIsIHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IFByb3RvY29sVGVzdC5leHBlY3RFcXVhbChyZXNwb25zZS5yZXN1bHQucmVzdWx0LnZhbHVlLCAi
RElWIiwgIiQwIHZhbHVlIGlzIGNvcnJlY3QiKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0SW5z
cGVjdGVkTm9kZShub2RlSWQpIHsKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1h
bmQoIkRPTS5zZXRJbnNwZWN0ZWROb2RlIiwge25vZGVJZH0sIGZ1bmN0aW9uIChyZXNwb25zZSkg
eworICAgICAgICAgICAgYXNzZXJ0UmVzcG9uc2UoInNldCAkMCB0byB0aGUgdGVtcGxhdGUgZWxl
bWVudCIsIHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGV2YWx1YXRlJDAoKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGUob2JqZWN0SWQpIHsKKyAgICAgICAg
SW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIkRPTS5yZXF1ZXN0Tm9kZSIsIHtvYmplY3RJ
ZH0sIGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgYXNzZXJ0UmVzcG9uc2UoInJl
c29sdmVkIGpzIG9iamVjdCBpZCB0byBET00gbm9kZSBpZCIsIHJlc3BvbnNlKTsKKyAgICAgICAg
ICAgIHNldEluc3BlY3RlZE5vZGUocmVzcG9uc2UucmVzdWx0Lm5vZGVJZCk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJET00uZ2V0RG9j
dW1lbnQiLCB7fSk7CisgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIlJ1bnRpbWUu
ZXZhbHVhdGUiLCB7ImV4cHJlc3Npb24iOiAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RtcGwn
KS5jb250ZW50LmZpcnN0Q2hpbGQiLCAiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIjogdHJ1ZX0sIGZ1
bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgIGFzc2VydFJlc3BvbnNlKCJldmFsdWF0ZSBhbiBl
bGVtZW50IGluIGEgdGVtcGxhdGUiLCByZXNwb25zZSk7CisgICAgICAgIHJlc29sdmVOb2RlKHJl
c3BvbnNlLnJlc3VsdC5yZXN1bHQub2JqZWN0SWQpOworICAgIH0pOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCBkb2N1bWVu
dCBpbnNpZGUgYSB0ZW1wbGF0ZSBub2RlIGNhbiBiZSBwYXNzZWQgdG8gaW5zcGVjdCgpIGZ1bmN0
aW9uIGluIHRoZSBjb25zb2xlIGFuZCByZWZlcm5jZWQgYXMgJDAuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375314</attachid>
            <date>2019-08-01 09:29:42 -0700</date>
            <delta_ts>2019-08-02 13:22:25 -0700</delta_ts>
            <desc>test comments addressed</desc>
            <filename>bug-196280-20190801092941.patch</filename>
            <type>text/plain</type>
            <size>6345</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3OGQyNDE4YjVmYThj
YjAzNDIxOTcyZGI5NDZlNTUzZWQ0MTRkZC4uMTA0M2ZkMTA2ZDdiNmE0YzdiNGIwYjFjMjg0NDY5
ZDFjYzJlMGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTMxICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENyYXNoIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBUZW1wbGF0ZSBDb250ZW50IGluIENvbnNv
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjI4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bkFjY2Vzc0RvY3VtZW50KTogaWYgdGFyZ2V0IGVsZW1lbnQgaXMgZnJvbSBhCisgICAgICAgIDx0
ZW1wbGF0ZT4gdXNlIGl0cyBob3N0IGRvY3VtZW50IHRvIGNoZWNrIHRoZSBhY2Nlc3MuIEVsZW1l
bnRzCisgICAgICAgIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQgYWx3YXlzIGhhdmUgYWNjZXNzIHRv
IGl0cyB0ZW1wbGF0ZSBlbGVtZW50cyBjb250ZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKTogdGVtcGxhdGVzIGFyZSBjcmVhdGVkIGluCisgICAgICAgIHNw
ZWNpYWwgdGVtcGxhdGUgZG9jdW1lbnQgd2hpY2ggZG9lc24ndCBoYXZlIGEgZnJhbWUsIGluIHN1
Y2ggY2FzZSBnZXQKKyAgICAgICAgdGhlIGZyYW1lIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQuCisK
IDIwMTktMDctMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzA1OCk6IFtHU3RyZWFtZXJdIFdlYktpdFdlYlNyYydzIGlu
dGVybmFsIHF1ZXVlIGNhbiBleGhhdXN0IHRoZSBXZWJQcm9jZXNzIG1lbW9yeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwCmluZGV4
IDc4NmEwOWRiODQ0YzE1MDU5NzcwM2E4ZTRhOTRlNmRjNTNiYmUwOTguLjBmODAyZjE3NzkyZTE3
NWQ0ZGVkZmU1NDgzNmUwMzc1Mjc5Y2Y5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZ1NlY3VyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdTZWN1cml0eS5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
RG9jdW1lbnQqIHRhcmdldERvY3UKICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoYXV0byogdGVtcGxhdGVIb3N0ID0gdGFyZ2V0RG9jdW1l
bnQtPnRlbXBsYXRlRG9jdW1lbnRIb3N0KCkpCisgICAgICAgIHRhcmdldERvY3VtZW50ID0gdGVt
cGxhdGVIb3N0OworCiAgICAgRE9NV2luZG93JiBhY3RpdmUgPSBhY3RpdmVET01XaW5kb3coKnN0
YXRlKTsKIAogICAgIGlmIChhY3RpdmUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5B
Y2Nlc3ModGFyZ2V0RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAw
ZDU5Nzg1YzFlYzY4MmI1OWJhMDk3MmNhOTYwNGRjYmNkOTdkMTI0Li42ZmY4MDkwNjYxZjUyZjJj
YzJlMDNmZWU4ZDhjZWE2ODRkZTI0NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjU5NCw3ICsyNTk0LDEw
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAKIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewotICAgIGF1dG8qIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZu
b2RlLT5kb2N1bWVudCgpOworICAgIGlmIChhdXRvKiB0ZW1wbGF0ZUhvc3QgPSBkb2N1bWVudC0+
dGVtcGxhdGVEb2N1bWVudEhvc3QoKSkKKyAgICAgICAgZG9jdW1lbnQgPSB0ZW1wbGF0ZUhvc3Q7
CisgICAgYXV0byogZnJhbWUgPSAgZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzUxMTUwZjJkYTVhMGJmMjVlZGFi
M2MyOWQzZjNiMzFjYTQ4YzUzLi5iMmE0ZmRjZDA0MjM4ZDhhOTFmMjU4NTk1YmJhOTJiMGMzMGNl
ZGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDctMzEgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3Jhc2ggd2hl
biBpbnRlcmFjdGluZyB3aXRoIFRlbXBsYXRlIENvbnRlbnQgaW4gQ29uc29sZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MjgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2lu
c3BlY3QtdGVtcGxhdGUtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA3LTI4
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlb3Jn
YW5pemUgVUlTY3JpcHRDb250cm9sbGVyIGludG8gcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRlbXBsYXRl
LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNwZWN0LXRl
bXBsYXRlLW5vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhM2RiYjYyYzZjYWI1ZWIyYjQ1
ZmI3MDUxY2FmYjBhNjBmOTJiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2luc3BlY3QtdGVtcGxhdGUtbm9kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4
IEBACitUZXN0IHRoYXQgZG9jdW1lbnQgaW5zaWRlIGEgdGVtcGxhdGUgbm9kZSBjYW4gYmUgcGFz
c2VkIHRvIGluc3BlY3QoKSBmdW5jdGlvbiBpbiB0aGUgY29uc29sZSBhbmQgcmVmZXJlbmNlZCBh
cyAkMC4KKworUEFTUzogRXZhbHVhdGUgYW4gZWxlbWVudCBpbiBhIHRlbXBsYXRlLgorUEFTUzog
UmVzb2x2ZWQganMgb2JqZWN0IGlkIHRvIERPTSBub2RlIGlkLgorUEFTUzogU2V0ICQwIHRvIHRo
ZSB0ZW1wbGF0ZSBlbGVtZW50LgorUEFTUzogRXZhbHVhdGUgJDAuCitQQVNTOiBWYWx1ZSBvZiAk
MCBpcyBhIDxkaXY+IGVsZW1lbnQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vaW5zcGVjdC10ZW1wbGF0ZS1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2luc3BlY3QtdGVtcGxhdGUtbm9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMGZkOWY3ZGMxMzY0
NmU4ZTZmY2U4ODRmNDdmOTgwMGUyMDQ4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2luc3BlY3QtdGVtcGxhdGUtbm9kZS5odG1sCkBAIC0wLDAgKzEsNDgg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0ZW1wbGF0ZSBpZD0idG1wbCI+
PGRpdj50ZXh0PC9kaXY+PC90ZW1wbGF0ZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZnVuY3Rpb24gYXNzZXJ0UmVzcG9uc2UocmVzcG9u
c2UsIG1lc3NhZ2UpIHsKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuY2hlY2tGb3JFcnJvcihy
ZXNwb25zZSk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlBBU1M6ICIgKyBtZXNzYWdlKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBldmFsdWF0ZSQwKCkgeworICAgICAgICBJbnNwZWN0b3JQ
cm90b2NvbC5zZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHsiZXhwcmVzc2lvbiI6ICIk
MC5ub2RlTmFtZSIsICJpbmNsdWRlQ29tbWFuZExpbmVBUEkiOiB0cnVlfSwgKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnRSZXNwb25zZShyZXNwb25zZSwgIkV2YWx1YXRlICQwLiIp
OworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmV4cGVjdEVxdWFsKHJlc3BvbnNlLnJlc3VsdC5y
ZXN1bHQudmFsdWUsICJESVYiLCAiVmFsdWUgb2YgJDAgaXMgYSA8ZGl2PiBlbGVtZW50LiIpOwor
ICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzZXRJbnNwZWN0ZWROb2RlKG5vZGVJZCkgeworICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZCgiRE9NLnNldEluc3BlY3RlZE5vZGUiLCB7bm9k
ZUlkfSwgKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRSZXNwb25zZShyZXNwb25z
ZSwgIlNldCAkMCB0byB0aGUgdGVtcGxhdGUgZWxlbWVudC4iKTsKKyAgICAgICAgICAgIGV2YWx1
YXRlJDAoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGUo
b2JqZWN0SWQpIHsKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIkRPTS5y
ZXF1ZXN0Tm9kZSIsIHtvYmplY3RJZH0sIChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0UmVzcG9uc2UocmVzcG9uc2UsICJSZXNvbHZlZCBqcyBvYmplY3QgaWQgdG8gRE9NIG5vZGUg
aWQuIik7CisgICAgICAgICAgICBzZXRJbnNwZWN0ZWROb2RlKHJlc3BvbnNlLnJlc3VsdC5ub2Rl
SWQpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29t
bWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30pOworICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRD
b21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwgeyJleHByZXNzaW9uIjogImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0bXBsJykuY29udGVudC5maXJzdENoaWxkIiwgImluY2x1ZGVDb21tYW5kTGlu
ZUFQSSI6IHRydWV9LCAocmVzcG9uc2UpID0+IHsKKyAgICAgICAgYXNzZXJ0UmVzcG9uc2UocmVz
cG9uc2UsICJFdmFsdWF0ZSBhbiBlbGVtZW50IGluIGEgdGVtcGxhdGUuIik7CisgICAgICAgIHJl
c29sdmVOb2RlKHJlc3BvbnNlLnJlc3VsdC5yZXN1bHQub2JqZWN0SWQpOworICAgIH0pOworfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Qg
dGhhdCBkb2N1bWVudCBpbnNpZGUgYSB0ZW1wbGF0ZSBub2RlIGNhbiBiZSBwYXNzZWQgdG8gaW5z
cGVjdCgpIGZ1bmN0aW9uIGluIHRoZSBjb25zb2xlIGFuZCByZWZlcmVuY2VkIGFzICQwLjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>