<?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>203868</bug_id>
          
          <creation_ts>2019-11-05 15:51:11 -0800</creation_ts>
          <short_desc>Default NamepaceURI must be gotten from the topmost parent before the SVG &lt;foreignObject&gt;</short_desc>
          <delta_ts>2019-11-07 18:53:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>200143</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587570</commentid>
    <comment_count>0</comment_count>
      <attachid>382855</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-05 15:51:11 -0800</bug_when>
    <thetext>Created attachment 382855
test case

Open the attached test case.

Expected: The svg should have two &lt;foreignObject&gt; elements. Inside each element there should be an &lt;h2&gt; element followed by a &lt;table&gt; element.
Result: There is only one &lt;foreignObject&gt; element visible. The other element is not displayed.

In the WebInspector copy the second &lt;foreignObject&gt; to the clipboard and paste it in a text editor. This will be the result. Notice the wrong namespace in the tags &lt;h2&gt; and &lt;table&gt;

&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;foreignObject xmlns=&quot;http://www.w3.org/2000/svg&quot; x=&quot;200&quot; width=&quot;200&quot; height=&quot;100&quot;&gt;
  &lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;section&gt;
      &lt;h2 xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;Header 2&lt;/h2&gt;
      &lt;table xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th&gt;Cell 2-1&lt;/th&gt;
            &lt;th&gt;Cell 2-2&lt;/th&gt;
            &lt;th&gt;Cell 2-3&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
      &lt;/table&gt;
    &lt;/section&gt;
  &lt;/div&gt;
&lt;/foreignObject&gt;

The bug happens only when calling innerHTML. And it happens because the XMLDocumentParser sets the namespace &quot;http://www.w3.org/2000/svg&quot; to the elements, it creates from the fragment, if the page is an SVG document.

This bug can be seen also when showing the results of the SVG WPT tests in the browser. For example, when opening this test http://web-platform-tests.live/svg/painting/parsing/fill-opacity-valid.svg WebKit, the results section will not be shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587600</commentid>
    <comment_count>1</comment_count>
      <attachid>382866</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-05 16:59:24 -0800</bug_when>
    <thetext>Created attachment 382866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587605</commentid>
    <comment_count>2</comment_count>
      <attachid>382866</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 17:04:54 -0800</bug_when>
    <thetext>Comment on attachment 382866
Patch

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

Don&apos;t get what you mean by pasting. Neither test case does paste in the sense of editing code.

Are you talking about the fragment parsing?

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:585
&gt;      Vector&lt;Element*&gt; elemStack;

Can we make this use Ref&lt;Element&gt; instead while we&apos;re at?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587606</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 17:05:23 -0800</bug_when>
    <thetext>If this is meant to fix a case where the user copy &amp; pastes content, then we need to be adding a test which uses execCommand(&apos;insertHTML&apos;, ~).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587634</commentid>
    <comment_count>4</comment_count>
      <attachid>382879</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-05 18:17:35 -0800</bug_when>
    <thetext>Created attachment 382879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587635</commentid>
    <comment_count>5</comment_count>
      <attachid>382880</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-05 18:19:02 -0800</bug_when>
    <thetext>Created attachment 382880
pasting test case (should not work)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587642</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-05 18:30:55 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; If this is meant to fix a case where the user copy &amp; pastes content, then we
&gt; need to be adding a test which uses execCommand(&apos;insertHTML&apos;, ~).

The patch is about setting innerHTML property of the HTMLElement which parses the text through XMLDocumentParser.

Pasting text through execCommand(&apos;insertHTML&apos;, ~) should not work inside an SVG document. In the debug build, HTMLConstructionSite::HTMLConstructionSite() asserts the document is either isHTMLDocument() or isXHTMLDocument(). If this assertion is disabled, paring the text will be done by HTMLConstructionSite via HTMLDocumentParser which does not set the namespaces.

I attached a test case which works in the WebKit release build while it does not work in other browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587649</commentid>
    <comment_count>7</comment_count>
      <attachid>382879</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 19:11:37 -0800</bug_when>
    <thetext>Comment on attachment 382879
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:586
&gt; +    while (parentElement &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(parentElement)) {

What&apos;s the point of collecting all these elements here?

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:604
&gt; +                m_defaultNamespaceURI = attribute.value();
&gt; +            else if (attribute.prefix() == xmlnsAtom())
&gt; +                m_prefixToNamespaceMap.set(attribute.localName(), attribute.value());

Then traversing them top-down to find the last element which specifies xmlns?
I think a way simpler way to do this to keep traversing parent nodes until we find the first ancestor element which specifies xmlns.
That would automatically stop before foreignElement because the element underneath it would specify xmlns.

Such an approach would match https://html.spec.whatwg.org/multipage/xhtml.html#parsing-xhtml-fragments better as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587876</commentid>
    <comment_count>8</comment_count>
      <attachid>382948</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 12:48:32 -0800</bug_when>
    <thetext>Created attachment 382948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587878</commentid>
    <comment_count>9</comment_count>
      <attachid>382948</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-06 12:49:49 -0800</bug_when>
    <thetext>Comment on attachment 382948
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:587
&gt; +    for (auto* ancestor = parentElement; ancestor &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(ancestor); ancestor = ancestor-&gt;parentElement()) {

Is it really appropriate for this generic XML-related code to know about SVGForeignObjectElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587953</commentid>
    <comment_count>10</comment_count>
      <attachid>382971</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 15:44:49 -0800</bug_when>
    <thetext>Created attachment 382971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587955</commentid>
    <comment_count>11</comment_count>
      <attachid>382948</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 15:49:24 -0800</bug_when>
    <thetext>Comment on attachment 382948
Patch

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

&gt;&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:587
&gt;&gt; +    for (auto* ancestor = parentElement; ancestor &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(ancestor); ancestor = ancestor-&gt;parentElement()) {
&gt; 
&gt; Is it really appropriate for this generic XML-related code to know about SVGForeignObjectElement?

I moved calculating the defaultNamespaceURI and prefixToNamespaceMap to XMLDocumentParser::parseDocumentFragment() which eventually calls XMLDocumentParser::create(). In parseDocumentFragment(), we handle parsing the text of innerHTML for the &lt;script&gt; and &lt;style&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587957</commentid>
    <comment_count>12</comment_count>
      <attachid>382973</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 15:52:10 -0800</bug_when>
    <thetext>Created attachment 382973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588008</commentid>
    <comment_count>13</comment_count>
      <attachid>382973</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-06 17:10:44 -0800</bug_when>
    <thetext>Comment on attachment 382973
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:277
&gt; +    for (auto* ancestor = contextElement; ancestor &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(ancestor); ancestor = ancestor-&gt;parentElement()) {

I don&apos;t think we need SVGForeignObjectElement check anymore, do we?
Because div has xmlns, we&apos;d stop there, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588010</commentid>
    <comment_count>14</comment_count>
      <attachid>382973</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-06 17:14:40 -0800</bug_when>
    <thetext>Comment on attachment 382973
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:285
&gt; +                prefixToNamespaceMap.set(attribute.localName(), attribute.value());

Is this prefix to namespace map something that we know at compile time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588045</commentid>
    <comment_count>15</comment_count>
      <attachid>382997</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 18:19:20 -0800</bug_when>
    <thetext>Created attachment 382997
Prefix test case (Asserts in debug build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588053</commentid>
    <comment_count>16</comment_count>
      <attachid>382973</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-06 18:26:31 -0800</bug_when>
    <thetext>Comment on attachment 382973
Patch

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

&gt;&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:277
&gt;&gt; +    for (auto* ancestor = contextElement; ancestor &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(ancestor); ancestor = ancestor-&gt;parentElement()) {
&gt; 
&gt; I don&apos;t think we need SVGForeignObjectElement check anymore, do we?
&gt; Because div has xmlns, we&apos;d stop there, right?

This patch is not correct. We should stop at the root-most element when building prefixToNamespaceMap. But we should stop at the SVGForeignObjectElement when getting defaultNamespaceURI. I will upload another patch.

&gt;&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:285
&gt;&gt; +                prefixToNamespaceMap.set(attribute.localName(), attribute.value());
&gt; 
&gt; Is this prefix to namespace map something that we know at compile time?

No. The web developer can define at any parent level, the prefix name space. For example the root &lt;svg&gt; element can be defined like that,

    &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:h=&quot;http://www.w3.org/1999/xhtml&quot;&gt;

And the innerHTML text can be like that:

       log.innerHTML = &quot;&lt;h:h2&gt;Header&lt;/h:h2&gt;&quot;;

XMLDocumentParser has to resolve the &apos;h&apos; prefix to &quot;http://www.w3.org/1999/xhtml&quot;. See the attached test case which does not work properly in WebKit but works correctly in other browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588390</commentid>
    <comment_count>17</comment_count>
      <attachid>383070</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-07 13:59:29 -0800</bug_when>
    <thetext>Created attachment 383070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588403</commentid>
    <comment_count>18</comment_count>
      <attachid>383070</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 14:16:02 -0800</bug_when>
    <thetext>Comment on attachment 383070
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:275
&gt; +    for (auto* ancestor = contextElement; ancestor; ancestor = ancestor-&gt;parentElement()) {

Use ElementAncestorIterator?

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:286
&gt; +    AtomString defaultNamespaceURI;
&gt; +    for (auto* ancestor = contextElement; ancestor &amp;&amp; !is&lt;SVGForeignObjectElement&gt;(ancestor); ancestor = ancestor-&gt;parentElement()) {

I don&apos;t think we need to traverse ancestors twice like this.
Do something like this in the loop above.

if (is&lt;SVGForeignObjectElement&gt;(ancestor))
    stopLookingForDefaultNamespaceURI = true;
if (!stopLookingForDefaultNamespaceURI) {
    auto value = ancestor-&gt;getAttribute(XMLNSNames::xmlnsAttr);
    if (!value.isNull())
        defaultNamespaceURI = value;
}

So sad we have to add a special rule for foreignElement...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588507</commentid>
    <comment_count>19</comment_count>
      <attachid>383095</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-11-07 17:10:27 -0800</bug_when>
    <thetext>Created attachment 383095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588546</commentid>
    <comment_count>20</comment_count>
      <attachid>383095</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 18:52:48 -0800</bug_when>
    <thetext>Comment on attachment 383095
Patch

Clearing flags on attachment: 383095

Committed r252230: &lt;https://trac.webkit.org/changeset/252230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588547</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 18:52:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588548</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-07 18:53:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/57008214&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>382855</attachid>
            <date>2019-11-05 15:51:11 -0800</date>
            <delta_ts>2019-11-05 15:51:11 -0800</delta_ts>
            <desc>test case</desc>
            <filename>test294.svg</filename>
            <type>image/svg+xml</type>
            <size>1300</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGZvcmVpZ25PYmpl
Y3QgeD0iMTAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4KICAgICAgICA8ZGl2IHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICAgICAgICAgICAgPGgyPkhlYWRlcjwvaDI+
CiAgICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAg
ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DZWxsIDE8L3RoPgogICAg
ICAgICAgICAgICAgICAgICAgICA8dGg+Q2VsbCAyPC90aD4KICAgICAgICAgICAgICAgICAgICAg
ICAgPHRoPkNlbGwgMzwvdGg+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAg
ICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zv
cmVpZ25PYmplY3Q+CiAgICA8c2NyaXB0PjwhW0NEQVRBWwogICAgICAgIHZhciB4aHRtbF9ucyA9
ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsKICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudDsKCiAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImZvcmVpZ25P
YmplY3QiKTsKICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgieCIsICIyMTAiKTsK
ICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMjAwIik7CiAgICAg
ICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKICAgICAgICBy
b290LmFwcGVuZENoaWxkKGZvcmVpZ25PYmplY3QpOwoKICAgICAgICB2YXIgbG9nID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAiZGl2Iik7CiAgICAgICAgZm9yZWlnbk9iamVj
dC5hcHBlbmRDaGlsZChsb2cpOwoKICAgICAgICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKHhodG1sX25zLCAic2VjdGlvbiIpKTsKICAgICAgICB2YXIgaHRtbCA9ICI8
aDI+SGVhZGVyPC9oMj48dGFibGU+IiArCiAgICAgICAgICAgICI8dGhlYWQ+PHRyPjx0aD5DZWxs
IDE8L3RoPjx0aD5DZWxsIDI8L3RoPiIgKwogICAgICAgICAgICAiPHRoPkNlbGwgMzwvdGg+PC90
cj48L3RoZWFkPiIgKwogICAgICAgICAgICAiPC90YWJsZT4iOwoKICAgICAgICBsb2cubGFzdENo
aWxkLmlubmVySFRNTCA9IGh0bWw7CiAgICBdXT48L3NjcmlwdD4KPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382866</attachid>
            <date>2019-11-05 16:59:24 -0800</date>
            <delta_ts>2019-11-05 18:17:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191105165923.patch</filename>
            <type>text/plain</type>
            <size>6411</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjExNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFyc2luZyBI
VE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlz
IGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgbm9kZXMgdXB3
YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMgb25lCisg
ICAgICAgIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIHBhcmVudCBub2RlLgorCisgICAgICAgIFRl
c3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3Zn
CisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgor
CiAyMDE5LTExLTA1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5dW0NNYWtlXSBCdWlsZCBXZWJDb3JlIGFzIGFuIE9CSkVDVCBsaWJyYXJ5
IHVubGVzcyBBcHBsZSBpbnRlcm5hbCBidWlsZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlzaW9u
IDI1MjA4MykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01ODAsMzUgKzU4MSwzMiBAQCBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jCiB7CiAgICAgZnJhZ21lbnQucmVm
KCk7CiAKLSAgICAvLyBBZGQgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgcGFyZW50IG5vZGUKKyAg
ICAvLyBBZGQgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgcGFyZW50IG5vZGUuIERvbid0IGNyb3Nz
IGJvdW5kYXJpZXMgZnJvbSBIVE1MIHRvIFNWRy4KICAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1T
dGFjazsKLSAgICB3aGlsZSAocGFyZW50RWxlbWVudCkgeworICAgIHdoaWxlIChwYXJlbnRFbGVt
ZW50ICYmICFpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4ocGFyZW50RWxlbWVudCkpIHsKICAg
ICAgICAgZWxlbVN0YWNrLmFwcGVuZChwYXJlbnRFbGVtZW50KTsKLQotICAgICAgICBDb250YWlu
ZXJOb2RlKiBub2RlID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAo
IWlzPEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHBhcmVudEVs
ZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgcGFyZW50RWxlbWVudCA9
IHBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICB9CiAKICAgICBpZiAoZWxlbVN0
YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFNoYXJlIGNv
ZGUgd2l0aCBpc0RlZmF1bHROYW1lc3BhY2UoKSBwZXIgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXhodG1sLXN5bnRheC5odG1s
I3BhcnNpbmcteGh0bWwtZnJhZ21lbnRzCi0gICAgZm9yICg7ICFlbGVtU3RhY2suaXNFbXB0eSgp
OyBlbGVtU3RhY2sucmVtb3ZlTGFzdCgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBl
bGVtU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC0+
YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLmxv
Y2FsTmFtZSgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgICAgICBtX2RlZmF1bHRO
YW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgICAg
IG1fcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmli
dXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgfQorICAgIGZvciAoaW50IGkgPSBlbGVtU3RhY2su
c2l6ZSgpOyBpLS0gPiAwOyApIHsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1TdGFj
a1tpXTsKKyAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDog
ZWxlbWVudC0+YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgbV9kZWZhdWx0
TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChh
dHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgbV9wcmVm
aXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFs
dWUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9kZWZhdWx0TmFtZXNwYWNlVVJJ
LmlzTnVsbCgpKQotICAgICAgICBtX2RlZmF1bHROYW1lc3BhY2VVUkkgPSBwYXJlbnRFbGVtZW50
LT5uYW1lc3BhY2VVUkkoKTsKKyAgICAgICAgbV9kZWZhdWx0TmFtZXNwYWNlVVJJID0gZWxlbVN0
YWNrLmxhc3QoKS0+bmFtZXNwYWNlVVJJKCk7CiB9CiAKIFhNTFBhcnNlckNvbnRleHQ6On5YTUxQ
YXJzZXJDb250ZXh0KCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjA4MykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTExLTA1ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFy
c2luZyBIVE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJl
bnRzIGlzIGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3Qt
ZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2ZvcmVp
Z25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLnN2ZzogQWRkZWQuCisKIDIw
MTktMTEtMDUgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
Y3NzLWxpc3RzXSBJbXBsZW1lbnQgbGlzdC1zdHlsZS10eXBlOiA8c3RyaW5nPgpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5n
LWV4cGVjdGVkLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVj
dC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhwZWN0ZWQuc3ZnCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFt
aWMtcGFyc2luZy1leHBlY3RlZC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxmb3JlaWduT2Jq
ZWN0IHg9IjEwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+CisgICAgICAgIDxkaXYgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgICAgICAgPGgyPkhlYWRlcjwv
aDI+CisgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgPHRoZWFkPgorICAgICAg
ICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q2VsbCAxPC90
aD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DZWxsIDI8L3RoPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPHRoPkNlbGwgMzwvdGg+CisgICAgICAgICAgICAgICAgICAgIDwvdHI+Cisg
ICAgICAgICAgICAgICAgPC90aGVhZD4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvZm9yZWlnbk9iamVjdD4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0
LWR5bmFtaWMtcGFyc2luZy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZvcmVp
Z25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLnN2Zwkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWlj
LXBhcnNpbmcuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKzxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8c2NyaXB0PjwhW0NEQVRBWworICAg
ICAgICB2YXIgeGh0bWxfbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7CisgICAg
ICAgIHZhciByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworCisgICAgICAgIHZhciBm
b3JlaWduT2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJmb3JlaWduT2JqZWN0Iik7CisgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0
QXR0cmlidXRlKCJ4IiwgIjEwIik7CisgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmlidXRl
KCJ3aWR0aCIsICIyMDAiKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoImhl
aWdodCIsICIxMDAiKTsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChmb3JlaWduT2JqZWN0KTsK
KworICAgICAgICB2YXIgbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAi
ZGl2Iik7CisgICAgICAgIGZvcmVpZ25PYmplY3QuYXBwZW5kQ2hpbGQobG9nKTsKKworICAgICAg
ICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAic2Vj
dGlvbiIpKTsKKyAgICAgICAgdmFyIGh0bWwgPSAiPGgyPkhlYWRlcjwvaDI+PHRhYmxlPiIgKwor
ICAgICAgICAgICAgIjx0aGVhZD48dHI+PHRoPkNlbGwgMTwvdGg+PHRoPkNlbGwgMjwvdGg+IiAr
CisgICAgICAgICAgICAiPHRoPkNlbGwgMzwvdGg+PC90cj48L3RoZWFkPiIgKworICAgICAgICAg
ICAgIjwvdGFibGU+IjsKKworICAgICAgICBsb2cubGFzdENoaWxkLmlubmVySFRNTCA9IGh0bWw7
CisgICAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382879</attachid>
            <date>2019-11-05 18:17:35 -0800</date>
            <delta_ts>2019-11-06 12:48:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191105181735.patch</filename>
            <type>text/plain</type>
            <size>6662</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjExNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFyc2luZyBI
VE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlz
IGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgbm9kZXMgdXB3
YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMgb25lCisg
ICAgICAgIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIHBhcmVudCBub2RlLgorCisgICAgICAgIFRl
c3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3Zn
CisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgor
CiAyMDE5LTExLTA1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5dW0NNYWtlXSBCdWlsZCBXZWJDb3JlIGFzIGFuIE9CSkVDVCBsaWJyYXJ5
IHVubGVzcyBBcHBsZSBpbnRlcm5hbCBidWlsZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlzaW9u
IDI1MjA4MykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01ODAsMzUgKzU4MSwzMiBAQCBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jCiB7CiAgICAgZnJhZ21lbnQucmVm
KCk7CiAKLSAgICAvLyBBZGQgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgcGFyZW50IG5vZGUKLSAg
ICBWZWN0b3I8RWxlbWVudCo+IGVsZW1TdGFjazsKLSAgICB3aGlsZSAocGFyZW50RWxlbWVudCkg
ewotICAgICAgICBlbGVtU3RhY2suYXBwZW5kKHBhcmVudEVsZW1lbnQpOwotCi0gICAgICAgIENv
bnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgICAg
IGlmICghaXM8RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcGFy
ZW50RWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIC8vIEFkZCBuYW1lc3Bh
Y2VzIGJhc2VkIG9uIHRoZSBwYXJlbnQgbm9kZS4gRG9uJ3QgY3Jvc3MgYm91bmRhcmllcyBmcm9t
IEhUTUwgdG8gU1ZHLgorICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IGVsZW1TdGFjazsKKyAgICB3
aGlsZSAocGFyZW50RWxlbWVudCAmJiAhaXM8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KHBhcmVu
dEVsZW1lbnQpKSB7CisgICAgICAgIGVsZW1TdGFjay5hcHBlbmQobWFrZVJlZigqcGFyZW50RWxl
bWVudCkpOworICAgICAgICBwYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC0+cGFyZW50RWxl
bWVudCgpOwogICAgIH0KIAogICAgIGlmIChlbGVtU3RhY2suaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSB3aXRoIGlzRGVmYXVsdE5hbWVzcGFj
ZSgpIHBlciBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
L211bHRpcGFnZS90aGUteGh0bWwtc3ludGF4Lmh0bWwjcGFyc2luZy14aHRtbC1mcmFnbWVudHMK
LSAgICBmb3IgKDsgIWVsZW1TdGFjay5pc0VtcHR5KCk7IGVsZW1TdGFjay5yZW1vdmVMYXN0KCkp
IHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1TdGFjay5sYXN0KCk7Ci0gICAgICAg
IGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52
YWx1ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4
bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICAgICAgbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5z
ZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgZm9yIChpbnQgaSA9IGVsZW1TdGFjay5zaXplKCk7IGktLSA+IDA7ICkgeworICAg
ICAgICBhdXRvJiBlbGVtZW50ID0gZWxlbVN0YWNrW2ldOworICAgICAgICBpZiAoIWVsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAo
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3Io
KSkgeworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20o
KSkKKyAgICAgICAgICAgICAgICBtX2RlZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFs
dWUoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0
b20oKSkKKyAgICAgICAgICAgICAgICBtX3ByZWZpeFRvTmFtZXNwYWNlTWFwLnNldChhdHRyaWJ1
dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIGlmIChtX2RlZmF1bHROYW1lc3BhY2VVUkkuaXNOdWxsKCkpCi0gICAgICAgIG1fZGVmYXVs
dE5hbWVzcGFjZVVSSSA9IHBhcmVudEVsZW1lbnQtPm5hbWVzcGFjZVVSSSgpOworICAgICAgICBt
X2RlZmF1bHROYW1lc3BhY2VVUkkgPSBlbGVtU3RhY2subGFzdCgpLT5uYW1lc3BhY2VVUkkoKTsK
IH0KIAogWE1MUGFyc2VyQ29udGV4dDo6flhNTFBhcnNlckNvbnRleHQoKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjUyMDgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMTEtMDUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJzaW5nIEhUTUwgZnJhZ21lbnRzIGFzc2lnbnMg
YSB3cm9uZyBuYW1lc3BhY2UgaWYgdGhlIHBhcmVudHMgaXMgYW4gU1ZHIDxmb3JlaWduT2JqZWN0
PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcv
Zm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhwZWN0ZWQuc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5h
bWljLXBhcnNpbmcuc3ZnOiBBZGRlZC4KKwogMjAxOS0xMS0wNSAgT3Jpb2wgQnJ1ZmF1ICA8b2Jy
dWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtbGlzdHNdIEltcGxlbWVudCBsaXN0LXN0
eWxlLXR5cGU6IDxzdHJpbmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9m
b3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhwZWN0ZWQuc3ZnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFy
c2luZy1leHBlY3RlZC5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZvcmVp
Z25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2Zwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyI+CisgICAgPGZvcmVpZ25PYmplY3QgeD0iMTAiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMTAwIj4KKyAgICAgICAgPGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCI+CisgICAgICAgICAgICA8aDI+SGVhZGVyPC9oMj4KKyAgICAgICAgICAgIDx0YWJsZSBzdHls
ZT0nYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Jz4KKyAgICAgICAgICAgICAgICA8dGhlYWQ+Cisg
ICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DZWxs
IDE8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNlbGwgMjwvdGg+CisgICAgICAg
ICAgICAgICAgICAgICAgICA8dGg+Q2VsbCAzPC90aD4KKyAgICAgICAgICAgICAgICAgICAgPC90
cj4KKyAgICAgICAgICAgICAgICA8L3RoZWFkPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9mb3JlaWduT2JqZWN0PgorPC9zdmc+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1v
YmplY3QtZHluYW1pYy1wYXJzaW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Zm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5
bmFtaWMtcGFyc2luZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxzY3JpcHQ+PCFbQ0RBVEFb
CisgICAgICAgIHZhciB4aHRtbF9ucyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsK
KyAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CisKKyAgICAgICAg
dmFyIGZvcmVpZ25PYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiwgImZvcmVpZ25PYmplY3QiKTsKKyAgICAgICAgZm9yZWlnbk9iamVj
dC5zZXRBdHRyaWJ1dGUoIngiLCAiMTAiKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRy
aWJ1dGUoIndpZHRoIiwgIjIwMCIpOworICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0
ZSgiaGVpZ2h0IiwgIjEwMCIpOworICAgICAgICByb290LmFwcGVuZENoaWxkKGZvcmVpZ25PYmpl
Y3QpOworCisgICAgICAgIHZhciBsb2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxf
bnMsICJkaXYiKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdC5hcHBlbmRDaGlsZChsb2cpOworCisg
ICAgICAgIHZhciBodG1sID0KKyAgICAgICAgICAgICI8aDI+SGVhZGVyPC9oMj4iICsgCisgICAg
ICAgICAgICAiPHRhYmxlIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCBibGFjazsnPiIgKworICAg
ICAgICAgICAgICAgICI8dGhlYWQ+IiArCisgICAgICAgICAgICAgICAgICAgICI8dHI+IiArCisg
ICAgICAgICAgICAgICAgICAgICAgICAiPHRoPkNlbGwgMTwvdGg+IiArCisgICAgICAgICAgICAg
ICAgICAgICAgICAiPHRoPkNlbGwgMjwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAi
PHRoPkNlbGwgMzwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICI8L3RyPiIgKworICAgICAg
ICAgICAgICAgICI8L3RoZWFkPiIgKworICAgICAgICAgICAgIjwvdGFibGU+IjsKKworICAgICAg
ICBsb2cuaW5uZXJIVE1MID0gaHRtbDsKKyAgICBdXT48L3NjcmlwdD4KKzwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>382880</attachid>
            <date>2019-11-05 18:19:02 -0800</date>
            <delta_ts>2019-11-05 18:19:02 -0800</delta_ts>
            <desc>pasting test case (should not work)</desc>
            <filename>foreign-object-dynamic-pasting.svg</filename>
            <type>image/svg+xml</type>
            <size>1099</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHNjcmlwdD48IVtD
REFUQVsKICAgICAgICB2YXIgeGh0bWxfbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCI7CiAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CgogICAgICAg
IHZhciBmb3JlaWduT2JqZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIsICJmb3JlaWduT2JqZWN0Iik7CiAgICAgICAgZm9yZWlnbk9iamVj
dC5zZXRBdHRyaWJ1dGUoIngiLCAiMTAiKTsKICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJp
YnV0ZSgid2lkdGgiLCAiMjAwIik7CiAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUo
ImhlaWdodCIsICIxMDAiKTsKICAgICAgICByb290LmFwcGVuZENoaWxkKGZvcmVpZ25PYmplY3Qp
OwoKICAgICAgICB2YXIgbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAi
ZGl2Iik7CiAgICAgICAgZm9yZWlnbk9iamVjdC5hcHBlbmRDaGlsZChsb2cpOwoKICAgICAgICBs
b2cuc2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiLCAidHJ1ZSIpOwogICAgICAgIGxvZy5m
b2N1cygpOwoKICAgICAgICB2YXIgaHRtbCA9CiAgICAgICAgICAgICI8aDI+SGVhZGVyPC9oMj4i
ICsgCiAgICAgICAgICAgICI8dGFibGUgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyc+
IiArCiAgICAgICAgICAgICAgICAiPHRoZWFkPiIgKwogICAgICAgICAgICAgICAgICAgICI8dHI+
IiArCiAgICAgICAgICAgICAgICAgICAgICAgICI8dGg+Q2VsbCAxPC90aD4iICsKICAgICAgICAg
ICAgICAgICAgICAgICAgIjx0aD5DZWxsIDI8L3RoPiIgKwogICAgICAgICAgICAgICAgICAgICAg
ICAiPHRoPkNlbGwgMzwvdGg+IiArCiAgICAgICAgICAgICAgICAgICAgIjwvdHI+IiArCiAgICAg
ICAgICAgICAgICAiPC90aGVhZD4iICsKICAgICAgICAgICAgIjwvdGFibGU+IjsKCiAgICAgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgaHRtbCk7CiAgICBdXT48
L3NjcmlwdD4KPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382948</attachid>
            <date>2019-11-06 12:48:32 -0800</date>
            <delta_ts>2019-11-06 15:44:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191106124831.patch</filename>
            <type>text/plain</type>
            <size>6790</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFyc2luZyBI
VE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlz
IGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgbm9kZXMgdXB3
YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMgb25lCisg
ICAgICAgIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIHBhcmVudCBub2RlLgorCisgICAgICAgIFRl
c3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3Zn
CisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgor
CiAyMDE5LTExLTA2ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
Q2Fpcm9dIENhaXJvIGdyYXBoaWNzIGJhY2tlbmQgdXNlcyBJbWFnZUJ1ZmZlcjo6Y29weUltYWdl
IGp1c3QgdG8gYWNjZXNzIG5hdGl2ZSBpbWFnZSBidWZmZXIgaGFuZGxlcwpJbmRleDogU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAkocmV2aXNpb24gMjUyMTQwKQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTU4MCwzNSAr
NTgxLDMxIEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2MKIHsKICAg
ICBmcmFnbWVudC5yZWYoKTsKIAotICAgIC8vIEFkZCBuYW1lc3BhY2VzIGJhc2VkIG9uIHRoZSBw
YXJlbnQgbm9kZQotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbVN0YWNrOwotICAgIHdoaWxlIChw
YXJlbnRFbGVtZW50KSB7Ci0gICAgICAgIGVsZW1TdGFjay5hcHBlbmQocGFyZW50RWxlbWVudCk7
CisgICAgQXRvbVN0cmluZyBkZWZhdWx0TmFtZXNwYWNlVVJJOwogCi0gICAgICAgIENvbnRhaW5l
ck5vZGUqIG5vZGUgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICgh
aXM8RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcGFyZW50RWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgIH0KLQotICAgIGlmIChlbGVtU3Rh
Y2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogU2hhcmUgY29k
ZSB3aXRoIGlzRGVmYXVsdE5hbWVzcGFjZSgpIHBlciBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUteGh0bWwtc3ludGF4Lmh0bWwj
cGFyc2luZy14aHRtbC1mcmFnbWVudHMKLSAgICBmb3IgKDsgIWVsZW1TdGFjay5pc0VtcHR5KCk7
IGVsZW1TdGFjay5yZW1vdmVMYXN0KCkpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGVs
ZW1TdGFjay5sYXN0KCk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LT5h
dHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubG9j
YWxOYW1lKCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZGVmYXVsdE5h
bWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICAgICAg
bV9wcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1
dGUudmFsdWUoKSk7CisgICAgLy8gRG9uJ3QgY3Jvc3MgYm91bmRhcmllcyBmcm9tIEhUTUwgdG8g
U1ZHLgorICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnRFbGVtZW50OyBhbmNlc3RvciAm
JiAhaXM8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+KGFuY2VzdG9yKTsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGRlZmF1bHROYW1lc3BhY2VVUkkgPSBh
bmNlc3Rvci0+bmFtZXNwYWNlVVJJKCk7CisKKyAgICAgICAgaWYgKCFhbmNlc3Rvci0+aGFzQXR0
cmlidXRlcygpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGFuY2VzdG9yLT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewor
ICAgICAgICAgICAgaWYgKG1fZGVmYXVsdE5hbWVzcGFjZVVSSS5pc051bGwoKSAmJiBhdHRyaWJ1
dGUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgbV9kZWZhdWx0
TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChh
dHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpIHsKKyAgICAgICAgICAgICAgICBtX3By
ZWZpeFRvTmFtZXNwYWNlTWFwLmVuc3VyZSh4bWxuc0F0b20oKSwgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2RlZmF1bHROYW1lc3Bh
Y2VVUkkuaXNOdWxsKCkgJiYgbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5jb250YWlucyh4bWxuc0F0
b20oKSkpCisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAobV9kZWZhdWx0TmFt
ZXNwYWNlVVJJLmlzTnVsbCgpKQotICAgICAgICBtX2RlZmF1bHROYW1lc3BhY2VVUkkgPSBwYXJl
bnRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKKyAgICAgICAgbV9kZWZhdWx0TmFtZXNwYWNlVVJJ
ID0gZGVmYXVsdE5hbWVzcGFjZVVSSTsKIH0KIAogWE1MUGFyc2VyQ29udGV4dDo6flhNTFBhcnNl
ckNvbnRleHQoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMTQwKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTEtMDUgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJzaW5n
IEhUTUwgZnJhZ21lbnRzIGFzc2lnbnMgYSB3cm9uZyBuYW1lc3BhY2UgaWYgdGhlIHBhcmVudHMg
aXMgYW4gU1ZHIDxmb3JlaWduT2JqZWN0PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5h
bWljLXBhcnNpbmctZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZm9yZWlnbk9i
amVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnOiBBZGRlZC4KKwogMjAxOS0x
MS0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiBbIFBIUCBdWyBpT1MgXTogVHdvIGh0dHAvdGVzdHMvY29va2llcy9zYW1lLXNpdGUvc2V0
LWZpcnN0LXBhcnR5LSogVGVzdHMgYXJlIEZhaWxpbmcKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9m
b3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmpl
Y3QtZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2Zwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhw
ZWN0ZWQuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8Zm9yZWlnbk9iamVjdCB4PSIxMCIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIxMDAiPgorICAgICAgICA8ZGl2IHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKyAgICAgICAgICAgIDxoMj5IZWFkZXI8L2gyPgorICAgICAgICAg
ICAgPHRhYmxlIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCBibGFjazsnPgorICAgICAgICAgICAg
ICAgIDx0aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAg
ICAgICAgPHRoPkNlbGwgMTwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q2VsbCAy
PC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DZWxsIDM8L3RoPgorICAgICAgICAg
ICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDwvdGhlYWQ+CisgICAgICAgICAgICA8
L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9i
amVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2lu
Zy5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9y
ZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI5IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPHNj
cmlwdD48IVtDREFUQVsKKyAgICAgICAgdmFyIHhodG1sX25zID0gImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiOworICAgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dDsKKworICAgICAgICB2YXIgZm9yZWlnbk9iamVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAiZm9yZWlnbk9iamVjdCIpOworICAgICAg
ICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgieCIsICIxMCIpOworICAgICAgICBmb3JlaWdu
T2JqZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMjAwIik7CisgICAgICAgIGZvcmVpZ25PYmpl
Y3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hp
bGQoZm9yZWlnbk9iamVjdCk7CisKKyAgICAgICAgdmFyIGxvZyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyh4aHRtbF9ucywgImRpdiIpOworICAgICAgICBmb3JlaWduT2JqZWN0LmFwcGVuZENo
aWxkKGxvZyk7CisKKyAgICAgICAgdmFyIGh0bWwgPQorICAgICAgICAgICAgIjxoMj5IZWFkZXI8
L2gyPiIgKyAKKyAgICAgICAgICAgICI8dGFibGUgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOyc+IiArCisgICAgICAgICAgICAgICAgIjx0aGVhZD4iICsKKyAgICAgICAgICAgICAgICAg
ICAgIjx0cj4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dGg+Q2VsbCAxPC90aD4iICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICI8dGg+Q2VsbCAyPC90aD4iICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICI8dGg+Q2VsbCAzPC90aD4iICsKKyAgICAgICAgICAgICAgICAgICAgIjwv
dHI+IiArCisgICAgICAgICAgICAgICAgIjwvdGhlYWQ+IiArCisgICAgICAgICAgICAiPC90YWJs
ZT4iOworCisgICAgICAgIGxvZy5pbm5lckhUTUwgPSBodG1sOworICAgIF1dPjwvc2NyaXB0Pgor
PC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382971</attachid>
            <date>2019-11-06 15:44:49 -0800</date>
            <delta_ts>2019-11-06 15:52:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191106154449.patch</filename>
            <type>text/plain</type>
            <size>9833</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTExLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFyc2luZyBI
VE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlz
IGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgb2Ygbm9kZXMg
dXB3YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMKKyAg
ICAgICAgb25lIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIGNvbnRleHRFbGVtZW50LgorCisgICAg
ICAgIFRlc3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNp
bmcuc3ZnCisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQp
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorCiAyMDE5LTExLTA2ICBP
cmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgS2VlcCBOb25lIHZh
bHVlIGF0IHRoZSBlbmQgb2YgdGhlIExpc3RTdHlsZVR5cGUgZW51bQpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAJKHJldmlzaW9uIDI1
MjE0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyArMjY5LDI4IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlRG9jdW1lbnRGcmEKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
YXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0
RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBB
dG9tU3RyaW5nPiBwcmVmaXhUb05hbWVzcGFjZU1hcDsKKyAgICBBdG9tU3RyaW5nIGRlZmF1bHRO
YW1lc3BhY2VVUkk7CisgICAgQXRvbVN0cmluZyByb290TmFtZXNwYWNlVVJJOworCisgICAgZm9y
IChhdXRvKiBhbmNlc3RvciA9IGNvbnRleHRFbGVtZW50OyBhbmNlc3RvciAmJiAhaXM8U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ+KGFuY2VzdG9yKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50
RWxlbWVudCgpKSB7CisgICAgICAgIHJvb3ROYW1lc3BhY2VVUkkgPSBhbmNlc3Rvci0+bmFtZXNw
YWNlVVJJKCk7CisKKyAgICAgICAgaWYgKCFhbmNlc3Rvci0+aGFzQXR0cmlidXRlcygpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSA6IGFuY2VzdG9yLT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgaWYg
KGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKKyAgICAgICAgICAgICAgICBwcmVm
aXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFs
dWUoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUubG9jYWxOYW1lKCkgPT0geG1s
bnNBdG9tKCkgJiYgZGVmYXVsdE5hbWVzcGFjZVVSSS5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoZGVmYXVsdE5hbWVzcGFjZVVSSS5pc051bGwoKSkKKyAgICAgICAgZGVm
YXVsdE5hbWVzcGFjZVVSSSA9IHJvb3ROYW1lc3BhY2VVUkk7CisKKyAgICBhdXRvIHBhcnNlciA9
IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIFdURk1vdmUocHJlZml4VG9OYW1l
c3BhY2VNYXApLCBkZWZhdWx0TmFtZXNwYWNlVVJJLCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAg
ICBib29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsK
ICAgICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGlt
cGxlbWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4g
Y2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgp
OyAvLyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVm
b3JlIGRlc3RydWN0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuaAkocmV2aXNpb24gMjUyMTQwKQorKysgU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50LCB2aWV3KSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8WE1MRG9j
dW1lbnRQYXJzZXI+IGNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCog
ZWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorICAgIHN0
YXRpYyBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBmcmFn
bWVudCwgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYmIHByZWZpeFRvTmFtZXNwYWNl
TWFwLCBjb25zdCBBdG9tU3RyaW5nJiBkZWZhdWx0TmFtZXNwYWNlVVJJLCBQYXJzZXJDb250ZW50
UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBYTUxEb2N1bWVudFBhcnNlcihmcmFnbWVudCwgZWxlbWVudCwgcGFyc2VyQ29udGVu
dFBvbGljeSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVudFBhcnNl
cihmcmFnbWVudCwgV1RGTW92ZShwcmVmaXhUb05hbWVzcGFjZU1hcCksIGRlZmF1bHROYW1lc3Bh
Y2VVUkksIHBhcnNlckNvbnRlbnRQb2xpY3kpKTsKICAgICB9CiAKICAgICB+WE1MRG9jdW1lbnRQ
YXJzZXIoKTsKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiwgRnJhbWVWaWV3KiA9IG51bGxwdHIpOwot
ICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmLCBFbGVtZW50KiwgUGFyc2Vy
Q29udGVudFBvbGljeSk7CisgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYs
IEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mJiwgY29uc3QgQXRvbVN0cmluZyYsIFBh
cnNlckNvbnRlbnRQb2xpY3kpOwogCiAgICAgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYp
IGZpbmFsOwogICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBmaW5hbDsKQEAg
LTE4MCw5ICsxODAsMTAgQEAgcHJpdmF0ZToKICAgICBUZXh0UG9zaXRpb24gbV9zY3JpcHRTdGFy
dFBvc2l0aW9uOwogCiAgICAgYm9vbCBtX3BhcnNpbmdGcmFnbWVudCB7IGZhbHNlIH07Ci0gICAg
QXRvbVN0cmluZyBtX2RlZmF1bHROYW1lc3BhY2VVUkk7CiAKICAgICBIYXNoTWFwPEF0b21TdHJp
bmcsIEF0b21TdHJpbmc+IG1fcHJlZml4VG9OYW1lc3BhY2VNYXA7CisgICAgQXRvbVN0cmluZyBt
X2RlZmF1bHROYW1lc3BhY2VVUkk7CisKICAgICBTZWdtZW50ZWRTdHJpbmcgbV9wZW5kaW5nU3Jj
OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gMjUyMTQwKQorKysgU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NzEsNDQgKzU3MSwxNiBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQ
YXJzZXIoRG9jCiB7CiB9CiAKLVhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2Vy
Q29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorWE1MRG9jdW1lbnRQYXJzZXI6OlhN
TERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21T
dHJpbmcsIEF0b21TdHJpbmc+JiYgcHJlZml4VG9OYW1lc3BhY2VNYXAsIGNvbnN0IEF0b21TdHJp
bmcmIGRlZmF1bHROYW1lc3BhY2VVUkksIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVu
dFBvbGljeSkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVu
dCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQogICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VV
bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50
KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBv
c2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQorICAgICwgbV9wcmVmaXhU
b05hbWVzcGFjZU1hcChXVEZNb3ZlKHByZWZpeFRvTmFtZXNwYWNlTWFwKSkKKyAgICAsIG1fZGVm
YXVsdE5hbWVzcGFjZVVSSShkZWZhdWx0TmFtZXNwYWNlVVJJKQogewogICAgIGZyYWdtZW50LnJl
ZigpOwotCi0gICAgLy8gQWRkIG5hbWVzcGFjZXMgYmFzZWQgb24gdGhlIHBhcmVudCBub2RlCi0g
ICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtU3RhY2s7Ci0gICAgd2hpbGUgKHBhcmVudEVsZW1lbnQp
IHsKLSAgICAgICAgZWxlbVN0YWNrLmFwcGVuZChwYXJlbnRFbGVtZW50KTsKLQotICAgICAgICBD
b250YWluZXJOb2RlKiBub2RlID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgICAg
ICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHBh
cmVudEVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKLSAgICB9Ci0KLSAgICBpZiAo
ZWxlbVN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFNo
YXJlIGNvZGUgd2l0aCBpc0RlZmF1bHROYW1lc3BhY2UoKSBwZXIgaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXhodG1sLXN5bnRh
eC5odG1sI3BhcnNpbmcteGh0bWwtZnJhZ21lbnRzCi0gICAgZm9yICg7ICFlbGVtU3RhY2suaXNF
bXB0eSgpOyBlbGVtU3RhY2sucmVtb3ZlTGFzdCgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBlbGVtU3RhY2subGFzdCgpOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxl
bWVudC0+YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAgICAgICBtX2Rl
ZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fcHJlZml4VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKG1fZGVmYXVsdE5hbWVzcGFjZVVSSS5pc051bGwoKSkKLSAgICAgICAgbV9kZWZhdWx0
TmFtZXNwYWNlVVJJID0gcGFyZW50RWxlbWVudC0+bmFtZXNwYWNlVVJJKCk7CiB9CiAKIFhNTFBh
cnNlckNvbnRleHQ6On5YTUxQYXJzZXJDb250ZXh0KCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE0
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDE5LTExLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgUGFyc2luZyBIVE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFt
ZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlzIGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2ZvcmVpZ25PYmpl
Y3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisg
ICAgICAgICogc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5n
LnN2ZzogQWRkZWQuCisKIDIwMTktMTEtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gWyBQSFAgXVsgaU9TIF06IFR3byBodHRwL3Rlc3Rz
L2Nvb2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS0qIFRlc3RzIGFyZSBGYWlsaW5nCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWlj
LXBhcnNpbmctZXhwZWN0ZWQuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9mb3Jl
aWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmcJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmpl
Y3QtZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE2IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGZv
cmVpZ25PYmplY3QgeD0iMTAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4KKyAgICAgICAgPGRp
diB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgICAgICAgICA8aDI+
SGVhZGVyPC9oMj4KKyAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Jz4KKyAgICAgICAgICAgICAgICA8dGhlYWQ+CisgICAgICAgICAgICAgICAgICAgIDx0
cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DZWxsIDE8L3RoPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPHRoPkNlbGwgMjwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGg+
Q2VsbCAzPC90aD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8
L3RoZWFkPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9kaXY+CisgICAgPC9mb3Jl
aWduT2JqZWN0PgorPC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5n
LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9mb3JlaWdu
LW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy5zdmcJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPgorICAgIDxzY3JpcHQ+PCFbQ0RBVEFbCisgICAgICAgIHZhciB4aHRtbF9u
cyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsKKyAgICAgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImZv
cmVpZ25PYmplY3QiKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoIngiLCAi
MTAiKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjIwMCIp
OworICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwMCIpOwor
ICAgICAgICByb290LmFwcGVuZENoaWxkKGZvcmVpZ25PYmplY3QpOworCisgICAgICAgIHZhciBs
b2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxfbnMsICJkaXYiKTsKKyAgICAgICAg
Zm9yZWlnbk9iamVjdC5hcHBlbmRDaGlsZChsb2cpOworCisgICAgICAgIHZhciBodG1sID0KKyAg
ICAgICAgICAgICI8aDI+SGVhZGVyPC9oMj4iICsgCisgICAgICAgICAgICAiPHRhYmxlIHN0eWxl
PSdib3JkZXI6IDFweCBzb2xpZCBibGFjazsnPiIgKworICAgICAgICAgICAgICAgICI8dGhlYWQ+
IiArCisgICAgICAgICAgICAgICAgICAgICI8dHI+IiArCisgICAgICAgICAgICAgICAgICAgICAg
ICAiPHRoPkNlbGwgMTwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiPHRoPkNlbGwg
MjwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiPHRoPkNlbGwgMzwvdGg+IiArCisg
ICAgICAgICAgICAgICAgICAgICI8L3RyPiIgKworICAgICAgICAgICAgICAgICI8L3RoZWFkPiIg
KworICAgICAgICAgICAgIjwvdGFibGU+IjsKKworICAgICAgICBsb2cuaW5uZXJIVE1MID0gaHRt
bDsKKyAgICBdXT48L3NjcmlwdD4KKzwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382973</attachid>
            <date>2019-11-06 15:52:10 -0800</date>
            <delta_ts>2019-11-07 13:59:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191106155210.patch</filename>
            <type>text/plain</type>
            <size>10059</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTExLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFyc2luZyBI
VE1MIGZyYWdtZW50cyBhc3NpZ25zIGEgd3JvbmcgbmFtZXNwYWNlIGlmIHRoZSBwYXJlbnRzIGlz
IGFuIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgb2Ygbm9kZXMg
dXB3YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMKKyAg
ICAgICAgb25lIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIGNvbnRleHRFbGVtZW50LgorCisgICAg
ICAgIFRlc3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNp
bmcuc3ZnCisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQp
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorCiAyMDE5LTExLTA2ICBP
cmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgS2VlcCBOb25lIHZh
bHVlIGF0IHRoZSBlbmQgb2YgdGhlIExpc3RTdHlsZVR5cGUgZW51bQpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAJKHJldmlzaW9uIDI1
MjE0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RWxlbWVudC5oIgpAQCAtMjY5LDcgKzI3MCwyOCBAQCBib29sIFhNTERvY3VtZW50UGFyc2Vy
OjpwYXJzZURvY3VtZW50RnJhCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1
dG8gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVs
ZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRv
bVN0cmluZz4gcHJlZml4VG9OYW1lc3BhY2VNYXA7CisgICAgQXRvbVN0cmluZyBkZWZhdWx0TmFt
ZXNwYWNlVVJJOworICAgIEF0b21TdHJpbmcgcm9vdE5hbWVzcGFjZVVSSTsKKworICAgIGZvciAo
YXV0byogYW5jZXN0b3IgPSBjb250ZXh0RWxlbWVudDsgYW5jZXN0b3IgJiYgIWlzPFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50PihhbmNlc3Rvcik7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVs
ZW1lbnQoKSkgeworICAgICAgICByb290TmFtZXNwYWNlVVJJID0gYW5jZXN0b3ItPm5hbWVzcGFj
ZVVSSSgpOworCisgICAgICAgIGlmICghYW5jZXN0b3ItPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUgOiBhbmNlc3Rvci0+YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKCkpCisgICAgICAgICAgICAgICAgcHJlZml4
VG9OYW1lc3BhY2VNYXAuc2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLnZhbHVl
KCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLmxvY2FsTmFtZSgpID09IHhtbG5z
QXRvbSgpICYmIGRlZmF1bHROYW1lc3BhY2VVUkkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAg
ZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGRlZmF1bHROYW1lc3BhY2VVUkkuaXNOdWxsKCkpCisgICAgICAgIGRlZmF1
bHROYW1lc3BhY2VVUkkgPSByb290TmFtZXNwYWNlVVJJOworCisgICAgYXV0byBwYXJzZXIgPSBY
TUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBXVEZNb3ZlKHByZWZpeFRvTmFtZXNw
YWNlTWFwKSwgZGVmYXVsdE5hbWVzcGFjZVVSSSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAg
Ym9vbCB3ZWxsRm9ybWVkID0gcGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAg
ICAgLy8gRG8gbm90IGNhbGwgZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBs
ZW1lbnRhdGlvbnMgdG91Y2ggdGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNh
dXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsg
Ly8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9y
ZSBkZXN0cnVjdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDI1MjE0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVu
dFBhcnNlcihkb2N1bWVudCwgdmlldykpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPFhNTERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIGVs
ZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKKyAgICBzdGF0
aWMgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21l
bnQsIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mJiBwcmVmaXhUb05hbWVzcGFjZU1h
cCwgY29uc3QgQXRvbVN0cmluZyYgZGVmYXVsdE5hbWVzcGFjZVVSSSwgUGFyc2VyQ29udGVudFBv
bGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgWE1MRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQsIGVsZW1lbnQsIHBhcnNlckNvbnRlbnRQ
b2xpY3kpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnRQYXJzZXIo
ZnJhZ21lbnQsIFdURk1vdmUocHJlZml4VG9OYW1lc3BhY2VNYXApLCBkZWZhdWx0TmFtZXNwYWNl
VVJJLCBwYXJzZXJDb250ZW50UG9saWN5KSk7CiAgICAgfQogCiAgICAgflhNTERvY3VtZW50UGFy
c2VyKCk7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYsIEZyYW1lVmlldyogPSBudWxscHRyKTsKLSAg
ICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiwgRWxlbWVudCosIFBhcnNlckNv
bnRlbnRQb2xpY3kpOworICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmLCBI
YXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiYsIGNvbnN0IEF0b21TdHJpbmcmLCBQYXJz
ZXJDb250ZW50UG9saWN5KTsKIAogICAgIHZvaWQgaW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmKSBm
aW5hbDsKICAgICB2b2lkIGFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJikgZmluYWw7CkBAIC0x
ODAsOSArMTgwLDEwIEBAIHByaXZhdGU6CiAgICAgVGV4dFBvc2l0aW9uIG1fc2NyaXB0U3RhcnRQ
b3NpdGlvbjsKIAogICAgIGJvb2wgbV9wYXJzaW5nRnJhZ21lbnQgeyBmYWxzZSB9OwotICAgIEF0
b21TdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlVVJJOwogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5n
LCBBdG9tU3RyaW5nPiBtX3ByZWZpeFRvTmFtZXNwYWNlTWFwOworICAgIEF0b21TdHJpbmcgbV9k
ZWZhdWx0TmFtZXNwYWNlVVJJOworCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fcGVuZGluZ1NyYzsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlzaW9uIDI1MjE0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcxLDQ0ICs1NzEsMTYgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFy
c2VyKERvYwogewogfQogCi1YTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNv
bnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKK1hNTERvY3VtZW50UGFyc2VyOjpYTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBBdG9tU3RyaW5nPiYmIHByZWZpeFRvTmFtZXNwYWNlTWFwLCBjb25zdCBBdG9tU3RyaW5n
JiBkZWZhdWx0TmFtZXNwYWNlVVJJLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQ
b2xpY3kpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQo
KSwgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5p
cXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZmcmFnbWVudCkK
ICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3Np
dGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKKyAgICAsIG1fcHJlZml4VG9O
YW1lc3BhY2VNYXAoV1RGTW92ZShwcmVmaXhUb05hbWVzcGFjZU1hcCkpCisgICAgLCBtX2RlZmF1
bHROYW1lc3BhY2VVUkkoZGVmYXVsdE5hbWVzcGFjZVVSSSkKIHsKICAgICBmcmFnbWVudC5yZWYo
KTsKLQotICAgIC8vIEFkZCBuYW1lc3BhY2VzIGJhc2VkIG9uIHRoZSBwYXJlbnQgbm9kZQotICAg
IFZlY3RvcjxFbGVtZW50Kj4gZWxlbVN0YWNrOwotICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7
Ci0gICAgICAgIGVsZW1TdGFjay5hcHBlbmQocGFyZW50RWxlbWVudCk7Ci0KLSAgICAgICAgQ29u
dGFpbmVyTm9kZSogbm9kZSA9IHBhcmVudEVsZW1lbnQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAg
aWYgKCFpczxFbGVtZW50Pihub2RlKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwYXJl
bnRFbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7Ci0gICAgfQotCi0gICAgaWYgKGVs
ZW1TdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBTaGFy
ZSBjb2RlIHdpdGggaXNEZWZhdWx0TmFtZXNwYWNlKCkgcGVyIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS14aHRtbC1zeW50YXgu
aHRtbCNwYXJzaW5nLXhodG1sLWZyYWdtZW50cwotICAgIGZvciAoOyAhZWxlbVN0YWNrLmlzRW1w
dHkoKTsgZWxlbVN0YWNrLnJlbW92ZUxhc3QoKSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gZWxlbVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMo
KSkgewotICAgICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1l
bnQtPmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZS5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAgICAgICAgbV9kZWZh
dWx0TmFtZXNwYWNlVVJJID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQotICAgICAgICAgICAgICAg
ICAgICBtX3ByZWZpeFRvTmFtZXNwYWNlTWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0
dHJpYnV0ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmIChtX2RlZmF1bHROYW1lc3BhY2VVUkkuaXNOdWxsKCkpCi0gICAgICAgIG1fZGVmYXVsdE5h
bWVzcGFjZVVSSSA9IHBhcmVudEVsZW1lbnQtPm5hbWVzcGFjZVVSSSgpOwogfQogCiBYTUxQYXJz
ZXJDb250ZXh0Ojp+WE1MUGFyc2VyQ29udGV4dCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTIxNDAp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxOS0xMS0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFBhcnNpbmcgSFRNTCBmcmFnbWVudHMgYXNzaWducyBhIHdyb25nIG5hbWVz
cGFjZSBpZiB0aGUgcGFyZW50cyBpcyBhbiBTVkcgPGZvcmVpZ25PYmplY3Q+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9mb3JlaWduT2JqZWN0
L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy5z
dmc6IEFkZGVkLgorCiAyMDE5LTExLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIFsgUEhQIF1bIGlPUyBdOiBUd28gaHR0cC90ZXN0cy9j
b29raWVzL3NhbWUtc2l0ZS9zZXQtZmlyc3QtcGFydHktKiBUZXN0cyBhcmUgRmFpbGluZwpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1w
YXJzaW5nLWV4cGVjdGVkLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZm9yZWln
bk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhwZWN0ZWQuc3ZnCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0
LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NiBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxmb3Jl
aWduT2JqZWN0IHg9IjEwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+CisgICAgICAgIDxkaXYg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgICAgICAgPGgyPkhl
YWRlcjwvaDI+CisgICAgICAgICAgICA8dGFibGUgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOyc+CisgICAgICAgICAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgICAgICAgICA8dHI+
CisgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q2VsbCAxPC90aD4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDx0aD5DZWxsIDI8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNl
bGwgMzwvdGg+CisgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPC90
aGVhZD4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvZGl2PgorICAgIDwvZm9yZWln
bk9iamVjdD4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy5z
dmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1v
YmplY3QtZHluYW1pYy1wYXJzaW5nLnN2Zwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9z
dmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIj4KKyAgICA8c2NyaXB0PjwhW0NEQVRBWworICAgICAgICB2YXIgeGh0bWxfbnMg
PSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7CisgICAgICAgIHZhciByb290ID0gZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50OworCisgICAgICAgIHZhciBmb3JlaWduT2JqZWN0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJmb3Jl
aWduT2JqZWN0Iik7CisgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmlidXRlKCJ4IiwgIjEw
Iik7CisgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIyMDAiKTsK
KyAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKKyAg
ICAgICAgcm9vdC5hcHBlbmRDaGlsZChmb3JlaWduT2JqZWN0KTsKKworICAgICAgICB2YXIgbG9n
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAiZGl2Iik7CisgICAgICAgIGZv
cmVpZ25PYmplY3QuYXBwZW5kQ2hpbGQobG9nKTsKKworICAgICAgICB2YXIgaHRtbCA9CisgICAg
ICAgICAgICAiPGgyPkhlYWRlcjwvaDI+IiArIAorICAgICAgICAgICAgIjx0YWJsZSBzdHlsZT0n
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7Jz4iICsKKyAgICAgICAgICAgICAgICAiPHRoZWFkPiIg
KworICAgICAgICAgICAgICAgICAgICAiPHRyPiIgKworICAgICAgICAgICAgICAgICAgICAgICAg
Ijx0aD5DZWxsIDE8L3RoPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjx0aD5DZWxsIDI8
L3RoPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjx0aD5DZWxsIDM8L3RoPiIgKworICAg
ICAgICAgICAgICAgICAgICAiPC90cj4iICsKKyAgICAgICAgICAgICAgICAiPC90aGVhZD4iICsK
KyAgICAgICAgICAgICI8L3RhYmxlPiI7CisKKyAgICAgICAgbG9nLmlubmVySFRNTCA9IGh0bWw7
CisgICAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>382997</attachid>
            <date>2019-11-06 18:19:20 -0800</date>
            <delta_ts>2019-11-06 18:19:20 -0800</delta_ts>
            <desc>Prefix test case (Asserts in debug build)</desc>
            <filename>foreign-object-dynamic-parsing.svg</filename>
            <type>image/svg+xml</type>
            <size>1497</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmg9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgogICAgPHNjcmlwdD48IVtDREFUQVsKICAgICAgICB2YXIg
eGh0bWxfbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7CiAgICAgICAgdmFyIHJv
b3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CgogICAgICAgIHZhciBmb3JlaWduT2JqZWN0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJmb3JlaWduT2JqZWN0Iik7CiAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRBdHRyaWJ1dGUoIngi
LCAiMTAiKTsKICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAw
JSIpOwogICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwJSIp
OwogICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZm9yZWlnbk9iamVjdCk7CgogICAgICAgIGZvcmVp
Z25PYmplY3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAi
ZGl2IikpOwogICAgICAgIGZvcmVpZ25PYmplY3QubGFzdENoaWxkLmlubmVySFRNTCA9CiAgICAg
ICAgICAgICI8aDI+SGVhZGVyIDE8L2gyPiIgKyAKICAgICAgICAgICAgIjx0YWJsZSBzdHlsZT0n
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7Jz4iICsKICAgICAgICAgICAgICAgICI8dGhlYWQ+IiAr
CiAgICAgICAgICAgICAgICAgICAgIjx0cj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjx0
aD5BPC90aD4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjx0aD5CPC90aD4iICsKICAgICAg
ICAgICAgICAgICAgICAgICAgIjx0aD5DPC90aD4iICsKICAgICAgICAgICAgICAgICAgICAiPC90
cj4iICsKICAgICAgICAgICAgICAgICI8L3RoZWFkPiIgKwogICAgICAgICAgICAiPC90YWJsZT4i
OwoKICAgICAgICBmb3JlaWduT2JqZWN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyh4aHRtbF9ucywgImg6ZGl2IikpOwogICAgICAgIGZvcmVpZ25PYmplY3QubGFzdENoaWxk
LmlubmVySFRNTCA9CiAgICAgICAgICAgICI8aDpoMj5IZWFkZXIgMjwvaDpoMj4iICsgCiAgICAg
ICAgICAgICI8aDp0YWJsZSBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Jz4iICsKICAg
ICAgICAgICAgICAgICI8aDp0aGVhZD4iICsKICAgICAgICAgICAgICAgICAgICAiPGg6dHI+IiAr
CiAgICAgICAgICAgICAgICAgICAgICAgICI8aDp0aD5EPC9oOnRoPiIgKwogICAgICAgICAgICAg
ICAgICAgICAgICAiPGg6dGg+RTwvaDp0aD4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjxo
OnRoPkY8L2g6dGg+IiArCiAgICAgICAgICAgICAgICAgICAgIjwvaDp0cj4iICsKICAgICAgICAg
ICAgICAgICI8L2g6dGhlYWQ+IiArCiAgICAgICAgICAgICI8L2g6dGFibGU+IjsKICAgIF1dPjwv
c2NyaXB0Pgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383070</attachid>
            <date>2019-11-07 13:59:29 -0800</date>
            <delta_ts>2019-11-07 17:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191107135927.patch</filename>
            <type>text/plain</type>
            <size>14688</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE5LTExLTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmYXVsdCBO
YW1lcGFjZVVSSSBtdXN0IGJlIGdvdHRlbiBmcm9tIHRoZSB0b3Btb3N0IHBhcmVudCBiZWZvcmUg
dGhlIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGRvbid0IGNyb3NzIGJvdW5kYXJpZXMgZnJv
bSBIVE1MIHRvIFNWRyB3aGVuIHRyYXZlcnNpbmcKKyAgICAgICAgdGhlIHRyZWUgb2Ygbm9kZXMg
dXB3YXJkLiBXZSBuZWVkIHRvIHN0b3AgYXQgdGhlIGZvcmVpZ25PYmplY3QgaWYgaXQgaXMKKyAg
ICAgICAgb25lIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhlIGNvbnRleHRFbGVtZW50LgorCisgICAg
ICAgIFRlc3RzOiBzdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNp
bmcuc3ZnCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjpIVE1MVGFibGVDZWxsRWxlbWVudCk6
CisgICAgICAgIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBub3QgZmlyZSBpZiB0aGUgdGFnIGhhcyBh
IHByZWZpeCBsaWtlIDxoOnRoPiBvcgorICAgICAgICA8aDp0ZD4gd2hlcmUgJ2gnIGlzIGEgZGVm
aW5lZCBuYW1lc3BhY2UuCisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICBDYWxjdWxhdGUgdGhlIGRlZmF1bHROYW1lc3BhY2VVUkkgYW5k
IHByZWZpeFRvTmFtZXNwYWNlTWFwIGluIHNlcGFyYXRlCisgICAgICAgIGxvb3BzIHRvIG1ha2Ug
dGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KKworICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQ
YXJzZXIpOgorCisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVt
ZW50TnMpOgorICAgICAgICBXZSBuZWVkIHRvIHNwZWNpYWwgY2FzZSBzZXR0aW5nIHRoZSBuYW1l
c3BhY2VVUkkgb2YgdGhlIFNWR0VsbWVuZXRzLiBUaGUKKyAgICAgICAgZGVmYXVsdE5hbWVzcGFj
ZVVSSSBjYW4gYmUgd3JvbmcgZm9yIHRoZW0gaWYgdGhlIGNvbnRleHQgZWxlbWVudCBpcyBhbgor
ICAgICAgICBIVE1MIGVsZW1lbnQsIDxkaXY+IGZvciBleGFtcGxlLCB3aGljaCBpcyBpbnNpZGUg
YW4gVkcgPGZvcmVpZ25PYmplY3Q+LgorCiAyMDE5LTExLTA3ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bTWFyZ2luQ29sbGFwc2luZ10gRHJhZyBhbm9u
eW1vdXMgYmxvY2sgbGV2ZWwgYm94ZXMgaW50byBtYXJnaW4gY29sbGFwc2luZwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1
MjE0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4g
SFRNTFRhYmxlQ2VsbEUKIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpIVE1MVGFibGVDZWxsRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBIVE1MVGFibGVQYXJ0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQo
dGFnTmFtZSA9PSB0aFRhZyB8fCB0YWdOYW1lID09IHRkVGFnKTsKKyAgICBBU1NFUlQoaGFzTG9j
YWxOYW1lKHRoVGFnLT5sb2NhbE5hbWUoKSkgfHwgaGFzTG9jYWxOYW1lKHRkVGFnLT5sb2NhbE5h
bWUoKSkpOwogfQogCiB1bnNpZ25lZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sU3BhbigpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcAkocmV2aXNpb24gMjUyMTQwKQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNp
bmNsdWRlICJUcmVlRGVwdGhMaW1pdC5oIgorI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTI2OSw3ICsyNzEsMjkgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2VEb2N1bWVudEZyYQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRv
IHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVt
ZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21T
dHJpbmc+IHByZWZpeFRvTmFtZXNwYWNlTWFwOworICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBj
b250ZXh0RWxlbWVudDsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1l
bnQoKSkgeworICAgICAgICBpZiAoIWFuY2VzdG9yLT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
IDogYW5jZXN0b3ItPmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgIHByZWZpeFRv
TmFtZXNwYWNlTWFwLnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEF0b21TdHJpbmcgZGVmYXVsdE5hbWVzcGFjZVVS
STsKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gY29udGV4dEVsZW1lbnQ7IGFuY2VzdG9yICYm
ICFpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4oYW5jZXN0b3IpOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGFu
Y2VzdG9yLT5uYW1lc3BhY2VVUkkoKTsKKworICAgICAgICBhdXRvIHZhbHVlID0gYW5jZXN0b3It
PmdldEF0dHJpYnV0ZShYTUxOU05hbWVzOjp4bWxuc0F0dHIpOworICAgICAgICBpZiAoIXZhbHVl
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJID0gdmFsdWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gcGFyc2VyID0g
WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgV1RGTW92ZShwcmVmaXhUb05hbWVz
cGFjZU1hcCksIGRlZmF1bHROYW1lc3BhY2VVUkksIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAg
IGJvb2wgd2VsbEZvcm1lZCA9IHBhcnNlci0+YXBwZW5kRnJhZ21lbnRTb3VyY2UoY2h1bmspOwog
ICAgIC8vIERvIG5vdCBjYWxsIGZpbmlzaCgpLiBUaGUgZmluaXNoKCkgYW5kIGRvRW5kKCkgaW1w
bGVtZW50YXRpb25zIHRvdWNoIHRoZSBtYWluIGRvY3VtZW50IGFuZCBsb2FkZXIgYW5kIGNhbiBj
YXVzZSBjcmFzaGVzIGluIHRoZSBmcmFnbWVudCBjYXNlLgogICAgIHBhcnNlci0+ZGV0YWNoKCk7
IC8vIEFsbG93cyB+RG9jdW1lbnRQYXJzZXIgdG8gYXNzZXJ0IGl0IHdhcyBkZXRhY2hlZCBiZWZv
cmUgZGVzdHJ1Y3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5oCShyZXZpc2lvbiAyNTIxNDApCisrKyBTb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1l
bnRQYXJzZXIoZG9jdW1lbnQsIHZpZXcpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxYTUxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBl
bGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCisgICAgc3Rh
dGljIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiYgcHJlZml4VG9OYW1lc3BhY2VN
YXAsIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1bHROYW1lc3BhY2VVUkksIFBhcnNlckNvbnRlbnRQ
b2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFhNTERvY3VtZW50UGFyc2VyKGZyYWdtZW50LCBlbGVtZW50LCBwYXJzZXJDb250ZW50
UG9saWN5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50UGFyc2Vy
KGZyYWdtZW50LCBXVEZNb3ZlKHByZWZpeFRvTmFtZXNwYWNlTWFwKSwgZGVmYXVsdE5hbWVzcGFj
ZVVSSSwgcGFyc2VyQ29udGVudFBvbGljeSkpOwogICAgIH0KIAogICAgIH5YTUxEb2N1bWVudFBh
cnNlcigpOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmLCBGcmFtZVZpZXcqID0gbnVsbHB0cik7Ci0g
ICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1lbnQqLCBQYXJzZXJD
b250ZW50UG9saWN5KTsKKyAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50Jiwg
SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYmLCBjb25zdCBBdG9tU3RyaW5nJiwgUGFy
c2VyQ29udGVudFBvbGljeSk7CiAKICAgICB2b2lkIGluc2VydChTZWdtZW50ZWRTdHJpbmcmJikg
ZmluYWw7CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIGZpbmFsOwpAQCAt
MTgwLDkgKzE4MCwxMCBAQCBwcml2YXRlOgogICAgIFRleHRQb3NpdGlvbiBtX3NjcmlwdFN0YXJ0
UG9zaXRpb247CiAKICAgICBib29sIG1fcGFyc2luZ0ZyYWdtZW50IHsgZmFsc2UgfTsKLSAgICBB
dG9tU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZVVSSTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmlu
ZywgQXRvbVN0cmluZz4gbV9wcmVmaXhUb05hbWVzcGFjZU1hcDsKKyAgICBBdG9tU3RyaW5nIG1f
ZGVmYXVsdE5hbWVzcGFjZVVSSTsKKwogICAgIFNlZ21lbnRlZFN0cmluZyBtX3BlbmRpbmdTcmM7
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCShyZXZpc2lvbiAyNTIxNDApCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3MSw0NCArNTcxLDE2IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcihEb2MKIHsKIH0KIAotWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERv
Y3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJD
b250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCitYTUxEb2N1bWVudFBhcnNlcjo6WE1M
RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEhhc2hNYXA8QXRvbVN0
cmluZywgQXRvbVN0cmluZz4mJiBwcmVmaXhUb05hbWVzcGFjZU1hcCwgY29uc3QgQXRvbVN0cmlu
ZyYgZGVmYXVsdE5hbWVzcGFjZVVSSSwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50
UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50
KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVu
aXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZnJhZ21lbnQp
CiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9z
aXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCisgICAgLCBtX3ByZWZpeFRv
TmFtZXNwYWNlTWFwKFdURk1vdmUocHJlZml4VG9OYW1lc3BhY2VNYXApKQorICAgICwgbV9kZWZh
dWx0TmFtZXNwYWNlVVJJKGRlZmF1bHROYW1lc3BhY2VVUkkpCiB7CiAgICAgZnJhZ21lbnQucmVm
KCk7Ci0KLSAgICAvLyBBZGQgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgcGFyZW50IG5vZGUKLSAg
ICBWZWN0b3I8RWxlbWVudCo+IGVsZW1TdGFjazsKLSAgICB3aGlsZSAocGFyZW50RWxlbWVudCkg
ewotICAgICAgICBlbGVtU3RhY2suYXBwZW5kKHBhcmVudEVsZW1lbnQpOwotCi0gICAgICAgIENv
bnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgICAg
IGlmICghaXM8RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcGFy
ZW50RWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgIH0KLQotICAgIGlmIChl
bGVtU3RhY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogU2hh
cmUgY29kZSB3aXRoIGlzRGVmYXVsdE5hbWVzcGFjZSgpIHBlciBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUteGh0bWwtc3ludGF4
Lmh0bWwjcGFyc2luZy14aHRtbC1mcmFnbWVudHMKLSAgICBmb3IgKDsgIWVsZW1TdGFjay5pc0Vt
cHR5KCk7IGVsZW1TdGFjay5yZW1vdmVMYXN0KCkpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IGVsZW1TdGFjay5sYXN0KCk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGVz
KCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVt
ZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZGVm
YXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLCBh
dHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAobV9kZWZhdWx0TmFtZXNwYWNlVVJJLmlzTnVsbCgpKQotICAgICAgICBtX2RlZmF1bHRO
YW1lc3BhY2VVUkkgPSBwYXJlbnRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKIH0KIAogWE1MUGFy
c2VyQ29udGV4dDo6flhNTFBhcnNlckNvbnRleHQoKQpAQCAtNzY5LDYgKzc0MSw4IEBAIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKGMKICAgICBpZiAobV9wYXJzaW5nRnJh
Z21lbnQgJiYgdXJpLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghcHJlZml4LmlzTnVsbCgpKQog
ICAgICAgICAgICAgdXJpID0gbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5nZXQocHJlZml4KTsKKyAg
ICAgICAgZWxzZSBpZiAoaXM8U1ZHRWxlbWVudD4obV9jdXJyZW50Tm9kZSkgfHwgbG9jYWxOYW1l
ID09IFNWR05hbWVzOjpzdmdUYWctPmxvY2FsTmFtZSgpKQorICAgICAgICAgICAgdXJpID0gU1ZH
TmFtZXM6OnN2Z05hbWVzcGFjZVVSSTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdXJpID0g
bV9kZWZhdWx0TmFtZXNwYWNlVVJJOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE0MCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE5LTExLTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGVmYXVsdCBOYW1lcGFjZVVSSSBtdXN0IGJlIGdvdHRlbiBmcm9tIHRoZSB0
b3Btb3N0IHBhcmVudCBiZWZvcmUgdGhlIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2ZvcmVpZ25PYmplY3Qv
Zm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5nLnN2
ZzogQWRkZWQuCisKIDIwMTktMTEtMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gWyBQSFAgXVsgaU9TIF06IFR3byBodHRwL3Rlc3RzL2Nv
b2tpZXMvc2FtZS1zaXRlL3NldC1maXJzdC1wYXJ0eS0qIFRlc3RzIGFyZSBGYWlsaW5nCkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBh
cnNpbmctZXhwZWN0ZWQuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9mb3JlaWdu
T2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmcJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3Qt
ZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0
IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGZvcmVp
Z25PYmplY3QgeD0iMTAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CisgICAgICAg
IDxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgICAgICAg
PGgyPkhlYWRlciAxPC9oMj4KKyAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7Ij4KKyAgICAgICAgICAgICAgICA8dGhlYWQ+CisgICAgICAgICAgICAgICAg
ICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BPC90aD4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDx0aD5CPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5DPC90
aD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8L3RoZWFkPgor
ICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9kaXY+CisgICAgPC9mb3JlaWduT2JqZWN0
PgorICAgIDxmb3JlaWduT2JqZWN0IHg9IjEyMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIj4KKyAgICAgICAgPGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+
CisgICAgICAgICAgICA8aDI+SGVhZGVyIDI8L2gyPgorICAgICAgICAgICAgPHRhYmxlIHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorICAgICAgICAgICAgICAgIDx0aGVhZD4KKyAg
ICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkQ8L3Ro
PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkU8L3RoPgorICAgICAgICAgICAgICAgICAg
ICAgICAgPHRoPkY8L3RoPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAg
ICAgIDwvdGhlYWQ+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2ZvcmVpZ25PYmplY3Q+CisgICAgPHJlY3QgeD0iMTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPHJlY3QgeD0iMTIwIiB5PSIxMjAiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgorICAgIDxyZWN0IHg9IjEwIiB5PSIy
MzAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgorICAgIDxyZWN0IHg9
IjEyMCIgeT0iMjMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3Qt
ZHluYW1pYy1wYXJzaW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZm9yZWln
bk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMt
cGFyc2luZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmg9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgICAgICBmdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50KG5hbWUsIGF0
dHJzLCBwYXJlbnRFbGVtZW50KSB7CisgICAgICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2UgPSAi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCBuYW1lKTsKKworICAgICAgICAg
ICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQorICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0
cmlidXRlKGtleSwgYXR0cnNba2V5XSk7CisKKyAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUhUTUxFbGVtZW50KG5hbWUpIHsKKyAgICAgICAg
ICAgIGNvbnN0IHhodG1sTmFtZXNwYWNlID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
OworICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVz
cGFjZSwgbmFtZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudDsKKworICAgICAgICB2YXIgZm9yZWlnbk9iamVjdDEgPSBjcmVhdGVTVkdF
bGVtZW50KCJmb3JlaWduT2JqZWN0IiwgeyB4OiAxMCwgeTogMTAsIHdpZHRoOiAxMDAsIGhlaWdo
dDogMTAwIH0sIHJvb3QpOworICAgICAgICBmb3JlaWduT2JqZWN0MS5hcHBlbmRDaGlsZChjcmVh
dGVIVE1MRWxlbWVudCgiZGl2IikpOworICAgICAgICBmb3JlaWduT2JqZWN0MS5sYXN0Q2hpbGQu
aW5uZXJIVE1MID0KKyAgICAgICAgICAgICI8aDI+SGVhZGVyIDE8L2gyPiIgKyAKKyAgICAgICAg
ICAgICI8dGFibGUgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyc+IiArCisgICAgICAg
ICAgICAgICAgIjx0aGVhZD4iICsKKyAgICAgICAgICAgICAgICAgICAgIjx0cj4iICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICI8dGg+QTwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICAg
ICAiPHRoPkI8L3RoPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjx0aD5DPC90aD4iICsK
KyAgICAgICAgICAgICAgICAgICAgIjwvdHI+IiArCisgICAgICAgICAgICAgICAgIjwvdGhlYWQ+
IiArCisgICAgICAgICAgICAiPC90YWJsZT4iOworCisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmpl
Y3QyID0gY3JlYXRlU1ZHRWxlbWVudCgiZm9yZWlnbk9iamVjdCIsIHsgeDogMTIwLCB5OiAxMCwg
d2lkdGg6IDEwMCwgaGVpZ2h0OiAxMDAgfSwgcm9vdCk7CisgICAgICAgIGZvcmVpZ25PYmplY3Qy
LmFwcGVuZENoaWxkKGNyZWF0ZUhUTUxFbGVtZW50KCJoOmRpdiIpKTsKKyAgICAgICAgZm9yZWln
bk9iamVjdDIubGFzdENoaWxkLmlubmVySFRNTCA9CisgICAgICAgICAgICAiPGg6aDI+SGVhZGVy
IDI8L2g6aDI+IiArIAorICAgICAgICAgICAgIjxoOnRhYmxlIHN0eWxlPSdib3JkZXI6IDFweCBz
b2xpZCBibGFjazsnPiIgKworICAgICAgICAgICAgICAgICI8aDp0aGVhZD4iICsKKyAgICAgICAg
ICAgICAgICAgICAgIjxoOnRyPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjxoOnRoPkQ8
L2g6dGg+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiPGg6dGg+RTwvaDp0aD4iICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICI8aDp0aD5GPC9oOnRoPiIgKworICAgICAgICAgICAgICAg
ICAgICAiPC9oOnRyPiIgKworICAgICAgICAgICAgICAgICI8L2g6dGhlYWQ+IiArCisgICAgICAg
ICAgICAiPC9oOnRhYmxlPiI7CisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QzID0gY3JlYXRl
U1ZHRWxlbWVudCgiZm9yZWlnbk9iamVjdCIsIHsgeDogMTAsIHk6IDEyMCwgd2lkdGg6IDEwMCwg
aGVpZ2h0OiAxMDAgfSwgcm9vdCk7CisgICAgICAgIGZvcmVpZ25PYmplY3QzLmFwcGVuZENoaWxk
KGNyZWF0ZUhUTUxFbGVtZW50KCJoOmRpdiIpKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdDMubGFz
dENoaWxkLmlubmVySFRNTCA9ICI8c3ZnPjxyZWN0IHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBm
aWxsPSdncmVlbicvPjwvc3ZnPiI7CisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3Q0ID0gY3Jl
YXRlU1ZHRWxlbWVudCgiZm9yZWlnbk9iamVjdCIsIHsgeDogMTIwLCB5OiAxMjAsIHdpZHRoOiAx
MDAsIGhlaWdodDogMTAwIH0sIHJvb3QpOworICAgICAgICBmb3JlaWduT2JqZWN0NC5hcHBlbmRD
aGlsZChjcmVhdGVIVE1MRWxlbWVudCgiaDpkaXYiKSk7CisgICAgICAgIGZvcmVpZ25PYmplY3Q0
Lmxhc3RDaGlsZC5pbm5lckhUTUwgPSAiPHM6c3ZnPjxzOnJlY3Qgd2lkdGg9JzEwMCcgaGVpZ2h0
PScxMDAnIGZpbGw9J2dyZWVuJy8+PC9zOnN2Zz4iOworCisgICAgICAgIHZhciBzdmcxID0gY3Jl
YXRlU1ZHRWxlbWVudCgic3ZnIiwgeyB9LCByb290KTsKKyAgICAgICAgdmFyIGcxID0gY3JlYXRl
U1ZHRWxlbWVudCgiZyIsIHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEwLCAyMzApJyB9LCBzdmcx
KTsKKyAgICAgICAgZzEuaW5uZXJIVE1MID0gIjxyZWN0IHdpZHRoPScxMDAnIGhlaWdodD0nMTAw
JyBmaWxsPSdncmVlbicvPiI7CisKKyAgICAgICAgdmFyIHN2ZzIgPSBjcmVhdGVTVkdFbGVtZW50
KCJzOnN2ZyIsIHsgfSwgcm9vdCk7CisgICAgICAgIHZhciBnMiA9IGNyZWF0ZVNWR0VsZW1lbnQo
InM6ZyIsIHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEyMCwgMjMwKScgfSwgc3ZnMik7CisgICAg
ICAgIGcyLmlubmVySFRNTCA9ICI8czpyZWN0IHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxs
PSdncmVlbicvPiI7CisgICAgXV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383095</attachid>
            <date>2019-11-07 17:10:27 -0800</date>
            <delta_ts>2019-11-07 18:52:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203868-20191107171026.patch</filename>
            <type>text/plain</type>
            <size>15012</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTExLTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmYXVsdCBO
YW1lcGFjZVVSSSBtdXN0IGJlIGdvdHRlbiBmcm9tIHRoZSB0b3Btb3N0IHBhcmVudCBiZWZvcmUg
dGhlIFNWRyA8Zm9yZWlnbk9iamVjdD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KKworICAgICAgICBFbnN1cmUgdGhhdCB3ZSBkb24ndCBjcm9zcyBib3VuZGFyaWVzIGZyb20g
SFRNTCB0byBTVkcgd2hlbiB0cmF2ZXJzaW5nCisgICAgICAgIHRoZSB0cmVlIG9mIG5vZGVzIHVw
d2FyZC4gV2UgbmVlZCB0byBzdG9wIGF0IHRoZSBmb3JlaWduT2JqZWN0IGlmIGl0IGlzCisgICAg
ICAgIG9uZSBvZiB0aGUgYW5jZXN0b3JzIG9mIHRoZSBjb250ZXh0RWxlbWVudC4KKworICAgICAg
ICBUZXN0czogc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3QtZHluYW1pYy1wYXJzaW5n
LnN2ZworCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQpOgor
ICAgICAgICBUaGlzIGFzc2VydGlvbiBzaG91bGQgbm90IGZpcmUgaWYgdGhlIHRhZyBoYXMgYSBw
cmVmaXggbGlrZSA8aDp0aD4gb3IKKyAgICAgICAgPGg6dGQ+IHdoZXJlICdoJyBpcyBhIGRlZmlu
ZWQgbmFtZXNwYWNlLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZy
YWdtZW50KToKKyAgICAgICAgU3RvcCBhdCB0aGUgZmlyc3QgU1ZHIDxmb3JlaWduT2JqZWN0PiBh
bmNlc3RvciB3aGVuIGNhbGN1bGF0aW5nIHRoZQorICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJ
LgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAq
IHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisKKyAgICAgICAgKFdl
YkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgIFdlIG5l
ZWQgdG8gc3BlY2lhbCBjYXNlIHNldHRpbmcgdGhlIG5hbWVzcGFjZVVSSSBvZiB0aGUgU1ZHRWxt
ZW5ldHMuIFRoZQorICAgICAgICBkZWZhdWx0TmFtZXNwYWNlVVJJIGNhbiBiZSB3cm9uZyBmb3Ig
dGhlbSBpZiB0aGUgY29udGV4dCBlbGVtZW50IGlzIGFuCisgICAgICAgIEhUTUwgZWxlbWVudCwg
PGRpdj4gZm9yIGV4YW1wbGUsIGFuZCB0aGUgaW5uZXJIVE1MIGlzIHNldCB0byBzb21ldGhpbmcK
KyAgICAgICAgbGlrZTogJzxzdmc+PHJlY3QvPjwvc3ZnPicuCisKIDIwMTktMTEtMDcgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtNYXJnaW5Db2xsYXBz
aW5nXSBEcmFnIGFub255bW91cyBibG9jayBsZXZlbCBib3hlcyBpbnRvIG1hcmdpbiBjb2xsYXBz
aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNw
cAkocmV2aXNpb24gMjUyMTQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgUmVmPEhUTUxUYWJs
ZUNlbGxFbGVtZW50PiBIVE1MVGFibGVDZWxsRQogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OkhUTUxU
YWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKICAgICA6IEhUTUxUYWJsZVBhcnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewotICAgIEFTU0VSVCh0YWdOYW1lID09IHRoVGFnIHx8IHRhZ05hbWUgPT0gdGRUYWcpOworICAg
IEFTU0VSVChoYXNMb2NhbE5hbWUodGhUYWctPmxvY2FsTmFtZSgpKSB8fCBoYXNMb2NhbE5hbWUo
dGRUYWctPmxvY2FsTmFtZSgpKSk7CiB9CiAKIHVuc2lnbmVkIEhUTUxUYWJsZUNlbGxFbGVtZW50
Ojpjb2xTcGFuKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAyNTIxNDApCisrKyBTb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKQEAgLTUwLDYgKzUyLDcgQEAKICNpbmNsdWRlICJT
dHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IlRyZWVEZXB0aExpbWl0LmgiCisjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtMjY5LDcgKzI3MiwyOCBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURv
Y3VtZW50RnJhCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gcGFyc2Vy
ID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBh
cnNlckNvbnRlbnRQb2xpY3kpOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4g
cHJlZml4VG9OYW1lc3BhY2VNYXA7CisgICAgQXRvbVN0cmluZyBkZWZhdWx0TmFtZXNwYWNlVVJJ
OworICAgIGJvb2wgc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJID0gZmFsc2U7Cisg
ICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudExpbmVhZ2UoY29udGV4dEVsZW1l
bnQpKSB7CisgICAgICAgIGlmIChpczxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4oZWxlbWVudCkp
CisgICAgICAgICAgICBzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgPSB0cnVlOwor
ICAgICAgICBlbHNlIGlmICghc3RvcExvb2tpbmdGb3JEZWZhdWx0TmFtZXNwYWNlVVJJKQorICAg
ICAgICAgICAgZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7CisK
KyAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50
LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZp
eCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgIHByZWZpeFRvTmFtZXNwYWNlTWFw
LnNldChhdHRyaWJ1dGUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKCFzdG9wTG9va2luZ0ZvckRlZmF1bHROYW1lc3BhY2VVUkkgJiYgYXR0cmli
dXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSgpKQorICAgICAgICAgICAgICAgIGRlZmF1bHROYW1l
c3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1
dG8gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgV1RGTW92ZShw
cmVmaXhUb05hbWVzcGFjZU1hcCksIGRlZmF1bHROYW1lc3BhY2VVUkksIHBhcnNlckNvbnRlbnRQ
b2xpY3kpOwogICAgIGJvb2wgd2VsbEZvcm1lZCA9IHBhcnNlci0+YXBwZW5kRnJhZ21lbnRTb3Vy
Y2UoY2h1bmspOwogICAgIC8vIERvIG5vdCBjYWxsIGZpbmlzaCgpLiBUaGUgZmluaXNoKCkgYW5k
IGRvRW5kKCkgaW1wbGVtZW50YXRpb25zIHRvdWNoIHRoZSBtYWluIGRvY3VtZW50IGFuZCBsb2Fk
ZXIgYW5kIGNhbiBjYXVzZSBjcmFzaGVzIGluIHRoZSBmcmFnbWVudCBjYXNlLgogICAgIHBhcnNl
ci0+ZGV0YWNoKCk7IC8vIEFsbG93cyB+RG9jdW1lbnRQYXJzZXIgdG8gYXNzZXJ0IGl0IHdhcyBk
ZXRhY2hlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCShyZXZpc2lvbiAyNTIxNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgWE1MRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHZpZXcpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50
LCBFbGVtZW50KiBlbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xp
Y3kpCisgICAgc3RhdGljIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiYgcHJlZml4
VG9OYW1lc3BhY2VNYXAsIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1bHROYW1lc3BhY2VVUkksIFBh
cnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50UGFyc2VyKGZyYWdtZW50LCBlbGVtZW50LCBw
YXJzZXJDb250ZW50UG9saWN5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERv
Y3VtZW50UGFyc2VyKGZyYWdtZW50LCBXVEZNb3ZlKHByZWZpeFRvTmFtZXNwYWNlTWFwKSwgZGVm
YXVsdE5hbWVzcGFjZVVSSSwgcGFyc2VyQ29udGVudFBvbGljeSkpOwogICAgIH0KIAogICAgIH5Y
TUxEb2N1bWVudFBhcnNlcigpOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmLCBGcmFtZVZpZXcqID0g
bnVsbHB0cik7Ci0gICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1l
bnQqLCBQYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVu
dEZyYWdtZW50JiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYmLCBjb25zdCBBdG9t
U3RyaW5nJiwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAKICAgICB2b2lkIGluc2VydChTZWdtZW50
ZWRTdHJpbmcmJikgZmluYWw7CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYp
IGZpbmFsOwpAQCAtMTgwLDkgKzE4MCwxMCBAQCBwcml2YXRlOgogICAgIFRleHRQb3NpdGlvbiBt
X3NjcmlwdFN0YXJ0UG9zaXRpb247CiAKICAgICBib29sIG1fcGFyc2luZ0ZyYWdtZW50IHsgZmFs
c2UgfTsKLSAgICBBdG9tU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZVVSSTsKIAogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gbV9wcmVmaXhUb05hbWVzcGFjZU1hcDsKKyAgICBB
dG9tU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZVVSSTsKKwogICAgIFNlZ21lbnRlZFN0cmluZyBt
X3BlbmRpbmdTcmM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCShyZXZpc2lvbiAyNTIxNDApCisr
KyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3MSw0NCArNTcxLDE2IEBAIFhNTERvY3VtZW50UGFyc2VyOjpY
TUxEb2N1bWVudFBhcnNlcihEb2MKIHsKIH0KIAotWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVt
ZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCitYTUxEb2N1bWVu
dFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEhh
c2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mJiBwcmVmaXhUb05hbWVzcGFjZU1hcCwgY29u
c3QgQXRvbVN0cmluZyYgZGVmYXVsdE5hbWVzcGFjZVVSSSwgUGFyc2VyQ29udGVudFBvbGljeSBw
YXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdt
ZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgLCBtX3BlbmRpbmdDYWxs
YmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9k
ZSgmZnJhZ21lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpi
ZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCisgICAg
LCBtX3ByZWZpeFRvTmFtZXNwYWNlTWFwKFdURk1vdmUocHJlZml4VG9OYW1lc3BhY2VNYXApKQor
ICAgICwgbV9kZWZhdWx0TmFtZXNwYWNlVVJJKGRlZmF1bHROYW1lc3BhY2VVUkkpCiB7CiAgICAg
ZnJhZ21lbnQucmVmKCk7Ci0KLSAgICAvLyBBZGQgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgcGFy
ZW50IG5vZGUKLSAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1TdGFjazsKLSAgICB3aGlsZSAocGFy
ZW50RWxlbWVudCkgewotICAgICAgICBlbGVtU3RhY2suYXBwZW5kKHBhcmVudEVsZW1lbnQpOwot
Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnROb2Rl
KCk7Ci0gICAgICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgcGFyZW50RWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgIH0K
LQotICAgIGlmIChlbGVtU3RhY2suaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBGSVhNRTogU2hhcmUgY29kZSB3aXRoIGlzRGVmYXVsdE5hbWVzcGFjZSgpIHBlciBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUt
eGh0bWwtc3ludGF4Lmh0bWwjcGFyc2luZy14aHRtbC1mcmFnbWVudHMKLSAgICBmb3IgKDsgIWVs
ZW1TdGFjay5pc0VtcHR5KCk7IGVsZW1TdGFjay5yZW1vdmVMYXN0KCkpIHsKLSAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IGVsZW1TdGFjay5sYXN0KCk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5o
YXNBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUgOiBlbGVtZW50LT5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZGVmYXVsdE5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxv
Y2FsTmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAobV9kZWZhdWx0TmFtZXNwYWNlVVJJLmlzTnVsbCgpKQotICAgICAg
ICBtX2RlZmF1bHROYW1lc3BhY2VVUkkgPSBwYXJlbnRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsK
IH0KIAogWE1MUGFyc2VyQ29udGV4dDo6flhNTFBhcnNlckNvbnRleHQoKQpAQCAtNzY5LDYgKzc0
MSw4IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKGMKICAgICBpZiAo
bV9wYXJzaW5nRnJhZ21lbnQgJiYgdXJpLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghcHJlZml4
LmlzTnVsbCgpKQogICAgICAgICAgICAgdXJpID0gbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5nZXQo
cHJlZml4KTsKKyAgICAgICAgZWxzZSBpZiAoaXM8U1ZHRWxlbWVudD4obV9jdXJyZW50Tm9kZSkg
fHwgbG9jYWxOYW1lID09IFNWR05hbWVzOjpzdmdUYWctPmxvY2FsTmFtZSgpKQorICAgICAgICAg
ICAgdXJpID0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdXJpID0gbV9kZWZhdWx0TmFtZXNwYWNlVVJJOwogICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1MjE0MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDE5LTExLTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmYXVsdCBOYW1lcGFjZVVSSSBtdXN0IGJlIGdvdHRl
biBmcm9tIHRoZSB0b3Btb3N0IHBhcmVudCBiZWZvcmUgdGhlIFNWRyA8Zm9yZWlnbk9iamVjdD4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIHN2Zy9mb3Jl
aWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMt
cGFyc2luZy5zdmc6IEFkZGVkLgorCiAyMDE5LTExLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIFsgUEhQIF1bIGlPUyBdOiBUd28gaHR0
cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9zZXQtZmlyc3QtcGFydHktKiBUZXN0cyBhcmUgRmFp
bGluZwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3Qt
ZHluYW1pYy1wYXJzaW5nLWV4cGVjdGVkLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZm9yZWlnbk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmctZXhwZWN0ZWQu
c3ZnCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVp
Z24tb2JqZWN0LWR5bmFtaWMtcGFyc2luZy1leHBlY3RlZC5zdmcJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNCBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgor
ICAgIDxmb3JlaWduT2JqZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
PgorICAgICAgICA8ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAg
ICAgICAgICAgIDxoMj5BQkM8L2gyPgorICAgICAgICAgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6
IDFweCBzb2xpZCBibGFjazsiPgorICAgICAgICAgICAgICAgIDx0aGVhZD4KKyAgICAgICAgICAg
ICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkE8L3RoPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPHRoPkI8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRo
PkM8L3RoPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDwvdGhl
YWQ+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2ZvcmVpZ25P
YmplY3Q+CisgICAgPGZvcmVpZ25PYmplY3QgeD0iMTIwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiPgorICAgICAgICA8ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKyAgICAgICAgICAgIDxoMj5ERUY8L2gyPgorICAgICAgICAgICAgPHRhYmxlIHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorICAgICAgICAgICAgICAgIDx0aGVhZD4KKyAg
ICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkQ8L3Ro
PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkU8L3RoPgorICAgICAgICAgICAgICAgICAg
ICAgICAgPHRoPkY8L3RoPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAg
ICAgIDwvdGhlYWQ+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2ZvcmVpZ25PYmplY3Q+CisgICAgPHJlY3QgeD0iMTAiIHk9IjEyMCIgd2lkdGg9IjEwMCIgaGVp
Z2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPHJlY3QgeD0iMTIwIiB5PSIxMjAiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgorICAgIDxyZWN0IHg9IjEwIiB5PSIy
MzAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgorICAgIDxyZWN0IHg9
IjEyMCIgeT0iMjMwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZvcmVpZ25PYmplY3QvZm9yZWlnbi1vYmplY3Qt
ZHluYW1pYy1wYXJzaW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZm9yZWln
bk9iamVjdC9mb3JlaWduLW9iamVjdC1keW5hbWljLXBhcnNpbmcuc3ZnCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL3N2Zy9mb3JlaWduT2JqZWN0L2ZvcmVpZ24tb2JqZWN0LWR5bmFtaWMt
cGFyc2luZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmg9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiIHhtbG5zOnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICA8c2Ny
aXB0PjwhW0NEQVRBWworICAgICAgICBmdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50KG5hbWUsIGF0
dHJzLCBwYXJlbnRFbGVtZW50KSB7CisgICAgICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2UgPSAi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCBuYW1lKTsKKworICAgICAgICAg
ICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQorICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0
cmlidXRlKGtleSwgYXR0cnNba2V5XSk7CisKKyAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUhUTUxFbGVtZW50KG5hbWUpIHsKKyAgICAgICAg
ICAgIGNvbnN0IHhodG1sTmFtZXNwYWNlID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
OworICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVz
cGFjZSwgbmFtZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudDsKKworICAgICAgICB2YXIgZm9yZWlnbk9iamVjdDEgPSBjcmVhdGVTVkdF
bGVtZW50KCJmb3JlaWduT2JqZWN0IiwgeyB4OiAxMCwgeTogMTAsIHdpZHRoOiAxMDAsIGhlaWdo
dDogMTAwIH0sIHJvb3QpOworICAgICAgICBmb3JlaWduT2JqZWN0MS5hcHBlbmRDaGlsZChjcmVh
dGVIVE1MRWxlbWVudCgiZGl2IikpOworICAgICAgICBmb3JlaWduT2JqZWN0MS5sYXN0Q2hpbGQu
aW5uZXJIVE1MID0KKyAgICAgICAgICAgICI8aDI+QUJDPC9oMj4iICsKKyAgICAgICAgICAgICI8
dGFibGUgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyc+IiArCisgICAgICAgICAgICAg
ICAgIjx0aGVhZD4iICsKKyAgICAgICAgICAgICAgICAgICAgIjx0cj4iICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICI8dGg+QTwvdGg+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiPHRo
PkI8L3RoPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjx0aD5DPC90aD4iICsKKyAgICAg
ICAgICAgICAgICAgICAgIjwvdHI+IiArCisgICAgICAgICAgICAgICAgIjwvdGhlYWQ+IiArCisg
ICAgICAgICAgICAiPC90YWJsZT4iOworCisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QyID0g
Y3JlYXRlU1ZHRWxlbWVudCgiZm9yZWlnbk9iamVjdCIsIHsgeDogMTIwLCB5OiAxMCwgd2lkdGg6
IDEwMCwgaGVpZ2h0OiAxMDAgfSwgcm9vdCk7CisgICAgICAgIGZvcmVpZ25PYmplY3QyLmFwcGVu
ZENoaWxkKGNyZWF0ZUhUTUxFbGVtZW50KCJoOmRpdiIpKTsKKyAgICAgICAgZm9yZWlnbk9iamVj
dDIubGFzdENoaWxkLmlubmVySFRNTCA9CisgICAgICAgICAgICAiPGg6aDI+REVGPC9oOmgyPiIg
KworICAgICAgICAgICAgIjxoOnRhYmxlIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCBibGFjazsn
PiIgKworICAgICAgICAgICAgICAgICI8aDp0aGVhZD4iICsKKyAgICAgICAgICAgICAgICAgICAg
IjxoOnRyPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIjxoOnRoPkQ8L2g6dGg+IiArCisg
ICAgICAgICAgICAgICAgICAgICAgICAiPGg6dGg+RTwvaDp0aD4iICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICI8aDp0aD5GPC9oOnRoPiIgKworICAgICAgICAgICAgICAgICAgICAiPC9oOnRy
PiIgKworICAgICAgICAgICAgICAgICI8L2g6dGhlYWQ+IiArCisgICAgICAgICAgICAiPC9oOnRh
YmxlPiI7CisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QzID0gY3JlYXRlU1ZHRWxlbWVudCgi
Zm9yZWlnbk9iamVjdCIsIHsgeDogMTAsIHk6IDEyMCwgd2lkdGg6IDEwMCwgaGVpZ2h0OiAxMDAg
fSwgcm9vdCk7CisgICAgICAgIGZvcmVpZ25PYmplY3QzLmFwcGVuZENoaWxkKGNyZWF0ZUhUTUxF
bGVtZW50KCJoOmRpdiIpKTsKKyAgICAgICAgZm9yZWlnbk9iamVjdDMubGFzdENoaWxkLmlubmVy
SFRNTCA9IAorICAgICAgICAgICAgIjxzdmc+IiArCisgICAgICAgICAgICAgICAgIjxyZWN0IHdp
ZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSdncmVlbicvPiIgKworICAgICAgICAgICAgIjwv
c3ZnPiI7CisKKyAgICAgICAgdmFyIGZvcmVpZ25PYmplY3Q0ID0gY3JlYXRlU1ZHRWxlbWVudCgi
Zm9yZWlnbk9iamVjdCIsIHsgeDogMTIwLCB5OiAxMjAsIHdpZHRoOiAxMDAsIGhlaWdodDogMTAw
IH0sIHJvb3QpOworICAgICAgICBmb3JlaWduT2JqZWN0NC5hcHBlbmRDaGlsZChjcmVhdGVIVE1M
RWxlbWVudCgiaDpkaXYiKSk7CisgICAgICAgIGZvcmVpZ25PYmplY3Q0Lmxhc3RDaGlsZC5pbm5l
ckhUTUwgPSAKKyAgICAgICAgICAgICI8czpzdmc+IiArCisgICAgICAgICAgICAgICAgIjxzOnJl
Y3Qgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnIGZpbGw9J2dyZWVuJy8+IiArCisgICAgICAgICAg
ICAiPC9zOnN2Zz4iOworCisgICAgICAgIHZhciBzdmcxID0gY3JlYXRlU1ZHRWxlbWVudCgic3Zn
IiwgeyB9LCByb290KTsKKyAgICAgICAgdmFyIGcxID0gY3JlYXRlU1ZHRWxlbWVudCgiZyIsIHsg
dHJhbnNmb3JtOiAndHJhbnNsYXRlKDEwLCAyMzApJyB9LCBzdmcxKTsKKyAgICAgICAgZzEuaW5u
ZXJIVE1MID0gIjxyZWN0IHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSdncmVlbicvPiI7
CisKKyAgICAgICAgdmFyIHN2ZzIgPSBjcmVhdGVTVkdFbGVtZW50KCJzOnN2ZyIsIHsgfSwgcm9v
dCk7CisgICAgICAgIHZhciBnMiA9IGNyZWF0ZVNWR0VsZW1lbnQoInM6ZyIsIHsgdHJhbnNmb3Jt
OiAndHJhbnNsYXRlKDEyMCwgMjMwKScgfSwgc3ZnMik7CisgICAgICAgIGcyLmlubmVySFRNTCA9
ICI8czpyZWN0IHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSdncmVlbicvPiI7CisgICAg
XV0+PC9zY3JpcHQ+Cis8L3N2Zz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>